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 所有大题的语义基础:题目描述某个部件的行为时,要能立刻定位到它在这五项功能里承担哪一项。

链接