在 I-cache 方案中,後繼索引是什麼?
這是最近引入的一種用於訪問分支目標的方案,應用於一些最近釋出的處理器,例如 Am29000 超標量、K5 和 UltraSparc。其基本思想是為 I-cache 中的每一行附加一個後繼索引,該索引指向要獲取的下一行,如圖所示。在所有處理器中,每個快取行可以包含 16 位元組的指令。
這意味著在 AM29000 超標量和 UltraSparc 中,一個快取行包含四個指令,而在與 x86 相容的 K5 中,則包含可變數量的 CISC 指令。後繼索引與同一行的指令並行獲取。它指向下一行順序行,或者如果當前行包含一個被猜測為已執行的分支,則指向包含第一個已執行路徑指令的行。

I-cache 包含一個後繼索引,該索引指向要獲取的下一個指令快取條目。後繼索引指向下一行順序行,或者在被猜測為已執行的分支的情況下,指向包含第一個已執行路徑指令的行。使用這些方案的處理器的示例包括 Am29000 超標量 (1995)、K5 (1995)、UltraSparc (1995)。
UltraSparc 是第一個宣佈實現 SPARC V9 ISA 的處理器。它是一個超標量全 64 位設計,其釋出率為 4。UltraSparc 包括一個預解碼單元。預解碼單元的主要任務是部分解碼指令並使用 4 位標籤相應地標記它們。這些標籤與 I-cache 中的每個指令一起儲存,並允許快速解碼。當指令載入到 I-cache 中時,預解碼單元檢測分支,確定相應的 BTA,並使用編譯器提供的提示位進行預測。
此預測用於初始化每個兩個指令(兩個位)可用的預測位。預測位根據分支歷史記錄進行更新。後繼索引和預測位儲存在一個額外的 2K 緩衝區(稱為 Next 欄位 RAM)中,每個四個指令一個後繼索引。如果預測被執行,則後繼索引變為確定的 BTA 的值,否則,下一個順序地址被視為後繼索引。
然後,後繼索引用作下一個指令獲取地址。因此,對於已執行的預測,後繼索引將執行重定向到已執行的路徑。UltraSparc 採用 2 位動態預測,歷史位放置在 Next 欄位 RAM 中。
相反,K5 將所有後繼索引初始化為下一個順序值,並且僅當執行顯示實際值不正確時才重寫索引。R8000 也採用了後繼索引方案。在 R8000 中,下一個順序地址不儲存在 I-cache 的後繼索引欄位中,而是始終動態計算。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP