计算机系统结构复习地图
把课程从“很多章节”压成一张路线图:先看整体,再抓公式,最后刷重点题型。
专题子页面入口
每个子页面都按“主线、概念、公式、习题套路、例题模板、易混点、自测问题、原 PDF 截图”整理,可以直接作为复习网页使用。
整门课的复习路线、章节关系、全课公式与题型总表。
Amdahl 反求比例、平均 CPI 例题、MIPS/MFLOPS 和性能评价。
TP/S/E 公式、时空图套路、Load-Use、非线性调度例题。
BHT 状态题、BTB 延迟题、多指令流出技术比较。
AMAT、两级 Cache、伪相联、预取、主存带宽、TLB/脏块写回。
可靠度公式、混联系统、RAID 容量、小写和故障恢复。
互连函数公式、超立方体距离、Omega 网络寻径题。
Amdahl 并行加速、远程访问 CPI、MSI 状态题和同步开销。
把问答里反复卡住的地方整理成考试判定表:MIPS 停顿、分支预测、BTB/BHT、Cache/TLB、RAID、互连网络和同步。
不复刻刚做过的原题,改成 20 套完整卷、160 道大题和 120 道速测,覆盖 MIPS、BTB、Cache/TLB、RAID、Omega、远程访问和 ILP。
互动问答补充
这部分不是原讲义摘要,而是复习过程中针对“看不懂题目在问什么、考试到底怎么下笔”的补丁。建议在刷题时打开,直接查判定表和例题卡。
把“有没有定向、IF 后还是 ID 后停、分支预测失败怎么加拍”压成一张做题流程。
解释什么时候减命中时间、TLB miss 是并进 Cache miss penalty 还是额外加。
区分 BHT/BHD 管跳不跳、BTB 管跳去哪,以及 branch folding 的直觉。
整理 Illiac、PM2、STARAN、RAID10/01、LL/SC、屏障同步等容易混的术语。
练习库
这页把复习内容、A 卷题型和习题课套路拆成两个层次:20 套完整卷练考试节奏,120 道速测题查漏补缺。详细卷答案按步骤展开,适合考前反复刷。
每套 8 大题、100 分,题型结构贴近期末卷:流水线、BTB、Cache 写事务、Cache/TLB、RAID、Omega、远程访问和 ILP 简答。
每题答案都保留关键中间量,方便对照自己到底是哪一步判断错。
1. 一条主线看完整门课
计算机系统结构这门课,本质上是在回答一个问题:计算机怎样设计,才能在性能、成本、功耗、可靠性和可编程性之间取得平衡?
- 先定义计算机系统结构:它研究计算机“做什么”和“怎样高效做”。
- 再用定量方法判断什么叫“高效”:执行时间、吞吐率、CPI、Amdahl 定律等。
- 然后分别研究关键子系统:ISA、处理器流水线、存储层次、I/O、互联网络和多处理器。
- 最后回到工程权衡:性能提升往往伴随硬件复杂度、成本、功耗或通信开销的增加。
| 课程模块 | 核心问题 | 复习关键词 |
|---|---|---|
| ISA | 软件如何控制硬件 | 指令类型、寻址方式、指令格式、寄存器 |
| 处理器微结构 | 指令如何更快执行 | 流水线、冲突、分支预测、ILP |
| 存储系统 | CPU 和内存速度差距如何缓解 | Cache、局部性、平均访问时间、主存带宽 |
| I/O 系统 | 外存如何更可靠、更高效 | 可靠性、可用性、RAID |
| 互联网络 | 节点之间如何连接和传输 | 互联函数、静态/动态网络、寻路 |
| 多处理器 | 多个处理器如何协同 | 共享存储、消息传递、Cache 一致性、同步 |
2. 基本概念与定量分析
2.1 系统结构、组成与实现
| 概念 | 含义 | 例子 |
|---|---|---|
| 计算机系统结构 | 规定软件可见的功能和接口,回答“做什么”。 | 有一条 ADD R1,R2,R3 指令。 |
| 计算机组成 | 规定系统结构的逻辑实现,回答“怎么做”。 | 控制器产生信号,ALU 执行加法,结果写回寄存器。 |
| 计算机实现 | 规定组成的物理实现,回答“怎么造出来”。 | 用 CMOS 电路实现 32 位加法器。 |
一句话记忆:系统结构定义功能,计算机组成实现逻辑,计算机实现落到物理电路。
2.2 什么叫高效
不同场景关注的效率指标不同。个人用户通常关心单个程序执行时间,数据中心或服务器场景更关注单位时间完成任务数,也就是吞吐率。
2.3 四个定量设计原则
3. 处理器:流水线与指令级并行
3.1 流水线的基本思想
流水线把一条指令的执行过程拆成若干阶段,使多条指令在不同阶段重叠执行。典型五段流水线为 IF、ID、EX、MEM、WB。
| 指标 | 含义 | 考试常见问法 |
|---|---|---|
| 吞吐率 | 单位时间完成的任务数量。 | 给出流水段时间和任务数,求完成率。 |
| 加速比 | 顺序处理时间与流水线处理时间之比。 | 比较非流水线和流水线总时间。 |
| 效率 | 设备实际使用时间占总运行时间的比例。 | 常要求计算各段或整体效率。 |
3.2 流水线的现实问题
- 瓶颈问题:各段时间不等时,最长流水段决定输入节拍。
- 额外开销:流水寄存器延迟、时钟偏移等会降低理想收益。
- 冲突问题:指令之间的资源、数据或控制依赖导致停顿。
| 冲突类型 | 原因 | 典型解决思路 |
|---|---|---|
| 结构冲突 | 多条指令争用同一硬件资源。 | 增加资源、错开访问、调整流水线结构。 |
| 数据冲突 | 后一条指令依赖前一条指令结果。 | 暂停、数据转发、编译器调度。 |
| 控制冲突 | 分支导致下一条指令地址不确定。 | 分支预测、延迟槽、提前判断分支。 |
复习时要把“相关”和“冲突”区分开:相关是指令间客观存在的依赖关系,冲突是这种依赖在某个具体流水线实现中造成的执行阻塞。
3.3 非线性流水线调度
非线性流水线中,一个任务可能多次经过某些功能段,因此新任务不能任意间隔进入流水线,否则会发生功能段使用冲突。
- 会看预约表:判断同一任务在哪些时刻使用哪些功能段。
- 会求禁止表:找出不能作为启动间隔的距离。
- 会画状态图:根据允许间隔转移状态。
- 会找调度方案:比较平均启动距离和吞吐率。
3.4 指令级并行 ILP
指令级并行指无关指令之间可以重叠或并行执行。流水线是 ILP 的基础形式,进一步提升性能则需要动态预测和多流出技术。
| 技术 | 解决的问题 | 关键词 |
|---|---|---|
| 动态分支预测 | 减少控制冲突造成的流水线清空。 | BHT 预测方向,BTB 提供目标地址。 |
| 超标量 | 每周期发射多条指令,数量可变。 | 硬件动态调度,复杂度高。 |
| VLIW | 编译器把多条可并行指令打包。 | 硬件较简单,依赖编译器。 |
| 超流水线 | 一个周期内分时发射多条指令。 | 区别于同一时刻多流出。 |
4. 存储系统
4.1 为什么需要层次化存储
理想存储器应该容量大、速度快、价格低,但现实中三者无法同时满足。因此系统采用寄存器、Cache、主存、磁盘等层次化结构,用小而快的上层存储缓存热点数据。
- 时间局部性:刚访问的数据,很可能不久后再次访问。
- 空间局部性:访问某个地址后,很可能接着访问附近地址。
4.2 Cache 的四个设计问题
| 问题 | 名称 | 常见方法 |
|---|---|---|
| 主存块放到 Cache 哪里 | 映像规则 | 直接映像、全相联映像、组相联映像。 |
| 如何找到目标块 | 查找算法 | 候选位置中并行或串行查找标记。 |
| Cache 满了换哪块 | 替换算法 | 随机、FIFO、LRU。 |
| 写访问怎么处理 | 写策略 | 写直达、写回;按写分配、不按写分配。 |
提高 Cache 性能的思路也顺着这个公式展开:降低失效率、减少失效开销、减少命中时间。
4.3 主存系统与带宽
主存性能主要看延迟和带宽。延迟是发出请求到获得第一个数据的时间,带宽是单位时间能传输的数据量。
| 结构 | 特点 | 复习要点 |
|---|---|---|
| 单体多字存储器 | 一个存储器一次读出多个连续字。 | 提高一次访存的数据量,但请求并行性有限。 |
| 多体交叉存储器 | 主存分成多个独立存储体,可以并行访问。 | 重点区分高位交叉和低位交叉。 |
| 低位交叉编址 | 连续地址分散到不同存储体。 | 更利于连续访问并行化,常用于提高带宽。 |
4.4 虚拟存储器
虚拟存储器属于主存-辅存层次。它在物理主存有限的情况下,为程序提供逻辑上更大的地址空间,并由操作系统和硬件协同完成地址转换、页面调入和置换。
5. I/O 系统与 RAID
课程中的 I/O 系统重点偏向存储 I/O。对外存而言,可靠性非常重要,因为程序可以重装,但用户数据一旦丢失往往难以恢复。
| 指标 | 含义 | 常见计算 |
|---|---|---|
| 可靠性 | 系统从初始点开始连续提供服务的能力,常用 MTTF 衡量。 | 失效率通常是 MTTF 的倒数。 |
| 可用性 | 系统正常工作时间在总时间中的比例。 | Availability = MTTF / (MTTF + MTTR)。 |
| 系统可靠度 | 多个部件组合后的可靠程度。 | 串联相乘;并联为 1 - 全部失效概率。 |
RAID 的核心思想
- 通过数据交叉存放提高并行访问能力。
- 通过冗余信息提高可靠性。
- 分类时关注两个维度:数据交叉粒度,以及冗余数据的计算和存放方式。
6. 互联网络
互联网络研究计算机部件、处理器节点或计算机系统之间如何连接。目标是在成本、延迟、能耗等约束下传输尽可能多的数据,避免网络成为瓶颈。
| 组成 | 作用 |
|---|---|
| 互连结构 | 描述节点之间有哪些物理连接,也就是“路怎么修”。 |
| 开关元件 | 负责接收、选择、转发数据路径。 |
| 控制方式 | 协调路径选择、资源分配和冲突处理。 |
需要掌握的网络描述指标
- 网络规模:网络中节点数量。
- 结点度:一个节点直接连接的边数。
- 结点距离:两个节点之间最短路径长度。
- 网络直径:任意两个节点最短距离的最大值。
- 等分宽度:把网络分成两半时需要切断的最少边数。
静态互联网络的连接运行时不变;动态互联网络由交换开关构成,连接状态可按程序需求改变。课程重点之一是多级混洗-交换网络的寻路算法。
7. 多处理器
随着单核性能提升受限,多处理器和多核系统成为开发并行性的主要方向。大多数现代多处理机属于 Flynn 分类中的 MIMD。
| 分类角度 | 类型 | 通信特点 |
|---|---|---|
| 存储结构 | 集中式共享存储器 | 多个处理器共享一个主存。 |
| 存储结构 | 分布式存储器多处理机 | 存储器分布在各个处理器或节点上。 |
| 地址空间 | 统一共享地址空间 | 通过共享变量通信。 |
| 地址空间 | 多个独立地址空间 | 通过显式消息传递通信。 |
两个性能挑战
- 程序并行性有限:可并行部分占比决定整体加速上限,可用 Amdahl 定律分析。
- 通信开销较大:通信延迟会增加 CPI,抵消一部分并行收益。
Cache 一致性与同步
多处理器系统中,每个处理器可能有私有 Cache。多个处理器缓存并修改同一内存块时,就可能出现不同处理器看到不同数据的情况,这就是 Cache 一致性问题。
| 机制 | 核心思想 | 适用印象 |
|---|---|---|
| 监听式协议 | 各 Cache 监听总线上其他处理器的内存操作。 | 广播式,适合规模较小的共享总线系统。 |
| 目录式协议 | 用目录记录每个块被哪些处理器缓存,并点对点协调。 | 可扩展性更好,适合较大规模系统。 |
| 同步机制 | 用原子操作构建锁、信号量等机制,协调共享资源访问。 | 保证正确性,但会带来额外开销。 |
8. 高频公式速查
CPU 时间 = IC × CPI × 时钟周期时间评价程序在处理器上的总执行时间。加速比 = 改进前时间 / 改进后时间比较优化前后的整体效果。Amdahl:Speedup = 1 / ((1 - f) + f / s)f 是可改进部分占比,s 是该部分加速倍数。AMAT = 命中时间 + 失效率 × 失效开销Cache 性能分析最常用入口。可用性 = MTTF / (MTTF + MTTR)衡量系统正常服务时间占比。串联可靠度 = R1 × R2 × ...任一部件失效,串联系统就失效。并联可靠度 = 1 - ∏(1 - Ri)所有冗余部件都失效,系统才失效。9. 考试重点清单
优先级最高
流水线性能计算 流水线冲突与时空图 非线性流水线调度 Cache 策略与 AMAT 多体交叉主存
第二梯队
Amdahl 定律 CPU 性能公式 BHT / BTB RAID 与可靠性 互联网络寻路 Cache 一致性 同步机制
10. 建议复习顺序
- 第一遍:读本页面,先建立全局框架,知道每章在解决什么问题。
- 第二遍:回教材和 PPT,重点做流水线、Cache、主存、互联网络的例题。
- 第三遍:按公式和考点清单查漏补缺,专门练容易混淆的概念和计算流程。
- 考前最后半天:只看公式速查、冲突类型、Cache 策略、互联网络和多处理器概念表。