Процессор: потоки или ядра
На рынке компьютерных комплектующих присутствует немало процессоров, у которых число потоков больше числа физических ядер. В некоторых задачах эти «виртуальные ядра» могут дать существенный прирост в производительности, в других они практически бесполезны.
Многоядерность и гиперпоточность
Ядро — это физически обособленная вычислительная единица процессора, способная в один момент времени выполнять одну последовательность команд. Если ядро одно, а последовательностей требуется выполнять несколько, оно быстро переключается между ними, выполняя задачи поочередно.
Поток (применительно к процессору), или виртуальное ядро – результат реализации вычислений, при котором одно физическое ядро способно программно разделять свою производительность и работать над несколькими последовательностями команд одновременно. Простыми словами, ЦП делает вид для операционной системы и программ, что у него больше ядер, чем есть на самом деле. Убедиться в этом можно, открыв диспетчер устройств или другую программу для мониторинга комплектующих.
Гиперпоточность позволяет распараллеливать вычисления более эффективно – если одно виртуальное ядро завершило работу над своей задачей и находится в режиме ожидания, его ресурсы может использовать другое. В случаях, когда гиперпоточность не поддерживается, эти ресурсы простаивают. Таким образом, поддержка виртуальных ядер может ускорить выполнение некоторых задач, хотя, разумеется, она не так хороша, как наличие дополнительных физических, и удвоения производительности ожидать не стоит.
Иллюстрация концепции потоков/виртуальных ядер:
Рассмотрим следующий упрощенный пример: если двухъядерный процессор с двумя потоками работает с четырьмя последовательностями команд одновременно, а производительность одного ядра для одной последовательности избыточна, то общая производительность будет ниже, чем в случае, если на месте такого процессора будет вариант с двумя ядрами, но с четырьмя потоками, поскольку на переключение между задачами тратится дополнительное время, и часть ресурсов иногда простаивает. А вот если вычислительных ресурсов одного потока недостаточно для выполнения одной последовательности, то виртуальные ядра почти не помогут – нужны дополнительные физические.
Распараллеливание нагрузки при помощи технологии Intel Hyper-Threading
Немного истории
Когда-то процессоры были одноядерными и однопоточными. Если требовалось эффективно распараллеливать вычисления (в серверном сегменте, рабочих станциях) использовались материнские платы с несколькими процессорными разъемами. Соответственно, материнке требовалась возможность соединять все процессоры с другими комплектующими (например, оперативной памятью). По сравнению с современной реализацией, возникали дополнительные задержки, возрастали энергозатраты.
Развитие архитектуры началось с гиперпоточности, а в дальнейшем на одном кристалле производители стали размещать и несколько физических ядер. Сейчас оба основных производителя центральных процессоров для ПК (Intel и AMD) выпускают модели с двумя и более физическими ядрами, как с поддержкой виртуальных ядер, так и без нее.
Потоки или ядра?
Центральный процессор – один из ключевых компонентов системы, влияющих на ее производительность в целевых задачах, а также на удобство использования компьютера. Часто у пользователей, желающих собрать систему, возникает вопрос: на что ориентироваться при выборе ЦП? Стоит ли переплачивать за дополнительные потоки/виртуальные ядра?
Ответ зависит от предполагаемых сценариев использования. В большинстве игр прирост производительности от гиперпоточности окажется минимальным или даже нулевым, а вот добавление физических ядер скажется на частоте кадров явно положительно. Разумеется, если движок игры способен распараллеливать вычисления на такое количество ядер. Многие игры, выпущенные в предыдущие годы, способны работать только с 2-4 ядрами — остальные будут простаивать или заниматься фоновыми программами.
Наибольшую выгоду виртуальные ядра приносят в рабочих задачах, подверженных эффективному распараллеливанию. К ним относятся, например, архивация файлов, обработка фотографий, рендеринг видео, моделирование. Таким образом, польза дополнительных потоков для компьютера, который будет использоваться в первую очередь для игр или медиа, сомнительна. Впрочем, если параллельно с играми будут выполняться и другие задачи, такие как стриминг, запись/обработка видео, скачивание/раздача файлов при помощи торрент-клиента, антивирусная проверка, она возрастает. В подобных ситуациях виртуальные ядра помогают снять фоновую нагрузку с физических.
Впрочем, кратного роста вычислительной мощи ждать все равно не стоит, и для типичных домашних сценариев использования переплата за виртуальные ядра часто будет неоправданной. Другое дело – если компьютер используется для профессиональной деятельности, и применяются программы, хорошо работающие с гиперпоточностью – прирост в производительности при правильной оптимизации может составлять десятки процентов.
Подытожим : если речь идет о домашнем игровом или мультимедийном компьютере, не стоит ждать чудес от виртуальных ядер, и, если за них придется доплатить ощутимую сумму, лучше рассмотреть вариант с дополнительными физическими, или вложить деньги в другие комплектующие. Если же система будет использоваться для работы – прирост может быть значительным, поэтому стоит ознакомиться с тестами гиперпоточных ЦП для конкретного вида задач.
Что важнее: ядра или потоки?
Большинство современных процессоров поддерживают многопоточность. У Intel технология многопоточных вычислений называется Hyper Threading (HT) у AMD — Simultaneous Multithreading (SMT). Если не вдаваться в технические подробности, ее суть в том, что система определяет одно физическое ядро процессора как два логических (виртуальных). На практике это позволяет загрузить физическое ядро процессора вторым потоком команд, если первый поток простаивает. То есть ядро используется более эффективно и выполняет больше работы.
Процессор с поддержкой HT или SMT всегда имеет в два раза больше потоков, чем ядер. Для краткости это может обозначаться следующим способом: 4C/8T (от английского cores — ядра, threads — потоки).
В продаже есть множество моделей с разным количеством ядер и потоков, поэтому нужно разобраться, что лучше и какой процессор выбрать. Особенно это важно, когда нужно выбрать процессор на замену. Информация в статье актуальна для процессоров Ryzen и Intel Core начиная с шестого поколения.
Одинаковое число ядер
Пример: Ryzen 5 3500 — 6 ядер / 6 потоков, Ryzen 5 3600 — 6 ядер / 12 потоков
Если сравнивать процессоры с одинаковым количеством ядер, но разным количеством потоков, то все очевидно. При прочих равных условиях будет лучше процессор с большим количеством потоков. Это не всегда дает существенное преимущество, так как нужна еще оптимизация и поддержка со стороны программного обеспечения. Однако в совместимых программах производительность будет выше.
Переплата не всегда оправдана. Процессоры Ryzen 5 3500 и Ryzen 5 3600 имеют по шесть ядер, но отличаются объемом кэша и поддержкой SMT. Разница между ними составляет примерно 3500 рублей, а между обычным R5 3500 и R5 3600X около 5500 рублей. При этом все эти процессоры можно разогнать, а разница в некоторых играх практически не видна. Другое дело, если нужен профессиональный софт, например, для монтажа видео. Там многопоточность лишней не будет точно.
Также стоит отметить, что запаса на будущее больше у многопоточного процессора. При условии, что используемое программное обеспечение эффективно работает с потоками.
Одинаковое число потоков
Пример: Core i7−7700K — 4 ядра / 8 потоков, Core i7−9700K — 8 ядер / 8 потоков
В этой ситуации предпочтительнее будет процессор с восемью полноценными ядрами, даже если не брать во внимание разницу в поколениях. Ведь физические ядра мощнее чем виртуальные.
Если смотреть со стороны поддержки софта, то большее количество физических ядер беспроблемнее. К примеру, в ранних версиях Cyberpunk 2077 технология SMT не использовалась. То есть пользователи многопоточных процессоров AMD не получали преимущества.
Разное число ядер и потоков
Пример: Core i7−7700K — 4 ядра / 8 потоков, Core i5−9600K — 6 ядер / 6 потоков
Сложнее дело обстоит, когда нужно сравнить процессоры с разным количеством ядер и потоков. В линейке процессоров Intel и AMD есть модели как с HT и SMT, так и без них. К примеру, Intel Core i7−7700K имеет четыре ядра и восемь потоков, в то время как у Intel Core i5−9600K на два ядра больше, но потоков всего шесть. Сложно сказать навскидку, что лучше, так как в первом случае процессор имеет большее число потоков, а во втором — физических ядер.
В этом случае важно понимать, что значение имеют не только количество ядер и потоков, но и другие характеристики процессора и системы: объем кэша, архитектура, контроллер памяти и т. п. При различных сценариях использования это может как не влиять вовсе, так и быть решающим фактором. Процессоры разного поколения могут существенно отличаться по производительности, поэтому при непосредственном сравнении преимущество, скорее всего, будет у более нового процессора.
Когда речь идет о сборке ПК с нуля, то в большинстве случаев будет предпочтительнее взять более новый процессор. Однако если нужно оценить перспективы апгрейда с более старого процессора, то лучше смотреть прямые сравнения. В нашем случае по видео видно, что у шестиядерного процессора загрузка бывает чуть выше, но производительность сильно не отличается. Стоит ли в этом случае менять Core i7−7700K на Core i5−9600K, вопрос очень спорный.
Такая же ситуация повторяется и с более новым Core i3−10100, который также имеет четыре ядра и восемь потоков. В сравнении с Core i5−9400 он показывает примерно равную производительность.
Как не ошибиться при выборе
При выборе процессора нужно обязательно уточнять количество потоков. В описании товара интернет-магазины, как правило, не указывают количество потоков, ограничиваясь только физическими ядрами. Здесь нет неточности или уловки, но чтобы узнать количество потоков, нужно смотреть подробные характеристики.
Производители не придерживаются какой-то определенной схемы. Разные поколения процессоров Intel могут как поддерживать HT, так и нет. К примеру, Intel Core i5−9400 не поддерживает HT, но Intel Core i5−10400 уже поддерживает.
Skol — мир электроники
Практически каждый в современном мире имеет дело с компьютерами и наверняка сталкивался с терминами ядра и потоки. Давайте разберемся что это и так ли хорошо иметь много ядер и потоков. На рынке компьютерных комплектующих присутствует немало процессоров, у которых число потоков больше числа физических ядер. В некоторых задачах эти «виртуальные ядра» могут дать существенный прирост в производительности, в других они практически бесполезны.
Что такое ядро и поток
Ядро – упрощенно это физическая единица процессора, способная в определенно взятый момент времени выполнять одну последовательность команд. Если ядро одно, а команд много, ядро переключается между ними, выполняя задачи поочередно в зависимости от приоритета.
Поток его еще называют иногда виртуальным ядром – результат работы современных технологий (в процессорах производства компании Intel – эта технология называется Hyper Threading, а у компании AMD – SMT технологией), когда ядро, с помощью специальных технологий, способно разделять свою производительность. Выражение одно ядро и два потока говорит о том, что физически одно ядро, но это ядро виртуально делится на два и позволяет распараллеливать задачи и решать их одновременно. То есть при наличии двух сравнительно «простых задач» процессор сможет выполнить их в два раза быстрее, чем обычный процессор с одним ядром. Примером таких задач могут быть скачивание фоном файлов, работа антивируса. Технология создания потоков позволяют делать несколько параллельных вычислительных каналов, что позволяет использовать способности компьютеров более эффективно, так как если одно из виртуальных ядер закончило свою работу, то может присоединиться к работе другого ядра. Производительность повыситься, но повышение будет ограниченно, так как используются ресурсы (тактовая частота измеряется в МГц– то есть вычислительная способность) физического ядра, которое у нас одно. Только используя специальные программы, работающие с гиперпотоком и при правильной оптимизации можно прочувствовать прирост в производительности.
Можно сделать вывод, что при работе с «простыми» задачами одноядерный процессор с двумя потоками по производительности сопоставим с «настоящими» двухъядерными процессорами, но если задачи будут «сложными» например архивация, рендеринг видео, то для увеличения производительности стоит задуматься о приобретении процессора с большим количеством ядер. Так как многоядерные процессоры более предпочтительны для серьезных задач чем многопоточные.
Какой процессор выбрать
При выборе процессора естественно, что встает вопрос как выбрать оптимальное количество ядер и потоков и не переплачивать. Очевидно, что с количеством ядер и потоков стоимость такого процессора будет значительно возрастать. При выборе оптимального процессора, чтобы не переплачивать и чтобы работало все быстро стоит обратить внимание на задачи стоящие перед вашим компьютером:
1) Если компьютер будет офисным для работы без использования серьезных программ, то достаточно 2 «настоящих» ядра. Данный процессор вполне справляется с большинством задач в современных условиях.
2) Если вы собираетесь играть в игры, то многие игры поддерживают 2-4 ядра. Наличие большего количества ядер, не будет ускорять процесс, так как они будут работать в холостую, а учитывая, что в многоядерных процессорах частота у ядер ниже, то вы столкнетесь с тем, что ваш компьютер стоил кучу денег, а в итоге игры тормозят.
3) Если вы используете компьютер в проектировании и обработке видео в своей профессиональной деятельности, то от количества ядер напрямую будет зависеть производительность этого процесса и здесь лучше иметь не меньше 4 ядер. Большее количество ядер будет только преимуществом и если бюджет позволяет, то возьмите хотя бы 8 ядер.
Рекомендации на конкретные модели в зависимости от стоящих перед ним задач:
1. Офисные: Процессоры Intel: Pentium Dual-Core, Core i3 любого поколения; процессоры AMD: A-серии, Ryzen 3 1200.
2. Игровые: Процессоры Intel: Core i3/i5/i7 6-го и выше поколения; процессоры AMD: Ryzen-5/ Ryzen 7.
3. Профессиональные: Процессоры Intel: Core i7 6950X, Core i9 9980XE; процессоры AMD: Threadripper 2920X, Threadripper 2970WX.
Узнать, сколько у вас физических ядер можно, через встроенную утилиту msinfo32.exe
msiinfo32.exe