《计算机组成原理》课程习题答案 - 秦磊华2011-9-8 下载本文

《计算机组成原理》习题答案 (秦磊华)

数量是多少?

解:该芯片1位数据线,行选通和列选通各一位,64K的存储器对应16根地址线,在DRAM中,行和列复用,即地址线为8根,故在不考虑电源线的情况下,该DRAM芯片的最小引脚数为1+1+1+8 = 11个。

4.10 有一个具有8个存储体的低位交叉存储器中,如果处理器的访问地址为以下八进制地址值,求该存储器比单体存储器的平均访问速度提高多少?(忽略最初的启动时延)

(1)10018,10028,10038 ,…,11008 (2)10028,10048,10068 ,…,12008 (3)10038,10068,10118 ,…,13008

解:假设改存储体的地址空间从00008开始,并且存储周期为T,故有:

三个访问序列访存空间的大小都为64个存储单元,故在不使用低位交叉存储体的情况下访存耗时都为64T。

(1)该访问序列访存如图所示:

M0 M1 M2 M3 M4 M5 M6 M7 ... 10008 10108 10208 ... 11008 ... 10018 10118 10218 ... ... 10028 10128 10228 ... ... 10038 10138 ... ... ... 10048 10148 ... ... ... 10058 10158 .. ... ... 10068 10168 ... ... ... 10078 10178 ... ... 则访问该段序列所用时间为T+63*T/8 = 71T/8 故速度提升倍数为:(64T*8)/71T=7.2倍 (2)该访问序列访存如图所示:

M0 M1 M2 M3 M4 M5 M6 M7

... ... 10108 10208 ... 12008 ... ... ... ... ... ... 10028 ... ... ... ... ... ... ... ... ... 10048 ... ... ... ... ... ... .. ... ... 10068 ... ... ... ... ... ... ... ... 则访问该段序列所用时间为3T + 63*2T/8 = 75T/4 故速度提升倍数为:(64T*4)/75T=3.41 (3)该访问序列访存如图所示:

M0 M1 M2 M3 M4 M5 M6 M7

... ... ... ... 10308 ... ... 13008

第 33 页 共 70 页

... ... 10118 ... ... 10418 ... ... ... ... 10228 ... ... ... ... 10038 ... ... 10338 ... ... ... ... 10148 ... ... 10448 ... ... ... ... 10258 ... ... ... ... 10068 ... ... 10368 ... ... ... ... 10178 ... ... 10478 ... 《计算机组成原理》习题答案 (秦磊华)

则访问该段序列所用时间为4T+ 63*3T/8= 221T/8 故速度提升倍数为:(64T*8)/221T=2.3

4.11 用16K?1位的DRAM芯片构成64K?8位的存储器,设存储器的读写周期为0.5?s,要使CPU在1?s内至少访问存储器一次,问采用哪种刷新方式比较合适?若每行刷新间隔不超过2ms,该方式下刷新信号的间隔是多少?

解:由于要使CPU在1?s内至少访问存储器一次,而存储器的读写周期为0.5?s,故不可采用集中式刷新方式,因为集中是刷新的死时间会超过1?s,从而不可保证CPU在1?s内至少访问存储器一次,故采用异步刷新方式比较合适。

设16K?1位的DRAM芯片采用地址复用后,采用128*128的排列方式,则将2ms分成128个时间段,每段的时间为:2000?s/128=15.625?s,即刷新信号的产生周期为15.625?s

14

4.12设Cache的容量为2块,每块是一个32位字,主存容量是Cache容量的256倍,其中有如表4.11所示数据(地址和数据均采用16进制表示).

表4.11 主存数据分布情况

地址 000000 000008 010004 01FFFC FFFFF8 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460 将主存中这些数据装入到Cache后, Cache各块中的数据内容及相应的标志是什么? (1)全相联映射 (2)直接相联映射 (3)组相联映射 解:(1)全相联映射

全相联映射方式下,主存的一个数据块可映射到Cache的任意行,表中共有5个地址,数据从主存映射到Cache后占用其中的5行,假设就是Cache的前5行,具体分布如下表所示。

Cache行 0 1 2 3 4 标志 00,0000,0000,0000,0000,0000 (000000H) 00,0000,0000,0000,0000,0010(000002H) 00,0000,0100,0000,0000,0001(004001H) 00,0000,0111,1111,1111,1111(007FFFH) 11,1111,1111,1111,1111,1110(03FFFFEH) 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460

(2)直接相联映射

该方式下,主存的一个数据块只能射到Cache的特定行,表中共有5个地址,数据从主存映射到Cache后占用其中的特定的5行。由于一个数据块为32位,即4B,所以,只需要用主存地址的最后2位表示块内偏移地,由于Cache有16K行,所有,去掉最后2位地址后的连续14位就表示主存数据块映射到的Cache行,剩余的8位即为对应的标志.具体分布如下表所示。

第 34 页 共 70 页

《计算机组成原理》习题答案 (秦磊华)

Cache行 00 0000 0000 0000(0000行) 00 0000 0000 0010(0002行) 00 0000 0000 0001(0001行) 11 1111 1111 1111(03FFF行) 11 1111 1111 1110(03FFE行) 标志 0000 0000 0000 0000 0000 0001 0000 0001 1111 1111 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460

(3)组相联映射:(假设采用的是四路组相联1)

该方式下,主存的一个数据块只能射到Cache的特定组中的任意行,假定Cache采用四路组相联,则Cache共分为4K组。由于一个数据块为32位,即4B,所以,只需要用主存地址的最后2位表示块内偏移地,由于Cache有4K组,因此,去掉最后2位地址后的连续12位就表示主存数据块映射到的Cache组,剩余的10位即为对应的标志.具体分布如下表所示。

Cache组 0000 0000 0000(000组任意行) 0000 0000 0010(002组任意行) 0000 0000 0001(001组任意行) 1111 1111 1111(0FFF组任意行) 1111 1111 1110(0FFE组任意行) 标志 00 0000 0000 00 0000 0000 00 0000 0100 00 0000 0111 11 1111 1111 数据 87568536 87792301 9ABEFCD0 4FFFFC68 01BF2460

4.13 某计算机Cache由64个存储块构成,采用四路组相联映射方式.主存包含4096个存储块,每块由128个字组成.访问地址为字地址. (1)求主存地址和Cache地址各有多少位?

(2)按照题目条件中的映射方式,列出主存地址的划分情况,并标出各部分的位数. 解:(1)主存容量为:4096*128=512KW 故主存地址位数为:19位 Cache容量为:64*128=8KW 故Cache地址位数为:13位

(2)每个组中包含的存储块的个数为:4块 故索引字段(Index)位数为:2位

由于每块由128个字组成.访问地址为字地址,故块内地址的位数为:7位 故标记部分(Tag)的位数为:10位 则主存地址划分情况如下:

12Tag (标记) Index(索引) 块内字地址

10 2 7

4.14 某计算机中主存容量为4MB,Cache容量为16KB,每块包含8个字,每字32位,映射方式采用4路组相联.设Cache的初始状态为空,CPU依次从主存第0,1,2,…,99号单元读出100个字(每次读一个字),并重复此操作10次.替换算法采用LRU. (1)求Cache的命中率

(2)若Cache比主存块10倍,分析采用Cache后存储访问速度提高了多少?

解:(1)0,1,2,…,99号单元共100个字,每块8个字,故100个字被分配在13块内。

Cache中能存放的主存块数为:16KB/8=2K块

第 35 页 共 70 页

《计算机组成原理》习题答案 (秦磊华)

因为是四路组相联,故每组中包含的块数为:2K/4=512块

由于Cache的初始状态为空,根据前面的分析,13块数据调入Cache后不会被调出,所有10次访问中,每块第一次访问不命中外,其余访问均可命中,因此10次循环访问共访问内存100*10 =1000次,其中不命中的次数只有13次。 则Cache的命中率为:(1000-13)/1000=98.7%

(2)设访问Cache的访问时间为T(访问一个数据单元所用的时间),则访问主存的访问时间为10T,故有:

使用Cache后访存所用时间为:T2=13*10T+(1000-13)*T=1117T 不使用Cache访问耗时为:T1=10000T

故使用了Cache后速度提高了:10000T/1117T=8.95倍

4.15 假定某数组元素按行优先顺序存放在主存中,则以下两段伪代码A和B中: (1)分析两段代码中对数组访问的时间局部性和空间局部性. (2)分析变量SUM的时间局部性和空间局部性.

(3)分析for循环体对指令访问的时间局部性和空间局部性.

Int sum_array_A(int a[M][N]) { Int i,j,sum=0; For (i=0;i

解:(1)由于数组在内存中按照行优先存放,数据按块从主存映射到Cache中。

而程序A中对数组访问是按行优先方式进行的,故有很好的空间局部性,但由于每个数组元素只使用一次,故不存在时间局部性;

而程序B中对数组访问是按列优先方式进行的,故没有空间局部性,由于每个数组元素只使用一次,故不存在时间局部性;

(2)变量SUM是单个变量,因此两段程序对该变量的访问不存在空间局部性,由于变量在循环中被多次使用,故具有两好的时间局部性。

(3)在for循环中对指令访问都很好的体现了时间局部性和空间局部性。

4.16 主存容量为8MB,虚存容量为2GB,分页管理时若页面大小为4KB,求出对应的VPN、VPO、PPN、PPO的位数。

解:虚存所包含的页面数为:2GB/4KB=512K页

故VPN的位数为:19位

由于页面的大小为4KB,故VPO和PPO的位数均为:12位 主存所包含的页面个数为:8MB/4KB=2K 故PPN的位数为:11位

4.17 某页式虚拟存储器共8页,每页1KB,主存容量为4KB,页表如表4.12所示.

第 36 页 共 70 页