【正文】
Regs[MEM/[rt]] ← MEM/ 中國科學(xué)技術(shù)大學(xué) 簡化的 Pipelining I n s t r. O r d e r Time (clock cycles) Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 6 Cycle 7 Cycle 5 。 Regs[MEM/[rt]] ← MEM/。 Regs[MEM/[rd]] ← MEM/。 or Mem[EX/] ← EX/。 187。 – Load or store instruction 187。 MEM/ ←EX/ 187。 EX/ ← ID/ + ( ID/ 2) 187。 EX/ ← ID/ + ID/ 187。 中國科學(xué)技術(shù)大學(xué) – Load or store instruction 187。 or 187。 187。 ? EX – ALU instruction 187。 ID/ ← IF/。 ID/ ← Regs[IF/[rt]]。 EX/) {EX/} else {PC+4})。 由于存在相關(guān)問題,會導(dǎo)致流水線停頓 ? 流水線正常工作的基本條件 – 增加寄存器文件保存當(dāng)前段傳送到下一段的數(shù)據(jù)和控制信息 – 存儲器帶寬是非流水的 n倍 中國科學(xué)技術(shù)大學(xué) 在新的 Datapath下各段的操作 ? IF – IF/ ←Mem[PC]。 流水段所需時間不均衡將降低加速比 187。 中國科學(xué)技術(shù)大學(xué) Review lecture ? 流水線技術(shù)要點 – 多個任務(wù)重疊(并發(fā) /并行)執(zhí)行,但使用不同的資源 – 流水線技術(shù)提高整個系統(tǒng)的吞吐率,不能縮短單個任務(wù)的執(zhí)行時間 – 其潛在的加速比=流水線的級數(shù) – 影響流水線性能的因素 187。流水線的性價比可以定義為 PCR = Throughput/(c+k*h), 其中 Throughput = 1/t, t為 t_{latch}+T/k, t_{latch}為鎖存器的延遲時間, T為在非流水線的機器上采用順序執(zhí)行方式完成一個任務(wù)所花費的總時間。 Branch操作在 EX段確定分支方向 3個 cycles的延遲 187。 Repeat Interval – 問題:結(jié)構(gòu)相關(guān)(增多);數(shù)據(jù)相關(guān)、控制相關(guān)引起的 stall增多;有新的沖突源產(chǎn)生;定向路徑增多; 異常處理復(fù)雜 – MIPS R4000 8級流水線 187。 由于第 n條指令已執(zhí)行完,希望中斷返回后從第 n+1條指令開始執(zhí)行,如果我們保存所有的流水線的 PC值,那么軟件可以仿真Instruction1 到 Instruction n1 的執(zhí)行 ? 暫停發(fā)射,直到確定先前的指令都可無異常的完成,再發(fā)射下面的指令。 Instruction 2, instruction 3, ….instruction n 1 未執(zhí)行完的指令 187。 4種方法 ? 以非精確方式處理,用軟件來修正 – 為軟件修正保存足夠的狀態(tài) – 讓軟件仿真尚未執(zhí)行完的指令的執(zhí)行 – 例如 187。 盡快確認 187。 – 當(dāng)指令運行時間較長時, Buffer區(qū)較大 – Future file (Power PC620 MIPS R10000) 187。 中國科學(xué)技術(shù)大學(xué) 精確中斷與長流水線 ? 例如 DIVF F0,F2,F4 ADDF F10,F10,F8 SUBF F12,F12,F14 ? ADDF 和 SUBF都在 DIVF前完成 ? 如果 DIVF導(dǎo)致異常,會如何? – 非精確中斷 ? Ideas??? 中國科學(xué)技術(shù)大學(xué) 處理中斷 4種可能的辦法 ? 方法 1:忽略這種問題,當(dāng)非精確處理 – 原來的 superputer的方法 – 但現(xiàn)代計算機對 IEEE 浮點標(biāo)準(zhǔn)的異常處理,虛擬存儲的異常處理要求必須是精確中斷。 仍然使用上述待寫寄存器列表 187。 列表所有待寫的目的寄存器 187。 循環(huán)間隔檢測 187。 ? 精確中斷對整數(shù)流水線而言,不是太難實現(xiàn) – 指令執(zhí)行的中途改變機器的狀態(tài) – 例如 IA32 的自動增量尋址模式 中國科學(xué)技術(shù)大學(xué) DLX (MIPS)中的異常 ? IF – page fault, misaligned address, memory protection violation ? ID – undefined or illegal opcode ? EX – arithmetic exception ? MEM – page fault, misaligned address, memory protection violation ? WB – none 中國科學(xué)技術(shù)大學(xué) DLX (MIPS)中多周期操作的處理 ? 問題 – 浮點操作在 1~ 2個 cycles完成是不現(xiàn)實的,一般要花費較長時間 – 在 DLX(MIPS)中如何處理 ? 在 1到 2個 cycles時間內(nèi)完成的處理方法 – 采用較慢的時鐘源,或 – 在 FP部件中延遲其 EX段 ? 現(xiàn)假設(shè) FP指令與整數(shù)指令采用相同的流水線,那么 – EX 段需要循環(huán)多次來完成 FP操作,循環(huán)次數(shù)取決于操作類型 – 有多個 FP功能部件,如果發(fā)射出的指令導(dǎo)致結(jié)構(gòu)或數(shù)據(jù)相關(guān),需暫停 中國科學(xué)技術(shù)大學(xué) 對 DLX(MIPS)的擴充 四個功能部件 ? Integer 部件處理: Loads, Store, Integer ALU操作和Branch ? FP/Integer 乘法部件:處理浮點數(shù)和整數(shù)乘法 ? FP加法器:處理 FP加,減和類型轉(zhuǎn)換 ? FP/Integer除法部件:處理浮點數(shù)和整數(shù)除法 ? 這些功能部件未流水化 中國科學(xué)技術(shù)大學(xué) 擴展的 DLX(MIPS)流水線 中國科學(xué)技術(shù)大學(xué) Latency amp。 PC 或 PC + 1 – 調(diào)用 OS處理異常 中國科學(xué)技術(shù)大學(xué) ? 考慮延遲轉(zhuǎn)移時,假設(shè)有兩個延遲槽的分支 I Branch Instr1 I+1 Delay instr1 I+2 Delay Instr2 I+3 inst I+4 inst ? 假設(shè) branch指令是好的 ? 第 1個延遲指令引起缺頁中斷 ? 第 2條指令封鎖 ? 異常處理后,缺省的恢復(fù)點是第一條延遲指令 ? 不會有 Branch指令 ? 因此需要保存的 PC值不止一個,根據(jù)具體情況進行恢復(fù) 中國科學(xué)技術(shù)大學(xué) 精確中斷與非精確中斷 ? 精確中斷 – 如果流水線可以控制使得引起異常的指令前序指令都執(zhí)行完,故障后的指令可以重新執(zhí)行,則稱該流水線支持精確中斷 – 按照指令的邏輯序處理異常 – 理想情況,引起故障的指令沒有改變機器的狀態(tài) – 要正確的處理這類異常請求,必須保證故障指令不產(chǎn)生副作用 ? 在有些機器上,浮點數(shù)異常 – 流水線段數(shù)多,在發(fā)現(xiàn)故障前,故障點后的指令就已經(jīng)寫了結(jié)果,在這種情況下,必須有辦法處理。預(yù)測分支失敗 187。凍結(jié)或排空流水線 187。 硬件:定向技術(shù)( forwarding) 187。 中國科學(xué)技術(shù)大學(xué) 分 支 失 敗 分支指令 i IF ID EX MEM WB 延遲槽指令 i+1 IF idle idle idle idle 指令 i+2 IF ID EX MEM WB 指令 i+3 IF ID EX MEM WB 指令 i+4 IF ID EX MEM WB 分 支 成 功 分支指令 i IF ID EX MEM WB 延遲槽指令 i+1 IF ID EX MEM WB 分支目標(biāo)指令 j IF ID EX MEM WB 分支目標(biāo)指令 j+1 IF ID EX MEM WB 分支目標(biāo)指令 j+2 IF ID EX MEM WB 預(yù)測分支成功的情況下,分支取消機制的執(zhí)行情況 分支取消機制示意 中國科學(xué)技術(shù)大學(xué) 中國科學(xué)技術(shù)大學(xué) 評估減少分支策略的效果 Scheduling Branch CPI speedup v. speedup v. scheme penalty unpipelined stall Stall pipeline 3 Predict taken 1 Predict not taken 1 Delayed branch = 1 + 1*14%*100% = 1+1*14%*65% = 1+ *14% Conditional amp。 –編譯器預(yù)測分支轉(zhuǎn)移方向的能力。 分 支 成 功 分支指令 i IF ID EX MEM WB 延遲槽指令 i+1 IF ID EX MEM WB 分支目標(biāo)指令 j IF ID EX MEM WB 分支目標(biāo)指令 j+1 IF ID EX MEM WB 分支目標(biāo)指令 j+2 IF ID EX MEM WB 具有一個分支延遲槽的流水線的執(zhí)行過程 中國科學(xué)技術(shù)大學(xué) 66 中國科學(xué)技術(shù)大學(xué) 延遲轉(zhuǎn)移 ? 從何處選擇指令來填充延遲槽? – 分支指令之前的指令:最好 – 從分支目標(biāo)地址處取 : 在分支成功可能性大時,這種策略較好 – 從分支失敗處調(diào)度:僅在分支失敗時 ? 編譯器可以有效的調(diào)度一個延遲槽 – 如果提供取消分支時, 編譯器可以調(diào)度更多的指令填入延遲槽 調(diào)度前和調(diào)度后的代碼 (a ) 從前調(diào)度 (b ) 從目標(biāo)處調(diào)度 (c ) 從失敗處調(diào)度 延遲槽 延遲槽 延遲槽 D A D D R1 ,R2 ,R3 D SUB R4 ,R5 ,R6 if R2 = 0 t h e n if R1 = 0 t h e n if R1 = 0 t h e n if R2 = 0 t h e n D A D D R1 ,R2 ,R3 D A D D R1 ,R2 ,R3 D A D D R1 ,R2 ,R3 if R1 = 0 t h e n if R 1 = 0 t h e n D SUB R4 ,R5 ,R6 D SUB R4 ,R5 ,R6 D A D D R1 ,R2 ,R3 D A D D R1 ,R2 ,R3 D SUB R4 ,R5 ,R6 D SUB R4 ,R5 ,R6 ? 中國科學(xué)技術(shù)大學(xué) 三種方法的要求及效果 調(diào) 度 策 略 對調(diào)度的要求 什么情況下起作用 從 前 調(diào) 度 從目標(biāo)處調(diào)度 從失敗處調(diào)度 必須保證在分支失敗時執(zhí)行被調(diào)度 的指令不會導(dǎo)致錯誤。把延遲分支看成是由原來的分支指令和若干個延遲槽構(gòu)成,不管分支是否成功,都要按順序執(zhí)行延遲槽中的指令。 – 平均 53% DLX ( MIPS)分支為分支成功 – DLX( MIPS)分支目標(biāo)地址在 ID段才能計算出目標(biāo)地址 187。 . BNEZ, BEQZ on DLX 使得 CC可以在 ID段確定 ? 軟件(通過編譯器)的方法: – 調(diào)度一些指令放入分支的延遲槽中 – 預(yù)測的方法:統(tǒng)計分支成功和失敗的情況,提高預(yù)測精度 中國科學(xué)技術(shù)大學(xué) 新的 DLX (MIPS)數(shù)據(jù)通路 中國科學(xué)技術(shù)大學(xué)