# Cell (processore)

Cell è una tipologia di processori sviluppati da Sony in cooperazione con IBM e Toshiba.
La famiglia di processori Cell è sviluppata per permetterne un utilizzo quasi universale, infatti questi processori sono stati pensati per essere in grado di coprire i mercati che vanno dalle applicazioni dedicate (embedded) fino al mercato dei mainframe. Si tratta di CPU progettate per utilizzare la computazione parallela e Sony li ha utilizzati anche per la sua console PlayStation 3.

## Caratteristiche tecniche

Sebbene Cell possa avere molte configurazioni, la versione base prevede un'unità chiamata Power Processing Element (PPE) e 8 unità "Synergistic Processing Element" ("SPE"). L'unità PPE non è il processore primario; il suo compito è quello di controllare e sincronizzare le unità SPE che dovranno eseguire la maggior parte delle computazioni.
Il PPE è un insieme di chip che comprende un PXU, cioè un'unità logica di elaborazione per operazioni in virgola fissa e virgola mobile, e contiene in aggiunta i registri SIMD (in totale ha 32 registri a 128 bit), 2 cache L1 ambedue di 32KkB (una per dati e l'altra per il codice), e inoltre possiede anche una cache L2 unificata per dati e codice, grande 512kB. Può accedere direttamente alla memoria principale tramite DMA. Questa unità inoltre può elaborare 2 thread simultaneamente (l'insieme tra PXU e cache L1 è il PPU). La SPE è un insieme di chip che comprende un SXU, cioè un'unità logica formata da due pipeline concorrenti, una per il prefetching dei dati e l'altra per l'elaborazione in virgola fissa e virgola mobile; tuttavia hanno solo registri SIMD unificati (128 a 128bit). Possiede inoltre una LS o Local Storage, di 256kB ad alta velocità ed è l'unica memoria a cui la SXU può accedere; infatti, se essa ha bisogno di un'informazione dalla memoria principale, interviene un altro chip contenuto nella SPE, il cosiddetto MCF (Memory Flow Controller) che ha il compito di portare dalla memoria principale (tramite DMA) o eventualmente anche dalle altre LS, l'informazione alla sua LS. (L'insieme tra SXU e LS è la SPU) inoltre le SPE elaborano un solo thread ma molto più velocemente dei normali PPE.
I processori comunicano fra loro per mezzo dell'EIB (Element Interconnect Bus), che lavora alla metà della frequenza del processore e comunicano con l'esterno con il bus FlexIO a 6,4 GHz (ma la frequenza è variabile, ad esempio, quello del Cell integrato nella Playstation 3 lavora a 5 GHz) e con la memoria attraverso un bus XDR (Extreme Data Rate) a 3,2 GHz: sia FlexIO che XDR si basano su tecnologie di rambus e sono gestiti da controller integrati nel chip. Grazie ad un accordo stipulato con Rambus nel 2003, le memorie XDR DRAM che equipaggiano i dispositivi basati sull'architettura Cell vengono prodotte direttamente da Sony e Toshiba.
Nelle architetture finora prodotte gli SPE sono ottimizzati per il calcolo su singola precisione; ogni SPE è dotato di 4 ALU a 2 stadi per dati a singola precisione e può dunque eseguire sino ad 8 operazioni contemporaneamente. Gli SPE supportano anche il calcolo su dati a precisione doppia ma non dispongono di unità specializzate; tali calcoli sono eseguiti dagli SPE per la precisione singola con prestazioni circa 1/8 rispetto a quelle a precisione singola. Sono comunque previste implementazioni successive dell'architettura che supportino in hardware la precisione doppia non pagando dunque queste penalizzazioni.
Toshiba ha sviluppato un co-processore con 4 SPE, ma senza PPE, chiamato SpursEngine e progettato per accelerare il 3D e gli effetti speciali dei film nei prodotti elettronici di massa (es. PlayStation 3).

### Considerazioni sull'architettura

Sotto molti punti di vista Cell assomiglia all'architettura sviluppata da Seymour Cray, quando era ancora progettista alla CDC, ma al contrario. Mentre nel CDC 6600 vi era un'unità di calcolo molto veloce e un gruppo di unità più lente dedicate alla gestione e memorizzazione dei dati, nell'architettura del Cell l'approccio è opposto. Nel Cell vi è un'unità di gestione e un gruppo di unità veloci dedicate all'elaborazione dei dati. Questa architettura ritiene problematica l'elaborazione dei dati e non il loro recupero dalla memoria centrale.
Guardando l'architettura da un altro punto di vista Cell assomiglia a un moderno Computer da tavolo con un solo processore. Le moderne schede grafiche sono dotate di un'unità di elaborazione e di molte unità dedicate alle gestione della grafica poligonale. Queste unità dispongono di un accesso alla memoria molto rapido e spesso sono in grado di condividere delle zone di memoria. Il Cell estende questa architettura, le unità SPE infatti sono più flessibili delle unità dedicate delle schede grafiche.
L'architettura di Cell prevede l'incorporazione di più elementi base (1 PPE più 8 SPE) in un solo chip. IBM ha presentato il brevetto di un'unità formata da quattro unità base in grado di sviluppare in teoria 1 teraFLOPS.

## Prestazioni

Avendo principalmente un compito di gestione delle altre unità, il PPE incrementa le sue prestazioni e lo sfruttamento delle risorse con il multithreading, la grana del calcolo non è dunque particolarmente elevata ma diventa importante una buona gestione dei thread e dei processi.
Per quanto riguarda gli SPE vale invece il discorso opposto, essi sono specializzati nella computazione, hanno un (relativamente) grosso spazio di memoria on chip e lavorano solo su quello; il lavoro ottimale di queste unità è dunque il calcolo su vettori di dati delle stesse operazioni.
Sia PPE che SPE supportano il calcolo vettoriale, istruzioni su una serie di dati strutturati in un array monodimensionale. Questi elementi possono essere interi o floating point. In questo modo ogni singolo SPE è capace di eseguire contemporaneamente la stessa operazione su 8 valori diversi (lavorando in singola precisione). Grazie a questo meccanismo la sua performance arriva a circa 32 gigaFLOPS, dunque in teoria lavorando su precisione singola ogni singolo core ha potenzialità circa 8 volte maggiori di quelle di un Pentium 4 con lo stesso clock, a precisione doppia le prestazioni diventano equivalenti. A livello teorico il Cell può arrivare dunque sino ai 250 gigaFLOPS lavorando in singola precisione, e 30 GigaFLOPS in precisione doppia, rispettivamente 64 e 8 volte quelle di un Pentium IV con lo stesso clock.
Questo rende il Cell molto interessante per il calcolo in ambito scientifico; sebbene la sua architettura non sia ottimizzata per il calcolo in precisione doppia le prestazioni risultano comunque notevoli, e il fatto che tale processore sia studiato per una console influisce sui costi del processore stesso, che essendo prodotto su larga scala risulta notevolmente più economico di un processore "di nicchia" studiato appositamente per il calcolo scientifico. Tuttavia il Cell pur essendo un ottimo processore in ambito scientifico è più complesso da sfruttare in ambito videoludico ma rimane altrettanto potente ed eccellente per compiti di decodifica e transcodifica di flussi audio/video, grafica 3D (vertex, pixel, texture), simulazione avanzata della fisica in tempo reale e ray tracing.
Con Yellow Dog Linux 6.1, Fedora 9 o 10 e RHEL 5.2 o superiore si possono scrivere applicazioni per il Cell attraverso il kit di sviluppo di IBM (la versione attuale è la 3.0).

## Cell anche per i Server

Le prime versioni di Cell per server blade sono state distribuite ad inizio 2006 con un Clock di 2,4 GHz sebbene inizialmente la IBM avesse ipotizzato una vendita iniziale di versioni con un clock molto maggiore, sui 4 o 5 GHz, questo poiché nei laboratori i ricercatori sono riusciti a spingere questa architettura fino a 5.2 GHz, anche se pare che le rese produttive di questo chip non permettano allo stato attuale una commercializzazione a queste frequenze per via della inefficiente dissipazione del calore del chip stesso a tale frequenze.
Nel corso degli anni Sony ha affinato il processo produttivo del Cell. Al suo debutto nel 2006 nella prima versione di PlayStation 3 il Cell era prodotto a 90nm, successivamente ridotta a 65nm e col debutto della Playstation 3 Slim è stato ridotto a 45 nm. L'ultima versione implementata nella Playstation 3 Super Slim è a 32 nm. Lo stesso procedimento è avvenuto anche per la componente GPU della console e ciò ha permesso la riduzione dei consumi dai 200 Watt di picco della prima versione di Playstation 3 ai 70 Watt della Playstation 3 Super Slim.
Saranno disponibili molte varianti del Cell che avranno un diverso numero di unità interne per poter soddisfare le diverse necessità del mercato. Le aziende hanno sviluppato Cell in modo da poter integrare diverse unità in un solo chip in modo economico e se necessario Cell può essere ulteriormente espanso utilizzando reti veloci che collegano più chip in modo da incrementare la potenza di calcolo disponibile.
Progetti simili basati su più core sono sviluppati da molte aziende come per esempio Sun Microsystems che con il progetto MAJC (si pronuncia "magic") sta sviluppando un'alternativa a Cell. Il primo chip MAJC era progettato originariamente per elaborazioni multimediali ma in seguito Sun decise di utilizzare MAJC come base per le sue schede grafiche di alte prestazioni per le sue workstation. Anche lo Stanford University's Imagine Stream Processor shares è un processore concettualmente simile al Cell e al MAJC.

## Cell nei supercomputer

IBM, nel settembre 2006 comunicò la realizzazione di un nuovo supercomputer, destinato al Laboratorio Nazionale di Los Alamos nel Nuovo Messico, per il Dipartimento dell'Energia statunitense.
Roadrunner (questo il suo nome), è entrato in funzione nel 2008, ed è subito diventato il più veloce calcolatore mai realizzato, superato nel 2009 dal Cray Jaguar. Appena entrato in funzione, Roadrunner era ben 4 volte più potente dell'allora leader in classifica, vale a dire il sistema BlueGene/L, superando per la prima volta la storica soglia di un PetaFLOPS e arrivando a 1,6 PetaFLOPS: 1 600 bilioni (1,6 x 10$^{15}$) di operazioni al secondo.
In realtà tale sistema non è stato realizzato utilizzando esclusivamente il processore Cell; i nodi di calcolo sono infatti composti da processori AMD Opteron, a cui sono affiancati i processori Cell, utilizzati per accelerare i calcoli in virgola mobile. In generale esiste un rapporto 1:1 (relativamente ai nodi di computazione) tra il numero di core Opteron e il numero di core Cell. In particolare IBM ha scelto di utilizzare il processore PowerXCell 8i, in quanto fornisse istruzioni SIMD che permettono di eseguire quattro operazioni in virgola mobile per ciclo di clock. Inoltre esso è in grado di eseguire calcoli in virgola mobile a doppia precisione ad una velocità cinque volte superiore rispetto alla generazione precedente di processori Cell/B.E.
In totale Roadrunner include 12960 processori Cell.