Abgeschlossene Arbeiten 2018

  • Bibliothek basierte Schätzung von CGRA Synthese Eigenschaften
    Kategorie: Bachelor-Arbeit
    Bearbeiter: Simon Gütthoff
    Betreuer: Dennis Wolf

    Ein Coarse Grained Reconfigurable Array (CGRA) ist eine Schaltung, die zumeist als Hardwarebeschleuniger eingesetzt wird. Einzelne Rechenzellen verarbeiten entsprechend eines im voraus definierten Operationsplans (Scheduling) Daten massiv parallel. Die Selektion an Operationen der einzelnen Rechenzellen, sowie deren Anzahl und Verbindung untereinander sind generisch und im Einzelfall entscheidend für die Laufzeit einzelner Applikationen.

    Entsprechend mehrerer Beispielapplikationen kann ein CGRA für eine Anwendungsdomäne optimiert werden. Die Erzeugung einer optimalen CGRA Komposition ist dabei aufgrund der Komplexität nicht mehr möglich. In solchen Fällen werden heuristische Optimierungsverfahren genutzt. In diesem Fall finden sich zwei der drei relevanten Kosten in der möglichen Taktfrequenz und den benötigten Ressourcen einer CGRA Instanz. Da ein Syntheselauf allerdings im Stundenbereich liegen kann, muss eine Schätzung genutzt werden.

    Im Rahmen dieser Arbeit soll ein Bibliotheks- basierter Schätzer entworfen werden, der die maximale Taktfrequenz und den Ressourcenverbrauch für eine Komposition auf einem FPGA bestimmt. Das Erstellen der Bibliothek für einzelne FPGA Typen soll im Laufe der Arbeit automatisiert werden.

  • Rückwärtsscheduling mit prädizierter Operationsausführung
    Kategorie: Master-Arbeit
    Bearbeiter: Abhishek Sirsikar
    Betreuer: Tajas Ruschke

    Am Fachgebiet Rechnersysteme wird momentan an einer CGRA-Architektur geforscht, die zur Beschleunigung des Programmablaufs verwendet werden soll.

    Damit ein Programmteil auf das CGRA abgebildet werden kann, muss ein Scheduler die Problemgraphen auf die Zielhardware abbilden. Dabei müssen verschiedene Abhängigkeiten berücksichtigt werden, um den korrekten Programmablauf zu gewährleisten. Eine besondere Herausforderung besteht in der Berücksichtigung der Datenlokalität und der Verbindungseinschränkungen. Bei der Abbildung des Graphen rückwärts vorzugehen verspricht eine Vereinfachung bei der Lösung des Routingproblems. Als alternative zur bisher umgesetzten spekulativen Operationsausführung soll eine prädizierte Ausführung angewendet werden.

    Ziel dieser Arbeit ist das Design und die Implementierung eines Scheduler-Verfahrens, welches den Graphen in umgekehrter Reihenfolge bearbeitet und dabei alle Einschränkungen berücksichtigt.

  • Abschätzung der maximalen Frequenz von SpartanMC Many-Core Systemen
    Kategorie: Bachelor-Arbeit
    Bearbeiter: Ho Thanh Tu Nguyen
    Betreuer: Kris Heid

    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.

    Momentan wird daran gearbeitet hoch parallele Multiprozessor System-On-Chips (MPSoC) zu erstellen. Hierfür wird µStreams (ein eigens entwickeltes Parallelisierungs-Tool) genutzt. µStreams nimmt ein gewöhnliches sequenzielles Programm entgegen und parallelisiert dieses automatisch. Das erzeugte Many-Core System kommuniziert und synchronisiert sich über 1 zu 1, 1 zu N, N zu 1 Verbindungen, einen Router für Networks-On-Chip (NoC) und einen geteilten Speicher. Das resultierende MPSoC System ist dann eine Verarbeitungspipeline, ähnlich aktueller Prozessorpipelines, nur grob granularer arbeitend.

    Je nach MPSoC Konfiguration werden auf dem FPGA unterschiedliche maximale Frequenzen erreicht, abhängig von Anzahl an Prozessoren, Periperie und Speicher. Die maximal erreichbare Frequenz gibt bei der Entscheidung zwischen mehreren realisierbaren MPSoC Konfigurationen möglicherweise den Ausschlag für oder gegen eine bestimmte Konfiguration. Leider ist momentan die Evaluation der maximalen Frequenz erst relativ weit am Ende des Design Prozesses möglich und geschieht erst nach einer Entscheidung für eine bestimmte Konfiguration. Dies ist für den Nutzer enorm Zeitaufwendig und verlangsamt die Findung einer optimalen Lösung.

    Ziel dieser Arbeit soll es sein, eine Schätzfunktion für die maximal mögliche Frequenz einer gegebenen Konfiguration zu erstellen. Um herauszufinden welche Faktoren wie stark die Frequenz beeinflussen, sollen in dieser Arbeit verschiedene Konfigurationen systematisch gebaut und synthetisiert werden. Anschließend sollen die Erkenntnisse in einer Funktion in Form eine Java-Klasse bereitgestellt werden.

  • Anpassung des PIRANHA GCC Plugin an den Xilinx MicroBlaze
    Kategorie: Master-Arbeit
    Bearbeiter: Blandine Rivière
    Betreuer: Johanna Rohde

    Ein Forschungsprojekt am Fachgebiet Rechnersysteme der TU Darmstadt befasst sich mit der Entwicklung des PIRANHA GCC Plugins zur automatischen Erzeugung von Hardwarebeschleunigern. Das 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 als Hardwarebeschleuniger implementiert. Der Zugriff der Beschleuniger auf den Datenspeicher kann wahlweise direkt oder über ein Cachesystem erfolgen.

    Der verfolgte Ansatz ist unabhängig vom Prozessor, an welchen die Beschleuniger als Peripheriekomponente angeschlossen werden. Gegenwärtig steht dafür vor allem der SpartanMC des gleichnamigen SoC-Kits zur Verfügung.

    Der MicroBlaze ist ein 32-Bit RISC Softcore Prozessor entwickelt von Xilinx. Er bietet zahlreiche Konfigurationsmöglichkeiten wie z.B. die Anzahl der Pipelinestufen, zusätzliche arithmetische Einheiten und optionale Caches für Daten und Instruktionen.

    Ziel dieser Arbeit ist es, die von PIRANHA unterstützten Prozessoren um den MicroBlaze von Xilinx zu erweitern. Dabei ist insbesondere auch das vorhandene Cachesystem an den MicroBlaze anzupassen.

  • Integration von Microblaze Peripherie in JConfig
    Kategorie: Bachelor-Arbeit
    Bearbeiter: Lukas Schild
    Betreuer: Kris Heid

    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 in direkter Konkurrenz mit dem SpartanMC stehender SoC ist der Microblaze von Xilinx.

    Um den Microblaze zu verwenden, muss der Nutzer die Konfiguration im Xilinx eigenen Konfigurationstool: Xilinx Platform Studio (XPS) manuell zusammenstellen. Um den SpartanMC konfigurieren und instantiieren zu können wurde jConfig entwickelt. jConfig bietet dem Nutzer generell die Möglichkeit beliebige Hardware zu instantiieren. Außerdem bietet es sehr gute Unterstützung um Komponenten aus einer sehr einfachen XML Beschreibung zu importieren. Über individuelle Skripte werden die Komponenten mit sehr wenig manuellem Aufwand konfiguriert und verkabelt. Der Nutzer muss im Gegensatz zum XPS kaum noch tätig werden. In jConfig befindet sich bereits sehr viele Peripheriekomponenten für SpartanMC.

    Seit kurzem ist nun auch der Microblaze in jConfig instantiierbar. Allerdings steht und fällt die Verwendbarkeit eines SoC mit den verfügbaren Peripheriekomponenten und für Microblaze sind bisher erst UART und FSL Interconnects verfügbar. Daher sollen in dieser Arbeit mehr Peripheriekomponenten für den Microblaze über jConfig zugänglich gemacht werden. Hierzu müssen die Komponenten aus XPS ausgelesen und über eine Instantiierung in einem passenden Verilog Wrapper in jConfig verfügbar gemacht werden. Um die gewünschte automatisierte Konfiguration zu erreichen, müssen außerdem die Peripheriekomponenten um individuelle Skripte ergänzt werden. Anschließend sollten die Komponenten getestet werden. Bei den zu portierenden Komponenten handelt es sich um populäre Protokolle für Mikrocontroller wie: SPI, I2C, USB und AXI-Stream Interconnect für Multi-Core Systeme.

  • JTAG-Tunnel für serielle Verbindungen
    Kategorie: Bachelor-Arbeit
    Bearbeiter: Heiko Schüßler
    Betreuer: Jakob Wenzel

    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.

    Der in den SpartanMC integrierte Debugging-Support nutzt zur Kommunikation mit dem Host-PC bisher eine UART-Schnittstelle. Auch für printf-Ausgaben wird eine UART-Schnittstelle benötigt. In Multicore-Systemen ist dieser Umstand problematisch: Jeder Core benötigt eine eigene UART-Verbindung, es existiert aber nur eine einzige Verbindung zum Host.

    Ziel dieser Arbeit ist es, diese Situation zu verbessern. Es soll eine Kommunikationsstruktur erstellt werden, die es erlaubt, eine große Anzahl interner Ports mit dem Host-PC zu verbinden. Statt per UART soll dies aber per JTAG erfolgen, da diese Verbindung mit einem höheren Takt arbeiten kann.

    Auf Host-PC-Seite müssen die zu einem Port zusammengeführten Daten wieder getrennt werden. Dabei muss eine eindeutige Zuordnung der Daten zu den Ports möglich sein. Hierzu soll ein Linux-Programm erstellt werden, das die Daten auf Pseudo-Geräte aufteilt. Dadurch ist der Zugriff von jedem Programm, das normale serielle Schnittstellen verwenden kann, möglich.

  • Statische Analyse des Speicherbedarfs von SpartanMC-Programmen
    Kategorie: Bachelor-Arbeit
    Bearbeiter: Johannes Klöhn
    Betreuer: Jakob Wenzel

    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.

    Als Programm- und Datenspeicher werden die Block-RAMs des FPGAs verwendet. Da diese gerade bei Many-Core-Systemen stark limitiert sind, ist es ratsam, einem Kern nicht mehr Block-RAMs zuzuteilen, als auch benötigt werden. Diese Anzahl genau zu ermitteln ist schwierig, da sich beispielsweise die Größe des Stack über die Laufzeit des Programms ändert. Ziel dieser Arbeit ist daher eine statische Analyse der Größe des benötigten Speichers eines Programms.

    Die Größe von Programmcode und Daten sind statisch bekannt. Herausforderung dieser Arbeit ist hingegen die Bestimmung der maximalen Stackgröße. Bei der Kompilierung kann GCC optional die Stackgrößen aller Funktionen in eine separate Datei ausgeben. Die Größen sind dabei nur die der Funktionen selber und enthalten nicht die der von ihnen aufgerufenen Funktionen.

    Aus dem fertig gelinkten Programm oder aus den dazugehörigen Debug-Infos soll anschließend rekonstruiert werden, welche Funktionen aus einer Funktion heraus aufgerufen werden. Zusammen mit dem Speicherbedarf der einzelnen Funktionen lässt sich dann eine Worst-Case-Stackgröße ermitteln.

  • Verbesserung der automatischen Parallelisierung in µStreams
    Kategorie: Bachelor-Arbeit
    Bearbeiter: Jonas Diegelmann
    Betreuer: Kris Heid

    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.

    Momentan wird daran gearbeitet hoch parallele Multiprozessor System-On-Chips (MPSoC) zu erstellen. Hierfür wird µStreams (ein eigens entwickeltes Parallelisierungs-Tool) genutzt. µStreams nimmt ein gewöhnliches sequenzielles Programm entgegen und parallelisiert dies automatisch. Das erzeugte Many-Core System kommuniziert und synchronisiert sich über 1 zu 1, 1 zu N, N zu 1 Verbindungen, einen Router für Networks-On-Chip (NoC) und einen geteilten Speicher. Das resultierende MPSoC System ist dann eine Verarbeitungspipeline, ähnlich aktueller Prozessorpipelines, nur grob granularer arbeitend.

    µStreams ist mit AutoStreams mittlerweile in der Lage, anhand eines Performance-Profils ein Programm in eine (beliebige) Anzahl an Threads aufzuteilen. Hierbei wird lediglich eine Pipeline mit 1:1 Verbindungen aufgebaut. Dies ist die einfachste Variante einer Aufteilung. µStreams besitzt allerdings momentan weitaus mehr ungenutzte Parallelsierungsmechnismen:

    • Scheifen (welche möglicherweise die kritische Pipelinestufe bilden) weiter aufteilen, um Aufteilungspunkte besser platzieren zu können und eine ausgewogene Pipeline zu bekommen.
    • Bei einer Entscheidung zwischen mehreren möglichen Aufteilungen, den geschätzten Ressourcenverbrauch auf dem FPGA bzw. die maximal mögliche Frequenz mit einzubeziehen.
    • Nutzung des replicate Konstrunkts aus µStreams, um kritische Pipelinestufen quasi Superskalar aufzubauen und damit zu entlasten.

    Ziel dieser Arbeit soll es daher sein, die bisher ungenutzten Parallelisierungsmechnismen zu integrieren, um das volle Potential von µStreams auszunutzen und optimal zu unterstützen.

  • Anbindung eines CGRAs an ein Host-System über PCIe
    Kategorie: Master-Arbeit
    Bearbeiter: Tim Burkert
    Betreuer: Changgong Li

    Coarse Grained Reconfigurable Arrays (CGRA) sind Schaltungen, die zumeist als Hardwarebeschleuniger eingesetzt werden. Einzelne Rechenzellen verarbeiten entsprechend eines im voraus definierten Operationsplans (Scheduling) Daten massiv parallel.

    Problematisch bei fast allen CGRAs, die nicht direkt in einen Prozessor integriert sind, ist der vergleichsweise hohe Aufwand auf Daten der Anwendung zuzugreifen oder den Konfigurationsspeicher zu beschreiben. Um die Ausführungsdauer dieses Vorgangs zu reduzieren und die Kommunikation mit dem zugehörigen Prozessor zu gewährleisten ist eine PCIe-Schnittstelle auf Seiten des Host vorgesehen.

    Im Rahmen dieser Arbeit soll ein vorhandenes CGRA mit einer PCIe-Schnittstelle versehen werden, welche die Kommunikationsschnittstelle zwischen Host und CGRA bildet und alle eingehenden Daten und Adressen entsprechend einer generischen CGRA Architektur passend aufarbeitet, bzw. die vom CGRA benötigten Daten in System konformer Weise aus dem Speicher des Host holt.

Drucken | Impressum | Datenschutzerklärung | Sitemap | Suche | Kontakt
Zum SeitenanfangZum Seitenanfang