具有快表的地址变换机构是基本嫡长子变换机构的改进版 由于局部性原理所以引入了快表。
**时间局部性原理:**如果执行了程序中的某条指令,那么不久之后这条指令很可能再次被执行;如果某个数据被访问过,不久之后,该数据很可能再次被访问。(因为程序中存在大量的循环) **空间局部性:**一旦程序访问了某个存储单元,在不久之后,其附近的储存单元页很有可能被访问。(因为很多数据在内存中都是连续存放的)
在基本地址变换机构中,每次访问一个逻辑地址,都需要查询内存中的页表,由于局部性原理,可能连续很多次查到的都是同一个页表项。既然如此,能否利用这个特性减少访问页表的次数呢?
(1)地址变换过程 1.算页号、页内偏移量 2.检查页号合法性 3.查页表,找到页面存放的内存块号 4.根据内存块号与页内偏移量得到物理地址 5.访问内存目标单元 (2)访问一个逻辑地址的访存次数 1.算页号、页内偏移量 2.检查页号合法性 3.查快表。若命中,即可知道页面存放的内存块号,可直接进行5,为命中则进行4 4.查页表,找到页面存放的内存块号,并且将页表项复制到块表中 5.根据内存块号与页内偏移量得到物理地址 6.访问目标内存单元
(1)地址变换过程
(2)访问一个逻辑地址的访存次数 什么是快表? 快表,又称联想寄存器(TLB),是一种访问速度比内存快很多的高速缓冲器,用来存放当前访问的若干页表项没,以加快地址变换的过程。于此对应,内存中的页表常称为慢表。
.
假设快表耗时为1,访问内存是100, 则在为引进快表之前,CPU查一次逻辑地址需要两次访问内存,第一次是查页表,第二次是查实际物理地址。平均时间是200. 在引进快表之后,由于快表的命中率为0.9,在命中后耗时为,访问一次快表和访问一次内存,时间为1+100=101,也还有可能快表未命中,耗时为201(访问一次快表+访问两次内存),综合考虑为0.1201+0.96101=111 也有CPU设计为两种访问机制同时进行,就为(1+100)0.9+200*0.1=110.9