Le Cell est un processeur conçu conjointement par IBM, Sony et Toshiba, révélé en . Il équipe notamment la console de jeu vidéo PlayStation 3 de Sony. Il est envisagé de produire également des ordinateurs à base de Cell chez IBM, et Toshiba (Qosmio F50/55 et G50/55).
Ses champs de prédilection, appliqués aux calculs vectoriels à virgule flottante, sont : le jeu vidéo avec la console PlayStation 3 et les bornes d'arcade (Namco Bandai)Namco Bandai : l'arcade avec le Cell , , PlayFrance les applications multimédia, films, TVHD (Sony, Toshiba) le rendu en temps réel, les simulations physiques, le traitement du signal (DSP) l'imagerie médicale, l'aérospatial et la défense, le calcul sismique, les télécommunications
Architecture
Ce processeur est conçu sur un modèle d'architecture différent de celui des processeurs généralistes CISC actuellement majoritaires dans les ordinateurs personnels grand public.
Moins de complexité pour plus de puissance brute
En effet, les processeurs traditionnels ont développé ces dernières années, en amont des unités d'exécutions proprement dites, des unités d'optimisation du code informatique composant les programmes. Ceci facilite grandement la tâche des programmeurs, et un code non optimisé peut fonctionner dans de bonnes conditions. À titre d'exemple, les processeurs traditionnels réorganisent le code en interne avant exécution, ils sont dits « OoO » (). Les instructions peuvent être exécutées dans un ordre différent de celui donné par le programme. Après exécution, le processeur remet les instructions dans le bon ordre pour garantir le bon fonctionnement. Cela implique de plus un matériel de suivi (de traçabilité) des instructions au fur et à mesure de leur progression dans le . Tout ce travail consomme énormément de place (de transistors) sur le processeur.
Enfin, les processeurs traditionnels n'évoluent plus fondamentalement depuis des années. Ils se contentaient essentiellement d'exploiter les nouveaux procédés de gravure pour monter en fréquence. Cette ère est terminée depuis le , qui ne permet plus de monter en fréquence autant que par le passé. C'est pour cette raison que l'on assiste à l'émergence des processeurs double cœur : on exploite la nouvelle finesse de gravure pour mettre plus de transistors et développer le SMP à l'intérieur même du processeur, sans grande augmentation de fréquence.
IBM pour le Cell a choisi une approche originale. Le Cell, tout comme les processeurs du passé, ne fait aucun travail de réorganisation du code, il est dit « ». Cela libère beaucoup de place pour ajouter de nouvelles unités d'exécution. L'inconvénient est que le travail d'optimisation est à la charge du programmeur et du compilateur et nuit donc à l'interopérabilité. Le déplacement d'un travail à l'extérieur du processeur avait déjà prévalu pour le RISC.
Une autre originalité du Cell, c'est qu'il est optimisé pour le calcul parallèle : plusieurs processeurs peuvent communiquer entre eux et partager leur charge de travail. Ainsi, plus on possède de processeurs Cells, plus on a une puissance de calcul importante à disposition.
Les performances maximales théorique () du processeur Cell à avec 8 SPEs, atteintes lors de calculs vectoriels, sont : en simple précision (SP) : 230,4 GFLOPS (25,6 GFLOPS par SPE, 25.6 GFLOPS pour le PPE) en double précision (DP) : 20,8 GFLOPS (1.8 GFLOPS par SPE, 6.4 GFLOPS pour le PPE)
Un cœur principal et huit cœurs spécifiques thumb|250px|L'architecture du processeur Cell Plutôt que de dupliquer plusieurs fois le même cœur identique, comme sur les processeurs multi cœur classiques, les concepteurs ont choisi une tout autre approche : un cœur principal, et huit cœurs spécifiques.
Le cœur principal, dit ou PPE, reste relativement proche d'un cœur classique : même si comme nous l'avons vu sa conception est simplifiée, en particulier avec l'absence de module d'optimisation, le jeu d'instruction IBM POWER, bien connu, permet un accès à la RAM via un système de cache à deux niveaux L1 et L2. Ainsi, le PPE est la partie du Cell la moins exotique.
Chacun des huit cœurs spécifiques, dit ou SPE, est constitué de 2 parties : une mémoire locale ( ou LS) de et une unité de calcul vectoriel dite ou SPU. Dotés d'un jeu d'instruction SIMD spécifique mais se rapprochant de AltiVec, les SPU ont un accès direct et extrêmement rapide à leur mémoire locale. Par contre, pour accéder à la mémoire principale ils doivent effectuer une requête de transfert asynchrone à un bus d'interconnexion.
Ce bus d'interconnexion dit ou Bus EIB est le dernier élément très important du Cell. Son rôle est d'établir la connexion entre le PPE, les SPE, la mémoire RAM principale, et les périphériques d'entrée-sortie.
Pour résumer et simplifier : le PPE se charge de préparer le travail et de démarrer les SPE (c'est un peu un rôle de chef d'orchestre). Il sert aussi à effectuer toutes les tâches qui ne peuvent pas simplement être effectuées sur les SPE. Les SPE exécutent ainsi les calculs les plus complexes à la demande du PPE en récupérant les données dans leur mémoire locale grâce à l'EIB. Enfin, pour maximiser les performances en évitant d'attendre l'EIB, le code s'exécutant sur un SPU doit effectuer ses calculs en même temps qu'ont lieu les transferts, par exemple en utilisant plusieurs mémoires tampons.
Caractéristiques Il dispose de 234 millions de transistors gravés sur une surface de en SOI (). La version finale tourne à en et est formée de huit couches de cuivre interconnectées. Le contrôle de la température est dynamique : dix capteurs thermiques numériques et un capteur linéaire.
Un processeur est composé de : 1 PPE () : unité généraliste simplifiée, « » 8 SPEs () ou « » pour certains auteurs Un cache de niveau 2 de partagé l'EIB () qui gère les communications internes entre les différents éléments MIC () : contrôleur mémoire partagé : contrôleur d'entrées/sorties (E/S)
Le mot signifie cellule en anglais. Le processeur se décompose en effet en plusieurs cellules. Une cellule est un ensemble formé par le PPE et un SPE. Cette unité matérielle indépendante peut être affectée à un . La répartition des tâches selon les cellules est l'enjeu pour le programmeur qui souhaite utiliser au mieux ce processeur.
Le thumb|250px|L'architecture du PPE Le cœur (PPE) utilise les jeux d'instructions PowerPC et AltiVec, les nombres entiers, et la répartition du travail entre les SPEs. C'est un processeur , « », et SMT deux voies. Il a une mémoire cache intégrée de niveau 1 de .
Les thumb|250px|left|L'architecture du SPE Ils se destinent au calculs SIMD. Un SPE correspond à un processeur vectoriel indépendant possédant 128 registres , 4 unités de calcul en virgule flottante double précision et 4 unités de calcul entiers. Il effectue deux instructions par cycle d'horloge. Il inclut une mémoire locale de de type SRAM haute vitesse. Un processeur Cell contient 8 SPEs.
Celui de la PS3 n'aura que 7 unités fonctionnelles, dont une utilisée pour gérer les DRMs et la sécurité (ce qui fait 6 unités utilisables par les jeux et applications). Les différentes hypothèses à ce sujet sont :
limiter le nombre de rejet en sortie d'usine ; garantir le fonctionnement de la PS3 en cas de défaillance matérielle d'un cœur durant la durée de vie de la console.
L' Comporte 4 boucles supportant des transferts multiples. Il relie tous les composants du CELL entre eux : PPE, SPEs, cache L2 et contrôleurs mémoire et entrées/sorties.
Contrôleurs mémoire et entrée/sortie Le MIC est un double contrôleur mémoire XDR (XDRAM) offrant un débit de par seconde. On trouve deux interfaces E/S configurables (, ) (Flexible I/O)
Système Annoncé le , le noyau du système d'exploitation Linux supportera ce processeur CELL : Annonce du port de Linux sur le processeur CELL -
On peut voir dans le , les changements intervenus pour la version 2.6.16 avec la précédente - permettant à Linux de tourner à partir de cette version du noyau.
À partir de la version 2.6.16 du noyau Linux, vous pouvez consulter et utiliser la documentation du système de fichier virtuel de contrôle des SPUs en anglais.
Depuis le , est accessible en anglais, en version SDK 1.1 et pour partie sous distribution Fedora core 5, l'ensemble des logiciels et documentation nécessaire au développement et à la compilation pour le processeur CELL sous Linux, cf. par .
L'accélération 3D libre pour le processeur CELL est ajouté en avec une première version rudimentaire d'un pilote pour Gallium 3D le futur remplaçant de Mesa 3D, implémentation libre d'OpenGL dans le GIT de Mesa 3D. .
Calcul à Haute Performance
+ Tableau comparatif processeurs, test Linpack HPC double précision (classés par par processeur en ordre décroissant) Machine / processeur(s) #proc #core par proc (GFlop/s) (GFlop/s) (GFlop/s) par proc (GFlop/s) par proc IBM Cell BE ()¹¹¹ en 2006 1 9 98.05 14.6 () 204.8 () 98.05 14.6 () 204.8 () Itanium 2 Montecito (2× Itanium 2 à ) 1 2 (~12)¹ 12.8 (~12)¹ 12.8 IBM Cell BE () en 2005 1 9 (10~13)¹ 14.6 (10~13)¹ 14.6 Pentium 4 + SSE3 () 1 1 14.4 14.4 IBM IntelliStation POWER 285 (2× POWER5+ à ) 2 1 14.35 15.2 7.18 7.6 HP Integrity rx1620-2 (2× Itanium 2 à ) 2 1 12.05 12.8 6.03 6.4 Pentium 4 () 1 1 6.4 6.4 HP ProLiant BL25p (2× AMD 254 Opteron à ) 2 1 11.2 5.6
Sources : LINPACK benchmark sur de nombreuses machines du au format ps - et - IBM performance - Tableau 9 du
¹ valeurs estimées
¹¹¹ L'algorithme utilisé pour obtenir cette performance suit une approche de raffinement itérative où un couple de 32 et en virgule flottante sont utilisés. Cette méthode calcule une factorisation LU en et utilise une approche de raffinement itérative où est sélectionnée la solution avec une précision de . La précision obtenue est équivalente à une implémentation . Dans notre cas, le Rpeak est noté par un couple de 32 et en virgule flottante. L'aspect négatif de cette approche est que celle-ci nécessite une fois et demi plus de mémoire qu'une approche normale de factorisation LU en . Pour plus d'information voir : Exploitation du calcul en simple précision pour une exacte résolution en double précision. L'aspect positif de cette approche est que celle-ci permet d'utiliser les énormes capacités de calcul du processeur CELL en soit , au lieu de plafonner en à (mais néanmoins supérieures aux autres processeurs actuels - 2006).
À noter que, certains des processeurs utilisés pour les Calculs Haute Performance démontrent aujourd'hui la supériorité des performances lors de calculs par rapport à des calculs directement réalisés en , comme les processeurs AMD Opteron, Intel Pentium, IBM PowerPC, et Cray X1.
Applications Sony Application la plus connue, la console de jeux vidéo PlayStation 3 de Sony est conçue autour du processeur CELL.
Pour des raisons de coûts de production, un des huit SPEs est inutilisé afin d'obtenir un rendement de production plus élevé (Sony peut utiliser les processeurs avec 1 ou 0 SPE défectueux). Le processeur CELL de la PS3 aura ainsi 7 SPE contrairement à la version standard d'IBM à 8 SPE sur Ars Technica.
Mercury
Mercury et IBM ont collaboré pour développer des solutions basées sur le processeur CELL.
Mercury propose au quatre solutions à base de processeurs CELL, plus une solution d'évaluation () : 200 GFLOPS « PowerBlock 200 » Châssis ATR pour véhicule militaire terrestre contenant 1 processeur CELL à , soit la capacité de 45 processeurs Intel Pentium 4 Xeon à 410 GFLOPS « » Un serveur composé de 2 processeurs CELL à 16 TFLOPS « » Une lame à 2 processeurs CELL offrant une performance maximale de 400 GFLOPS, pouvant être monté avec 6 châssis de BladeCenter contenant chacun 7 lames. 25 TFLOPS « » Un package à 4 processeurs CELL offrant une performance maximale de 800 GFLOPS, pouvant être monté avec 6 châssis de 5 package à 4 processeurs chacun pour une taille totale réduite.