<超標量處理器概覽> 第 10 章 - 提交
10.1 - 概述 在 out-of-order superscalar CPU 中,為了保持程式執行順序的一致性,一般通常都會在 pipeline 的最後增加一個 commit stage 當指令抵達 commit stage 時,會將這條指令在 ROB 中的 entry 標記為 complete 此時只代表這個指令已經計算完成,不代表可以離開 pipeline (i.e. retire) 指令進到 commit stage 並不代表它一定是正確的,有可能這條指令處在 mis-prediction 或是 exception 的路徑上,最後需要從 pipeline 中被 flushed 掉 只有當這條指令之前的指令都已經 retire 了,且這條指令已經是 complete 的狀態,才可以 retire 並離開 pipeline 在一條指令 retire 前,它的狀態都是 speculative 的,只有當這條指令真的 retire 後,才可以將它的狀態更新到 CPU 的 architecture state 對一個 N-way 的 superscalar,因為每個 cycle 最少可以 fetch N 條指令進 pipeline 中,pipeline 至少也需要 retire N 條指令,才能確保 pipeline 不會被堵塞 10.2 - ROB 10.2.1 - 一般架構 ROB 本質上是一個 FIFO,ROB 中儲存了指令的相關訊息,例如:一條指令的類型、結果、destination register 和 exception 的類型等 ...