Entwicklung eines Invalidation-Protokoll-basierten Cachekohärenz-Prozessors für ein Mehrprozessor-FPGA

BearbeiterIn:Peter Schlez
Titel:Entwicklung eines Invalidation-Protokoll-basierten Cachekohärenz-Prozessors für ein Mehrprozessor-FPGA
Typ:Studienarbeit
Betreuer:Veldema, R.; Bobda, C.; Philippsen, M.
Status:abgeschlossen am 20. Februar 2006
Vorausetzungen:

Wenn man ein FPGA-System programmiert, gibt es immer ein Tradeoff welche Teile der Berechnung auf einem normalen Prozessor und welche Teile durch den FPGA durchgeführt werden sollen. Beispielsweise zeigt ein FPGA Vorteile bei Berechnungen die auf einzelnen Bits operieren, während ein normaler Prozessor bei "normalen" und stark kontrollflussabhängigen Berechnungen seine Stärken ausspielen kann. Es erscheint als gute Idee, beide Welten für eine Berechnung zu integrieren.

Ein anderes Problem ist, dass für die Berechnung mancher Probleme ein einziger Prozessor nicht ausreicht. Für solche Probleme muss man die Berechnung auf mehrere Prozessoren verteilen. Dabei ist zu klären, wie die Prozessoren unter einander kommunizieren sollen.

Ein möglicher Weg ist durch den expliziten Austausch von Nachrichten, ein anderer durch gemeinsamen Speicher. Um den gemeinsamen Speicher effizient ansprechen zu können, wird ein sogenannter Speicherkohärenzprozessor (SKP) benötigt, der konkurrierende Speicherzugriffe auflöst. Dabei ist ein SKP eine Schnittstelle zwischen Prozessoren und dem Speichersubsystem.

Konzeptuell wird jeder Prozessor mit einem dedizierten SKP verbunden. Diese wiederum stehen in Verbindung mit dem gemeinsamen Hauptspeicher. Dabei kommunizieren die SKP unter einander über ein Protokoll, das dem Programmierer ein bestimmtes Speicherkonsistenzmodell garantiert.

Bei jedem Datenzugriff muss der SKP prüfen, ob die Daten bereits im lokalen Cache des Prozessors vorliegen. Liegen die Daten nicht vor, so muss überprüft werden, ob bereits ein anderer Prozessor die Daten im Cache hält. Ist auch dies nicht der Fall, so müssen die Daten aus dem Hauptspeicher angefordert werden. Hat jedoch ein anderer Prozessor die Daten lokal im Cache, bestimmt das Konsistenzprotokoll welche weiteren Schritte nötig sind.

Es existieren hierzu zwei grundlegende Protokolle: das Update-Protokoll und das Invalidierungsprotokoll. Das Update-Protokoll schickt die Änderungen von einem Prozessor an die Caches der anderen Prozessoren (und womöglich auch in den Hauptspeicher). Das Invalidierungsprotokoll läßt den Prozessor warten bis der Besitzer der Daten den anzufordernden Cache-Bereich (Cache-Line) verarbeitet hat. Danach übernimmt der anfragende Prozessor die Daten des Cache-Blocks und wird deren neuer Eigentümer. Die alten Daten werden damit als ungültig markiert.

Thema:

Am Lehrstuhl für Informatik 10 ist ein FPGA-System verfügbar, das mehrere PowerPC-Prozessoren integriert. Als Problem stellt sich die Frage, wie man die Prozessoren auf dem System miteinander kommunizieren läßt. Läßt sich das Protokoll so erweitern, dass es auch mit der Außenwelt (z.B. mittels Ethernet) kommunizieren kann?

Auf Seite 69 des PowerPC-405-Handbuchs wird erläutert, wie ein PowerPC-Prozessor normalerweise mit dem Hauptspeicher kommuniziert. Der Prozessor stellt hierfür verschiedene Schnittstellen für Instruktions- und für Datenzugriffe bereit. Im Rahmen der Arbeit liegt der Fokus auf den Datenzugriffen.

Im Rahmen dieser Arbeit soll ein SKP entwickelt werden, der

  • ein Invalidierungsprotokoll als Konsistenzprotokoll nutzt
  • erlaubt, dass zur Laufzeit mehrere (Software/FPGA-implementierte Prozessoren hinzugefügt werden können
  • flexible I/O-Schnittstellen erlaubt, so dass nicht nur lokale Speicherzugriffe möglich sind, sondern mindestens auch Zugriffe über Ethernet unterstützt.
watermark seal