RISCV-READ

Privileged Mode

之前提到的指令都能在用户模式(User Mode)下执行,除此之外,还有机器模式(Machine Mode)监管模式(Supervisor Mode)

高特权模式不仅能访问低特权模式的功能,而且具备低特权模式不可用的额外功能

额外功能具象化为特权指令CSR寄存器

0. 特权指令与CSR寄存器

1727073509626

指令布局可见

CSR寄存器:[m/s]status、[m/s]scratch、[m/s]ip、[m/s]ie、[m/s]tval、[m/s]tvec、[m/s]cause、[m/s]epc

1. 机器模式

机器模式的最重要特性就是拦截和处理异常

M-mode的指令:mret&wfi(告知处理器目前无实质性工作,故它进入低功耗模式,直到任意使能的中断到来,即mie&mip!=0)

wfi与mstatus.MIE无关

!!!!!!!重点理解时钟中断处理程序

2. 用户模式

为什么需要用户模式?

当处于U模式的处理器尝试取指或访存时,其地址会和所有 PMP 地址寄存器比较。若地址大于等于第 i 个 PMP 地址寄存器,但小于第i+1个PMP地址寄存器,则让第i+1个PMP配置寄存器决定是否允许该访问,若否,则抛出一个访问故障异常

pmpcfg中R、W、X字段分别表示读(取数)、写(存数)和执行(取指)权限;A字段用于表示是否启用PMP,1表示启用

pmpaddr和pmpcfg均为CSR寄存器

3. 监管模式

为什么需要监管模式?

S-Mode下的异常和中断

页式虚拟内存

1727160531657

虚拟地址->物理地址的过程(如上图Sv32)

  1. satp.PPN给出根页表的基地址,VA[31:22]给出一级索引,处理器将读取根页表中位于satp.PNN4Ki+VPN[32:22]4的PTE
  2. 该PTE的PPN字段表示下一级页表的基地址(V为1,R、W、X全为0),处理器将读取下一级页表中位于PTE.PPN4Ki+VPN[21:12]4的PTE
  3. 该PTE的PPN字段表示物理页号(V为1,R、W、X中不全为0),处理器将读取最终的物理地址LeafPTE.PPN*4Ki+VA[11:0]

Sv32和Sv39的区别在于PTE位宽分别为32和64,级数分别为2和3

如果所有的取值、读数和存数都需要这样从VA->PA的翻译,则性能会很低,所以引入了TLB(Translation Lookaside Buffer);sfence.vma用于降低TLB本身的开销

4. 标识和性能CSR

hpm:Hierarchical Performance Monitoring