Search code examples
x86intelhyperthreadingcpuid

Why does Hyper-threading get reported as supported on processors without it?


I'm trying to gather system information and noticed the following on an Intel Xeon E5420:

After executing CPUID(EAX=1), EDX[28] is set, indicating Hyper-threading support, despite the fact that the processor is listed on the Intel website as not supporting Hyper-threading (ark.intel.com)

Does anyone have an explanation for this?


Solution

  • Here's the definition of that bit according to the Intel Developer's Manual:

    Max APIC IDs reserved field is Valid. A value of 0 for HTT indicates there is only a single logical processor in the package and software should assume only a single APIC ID is reserved. A value of 1 for HTT indicates the value in CPUID.1.EBX[23:16] (the Maximum number of addressable IDs for logical processors in this package) is valid for the package.

    In chapter 8 of volume 3A of the manual, it describes how one properly detects hardware multi-threading.

    Here's a link:

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