1. ARM MMU基础架构解析
在ARMv4架构中,内存管理单元(MMU)是连接处理器核心与物理内存的关键组件。它的核心功能是将程序使用的虚拟地址(VA)转换为物理地址(PA),同时实施内存保护策略。ARM720T采用的MMU设计具有以下典型特征:
- 两级页表结构:第一级描述符(Level 1 descriptor)定义1MB的段(section)或指向第二级页表的指针,第二级描述符(Level 2 descriptor)定义4KB的小页(small page)、64KB的大页(large page)或1KB的微页(tiny page)
- 16个独立域:每个内存区域可归属到16个域中的一个,通过域访问控制寄存器(Domain Access Control Register)配置各域的权限模式
- TLB加速:转换旁路缓冲器(Translation Lookaside Buffer)缓存最近使用的地址映射,避免每次访问都查询页表
关键提示:ARMv4的MMU设计特别考虑了嵌入式系统的需求,通过域控制机制减少了上下文切换时的TLB刷新操作,这对实时系统性能至关重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 地址转换全流程拆解
2.1 转换表遍历机制
当TLB未命中时,MMU会启动完整的页表遍历过程:
-
一级描述符获取:
- 从转换表基址寄存器(TTBR)获取一级页表基地址
- 使用虚拟地址[31:20]作为索引定位一级描述符
- 检查描述符最低两位:
b00表示无效,b01表示页表描述符,b10表示段描述符
-
二级描述符处理(当一级描述符为页表类型时):
- 从一级描述符[31:10]获取二级页表基地址
- 使用虚拟地址[19:12]作为索引定位二级描述符
- 检查描述符最低两位是否为
b00(无效页)
-
物理地址生成:
- 段映射:一级描述符[31:20] + VA[19:0]
- 页映射:二级描述符对应字段 + VA[页内偏移]
2.2 子页权限特殊处理
对于大页(64KB)和小页(4KB),ARM设计了独特的子页权限机制:
c复制// 小页的子页划分(每1KB一个权限区域)
#define SUBPAGE_PERM_4KB(ap) { ap3, ap2, ap1, ap0 } // apX对应AP[3:0]的各个位域
// 大页的子页划分(每16KB一个权限区域)
#define SUBPAGE_PERM_64KB(ap) { ap3, ap2, ap1, ap0 } // 每个apX控制16KB区域
当子页权限不一致时,只有被访问的子页条目会写入TLB。例如访问16KB大页的第二个子页时:
- MMU检测到ap1 ≠ ap0
- 仅将当前16KB区域的映射和权限写入TLB
- 后续访问其他子页需要重新检查权限
操作注意:使用子页权限时,执行TLB失效操作必须对所有四个子页分别执行无效化指令,否则可能导致权限控制失效。
3. 域访问控制深度解析
3.1 域工作模式
ARM的16个域每个都有2位的状态控制:
| 编码
