计算机组成与系统结构课后答案免费版全(清华大学出版社-袁春风主编) 下载本文

x的尾数Mx右移7位,符号不变,数值高位补0,隐藏位右移到小数点后面,最后移出的2位

保留

② 尾数相加:Mb = Mx + My = 00.000000110...000+ 11.000001010 ...000 (注意小数点在隐藏位后) 根据原码加/减法运算规则,得:00.000000110...000+ 11.000001010...000 = 11.000000100…000 上式尾数中最左边第一位是符号位,其余都是数值部分,尾数后面两位是附加位(加粗)。 ③ 规格化:根据所得尾数的形式,数值部分最高位为1,所以不需要进行规格化。

④ 舍入:把结果的尾数Mb中最后两位附加位舍入掉,从本例来看,不管采用什么舍入法,结果

都一样,都是把最后两个0去掉,得:Mb = 11.000000100…0

⑤ 溢出判断:在上述阶码计算和调整过程中,没有发生“阶码上溢”和“阶码下溢”的问题。

因此,阶码Eb = 10000101。

最后结果为Eb = 10000101,Mb = 1(1).00000010…0,即:– 64.5。

(2) 0.75–(– 65.25)

① 对阶: [ΔE]补 = [E x]移 + [–[E y]移]补 (mod 2n) = 0111 1110 + 0111 1011 = 1111 1001

ΔE = -7,根据对阶规则可知需要对x进行对阶,结果为:Ex = E y = 10000110,Mx =

00.000000110...000

x的尾数Mx右移一位,符号不变,数值高位补0,隐藏位右移到小数点后面,最后移出的位保

② 尾数相加:Mb = Mx – My = 00.000000110...000 – 11.000001010...000 (注意小数点在隐藏位后) 根据原码加/减法运算规则,得:00.000000110...000 – 11.000001010...000=01.00001000…000 上式尾数中最左边第一位是符号位,其余都是数值部分,尾数后面两位是附加位(加粗)。 ③ 规格化:根据所得尾数的形式,数值部分最高位为1,不需要进行规格化。

④ 舍入:把结果的尾数Mb中最后两位附加位舍入掉,从本例来看,不管采用什么舍入法,结果

都一样,都是把最后两个0去掉,得:Mb = 01.00001000…0

⑤ 溢出判断:在上述阶码计算和调整过程中,没有发生“阶码上溢”和“阶码下溢”的问题。

因此,阶码Eb = 10000101。

最后结果为Eb = 10000101,Mb = 0(1).00001000…0,即:+66。

思考题:对阶时发生什么情况,就可以不再继续进行计算?

15.假定十进制数用8421 NBCD码表示,采用十进制加法运算计算下列表达式的值,并讨论在十进制

BCD码加法运算中如何判断溢出。 (1)234+567 (2)548+729 参考答案: (1)234+567 0010 0011 0100

+ 0101 0110 0111

0111 1001 1011 + 0110 0111 1010 0001 + 0110 0000 1000 0000 0001 结果为: (801)10

(2)548+729 0000 0101 0100 1000

+ 0000 0111 0010 1001

0000 1100 0111 0001 + 0000 0110 0000 0110 0001 0010 0111 0111 结果为: (1277)10

在第(2)题中,如果是采用12位数表示加数548和729,则能看出最后得到的答案是1100 0111 0111,这时就是BCD码加法溢出了。所以我们在判断的时候不能仅仅看BCD码最高位是不是丢失,而要看结果的最高4位是不是大于9,如果大于9,就可以认为是溢出了。

16.假定十进制数用8421 NBCD码表示,十进制运算673–356可以采用673加上(–356)的模10补码实现。

画出实现上述操作的3位十进制数的BCD码减法运算线路,列出线路中所有的输入变量和输出变量。 参考答案:

[– (356) 10]补 = 0110 0100 0100

0110 0111 0011

+ 0110 0100 0100

1100 1011 0111 + 0110 0110 0000 0011 0001 0111

最高位产生进位,因此,结果为正数:0011 0001 0111,故结果为:(+317)10

电路图分为两部分,一个是求出模10补码,另一个是计算以及判断输出结果的电路图(参见教材图3.33)。

求模10补码的电路图(RTL级)如下:

Add0jianshu[11..0]11' h333 --A[10..0]B[10..0]+ADDER12' h001 --Add1A[11..0]B[11..0]+ADDERtemp[11..0] 计算电路图(RTL级)如下:

1' h0 --Add2A[4..0]B[4..0]Add13A[3..0]result~[71..48]Add14A[4..0]jianshu[11..0]1' h0 --+ADDERtemp[11..0]4' h3 --B[3..0]+Add8ADDER5' h01 --SELB[4..0]+DATAAADDERresult~[83..72]SELOUT0DATAADATABOUT0A[3..0]4' h3 --B[3..0]+ADDERDATAB1' h0 --A[4..0]B[4..0]Add1result[11..0]1' h0 --+A[3..0]Add124' h3 --B[3..0]result~[47..36]Add11A[3..0]MUX21ADDER+ADDER4' h3 --B[3..0]SELMUX211' h0 --A[4..0]B[4..0]Add0+ADDERDATAA1' h0 --+ADDERA[4..0]OUT0Add9DATAB5' h01 --B[4..0]+LessThan4ADDERA[3..0]Add104' h3 --B[3..0]5' h09 --A[4..0]B[4..0]+LessThan3ADDERA[4..0]

第 4 章 习 题 答 案

3. 已知某机主存空间大小为64KB,按字节编址。要求: (1)若用1K×4位的SRAM芯片构成该主存储器,需要多少个芯片? (2)主存地址共多少位?几位用于选片?几位用于片内选址? (3)画出该存储器的逻辑框图。 参考答案: (1)64KB / 1K×4位 = 64×2 = 128片。

(2)因为是按字节编址,所以主存地址共16位,6位选片,10位片内选址。

(3)显然,位方向上扩展了2倍,字方向扩展了64倍。下图中片选信号CS为高电平有效。

Y0A15………A10A9…Y63A0…1K*4SRAMCSWR1K*4SRAMCSWR……1K*4SRAMCSWR1K*4SRAMCSWRD7…D0WE 4. 用64K×1位的DRAM芯片构成256K×8位的存储器。要求: (1) 计算所需芯片数,并画出该存储器的逻辑框图。

(2) 若采用异步刷新方式,每单元刷新间隔不超过2ms,则产生刷新信号的间隔是多少时间?若采

用集中刷新方式,则存储器刷新一遍最少用多少读写周期? 参考答案:

(1)256KB / 64K×1位 = 4×8 = 32片。存储器逻辑框图见下页(图中片选信号CS为高电平有效)。 (2)因为每个单元的刷新间隔为2ms,所以,采用异步刷新时,在2ms内每行必须被刷新一次,且

仅被刷新一次。因为DRAM芯片存储阵列为64K=256×256,所以一共有256行。因此,存储器控制器必须每隔2ms/256=7.8μs产生一次刷新信号。采用集中刷新方式时,整个存储器刷新一遍需要256个存储(读写)周期,在这个过程中,存储器不能进行读写操作。

A17Y0……A16A15……Y3A0CSCSCSCSCSCSDRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1CSDRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1CSCSCSCSCSCSCSCSCS……DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1DRAM64K*1D7…D0

5. 用8K×8位的EPROM芯片组成32K×16位的只读存储器,试问:

(1)数据寄存器最少应有多少位? (2) 地址寄存器最少应有多少位? (3) 共需多少个EPROM芯片? (4) 画出该只读存储器的逻辑框图。 参考答案:

(1)数据寄存器最少有16位。

(2)地址寄存器最少有:15位(若按16位的字编址);16位(若按字节编址)。 (3)共需要 32K×16位 / 8K×8位= 4×2 = 8片。

(4)该只读存储器的逻辑框图如下(假定按字编址,图中片选信号CS为高电平有效)。

Y0A14A13A12………………CSWR……CS…………CSWR……Y3A08K*8EPROM8K*8EPROMWR8K*8EPROM8K*8EPROMWRCSD15……D8D7……D0

6. 某计算机中已配有0000H~7FFFH的ROM区域,现在再用8K×4位的RAM芯片形成32K×8位的

存储区域,CPU地址总线为A0-A15,数据总线为D0-D7,控制信号为R/W#(读/写)、MREQ#(访存)。要求说明地址译码方案,并画出ROM芯片、RAM芯片与CPU之间的连接图。假定上述其他条件不变,只是CPU地址线改为24根,地址范围000000H~007FFFH为ROM区,剩下的所有地址空间都用8K×4位的RAM芯片配置,则需要多少个这样的RAM芯片? 参考答案:

CPU地址线共16位,故存储器地址空间为0000H~FFFFH,其中,8000H~FFFFH为RAM区,共215=32K个单元,其空间大小为32KB,故需8K×4位的芯片数为32KB/8K×4位= 4×2 = 8片。

因为ROM区在0000H~7FFFH,RAM区在8000H~FFFFH,所以可通过最高位地址A15来区分,当A15为0时选中ROM芯片;为1时选中RAM芯片,此时,根据A14和A13进行译码,得到4个译码信号,分别用于4组字扩展芯片的片选信号。(图略,可参照图4.15)

若CPU地址线为24位,ROM区为000000H~007FFFH,则ROM区大小为32KB,总大小为16MB=214KB=512×32KB,所以RAM区大小为511×32KB,共需使用RAM芯片数为511×32KB/8K×4位=511×4×2个芯片。

7. 假定一个存储器系统支持4体交叉存取,某程序执行过程中访问地址序列为3, 9, 17, 2, 51, 37, 13, 4, 8,

41, 67, 10,则哪些地址访问会发生体冲突? 参考答案:

对于4体交叉访问的存储系统,每个存储模块的地址分布为: Bank0: 0、4、8、12、16 … …

Bank1: 1、5、9、13、17 …37 …41… Bank2: 2、6、10、14、18 … … Bank3: 3、7、11、15、19…51…67

如果给定的访存地址在相邻的4次访问中出现在同一个Bank内,就会发生访存冲突。所以,17和9、37和17、13和37、8和4发生冲突。

8. 现代计算机中,SRAM一般用于实现快速小容量的cache,而DRAM用于实现慢速大容量的主存。

以前超级计算机通常不提供cache,而是用SRAM来实现主存(如,Cray巨型机),请问:如果不考虑成本,你还这样设计高性能计算机吗?为什么?

WE