<超標量處理器概覽> 第 9 章 - 執行

9.1 - 概述 FU 的個數決定了每個 cycle 最大可以同時執行的指令個數,也就是 issue width Execute stage 另一個重要的部份就是 bypassing network,其負責將 FU 的運算結果送到其他需要它的地方,像是 physical register file (PRF)、其他 FU 的輸入端、store buffer 等 隨著每個 cycle 可以同時執行的指令個數的增多,bypassing network 變得越來越複雜,已經是處理器中速度提昇的一個關鍵部份 在不使用 bypassing network 的情況下,指令的 operands 值可以來自於 PRF (for non-data-capture),或是 payload RAM (for data-capture),每個 FU 都是透過 select 電路將 PRF 或是 payload RAM 串連起來的 每個 select 電路和 PRF (或是 payload RAM) 的 read ports 是一一對應的,每個 FU 和 PRF (或是 payload RAM) 的 read ports 也是一一對應的 因此,PRF 總共需要的 read ports 個數與 issue width 是直接相關的;如果對處理器追求更大的 issue width,就代表著 PRF 需要更多的 read ports,反而會限制了處理器的執行速度,現代處理器多會採用 cluster 架構來解決這個矛盾 Payload RAM 由於需要與 Issue Queue 綁定在一起,使用 distributed Issue Queue 可以減少 payload RAM read ports 的需求 9.2 - FU 的類型 9.2.1 - ALU ALU (Arithmetic and Logic Unit) 通常負責:整數加減法、shift、簡單的乘除法、資料搬移 (e.g. mov、byte-swap 指令)、分支指令目標位址的計算、記憶體存取位址的計算 很多處理器在 ALU 中也實現了比較簡單的乘法功能,用來支持乘法指令 不過為了追求比較高的處理效能,高性能處理器通常選擇將乘法器單獨使用一個 FU 來實現,並在這個 FU 中實現乘累加的功能 有些處理器基於功耗和成本的考量,會將整數類型的乘法交由浮點數運算的 FU 來運算 整數轉成浮點數 → 浮點數乘法 → 浮點數轉為整數 指令的 latency 會變長,但較省面積和功耗,Intel Atom CPU 就採用了此設計 9.2.2 - AGU AGU (Address Generate Unit) 用來計算記憶體存取位址,如 load/store 指令 在一般 pipeline 處理器中,記憶體的存取位址都是交由 ALU 來計算,但是在 superscalar CPU 中,由於需要同時執行多條的指令,記憶體存取指令的執行效率直接影響了處理器的性能,所以通常會單獨使用一個 FU 來計算其位址 9.2.3 - BRU BRU (Branch Unit) 負責處理 control flow 類型的指令,如 branch、jump、call 和 return 類型的指令,BRU 負責將這些指令所攜帶的目標位址計算出來,並根據一定的條件決定是否使用這些位址;同時,在這個 FU 中還會對分支預測與否正確進行檢查,一旦發現 mis-prediction,就需要啟動相對硬的恢復機制 ARM 和 PowerPC 等處理器在指令中的編碼加上了 condition code,根據 condition code 來決定指令是否執行 優點: ...

2025/04/28 · 15 分鐘 · 3034 字 · Frank Chang

<超標量處理器概覽> 第 11 章 - 真實世界的例子:Alpha 21264 處理器

11.1 - 概述 DEC 的 Alpha 21264 是 superscalar CPU 的一個典範,其為 4-way out-of-order superscalar CPU,工作頻率是 466 ~ 667 MHz,benchmark:SPECint95 - 40、SPECfp95 - 86;與同時期其他的處理器 benchmark 對比: Alpha 21264 的 pipeline 最多同時支持 80 條指令,以及 80 個 checkpoints,因此對於 branch mis-prediction、exception、interrupt,Alpha 21264 都可以快速地恢復 CPU 狀態 Alpha 21264 的分支預測器實現了基於局部歷史 (Local prediction) 和基於全局歷史 (Global prediction) 兩種預測方式,並根據程式的執行情況,動態選擇預測率最高的方法,這就像是兩種分支預測方式在進行競爭一樣 對於 load/store 指令,Alpha 21264 採用了 Speculative Memory Disambiguation 和 Load hit/miss Prediction Alpha 21264 採用 7-stage pipeline,比較短的 pipeline 使 branch mis-prediction 發生時的 mis-penalty 比較低,從而提高處理器的效率: ...

2025/05/10 · 15 分鐘 · 3101 字 · Frank Chang