Open Source im professionellen Einsatz

Anwendungsentwicklung für den Cell-Prozessor leicht gemacht

Cell-Kulturen

Die Synergistic Processing Elements (SPEs) sind die Leistungsträger der Cell Broadband Engine, bekannt als Cell-Prozessor. Die Programmierung der geselligen Arbeitstiere ist allerdings etwas trickreich. Dieser Artikel erklärt sie anhand eines einfachen Beispiels unter Linux.

Als Prozessor der seit 2007 in Europa erhältlichen Sony Playstation 3 hat die Cell-CPU (Kasten "Cell Broadband Engine Architecture") Aufsehen erregt. Im Gegensatz zu anderen Konsolenherstellern unterstützt Sony offiziell die Installation von Linux auf der Playstation. Sie ist im Web mehrfach beschrieben [1]. Zwei Besonderheiten sind bei Linux auf der PS 3 zu beachten. Erstens gelingt kein direkter Zugriff auf die Hardware: Zum Schutz seiner proprietären Firmware hat Sony eine Virtualisierungsschicht eingezogen. Und zweitens sind von den acht Recheneinheiten des Cell-Prozessors nur sechs für Linux-Programme verfügbar.

Reagenzgläser vorbereiten

Anwendungsentwicklung für den Cell-Prozessor macht natürlich besonders denen Spaß, die Zugriff auf Cell-basierte Rechner haben. Wer mit einem Cell-Bladeserver arbeitet, entwickelt seine Anwendungen in der Regel direkt auf der Cell-Plattform. Wenn nur eine Playstation 3 zur Verfügung steht, ist ein Linux-PC als Entwicklungsplattform sinnvoll: Der Speicher der Playstation ist mit 256 MByte nicht gerade üppig dimensioniert, was sich vor allem mit einer X11-Oberfläche bemerkbar macht.

Allerdings ist reale Cell-Hardware nicht unbedingt nötig. Zunächst reicht das bei IBM kostenlos erhältliche Software Development Kit [2]. Es passt für die Plattformen x86, x86_64 und PowerPC sowie für Cell-basierte Linux-Rechner.

Die neueste Version 3.1 des Cell-SDK unterstützt Fedora 9 und Red Hat Enterprise Linux 5.2. Sie umfasst die CD-Images »Developer« und »Extras« und ein RPM-Paket mit dem Installationsskript. Bis zur Version 3.0 lieferte das Cell-SDK für Fedora einen Systemsimulator mit, um die Anwendungen auch ohne reale Cell-Hardware zu testen und zu optimieren. Ab Version 3.1 ist der Simulator separat von der IBM-Webseite zu beziehen [3]. Die gerade erhältliche Version 3.1 ist eine Betaversion, funktioniert aber reibungslos unter Fedora 9.

Als Mindestanforderungen für die Hardware nennt IBM einen Intel Pentium 4 mit 2 GHz oder einen AMD Opteron für den Sockel F. Weiter benötigt das SDK 1 GByte Hauptspeicher und 5 GByte freien Plattenplatz. Für die Installation des Cell-SDK braucht die Linux-Installation die Pakete »rsync«, »sed«, »TCL« und »wget«. Der Rechner bedarf schließlich während der Installation eines Internetzugangs, da das Installationsskript diverse Pakete vom Barcelona Supercomputer Center nachlädt [4].

Cell-Kulturen anlegen

Das RPM-Paket »cell-install-3.1.0-0.0.noarch.rpm« kreiert das Verzeichnis »/opt/cell«, in das später die Entwicklungsumgebung samt Dokumentation wandert. Das Installationsskript akzeptiert den Pfad zu den CD-Images als Option:

/opt/cell/cellsdk --iso <emphasize>Verzeichnispfad</emphasize> install 

Diese Variante hat den Vorteil, dass man den Inhalt beider Images in einem Durchgang installieren kann. Sind die CD-Images des Cell-SDK auf CDs gebrannt, legt man nacheinander die Developer- und die Extras-CD ein und startet jeweils das Installationsskript separat mit »/opt/cell/cellsdk install«. Wer den Systemsimulator installiert hat, initialisiert ihn mit dem Skript »/opt/cell/cellsdk_sync_simulator«, wodurch er einige benötigte Teile des SDK nachinstalliert.

Die ISOs enthalten Bibliotheken und Werkzeuge, die größtenteils nicht quelloffen sind. Installationsdetails und Dokumentation befinden sich in »/opt/cell/sdk/docs/install«.

Cell Broadband Engine
Architecture

Sony Computer Entertainment, Toshiba und IBM entwickelten seit etwa 2001 die auf effiziente Verarbeitung von großen Datenströmen spezialisierte Cell Broadband Engine Architecture (CBEA). Große Datenströme kommen zum Beispiel in Multimedia-Anwendungen oder Computerspielen vor. Die erste Implementierung dieser Architektur ist die Cell Broadband Engine, auch Cell-Prozessor genannt, aus dem Jahr 2005 (Abbildung 1).

Abbildung 1: Die Cell-CPU ist in 90-Nanometer-Technologie gefertigt, die Transistoren auf Isoliermaterial aufbringt (Silicon on Insulator, SOI). (© Foto: IBM)

Abbildung 1: Die Cell-CPU ist in 90-Nanometer-Technologie gefertigt, die Transistoren auf Isoliermaterial aufbringt (Silicon on Insulator, SOI). (© Foto: IBM)

Der Cell-Prozessor besteht aus einem konventionellen Prozessorkern (Power Processing Element, PPE) mit 64-bittiger IBM-Power-Architektur und acht so genannten Synergistic Processing Elements (SPE, siehe auch Abbildung 2). Jedes der acht SPEs verfügt über einen lokalen Speicher von 256 KByte und einen DMA-Controller (Memory Flow Controller, MFC). Alle neun Prozessoren sind untereinander, mit dem Hauptspeicher und mit den Peripheriegeräten durch einen Datenbus (Element Interconnect Bus, EIB) verbunden.

Abbildung 2: Jedes Synergistic Processing Element (SPE) hat eine Synergistic Processing Unit (SPU), einen lokalen Speicher (LS) und Speicher-Controller (Memory Flow Controller, MFC). Vor dem Hauptspeicher sitzt ein Memory Interface Controller (MIC), vor der Ein-/Ausgabe ein Bus Interface Controller (BIC).

Abbildung 2: Jedes Synergistic Processing Element (SPE) hat eine Synergistic Processing Unit (SPU), einen lokalen Speicher (LS) und Speicher-Controller (Memory Flow Controller, MFC). Vor dem Hauptspeicher sitzt ein Memory Interface Controller (MIC), vor der Ein-/Ausgabe ein Bus Interface Controller (BIC).

Während das Betriebssystem auf dem PPE die Systemressourcen verwaltet, spezialisieren sich die SPEs auf algebraische Operationen. Ihre 128-Bit-Register verarbeiten pro Operation entweder vier 32-Bit-Zahlen (kurze Ganzzahlen oder Fließkommazahlen mit einfacher Genauigkeit) oder zwei 64-Bit-Zahlen (lange Ganzzahlen oder Fließkommazahlen mit doppelter Genauigkeit). Diese SIMD-Architektur (Single Instruction, Multiple Data) entspricht den MMX-Erweiterungen von PC-Prozessoren.

Eine Besonderheit der SPEs ist, dass sie nur mit Code und Daten arbeiten, die in ihrem lokalen Speicher liegen, also nicht auf den Hauptspeicher oder die Peripheriegeräte zugreifen. Anwendungen müssen selbst dafür sorgen, dass der richtige Code und die richtigen Daten lokal vorhanden sind. Die dazu notwendigen Datentransfers zwischen Hauptspeicher und lokalem SPE-Speicher organisiert deren DMA-Controller, ohne die SPU zu belasten.

Die größte Verbreitung hat der Cell-Prozessor vermutlich in der Sony Playstation 3 gefunden (Abbildung 4). Seine spektakulärste Anwendung ist hingegen mit Sicherheit der Roadrunner (Abbildung 5), der an der Spitze der Top-500-Liste steht und über 12000 Cell-Prozessoren nutzt [5]. Drei Cell-basierte Systeme führen zurzeit die Green-500-Liste an [6], die die Rechner der Top-500-Liste nach Energieeffizienz ordnet. Auf Server-Level finden sich Cell-Blades außer bei IBM auch bei Mercury Computer Systems, die außerdem eine PCI-Express-Karte mit einem kompletten Cell-Prozessor-Rechner darauf gebaut haben. Toshiba steckt in seine Qosimo-Notebooks eine Variante des Cell-Prozessors mit nur vier SPEs und ohne PPE, den der Hauptprozessor des Notebooks steuert.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook