Liste der Praktika

Betreut von M. Anton Ertl (anton@mips.complang.tuwien.ac.at, Tel. 58801/18515)


Praktika

Praktikum: Ein Interface zwischen Gforth und C mit Hilfe von SWIG
Das C-Interface von Gforth benötigt Deklarationen von C-Funktionen und C-Strukturen in einer Forth-freundlichen Syntax. SWIG ist ein Werkzeug, um Interfaces zwischen C und anderen Programmiersprachen zu erstellen. In dieser Arbeit sollen mit Hilfe von SWIG C-Header-Files in Forth-Deklarationen der C-Funktionen und -Strukturen übersetzt werden.
Praktikum oder Diplomarbeit: Beschleunigung von Ruby
Es gibt viele Techniken, um Interpreter schneller zu machen: schnellerer Dispatch z.B. durch threaded code, stack caching, statische und dynamische Superinstructions. Im Rahmen dieser Arbeit soll evaluiert werden, welche dieser Techniken auf den existierenden Python oder Ruby-Interpreter angewandt werden können, wieviel sie bringen können, und eventuell soll eine dieser Techniken angewendet werden.
Praktikum oder Diplomarbeit: Optimierung von switch im gcc
Interpreter werden oft mit einem switch in einer Schleife implementiert, und das führt auf Prozessoren wie dem Pentium 4 und dem Athlon 64 zu schlechter Sprungvorhersage, die den Grossteil der Zeit in Anspruch nehmen kann. Das kann optimiert werden, indem das Ende der Schleife und der Anfang der naechsten Iteration an die einzelnen Zweige angehängt wird. Im Rahmen dieser Arbeit soll so eine Optimierung im gcc implementiert und die Auswirkungen auf Interpreter und andere Programme untersucht werden.
Praktikum oder Diplomarbeit: AMD64 port für gcc-2.95
Die Version 2.95 von gcc hat gewisse Vorteile gegenüber jüngeren Versionen, aber leider noch keine Codeerzeugung für den AMD64. Im Rahmen dieser Arbeit soll ein port für den AMD64 erstellt werden.
Praktikum: Alignment-Checking auf AMD64
Auf der AMD64-Architektur wird bei Speicherzugriffen das Alignment normalerweise nicht überprüft. Man kann so eine Überprüfung aber einschalten, sodass ggf. eine Exception erzeugt wird. Das kann hilfreich sein, um Programmierfehler zu finden. Leider ist es nicht ganz einfach, das zu tun, weil einige Library-Funktionen, insbesondere Stringfunktionen, absichtlich nicht ausgerichtete Zugriffe durchführen. In diesem Praktikum sollen Ersatzfunktionen geschrieben und mit einem Programm gelinkt werden, und das Programm dann mit eingeschaltetem Alignment-Checking ausgeführt werden. Als Programm schwebt mir in diesem Zusammenhang gforth vor, aber es kann auch ein beliebiges anderes Programm entsprechend angepasst werden.
Praktikum oder Diplomarbeit: Labels-as-values in LLVM
Labels-as-values ist ein Feature von GNU C, das besonders bei der effizienten Implementierung von Interpretern mittels threaded code oder dynamischen Superbefehlen wichtig ist. LLVM unterstuetzt dieses Feature zwar, aber in einer extrem ineffizienten Form. Im Rahmen dieser Arbeit soll eine effiziente Implementierung dieses Features in LLVM eingebaut werden.
Praktikum oder Diplomarbeit: Parallelisierung mit Channels
Mit der zunehmenden Verbreitung von Multi-Core CPUs wird die Parallelisierung allgemeiner Anwendungen immer interessanter; eine sinnvolle Möglichkeit dazu scheinen Channels (Ein-Richtungs-Kommunikationskanäle zwischen zwei Threads, ähnlich der üblichen Verwendung von Pipes) zu sein: sie erlauben die Parallelisierung bei gleichzeitiger Modularisierung. Im Rahmen dieser Arbeit soll eine Anwendung auf diese Weise parallelisiert werden; mögliche Anwendungen wären Compiler wie lcc, tcc, oder gcc; Sie können aber nach Absprache auch eine beliebige andere Anwendung parallelisieren.
Praktikum: Performance Counters für Linux-Alpha oder Linux-PPC
Der perfctr patch erlaubt es, die Performance-Counter von Intel-kompatiblem Prozessoren zu benutzen. In diesem Praktikum soll dieser Patch auf einen Alpha-Prozessor oder PPC-Prozessor erweitert werden.
Praktikum: Disassembler und Assembler für die Architekturen SPARC in Forth
(je ein Praktikum pro Architektur). Der Assembler soll sehr einfach gehalten werden, die komplizierteren Teile (Parsing, Symbolverwaltung) werden vom zugrundeliegenden Forth-System übernommen.
Praktikum oder Diplomarbeit: Reduktion von TLB-Misses mit variablen Seitengrößen
Programme, die auf große Mengen von Speicher in einer nicht-lokalen Weise zugreifen, werden oft stark von TLB-misses gebremst (der Translation Lookaside Buffer (TLB) ist ein sehr kleiner Cache in der MMU). Moderne Prozessoren können Speicherseiten verschiedener Größe verwalten. Dieses Feature kann dazu benutzt werden, um einen größeren Teil des Speichers im TLB abzubilden und damit die Anzahl der TLB-Misses zu reduzieren. In diesem Praktikum bzw. dieser Diplomarbeit soll das Betriebssystem (Linux) folgendermaßen verändert werden: es soll mit einer Seitengröße anfangen, die die Abbildung des gesamten Speichers im TLB erlaubt, und Seiten aufteilen, wenn der Speicher ausgeht. Im Rahmen der Diplomarbeit sollen Seiten auch wieder zusammengelegt (und zu einer Seite verbunden) werden, sobald es geht. Eine ähnliche Idee wird in einem LWN-Artikel diskutiert.
10 gefunden

Weitere mögliche Themenbereiche:


Neue Suche