Cell Processor

Transcrição

Cell Processor
Hausarbeit
im Labor des Studienfachs
Rechnerstrukturen
zum Thema
Cell-Prozessor
Betreuer:
Prof. Dr. Thomas Risse
Autoren:
René Büst
(152400)
Manuel Bohlken
(153469)
Florian Brunkhorst
(151581)
Version
2.0
Semester:
Wintersemester 2007 / 2008
Semesterverband:
I7I
Ort, Datum:
Bremen, den 17.März 2008
Rechnerstrukturen
Inhaltsverzeichnis
I.
Inhaltsverzeichnis
I.
Inhaltsverzeichnis ...................................................................................................II
II.
Abbildungsverzeichnis........................................................................................... IV
III.
Quellenverzeichnis................................................................................................. V
IV.
Literaturverzeichnis ............................................................................................. VII
V.
Abkürzungen ........................................................................................................ IX
1.
Einführung .............................................................................................................1
1.1.
Die Entwicklung des Cell-Prozessors .................................................................................... 1
2.
Aufbau des Cell-Prozessors......................................................................................4
3.
Elemente des Cell-Prozessors...................................................................................7
3.1.
Power Processing Element (PPE) ......................................................................................... 7
3.2.
Synergistic Processing Elements (SPE)................................................................................ 10
3.3.
Element Interconnet Bus (EIB) .......................................................................................... 16
3.4.
Memory Interface Controller (MIC) ................................................................................... 16
3.5.
Bus Interface – FlexIO ...................................................................................................... 17
4.
Einsatzgebiete des Cell-Prozessors .........................................................................19
4.1.
Sony Playstation 3 ........................................................................................................... 19
4.2.
Playstation 3 Cluster........................................................................................................ 20
4.3.
Crackstation ................................................................................................................... 22
4.4.
Videoverarbeitung........................................................................................................... 24
4.4.1.
Einführung.................................................................................................................. 24
4.4.2.
Arbeitsablauf des VPR-Systems ..................................................................................... 25
4.4.3.
Programmiermodelle des VPR-Systems.......................................................................... 26
4.4.4.
Block Matching Algorithmus ......................................................................................... 27
4.4.5.
Parallelisierung des Block Matching Algorithmus............................................................. 28
4.4.6.
Ergebnisse der Parallelisierung des Block Matching Algorithmus....................................... 30
4.4.7.
OpenMP..................................................................................................................... 31
4.5.
Adaptive Echtzeitfilterung für digitale Röntgenanwendungen .............................................. 33
4.5.1.
Hintergrund ................................................................................................................ 33
4.5.2.
Hardware ................................................................................................................... 34
4.5.3.
Funktionsweise ........................................................................................................... 35
4.5.4.
Ergebnisse .................................................................................................................. 35
17.März 2008
Seite II
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Inhaltsverzeichnis
4.6.
Objekterkennung in Echtzeit............................................................................................. 36
4.6.1.
Hintergrund ................................................................................................................ 36
4.6.2.
boosting-based detection............................................................................................. 37
4.6.3.
histogram-based tracking ............................................................................................. 38
4.6.4.
Implementierung auf einem Cell-Simulator .................................................................... 39
4.6.5.
Ergebnisse der Implementierung auf einem Cell-Simulator............................................... 40
4.6.6.
Ergebnisse der Implementierung auf einer Playstation 3.................................................. 41
4.7.
SSL-Beschleunigung unter Verwendung der Cell Broadband Engine ...................................... 43
4.7.1.
Einführung.................................................................................................................. 43
4.7.2.
Hintergrund ................................................................................................................ 43
4.7.3.
Der Einsatz des Cell-Prozessors als ein Hardware-Security-Model ..................................... 45
4.7.4.
OpenSSL ..................................................................................................................... 46
4.7.5.
Implementierung......................................................................................................... 47
4.7.6.
Ergebnisse .................................................................................................................. 48
17.März 2008
Seite III
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Abbildungsverzeichnis
II.
Abbildungsverzeichnis
Abbildung 1 Beschriftetes Die-Foto des Cell-Prozessors [@03]................................................5
Abbildung 2 Schematische Darstellung eines Cell-Prozessors [@04] ........................................6
Abbildung 3 Befehlspipeline des PPE [@05] ..........................................................................9
Abbildung 4 Schema des SPEs [@04]..................................................................................10
Abbildung 5 Datenformate in den Registern der SPU [L04] ...................................................11
Abbildung 6 Aufteilung der Befehle auf Execution-Pipelines der SPU [L04].............................12
Abbildung 7 Pipeline der SPU [L01] ....................................................................................13
Abbildung 8 Beispiel für Streamed Processing [@01] ...........................................................14
Abbildung 9 Kommunikation über den MFC [@02] ..............................................................15
Abbildung 10 Konfigurationsmöglichkeiten des Cell-Prozessors [L01] ....................................17
Abbildung 11 Überblick über ein Framework zur Videoverarbeitung und Bereitstellung [L05]..25
Abbildung 12 Videoverarbeitung: (a) Service Modell und (b) Streaming Modell [L05] .............26
Abbildung 13: Block Matching [L05] ...................................................................................27
Abbildung 14: Geschwindigkeitsanalyse des Block Matching Algorythmus [L05].....................30
Abbildung 15 3D-Computertomographie [@21] ..................................................................33
Abbildung 16: Dual Cell Based Board [L10]..........................................................................34
Abbildung 17 (a) Originalaufnahme, (b) gefiltertes Röntgenbild [L10]....................................35
Abbildung 18 Klassifizierung von Versicherungsnehmern [@23] ...........................................37
Abbildung 19 Verfolgung von Gesichtern mittels Histogramm [@25] ....................................38
Abbildung 20: Parallele Erkennung von mehreren SPEs [L09]................................................39
Abbildung 21: Verarbeitungszeit der Objekterkennung und Objektverfolgung [L09] ...............40
Abbildung 22: Versuchsaufbau mit einer Playstation 3 [L09].................................................41
Abbildung 23: Verarbeitungszeit auf der Playstation 3 [L09] .................................................42
Abbildung 24: Objekterkennung und Objektverfolgung [L09]................................................42
Abbildung 25 Prozess zur Erstellung der SPE und PPE Programme [L11] ................................44
Abbildung 26: Zusammenspiel zwischen dem PPE und den SPEs [L11]...................................47
Abbildung 27 Entschlüsselungsdauer von 4096-bit Schlüsseln als Simulation (ein SPE) [L11]....48
Abbildung 28 Entschlüsselungsdauer 1 PPU vs. 1 SPU einer Playstation [L11].........................49
Abbildung 29 Entschlüsselungsdauer 1 PPU vs. 1 SPU einer Playstation [L11].........................49
Abbildung 30 Entschlüsselungsdauer 2 PPU vs. 16 SPU eines Cell-Blade-Centers [L11] ............49
17.März 2008
Seite IV
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Quellenverzeichnis
III.
Quellenverzeichnis
[@01] Nicholas Blachford: Cell Architecture Explained Version 2; 10.12.2007
http://www.blachford.info/computer/Cell/Cell0_v2.html
[@02] Yaegashi Takeshi: Basics of Cell Architecture; 04.01.2008
http://ps3.keshi.org/dsk/20061208/doc/
[@03] Frank Hüber: Test: Sony PlayStation 3; 13.01.2008
http://www.computerbase.de/artikel/hardware/multimedia/2007/ test_sony_playstation_3/
[@04] Autor Unbekannt: Wikipedia – Cell (Prozessor); 16.01.2008
http://de.wikipedia.org/wiki/Cell_%28Prozessor%29
[@05] Thomas Chen, Ram Raghavan, Jason Dale, Eiji Iwata: Cell Broadband Engine Architecture
and its first implementation; 10.12.2007
http://www.ibm.com/developerworks/power/library/pa-cellperf/
[@06] Autor unbekannt: Wikipedia – Simultaneous Multithreading; 17.03.2008
http://de.wikipedia.org/wiki/Simultaneous_Multithreading
[@07] Autor unbekannt: Playstation 3 Hardware; 17.03.2008
http://www.ps3station.de/hardware.php
[@08] Autor unbekannt: Wikipedia – AltiVec; 17.03.2008
http://de.wikipedia.org/wiki/AltiVec
[@09] Daniel Bachfeld: CrackStation statt PlayStation; 13.01.2008
http://www.heise.de/security/CrackStation-statt-PlayStation--/news/meldung/99754
[@10] Dr. Frank Mueller: Sony PS3 Cluster (IBM Cell BE); 12.01.2008
http://moss.csc.ncsu.edu/~mueller/cluster/ps3/
[@11] Oliver Lau: Erster Supercomputer mit Playstation-3-Knoten; 17.03.2008
http://www.heise.de/newsticker/Erster-Supercomputer-mit-Playstation-3-Knoten--/meldung/86534
[@12] Autor unbekannt: Hacker Uses Sony PlayStation 3 to Crack Passwords; 17.03.2008
http://www.pcworld.com/printable/article/id,140064/printable.html
[@13] Autor unbekannt: PlayStation speeds password probe; 17.03.2008
http://news.bbc.co.uk/2/hi/technology/7118997.stm
[@14] Britta Widmann: Hacker nutzt Playstation 3 als Passwortknacker; 17.03.2008
http://www.zdnet.de/security/news/0,39029460,39159393,00.htm
[@15] Patrick Gray: PlayStation a hacker's dream; 17.03.2008
http://www.theage.com.au/news/security/playstation-a-hackersdream/2007/11/26/1196036813741.html
17.März 2008
Seite V
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Quellenverzeichnis
[@16] Autor unbekannt: Wikipedia – Rainbow Tables; 17.03.2008
http://de.wikipedia.org/wiki/Rainbow_table
[@17] Autor unbekannt: Wikipedia – Brute Force (Informatik); 17.03.2008
http://de.wikipedia.org/wiki/Brute_force#Informatik
[@18] Ulrika Hedquist: Kiwicon demo uses PlayStation 3 to crack passwords; 14.03.2008
http://computerworld.co.nz/news.nsf/scrt/C50D36EFEC2B482ACC2573A00070EF83,
[@19] Björn Eisert: Was ist MPEG?; 14.03.2008
http://www.cybersite.de/german/service/Tutorial/mpeg/
[@20] OpenMP Architecture Review Board: OpenMP C and C++ Application Program Interface;
17.03.2008
http://www.openmp.org/mp-documents/cspec20.pdf
[@21] Mercury Computer Systems: Computed Tomography Reconstruction; 14.03.2008
http://www.mc.com/uploadedFiles/Cell-Perf-Simple.pdf
[@22] Magdalena Szczot: Boosting schwacher Lerner; 17.03.2008
http://www.informatik.uni-ulm.de/ni/Lehre/SS05/HauptseminarMustererkennung/ausarbeitungen/Szczot.pdf
[@23] Prof. Dr. Stefan Conrad: Klassifikation; 17.03.2008
http://www.dbs.informatik.uni-muenchen.de/buecher/Kap4.Klassifikation.ppt
[@24] Autor unbekannt: Wikipedia – Histogramm; 17.03.2008
http://de.wikipedia.org/wiki/Histogramm
[@25] Stan Birchfield: Elliptical Head Tracking Using Intensity Gradients and Color Histograms;
17.03.2008
http://www.ces.clemson.edu/~stb/presentations/headtracker_cvpr1998.ppt
[@26] Autor unbekannt: Wikipedia – OpenSSL; 17.03.2008
http://en.wikipedia.org/wiki/Openssl
[@27] Autor unbekannt: Wikipedia – Transport Layer Security; 17.03.2008
http://en.wikipedia.org/wiki/Transport_Layer_Security
[@28] Autor unbekannt: Wikipedia – Chinese Remainder Theorem; 17.03.2008
http://en.wikipedia.org/wiki/Chinese_remainder_theorem
[@29] John Stokes: Introducing the Cell Processor – Part2: The Cell Architecture; 12.12.2007
http://arstechnica.com/articles/paedia/cpu/cell-2.ars
[@30] John Stokes: Introducing the IBM/Sony/Toshiba Cell Processor – Part1: the SIMD
processing units; 12.12.2007
http://arstechnica.com/articles/paedia/cpu/cell-1.ars
17.März 2008
Seite VI
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Literaturverzeichnis
IV.
Literaturverzeichnis
[L01]
Pham, D., Asano, S., Bolliger, M., Day, M.N., Hofstee, H.P., Johns, C., Kahle, J., Kameyama, A.,
Keaty, J., Masubuchi, Y., Riley, M., Shippy, D., Stasiak, D., Suzuoki, M., Wang, M., Warnock, J.,
Weitzel, S., Wendel, D., Yamazaki, T., Yazawa, K (2005): The Design and Implementation of a
First-Generation CELL Processor. In: Proc. IEEE International Solid- State Circuits Conference,
pp. 184–185. IEEE Computer Society Press, Los Alamitos
[L02]
Andreas Stiller (2007) Zelluläre Strukturen – Die Architektur der Cell Broadband Engine,
Zeitschrift: C’t magazin für computer technik, Ausgabe: 12/2007, Seite 196 - 201
[L03]
IBM Systems and Technology Group (2007): Cell Broadband Engine Architecture Version 1.02,
11. Oktober 2007
[L04]
IBM Systems and Technology Group (2007): Synergistic Processing Unit Instruction Set
Architecture Version 1.2, 27. Januar 2007
[L05]
Yu, Junqing, Wei, Haitao (2007) Video Processing and Retrieval on Cell Processor Architecture
(Ausgabe: 4740/2007
[L06]
Liu, F., Chaudhary, V. (2003): Extending OpenMP for Heterogeneous Chip Multiprocessors. In:
Proc. 32nd International Conference on Parallel Processing
[L07]
Eichenberger, A.E., O’Brien, K., O’Brien, K., Wu, P., Chen, T., Oden, P.H., Prener, D.A., Shepherd,
J.C., So, B., Sura, Z., Wang, A., Zhang, T., Zhao, P., Gschwind, M. (2005): Optimizing Compiler for
a CELL Processor. In: Proc. 14th International Conference on Parallel Architectures and
Compilation Techniques
17.März 2008
Seite VII
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Literaturverzeichnis
[L08]
Wei, H., Yu, J. (2007): Mapping OpenMP to Cell: A Effective Compiler Framework for
Heterogeneous Multi-Core Chip. In: Proc. International Workshop on OpenMP
[L09]
Sugano, Hiroki, Miyamoto Ryusuke (2007) A Real-Time Object Recognition System on Cell
Broadband Engine
[L10]
Bockenbach, Olivier, Mangin, Michel, Schuberth, Sebastian (2006) Real Time Adaptive Filtering
for Digital X-Ray Applications
[L11]
Costigan, N., Scott, M (2007), Accelerating ssl using the vector processors in ibm’s cell
broadband engine for sony’s playstation 3
[L12]
Zhao Iyer Srihari Makineni Laxmi Bhuyan. Anatomy and performance of SSL processing. In Proc.
IEEE Int. Symp. Performance Analysis of Systems and Software, pages 197–206, 2005.
17.März 2008
Seite VIII
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Abkürzungen
V.
Abkürzungen
CBE
Cell Broadband Engine
DCBB
Dual Cell-Based Blade
DMA
Direct Memory Access
DRM
Digital Rights Management
EIB
Element Interconnect Bus
GPGPU
General Purpose Graphic Processing Unit
IPC
Instructions per Cycle
MFC
Memory Flow Controller
MIC
Memory Interface Controller
PPE
Power Processor Element
SIMD
Single Instruction Multiple Data
SPE
Synergistic Processing Element
SSL
Secure Socket Layer
STI
Sony Toshiba IBM
VPR
Video processing and retrieval
XDR
Extreme Data Rate
17.März 2008
Seite IX
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einführung
1.
Einführung
Der Cell-Prozessor wurde Anfang des Jahres 2005 erstmals der Öffentlichkeit als Cell Broadband
Engine Architecture bzw. kurz Cell BE vorgestellt. Die Idee dieses Prozessors geht aber bereits
auf das Jahr 1999 zurück. Sonys Ken Kuratagi, der Vater der Playstation, hatte die Idee eines
Prozessors, der wie Zellen in einem biologischen System agiert, indem sich mehrere Zellen
verbinden und gemeinsam arbeiten können.
Bereits im darauf folgenden Jahr begannen die Arbeiten an der Konzeption und Entwicklung
eines solchen Prozessors, dessen erstes Einsatzgebiet im Multimedia- und Gaming-Bereich
bereits feststand. Der Cell-Prozessor sollte in der Playstation3 Einsatz finden und die Leistung
seines Vorgänger-Prozessors aus der Playstation2 um den Faktor 100 übertreffen. Für die
Entwicklung schlossen sich die Firmen Toshiba und Sony, die bereits an der Entwicklung des
Prozessors für die Playstation2 zusammen arbeiteten, sowie IBM zusammen und formten nun
die „STI Aliance“. (vgl. [@01])
1.1.
Die Entwicklung des Cell-Prozessors
Innerhalb der „STI Aliance“ gab es zwischen den Herstellern unterschiedliche Anforderungen an
den neu zu entwickelnden Prozessor. Sony und Toshiba hatten insbesondere ein Interesse an
Energieeffizienz und Zuverlässigkeit, da der Prozessor auch im Embedded- sowie im HomeEntertainment-Bereich, zu dem unter anderem die Playstation3 zählt, Verwendung finden soll.
IBM hatte bei der Entwicklung die Anforderung, dass der Prozessor mehrprozessorfähig ist,
zudem sollte er binär kompatibel zu vorherigen PowerPC-Prozessorgenerationen sein. Hierbei
zielte IBM insbesondere auf den Einsatz des Cell-Prozessors in Server-Systemen ab. (vgl. [@01])
Aus diesen Anforderungen entstanden die folgenden Ziele in der Entwicklung: (vgl. [L01])
Ø Sehr hohe Rechenleistung – insbesondere für Spiele und Multimedia-Anwendungen
Ø Echtzeit-Antwortzeiten an den Anwender und dem Netzwerk
o Kontinuierliche Rückmeldung an den Anwender/Spieler z.B. durch eine
kontinuierlich in Echtzeit aktualisierte virtuelle Umgebung
o Unterstützung von Echtzeit-Betriebssystemen
o Aber auch Unterstützung von Nicht-Echtzeit-Betriebssystemen zur Ausführung
von Anwendungen zur Verbindung mit dem Internet
17.März 2008
Seite 1
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einführung
o Somit auch Verarbeitung von kommunikationsorientierten Daten
o Aber auch Unterstützung von weiteren im Internet vorkommenden Daten – z.B.
Digital Rights Management (DRM)
Ø Anwendbar auf verschiedene Plattformen
o Entwicklung der Broadband-Architektur wurde getrieben von der Entwicklung
eines Prozessors für die nächste Entertainment-System-Generation
o Broadband-Architektur aber auch interessant für Anwendungen außerhalb des
Entertainment-Segments
o Zur Erreichung einer breiteren Entwickler-Gemeinschaft für die BroadbandArchitektur
wurde
eine
offene
Linux
basierende
Software-
Entwicklungsumgebung entwickelt
Ø Niedriger Energiebedarf
o Das Hochfrequenzdesign der Broadband-Architektur reduziert die Anzahl der
Gatter, welche pro Zyklus durchlaufen werden müssen
o Ermöglicht dem Prozessor mit niedrigerer Spannung und Leistungsaufnahme zu
arbeiten.
Insbesondere die hohe Rechenleistung in Kombination mit niedrigem Energiebedarf sind dabei
in der Vergangenheit eher widersprüchliche Ziele gewesen, wurde hohe Rechenleistung doch
oft durch spekulative Hardware erzielt, die den Energiebedarf jedoch in die Höhe trieb. Dabei
brachte der Einsatz spekulativer Hardware nicht in jedem Fall die gewünschten
Performancesteigerungen. Zur Erreichung dieser Ziele ging man bei der Entwicklung des CellProzessors daher einen etwas anderen Weg. Es wurde die Komplexität des Prozessors
reduziert, indem auf die spekulative Hardware verzichtet wurde. Hierdurch konnte der
Energiebedarf gesenkt werden. Durch die nun geringere Abwärme des Prozessors ist eine
Erhöhung der Taktraten möglich geworden, um so das Ziel der hohen Rechenleistung erreichen
zu können. (vgl. [@01], [L02])
17.März 2008
Seite 2
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einführung
Der aus der Entwicklung resultierende und wie bereits eingangs erwähnt im Jahr 2005
vorgestellte erste Cell BE-Prozessor wies dabei folgende Eigenschaften auf:
Ø 3,2 Ghz Taktrate
Ø 90nm Fertigungsprozess
Ø 1 Power Prozessing Element (PPE)
Ø 8 Synergistic Processing Elements (SPE)
Der Cell-Prozessor soll laut IBM in vielen Aufgaben bis zu 10x schneller sein als bisherige CPUs.
Diese Aussage ist jedoch kritisch zu betrachten, da es vielleicht auf verfügbare Desktop-CPUs
zutrifft, jedoch nicht auf Prozessoren, wie sie z.B. auf aktuellen Grafikkarten verwendet werden.
Diese aktuellen GPUs sind auch in der Lage, nicht-grafische Aufgaben zu erledigen (Stichwort
GPGPU) und dies in der gleichen Geschwindigkeit wie der Cell-Prozessor oder sogar schneller.
Wenn man betrachtet, das die Architektur des Cell-Prozessors der von GPUs ähnelt, wobei es
sich anstelle der SPEs um Pixel-/Vertexshader-Units handelt, relativiert sich die hohe
Leistungsfähigkeit. Jedoch ist anzumerken, dass der Cell-Prozessor für sehr viel mehr Aufgaben
einsetzbar ist als GPGPUs. Zudem liefert er mit dem PPE sozusagen einen Hauptprozessor mit,
welcher bei den GPGPUs noch fehlt. Des Weiteren ist der Cell-Prozessor aufgrund der sehr viel
allzwecktauglicheren Auslegung im Vergleich zu den GPGPUs, bei welchen primär die
Grafikberechnung im Vordergrund steht, einfacher zu programmieren. (vgl. [@01])
Seit März 2007 wird der Cell-Prozessor in 65nm gefertigt, weiterhin mit einer Taktrate von
3,2Ghz.
17.März 2008
Seite 3
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Aufbau des Cell-Prozessors
2.
Aufbau des Cell-Prozessors
Ein wesentliches Merkmal des Cell-Prozessors ist, dass er aus mehreren unterschiedlichen
parallel arbeitenden Kernen besteht, welche mit einem Bussystem verbunden sind. Dabei gibt
es einen Hauptprozessor, das so genannte PPE, welches den Hauptprogrammfluss steuert
(Betriebssystem, Programmsteuerung etc.) und untergeordnete spezialisierte Recheneinheiten,
die so genannten SPEs, denen Aufgaben vom PPE zugewiesen werden, welche sie dann
bearbeiten. Diese Spezialisierung der SPEs hat den Vorteil, dass sie nur einen geringen
Platzbedarf auf dem Chip und einen geringen Strombedarf besitzen. (vgl. [L02])
Laut Spezifikation kann ein Cell-Prozessor aus einem oder mehreren PPEs und einem oder
mehreren SPEs aufgebaut sein, welche durch den Element Interconnect Bus, dem Bussystem im
Cell-Prozessor, verbunden sind. Die erste Generation des Cell-Prozessors besteht jedoch, wie in
der Einführung bereits erwähnt, aus nur einem PPE und 8 SPEs. Die hohe Anzahl dieser parallel
arbeitenden Prozessoren ist ein entscheidender Grund für die hohe Performance des CellProzessors. (vgl. [@01])
Auch andere Prozessorhersteller sind dazu übergegangen, mehrere Prozessorkerne auf einem
Chip unterzubringen (z.B. Intels Core2Duo, AMDs Opteron), da man bei der Verkleinerung der
Chipstrukturen an die Grenzen der Frequenzerhöhung gestoßen ist. Dabei kam es aufgrund von
hohen Leckströmen bei den kleiner werdenden Strukturen zu enorm ansteigendem
Strombedarf und entsprechend hohem Kühlbedarf der Prozessoren. Im Gegensatz zum CellProzessor verwenden die anderen Mehr-Kern-Architekturen jedoch identische Prozessorkerne.
(vgl. [@02])
Ein weiterer im wahrsten Sinne zentraler Bestandteil des Cell-Prozessors ist der bereits
erwähnte Element Interconnect Bus (EIB). Dieser besteht aus vier in beide Richtungen
laufenden Ringbussen. Er verbindet dabei den L2-Cache des PPE mit den DMA-Controllern der 8
SPEs, wie auch aus der schematischen Darstellung in Abbildung 1 ersichtlich wird.
Neben dem PPE und den SPEs werden auch die zwei ebenfalls auf dem Chip befindlichen
Controller (Speicher-Controller und I/O-Controller) über den EIB mit den anderen
Komponenten des Cell-Prozessors verbunden. Die Controller verbinden den Cell-Prozessor mit
der Peripherie. Mit dem Speicher-Controller wird der Prozessor über das von Rambus
17.März 2008
Seite 4
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Aufbau des Cell-Prozessors
entwickelte XDRAM™ Interface an den Dual Channel Rambus XDR-Speicher (extreme Data Rate)
angebunden. (vgl. [@29], [L02])
Der I/O-Controller dient zur Kommunikation des Prozessors mit der restlichen Hardware des
Systems. Zur Anbindung des Prozessors an die Hardware greift der I/O-Controller auf das von
ebenfalls Rambus entwickelte FlexIO-Interface zu. (vgl. [L02])
In der folgenden Abbildung ist ein Die des Cell-Prozessors abgebildet, in welchem die einzelnen
Elemente des Prozessors gekennzeichnet sind.
Abbildung 1 Beschriftetes Die-Foto des Cell-Prozessors [@03]
17.März 2008
Seite 5
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Aufbau des Cell-Prozessors
Die dunklen Bereiche innerhalb der SPEs in Abbildung 1 stellen dabei deren 256KByte großen
Local Store dar. Daran ist gut zu sehen, wie viel Platz der Speicher im Verhältnis zur restlichen
Hardware auf einem Chip beansprucht.
Da aus Abbildung 1 die Verbindungen der einzelnen Elemente nicht hervorgehen, hilft hier die
schematische Darstellung des Cell-Prozessors. Anhand dieser Grafik ist auch zu erkennen, dass
der I/O-Controller doppelt am EIB angebunden ist.
Abbildung 2 Schematische Darstellung eines Cell-Prozessors [@04]
In Abbildung 2 wird der EIB „On-chip coherent bus“ genannt. Diese Bezeichnung begründet sich
darin, als das es sich bei dem EIB um einen kohärenten Bus handelt, welcher es ermöglicht, das
ein einzelner Adressraum von dem PPE und den SPEs geteilt wird, um so die Kommunikation
effizienter zu machen und die Programmierung zu erleichtern. (vgl. [L01])
Im folgenden Kapitel sollen die einzelnen Elemente des Cell-Prozessors näher erläutert werden.
17.März 2008
Seite 6
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
3.
Elemente des Cell-Prozessors
3.1.
Power Processing Element (PPE)
Beim PPE handelt es sich im Grunde um eine 64Bit PowerPC-Architektur, die im Wesentlichen
aus zwei Teilen besteht. Zum einen aus der PowerPC Processing Unit (PPU), welche die
Berechnungen durchführt, inkl. jeweils einem 32KByte großen Level-1 Cache für Daten und
Instruktionen. Zum anderen aus dem PowerPC Processor Storage Subsystem (PPSS) mit einem
512KByte großen Level-2 Cache, welches Speicheranfragen von der PPU und Anfragen von den
SPEs oder den I/O-Geräten an das Power Processing Element bearbeitet. (vgl. [@01], [L01])
Diese Architektur ist eine Load/Store-RISC Architektur mit 32 General-Purpose und 32 FloatingPoint Registern. Zudem besitzt das PPE die in der Kurzform VMX genannte Vector Media
Extension, welche auch unter der Markenbezeichnung Altivec™ bekannt ist. Über diese wird
dem PPE die Single Instruktion Multiple Data(SIMD)-Funktionalität bereitgestellt. Somit ähnelt
das PPE vom Konzept den noch in Apples verwendeten G5 Prozessoren inkl. dessen 32Bit und
64Bit Befehlssatz. (vgl. [@05], [@30])
Die Implementierung unterscheidet sich jedoch grundlegend von den heute üblichen RISCProzessoren. So wurde auf out-of-order Hardware verzichtet, welche Befehle in den
Ausführungseinheiten eines Prozessors außerhalb der Programmreihenfolge auszuführen
würde, um die Pipelines möglichst gut auszulasten. Die Befehle werden im PPE daher nur inorder ausgeführt. Zudem wird auch nur eine sehr einfache Logik für die Sprungvorhersage
verwendet.
Die Befehlsausführung out-of-order und eine aufwändige Sprungvorhersage bringen zwar einen
Performancegewinn, welcher allerdings mit hohem Platzverbrauch auf dem Chip sowie
stärkerer Hitzeentwicklung durch die zusätzliche Hardware erkauft wird. Um den Verzicht auf
diese Technologien zu kompensieren, hat man sich einfacher Lösungen bedient. Anstelle einer
aufwändigeren Sprungvorhersage auf dem Chip kann der Compiler mit Branch Hint
Instruktionen die Wahrscheinlichkeit für eine teure Neubefüllung der Ausführungspipeline
deutlich senken, und so den Leistungsverlust im Vergleich zu einer aufwändigeren
Sprungvorhersage zumindest annähernd ausgleichen. (vgl. [@01], [@05], [L01], [L02])
17.März 2008
Seite 7
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Die Performance-Einbußen durch den Verzicht auf out-of-order Hardware werden zu einem
großen Teil durch ein Dual-Threaded-Design des PPEs wettgemacht. Durch die out-of-order
Befehlsausführung wird zwar die Anzahl der Instructions per Cycle (IPC) erhöht, aber durch
Daten- und andere Abhängigkeiten werden in realen Anwendungen meist nur Werte kleiner als
zwei Instructions per Cycle erreicht. Das Dual-Threaded-Design des PPE erlaubt ebenfalls zwei
Instructions per Cycle, jedoch aus zwei verschiedenen Threads, so dass der Leistungsverlust
durch Verzicht auf die out-of-order Hardware kompensiert werden kann. (vgl. [L03])
Die Technologie hinter dem Dual-Threaded-Design wird Simultaneous Multi-Threading (SMT)
genannt und ähnelt in der Funktion dem von Intel verwendeten Hyperthreading – die wohl
bekannteste Umsetzung von SMT. Ziel von SMT ist es, die bereits aufgrund der PipelineArchitektur redundant vorhandenen Ressourcen eines Prozessors noch besser auszulasten, als
es bei der Pipeline-Architektur ohnehin möglich ist. SMT bezeichnet die Fähigkeit eines
Mikroprozessors, mittels getrennter Pipelines und zusätzlicher Registersätze mehrere Threads
gleichzeitig auszuführen. (vgl. [@06])
Für die Ausführung von zwei Threads nach dem SMT-Konzept im PPE steht jedem Thread ein
kompletter Registersatz zur Verfügung. Dies sind jeweils 32 Integer-, 32 FPU-, 32 VMX- sowie
ein paar Steuerregister. Die restlichen Ressourcen wie Caches, Queues und Funktionseinheiten
werden
jedoch
geteilt.
Normalerweise
wird
der
Befehlsnachschub
aus
dem
L1-
Instruktionscache mit jedem Takt gewechselt. Muss jedoch ein Thread lange auf den Speicher
warten, so läuft der andere während dessen weiter.
Beim PPE handelt es sich also um einen einfachen RISC-Prozessor, ähnlich der bekannten 64 Bit
PowerPC-Architektur, wodurch die Portierung und Ausführung von bestehenden Programmen
erleichtert wird. Hierbei ist es auch nicht zwingend notwendig, dass die Berechnungen auf die
SPE’s verteilt werden. Das PPE kann Programme auch vollkommen selbstständig ausführen. Um
die Leistung des Cell-Prozessors ausschöpfen zu können, ist eine Verteilung der Berechnung
jedoch unabdingbar. In der Cell-Architektur dient der PPE daher vorwiegend als Organisator, ist
also für Aufgaben des Betriebssystems und für die Zuweisung der Aufgaben an die SPEs
zuständig. (vgl. [L02])
17.März 2008
Seite 8
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Da der Cell-Prozessor für hohe Taktraten ausgelegt sein soll, musste bei der Entwicklung auch
auf die Gatterlaufzeiten der Pipelinestufen geachtet werden. Die Laufzeit pro Pipelinestufe
konnte beim PPE auf elf Gatterlaufzeiten reduziert werden. Hierfür musste jedoch die Pipeline
etwas länger werden, so dass sie nun beim PPE für load/store Instruktionen aus 23 Stufen
besteht. Dies ist jedoch z.B. im Vergleich zum Prescott (Pentium 4) mit 31 Pipelinestufen immer
noch wenig. Die niedrige Anzahl an Pipelinestufen ist dabei auch auf den Verwendung der inorder Technik zurückzuführen. (vgl. [L01], [L02])
Eine kurze Pipeline ist unter anderem auch daher wichtig gewesen, da lange Pipelines eine
aufwändige Sprungvorhersage erfordern, damit die Pipeline selbst nicht ineffizient wird. Auf
eine solche Sprungvorhersage ist aber, wie bereits erwähnt, verzichtet worden.
Wie auch bei anderen Prozessoren üblich, teilt sich die Pipeline des PPE in Front- und Backend
auf. Im Frontend werden dabei die Pipelinestufen aufgeführt, welche alle Befehle gemeinsam
durchlaufen – Instruction Fetch, Decode und Dispatch. Im Backend sind entsprechend die für
die Befehlstypen unterschiedlichen Pipelinestufen aufgeführt – Register-File-Access, Execute
und WriteBack. (vgl. [L02])
Abbildung 3 Befehlspipeline des PPE [@05]
17.März 2008
Seite 9
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
3.2.
Synergistic Processing Elements (SPE)
Jeder der auf dem Cell-Prozessor befindlichen SPEs besteht aus drei Teilen. Diese sind der
parallel arbeitende Rechenkern, welcher Synergistic Processing Unit (SPU) genannt wird, der
256KByte große Local Store und der Memory Flow Controller (MFC), mit welchem die SPEs an
den EIB zur Kommunikation mit den anderen Systemkomponenten angebunden sind – wie auch
in Abbildung 4 zu sehen ist. In dieser Abbildung wird der MFC jedoch, wie auch oft in der
Literatur, als DMA-Unit bezeichnet, was die Kommunikationsweise der SPEs verdeutlicht.
Abbildung 4 Schema des SPEs [@04]
Bei SPUs handelt es sich um eine 128Bit SIMD Architektur mit 128 Registern. Diese Register
können sowohl für Integer- als auch für Floating-Point-Werte verwendet werden. Wie das PPE
ist auch die SPU ein in-order Prozessor mit zwei Threads, verfügt aber im Gegensatz zur PPE
über keine Branch Prediction. Das Instruction Set ist spezialisiert und die SPU verfügt im
Normalbetrieb über keinerlei Zugriffsschutzmechanismen wie einen Supervisor Modus oder
Speicherschutz. (vgl. [@02], [@05], [L02])
17.März 2008
Seite 10
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Das Befehlsformat der SPU ist ein 32Bit Format mit fester Länge. Die SPU hat eine Load-Store
Architektur, jedoch kann nur auf Daten im Local Store der SPE zugegriffen werden. Auch
Instruktionen können nur aus dem Local Store geholt werden. Die arithmetischen Operationen
arbeiten auf Vektoren aus 8, 16 oder 32Bit Integer-Werten und auf Vektoren aus 32 oder 64Bit
Floating-Point-Werten. Einen skalaren Datentyp, wie z.B. einen 32Bit Integer oder FloatingPoint kennt die SPU hardwareseitig gar nicht. Grundsätzlich werden Operationen immer über
die gesamte Datenbreite von 128Bit ausgeführt, auch wenn beispielsweise nur ein kleiner 8Bit
Zähler benötigt wird. Ebenso finden auch Zugriffe auf den Local Store ausschließlich über die
128Bit-Breite statt. Der Compiler sorgt jedoch mit einem Software-Layer durch Schiebe- und
Maskierungsoperationen dafür, dass man wie gewohnt skalare Datentypen nutzen kann. (vgl.
[L04])
Zusätzlich sind im Instruction Set Befehle zum Ausgleich für die fehlende Branch Prediction
enthalten. Dies sind „Hint-for-Branch“ und „Conditional-Move“ Befehle. (vgl. [L04])
Abbildung 5 Datenformate in den Registern der SPU [L04]
Die Register sind in vier 32Bit Slots eingeteilt, von denen der erste Slot, der so genannte
„preferred“ Slot, die Ergebnisse von skalaren Operationen erhält und zur Übergabe von
Adressen verwendet wird. Abbildung 5 zeigt das Datenformat in den Registern der SPU. Bei
Load-/Store-Operationen werden die letzten vier Bits der Adresse auf Null gesetzt, so dass alle
Zugriffe auf 128Bit-Grenzen ausgerichtet sind. Außerdem wird bei Zugriffen mit zu großen
Adressen die tatsächliche Größe des Speichers subtrahiert (wrap-around), so dass beim
Speicherzugriff keine Fehler auftreten können. (vgl. [L04])
17.März 2008
Seite 11
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Die beiden Threads des SPU sind asymmetrisch organisiert und werden als „even“- und „odd“pipe bezeichnet. In der odd pipe werden Load-/Store-Befehle und Branches ausgeführt, in der
even pipe Integer- und Floating-Point-Arithmetik. Eine genaue Übersicht über die Aufteilung
der Befehle auf die beiden Execution-Pipelines zeigt die folgende Abbildung.
Abbildung 6 Aufteilung der Befehle auf Execution-Pipelines der SPU [L04]
Die Pipeline selbst besteht wie die Pipeline des PPE aus 23 Stufen und ist auch hier in Frontend
und Backend aufgeteilt. Im Frontend werden 12 Stufen und im Backend 6 - 9 Stufen
durchlaufen. Das Write-Back in die Register wird bei allen Instruktionen im 23. Taktzyklus
durchgeführt. Da aber nicht alle Instruktionen gleich viele Taktzyklen benötigen, wurden in die
Pipeline Wartezyklen eingefügt (blaue leere Kästchen in Abbildung 7). Auf die Ergebnisse der
Instruktionen aus der Execute-Phase kann aber schon per Forwarding zugegriffen werden
(senkrechte Pfeile am Ende der Execution-Phase in Abbildung 7). Eine Ausnahme bilden jedoch
Branch-Instruktionen. Die Branches werden maximal mit 18 Stufen durchlaufen, so dass eine
falsch vorhergesagte Verzweigung maximal eine Wartezeit von 18 Takten nach sich zieht. (vgl.
[L01], [L02])
17.März 2008
Seite 12
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Abbildung 7 Pipeline der SPU [L01]
Der Local Store kann als eine Art expliziter, vollständig unter der Kontrolle des Programmierers
stehender Cache angesehen werden, da die SPUs selber über keinen Cache verfügen. Dieser
schnelle lokale Speicher kann dabei pro Takt 16Byte zwischen sich und SPU austauschen – dies
entspricht pro SPE einer Bandbreite von 50GByte/s bei dem gegenwärtigen Takt von 3,2Ghz.
Auf die Local Stores der einzelnen SPEs kann von außerhalb des SPE im shared memoryVerfahren über virtuelle Adressen zugegriffen werden. So kann das PPE und auch andere SPEs
in den Speicher eines SPE schreiben. Dadurch ist es möglich, komplexe Aufgaben in einzelne
Teile zu zerlegen, welche nun von unterschiedlichen SPEs bearbeitet werden. Dieses Vorgehen
wird Streamed Processing genannt. In folgender Abbildung wird dieses Vorgehen am Beispiel
des Decodierens digitaler Fernsehsignale gezeigt. (vgl. [@01])
17.März 2008
Seite 13
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Abbildung 8 Beispiel für Streamed Processing [@01]
Der Zugriff auf den Local Store kann aber auch verhindert werden. Dies geschieht im so
genannten Isolation Mode. Dabei wird ein digital signiertes Programm in den SPE geladen und
mittels eines im Prozessor vorhandenen Schlüssels überprüft. Nur wenn diese Überprüfung
erfolgreich war, wird der Code ausgeführt. Anderenfalls wird die Ausführung des Codes
verhindert. So lange sich das SPE im Isolation Mode befindet, kann von Außen nicht auf dessen
Local Store zugegriffen werden. Anwendungsgebiete hierfür sind z.B. DRM oder kryptografische
Anwendungen. (vgl. [L01], [L03])
Der MFC dient im SPE zur Kommunikation mit den anderen Komponenten des Systems. Er dient
zum einen zum Transfer der benötigten Daten in den Local Store des SPE und zur Übermittlung
der Ergebnisse, und verfügt zweitens über Mailboxen, als weiteres Kommunikationsverfahren
neben dem zuvor bereits beschriebenen shared memory-Verfahren, die eine einfache
Kommunikation zwischen der SPU und anderen Einheiten gestatten. Zusätzlich verfügt der MFC
über Status- und Kontrollregister, die den Zustand der SPU kontrollieren. (vgl. [L03])
17.März 2008
Seite 14
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Abbildung 9 Kommunikation über den MFC [@02]
Datentransfers werden dabei über Queues eingeleitet, wovon je eine durch die SPU und eine
mittels memory-mapped IO (MMIO) durch externe Einheiten verwendet werden kann. Der
Memory Flow Controller (MFC) verfügt über einen DMA-Controller und benachrichtigt die
Einheit, die den Transfer angefordert hat, sobald er abgeschlossen ist. Die Mailboxen und die
Kontrollregister sind ebenfalls über MMIO zugreifbar. (vgl. [L03])
Das hier beschriebene Kommunikationsverfahren über Mailboxen wird üblicherweise für die
Übertragung von Speicheradressen verwendet, wohingegen das shared memory-Verfahren zur
Übertragung von Daten verwendet wird.
Die SPU kommuniziert mit dem zugehörigen MFC über Kanäle. Diese sind read-only oder writeonly Datenkanäle, auf die mit speziellen Instruktionen zugegriffen werden kann. Teilweise sind
diese Zugriffe blockierend, speziell dann, wenn die SPU warten müsste, bis auf der Gegenseite
die Daten abgerufen oder bereitgestellt wurden. Dies ist effizienter als ein Polling-Verfahren,
weil bei einem blockierenden Zugriff die Stromzufuhr zur SPU extrem gedrosselt werden kann.
(vgl. [L03])
17.März 2008
Seite 15
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
3.3.
Element Interconnet Bus (EIB)
Der EIB verbindet die einzelnen Komponenten des Cell-Prozessors. In dem gegenwärtig
veröffentlichten Cell-Prozessor sind es insgesamt 12 Elemente, die darüber verbunden werden.
Der EIB ist in einer Ringtopologie aufgebaut und besteht aus vier Ringen mit je 128Bit Breite,
wobei die einzelnen Ringe zur Reduzierung von Interferenzen gegenläufig ausgelegt sind –
somit existieren je zwei Ringe pro Richtung. Dies hat auch den Vorteil, dass bei einer
Übertragung zwischen den Elementen, die maximale Entfernung 6 Elemente (bezogen auf den
Cell-Prozessor mit 12 Elementen) beträgt. Der EIB ist mit dem halben Prozessortakt getaktet also 1,6Ghz. Abhängig von der relativen Lage der Partner einer Übertragung gibt es jedoch
verschiedene Laufzeiten und die Gesamtbandbreite ist davon abhängig, wer mit welchem Ring
verbunden ist. Wenn z.B. vier SPE-Paare gegenseitig den Local Store des Partners lesen und
somit acht gleichzeitige Transfers durchführen, dann kann die gemessene Bandbreite je nach
Auswahl der Partner zwischen 78 GByte/s und 197 GByte/s variieren. Die theoretische
Gesamtbandbreite des EIB liegt bei 204 GByte/s. (vgl. [@02], [L01], [L02])
Die Daten werden von einem SPE zum Nächsten übertragen, in denen jeweils ein Repeater mit
einem Bus Interface die Verbindung in die SPE darstellt. Die Daten werden somit in mehreren
Schritten von einer SPE zur nächsten weitergereicht. Ein Nebeneffekt dieses Aufbaus ist, dass
die Anzahl der SPEs beliebig gesteigert oder verringert werden kann, ohne dass die
Busarchitektur verändert werden müsste, führt jedoch auch dazu, dass die Latenz steigt. (vgl.
[@01], [L01])
3.4.
Memory Interface Controller (MIC)
Der MIC des Cell-Prozessors ist über zwei 32Bit Kanäle (Dual-Channel) mit dem Rambus XDRSpeicher verbunden, die bei einer maximalen Taktrate von 3,2GHz arbeiten. Jeder der Kanäle
kann dabei maximal 256 MB ansprechen, so dass insgesamt 512 MB verwendet werden
können. Die Speicherbandbreite des Controllers beläuft sich dabei auf 25,6 GByte/s, bzw. 12,8
GByte/s pro Kanal. Somit kommt nur einer der beiden Kanäle bereits auf die Bandbreite von
parallel arbeitendem DDR2 – PC6400.
Dennoch ist in Zukunft – IBM plant dies bereits beim „Cell eDP“ (enhanced Double Precision),
der im Jahr 2008 erwartet wird - ein Wechsel auf DDR2 oder bereits DDR3 angedacht, um
größere Speicherkapazitäten ansprechen zu können. (vgl. [L01], [L02])
17.März 2008
Seite 16
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
3.5.
Bus Interface – FlexIO
Mittels des ebenfalls von Rambus stammenden Bus Interface „FlexIO“ können mehrere CellProzessoren verbunden werden, oder andere Einheiten wie beispielsweise der Grafikprozessor
RSX in der Playstation 3 angebunden werden. Das FlexIO-Interface ist asymetrisch aufgebaut
und bietet 7 ausgehende und 5 eingehende Leitungen mit jeweils 8Bit Breite. Das Interface
erlaubt eine direkte Verbindung von maximal zwei Einheiten. Mehrere Einheiten können über
einen Switch verbunden werden, wie in Abbildung 10 am Beispiel mehrerer Cell-Prozessoren
gezeigt wird.
Dieses Beispiel zeigt auch, dass es über das FlexIO-Interface möglich ist, zwei Cell-Prozessoren
direkt („glue-less“) zu verbinden. So lassen sich zwei Cell-Prozessoren in einem zwei-wegesymmetrischen Multiprozessor-Konzept (Abbildung 10 (b)) in einem gemeinsamen Adressraum
betreiben, ohne dass weitere Hardware benötigt wird. Hierfür wird eines der beiden FlexIOInterfaces (IOIF) als Broadband Interface (BIO) konfiguriert, welches den EIB sozusagen
durchschleift. (vgl. [@02], [L01], [L02])
IOIF = input-output interface
BIO = broadband interface
Abbildung 10 Konfigurationsmöglichkeiten des Cell-Prozessors [L01]
17.März 2008
Seite 17
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Elemente des Cell-Prozessors
Das FlexIO-Interface arbeitet unabhängig vom Kerntakt mit zwei differenziellen Leitungen pro
Bit, die laut Rambus bis zu 8Gbit pro Sekunde übertragen können. Diese hohe Datenrate ist
aber auch nur über eine begrenzte Entfernung möglich. So darf die Verbindung zum
angeschlossenen Partner maximal 37cm betragen. Zudem ist die Datenrate beim FlexIOInterface nicht konstant (VDR: Variable Data Rate), sondern sie lässt sich zwischen dem ein- und
zehnfachen des Bustaktes einstellen. Beim aktuellen Cell-Prozessor arbeitet das FlexIOInterface mit einem Takt von 500 Mhz, was maximal 5Gbit pro Sekunde pro Signalpaar
ermöglicht – zum Vergleich: bei PCIExpress sind es 2,5Gbit pro Sekunde. Bezogen sind diese
Werte jedoch auf die Bruttodatenrate, sodass die tatsächliche Nettodatenrate je nach
verwendeter Technik (Taktgenerierung, Protokoll, Fehlersicherung) deutlich unter diesen
Werten liegen kann. Durch die Verwendung einer separaten Taktleitung beim FlexIO-Interface
sollen laut Rambus die Brutto- und Nettodatenrate jedoch nahe beieinander liegen. (vgl. [L01],
[L02])
Beim FlexIO-Interface wird zudem nur ein recht kleiner und somit stromsparender Signalpegel
von 200mV verwendet, sowie die neue „FlexPhase“ genannte Technologie zur Synchronisierung
der Phasenlage zwischen den Signalpaaren. Mit Flexphase kann das Boarddesign vereinfacht
werden, da es nicht mehr notwendig ist, die Signalleitungen künstlich zu verlängern um
Laufzeitunterschiede auszugleichen. (vgl. [L01], [L02])
17.März 2008
Seite 18
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.
Einsatzgebiete des Cell-Prozessors
4.1.
Sony Playstation 3
Wie auch in der Einführung dieser Ausarbeitung schon erwähnt, wurde der Cell-Processor
ursprünglich für die Spielekonsole Playstation 3 von Sony entwickelt. (vgl. [@01])
Entsprechend wird auch der in den vorangegangenen Kapiteln beschriebene Cell BE in der
Playstation 3 verwendet, jedoch mit einer kleinen Änderung.
Die Besonderheit bei der Playstation 3 liegt im Detail. Der Cell Processor der Playstation 3
verfügt über sieben der im eigentlichen Cell-Processor verfügbaren acht Synergistic Processing
Elements (SPE). Der Grund soll die Erhöhung der Produktionsausbeute bei der Herstellung des
Cell Processors sein. Eine weitere SPE wird in einem speziellen Modus der Konsole betrieben
und von dem Hypervisor kontrolliert. Der Hypervisor wird für die Steuerung der Treiberzugriffe
des PS3-Linux-Kernels auf die virtuellen Geräte verwendet. Damit will Sony sicherstellen, dass
das Sicherheitssystem der Playstation 3 nicht angegriffen und verändert wird. Befindet sich eine
Linux Installation auf der Playstation 3, ist diese vom eigentlichen Konsolensystem vollständig
getrennt. (vgl. [@09])
Somit stehen der Sony Playstation 3 noch insgesamt sechs der ursprünglich acht SPEs für die
Verarbeitung von Spielen sowie für das Ausführen des Linux-Betriebssystems zur Verfügung.
17.März 2008
Seite 19
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.2.
Playstation 3 Cluster
Dr. Frank Mueller von der North Carolina State University entwickelte einen Playstation 3
Cluster, indem er acht Playstation 3 zu einem Verbund zusammengeschlossen hat. Dieser
Cluster ist der erste akademische Cluster seiner Art und wird von Dr. Mueller mit Gesamtkosten
von nur 5000 US-Dollar für das gesamte System beziffert: im Vergleich zu ähnlich
leistungsstarken Supercomputern ein sehr kostengünstiges System. (vgl. [@10])
Ein Nachteil der Playstation 3 ist die Ausstattung mit nur 256 MB Arbeitsspeicher plus 256 MB
Speicher für Graphikanwendungen pro Clustereinheit. Dadurch wird der Einsatzbereich dieses
Clusters stark eingeschränkt. Laut Dr. Mueller ist es bestimmt möglich, die Playstation 3 mit
mehr Arbeitsspeicher auszustatten, allerdings habe er bisher die Gehäuse der Geräte noch
nicht geöffnet und arbeitet daher mit der Hardwaregrundkonfiguration, die jedermann für den
Heimgebrauch erwerben kann.
Ein weiterer Nachteil des Cell-Processors in der Playstation 3 ist die Tatsache, dass dieser seine
hohe Geschwindigkeit nur bei Gleitkommaberechnungen mit einfacher Genauigkeit richtig
ausnutzen kann. Für wissenschaftliche Berechnungen werden in der Regel aber
Gleitkommaberechnungen mit doppelter Genauigkeit benötigt. Aus diesem Grund eignet sich
dieser Cluster nur eingeschränkt für wissenschaftliche Aufgaben. (vgl. [@11])
17.März 2008
Seite 20
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
Auf
die
nachstehende
persönliche
Anfrage
per
E-Mail
an
Dr.
Frank
Mueller
([email protected]) bezüglich genauerer technischer Information blieb die Reaktion
seinerseits leider aus.
Dear Dr. Mueller,
I am studying at the University of Applied Science Bremen in Germany. For my lecture
computer architecture I have to write an elaboration about the IBM Cell BE and his uses. During
my inquiries I found your project about the Playstation 3 Cluster. It is a very absorbing project.
On the day of my presentation of my elaboration I talk about your Playstation 3 Cluster to my
professor. He was very excited and ask me to write more about your project in the essay.
So I would like to ask you, if you could send me more 'technical' information about the project,
which I could use for my elaboration? I found these links so far.
http://moss.csc.ncsu.edu/~mueller/cluster/ps3/
http://moss.csc.ncsu.edu/~mueller/cluster/ps3/coe.html
Thanks a lot!
best regards,
René Büst
-------------------------------René Büst
Hochschule Bremen
E-Mail: [email protected]
--------------------------------
17.März 2008
Seite 21
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.3.
Crackstation
Der Sicherheitsberater der Firma Security-Assessment Nick Breese zeigte auf der
neuseeländischen Hackerkonferenz Kiwicon, wie er mit einer Playstation 3 die schnelle
Berechnung von MD5 Hashes durchführen konnte. (vgl. [@12], [@13], [@14], [@15])
Mit diesem Verfahren können sehr große Tabellen, welche auch Rainbow Tables genannt
werden, sehr schnell errechnet werden. Die Rainbow Table wurde von Phillipe Oechslin
entwickelt. Es handelt sich dabei um eine Datenstruktur, welche eine schnelle nicht
deterministische Entschlüsselung von Hash-Werten ermöglicht. Dabei werden durch einen
erhöhten Speicheraufwand Geschwindigkeitsvorteile erreicht. (vgl. [@16])
Diese werden z.B. für eine Brute Force Attacke (vgl. [@17]) verwendet, um aus Wörterbüchern
oder Zeichenketten das Klartextpasswort zu einem bestehenden Hash zu ermitteln. Nach
eigenen Angaben von Breese kann die Playstation 3 bis zu 1.4 Milliarden Iterationen pro
Sekunde (wobei eine MD5-Iteration ca. 50 Zyklen benötigt) verarbeiten. (vgl. [@18])
Ein Intel Core2 Duo Processor ist laut Breese nur in der Lage, 8 Millionen Iterationen pro
Sekunde zu verarbeiten. Die hohe Geschwindigkeit ist einzig und allein auf die SIMD-Architektur
des Cell-Processors zurückzuführen. Die Playstation 3 spielt dabei eher eine untergeordnete
Rolle. Vector-Verarbeitung bzw. SIMD sind ideal für die Verarbeitung von großen
zusammenhängenden Datenmengen, ganz im Gegenteil zu kleinen einzelnen Datenmengen, wo
diese Technik kaum Vorteile bringt. Vector-Verarbeitung ermöglicht die parallele Berechnung
kryptographischer Methoden. (vgl. [@12])
Während der Berechnung der MD5-Hashes berechnet jede SPE des Cell Processors zu jeder Zeit
ein eigenes Passwort. (vgl. [@13]) Da jede SPE vier Berechnungen parallel durchführen kann
und 6 SPEs innerhalb der Playstation 3 aktiviert sind, können somit 24 Kalkulationen gleichzeitig
verarbeitet werden.
17.März 2008
Seite 22
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
Auf die nachstehende persönliche Anfrage per E-Mail an Nick Breese ([email protected]) bezüglich genauerer technischer Information blieb die Reaktion seinerseits
leider aus.
Dear Sir or Madam,
I am studying at the University of Applied Science Bremen in Germany. For my lecture
computer architecture I have to write an elaboration about the IBM Cell BE and his uses. During
my inquiries I found the project of Nick Breese about the "Crackstation". He is an employee of
your company. It is a very absorbing project. On the day of my presentation of my elaboration I
talk about the Crackstation to my professor. He was very excited and ask me to write more
about the project in the essay.
So I would like to ask you, if you could send me the email address of Nick Breese?
Thanks a lot!
best regards,
René Büst
-------------------------------René Büst
Hochschule Bremen
E-Mail: [email protected]
--------------------------------
17.März 2008
Seite 23
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.4.
Videoverarbeitung
4.4.1.
Einführung
Mit der rapiden Entwicklung in der Netzwerktechnik und im Multimediabereich ist auch die
Menge an verfügbarem Videomaterial gestiegen. Digitales Videomaterial nimmt immer mehr
einen
dominierenden
Stellenwert
im
Bereich
Unterhaltung,
Bildung
und
Informationsgewinnung ein. Um den Benutzer bei der Suche nach dem richtigen Videomaterial
zu unterstützen, werden Systeme erforderlich, die das Videomaterial hinsichtlich ihres Inhalts
analysieren und kategorisieren. Diese Systeme werden unter dem Synonym VPR (Video
processing and retrieval) geführt.
An der Huazhong University of Science & Technology in Wuhan, China wurde dazu ein
Forschungsprojekt ins Leben gerufen, welches die Portierung eines VPR-Systems auf den CellProzessor untersuchte. Dabei sollte geprüft werden, wie man die Aufgaben auf die einzelnen
SPEs aufteilen kann und welche Leistungssteigerung durch parallele Datenverarbeitung erreicht
werden kann. (vgl. [L05])
Zum Einsatz kam dabei der IBM Cell Simulator V2.0. Mit diesem war es möglich, die
Ausführungszeiten zu messen, die die unterschiedlichen Konfigurationen mit einer
unterschiedlichen Anzahl SPEs benötigten.
Die Ergebnisse des Projekts zeigten, dass die Geschwindigkeit der VPR-Verarbeitung durch den
Cell Processor stark beschleunigt werden kann. (vgl. [L05] S. 255)
17.März 2008
Seite 24
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.4.2.
Arbeitsablauf des VPR-Systems
VPR-Systeme unterstützen den Benutzer auf einfache Art und Weise beim Durchsuchen und bei
der Verwaltung von Videomaterial. Die Hauptkomponenten sind Extraktion von Video- oder
Audiomaterial,
Umrisserkennung,
automatische
Zerlegung
des
Materials
in
zusammenhängende Szenen, strukturelle Zusammenfassung, Kommentierung, Indexierung und
inhaltsbasierte Videowiedergabe. Im oben erwähnten Projekt werden dazu einfache
Sportvideos verwendet, die vom System erfasst, analysiert und indexiert werden. (vgl. [L05] S.
256)
Wie in Abbildung 11 zu erkennen ist, besteht das Framework aus den fünf Stufen low level
feature extraction, mid level feature extraction, high level feature extraction, representation,
browsing und retrieval. Innerhalb dieser fünf Stufen wird an geeigneten Stellen die Parallelität
ausgenutzt, z.B. bei der feature extraction. (vgl. [L05] S. 257)
Abbildung 11 Überblick über ein Framework zur Videoverarbeitung und Bereitstellung [L05]
17.März 2008
Seite 25
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.4.3.
Programmiermodelle des VPR-Systems
Ein VPR-System zeichnet sich durch eine hohe Anzahl an Prozessen sowie einer großen Anzahl
an Berechnungen aus. Als strukturelle Programmiermodelle sind das Service-Modell sowie das
Streaming-Modell am Besten dafür geeignet. (vgl. [L05] S. 257)
Abbildung 12 Videoverarbeitung: (a) Service Modell und (b) Streaming Modell [L05]
In Abbildung 12a ist das Service-Modell dargestellt. Hierbei weist der Hauptprozessor (PPE) den
Co-Prozessoren (SPE) die unterschiedlichen Dienste zu. Der Hauptprozess des PPE signalisiert
dem entsprechenden SPE, wenn ein bestimmter Dienst benötigt wird. Die Grundlage und ein
wichtiger Schritt der Videoverarbeitung ist die Extraktion von Eigenschaften, beispielsweise die
Extraktion des Audio-Signals. Jede einzelne Extraktion wird dabei als ein eigener Dienst
betrachtet, welcher einem oder mehreren Co-Prozessoren zugewiesen wird. Eine statische
Zuweisung bestimmter Dienste an bestimmte Co-Prozessoren wird dabei vermieden. (vgl. [L05]
S. 257)
Beim Streaming-Modell in Abbildung 12b agiert der Hauptprozessor (PPE) als ein StreamController und die Co-Prozessoren (SPE) als Stream-Data-Prozessoren mit einer seriellen oder
parallelen Pipeline. Innerhalb der Videoverarbeitung hat jede Prozedur signifikante
Verarbeitungsstufen, welche einem SPE zugewiesen werden. In Abbildung 12b decodiert das
erste SPE beispielsweise den eingehenden raw Videodatenstream und gibt anschließend den
decodierten Videodatenstream aus. Das zweite SPE nimmt den decodierten Videodatenstream
in der zweiten Stufe entgegen und extrahiert das „Feature 1“. Am Ende extrahiert das dritte SPE
das „Feature 2“ und gibt die fertig verarbeiteten Daten an den Hauptprozessor zurück. (vgl.
[L05] S. 257)
17.März 2008
Seite 26
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.4.4.
Block Matching Algorithmus
Der Block Matching-Algorithmus ist ein wichtiger Schritt innerhalb der Videoverarbeitung. Er
wird verwendet, um die große Menge an in Video-Sequenzen enthaltenen zeitlichen und
räumlichen Redundanzen zu eliminieren. Dazu wird das Bild (Frame i) in mehrere Blöcke
aufgeteilt und es wird im nachfolgenden Bild (Frame i+1) geprüft, ob dieser Block enthalten ist.
Einige Kompressionsverfahren, beispielsweise MPEG, nutzen diese Technik, indem sie
redundante Blöcke entfernen und die entfernten Blöcke aus den vorangegangenen Frames
rekonstruieren. (vgl. [L05] S. 257 und [@19])
Abbildung 13: Block Matching [L05]
Wie Abbildung 13 zeigt, wird jeder Block innerhalb eines bestimmten Suchfensters im
nachfolgenden Frame j mit dem gesuchten Block aus Frame i verglichen. Gesucht wird dabei
nach dem Block mir der kleinsten Abweichung vom gesuchten Block.
17.März 2008
Seite 27
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.4.5.
Parallelisierung des Block Matching Algorithmus
Der sequentielle Algorithmus verwendet vier verschachtelte Schleifen zur Berechnung der
minimalen Abweichung. Die Arrays Block[8][8] und Frame[M][N] sind dem aktuellen
Suchblock bzw. dem Suchfenster zugewiesen. Bei jedem Suchschritt wird in der Variable diff
die absolute Differenz gespeichert. Der kleinste absolute Differenzwert und die Bewegung des
gesuchten Blocks werden in den Variablen min, x und y gespeichert.
…
for(i=0; i<M-7; i++) {
for(j=0; j<N-7; j++){
for(k=0; k<8; k++) {
for(l=0; l<8; l++) {
diff += abs(Block[k][l] - Frame[k+i][l+j]);
}
}
}
if(diff < min) {
min=diff;
x=i;
y=j;
}
}
…
Dieser sequentielle Algorithmus muss zur optimalen Nutzung der Ressourcen des CellProzessors dahingehend umgewandelt werden, dass eine parallele Datenverarbeitung möglich
ist. Neben der Nutzung spezieller VMX-Befehle müssen die Daten und die Arbeitspakete vom
PPE dann noch auf die einzelnen SPEs verteilt werden. (vgl. [L05] S. 258 – 259)
Der Hauptprozessor teilt dazu das Suchfenster in einige Unterfenster ein und weist
anschließend die Übereinstimmungsprozedur aus jedem Suchfenster den einzelnen SPEs zu, um
die minimale lokale Abweichung und den lokalen Bewegungsvektor zu ermitteln. Am Ende
vergleicht der Hauptprozessor die Arbeitsergebnisse der einzelnen SPEs und sucht die minimale
globale Abweichung sowie den dazugehörenden Bewegungsvektor.
Die Co-Prozessoren (SPE) erhalten das Unterfenster und den aktuellen Block vom
Hauptprozessor. Sie suchen die beste lokale Übereinstimmung (die minimale lokale
Abweichung) und den dazugehörenden Bewegungsvektor. Anschließend schicken die SPEs das
Ergebnis an den Hauptprozessor zurück und warten auf den nächsten Arbeitsauftrag.
17.März 2008
Seite 28
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
PPE Code:
…
//correspond to ‘fork’ in OpenMP
for(i=0,offset=0; i<SPE_THREADS; i++,offset+=P) {
// Create SPE thread passing the context as a parameter.
spe_ids[i] = spe_create_thread(0, &match_multi_spu, &ctx[i], NULL, -1, 0);
}
…
// correspond to ‘join’ in OpenMP
for(i=0; i<SPE_THREADS; i++) {
(void)spe_wait(spe_ids[i],&status,0);
}
//find the globe minimum, coordinate x,y
for (i=0; i<SPE_THREADS; i++) {
if(diff[i]<globemin) {
globemin=diff[i];
x=posx[i];
y=posy[i];
}
}
…
SPE Code:
…
//gain the data from ppe
spu_mfcdma32(…, MFC_GET_CMD);
…
//compute the local minimum and coordinates x,y with spu-SIMD instruction.
uschRowAbs_v[k] = spu_absd(model_v[k], uschRow_v[k]);
if(diff[k]<localmin) {
localmin=diff[i];
x=posx[k];
y=posy[k];
}
…
//return the results
spu_mfcdma32(…, MFC_PET_CMD);
…
Der oben aufgeführte PPE-Code erzeugt in der Subroutine spe_create_thread einen
Gruppenthread, der auf den SPEs ausgeführt wird. Die Adresse der Daten wird über den
Parameter ctx übertragen. Nachdem die Threads erstellt sind, wird die Subroutine spe_wait
aufgerufen, welche wartet, bis alle Threads beendet sind, also alle SPEs mit iher Arbeit fertig
sind. Im SPE-Code erhält jedes SPE durch eine DMA-Übertragung die Daten vom
Hauptprozessor. Danach ermitteln sie die minimale lokale Abweichung und den
Bewegungsvektor unter Verwendung der SIMD-Befehle der SPEs. Abschließend sendet jedes
SPE ihre Ergebnisse durch eine DMA-Übertragung zurück an den Hauptprozessor. (vgl. [L05] S.
259)
17.März 2008
Seite 29
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
Abbildung 14: Geschwindigkeitsanalyse des Block Matching Algorythmus [L05]
4.4.6.
Ergebnisse der Parallelisierung des Block Matching Algorithmus
Wie Abbildung 14 zeigt, erhöht Parallelisierung die Geschwindigkeit mit zunehmender
Auflösung drastisch. Bei einer Auflösung von 2000x1500 kann die Berechnungszeit durch die
Verwendung der SPEs und der parallelen Berechnung ungefähr um den Faktor fünf reduziert
werden (210ms vs. 40ms), im Gegensatz zu einer Auflösung von 800x600, wo der
Beschleunigungsfaktor nur bei zwei liegt (40ms vs. 20ms).
Dies liegt daran, dass in kleineren Bildern der gesuchte Block nicht so häufig vorkommen kann
und daher die weniger häufig vorkommenden parallel laufenden Vergleiche den
Kommunikationsoverhead nicht kompensieren können. Die Geschwindigkeit erreicht je nach
Auflösung einen Höchstwert bei fünf bis sieben verwendeten SPEs. Die Geschwindigkeit kann
sich jedoch auch durch „Überparallelität“ bei zunehmender Anzahl SPEs wieder verschlechtern.
(vgl. [L05] S. 260)
17.März 2008
Seite 30
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.4.7.
OpenMP
Wie die Implementierung des Block Matching Algorithmus aus Kapitel 4.4.5 gezeigt hatte,
waren vom Programmierer ein hoher Kenntnisstand bezüglich Cell-Architektur, Befehlssätze
von PPE und SPE, DMA-Transfers, Registern usw. erforderlich, um für parallele Berechnungen
optimierten Code zu erstellen.
Aus diesem Grund wurde im Rahmen des Forschungsprojekts ebenfalls untersucht, inwiefern
OpenMP auf einem Cell-Prozessor verwendet werden kann. Bei OpenMP handelt es sich um
einen Industriestandard für „shared memory parallel programming“, welcher durch ein
Konsortium von Software- und Hardwareherstellern vereinbart wurde. (vgl. [@20]) Es besteht
aus einer Sammlung von Compilerrichtlinien, Bibliotheksroutinen und Umgebungsvariablen,
welche ohne große Schwierigkeiten für die VPR-Programmierung auf dem Cell Processor
verwendet werden kann. (vgl. [L06])
Ladestrategie
Die parallele Berechnung muss zwischen dem PPE und den SPEs aufgeteilt werden. Die
Parallelität wird in OpenMP durch entsprechende Direktiven dargestellt. Der Hauptprozessor
und die SPEs werden hier als eine Gruppe von Threads betrachtet. Durch Datenzuteilung weist
der Hauptprozessor die SPE gleichzeitig an, spezifische Datenbereiche zu bearbeiten und zu
berechnen. Das PPE führt den Datenbereich als der Masterthread der Gruppe aus. Am Ende des
parallelen Bereichs wartet der Hauptprozessor, bis alle SPEs ihre zugewiesenen Aufgaben
erledigt haben, und sammelt die benötigten Daten von jedem SPE wieder ein. (vgl. [L07], [L08],
[L05] S. 260-261)
17.März 2008
Seite 31
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
Lokalität
Die gemeinsam verwendeten Daten sind im Hauptspeicher des PPE abgelegt und können über
die atomaren Operationen des Cell-Processors erreicht werden. Um eine Operation auf die
gemeinsam verwendeten Daten durchzuführen, muss jedes SPE die lokale Speicheradresse in
die effektive Speicheradresse übersetzen. Dann wird via DMA-Transfer eine Kopie der zu
verarbeitenden Daten aus dem Hauptspeicher des PPE im lokalen Speicher der SPEs abgelegt.
Wenn die lokale Kopie der gemeinsam verwendeten Daten durch die Berechnungen eines SPEs
verändert wurde, werden die geänderten Daten am Ende des parallelen Abschnitts über den
DMA-Controller zurück in den Hauptspeicher geschrieben. (vgl. [L05] S. 260-261)
Synchronisation
Die Synchronisation paralleler Prozesse ist durch die Mechanismen „memory tag polling“ und
„event trigger“ auf dem Cell-Prozessor implementiert. Die erste Methode besteht darin, eine
Speichermarke für jedes einzelne SPE mit dem Wert 0 zu initialisieren. Der Hauptprozessor
weckt jedes SPE auf, indem die dazugehörige Marke auf 1 gesetzt wird. Nach Erkennung der
Änderung dieser Marke auf 1 startet jedes SPE sofort mit der Abarbeitung der zugewiesenen
Aufgaben. Nach Beendigung der Berechungen wird die Marke auf 2 gesetzt, um dem
Hauptprozessor das Ende der Tätigkeit zu signalisieren. Wenn alle Marken den Wert 2 haben
kann der Hauptprozessor die Ergebnisse auswerten und anschließend die Marken wieder auf 1
setzen, um mit der Bearbeitung der nächsten Aufgabe fortzufahren.
Die zweite Methode ist die Nutzung des Briefkastens. Der Hauptprozessor verteilt einen
Prozess, indem er jedem SPE das Signal „start“ sendet. Nach Erhalt des Signals „start“ beginnt
jedes SPE mit der Abarbeitung der der zugewiesenen Tätigkeiten. Hat das SPE seine Arbeit
beendet, sendet es dem Hauptprozessor das Signal „completion“ und wartet anschließend auf
das nächste Signal „start“. Sobald der Hauptprozessor von allen SPEs das Signal „completion“
erhalten hat, kann mit der Bearbeitung der nächsten Aufgabe fortgefahren werden. (vgl. [L05]
S. 260-261)
17.März 2008
Seite 32
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.5.
Adaptive Echtzeitfilterung für digitale Röntgenanwendungen
4.5.1.
Hintergrund
In den letzten zehn Jahren sind viele Methoden zur adaptiven Filterung von Datenströmen
entwickelt worden, wobei die adaptive Filterung in den Bereich der sehr rechenintensiven
Algorithmen gehört. Im Fall von Röntgenaufnahmen in Echtzeit, wie sie in der Chirurgie
eingesetzt werden, müssen die Systeme einen Durchsatz von 30 Bildern pro Sekunde
bereitstellen können. Zum Einsatz kommen meistens Kombinationen aus Hochpass- und
Tiefpassfilter. Um ein optimales Ergebnis bei der Aufbereitung dieser Bilder zu erzielen, werden
die Bilder mit mehreren unterschiedlichen Filtern bearbeitet und anschließend per Programm
bezüglich Schärfe und Kontrast analysiert. Daraufhin kann dann der optimale Filter angewandt
werden. Zudem kann der Benutzer in einem gewissen Rahmen (siehe Abbildung) die
Filterparameter modifizieren.
Abbildung 15 3D-Computertomographie [@21]
Der Nutzen dieser Filter liegt darin, dass die Bildqualität (Schärfe, Kontrast) gesteigert werden
kann, ohne dass die Dosis an Röntgenstrahlen erhöht werden muss und damit die
gesundheitliche Belastung für den Patienten steigt.
17.März 2008
Seite 33
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
In einer Studie nahmen die Entwickler Olivier Bockenbach, Michel Mangin und Sebastian
Schuberth (Mercury Computer Systems Deutschland und Frankreich) ein verallgemeinertes
Filter-Konzept und implementierten es auf einem Cell BE Processor. Das System ist in der Lage,
Bilder mit einem Durchsatz von mehr als 40 Bildern pro Sekunde zu filtern. Des Weiteren
besteht die Möglichkeit, in Echtzeit Parameter ändern zu können. (vgl. [L09] S. 578 – 579)
4.5.2.
Hardware
Die Systemhardware basiert auf einem Mercury Cell Technology Evaluation System (CTES),
welches aus einem IBM BladeCenter besteht. Dieses beinhaltet ein Dual Cell-Based Blade
(DCBB). Die Steuerung der Visualisierungsanwendungen und die adaptive Kombination der
Filter wurden auf einen Standard-PC ausgelagert. Beide Rechner wurden über Gigabit-Ethernet
miteinander verbunden. Der Visualisierungsserver kann wie ein Standard-PC betrachtet werden
und arbeitet mit dem Betriebssystem Microsoft Windows XP. Das DCBB ist um die Architektur
einer Cell Broadband Engine (CBE) aufgebaut und wurde so konstruiert, dass es mit anderen
Boards (DCBBs) innerhalb eines BladeCenters zusammenarbeiten kann. Ein DCBB Board ist mit
zwei CBE Prozessoren im Symmetric Multi Processor (SMP) Mode bestückt. Diese Prozessoren
arbeiten mit einer Taktrate von 3GHz. Jeder CBE Prozessor verfügt über 512 MB Rambus (XDR)
Arbeitsspeicher. Der Aufbau ist Abbildung 16 zu entnehmen. (vgl. [L10] S. 582)
Abbildung 16: Dual Cell Based Board [L10]
17.März 2008
Seite 34
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.5.3.
Funktionsweise
Die Cell-Prozessoren des DCBB empfangen den Bilderstrom über das Gigabit Netzwerk. Die
Bilder werden anschließend zur Berechnung (Anwendung der unterschiedlichen Filter) auf die
SPEs verteilt. Nach den Berechnungen werden die Bilder über das Netzwerk zum
Visualisierungsserver geschickt, wo von einer speziellen Software die Glättung und die adaptive
Kombination der Filter erfolgt, um ein optimales Bild anzuzeigen. Die Anwendung auf dem
Visualisierungsserver erfasst dazu die vom Benutzer festgelegten Werte und die von den SPEs
zurückgelieferten Bilder und berechnet daraus das optimale anzuzeigende Bild. (vgl. [L10] S.
583)
4.5.4.
Ergebnisse
Wie in Abbildung 17 zu sehen ist, kann durch die Anwendung verschiedener Filter die Qualität
der Bilder deutlich gesteigert werden. Bei dieser Implementierung wurde für Bilder mit einer
Auflösung von 1024 x 1024 Pixel eine Bildwiederholrate von 41 Bildern pro Sekunde erreicht.
Abbildung 17 (a) Originalaufnahme, (b) gefiltertes Röntgenbild [L10]
Die eingesetzte multiparallele Technologie erleichtert und beschleunigt, wie die Versuche
zeigten, die Echtzeitberechnungen großer Datenmengen. Es wäre somit ohne große
Schwierigkeiten möglich, Bilder mit unterschiedlichen Filtern auf mehreren Monitoren
darzustellen, und zusätzlich die Filterparameter in Echtzeit verändern zu können. Ein weiterer
Anwendungsbereich dieser Technik könnte die Echtzeitdarstellung für Anwendungen im
Bereich der Computertomographie sein. (vgl. [L10] S. 585 – 587)
17.März 2008
Seite 35
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.6.
Objekterkennung in Echtzeit
4.6.1.
Hintergrund
Die präzise Erkennung von Objekten auf Grundlage der Bildverarbeitung wird in vielen
eingebetteten Anwendungen benötigt, wo eine präzise Erkennung und Verarbeitung in Echtzeit
erwartet wird. In einem gemeinsamen Forschungsprojekt der Kyoto University und dem Nara
Institute of Science and Technology wurde zu dieser Thematik ein System entwickelt, welches
in Echtzeit sowohl Objekterkennung als auch Objektverfolgung realisiert. Aufgrund der
bestehenden Parallelität der Aufgabenstellung wurde das System auf einem Cell-Prozessor
basierend entwickelt. (vgl. [L09] S. 932)
Mit dem System ist es möglich, bei einer Bildwiederholrate von 22 Bildern pro Sekunde
gleichzeitig die Objekterkennung eines bestimmten Objekts und die Objektverfolgung von drei
unterschiedlichen Objekten zu realisieren. Bei einer Reduzierung der Bildwiederholrate auf 18
Bildern ist es möglich, gleichzeitig die Objekterkennung eines bestimmten Objekts und die
Objektverfolgung von sieben unterschiedlichen Objekten zu realisieren. Die Bildgröße lag bei
diesen Messungen bei 320x240 Pixeln, also ein Viertel der Standard-VGA-Auflösung. (vgl. [L09]
S. 932)
Die dabei zum Einsatz kommenden Verfahren lauten „boosting-based detection“ und
„histogram-based tracking“, welche im Folgenden kurz erläutert werden.
17.März 2008
Seite 36
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.6.2.
boosting-based detection
Boosting (engl. „Verstärken“) ist ein Algorithmus der automatischen Klassifizierung, der
mehrere schlechte Klassifikatoren zu einem einzigen guten Klassifikator verschmilzt. Boosting
kann überall dort verwendet werden, wo eine automatische Klassifikation in zwei Gruppen
benötigt wird, beispielsweise um Bilder von Gesichtern in „bekannt“ und „unbekannt“ oder
Produkte auf einem Fließband als „in Ordnung“ oder „fehlerhaft“ einzustufen. Vorgegeben sind
eine Reihe von Objekten und eine Reihe schwacher Klassifikatoren. Gesucht ist ein Klassifikator,
der die Objekte möglichst fehlerfrei in zwei Klassen einteilt. Boosting kombiniert die
vorhandenen schwachen Klassifikatoren, sodass der entstehende neue Klassifikator möglichst
wenige Fehler macht. Schwache Klassifikatoren sind sehr einfach aufgebaut und
berücksichtigen meist nur ein einziges Merkmal der Objekte. Für sich genommen liefern sie
deswegen einerseits schlechte Ergebnisse, können aber andererseits sehr schnell ausgewertet
werden. Boosting führt alle schwachen Klassifikatoren mit einer Gewichtung so zusammen,
dass die stärkeren unter den schwachen Klassifikatoren besonders berücksichtigt werden, die
wirklich schwachen hingegen ignoriert werden. [L09]
Als Beispiel für das Funktionsprinzip des Boosting sei hier die automatische Klassifizierung von
Versicherungsnehmern bei einer KFZ-Versicherung genannt. Um das Risikopotential eines
Verkehrsteilnehmers einschätzen zu können, gibt es keine komplexe aber allgemeingültige
Regel. Es ist viel einfacher, anhand mehrerer „Faustregeln“ und deren Kombination auf das
richtige Ergebnis zu kommen. (siehe [@22] und [@23])
Alter
23
17
43
68
32
Autotyp
Familie
Sport
Sport
Familie
LKW
Risiko
hoch
hoch
hoch
niedrig
niedrig
Abbildung 18 Klassifizierung von Versicherungsnehmern [@23]
Anhand einfacher Klassifikatoren werden in diesem Beispiel die Versicherungsnehmer in
Risikogruppen unterteilt:
if Alter > 50 then Risikoklasse = Niedrig;
if Alter ≤ 50 and Autotyp = LKW then Risikoklasse = Niedrig;
if Alter ≤ 50 and Autotyp ≠ LKW then Risikoklasse = Hoch;
17.März 2008
Seite 37
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.6.3.
histogram-based tracking
In der digitalen Bildverarbeitung versteht man unter einem Histogramm die statistische
Häufigkeit der Grauwerte bzw. der Farbwerte in einem Bild. Das Histogramm eines Bildes
erlaubt eine Aussage über die Häufigkeit der vorkommenden Grau- bzw. Farbwerte und über
Kontrast und Helligkeit des Bildes. Die Anzahl der Farbkanäle in einem Bild ist abhängig vom
Modus, d.h. pro Farbauszug gibt es einen Kanal. (vgl. [@24])
Ein Histogramm visualisiert die Verteilung der Helligkeitswerte eines Bildes. Über einer Achse,
die den Wertebereich der Farbwerte darstellt, sind als Balken die einzelnen Häufigkeiten des
Vorkommens der Farbwerte aufgetragen. Je höher der Balken über einem Farbwert ist, desto
häufiger kommt dieser Farbwert im Bild vor. (vgl. [@24])
Anhand des Histogramms wird versucht, die gesuchten Objekte auf den Bildern zu finden und
damit „zu verfolgen“. Dazu wird das zu untersuchende Bild in mehrere Segmente unterteilt und
mit einem vorher definierten Muster-Histogramm verglichen, welches die charakteristischen
Merkmale des Objekts aufweist. Im Fall der Verfolgung von Gesichtern sind dies beispielsweise
die mögliche Haut- und Haarfarbe. Der Bereich mit der größten Schnittmenge ist dann das
Bildsegment, welches das gesuchte Gesicht enthält, sofern diese Schnittmenge einen gewissen
Schwellwert überschreitet. (vgl. [@25])
Abbildung 19 Verfolgung von Gesichtern mittels Histogramm [@25]
17.März 2008
Seite 38
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.6.4.
Implementierung auf einem Cell-Simulator
Um die Leistungsfähigkeit des Cell-Prozessors nutzen zu können, wurde der Gesamtprozess in
mehrere unabhängige Teile getrennt, um diese dann von den einzelnen SPEs parallel
bearbeiten zu lassen. Die Erstellung und Skalierung der Teilbilder sowie die Festlegung des zu
suchenden Musters (Kenndaten) wird vom PPE übernommen. Die Suche nach den Kenndaten
wird von den SPEs übernommen. (vgl. [L09] S. 936)
Abbildung 20: Parallele Erkennung von mehreren SPEs [L09]
Dazu wird das Bild zunächst in mehrere Teilbilder unterteilt. Anschließend werden die Teilbilder
nach allen Eigenschaften des gesuchten Musters durchsucht. Werden alle Eigenschaften des
Musters gefunden, wird das Bild verkleinert und die Suche startet erneut. Es tritt also eine
sukzessive Verkleinerung des Bildes und damit eine Eingrenzung des gesuchten Musters auf.
(vgl. [L09] S. 937)
Innerhalb der SPEs wird die Suche nach Kenndaten parallel ausgeführt, indem eine SIMD
Operation durchgeführt wird. Die Erkennung wird beschleunigt, indem das Suchfenster zu den
benachbarten Koordinaten verschoben wird. In dieser Phase können vier Suchoperationen
parallel ausgeführt werden, da der SIMD-Vector der SPE auf vier Integer-Variablen simultan
operieren kann. (vgl. [L09] S. 938 - 939)
17.März 2008
Seite 39
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.6.5.
Ergebnisse der Implementierung auf einem Cell-Simulator
Die folgenden Ergebnisse wurden ermittelt, indem die zu bearbeitenden Bilder vorher in
Graustufen-Bilder mit 7 Bit Farbtiefe umgewandelt und statisch im Speicher des
Hauptprozessors abgelegt wurden. Die Größe der zu verarbeitenden Bilder betrug 320 x 240
Pixel und die Größe der zu suchenden bzw. zu verfolgenden Kenndaten betrug 24 x 24 Pixel. Die
eben genannten Werte wurden experimentell ermittelt. Um eine optimale Auslastung der
Hardware zu erreichen, wurden Messungen der Objekterkennung und der Objektverfolgung
durchgeführt. Die Ergebnisse können Abbildung 21 entnommen werden.
Abbildung 21: Verarbeitungszeit der Objekterkennung und Objektverfolgung [L09]
Die Ergebnisse zeigen, dass die Verarbeitungszeit der Objekterkennung mit der Zunahme der
SPEs abnimmt. Allerdings steigt die Verarbeitungszeit, wenn die Anzahl der SPEs größer als drei
wird. Ab einer Anzahl von 3 SPEs wird der Aufwand des PPE vermutlich zu hoch, die Bilder in
Teilbilder zu unterteilen, zur Weiterverarbeitung an die SPEs weiterzugeben, sowie die
Ergebnisse der SPEs wieder auszuwerten. Die Verarbeitungszeit der Objektverfolgung nimmt
mit der Zunahme der SPEs ebenfalls ab. Allerdings steigt auch hier vermutlich aus den gleichen
Gründen die Verarbeitungszeit, wenn die Anzahl der SPEs größer als vier wird. Da die
Messungen einen Anstieg der Verarbeitungszeiten mit zunehmender Anzahl SPEs ab einer
bestimmten Anzahl ergeben haben, wurden die Messungen mit 6 SPEs gar nicht mehr
durchgeführt. (vgl. [L09] S. 940)
In Anbetracht der Verarbeitungszeiten und der zur Verfügung stehenden Ressourcen (6 SPEs in
der Playstation 3) sind für den kombinierten Betrieb (gleichzeitige Erkennung und Verfolgung
von Objekten) mehrere Szenarien möglich:
Bei einer Verwendung von zwei SPEs für die Objekterkennung und vier SPEs für die
Objektverfolgung können sieben unterschiedliche Objekte von den dazu zur Verfügung
stehenden vier SPEs verfolgt werden (7 x 7,32 ms = 51,24 ms), während die zwei SPEs für die
Objekterkennung ein bestimmtes Objekt im Bild suchen (51,4 ms). Diese Aufteilung ermöglicht
17.März 2008
Seite 40
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
eine theoretische Bildwiederholrate von 19,46 Bildern pro Sekunde (1000 / 51,4 = 19,455253),
praktisch wurde eine Bildwiederholrate von 18 Bildern pro Sekunde erreicht.
Werden drei SPEs für die Objekterkennung und drei SPEs für die Objektverfolgung verwendet,
können drei unterschiedliche Objekte von den dazu zur Verfügung stehenden drei SPEs verfolgt
werden (3 x 12,11 ms = 36,33 ms), während die drei SPEs für die Objekterkennung ein
bestimmtes Objekt im Bild suchen (45,06 ms). Diese Aufteilung ermöglicht eine theoretische
Bildwiederholrate von 22,19 Bildern pro Sekunde (1000 / 46,06 = 22,192632), praktisch wurde
eine Bildwiederholrate von 22 Bildern pro Sekunde erreicht. (vgl. [L09] S. 940 – 941)
4.6.6.
Ergebnisse der Implementierung auf einer Playstation 3
Basierend auf den Ergebnissen der Simulation wurde ein Objekterkennungssystem entwickelt,
welches unter Verwendung der Playstation 3 in Echtzeit Objekte erkennt und verfolgt.
Abbildung 22: Versuchsaufbau mit einer Playstation 3 [L09]
Folgende Aufgaben müssen zusätzlich zu den in der Simulation aufgeführten Tätigkeiten
durchgeführt werden:
Ø Bilder in der Größe 640x480 (RGB) von der USB-Kamera laden
Ø Die Bilder auf die Größe 320x240 Pixel verkleinern und in Graustufen umwandeln
17.März 2008
Seite 41
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
Abbildung 23 zeigt die benötigte Verarbeitungszeit für die eben genannten Operationen.
Abbildung 23: Verarbeitungszeit auf der Playstation 3 [L09]
Mit
diesen
zusätzlichen
Verarbeitungszeiten
erreicht
das System nur
noch
eine
Bildwiederholrate von 7 Bildern pro Sekunde. Das Abholen der Bilddaten von der USB-Kamera
spielt in dieser Implementierung eine entscheidende Rolle. (vgl. [L09] S. 941 - 942)
Abbildung 24: Objekterkennung und Objektverfolgung [L09]
Abbildung 24 zeigt die Ergebnisse der Objekterkennung und Objektverfolgung mit dem zuvor
beschriebenen System. Die weißen bzw. grünen Quadrate entsprechen der Objekterkennung
bzw. der Objektverfolgung. Nachdem das System konfiguriert ist, erkennt es die Testperson als
zu erkennendes und zu verfolgendes Zielobjekt. (Frame 60) Daher befinden sich beide Quadrate
über dem Gesicht, da die Erkennung sowie die Verfolgung des Zielobjekts erfolgreich sind. In
den Frames 152, 192 und 248 ist die Objekterkennung fehlgeschlagen, aber die
Positionsbestimmung des zu verfolgenden Objekts durch die Objektverfolgung wurde
erfolgreich durchgeführt. Im Frame 263 ist das Zielobjekt wieder erfolgreich erkannt und die
Position erfolgreich bestimmt worden. (vgl. [L09] S. 942)
17.März 2008
Seite 42
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.7.
SSL-Beschleunigung unter Verwendung der Cell Broadband Engine
4.7.1.
Einführung
Die Weiterentwicklung von spezieller Hardware für Spiele wird im Vergleich zu einem
gewöhnlichen Prozessor immer einen merkbaren Leistungsgewinn erbringen. Numerische
Berechnungsverfahren mit einfacher oder doppelter Genauigkeit, welche in der Kryptographie
verwendet werden, haben mit dem Bereich der Hardwareentwicklung für Spiele jedoch nicht
sehr viel zu tun. (vgl. [L11] S. 1)
Neil Costigan und Michael Scott (School of Computing, Dublin City University, Ireland)
beschreiben die Leistungssteigerung für SSL (Secure Socket Layer) und die dazugehörige
Implementierung unter der Verwendung des Vektor Prozessors der Cell Broadband Engine. Sie
zeigen damit, dass noch große Verbesserungen durch die Verwendung von Hardware, die in
erster Linie für andere Zwecke entwickelt wurde, möglich sind.
4.7.2.
Hintergrund
Trotz der riesigen Leistungssteigerung in Bezug auf die Rechenleistung und Bandbreite ist SSL
nach wie vor die am weitesten verbreitete Verschlüsselungstechnik, um eine sichere
Kommunikation über das Internet, z.B. für Passwortanmeldungen und Kreditkartenzahlungen,
zu gewährleisten. Auch wenn für SSL bereits zahlreiche Sicherheitsprobleme bekannt sind,
gehört es zum de facto Standard für sichere Kommunikationslösungen. Krypthographische
Kommunikationsprotokolle wie SSL werden aber leider nur sehr selten eingesetzt. Das liegt
unter anderem daran, dass diese die Bandbreite sowie die Prozessorleistung auf dem Server
sehr stark belasten. Dieses führt wiederum zu Verzögerungen auf der Clientseite. (vgl. [L11] S. 1
– 2)
Ein interessantes Problem der unterschiedlichen Architekturen des PPE und der SPEs der Cell BE
ist der Bedarf an Programmen mit Multi-Instructions. Herkömmliche Anwendungen
kompilieren einzelne Quellmodule. Anschließend verknüpfen sie die Ergebnisse, um Variablen
und Funktionen miteinander zu verbinden. Für die SPEs muss allerdings ein eigener
Programmcode entwickelt werden, da die SPEs mit einem anderen Instruction Fetch arbeiten
als die PPEs und deren Speicher physikalisch separiert ist. Der Programmcode der PPE
Applikation ist des Weiteren für 64-Bit optimiert. Im Inneren der Anwendung ist ein Dateiobjekt
integriert, welches Befehle und Daten beinhaltet. Dieses Objekt wird über eine
17.März 2008
Seite 43
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
createthread() Funktion vom Compiler der PPE aufgerufen und damit zur SPE übertragen.
Dieser Prozess umfasst zwei getrennte Compiler und Linker. Der ELF-Code der SPE wird mittels
eines embedspu Befehls, welcher eine Hülle bildet, mit PPE kompatiblen Eigenschaften
markiert. Am Ende verbindet eine letzte Verknüpfungsstufe alle ausführbaren Programmteile
miteinander. (vgl. [L11] S. 4) In Abbildung 25 ist die Erstellung der Programme für die SPEs und
der PPEs dargestellt.
Abbildung 25 Prozess zur Erstellung der SPE und PPE Programme [L11]
17.März 2008
Seite 44
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.7.3.
Der Einsatz des Cell-Prozessors als ein Hardware-Security-Model
Der Cell-Prozessor wurde nach einer speziellen Sicherheitsarchitektur konzipiert. In erster Linie
wird die Verwaltung der digitalen Rechte (Digital Rights Management, DRM) unterstützt.
Allerdings
existiert
eine
offene
Schnittstelle
für
Entwickler,
um
zusätzliche
Sicherheitsfunktionen in den auf den SPEs ausgeführten Programmcode zu implementieren.
Diese Architektur kann dazu verwendet werden, um sicherheitskritischen Programmcode
innerhalb einer geschützten Umgebung, wie eines Hardware Security Models, auszuführen. Die
meisten kommerziellen Anbieter von SSL-Beschleunigern verwenden Hardware Security Models
auf Basis von High-End Hardware.
Um den kritischen SSL-Code in einer geschützten Umgebung zu betreiben, kann dieser auf
einem SPE im isolated mode ausgeführt werden. Für einen SSL-Beschleuniger ist es daher
möglich, dass jeder Schüsselgenerierungsprozess die Möglichkeit hat, auf einen sicheren
kryptographischen Zahlengenerator zuzugreifen. Des Weiteren können die Schlüsseldaten vor
anderen Prozessen innerhalb des Cell Prozessors geschützt werden. Außerdem können
Schlüsseldaten in den Bereichen des gemeinsamen genutzten Speichers chiffriert werden und
der Programmcode kann deren Integrität überprüfen.
Der Cell Prozessor erreicht dieses Sicherheitslevel, indem man einen hardwarebasierten
Prozess verwendet. Dieser kann wie folgt charakterisiert werden:
1. Der Programmcode und die Daten innerhalb einer SPE können nur im physikalisch
abgetrennten Speicherbereich ausgeführt werden.
2. Es existiert ein hardwarebasiertes Codesignierungsverfahren, welches die Integrität des
auszuführenden Programmcodes verifiziert.
3. In einer SPU isolierter Programmcode hat die Möglichkeit, aus den Seriennummern der
eingebauten Hardwarekomponenten Schlüssel zur Ver- bzw. Entschlüsselung von Daten
zu generieren. Diese Funktion kann nur von verifiziertem Code genutzt werden.
4. Der Zufallszahlengenerator kann so konfiguriert werden, dass er eine physikalische
Quelle wie z.B. die Platine des Cell Prozessors zur Generierung von Zufallszahlen
verwendet. (Diese Funktion ist auf der Playstation 3 beschränkt)
Diese zusätzliche Sicherheit wirkt sich allerdings negativ auf die Leistung aus. Die Initialisierung
wird durch das sichere Hochfahren beeinträchtigt. Wenn die Daten außerhalb der SPE
gespeichert werden, führt das zu einer höheren Laufzeit während der Entschlüsselung. (vgl.
[L11] S. 4 – 5)
17.März 2008
Seite 45
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.7.4.
OpenSSL
„OpenSSL ist eine freie Implementierung des SSL/TLS-Protokolls und bietet darüber hinaus
weitergehende
Funktionen
zur
Zertifikatsverwaltung
und
zu
unterschiedlichen
kryptographischen Funktionen. Es basiert auf dem SSLeay-Paket, das von Eric A. Young und Tim
Hudson entwickelt wurde, und derzeit von einer unabhängigen Gruppe weiterentwickelt wird.
OpenSSL umfasst verschiedene Applikationen, beispielsweise zur Erzeugung von Zertifikaten,
von Zertifizierungsanträgen und zur Verschlüsselung. Die verschiedenen Applikationen sind
zusammengefasst im Kommandozeilen-Programm openssl.“ (vgl. [@26])
SSL arbeitet in zwei Phasen: Einem intial handshake und einer bulk encryption phase. Der
Handshake dient zur Identifikation und Authentifizierung der Kommunikationspartner auf Basis
asymmetrischer Verschlüsselungsverfahren und Public-Key-Kryptografie. Des Weiteren müssen
die eingesetzten kryptographischen Algorithmen und Schlüssel ausgehandelt werden. (vgl.
[@27])
Ein asymmetrisches Verschlüsselungsverfahren benötigt auf Grund des gemeinsamen
Geheimnisses
einen
höheren
Rechenaufwand
als
ein
symmetrisches
Verschlüsselungsverfahren. Daher wird der Schlüsselaustausch verwendet.
Durch die Analyse von Clock Cycles haben Zhao et al. (vgl. [L12]) herausgefunden, dass 90,4%
der
SSL-Handshakes
auf
x86
Prozessoren
aus
Public-Key
Operationen
bestehen.
Kryptographische Operationen beanspruchen in etwa 95% der gesamten Prozessorlast. Die
restliche Last verteilt sich auf die übrigen Arbeiten abseits der krypthographischen
Verarbeitung. (vgl. [L11] S. 6 – 7)
17.März 2008
Seite 46
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.7.5.
Implementierung
Für die Implementierung wurde eine PPE Bibliothek entwickelt, welche in OpenSSL integriert
werden kann. Das Herzstück dieser Bibliothek bildet ein SPU-ELF-Programm, welches Zugriff auf
die 128-Bit Register hat und die MPM Bibliothek von IBM verwendet. Dabei handelt es sich um
eine für Vektoren optimierte Mathematik-Bibliothek (vector optimised multi-precision Math
library). Dieses SPU Programm (Programmcode und Daten) benötigt lediglich 256KB und passt
daher vollständig in den lokalen Speicher der SPEs. Das PPE wird als ein Steuerelement
eingesetzt und verteilt unter Verwendung von Double Buffering die Daten sowie den Code an
die einzelnen SPEs. Damit alle SPEs dauerhaft und ohne Pausen beschäftigt sind, wird die
Funktion RSA_mod_exp() überladen. Damit kann die vollständige Leistung der RSAEntschlüsselung unter Verwendung des Chinese Remainder Theorem (vgl. [@28]) verwendet
werden. In Abbildung 26 ist das Zusammenspiel zwischen dem PPE und den SPEs graphisch
verdeutlicht.
Abbildung 26: Zusammenspiel zwischen dem PPE und den SPEs [L11]
17.März 2008
Seite 47
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
4.7.6.
Ergebnisse
In der nachstehenden Tabelle sind die Messergebnisse des Versuchs dargestellt. Die
erforderlichen Operationen zur Entschlüsselung von 4096Bit Schlüsseln wurden dabei von
lediglich einem SPE durchgeführt. Die Tabelle zeigt, dass der Cell-Prozessor bei der Verwendung
eines SPE in der Lage ist, 14,87 4096Bit Schlüssel pro Sekunde zu entschlüsseln. Werden diesem
Ergebnis die Kombinationsmöglichkeiten von 24096 gegenübergestellt, ist dieses eine enorme
Leistung. Durch den Einsatz der restlichen 5 SPEs steigert sich die Entschlüsselung um das
Sechsfache auf 89,22 4096Bit Schlüssel pro Sekunde.
Abbildung 27 Entschlüsselungsdauer von 4096-bit Schlüsseln als Simulation (ein SPE) [L11]
Die Simulation kann aufgrund der Komplexität den PPE-Overhead und die DMA-Transferzeiten
nicht berücksichtigen. Die Autoren (vgl. [L13]) gehen davon aus, dass die Ergebnisse der
Simulation nur geringfügig von der Realität abweichen. Die Messergebnisse der realen
Anwendung findet man in Abbildung 28. Die Abweichung der Simulation von der Realität
beträgt dabei knapp 5,5% (14,1s vs. 14,87s). Des Weiteren ist ersichtlich, dass das
Leistungspotential erst bei längeren Schlüsseln zur Geltung kommt, da hier das Verhältnis von
Nutzlast zu Overhead wesentlich besser ist. Auch die Delegation der Berechnungen an die SPU
lohnt sich erst bei Schlüsseln, die länger sind als 2048Bit.
17.März 2008
Seite 48
René Büst
Manuel Bohlken
Florian Brunkhorst
Rechnerstrukturen
Einsatzgebiete des Cell-Prozessors
Abbildung 28 Entschlüsselungsdauer 1 PPU vs. 1 SPU einer Playstation [L11]
Abbildung 29 Entschlüsselungsdauer 1 PPU vs. 1 SPU einer Playstation [L11]
Abbildung 29 verdeutlicht noch besser, wie leistungsstark das System bei der Verwendung aller
verfügbaren SPUs in der Playstation wird. Den 11 Entschlüsselungsvorgängen einer einzigen
PPU pro Sekunde stehen hier fast 84 Vorgänge durch die 6 SPUs gegenüber. Das entspricht
mehr als dem siebenfachen der PPU-Leistung.
Abbildung 30 Entschlüsselungsdauer 2 PPU vs. 16 SPU eines Cell-Blade-Centers [L11]
Abbildung 30 listet schließlich die Messergebnisse auf, die mit einem Cell-Blade-Center
ermittelt wurden, welches aus 2 Cell-Prozessoren und damit aus 2 PPUs und 16 SPUs besteht.
Auch hier wird wieder mehr als das siebenfache der PPU-Leistung erzielt.
17.März 2008
Seite 49
René Büst
Manuel Bohlken
Florian Brunkhorst

Documentos relacionados