Valve Steam Arm Fex игры производительность pcworld.com

Valve рассказала PCWorld о своих планах по устранению неприятного побочного эффекта при переносе игр для Windows на чипы Arm, еще до того, как вы нажмете кнопку «Играть».

Мощный игровой ПК может тормозить. А теперь представьте, что ваш процессор должен переводить инструкции игры во время игры.

Это одна из проблем, с которой Valve сталкивается в своих увлекательных усилиях по переносу игр для Windows на чипы Arm. И у компании есть умный план, чтобы решить эту проблему еще до того, как вы нажмете «Играть».

«Кэширование кода FEX жизненно важно для стабильности времени кадра», — заявил в интервью PCWorld инженер-программист Valve Пьер-Лу Грифе. «В будущем оно также будет интегрировано с функцией предварительного кэширования Steam, чтобы кэшированный код был доступен еще до первого локального запуска приложения».

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

Перевод игр без задержек

FEX — это важнейшая часть амбициозных усилий Valve по освобождению Steam от традиционных игровых ПК. Большинство игр для Windows созданы для процессоров x86 от AMD и Intel. Чипы Arm используют другой язык инструкций, поэтому FEX переводит код x86 в инструкции Arm во время работы игр.

К счастью, FEX не приходится переводить все.

«При наличии соответствующей среды выполнения ARM, например, при интеграции с Proton ARM, FEX переводит только код ЦП приложения», — пояснил Грифе.

Proton, слой совместимости Windows от Valve, может переключаться на нативное выполнение ARM на границе Win32 API. Операционная система и графические драйверы также работают нативно, оставляя FEX сосредоточиться на собственных инструкциях ЦП игры.

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

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

В сентябре разработчики FEX представили постоянный кэш JIT на диске, который сохраняет переведенный код между сеансами. Впоследствии Valve включила эту функцию в Proton Experimental для Arm, причем Грифе отметил потенциальное улучшение 1% низких частот кадров, особенно при повторных запусках.

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

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

Пока нет объявленного графика или опубликованных данных о производительности для этой интеграции. Но избежание задержек, связанных с переводом, без необходимости более быстрого процессора? Это то, что геймеры на ПК могут поддержать.

Индустрия ПК страдает от проблемы заиканий

Valve — не единственная компания, пытающаяся перенести дорогостоящую работу по компиляции из середины игрового процесса.

В октябре я писал о том, как Microsoft и Nvidia борются с заиканием шейдеров с помощью Advanced Shader Delivery. Поддерживаемые игры могут получать шейдеры, скомпилированные для их конкретной аппаратной конфигурации, вместо локальной компиляции всего. Intel также работает над службой распространения графических шейдеров для уменьшения задержек, связанных с компиляцией.

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

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

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

Многообещающе, но не волшебство

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

Обновление FEX от октября устранило несколько из этих проблем, добавив настраиваемый лимит кэша по умолчанию 1 ГБ, очистку устаревших кэшей после обновлений FEX и необязательный буфер памяти для часто используемого кода.

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

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

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

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

Черт возьми, Valve сейчас занимается чем-то захватывающим!

undefined

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