
随着 AI 与 GPU 计算的普及,大范围连续内存访问成为常态,大页(Huge Page)在降低设备 TLB miss、减少页表与 DMA 映射开销方面的价值愈发凸显。本篇(进阶篇之一)聚焦大页本身:它在内核里如何表达、由哪几条路径创建、三类大页有何区别。至于 GPU 侧硬件如何表达并落大页,由下一篇《6.2 GPU 侧的大页支持:amdgpu 视角》展开;HMM 如何读取与迁移大页、如何把两侧粒度桥接,则见《6.3 HMM 对大页的处理:读取与迁移》。1. 大页的概念大页 (Huge Page)是比标准 4 KiB 更大的内存页,常见大小为 2 MiB(PMD 级)或 1 GiB(PUD 级)。大页大小由 CPU 页表结构决定。x86-64 四级页表每级有 512 个条目:PGD → PUD → PMD → PTE → 4 KiB page │ │ │ └─ PMD 直接指向物理页 → 512 × 4 KiB = 2 MiB 大页 │ └─ PUD 直接指向物理页 → 512 × 2 MiB = 1 GiB 大页大页本质是"跳过下级页表,让中间级 entry 直接映射物理内存"。因此大小必须等于该级覆盖的范围,是 2 的幂次方,无法任意指定。那么大页在内核里如何表达呢?这里要区分两个正交的"大":映射粒度(页表侧):PMD / PUD leaf entry 决定"一