计算机系统结构考前
计算机系统结构考前
这份《考前黄金10分钟抢分清单》专为你早上在去考场的路上、或者发卷子前最后5分钟快速过眼定制。
把这些硬核干货像“印在脑子里”一样扫一遍,填空、判断、计算直接形成肌肉记忆!
🧮 一、 必考公式默写区(考卷一发,先写在草稿纸上)
1. 系统加速比(Amdahl定律)
- 公式:$S_n = \frac{1}{(1 - F_e) + \frac{F_e}{S_e}}$ (注:$F_e$ 是可改进部分的时间比例,$S_e$ 是该部件的提升倍数。) (极限加速比:当 $S_e \to \infty$ 时,极限 $S_n = \frac{1}{1 - F_e}$)
2. CPU 性能公式
- 公式:$CPU执行时间 = IC (指令数) \times 平均CPI \times 时钟周期时间$ (注:平均CPI = $\sum (某类指令比例 \times 它的CPI)$ )
3. 流水线三大指标($k$段流水线,跑$n$个任务,耗时$\Delta t$)
- 总时间:$T_k = (k + n - 1) \Delta t$
- 吞吐率 ($TP$):$TP = \frac{n}{(k + n - 1) \Delta t}$
- 加速比 ($S$):$S = \frac{nk}{k + n - 1}$
- 效率 ($E$):$E = \frac{n}{k + n - 1}$
4. Cache 平均访存时间 (AMAT)
- 单级:$AMAT = 命中时间 + 不命中率 \times 不命中开销$
- 两级嵌套:$AMAT = L1命中时间 + L1不命中率 \times (L2命中时间 + L2局部不命中率 \times L2不命中开销)$
5. Cache 地址强行切割法则(绝杀)
**主存地址 = Tag (标识) Index (索引/组号) Offset (块内位移)** - Offset = $\log_2(\text{块大小 Byte})$
- Index = $\log_2(\text{Cache组数})$。注意:组数 = Cache总块数 $\div$ 相联度!
- Tag = 总位数 - Index位数 - Offset位数。
🧠 二、 概念填空/判断/名解 秒杀词库
【第一/二章:系统基础】
- 系列机的根本特征是 向后兼容。
- 透明性:客观存在,但程序员看不到(如Cache对程序员透明)。
- 计算机系统结构定义的是软硬件的界面;计算机组成是逻辑实现;计算机实现是物理实现。
- 多核/机群属于 Flynn分类法的 MIMD(多指多数)。
- RISC 的核心特征是采用 Load/Store结构(RR型),只有读写指令能访存。
【第三/四章:流水线与ILP】
- 流水线瓶颈是 执行时间最长 的那一段。解决办法:细分瓶颈段、重复设置部件。
- 三大冲突:结构冲突(硬件不够,哈佛结构解)、数据冲突(RAW等,旁路解)、控制冲突(分支跳转,预测解)。
- 名相关:WAR(读后写,反相关)和 WAW(写后写,输出相关)。消除名相关的根本方法是 寄存器换名。
- BTB(分支目标缓冲):查表而非预测。在 IF(取指)段工作,匹配成功直接给PC赋值,实现 0 分支开销。
- Tomasulo 算法:利用 保留站 消除 WAR/WAW 冲突,利用 CDB广播 最小化 RAW 停顿。
- ROB(再定序缓冲):核心作用是 “乱序执行,顺序确认(Commit)”,保证发生预测失败或异常时,不污染真实寄存器,实现 精确异常。
- 超标量 是硬件动态多流出;VLIW 是编译器静态捆绑多流出。
【第五章:Cache 与存储】
- Cache 性能 3C 理论:强制性不命中(冷启动)、容量不命中、冲突不命中。
- 增大块 $\to$ 减少强制,但可能增加冲突(U型曲线)。
- 增加相联度 $\to$ 减少冲突,但可能增加命中时间。
- 写直达 (Write-Through) 保证主存一致,但慢,需加 写缓冲;写回 (Write-Back) 快,但一致性难,需加 修改位(Dirty Bit)。
- 降低冲突不命中的偏门技巧:牺牲Cache (Victim Cache)、伪相联。
- 主存提速:低位交叉编址能实现多体并行(流水线式存取),提高带宽。
【第八章:多核与一致性】
- 一致性写策略主流是:写作废协议 (Write Invalidate)。
- 监听协议 (Snooping) 依赖 总线广播,适合 SMP(对称多处理器)。状态机:M(独占修改), S(共享), I(无效)。
- 目录协议 (Directory) 依赖 宿主节点(Home)和位向量(共享集),不广播,点对点发送,适合大型 DSM 系统。
- SMT (同时多线程):在超标量处理器上,让多线程共享流出槽,把线程级并行(TLP)转化为指令级并行(ILP)。
👁️ 三、 55分压轴大题 5步防坑指南(扫一眼再做题)
🛑 大题 1:画流水线时空图(数据冲突)
- 动作口诀:先找数据依赖!如果是
ALU 到 ALU,有旁路不画 Stall。如果是Load 到 ALU (Load-Use),就算有旁路也必须画 1 个 Stall!无旁路一律画 3 个 Stall。 - 分支延迟槽:如果有延迟槽机制,把分支前面无关的指令塞到分支后面执行,不管跳不跳都执行它。
🛑 大题 2:Tomasulo 填表
- 找坑点:只要数据还没上 CDB 广播,保留站里的 $Q$ 就填那个算它的保留站名字(绝不能填具体数)。
- 寄存器状态表 (Qi):永远被最新的一条目的寄存器相同的指令覆盖。
- 写回时刻:执行结束后的下一个周期才是写回(上CDB广播)周期。
🛑 大题 3:Cache 结构推演
- 找坑点:看清楚题目问的是“直接映像”还是“组相联”。
- 发生冲突时,如果块里有有效数据被替换,写回策略 (Write-back) 下,脏数据必须先回写内存。
🛑 大题 4:Cache 一致性协议 (MSI 或 目录)
- 监听协议(MSI):只要看到“写(Write)”,其他 Cache 全变 I(无效)。只要看到别人要“读(Read)”你的 M,你必须先写回(Write-Back)主存,然后一起变 S。
- 目录协议:答题一定要带上 “Home(宿主)向xx发送…”。别人想写,Home向所有 S 发
Invalidate;别人想碰 E,Home向 E 发Fetch/Write-Back。
🛑 大题 5:Amdahl 或 CPU 时间计算
- 找坑点:仔细看清题目,优化某个部件后,总指令数 (IC) 变了没有?如果像例题1.4那样融合了指令,IC 变小了,必须用新的 IC 带入计算!
🚀 考场深呼吸,遇到没见过的题不要慌,万变不离其宗: “系统结构就是一帮硬件工程师在用尽一切手段(旁路、换名、排队、加缓存)在跟时间赛跑而已。”
清单就这么长,带着这份记忆去考场,逢考必过,势如破竹!加油!
本文由作者按照 CC BY 4.0 进行授权