ARMV8 MM之物理地址/虚拟地址映射

本文介绍了ARMV8架构中虚拟地址如何通过MMU转换为物理地址的过程,包括两个阶段的转换、翻译表的结构、虚拟和物理地址的范围、页面大小以及虚实地址映射的详细步骤。内容涵盖不同异常级别下的翻译表使用,以及4K、16K、64K页面大小的支持情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ARMV8 MM之物理地址/虚拟地址映射

对于CPU来说,如果没有启动MMU,那么CPU直接通过物理地址寻址,如果启用了MMU,那么CPU通过虚拟地址寻址,MMU负责将虚拟地址转换为物理地址,进而访问实际的物理地址空间。本文主要介绍ARMV8虚拟地址到物理地址的映射方案。


1. Translation stage

ARMV8支持两个stage的地址转换,分别是stage1和stage2。如果转换策略仅使用stage1,则stage1负责将VA转换为PA;如果转换策略使用stage1和stage2,则stage1负责将VA转换为IPA,stage2负责将IPA转换为PA。

2. Translation Tables

ARMV8最多可以支持4个exception level,分别是el0,el1,el2,el3,其特权级别依次升高,el3拥有最高级别的权限。
EL1维护了两组translation table,每一组translation table可能包含level0-leve3多个级别。第一组translation table负责低地址空间映射,第二组translation table负责高地址空间映射。EL1维护的translation table可以给EL0和EL1用。如用户程序工作在EL0,OS工作在EL1,这种情况下用户程序可以使用第一组translation table,使用低地址空间,而OS可以使用第二组translation table,使用高地址空间。
EL2维护了两组translation table,每一组translation table可能包含level0-level3多个级别。第一组translation table负责低地址空间映射,第二组translation table负责高地址空间映射。EL1维护的translation table可以给EL0和EL2用。如用户程序工作在EL0,OS工作在EL2,这种情况下用户程序可以使用第一组translation ta

### ARMv9 架构中 EL0 级别的虚拟地址细节 在 ARMv9 架构下,EL0 虚拟地址的处理涉及多个层面的技术实现。对于应用程序而言,在用户模式(即 EL0)运行的应用程序所使用的虚拟地址映射依赖于操作系统配置的页表结构。 #### 地址转换机制 当 MMU 处于启用状态时,CPU 使用两层或多级页表来完成从虚拟地址物理地址的转换过程[^1]。ARMv9 支持多种分页方案,包括 4KB、16KB 和 64KB 页面大小的选择。不同页面尺寸影响着页表层次的数量及其布局效率: - **4KB 页面**: 需要四级页表; - **16KB 页面**: 只需三级页表; - **64KB 页面**: 更高效地减少至两级页表。 这种灵活性允许开发者根据不同应用场景优化内存管理策略。 #### 用户态访问权限控制 为了保障系统的安全性与稳定性,即使是在同一进程内部的不同部分之间也存在严格的保护边界。因此,即便两个线程共享相同的代码段或数据区,它们也不能随意互相干扰对方的操作对象。通过设置适当的访问权限位,可以有效地防止越界读写行为的发生。 ```c // 设置页表项属性的例子 (伪代码) pte->attrs = PTE_ATTRS_USER | PTE_ATTRS_RDONLY; ``` 以上代码片段展示了如何设定页表条目中的用户可访问标志 (`PTE_ATTRS_USER`) 和只读标志 (`PTE_ATTRS_RDONLY`),从而限定特定区域仅能在用户级别以只读的方式被触及。 #### 物理地址空间分配 值得注意的是,尽管应用层面上看到的是连续而统一的大范围虚拟地址区间,但实际上这些地址会被映射到分散分布的真实 RAM 块上。特别是在现代 SoC 设计里,考虑到功耗管理和热设计等因素的影响,DRAM 容量往往较大且分布在较高的物理地址范围内(如 `0x4000_0000` 开始)。然而,在早期阶段未开启 MMU 的情况下,引导加载程序必须工作在一个较低的有效地址区域内(`va == pa`),并采取位置独立编码技术确保其正常运作直至成功初始化硬件抽象层(HAL)组件为止。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值