4

Когда я открываю диспетчер задач, я вижу 8 CPU в графике CPU, так как у меня есть Core i7 с 4 ядрами + HyperThreading (работает на Win7 x64).

Когда я устанавливаю сходство процессов, я получаю CPU 0 в CPU 7 в списке.

Как я могу узнать, какие процессоры являются настоящими ядрами, а какие ядрами HT?

Я слышал, что 0/2/4/6 являются реальными ядрами, и, таким образом, первый, третий, пятый и седьмой граф процессора являются реальными.

Это правда?

2 ответа2

4

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

Если у вас есть проблемы с вашим собственным многопоточным программным обеспечением, которое плохо сбалансировано из-за HT, то вы, вероятно, захотите ограничить количество потоков только физическими ядрами или работать над своими алгоритмами / структурами данных, чтобы быть более HT- дружелюбный. GetLogicalProcessorInformation - это вызов API, на который нужно обратить внимание, чтобы определить физическое и логическое число ядер. На этой странице приведен пример кода для определения количества физических процессоров.

Делать ваш код более дружественным к HT - это совсем другой шарик воска и не очень подходит для SuperUser. :-)

0

Дело в том, что ядра HT должны выглядеть так, как если бы они были настоящими процессорами. Я не уверен на 100%, но я думаю, что нет никакого реального способа узнать, что реально, а что HT.

Кроме того, если я правильно понимаю HT, он работает за счет использования свободной вычислительной мощности реального ядра. Если ядро HT выполняет сложный процесс, а реальное ядро - нет, HT будет использовать вычислительную мощность. Тем не менее, это может привести к проблемам, когда наиболее требовательные процессы могут передаваться реальным ядрам и их ядрам HT и иметь некоторые реальные ядра, выполняющие фоновые задачи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .