(一)CPU的功能和基本结构
1. CPU 的功能
1.1. 控制器 CU 和运算器 ALU
- CPU 功能的两大组成部件:控制器 CU 和运算器 ALU;
- 控制器 CU
- 指令控制:取指令;
- 操作控制:分析指令;
- 时间控制:执行指令,发出指令,控制输入输出;
- 数据加工:管理数据总线;
- 处理中断:处理异常情况和特殊请求;
- 运算器 ALU:实现算术运算和逻辑运算;
2. CPU 的基本结构
2.1. 基本结构

CPU 基本结构的四大部件
- 控制器 CU;
- 运算器 ALU;
- 寄存器;
- 中断系统(IO);
各部分的分工表
功能 负责部分 指令控制 PC,IR 数据加工 ALU,寄存器 操作控制,时间控制 CU,时序电路 中断处理 中断系统
3. CPU 内的寄存器
3.1. 程序计数器 PC
- 指令地址寄存器;用来存放即将要执行的下一条指令地址;
- 将要执行,即当前存放在 PC 中的指令还没被取出和执行;
- 任何指令要被执行,都需要将其地址放到 PC 中;
- PC 存放的是指令在内存中的地址;
- 程序地址放入 PC 的情况
- 1)PC 自增:PC = PC + 1,即顺序执行一串指令;
- "+1" 表示的是 "1 条指令",即偏移量实际为该条指令的字节数或字数(取决于编址方式);
- 2)偏移量:通过某些转移指令,将相对于下一指令地址的偏移送给 PC,实现流程控制;
- 执行 JMP 指令也会导致 PC 自增,所以此处实际上是 PC = PC + 1 + (A);
- (A) 是 JMP 给出的偏移量,可能直接给出,也可能要通过寻址得到;
- JMP 指令分为:直接设置 PC,和将 PC 加上一个偏移量 Offset两种;
- 段内较近地址的转移一般用偏移量形式;
- 跨段较远地址的转移一般直接覆盖 PC(如 x86 中的
CS:IP);
- 1)PC 自增:PC = PC + 1,即顺序执行一串指令;
- PC 位数决定最多能执行(主存最多存放)的指令条数;
3.2. 指令寄存器 IR
- 用来存放从存储器中取出的指令;
- 指令执行完之前,指令寄存器的内容不允许发生变化;
- IR 位数 = 指令字长;
3.3. 存储器数据寄存器 MDR
- 暂时存放从主存中读出的指令/数据,或要向主存写入的指令/数据;
- 逻辑上属于主存,但是物理上在 CPU 内部;
- MDR 位数 = 存储字长;
3.4. 存储器地址寄存器 MAR
- 保存当前 CPU 所访间的主存单元的地址;
- CPU 和主存进行读写数据时,都要用到 MAR 和 MDR;
- 逻辑上属于主存,但是物理上在 CPU 内部;
- MAR 位数决定主存空间大小;
- 注意:一般意义上认为机器字长 = 指令字长 = 存储字长,与 MAR 位数无关;
- MAR 长度取决于内存总容量和每个存储单元长度,不一定和机器字长一致;
3.5. 程序状态字 PSW
表征程序和机器运行的状态,是参与控制程序执行的重要依据之一;
主要包括两部分:状态标志,控制标志;
- 状态标志:如进位,结果零标志等,大多数指令的执行都会影响;
- 控制标志:如中断,陷阱标志等;
状态标志
标志 名称 说明 N (S) 负数 计算结果为负数时,N=1,否则 N=0 Z 结果零 计算结果为 0 时,Z=1,否则 Z=0 V 溢出 计算结果溢出时,V=1,否则 V=0 C 进位 加法进位或减法借位时,C=1,否则 C=0 - 用途:条件转移指令(JZ, JNZ)等会读取状态标志,决定是立即转移还是顺序执行;
- 区分 CF 与 OF 标志
- CF:无符号数加减法,左移位产生进位时,置 1,否则置 0;
- OF:有符号数加减溢出,乘法溢出,触发溢出中断时,置 1,否则置 0;
- 无符号数加减时,与 OF 无关,对应地,有符号数加减时,也与 CF 无关;
3.6. 累加器 ACC
- 专门用来存放操作数或运算结果;
- 执行运算前,两个操作数中的一个通常应放在 ACC 中,运算完成后,ACC 中存放运算结果;
3.7. 寄存器可见性
| 寄存器 | 系统程序员可见性 | 应用程序员可见性 |
|---|---|---|
| PC | YES | NO |
| IR | NO | NO |
| MDR | NO | NO |
| MAR | NO | NO |
| PSW 状态位 | YES | NO |
| PSW 控制位 | NO | NO |
习题
- 某机器有一个 PSW,有进位标志 CF,结果零 ZF,符号标志 SF,溢出标志 OF。则条件转移指令 BGT(无符号整数比较结果为大于)的转移条件为
- A.
; - B.
; - C.
; - D.
; - 答案:C
- 解析:无符号整数
和 的比较是直接相减,即计算 ,然后看 PSW 状态位; - 此题中,若
,则 ,所以结果零 ZF=0,溢出 CF=0,与 SF, OF 无关; - 看四个选项,只有 C 符合要求,故选 C;
- 此题中,若
- 快速做法:无符号数运算与 OF 无关,排除 A,结果不可能为负数,与 SF 无关,排除 BD,因此选 C;
- 与 SF 无关:表示不能用 SF 的值作为判断依据,因为 SF 是根据最高位来确定,而无符号数最高位不是符号位;
- 由上还可知,SF 可反应无符号数运算结果最高位的情况;