1. ARM SMMU地址转换机制概述
在ARM体系结构中,系统内存管理单元(SMMU)扮演着关键角色,它实现了设备DMA请求的地址转换和访问控制。与CPU的MMU类似,SMMU通过多级页表机制支持两阶段地址转换:
- 阶段1转换(VA→IPA):将设备发出的虚拟地址(VA)转换为中间物理地址(IPA)
- 阶段2转换(IPA→PA):将IPA转换为最终物理地址(PA)
这种两阶段转换模型特别适合虚拟化环境,其中:
- 阶段1由虚拟机操作系统控制
- 阶段2由虚拟机监控器(VMM)控制
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 阶段1转换上下文寄存器详解
2.1 SMMU_CBn_TTBRm寄存器核心功能
SMMU_CBn_TTBR0和SMMU_CBn_TTBR1是阶段1转换的核心寄存器,主要功能包括:
-
存储转换表基地址:
- TTBR0:存储转换表0的基地址
- TTBR1:存储转换表1的基地址
-
地址空间标识:
- 在长描述符格式中存储ASID(Address Space ID)
- 支持进程/虚拟机隔离
-
内存属性控制:
- 控制转换表访问的内存属性
- 包括缓存策略、共享属性等
2.2 AArch32短描述符格式解析
当使用AArch32短描述符转换方案时,TTBRm寄存器格式如下:
code复制[31:14-N] 转换表基地址 (bits[47:14-N])
[13-N:7] 保留
[6] IRGN[0] (内部区域缓存属性)
[5] NOS (非外部共享)
[4:3] RGN (外部区域缓存属性)
[2] IMP (实现定义)
[1] S (共享属性)
[0] IRGN[1] (内部区域缓存属性)
关键字段详解:
-
转换表基地址对齐:
- 对齐要求为2^(14-N)字节
- TTBR1的N=0,要求16KB对齐
- TTBR0的N由TCR.T0SZ决定
-
缓存属性控制(IRGN/RGN):
- 00:非缓存
- 01:回写写分配
- 10:写通
- 11:回写不写分配
-
共享属性(S):
