Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Il Processore CELL
Sony Playstation 3
Principali Caratteristiche
Programmabile come un PC convenzionale 8 processori vettoriali indipendenti Bus memoria indipendente Processa 1024bit per ciclo di clock
La Playstation 3 ha un core POWER-PC a 3.2GHz Pu utilizzare istruzioni vettoriali, le AltiVec La sua funzione principale controllare e organizzare i
POWER
Ha un'elettronica molto semplice Dissipa poco calore un processore RISC, ogni istruzione viene eseguita in un solo ciclo di clock Ideale per sistemi compatti e funzioni di controllo
Sono processori RISC con 128 registri da 128bit. Le performance migliori si ottengono utilizzando istruzioni vettoriali (Single Instruction Multiple Data) Ogni SPE ha 256Kb di memoria ad accesso veloce (simile alla cache) Non possono accedere direttamente alla RAM, ogni accesso svolto tramite DMA.
Yellow Dog 5
Installazione
Installare Linux sulla PlayStation 3 simile ai PC tradizionali. Prima di tutto, occorre scaricare:
YDL 5 DVD ISO PS3 OtherOS installer from Sony (otheros.self) YDL bootloader from Terra Soft (otheros.bld)
Prima di iniziare l'installazione vera e propria: necessario avere una chiavetta USB, deve essere creata una directory usbdisk/PS3/otheros, in cui vanno messi otheros.self e otheros.bld
Dal GameOS, partizionare l'HardDisk dal menu System->System Settings->Format Utility selezionando l'opzione Allot 10GB to the Other OS
Installazione
Inserire la chiavetta USB. Dal menu System Settings selezionare Install Other OS Dal menu System Settings selezionare Default System, Spegnere e riaccendere PlayStation 3 Inserire il DVD di YellowDog Al prompt, digirare install oppure installtext...
L'ambiente Linux
Yellow Dog 5 utilizza Enlightenment 17 Sono disponibili tutti i software per linux Utilizza il sistema di pacchetti RPM, e il tool di aggiornamento YUM Sono disponibili molti tool di sviluppo
CELL SDK
Per promuovere questa nuova architettura, IBM ha reso disponibile l'SDK (all'indirizzo: http://www.ibm.com/developerworks/power/cell/ )
L'SDK supporter le future fasi di sviluppo del CELL Comunit OnLine molto attiva
I tool di sviluppo
ppu-gcc compilatore per il codice da eseguire sulla PPU spu-gcc compilatore GNU per il codice da eseguire sulle SPU empedspu compilatore speciale che inserisce codice SPU nel codice PPU spuxlc compilatore IBM ottimizzato per le SPU
Senza codice SPU, la playstation 3 si programma come un normale Quindi, fondamentale che il software sia progettato in modo da
usare le SPU
Esempio: CELL_Hello_World
#include "../hello.h" int main(unsigned long long speid, addr64 argp, addr64 envp) { printf("Hello world, from a SPU!\n"); return 0; }
Esempio: CELL_Hello_World
#include "../hello.h" int main(unsigned long long speid, addr64 argp, addr64 envp) { printf("Hello world, from a SPU!\n"); return 0; }
Esempio: CELL_Hello_World
#include [...] extern spe_program_handle_t hello_spu; spe_gid_t gid; speid_t speids[8]; int status[8]; int main(int argc, char *argv[]) { int i; printf("Hello World!\n"); for (i = 0; i < 8; i++) { speids[i] = spe_create_thread (SPE_DEF_GRP, &hello_spu, NULL, NULL, -1, 0); if (speids[i] == NULL) { fprintf (stderr, "FAILED: spe_create_thread(num=%d, errno=%d)\n", i, errno); exit (3+i); } } for (i=0; i<8; ++i spe_wait(speids[i], &status[i], 0); return 0; }
Ogni SPU gestita attraverso un thread nella PPU Le SPU accedono ai dati (RAM di sistema) attraverso un
Difference Filter
Calcolare la prima derivata: f(i) = p(i) p(i+2)
p(10) p(11) p(12) p(15)
=
128 bit (16 pixels) per ciclo di clock
p(12)
p(13)
p(14)
p(17)
f(10)
f(11)
f(12)
f(15)
> =
> =
lookup table
225 elementi
Man_id: prestazioni
Su un PC convenzionale: