Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... ·...

42
1 Grundlagen der CELL Programmierung Seminarvortrag im Rahmen des Seminars Ausgewählte Themen in Hardwareentwurf und OptikWS 2005/2006 von Benjamin Kalisch

Transcript of Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... ·...

Page 1: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

1

Grundlagen der CELLProgrammierung

Seminarvortrag im Rahmen des Seminars

„Ausgewählte Themen in Hardwareentwurf und Optik“

WS 2005/2006

von

Benjamin Kalisch

Page 2: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

2InhaltInhalt

� Was ist Cell

� Erste Generation (Hardware)

� Programmierung

� Spezialregister & Channels

� MFC

� SPE

� Linux und Bibliotheken

� Programmierbeispiel

� SchlussfolgerungenQuelle: [16]

...

...

...

Page 3: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

3

Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein, von Sony Toshiba und IBM entwickelter, heterogener Multi-Core Prozessor.

Ziele

� Hohe Leistung in Multimedia Anwendungen

� Energieeffizienz (GFLOPS/Watt)

• Verzicht auf out-of-order Execution � höherer Takt

Daten

• Transistoren 234 Millionen

• Chip-Fläche 235 mm²

• Technologie 90 nm SOI

Was ist Was ist CellCell

Page 4: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

4

Hardware

Quellen [1], [2], [6], [7], [14], [24]

Page 5: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

5

© IBM[ Quelle: http://www.research.ibm.com/cell/cell_chip.html ]

Erste GenerationErste Generation

Page 6: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

5

© IBM[ Quelle: http://www.research.ibm.com/cell/cell_chip.html ]

Erste GenerationErste Generation

Grundidee:

1 Hauptprozessorunterstützt von 8„Anwendungs-beschleunigern“

Page 7: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

5

© IBM[ Quelle: http://www.research.ibm.com/cell/cell_chip.html ]

Erste GenerationErste Generation

Grundidee:

1 Hauptprozessorunterstützt von 8„Anwendungs-beschleunigern“

SSXXUU

MFCMFC

LLSS

Page 8: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

6

© IBM[ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] © IBM

Erste Generation Erste Generation -- PPEPPEPower Processor Element (PPE)

� L2 Cache: 512kB, kohärent

� Optimierter 64bit POWER Prozessor

• 2-way simultaneous Multithreading

• SIMD Erweiterung (AltiVec)

• kompatibel zu POWER Anwendungen

• Führt das Betriebssystem aus

Page 9: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

7

© IBM[ Quelle: http://www.research.ibm.com/cell/cell_chip.html ]

Erste Generation Erste Generation -- SPE (SXU)SPE (SXU)Synergistic Processing Element (SPE)

Synergistic Execution Unit (SXU)

� SIMD Prozessor auf 128bit Vektoren� 4-Wege SIMD Einheit

� Register File 128 Einträge à 128bit

� Loop-unrolling

� Instruktionen ähnlich AltiVec

� Hauptspeicherzugriff nur per DMA

Page 10: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

8

© IBM[ Quelle: http://www.research.ibm.com/cell/cell_chip.html ]

Erste Generation Erste Generation -- SPE (LS)SPE (LS)Synergistic Processing Element (SPE)

Local Store (LS)

� 256kB für Instruktionen und Daten

� Single ported SRAMZugriffsprioritäten Granularität1. DMA 128B2. Load + Store 16B3. Instruction Fetch 128B

� Abgebildet in Hauptspeicher Domäne

� Lokaler Zugriff: Keine Adressübersetzung

Kein Adressschutz

Page 11: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

9

© IBM[ Quelle: http://www.research.ibm.com/cell/cell_chip.html ]

Erste Generation Erste Generation -- SPE (MFC)SPE (MFC)Synergistic Processing Element (SPE)

Memory Flow Controller (MFC)

� DMA Controller inklusive MMU

� Transfergrößen 1B bis 16kBAlignment 128 Byte

� 2 Befehls Queues: lokal � SPU Queue (16 E.)

global � Proxy Queue (8 E.)

� Kommunikation zum MFC:lokal � Channel Interfaceglobal � MMIO Register

Quelle: [24]

Page 12: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

10

Programmierung

Quellen

Allgemein [22], [13], [17], [25], [26]

Skalar, SIMDization [19], [20], [21]

MFC, Channels [24]

Page 13: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

11MMIO Register MMIO Register (1/3)(1/3)

32bit Spezialregister sind in Hauptspeicherdomäne verfügbar.

Kommunikationsregister

� SPU_Out_Mbox Nachrichten SPE � PPE

� SPU_In_Mbox Nachrichten PPE � SPE (Queue)

� SPU_Sig_Notify_1(/2) Kommunikation SPE � SPE oder I/O

Modi: „Logical-Or“ Many-to-One

„Overwrite“ One-to-One

� MFC_MSSync Stellt Abschluss ausstehender DMA Befehle sicher

� Wichtig für sicheren Prozesswechsel

Memory Mapped I/O Register

C-Mnemonics

Page 14: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

12MMIO Register MMIO Register (2/3)(2/3)

Adressierung relativ zu BE_MMIO_Base

DMA Befehlsregister

Beispiel: Reihenfolge für DMA Befehl initialisiert durch PPE

1. S: Local Store Adresse � MFC_LSA

2. S: Hauptspeicheradresse � MFC_EAL (+ MFC_EAH)

3. S: Größe und Tag zur Kontrolle � MFC_Size_Tag

4. S: Auszuführender Befehl � MFC_ClassID_CMD

� Startet Hinzufügversuch

5. L: Hinzufügen erfolgreich? MFC_CMDStatus

DMA Informationsregister

� Tag-Gruppe ausgeführt? Prxy_TagStatus

PPE Interrupt möglich

Adresse SPE(n):

BE_MMIO_Base+ n � 0x80000+ 0x43004

Page 15: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

13MMIO Register MMIO Register (3/3)(3/3)

SPE Kontrollregister

� SPU_NPC LS Adresse der nächsten InstruktionNur gültig, wenn SPU idle (SPU_Status[R] = 0)

� SPU_RunCntl Startet und Stoppt SPU

• Stop Request � Stoppt SPE

• Run Request � Startet SPE bei SPU_NPC

� SPU_Status SPE Status Register, wichtige Bitfelder:

� SPU angehaltenStop-and-Signal InstruktionP

SPU_Status enthält in diesem Fall auch den Stoppcode

Ungültige Instruktion

SPU running

Bedeutung (falls Bit = 1)

R

Bit

� SPU angehaltenI

Page 16: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

14SPU SPU Channel Channel InterfaceInterface

Registerinhalte bei MMIO und Channel Interface größtenteils identisch.

Unterschiede: Store+Load/DMA Befehle Channel Read/Write Befehle

SPU Assembler

RDCH RT, CH Channel CH � Register RT

WRCH CH, RA Register RA � Channel CH

RCHCNT RT, CH #Einträge in CH � Register RT

SPU Channel C-Intrinsics

d = spu_readch( channel );

d = spu_readchcnt( channel ); d,a = u32

spu_writech( channel, a );

Nichts, wrch blockiert bis Platz istMFC_CMDStatus

MFC_Size & MFC_TagIDMFC_Size_Tag

Channel ÄquivalentMMIO Register

Page 17: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

15MFC ProgrammierungMFC ProgrammierungSPU DMA C-Intrinsics

� spu_mfcdma64 (ls, eahi, ealow, size, tag, cmd);

� d = spu_mfcstat( type );

MFC Assembler Befehle (cmd):

MFC_PUTLLC_CMDAtomic put, entspricht PowerPC stwcxputllc

MFC_GETLLAR_CMDAtomic get, entspricht PowerPC lwarxgetllar

MFC_BARRIER_CMDErzeugt Speicherbarrierebarrier

MFC_GET*_CMDKopiert: LS Hauptspeicherget*

MFC_PUTL_CMDDMA Befehlsliste aus dem LS (nur SPU)� putl

MFC_PUTB_CMDOrdnet diesen Befehl relativ zu vorherigen� putb

MFC_PUTS_CMDStartet SPU nach Kopieren (nur Proxy)� puts

MFC_PUT_CMDKopiert: LS ���� Hauptspeicherput

Page 18: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

15MFC ProgrammierungMFC ProgrammierungSPU DMA C-Intrinsics

� spu_mfcdma64 (ls, eahi, ealow, size, tag, cmd);

� d = spu_mfcstat( type );

MFC Assembler Befehle (cmd):

MFC_PUTLLC_CMDAtomic put, entspricht PowerPC stwcxputllc

MFC_GETLLAR_CMDAtomic get, entspricht PowerPC lwarxgetllar

MFC_BARRIER_CMDErzeugt Speicherbarrierebarrier

MFC_GET*_CMDKopiert: LS Hauptspeicherget*

MFC_PUTL_CMDDMA Befehlsliste aus dem LS (nur SPU)� putl

MFC_PUTB_CMDOrdnet diesen Befehl relativ zu vorherigen� putb

MFC_PUTS_CMDStartet SPU nach Kopieren (nur Proxy)� puts

MFC_PUT_CMDKopiert: LS ���� Hauptspeicherput

Channel writes:ls � MFC_LSA

eahigh � MFC_EAH

ealow � MFC_EAL

size � MFC_Size

tag � MFC_TagID

cmd � MFC_CMD

Page 19: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

16SPE ProgrammzuweisungSPE Programmzuweisung

Page 20: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

16SPE ProgrammzuweisungSPE Programmzuweisung

Einige Alternativen

1. Instr. & Daten direkt per store

2. Interrupt auf PPE möglich

3. Kann man sich mit getbs sparen

4. Stop-and-Signal InstruktionAssembler stop u14

� Interrupt auf PPE

1.

2.

3.

4.

Page 21: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

17SPE Instruktionssatz (Auszug)SPE Instruktionssatz (Auszug)LS Instruktionen

lqx rt, ra, rb Load Quadword

stqx rt, ra, rb Store Quadword

Integer Instruktionen

a rt, ra, rb Add Word

Logik Instruktionen

xor rt, ra, rb Logical XOR

Shift and Rotate Instruktionen

rotqby rt, ra, rb Rotate Quadword left by Bytes

Compare and Branch Instruktionen

ceq rt, ra, rb Compare Equal Word

brz rt, i16 Branch if zero

Floating Point Instruktionen

fma rt, ra, rb, rc Floating Point Multiply and Add

fcgt rt, ra, rb Floating Point Compare Greater Than

Kontroll Instruktionen

Channel Instruktionen

Page 22: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

18Spezielles an Spezielles an SPEsSPEs

� SPE Error-Handling & System-Calls nur auf PPE � Weiterleitung

� Run-to-Completion Nutzung empfohlen (preemptive möglich)

� Branch-Hint Instruktion

Verbessert Static Branch Prediction (‘not taken‘)

• Rechtzeitiger und korrekter Hint � keine Penalty

• Maximal ein ausstehender Branch-Hint

hbr s11, ra

hbrp Instruction-Fetch-HintErhöht I-Fetch Priorität

Page 23: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

19Predication Predication auf auf SPEsSPEs

� Bitwise Select

Vermeidung kleiner Branches durch Predication

Assembler: selb rt, ra, rb, rc

C-Intrinsic: d = spu_sel(a, b, pattern);

Beispiel:

cmp x � cond

add y � d+a

add z � d+1

selb d, z, y, x

cmp x � cond

bra x, else

then: add d � d+1

bra done

else: add d � d+a

done:

Page 24: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

20SkalararithmetikSkalararithmetik auf auf SPEsSPEs

� SPEs besitzen keine dedizierte Skalarlogik

� LS Zugriffe 16B aligned + Register 16B breit

� Position in Register = Offset im LS

Bsp.1: a[0] = c[0] + b[0] �

Bsp.2: a[1] = c[2] + b[3] �[i] = Offset relativ zum 16B Alignment

Quelle: [19]

Page 25: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

20SkalararithmetikSkalararithmetik auf auf SPEsSPEs

� SPEs besitzen keine dedizierte Skalarlogik

� LS Zugriffe 16B aligned + Register 16B breit

� Position in Register = Offset im LS

Bsp.1: a[0] = c[0] + b[0] �

Bsp.2: a[1] = c[2] + b[3] �[i] = Offset relativ zum 16B Alignment

Quelle: [19]

Add

Page 26: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

20SkalararithmetikSkalararithmetik auf auf SPEsSPEs

� SPEs besitzen keine dedizierte Skalarlogik

� LS Zugriffe 16B aligned + Register 16B breit

� Position in Register = Offset im LS

Bsp.1: a[0] = c[0] + b[0] �

Bsp.2: a[1] = c[2] + b[3] �[i] = Offset relativ zum 16B Alignment

Quelle: [19]

Add

Page 27: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

20SkalararithmetikSkalararithmetik auf auf SPEsSPEs

� SPEs besitzen keine dedizierte Skalarlogik

� LS Zugriffe 16B aligned + Register 16B breit

� Position in Register = Offset im LS

Bsp.1: a[0] = c[0] + b[0] �

Bsp.2: a[1] = c[2] + b[3] �[i] = Offset relativ zum 16B Alignment

Quelle: [19]

Add

RotateAdd

� Lösung: Register Rotieren

Speichern auch problematisch

a[1] geändert, was mit a[0],a[2],a[3] ?

Page 28: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

20SkalararithmetikSkalararithmetik auf auf SPEsSPEs

� SPEs besitzen keine dedizierte Skalarlogik

� LS Zugriffe 16B aligned + Register 16B breit

� Position in Register = Offset im LS

Bsp.1: a[0] = c[0] + b[0] �

Bsp.2: a[1] = c[2] + b[3] �[i] = Offset relativ zum 16B Alignment

Quelle: [19]

Add

RotateAdd

� Lösung: Register Rotieren

Speichern auch problematisch

a[1] geändert, was mit a[0],a[2],a[3] ?

� Lösung: Read, Insert, Write

Page 29: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

20SkalararithmetikSkalararithmetik auf auf SPEsSPEs

� SPEs besitzen keine dedizierte Skalarlogik

� LS Zugriffe 16B aligned + Register 16B breit

� Position in Register = Offset im LS

Bsp.1: a[0] = c[0] + b[0] �

Bsp.2: a[1] = c[2] + b[3] �[i] = Offset relativ zum 16B Alignment

Quelle: [19]

Add

RotateAdd

� Lösung: Register Rotieren

Speichern auch problematisch

a[1] geändert, was mit a[0],a[2],a[3] ?

� Lösung: Read, Insert, Write

Einfachere Lösung für Beides:

Pro Skalar 16B und Position 0

GCC: float example __attribute__ ((aligned (16)));

Page 30: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

21

Linux und Bibliotheken

Quellen

Linux [3], [4], [18]

libspe [11]

spu_intrinsics [13]

Page 31: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

22

� Anpassungen: Spezieller Interrupt Controller und SPEs

� SPE Thread Verwaltung durch SPU File System (spufs)

� Verzeichnisse entsprechen logischem SPE Kontext

� Mapping auf SPEs übernimmt BS (Virtualisierung)

� SPU starten: System-Call mit Parametern auf run

Übergabepointer auf: struct spufs_run_arg {u32 npc;u32 status; };

� Aufrufender Thread blockiert

Linux Linux auf auf CellCell

Outb. Inter. MBox

Outbound MBox

Local Store

Register File

RUN

Inbound MBoxQuelle: [3]

Page 32: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

23libspelibspe.h .h (1/2)(1/2)

libspe.h = SPE Runtime Management Library

� Ist PPE C-Bibliothek

� POSIX-Thread ähnliche SPE Nutzung auf User-Level Basis

� Unterscheidung: SPE Group SPE Threadspe_gid_t speid_t

� Gang-Scheduling für Gruppen möglich

Kommunikationsfunktionen:

u32 = spe_read_out_mbox( speid );

spe_write_in_mbox( speid, u32 );

spe_write_signal( speid, reg, u32 );

Page 33: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

24libspelibspe.h .h (2/2)(2/2)

Verwaltungsfunktionen:

program* = spe_open_image( *filename );

gid = spe_create_group( policy, priority, spe_events );

speid = spe_create_thread( gid, *program, *argp, *envp, mask, flags );

succ = spe_wait( speid, *status, options );

Funktionen zum Zugriff auf SPE Ressourcen (z.B.)

void* = spe_get_ls( speid );

Ändernung gewählter Einstellungen (z.B.)

succ = spe_set_affinity( speid, mask );

Form einer Thread Funktion

int main( speid, argp, envp );

Page 34: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

25spuspu__intrinsicsintrinsics.h.h

� Ist SPE C-Bibliothek

� Enthält alle bisher gezeigten C-Intrinsics

� Führt Vektor-Datentypen ein

vector unsigned int vec_uint4

vector float vec_float4

qword

� Ermöglicht direkte Vektor-Operationen

d = spu_add(a, b); //a, b, c, d Vektoren

d = spu_madd(a, b, c);

d = spu_compeq(a, b);

Page 35: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

26Programmierbeispiel PPEProgrammierbeispiel PPE

/* --------------------------------------- context.h --------------------------------------- */

typedef struct {

vector float pos;

vector float vel;

float delta_t;

} context;

/* ------------------------------------ ppeprogram.c ------------------------------------ */

extern spe_program_handle_t speprogram;

int main() {

int status;

context ctx;

speid_t speid;

// [ . . . ]

speid = spe_create_thread(0, &speprogram, &ctx, NULL, -1, 0);

(void) spe_wait(speid, &status, 0);

}

Page 36: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

27Programmierbeispiel SPEProgrammierbeispiel SPE

/* ------------------------------------ speprogram.c ------------------------------------ */

int main(unsigned long long spu_id, unsigned long long parm) {

unsigned int tag_id = 0;

vector float delta_t_vec;

context ctx;

spu_mfcdma32(&ctx, parm, sizeof(context), tag_id, MFC_GET_CMD);

(void) spu_mfcstat(2);

delta_t_vec = spu_splats(ctx.delta_t);

ctx.pos = spu_madd(ctx.vel, delta_t_vec, ctx.pos);

spu_mfcdma32(&ctx, parm, sizeof(context), tag_id, MFC_PUT_CMD);

(void) spu_mfcstat(2);

}

delta_tdelta_tdelta_tdelta_t

Page 37: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

28

Schlussfolgerungen

Page 38: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

29SchlussfolgerungenSchlussfolgerungen

� MMIO Register und Channels wichtiger Bestandteil der Architekturausnutzung

� In Hochsprache (C/C++) programmierbar

� Höherer Programmieraufwand

• Vereinfacht durch Bibliotheken

• Mehraufwand = Performance

• XL C Compiler

� Hohe Maximalperformance

• SP FP 204 GFLOPS

• DP FP 20 GFLOPS

Quelle [26]

SP FP MatrixmultiplikationP4 (SSE3, 3.2GHz): 25.6GFLOPS

3.2 GHZ Cell:

Page 39: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

30QuellenQuellen

“Hardware and Software Architectures for the Cell Broadband Engine processor”

Michael Day, Peter Hofstee

http://www.casesconference.org/cases2005/pdf/Cell-tutorial.pdf

[8]

“Introduction to the Cell multiprocessor”

Autoren: J.A. Kahle, M.N. Day, H.P. Hofstee, C.R. Johns, T.R. Maeurer, D. Shippy

http://www.research.ibm.com/journal/rd/494/kahle.html

[7]

“Cell Architecture Explained Version 2”

Autor: Nicholas Blachford

http://www.blachford.info/computer/Cell/Cell0_v2.html

[6]

“Just like being there: Papers from the Fall Processor Forum 2005: Unleashing the power of the Cell Broadband Engine”

Autor: developerWorks

http://www-128.ibm.com/developerworks/power/library/pa-fpfunleashing/

[5]

“Meet the Experts: Arnd Bergmann on Cell”

Autoren: Arnd Bergmann, developerWorks

http://www-128.ibm.com/developerworks/power/library/pa-expert4

[4]

“Spufs: The Cell Synergistic Processing Unit as a virtual file system”

Autor: Arnd Bergmann

http://www-128.ibm.com/developerworks/power/library/pa-cell/

[3]

“The Design and Implementation of a First-Generation CELL Processor”

Autoren: D. Pham, S. Asano, M. Bollinger, M.N. Day, H.P. Hofstee, C. Johns, J. Kahle, A. Kameyama, J. Keaty, Y. Masubuchi, M. Riley, D. Shippy, D. Stasiak, M. Suzuoki, M. Wang, J. Warnock, S. Weitzel, D. Wendel, T. Yamazaki, K. Yazawa

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/7FB9EC5D5BBF51ED87256FC000742186

[2]

„A Streaming Processing Unit for a CELL Processor“

Autoren: B. Flachs, S. Asano, S.H. Dhong, P. Hofstee, G. Gervais, R. Kim, T. Le, P. Liu, J. Leenstra, J. Liberty, B. Michael, H. Oh, S.M. Mueller, O. Takahashi, A. Hatakeyama, Y. Watanabe, N. Yano

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/E815CC047A60914687256FC000734156

[1]

Page 40: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

31QuellenQuellen

“Unleashing the Power: A programming example of large FFTs on Cell“

Autoren: Alex Chow, Gordon Fossum, Daniel A.Brokenshire

http://www.power.org/news/events/barcelona/

[16]

“Porting the GNU Tool Chain to the Cell Architecture”

Autor: Ulrich Weigand

http://www.gccsummit.org/2005/2005-GCC-Summit-Proceedings.pdf

[15]

“Cell Moves into the Limelight”

Autor: Kevin Krewell

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/D9439D04EA9B080B87256FC00075CC2D

[14]

“SPU C/C++ Language Extensions”

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/30B3520C93F437AB87257060006FFE5E[13]

“Optimizing Compiler for a CELL Processor”

Autoren: Alexandre E. Eichnberger, Kathryn O’Brien, Kevin O’Brian, Peng Wu, Tong Chen, Peter H. Oden, Daniel A. Prenner, Janice C. Shepherd, Byoungro So, Zehra Sura, Amy Wang, Tao Zhang, Peng Zhao, Michael Gschwind

http://cag.csail.mit.edu/crg/papers/eichenberger05cell.pdf

[12]

“SPE Runtime Management Library”

http://www.bsc.es/projects/deepcomputing/linuxoncell/development/release2.0/libspe/libspe_v1.0.pdf[11]

“CELL: A New Platform for Digital Entertainment”

Autoren: Dominic Mallinson, Mark DeLoura

http://www.research.scea.com/research/html/CellGDC05/index.html

[10]

“A remote Procedure Call Implementation for the Cell Broadband Architecture”

Part of: “Cell Broadband Engine (Cell BE) Software Sample and Library Source Code”

http://www.alphaworks.ibm.com/tech/cellsw?open&S_TACT=105AGX16&S_CMP=DWPA

[9]

Page 41: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

32QuellenQuellen

“Synergistic Processor Unit Instruction Set Architecture”

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/76CA6C7304210F3987257060006F2C44/[25]

“Cell Broadband Engine Architecture”

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/1AEEE1270EA2776387257060006E61BA[24]

Cell Broadband Engine Architecture and its first implementation – A Performance View

http://www-128.ibm.com/developerworks/power/library/pa-cellperf/[26]

“Meet the experts: Alex Chow on Cell Broadband Engine programming models”

Alex Chow

http://www-128.ibm.com/developerworks/power/library/pa-expert8/

[23]

“Cell Broadband Engine Programming Tutorial”

Cell Broadband Engine Architecture Joint Software Reference Environment Series[22]

”Vectorization for SIMD Architectures with Alignment Constraints”

Alexandre Eichenberger, Peng Wu, Kevin O’Brian

http://www.research.ibm.com/cellcompiler/slides/pldi04.pdf

[21]

”An Integrated Simdization Framework using virtual vectors”

Peng Wu, Alexandre Eichenberger, Amy Wang, Peng Zhao

http://www.research.ibm.com/cellcompiler/slides/ics05.pdf

[20]

“Efficient SIMD Code Generation for Runtime Alignment & Length Conversion”

Peng Wu, Alexandre Eichenberger, Amy Wang

http://www.research.ibm.com/cellcompiler/slides/cgo05.pdf

[19]

“Cell Broadband Engine Linux Reference Implementation Application Binary Interface Specification”

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/44DA30A1555CBB73872570B20057D5C8/[18]

“SPU Application Binary Interface Specification”

http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/02E544E65760B0BF87257060006F8F20[17]

Page 42: Grundlagen der CELL Programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... · 2017-09-08 · 3 Die Cell Broadband Engine Architecture (CBEA), kurz Cell, ist ein,

33

Fragen ?