408 真题做题本·计算机组成原理部分
第 1 章 计算机系统概述
1.1 计算机系统层次结构
- 【2009】冯·诺伊曼计算机中指令和数据均以二进制形式存放在存储器中,CPU 区分它们的依据是( )。
A. 指令操作码的译码结果
B. 指令和数据的寻址方式
C. 指令周期的不同阶段
D. 指令和数据所在的存储单元
答案: C
解析: 在冯·诺伊曼结构中,指令和数据都以二进制形式存放在同一存储器中,二者在存储形式上没有本质差别,甚至同一个存储单元中的内容在不同情况下也可能被当作指令或数据使用。
CPU 根据当前所处的指令周期阶段来判断访存内容的用途:
- 在取指阶段,CPU 按程序计数器 PC 给出的地址读取指令;
- 在执行阶段,CPU 根据当前指令的要求读取或写入操作数。
因此,CPU 区分指令和数据的根本依据是当前处于指令周期的哪个阶段,故选 C。
A 项中,操作码译码发生在指令已经被取入之后,不能作为从存储器取出内容时区分指令与数据的依据;B 项中的寻址方式只能说明如何取得操作数;D 项错误,因为指令和数据可以存放在同一存储器中,并不要求占用不同类型的存储单元。
- 【2015】计算机硬件能够直接执行的是( )。
I. 机器语言程序
II. 汇编语言程序
III. 硬件描述语言程序
A. 仅 I
B. 仅 I、II
C. 仅 I、III
D. I、II 和 III
答案: A
解析: 计算机硬件能够直接识别并执行的是由机器指令组成的机器语言程序。
汇编语言使用助记符表示机器指令,必须先由汇编程序翻译为机器语言程序后才能执行;硬件描述语言用于描述数字电路或硬件系统,通常需要经过综合、编译等处理转化为相应的硬件结构或配置数据,也不能被普通 CPU 直接当作程序执行。
因此只有 I 正确,故选 A。
- 【2016】将高级语言源程序转换为机器级目标代码文件的程序是( )。
A. 汇编程序
B. 链接程序
C. 编译程序
D. 解释程序
答案: C
解析: 编译程序负责把高级语言源程序翻译成较低层次的目标程序。经过编译后,通常得到汇编代码或机器级目标代码文件;在完整的编译系统中,汇编程序还会把汇编代码转换为机器级目标文件。
各程序的作用如下:
- 汇编程序:把汇编语言程序翻译成机器语言目标程序;
- 编译程序:把高级语言源程序整体翻译为目标程序;
- 解释程序:逐句翻译并立即执行,一般不生成独立的目标代码文件;
- 链接程序:把一个或多个目标文件及所需库文件组合成可执行文件。
题目强调“高级语言源程序”到“机器级目标代码文件”的转换,主要由编译程序完成,故选 C。
- 【2019】下列关于冯·诺依曼计算机基本思想的叙述中,错误的是( )。
A. 程序的功能都通过中央处理器执行指令实现
B. 指令和数据都用二进制数表示,形式上无差别
C. 指令按地址访问,数据都在指令中直接给出
D. 程序执行前,指令和数据需预先存放在存储器中
答案: C
解析: 冯·诺依曼计算机的核心思想是“存储程序”:程序执行前,指令和数据都以二进制形式存入存储器,CPU 按地址取出指令并执行,由指令控制对数据进行处理。
A、B、D 都符合存储程序计算机的基本特征。
C 项错误。指令通常按地址顺序取出,但数据不一定直接写在指令中。数据可能来自:
- 指令中的立即数字段;
- 通用寄存器;
- 主存储器;
- 输入设备等。
具体从何处取得数据由指令的寻址方式决定,因此不能说“数据都在指令中直接给出”。
- 【2022】将高级语言源程序转换为可执行目标文件的主要过程是( )。
A. 预处理→编译→汇编→链接
B. 预处理→汇编→编译→链接
C. 预处理→编译→链接→汇编
D. 预处理→汇编→链接→编译
答案: A
解析: 以 C 语言程序为例,从源程序到可执行文件通常经历以下阶段:
- 预处理:展开宏定义、处理头文件包含和条件编译等;
- 编译:进行词法分析、语法分析、语义分析和优化,把预处理后的高级语言程序转换为汇编程序;
- 汇编:把汇编程序转换为机器级目标文件;
- 链接:把多个目标文件以及所需库文件合并,完成符号解析和地址重定位,生成可执行目标文件。
因此正确顺序为“预处理→编译→汇编→链接”,故选 A。
- 【2023】某运算类型指令中有一个地址码为通用寄存器编号,对应通用寄存器中存放的是操作数或操作数地址,CPU 区分两者的依据是( )。
A. 操作数的寻址方式
B. 操作数的编码方式
C. 通用寄存器的编号
D. 通用寄存器的内容
答案: A
解析: 同一个通用寄存器中的二进制内容本身没有固定含义,它既可能表示一个操作数,也可能表示某个操作数的存储地址。CPU 必须根据指令中规定的寻址方式来解释该寄存器的内容。
例如:
- 寄存器寻址:寄存器中存放的就是操作数;
- 寄存器间接寻址:寄存器中存放的是操作数所在的主存地址。
寄存器编号只决定使用哪个寄存器,寄存器内容和操作数编码本身都不能说明应将其解释为数据还是地址。因此 CPU 区分两者的依据是操作数的寻址方式,故选 A。
- 【2024】通常情况下,将汇编语言程序中实现特定功能的指令序列定义成一条伪指令(pseudoinstruction)。下列选项中,CPU 能理解并直接执行的是( )。
I. 伪指令
II. 微指令
III. 机器指令
IV. 汇编指令
A. 仅 I、IV
B. 仅 II、III
C. 仅 III、IV
D. 仅 I、III、IV
答案: B
解析: 机器指令是指令集体系结构规定的、可由 CPU 直接识别和执行的二进制指令。微程序控制器中的微指令用于产生控制信号并组织机器指令的执行,也由 CPU 内部的控制部件直接读取和执行。
伪指令和汇编指令都属于汇编语言层次:
- 伪指令通常由汇编器展开成一条或多条真正的机器指令;
- 汇编指令使用助记符书写,也必须由汇编程序翻译成机器指令。
因此,CPU 能理解并直接执行的是微指令和机器指令,即 II、III,故选 B。
1.2 计算机性能指标
- 【2010】下列选项中,能缩短程序执行时间的措施是( )。
I. 提高 CPU 时钟频率
II. 优化数据通路结构
III. 对程序进行编译优化
A. 仅 I、II
B. 仅 I、III
C. 仅 II、III
D. I、II、III
答案: D
解析: CPU 执行时间可表示为
其中, 为程序执行的指令条数, 为平均每条指令所需的时钟周期数, 为 CPU 主频。
- 提高 CPU 时钟频率,可以缩短时钟周期,在其他条件不变时缩短执行时间;
- 优化数据通路结构,可能减少某些指令所需的时钟周期数,从而降低平均 CPI;
- 编译优化可以减少指令条数,也可能改善指令组合并降低平均 CPI。
三项措施均可能缩短程序执行时间,故选 D。
- 【2011】下列选项中,描述浮点数操作速度指标的是( )。
A. MIPS
B. CPI
C. IPC
D. MFLOPS
答案: D
解析: MFLOPS 是 Million Floating-point Operations Per Second 的缩写,表示每秒完成多少百万次浮点运算,专门用于描述浮点运算速度。
其余指标含义如下:
- MIPS:每秒执行多少百万条机器指令;
- CPI:平均每条指令所需的时钟周期数;
- IPC:平均每个时钟周期完成的指令条数。
因此描述浮点数操作速度的指标是 MFLOPS,故选 D。
- 【2012】假定基准程序 A 在某计算机上的运行时间为 ,其中 为 CPU 时间,其余为 I/O 时间。若 CPU 速度提高 ,I/O 速度不变,则运行基准程序 A 所耗费的时间是( )。
A.
B.
C.
D.
答案: D
解析: 原来的 CPU 时间为 ,I/O 时间为
CPU 速度提高 ,说明新速度为原来的 倍,因此新的 CPU 时间为
I/O 速度不变,所以 I/O 时间仍为 。程序新的总运行时间为
故选 D。该题也说明:只加速程序的一部分时,未被加速的部分会限制整体加速效果。
- 【2013】某计算机主频为 ,其指令分为 4 类,它们在基准程序中所占比例及 CPI 如下表所示。该机的 MIPS 数是( )。
| 指令类型 | 所占比例 | CPI |
|---|---|---|
| A | 50% | 2 |
| B | 20% | 3 |
| C | 10% | 4 |
| D | 20% | 5 |
A. 100
B. 200
C. 400
D. 600
答案: C
解析: 先求程序的平均 CPI:
MIPS 的计算公式为
因为
所以
故选 C。
- 【2014】程序 P 在机器 M 上的执行时间是 20 秒,编译优化后,P 执行的指令数减少到原来的 ,而 CPI 增加到原来的 倍,则 P 在 M 上的执行时间是( )。
A. 8.4 秒
B. 11.7 秒
C. 14 秒
D. 16.8 秒
答案: D
解析: 在主频不变时,CPU 执行时间与指令条数和平均 CPI 的乘积成正比,即
优化后的执行时间与原执行时间之比为
因此
虽然指令条数减少了,但平均 CPI 上升,抵消了部分优化效果,故选 D。
- 【2017】假定计算机 M1 和 M2 具有相同的指令集体系结构(ISA),主频分别为 和 。在 M1 和 M2 上运行某基准程序 P,若平均 CPI 分别为 2 和 1,则程序 P 在 M1 和 M2 上运行时间的比值是( )。
A. 0.4
B. 0.625
C. 1.6
D. 2.5
答案: C
解析: 两台计算机具有相同的 ISA,并运行同一基准程序,通常认为执行的指令条数相同。CPU 执行时间为
所以
故选 C。虽然 M1 的主频更高,但其平均 CPI 也更大,最终运行时间反而是 M2 的 倍。
- 【2020】下列给出的部件中,其位数(宽度)一定与机器字长相同的是( )。
I. ALU
II. 指令寄存器
III. 通用寄存器
IV. 浮点寄存器
A. 仅 I、II
B. 仅 I、III
C. 仅 II、III
D. 仅 II、III、IV
答案: B
解析: 机器字长通常是 CPU 一次能够处理的二进制数据位数,主要由 ALU 的运算宽度和通用寄存器的位数决定。因此,ALU 和通用寄存器的位数通常一定与机器字长相同。
- 指令寄存器的宽度由指令字长决定,指令字长可能等于、短于或长于机器字长;
- 浮点寄存器的宽度由浮点数据格式和体系结构决定,例如在 64 位机器中可能设置 80 位或 128 位浮点寄存器,不一定等于机器字长。
因此只有 I、III 正确,故选 B。
- 【2021】2017 年公布的全球超级计算机 TOP500 排名中,我国“神威·太湖之光”超级计算机蝉联第一,其浮点运算速度为 ,说明该计算机每秒钟内完成的浮点操作次数约为( )。
A. 次
B. 次
C. 9.3 千万亿次
D. 9.3 亿亿次
答案: D
解析: 前缀 P(Peta)表示 ,因此
因为
所以 次约为 9.3 亿亿次,故选 D。
B 项和 C 项均约为 次,比正确数量级小 10 倍。
- 【2022】某计算机主频为 ,程序 P 运行过程中,共执行了 10000 条指令,其中, 的指令执行平均需 1 个时钟周期, 的指令执行平均需要 10 个时钟周期。程序 P 的平均 CPI 和 CPU 执行时间分别是( )。
A.
B.
C.
D.
答案: A
解析: 平均 CPI 为各类指令 CPI 的加权平均:
程序总时钟周期数为
主频为 ,因此一个时钟周期为
CPU 执行时间为
故选 A。
- 【2023】若机器 M 的主频为 ,在 M 上执行程序 P 的指令条数为 ,P 的平均 CPI 为 1.2,则 P 在 M 上的指令执行速度和用户 CPU 时间分别为( )。
A.
B.
C.
D.
答案: C
解析: 指令执行速度 IPS 为
因此
用户 CPU 时间为
所以指令执行速度为 ,用户 CPU 时间为 ,故选 C。