流水线停顿

维基百科,自由的百科全书

流水线停顿(英語:Pipeline stall),亦称流水线冒泡,是指有指令管線化處理器,为了应对冒险(相鄰位址讀寫相同位址,不同執行順序可能會影響結果)而延时执行指令

在指令解碼的階段,控制單元會判斷解碼後的指令所讀取的暫存器位址是否是執行階段要寫入的位址。若是,控制單元會將該指令暫停一個時脈週期,控制單元也會暫停讀取階段指令,避免讀取階段讀到的命令被下一個命令蓋過。

在指令解碼的指令停頓時,為了避免讀取新的指令,會固定程式計數器以及讀取階段的指令,避免被修改。此動作會一直持續到可能造成上述衝突的指令已執行完成為止[1],之後才會繼續指令解碼及讀取指令,此事件常稱為bubble,類似液體管路中的氣泡。

有些架構下,流水线的執行階段需要在每一個周期都要有動作。此時會在執行階段加入NOP(無作用),以達到停顿的效果。

相關條目

參考資料

  1. ^ Patterson, David A.; Hennessey, John L., Computer Organization and Design 4, Morgan Kaufmann: 373