ARMv7 的 VMSA 包含安全扩展,多核处理器扩展、大物理地址扩展、TrustZone扩展、虚拟化扩展。若支持大的物理地址,则必须支持多核处理器;若支持虚拟化,则必须支持大的物理地址、多核处理器、TrustZone。加入这些扩展后,相应的MMU(虚拟地址到物理地址的隐射功能)结构也改变了许多。本文首先分析加入扩展后MMU的整体结构,然后详细介绍地址转换中用到短描述符格式(32位)和长描述符格式(64位),以及如何实现虚拟地址到物理地址的查询。 在 ARMv7 的 VMSA 中,MMU 控制了地址转换(虚拟到物理),权限控制。MMU 的控制是通过系统控制寄存器来进行配置(system control registers),当然,也支持关闭 MMU 功能。 ARMv7-R 结构的 VMSAv7 根据处理器的实现和具体场景,支持的情况不一样,分为几种情况,而每种情况又分为不同的 stage: 对于扩展的 VMSAv7 来说分为 Secure 和 non-Secure: • Secure state 下 对于 memory system control 只有一个 stage • Non-Secure state 下,对于 memory system control : 1. 当处理器在 PL2 的时候,只有一个 stage 2. 当处理器在 PL0 或者 PL1 的时候,有两个 stage 所以展开来说,分为: • Secure PL1&0 stage 1 MMU • Non-secure PL2 stage 1 MMU • Non-secure PL1&0 stage 1 MMU • Non-secure PL1&0 stage 2 MMU. 同时,一个 CPU 的实现中,如果没有包含 Virtualization Extensions 的话,那么