《计算机组成与设计》习题解答 下载本文

第1章

19. 设控制器的输入信号有时钟信号(T1, T2, T3)和指令译码器的输出信号(ADD, MOVE, JMP),输出信号为(PCin, MARin, Yin),其逻辑表达式为 PCin = T3*JMP MARin = T1 + T2*MOVE Yin = T3*(ADD + JMP) 试画出阵列逻辑电路的结构图,标出其中每个线路交叉点的连接编程情况,用圆点表示连接的交叉点,无圆点的交叉线表示不连接。 答:

T1 T2 T3 ADD MOVE JMP PCin MARin Yin

20. 可编程阵列逻辑芯片PAL20L8有多少个信号线引脚,其中有多少个引脚可以用于输出信号?有多少个引脚可用于输入信号?芯片内部有多少可编程点? 答:有20个信号线引脚,其中有8个引脚可以用于输出信号,有20个引脚可用于输入信号,芯片内部有40x8x8=2560个可编程点。

注:这是原始产品的情况。某些产商的产品为了降低成本,可能减少了可编程点的数量。

第3章

10. 写出下列二进制数的原码、反码、补码和移码。 (1) 11010100 (2) 0.1010000 (3) -10101100 (4) -0.0110000 答:(1)[11010100]原 = 011010100, [11010100]反 = 011010100,

[11010100]补 = 011010100,[11010100]移 = 111010100

(2)[0.1010000]原 = 0.1010000, [0.1010000]反 = 0.1010000,

[0.1010000]补 = 0.1010000,[0.1010000]移 没有定义

(3)[-10101100]原 = 110101100, [-10101100]反 = 101010011,

[-10101100]补 = 101010100,[-10101100]移 = 001010100 (4)[-0.0110000]原 = 1.0110000, [-0.0110000]反 =1.1001111,

[-0.0110000]补 =1.1010000,[-0.0110000]移 没有定义

15. 对以下数据作规格化浮点数的编码,假定1位符号位,基数为2,阶码5位,采用移码,尾数10位,采用补码。 (1) 101102 (2) -0.0013810

答:(1) 10110 = 0.10110×25

[5]移=10000+00101=10101 [0.10110]补=0.10110

符号位为0,所以浮点格式为: [10110]浮=0 10101 1011000000

(2) -0.00138 = -0.0000000001011010011= -0.1011010011×2-9

[-9]移=10000-01001=00111

[-0.1011010011]补=1.0100101101

符号位为1,所以浮点格式为:

[-0.00138]浮=1 00111 0100101101

注意:本题要求对浮点数进行编码,要将结果写成二进制代码的形式,而不能写成M×RE的形式。解这类题目的基本方法是先将数据表示成M×RE的形式,其中M满足规格化要求,然后分别对M和E按照题目要求进行编码,按后将编码的结果按浮点数格式表示出来。

19. 设浮点数的格式为: 符号位:b15

阶码: b14~b8,采用补码表示

尾数: b7~b0,与符号位一起采用规格化的补码表示,基数为2。问: (1) 它能表示的数值范围是什么?

(2) 它能表示的最接近于0的正数和负数分别是什么? (3) 它共能表示多少个数值? 请用十进制数2的幂次表示。

答:最小正尾数为2-1,最大正尾数为1-2-8 最小负尾数为-1,最大负尾数为-(2-1+2-8) = -2-1(1+2-7) 最小阶码为-26 = -64,最大阶码为26-1 = 63 (1) 数值范围为-263到(1-2-8)*263 (2) 最接近于0的负数为:-(1+2-7)2-65 最接近于0的正数为:2-65

(3) 共能表示2×27×1/2×28 + 1 = 27*28 = 215 +1个数值

23. 将下列十六进制的IEEE单精度数代码转换成十进制数值表示。 (1) 42E48000 (2) 3F880000 (3) 00800000 (4) C7F00000

答:题目中给出了浮点数编码的十六进制表示,首先将其转换成二进制表示,然后求数值。 (1) 42E4800016 = 0 10000101 110010010000000000000002

= (-1)0×26 * (1 + 1/2 + 1/4 + 1/32 + 1/256) = 114.25 (2) 3F88000016 = 0 01111111 000100000000000000000002

= (-1)0×20×(1 + 1/16) = 1.0625

(3) 0080000016 = 0 00000001 000000000000000000000002 = (-1)0×21-127×(1+0) = 2-126 = 1.175×10-38

(4) C7F0000016 = 1 10001111 111000000000000000000002 = (-1)1×216×(1 + 1/2 + 1/4 + 1/8) = -122880 = -1.875×216 = -15×213

30. 对于本章介绍的(12,8)海明码,假如出现了码字

{w12,w11,w10,w9,w8,w7,w6,w5,w4,w3,w2,w1}={0,1,0,0,1,1,0,1,0,1,1,0}

问该码字是否合法?如果不合法,是哪一位发生了错误?应该纠正成什么码字? 答:书上的方程式第二个等式漏了w11,将上述码字代入方程组,均符合,没有错误。

31. 取G(x) = x3 + x + 1作为(7,4)循环码生成多项式,试采用多项式除法求余数多项式的方法计算它所生成的全部码字。

答:全部码字如下所示。这里采用多项式乘法的方法计算循环码,将信息字m的多项式乘以生成多项式就得到码字v的多项式。这样得到的全部码字与采用除法求余方法得到的全部码字相同。它符合循环码的条件,但是码字与信息字的对应关系不同。

m 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 v 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1

32. 对上题的结果进行验证,验证上述编码结果是循环码。

答:上述各代码向左循环移位后的情况可以用状态转换图表示如下:

0000000 00010110010110010110010110000110001110001010001011101001 1010011 1001110 0011101 0111010 1110100 1101001 1111111 从图中显而易见,每一个代码向左循环移位后形成的代码仍然是合法代码,因而构成循环码。

第4章

3. 已知x和y的二进制值,用补码运算求[x+y]补和[x-y]补,指出结果是否溢出。

(1) x = 0.10111,y = 0.11011 (2) x = 0.11101,y = 0.10011 (3) x = 0.11011,y = - 0.01010 (4) x = - 0.11111,y = 0.11011

答:(1) [x+y]补=0.10111+0.11011=1.10010(溢出) [x-y]补=0.10111+1.00101=1.11100

(2) [x+y]补=0.11101+0.10011=1.10000(溢出)

[x-y]补=0.11101+1.01101=0.01010

(3) [x+y]补=0.11011+1.10110=0.10001

[x-y]补=0.10111+0.11011=1.00101(溢出)

(4) [x+y]补=1.00001+0.11011=1.11100

[x-y]补=1.00001+1.00101=0.00110(溢出)

5. 已知x和y的二进制值,用补码一位乘法计算[x*y]补,列出计算过程。 (1) x = 0011,y = 0101 (2) x = -0011,y = 0101 (3) x = 0011,y = - 0101 (4) x = -0011,y = - 0101

答:(1) [x]补=0011,[y]补=0101,[-x]补=1101 0 1 2 3 4 初始数值 加[-x]补 右移 加[x]补 右移 加[-x]补 右移 加[x]补 右移 00000101 11010101 11101010 00011010 00001101 11011101 11101110 00011110 00001111 0 0 1 1 0 0 1 1 0 即[xy]补=00001111, xy=1111

(2) [x]补=1101,[y]补=0101,[-x]补=0011

0 1 2 3 4 初始数值 加[-x]补 右移 加[x]补 右移 加[-x]补 右移 加[x]补 右移 00000101 00110101 00011010 11101010 11110101 00100101 00010010 11100010 11110001 0 0 1 1 0 0 1 1 0 即[xy]补=11110001, xy=-1111

(3) [x]补=0011,[y]补=1011,[-x]补=1101 0 1 2 3 4 初始数值 加[-x]补 右移 无操作 右移 加[x]补 右移 加[-x]补 右移 00001011 11011011 11101101 11101101 11110110 00100110 00010011 11100011 11110001 0 0 1 1 1 0 0 1 1 即[xy]补=11110001, xy=-1111

(4) [x]补=1101,[y]补=1011,[-x]补=0011 0 1 2 3 4 初始数值 加[-x]补 右移 无操作 右移 加[x]补 右移 加[-x]补 右移 00001011 00111011 00011101 00011101 00001110 11011110 11101111 00011111 00001111 0 0 1 1 1 0 0 1 1 即[xy]补=00001111, xy=1111

9. 已知x和y的二进制值,计算[x/y]原。 (1) x = 1010,y = 0011 (2) x = 1001,y = 0010

答:(1) [x]原=01010,[y]原=00011,[-y]补=11101

循环 0 步骤 初始值 左移,商0 减[y]原 余数 00000 01010 00000 10100 11101 10100 1 2 3 4 5 加[y]原,商0 左移 减[y]原 加[y]原,商0 左移 减[y]原 加[y]原,商0 左移 减[y]原 商1 左移 减[y]原 商1 左移 R0右移 00000 10100 00001 01000 11110 01000 00001 01000 00010 10000 11111 10000 00010 10000 00101 00000 00010 00000 00010 00000 00100 00001 00001 00001 00001 00001 00010 00011 00001 00011 即:[x/y]原=00011

(2) [x]原=01001,[y]原=00010,[-y]补=11110 循环 0 1 2 3 4 5 步骤 初始值 左移,商0 减[y]原 加[y]原,商0 左移 减[y]原 加[y]原,商0 左移 减[y]原 商1 左移 减[y]原 加[y]原,商0 左移 减[y]原 加[y]原,商0 左移 R0右移 余数 00000 01001 00000 10010 11110 10010 00000 10010 00001 00100 11111 00100 00001 00100 00010 01000 00000 01000 00000 01000 00000 10001 11110 10001 00000 10001 00001 00010 11111 00010 00001 00010 00010 00100 00001 00100 即:[x/y]原=00100

15 按浮点数运算的步骤计算18.4+90.2,浮点数的编码为1位符号位,6位移码编码的阶码,9位尾数,运算器中有4位尾数的保护位并采用冯?诺依曼舍入法。 答:18.4 = 10010.0110011 = 25?0.100100110 [18.4]浮 = 100101, 0.100100111

90.2 = 1011010.00110011 = 27?0.101101001 [90.2]浮 = 100111, 0.101101001

(1) 对阶

[18.4]浮 = 100111, 0.0010010011100 (2) 尾数相加 0.0010010011000 + 0.1011010010000 = 0.1101100101100 (3) 规格化。尾数已经符合规格化要求。 [18.4+90.2]浮 = 100111, 0.1101100101100 (4) 舍入 [18.4+90.2]浮 = 100111, 0.110110011 (5) 检查溢出。没有溢出,结果为 100111, 0.110110011 = 1101100.11 = 108.75

注:这个结果虽不精确,但是正确的。

16. 设x=5.5,y=-0.12,用浮点数乘法运算步骤计算xy。浮点数的编码格式是:1位符号位,4位补码表示的阶码,7位尾数与符号位构成原码编码,运算器中有7位保护位,采用0舍1入的舍入法。

答:x = 101.12 = 0.1011000×23

[x]浮=0011, 0.1011000

y = -0.00011110101112 = -0.1111011×2-3 [y]浮=1101, 1.1111011 (1) 阶码相加,得

1011 + 0101 = 0000 (2) 尾数相乘,得 0.1011000×1.1111011 = 1.10101001001000 (3) 规格化,已经符合规格化要求,即 [xy]浮=0000, 1.10101001001000 (4) 舍入,得

[xy]浮=0000,1.1010101 (5) 检查溢出,没有溢出,最后结果为 -0.10101012×20 = -0.6640625

18. 两个64位的包装字中都包含4个16位的无符号数据字段,编码分别为00017777CCCCFFFF16和00AA77771111800016,分别求其截位加法和饱和加法的结果。 答:截位加法:

0001 7777 CCCC FFFF

+ 00AA 7777 1111 8000 00AB EEEE DDDD 7FFF 饱和加法:

0001 7777 CCCC FFFF

+ 00AA 7777 1111 8000 00AB EEEE DDDD FFFF

19. 对于上题的两个包装字,若进行包装字的相等比较,结果是什么? 答:0000 FFFF 0000 0000

20. 设64位的包装字中包含4个16位的无符号数据字段,编码为00017777CCCCFFFF16,求其进行包装字左移1位和右移一位操作之后的结果。 答:左移1位:

0020 EEEE 9998 FFFE 右移1位:

0000 3BBB 6666 7FFF

第5章

5. 存储器芯片的容量通常用a×b的方式表示,其中a为字数,b为每个字的位数。以下几种存储器芯片分别有多少地址线和数据线?

(1) 2K×16 (2) 64K×8 (3) 16M×32 (4) 4G×4

答:地址线数量根据存储器的字数计算,数据线的数量等于存储器的位数。

(1) 11条地址线,16条数据线。 (2) 16条地址线,8条数据线。 (3) 24条地址线,32条数据线。 (4) 32条地址线,4条数据线。

9. 假定计算机系统需要512字节RAM和512字节ROM容量。使用的RAM芯片是128字×8位,ROM芯片为512字×8位。RAM芯片有CS*及WE*控制端,ROM芯片有CS*控制端,CPU有地址线A15~A0、数据线D7~D0、读写控制线RW*等,试确定各存储器芯片的地址区间,指出存储器以及各存储器芯片需要的地址线数量,并画出存储器与CPU的连接图。 答:存储器需要4片RAM芯片和1片ROM芯片。为了区别不同的RAM芯片以及ROM芯片,必须给每个芯片设置不同的地址区间。各存储器芯片的地址区间安排情况如下表所示:

元件 RAM1

RAM2 RAM3 RAM4 ROM

16进制地址范围 0000~007F 0080~00FF 0100~017F 0180~01FF 0200~03FF

二进制地址值 0 0 0 x x x x x x x 0 0 1 x x x x x x x 0 1 0 x x x x x x x 0 1 1 x x x x x x x 1 x x x x x x x x x

表中元件一栏列出芯片的类型,16进制地址范围一栏列出每个芯片对应的地址范围,二进制地址值一栏表示选择每个芯片的地址信号逻辑值,其中的x表示对于选择芯片,这些地址线可取任意值,但这些地址线要输入到芯片中,用于选择芯片内的存储单元。存储器的总容量为1KB,需要10条地址线,如果CPU有更多的地址线,多余的高位地址线可以空置不用。RAM芯片需要7条信号线(27=128),ROM芯片需要9条地址线(29=512)。存储器与CPU的连接图如下。

CPUA15~10 A9 A8 A7 A6~A02:4译码3 2 1 0R/W#DataRAM1CSWE*128×8DAD0~D7RAM2CSWE*128×8DARAM3CSWE*128×8DARAM4CSWE*128×8DAROMA8,A7CS 512×8DA

12.某计算机4K×8位的主存地址空间中用2片1K×8的ROM和2片2K×4的RAM芯片构成。画出CPU与RAM和ROM连接图。RAM的控制信号为CS#和WE#,CPU的地址线为A11~A0,数据线为8位的线路D7~D0,控制信号有读写控制R/W#和访存请求MREQ#。 答:ROM芯片需要10条地址线,2片ROM芯片进行字扩展。RAM芯片需要11条地址线,2片RAM进行位扩展后与ROM再进行字扩展。CPU与RAM和ROM连接图如下,其中ROM的地址线为A9~A0,RAM的地址线为A10~A0。A11和A10送入2:4译码电路,输出选择信号sel0~sel3。sel0和sel1作为ROM的芯片许可,sel2和sel3的逻辑或作为RAM的芯片选择。读写控制R/W#作为RAM的写许可WE*信号输入。

MREQ# A11-0 R/W# CPU D7~D0 OE# A11-10 ROM A OE sel0 2:4译码电路 sel1 RAM sel2 sel3 ROM A OE WE* A CE WE* A CE 1K x8 D7~D0 D 1K x8 D7~D0 D 2K x4 D7~D4 D 2K x4 D3~D0 D

15. 一台计算机采用256×8的RAM芯片和1024×8的ROM芯片。计算机系统需要2K字节的RAM和4K字节的ROM,以及4个输入输出接口,每个接口有4个8位的寄存器,采

用存储器映像的编址方式,位于8KB地址空间的高端。存储器地址的最高2位为00表示访问RAM,为01或10表示访问ROM,为11表示访问输入输出接口寄存器。

(1) 需要多少RAM和ROM芯片?

(2) 画出存储器地址映像表,指出地址空间中各段分别映像到什么芯片。 (3) 用16进制数给出RAM、ROM和接口寄存器的地址范围。

答:(1) 2KB/256 = 8,需8片RAM芯片

4KB/1024B = 4,需4片ROM芯片 (2) 地址映像表如下:

02K4K6KRAMROMROMIO

其中低端的2KB地址空间映象到RAM芯片,中间4K映象到ROM芯片,高端有16个字节映象到接口寄存器,其余为空白区域。

(3) RAM的地址范围为000016到07FF16,ROM的地址范围为080016到17FF16,接口寄存器的地址范围为到1FF016到1FFF16。 注:本题是设计题,可以有不同的结果。

16. Intel 82875 MCH存储器控制接口支持128Mb、256Mb、512Mb的8位或者16位的SDRAM芯片,存储器数据接口为64位,问:

(1) 存储器容量最小是多少?

(2) 将存储器芯片以位扩展方式构成内存条,再字扩展方式扩展容量,最多支持8个内存条,存储器容量最大是多少?

(3) 最大配置时,每次存储器刷新多少数据位?

答:(1)采用容量为128Mb的16位芯片,即8Mx16位的芯片4片,可构成8Mx64位的存储器,容量为64MB。 (2)每个内存条采用容量为512Mb的8位芯片,即64Mx8位的芯片8片,可构成64Mx64位的存储器,容量为512MB。8条内存条容量为4GB。 (3)最大配置时,采用64Mx8位的芯片,存储器阵列结构为8Kx8K,即有8K行,一个芯片每次刷新8Kx8=64Kb数据。8个内存条的64个芯片总共刷新64x64Kb=4Mb。

22. 有一个“cache-主存”存储层次。主存容量为8个块,cache容量为4个块,采用直接地址映像。

(1) 对于如下主存块地址流:0, 1, 2, 5, 4, 6, 4, 7, 1, 2, 4, 1, 3, 7, 2,如果主存中内容开

始时未装入cache中,请列出每次访问后cache中各块的分配情况;

(2) 指出块命中的时刻;

(3) 求出此期间cache的命中率。

答:(1) 主存块地址流为主存的块地址,在直接地址映像方式下,它们对应的cache块号如下表所示:

主存块地址 0 1 2 5 4 6 4 7 1 2 4 1 3 7 2 cache块地址 0 1 2 1 0 2 0 3 1 2 0 1 3 3 2 在这个地址流下,cache中3个块的分配情况如下所示。

时间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 地址流 0 1 2 5 4 6 4 7 1 2 4 1 3 7 2 第0块 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 第1块 - 1 1 5 5 5 5 5 1 1 1 1 1 1 1 第2块 - - 2 2 2 6 6 6 6 2 2 2 2 2 2 第3块 - - - - - - - 7 7 7 7 7 3 7 7 h

(2) 从上表可得命中时刻为7, 11, 12, 15 (3) h = 4/15 = 0.267

23. 对于下述访存地址序列(字地址):

1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4, 43, 5, 6, 9, 17

假定cache是直接映象的,cache的容量是16字,初始时cache为空。在下列两种情况

下,标出每次访存的cache命中情况以及最后cache的内容: (1) 每块1字。 (2) 每块4字。

答:cache中的分配情况如下所示

4 8 5 20 17 19 56 9 11 4 43 5 6 9 17 地址序列: 1 字分配:

1 1 4 1 4 8 1 4 5 8 1 5 8 5 8 4 5 9 4 5 9 4 5 6 9 4 5 6 9 4 5 6 9 17 17 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19 19 5 8 5 5 9 5 9 5 9

h h

h

20 20 20 20 20 20 4 56 56 56 56 56 56 56 56 56 11 11 43 43 43 43 43 n n n n n n n n n n n y n y y 命中情况 n

(2)cache中的分配情况如下所示,注意题目给出的是字地址,cache在每访问一个字时调入一个数据块。

4 8 5 20 17 19 56 9 11 4 43 5 6 9 17 地址序列: 1 字分配:

0 0 0 0 0 16 16 16 16 16 16 16 16 16 16 16

1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19 19 19 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 8 9 20 20 20 20 20 20 4 21 21 21 21 21 21 5 22 22 22 22 22 22 6 23 23 23 23 23 23 7 8 9 8 9 8 9 56 8 57 9 8 9 8 9 40 40 40 8 41 41 41 9 10 10 10 10 10 58 10 10 10 42 42 42 10 10 11 11 11 11 11 59 11 11 11 43 43 43 11 11 n n y n n y n n y n n y y n y 命中情况 n

上述每一行是cache中每一个字的存储空间的内容,最后一列是cache最后的内容。

27. 对于下述访存地址序列(字地址):

1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4, 43, 5, 6, 9, 17 假定cache是全相联映象的,cache的容量都是16字,初始时cache为空。在下列情况

下,标出每次访存的cache命中情况以及最后cache的内容: (1) 每块一字,采用FIFO替换策略。 (2) cache是全相联映象,每块4字,采用FIFO替换策略。 (3) cache是全相联映象,每块4字,采用LRU替换策略。 答:(1)

地址序列 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 4 1 4 8 1 4 8 5 1 4 8 5 20 17 19 56 9 1 4 8 5 1 4 8 5 1 4 8 5 1 4 8 5 1 4 8 5 11 1 4 8 5 4 1 4 8 5 43 5 1 4 8 5 1 4 8 5 6 1 4 8 5 9 1 4 8 5 17 1 4 8 5 20 20 20 20 20 20 20 20 20 20 20 20 17 17 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19 19 56 56 56 56 56 56 56 56 56 9 9 9 9 9 9 9 9 11 11 11 11 11 11 11 43 43 43 43 43 6 6 6 15

4 0 1 2 3 4 5 6 7 4 0 1 2 3 4 5 6 7

8 0 1 2 3 4 5 6 7 8 9 5 0 1 2 3 4 5 6 7 8 9

11

h 4

h

6

h 9

h 17 8 9 (2)

地址序列 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 1 2 3

20 17 19 56 9 0 1 2 3 4 5 6 7 8 9 43 5

16 16 16 16 16 16 16 16 16 8 17 17 17 17 17 17 17 17 17 9 18 18 18 18 18 18 18 18 18 10 10 19 19 19 19 19 19 19 19 19 11 11 4 5 6 7 8 9 4 5 6 7 8 9 56 56 56 56 56 56 56 56 16 57 57 57 57 57 57 57 57 17 58 58 58 58 58 58 58 58 18 59 59 59 59 59 59 59 59 19 8 9 8 9 8 9 4 5 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 10 10 10 10 10 10 10 10 6 11 11 11 11 11 11 11 11 8 0 1 2 3 4 5 6 7 8 9 h 5 0 1 2 3 4 5 6 7 8 9 7 20 20 20 20 20 20 20 40 40 40 40 40 21 21 21 21 21 21 21 41 41 41 41 41 22 22 22 22 22 22 22 42 42 42 42 42 23 23 23 23 23 23 23 43 43 43 43 43

h

h

h 11

4

h

h 6

9

17

(3)根据使用频率计算得到的结果是:

地址序列 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 1 2 3

20 17 19 56 9 0 1 2 3 4 5 6 7 8 9 43 5

16 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19 19 19 4 5 6 7 8 9 4 5 6 7 8 9 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 56 56 56 56 40 40 40 40 40 57 57 57 57 41 41 41 41 41 10 10 10 10 10 58 58 58 58 42 42 42 42 42 11 11 11 11 11 59 59 59 59 43 43 43 43 43

h

20 20 20 20 8 21 21 21 21 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 22 22 22 22 10 10 10 10 10 10 10 10 23 23 23 23 11 11 11 11 11 11 11 11

r

h

r

r

h

h

r

h

h

h

h

根据近期最久未使用法得到的结果是:

地址序列 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 1 2 3

4 0 1 2 3 4 5 6 7

8 0 1 2 3 4 5 6 7 8 9 5 0 1 2 3 4 5 6 7 8 9 20 17 19 56 9 0 1 2 3 4 5 6 7 8 9 11 4 43 5 6 9 17

16 16 16 16 16 16 40 40 40 40 40 17 17 17 17 17 17 41 41 41 41 41 18 18 18 18 18 18 42 42 42 42 42 19 19 19 19 19 19 43 43 43 43 43 4 5 6 7 8 9 4 5 6 7 8 9 4 5 6 7 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 56 56 56 56 56 56 56 56 16 57 57 57 57 57 57 57 57 17 10 10 10 10 10 58 58 58 58 58 58 58 58 18 11 11 11 11 11 59 59 59 59 59 59 59 59 19

h

20 20 20 20 20 20 4 21 21 21 21 21 21 5 22 22 22 22 22 22 6 23 23 23 23 23 23 7

r

h

r

r

h

h

4 5 6 7 r

4 5 6 7 h

4 5 6 7 h

4 5 6 7 h

4 5 6 7 r

33. 对于下述访存地址序列(字地址):

1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4, 43, 5, 6, 9, 17

假定cache的容量都是16字,初始时cache为空。在下列情况下,标出每次访存的cache命

中情况以及最后cache的内容: (1) cache是4路组相联映象,每块一字,采用FIFO替换策略。

(2) cache是2路组相联映象,每块4字,采用LRU替换策略。 答:(1)

地址序列 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 4 1 4 8 1 4 8 5 1 4 5 8 20 17 19 56 9 1 4 5 1 1 1 1 11 1 4 1 43 5 1 1 6 1 9 1 17 1 17 17 17 17 17 17 17 17 17 17 17 4 5 19 19 19 19 19 19 19 19 19 19 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 20 20 20 20 20 20 20 20 20 20 20 20 8 8 8 8 8 8 8 6 6 6 43 43 43 43 43 56 56 56 56 56 56 56 56 56 9 9 9 9 9 9 9 9 11 11 11 11 11 11 11 15

h

h

h

h

(2)

地址序列 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 1 2 3

4 0 1 2 3 4 5 6 7

8 0 1 2 3 4 5 6 7 8 9 5 0 1 2 3 4 5 6 7 8 9 20 17 19 56 9

11

4

43 5 4 5 6 7 4 5 6 7 6 4 5 6 7 9 4 5 6 7 17 4 5 6 7 20 20 20 20 20 20 4 21 21 21 21 21 21 5 22 22 22 22 22 22 6 23 23 23 23 23 23 7 4 5 6 7 8 9 16 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19 19 19 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11

h

h

56 56 56 56 40 40 40 40 40 57 57 57 57 41 41 41 41 41 58 58 58 58 42 42 42 42 42 59 59 59 59 43 43 43 43 43

h

h

h

h

h

h

34. 设2路组相联映象的cache容量为214块,每块是一个32位的字,主存容量是cache的

256倍,其中有如下数据(地址和数据均用十六进制表示):

地址 000000 000008 010000 010004 00FFFC FFFFF8 FFFFFC 数据 13579246 87654321 77777777 11235813 12345678 11223344 24682468 将主存中这些数据装入cache后,cache中各块的数据内容以及相应的标记是什么?

答:主存地址中有8位区号、13位组号、1位块号,块内地址2位。地址位数共24位,表

中数据装入cache后,cache的标记是区号和块号,有9位。操作过程中,各cache块装入的数据如下: 地址 000000 000008 010000 010004

组号 000 001 000 000

主存块号

0 0 0 1

Cache块号 块内地址

0 0 1 0

0 0 0 0

标记 00 00 02 03

数据 13579246 87654321 77777777 11235813

00FFFC FFFFF8 FFFFFC

1FFF 1FFF 1FFF

1 0 1

0 1 0

0 0 0

01 1FE 1FF

12345678 11223344 24682468

其中,地址为010004的块将覆盖地址为000000的块,最后一个装入的块将覆盖地址为

00FFFC的块。操作完成后,cache中有关块的内容如下表所示:

组号 000 000 001 1FFF 1FFF

Cache块号 块内地址

0 1 0 0 1

0 0 0 0 0

标记 03 02 00 1FF 1FE

数据 11235813 77777777 87654321 24682468 11223344

43. 一个两级存储器系统有八个磁盘上的虚拟页需要映射到主存中的四个页框架中。某程序生成以下访存页号序列:

1, 0, 2, 2, 1, 7, 6, 7, 0, 1, 2, 0, 3, 0, 4, 5, 1, 5, 2, 4, 5, 6, 7, 6, 7, 2, 4, 2, 7, 3

画出每个页号访问请求之后存放在主存中的位置,采用LRU替换策略,计算主存的命中率,假定初始时主存为空。

答:主存中页面分配的情况如下表所示

地址流: 1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3

页面:

1 1* 1 1* 1 1 1 1 1* 1 1 1 1* 1* 4 4 4 4 4* 4 4 4 4* 4* 4* 2 2 2 2 2 - 0 0 0 0* 0* 6 6 6 6* 2 2 2 2 2* 5 5 5 5 5 5 5 5 5 5 5* 4 4 4 4* - - - 2 2 2 2 2* 2* 0 0 0 0 0 0 0 0 0* 0* 2 2 2 2* 7 7 7 7 7 7 7 7 - - - - 7 7 7 7 7 7* 7* 3 3 3 3* 1 1 1 1* 1* 6 6 6 6 6 6* 6* 6* 3 n n y n y y n n y y n n y y n

命中: n n n y y n n y n y n y n y n 从表中可见,命中13次,命中率=13/30=43.3%

第6章

9. 设计算机A有60条指令,指令操作码为6位固定长度编码,从000000到111011。其后继产品B需要增加32条指令,并与A保持兼容,

(1) 试为计算机B设计指令操作码。 (2) 计算操作码平均长度。

答::(1)6位操作码中保留了111100到111111四个码字,如果不再保留码字可增加3位扩展码,这样增加的32条指令的操作码为111100,000到111111,111中的一个。 (2)如果每条指令的使用概率相等,则平均指令长度为:

(6×60 + 9×32)/(60+32) = 7.04

注意:B计算机与A计算机保持兼容意味着B计算机原封不动地采纳A计算机的指令,可增加新的指令,但A计算机中已有的指令不能做任何改动。

10. 某计算机的指令系统字长定长为16位,采用扩展操作码,操作数地址需要4位。该指令系统已有三地址指令M条,二地址指令N条,没有零地址指令,问系统最多还有多少条一地址指令?

答:三种指令的操作码长度分别为4位、8位和12位。设系统最多有L条一地址指令,则有

L=((24-M) ?24-N) ?24

13. 在一个单地址指令的计算机系统中有一个累加器,给定以下存储器数值:

单元20中的内容是40 单元30中的内容是50 单元40中的内容是60 单元50中的内容是70

求以下指令分别将什么数值装入到累加器中? (1) load #20 (2) load 20 (3) load (20) (4) load #30 (5) load 30 (6) load (30)

答:(1) 20 (2) 40 (3) 60 (4) 30 (5) 50 (6) 70

15. 一条双字长的指令存储在地址为W的存储器中。指令的地址字段位于地址为W+1处,用Y表示。在指令执行中使用的操作数存储在地址为Z的位置。在一个变址寄存器中包含X的值。试叙述Z是怎样根据其他地址计算得到的,假定寻址方式为

(1) 直接寻址 (2) 间接寻址 (3) 相对寻址 (4) 变址寻址

答:根据题意画出如下示意图:

WW+1变址寄存器XZ存储器?OP(操作码)Y(地址码)?A

(1) 在直接寻址方式下,指令中存放的就是操作数的地址。即操作数的地址Z在地址为W+1处,Z从指令中得到,所以有Z=Y。

(2) 在存储器间接寻址方式下,操作数的地址在某一个存储单元中,其地址在指令中。Z根据Y访存后得到,所以有Z = (Y)。

(3) 在相对寻址方式下,操作数的地址为PC的值(取完指令后PC的值为W+2)加上Y得到。所以有Z=W+Y+2。

(4) 在变址寻址方式下,操作数的地址为变址寄存器的值加上Y得到。所以有 Z=X+Y

16. 一条双字长的load指令存储在地址为200和201的存储位置,该指令将地址码指定的存储器内容装入累加器AC。指令的第一个字指定操作码和寻址方式,第二个字是地址部分。PC寄存器的值是200。通用寄存器R1的值是400,变址寄存器XR的内容是100,如下图所示。

地址PCR1XRAC200400100200201202309400500600702800主存load500M450700800900325300

指令的寻址方式字段可指定任何一种寻址方式。问在以下寻址方式下,装入AC的值。

a. 直接寻址 b. 立即数寻址 c. 相对寻址 d. 变址寻址

e. 寄存器(R1)寻址 f. 寄存器(R1)间接寻址

答:在直接寻址方式下,有效地址是指令中的地址码部分内容500,装入AC的操作数是800。

在立即数寻址方式下,指令的地址码部分就是操作数而不是地址,所以将500装入AC(实际上有效地址是201)。

在间接寻址方式下,操作数的有效地址存储在地址为500的单元中,由此得到有效地址800,操作数是300。

在相对寻址方式下,有效地址是500+202=702,所以操作数是325。在该指令的执行阶段,PC寄存器的内容已经更新为下一条指令的地址202。

在变址寻址方式下,有效地址是XR+500=100+500=600,操作数是900。 在寄存器寻址方式下,R1的内容400装入AC,这时不存在有效地址。

在寄存器间接寻址方式下,有效地址是R1的内容400,装入AC的操作数是700。

17. 一条相对转移指令长4个字节,存储在存储器中地址为75010的地方,转移目标地址为50010。问

(1) 指令读取之后PC的值为多少? (2) 指令的相对地址字段的值为多少?

(3) 该指令的相对地址字段需要多少二进制位?

答:(1) 该指令读取之后PC的值更新为75410。

(2) 相对转移指令中的地址偏移量应为 500 - 754 = -254

(3) 254 < 28,相对地址字段需要8个二进制位。

(4) 如果采用补码表示相对地址,则可以形成前向和后向的转移,即转移到该指令的前面以及后面。这样需要增加一个符号位,一共9位相对地址。

32. 某计算机系统的指令有三地址、二地址和单地址格式。

? 三地址指令有8条,用于数据运算,地址码都是采用寄存器寻址方式,有16个

通用寄存器,数据运算功能有加、减、乘、除、与、或、非、异或。

? 二地址指令有1条,用于数据传输,两个地址码各有4种寻址方式(寄存器、寄

存器间接、直接和存储器间接)。

? 单地址指令有2条,1条用于条件转移,采用相对寻址,转移条件在指令中用4

位编码表示,另一条用于无条件转移,采用寄存器寻址。存储器地址为32位。 试设计其指令格式,写出操作码及寻址方式编码方案。

答:本题可以有多种不同设计结果。设存储器地址为32位,下图所示是一种可能的结果。 三地址指令的操作码:0000,0001,0010,0011,0100,0101,0110,0111。寻址方式为寄存器寻址方式,有16个通用寄存器,所以采用4位寄存器号。指令长度为16位。 二地址指令的操作码为1000,2位代码m表示寻址方式,寄存器寻址和寄存器间接寻址采用4位寄存器号,直接和存储器间接寻址时采用32位存储器地址。指令长度有16位、44位、72位三种。 条件转移指令的操作码为1100,4位条件码,采用24位相对地址码,指令长度为32位。无条件转移指令的操作码为1110,4位寄存器号,指令长度为8位。

4 三地址 二地址 单地址1 单地址2 Opcode Opcode 4 Ra 2 4 Rb 4/32 A 4 Rc 2 4/32 A m 4 m 24 A Opcode cond Opcode Ra

33. 以下MIPS指令码代表什么操作?写出它的汇编指令表示。

0000 0000 1010 1111 1000 0000 0010 0000

34. 根据MIPS指令操作码定义以及指令格式,给出以下指令的各个字段的十进制值:

add $8, $17,$18

第七章

11. 对于单总线的CPU结构,写出执行以下带有间接访存寻址方式的指令的执行过程。

(1) ADD R1,(mem)

(2) STORE (mem),R1

答: (1) 指令的含义是将R1的内容加上存储器中的内容,结果写入R1,存储器采用间接

寻址。执行步骤是

PC→MAR,读

PC+1→PC DBUS→MDR MDR→IR IR(地址段)→MAR,读 DBUS→MDR MDR→MAR,读 DBUS→MDR MDR→Y R1+Y→Z Z→R1 (2) 指令的含义是将R1的内容写入存储器,存储器采用间接寻址。执行步骤是 PC→MAR,读 PC+1→PC DBUS→MDR MDR→IR IR(地址段)→MAR,读 DBUS→MDR MDR→MAR R1→MDR,写

注意:可以有不同的执行流程,但是指令执行过程中不可使用指令没有指定的通用寄存器,

如不可以将读取的直接地址放入通用寄存器R2。

13. 在单总线的CPU结构中,如果加法指令中的第二个地址码有寄存器寻址、寄存器间接寻址和存储器间接寻址这三种寻址方式,并在指令中用代码表示指令的寻址方式,即该指令可实现如下功能:

(1) ADD R1,R2 ; R1+R2→R1 (2) ADD R1,(R2) ; R1+(R2)→R1 (3) ADD R1,(mem) ;R1+(mem) →R1 试设计执行这条指令的流程图。

答:在第一种寻址方式下指令的执行过程是:

PC→MAR,读 PC+1→PC

DBUS→MDR→IR R2→Y

R1 + Y→Z Z→R1

在第二种寻址方式下指令的执行过程是:

PC→MAR,读 PC+1→PC

DBUS→MDR→IR

R2→MAR,读 DBUS→MDR MDR→Y R1 + Y→Z Z→R1

在第三种寻址方式下指令的执行过程是:

PC→MAR,读 PC+1→PC

DBUS→MDR→IR IR(mem)→MAR,读 DBUS→MDR MDR→MAR,读 DBUS→MDR MDR→Y R1 + Y→Z Z→R1

结合三种寻址方式的指令执行流程如下图所示。

PC→MARPC + 1→PCDBUS→MDRMDR→IR寄存器寻址R2→Y寄存器间接寻址R2→MAR存储器间接寻址IR(mem)→MARDBUS→MDRMDR→MARDBUS→MDRMDR→YR1 +Y→ZZ→R1

注意:本题要求给出一条指令的程序图,流程图要画成一个,而不是3个。

17. 在单总线CPU结构中有下列指令操作,试画出控制器流程图。

ADD R3,R1,R2 // R1+R2?R3 MOVE R1,R2 // R1? R2 MOVE R1,mem // R1?mem MOVE mem,R1 // mem?R1

MOVE mem1,mem2 // mem1?mem2

JMP #A

答:对于ADD指令,控制流程为: PC?MAR,读 PC+1?PC DBUS?MDR MDR?IR R1?Y R2+Y?Z Z?R3

对于第一条MOVE指令,控制流程为: PC?MAR,读 PC+1?PC DBUS?MDR MDR?IR R1?R2

对于第二条MOVE指令,控制流程为: PC?MAR,读 PC+1?PC DBUS?MDR MDR?IR IR(mem)?MAR R1?MDR, 写

对于第三条MOVE指令,控制流程为: PC?MAR,读 PC+1?PC DBUS?MDR MDR?IR IR?MAR, 读 DBUS?MDR?R1

对于第四条MOVE指令,控制流程为: PC?MAR,读 PC+1?PC DBUS?MDR MDR?IR IR(mem1)?MAR,读 DBUS?MDR IR(mem2)?MAR,写 对于JMP指令,控制流程为: PC?MAR,读 PC+1?PC DBUS?MDR MDR?IR PC?Y IR+Y?Z

Z?PC

根据上述步骤,得如下的控制流程图:

PC→MARPC + 1→PCDBUS→MDRMDR→IRMOVE2R1→YR2+Y→ZZ→R3R1→R2IR→MARR1→MDR,写MOVE3IR→MAR,读MDR→R1IR→MAR,读DBUS→MDRIR→MAR,写PC→YIR+Y→ZZ→PCADDMOVE1MOVE4JMP

32. 对于单总线CPU结构,设计一个可实现下列指令操作的硬连线控制器,画出控制器逻辑图并写出各控制信号的逻辑表达式

ADD R3,R1,R2 LOAD mem,R1 STORE mem,R1 JMP #A

对应上述指令的译码器输出信号分别为add, load, store和jmp。 答: (1) 先画出控制器逻辑图

环形脉冲发生器T1T2T3T4T5 ADD IR 指令 LOAD 译码 STORE JMP时钟编码器?

(2)列出各指令的各操作过程所需的控制信号 对于ADD指令,每个时钟周期内的控制信号为: T1: PCout, MARin, PC+1, Read ;PC?MAR, PC+1, read T2: MDRout, IRin ;MDR?IR T3: R1out, Yin ;R1?Y T4: R2out, Zin, ADD ;R2+Y?Z T5: Zout, R3in ;Z?R3 对于LOAD指令,各时钟周期的控制信号为:

T1: PCout, MARin, PC+1, Read ;PC?MAR, PC+1, read T2: MDRout, IRin ;MDR?IR T3: IRout, MARin, Read ;IR?MAR, read T4: MDRout, R1in ;MDR?R1 对于STORE指令,各时钟周期的控制信号为: T1: PCout, MARin, PC+1, Read ; PC?MAR, PC+1, read T2: MDRout, IRin ;MDR?IR T3: IRout, MARin ;IR?MAR T4: R1out, MDRin, Write ;R1?MDR, write 对于JMP指令,各时钟周期的控制信号为: T1: PCout, MARin, PC+1, Read ; PC?MAR, PC+1, read T2: MDRout, IRin ;MDR?IR T3: PCout, Yin ;PC?Y T4: IRout, ADD, Zin ;IR+Y?Z T5: Zout, PCin ;Z?PC

(3) 写出控制信号及其逻辑表达式。综合上述控制信号的时序,得控制器逻辑: PCout=T1+JMP*T3 PC+1=T1 MARin=T1+STORE*T3+LOAD*T3 MDRout=T2+LOAD*T4 Read=T1+LOAD*T3 IRin=T2 R1out=ADD*T3+STORE*T4 Yin=ADD*T3+JMP*T3 R2out=ADD*T4 Add=ADD*T4+JMP*T4 Zin=ADD*T4+JMP*T4 Zout=ADD*T5+JMP*T5 R3in=ADD*T5 IRout=LOAD*T3+STORE*T3+JMP*T4 R1in=LOAD*T4 PCin=JMP*T5 MDRin=STORE*T4 Write=STORE*T4 END=(LOAD+STORE)*T4+(ADD+JMP)*T5

33. 对于上题指令操作,试设计一个采用若干片8位ROM芯片的水平型直接编码的微程序控制器。要求画出微程序控制的框图,写出每条微指令的代码并指出其在ROM中的存储位置以及实现多路转移的方法。假定四条指令的操作码分别为二进制码00、01、10和11,微地址的生成采用增量与断定结合的方式。

答:(1) 写出各指令的操作步骤及其所需的控制信号。同上题第二步。 (2) 写出各控制信号以及各微指令的控制字。各控制信号同上题第三步,它们构成的控

制字如下。

PCout PC+1 MARin MDRout Read IRin R1out Yin

R2out Add Zin Zout R3in IRout R1in PCin MDRin Write

将上述18个控制信号组成一个控制字,形成各微指令的控制字如下,其中取指令操作在T1和T2两个时钟周期完成,因为采用水平型直接编码:

T1: 1110 1000 0000 0000 00 T2: 0001 0100 0000 0000 00 ADDT3: 0000 0011 0000 0000 00 ADDT4: 0000 0000 1110 0000 00 ADDT5: 0000 0000 0001 1000 00 LOADT3: 0010 1000 0000 0100 00 LOADT4: 0001 0000 0000 0010 00 STORET3: 0010 0000 0000 0100 00 STORET4: 0000 0010 0000 0000 11 JMPT3: 1000 0001 0000 0000 00 JMPT4: 0000 0000 0110 0100 00 JMPT5: 0000 0000 0001 0001 00 (3) 画出微程序流程图。 根据指令执行过程,列出指令控制流程如下:

00000001ADD0010ADDT300110011ADDT401000100ADDT50000LOAD0110LOADT301110111LOADT40000T1T20001xx10STORE1010STORET310111011STORET40000JMP1110JMPT311111111JMPT410001000JMPT50000

(4) 安排微指令存储地址。以上总共有12条微指令,安排每条微指令在控制存储器中的存储地址如上图中所示。控制存储器的地址为4位,每条微指令的地址如图中每个微指令方框的左上角所示。

(5) 微指令格式设计。设计每条指令的控制字段。上述流程图中只有一个分支,所以在微指令中设置一位BCF字段。每条微指令的下一条微指令地址字段BAF为4位,标注在每个方框的右下角。在多路分支的时候,BAF中的高三位根据操作码以及寻址信息构成。这样完整的微指令格式是:

控制字(18位) BCF(1位) BAF(4位) 各指令代码如下: T1: 1110 1000 0000 0000 00 0 0001 T2: 0001 0100 0000 0000 00 1 xx10 ADDT3: 0000 0011 0000 0000 00 0 0011 ADDT4: 0000 0000 1110 0000 00 0 0100 ADDT5: 0000 0000 0001 1000 00 0 0000

LOADT3: 0010 1000 0000 0100 00 0 0111 LOADT4: 0001 0000 0000 0010 00 0 0000 STORET3: 0010 0000 0000 0100 00 0 1011 STORET4: 0000 0010 0000 0000 11 0 0000 JMPT3: 1000 0001 0000 0000 00 0 1111 JMPT4: 0000 0000 0110 0100 00 0 1000 JMPT5: 0000 0000 0001 0001 00 0 0000

第二条微指令(T2)的下址采用的多路分支方法为: 用指令操作码生成下址的高2位,低2位固定为10。并用一位的BCF字段控制分支地址的生成。微指令格式以及多路分支地址的形成电路如下图所示:

控制字(18位)?控制信号BCFBAF操作码1 0下址

34. 对于上题指令操作,若采用阵列逻辑实现控制器,试画出控制器的状态转换图。 解: (1) 写出各指令的操作步骤。同上。 (2) 画出状态图。控制器的状态转换图如下图所示:

S0S1ADDJMPLOADSTORES5S7S2S9S3S6S8S10S4S11

(3) 列出状态码。每个状态的输出控制信号分别对应于微程序方法中的控制字,即:

S0: 1110 1000 0000 0000 00 S1: 0001 0100 0000 0000 00 S2: 0000 0011 0000 0000 00 S3: 0000 0000 1110 0000 00 S4: 0000 0000 0001 1000 00 S5: 0010 1000 0000 0100 00 S6: 0001 0000 0000 0010 00 S7: 0010 0000 0000 0100 00

S8: S9: S10: S11: 0000 0010 0000 0000 11 1000 0001 0000 0000 00 0000 0000 0110 0100 00 0000 0000 0001 0001 00

41. 对于下列指令序列: MULTD F0,F6,F4 SUBD F8,F0,F2 ADDD F2,F10,F2 指出指令间的数据相关性。

答:指令1和2之间存在关于F0的RAW相关, 指令2和3之间存在关于F2的WAR相关。

42. 在1个5级指令流水线(IF, ID, EXE, MEM, WB)中执行以下指令序列。流水线中具有检测相关性的硬件,并能停顿指令的EXE阶段以解决相关性问题,允许不相关指令提前进入EXE阶段和以后的阶段,假设每条指令都需经过5个流水阶段,每个流水阶段都只需1个周期,流水线中无相关专用通路。 (1) 指出指令序列中的数据相关性;

(2) 画出指令流水线的时空图,指出这些指令的执行(EXE)顺序。 Sub R1,R0,R5 Add R1,R1,R0 Addi R2,R5,1 mult R4, R1,R0 And R6,R2,R0 Add R3,R3,R4 答:(1)指令1与指令2对于R1存在RAW和WAW相关, 指令1与指令4对于R1存在RAW, 指令2与指令4对于R1存在RAW, 指令3与指令5对于R2存在RAW, 指令4与指令6对于R4存在RAW。 (2)时空图: IF ID Ex M IF ID IF IF ID IF ID IF ID W Ex M ID Ex M W Ex M Ex M W Ex M W W W 指令的执行(EXE)顺序为:1? 3? 2 ? 5? 4?6

第八章

9. 用EIA-232-F异步串行通信方式传送十六进制数A816,数据位为8位,偶校验位为1位,停止位1位,请画出波形图。

答:波形图如下

起始位 0 0 0 1 0 1 0 校1 验位 结束位

14. 假设存储器系统采用50MHz时钟,存储器以每周期一个字的速率传输8个字的访问请求,以支持块长为8个字的cache,每字4字节。对于读操作,访问顺序是1个周期接受地址;3个周期延迟;8个周期用于传输8个字。对于写操作,访问顺序是1个周期接受地址;2个周期延迟;8个周期用于传输8个字;3个周期恢复和写入纠错码。对于以下访问模式,求出该存储器的最大带宽:

(1) 全部访问为读操作 (2) 全部访问为写操作

(3) 65%的访问为读操作,35%的访问为写操作 答:(1) 读操作周期时间为

Tm = (1+3+8)×20×10-9 = 240×10-9 (s)

读操作的带宽为

Bm = 8/Tm = 33.3MW/S = 133.3MB/S

(2) 写操作的周期时间为

Tm = (1+2+8+3)×20×10-9 = 280×10-9 (s)

写操作的带宽为

Bm = 8/Tm = 28.6MW/S = 114.4MB/S

(3) 加权平均周期时间为

Tm = (240×0.65 + 280×0.35)×10-9 = 254×10-9 (s)

加权平均带宽为

Bm = 8/Tm = 31.50MW/S = 126.0MB/S

或者采用带宽的加权平均

Bm=133.3×0.65 + 114.4×0.35 = 126.685 MB/S

15. 对于上题的计算机系统,假定处理器采用写回式cache,每条指令中出现cache失效的概率为0.05,40%的cache失效需要进行写回,其余60%只需要进行读操作,cache失效时CPU需要等待,求平均每条指令中用于处理cache失效的等待时钟周期数。 答:从上题得到读操作需要12周期,写操作需要14个时钟周期,读操作时需要写回。这样,

每条指令中用于处理cache失效的时钟周期数为

0.05×0.40×(12 + 14) + 0.05×0.60×12 =0.02×26 + 0.03×12 = 0.52+0.36 = 0.88

第九章

19. 设一个磁盘的平均寻道时间为20ms,传输速率是1MB/s,控制器开销是2ms,转速为每分钟5400转。求读写一个512字节的扇区的平均时间。 答:平均旋转延时 = 0.5/5400转/分 = 0.0056秒 = 5.6ms

平均磁盘访问时间 = 平均寻道时间 + 平均旋转延时 + 传输时间 + 控制器延时 = 20ms + 5.6ms + 0.5KB/1.0MB/s + 2ms = 20+5.6+0.5+2ms = 28.1ms

20. 设磁盘接口的数据传输速率为20MB/s,旋转速度为5400rpm,寻道时间为10ms,每个磁道的容量为64KB,控制器延迟为0.5ms,磁盘采用一个cache存放数据以提高平均访问速度。

(1) 求该磁盘在磁盘cache不命中时的访问64KB数据的时间。 (2) 求该磁盘在磁盘cache命中时的访问64KB数据的时间,假定cache容量足够并忽略cache的访问时间。

(3) 当磁盘cache的命中率为0.8时,求磁盘的平均访问时间。

答:(1) 不命中访问时间=控制器延迟+寻道时间+旋转时间+数据传输时间 =0.5 + 10 + (1/2)(60/5400) + max{(64/64)( 60/5400),64K/20M} =0.5 + 10 + 5.56 + max{11.11,3.12} =27.17 ms

(2) 命中访问时间=控制器延迟+数据传输时间 =0.5+3.12=3.62 ms

(3) 平均访问时间=0.8×3.62+(1-0.8)×27.17=2.90+5.43=8.33 ms

第十章

10. 若计算机共有5级中断,中断响应的优先次序从高到低依次是1→2→3→4→5,若要将中断的优先次序改为1→4→5→2→3,试设计各级中断处理程序的中断级屏蔽位。 答:

- L1 L2 L3 L4 L5 L1 L2 L3 L4 L5 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0 1 1

11. 在一个8级中断的系统中,硬件中断响应从高到低的优先顺序是1?2?3?4?5?6?7?8,设置中断屏蔽寄存器后,中断响应的优先顺序变为1?3?5?7?2?4?6?8,如果CPU在执行一个应用程序时有5、6、7、8级的四个中断同时到达,CPU在按优先顺序处理到第3个中断请求的过程中又有一个3级中断请求到达CPU,试画出CPU响应这些中断的顺序示意图。 答:中断相应的过程如下图所示:

原程序 1级 2级 3级 4级 5级 6级 7级 8级

中断响应的顺序为5,7,6,3,6,8。

13. 某计算机CPU有5个中断源D1、D2、D3、D4和D5,硬件的中断优先级从高到低分别是1级、2级、3级、4级和5级。软件设置的中断屏蔽字见下表。每个中断屏蔽字有5位中断屏蔽代码,其中,“0”表示该中断源开放,“1”表示该中断屏蔽源被屏蔽。

中断源 D1 D2 D3 D4 D5

中断屏蔽字 D1 D2 D3 D4 D5 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1

(1) 当使用屏蔽字时,处理机响应各中断源的中断请求的先后次序是什么?实际上的中断处理次序是什么?

(2) 如果D1、D2、D3、D4和D5这5个中断源同时请求中断,画出处理机响应中断请求和实际运行中断服务程序过程的示意图。

答:(1) 当使用正常的中断屏蔽码时,处理机响应各中断源的中断请求的先后次序是根据优

先级从高到低的级别,分别是1级、2级、3级、4级和5级。实际处理的顺序是4级、5级、3级、2级和1级。

(2) 按照改变后的中断屏蔽码,D1、D2、D3、D4和D5这5个中断源同时请求中断时,处

理机响应中断源的中断请求和实际运行中断服务程序过程如下图所示。图中时间轴向下,箭头表示处理过程,没有箭头的垂直线表示响应的过程。

原程序 1级 2级 3级 4级 5级

14 一个DMA模块采用周期挪用方式从一个速率为9600bps的外围设备向存储器传输字符。CPU读取指令的速率为每秒100万条,每条指令一个字,问DMA模块对于CPU速率的影响有多少?

答:DMA每传输一个字符访问一次存储器,从而影响CPU的读取指令的操作。设DMA的访存周期为T,则DMA对CPU的影响比例为:9600×T/(8×1000000)。

20. 某32位计算机有2条选择通道和1条字节多路通道。每条选择通道支持2个磁盘和2个磁带设备。字节多路通道连接2个打印机、2个读卡机和10台终端。假定以下各设备的数据传输速率:

磁盘 800KB/s 磁带 200KB/s 打印机 6.6KB/s 读卡机 1.2KB/s 终端 1KB/s

问系统的输入输出传输速率最大值为多少?

答:选择通道的输入输出传输速率为800KB/s,字节多路通道的输入输出传输速率为 2×6.6KB/s + 2×1.2KB/s + 10×1KB/s = 25.6 KB/s 系统的输入输出传输速率最大值为 2×800KB/s + 25.6 KB/s = 1625.6 KB/s