Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Grundlagen der Übersetzung und Optimierung von Programmiersprachen Seminar: Techniken der Code-Optimierung für moderne Rechnerarchitekturen Betreuer: Martin.

Ähnliche Präsentationen


Präsentation zum Thema: "Grundlagen der Übersetzung und Optimierung von Programmiersprachen Seminar: Techniken der Code-Optimierung für moderne Rechnerarchitekturen Betreuer: Martin."—  Präsentation transkript:

1 Grundlagen der Übersetzung und Optimierung von Programmiersprachen Seminar: Techniken der Code-Optimierung für moderne Rechnerarchitekturen Betreuer: Martin Schulz Referent: Markus Ibba

2 Übersicht Grundlagen der Übersetzung eines ProgrammesGrundlagen der Übersetzung eines Programmes Konzepte zur OptimierungKonzepte zur Optimierung AusblickAusblick

3 Grundlagen der Übersetzung eines Programmes Übersicht eines ÜbersetzungsvorgangesÜbersicht eines Übersetzungsvorganges Analyse des QuellprogrammsAnalyse des Quellprogramms –Lexikalische Analyse –Syntaxanalyse –Semantische Analyse FehlerbehandlungFehlerbehandlung

4 Übersicht eines Übersetzungsvorganges

5 Analyse des Quellprogramms Lexikalische Analyse (Scanner)Lexikalische Analyse (Scanner) (=Lineare Analyse) –Lesen des Zeichenstromes –Aufteilung in Symbole (tokens) –Aufbau der Symboltabelle

6 Lexikalische Analyse (Scanner) Aufbau der SymboltabelleAufbau der Symboltabelle position = initial + rate * 100

7 Analyse des Quellprogramms Syntaxanalyse (Parser)Syntaxanalyse (Parser) (= hierarchische Analyse) –Beschreibung der Syntax der Programmiersprache (kontextfreie Grammatiken, BNF) –Zusammenfassen der Symbole zu grammatikalischen Sätzen

8 Syntaxanalyse (Parser) Der Parse-BaumDer Parse-Baum position = initial + rate * 100

9 Analyse des Quellprogramms Semantische AnalyseSemantische Analyse –Konsistenz zwischen Deklaration und Definition (Methoden, Variablen) –Statische Überprüfungen TypüberprüfungTypüberprüfung Überprüfung des KontrollflussesÜberprüfung des Kontrollflusses Überprüfung auf EindeutigkeitÜberprüfung auf Eindeutigkeit

10 Fehlerbehandlung Recovery-StrategienRecovery-Strategien –Panische Recovery –Konstrukt-orientierte Recovery –Fehlerproduktion –Globale Korrektur

11 Konzepte zur Optimierung -> Ziel: Laufzeit und/oder Größe eines Programmes reduzieren Übersicht eines Übersetzungsvorganges eines optimierenden CompilersÜbersicht eines Übersetzungsvorganges eines optimierenden Compilers –Analyse –Codetransformation OptimierungstechnikenOptimierungstechniken

12 Idee einer Optimierung Anwendungsprogrammierer braucht kein umfangreiches Wissen über die Maschinenarchitektur auf der er programmiert.Anwendungsprogrammierer braucht kein umfangreiches Wissen über die Maschinenarchitektur auf der er programmiert. Hardwarehersteller brauchen nur noch Schnittstelle für den Compiler selber zu designen.Hardwarehersteller brauchen nur noch Schnittstelle für den Compiler selber zu designen.

13 Übersicht eines Übersetzungsvorganges

14 ‚Control dependence‘ 1:if (3 == a) 2: b = 10; Abhängigkeit zwischen Ausdruck 1 und 2. -> Generierung des ‚Control Flow Graph‘ (CFG).

15 CFG - Control Flow Graph

16 ‚Data dependence‘ a = c * 10; d = 2 * a + c; ‚flow dependence‘ e = f * 4 + g; g = 2 * h; ‚anti dependence‘ a = b * c; a = d + e; ‚output dependence‘ Die Datenflußanalyse wird im 3. Vortrag behandelt

17 Codetransformation -> Bestandteil jeder Optimierung Allgemeiner Ablauf einer TransformationAllgemeiner Ablauf einer Transformation Beispiel einer TransformationBeispiel einer Transformation

18 Allgemeiner Ablauf einer Transformation Programmstück finden, welches sich für die Optimierung eignetProgrammstück finden, welches sich für die Optimierung eignet Sicherstellen, daß die Transformation die Semantik des Programmes nicht ändertSicherstellen, daß die Transformation die Semantik des Programmes nicht ändert Programm transformierenProgramm transformieren

19 Beispiel einer Transformation

20

21 Fehler 1: ÜberlaufFehler 1: Überlauf Eingabe: b[k] = max. Floatzahl - 1.0; a[1] = -2.0; a[1] = -2.0; Überlauf bei C = b[k] + 2.0; Fehler 2: ErgebnisabweichungFehler 2: Ergebnisabweichung Unterschiede im Ergebnis durch die Vertauschung der Additionsreihenfolge

22 Beispiel einer Transformation Fehler 3: ZugriffsfehlerFehler 3: Zugriffsfehler Eingabe: k = m + 1; n = 0; Referenz zu b[k] nicht definiert. Tritt im Original durch n = 0 nicht auf.

23 Optimierungstechniken Partial Evaluation (Early Optimizations)Partial Evaluation (Early Optimizations) -> nur bei einigen Datenflußanalyse notwendig Redundancy EliminationRedundancy Elimination -> Entfernung redundanter Codestücke -> Daten- und Kontrollflußanalyse notwendig

24 Partial Evaluation Constant FoldingConstant Folding Algebraic SimplificationAlgebraic Simplification ReassociationReassociation Constant PropagationConstant Propagation Copy PropagationCopy Propagation Statement SubstitutionStatement Substitution Induction Variable EliminationInduction Variable Elimination Function CloningFunction Cloning

25 Constant Folding Konstante Ausdrücke werden zur Übersetzungszeit ausgerechnet. X = 3 * 2; -> X = 6; -> Es ist keine Datenflußanalyse notwendig

26 Algebraic Simplification Vereinfachung algebraischer Ausdrücke X = (Y + 1) / N; wobei N = 1; zu X = (Y + 1); -> Keine Datenflußanalyse notwendig

27 Reassociation Umgruppierung von Additionen und Multiplikationen in einem Ausdruck Kann die Anzahl der ‚Common Subexpressions‘ vergrößern. Keine Datenflußanalyse notwendig

28 Constant Propagation Konstanten im Programm werden durch ihren eigentlichen Wert ersetzt. Hierzu wird das Ergebnis der Datenflußanalyse benötigt.

29 Copy Propagation Eliminiert redundante Kopien einer Variable. -> Benötigt die Ergebnisse der Datenflußanalyse. -> Es wird eine Tabelle verwendet, um die einzelnen Instruktionen (copy instructions) zu speichern.

30 Copy Propagation - ACP Table of available copy instructions.

31 Statement Substitution (Forward Substitution) Ersetzung einer Variable durch ihre Definition. -> Allgemeine Form von ‚Copy Propagation‘ -> Kann die Analyse von Ausdrücken innerhalb einer Schleife vereinfachen

32 Induction Variable Elimination -> Entfernen der Index-Variable - Folgt meist auf ‚Strength Reduction of Induction Variable Expressions‘

33 Function Cloning Konstante Argumente einer Funktion werden in einer Kopie durch ihren Wert ersetzt. -> Constant Propagation Dies erhöht zwar die Codegröße, die kopierten Funktionen können aber zum Teil wesentlich schneller ausgeführt werden.

34 Function Cloning - Beispiel

35 Redundancy Elimination Loop-invariant Code MotionLoop-invariant Code Motion Unreachable Code EliminationUnreachable Code Elimination Useless Code EliminationUseless Code Elimination Dead Variable EliminationDead Variable Elimination Common-Subexpression EliminationCommon-Subexpression Elimination

36 Loop-invariant Code Motion Ausdrücke, welche ihren Wert in keiner Iteration ändern, werden außerhalb der Schleife gestellt. -> Datenflußanalyse notwendig

37 Unreachable Code Elimination Ein Codestück wird unerreichbar durch: –Bedingungen,welche immer true oder immer false sind –Schleifen, welche nie durchlaufen werden -> Datenflußanalyse notwendig

38 Useless Code Elimination ‚Unnütze‘ Codestücke werden zum Teil durch andere Optimierungen (z.B.: Unreachable Code Elimination) verursacht. -> Datenflußanalyse notwendig

39 Dead Variable Elimination Nicht benutzte Variablen werden entfernt. Folgt meist auf die Optimierungen: –Unreachable Code Elimination –Useless Code Elimination Durch die Datenflußanalyse kann festgestellt werden, ob die Variable noch benutzt wird.

40 Common-Subexpression Elimination (CSE) -> Identische Ausdrücke (Berechnungen) können gespeichert werden, damit der entsprechende Wert nicht neu berechnet werden muß. -> Datenflußanalyse notwendig

41 Common-Subexpression Elimination (CSE) - Beispiel

42 Ausblick Weitere OptimierungenWeitere Optimierungen –Function Inlining –Schleifen-Optimierungen (Vortrag 4) Laufzeitsysteme (Vortrag 8)Laufzeitsysteme (Vortrag 8)


Herunterladen ppt "Grundlagen der Übersetzung und Optimierung von Programmiersprachen Seminar: Techniken der Code-Optimierung für moderne Rechnerarchitekturen Betreuer: Martin."

Ähnliche Präsentationen


Google-Anzeigen