什麼是 BTIC 方案?
此方案僅在因指令快取延遲過長而導致的懲罰過高時才會偶爾使用。BTIC 方案的基本思想是提供一個小的額外快取,對於已執行或預測已執行的分支,它提供分支目標指令或指定數量的 BTI,而不是 BTA。因此,可以利用原本未使用的流水線週期來執行目標指令。
BTIC 方案有兩種替代實現方式,如圖所示。在第一種方式中,已執行路徑的延續地址也儲存在 BTIC 中,而在第二種方式中,它是動態計算的。
儲存已執行路徑延續的 BTIC 方案 - 此實現的原理基於 Hitachi Gmicro/200 (1988) 處理器,如圖所示。Gmicro 系列處理器是在 1984 年啟動的日本 TRON 專案框架內開發的。TRON 是一種在某些層面上定義的開放式架構,包括 ISA 層 (Sakamura, 1987a, 1987b)。
TRON ISA 是一種 CISC 架構。Gmicro/200 是第一個實現 TRON ISA 規範的微處理器。它是一個使用六階段 CISC 流水線和載入延遲為兩個週期的指令快取的標量實現。
如圖所示,BTIC 包含由三個組成部分組成的條目。它們是當前已執行分支的地址 (BA)、分支目標指令 (BTI) 和 BTI 後面的指令的地址 (指定為 BTA+)。
當 BTIC 中存在實際指令提取地址 (IFA) 的條目時,BTI 將從 BTIC 中提取,並且選擇此指令進行解碼,而不是直接從指令快取中讀取指令。沿著已執行路徑的後續指令的地址 (BTA+) 也從 BTIC 中提取。它成為下一個 BTA。BTIC 只包含四個條目。
計算已執行路徑延續的 BTIC 四方案 - BTIC 方案的另一個變體不同之處在於,已執行路徑延續的地址是計算出來的,而不是儲存在 BTIC 中並從中讀取。該圖透過展示它在 MC 88110 處理器中的實現方式來演示這一點。
BTIC 包括當前已執行分支的最終地址 (BA) 三元組以及相應分支目標路徑的前兩條指令 (BTI 和 BTI + 1)。
當 BTIC 包含實際 IFA 的條目時,相應的兩個目標指令 (BTI 和 BTI + 1) 將從 BTIC 中提取並選擇進行解碼,而不是從指令快取中讀取兩個連續的指令。已執行路徑延續的地址 (BTA+) 透過增量從 BTA 計算得出,並用作下一個 IFA。