计算机组成原理考试复习
考完回忆:那个字位扩展设计芯片的题目,地址范围我给计算错了,希望老师手下留情。另外,RISC 和 CISC 这两个本来考试之前时有打算看的,可是最后给整忘了,只能凭借记忆来写了。
第一章 计算机系统概论
世界上第一台电子计算机 ENIAC(1946)
计算机的分类?
- 总体分为电子模拟计算机和电子数字计算机。
- 电子数字计算机又可以分为通用计算机和专用计算机。
- 通用计算机又可以分为:巨型机、大型机、中型机、小型机、微型机和单片机。
冯·诺伊曼认为计算机由哪五部分组成?
- 运算器
- 控制器
- 存储器
- 输入设备
- 输出设备
何为通道?
一种专用部件,负责外部设备与内存之间信息的传输。
何为中断?
主机接到信号(来自 CPU 外部或内部)时,立即中止原 来的工作,转去处理这一事件,处理完后,主机又回到原来工作点继续工作。
多道运行的特征?
- 多道
- 保护
- 宏观并行,微观串行
PC 和 IR 寄存器的功能?
- PC:存放下一条要执行的指令的地址,具有计数功能 \((PC) + 1 \rightarrow PC\)
- 存放当前欲执行的指令
何为时钟周期?
又称为节拍周期或 T 周期,是时钟频率的倒数。是处理器操作最基本的时间单位。例如,主频为 1GHz 的 CPU 的时钟周期为 1ns。
按:
- 时钟周期的定义其实应该是一个时钟脉冲所需要的时间。频率就是 1s 内可以产生的时钟脉冲数量。
- 时钟频率应该表述为:\(f = \frac{1}{T}\),分子的 1 表示 1 秒钟。
- 从时钟频率转换成时钟周期应该是这样:\(T = \frac{1}{f} \times 1\),后面乘的 1 表示 1 秒钟,而前面的分子的 1 表示占比。(f 个时钟周期中分出一个然后乘以 1 秒钟)
何为 \(CPI\) 和 \(CPI_i\)?
- CPI:表示执行每条指令(一个程序中的所有指令)所需要的平均时钟周期数。
- \(CPI_i\):表示执行每条指令(一类指令中的所有指令)所需要的平均时钟周期数。
\[ CPI = 一个程序的 CPU 时钟周期数 ÷ 程序指令数量 \]
设程序中每类指令的使用频度为 \(P_i\),每类指令的 \(CPI\) 为 \(CPI_i\),每类指令的条数为 \(IC_i\),程序中的总指令条数为 \(IC\),则,程序的 \(CPI\) 可用下列公式计算:
\[ CPI = \sum_{i = i}^{n} (CPI_i \times P_i) \]
\[ CPI = \sum_{i = 1}^{n} (CPI_i \times \frac{IC_i}{IC}) \]
何为 CPU 执行时间?
是指 CPU 计算某个任务所花费的时间,不包括 I/O 访问时的等待时间等。
CPU 执行时间 = CPU 时钟周期总数 × 时钟周期 = (指令条数 × CPI) × 时钟周期
CPU 执行时间 = CPU 时钟周期总数 / 时钟频率 = (指令条数 × CPI) / 时钟频率
CPI = 一个程序的 CPU 时钟周期数 ÷ 程序指令数量
CPU 执行时间 = CPU 时钟周期总数 / 时钟频率
何为 MIPS?
是指 CPU 每秒可以执行的百万条机器指令数。
MIPS = 指令数 ÷ (程序执行的时间 \(\times\) \(10^6\)) = 时钟频率 ÷ (CPI \(\times\) \(10^6\))
推导:
\[ \begin{split} MIPS &= \frac{指令数}{CPU 执行时间 \times 10^6 \quad \;} \\ &= \frac{指令数}{(CPU 时钟周期总数 / f) \times 10^6 \qquad} \\ &= \frac{f}{CPI \times 10^6} \end{split} \]
第二章 计算机中的数据表示方法
原码、反码、补码、移码相关?
如何理解定点数?
这张图其实是有点问题的,小数点不应该被显示出来,因为这会让人误解的。
所谓定点数,就是指小数的位置是固定的:
- 对于小数,小数点的位置是在 \(X_1\) 的前面,\(X_0\) 表示符号位;
- 对于整数,小数点的位置是在 \(X_n\) 的后面,\(X_0\) 还是表示符号位。
定点小数表示数的范围:
\[ 1 - 2^n \geqslant |x| \geqslant 2^{-n} \]
定点整数表示数的范围:
\[ 2^n - 1 \geqslant |x| \geqslant 1 \]
如何理解 IEEE754 标准浮点数?
浮点数的规格化?
在浮点运算过程中,为了保证数据的精度,要求尾数的最高位为非 0 数,即当尾数不为零时,其绝对值应大于或等于 \((1/2)_10\)。
以补码表示为例,正数规格化后,尾数的形式为:
\[ 0.1xx \cdots x \]
负数规格化后,尾数的形式为:
\[ 1.0xx \cdots 1 \]
如何理解码距?
- 将一组编码中任何两个合法编码之间代码不同的最小位数称为这编码的距离,简称码距或海明距离。
- 四位二进制编码 0011 与 0001 的码距为 1;而 0011 与 0000 两组编码的距离为 2。 按:只有两个,所以任何两个合法编码之间代码不同的最小位数就是这两个编码的不同的位数。
- 若用四位二进制编码只表示 0000、0011、0101、0110、1111、1001、1010、1100 等八种编码,则码距为 2。此时,这 8 种编码中的任何一位发生改变,如 0000 变成 1000 就从有效编码变成了无效编码,容易检测到这种错误。 按:这里的码距指的是取这一组中任何两个编码之间的最小“距离”。
这里的码距,有些地方叫做最小码距,而码距则是指两个编码之间的的不同位数。
第三章 运算方法与运算器
何为变形补码?
\[ [X]_{补} = \left\{\begin{matrix} \begin{aligned} &X & 0 & \leqslant X < 2 \\ & & & & mod \; 4 \\ &4 + X & -2 & \leqslant X < 0 \\ \end{aligned} \end{matrix}\right. \]
此时,
\[ [X]_{补} = X_{f1} X_{f2}.X_1 X_2 X_3 ... X_n \]
对于变形补码,其溢出的检测为:
- 上溢:双符号位为 01
- 下溢:双符号位为 10
- 溢出的判断:\(V = X_{f1} \oplus X_{f2}\)
注意,最高符号位(双符号位的第一位)为结果的真实符号。
如何理解上溢和下溢?
所谓上溢,就是指双符号位为 01
时的溢出,上溢也叫正溢出,因为第一位符号位是对的,所以,可以形象理解为两个正数相加得到负数时候的溢出。
下溢的理解同理。
第四章 存储系统
何为存储字长?
存储字长:主存的一个存储单元所包含的二进制位数
和为数据字长?
数据字长(字长):计算机一次能处理的二进制数的位数
何为大端(big-endian)和小端(little-endian)数据存放方式?
- big-endian: 最高字节地址(最左边)作为字地址 (正常存放方式)
- little-endian: 最低字节地址(最右边)作为字地址
68000 采用大端,Intel 采用小端,ARM 两者都支持
例:int a = 0x12345678,a 在内存中是如何保存的?
解:a 需要 4 个连续地址,从低地址变化到高地址
- 若 a 变量中高字节(0x12)保存在低地址,则是大端模式
- 若 a 变量中低字节(0x78)保存在低地址,则是小端模式
假设起始地址为 0x4000
大端模式(Big-endian):
小端模式(Little-endian):
三种常见的 Cache 地址映射及地址变换方法?
第五章 指令系统
如何理解操作数的寻址方式?
操作数的来源:
⑴ 操作数直接来自指令地址字段;
⑵ 操作数存放在寄存器中,即寄存器操作数;
⑶ 操作数存放在存储器中,即存储器操作数。
所谓操作数的寻址方式,就是如何从上述三种来源中为指令提供操作数。
何为有效地址?
操作数在内存中的地址,一般用 \(E\) 表示,则数据 \(S = (E)\)。
何为隐含寻址?
操作数在寄存器中。
不明确地给出操作数的地址,而是在指令中隐含地给出。
何为立即数寻址?
操作数在指令中。
指令的地址字段指出的不是地址,而是操作数本身。
如:
不计算 E,S = 2038H。
何为直接寻址?
数据在内存中。
由指令的地址部分直接给出操作数的有效地址。
E = D, S = (D) = (E)
例如:
何为间接寻址?
操作数在内存中。
指令的形式地址部分给出的是操作数地址的地址,即是操作数地址的指示器。
E = (D), S = (E) = ((D))
何为寄存器寻址和寄存器间接寻址?
数据分别在寄存器和主存中。
- 寄存器寻址:
- 操作数不放在内存中,而是放在通用寄存器中,此时,指令的形式地址字段 D 的值表示的是寄存器号。
- 不计算 E,\(S = (R_D)\)
- 寄存器间接寻址:
- 寄存器的内容不是操作数,而是操作数所在内存单元的地址。
- \(E = (R_D)\),\(S = (E) = ((R_D))\)
何为相对寻址?
数据在内存中。
E = (PC) + D, S = (E) = ((PC) + D)
把 PC 的值和指令中形式地址 D 的内容相加,作为有效地址。PC 的值是下一条指令的地址。
MIPS 的三类指令?
第六章 中央处理器
CPU 的基本功能?
- (1). 指令执行顺序的控制
- (2). 指令的操作控制
- (3). 时间控制
- (4). 异常和中断处理
- (5). 数据加工处理
CPU 由运算器和控制器组成。
控制器的主要功能部件有哪些,以及它们的作用?
- (1). 程序计数器 PC,Program Counter
- 给出并指示下一条指令的地址
- 完成顺序控制的功能
- 内容在取指完成后即可改变
- 转移指令直接修改 PC 值
- (2). 指令寄存器 IR,Instruction Register
- 保存当前正执行的指令
- 指令的操作码字段和寻址方式送译码 按:第二条存疑。
- (3). 指令译码器 ID,Instruction Decoder
- 对指令的 OP 字段和寻址方式译码,指出指令的操作方式
- 译码的结果是找到与该指令相关的微程序的入口
- (4). 操作控制器 OC,Operator Controller
- 产生指令执行过程中所需要的控制信号
- 实现指令的操作控制功能
- (5). 时序产生器 TG,Timer Generator
- 对操作控制信号进行同步
- 实现控制器的时间控制功能
- (6). 数据缓冲寄存器 DR,Data Register
- 保存于主存之间交换的数据
- (7). 地址寄存器 AR,Address Register
- 存放 CPU 将要访问的主存单元地址
何为指令周期?
一条指令从取出到执行完成所需时间。
指令周期的划分?
- (1). 取指令周期
- (2). 译码/取操作数周期
- (3). 执行周期
何为 PSW?
Program Status Word,程序状态字。
在指令周期的执行周期中,用来记录状态信息(如溢出)。
何为数据通路?
数据在 CPU 各功能部件之间传送的路径。
何为 MAR?
Memory Address Register,内存地址寄存器。
何为微命令?
控制部件通过控制线向执行部件发出的各种控制信号(打开和关闭控制门)。
何为微操作?
执行部件接受微命令后所进行的操作。
反馈线的作用?
向控制部件反馈执行的状态信息,以便控制部件进行状态测试。
微程序控制器的组成?
- (1). 控制存储器
- 存放用来实现全部指令的所有微程序,只读存储器,微程序固化在其中。
- (2). 微指令寄存器(\(\mu IR\))
- 存放从控存中读出的微指令
- (3). 微地址寄存器(\(\mu AR\))
- 存储访问 CM 的微地址 按:CM 大概就是控制存储器
- (4). 微地址产生逻辑
- 用于产生后续微指令地址
结合试题复习知识点
原码表示法中,零有两个编码,即 \(0.0...0\) 和 \(1.0...0\)。
按:
实际上,原码表示法表示的零要分整数和小数来讨论,而且,不管是小数还是小数,各自都有两种方法来表示零:
- 小数
- \(0.0...0\)
- \(1.0...0\)
- 整数
- \(00...0\)
- \(10...0\)
设 \(X = 11001101\),数据采用奇校验时,其校验位 C = \(0\)。
按:
所谓奇校验,就是通过设置校验位的值,使待传数据中(含有一位校验位)1 的个数为奇数。设校验位为 C,则:
\[ C = \overline{X_0 \oplus X_1 \oplus \cdots \oplus X_{n - 1}} \]
浮点表示法中,阶码决定浮点数的范围,尾数决定浮点数的精度。
设 \(X = -35 / 64\),\(X\) 的补码为 \(1.011101\)。
微程序控制器中的核心部件是控制存储器。
按:
控制存储器:
- 存放用来实现全部指令的所有微程序
- 只读存储器
- 微程序固化在其中
74181 集成运算芯片能提供快速运算,是因为它内部具有并行逻辑。
按:疑。
冯·诺伊曼计算机的设计思想是指令和数据用二进制表示...。
冯·诺伊曼计算机的特点(设计思想):
- 1. 计算机由五大部件组成
- 2. 指令和数据以同等地位存于存储器(存储程序和程序控制)
- 3. 指令和数据用二进制表示
- 4. 指令由操作码和地址码组成
- 5. 以运算器为中心
EPROM 芯片靠紫外线擦除原存信息。
按:
ROM 的历史:
- MROM:Mask Read-Only Memory,掩模式只读存储器
- PROM:Programmable Read-Only memory,一次可编程只读存储器
- EPROM:Erasable Programmable Read-Only Memory,电写/光(紫外线)擦除可编程只读存储器
- EEPROM:Electronically Erasable Programmable Read-Only Memory,电可擦除可编程只读存储器
固件是一种具有软件特性的硬件,通常是将程序固化在 ROM 中实现。
指令寄存器用来保存正在执行的指令。指令计数器用来保存下一条要执行的指令。
按:
The program counter (PC) holds the address of the next instruction to be executed, while the instruction register (IR) holds the encoded instruction. Upon fetching the instruction, the program counter is incremented by one "address value" (to the location of the next instruction).
- PC,存放下一条要执行的指令的地址
- IR,存放当前要执行的指令
半导体 SRAM 存储元靠电路存储信息,而 DRAM 存储元靠电荷存储信息。
按:存疑。
间接寻址方式中,操作数的有效地址 E 的表达式为 \(E = (D)\)。
控制存储器主要用来存放微程序。
某机字长 32 位,主存容量位 16MB,若按字编址,其寻址范围为 \(0 \sim 4M\)。
按:
计算方法如下:
某计算机字长是 32 位,它的存储容量是 256KB,按字编址,它的寻址范围是 0~64KB。
计算步骤:
256KB 字节 = \(256 \times 1024 \times 8\) 位,
计算机按 32 位字长单字编址。则单字的位数为 32 位,范围为 (\(256 \times 1024 \times 8\) 位) / 32 位 = 64KB。
此外若计算机按 32 位字长半字编址,则半字的位数为 16 位,范围为 (\(256 \times 1024 \times 8\) 位) / 16 位 = 128KB。
存储容量是指存储器可以容纳的二进制信息量,用存储器中存储地址寄存器 MAR 的编址数与存储字位数的乘积表示。
所以寻址范围 = 256KB / 4B = 64K。
按:所谓寻址范围,就是内存一共可以编址成的数据的数目。
来源:博客园
CPU 中,反映指令执行后 CPU 状态的寄存器是PSW。
某计算机有 100 条指令,采用定长编码指令格式时,其操作码的长度应为7位。
按:\(2^7 = 128\)。
计算机主机是指存储器 + CPU。
中断向量是中断服务程序入口地址。
设指令中的形式地址为 D,相对寻址时,操作数的有效地址 E = (PC) + D。
DMA 方式下,设备与主存间的数据交换以数据块为基本单位进行。
补码浮点加法运算步骤?
- 求补
- 对阶
- 求和
- 规格化
中断处理过程包括哪些步骤?
- (1). 中断请求
- (2). 中断响应
- (3). 保护现场
- (4). 中断处理
- (5). 中断返回