什麼是多路分支?


多路分支是另一種減少分支懲罰的可能性。使用多路分支,將同時執行未解決條件分支的順序路徑和已取路徑,如圖所示。多路分支需要多個程式計數器 (PC),在圖中稱為 IFA1 和 IFA2。

一旦指定條件得到解決,哪條路徑是正確的就會變得很明顯。如果正確的路徑是順序路徑,則將確認其執行並丟棄已取路徑的執行,因此,IFA1 包含正確的連續地址。在相反的情況下,反之亦然。

在條件分支的推測執行期間,可能會發生第二個未解決的條件分支指令。因此,更高階的多路分支方案應允許多個未解決的分支。

如圖所示,它顯示了三路多路分支。在這種情況下,四個指令獲取地址同時維護(IFA1-IFA4)。其中只有一個與正確的路徑相關。在所有條件分支都得到解決後,確定唯一的正確執行緒,並取消屬於錯誤路徑的所有計算。

儘管多路分支似乎作為提高效能的一種手段很有吸引力,尤其是在更高並行 ILP 處理器(如 VLIW)中,但此技術也存在明顯的缺點。首先,多路分支對硬體資源(在一線執行單元中)的需求遠高於推測性分支處理。

此外,對於多個多路分支,保持順序一致性和丟棄冗餘執行的計算正變得越來越複雜且耗時。多路分支僅在少數處理器中使用。例如,在 Multiflow TRACE 500 VLIW 架構提案(Wolfe 和 Shen,1991)中,可以執行兩條路徑,並計劃了兩組 14 個功能單元。

第二個例子是 URPR-2,它是一臺實驗機。它有九個功能單元,具有獨立的 IFA,允許多個多路分支。最後一個例子是一個稱為 XIMD 的新型計算模型及其第一個實驗實現 XIMD-1(Wolfe 和 Shen,1991)。

該模型能夠併發執行多條路徑(執行緒),並且可以以多種不同的模式執行,其中一種可以解決多路分支。實驗實現具有八個相同的 32 位 RISC 處理器,每個處理器都配備了自己的 IFA。

有些人期望這種加速未解決條件分支處理的蠻力方法仍然有未來(Brian,1994)。這種觀點是基於技術的快速發展,允許以大致相同的成本實現越來越複雜的微體系結構。

更新於: 2021-07-23

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告