Как известно, недавно в процессорах Intel обнаружены четыре новые аппаратные уязвимости microarchitectural data sampling (MDS), которые допускают утечку конфиденциальных данных по сторонним каналам. Наиболее серьёзная из уязвимостей получила название ZombieLoad.

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

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

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

Тесты проводились на Windows 10 build 1903, с 32 ГБ памяти DDR4-3200 и GeForce RTX 2080 Ti. Игры запускались на 1080p и 1440p. Но сначала — тесты приложений.

Бенчмарки приложений


В бенчмарке Cinebench R20 при отключении многопоточности процессор Core i7-8700K показал снижение производительности на 24%. «С точки зрения производительности мы по сути превращаем 8700K в 7700K, это довольно значительная потеря», — пишет Techspot.

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



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



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



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



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


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



Игровые бенчмарки


В игре Assassin's Creed Odyssey на разрешении 1080p с процессором 8700K средний фреймрейт упал на 13%, однако минимальный FPS практически не изменился. С другой стороны, 7700K с меньшим количеством ядер показал серьёзное падение как средней частоты кадров, так и 1% самых низких FPS. Другими словами, здесь появление лагов наиболее вероятно: падение на 23% средней частоты кадров и на 21% минимального FPS.



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



Хотя Battlefield V очень интенсивно потребляет вычислительные ресурсы, но Techspot смогла протестировать только одиночную версию, где это не так заметно. Тестеры отмечают, что даже для одиночной версии понадобились две учётные записи Origin «благодаря восхитительной блокировке аппаратных изменений». Хорошая новость в том, что здесь большого снижения производительности не произошло, разве что на 12% в минимальном FPS на процессоре 7700K.



Увеличение разрешения до 1440p не изменило ситуацию: здесь тоже снижение производительности во всех тестах, хотя разница невелика.



А вот в игре Division 2 результаты ужасные. На процессоре 7700K с отключенной функцией Hyper-Threading средняя частота кадров снижается на 37%, а минимальная — на 38%, что близко к падению скорости архивирования WinRAR.



Снижение производительности на шестиядерном 8700K не такое значительное, а при разрешении 1440p вообще нет никакой разницы. Однако всё ещё есть падение минимального фреймрейта на 32% в системе на процессоре 7700K.



Бенчмарки Far Cry New Dawn вообще показали удивительный результат. При отключении многопоточнорсти фреймрейт увеличился на обоих процессорах. Специалисты предполагают, что игра оптимизирована для шестиядерного 9700K, где она показывает около 120 FPS в 1080р. Возможно, поэтому 6 ядер/6 потоков тут более эффективны, чем 6 ядер/12 потоков. Однако и четырёхъядерный 7700K в Far Cry New Dawn тоже ускорился при отключении многопоточности. Так что в этой игре даже рекомендуется отключать многопоточность. Вероятно, ускорение будет особенно заметно на двухъядерных процессорах.



При переходе к 1440p количество ядер вообще не влияет. Здесь явно видно, что на самом деле Hyper-Threading замедляет игру и на 7700K, и на 8700K.



В игре Hitman 2 отключение Hyper-Threading не оказывает реального влияния на 8700K, однако на четырёхъядерном 7700K падение серьёзное. Средняя частота кадров снизилась на 18%, а минимальный FPS — почти на 30%. Радует только, что минимальный фреймрейт всё равно всегда выше 60 кадров в секунду.



Четырёхъядерный процессор страдает от отключения многопоточности даже на разрешении 1440p 7700K: снижение минимального фреймрейта на 25%.



Далее была протестирована игра Rage 2: на 8700K результаты совершенно идентичные, а на 7700K средняя частота кадров практически не изменилась, но минимальный FPS упал на заметные 20%.



На разрешении 1440p в Rage 2 процессор перестаёт быть узким местом, так что отключение многопоточности никак не влияет на производительность игры.



Игра Shadow of the Tomb Raider тоже весьма требовательна к CPU, что и сказалось на результатах тестов. На процессоре 8700K зафиксировано падение производительности на 10?12% с отключённой функцией Hyper-Threading, а на 7700K — на 24%, хотя минимальный фреймрейт сравним с 8700K.


Даже на 1440p эффект значителен, по крайней мере, для 7700K.



Последняя протестированная игра — World War Z с Vulkan API. Она отлично работает на четырёх ядрах, поэтому процессор практически не страдают от выключения многопоточности, а на 1440p результаты абсолютно идентичные.





Обобщая результаты, можно сделать вывод, что четырёх- и шестиядерные процессоры Intel с отключением Hyper-Threading на самых тяжёлых приложениях могут потерять до 25?35% производительности.

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

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

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

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

Techspot пишет, что если у вас установлено старое оборудование, которое не выполняет никаких критически важных задач, то может быть лучше вообще не обновлять операционную систему и не устанавливать патчи от Intel. По крайней мере, пока не появились первые рабочие эксплоиты: «Это не наша официальная рекомендация, а альтернативный вариант действий после выхода соответствующих обновлений».

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

Комментарии (15)


  1. dfgwer
    27.05.2019 12:33
    +3

    Последние полгода, просто сплошной праздник для AMD.


    1. equand
      27.05.2019 16:06

      Еще бы и матери не глючили и вообще замечательно было бы.


      1. kzhyg
        27.05.2019 16:18

        Ещё бы драйвера нормальные делали.


  1. nidalee
    27.05.2019 12:57

    И зачем ставить эти патчи на домашний ПК?


    1. duronus
      27.05.2019 13:23

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


      1. nidalee
        27.05.2019 13:42

        Если я правильно помню, то (почти) все браузеры уже дополнительно замедлили работу этих уязвимостей, теперь там безо всяких патчей скорость чтения памяти в районе 1 бита в секунду. Учитывая, что браузеры у нас нынче по половине гигабайта ОЗУ съедают только в путь, даже зная, какую область памяти занимает браузер, прочитать ее всю до закрытия вкладки или браузера, прямо скажем, не реалистично. Если не знать — все 8\16\32ГБ — просто не реально.
        Или я не прав?


        1. duronus
          27.05.2019 14:27

          ну допустим браузеры закрыли, но вы же не только им пользуетесь, так же есть куча дыр 0 дня благодаря которым приползет троян


          1. nidalee
            27.05.2019 19:47

            Для этого всего не нужны ни Meltdown, ни Spectre. ИМХО, их «польза» для хакера только в том, что можно запускаться из виртуалки или вообще ломать сервер, имея на нем VPS.


  1. autuna
    27.05.2019 15:16

    "Microsoft уже выпустила обновления ОС для четырёх уязвимостей MDS, они вышли с обновлением Windows 10 1903, которое накатывается в эти дни. Но патчи не устраняют проблему полностью, для этого нужны обновления BIOS материнской платы. Как сообщается, Intel выпустила новый микрокод для производителей материнских плат. Но пока новые версии BIOS не появились в открытом доступе. "


    Нелогично. Зачем ждать выхода новых версий BIOS, если Windows (10) умеет сама подгружать обновления микрокода в процессоры Intel? (см. например, KB4091664).


  1. Barafu_Albino_Cheetah
    27.05.2019 17:23

    Тестировал сам на кодировании видео ffmpeg-ом. Процессор i7-3770 CPU @ 3.40GHz.
    Если с включённым HT скорость 0.43х, то с выключенным 0.35х


  1. PloadyFree
    28.05.2019 12:02

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


    1. voidMan
      28.05.2019 15:53

      Архитектура за неделю не меняется, дай бог хоть бы через поколение пофиксили…


  1. Simper
    28.05.2019 12:16

    Можно как то из последнего обновления Win 10 1903 исключить эти патчи? Что теперь, нельзя обновить винду без снижения производительности на треть? :(


    1. Taciturn
      28.05.2019 18:42

      Пропишите два ключа, отключающие обход уязвимостей, в реестр, как описано в KB4073119 и не мучайтесь.
      reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f
      reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f


  1. Zman
    28.05.2019 21:31

    Сделали бы отключение многопоточности на усмотрение пользователей или обратимым. А то в macOS при некоторых обновлениях повышается версия EFI без возможности отката.