ARM64 上的 HugeTLB 页面

大页(Hugepage)依靠高效利用 TLB 来提升地址转换的性能。其收益取决于以下两点 -

  • 大页的大小

  • TLB 所支持的条目大小

ARM64 移植版支持两种类型的大页。

1) pud/pmd 级别的块映射

这些是常规大页,其中 pmd 或 pud 页表项指向一块内存。无论 TLB 中支持的条目大小如何,块映射都减少了转换大页地址所需的页表遍历深度。

2) 使用连续位 (Contiguous bit)

该架构在转换表项(D4.5.3, ARM DDI 0487C.a)中提供了一个连续位,它向 MMU 发出提示,表明它是可缓存在单个 TLB 条目中的一组连续条目之一。

Linux 使用连续位来增加 pmd 和 pte(最后一级)级别的映射大小。支持的连续条目数量因页面大小和页表级别而异。

支持以下大页尺寸 -

CONT PTE

PMD

CONT PMD

PUD

4K

64K

2M

32M

1G

16K

2M

32M

1G

64K

2M

512M

16G