目录
一、什么是快表
二、快表有什么用?
例子:
三、快表和慢表同时查询
四、局部性原理
五、总结
一、什么是快表
快表,又称联想寄存器(TLB,translation lookaside buffer),是一种访问速度比内存快很多的高速缓存(TLB不是内存! ),用来存放最近访问的页表项的副本,可以加速地址变换的速度。与此对应,内存中的页表常称为慢表。
注意:一般不把整个页表都放在TLB里,因为成本太高了。
二、快表有什么用?
例子:
1、我们要访问(0,0)(0,4)(0,8)这几个逻辑地址
2、当进程上处理机时或进程切换时,系统会清空快表的内容。
3、假设访问TLB只需要1us,访问内存需要100us
4、我们首先要访问(0,0),首先,检查是否越界。
5、未越界,访问快表(此时快表为空),在快表内找不到对应的项。
6、因为找不到,所以未命中,所以访问内存中的慢表,找到内存号为600,并将此项复制到快表中。
7、之后算出物理地址
8、接着就是访问(0,4),还是先判断是否越界,发现没有越界。
9、查询快表,找到对应的内存块,接着算出物理地址。
10、(0,8)同样如此
11、这样所用的时间就是100+1+1=102,如果没有快表,时间就是100*3=300
三、快表和慢表同时查询
四、局部性原理
局部性原理(Locality Principle)是计算机科学中的一个基本原理,指的是在一段时间内,计算机程序访问数据的局部性比全局性强。也就是说,程序在某一时间段内更倾向于访问一组紧密相关的数据,而不是随机、散开的数据。
局部性原理具体包括以下三种:
-
时间局部性(Temporal Locality):如果一个数据被访问过一次,那么在近期内它有很高的概率会被再次访问。
-
空间局部性(Spatial Locality):如果一个数据被访问了,那么在其附近的数据也有很高的概率会被访问。
-
顺序局部性(Sequential Locality):如果一个数据被访问了,那么在其之后或之前的数据也有很高的概率会被访问。
通过充分利用局部性原理,计算机可以提高数据访问的效率,从而提高程序的执行效率。例如,在缓存中存储最近访问过的数据,可以避免反复访问主存中的数据,提高程序运行效率。