综合自测¶
这组题不是术语背诵,而是检查能否跨层推理。建议先口述思路,再画出状态和数据流,最后计算数值。
概念解释¶
- 为什么补码把减法统一成加法?它付出的代价是什么?
- ISA 与微体系结构有何区别?为什么同一 ISA 可以有许多代处理器?
- 组合电路和时序电路的分界是什么?寄存器为何能把长逻辑路径切开?
- cache 为什么依据局部性有效?若访问完全随机,它还剩下什么价值?
- 中断与 DMA 分别减少了 CPU 的哪类负担?二者为何经常配合?
- 虚拟存储为什么既是操作系统概念,也是硬件机制?
手算题¶
1. 补码¶
用 8 位补码表示 \(-37\),再与 \(50\) 相加。写出逐步取反加一和最终结果,并判断是否溢出。
2. Cache¶
某直接映射 cache 有 16 组,每块 16 B,物理地址为 32 位。求块内偏移、组索引和 tag 的位数。地址 0x12345678 映射到哪一组?
3. 流水线¶
对下面序列画五级流水时空图。假设有 EX/MEM 与 MEM/WB 转发,但 load-use 仍需停顿一拍:
4. Amdahl¶
程序中 70% 的执行时间可被加速 5 倍。总加速比是多少?如果把可加速部分提升到无限快,上限又是多少?
综合追踪题¶
假设一条 lw x5, 8(x10) 首次访问某虚拟页且对应数据不在 L1,但页已在主存。请依次说明:取指、译码、地址计算、TLB miss、页表遍历、cache miss、主存返回、寄存器写回中,每一步读取和更新了哪些状态。哪些步骤可重叠,哪些必须等待?
设计题¶
你要为低功耗传感器设计处理器。工作负载分支少、代码小、实时性要求高,但峰值算力要求不高。请在以下设计中作选择并给理由:
- 单周期、短流水还是深流水;
- 大而多路的 cache,还是小而可预测的 scratchpad;
- 复杂乱序执行,还是简单顺序执行;
- 是否加入 SIMD。
答案没有唯一配置,评分重点是能否把性能、功耗、面积、可预测性和软件复杂度放进同一张权衡表。
自评标准¶
- 能复述:知道名词和公式。
- 能计算:可完成地址拆分、CPI、AMAT 和 Amdahl 手算。
- 能追踪:能沿指令路径指出每个状态元件和等待点。
- 能设计:能说明优化收益、适用条件、代价及新的瓶颈。
达到后三层,才意味着知识从“章节记忆”变成了可迁移的机器模型。