概念八股辨析实战
PPT 只保留原则;这一页负责把原则变成做题动作。历年概念题反复变化的只是外壳,真正稳定的是下面几组边界。
ISA 与微架构:先问“谁规定”
2022 年第 18 题
2022 年第 18 题 考查哪些内容属于指令集体系结构(ISA):
- 指令字格式和指令类型:属于 ISA;
- 通用寄存器个数和位数:属于 ISA;
- CPU 时钟周期:不属于 ISA;
- 加法器进位方式:不属于 ISA。
判断标准不是“是不是硬件”,而是:
软件、编译器或操作系统是否必须依赖这个属性?
两个 CPU 可以采用不同的时钟周期、流水线和加法器电路,却运行同一套 ISA。反过来,如果寄存器数量、指令编码或寻址方式改变,机器语言程序就可能无法运行。
2025、2026 年的同类题
2025 年第 16 题 中,定长指令字格式属于 ISA;阵列乘法器、微程序控制器、单总线数据通路属于实现细节。
2026 年第 16 题 中,“是否使用超级流水线技术”是微架构选择,因此 D 是最明确的答案。
可以把边界记成:
| 层次 | 主要问题 | 例子 |
|---|---|---|
| ISA | 软件看到什么、指令做什么 | 指令格式、寄存器、寻址方式、异常入口 |
| 微架构 | 内部如何实现 ISA | 流水线级数、超标量、Cache、控制器 |
| 数字逻辑/电路 | 用什么电路实现 | 加法器结构、门电路、布线 |
易混点:虚拟存储
“虚拟存储管理方式”不能整个词直接归类,要拆成两部分:
| 具体内容 | 归属 |
|---|---|
| 虚拟地址格式、页表格式、地址转换、缺页异常入口 | ISA/硬件接口 |
| 页框分配、页面置换、调页时机、工作集策略 | 操作系统 |
因此,遇到“虚拟存储是否由 ISA 规定”,先看选项说的是硬件机制还是管理策略。本题若同时出现“超级流水线”,后者是更无争议的微架构选项,应优先选择它。
反事实检验
换一台同 ISA 但不同型号的机器,程序还能否原样运行?
- 还能运行:该属性通常属于微架构或电路;
- 不能运行:该属性可能属于 ISA。
这个方法还可以判断 Cache、TLB、乱序执行、微程序控制器和流水线级数:它们通常对应用程序透明,不是 ISA 的规定。
RISC、流水线与 CPI
2020 年第 17 题和 2026 年第 20 题:CPI 的默认语境
2020 年第 17 题 和 2026 年第 20 题 在理想条件下使用以下结论:
- 单周期 CPU:CPI = 1;
- 多周期 CPU:通常 CPI > 1;
- 基本流水线:理想吞吐率下 CPI 可视为 1;
- 超标量流水线:每周期完成多条指令,平均 CPI 可小于 1。
这不是说现实程序永远满足这些等式。流水线填充、排空、数据冒险、分支失败和 Cache 缺失都会改变实际 CPI。
2025 年第 18 题:CPI 与 Cache
2025 年第 18 题 中,“程序的 CPI 与 Cache 缺失率无关”是错误的。Cache 缺失会引入额外停顿,影响平均 CPI。
常用总公式是:
CPU 执行时间 = 指令数 × CPI × 时钟周期
其中 CPI 是运行结果,不只由指令集决定,还会受到指令比例、流水线停顿、分支预测和存储层次命中情况影响。
异常、陷阱和中断:先分清事件类型与返回点
2014 年第 25 题:用户态能执行什么
2014 年第 25 题 中,不能在用户态执行的是“关中断指令”。
普通跳转、压栈可以在用户态执行;trap 指令也可以由用户程序执行,它的作用正是主动进入内核服务。不要因为 trap 会导致状态切换,就误以为 trap 本身是特权指令。
2015 年第 22 题:异常处理后返回哪里
2015 年第 22 题 利用“总是返回发生异常的指令”设置陷阱。异常类型不同,返回点也不同:
| 类型 | 典型处理后位置 | 例子 |
|---|---|---|
| Fault(故障) | 原指令,修复后重新执行 | 缺页 |
| Trap(陷阱) | 下一条指令 | 系统调用、断点 |
| Abort(终止) | 通常不能继续 | 严重硬件或不可恢复错误 |
所以:
- 缺页处理完成后通常重新执行发生缺页的访存指令;
- 显式陷阱处理完成后通常执行下一条指令;
- “所有异常都返回原指令”或“所有异常都返回下一条”都过于绝对。
2020 年第 20、21 题:内部异常与外部中断
2020 年第 20 题 中:
- 访存时缺页:内部异常;
- 定时器到时:外部中断;
- 网络数据包到达:外部中断。
2020 年第 21 题 中,“可屏蔽中断一有效,CPU 立即响应”是错误的。通常还要满足:CPU 开中断、当前指令执行完毕、没有更高优先级事件。
中断处理:区分硬件、内核和设备控制器
2018 年第 22 题
2018 年第 22 题 考查外部中断响应时机和现场保存:
产生请求
→ CPU 允许中断
→ 当前指令执行结束
→ 硬件保存断点并引出中断入口
→ 中断服务程序保存其余现场并处理
因此:
- 有请求不等于立即暂停当前指令;
- 中断隐指令不等于自动保存所有通用寄存器;
- 中断优先级不一定按请求到达先后决定。
谁完成什么
| 工作 | 通常由谁完成 |
|---|---|
| 保存 PC/断点、引出中断入口 | 硬件/中断隐指令 |
| 保存通用寄存器和软件现场 | 中断服务程序/操作系统 |
| 初始化中断向量表 | 操作系统 |
| 读取设备状态、处理数据 | 设备驱动和中断服务程序 |
| DMA 数据块传送 | DMA 控制器 |
| DMA 初始化和结束处理 | CPU/操作系统 |
不要把“硬件自动做了部分现场保护”扩大成“硬件保存全部现场”。
控制流题:沿着 PC 走一遍
2026 年第 17 题 问哪些指令“可能不改变程序下一条指令的地址”。可以用 PC 的最后写入者分析:
| 指令 | 常见控制流 |
|---|---|
| 条件转移 | 条件不满足时顺序执行,因此可能不改变 |
| 过程调用 | 保存返回地址并跳到过程入口 |
| 陷入指令 | 跳到异常或系统服务入口 |
| 返回 | 装入保存的返回地址 |
题目给出的答案是Ⅰ、Ⅳ。这里的关键是“可能”二字;正常语义下返回通常改变控制流,但题目把返回地址恰好等于顺序地址的特殊情况也纳入了。遇到类似争议,先按正常语义排除明显项,再结合“可能”和选项结构作答。
其他控制流易错点
- “陷阱处理完成后返回下一条”描述的是处理结束后的恢复位置,不是陷阱指令执行后立即顺序取指;
- “调用保存下一条指令地址”描述的是返回地址,不等于调用后的下一条执行地址;
- 条件转移的目标地址和顺序地址必须分别讨论,不能看到“转移”就认为必然跳转。
操作系统:先判事件、状态和执行主体
操作系统概念题常把“谁发起”“谁执行”“何时切换”写在同一句话里。先把叙述拆成三列:
| 题干问法 | 先检查什么 | 常见误判 |
|---|---|---|
| 某事件属于中断还是异常 | 事件来自指令内部还是处理器外部 | 把缺页、除零当成外部中断 |
| 进程何时切换状态 | 发生了什么事件,是否满足阻塞/唤醒条件 | 把“请求 I/O”直接写成运行结束 |
| 死锁是否已经发生 | 安全状态、死锁状态和必要条件的关系 | 把不安全状态当成必然死锁 |
| 文件删除后还能否访问 | 目录项、inode、引用计数是否仍存在 | 把硬链接和符号链接当成同一种引用 |
例如,2009 年第 22 题、2016 年第 22 题、2020 年第 20 题 和 2023 年第 21 题 都要求区分异常与外部中断:缺页、除零和保护错是在执行指令时由 CPU 检测的异常;键盘输入、DMA 完成和定时器到时来自处理器外部。看到“发生在用户程序中”不能直接判定为外部中断。
进程题要把“事件”翻译成状态转移。2009 年第 24 题、2012 年第 45 题、2017 年第 46 题 和 2021 年第 45 题 中,到达、时间片耗尽、等待 I/O、I/O 完成分别对应就绪、阻塞、运行等不同变化。草稿先写“事件 → 当前状态 → 允许的下一状态”,不要把“调度程序被调用”误当成“进程一定获得处理机”。
死锁判断要区分“避免”和“预防”。2013 年第 32 题 考查银行家算法:安全状态表示存在一个可完成的进程序列,不安全状态只是“可能”导致死锁,并不等于已经死锁;银行家算法通过分配检查来避免进入不安全状态,并没有破坏某个死锁必要条件。遇到“安全/不安全/死锁”三个词,先画出包含关系再判断绝对表述。
文件系统中,2009 年第 30 题 和 2013 年第 26 题 可用来区分文件名、目录项、inode 和数据块;2009 年第 31 题 和 2017 年第 31 题 涉及硬链接与符号链接。判断“删除后是否仍可访问”时,只追踪引用关系:硬链接增加 inode 的引用计数,符号链接保存的是路径名;删除一个目录项不一定立即删除 inode 和数据块。
计算机网络:先确定层次、作用范围和报文归属
网络概念题最容易把相邻层的职责混在一起。看到一个协议或设备,先问三个问题:
它位于哪一层?服务谁?解决可靠性、寻址还是转发问题?
分层边界可用这些题交叉检查:2009 年第 33 题、2011 年第 33 题 和 2022 年第 34 题。传输层提供进程到进程的逻辑通信,网络层负责主机到主机的分组转发,数据链路层负责相邻结点之间的传输;“端到端”“逐跳”“相邻结点”是比协议名称更可靠的判据。
TCP/UDP 题不要把“有校验”当成“可靠”。2014 年第 39 题、2018 年第 39 题、2019 年第 38 题 和 2025 年第 38 题 可对照:UDP 无连接,提供复用/分用和差错检测,但不负责确认、重传和按序交付;TCP 通过序号、确认、窗口和重传提供可靠字节流。看到“UDP 有校验和所以可靠”或“TCP 面向报文”这类把一个属性推成全部能力的表述,要直接警惕。
路由协议要按“自治系统内/外”和“算法/承载协议”拆分。2010 年第 35 题、2016 年第 37 题、2017 年第 37 题 和 2026 年第 38 题 中,RIP 是基于距离向量的 IGP,使用 UDP;OSPF 是基于链路状态的 IGP,直接使用 IP;BGP 是自治系统之间的 EGP,使用 TCP。题目若同时问“路由算法”和“报文封装在哪个协议”,必须分别作答。
地址题要区分三种地址和修改位置。2018 年第 37 题 考查跨路由器转发时 MAC 地址逐跳改变而 IP 地址通常端到端保持;2024 年第 35 题 考查 ARP 只在同一 VLAN/广播域内解析 IP 到 MAC;2023 年第 38 题 和 2025 年第 37 题 考查 NAT 可能改写 IP 地址、端口和校验和。草稿可写成“本跳的帧头 / 端到端的 IP 头 / 传输层端口”,避免把路由器转发误解为所有字段都不变。
绝对表述与时刻词:专门找反例
看到以下词,先尝试构造反例:
一定、必然、总是、只能、所有、立即、完全、与……无关
看到以下词,先在时间轴上定位:
发生时、开始执行时、完成时、执行结束时、处理完成后
2024 年第 23 题 的争议就来自“中断或异常发生时”和“处理程序开始执行时”不是同一个时刻。判断 CPU 状态前,先标出事件发生、状态切换和处理程序开始这三个节点。
同样的检查也适用于:
- “Cache 缺失时”与“缺失处理完成后”;
- “进程申请 I/O 时”与“I/O 完成时”;
- “指令执行期间”与“指令执行结束后”。
历年题中可以直接这样练习:
- 2013 年第 22 题 把“中断 I/O 方式适用于所有外部设备”作为干扰项。只要想到高速磁盘可能来不及逐字响应中断,就能构造反例;“所有”比后半句的 DMA 描述更值得优先检查。
- 2013 年第 32 题 把“安全状态”“不安全状态”和“死锁”混在一起。安全状态意味着存在可完成序列;不安全状态只是失去保证,不能推出“一定已经死锁”。看到“一定”就问:能否给出一个尚未死锁但不安全的状态。
遇到组合题:利用选项结构
不要机械地从Ⅰ判断到Ⅳ。推荐顺序是:
- 找最确定、最容易举反例的一项;
- 看它出现在哪些选项中;
- 立即划掉不可能组合;
- 只处理最后剩下的差异项。
如果剩下两个选项,重点不是重新背整章,而是找出它们唯一不同的那个命题。
这种方法特别适合 2026 年第 17 题:Ⅱ“过程调用”必然跳转,判定Ⅱ为假后,A、C、D 同时排除,只剩 B,不需要先解决Ⅳ的边界争议。
复盘模板:不要只记答案
不要写:
2026 年第 16 题选 D。
改成四行:
错误选项:把微架构实现说成 ISA 规定
判据:软件可见性 / 换实现后程序是否仍能运行
边界:虚存硬件机制 ≠ OS 页面管理策略
迁移:流水线、Cache、微程序、总线结构也按同一表判断
每道模糊题至少记录:
- 错误选项错在哪个词;
- 它混淆了哪些层次或执行主体;
- 哪个具体机制能推出答案;
- 哪个相邻题型也能用同一判据。
考场决策顺序
圈限定词
↓
确定讨论层次和执行主体
↓
还原成 PC、寄存器或状态变化
↓
先判最确定的选项
↓
剩余争议按教材默认口径处理
建议设置时间边界:20 秒内找到强判据就作答;仍有两个选项时只看差异词;60 秒仍没有新判据就标记跳过。改答案必须因为找到了定义、反例、时刻条件或教材原句,而不是因为“另一个选项读起来更顺”。
2009—2026 年概念题索引
下面按年份列出一组适合反复回看的概念题。它们不一定都属于组成原理,但都在训练同一种能力:给概念划边界、识别限定词、区分执行主体。
| 年份与题号 | 表面主题 | 真正要判断的边界 |
|---|---|---|
| 2009-17 | RISC 特征 | 硬布线控制器 vs 微程序控制器;典型特征不是强制实现 |
| 2010-16 | RAM 与 ROM | 随机存取方式不等于 RAM;Cache 通常用 SRAM |
| 2011-18 | RISC 与流水线 | 定长、对齐、Load/Store 如何降低流水线复杂度 |
| 2012-20 | USB 总线 | 总线标准的接口属性与传输特性 |
| 2012-23 | 用户态事件 | “在用户态发生”不等于“处理程序在用户态执行” |
| 2013-22 | 中断 I/O 与 DMA | 请求 CPU 时间还是总线使用权;谁实际传输数据 |
| 2014-25 | 用户态与 trap | trap 可由用户程序执行;关中断是特权操作 |
| 2015-22 | Fault、Trap、Abort | 异常类型不同,处理后返回点不同 |
| 2016-22 | 中断与异常 | 缺页、除零、保护错是异常;DMA 结束是外部中断 |
| 2017-17 | 超标量流水线 | 每周期发射多条不等于缩短单个流水段时间 |
| 2018-22 | 外部中断 | 中断允许状态、指令结束响应、现场保存分工 |
| 2019-14 | 缺页处理 | 处理完成后重做原指令,不是直接执行下一条 |
| 2020-18 | 自陷 Trap | 自陷是内部异常,不是外部中断;通常返回下一条 |
| 2021-22 | 多重中断 | 响应条件、屏蔽字和优先级不能混为一谈 |
| 2022-18 | ISA 内容 | 指令格式和寄存器属于 ISA;时钟周期和电路不属于 |
| 2023-21 | 硬件与异常/中断 | 异常在指令中检测,中断通常在指令结束后响应 |
| 2024-18 | MMU 地址转换 | TLB/页面缺失属于转换链路;Cache 缺失发生在之后 |
| 2025-16 | ISA 与实现 | 定长指令字是接口,乘法器、微程序和总线是实现 |
| 2026-12/16/17 | 系统层次、ISA、控制流 | 逻辑实现 vs 物理实现;谁规定;PC 是否必然改变 |
六条主线
“发生”与“执行”不是一回事
2012 年第 23 题中,系统调用可以在用户态发生,但服务程序在内核态执行;缺页由用户态访存触发,但缺页处理程序在内核态执行。看到“能否在用户态发生”和“能否在用户态执行”,必须分开回答。
“检测”与“处理”不是一回事
2024 年第 18 题可以画成:
虚拟地址 → TLB/页表地址转换 → 得到物理地址 → Cache 查找 → 必要时访问主存
页面缺失和 TLB 缺失属于地址转换链路,Cache 缺失属于之后的 Cache 访问阶段。CPU 检测到缺页,也不等于 CPU 负责选择淘汰页,后者由操作系统处理。
“请求谁”与“传输谁”不是一回事
2013 年第 22 题和 2020 年 DMA 题可一起复习:
| 方式 | 请求的资源 | 数据实际搬运 |
|---|---|---|
| 中断 I/O | CPU 处理时间 | CPU/驱动程序 |
| DMA | 总线使用权 | DMA 控制器 |
“DMA 需要 CPU 初始化”不等于“DMA 传输过程由 CPU 完成”。
“典型特征”不是“强制规定”
2009、2011、2017、2025 年分别从 RISC、流水线和超标量角度考查这一点:RISC 通常采用硬布线控制器,但 ISA 不强制某一种控制器;RISC 有利于流水线,但不代表所有 RISC 必须采用相同流水线;超标量增加每周期发射宽度,不等于缩短单个流水段的组合逻辑时间。
“逻辑地址/物理地址”和“逻辑实现/物理实现”不能混读
2024 年第 18 题考地址空间,2026 年第 12 题考系统层次,虽然都出现“逻辑/物理”,但含义不同:逻辑地址/物理地址描述地址空间;逻辑实现/物理实现描述实现层次;虚拟页号/物理页框号描述页表映射两端。
“不能”“不可能”要尝试构造反例
2010 年 Cache 命中组合、2014 年快速排序结果、2019 年缺页处理、2026 年控制流题都使用了“不可能/不能”口吻。把选项翻译成具体状态或执行序列,先尝试构造一个满足题干的反例;只有构造不出反例,才保留“可能成立”。
把历年题变成边界卡片
每条卡片只记录判据,不抄整段解析。例如:
卡片:缺页处理返回点
正面:缺页处理完成后回到哪里?
背面:回到发生缺页的原指令重新执行;“下一条”是错误替换。
关联:2015-22、2019-14、2026-17。
卡片:ISA 与微架构
正面:如何判断一个属性是否由 ISA 规定?
背面:看软件可见性;换微架构后程序仍能运行的,通常不是 ISA。
关联:2022-18、2025-16、2026-12/16。
卡片:中断与异常
正面:访存缺页、定时器到时、DMA 结束分别是什么?
背面:缺页是内部异常;定时器和 DMA 结束通常是外部中断。
关联:2016-22、2020-20、2023-21。
复习时,记忆对象应从“某年某题的答案”变成“一个判据 + 多道题的迁移”。