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 信息汇总

官方信息

  1. RISC-V 官网https://riscv.org/

  2. RISC-V Specifications:[https://riscv.org/technical/specifications/]

IP公司

  1. SiFive:https://www.sifive.com

  2. 平头哥:https://www.xrvm.cn

  3. 芯来:https://www.nucleisys.com

  4. 晶心:https://www.andestech.com

  5. 赛昉:https://www.starfivetech.com