27

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

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

2 ответа2

21

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

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

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

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


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

9

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

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

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

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

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