Разработчик свободного эмулятора PlayStation 3 RPCS3 под псевдонимом Whatcookie подвёл итоги шести месяцев оптимизации версии для ARM64. Заявленные в заголовке доклада 60% относятся к совокупному эффекту нескольких изменений и не означают одинаковый прирост во всех играх. Например, на устройстве со Snapdragon 8 Gen 2 производительность Metal Gear Rising после одного из исправлений выросла с 27 до 37 кадров в секунду, то есть примерно на 37%.
RPCS3 написан преимущественно на C++ и распространяется под лицензией GPL-2.0. Whatcookie занимается в проекте производительностью LLVM-рекомпиляторов процессора Cell и переносом критических участков кода на ARM64.
Один из наиболее заметных приростов обеспечило исправление функции активного ожидания busy_wait. Старый код был рассчитан на характеристики таймеров x86, из-за чего ARM-процессор тратил лишнее время в циклах ожидания. После переработки этой логики ускорение получили почти все игры, использующие соответствующий путь выполнения.
Другая оптимизация коснулась инструкции yield, которая на большинстве ARM-систем без SMT практически не давала эффекта. Её заменили на ISB, что в тесте снизило энергопотребление активного ожидания с 3,67 до 3,31 Вт. Для портативных устройств это означает меньший нагрев и более продолжительную работу от аккумулятора.
Значительная часть изменений внесена в LLVM-рекомпилятор сопроцессоров SPU. Для ARM задействованы инструкции UDOT, SDOT, SVE2, I8MM, TBL и USHL, а также переработаны операции перестановки, сравнения и проверки данных. В отдельных микротестах новый код оказался на 22% быстрее, а некоторые операции ускорились на 21–38% в зависимости от типа ядра Snapdragon 8 Gen 2.
С начала 2026 года Whatcookie направил в RPCS3 более двадцати изменений для ARM64. Они включают использование нативных ARM-инструкций вместо эмуляции операций x86, определение возможностей процессора, оптимизацию SPU и более эффективное ожидание работы графического процессора RSX. Цель разработчика — добиться приемлемой производительности RPCS3 на недорогих портативных ARM-устройствах с Linux.
>>> Источник
