文档库 最新最全的文档下载
当前位置:文档库 › 计算机组织与体系结构答案

计算机组织与体系结构答案

计算机组织与体系结构答案【篇一:计算机组成与体系结构(a)参考答案】

/p> 参考答案

使用班级:12060341x,12060342x,12060343x

一、填空题(每空1分,本题共10分)

1. 虚拟内存,缓存机制

2. 硬件,硬件

3. 页式,段式

4. 算术运算,逻辑运算

5. 尾数,阶码

二、选择题(每题2分,本题共20分)

1. c

2. b

3. b

4. c

5. c

6. c

7. a

8. d

9. a10. a

三、简答题(每题10分,本题共30分)

1. (6分) 计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似,因此称为流水线技术

2. (7分)人们通常把构成计算机的物理装置称为计算机的硬件,其主要功能是:存放控制计算机运行的程序和数据,对信息进行加工处理,实现与外界的信息交换。软件是计算机程序及其相关文档的总称。软件是对硬件功能的完善与扩充,一部分软件又是以另一部分软件为基础的再扩充。

3. (7分) 结构相关,是指令在重叠执行的过程中,

硬件资源满足不了指令重叠执行的要求,发生硬

件资源冲突而产生的相关。

4. 微程序控制器原理框图如下图所示。它主要由

控制存储器、微地址寄存器、微命令寄存器和地

址转移逻辑三大部分组成。

在采用微程序控制的计算机中:(1)将整个指令

系统对应的微程序放入控制存储器中;(2)从控

制存储器中逐条取出取机器指令用的微指令,

将主存中的机器指令存入指令寄存器中;(3)根

据指令寄存器中的操作码,经过微地址形成部件,

得到这条指令对应的微程序入口地址,并送入微

地址寄存器;(4)从控制存储器中逐条取出对应

的微指令并执行之(5)执行完对应于一条机器指

令的一段微程序后又回到取指微程序的入口地

址,继续第(2)、(3)、(4)、(5)步。

--------------(10分)

四、设计题(每题10分,本题共20分)

1. 如图

2. 二地址指令为14条:

操作码(4位)地址1(6位)地址2(6位)

0000 a1a2

1101 -------------(2分)

单地址指令为126条:

操作码(10位)地址(6位)

1110 000000 a1

1110 111111

1111 000000

1111 111101 -------------(6分)

零地址指令的格式为128条:

操作码(16位)

1111 111110 000000

1111 111110 111111

1111 111111

000000

1111 111111 111111 ---------------(10分)

五、计算题(每题10分,本题共20分)

1. (1)这个cache存储系统的等效访问周期:

等效存储容量: s=64mb

(2)这个cache存储系统的访问效率: e=tc/t =10/11 =0.91

2. 数值部分的运算如图

【篇二:计算机组织与体系结构答案中文版(第七版)】nit 2

1,设a,b,c的内存地址分别是a[i],b[i],c[i],i从1到1000

load m (a[i])

add m (b[i])

stor m(c[i])

2, a load m (2) 00000001|000000000010

b 一次

3,在ias机上读取一个值的过程如下:

ir中操作码?控制总线,存储器地址x?mar,mar中值?地址总线 x

中数据?数据总线,数总线地址?mbr

写入一个值:

ir中操作码?控制总线,存储器地址x?mar,mar值?地址总线 mbr 值?数据总线,数据总线值?x

4,程序代码:load m(0fa)

add m(0fb)

load m(0fa)

jump +m(08d,0:19)

load –m(0fa)

add m(0fb)

程序代码意图:首先装入0fa值,然后与0fb相加,再装入0fa值,若ac中值非负,取0fa左指令再装入-(0fa)将0fb的值相加后装入ac中

5,如图所示

6,便于同时存取两个连续地址序号的存储单元,提高访问速度

7,(1)存储器数据传输率快了32倍

(2)数据通道最大数目增大了一倍

(3)单通道最大数据传输速率提升了5倍。各种技术的使用,提升了

整机的性能。

8,回答正确,但是不适合用户理解。mac机的时钟速率是1.2ghz,

p4为2.4ghz,而时钟速率在一定程度上反映了计算机的执行速度,

所以p4的机器可能是目前最符合用户要求的机型。

9,在这种表示方法中,10个管表示了十个数字,而使用二进制可以

表示错误!未找到引用源。个数字

10,(画图)略

11,mips=错误!未找到引用源。*错误!未找到引用源。

12,∵mips=错误!未找到引用源。*错误!未找到引用源。

∴cpi(vax)=5,cpi(ibm)=1.39

ic≈错误!未找到引用源。13,cpi=(1+2+2+2)/错误!未找到引用源。=7*错误!未找到引用源。

mips=错误!未找到引用源。*错误!未找到引用源。 =错误!未找

到引用源。*错误!未找到引用源。=5.71*错误!未找到引用源。

t=7*错误!未找到引用源。*错误!未找到引用源。=1.75*错误!未找到引用源。 14,a:算术平均法适用于较多程序,抖动较大

调和平均发适用于较少程序,抖动较小

rb=4/(1/100+10+5+1)=0.25 mips

rb=4/(0.1+1+10+8)=0.21

rb=4/(0.2+0.2+0.5+1)=2.1

故 cab

第三章

1 步骤一

存储器cpu寄存器

1 0011 1pc

2 5940 ac

3 260011ir

5 0003

6

步骤二

存储器cpu寄存器

1 0011 2pc

2 5940 0003ac

3 260011ir

5 0003

6

步骤三

存储器cpu寄存器

1 0011 2pc

2 5940 0003ac

3 265940ir

5 0003

6

940 0003

步骤四

存储器cpu寄存器

1 0011 3 pc

2 5940 0006 ac

3 265940ir

5 0003 3+3=6

6

940 0003

步骤五

存储器cpu寄存器

1 0011 3pc

2 5940 0006ac

3 2626 ir

5 0003

6

940 0003

步骤六

存储器cpu寄存器

1 0011 4pc

2 5940 0006ac

3 2626 ir

5 0003

6 0006

3.2 步骤一中详细解释:

pc中内容为300,将pc?mar,然后将第一条指令装入数据总线,

数据总线?mbr,mbr?ir

3.3 (a)最大可直接寻址的容量是错误!未找到引用源。 b

(b),1,取一次指令要两次访问存储器

2,将降低存储器容量

(c) 程序计数器和指令寄存器各需要2

4位和8位。

3.4

(a)0~(错误!未找到引用源。)

(b) 0~(错误!未找到引用源。)

(c)i/o模块与cpu互连的特点

(d) 错误!未找到引用源。个,1个。因为总共只有16位cpu地址,故处理器只能支持(16-i/o端口位数)的位数

3.5

t=1/2*错误!未找到引用源。,外部数据总线l1=16,l=32

(1) f=1/t=2*错误!未找到引用源。∴v=错误!未找到引用源。*f≈

错误!未找到引用源。b/s

(2) 能提高性能,由公式v=1/t* 错误!未找到引用源。可知f与l

变大都可以提高传输速率

3.6

(1)电传输入?inpr

inpr?cpu(经i/o模块)

cpu?outr(经i/o模块)

outr?电传输出

(2)设置优先级,cpu处理为1,cpu通过i/o模块向外输出或者输

入为2,电传输入/输出为3.设置中断允许位,当优先级较低的操作

遇到高优先级操作的中断请求时,置ien=1,允许中断,从而实高

速cpu处理与低速i/o处理的协调。

3.7

(1)错误!未找到引用源。

(2)传指令时,为相同的传输速率

传数据时,仍然为错误!未找到引用源。倍差

3.8 这段时间一定比时钟周期小。

因为链式反应在一个时钟周期开始的时候应判断各主控方的优先级,只有该时间周期小于时钟周期才能即调整优先级又实现各主控方各

自的操作。

3.9 减小工作量,提高效率。因为不用判断优先级为16的设备的tr 线,任一高优先级设备可抢占该设备时间片,只有tr0-tr15都无效时,tr16自然使用时间片。

3.10 (1) 因为中断就是为了提高高速设备的使用效率,平衡高低速

设备。故优先级越低,其

速率就越低,其余高优先级操作耗时都比其少,所以tr16的平均等

待时间就最低。(在该特定设备中)

(2) 若其余操作一直请求使用时间片,这种条件下不成立。

3.11

(a)时钟周期t = 1 / f = 100 ns

读总线周期 = 2.5t = 250 ns

(b)250 – 20 = 230 ns

处理器至少应在230ns时将数据放到总线上

3.13

(a)总线时钟周期 = 1 / f * 109 ns =200 ns

write信号宽度 = 50 * 200 = 1000

(b)

(c)

3.14

(a)原周期 = 4 + 4 * 3 =16时钟周期

4 * 2 /16 = 50%

(b)原周期 = 4 + 3 * 3 + 13 = 26时钟周期

4 * 2 / 26 = 30.8%

3.15

(a)intel8088的总线宽度为8位

时钟周期 t = 1 / f = 1 / 8m =125 ns

4 * 8 / 4t = 64m 位/s

(b)2 * 8 / 4t = 32m 位/s

3.16

若使用偶对齐的字,取操作数需要4个存储器周期(包括取指令),4 *4 / 4m = 4 ms

若使用偶对齐的字,取操作数需要8个存储器周期(包括取指令),8 *4 / 4m = 8 ms

3.17

1 * 20% +

2 * 40% + 4 * 40% = 2.6

处理速率相对16位微处理器提高了1.6倍

3.18

处理器处理完一条指令后才会进入中断处理周期

9 * t = 9 / f = 9 / 10m = 900 ns

第四章

4.1

m=64,k=4

组数v=m / k=64 / 4=16=2d, d=4

块数4k=2s,s=12

标记=s-d=8位

块大小=2w=128*8=210,w=10

主存地址=

4.2

k = 2

块大小=行大小=2w = 16,w = 4

【篇三:计算机组织与系统结构第四章习题答案】(2)因为是按字节编址,所以主存地址共16位,6位选片,10位

片内选址。

(3)显然,位方向上扩展了2倍,字方向扩展了64倍。下图中片

选信号cs为高电平有效。

a15

a10a9

a0

d7

d0

we

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

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

a17

a16a15

……

a0

d7

d0

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

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

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

a14a13a12

a0

d15

d8d7

d0

cpu地址线共16位,故存储器地址空间为0000h~ffffh,其中,8000h~ffffh为ram区,

we

因为rom区在0000h~7fffh,ram区在8000h~ffffh,所以可通过最高位地址a15来区分,当a15为0时选中rom芯片;为1时选中

ram芯片,此时,根据a14和a13进行译码,得到4个译码信号,分别用于4组字扩展芯片的片选信号。(图略,可参照图4.15)

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巨型机),请问:如果不考虑成本,你还这样设计高性能计算机吗?为什么?参考答案:

不这样做的理由主要有以下两个方面:

①主存越大越好,主存大,缺页率降低,因而减少了访问磁盘所需的时间。显然用dram芯片比用sram芯片构成的主存容量大的多。

②程序访问的局部性特点使得cache的命中率很高,因而,即使主存没有用快速的sram芯片而是用dram芯片,也不会影响到访问速度。

9. 分别给出具有下列要求的程序或程序段的示例:

(1)对于数据的访问,几乎没有时间局部性和空间局部性。

(2)对于数据的访问,有很好的时间局部性,但几乎没有空间局部性。(3)对于数据的访问,有很好的空间局部性,但几乎没有时间局部性。(4)对于数据的访问,空间局部性和时间局部性都好。参考答案(略):

可以给出许多类似的示例。例如,对于按行优先存放在内存的多维数组,如果按列优先访问数组元素,则空间局部性就差,如果在一个循环体中某个数组元素只被访问一次,则时间局部性就差。

10. 假定某机主存空间大小1gb,按字节编址。cache的数据区(即不包括标记、有效位等存储区)有64kb,

块大小为128字节,采用直接映射和全写(write-through)方式。

请问:

(1)主存地址如何划分?要求说明每个字段的含义、位数和在主存

地址中的位置。(2)cache的总容量为多少位?参考答案:

(1)主存空间大小为1gb,按字节编址,说明主存地址为30位。cache共有64kb/128b=512行,因

此,行索引(行号)为9位;块大小128字节,说明块内地址为7位。因此,30位主存地址中,高14位为标志(tag);中间9位为

行索引;低7位为块内地址。

(2)因为采用直接映射,所以cache中无需替换算法所需控制位,全写方式下也无需修改(dirty)位,

11. 假定某计算机的cache共16行,开始为空,块大小为1个字,采用直接映射方式。cpu执行某程序时,

依次访问以下地址序列:2,3,11,16,21,13,64,48,19,11,3,22,4,27,6和11。要求:(1)说明每次访问是命中还

是缺失,试计算访问上述地址序列的命中率。

主存块号 = 字号。因此,映射公式为:cache行号 = 主存块号

mod 16 = 字号 mod 16。开始cache为空,所以第一次都是miss,以下是映射关系(字号-cache行号)和命中情况。 2-2: miss,3-3: miss,11-11: miss,16-0: miss, 21-5: miss,13-13: miss,64-0: miss、replace, 48-0: miss、replace,19-3: miss、replace,

11-11: hit, 3-3: miss、replace,22-6: miss, 4-4: miss,27-11: miss、replace,6-6: miss、replace,11-11: miss、replace。只

有一次命中!

(2)cache采用直接映射方式,数据区容量不变,为16个字,每

块大小为4个字,所以,cache共有

4行;主存被划分为4个字/块,所以,主存块号= [字号/4]。因此,映射公式为:cache行号 = 主存块号 mod 4 = [字号/4] mod 4。

以下是映射关系(字号-主存块号-cache行号)和命中情况。

2-0-0: miss,3-0-0: hit,11-2-2: miss,16-4-0: miss、replace,21-5-1、13-3-3: miss, 64-16-0、48-12-0、19-4-0: miss, replace,11-2-2: hit,3-0-0: miss、replace,

22-5-1: hit,4-1-1: miss、replace,27-6-2: miss、replace,6-1-1: hit,11-2-2: miss、replace。

命中4次。

由此可见,块变大后,能有效利用访问的空间局部性,从而使命中率提高!

12. 假定数组元素在主存按从左到右的下标顺序存放。试改变下列函数中循环的顺序,使得其数组元素的

访问与排列顺序一致,并说明为什么修改后的程序比原来的程序执行时间短。 int sum_array ( int a[n][n][n]) { int i, j, k, sum=0; for (i=0; i n; i++) for (j=0; j n; j++) for (k=0; k n; k++)

sum+=a[k][i][j];

return sum; }

参考答案:

int sum_array ( int a[n][n][n]) { int i, j, k, sum=0; for (k=0; k n; k++) for (i=0; i n; i++) for (j=0; j n; j++) sum+=a[k][i][j];

return sum;

}

修改后程序的数组元素的访问与排列顺序一致,使得空间局部性比原程序好,故执行时间更短。

13. 分析比较以下三个函数的空间局部性,并指出哪个最好,哪个最差?

参考答案:

对于函数clear1,其数组访问顺序与在内存的存放顺序完全一致,因此,空间局部性最好。

对于函数clear2,其数组访问顺序在每个数组元素内跳越式访问,相邻两次访问的单元最大相差3个int型变量(假定sizeof(int)=4,则相当于12b),因此空间局部性比clear1差。若主存块大小比

12b小的话,则大大影响命中率。

对于函数clear3,其数组访问顺序与在内存的存放顺序不一致,相邻两次访问的单元都相差6个int型变量(假定sizeof(int)=4,则相当于24b)因此,空间局部性比clear2还差。若主存块大小比24b 小的话,则大大影响命中率。

14. 以下是计算两个向量点积的程序段:

float dotproduct (float x[8], float y[8]) {

float sum = 0.0; int i,;

for (i = 0; i 8; i++) sum += x[i] * y[i]; return sum; }

要求:

(1)试分析该段代码中数组x和y的时间局部性和空间局部性,并推断命中率的高低。

(2)假定该段程序运行的计算机的数据cache采用直接映射方式,其数据区容量为32字节,每个主

相关文档
相关文档 最新文档