Процессор: потоки или ядра
На рынке компьютерных комплектующих присутствует немало процессоров, у которых число потоков больше числа физических ядер. В некоторых задачах эти «виртуальные ядра» могут дать существенный прирост в производительности, в других они практически бесполезны.
Ядро — это физически обособленная вычислительная единица процессора, способная в один момент времени выполнять одну последовательность команд. Если ядро одно, а последовательностей требуется выполнять несколько, оно быстро переключается между ними, выполняя задачи поочередно.
Поток (применительно к процессору), или виртуальное ядро – результат реализации вычислений, при котором одно физическое ядро способно программно разделять свою производительность и работать над несколькими последовательностями команд одновременно. Простыми словами, ЦП делает вид для операционной системы и программ, что у него больше ядер, чем есть на самом деле. Убедиться в этом можно, открыв диспетчер устройств или другую программу для мониторинга комплектующих.
Гиперпоточность позволяет распараллеливать вычисления более эффективно – если одно виртуальное ядро завершило работу над своей задачей и находится в режиме ожидания, его ресурсы может использовать другое. В случаях, когда гиперпоточность не поддерживается, эти ресурсы простаивают. Таким образом, поддержка виртуальных ядер может ускорить выполнение некоторых задач, хотя, разумеется, она не так хороша, как наличие дополнительных физических, и удвоения производительности ожидать не стоит.
Иллюстрация концепции потоков/виртуальных ядер:
Рассмотрим следующий упрощенный пример: если двухъядерный процессор с двумя потоками работает с четырьмя последовательностями команд одновременно, а производительность одного ядра для одной последовательности избыточна, то общая производительность будет ниже, чем в случае, если на месте такого процессора будет вариант с двумя ядрами, но с четырьмя потоками, поскольку на переключение между задачами тратится дополнительное время, и часть ресурсов иногда простаивает. А вот если вычислительных ресурсов одного потока недостаточно для выполнения одной последовательности, то виртуальные ядра почти не помогут – нужны дополнительные физические.
Распараллеливание нагрузки при помощи технологии Intel Hyper-Threading
Функции CPU
Какие функции выполняет центральный процессор CPU? Главная функция ― управление всеми операциями компьютера: от простейших сложений чисел на калькуляторе до запуска компьютерных игр. Если рассматривать основные функции центрального процессора подробнее, CPU:
- получает данные из оперативной памяти, выполняет с ними арифметические и логические операции, передаёт их на внешние устройства,
- формирует сигналы, необходимые для работы внутренних узлов и внешних устройств,
- временно хранит результаты выполненных операций, переданных сигналов и других данных,
- принимает запросы от внешних устройств и обрабатывает их.
Что такое ядро процессора?
Если не вдаваться в технические подробности, то количество ядер процессора означает то, сколько задач он может выполнять одновременно. Одноядерный процессоры, которые использовались много лет назад, для работы с несколькими программами очень быстро переключались между ними, что приводило к серьезным замедлениям.
В 2005 году все изменилось — именно тогда в продаже появились первые двухъядерные CPU AMD Athlon 64 x2 и Intel Pentium D. На протяжении следующих десяти лет эти компании начали выпускать четырех-, шести- и даже восьмиядерные модели. Не так давно AMD представила 24-ядерный Threadripper 3970X, предназначенный для серверов и высокопроизводительных рабочих станций, а в 2020 и вовсе собирается выпустить 64-ядерный CPU — Threadripper 3990WX.
Кстати, в сфере специализированных серверных процессоров уже есть и еще более впечатляющие экземпляры, чем 3970X — например, 32-ядерные AMD Epyc. Впрочем, устанавливать их в обычные ПК никакого смысла нет.
Что ж, прямая зависимость скорости работы профессионального ПО от количества ядер процессора очевидна. А что насчет игр?
Сколько ядер в компьютере/ноутбуке лучше?
- На этот вопрос не существует четкого ответа. Многие специалисты ведут споры между собой на тему того, что важнее для современного компьютера – многозадачность или производительность. Как мы уже выяснили ранее, на многозадачность влияет количество ядер центрального процессора, а вот за общую производительность больше ответственности несет тактовая частота.
- Чтобы определиться с количеством ядер при покупке компьютера, в первую очередь необходимо понять, для каких целей Вы будете его использовать. В некоторых ситуациях двухъядерный процессор с приличной тактовой частотой (например, Intel Core i3) способен лучше справиться с поставленными перед ним задачами, чем компьютер с четырехъядерным процессором от AMD с низкой тактовой частотой.
Изображение 7. Восьмиядерный ноутбук.
- Если Вы планируете играть в игры и не вести параллельно стрим, то Вам вполне подойдет и двухъядерный компьютер с процессором Intel. Если же для Вас играет особую роль многозадачность, которая крайне важна при работе в тяжелых графических редакторах (например, 3DMax), то следует выбирать ПК с многоядерным процессором, но при этом не забывать и о тактовой частоте.
Обладателям старых процессоров AMD
Следующая информация будет полезна обладателям старых процессоров AMD. Если вы до сих пользуетесь следующими чипами, то будете приятно удивлены:Технология разблокировки дополнительных ядер называется ACC (Advanced Clock Calibration). Она поддерживается в следующих чипсетах:Утилита, позволяющая раскрыть дополнительные ядра у каждого производителя называется по-разному:Таким несложным способом можно превратить 2-ядерную систему в 4-ядерную. Большинство из вас даже не догадывались о подобном, верно? Будем надеяться, что я вам помог бесплатно добиться повышения производительности.
В данной статье я попытался вам максимально подробно объяснить, что такое ядро, из чего оно состоит, какие функции выполняет и каким потенциалом обладает.
В следующих ликбезах вас ждет еще много интересного, а потому не пропускайте новый материал. Пока, пока.
Зачем процессору несколько ядер?
Процессор – это вычислительный центр любого компьютера, планшета, смартфона и даже игровой консоли. Именно процессор принимает команды пользователя, вводимые в различных приложениях и программах, обрабатывает их и распределяет задачи между другими узлами системы – видеокартой , оперативной памятью , твердотельным диском .
Вот поэтому процессор – это мозговой центр каждого компьютера, отвечающий за его вычислительные способности и скорость работы.
Первые процессоры были едиными устройствами, которые принимали команды и выполняли их в строгой очередности. Одно ядро позволяло выбирать процессор при покупке только по показателям частоты. А недостаток производительности на первых порах компенсировали созданием двух- и многопроцессорных конфигураций. В таких сборках команды пользователя на ввод обрабатывал первый процессор, а остальные операции по возможности равномерно распределялись между остальными. Для сборки таких систем использовались двухпроцессорные платы или конфигурации на несколько сокетов.
Следующим шагом производители создали многоядерную архитектуру, позволяющую на площади, казалось бы, небольшого микрочипа размещать несколько вычислительных центров, которые по сути являлись самостоятельными процессорами. Так в продаже появились двух-, четырех- и восьмиядерные устройства, которые обрабатывали сразу несколько потоков информации.
Позже корпорация Intel в линейке процессоров Pentium внедрила техническую возможность выполнения одним ядром двух команд за такт, что стало началом новой эпохи в компьютерных технологиях – гиперпоточности процессоров. А сейчас специалисты компании активно работают над новой технологией реализации четырех потоков на одном ядре, и уже в ближайшее время подобные процессоры будут представлены публике.
Ядра, кеши и графика
Приведенная выше диаграмма взята из опубликованного в 2014 году официального документа Intel об архитектуре процессора Core i7-4770S. Это просто пример того, как выглядит один процессор — другие процессоры имеют разную компоновку.
Мы видим, что это четырехъядерный процессор. Было время, когда у процессора было только одно ядро. Теперь, когда у нас несколько ядер, они обрабатывают инструкции намного быстрее. Ядра также могут иметь так называемую гиперпоточность или одновременную многопоточность (SMT), что делает одно ядро похожим на два для ПК. Как Вы понимаете, это помогает еще больше сократить время обработки.
Ядра на этой диаграмме совместно используют так называемый кэш L3. Это форма встроенной памяти внутри ЦП. ЦП также имеют кеши L1 и L2, содержащиеся в каждом ядре, а также регистры, которые являются формой низкоуровневой памяти. Если Вы хотите понять различия между регистрами, кешами и системной оперативной памятью, ознакомьтесь с этим ответом на StackExchange.
Показанный выше ЦП также содержит системный агент, контроллер памяти и другие части микросхемы, которые управляют входящей и исходящей информацией ЦП.
Наконец, есть встроенная графика процессора, которая генерирует все те замечательные визуальные элементы, которые Вы видите на своем экране. Не все процессоры содержат собственный графический адаптер. Например, процессорам AMD Zen для настольных ПК требуется дискретная видеокарта для отображения чего-либо на экране. Некоторые процессоры Intel Core для настольных ПК также не имеют встроенной графики.
Прочие вопросы
В этот раздел я вынес некоторые курьёзы, возникающие из-за многоуровневой организации логических процессоров.
Как я уже упоминал, кэши в процессоре тоже образуют иерархию, и она довольно сильно связано с топологией ядер, однако не определяется ей однозначно. Для определения того, какие кэши для каких логических процессоров общие, а какие нет, используется вывод CPUID.4 и её подлистов.
Лицензирование
Некоторые программные продукты поставляются числом лицензий, определяемых количеством процессоров в системе, на которой они будут использоваться. Другие — числом ядер в системе. Наконец, для определения числа лицензий число процессоров может умножаться на дробный «core factor», зависящий от типа процессора!
Виртуализация
Системы виртуализации, способные моделировать многоядерные системы, могут назначить виртуальным процессорам внутри машины произвольную топологию, не совпадающую с конфигурацией реальной аппаратуры. Так, внутри хозяйской системы (1, 2, 2) некоторые известные системы виртуализации по умолчанию выносят все логические процессоры на верхний уровень, т.е. создают конфигурацию (4, 1, 1). В сочетании с особенностями лицензирования, зависящими от топологии, это может порождать забавные эффекты.