В чем разница между количеством ядер и количеством логических процессоров?

20233
Borealis

Я занимался обработкой изображений на своем компьютере с помощью Erdas Imagine . В частности, я использую медианный фильтр 5x5 для изображений. Я могу указать количество процессов, которые происходят одновременно в окне командного пакета Erdas. Я наблюдал необычное поведение, когда определяю 16 одновременных процессов, что приводит меня к двойной проверке числа процессоров на машине. Я использовал следующую команду командной строки для оценки количества процессоров:

wmic cpu > cpu.txt 

Что дало (частично):

Number of Cores: 8  Number of Logical Processors: 16 

Чем количество ядер отличается от количества логических процессоров в контексте программного обеспечения, подобного тому, как Erdas представляет, где пользователь может указать количество одновременных процессов? Я пытаюсь определить, следует ли мне указывать 8 или 16 одновременных процессов, чтобы максимизировать эффективность.

6
[Смотри выше Гиперпоточность] (http://en.wikipedia.org/wiki/Hyper-threading). HopelessN00b 10 лет назад 2
Что касается вашего последнего вопроса: в большинстве случаев вам нужно 16 процессов, чтобы максимизировать эффективность. Я не уверен в операциях с интенсивным использованием памяти, таких как обработка изображений: я рекомендую вам провести сравнительный анализ и выяснить, что лучше всего подходит для вас. Может оказаться, что вы получите лучшую производительность, если вообще отключите HyperThreading (обычно это можно сделать через настройки BIOS). Harry Johnston 10 лет назад 0

3 ответа на вопрос

14
Jason C

Гиперпоточность приведет к тому, что одно физическое ядро ​​появится в ОС как два.

Гиперпоточность, по сути, позволяет одному ядру выполнять два набора инструкций одновременно, в зависимости от характера инструкций. Когда он был впервые представлен (в 2002 году, и это было довольно шумно в то время, когда оверклокеры и тогдашние новые блоггеры сходили с ума, обсуждая HT против истинного многоядерности - некоторые вещи никогда не меняются), это было что-то вроде «двухъядерного облегчения». ». Чтобы сделать использование гиперпоточности прозрачным для существующего программного обеспечения и операционных систем, они были спроектированы так, чтобы выглядеть как два ядра, и поэтому ядро ​​могло бы продолжать использовать свое существующее планирование и балансировку нагрузки и использовать преимущества гиперпоточности без каких-либо изменений (позже, конечно, были сделаны оптимизации). Вот почему это началось именно так - чтобы многопоточные процессоры могли быть просто заменой на платформах, которые уже в любом случае уже имели многопроцессорную поддержку.

В любом случае, поскольку эффективность будет зависеть от характера приложения, вы, возможно, захотите провести тест на уровне 8 и 16 (и выше, если процессы не связаны с процессором, а, например, с сетью или вводом-выводом).

По сути, я согласен, но хочу уточнить, что гиперпоточность (HT) * не * позволяет * одному ядру выполнять два набора инструкций одновременно. HT делает «переключение» между двумя наборами команд очень быстрым или «дешевым» с точки зрения минимизации влияния на производительность. Только один из двух потоков HT выполняется на каждое физическое ядро ​​в любой момент, но накладные расходы на переключение между ними значительно уменьшаются. Однако некоторые накладные расходы остаются. Некоторые системные администраторы могут отключить гиперпоточность, если они обычно имеют большое количество потоков, сильно привязанных к процессору, чтобы устранить эти издержки. Basil Bourque 10 лет назад 5
Есть короткое и довольно забавное видео [здесь] (https://www.youtube.com/watch?v=wnS50lJicXc). Ни при каких обстоятельствах не пытайтесь сначала съесть конус мороженого. Jason C 10 лет назад 0
3
Cornelius

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

В тех случаях, когда многопроцессорные системы включают в себя несколько завершенных процессорных блоков, многопоточность направлена ​​на увеличение использования одного ядра за счет использования параллелизма на уровне потоков, а также на уровне команд. Поскольку эти два метода дополняют друг друга, они иногда объединяются в системах с несколькими многопоточными ЦП и в процессорах с несколькими многопоточными ядрами.

См. Статьи Википедии о гиперпоточности и многопоточности .

Обратите внимание, что не все процессоры поддерживают HyperThreading, и он также может быть отключен материнской платой (обычно это опция BIOS). Если HyperThreading не поддерживается или отключен, для каждого ядра используется только один логический процессор. Harry Johnston 10 лет назад 1
-3
Sandesh Damkondwar

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

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

Это на самом деле не правильно. Подсказка: гиперпоточность. HopelessN00b 10 лет назад 4

Похожие вопросы