Что такое потоки и что они делают в процессоре?

27

Я смотрел статистику для процессора Intel Pentium E5700 .

У него два ядра и два потока. Что потоки делают для процессора? Есть ли какая-то связь между количеством ядер и количеством потоков? Какую цель используют потоки для системы в целом?

impossible3
источник
Это либо количество потоков, которые процессор может обработать за раз, либо какая-то фиктивная статистика, которую изобрел Intel.
digitxp
3
Голосование за закрытие как IMO это слишком общее - хотя я всегда очень не решаюсь сказать «просто Google это», цель Super User (и подобные сайты) состоит в том, чтобы отвечать на реальные вопросы, а не быть словарем для технических терминов, которые легко найти в более подходящих ресурсах.
Shinrai
3
@Shinrai Я отредактировал это, чтобы сделать его менее общим
Саймон Шихан

Ответы:

21

Число ядер - это физическое количество ядер самого кристалла ЦП, тогда как число потоков - это число отдельных потоков приложений, которые могут выполняться одновременно на самом ЦП. Без какого-либо дополнительного или специального оборудования это равно количеству ядер. Однако у некоторых процессоров будет больше потоков, чем у них ядер.

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

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

Это позволяет многопоточным ( не однопоточным) приложениям работать намного быстрее, поскольку на процессоре одновременно может выполняться более одного потока.


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

Прорвать
источник
1
Не могли бы вы объяснить, что делают потоки для процессора? +1 за упоминание гиперпоточности, поскольку это очень распространено сейчас (кажется, во всех i3)
Саймон Шихан
Каждый процесс имеет как минимум один поток. Когда процесс получает свою очередь на ЦП, основной поток запускается до тех пор, пока его ход не увеличится. Процесс может порождать другой поток, и теперь две части этого процесса будут работать и запрашивать обороты процессора. Все процессы являются программами, и с помощью этого механизма две вещи в одной и той же программе могут выполняться одновременно. Это быстрее, чем создание нового процесса (например, разветвление или загрузка новой программы), но менее безопасным. Процессы изолированы друг от друга, потоки процесса - нет.
LawrenceC
Что делать, если я создал многопоточную Java-программу с выполнением 50 параллельных потоков и запускаю ее на Intel i7-4790K, которая имеет 4 ядра и 8 потоков. Означает ли это, что только 8 из этих 50 потоков в Java-приложении фактически выполняются одновременно, а остальные находятся в очереди? Как это работает
Донато
@ Донато операционная система прерывает любые запущенные потоки, чтобы другие могли некоторое время завершить свою работу. В любой момент времени на процессоре работает только 8 потоков, и каждое ядро ​​постоянно переключается между различными потоками; полезно думать о них как о «рабочих местах» (помня, что рабочим местам также может быть назначен приоритет). Каждое ядро ​​выполнит некоторую работу для заданного потока, а затем его прерывает планировщик задач операционной системы, чтобы перейти к другой работе, выполнить некоторую работу над этим заданием и т. Д., И т. Д., В-четвертых, до завершения задания.
Прорыв
@Breakthrough, Re « чтобы вы могли запускать восемь потоков одновременно », каковы ограничения такой одновременности по сравнению с истинной одновременностью, предлагаемой отдельными реальными ядрами? Кроме того, как это возможно, что « приложения могут работать быстрее при отключенной гиперпоточности »?
Pacerier
9

«Ядро» представляет собой фактическое физическое подмножество процессора, которое само по себе может обрабатывать обработку, тогда как «поток» - это количество реальных процессов, которые процессор может обработать одновременно. Корпорация Intel разработала технологию, которую они обозначают как «гиперпоточность». Эта техника позволяет одному физическому ядру (которое обычно может обрабатывать только один поток за раз) теперь иметь возможность обрабатывать два потока одновременно.

Поток - это задача, которую должен обработать процессор. Для простого объяснения вы можете предположить, что каждое открываемое вами приложение (такое как рисование, блокнот, медиаплеер) имеет свой собственный поток ... теперь это не означает, что вы можете открыть только 2 приложения одновременно, просто потому, что процессор и операционная система работают так быстро при «переключении потоков», чтобы удовлетворить потребности каждого открытого приложения. Вы просто почувствуете лучшую производительность с большим количеством ядер, потому что теперь вы можете распределить всю работу на большее количество процессоров.

Например, на моем рабочем компьютере установлен i7. I7 имеет 4 физических ядра, но каждое ядро ​​может выполнять «гиперпоточность», что позволяет этому процессору обрабатывать 8 потоков одновременно. Поэтому, если я открою диспетчер задач, я увижу 8 полей для шкалы производительности процессора.

Общее правило заключается в том, что больше физических ядер лучше, чем больше потоков. Так что, если бы вы сравнивали процессоры, которые имели 4 ядра и 4 потока, было бы лучше, чем 2 ядра и 4 потока. Но чем больше потоков может обработать ваш процессор, тем лучше он будет работать при многозадачности, и для некоторых очень интенсивных приложений (редактирование видео, CAD, CAM, сжатие, шифрование и т. Д.) Само по себе будет использовать более одного ядра одновременно.

CenterOrbit
источник
Что вы подразумеваете под "ящиками"?
Pacerier
google.com/…
CenterOrbit
-1

переходя по ссылкам в статье в IE или chrome, каждый раз, когда вы нажимаете, вы создаете тему. Чем больше вы нажимаете на ссылки, тем больше тем. Если у вас есть 4-ядерный процессор, у вас есть до 8 потоков, вы можете открыть 8 ссылок, прежде чем у вас возникнут проблемы. не обращая внимания на ваше подключение к интернету. Таким образом, каждое ядро ​​покрывает две из тех ссылок (потоков), которые вы открыли. это идея ИМО. если это имеет смысл для кого-либо.

Марк г.
источник
Нет, это не то, что потоки в контексте процессоров или вопрос, который был задан.
music2myear