ARMv8内存地址翻译 9月前查看 评论
ARMv8内存地址翻译

**摘要**: Armv8-A 使用虚拟内存系统,通过内存管理单元 (MMU) 将虚拟地址转换为物理地址。MMU 使用存储在内存中的转换表进行地址转换,支持多个任务在各自的私有虚拟内存空间中运行。每个程序可以使用相同的虚拟内存地址空间,即使物理内存是碎片化的。MMU 还可以控制每个内存区域的访问权限、内存顺序和缓存策略。内核空间和用户空间的虚拟地址分离,内核使用固定映射,而应用程序使用可变映射。MMU 支持两种地址空间:安全地址空间和非安全地址空间。虚拟化引入了翻译的第二阶段,将虚拟地址转换为中间物理地址,再转换为最终物理地址。转换表配置包括颗粒尺寸、缓存配置、虚拟地址标记等。访问权限通过转换表条目控制,操作系统可以使用访问标志位跟踪页面的使用情况。安全性方面,NS 位和 NSTable 位控制虚拟地址是否转换为安全物理地址或非安全物理地址。翻译旁观缓冲区 (TLB) 缓存最近访问的页面翻译,提高性能。系统 MMU (SMMU) 允许设备看到与内核相同的中间物理地址空间,避免软件中昂贵的捕获需求。内存屏障指令用于确保内存操作的顺序,包括指令同步屏障 (ISB)、数据内存屏障 (DMB) 和数据同步屏障 (DSB)。