10 KiB
10 KiB
第10章 控制单元的设计
📖 本章介绍控制单元的两种设计方法:组合逻辑设计和微程序设计。 🎯 重点理解微程序设计方法
📋 本章目录
10.1 组合逻辑设计
10.1.1 组合逻辑控制单元框图
graph TB
subgraph "组合逻辑控制单元"
IR[IR<br/>指令寄存器] --> |"操作码"| DEC[操作码译码器]
CLK[时钟] --> |"时钟信号"| TG[节拍发生器]
DEC --> |"译码输出"| CU[控制单元]
TG --> |"节拍信号"| CU
FLAG[标志] --> CU
CU --> |"控制信号"| CTRL[控制信号输出]
end
组成部分:
- 操作码译码器:将操作码译码,产生操作控制信号
- 节拍发生器:产生时序信号,控制微操作顺序
- 控制单元:根据译码结果和时序信号,产生控制信号
10.1.2 微操作的节拍安排
安排原则
- 顺序原则:有些微操作次序不能改变
- 并行原则:不同控制对象的微操作可并行执行
- 紧凑原则:时间短的微操作可安排在同一节拍
取指周期节拍安排
| 节拍 | 微操作 | 说明 |
|---|---|---|
| T₀ | PC → MAR, 1 → R | 地址送MAR,发读命令 |
| T₁ | M(MAR) → MDR, (PC)+1 → PC | 读指令,PC加1 |
| T₂ | MDR → IR, OP(IR) → ID | 指令送IR,译码 |
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₀ | Ad(IR) → MAR, 1 → R | 形式地址送MAR |
| T₁ | M(MAR) → MDR | 读有效地址 |
| T₂ | MDR → Ad(IR) | 有效地址送IR |
执行周期节拍安排
非访存指令
| 指令 | T₀ | T₁ | T₂ |
|---|---|---|---|
| CLA | 空 | 空 | 0 → ACC |
| COM | 空 | 空 | \overline{ACC} → ACC |
| SHR | 空 | 空 | L(ACC) → R(ACC) |
| CSL | 空 | 空 | R(ACC) → L(ACC) |
| STP | 空 | 空 | 0 → G |
访存指令
加法指令 ADD X:
| 节拍 | 微操作 |
|---|---|
| T₀ | Ad(IR) → MAR, 1 → R |
| T₁ | M(MAR) → MDR |
| T₂ | (ACC) + (MDR) → ACC |
存数指令 STA X:
| 节拍 | 微操作 |
|---|---|
| T₀ | Ad(IR) → MAR, 1 → W |
| T₁ | ACC → MDR |
| T₂ | MDR → M(MAR) |
取数指令 LDA X:
| 节拍 | 微操作 |
|---|---|
| T₀ | Ad(IR) → MAR, 1 → R |
| T₁ | M(MAR) → MDR |
| T₂ | MDR → ACC |
转移指令
无条件转移 JMP X:
| 节拍 | 微操作 |
|---|---|
| T₀ | 空 |
| T₁ | 空 |
| T₂ | Ad(IR) → PC |
条件转移 BAN X:
| 节拍 | 微操作 |
|---|---|
| T₀ | 空 |
| T₁ | 空 |
| T₂ | A₀·Ad(IR) + $\overline{A₀}$·(PC) → PC |
中断周期节拍安排
| 节拍 | 微操作 | 说明 |
|---|---|---|
| T₀ | 0 → MAR, 1 → W | 特定地址送MAR |
| T₁ | PC → MDR | 断点送MDR |
| T₂ | MDR → M(MAR), 向量地址 → PC | 存断点,置PC |
10.1.3 组合逻辑设计方法
设计步骤
graph TB
A[列出微操作时间表] --> B[写出微操作逻辑表达式]
B --> C[画出逻辑电路图]
C --> D[优化电路]
微操作逻辑表达式
取指周期:
- T₀:
PC \to MAR = T_0 \cdot FE - T₀:
1 \to R = T_0 \cdot FE - T₁:
M(MAR) \to MDR = T_1 \cdot FE - T₁:
(PC)+1 \to PC = T_1 \cdot FE - T₂:
MDR \to IR = T_2 \cdot FE - T₂:
OP(IR) \to ID = T_2 \cdot FE
加法指令 ADD X:
- T₀:
Ad(IR) \to MAR = T_0 \cdot ADD \cdot EX - T₀:
1 \to R = T_0 \cdot ADD \cdot EX - T₁:
M(MAR) \to MDR = T_1 \cdot ADD \cdot EX - T₂:
(ACC)+(MDR) \to ACC = T_2 \cdot ADD \cdot EX
逻辑电路实现
graph TB
subgraph "组合逻辑电路实现"
DEC[操作码译码器] --> |"ADD"| AND1[与门]
TG[节拍发生器] --> |"T0"| AND1
AND1 --> |"控制信号"| OR[或门]
FLAG[标志] --> AND1
OR --> |"最终控制信号"| CTRL[控制信号输出]
end
10.1.4 组合逻辑设计特点
| 优点 | 缺点 |
|---|---|
| 速度快 | 电路复杂 |
| 设计灵活 | 不易修改 |
| 适合RISC | 扩展困难 |
10.2 微程序设计
10.2.1 微程序设计思想
[!info] 核心思想 将每条机器指令的执行过程编写成一个微程序,存放在控制存储器中。
基本概念:
| 术语 | 定义 |
|---|---|
| 微命令 | 控制信号,控制微操作 |
| 微操作 | 由微命令控制的最基本操作 |
| 微指令 | 一组微命令的集合 |
| 微程序 | 微指令序列 |
| 控制存储器 | 存放微程序的存储器 |
graph TB
subgraph "微程序层次结构"
MACHINE[机器指令] --> |"对应"| MICRO_PROG[微程序]
MICRO_PROG --> |"包含"| MICRO_INST[微指令]
MICRO_INST --> |"包含"| MICRO_CMD[微命令]
MICRO_CMD --> |"控制"| MICRO_OP[微操作]
end
10.2.2 微程序控制单元框图
graph TB
subgraph "微程序控制单元"
IR[IR] --> |"操作码"| CMAR[控制存储器地址寄存器]
CMAR --> |"地址"| CM[控制存储器]
CM --> |"微指令"| CMDR[控制存储器数据寄存器]
CMDR --> |"微命令"| CTRL[控制信号]
CMDR --> |"下地址"| CMAR
SEQ[顺序逻辑] --> CMAR
end
组成部分:
- 控制存储器(CM):存放所有微程序
- 控制存储器地址寄存器(CMAR):存放微指令地址
- 控制存储器数据寄存器(CMDR):存放微指令
- 顺序逻辑:产生下条微指令地址
10.2.3 微指令格式
水平型微指令
graph LR
subgraph "水平型微指令"
CMD[操作控制字段] --> SEQ[顺序控制字段]
end
特点:
- 每个微命令占一位
- 并行性好,速度快
- 指令字长较长
垂直型微指令
graph LR
subgraph "垂直型微指令"
OP[操作码] --> ADDR[地址码]
end
特点:
- 类似机器指令格式
- 指令字长较短
- 并行性差,速度慢
混合型微指令
特点:
- 结合水平型和垂直型优点
- 兼顾速度和效率
10.2.4 微指令编码方式
1. 直接编码
特点:每个微命令占一位,控制字段直接对应控制信号
优点:简单,并行性好 缺点:指令字长较长
2. 字段直接编码
特点:将微命令分组,每组编码
原则:
- 互斥微命令在同一字段
- 相容微命令在不同字段
优点:减少指令字长 缺点:需要译码器
3. 字段间接编码
特点:一个字段的含义取决于另一个字段
优点:进一步减少指令字长 缺点:译码复杂
10.2.5 微地址形成方式
| 方式 | 说明 | 应用 |
|---|---|---|
| 计数器方式 | CMAR自动加1 | 顺序执行 |
| 下地址字段 | 微指令中直接给出下地址 | 分支跳转 |
| 操作码映射 | 根据机器指令操作码映射 | 微程序入口 |
| 测试条件 | 根据条件选择地址 | 条件分支 |
10.2.6 微程序设计举例
指令周期的微程序
graph TB
subgraph "取指周期微程序"
F1[PC → MAR, 1 → R] --> F2[M(MAR) → MDR, (PC)+1 → PC]
F2 --> F3[MDR → IR, OP(IR) → ID]
end
subgraph "执行周期微程序(加法指令)"
E1[Ad(IR) → MAR, 1 → R] --> E2[M(MAR) → MDR]
E2 --> E3[(ACC)+(MDR) → ACC]
end
F3 --> |"ADD"| E1
微程序流程图
graph TB
START[开始] --> FETCH[取指周期微程序]
FETCH --> DECODE[指令译码]
DECODE --> |"ADD"| ADD[加法微程序]
DECODE --> |"STA"| STA[存数微程序]
DECODE --> |"LDA"| LDA[取数微程序]
DECODE --> |"JMP"| JMP[转移微程序]
ADD --> END[结束]
STA --> END
LDA --> END
JMP --> END
10.2.7 动态微程序设计
[!info] 概念 微程序可根据需要动态改变,支持不同指令系统。
特点:
- 灵活性高
- 可支持不同指令集
- 硬件复杂
10.2.8 毫微程序设计
[!info] 概念 用毫微程序解释微指令,进一步提高灵活性。
层次结构:
- 机器指令 → 微程序解释
- 微指令 → 毫微程序解释
10.2.9 微程序设计特点
| 优点 | 缺点 |
|---|---|
| 规整性好 | 速度较慢 |
| 易于修改 | 需要控制存储器 |
| 灵活性高 | 硬件成本增加 |
| 适合CISC | 设计复杂 |
10.3 两种设计方法比较
| 特性 | 组合逻辑设计 | 微程序设计 |
|---|---|---|
| 速度 | 快 | 较慢 |
| 灵活性 | 差 | 好 |
| 规整性 | 差 | 好 |
| 修改 | 困难 | 容易 |
| 成本 | 较低 | 较高 |
| 应用 | RISC | CISC |
graph TB
subgraph "设计方法选择"
A[指令系统] --> B{复杂程度}
B -->|简单| C[组合逻辑设计]
B -->|复杂| D[微程序设计]
C --> E[RISC处理器]
D --> F[CISC处理器]
end
📝 本章小结
核心概念
- 组合逻辑设计:用组合逻辑电路实现控制单元
- 微程序设计:将控制信号编写成微程序
- 微指令格式:水平型、垂直型、混合型
- 微指令编码:直接编码、字段编码
关键公式
- 微指令字长:
L = \sum_{i=1}^{n} \lceil \log_2(m_i + 1) \rceil- n:字段数
- m_i:第i字段的微命令数
重点图示
[!summary] 必须掌握的内容
- 组合逻辑控制单元框图
- 微程序控制单元框图
- 微指令格式和编码方式
- 微程序流程图设计
🧪 自测练习
概念题
- 比较组合逻辑设计和微程序设计的优缺点。
- 说明微指令的编码方式。
- 解释微程序设计的基本原理。
设计题
- 设计一个简单指令的微程序。
- 画出微程序控制单元的框图。
🔗 相关链接
- 09_控制单元功能 - 上一章
- 08_CPU结构与功能 - CPU结构
- 07_指令系统 - 指令格式
- 00_计算机组成原理学习指南 - 返回主目录
本章难度:⭐⭐⭐⭐⭐ 困难 重要程度:⭐⭐⭐⭐⭐ 核心重点