Master Theses
Student: Daniel Stein
Supervisor: Ramon Wirsch
Time period: 10/13/2022 - 04/12/2023
Am Fachgebiet Rechnersysteme werden Hardware-Beschleuniger unter anderem für einen RISC-V Prozessor entwickelt. Hierzu sollen reguläre Programme ohne jegliche Anpassungen an den Hardware-Beschleuniger zur Laufzeit analysiert und partiell mit diesem ausgeführt werden können.
Es existiert bereits ein FPGA-basiertes SoC inklusive des Beschleunigers. Bei der Entwicklung hat sich aber ein Flaschenhals an den Speicherschnittstellen des Beschleunigers herausgestellt. Um Fehlerfreiheit bei Cache-/Speicherzugriffen zu garantieren, dürfen Zugriffe zur Zeit nicht parallel ausgeführt werden.
Im Rahmen dieser Arbeit soll sowohl der Scheduler, als auch die Hardware um Möglichkeiten für eine neue Synchronisierung ergänzt werden. Der Scheduler soll Speicheroperationen gesondert betrachten und Wege bereitstellen, wie ihm potentielle Konflikte, Überlappungen oder auch garantierte Konfliktfreiheit zwischen Speicherzugriffen mitgeteilt werden können. Der Scheduler muss dann die Zugriffe so auf die verschiedenen Speicherzugriffseinheiten und Caches verteilen, dass Konflikte ausgeschlossen werden können. Für den Fall, dass es nicht möglich ist Konflikte statisch auszuschließen, soll der Scheduler granulare "Speicherbarrieren" einsetzen, die warten, bis die potentiell in Konflikt stehenden Transaktionen vollständig abgeschlossen wurden.
Für die Umsetzung dieser Barrieren muss die Hardware erweitert werden. Eine bedingte Umsetzung, bei der zur Laufzeit auf Konflikte getestet wird, um die Anzahl an Stalls zur Vermeidung von Konflikten zu reduzieren, könnte gerwinnbringend sein.
Weiterhin sollen bei diesen Änderungen auch verwandte Probleme gelöst werden. Cache-Prefetch Operationen brauchen nur geschedulet werden, wenn sie in den Schedule passen ohne diesen signifikant zu verlängern. Die Adressberechnung, bestehend aus Basisadresse und Offset findet aktuell als Teil des Speicherzugriffes statt und liegt auf dem kritischen Pfad. Gerade weil die finale Addresse aber eventuell für Überlackungschecks zur Laufzeit benötigt werden, macht es unter Umständen Sinn, diese Berechnung als getrennte Operation auszulagern, dies hängt aber von der Umsetzung der bedingten Speicherbarrieren ab.
Student: Sebastian Kleemann
Supervisor: Ramon Wirsch
Time period: 11/21/2022 - 05/22/2023
Am Fachgebiet Rechnersysteme werden Coarse Grained Reconfigurable Array Beschleuniger unter anderem für einen RISC-V Prozessor entwickelt. Hierzu sollen reguläre Programme ohne jegliche Anpassungen an den Hardware-Beschleuniger zur Laufzeit analysiert und partiell mit diesem ausgeführt werden können.
Der Prozessor verfügt bereits über eine Fließkommaimplementierung auf Basis von optimierten FloPoCo-Operatoren. Das CGRA beherrscht auch bereits Fließkommazahlen, allerdings mit einer im Fließkommaformat konfigurierbaren, aber für aktuelle Zwecke ineffizienten Fließkommaimplementierung. Für eine bessere Vergleichbarkeit zwischen CGRA und Prozessor, um so besser eine Beschleunigung mittels CGRA aufgrund von Parallelisierung nachzuweisen, soll der CGRA an den Prozessor angeglichen werden.
Hierzu muss das FloPoCo-Framework um noch fehlende Funktionalität erweitert werden. Alle Single-Precision Fließkommaoperationen auf dem CGRA sollen dann durch FloPoCo-Varianten ersetzt werden. Für eine optimale Nutzung mit FloPoCo sollen die Registerfiles des CGRAs, wie beim Prozessor verbreitert werden. Zusammen mit der Inbetriebnahme von gepipelinten Registerfiles sollten sich so die meisten Flaschenhälse des CGRAs gelöst werden und das CGRA deutlich höhere Frequenzen erreichen.
Project Seminars Bachelor
Student: Eric Schoch
Supervisor: Ramon Wirsch
Time period: 10/18/2022 - 02/23/2023
Am Fachgebiet Rechnersysteme werden Hardware-Beschleuniger unter anderem für einen RISC-V Prozessor entwickelt. Hierzu sollen reguläre Programme ohne jegliche Anpassungen an den Hardware-Beschleuniger zur Laufzeit analysiert und partiell mit diesem ausgeführt werden können.
Es werden schon ein paar Benchmarks mit einem vorhanden SoC auf FPGA-Basis genutzt, um die Funktionsfähigkeit und die Beschleunigung praktisch nachzuweisen. Diese Benchmarks sind bisher allerdings ausschließlich "self-contained", müssen also unmittelbar Eingangsdaten für den Benchmark und eventuell Referenzdaten zum Validieren der Ergebnisse beinhalten.
Im Rahmen dieser Arbeit soll das SoC und die Software dafür so erweitert werden, dass auch Benchmarks, die mit Dateien arbeiten, lauffähig sind. Die Benchmarks sollen dazu gegenüber einer Variante für Linux möglichst wenig geändert werden müssen, sollen also Dateien mit Dateinnamen identifizieren und öffnen können.
Für die Umsetzung sind verschiedene Ansätze möglich und zu evaluieren. Die verwendeten FPGA-Boards verfügen beispielsweise über SD-Kartenleser, die dazu genutzt werden könnten. Aber auch eine Anbindung an einen Host-PC über diverse Schnittstellen ist denkbar. In diesem Fall würden die Dateisystemzugriffe an den Host ausgelagert werden. Der Host muss dann angeforderte Dateien öffnen und deren Inhalte zum SoC übertragen oder von dort empfangen. Ein Vorteil, einen solchen Host-PC zu nutzen, wäre beispielsweise die automatische Verifikation der Ergebnisse, ohne dazu den eigentlichen Benchmark anpassen zu müssen.
Student: Jan Osterwisch
Supervisor: Ramon Wirsch
Time period: 10/18/2022 - 01/31/2023
Am Fachgebiet Rechnersysteme werden Hardware-Beschleuniger unter anderem für einen RISC-V Prozessor entwickelt. Hierzu sollen reguläre Programme ohne jegliche Anpassungen an den Hardware-Beschleuniger zur Laufzeit analysiert und partiell mit diesem ausgeführt werden können.
Um die Funktionsfähigkeit und Beschleunigung des Systems und des Beschleunigers praktisch nachzuweisen, wird hierzu ein System-on-Chip (SoC) auf einem FPGA samt Hardware-Beschleuniger entwickelt. Der Prozessor und Beschleuniger laufen bereits in ersten Benchmarks. Auch existiert ein Simulator des Systems.
Im Rahmen dieser Arbeit soll dieses SoC um einen anschaulichen, grafischen Benchmark, die AV1 Videodekodierung erweitert werden. Der vorhandene Simulator verfügt schon über die Möglichkeit Speicherinhalte als Bilder auszugeben. Auch verfügt der Simulator über Möglichkeiten für direkten Dateizugriff. Ein Videodekoder soll also zuerst zu RISC-V portiert werden und im Simulator lauffähig gemacht werden.
Anschließend soll der Benchmark auch zum finalen SoC portiert werden. Dazu müssen zusätzlich die notwendigen Peripherien für Bildausgabe erstellt oder von ähnlichen System portiert werden. Da das SoC auch über keinen Massenspeicher verfügt, müssen auch Tools bereitgestellt werden, um Videos in den Speicher des SoCs zu laden, anstatt diese direkt aus dem Dateisystem zu laden.