# 第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_控制单元设计]] - 控制单元设计

---

*本章难度：⭐⭐⭐⭐⭐ 困难*
*重要程度：⭐⭐⭐⭐⭐ 重点*
