Dynamische Code-Verwaltung für die IBM Cell Broadband Engine

BearbeiterIn:Tobias Floßmann
Titel:Dynamische Code-Verwaltung für die IBM Cell Broadband Engine
Typ:Studienarbeit
Betreuer:Schell, D.; Klemm, M.; Werth, T.; Weigand, U.; Philippsen, M.
Status:abgeschlossen am 31. Oktober 2008
Vorausetzungen:

Die Cell Broadband Engine (Cell B.E.) [2] bekannt aus Sonys Playstation 3 ist ein Chip, dessen Einsatzgebiet weit über die Verwendung in Spielekonsolen und der Unterhaltungsindustrie hinausgeht. Durch seine hohe Rechenleistung und seine inhärente Parallelität eignet er sich auch für die Anwendung im wissenschaftlichen Rechnen.

Ein Cell-B.E.-Chip besteht aus 8 sogenannten Synergistic Processing Elements (SPE) mit jeweils eigenem, lokal verwaltetem Speicher. Dieser lokale Speicher (Local Storage, LS) von 256 KB dient zur Aufnahme des SPE-Programms sowie der Daten des SPE-Programms. Desweiteren enthält der Chip einen PowerPC-Kern, dessen Aufgabe in der Abarbeitung des Betriebssystems und von Nicht-SPE-Programmen besteht. Weiterhin ist der PowerPC-Kern für die Kontrolle der SPEs verantwortlich.

Da der LS der SPEs mit nur 256 KB sehr klein ist können nicht beliebig große Programme und Daten abgelegt werden. Insbesondere der ausführbare Code des SPE-Programms macht hier Probleme, da er manuell mittels Overlay-Techniken [3] in den LS geladen und verwaltet werden muss. Das IBM SDK für den Cell bietet hierfür bereits grundlegende Unterstützung, jedoch keine automatische Behandlung der Overlays [1]. Hierfür ist eine automatische, effiziente Lösung notwendig.

Thema:

Am Lehrstuhl wurde ein dynamischer Programmlader [3,4] entwickelt, der ein auszuführendes Programm grundblockweise in den Speicher eines eingebetteten Systems lädt. Ein Grundblock ist ein Code-Fragment dessen Instruktionen entweder alle oder keine davon ausgeführt werden. Das Laden von Grundblöcken garantiert somit automatisch, dass der Programmlader nur Code-Fragmente in den Speicher lädt, die zur Laufzeit auch wirklich sicher benötigt werden. Ist für die Programmausführung zu wenig Speicher auf dem Rechner vorhanden, so kann der Programmlader nicht mehr benötigten Programmcode wieder aus dem Speicher entfernen.

Die Lösung, nur wirklich benötigten Programmcode zu laden und zu entfernen, bietet sich zur automatischen Programmcode-Verwaltung auf SPEs an. In der aktuellen Version unterstützt der Programmlader nur i386- und ARM-Systeme. Eine Unterstützung für die SPE-Kerne bzw. PowerPC wurde noch nicht umgesetzt. Die Umsetzung des Programmladers auf die SPE/PowerPC-Architektur ist die zentrale Aufgabe dieser Studien-/Diplomarbeit.

Zuerst soll analysiert werden, auf welchem Teil des Cell-B.E.-Chips der Programmlader ausgeführt werden soll. Da der Programmlader selbst eine gewisse Codegröße besitzt, beschneidet eine Ausführung des Laders auf den SPEs den bereits knappen LS weiter. Eine Ausführung auf dem PowerPC-Teil des Chips belastet jedoch den PowerPC-Kern zusätzlich zu dessen administrativen Aufgaben. Es ist somit ein Kompromiss zu finden, der das Gesamtsystem möglichst wenig belastet und eine optimale Leistungsfähigkeit gewährleistet.

Der existierende Programmlader ist anschließend auf die Cell-B.E.-Architektur zu portieren. Hierbei sollen die Ergebnisse der Analysephase beachtet werden, so dass der Programmlader optimal auf dem Chip ausgeführt werden kann. Die Optimierung des Programmladers auf die Cell-B.E.-Architektur bildet den Abschluss der Implementierungsarbeit. Durch Messungen soll die Leistungsfähigkeit des Laders beurteilt werden. Aufgrund der Messungen sind Leistungsprobleme zu identifizieren und zu lösen. Für die Messung sind geeignete Benchmark-Programme zu benutzen, so dass der Programmlader unter einer repräsentativen Last vermessen werden kann.

Die Arbeit schließt mit einer Ausarbeitung, in der die gesamte Arbeit zusammenfassend beschrieben wird. Die Analyse der Cell-B.E.-Architektur, die Implementierung und Optimierung des Laders sollte detailliert beschrieben werden. Aussagekräftige Messungen und Interpretation der Ergebnisse runden die Ausarbeitung ab.

Meilensteine

  • Einarbeitung in den existierenden Programmlader
  • Analyse der Cell-B.E.-Architektur und Festlegung der Architektur des Programmladers
  • Portierung des Programmladers auf die Cell-B.E.-Architektur
  • Messungen und Optimierung des Programmladers
  • Messungen zur abschließenden Leistungsbewertung
  • Ausarbeitung

Literatur
[1] IBM. Cell Broadband Engine resource center, http://www-128.ibm.com/developerworks/power/cell/
[2] Kahle, J. A., Day, M. N., Hofstee, H. P., Johns, C. R., Maeurer, T. R., and Shippy, D.: Introduction to the cell multiprocessor. In: IBM Journal of Research and Development 49(4/5):589-604, July 2005.
[3] Levine, J.R.: Linkers & Loaders, Morgan-Kaufmann Publishers, San Francisco, CA, USA, 2000. ISBN 1-55860-496-0.
[4] D. Schell, Basic Block Based Garbage Collection for Code. 2005. Nicht publiziert. http://www2.informatik.uni-erlangen.de/research/PARES/gc_for_code.pdf

watermark seal