上一篇:[組成原理] 流水線設計
1. 前提
a = b + c
d = a * e
x = y * z
可以發現,第三條指令並不依賴前兩條,在第二條指令等待第一條指令的結果的時候,完全可以先執行第三條指令。
2. 指令重排序
在取指令和譯碼之後,會講指令發到保留站,等待他們所依賴的數據。如果指令依賴的數據準備好了,就會提交到ALU進行計算,計算完成後,會講結果放到重排序緩衝區,在這裏,CPU按照取指令的順序,對計算結果重新排序,只有當前指令前面的指令都完成,纔會提交當前指令,來保證在外部看來指令的順序性。