作者:婉里去_ | 来源:互联网 | 2023-08-23 11:29
文章目录
- 局部性原理
- 什么是快表
- 引入块表后,地址的变换过程
- 小结
局部性原理
如下所示代码,其中i,while代码段,他们很可能会被放到内存块的10、23号内存块中,如图2所示
我们不妨假设10号存放的就是while指令,而23号内存块存放的是变量i
时间局部性
如果执行的某条指令会在不久后被再执行,例如上文中的while()判断,我们就称时间局部性。
空间局部性
而空间局部性也很好理解,我们执行完某条指令后,不久之后,其附近的指令也可能被执行的话,我们就称为空间局部性。
什么是快表
快表又被称为联想寄存器,是一种访问速度比内存快很多的高速缓冲存储器,用于存放之前访问过的页表项。与之对应,我们访问在内存中查找指令页表项信息的页表就称之为慢表。
引入块表后,地址的变换过程
如下图所示,假如我们进程有三条指令,他们都在页号0所对应的内存块中,页内偏移量分别是0、4、8。按顺序执行时,他们会执行如下几个过程:
- 首先执行指令1,我们会看到他页号为0,首先和页表寄存器比较一下这这个页号是否超过页表长度,没有超说明合法
- 然后查看这个页号在快表中是否存在,若不存在则去内存中查找
- 通过页表起始地址+页号*页面长度+便宜量算得物理地址并执行相应指令,然后会将这个页号以及对应的块号地址存入快表中
- 由于后续第2条指令、第3条指令都是页号0中,可通过快表直接得到对应内存块的物理地址,配合偏移量即可直接找到这条指令的实际物理地址
小结
用一道问题来小结一下快表地址变换机构
假如某系统基本分页存储管理采用快表的地址变换机构,访问快表耗时1us,慢表100us。假如快表命中率为90%,那么他们访问物理地址平均耗时是多少呢?
解答
很简单,由题目可知采用的是快表地址变换机构且快表命中率90%,那么快表耗时就是
(1+100)*0.9===>1us快表查询+100us到物理地址捞指令到cpu执行, * 90的概率
(1+100+100)*0.1==>(即一次快表查询没找到 然后去内存找地址100us,再到物理地址中捞指令到cpu执行100us)
把上述相加得到111us,即访问物理地址的平均耗时。