【问题标题】:Why does my CPU not support 1G-pages although it reports that it does?为什么我的 CPU 不支持 1G 页面,尽管它报告它支持?
【发布时间】:2021-12-08 19:06:19
【问题描述】:

当我检查 CPUID 0x80000001u:EDX:26 时,我得到 1,即我的 CPU 说它支持 1G 页面。但是当我执行 CPUID 0x80000019u EAX - EDX 为零时,即我的 CPU 说没有任何大页面 TLB(Ryzen 7 1800X,Ubuntu Linux)。另一台 PC(Phenom X4 945,Debian)报告 1G 页)。

【问题讨论】:

    标签: assembly x86-64 amd-processor tlb cpuid


    【解决方案1】:

    您检查勘误表了吗?您是否检查了 Wikichip 或其他 CPU 架构详细信息页面,以查看是否有 专用 TLB 条目,或者它们是否由也可以处理 2M 大页面或其他东西的 TLB 条目处理?

    https://www.7-cpu.com/cpu/Zen.html 表示 1G 页面没有 L2 ITLB 条目,但 L0I 和 L1I TLB 条目可以容纳任何页面大小。

    对于数据 TLB,1G 页面可以由 L1dTLB 处理,但不是 L2dTLB,同样根据 7-cpu 测试和 CPUID 结果和/或其他已发布数据的解码。

    Wikichip agrees:

    ITLB:

    • 8 条目 L0 TLB,所有页面大小
    • 64 条目 L1 TLB,所有页面尺寸
    • 512 个条目 L2 TLB,无 1G 页面
    • 奇偶校验保护

    DTLB

    • 64 条目 L1 TLB,所有页面大小
    • 1,532 个条目的 L2 TLB,无 1G 页面

    IDK 这个信息应该如何反映在 CPUID 结果中,但这就是 Zen 1 所拥有的,您应该根据 CPUID 结果来解释什么。 (如果没有关于错误 TLB 信息的勘误表。)

    请注意,Zen 1 上没有可以缓存 1G 翻译的 TLB 条目;任何能够缓存 1G 巨页条目的条目都能够容纳其他大小。

    (英特尔的做法不同,不同的页面大小有单独的 TLB。https://www.7-cpu.com/cpu/Skylake.html / https://en.wikichip.org/wiki/intel/microarchitectures/skylake_(client)#Memory_Hierarchy - 为每个不同的大小单独的 L1i 和 d TLB(1G 页面没有 L1iTLB 除外)。统一的 L2TLB 又名 STLB有很多组合的 4k+2M 条目加上 16 个 1G 页面的条目。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2020-10-21
    • 2020-02-27
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    相关资源
    最近更新 更多