1、RISC-V 基础
1.1、概述
RISC发明者是美国加州大学伯克利分校教师David Patterson,RISC-V(拼做risk-five)是第五代精简指令集,也是由David Patterson指导的项目,但许多贡献者是该大学以外的志愿者和行业工作者。
指令集是一个CPU的基石,要实现CPU 计算和控制功能,就必须定义好一系列与硬件电路相匹配的指令系统。指令就是我们交代CPU 要执行的操作,指令集就可以简单理解为指令的集合。我们把cpu 能够识别的指令汇总在一起就构成了一个指令集。不同的CPU 有不同的指令集,根据他们的繁简程度可以分为两种:复杂指令集CISC 和精简指令集 RISC。
1.2、指令集
RISC-V就是 RISC 的第五代指令集架构。而 RISC-V 目标就是成为一种完全开放的指令集架构,可被任何学术机构或商业组织自由使用。
RISC-V指令集由“基本指令集 + 扩展指令集”组成。
基本指令集是必选的,扩展指令集是可选的。意思就是可以根据你的实际需求,选择需要使用的指令。例如在一个项目中,如果不需要用到压缩指令,那么就不需要把压缩指令添加进来,从而做到定制化,这也是RISC-V的一大特点。
RISC-V 指令集有 RV32I、RV32E、RV64I、RV64E、RV64I 等等。
RV 代表 RISC-V,32/64 代表 32 位或 64 位,I 和 E 都是基本指令集,在 I 和 E 的基础上,可以添加 D(双精度浮点扩展)、M(整数乘除法)、A(原子扩展)、C(压缩扩展)等扩展指令。
例如,在 RV64I 基础上,添加原子、整数乘除法、双精度浮点、压缩指令,则该指令集称为 RV64IMADC。
我们可以选择一个基础指令集,加上若干个扩展指令集进行搭配使用,就可以得到我们想要的指令集架构,进而根据这样的指令架构,设计出贴合我们需求的 CPU。其中最核心部分是一个基础指令集,叫做 RV32I。RV32I 包含的指令是固定不变的,这为编译器设计人员,操作系统开发人员和汇编语言程序员提供了稳定的基础框架。
基本指令集
指令集名称 | 描述 | 版本 | 状态 |
---|---|---|---|
RV32I | 基本整数指令集, 32位元 | 2.1 | 已批准 |
RV32E | 基本整数指令集(嵌入式系统), 32位元, 16 个暂存器 | 2.0 | 已批准 |
RV64I | 基本整数指令集, 64位元 | 2.1 | 已批准 |
RV64E | 基本整数指令集(嵌入式系统), 64位元, 16 个暂存器 | 2.0 | 已批准 |
RV128I | 基本整数指令集, 128位元 | 1.7 | 开放 |
标准扩充指令集
指令集名称 | 描述 | 版本 | 状态 |
---|---|---|---|
M | 整数乘除法标准扩充 | 2.0 | 已批准 |
A | 不可中断指令(Atomic)标准扩充 | 2.1 | 已批准 |
F | 单精度浮点标准扩充 | 2.2 | 已批准 |
D | 双精度浮点标准扩充 | 2.2 | 已批准 |
Zicsr | 控制与状态寄存器 | 2.0 | 已批准 |
Zifencei | 指令抓取屏障 | 2.0 | 已批准 |
G | 所有以上的扩充指令集以及基本指令集的总和的简称 | 不适用 | 不适用 |
Q | 四精度浮点标准扩充 | 2.2 | 已批准 |
L | 十进位浮点标准扩充 | 0.0 | 开放 |
C | 压缩指令标准扩充 | 2.0 | 已批准 |
B | 位元运算标准扩充 | 1.0 | 已批准 |
J | 动态指令翻译标准扩充 | 0.0 | 开放 |
T | 顺序记忆体存取标准扩充 | 0.0 | 开放 |
P | 单指令多资料流(SIMD)运算标准扩充 | 0.9.10 | 开放 |
V | 向量运算标准扩充 | 1.0 | 冻结 |
Zk | 标量加密标准扩充 | 1.0.1 | 已批准 |
H | Hypervisor 标准扩充 | 1.0 | 已批准 |
S | Supervisor 标准扩充 | 1.12 | 已批准 |
Zam | 非对齐不可中断指令标准扩展 | 0.1 | 开放 |
Zihintpause | 暂停提示 | 2.0 | 已批准 |
Zihintntl | 非时间局部性提示 | 0.2 | 开放 |
Zfa | 额外浮点运算指令标准扩展 | 0.1 | 开放 |
Zfh | 半精度浮点标准扩展 | 1.0 | 已批准 |
Zfhmin | 半精度浮点最小集标准扩展 | 1.0 | 已批准 |
Zfinx | 整数寄存器单精度浮点标准扩展 | 1.0 | 已批准 |
Zdinx | 整数寄存器双精度浮点标准扩展 | 1.0 | 已批准 |
Zhinx | 整数寄存器半精度浮点标准扩展 | 1.0 | 已批准 |
Zhinxmin | 整数寄存器半精度浮点最小集标准扩展 | 1.0 | 已批准 |
Zmmul | 整数纯乘法标准扩展 | 1.0 | 已批准 |
Ztso | 全存储排序标准扩展 | 1.0 | 已批准 |
1.3、RISC-V 信息汇总
官方信息
RISC-V 官网https://riscv.org/
RISC-V Specifications:[https://riscv.org/technical/specifications/]