Cell

De Viquipèdia
Dreceres ràpides: navegació, cerca
Per a altres significats vegeu «Cell (desambiguació)».

Cell és una Unitat Central de Procés (ang.: CPU) (xip principal d'un ordinador) desenvolupat per Sony, IBM i Toshiba per a la consola de jocs Playstation 3 inicialment però també per a aplicacions d'aparells Cinema a casa i com a Estació de treball d'alt nivell.

El Cell té una potència de càlcul d'un superordinador, superior al Cray X1E segons l'estudi del LBNL (Lawrence Berkeley National Laboratory) (PPT) [1] (PDF) [2] però per a treure'n partit caldrà desenvolupar-hi programes específics.

Imatge. Incorpora un nucli principal (dit PPE: Power Processor Element) i vuit nuclis addicionals (S.P.E.: Elements de Procés Sinèrgics).

PPE[modifica | modifica el codi]

El nucli principal (PPE) és un PowerPC nou i pot gestionar dos fils de procés (ang. Threads) simultàniament (SMT ang.: Simultaneous MultiThreading) de manera similar al sistema Hyper-threading de Intel.

El PPE està destinat al procés de tasques tradicional accedint a la memòria principal mitjançant memòries cau de nivell 1 i 2.

SPE[modifica | modifica el codi]

Els nuclis addicionals (SPE) no treballen sobre la memòria principal sinó sobre una memòria local interna (SRAM) incorporada en el xip, sense memòria cau intermèdia. Aquesta memòria local es carrega / descarrega mitjançant un mecanisme de DMA (Accés directe a memòria) de càrrega de blocs de memòria.

Aquest fet proporciona un accés molt més ràpid i previsible (sense memòria cau, i al mateix xip) a les dades que no l'accés a la memòria principal mitjançant memòria cau i unitàriament (amb els retards en cas que el valor cercat manqui i s'hagi d'anar a cercar a la memòria principal).

Tantmateix els SPE, condicionats per l'entrada / sortida per DMA (en blocs) i la reduïda memòria local (256 KB), no són aptes per a aplicacions genèriques amb accesos aleatoris, sinò més aviat per a aplicacions de tractament intensiu de dades (procés multimèdia, xifratge, codificació / descodificació, etc.) mitjançant codi compacte que es pot estructurar en Overlays o Plugins cas de no cabre-hi tot.

Programari de simulació[modifica | modifica el codi]

Existeix un programari de simulació del xip i compilador creuat per al desenvolupament de programes sobre el sistema Linux Fedora Core que està disponible al Centre de Supercomputació de Barcelona.[3]

Referències de l'SPE a l'espai d'adreces de memòria principal i compilació[modifica | modifica el codi]

Les referències a l'espai d'adreces principal dit també EA (Effective Address) es materialitzen en una taula d'adreces particular dita TOE (Table Of Efective Address References) que és linka amb el programa SPE però que cal resoldre en l'espai del PPE.

Les entrades en aquesta taula tenen com a etiqueta el prefix _EAR_ seguit de l'identificador de l'adreça referenciada, i el contingut es deixa a 0 per a no obstaculitzar el linkatge del SPE.

Al final del procés el compilador ppu-gcc emprarà les etiquetes _EAR_ per a omplir la taula en encaixar-lo dins el programa PPE.

Exemple de taula TOE en font assembler:

# arxiu spe_hola_toe.s
 .section .toe, "a", @progbits
 .align 4

 .global _EAR_buffer
 _EAR_buffer: .octa 0x0

Imatge En el procés de compilació i linkatge, hem d'obtenir un executable per al PPE que inclogui el del SPE com en una motxil·la, per a poder-lo llançar. El format d'aquesta motxil·la es diu CESOF (Cell Embedded SPE Object Format).

Exemple de programa "Hola Món" per a l'SPE:

/* spe_hola.c */

/* aquí declarem una referència a l'adreça de la TOE que conté
 l'adreça 'buffer' de memòria principal. 
 Les etiquetes de la TOE comencen per _EAR_. 
*/

extern unsigned long long _EAR_buffer;

char hola[] = "Hola Món!";

int main(long long sp_uid, char** argp, char** envp) {

 /* envia "Hola Món" a l'adreça 'buffer' del programa PPE via DMA 
 mitjançant la funció ''copy from local storage'' de la biblioteca del SDK */

 copy_from_ls( _EAR_buffer, hola, sizeof( hola));

return 0;
}

Exemple de programa controlador de l'anterior per al PPE:

/* ppe_hola.c */

extern spe_program_handle_t spe_hola_base; // ref. a la base del mòdul CESOF

/* aqui hi ha l'element al qual es fa referència des de l'SPE */
char buffer[512]; 

int main() {

 int rc, estat;

 speid_t spe_id;

 /* aquí carreguem i llancem el programa de l'SPE */ 
 spe_id = spe_create_thread( 0, &spe_hola_base, 0, NULL, -1, 0);

 rc = spe_wait(spe_id, &estat, 0);

 printf("cadena retornada per spe_hola: %s\n", buffer);

 return estat;
}

Primer es compila (spu-gcc) el font de l'SPE i s'ensambla (spu-gas) la taula TOE. Es linken els objectes (spu-gcc) i l'executable s'embolcalla (embedspu) com a objecte, especificant un identificador de base que el PPE emprarà per a carregar-lo, obtenint un mòdul objecte CESOF (executable embolcallat) per a linkar-lo amb el programa PPE.

$ spu-gcc -c spe_hola.c
$ spu-gas spe_hola_toe.s -o spe_hola_toe.o

#***** linka els objectes anteriors obtenint l'executable spe_hola
$ spu-gcc -o spe_hola spe_hola.o spe_hola_toe.o

#***** embolcalla l'executable amb l'identificador de base obtenint el mòdul CESOF
$ embedspu spe_hola_base spe_hola spe_hola_csf.o

Posteriorment es compila el programa del PPE (ppu-gcc) i es linka el resultat amb el mòdul CESOF (ppu-gcc altre cop) omplint la taula TOE amb les referències a l'espai del PPE dels sufixos de les etiquetes _EAR_ obtenint l'executable conjunt final.

#****** compila ppe_hola.c
$ ppu-gcc -c ppe_hola.c

#***** encaixa spe_hola_csf.o dins ppe_hola obtenint l'executable final cell_hola
$ ppu-gcc -o cell_hola ppe_hola spe_hola_csf.o

Sistemes amb processador Cell[modifica | modifica el codi]

PlayStation 3[modifica | modifica el codi]

Des del 23 de març de 2007 estarà disponible a Europa la consola de jocs PlayStation 3 que incorpora el processador Cell.

Encara que curta de memòria RAM (256MB en les versions inicials) és una plataforma interessant per als desenvolupament d'aplicacions per a les SPU del Cell.

Per a fer-la servir com a plataforma de desenvolupament cal instal·lar-hi el sistema operatiu Linux amb les variants explicades a l'article Linux a la PlayStation 3. En acabat hi instal·larem el kit de desenvolupament Cell BE SDK[4] i l'IDE[5] basat en l'Eclipse.

Les targes IBM BladeCenter QS20[modifica | modifica el codi]

Des del 12 de setembre de 2006 estan disponibles[6] al mercat les targes IBM BladeCenter QS20.[7]

Referències[modifica | modifica el codi]

  1. LBNL - El Potencial del Cell per al Càlcul Científic (PPT) (anglès)
  2. LBNL - El Potencial del Cell per al Càlcul Científic (PDF) (anglès)
  3. Prototipus ordinador targeta (ang.: blade server) amb dos processadors (anglès)
  4. Cell BE Software Development Kit v. 2.0 (anglès)
  5. IBM Integrated Development Environment for Cell Broadband Engine SDK (anglès)
  6. Servidors Cell de IBM surten a la palestra (anglès)
  7. IBM - IBM BladeCenter QS20 (anglès)

Enllaços externs[modifica | modifica el codi]

Presentacions[modifica | modifica el codi]


Recursos[modifica | modifica el codi]


Articles[modifica | modifica el codi]


A fons[modifica | modifica el codi]


Programació[modifica | modifica el codi]


Aplicacions[modifica | modifica el codi]


Cursets i aportacions sobre Cell a la xarxa[modifica | modifica el codi]

Eines[modifica | modifica el codi]

Notícies[modifica | modifica el codi]


Projectes[modifica | modifica el codi]