RISC-V特权架构 - 特权模式与指令

[复制链接]
发表于 2026-2-12 23:16:09 | 显示全部楼层 |阅读模式
本文属于《 RISC-V指令集根本系列教程》之一,接待检察别的文章。
1 特权模式

RISC-V 架构界说了三种告急的工作模式,也被称为特权模式
这些模式的告急区别在于,它们的权限级别和所可以大概实验的利用,工作模式编码,如下图所示:



  • 用户模式(User Mode)
   权限品级最低。
在这个模式下运行的步伐(如应用步伐)不能直接访问硬件资源或实验特权利用。
用户模式提供了最根本的步伐实验环境,用于隔离和掩护利用体系内核和其他步伐。
它确保了应用步伐的稳固性和安全性,防止它们对体系造成侵害。
  

  • 羁系模式(Supervisor Mode,也称为超等用户模式)
   权限品级介于用户模式和呆板模式之间。
通常用于利用体系内核的运行
在羁系模式下,步伐可以实验一些特权利用,如访问物理内存、管理装备驱动步伐等。
它允许利用体系管理硬件资源,为多个用户模式的步伐提供服务和调理。
  

  • 呆板模式(Machine Mode)
   权限品级最高。
在这个模式下,步伐可以实验全部利用,包罗直接访问和修改全部硬件资源。
呆板模式通常用于硬件初始化、体系引导、制止和非常处置惩罚等关键任务。
由于其高度特权,呆板模式通常只允许特定的、受信托的代码运行。
  这些模式的优先级次序为:呆板模式 > 羁系模式 > 用户模式
呆板模式,是最高级特权,也是 RISC-V 硬件平台唯一必须实现的特权级。
处置惩罚器通常在最低特权模式下运行,当发生制止和非常时,则将控制权转移到更高特权的模式。
这些模式的存在意义在于提供了一种机动而安全的盘算环境。通过限定差别步伐的权限,RISC-V 架构可以大概防止恶意软件或不受信托的步伐对体系造成侵害。同时,它也允许利用体系有用地管理硬件资源,确保多个步伐可以大概公平地共享这些资源。
RISC-V 架构的模块化计划使得这些模式可以根据须要举行组合和设置,从而满意差别体系的需求。比方,一些嵌入式体系大概只须要用户模式和呆板模式,而不须要羁系模式。
2 特权指令

RISC-V 特权架构的指令表示图,如下所示:

RISC-V具备的特权指令,如下所示:

特权架构添加的指令非常少,但增长了多少控制状态寄存器(CSR)来实现其新增功能
2.1 mret(从呆板模式返回到先前的模式)

指令情势:mret
在RISC-V架构中,mret(Machine Return)指令用于从非常或制止处置惩罚步伐返回到先前的实验环境(通常是从呆板模式返回到之前的模式,如羁系模式或用户模式)。这个指令负责规复处置惩罚器的状态,并确保返回到正确的实验所在。
具体来说,当处置惩罚器遇到制止或非常时,它会切换到呆板模式(M模式)以处置惩罚该制止或非常。在处置惩罚完成后,mret指令被用来退出呆板模式,并返回到之前的状态和模式
mret指令的实验过程涉及以下几个步调:


  • 规复状态:mret指令会从特定的CSR寄存器(如mstatus、mepc等)中规复处置惩罚器的状态。这些寄存器在制止或非常发生时生存了处置惩罚器的状态信息。
  • 切换模式:根据mstatus寄存器中的MPP字段的值,mret指令将决定返回到哪个模式(呆板模式、羁系模式或用户模式)。
  • 跳转到步伐计数器:mret指令将mepc寄存器中的值(即制止或非常处置惩罚完成后应该返回的步伐所在)复制到步伐计数器(PC),从而确保处置惩罚器从正确的所在开始实验。
须要留意的是,mret指令只能在呆板模式下实验,而且只有在软件修改了mstatus寄存器的MPP字段以指定要返回到的模式之后,才华安全地利用该指令举行返回利用。
总的来说,mret指令在RISC-V架构中饰演着从呆板模式返回到其他模式的关键脚色,确保了处置惩罚器在制止或非常处置惩罚完成后可以大概正确地规复到先前的实验环境。
2.2 sret(从羁系模式返回到先前的模式)

指令情势:sret
在RISC-V架构中,sret(Supervisor Return)指令用于从非常或制止处置惩罚步伐返回到监视模式(Supervisor Mode)。它是RISC-V处置惩罚器的一组退出指令之一,专门用于在监视模式下退出非常
当处置惩罚器在实验用户模式的步伐时遇到须要由监视模式处置惩罚的非常或制止时,它会切换到监视模式来实验相应的非常或制止处置惩罚步伐。在非常或制止处置惩罚步伐实验完成后,sret指令被用来从监视模式返回到用户模式,并继承实验原来的步伐。
sret指令的实验过程与mret雷同,也会规复处置惩罚器的状态并跳转到正确的步伐计数器(PC)。它会从特定的CSR寄存器(如sstatus、sepc等)中规复监视模式的状态信息,并将sepc寄存器中的值复制到步伐计数器(PC),从而确保处置惩罚器从正确的所在开始实验用户模式的步伐。
须要留意的是,sret指令只能在监视模式下实验,而且只有在软件修改了相应CSR寄存器的字段以指定要返回到的模式之后,才华安全地利用该指令举行返回利用。
总之,sret指令在RISC-V架构中用于从监视模式返回到用户模式,确保处置惩罚器在非常或制止处置惩罚完成后可以大概正确地规复到用户模式的实验环境。
2.3 wfi(等候制止)

指令情势:wfi
RISC-V架构中的WFI(Wait For Interrupt)指令是一条特殊的休眠指令。当处置惩罚器实验到WFI指令后,它会制止实验当前的指令流,进入一种空闲状态,通常被称为“休眠”状态。处置惩罚器会在这个状态劣等候,直到吸收到一个使能的制止哀求,这时处置惩罚器会被唤醒并继承实验。
具体来说,WFI指令的作用是将处置惩罚器置于低功耗的等候状态,直到下一个制止或触发变乱发生。在这个过程中,CPU的功耗会被降到最低程度。这是一种常用于节能和功耗优化的待机指令。
别的,WFI指令也可以被看成一种NOP(无利用)指令来利用,即它不会真正进入休眠模式,但仍然会制止当前的指令实验,直到下一个制止或触发变乱发生。
须要留意的是,WFI指令的实验须要满意一些条件,比方制止局部开关必须被打开(由mie寄存器控制),而且全局制止也须要被使能(由mstatus寄存器的MIE域控制)。假如制止被全局关闭,处置惩罚器在唤醒后会继承次序实验之前制止的指令流。
总的来说,WFI指令在RISC-V架构中提供了一种有用的机制来低落处置惩罚器的功耗,并在须要时通过制止来唤醒处置惩罚器,从而实现了节能和高效的处置惩罚器管理。
2.4 sfence.vma(内存屏蔽)

指令情势:sfence.vma rs1, rs2
在RISC-V架构中,sfence.vma指令是一个同步屏蔽(Synchronization Fence)指令,用于确保内存利用的次序性。这条指令在RISC-V的特权模式(Supervisor Mode)中提供内存访问的同步机制。
sfence.vma指令的具体语法是sfence.vma rs1, rs2,此中rs1和rs2是两个寄存器利用数。然而,须要留意的是,只管sfence.vma指令担当两个寄存器利用数,但这两个利用数并不直接到场指令的功能。实际上,这两个寄存器通常被设置为零,由于sfence.vma指令的活动不依靠于这两个寄存器的具体值。
sfence.vma指令的告急作用是创建一个内存屏蔽,确保在指令之前的全部内存写利用(Store)在指令实验后对全部后续的内存读利用(Load)都是可见的。换句话说,它确保了在sfence.vma指令之前的全部写利用在指令实验后都已经被革新到内存中,而且后续的读利用可以大概读取到这些更新的值
这种内存屏蔽机制在并发编程和多处置惩罚器体系中非常告急,由于它可以防止内存访问的竞态条件(Race Condition)。比方,当多个处置惩罚器或线程同时访问和修改共享内存时,假如没有适当的同步机制,就大概出现一个处置惩罚器读取到的内存值是另一个处置惩罚器尚未写入的旧值的环境,从而导致步伐活动的不正确。通过利用sfence.vma指令,可以确保内存访问的次序性,从而制止这类题目。
须要留意的是,sfence.vma指令只在Supervisor Mode下有用,而且在其他模式下实验该指令将导致未界说活动。别的,该指令的具体活动大概还取决于处置惩罚器的具体实现和设置。因此,在利用sfence.vma指令时,发起查阅干系的处置惩罚器文档或参考手册以获取正确的信息。
3 特权模式的切换

在 RISC-V 架构中,三种特权模式(用户模式、羁系模式、呆板模式)之间的切换是通过特定的指令和体系寄存器的共同来实现的。
(1) 指令控制


  • 利用特定的特权切换指令,如 mret(从呆板模式返回到先前的模式)、sret(从羁系模式返回到先前的模式)和 uret(从用户模式返回到先前的模式)。这些指令用于在完成特权利用后安全地返回到较低权限的模式。
(2) 体系寄存器


  • RISC-V 架构利用了一组称为 Control and Status Registers (CSRs) 的特殊寄存器来管理特权级别的切换。此中,mstatus 寄存器是呆板状态寄存器,包罗了关于呆板模式状态的信息。
  • mstatus.mpp 字段用于指示当前特权级别。当须要切换特权级别时,软件会修改 mstatus.mpp 字段的值,并通过实验相应的返回指令来实际实验切换。
(3) 制止和非常处置惩罚


  • 当发生制止或非常时,处置惩罚器会根据制止或非常的范例自动切换到相应的特权级别。比方,处置惩罚器吸收到一个制止时,大概会切换到呆板模式来处置惩罚该制止。
  • 制止和非常处置惩罚完成后,处置惩罚器会根据 mstatus.mpp 寄存器的值返回到先前的特权级别。
(4) 硬件支持


  • RISC-V 架构的硬件计划支持这些模式的切换。处置惩罚器在实验特权切换指令时,会查抄当前的特权级别和目的特权级别,并实验须要的状态生存和规复利用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表