Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009.

Ähnliche Präsentationen


Präsentation zum Thema: "Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009."—  Präsentation transkript:

1 Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann

2 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 3 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

4 4 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

5 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 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 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 8 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

9 9 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

10 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 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 12 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

13 13 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

14 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 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 16 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

17 17 Agenda Grundlagen Lokale Codeplanung Globale Codeplanung Softwarepipelining

18 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 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 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 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 22 Umsetzung der Do-Across-Schleife (2) Im Beispiel ergibt sich ein Einleitungsintervall s von 3 Takten VerfahrensanwendungSoftwarepipeline Rück- verfolgung

23 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 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 25 Zusammenfassung Lokale Codeplanung  für ein (Grundblock-)Element  geringes Parallelitätspotential  einfach zu planen  Grundlage für globale Planung

26 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 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

28 Vielen Dank für die Aufmerksamkeit!


Herunterladen ppt "Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann 03.06.2009."

Ähnliche Präsentationen


Google-Anzeigen