Cell
Per a altres significats, vegeu «Cell (desambiguació)». |
Cell | |
---|---|
Desenvolupador | Sony, Sony Interactive Entertainment, Toshiba i IBM |
Dissenyador | Sony, Toshiba i IBM |
Llançament | 2007 |
Característiques de CPUs | |
Conjunt d'instruccions | Power Architecture (en) |
Format per | |
Power Processing Element (en) |
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]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]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).
Tanmateix 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 en cas de no cabre-hi tot.
Programari de simulació
[modifica]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]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 motxilla, per a poder-lo llançar. El format d'aquesta motxilla 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 /* aquí 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'acobla (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]PlayStation 3
[modifica]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 targetes IBM BladeCenter QS20
[modifica]Des del 12 de setembre de 2006 estan disponibles[6] al mercat les targetes IBM BladeCenter QS20.[7]
Referències
[modifica]- ↑ LBNL - El Potencial del Cell per al Càlcul Científic (PPT) Arxivat 2006-09-16 a Wayback Machine. (anglès)
- ↑ LBNL - El Potencial del Cell per al Càlcul Científic (PDF) Arxivat 2007-04-18 a Wayback Machine. (anglès)
- ↑ Prototipus ordinador targeta (ang.: blade server) amb dos processadors (anglès)
- ↑ Cell BE Software Development Kit v. 2.0 Arxivat 2007-03-11 a Wayback Machine. (anglès)
- ↑ IBM Integrated Development Environment for Cell Broadband Engine SDK Arxivat 2007-03-11 a Wayback Machine. (anglès)
- ↑ Servidors Cell de IBM surten a la palestra (anglès)
- ↑ IBM - IBM BladeCenter QS20 (anglès)
Enllaços externs
[modifica]- Prototipus ordinador targeta (ang.: blade server) amb dos processadors (anglès)
- Anandtech - Entendre el processador Cell (anglès)
- IBM - Tecnologia avançada de compilació per a explotar el rendiment de l'arquitectura Cell Broadband Engine™ (anglès)
- IBM - Deslliurant la potència del microprocessador Cell (anglès)
- Recerca Unió Europea - Projecte ACOTES: Advanced Compiler Technologies for Embedded Streaming. (anglès) La UPC hi participa. El projecte, basat en el Cell, pretén millorar l'eficiència del programador en aplic. de tractament de corrents de dades en processament paral·lel.