RPCS3: El AVX-512 mejora en un 30% el rendimiento del emulador de PlayStation 3

El conocido emulador de PlayStation 3, RPCS3, sigue recibiendo importantes mejoras con el paso de los años, y la última de ellas está el aprovechar el uso de las instrucciones AVX-512 de los procesadores más modernos como pueda ser el Intel Core i9-12900K (siempre y cuando no compres uno del nuevo lote con el AVX-512 desactivado).

Con el Intel Core i9-12900K @ 5.20 GHz como ejemplo, en God of War 3, usando las instrucciones SSE2, el juego apenas se mueve sobre los 5 FPS, mientras que al usar las instrucciones SSE 4.1 ya ofrece un enorme salto de rendimiento sumando 160 FPS. Si se usan las instrucciones AVX2/FMA se recibe una mejora adicional del 13% para movernos en los 187 FPS, pero si nos movemos a las instrucciones AVX-512, recibimos una mejora de rendimiento adicional cercana del 30% para rozar los 242 FPS.

Teniendo en cuenta que los AMD Ryzen 7000 darán acceso a las instrucciones AVX-512, algo por ahora exclusivo de Intel, pues pensando en la emulación, será un gran paso hacia delante.

RPCS3 - God of War 3 con AVX-512

"Fuera de RPCS3, AVX-512 no es ampliamente utilizado por muchos emuladores, sin embargo el recompilador de Arm dynarmic puede aprovechar muchas instrucciones AVX-512 también. Dynarmic es utilizado por el emulador de 3DS Citra, el emulador de Nintendo Switch Yuzu, así como el emulador de PS Vita Vita3K. No conozco ninguna prueba comparativa entre los objetivos AVX2 y AVX-512 para ninguno de estos emuladores, pero supongo que la diferencia es menor que con RPCS3, ya que los núcleos Arm admiten tanto instrucciones vectoriales como escalares. Dado que el juego medio pasa más tiempo ejecutando instrucciones escalares que vectoriales, la ganancia potencial de las optimizaciones vectoriales no es enorme. En el caso de RPCS3, una de las principales razones por las que estas optimizaciones vectoriales son tan eficaces es que las SPU sólo admiten operaciones en registros vectoriales, por lo que el tiempo que se dedica a emular las SPU se emplea en ejecutar instrucciones vectoriales.

Un emulador que probablemente se beneficiaría enormemente de las optimizaciones de AVX-512 es PCSX2. Dado que las VUs de la PS2 inspiraron gran parte del comportamiento y diseño de las SPUs, muchas de las optimizaciones que se aplican a RPCS3 deberían aplicarse también a PCSX2. En particular, los vrangeps deberían ser útiles para mejorar su código de sujeción.

Esperemos que esto aclare parte de la confusión sobre por qué AVX-512 es útil para RPCS3. No he destacado todas las instrucciones AVX-512 que RPCS3 puede aprovechar, pero sí las que me han parecido más interesantes", indica su desarrollador en su blog.

Artículos relacionados