Grundlagen paralleler Architekturen
Grundlagen paralleler Architekturen
Grundlagen paralleler Architekturen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Vorlesung Rechnerarchitektur 2 Seite 21<br />
Lehrstuhl für Rechnerarchitektur - Universität Mannheim<br />
<strong>Grundlagen</strong> <strong>paralleler</strong> <strong>Architekturen</strong><br />
Maschinenbefehle - Instruction Level Parallelism (ILP)<br />
Analyseverfahren von Compilern, die über Kontrollflußgrenzen hinausgehen, wurden zur<br />
Erkennung und Nutzung dieser Parallelitätsebene entwickelt [Nic85] [Gas89] [Ess90].<br />
Auch Schleifeniterationen von Berechnungen [Lil94] kann man auf diese Weise für die Ausnutzung<br />
der Parallelität heranziehen und dann ergeben sich erhebliche Gewinne, die zum<br />
Teil natürlich von den zugrunde liegenden Datenstrukturtypen stammen. Im Gegensatz zu<br />
den Vektoroperationen können aber auf dieser Ebene die Anweisungen innerhalb der Schleifen<br />
von größerer Allgemeinheit sein und müssen nicht auf Vektoroperationen abbildbar<br />
sein.<br />
Die Nutzung dieser Parallelitätsebene führt zu mehreren recht unterschiedlichen Architekturformen.<br />
Ihre gemeinsame Eigenschaft ist die enge Kopplung der Verarbeitungseinheiten,<br />
die den Aufwand für die Ablaufsteuerung und die Synchronisation zwischen den Verarbeitungseinheiten<br />
gering hält. Auch die mehrfädigen <strong>Architekturen</strong> (multi-threaded Architectures,<br />
MTA) nutzen diese Parallelitätsebene und versuchen die Latenzzeit der<br />
Synchronisation in der Bearbeitungszeit weiterer Basisblöcke zu verstecken.<br />
Die Parallelitätsebene der Maschinenbefehle enthält die Elementaroperation, die zur Lösung<br />
von arithmetischen Ausdrücken benötigt werden. Da diese Datenabhängigkeiten aufweisen,<br />
ist eine der wichtigsten Aufgaben des Compilers eine Datenabhängigkeitsanalyse zu erstellen,<br />
die es ermöglicht, den Abhängigkeitsgraph so zu transformieren [Kuc78], daß sich ein<br />
hohes Maß an konkurrenten Operationen ergibt.<br />
Die Ausnutzung dieser Parallelität geschieht durch parallele Funktionseinheiten innerhalb<br />
der Verarbeitungseinheiten. Die Ablaufsteuerung wird vom Compiler bereits zur Übersetzungszeit<br />
geplant oder zur Laufzeit von effizienten Hardwareresourcen innerhalb der Verarbeitungseinheiten<br />
ausgeführt. Beispiele hierfür sind VLIW-Prozessoren (‘very long<br />
instruction word’), superskalare Prozessoren und Pipeline-Prozessoren. Allerdings sind die<br />
Verarbeitungseinheiten, mit denen diese Parallelitätsebene gut ausnutzbar ist, immer nur so<br />
gut, wie der Compiler die dafür notwendigen Optimierungen beherrscht.<br />
Die feinkörnigen Datenflußsysteme nutzen ebenfalls diese Ebene, erkennen aber die parallel<br />
ausführbaren Operationen zur Laufzeit durch die in Hardware realisierte Datenflußsynchronisation.<br />
(Datenfluss vs. Kontrollfluss)<br />
WS03/04