软件TLB

当发生 TLB缺失时,MMU硬件只负责生成TLB缺失故障,接下来由操作系统负责查找缺失的页,从TLB中移除一个记录,输入新的记录,重启发生故障的指令。
注意,在发生TLB缺失时,操作系统的处理必须在一小撮指令内完成,因为TLB缺失发生的频率要比页面缺失发生的频率高。

如何提升效率?
硬件方面:设置更大的TLB
如果TLB的大小适中,比如有64条,则通过软件来管理TLB所带来的效率提升是明显的。因为TLB越大,意味着MMU的结构越简单,可以腾出更多的空间来放置缓存,从而提升效率。
软件层面:
方法一:操作系统使用直觉来预判下一个将要被引用的页,并提前将其放入TLB
方法二:在固定位置添加一个TLB条目的缓存

当使用软件来管理TLB时,需要理解几个概念

  1. 软缺失:虚拟页不在TLB中,但是在内存中
    执行操作就是更新TLB,不需要硬盘I/O
    修复软缺失需要执行10-20个指令,可以在10-20ns内完成;
  2. 硬缺失
    指令引用的虚拟地址页既不在内存页中,也不在TLB中
    执行的操作是一次硬盘访问操作+遍历页表
    硬缺失比软缺失要慢100万倍
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容