L1-多周期数据通路_第1页
L1-多周期数据通路_第2页
L1-多周期数据通路_第3页
L1-多周期数据通路_第4页
L1-多周期数据通路_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

高小鹏gxp@北京航空航天大学计算机学院2015年7月1多周期数据通路、RTL、时序分析2015年计算机组成研讨班多周期CPU形式建模综合方法目录从单周期到多周期多周期处理器基本结构功能部件建模RTL(RegisterTransferLanguage)基于RTL的时序分析2种数据通路设计对比分析2单周期数据通路的5个逻辑步骤从逻辑上:数据通路总共为5个逻辑步骤公共步骤:取指令、译码/读操作数所有指令均必须经历的2个步骤PC指令存储器+4RegisterFilertrsrdALU数据存储器immMUX取指令IFPC驱动IM读取指令译码/读操作数DCD/RF译码属于控制器范畴,但可以与读操作数并行执行EXEALU完成算数/逻辑运算访存MEM读DM或写DM回写WBALU计算结果或IM读出数据写入寄存器堆1.取指令IF2.译码/读操作数DCD/RF3.执行EXE4.访存MEM5.回写WB运算类指令:理想执行过程(R-R)指令:ADD、SUB、OR。。。需求:R[rd]

R[rs]opR[rt]过程:取指、译码/读寄存器、执行、访存、回写PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUXopcodefunctrsrtrdshamt3101.取指令IF2.译码/读操作数DCD/RF3.执行EXE4.访存MEM5.回写WBX分支类指令:理想执行过程指令:BEQ、。。。需求:PC

条件?PC+Ext(Imm):PC+4过程:取指、译码/读寄存器、执行、访存、回写PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUXopcodersrtimmediate3101.取指令IF2.译码/读操作数DCD/RF3.计算EXE4.访存MEM5.回写WBXX跳转指令:理想执行过程指令:J需求:PC

PC[31:28]||target_address||00过程:取指、译码/读寄存器、执行、访存、回写PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUXopcodetargetaddress3101.取指令IF2.译码/读操作数DCD/RF3.执行EXE4.访存MEM5.回写WBXX读存储指令:理想执行过程指令:LW需求:GPR[rt]←memory[GPR[base]+offset]过程:取指、译码/读寄存器、执行、访存、回写PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX1.取指令IF2.译码/读操作数DCD/RF3.执行EXE4.访存MEM5.回写WB写存储指令:理想执行过程指令:SW需求:memory[GPR[base]+offset]←GPR[rt]过程:取指、译码/读寄存器、执行、访存、回写PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX1.取指令IF2.译码/读操作数DCD/RF3.执行EXE4.访存MEM5.回写WBX物理执行路径vs.理想执行过程2个现象现象1:不同指令的理想执行过程不同现象2:所有指令都有前3个阶段前2阶段完全相同;第3阶段功能有差异启示不同指令的理想执行过程不同,即理想执行时间不同不同指令能否具有不同物理执行路径,以对应理想执行过程?IFDCD/RFEXEMEMWB计算分支跳转读存储写存储单周期数据通路的缺陷模型:PC组合逻辑寄存器堆单一组合逻辑实现了全部5个阶段的逻辑功能必然存在关键路径,且关键路径导致每条指令延迟均相同结论:无法利用不同指令具有不同执行需求的潜在特性PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX目录从单周期到多周期多周期处理器基本结构功能部件建模RTL(RegisterTransferLanguage)基于RTL的时序分析2种数据通路设计对比分析多周期数据通路构思单周期的单一路径被物理上切分为多段路径在数据通路上插入多个寄存器单一组合逻辑被切分为多段组合逻辑单一关键路径的大延迟变为多个分段路径的小延迟PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX12345基础多周期数据通路支持7条指令ADDU、SUBU、ORI、LW、SW、BEQ、JALPC计算完成与PC相关的一切计算PC+4;PC+imm16;PC+imm26指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]ABALUZeroOvALU结果ALUOut16扩展3201数据存储器AddrReadDataWriteDataPC计算PCIMMNPC261F012M1数据寄存器012寄存器堆A1A2A3WDRD1RD2123451.取指令IF2.译码/读操作数DCD/RF3.执行EXE4.访存MEM5.回写WB分段的数据通路5个分段:对应指令所需5个可能环节分段结构:R-C-R(寄存器-组合逻辑-寄存器)以寄存器读出为起始,中间可以包括组合逻辑计算14分段通路段内平行功能起始(读寄存器)中间逻辑结束(写寄存器)依赖读取指令PCIMIR读操作数读2个寄存器IRRFA/B读取指令读1个寄存器,立即数扩展A(/B),EXT执行R-R运算A,BALUALUOut读操作数R-I运算A,EXT访存读存储ALUOutDMDR执行执行写存储ALUOut,BDM回写存储回写DRRF读存储@访存计算回写ALUOutRF执行多周期数据通路特点:功能划分功能聚集:相近功能属于同一分段读操作数:读取RF、立即数扩展执行:各类算数/逻辑运算访存:读存储、写存储回写:ALU计算回写、读存储器回写组装特点:根据不同指令需求,灵活组合分段不同指令执行,占用不同的功能单元很好的映射不同指令的理想执行过程阶段1(读取指令):公共阶段,必须有阶段2(读操作数):公共阶段,必须有15多周期数据通路特点:功能执行段内执行:每段1个Cycle,数据~处理~保存数据(读出):前级寄存器的输出处理(逻辑):由本段内的组合逻辑完成,如ALU保存(写入):处理的结果写入后级寄存器段间执行:存在逻辑依赖关系前段没有执行,后段执行无意义注意:不是不能执行,而是执行结果无意义例如:指令不读入IR,读操作数就没有意义!整体执行:多少个分段,多少个cycle与控制器很好的匹配(后面介绍)16ADDU指令的多周期数据通路:IF阶段加载指令:读取IM,写入IR(指令寄存器)更新PC:PCPC+4指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]ADDUSUBULWSWORILUIBEQJALPC计算PCIMMNPCTIP:PC需要写使能与单周期不同了!ADDU指令的多周期数据通路:DCD/RF阶段读取操作数:GPRA、BA、B:分别存储寄存器文件的2个输出指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBULWSWORILUIBEQJALPC计算PCIMMNPCADDU指令的多周期数据通路:EXE阶段存储计算结果ALU计算结果存储在ALUOut寄存器指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBULWSWORILUIBEQJALALUZeroOvALU结果ALUOutPC计算PCIMMNPCADDU指令的多周期数据通路:WB阶段回写寄存器ALUOut存储的计算结果写入对应的寄存器指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBULWSWORILUIBEQJALALUZeroOvALU结果ALUOutPC计算PCIMMNPCORI指令的多周期数据通路ORIR[rt]R[rs]|zero_ext(Imm16);增加硬件:零扩展单元、MUX指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU结果ALUOut160扩展3201PC计算PCIMMNPC01M1LW指令的多周期数据通路LOADR[rt]MEM[R[rs]+sign_ext(Imm16)]增加硬件:数据存储器、数据寄存器、扩展单元、MUX扩展单元:包括零扩展功能和符合扩展功能指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteData01PC计算PCIMMNPC01M1SW指令的多周期数据通路STOREMEM[R[rs]+sign_ext(Imm16)]R[rt];

增加硬件:连接线从B寄存器至数据存储器的指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteData01PC计算PCIMMNPC01M1BEQ指令的多周期数据通路PC(R[rs]=R[rt])?PC+sign_ext(imm16):PC+4增加硬件:连接线从IM[15:0]至PC计算单元指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteData01PC计算PCIMMNPC01M1JAL指令的多周期数据通路PCPC[31:28]||Imm26||00;R[31]PC增加硬件:连接线从IM[15:0]至PC计算单元指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1多周期数据通路ADDUSUBUORILWSWBEQJAL增加硬件IR:指令寄存器A/B:操作数寄存器ALUOut:计算结果寄存器DR:数据寄存器指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1PC不变?IR不变?分析的要点指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令操作数执行上条指令上条指令结果XXXX阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456上条指令操作数执行上条指令上条指令结果XXXXXXXXXXXX2源操作数计算结果上条指令结果XXXXXXXXPC+4ADDUXXXX2源操作数计算结果计算结果XXXXXXXXPC+4ADDUXXXX2源操作数计算结果计算结果计算结果XXXXPC+4ADDUXXXX指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPCPC+4012261F012M1FETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算结果上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456取指FETCHDCD/RFEXEWBFETCHPCIMIRA/BExtALUALUOutDMDRGPR指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456取指FETCHDCD/RFEXEWBFETCHPCADDU地址IM输出ADDUIR旧指令A/B旧操作数Ext无效扩展ALU执行前指令ALUOut前结果DM无效数据DR无效数据GPR旧值输出指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456译码/

读寄存器FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4IM输出ADDU指令[PC+4]IR旧指令ADDUA/B旧操作数旧操作数Ext无效扩展无效扩展ALU执行前指令执行前指令ALUOut前结果前结果DM无效数据无效数据DR无效数据无效数据GPR旧值输出新值输出指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456执行FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4IM输出ADDU指令[PC+4]指令[PC+4]IR旧指令ADDUADDUA/B旧操作数旧操作数新操作数Ext无效扩展无效扩展无效扩展ALU执行前指令执行前指令计算ALUOut前结果前结果前结果DM无效数据无效数据无效数据DR无效数据无效数据无效数据GPR旧值输出新值输出新值输出指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456写回FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4PC+4IM输出ADDU指令[PC+4]指令[PC+4]指令[PC+4]IR旧指令ADDUADDUADDUA/B旧操作数旧操作数新操作数新操作数Ext无效扩展无效扩展无效扩展无效扩展ALU执行前指令执行前指令计算结果计算结果ALUOut前结果前结果前结果计算结果DM无效数据无效数据无效数据无效数据DR无效数据无效数据无效数据无效数据GPR旧值输出新值输出新值输出新值输出指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456最终

写入FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4PC+4PC+4IM输出ADDU指令[PC+4]指令[PC+4]指令[PC+4]指令[PC+4]IR旧指令ADDUADDUADDUADDUA/B旧操作数旧操作数新操作数新操作数新操作数Ext无效扩展无效扩展无效扩展无效扩展无效扩展ALU执行前指令执行前指令计算结果计算结果计算结果ALUOut前结果前结果前结果计算结果计算结果DM无效数据无效数据无效数据无效数据无效数据DR无效数据无效数据无效数据无效数据无效数据GPR旧值输出新值输出新值输出新值输出输出/更新指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上条指令ADDU上条指令2源操作数2源操作数执行上条指令计算上条指令计算结果计算结果XXXX计算结果阶段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456最终

写入FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4PC+4PC+4IM输出ADDU指令[PC+4]指令[PC+4]指令[PC+4]指令[PC+4]IR旧指令ADDUADDUADDUADDUA/B旧操作数旧操作数新操作数新操作数新操作数Ext无效扩展无效扩展无效扩展无效扩展无效扩展ALU执行前指令执行前指令计算结果计算结果计算结果ALUOut前结果前结果前结果计算结果计算结果DM无效数据无效数据无效数据无效数据无效数据DR无效数据无效数据无效数据无效数据无效数据GPR旧值输出新值输出新值输出新值输出输出/更新指令存储器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU结果ALUOut16扩展3201数据寄存器数据存储器AddrReadDataWriteDataPC计算PCIMMNPC0121F012M1功能部件及其控制信号使用约束注意时钟沿与状态间的关系寄存器的值:clock正边沿前准备,正边沿写入PC是发动机、IR是离合器PC不变:IM不变IR不变:A/B、EXT、ALU、ALUOut、DM、DR均不变PC、IR、RF、DM:需要写使能PCWr/IRWr/RFWr/DMWr:只能在特定时间有效!其他时间则必须无效!A/B、ALUOut、DR:不需要写使能随时可写目录从单周期到多周期多周期处理器基本结构功能部件建模RTL(RegisterTransferLanguage)基于RTL的时序分析2种数据通路设计对比分析38功能部件数据通路是以功能部件为基础构造的数据通路:系统功能部件:子系统构造数据通路S0:以功能部件为基础S1:给出执行每条指令所需部件的连接关系S2:综合出执行指令集所需部件的连接关系功能部件建模外部特性:数据通路设计关心的内部实现:基本与数据通路设计无关39功能部件建模:PC程序计数器功能与控制PCWr决定写入40输入NPC[32:0]PCWr,Clk,RST输出PC[31:2]数据结构addr,30位寄存器行为功能操作计数输出PCaddr异步复位ifRSTthenaddr32’h40000同步加载Clk上升沿时:ifPCWrthenaddrNPC功能部件建模:IM数据宽度:32位存储容量:可以任意大仿真:不超过1K字为宜功能与控制无需控制,数据经过的固定延迟后输出41输入AIn[31:0]输出DO[31:0]数据结构Mem为32位×XX字的只读存储器行为功能操作数据输出DOMem[AIn]功能部件建模:寄存器堆功能与控制读出:不需要控制写入:RFWr为142寄存器堆A1A2A3WDRD1RD2输入A1[4:0]、A2[4:0]、A3[4:0]、WD[31:0]RFWr、Clk输出RD1[31:0]、RD2[31:0]数据结构RF[0..31],32个32位寄存器行为功能操作读出寄存器值RD1RF[A1];RD2RF[A2]写入寄存器值Clk上升沿时if(RFWr)thenRF[A3]WD功能部件建模:ALU功能与控制ALUOp[3:0]决定执行何种计算Zero:判断A是否等于B43输入A[31:0],B[31:0],ALUOp[3:0]输出C[31:0],Zero行为ALUOp功能操作----A等于B?Zero(A==B)?1:00000加CA+B0001减CA–B0010与CA&B0011或CA|B0100异或CA^B.........ALUZeroALU结果功能部件建模:DM数据宽度:32位存储容量:可以任意大仿真:不超过1K字为宜功能与控制读出:不需要控制写入:DMWr为144输入AIn[31:0];WD[31:0]DMWr;Clk输出DO[31:0]数据结构Mem为32位×XX字的存储器行为功能描述读存储DO

Mem[AIn]写存储Clk上升沿时ifDMWrthenMem[AIn]WD功能部件建模:NPC计算下条指令的地址功能与控制NPCOp[1:0]决定如何计算PC45输入PC[31:2],Imm[25:0]NPCOp[1:0]输出NPC[31:2]行为NPCOp功能操作00顺序地址NPCPC+401计算B指令转移地址NPCPC+sign_ext(imm16)||0010计算J类指令转移地址NPCPC[31:28]||imm26||0011......功能部件建模:EXT立即数扩展功能与控制EXTOp[1:0]决定如何扩展46输入Imm16[15:0]EXTOp[1:0]输出Imm32[31:0]行为EXTOp功能操作00无符号扩展IMM32{16’b0||Imm16}01符号扩展IMM32{{16{Imm16[15]}},Imm16}10高位扩展IMM32{Imm16||16’b0}11。。。目录从单周期到多周期多周期处理器基本结构功能部件建模RTL(RegisterTransferLanguage)基于RTL的时序分析2种数据通路设计对比分析RTL描述RTL:RegisterTransferLanguage描述CPU在执行指令时其内部的具体步骤(step)步骤包括操作(operation)、寄存器间的通信以及步骤见的时序关系步骤:在1个cycle内完成的操作集合描述方法:串行描述:step1、step2、step3是顺序执行,每个step执行1个cycle并行描述:op2、op3是同时执行,并在同一个cycle完成step1:op1step2:op2;op3step3:op448建立指令的多周期RTL描述的基本方法每条指令映射到3~5个cycle重点刻画部件间的连接及部件应执行的有依赖关系的operation必须部署在不同的cycle这是由于分段数据通路的依赖性决定的可以提早执行的operation就“尽早执行”源于门电路的并行性特点;即使后面用不上也无所谓公共cycle:任何指令都必须包括Cycle1:读取指令,以指令写入IR为结束Cycle2:准备操作数,以操作数写入A/B为结束(也包括立即数扩展)操作数:包括从RF中读取寄存器、立即数扩展49ADDU:RTL建模分析R[rd]R[rs]+R[rt]Cycle1:Fetch(读取指令)Op1:IM中读出的数据(即指令)写入IROp2:计算PC=PC+4(PC指向下条指令)Op2部署在同一个cycle的理由:硬件设计基本原则之一是“尽早执行”即便后续操作需要再次改变PC也无所谓注意1:由于寄存器时序特点,因此Op2不影响Op1注意2:所有指令都必须包括该step50ADDU:RTL建模分析Cycle2:DCD/RF(读取操作数)Op1和Op2分别把RS和RT写入A、B所有指令都必须包括该step该周期隐含包括另一重要步骤:指令译码(控制器内完成)Cycle3:Exe(执行)Op:ALU完成计算并写入ALUOutCycle4:ALUWB(结果回写)Op:ALUOut写入RF的RD寄存器R[rd]R[rs]+R[rt]51ADDU:RTL描述表4个cycleIRA/BALUOutRFRTL描述表:周期:一条指令的执行周期数功能部件:刻画在该cycle需要控制的功能部件控制信号:功能部件的控制信号在该cycle的取值R[rd]R[rs]+R[rt]周期序号周期名称语义RTL需控制的功能部件功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)IRNPCPCIRWr1;NPCOp+4;PCWr1Cycle2DCD/RF读操作数2个操作数存入A/BARF[rs];BRF[rt]Cycle3Exe执行执行加法,结果存入ALUOutALUOutALU(A,B)ALUALUOpADDCycle4AluWB回写计算结果回写至rd寄存器RF[rd]ALUOutRFRFWr1LW:RTL描述表5个周期IRA/ExtALUOutDRRFR[rt]MEM[R[rs]+sign_ext(imm16)]周期步骤语义RTL需控制的功能部件功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)IRNPCPCIRWr1;NPCOp+4;PCWr1Cycle2DCD/RF读操作数基地址存入A;偏移符号扩展ARF[rs]EXT(Imm16)EXTEXTOpSECycle3MA计算地址执行加法,结果存入ALUOutALUOutALU(A,EXT)ALUEXTOpSEALUOpADDCycle4MR读存储器读取DM,数据存储DRDRDM[ALUOut]Cycle5MemWB回写DR写入rt寄存器RF[rt]DRRFRFWr1SW:RTL描述表4个周期IRA/ExtALUOutDMMEM[R[rs]+sign_ext(imm16)]R[rt]周期步骤语义RTL需控制的功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)IRNPCPCIRWr1NPCOp+4PCWr1Cycle2DCD/RF读操作数基地址存入A;偏移符号扩展ARF[rs]EXT(Imm16)EXTEXTOpSECycle3MA计算地址执行加法,结果存入ALUOutALUOutALU(A,EXT)ALUEXTOpSEALUOpADDCycle4MW写存储器rt寄存器写入DMDM[ALUOut]RF[rt]DMDMWr1ORI:RTL描述表4个cycleIRA/EXTALUOutRFR[rt]R[rs]+zero_ext(imm16)周期序号周期名称语义RTL需控制的功能部件功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)NPCPCIRIRWr1NPCOp+4PCWr1Cycle2DCD/RF读操作数操作数存入A无符号扩展ARF[rs];EXT(Imm16)EXTEXTOpUECycle3Exe执行执行加法,结果存入ALUOutALUOutALU(A,EXT)ALUEXTOpUEALUOpORCycle4AluWB回写计算结果回写至rt寄存器RF[rt]ALUOutRFRFWr1BEQ:RTL描述表3个cycleIRA/EXTPC所有PC计算都在NPC中完成PC+4:cycle1PC+偏移:cycle3周期序号周期名称语义RTL需控制的功能部件功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)NPCPCIRIRWr1NPCOp+4PCWr1Cycle2DCD/RF读操作数RS操作数存入A;32位无符号扩展ARF[rs];BRF[rt]Cycle3Br执行执行减法,判断ZeroALUOutALU(A,B)PCNPC(PC,imm16)ALUNPCPCALUOpSUBNPCBNPCPCWrZeroPC(R[rs]==R[rt])

?

PC+4+(sign_ext(imm16)||00):PC+4JAL:RTL描述表3个cycleIR空PC空:为了保持兼容优化设计:2个cycle!周期序号周期名称语义RTL功能部件功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)NPCPCIRIRWr1NPCOp+4PCWr1Cycle2DCD/RF读操作数Cycle3JMP执行计算并保存转移PC;保存PCRF[31]PCPCNPC(PC,imm26)RFNPCPCRFWr1NPCOpJNPCPCWr1PCPC[31:28]||imm26||00R[31]PCLUI:RTL描述表4个cycleIRA/EXTALUOutRF借用R型计算注意$0的用途:可以体会MIPS指令格式定义的巧妙周期序号周期名称语义RTL需控制的功能部件功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)NPCPCIRIRWr1NPCOp+4PCWr1Cycle2DCD/RF读操作数$0存入A无符号扩展ARF[0]EXT(Imm16)EXTEXTOpHECycle3Exe执行执行加法,结果存入ALUOutALUOutALU(A,EXT)ALUEXTOpHEALUOpORCycle4AluWB回写计算结果回写至rt寄存器RF[rt]ALUOutRFRFWr1R[rt]imm16||016目录从单周期到多周期多周期处理器基本结构功能部件建模RTL(RegisterTransferLanguage)基于RTL的时序分析2种数据通路设计对比分析时序分析的目的1、时序是学生理解的难点之一理解不正确,设计/调试就易于出错虽然很简单(时钟沿之前建立,时钟沿后存储),但往往理解不正确2、有利于后续状态机的设计与理解更好的理解寄存器的数据准备与数据写入的关系3、多周期时序复杂度适中,适于讲解时序变化:PC、IR、A/B、DR、RF、DM会发生变化稳定:在1条指令内只变化1次(PC除外)4、进一步训练学生学习形式建模的方法,提高抽象思维能力时序分析要点:RTL制导RTL制导分析需要哪些必要环节并非所有环节都需要(多周期的基本特点)只需关注前序寄存器与后继寄存器间关系前序值在时钟沿到来后写入寄存器注意时钟周期的概念2个时钟边沿之间的时间LW的RTL建立RTL描述表EXT:这是一个特殊部件,未设置相应的寄存器周期步骤语义RTL需控制的功能部件功能部件控制信号Cycle1Fetch取指令读取指令;计算下条指令地址IRIM[PC];PCNPC(PC)IRNPCPCIRWr1;NPCOp+4;PCWr1Cycle2DCD/RF读操作数基地址存入A;偏移符号扩展ARF[rs]EXT(Imm16)EXTEXTOpSECycle3MA计算地址执行加法,结果存入ALUOutALUOutALU(A,EXT)ALUEXTOpSEALUOpADDCycle4MR读存储器读取DM,数据存储DRDRDM[ALUOut]Cycle5MemWB回写DR写入rt寄存器RF[rt]DRRFRFWr1PCLW地址PC+4IMLW[PC+4]IR前条指令LWRF旧操作数操作数A/B旧操作数操作数ExtX扩展数ALU执行前指令XALUOutXXDM(读出)XXDRXXCLK1LW时序分析:Cycle1Cycle1:取指令(公共周期)读取IM至IR;同时PC自增4X:代表其值无意义边沿后的颜色:代表延迟FetchCycle1寄存器输出延迟最短功能部件输出延迟=寄存器输出延迟+扩展延迟存储器输出延迟比较长周期步骤RTLCycle1FetchIRIM[PC];PCNPC(PC)Cycle2DCD/RFARF[rs]EXT(Imm16)Cycle3MAALUOutALU(A,EXT)Cycle4MRDRDM[ALUOut]Cycle5MemWBRF[rt]DR绿色:功能部件为寄存器PCLW地址PC+4PC+4IMLW[PC+4][PC+4]IR前条指令LWLWRF旧操作数操作数操作数A/B旧操作数X操作数ExtX扩展数扩展数ALU执行前指令XDM地址ALUOutXXXDM(读出)XXXDRXXXCLK1CLK2LW时序分析:Cycle2Cycle2:读操作数(公共周期)读操作数,同时开始译码指令已经在IR中了FetchCycle1DCD/RFCycle2周期步骤RTLCycle1FetchIRIM[PC];PCNPC(PC)Cycle2DCD/RFARF[rs]EXT(Imm16)Cycle3MAALUOutALU(A,EXT)Cycle4MRDRDM[ALUOut]Cycle5MemWBRF[rt]DRPCLW地址PC+4PC+4PC+4IMLW[PC+4][PC+4][PC+4]IR前条指令LWLWLWRF旧操作数操作数操作数操作数A/B旧操作数操作数操作数操作数ExtX扩展数扩展数扩展数ALU执行前指令DM地址DM地址DM地址ALUOutXXXDM地址DM(读出)

温馨提示

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

评论

0/150

提交评论