




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、The MIPS Processor Implementation: Datapath & Control“Computer Organization & Design ” John Hennessy, David Patterson2003-5-2Content 以两种不同的方式构建MIPS指令集的数据通路和控制部件 单周期实现 多周期实现2003-5-3MIPS指令格式 100余条指令(Hennessy中33条),共32个通用寄存器 指令格式:定长32位 R-type:arithmetic instruction I-type:data transfer, arithmet
2、ic instruction(如addi) J-type:branch instruction(conditional & unconditional)op(6 bits)rs(5 bits)rt(5 bits) rd(5 bits) shamt(5 bits)funct(6 bits)op(6 bits)rs(5 bits)rt(5 bits)addr/immediate(16 bits)R-typeI-typeop(6 bits)rs(5 bits)rt(5 bits)addr(16 bits)J-typeop(6 bits)addr(26 bits)2003-5-4MIPS寻址模
3、式 立即寻址 寄存器寻址:R-type 基址寻址:I-type PC相对寻址 伪直接寻址(pseudodirect addressing) 注意:字长32位 26位形式地址左移2位(字对准),与PC的高4位拼接ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegister1. Immediate addressing2. Register addressing3. Base addressing4. PC-relative addressing5. Pseudodirect addressingoprsrtoprsrtop
4、rsrtopoprsrtAddressAddressAddressrd. . .functImmediatePCPC+2003-5-5Overview 实现不同指令的多数工作都是相同的,与指令类型无关 取指:将PC送往MEM 取数:根据指令字中的地址域读寄存器 对于Load,只需读一个寄存器;其他指令,需要两个寄存器 其后的操作各个指令不同,但同类指令非常类似 不同类型指令之间也有相同之处,如都要使用ALU 访存指令使用ALU计算地址 算逻指令使用ALU完成计算 分支指令使用ALU进行条件比较 其后,各个指令的工作就不同了 访存指令对存储器进行读写 算逻指令将ALU结果写回寄存器 分支指令将基
5、于比较结果修改下一条指令的地址2003-5-6A subset of core MIPS instruction set Memory-reference instruction (I-type):lw, sw lw $s1,100($s2) ; loads words, based $s2(rs) sw $s1,100($s2) Arithmetic-logical instruction(R-type):add, sub, and, or add $t1, $t2, $t3; $t2+$t3-$t1 slt $s1, $s2, $s3( if($s2 $t1 sw $t1, offset(
6、$t2); $t1 - M($t2+offset) 需要对指令字中的16位偏移进行32位带符号扩展Instruction1632RegistersWriteregisterReaddata 1Readdata 2Readregister 1Readregister 2DatamemoryWritedataReaddataWritedataSignextendALUresultZeroALUAddressMemReadMemWriteRegWriteALU operation3lwsw2003-5-15访存指令和算逻指令的数据通路综合PCInstructionmemoryReadaddressI
7、nstruction1632RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendALUresultZeroDatamemoryAddressWritedataReaddataMux4AddMuxALURegWriteALU operation3MemReadMemWriteALUSrcMemtoRegR-typeI-type算逻?访存?I-type2003-5-16条件转移beq beq $t1, $t2, offset 以分支指令的下一条指令地址为基址 Offset左
8、移2位形成“32位字地址”(见PC的形成)1632SignextendZeroALUSumShiftleft 2To branchcontrol logicBranch targetPC + 4 from instruction datapathInstructionAddRegistersWriteregisterReaddata 1Readdata 2Readregister 1Readregister 2WritedataRegWriteALU operation32003-5-17R-/I-/J-type操作数据通路总图PCInstructionmemoryReadaddressIns
9、truction1632AddALUresultMuxRegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2Shiftleft 24MuxALU operation3RegWriteMemReadMemWritePCSrcALUSrcMemtoRegALUresultZeroALUDatamemoryAddressWritedataReaddataMuxSignextendAdd顺序?分支?2003-5-18ALU控制信号Instruction opcodeALUopInstruction
10、operationFunctfielddesiredALU actionALU ctrlinputLW00Load wordxxxxxxadd010sw00store wordxxxxxxadd010beq01Branch eqxxxxxxsubtract110R-type10Add100000Add010R-type10Substract100010Substract110R-type10And100100And000R-type10Or100101Or001R-type10Set on less than101010Set on less than1112003-5-19指令译码 指令格式
11、分析 操作码:在31-26,需要参考5-0 Load/store: rsaddr 目的地址:对R-type指令,在rd;对load,在rt。因此需要对目的寄存器进行选择控制0(31-26)rs(25-21)rt(20-16)rd(15-11)shamt(10-6) funct(5-0)35/31 rs(25-21)rt(20-16)addr (16 bits)R-typeI-type4 rs(5 bits)rt(5 bits)addr(16 bits)J-type2003-5-20目的地址选择 两位的ALUop和func组合产生ALU控制选择MemtoRegMemReadMemWriteALU
12、OpALUSrcRegDstPCInstructionmemoryReadaddressInstruction31 0Instruction 20 16Instruction 25 21AddInstruction 5 0RegWrite41632Instruction 15 00RegistersWriteregisterWritedataWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendALUresultZeroDatamemoryAddressReaddataMux10Mux10Mux10Mux1Inst
13、ruction 15 11ALUcontrolShiftleft 2PCSrcALUAddALUresult2003-5-21控制信号列表 RegDst:选择rt或rd作为写操作的目的寄存器(R-type指令与load指令) RegWrite:寄存器写操作控制( R-type指令与store指令) ALUSrc:ALU的第二个操作数来源( R-type指令与branch指令) MemRead:存储器读控制 MemWrite:存储器写控制 MemtoReg:目的寄存器数据来源(R-type指令与load指令) PCSrc:NPC控制(顺序执行与分支) 所有信号(除PCSrc)都可以根据op域译码
14、产生 PCSrc依据两个条件 指令是否是beq增加一个“branch”控制信号指示 ALU的Zero状态2003-5-22主控制部件PCInstructionmemoryReadaddressInstruction310Instruction 20 16Instruction 25 21AddInstruction 5 0MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction 31 2641632Instruction 15 000Mux01ControlAddALUresultMux01RegistersWriter
15、egisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendMux1ALUresultZeroPCSrcDatamemoryWritedataReaddataMux1Instruction 15 11ALUcontrolShiftleft 2ALUAddress2003-5-23R-type指令的执行过程 在一个周期内完成如下动作 第一步:取指和PC1 第二步:读两个源操作数寄存器$t1和$t2 第三步:ALU操作 第四步:结果写回目的寄存器$t32003-5-24R-type指令的执行路径PCInstru
16、ctionmemoryReadaddressInstruction310Instruction 20 16Instruction 25 21AddInstruction 5 0MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction 31 2641632Instruction 15 000Mux01ALUcontrolControlShiftleft 2AddALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Rea
17、dregister 2SignextendMux1ALUresultZeroDatamemoryWritedataReaddataMux1Instruction 15 11ALUAddress2003-5-25lw指令的执行过程 第一步:取指和PC1 第二步:读寄存器$t2 第三步:ALU操作完成$t2与符号扩展后的16位offset加 第四步:ALU的结果作为访存地址,送往数据MEM 内存中的数据送往$t12003-5-26lw指令的执行路径PCInstructionmemoryReadaddressInstruction310Instruction 15 11Instruction 20
18、16Instruction 25 21AddInstruction 5 0MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction 31 2641632Instruction 15 000Mux01ALUcontrolControlShiftleft 2AddALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendMux1ALUresultZeroDatamemoryWri
19、tedataReaddataMux1ALUAddress2003-5-27beq指令的执行过程 第一步:取指和PC1 第二步:读寄存器$t1,$t2 第三步:ALU将$t1和$t2相减;PC+4与被左移两位并进行符号扩展后的16位offset相加,作为分支目标地址 第四步:ALU的Zero确定应送往PC的值2003-5-28beq的执行路径PCInstructionmemoryReadaddressInstruction31 0Instruction 1511Instruction 2016Instruction 2521AddInstruction 5 0MemtoRegALUOpMemWr
20、iteRegWriteMemReadBranchRegDstALUSrcInstruction 312641632Instruction 150Shiftleft 20Mux01ALUcontrolControlRegistersWriteregisterWritedataReaddata 1Readregister 1Readregister 2Signextend1ALUresultZeroDatamemoryWritedataReaddataMuxReaddata 2AddALUresultMux01Mux10ALUAddress2003-5-29控制部件真值表Signal nameR-
21、typelwswbeqinputsop50110op40000op30010op20001op10110op00110outputsRegDst10 xxALUSrc0110MemtoReg01xxRegWrite1100MemRead0100MemWrite0010Branch0001ALUop11000ALUop000012003-5-30jump指令的实现 无条件转移,关键在于目标地址的拼装 PC+4的最高4位 指令字中的26位地址 最低两位补00 “拼装”:只需合并地址总线 增加一个jump指令识别控制J-type2(31-26)addr(25-0)2003-5-31jump指令的实现
22、Shiftleft 2PCInstructionmemoryReadaddressInstruction31 0DatamemoryReaddataWritedataRegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2Instruction 1511Instruction 2016Instruction 2521AddALUresultZeroInstruction 5 0MemtoRegALUOpMemWriteRegWriteMemReadBranchJumpRegDstALUSrcI
23、nstruction 31264MuxInstruction 250Jump address 31 0PC+4 3128Signextend1632Instruction 1501Mux10Mux01Mux01ALUcontrolControlAddALUresultMux010ALUShiftleft 22628Address2003-5-32单周期实现性能讨论 CPI1 时钟以执行路径最长的指令为准 例:设MEM2ns,ALU和加法器2ns,Reg1ns,其他部件没有延时。指令inst MEMRegReadALUData MEMRegWriteTotalR-Type21216nslw212
24、218nssw21227nsbeq2125nsjump22ns用到的部件2003-5-33单周期实现性能讨论(cont) 设程序中load有24,store有12,R-type有44,beq有18,jump有2。试比较时钟定长单周期实现和不定长单周期实现的性能。 程序执行时间指令数CPI时钟宽度 定长单周期的时钟为8ns 不定长单周期的时钟可以是2ns8ns。其平均指令执行时间824712644518226.3ns 因此,变长实现较定长实现快8/6.3=1.27倍2003-5-34多周期实现 根据指令执行所使用的功能部件将执行过根据指令执行所使用的功能部件将执行过程划分成多个阶段,每个阶段一个
25、周期程划分成多个阶段,每个阶段一个周期 功能部件可以在不同的阶段(周期)复用,有功能部件可以在不同的阶段(周期)复用,有利于降低硬件实现复杂度利于降低硬件实现复杂度 假设一个周期内可以完成假设一个周期内可以完成 一次一次MEM访问,访问,or 一次寄存器访问(一次寄存器访问(2 reads or one write),),or 一次一次ALU操作操作2003-5-35Overview 只有一个MEM。一个ALU(单周期中为1个ALU和2个加法器)。增加暂存寄存器IR、MDR、A、B、ALUOut等。PCMemoryAddressInstructionor dataDataInstruction
26、registerRegistersRegister #DataRegister #Register #ALUMemorydata registerABALUOut2003-5-36多周期数据通路Shiftleft 2PCMemoryMemDataWritedataMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2Mux01Mux014Instruction150Signextend3216Instruction2521Instruction2016Instruction150I
27、nstructionregister1Mux032MuxALUresultALUZeroMemorydataregisterInstruction1511ABALUOut01Address取指数据访问PC+4lw/swbeqsw2003-5-37多周期控制信号Shiftleft 2MemtoRegIorDMemReadMemWritePCMemoryMemDataWritedataMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2Instruction1511Mux01Mux0
28、14ALUOpALUSrcBRegDstRegWriteInstruction150Instruction 50Signextend3216Instruction2521Instruction2016Instruction150Instructionregister1Mux032ALUcontrolMux01ALUresultALUALUSrcAZeroABALUOutIRWriteAddressMemorydataregisterop(6 bits)rs(5 bits)rt(5 bits)rd(5 bits)shamt(5 bits)funct(6 bits)op(6 bits)rs(5 b
29、its)rt(5 bits)addr/immediate(16 bits)op(6 bits)addr(26 bits)2003-5-38PC的写控制 在一个指令周期内,PC不能变,因此需要写控制信号 3种情况 ALU:PC4的输出直接存入PC ALUOut:beq指令的目标地址 jump指令 需要两个写控制 无条件写PCWrite:PC+4,jump 有条件写PCWriteCond:beq2003-5-39主控制部件Shiftleft 2PCMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readre
30、gister 2Instruction15 11Mux01Mux014Instruction15 0Signextend3216Instruction25 21Instruction20 16Instruction150InstructionregisterALUcontrolALUresultALUZeroMemorydataregisterABIorDMemReadMemWriteMemtoRegPCWriteCondPCWriteIRWriteALUOpALUSrcBALUSrcARegDstPCSourceRegWriteControlOutputsOp5 0Instruction31
31、-26Instruction 5 0Mux02Jumpaddress 31-0Instruction 2502628Shiftleft 2PC 31-2811Mux032Mux01ALUOutMemoryMemDataWritedataAddress2003-5-40指令执行的阶段划分 时钟周期确定 每个周期的工作尽量平衡 在一个周期内的各个部件并行工作 共5个阶段 取指 译码阶段 R-type指令执行、存储器地址计算、分支完成阶段 访存和R-type指令完成阶段 存储器读完成阶段2003-5-41取指阶段、译码阶段 取指 根据PC从MEM中取指,IR=MEMPC 计算NPC,PC=PC+4
32、NPC要到下一周期(指“机器周期”)才写入PC 控制信号:MemRead, IRWrite, IorD, ALUSrcA, ALUSrcB, ALUOp, PCWrite 指令译码和读寄存器 将rs和rt送往A和B:A=RegIR25-21, B=RegIR20-16 计算beq目标地址,ALUOut=PC+(sign-extend(IR15-0 2) 控制信号:ALUSrcA, ALUSrcB, ALUOp 由于此时尚不知是何指令,所以读寄存器和计算分支地址可能无效,但亦无害,可以节省后面的操作2003-5-42R-type指令执行、存储器地址计算、分支完成阶段 依赖于指令类型 访存指令 A
33、LUOut=A+(sign-extend(IR15-0 ) R-type指令 ALUOut= A op B beq指令 if (A = B) PC=ALUOut jump指令 PC = PC31-28 | (IR25-0 2) 需要的控制信号2003-5-43访存和R-type指令完成阶段、存储器读完成阶段 访存和R-type指令完成阶段 访存指令 load:MDR = MEMALUOut store:MEMALUOut = B 此时store指令完成 R-type指令 RegIR15-11 = ALUOut 所需的控制信号 存储器读完成阶段 RegIR15-11 = ALUOut2003-5
34、-44控制部件实现 有限状态机模型(FSM) Moore型(Edward Moore):输出仅仅依赖于当前状态,与输入无关 Mealy型(George Mealy):输出与当前状态和输入相关 两种状态机可以相互转换。Moore型速度快。因为输出与输入无关,可以在周期一开始就提供控制信号。Mealy型电路较小。 EDA工具可以根据FSM自动综合生成控制器Next-statefunctionCurrent stateClockOutputfunctionNextstateOutputsInputs存储部件组合逻辑2003-5-45多周期控制的MooreFSM,每个状态需要一个周期。PCWriteP
35、CSource = 10ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCondPCSource = 01ALUSrcA =1ALUSrcB = 00ALUOp= 10RegDst = 1RegWriteMemtoReg = 0MemWriteIorD = 1MemReadIorD = 1ALUSrcA = 1ALUSrcB = 10ALUOp = 00RegDst=0RegWriteMemtoReg=1ALUSrcA = 0ALUSrcB = 11ALUOp = 00MemReadALUSrcA = 0IorD = 0IRWriteALUSrcB = 01AL
36、UOp = 00PCWritePCSource = 00Instruction fetchInstruction decode/register fetchJumpcompletionBranchcompletionExecutionMemory addresscomputationMemoryaccessMemoryaccessR-type completionWrite-back step (Op = LW) or (Op = SW)(Op = R-type)(Op = BEQ)(Op = J) (Op = SW)(Op = LW)4019862753Start2003-5-46异常处理
37、设计控制部件的难点在于异常处理,检查异常和采取相关的动作通常在关键路径上进行,影响时钟周期宽度的确定。 讨论两种异常:非法指令和算术溢出 基本的动作是将受干扰的指令的地址保存在EPC中,将控制转移给OS。 OS决定采取的处理:为用户程序提供某些服务;对溢出进行响应;停止异常程序的执行并报告错误等。 设异常处理程序地址在c00000000H,它根据状态寄存器cause中的异常原因分别处理异常。2003-5-47中断处理Shiftleft 2MemoryMemDataWritedataMux01Instruction1511Mux014Instruction150Signextend3216Instruction2521Instruction2016Instruction150InstructionregisterALUcontrolALUresultALUZeroMemorydataregisterABIorDMemReadMemWriteMemtoRegPCWriteCondPCWriteIRWriteControlOutputsOp50Instruction31-26Instruction 50Mux02Jumpaddress 31-0Instruction 2502628Shiftleft 2PC 31-281AddressEPCCO 00 00 003CauseALUOpA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁装备制造职业技术学院《生物制药工艺学实验》2023-2024学年第二学期期末试卷
- 山东省淄博市淄川区2025年小升初常考易错数学检测卷含解析
- 濮阳科技职业学院《住区规划设计》2023-2024学年第二学期期末试卷
- 六盘水幼儿师范高等专科学校《有机化学(下)》2023-2024学年第二学期期末试卷
- 2025年心理咨询师考试复习试卷及答案
- 2025年语言文学学科综合能力测评试卷及答案
- 2025年游戏开发与设计专业考试试卷及答案
- 2025年新能源科学与工程专业考试试卷及答案
- 遂宁职业学院《英美文学导读》2023-2024学年第一学期期末试卷
- 山西华澳商贸职业学院《土木工程施工与组织》2023-2024学年第二学期期末试卷
- 二轮复习《健康的生活》教案
- GB/T 15812-1995医用高分子软管物理性能试验方法
- 文言文专题复习 课件(共26张ppt) 中考语文一轮复习
- 西南交通大学-毕业答辩PPT模板
- 辽宁省中小学乡村导师团队推荐表
- 外伤性房角后退
- 医院医保内部控制制度
- 《行政组织学通论》配套教学课件
- 曾国藩识人用人之道课件
- 师德师风教育整顿谈心谈话记录表
- 铸造作业指导书
评论
0/150
提交评论