Przełom w emulacji PS3. Wyraźny skok wydajności w RPCS3
Twórcy emulatora RPCS3 twierdzą, że osiągnęli przełom w emulacji PS3 i procesora Cell Broadband Engine. Wiąże się on z wyraźnym wzrostem wydajności gier.
Udało się okiełznać problematyczny koprocesor
Konsola PlayStation 3 od dawna dała się poznać jako trudna do ugryzienia architektura do tworzenia na nią gier. Doskwierało to kiedyś wielu deweloperom, jak i również jest to źródło koszmarów dla osób próbujących emulować konsolę na współczesnym sprzęcie.
Najnowsza wersja open-source'owego emulatora RPCS3 v0.0.40-19151 wnosi bardzo widoczny wzrost wydajności, a główny deweloper projektu (Elad) przyznał, że rozgryzł schematy wykorzystania SPU – koprocesora RISC/SIMD do intensywnych obliczeń. PS3 miało ich 8, z czego 6 dostępnych dla deweloperów.
Gra Twisted Metal robiła ogromny użytek z SPU i tutaj w emulacji udało się uzyskać wzrost wydajności 5–7%.
W innych tytułach przyrost FPS może być jeszcze wyższy, i według Elada ma być on odczuwalny na każdym współczesnym procesorze.
Problem z emulowaniem tego układu na współczesnym x86 polega na tym, że instrukcje Cell i x86 to zupełnie różne języki maszynowe. RPCS3 musi w locie tłumaczyć kod SPU na kod natywny x86 – robi to za pomocą LLVM oraz ASMJIT, które dynamicznie rekompilują bloki instrukcji Cell.
Ponieważ PS3 uruchamiało do 6 SPU równolegle, emulator musi obsługiwać tyle samo wątków CPU jednocześnie. To właśnie emulacja SPU jest największym wąskim gardłem: każdy cykl SPU kosztuje znacznie więcej czasu hosta niż na prawdziwym Cell.
Przełom Elada polega na zidentyfikowaniu powtarzalnych wzorców w tym, jak gry korzystały z instrukcji SPU (tzw. kod idiomatyczny). Dzięki temu emulator może zastępować całe sekwencje rozkazów SPU znacznie efektywniejszym kodem x86, zamiast tłumaczyć wszystko instrukcja po instrukcji.
Elad ma długą historię optymalizacji SPU w RPCS3. Jego poprzednie usprawnienia z czerwca 2024 przyniosły 30% do nawet 100% wzrostu wydajności na czterordzeniowych procesorach, a Demon’s Souls podwoiło liczbę klatek na słabszym sprzęcie. Obecna optymalizacja działa na wszystkich procesorach, w tym na AMD Athlon 3000G, gdzie poprawiono także renderowanie dźwięku i Gran Turismo 5. Projekt rozwija się też w kierunku ARM – dodano obsługę SDOT/UDOT, przyspieszając emulację SPU na Apple Silicon i Snapdragon X.
Za pomocą RPCS3 można uruchomić około 70% biblioteki gier PS3 i to na platformach tak różnych jak Windows, Linux, macOS, FreeBSD, a także Apple Silicon i inne Arm64.