# CPU结构与功能

> 计算机科学 · CIE A-Level
> 来源: https://www.owlsprep.com/zh/study/cie-9618-u4-cpu-structure-and-function/

本模块讲解CPU核心内部组件及其功能、寄存器和系统总线的作用，以及指令执行的基础流程——取指-译码-执行周期的分步运行过程。

**先修:** [基础计算机硬件知识](https://www.owlsprep.com/zh/study/cie-9618-u1-computer-hardware/)

## 学习目标

- 描述CPU的核心组件及其各自功能
- 解释通用专用寄存器在CPU运行中的作用
- 区分三种主要类型的系统总线
- 概述取指-译码-执行周期的完整流程

## CPU主要组件及其功能

CPU（中央处理器）是计算机的核心处理组件，负责执行所有程序指令。它有三个核心组成部分：算术逻辑单元（ALU）、控制单元（CU）和板载寄存器。

**算术逻辑单元（ALU）** — CPU中负责执行指令执行所需的所有算术运算（加、减、乘）和逻辑运算（与、或、非、比较）的组件。

*例:* 对寄存器中存储的两个值相加，或判断一个数是否大于另一个数。

控制单元（CU）协调CPU内部的所有活动。它对取出的指令进行译码，并向其他组件发送控制信号以触发所需操作。寄存器是直接内建于CPU的小型高速存储单元，用于存储当前正在立即处理的数据和地址。

**例题:** 一名学生认为ALU负责对指令译码。找出该错误，并陈述CPU主要组件的正确作用。

1. 步骤1：找出错误：指令译码不是ALU的功能，而是控制单元的功能。
2. 步骤2：陈述每个核心组件的正确作用：
3. - ALU：对数据执行所有算术和逻辑运算
4. - 控制单元：对指令译码，协调CPU运行活动
5. - 寄存器：存储立即处理的临时数据、地址和指令

> **考试提示:** 在带示意图的题目中，一定要将每个组件与其正确功能对应，才能拿满分。

## CPU专用寄存器

寄存器是计算机系统中速度最快的存储器，远快于缓存或RAM。大多数寄存器在指令执行过程中具有专属特定作用，CIE 9618要求你熟记最常见专用寄存器的功能。

**程序计数器（PC）** — 存放下一条要从主存取出的指令的内存地址的专用寄存器。每次取指后它会自动递增，指向序列中的下一条指令。

- **内存地址寄存器（MAR）：** 存放CPU想要读写的内存位置的地址。
- **内存数据寄存器（MDR）：** 存放刚从内存读出的数据，或等待写入内存的数据。
- **当前指令寄存器（CIR）：** 存放刚取出、等待译码的当前指令。
- **累加器（ACC）：** 存储ALU计算得到的中间结果。

**例题:** 解释CPU从主存读取数据时，MAR和MDR的作用差异。举一个例子说明。

1. 步骤1：阐明MAR的作用：MAR仅存储CPU需要访问的内存位置的*地址*，从不存储实际数据。
2. 步骤2：阐明MDR的作用：MAR将地址发送到主存后，该地址处的数据会返回并存储在MDR中，等待处理。
3. 步骤3：举例：如果CPU需要读取存储在内存地址 \$20A 处的指令，地址 \$20A 会被加载到MAR中。存储在 \$20A 处的指令从内存取出后存储在MDR中，准备译码。

## 系统总线

总线是共享的通信通路，用于在CPU组件之间，以及CPU和主存之间传输数据和控制信号。共有三种主要类型的系统总线，每种都有专属功能和传输方向。

**系统总线** — 连接CPU与主存和其他外设的三类主要总线的统称。

- **地址总线：** 从CPU向主存传输内存地址。它是单向的（仅从CPU流向内存）。
- **数据总线：** 在CPU和主存之间传输实际数据。它是双向的（数据可双向流动）。
- **控制总线：** 从CU向其他组件传输控制信号（例如读/写信号）。它是双向的，允许状态信号返回CPU。

**例题:** 某条总线传输了一个表示CPU想要向特定内存地址写入数据的信号。这是哪种类型的总线？解释为什么不是另外两种总线。

1. 步骤1：识别信号类型：这是一个表示CPU正在执行的操作类型的控制信号。
2. 步骤2：匹配正确总线类型：该信号由控制总线传输。
3. 步骤3：解释为什么不是另外两种总线：地址总线仅传输内存地址，不传输控制信号。数据总线仅传输实际传输的数据，因此二者都不传输操作类型信号。

## 取指-译码-执行周期

取指-译码-执行周期是CPU对每条程序指令执行的重复流程。从系统开机到关机，它持续运行，在基础的非流水线CPU中，每个完整周期处理一条指令。

**取指-译码-执行周期** — CPU从主存获取、译码并执行每条程序指令的顺序流程。

**例题:** 概述基础CPU中一个完整取指-译码-执行周期的全部步骤顺序。

1. 取指步骤1：程序计数器（PC）中存储的地址被复制到内存地址寄存器（MAR）
2. 取指步骤2：MAR中地址对应的指令从主存取出，存入内存数据寄存器（MDR）
3. 取指步骤3：PC的值加1，指向待取出的下一条指令的地址
4. 译码步骤1：MDR中的指令被复制到当前指令寄存器（CIR）
5. 译码步骤2：控制单元对指令的操作码译码，确定需要执行的操作
6. 执行步骤：控制单元向相关组件发送控制信号执行指令，所有结果存储在累加器或寄存器中

> **考试提示:** 当被要求描述该周期时，一定要提到每个寄存器在每个步骤中的作用才能拿满分。

## 常见错误

- **错误做法:** 认为程序计数器存储当前指令，而非下一条指令的地址
  - 原因: 常见的PC和当前指令寄存器功能混淆
  - 正确做法: PC = 下一条指令的地址；CIR = 存储当前正在译码的指令
- **错误做法:** 认为地址总线是双向的，或数据总线是单向的
  - 原因: 这是考试常考的总线方向性质混淆点
  - 正确做法: 地址总线 = 单向（CPU → 内存）；数据总线 = 双向（CPU ↔ 内存）
- **错误做法:** 认为MDR存储内存地址
  - 原因: 一直存在的MAR和MDR功能混淆
  - 正确做法: MAR存储内存地址；MDR存储从该地址取出的实际数据/指令
- **错误做法:** 忘记提到取指步骤后递增PC
  - 原因: 考生经常在考试答案中漏掉这个步骤，丢失容易拿的分数
  - 正确做法: 一定要明确说明取指后PC会递增，以指向下一条指令
- **错误做法:** 认为ALU对指令译码
  - 原因: 常见的ALU和控制单元功能混淆
  - 正确做法: 控制单元对指令译码；ALU执行算术和逻辑运算

## 速查表

| 组件 | 核心功能 |
| --- | --- |
| ALU | 执行算术和逻辑运算 |
| 控制单元 | 对指令译码，协调CPU活动 |
| PC | 存储待取出的下一条指令的地址 |
| MAR | 存储待访问内存位置的地址 |
| MDR | 存储从内存读出/要写入内存的数据/指令 |
| CIR | 存储当前正在译码的指令 |
| ACC | 存储计算中间结果 |
| 地址总线 | 传输内存地址，单向 |
| 数据总线 | 传输实际数据，双向 |
| 控制总线 | 传输控制信号，双向 |

## 下一步

理解CPU结构与功能是所有处理器基础主题的核心知识，几乎每次都会在CIE 9618的试卷1中考查，通常是一道4-6分的简答题。掌握这里讲解的寄存器功能和取指-译码-执行顺序，是理解更高级的性能优化主题的基础，这些主题都建立在本内容之上。接下来你将学习CISC和RISC CPU设计的区别、缓存如何提高CPU访问速度，以及流水线和并行处理如何提高指令吞吐量。

- [指令流水线](https://www.owlsprep.com/zh/study/cie-9618-u4-pipelining/)
- [指令集](https://www.owlsprep.com/zh/study/cie-9618-u4-instruction-set/)
- [寻址模式](https://www.owlsprep.com/zh/study/cie-9618-u4-addressing-modes/)

---

来自 [OwlsPrep](https://www.owlsprep.com) —— A-Level / IB / AP / IGCSE 免费学习指南，依据官方考纲编写。原页面：https://www.owlsprep.com/zh/study/cie-9618-u4-cpu-structure-and-function/
