(截图来自MOOC平台华中科技大学计算机原理课程)
在进行虚实地址转换的时候会存在多次访问主存导致Cache速度优越性难以体现的问题(虚实地址转换的相关内容可阅读我的上一篇文章虚拟存储器)。
以一次命中的转换过程为例。处理器根据虚拟地址访问MMU,通过MMU分解出页表项的地址,根据该地址访问主存,再返回页表项的内容到MMU,判断该页表项在主存中,那么再根据拼接成的物理地址访问主存,获得数据。这样的过程需要访问主存2次。
如果访问没有命中,那么将更为麻烦。在返回页表项内容时发现无效,出现缺页的情况,此时要通过缺页异常处理程序从磁盘调出并调入页(这里可能会用到替换算法,可阅读之前的文章Cache的替换算法)。处理完成后,再返回消息,继续处理之前的访问程序。这样一共需要访问主存3次。
为了提高虚实地址转换时的速度,我们需要引入TLB。
TLB相当于是页表的一个子集,可以采用如直接映射的映射方式(详情请阅读之前的文章Cache地址映射和变换方法)。
将VPN再进行更细一步的划分,根据TLB Index找到相应的,页表项,比对TLB TAG是否相同,相同的话再看有效位是否有效,这样就可以读取出页表项中的物理页号,和VPO组合获得物理地址,再访问主存。
引入了TLB的情况下,只需要访问主存一次就可以获得相应的数据。