Cell
De Viquipèdia
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.
Imatge. Incorpora un nucli principal (dit PPE: Power Processor Element) i vuit nuclis addicionals (S.P.E.: Elements de Procés Sinèrgics).
El Processador principal (PPE) es 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.
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.
El Cell te 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.
Taula de continguts |
[edita] Programari de simulació
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].
[edita] Referències de l'SPE a l'espai d'adreces de memòria principal i compilació
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 es 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
[edita] Referències
- ^ LBNL - El Potencial del Cell per al Càlcul Científic (PPT) (anglès)
- ^ LBNL - El Potencial del Cell per al Càlcul Científic (PDF) (anglès)
- ^ Centre de Supercomputació de Barcelona - Linux sobre Cell A Documentació trobareu un tresor de manuals. (anglès)
[edita] Enllaços externs
[edita] Presentacions
- IBM - Processador Cell Broadband Engine : Motivació, Arquitectura, Programació (anglès)
- Interaction, Simulation and Graphics Lab - El Cell Broadband Engine (anglès)
- Prototipus ordinador tarja (ang.: blade server) amb dos processadors (anglès)
[edita] Recursos
- Centre de Supercomputació de Barcelona - Linux sobre Cell A Documentació trobareu un tresor de manuals. (anglès)
- IBM Recerca - El projecte Cell (anglès)
- IBM - Cell Broadband Engine (anglès)
- IBM - Cell BE SDK. Instal·lant l'entorn de programació. Actualització 1.1 (anglès)
- Linux Gentoo - Realització Cell sobre Gentoo/PowerPC (anglès)
[edita] Articles
- Embedded - Una ullada dins el processador Cell (anglès)
- Anandtech - Entendre el processador Cell (anglès)
- Nicholas Blachford - L'Arquitectura Cell explicada (anglès)
[edita] A fons
- IBM - Motors DMA, 1a. Part: Els petits motors que mouen les dades (anglès)
- IBM - Motors DMA, 2a. Part: Des del punt de vista de l'SPE (anglès)
- IBM - Tecnologia avançada de compilació per a explotar el rendiment de l'arquitectura Cell Broadband Engine™ (anglès)
[edita] Programació
- IBM - Deslliurant la potència del microprocessador Cell (anglès)
- Toshiba - Programació i Evaluació de Rendiment del Processador Cell (anglès)
- Kent University - Programant el Cell (anglès)
- IBM - 25 trucs per a un rendiment òptim de les aplicacions (anglès)
- IBM - Depurant sistemes Cell Broadband Engine (anglès)
- IBM - El compilador 'Octopiler' per al Cell (anglès)
[edita] Aplicacions
- Descàrrega i Acceleració de XML en el Cell Broadband Engine (anglès)
- Toshiba mostra aparell de TV basat en el processador Cell decodificant 48 ratjos (ang.: streams) MPEG 2 (anglès)
- Imatge Placa Toshiba
[edita] Notícies
- Cell Processor (anglès)
- Ps3 land (anglès)
[edita] Projectes
- EDN.com - Projecte europeu "ACOTES" impulsa dissenys basats en Cell (anglès) La UPC hi participa. El projecte preten millorar la eficiència del programador en aplic. de tractament de fluxos massius de dades en processament paral·lel.
- Recerca Unió Europea - Projecte ACOTES: Advanced Compiler Technologies for Embedded Streaming. (anglès)
- Repsol persegueix millorar la prospecció seísmica amb el projecte Kaleidoscope (basat en el Cell) El Centre de Supercomputació de Barcelona, l'Stanford Exploration Project de la Universitat de Stanford, i 3DGeo participen en el projecte.