附录 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):

      1. 输入信号:opcode 字段 + 标志位(zero / negative / overflow)。

      2. 输出信号:RegWrite / MemRead / MemWrite / ALUop / Branch / …​。

      3. 真值表:列出所有输入组合 → 输出。

      4. 优化:用卡诺图 / Quine-McCluskey 化简。

      5. 门电路实现:与 / 或门组合。

      组合控制 vs 微程序控制
      • 组合控制(硬连线):快(几个门延迟)、确定(每周期输出定值)、难改(修改需重新设计电路)。

      • 微程序控制:慢(微码存取延迟)、灵活(修改微码即可)、适合复杂指令。

      • 现代 CPU:硬连线(80-90%)+ 微码(10-20%)混合;常用指令硬连线,复杂指令微码。

      When:单周期 CPU;硬连线微架构;性能优先场景。

      Example:ARM Cortex-A53 用硬连线控制 ~70% 指令;剩下 ~30% 用微码处理复杂指令。

      2.2 FSM 控制 (FSM Control)

      What:用有限状态机实现控制——状态 + 输入 → 输出 + 下一状态。

      Why:多周期 CPU 控制的标准方案;比组合控制灵活、比微程序快。

      How

      FSM 控制流程(§C.3):

      1. 状态定义:每个状态对应一个 CPU 周期(IF / ID / EX / MEM / WB)。

      2. 输入:opcode + 标志位。

      3. 输出:控制信号 + 下一状态。

      4. 实现:Moore 机(输出仅依赖状态)或 Mealy 机(输出依赖状态 + 输入)。

      Moore vs Mealy FSM
      • Moore:输出 = f(状态);输出稳定但延迟一拍。

      • Mealy:输出 = f(状态, 输入);响应快但有 glitch。

      • 现代 CPU:常用 Moore 风格(输出寄存器化)以减少 glitch。

      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 指令 → 一段微指令序列 → 微码执行。

      微程序的优缺点
      • 优点:实现简单(微码即控制逻辑);修改灵活(升级固件即可);适合复杂指令。

      • 缺点:速度慢(每次微码存取需 1 个周期);占用存储(微码 ROM 占芯片面积)。

      • 现代 CPU:硬连线 + 微码混合(取长补短)。

      When:复杂指令集(x86);需要快速修复 CPU bug 的场景。

      Example:x86 的 INTO(中断溢出)指令用微码实现;AMD / Intel 可通过微码更新修复 Spectre 漏洞。

      三、关键图表

      视觉图表

      图 C-1
      Figure 1. 图 C-1:组合控制单元结构
      图 C-2
      Figure 2. 图 C-2:FSM 控制状态转换图
      图 C-3
      Figure 3. 图 C-3:微程序控制结构

      非可视化条目

      非可视化条目(表 / 算法)
      编号 内容摘要

      表 C.1

      LEGv8 控制信号到硬件的映射。

      式 C-1 至 C-3

      微指令编码、下一状态函数。

      列表 C.1-C.x

      Verilog / VHDL 控制单元示例。

      核心公式对照表

      核心公式对照表
      概念 公式

      Moore 输出

      \(\text{Output} = f(\text{State})\)

      Mealy 输出

      \(\text{Output} = f(\text{State}, \text{Input})\)

      微程序大小

      \(\text{ROM size} = \text{微指令数} \times \text{微指令字长}\)

      四、思维导图

      mindmap
        root((附录 C 控制映射到硬件))
          组合控制
            真值表
            卡诺图化简
            速度快
          FSM控制
            状态转换
            MooreMealy
            多周期
          下一状态函数
            PLA
            ROM
          微程序
            微指令
            控制存储器
            灵活慢

      五、重点与易错点

      • 组合控制 vs 微程序控制:硬连线快但难改;微码慢但灵活;现代 CPU 混合。

      • Moore vs Mealy:Moore 输出稳定;Mealy 响应快但有 glitch。

      • 微码占芯片面积:x86 微码 ROM 占芯片晶体管 30%+;AMD / Intel 通过微码更新修复 bug。

      • 现代 CPU 是混合方案:常用指令硬连线、复杂指令微码;性能 + 灵活性兼得。

      • 控制单元是 CPU 的"指挥":所有数据通路活动都靠控制信号协调。

      • 跨章衔接:第 4 章 CPU 微架构的控制通路用本附录的实现方案;附录 A 触发器 / FSM 是硬件基础。