一、基本介绍
RISC-V是一款基于RISC思想的开源ISA。该ISA由UC Berkeley的David A. Patterson教授带头开发,有着架构简单、工具链完整、模块化设计等优点。下面将介绍一些RISC-V的特性
- 模块化ISA
RISC-V使用模块化的指令集,I代表基本指令集,包含了整数运算指令、LS指令与跳转指令。针对I指令集,有RV32、RV64和RV128来满足不同的字长需要。除I之外,还有M(乘除指令集)、A(原子操作指令集)、F(单精度浮点指令集)、D(双精度指令集)、Q(四精度指令集)、C(压缩指令集)等,其中一些指令需要特别的硬件支持。当存在减少功耗面积的需要时,也可以使用E(嵌入式指令集,与I基本相同)
- 可配置通用寄存器
RISC-V支持32、64、128位架构,每个包含32(I)个或16(E)个整数通用寄存器,其中X0寄存器永远置0。
若使用了F或D,则还需额外配置32个32位(F)或64位(D)浮点通用寄存器
- 规整指令编码
寄存器索引在指令的固定位置,加快解码速度
- 简单的访存
同其他RISC架构相同,通过单独的LS指令来访存,但也有一些特别的地方:
(1) 推荐地址对齐访存,但也支持非对齐访存
(2) 仅支持小段格式
(3) 不支持自增或自减模式
(4) 采用relaxed memory model
- 高效跳转
仅需1条指令即可执行条件跳转
- 简洁调用
不使用load/store multiple指令,可电路实现或使用公用程序库
-
无“条件码指令”
-
无delay slot
-
无零开销硬件循环
-
产生运算错误时不产生异常,通过其他方法检错
-
对于常用指令存在压缩形式(16位)
-
可自定义扩展
二、缺点分析
相较于ARM这样成熟的RISC体系,RISC-V也存在一些相应的缺点:
1、 生态建设不足
作为一个较新的架构,针对RISC-V的生态建设还不够丰富。相对ARM和MIPS等成熟的架构,RISC-V的应用还十分地有限。同时,RISC-V对Java、Python等语言的支持也远不如成熟架构
2、 工具链完善程度有限
虽然有开源的工具链,但相较成熟的商业化工具链,其性能还是有所差距。这也是限制RISC-V进一步扩大应用范围的原因之一
三、操作系统支持