轉譯後備緩衝區

轉譯後備緩衝區

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

基本介紹

  • 中文名:轉譯後備緩衝器
  • 外文名:Translation Lookaside Buffer
  • 簡稱:TLB
簡介,TLB 不命中,典型的 TLB,任務切換,AMD Phenom,

簡介

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

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處理器性能減少的問題。

相關詞條

熱門詞條

聯絡我們