1. Arm架构内存属性寄存器概述
在Armv8/v9架构中,内存属性寄存器(MAIR_ELx)是内存管理子系统中的关键组件,负责定义内存区域的访问特性。这些寄存器通过页表项中的AttrIndx字段与具体的内存区域关联,为操作系统和hypervisor提供了灵活的内存属性配置能力。
MAIR寄存器家族包含多个特权级对应的版本:
- MAIR_EL1:用于EL1(操作系统内核)
- MAIR_EL2:用于EL2(hypervisor)
- MAIR_EL3:用于EL3(安全监控器)
- MAIR2_ELx:FEAT_AIE扩展引入的扩展属性寄存器
注意:MAIR2_ELx寄存器仅在实现了FEAT_AIE和FEAT_AA64的处理器中可用,否则访问会导致未定义异常。
2. MAIR寄存器工作原理
2.1 基本结构
每个MAIR寄存器都是64位宽,分为8个8位的属性槽(Attr0-Attr7)。页表项中的AttrIndx字段(通常3-4位)用于索引这些属性槽。以VMSAv8-64长描述符格式为例:
|63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0|
| Attr7 | Attr6 | Attr5 | Attr4 | Attr3 | Attr2 | Attr1 | Attr0 |
2.2 属性编码格式
每个8位的Attr字段编码分为两种主要内存类型:
设备内存(Device Memory)
编码格式: 0b0000dd00
-
dd位定义设


645


被折叠的 条评论
为什么被折叠?



