Найти тему
Mizhgunit

Что важнее: ядра или потоки?

Оглавление

Всем привет, дорогие друзья. Рад вас видеть! Сегодня поговорим о простом, но непонятном для рядового пользователя явлении - логические ядра процессора, ну или просто - потоки.

Буду писать все максимально просто и понятно. О чем пойдет речь?

  1. Что такое технология мультипоточности и для чего она нужна;
  2. Чем логические ядра отличаются от физических;
  3. Что лучше: 4 ядра и 8 потоков или 6 ядер и 6 потоков?

Давайте разбираться!

Что такое технология мультипоточности и для чего она нужна?

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

Вот самая простая иллюстрация, которую только смог найти
Вот самая простая иллюстрация, которую только смог найти

А теперь чуть сложнее. Во время работы к вычислительным ядрам процессора идет непрерывный поток команд от планировщика операционной системы. Теперь представим, что у нас процессор на 1 ядро и 1 поток и мы работаем в какой-то программе. У нас все хорошо, так как поток команд от этой программы идет на ядро, оно его обрабатывает - все гуд.

Теперь открываем еще одну программу. Планировщик также помещает ее инструкции в очередь, но ядро у нас всего одно. Тогда, в зависимости от приоритета, одна из программ тупо не будет выполняться, так как выполнять ее не на чем - ядро-то одно.

В 2002 году в intel озадачились этой проблемой. Так как процессор на 2 физических ядра был еще не готов, решили изящно выкрутиться из положения: к одному физическому ядру подводить два потока инструкций. Так и получился Hyper-Threading.

Главное отличие физических ядер от логических

Само собой, логическое ядро - это не дополнительный вычислительный блок, а как бы второй путь к одному блоку, так что "производительность на бумаге" он не увеличивает... НО

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

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

Я понимаю, звучит сложно, но дождитесь видео - там будут более подробные иллюстрации. Продолжим.

Даже больше скажу: если одна программа задействует два потока, то в случае какой-то проблемы с первым потоком ядро опять таки переключится на второй поток и продолжит выполнение программы, а не будет ждать, пока решится проблема на первом потоке.

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

Друзья! Минутка от спонсоров. Хочу порекомендовать вам дебетовую карту Tinkoff All Games, на обложке которой может быть ваш игровой никнейм! Из того, что понравится геймерам - кэшбэк 3% на игры, 1,5% на электронику и развлечения, а 1% - вообще на любые покупки. Кроме того, если вы тратите больше 3000 рублей в месяц, вы получите 4% на остаток деньгами, а не баллами.

Добавьте описание
Добавьте описание

Картой Тинькофф банка пользуюсь и я сам, но не потому что мне заплатили, а потому что это действительно удобно! К тому же, если вы оформите карту по моей ссылке, вы получите 500 бонусов, а один бонус - это один рубль! Оформить карту можно по моей ссылке, так вы не только поддержите меня, но и получите действительно классный продукт!

А что лучше - 4/8 или 6/6?

Теперь - простой вопрос. Что лучше взять - процессор на 4 ядра и 8 потоков или на 6 физических ядер, но без мультипоточности. Тут все зависит от того, для чего берется компьютер (имею в виду, для каких задач).

Мы ведь помним, что количество потоков никак не влияет на количество физических ядер, а только повышает эффективность их работы, позволяя одновременно обрабатывать сразу два потока данных. Обычно это дает прирост производительности где-то от 5 до 30%.

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

Еще одна хорошая и наглядная схема работы технологии
Еще одна хорошая и наглядная схема работы технологии

Для примера можно взять i5 9500 и i3 10105F. Они имеют похожую архитектуру, одинаковую буст-частоту и одинаковый поядерный объем L1 и L2 кэшей (64 и 256 кб соответственно). В большинстве задач именно i5 на 6 ядер и 6 потоков окажется быстрее, но всего на 5-10%, а если одновременно нужно выполнять огромную кучу задач - между процессорами установится паритет, так как i3 тупо работает эффективнее.

Кстати, я уже начал делать большой эксперимент по заработку в интернете. Его ход, а также разное другое и прикольное - в моей инсте.

Также подпишись на телеграм (там IT-новости), Ютуб (там иногда выходят прикольные видео), и группу ВК (там пока ничего нет, но это только пока).

Наука
7 млн интересуются