Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Maschinenunabhängige Codeoptimierung

Ähnliche Präsentationen


Präsentation zum Thema: "Maschinenunabhängige Codeoptimierung"—  Präsentation transkript:

1 Maschinenunabhängige Codeoptimierung
Seminar: Übersetzung von künstlichen Sprachen Maschinenunabhängige Codeoptimierung Philip Demey

2 Agenda Einordnung und Motivation Optimierungsmöglichkeiten
Datenflussanalyse Verfahren der Datenflussanalyse Zusammenfassung und Ausblick

3 Einordnung Dem Codegenerator optional vorgeschaltet
Agiert global auf Flussgraph Maschinenunabhängig Optimierung im Sinne von Verbesserung

4 Motivation 3AC erzeugt temporäre Variablen
Konstrukte höherer Programmiersprachen z. B. durch Arrayzugriff Redundanzen und teure Operationen Ziel: Vermeidung von Ineffizienz Entfernung unnötiger Befehle Ersetzung von Befehlen Beispiel: a = b + c * d 3AC: t1 = c * d a = b + t1 Beispiel: b = a[i][j] 3AC: t1 = i * w1 t2 = j * w2 t3 = t1 + t2 b = a[t3] Beispiel: a = 8 * b

5 Optimierungsmöglichkeiten

6 Optimierungsmöglichkeiten 1/5
Globale gemeinsame Teilausdrücke Wiederverwendung einer Berechnung ohne Änderung der benötigten Werte

7 Optimierungsmöglichkeiten 2/5
Kopiepropagation Entfernung von Kopieranweisungen

8 Optimierungsmöglichkeiten 3/5
Eliminierung von totem Code Entfernung nicht genutzter Variablen

9 Optimierungsmöglichkeiten 4/5
Kostenreduzierung Ersetzung von teuren Operationen

10 Optimierungsmöglichkeiten 5/5
Codeverschiebung Verlagerung von Codeteilen aus Schleifen

11 „Oberste Direktive“ Semantikerhaltende Transformationen
Sichere / Konservative Verfahren Keine Änderungen der Berechnungen Aber: Versäumung von Codeverbesserungen möglich Konservative Datenflussanalyse

12 Datenflussanalyse

13 Datenflussabstraktion
Nur Extraktion der nötigen Informationen Beispiel: Verfügbare Ausdrücke Ausdruck x + y ist an Punkt p verfügbar: Alle Pfade zu p werten x + y aus Nach letzter Auswertung keine Zuweisung zu x oder y

14 Datenflussanalyse 1/3 Sammeln von Informationen
Operiert auf Flussgraph Zustände an Programmpunkten Mathematischer Lösungsansatz Datenflussgleichungen

15 Datenflussanalyse 2/3 Pfade durch Flussgraph
Informationen zu Anfang und Ende der Blöcke DFA-Framework Iterativer Algorithmus

16 Datenflussanalyse 3/3 Programmpunkte Definitionen
Menge von Datenflusswerten Pfade: z. B. 1,2,3,4,5,6,7,8 z. B. 1,2,3,4,5,6,7,5,6,7,8

17 DFA-Framework Komponenten
Datenflussrichtung Vorwärts oder rückwärts Halbverband Menge von Definitionen Durchschnittsoperator Familie von Transferfunktion Transformiert Datenflusswerte Ein- und Ausstiegsknoten im Datenflussgraph Initialisierungswerte für Ein- und Ausstiegsknoten

18 Iterativer Algorithmus
(Vorwärts gerichteter Datenfluss)

19 Lösung des Datenflussproblems
Iterativer Algorithmus konvergiert und findet Lösung (MFP) Ideallösung (IDEAL) nicht erreichbar Näherung möglich (Meet-over-Path, MOP) Es gilt: MFP ist sicher

20 Beispiel: Erreichende Definitionen
Ziel: z. B. Ermittlung von Konstanten Definition d erreicht Punkt p, wenn d nicht auf Pfad zu p zerstört wird Definition d wird zerstört, wenn auf Pfad zu p eine andere Definition zur Variable existiert

21 Beispiel: Erreichende Definitionen
Iterativer Algorithmus:

22 Verfahren der Datenflussanalyse

23 Konstantenpropagation 1/2
Ziel: Ausdrücke die bei jeder Ausführung konstant sind durch Konstante ersetzen Halbverband:

24 Konstantenpropagation 2/2
Transferfunktion (für x = y+z) Problem: m(y) m(z) m‘(x) UNDEF c2 NAC c1 c1+c2

25 Eliminierung teilweiser Redundanz 1/2
Ziel: Anzahl der Auswertungen reduzieren Globale gemeinsame Teilausdrücke Schleifeninvariante Ausdrücke Teilweise redundante Ausdrücke

26 Eliminierung teilweiser Redundanz 2/2
Mehrfacher Durchlauf erforderlich Evtl. Einfügen neuer Blöcke nötig Evtl. Duplizierung von Code nötig Wünschenswert: Alle Redundanzen entfernt, die ohne Codeduplizierung entfernt werden können Keine neuen Berechnungen Möglichst späte Berechnung von Ausdrücken

27 Schleifen in Flussgraphen
Ziel: Natürliche Schleifen identifizieren Auswirkung auf die Laufzeit von Programmanalysen Algorithmus kann auf hierarischer Struktur operieren

28 Schleifen in Flussgraphen
Konzepte zur Identifizierung z. B. Dominatorbaum, Spannbaum a dom b

29 Weitere Verfahren Bereichsbasierte Analyse Symbolische Analyse

30 Zusammenfassung und Ausblick

31 Zusammenfassung Optimierungsmöglichkeiten
Datenflussanalyse als Werkzeug Generisches Datenflussanalyse-Framework Iterativer Algorithmus findet Lösung Optimierungen müssen sicher sein

32 Praxis: GCC GNU Compiler Collection: Hier C-Compiler
Mehrere Optimierungslevel -o0 bis -o3 Einzeloptionen, z. B. -fmerge-constants -ftree-dominator-opts -funswitch-loops

33 Ausblick Maschinenabhängige Optimierung Spezialgebiete Neue Methoden
z. B. Parallelisierung Spezialgebiete z. B. Objektorientierte Programmierung Neue Methoden z. B. Static Single Assignment Form z. B. Convergent Compiling

34 Vielen Dank! Fragen?

35 Referenzquelle Aho, Lam, Sethi, Ullmann: Compiler – Prinzipien, Techniken und Werkzeuge, Addision-Wesley, 2008.

36 Spannbaum


Herunterladen ppt "Maschinenunabhängige Codeoptimierung"

Ähnliche Präsentationen


Google-Anzeigen