Sprungmarken

Servicenavigation

Hauptnavigation


Sie sind hier:

Home Lehre Lehrveranstaltungen SS 2009 Compiler für Eingebettete Systeme

Bereichsnavigation

Hauptinhalt

Compiler für Eingebettete Systeme (SS 2009)

Aktuelles

Datum Nachricht llp1.jpg
01.02.2010 Die etwas andere Lehrervaluation - der eldoradio*-Podcast zum Lehrer-Lämpel-Pokal.
29.10.2009 Diese Vorlesung gewinnt den Lehrer-Lämpel-Pokal im SS 2009:   Thumbnail of LLP Thumbnail of LLP
03.08.2009 Übungsscheine im LS12-Sekretariat zur Abholung bereit.
17.07.2009 Prüfungstermine festgelegt (siehe unten).
16.07.2009 Übungsblatt 3 (Scratchpad-Allokation) hier verfügbar.
08.07.2009 Die Ergebnisse der studentischen Evaluation der Vorlesung für das SS 2009 sind hier verfügbar.
23.06.2009 Übungsblatt 2 (Code-Selektion) hier verfügbar.
11.05.2009 Übungsblatt 1 (Prepass-Optimierung) er verfügbar.
11.05.2009 Raumänderung: Am 5. Juni findet die Vorlesung in Raum OH14-304 statt.
05.05.2009 Organisatorische Informationen zu Übungen verfügbar.
17.04.2009 Block-Termine der Übungen festgelegt.
17.04.2009 Daten der Freitags-Vorlesung neu festgelegt (siehe unten).
03.02.2009 Eine Vorschau über die gesamte Vorlesung ist hier verfügbar.


Prüfungstermine

Mündliche Prüfungen werden an den folgenden Tagen angeboten:

  • 13. August 2009
  • 27. August 2009
  • 10. September 2009
  • 24. September 2009
  • 08. Oktober 2009

Terminabsprache und Prüfungsanmeldung erfolgt über das LS12-Sekretariat bei Silke Sandmann.


Termine der Vorlesung

Montags, 14.15 - 15.45
Otto-Hahn-Straße 14, Raum E23 (Hörsaal)
Wöchentlich!

Freitags, 08.30 - 10.00
Otto-Hahn-Straße 14, Raum E23 (Hörsaal)
Nicht wöchentlich! Nur an folgenden Tagen:

  • 08. Mai 2009
  • 15. Mai 2009
  • 05. Juni 2009
  • 26. Juni 2009
  • 17. Juli 2009


Kontakt

Dr. Heiko Falk
Lehrstuhl Informatik 12
Entwurfsautomatisierung für Eingebettete Systeme
Technische Universität Dortmund


Über die Vorlesung

Die Bedeutung Eingebetteter Systeme steigt von Jahr zu Jahr. Innerhalb Eingebetteter Systeme steigt der Software-Anteil, der auf Prozessoren ausgeführt wird, aufgrund geringerer Kosten und höherer Flexibilität ebenso kontinuierlich. Wegen der besonderen Einsatzgebiete Eingebetteter Systeme kommen hier hochgradig spezialisierte Prozessoren zum Einsatz, die applikationsspezifisch auf ihr jeweiliges Einsatzgebiet ausgerichtet sind. So werden z.B. oft Digitale Signalprozessoren, Netzwerk-Prozessoren oder Prozessoren mit Parallelverarbeitung auf Instruktionsebene eingesetzt.

Diese hochgradig spezialisierten Prozessoren stellen hohe Anforderungen an einen Compiler, der Code von hoher Qualität z.B. hinsichtlich Laufzeit oder Energieverbrauch generieren soll. Die Vorlesung soll

  • den Einsatz von Compilern in den Entwicklungsprozeß Eingebetteter Systeme einordnen,
  • Struktur und Aufbau derartiger Compiler aufzeigen,
  • interne Zwischendarstellungen auf verschiedenen Abstraktionsniveaus einführen, und hauptsächlich
  • Problemstellungen und Optimierungstechniken in allen Phasen des Compilers erläutern.

Das Schwergewicht der Veranstaltung liegt klar auf dem letzten obigen Punkt. Aufgrund der hohen an Compiler für Eingebettete Systeme gestellten Anforderungen sind effektive Optimierungen unerlässlich. Hier soll bspw. darauf eingegangen werden

  • welche Arten von Optimierungen es auf Quellcode-Niveau gibt,
  • wie der eigentliche Übersetzungsvorgang von der Quellsprache nach Assembler vorgenommen wird,
  • wie hochgradig spezialisierte Befehlssätze in der Code-Generierung durch Optimierungstechniken ausgenutzt werden können,
  • welche Arten von Optimierungen auf Assembler-Niveau durchzuführen sind,
  • wie die Registerallokation vonstatten geht, und
  • wie Speicherhierarchien effizient ausgenutzt werden.

Da Compiler für Eingebettete Systeme oft verschiedene Zielfunktionen optimieren sollen (z.B. durchschnittliche oder worst-case Laufzeit, Energieverbrauch, Code-Größe), soll der Einfluß von Optimierungstechniken auf diese verschiedenen Zielfunktionen deutlich gemacht werden.

Diese Vorlesung ist für die Master-Studiengänge Informatik der TU Dortmund in dem Modul INF-MSc-410 beschrieben.


Gliederung der Vorlesung


  • Kapitel 0: Einordnung & Motivation der Vorlesung
  • Kapitel 1: Compiler für Eingebettete Systeme
    • Werkzeuge zur Code-Generierung
    • Quellsprachen für Compiler für Eingebettete Systeme
    • Eingebettete Prozessoren
    • Anforderungen an Compiler für Eingebettete Systeme
  • Kapitel 2: Interner Aufbau von Compilern
    • Compilerphasen
    • Interne Zwischendarstellungen
    • Optimierungen & Zielfunktionen
  • Kapitel 3: Prepass-Optimierungen
    • Motivation von Prepass-Optimierungen
    • Loop Nest Splitting
  • Kapitel 4: HIR Optimierungen und Transformationen
    • Motivation
    • Function Specialization / Procedure Cloning
    • Parallelisierung für Homogene Multi-DSPs
  • Kapitel 5: Instruktionsauswahl
    • Einführung
    • Baum-Überdeckung mit Dynamischer Programmierung
    • Graph-basierte Instruktionsauswahl
  • Kapitel 6: LIR Optimierungen und Transformationen
    • Generierung von Bit-Paket Operationen für NPUs
    • Optimierungen für Scratchpad-Speicher
  • Kapitel 7: Register-Allokation
    • Einführung
    • Lebendigkeitsanalyse
    • Register-Allokation durch Graph-Färbung
  • Kapitel 8: Compiler zur WCETEST-Minimierung
    • Einführung
    • Procedure Cloning & Positioning
    • Register-Allokation
    • Scratchpad-Allokation von Daten und Code
  • Kapitel 9: Ausblick
    • Instruktionsanordnung
    • Retargierbarkeit