RISC-V特权模式spec学习笔记

本文基于官方spec进行整理学习 https://wiki.riscv.org/display/HOME/RISC-V+Technical+Specifications

特权模式spec讲了啥,内容有哪些

  • 特权模式的软件视角
    • 软件分层:AEE/SEE/HEE
    • 特权等级:User/Supervisor/Hypervisor/Machine
    • debug模式
  • CSR寄存器 Control and Status Registers (CSRs)
    • CSR寄存器编址约定:特权等级划分、读写属性标识
    • CSR地址映射表
    • CSR寄存器读写属性
  • Machine-Level ISA
    • machine mode读写的寄存器,如mhartid、mstatus、mtvec、mcause
    • machine特权指令,如ecall(所有模式)、mret、sret、wfi(所有模式、U模式可选)
    • 复位、NMI发生后hart状态
    • PMA物理内存属性,原子、order、一致性
    • PMP物理内存保护机制和寄存器
  • Supervisor-Level ISA
    • Supervisor mode读写的寄存器,如sstaus、stvec、scause、satp
    • Supervisor特权指令,如ecal、sret、sfence.vma
    • Page-Based 32/39/48/57-bit Virtual-Memory Systems
  • Hypervisor Extension
    • hypervisor 虚拟化读写的寄存器,如hstatus、vstvec、vepc
    • hypervisor特权指令,load/store、fence

特权模式的软件视角

  • RISC-V指令架构可以运行的3种软件栈分层

  • 特权模式划分
    所有硬件必须提供M-mode,因为它拥有访问整个机器的能力,最简单的RISC-V实现只有M-mode,但是不能抑制恶意APP。
    未扩展前,不支持hypervisor模式

    hypervisor扩展模式,V标识当前hart是否处于虚拟化模式

  • debug mode
    通常RISC-V实现包括一个debug mode来支持片外调试或者制造测试。D-mode可认为是一个额外的特权模式,它甚至比M-mode拥有更多访问能力。调试模式会保留一些只能在D-mode访问的CSR寄存器。

Control and Status Registers (CSRs)

CSR地址映射编码约定

RISC-V ISA使用12bits编码空间定义了最多4096个CSRs,其中[11:10]用于表示读写属性,[9:8]用于表示对应的特权等级,剩余[7:0]作为内部编码。

[11:10] [9:8] [7:0]
读写属性:读写(00/01/10),只读(11) 特权等级:U(00)/S(01)/H(10)/M(11) 内部编码

CSR访问异常类型

  • 访问不存在的CSR会引发illegal instruction exception
  • 访问不适当特权级别的CSR也会引发illegal instruction exception
  • 写入只读寄存器也会引发illegal instruction exception
  • 读写寄存器也可能包含一些只读的位,在这种情况下写入只读位会被忽略

寄存器字段规范

  • WPRI (Reserved Writes Preserve Values, Reads Ignore Values )
    写时保护保留值,读时忽略值,以备将来使用。软件应忽略从这些字段读出的值,在修改其他字段时,应该同时保留这些字段的值。为了向前兼容,实现不提供这些字段时必须将它们硬连线为零。在寄存器描述中标记为WPRI。

  • WLRL(Write/Read Only Legal Values )
    只允许读写合法值。软件只能向这些字段写入合法值,而且只有最后一笔是合法的写操作或者复位时,读取的值才是合法值。当写入不支持的值时,根据具体实现来决定是否引发指令异常。

  • WARL(Write Any Values, Reads Legal Values )
    写入任意值,总是返回合法值。字段规定合法值的范围,但是允许写入任意值,同时保证返回值是合法值。

Machine Level ISA

重要寄存器

mtvec

mcause

mepc

supervisor Level ISA

Hypervisor Level ISA

缩写

缩写 全拼
CSR Control and Status Registers

Reference

https://riscv.org/technical/specifications/

posted @ 2022-07-04 16:02  zephyr~  阅读(1805)  评论(0编辑  收藏  举报