RISC-V ISA 特权架构0_分层特权架构概述
2026/5/15 16:48:04 网站建设 项目流程

基本概念

因为本文是概述篇,所以通过直译文档,结合个人理解给出.

①应用程序使用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特权级别

一个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的核心功能是为操作系统运行提供支持,主要解决以下隔离保护问题:

  1. 特权级别隔离 - 防止用户应用程序执行特权指令(如修改页表或访问敏感寄存器),确保系统稳定性
  2. 内存隔离 - 隔离各应用程序的内存空间,防止相互干扰
  3. 安全上下文切换 - 实现应用程序与操作系统之间的高效安全切换(如处理系统调用和中断异常)
  4. 外部中断处理 - 提供硬件中断的安全接管和处理机制

ii)hypervisor的核心功能是提供虚拟机监控支持,主要解决两个关键隔离问题:一是客户操作系统与hypervisor之间的隔离,二是不同客户操作系统之间的隔离。其实现机制包括以下可选特性:

  1. H模式特权控制:当客户OS运行在S模式时,某些敏感特权指令会被截获并由hypervisor处理,避免直接修改物理硬件状态

  2. 内存虚拟化:客户OS误以为独占全部物理内存,实际上其访问的是客户物理地址,hypervisor需完成两级地址转换(客户物理地址→真实物理地址)

  3. 中断虚拟化:物理中断首先由hypervisor接收,再精准注入到目标虚拟机

  4. 设备/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.vmawfi)或访问其 CSR(如satpsstatus)时,硬件会触发虚拟化管理指令异常(Virtual Instruction Exception),trap 至 H 模式。

  • Hypervisor 模拟指令效果,更新虚拟状态(如 Guest 的vsatp),而非物理状态。

ii) 两级地址转换

  1. GVA → GPA:由 Guest OS 管理的 Guest 页表(vsatp指向)完成,硬件自动处理,Hypervisor 不介入。

  2. GPA → PA:由 Hypervisor 管理的第二阶段页表完成,其基地址存储在hgatp(Hypervisor Guest Address Translation and Protection)寄存器中。

iii) 中断和异常的虚拟化

  • Hypervisor 通过新增 CSR(如hvipvsievstvec)为每个虚拟机模拟和注入虚拟中断。

  • 例如,物理定时器中断到来时,Hypervisor 可设置虚拟机的虚拟中断待定位。下次调度该虚拟机时,硬件自动触发虚拟中断,使其感知为自身的定时器中断。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询