ARM64 上的 HugeTLBpage

Hugepage 依赖于有效利用 TLB 来提高地址转换的性能。好处取决于以下两点:

  • hugepage 的大小

  • TLB 支持的条目大小

ARM64 端口支持两种类型的 hugepage。

1) pud/pmd 级别的块映射

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

2) 使用连续位

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

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

支持以下 hugepage 大小:

CONT PTE

PMD

CONT PMD

PUD

4K

64K

2M

32M

1G

16K

2M

32M

1G

64K

2M

512M

16G