grundlagen der cell programmierungra.ziti.uni-heidelberg.de/pages/student_work/seminar/ws... ·...
TRANSCRIPT
![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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/1.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/2.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/3.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/4.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/5.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/6.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/7.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/8.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/9.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/10.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/11.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/12.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/13.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/14.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/15.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/16.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/17.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/18.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/19.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/20.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/21.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/22.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/23.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/24.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/25.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/26.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/27.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/28.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/29.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/30.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/31.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/32.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/33.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/34.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/35.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/36.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/37.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/38.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/39.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/40.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/41.jpg)
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,](https://reader034.vdocuments.mx/reader034/viewer/2022050217/5f638bf08a2dfc3626104a90/html5/thumbnails/42.jpg)
33
Fragen ?