Entwurf anwendungsspezifischer ProzessorenBetrachtet 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).
Weitere Informationen sind im WWW unter folgender URL verfügbar:
http://www12.informatik.uni-erlangen.de/research/buildabong | Projektleitung: Prof. Dr.-Ing. Jürgen Teich
Beteiligte: PD Dr.-Ing. Frank Hannig, Dr.-Ing. Alexey Kupriyanov
Laufzeit: 1.10.1998 - 31.1.2009
Kontakt: Hannig, Frank Telefon +49-9131-85-25153, Fax +49-9131-85-25149, E-Mail: frank.hannig@fau.de
|