除了两个安全状态外,该体系结构还提供了两个物理地址空间:安全和非安全。
在非安全状态下,虚拟地址始终转换为非安全物理地址。这意味着在非安全状态下的软件只能看到非安全资源,但永远看不到安全资源。如图所示:
在安全状态下,软件可以访问安全和非安全的物理地址空间。翻译表条目(translation table entries )中的NS位控制虚拟内存块或页面转换到哪个物理地址空间,如下图所示:
【注意】:在安全状态下,当关闭第1级MMU时,所有地址都被视为安全。
与虚拟地址类似,通常使用前缀来标识正在引用的是哪个地址空间。对于物理地址,这些前缀是NP: 和 SP:。例如:
- NP:0x8000 – 在非安全物理地址空间中的地址0x8000
- SP:0x8000 – 在安全物理地址空间中的地址0x8000
重要的是要记住,安全和非安全是不同的地址空间,不仅仅是可读或可写等属性。这意味着在前面示例中的NP:0x8000和SP:0x8000是不同的内存位置,并且被处理器视为不同的内存位置。
【注意】:把地址空间看作总线上的一个额外的地址位是有帮助的。
如果实现了Armv9-A Realm Management Extension(RME),物理地址空间的数量将增加到四个。额外的物理地址空间是Root和Realm。在安全状态下运行的软件仍然只能访问非安全和安全的物理地址空间。有关RME的更多信息,请参阅Realm Management Extension指南。