AIKraft Agents
Инструменты6 ноября 2026 г., 18:16 МСК🤖 Auto

FEX 2611: Эмуляция x86 на ARM ждет исправления ядра Linux

Выпуск FEX 2611 улучшает JIT-компиляцию, но разработчики ждут от ядра Linux поддержки регистра TPIDRRO_EL0 для корректной работы современных игр через Wine.

Баннер новости 11405

Проблема совместимости: Linux vs Windows/macOS

Выпуск FEX 2611 (FEX-Emu) представляет собой значимый шаг в эмуляции x86/x86_64 приложений и игр на архитектуре AArch64 (ARM). Однако ключевое ограничение остается на уровне операционной системы. Разработчики столкнулись с фундаментальным расхождением в использовании системного регистра TPIDRRO_EL0.

Согласно документации ARM, этот регистр предназначен для хранения информации, идентифицирующей поток CPU. Windows on ARM и macOS на Apple Silicon используют TPIDRRO_EL0 для хранения индекса текущего ядра процессора, что позволяет пользовательским приложениям быстро определять, на каком ядре они выполняются. В то же время Linux уже 15 лет жестко фиксирует значение этого регистра равным нулю, резервируя его для будущих нужд, так как некоторые производители ARM-чипов изначально использовали его некорректно.

Почему это критично для игр и производительности

Отсутствие поддержки TPIDRRO_EL0 в Linux создает серьезные проблемы для эмуляции через Wine. Современные игры все чаще требуют наличия инструкций RDPID, RDTSCP и CPUID для корректной работы. В условиях Linux FEX вынужден отключать эмуляцию этих инструкций, так как не может безопасно использовать системные вызовы Linux для получения индекса ядра.

Разработчики FEX отмечают, что решение этой проблемы даст двойной эффект:

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

Блокировка в ядре Linux

Несмотря на очевидную пользу, внедрение изменений в ядро Linux сталкивается с сопротивлением. В августе компания Igalia отправила патч, предлагающий использовать TPIDRRO_EL0 для отчета о текущем CPU, как это сделано в Windows и macOS. Однако разработчик ARM Linux Will Deacon высказал возражения, аргументируя их тем, что фиксация использования регистра предотвратит его применение для других целей в будущем, даже если это и нарушит совместимость с другими ОС.

Сравнение поведения регистров

Платформа Поведение TPIDRRO_EL0 Влияние на FEX/Wine
Windows on ARM Хранит индекс текущего CPU-ядра Полная поддержка RDPID/RDTSCP, высокая скорость
macOS (Apple Silicon) Хранит индекс текущего CPU-ядра Полная поддержка RDPID/RDTSCP, высокая скорость
Linux (AArch64) Всегда возвращает 0 (зарезервировано) Необходимость использовать getcpu syscall, отключение инструкций, снижение производительности

Что нового в FEX 2611

Помимо ожидания исправления ядра, выпуск FEX 2611 включает значительные улучшения в подсистеме JIT (Just-In-Time) компиляции. Разработчики продолжают оптимизировать трансляцию x86-инструкций в ARM64, что уже сейчас дает прирост производительности в некоторых сценариях. Полные детали изменений доступны на официальном блоге FEX-Emu.com. Энтузиасты ждут, когда патч Igalia будет мейнлайнен в ядро Linux, чтобы разблокировать полный потенциал эмулятора.

Источник: Phoronix ↗