Logische CPU-Zählung gibt 16 statt 4 zurück

Ich habe einen Intel Core i5-2450m (2 physische Prozessoren und 4 logische Prozessoren) und möchte einen Weg finden, um logische und physische Kerne auf AMD- und Intel-CPUs zu zählen. Aber nach ein paar Suchen habe ich etwas Merkwürdiges bemerkt. Anstatt 4 logische Einheiten zurückzugeben, gibt mir mein Code 16.

static int8_t LogicalProcCount(void)
{
    if ( !Hyperthreading )
        return 1;

    uint32_t unused, ebx;
    CPUID(1, unused, ebx, unused, unused);

    return (int8_t) ( (ebx >> 16 ) & 0xFF );
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage