Запуск потоков на процессоре Intel без гиперпоточности

1

Процессор Intel Pentium E5700 (2M Cache, 3,00 ГГц, 800 МГц FSB) не имеет гиперпоточности, но имеет 2 ядра, поэтому я предполагаю, что он имеет 2 потока

Теперь, если я напишу программу обработки больших чисел, которая одновременно запускает 4 потока, как этот процессор E5700 будет обрабатывать 4 потока одновременно, используя свои 2 ядра и 2 потока, по сравнению с процессором, подобным процессору Intel Core i3-3110M (кэш-память 3M, 2,40 ГГц) с гиперпоточностью, которая имеет 2 ядра, но 4 потока?

Будет ли E5700 медленнее и будет иметь узкие места, чем i3 3110m с 2 ядрами, но 4 потоками с гиперпоточностью, или все будет гладко и быстро на обоих процессорах, не замечая ничего другого?

Кроме того, может ли программа, написанная с четырьмя или более потоками, эффективно работать на 2-ядерном 2-потоковом процессоре, или будут ошибки или замедления?

#

хорошо, спасибо, что ответили на вопросы позже, я посетил этот сайт, и более короткий счет лучше для процессоров

http://www.cpu-world.com/benchmarks/socket_1155_multi.html

Тест wPrime v1.55 (32M) Тест wPrime измеряет время, необходимое для вычисления квадратных корней чисел от 1 до 33554431. Программа использует метод Ньютона для оценки функций.

Функции процессора, которые имеют большое влияние на результаты: частота процессора, производительность с плавающей запятой, количество ядер / потоков.

Особенности процессора, которые мало влияют на результаты: скорость памяти, размер внутренних кешей.

Номер детали Чем короче, тем лучше Результат

Процессор Intel® Core ™ i7-3770K (кэш-память 8M, до 3,90 ГГц) 4 ядра 8 потоков да HT

6,87

Процессор Intel® Core ™ i7-2600k (кэш-память 8M, до 3,80 ГГц) 4 ядра 8 потоков да HT

7,57

Процессор Intel® Core ™ i5-2500K (кэш-память 6M, до 3,70 ГГц) 4 ядра 4 потока без HT
9,8

Процессор Intel® Core ™ i3-2310 (кэш-память 3M, 2,10 ГГц) 2 ядра 2 потока да HT
15,37

Intel® G860 (кэш-память 3M, 3,00 ГГц), 2 ядра, 2 потока, без HT
22.09

#

Де кодер
источник

Ответы:

7

Для некоторых базовых знаний о потоках, ядрах процессора и гиперпоточности вы можете прочитать вопрос « Что такое потоки и что они делают в процессоре?».


Теперь, если я напишу программу обработки больших чисел, которая одновременно запускает 4 потока, как этот процессор E5700 будет обрабатывать 4 потока одновременно, используя свои 2 ядра и 2 потока

Количество потоков, необходимых вашему приложению, не имеет значения - я могу написать программу, которая запускает 1000 потоков, и все они запускаются в одно и то же время. Ключевым моментом здесь является планировщик вашей операционной системы , который запускает каждый поток на определенном ядре ЦП в течение определенной единицы времени (порядок выполнения потоков и на каком ядре зависит от алгоритма планирования).

По сравнению с процессором, подобным процессору Intel® Core ™ i3-3110M (кэш-память 3M, 2,40 ГГц) с гиперпоточностью, которая имеет 2 ядра, но 4 потока

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


Наконец, вы сравниваете E5700 и i3 3110m. Это две разные (не полностью, но разные) архитектуры процессоров; они имеют разные особенности и неравную длину трубопровода 1 2 . Здесь нужно рассмотреть не только количество процессорных ядер, но для целей этого обсуждения вы можете их игнорировать и просто прочитать то, что я написал выше.

  1. Дж. Де Гелас, «Последствия бульдозера: погружение еще глубже» AnandTech , стр.2.
  2. Руководства для разработчиков программного обеспечения Intel® 64 и IA-32 , Vol. 1, гл. 2, Раздел 2.3 - Микроархитектура Intel® Core ™
Прорвать
источник
хорошо, да, приложение, оптимизированное для 4 ядер / потоков, будет работать медленнее в 2-ядерных системах, потому что, как всегда, реальные ядра лучше, чем логические ядра с гиперпоточностью, и что лучше, если программист кодирует и устанавливает важные потоки в качестве высокого приоритета в своем приложении или будут ошибки замедления, подобные этому, или он должен оставить все потоки для планировщика ОС и надеяться и ожидать, что приложение будет работать быстро и без сбоев, если ОС все
обработает
@ Декодер снова, когда вы вносите скорость в уравнение, все меняется. Если бы это был идеальный мир, я мог бы иметь 2-ядерный процессор с тактовой частотой 3,0 ГГц, который бы выполнял вашу программу так же быстро, как 4-ядерный процессор с тактовой частотой 1,5 ГГц (поддерживая все остальные факторы постоянными). Задача ОС состоит в том, чтобы максимально быстро запустить программу с вашим конкретным оборудованием; если это не система реального времени (и Windows не является ОС реального времени), приложение будет работать нормально (хотя и несколько медленнее).
Прорыв
0

Другие ответы верны, что для задач с привязкой к вычислениям, работающих с 4 потоками на 2 ядрах, будет медленнее, чем 2 потока. При планировании потоков возникают накладные расходы, а также переключение контекста в процессоре при переключении состояния регистра. Одна вещь, которая, кажется, не указана, однако, состоит в том, что это не выполняется, если в этих потоках есть блокирующий ввод / вывод. В таком случае вполне вероятно, что наличие большего количества потоков, чем ядер, будет работать быстрее, поскольку потоки будут блокировать медленные операции ввода-вывода и позволят другим частям кода, связанным с процессором, продолжать работать.

spowers
источник
да из-за гиперпоточности ОС видит 2 ядра 4 логических потока как действительно 4 ядра, поэтому она должна видеть больше свободных ресурсов, поэтому она, вероятно, будет запускать 2 дополнительных потока, когда другие 2 ожидают
кодер
На самом деле это произойдет в любом случае даже с ядрами без HT. Поток, ожидающий блокировки ввода-вывода, не нуждается в каком-либо месте для запуска и не будет находиться ни в ядре, ни в логическом процессоре. Обратите внимание, что ядра не имеют «потоков». Ядра могут запускать потоки. Ядро без HT может работать с одним потоком. Ядро HT в существующих моделях может работать в двух потоках. Потоки являются частями и принадлежат процессам, а не ядрам.
Джейми Ханрахан