Files
obsidian/计算机组成原理/学习笔记/09_控制单元功能.md

332 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第9章 控制单元的功能
> 📖 本章分析控制单元为完成不同指令所发出的各种微操作命令。
> 🎯 重点理解微操作命令和指令执行过程
---
## 📋 本章目录
- [[#9.1 微操作命令的分析]]
- [[#9.2 控制单元的功能]]
- [[#本章小结]]
---
## 9.1 微操作命令的分析
### 9.1.1 微操作命令的概念
> [!info] 定义
> 微操作命令是控制单元发出的最基本控制信号,控制计算机各部件完成相应操作。
**特点**
- 是最基本的操作,不可再分
- 由控制单元发出
- 控制数据通路和功能部件
### 9.1.2 指令周期的四个阶段
```mermaid
graph LR
A[指令周期] --> B[取指周期]
A --> C[间址周期]
A --> D[执行周期]
A --> E[中断周期]
```
### 9.1.3 取指周期的微操作
**操作序列**
| 步骤 | 微操作 | 说明 |
|------|--------|------|
| 1 | PC → MAR | 现行指令地址送MAR |
| 2 | 1 → R | 向主存发读命令 |
| 3 | M(MAR) → MDR | 指令从主存读至MDR |
| 4 | MDR → IR | 指令送指令寄存器 |
| 5 | OP(IR) → CU | 操作码送CU译码 |
| 6 | (PC) + 1 → PC | 程序计数器加1 |
```mermaid
sequenceDiagram
participant PC
participant MAR
participant MEM as 主存
participant MDR
participant IR
participant CU
PC->>MAR: PC → MAR
Note over MAR: 1 → R发读命令
MEM->>MDR: M(MAR) → MDR
MDR->>IR: MDR → IR
IR->>CU: OP(IR) → CU
Note over PC: (PC) + 1 → PC
```
### 9.1.4 间址周期的微操作
**操作序列**
| 步骤 | 微操作 | 说明 |
|------|--------|------|
| 1 | Ad(IR) → MAR | 形式地址送MAR |
| 2 | 1 → R | 向主存发读命令 |
| 3 | M(MAR) → MDR | 有效地址从主存读至MDR |
| 4 | MDR → Ad(IR) | 有效地址送IR地址字段 |
```mermaid
sequenceDiagram
participant IR
participant MAR
participant MEM as 主存
participant MDR
IR->>MAR: Ad(IR) → MAR
Note over MAR: 1 → R发读命令
MEM->>MDR: M(MAR) → MDR
MDR->>IR: MDR → Ad(IR)
```
### 9.1.5 执行周期的微操作
#### 1. 非访存指令
| 指令 | 微操作 | 说明 |
|------|--------|------|
| CLA | 0 → ACC | 清除累加器 |
| COM | $\overline{ACC}$ → ACC | 累加器取反 |
| SHR | L(ACC) → R(ACC), ACC₀ → ACC₀ | 算术右移 |
| CSL | R(ACC) → L(ACC), ACC₀ → ACCₙ | 循环左移 |
| STP | 0 → G | 停机 |
#### 2. 访存指令
##### 加法指令 ADD X
| 步骤 | 微操作 | 说明 |
|------|--------|------|
| 1 | Ad(IR) → MAR | 地址送MAR |
| 2 | 1 → R | 发读命令 |
| 3 | M(MAR) → MDR | 操作数读至MDR |
| 4 | (ACC) + (MDR) → ACC | 加法运算 |
##### 存数指令 STA X
| 步骤 | 微操作 | 说明 |
|------|--------|------|
| 1 | Ad(IR) → MAR | 地址送MAR |
| 2 | 1 → W | 发写命令 |
| 3 | ACC → MDR | 数据送MDR |
| 4 | MDR → M(MAR) | 数据写入主存 |
##### 取数指令 LDA X
| 步骤 | 微操作 | 说明 |
|------|--------|------|
| 1 | Ad(IR) → MAR | 地址送MAR |
| 2 | 1 → R | 发读命令 |
| 3 | M(MAR) → MDR | 数据读至MDR |
| 4 | MDR → ACC | 数据送累加器 |
#### 3. 转移类指令
| 指令 | 微操作 | 说明 |
|------|--------|------|
| JMP X | Ad(IR) → PC | 无条件转移 |
| BAN X | A₀·Ad(IR) + $\overline{A₀}$·(PC) → PC | 条件转移(负则转) |
### 9.1.6 中断周期的微操作
**操作序列**
| 步骤 | 微操作 | 说明 |
|------|--------|------|
| 1 | 0 → MAR | 特定地址送MAR |
| 2 | 1 → W | 发写命令 |
| 3 | PC → MDR | 断点送MDR |
| 4 | MDR → M(MAR) | 断点存入主存 |
| 5 | 向量地址 → PC | 中断服务程序入口送PC |
| 6 | 0 → EINT | 关中断 |
```mermaid
sequenceDiagram
participant PC
participant MAR
participant MDR
participant MEM as 主存
Note over MAR: 0 → MAR
Note over MAR: 1 → W发写命令
PC->>MDR: PC → MDR
MDR->>MEM: MDR → M(MAR)
Note over PC: 向量地址 → PC
Note over PC: 0 → EINT关中断
```
---
## 9.2 控制单元的功能
### 9.2.1 控制单元的外特性
```mermaid
graph TB
subgraph "控制单元CU"
INPUT[输入] --> CU[控制单元]
CU --> OUTPUT[输出]
end
subgraph "输入信号"
CLK[时钟]
INST[指令寄存器]
FLAG[标志]
INT[中断请求]
BUS[总线信号]
end
subgraph "输出信号"
CTRL[控制信号]
ADDR[地址信号]
DATA[数据信号]
end
CLK --> INPUT
INST --> INPUT
FLAG --> INPUT
INT --> INPUT
BUS --> INPUT
OUTPUT --> CTRL
OUTPUT --> ADDR
OUTPUT --> DATA
```
### 9.2.2 控制信号
**控制信号分类**
| 类型 | 说明 | 示例 |
|------|------|------|
| **操作控制信号** | 控制数据通路操作 | ALU操作、寄存器读写 |
| **时序控制信号** | 控制操作时序 | 时钟、节拍 |
| **总线控制信号** | 控制总线操作 | 总线请求、总线允许 |
### 9.2.3 控制信号举例
#### 取指周期的控制信号
| 时钟 | 控制信号 | 功能 |
|------|----------|------|
| T₀ | PCout, MARin | PC → MAR |
| T₁ | MemR, MARout | 读主存 |
| T₂ | MDRinE | M(MAR) → MDR |
| T₃ | MDRout, IRin | MDR → IR |
| T₄ | PC+1 | PC加1 |
#### 执行周期的控制信号(加法指令)
| 时钟 | 控制信号 | 功能 |
|------|----------|------|
| T₀ | IRout, MARin | Ad(IR) → MAR |
| T₁ | MemR, MARout | 读主存 |
| T₂ | MDRinE | M(MAR) → MDR |
| T₃ | MDRout, Yin | MDR → Y |
| T₄ | ADD, Zin | ACC + Y → Z |
| T₅ | Zout, ACCin | Z → ACC |
### 9.2.4 多级时序系统
```mermaid
graph TB
subgraph "多级时序系统"
MACHINE[机器周期] --> CLOCK[时钟周期]
CLOCK --> MICRO[微操作]
end
subgraph "时序关系"
T[指令周期] --> M1[机器周期1]
T --> M2[机器周期2]
T --> M3[机器周期3]
M1 --> C1[时钟周期T0]
M1 --> C2[时钟周期T1]
M1 --> C3[时钟周期T2]
end
```
**时序关系**
- **指令周期**:取出并执行一条指令的时间
- **机器周期**:完成一个基本操作的时间
- **时钟周期**:最基本的时序单位
### 9.2.5 控制方式
#### 1. 同步控制方式
> [!info] 特点
> 所有操作由统一时钟控制,时序固定。
**优点**:设计简单,可靠性高
**缺点**:效率低,不灵活
#### 2. 异步控制方式
> [!info] 特点
> 操作按需进行,采用应答方式。
**优点**:效率高,灵活
**缺点**:设计复杂
#### 3. 联合控制方式
> [!info] 特点
> 同步和异步结合,大部分操作同步,特殊操作异步。
**应用**:现代计算机常用
---
## 📝 本章小结
### 核心概念
1. **微操作命令**:最基本的控制信号
2. **指令周期**:取指周期、间址周期、执行周期、中断周期
3. **控制信号**:控制数据通路和功能部件
4. **时序系统**:机器周期、时钟周期
### 重点图示
> [!summary] 必须掌握的内容
> 1. 指令周期四个阶段的微操作序列
> 2. 控制单元的外特性
> 3. 多级时序系统
> 4. 各类指令的控制信号
---
## 🧪 自测练习
### 概念题
1. 说明微操作命令的概念和特点。
2. 比较指令周期四个阶段的微操作。
3. 解释控制信号的作用和分类。
### 分析题
1. 写出加法指令的微操作序列。
2. 设计取指周期的控制信号。
---
## 🔗 相关链接
- [[08_CPU结构与功能]] - 上一章
- [[10_控制单元设计]] - 下一章
- [[07_指令系统]] - 指令格式
---
*本章难度:⭐⭐⭐⭐ 中等偏难*
*重要程度:⭐⭐⭐⭐ 重点*