Optimierungen in Übersetzern

Lecturers:Philippsen, M.
Coverage:2 SWS (4 ECTS)
Dates & location:
  • single date on June 16, 2008, 10:15 - 11:45, 00.156
  • single date on June 23, 2008, 10:15 - 11:45, 00.156
  • Monday, starting on April 21, 2008, 10:15 - 11:45 (except on June 16, 2008, June 23, 2008), K1-119 Brose-Saal
Audience:WPF INF-DH-PS (6.-8. Semester)
Topics:

In der Vorlesung werden ausgewählte Kapitel aus dem Übersetzerbau besprochen.

Schwerpunktmäßig werden Optimierungstechniken für die Übersetzung imperativer Programmiersprachen diskutiert, insbesondere solche, die für Hochleistungsrechner und Parallelrechner von Bedeutung sind. Begleitend dazu werden einige oft verwendere Techniken und Repräsetationsformen vorgestellt, die erforderlich sind, um die zur Optimierung benötigten Informationen geeignet zu berechnen bzw. zu verwalten.

Die folgenden Stichworte geben einen Überblick über die in der Vorlesung angesprochenen Einzelthemen:

  • Abhängigkeitsanalyse, Abhängigkeitsgraph, Array-Index-Analyse, SSA Graph, Steuerungsflußgraph, Dominatoren,
  • datenflußbasierte Schleifentransformationen: Strength Reduction, Elimination von Induktionsvariablen, Verschiebung von schleifeninvariantem Code, Schleifenentzweigung,
  • Schleifenumordnungen: Schleifenvertauschung, Wellenparallelisierung, Schleifenumkehr, Strip Mining, Kachelbildung, Schleifenaufspaltung, Schleifenvereinigung,
  • Schleifenrestrukturierung: Ausrollen, Schleifenzusammenfassung, Schleifenersetzung: Reduktion, Schleifenmustererkennung,
  • Speicherzugriffstransformationen: Array-Padding, Speicherbank-Konflikte, Skalarexpansion und Array-Kontraktion,
  • Partielle Auswertung: Konstantenpropagierung, Konstantenfaltung, Algebraische Vereinfachungen, Strength Reduction,
  • Redundanzentfernung: unerreichter Code, unnötiger Code, tote Variablen, gemeinsame Teilausdrücke,
  • Prozeduraufruftransformationen: Blattprozeduren, Inlining, Prozedurduplizierung, Prozedureinbettung, Rekursionselimination, Funktionsvorauswertung,
  • Optimierungen für Parallelrechner: Datenaufspaltung, Skalarreplikation, Arrayreplikation, Daten- und Aktivitätsausrichtung, Guards, Botschaftenkombination, Latenzzeitverbergung, Prefetch und Poststore, Synchronpunktelimination,
  • Pointer- und Aliasanalyse
watermark seal