Grundlagen der Grundlagen der Übersetzung und Übersetzung und Optimierung von Optimierung von Programmiersprachen Programmiersprachen Seminar: Techniken der Code- Optimierung für moderne Rechnerarchitekturen Betreuer: Martin Schulz Referent: Markus Ibba
42
Embed
Grundlagen der Übersetzung und Optimierung von Programmiersprachen Seminar: Techniken der Code-Optimierung für moderne Rechnerarchitekturen Betreuer: Martin.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Grundlagen der Grundlagen der Übersetzung und Übersetzung und Optimierung von Optimierung von ProgrammiersprachenProgrammiersprachen
Seminar: Techniken der Code-Optimierung für
moderne Rechnerarchitekturen
Betreuer: Martin Schulz Referent: Markus Ibba
ÜbersichtÜbersicht
• Grundlagen der Übersetzung eines Grundlagen der Übersetzung eines ProgrammesProgrammes
• Konzepte zur OptimierungKonzepte zur Optimierung
• AusblickAusblick
Grundlagen der Grundlagen der Übersetzung eines Übersetzung eines ProgrammesProgrammes• Übersicht eines ÜbersetzungsvorgangesÜbersicht eines Übersetzungsvorganges
• Analyse des QuellprogrammsAnalyse des Quellprogramms– Lexikalische AnalyseLexikalische Analyse
– SyntaxanalyseSyntaxanalyse
– Semantische AnalyseSemantische Analyse
• FehlerbehandlungFehlerbehandlung
Übersicht eines Übersicht eines ÜbersetzungsvorgangesÜbersetzungsvorganges
Q uellprogramm (Zeichenfolge)
LexikalischeAnalyse
Syntax-Analyse
SemantischeAnalyse
Symbolfolge
Zw ischencode
Zw ischencode
Code-Erzeugung
Ausführbarer P rogrammcode
Symboltabelle Schnittstelle zumBetriebssystem
Analyse des Analyse des QuellprogrammsQuellprogramms
– Beschreibung der Syntax der Beschreibung der Syntax der ProgrammierspracheProgrammiersprache(kontextfreie Grammatiken, BNF)(kontextfreie Grammatiken, BNF)
– Zusammenfassen der Symbole zu Zusammenfassen der Symbole zu grammatikalischen Sätzengrammatikalischen Sätzen
-> Ziel: Laufzeit und/oder Größe eines -> Ziel: Laufzeit und/oder Größe eines Programmes reduzierenProgrammes reduzieren
• Übersicht eines Übersetzungsvorganges Übersicht eines Übersetzungsvorganges eines optimierenden Compilerseines optimierenden Compilers– AnalyseAnalyse
– CodetransformationCodetransformation
• OptimierungstechnikenOptimierungstechniken
Idee einer OptimierungIdee einer Optimierung
• Anwendungsprogrammierer braucht Anwendungsprogrammierer braucht kein umfangreiches Wissen über die kein umfangreiches Wissen über die Maschinenarchitektur auf der er Maschinenarchitektur auf der er programmiert.programmiert.
• Hardwarehersteller brauchen nur Hardwarehersteller brauchen nur noch Schnittstelle für den Compiler noch Schnittstelle für den Compiler selber zu designen.selber zu designen.
Übersicht eines Übersicht eines ÜbersetzungsvorgangesÜbersetzungsvorganges
Lexikalische Analyse
Syntaxanalyse
Kontrollflußanalyse
Datenfluß- undAbhängigkeitsanalyse
Codetransform ation
Codeerzeugung
Q uellprogram m
Sym bole
‘Front-end’
Analyse
Sym boltabelle
CFG
Transform ation
Zw ischencode
‘Back-end’
SSA / PDG
‚‚Control dependence‘Control dependence‘
1:1: if (3 == a)if (3 == a)
2:2: b = 10; b = 10;
Abhängigkeit zwischen Ausdruck 1 Abhängigkeit zwischen Ausdruck 1 und 2.und 2.
-> Generierung des ‚Control Flow -> Generierung des ‚Control Flow Graph‘ (CFG).Graph‘ (CFG).
CFG - Control Flow GraphCFG - Control Flow Graph
Entry
Exit
c = a + bd = c * a
c > d ?
c = c + d d = a
a < b ?
a = a * 2
‚‚Data dependence‘Data dependence‘
a = c * 10;a = c * 10;
d = 2 * a + c;d = 2 * a + c;
‚‚flow flow dependence‘dependence‘
e = f * 4 + g;e = f * 4 + g;
g = 2 * h;g = 2 * h;
‚‚anti anti dependence‘dependence‘
a = b * c;a = b * c;
a = d + e;a = d + e;
‚‚output output dependence‘dependence‘
• Die Datenflußanalyse wird im 3. Vortrag behandelt
• Allgemeiner Ablauf einer Allgemeiner Ablauf einer TransformationTransformation
• Beispiel einer TransformationBeispiel einer Transformation
Allgemeiner Ablauf einer Allgemeiner Ablauf einer TransformationTransformation
• Programmstück finden, welches sich Programmstück finden, welches sich für die Optimierung eignetfür die Optimierung eignet
• Sicherstellen, daß die Sicherstellen, daß die Transformation die Semantik des Transformation die Semantik des Programmes nicht ändertProgrammes nicht ändert
• Programm transformierenProgramm transformieren
Beispiel einer Beispiel einer TransformationTransformation
Beispiel einer Beispiel einer TransformationTransformation
Beispiel einer Beispiel einer TransformationTransformation
-> Benötigt die Ergebnisse der -> Benötigt die Ergebnisse der Datenflußanalyse.Datenflußanalyse.
-> Es wird eine Tabelle verwendet, um -> Es wird eine Tabelle verwendet, um die einzelnen Instruktionen (copy die einzelnen Instruktionen (copy instructions) zu speichern.instructions) zu speichern.
Copy Propagation - ACPCopy Propagation - ACP
Table of available copy instructions.Table of available copy instructions.
-> Entfernen der Index-Variable-> Entfernen der Index-Variable
- Folgt meist auf ‚Strength Reduction - Folgt meist auf ‚Strength Reduction of Induction Variable Expressions‘of Induction Variable Expressions‘
Function CloningFunction Cloning
Konstante Argumente einer FunktionKonstante Argumente einer Funktionwerden in einer Kopie durch ihren Wertwerden in einer Kopie durch ihren Wertersetzt.ersetzt.
-> Constant Propagation-> Constant Propagation
Dies erhöht zwar die Codegröße, dieDies erhöht zwar die Codegröße, diekopierten Funktionen können aber zum kopierten Funktionen können aber zum
TeilTeilwesentlich schneller ausgeführt werden.wesentlich schneller ausgeführt werden.
Function Cloning - BeispielFunction Cloning - Beispiel
Durch die Datenflußanalyse kannDurch die Datenflußanalyse kannfestgestellt werden, ob die Variable nochfestgestellt werden, ob die Variable nochbenutzt wird.benutzt wird.
-> Identische Ausdrücke (Berechnungen) -> Identische Ausdrücke (Berechnungen) können gespeichert werden, damit der können gespeichert werden, damit der entsprechende Wert nicht neu berechnet entsprechende Wert nicht neu berechnet werden muß.werden muß.