CPU 的功能
第 4 章交出了一份指令集:每条指令长什么样、操作数从哪来、一段 C 代码会变成什么样的指令序列。那份清单是契约,规定了”必须能做什么”,但没有说”靠什么做到”。
第 5 章从契约的另一侧开始:造一台能兑现这份契约的机器。
这一节列出的五项功能,看起来像一张要背的清单。它的真正用处是当作全章的目录——五项功能不是并列的知识点,而是本章七个二级节各自要解决的问题。把这张对照关系建立起来,后面每一节在整章里的位置就是确定的。
机制
五项功能
CPU 是运算器和控制器的合称。教材列的五项功能,其中四项归控制器,一项归运算器:
| 功能 | 归属部件 | 解决的问题 | 本章哪一节 |
|---|---|---|---|
| 指令控制 | 控制器 | 下一条执行哪条指令——取指、分析、顺序控制 | 5.2 |
| 操作控制 | 控制器 | 这条指令要发出哪些控制信号 | 5.4 |
| 时间控制 | 控制器 | 每个信号在哪一拍发出、持续多久 | 5.2.3、5.4.2 |
| 数据加工 | 运算器 | 对数据做算术逻辑运算 | 第 2 章 + 5.3.2 |
| 中断处理 | 控制器 | 处理执行过程中的异常与外部请求 | 5.5 |
五项里有三项(指令控制、操作控制、时间控制)常被混作一团,因为它们都由控制器承担、都和”控制”有关。但它们的分界线非常清楚,而且这条分界线就是 5.2 和 5.3/5.4 的分工。
指令控制与操作控制:分界线在”指令内 / 指令间”
这是本节最容易读滑过去、又最值得停下来的一处。
- 指令控制管指令之间:这条指令做完了,下一条是哪一条?是 PC 加 1,还是转移目标,还是中断服务程序的入口?它的输出是一个地址。
- 操作控制管指令之内:为了完成这一条指令,要依次打开哪些寄存器的输出、选通哪条通路、让 ALU 做哪种运算?它的输出是一组控制信号。
粒度差了整整一级:指令控制以”一条指令”为单位,操作控制以”一次微操作”为单位。 一条指令的执行 = 若干次微操作,所以一次指令控制决策的下面,挂着几十次操作控制决策。
时间控制是第三层,它不决定”发什么”,只决定”什么时候发”。同样一组控制信号,单周期方案里挤在一拍发完,多周期方案里分几拍发——发的内容一样,节奏不同。这就是 5.2.3 指令执行方案的全部内容。
疑问点:进入 CPU 这一章,先要一份能提纲挈领的大纲
这一章的骨架不是七个二级节并列,而是一条”控制信号从哪来”的链,加上一条”并行度怎么往上叠”的链。
主线一(5.1 → 5.4):控制信号溯源链。
指令 → 操作码 → 控制器译码 → 一组控制信号 → 数据通路上的一个开关 → 一次微操作。
这条链上的每一环各占一节:5.1 摆出参与的部件和寄存器,5.2 说明这条链每执行一轮叫一个指令周期,5.3 说明链的末端(数据通路)长什么样、开关都有哪些,5.4 说明链的中段(控制器)怎样把操作码变成控制信号。5.5 是这条链的例外分支——控制流不再由指令决定,而是被异常或中断打断。
主线二(5.6 → 5.7):并行度的三个层次。
指令级(流水线、超标量)→ 数据级(SIMD、向量)→ 线程级(硬件多线程、多核、多处理器)。判据是”复制了什么、共享了什么”,在 5.7.1 立表统一处理。
前五节回答”怎样把一条指令做对”,后两节回答”怎样把很多条指令做快”。做对和做快是两个独立的问题——这就是为什么 5.6 一上来要先说清楚流水线不缩短单条指令的时间。
数据加工:本章唯一属于运算器的功能
运算的”怎么算”在第 2 章已经讲完了——2.2.3 补码加减运算、2.2.4 乘除运算、2.3.2 浮点数的加减运算,ALU 本身的内部结构在 2.2.1 基本运算部件。第 5 章不重复这些,只关心ALU 作为数据通路上的一个部件:它有几个输入端、输出接到哪、由哪个控制信号选择功能、产生的标志位存到哪里。
这个视角切换很重要。第 2 章把 ALU 当作一个要设计的电路,第 5 章把它当作一个只有接口的黑盒。 5.3 的数据通路题里,ALU 的内部结构从不出现,出现的只有 ALUop 这根控制信号有几位。
中断处理:为什么它是 CPU 的功能而不是操作系统的功能
初看这一项和其他四项不是一个层面的东西——前四项都在描述”执行指令”的机械过程,中断处理却牵涉到操作系统。
分界线在于:识别和响应是硬件的事,处理是软件的事。
| 阶段 | 谁做 | 内容 |
|---|---|---|
| 检测 | 硬件 | 每条指令末尾查一次中断请求线 |
| 响应 | 硬件(中断隐指令) | 关中断、保存断点、转入口地址 |
| 处理 | 软件(中断服务程序) | 保存现场、执行处理逻辑、恢复现场 |
| 返回 | 软件发起,硬件完成 | IRET 恢复 PC 和 PSW |
中间那道”响应”由一段没有指令编码的硬件动作完成,称为中断隐指令——它是本章最能体现”CPU 的功能”这个说法的地方:它不由任何一条程序里的指令触发,而是 CPU 自己的行为。详见 5.5.3。
跨到操作系统那边,这一分工在 OS 1.3.2 中断和异常里被复述为同一件事的软件视角。两科讲的是同一个机制,切口不同:CO 讲硬件怎样把控制权交出去,OS 讲拿到控制权之后怎么用。
边界
层次辨析:指令控制 / 操作控制 / 时间控制
三者都由控制器承担,判据是**“决定什么”**:
- 指令控制决定下一条指令的地址(指令间,输出是地址)
- 操作控制决定这一拍发哪些信号(指令内,输出是信号)
- 时间控制决定这些信号分几拍发(输出是时序)
一道题问”CPU 的哪项功能保证指令按序执行”,答指令控制;问”哪项功能产生控制信号”,答操作控制;问”哪项功能确定机器周期长度”,答时间控制。
边界辨析:CPU 的功能 ≠ CPU 的组成
功能是五项,组成是两大部件(运算器、控制器)加寄存器组。功能与部件不是一一对应:控制器一个部件承担了四项功能,运算器一个部件只承担一项。
题目若问”CPU 由什么组成”,答运算器 + 控制器(寄存器分属两者,Cache 在现代 CPU 中也已片内集成,但按 408 口径不列入 CPU 的基本组成,见 5.1.2)。
CPU 不负责的三件事,容易在概念题里被当作 CPU 的功能:
- 存储数据——寄存器存的是当前正在用的数据,主存和外存的管理不归 CPU(3.1.3)
- 控制外设的动作细节——那是 I/O 接口和设备控制器的事(7.2.1),CPU 只发命令、收状态
- 总线仲裁——多主设备争总线时的判优逻辑在总线控制器里(6.2.1),DMA 方式下 CPU 甚至是被夺走总线的那一方
对照速查
| 说法 | 对应功能 | 常见误配 |
|---|---|---|
| 保证指令按规定顺序执行 | 指令控制 | 误答”操作控制” |
| 根据操作码产生各部件的控制信号 | 操作控制 | 误答”指令控制” |
| 确定每个微操作在第几拍执行 | 时间控制 | 误答”操作控制” |
| 完成加减乘除与逻辑运算 | 数据加工 | —— |
| 检测到除零后转入处理程序 | 中断处理 | 误答”操作控制” |
| CPU 组成 | 属于 | 说明 |
|---|---|---|
| ALU、移位器、通用寄存器组、标志寄存器 | 运算器 | 数据的加工与暂存 |
| PC、IR、指令译码器、时序系统、控制信号形成部件 | 控制器 | 指令的解释与信号的生成 |
| MAR、MDR | 接口(习惯上归控制器一侧) | CPU 与主存的界面,见 5.1.3 |
考点
- 五项功能与部件的对应:选择题直接问”下列哪项不是 CPU 的功能”,常见干扰项是”存储程序和数据""控制外设的具体动作”。
- 指令控制与操作控制的分辨:给一句描述,问属于哪项功能。判据看输出是地址还是信号。
- 中断处理的软硬件分工:问”下列哪些由硬件完成”,答检测、响应(关中断、保存断点、转入口),不含保存现场。
- 本节很少单独出大题,但它是 5.2~5.5 所有大题的语义基础:题目描述某个部件的行为时,要能立刻定位到它在这五项功能里承担哪一项。
链接
- 🏠 返回总览:计算机组成原理第 5 章:中央处理器总览
- ➡️ 下一节:5.1.2 CPU 的基本结构
- ⬅️ 上一章收口:4.1.5 指令的操作类型——那张指令类型表就是本章数据通路必须提供的功能清单
- 📐 性能三因子:1.3.1 计算机的主要性能指标
- 🔗 OS 对照:OS 1.3.2 中断和异常
- 📖 名词库:第 5 章名词库