【方辉专栏】ARM64体系结构编程与实践学习笔记(八) ARM64内存管理
1. Arm64内存管理组成
Arm64处理器内核的内存管理单元(Memory Management Unit,MMU)包括转换旁路缓冲(Translation Lookaside Buffer, TLB)和表遍历单元(Table Walk Unit, TWU)。
MMU的工作职责是把输入的虚拟地址翻译成对应的物理地址及相应的页表属性和内存访问权限等信息。
TWU负责完成查表过程,TLB用于缓存页表转换的结果,从而缩短页表查询的时间。
进程空间又分为内核空间(kernel space)和用户空间(user space),无论是内核空间还是用户空间都可以通过处理器提供的页表机制映射到实际的物理地址。
在对称多系统(Symmetric Multi-Processor,SMP)中,每个处理器内核内置了MMU和TLB硬件单元。例如,CPU0和CPU1共享物理内存,也共享同一份页表,当一个CPU更改了页表项时,需要使用BBM(Break Before Make)机制来保证其他CPU能访问正确和有效的TLB。
2. AArch64页表机制
在AArch64体系结构中,以48位地址总线位宽为例,虚拟地址(VA)被划分为两个空间,每个空间最多支持256TB.
低位地址空间0x0000 0000 0000 0000 – 0x0000 FFFF FFFF FFFF;
高位地址空间0xFFFF 0000 0000 0000 – 0xFFFF FFFF FFFF FFFF;
在AArch64体系结构中的页表支持如下特性:
最多可以支持4级页表。
输入地址的最大有效位宽为48位。
输出地址的最大有效位宽为48位。
翻译的页面粒度可以是4KB、16KB或64KB。
处理器查询页表的过程如下:
根据VA选择TTBR0/1;当VA=0选择TTBR0,否则选择TTBR1;
VA作为L0索引,L0页表有512个页表项。
VA作为L1索引,L1页表有512个页表项。
VA作为L2索引,L2页表有512个页表项。
VA作为L3索引,L3页表有512个页表项。
L3页表项存放4K页面物理基地址,再加上VA构成全部物理地址。
免责声明:
1、本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
2、本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
3、本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
4、侵权违法和不良信息举报 举报邮箱:cnddit@qq.com
还没有评论,来说两句吧...