RISCV——指令集spec阅读笔记——特权级

1. RSIC-V工作模式

任何情况下,一个RISCV处理器线程必须运行在某个模式下,而区分这些工作模式的原因是为不同的软件栈部件提供保护。当一个线程试图执行当前模式下不允许的操作,将会产生异常。

  • 三种工作模式
  1. 机器模式(M)
    必选项,另外两种可选;
    通常运行bootloader或者firmware等
  2. 监督模式(S)
    若支持该模式,另外两种须均支持;
    该模式下可以运行linux等OS kernel
  3. 用户模式(U)
    此类系统实现用户和机器模式的区分,从而实现资源保护;
    可以运行应用程序
  • 上电时工作模式切换

上电后(reset),RISC-V架构规定,特权模式复位称为机器模式,机器模式可以通过指令mret转换称为用户模式。

PC复位值由硬件自定义。

2. M模式

1 相关指令

  • mret

当异常程序处理完成后,最终要从异常服务程序中退出,并返回主程序。riscv中定义了一组退出指令mret,sret,uret,对于机器模式,对应mret。注意高等级的特权模式可以执行低等级的xRET指令,即M模式可以执行MRET,SRET和URET

     在机器模式下退出异常时候,软件必须使用mret。riscv架构规定,处理器执行完mret指令后,硬件行为如下:

  • 停止执行当前程序流,转而从csr寄存器mepc定义的pc地址开始执行。
  • 执行mret指令不仅会让处理器跳转到上述的pc地址开始执行,还会让硬件同时更新csr寄存器机器模式状态寄存器mstatus。mstatus寄存器MIE域被更新为当前MPIE的值。MPIE 域的值则更新为1。

2 CSR寄存器

  • mcause

如果硬件实现需要区分不同的复位类型,那么mcause寄存器的值需要被复位成硬件实现自定义的值;如果硬件实现不需要区分不同的复位类型,那么mcause寄存器的值应复位成0值。

3。

3. S模式

1 相关指令

  • SRET

S模式下使用sret指令返回原先指令的下一条指令

2 CSR寄存器

  • sstatus

S模式下保存和控制当前线程的操作状态
RISCV——指令集spec阅读笔记——特权级_第1张图片

  1. SIE:使能或失能S
  2.   模式下CPU的所有中断

4. 异常

同步异常

中断

5. 中断

硬件机制不支持中断嵌套,可以用软件实现中断嵌套

1 外部中断

计时器中断:

软件中断:

调试中断

你可能感兴趣的:(RISCV)