Что такое гиперпоточность?
Маха Хеанг 245789 / Shutterstock.com
Гиперпоточность когда-то была функцией, которую можно было найти только в профессиональных процессорах высокого класса. Однако теперь Hyperthreading встречается и на массовых потребительских процессорах. Так что же такое Hyperthreading и стоит ли искать его в своем следующем процессоре?
Что такое программная тема?
Программный поток – это последовательность инструкций, которые обрабатываются центральным процессором. Это основная единица запрограммированных инструкций, которыми управляет планировщик. Планировщик – это компонент операционной системы, который распределяет аппаратные ресурсы для различных типов программного обеспечения, выполняемого на компьютере.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Каждое приложение, работающее на вашем компьютере, существует как один или несколько процессов. По сути, потоки представляют собой сегменты этих процессов, отправляемых в ЦП для выполнения. Планировщик быстро назначает потоки из разных запущенных программ, чтобы гарантировать, что каждая из них получит ресурсы, необходимые для работы в режиме реального времени.
Таким образом ваш компьютер может «работать в многозадачном режиме» и (например) запускать текстовый процессор, одновременно воспроизводя музыку и загружая видеоигры в фоновом режиме. Технически ядро ЦП фактически не выполняет все эти задачи одновременно.
Итак, если ваша система имеет только одноядерный процессор, она быстро манипулирует несколькими наборами инструкций, переключаясь между ними так быстро, что нашему медленному человеческому мозгу кажется, что все это происходит параллельно.
Истинная параллельная обработка на домашних компьютерах
На протяжении большей части истории персональных компьютеров на вашем компьютере было только одно ядро ЦП. Что ж, тогда мы не говорили о «ядрах», так как было только одно, и это был весь ЦП. Однако в середине 2000-х у производителей ЦП возникла яркая идея объединить два полных ЦП в один корпус ЦП. Эти двухъядерные процессоры могут одновременно обрабатывать два потока инструкций. Это означало, что, например, ваша видеоигра может иметь 100% ядра, а ваша операционная система может иметь все другое ядро для себя.
Сегодня количество ядер ЦП стремительно растет. Обычны центральные процессоры с 6, 8 и даже 10 ядрами. Высокопроизводительные процессоры предлагают десятки ядер, а такие процессоры, как AMD Threadripper 3990X, наполнены колоссальными 64 ядрами.
Разработка программного обеспечения также изменилась, чтобы лучше использовать всю эту параллельную мощность ЦП. Последние игровые приставки также оснащены восемью ядрами ЦП, поэтому видеоигры, которые могут использовать такое количество ядер, быстро становятся обычным явлением.
Перегрузка ядер ЦП с помощью Hyperthreading
Традиционный ЦП может обрабатывать только один поток, но если в вашей системе много разных ядер ЦП, вы можете обрабатывать количество потоков, равное количеству ядер, которые у вас есть. Это кажется прекрасным, но представляет собой одну серьезную проблему.
Не всем потокам требуется одинаковая вычислительная мощность. Например, поток, который отображает видео, будет использовать 100% доступной мощности ядра ЦП, но потоку, который запускает ваш текстовый процессор или веб-страницу в социальных сетях, требуется лишь часть мощности, предлагаемой современным ядром ЦП.
Точно так же в видеоигре может быть несколько потоков, которые работают параллельно, например, один обрабатывает физику, а другой – искусственный интеллект персонажей. Это важные задачи, но для нормальной работы может не потребоваться все одно ядро.
Это приводит к ситуации, когда все ядра вашего процессора могут быть заняты потоками, но не дают вам всей вычислительной мощности, на которую они способны. Вот где на сцену выходит гиперпоточность.
Правильное общее название для гиперпоточности – одновременная многопоточность. «Hyperthreading» – это собственное маркетинговое название, используемое Intel, но, как и «Hoover», оно стало общепринятым термином для технологии в целом.
ЦП, оснащенный правильной внутренней схемой для обеспечения гиперпоточности, может одновременно выполнять два отдельных потока. Это не переключение между ними, как при традиционной одноядерной многозадачности. Каждый из них работает параллельно.
Для операционной системы это выглядит так, как будто каждое физическое ядро ЦП на самом деле состоит из двух ядер, что позволяет планировщику назначать каждому по два потока. Однако общая вычислительная мощность на ядро остается неизменной.
Почему вам нужна гиперпоточность
Как мы упоминали выше, гиперпоточность в основном предназначена для того, чтобы вы не оставляли вычислительную мощность на столе. Разрешение каждому ядру обрабатывать два потока упрощает для вашей операционной системы получение максимальной отдачи от оборудования и позволяет избежать ситуации, когда каждое ядро работает не на полную мощность или не работает на полную мощность.
Раньше гиперпоточность действительно требовалась только для профессионального программного обеспечения, такого как видеоредакторы или инструменты для обработки научных данных. У обычных пользователей едва ли было достаточно запущенных приложений для такого количества потоков. В видеоиграх также потребовалось много времени, чтобы внедрить использование нескольких потоков, но теперь 8-ядерные игровые системы стали массовыми, и количество потоков будет продолжать расти.
Таким образом, новые массовые процессоры теперь имеют гиперпоточность, и это функция, которая должна быть востребована большинством пользователей. Однако, если вы получаете выгодную сделку по более старому процессору, который не имеет гиперпоточности, это еще не так важно, чтобы вы не могли позволить себе отказаться от него.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)