RISC-V 指令使用模组化的设计,包括几个可以互相替换的基本指令集,以及额外可以选择的扩充指令集.所有基本跟扩充的指令集都是由各路大神合作开发的,基本指令集规范了指令跟他们的编码,控制流程,暂存器数目以及它们的长度,记忆体跟寻址方式,逻辑运算以及其他,只要有软体以及一个通用的编译器的支援,只用基本指令集就可以制作一个简单的通用型的电脑.简单地说,只要支持某个指令集,那么他就就应该设计得一毛一样.
下面介绍一些指令集,其中粗体代表已经稳定的指令集,暂时是不会大改的了.当然只是截至本文发出来的时间.想最新要看官网的 => https://riscv.org/specifications/privileged-isa/
基本指令集
- RV32I - 32位整数指令集
- RV32E - 32位整数指令集(嵌入式,16位暂存器.)
- RV64I - 64位整数指令集
- RV128I - 128位整数指令集
扩展指令集
- M - 整数乘除法
- A - 原子操作(Atomic)
- F - 单精度浮点
- D - 双精度浮点
- Zicsr - 控制和状态寄存器
- Zifencei - 指令隔离
- Q - 四倍精度浮点
- L - 十进制浮点补充
- C - 压缩指令
- B - 位运算
- J - 指令翻译
- T - 顺序读写储存
- P - SIMD
- V - 向量运算
- Zam - 非对齐原子访问
- Ztso - 强序访问
- Svnapot - NAPOT翻译
- Svpbmt - 基于页的访问
- Svinval - 细粒度地址转换
- N - 用户中断
设计模式
- S - Supervisor
- U - User
最近新发布的指令:
https://wiki.riscv.org/display/HOME/Recently+Ratified+Extensions
因为RISC-V的设计很开放,不像ARM分A5,A7之类内核,那么怎么看自己处理器是什么呢?
~$ cat /proc/cpuinfo
processor : 0
hart : 0
isa : rv64imafdcvu
mmu : sv39
可见,我这个是64位整数指令集(rv64i) + m(整数乘除法) + a(Atomic) + f(单精度浮点) + d(双精度浮点) + c(压缩指令) + v(向量计算) + u(用户模式)
实现的指令越多,这个自然就越长了,也就越牛逼,也能直接从这里看出支持的程度.