1.3.1 寄存器结构与特权模式定义

RISC-V指令集架构支持32位、64位和128位模式,相应的寄存器位宽为32-bit、64-bit和128-bit。如图1-6所示,RISC-V指令集中有32个整数寄存器x0~x31。其中x1~x31为通用寄存器,保存了整数数值,寄存器x0被预留为常数0,在硬件实现中被固定连接为了0。如果需要实现浮点扩展,则需要另外一组独立的浮点寄存器f0~f31。对于RV32模式,寄存器的宽度为32-bit;对于RV64模式,寄存器的宽度为64-bit;对于RV128模式,寄存器的宽度为128-bit。

· 图1-6 RISC-V指令集寄存器

在汇编语言中,通用寄存器组中的每个寄存器都有别名,见表1-4。

表1-4 RISC-V寄存器用途

RISC-V指令集架构定义了三种工作模式,又称特权模式,见表1-5。特权级别用于为软件堆栈的不同组件之间提供保护,若执行当前特权模式不允许的操作将会导致异常。这些异常通常会导致陷阱,进入底层执行环境。

表1-5 特权模式

其中机器模式为必选的模式,其他两种为可选模式,通过不同的模式组合可实现不同的系统。RISC-V一套指令集几乎可以支持从嵌入式CPU到高性能通用CPU等所有类型,例如:

· 仅有机器模式的,通常为嵌入式系统。

· 支持机器模式与用户模式的系统,可以实现用户模式和机器模式的区分,实现资源保护。

· 支持机器模式、监督模式与用户模式的系统,可以实现类似UNIX的操作系统。