Различия между физическими ядрами и логическими процессорами

Обновлено 11.03.2022

core cpu logo

Добрый день! Уважаемые подписчики и просто гости IT блога pyatilistnik.org. В прошлый раз мы с вами разобрали пошаговую установку Windows 11. В сегодняшнем посте мы поговорим про различия между физическими ядрами и логическими процессорами, так как у многих людей есть в этом путаница и закономерные вопросы, так как есть физические процессоры, ядра, потоки, переключатели контекста, логические процессоры, не говоря уже обо всех других аспектах, таких как кеш, TDP, тактовая частота.

Понимание разницы между физическими ядрами и логическими процессорами

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

Логические процессоры также связаны с  потоками. Они поддерживаются технологией Hyper-Threading, встроенной в некоторые процессоры Intel (Hyper Transport на AMD). При включенной гиперпоточности вы фактически получаете два потока на ядро. Таким образом, если у вас есть 6-ядерный процессор, такой как процессор Intel Core i7-8750H, с включенной гиперпоточностью, вы, по сути, получаете 12 потоков, работающих одновременно. Поэтому можно сказать, что у вас 12 логических ядер.

Таким образом,  логические ядра - это количество физических ядер, умноженное на количество потоков, которые может выполнять каждое ядро. При использовании технологии Hyper-threading каждое физическое ядро ​​может выполнять два потока. Вот пример реального сервера Dell PowerEdge R740, в котором есть два процессора Intel Xeon Gold 6154 3.00 GHz. У которого 18 физических ядер и 36 логических, а так как на представленном скриншоте сервер имеет два процессора, то все нужно умножить на два.

логические ядра - это количество физических ядер, умноженное на количество потоков

cpu в PowerEdge R740

Итак, давайте посмотрим, что означает каждый из этих терминов в отдельности.

Физические ядра против логических процессоров

Я часто встречал миф и заблуждение, что якобы логические процессоры увеличивают количество физических ядер, запомните это бред. Логический процессор НЕ увеличивает количество имеющихся у вас физических ядер. Логические процессоры - это всего лишь способ повысить эффективность ваших нынешних ядер. Они не увеличивают ни их количество, ни скорость, с которой они обрабатывают информацию.

Запомните следующее: Большее количество физических ядер ВСЕГДА лучше, чем большее количество логических ядер

У вас может возникнуть соблазн купить процессор с 2 физическими ядрами и 2 дополнительными потоками, что в сумме даст вам 4 логических процессора. Однако это не то же самое, что иметь 4 физических ядра.

Другими словами, двухъядерный процессор с поддержкой гиперпоточности менее мощный, чем четырехъядерный процессор без поддержки гиперпоточности.

Что Такое Ядро?

Ядро - это физический объект на процессоре. До того, как появились ядра, никогда не было беспокойства о том, сколько ядер у процессора, а сколько нет. Тогда у каждого процессора был один набор компонентов, таких как ALU, регистры, кеш и т. д. В настоящее время все стало довольно сложно. Почти все процессоры имеют как минимум два ядра. Каждое из ядер имеет отдельное ALU, регистры и кэш. Схематично, это выглядит вот так.

Схема структуры процессора

На этом изображении хорошо представлена ​​архитектура процессора. Как видите, этот процессор имеет четыре ядра, каждое из которых имеет собственный кэш. Внутри у каждого будет свой набор компонентов и схем.

Каждое ядро ​​может иметь скорость от базовой скорости 1 GHz до базовой скорости 3 GHz. Например, процессоры Intel Celeron имеют базовую частоту 1 GHz на ядро. С другой стороны, процессор Intel Core i7 может иметь базовую тактовую частоту около 3,5 GHz на ядро ​​и частоту Turbo 4,90 GHz на ядро.

Turbo Frequency срабатывает, когда вы выполняете ресурсоемкие задачи, такие как игры. Однако, когда процессор переходит в обычное состояние или при работе с нетребовательными задачами, такими как обработка текстов, он возвращается к базовой частоте. Это делается для уменьшения выделяемого тепла и потребляемой мощности.

Для чего придумали ядра?

Использование нескольких процессоров имело свои недостатки, потому что между каждым процессором была внешняя шина, поэтому скорость компьютера ограничивалась скоростью шины. Лучшим способом было включить несколько секций Core внутри одного чипа или кристалла. В этом случае чип все еще был похож на один ЦП с подключением питания, монтажом, радиатором и передней шиной, но имел несколько ядер. Это привело к появлению  многоядерных процессоров, которые позволили достичь более высоких скоростей вычислений.

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

Подкомпоненты Центрального Процессора

Выше я упомянул компоненты ЦП и его ядер, давайте я немного подробнее расскажу, о них.

  1. ALU (Arithmetic Logic Unit - Арифметико-Логическое Устройство) - Это компонент ЦП, который выполняет математические, логические операции или операции принятия решений. Вы можете рассматривать АЛУ как самое сердце.
  2. FPU (Floating Point Unit - Модуль С Плавающей Запятой) - Это вспомогательный компонент ALU, который выполняет математические операции над числами с плавающей запятой.
  3. Регистры - Это компоненты хранения внутри ЦП, где данные и инструкции хранятся во время процесса выполнения. Регистры также хранят различные состояния, необходимые процессу выполнения.
  4. Блок Управления (Control Unit) - Блок  управления подобен оркестратору,  который контролирует различные шаги, происходящие во время выполнения инструкций. Вы можете думать об этом как, о менеджере, который на самом деле заставляет все это работать внутри процессора.
  5. Кэш - Современные процессоры также содержат кэш. Это дополнительная память внутри ЦП, которая используется для хранения инструкций и данных после выборки из ОЗУ. Кэш заполняется инструкциями и данными, которые считаются наиболее важными для предстоящего выполнения в ЦП. Это устраняет время выборки из ОЗУ, поскольку инструкции передаются в ЦП из кэша, который уже находится внутри ЦП. В свою очередь, это обеспечивает повышение общей производительности компьютера.
  6. Фронтальная Шина (Front-Side-Bus) - Как вы видели, инструкции и данные перемещаются в ЦП и из него. Первоначально они находятся в ОЗУ и передаются в ЦП. В ЦП инструкции обрабатываются, а результат передается в ОЗУ. Передняя шина обеспечивает интерфейс или шлюз для этого потока информации.

Фронтальная Шина

Как работает процессор или ядро?

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

Инструкции хранятся в ОЗУ, и каждая инструкция хранится по определенному адресу памяти внутри ОЗУ. Инструкции считываются ЦП, выполняются, а результат сохраняется в ОЗУ. Каждое ядро ​​в ЦП выполняет четыре основные функции в процессе выполнения инструкций:

Как работает процессор или ядро

  1. Получить (Fetch) - Инструкции извлекаются ЦП из ОЗУ.
  2. Расшифровать (Decode) - Инструкции написаны на языке ассемблера, которые декодируются в двоичные слова (единицы и нули), потому что выполнение инструкций осуществляется как бинарные операции.
  3. Выполнить (Execute) - Декодированные инструкции выполняются в ЦП.
  4. Обратная Запись -

Результат выполнения инструкций сохраняется в оперативной памяти. Вместе вышеуказанные 4 функции, происходящие в одной и той же последовательности, называются  командным циклом. Во время выполнения компьютерных программ циклы инструкций повторяются для каждой инструкции в программе. Каждое ядро ​​может обрабатывать цикл выборки и выполнения. Следовательно, чем больше у вас ядер, тем больше циклов команд может выполнить ЦП.

Зачем Так Много Ядер Вместо Одного Мощного Одноядерного Процессора?

Обычно так было до введения ядер. Например, Pentium II, флагманский процессор 1997 года, имел одно ядро. Он значительно улучшил тактовую частоту по сравнению с Pentium I. Точно так же Pentium III, флагманский процессор 1999 года, улучшил тактовую частоту Pentium II. Так зачем вводить больше ядер?

  • Высокая Температура - В конце концов улучшение тактовой частоты достигло физического ограничения. Они просто не могли охлаждаться достаточно эффективно, чтобы поддерживать точную производительность. Кроме того, они просто будут потреблять много энергии, чтобы работать. Это породило ядра. Идея здесь заключалась в том, что два ядра, работающие на более медленных скоростях, будут потреблять меньше энергии и выделять меньше тепла по сравнению с одним ядром, работающим на сверхвысокой скорости.
  • Многозадачность - Помимо проблем с нагревом, еще одной проблемой одноядерного процессора было отсутствие многозадачности. Есть такая штука, как Context Switch Overhead. Переключение контекста происходит, когда ЦП должен переключиться с одной задачи на другую. Поэтому, если вы печатаете что-то в Microsoft Word и вдруг переключаетесь на свой интернет-браузер, процессор должен переключиться на совершенно другой процесс. Это ухудшает производительность.

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

  • Потоки (Threads) - Здесь стоит определить потоки. Это довольно простая концепция, но необходимая для понимания того, что такое логические процессоры. Потоки (процессы) - это в основном набор данных, доставляемых определенной программой процессору. Для пояснения рассмотрим поток как единую программу, работающую на компьютере, такую ​​как Skype или Microsoft Word. Одноядерный процессор может одновременно обрабатывать только один поток. Таким образом, если вы переключитесь с потока Skype на поток Microsoft Word на одном ядре процессора, вы понесете штраф за переключение контекста.

Чтобы переключаться с одного потока на другой, одноядерный процессор должен быть чрезвычайно быстрым, чтобы обеспечить плавный переход. Никто не хочет, чтобы их компьютер тормозил. Таким образом, чтобы выполнить этот плавный переход, потребуется много энергии, чтобы компенсировать накладные расходы, вызванные переключением контекста. Это снова генерирует тепло. Однако многоядерные процессоры имеют несколько потоков. Каждое ядро ​​может обрабатывать отдельный набор данных из другой программы. Таким образом, в случае, когда у вас есть два ядра и две программы, работающие одновременно, каждое ядро ​​будет обрабатывать один поток отдельно. Поэтому переход между ними будет очень плавным.

Не говоря уже о том, что процессор будет работать прохладно и в то же время, потому что ядрам не придется беспокоиться о переключении, т.е. об удалении текущего потока и загрузке ресурсов следующего потока при переключении. Поэтому наличие нескольких ядер необходимо для многозадачности. Чем больше у вас потоков, тем больше одновременных задач вы можете выполнять.

Как правило, количество потоков = количеству ядер. ЕСЛИ ТОЛЬКО ваш процессор не поддерживает  Hyper-Threading, в этом случае количество потоков >  количество ядер

Вы можете легко проверить количество потоков или логических процессоров, работающих в данный момент на вашем компьютере. В моем примере есть сервер Windows Server 2022, откройте диспетчер устройств и выберите вкладку ЦП. Тут у меня видно:

  • Два сокета - то есть два физических процессора
  • Ядра - 12 физических ядер
  • 24 логических процесса

Диспетчер задач

Логические Процессоры и Hyper-Threading

Теперь, когда у вас есть общее представление о том, что такое ядро ​​и поток, пришло время поговорить о том, что такое логические процессоры и каково их отношение к Hyper-Threading.

Логический процессор — это абстрактный процессор, созданный полностью из программного обеспечения. Однако операционная система ПРИНИМАЕТ это как отдельный физический процессор. По сути, если у вас есть процессор с  включенной технологией Hyper-Threading, количество логических процессоров будет в два раза больше, чем физических ядер. В итоге у вас получается два потока на ядро. Обратите внимание, что не все процессоры Intel имеют функцию Hyper-Threading.

Проведем анатомическую аналогию, ваш "рот", который ест "еду" "двумя руками". Рот здесь представляет собой "ядро", а еда - "процесс/задачу". Если бы ваш рот был одноядерным процессором без включенной гиперпоточности, то то, как вы едите, выглядело бы примерно так:
  1. Возьмите еду одной рукой и положите ее в рот
  2. Жуйте пищу
  3. ПОДОЖДИТЕ, пока ее не разжевали
  4. Убедитесь, что еда проглочена
  5. Затем протяните руку для еще одного укуса

Если бы ваш рот был одноядерным с включенной гиперпоточностью, то то, как вы едите, выглядело бы примерно так:

  1. Возьмите еду одной рукой и положите ее в рот
  2. В то же время используйте другую руку, чтобы взять еще один кусок.
  3. Когда вы собираетесь закончить жевать, поднесите еду второй рукой ко рту.
  4. Одновременно используйте первую руку, чтобы еще схватить еды.
  5. И процесс продолжается

Следовательно, гиперпоточность или логические процессоры по существу планируют задачи на ядре. Это делает обработку задачи более эффективной. Это не обязательно делает ядро ​​быстрее, оно просто делает его более эффективным. Это, безусловно,  НЕ удваивает количество ядер, которые у вас есть.

Всегда Ли Помогает Гиперпоточность?

Гиперпоточность не может помочь с однопоточными рабочими нагрузками. На самом деле, даже несколько ФИЗИЧЕСКИХ ядер не смогут помочь вам с однопоточными рабочими нагрузками. Например, старые игры печально известны тем, что используют только одно ядро ​​и один поток. Таким образом, гиперпоточность не будет иметь большого значения. Однако новые игры становятся все более и более многопоточными по своей природе.

С другой стороны, Hyper-Threading может творить чудеса с многопоточными рабочими нагрузками, такими как обработка изображений или рендеринг анимации. Если вы профессиональный редактор или дизайнер, то вам абсолютно необходимо использовать как можно больше физических ядер и убедиться, что он поддерживает технологию Hyper-threading, чтобы получить много логических процессоров.

Тактовая частота, тепловыделение и ядра

Компьютер является цифровым устройством. Работает в двоичных единицах и нулях. Эти единицы и нули представлены импульсами электрического напряжения, которые имеют чрезвычайно короткую продолжительность, обычно порядка  1–2 ГГц (гигагерц) или от 1 до 2 миллиардов импульсов в секунду  (может достигать гораздо больших величин). Это также известно как тактовая частота. Чем больше число импульсов в секунду, тем больше тактовая частота и тем быстрее обработка. Другими словами, очень быстрые процессоры имеют высокую тактовую частоту.

Можно подумать, что для того, чтобы продолжать увеличивать скорость компьютеров, вы просто продолжаете увеличивать тактовую частоту, но это не так после определенного предела. Напомним, что один мощный процессор может выделять много тепла. Следовательно, ЦП разделен на ядра. Каждое ядро ​​имеет свою тактовую частоту. Итак, если вы видите четырехъядерный процессор с тактовой частотой 3,0 ГГц. В основном это означает, что  КАЖДОЕ ЯДРО ЦП имеет тактовую частоту 3,0 ГГц.

Хотя одна статья не может полностью раскрыть эту очень сложную концепцию, я рекомендуем вам читать дальнейшие статьи. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *