文章

计算机系统结构考前

计算机系统结构考前

这份《考前黄金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位数。

🧠 二、 概念填空/判断/名解 秒杀词库

【第一/二章:系统基础】

  1. 系列机的根本特征是 向后兼容
  2. 透明性:客观存在,但程序员看不到(如Cache对程序员透明)。
  3. 计算机系统结构定义的是软硬件的界面计算机组成是逻辑实现;计算机实现是物理实现。
  4. 多核/机群属于 Flynn分类法的 MIMD(多指多数)。
  5. RISC 的核心特征是采用 Load/Store结构(RR型),只有读写指令能访存。

【第三/四章:流水线与ILP】

  1. 流水线瓶颈执行时间最长 的那一段。解决办法:细分瓶颈段、重复设置部件。
  2. 三大冲突结构冲突(硬件不够,哈佛结构解)、数据冲突(RAW等,旁路解)、控制冲突(分支跳转,预测解)。
  3. 名相关WAR(读后写,反相关)和 WAW(写后写,输出相关)。消除名相关的根本方法是 寄存器换名
  4. BTB(分支目标缓冲)查表而非预测。在 IF(取指)段工作,匹配成功直接给PC赋值,实现 0 分支开销
  5. Tomasulo 算法:利用 保留站 消除 WAR/WAW 冲突,利用 CDB广播 最小化 RAW 停顿。
  6. ROB(再定序缓冲):核心作用是 “乱序执行,顺序确认(Commit)”,保证发生预测失败或异常时,不污染真实寄存器,实现 精确异常
  7. 超标量 是硬件动态多流出;VLIW 是编译器静态捆绑多流出。

【第五章:Cache 与存储】

  1. Cache 性能 3C 理论强制性不命中(冷启动)、容量不命中、冲突不命中。
    • 增大块 $\to$ 减少强制,但可能增加冲突(U型曲线)。
    • 增加相联度 $\to$ 减少冲突,但可能增加命中时间。
  2. 写直达 (Write-Through) 保证主存一致,但慢,需加 写缓冲写回 (Write-Back) 快,但一致性难,需加 修改位(Dirty Bit)
  3. 降低冲突不命中的偏门技巧:牺牲Cache (Victim Cache)伪相联
  4. 主存提速:低位交叉编址能实现多体并行(流水线式存取),提高带宽。

【第八章:多核与一致性】

  1. 一致性写策略主流是:写作废协议 (Write Invalidate)
  2. 监听协议 (Snooping) 依赖 总线广播,适合 SMP(对称多处理器)。状态机:M(独占修改), S(共享), I(无效)
  3. 目录协议 (Directory) 依赖 宿主节点(Home)和位向量(共享集),不广播,点对点发送,适合大型 DSM 系统。
  4. 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 进行授权