计算机组成原理期末复习题库
数据的编码表示
本部分重点
- 计算机采用二进制表示。
- 原码、补码的表示,表示范围。
- 规格化浮点数的表示范围与精度取决于什么。
- IEEE754 单精度浮点格式,真值与编码转换。
- 奇偶校验。
计算机采用二进制表示
题目 1.1
冯·诺依曼结构计算机中的数据采用二进制编码表示,其主要原因是()。
I. 二进制的运算规则简单
II. 制造两个稳态的物理器件较容易
III. 便于用逻辑门电路实现算术运算
- 仅 I、II
- 仅 I、III
- 仅 II、III
- I、II 和 III
D
计算机采用二进制表示数据的主要原因包括:
因此 I、II、III 均正确,答案为 D。
题目 1.2
以下是有关冯·诺依曼结构计算机中指令和数据表示形式的叙述,其中正确的是()。
- 指令和数据可以从形式上加以区分
- 指令以二进制形式存放,数据以十进制形式存放
- 指令和数据都以二进制形式存放
- 指令和数据都以十进制形式存放
C
冯·诺依曼结构计算机采用存储程序思想,程序指令和数据都存放在存储器中,并且都采用二进制形式表示。
从存储器中存放的形式来看,指令和数据本质上都是二进制代码,不能仅凭形式直接区分,需要结合取指和执行过程来判断某个二进制代码是指令还是数据。
因此答案为 C。
原码、补码的表示与表示范围
题目 1.3
若 $[X]_{\text{补}}=1.1101010$,则 $[X]_{\text{原}}=$()。
- $1.0010101$
- $1.0010110$
- $0.0010110$
- $0.1101010$
B
已知:
符号位为 $1$,说明 $X$ 为负数。
负数由补码求原码时,符号位保持 $1$ 不变,数值位按位取反加 $1$。
数值位为:
先取反:
再加 $1$:
所以:
因此答案为 B。
题目 1.4
在定点小数中,采用 $1$ 位符号位,若寄存器内容为 $10000000$,当它分别表示为原码、补码和反码时,其对应的真值分别为\underline{}、\underline{}和\underline{}。(均用十进制表示)
$-0$;$-1$;$-\dfrac{127}{128}$
寄存器内容为:
采用 $1$ 位符号位,说明最高位为符号位,其余 $7$ 位为小数数值位。
若表示为原码:
符号位为 $1$,表示负数,数值位全为 $0$,所以真值为:
若表示为补码:
对于 $8$ 位定点小数补码,$10000000$ 表示最小值:
若表示为反码:
反码为:
符号位为 $1$,说明是负数。负数反码的数值位是其真值绝对值数值位按位取反得到的。
因此数值位取反:
所以其绝对值为:
所以真值为:
因此三个真值分别为:
题目 1.5
在下列有关补码和移码,设偏置常数为 $2^{n-1}$,关系的叙述中,错误的是()。
- 零的补码和移码表示相同
- 相同位数的补码和移码表示具有相同的表示范围
- 同一个数的补码和移码表示,符号位相反,其余部分相同
- 一般用移码表示浮点数的阶,而用补码表示定点整数
A
移码是在真值的基础上加上一个偏置常数得到的编码。若偏置常数为 $2^{n-1}$,则移码和补码的关系是:
零的补码为:
而零的移码为:
二者并不相同,因此 A 错误。
相同位数的补码和移码表示范围相同,只是编码形式不同,所以 B 正确。
同一个数的补码和移码通常符号位相反,其余位相同,所以 C 正确。
在计算机中,一般用移码表示浮点数的阶码,用补码表示定点整数,所以 D 正确。
因此错误的是 A。
题目 1.6
已知 $[x]_{\text{补}}=x_0.x_1x_2\cdots x_n$,则 $[-x]_{\text{补}}=$\underline{}。
若定点小数的补码为:
其中 $x_0$ 为符号位,小数部分共有 $n$ 位。
补码求相反数的方法是:连同符号位按位取反,末位加 $1$。
由于小数部分最低位 $x_n$ 的权值为:
所以末位加 $1$ 等价于加上:
因此:
规格化浮点数的表示范围与精度
题目 1.7
假定两种浮点数格式的位数都是 $32$ 位,但格式 $1$ 的阶码长、尾数短,格式 $2$ 的阶码短、尾数长,其它所有规定都相同。则它们可表示的数的精度和范围是()。
- 格式 $1$ 可表示的数的范围更小,但精度更高
- 格式 $2$ 可表示的数的范围更小,但精度更高
- 格式 $1$ 可表示的数的范围更大,且精度更高
- 两者可表示的数的精度和范围均相同
B
浮点数中:
格式 $1$ 的阶码长、尾数短,因此可表示的数的范围更大,但精度较低。
格式 $2$ 的阶码短、尾数长,因此可表示的数的范围更小,但精度更高。
所以答案为 B。
23年北科大考研题中以填空题形式出现问阶码决定什么,位数决定什么
题目 1.8
若浮点数用移码表示阶码,补码表示尾数,则判断运算结果是否为规格化数的方法是()。
- 阶符与数符相同为规格化数
- 阶符与数符相异为规格化数
- 数符与尾数小数点后第一位数字相同为规格化数
- 数符与尾数小数点后第一位数字相异为规格化数
D
当浮点数的尾数采用补码表示时,判断是否为规格化数,主要看尾数符号位与小数点后第一位是否相异。
若尾数为正数,则数符为 $0$,规格化尾数应形如:
若尾数为负数,则数符为 $1$,规格化尾数应形如:
因此,补码尾数规格化的判断方法是:
所以答案为 D。
在 $2022$ 年北科大考研题中,该知识点曾以填空题形式出现。
IEEE754 单精度浮点格式:真值与编码
题目 1.9
float 型数据通常用 IEEE754 单精度格式表示。若编译器将 float 型变量 $X$ 分配在一个 $32$ 位浮点寄存器 FR1 中,且 $X=-8.25$,则 FR1 的内容是()。
- C104 0000H
- C242 0000H
- C184 0000H
- C1C2 0000H
A
首先将 $8.25$ 转换为二进制:
规格化表示为:
因为 $X=-8.25$,所以符号位:
阶码为:
$130$ 的二进制为:
尾数部分取规格化后小数点后的部分:
所以 IEEE754 单精度编码为:
按 $4$ 位一组转换为十六进制:
即:
因此答案为 A。
题目 1.10
假定某数采用 IEEE754 单精度浮点数格式表示为 $4C000000H$,求该数的十进制真值,要求写明计算过程。
$33554432$
先将十六进制数 $4C000000H$ 转换为二进制:
IEEE754 单精度浮点数格式为:
因此:
表示该数为正数。
阶码字段为:
IEEE754 单精度浮点数的偏置常数为 $127$,所以阶码真值为:
尾数字段全为 $0$,所以规格化尾数为:
因此该浮点数的真值为:
所以该数的十进制真值为 $33554432$。
题目 1.11
浮点数 $x$ 按 IEEE754 执行标准,则 $C136\ 0000H$ 的对应十进制数是\underline{}。
$-11.375$
先将十六进制数 $C136\ 0000H$ 转换为二进制:
IEEE754 单精度浮点数格式为:
因此符号位为:
表示该数为负数。
阶码字段为:
单精度浮点数的偏置常数为 $127$,所以阶码真值为:
尾数字段为:
因此规格化尾数为:
将其转换为十进制:
所以该浮点数真值为:
因此答案为 $-11.375$。
奇偶校验
题目 1.12
假定下列字符编码中含有 $1$ 位奇偶校验位,但没有发生数据错误,那么采用奇校验的字符编码是()。
- $0101\ 0011$
- $0110\ 0100$
- $1011\ 0100$
- $0011\ 0101$
B
奇校验要求整个编码中 $1$ 的个数为奇数。
逐项统计:
其中 $1$ 的个数为 $4$,为偶数,不满足奇校验。
其中 $1$ 的个数为 $3$,为奇数,满足奇校验。
其中 $1$ 的个数为 $4$,为偶数,不满足奇校验。
其中 $1$ 的个数为 $4$,为偶数,不满足奇校验。
因此答案为 B。
指令系统
本部分重点
- 指令集体系结构 ISA、指令系统、指令集的含义。
- 定长指令,字段的构成,最大寻址空间等。
- 常见寻址方式:立即数、寄存器直接寻址、寄存器间接寻址、存储器直接寻址、存储器间接寻址、变址寻址、相对寻址等。
- 已知形式地址,如何计算操作数的有效地址。
- 综合题:指令格式与寻址方式,如 MIPS 指令系统。
指令集体系结构 ISA、指令系统与指令集
题目 2.1
下面有关指令集体系结构的说法中,错误的是()。
- 指令集体系结构位于计算机软件和硬件的交界面上
- 指令集体系结构是指低级语言程序员所看到的概念结构和功能特性
- 指令集体系结构的英文缩写是 ISA
- 用户可见寄存器的长度、功能与编号不属于指令集体系结构
D
指令集体系结构的英文缩写是 ISA,即 Instruction Set Architecture。
ISA 是软件和硬件之间的接口,规定了低级语言程序员可见的计算机功能和结构。
ISA 通常包括:
- 指令格式;
- 指令种类;
- 寻址方式;
- 数据类型;
- 用户可见寄存器的组织;
- 存储器地址空间等。
用户可见寄存器的长度、功能和编号属于 ISA 的内容。
因此,D 说法错误。
题目 2.2
指令系统采用定长操作码,一共有 30 种不同的操作指令,则操作码至少需要\underline{}位二进制数。
5
若操作码有 $n$ 位,则最多可以表示:
种不同操作。
题目中共有 30 种不同操作指令,因此需要满足:
因为:
所以操作码至少需要 $5$ 位二进制数。
因此答案为:5。
题目 2.3
下列说法中\underline{}是正确的。
- 加法指令的执行周期一定要访存
- 加法指令的执行周期一定不访存
- 指令的地址码给出存储器地址的加法指令,在执行周期一定访存
- 指令的地址码给出存储器地址的加法指令,在执行周期不一定访存
C
加法指令在执行周期是否访存,取决于操作数所在的位置。
如果加法指令的操作数都在寄存器中,则执行周期不需要访问主存;如果加法指令的地址码给出的是存储器地址,则需要根据该地址访问主存,取出操作数后再进行加法运算。
因此,不能笼统地说加法指令执行周期一定访存或一定不访存。
当指令的地址码给出存储器地址时,该加法指令在执行周期一定需要访存。
因此答案为 C。
定长指令与字段构成
题目 2.4
某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条,二地址指令 107 条,每个地址字段为 6 位,则指令字长至少应该是()。
- 24 位
- 26 位
- 28 位
- 32 位
A
设指令字长为 $L$ 位。
三地址指令有 3 个地址字段,每个地址字段为 6 位,因此地址字段共占:
位。
三地址指令有 29 条,所以操作码字段至少需要满足:
因为:
所以三地址指令操作码至少需要 5 位。
因此指令字长至少需要:
位。
由于计算机按字节编址,指令字长通常应取字节的整数倍,所以至少应取:
位。
因此答案为 A。
常见寻址方式与有效地址计算
题目 2.5
寄存器间接寻址方式中,操作数存放在\underline{},寄存器中存放的是\underline{}。
主存单元中;操作数的有效地址
寄存器间接寻址不是把操作数直接放在寄存器中,而是寄存器中保存操作数所在主存单元的地址。
因此,需要根据寄存器中的地址访问主存,才能取得操作数。
寄存器间接寻址的有效地址为:
其中,$R_i$ 中存放的是操作数的有效地址,操作数本身存放在主存单元中。
所以答案为:主存单元中;操作数的有效地址。
题目 2.6
()方式对实现程序浮动提供了支持。
- 变址寻址
- 相对寻址
- 间接寻址
- 寄存器间接寻址
B
相对寻址方式中,操作数或转移目标的有效地址由程序计数器 $PC$ 的内容加上位移量得到:
其中 $A$ 为指令中给出的形式地址或偏移量。
由于有效地址是相对于当前 $PC$ 计算得到的,因此程序整体装入到主存的不同位置时,只要指令之间的相对位置不变,程序仍然可以正确执行。
所以,相对寻址有利于程序浮动和位置无关代码的实现。
因此答案为 B。
题目 2.7
设指令字长等于存储字长,均为 24 位,若某指令系统可完成 108 种操作,操作码长度固定,且具有直接、间接、变址、基址、相对、立即等寻址方式,则在保证最大范围内直接寻址的前提下,指令字中操作码占\underline{}位,寻址特征位占\underline{}位,可直接寻址的范围是\underline{},一次间址的范围是\underline{}。
7;3;$2^{14}$ 个存储字;$2^{24}$ 个存储字
该指令系统可完成 108 种操作,且操作码长度固定。设操作码占 $n$ 位,则应满足:
因为:
所以操作码至少需要:
位。
题目中共有直接、间接、变址、基址、相对、立即 6 种寻址方式。设寻址特征位占 $m$ 位,则应满足:
因为:
所以寻址特征位至少需要:
位。
指令字长为 24 位,在保证最大范围内直接寻址的前提下,剩余位数都作为地址码字段,因此地址码字段位数为:
所以直接寻址范围为:
个存储字。
由于存储字长为 24 位,一次间接寻址时,地址字段先指出一个存储单元,该存储单元中的 24 位内容可作为有效地址,因此一次间址的范围为:
个存储字。
因此答案为:
题目 2.8
假定采用相对寻址方式的转移指令占两个字节,第一字节是操作码,第二字节是相对位移量,位移量用补码表示。取指令时,每次 CPU 从存储器取出一个字节,自动完成 $(PC)+1 \rightarrow PC$。假设执行到某转移指令时,取指令前 PC 的内容是 $200CH$,该指令的转移目标地址为 $1FFEH$,求该转移指令第二字节的内容,要求用十六进制形式表示,并写明计算过程。
$F0H$
该转移指令占两个字节,取指令前:
取第一字节后:
取第二字节后:
相对寻址方式中,转移目标地址由取完指令后的 PC 值加上相对位移量得到:
已知目标地址为:
所以位移量为:
第二字节位移量用补码表示,$10H$ 的 8 位二进制为:
因此 $-10H$ 的 8 位补码为:
转换为十六进制:
所以该转移指令第二字节的内容为:
题目 2.9
指令系统采用不同寻址方式的目的是()。
- 实现存贮程序和程序控制
- 缩短指令长度,扩大寻址空间,提高编程灵活性
- 可直接访问外存
- 提供扩展操作码的可能并降低指令译码的难度
B
寻址方式用于说明如何根据指令中的地址信息找到操作数。
指令系统采用多种寻址方式,可以根据不同场景灵活表示操作数地址,在缩短指令地址字段长度的同时扩大寻址能力,并提高程序设计的灵活性。
因此答案为 B。
题目 2.10
假设某指令的一个操作数采用变址寻址方式,变址寄存器中的值为 126,指令中给出的形式地址为 C000H,地址 C000H 中的内容为 B000H,则该操作数的有效地址为()。
- B126H
- C126H
- B07EH
- C07EH
D
变址寻址方式中,有效地址由形式地址与变址寄存器内容相加得到:
题中形式地址为:
变址寄存器中的值为:
因此有效地址为:
题中地址 C000H 中的内容 B000H 是存储器间接寻址时才会用到的信息,本题采用的是变址寻址,因此不需要使用 B000H。
所以答案为 D。
MIPS 指令格式与寻址方式综合题
题目 2.11
指令长度 16 位,操作码 $OP[15:10]$,寄存器编号 $R[9:8]$,寻址方式 $MOD[7:6]$,形式地址 $A[5:0]$。假定要执行的指令为加法指令,存放在 $1000H$ 单元中,PC 中取指阶段后自增,形式地址 $A$ 的编码为 $02H$,主存按字编址。其中加法指令两个操作数,一个来自形式地址 $A$ 或者主存,另一个来自目的寄存器 $R_0$,运算结果放 $R_0$。
求:
(1)$MOD=00$,$(R_0)=$\underline{}
(2)$MOD=01$,$(R_0)=$\underline{}
(3)$MOD=10$,$(R_0)=$\underline{},$(PC)=$\underline{}
(1)$0102H$;(2)$3100H$;(3)$1200H$,$1002H$
已知目的寄存器初值为:
形式地址为:
(1)当 $MOD=00$ 时,为立即寻址,$A$ 本身就是立即数,因此源操作数为:
执行加法:
所以:
(2)当 $MOD=01$ 时,为变址寻址,$A$ 为偏移量,变址寄存器内容为:
有效地址为:
由表可知:
执行加法:
所以:
(3)当 $MOD=10$ 时,为相对寻址,$A$ 为偏移量。指令存放在 $1000H$ 单元中,取指后 PC 自增,故:
根据题表给出的相对偏移地址,可访问:
由表可知:
执行加法:
所以:
题目 2.12
(2026北科大期末考试题)假定计算机 $M$ 字长为 $16$ 位,按字节编址,连接 CPU 和主存的系统总线中地址线为 $20$ 位,数据线为 $8$ 位,采用 $16$ 位定长指令字,指令格式及其说明如下:
其功能为:
$I$ 型指令包括 ALU 运算、条件转移和访存操作三种指令。
$J$ 型指令功能为:
其中,$op1 \sim op3$ 为操作码,$rs$、$rt$ 和 $rd$ 为通用寄存器编号,$R[r]$ 表示寄存器 $r$ 的内容,$imm$ 为立即数,$target$ 为转移目标的形式地址。请回答下列问题:
- $R$ 型格式最多可定义多少种操作?$I$ 型和 $J$ 型格式总共最多可定义多少种操作?通用寄存器最多有多少个?
- J形指令的基地址是什么,target的范围是什么,target给出的是偏移的指令条数还是偏移的物理块数.
- 假定 $op1$ 为 $0010$ 和 $0011$ 时,分别表示带符号整数减法和带符号整数乘法指令,则指令 $01B2H$ 的功能是什么?
运算器
本部分重点
- 补码运算简化运算,简化运算器的设计。
- 如何实现补码加减法与溢出判断,计算溢出标志。
- 零扩展、符号扩展。
- 多功能 ALU 的组成。
补码运算简化运算器设计
题目 3.1
为运算器构造的简单性,运算方法中常采用\underline{}加减法、\underline{}乘除法。
补码加减法;补码乘除法
补码运算可以把减法转化为加法:
因此加法和减法可以统一用加法器实现,不需要单独设计减法器,从而简化运算器结构。
同时,补码表示中符号位和数值位可以统一参加运算,便于处理带符号数。
乘除法中也常采用补码相关算法,以便统一处理正数和负数。
所以答案为:补码加减法;补码乘除法。
补码加减法与溢出判断
题目 3.2
某计算机字长为 $8$ 位,其 CPU 中有一个 $8$ 位加法器。$x$ 和 $y$ 是两个带符号整数变量,用补码表示,$x=68$,$y=36$。现要在该加法器中完成 $x-y$ 的运算。
- 该加法器输入的两个加数和低位进位分别是什么?用二进制形式表示。
- 若加法器中实现了溢出判断,则 $x-y$ 的机器数及相应的溢出标志 $OF$ 分别是什么?用二进制形式表示。
- 两个加数分别为 $01000100$ 和 $11011011$,低位进位为 $1$。
- $x-y$ 的机器数为 $00100000$,溢出标志 $OF=0$。
因为 $x=68$,$y=36$,字长为 $8$ 位,所以:
要计算:
可以转化为:
在加法器中实现减法时,通常将减数 $y$ 按位取反,并使低位进位 $C_0=1$,即:
所以加法器的两个输入加数为:
低位进位为:
于是:
最高位产生的进位舍去,结果为:
即十进制的 $32$。
由于 $x=68$,$y=36$,实际结果为:
$32$ 在 $8$ 位补码表示范围 $[-128,127]$ 内,因此没有溢出。
所以溢出标志为:
最终结果为:
题目 3.3
假定有符号整数采用补码表示,若 int 型变量 $x$ 和 $y$ 的机器数分别是 $FFFF\ FFDFH$ 和 $0000\ 0041H$,则 $x$、$y$ 的值及 $x-y$ 的机器数分别是()。
- $x=-65,\ y=41$,$x-y$ 的机器数溢出
- $x=-33,\ y=65$,$x-y$ 的机器数为 $FFFF\ FF9DH$
- $x=-33,\ y=65$,$x-y$ 的机器数为 $FFFF\ FF9EH$
- $x=-65,\ y=41$,$x-y$ 的机器数为 $FFFF\ FF96H$
C
int 型变量通常为 $32$ 位,有符号整数采用补码表示。
首先分析 $x$:
最高位为 $1$,说明 $x$ 是负数。求其真值时,对补码取反加 $1$:
所以:
再分析 $y$:
最高位为 $0$,说明 $y$ 是正数:
所以:
因此:
将 $98$ 写成 $32$ 位十六进制:
求 $-98$ 的补码:
所以:
$-98$ 在 $32$ 位补码表示范围内,没有溢出。
因此答案为 C。
题目 3.4
定点补码加减法运算溢出判断的三种方法是什么?分别写出逻辑表达式并加以说明。
符号位判断法、双符号位判断法、进位判断法。
设被加数、加数和结果的符号位分别为 $x_s$、$y_s$、$s_s$。
(1)符号位判断法
两个同号数相加,若结果变号,则发生溢出。
正数加正数,结果为负数时溢出:
负数加负数,结果为正数时溢出:
所以加法溢出逻辑表达式为:
减法可以看作加上相反数,即:
因此减法溢出逻辑表达式可写为:
即被减数和减数异号,且结果符号与被减数符号不同,则发生溢出。
(2)双符号位判断法
双符号位判断法采用两个符号位表示数的符号。
运算结果的双符号位为:
或
表示没有溢出。
若运算结果的双符号位为:
或
则表示发生溢出。
其中:
通常表示正溢出,
通常表示负溢出。
(3)进位判断法
设符号位产生的进位为 $C_s$,最高数值位向符号位产生的进位为 $C_{s-1}$。
若二者相同,则没有溢出;若二者不同,则发生溢出。
因此溢出标志为:
其中 $\oplus$ 表示异或运算。
题目 3.5
某 $8$ 位计算机中,假定 $x$ 和 $y$ 是两个带符号整数变量,用补码表示,$x=+63$,$y=31$,则 $x-y$ 的机器数及其相应的溢出标志 $OF$ 分别是()。
- $0010\ 0000,\ OF=1$
- $0010\ 0000,\ OF=0$
- $1010\ 0000,\ OF=1$
- $1010\ 0000,\ OF=0$
B
因为 $x=+63$,$y=31$,字长为 $8$ 位,采用补码表示。
首先写出二进制补码:
计算:
$32$ 的 $8$ 位补码为:
由于 $8$ 位补码带符号整数的表示范围为:
结果 $32$ 在表示范围内,没有溢出,因此:
所以答案为 B。
题目 3.6
一个 C 语言程序在一台 32 位机器上运行。程序中定义了三个变量 $x,y,z$,其中 $x$ 和 $z$ 是 int 型,$y$ 为 short 型。当 $x=126$,$y=-9$ 时,执行赋值语句 $z=x+y$ 后,$x,y,z$ 的值分别是\underline{}。
- $x=0000007EH,\ y=FFF9H,\ z=00000075H$
- $x=0000007EH,\ y=FFF9H,\ z=FFFF0075H$
- $x=0000007EH,\ y=FFF7H,\ z=FFFF0075H$
- $x=0000007EH,\ y=FFF7H,\ z=00000075H$
D
在 32 位机器中,int 型通常为 32 位,short 型通常为 16 位。
首先:
由于 $x$ 是 int 型,所以用 32 位十六进制表示为:
其次:
$9$ 的 16 位二进制表示为:
求 $-9$ 的补码,按位取反加 1:
即:
执行:
而:
由于 $z$ 是 int 型,所以用 32 位十六进制表示为:
因此:
所以答案为 D。
零扩展与符号扩展
题目 3.7
8 位补码定点整数 $1010\ 0101$,扩展至 16 位后的值用十六进制表示为()。
- $00A5H$
- $A500H$
- $A5FFH$
- $FFA5H$
D
补码定点整数扩展位数时采用符号扩展,即用原数的符号位填充高位。
原 8 位补码为:
最高位为 $1$,表示负数,因此扩展到 16 位时,高 8 位应全部补 $1$:
将其转换为十六进制:
因此答案为 D。
多功能 ALU 的组成
题目 3.8
ALU 的核心部件是()。
- 多路选择器
- 移位器
- 加法器
- 寄存器
C
ALU 是算术逻辑单元,主要完成算术运算和逻辑运算。
在 ALU 中,加法器是实现加法、减法、比较以及许多逻辑扩展操作的核心基础部件。减法可以通过补码加法实现,比较操作也常以减法或加法器运算结果为基础。
因此,ALU 的核心部件是加法器。
因此答案为 C。
题目 3.9
运算器的 ALU 输入端结构和寄存器组结构的选择会影响运算器速度,下面四个选择方案中,速度最慢的是()。
- ALU 输入端采用锁存器向 ALU 传送操作数,寄存器组采用高速小存储器结构
- ALU 输入端采用锁存器向 ALU 传送操作数,寄存器组采用独立寄存器结构
- ALU 输入端采用多路选择器向 ALU 传送操作数,寄存器组采用独立寄存器结构
- ALU 输入端采用多路选择器向 ALU 传送操作数,寄存器组采用高速小存储器结构
A
运算器速度受 ALU 输入端结构和寄存器组结构影响。
ALU 输入端若采用锁存器传送操作数,通常需要先将操作数送入锁存器,再由锁存器送入 ALU,数据传送环节较多,速度较慢;若采用多路选择器,则可以根据控制信号直接选择操作数送入 ALU,速度相对较快。
寄存器组若采用高速小存储器结构,本质上类似用存储器方式组织寄存器,访问速度通常比独立寄存器结构慢;独立寄存器结构可以直接选通寄存器,速度较快。
因此,速度最慢的方案是:ALU 输入端采用锁存器向 ALU 传送操作数,寄存器组采用高速小存储器结构。
所以答案为 A。
控制器
本部分重点
- CPU 的组成,数据通路的组成、功能。
- CPU 中某些部件如 PC、控制器等的功能。
- 指令周期。
- 转移指令、条件转移指令的操作,如 beq、jal。
- 已知数据通路图,给出某指令的取指和执行阶段的全部传送操作及节拍安排。
- 了解 IR、MDR、MAR 等部件功能。
CPU 的组成与数据通路的组成、功能
题目 4.1
CPU 的四个主要功能是\underline{}、\underline{}、\underline{}和时序控制。
指令控制;操作控制;数据加工
CPU 的基本功能包括:
- 指令控制:控制程序中指令的执行顺序;
- 操作控制:产生完成各类操作所需的控制信号;
- 数据加工:完成算术运算和逻辑运算;
- 时序控制:协调各部件按照规定的时间顺序工作。
因此答案为:
题目 4.2
下列有关数据通路的叙述中,错误的是()。
- 数据通路由若干操作元件和状态元件连接而成
- 数据通路的功能由控制部件送出的控制信号决定
- 通用寄存器属于状态元件,但不包含在数据通路中
- ALU 属于操作元件,用于执行各类算术和逻辑运算
C
数据通路是指指令执行过程中,数据在各个部件之间传送和处理所经过的路径,通常由组合逻辑操作元件和寄存器等状态元件组成。
ALU 属于操作元件,主要完成算术运算和逻辑运算;通用寄存器属于状态元件,用于暂存操作数、中间结果或运算结果,也是数据通路的重要组成部分。
因此,“通用寄存器属于状态元件,但不包含在数据通路中”这一说法错误。
所以答案为 C。
题目 4.3
CPU 内若设置一组通用寄存器,那么通用寄存器的位数一般取决于()。
- 指令字的长度
- 地址寄存器的位数
- 机器字长
- 主存容量
C
通用寄存器主要用于暂存操作数、中间结果和运算结果,其位数通常应与 CPU 一次能够处理的数据位数相一致。
机器字长是指计算机一次能直接处理的二进制数据位数,通常与运算器、通用寄存器的位数有关。因此,通用寄存器的位数一般取决于机器字长。
因此答案为 C。
CPU 中常见部件的功能
题目 4.4
以下有关 CPU 中部分部件功能的描述中,错误的是()。
- IR 称为指令寄存器,用来存放当前指令的操作码
- PC 用于存放将要执行的指令的地址
- 通过将 PC 按当前指令长度增量,可实现指令的按序执行
- 控制单元用于对指令操作码译码并生成控制信号
A
IR 是指令寄存器,用来存放当前正在执行的整条指令,而不只是操作码。
一条指令通常包括操作码字段和地址码字段等,操作码只是指令的一部分。
PC 用于存放将要执行的指令地址,顺序执行时,通常通过:
使 PC 指向下一条指令。
控制单元用于对指令操作码译码,并产生相应的控制信号。
因此错误的是 A。
题目 4.5
执行完当前指令后,PC 中存放的是后继指令的地址,因此 PC 的位数和()的位数相同。
- 指令寄存器 IR
- 程序状态字寄存器 PSW
- 主存数据寄存器 MDR
- 主存地址寄存器 MAR
D
PC 用于存放指令地址,即下一条将要执行的指令在主存中的地址。
MAR 是主存地址寄存器,用于存放访问主存时的地址。
由于 PC 和 MAR 都需要表示主存地址空间中的地址,因此二者的位数通常相同。
IR 用于存放指令,MDR 用于存放主存读写数据,PSW 用于存放程序状态信息,它们的位数不一定与 PC 相同。
因此答案为 D。
题目 4.6
假设控制信号用 $C_n$ 来表示,指令译码器输出用 $I_m$ 表示,节拍信号用 $M_k$ 表示,状态反馈信息用 $B_j$ 表示,则控制器的基本原理可表示为()。
- $C_n=f(I_m)$
- $C_n=f(I_m,B_j)$
- $C_n=f(M_k,B_j)$
- $C_n=f(I_m,M_k,B_j)$
D
控制器的作用是根据当前指令、当前执行节拍以及状态反馈信息产生相应的控制信号。
其中:
表示指令译码器输出,用于说明当前正在执行哪一类指令;
表示节拍信号,用于说明当前处于指令执行过程中的哪一个时刻或阶段;
表示状态反馈信息,例如条件码、标志位、中断请求等。
因此控制信号不仅与指令译码结果有关,还与节拍信号和状态反馈信息有关。
所以控制器的基本原理可表示为:
因此答案为 D。
题目 4.7
CPU 响应中断时需要保存当前现场,这里现场指的是\underline{}寄存器和\underline{}寄存器的内容,它们被保存到\underline{}中。
程序计数器 PC;程序状态字 PSW;堆栈
CPU 响应中断时,需要保存当前程序的现场,以便中断服务程序执行完毕后能够正确返回原程序继续执行。
现场通常包括当前程序的断点地址和程序状态信息。其中,断点地址保存在程序计数器 PC 中,程序状态信息保存在程序状态字寄存器 PSW 中。
这些内容一般被保存到堆栈中,中断返回时再从堆栈中恢复。
因此答案为:程序计数器 PC;程序状态字 PSW;堆栈。
题目 4.8
堆栈寻址需在 CPU 内设一个专用的寄存器,称为\underline{},其内容是\underline{}。
堆栈指针寄存器 SP;栈顶地址
堆栈是一种后进先出的存储结构,常用于保存返回地址、现场信息和临时数据等。
为了支持堆栈操作,CPU 内通常设置一个专用寄存器,称为堆栈指针寄存器,记作 SP。
SP 中保存当前栈顶单元的地址,用于指示压栈和出栈操作的位置。
因此答案为:堆栈指针寄存器 SP;栈顶地址。
题目 4.9
状态寄存器中的各个状态标志位是依据\underline{}来置位的。
- 算术逻辑部件上次的运算结果
- CPU 将要执行的指令
- CPU 已执行的指令
- 累加器中的数据
A
状态寄存器用于保存 CPU 运算后的状态信息,如零标志、进位标志、溢出标志、符号标志等。
这些状态标志位通常由 ALU 的运算结果决定。例如,若运算结果为 0,则零标志位被置位;若补码运算发生溢出,则溢出标志位被置位;若结果最高位为 1,则符号标志位被置位。
因此,状态寄存器中的各个状态标志位是依据算术逻辑部件上次的运算结果来置位的。
所以答案为 A。
题目 4.10
在计算机系统中,描述系统运行状态的部件是()。
- 程序计数器
- 累加器
- 通用寄存器
- PSW 寄存器
D
PSW 是程序状态字寄存器,用来保存程序或 CPU 运行过程中的状态信息。
常见状态信息包括进位标志、零标志、溢出标志、符号标志、中断允许状态等。
程序计数器 PC 用于存放下一条将要执行的指令地址;累加器和通用寄存器主要用于暂存操作数或运算结果。
因此,描述系统运行状态的部件是 PSW 寄存器,答案为 D。
指令周期
题目 4.11
CPU 从主存取出一条指令并执行该指令的时间叫\underline{}。
指令周期
指令周期是指 CPU 从主存中取出一条指令,并完成该指令执行所需要的全部时间。
一条指令的执行过程通常包括取指、译码、执行等阶段,不同类型的指令可能还包括访存、写回等阶段。
因此答案为:指令周期。
题目 4.12
若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是 $t_{\text{取指}}=2ns$,$t_{\text{分析}}=2ns$,$t_{\text{执行}}=1ns$。则 100 指令全部执行完毕需()$ns$。
- $163$
- $183$
- $193$
- $203$
D
该流水线共有 3 个阶段:取指、分析、执行。
流水线的时钟周期由最长阶段决定:
第一条指令完成需要经历三个阶段,所用时间为:
从第二条指令开始,在流水线稳定后,每隔一个时钟周期完成一条指令,即每隔 $2ns$ 完成一条指令。
因此 100 条指令全部完成所需时间为:
因此答案为 D。
题目 4.13
假定执行最复杂的指令需要完成 6 个子功能,分别由对应的功能部件 A--F 完成,部件 A--F 所花的时间分别为 $80ps,40ps,50ps,70ps,40ps,30ps$,流水段寄存器延时为 $20ps$。现把最后两个功能部件 F 和 E 合并,以产生一个 5 段流水线。该 5 段流水线的时钟周期至少是()$ps$。
- $100$
- $90$
- $80$
- $70$
A
流水线的时钟周期应由最慢流水段的延迟决定,并且还要加上流水段寄存器的延迟。
将功能部件 E 和 F 合并后,该流水段的延迟为:
因此 5 个流水段的功能部件延迟分别为:
其中最大延迟为:
再加上流水段寄存器延迟 $20ps$,所以流水线时钟周期至少为:
因此答案为 A。
题目 4.14
某计算机的指令流水线由 4 个功能段组成,指令流经各功能段的时间(忽略各功能段之间的缓存时间)分别为 $90ns$、$80ns$、$70ns$ 和 $60ns$,则该计算机的 CPU 周期至少是()。
- $90ns$
- $80ns$
- $70ns$
- $60ns$
A
流水线的 CPU 周期,也称流水线时钟周期,应由最慢的流水段决定。
题目中 4 个功能段的时间分别为:
其中最大值为:
又因为题目说明忽略各功能段之间的缓存时间,所以不需要再加流水段寄存器延迟。
因此该计算机的 CPU 周期至少为:
所以答案为 A。
转移指令与条件转移指令
数据通路传送操作与节拍安排
题目 4.15
某计算机的数据通路如下图所示,其中 $M$ 为主存,$MDR$ 为主存数据寄存器,$MAR$ 为主存地址寄存器,$R_0 \sim R_3$ 为通用寄存器,$IR$ 为指令寄存器,$PC$ 为程序计数器,$C$、$D$ 为暂存寄存器,$ALU$ 为算术逻辑单元,移位器不移位,控制信号可双向传送。

求指令
的取指和执行过程,其中指令功能是:
该指令长度占一个编址单位。
微操作序列如下:
该指令为:
其中 $(R_1)$ 表示寄存器间接寻址,即 $R_1$ 中保存的是主存地址,真正的源操作数在主存单元 $M[(R_1)]$ 中。
指令功能为:
由于该指令长度占一个编址单位,因此取指阶段中:
取指过程为:
表示把当前指令地址送入 $MAR$,并发出读主存信号。
表示从主存中读出指令,同时 $PC$ 指向下一条指令。
表示将取出的指令送入指令寄存器 $IR$。
执行阶段中,需要先根据 $R_1$ 的内容访问主存,取出源操作数:
然后将 $R_2$ 和主存中取出的操作数分别送入暂存寄存器:
最后由 $ALU$ 完成加法,并写回 $R_2$:
因此完整微操作序列为:
题目 4.16
(北科大2026期末考试)设 CPU 中各部件及其相互连接关系如下图所示。图中 \(W\) 是写控制标志,\(R\) 是读控制标志,\(R_1\) 和 \(R_2\) 是暂存器。

- 假设要求在取指周期中由 ALU 完成 \((PC)+1 \rightarrow PC\) 的操作,即 ALU 可以对它的一个源操作数完成加 1 的运算。要求以最少的节拍写出取指周期全部微操作命令及节拍安排。
- 写出指令 \(\mathrm{ADD}\ \#a\) 在执行阶段所需的微操作命令及节拍安排。其中 \(\#\) 为立即寻址特征,隐含的操作数在 ACC 中。
(1)取指周期的微操作及节拍安排为:
(2)指令 \(\mathrm{ADD}\ \#a\) 的执行阶段微操作及节拍安排为:
(1)取指周期的基本任务是根据 PC 中的地址从主存取出指令,并送入指令寄存器 IR。
首先将 PC 中的指令地址送入 MAR,同时发出读命令:
然后主存根据 MAR 中的地址读出指令,送入 MDR。题目要求取指周期中由 ALU 完成:
因此可以在读存储器的同时完成 PC 加 1 操作:
最后将 MDR 中的指令送入 IR:
所以取指周期至少需要 3 个节拍。
(2)指令 \(\mathrm{ADD}\ \#a\) 表示立即寻址,操作数 \(a\) 直接包含在指令中,另一个隐含操作数在 ACC 中,指令功能为:
执行时,先将 ACC 中的内容送入暂存器 \(R_1\),再将指令中给出的立即数 \(a\) 送入暂存器 \(R_2\),最后由 ALU 完成加法运算,并将结果送回 ACC:
因此执行阶段可按 3 个节拍完成。
IR、MDR、MAR 等部件
存储器
本部分重点
- 层次化存储体系,速度、容量的关系。
- 存储器容量与地址。
层次化存储体系,速度、容量的关系
题目 5.1
存储器分层体系结构中,存储器从速度最快到最慢的排列顺序是()。
- 寄存器--主存--Cache--辅存
- 寄存器--主存--辅存--Cache
- 寄存器--Cache--辅存--主存
- 寄存器--Cache--主存--辅存
D
存储器层次结构中,越靠近 CPU,速度越快,容量越小,价格越高;越远离 CPU,速度越慢,容量越大,价格越低。
速度从快到慢的顺序为:
因此答案为 D。
题目 5.2
计算机的存储器采用分级方式是为了()。
- 减少主机箱的体积
- 存储大量数据方便
- 解决容量、速度、价格三者之间的矛盾
- 操作方便
C
高速存储器速度快但容量小、价格高;低速存储器容量大、价格低但速度慢。
采用存储器分级体系,可以在速度、容量和价格之间取得较好的折中。
因此答案为 C。
存储器容量与地址
题目 5.3
内存储器容量为 $6K$ 时,若首地址为 $00000H$,那么末地址的十六进制表示为\underline{}。
$017FFH$
$1K = 1024$,所以:
十进制的 $6144$ 转换为十六进制为:
因为首地址为 $00000H$,末地址应为:
所以末地址为 $017FFH$。
题目 5.4
由容量为 $16KB$ 的缓存和容量为 $16MB$ 的主存构成的存储系统的总容量为\underline{}。
$16MB$
Cache 是主存内容的副本,用于提高访问速度,并不增加存储系统的有效容量。
因此由 $16KB$ Cache 和 $16MB$ 主存构成的存储系统,其总容量通常按主存容量计算,为:
所以答案为 $16MB$。
题目 5.5
存储容量为 $64KB$,按字节编址,$0000H$--$1FFFH$ 为 ROM 区,其余为 RAM 区,至少需要\underline{}片 $8K \times 4$ 位的 RAM。
14
存储器总容量为:
地址范围 $0000H$--$1FFFH$ 的容量为:
该区域为 ROM 区,因此 RAM 区容量为:
题目要求按字节编址,因此每个存储单元为 $8$ 位。
一片 $8K \times 4$ 位 RAM 的容量为:
要组成 $8K \times 8$ 位,需要 2 片 $8K \times 4$ 位 RAM。
而 $56KB$ 可以分成:
组 $8K \times 8$ 位存储区。
所以总共需要:
片 RAM。
因此答案为:14。
杂例
本部分主要记录考试范围内比较模糊的一些题目,比如流水线是否会包含(虽然可以包含进入指令周期,但是这种背诵题目应该还是很痛苦的,放到这里缓解一下压力),以及一些非常规题目等
题目 6.1
为什么流水线方式会延长一条指令的执行时间?
因为流水线会引入流水段寄存器开销,且时钟周期由最慢流水段决定。
流水线技术提高的是多条指令连续执行时的吞吐率,并不一定缩短单条指令的执行时间。
在非流水方式下,一条指令可以按照各阶段实际需要的时间顺序完成;而采用流水线后,每条指令必须经过所有流水段。
同时,流水段之间需要加入流水段寄存器,这会带来锁存、传输等额外时间开销。
此外,流水线的时钟周期由最慢的流水段决定。若各流水段执行时间不均衡,则较快的流水段也必须等待最慢流水段完成。
因此,一条指令在流水线中的完成时间可能比非流水方式更长。
题目 6.2
IBM370 的短浮点数格式中,总位数为 $32$ 位,左边第一位为数符,随后 $7$ 位为阶码,用移码表示,偏置常数为 $64$;右边 $24$ 位为 $6$ 位十六进制原码小数表示的尾数。
规格化尾数形式为:
其中 $x_1 \sim x_6$ 为十六进制表示,最高位 $x_1$ 为非 $0$ 数,底为 $16$。
若用该浮点数格式表示十六进制真值 $-1234H$,则对应的机器数是什么?
$C4123400H$
该题不是 IEEE754 浮点数格式,而是 IBM370 短浮点数格式。
其机器数格式为:
首先将真值规格化为 IBM370 的十六进制浮点形式:
因此数符位为:
阶码真值为:
由于阶码采用移码表示,偏置常数为 $64$,所以移码阶码为:
尾数为:
将数符、阶码和尾数组合:
按 $4$ 位一组写成十六进制:
即:
所以对应的机器数为:
题目 6.3
挂接在总线上的多个部件()。
- 只能分时向总线发送数据,并且只能分时从总线接收数据
- 可同时向总线发送数据,但只能分时从总线接收数据
- 可同时向总线发送数据,并同时从总线接收数据
- 只能分时向总线发送数据,但可同时从总线接收数据
D
总线是多个部件共享的一组信息传输线路。
由于总线是共享资源,同一时刻只能允许一个部件向总线发送数据,否则会发生总线冲突。因此,多个部件只能分时向总线发送数据。
但是,总线上传输的数据可以同时被多个部件接收。也就是说,一个部件发送数据时,多个接收部件可以同时从总线上接收该数据。
所以,挂接在总线上的多个部件只能分时向总线发送数据,但可同时从总线接收数据。
因此答案为 D。
题目 6.4
I/O 指令实现的数据传送通常发生在()。
- I/O 设备和 I/O 端口之间
- 通用寄存器和 I/O 设备之间
- I/O 端口和 I/O 端口之间
- 通用寄存器和 I/O 端口之间
D
I/O 指令用于实现 CPU 与外部设备之间的数据交换。
在程序控制方式下,CPU 通常不能直接与 I/O 设备本体交换数据,而是通过 I/O 端口进行访问。执行输入指令时,数据一般从 I/O 端口送入 CPU 的通用寄存器;执行输出指令时,数据一般从 CPU 的通用寄存器送到 I/O 端口。
因此,I/O 指令实现的数据传送通常发生在通用寄存器和 I/O 端口之间。
所以答案为 D。
题目 6.5
下列关于 RISC 的说法中,错误的是()。
- RISC 普遍采用微程序控制器
- RISC 大多数指令在一个时钟周期内完成
- RISC 的内部通用寄存器数量相对 CISC 多
- RISC 的指令数、寻址方式和指令格式种类相对 CISC 少
A
RISC 是精简指令集计算机,其主要特点包括:指令种类少、指令格式规整、寻址方式少、通用寄存器数量较多,并且多数指令可在一个时钟周期内完成。
RISC 为了提高指令执行速度,通常采用硬布线控制器,而不是微程序控制器。微程序控制器更多见于 CISC 结构中,因为 CISC 指令复杂,适合用微程序方式实现控制。
因此,“RISC 普遍采用微程序控制器”这一说法错误。
所以答案为 A。
题目 6.6
某浮点数字长 16 位,其中阶码 4 位(含 1 位阶符),以 2 为底,移码表示;尾数含 1 位数符,共 12 位,补码表示,规格化。求:
(1)真值 $(-2^5 \times 0.375)_{10}$ 的浮点数代码(16 进制表示编码)。
(2)浮点数编码为 $1010\ 0110\ 10000000$ 的真值。
(1)$CA00H$;(2)$3.25$
该浮点数格式为:
阶码采用移码表示,偏置值为:
尾数采用补码表示,且要求规格化。
(1)真值为:
由于尾数采用补码规格化表示,负数规格化尾数应满足:
将其规格化为:
因此阶码真值为:
阶码采用移码表示:
尾数为:
$+0.75$ 的 12 位定点小数原码为:
所以 $-0.75$ 的补码为:
即尾数编码为:
将阶码和尾数组合:
转换为十六进制:
所以浮点数代码为:
(2)已知浮点数编码为:
其中阶码为:
阶码采用移码表示,偏置值为 8,所以阶码真值为:
尾数为:
即:
其十进制值为:
所以该浮点数的真值为:
因此答案为:
题目 6.7
寄存器中的值有时是地址,有时是数据,在形式上没有差别,只有通过()才能识别它是数据还是地址。
- 寄存器编号
- 判断程序
- 指令操作码或寻址方式位
- 时序信号
C
寄存器中存放的内容本质上都是二进制位串,仅从形式上无法判断它表示数据还是地址。
在指令执行过程中,寄存器内容的含义需要由当前指令的操作码和寻址方式来解释。
例如,某些指令中寄存器内容可作为操作数,而在寄存器间接寻址中,寄存器内容则表示操作数所在主存单元的有效地址。
因此答案为 C。
题目 6.8
已知 \(X = 0.1010\),\(Y = -0.1011\),用原码一位乘法计算 \(X \times Y\),其中寄存器、加法器的宽度均为 4 位,写出结果。
即:
原码乘法中,乘积的符号位由两个操作数的符号位异或得到。
因为 \(X\) 为正数,\(Y\) 为负数,所以乘积为负数。
数值部分相乘:
其中:
由于两个数的小数点后均为 4 位,因此:
所以数值部分乘积为:
乘积符号为负,因此:
写成原码形式为: