循序執行與亂序執行的差異:發出順序、危障、電路規模、IPC 比較
循序執行的 CPU 依程式順序發出並執行指令。前面的指令因快取未命中等原因等待時,後面的指令也會停下來。亂序執行的 CPU 會檢查相依關係,從準備好的指令先執行,結果則以重排序緩衝區(ROB)依程式順序確定。由於能在等待期間推進其他指令,IPC 較高,但需要暫存器重新命名與選擇指令的電路,電路規模與功耗會變大。
| 項目 | 循序執行 | 亂序執行 |
|---|---|---|
| 指令發出與執行的順序 | 程式順序 | 從準備好的指令開始,調換順序執行 |
| 結果的確定(引退) | 程式順序 | 以重排序緩衝區(ROB)依程式順序確定 |
| 前面的指令在等待時 | 後面的指令也會停下(停滯) | 先推進沒有相依關係的後續指令 |
| 資料危障的處理 | 轉送與停滯。指令的排列依賴編譯器 | 除了轉送外,由硬體動態排程指令 |
| 假性相依(WAR、WAW) | 因為遵守順序,基本上不太會造成問題 | 以暫存器重新命名重新分配實體暫存器來消除 |
| 主要的額外電路 | 少。簡單的管線 | 重新命名表、實體暫存器、發出佇列、ROB、載入/儲存佇列 |
| 快取未命中的影響 | 大。每次未命中管線都容易停下 | 在數百道指令的視窗中推進其他指令,可隱藏部分等待時間 |
| IPC | 較低。在相同發出寬度下低於亂序執行 | 高。搭配寬的發出寬度可遠大於 1 |
| 電路規模與功耗 | 小。容易提高每單位面積或功耗的效能 | 大。選擇指令的電路與 ROB 的面積和功耗增加 |
| 使用場合 | 微控制器、嵌入式小型核心、部分以省電為優先的核心、GPU 的運算核心 | PC、伺服器、智慧型手機的高效能核心 |
數值為具代表性的大致參考值,會因世代或產品而異。