计算机组成原理前3章课后习题参考答案.docx
《计算机组成原理前3章课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《计算机组成原理前3章课后习题参考答案.docx(26页珍藏版)》请在冰豆网上搜索。
计算机组成原理前3章课后习题参考答案
白中英第五版计算机组成原理课后习题参考答案
第一章计算机系统概述
4、冯?
诺依曼型计算机的主要设计思想是什么?
它包括哪些主要组成部分?
答:
冯?
诺依曼型计算机的主要设计思想是存储程序和程序控制,其中存储程序
是指将程序和数据事先存放到存储器中,而程序控制是指控制器依据存储的程序来控制全机协调地完成计算任务。
总体来讲,存储程序并按地址顺序执行,这就是冯?
诺依曼型计算机的主要设计思想。
5、什么是存储容量?
什么是单元地址?
什么是数据字?
什么是指令字?
答:
见教材P8和P10。
7、指令和数据均存放在内存中,计算机如何区分它们是指令还是数据?
答:
见教材P10。
第二章运算方法和运算器
1、写出下列各整数的原码、反码、补码表示(用8位二进制数)
真值
原码
反码
补码
-35
-00100011
10100011
11011100
11011101
-128
-10000000
无法表示
无法表示
10000000
-127
-01111111
11111111
10000000
10000001
-1
-00000001
10000001
11111110
11111111
3、有一个字长为32位的浮点数,符号位1位,阶码8位,用移码表示,尾数
23位,用补码表示,基数为2,请写出:
(1)最大数的二进制表示
阶码用移码表示,题中并未说明具体偏移量,故此处按照移码的定义,即采
用偏移量为27=128,则此时阶码E的表示范围为00000000~11111111,即0~255,
则在上述条件下,浮点数为最大数的条件如下:
符号S为正
(1)
阶码E最大(8)
尾数M最大正数(23)
0
11111111
11111111111111111111111
所以最大数的二进制表示为:
011111111111111111111111111111111111
对应十进制真值为:
+(1-2-23)X2127
(2)最小数的二进制表示
浮点数为最小数的条件如下:
符号S为负
(1)
阶码E最大(8)
尾数M最小负数(23)
1
11111111
00000000000000000000000
所以最小数的二进制表示为:
11111111100000000000000000000000
对应十进制真值为:
-1x2127
(3)规格化数所表示数的范围
规格化要求尾数若为补码表示,则符号位和最高有效位符号必须不同
(A)浮点数为最大正数的条件如下:
符号S为正
(1)
阶码E最大(8)
尾数M最大正数(23)
0
11111111
11111111111111111111111
所以最大正数的二进制表示为:
011111111111111111111111111111111111
对应十进制真值为:
+(1-2-23)X2127
(B)浮点数为最小正数的条件如下:
符号S为正
(1)
阶码E最小(8)
尾数M最小正数(23)
0
00000000
10000000000000000000000
所以最小正数的二进制表示为:
00000000010000000000000000000000
对应十进制真值为:
+21X2-128=+2-129
(C)浮点数为最大负数的条件如下:
符号S为负
(1)
阶码E最小(8)
尾数M最大负数(23)
1
00000000
01111111111111111111111
所以最大负数的二进制表示为:
00000000001111111111111111111111
对应十进制真值为:
-(2-1+223)X2-128
(D)浮点数为最小负数的条件如下:
符号S为负
(1)
阶码E最大(8)
尾数M最小负数(23)
1
11111111
00000000000000000000000
所以最小负数的二进制表示为:
00000000000000000000000000000000
对应十进制真值为:
-1x2127
所以,规格化数所表示数的范围如下:
正数+2-129~+(1-2-23)X2127负数-2127~-(2-1+223)X2-128
4、将下列十进制数表示成IEEE754标准的32位浮点规格化数。
(2)-27/64
解:
-27/64D=-0.011011B=-1.1011X2-2,则阶码E=-2+127=125,则浮点数为:
符号S
(1)
阶码E(8)
尾数M(23)
1
01111101
10110000000000000000000
5、已知x和y,用变形补码计算x+y,同时指出结果是否溢出
(2)x=11011,y=-10101
解:
[x]变补=00,11011,[y]变补=11,01011,则
[x]变补00,11011
+[y]变补11,01011
100,00110
最高进位1丢掉,则[x+y]变补=00,00110,符号位为00,表示结果为正数,
且无溢出,即:
x+y=+00110
(3)x=-10110,y=-00001
解:
[x]变补=11,01010,[y]变补=11,11111,则
[x]变补11,01010
+[y]变补11,11111
111,01001
最高进位1丢掉,则[x+y]变补=11,01001,符号位为11,表示结果为负数,
且无溢出,即:
x+y=-10111
&已知x和y,用变形补码计算x-y,同时指出结果是否溢出。
(1)x=11011,y=-11111
解:
[x]变补=00,11011,[y]变补=11,00001,[-y]变补=00,11111,则
[x]变补00,11011
+[-y]变补00,11111
01,11010
则[x-y]变补=01,11010,符号位为01,表示结果为正数,且发生正溢。
(2)x=10111,y=11011
解:
[x]变补=00,10111,[y]变补=00,11011,[-y]变补=11,00101,则
[x]变补00,10111
+[-y]变补11,00101
11,11100
则[x-y]变补=11,11100,符号位为11,表示结果为负数,且无溢出,即x-y=-00100
7、用原码一位乘计算xXy。
(2)x=-11111,y=-11011
解:
根据原码一位乘的运算规则,乘积的符号位单独处理x0?
y0,数值部分为
绝对值相乘x*.y*,其中数值部分的运算如下:
部分积
乘数
说明
0,00000
1101」
部分积初态z0=0
+0,11111
+x*
0,11111
0,01111
11101
右移一位,得z1
+0,11111
+x*
1,01110
0,10111
01110
右移一位,得z2
+0,00000
+0
0,10111
0,01011
10111
右移一位,得z3
+0,11111
+x*
1,01010
0,10101
01011
右移一位,得z3
+0,11111
+x*
1,10100
0,11010
00101
右移一位,得z3
由上可得,数值部分的乘积为:
x*.y*=0,1101000101,而乘积符号位
x0?
y0=1?
仁0,则[x.y]原=0,1101000101,即xXy=+1101000101。
8、用加减交替法计算x-y(先乘1个比例因子变成小数)。
(2)x=-01011,
y=11001
解:
按照加减交替原码除法的运算规则,符号位单独处理xO?
yO,商值由两数绝对值相除x*/y*求得,且当余数Ri>0,商1做2Ri-y*运算,当余数Ri<0,商0,做2Ri+y*运算。
根据定点除法的约束条件,小(整)数定点机中,被乘数、乘数和商必须均为小(整)数。
而题中被乘数和乘数均为整数,且被乘数小于乘数,两者相除结果为小数,不符合整数定点机的要求,故可先将被乘数和乘数乘以一个比例因子2-5,将被乘数和乘数变为小数,两者相除商也为小数,则符合小数定点机的要求。
乘以比例因子2后,可得:
[x]原=1.01011,[y]原=0.11001,[x*]补=0.01011,[y*]补=0.11001,[-y*]补=1.00111,则加减交替法的运算过程如下:
被除数(余数)
商
说明
0.01011
0.00000
+1.00111
+[-y*]补(减除数)
1.10010
0
余数为负,商0
1.00100
0
左移一位
+0.11001
+[y*]补(加除数)
1.11101
00
余数为负,商0
1.11010
00
左移一位
+0.11001
+[y*]补(加除数)
0.10011
001
余数为正,商1
1.00110
001
左移一位
+1.00111
+[-y*]补(减除数)
0.01101
0011
余数为正,商1
0.11010
0011
左移一位
+1.00111
+[-y*]补(减除数)
0.00001
00111
余数为正,商1
0.00010
00111
左移一位
+1.00111
+[-y*]补(减除数)
1.01001
001110
余数为负,商0(最后一次商0,说明
不够减而减了,此处须再恢复余数)」
+0.11001
+[y*]补(加除数)
0.00010
因余数前后共左移了5次
0.0000000010
须右移5次,才得真正余数
由上可得,商值为:
x*/y*=0.01110,而符号位x0?
y0=1?
0=1,则[x:
y]原
=1.01110,即x-y=-0.01110,余数为0.0000000010。
9、设阶码3位,尾数6位,按浮点运算方法,完成下列取值的[x+y]、[x-y]运算。
(2)x=2-101X(-0.010110),y=2-100X(0.010110)
解:
[x]补=11,011;11.101010,[y]补=11,100;00.010110
(A)求[x+y]
对阶:
[△E]补=[Ex]补-[Ey]补=11,011
+00,100=11,111
由上式可得[△E]补=11,111,即阶差为-1,所以Mx-->1,Ex+1
所以,[x]补’=11,100;11.110101(0)
尾数求和:
[Mx]补'=11.110101(0)对阶后的尾数[Mx]补’
+[My]补=00.010110
=100.001011(0)
即[x+y]补=11,100;00.001011,因尾数不符合规格化要求,需左规。
规格化:
尾数左规2次后得:
[x+y]补=11,010;00.101100
4舍入处理:
采用0舍1入法,因对阶时尾数右移丢0,故可舍去
5溢出判断:
因阶码符号位为11,故浮点数无溢出。
所以最终结果为x+y=+0.101100X2-110
(BE[x-y]
对阶:
[△E]补=[Ex]补-[Ey]补=11,011
+00,100=11,111
由上式可得[△E]补=11,111,即阶差为-1,所以Mx-->1,Ex+1
所以,[x]补’=11,100;11.110101(0)
尾数求和:
[Mx]补'=11.110101(0)对阶后的尾数[Mx]补’
+[-My]补=11.101010
=111.011111(0)
即[x-y]补=11,100;11.011111,尾数符合规格化要求,无需规格化。
规格化:
无需规格化
4舍入处理:
采用0舍1入法,因对阶时尾数右移丢0,故可舍去
5溢出判断:
因阶码符号位为11,故浮点数无溢出。
所以最终结果为x-y=-0.100001X2-100
12、用IEEE32位浮点格式表示如下的数:
(2)-1.5
解:
-1.5D=-1.1B=-1.1X2°,所以阶码E=0+127=127则有:
符号位
(1)
阶码E(8)
尾数M(23)
1
01111111
10000000000000000000000
十六进制表示
BFC00000
(4)1/16
解:
1/16D=0.0001B=1.0X2-4,所以阶码E=-4+127=123则有:
符号位
(1)
阶码E(8)
尾数M(23)
0
01111011
00000000000000000000000
十六进制表示
3D800000
13、下列各数使用了IEEE32位浮点格式,相等的十进制数是什么?
(2)00111111010100000000000000000000
解:
根据IEEE32位浮点格式可得,阶码E=01111110=126,则e=126-127=-1,所以浮点数为:
+1.101X2-1=+0.1101,则对应十进制数为:
0.5+0.25+0.0625=0.8125。
第三章多层次的存储器
1、设有一个具有20位地址和32位字长的存储器,问:
(1)该存储器能存储多少个字节信息?
(220X32/8=4MB
(2)如果存储器由512KX8位SRAM5片组成,需要多少片?
(220X32/512KX8=8)
(3)需要多少位地址做芯片选择?
(存储器由20根地址线,而每片芯片有19
根地址线,故需1位地址做芯片选择)
3、用16KX8位的DRAM芯片构成64KX32位存储器,要求:
(1)画出该存储器的组成逻辑框图。
解:
共需芯片64KX32/16KX8=16片,可先用4片16KX8位的DRAM芯片用于位
扩展构成16KX32位存储器,然后再用4组16KX32位存储器用于字扩展构成64KX32位存储器,其中,4组16KX32位存储器的片选信号由高位地址A15和A14产生,该存储器的组成逻辑框图如下所示。
其中,16KX32位的存储器的组成逻辑框图如下所示。
(2)设存储器读写周期为0.5卩s,CPU在1卩s内至少要访问一次。
试问采用哪种刷新方式比较合理?
两次刷新的最大时间间隔是多少?
对全部存储单元刷新一遍所需的实际刷新时间是多少?
解:
5、要求用256KX16位SRAM芯片设计1024KX32位的存储器。
SRAM芯片有两个控制端:
当CS有效时,该片选中。
当W/R=1时执行读操作,当W/R=0时执行写操作。
解:
共需SRAM芯片1024KX32/256KX16=8片,可先用2片256KX16位的SRAM芯片用于位扩展构成256KX32位存储器,然后再用4组256KX32位存储器用于字扩展构成1024KX32位存储器,该存储器的组成逻辑框图如下所示。
L
1V1VJ
ld,
A0-A17CS
DODJIW^R
A0-A17CS
256Kx32
(2)
DOD3L
A^417CS
2MKx32(l)
DO
40-A17CS
IMJilM\\R
厂
AJ
aI
A
(nil)UWR
其中,256KX32位的存储器的组成逻辑框图如下所示。
6、用32KX8位的EPROM芯片组成128KX16位的只读存储器,试问:
(1)数据寄存器多少位?
(16位)
(2)地址寄存器多少位?
(17位)
(3)共需多少个EPROM芯片?
(128KX16/32KX8=8个)
(4)画出此存储器组成框图。
解:
可先用2片32KX8位的EPROM芯片用于位扩展构成32KX16位存储器,然
后再用4组32KX16位存储器用于字扩展构成128KX16位存储器,该存储器的组成逻辑框图如下所示。
1
51U
r1
CS
A14
A0
A0-A14CS
AO^AUCS
32Kx»(l)
32Kx8(ft)
D0-D7
D(b-D7
D15
DO
7、某机器中,已知配有一个地址空间为0000H~3FFFH勺ROh区域。
现在再用一个RAh/芯片(8KX8)形成40KX16位的RAh区域,起始地址为6000Ho假设RAM芯片有CS和WE信号控制端。
CPU勺地址总线为A15~AQ数据总线为D15~D0控制信号为R/W(读/写),MREQ(访存),要求:
(1)画出地址译码方案。
(2)将ROM和RAM同CPU®接。
解:
RAM区域共需RAM芯片40KX16/8KX8=10片,可先用2片8KX8位的RAM
芯片用于位扩展构成8KX16位存储器,然后再用5组8KX16位存储器用于字扩展构成40KX16位存储器,该存储器的组成逻辑框图可参照5、6题。
cs
IH5
DO
(A)为了将ROM和RAM同CPU连接,需先将十六进制地址转换为二进制地址码,并确定ROM容量,以及观察ROM和RAM地址码的特点。
A15~A12
A11~A8
A7~A4
A3~A0
说明
0000
0000
0000
0000
ROM16KX16
...
...
...
...
001
1
1111
1111
1111
0100
0000
0000
0000
空区域
...
...
...
...
0101
1111
1111
1111
0110
0000
0000
0000
RAM(0),8KX1
6
2片8KX8位
扩展
...
...
...
...
011
1
1111
1111
1111
100
0
0000
0000
0000
RAM
(1),8KX1
6
2片8KX8位
扩展
...
...
...
...
100
1
1111
1111
1111
1010
0000
0000
0000
RAM
(2),8KX1
6
2片8KX8位
扩展
...
...
...
...
101
1
1111
1111
1111
110
0
0000
0000
0000
RAM(3),8KX1
・・・
・・・
・・・
・・・
6
2片8KX8位
扩展
110
1
1111
1111
1111
1110
0000
0000
0000
RAM(4),8KX1
6
2片8KX8位
扩展
・・・
・・・
・・・
・・・
111
1
1111
1111
1111
(B)分配CPU地址线:
将CPU的低13位地址A12~A0与ROM口2片8KX8位RAM
的地址线相连。
剩下的高位地址A13~A15与访存信号共同产生芯片的片选信号。
(C)片选信号的形成:
观察上面的地址码发现,当访存信号MREQ=0,而且高
位地址A13~A15为000(或001)、011、100、101、110、111时,分别选择ROM
RAM(0)、RAM
(1)、RAM
(2)、RAM(3)和RAM(4)芯片,故,可采用一个
3-8译码器来实现上述片选关系,最后得ROh和RAMfCPU的连接如下图所示。
【说明】上图假设ROh区域由2片8KX16位芯片进行字扩展构成,若ROM区域由1片16KX16位芯片构成,则地址线连接会不同。
8、设存储器容量为64M字长为64位,模块数m=8分别用顺序和交叉方式进行组织。
存储周期T=100ns,数据总线宽度为64位,总线传送周期t=50ns。
求:
顺序存储器和交叉存储器的带宽各是多少?
解:
假设连续读出m=8个字,则:
顺序存储器和交叉存储器的数据信息量为:
q=8X64=512位
顺序存储器所需要的时间为:
t1=mxT=8X100ns=800ns=8x10-7s故顺序存储器的带宽为:
W1二q/t仁512/(8x10-7)=64x107(bit/s)交叉存储器所需要的时间为
t2=T+(m-1)Xt=100ns+(8-1)x50ns=450ns=4.5x10-7s故交叉存储器的带宽为W2=q/t2=512/(4.5x10-7)=113.8x107(bit/s)
9、CPU执行一段程序时,cache完成存取的次数为2420次,主存完成存取的次数为80次,已知cache存储周期为40ns,主存存储周期为240ns,求cache/主存系统的效率和平均访问时间。
解:
命中率:
h=Nc/(Nc+Nm)=2420/(2420+80)=0.968
平均访问时间:
ta=htc+tm(1-h)=0.968x40ns+0.032x240=46.4nscache/主存系统的效率:
e=tc/ta=40/46.4=86.2%
10、已知Cache存储周期为40ns,主存存储周期200ns,Cache/主存系统平均访问时间为50ns,求Cache的命中率为多少?
解:
根据平均访问时间公式ta=htc+(1-h)tm,得:
命中率h=(tm-ta)/(tm-tc)=(200-50)/(200-40)=150/160=0.9375
11、某机器采用四体交叉存储器,今执行一段小循环程序,此程序放在存储器的连续地址单元中。
假设每条指令的执行时间相等,而且不需要到存储器存取数据,请问在下面两种情况中(执行的指令数相等),程序运行的时间是否相等?
(1)循环程序由6条指令组成,重复执行80次;
解:
设总线传送周期为t,取指周期T,执行指令时间为t,贝
程序运行时间为:
ta=(T+(6-1)t+6t)x80
(2)循环程序由8条指令组成,重复执行60次。
解:
设总线传送周期为t,取指周期T,执行指令时间为t,贝
程序运行时间为:
ta=(T+(8-1)t+8t)x60
13、一个组相联Cache由64个行组成,每组4行。
主存储器包含4K个块,每块128字。
请表示内存地址的格式。
解:
块大小2w=128字=27,故w=7
Cache有64行,每组4行,则组数2d=64/4=16=24,故d=4
主存块数2s=4K=22,故s=12
标记位有s-d=12-4=8位
则组相联映射下的主存地址格式如下: