附录 C 控制映射到硬件 (Mapping Control to Hardware)
核心结论
-
组合控制单元(§C.2):用组合逻辑实现控制信号——真值表 + 优化 → 与 / 或门电路;速度快但扩展难。
-
有限状态机控制(§C.3):用 FSM 实现控制——状态 + 输入 → 输出 + 下一状态;适合复杂控制(如多周期 CPU)。
-
微程序控制(§C.4-§C.5):用微码(microcode)实现控制——每条指令对应一段微程序;灵活但速度慢;现代 CPU 用硬连线 + 微码混合。
-
微程序 vs 硬连线:硬连线快但难改;微码慢但灵活;现代 CPU 大部分用硬连线,关键 / 复杂指令用微码。
|
本章主旨
附录 C 是"CPU 控制单元"实现细节——把第 4 章的"控制通路"具象化为硬件。两种主流方案:硬连线(组合逻辑)与微程序(微码)。现代 CPU 几乎都用硬连线 + 微程序混合:常用指令硬连线、复杂指令(系统调用 / 异常)微码。 |
一、核心概念
本章围绕 4 个核心概念展开:组合控制单元 → FSM 控制 → 下一状态函数 → 微程序。
| 概念 | 定义 + 重要性 | 实现提示 |
|---|---|---|
组合控制单元 |
用组合逻辑实现控制信号;真值表 + 卡诺图优化;速度快但难扩展。 |
§C.2;单周期 / 简单 CPU 控制用此方案。 |
FSM 控制 |
用有限状态机实现控制;状态 + 输入 → 输出 + 下一状态;适合多周期 CPU。 |
§C.3;MIPS 多周期 CPU 控制标准方案。 |
下一状态函数 |
决定 FSM 的下一状态;通常用 PLA / ROM 实现。 |
§C.4;控制单元的核心逻辑。 |
微程序控制 |
每条指令对应一段微程序;微码存于控制存储器;灵活但慢。 |
§C.5;x86 复杂指令常用此方案。 |
二、详细笔记
2.1 组合控制单元 (Combinational Control Unit)
What:用组合逻辑(门)直接生成控制信号。
Why:速度快(单周期延迟);简单控制的首选。
How:
实现步骤(§C.2):
-
输入信号:opcode 字段 + 标志位(zero / negative / overflow)。
-
输出信号:RegWrite / MemRead / MemWrite / ALUop / Branch / …。
-
真值表:列出所有输入组合 → 输出。
-
优化:用卡诺图 / Quine-McCluskey 化简。
-
门电路实现:与 / 或门组合。
|
组合控制 vs 微程序控制
|
When:单周期 CPU;硬连线微架构;性能优先场景。
Example:ARM Cortex-A53 用硬连线控制 ~70% 指令;剩下 ~30% 用微码处理复杂指令。
2.2 FSM 控制 (FSM Control)
What:用有限状态机实现控制——状态 + 输入 → 输出 + 下一状态。
Why:多周期 CPU 控制的标准方案;比组合控制灵活、比微程序快。
How:
FSM 控制流程(§C.3):
-
状态定义:每个状态对应一个 CPU 周期(IF / ID / EX / MEM / WB)。
-
输入:opcode + 标志位。
-
输出:控制信号 + 下一状态。
-
实现:Moore 机(输出仅依赖状态)或 Mealy 机(输出依赖状态 + 输入)。
|
Moore vs Mealy FSM
|
When:多周期 CPU;需要灵活控制的场景。
Example:MIPS 教科书多周期 CPU 用 10 个状态实现 5 级流水线功能。
2.3 微程序控制 (Microprogrammed Control)
What:每条指令对应一段微程序;微码存于控制存储器。
Why:复杂指令集(如 x86)需要;修改微码即可升级 CPU(早期 Intel 路线)。
How:
微程序结构(§C.5):
-
微指令(microinstruction):控制信号 + 下一微指令地址。
-
控制存储器(control store):存所有微程序;通常 ROM / PLA。
-
微程序计数器(μPC):当前微指令地址。
每条 ISA 指令 → 一段微指令序列 → 微码执行。
|
微程序的优缺点
|
When:复杂指令集(x86);需要快速修复 CPU bug 的场景。
Example:x86 的 INTO(中断溢出)指令用微码实现;AMD / Intel 可通过微码更新修复 Spectre 漏洞。