Почему PC-игра может тормозить на мощном ARM: разработчики FEX объяснили ловушку памяти

Быстрый процессор ещё не гарантирует, что старая PC-игра хорошо заработает через эмулятор. Ему приходится сохранять не только смысл инструкций, но и правила, по которым игра обращается к памяти. Иногда именно здесь производительность обрывается.

Игровые данные проходят через переводчик между двумя разными процессорными платформами

Редакционная иллюстрация, созданная через Provod. Не устройство FEX, не скриншот игры и не результат бенчмарка.

Что разбирает команда FEX?

FEX — эмулятор для запуска x86- и x86-64-приложений на ARM в Linux. В техническом разборе от 17 сентября разработчики объяснили, почему совместимость упирается в модель памяти, невыровненные обращения и обмен данными с GPU.

У разных архитектур различаются гарантии порядка операций. Эмулятор должен воспроизвести ожидания исходной программы. Дополнительные инструкции и обходные пути могут стоить времени, даже когда арифметика сама по себе выполняется быстро.

Особенно неприятный случай связан с некэшируемыми буферами. Авторы сообщают, что из-за этого провала производительности Hollow Knight: Silksong и Subnautica 2 работали у них ниже одного кадра в секунду. Это описанные командой случаи, а не наш запуск и не оценка всех ARM-устройств.

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

Почему нельзя вынести «816 раз» в сравнение FPS?

Потому что это число из теста определённых операций с памятью, а не из сравнения скорости всей игры. В статье FEX разница до 816 раз относится к пропускной способности в конкретном сценарии записи. Она не означает, что любой ARM-процессор в сотни раз медленнее любого x86.

Представьте трассу с быстрыми прямыми и одним узким проездом. Измерить скорость на прямой, пропускную способность проезда и время полного круга — три разные задачи. Это аналогия для чтения графиков, не модель работы конкретного чипа.

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

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

Почему PC-игра может тормозить на мощном ARM: разработчики FEX объяснили ловушку памяти

Что это меняет для игрока?

Список совместимости и тест нужной игры полезнее универсального обещания «теперь запускает PC-игры». Сам факт старта ещё не говорит о ровном времени кадра, стабильности или поведении в сложной сцене.

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

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

В обсуждении на Hacker News читатели спорят, в частности, о переходе на промежуточный код и о том, какие проблемы уже решены аппаратно. Такие идеи не отменяют существующую библиотеку игр. Не каждый старый проект получит новый порт.

Если хочется разобраться в техническом тексте глубже

Модель можно использовать как помощника при чтении открытой документации: попросить объяснить термин, отделить измерение от вывода и перечислить условия теста. Но ответ нужно сверять с первоисточником; уверенное объяснение не заменяет профилировщик.

provod.ai — обновляйте AI-стек, не переписывая продукт

Зарегистрируйтесь в Provod и сравните, как доступные модели объясняют один небольшой фрагмент документации. Модели и стоимость — в актуальном каталоге. Provod предоставляет доступ к моделям, а не запускает FEX и не ускоряет игры.

А какая игра у вас запускалась через слой совместимости, но оставалась неиграбельной — и удалось ли найти конкретную причину?

3