软件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万倍

你可能感兴趣的:(软件TLB)