歷史位概念的實現


歷史位用於記錄分支歷史。處理器採用四種不同的方案之一來實現歷史位,如圖所示。在最簡單的方案中,歷史位位於I快取中。

例如,α處理器在每個指令的I快取中提供一個(21064)或兩個(21064A)歷史位。相反,UltraSparc每個快取行(包含四個指令)只維護兩個2位條目。Sparc架構維護延遲槽,因此在四個後續指令中最多隻能出現兩個分支(和兩個延遲槽)。

在PowerPC 604中,有一個512個條目的BHT,組織為128 x 4個條目,每個條目有兩個歷史位。BHT由指令提取地址訪問,並提供屬於同時從I快取提取並載入到解碼佇列的四個指令的四個條目。預測邏輯評估與分支指令對應的歷史位。

PowerPC 604採用隱式預測和顯式2位預測。隱式預測是一種首選的預測技術,因為它允許在沒有任何懲罰的情況下訪問正確猜測的已採取路徑,並且易於實現。

隱式預測的問題是它需要完全關聯的實現。但是,完全關聯結構的高成本將大多數當前實現中的BTAC或BTIC的大小限制為32-256個條目。使用隱式預測的處理器也配備了更高效但“更慢”的預測技術。

例如,讓我們討論如何在PowerPC 604和PowerPC 620處理器中實現多重預測。在這些處理器中,隱式預測與2位預測相結合。生成的猜測如表所示。

PowerPC 604 (1995)和620 (1996)處理器中實現的隱式預測和2位預測的組合

BTAC2位預測結果總體預測
命中無關緊要已採取
未命中已採取已採取
未命中未採取未採取

PowerPC 604具有64個條目的BTAC和512個條目的BHT,而PowerPC 620的相應值為BTAC中的256個條目和BHT中的2K個條目。

當BTAC中存在用於引用的提取地址的條目時,即BTAC命中,則總體預測為“已採取”,而不管2位預測的結果如何。如果沒有BTAC中對應的條目,則未命中,則使用2位預測的結果作為總體猜測。

當總體“已採取”預測來自BTAC命中時,604和620的已採取懲罰均為零。相反,如果總體“已採取”預測是在BTAC未命中情況下,從2位預測中得出的,則PowerPC 604的“已採取”懲罰為1-2個週期,而PowerPC 620的懲罰僅為1個週期。

更新於:2021年7月23日

87次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告