




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
計(jì)算機(jī)組成流水線高小鵬北京航空航天大學(xué)計(jì)算機(jī)學(xué)院目錄流水線概述流水線數(shù)據(jù)通路流水線控制流水線冒險(xiǎn)流水線性能分析2種CPU模型對比2如何計(jì)算電路的最大時(shí)鐘頻率3個(gè)重要術(shù)語建立時(shí)間(SetupTime):輸入信號在時(shí)鐘上升沿之前就必須有效的時(shí)間保持時(shí)間(HoldTime):輸入信號在時(shí)鐘上升沿之后仍然必須保持有效的時(shí)間輸出延遲(CLK-to-Q):輸出信號在時(shí)鐘上升沿之后輸出有效值的時(shí)間最大頻率取決于最大延遲;最大延遲取決于為了確保寄存器的正確輸入所需要的時(shí)間組合邏輯寄存器輸出輸入次態(tài)現(xiàn)態(tài)T=
建立時(shí)間
+
輸出延遲+
組合邏輯延遲fmax
=1/T關(guān)鍵路徑關(guān)鍵路徑:電路中的任意2個(gè)寄存器之間的最大延遲電路的時(shí)鐘周期必須大于關(guān)鍵路徑,否則信號將不能正確的傳遞到下一個(gè)寄存器組合邏輯1組合邏輯2組合邏輯3012寄存器寄存器T1T2T3T4CLK關(guān)鍵路徑
=
組合邏輯延遲1+
組合邏輯延遲2+
組合邏輯延遲3+MUX延遲Add指令執(zhí)行延遲分析執(zhí)行延遲:覆蓋從PC輸出到RF寫入的全路徑ClkPCRs,Rt,Rd,Op,FuncRFWr舊值新值A(chǔ)LUOp舊值新值控制器輸出延遲RD1,RD2RF訪問延遲舊值新值A(chǔ)LU延遲WD舊值新值IM讀延遲舊值新值新值舊值寄存器輸出延遲建立時(shí)間RF寫入時(shí)刻單周期性能假設(shè):RF的讀寫延遲均為100ps,其他部件延遲為200ps最大時(shí)鐘頻率是多少?lw延遲最大,即關(guān)鍵路徑為800ns。因此,最大時(shí)鐘頻率為1.25GHz如何提高時(shí)鐘頻率?指令讀取指令讀寄存器ALU數(shù)據(jù)存取寫寄存器理想執(zhí)行時(shí)間實(shí)際執(zhí)行時(shí)間addu200100200
100600800subu200100200
100600800ori200100200
100600800lw200100200200100800800sw200100200200
700800beq200100200
500800jal200
100300800jr200100
300800示例:簡單的流水線電路以下是R1在3個(gè)連續(xù)時(shí)鐘周期分別輸入100、200、300的電路時(shí)序圖7CL1CL2Y=X+1Y=X+1R1R2R3100、200、300102、202、302流水線工作過程的形式表示為清晰的表示流水線的工作過程,采用表格化的描述方式8CL1CL2CLKR1R2R31XXX1002100200101310030020110243012025302水平方向:按流水線執(zhí)行順序布局由于寄存器值的保存與傳遞是分析要點(diǎn),同時(shí)為了簡化分析過程,不單獨(dú)記錄組合邏輯計(jì)算結(jié)果垂直方向:寄存器在相應(yīng)時(shí)鐘上升沿后的值CL1CL2Y=X+1Y=X+1R1R2R3100、200、300102、202、302101、201、301回顧:MIPS數(shù)據(jù)通路的5個(gè)階段1)取指令:IF,InstructionFetch從IM中讀取指令驅(qū)動(dòng)NPC更新PC2)譯碼:ID,InstructionDecode指令驅(qū)動(dòng)RF讀取寄存器值(包括立即數(shù)擴(kuò)展)控制器對指令的op和funct進(jìn)行譯碼3)執(zhí)行:EX,EXecutionALU計(jì)算(load/store計(jì)算地址;其他指令則為計(jì)算)4)訪存:MEM,MEMory讀(或?qū)?存儲(chǔ)器5)回寫:WB,WriteBack將ALU結(jié)果或存儲(chǔ)器讀出的數(shù)據(jù)寫回寄存器堆9單周期及多周期的特點(diǎn)單周期所有指令的執(zhí)行周期數(shù)都為1,即CPI=1存在一條非常明顯的關(guān)鍵路徑,CPU的時(shí)鐘頻率很低結(jié)果導(dǎo)致每條指令的執(zhí)行時(shí)間都等最慢的那條指令的執(zhí)行時(shí)間多周期通過插入寄存器,解決了單周期時(shí)鐘頻率低的的不足數(shù)據(jù)通路每次只執(zhí)行一條指令,功能部件利用率低示例:add進(jìn)行到執(zhí)行階段時(shí),IM和RF都處于空閑狀態(tài)CPI:CyclePerInstruction10流水線架構(gòu)模型單周期數(shù)據(jù)通路架構(gòu)模型流水線架通過插入多個(gè)寄存器,從而在物理上將單周期的關(guān)鍵路徑切割為若干段單周期數(shù)據(jù)通路ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器
指令存儲(chǔ)器寄存器堆PC取指令譯碼/讀操作數(shù)執(zhí)行訪存回寫IFIDEXMEMWB
RF再次出現(xiàn)的目的在于為了更醒目的表達(dá)回寫階段ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器流水線數(shù)據(jù)通路
指令存儲(chǔ)器寄存器堆PC取指令譯碼/讀操作數(shù)執(zhí)行訪存回寫IFIDEXMEMWB關(guān)鍵路徑11流水線執(zhí)行特點(diǎn)理論上,流水線每個(gè)cycle都從IM中讀取一條新指令,同時(shí)將已在流水線里的指令向前推進(jìn)一個(gè)階段多條指令在數(shù)據(jù)通路中,但同一時(shí)刻占用不同的資源(即處于不同階段)對于N級流水線,單條指令執(zhí)行周期數(shù)均為N少數(shù)控制流指令除外(如分支類指令、跳轉(zhuǎn)類指令)理論上,當(dāng)流水線充滿后,每個(gè)cycle可以執(zhí)行完一條指令123456789指令N取指令讀操作數(shù)執(zhí)行訪存回寫指令N+1取指令讀操作數(shù)執(zhí)行訪存回寫指令N+2取指令讀操作數(shù)執(zhí)行訪存回寫。。。時(shí)鐘周期指令序列12流水線性能假設(shè)采用單周期時(shí)的性能參數(shù),流水線的時(shí)鐘頻率是多少?單周期:lw是關(guān)鍵路徑,延遲為800ps,因此時(shí)鐘頻率上限為1.25GHz流水線:各段最大延遲為200ps,即因此時(shí)鐘頻率上限為5GHz指令讀取指令讀寄存器ALU數(shù)據(jù)存取寫寄存器addu200100200
100subu200100200
100ori200100200
100lw200100200200100sw200100200200
beq200100200
jal200
100jr200100
13流水線性能單周期:每個(gè)時(shí)鐘周期800ps,主頻1.25GHz流水線:每個(gè)時(shí)鐘周期200ps,主頻5GHz時(shí)間指令序列200400600800100012001400lw取指令RegALU訪存Reglw200ps取指令Reg執(zhí)行訪存Reglw200ps取指令Reg執(zhí)行訪存Reg1000ps時(shí)間指令序列2004006008001000120014001600lw取指令RegALU訪存Reglw800ps取指令RegALU訪存Reglw800ps取指令...14指令級并行15流水線使得CPU可以在同一時(shí)刻執(zhí)行多條指令多條指令同時(shí)運(yùn)行各功能部件利用率高大幅度提高了CPU的吞吐率這種技術(shù)被稱為指令級并行ILP:InstructionLevelParallelism流水線的基本特性理想加速比=流水線級數(shù)假設(shè)單周期數(shù)據(jù)通路均勻切分為N段,則流水線性能是單周期的N倍!流水線特點(diǎn)流水線改善的是吞吐率理論上,當(dāng)流水線充滿后,每個(gè)時(shí)鐘周期可以執(zhí)行完一條指令流水線不改善單條指令執(zhí)行周期數(shù)如果各流水段執(zhí)行時(shí)間不平衡,則加速比下降流水線時(shí)鐘頻率受限于最慢的流水段填充流水線和排放流水線,均會(huì)影響吞吐率,也會(huì)導(dǎo)致加速比下降
16指令集對流水線設(shè)計(jì)的影響MIPS指令集是面向流水線架構(gòu)設(shè)計(jì)的所有的指令都是32位取指和譯碼都能在一個(gè)周期內(nèi)完成指令格式種類少且規(guī)整,2個(gè)源寄存器的位置保持不變這使得讀取操作數(shù)和譯碼可以同時(shí)執(zhí)行存儲(chǔ)器操作只有l(wèi)oad和store第3拍計(jì)算地址,第4拍訪存存儲(chǔ)器操作是地址對齊的有利于與主存的協(xié)同設(shè)計(jì),且訪存周期數(shù)固定17目錄流水線概述流水線數(shù)據(jù)通路準(zhǔn)備工作流水線控制流水線冒險(xiǎn)流水線性能分析2種CPU模型對比18MIPS-C0指令集加減法指令addurd,rs,rtsuburd,rs,rt立即數(shù)指令orirt,rs,imm16存儲(chǔ)訪問指令lwrt,rs,imm16swrt,rs,imm16分支指令beqrs,rt,imm16函數(shù)調(diào)用指令jaltarget函數(shù)返回指令jrrs312625212016151110650oprsrtrdshamtfunct312625212016151110650oprsrtimm16312625212016151110650oprsrtimm163126250opimm26312625212016151110650oprsrtimm1631262521201110650oprs000000000000000funct19單周期數(shù)據(jù)通路技術(shù)處理1:將RF分為讀出和寫入兩個(gè)環(huán)節(jié)來表示RF(R)代表RF用于讀出數(shù)據(jù);RF(W)代表RF用于寫入數(shù)據(jù)技術(shù)處理2:NPC設(shè)置了Imm16和Imm26兩個(gè)輸入,分別對應(yīng)beq和jal的PC計(jì)算需求不合并兩個(gè)輸入信號,有助于后續(xù)的分析ALUZeroEXT01AB20:1625:2101201215:0015:1120:161F25:0015:00A3RF(R)RD1RD2A1A2A3WDIMADPCNPCPC4PCNPCPC4BrImm16RAImm26RF(W)RD1RD2A1A2A3WDDMARDWD20方法1:采用相鄰兩級名字組合的方式優(yōu)點(diǎn):各級寄存器的位置非常清晰缺點(diǎn):當(dāng)需要標(biāo)記位于各級寄存器的指令某些信息時(shí),名字會(huì)非常的長流水線寄存器命名ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器
指令存儲(chǔ)器寄存器堆PC取指令譯碼/讀操作數(shù)執(zhí)行訪存回寫IFIDEXMEMWBIF/IDID/EXEX/MEMMEM/WB21方法2:用各級功能的某個(gè)字母命名優(yōu)點(diǎn):當(dāng)需要標(biāo)記位于各級寄存器的指令某些信息時(shí),名字非常簡潔流水線寄存器命名ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器
指令存儲(chǔ)器寄存器堆PC取指令譯碼/讀操作數(shù)執(zhí)行訪存回寫IFIDEXMEMWBDEMW22流水線信號命名命名規(guī)范:信號名的末尾添加特定字母這種命名方式既保留了信號的基本語義,又清晰的區(qū)分了信號所在階段示例:1)NPC輸出的PC4;2)指令[20:16]與[15:11]產(chǎn)生的目的寄存器編號A3NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDEMWDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3W23時(shí)鐘驅(qū)動(dòng)的流水線時(shí)空圖24用于精確分析指令/周期/寄存器3者關(guān)系指令何時(shí)處于何階段理想情況下,在clk5后流水線全部充滿所有部件都在執(zhí)行指令:不同指令位于不同部件相對PC的地址偏移IF級ID級EX級MEM級WB級指令CLKPCIMDEMWRF0Instr1
104Instr1Instr14Instr2248Instr2Instr2Instr18Instr331212Instr3Instr3Instr2Instr112Instr441216Instr4Instr4Instr3Instr2Instr
116Instr5
51620Instr5Instr5Instr4Instr3Instr2Instr120Instr6
61620Instr6Instr6Instr5Instr4Instr3Instr2目錄流水線概述流水線數(shù)據(jù)通路lw的流水線執(zhí)行過程流水線控制流水線冒險(xiǎn)流水線性能分析2種CPU模型對比25示例:lw執(zhí)行過程1/5第1個(gè)后PC驅(qū)動(dòng)IM讀取指令,lw寫入DPC驅(qū)動(dòng)NPC計(jì)算,將PC+4寫入PCNPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDEMWPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WD寄存器被寫入組合邏輯正在工作地址指令CLKPCDEMWRF00lw10004lw26示例:lw執(zhí)行過程2/5第2個(gè)后D驅(qū)動(dòng)RF讀取操作數(shù),結(jié)果寫入ED驅(qū)動(dòng)EXT計(jì)算擴(kuò)展的立即數(shù),結(jié)果寫入入ENPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDMWPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WDE地址指令CLKPCDEMWRF00lw10004lw0420408lw27示例:lw執(zhí)行過程3/5第3個(gè)后E驅(qū)動(dòng)ALU計(jì)算,結(jié)果寫入MNPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDWPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WDEM地址指令CLKPCDEMWRF00lw10004lw0420408lw0830812lw28示例:lw執(zhí)行過程4/5第4個(gè)后M驅(qū)動(dòng)DM讀取數(shù)據(jù),結(jié)果寫入WNPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WDEMW地址指令CLKPCDEMWRF00lw10004lw0420408lw0830812lw1241216lw29示例:lw執(zhí)行過程5/5第5個(gè)后W將結(jié)果寫入RFNPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WDEMW寄存器被寫入組合邏輯正在工作30地址指令CLKPCDEMWRF00lw10004lw0420408lw0830812lw1241216lw1651620I5更新目錄流水線概述流水線數(shù)據(jù)通路D級能否讀出W級寫入RF的值?流水線冒險(xiǎn)流水線性能分析2種CPU模型對比31程序員視角的指令執(zhí)行結(jié)果考察如下指令序列假設(shè)1:$1初值為7,lw執(zhí)行后$1值為8假設(shè)2:除lw外,其他指令均與$1無關(guān)從程序員視角,add與sub讀取$1時(shí),所讀取的結(jié)果均應(yīng)為8NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWD0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6
$1的初值為7
lw執(zhí)行后$1為8addI3I2lw32第1個(gè)
前的初始狀態(tài)1)PC為00,指向lw2)IM輸出指令lw3)各級流水寄存器均為空4)$1的值為7NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWD空空空空0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為800lw733CLKPCDEMW$1007第1個(gè)后1)PC自增變?yōu)?42)IM輸出指令I(lǐng)23)lw進(jìn)入D級NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWDlw空空空0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為804I2734CLKPCDEMW$110004lw72345第2個(gè)后1)PC變?yōu)?82)IM輸出指令I(lǐng)33)lw進(jìn)入E級,I2進(jìn)入DNPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWDI2lw空空0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為808I3735CLKPCDEMW$110004lw720408I2lw7345第3個(gè)后1)PC變?yōu)?22)IM輸出指令add3)lw進(jìn)入M級,I3進(jìn)入D由于lw進(jìn)入M后就開始讀取DM,因此DM的輸出值為8NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWDI3I2lw空0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為812add8736CLKPCDEMW$110004lw720408I2lw730812I3I2lw745第4個(gè)后1)PC變?yōu)?62)IM輸出指令sub3)lw進(jìn)入W級,add進(jìn)入D由于add進(jìn)入D后就開始讀取RF,因此RF輸出的$1值為7NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWDaddI3I2lw0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為816sub78737CLKPCDEMW$110004lw720408I2lw730812I3I2lw7412167@addI3I28@lw75第4個(gè)后,第5個(gè)前觀察RF內(nèi)部1)$1的D輸入為lw的回寫數(shù)據(jù),即82)由于沒來到,因此$1尚未被寫入,add讀出的$1仍然輸出7NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWDaddI3I2lw0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為816sub78寫入讀出7787lwadd38CLKPCDEMW$110004lw720408I2lw730812I3I2lw7412167@addI3I28@lw75CLKPCDEMW$110004lw720408I2lw730812I3I2lw7412167@addI3I28@lw7516208@sub7@addI3I28第5個(gè)后到來時(shí),3個(gè)行為同時(shí)發(fā)生:1)$1寫入82)add讀出的7寫入E3)sub進(jìn)入Dsub讀出的是正確的8NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWDsubaddI3I20lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為820I67寫入讀出X88839結(jié)論:多條指令同時(shí)讀寫同一個(gè)寄存器時(shí),會(huì)產(chǎn)生一致性問題出錯(cuò)原因:后發(fā)R操作在先發(fā)W操作之前完成解決問題的方法:轉(zhuǎn)發(fā)(在數(shù)據(jù)冒險(xiǎn)部分介紹)0lw$1,0(XX)4I28I312addXX,$1,XX16subXX,$1,XX20I6假設(shè)$1的初值為7假設(shè)lw執(zhí)行后$1為8NPCPC4IMADPCRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WEMWDadd空空lw修改RF設(shè)計(jì)判斷條件:寫入寄存器與讀出寄存器相同A3==A1或者A3==A2執(zhí)行操作:RD1/RD2輸出WD(而不是寄存器值)本質(zhì):內(nèi)部轉(zhuǎn)發(fā)問題:是否有遺漏條件?提示:雖然沒有RF的寫入操作,但是A3恰好等A1/A2!41R1R31013101310131&&ENENA3WDWEA1A2XCLK0101RD1RD2==A3A3&A3=A1WE增加WE由于后續(xù)流水線冒險(xiǎn)分析方法能以統(tǒng)一的方式來處理此類問題,因此本課程建議不采用該方法。目錄流水線概述流水線數(shù)據(jù)通路信息同步流水線控制流水線冒險(xiǎn)流水線性能分析2種CPU模型對比42示例:Beq錯(cuò)誤的計(jì)算地址第3個(gè)
后beq進(jìn)入M級,add進(jìn)入D級,PC變?yōu)?2NPC計(jì)算地址時(shí)會(huì)用到3種完全無關(guān)的信息beq的Zero、add的偏移、ori指令的PC4FNPCPC4IMADRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4WA3DA3EA3MA3WDEWbeqsubaddPC地址指令CLKPCDEMWRF00beq10004beq04sub20408subbeq08add30812addsubbeqMQ:PC4F的值是多少?PC4M0beq4sub8add12ori43確保同步:修正beq的數(shù)據(jù)通路出錯(cuò)原因:指令的多個(gè)相關(guān)信息沒有同步傳遞為了確保beq正確計(jì)算地址,必須做到2點(diǎn)1)beq的所有相關(guān)信息(包括16位偏移)必須同步傳遞2)必須使用同級的相關(guān)信息計(jì)算地址NPCPC4IMADRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WDEMWbeqsubaddPC15:00M0beq4sub8add12ori目錄流水線概述流水線數(shù)據(jù)通路性能流水線控制流水線冒險(xiǎn)流水線性能分析2種CPU模型對比45目錄流水線概述流水線數(shù)據(jù)通路流水線控制流水線冒險(xiǎn)流水線性能分析2種CPU模型對比46流水的主控制信號與寄存器值與編號類似,主控制信號也是指令的一部分,必須同步傳遞主控制信號產(chǎn)生方式與單周期完全相同NPCPC4IMADRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4MPC4WA3DA3EA3MA3WDEMWPCop,funct主控制器RFWrDRFWrERFWrMRFWrWDMWrDDMWrEDMWrMALUOpDALUOpE控制信號的額外含義單周期控制信號只是用于控制功能部件執(zhí)行正確的功能示例:RFWr有效意味著可以當(dāng)前指令需要寫RF流水線除了具有單周期的相同意義外,控制信號在各級寄存器中流水傳遞,還代表了指令執(zhí)行到哪個(gè)階段示例:RFWrW有效,表明load類、R型計(jì)算類、I型計(jì)算類等指令已經(jīng)進(jìn)入W級流水線寄存器了,即指令執(zhí)行到最后一個(gè)流水段了Q:為什么需要了解指令進(jìn)入到哪個(gè)階段了?已經(jīng)在流水線中的多條指令,彼此之間可能會(huì)發(fā)生沖突。為此,需要了解各條指令在流水線中的所處位置。48目錄流水線概述流水線數(shù)據(jù)通路流水線控制流水線冒險(xiǎn)流水線性能分析2種CPU模型對比49概述結(jié)構(gòu)冒險(xiǎn)需要的資源被占用數(shù)據(jù)冒險(xiǎn)指令之間存在數(shù)據(jù)依賴后繼指令需要等待前序指令執(zhí)行結(jié)束控制冒險(xiǎn)指令流的方向選擇依賴于前序指令執(zhí)行結(jié)果50目錄流水線概述流水線數(shù)據(jù)通路流水線控制流水線冒險(xiǎn)結(jié)構(gòu)冒險(xiǎn)流水線性能分析2種CPU模型對比51后繼指令需要的資源被前序指令占用,導(dǎo)致資源沖突第3個(gè)后/第4個(gè)前:PC驅(qū)動(dòng)IM以讀指令;M級lw驅(qū)動(dòng)DM以讀數(shù)據(jù)如果IM與DM不分離(即只有一個(gè)存儲(chǔ)器),則必然導(dǎo)致資源沖突為此,流水線要求數(shù)據(jù)和指令必須分離存儲(chǔ)這種結(jié)構(gòu)實(shí)際上對應(yīng)了分離的一級指令cache和一級數(shù)據(jù)cache(相關(guān)內(nèi)容參見后續(xù)存儲(chǔ)系統(tǒng))結(jié)構(gòu)冒險(xiǎn):取指令與訪存相對PC的地址偏移IMRFALUDM指令CLKPCDEMWRF0lw10004lw4add20408addlw8sub308
12subaddlw12or412
16orsubaddlw16and516
20andorsubaddlw后繼指令需要的資源被前序指令占用,導(dǎo)致資源沖突第4個(gè)后/第5個(gè)前:D級or驅(qū)動(dòng)RF要讀數(shù)據(jù);W級lw驅(qū)動(dòng)RF要寫數(shù)據(jù)RF設(shè)計(jì):讀端口與寫端口分離(當(dāng)前的設(shè)計(jì)方案)結(jié)論:RF不會(huì)成為瓶頸結(jié)構(gòu)冒險(xiǎn):讀寄存器與寫寄存器相對PC的地址偏移IMRFALUDM指令CLKPCDEMWRF0lw10004lw4add20408addlw8sub308
12subaddlw12or412
16orsubaddlw16and516
20andorsubaddlw目錄流水線概述流水線數(shù)據(jù)通路流水線控制流水線冒險(xiǎn)數(shù)據(jù)冒險(xiǎn)流水線性能分析2種CPU模型對比54基于寄存器的數(shù)據(jù)相關(guān)當(dāng)2條指令都讀寫同一個(gè)寄存器時(shí),這就產(chǎn)生了數(shù)據(jù)相關(guān)程序中各語句通過變量完成信息傳遞對變量的讀寫轉(zhuǎn)變?yōu)閷拇嫫鞯淖x寫讀寫對寄存器的影響讀(Read):不會(huì)改變寄存器的值寫(Write):會(huì)改變寄存器的值(破壞性操作)對于同一個(gè)寄存器,有4種讀寫組合:R-R,W-W,R-W,W-R字母先后代表讀寫的先后順序示例lw-sub:在$t0上是W-Radd-sub:在$t2上是W-Wlw$t0,0($t1)sub$t3,$t0,$t2and$t5,$t0,$t4or$t7,$t0,$t6add$t1,$t2,$t3lw$t0,0($t1)W:寫$t0add$t2,0($s0)W:寫$t2sub$t2,$t0,$t4R:讀$t0W:寫$t255流水線帶來的數(shù)據(jù)一致性問題程序員邏輯:后續(xù)指令必須獲取到前序指令的結(jié)果1)前序指令未執(zhí)行,后繼指令不執(zhí)行2)前序指令執(zhí)行結(jié)束,后繼指令才執(zhí)行單周期:數(shù)據(jù)通路每次只能執(zhí)行一條指令由于數(shù)據(jù)通路不能同時(shí)執(zhí)行多條指令,因此必然是前序指令全部執(zhí)行結(jié)束后才會(huì)執(zhí)行后繼指令CPU執(zhí)行邏輯與程序員邏輯完全一致流水線:數(shù)據(jù)通路同時(shí)執(zhí)行多條指令流水線產(chǎn)生一致性問題:后執(zhí)行的指令是否一定能獲取先執(zhí)行的指令的結(jié)果?56流水線執(zhí)行指令與程序正確性案例分析add-sub:sub第2周期時(shí)要讀取$1,但add在第5周期才完成回寫結(jié)果add-or:or第3周期時(shí)要讀取$1,但add在第5周期才完成回寫結(jié)果add-and:兩條指令在同一周期訪問$1(一個(gè)讀一個(gè)寫),and能否讀出正確結(jié)果?add-xor:add第5個(gè)
寫入結(jié)果,xor第5周期(第5個(gè)之后)讀取結(jié)果,因此執(zhí)行正確
?
57偏移IMRFALUDM指令CLKPCDEMWRF0add$1,$2,$310004add4sub$4,$1,$220408subadd8or$5,$1,$2308
12orsubadd12and$6,$1,$2412
16andorsubadd16xor$7,$1,$2516
20xorandorsubadd事實(shí)1:計(jì)算結(jié)果在回寫前已經(jīng)產(chǎn)生了新的計(jì)算結(jié)果:先出現(xiàn)在流水線寄存器,然后才會(huì)保存到RF示例:add進(jìn)入D級后計(jì)算結(jié)果需要4個(gè)周期寫入寄存器堆但2個(gè)周期后,計(jì)算結(jié)果已經(jīng)出現(xiàn)在M級了計(jì)算結(jié)果add1234地址指令0add$1,$2,$34sub$4,$1,$28or$5,$1,$212and$6,$1,$216xor$7,$1,$2ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器
指令存儲(chǔ)器寄存器堆PC58事實(shí)2:功能部件是寄存器值的最終使用者如何理解sub的正確性?示例:假設(shè)RF中的$1值為5,add的計(jì)算結(jié)果為4讀取寄存器值是手段,目的是服務(wù)于后續(xù)的使用當(dāng)sub進(jìn)入E后,只要ALU使用的是M級的結(jié)果而非E級的值,則正確性就能保證add計(jì)算結(jié)果sub地址指令0add$1,$2,$34sub$4,$1,$28or$5,$1,$212and$6,$1,$216xor$7,$1,$2ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器
指令存儲(chǔ)器寄存器堆PC54459從計(jì)算結(jié)果產(chǎn)生角度觀察1/3示例:周期1~add進(jìn)入流水線2個(gè)時(shí)鐘周期后,ALU的計(jì)算結(jié)果(4)將保存在M級寄存器(意味著add進(jìn)入M級寄存器)RF(讀)ALUDM地址指令CLKPCIMDEMWRF0add$1,$2,$310addadd4寫$122個(gè)周期后,$1的最新值將產(chǎn)生ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器指令存儲(chǔ)器寄存器堆PCadd周期34add周期15
假設(shè):$1的值為5,add的計(jì)算結(jié)果為460從功能部件使用寄存器值角度觀察2/3示例:周期2~add進(jìn)入E級經(jīng)過1個(gè)時(shí)鐘周期后,結(jié)果產(chǎn)生的時(shí)間減少1個(gè)周期RF(讀)ALUDM地址指令CLKPCIMDEMWRF0add$1,$2,$310addadd4sub寫$124sub$4,$1,$224subadd8or寫$11ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器指令存儲(chǔ)器寄存器堆PCadd61從功能部件使用寄存器值角度觀察3/3示例:周期2~sub進(jìn)入流水線當(dāng)sub進(jìn)入D級后,其將在下個(gè)周期(周期3)進(jìn)入E級從ALU角度,意味著再經(jīng)過1個(gè)周期就要用$1的值RF(讀)ALUDM地址指令CLKPCIMDEMWRF0add$1,$2,$310addadd4sub寫$124sub$4,$1,$224subsubadd8or讀$11寫$111個(gè)周期后:sub進(jìn)入E,ALU要用$1值A(chǔ)LU寄存器堆
數(shù)據(jù)存儲(chǔ)器指令存儲(chǔ)器寄存器堆PCsubadd62數(shù)據(jù)冒險(xiǎn)解決策略—轉(zhuǎn)發(fā)1/2轉(zhuǎn)發(fā)(或旁路):將尚未寫入RF但已經(jīng)暫存在流水線寄存器中的計(jì)算結(jié)果傳遞給相關(guān)功能部件(或流水線寄存器)的技術(shù)示例:M級向ALU的A輸入端的轉(zhuǎn)發(fā)這個(gè)轉(zhuǎn)發(fā)電路就能很好的解決add-sub間的數(shù)據(jù)冒險(xiǎn)轉(zhuǎn)發(fā)的2個(gè)基本要點(diǎn)將M級(后級)保存的計(jì)算結(jié)果向E級(前級)的ALU(功能單元)傳遞如果E級指令(sub)讀的寄存器與M級指令(add)寫的寄存器是同一寄存器時(shí),則選擇轉(zhuǎn)發(fā)的計(jì)算結(jié)果,否則選擇E級傳遞的寄存器值A(chǔ)LU寄存器堆
數(shù)據(jù)存儲(chǔ)器指令存儲(chǔ)器寄存器堆PCsubadd0163數(shù)據(jù)冒險(xiǎn)解決策略—轉(zhuǎn)發(fā)2/2在設(shè)計(jì)轉(zhuǎn)發(fā)時(shí),要考慮完備性示例:ALU的A輸入端ALU處于E級,因此M級和W級均可能保存有前序指令的計(jì)算結(jié)果只有將M級和W級均轉(zhuǎn)發(fā)到E級,才確保了相關(guān)組合指令的正確執(zhí)行M
E轉(zhuǎn)發(fā):能夠解決的相關(guān)例子W
E轉(zhuǎn)發(fā):能夠解決的相關(guān)例子ALU寄存器堆
數(shù)據(jù)存儲(chǔ)器指令存儲(chǔ)器寄存器堆PCadd$1,$2,$3XXXor$5,$1,$2add$1,$2,$3sub
$4,$1,$664Load導(dǎo)致的數(shù)據(jù)冒險(xiǎn)周期1:lw進(jìn)入流水線3個(gè)周期后,W級將保存lw從DM中讀出的數(shù)據(jù)RF(讀)ALUDM地址指令CLKPCIMDEMWRF0lw$t0,0($t1)10lwlw4sub寫t034sub$t3,$t0,$t228and$t5,$t0,$t4312or$t7,$t0,$t6416add$t1,$t2,$t3565Load導(dǎo)致的數(shù)據(jù)冒險(xiǎn)周期2:sub進(jìn)入流水線sub再過1個(gè)周期到達(dá)E時(shí),ALU要用$t0而lw還需要2個(gè)周期才能產(chǎn)生結(jié)果結(jié)論:新值產(chǎn)生太晚!除暫停sub,無任何辦法能消除這個(gè)沖突RF(讀)ALUDM地址指令CLKPCIMDEMWRF0lw$t0,0($t1)10lwlw4sub寫t034sub$t3,$t0,$t224subsublw8and讀t01寫t028and$t5,$t0,$t4312or$t7,$t0,$t6416add$t1,$t2,$t3566Load導(dǎo)致的數(shù)據(jù)冒險(xiǎn)周期3:插入NOP所謂的NOP,就是清空E級,相當(dāng)于插入空拍注意,除了清空E級,還需要凍結(jié)PC(即PC必須保持不變)由于插入了NOP,因此沖突解除;轉(zhuǎn)發(fā)機(jī)制將在周期4發(fā)揮作用RF(讀)ALUDM地址指令CLKPCIMDEMWRF0lw$t0,0($t1)10lwlw4sub寫t034sub$t3,$t0,$t224subsublw8and讀t01寫t028and$t5,$t0,$t438andsubnoplw8and讀t01寫t0112or$t7,$t0,$t6416add$t1,$t2,$t3567Load導(dǎo)致的數(shù)據(jù)冒險(xiǎn)周期4-1:sub到達(dá)Elw:從DM中讀出的數(shù)據(jù)($t0新值)被寫入Wsub:選擇來自W級轉(zhuǎn)發(fā)的計(jì)算結(jié)果RF(讀)ALUDM地址指令CLKPCIMDEMWRF0lw$t0,0($t1)10lwlw4sub寫t034sub$t3,$t0,$t224subsublw8and讀t01寫t028and$t5,$t0,$t438andsubnoplw8and讀t01寫t0112or$t7,$t0,$t648subnoplw12讀t00新t0016add$t1,$t2,$t35計(jì)算結(jié)果68Load導(dǎo)致的數(shù)據(jù)冒險(xiǎn)周期4-2:and進(jìn)入流水線lw-xxx-and同樣需要轉(zhuǎn)發(fā),用W級計(jì)算結(jié)果替代and讀出的$1注意:這個(gè)轉(zhuǎn)發(fā)的目的地不是功能單元,而是E級流水線寄存器RF(讀)ALUDM地址指令CLKPCIMDEMWRF0lw$t0,0($t1)10lwlw4sub寫t034sub$t3,$t0,$t224subsublw8and讀t01寫t028and$t5,$t0,$t438andsubnoplw8and讀t01寫t0112or$t7,$t0,$t648andandsubnoplw12or讀t01讀t00新t0016add$t1,$t2,$t35計(jì)算結(jié)果69Load導(dǎo)致的數(shù)據(jù)冒險(xiǎn)周期5:or進(jìn)入流水線由于流水線中沒有寫$t0的指令了,這意味著RF中的$t0是最新值or指令可以安全的從RF中讀取$t0RF(讀)ALUDM地址指令CLKPCIMDEMWRF0lw$t0,0($t1)10lwlw4sub寫t034sub$t3,$t0,$t224subsublw8and讀t01寫t028and$t5,$t0,$t438andsubnoplw8and讀t01寫t0112or$t7,$t0,$t648andandsubnoplw12or讀t01讀t00寫t0016add$t1,$t2,$t3512ororandsubnop更新t016add讀t0170詳細(xì)的轉(zhuǎn)發(fā)電路及其控制最新結(jié)果:可能出現(xiàn)在M和W使用結(jié)果:D、E、M各級可能的位置D級:RS寄存器值、RT寄存器值E級:ALU的A、B;RT寄存器值M級:DM的WDRFA1A2A3WDRD1RD2ALUDMARDWDABDEMWM級ALU計(jì)算結(jié)果W級回寫結(jié)果D級被轉(zhuǎn)發(fā)RS寄存器值RT寄存器值RS寄存器值RT寄存器值E級被轉(zhuǎn)發(fā)ALU的AALU的BRT寄存器值A(chǔ)LU的AALU的BRT寄存器值M級被轉(zhuǎn)發(fā)DM的WD71冒險(xiǎn)控制器基本功能:檢測和分析各類冒險(xiǎn),并控制流水線的執(zhí)行先討論應(yīng)對數(shù)據(jù)冒險(xiǎn)的基本控制方法RsRtRdRFA1A2A3WDRD1RD2ALUDMARDWDABDstW冒險(xiǎn)控制器DstDRsERtEDstERtMDstM流水線控制信號...72數(shù)據(jù)冒險(xiǎn)的檢測與控制基本策略RFA1A2A3WDRD1RD2ALUDMARDWDABDEMWD級分析與E/M/W的相關(guān)性。若轉(zhuǎn)發(fā)無法解決則暫停,直至轉(zhuǎn)發(fā)可以解決相關(guān)E級E級已無暫停問題,只需要分析與M/W的相關(guān)性,決定是否轉(zhuǎn)發(fā)即可M級M級已無暫停問題,只需要分析與W的相關(guān)性,決定是否轉(zhuǎn)發(fā)即可73數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)1/10對于D級指令來說,哪些前序指令會(huì)導(dǎo)致暫停?類別1:計(jì)算類指令(如add,addi)如果由E級指令產(chǎn)生計(jì)算結(jié)果,則通道
可以提供轉(zhuǎn)發(fā)如果由M級指令產(chǎn)生計(jì)算結(jié)果,則通道可以提供轉(zhuǎn)發(fā)如果由W級指令產(chǎn)生計(jì)算結(jié)果,則通道3可以提供轉(zhuǎn)發(fā)RFA1A2A3WDRD1RD2ALUDMARDWDABDEMW
74數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)2/10對于D級指令來說,哪些前序指令會(huì)導(dǎo)致暫停?類別2:Load指令(如lw/lh/lhu/lb/lbu)Load在E級:當(dāng)D級指令進(jìn)入E時(shí),Load進(jìn)入M,結(jié)果尚未產(chǎn)生,只能暫停RFA1A2A3WDRD1RD2ALUDMARDWDABDLoadMW暫停1個(gè)周期后,轉(zhuǎn)發(fā)就可以發(fā)揮作用了75數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)3/10對于D級指令來說,哪些前序指令會(huì)導(dǎo)致暫停?類別2:Load指令(如lw/lh/lhu/lb/lbu)Load在W級:由于結(jié)果已經(jīng)在W級了,因此通道
轉(zhuǎn)發(fā)Load在M級:當(dāng)D級指令進(jìn)入E時(shí),Load的結(jié)果存入W,通道
轉(zhuǎn)發(fā)Load在E級:暫停1個(gè)周期RFA1A2A3WDRD1RD2ALUDMARDWDABD
XMWELoad3Load2Load176數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)4/10Load導(dǎo)致的暫停有哪些條件?條件1:D級為要讀寄存器的指令條件2:E級為load類指令條件3:讀的寄存器==寫的寄存器RFA1A2A3WDRD1RD2ALUDMARDWDABDLoadMWQ1:哪些指令讀寄存器?Q2:哪些指令是load類指令?77數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)5/10暫停的檢測:表達(dá)式RFA1A2A3WDRD1RD2ALUDMARDWDABDLoadMWStall=(add+sub+…+lw)&lwE&(A1==A3E)寄存器編號相同E級為Load類D級會(huì)讀rs寄存器的指令78數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)6/10暫停的執(zhí)行動(dòng)作
凍結(jié)D:sub停留在D,不得前進(jìn)
清除E:E級整體清0,等價(jià)于插入NOP
禁止PC:防止PC繼續(xù)計(jì)數(shù),PC應(yīng)保持為PC+479RFA1A2A3WDRD1RD2ALUDMARDWDABsubLoadMWIMADPCNPC地址指令0lw
$t0,0($t1)4sub$t3,$t0,$t28and$t5,$t0,$t412or$t7,$t0,$t616add$t1,$t2,$t3and812數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)7/10暫停的執(zhí)行動(dòng)作
凍結(jié)D:sub停留在D,不得前進(jìn)
清除E:E級整體清0,等價(jià)于插入NOP
禁止PC:防止PC繼續(xù)計(jì)數(shù),PC應(yīng)保持為PC+480RFA1A2A3WDRD1RD2ALUDMARDWDABMWIMADPCNPCEN寄存器:使能功能D.en數(shù)據(jù)通路將D寄存器修改為使能型寄存器控制器增加D寄存器使能信號D.en數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)8/10暫停的執(zhí)行動(dòng)作
凍結(jié)D:sub停留在D,不得前進(jìn)
清除E:E級整體清0,等價(jià)于插入NOP
禁止PC:防止PC繼續(xù)計(jì)數(shù),PC應(yīng)保持為PC+481RFA1A2A3WDRD1RD2ALUDMARDWDABMWIMADPCNPCCLR寄存器:清除功能E.clr數(shù)據(jù)通路將E寄存器修改為復(fù)位型寄存器控制器增加E寄存器清除信號E.clr數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)9/10暫停的執(zhí)行動(dòng)作
凍結(jié)D:sub停留在D,不得前進(jìn)
清除E:E級整體清0,等價(jià)于插入NOP
禁止PC:防止PC繼續(xù)計(jì)數(shù),PC應(yīng)保持為PC+482RFA1A2A3WDRD1RD2ALUDMARDWDABMWIMADPCNPCEN寄存器:清除功能PC.en數(shù)據(jù)通路將PC修改為使能型寄存器控制器增加PC使能信號PC.en數(shù)據(jù)冒險(xiǎn)的檢測與控制:暫停(以RS為例)10/10暫停的執(zhí)行動(dòng)作:控制信號表達(dá)式
凍結(jié)D:sub停留在D,不得前進(jìn)
清除E:E級整體清0,等價(jià)于插入NOP
禁止PC:防止PC繼續(xù)計(jì)數(shù),PC應(yīng)保持為PC+483RFA1A2A3WDRD1RD2ALUDMARDWDABMWPC.en=!StallD.en=!StallE.clr=StallDEIMADPCNPC編譯優(yōu)化編譯優(yōu)化:重排序指令序列從而避免load類相關(guān)C代碼:A=B+E;C=B+F;#優(yōu)化前:lw $t1,0($t0)lw $t2,4($t0)add $t3,$t1,$t2sw $t3,12($t0)lw $t4,8($t0)add $t5,$t1,$t4sw $t5,16($t0)#優(yōu)化后:lw $t1,0($t0)lw $t2,4($t0)lw $t4,8($t0)add $t3,$t1,$t2sw $t3,12($t0)add $t5,$t1,$t4sw $t5,16($t0)Stall!Stall!13周期11周期84編譯優(yōu)化如果load的后繼指令與load相關(guān),則需要暫停1個(gè)周期這個(gè)暫停周期被稱為加載延遲槽(loaddelayslot)如果將與load無關(guān)的指令放置在load類指令后,則就不需要暫停了這就是編譯優(yōu)化調(diào)度的指令,不僅要考慮load無關(guān)性,還需要確保程序員視角的正確性85目錄流水線概述流水線數(shù)據(jù)通路流水線控制流水線冒險(xiǎn)控制冒險(xiǎn)流水線性能分析2種CPU模型對比86控制冒險(xiǎn)分支指令(beq,bne)影響控制流順序取指還是轉(zhuǎn)移取指取決于ALU的比較結(jié)果在比較結(jié)果產(chǎn)生以前,D級取指無法確保是正確的簡單方案:暫停分支指令直至產(chǎn)生正確的PC值新的問題:需要等待多長時(shí)間?87B指令冒險(xiǎn)造成的停頓代價(jià)簡單暫停導(dǎo)致3個(gè)NOPZero、PC4、偏移均在M級,故PC在clk4才能加載正確值D級在clk5才能存入轉(zhuǎn)移指令(即lw)NPCPC4IMADRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4WA3DA3EA3MA3WDEMWPCRF(讀)ALUDM地址指令CLKPCIMDEMWRF0beq$1,$3,24104beqandbeq4and$12,$2,$5244andandnop(1)beq8or$13,$6,$2344andandnop(2)nop(1)beq12add$14,$2,$24428andlwnop(3)nop(2)nop(1)52832lwXXXlwnop(3)nop(2)nop(1)28lw$4,100($7)PC4Mbeq15:00MB指令冒險(xiǎn)造成的停頓代價(jià)簡單暫停導(dǎo)致3個(gè)NOPZero、PC4、偏移均在M級,故PC在clk4才能加載正確值D級在clk5才能存入轉(zhuǎn)移指令(即lw)NPCPC4IMADRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4WA3DA3EA3MA3WDEMWPCRF(讀)ALUDM地址指令CLKPCIMDEMWRF0beq$1,$3,24104beqandbeq4and$12,$2,$5244andandnop(1)beq8or$13,$6,$2344andandnop(2)nop(1)beq12add$14,$2,$24428andlwnop(3)nop(2)nop(1)52832lwXXXlwnop(3)nop(2)nop(1)28lw$4,100($7)PC4Mbeq15:00MCLRClr表達(dá)式?方案1:假定分支不發(fā)生措施1:即使在D級發(fā)現(xiàn)是B指令也不停頓措施2:然后根據(jù)B指令結(jié)果,決定是否清除3條后繼指令清除,即使得and/or/add不能前進(jìn)NPCPC4IMADRF(R)RD1RD2EXT01DMARDWDALUZeroAB20:1625:21012012PC15:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm26A1A2A3WDRF(W)RD1RD2A1A2A3WDPC4FPC4DPC4EPC4WA3DA3EA3MA3WDEMWPCPC4Mbeq15:00MCLRClr表達(dá)式?地址指令0beq$1,$3,244and$12,$2,$58or$13,$6,$212add$14,$2,$228lw$4,50($7)andoradd+12完整流水?dāng)?shù)據(jù)通路1)結(jié)果在W級:向D、E、M的各處進(jìn)行轉(zhuǎn)發(fā)2)結(jié)果在M級:向D、E的各處進(jìn)行轉(zhuǎn)發(fā)NPCPC4IMADPCRF(R)RD1RD2ALUZeroEXT01DMARDWDAB20:1625:21012012PC01201215:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm2601201201A3A1A2A3WDRF(W)RD1RD2A1A2A3WD完整版數(shù)據(jù)通路:beq前移Beq前移NPCPC4IMADPCRF(R)A1A2A3WDRD1RD2ALUZeroEXT01DMARDWDAB20:1625:21012012PCRF(W)A1A2A3WDRD1RD2=01201215:0015:1120:161F25:0015:00NPCPC4BrImm16RAImm2601201201A3方案2:縮短分支延遲1/3在D級放置比較器,盡快得到B指令結(jié)果B指令結(jié)果可以提前2個(gè)clock得到B指令后繼可能被廢棄的指令減少為1條當(dāng)需要轉(zhuǎn)移時(shí),清除D級即可RF(讀)ALUDM地址指令CLKPCIMDEMWRF0beq$1,$3,24104
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西水利職業(yè)技術(shù)學(xué)院《品牌策劃與數(shù)字推廣》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年矽鋼硅鋼沖壓項(xiàng)目資金申請報(bào)告代可行性研究報(bào)告
- (高清版)DG∕TJ 08-2023-2020 共建共享通信建筑設(shè)計(jì)標(biāo)準(zhǔn)
- 小學(xué)健康教育實(shí)施教案
- 2025年四川遂寧市安居財(cái)信會(huì)計(jì)服務(wù)有限責(zé)任公司招聘筆試參考題庫含答案解析
- 2025年江蘇鹽城市四通現(xiàn)代農(nóng)業(yè)綜合開發(fā)有限公司招聘筆試參考題庫含答案解析
- 2025年山東臨沂市沂水城市建設(shè)投資集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 貿(mào)易公司稅務(wù)培訓(xùn)
- 浙江省麗水市2023ˉ2024學(xué)年高二語文下學(xué)期5月期中聯(lián)考試題試卷【含答案】
- 高一分科教育指導(dǎo)體系
- 家庭與生活環(huán)境職業(yè)生涯規(guī)劃
- 居家養(yǎng)老上門服務(wù)投標(biāo)方案(技術(shù)方案)
- 005獨(dú)立避雷針基礎(chǔ)施工方案
- 壓裂工程技術(shù)及安全環(huán)保措施
- 家長會(huì)課件:六年級期中家長會(huì)
- 《ABO血型鑒定》課件
- 湖南工商大學(xué)學(xué)位英語考試歷年真題
- 英國電影概況
- 幕墻工程施工講解
- (整理)中國民族鄉(xiāng)鎮(zhèn)一覽表
- 重癥醫(yī)學(xué)科醫(yī)療質(zhì)量控制指標(biāo)上報(bào)表
評論
0/150
提交評論