【正文】
al ?延時 (Latency) ? 定義為完成某一操作所需的 cycle數(shù) ? 定義為使用當前指令所產(chǎn)生結(jié)果的指令與當前指令間的最小間隔周期數(shù) ?循環(huán)間隔( Repeat/Initiation interval) ? 發(fā)射相同類型的指令所需的間隔周期數(shù) ?對于 EX部件流水化的新的 DLX Function Unit Latency Repeat Interval Integer ALU 0 1 Data Memory (Integer and FP loads(1 less for store latency)) 1 1 FP Add 3 1 FP multiply 6 1 FP Divide (also integer divide and FP sqrt) 24 25 計算機體系結(jié)構(gòu) 將部分執(zhí)行部件流水化后的 DLX流水線 計算機體系結(jié)構(gòu) 新的相關(guān)和定向問題 ?結(jié)構(gòu)沖突增多 ? 非流水的 Divide部件,使得 EX段增長 24個 cycles ? 在一個周期內(nèi)有多個寄存器寫操作 3 FPR write ?可能指令亂序完成(亂序到達 WB段)有可能存在 WAW ?由于在 ID段讀,還不會有 WAR 相關(guān) ?亂序完成導致異常處理復雜 ?由于指令的延遲加大導致 RAW 相關(guān)的 stall數(shù)增多 ?需要付出更多的代價來增加定向路徑 計算機體系結(jié)構(gòu) 新的結(jié)構(gòu)相關(guān) ?縱向檢查指令所使用的資源 ? 第 10個 cycle, 三條指令同時進入 MEM, 但由于 MULTD和 ADDD在 MEM段沒有實際動作,這種情況沒有關(guān)系 ? 第 11個 cycle, 三條指令同時進入 WB段,存在結(jié)構(gòu)相關(guān) 計算機體系結(jié)構(gòu) 解決方法 ?Option 1 ? 在 ID段跟蹤寫端口的使用情況,以便能暫停該指令的發(fā)射 ? 一旦發(fā)現(xiàn)沖突,暫停當前指令的發(fā)射 ?Option 2 ? 在進入 MEM或 WB段時,暫停沖突的指令,讓有較長延時的指令先做,因為較長延時的指令,會更容易引起其他 RAW相關(guān),從而導致更多的 stalls 計算機體系結(jié)構(gòu) 關(guān)于數(shù)據(jù)相關(guān) ?較長延時的流水線,導致數(shù)據(jù)相關(guān)比例增多, stalls數(shù)增多 計算機體系結(jié)構(gòu) 新的沖突源 ?GPR與 FPR間的數(shù)據(jù)傳送造成的數(shù)據(jù)相關(guān) ? MOVI2FP and MOVFP2I instructions ?如果在 ID段進行相關(guān)檢測,指令發(fā)射前須做如下檢測: ? 結(jié)構(gòu)相關(guān) 循環(huán)間隔檢測 確定寄存器寫端口是否可用 ? RAW相關(guān) 列表所有待寫的目的寄存器 不發(fā)射以待寫寄存器做為源寄存器的指令,直到該寄存器值可用 ? WAW相關(guān) 仍然使用上述待寫寄存器列表 不發(fā)射那些目的寄存器在待寫寄存器列表中的指令,直到對應的待寫寄存器值可用 (完成 WB)。 LMD (load memory data) = MDR 或 ? Mem[ALUOutput] SMD ? branch ? if (cond) then PC ALUOutput else PC NPC ? for Jumps the condition is always true Step 5 WB write back ? Reg Reg ALU ? Regs[IR16..20] ALUOutput ? Reg Immed ALU ? Regs[IR11..15] ALUOutput ? Load ? Regs[IR11..15] LMD 計算機體系結(jié)構(gòu) 這種結(jié)構(gòu)是否可行 ?模型是正確的,但沒有優(yōu)化 ?還有其他選擇 ?兩個 ALU可以合二為一 ?指令和數(shù)據(jù)存儲器不一定要分開 ?一個長周期和 5個短周期 計算機體系結(jié)構(gòu) 單周期和多周期控制 ?多周期控制可實現(xiàn)指令重疊執(zhí)行 計算機體系結(jié)構(gòu) DLX的基本流水線 ?假設(shè)流水線周期為每步所花費的時間 計算機體系結(jié)構(gòu) 為什么用流水線 ? ?假設(shè)執(zhí)行 100條指令 ?單周期機器 ? 45 ns/cycle x 1 CPI x 100 inst = 4500 ns ?多周期機器 ? 10 ns/cycle x CPI (due to inst mix) x 100 inst = 4600 ns ?理想流水線機器 ? 10 ns/cycle x (1 CPI x 100 inst + 4 cycle drain) = 1040 ns 計算機體系結(jié)構(gòu) 為什么用流水線 (cont.)?- 資源利用率高 I n s t r. O r d e r Time (clock cycles) Inst 0 Inst 1 Inst 2 Inst 4 Inst 3 ALU Im Reg Dm Reg ALU Im Reg Dm Reg ALU Im Reg Dm Reg ALU Im Reg Dm Reg ALU Im Reg Dm Reg 計算機體系結(jié)構(gòu) 流水線正常工作的基本條件 ?各段間需要使用寄存器文件保存當前段傳送到下一段的數(shù)據(jù)和控制信息 ?存儲器帶寬是非流水的 5倍 計算機體系結(jié)構(gòu) 新的 DLX數(shù)據(jù)通路(圖 Page 88) Memory Access Write Back Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc ALU Memory Reg File MUX MUX Data Memory MUX Sign Extend Zero? IF/ID ID/EX MEM/WB EX/MEM 4 Adder Next SEQ PC Next SEQ PC RD RD RD WB Data ? 流水線寄存器文件暫存相關(guān)信息 Next PC Address RS1 RS2 Imm MUX 計算機體系結(jié)構(gòu) 簡畫的 Pipelining( 圖 Page 87) 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 計算機體系結(jié)構(gòu) 簡單 DLX流水線各段的操作(從功能部件角度) 計算機體系結(jié)構(gòu) 簡單 DLX流水線各段的操作(從指令的角度) 計算機體系結(jié)構(gòu) 流水線的相關(guān) ?相關(guān)的基本概念 ?結(jié)構(gòu)相關(guān) ?數(shù)據(jù)相關(guān) ?控制相關(guān) 計算機體系結(jié)構(gòu) 采用流水線技術(shù)帶來的新的問題 ?流水線相關(guān) ? 結(jié)構(gòu)相關(guān):同一時間兩種方式使用同一資源 例如 washer/dryer 合在一起, IM和 ID合在一起 ? 控制相關(guān) : 試圖在條件為評估之前,就做決定 例如 branch instructions ? 數(shù)據(jù)相關(guān):在數(shù)據(jù)未準備好之前,就需要使用數(shù)據(jù) 當前指令的執(zhí)行需要上一條指令的結(jié)果 ?使用等待策略總是可以解決相關(guān) ? 流水線控制必須能檢測相關(guān) ? 采用相應操作解決相關(guān) (or 等待 ) 計算機體系結(jié)構(gòu) Mem 單個存儲器引起的結(jié)構(gòu)相關(guān) 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) 計算機體系結(jié)構(gòu) 消除結(jié)構(gòu)相關(guān)(圖 Page 98) 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 Bu