大家知道,程序具有局部性,也就是说在执行程序的过程中对存储器的访问不是随机的,而是有一定的局部性,在一段时间内,只访问邻近的少数几个存储字。后援缓冲器正是根据程序的这种局部性特点设计的。因为最近访问过的页目录项和页表项很有可能还会被访问到,因此,将最近使用的页目录项和页表项存放在CPU内部的高速缓存部件中,可以使得大多数读取当前页目录项和页表项的操作不用启动总线访问就能完成。 实际上,后援缓冲器与存放在内存中的页目录和页表构成了两级存储系统。这种存储系统的访问速度接近“高速缓存”(后援缓冲器)的速度,而容量是“大存储器”(内存中的页目录和页表)的容量。 在Pentium处理器中,代码和数据Cache各对应一个转换后援Cache,转换后援Cache是4路组相联结构,可以存放32个页表项。P6系列处理器有4组TLB,分别对应于4K和4M页面的指令Cache和数据Cache。TLB的规模可以通过CUPID指令来检测。图5-28 表示通过查找转换后援缓冲器访问页面的过程。 图5-28 查找页目录项表和页表 Pentium处理器的代码和数据Cache各对应一个转换后援Cache,转换后援Cache是4路组相联结构,可以存放32个页表项。P6系列处理器有4组TLB,分别对应于4K和4M页面的指令Cache和数据Cache。TLB的规模可以通过CUPID指令来检测。图5-28 表示通过查找转换后援缓冲器访问页面的过程。 |