什麼是 BTAC 方案?


該方案採用了一個更大的快取,稱為分支目標地址快取 (BTAC),用於加速對分支目標的訪問,如圖所示。BTAC 包含一組當前使用的分支地址和分支目標地址,並且可以相對快速地訪問。

當實際指令獲取地址是分支地址,並且 BTAC 中存在等效條目時,分支目標地址將與分支指令在同一週期內獲取。然後,此 BTA 用於在下一週期訪問分支目標指令。

分支目標地址快取 (BTAC) 包含分支目標地址 (BTA)。這些 BTA 與獲取分支指令同時從 BTAC 讀取。

透過這種方式,分支目標指令 (BTI) 可以立即在分支指令之後獲取,即無需任何空閒週期。此外,BTAC 方案甚至有可能實現零週期分支。使用零週期分支,第一個目標指令可以在最後一個順序指令(在分支之前)之後立即獲取,而無需任何延遲。

對於零週期分支,必須與分支之前的指令一起訪問分支目標地址 (BTA)。然後,BTAC 必須包含分支地址 (BA) 之前的指令獲取地址,而不是分支地址 (BA)。對於具有 4 位元組指令的標量處理器,這將是地址 BA – 4。

BTAC 方案由 Lee 和 Smith(1984 年)提出,並被稱為分支目標緩衝區設計。該方案已在一些最近的處理器中實現,如表所示。BTAC 條目的數量從 32 到 4K 不等。

使用 BTAC 方案的處理器示例

處理器BTAC 條目數BTAC 的實現
基於 ES/9000 520 的處理器 (1992p)4k2 路關聯
奔騰 (1994)256全關聯
MC 68060 (1993)2564 路關聯
PA 8000 (1995)32全關聯
PowerPC 604 (1994)64全關聯
PowerPC 620 (1995)256全關聯

BTAC 方案的實現存在一些差異,尤其是在以下方面:

  • BTAC 是實現為 2 路、4 路還是全關聯快取。

  • 如何初始化 BTAC。

  • 是否為所有最近的分支保留 BTAC 中的條目,或者僅為最近獲取的分支保留條目(在後一種情況下,BTAC 方案還執行隱式動態預測)。

  • 如果 BTAC 中沒有空間容納新條目,如何選擇要覆蓋的條目。

  • 如果處理器使用預測位,它們是包含在 BTAC 中還是單獨的 BHT 中。

更新於: 2021-07-23

347 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告