Grundlagen der CELL Programmierung



Ähnliche Dokumente
Cell Broadband Engine

Outline. Cell Broadband Engine. Application Areas. The Cell

Cell and Larrabee Microarchitecture

Der Cell Prozessor. Seminarvortrag von Viacheslav Mlotok. SS2005 Universität Mannheim, Lehrstuhl für Rechnerarchitektur

4D Server v12 64-bit Version BETA VERSION

Cell Broadband Engine & CellSs: ein Programmiermodel für den Cell Prozessor

Instruktionssatz-Architektur

Netgauge auf Cell BE

Jürg Gutknecht, SI und ETH Zürich, April 2015

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Mikrocontroller Grundlagen. Markus Koch April 2011

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Programmierung für Mathematik (HS13)

Die Mikroprogrammebene eines Rechners

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Protected User-Level DMA in SCI Shared Memory Umgebungen

Einführung in die C-Programmierung

Über die Cell/B.E.-Architektur: Optionen zur Generierung von Programm-Traces

Multicore-Architekturen

Profiling und Coverage mit GNU und Bare Embedded Systems

Version 0.3. Installation von MinGW und Eclipse CDT

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Einführung in die Programmierung mit C++

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1 Proseminar: Konzepte von Betriebssystem-Komponenten. Thema: Server OS AS/400 Referend: Sand Rainer. Server OS - AS/400

5 Speicherverwaltung. bs-5.1 1

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren

Softwarelösungen: Versuch 4

Die Marvel, ein gedrosselter Supercomputer

Komponentenbasierter Taschenrechner mit CORBA

Javakurs 2013 Objektorientierung

LabVIEW Power Programming. Amadeo Vergés

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung

Einführung in die technische Informatik

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

1.1. Apache / Tomcat via JK JNI ## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED

QUICK INSTALLATION GUIDE

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

App CCTV INET VIEWER. Folgende Funktionen stehen in der App zur Verfügung:

Multiuser Client/Server Systeme

AXIGEN Mail Server. s per Smarthost versenden s per Pop3 empfangen. Produkt Version: Dokument Version: 1.2

x86 Open Source Virtualisierungstechniken Thomas Glanzmann

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Einführung in die Programmierung

Systemvoraussetzungen Stand

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

desk.modul : WaWi- Export

Grundlagen der Rechnerarchitektur

C++ mit Eclipse & GCC unter Windows

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Zählen von Objekten einer bestimmten Klasse

Backup der Progress Datenbank

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Übung: Verwendung von Java-Threads

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Übungen zur Softwaretechnik

Installationshinweise BEFU 2014

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Vorkurs C++ Programmierung

Bedienungsanleitung Version 1.0

Z- module telematic I. Software Overview Johannes Schütt

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Installations- und Bedienungsanleitung für Macro Excel_Table Version 10

KIP Druckerstatus Benutzerhandbuch KIP Druckerstatus Installations- und Benutzerhandbuch

Dynamic Ressource Management

DLLs (dynamic loaded libraries) mit MingW erstellen

Karlsruher Institut für Technologie

Computer-Architektur Ein Überblick

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

CORBA. Systemprogrammierung WS

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Tutorium Rechnerorganisation

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Zugriff auf die Modul-EEPROMs

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Diplomarbeit Antrittsvortrag

Modellierung und Programmierung 1

Technische Dokumentation SilentStatistikTool

Technische Informatik 2 Adressierungsarten

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

SMART Newsletter Education Solutions April 2015

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

1. Übung zu "Numerik partieller Differentialgleichungen"

BANKETTprofi Telefonschnittstelle

C/C++-Programmierung

1 Installation QTrans V2.0 unter Windows NT4

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Test integrierter Schaltungen

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

C# im Vergleich zu Java

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Erstellen einer in OWA (Outlook Web App)

Installationsanleitung

Agenda. Ziel Problematik OS-Installation Softwareverteilung Inventarisierung Stufenplan

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

Transkript:

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

Inhalt 2 Was ist Cell Erste Generation (Hardware) Programmierung Spezialregister & Channels......... MFC SPE Linux und Bibliotheken Programmierbeispiel Schlussfolgerungen Quelle: [16]

Was ist Cell 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 Chip-Fläche Technologie 234 Millionen 235 mm² 90 nm SOI

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

Erste Generation 5 [ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] IBM

Erste Generation 5 Grundidee: 1 Hauptprozessor unterstützt von 8 Anwendungsbeschleunigern [ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] IBM

Erste Generation 5 Grundidee: 1 Hauptprozessor unterstützt von 8 Anwendungsbeschleunigern S X U MFC L S [ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] IBM

Erste Generation - PPE 6 Power 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 [ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] IBM

Erste Generation - 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 7 [ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] IBM

Erste Generation - SPE (LS) Synergistic Processing Element (SPE) Local Store (LS) 256kB für Instruktionen und Daten Single ported SRAM Zugriffsprioritäten Granularität 1. DMA 128B 2. Load + Store 16B 3. Instruction Fetch 128B 8 Abgebildet in Hauptspeicher Domäne Lokaler Zugriff: Keine Adressübersetzung Kein Adressschutz [ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] IBM

Quelle: [24] Erste Generation - SPE (MFC) Synergistic Processing Element (SPE) Memory Flow Controller (MFC) DMA Controller inklusive MMU Transfergrößen 1B bis 16kB Alignment 128 Byte 2 Befehls Queues: lokal SPU Queue (16 E.) global Proxy Queue (8 E.) Kommunikation zum MFC: lokal Channel Interface global MMIO Register 9 [ Quelle: http://www.research.ibm.com/cell/cell_chip.html ] IBM

10 Programmierung Quellen Allgemein [22], [13], [17], [25], [26] Skalar, SIMDization [19], [20], [21] MFC, Channels [24]

MMIO Register (1/3) 11 32bit Spezialregister sind in Hauptspeicherdomäne verfügbar. Memory Mapped I/O Register Kommunikationsregister SPU_Out_Mbox SPU_In_Mbox SPU_Sig_Notify_1(/2) MFC_MSSync Nachrichten SPE PPE Nachrichten PPE SPE (Queue) Kommunikation SPE SPE oder I/O Modi: Logical-Or Many-to-One Overwrite One-to-One Stellt Abschluss ausstehender DMA Befehle sicher Wichtig für sicheren Prozesswechsel C-Mnemonics

MMIO Register (2/3) 12 DMA Befehlsregister Adressierung relativ zu BE_MMIO_Base 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 Adresse SPE(n): BE_MMIO_Base + n 0x80000 + 0x43004 DMA Informationsregister Tag-Gruppe ausgeführt? PPE Interrupt möglich Prxy_TagStatus

MMIO Register (3/3) 13 SPE Kontrollregister SPU_NPC SPU_RunCntl SPU_Status LS Adresse der nächsten Instruktion Nur gültig, wenn SPU idle (SPU_Status[R] = 0) Startet und Stoppt SPU Stop Request Stoppt SPE Run Request Startet SPE bei SPU_NPC SPE Status Register, wichtige Bitfelder: Bit R I P Bedeutung (falls Bit = 1) SPU running Ungültige Instruktion Stop-and-Signal Instruktion SPU angehalten SPU angehalten SPU_Status enthält in diesem Fall auch den Stoppcode

SPU Channel Interface 14 Registerinhalte bei MMIO und Channel Interface größtenteils identisch. Unterschiede: Store+Load/DMA Befehle Channel Read/Write Befehle SPU Assembler RDCH RT, CH WRCH CH, RA RCHCNT RT, CH MMIO Register MFC_Size_Tag MFC_CMDStatus Channel Äquivalent MFC_Size & MFC_TagID Nichts, wrch blockiert bis Platz ist ChannelCH Register RT Register RA ChannelCH #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 );

MFC Programmierung 15 SPU DMA C-Intrinsics spu_mfcdma64 (ls, eahi, ealow, size, tag, cmd); d = spu_mfcstat( type ); MFC Assembler Befehle (cmd): put puts putb putl get* barrier getllar putllc Kopiert: LS Hauptspeicher Startet SPU nach Kopieren (nur Proxy) Ordnet diesen Befehl relativ zu vorherigen DMA Befehlsliste aus dem LS (nur SPU) Kopiert: LS Hauptspeicher Erzeugt Speicherbarriere Atomic get, entspricht PowerPC lwarx Atomic put, entspricht PowerPC stwcx MFC_PUT_CMD MFC_PUTS_CMD MFC_PUTB_CMD MFC_PUTL_CMD MFC_GET*_CMD MFC_BARRIER_CMD MFC_GETLLAR_CMD MFC_PUTLLC_CMD

MFC Programmierung 15 SPU DMA C-Intrinsics spu_mfcdma64 (ls, eahi, ealow, size, tag, cmd); d = spu_mfcstat( type ); MFC Assembler Befehle (cmd): Channel writes: ls MFC_LSA eahigh MFC_EAH ealow MFC_EAL size MFC_Size tag MFC_TagID cmd MFC_CMD put puts putb putl get* barrier getllar putllc Kopiert: LS Hauptspeicher Startet SPU nach Kopieren (nur Proxy) Ordnet diesen Befehl relativ zu vorherigen DMA Befehlsliste aus dem LS (nur SPU) Kopiert: LS Hauptspeicher Erzeugt Speicherbarriere Atomic get, entspricht PowerPC lwarx Atomic put, entspricht PowerPC stwcx MFC_PUT_CMD MFC_PUTS_CMD MFC_PUTB_CMD MFC_PUTL_CMD MFC_GET*_CMD MFC_BARRIER_CMD MFC_GETLLAR_CMD MFC_PUTLLC_CMD

SPE Programmzuweisung 16

SPE Programmzuweisung 16 Einige Alternativen 1. Instr. & Daten direkt per store 2. Interrupt auf PPE möglich 1. 3. Kann man sich mit getbs sparen 4. Stop-and-Signal Instruktion Assembler stop u14 Interrupt auf PPE 3. 2. 4.

SPE Instruktionssatz (Auszug) 17 LS Instruktionen Integer Instruktionen Logik Instruktionen lqx rt, ra, rb stqx rt, ra, rb a rt, ra, rb xor rt, ra, rb Shift and Rotate Instruktionen rotqby rt, ra, rb Compare and Branch Instruktionen ceq rt, ra, rb brz rt, i16 Floating Point Instruktionen Kontroll Instruktionen Channel Instruktionen fma rt, ra, rb, rc fcgt rt, ra, rb Load Quadword Store Quadword Add Word Logical XOR Rotate Quadword left by Bytes Compare Equal Word Branch if zero Floating Point Multiply and Add Floating Point Compare Greater Than

Spezielles an SPEs 18 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-Hint Erhöht I-Fetch Priorität

Predication auf SPEs 19 Bitwise Select Vermeidung kleiner Branches durch Predication Assembler: C-Intrinsic: selb rt, ra, rb, rc d = spu_sel(a, b, pattern); Beispiel: cmp bra x cond x, else then: add d d+1 bra done else: add done: d d+a cmp x cond add y d+a add z d+1 selb d, z, y, x

Skalararithmetik auf SPEs 20 SPEs besitzen keine dedizierte Skalarlogik LS Zugriffe 16B aligned + Register 16B breit Position in Register = Offset im LS Bsp.1: Bsp.2: a[0] = c[0] + b[0] a[1] = c[2] + b[3] [i] = Offset relativ zum 16B Alignment Quelle: [19]

Skalararithmetik auf SPEs 20 SPEs besitzen keine dedizierte Skalarlogik LS Zugriffe 16B aligned + Register 16B breit Position in Register = Offset im LS Add Bsp.1: Bsp.2: a[0] = c[0] + b[0] a[1] = c[2] + b[3] [i] = Offset relativ zum 16B Alignment Quelle: [19]

Skalararithmetik auf SPEs 20 SPEs besitzen keine dedizierte Skalarlogik LS Zugriffe 16B aligned + Register 16B breit Position in Register = Offset im LS Add Bsp.1: Bsp.2: a[0] = c[0] + b[0] a[1] = c[2] + b[3] [i] = Offset relativ zum 16B Alignment Quelle: [19]

Skalararithmetik auf SPEs 20 SPEs besitzen keine dedizierte Skalarlogik LS Zugriffe 16B aligned + Register 16B breit Position in Register = Offset im LS Add Bsp.1: Bsp.2: a[0] = c[0] + b[0] a[1] = c[2] + b[3] [i] = Offset relativ zum 16B Alignment Lösung: Register Rotieren Speichern auch problematisch a[1] geändert, was mit a[0],a[2],a[3]? Quelle: [19] Rotate Add

Skalararithmetik auf SPEs 20 SPEs besitzen keine dedizierte Skalarlogik LS Zugriffe 16B aligned + Register 16B breit Position in Register = Offset im LS Add Bsp.1: Bsp.2: a[0] = c[0] + b[0] a[1] = c[2] + b[3] [i] = Offset relativ zum 16B Alignment Lösung: Register Rotieren Speichern auch problematisch a[1] geändert, was mit a[0],a[2],a[3]? Quelle: [19] Lösung: Read, Insert, Write Rotate Add

Skalararithmetik auf SPEs 20 SPEs besitzen keine dedizierte Skalarlogik LS Zugriffe 16B aligned + Register 16B breit Position in Register = Offset im LS Add Bsp.1: Bsp.2: a[0] = c[0] + b[0] a[1] = c[2] + b[3] [i] = Offset relativ zum 16B Alignment Lösung: Register Rotieren Speichern auch problematisch a[1] geändert, was mit a[0],a[2],a[3]? Quelle: [19] Lösung: Read, Insert, Write Rotate Add Einfachere Lösung für Beides: Pro Skalar 16B und Position 0 GCC: float example attribute ((aligned (16)));

21 Linux und Bibliotheken Quellen Linux [3], [4], [18] libspe [11] spu_intrinsics [13]

Linux auf Cell 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) Quelle: [3] SPU starten: System-Call mit Parametern auf run Übergabepointer auf: struct spufs_run_arg { u32 npc; u32 status; }; Aufrufender Thread blockiert Outb. Inter. MBox Outbound MBox Local Store Register File RUN Inbound MBox

libspe.h (1/2) 23 libspe.h = SPE Runtime Management Library Ist PPE C-Bibliothek POSIX-Thread ähnliche SPE Nutzung auf User-Level Basis Unterscheidung: SPE Group SPE Thread spe_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 );

libspe.h (2/2) 24 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 );

spu_intrinsics intrinsics.h 25 Ist SPE C-Bibliothek Enthält alle bisher gezeigten C-Intrinsics Führt Vektor-Datentypen ein vector unsigned int vector float vec_uint4 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);

Programmierbeispiel PPE 26 /* --------------------------------------- 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); }

Programmierbeispiel SPE 27 /* ------------------------------------ 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 delta_t delta_t_vec = spu_splats(ctx.delta_t); ctx.pos = spu_madd(ctx.vel, delta_t_vec, ctx.pos); delta_t delta_t } spu_mfcdma32(&ctx, parm, sizeof(context), tag_id, MFC_PUT_CMD); (void) spu_mfcstat(2);

Schlussfolgerungen 28

Schlussfolgerungen 29 MMIO Register und Channels wichtiger Bestandteil der Architekturausnutzung In Hochsprache (C/C++) programmierbar Höherer Programmieraufwand Vereinfacht durch Bibliotheken Mehraufwand = Performance SP FP Matrixmultiplikation P4 (SSE3, 3.2GHz): 25.6GFLOPS 3.2 GHZ Cell: XL C Compiler Hohe Maximalperformance SP FP DP FP 204 GFLOPS 20 GFLOPS Quelle [26]

Quellen 30 [1] [2] [3] [4] [5] [6] [7] [8] 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 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 Spufs: The Cell Synergistic Processing Unit as a virtual file system Autor: Arnd Bergmann http://www-128.ibm.com/developerworks/power/library/pa-cell/ Meet the Experts: Arnd Bergmann on Cell Autoren: Arnd Bergmann, developerworks http://www-128.ibm.com/developerworks/power/library/pa-expert4 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/ Cell Architecture Explained Version 2 Autor: Nicholas Blachford http://www.blachford.info/computer/cell/cell0_v2.html 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 Hardware and Software Architectures for the Cell Broadband Engine processor Michael Day, Peter Hofstee http://www.casesconference.org/cases2005/pdf/cell-tutorial.pdf

Quellen 31 [9] [10] [11] [12] [13] [14] [15] [16] 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 CELL: A New Platform for Digital Entertainment Autoren: Dominic Mallinson, Mark DeLoura http://www.research.scea.com/research/html/cellgdc05/index.html SPE Runtime Management Library http://www.bsc.es/projects/deepcomputing/linuxoncell/development/release2.0/libspe/libspe_v1.0.pdf 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 SPU C/C++ Language Extensions http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/30b3520c93f437ab87257060006ffe5e Cell Moves into the Limelight Autor: Kevin Krewell http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/d9439d04ea9b080b87256fc00075cc2d Porting the GNU Tool Chain to the Cell Architecture Autor: Ulrich Weigand http://www.gccsummit.org/2005/2005-gcc-summit-proceedings.pdf 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/

Quellen 32 [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] SPU Application Binary Interface Specification http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/02e544e65760b0bf87257060006f8f20 Cell Broadband Engine Linux Reference Implementation Application Binary Interface Specification http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/44da30a1555cbb73872570b20057d5c8/ Efficient SIMD Code Generation for Runtime Alignment & Length Conversion Peng Wu, Alexandre Eichenberger, Amy Wang http://www.research.ibm.com/cellcompiler/slides/cgo05.pdf An Integrated Simdization Framework using virtual vectors Peng Wu, Alexandre Eichenberger, Amy Wang, Peng Zhao http://www.research.ibm.com/cellcompiler/slides/ics05.pdf Vectorization for SIMD Architectures with Alignment Constraints Alexandre Eichenberger, Peng Wu, Kevin O Brian http://www.research.ibm.com/cellcompiler/slides/pldi04.pdf Cell Broadband Engine Programming Tutorial Cell Broadband Engine Architecture Joint Software Reference Environment Series Meet the experts: Alex Chow on Cell Broadband Engine programming models Alex Chow http://www-128.ibm.com/developerworks/power/library/pa-expert8/ Cell Broadband Engine Architecture http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/1aeee1270ea2776387257060006e61ba Synergistic Processor Unit Instruction Set Architecture http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/76ca6c7304210f3987257060006f2c44/ Cell Broadband Engine Architecture and its first implementation A Performance View http://www-128.ibm.com/developerworks/power/library/pa-cellperf/

Fragen? 33