Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann
2 Motivation Moderne Rechnerarchitekturen nutzen die parallele Befehlsausführung für eine beschleunigte/effiziente Programmausführung VLIW Very Long Instruction Word Mehrere Befehle zu einem VLIW-Befehl zusammengefasst Statische Planung Super- skalar Mehrere parallelarbeitende Funktionseinheiten Dynamische Planung Parallelität auf Instruktionsebene
3 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
4 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
5 Phasenstruktur eines Compilers Die Optimierung für Befehlsparallelität erfolgt auf Basis eines Zwischencodes und für eine spezifische Architektur Frontend Lexikalische AnalyseSyntaktische AnalyseSemantische Analyse Zwischencode- Generierung Optimierung Optimierung für Parallelität auf Instruktionsebene u.a. Backend Zielcode-Generierung
6 Darstellungsformen (1) Das Programmbeispiel berechnet den größten gemeinsamen Teiler zweier Zahlen nach Euklid Ursprungsprogramm (C#): Code für abstrakte Maschine: Generiere Zwischencode Abstrakte Maschine RISC-ähnliche Architektur Lade- und Speicherbefehl (LD bzw. ST) Addition und Subtraktion (ADD bzw. SUB) Bedingter Sprungbefehl (CJMP) 1x Rechenwerk (ALU) 1x Speicherkommunikationseinheit (MEM)
7 Darstellungsformen (2) Im Programm befindliche Steuerungs- und Datenabhängigkeiten lassen sich mit Hilfe von Graphen veranschaulichen Kontrollflussgraph (und Verfeinerung)Datenabhängigkeitsgraph SUB r5, r3 – r4 ST r0, r4 ST r1, r5 CJMP r4 > r2, S echte Datenabängigkeiten Ressourcenreservierungstabelle Kantenbeschriftung mit Verzögerungszeiten Steuerungsabhängigkeiten Beschreibt Programmfluss mit Bedingungsprüfungen Programmverzweigungen mit wahr (T) und unwahr (F)
8 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
9 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
10 Planung eines Grundblockes (1) Die lokale Codeplanung ergibt einen Ablaufplan für einen Grundblock, und stellt somit den ersten Schritt einer Optimierung dar Datenabhängigkeitsgraph: Optimiertes Maschinenprogramm: Listenplanung Grundsatz der Listenplanung „… berechnet der Algorithmus den frühesten Zeitpunkt, zu dem ein Knoten ausgeführt werden kann, gemäß seinen Datenabhängigkeiten zu den vorher verplanten Knoten.“ Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
11 Planung eines Grundblockes (2) Nicht alle Grundblöcke bieten die Möglichkeit einer parallelen Befehlsausführung Ablaufpläne optimierter GrundblöckeAuswertung Grundblock A: Keine parallele Ausführung Grundblock B: Benötigt 3 statt 4 Takte Grundblock C: Keine parallele Ausführung Fazit Die Listenplanung im Rahmen der lokalen Ablaufplanung erfasst nur ein geringes Parallelitätspotential.
12 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
13 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
14 Planung mehrerer Grundblöcke / Bereiche (1) Im Rahmen der Bereichsplanung erfolgt eine Herausarbeitung von Parallelität über Grundblockgrenzen hinaus Dominanzbeziehungen und Parallelitätskonzepte Bereichsplanung berücksichtigt Dominanzbeziehungen einfache Codeverschiebung (aufwärts) spekulative Ausführung erfolgt an Hand eines azyklischen Graphen Ein Bereich ist eine Menge von Grundblöcken und im Programmablauf nur durch einen Eingangspunkt erreichbar. (Definition in Anlehnung an David Bernstein, Michael Rodeh) Dominanzbeziehungen zwischen Grundblöcken Dominanz Postdominanz Konzepte einfache Codeverschiebung aufwärts abwärts Spekulative Ausführung Duplikation Kontrolläquivalenz
15 Planung mehrerer Grundblöcke / Bereiche (2) Die Bereichsplanung erfolgt von innen nach außen und ermöglicht die parallele Ausführung von Befehlen verschiedener Grundblöcke Global geplanter AblaufplanAuswertung ursprünglich: 11 Zeilen / max. 17 Takte jetzt: 9 Zeilen / max. 9 Takte Der Grad der parallelen Ausführung lässt sich mit Hilfe der Bereichsplanung steigern. Jedoch ist das Parallelitäts- potential auf Grund der azyklischen Optimierung von Schleifen begrenzt.
16 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
17 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining
18 Schleifentypen Zu beachtende Abhängigkeiten zwischen einzelnen Iterationen einer Schleife existieren in sogenannten Do-Across-Schleifen Do-Schleife z.B. Operationen auf Vektoren einzelne Schleifendurchläufe unabhängig einfacher Fall Do-Across-Schleife z.B. Berechnungen mit Zwischenprodukten Abhängigkeiten zwischen den Iterationen komplex
19 Abwickeln von Schleifen Bestehen keine Datenabhängigkeiten zwischen den Durchläufen, kann die Schleife theoretisch vollständig abgewickelt werden Viermal abgewickelte Do-Schleife sehr hohes Parallelitätspotential drastischer Codezuwachs Kompromiss notwendig Lösung Softwarepipeling: Ermöglicht die geforderte Ausführungs- beschleunigung mit einem geringen Zuwachs bzgl. des Codeumfangs.
20 Umsetzung der Do-Schleife in einer Softwarepipeline Eine Pipeline bietet i.d.R. schon für wenige Iterationen einen hohen, mit der Durchlaufzahl wachsenden Geschwindigkeitsvorteil. Bestandteile Prolog „Füllen“ der Pipeline einmalig ausgeführt Stationärer Zustand („Kernel“) Mini-Schleife maximale Parallelität n-fach ausgeführt Epilog „Leeren“ der Pipeline einmalig ausgeführt Softwarepipeline SZ bearbeitet n – 2 Iterationen SZ benötigt 2 (statt 3) Takte je Iteration Schleife muss mindestens 3x durchlaufen werden Konfliktprüfung: Modulare Ressourcenreservierungstabelle
21 Umsetzung der Do-Across-Schleife (1) Die Umsetzung einer Do-Across-Schleife findet auf Basis eines zyklischen Abhängigkeitsgraphen statt. GraphenerweiterungPlanungsverfahren Planung eines zyklischen Graphen Minimierung des Einleitungsintervalls ist nur NP-lösbar Vereinfachung durch Anwendung einer Heuristik Ober- und Untergrenze des Einleitungsintervalls liefert Ergebnisse nahe am Optimum Sukzessive Planung von SCCs (Strong Connected Components) Berechnung der längsten einfachen Pfade Zyklen haben keine Auswirkung garantiert Einhaltung aller Abhängigkeiten Rückverfolgung (engl. „Backtracking“)
22 Umsetzung der Do-Across-Schleife (2) Im Beispiel ergibt sich ein Einleitungsintervall s von 3 Takten VerfahrensanwendungSoftwarepipeline Rück- verfolgung
23 Umsetzung der Do-Across-Schleife (3) Eine geringe Codeverlängerung ist in Betracht des Geschwindigkeitszuwachses zu vernachlässigen Auswertung Codeverlängerung 8 Zeilen / Takte ursprünglich 5 Takte Gesamtausführungszeit Pipeline: 5 + 3n Takte ursprüngliche Schleife: 4 Takte Vorteil schon ab 6 Durchläufen Planung schon im 2. Versuch erfolgreich Fazit Softwarepipeling: Ermöglicht die geforderte Ausführungs- beschleunigung mit einem geringen Zuwachs bzgl. des Codeumfangs.
24 Hierarchische Reduktion Durch die hierarchische Reduktion wird das Konzept des Softwarepipelinings universeller anwendbar Bisher Schleifen mit nur einem Grundblock keine Verzweigungen innerhalb der Schleife umgebender Code nicht betrachtet Konzept der hierarchischen Reduktion ähnlich der Bereichsplanung (globale Codeplanung) Behandlung von Kontrollstrukturen „if-then-else“-Konstrukte Zurückführen auf elementares Objekt Objekt wird wie Grundblock behandelt reduzierte Objekte können überlappt werden Glassbox statt Blackbox (Bereichsplanung) Abhängigkeiten als Maximum beider Äste keine Ressourcenüberbeanspruchung Überlappung: Prolog/Epilog und andere Instruktionen Objekte erhalten Ressourcenverbrauch des SZ SZ darf nicht überlappt werden
25 Zusammenfassung Lokale Codeplanung für ein (Grundblock-)Element geringes Parallelitätspotential einfach zu planen Grundlage für globale Planung
26 Zusammenfassung Lokale Codeplanung Globale Codeplanung für ein (Grundblock-)Element geringes Parallelitätspotential einfach zu planen Grundlage für globale Planung Bereichsplanung mittleres Parallelitätspotential Dominanzbeziehungen
27 Zusammenfassung Lokale Codeplanung Globale Codeplanung Softwarepipelining für ein (Grundblock-)Element geringes Parallelitätspotential einfach zu planen Grundlage für globale Planung Bereichsplanung mittleres Parallelitätspotential Dominanzbeziehungen Schleifen Kompromiss Codelänge Geschwindigkeit hohes Parallelitätspotential
Vielen Dank für die Aufmerksamkeit!