350 lines
14 KiB
Markdown
350 lines
14 KiB
Markdown
|
|
# 第8章 CPU的结构和功能
|
|||
|
|
|
|||
|
|
> 📖 本章介绍CPU的功能、内部结构和指令执行过程。
|
|||
|
|
> 🎯 重点理解CPU组成和指令周期
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 本章目录
|
|||
|
|
|
|||
|
|
- [[#8.1 CPU的结构]]
|
|||
|
|
- [[#8.2 指令周期]]
|
|||
|
|
- [[#8.3 指令流水]]
|
|||
|
|
- [[#8.4 中断系统]]
|
|||
|
|
- [[#本章小结]]
|
|||
|
|
- [[#例题与解析]]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8.1 CPU的结构
|
|||
|
|
|
|||
|
|
### 8.1.1 CPU的功能
|
|||
|
|
|
|||
|
|
> [!info] 核心功能
|
|||
|
|
> CPU负责协调并控制计算机各部件执行程序的指令序列。
|
|||
|
|
|
|||
|
|
**基本功能**:
|
|||
|
|
|
|||
|
|
| 功能 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| **指令控制** | 控制程序的顺序执行 |
|
|||
|
|
| **操作控制** | 产生完成每条指令所需的控制命令 |
|
|||
|
|
| **时间控制** | 对各种操作加以时间上的控制 |
|
|||
|
|
| **数据加工** | 对数据进行算术运算和逻辑运算 |
|
|||
|
|
| **中断处理** | 处理异常情况和特殊请求 |
|
|||
|
|
|
|||
|
|
CPU就像公司的大脑:指令控制按顺序执行程序,像总经理按顺序安排工作;操作控制产生控制信号,像总经理发出工作指令;时间控制控制操作时序,像总经理控制工作进度;数据加工进行各种运算,像员工处理数据;中断处理处理紧急事件,像总经理处理紧急情况。
|
|||
|
|
|
|||
|
|
### 8.1.2 CPU结构框图
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
subgraph "CPU内部结构"
|
|||
|
|
subgraph "运算器"
|
|||
|
|
ALU[ALU<br/>算术逻辑单元]
|
|||
|
|
ACC[ACC<br/>累加寄存器]
|
|||
|
|
PSW[PSW<br/>程序状态字]
|
|||
|
|
REG[通用寄存器组]
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
subgraph "控制器"
|
|||
|
|
CU[CU<br/>控制单元]
|
|||
|
|
PC[PC<br/>程序计数器]
|
|||
|
|
IR[IR<br/>指令寄存器]
|
|||
|
|
MAR[MAR<br/>存储器地址寄存器]
|
|||
|
|
MDR[MDR<br/>存储器数据寄存器]
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ALU <--> |"数据"| REG
|
|||
|
|
ALU <--> |"数据"| ACC
|
|||
|
|
CU --> |"控制信号"| ALU
|
|||
|
|
CU --> |"控制信号"| REG
|
|||
|
|
PC --> |"地址"| MAR
|
|||
|
|
IR --> |"指令"| CU
|
|||
|
|
MAR <--> |"地址"| MEM[主存]
|
|||
|
|
MDR <--> |"数据"| MEM
|
|||
|
|
|
|||
|
|
style ALU fill:#ff9999
|
|||
|
|
style CU fill:#99ccff
|
|||
|
|
style PC fill:#99ff99
|
|||
|
|
style IR fill:#ffcc99
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
CPU结构就像公司的组织架构:运算器中,ALU(算术逻辑单元)是生产车间负责加工产品,ACC(累加寄存器)是操作台临时存放加工中的产品,PSW(程序状态字)是状态指示灯显示当前工作状态,通用寄存器组是工具箱存放常用工具。控制器中,CU(控制单元)是总经理指挥整个公司运转,PC(程序计数器)是任务清单记录下一个要执行的任务,IR(指令寄存器)是当前任务单记录正在执行的任务,MAR(存储器地址寄存器)是仓库地址簿记录要访问的仓库位置,MDR(存储器数据寄存器)是传送带传送仓库和车间之间的物品。
|
|||
|
|
|
|||
|
|
当你执行一条加法指令时:PC记录下一条指令的地址,IR存放当前加法指令,CU译码并发出控制信号,ALU执行加法运算,ACC存放运算结果,PSW记录运算状态。
|
|||
|
|
|
|||
|
|
### 8.1.3 CPU的寄存器
|
|||
|
|
|
|||
|
|
#### 用户可见寄存器
|
|||
|
|
|
|||
|
|
| 寄存器类型 | 功能 | 示例 |
|
|||
|
|
|------------|------|------|
|
|||
|
|
| **通用寄存器** | 可编程使用,存放操作数 | AX, BX, CX, DX |
|
|||
|
|
| **数据寄存器** | 存放操作数 | 数据寄存器 |
|
|||
|
|
| **地址寄存器** | 存放地址 | 基址寄存器、变址寄存器 |
|
|||
|
|
| **条件码寄存器** | 存放运算结果状态 | Z(零)、C(进位)、S(符号)、O(溢出) |
|
|||
|
|
|
|||
|
|
通用寄存器像员工可以使用的工具,可编程使用存放各种数据;数据寄存器专门存放数据;地址寄存器专门存放地址;条件码寄存器记录运算结果的状态。
|
|||
|
|
|
|||
|
|
#### 控制和状态寄存器
|
|||
|
|
|
|||
|
|
| 寄存器 | 功能 | 可见性 |
|
|||
|
|
|--------|------|--------|
|
|||
|
|
| **PC** | 程序计数器,存放现行指令地址 | 用户可见 |
|
|||
|
|
| **IR** | 指令寄存器,存放当前指令 | 用户不可见 |
|
|||
|
|
| **MAR** | 存储器地址寄存器 | 用户不可见 |
|
|||
|
|
| **MDR** | 存储器数据寄存器 | 用户不可见 |
|
|||
|
|
| **PSW** | 程序状态字寄存器 | 部分可见 |
|
|||
|
|
|
|||
|
|
PC(程序计数器)记录下一个要执行的任务,执行完一个任务后自动指向下一个任务,遇到跳转指令时指向跳转目标。IR(指令寄存器)记录正在执行的任务,包含操作码(要做什么)和地址码(操作数在哪里),操作码送给CU译码。MAR(存储器地址寄存器)记录要访问的仓库位置,把地址送到仓库。MDR(存储器数据寄存器)传送仓库和车间之间的物品。PSW(程序状态字寄存器)显示当前工作状态,包括条件码、中断屏蔽位等。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8.2 指令周期
|
|||
|
|
|
|||
|
|
### 8.2.1 指令周期的基本概念
|
|||
|
|
|
|||
|
|
> [!info] 定义
|
|||
|
|
> 指令周期是指从取指令到执行完该指令所需的全部时间。
|
|||
|
|
|
|||
|
|
**指令周期的组成**:
|
|||
|
|
- **取指周期**:取指令的时间
|
|||
|
|
- **执行周期**:执行指令的时间
|
|||
|
|
|
|||
|
|
指令周期就像完成一个任务的时间:取指周期是从仓库取任务单的时间,执行周期是执行任务的时间。简单指令取指周期+执行周期,复杂指令取指周期+多个执行周期。
|
|||
|
|
|
|||
|
|
### 8.2.2 指令周期的时序
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
A[取指周期] --> B[执行周期]
|
|||
|
|
B --> C[取指周期]
|
|||
|
|
C --> D[执行周期]
|
|||
|
|
D --> E[...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**时序信号**:
|
|||
|
|
- **时钟周期**:CPU的最小时间单位
|
|||
|
|
- **机器周期**:完成一个基本操作的时间
|
|||
|
|
- **指令周期**:完成一条指令的时间
|
|||
|
|
|
|||
|
|
时钟周期像CPU的最小工作时间单位,1GHz CPU的时钟周期是1ns;机器周期完成一个基本操作的时间,通常包含几个时钟周期;指令周期完成一条指令的时间,根据指令类型不同而不同。
|
|||
|
|
|
|||
|
|
### 8.2.3 指令执行过程
|
|||
|
|
|
|||
|
|
**取指周期**:
|
|||
|
|
1. PC → MAR → 地址总线
|
|||
|
|
2. CU发出读命令
|
|||
|
|
3. 存储器 → 数据总线 → MDR
|
|||
|
|
4. MDR → IR
|
|||
|
|
5. PC + 1 → PC
|
|||
|
|
|
|||
|
|
**执行周期**:
|
|||
|
|
1. IR的操作码 → CU译码
|
|||
|
|
2. CU发出控制信号
|
|||
|
|
3. 执行指令操作
|
|||
|
|
|
|||
|
|
取指周期像从仓库取任务单:把任务单地址送到仓库地址簿,告诉仓库要取任务单,仓库把任务单送到传送带,任务单送到当前任务单,任务清单指向下一个任务。执行周期像执行任务:总经理看任务单决定要做什么,总经理发出工作指令,员工执行任务。
|
|||
|
|
|
|||
|
|
当你执行一条加法指令时:取指周期从内存取加法指令到CPU,执行周期执行加法运算。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8.3 指令流水
|
|||
|
|
|
|||
|
|
### 8.3.1 流水线的基本概念
|
|||
|
|
|
|||
|
|
> [!info] 定义
|
|||
|
|
> 流水线是指将指令执行过程分成多个阶段,多个指令可以同时在不同阶段执行。
|
|||
|
|
|
|||
|
|
**流水线的阶段**:
|
|||
|
|
- **取指(IF)**:取指令
|
|||
|
|
- **译码(ID)**:译码指令
|
|||
|
|
- **执行(EX)**:执行指令
|
|||
|
|
- **访存(MEM)**:访问存储器
|
|||
|
|
- **写回(WB)**:写回结果
|
|||
|
|
|
|||
|
|
流水线就像工厂的生产线:取指从仓库取原材料,译码看图纸决定要做什么,执行加工产品,访存从仓库取需要的材料,写回把成品放到仓库。多个指令可以同时在不同阶段执行,提高吞吐率和效率。
|
|||
|
|
|
|||
|
|
### 8.3.2 流水线的性能
|
|||
|
|
|
|||
|
|
**吞吐率**:
|
|||
|
|
$$TP = \frac{n}{k + (n-1)}$$
|
|||
|
|
|
|||
|
|
**加速比**:
|
|||
|
|
$$S = \frac{nk}{k + (n-1)}$$
|
|||
|
|
|
|||
|
|
**效率**:
|
|||
|
|
$$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
|
|||
|
|
|
|||
|
|
流水线性能像工厂的生产效率:吞吐率是单位时间完成的任务数,加速比是流水线比非流水线快多少倍,效率是流水线的利用率。
|
|||
|
|
|
|||
|
|
假设流水线有4个阶段,执行100条指令:吞吐率100/(4+99)=0.97条/周期,加速比100×4/(4+99)=3.88,效率3.88/4=97%。
|
|||
|
|
|
|||
|
|
### 8.3.3 流水线冲突
|
|||
|
|
|
|||
|
|
**结构冲突**:硬件资源不足,两个指令同时访问同一个存储器,增加硬件资源解决。
|
|||
|
|
|
|||
|
|
**数据冲突**:指令之间有数据依赖,后面的指令需要前面指令的结果,数据旁路或流水线暂停解决。
|
|||
|
|
|
|||
|
|
**控制冲突**:分支指令改变程序流,跳转指令导致流水线需要重新取指,分支预测或延迟分支解决。
|
|||
|
|
|
|||
|
|
结构冲突像两个工人都要用同一个工具,多买几个工具解决;数据冲突像上一个产品还没做完下一个产品需要它的零件,等做完或先做其他产品解决;控制冲突像突然改变生产计划,提前预测或等确定后再生产解决。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8.4 中断系统
|
|||
|
|
|
|||
|
|
### 8.4.1 中断系统的基本功能
|
|||
|
|
|
|||
|
|
**主要功能**:
|
|||
|
|
1. **中断请求**:接收中断请求信号
|
|||
|
|
2. **中断判优**:决定哪个中断先处理
|
|||
|
|
3. **中断响应**:响应中断请求
|
|||
|
|
4. **中断处理**:执行中断服务程序
|
|||
|
|
5. **中断返回**:返回原程序
|
|||
|
|
|
|||
|
|
中断系统像公司的紧急事件处理系统:中断请求接收紧急事件报告,中断判优决定先处理哪个紧急事件,中断响应决定处理紧急事件,中断处理执行紧急事件处理程序,中断返回返回原工作。
|
|||
|
|
|
|||
|
|
### 8.4.2 中断系统的实现
|
|||
|
|
|
|||
|
|
**硬件实现**:
|
|||
|
|
- **中断请求触发器**:保存中断请求信号
|
|||
|
|
- **中断屏蔽触发器**:控制中断是否被屏蔽
|
|||
|
|
- **中断判优电路**:决定中断优先级
|
|||
|
|
- **中断向量表**:存放中断服务程序入口地址
|
|||
|
|
|
|||
|
|
**软件实现**:
|
|||
|
|
- **中断服务程序**:处理中断的程序
|
|||
|
|
- **中断处理流程**:中断处理的步骤
|
|||
|
|
|
|||
|
|
硬件实现像紧急事件处理流程:中断请求触发器是紧急事件报告箱,中断屏蔽触发器是请勿打扰标志,中断判优电路是紧急事件分类器,中断向量表是紧急事件处理手册。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 本章小结
|
|||
|
|
|
|||
|
|
### 核心概念
|
|||
|
|
|
|||
|
|
1. **CPU功能**:指令控制、操作控制、时间控制、数据加工、中断处理
|
|||
|
|
2. **CPU结构**:运算器、控制器、寄存器
|
|||
|
|
3. **指令周期**:取指周期、执行周期
|
|||
|
|
4. **指令流水**:提高CPU效率的重要技术
|
|||
|
|
5. **中断系统**:处理紧急事件的机制
|
|||
|
|
|
|||
|
|
### 关键术语
|
|||
|
|
|
|||
|
|
| 术语 | 英文 | 含义 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| CPU | Central Processing Unit | 中央处理器 |
|
|||
|
|
| ALU | Arithmetic Logic Unit | 算术逻辑单元 |
|
|||
|
|
| CU | Control Unit | 控制单元 |
|
|||
|
|
| PC | Program Counter | 程序计数器 |
|
|||
|
|
| IR | Instruction Register | 指令寄存器 |
|
|||
|
|
| 流水线 | Pipeline | 指令流水 |
|
|||
|
|
| 中断 | Interrupt | 紧急事件处理 |
|
|||
|
|
|
|||
|
|
### 重点图示
|
|||
|
|
|
|||
|
|
> [!summary] 必须掌握的图
|
|||
|
|
> 1. CPU内部结构图
|
|||
|
|
> 2. 指令周期时序图
|
|||
|
|
> 3. 流水线示意图
|
|||
|
|
> 4. 中断处理流程图
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧪 例题与解析
|
|||
|
|
|
|||
|
|
### 例题1:CPU功能分析
|
|||
|
|
|
|||
|
|
**题目**:简述CPU的五大功能。
|
|||
|
|
|
|||
|
|
**答案**:
|
|||
|
|
|
|||
|
|
CPU的五大功能:指令控制控制程序的顺序执行,像总经理按顺序安排工作;操作控制产生完成每条指令所需的控制信号,像总经理发出工作指令;时间控制对各种操作加以时间上的控制,像总经理控制工作进度;数据加工对数据进行算术运算和逻辑运算,像员工处理数据;中断处理处理异常情况和特殊请求,像总经理处理紧急情况。
|
|||
|
|
|
|||
|
|
### 例题2:指令周期计算
|
|||
|
|
|
|||
|
|
**题目**:某CPU主频为1GHz,取指周期为4个时钟周期,执行周期为6个时钟周期,求执行100条指令所需时间。
|
|||
|
|
|
|||
|
|
**答案**:
|
|||
|
|
|
|||
|
|
主频1GHz=10⁹Hz,时钟周期1/10⁹=1ns。
|
|||
|
|
取指周期4个时钟周期=4ns,执行周期6个时钟周期=6ns。
|
|||
|
|
单条指令时间=4+6=10ns。
|
|||
|
|
100条指令时间=100×10ns=1000ns=1μs。
|
|||
|
|
|
|||
|
|
### 例题3:流水线性能计算
|
|||
|
|
|
|||
|
|
**题目**:某CPU有4级流水线,执行100条指令,求吞吐率、加速比和效率。
|
|||
|
|
|
|||
|
|
**答案**:
|
|||
|
|
|
|||
|
|
流水线阶段数k=4,指令数n=100。
|
|||
|
|
吞吐率TP=100/(4+99)=0.97条/周期。
|
|||
|
|
加速比S=100×4/(4+99)=3.88。
|
|||
|
|
效率E=3.88/4=97%。
|
|||
|
|
|
|||
|
|
### 例题4:流水线冲突分析
|
|||
|
|
|
|||
|
|
**题目**:分析以下指令序列中的数据冲突:
|
|||
|
|
```
|
|||
|
|
ADD R1, R2, R3 ; R1 = R2 + R3
|
|||
|
|
SUB R4, R1, R5 ; R4 = R1 - R5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**答案**:
|
|||
|
|
|
|||
|
|
ADD指令产生R1的值,SUB指令需要R1的值。如果ADD指令还没执行完SUB指令就需要R1的值,就会发生数据冲突。
|
|||
|
|
|
|||
|
|
解决方案:数据旁路(ADD指令执行完后直接把结果传给SUB指令)或流水线暂停(等ADD指令执行完后再执行SUB指令)。
|
|||
|
|
|
|||
|
|
### 例题5:中断系统设计
|
|||
|
|
|
|||
|
|
**题目**:设计一个简单的中断系统,支持4个中断源。
|
|||
|
|
|
|||
|
|
**答案**:
|
|||
|
|
|
|||
|
|
中断请求:4个中断请求触发器(IR0-IR3)保存中断请求信号。
|
|||
|
|
中断屏蔽:4个中断屏蔽触发器(IM0-IM3)控制中断是否被屏蔽。
|
|||
|
|
中断判优:优先级编码器,IR0>IR1>IR2>IR3。
|
|||
|
|
中断响应:中断响应信号(INTA),CPU响应中断请求。
|
|||
|
|
中断向量表:4个中断向量,存放中断服务程序入口地址。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚡ 知识点速记卡
|
|||
|
|
|
|||
|
|
> 考前快速过一遍,30秒回忆整章核心
|
|||
|
|
|
|||
|
|
**CPU五大功能**:指令控制(顺序执行)、操作控制(发控制信号)、时间控制(时序)、数据加工(ALU运算)、中断处理。
|
|||
|
|
|
|||
|
|
**CPU内部关键寄存器**:PC(下条指令地址)、IR(当前指令)、MAR(访存地址)、MDR(访存数据)、PSW(程序状态)、ACC(累加器)、通用寄存器组。
|
|||
|
|
|
|||
|
|
**指令周期四阶段**:取指周期(所有指令都有)→ 间址周期(间接寻址才有)→ 执行周期(都有)→ 中断周期(有中断才有)。
|
|||
|
|
|
|||
|
|
**流水线五阶段**:IF(取指)→ ID(译码)→ EX(执行)→ MEM(访存)→ WB(写回)。
|
|||
|
|
|
|||
|
|
**流水线公式**:吞吐率 TP = n/(k+n-1),加速比 S = nk/(k+n-1)。n=100条、k=4级 → TP≈0.97,S≈3.88。
|
|||
|
|
|
|||
|
|
**流水线三种冲突**:结构冲突(争硬件,加资源)、数据冲突(数据依赖,旁路或暂停)、控制冲突(分支跳转,预测或延迟)。
|
|||
|
|
|
|||
|
|
**中断系统**:中断请求触发器保存请求,中断屏蔽触发器控制屏蔽,中断判优电路决定优先级,中断向量表存入口地址。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔗 相关链接
|
|||
|
|
|
|||
|
|
- [[00_计算机组成原理学习指南]] - 返回主目录
|
|||
|
|
- [[07_指令系统]] - 上一章
|
|||
|
|
- [[09_控制单元功能]] - 下一章
|
|||
|
|
- [[10_控制单元设计]] - 控制单元设计
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
|||
|
|
*重要程度:⭐⭐⭐⭐⭐ 重点*
|