【文章內(nèi)容簡介】
for a = b + c。 d = e – f。 assuming a, b, c, d ,e, and f in memory. Slow code: LW Rb,b LW Rc,c ADD Ra,Rb,Rc SW a,Ra LW Re,e LW Rf,f SUB Rd,Re,Rf SW d,Rd 采用軟件方法避免數(shù)據(jù)相關 Fast code: LW Rb,b LW Rc,c LW Re,e ADD Ra,Rb,Rc LW Rf,f SW a,Ra SUB Rd,Re,Rf SW d,Rd 控制沖突 ? 執(zhí)行分支指令的結果有兩種 – 分支成功: PC值改變?yōu)榉种мD(zhuǎn)移的目標地址。 在條件判定和轉(zhuǎn)移地址計算都完成后,才改變 PC值。 – 不成功或者失?。?PC的值保持正常遞增,指向順序的下一條指令。 ? 分支需要解決兩個問題 – 分支目標地址 (轉(zhuǎn)移成功意謂著 PC值不是 PC+4) – CC是否有效 , 這兩點在 DLX(MIPS)中都在流水線的靠后段中確定 ? 處理分支指令 最簡單的方法: “ 凍結 ” 或者 “ 排空 ” 流水線 。 優(yōu)點: 簡單。 中國科學技術大學 中國科學技術大學 回顧 DLX (MIPS)數(shù)據(jù)通路 分支指令 IF ID EX MEM WB 分支目標指令 IF stall stall IF ID EX MEM WB 分支目標指令 +1 IF ID EX MEM WB 分支目標指令 +2 IF ID EX MEM 分支目標指令 +3 IF ID EX 分支指令 IF ID EX MEM WB 分支后繼指令 IF stall stall IF ID EX MEM WB 分支后繼指令 +1 IF ID EX MEM WB 分支后繼指令 +2 IF ID EX MEM 分支后繼指令 +3 IF ID EX 簡單處理分支指令:分支成功的情況 簡單處理分支指令:分支失敗的情況 中國科學技術大學 中國科學技術大學 減少分支延時的方法 ? 硬件的方法 – 修改數(shù)據(jù)通路:使得目標地址和分支條件盡早確定,其中之一盡早確定是沒有用的 187。 判斷是否為 0可以在 ID段確定 187。 使用另一個加法器計算 ? 可以在 ID段計算 BTA(分支目標地址 ),即在 ID段形成下一條指令地址,兩種可能(BTA, PC+4),選擇哪一個取決于 ID段確定的 CC 187。 必要時使用互鎖機制來插入 Stall? – 設計合適的 ISA 187。 . BNEZ, BEQZ on DLX 使得 CC可以在 ID段確定 ? 軟件(通過編譯器)的方法: – 調(diào)度一些指令放入分支的延遲槽中 – 預測的方法:統(tǒng)計分支成功和失敗的情況,提高預測精度 中國科學技術大學 新的 DLX (MIPS)數(shù)據(jù)通路 中國科學技術大學 改進后流水線的分支操作 中國科學技術大學 四種可能的解決控制相關的方法 1: Stall 直到分支方向確定 2: 預測分支失敗 – 直接執(zhí)行后繼指令 – 如果分支實際情況為分支成功,則撤銷流水線中的指令對流水線狀態(tài)的更新 – DLX( MIPS)分支指令平均 47%為分支失敗 要保證: 分支結果出來之前不會改變處理機的狀態(tài),以便一旦猜錯時,處理機能夠回退到原先的狀態(tài)。 3: 預測分支成功 前提: 先知道分支目標地址,后知道分支是否 成功。 – 平均 53% DLX ( MIPS)分支為分支成功 – DLX( MIPS)分支目標地址在 ID段才能計算出目標地址 187。 DLX( MIPS) 還是有 1個 cycle 的分支延遲 中國科學技術大學 延遲轉(zhuǎn)移 4: 延遲轉(zhuǎn)移 主要思想: 從邏輯上 “ 延長 ” 分支指令的執(zhí)行時間。把延遲分支看成是由原來的分支指令和若干個延遲槽構成,不管分支是否成功,都要按順序執(zhí)行延遲槽中的指令。 – 定義分支發(fā)生在一系列指令之后 branch instruction sequential successor1 sequential successor2 ........ sequential successorn branch target if taken – 5級流水只需要一個延遲槽就可以確定目標地址和確定條件 – DLX 使用這種方式 Branch delay of length n 分 支 失 敗 分支指令 i IF ID EX MEM WB 延遲槽指令 i+1 IF ID EX MEM WB 指令 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 分支目標指令 j IF ID EX MEM WB 分支目標指令 j+1 IF ID EX MEM WB 分支目標指令 j+2 IF ID EX MEM WB 具有一個分支延遲槽的流水線的執(zhí)行過程 中國科學技術大學 66 中國科學技術大學 延遲轉(zhuǎn)移 ? 從何處選擇指令來填充延遲槽? – 分支指令之前的指令:最好 – 從分支目標地址處取 : 在分支成功可能性大時,這種策略較好 – 從分支失敗處調(diào)度:僅在分支失敗時 ? 編譯器可以有效的調(diào)度一個延遲槽 – 如果提供取消分支時, 編譯器可以調(diào)度更多的指令填入延遲槽 調(diào)度前和調(diào)度后的代碼 (a ) 從前調(diào)度 (b ) 從目標處調(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 ? 中國科學技術大學 三種方法的要求及效果 調(diào) 度 策 略 對調(diào)度的要求 什么情況下起作用 從 前 調(diào) 度 從目標處調(diào)度 從失敗處調(diào)度 必須保證在分支失敗時執(zhí)行被調(diào)度 的指令不會導致錯誤。有可能需要 復制指令 被調(diào)度的指令必須與分支無關 必須保證在分支成功時執(zhí)行被調(diào)度 的指令不會導致錯誤 任何情況 分支成功時 (但由于復制指令,有 可能會增大程序空間 ) 分支失敗時 中國科學技術大學 分支取消機制 ? 分支延遲受到兩個方面的限制: –可以被放入延遲槽中的指令要滿足一定的條件。 –編譯器預測分支轉(zhuǎn)移方向的能力。 ? 進一步改進:分支取消機制 –當分支的實際執(zhí)行方向和事先所預測的一樣時執(zhí)行分支延遲槽中的指令,否則就將分支延遲槽中的指令轉(zhuǎn)化成一個空操作。 中國科學技術大學 分 支 失 敗 分支指令 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 分支目標指令 j IF ID EX MEM WB 分支目標指令 j+1 IF ID EX MEM WB 分支目標指令 j+2 IF ID EX MEM WB 預測分支成功的情況下,分支取消機制的執(zhí)行情況 分支取消機制示意 中國科學技術大學 中國科學技術大學 評估減少分支策略的效果 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。 Unconditional = 14%, 65% change PC P i p e l i n e s p e ed u p = P i p e l i n e d ep t h1 + B r a n c h f r e q u en cy ? B r a n c h p en al t y中國科學技術大學 03/08Review:流水線性能分析 流水線技術應用的難度何在 ? :相關問題 相關的類型: 結構相關,控制相關,以及 數(shù)據(jù)相關( RAW, WAR, WAW) 吞吐率、加速比、效率之間的關系 ktTPEtntktnEtnttnStntnTPtTPkiikijikijkijikiikijii?????????????????????????????????????111111ma x])1([)1()1(}m a x {1中國科學技術大學 ? 指令流水線: CPU執(zhí)行大量的指令,指令吞吐率非常重要 ? MIPS 的 ISA: RISC 03/08Review: MIPS的基本流水線 中國科學技術大學 03/08Review ? 相關會影響流水線性能 ? 結構相關 : 由于爭用資源而引起的 – 解決辦法 : 等待 增加(或拆分)資源 ? 數(shù)據(jù)相關:兩條指令訪問相同的數(shù)據(jù)而引起的 – 解決辦法: 187。 硬件:定向技術( forwarding) 187。 軟件:指令級調(diào)度 ? 控制相關:由于控制類指令引起的 – 減少性能損失的基本方法 187。凍結或排空流水線 187。預測分支成功 187。預測分支失敗 187。延遲轉(zhuǎn)移 中國科學技術大學 異常處理 ? 流水線使得系統(tǒng)的吞吐率提高 ? 問題 :由于相關會影響系統(tǒng)性能的發(fā)揮 ? 另一問題:異常 ? Why? – 多級流水-》多周期指令 – 異??梢园l(fā)生在任何地方 – 指令序與異常序可能不同 – 必須按指令序處理異常 ? 采用何種策略取決于異常的類型 中國科學技術大學 異常的類型 ? I/O 設