|
|  |
Sprechzeiten: keine
|
Arbeitsgebiete
Ich interessiere mich für Übersetzer und
Programmiersprachen. In meiner Promotionsarbeit adressiere
ich Cacheprobleme von Zeigeranwendungen.
Algorithmen in Zeigeranwendungen sind weitaus schwerer analytisch zu
erfassen als Algorithmen in numerischen Anwendungen. Diese sind
häufig von geschachtelten Zählschleifen dominiert.
Iterationen in Zeigeranwendungen sind oftmals durch Rekursionen oder
mit Iteratoren implementiert und somit nicht direkt an einem
Sprachkonstrukt zu erkennen. Zum Beispiel sind die Voraussetzungen
für das korrekte Vertauschen geschachtelter Schleifen zur
Cacheoptimierung von Reihungen mit statischen Analysen leichter zu
erkennen, als Voraussetzungen um eine Tiefensuche durch eine
Breitensuche zu ersetzen.
Bei der Anordnung von Datenstrukturen verhält es sich umgekehrt.
Numerische Algorithmen arbeiten in der Regel auf Reihungen, die große
Speicherbereiche belegen. Die Anordnung der Daten innerhalb der
Reihungen lässt sich nur in beschränktem Maße verändern.
Zeigeranwendungen operieren hingegen auf vielen, relativ kleinen
Verbunden. Deren relative Anordnung ist nicht vorgegeben. Wird ein
Speicherbereiniger verwendet, kann sich die Anordnung während der
Lebenszeit eines Verbunds ändern.
Aufgrund der schlechten analytischen Fassbarkeit von Zeigeranwendungen
sind viele bekannte Optimierungen für Datenstrukturen nur teilweise
automatisiert. Eine Optimierung durch den Programmierer oder separate
Werkzeuge zur Cacheoptimierung automatisieren die Cacheoptimierung
in unseren Augen nicht ausreichend. Optimierungen, die speziellen
Einsatz des Programmierers benötigen, müssen durch extreme
Cacheprobleme begründet sein. Vollständig automatisierte
Optimierungen dagegen benötigen keine Interaktion des
Programmierers. Sie sind leichter anzuwenden und können damit
häufiger praktische Cacheprobleme vermeiden.
Daher untersuche ich Analysen die Cacheprobleme statisch zur
Übersetzungszeit vorherzusagen. Weiter betrachte ich, wie
bekannte Optimierungsverfahren auf Programme, deren Datenstrukturen
mit Vererbung implementiert sind, angewandt werden können, oder
wie diese durch neue Verfahren ergänzt werden können.
In meiner Diplomarbeit habe ich eine
Lokalitätsanalyse auf Basis von Laufzeitprofilierung entwickelt, und
verwendete die gewonnenen Daten zu ladelatenzzeit sensitivem
Befehlsanordnen.
Seit Sommer 2005 arbeite ich bei der SAP bei JIT Compiler Technologies. Unsere Gruppe optimiert und portiert die Java Virtual Machinen der SAP.
Projekte
Beteiligung an Software
Betreute Studien- und Diplomarbeiten
Bearbeitete Studien- und Diplomarbeiten
Veröffentlichungen
 |  | 2005 |
 |  |
 |  | Lindenmaier, Beck, Boesler, Geiß, Firm, an Intermediate Language for Compiler Research |  |  |
 | |  | |  |
 |  | Lindenmaier, Structure Splitting and Inheritance |  |  |
 | |  | |  |
| | |
 |  | 2002 |
 |  |
 |  | Lindenmaier, libFIRM -- A Library for Compiler Optimization Research Implementing FIRM |  |  |
 | |  | |  |
| | |
 |  | 2001 |
 |  |
 |  | Lindenmaier, Geiß, Global Configuration of Cache Optimizations |  |  |
 | |  | |  |
| | |
 |  | 2000 |
 |  |
 |  | Lindenmaier, Load Scheduling with Profile Information |  |  |
 | |  | |  |
| | |
 |  | 1999 |
 |  |
 |  | Lindenmaier, Analyse von Profilinformationen für cachesensitives Befehlsanordnen |  |  |
 | |  | |  |
 |  | Trapp, Lindenmaier, Boesler, Documentation of the Intermediate Representation FIRM |  |  |
 | |  | |  |
| | |
 |  | 1997 |
 |  |
 |  | Lindenmaier, Erfassung eines computerinternen
Modells von Altprodukten und Ermittlung der wirtschaftlichsten
Fraktionierungstiefe |  |  |
 | |  | |  |
| |