Au cœur de cette console se trouve une puissante puce intitulée Emotion Engine, ou 'EE', un projet conjoint de Toshiba et Sony cadencé à ~294.91 MHz .

L'Emotion Engine, tel que vu sur la première révision de la carte mère de cette console.
Ce jeu de puces contient de nombreux composants, l'un d'eux étant le processeur principal. Les autres sont à la disposition du processeur pour accélérer certaines tâches. Pour cette analyse, nous diviserons l'EE en trois sections :
- Le leader : Le composant principal qui contrôle l'ensemble de la puce.
- La mémoire disponible, un ingrédient crucial pour que les processeurs puissent effectuer des opérations significatives.
- Les co-processeurs : Ceux-ci accélèrent des calculs particuliers.
Le leader
En résumé, le processeur principal est un MIPS R5900, un cœur MIPS exclusif conçu pour cette console. Vous vous souvenez peut-être lorsque Sony a commencé à s'aventurer avec le silicium MIPS avec la toute première PlayStation (où l'on peut trouver un MIPS R3000A secondé par LSI). Pour la prochaine génération, nous avons un MIPS 'R5900'... mais que signifie ce nom pour nous ?
Pour comprendre ce qui se cache derrière les nouveaux numéros, examinons un peu l'histoire entourant cette époque.
Succès surpassé
Le MIPS R4000 était une série de processeurs populaires adoptée par une large gamme de systèmes, y compris un concurrent proche. Grâce à son succès, MIPS a apporté à la masse une gamme d'avancées jadis inaccessibles (calculs 64 bits, pipelines à 8 étages, etc.).
Avançons dans le temps, et le prochain grand saut est arrivé en 1995, avec la sortie du R10000. Désormais sous le financement de SGI, MIPS a produit un nouveau processeur qui a poussé les capacités de parallélisme du R4000 beaucoup plus loin, en introduisant des techniques comme :
- Exécution spéculative : Le processeur prédit le résultat des branches conditionnelles avant qu'elles ne soient calculées. Les prédictions sont basées sur des résultats antérieurs stockés dans une table interne de 512 entrées. Une fois la condition calculée, si la prédiction se révèle correcte, le processeur a économisé un temps précieux. Sinon, les calculs supplémentaires sont écartés.
- Grâce à cela, MIPS a enfin transformé un problème récurrent (aléas de contrôle) en avantage.
- Dans d'autres processeurs, vous pouvez trouver une fonctionnalité similaire appelée prédiction de branche dynamique.
- Pipeline superscalaire à 4 instructions : En plus du design pipeliné, le processeur va maintenant rechercher jusqu'à quatre instructions au début du pipeline et les distribuer à travers des unités séparées, permettant ainsi au processeur d'exécuter ces instructions simultanément. En procédant ainsi, le processeur atteint un plus grand degré de parallélisme.
- Exécution hors ordre : Le processeur va également réorganiser la séquence des instructions pour essayer de remplir ses unités autant que possible (tant qu'aucun risque n'est ajouté).
- Cache L2 avec un bus de 128 bits, permettant d'amener plus de données dans le processeur à la fois, ce qui devient une nécessité grâce aux améliorations précédentes.
Une telle innovation a cependant un coût de conception complexe, et le produit final était tout sauf bon marché. SGI ne l'a inclus que dans des équipements haut de gamme, et toute tentative de l'amener dans une console de salon était hors de question.
Haut de gamme pour les masses
Déjà conscient des limites commerciales du R10000, SGI/MIPS a engagé Quantum Effect Devices (QED) pour développer une version abordable du R10000 pour le marché de milieu à bas de gamme. En tant qu'entreprise fondée par d'anciens employés de MIPS, QED se spécialisait dans la conception de variantes de cœurs MIPS pour le secteur économique.
Finalement, QED est revenu avec un nouveau cœur appelé le R5000, il s'agissait d'un R10000 ayant subi des réductions significatives :
- L'exécution out-of-order est rétablie à l'ordre in-order.
- L'exécution spéculative est supprimée.
- La superscalabilité est limitée à deux instructions (2-issue) et ne parallélise plus les instructions entières. Cependant, les instructions à virgule flottante peuvent encore être associées à d'autres.
- En raison des réductions précédentes, le L2 est réduit à un bus de 64 bits à la place.
Par conséquent, cela est devenu un CPU idéal pour alimenter des équipements économiques, tels que les stations de travail d'entrée de gamme de SGI. Dans tous les cas, notez que le pipeline réduit exécutait toujours des opérations à virgule flottante en simultané, comme si QED prévoyait de le garder attractif pour les applications vectorielles/3D. Vous verrez bientôt qu'une autre entreprise a rapidement pris note de cela également.
En passant, il est curieux d'observer qu'à l'autre bout du monde, il y avait des avancées similaires mais dans la direction opposée : ARM s'est associé à DEC dans le but de propulser les puces ARM vers le marché haut de gamme.
Une commande spéciale pour Sony
Toshiba était un licencié MIPS depuis un certain temps et n'était pas étranger à la fabrication de variantes et de packages MIPS. À un moment donné, Sony et Toshiba ont uni leurs forces pour produire un CPU exclusivement conçu pour la future console de Sony. C'était un énorme avantage pour Toshiba : très souvent, les CPU doivent répondre à une large gamme d'exigences provenant de différentes parties prenantes, ce qui limite les opportunités de spécialisation. Maintenant, il n'y avait qu'un seul objectif : le jeu 3D. Ainsi, offrant suffisamment de place pour toutes sortes d'innovation.
Cela dit, Toshiba a fini par s'approprier le design abordable du R5000 et l'a modifié pour accélérer les opérations vectorielles. Le nouveau cœur est appelé R5900 et présente les améliorations '3D' suivantes :
- Une variation de l'ISA MIPS III. Cela inclut l'ISA 64 bits original vu précédemment sur la Nintendo 64, mais étendu avec des opcodes intéressants. Sony a ajouté certaines instructions de MIPS IV (prefetch et déplacement conditionnel) avec leur propre extension SIMD appelée instructions multimédia pour accélérer les calculs vectoriels (similaire au SH-4, mais uniquement entiers).
- Les instructions multimédia sont encore de 32 bits de large mais peuvent opérer jusqu'à trois vecteurs de 128 bits à la fois. Elles offrent des opérations telles que l'arithmétique vectorielle, les min/max et de nombreuses combinaisons scalaires pour former de nouveaux vecteurs.
- 32 registres polyvalents de 128 bits : Une autre amélioration significative marquée Toshiba. Oubliez le stockage typique en 32 bits, nous avons maintenant pénétré dans le domaine des 128 bits. Toutefois, la majorité des opérations utiliseront difficilement tout l'espace disponible (les mots MIPS sont toujours de 64 bits de long). C'est là que l'extension multimédia mentionnée précédemment entre en jeu, car son ensemble utilisera pleinement le fichier de registres étendus.
- Lors de l'utilisation des nouvelles instructions, chaque registre peut stocker des vecteurs constitués de nombreux types de scalaires (allant de deux entiers 64 bits à seize entiers 8 bits).
- Pour éviter les pénalités de performance, ces registres sont accessibles via un bus 128 bits, tandis que le reste du CPU utilise un bus de données interne de 64 bits.
- Deux ALU de 64 bits. Chacune peut opérer des entiers 64 bits de manière indépendante, mais aussi se combiner pour devenir une ALU de 128 bits. Cette dernière est le cerveau derrière ces jolis opcodes multimédia.
En plus de cela, nous trouvons également d'autres améliorations que les développeurs pourraient bien accueillir :
- Pipeline à 6 étages : C'est un étage de plus par rapport aux prédécesseurs.
- Exécution superscalaire à deux voies : Grâce aux deux ALU, jusqu'à deux opérations entières de 64 bits sont désormais exécutées en parallèle.
- Cela rétablit un autre avantage perdu du MIPS R10000.
- 24 KB de cache L1 : divisés entre 16 KB pour les instructions et 8 KB pour les données.
- Le circuit dispose aussi d'une fonction prefetch pour mettre les instructions et les données en cache avant qu'elles soient sollicitées. Ceci est réalisé en ajoutant une logique supplémentaire capable d'identifier quelles zones mémoire sont le plus souvent sollicitées.
- 16 KB de RAM Scratchpad, aussi connue sous le nom de 'Fast RAM'.
- Unité de gestion mémoire : fournit une interface d'accès à la mémoire pour le reste du système.
De plus, le processeur est complété par une unité de calcul à virgule flottante dédiée (intitulée 'COP1') qui accélère les opérations sur des nombre à virgule flottante 32 bit (aussi connu en tant que float en C). Il s'agit d'une particularité car elle ne suit pas le standard IEEE 754, le plus évident étant son absence d'infinity (calculé en tant que 0 à la place) . À part cela, il possède 32 registres de 32 bits.
Un choix de mémoire reconnaissable
Aux côtés de l'Emotion Engine se trouvent deux blocs de 16 MB de mémoire RAM, soit un total de 32 MB de mémoire principale. La mémoire utilisée est de type RDRAM (c'est du déjà-vu !) et elle est accessible à travers un bus 16 bits.

Design mémoire de l'Emotion Engine. Vous pouvez deviner où l'engorgement va survenir.
Au départ, cela peut être décevant à entendre, en sachant que le bus interne de l'Emotion Engine est plus large avec ses 128 bits. Cependant, les puces de RAM sont stratégiquement placées conformément à l'architecture dual-channel, qui consiste à connecter les deux puces à l'aide de deux bus 16 bits indépendants (un bus par puce) pour améliorer le débit de données. La configuration qui en résulte donne théoriquement 3.2 GB/sec, sachez donc que la latence mémoire n'est pas un problème avec cette console !
A l'un des coins de l'Emotion Engine se trouve un puissant Contrôleur DMA, ou 'DMAC', qui transfère les données entre la mémoire principale et la mémoire Scratchpad, ou entre la mémoire principale et n'importe quel composant à l'intérieur de l'EE.
Les transferts de données se font par lots de 128 bits, mais voici la partie intéressante : tous les 8 lots, le bus principal est temporairement débloqué. Cela ouvre une petite fenêtre pour réaliser d'autres transferts DMA en parallèle (jusqu'à dix) ou laisser le processeur utiliser le bus principal. Ce mode opératoire s'appelle slice mode et est l'un des nombreux modes disponibles sur cette unité DMA. Gardez à l'esprit que si le slice mode réduit les blocages sur le bus principal, il le fait au prix d'un ralentissement général du transfert DMA.
Éviter les mésaventures passées
Que nous le voulions ou non, avec la quantité de trafic ayant lieu à l'intérieur de l'Emotion Engine, ce design pourrait subir les conséquences de l'architecture mémoire unifiée, ou 'UMA'. C'est-à-dire : plusieurs composants indépendants, tentant simultanément d'accéder à la mémoire principale, menant à un embouteillage. Ainsi, pour corriger cette problématique, Sony a réduit le besoin constant de mémoire en :
- Embarquant dans leurs processeurs beaucoup de mémoire cache. Ainsi, l'accès à la mémoire principale n'est requis que si c'est absolument nécessaire.
- Ce sera le motif de 99% des mentions de cache/Scratchpad dans ce document.
- Ajoutant un Write Back Buffer de 128 bits : très similaire au Write Gather Pipe, sauf qu'au lieu d'attendre d'être rempli à 25%, il vérifiera d'abord le statut du bus (c'est-à-dire encombré ou libre).
Cela semble très pratique pour les applications pouvant bénéficier du cache, mais qu'en est-il de ces tâches, comme la manipulation des Display Lists, qui ne devraient pas utiliser de cache du tout ? Par chance, le processeur fournit un autre mode d'accès à la mémoire, intitulé UnCached, qui utilse uniquement le Write Back Buffer. Ainsi, il ne gaspillera pas des cycles à corriger le cache (résultat de cache misses).
De plus, le UnCached accelerated mode est également disponible. Celui-ci ajoute un buffer pour accélérer la lecture des adresses contiguës en mémoire.
D'autres choses intéressantes
A l'intérieur du même bloc Emotion Engine, il y a encore un autre processeur, intitulé Image Processing Unit, ou 'IPU' ; cette fois conçu pour la décompression d'image. En tant que successeur du MDEC, cet IPU s'avère utile quand un jeu a besoin de décoder une vidéo MPEG2 sans mobiliser le processeur principal.
En résumé, le jeu envoie un flux d'images compressées à l'IPU (de préférence en utilisant le DMA) qui sont alors décodées vers un format que la GPU peut afficher. Le système d'exploitation de la PS2 se repose également sur l'IPU pour la lecture de DVD.
Enfin, l'IPU traite également les textures haute définition compressées, ce qui allège la charge processeur et réduit les larges transferts.