RISC-V 特权架构学习

yang - 2023-04-05

risc-v notes

2023-04-05 RISC-V特权指令级架构 特权级别

特权体系结构

为什么需要分层

软件层级与谁通信通过什么通信
应用程序AEE (Application Execution Environment 应用程序执行环境)ABI (Application Binary Interface 应用程序二进制接口)
操作系统SEE (Supervisor Execution Environment 监管者执行环境)SBI (Supervisor Binary Interface 监管者二进制接口)
超级监管程序HEE (Hypervisor Execution Environment 超级监管者执行环境)HBI (Hypervisor Binary Interface 超级监管者二进制接口)

以上名词翻译仅供参考。

RISC-V ISA的硬件实现通常还需要特权ISA之外的额外功能,以用于支持各种执行环境(AEE,SEE或HEE)。

特权级别

RISC-V 将

级别编码名称缩写
000用户(User)/应用(Application)权级U
101监管者(Supervisor)S
210保留
311机器权级(Machine)M

在具体的硬件实现中,至少需要实现 Machine 模式,其它两种模式根据硬件功能进行组合。 |配置|实现模式|安全保障|内存保护|其它| |:-:|:-:|:-:|:-:|:-:| |无保护的嵌入式硬件|M|需要所有程序可信|无| |带保护的嵌入式硬件|M + U|需要应用程序可信|硬件内存保护| |可运行类 Unix 操作系统的硬件|M + S + U|需要操作系统可信|虚拟内存 + 读写运行保护| |可运行云端操作系统的硬件|M + [V](S + U)|需要超级监管程序可信|2 级虚拟内存 + 读写运行保护|

也可以用 vertical trap来实现 horizontal trap,只要将控制返回给特权模式更低的 horizontal trap handler。

调试模式

2023-04-06 RISC-V特权指令级架构 机器模式、用户模式、监管者模式

机器模式

在 M 模式下运行的 hart 对内存,I/O 和一些对于启动和配置系统来说必要的底层功能有着完全的使用权。M 模式是所有标准 RISC-V 处理器都必须实现的权限模式。

异常

中断时 mcause 的最高有效位置 1,同步异常时置 0。并且 mcause 低有效位表示了中断/异常的具体原因。只有在实现了监管者模式时才能处理监管者模式中断和页面错误异常。

机器模式下的异常处理

用户模式

由于 M 模式下程序代码可以自由地访问硬件平台,而我们有时候并不能信任所有的应用程序代码。因此,RISC-V 提供了保护系统免受不可信的代码危害的机制,并且为不受信任的进程提供隔离保护。这种限制机制是通过加入额外的权限模式:用户模式(U 模式)来实现的。在 U 模式下将无法执行 M 模式的特权指令(如 mret)和访问特权控制状态寄存器(如 mstatus),并且在尝试访问 M 模式指令或访问 CSR 时会产生非法指令异常。

PMP 只能支持固定数量的内存区域保护,且这些区域必须在物理存储中连续。

监管者模式

S 模式的权限比 U 模式高,但是比 M 模式低。S 模式下运行的软件与 U 模式一样不能使用 M 模式的 CSR 和指令,并且受到 PMP 的限制。

监管者模式下的异常处理

RISC-V 提供了一种异常委托机制。通过该机制可以选择性地将中断和同步异常交给 S 模式处理,而完全绕过 M 模式。

异常只在本权限模式处理或向更高权限模式委派,不会移交给权限更低的模式。

基于页面的虚拟内存

S 模式提供了一种传统的虚拟内存系统,它将内存划分为固定大小的页来进行地址转换和对内存内容的保护。

yang
yang

Be curious about the world.