fbpx
维基百科

轉譯後備緩衝區

轉譯後備緩衝區(英語: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處理器效能減少的問題。

參考 编辑

外部連結 编辑

  • 記憶體管理/分頁架構 (页面存档备份,存于互联网档案馆
  • 处理器的存储子系统(三)-- 页表和TLB (页面存档备份,存于互联网档案馆
  • 处理器的存储子系统(一)--概述 (页面存档备份,存于互联网档案馆

參閱 编辑


轉譯後備緩衝區, 英語, translation, lookaside, buffer, 首字母縮略字, 在中国大陆被翻译为页表缓存, 转址旁路缓存, 為cpu的一种缓存, 由内存管理单元用於改進虛擬位址到實體位址的轉譯速度, 目前所有的桌上型及伺服器型處理器, 皆使用tlb, tlb具有固定數目的空间槽, 用于存放將虛擬地址映射至物理地址的分頁表条目, 為典型的結合存儲, content, addressable, memory, 首字母縮略字, 其搜尋鍵碼為虛擬記憶體位址, 其搜尋結果為實體位址, 如果請求的虚. 轉譯後備緩衝區 英語 Translation Lookaside Buffer 首字母縮略字 TLB 在中国大陆被翻译为页表缓存 转址旁路缓存 為CPU的一种缓存 由内存管理单元用於改進虛擬位址到實體位址的轉譯速度 目前所有的桌上型及伺服器型處理器 如 x86 皆使用TLB TLB具有固定數目的空间槽 用于存放將虛擬地址映射至物理地址的分頁表条目 為典型的結合存儲 content addressable memory 首字母縮略字 CAM 其搜尋鍵碼為虛擬記憶體位址 其搜尋結果為實體位址 如果請求的虚拟位址在TLB中存在 CAM 将给出一个非常快速的匹配结果 之後就可以使用得到的物理地址存取記憶體 如果請求的虚拟位址不在 TLB 中 就會使用分頁表进行虚实地址转换 而分頁表的存取速度比TLB慢很多 有些系统允许分頁表被交换到次級存储器 那么虚实地址转换可能要花非常长的时间 目录 1 概觀 2 TLB 不命中 3 典型的 TLB 4 上下文切换 5 AMD Phenom 6 參考 7 外部連結 8 參閱概觀 编辑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 則有效的記憶體访问週期的平均值是 1 0 99 1 30 0 01 1 30 displaystyle 1 times 0 99 1 30 times 0 01 1 30 nbsp 個時脈週期 每一記憶體存取 指令与数据可以分别使用不同的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處理器效能減少的問題 參考 编辑Virtual Memory in the IA 64 Kernel gt Translation Lookaside Buffer 页面存档备份 存于互联网档案馆 Virtual Translation Lookaside Buffer 永久失效連結 外部連結 编辑記憶體管理 分頁架構 页面存档备份 存于互联网档案馆 处理器的存储子系统 三 页表和TLB 页面存档备份 存于互联网档案馆 处理器的存储子系统 一 概述 页面存档备份 存于互联网档案馆 參閱 编辑記憶體管理 分頁 取自 https zh wikipedia org w index php title 轉譯後備緩衝區 amp oldid 78211714, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。