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:
- Codegenerierung
- Forth
- Constraint Logic Programming
- Linux
Neue Suche