前言
在传统的地址转换方式中,每次访问内存时,CPU 都需要通过页表来查找虚拟地址到物理地址的映射关系。这个过程需要多次内存访问,从而导致较大的延迟。为了减少这种延迟,引入了一种叫做 TLB 的缓存机制,将最近使用过的映射关系存储在高速缓存中。
一、高速缓存
TLB 实际上就是一种高速缓存,所以讲解 TLB 之前我们先来看一下什么是高速缓存。
为了缩小 CPU 和 RAM 之间的速度不匹配,引入了硬件高速缓存内存(hardware cachememory)。80x86 体系结构中引入了一个叫行的新单位。
硬件高速缓存基于著名的局部性原理(locality principle),该原理既适用程序结构和也适用数据结构。由于程序的循环结构及相关数组可以组织成线性数组,所以最近最常用的相邻地址在最近的将来又被用到的可能性极大。
当访问一个 RAM 存储单元时,CPU 从物理地址中提取出子集的索引号并把子集中所有行的标签与物理地址的高几位相比较。如果发现某一个行的标签与这个物理地址的高位相同,则 CPU 命中一个高速缓存(cache hit);否则,高速缓存没有命中(cache miss)。
当命中一个高速缓存