Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.