TLB:Translation Lookaside Buffer.

根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内存地址,而CPU寻址时会优先在TLB中进行寻址。处理器的性能就和寻址的命中率有很大的关系。

映射机制必须使一个程序能断言某个地址在其自己的进程空间或地址空间内,并且能够高效的将其转换为真实的物理地址以访问内存。一个方法是使用一个含有整个空间内所有页的入口(entry)的表(即页表),每个入口包含这个页的正确物理地址。这很明显是个相当大的数据结构,因而不得不存放于主存之中。

由于CPU首先接到的是由程序传来的虚拟内存地址,所以CPU必须先到物理内存中取页表,然后对应程序传来的虚拟页面号,在表里找到对应的物理页面号,最后才能访问实际的物理内存地址,也就是说整个过程中CPU必须访问两次物理内存(实际上访问的次数更多)。因此,为了减少CPU访问物理内存的次数,引入TLB。

====================================================

cpu                                         内存

TLB   <============================>    内存页表

L1 Cache <=====>L2 Cache<=========>    内存数据

====================================================

TLB种类

TLB在X86体系的CPU里的实际应用最早是从Intel的486CPU开始的,在X86体系的CPU里边,一般都设有如下4组TLB:

第一组:缓存一般页表(4K字节页面)的指令页表缓存(Instruction-TLB);

第二组:缓存一般页表(4K字节页面)的数据页表缓存(Data-TLB);

第三组:缓存大尺寸页表(2M/4M字节页面)的指令页表缓存(Instruction-TLB);

第四组:缓存大尺寸页表(2M/4M字节页面)的数据页表缓存(Instruction-TLB);

图中可见,当CPU执行机构收到应用程序发来的虚拟地址后,首先到TLB中查找相应的页表数据,如果TLB中正好存放着所需的页表,则称为TLB命中(TLB Hit),接下来CPU再依次看TLB中页表所对应的物理内存地址中的数据是不是已经在一级、二级缓存里了,若没有则到内存中取相应地址所存放的数据。如果TLB中没有所需的页表,则称为TLB失败(TLB Miss),接下来就必须访问物理内存中存放的页表,同时更新TLB的页表数据。

既然说TLB是内存里存放的页表的缓存,那么它里边存放的数据实际上和内存页表区的数据是一致的,在内存的页表区里,每一条记录虚拟页面和物理页框对应关系的记录称之为一个页表条目(Entry),同样地,在TLB里边也缓存了同样大小的页表条目(Entry)。由于页表条目的大小总是固定不变的,所以TLB的容量越大,则它所能存放的页表条目数越多(类似于增大CPU一级、二级缓存容量的作用),这就意味着缓存命中率的增加,这样,就能大大减少CPU直接访问内存的次数,实现了性能提升。

4. TLB的联合方式:

TLB内部存储空间被划分为大小相同的块(即TLB页表条目),这些块的大小=内存的页表区里页表条目的大小.

所以,就可以在TLB页表条目和内存页表条目间建立一定的相互对应关系。当CPU需要页表数据时,它必须迅速做出如下的2个判断:一个是所需要的页表是否已缓存在TLB内部(即判断TLB命中或是失败),另一个是所需要的页表在TLB内的哪个条目内。为了尽量减少CPU做出这些判断所需的时间,就必须在TLB页表条目和内存页表条目之间的对应方式上动点脑筋,下面是几种常见的对应关系。

名称

方式

应用

全联合方式

内存页表里的任何一个条目都可能被对应(缓存)到TLB的任何一个条目,TLB内所有条目都可能被对应到内存页表里的所有条目上。

Athlon XP在L1 指令TLB部分全是这种方式

4路联合方式

只有内存页表区的某些条目可能被缓存到TLB的某4个页表条目所在的块上。

P4处理器一般采用这种方式

转载于:https://www.cnblogs.com/bifei/archive/2011/01/25/1944742.html

什么是TLB ?(转载)相关推荐

  1. [转载]内存管理与TLB

    内存管理与TLB 我们倾向于直接从最底层引入本书中的大部分主题进行探讨,对于一本关注计算机底层体系结构的书而言,这似乎是自然而然的.然而,为了说清楚内存管理硬件,我们得从MIPS R2000所寻求实现 ...

  2. 无法加载文件 C:/Windows/Microsoft.NET/Framework/Meaningless_string/mscorlib.tlb

    文章编号: 918685 - 最后修改: 2007年11月30日 - 修订: 3.0 安装 SQL Server 2005 时出现错误消息:"无法加载文件 C:/Windows/Micros ...

  3. 【转载】COM 连接点

    原文:COM 连接点 CLR 完全介绍 COM 连接点 Thottam R. Sriram 来自:http://msdn.microsoft.com/zh-cn/magazine/cc163361.a ...

  4. 常见架构TLB miss处理方法(转)

    转自网站:http://blog.sina.com.cn/s/blog_633f462901018reb.html 0.       综述 总的来说TLB miss处理分为硬件处理和软件处理两种,硬件 ...

  5. COM组件设计与应用(十三)(转载)

    COM组件设计与应用(十三) 事件和通知(VC6.0) 作者:杨老师 下载源代码 一.前言 我的 COM 组件运行时产生一个窗口,当用户双击该窗口的时候,我需要通知调用者: 我的 COM 组件用线程方 ...

  6. 【转】TLB(Translation Lookaside Buffers,TLB)的作用

    原文网址:http://sdnydubing.blog.163.com/blog/static/137470570201122810503396/ 从虚拟地址到物理地址的转换过程可知:使用一级页表进行 ...

  7. 【转载】COM 组件设计与应用(二)——GUID 和 接口

    原文:http://vckbase.com/index.php/wv/1203.html COM 组件设计与应用 系列文章:http://vckbase.com/index.php/piwz?& ...

  8. 阿龙的学习笔记---转载及精炼总结github仓库:cpp-backend-reference

    -> 转载自https://github.com/chankeh/cpp-backend-reference 突击复习常见题,要提前批了,之前的忘了不少,知识广度先再拓展一下.文章中的一些详细讲 ...

  9. 【转】深入理解 TLB 原理

    对于MMU,提及那必须有TLB这个东西.但是对于这东西不是很了解,于是这里跟着前辈的笔记来学习一下. 1.为什么需要TLB TLB是translation lookaside buffer的简称.首先 ...

最新文章

  1. 我的世界java版双海底神殿种子_我的世界海底神殿种子2021
  2. JavaSE(十二)——AWT
  3. 功能更新|DAS推出全局Workload优化功能,实现SQL自动诊断
  4. [html] 你是如何区分HTML和HTML5的?
  5. 算法及时间/空间复杂度的分析
  6. 手机java做贪吃蛇_如何用Java写一个贪吃蛇游戏
  7. Ricequant 平台入门--回测第一个量化交易策略
  8. 3t中文 studio_studio 3t免费版
  9. python图像的手绘效果代码_python实现手绘效果图
  10. 人脸识别活体检测技术探讨:多物理特征融合加分类器的算法技术
  11. 写给安卓软件工程师的3条建议,全套教学资料
  12. html让图片悬浮在网页,网页制作灰度图片悬浮效果利用HTML5和jQuery实现
  13. 《Linux内核设计与实现》读书笔记(四)- 进程的调度
  14. 线性代数 --- 用条件数(condition number)来判断矩阵是否可逆
  15. docker的介绍、安装、镜像命令
  16. vue报错:Object(...) is not a function
  17. 在苹果Mac上如何关闭触控板防止误触?
  18. ★手机被盗,让小偷欲哭无泪高招+找回你的电话号码+短信陷阱
  19. 利用vmware在自己的个人电脑上面搭建虚拟linux服务器
  20. 设计一个彩灯循环控制器

热门文章

  1. 用Python如何开发Excel宏脚本?新手必学
  2. java微服务开发(基础环境篇)
  3. AC多模匹配+完整实现源码
  4. QDialog添加最大化最小化按钮
  5. 技术时代的人心识别:从可能向现实的跨越丨上海交通大学教授博士生导师李侠...
  6. 最大子序列和问题(动态规划)
  7. linux编程 —— shell编程脚本常用语法总结 【学习笔记】
  8. 【安装+配置】Mac服务端svn
  9. UE4 蓝图常用节点汇总及意译(一)
  10. IDEA全局搜索快捷键(ctrl+shift+F)失效修复