Что такое Hyperthreading (гиперпоточность)


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

Смотрите также:

Что такое программный поток?

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


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

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

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

Настоящая параллельная обработка в домашних компьютерах

На протяжении большей части истории персональных компьютеров ваш компьютер имел только одно ядро процессора. Ну, тогда мы не говорили о «ядрах», так как было только одно, и это был весь процессор. Однако в середине 2000-х у производителей ЦП появилась блестящая идея втиснуть два полных ЦП в один корпус ЦП. Эти двухъядерные процессоры могли фактически обрабатывать два потока инструкций одновременно. Это означало, что, например, ваша видеоигра могла иметь 100% процессорного времени одного ядра, а ваша операционная система могла полностью использовать другое ядро.

Сегодня количество ядер ЦП быстро растёт. Обычны процессоры с 6, 8 и даже 10 ядрами. Высокопроизводительные процессоры предлагают десятки ядер, а такие процессоры, как AMD Threadripper 3990X, содержат целых 64 ядра.

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

Зачем нужен Hyperthreading в многоядерном процессоре

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

Не все потоки требуют одинаковой вычислительной мощности. Например, поток, выполняющий рендеринг видео, будет использовать 100% доступной мощности ядра ЦП, а поток, отвечающий за работу вашего текстового процессора или веб-страницы в социальной сети, нуждается лишь в части мощности, предлагаемой современным ядром ЦП.

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

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

Правильное общее название гиперпоточности — одновременная многопоточность (simultaneous multithreading). На самом деле «Hyperthreading» — это проприетарное маркетинговое название, используемое Intel, но, как и в случае с «Hoover», оно стало общеупотребительным для технологии в целом.


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

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

Зачем вам нужна гиперпоточность

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

В прошлом только профессиональное программное обеспечение, такое как видеоредакторы или задачи по обработке научных данных, действительно нуждались в гиперпоточности. У обычных пользователей едва ли было запущено достаточно приложений, чтобы нуждаться в таком количестве потоков. Видеоиграм также потребовалось много времени, чтобы внедрить использование нескольких потоков, но теперь 8-ядерные игровые системы стали мейнстримом, и количество потоков будет продолжать расти.

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


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

Ваш адрес email не будет опубликован.

wp-puzzle.com logo