12460 - Optimierungstechniken in modernen Compilern Modulübersicht

Modulnummer: 12460 - Modul nicht mehr im Angebot ab WS 2015/16
Modultitel:Optimierungstechniken in modernen Compilern
  Optimization Techniques in Modern Compilers
Einrichtung: Fakultät 1 - Mathematik, Naturwissenschaften und Informatik
Verantwortlich:
  • Dr. rer. nat. Schölzel, Mario
Lehr- und Prüfungssprache:Deutsch
Dauer:1 Semester
Angebotsturnus: sporadisch nach Ankündigung
Leistungspunkte: 4
Lernziele:Durch die Vorlesung erkennt der Studierende die vielfältigen Zusammenhänge, die zwischen der technischen Informatik (mit Schwerpunkt Prozessorentwurf) und dem Compilerbau, bestehen. Der Studierende erhält einen ganzheitlichen Blick auf den Zusammenhang zwischen Prozessorarchitekturen, Programmiersprachen und den daraus resultierenden erforderlichen bzw. überhaupt möglichen Optimierungen, die durch einen Compiler statisch durchgeführt werden können. Dies wiederum versetzt ihn in die Lage die gegenseitigen Abhängigkeiten, die zwischen dem Prozessorentwurf und dem Entwurf eines Compilers bestehen, zu erkennen. Der Studierende lernt formale Modelle als Grundlage für die im Compiler angewendeten Optimierungsmethoden kennen, woraus er sich auch die Grenzen dieser Ansätze ableiten kann.
Inhalte:Die Studierenden erhalten Einblick in fortgeschrittene Optimierungstechniken, die in modernen Compilern angewendet werden, um bei der Erzeugung von Zielcode diesen so zu generieren, dass er effizient auf einer gegebenen Zielarchitektur abgearbeitet werden kann. Es werden dabei auch verschiedene Aspekte von Programmiersprachen beleuchtet, die einen großen Einfluss auf die möglichen Optimierungen durch einen Compiler haben können. Konkret bedeutet das: Überblick über die Architekturen verschiedener Zielprozessoren und den besonderen Erfordernissen bei der Zielcodeoptimierung für diese Architekturen. Phasen der Zielcodeerzeugung und deren Abhängigkeiten: Ablaufplanung, Zielcodeauswahl, Registerplanung. Zielocodeoptimierungen für Prozessoren mit Parallelität auf Instruktionsebene. Möglichkeiten und Grenzen von statischen Optimierungen. Codetransformationen zur Erzeugung von Parallelität auf Instruktionsebene:
  • Trace-Scheduling, Superblöcke, Hyperblöcke,
  • Spekulative Ausführung von Operationen
  • Loop-Unrolling, Modulo-Scheduling
  • Array-Data-Dependency-Analyse,
  • Alias-Analyse
  • Zielcodeoptimierungen für Multi-Core-Prozessoren.
Empfohlene Voraussetzungen:
  • Ein prinzipielles Verständnis über den Aufbau und die Arbeitsweise eines Prozessors sowie den Aufbau eines Compilers und den Ablauf bei der Übersetzung eines Programms sind hilfreich.
  • Detaillierte Kenntnisse über Parsingtechniken, wie sie in der Compilertechnikvorlesung vermittelt werden, sind nicht erforderlich.
Zwingende Voraussetzungen:keine
Lehrformen und Arbeitsumfang:
  • Vorlesung / 2 SWS
  • Übung / 1 SWS
  • Selbststudium / 75 Stunden
Unterrichtsmaterialien und Literaturhinweise:
  • Randy Allen, Ken Kennedy: Optimizing Compilers for Modern Architectures. Morgan Kaufmann Verlag, 2002, Publishers, ISBN: 1-55860-286-0
  • Alain Darte, Yves Robert, Frederic Vivien: Scheduling and Automatic Parallelization. Birkhäuser Verlag, 2000, ISBN: 987654321.
  • Santosh Pande, Dharma P. Agrawal (Eds.): Compiler Optimizations for Scalable Parallel Systems. Springer Verlag, 2001, ISBN: 3-540-41945-4
Modulprüfung:Keine Angabe - Angabe ab Wintersemester 2016/17 erforderlich!
Prüfungsleistung/en für Modulprüfung:
  • mündliche Prüfung, benotet
Bewertung der Modulprüfung:Prüfungsleistung - benotet
Teilnehmerbeschränkung:keine
Zuordnung zu Studiengängen:
  • keine Zuordnung vorhanden
Bemerkungen:
  • Studiengang Informatik M. Sc.: Wahlpflichtmodul im Komplex „Grundlagen der Informatik“ (Niveaustufe 400).
  • Studiengang Informations- und Medientechnik M. Sc.: Wahlpflichtmodul im Komplex „Rechnerbasierte Systeme".
Veranstaltungen zum Modul:Vorlesung: Optimierungstechniken in modernen Compilern
Übung zur Vorlesung
Veranstaltungen im aktuellen Semester:
  • keine Zuordnung vorhanden