Изначально Intel хотела, чтобы разработчики BIOS сначала перечисляли все физические процессоры, а не логические (HT). Причина этого заключалась в том, что если бы операционная система поддерживала меньше процессоров, чем было доступно в системе, она сначала увидела бы физические ядра, прежде чем увидела бы логические ядра. В настоящее время это не проблема, но тогда, когда можно было купить двухъядерный Pentium 4 с HT, поместить его в систему Windows 2000 Pro и увидеть только 2 процессора, несмотря ни на что, это было реальной проблемой. Я сомневаюсь, что реализация будет отклоняться от этого. Так что в вашем случае наиболее вероятно, что процессоры 0-3 являются физическими ядрами, а процессоры 4-7 - ядрами HT.
Если у вас есть проблемы с вашим собственным многопоточным программным обеспечением, которое плохо сбалансировано из-за HT, то вы, вероятно, захотите ограничить количество потоков только физическими ядрами или работать над своими алгоритмами / структурами данных, чтобы быть более HT- дружелюбный. GetLogicalProcessorInformation - это вызов API, на который нужно обратить внимание, чтобы определить физическое и логическое число ядер. На этой странице приведен пример кода для определения количества физических процессоров.
Делать ваш код более дружественным к HT - это совсем другой шарик воска и не очень подходит для SuperUser. :-)