Mes favoris

RPCS3 : l'émulation PlayStation 3 franchit un nouveau cap de performance sur ARM

RPCS3 : l'émulation PlayStation 3 franchit un nouveau cap de performance sur ARM
Topic Hubs
Résumé rapide
Click to expand
Table des matières

Pendant des années, l'émulation de haut niveau a été le domaine exclusif de l'architecture x86. La complexité du processeur Cell de la PlayStation 3 — avec son cœur PowerPC et ses célèbres unités SPE (Synergistic Processing Elements) — semblait constituer un obstacle insurmontable pour les architectures à basse consommation. Cependant, les avancées récentes du projet RPCS3 indiquent que cet écart est en train de se combler.

Après l'établissement du support natif ARM64 fin 2024, les rapports de développement du début de l'année 2026 montrent que l'équipe s'attaque désormais aux micro-optimisations spécifiques à l'architecture ARM, dépassant le simple stade de la compatibilité de base.

La quête d'une efficacité native

L'activité récente la plus significative concerne la gestion des « shuffles », des opérations cruciales pour les charges de travail vectorielles de la PS3. La pull request (PR) #18056, ouverte le 15 janvier 2026, vise à remplacer l'ancien chemin d'exécution — qui émulait essentiellement la logique x86 sur ARM — par des instructions de brassage (shuffle) natives ARM.

Sur le plan technique, cela représente un gain potentiel majeur en termes de débit. La proposition suggère de réduire l'émulation de l'instruction SHUFB de neuf instructions ARM à seulement cinq. Dans certains cas où le compilateur LLVM se comporte de manière optimale, ce chiffre pourrait même tomber à quatre. Bien que ce projet soit encore au stade de brouillon et qu'il rencontre des problèmes de stabilité (notamment des crashs suspectés d'être liés à des bugs de registre LLVM), il témoigne d'une volonté de traiter ARM comme un citoyen de première classe plutôt que comme une simple cible de traduction.

Détecter le matériel de demain

Depuis la fin mars 2026, le projet prépare le terrain pour des fonctionnalités ARM avancées qui ne sont pas encore standard sur la plupart des puces grand public actuelles. La PR #18422, ouverte le 22 mars 2026, introduit la détection de plusieurs extensions ARM :

  • FEAT_LUT : Potentiellement utile pour simplifier l'émulation des machines à états finis (FSM).
  • FEAT_I8MM : Ciblant l'amélioration de certaines opérations spécifiques GBH/GBB.
  • SVE (Scalable Vector Extension) : L'implémentation ici est prudente, avec des vérifications pour garantir une longueur de vecteur exacte de 128 bits afin de correspondre aux exigences des SPU.

Pour les utilisateurs de Windows-on-ARM, cette détection passe par des entrées de registre spécifiques qui interrogent les registres système. Cela démontre que le projet se prépare à un avenir où les puces Snapdragon X Elite ou les futurs processeurs Apple Silicon pourraient offrir des raccourcis matériels pour des tâches qui nécessitent actuellement un lourd traitement logiciel.

Réalité matérielle : Apple Silicon face au reste du monde

Si les progrès sont évidents, l'expérience utilisateur reste fragmentée selon le matériel utilisé.

L'écart de performance sur Apple Silicon est particulièrement révélateur. En passant de la traduction Rosetta 2 à une version ARM64 native, certains utilisateurs ont signalé un quasi-doublement du taux de rafraîchissement sur certains titres. Selon les rapports de la communauté, des jeux comme Demon's Souls peuvent maintenir un 60 FPS stable en 720p sur les Mac modernes, une prouesse impensable il y a encore quelques années.

Le Raspberry Pi 5 reste quant à lui une démonstration technique « pour la forme ». Même avec un surcadençage à 2,9 GHz, le GPU VideoCore VII est trop limité pour gérer la charge de travail du RSX de la PS3. Les testeurs ont dû réduire la résolution à 272p (similaire à la PSP) pour lancer des titres 3D, et même dans ces conditions, les plantages de pilotes sont fréquents.

Frictions architecturales

Optimiser pour ARM ne se résume pas à changer une option de compilation. L'équipe RPCS3 doit composer avec plusieurs « tics » hérités du x86 ancrés dans la conception même de l'émulateur. Par exemple, ARM utilise un registre de liaison (link register) dédié pour les adresses de retour, ce qui entrait en conflit avec le comportement de la chaîne de retour initialement conçu pour le moteur JIT.

Il y a également le problème de la taille des pages mémoire. Alors que le x86 et le matériel PS3 original utilisent des pages de 4 KiB, de nombreuses plateformes ARM adoptent par défaut des pages de 16 KiB. Cette divergence peut entraîner des rechargements mémoire coûteux et une invalidation plus fréquente des pages, ce qui grignote les gains de performance obtenus par ailleurs.

Où en est l'émulation ARM aujourd'hui ?

Si vous envisagez de transférer votre bibliothèque PS3 sur un appareil ARM, la situation est prometteuse mais demande de la nuance :

  • Les utilisateurs de Mac sont les grands gagnants : Les versions ARM natives sur macOS, épaulées par MoltenVK, offrent actuellement l'alternative la plus stable et performante face aux PC x86 haut de gamme.
  • Windows-on-ARM est toujours en chantier : Bien que la détection des nouvelles fonctionnalités soit un signe encourageant, la distribution des binaires officiels pour Windows ARM64 n'est pas encore régulière, et le processus de build via Clang reste plus complexe que la route standard Visual Studio.
  • Les optimisations peuvent être à double tranchant : Une PR de mars 2026 concernant la prédiction de boucle SPU a montré un gain de +1 à +2 FPS dans Twisted Metal, mais a causé une régression substantielle dans LittleBigPlanet 3 sur Steam Deck LCD. Cela explique pourquoi beaucoup de ces fonctionnalités spécifiques à ARM sont encore en phase de test.

Nous n'en sommes pas encore au point où un ordinateur portable ARM haut de gamme est la recommandation par défaut pour les exclusivités les plus gourmandes de la PS3, mais le flux constant de mises à jour de bas niveau suggère que les développeurs voient un chemin concret vers cette parité.

Foire aux questions

Selon les rapports de la communauté cités dans l'article, le passage d'une émulation via Rosetta 2 à une version native ARM64 permet d'obtenir des gains de performance compris entre 50 % et 100 % sur certains titres. Certains utilisateurs ont même vu leur nombre d'images par seconde doubler. L'article précise également que des jeux exigeants comme Demon's Souls peuvent désormais maintenir 60 FPS en 720p sur les Mac récents grâce à cette version native.

Oui, mais l'article souligne que le support du Raspberry Pi 5 est actuellement une preuve de concept plutôt qu'une solution viable pour jouer. Le processeur graphique Broadcom VideoCore VII est trop limité pour gérer efficacement la charge de travail du RSX de la PS3. Pour faire tourner certains titres en 3D, les testeurs ont dû abaisser la résolution à 272p, et des plantages fréquents ont été signalés lors des tests sous Vulkan.

La pull request #18056, ouverte le 15 janvier 2026, propose de remplacer l'ancien chemin d'émulation de type x86 par des instructions de brassage (shuffle) natives ARM pour gérer les calculs vectoriels intensifs de la PS3. D'après l'article, cela permet de réduire l'émulation SHUFB de neuf instructions ARM à seulement cinq, voire quatre lorsque le compilateur LLVM génère un code optimisé, ce qui améliore globalement le débit de traitement sur ARM.

Selon l'article, la PR #18422 du 22 mars 2026 ajoute la détection des extensions FEAT_LUT, FEAT_I8MM et SVE (Scalable Vector Extension). La gestion du SVE inclut une vérification spécifique pour s'assurer que la longueur des vecteurs est exactement de 128 bits, afin de correspondre aux exigences des SPU de la PS3. Pour Windows-on-ARM, la détection s'appuie sur des entrées spécifiques du registre.

L'article identifie deux problèmes majeurs. D'une part, ARM utilise un registre de liaison (Link Register) dédié pour les adresses de retour, ce qui entre en conflit avec la gestion des chaînes de retour initialement prévue pour le moteur JIT. D'autre part, de nombreux systèmes ARM utilisent des pages mémoire de 16 Kio au lieu des 4 Kio habituels sur x86 et sur la PS3 d'origine, ce qui augmente le coût du transfert de données et de l'invalidation des pages modifiées (dirty pages).

Pas encore. L'article décrit le support de Windows-on-ARM comme étant expérimental et toujours en développement en ce début d'année 2026. La distribution des binaires officiels pour Windows ARM64 n'est pas encore systématique, et la méthode de compilation via Clang s'avère plus complexe que le processus standard sous Visual Studio. De plus, la plateforme rencontre toujours des difficultés liées aux conflits d'ASLR et à l'architecture du JIT.

Commentaires

Préférences de lecture
Taille de police
Tableau comparatif