Почему 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-игры». Сам факт старта ещё не говорит о ровном времени кадра, стабильности или поведении в сложной сцене.
Перед выводом о конкретном устройстве стоит искать условия проверки: версия игры и эмулятора, драйвер, настройки, участок прохождения. Это наш практический ориентир, не список обязательных требований FEX.
А разработчику мода или собственного проекта важно отделять перенос исходников от запуска готового бинарника. В первом случае есть возможность менять программу под платформу. Во втором инструменту совместимости приходится работать с тем, что уже выпущено.
В обсуждении на Hacker News читатели спорят, в частности, о переходе на промежуточный код и о том, какие проблемы уже решены аппаратно. Такие идеи не отменяют существующую библиотеку игр. Не каждый старый проект получит новый порт.
Если хочется разобраться в техническом тексте глубже
Модель можно использовать как помощника при чтении открытой документации: попросить объяснить термин, отделить измерение от вывода и перечислить условия теста. Но ответ нужно сверять с первоисточником; уверенное объяснение не заменяет профилировщик.
provod.ai — обновляйте AI-стек, не переписывая продукт
Зарегистрируйтесь в Provod и сравните, как доступные модели объясняют один небольшой фрагмент документации. Модели и стоимость — в актуальном каталоге. Provod предоставляет доступ к моделям, а не запускает FEX и не ускоряет игры.
А какая игра у вас запускалась через слой совместимости, но оставалась неиграбельной — и удалось ли найти конкретную причину?