基本概念
因为本文是概述篇,所以通过直译文档,结合个人理解给出.
①应用程序使用ABI(application binary interface,应用程序二进制接口)运行.ABI包含了用户级ISA和一组与AEE(application execution environment,应用程序执行环境)交互的接口.ABI对应用程序隐藏了AEE细节,以便在实现AEE时具有更大灵活性.
②传统操作系统支持多个应用程序执行,每个应用程序通过ABI与操作系统通信,操作系统提供AEE.就像ABI与AEE交互一样,RISC-V操作系统通过SBI(supervisor binary interface,管理员二进制接口)与SEE(supervisor execution environment,管理员执行环境)交互.SBI由用户级ISA和管理员级ISA以及一组SBI函数组成.SEE可以是低端硬件平台的boot_loader和BIOS风格的IO系统,也可以是高端服务器中由管理员提供的虚拟机,又或者是主机操作系统上一个转换层.
③
一个RISC-V hart(硬件线程)总是以某种特权级别运行.特权级别用于在软件堆栈的不同组件之间提供保护,尝试执行当前特权模式不允许的操作将引发异常,这些异常可以导致hart进入底层执行环境(如切换到更高特权级别).
→注意!特权级别(privilege level)和特权模式(privilege mode)分离
i)特权级别指软件代码本身设计时基于的权限等级,例如supervisor级操作系统,是为S级别设计的软件,预期使用S级别特权指令和CSR.
ii)特权模式指软件实际运行时硬件所处的权限状态(如M/S/U模式).硬件通过特权模式限制指令和资源访问权限.
④机器模式(M模式)在RISC-V硬件平台中具有最高权限,并且是唯一的强制特权级别.M模式下运行的代码通常具有高度可信度,因为它能直接访问底层硬件资源(如中断控制器和内存管理单元).M模式可用于管理RISC-V上的安全执行环境,例如实现可信启动或隔离运行域.→每个特权级别都有一组核心的特权ISA扩展.
⑤
许多RISC-V实现至少支持用户模式(U模式),以保护系统的其余部分免受应用程序影响.还可以添加S模式,以便在监管级操作系统与SEE之间提供隔离.
⑥debug模式可以支持片外调试或制造测试.debug模式(D模式)可以视为额外的一种特权模式,其访问权限甚至高于M模式.
supervisor(监督级)和hypervisor(虚拟化级)设计
问题/难点
①RISC-V特权架构设计遵循的核心原则:为上层软件提供最小但足够的硬件支持,使其能够构建安全高效的系统.→
i)Supervisor的核心功能是为操作系统运行提供支持,主要解决以下隔离保护问题:
- 特权级别隔离 - 防止用户应用程序执行特权指令(如修改页表或访问敏感寄存器),确保系统稳定性
- 内存隔离 - 隔离各应用程序的内存空间,防止相互干扰
- 安全上下文切换 - 实现应用程序与操作系统之间的高效安全切换(如处理系统调用和中断异常)
- 外部中断处理 - 提供硬件中断的安全接管和处理机制
ii)hypervisor的核心功能是提供虚拟机监控支持,主要解决两个关键隔离问题:一是客户操作系统与hypervisor之间的隔离,二是不同客户操作系统之间的隔离。其实现机制包括以下可选特性:
H模式特权控制:当客户OS运行在S模式时,某些敏感特权指令会被截获并由hypervisor处理,避免直接修改物理硬件状态
内存虚拟化:客户OS误以为独占全部物理内存,实际上其访问的是客户物理地址,hypervisor需完成两级地址转换(客户物理地址→真实物理地址)
中断虚拟化:物理中断首先由hypervisor接收,再精准注入到目标虚拟机
设备/I/O虚拟化:实现多个虚拟机对物理设备的安全高效共享
方案原理
①supervisor-操作系统级隔离
i) 特权模式
S模式(Supervisor Mode):CPU 可执行所有特权指令。
U模式(User Mode):执行特权指令会触发异常,并 trap 至 S 模式的异常处理程序。
ii) 基于页表的虚拟内存(SV 方案,如 SV39/SV48)
操作系统通过
satp寄存器控制进程页表,实现虚拟地址到物理地址的转换。不同进程的
satp指向不同页表,确保虚拟地址空间映射至独立物理区域,实现内存隔离。页表条目的权限位(R/W/X)和用户位(U)提供页级权限控制,例如用户程序无法修改仅 S 模式可写的内核代码页。
iii) 异常和中断的委托机制
RISC-V 提供
medeleg(Machine Exception Delegation)和mideleg(Machine Interrupt Delegation)寄存器。M 模式固件(如 OpenSBI)可将特定异常(如
ecall、缺页异常)和中断(如时钟中断、外部中断)委托给 S 模式直接处理。
iv) 安全的上下文切换
通过
ecall指令、寄存器保护及状态保护机制实现。
②hypervisor-虚拟化级隔离
i) 特权模式降级与陷阱虚拟化
H 模式(Hypervisor Mode)运行时:Guest OS 运行于 VS 模式(Virtualized Supervisor),本质上是受限的 S 模式。
当 Guest OS 执行敏感指令(如
sfence.vma、wfi)或访问其 CSR(如satp、sstatus)时,硬件会触发虚拟化管理指令异常(Virtual Instruction Exception),trap 至 H 模式。Hypervisor 模拟指令效果,更新虚拟状态(如 Guest 的
vsatp),而非物理状态。
ii) 两级地址转换
GVA → GPA:由 Guest OS 管理的 Guest 页表(
vsatp指向)完成,硬件自动处理,Hypervisor 不介入。GPA → PA:由 Hypervisor 管理的第二阶段页表完成,其基地址存储在
hgatp(Hypervisor Guest Address Translation and Protection)寄存器中。
iii) 中断和异常的虚拟化
Hypervisor 通过新增 CSR(如
hvip、vsie、vstvec)为每个虚拟机模拟和注入虚拟中断。例如,物理定时器中断到来时,Hypervisor 可设置虚拟机的虚拟中断待定位。下次调度该虚拟机时,硬件自动触发虚拟中断,使其感知为自身的定时器中断。