RPCS3 añade optimizaciones a las CPU Arm para emular juegos de PS3 en SoC Snapdragon y Apple

Matias 6 Comments 2026-03-24 10:43:06

El conocido emulador de PlayStation 3, el RPCS3, se encuentra acelerando su desarrollo para funcionar en procesadores Arm. Esta última actualización añade una optimización bastante específica del backend de CPU del emulador para dispositivos con arquitectura Arm. Y es que el equipo detrás de este emulador ha añadido una ruta que aprovecha las instrucciones SDOT/UDOT de la arquitectura Armv8. Esto permite acelerar parte de la emulación de la SPU de PlayStation 3, en concreto la instrucción SUMB. El equipo de RPCS3 también indica que las instrucciones GB, GBH y GBB también han sido optimizadas usando la misma familia de operaciones.

Al castellano. SUMB es una instrucción de la SPU del procesador Cell Broadband Engine que integra la PlayStation 3. Esta instrucción se encarga de sumar grupos de bytes y devuelve el resultado empaquetado en halfwords, mientras que GBB/GBH/GB son instrucciones de “gather bits” que recogen el bit menos significativo de bytes, halfwords o words y los compactan en un valor más pequeño. Son operaciones muy concretas del conjunto de instrucciones de la arquitectura del procesador de PS3. Instrucciones muy importantes porque aparecen en código real de juegos y, cuando el emulador consigue mapearlas a instrucciones modernas especialmente eficientes del host, reduce bastante el coste de traducirlas. Y este coste se resume en rendimiento.

Este trabajo mejora la jugabilidad de juegos de PlayStation 3 con RPCS3 en equipos Arm Snapdragon y Apple Silicon

Emulador PlayStation 3 PS3 RPCS3 CPU Arm

Todo este trabajo tiene un cometido, que es mejorar el rendimiento de los juegos de PS3 en RSPCS bajo una plataforma Arm. Esto implica desde dispositivos Windows on Arm con SoC Qualcomm Snapdragon, hasta a los equipos Mac con procesadores Apple Silicon. Para ello, es relevante el aprovechamiento de las instrucciones UDOT y SDOT, que son instrucciones de producto escalar vectorial de 8 bits con acumulación. Arm diseñó estas instrucciones precisamente con la idea de concentrarlo todo el trabajo de la técnica de arquitectura SIMD en muy pocas instrucciones.

En la documentación oficial de Arm, se ve que pueden recortar de forma drástica el número de ciclos frente a implementaciones más tradicionales. En el ejemplo con un núcleo Cortex-A55, una versión con dot product baja de 402 ciclos a únicamente 73 ciclos. Ese mismo principio es el que RPCS3 está explotando aquí: usar hardware moderno de Arm para resolver patrones de cálculo que, de otra forma, exigirían varias instrucciones intermedias dentro del recompilador/JIT.

RPCS3 también añade ayuda para intrínsecos LLVM de udot/sdot y addp. El objetivo es tratar estas instrucciones de Arm de forma parecida a como hacen en x86 ya se aprovechan rutas tipo VNNI para acelerar SUMB. Para GB/GBH/GBB, el truco consiste en aislar el bit menos significativo y multiplicarlo con un vector de potencias de dos mediante UDOT, de forma que el emulador combine en una sola operación lo que antes implicaba separar bits, desplazarlos y reagruparlos. Además, cuando la entrada viene de una instrucción de comparación, pueden usar una potencia de dos con signo y ahorrarse incluso el paso de aislar el LSB. En resumen: menos instrucciones del host para emular la misma semántica de la SPU del procesador Cell en Arm.

Ahora solo queda seguir esperando para que este emulador completamente funcional más allá de los procesadores x86

Esta actualización es un paso más allá para ampliar el soporte del emulador de PlayStation 3, RPCS3, tanto a nuevos sistemas operativos como procesadores Arm. Fue en diciembre de 2024 cuando el equipo detrás de este proyecto anunció soporte oficial para las CPU arm64. Y en aquel entonces ya avisaban del enorme trabajo que iban a necesitar para adaptar sus recompiladores LLVM/JIT a Linux, macOS y Windows on ARM.

Aquel anuncio ya dejaba claro que la emulación nativa en ARM no era una prueba de concepto, sino una seria hoja de ruta. Desde entonces, las notas de lanzamiento de GitHub han ido acumulando mejoras centradas en Arm, como builds para Windows Arm, despliegue de binarios aarch64, detección de características arm64, activación de FMA en CPUs Arm, ajustes del temporizador y otros refinamientos de bajo nivel. La web oficial además ya muestra la descarga para arm64, señal de que ese soporte ha ido madurando.

A ello se le suma que RPCS3 siempre ha sido un emulador muy dependiente de la CPU, y la emulación de la SPU del Cell es una de las zonas donde más se gana cuando se recorta la sobrecarga. Por eso este tipo de parche puede notarse especialmente en hardware Arm. RPCS3 está dejando de “funcionar en ARM” para empezar a rendir de verdad en ARM. Además, el proyecto mantiene ya una compatibilidad muy alta en conjunto, con la página oficial situando el catálogo de juegos en un 73,44% “Jugable” y 24,80% “En Proceso” en el momento de la redacción.

boton whatsapp sharkinformatica
boton whatsapp sharkinformatica