Architektur-Exploration und Software-Werkzeuge für Netzwerkprozessoren
Final Report Abstract
Komplexe Hardware Instruktionen, die mehrere Operationen gleichzeitig ausführen und dadurch auch mehrerer Ausgabe register schreiben sind ein probates Mittel zur Performanzsteigerung von ASIPs zu denen auch NPUs gehören. Obwohl es genügend Ansätze gibt, um derartige Instruktionen automatisch während des Prozessorentwurfs für bestimmte Anwendungsklassen zu identifizieren, ist die Verwendung dieser Art Instruktionen durch Compiler bisher nicht geklärt. Daher werden solche Instruktionen nach dem heutigen Stand der Technik durch CKFs und Inline Assembly manuell in den Quelltext der Anwendung eingefügt. Diese Vorgehensweise ist allerdings fehleranfällig, zeitaufwendig und vor allem verlangsamt sie den Entwurfsprozess für ASIPs entscheidend. Um dieses Problem zu lösen ist während der Förderperiode eine Toolsuite entstanden, die einen effizienten Entwurfsablauf für NPUs ermöglicht. Hierbei wird der Compiler sowohl für die automatische ISA-Erweiterung einer NPU, als auch direkt für die Anwendung der komplexen Instruktionen eingesetzt. Dadurch entfällt die bisher notwendige iterative Verfeinerung einer ISA bei der Entwicklung des Instruktionssatzes und vor allem entfällt das manuelle Einfügen komplexer Instruktonen in den Quelltext der jeweiligen Anwendung. Dieser Entwurfsablauf ist somit schneller und zuverlässiger. NPUs sind als hochgradig parallele Prozessoren ebenfalls als MP-SoC zu betrachten. Bei der Programmierung von MP-SoCs im Allgemeinen müssen den einzelnen Teil Prozessoren Aufgaben zugewiesen werden, die möglichst unabhängig von einander bearbeitet werden, um ein Maximum an Durchsatz zu erzielen. Zusätzlich sind Programmierer mit dem Problem konfrontiert, dass gerade Netzwerkprotokolle häufig als Legacy Code in einer sequentiellen Hochsprache vorliegen. Hierin gilt es nun den vorliegenden Code zu analysieren und unabhängige Teilaufgaben derart zu bestimmen, dass eine Kollaboration der identifizierten Teilaufgaben ein korrektes Gesamtergebnis liefert und der Durchsatz maximiert wird. Um dieses Problem zu lösen, wurde am Lehrstuhl des Antragsteller das M APS-Werkzeug entwickelt, welches; die Zerlegung von sequentiellem C-Code unterstützt. Für die Zerlegung von Hochsprachen in parallele Tasks ist einer interprozedurale Pointer-Analyse unerlässlich, da sie Aufschluss über korrelierende Speicherstellen gibt. Des Weiteren hat sich durch die Etablierung von Multi-Media Anwendungen als sogenannte Access-Protokolle wie Voice-over-IP etc. eine Array-Analyse als ebenso unerlässlich erwiesen, da Multi-Media Anwendungen im Allgemeinen aus einer Vielzahl Schleifen mit darin enthaltenen Array-Zugriffen bestehen. Aus diesem Grund ist im Rahmen der Entwicklung des MAPS-Werkzeugs eine interprozedurale Pointer- und Array Analyse entstanden. Für weitere Forschungsprojekte bietet sich als Verallgemeinerung der bisherigen Erkenntnisse die Untersuchung eines effizienten Entwurfsablauf für MP-SoC Plattformen an. Das Problem das hierbei betrachtet werden muss ist ähnlich des Entwurfs für NPUs zweigeteilt. Um für eine Anwendungsklasse die optimale MP-SoC Plattform zu entwerfen, müssen 1. die sequentiellen Anwendungen in unabhängige Teilaufgaben zerlegt werden, um eine Vorstellung über die benötigten Prozessoren für die Plattform zu bekommen und 2. weiterhin müssen für die einzelnen Prozessoren effizient compilerfreundliche ISAs entworfen werden, so dass alle ihnen zugedachten Teilaufgaben durch einen Compiler übersetzt und mit maximaler Performanz ausgeführt werden können. Ein Compiler kann im Rahmen eines solchen Entwurfsablaufs für die statische Analyse betrachteter Anwendungen hinsichtlich unabhängiger Tasks eingesetzt werden. Des Weiteren können mit Hilfe des Compilers automatisch spezielle ISAs für die einzelnen Prozessoren festgelegt werden, durch die eine optimale Ausführung der Tasks möglich wird. Durch eine entsprechende Konfiguration unterschiedlicher Code- Selektoren können wiederum automatisch unterschiedlich ausgelegte Compiler für die verschiedenen ISAs generiert werden. Bei einer Simulation der Tasks auf einem Modell der Plattform kann abschließend die Performanz der einzelnen Prozessoren für die Anwendung ausgewertet werden.
Publications
- H. Scharwaechter, J. M. Youn, Y. Paek, R. Leupers, G. Ascheid and H. Meyr. ,A Code Generator Generator for Multi-Output Instructions" Proc. of the Int. Conference on Hardware/Software Codesign (CODES-ISSS), Salzburg, Austria, September 2007
- H. Scharwächte r, M. Hohenauer, R. Leupers, G, Aschweid, H. Meyr. "An Interprocedural Code Optimization Technique for Network Processors Using Hardware Multi-Threading Support*, Proc. of the Conference on Design,Automation & Test in Europe (DATE), März 2005
- H.Scharwaechter, D. Kammler, A. Wieferink, M. Hohenauer, J. Zeng, K. Karuri, R. Leupers, G. Ascheid and H. Meyr. "ASIP Architecture Exploration for Efficient IPSec Encryption: A Case Study", ACM Transactions on Embedded Computing Systems (TECS), 6(2), Mai 2007
- H.Scharwaechter, D. Kammler, A. Wieferink, M. Hohenauer, J. Zeng, K. Karuri, R. Leupers, G. Ascheid and H. Meyr. ,ASIP Architecture Exploration for Efficient IPSec Encryption: A Case Study, Proc. of the Workshop on Software and Compilers for Embedded Systems (SCOPES), September 2004
- M. Hohenauer, H. Scharwächter, K. Karuri, 0. Wahlen, R. Leupers, G. Ascheid, H. Meyr. ,A Methodology and Tool Suite for C Compiler Generation from ADL Models", Proc. of the Conference on Design, Automation & Test in Europe (DATE), März 2004
- Md. M. R. Mozumdar, K. Karuri, A. Chattopadhyay, S. Kraemer, H. Scharwächter, H. Meyr, G. Ascheid, R. Leupers. "Instruction Set Customization of Application Specific Processors for Network Processing: A Case Study". Proc. of the Int. Conf. on Application Specific Systems, Architectures, and Processors (ASAP), Juli 2005
- R. Leupers, M. Hohenauer, J. Ceng, H. Scharwächter, G. Ascheid, H. Meyr. "Retargetable Compilers and Architecture Exploration for Embedded Processors", IEE Proceedings Computer and Digital Techniques, Oktober 2004