Offene Arbeiten

Generelle Hinweise

Wenn Sie eines der Themen interessiert, die Art der Arbeit aber nicht passt, können Sie trotzdem Kontakt mit dem/der Betreuer/in aufnehmen. Möglicherweise kann die Arbeit Ihren Bedürfnissen angepasst werden oder es findet sich ein ähnliches Thema.

Die hier aufgeführten Projektseminare werden nur an Studenten vergeben, die NICHT Datentechnik (B.Sc. ETiT) vertiefen. Studenten mit der Vertiefungsrichtung Datentechnik absolvieren das Projektseminar im Zusammenhang mit der Bachelorarbeit und werden daher gesondert behandelt.

Bachelor-Arbeiten

Betreuer*in: Ramon Wirsch
Frühester Beginn: sofort

Am Fachgebiet Rechnersysteme werden Hardwarebeschleuniger für eine Reihe von Architekturen entwickelt, unter anderem für RISC-V und IBM Z-Architekturen. Hierzu sollen reguläre Programme ohne jegliche Anpassungen an den Hardwarebeschleuniger zur Laufzeit analysiert und partiell mit dem Hardwarebeschleuniger ausgeführt werden können.

Für eine automatische Beschleunigung werden präzise Profiling-Daten benötigt um den Programmablauf nachzuvollziehen und rechenintensive Schleifen als Kandidaten für Hardwarebeschleunigung zu identifizieren.

Um an solche Profiling-Daten zu kommen, ohne bereits funktionierende, in die jeweiligen Prozessoren integrierte Hardware-Profiler zu haben, soll Qemu als Basis verwendet werden.

Qemu ist ein sehr populärer Emulator der in C geschrieben ist und eine Vielzahl von verschiedenen Architekturen emulieren kann.

Ziel dieser Arbeit soll es sein, Profiling-Daten über die Ausführung auf der Zielplattform zu sammeln und nach Abschluss der Emulation in einem Report bereitzustellen. Dies soll mit RISC-V und der Z-Architektur getestet werden.

Betreuer*in: Alexander Schwarz
Frühester Beginn: sofort

Derzeit wird am Fachgebiet Rechnersysteme an AMIDAR-Prozessoren geforscht, die aus mehreren unabhängigen Funktionseinheiten aufgebaut sind und verschiedene Möglichkeiten der Rekonfiguration bereitstellen. Bisher lag der Fokus auf Ausführung von Java Bytecode, jedoch eignet sich das Grundprinzip für verschiedenste Instruktionssätze.

Nun wird die Idee verfolgt, eine speziell auf das AMIDAR-Konzept zugeschnittene Instruction Set Architecture (ISA) zu entwickeln, die einige Gedanken von Datenflussarchitekturen aufgreift. Für diesen Instruktionssatz wurde bereits ein Code Converter entwickelt, der ausgehend von Java Class Files Code erzeugt. Dieser kann anschließend in einer Simulation ausgeführt werden. Dabei ist zu beachten, dass der Java Bytecode in der Regel nicht optimiert wurde.

Der Code Converter nutzt als Zwischendarstellung eine Static Single Assignment (SSA) Form, die den Darstellungen anderer Compiler sehr ähnlich ist. Daher können hier klassische Compiler Optimierungen wie Method Inlining oder Partial Redundancy Elimination angewandt werden. Die Implementierungen einiger Optimierungen stehen bereits zur Verfügung. Im Rahmen dieser Arbeit sollen zunächst die bestehenden Optimierungen getestet werden. Anschließend sollen diese ggf. verbessert und durch weitere ergänzt werden.

Für diese Arbeit sind Kenntnisse des Compilerbaus von Vorteil.

Betreuer*in: Alexander Schwarz
Frühester Beginn: sofort

Derzeit wird am Fachgebiet Rechnersysteme an AMIDAR-Prozessoren geforscht, die aus mehreren unabhängigen Funktionseinheiten (FUs) aufgebaut sind und verschiedene Möglichkeiten der Rekonfiguration bereitstellen. Bisher lag der Fokus auf Ausführung von Java Bytecode, jedoch eignet sich das Grundprinzip für verschiedenste Instruktionssätze.

Nun wird die Idee verfolgt, eine speziell auf das AMIDAR-Konzept zugeschnittene Instruction Set Architecture (ISA) zu entwickeln, die einige Gedanken von Datenflussarchitekturen aufgreift. Für diesen Instruktionssatz wurde bereits ein funktionierender Prozessor auf einem FPGA implementiert.

Speziell für die FU, die den Java-Heap implementiert, bieten sich noch einige Verbesserungsmöglichkeiten, die im Rahmen dieser Arbeit umgesetzt werden sollen. Zum einen ist dies ein durch die Software nutzbarer, performanter Mechanismus zum Kopieren von Objekten und Arrays. Zum anderen ist dies die Unterstützung echter Byte- und Short-Arrays, die derzeit noch durch Integer-Arrays umgesetzt werden.

Betreuer*in: Jakob Wenzel
Frühester Beginn: sofort

RapidSynth hat das Ziel, beliebige Verilog-Designs sehr schnell auf FPGAs abzubilden. Dazu werden Designs in wiederverwendbare "Legosteine" zerlegt. Anschließend soll RapidWright benutzt werden, um jeden Legostein separat für das Ziel-FPGA zu synthetisieren. Dann sollen sie zu einem Gesamtdesign zusammengesetzt werden. Soll erneut ein ähnliches Design erzeugt werden, müssen nur geänderte Legosteine neu erzeugt werden. Dann kann das Design erneut zusammengesetzt werden.

Die Integration mit Rapidwright besteht noch nicht. Sie soll in dieser Arbeit erstellt werden. Sämtliche Daten liegen aktuell nur in einem für jedes Tool unterschiedlichen Format vor.

In dieser Arbeit soll ein für beide Tools gemeinsames Datenformat erarbeitet werden. Es bietet sich an, das native Datenformat eines der beiden Tools zu verwenden. RapidSynth ist in C++ geschrieben, während Rapidwright ein Java-Programm ist. Bei der Wahl des Formats kann auf die individuellen Stärken des Bearbeiters hinsichtlich Programmiersprachen eingegangen werden.

Betreuer*in: Johanna Rohde
Frühester Beginn: sofort

Ein Forschungsprojekt am Fachgebiet Rechnersysteme der TU Darmstadt befasst sich mit der automatischen Erzeugung von Hardware-Beschleunigern. Das entwickelte GCC-Plugin (PIRANHA) führt dazu eine statische Programmanalyse des Programmcodes durch und wählt eigenständig die Schleifen aus, die voraussichtlich die größte Ausführungszeit benötigen. Anschließend wird deren Funktionalität mit Hilfe einer High Level Synthese (HLS) als Hardwarebeschleuniger implementiert.

Der verfolgte Ansatz ist unabhängig vom Prozessor, an welchen die Beschleuniger angeschlossen werden. Gegenwärtig steht dafür unter anderem der MicroBlaze von Xilinx zur Verfügung.

Ein kommerzielles Tool, welches es ebenfalls ermöglicht Hardware Beschleuniger für den MicroBlaze aus C-Code zu generieren, ist Vivado HLS. Im Gegensatz zu PIRANHA hängt das Ergebnis dabei jedoch maßgeblich von den vom Nutzer eingefügten Annotationen ab. Dadurch können zusätzliche Optimierungen eingeschaltet und gesteuert werden.

Aufgabe dieser Arbeit ist es, die 17 Anwendungen der SpartanMC Benchmark Suite in Vivado HLS zu optimieren und auf dem MicroBlaze auszuführen. Anschließend soll die Performanz von Vivado HLS mit der des PIRANHA Plugins verglichen werden.

Master-Arbeiten

Betreuer*in: Alexander Schwarz
Frühester Beginn: sofort

Derzeit wird am Fachgebiet Rechnersysteme an AMIDAR-Prozessoren geforscht, die aus mehreren unabhängigen Funktionseinheiten aufgebaut sind und verschiedene Möglichkeiten der Rekonfiguration bereitstellen. Bisher lag der Fokus auf Ausführung von Java Bytecode, jedoch eignet sich das Grundprinzip für verschiedenste Instruktionssätze.

Nun wird die Idee verfolgt, eine speziell auf das AMIDAR-Konzept zugeschnittene Instruction Set Architecture (ISA) zu entwickeln, die einige Gedanken von Datenflussarchitekturen aufgreift. Für diesen Instruktionssatz wurde bereits ein Code Converter entwickelt, der ausgehend von Java Class Files auf dem Prozessor ausführbaren Code erzeugt. Darüber hinaus wurde ein Prozessor mit dieser neuen ISA auf einem FPGA implementiert. Diesem fehlen jedoch noch Mechanismen, um die auf dem FPGA ausgeführten Java-Programme interaktiv debuggen zu können.

Im Rahmen dieser Arbeit sollen diese Mechanismen hinzugefügt werden. Dafür sind zum einen Anpassungen an der Hardware erforderlich. Zum anderen muss die auf dem Entwicklungsrechner laufende Debugger-Software entwickelt werden. Hierbei können Teile des Debuggers für Bytecode-AMIDAR-Prozessoren wieder verwendet werden.

Betreuer*in: Johanna Rohde
Frühester Beginn: siehe Beschreibung

Ein Forschungsprojekt am Fachgebiet Rechnersysteme der TU Darmstadt befasst sich mit der automatischen Erzeugung von Hardware-Beschleunigern. Das entwickelte GCC-Plugin führt dazu eine statische Programmanalyse des Programmcodes durch und wählt eigenständig die Schleifen aus, die voraussichtlich die größte Ausführungszeit benötigen. Anschließend wird deren Funktionalität mit Hilfe einer High Level Synthese (HLS) als Hardwarebeschleuniger implementiert.

Den Flaschenhals stellen dabei die Speicherzugriffe dar. Über ein Cache-System können zwar mehrere Speicherzugriffe gleichzeitig ausgeführt werden, dennoch kommt es bei Cache-Misses und dem anschließenden Laden aus dem Hauptspeicher zu langen Wartezeiten.

Die Anzahl an Cache-Misses kann durch Prefetching reduziert werden. Dabei werden zukünftige Speicheradressen antizipiert und während des Leerlaufs des Caches spekulativ geladen. Der Erfolg von Prefetching hängt maßgeblich davon ab, wie genau Speicheradressen vorhergesagt werden können. Ein Vorteil des High Level Synthese Tools besteht darin, dass die Speicherzugriffe der Hardware Beschleuniger bereits zur Compilezeit ausführlich analysiert werden. Die dabei gewonnenen Informationen könnten zum Prefetching verwendet werden.

Ziel dieser Arbeit ist es, eine Prefetch Engine für den Level-2 Cache des vorhandenen Cache-Systems zu implementieren und zu integrieren. Des Weiteren, sollen die generierten Hardware Beschleuniger gezielt um Prefetch-Instruktionen erweitert werden, welche an die Prefetch Egnine übergeben werden.

Voraussetzung für diese Masterarbeit ist der Level-2 Cache. Dieser kann im Vorfeld als Projektseminars implementiert werden.

Betreuer*in: Johanna Rohde
Frühester Beginn: sofort

Ein Forschungsprojekt am Fachgebiet Rechnersysteme der TU Darmstadt befasst sich mit der automatischen Erzeugung von Hardware-Beschleunigern. Das entwickelte GCC-Plugin führt dazu eine statische Programmanalyse des Programmcodes durch und wählt eigenständig die Schleifen aus, die voraussichtlich die größte Ausführungszeit benötigen. Anschließend wird deren Funktionalität mit Hilfe einer High Level Synthese (HLS) als Hardwarebeschleuniger implementiert.

Eine Herausforderung besteht darin, die Abhängigkeiten von Lese- und Schreibzugriffen auf den Speicher zu bestimmen. Um die Semantik des Programms nicht zu verändern, müssen diese im konservativsten Fall im Beschleuniger in der gleichen Reihenfolge ausgeführt werden, wie in der Software beschrieben. Dies limitiert jedoch die Anzahl an parallel ausführbaren Instruktionen und stellt einen Flaschenhals dar.

Der GCC ermöglicht es, Speicherzugriffe umfassend zu charakterisieren. Diese Informationen werden derzeit dazu verwendet, möglichst viele Speicherzugriffe zur Compilezeit voneinander zu entkoppeln. Dies ist jedoch häufig nicht möglich, da es durch das Pointer-Aliasing dazu kommen kann, dass man über verschiedene Pointer auf den gleichen Speicher zugreift. Deswegen soll die Compilezeit-Analyse um eine Laufzeitanalyse erweitert werden. Dabei wird zur Compilezeit ein Satz an Bedingungen formuliert, deren Evaluation zur Laufzeit bestimmt, ob zwei Speicherzugriffe immer unabhängig voneinander sind. Bei einem positiven Ergebnis, kann dann ein optimierter Beschleuniger ausgeführt werden.

Aufgabe der Masterarbeit ist es, das Plugin so zu erweitern, dass möglichst viele Speicherzugriffe zur Laufzeit entkoppelt werden können. Dabei sollen insbesondere die Informationen zu Zugriffsmuster, Anzahl der Schleifeniterationen und Arraygröße herangezogen werden.

Die genauen Hintergründe zur Compilezeit-Analyse werden in diesem Paper beschrieben

Projektseminare Bachelor

Betreuer*in: Johanna Rohde
Frühester Beginn: sofort

Am Fachgebiet Rechnersysteme wird ein SoC-Kit rund um den SpartanMC Soft-Core entwickelt. Dieser ist ein speziell für die Verwendung in FPGAs entwickelter CPU-Core. Aufgrund dieser Zielplattform nutzt der SpartanMC eine Befehls- und Datenbreite von 18 Bit, welche die Strukturen aktueller FPGAs optimal ausnutzt.

Ein Forschungsprojekt innerhalb des SpartanMC SoC Kit befasst sich mit der Entwicklung des PIRANHA GCC Plugins zur automatischen Erzeugung von Hardwarebeschleunigern. PIRANHA führt dazu eine statische Programmanalyse des Programmcodes durch und wählt eigenständig die Schleifen aus, die voraussichtlich die größte Ausführungszeit benötigen. Anschließend wird deren Funktionalität mit Hilfe einer High-Level Synthese als Hardwarebeschleuniger implementiert.

Ein wichtiges Problem ist hierbei objektive Bewertung des PIRANHA Plugins. Die Beschleuniger müssen auf ihre korrekte Funktionsweise hin geprüft werden und die Performanz des System muss evaluiert werden. Die CHStone Benchmark Suite ist ein Set von C-Programmen, welche dafür entwickelt wurden, um High-Level-Synthese Tools (wie das PIRANHA Plugin) besser miteinander vergleichen zu können.

Leider sind die Benchmarks für ein 32-bit System entwickelt worden. Ziel dieser Arbeit soll daher die Portierung der CHStone Benchmark Suite auf den SpartanMC sein.

Projektseminare Master

Betreuer*in: Alexander Schwarz
Frühester Beginn: sofort

Derzeit wird am Fachgebiet Rechnersysteme an AMIDAR-Prozessoren geforscht, die aus mehreren unabhängigen Funktionseinheiten aufgebaut sind und verschiedene Möglichkeiten der Rekonfiguration bereitstellen. Bisher lag der Fokus auf Ausführung von Java Bytecode, jedoch eignet sich das Grundprinzip für verschiedenste Instruktionssätze.

Nun wird die Idee verfolgt, eine speziell auf das AMIDAR-Konzept zugeschnittene Instruction Set Architecture (ISA) zu entwickeln, die einige Gedanken von Datenflussarchitekturen aufgreift. Für diesen Instruktionssatz wurde bereits ein Code Converter entwickelt, der ausgehend von Java Class Files Code erzeugt. Dieser kann anschließend in einer Simulation ausgeführt werden. Dabei ist zu beachten, dass der Java Bytecode in der Regel nicht optimiert wurde.

Der Code Converter nutzt als Zwischendarstellung eine Static Single Assignment (SSA) Form, die den Darstellungen anderer Compiler sehr ähnlich ist. Daher können hier klassische Compiler Optimierungen wie Method Inlining oder Partial Redundancy Elimination angewandt werden. Die Implementierungen einiger Optimierungen stehen bereits zur Verfügung. Im Rahmen dieser Arbeit sollen zunächst die bestehenden Optimierungen getestet werden. Anschließend sollen diese ggf. verbessert und durch weitere ergänzt werden.

Für diese Arbeit sind Kenntnisse des Compilerbaus von Vorteil.