【问题标题】:Why does Hyper-threading get reported as supported on processors without it?为什么在没有它的处理器上报告支持超线程?
【发布时间】:2012-05-13 05:47:54
【问题描述】:

我正在尝试收集系统信息,并在 Intel Xeon E5420 上注意到以下内容:

执行CPUID(EAX=1) 后,EDX[28] 被设置,表明支持超线程,尽管英特尔网站上将处理器列为不支持超线程 (ark.intel.com)

有人对此有解释吗?

【问题讨论】:

  • 它是“超线程”,只是一个线程的特殊情况。
  • Related: msdn.microsoft.com/en-us/library/hskdteyh.aspx "对于 AMD 芯片组,所有多核 AMD CPU 都会设置特性信息位的第 28 位,以表明该芯片具有多个内核。即使是这样的情况AMD 不支持超线程。”但这是针对 AMD 芯片的。
  • MSDN 上的图表也将第 28 位标记为“多线程”...

标签: x86 intel hyperthreading cpuid


【解决方案1】:

这是根据英特尔开发人员手册对该位的定义:

Max APIC IDs 保留字段有效。 HTT 的值为 0 表示存在 包和软件中只有一个逻辑处理器应该假设 仅保留一个 APIC ID。 HTT 的值为 1 表示 CPUID.1.EBX[23:16](逻辑可寻址 ID 的最大数量 此包中的处理器)对该包有效。

在手册第 3A 卷的第 8 章中,它描述了如何正确检测硬件多线程。

这是一个链接:

http://download.intel.com/products/processor/manual/325462.pdf

【讨论】:

  • 是的,这似乎表明 HTT 位随着时间的推移表明每个包有多个逻辑线程,无论是因为 HTT 还是多个物理内核。
【解决方案2】:

Intel talkhttps://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection有半官方解释

基本上,在 Intel 在 Pentium 4 的最终版本中引入 SMT/超线程之后,他们创建了 Pentium D,它是多核被认为是超线程模型的演变,因为一个核心比 SMT 单元更独立于另一个核心具有相对于彼此,因此多核在相同线程数下的性能优于 SMT。因此,出于这个原因,他们使用相同的位来表示 SMT/超线程或多核,即多核被视为超线程的改进形式。您询问的 Intel Xeon E5420 是多核处理器,所以这就是设置该位的原因。

当然,一旦您可以在同一个包中同时拥有超线程和多核,有时就需要将它们区分开来,例如因为您宁愿在未加载的核上而不是在另一个超线程上安排新线程-已加载内核的一半线程。因此,为了描述组合的 SMT 和多核拓扑,最终引入了新的 cpuid 位(或者更确切地说是叶子)。这些用于查询处理器拓扑的最新 cpuid 功能是 EAX=0xB 叶。

顺便说一句,对于 2010 年及之后制造的处理器,您不应使用旧英特尔演讲中给出的拓扑枚举算法,因为它会给出不正确/夸大的核心数。请改用https://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/ 提供的更新方法。唉,这个较新的页面更加枯燥,例如不能回答你提出的问题,而旧的谈话却......

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 2021-12-08
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多