RPCS3 ускорил перекомпиляцию PPU и SPU в Windows: на Ryzen 9 9950X3D пропускная способность выросла примерно на 48%
Разработчики эмулятора PlayStation 3 RPCS3 сменили механизм выделения памяти в Windows на SegmentHeap. На Gran Turismo 6 с Ryzen 9 9950X3D перекомпиляция PPU и SPU стала занимать 1 минуту 55 секунд вместо 2 минут 50 секунд.

В этой истории
Что изменили в RPCS3
В RPCS3 появилась очередная оптимизация, на сей раз связанная с тем, как эмулятор PlayStation 3 управляет памятью в Windows. Разработчик Megamouse выяснил: если заменить прежний механизм Windows NT heap на более современный SegmentHeap, производительность растёт в тех случаях, когда RPCS3 задействует много потоков процессора.
По данным команды, благодаря этому быстрее проходит перекомпиляция PPU и SPU. Это процесс, сильно нагружающий CPU: код PlayStation 3 превращается в инструкции, которые понимают современные процессоры.
Результаты замеров
Показать эффект решили на Gran Turismo 6, используя процессор AMD Ryzen 9 9950X3D. Прежде перекомпиляция PPU/SPU занимала 2 минуты 50 секунд, а после перехода на SegmentHeap та же операция уложилась в 1 минуту 55 секунд.
Время ожидания, таким образом, уменьшилось примерно на 32%, а пропускная способность перекомпиляции увеличилась примерно на 48%. Именно вторую цифру RPCS3 привела в своём сообщении об оптимизации.
SegmentHeap — это механизм распределения памяти в Windows, который снижает накладные расходы при многопоточных нагрузках. Выгоду от изменения могут получить и другие процессоры, но прирост в 48% команда пока показала только на Ryzen 9 9950X3D.
Это не прирост FPS
Ускорение перекомпиляции не равно росту частоты кадров. PPU/SPU-рекомпиляция переводит код PlayStation 3 в инструкции для современных процессоров и в основном проходит при первом запуске игры. Затем готовый код сохраняется в кэше и применяется при следующих запусках.
Поэтому оптимизация сокращает ожидание там, где перекомпиляция нужна, но не означает, что Gran Turismo 6 или другие игры в RPCS3 стали быстрее на 48% по FPS.


