• 地址转换旁路缓冲存储器(TLB),它就是频繁发生虚拟到物理地址转换的硬件缓存。

对于每次内存访问,硬件先检查TLB是否有期望的转换映射,如果有就完成转换(不需要访问页表)。

19.1 TLB基本算法

首先从虚拟地址中提取页号(VPN),检查TLB是否有该VPN的转换映射。如果有,那么TLB命中,可以从TLB中提取页帧号(PFN),与原来虚拟地址中的偏移量组合成物理地址。如果没有找到,硬件访问页表来寻找转换映射,并用该转换映射更新TLB。

19.3 谁来处理TLB未命中

  • 硬件全权处理TLB未命中。

硬件必须知道页表在内存中的确切位置以及页表的确切格式。发生未命中时,硬件会“遍历”页表,找到正确的页表项,去除想要的转换映射,更新TLB并重试该指令。

image.png
image.png

19.5 上下文切换时对TLB的处理

  • TLB包含的地址映射只对当前进程有效,对其他进程是没有意义的。

在TLB中添加一个地址空间标识符(ASID),可以吧ASID看作是进程标识符,但通常比PID位数少。

19.6 TLB替换策略

  • 在向TLB添加新项时,应该替换旧值,采用最近最少使用(LRU)项的策略。