分支處理的微體系結構實現是什麼?
分支處理包括基本任務,例如指令獲取、解碼和 BTA 計算,以及可能的其他專用任務以加快分支處理速度。這些專用任務可能是早期分支檢測、分支預測或訪問目標路徑的高階方案。
通常,專用任務使用專用硬體執行,例如 BTAC、BTIC 或 BHT。基本任務有兩種方法。所有早期的流水線處理器和許多最近的處理器都透過利用可用於通用指令處理的流水線階段來執行分支,如圖所示 -
相比之下,一些最近的處理器提供了一個單獨的單元,通常稱為**分支單元**,來執行分支處理的基本任務。這種方法將分支處理與一般資料操作解耦,並導致微體系結構結構更加對稱。此外,這種方法也有助於提高效能,因為其他單元從分支處理的基本子任務(例如地址計算)中釋放出來。
因此,分支可以與資料操作並行處理。如圖所示,它顯示了 Power1、Power2 和 PowerPC 模型遵循此方法。例如 UltraSparc 和 Am29000 超標量處理器。
使用預測的處理器的分支懲罰
有一種有效的技術可以大幅減少或避免對正確預測的分支的懲罰,例如 I 快取方案中的 BTAC 或後繼索引。使用這些方案,甚至可以實現零週期分支,如表所示。此表包含最近使用真正的靜態或動態預測的處理器中的分支懲罰資料。
採用靜態或動態預測的處理器中的分支懲罰
處理器型別 | 正確預測分支的懲罰(週期) | 錯誤預測分支的懲罰(週期) |
---|---|---|
MC 88110(1993) | 0 | 2 |
MC 68060(1993) | Z | 7 |
奔騰(1993) | 0 | 3-4 |
Gmicro/500(1993) | z/21 | n.a. |
PA 7200(1995) | n.a. | 0-1 |
PA 8000(1996) | z/22,3 | 5 |
R 8000(1994) | n.a. | 3 |
R 10000(1996) | 13 | 1−46 |
α21164(1995) | 0 | 5 |
PowerPC 604(1995) | $\frac{0^1}{1}$ −22 | 3 |
PowerPC 620(1996) | $\frac{0^1}{1^3}$ | 2 |
Nx586(1995) | Z | 54−195 |
如果分支地址提示 BTAC。
如果分支地址未命中 BTAC。
如果解碼佇列中有足夠的指令,則此延遲可能會部分或全部隱藏。
如果保留站佇列為空。
如果保留站佇列已滿(14 個條目)。
R10000 最多允許 4 個嵌入式掛起預測。錯誤預測懲罰的實際值取決於錯誤預測的深度。
Z 表示零週期分支。
如表所示,它表明儘管這些技術大大減少了錯誤預測的懲罰,但大多數最近的處理器至少需要兩到三個週期才能恢復。PA7200 和 R10000 在某些情況下只有一個甚至沒有懲罰週期。
但是,錯誤預測懲罰對有效分支懲罰的貢獻在很大程度上取決於預測精度。預測精度越高,錯誤預測懲罰對處理器效能的阻礙就越小。例如,對於 90% 的預測精度,兩個週期的錯誤預測懲罰只會導致平均分支懲罰增加 0.1*2=0.2 個週期。