为什么在没有它的处理器上报告支持超线程?

时间:2012-05-03 16:59:39

标签: x86 intel hyperthreading cpuid

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

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

有没有人对此有解释?

2 个答案:

答案 0 :(得分:4)

英特尔谈话https://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection

中有半官方解释

基本上,在英特尔在奔腾4的最终版本中引入SMT /超线程之后,他们创建了奔腾D,其中多核被认为是超线程模型的演变,因为核心比SMT单元更加独立于另一个核心彼此相对,因此在相同的线程数下,多核比SMT表现更好。因此,他们使用相同的位来表示SMT /超线程或多核因此,即多核被视为超线程的改进形式。你问的英特尔至强E5420是一个多核处理器,所以这就是设置这个位的原因。

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

顺便说一句,你不应该使用旧的英特尔谈话中给出的拓扑枚举算法,因为它会给出错误/膨胀的核心数量。请使用https://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/中给出的更新方法。唉,这个较新的页面要干得多,并不能回答你提出的问题,而旧的谈话确实......

答案 1 :(得分:3)

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

  

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

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

这是一个链接:

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

相关问题