PMA全称为物理内存属性(Physical Memory Attributes)-3,它是RISC-V架构中的一个底层硬件机制,用于定义系统物理内存空间中,每个特定地址范围的固有特性与访问行为。
与同是内存管理的PMP(物理内存保护) 不同,PMA侧重于描述内存本身的属性 (如是否可缓存,是否用于I/O),在芯片设计阶段就已固化-14-2;而PMP则侧重于运行时配置的访问权限 (如读、写、执行),这是两者最根本的区别-14
内存属性
Normal Memory
系统中具备幂等性和弱一致性的大容量主存(如RAM),这是性能优化和缓存一致性发挥作用的主要区域
I/O Memory
用于映射外设寄存器等。通常不具备幂等性(Non-idempotent),即连续两次读同一地址可能得到不同结果,且要求强顺序性(Strongly-ordered)
Empty Region
没有任何设备或内存映射的物理地址空间。访问空区域应触发异常(如Load Access Fault)
缓存与排序
Cacheable/non-cacheable
决定对该区域的访问是否可以被CPU缓存。外设MMIO区域通常为 不可缓存
幂等 (Idempotent) / 非幂等 (Non-idempotent)
幂等 表示重复的读操作会返回相同的数据;非幂等 则表示重复读可能得到不同结果,常见于FIFO或中断状态寄存器.
弱一致性 / 强顺序性 (Weakly-ordered / Strongly-ordered)
描述该区域允许的访问重排程度。弱一致性 允许CPU优化指令顺序以提升性能;强顺序性 则禁止任何重排,必须按程序顺序执行
访问与操作
可读 (Readable) / 可写 (Writable)
基本访问权限,但相比PMP,PMA的权限属于硬件"硬连线",无法绕过.
可执行 (Executable) / 不可执行 (Non-Executable)
决定能否从此区域取出指令执行。为了防止代码注入攻击,数据区通常被标记为**不可执行**
原子操作支持 (Atomicity Support)
表明该内存区域是否支持LR/SC等原子操作。外设区域通常不支持,访问时可能导致异常;