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)使用小页作为二级页表描述符格式的虚拟地址到物理地址的转换过程可以用如下示意图表示: