假设计算机 M 的主存地址为 24 位,按字节编址,采用分页存储管理方式,虚拟地址为 30 位,页大小为 4KB,TLB 采用 2 路组相联方式 和LRU 替换策略,一共8组。请回答一下问题。
(1) 虚拟地址中有哪几位表示虚页号? 哪几位表示内存地址?
(2)己知访问 TLB 时虚页号高位部分用作 TLB 标记,低位部分用做 TLB 组号,M 的虚拟地址中哪几位是 TLB 标记? 哪几位是 TLB 组号?
(3) 假设 TLB 为空,访问虚页号为 10、12、16、7、26、4、12、20,在此过程中,哪一个虚页号对应的 TLB 表项被替换,说明理由。
(4)若 M 中虚拟地址位数增加 32 位,则 TLB 表项位数增加几位?
【分析】分页存储管理方式,指以页为单位的存储管理模式;对比认识块存储管理方式,即cache中所使用的按块为单位进行存储。
页式虚拟存储器,指页为单位的虚拟存储器,虚拟空间与主存空间都被划分为同样大小的页,主存的页叫做实页,虚存的页称为虚页。虚拟地址分为两个字段:虚页号和页内地址。
TLB(快表)产生于对一些常用的页表,但频繁从主存中取出比较浪费资源,因此将常用的页表项存放在高速缓冲器中,便把组成的高速缓冲器叫做快表。快表的作用在虚存和实存之间快速查找到匹配;而cache的作用是将主存中常用的内容复制到cache中,能够进行快速得查找到。所以TLB快表常与cache共同组成存储系统。
LRU(近期最少使用),如名字所说,就是近期最少使用的页表就进行替换,可以采用队列的思想去理解,将访问顺序按照队列排队,先进先替换。
2路组相联,就是将两个页表项作为一组,在实页号的对应上,结合下图进行理解。
【解题】
1.按字节编址,则页面大小为4KB,则12位就可以表示页内地址。虚拟地址中30位,其中低12位为页内地址,则高18位就为虚页号。
2.TLB采用二路组相联,且共有8组,则需要3位就可以表示组号;虚页号共有18位,其低3位表示组号,高15位则表示TLB标记。
3.采用的时LRU算法,且二路组相联共8组,因此TLB组号=虚页号 mod TLB组数=虚页号 mod 8;则10、12、16、7、26、4、12、20模完后为2、4、0、7、2、4、4、4。则只有映射到4号组的虚页号大于2,且相应的顺序为12、4、12、20,则4在20进入的时候将其替换出来。
4.虚拟地址增加到32位,但页面大小仍为4KB,因此虚页号为32-12=20位,增加了2位,因此TLB标记字段增加了2位,因此每一个TLB表项位数应增加2位。