超純量(Superscalar)和亂序執行(Out-of-Order Execution)是現代高效能處理器實現高指令吞吐量的兩大核心技術。超純量架構允許 CPU 在每個時鐘週期發射多條指令到多個執行單元,實現指令級並行(ILP)。亂序執行放寬了指令必須按序執行的限制,動態調整指令順序最大化執行效率。
典型的 4 路超純量處理器每個時脈週期最多發射 4 條指令到不同的執行單元(ALU、Load/Store、FPU、Branch)。執行單元延遲各異:整數 ALU 1 周期、整數乘法 3 周期、FP 加法 4 周期、FP 除法 15 周期。
// 執行單元延遲範例 // Integer ALU: 1 cyc, 每周期 1 條 // Integer Multiply: 3 cyc, 每周期 1 條 // FP Add: 4 cyc, 每周期 1 條 // FP Multiply: 5 cyc, 每 2 周期 1 條 // FP Divide: 15 cyc, 每 15 周期 1 條 // Branch Unit: 1 cyc, 每 2 周期 1 條
亂序執行的關鍵硬體元件:
Robert Tomasulo 在 IBM 360/91 上提出的動態排程演算法,透過暫存器重命名和保留站實現亂序執行。現代處理器都使用其變體,支援: