乐鑫C3对接鸿蒙芯片乐鑫深圳代理商RISC-V指令集/寄存器等概述,RISC-V 基金会发布了 RISC-V 架构,定义了指令集、寄存器组、特权模式和异常事件处理机制等。RISC-V 指令集采用模块化结构,由基本指令集和扩展指令集组成,用字母表示指令集模块。
1.指令集
整数指令集是 RISC-V 基本指令集模块,用字母“I”表示,是所有 RISC-V 处理器中强制要求的指令集模块。乐鑫C3对接鸿蒙芯片乐鑫深圳代理商RV32I、RV64I 和 RV128I分别表示 32 位、64 位和128位 RISC-V 整数指令集。RV32E 是 RV321 的简化指令集,为嵌人式系统而设计,以减少所使用的通用寄存器数量。RISC-V主要扩展模块有乘法与除法指令(M)、原子操作指令(A)、单精度浮点指令(F)、双精度浮点指令(D)和压缩指令(C)等。通常模块“I”“M”“A”“F”和“D”的特定组合“IMAFD”称为通用组合,用英文字母“G”表示。例如,RV32G 与 RV32IMAFD 相同,RV64G 与RV64IMAFD 相同。设计 RISCV 处理器时,可以根据不同应用场景的需求,选择一个基础指令集模块和多个扩展指令集模块的组合。除了上述模块外,十进制浮点(Decimal Float Point,L)、位操作(B)、封装的单指令多数据(Packaged-SIMD,P)、向量(V)和事务性内存(Transactional Memory,等指令集模块在完善中。
2.寄存器
RV321支持32个通用奇存器,每个寄存器均为 32 位,寄存器 0 恒为0,其他31个寄存器 xl~x31是可以任意读/写的通用寄存器。乐鑫C3对接鸿蒙芯片乐鑫深圳代理商RV64I同样支持 32 个通用寄存器,寄存器 x0 恒为 0,但每个通用存器 64 位。为了使汇编程序更容易阅读,汇编程序中经常采用应用程序二进制接口协议(Application Binary Interface,ABI)所定义的寄存器名称。表 列出了32 个通用寄存器及其在 ABI 协议中对应的名称。
寄存器名称 ABI 名称 说明
x0 zero 恒定值 0
xl ra 程序返回地址
x2 sP 栈空间指针
x3 gp 全局变量空间指针(基地址)
x4 tp 线程变量空间指针(基地址)
x5~x7 t0~t2 临时寄存器
x8,x9 s0 ,sl 保存寄存器(函数调用时保存数据)
xl0~x17 a0~a7 函数参数寄存器(函数参数传递)
x18~x27 s2~s11 保存寄存器(函数调用时保存数据)
x28~x31 t3~t6 临时寄存器
编写汇编程序时,可以不受 ABI 协议名称的限制,根据需要使用通用寄存器例如,可以使用函数参数寄存器 a0~a7 保存临时变量。“F”“D”和“Q”三个浮点指令集扩展模块支持 32 个通用浮点寄存器 f0~f31,所支持的通用浮点寄存器宽度分别为 32 位、64 位和 128 位。RISC-V 处理器架构定义了一组控制和状态寄存器(Control and Status Regis-ter,CSR)用于记录处理器内核运行状态,以及管理处理器内核中的功能单元。乐鑫C3对接鸿蒙芯片乐鑫深圳代理商CSR是Hart 内部寄存器,使用 12 位独立空间地址编码。CSR 空间独立于处理器存储空间,使用特定的 CSR 指令进行访问。RV32 内核中,CSR 寄存器的宽度是 32 位。不同于 ARM 处理器,RISC-V 采用独立的程序指针寄存器 PC。在执行指令过程中 PC 自动变化,不能使用通用寄存器访问指令直接修改 PC 寄存器的值。
3.特权模式
RISC-V 处理器架构定义了处理器的特权模式:特权模式(Privileged Mode)和非特权模式(Unprivileged Mode)。特权模式包括机器模式(Machine Mode,M)、管理员模式(Supervisor Mode,S)和超级管理员模式(Hypervisor Mode,H)。非特权模式指用户模式或应用模式(User/Application Mode,S)。表 4.3 列出了不同模式的特权等级(Privilege Level),其中,机器模式的特权等级是 3,高;用户模式的特权等级是 0,低。
RISC-V架构特权模式及等级
等级 编码 名称 缩写
0 00 用户/应用模式(User/Application Mode) U
1 01 管理员模式(Supervisor Mode) S
2 10 超级管理员模式(Hypervisor Mode) H
3 11 机器模式(Machine Mode) M
RISCV架构不要求所有 RISC-V 处理器同时支持这 4 种特权模式。乐鑫C3对接鸿蒙芯片乐鑫深圳代理商RISC-V处理器的可选特权模式组合。设计处理器时,可面向不同的应用,选择支持的模式组合。简单微控制器可以仅支持机器模式(M)。如果需要支持虚拟机则必须选择支持所有 4 种特权模式的组合。
RISC-V处理器支持的模式
模式数量 支持模式 目标应用
1 M 简单嵌人式系统
2 M、U 安全嵌入式系统
3 M、S、U 支持 UnixLinux、Windows 等操作系统
4 M、H、S、U 支持虚拟机系统
RISC-V处理器内核(Hart)复位后自动进入机器模式(M)。异常事件以及改写特定的控制和状态寄存器(Control and Status Registers,CSR)可以改变处理器内核的特权模式。程序可以在处理器内核的不同特权模式下运行。在不同特权模式下,运行程序访问处理器资源的权限不一样。乐鑫C3对接鸿蒙芯片乐鑫深圳代理商机器模式(M)是所有 RISC-V 处理器唯一必须实现的特权模式。在机器模式下所运行的程序权限高,支持处理器的所有指令,可以访问处理器内全部资源。用户模式(U)是可选模式,权限低。在用户模式下运行的程序仅可以访问处理器内部限定的资源。
管理员模式(S)是可选模式,旨在支持类 Unix 操作系统,如 Linux,FreeBSD利Windows 等。管理员模式访问资源的权限比用户模式高,但比机器模式低。超级管理员模式(H)是可选模式,其有仅次于机器模式的权限,支持虚拟机管度功能。
4.异常与中断
在执行程序指令流时,处理器内核必须能够响应和处理异常事件(Excepmia Events)。处理器内核通过异常处理机制响应异常事件,并能够暂停和恢复被异常件中断的程序。广义地讲,将处理器运行时影响程序正常运行过程的所有事件都称为“异常”,而不管这些事件是来源于处理器的内部还是外部。广义“异常(Exception)”常被分为狭义“异常”和“中断(Interrupt)”。狭义“异常”通常指处理器内核的错误事件,或者由处理器的专有指令生成的事件。后者又称为“软中断”或“内陷(Trap)”。“中断”通常指来自处理器内核外部的事件。中断由与处理器相连的特定物理信号的电平变化产生。本文后面所提及的“异常”指狭义的“异常”。
RISC-V 处理器架构定义了一套相对简单的中断和异常处理机制。通过 CSR 寄存器,处理器内核能够更加方便、灵活地管理异常和中断处理过程。乐鑫C3对接鸿蒙芯片乐鑫深圳代理商RISC-V 处理器架构还允许处理器设计者根据应用需求定制和扩展中断和异常处理功能。