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

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

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

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

MASCHINENUNABHÄNGIGECODEOPTIMIERUNG

Philip Demey

SEMINAR: ÜBERSETZUNG VON KÜNSTLICHEN SPRACHEN

Page 2: 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

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

3

Einordnung

Dem Codegenerator

optional vorgeschaltet

Agiert global auf Flussgraph

Maschinenunabhängig

Optimierung im Sinne

von Verbesserung

Lexikalische Analyse

Syntaxanalyse

Semantische Analyse

Zwischencodegenerator

MaschinenunabhängigeCodeoptimierung

Codegenerator

MaschinenabhängigeCodeoptimierung

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

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 * da = b + t1

Beispiel:a = 8 * b

Beispiel:b = a[i][j]

3AC: t1 = i * w1t2 = j * w2t3 = t1 + t2b = a[t3]

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

5Optimierungsmöglichkeiten

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

6

Optimierungsmöglichkeiten 1/5 Globale gemeinsame Teilausdrücke

Wiederverwendung einer Berechnung ohne

Änderung der benötigten Werte

B2

B1

a = 8 * b

i = i – 1c = 8 * ie = a + 8

B3

d = 8 * b

B2

B1

a = 8 * bt = a

i = i – 1c = 8 * ie = a + 8

B3

d = t

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

7

Optimierungsmöglichkeiten 2/5 Kopiepropagation

Entfernung von Kopieranweisungen

B2

B1

a = 8 * bt = a

i = i – 1c = 8 * ie = a + 8

B3

d = t

B2

B1

a = 8 * bt = a

i = i – 1c = 8 * ie = a + 8

B3

d = a

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

8

Optimierungsmöglichkeiten 3/5 Eliminierung von totem Code

Entfernung nicht genutzter Variablen

B2

B1

a = 8 * bt = a

i = i – 1c = 8 * ie = a + 8

B3

d = a

B2

B1

a = 8 * b

i = i – 1c = 8 * ie = a + 8

B3

d = a

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

9

Optimierungsmöglichkeiten 4/5 Kostenreduzierung

Ersetzung von teuren Operationen

B2

B1

a = 8 * b

i = i – 1c = 8 * ie = a + 8

B3

d = a

B2

B1

a = 8 * bc = 8 * i

i = i – 1c = c – 8e = a + 8

B3

d = a

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

10

Optimierungsmöglichkeiten 5/5 Codeverschiebung

Verlagerung von Codeteilen aus Schleifen

B2

B1

a = 8 * bc = 8 * i

i = i – 1c = c – 8e = a + 8

B3

d = a

B2

B1a = 8 * bc = 8 * ie = a + 8

i = i – 1c = c – 8

B3

d = a

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

11

„Oberste Direktive“

Semantikerhaltende Transformationen

Sichere / Konservative Verfahren Keine Änderungen der Berechnungen

Aber: Versäumung von

Codeverbesserungen möglich

Konservative Datenflussanalyse

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

12 Datenflussanalyse

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

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

a = b + cd = c + eb = a + e

1234

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

14

Datenflussanalyse 1/3

Sammeln von Informationen

Operiert auf Flussgraph

Zustände an Programmpunkten

Mathematischer Lösungsansatz

Datenflussgleichungen

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

15

Datenflussanalyse 2/3

Pfade durch Flussgraph

Informationen zu Anfang und Ende der

Blöcke

DFA-Framework

Iterativer Algorithmus

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

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

B2

B1

B3

d1: a = 8 * bd2: c = 8 * id3: e = a + 8

d4: i = i – 1d5: c = c – 8 goto B2

d6: d = a

1234

567

8

IN[B1]

OUT[B1]

IN[B2]

OUT[B2]

IN[B3]

OUT[B3]

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

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

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

18

Iterativer Algorithmus

(Vorwärts gerichteter Datenfluss)

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

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

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

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

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

21

Beispiel: Erreichende Definitionen

Iterativer Algorithmus:

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

22 Verfahren der Datenflussanalyse

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

23

Konstantenpropagation 1/2

Ziel: Ausdrücke die bei jeder Ausführung

konstant sind durch Konstante ersetzen

Halbverband:

UNDEF

NAC

-3 -2 -1 10 32 ......

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

24

Konstantenpropagation 2/2

Transferfunktion(für x = y+z)

Problem:

x = 3y = 4

x = 4y = 3

z = x + y

B1

B3

B2

m(y) m(z) m‘(x)

UNDEF

UNDEF UNDEF

c2 UNDEF

NAC NAC

c1

UNDEF UNDEF

c2 c1+c2

NAC NAC

NAC

UNDEF NAC

c2 NAC

NAC NAC

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

25

Eliminierung teilweiser Redundanz 1/2

Ziel: Anzahl der Auswertungen reduzieren Globale gemeinsame Teilausdrücke

Schleifeninvariante Ausdrücke

Teilweise redundante Ausdrücke

B2

B1

a = b + c

B2

B1

t = b + c

a = t

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

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

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

27

Schleifen in Flussgraphen

Ziel: Natürliche Schleifen identifizieren Auswirkung auf die Laufzeit von

Programmanalysen

Algorithmus kann auf hierarischer Struktur

operieren

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

28

Schleifen in Flussgraphen

Konzepte zur Identifizierung z. B. Dominatorbaum, Spannbaum

8

76

543

2

11

8

5

7

2

43

6

a dom b

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

29

Weitere Verfahren

Bereichsbasierte Analyse

Symbolische Analyse

B3

B1

R1

R2

R3

R5

R6

R4

B2

B4

B5

B6

R10

R9R8

R7

1) a = input();

2) b = a + 2;

3) c = b + 1;

4) if(c < a)

5) b = 1;

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

30 Zusammenfassung und Ausblick

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

31

Zusammenfassung

Optimierungsmöglichkeiten

Datenflussanalyse als Werkzeug

Generisches Datenflussanalyse-

Framework

Iterativer Algorithmus findet Lösung

Optimierungen müssen sicher sein

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

32

Praxis: GCC

GNU Compiler Collection: Hier C-Compiler

Mehrere Optimierungslevel -o0 bis -o3

Einzeloptionen, z. B. -fmerge-constants

-ftree-dominator-opts

-funswitch-loops

http://gcc.gnu.org/onlinedocs/gcc/Optimize-

Options.html

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

33

Ausblick

Maschinenabhängige Optimierung z. B. Parallelisierung

Spezialgebiete z. B. Objektorientierte Programmierung

Neue Methoden z. B. Static Single Assignment Form

z. B. Convergent Compiling

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

VIELEN DANK!

FRAGEN?

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

35

Referenzquelle

Aho, Lam, Sethi, Ullmann: Compiler –

Prinzipien, Techniken und Werkzeuge,

Addision-Wesley, 2008.

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

36

Spannbaum

8

7 6

3

5

4

2

1