计算机系统综合课程设计3-CPU设计_第1页
计算机系统综合课程设计3-CPU设计_第2页
计算机系统综合课程设计3-CPU设计_第3页
计算机系统综合课程设计3-CPU设计_第4页
计算机系统综合课程设计3-CPU设计_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-8-4 P.1 2021-8-4 P.2 nMiniSys 指令系统介绍指令系统介绍 nMiniSys CPU的设计的设计 2021-8-4 P.3 nMiniSys寄存器组寄存器组 nMinisys指令的寻址方式指令的寻址方式 nMiniSys指令目录指令目录 nMiniSys指令格式指令格式 n部分部分MiniSys指令详解指令详解 2021-8-4 P.4 寄存器名寄存器名寄存器号寄存器号 约定用途约定用途 $zero0常数常数0,该寄存器永远只返回,该寄存器永远只返回0。 $at1用做汇编器的暂时变量。用做汇编器的暂时变量。 $v0$v123 用来存放一个子程序用来存放一个子

2、程序(函数函数)的非浮点运算的非浮点运算 的结果或返回值。的结果或返回值。 $a0$a347存放子程序存放子程序(函数函数)调用时的非浮点参数。调用时的非浮点参数。 $t0$t7815暂时变量,子程序暂时变量,子程序(函数函数)使用时不保存这使用时不保存这 些寄存器的值,因此调用后它们的值会被些寄存器的值,因此调用后它们的值会被 破坏。破坏。 $s0$s716238个子程序用寄存器。子程序个子程序用寄存器。子程序(函数函数)必须必须 在返回之前恢复这些寄存器的值以保证其在返回之前恢复这些寄存器的值以保证其 没有变化。没有变化。 2021-8-4 P.5 寄存器名寄存器名寄存器号寄存器号 约定用

3、途约定用途 $t8$t92425 暂时变量,子程序暂时变量,子程序(函数函数)使用时不保存这使用时不保存这 些寄存器的值,因此调用后它们的值会被些寄存器的值,因此调用后它们的值会被 破坏。破坏。 $i0$i12627 分别保存两个中断到来时程序的返回地址。分别保存两个中断到来时程序的返回地址。 (该两寄存器定义和(该两寄存器定义和MIPS中的有所不同)中的有所不同) $s928 第第10个子程序用寄存器。(该定义和个子程序用寄存器。(该定义和 MIPS中的不同)中的不同) $sp29 堆栈指针,对它的调整必须显式的通过指堆栈指针,对它的调整必须显式的通过指 令来实现,硬件不支持堆栈指针的调整。

4、令来实现,硬件不支持堆栈指针的调整。 $s830 第第9个子程序用寄存器。(该定义和个子程序用寄存器。(该定义和MIPS 中的不同)中的不同) $ra31存放调用子程序存放调用子程序(函数函数)时的返回地址。时的返回地址。 2021-8-4 P.6 n立即数寻址立即数寻址 n指令中第指令中第3操作数可使用操作数可使用16位二进制立即数位二进制立即数 n相对寻址相对寻址 n操作数是下一条指令的操作数是下一条指令的PC值(值(PC+4)加上一个)加上一个 32位偏移量位偏移量 n寄存器寻址寄存器寻址 n操作数存放在寄存器中,指令里放的是寄存器号操作数存放在寄存器中,指令里放的是寄存器号 n寄存器相

5、对寻址寄存器相对寻址 n操作数存放在数据存储器中,其有效地址由两部操作数存放在数据存储器中,其有效地址由两部 分组成,基地址放在一个寄存器中,偏移部分为分组成,基地址放在一个寄存器中,偏移部分为 一个一个16位的立即数位的立即数 2021-8-4 P.7 2021-8-4 P.8 n算术指令算术指令add, addu, addi, addiu, sub, subu n逻辑指令逻辑指令and, andi, or, ori, xor, xori, nor, sll, srl, sra, sllv, srlv, srav n数据传送指令数据传送指令lw, sw, lui n比较、条件转移指令比较、条

6、件转移指令beq, bne, slt, slti, sltu, sltiu n无条件转移指令无条件转移指令j, jr, jal 2021-8-4 P.9 n(1)R-format add $1, $2, $3 # $1=$2+$3 oprsrtrdshamtfunct 0231032 6-bit5-bit5-bit5-bit5-bit6-bit 00000000010000110000100000100000 2021-8-4 P.10 n(2)I-format lw $1, 10($2) # $1=Memory$2 +10 oprsrtAddress/Immediate 352110 6-b

7、it5-bit5-bit16-bit 10001100010000110000 0000 0000 1010 2021-8-4 P.11 n(3)J-format j 10000 # go to 10000 opTarget/ Address 22500 6-bit26-bit 00001000000000000000 1001 1100 0100 2021-8-4 P.12 n这里只介绍几个典型的指令格式,比较完这里只介绍几个典型的指令格式,比较完 整的指令格式请参看教材。整的指令格式请参看教材。 n加法指令(加法指令( R-format) 2021-8-4 P.13 add $s1, $s

8、2, $s3 # $s1=$s2+$s3 oprsrtrdshamtfunct 0181917032 6-bit5-bit5-bit5-bit5-bit6-bit 00000010010100111000100000100000 n减法指令(减法指令(R-format) 2021-8-4 P.14 sub $s1, $s2, $s3 # $s1=$s2-$s3 oprsrtrdshamtfunct 0181917034 6-bit5-bit5-bit5-bit5-bit6-bit 00000010010100111000100000100010 n逻辑与指令(逻辑与指令(R-format) 2

9、021-8-4 P.15 and $s1, $s2, $s3 # $s1=$s2 else $s1=0 oprsrtrdshamtfunct 0181917042 6-bit5-bit5-bit5-bit5-bit6-bit 00000010010100111000100000101010 n无条件转移指令(无条件转移指令(J-format) 2021-8-4 P.28 j 10000 # go to 10000 opTarget = Address/4 22500 6-bit26-bit 00001000000000000000 1001 1100 0100 n过程调用指令(过程调用指令(J

10、-format) 2021-8-4 P.29 jal 10000 # $31=PC+4; go to 10000 opTarget = Address/4 32500 6-bit26-bit 00001100000000000000 1001 1100 0100 n按寄存器内容转移指令(按寄存器内容转移指令(R-format) 2021-8-4 P.30 jr $ra # jump register $ra oprsrtrdshamtfunct 0310008 6-bit5-bit5-bit5-bit5-bit6-bit 00000011111000000000000000001000 n立即

11、数赋值指令(立即数赋值指令(I-format) 2021-8-4 P.31 lui $s1,100 # $s1 = 100 16 oprsrtimmediate 15017100 6-bit5-bit5-bit16-bit 001111 00000 10001 0000 0000 0110 0100 2021-8-4 P.32 nMiniSys CPU设计架构设计架构 nMiniSys CPU中各个单元中各个单元 n指令执行的分析指令执行的分析 n设计流水线处理器的考虑设计流水线处理器的考虑 n设计多核处理器的考虑设计多核处理器的考虑 2021-8-4 P.33 n指令执行的步骤指令执行的步骤

12、 ifetchidecode Control ExecuteWrite Dmemory P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite MemtoRe

13、g MemWrite Sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 address PC+4 1 0 jrn MIPS instruction format op I-format J-format R-format rs rt rdfunc op rs rt immediate opaddress 2021-8-4 P.35 nFetch(取指单元)(取指单元) n定义指令定义指令ROM存储器存储器 n到程序到程序ROM中取指令中取指令 n对对PC值进行值进行4处理处理 n完成各种跳转指令的完成各种跳

14、转指令的PC修改功能修改功能 n在有中断的情况下处理中断到来时的在有中断的情况下处理中断到来时的PC修修 改改 immediate rd P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regw

15、rite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn 2021-8-4 P.37 lpm_rom prgrom(.address(PC11:2),.inclock(clock),.q(Jpadr); defparam prgrom.lpm_width = 32; defparam prgrom.lpm_widthad = 10; defparam prgrom.lpm_file = prgmip32.

16、mif; defparam prgrom.lpm_outdata = UNREGISTERED; defparam prgrom.lpm_address_control = REGISTERED; 2021-8-4 P.38 nprgmip32.mif文件(自行创建)文件(自行创建) 2021-8-4 P.39 nDecode(译码单元)(译码单元) n定义寄存器组定义寄存器组 n对寄存器组进行读写操作对寄存器组进行读写操作 n根据指令译码结果,决定向其他部件(如根据指令译码结果,决定向其他部件(如 运算器)送运算器)送1路或两路数据路或两路数据 rd P C Clock 程序程序ROM 读地

17、址读地址 指令指令 31-0 4 控制 单元 op 寄寄 存存 器器 0 1 func rs rt readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0

18、1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn 2021-8-4 P.41 nControl(控制单元)(控制单元) n根据指令中的指令码(根据指令中的指令码(op)和功能码)和功能码 (funct)的不同组合输出相应的控制信号。)的不同组合输出相应的控制信号。 rd P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄 存 器 0 1 func rs rt readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展 immedi

19、ate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn 2021-8-4 P.43 nExe(执行单元)(执行单元) n完成逻辑运算完成逻辑运算 n完成算术运算完成算术运算 n完成移位运算完成移位运算 n完成比较转移的完成比较转移的

20、PC值计算值计算 n完成比较后赋值完成比较后赋值 rd P C Clock 程序ROM 读地址 指令 31-0 4 控制 单元 op 寄 存 器 0 1 func rs rt readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_fo

21、rmat 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn 2021-8-4 P.45 nDmemory(存储单元)(存储单元) n定义数据存储单元定义数据存储单元RAM n实际完成对数据存储器的读写操作实际完成对数据存储器的读写操作 rd P C Clock 程序ROM 读地址 指令 31-0 4 控制 单元 op 寄 存 器 0 1 func rs rt readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展 imm

22、ediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移2位 nBranch Branch 0 1 0 1 jmp | jal 左移2位 addresst PC+4 1 0 jrn 2021-8-4 P.47 n器件固有延迟维持的流水器件固有延迟维持的流水 2021-8-4 P.48 n数据存储器的实现数据存储器的实现 lpm_ram_dq ram(.data(

23、write_data) , .address(address11:2), .we(Memwrite ), .inclock(clk),.q(read_data); /在在 / Verilog中使用中使用Altera的的RAM单元单元, 注意地址要除注意地址要除2 defparam ram.lpm_width =32; /数据宽数据宽32位位 defparam ram.lpm_widthad = 10; /地址线宽地址线宽10位位 defparam ram.lpm_outdata = UNREGISTERED; defparam ram.lpm_indata = REGISTERED; defp

24、aram ram.lpm_address_control = REGISTERED; defparam ram.lpm_file = “dmem32.mif”; /存储体初始化文件存储体初始化文件 / 以双字为单位,所以地址都是以双字为单位,所以地址都是4的倍数的倍数 2021-8-4 P.49 ndmem32.mif文件(自行创建)文件(自行创建) DEPTH = 1024; -10 位地址线位地址线 WIDTH = 32; - 数据宽度数据宽度32位位 ADDRESS_RADIX = HEX; -地址采用地址采用16进制描述进制描述 DATA_RADIX = HEX; - 数据采用数据采用

25、16进制描述进制描述 CONTENT BEGIN 0 : 00000055; - 行号是地址除以行号是地址除以4的结果的结果 1 : 000000AA; 2.3FF : 00000000; END; 2021-8-4 P.50 nMiniSys (顶层设计)(顶层设计) n顶层整合模块顶层整合模块 n前面已经给出了前面已经给出了MiniSys cpu 的的5大部件的大部件的 设计,最后需要将这设计,最后需要将这5大部件组合成一个完大部件组合成一个完 整的整的CPU,可以用,可以用GDT图,也可以用图,也可以用 Verilog的元件例化的方法来完成。的元件例化的方法来完成。 n在元件例化的时候特

26、别注意字母大小写一在元件例化的时候特别注意字母大小写一 定要一致。定要一致。 2021-8-4 P.51 n模块的定义模块的定义 module minisys(reset, clock, pc, alu_result_out, read_data_1_out, read_data_2_out, write_data_out, instruction_out, branch_out, zero_out, memwrite_out, regwrite_out, i_format_out); input reset,clock; output15:0 pc, alu_result_out, read

27、_data_1_out; output15:0 read_data_2_out, write_data_out; output31:0 instruction_out; output branch_out, zero_out, memwrite_out, regwrite_out; output i_format_out; 2021-8-4 P.52 n内部信号定义内部信号定义 wire15:0 pc_plus_4; wire15:0 read_data_1; wire15:0 read_data_2; wire15:0 sign_extend; wire15:0 add_result; wi

28、re15:0 alu_result; wire15:0 read_data; wire15:0 pc_next,opcplus4; wire alusrc ,jrn,i_format,regwrite, zero, memwrite; wire branch, memtoreg, memread, memreg; wire nbranch,jmp,jal,regdst; wire1:0 aluop; wire31:0 instruction; 2021-8-4 P.53 n内部信号赋值内部信号赋值 assign instruction_out = instruction ; assign al

29、u_result_out = alu_result ; assign read_data_1_out = read_data_1 ; assign read_data_2_out = read_data_2 ; assign write_data_out = (memtoreg = 1) ? read_data : alu_result ; assign branch_out = branch ; assign zero_out = zero ; assign regwrite_out = regwrite ; assign memwrite_out = memwrite ; assign i

30、_format_out = i_format ; 2021-8-4 P.54 n元件例化元件例化 Ifetc32 ifetch(.Instruction(instruction), .PC_plus_4_out(pc_plus_4) , .Add_result(add_result), .Branch(branch), .nBranch(nbranch), .Jmp(jmp), .Jal(jal), .Jrn(jrn), .Read_data_1(read_data_1), .PC_next(pc_next), .Zero(zero), .PC_out(pc), .clock(clock),

31、.reset(reset) .opcplus4(opcplus4); 2021-8-4 P.55 n各类指令执行的分析各类指令执行的分析 P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据RAM 1 0 WE 1

32、 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn MIPS instruction format op I-format J-format R-format rs rt rdfunc op rs rt immediate opaddress 除除jr指令之外的其指令之外的其 他他16条条R-format指指 令令 P C Clock 程序程序ROM 读地址读地址 指令指令 3

33、1-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jm

34、p | jal 左移左移2位位 addresst PC+4 1 0 jrn MIPS instruction format op I-format J-format R-format rs 00func op rs rt immediate opaddress jr 0 P C Clock 程序ROM 读地址 指令 31-0 4 控制 单元 op 寄 存 器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展 immediate 0 1 A B Zero Alu resu

35、lt ALU Address Write Data Mem data 数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移2位 nBranch Branch 0 1 0 1 jmp | jal 左移2位 addresst PC+4 1 0 jrn MIPS instruction format op I-format J-format R-format rs rtrdfunc op rs rtimmediate opaddress addi, addiu,andi, ori, xori

36、,lui,slti,sltiu P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/

37、sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn MIPS instruction format op I-format J-format R-format rs rt rdfunc op rs rt immediate opaddress lw P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD

38、1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn MIPS instruction format op I-format J-format R-

39、format rs rt rdfunc op rs rt immediate opaddress sw P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite

40、 Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn MIPS instruction format op I-format J-format R-format rs rt rdfunc op rs rt immediate opaddress beq, bne P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt

41、rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn MIPS inst

42、ruction format op I-format J-format R-format rs rt rdfunc op rs rt immediate opaddress j P C Clock 程序程序ROM 读地址读地址 指令指令 31-0 4 控制控制 单元单元 op 寄寄 存存 器器 0 1 func rs rt rd readR1 readR2 writeR writeD Clock readD1 readD2 Regdst WE Alusrc 符号扩展符号扩展 immediate 0 1 A B Zero Alu result ALU Address Write Data Mem

43、 data 数据数据RAM 1 0 WE 1 0 jal Regwrite Memtoreg Memwrite Aluctl/slt/sftmd/sftm/I_format 左移左移2位位 nBranch Branch 0 1 0 1 jmp | jal 左移左移2位位 addresst PC+4 1 0 jrn MIPS instruction format op I-format J-format R-format rs rt rdfunc op rs rt immediate opaddress jal 31 2021-8-4 P.64 n选择合适的流水级数选择合适的流水级数 n尽量保持流水线各级延迟相等尽量保持流水线各级延迟相等 n流水线中的相关性流水线中的相关性 2021-8-4 P.65 n结构相关结构相关 n? 2021-8-4 P.66 n数据相关数据相关 n写后读相关写后读相关(RAW) n阻塞阻塞 n乱序乱序 n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论