# 1. 为何分支预测失败的惩罚(misprediction penalty)是 OoO 设计的关键约束? A 内存大小 B 缓存大小 C 流水线深度(取指到分支执行的距离) ✓ 正确答案 D 寄存器数量
# 4. 解释 ROB(Reorder Buffer)在指令提交(commit)阶段的角色? A 按程序顺序提交,保证精确状态与投机执行安全 ✓ 正确答案 B 乱序提交 C 只负责取指 D 只做分支预测
# 7. 解释为何 ARM Cortex-A77 扩大乱序执行资源(乱序窗口/ROB 128→160 项)能提升 ILP? A 减少功耗 B 加快外设 C 减小芯片面积 D 扩大乱序窗口,提高 ILP,更好掩盖长延迟 ✓ 正确答案
# 9. 给定一段 for(i=0;i<n;i++){...} 循环的分支指令,2-bit 预测器工作过程? A 大约 n 次 B 大约 n/2 次 C 大约 1 次(最后一次) ✓ 正确答案 D 0 次
# 10. 解释 1-bit 与 2-bit saturating counter 分支预测器的差异? A 需要的状态更少 B 省硬件 C 预测更快 D 对分支方向变化的抖动更鲁棒,需两次错误才翻转 ✓ 正确答案
# 11. 解释 TAGE(TAgged GEometric history length)分支预测器中多个表的几何级数设计? A 覆盖从短到长的历史关联,高效利用容量提高准确率 ✓ 正确答案 B 减少表数量 C 加快取指 D 降低功耗
# 12. 解释 indirect branch 与 conditional branch 在预测器上的差异? A 间接分支需预测目标地址,条件分支只需预测方向 ✓ 正确答案 B 两者都只预测方向 C 条件分支需预测目标 D 无差异
# 14. 解释分支目标缓冲(BTB)与分支预测器(BHT)的区别? A BTB 预测方向,BHT 存目标 B BTB 缓存目标地址,BHT 存方向历史/预测状态 ✓ 正确答案 C 两者相同 D 都是数据缓存
# 16. 给定一个 32KB 4-way set-associative cache,64B line,画出地址 tag/index/offset 位拆分? A 7 位 ✓ 正确答案 B 6 位 C 5 位 D 8 位
# 18. 解释 L1/L2/L3 多级缓存层次的设计动机与典型容量范围? A 只追求容量 B 减少 SRAM 面积 C 只追求速度 D 在速度与容量间权衡,利用局部性让多数访问命中最快层 ✓ 正确答案
# 20. 解释 victim cache 与 stream buffer 在 miss 优化中的角色? A 预取顺序数据 B 加快写回 C 扩大缓存 D 缓解冲突性 miss,留住刚被替换的行以便快速命中 ✓ 正确答案
# 21. 解释 write-back 与 write-through 两种写策略的差异? A write-back 只更新缓存并在替换时写回,write-through 每次写都更新内存 ✓ 正确答案 B write-back 写时同时更新内存,write-through 只更新缓存 C 两者相同 D write-through 无法写内存
# 22. 解释为何 write-back 通常配合 write allocate 而 write-through 配合 no-write-allocate? A no-write-allocate B 不写缓存 C 两者都可 D write-allocate ✓ 正确答案
# 23. 解释 inclusive/exclusive cache 层次协议下 L3 与 L2 的关系? A L2 与 L3 不重叠 B L2 与 L3 完全重叠 C L2 内容完全包含于 L3,简化一致性但浪费容量 ✓ 正确答案 D 无 L3
# 24. 解释 GHB(Global History Buffer)预取器的工作机制? A 仅单条指令的固定步长 B 全局访存历史与地址增量(delta)的关联 ✓ 正确答案 C 随机数 D 缓存命中率
# 25. 解释为何 ARM 在 prefetcher 上增加 AMP(Adaptive Multipath)? A 只跟踪单一路径 B 跟踪多个并行访存路径并自适应调度,兼顾准确率与带宽 ✓ 正确答案 C 不使用历史 D 只预取指令
# 26. 解释 memory dependence predictor(MDP)与 store-set 预测器? A 预测分支 B 预测缓存命中 C 预测 load 可能与哪些 store 冲突,决定 load 能否提前执行 ✓ 正确答案 D 预测指令长度
# 27. 解释 2-bit counter 在 strongly biased 分支上为何仍能稳定? A 需要连续两次错误才翻转方向,单次噪声不改变预测 ✓ 正确答案 B 每次错误都翻转 C 忽略历史 D 只预测一次
# 29. 解释为何 L1 命中延迟(L1 hit latency)在 Intel/AMD 通常为 4-5 cycle? A 主频无关 B 编译器设置 C 内存条带宽 D L1 的 SRAM 访问与 tag 比较等关键路径在目标主频下的延迟 ✓ 正确答案
# 30. 解释 Intel Pentium 4(RWT)与 AMD Zen 的 ROB 容量差异? A 更小 B 无 ROB C 相同 D 更大(约 224 项),乱序窗口更宽,提升 IPC ✓ 正确答案
# 33. 解释为何 gshare = (PC XOR GHR) 能降低 aliasing? A 增加表大小 B 把全局历史混入索引,区分不同分支与上下文,降低 aliasing ✓ 正确答案 C 加快运算 D 减少历史
# 34. 解释全局历史(GHR)、局部历史(PHT)两种预测器输入差异? A 两者都用全局历史 B PHT 用每分支自身历史,GHR 用所有分支的全局历史 ✓ 正确答案 C 两者都用局部历史 D 无差异
# 35. 解释为何 SPEC int 2017 中 mcf 误预测率显著高于 bzip2? A bzip2 分支更多 B mcf 分支高度依赖数据且难以预测,bzip2 分支规律可预测 ✓ 正确答案 C mcf 无分支 D 预测器偏爱 bzip2
# 37. 解释直接映射(direct-mapped)与组相联(N-way set-associative)的冲突差异? A 硬件更简单 B 容量更大 C 延迟更低 D 减少冲突 miss(多个映射到同组的地址可同时在多个路) ✓ 正确答案
# 39. 解释 prefetcher 对访存模式的探测,strided / stream / pointer-chasing 如何识别? A strided B stream C 顺序 D pointer-chasing(指针追逐) ✓ 正确答案
# 40. 解释 software prefetch 指令(prfm/prefetcht0)与 hardware prefetch 的互补? A 互补:硬件覆盖规律访问,软件覆盖硬件无法识别的复杂模式 ✓ 正确答案 B 完全替代 C 软件预取无用 D 硬件预取失效
# 42. 解释为何数据库顺序扫描受益于 hardware prefetcher? A 顺序访问完全可预测、空间局部性强,预取准确率高 ✓ 正确答案 B 随机访问可预测 C 预取器不工作 D 扫描不访存
# 44. 解释时间局部性(temporal locality)与空间局部性(spatial locality)的差异? A 同一地址被重复访问 B 数据不连贯 C 指令分段 D 相邻地址的数据很可能被访问 ✓ 正确答案
# 45. 解释顺序预取(sequential prefetch)与跨步预取(stride prefetcher)的适用场景? A 随机访问 B 固定步长(非连续但有规律)的访问 ✓ 正确答案 C 指针追逐 D 单次访问