# 第10章 控制单元设计（详细补充版）

> 📖 本章介绍控制单元的两种设计方法：组合逻辑设计和微程序设计。
> 🎯 重点理解微程序设计方法
> ⚠️ 考试范围：不考10.1节；重点复习例题10.4和414页微程序设计举例；课后习题10.1、10.2必须掌握

---

## 📋 本章目录

- [[#10.1 组合逻辑设计]]
- [[#10.2 微程序设计]]
- [[#本章小结]]
- [[#例题与解析]]
- [[#真题与作业精选]]
- [[#知识点速记卡]]

---

## 10.1 组合逻辑设计

> 📝 虽然考试范围注明10.1节不考，但组合逻辑设计的基本思想和步骤仍是理解微程序设计的基础，建议了解。

### 10.1.1 组合逻辑控制单元框图

```mermaid
graph TB
    subgraph "组合逻辑控制单元"
        IR[IR<br/>指令寄存器] --> |"操作码"| DEC[操作码译码器]
        CLK[时钟] --> |"时钟信号"| TG[节拍发生器]
        DEC --> |"译码输出"| CU[控制单元]
        TG --> |"节拍信号"| CU
        FLAG[标志] --> CU
        CU --> |"控制信号"| CTRL[控制信号输出]
    end
```

组合逻辑控制单元由三个核心部件组成。操作码译码器负责把指令的操作码翻译成具体的控制信号——比如加法指令的码进来，就输出"做加法"的信号。节拍发生器产生时序信号，控制微操作的先后顺序，就像节拍器控制乐队的节奏。控制单元则是核心，它综合译码结果、节拍信号和标志位，在正确的时刻发出正确的控制信号。

这种设计方式的特点是速度快——信号通过逻辑门直接产生，不需要访问存储器。但缺点也很明显：电路复杂，修改困难，每增加一条指令可能都要重新设计电路。

#### 组合逻辑设计步骤

组合逻辑控制器的设计一般包括以下步骤：

1. **列出微操作时间表**：对每条指令，按节拍列出每个微操作。
2. **写出微操作的逻辑表达式**：用操作码译码输出、节拍信号、标志位等变量表示每个微操作。
3. **优化逻辑表达式**：用卡诺图或布尔代数化简。
4. **画出逻辑电路图**：用与、或、非门实现。

### 10.1.2 微操作的节拍安排

安排微操作的节拍时，需要遵循三个原则。

**顺序原则**：有些微操作的次序不能改变。比如必须先送地址到MAR才能读内存，必须先读到MDR才能送到IR——这些顺序是硬件决定的，不能颠倒。

**并行原则**：不同控制对象的微操作可以同时执行。比如ALU做加法的同时，寄存器可以读数据——因为它们控制的是不同的硬件部件，互不干扰。

**紧凑原则**：时间短的微操作可以安排在同一节拍。比如PC送MAR和发读命令可以同时进行，因为它们的操作对象不同，而且都很快速。

#### 取指周期节拍安排

| 节拍 | 微操作 | 说明 |
|------|--------|------|
| T₀ | PC → MAR, 1 → R | 地址送MAR，发读命令 |
| T₁ | M(MAR) → MDR, (PC)+1 → PC | 读指令，PC加1 |
| T₂ | MDR → IR, OP(IR) → ID | 指令送IR，译码 |

```mermaid
sequenceDiagram
    participant T0 as 节拍T0
    participant T1 as 节拍T1
    participant T2 as 节拍T2

    Note over T0: PC → MAR, 1 → R
    Note over T1: M(MAR) → MDR, (PC)+1 → PC
    Note over T2: MDR → IR, OP(IR) → ID
```

三个节拍就完成了取指。T₀节拍同时做两件事：送地址和发读命令，因为它们操作的对象不同（MAR和控制总线），可以并行。T₁节拍也是两件事并行：从内存读指令到MDR，同时PC加1——读内存是主存的操作，PC加1是CPU内部操作，互不影响。T₂节拍把指令从MDR搬到IR，同时操作码送到译码器。

#### 间址周期节拍安排

| 节拍 | 微操作 | 说明 |
|------|--------|------|
| T₀ | Ad(IR) → MAR, 1 → R | 形式地址送MAR |
| T₁ | M(MAR) → MDR | 读有效地址 |
| T₂ | MDR → Ad(IR) | 有效地址送IR |

间址周期和取指周期结构类似，但目的不同——这里是为了获取有效地址。T₀送形式地址并发读命令，T₁从内存读有效地址到MDR，T₂把有效地址写回指令的地址字段。这样后续执行周期就知道该去哪操作了。

#### 执行周期节拍安排

**非访存指令**不需要访问内存，所以很多只需要用到T₂节拍：

| 指令 | T₀ | T₁ | T₂ |
|------|----|----|-----|
| CLA | 空 | 空 | 0 → ACC |
| COM | 空 | 空 | $\overline{ACC}$ → ACC |
| SHR | 空 | 空 | L(ACC) → R(ACC) |
| CSL | 空 | 空 | R(ACC) → L(ACC) |
| STP | 空 | 空 | 0 → G |

这些指令都是CPU内部操作，不需要去内存取数据，所以T₀和T₁空闲，只在T₂执行一个操作。这也是为什么非访存指令通常比访存指令快。

**访存指令**需要访问内存，三个节拍都用满了：

**加法指令 ADD X**：

| 节拍 | 微操作 |
|------|--------|
| T₀ | Ad(IR) → MAR, 1 → R |
| T₁ | M(MAR) → MDR |
| T₂ | (ACC) + (MDR) → ACC |

T₀送地址并发读命令，T₁从内存读操作数到MDR，T₂把累加器的值和MDR的值送到ALU做加法，结果写回累加器。

**存数指令 STA X**：

| 节拍 | 微操作 |
|------|--------|
| T₀ | Ad(IR) → MAR, 1 → W |
| T₁ | ACC → MDR |
| T₂ | MDR → M(MAR) |

STA X 和 ADD X 的区别在于方向：ADD 是从内存读到CPU，STA 是从CPU写到内存。所以T₀发的是写命令（1→W），T₁把累加器的值送到MDR，T₂把MDR的内容写入内存。

**取数指令 LDA X**：

| 节拍 | 微操作 |
|------|--------|
| T₀ | Ad(IR) → MAR, 1 → R |
| T₁ | M(MAR) → MDR |
| T₂ | MDR → ACC |

LDA X 和 ADD X 的前三步完全一样，区别在T₂：ADD 是做加法后送回累加器，LDA 是直接把MDR的值送到累加器（累加器原来的值被覆盖）。

---

## 10.2 微程序设计

> 🔥 **本节是考试核心**。微指令格式设计（字段位数计算）、微程序控制器工作原理、414页微程序设计举例均为高频考点。

### 10.2.1 微程序设计的基本概念

> [!info] 定义
> 微程序设计是用程序的方法来设计控制单元，把控制信号编成微指令，存放在控制存储器中。

组合逻辑设计虽然速度快，但电路复杂、修改困难。微程序设计的思路完全不同——它把控制信号看成"数据"，存到一个ROM（只读存储器）里，执行指令时从ROM中读取控制信号。这样设计控制单元就变成了编写"微程序"，和写软件的思路类似。

三个核心概念：**微指令**是一组控制信号的集合，一条微指令可以同时激活多个控制信号；**微程序**是微指令的有序序列，一条机器指令对应一个微程序；**控制存储器**（CS）是存放微程序的ROM，通常在CPU内部。

举个例子，执行一条加法指令，它的微程序可能包含三条微指令：第一条完成取指（PC→MAR、1→R等），第二条完成取操作数（Ad(IR)→MAR、M(MAR)→MDR），第三条完成加法运算（(ACC)+(MDR)→ACC）。每条微指令里的控制信号可以并行发出。

### 10.2.2 微程序控制器的工作原理

> 📌 这是复习资料中的原题，期中/期末考试高频出现。下面把工作原理完整梳理一遍。

微程序控制器的工作流程可以概括为：

1. **开机**：系统初始化，将取指微指令的地址送入微地址寄存器（CMAR）。
2. **取微指令**：根据CMAR中的地址，从控制存储器（CM）中取出当前微指令。
3. **执行微操作**：微指令的操作控制字段直接产生控制信号，驱动各部件完成微操作。
4. **确定下地址**：根据微指令的顺序控制字段（下址字段），决定下一条微指令的地址，送入CMAR。
5. **循环执行**：重复步骤2-4，直到该机器指令对应的微程序执行完毕。
6. **回到取指**：一条机器指令执行完毕后，自动回到取指微程序的入口地址，开始下一条指令的取指。

**核心要点**：每条机器指令对应一段微程序，取指微程序是所有指令共用的公共部分。整个CPU的工作就是不断地从CM中读取微指令、执行微操作、更新地址——本质上是一个"微程序级的取指-执行循环"。

### 10.2.3 微指令格式与编译方法

微指令由两部分组成：**操作控制字段**产生各种控制信号，**顺序控制字段**决定下一条微指令的地址。

> ⚠️ **微指令格式设计（字段位数计算）是考试高频题型**，特别是给定CM容量和转移条件，计算各字段位数。务必掌握下面的编译方法和计算思路。

根据操作控制字段的编码方式，微指令有三种编译法。

#### 直接控制法（不译码法）

操作控制字段的每一位直接对应一个微操作控制信号。某位为1就表示激活对应的控制信号，为0就不激活。可以同时激活多个信号，实现并行操作。

- 优点：不需要译码，速度快，设计简单。
- 缺点：微指令字长很长——如果有N个控制信号，操作控制字段就需要N位。

#### 字段直接编译法（编码法）

把控制信号分成若干组（字段），每个字段内部用二进制编码来表示。比如一个字段有3位，可以编码表示 2³ = 8 个互斥的控制信号（同一时刻只能激活其中一个）。

- 优点：缩短了微指令字长。
- 缺点：需要译码器，增加了硬件开销；同一字段内的信号不能并行（互斥）。

#### 字段间接编译法

在字段直接编译的基础上，一个字段的含义还依赖于另一个字段的值——即字段之间有层次关系。比如第一个字段选择操作类型，第二个字段在该操作类型下进一步细分。

- 优点：进一步压缩微指令字长。
- 缺点：译码电路更复杂，速度更慢。

#### 后继地址的产生方式

确定下一条微指令地址有两种方式：

**计数器方式（增量方式）**：用一个微程序计数器（μPC）记录当前微指令地址，每执行一条微指令自动加1。遇到转移时，把目标地址送到μPC。优点是顺序执行时下址字段可以省略（自动+1），节省空间；缺点是遇到转移需要额外处理。

**判定方式（下址字段法）**：在微指令中直接设置一个"下址字段"，存放下一条微指令的地址。优点是地址灵活，转移效率高；缺点是增加了微指令的长度。

实际设计中常把两者结合：顺序执行时用计数器自动递增，转移时用下址字段指定目标地址。

### 10.2.4 微指令格式设计实例

> 📌 **这是考试的核心计算题**，期中/期末都曾考过。下面通过具体例子讲解字段位数的计算方法。

**题目**：CM容量为 512×48位，转移条件有4个。求微指令各字段的位数。

**解题思路**：

1. **下址字段**：CM有512个单元，需要 2⁹ = 512，所以下址字段需要 **9位**。
2. **判别测试字段**：有4个转移条件，需要 2² = 4，所以判别测试字段需要 **2位**。
3. **微命令字段**（操作控制字段）：总宽度48位减去下址和判别测试字段，即 48 - 9 - 2 = **37位**。

**答案**：下址字段9位，判别测试字段2位，微命令字段37位。

**解题模板**：遇到这类题目，记住三个公式：
- 下址字段位数 = log₂(CM单元数)
- 判别测试字段位数 = log₂(转移条件数)
- 微命令字段位数 = 微指令总位数 - 下址字段位数 - 判别测试字段位数

### 10.2.5 微程序设计的步骤

> 📌 对应教材414页的微程序设计举例，这是本章最重要的例题。建议对照教材完整走一遍。

微程序设计可以分为四步。

第一步是**分析指令**：把每条机器指令分解成微操作序列，确定需要哪些控制信号。比如加法指令需要PC→MAR、1→R、M(MAR)→MDR、(ACC)+(MDR)→ACC这些控制信号。

第二步是**设计微指令格式**：确定操作控制字段和顺序控制字段的宽度和编码方式。操作控制字段要能表示所有需要的控制信号，顺序控制字段要能表示微程序的地址范围。

第三步是**编写微程序**：为每条机器指令编写对应的微程序。取指周期的微程序是所有指令共用的，执行周期的微程序因指令而异。

第四步是**实现控制存储器**：把微程序固化到ROM中。ROM的内容在制造时就确定了，不能修改（除非用可擦写的EPROM）。

### 10.2.6 微程序设计的优缺点

微程序设计最大的优点是**规整性和灵活性**。用程序的方法设计控制单元，逻辑清晰、容易理解；需要增加新指令时，只需要在ROM中添加对应的微程序，不需要重新设计电路；调试和维护也方便，可以通过修改微程序来修复bug。

缺点主要是**速度**。每条微指令都要从控制存储器读取，增加了访存时间，比组合逻辑直接产生信号要慢。另外需要额外的控制存储器，增加了硬件成本。

实际应用中，现代复杂CPU（如x86系列）通常采用微程序设计，因为指令集复杂、需要灵活扩展。而简单处理器（如一些嵌入式处理器）可能采用组合逻辑设计，追求更高的执行速度。

---

## 📝 本章小结

### 核心概念

1. **组合逻辑设计**：用组合逻辑电路直接产生控制信号，速度快但设计复杂
2. **微程序设计**：把控制信号存到ROM中，用读取ROM的方式产生控制信号，灵活但速度较慢
3. **微指令**：一组控制信号的集合
4. **微程序**：微指令的有序序列，一条机器指令对应一个微程序
5. **控制存储器**：存放微程序的ROM
6. **硬布线vs微程序**：硬布线速度快但设计复杂难修改，适合RISC；微程序灵活规整易修改但速度较慢，适合CISC。现代CPU常混合使用

### 关键术语

| 术语 | 英文 | 含义 |
|------|------|------|
| 组合逻辑 | Combinational Logic | 用逻辑电路实现 |
| 微程序 | Microprogram | 用程序实现 |
| 微指令 | Microinstruction | 控制信号的集合 |
| 控制存储器 | Control Storage | 存放微程序的ROM |
| 直接控制法 | Direct Control | 每位对应一个微命令 |
| 字段直接编译法 | Field Direct Encoding | 编码方式，需译码 |
| 下址字段 | Next Address Field | 存放下一条微指令地址 |

### 重点图示

> [!summary] 必须掌握的图
> 1. 组合逻辑控制单元框图
> 2. 微程序控制单元框图
> 3. 微指令格式图
> 4. 取指周期的节拍安排图

---

## 🧪 例题与解析

### 例题1：取指周期节拍安排

**题目**：写出取指周期的节拍安排。

**答案**：

| 节拍 | 微操作 | 说明 |
|------|--------|------|
| T₀ | PC → MAR, 1 → R | 地址送MAR，发读命令 |
| T₁ | M(MAR) → MDR, (PC)+1 → PC | 读指令，PC加1 |
| T₂ | MDR → IR, OP(IR) → ID | 指令送IR，译码 |

每个节拍都安排了两个可以并行的操作：T₀送地址和发读命令操作对象不同，可以同时进行；T₁读内存和PC加1一个是主存操作、一个是CPU内部操作，互不干扰；T₂送指令和译码也是类似道理。这样三个节拍就完成了取指，效率很高。

### 例题2：加法指令节拍安排

**题目**：写出加法指令 ADD X 的节拍安排。

**答案**：

| 节拍 | 微操作 |
|------|--------|
| T₀ | Ad(IR) → MAR, 1 → R |
| T₁ | M(MAR) → MDR |
| T₂ | (ACC) + (MDR) → ACC |

ADD X 的执行周期需要三次访存操作中的两次（送地址、读数据），然后做加法。T₀送地址并发读命令，T₁等待内存响应并把数据读到MDR，T₂把累加器的值和MDR的值送到ALU做加法，结果写回累加器。如果X是间接寻址的，还需要在前面加一个间址周期。

### 例题3：微程序设计步骤

**题目**：简述微程序设计的步骤。

**答案**：

微程序设计的步骤：

1. **分析指令**：把每条机器指令分解成微操作序列，确定需要哪些控制信号
2. **设计微指令格式**：确定操作控制字段和顺序控制字段的宽度和编码方式
3. **编写微程序**：为每条机器指令编写对应的微程序，取指周期的微程序是共用的
4. **实现控制存储器**：把微程序固化到ROM中

这四步的核心思想是"用数据代替逻辑"——把原本需要复杂电路实现的控制逻辑，变成存储在ROM中的数据，通过读取ROM来产生控制信号。这样设计更灵活，但代价是速度稍慢。

### 例题4：组合逻辑与微程序比较

**题目**：比较组合逻辑设计和微程序设计的优缺点。

**答案**：

| 特性 | 组合逻辑设计（硬布线） | 微程序设计 |
|------|--------------|------------|
| **设计方法** | 用逻辑电路直接实现 | 用程序（ROM）实现 |
| **优点** | 速度快 | 规整性好，灵活，易修改 |
| **缺点** | 设计复杂，不灵活，难修改 | 速度较慢，需要额外的ROM |
| **应用** | 简单CPU、RISC处理器 | 复杂CPU、CISC处理器 |

选择哪种方式取决于设计目标：追求极致速度就用组合逻辑，追求灵活性和可扩展性就用微程序。现代CPU往往混合使用——简单常用的指令用组合逻辑加速，复杂指令用微程序实现。

### 例题5：微指令格式设计

**题目**：设计一个简单的微指令格式，支持8种控制信号。

**答案**：

**操作控制字段**：8种控制信号，如果采用水平型编码（每位对应一个信号），需要8位。如果采用垂直型编码（用3位二进制编码选择8种信号之一），只需要3位，但一次只能激活一个信号。

**顺序控制字段**：需要支持顺序执行和跳转。假设微程序最多16条微指令，地址需要4位；再加1位跳转标志（是否跳转），共5位。

**水平型微指令格式**（16位）：
- 操作控制字段：8位（每位控制一个信号，可同时激活多个）
- 顺序控制字段：4位地址 + 1位跳转标志 + 3位备用 = 8位

**垂直型微指令格式**（8位）：
- 操作控制字段：3位（编码选择8种信号之一）
- 顺序控制字段：4位地址 + 1位跳转标志 = 5位

水平型微指令更灵活（一条指令可以同时控制多个操作），但占用更多空间；垂直型微指令更紧凑，但需要更多条微指令才能完成同样的功能。

---

## 📖 真题与作业精选

> 🔥 以下题目来自复习资料、期中/期末考试和课后习题，每道题都标注了来源和重要程度。考前务必全部过一遍。

### 真题1：微指令格式设计（字段位数计算）

> 📌 复习资料原题，期中/期末高频考点。掌握公式即可秒杀。

**题目**：CM容量为 512×48 位，转移条件有4个。计算微指令各字段的位数。

**解题过程**：

这道题考查的是微指令格式设计中的位数分配，关键是搞清楚三个字段各自怎么算。

**下址字段**——CM有512个单元，要能寻址每一个单元。512 = 2⁹，所以下址字段需要 **9位**。简单理解：9位二进制数刚好能表示0到511这512个地址。

**判别测试字段**——有4个转移条件需要判断。4 = 2²，所以判别测试字段需要 **2位**。2位二进制数（00、01、10、11）刚好对应4个条件。

**微命令字段**（操作控制字段）——剩下的位数全归它。总位数48减去下址9位再减去判别测试2位：48 - 9 - 2 = **37位**。

**答案**：下址字段9位，判别测试字段2位，微命令字段37位。

**举一反三**：如果CM容量是 1024×64 位，转移条件8个，那么下址字段 = log₂(1024) = 10位，判别测试字段 = log₂(8) = 3位，微命令字段 = 64 - 10 - 3 = 51位。

### 真题2：微程序控制器原理（简答题）

> 📌 复习资料原题。这是简答题的标准答案模板，直接背下来。

**题目**：简述微程序控制器的工作原理。

**答案**：

微程序控制器的工作过程如下：

1. **开机初始化**：CPU开机后，将取指微程序的入口地址送入微地址寄存器。
2. **取微指令**：根据微地址寄存器中的地址，从控制存储器（CM）中取出当前微指令。
3. **执行微操作**：微指令的操作控制字段产生控制信号，驱动数据通路完成相应的微操作。
4. **后继地址形成**：根据微指令的顺序控制字段（下址字段），确定下一条微指令的地址。
5. **循环**：重复步骤2-4，直到当前机器指令对应的微程序全部执行完毕。
6. **回到取指**：执行完一段微程序后，自动回到取指微程序入口，开始下一条机器指令的处理。

**核心思想**：每条机器指令对应一段微程序，控制存储器中存放了所有指令的微程序。微程序控制器的本质就是按地址从CM中逐条取出微指令并执行，是一个"微程序级的取指-执行循环"。

### 真题3：微指令三种编译法

> 📌 复习资料原题。选择题和简答题都可能出现。

**题目**：说明微指令的三种编译法及其特点，并简述后继地址的产生方式。

**答案**：

**三种编译法**：

| 编译法 | 原理 | 优点 | 缺点 |
|--------|------|------|------|
| 直接控制法 | 操作控制字段每位直接对应一个微命令 | 不需译码，速度快 | 微指令字长很长 |
| 字段直接编译法 | 把控制信号分组编码，需译码器 | 缩短字长 | 同组信号互斥，不能并行 |
| 字段间接编译法 | 字段含义依赖于其他字段 | 进一步压缩字长 | 译码复杂，速度更慢 |

**后继地址产生方式**：

- **计数器方式（增量方式）**：用微程序计数器自动递增，顺序执行时效率高，转移时需要特殊处理。
- **判定方式（下址字段法）**：在微指令中直接给出下址，地址灵活但增加了字长。

### 真题4：硬布线控制器 vs 微程序控制器

> 📌 复习资料原题。对比题几乎是每次考试必考。

**题目**：比较硬布线控制器和微程序控制器的特点。

**答案**：

| 对比项 | 硬布线控制器 | 微程序控制器 |
|--------|-------------|-------------|
| 实现方式 | 组合逻辑电路直接产生控制信号 | 控制存储器ROM存放微程序 |
| 速度 | 快（信号直接由电路产生） | 较慢（需访问CM取微指令） |
| 设计难度 | 复杂，不规整 | 规整，类似编程 |
| 可修改性 | 难修改，改指令要改电路 | 易修改，改微程序即可 |
| 适用场景 | RISC处理器 | CISC处理器 |
| 现代趋势 | 常用于简单指令的加速 | 常用于复杂指令的实现 |

**补充**：现代高性能CPU通常混合使用两种方式——简单常用的指令用硬布线实现以获得更高性能，复杂不常用的指令用微程序实现以降低设计难度。

### 课后习题10.1

> 📌 教材课后习题，必做。

**题目**：什么是指令周期、机器周期和时钟周期？三者有什么关系？

**答案**：

- **指令周期**：从取出一条指令到执行完该指令所用的全部时间。一条指令的指令周期可能包含取指、间址、执行、中断等多个阶段。
- **机器周期**：也叫CPU周期，是完成一个基本操作（如取指、取操作数）所需的时间。一个指令周期由若干个机器周期组成。
- **时钟周期**：也叫节拍或T周期，是CPU时钟信号的最小时间单位。一个机器周期由若干个时钟周期（节拍）组成。

**关系**：时钟周期 ≤ 机器周期 ≤ 指令周期。一个指令周期包含若干机器周期，一个机器周期包含若干时钟周期。

### 课后习题10.2

> 📌 教材课后习题，必做。

**题目**：画出微程序控制器的组成框图，说明各部分的功能。

**答案**：

微程序控制器的核心组成：

| 部件 | 功能 |
|------|------|
| 控制存储器（CM） | 存放全部微程序，通常用ROM实现 |
| 微指令寄存器（CMIR） | 存放当前正在执行的微指令 |
| 微地址寄存器（CMAR） | 存放下一条微指令的地址 |
| 地址转移逻辑 | 根据判别测试字段和转移条件，修改微地址 |
| 控制信号输出 | 将微指令的操作控制字段直接作为控制信号输出到数据通路 |

**工作流程**：CMAR中的地址送CM读出微指令→微指令送CMIR→操作控制字段输出控制信号→顺序控制字段送地址转移逻辑→形成下一条微指令地址→送回CMAR→开始下一个周期。

---

## ⚡ 知识点速记卡

> 考前快速过一遍，30秒回忆整章核心
> 🔥 标注了考试高频考点和常见题型

**两种CU设计方法**：组合逻辑（硬布线，快但难改，适合RISC）vs 微程序（ROM存控制信号，灵活但慢，适合CISC）。现代CPU常混合使用。⭐ 对比题必考

**组合逻辑CU三部件**：操作码译码器（指令→控制信号）、节拍发生器（产生时序）、控制单元（综合输出）。

**组合逻辑设计步骤**：列微操作时间表→写逻辑表达式→化简→画电路。

**节拍安排三原则**：顺序原则（先MAR后读内存）、并行原则（不同部件可同时工作）、紧凑原则（短操作放同一节拍）。

**取指周期三拍**：T₀=PC→MAR+1→R，T₁=M(MAR)→MDR+(PC)+1→PC，T₂=MDR→IR+OP(IR)→ID。⭐ 每次必考

**微程序核心三概念**：微指令（一组控制信号）、微程序（微指令序列，一条机器指令对应一个微程序）、控制存储器CS（存微程序的ROM）。

**微指令三种编译法**：直接控制法（每位一个微命令，快但长）、字段直接编译法（编码，短但需译码）、字段间接编译法（字段间有依赖，更短但更慢）。⭐ 选择/简答常考

**后继地址两种方式**：计数器方式（自动递增，省空间）和下址字段法（直接给地址，灵活但占空间）。

**微指令格式位数计算**⭐⭐：下址字段=log₂(CM单元数)，判别测试字段=log₂(转移条件数)，微命令字段=总位数-前两者。例：512×48，4条件→9+2+37。这是最常见的计算题。

**微程序控制器原理**⭐⭐：开机→置取指地址→从CM取微指令→执行微操作→根据下址取下一条→循环直到指令完成→回到取指。

**水平型 vs 垂直型微指令**：水平型（位长，可并行多信号，快但占空间）vs 垂直型（位短，编码方式，省空间但慢）。

**微程序设计四步**：分析指令→设计微指令格式→编写微程序→固化到ROM。核心思想：用数据（ROM）代替逻辑（电路）。⭐ 教材414页举例是重点

**选择策略**：追求速度→组合逻辑（RISC），追求灵活→微程序（CISC）。现代CPU常混合使用。⭐ 对比题必考

---

## 🔗 相关链接

- [[00_计算机组成原理学习指南]] - 返回主目录
- [[09_控制单元功能]] - 上一章
- [[01_计算机系统概论]] - 返回第一章

---

## 📚 参考资料

- 教材：《计算机组成原理》第3版 - 唐朔飞
- 复习资料：计算机组成原理知识点总结
- 习题：作业三、作业四
- 真题来源：期中/期末考试、复习资料重点整理

---

*本章难度：⭐⭐⭐⭐⭐ 困难*
*重要程度：⭐⭐⭐⭐⭐ 重点*
*补充版本：增加了通俗解释、实际例子、例题、真题与作业精选、考试重点标注*
