2009 年全国硕士研究生计算机学科入学统一考试
计算机组成原理试题分析
一、选择题(每个题 2 分)
11.冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU 区分它们的依据
是
A.指令操作码的译码结果
C.指令周期的不同阶段
B.指令和数据的寻址方式
D.指令和数据所在的存储单元
[答案] C
[解析] 1、指令执行步骤,在取指期间取来的是指令,读数据期间读来的是数据;
2、指令和数据性质上的区别,虽然二者都用二进制表示,但属于完全不同性质的信
息,数据是计算机加工处理的“原材料”,指令是告知计算机运行功能和执行步骤的
命令类信息。
12.一个 C 语言程序在一台 32 位机器上运行。程序中定义了三个变量 x、y 和 z,其中 x 和
z 为 int 型,y 为 short 型。当 x = 127,y = -9 时,执行赋值语句 z = x+y 后,x、y 和 z 的
值分别是
A.x = 0000007FH,y = FFF9H,z = 00000076H
B.x = 0000007FH,y = FFF9H,z = FFFF0076H
C.x = 0000007FH,y = FFF7H,z = FFFF0076H
D.x = 0000007FH,y = FFF7H,z = 00000076H
[答案] D
[解析] 1、十进制整数到二进制的转换,数据的补码表示;
2、补码加法运算,2 两个不同位数的补码数相加时需要进行符号扩展;
X=127,[X]补=0000007FH(32 位整数),运算后其值不变
Y=-9,[Y]补=FFF7H
(16 位整数),运算后其值不变
[Z]补 = [X 补+Y 补]=0000007FH+FFFFFFF7H=00000076H
3、解题技巧,也可先求出 127+(-9)=118,再变成补码后去与可供选择的答案对比。
13.浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮
点数的阶码和尾数均采用补码表示,且位数分别为 5 位和 7 位(均含 2 位符号位)。若
有两个数 X = 2729/32,Y = 255/8,则用浮点加法计算 X+Y 的最终结果是
A.00111 1100010
0010001
C.01000
B.00111 0100010
D.发生溢出
[答案] D
[解析] 1、十进制小数到二进制的转换,小数与整数的补码表示;
2、浮点数的阶码(整数)、尾数(尾数)的表示,规格化的概念;
3、浮点数的加法运算与结果溢出检查;
[X]浮=00111 0011101,[Y]浮=00101 0010100=00111 0000101
X 和 Y 的尾数相加的 0100010,应规格化,成为 0010001,阶码要加 1,将变成 8,
但阶码的数值位用 3 位补码表示,不能表示正 8,表明运算结果是溢出了。
4、解题技巧
A) 也可先把 25×5/8 变成 27×5/8/4=27×5/32,再计算 29/32+5/32=34/32=2×
17/32, 表明需要阶码加 1,将变成 8,已经不能表示,是溢出。
B) 千万不要变分数为小数之后再转换成二进制,分母是 2 的整数幂时只需转换
其分子部分,这对于解这个题实在是太重要了。
14.某计算机的 Cache 共有 16 块,采用 2 路组相联映射方式(即每组 2 块)。每个主存块大小
为 32 字节,按字节编址。主存 129 号单元所在主存块应装入到的 Cache 组号是
A.0
[答案] C
[解析] 1、Cache 与主存之间的地址映射关系;
B.2
C.4
D.6
2、三种 Cache 的组织方式(其实本题未测试这一点,是直接映射还是两路组相联与
答案不相关);129 MOD 32 = 4 余 1,所以答案为 C,注意 Cache 的组号从 0 开
始编码。
3、注:本题设映射关系为:i=j mod v (其中 i 为 cache 的组号,j 为主存的块号),m=v
×k(m 为 cache 中的块数,v 为 cache 中的组数,k 为每组包含的块数)。则答案为 C。
假如设映射关系为:i=[j/2^t]mod 2^g , (其中 i 为 cache 的组号, j 为主存的块号, 2^t
为组内的块数,2^g 为 cache 分的组数 )。则答案为 B。
15.某计算机主存容量为 64 KB,其中 ROM 区为 4 KB,其余为 RAM 区,按字节编址。现
要用 2 K×8 位的 ROM 芯片和 4 K×4 位的 RAM 芯片来设计该存储器,则需要上述规
格的 ROM 芯片数和 RAM 芯片数分别是
A.1、15
B.2、15
C.1、30
D.2、30
[答案] D
[解析] 1、一个字节 Byte 由 8 个二进制位 bit 组成;
2、存储器的字位扩展技术,选用已有芯片构建存储器;
计算: 4KB 的 ROM 要用 2K×8 位的器件 2 片;60KB 的 RAM 要用 4K×4 位的芯片数
量是(60K×8)/(4K×4)=30;
16.某机器字长 16 位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一
字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节 PC 自
动加 1。若某转移指令所在主存地址为 2000H,相对位移量字段的内容为 06H,则该转
移指令成功转移后的目标地址是
A.2006H
B.2007H
C.2008H
D.2009H
[答案] C
[解析] 1、指令的寻址方式,相对寻址的执行过程
2、指令的执行步骤与每一步的操作功能;
计算机按字节寻址,相对转移指令在 2000H 单元,则取出这条指令后 PC 的值应为
2002H,因为取指的同时将执行 PC 增量操作(此处增量值为 2,而不是 1),相对位
移量的值是 6,故转移目标地址应为 2008H。
17.下列关于 RISC 的叙述中,错误..的是
A.RISC 普遍采用微程序控制器
B.RISC 大多数指令在一个时钟周期内完成
C.RISC 的内部通用寄存器数量相对 CISC 多
D.RISC 的指令数、寻址方式和指令格式种类相对 CISC 少
[答案] A
[解析] 1、相对于 CISC 计算机,RISC 计算机的特点表现在哪些方面;
2、组合逻辑控制器和微程序控制器的组成与性能的同异之处;
18.某计算机的指令流水线由四个功能段组成,指令流经各功能段的时间(忽略各功能段之
间的缓存时间)分别为 90 ns、80 ns、70 ns 和 60 ns,则该计算机的 CPU 时钟周期至少
是
A.90 ns
B.80 ns
C.70 ns
D.60 ns
[答案] A
[解析] 1、如何确定每个流水步的时间长度,时钟周期应以最长的执行时间为准,否则用时
长的流水段的功能将不能正确完成。
19.相对于微程序控制器,硬布线控制器的特点是
A.指令执行速度慢,指令功能的修改和扩展容易
B.指令执行速度慢,指令功能的修改和扩展难
C.指令执行速度快,指令功能的修改和扩展容易
D.指令执行速度快,指令功能的修改和扩展难
[答案] D
[解析] 1、组合逻辑控制器和微程序控制器的组成与性能的同异之处。
20.假设某系统总线在一个总线周期中并行传输 4 字节信息,一个总线周期占用 2 个时钟周
期,总线时钟频率为 10 MHz,则总线带宽是
A.10 MB/s
B.20 MB/s
C.40 MB/s
D.80 MB/s
[答案] B。
[解析] 1、总线的带宽等于总线周期的频率×每个总线周期传送的信息数量。
按题意,(10×106 /2)×4 = 20×106 (MB/s)。
21.假设某计算机的存储系统由 Cache 和主存组成。某程序执行过程中访存 1000 次,其中
访问 Cache 缺失(未命中)50 次,则 Cache 的命中率是
A.5%
B.9.5%
C.50%
D.95%
[答案] D
[解析] 1、Cache 与主存之间的地址映射关系。
2、三种 Cache 的组织方式(其实本题未测试这一点,是直接映射还是两路组相联与
答案不相关);
3、Cache 的命中率。计算:命中率为 (1000-50) / 1000 = 95%
22.下列选项中,能引起外部中断的事件是
A.键盘输入
B.除数为 0
C.浮点运算下溢 D.访存缺页
[答案] A
[解析] 1、中断的分类。
能引起外部中断的只能是输入设备键盘。
二. 综合应用题
43.(8 分)某计算机的 CPU 主频为 500 MHz,CPI 为 5(即执行每条指令平均需 5 个时钟
周期)。假定某外设的数据传输率为 0.5 MB/s,采用中断方式与主机进行数据传送,以
32 位为传输单位,对应的中断服务程序包含 18 条指令,中断服务的其他开销相当于 2
条指令的执行时间。请回答下列问题,要求给出计算过程。
(1) 在中断方式下,CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?
(2)当该外设的数据传输率达到 5 MB/s 时,改用 DMA 方式传送数据。假定每次 DMA
传送块大小为 5000 B,且 DMA 预处理和后处理的总开销为 500 个时钟周期,则
CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?(假设 DMA 与 CPU
之间没有访存冲突)
[答案]
(1)中断方式下,CPU 每次用于数据传送的时钟周期数:518 +52 = 100
为达到外设 0.5 MB/s 的数据传输率,外设每秒申请的中断次数:
1 秒钟内用于中断的开销:
0.5 MB /4 B = 125 000
100 125 000 = 12500 000 = 12.5 M 个时钟周期
CPU 用于外设 I/O 的时间占整个 CPU 时间的百分比:12.5 M/500 M = 2.5%
(2)外设数据传输率提高到 5 MB/s 时,1 秒钟内需产生的 DMA 次数:
5 MB/5 000 B = 1000
CPU 用于 DMA 处理的总开销:1000 500 = 500 000 = 0.5 M 个时钟周期
CPU 用于外设 I/O 的时间占整个 CPU 时间的百分比:
[解析] 在答案中已加入分析。
0.5 M /500 M = 0.1%
44.(13 分)某计算机字长 16 位,采用 16 位定长指令字结构,部分数据通路结构如下图所
示(见下页),图中所有控制信号为 1 时表示有效、为 0 时表示无效,例如控制信号 MDRinE
为 1 表示允许数据从 DB 打入 MDR,MDRin 为 1 表示允许数据从内总线打入 MDR。假
设 MAR 的 输 出 一 直 处 于 使 能 状 态 。 加 法 指 令 “ ADD (R1) , R0 ” 的 功 能 为
(R0)+((R1))(R1),即将 R0 中的数据与 R1 的内容所指主存单元的数据相加,并将
结果送入 R1 的内容所指主存单元中保存。
下表给出了上述指令取指和译码阶段每个节拍(时钟周期)的功能和有效控制信号,
请按表中描述方式用表格..列出指令执行....阶段..每个节拍的功能和有效控制信号。
时钟
C1
C2
C3
C4
功能
MAR←(PC)
MDR←M(MAR)
PC←(PC)+1
IR←(MDR)
指令译码
有效控制信号
PCout,MARin
MemR,MDRinE
PC+1
MDRout,IRin
无
[答案] 参考答案一:
时钟
C5
C6
C7
C8
C9
功能
MAR←(R1)
MDR←M(MAR)
A←(R0)
AC←(MDR)+(A)
MDR←(AC)
M(MAR)←(MDR)
有效控制信号
R1out,MARin
MemR,MDRinE
R0out,Ain
MDRout,Add,ACin
ACout,MDRin
MDRoutE,MemW
“A←(R0)”也可在 C7:“AC←(MDR)+(A)”之前单列的一个时钟周期内执行。
参考答案二:
时钟
C5
C6
C7
C8
C9
C10
[解析]
功能
MAR←(R1)
MDR←M(MAR)
A←(MDR)
AC←(A)+ (R0)
MDR←(AC)
M(MAR)←(MDR)
有效控制信号
R1out,MARin
MemR,MDRinE
MDRout,Ain
R0out,Add,ACin
ACout,MDRin
MDRoutE,MemW
一条指令的执行过程通常由取指、译码和执行 3 个步骤完成,本题中取指用 3 个节拍、
译码用 1 个节拍,执行加法运算并把结果写入主存如何完成呢?包括划分执行步骤、确定完
成的功能、要提供的控制信号,这是本题的要测试的内容。为回答这个问题,首先需要看清
图中给出的部件组成情况和信息传送的路径。
要完成的功能是 (R0) + ((R1))→(R1),从图中看到:
(1) R0、R1 都有送自己内容到内总线的路径,控制信号分别是 R0in 和 R1in;
(2) ALU 加运算,2 个数据由工作寄存器 A 和内总线提供,控制信号是 Add;累加器
AC 只接收内总线的内容,控制信号是 Ain;结果需存 AC,控制信号是 ACin;AC 的内容可送
内总线,控制信号是 ACout;
(3) PC 可接收内总线的内容,还可增 1,控制信号是 PCin 和 PC+1,PC 的内容可送内
总线,控制信号是 PCout;
(4) 指令寄存器 IR 可接收内总线的内容,控制信号是 IRin;
(5) 读写存储器时,地址由 MAR 经 AB 提供,MAR 只接收内总线上的信息,控制信号
是 MARin;
(6) 读存储器,提供读命令 MemR,并通过 DB 送入 MDR,控制信号是 MDRinE;MDR 的
内容可送内总线,控制信号是 MDRout;
(7)写存储器,提供写命令 MemW,数据由 MDR 通过 DB 送到存储器的数据引脚,控制
信号是 MDRoutE;
然后是划分执行步骤、确定每一步完成的功能、需要提供的控制信号。这是由指令应完
成的功能和计算机硬件的实际组成情况和信息传送的可用路径共同决定的。基本原则是步骤
越少越好,硬件电路要能支持,可以有多种方案,解题时应参照已给出的答题格式,即取指
和译码执行过程的那张表的内容,但不必把表已有的内容再抄一遍。
划分指令执行步骤,确定每一步完成的功能、给出需要提供的控制信号:
请注意,(R0)+((R1))表示:R0 寄存器的内容与 R1 作地址从主存中读出来的数据完
成加法运算;而 →(R1)表示把 R1 的内容作为主存储器的地址完成写主存操作。为防止出
现误解,题中还特地对此作了文字说明。这条指令的功能是先到主存储器取一个数,之后运
算,再将结果写回主存储器。
(1) 执行相加运算,需把存储器中的数据读出,为此首先送地址,即 R1 的内容送
MAR,控制信号是 R1out,MARin。
(2) 启动读主存操作,读出的内容送入 MDR,控制信号是 MemR,MDRinE,
还可同时把 R0 的内容经内总线送入 A,用到的控制信号是 R0out,Ain。
(3) 执行加法运算,即 A 的内容与 MDR 的内容相加,结果保存到 AC,
控制信号是 MDRout,Add,ACin。
(4) 要把 AC 的内容写入主存,由于 R1 的内容已经在 MAR 中,地址已经有了,但需
要把写入的数据(已经在 AC)中)经内总线送入 MDR;
控制信号是 ACout,
MDRin。
(5) 给出写主存的命令,把 MDR 的内容经 DB 送存储器的数据线引脚,执行写操作,
控制信号是 MDRoutE, MemW。
这几个步骤是有先后次序的,前面的完成了,下一步才可以执行,也保证了不会产生
硬件线路的冲突。请注意,使用最为频繁的是内总线,它在任何时刻只能接收一个输入数据,
并且向内总线发送信息的电路只能以三态门器件连接到内总线,5 个向内总线发送信息的控
制信号(ACout,PCout,R0out,R1out,MDRout)最多只能有一个为 1,其它 4 个必须全为
0,或者 5 个全为 0。
仔细看一下,发现可以把第 2 个步骤的操作划分到两个步骤中完成,一个步骤中安排
MDR 接收从存储器中读出的内容,到另外一个步骤实现 R0 的内容送入 A,这多用了一个操作
步骤,指令的执行速度会变慢。有些解题者在写存储器之前,还会再执行一次把 R1 的内容
送 MAR,尽管无此必要,但不属于原理上的错误。
当然还可以有其它的设计结果。
解题时这些叙述内容不必写出来(我们写出这些内容是希望帮助大家领会本题要测试
的知识点和指令的执行过程),直接按照已经给出的表格的形式、按照提供的填写办法把设
计的表格及其内容填写好就可以了。
请注意,题目表格内容(告诉你答题的格式和答题内容的表达方式)与你答题的表格内
融合在一起才是这条指令完整的执行过程,千万不要产生任何错觉。