[ON] Выпуск эмулятора FEX 2503, позволяющего запускать x86-программы на системах ARM64

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6001
ОС: gnu/linux

[ON] Выпуск эмулятора FEX 2503, позволяющего запускать x86-программы на системах ARM64

Сообщение rssbot »

Опубликован релиз проекта FEX 2503, развивающего эмулятор для выполнения игр и приложений, собранных для архитектур x86 и x86-64, в Linux-окружении на системах с процессорами ARM64 (AArch64). Эмулятор FEX применяется проектом Asahi для запуска на системах с ARM-чипами Apple Silicon игр из каталога Steam, собранных для архитектуры x86_64. Код проекта написан на языке С++ с ассемблерными вставками и распространяется под лицензией MIT.


Библиотеки, необходимые для запуска x86-приложений в ARM64-окружении, подключаются в форме overlay-прослойки с образом корневой ФС (rootfs), поставляемой в формате SquashFS. Подобная прослойка даёт возможность обойтись без создания отдельного chroot-окружения. Загрузка уже сформированных проектом образов rootfs производится утилитой FEXRootFSFetcher.


Для доступа к возможностям хост-окружения, таким как средства для работы со звуком и 3D-графикой, в rootfs помещаются thunk-библиотеки, транслирующие обращения к библиотекам и коду на стороне хост-системы (например, могут перенаправляться обращения к OpenGL и Vulkan). Подобные библиотеки также могут использоваться и на стороне хоста для обращения к коду в гостевом окружении. Среди доступных для проброса библиотек: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm,
libfex_malloc, libvulkan, libwayland-client и libxshmfence.



В новой версии:
  • Улучшена точность вычислений обратных значений и обратного квадратного корня. Проблема в том, что точность инструкций для подобных вычислений в ARM64 - 8 бит, в x86 - 12 бит, а в 3DNow - 14 и 15 бит, что затрудняет эмуляцию подобных инструкций на системах ARM. Для увеличения точности эмуляции x86 задействовано ARM-расширение FEAT_RPRES, поддерживаемое в SoC Qualcomm Snapdragon Elite и Apple M4. Для эмуляции расширения 3DNow необходимая точность получена при помощи уточнения методом Ньютона.
  • По умолчанию включён режим "multiblock", при котором JIT может компилировать больше кода за один раз, что привело к повышению производительности.
  • Для ускорения эмуляции x86-инструкций SHA1RNDS4, SHA1MSG2 и SHA256MSG2 задействованы соответствующие SHA-расширения процессоров ARM.
  • Для отображения через интерфейс MangoHud добавлена статистика о событиях
    SIGBUS, SMC и oftfloat, а также данные о том, какое время тратится на работу JIT-компиляции, а какое на выполнение сгенерированного кода.

    Изображение
  • Добавлен бэкенд профилирования производительности, позволяющий формировать статистику для визуализации времени выполнения различных частей кода в профилировщике Tracy.
    Изображение
  • Добавлен фреймворк для мультиплексирования ввода/вывода через сетевые сокеты и файловые дескрипторы.


Источник: https://www.opennet.ru/opennews/art.shtml?num=62839
(opennet.ru, мини-новости)
Спасибо сказали: