https://riscv.org/specifications/
RISC-V文档包括:用户层指令集文档和特权架构文档,下面这两个文件的官网链接。 用户层指令集文档现在的版本是2.2。 RISC-V的指令集是模块化的,用户层指令集主要包括以下模块,其中有些模块已经冻结,未来不大可能再变化,有些模块仍在讨论中,我们主要关注已经冻结的模块。 基础模块 | 版本 | 是否冻结 | 注释 | RV32I | 2.0 | Y | base的32位整数指令集,32位地址空间,寄存器是32位 | RV32E | 1.9 | N | 嵌入式架构,仅有16个整数寄存器 | RV64I | 2.0 | Y | base的64位整数指令集,64位地址空间,寄存器是64位 | RV128I | 1.7 | N | base的128位整数指令集,支持128为地址空间 | 扩展模块 | 版本 | 是否冻结 |
| M | 2.0 | Y | 支持乘法和除法指令 | A | 2.0 | Y | 支持原子操作指令和Load-Reserved/store-Conditional指令 | F | 2.0 | Y | 单精度浮点指令 | D | 2.0 | Y | 双精度浮点指令 | Q | 2.0 | Y | 四精度浮点指令 | L | 0.0 | N | 十进制浮点数,IEEE754-2008 | C | 2.0 | Y | 支持编码长度为16的压缩指令。 | B | 0.0 | N | 位操作指令 | J | 0.0 | N | 支持动态转化语言 | T | 0.0 | N | transactional memory operations | P | 0.1 | N | Packed-SIMD Instructions | V | 0.2 | N | 向量操作指令 | N | 1.1 | N | 用户层的终端和异常指令 |
Risc-V的基础指令集是整数指令集,在任何架构方案中,必须完整实现基础的整数指令集。在整数指令集中,用补码表示符号数。 在整数指令集的基础上,可以选择实现扩展模块,比如RV32IMAFDC,表示当前实现支持这些模块的组合,其中IMAFD是通过组合,用字母G表示,所以RV32IMAFDC,也可以写作RV32GC。现在的Risc-V编译工具链,重点会支持RV32G和RV64G。 Risv-V的指令编码规则: 对于16位压缩指令,它的低两位不等于11,对于RV32,它的[1:0]=11,[4:2]不等于111。对于64位指令,它的低7位位0111111。
我们主要学习一下几个指令集: RV32I指令集 RV32M指令集 RV32A指令集 RV32FD指令集 RV32C指令集 |