L1-多周期數(shù)據通路_第1頁
L1-多周期數(shù)據通路_第2頁
L1-多周期數(shù)據通路_第3頁
L1-多周期數(shù)據通路_第4頁
L1-多周期數(shù)據通路_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

高小鵬gxp@北京航空航天大學計算機學院2015年7月1多周期數(shù)據通路、RTL、時序分析2015年計算機組成研討班多周期CPU形式建模綜合方法目錄從單周期到多周期多周期處理器基本結構功能部件建模RTL(RegisterTransferLanguage)基于RTL的時序分析2種數(shù)據通路設計對比分析2單周期數(shù)據通路的5個邏輯步驟從邏輯上:數(shù)據通路總共為5個邏輯步驟公共步驟:取指令、譯碼/讀操作數(shù)所有指令均必須經歷的2個步驟PC指令存儲器+4RegisterFilertrsrdALU數(shù)據存儲器immMUX取指令IFPC驅動IM讀取指令譯碼/讀操作數(shù)DCD/RF譯碼屬于控制器范疇,但可以與讀操作數(shù)并行執(zhí)行EXEALU完成算數(shù)/邏輯運算訪存MEM讀DM或寫DM回寫WBALU計算結果或IM讀出數(shù)據寫入寄存器堆1.取指令IF2.譯碼/讀操作數(shù)DCD/RF3.執(zhí)行EXE4.訪存MEM5.回寫WB運算類指令:理想執(zhí)行過程(R-R)指令:ADD、SUB、OR。。。需求:R[rd]

R[rs]opR[rt]過程:取指、譯碼/讀寄存器、執(zhí)行、訪存、回寫PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUXopcodefunctrsrtrdshamt3101.取指令IF2.譯碼/讀操作數(shù)DCD/RF3.執(zhí)行EXE4.訪存MEM5.回寫WBX分支類指令:理想執(zhí)行過程指令:BEQ、。。。需求:PC

條件?PC+Ext(Imm):PC+4過程:取指、譯碼/讀寄存器、執(zhí)行、訪存、回寫PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUXopcodersrtimmediate3101.取指令IF2.譯碼/讀操作數(shù)DCD/RF3.計算EXE4.訪存MEM5.回寫WBXX跳轉指令:理想執(zhí)行過程指令:J需求:PC

PC[31:28]||target_address||00過程:取指、譯碼/讀寄存器、執(zhí)行、訪存、回寫PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUXopcodetargetaddress3101.取指令IF2.譯碼/讀操作數(shù)DCD/RF3.執(zhí)行EXE4.訪存MEM5.回寫WBXX讀存儲指令:理想執(zhí)行過程指令:LW需求:GPR[rt]←memory[GPR[base]+offset]過程:取指、譯碼/讀寄存器、執(zhí)行、訪存、回寫PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX1.取指令IF2.譯碼/讀操作數(shù)DCD/RF3.執(zhí)行EXE4.訪存MEM5.回寫WB寫存儲指令:理想執(zhí)行過程指令:SW需求:memory[GPR[base]+offset]←GPR[rt]過程:取指、譯碼/讀寄存器、執(zhí)行、訪存、回寫PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX1.取指令IF2.譯碼/讀操作數(shù)DCD/RF3.執(zhí)行EXE4.訪存MEM5.回寫WBX物理執(zhí)行路徑vs.理想執(zhí)行過程2個現(xiàn)象現(xiàn)象1:不同指令的理想執(zhí)行過程不同現(xiàn)象2:所有指令都有前3個階段前2階段完全相同;第3階段功能有差異啟示不同指令的理想執(zhí)行過程不同,即理想執(zhí)行時間不同不同指令能否具有不同物理執(zhí)行路徑,以對應理想執(zhí)行過程?IFDCD/RFEXEMEMWB計算分支跳轉讀存儲寫存儲單周期數(shù)據通路的缺陷模型:PC組合邏輯寄存器堆單一組合邏輯實現(xiàn)了全部5個階段的邏輯功能必然存在關鍵路徑,且關鍵路徑導致每條指令延遲均相同結論:無法利用不同指令具有不同執(zhí)行需求的潛在特性PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX目錄從單周期到多周期多周期處理器基本結構功能部件建模RTL(RegisterTransferLanguage)基于RTL的時序分析2種數(shù)據通路設計對比分析多周期數(shù)據通路構思單周期的單一路徑被物理上切分為多段路徑在數(shù)據通路上插入多個寄存器單一組合邏輯被切分為多段組合邏輯單一關鍵路徑的大延遲變?yōu)槎鄠€分段路徑的小延遲PCinstructionmemory+4RegisterFilertrsrdALUDatamemoryimmMUX12345基礎多周期數(shù)據通路支持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數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC261F012M1數(shù)據寄存器012寄存器堆A1A2A3WDRD1RD2123451.取指令IF2.譯碼/讀操作數(shù)DCD/RF3.執(zhí)行EXE4.訪存MEM5.回寫WB分段的數(shù)據通路5個分段:對應指令所需5個可能環(huán)節(jié)分段結構:R-C-R(寄存器-組合邏輯-寄存器)以寄存器讀出為起始,中間可以包括組合邏輯計算14分段通路段內平行功能起始(讀寄存器)中間邏輯結束(寫寄存器)依賴讀取指令PCIMIR讀操作數(shù)讀2個寄存器IRRFA/B讀取指令讀1個寄存器,立即數(shù)擴展A(/B),EXT執(zhí)行R-R運算A,BALUALUOut讀操作數(shù)R-I運算A,EXT訪存讀存儲ALUOutDMDR執(zhí)行執(zhí)行寫存儲ALUOut,BDM回寫存儲回寫DRRF讀存儲@訪存計算回寫ALUOutRF執(zhí)行多周期數(shù)據通路特點:功能劃分功能聚集:相近功能屬于同一分段讀操作數(shù):讀取RF、立即數(shù)擴展執(zhí)行:各類算數(shù)/邏輯運算訪存:讀存儲、寫存儲回寫:ALU計算回寫、讀存儲器回寫組裝特點:根據不同指令需求,靈活組合分段不同指令執(zhí)行,占用不同的功能單元很好的映射不同指令的理想執(zhí)行過程階段1(讀取指令):公共階段,必須有階段2(讀操作數(shù)):公共階段,必須有15多周期數(shù)據通路特點:功能執(zhí)行段內執(zhí)行:每段1個Cycle,數(shù)據~處理~保存數(shù)據(讀出):前級寄存器的輸出處理(邏輯):由本段內的組合邏輯完成,如ALU保存(寫入):處理的結果寫入后級寄存器段間執(zhí)行:存在邏輯依賴關系前段沒有執(zhí)行,后段執(zhí)行無意義注意:不是不能執(zhí)行,而是執(zhí)行結果無意義例如:指令不讀入IR,讀操作數(shù)就沒有意義!整體執(zhí)行:多少個分段,多少個cycle與控制器很好的匹配(后面介紹)16ADDU指令的多周期數(shù)據通路:IF階段加載指令:讀取IM,寫入IR(指令寄存器)更新PC:PCPC+4指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]ADDUSUBULWSWORILUIBEQJALPC計算PCIMMNPCTIP:PC需要寫使能與單周期不同了!ADDU指令的多周期數(shù)據通路:DCD/RF階段讀取操作數(shù):GPRA、BA、B:分別存儲寄存器文件的2個輸出指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBULWSWORILUIBEQJALPC計算PCIMMNPCADDU指令的多周期數(shù)據通路:EXE階段存儲計算結果ALU計算結果存儲在ALUOut寄存器指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBULWSWORILUIBEQJALALUZeroOvALU結果ALUOutPC計算PCIMMNPCADDU指令的多周期數(shù)據通路:WB階段回寫寄存器ALUOut存儲的計算結果寫入對應的寄存器指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBULWSWORILUIBEQJALALUZeroOvALU結果ALUOutPC計算PCIMMNPCORI指令的多周期數(shù)據通路ORIR[rt]R[rs]|zero_ext(Imm16);增加硬件:零擴展單元、MUX指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU結果ALUOut160擴展3201PC計算PCIMMNPC01M1LW指令的多周期數(shù)據通路LOADR[rt]MEM[R[rs]+sign_ext(Imm16)]增加硬件:數(shù)據存儲器、數(shù)據寄存器、擴展單元、MUX擴展單元:包括零擴展功能和符合擴展功能指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteData01PC計算PCIMMNPC01M1SW指令的多周期數(shù)據通路STOREMEM[R[rs]+sign_ext(Imm16)]R[rt];

增加硬件:連接線從B寄存器至數(shù)據存儲器的指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteData01PC計算PCIMMNPC01M1BEQ指令的多周期數(shù)據通路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數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteData01PC計算PCIMMNPC01M1JAL指令的多周期數(shù)據通路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數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1多周期數(shù)據通路ADDUSUBUORILWSWBEQJAL增加硬件IR:指令寄存器A/B:操作數(shù)寄存器ALUOut:計算結果寄存器DR:數(shù)據寄存器指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1PC不變?IR不變?分析的要點指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令操作數(shù)執(zhí)行上條指令上條指令結果XXXX階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456上條指令操作數(shù)執(zhí)行上條指令上條指令結果XXXXXXXXXXXX2源操作數(shù)計算結果上條指令結果XXXXXXXXPC+4ADDUXXXX2源操作數(shù)計算結果計算結果XXXXXXXXPC+4ADDUXXXX2源操作數(shù)計算結果計算結果計算結果XXXXPC+4ADDUXXXX指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ADDUSUBUORILWSWBEQJALALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPCPC+4012261F012M1FETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算結果上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456取指FETCHDCD/RFEXEWBFETCHPCIMIRA/BExtALUALUOutDMDRGPR指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456取指FETCHDCD/RFEXEWBFETCHPCADDU地址IM輸出ADDUIR舊指令A/B舊操作數(shù)Ext無效擴展ALU執(zhí)行前指令ALUOut前結果DM無效數(shù)據DR無效數(shù)據GPR舊值輸出指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456譯碼/

讀寄存器FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4IM輸出ADDU指令[PC+4]IR舊指令ADDUA/B舊操作數(shù)舊操作數(shù)Ext無效擴展無效擴展ALU執(zhí)行前指令執(zhí)行前指令ALUOut前結果前結果DM無效數(shù)據無效數(shù)據DR無效數(shù)據無效數(shù)據GPR舊值輸出新值輸出指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456執(zhí)行FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4IM輸出ADDU指令[PC+4]指令[PC+4]IR舊指令ADDUADDUA/B舊操作數(shù)舊操作數(shù)新操作數(shù)Ext無效擴展無效擴展無效擴展ALU執(zhí)行前指令執(zhí)行前指令計算ALUOut前結果前結果前結果DM無效數(shù)據無效數(shù)據無效數(shù)據DR無效數(shù)據無效數(shù)據無效數(shù)據GPR舊值輸出新值輸出新值輸出指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456寫回FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4PC+4IM輸出ADDU指令[PC+4]指令[PC+4]指令[PC+4]IR舊指令ADDUADDUADDUA/B舊操作數(shù)舊操作數(shù)新操作數(shù)新操作數(shù)Ext無效擴展無效擴展無效擴展無效擴展ALU執(zhí)行前指令執(zhí)行前指令計算結果計算結果ALUOut前結果前結果前結果計算結果DM無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據DR無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據GPR舊值輸出新值輸出新值輸出新值輸出指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456最終

寫入FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4PC+4PC+4IM輸出ADDU指令[PC+4]指令[PC+4]指令[PC+4]指令[PC+4]IR舊指令ADDUADDUADDUADDUA/B舊操作數(shù)舊操作數(shù)新操作數(shù)新操作數(shù)新操作數(shù)Ext無效擴展無效擴展無效擴展無效擴展無效擴展ALU執(zhí)行前指令執(zhí)行前指令計算結果計算結果計算結果ALUOut前結果前結果前結果計算結果計算結果DM無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據DR無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據GPR舊值輸出新值輸出新值輸出新值輸出輸出/更新指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1ADDUSUBUORILWSWBEQJALFETCHD/REXEWBADDU地址PC+4上條指令ADDU上條指令2源操作數(shù)2源操作數(shù)執(zhí)行上條指令計算上條指令計算結果計算結果XXXX計算結果階段PCIRA/BExtALUALUOutDRGPRXXXXXXXXFETCH~~~~~~~~~123456最終

寫入FETCHDCD/RFEXEWBFETCHPCADDU地址PC+4PC+4PC+4PC+4IM輸出ADDU指令[PC+4]指令[PC+4]指令[PC+4]指令[PC+4]IR舊指令ADDUADDUADDUADDUA/B舊操作數(shù)舊操作數(shù)新操作數(shù)新操作數(shù)新操作數(shù)Ext無效擴展無效擴展無效擴展無效擴展無效擴展ALU執(zhí)行前指令執(zhí)行前指令計算結果計算結果計算結果ALUOut前結果前結果前結果計算結果計算結果DM無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據DR無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據無效數(shù)據GPR舊值輸出新值輸出新值輸出新值輸出輸出/更新指令存儲器AddrDataPC指令寄存器指令[31:26]指令[25:21]指令[20:16]指令[15:0]AB寄存器堆ReadReg1ReadReg2WriteRegWriteDataReadData1ReadData2ALUZeroOvALU結果ALUOut16擴展3201數(shù)據寄存器數(shù)據存儲器AddrReadDataWriteDataPC計算PCIMMNPC0121F012M1功能部件及其控制信號使用約束注意時鐘沿與狀態(tài)間的關系寄存器的值:clock正邊沿前準備,正邊沿寫入PC是發(fā)動機、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種數(shù)據通路設計對比分析38功能部件數(shù)據通路是以功能部件為基礎構造的數(shù)據通路:系統(tǒng)功能部件:子系統(tǒng)構造數(shù)據通路S0:以功能部件為基礎S1:給出執(zhí)行每條指令所需部件的連接關系S2:綜合出執(zhí)行指令集所需部件的連接關系功能部件建模外部特性:數(shù)據通路設計關心的內部實現(xiàn):基本與數(shù)據通路設計無關39功能部件建模:PC程序計數(shù)器功能與控制PCWr決定寫入40輸入NPC[32:0]PCWr,Clk,RST輸出PC[31:2]數(shù)據結構addr,30位寄存器行為功能操作計數(shù)輸出PCaddr異步復位ifRSTthenaddr32’h40000同步加載Clk上升沿時:ifPCWrthenaddrNPC功能部件建模:IM數(shù)據寬度:32位存儲容量:可以任意大仿真:不超過1K字為宜功能與控制無需控制,數(shù)據經過的固定延遲后輸出41輸入AIn[31:0]輸出DO[31:0]數(shù)據結構Mem為32位×XX字的只讀存儲器行為功能操作數(shù)據輸出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]數(shù)據結構RF[0..31],32個32位寄存器行為功能操作讀出寄存器值RD1RF[A1];RD2RF[A2]寫入寄存器值Clk上升沿時if(RFWr)thenRF[A3]WD功能部件建模:ALU功能與控制ALUOp[3:0]決定執(zhí)行何種計算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數(shù)據寬度:32位存儲容量:可以任意大仿真:不超過1K字為宜功能與控制讀出:不需要控制寫入:DMWr為144輸入AIn[31:0];WD[31:0]DMWr;Clk輸出DO[31:0]數(shù)據結構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立即數(shù)擴展功能與控制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種數(shù)據通路設計對比分析RTL描述RTL:RegisterTransferLanguage描述CPU在執(zhí)行指令時其內部的具體步驟(step)步驟包括操作(operation)、寄存器間的通信以及步驟見的時序關系步驟:在1個cycle內完成的操作集合描述方法:串行描述:step1、step2、step3是順序執(zhí)行,每個step執(zhí)行1個cycle并行描述:op2、op3是同時執(zhí)行,并在同一個cycle完成step1:op1step2:op2;op3step3:op448建立指令的多周期RTL描述的基本方法每條指令映射到3~5個cycle重點刻畫部件間的連接及部件應執(zhí)行的有依賴關系的operation必須部署在不同的cycle這是由于分段數(shù)據通路的依賴性決定的可以提早執(zhí)行的operation就“盡早執(zhí)行”源于門電路的并行性特點;即使后面用不上也無所謂公共cycle:任何指令都必須包括Cycle1:讀取指令,以指令寫入IR為結束Cycle2:準備操作數(shù),以操作數(shù)寫入A/B為結束(也包括立即數(shù)擴展)操作數(shù):包括從RF中讀取寄存器、立即數(shù)擴展49ADDU:RTL建模分析R[rd]R[rs]+R[rt]Cycle1:Fetch(讀取指令)Op1:IM中讀出的數(shù)據(即指令)寫入IROp2:計算PC=PC+4(PC指向下條指令)Op2部署在同一個cycle的理由:硬件設計基本原則之一是“盡早執(zhí)行”即便后續(xù)操作需要再次改變PC也無所謂注意1:由于寄存器時序特點,因此Op2不影響Op1注意2:所有指令都必須包括該step50ADDU:RTL建模分析Cycle2:DCD/RF(讀取操作數(shù))Op1和Op2分別把RS和RT寫入A、B所有指令都必須包括該step該周期隱含包括另一重要步驟:指令譯碼(控制器內完成)Cycle3:Exe(執(zhí)行)Op:ALU完成計算并寫入ALUOutCycle4:ALUWB(結果回寫)Op:ALUOut寫入RF的RD寄存器R[rd]R[rs]+R[rt]51ADDU:RTL描述表4個cycleIRA/BALUOutRFRTL描述表:周期:一條指令的執(zhí)行周期數(shù)功能部件:刻畫在該cycle需要控制的功能部件控制信號:功能部件的控制信號在該cycle的取值R[rd]R[rs]+R[rt]周期序號周期名稱語義RTL需控制的功能部件功能部件控制信號Cycle1Fetch取指令讀取指令;計算下條指令地址IRIM[PC];PCNPC(PC)IRNPCPCIRWr1;NPCOp+4;PCWr1Cycle2DCD/RF讀操作數(shù)2個操作數(shù)存入A/BARF[rs];BRF[rt]Cycle3Exe執(zhí)行執(zhí)行加法,結果存入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讀操作數(shù)基地址存入A;偏移符號擴展ARF[rs]EXT(Imm16)EXTEXTOpSECycle3MA計算地址執(zhí)行加法,結果存入ALUOutALUOutALU(A,EXT)ALUEXTOpSEALUOpADDCycle4MR讀存儲器讀取DM,數(shù)據存儲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讀操作數(shù)基地址存入A;偏移符號擴展ARF[rs]EXT(Imm16)EXTEXTOpSECycle3MA計算地址執(zhí)行加法,結果存入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讀操作數(shù)操作數(shù)存入A無符號擴展ARF[rs];EXT(Imm16)EXTEXTOpUECycle3Exe執(zhí)行執(zhí)行加法,結果存入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讀操作數(shù)RS操作數(shù)存入A;32位無符號擴展ARF[rs];BRF[rt]Cycle3Br執(zhí)行執(zhí)行減法,判斷ZeroALUOutALU(A,B)PCNPC(PC,imm16)ALUNPCPCALUOpSUBNPCBNPCPCWrZeroPC(R[rs]==R[rt])

?

PC+4+(sign_ext(imm16)||00):PC+4JAL:RTL描述表3個cycleIR空PC空:為了保持兼容優(yōu)化設計:2個cycle!周期序號周期名稱語義RTL功能部件功能部件控制信號Cycle1Fetch取指令讀取指令;計算下條指令地址IRIM[PC];PCNPC(PC)NPCPCIRIRWr1NPCOp+4PCWr1Cycle2DCD/RF讀操作數(shù)Cycle3JMP執(zhí)行計算并保存轉移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讀操作數(shù)$0存入A無符號擴展ARF[0]EXT(Imm16)EXTEXTOpHECycle3Exe執(zhí)行執(zhí)行加法,結果存入ALUOutALUOutALU(A,EXT)ALUEXTOpHEALUOpORCycle4AluWB回寫計算結果回寫至rt寄存器RF[rt]ALUOutRFRFWr1R[rt]imm16||016目錄從單周期到多周期多周期處理器基本結構功能部件建模RTL(RegisterTransferLanguage)基于RTL的時序分析2種數(shù)據通路設計對比分析時序分析的目的1、時序是學生理解的難點之一理解不正確,設計/調試就易于出錯雖然很簡單(時鐘沿之前建立,時鐘沿后存儲),但往往理解不正確2、有利于后續(xù)狀態(tài)機的設計與理解更好的理解寄存器的數(shù)據準備與數(shù)據寫入的關系3、多周期時序復雜度適中,適于講解時序變化:PC、IR、A/B、DR、RF、DM會發(fā)生變化穩(wěn)定:在1條指令內只變化1次(PC除外)4、進一步訓練學生學習形式建模的方法,提高抽象思維能力時序分析要點:RTL制導RTL制導分析需要哪些必要環(huán)節(jié)并非所有環(huán)節(jié)都需要(多周期的基本特點)只需關注前序寄存器與后繼寄存器間關系前序值在時鐘沿到來后寫入寄存器注意時鐘周期的概念2個時鐘邊沿之間的時間LW的RTL建立RTL描述表EXT:這是一個特殊部件,未設置相應的寄存器周期步驟語義RTL需控制的功能部件功能部件控制信號Cycle1Fetch取指令讀取指令;計算下條指令地址IRIM[PC];PCNPC(PC)IRNPCPCIRWr1;NPCOp+4;PCWr1Cycle2DCD/RF讀操作數(shù)基地址存入A;偏移符號擴展ARF[rs]EXT(Imm16)EXTEXTOpSECycle3MA計算地址執(zhí)行加法,結果存入ALUOutALUOutALU(A,EXT)ALUEXTOpSEALUOpADDCycle4MR讀存儲器讀取DM,數(shù)據存儲DRDRDM[ALUOut]Cycle5MemWB回寫DR寫入rt寄存器RF[rt]DRRFRFWr1PCLW地址PC+4IMLW[PC+4]IR前條指令LWRF舊操作數(shù)操作數(shù)A/B舊操作數(shù)操作數(shù)ExtX擴展數(shù)ALU執(zhí)行前指令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舊操作數(shù)操作數(shù)操作數(shù)A/B舊操作數(shù)X操作數(shù)ExtX擴展數(shù)擴展數(shù)ALU執(zhí)行前指令XDM地址ALUOutXXXDM(讀出)XXXDRXXXCLK1CLK2LW時序分析:Cycle2Cycle2:讀操作數(shù)(公共周期)讀操作數(shù),同時開始譯碼指令已經在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舊操作數(shù)操作數(shù)操作數(shù)操作數(shù)A/B舊操作數(shù)操作數(shù)操作數(shù)操作數(shù)ExtX擴展數(shù)擴展數(shù)擴展數(shù)ALU執(zhí)行前指令DM地址DM地址DM地址ALUOutXXXDM地址DM(讀出)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論