計算機架構與加速器
管線危障(Pipeline hazard)
危障是任何打斷管線生產線順暢流動的東西,共三種。資料危障是某條指令需要前一條尚未算完的結果——就像廚師伸手去拿一份還沒做好的醬汁。控制危障發生在分支處,處理器還不知道下一條該執行哪條指令。結構危障則是兩條指令在同一刻爭搶同一塊硬體。
危障會逼管線停頓(插入閒置的「氣泡」週期)而浪費效能,因此架構師用巧招對付:前饋(旁路)把剛算出的結果直接接到下一條指令,不必等它寫回;分支預測猜測分支走向並先行推測執行;編譯器則重排指令,把有用的工作塞進空檔。把危障處理好,幾乎就是快處理器與慢處理器的主要差別所在。
前饋能解決大多數資料危障,但「載入─使用」危障(記憶體載入後立刻使用該資料)仍會花掉一個氣泡,因為資料根本還沒從記憶體回來。
又稱
另見