Добавить в корзинуПозвонить
Найти в Дзене
Mizhgunit

Что такое ядра и потоки? Что важнее, и как работает Hyper-Threading?

Если вы когда-то в своей жизни покупали компьютер, то точно натыкались на странные "ядра" и не менее странные "потоки". Их часто используют маркетологи, которые могут называть старые i7 "8-поточными", и на кого-то это даже действует. Однако ядра и потоки - это не одно и то же. Сегодня я расскажу простым языком, что это такое, чем они отличаются, что такое Hyper-Threading, как он работает, и главное - разберемся, что важнее - ядра или потоки. Давайте начинать. Если коротко, то в процессоре есть ядро (которое и занимается обработкой), а также много вспомогательных модулей, вроде кэша, всевозможных контроллеров, и так далее. Ядро это получает бесконечный поток кода, обрабатывает его, а на выходе получается какой-то результат, условно, вы играете в игру - процессор обрабатывает поток данных - вы видите на экране те действия, которые совершаете в игре. Проблема в том, что один поток - он, как бы, один, то есть если возникает еще одна задача - ей нужно как бы "вклиниться" в этот непрерывный
Оглавление

Если вы когда-то в своей жизни покупали компьютер, то точно натыкались на странные "ядра" и не менее странные "потоки". Их часто используют маркетологи, которые могут называть старые i7 "8-поточными", и на кого-то это даже действует.

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

Как процессор обрабатывает информацию?

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

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

Так работали одноядерные процессоры, благо, в Intel придумали, как решить эту проблему.

При помощи мультипоточности

Как следует из названия, мультипоточность (она же SMT, или Hyper-Threading) - это способность одного ядра процессора обрабатывать несколько потоков информации одновременно. Таким образом, параллельные потоки не будут мешать друг другу, и будут просто дожидаться свободного времени ядра. Когда оно появится, ядро тут же переключится на обработку второго потока данных.

-2

Эта система выглядит идеально, но самые шарящие уже заметили проблему - ядро-то все еще одно. Приведу еще одну аналогию: стоит у вас завод, на котором есть один конвейер и один рабочий - это 1 ядро и 1 поток. С Hyper-Threading получается так, что конвейеров стало два, но рабочий все еще один, и на второй конвейер он переключается только если на первом больше нет работы. Его эффективность повысилась, но скорость работы - не особо.

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

Так что прирост производительности от многопоточности сильно разнится в зависимости от программы - от 2-3 до 25% производительности.

То есть ядра важнее?

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

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

Читайте Mizhgunit в Max: https://max.ru/mizhgunit

А что важнее для ваших задач - много ядер без SMT/HT, или многопоточность = сильный прирост производительности?

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