计算机组成原理前3章课后习题参考答案解析
白中英第五版计算机组成原理课后习题参考答案
第一章计算机系统概述
4、冯?诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分?答:冯?诺依曼型计算机的主要设计思想是存储程序和程序控制,其中存储程序是指将程序和数据事先存放到存储器中,而程序控制是指控制器依据存储的程序来控制全机协调地完成计算任务。总体来讲,存储程序并按地址顺序执行,这就是冯?诺依曼型计算机的主要设计思想。
5、什么是存储容量?什么是单元地址?什么是数据字?什么是指令字?
答:见教材P8和P10。
7、指令和数据均存放在内存中,计算机如何区分它们是指令还是数据?
答:见教材P10。
第二章运算方法和运算器
1、写出下列各整数的原码、反码、补码表示(用8位二进制数)。
3、有一个字长为32位的浮点数,符号位1位,阶码8位,用移码表示,尾数23位,用补码表示,基数为2,请写出:
(1)最大数的二进制表示
阶码用移码表示,题中并未说明具体偏移量,故此处按照移码的定义,即采用偏移量为27=128,则此时阶码E的表示范围为0000 0000~1111 1111,即0~255,则在上述条件下,浮点数为最大数的条件如下:
所以最大数的二进制表示为:0 1111 1111 1111 1111 1111 1111 1111 1111 111 对应十进制真值为:+(1-2-23)×2127
(2)最小数的二进制表示
浮点数为最小数的条件如下:
所以最小数的二进制表示为:1 1111 1111 0000 0000 0000 0000 0000 000
对应十进制真值为:-1×2127
(3)规格化数所表示数的范围
规格化要求尾数若为补码表示,则符号位和最高有效位符号必须不同。
(A)浮点数为最大正数的条件如下:
所以最大正数的二进制表示为:0 1111 1111 1111 1111 1111 1111 1111 1111 111 对应十进制真值为:+(1-2-23)×2127
(B)浮点数为最小正数的条件如下:
所以最小正数的二进制表示为:0 0000 0000 1000 0000 0000 0000 0000 000 对应十进制真值为:+2-1×2-128=+2-129
(C)浮点数为最大负数的条件如下:
所以最大负数的二进制表示为:0 0000 0000 0111 1111 1111 1111 1111 111 对应十进制真值为:-(2-1+2-23)×2-128
(D)浮点数为最小负数的条件如下:
所以最小负数的二进制表示为:0 0000 0000 0000 0000 0000 0000 0000 000 对应十进制真值为:-1×2127
所以,规格化数所表示数的范围如下:
正数 +2-129~+(1-2-23)×2127负数 -2127 ~-(2-1+2-23)×2-128
4、将下列十进制数表示成IEEE754标准的32位浮点规格化数。(2)-27/64 解:-27/64D=-0.011011B=-1.1011×2-2,则阶码E=-2+127=125,则浮点数为:
5、已知x和y,用变形补码计算x+y,同时指出结果是否溢出。
(2)x=11011,y=-10101
解:[x]变补=00,11011,[y]变补=11,01011,则
+[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
6、已知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
11,11100
则[x-y]变补=11,11100,符号位为11,表示结果为负数,且无溢出,即x-y=-00100。
7、用原码一位乘计算x×y。(2)x=-11111,y=-11011
解:根据原码一位乘的运算规则,乘积的符号位单独处理x0 y0,数值部分为绝对值相乘x*.y*,其中数值部分的运算如下:
由上可得,数值部分的乘积为:x*.y*=0,1101000101,而乘积符号位
x0⊕y0=1⊕1=0,则[x.y]原=0,1101000101,即x×y=+1101000101。
8、用加减交替法计算x÷y(先乘1个比例因子变成小数)。(2)x=-01011,y=11001 解:按照加减交替原码除法的运算规则,符号位单独处理x0⊕y0,商值由两数绝对值相除x*/y*求得,且当余数Ri>0,商1,做2Ri-y*运算,当余数Ri<0,商0,做2Ri+y*运算。
根据定点除法的约束条件,小(整)数定点机中,被乘数、乘数和商必须均为小(整)数。而题中被乘数和乘数均为整数,且被乘数小于乘数,两者相除结果为小数,不符合整数定点机的要求,故可先将被乘数和乘数乘以一个比例因子2-5,将被乘数和乘数变为小数,两者相除商也为小数,则符合小数定点机的要求。乘以比例因子2-5后,可得:[x]原=1.01011,[y]原=0.11001,[x*]补=0.01011,[y*]补=0.11001,[-y*]补=1.00111,则加减交替法的运算过程如下:
由上可得,商值为:x*/y*=0.01110,而符号位x0⊕y0=1⊕0=1,则[x÷y]原=1.01110,即x÷y=-0.01110,余数为0.00000 00010。
9、设阶码3位,尾数6位,按浮点运算方法,完成下列取值的[x+y]、[x-y]运算。
(2)x=2-101×(-0.010110),y=2-100×(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
④舍入处理:采用0舍1入法,因对阶时尾数右移丢0,故可舍去。
⑤溢出判断:因阶码符号位为11,故浮点数无溢出。
所以最终结果为x+y=+0.101100×2-110
(B)求[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,尾数符合规格化要求,无需规格化。
规格化:无需规格化
④舍入处理:采用0舍1入法,因对阶时尾数右移丢0,故可舍去。
⑤溢出判断:因阶码符号位为11,故浮点数无溢出。
所以最终结果为x-y=-0.100001×2-100
12、用IEEE 32位浮点格式表示如下的数:
(2)-1.5
解:-1.5D=-1.1B=-1.1×20,所以阶码E=0+127=127,则有:
(4)1/16
解:1/16D=0.0001B=1.0×2-4,所以阶码E=-4+127=123,则有:
13、下列各数使用了IEEE 32位浮点格式,相等的十进制数是什么?
(2)0 0111 1110 101 0000 0000 0000 0000 0000
解:根据IEEE 32位浮点格式可得,阶码E=0111 1110=126,则e=126-127=-1,所以浮点数为:+1.101×2-1=+0.1101,则对应十进制数为:
0.5+0.25+0.0625=0.8125。
第三章多层次的存储器
1、设有一个具有20位地址和32位字长的存储器,问:
(1)该存储器能存储多少个字节信息?(220×32/8=4MB)
(2)如果存储器由512K×8位SRAM芯片组成,需要多少片?(220×32/512K×8=8)(3)需要多少位地址做芯片选择?(存储器由20根地址线,而每片芯片有19根地址线,故需1位地址做芯片选择)
3、用16K×8位的DRAM芯片构成64K×32位存储器,要求:
(1)画出该存储器的组成逻辑框图。
解:共需芯片64K×32/16K×8=16片,可先用4片16K×8位的DRAM芯片用于位扩展构成16K×32位存储器,然后再用4组16K×32位存储器用于字扩展构成64K×32位存储器,其中,4组16K×32位存储器的片选信号由高位地址A15和A14产生,该存储器的组成逻辑框图如下所示。
其中,16K×32位的存储器的组成逻辑框图如下所示。
(2)设存储器读写周期为0.5μs,CPU在1μs内至少要访问一次。试问采用哪种刷新方式比较合理?两次刷新的最大时间间隔是多少?对全部存储单元刷新一遍所需的实际刷新时间是多少?
解:
5、要求用256K×16位SRAM芯片设计1024K×32位的存储器。SRAM芯片有两个控制端:当CS’有效时,该片选中。当W’/R=1时执行读操作,当W’/R=0时执行写操作。
解:共需SRAM芯片1024K×32/256K×16=8片,可先用2片256K×16位的SRAM芯片用于位扩展构成256K×32位存储器,然后再用4组256K×32位存储器用于字扩展构成1024K×32位存储器,该存储器的组成逻辑框图如下所示。
其中,256K×32位的存储器的组成逻辑框图如下所示。
6、用32K×8位的E2PROM芯片组成128K×16位的只读存储器,试问:
(1)数据寄存器多少位?(16位)
(2)地址寄存器多少位?(17位)
(3)共需多少个E2PROM芯片?(128K×16/32K×8=8个)
(4)画出此存储器组成框图。
解:可先用2片32K×8位的E2PROM芯片用于位扩展构成32K×16位存储器,然后再用4组32K×16位存储器用于字扩展构成128K×16位存储器,该存储器的组成逻辑框图如下所示。
其中,32K×16位的存储器的组成逻辑框图如下所示。
7、某机器中,已知配有一个地址空间为0000H~3FFFH的ROM区域。现在再用一个RAM芯片(8K×8)形成40K×16位的RAM区域,起始地址为6000H。假设RAM 芯片有CS’和WE’信号控制端。CPU的地址总线为A15~A0,数据总线为D15~D0,控制信号为R/W(读/写),MREQ’(访存),要求:
(1)画出地址译码方案。
(2)将ROM和RAM同CPU连接。
解:RAM区域共需RAM芯片40K×16/8K×8=10片,可先用2片8K×8位的RAM芯片用于位扩展构成8K×16位存储器,然后再用5组8K×16位存储器用于字扩展构成40K×16位存储器,该存储器的组成逻辑框图可参照5、6题。
(A)为了将ROM和RAM同CPU连接,需先将十六进制地址转换为二进制地址码,并确定ROM容量,以及观察ROM和RAM地址码的特点。
(B)分配CPU地址线:将CPU的低13位地址A12~A0与ROM和2片8K×8位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译码器来实现上述片选关系,最后得ROM和RAM与CPU的连接如下图所示。
【说明】上图假设ROM区域由2片8K×16位芯片进行字扩展构成,若ROM区域由1片16K×16位芯片构成,则地址线连接会不同。
8、设存储器容量为64M,字长为64位,模块数m=8,分别用顺序和交叉方式进行组织。存储周期T=100ns,数据总线宽度为64位,总线传送周期τ=50ns。求:顺序存储器和交叉存储器的带宽各是多少?
解:假设连续读出m=8个字,则:
顺序存储器和交叉存储器的数据信息量为:q=8×64=512位
顺序存储器所需要的时间为:t1=m×T=8×100ns=800ns=8×10-7s
故顺序存储器的带宽为:W1=q/t1=512/(8×10-7)=64×107(bit/s)
交叉存储器所需要的时间为
t2=T+(m-1)×τ=100ns+(8-1)×50ns=450ns=4.5×10-7s
故交叉存储器的带宽为W2=q/t2=512/(4.5×10-7)=113.8×107(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.968×40ns+0.032×240=46.4ns
cache/主存系统的效率: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,则:
程序运行时间为:ta=(T+(6-1)τ+6t)×80
(2)循环程序由8条指令组成,重复执行60次。
解:设总线传送周期为τ,取指周期T,执行指令时间为t,则:
程序运行时间为:ta=(T+(8-1)τ+8t)×60
13、一个组相联Cache由64个行组成,每组4行。主存储器包含4K个块,每块
128字。请表示内存地址的格式。
解:块大小2w=128字=27,故w=7
Cache有64行,每组4行,则组数2d=64/4=16=24,故d=4
主存块数2s=4K=212,故s=12
标记位有s-d=12-4=8位
则组相联映射下的主存地址格式如下:
14、某机主存容量1MB,字长1B,块大小16B,Cache容量64KB,若Cache采用直接映射方式,请给出2个不同标记的内存地址,它们映射到同一个Cache行。解:块大小2w=16B,故w=4
Cache容量64KB,每块16B,行数2r=4K=212,故r=12
主存容量1MB=220=2s+w,故s+w=20,则s=20-w=16,故标记位s-r=16-12=4
直接映射下的主存地址格式如下:
0001 1001 0000 1110 0000
15、假设主存容量16M×32位,Cache容量64K×32位,主存与Cache之间以每块4×32位大小传送数据,请确定直接映射方式的有关参数,并画出主存地址格式。解:块大小2w=4,故w=2
Cache容量64K×32位,块大小为4×32位,则行数为2r=64K/4=16K=214,故r=14
主存16M×32位,块大小为4×32位,则块数2s=16M/4=4M=222,故s=22
标记位s-r=22-14=8位
直接映射下的主存地址格式如下:
19、某虚拟存储器采用页式存储管理,使用LRU页面替换算法。若每次访问在一个时间单位内完成,页面访问的序列如下:1,8,1,7,8,2,7,2,1,8,3,8,2,1,3,1,7,1,3,7。已知主存只允许存放4个页面,初始状态时4个页面是全空的,则页面失效次数是?
解:LRU(近期最少使用):每页设置计数器,每命中1次,该页计数器清零,其他各页计数器加1,需要替换时,将计数值最大的页换出。
根据上表可知,页面失效次数为6次。
21、设某系统采用页式虚拟存储管理,页表放在主存中。
(1)如果一次内存访问使用50ns,访问一次主存需用多少时间?
解:若页表放在主存中,则要实现一次主存访问需两次访问主存,一次是访问页表,确定所存取页面的物理地址,第二次才根据该地址存取页面数据。故访问主存时间为50ns×2=100ns
(2)如果增加TLB,忽略查找TLB表项占用时间,并且75%的页表访问命中TLB,内存的有效访问时间是多少?
解:50ns×75%+100ns×(1-75%)=62.5ns
22、某计算机的存储系统由Cache、主存和磁盘都成。Cache的访问时间是15ns;如果被访问的单元在主存中但不在Cache中,需要用60ns的时间将其装入Cache,然后再进行访问;如果被访问的单元不在主存中,则需要10ms的时间将其从磁盘中读入主存,然后再装入Cache中并开始访问。若Cache的命中率为90%,主存的命中率为60%,求该系统中访问一个字的平均时间。
解:平均访问时间:
ta=15ns×90%+(15+60)ns×(1-90%)×60%+(10000000+60+15)ns×(1-90%)×(1-60%) =13.5ns+4.5ns+400003ns=400021ns
24、在一个分页虚存系统中,用户虚地址空间为32页,页长1KB,主存物理空间为16KB。已知用户程序有10页长,若虚页0、1、2、3已经被分别调入到主存8、7、4、10页中,请问虚地址0AC5和1AC5(十六进制)对应的物理地址是多少?
解:页长1KB,所以页内地址为10位。
主存物理空间:16页,页面号0~15,共14位地址码(其中页面号4位,页内地址10位)。
用户虚空间:32页,页面号为0~31,共15位地址码(其中页面号5位,页内地址10位)。
0AC5H=0000 1010 1100 0101B,页面号为2,已被调入主存页4,物理地址页面号为4,页内地址与虚地址的页内地址相同,故01 0010 1100 0101=12C5H。
1AC5=0001 1010 1100 0101B,页面号为6,未被调入主存页,故无物理地址,发生缺页中断。