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 | 冻结 |
