162306a36Sopenharmony_ci.. include:: ../../disclaimer-zh_CN.rst
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci:Original: :ref:`Documentation/arch/arm64/hugetlbpage.rst <hugetlbpage_index>`
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciTranslator: Bailu Lin <bailu.lin@vivo.com>
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci=====================
862306a36Sopenharmony_ciARM64中的 HugeTLBpage
962306a36Sopenharmony_ci=====================
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci大页依靠有效利用 TLBs 来提高地址翻译的性能。这取决于以下
1262306a36Sopenharmony_ci两点 -
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci  - 大页的大小
1562306a36Sopenharmony_ci  - TLBs 支持的条目大小
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciARM64 接口支持2种大页方式。
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci1) pud/pmd 级别的块映射
2062306a36Sopenharmony_ci-----------------------
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci这是常规大页,他们的 pmd 或 pud 页面表条目指向一个内存块。
2362306a36Sopenharmony_ci不管 TLB 中支持的条目大小如何,块映射可以减少翻译大页地址
2462306a36Sopenharmony_ci所需遍历的页表深度。
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci2) 使用连续位
2762306a36Sopenharmony_ci-------------
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci架构中转换页表条目(D4.5.3, ARM DDI 0487C.a)中提供一个连续
3062306a36Sopenharmony_ci位告诉 MMU 这个条目是一个连续条目集的一员,它可以被缓存在单
3162306a36Sopenharmony_ci个 TLB 条目中。
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci在 Linux 中连续位用来增加 pmd 和 pte(最后一级)级别映射的大
3462306a36Sopenharmony_ci小。受支持的连续页表条目数量因页面大小和页表级别而异。
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci支持以下大页尺寸配置 -
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  ====== ========   ====    ========    ===
4062306a36Sopenharmony_ci  -      CONT PTE    PMD    CONT PMD    PUD
4162306a36Sopenharmony_ci  ====== ========   ====    ========    ===
4262306a36Sopenharmony_ci  4K:         64K     2M         32M     1G
4362306a36Sopenharmony_ci  16K:         2M    32M          1G
4462306a36Sopenharmony_ci  64K:         2M   512M         16G
4562306a36Sopenharmony_ci  ====== ========   ====    ========    ===
46