Энергоэффективность через WFE
Главное нововведение релиза FEX 2608 — реализация циклов ожидания (spinloops) с использованием инструкции WFE (Wait For Event) на архитектуре ARM. Это позволяет ядрам процессора ARM переходить в состояние пониженного энергопотребления во время ожидания атомарных операций, вместо того чтобы активно опрашивать состояние.
По словам разработчиков, этот подход позволяет сэкономить ватты мощности в приложениях, использующих Wine. Это критически важно для портативных устройств и ноутбуков на базе ARM, где время автономной работы является ключевым фактором.
Улучшения JIT и поддержка SVE
Помимо оптимизации энергопотребления, команда Valve внесла значительные улучшения в Just-In-Time (JIT) компилятор:
- Расширенная поддержка SVE: Улучшена работа с 256-битными регистрами Scalable Vector Extension (SVE), что повышает производительность в задачах, требующих векторных вычислений.
- Исправление критических ошибок: Устранены возможные падения (crashes) в JIT-компиляторе и исправлена логика сохранения/восстановления состояния сигналов AVX.
- Безопасность памяти: Исправлена проблема с возможным перезаписыванием регионов памяти в модуле отслеживания аллокаций, что повышает стабильность работы.
Значение для Steam Play (Proton)
FEX остается ключевым инструментом для запуска x86_64 бинарных файлов, включая игры через Steam Play (Proton), на устройствах с ARM64. Обновление 2608 фокусируется на стабильности и эффективности, что напрямую влияет на пользовательский опыт в играх и рабочих приложениях.
| Компонент | Изменения в FEX 2608 | Влияние |
|---|---|---|
| Spinloops (Wine) | Использование инструкции WFE | Снижение энергопотребления (Watts) |
| JIT Compiler | Улучшение поддержки 256-bit SVE | Повышение производительности векторных операций |
| Memory Allocation | Фикс перезаписи регионов памяти | Повышение стабильности системы |
| AVX State | Исправление сохранения/восстановления | Корректная работа с инструкциями AVX |
Обновление доступно для загрузки на FEX-Emu.com и в репозитории GitHub.
Источник: Phoronix ↗
