Skip to content
TechMind

6 、中央处理器


一、CPU 的基本组成🧀

CPU 主要由运算器和控制器组成。

部件 组成与作用
运算器 ALU、通用寄存器、暂存寄存器、移位器等,负责处理数据
控制器 指令寄存器 IR、程序计数器 PC、控制单元 CU 等,负责取指、译码并产生控制信号

ALU、寄存器、内部总线以及多路选择器等共同组成数据通路;控制器向数据通路发出控制信号,但通常不把控制器本身算作数据通路的一部分。

1、常见寄存器🧀

寄存器 作用 是否通常对用户可见
ACC 累加器,保存操作数和运算结果 取决于 ISA
MQ 乘商寄存器,参与乘除法 通常不可见
X 操作数暂存寄存器 通常不可见
MAR 保存要访问的主存地址 不可见
MDR 保存从主存读出或准备写入主存的数据 不可见
IR 保存当前正在执行的指令 不可见
PC 保存下一条待取指令的地址 通常由指令隐式修改,是否可直接访问取决于 ISA
PSW 保存条件码、中断状态和处理器状态 部分可见或可由专用指令访问
通用寄存器 保存操作数、地址或中间结果 可见

“用户可见”指程序能够通过指令显式使用。MAR、MDR、IR 属于 CPU 内部工作寄存器;通用寄存器和条件码通常属于指令系统的一部分。

2、ACC、MQ 与 X 的典型分工🧀

以下是传统单累加器模型中的常见约定,具体硬件可能不同:

寄存器 加法 减法 乘法 除法
ACC 被加数、和 被减数、差 乘积高位 被除数、余数
MQ — — 乘数、乘积低位 商
X 加数 减数 被乘数 除数

记号必须区分寄存器、地址和内容:

  • M 表示主存地址,(M) 或 \(M[M]\) 表示该地址中的内容。
  • ACC 表示寄存器本身,(ACC) 表示其中保存的内容。
  • 其他寄存器同理。

例如,从主存地址 M 取出一个操作数送入 X,可以写成:

\[ (M)\rightarrow X \]

二、指令周期🧀

CPU 完成一条指令通常经历以下阶段:

  1. 取指:根据 PC 从主存读取指令。
  2. 译码:控制器分析操作码和寻址方式。
  3. 取数:需要时计算有效地址并读取操作数。
  4. 执行:由数据通路完成运算、访存或转移。
  5. 写回:把结果写入寄存器或主存。
  6. 中断检查:在合适的边界响应允许的中断。

在简化模型中,取指阶段的微操作可以表示为:

\[ PC\rightarrow MAR \]
\[ M[MAR]\rightarrow MDR\rightarrow IR \]
\[ PC+L\rightarrow PC \]

其中 \(L\) 为当前指令长度。即使执行的是空操作 NOP,取指后 PC 也已经正常更新。

1、指令周期的层次🧀

常见三级时序关系为:

\[ \text{指令周期}\supset\text{机器周期}\supset\text{时钟周期(节拍)} \]
  • 指令周期:完成一条指令所需的全部时间。
  • 机器周期:完成一次相对独立的基本操作,如取指或访存。
  • 时钟周期:同步电路工作的最小时间单位。

不同教材也可能使用“CPU 周期”或“状态周期”等名称,做题时应先确认题目定义。

2、时钟周期的确定🧀

同步电路的时钟周期必须不小于关键路径的组合逻辑延迟,再加上寄存器建立时间、时钟偏斜等额外开销:

\[ T_{clk}\geq T_{critical}+T_{register\ overhead} \]

因此“最长组合路径的延迟”决定了时钟周期的主要下限,但二者通常不能简单画等号。


三、控制器🧀

控制器根据指令和状态产生控制信号,常见实现方式有:

类型 特点
硬布线控制器 由组合逻辑和时序电路直接产生控制信号,速度快,但设计和修改困难
微程序控制器 用控制存储器中的微指令产生控制信号,结构规整、便于修改,但通常较慢

一条指令在不同阶段需要不同的控制信号。CPU 并不是根据某段二进制“长得像指令还是数据”进行区分,而是由当前指令周期、地址来源及读写控制信号决定如何解释它。


四、异常与中断🧀

  • 异常:由当前指令内部产生,如除零、缺页或非法指令。
  • 中断:通常由外部设备或定时器异步提出请求。

处理器响应时通常需要:

  1. 保存断点和必要的程序状态。
  2. 根据入口地址转去执行处理程序。
  3. 处理完成后恢复现场并返回原程序。

精确异常要求处理器对外表现得像是在某条指令边界停止:此前的指令已经完成,此后的指令尚未产生可见影响。