【正文】
ad or store instruction 187。 EX/ ← ID/ + ( ID/ 2) 187。 中國科學技術大學 – Load or store instruction 187。 187。 ID/ ← IF/。 EX/) {EX/} else {PC+4})。 流水段所需時間不均衡將降低加速比 187。流水線的性價比可以定義為 PCR = Throughput/(c+k*h), 其中 Throughput = 1/t, t為 t_{latch}+T/k, t_{latch}為鎖存器的延遲時間, T為在非流水線的機器上采用順序執(zhí)行方式完成一個任務所花費的總時間。 Repeat Interval – 問題:結構相關(增多);數(shù)據(jù)相關、控制相關引起的 stall增多;有新的沖突源產(chǎn)生;定向路徑增多; 異常處理復雜 – MIPS R4000 8級流水線 187。 Instruction 2, instruction 3, ….instruction n 1 未執(zhí)行完的指令 187。 盡快確認 187。 中國科學技術大學 精確中斷與長流水線 ? 例如 DIVF F0,F2,F4 ADDF F10,F10,F8 SUBF F12,F12,F14 ? ADDF 和 SUBF都在 DIVF前完成 ? 如果 DIVF導致異常,會如何? – 非精確中斷 ? Ideas??? 中國科學技術大學 處理中斷 4種可能的辦法 ? 方法 1:忽略這種問題,當非精確處理 – 原來的 superputer的方法 – 但現(xiàn)代計算機對 IEEE 浮點標準的異常處理,虛擬存儲的異常處理要求必須是精確中斷。 列表所有待寫的目的寄存器 187。 ? 精確中斷對整數(shù)流水線而言,不是太難實現(xiàn) – 指令執(zhí)行的中途改變機器的狀態(tài) – 例如 IA32 的自動增量尋址模式 中國科學技術大學 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 中國科學技術大學 DLX (MIPS)中多周期操作的處理 ? 問題 – 浮點操作在 1~ 2個 cycles完成是不現(xiàn)實的,一般要花費較長時間 – 在 DLX(MIPS)中如何處理 ? 在 1到 2個 cycles時間內(nèi)完成的處理方法 – 采用較慢的時鐘源,或 – 在 FP部件中延遲其 EX段 ? 現(xiàn)假設 FP指令與整數(shù)指令采用相同的流水線,那么 – EX 段需要循環(huán)多次來完成 FP操作,循環(huán)次數(shù)取決于操作類型 – 有多個 FP功能部件,如果發(fā)射出的指令導致結構或數(shù)據(jù)相關,需暫停 中國科學技術大學 對 DLX(MIPS)的擴充 四個功能部件 ? Integer 部件處理: Loads, Store, Integer ALU操作和Branch ? FP/Integer 乘法部件:處理浮點數(shù)和整數(shù)乘法 ? FP加法器:處理 FP加,減和類型轉換 ? FP/Integer除法部件:處理浮點數(shù)和整數(shù)除法 ? 這些功能部件未流水化 中國科學技術大學 擴展的 DLX(MIPS)流水線 中國科學技術大學 Latency amp。預測分支失敗 187。 硬件:定向技術( forwarding) 187。 –編譯器預測分支轉移方向的能力。把延遲分支看成是由原來的分支指令和若干個延遲槽構成,不管分支是否成功,都要按順序執(zhí)行延遲槽中的指令。 . 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)。 中國科學技術大學 中國科學技術大學 回顧 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。 在條件判定和轉移地址計算都完成后,才改變 PC值。 當前指令的執(zhí)行需要上一條指令的結果 ? 使用等待策略總是可以解決相關 – 流水線控制必須能檢測相關,否則由軟件設計來避免 – 采用相應操作解決相關 (or 等待 ) 中國科學技術大學 Mem 單個存儲器引起的結構相關 I n s t r. O r d e r Time (clock cycles) Load Instr 1 Instr 2 Instr 3 Instr 4 ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU Mem Reg Mem Reg ALU Reg Mem Reg ALU Mem Reg Mem Reg Detection is easy in this case! (right half highlight means read, left half write) 中國科學技術大學 消除結構相關 I n s t r. O r d e r Time (clock cycles) Load Instr 1 Instr 2 Stall Instr 3 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 Reg ALU DMem Ifetch Reg Bubble Bubble Bubble Bubble Bubble 中國科學技術大學 結構相關對性能的影響 ? 例如 : 如果每條指令平均訪存 次,而每個時鐘周期只能訪存一次,那么 – 在其他資源 100%利用的前提下,平均 CPI ? 中國科學技術大學 流水線的加速比計算 p ip el in eddu n p ip el in e T i m eC ycle T i m eC ycle C P I s tall P i p e lin e C P I I d e a ld e p th P i p e lin e C P I I d e a l S p e e d u p ????p ip el in eddu n p ip el in e T i m eC ycle T i m eC ycle C P I s tall P i p e lin e 1d e p th P i p e lin e S p e e d u p ???I n s tp e r cy cl e s S t al l A v e r ag e C P I I d e al C P I p ip el in ed ??For simple RISC pipeline, CPI = 1: 中國科學技術大學 例如: Dualport vs. Singleport ? 機器 A: Dual ported memory (―Harvard Architecture‖) ? 機器 B: Single ported memory ? 存在結構相關的機器 B的時鐘頻率是機器 A的時鐘頻率的 ? Ideal CPI = 1 ? 在機器 B中 load指令會引起結構相關,所執(zhí)行的指令中 Loads指令占 40% Average instruction time = CPI * Clock cycle time 無結構相關的機器 A: Average Instruction time = Clock cycle time 存在結構相關的機器 B: Average Instruction time = (1+*1) * clock cycle time / = * clock cycle time 中國科學技術大學 I n s t r. O r d e r add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg 數(shù)據(jù)相關問題 Time (clock cycles) IF ID/RF EX MEM WB 中國科學技術大學 ? 寫后讀相關 (Read After Write (RAW)) InstrJ tries to read operand before InstrI writes it ? 由于實際的數(shù)據(jù)交換需求而引起的 三種基本的數(shù)據(jù)相關 I: add r1,r2,r3 J: sub r4,r1,r3 中國科學技術大學 ? 讀后寫相關 Write After Read (WAR) InstrJ writes operand before InstrI reads it ? 編譯器編寫者稱之為 ―antidependence‖( 反相關),是由于重復使用寄存器名 ―r1‖引起的 . ? DLX(MIPS) 5 段基本流水線不會有此類相關因為 : – 所有的指令都是 5段 , 并且 – 讀操作總是在第 2段,而 –寫操作在第 5段 I: sub r4,r1,r3 J: add r1,r2,r3 K: mul r6,r1,r7 中國科學技術大學 ? 寫后寫相關( Write After Write