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 的开源特性使其成为“可信硬件”和对抗硬件木马的重要研究领域。