Detailseite
Projekt Druckansicht

SCAD: Synchrone Kontroll-/Asynchrone Datenfluss (SCAD) Architekturen

Fachliche Zuordnung Rechnerarchitektur, eingebettete und massiv parallele Systeme
Förderung Förderung seit 2020
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 424386388
 
Viele Prozessoren legen ihre internen Datenpfade für den Compiler offen, so dass der Compiler (1) den Befehlen Funktionseinheiten (PUs) zuweisen, (2) die Befehle auf den zugewiesenen PUs einplanen und (3) sogar die Kommunikation von Zwischenergebnissen zwischen den PUs organisieren kann. Die Idee, mehr Arbeit auf den Compiler zu verlagern, die von VLIW und anderen Architekturen stammt, wird hier auf die Allokation von PUs und die Kommunikation von Zwischenergebnissen erweitert. Die statische Lösung dieser Syntheseprobleme durch den Compiler kann die Leistung erheblich steigern, indem mehr Parallelität auf Befehlsebene (ILP) ausgenutzt und der Stromverbrauch des Prozessors gesenkt wird. Die Dezentralisierung der Hardwarekomponenten beseitigt Engpässe in der Hardware und ermöglicht ein lineares Wachstum der Chipgröße, so dass diese Prozessoren eine große Anzahl von PUs aufweisen können. In der ersten Förderperiode haben wir das Codegenerierungsproblem von gepufferten exponierten Datenpfad-Architekturen (BED) mit Hilfe von SAT- und SMT-Constraints formalisiert, um das Problem genau zu verstehen. Zu diesem Zweck entwickelten wir eine Übersetzung von sequentiellen Programmen in Datenfluss-Prozessnetzwerke (DPNs), deren Knoten auf die PUs der BED-Architektur abgebildet werden. Mit Hilfe von SAT- und SMT-Solvern können wir optimalen Code generieren. Wir haben auch Allokations- und Schedulingprobleme einzeln betrachtet, um ihren Einfluss auf das Gesamtproblem zu verstehen. Für die Hardware-Prototypen haben wir alle Basiskomponenten, d.h. die Puffer, die Funktionseinheiten und die On-Chip-Netzwerke entwickelt, und haben erste Prototypen evaluiert. Außerdem haben wir das Konzept der virtuellen Puffer entwickelt, um ein Design mit linearer Komplexität zu erhalten. Dazu haben wir simulationsbasierte Tools für die zyklusgenaue Simulation der Prototypen entwickelt. Da die Generierung von optimalem Code ein NP-vollständiges Problem ist, werden wir in der zweiten Förderperiode Heuristiken untersuchen, die polynomiell mit der Größe der Programme skalieren. Zu diesem Zweck haben wir bereits damit begonnen, das Allokations- und das Scheduling-Problem isoliert zu untersuchen, und können das Allokationsproblem bereits auf ein Graphenfärbungsproblem reduzieren, das mit Heuristiken in Polynomialzeit gelöst werden kann. Die Komplexität des Scheduling-Problems ist derzeit unklar, aber wir haben festgestellt, dass ein großer Teil davon aus 2SAT-Klauseln besteht, die in linearer Zeit gelöst werden können. Daher wollen wir Heuristiken entwickeln, die auf diesen Beobachtungen basieren, und Ergebnisse aus dem linearen Graphenlayout auf unser Codegenerierungsproblem anwenden. Auf der Hardwareseite wollen wir den Befehlsbus, der derzeit der Engpass unseres Designs darstellt, entfernen und mehrere Lade-/Speichereinheiten für den parallelen Speicherzugriff hinzufügen. Wir werden auch den Einsatz anwendungsspezifischer PUs und das Potenzial von Multithreading untersuchen.
DFG-Verfahren Sachbeihilfen
 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung