轉譯後備緩衝區
轉譯後備緩衝區(英語:Translation Lookaside Buffer,首字母縮略字:TLB),在中國大陸被翻譯為頁表緩存、轉址旁路緩存,為CPU的一種緩存,由記憶體管理單元用於改進虛擬位址到實體位址的轉譯速度。目前所有的桌上型及伺服器型處理器(如 x86)皆使用TLB。TLB具有固定數目的空間槽,用於存放將虛擬地址映射至物理地址的分頁表條目。為典型的結合存儲(content-addressable memory,首字母縮略字:CAM)。其搜尋鍵碼為虛擬記憶體位址,其搜尋結果為實體位址。如果請求的虛擬位址在TLB中存在,CAM 將給出一個非常快速的匹配結果,之後就可以使用得到的實體位址存取記憶體。如果請求的虛擬位址不在 TLB 中,就會使用分頁表進行虛實地址轉換,而分頁表的存取速度比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 的進一步細節。
TLB 失誤
編輯兩種在現代架構中常用的解決 TLB 失誤的方案:
- 硬體式 TLB 管理,CPU 自行遍歷分頁表,查看是否存在包含指定的虛擬位址的有效分頁表條目。如果存在這樣的分頁表條目,就把此分頁表條目存入 TLB ,並重新執行 TLB 訪問,而此次訪問肯定會尋中,程式可正常執行。如果 CPU 在分頁表中不能找到包含指定的虛擬位址有效條目,就會發生分頁錯誤例外,作業系統必須處理這個例外。處理分頁錯誤通常是把被請求的數據載入實體記憶體中,並在分頁表中建立將出錯的虛擬位址映射到正確的實體位址的相應條目,並重新啟動程式(詳見分頁錯誤)。
- 軟體管理式 TLB,TLB 失誤時會產生「TLB 失誤」例外,且作業系統遍歷分頁表,以軟體方式進行虛實地址轉譯。然後作業系統將分頁表中響應的條目載入 TLB 中,然後從引起 TLB 失誤的指令處重新啟動程式。如同硬體式 TLB 管理,如果作業系統在分頁表中不能找到有效的虛實地址轉譯條目,就會發生分頁錯誤,作業系統必須進行相應的處理。
典型的 TLB
編輯- 容量:12 - 4,096 分頁表條目
- 尋中時間:0.5 - 1 時脈週期
- 失誤代價:10 - 30 時脈週期
- 失誤率: 0.01% - 3%
假如在TLB 尋找需要 1 個時脈週期,而若在TLB找不到(miss hit)需要額外花 30 個時脈週期去尋找,而且miss hit的機率是 1%,則有效的記憶體訪問週期的平均值是 個時脈週期/每一記憶體存取。
指令與數據可以分別使用不同的TLB ,即Instruction TLB (ITLB)與 Data TLB (DTLB),或者指令與數據使用統一的TLB,即Unified TLB (UTLB),再或者使用分塊的TLB (BTLB)。
上下文交換
編輯在上下文交換(context switch)部分 TLB 條目可能會失效,例如先前執行的行程已訪問過一個頁面,但是將要執行的行程尚未訪問此頁面。最簡單的策略是清出整個 TLB。較新的 CPU 已有更多有效的策略;例如在 Alpha EV6 中,每一個 TLB 條目會有一個「位址空間號碼」(address space number,ASN)的標記,而且只有符合目前工作的 ASN 的 TLB 條目才會被視為有效。
AMD Phenom
編輯AMD Phenom CPU的B2版本存在一個TLB問題。如果改以軟體方式解決這個問題(如BIOS更新),這將會損失10-30%的效能。為此,AMD另外推出B3版本的Phenom處理器,在硬體電路上修正此問題,克服了B2版本Phenom處理器效能減少的問題。
參考
編輯外部連結
編輯參閱
編輯