Cortex-A7:一级页表(First level address translation)描述符格式及虚拟地址(VA)到物理地址(PA)转换过程

0 参考资料

ARM Cortex-A(armV7)编程手册V4.0.pdf

1 Cortex-A7:一级页表(First level address translation)描述符格式及虚拟地址(VA)到物理地址(PA)转换过程

1.1 一级页表(First level address translation)描述符格式

一级页表描述符支持4种格式,格式如下:
在这里插入图片描述

从上到下依次为:
(1)Fault。无效描述符。当使用到无效一级页表描述符做地址转换时将会产生一个缺页异常。
(2)Pointer to 2nd level page table,指向2级页表,粗表。粗表存储了粗粒度的二级页表基地址,能将1级页表管理的1MB内存空间进一步细分。
(3)Section,段。直接使用一级页表管理内存空间,里面存储了段基地址。使用4Byte管理1MB内存空间。
(4)Supersection,超级段。直接使用一级页表管理内存空间,里面存储了超级段基地址。超级段使用4Byte管理16MB内存空间。

1.2 一级页表(First level address translation)虚拟地址(VA)到物理地址(PA)转换过程

1.2.1 查找虚拟地址对应的一级页表描述符地址

在这里插入图片描述
假设一级页表基地址是0x12300000,访问的虚拟地址是0x00100000。那么一级页表描述符地址=0x12300000+0x004(虚拟地址高12bit值)=0x12300004。
虚拟地址的高12bit决定了一级页表描述符的偏移地址,因为一个一级页表描述符管理1MB内存空间。关系可以参照下表:
在这里插入图片描述

也可以这么理解,将4GB(0-4294967295)包含的虚拟地址写成如下形式:

VA = 1MB*x(高12bit)+(0-1MB)(低20bit)

x取值范围为0-4095,且每一个内存地址都会有唯一的一级页表描述符地址与之对应。

1.1.2 根据一级页表描述符进行地址转换

一级页表描述符格式包含4种,每种格式的转换操作也不一样。本例以一级页表描述符格式为段的情况介绍其地址转换过程。下图是虚拟地址到物理地址的转换过程:
在这里插入图片描述
操作非常简单,在找到了虚拟地址对应的一级页表描述符地址后,将一级页表描述符存储的段基地址+虚拟地址的低20bit组成物理地址。简单来说就是:

PA = 段基地址 + VA低20bit。

3 总结

(1)一级页表描述符支持4种格式,分别是Fault(无效描述符)、粗表、段(4Byte管理1MB内存空间)、超级段(4Byte管理16MB内存空间)。

(2)使用段作为一级页表描述符格式,地址转换过程可以用如下示意图表示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值