第 7 章 习 题 答 案 (第二版书)
2(4),2(5),2(9),2(10)-- (省略) 6, 17,23,24(其中表中数据都是16进制)
6. 某计算机中已配有0000H~7FFFH的ROM区域,现在再用8K×4位的RAM芯片形成32K×8位的存
储区域,CPU地址总线为A0-A15,数据总线为D0-D7,控制信号为R/W#(读/写)、MREQ#(访存)。要求说明地址译码方案,并画出ROM芯片、RAM芯片与CPU之间的连接图。假定上述其他条件不变,只是CPU地址线改为24根,地址范围000000H~007FFFH为ROM区,剩下的所有地址空间都用8K×4位的RAM芯片配置,则需要多少个这样的RAM芯片? 参:
CPU地址线共16位,故存储器地址空间为0000H~FFFFH,其中,8000H~FFFFH为RAM区,共215=32K个单元,其空间大小为32KB,故需8K×4位的芯片数为32KB/8K×4位= 4×2 = 8片。
因为ROM区在0000H~7FFFH,RAM区在8000H~FFFFH,所以可通过最高位地址A15来区分,当A15为0时选中ROM芯片;为1时选中RAM芯片,此时,根据A14和A13进行译码,得到4个译码信号,分别用于4组字扩展芯片的片选信号。(图略,可参照图4.15)
若CPU地址线为24位,ROM区为000000H~007FFFH,则ROM区大小为32KB,总大小为16MB=214KB=512×32KB,所以RAM区大小为511×32KB,共需使用RAM芯片数为511×32KB/8K×4位=511×4×2个芯片。
17. 假设某计算机的主存地址空间大小为MB,采用字节编址方式。其cache数据区容量为4KB,采用4
路组相联映射方式、LRU替换和回写(write back)策略,块大小为B。请问:
(1)主存地址字段如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。 (2)该cache的总容量有多少位?
(3)若cache初始为空,CPU依次从0号地址单元顺序访问到4344号单元,重复按此序列共访问16次。
若cache命中时间为1个时钟周期,缺失损失为10个时钟周期,则CPU访存的平均时间为多少时钟周期? 参:
(1)cache的划分为:4KB = 212B = 24组×22行/组×26字节/行,所以,cache组号(组索引)占4位。
主存地址划分为三个字段:高16位为标志字段、中间4位为组号、最低6位为块内地址。 即主存空间划分为:MB = 226B = 216组群×24块/组群×26字节/块
(2)cache共有行,每行中有16位标志、1位有效位、1位修改(dirty)位、2位LRU位,以及数
据B。故总容量为×(16+1+1+2+×8)=34048位。
(3)因为每块为B,CPU访问的单元范围为0~4344,共4345个单元,4345/=67.,所以CPU
访问的是主存前68块(第0~67块),也即CPU的访问过程是对前68块连续访问16次,总访存次数为16×4345 = 69520。
16次
0 0#
1 63
1#
65 128
2#
4288 67#
4344 4352 68#
cache共有16组,每组4行,采用LRU算法的替换情况如下图所示:
根据图中所示可知,第一次循环的每一块只有第一次未命中,其余都命中;以后15次循环中,有20块的第一字未命中,其余都命中。所以命中率p为(69520–68–15×20)/69520 = 99.47%
平均访存时间为:Hit Time + (1–p) × Miss Penalty
=1+10×(1–p) = 1+0.0053×10 = 1.053个时钟周期
23. 假定一个虚拟存储系统的虚拟地址为40位,物理地址为36位,页大小为16KB,按字节编址。若页表中
有有效位、存储保护位、修改位、使用位,共占4位,磁盘地址不在页表中,则该存储系统中每个进程的页表大小为多少?如果按计算出来的实际大小构建页表,则会出现什么问题? 参:
因为每页大小有16KB(=214B) ,所以虚拟页数为240B/16KB=2(40-14)=226页。 物理页面和虚拟页面大小相等(需要14位来表示页内不同(字节)的地址),因为总的物理(内存)地址为36位,(总的物理(内存)地址位数-表示页内不同(字节)的地址的位数=表示不同物理页号需要的位数),所以物理页号的位数为36–14=22位,即需要22位来表示物理页号。
(每一个页或叫做页面对应一个页表项,每个)页表项(的总)位数(类似于图7.41中的页表的每一行)为:有效位+保护位+修改位+使用位+物理页号位数=4+22=26位。
为简化页表访问,每项大小取(比刚刚计算得到的26大的最小的、而且能够被8整除的数,即为)32位。因此,每个进程的页表大小为:226×32b=256MB。
这里恰好每项大小取32位,如果其它情况下计算有效位+保护位+修改位+使用位+物理页号位数=62位,就要取位。书中P281页第二段倒数第二行中的每个页表项占32位,只是举了个例子,不是说所有系统中页表项都是占32位。
如果按实际计算出的页表大小构建页表,则内存过小时,页表过大而可能导致页表无法一次装入内存。(这只是一个相对的说明)
24. 假定一个计算机系统中有一个TLB和一个L1 data cache。该系统按字节编址,虚拟地址16位,物理地
址12位;页大小为128B,TLB为四路组相联,共有16个页表项;L1 data cache采用直接映射方式,块大小为4B,共16行。在系统运行到某一时刻时,TLB、页表和L1 data cache中的部分内容(用十六进制表示)如下:
组号 标记 页框号 有效位 标记 页框号 有效位 标记 页框号 有效位 标记 页框号 有效位 0
03 – 0 09 0D 1 00 – 0 07 02 1 1 2 3
03 02 07 2D – – 1 0 0 02 08 63 – – 0D 0 0 1 04 06 0A – – 34 0 0 1 0A 03 72 – – – 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直接找到cache第14行(即:第E行),有效位为1,且标记为33H=110011B,正好等于物理地址高6位,故命中。根据物理地址最低两位10,取出字节2中的内容4AH=01001010B。