内容发布更新时间 : 2025/6/30 18:12:37星期一 下面是文章的全部内容请认真阅读。
页表项位数为:有效位+保护位+修改位+使用位+物理页号位数=4+22=26位。
为简化页表访问,每项大小取32位。因此,每个进程的页表大小为:226×32b=256MB。 如果按实际计算出的页表大小构建页表,则页表过大而导致页表无法一次装入内存。
24. 假定一个计算机系统中有一个TLB和一个L1 data cache。该系统按字节编址,虚拟地址16位,物理地
址12位;页大小为128B,TLB为四路组相联,共有16个页表项;L1 data cache采用直接映射方式,块大小为4B,共16行。在系统运行到某一时刻时,TLB、页表和L1 data cache中的部分内容(用十六进制表示)如下:
组号 标记 页框号 有效位 标记 页框号 有效位 标记 页框号 有效位 标记 页框号 有效位 0 1 2 3
03 03 02 07 – 2D – – 0 1 0 0 09 02 08 63 0D – – 0D 1 0 0 1 00 04 06 0A – – – 34 0 0 0 1 07 0A 03 72 02 – – – 1 0 0 0 (a) TLB(四路组相联):四组、16个页表项
虚页号 页框号 有效位 行索引 标记 有效位 字节3 字节2 字节1 字节0 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
08 03 14 02 – 16 – 07 13 17 09 – 19 – 11 0D 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1
0 1 2 3 4 5 6 7 8 9 A B C D E F
19 15 1B 36 32 0D – 16 24 2D 2D – 12 16 33 14 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 12 – 03 – 23 46 – 12 23 – 43 – 76 A3 2D – 56 – 45 – 34 67 – 54 62 – 62 – 83 F4 4A – C9 – 12 – C2 23 – 65 12 – 23 – 21 23 45 – AC – CD – 2A 3D – DC 3A – C3 – 35 11 55 – (b) 部分页表:(开始16项) (c) L1 data cache:直接映射,共16行,块大小为4B
请回答下列问题:
(1)虚拟地址中哪几位表示虚拟页号?哪几位表示页内偏移量?虚拟页号中哪几位表示TLB标记?
哪几位表示TLB索引?
(2)物理地址中哪几位表示物理页号?哪几位表示页内偏移量?
(3)主存(物理)地址如何划分成标记字段、行索引字段和块内地址字段?
(4)CPU从地址067AH中取出的值为多少?说明CPU读取地址067AH中内容的过程。 参考答案:
(1)16位虚拟地址中低7位为页内偏移量,高9位为虚页号;虚页号中高7位为TLB标记,低2位
为TLB组索引。
(2)12位物理地址中低7位为页内偏移量,高5位为物理页号。
(3)12位物理(主存)地址中,低2位为块内地址,中间4位为cache行索引,高6位为标记。 (4)地址067AH=0000 0110 0111 1010B,所以,虚页号为0000011 00B,映射到TLB的第00组,将
0000011B=03H与TLB第0组的四个标记比较,虽然和其中一个相等,但对应的有效位为0,其
余都不等,所以TLB缺失,需要访问主存中的慢表。直接查看0000011 00B =00CH处的页表项,有效位为1,取出物理页号19H=11001B,和页内偏移111 1010B拼接成物理地址:11001 111 1010B。根据中间4位1110