Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

MASCHINENUNABHÄNGIGE CODEOPTIMIERUNG Philip Demey SEMINAR: ÜBERSETZUNG VON KÜNSTLICHEN SPRACHEN.

Ähnliche Präsentationen


Präsentation zum Thema: "MASCHINENUNABHÄNGIGE CODEOPTIMIERUNG Philip Demey SEMINAR: ÜBERSETZUNG VON KÜNSTLICHEN SPRACHEN."—  Präsentation transkript:

1 MASCHINENUNABHÄNGIGE CODEOPTIMIERUNG Philip Demey SEMINAR: ÜBERSETZUNG VON KÜNSTLICHEN SPRACHEN

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

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

4 Motivation 4 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: a = 8 * b Beispiel: b = a[i][j] 3AC: t1 = i * w1 t2 = j * w2 t3 = t1 + t2 b = a[t3]

5 Optimierungsmöglichkeiten 5

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

7 Optimierungsmöglichkeiten 2/5 Kopiepropagation Entfernung von Kopieranweisungen 7

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

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

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

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

12 Datenflussanalyse 12

13 Datenflussabstraktion 13 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 14

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

16 Datenflussanalyse 3/3 16 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 17 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 18 (Vorwärts gerichteter Datenfluss)

19 Lösung des Datenflussproblems 19 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 20 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 21 Iterativer Algorithmus:

22 Verfahren der Datenflussanalyse 22

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

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

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

26 Eliminierung teilweiser Redundanz 2/2 26 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 27 Ziel: Natürliche Schleifen identifizieren Auswirkung auf die Laufzeit von Programmanalysen Algorithmus kann auf hierarischer Struktur operieren

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

29 Weitere Verfahren Bereichsbasierte Analyse Symbolische Analyse 29

30 Zusammenfassung und Ausblick 30

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

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

33 Ausblick 33 Maschinenabhängige Optimierung 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 35 Aho, Lam, Sethi, Ullmann: Compiler – Prinzipien, Techniken und Werkzeuge, Addision-Wesley, 2008.

36 Spannbaum 36


Herunterladen ppt "MASCHINENUNABHÄNGIGE CODEOPTIMIERUNG Philip Demey SEMINAR: ÜBERSETZUNG VON KÜNSTLICHEN SPRACHEN."

Ähnliche Präsentationen


Google-Anzeigen