为什么我的CPU不支持1g -page,尽管它报告它支持?



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

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

https://www.7-cpu.com/cpu/Zen.html表示没有用于1G页面的L2 ITLB项,但是L0I和L1I TLB项可以保存任何页面大小。

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

Wikichip同意:

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上没有TLB条目可以只能缓存1G转换;任何能够缓存1G大页条目的条目都能够容纳其他大小的条目。

(Intel的做法不同,对于不同的页面大小有单独的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条目,1G页面有16个条目。

相关内容

  • 没有找到相关文章

最新更新