(完整版)计算机组织与体系结构答案中文版(第七版)
发布时间:2020-05-31 01:13:33
发布时间:2020-05-31 01:13:33
计组课后习题答案
UNIT 2
1,设A,B,C的内存地址分别是A[i],B[i],C[i],i从1到1000
LOAD M (A[i])
ADD M (B[i])
STOR M(C[i])
2, a LOAD M (2) 00000001|000000000010
b 一次
3,在IAS机上读取一个值的过程如下:
IR中操作码控制总线,存储器地址XMAR,MAR中值地址总线
X中数据数据总线,数总线地址MBR
写入一个值:
IR中操作码控制总线,存储器地址XMAR,MAR值地址总线
MBR值数据总线,数据总线值X
4,程序代码:LOAD M(0FA)
ADD M(0FB)
LOAD M(0FA)
JUMP +M(08D,0:19)
LOAD –M(0FA)
ADD M(0FB)
程序代码意图:首先装入0FA值,然后与0FB相加,再装入0FA值,若AC中值非负,取0FA左指令再装入-(0FA)将0FB的值相加后装入AC中
5,如图所示
6,便于同时存取两个连续地址序号的存储单元,提高访问速度
7,(1)存储器数据传输率快了32倍
(2)数据通道最大数目增大了一倍
(3)单通道最大数据传输速率提升了5倍。各种技术的使用,提升了整机的性能。
8,回答正确,但是不适合用户理解。MAC机的时钟速率是1.2ghz,P4为2.4ghz,而时钟速率在一定程度上反映了计算机的执行速度,所以P4的机器可能是目前最符合用户要求的机型。
9,在这种表示方法中,10个管表示了十个数字,而使用二进制可以表示 个数字
10,(画图) 略
11, MIPS=*
12,∵MIPS=*
∴CPI(VAX)=5,CPI(IBM)=1.39
IC≈
13,CPI=(1+2+2+2)/=7*
MIPS=* =*=5.71*
T=7**=1.75*
14,a:算术平均法适用于较多程序,抖动较大
调和平均发适用于较少程序,抖动较小
b:计算机A Ra=1/4×(100+0.1+0.2+1)≈25 MIPS
Rb=4/(1/100+10+5+1)=0.25 MIPS
计算机B Ra=1/4×(10+0.1++1+1/8)=3.06
Rb=4/(0.1+1+10+8)=0.21
计算机C Ra=1/4×(5+5+2+1)=3.25
Rb=4/(0.2+0.2+0.5+1)=2.1
故 C>A>B
第三章
1 步骤一
存储器 CPU寄存器
1 0011 1 pc
2 5940 ac
3 26 0011 ir
5 0003
6
步骤二
存储器 CPU寄存器
1 0011 2 pc
2 5940 0003 ac
3 26 0011 ir
5 0003
6
步骤三
存储器 CPU寄存器
1 0011 2 pc
2 5940 0003 ac
3 26 5940 ir
5 0003
6
940 0003
步骤四
存储器 CPU寄存器
1 0011 3 pc
2 5940 0006 ac
3 26 5940 ir
5 0003 3+3=6
6
940 0003
步骤五
存储器 CPU寄存器
1 0011 3 pc
2 5940 0006 ac
3 26 26 ir
5 0003
6
940 0003
步骤六
存储器 CPU寄存器
1 0011 4 pc
2 5940 0006 ac
3 26 26 ir
5 0003
6 0006
3.2 步骤一中详细解释:
Pc中内容为300,将PCMAR,然后将第一条指令装入数据总线,数据总线MBR,MBRIR
3.3 (a)最大可直接寻址的容量是 b
(b),1,取一次指令要两次访问存储器
2,将降低存储器容量
(c) 程序计数器和指令寄存器各需要24位和8位。
3.4
(a)0~()
(b) 0~()
(c)I/O模块与CPU互连的特点
(d) 个,1个。因为总共只有16位cpu地址,故处理器只能支持(16-I/O端口位数)的位数
3.5
T=1/2*,外部数据总线L1=16,L=32
(1) f=1/t=2* ∴v=*f≈b/s
(2) 能提高性能,由公式v=1/T* 可知f与L变大都可以提高传输速率
3.6
(1)电传输入INPR
INPRCPU(经I/O模块)
CPUOUTR(经I/O模块)
OUTR电传输出
(2)设置优先级,cpu处理为1,cpu通过I/O模块向外输出或者输入为2,电传输入/输出为3.设置中断允许位,当优先级较低的操作遇到高优先级操作的中断请求时,置IEN=1,允许中断,从而实高速cpu处理与低速I/O处理的协调。
3.7
(1)
(2)传指令时,为相同的传输速率
传数据时,仍然为倍差
3.8 这段时间一定比时钟周期小。
因为链式反应在一个时钟周期开始的时候应判断各主控方的优先级,只有该时间周期小于时钟周期才能即调整优先级又实现各主控方各自的操作。
3.9 减小工作量,提高效率。因为不用判断优先级为16的设备的TR线,任一高优先级设备可抢占该设备时间片,只有TR0-TR15都无效时,TR16自然使用时间片。
3.10 (1) 因为中断就是为了提高高速设备的使用效率,平衡高低速设备。故优先级越低,其速率就越低,其余高优先级操作耗时都比其少,所以TR16的平均等待时间就最低。(在该特定设备中)
(2) 若其余操作一直请求使用时间片,这种条件下不成立。
3.11
(a)时钟周期T = 1 / f = 100 ns
读总线周期 = 2.5T = 250 ns
(b)250 – 20 = 230 ns
处理器至少应在230ns时将数据放到总线上
3.13
(a)总线时钟周期 = 1 / f * 109 ns =200 ns
Write信号宽度 = 50 * 200 = 1000
(b)
(c)
3.14
(a)原周期 = 4 + 4 * 3 =16时钟周期
4 * 2 /16 = 50%
(b)原周期 = 4 + 3 * 3 + 13 = 26时钟周期
4 * 2 / 26 = 30.8%
3.15
(a)Intel8088的总线宽度为8位
时钟周期 T = 1 / f = 1 / 8M =125 ns
4 * 8 / 4T = 64M 位/s
(b)2 * 8 / 4T = 32M 位/s
3.16
若使用偶对齐的字,取操作数需要4个存储器周期(包括取指令),
4 *4 / 4M = 4 ms
若使用偶对齐的字,取操作数需要8个存储器周期(包括取指令),
8 *4 / 4M = 8 ms
3.17
1 * 20% + 2 * 40% + 4 * 40% = 2.6
处理速率相对16位微处理器提高了1.6倍
3.18
处理器处理完一条指令后才会进入中断处理周期
9 * T = 9 / f = 9 / 10M = 900 ns
第四章
4.1
m=64,k=4
组数v=m / k=64 / 4=16=2d, d=4
块数4k=2s,s=12
标记=s-d=8位
块大小=2w=128*8=210,w=10
主存地址= 标记 组 字
8 | 4 | 10 |
4.2
k = 2
块大小=行大小=2w = 16,w = 4
寻址单元数=2s+w = 64M= 64*220
s + w = 26,s = 22
cache的行数= k*v = k*2d = 8K / 16
d = 8
标记大小= s – d = 14
主存地址= 标记 组 字
14 | 8 | 4 |
4.3
(a)直接映射
地址 | 标记=8 | 行=14 | 字=2 |
111111 | 11 | 0444 | 1 |
666666 | 66 | 1999 | 2 |
BBBBBB | BB | 2EEE | 3 |
(b)全关联映射
地址 | 标记=22 | 字=2 |
111111 | 044444 | 1 |
666666 | 199999 | 2 |
BBBBBB | 2EEEEE | 3 |
(c)两路组关联映射
地址 | 标记=9 | 组=13 | 字=2 |
111111 | 022 | 0444 | 1 |
666666 | 0CC | 1999 | 2 |
BBBBBB | 177 | 0EEE | 3 |
4.4
(a)地址长度=s+w=24
寻址单元数=2s+w=224
块大小=2w=4
主存的块数=2s=222
Cache行数=m=2r=214
标记大小=s-r=8
(b)地址长度=s+w=24
寻址单元数=2s+w=224
块大小=2w=4
主存的块数=2s=222
标记大小=s=22
(c)地址长度=s+w=24
寻址单元数=2s+w=224
块大小=2w=4
主存的块数=2s=222
每组的行数=k=2
组数v=2d=213
Cache行数=k*v=2*213=214
标记大小=s-d=9
4.5
每组的行数=k=4
块大小=行大小=2w=4*4=24,w=4
行数=16k / 24 = 210=k*v
组数v=210 / 22 = 28 = 2d,d=8
标记s – d = 20
主存地址= 标记 组 字
20 | 8 | 4 |
对于地址ABCDE8F8,转化为二进制为:1010 1011 1100 1101 1110 1000 1111 1000
块号j=1010 1011 1100 1101 1110 1000 1111 1000 / 2w
组号i=j mod v=(1010 1011 1100 1101 1110 1000 1111 1000 / 24)mod 28
=27+23 + 22 + 2 + 1=143
故地址ABCDE8F8映射到cache的第143组中四行中的任意一行
4.8
(a)块大小=2w= 8,w=3
行数m=2r=32,r=5
s + w = 16,s = 13
主存地址 = 标记 行 字
8 | 5 | 3 |
(b)
0001 0001 0001 1011
块号j = 0001 0001 0001 1011 / 8 = 29 + 25 + 21 + 20
行号i = j mod m = (29 + 25 + 21 + 20)mod 25 = 3
以此类推,1100 0011 0011 0100的行号为6;1101 0000 0001 1101的行号为3;1010 1010 1010 1010的行号为21。
另解:
0001 0001 0001 1011(00011=3)
1100 0011 0011 0100(00110=6)
1101 0000 0001 1101(00011=3)
1010 1010 1010 1010(10101=21)
(c)
0001 1010 0001 1000
0001 1010 0001 1001
0001 1010 0001 1011
0001 1010 0001 1100
0001 1010 0001 1101
0001 1010 0001 1110
0001 1010 0001 1111
(d)32*8=256
(e)标记用来将能装入同一行的不同块区分开来。
4.11
(a)行大小=2w = 64,w = 6
地址长度=s + w =32,s = 26
标记大小= s – r = 20,r = 6
主存地址= 标记 行 字
20 | 6 | 6 |
寻址单元数=2s+w=232
主存的块数=2s=226
Cache行数=m=2r=26
(b)行大小=2w = 64,w = 6
地址长度=s + w =32,s = 26
主存地址= 标记 字
26 | 6 |
寻址单元数=2s+w=232
主存的块数=2s=226
Cache行数不确定
标记大小=s=26
(c)每组的行数=k=4
行大小=2w = 64,w = 6
地址长度=s + w =32,s = 26
标记大小= s – d = 9,d = 17
主存地址= 标记 组 字
9 | 17 | 6 |
寻址单元数=2s+w=232
主存的块数=2s=226
Cache组数=v=2d=217
Cache的行数=k*2d =4*217 = 219
标记大小=s – d =9
4.12
(a)块大小=行大小=2w = 16,w = 4
寻址单元数=2s+w= 1M = 220,s + w = 20,s =16
Cache行数=m=2r=64K / 16 = 212,r = 12
标记大小= s – r = 4
主存地址= 标记 行 字
4 | 12 | 4 |
地址 | 标记=4 | 行=12 | 字=4 |
F0010 | F | 001 | 0 |
01234 | 0 | 123 | 4 |
CABBE | C | ABB | E |
(b)F0010 E0011
(c)块大小=行大小=2w = 16,w = 4
寻址单元数=2s+w= 1M = 220,s + w = 20,s =16
主存地址= 标记 字
16 | 4 |
地址 | 标记=16 | 字=4 |
F0010 | F001 | 0 |
CABBE | CABB | E |
(d)块大小=行大小=2w = 16,w = 4
寻址单元数=2s+w= 1M = 220,s + w = 20,s =16
每组的行数= k = 2
Cache行数=k*2d = 64K / 16 = 212,d = 11
标记大小= s – d = 5
主存地址= 标记 组 字
5 | 11 | 4 |
地址 | 标记=5 | 组=11 | 字=4 |
F0010 | 1E | 001 | 0 |
01234 | 00 | 123 | 4 |
CABBE | 19 | 2BB | E |
4.13
每行用两位来做标记。最开始装入四行中的每一行分别标记为0、1、2、3。当0行被引用时,标记不变;当1行被引用时,1行标记改为0,0行标记加1;2行被引用时,2行标记改为0,0、1行标记分别加1;3行被引用时,3行标记改为0,0、1、2行标记分别加1;当把一块读入到这组中时,标记就为0,原0、1、2行标记分别加1,3行被替换出去。
4.14
对于回写式Cache,换出一行用30 + 7 * 5=65ns时间。对于写直达式Cache,行的每次更新都要用30ns将字写到主存。故,若行换出之前写入平均超过3次的话,回写式更有效。
4.15
(a)对于外层循环,程序停留在对数组a的元素的不断存取。
(b)对于内层循环,在一小段时间内,程序停留在在数组a中某一元素的不断存取。
4.18
(a)未命中次数=24
命中率=1 – 24 / [8 + (18 + 16) * 10] = 93.1%
(b)未命中次数=6
命中率=1 – 6 / [8 + (18 + 16) * 10] = 98.3%
4.19
(a)106 *8 *0.001 = 8000美分 = 80美元
(b)106 *8 *0.01 = 80000美分 = 800美元
(c)100 * H + 1200 * (1 – H) = 100 * 1.1
H = 99.1%
4.21
(a)50 + 15 * 5 +2.5 = 127.5 ns
(b)原平均存取时间=2.5 * 0.95 + 127.5 *0.05 = 8.75 ns
行增加到128字节后:
Cache丢失时存取时间 = 50 + 31 *5 + 2.5 = 207.5 ns
平均存取时间 = 2.5 * 0.97 + 207.5 *0.03 = 8.65 ns
因此降低了平均存取时间。
4.22
字在Cache的概率 = 0.9,存取时间 = 20 ns
字在主存的概率 = 0.1 *0.6 = 0.06,存取时间 = 60 + 20 = 80 ns
字在磁盘的概率 = 0.1 * 0.4 = 0.04,存取时间 = 12 + 60 +20 = 92 ns
平均存取时间 = 20 * 0.9 + 80 * 0.06 + 92 * 0.04 = 26.48 ns
4.24
(a)时钟周期 T = 1 / f = 1 / 16.67M =60 ns
存储器周期 = 2T*0.9 + 3T * 0.1 = 126 ns
(b)2T*0.9 + 5T * 0.1 = 138 ns
4.25
(a)1M * 2 * 300 / 109 = 60%
(b)假设Cache的存取时间为x ns
总线利用率 = (0.5 *2 *x + 0.5 * 2 *300) *1M /109 =(x + 300) /1000
知 x<300,故总线利用率< 60%
若x<<300,则总线利用率~30%
4.26
(a)Ta = W * (Tc + Tb) + (1 - W) * [ Tc + ( 1 - H ) * Tm ]
(b)Ta =Wb * ( Tc + Tm )
4.27
Ta = H1 * Tc1 + (H2 – H1) * Tc2 + (1 – H2) * (Tm + Tc1)
4.28
(a)1 + 4 =5时钟周期
(b)
(c)1 + 4 * 4 = 17时钟周期
4.29
行大小为一个字时,突发式和非突发式传送的平均读丢失代价相同:
3.2% * 5 = 0.16时钟周期
行大小为四个字时,突发式:1.1% * 17 = 0.187时钟周期
第五章
1, ROM存储器读/写位数往往不止一位
2, 一个周期内用9.6纳秒刷新,百分比为3.84%
3, 周期为100ns
4, 作图题(由于没办法转成电子档,在此略)
5,
6, A:存储周期
B:8
7,(a)a~f 写模式; g~m 读模式
(b) 1111,1110,1101,1100,1011,1010
(c) H I J K L M
D1 0 0 0 1 1 0
D2 1 1 1 0 1 0
D3 0 0 0 1 1 1
D4 0 1 0 1 0 1
8, 作图题(由于没办法转成电子档,在此略)
9, 总共需要的芯片数为64,故fit之和为64*2000
Mtbf=1/fit(∑)=1*10*9/64*2000=7812小时
10, 若校验码出错,则在故障字中仅有1位为1,且的位置对应出错校验码。
11,8位字应采用4位校验位
参考图5.9
得 C1=0
C2=1
C3=0
C4=0
故最后相应校验位位0010
12,0111与1101做异或运算得 1010 故第10位即第6位数据位出错,取反得00011001.
13,1024位需要11位校验位
14,C1=1
C2=0
C3=0
C4=1
C5=0
第六章
6.1 a. j/N b. K/N-K
6.2 TA=Ts+n/Nr
6.3 150ms
4.17ms
0.14ms
154.31ms
6.4 需要8面,782面磁道,75000个扇区
6.5 与不用条带划分的磁盘阵列相比,它仍然改进了I/O请求的性能。当条带容量相对大些后,单个I/O请求只涉及一个磁盘存取,则多个等待I/O的请求能并行处理,这样就减少了每个请求的排队时间。