上两期中我们介绍了处理器存储模型的一般概念,这一期我们将介绍ARMv8-A架构中的地址转换系统。
一、VMSAv8-64地址转换系统
虚拟内存系统架构(Virtual MemorySystem Architecture, VMSA)提供了管理单元(MemoryManagement 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_FFFF_FFFF,两部分都为256TB。这两部分中,一个部分用TTBR0_EL1寄存器所指向的转换表进行地址转换;另一部分使用TTBR1_EL1寄存器所指向的转换表进行地址转换。在软件中,通常一个部分用于用户空间,另一个部分用于内核空间。
中间地址是两阶段地址转换中第一阶段的输出地址和第二

最低0.47元/天 解锁文章
659

被折叠的 条评论
为什么被折叠?



