Cortex-A7:二级页表(Level 2 translation tables)描述符格式及虚拟地址(VA)到物理地址(PA)转换过程

0 参考资料

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

1 Cortex-A7:二级页表(Level 2 translation tables)描述符格式及虚拟地址(VA)到物理地址(PA)转换过程

1.1 二级页表(Level 2 translation tables)描述符格式

二级页表描述符支持3种格式,格式如下:
在这里插入图片描述
从上到下依次为:
(1)Fault。无效描述符。当使用到无效二级页表描述符做地址转换时将会产生一个缺页异常。
(2)Large page。大页。大页使用4Byte管理64KB内存空间。
(3)Small page。小页。小页使用4Byte管理4KB内存空间。

1.2 二级页表(Level 2 translation tables)虚拟地址到(VA)物理地址(PA)转换过程

二级页表描述符格式包含3种,每种格式的转换操作也不一样。本例以二级页表描述符格式为小页的情况介绍其地址转换过程。

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

在这里插入图片描述
根据虚拟地址(VA)高12bit和一级页表基地址(L1_BASE_ADDR)计算得出一级页表描述符地址(L1_ADDR)。计算规则如下:

L1_ADDR = L1_BASE_ADDR + VA高12bit

1.2.2 根据一级页表描述符获取二级页表描述符地址

在这里插入图片描述
一级页表描述符存储了二级页表描述符基地址,通过二级页表描述符基址(L2_B_ADDR)和虚拟地址(VA)的bit[19:12]可以求得对应的二级页表描述符地址(L2_ADDR)。计算规则如下:

L2_ADDR = L2_B_ADDR + VA[bit19:12]

说明:
VA之所以取bit[19:12]是因为使用小页管理1MB的内存空间需要使用到256个小页描述符,bit[19:12]表示的范围为0-255,这里取bit[19:12]相当于获取二级页表描述符相对于二级页表描述符基址的偏移量,让每个虚拟地址都对应唯一的二级页表描述符。

1.2.3 根据二级页表描述符及虚拟地址计算物理地址

在这里插入图片描述
格式为小页的二级页表描述符存储了小页基地址,通过小页基地址(SP_B_ADDR)和虚拟地址(VA)的bit[11:0]可以求得对应的物理地址(PA)。计算规则如下:

PA = SP_B_ADDR + VA[bit11:0]

VA之所以取bit11:0]是因为使用小页描述符管理内存,每4Byte对应4KB内存空间。bit[11:0]表示的范围为0-4KB,这里取bit[11:0]相当于获取物理地址相对于小页描述符存储的小页物理基地址的偏移量。

2 总结

(1)二级页表描述符支持3种格式,分别是Fault(无效描述符)、Large page(大页,使用4byte管理64KB内存空间)、Small page(小页,使用4byte管理4KB内存空间)。
(2)使用小页作为二级页表描述符格式的虚拟地址到物理地址的转换过程可以用如下示意图表示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NW嵌入式开发

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

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

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

打赏作者

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

抵扣说明:

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

余额充值