Introduzione al processore Cell

Matthew Scarpino spiega, ad un livello base, cos’è il processore Cell e come funziona.

Nel settembre 2007, il Guinness dei Primati ha annunciato il nuovo detentore del record per il sistema di calcolo distribuito più potente del mondo. Non si trattava di un cluster tradizionale di computer ad alte prestazioni, ma di una rete mondiale composta da normali PC e console PlayStation 3 (PS3). Chiamato Folding@Home, questo sistema di calcolo distribuito simula il ripiegamento delle proteine per analizzare l’origine delle malattie.

Prima che le PS3 si unissero, la rete era capace solo di 0,25 petaflops (250.000.000.000.000 operazioni in virgola mobile al secondo). Ma quando il client di Folding@Home ha iniziato a girare sulle PS3, la velocità di calcolo è quadruplicata in sei mesi, rendendo Folding@Home il primo sistema di calcolo distribuito a rompere la barriera di 1 petaflop.

La tabella 1.1 chiarisce il significato delle PS3 nella rete Folding@Home. Non ci sono tante console quanti sono i PC, ma forniscono più potenza di calcolo dei computer Windows/Mac/Linux messi insieme.

Tabella 1.1. Statistiche sulle prestazioni di Folding@Home (registrate il 16 aprile, 2008)

Tipo di sistema operativo

Pflop correnti

C CPU attive

Totale CPUs

Windows

190,892

1.986.517

Mac OS X/PowerPC

8.478

114,326

Mac OS X/Intel

7,428

45,480

Linux

27.796

286,172

PlayStation 3

40,880

492,491

L’enorme potenza di calcolo della PS3 è fornita dal Cell Broadband Engine, comunemente chiamato processore Cell o semplicemente Cell. Sviluppato dalla STI Alliance (Sony, Toshiba e IBM), il Cell combina la capacità generale dell’architettura PowerPC di IBM con una potenza di calcolo sufficiente a soddisfare anche i giocatori e gli sviluppatori grafici più esigenti.

Cosa significa questo per te? Significa che potete godere del meglio di entrambi i mondi: flessibilità computazionale e potenza. Da un lato, puoi installare un sistema operativo comune, come Linux, sul Cell ed eseguire le applicazioni in modo conveniente come se fossero in esecuzione su un PC. Dall’altro lato, è possibile implementare algoritmi computazionalmente intensi a velocità che superano di gran lunga le normali CPU e persino competere con i dispositivi di supercomputing.1 Ancora più incredibilmente, è possibile fare entrambe le cose allo stesso tempo.

Il Cell rende tutto ciò possibile attraverso una divisione del lavoro su chip: Il sistema operativo gira su un singolo PowerPC Processor Element (PPE), e il calcolo ad alta velocità viene eseguito da una serie di Synergistic Processor Elements (SPE). Questi due tipi di core sono specificamente progettati per i loro compiti, e ognuno supporta un diverso set di istruzioni.

Presi singolarmente, questi elementi di elaborazione sono facili da capire e semplici da programmare. La parte difficile è coordinare il loro funzionamento per trarre il massimo vantaggio dai loro punti di forza. Per fare questo, un programmatore deve conoscere i comandi di programmazione specifici del Cell e avere una solida conoscenza dell’architettura del dispositivo: i suoi elementi di elaborazione, le interconnessioni e la struttura della memoria.

Lo scopo di questo libro è di coprire questi argomenti in modo abbastanza approfondito da permettervi di creare applicazioni che massimizzino le capacità del Cell. Gran parte di questo trattamento approfondisce l’architettura del processore, ma solo gli aspetti che potete usare e configurare nel codice. Alcuni argomenti possono sembrare schiaccianti per coloro che non sono abituati a pensare come architetti di computer, ma non preoccupatevi: Tutto sarà spiegato man mano che se ne presenta la necessità. E l’obiettivo di questo libro è sempre il software.

L’obiettivo di questo capitolo è spiegare, ad un livello base, cos’è il processore Cell e come funziona. La discussione inizia con una descrizione del background del Cell, inclusa la sua storia e le sue capacità, e procede ad introdurre l’architettura di base del processore.

1.1 Background del processore Cell

Il Cell è così diverso dai suoi predecessori che aiuta a sapere perché è stato creato e le forze aziendali che hanno modellato il suo design. Quando vedrete perché la STI Alliance ha speso così tanto tempo e impegno per il Cell, avrete un’idea migliore del perché vale la pena conoscerlo.

Storia del Cell

Sony ha finito lo sviluppo della PlayStation 2 nel 1999 e l’ha rilasciata l’anno successivo. Nonostante il suo enorme successo, l’allora CEO Nobuyuki Idei era nervoso: come poteva la console di prossima generazione di Sony superare la PS2? Cosa avrebbero potuto fare di più? La risposta, decise, era duplice: La prossima offerta doveva integrare capacità multimediali a banda larga e fornire miglioramenti drammatici nell’elaborazione grafica. Questi nobili obiettivi richiedevano un hardware completamente nuovo, e per renderlo possibile, conferì con l’allora CEO di IBM, Louis Gerstner. Insieme diedero forma al concetto che alla fine avrebbe portato al Cell Processor.

Il capo di Sony Computer Entertainment, Ken Kutaragi, ha precisato i requisiti hardware e ha fatto richieste che andavano ben oltre lo stato dell’arte. Immaginando ogni processore come un blocco di costruzione di un’entità più grande, collegata in rete, Ken Kutaragi chiamò il dispositivo Cell. In linea con l’intenzione originale di Nobuyuki-san, il progetto fu chiamato Cell Broadband Engine (CBE). Questo rimane il nome ufficiale del processore Cell.

Toshiba espresse un interesse nell’uso del Cell nella sua elettronica di consumo, e nel 2001, Sony, Toshiba e IBM annunciarono la formazione della STI Alliance. La loro intenzione dichiarata era di ricercare, sviluppare e produrre un’architettura di processore innovativa. Formarono lo STI Design Center ad Austin, Texas, per trasformare i requisiti del CBE in realtà.

Come capo architetto del Cell, Jim Kahle vide che i requisiti del CBE non potevano essere soddisfatti con un tradizionale processore single-core – la richiesta di potenza sarebbe stata troppo grande. Invece, ha scelto un design più efficiente dal punto di vista energetico che incorporava più unità di elaborazione in un singolo chip. L’architettura finale consisteva di nove core: un elemento di elaborazione centrale e otto elementi dedicati al calcolo ad alta velocità.

Al momento di questa scrittura, lo STI Design Center è cresciuto fino a contare più di 400 ingegneri. Il dottor H. Peter Hofstee, uno dei progettisti fondatori della cella, ricopre le posizioni di capo scienziato e capo architetto della SPE. In una recente presentazione, ha elencato i principali obiettivi che hanno guidato la progettazione del Cell:

  1. Prestazioni eccezionali su applicazioni di gioco e multimediali
  2. Rispondenza in tempo reale all’utente e alla rete
  3. Applicabilità a una vasta gamma di piattaforme

Nel 2004, lo stabilimento di produzione di semiconduttori IBM a East Fishkill ha prodotto il primo prototipo Cell. Gli ingegneri della STI hanno installato Linux e testato il processore a velocità superiori a quelle comunemente dichiarate da 3 a 4GHz. Il prototipo è passato. Nel corso dell’anno successivo, Sony e IBM hanno lavorato febbrilmente per integrare il dispositivo nella console di prossima generazione di Sony, e i giocatori in attesa hanno dato il loro primo sguardo alla PlayStation 3 all’Electronic Entertainment Expo (E3) del 2005.

Novembre 2006 ha segnato l’uscita commerciale completa della PS3, e i racconti di lunghe code e consumatori a malapena sani di mente divertiranno il personale di vendita al dettaglio per gli anni a venire. Oltre al suo potente cervello processore Cell, la nuova console ha fornito una risoluzione fino a 1080p e un drive Blu-ray per video ad alta definizione.

Lo stesso anno, IBM ha rilasciato il suo primo CBE Software Development Kit (SDK) per consentire agli sviluppatori di costruire applicazioni per il Cell. L’SDK fornisce compilatori per entrambi i tipi di elementi di elaborazione, un simulatore/debugger combinato, numerose librerie di codice e un ambiente di sviluppo basato su Eclipse. Gran parte di questo libro riguarda l’SDK e come potete usarlo per costruire applicazioni.

A metà del 2008, il primo supercomputer basato sul Cell, chiamato IBM Roadrunner, è stato testato nel Los Alamos National Laboratory. Contenente 12.960 processori Cell e 12.960 Opteron, il Roadrunner ha raggiunto una velocità di elaborazione di 1,026 petaflop ed è diventato il più veloce dei supercomputer della lista TOP500. La sua velocità è più che raddoppiata rispetto a quella del supercomputer al secondo posto, BlueGene/L, con 0,478 petaflop.

Potenziale del processore Cell per il calcolo scientifico

Nel 2005, il Lawrence Berkeley National Laboratory ha studiato le prestazioni computazionali del Cell e ha registrato i risultati nel rapporto The Potential of the Cell Processor for Scientific Computing. Hanno simulato un certo numero di algoritmi diversi e confrontato la velocità di elaborazione del Cell con quella di processori simili: AMD Opteron, Intel Itanium2 e Cray X1E. La tabella 1.2 elenca i loro risultati.

Tabella 1.2. Risultati dello studio del Lawrence Berkeley National Laboratory (tutti i valori in Gflops/s)

Algoritmo

Cella Processore

Cray X1E

AMD Opteron

Intel Itanium2

Moltiplicazione a matrice densa (precisione singola)

Moltiplicazione a matrice densa matrice multipla (doppia precisione)

Matrice rada simmetrica moltiplicazione vettoriale (precisione singola)1

Simmetrica moltiplicazione vettoriale a matrice rada (doppia precisione)1

Nonsimmetrico Matrice Sparsa Vettore Moltiplica (Singola Precisione)1

Moltiplicazione vettoriale di matrici sparse non simmetriche (doppia precisione)1

2-D trasformata veloce di Fourier (precisione singola)2

2-D trasformata veloce di Fourier (doppia precisione)2

Ci sono due punti da tenere a mente. Primo, i risultati si riferiscono alla velocità di calcolo in miliardi di flop (operazioni in virgola mobile al secondo), non alla quantità di tempo necessaria per eseguire l’algoritmo. In secondo luogo, poiché i moltiplicatori del Cell di prima generazione sono a precisione singola, il Cell di prima generazione funziona molto meglio con valori a precisione singola che con valori a doppia precisione. Ma la seconda generazione fornisce la moltiplicazione hardware di valori a doppia precisione.

Per un ingegnere interessato all’elaborazione dei segnali e alla matematica computazionale (come me), i risultati sono a dir poco sbalorditivi. Lo studio giustifica le oltraggiose affermazioni di marketing: Il Cell fornisce davvero capacità simili a quelle di un supercomputer per quasi il costo e la potenza (circa 50-60 W) di una normale CPU.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.