1. MAIR_EL1 寄存器概述
MAIR_EL1(Memory Attribute Indirection Register)是ARMv8架构中用于定义内存属性的关键系统寄存器。作为一位长期从事ARM平台开发的工程师,我经常需要与这个寄存器打交道。简单来说,它就像是一个内存属性的"调色板",允许我们预先定义8种不同的内存属性组合(Attr0-Attr7),然后在页表项中通过索引号来引用这些预定义的属性。
在ARMv8的MMU(内存管理单元)设计中,MAIR_EL1与页表配合工作,共同决定了处理器访问内存时的行为特性。这种间接寻址的设计带来了显著的灵活性——我们可以在不修改页表的情况下,通过调整MAIR_EL1的值来批量改变内存属性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MAIR_EL1 寄存器结构详解
2.1 寄存器位域布局
MAIR_EL1是一个64位寄存器,被均匀划分为8个8位的字段,每个字段对应一个属性索引:
code复制63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| Attr7 | Attr6 | Attr5 | Attr4 | Attr3 | Attr2 | Attr1 | Attr0 |
+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
每个8位的AttrX字段又进一步分为多个子字段,用于控制不同的内存属性:
- [7:4]: 内存类型(Memory Type)
2.2 属性编码详解
内存类型(Memory Type):
- 0b0000: 设备内
