Entwurf anwendungsspezifischer Prozessoren

Eigenmittelfinanziertes Projekt


Details zum Projekt

Projektleiter/in:
Prof. Dr.-Ing. Jürgen Teich


Beteiligte FAU-Organisationseinheiten:
Lehrstuhl für Informatik 12 (Hardware-Software-Co-Design)

Akronym: BUILDABONG
Projektstart: 01.10.1998
Projektende: 31.01.2009


Abstract (fachliche Beschreibung):


Betrachtet werden die Probleme der Modellierung, Simulation und des systematischen Entwurfs anwendungsspezifischer Instruktionssatzprozessoren (engl. application-specific instruction-set processors, ASIPs). Dazu gehören beispielsweise digitale Signalprozessoren (DSPs) und Mikrocontrollerarchitekturen. Untersucht werden neuartige Simulationskonzepte sowie bessere Compilerverfahren zur Unterstützung dieser Klasse von Architekturen.

Im Rahmen dieses Projekts ist ein Entwurfssystem zur Computer-Architektur und Compiler Co-Generierung entstanden. Es beinhaltet komfortable Werkzeuge zur halbautomatischen Exploration optimaler Architektur-/Compiler-Entwürfe und zur schnellen, bitgenauen und zyklentreuen Simulation.

Ausgangspunkt eines Entwurfs ist das Werkzeug „ArchitectureComposer“. Der Entwickler wählt aus einer Bibliothek Komponenten aus und komponiert seine Architektur graphisch, indem er instanziierte Komponenten miteinander verbindet. Die Bibliothek enthält viele für den Prozessorentwurf notwendige Basisblöcke, wie arithmetische Einheiten, Speicherbausteine, Registerbänke, Multiplexer u. a., und kann gegebenenfalls um weitere Module, wie Caches, spezielle Verbindungsnetzwerke, etc., erweitert werden. Alle Komponenten sind parametrisiert, so dass beispielsweise die Wortbreite der Einheiten individuell ausgewählt werden kann. Realistische Mikroprozessoren, u. a. ein MIPS-Prozessor und ein Digitaler Signalprozessor der Texas Instruments TMS320C6-Serie, konnten erfolgreich innerhalb von Stunden entworfen werden.

Um bereits entworfene Teilsysteme mehrfach instanziieren zu können, bietet „ArchitectureComposer“ die Möglichkeit, hierarchischer Komponenten. Ferner existiert ein VHDL-Codegenerator, der die direkte Hardwaresynthese eines Mikroprozessors aus dessen graphischer Beschreibung mittels „ArchitectureComposer“ ermöglicht. Derzeit wird ein entsprechender Generator für die Spezifikationssprache SystemC entwickelt.

Aus der graphischen Eingabe wird automatisch ein gemischtes Struktur-/Verhaltensmodell der Architektur, basierend auf dem Formalismus sog. „abstrakter Zustandsmaschinen“ (ASM), generiert. Ebenfalls automatisch wird eine architekturspezifische Simulationsumgebung erzeugt, die in der Lage ist, die entworfene Prozessorarchitektur bit- und zyklengetreu zu simulieren. Um die bitgenaue Simulation der Ausführung von Instruktionen zu ermöglichen, wird eine Bibliothek von Operationen auf beliebigen Wortlängen und Zahlendarstellungen verwendet. Die Spezifikation des Anwendungsprogramms erfolgt derzeit in Assemblernotation der entsprechenden Zielarchitektur. Die Generierung eines Parsers für die Simulatoreingabe der Assemblerprogramme wird ebenfalls von der Simulationsumgebung unterstützt.

Gegenüber bekannten Simulatoren für Mikroprozessoren wird bei unserem Ansatz ein Simulator speziell für die eingegebene Architektur generiert. Dieser Simulator ermöglicht es, ein vorgegebenes Programm schrittweise abzuarbeiten. So können beliebige interne Signale im Prozessor während des Simulationsablaufs als Testpunkte ausgewählt und Datenwerte an diesen Punkten beobachtet werden. Dieser Ansatz ist flexibler als bei statischen Simulatoren, die meistens nur Speicher- und Registerwerte anzeigen können. Da sich das Verhalten von Prozessoren sehr kompakt mittels ASMs modellieren lässt, kann eine erhebliche Steigerung der Simulatorperformanz erzielt werden im Vergleich zu Modellierungsansätzen gleicher Simulationsgenauigkeit, die auf Hardwarebeschreibungssprachen basieren. Um die Simulatorperformanz nochmals erheblich zu steigern, wird derzeit die Generierung von in C++ compilierten Simulatoren untersucht. Hierbei kommen effiziente Graphpartitionierungs-Strategien zum Einsatz.

Bei modernen Mikroprozessoren können oft mehrere Instruktionen gleichzeitig auf mehreren funktionalen Einheiten abgearbeitet werden. Um diese parallele Abarbeitung zu unterstützen, muss ein Compiler in der Lage sein, bei der Übersetzung eines Hochsprachenprogramms in Maschinencode die Abhängigkeiten von Daten zu analysieren und parallelen Code zu generieren. Dazu braucht er Information über Maschineneigenschaften, welche direkt aus der eingegebenen Architektur extrahiert werden können. Wir setzen einen retargierbaren Compiler für ANSI C-Code ein, der zahlreiche Optimierungen auf dem Zwischencode unterstützt, u. a. Elimination von redundantem Code, Propagation von Variablen und Schleifenentfaltung. In der Codegenerierungsphase wird aus der Information über die Anzahl funktionaler Einheiten und der Ressourcenbelegung während der Instruktionsabarbeitung ein Maschinenprogramm generiert, das der Simulator direkt verarbeiten kann.

Architekturänderungen mit entsprechenden Compileranpassungen können in einer Schleife zur Exploration von optimalen Architektur-/Compiler-Systemen untersucht werden. Für eine modifizierte Architektur wird der Compiler angepasst und eine Menge von Benchmarkprogrammen übersetzt und auf dem ebenfalls generierten Simulator simuliert. Dies erfolgt völlig automatisch. Als Ergebnis liefert der Simulator Statistiken über Ausführungszeiten, Codegrößen von Modulen und andere Optimierungsgrößen zurück. Interessant sind hier diejenigen Architektur-/Compiler-Systeme, die bezüglich Kosten der Architektur und Effizienz des durch den Compiler generierten Codes optimal sind für eine gegebene Menge von Benchmarkprogrammen. Geeignet zu instrumentieren sind hier die Möglichkeiten der Änderbarkeit der Architektur und die Art der Anwendung von Codeoptimierungsverfahren. Beide zusammen stellen den Suchraum dieses komplexen Optimierungsproblems dar.

Unsere zukünftigen Forschungen beschäftigen sich mit Erweiterungen des Projekts zur Modellierung, Simulation und des systematischen Entwurfs von so genannten rekonfigurierbaren Instruktionssatzprozessoren (engl. reconfigurable instruction-set processors, RISPs).



Publikationen

Fischer, D., Teich, J., Thies, M., & Weper, R. (2002). Efficient Architecture/Compiler Co-Exploration for ASIPs. In ACM SIG Proceedings of the International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (pp. 27-34). Grenoble, FR.
Fischer, D., Kastens, U., Teich, J., Thies, M., & Weper, R. (2001). Design Space Characterization for Architecture/Compiler Co-Exploration. In ACM SIG Proceedings International Conference on Compilers, Architectures and Synthesis for Embedded Systems (pp. 108-115). Atlanta, Georgia, US.
Fischer, D., Teich, J., & Weper, R. (2001). Hierarchical Modeling and Simulation of Embedded Processors Using ASMs. In International Workshop on Software and Compilers for Embedded Systems (pp. ???). St.Goar, DE.
Fischer, D., Teich, J., Trinkert, S., & Weper, R. (2000). A Joined Architecture/Compiler Environment for ASIPs. In ACM SIG Proc. International Conference on Compilers, Architectures and Synthesis for Embedded Systems (pp. 26 - 33). San Jose, CA, US.
Fischer, D., Teich, J., Trinkert, S., & Weper, R. (2000). BUILDABONG: A Rapid Prototyping Environment for ASIPs. In Proc. DSP-Deutschland 2000 (pp. 153-162). Munich.
Kutter, P., Teich, J., & Weper, R. (2000). Description and Simulation of Microprocessor Instruction Sets Using ASMs. In Lecture Notes in Computer Science (LNCS) 1912 (pp. 266-286). Springer Verlag.

Zuletzt aktualisiert 2018-22-11 um 18:21