具有快表的地址变换机构

515 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

引入快表的目的:

在没有快表的情况下,一个虚拟地址要转成一个物理地址至少需要两次访问物理内存,第一次是查询内存中的页表,第二次是访问物理页框。如果有暂存着目标页表项的快表,则通过快表访问页表会比在内存中访问页表快很多,有利于缩短从一个虚拟地址转换成一个物理地址的过程的时间。

注意:

增设一个具有并行查找能力的特殊高速缓冲寄存器,又称“联想寄存器”,或称“快表”。用它存放当前访问过的那些页表项。有快表,速度提高。 由于快表贵,故不能做的太大,通常只存放16~512个页表项。从快表中得到所需页表项的几率可达90%。

局部性原理 (Principle of Locality)

1968年美国MIT的Denning提出。指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。 表现为: 时间局部性:即刚被访问过的单元在很短时间内还将被访问。 空间局部性:刚被访问过的单元的邻近单元也将被访问。

具有快表的地址变换过程如下: 在CPU给出有效地址后,由地址变换机构自动地将页号送入快表中。 若快表中有此页号,则直接从快表中读出该页对应的物理块号,送到物理地址寄存器。否则,再访问内存中的页表,从页表项中读出物理块号送到地址寄存器, 同时,将此页表项放入快表中。若快表已满,OS找到一个被认为不再需要的表项,将它换出。

image.png

image.png

例题分析:

例:有一页式系统,其页表存放在主存中:

①如果对主存的一次存取需要1.5 μs,试问实现一次页面访问的存取时间是多少?

②如果系统加有快表,平均命中率为85%,当页表项在快表中时,其查找时间忽略为0, 试问此时的存取时间是多少?

答:若页表存放在主存中,则要实现一次页面访问需两次访问主存:一次是访问页表,确定所存取页面的物理地址(称为定位)。第二次才根据该地址存取页面数据。

■页表在主存的存取访问时间 =1.5*2=3(μs)

■增加快表后的存取访问时间 =0.85*1.5+(1-0.85)21.5=1.725(μs)