> > > > AMD занимается скрытой оптимизацией производительности через драйвер PCI

AMD занимается скрытой оптимизацией производительности через драйвер PCI

Опубликовано:

amd ryzen teaser 100На выходных исследователь безопасности Алекс Ионеску поработал со своей первой системой Ryzen. С какой именно - неизвестно. В фокусе внимания был драйвер AMD PCI, хотя Алекс не пояснил, с чем связано внимание именно к данному компоненту.

Он обнаружил, что драйвер меняет некоторые значения MSR (Model Specific Register) и передает измененные параметры процессору. Что не совсем обычно, поскольку данные регистры должны выставляться в BIOS и не меняться в дальнейшем (после процесса загрузки). При этом используется интерфейс Ioctl, который не защищен. Если драйвер может выставлять собственные значения, то модификация через команду Powershell может привести к полному краху системы. Что само по себе вызывает беспокойство.

Но это еще не все, поскольку AMD использует данную функцию драйвера PCI для применения патчей. Через анализ значений хэша можно определить, какое именно приложение запускается. Речь идет о 19 играх. Для них кэш микроопераций первого поколения Zen (Ryzen 1000) включается (если быть более точным, Instruction Cache Configuration Register (IC_CFG)), но он остается выключенным для всех остальных игр. Для процессоров на основе архитектуры Zen 2 (Ryzen 3000) некоторые функции кэша L2 и L1 активируются, но во всех остальных приложениях они остаются выключенными.

Пока найдены следующие приложения:

  • Factorio
  • Destiny 2
  • H1Z1
  • Jurassic World Evolution
  • Rainbow Six
  • Fallout 76
  • League of Legend
  • Battlefield V
  • Warframe
  • Apex Legends
  • DOOM Eternal
  • Call of Duty: Modern Warfare
  • Overwatch
  • Anthem

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

Сложно сказать, какое влияние на производительность оказывает подобная функция. Здесь следует провести тесты с процессорами Zen 1 и Zen 2, после чего сбросить упомянутые изменения, обусловленные драйвером PCI. Более интересно то, что AMD включает функции, которые считаются проблемными, поэтому производителям BIOS рекомендуется их выключать - если верить Алексу Ионеску. Подобный подход может потенциально привести к нестабильности систем Ryzen. Однако вылеты из-за активации упомянутых функций пока не подтверждены.

Кроме того, MSR в случае современных процессоров Ryzen 5000 на ядрах Zen 3 не меняется. В драйверах видеокарт подобные оптимизации встречаются уже давно, поскольку производители добавляют их в зависимости от запускаемых игр. Однако реализация в подобной форме через драйвер PCI для процессоров ранее не была известна.

Интересно, как отреагирует AMD. Как нам кажется, AMD следует более прозрачно разъяснять модификацию MSR. С другой стороны, оптимизации под определенные приложения встречались и ранее, причем это было верно как для процессоров, так и для видеокарт.

Подписывайтесь на группы Hardwareluxx ВКонтакте и Facebook, а также на наш канал в Telegram (@hardwareluxxrussia).