Определение количества физических и логических процессоров
От: gwg-605 Россия  
Дата: 11.02.13 09:19
Оценка:
Необходимо определить число физических и логических процессоров, т.е. отличать HT процессор от нормального, чтобы можно было устанавливать affinitymask по этой инфе. Для этого использую GetLogicalProcessorInformation. Все вроде работает кроме Win2003 SP2 (на XP SP3 все работает). Почитав более внимательно нашел вот это:

Windows Server 2003 and Windows XP Professional x64 Edition: This member is also 1 for cores that share a physical package. Therefore, to determine whether the processor supports multiple cores or hyperthreading on systems prior to Windows Vista, use the CPUID instruction

Попытался использовать __cpuid и тут-то меня ждала неожиданность. Оказывается мой проц типа поддерживает Hyper-Threading 8-() хотя все определиловки говорят что его нету. Проц у меня i5 2500K (не разогнан). Может я не правильно определяю HT? Сейчас проверяю 28 бит EDX (это 3-й элемент/последний элемент возвращаемый __cpuid функцией).
Почитал интелловскую доку по поводу 28-ого бита:

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

и совсем запутался. В CPUID.1.EBX[23:16] лежит число 0x10.

Подскажите что делаю неправильно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.