# Cell (processeur)

Le Cell est un processeur conçu conjointement par IBM, Sony et Toshiba, révélé en février 2005. 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, Mercury Computer Systems (en) 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)
* 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 » (out of order). 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 pipeline. 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 90 nm, 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 « in order ». 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 (peak) du processeur Cell à 3,2 GHz avec 8 SPEs, atteintes lors de calculs vectoriels, sont :
* en simple précision 32 bits (SP) : 230,4 GFLOPS (25,6 GFLOPS par SPE, 25.6 GFLOPS pour le PPE)
* en double précision 64 bits (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

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 PowerPC Processing Element 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 Synergystic Processing Elements ou SPE, est constitué de 2 parties : une mémoire locale (Local Storage ou LS) de 256 ko et une unité de calcul vectoriel dite Streaming Processor Unit 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 Element Interconnect Bus 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 235 mm$^2$ en 90 nm SOI (Silicon On Insulator). La version finale tourne à 3,2 GHz en 0,9 V 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 CBE (Cell Broadband Engine) est composé de :
* 1 PPE (PowerPC Processing Element) : unité généraliste simplifiée, « in order »
* 8 SPEs (Synergistic Processing Element) ou « SIMD processing unit » pour certains auteurs
* Un cache de niveau 2 de 512 ko partagé
* l'EIB (Element Interconnect Bus) qui gère les communications internes entre les différents éléments
* MIC (Memory Interface Controler) : contrôleur mémoire partagé
* Flex I/O interface : contrôleur d'entrées/sorties (E/S)
Le mot cell 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 thread. La répartition des tâches selon les cellules est l'enjeu pour le programmeur qui souhaite utiliser au mieux ce processeur.

### Le PowerPC Processing Element

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 64 bits, « In Order », et SMT deux voies. Il a une mémoire cache intégrée de niveau 1 de 32 ko.

### Les Synergistic Processing Element

Ils se destinent au calculs SIMD. Un SPE correspond à un processeur vectoriel indépendant possédant 128 registres 128 bit, 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 256 ko 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'Element Interconnect Bus

Comporte 4 boucles 128 bit 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 25,6 Go par seconde. On trouve deux interfaces E/S configurables (76,8 Go/s, 6,4 Gbit/s) (Flexible I/O)

## Système

Annoncé le 29 juin 2005, le noyau du système d'exploitation Linux supportera ce processeur CELL : Annonce du port de Linux sur le processeur CELL - 29 juin 2005
On peut voir dans le ChangeLog, les changements intervenus pour la version 2.6.16 avec la précédente - 20 mars 2006 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 14 juillet 2006, 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. Informations about how to enable linux on Cell Broadband Engine™ based systems par Barcelona Supercomputing Center (BSC).
L'accélération 3D libre pour le processeur CELL est ajouté en janvier 2008 avec une première version rudimentaire d'un pilote pour Gallium 3D le futur remplaçant de Mesa 3D, implémentation libre d'OpenGL. .

## Calcul à Haute Performance

Tableau comparatif processeurs, test Linpack HPC double précision (classés par $R_{max}$ par processeur en ordre décroissant) :
| Machine / processeur(s) | #proc | #core par proc | $R_{max}$ (GFlop/s) | $R_{peak}$ (GFlop/s) | $R_{max}$ (GFlop/s) par proc | $R_{peak}$ (GFlop/s) par proc |
| IBM Cell BE (3,2 GHz)¹¹¹ en 2006 | 1 | 9 | 98.05 | 14.6 (64 bit) 204.8 (32 bit) | 98.05 | 14.6 (64 bit) 204.8 (32 bit) |
| Itanium 2 Montecito (2× Itanium 2 à 1,6 GHz) | 1 | 2 | (~12)¹ | 12.8 | (~12)¹ | 12.8 |
| IBM Cell BE (3,2 GHz) en 2005 | 1 | 9 | (10~13)¹ | 14.6 | (10~13)¹ | 14.6 |
| Pentium 4 + SSE3 (3,6 GHz) | 1 | 1 | | 14.4 | | 14.4 |
| IBM IntelliStation POWER 285 (2× POWER5+ à 1,9 GHz) | 2 | 1 | 14.35 | 15.2 | 7.18 | 7.6 |
| HP Integrity rx1620-2 (2× Itanium 2 à 1,6 GHz) | 2 | 1 | 12.05 | 12.8 | 6.03 | 6.4 |
| Pentium 4 (3,2 GHz) | 1 | 1 | | 6.4 | | 6.4 |
| HP ProLiant BL25p (2× AMD 254 Opteron à 2,8 GHz) | 2 | 1 | | 11.2 | | 5.6 |
Sources : LINPACK benchmark sur de nombreuses machines du 20 juillet 2006 au format ps - et - IBM performance - Tableau 9 du 29 novembre 2005
¹ valeurs estimées
¹¹¹ L'algorithme utilisé pour obtenir cette performance suit une approche de raffinement itérative où un couple de 32 et 64 bits en virgule flottante sont utilisés. Cette méthode calcule une factorisation LU en 32 bits et utilise une approche de raffinement itérative où est sélectionnée la solution avec une précision de 64 bits. La précision obtenue est équivalente à une implémentation 64 bits. Dans notre cas, le Rpeak est noté par un couple de 32 et 64 bits 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 64 bits. 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 32 bits soit 204,8 GFLOP/s, au lieu de plafonner en 64 bits à 14,6 GFLOP/s (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 32 bits par rapport à des calculs directement réalisés en 64 bits, 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.

### Mercury

Mercury et IBM ont collaboré pour développer des solutions basées sur le processeur CELL.
Mercury propose au 1er juillet 2006 quatre solutions à base de processeurs CELL, plus une solution d'évaluation (performance peak simple précision) :
* 200 GFLOPS « PowerBlock 200 » Châssis ATR pour véhicule militaire terrestre contenant 1 processeur CELL à 3 GHz, soit la capacité de 45 processeurs Intel Pentium 4 Xeon à 2,2 GHz
* 410 GFLOPS « 1U Dual Cell-Based Server » Un serveur rack composé de 2 processeurs CELL à 3,2 GHz
* 16 TFLOPS « Dual Cell-Based Blade » 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 « Turismo Cell-Based System » 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.
* Un système d'évaluation de la technologie CELL « Cell Technology Evaluation System (CTES) » Un châssis BladeCenter de 7 lames contenant chacun 2 processeurs CELL à 2,4 GHz.

### IBM

IBM annonce une nouvelle génération de serveurs lame et la formation officielle de la communauté Blade qui regroupent des acteurs collaborent au développement de solutions BladeCenter.
Ce serveur lame (utilisé pour le nouveau BladeCenter H) regroupe 9 processeurs CELL, constituant la première offre de ce type chez IBM. Conçu pour les traitements de calcul intensif et les applications multimédia à forte demande en bande passante, il permet d’augmenter de manière significative la bande-passante des petits serveurs lames, et offre ainsi aux entreprises la possibilité de faire circuler 10 fois plus de données sur leur réseau. Cette percée technologique repousse les limites des performances internes des nouveaux systèmes en leur fournissant plus de 40 Gbit/s (Gb) de bande-passante I/O par lame.
Annoncé en septembre 2006, Roadrunner est le premier supercalculateur à utiliser ce processeur (16 000 processeurs de ce type). Il est construit par IBM.

## Les enjeux scientifiques et industriels du CELL

Si le processeur CELL a été, initialement conçu pour les consoles de jeux, sa très grande puissance de calcul le rend très attractif dans de nombreux domaines comme le calcul intensif (HPC), le traitement d'images (TI) et la vision industrielle (VI). Sa complexité rend le portage d'applications très complexe car il faut optimiser les calculs et les transferts. Optimiser les transferts signifie optimiser deux types de transferts : ceux depuis la mémoire externe vers un SPE et ceux entre SPE. Cela revient à implémenter des modèles de transfert pour des calculs dits SIMD ou pipeline. Optimiser un code SPE, n'est alors pas plus compliqué que d'optimiser un code sur un processeur Altivec. Le jeu d'instruction est très proche et supporte les calculs en flottant et en entiers. Fin 2007, seules deux équipes de R&D au monde ont réussi cela, la société Rapidmind rachetée en août 2009 par Intel et l'équipe AXIS de l'IEF (Institut d'Électronique Fondamentale) (Université Paris Sud). Rapidmind a l'avantage de pouvoir en plus déployer du code sur GPU (carte 3D NVidia et AMD-ATI).

## Une nouvelle version du Cell

Sony a livré plus d'informations sur la nouvelle révision 65 nm du processeur Cell Broadband Engine, actuellement en production massive pour remplacer la première version du processeur gravée en 90 nm.
Le Cell en 65 nm viendra notamment remplacer son prédécesseur dans les PlayStation 3 de Sony, il aura l'avantage d'être 40 % plus petit que la version 90 nm, et surtout de moins chauffer. L'actuelle version 90 nm du processeur a un die tellement grand (222 mm$^2$) que cela pose un réel problème de rendement, car Sony peut alors en placer moins sur une même galette de silicium (wafer). Avec une réduction de la surface du die du processeur de 40 %, la production pourra atteindre des rendements bien plus profitables.
Cette amélioration de rendement sera au moins aussi importante lors du passage du 65 nm au 45 nm, que Sony prévoit pour la première moitié de l'année 2009. Tous ces processeurs sont gravés grâce à la technologie SOI (Silicon On Insulator), utilisée par IBM et AMD.
En chauffant moins, le Cell en 65 nm va aussi pouvoir atteindre des fréquences plus élevées. Sony annonce jusqu'à 6 GHz sous une tension d'1,3 V, là où le Cell 90 nm ne pouvait atteindre que 5,2 GHz, à la limite de ses capacités. Sur une tension d'1 V, le Cell 65 nm atteint les 4 GHz sans problème.
Cette montée en fréquence est aussi due à la séparation de l'alimentation de la SRAM (mémoire cache du processeur) et du reste de la puce. Deux lignes de tension indépendantes pour améliorer les performances et la consommation du processeur.
Notez qu'IBM compte bien utiliser sa dernière trouvaille, l'eDRAM, dans une prochaine génération de processeurs Cell.

## Détails du développement

Le développement du processeur Cell de la PlayStation 3 (et du Xenon de la Xbox 360) est détaillé dans les ouvrages The Race For A New Game Machine de David Shippy et The Xbox 360 Uncloaked de Dean Takahashi, mettant en avant les principaux éléments suivants.
Le développement du processeur Cell a commencé dès l’an 2000, immédiatement après le lancement de la PlayStation 2, avec une date de sortie de la PlayStation 3 prévue pour la fin d’année 2005. Ken Kutaragi, responsable du développement de la PlayStation 3 chez Sony, s’adressa à de nombreux concepteurs de processeurs, qui lui proposèrent tous des dérivés de leurs processeurs présents dans leur catalogue, mais Ken Kutaragi refusa toutes ces propositions, exigeant une vision plus large pour concevoir un tout nouveau processeur en repartant de zéro en visant une performance très élevée et une très basse consommation. Seuls IBM et Toshiba acceptèrent de développer un processeur de ce type, Intel s’étant contenté de proposer le Tejas (en), son futur processeur monocore à très haute fréquence, mais qui ne vit finalement jamais le jour en raison de problèmes de surchauffe. L’idée du consortium Sony-IBM-Toshiba était de concurrencer Intel sur le segment des processeurs multicoeurs à basse consommation plutôt que sur le segment des monocoeurs à forte consommation, bataille qui aurait été perdue d’avance selon eux.
En plein développement du Cell de la PlayStation 3, IBM a signé en 2003 un contrat avec Microsoft pour fournir également le processeur central de la Xbox 360, concurrente de la PlayStation 3, en reprenant le PPE du Cell et en le modifiant selon le cahier des charges de Microsoft. David Shippy et son équipe se sont initialement sentis « trahis » par leur hiérarchie IBM, Microsoft étant le concurrent direct de Sony. IBM, Sony et Toshiba s’étaient certes mis d’accord sur le fait qu’ils pourraient tous proposer le Cell ou ses composants à d’autres clients, mais aucun n’avait directement envisagé que cela pourrait intervenir avant même que le Cell ne soit finalisé, et encore moins pour un concurrent direct de la PlayStation 3. Shippy indique donc s’être demandé à quel point il ne se retrouvait pas en conflit d’intérêt, au moins moral si ce n’est légal, et si la charge de travail additionnelle apportée par la Xbox 360 ne rendrait pas impossible techniquement et/ou en termes de délais le développement en parallèle du Cell et du nouveau processeur dérivé du Cell, qui allait devenir le Xenon.
Le PPE, la partie commune au Cell et au Xenon, fut pendant un temps officiellement nommée « PB » pour « Power(PC)-Boosted » mais signifiait en réalité, d’après David Shippy, « PlayBox », contraction de « PlayStation » et « Xbox », montrant bien le caractère commun de cette partie du processeur. Des ingénieurs de Sony travaillèrent pendant quelque temps et sans le savoir sur le processeur de leur concurrent. Shippy était au début très mal à l’aise avec cette situation, mais indique s’être par la suite très bien entendu avec Microsoft et avoir accepté cette concurrence interne peu traditionnelle.
Le développement du Xenon, bien que commencé plus de deux ans après celui du Cell, aboutit paradoxalement plus vite que celui de ce-dernier. Le Xenon s’est en effet révélé plus simple à concevoir, car construit de façon relativement classique autour de trois PPE, par rapport au Cell qui n’utilisait qu’un seul PPE mais était couplé à plusieurs SPE qui rencontrèrent des soucis de développement, notamment en raison de la demande tardive de Ken Kutaragi d’inclure huit SPE dans le Cell au lieu des six initialement prévus, au seul prétexte, absurde selon Shippy, que « Huit, c’est beau ». La demande de Kutaragi ne put être satisfaite et la version finale du Cell de la PlayStation 3 ne contenait que sept SPE (le huitième étant désactivé). Par ailleurs, Microsoft avait prévu un fabricant de « secours » en plus d’IBM, Chartered Semiconductor (en), de sorte que, lorsqu’IBM fut confronté à des problèmes de production sur les premiers Cells et Xenons, Chartered Semiconductor parvint bien à livrer à temps les Xenons à Microsoft (mais ne produisit évidemment aucun Cell pour Sony).
Le premier exemplaire du Xenon fut mis sous tension et démarra correctement (du premier coup) en janvier 2005, plusieurs semaines avant le premier exemplaire du Cell. La complexité du Cell en raison de ses SPE rendait la construction des bibliothèques de développement de jeux bien plus complexe pour la PlayStation 3 que pour la Xbox 360, dont un prototype physique approché put être conçu pour les développeurs à partir d’un processeur PowerPC 970 et d’une carte graphique ATI Radeon 9800, alors qu’aucun prototype physique ne pouvait raisonnablement approcher le Cell : seuls des procédés d’émulation très lents étaient envisageables. Pour ces raisons, le premier jeu Xbox 360 fonctionnait dès janvier 2005, des mois avant que le premier jeu PlayStation 3 puisse démarrer.
Le premier exemplaire du Cell fut mis sous tension quelques semaines après le premier Xenon de la Xbox 360, mais parvint à fonctionner sans difficulté à plus de 5 GHz, bien au-delà des spécifications requises (4 GHz ciblé en développement contre 3,2 GHz pour le Cell final), signe selon Shippy de l’excellence de sa conception et de sa fabrication malgré les divers obstacles rencontrés.
Finalement, la Xbox 360 sortit bien fin 2005 comme prévu par Microsoft, aidé par le risque pris de produire massivement le Xenon avant les tests finaux, risque que Sony n’osa pas prendre pour la PlayStation 3, qui ne sortit que fin 2006, avec un an de retard sur le planning originel, mais finalement pour des retards plus imputables à la carte graphique RSX qu’au Cell lui-même.