计算机组成原理第 5 章:中央处理器总览
这一页只负责导航,不装内容。每个节号点进去就是那一节的完整讲义。
第 4 章交出了一份指令集——那是契约,规定了”必须能做什么”。第 5 章造出兑现这份契约的机器。
全章结构不是七个二级节并列,而是两条主线:
主线一(5.1 → 5.4)控制信号溯源链。
链上每一环各占一节:5.1 摆出参与的部件和寄存器 → 5.2 说明这条链每走一轮叫一个指令周期 → 5.3 讲链的末端(数据通路)长什么样 → 5.4 讲链的中段(控制器)怎样把操作码变成信号。5.5 是这条链的例外分支——控制流不再由指令决定,而是被异常或中断打断。
这条链有一句可直接用于答题的判据:控制部件不生产数据。 图上的线只有两种——传”值”的走数据通路,传”开合命令”的走控制信号,而控制线的起点只能是控制部件的输出端。5.3.4 那道真题里最容易搞反的一问,靠的就是它。
主线二(5.6 → 5.7)并行度的三个层次。
判据统一成一句:复制了什么、共享了什么。 SIMD 复制运算部件、共享控制器;硬件多线程正好镜像——复制线程状态、共享运算部件;多核两者都复制。这张三行表在 5.7.2 收口。
前五节回答”怎样把一条指令做对”,后两节回答”怎样把很多条指令做快”——这是本章最粗的一刀。
另有一条贯穿全章的取舍反复出现五次:要整齐就得按最慢的来。 机器周期按访存时间定(5.2.1)、单周期按最慢指令定(5.2.3)、同步控制按最慢操作定(5.4.2)、流水段按最慢段定(5.6.2),以及运算指令也要陪着走完空转的 MEM 段(5.6.2)。五处是同一个道理,代价形式各不相同。
章节导航
5.1 CPU的功能和基本结构 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 5.1.1 | CPU 的功能 | 五项功能 = 本章七节的目录;指令控制管指令间,操作控制管指令内 |
| 5.1.2 | CPU 的基本结构 | 数据线 / 控制线二分;控制部件不生产数据;暂存器为什么必须存在 |
| 5.1.3 | CPU 的寄存器 | 「用户可见」= ISA 状态;隐含 ≠ 不可见;位数各取自哪里 |
5.2 指令执行过程 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 5.2.1 | 指令周期 | 三个时间层次倍数不固定;只有取指和执行是必有阶段 |
| 5.2.2 | 指令周期的数据流 | 一张”MAR 装谁的地址”表读完四个阶段 |
| 5.2.3 | 指令执行方案 | 三方案 = 对 |
5.3 数据通路的功能和基本结构 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 5.3.1 | 数据通路的功能 | 兑现 4.1.5 的伏笔:指令类型表 = 通路功能清单;主频由最长组合路径定 |
| 5.3.2 | 数据通路的组成 | 译码器输出控制、MUX 输出数据;rd 接译码器、rs 接 MUX |
| 5.3.3 | 数据通路的基本结构 | 三结构功能相同、拍数不同;“直送”说明传送必须穿 ALU |
| 5.3.4 | 数据通路的操作举例 | 读图五步 + 排拍三规则;2009 年单总线真题六问全解 |
5.4 控制器的功能和工作原理 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 5.4.1 | 控制器的结构和功能 | CU 三类输入缺一不可;三个”地址”按索引哪个存储体分家 |
| 5.4.2 | 硬布线控制器 | 一根控制线 = 一个布尔表达式;硬布线里没有”字段” |
| 5.4.3 | 微程序控制器 | 互斥字段 |
5.5 异常和中断机制 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 5.5.1 | 异常和中断的基本概念 | 判据是**“重跑一遍还会不会在同一条指令上发生”**;回调不是中断 |
| 5.5.2 | 异常和中断的分类 | 三类异常按**“返回到哪”**反推;断点归硬件、现场归软件 |
| 5.5.3 | 异常和中断响应过程 | 隐指令三件事;判优三方式;响应优先级 ≠ 处理优先级;屏蔽字与嵌套 |
5.6 指令流水线 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 5.6.1 | 指令流水线的基本概念 | 提高吞吐率,不缩短延迟;成立的三个条件 |
| 5.6.2 | 流水线的基本实现 | ID 读、WB 写,相隔三段;L1 分 I/D 的首要理由是结构冒险 |
| 5.6.3 | 流水线的冒险与处理 | 每种手段把代价推到 |
| 5.6.4 | 流水线的性能指标 | 三个量同源, |
| 5.6.5 | 高级流水线技术 | 加深还是加宽 × 编译时还是运行时;乱序执行、按序提交 |
5.7 多处理器的基本概念 ✅
| 节 | 页面 | 一句话 |
|---|---|---|
| 5.7.1 | SISD、SIMD、MIMD 的基本概念 | MISD 不存在;SIMD 就是一条 addps;超标量仍是 SISD |
| 5.7.2 | 硬件多线程的基本概念 | 判据是**“同一拍有几个线程的指令”;超线程必须 OS 知道拓扑** |
| 5.7.3 | 多核处理器的基本概念 | 路 / 核 / 线程三个单位;三堵墙; |
| 5.7.4 | 共享内存多处理器的基本概念 | NUMA 地址空间仍统一;一致性管值、存储一致性管序、互斥要原子指令 |
本章高频边界
每一行都是成对的辨析,点进去看完整论证。
| 边界 | 判据 | 在哪 |
|---|---|---|
| 指令控制 / 操作控制 | 输出是地址还是信号 | 5.1.1 |
| 数据线 / 控制线 | 传值还是传开合命令 | 5.1.2 |
| 暂存器 / 通用寄存器 | 有没有编号、指令能不能命名它 | 5.1.2 |
| CPU 内部总线 / 系统总线 | 冲突靠排拍还是靠仲裁 | 5.1.2 |
| 隐含 / 不可见 | 指令手册里有没有它的名字 | 5.1.3 |
| ISA 状态 / 微体系结构状态 | 换个实现还必须存在吗 | 5.1.3 |
| MAR 位数 / MDR 位数 | 主存地址位数 / 存储字长 | 5.1.3 |
| PC / MAR | PC 一定装指令地址且是下一条 | 5.1.3 |
| 时钟 / 机器 / 指令周期 | 包含关系确定,倍数不确定 | 5.2.1 |
| 必有阶段 / 条件阶段 | 取指、执行必有;间址、中断看条件 | 5.2.1 |
| 中断的检测 / 响应 | 检测每条都做,响应只在有请求时 | 5.2.1 |
| MDR 里是地址 / 是值 | 间址取回”地址”,执行取回”值” | 5.2.2 |
| 断点 / 当前指令地址 | PC 取指时已自增;故障类异常除外 | 5.2.2 |
| 单周期 | 最慢指令 / 最慢阶段 | 5.2.3 |
| 多周期 CPI / 流水线 CPI | 是否重叠(延迟 vs 吞吐) | 5.2.3 |
| 数据通路 / 控制器 / 运算器 | 三者范围两两交叉,见对照表 | 5.3.1 |
| 数据通路包不包括主存 | 不包括,界面是 MAR/MDR | 5.3.1 |
| 译码器 / 多路选择器 | 输出是控制还是输出是数据 | 5.3.2 |
Xout / Xin | 前者同拍只能一个,后者可以多个 | 5.3.2 |
| 单总线 / 多总线 / 专用通路 | 功能相同,拍数不同 | 5.3.3 |
| 暂存器是不是必需品 | 只有单总线必须有 | 5.3.3 |
| 偏移量走哪条线 | 数据线;控制部件只给 MUX 选择信号 | 5.3.4 |
| ALU / 移位器的”直送” | 说明该部件在数据回路上是必经之地 | 5.3.4 |
| 三个「地址」 | 索引主存 / CM / 寄存器堆 | 5.4.1 |
| 指令译码器 ID / CU | ID 只吃操作码,它的输出是 CU 的输入 | 5.4.1 |
| 控制器 / 控制单元 CU | 两类控制器变的只有 CU 这一块 | 5.4.1 |
| 同步 / 异步 / 联合控制 | 与 6.2 总线定时同一组判据 | 5.4.2 |
| 硬布线有没有”字段” | 没有,那是微程序的概念 | 5.4.2 |
| 互斥 / 相容微命令 | 同一拍会不会同时有效 | 5.4.3 |
| 字段位数要不要 +1 | 要,留一个”本段不发命令” | 5.4.3 |
| 水平型 / 垂直型 | 有没有微操作码字段 | 5.4.3 |
| 微命令 / 微操作 | 一一对应,因与果 | 5.4.3 |
| 异常 / 中断 | 重跑一遍还会在同一条指令上发生吗 | 5.5.1 |
| 广义 / 狭义中断 | 题目出现”内中断”→ 广义口径 | 5.5.1 |
| 硬件中断 / 信号 / 回调 | 谁改写执行流 | 5.5.1 |
| Cache 缺失是不是异常 | 不是——PC 没被改写 | 5.5.1 |
| 故障 / 自陷 / 终止 | 返回到哪:当前指令 / 下一条 / 不返回 | 5.5.2 |
| 断点 / 现场 | 硬件存断点,软件存现场 | 5.5.2 |
| 可屏蔽 / NMI | NMI 走独立引脚、不参与排队 | 5.5.2 |
| 关中断在隐指令中的位置 | 必须在保存断点之前 | 5.5.3 |
| 中断向量 / 向量地址 / 类型号 | 向量 = 服务程序入口地址 | 5.5.3 |
| 响应优先级 / 处理优先级 | 判优电路 / 屏蔽字;后者软件可改 | 5.5.3 |
| 软件查询 / 链式 / 独立请求 | 速度、线数、优先级由什么决定 | 5.5.3 |
| 单重 / 多重中断 | 服务程序里有没有”开中断”、放在哪 | 5.5.3 |
| 吞吐率 / 延迟 | 流水线提高前者,不缩短后者 | 5.6.1 |
| 静态 / 动态流水线 | 只对多功能流水线有意义 | 5.6.1 |
| 流水线段数 / 指令周期阶段数 | 两套划分,别混用名字 | 5.6.1 |
| 为什么必须两个存储器 | IF 与 MEM 同拍访存 → 结构冒险 | 5.6.2 |
| MEM 段空转能不能省 | 不能——写端口冲突 + 完成顺序错乱 | 5.6.2 |
| 转发能 / 不能解决 | 结果产生的段不能晚于需要它的段 | 5.6.3 |
插 nop / 硬件阻塞 | 代价记在 | 5.6.3 |
nop 的延迟 / 代价 | 5 拍 / 1 拍 | 5.6.3 |
| RAW / WAR / WAW | 顺序流水线只有 RAW | 5.6.3 |
| 加速比的上限 | 是段数 | 5.6.4 |
| 段数越多越好吗 | 不是—— | 5.6.4 |
| 超标量 / 超流水线 | 加宽(IPC>1)/ 加深(IPC 仍是 1) | 5.6.5 |
| 动态流水线 / 动态调度 | 段的连法 / 指令的顺序 | 5.6.5 |
| 为什么必须按序提交 | 为了精确异常 | 5.6.5 |
| VLIW 为什么破坏分层 | 把功能部件配置写进了 ISA | 5.6.5 |
| 超标量属于 SISD 还是 MIMD | SISD——只有一条指令流 | 5.7.1 |
| 时间并行 / 空间并行 | 时间并行只有流水线 | 5.7.1 |
| SIMD / MIMD | 能不能各跑各的程序 | 5.7.1 |
| 共享内存 / 消息传递 | 同一地址是不是同一存储单元 | 5.7.1 |
| 细粒度 / 粗粒度 / SMT | 同一拍有几个线程的指令 | 5.7.2 |
| 逻辑核心 / 物理核心 | 运算部件共享还是各有一套 | 5.7.2 |
| 硬件切换 / OS 线程切换 | 0 拍 / 几百到几千拍 | 5.7.2 |
| 超线程 / 双核 | 共享一套 / 各有一套,两者正交 | 5.7.3 |
| 路 / 核 / 线程 | 芯片数 / 核心数 / 每核线程数 | 5.7.3 |
| 私有 Cache / 共享 Cache | L1、L2 私有 → 一致性问题的来源 | 5.7.3 |
| UMA / NUMA | NUMA 地址空间仍统一,只是时间不同 | 5.7.4 |
| Cache 一致性 / 存储一致性 | 同址的”值” / 跨址的”序” | 5.7.4 |
| 一致性 / 互斥 | 一致性不提供互斥,要原子指令 | 5.7.4 |
| 写失效 / 写更新 | 写失效流量小,是主流 | 5.7.4 |
| 监听 / 目录协议 | 广播(小规模)/ 点播(大规模) | 5.7.4 |
计算模板
| 要算什么 | 公式 / 方法 | 在哪 |
|---|---|---|
| PC 的增量 | 指令字长 ÷ 编址单位 | 5.1.3 |
| MAR / MDR / IR 位数 | 主存地址位数 / 存储字长 / 指令字长 | 5.1.3 |
| 某条指令的执行时间 | 机器周期数 × 每周期节拍数 × | 5.2.1 |
| 某条指令的访存次数 | 取指 1 + 间址(有则 1)+ 执行(看寻址方式) | 5.2.2 |
| 三方案的 | 各段求和 / 取最大 / 取最大 | 5.2.3 |
ALUop / SRop 位数 | 5.3.2 | |
| 最多几个通用寄存器 | rs/rd 字段位数 | 5.3.2 |
| 单总线一次运算的拍数 | 3 拍(存 Y、算、经 Z 回写) | 5.3.3 |
| 排拍 | 总线冲突 / 部件冲突 / 数据依赖三规则 | 5.3.4 |
| 互斥字段位数 | 5.4.3 | |
| 下地址字段位数 | 5.4.3 | |
| 微指令总条数 | 5.4.3 | |
| 控制存储器容量 | 总条数 × 微指令字长 | 5.4.3 |
| 流水线总时间 | 5.6.4 | |
| 吞吐率 / 加速比 / 效率 | 5.6.4 | |
| 三者换算 | 5.6.4 | |
| 有冒险时的实际 CPI | 5.6.4 | |
| 数据冒险停顿拍数 | 按 ID/WB 相隔三段数距离,查有无转发 | 5.6.3 |
| 逻辑核心总数 | 路数 × 每颗核数 × 每核线程数 | 5.7.3 |
| 多核功耗对比 | 5.7.3 | |
| Amdahl 定律 | 5.7.3 |
复习顺序
- 5.1.1 → 5.1.2:先把”数据线 / 控制线”这条判据焊死,后面 5.3、5.4 全靠它。
- 5.1.3:位数那一列比可见性那一列考得多,MDR = 存储字长先记住。
- 5.2.1 → 5.2.2:背下取指周期五步和那张四行表,这是本章最稳的送分题。
- 5.2.3:短,但它是 5.6 的对照组。
- 5.3.1 → 5.3.2:把译码器和 MUX 分清,
rd接译码器要能立刻说出理由。 - 5.3.3 → 5.3.4:这两节要动手,把 2009 年那道真题完整做一遍。
- 5.4.1:先立”三个地址”,再进 5.4.2/5.4.3 就不会串台。
- 5.4.3:容量计算题走五步流程,每个字段
、取指微程序只算一段。 - 5.5.2 → 5.5.3:先记”返回到哪”三类,再做屏蔽字轨迹题。
- 5.6.1 → 5.6.3:吞吐 / 延迟的区分要先立住,冒险题才做得对。
- 5.6.4:三个公式同源,记一个推两个。
- 5.7.1 → 5.7.4:全部是概念选择题,按”复制了什么、共享了什么”过一遍,再扫名词库那张 84 行的清单。
说明
- 本章 25 个三级节 = 25 页,节号以 王道 2026 教材目录为准。
- 提问最密集的一章:32 条,其中 13 条落在 5.7,且横跨三个月出现两轮——见 原始提问档案(本地资料)。
- 旧版 7 篇主题式笔记已移入 归档目录(本地资料),入链不受影响(Obsidian 按 basename 解析)。
链接
- 📖 名词库:第 5 章名词库(159 条 + 84 行高频范围限定清单)
- 📜 原始提问档案:第 5 章 原始提问档案(本地资料)(32 条)
- ⬅️ 上一章:第 4 章 指令系统
- ➡️ 下一章:第 6 章 总线
- 🔗 存储层次:第 3 章 存储系统
- 🔗 OS 对照:OS 1.3.2 中断和异常
- 🔗 OS 对照:OS 2.2.6 多处理机调度
- 📚 权威节号:王道 2026 教材目录