1. 流水線實現(xiàn)多周期指令簡圖
2. MIPS流水線基本流程
1. 取指令;
2. 讀寄存器和譯碼;
3. 執(zhí)行ALU和地址計算;
4. 存儲器訪問墓造;
5. 寫結(jié)果到寄存器堪伍。
3. 非流水與流水的對比:
非流水的執(zhí)行時間
– 3條指令共需3×800=2400ps。
2. 流水線的執(zhí)行時間
– 3條指令共需1000+200×2=1400ps觅闽。
3. 當有數(shù)百萬條指令時:
– 對每一條指令來說帝雇,非流水線仍然是800ps,流水線則是200ps 蛉拙;
– 流水線/非流水線=(800*n)/(1000+200*(n-1))=4 倍尸闸。
4. 理想的情況下,流水線的級數(shù)就是比非流水線的性能提高的倍數(shù)孕锄。
5. 事實上吮廉,流水線總是存在一些額外的開銷,因此流水線執(zhí)行時間比流水各段的執(zhí)行時間要大畸肆。
6. 流水線通過提高吞吐率改善性能宦芦,并沒有減少單條指令的執(zhí)行時間。
4. 適合于流水線的MIPS指令特點
MIPS的指令都是等長的(32位)恼除;
訪存指令不存在兩次訪問存儲器的可能踪旷。
5. 流水線冒險
流水線冒險(pipeline hazards): 下一條指令不能在流水線中的下一個周期執(zhí)行。稱為流水線冒險豁辉。主要有以下三種流水線冒險:
– 結(jié)構(gòu)冒險(structural hazards)
由于硬件資源的局限令野,不能在同一個周期執(zhí)行一些指令的組合。
例如:
若在指令流水線中徽级,硬件資源中僅有一個獨立的存儲器气破,而不是兩個分離的獨立存儲器,就會造成因資源不夠而使流水線發(fā)生停頓餐抢。
– 數(shù)據(jù)冒險(data hazards)
流水線中指令的執(zhí)行在適當?shù)闹芷趦?nèi)的得不到可用的數(shù)據(jù)现使,而引起流水線停頓,稱之為數(shù)據(jù)冒險旷痕。
數(shù)據(jù)冒險是由數(shù)據(jù)的相關(guān)性造成的碳锈。
硬件的解決方案是:
旁路(bypass)或稱向前傳遞(Forwarding)
– 控制冒險(control hazards)
流水線中的下一條指令要不要執(zhí)行,需要等待轉(zhuǎn)移指令的結(jié)果后欺抗,才能確定售碳。
? 解決的方法
加入停頓,等待決策的指令執(zhí)行完绞呈。這種方法效率低贸人,但可用。
6. 流水線的數(shù)據(jù)通路
流水線的5個階段:
1. 取指令佃声;
2. 譯碼和讀寄存器艺智;
3. 執(zhí)?ALU和地址計算;
4. 存儲器訪問圾亏;
5. 寫回結(jié)果十拣。
五級流水線數(shù)據(jù)通路如圖所示:
7. 流水線控制通路的設計
需要注意以下五個階段的控制信號的產(chǎn)生封拧。
取指令階段:
– 讀寄存器;
– 總是寫PC夭问;
– 無特殊的控制信號哮缺;
譯碼階段的控制信號:
– 所有的都讀,無附加的控制信號甲喝;
EX階段:ALU計算的控制信號;
存儲器訪問的控制信號铛只;
寫回的控制信號埠胖。