作者:罗宇哲,中国科学院软件研究所智能软件研究中心
上两期中我们介绍了处理器存储模型的一般概念,这一期我们将介绍ARMv8-A架构中的地址转换系统。
一、VMSAv8-64地址转换系统
虚拟内存系统架构(Virtual Memory System Architecture, VMSA)提供了管理单元(Memory Management Unit, MMU),MMU控制了处理器的地址转换、访存控制,决定并检查与访存地址相关的内存属性(memory attribute,可理解为地址对应的内存域的性质,例如该内存域的数据一致性需要满足什么要求等)。
VMSAv8-64是ARMv8架构的处理器在AArch64执行状态下的虚拟内存系统架构。一般来说,MMU的输入是包含访存虚拟地址在内的访存请求,而输出的是用于访问物理存储空间的地址和与该地址相关的内存性质。有时在地址转换过程中会发生异常,这些异常会导致地址转换失败,它们被称为MMU错误。
VMSAv8-64地址转换系统中有三种地址类型,分别是虚拟地址,中间地址和物理地址。指令使用的地址是虚拟地址,包含指令地址和数据地址。这就意味着在PC、LR、ELR和SP等寄存器中的地址是虚拟地址。
在AArch64执行状态下,虚拟地址有48bit,从0x0000_0000_0000_0000到0x0000_FFFF_FFFF_FFFF,因而可以访问256TB的虚拟地址空间。对于EL1和EL0中的转换过程,虚拟地址范围可以被分为两个部分: 0x0000_0000_0000_0000到0x0000_FFFF_FFFF_FFFF和0xFFFF_0000_0000_0000到0xFFFF_FFFF_FFF