複製鏈接
請複製以下鏈接發送給好友

轉譯後備緩衝區

鎖定
轉譯後備緩衝器,也被翻譯為頁表緩存轉址旁路緩存,為CPU的一種緩存,由存儲器管理單元用於改進虛擬地址到物理地址的轉譯速度。當前所有的桌面型及服務器型處理器(如 x86)皆使用TLB。TLB具有固定數目的空間槽,用於存放將虛擬地址映射至物理地址的標籤頁表條目。為典型的結合存儲(content-addressable memory,首字母縮略字:CAM)。其搜索關鍵字為虛擬內存地址,其搜索結果為物理地址。如果請求的虛擬地址在TLB中存在,CAM 將給出一個非常快速的匹配結果,之後就可以使用得到的物理地址訪問存儲器。如果請求的虛擬地址不在 TLB 中,就會使用標籤頁表進行虛實地址轉換,而標籤頁表的訪問速度比TLB慢很多。有些系統允許標籤頁表被交換到次級存儲器,那麼虛實地址轉換可能要花非常長的時間。
中文名
轉譯後備緩衝器
外文名
Translation Lookaside Buffer
簡    稱
TLB

轉譯後備緩衝區簡介

TLB 用於緩存一部分標籤頁表條目。TLB可介於 CPU 和CPU緩存之間,或在 CPU 緩存和主存之間,這取決於緩存使用的是物理尋址或是虛擬尋址。如果緩存是虛擬定址,定址請求將會直接從 CPU 發送給緩存,然後從緩存訪問所需的 TLB 條目。如果緩存使用物理定址,CPU 會先對每一個存儲器操作進行 TLB 查尋,並且將獲取的物理地址發送給緩存。兩種方法各有優缺點。
採用物理尋址的緩存的一種常見優化,是並行的進行 TLB 查尋和緩存的訪問。所有虛擬地址的較低比特(例如,在虛擬內存系統中具有 4KB 標籤頁時,虛擬地址中較低的那 12 比特)代表的是所請求的地址在分頁內部的地址偏移量(頁內地址),且這些比特不會在虛擬地址轉換到物理地址的過程中發生改變。訪問CPU緩存的過程包含兩步:使用一條索引去尋找CPU緩存的數據存儲區中的相應條目,然後比較找到的CPU緩存條目的相應標記。如果緩存是用虛實地址轉譯過程中不變的頁內地址來索引組織起來的,則可並行地執行TLB上虛實地址的較高比特(即分頁的頁間地址/頁號)的轉換與CPU緩存的“索引”操作。然後,從 TLB 獲得的的物理地址的頁號會發送給CPU緩存。CPU緩存會對頁號標記進行比較,以決定此次訪問是尋中或是缺失。它也有可能並行的進行 TLB 查尋和CPU緩存訪問,即使CPU緩存必須使用某些可能會在地址轉譯後發生改變的比特;參閲緩存條目的地址轉譯一節,以獲取關於虛擬定址下緩存和 TLB 的進一步細節。 [1] 

轉譯後備緩衝區TLB 不命中

兩種在現代體系結構中常用的解決 TLB 不命中的方案:
  • 硬件式 TLB 管理,CPU 自行遍歷標籤頁表,查看是否存在包含指定的虛擬地址的有效標籤頁表條目。如果存在這樣的分頁表條目,就把此分頁表條目存入 TLB ,並重新執行 TLB 訪問,而此次訪問肯定會尋中,程序可正常運行。如果 CPU 在標籤頁表中不能找到包含指定的虛擬地址有效條目,就會發生標籤頁錯誤異常操作系統必須處理這個異常。處理標籤頁錯誤通常是把被請求的數據載入物理存儲器中,並在標籤頁表中創建將出錯的虛擬地址映射到正確的物理地址的相應條目,並重新啓動程序(詳見標籤頁錯誤)。
  • 軟件管理式 TLB,TLB 不命中時會產生“TLB 失誤”異常,且操作系統遍歷標籤頁表,以軟件方式進行虛實地址轉譯。然後操作系統將分頁表中響應的條目加載 TLB 中,然後從引起 TLB 失誤的指令處重新啓動程序。如同硬件式 TLB 管理,如果 操作系統 在標籤頁表中不能找到有效的虛實地址轉譯條目,就會發生標籤頁錯誤, 操作系統 必須進行相應的處理。

轉譯後備緩衝區典型的 TLB

  • 容量:8 - 4,096 分頁表條目
  • 尋中時間:0.5 - 1 時鐘頻率週期
  • 不命中代價:10 - 30 時鐘頻率週期
  • 不命中率: 0.01% - 3%
假如 TLB 尋中需要 1 個時鐘頻率週期,一次不命中訪問需要 30 個時鐘頻率週期,而且不命中率是 1%,有效的存儲器訪問週期的平均值是{\displaystyle 1\times 0.99+(1+30)\times 0.01=1.30}個時鐘頻率週期/每一存儲器訪問。
指令與數據可以分別使用不同的TLB ,即Instruction TLB (ITLB)與 Data TLB (DTLB),或者指令與數據使用統一的TLB,即Unified TLB (UTLB),再或者使用分塊的TLB (BTLB)

轉譯後備緩衝區任務切換

在任務(task)切換時,部分 TLB 條目可能會失效,例如先前運行的進程已訪問過一個頁面,但是將要執行的進程尚未訪問此頁面。最簡單的策略是清出整個 TLB。較新的 CPU 已有更多有效的策略;例如在Alpha EV6中,每一個 TLB 條目會有一個“地址空間號碼”(address space number,ASN)的標記,而且只有匹配當前工作的 ASN 的 TLB 條目才會被視為有效。

轉譯後備緩衝區AMD Phenom

這款CPU的B2版本存在一個TLB問題。如果改以軟件解決這個問題,這將會損失10-30%的性能。為此,AMD另外推出B3版本的Phenom處理器,在硬件電路上修正此問題,克服了B2版本Phenom處理器性能減少的問題。
參考資料