При поиске процессора нужно учитывать многое. Ядра, потоки, тактовые частоты, кэш-память, потенциал разгона, рабочие температуры, TDP, IPC… список можно продолжать и продолжать.
Вполне естественно, что все эти спецификации могут сбивать с толку, когда речь заходит об их назначении.
В этой статье мы рассмотрим один из наиболее важных аспектов, связанных с производительностью процессора: его физические ядра, потоки и результирующие логические процессоры.
Что делает каждый из этих компонентов уникальным? Для чего они используются? Сколько вам нужно для ваших рабочих нагрузок?
И самое главное: работают ли потоки или логические процессоры так же, как ядра?
Что ж, прежде чем мы начнём, давайте подробнее рассмотрим, что они означают:
Что такое ядра центрального процессора
Ядро ЦП – это, собственно, и есть физическая форма процессора.
Хотя раньше процессоры работали только с одним ядром, современные процессоры преимущественно многоядерные. Это означает, что они имеют, по крайней мере, два или более ядра, установленных на кристалле интегральной схемы (или нескольких чипсетах), и поэтому могут обрабатывать две или более задач одновременно.
Обратите внимание, что каждое ядро может одновременно выполнять только одну задачу.
Если ядер ЦП недостаточно для количества обрабатываемых задач, происходит снижение производительности.
Это называется накладными расходами на переключение контекста. Чтобы ядро могло обрабатывать разные задачи, одну задачу нужно удалить, а следующую загрузить. Говоря иначе, Context Switch Overhead – это когда ЦП тратит много времени на переключение между задачами, а не на их обработку.
Это станет важным, когда мы посмотрим на потоки чуть ниже.
Что такое тактовая частота ядра?
Тактовая частота ядра является мерой его скорости обработки задач, которая не обязательно является мерой его общей производительности.
Если быть более точным, термин «тактовая частота» относится к количеству циклов вычислений, которые ядро выполняет в секунду. Этот показатель в настоящее время измеряется в гигагерцах: миллиарды циклов в секунду.
Причина, по которой тактовые частоты не являются единственным определяющим фактором производительности ЦП, заключается в том, что внутренняя архитектура – синергия между несколькими ядрами – и размер внутренних кэшей имеют первостепенное значение для обеспечения его общей производительности.
Один ЦП может обрабатывать больше за цикл, чем другой ЦП, просто из-за своей архитектуры.
Что такое базовая и повышенная тактовая частота?
Базовая тактовая частота ЦП – это минимальная частота, с которой ЦП будет работать в режиме ожидания или при обработке низкоуровневых рабочих нагрузок.
Напротив, тактовая частота Boost – это показатель того, насколько производительность ЦП может быть повышена при выполнении более ресурсоемких задач и процессов.
Тактовые частоты Boost применяются автоматически и ограничиваются результирующим теплом, которое может выдержать ЦП, прежде чем он достигнет небезопасного уровня операций (среди прочих факторов).
Ядра могут быть разогнаны с доступным запасом температуры и мощности. Когда это происходит, функция повышения тактовой частоты автоматически отключается или дросселируется.
Эта статья подробно рассматривает эту тему, если вы хотите узнать больше.
Лучше иметь больше ядер или меньше, более мощных ядер?
Ответ на этот вопрос зависит исключительно от типа рабочих нагрузок, с которыми будет работать ваш компьютер.
Если вы один из наших постоянных читателей, вы, скорее всего, знакомы с терминами «активные» и «пассивные» рабочие нагрузки.
Активные рабочие нагрузки относятся к любому процессу, который требует, чтобы пользователь вручную манипулировал данными или корректировал их в режиме реального времени для выполнения задачи.
Типичные примеры активных рабочих нагрузок включают взаимодействие с областью просмотра приложения в режиме реального времени в моушн-дизайне, 3D-моделировании, редактировании видео или играх.
С другой стороны, пассивные рабочие нагрузки – это задачи, которые обычно легко распараллеливаются и которые можно оставить без присмотра. В основном это относится к задачам рендеринга, таким как рендеринг CPU или GPU, рендеринг 3D, рендеринг видео.
Активные рабочие нагрузки
Активные рабочие нагрузки в большей степени зависят от высокой одноядерной производительности и повышенных тактовых частот. Следовательно, такие рабочие нагрузки потребуют меньшего количества, но более мощных ядер для более плавной работы в целом.
Пассивные рабочие нагрузки
Пассивные рабочие нагрузки выигрывают от большого количества ядер и более высоких базовых тактовых частот. Этим процессам потребуются процессоры с большим количеством ядер, такие как серия AMD Threadripper .
Что такое потоки процессора
Ещё одним аспектом, от которого выигрывают пассивные рабочие нагрузки, является большое количество потоков и возможности гиперпоточности.
Но, что это за «потоки»?
Поток в процессоре – это набор данных, который отправляется из приложения в ЦП для обработки.
Потоки не являются физическими компонентами ЦП, а скорее индикатором количества процессов, которые могут обрабатываться ядрами.
Помните про накладные расходы на переключение контекста, о которых мы говорили ранее в разделе «Ядра»?
Поскольку большая часть производительности ядра тратится на переключение между задачами, многопоточность создаёт несколько виртуальных ядер из каждого физического ядра (обычно два потока на ядро).
Это позволяет оптимизировать постановку задач в очередь и гораздо эффективнее использовать реальное ядро.
Возможность обработки нескольких потоков позволяет вашему процессору беспрепятственно переключаться между рабочими нагрузками и задачами.
Что такое гиперпоточность?
Гиперпоточность в процессорах Intel и SMT (одновременная многопоточность) в процессорах AMD – это названия процесса разделения физических ядер на виртуальные, что позволяет одному ядру более эффективно обрабатывать несколько потоков.
По сути, это способ планирования потоков, которые будут выполняться ядром без простоев. Это достигается путём подготовки потока к обработке во время выполнения другого потока.
На самом деле, Hyperthreading и SMT – это не одновременная обработка двух потоков одним физическим ядром, а эффективный способ подготовки двух потоков к оптимизированной обработке – по одному за раз.
Все ли процессоры поддерживают Hyperthreading или SMT?
Большинство процессоров имеют поддержку Hyperthreading или SMT и способны запускать два потока на ядро.
Однако есть некоторые процессоры, такие как процессоры Intel Celeron или AMD Ryzen 3 более низкого уровня, которые не поддерживают Hyperthreading или SMT и, следовательно, будут иметь только один поток, работающий на ядро.
Intel специально отключает поддержку Hyperthreading на некоторых процессорах более высокого уровня, в основном по причинам сегментации рынка, поэтому обязательно ознакомьтесь с описанием продукта для ядер и потоков, прежде чем покупать процессоры ещё более высокого уровня.
Являются ли потоки такими же быстрыми, как ядра?
Потоки не так быстры, как ядра.
Hyperthreading или SMT позволяет планировать задачи более эффективно, то есть они могут использовать части ядра, которые в настоящее время не обрабатывают задачу активно.
В лучшем случае потоки обеспечивают примерно на 50% большую производительность по сравнению с физическим ядром.
Вам нужен ЦП с поддержкой Hyperthreading или SMT?
Это зависит от вашей загруженности.
Поскольку задача всегда предпочтёт выполняться на свободном ядре, а не на свободном потоке (поскольку ядра быстрее, чем потоки), в зависимости от ваших типичных рабочих нагрузок вы можете вообще не использовать потоки ЦП.
Если вы выполняете активные рабочие нагрузки, такие как 3D-моделирование или игры, в течение обычного дня, скорее всего, вы не будете использовать все свои ядра, поскольку такие рабочие нагрузки не могут быть легко распараллелены и обычно выполняются только на одном или двух ядрах.
Тем не менее, для рабочих нагрузок, таких как рендеринг на ЦП, которые используют 100% ваших ядер, и легко используют все доступные потоки, наличие ЦП с поддержкой Hyperthreading или SMT может существенно повлиять на производительность.
Что такое логические процессоры
Теперь, когда мы рассмотрели, что такое ядра и потоки, определение логических процессоров стало гораздо более простой задачей.
Логические процессоры – это виртуализированные процессоры, к которым система может обращаться и получать к ним доступ. Логические процессоры – это просто мера того, сколько ядер операционная система видит и может адресовать.
Таким образом, это произведение (умножение) количества физических ядер на количество потоков, которые может обрабатывать каждое ядро.
Допустим, у вас есть 8-ядерный 8-поточный процессор. Количество логических процессоров у вас будет 8. Это значение является произведением количества физических ядер (8) и количества потоков, которые они могут обрабатывать (1).
Но что, если ваш процессор поддерживает гиперпоточность?
Что ж, тогда каждое ядро может обрабатывать два потока, поэтому 8-ядерный процессор будет иметь 8×2 = 16 логических процессоров.
Как узнать, сколько логических процессоров у вашего процессора?
Если вы хотите узнать, сколько логических процессоров имеет ваш ЦП, просто откройте диспетчер задач в ОС Windows (нажмите одновременно клавиши Ctrl + Shift + Esc) и откройте вкладку Производительность, затем выделите вкладку ЦП и посмотрите на нижнюю правую часть окна.
Прямо под количеством ядер ЦП будет количество логических процессоров.
Логические процессоры против физических ядер
Что ценнее? Логические процессоры или физические ядра?
Это простой ответ: физические ядра.
Помните, что при многопоточности вы не обрабатываете два потока одновременно, вы просто планируете потоки так, чтобы одно физическое ядро могло обрабатывать их максимально эффективно.
Логические процессоры (или потоки) в лучшем случае обеспечат повышение производительности на 50% в рабочих нагрузках, которые хорошо распараллелены, таких как рендеринг ЦП.
Физические ядра продемонстрируют 100% прирост производительности в таких рабочих нагрузках.
В однопоточных рабочих нагрузках вы, скорее всего, вообще не увидите увеличения производительности при переключении с ЦП без поддержки потоков на ЦП с поддержкой потоков (при прочих равных условиях).
Выводы
Логические процессоры – это количество потоков ЦП, которые операционная система видит и может адресовать.
Поскольку ваш ПК всегда будет сначала планировать задачи на физических ядрах, прежде чем переходить к использованию потоков, наличие ЦП с Hyperthreading или SMT принесёт вам наибольшую пользу, если вы сможете использовать все ядра ЦП в рабочих нагрузках, таких как рендеринг на ЦП.
Вот упрощение: ваше ядро ЦП – это рот, а две руки – это потоки ядра. Задача, которая должна быть обработана: еда.
Если вы берёте еду в одну руку и кладете её в рот, затем пережевываете и глотаете, и только после того, как вы закончите это делать, вы протягиваете руку, чтобы взять ещё немного еды, рот «праздно ожидает», когда поступит ещё порция.
Это пустая трата времени обработки.
Двумя руками (двумя потоками) вторая рука уже может класть еду в рот для обработки, а первая рука искать следующую порцию.
Ну, теперь я голоден…