RISC-V 指令集模块
TODO
本章需要补充各指令集间的主要差异。
另外,如果能有一个 交互式表格,用于筛选不同扩展集下支持的指令是最好的。
RISC-V 指令集采用模块化设计,分为以下三类:
- 基础指令集:主要规定了基本控制流、寄存器操作(及其大小)、内存和寻址操作、逻辑操作、 整数运算操作和各种必要的辅助指令。
- 标准扩展指令集:由 RISC-V 基金会审查、批准和发布的扩展指令集,与基础指令集不发生任何冲突。
- 自定义扩展指令集:由硬件厂商自行设计添加的扩展指令集,无需经过任何第三方的审查、批准流程。
对于 基础指令集 和 标准扩展指令集 而言,每个指令集模块都有属于各自的独立版本号, 并分为 正式批准 (Ratified)、冻结 (Frozen) 和 开放 (Open) 三种状态:
- 正式批准 (Ratified):指令集模块已经过 RISC-V 基金会审查、批准并加入 RISC-V 指令集规范
- 冻结 (Frozen):指令集模块已基本定稿,不再做过多的修改,只进行必要的安全与性能更新
- 开放 (Open):指令集模块仍可接受新的修改提案。
对于底层系统软件开发者而言,如果需要使用 RISC-V 架构的原始指令,需要注意尽可能使用处于 “正式批准”或“冻结”状态的指令。
基础指令集
下表展示了截至 2022 年 11 月的 RISC-V 基础指令集及其发行状态。
模块名称 | 描述 | 版本 | 状态 | 指令数量 |
---|---|---|---|---|
RV32I | 32 位基本整数指令集 | 2.1 | 批准 | 40 |
RV32E | 32 位基本整数指令集 (嵌入式,16 寄存器) | 1.9 | 开放 | 40 |
RV64I | 64 位基本整数指令集 | 2.1 | 批准 | 15 |
RV128I | 128 位基本整数指令集 | 1.7 | 开放 | 15 |
标准扩展指令集
下表展示了截至 2022 年 11 月的 RISC-V 标准扩展指令集及其发行状态。
模块名称 | 描述 | 版本 | 状态 | 指令数量 |
---|---|---|---|---|
M | Standard Extension for Integer Multiplication and Division | 2.0 | 批准 | 8 (RV32) 13 (RV64) |
A | Standard Extension for Atomic Instructions | 2.1 | 批准 | 11 (RV32) 22 (RV64) |
F | Standard Extension for Single-Precision Floating-Point | 2.2 | 批准 | 26 (RV32) 30 (RV64) |
D | Standard Extension for Double-Precision Floating-Point | 2.2 | 批准 | 26 (RV32) 32 (RV64) |
Zicsr | Control and Status Register (CSR) | 2.0 | 批准 | 6 |
Zifencei | Instruction-Fetch Fence | 2.0 | 批准 | 1 |
G | Shorthand for the IMAFDZicsr_Zifencei base and extensions | — | — | |
Q | Standard Extension for Quad-Precision Floating-Point | 2.2 | 批准 | 28 (RV32) 32 (RV64) |
L | Standard Extension for Decimal Floating-Point | 0.0 | 开放 | |
C | Standard Extension for Compressed Instructions | 2.0 | 批准 | 40 |
B | Standard Extension for Bit Manipulation | 1.0 | 批准 | 43 |
J | Standard Extension for Dynamically Translated Languages | 0.0 | 开放 | |
T | Standard Extension for Transactional Memory | 0.0 | 开放 | |
P | Standard Extension for Packed-SIMD Instructions | 0.9.10 | 开放 | |
V | Standard Extension for Vector Operations | 1.0 | 冻结 | 187 |
K | Standard Extension for Scalar Cryptography | 1.0.1 | 批准 | 49 |
N | Standard Extension for User-Level Interrupts | 1.1 | 开放 | 3 |
H | Standard Extension for Hypervisor | 1.0 | 批准 | 15 |
S | Standard Extension for Supervisor-level Instructions | 1.12 | 批准 | 4 |
Zam | Misaligned Atomics | 0.1 | 开放 | |
Ztso | Total Store Ordering | 0.1 | 冻结 |