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