1. 核心解构 (The Kernel)

RISC-V 是开源模块化的指令集。

  • 模块化:核心 (I) + 扩展 (M, A, F, D, C)。
    • RV32I:基础整数指令集。只要实现了这 47 条指令,就是一个合法的 RISC-V CPU。
    • 扩展:M (乘除), A (原子), F/D (浮点), C (压缩 16 位指令)。
  • 通用寄存器:32 个 (x0 - x31)。
    • x0:恒为 0(同 MIPS)。
    • x1 (ra):返回地址。
    • x2 (sp):栈指针。

2. 格式革新 (vs MIPS)

RISC-V 的设计比 MIPS 更“规整”,专为硬件解码优化:

  • 源寄存器位置固定rs1, rs2 在所有格式中位置固定,硬件无需先解码操作码就能读取寄存器。
  • 立即数乱序:立即数的位在指令中是打乱的(如 S 型、B 型),这是为了让硬件连线更简单(即不需要移位器就能直接对齐到 ALU 输入)。
  • 无条件码 (No Condition Codes)
    • MIPS/x86 有标志位 (ZF, CF)。
    • RISC-V 没有标志寄存器!比较和跳转在一条指令完成(如 blt rs1, rs2, label),或者用 slt 写入通用寄存器。
    • 意义:有利于超标量(Superscalar)乱序执行,减少了标志位这个全局依赖瓶颈。

3. 压缩指令 (RV32C)

  • 目的:提高代码密度(Code Density)。
  • 机制:将常用的 32 位指令映射为 16 位指令(如只有 2 个操作数,或者使用常用寄存器子集)。
  • 对比:x86 变长指令解码极难;RISC-V 只有 16/32 位两种长度,解码依然简单。

4. 关联链接

  • 芯片安全:RISC-V 的开源特性使其成为“可信硬件”和对抗硬件木马的重要研究领域。