计算机组成原理课后习题1-10章答案(第二版) 精品推荐 下载本文

18. 什么是“程序访问的局部性”?存储系统中哪一级采用了程序访问的局部性原理? 解:程序运行的局部性原理指:在一小段时间内,最近被访问过的程序和数据很可能再次被访问;在空间上,这些被访问的程序和数据往往集中在一小片存储区;在访问顺序上,指令顺序执行比转移执行的可能性大 (大约 5:1 )。存储系统中Cache—主存层次采用了程序访问的局部性原理。

25. Cache做在CPU芯片内有什么好处?将指令Cache和数据Cache分开又有什么好处? 答:Cache做在CPU芯片内主要有下面几个好处:

1)可提高外部总线的利用率。因为Cache在CPU芯片内,CPU访问Cache时不必占用外部总线。

2)Cache不占用外部总线就意味着外部总线可更多地支持I/O设备与主存的信息传输,增强了系统的整体效率。

3)可提高存取速度。因为Cache与CPU之间的数据通路大大缩短,故存取速度得以提高。 将指令Cache和数据Cache分开有如下好处:

1)可支持超前控制和流水线控制,有利于这类控制方式下指令预取操作的完成。 2)指令Cache可用ROM实现,以提高指令存取的可靠性。

3)数据Cache对不同数据类型的支持更为灵活,既可支持整数(例32位),也可支持浮点数据(如64位)。 补充:

Cache结构改进的第三个措施是分级实现,如二级缓存结构,即在片内Cache(L1)和主存之间再设一个片外Cache(L2),片外缓存既可以弥补片内缓存容量不够大的缺点,又可在主存与片内缓存间起到平滑速度差的作用,加速片内缓存的调入调出速度。

30. 一个组相连映射的CACHE由64块组成,每组内包含4块。主存包含4096块,每块由128字组成,访存地址为字地址。试问主存和高速存储器的地址各为几位?画出主存地址格式。

13

解:cache组数:64/4=16 ,Cache容量为:64*128=2字,cache地址13位

主存共分4096/16=256区,每区16块

19

主存容量为:4096*128=2字,主存地址19位,地址格式如下: 主存字块标记(8位)

组地址(4位) 字块内地址(7位)

第 六 章

12. 设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出51/128、-27/1024所对应的机器数。要求如下: (1)阶码和尾数均为原码。 (2)阶码和尾数均为补码。

(3)阶码为移码,尾数为补码。 解:据题意画出该浮点数的格式:

阶符1位 阶码4位 数符1位 尾数10位 -1 将十进制数转换为二进制:x1= 51/128= 0.0110011B= 2 * 0.110 011B -5

x2= -27/1024= -0.0000011011B = 2*(-0.11011B)

则以上各数的浮点规格化数为:

(1)[x1]浮=1,0001;0.110 011 000 0 [x2]浮=1,0101;1.110 110 000 0 (2)[x1]浮=1,1111;0.110 011 000 0 [x2]浮=1,1011;1.001 010 000 0 (3)[x1]浮=0,1111;0.110 011 000 0 [x2]浮=0,1011;1.001 010 000 0

16.设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数采用一位符号位,答案均用十进制表示。 (1)无符号数;

(2)原码表示的定点小数。 (3)补码表示的定点小数。 (4)补码表示的定点整数。 (5)原码表示的定点整数。

(6)浮点数的格式为:阶码6位(含1位阶符),尾数10位(含1位数符)。分别写出其正数和负数的表示范围。 (7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的真值范围。

16

解:(1)无符号整数:0 —— 2 - 1,即:0—— 65535;

-16

无符号小数:0 —— 1 - 2 ,即:0 —— 0.99998;

-15-15

(2)原码定点小数:-1 + 2——1 - 2 ,即:-0.99997 —— 0.99997

-15

(3)补码定点小数:- 1——1 - 2 ,即:-1——0.99997

1515

(4)补码定点整数:-2——2 - 1 ,即:-32768——32767

1515

(5)原码定点整数:-2 + 1——2 - 1,即:-32767——32767

(6)据题意画出该浮点数格式,当阶码和尾数均采用原码,非规格化数表示时:

-9-31

最大负数= 1,11 111;1.000 000 001 ,即 -2?2

-931

最小负数= 0,11 111;1.111 111 111,即 -(1-2)?2

-931 -9-31

则负数表示范围为:-(1-2)?2—— -2?2

-931

最大正数= 0,11 111;0.111 111 111,即 (1-2)?2

-9-31

最小正数= 1,11 111;0.000 000 001,即 2?2

-9-31 -931

则正数表示范围为:2?2——(1-2)?2

(7)当机器数采用补码规格化形式时,若不考虑隐藏位,则

-1-32

最大负数=1,00 000;1.011 111 111,即 -2?2

31

最小负数=0,11 111;1.000 000 000,即 -1?2

31 -1-32

则负数表示范围为:-1?2—— -2?2

-931

最大正数=0,11 111;0.111 111 111,即 (1-2)?2

-1-32

最小正数=1,00 000;0.100 000 000,即 2?2

-1-32 -931

则正数表示范围为:2?2——(1-2)?2

17. 设机器数字长为8位(包括一位符号位),对下列各机器数进行算术左移一位、两位,算术右移一位、两位,讨论结果是否正确。

[x1]原=0.001 1010;[y1]补=0.101 0100;[z1]反=1.010 1111; [x2]原=1.110 1000;[y2]补=1.110 1000;[z2]反=1.110 1000; [x3]原=1.001 1001;[y3]补=1.001 1001;[z3]反=1.001 1001。 解:算术左移一位:

[x1]原=0.011 0100;正确

[x2]原=1.101 0000;溢出(丢1)出错 [x3]原=1.011 0010;正确

[y1]补=0.010 1000;溢出(丢1)出错 [y2]补=1.101 0000;正确

[y3]补=1.011 0010;溢出(丢0)出错 [z1]反=1.101 1111;溢出(丢0)出错 [z2]反=1.101 0001;正确

[z3]反=1.011 0011;溢出(丢0)出错 算术左移两位:

[x1]原=0.110 1000;正确

[x2]原=1.010 0000;溢出(丢11)出错 [x3]原=1.110 0100;正确

[y1]补=0.101 0000;溢出(丢10)出错 [y2]补=1.010 0000;正确

[y3]补=1.110 0100;溢出(丢00)出错 [z1]反=1.011 1111;溢出(丢01)出错 [z2]反=1.010 0011;正确

[z3]反=1.110 0111;溢出(丢00)出错 算术右移一位:

[x1]原=0.000 1101;正确 [x2]原=1.011 0100;正确

[x3]原=1.000 1100(1);丢1,产生误差 [y1]补=0.010 1010;正确 [y2]补=1.111 0100;正确

[y3]补=1.100 1100(1);丢1,产生误差 [z1]反=1.101 0111;正确

[z2]反=1.111 0100(0);丢0,产生误差 [z3]反=1.100 1100;正确 算术右移两位:

[x1]原=0.000 0110(10);产生误差 [x2]原=1.001 1010;正确 [x3]原=1.000 0110(01);产生误差 [y1]补=0.001 0101;正确 [y2]补=1.111 1010;正确 [y3]补=1.110 0110(01);产生误差 [z1]反=1.110 1011;正确 [z2]反=1.111 1010(00);产生误差 [z3]反=1.110 0110(01);产生误差

19. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。 (1)A=9/64, B=-13/32,求A+B。 (2)A=19/32,B=-17/128,求A-B。 (3)A=-3/16,B=9/32,求A+B。 (4)A=-87,B=53,求A-B。

(5)A=115,B=-24,求A+B。 解:(1)A=9/64= 0.001 0010B, B= -13/32= -0.011 0100B [A]补=0.001 0010, [B]补=1.100 1100

[A+B]补= 0.0010010 + 1.1001100 = 1.1011110 ——无溢出 A+B= -0.010 0010B = -17/64

(2)A=19/32= 0.100 1100B, B= -17/128= -0.001 0001B

[A]补=0.100 1100, [B]补=1.110 1111 , [-B]补=0.001 0001

[A-B]补= 0.1001100 + 0.0010001= 0.1011101 ——无溢出 A-B= 0.101 1101B = 93/128B

(3)A= -3/16= -0.001 1000B, B=9/32= 0.010 0100B [A]补=1.110 1000, [B]补= 0.010 0100

[A+B]补= 1.1101000 + 0.0100100 = 0.0001100 —— 无溢出 A+B= 0.000 1100B = 3/32

(4) A= -87= -101 0111B, B=53=110 101B

[A]补=1 010 1001, [B]补=0 011 0101, [-B]补=1 100 1011

[A-B]补= 1 0101001 + 1 1001011 = 0 1110100 —— 溢出 (5)A=115= 111 0011B, B= -24= -11 000B [A]补=0 1110011, [B]补=1,110 1000

[A+B]补= 0 1110011 + 1 1101000 = 0 1011011——无溢出 A+B= 101 1011B = 91

26.按机器补码浮点运算步骤,计算[x±y]补.

-011-010

(1)x=2× 0.101 100,y=2×(-0.011 100);

-011-010

(2)x=2×(-0.100 010),y=2×(-0.011 111);

101100

(3)x=2×(-0.100 101),y=2×(-0.001 111)。 解:先将x、y转换成机器数形式:

-011-010

(1)x=2× 0.101 100,y=2×(-0.011 100)

[x]补=1,101;0.101 100, [y]补=1,110;1.100 100

[Ex]补=1,101, [y]补=1,110, [Mx]补=0.101 100, [My]补=1.100 100