ISA Design Principles(指令集设计原则)

ISA 是软硬件唯一契约;微架构 是 ISA 的具体硬件实现(可换而不改程序语义)。

Load/Store 架构

RISC-V / ARM / MIPS 采用 Register-Register + Load/Store

  • 运算只操作寄存器;访存仅通过 lw/sw
  • 简化 ALU 与译码;内存地址计算与运算分离

对比 CISC(x86)任意指令可访存 → 译码复杂,现代 x86 内部仍 μop 翻译为 RISC 风格执行。

RISC-V 指令编码

固定 32 位,五种格式 R/I/S/B/U/J:

  • opcode 总在低 7 位 → 并行译码
  • 寄存器字段位置固定 → 流水化解码
  • x0 = 0 硬连线:清零/移动无需专用指令

CISC vs RISC 对比

维度CISC (x86)RISC (RISC-V/ARM)
指令长度可变 1–15 B固定 4 B(RVC 压缩除外)
寻址模式20+Load/Store + 偏移
寄存器16 (x86-64)32
解码复杂简单并行

历史结论:RISC 赢性能;CISC 靠生态存活。NPU/加速器领域专用 ISA(如 WSE CSL、TPU 指令)借鉴 极简 + 编译器可见 的 RISC 哲学。

寄存器数量权衡

  • 太少 → spill/reload,增 IC 与内存流量
  • 太多 → 编码 bit 增加、上下文切换开销
  • 32 个 GPR 为广泛采用的甜点(x86-64 的 16 个为历史包袱)

条件码 vs 条件移动

  • 条件码 (flags):cmp + 条件分支,简单但引入隐式依赖
  • 条件移动 (cmov):predicated 写回,减少分支但增寄存器压力

OoO CPU 用 寄存器重命名 + 分支预测 掩盖条件码成本;Deterministic Execution / 数据流架构则倾向 显式依赖、无隐式 flags

相关页面

Citations

[1] arch-study-30d-day-03.md — RISC-V Ch.2(Day 3) [2] arch-study-30d-day-04.md — H&P Appendix A ISA 对比(Day 4)