【题目】
44.(12分)某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为16 MB,主存(物理)地址空间大小为1 MB,页面大小为4 KB;Cache采用直接映射方式,共8行;主存与Cache之间交换的块大小为32 B。系统运行到某一时刻时,页表的部分内容和Cache的部分内容分别如题44-a图、题44-b图所示,图中页框号及标记字段的内容为十六进制形式。
请回答下列问题。
(1)虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框号(物理页号)?
(2)使用物理地址访问Cache时,物理地址应划分成哪几个字段?要求说明每个字段的位数及在物理地址中的位置。
(3)虚拟地址001C60H所在的页面是否在主存中?若在主存中,则该虚拟地址对应的物理地址是什么?访问该地址时是否Cache命中?要求说明理由。
(4)假定为该机配置一个4路组相联的TLB,该TLB共可存放8个页表项,若其当前内容(十六进制)如题44-c图所示,则此时虚拟地址024BACH所在的页面是否在主存中?要求说明理由。
【答案】:
(1)16M=224,4K=212,故虚拟地址为24位,其中高12位为虚页号;(1分)1M=220,故物理地址为20位,其中高8位为物理页号。(1分)
(2)20位物理地址中,最低5位为块内地址,中间3位为Cache行号,高12位为标志。(3分)
(3)在主存中。(1分)
虚拟地址001C60H=0000 0000 0001 1100 0110 0000B,故虚页号为0000 00000001 B,查看0000 0000 000 1B=001H处的页表项,由于对应的有效位为1,故虚拟地址001C60H所在的页面在主存中。(1分)
页表001 H处的页框号(物理页号)为04H=0000 0100B,与页内偏移1100 01100000B拼接成物理地址:0000 0100 1100 0110 0000B=04C60H。(1分)对于物理地址0000 0100 1100 01100000B,所在主存块只可能映射到Cache第3行(即第011B行);由于该行的有效位=1、标记(值为105H)≠#04CH(物理地址高12位),故访问该地址时Cache不命中。(2分)
(4)虚拟地址024BACH=0000 0010 0100 1011 1010 1100B,故虚页号为0000 00100100B;由于TLB只有8/4=2个组,故虚页号中高11位为TLB标记,最低1位为TLB组号,它们的值分别为0000 0010 010B(即012H)和0B,因此,该虚拟地址所对应物理页面只可能映射到TLB的第0组。(1分)
由于组0中存在有效位=1、标记=012H的项,所以访问TLB命中,即虚拟地址024BACH所在的页面在主存中。(1分)