В чем разница между количеством ядер и количеством логических процессоров?
Я занимался обработкой изображений на своем компьютере с помощью Erdas Imagine. В частности, я использую медианный фильтр 5x5 для изображений. Я могу указать количество процессов, которые происходят одновременно в окне командного пакета Erdas. Я наблюдал необычное поведение, когда я определяю 16 одновременных процессов, что приводит меня к двойной проверке числа процессоров на машине. Я использовал следующую команду командной строки для оценки числа процессоров:
wmic cpu > cpu.txt
Что дало (частично):
Number of Cores: 8
Number of Logical Processors: 16
Чем число ядер отличается от количества логических процессоров в контексте программного обеспечения, подобного тому, как Erdas представляет, где пользователь может указать количество одновременных процессов? Я пытаюсь определить, следует ли мне указывать 8 или 16 одновременных процессов, чтобы максимизировать эффективность.
3 ответа
Гиперпоточность приведет к тому, что одно физическое ядро появится в ОС как два.
Гиперпоточность, по сути, позволяет одному ядру выполнять два набора инструкций одновременно, в зависимости от характера инструкций. Когда он был впервые представлен (в 2002 году, и это было довольно шумно в то время, когда оверклокеры и тогдашние новые блоггеры сходили с ума, обсуждая HT против истинного многоядерности - некоторые вещи никогда не меняются), это было похоже на "двухъядерный Lite". Чтобы сделать использование гиперпоточности прозрачным для существующего программного обеспечения и операционных систем, они были спроектированы так, чтобы выглядеть как два ядра, и поэтому ядро могло бы продолжать использовать свое существующее планирование и балансировку нагрузки и использовать преимущества гиперпоточности без каких-либо изменений (позже, конечно, оптимизации были сделаны). Вот почему это началось именно так - чтобы многопоточные процессоры могли быть просто заменой на платформах, которые в любом случае уже имели многопроцессорную поддержку.
В любом случае, поскольку эффективность будет зависеть от характера приложения, вы, возможно, захотите провести тест на уровне 8 и 16 (и выше, если процессы не связаны с процессором, а, например, с сетью или вводом-выводом).
Количество ядер (8) представляет собой фактическое количество физических ядер. Для каждого физического процессорного ядра операционная система обращается к двум виртуальным или логическим ядрам и распределяет рабочую нагрузку между ними, когда это возможно.
В тех случаях, когда многопроцессорные системы включают в себя несколько завершенных процессорных блоков, многопоточность направлена на увеличение использования одного ядра за счет использования параллелизма на уровне потоков, а также на уровне команд. Поскольку эти два метода дополняют друг друга, они иногда объединяются в системах с несколькими многопоточными ЦП и в процессорах с несколькими многопоточными ядрами.
См. Статьи Википедии о гиперпоточности и многопоточности.
Логический процессор обычно используется для описания общего количества процессоров на чипе. 8 ядер - это физические ядра, которые существуют на чипе. Таким образом, каждый процессор может одновременно обращаться к процессам, предоставляя вам 16 логических процессоров. Гиперпоточность позволяет ядру выполнять две задачи одновременно. Таким образом, поскольку у вас есть 8 ядер в каждой гиперпоточности, у вас будет 16 логических процессоров.
В базовом смысле ядра реальны, т. Е. На вашем чипе 8 физических ядер. В то время как логические процессоры - это что-то на чипе, которое может сделать расчет Все ядра являются логическими процессорами, но не все логические процессоры являются ядрами.