Hyper Threading или сверехпоточность для процессора

Как Hyper Threading влияет на производительность компьютера

Если вы внимательно просматривали содержимое BIOS Setup, то вы вполне могли заметить там опцию CPU Hyper Threading Technology. И возможно, задавались вопросом, что же такое Hyper Threading(Сверехпоточность или гиперпоточность, официальное название — Hyper Threading Technology, HTT), и для чего нужна данная опция.

Hyper Threading – это сравнительно новая технология, разработанная компанией Intel для процессоров архитектуры Pentium. Как показала практика, использование технологии Hyper Threading позволило во многих случаях увеличить производительность CPU приблизительно на 20-30%.

Зачем разработчикам процессоров потребовалась технология

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

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

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

История разработки

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

Поддержка технологии Hyper Threading впервые появилась в процессорах в 2002 году. Это были процессоры семейства Pentium 4 и серверные процессоры Xeon с тактовой частотой выше 2 ГГц. Первоначально технология носила кодовое название Jackson, но потом ее название сменилось на более понятное для широкой публики Hyper Threading – что можно перевести примерно как «сверхпоточность».

При этом, по утверждению Intel, поверхность кристалла процессора, поддерживающего Hyper Threading, увеличилась по сравнению с предшествующей моделью, ее не поддерживающей, всего на 5% при увеличении производительности в среднем на 20%.

Несмотря на то, что технология в целом хорошо себя зарекомендовала, тем не менее, по ряду причин корпорация Intel решила отключить технологию Hyper Threading в сменивших Pentium 4 процессорах семейства Core 2. Hyper Threading, однако, позже снова появилась в процессорах архитектур Sandy Bridge, Ivy Bridge и Haswell, будучи в них существенно переработанной.

Суть технологии

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

Несмотря на все успехи, которые были достигнуты процессорами, у них есть один существенный недостаток – они могут исполнять лишь одну инструкцию одновременно. Допустим, что вы запустили одновременно такие приложения, как текстовый редактор, браузер и Skype. С точки зрения пользователя, это программное окружение можно назвать многозадачным, однако, с точки зрения процессора это далеко не так. Ядро процессора будет выполнять по-прежнему одну инструкцию за определенный промежуток времени. При этом в задачу процессора входит распределение ресурсов процессорного времени между отдельными приложениями. Поскольку это последовательное выполнение инструкций происходит чрезвычайно быстро, вы этого не замечаете. И вам кажется, что никакой задержки не существует.

Но задержка все-таки есть. Задержка появляется из-за способа снабжения процессора данными каждой из программ. Каждый поток данных должен поступать в определенное время и обрабатываться процессором индивидуально. Технология Hyper Threading делает возможным каждому ядру процессора планировать обработку данных и распределять ресурсы одновременно для двух потоков.

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

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

Стоит вам включить компьютер с двуядерным процессором, поддерживающим Hyper Threading и открыть Windows Task Manager (Диспетчер задач) на вкладке Performance (Быстродействие), как вы обнаружите в нем четыре графика. Но это отнюдь не означает, что на самом деле у вас 4 ядра процессора.

Это происходит потому, что Windows считает, что у каждого ядра есть по два логических процессора. Термин «логический процессор» звучит забавно, но он означает процессор, которого физически не существует. Windows может посылать потоки данных к каждому логическому процессору, но на самом деле выполняет работу только одно ядро. Поэтому одно ядро с технологией Hyper Threading существенно отличается от раздельных физических ядер.

Для работы технологии Hyper Threading требуется ее поддержка со стороны следующих аппаратных и программных средств:

  • Процессор
  • Чипсет материнской платы
  • BIOS
  • Операционная система

Преимущества технологии

Теперь рассмотрим следующий вопрос – насколько все же технология Hyper Threading увеличивает производительность компьютера? В повседневных задачах, таких, как Интернет-серфинг и набор текстов, преимущества технологии не столь очевидны. Однако следует иметь в виду, что сегодняшние процессоры настолько мощны, что повседневные задачи редко загружают процессор полностью. Кроме того, многое зависит еще и от того, как написано программное обеспечение. У вас может быть запущено сразу несколько программ, однако, посмотрев на график загрузки, вы увидите, что используется только один логический процессор на ядро. Это происходит потому, что программное обеспечение не поддерживает распределение процессов между ядрами.

Однако в более сложных задачах Hyper Threading может быть более полезной. Такие приложения, как программы для трехмерного моделирования, трехмерные игры, программы кодирования/декодирования музыки или видео и многие научные приложения написаны таким образом, чтобы максимально использовать многопоточность. Поэтому вы можете ощутить преимущества быстродействия компьютера с функцией Hyper Threading, играя в сложные игры, слушая музыку или просматривая фильмы. Повышение производительности может при этом достигать 30%, хотя могут случаться и такие ситуации, когда Hyper Threading не дает преимущества вовсе. Иногда, в том случае, если оба потока загружают все исполнительные устройства процессора одинаковыми заданиями, может даже наблюдаться и некоторое снижение производительности.

Возвращаясь к наличию в BIOS Setup соответствующей опции, позволяющей установить параметры Hyper Threading, то в большинстве случаев рекомендуется включить данную функцию. Впрочем, вы всегда сможете ее отключить, если окажется, что компьютер работает с ошибками или даже имеет меньшую производительность, чем вы ожидали.

Заключение

Поскольку максимальное повышение производительности при использовании Hyper Threading составляет 30%, то нельзя сказать, что технология эквивалентна удвоению количества ядер процессора. Тем не менее, Hyper Threading – это полезная опция, и вам, как владельцу компьютера, она не помешает. Ее преимущество особо заметно, например, в таких случаях, когда вы редактируете мультимедиа-файлы или используете компьютер в качестве рабочей станции для таких профессиональных программ, как Photoshop или Maya.

Как себя чувствует Intel без Hyper-Threading?

Как стало недавно известно, были обнаружены четыре новых аппаратных уязвимости, затрагивающие процессоры Intel. Эти новые «дыры» позволяют злоумышленникам получить доступ к данным пользователя, используя уязвимости стороннего канала – MDS (Microarchitectural Data Sampling), наиболее серьёзной из которых является, наверное, «ZombieLoad».

В отличие от предыдущих ошибок, основанных на спекулятивном исполнении команд, частично затронувших AMD и Arm-процессоры, ошибки MDS относятся исключительно к чипам Intel. Свести риск от этих уязвимостей можно не дожидаясь патчей и обновлений, отключив одновременную многопоточность (SMT), она же – «Hyper-Threading» у Intel.

В настоящее время Microsoft готовит обновление Windows 10 1903, которое призвано устранить четыре уязвимости MDS. Но полностью это проблему не решает, нужны также обновления в BIOS и, как сообщается, Intel уже выпустила новый микрокод для партнеров-производителей материнских плат. Однако на момент написания этой статьи не было выпущено ни одной новой версии BIOS. Мы решили протестировать худший вариант сценария, отключив Hyper-Threading. Это может оказаться единственным решением для старых компьютеров, поскольку вряд ли производители выпустят патчи для всех моделей.

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

Для теста мы выбрали процессоры Core i7-8700K и 7700K, протестировав их работу в ряде игр и приложений при включенной и отключенной функции Hyper-Threading. Восьмиядерный i9-9900K мы не стали брать, поскольку в нем недостающие потоки не приведут к потере производительности в играх, хотя в приложениях всё-таки соответствующее негативное влияние будет заметно в той же степени, как у 8700K и 7700K.

Если бы у нас было больше времени (мы сейчас готовимся к Computex 2019, так что следите за нашими обновлениями), мы бы хотели также протестировать некоторые двухъядерные процессоры Intel с поддержкой Hyper-Threading, поскольку в них влияние этой функции, несомненно, будет наиболее значительным. Хотя, можно обойтись результатами наших предыдущих тестов этой технологии.

Все тесты выполнялись на компьютере, оснащенном 32 ГБ памяти DDR4-3200, видеокартой GeForce RTX 2080 Ti (чтобы предотвратить боттлнеки на GPU) и Windows 10 build 1903. Игровые тесты проводились как в разрешении 1080p, так и в 1440p, но начнём мы с тестов приложений.

Тесты приложений

Прежде всего, мы получили результаты Cinebench R20 и, глядя на Core i7-8700K, видим снижение производительности на 24% при отключенной Hyper-Threading. Разумеется, такое снижение производительности не останется незамеченным. Более того, мы тем самым фактически превратили 8700K в 7700K по части производительности.

Между тем 7700K становится на 26% медленнее с отключенной Hyper-Threading, и теперь у нас есть старый четырехъядерник или Core i5 поколения Kaby Lake. Для приложений, которые активно используют все ядра, отключение SMT/Hyper-Threading сильно влияет на производительность.

WinRAR ощущает значительную потерю производительности – на 36% у 8700K. Очевидно, что Hyper-Threading отлично себя показывает в этом типе рабочей нагрузки. Столь же сильное падение мы видим и у 7700K – 39%.

Corona – высокопроизводительный рендер, и здесь 8700K показал снижение производительности на 31% при отключении Hyper-Threading, в то время как у 7700K – 33%. В обоих случаях снижение производительности велико, и это позволит нам оценить работу устраняющих уязвимость обновлений, при выполнении задач рендеринга и кодирования.

Blender также испытывает серьёзную потерю производительности при отключении Hyper-Threading, хоть и несколько меньше, чем Corona – на 25% для 8700K, т.е. примерно как Cinebench R20. Из-за меньшего количества ядер, 7700K страдает несколько больше, и здесь мы видим снижение производительности на 29%.

Потребляемая мощность

Прежде чем перейти к играм, мы бы хотели отметить общее энергопотребление системы. Да, мы не видим потребление отдельно процессоров, поэтому трудно что-то говорить об эффективности, но, как вы можете видеть, отключение Hyper-Threading на 8700K не приводит к весомой экономии энергии, уменьшая общее энергопотребление системы лишь на

5%. В то же время отключение Hyper-Threading на 7700K приводит уже к 11% экономии энергии, и мы это связываем с тем, что четырёхядерный 7700K использует данную функцию более активно, чем шестиядерный 8700K.

Тестирование в играх

Начнём с результатов Assassin’s Creed: Odyssey на разрешении 1080p. На 8700K значение средней частоты кадров сократилось лишь на 13%, а минимальной (1%) – не изменилось. С другой стороны, 7700K показал значительное падение как средней частоты кадров, так и 1%-минимальной – 23% и 21% соответственно. Владельцы четырёхъядерных процессоров гораздо сильнее ощутят снижение производительности при отключении Hyper-Threading.

А теперь мы видим, что если на 1440p приоритет управления у вас берет на себя видеокарта, 8700K отлично справляется с отключенной функцией Hyper-Threading, как раз благодаря RTX 2080 Ti. Для четырехъядерных и, не дай бог, двухъядерных процессоров, любое ограничение Hyper-Threading приведет к потере производительности.

Battlefield V – весьма требовательная к ресурсам процессора игра, правда нам удалось протестировать только однопользовательский режим, да и то потребовалось два аккаунта Origin из-за системы блокировки аккаунтов при изменении конфигурации. Возвращаясь к теме, мы опять же не видим значительного снижения производительности здесь. Наибольший спад составил 12%, если смотреть на 1%-минимальное значение FPS у 7700K.

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

У Division 2 результаты – жесть. Взгляните, как упала производительность у 7700K при отключении Hyper-Threading. Средняя частота кадров снижается на 37%, а минимальная 1% – на 38%, что близко к результатам, показанным WinRAR.

Да, влияние на производительность 6-ядерного 8700K не столь велико, но даже при этом падение минимального FPS на 13% большинство игроков не оценят. Переходим на 1440p, и теперь 8700K даже с отключенным Hyper-Threading не является фактором ограничения производительности, его теперь берёт на себя RTX 2080 Ti. Однако мы по-прежнему наблюдаем падение производительности на треть у 7700K, глядя на минимальный 1% FPS у него.

Небольшая ремарка. Far Cry New Dawn чувствует себя лучше на 9700K, чем на 8700K. Средняя частота кадров на 9700K достигает

120 при 1080p. Но мы бы хотели заметить, что когда мы отключаем Hyper-Threading у 8700K, он соответствует 9700K в этом тесте, из чего следует, что количество потоков не идёт на пользу этой игре, так что 6 ядер/6 потоков для неё в целом более эффективен, чем 6 ядер/12 потоков. Но подобных игр очень немного.

Как видим, 7700K с меньшим количеством ядер не страдает такой проблемой при включении Hyper-Threading, хотя он всё-ж был чуточку быстрее с отключенным. Так что, это одна из немногих игр, для которых отключение Hyper-Threading вообще не проблема, и на самом деле идёт на пользу. При условии, если у вас не двухядерный процессор, конечно.

Переключаемся на 1440p, и видим, что количество ядер здесь вообще ничего не решает, а Hyper-Threading лишь замедляет оба процессора.

Далее у нас Hitman 2, и здесь мы видим, что отключение Hyper-Threading не оказывает существенного влияния на 8700K, однако для четырехъядерного 7700K оно сокрушительно. Средняя частота кадров снизилась на 18%, но гораздо хуже, что 1%-минимальный FPS упал почти на 30%. Конечно, мы все еще видим стабильные 60+ кадров в секунду, но для тех, кто любит большой FPS, такой удар по производительности является жёстким.

Даже переключение на 1440p не помогло 7700K справиться с этим ударом, так как мы все еще наблюдаем падение минимального FPS более чем на 25%.

Следующей игрой идёт Rage 2, где отключение Hyper-Threading практически не оказывает влияния на 8700K. У 7700K средняя частота кадров также почти не меняется, но зато минимальный 1% FPS падает весьма значительно – на 20%.

Стоит только увеличить разрешение до 1440p в Rage 2, и процессор перестаёт быть компонентом, ограничивающим производительность. По крайней мере, если смотреть на 7700K без Hyper-Threading. Так что в данном случае отключение Hyper-Threading не оказывает влияния на производительность.

Мы с вами уже убеждались ранее, насколько Shadow of the Tomb Raider может быть требовательным, и здесь мы в этом убедимся ещё раз. У 8700K наблюдаем падение среднего FPS на 10-12% при отключении Hyper-Threading, а у 7700K – вдвое большее, на 24%. Однако ухудшение значения минимального 1% FPS для обоих процессоров одинаковое. В любом случае отключение SMT оказывает сильное влияние на эту игру.

Даже при переходе на 1440p негативный эффект значительный, по крайней мере для 7700K. У 8700K все еще наблюдается небольшое снижение производительности, но это ничто по сравнению с 20%-м падением у 7700K.

Ну и напоследок – World War Z, использующая низкоуровневый API Vulkan. Эта игра прекрасно работает с 4 ядрами, поэтому ни один из процессоров не страдает при отключении Hyper-Threading. Нечто подобное мы видим и при разрешении 1440p, поскольку оба процессора способны извлечь максимальную производительность из RTX 2080 Ti.

Резюме

Мы теперь имеем неплохое представление о том, как 4- и 6-ядерные процессоры Intel работают с включенной Hyper-Threading по сравнению с отключенной. Если кратко, то производительность приложений при выполнении основных ресурсоемких операций обычно снижалась от 25 до 35%.

Влияние на производительность в играх может существенно различаться в зависимости от самой игры и других факторов, таких как разрешение, настройки графики и, конечно, установленная видеокарта. В тестируемых нами играх, 6-ядерный процессор Intel демонстрирует в основном минимальное влияние на свою производительность, хотя минимальный 1% FPS иногда заметно страдает, и при игре с высокой частотой обновления падение производительности будет весьма ощутимым.

Владельцы процессоров с топологией 8/16, таких как 9900K, практически не заметят никакого влияния Hyper-Threading во время игр, но падение производительности приложений по-прежнему будет сильным – на 25-35% без SMT. С другой стороны, наиболее существенное снижение производительности испытают на себе менее мощные процессоры, которые в гораздо большей степени полагаются на Hyper-Threading. Даже наш четырехъядерный 7700K зачастую демонстрировал значительную потерю производительности в игровых тестах, и это означает, что для владельцев двухъядерных процессоров с поддержкой SMT отключение Hyper-Threading будет еще более болезненным.

На данный момент трудно с уверенностью сказать, какое влияние на производительность окажут программные средства для смягчения риска от четырёх уязвимостей MDS на компьютерах под управлением Windows, но мы можем ожидать, что будут определенные потери, особенно там, где Hyper-Threading оказывает наибольшее влияние. Phoronix протестировал эти программные средства в Linux, и показатели потери производительности варьируются от незначительных до огромных. Кроме того, Phoronix обнаружил, что системы Intel теперь на

16% медленнее, чем раньше, до установки программного смягчения воздействий Spectre, Meltdown, Foreshadow и Zombieload. В то время как системы AMD показали снижение производительности всего на 3%. Они также утверждают, что таких мер по уменьшению риска достаточно, чтобы приблизить Core i7-8700K к Ryzen 7 2700X и Core i9-7980XE к Threadripper 2990WX.

Если Intel не вытащит кролика из шляпы и не предоставит действительно эффективных программных решений, таких, чтобы можно было бы не отключать Hyper-Threading, то владельцев двух- и четырехъядерных процессоров Intel с поддержкой Hyper-Threading могут ожидать неутешительные последствия. В списке таких процессоров: Core i3 и Core i5 – от Clarkdale до Kaby Lake; все Core i7 вплоть до Kaby Lake; а также процессоры Kaby Lake и Coffee Lake семейства Pentium.

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

В этой статье мы провели интересное исследование того, где функция Hyper-Threading оказывает наибольшее влияние. В ней мы отразили последствия наихудшего сценария, когда SMT приходится полностью исключить, но в свою очередь мы наблюдаем и некоторые движения в направлении не допустить такого сценария. Google отключил Hyper-Threading в Chrome OS, сообщество OpenBSD рекомендует сделать то же самое, в то время как Apple частично пропатчила системы средствами снижения риска проникновения эксплойтов и сообщила, что для полного устранения риска от уязвимостей необходимо отключить Hyper-Threading. Другие производители, такие как Microsoft, еще не заняли определенную позицию.

http://biosgid.ru/bios-osnovy/hyper-threading-sverxpotochnost-ili-giperpotochnost.html
http://i2hard.ru/publications/23379/

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

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