> 技术文档 > [MMU]四级页表查找(table walk)的流程

[MMU]四级页表查找(table walk)的流程


四级页表查找(table walk)的流程

摘要:四级页表(4-level page table)查找(table walk)的流程,并解答你关于如何从 PDE base 计算出物理地址的问题。


一、x86_64 四级页表结构回顾

在典型的 x86_64 架构(如 AMD64, Intel 64),虚拟地址通过四级页表转换为物理地址
四级页表层级:

  1. PML4(Page Map Level 4)
  2. PDPT(Page Directory Pointer Table)
  3. PD(Page Directory)
  4. PT(Page Table)

每一级页表有 512 个表项(因为 9 位索引),每个表项通常为 8 字节(64bit)。

虚拟地址格式(48位虚拟地址模式):

|63 47|46 39|38 30|29 21|20 12|11 0||Unused |PML4 |PDPT |PD |PT |Offset within page|
  • 每一级用 9 位索引,最后 12 位为页内偏移。

二、Table Walk Flow(查表流程详解)

1. 虚拟地址分解

假设虚拟地址为 VA,分解为:

  • VA[47:39] → PML4 索引
  • VA[3