当处于U模式的处理器尝试取指或者进行load或store操作时,会将地址和所有的PMP地址寄存器比较,当访问的地址满足PMP配置规定,才可以继续进行访问,如果与PMP配置相悖,将会引发访问异常;如果该核对任意一级页表所在的物理地址没有访问权限,那么这次地址访问将会失败,并触发指令访问错误(instruction access fault),陷入到 M-mode异常处理机制下。对于芯来N300系列Core是为微控制器设计的低功耗Core,因此不支持内存管理单元MMU,所以所有的地址访问操作都是使用物理地址。为了执行内存访问保护和根据存储器物理地址和执行特权模式进行隔离,RISC-V标准体系结构定义物理内存保护机制:物理内存保护(PMP)。
PMP 是 RISC-V 架构 specification 中规定的一种硬件安全特性,用于限制对物理内存的访问。使用 PMP 可以将物理内存划分为多个区域,并对每个区域分别设置读、写、可执行权限。处理器中每个核都有一个独立的 PMP 单元,用于限制核对物理内存的访问。
sPMP 是 RISC-V 架构 specification 中增加的面向未支持MMU功能的loT嵌入式场景,由于该系统直接使用物理地址进行寻址,需要借助sPMP来替代MMU单元限制U-mode和S-mode的访存权限过高的问题。