计算机组成原理答案(第二版) 联系客服

发布时间 : 星期四 文章计算机组成原理答案(第二版)更新完毕开始阅读5096b1c8640e52ea551810a6f524ccbff021cafd

+5VG1G2AMREQY7A15A14A13A12A0G2BABC74138......Y2Y1Y0...WE...WE.........CSWECPUD0D7RAM0...CSRAM1RAM7......CSR/W...

(2)地址空间分配图: RAM0:0000H-1FFFH RAM1:2000H-3FFFH RAM2:4000H-5FFFH RAM3:6000H-7FFFH RAM4:8000H-9FFFH RAM5:A000H-BFFFH RAM6:C000H-DFFFH RAM7:E000H-FFFFH

(3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片(RAM5)都有与其相同的数据,则根本的故障原因为:该存储芯片的片选输入端很可能总是处于低电平。假设芯片与译码器本身都是好的,可能的情况有:

1)该片的-CS端与-WE端错连或短路;

2)该片的-CS端与CPU的-MREQ端错连或短路; 3)该片的-CS端与地线错连或短路。

(4)如果地址线A13与CPU断线,并搭接到高电平上,将会出现A13恒为“1”的情况。此时存储器只能寻址A13=1的地址空间(奇数片),A13=0的另一半地址空间(偶数片)将永远访问不到。若对A13=0的地址空间(偶数片)进行访问,只能错误地访问到A13=1的对应空间(奇数片)中去。

17. 写出1100、1101、1110、1111对应的汉明码。

解:有效信息均为n=4位,假设有效信息用b4b3b2b1表示

校验位位数k=3位,(2k>=n+k+1)

设校验位分别为c1、c2、c3,则汉明码共4+3=7位,即:c1c2b4c3b3b2b1 校验位在汉明码中分别处于第1、2、4位 c1=b4⊕b3⊕b1 c2=b4⊕b2⊕b1 c3=b3⊕b2⊕b1

当有效信息为1100时,c3c2c1=011,汉明码为1110100。 当有效信息为1101时,c3c2c1=100,汉明码为0011101。 当有效信息为1110时,c3c2c1=101,汉明码为1011110。 当有效信息为1111时,c3c2c1=010,汉明码为0110111。

18. 已知收到的汉明码(按配偶原则配置)为1100100、1100111、1100000、1100001,检查上述代码是否出错第几位出错

解:假设接收到的汉明码为:c1’c2’b4’c3’b3’b2’b1’

纠错过程如下:

P1=c1’⊕b4’⊕b3’⊕b1’ P2=c2’⊕b4’⊕b2’⊕b1’ P3=c3’⊕b3’⊕b2’⊕b1’

如果收到的汉明码为1100100,则p3p2p1=011,说明代码有错,第3位(b4’)出错,有效信息为:1100

如果收到的汉明码为1100111,则p3p2p1=111,说明代码有错,第7位(b1’)出错,有效信息为:0110

如果收到的汉明码为1100000,则p3p2p1=110,说明代码有错,第6位(b2’)出错,有效信息为:0010

如果收到的汉明码为1100001,则p3p2p1=001,说明代码有错,第1位(c1’)出错,有效信息为:0001

22. 某机字长16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施画图说明。

解:若想不改用高速存储芯片,而使访存速度提高到8倍,可采取八体交叉存取技术,8体交叉访问时序如下图:

启动存储体0启动存储体1启动存储体2启动存储体3启动存储体4启动存储体5启动存储体6启动存储体7单体访存周期

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字组成,访存地址为字地址。试问主存和高速存储器的地址各为几位画出主存地址格式。 解:cache组数:64/4=16 ,Cache容量为:64*128=213字,cache地址13位

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

主存容量为:4096*128=219字,主存地址19位,地址格式如下: 主存字块标记(8位) 组地址(4位) 字块内地址(7位) 第 六 章

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

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

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

x2= -27/1024= = 2-5*)

则以上各数的浮点规格化数为: (1)[x1]浮=1,0001; 011 000 0 [x2]浮=1,0101; 110 000 0 (2)[x1]浮=1,1111; 011 000 0 [x2]浮=1,1011; 010 000 0 (3)[x1]浮=0,1111; 011 000 0 [x2]浮=0,1011; 010 000 0

16.设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数采用一位

符号位,答案均用十进制表示。 (1)无符号数;

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

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

无符号小数:0 —— 1 - 2-16 ,即:0 —— ; (2)原码定点小数:-1 + 2-15——1 - 2-15 ,即: —— (3)补码定点小数:- 1——1 - 2-15 ,即:-1——

(4)补码定点整数:-215——215 - 1 ,即:-32768——32767 (5)原码定点整数:-215 + 1——215 - 1,即:-32767——32767

(6)据题意画出该浮点数格式,当阶码和尾数均采用原码,非规格化数表示时: 最大负数= 1,11 111; 000 001 ,即 -2-92-31

最小负数= 0,11 111; 111 111,即 -(1-2-9)231 则负数表示范围为:-(1-2-9)231 —— -2-92-31 最大正数= 0,11 111; 111 111,即 (1-2-9)231 最小正数= 1,11 111; 000 001,即 2-92-31 则正数表示范围为:2-92-31 ——(1-2-9)231

(7)当机器数采用补码规格化形式时,若不考虑隐藏位,则 最大负数=1,00 000; 111 111,即 -2-12-32 最小负数=0,11 111; 000 000,即 -1231 则负数表示范围为:-1231 —— -2-12-32

最大正数=0,11 111; 111 111,即 (1-2-9)231 最小正数=1,00 000; 000 000,即 2-12-32 则正数表示范围为:2-12-32 ——(1-2-9)231 17. 设机器数字长为8位(包括一位符号位),对下列各机器数进行算术左移一位、两位,算术右移一位、两位,讨论结果是否正确。 [x1]原= 1010;[y1]补= 0100;[z1]反= 1111; [x2]原= 1000;[y2]补= 1000;[z2]反= 1000; [x3]原= 1001;[y3]补= 1001;[z3]反= 1001。 解:算术左移一位:

[x1]原= 0100;正确

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

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

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