TU Darmstadt / ULB / TUprints

Reconfigurable Computing Platforms and Target System Architectures for Automatic HW/SW Compilation

Lange, Holger (2011)
Reconfigurable Computing Platforms and Target System Architectures for Automatic HW/SW Compilation.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
Reconfigurable Computing Platforms and Target System Architectures for Automatic HW/SW Compilation - PDF
Holger_Lange_thesis.pdf
Copyright Information: CC BY-NC-ND 2.5 Generic - Creative Commons, Attribution, NonCommercial, NoDerivs .

Download (6MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Reconfigurable Computing Platforms and Target System Architectures for Automatic HW/SW Compilation
Language: English
Referees: Koch, Prof. Dr. Andreas ; Golze, Prof. Dr. Ulrich
Date: 3 May 2011
Place of Publication: Darmstadt
Date of oral examination: 11 April 2011
Abstract:

Embedded systems found their way into all areas of technology and everyday life, from transport systems, facility management, health care, to hand-held computers and cell phones as well as television sets and electric cookers. Modern fabrication techniques enable the integration of such complex sophisticated systems on a single chip (System-on-Chip, SoC). In many cases, a high processing power is required at predetermined, often limited energy budgets. To adjust the processing power even more specifically to application needs while meeting the energy budget, Field-Programmable Gate Arrays (FPGAs) can be employed as energy-conserving configurable logic devices. Beyond their well-known flexibility, recent FPGAs offer sufficient capacity to accommodate entire SoCs. These reconfigurable SoCs (rSoCs) can serve as a basis for Reconfigurable Computing Platforms (RCPs). Here, a suitable part of the application program is compiled into hardware (HW) to increase efficiency, while the remainder is executed in software (SW). Beyond the logic circuits themselves, RCPs require an infrastructure for platform and application design, program execution, and application data storage to accommodate the increasing complexity of modern embedded systems. Hence, this work defines four Columns supporting the RCP. As the first Column, this thesis presents an execution model orchestrating the fine-grained interaction of a conventional general purpose processor (GPP) and a high-speed reconfigurable hardware accelerator (HA), the latter having full direct access to memory. The resulting requirements are realized efficiently in a custom computer architecture by a number of solutions on both the hardware as well as operating system levels. One of these measures is a low-latency HA-to-GPP signalling scheme that reduces the response time by up to a factor of 23x even on a relatively slow embedded processor. Another one is a high-bandwidth shared memory interface that does not interfere with time-critical operating system functions executing on the GPP, but still makes 89% of the theoretical memory bandwidth available to the HA. Two schemes of allowing the HA access to protected virtual memory complement the physical interface, differing in their use of an MMU, and their flexibility / performance trade-offs. All of the techniques and their interactions are then evaluated at the system level using the full-scale virtual memory variant of the Linux operating system. The second Column is formed by the description of static RCP characteristics. Complex embedded systems often comprise large system-specific parameter sets that span a wide range of possible combinations, not all of them legal. On the one hand, the RCP description is important as a well-defined target for EDA tools and compilers. On the other hand, intellectual property (IP) cores targeted at (r)SoCs expect a specific system environment, certain resources, or address windows to map their registers. Hence, an RCP management system is presented for describing static component properties, interfaces, and bus systems. To this end, the RCP management not only considers individual components and their configuration parameters, but presents a homogeneous view of the entire system. However, the static RCP description does not suffice to serve as a compiler target. In addition, a powerful RCP resource and component management is defined, which enables compile-time reservation of resources requested by IP cores. Moreover, an algorithm for automatic RCP composition is specified, which relies on the RCP description and interacts closely with the resource management to instantiate RCP components and connect them via bus systems. A description of dynamic RCP characteristics is further required to embed complex IP cores from high-level languages into automatically generated datapaths, and forms the third Column supporting the RCP. The resulting multitude of possible interface combinations requires the exploration of a large design space when manually developing the system. To compose IP cores tightly coupled with the datapath from an ANSI C description into a system, and subsequently interact with them, a HW/SW interface description was developed. It establishes an automatic design flow presenting convenient, simple C interfaces (function prototypes) to a SW developer. The description consists of rules for an idiomatic C programming style, and the interface control semantics of an IP core. Correspondingly, it defines a data model and human-readable description language for the characteristics of individual IP cores. The interplay of these components is evaluated on an rSoC using a real-world example. Sourcing and draining the data volume of a large embedded system without latency while intelligently exploiting the limited memory bandwidth can be challenging. Hence, a distributed speculative memory system is presented as the fourth Column supporting the RCP. By exploiting the reconfigurability of the RCP, the highly parameterized memory system can be adapted to the specific needs of each application. Customizable characteristics include the number of parallel memory ports to support the spatially distributed computation model of HAs. In contrast to the temporally distributed one of an SPP, each memory operator can be connected to a dedicated port here. Efficient speculative execution of the HA datapath is enabled by a dynamic prioritization scheme for arbitrating access to shared memory. The prioritization depends on per-port control speculation statistics collected at run-time, preferably serving accesses with a higher execution probability. This scheme, inspired by the branch prediction of conventional GPPs, additionally employs speculative prefetching to make very probably required data available in the cache in time before the actual access. System-level measurements on an rSoC show speed-ups of up to 1.65x at only low resource usage for typical applications.

Alternative Abstract:
Alternative AbstractLanguage

Eingebettete Systeme haben Einzug in alle Bereiche der Technik und des täglichen Lebens von Verkehrssystemen, Gebäudemanagement, Medizin, über Taschencomputer und Mobiltelefone bis hin zu Fernsehgeräten und Elektroherden gehalten. Moderne Fertigungsmethoden erlauben die Integration solcher komplexen, hochentwickelten Systeme auf einem einzigen Baustein (System On Chip, SoC). Um die oft hohe benötigte Rechenleistung unter Einhaltung des vorgegebenen, zum Teil eingeschränkten Energiebudgets noch spezieller auf den Anwendungsfall abzustimmen, können Field-Programmable Gate Arrays (FPGAs) als energiesparende, programmierbare Logikbausteine eingesetzt werden. FPGAs bieten neben ihrer bekannten Flexibilität mittlerweile ausreichend Kapazität, um gesamte SoCs aufzunehmen. Diese rekonfigurierbaren SoCs (rSoCs) können als Basis für Rekonfigurierbare Rechenplattformen (RR) dienen. Bei RRs wird zur Effizienzsteigerung ein geeigneter Teil des Anwendungsprogramms in Hardware (HW) übersetzt, während der Rest in Software (SW) ausgeführt wird. Zur Beherrschung der steigenden Komplexität moderner eingebetteter Systeme benötigen RRs über die reine Schaltungslogik hinaus eine Infrastruktur zur Plattform- und Anwendungserstellung, Programmausführung und Speicherung von Anwendungsdaten. Diese Arbeit definiert daher vier Säulen zur Unterstützung der RR. Als erste Säule wird ein Ausführungsmodell zur Steuerung der feingranularen Interaktion zwischen einem konventionellen SW-programmierbaren Prozessor (SPP) und einem schnellen rekonfigurierbaren HW-Beschleuniger (HB) vorgestellt, wobei der HB über vollständigen direkten Speicherzugriff verfügt. Anschließend wird die effiziente Umsetzung der resultierenden Anforderungen durch eine Reihe von Lösungen auf HW- und Betriebssystem (BS)-Ebene in einer maßgeschneiderten Rechnerarchitektur beschrieben. Eine dieser Maßnahmen ist ein Signalisierungssystem zwischen HB und SPP mit niedriger Latenz, welches die Antwortzeit sogar auf einem relativ langsamen eingebetteten Prozessor bis zu 23-fach reduziert. Eine weitere Lösung bietet eine verbesserte Schnittstelle mit hohem Datendurchsatz für Zugriffe auf gemeinsam genutzten Speicher. Dabei werden auf dem SPP ausgeführte, zeitkritische BS-Funktionen nicht beeinträchtigt, obwohl der HB gleichzeitig 89% der theoretischen Speicherbandbreite nutzen kann. Ergänzend zur physikalischen Schnittstelle werden zwei Schemata vorgestellt, die dem HB den Zugriff auf geschützten virtuellen Speicher ermöglichen. Diese unterscheiden sich in der Verwendung einer Speicherverwaltungseinheit (MMU) sowie gegenläufig ausgeprägter Flexibilität und Leistung. Alle Techniken und ihr Zusammenspiel werden dann auf Systemebene unter Einsatz der vollständigen, virtuellen Speicher nutzenden Variante des Linux-BS evaluiert. Die Beschreibung der statischen Eigenschaften von RR bildet die zweite Säule. Komplexe eingebettete Systeme umfassen oft große systemspezifische Parametermengen, die einen weiten Bereich möglicher, nicht immer zulässiger Kombinationen überdecken. Der RR-Beschreibung kommt einerseits eine besondere Bedeutung als wohldefiniertes Ziel für automatische Entwurfswerkzeuge und Compiler zu, andererseits erwarten auf (r)SoC ausgerichtete Intellectual Property (IP)-Blöcke eine bestimmte Systemumgebung, spezielle Ressourcen oder Adressbereiche zur Einblendung ihrer Register. Daher wird ein RR-Verwaltungssystem zur Beschreibung statischer Komponenteneigenschaften, -schnittstellen und Bussysteme vorgestellt. Dabei werden nicht nur einzelne Komponenten und deren Konfigurationsparameter abgebildet, sondern es wird eine einheitliche Sicht auf das Gesamtsystem bereitgestellt. Um als Compiler-Zielplattform dienen zu können, wird über die statische RR-Beschreibung hinaus ein leistungsfähiges Management der RR-Ressourcen und -komponenten definiert, welches die Reservierung für IP-Blöcke benötigter Ressourcen zur Übersetzungszeit ermöglicht. Ferner wird ein Algorithmus zur automatischen RR-Komposition (Instanzierung der einzelnen RR-Komponenten und deren Verbindung durch Bussysteme) ausgehend von der RR-Beschreibung angegeben, welcher eng verzahnt mit dem Ressourcenmanagement arbeitet. Eine Beschreibung von dynamischen RR-Eigenschaften wird weiterhin für die Einbindung von komplexen IP-Blöcken aus Hochsprachen in automatisch generierte Datenpfade benötigt, der dritten RR-tragenden Säule. Die dabei entstehende Vielzahl möglicher Schnittstellenkombinationen erzwingt bei manueller Systementwicklung die Erforschung eines großen Entwurfsraums. Um IP-Blöcke ausgehend von einer ANSI C Beschreibung eng gekoppelt mit dem Datenpfad zu einem System zusammenzusetzen und mit ihnen zu interagieren, wurde eine HW/SW Schnittstellenbeschreibung entwickelt. Sie bietet einen automatischen Design-Fluss, wobei sie einem SW-Entwickler geeignete, einfache C Schnittstellen (Funktionsprototypen) präsentiert. Sie besteht aus Regeln für einen idiomatischen C Programmierstil und den Schnittstellensteuerungssemantiken eines IP-Blocks. Dazu definiert sie ein Datenmodell und eine menschenlesbare Beschreibungssprache für die Charakteristiken einzelner IP-Blöcke. Das Zusammenspiel dieser Komponenten wird anhand eines realen Beispiels auf einem rSoC evaluiert. Um das Datenaufkommen eines großen eingebetteten Systems verzögerungsfrei zu verarbeiten und dabei die begrenzte verfügbare Speicherbandbreite intelligent zu nutzen, wird als vierte RR-tragende Säule ein verteiltes spekulatives Speichersystem präsentiert. Dazu kann das durchgehend parametrisierte Speichersystem durch Ausnutzung der Rekonfigurierbarkeit der RR an die Erfordernisse der jeweiligen Anwendung angepasst werden. Unter anderem ist die Anzahl der parallelen Speicherports wählbar, um das räumlich verteilte Berechnungsmodell der HBs zu unterstützen. Im Gegensatz zum zeitlich verteilten Modell der SPPs kann hier jeder Speicheroperator an einen eigenen Port angeschlossen werden. Dabei wird die effiziente spekulative Ausführung des HB-Datenpfads durch dynamisch priorisierte Zugriffe der einzelnen Ports auf den gemeinsam genutzten Speicher ermöglicht. Die Prioritätsvergabe richtet sich nach portweise zur Laufzeit erhobenen Kontrollspekulationsstatistiken, wobei Zugriffe mit höherer Ausführungswahrscheinlichkeit bevorzugt bedient werden. Dieses von der Sprungvorhersage konventioneller SPPs inspirierte Verfahren verwendet darüber hinaus spekulatives Prefetching, um sehr wahrscheinlich benötigte Daten rechtzeitig vor dem tatsächlichen Zugriff im Cache bereitzustellen. Messungen auf Systemebene an einem rSoC zeigen eine bis zu 1,65-fache Beschleunigung typischer Anwendungen bei nur geringem Ressourcenverbrauch.

German
Uncontrolled Keywords: Reconfigurable Computing Platform, automatic HW/SW compilation, platform management, HW/SW interface description, speculative memory system, hardware accelerator, FPGA, rSoC, IP-based design, HW/SW co-design
Alternative keywords:
Alternative keywordsLanguage
Reconfigurable Computing Platform, automatic HW/SW compilation, platform management, HW/SW interface description, speculative memory system, hardware accelerator, FPGA, rSoC, IP-based design, HW/SW co-designEnglish
URN: urn:nbn:de:tuda-tuprints-25609
Classification DDC: 600 Technology, medicine, applied sciences > 620 Engineering and machine engineering
000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science > Embedded Systems and Applications
Date Deposited: 03 May 2011 13:50
Last Modified: 25 Jan 2024 12:38
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/2560
PPN: 38624393X
Export:
Actions (login required)
View Item View Item