OS内存管理之TLB概述(转换表缓冲区)

上一篇文章讲了分页基本概念,我们获取虚拟地址p[31:0]之后,先将页码p[31:12]送入页表中查找对应物理帧基地址,查找时间是O(1)的,页表位于内存中,所以这需要一次内存访问。得到基地址后,将其与页偏移组合得到真实物理地址,这时再访问一次内存,采用这种方案,访问一个字节需要两次内存访问,我们都知道内存访问是流水线CPU中延迟最高的一个阶段,进行两次内存访问速度实在是太慢了!有什么办法可以优化呢。

这里引出一项技术TLB(转换表缓冲区),TLB是高速内存,它每个条目由两部分组成:键和值,在这里键和值分别为页码和物理帧基地址(帧码)。在得到虚拟地址p后,将其在TLB中查找其页码(注意:这里查找并不是类似于链表那样遍历一遍链表查找,而是在硬件上并行查找,即同时与TLB内所有的页码进行比对进行查找),所以查找时间应是O(1)的,现代的TLB查找硬件是流水线里的一部分,所以增加TLB并不增加性能负担。
TLB与页表如何同时工作呢?TLB包含少数页表的条目,当取得虚拟地址p后,页码就发给TLB,若TLB中有该页码,就将帧码与页偏移组合访问真实物理内存,若在TLB中没有找到该页码,就需要访问页表来取得真实物理内存。这时可以把页码和帧码放入TLB中,下次访问该页时就能快速找到(该策略基于如下思想:最近访问的页在未来很可能会被再次访问)这样就能大幅提升性能。
在这里插入图片描述
一点疑惑?TLB越大,容纳的页码越多,查找到的概率也就越大,但是书上写到为了能在单步的流水线中执行搜索,TLB不应大。并不了解现代流水线是如何工作的,所以不能理解这句话的意思。若日后理解了将在此更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值