Bitte wählen Sie ihr Lieferland und ihre Kundengruppe
Sowohl die zunehmende Integrationsdichte moderner digitaler Logik als auch die Verschmelzung von programmierbarer Logik mit Mikroprozessoren haben dazu geführt, dass FPGAs zunehmend aus ihren klassischen Rollen als Verbindungslogik, Emulations- und Prototypisierungsplattform ausbrechen und zur Umsetzung vollständiger rekonfigurierbarer 'Systems-on-Chip' genutzt werden. Die Verbindung von leistungsfähigen Prozessorkernen und feingranularer rekonfigurierbarer Logik ermöglicht es, sowohl sequentielle und kontrolllastige als auch hochgradig datenparallele Berechnungen auf einer gemeinsamen Plattform durchzuführen. Konventionelle Entwurfsmethoden integrieren spezialisierte Hardware-Module oft als passive Co-Prozessoren und eignen sich daher schlecht zur Programmierung dieser hybriden rekonfigurierbaren Computer. Insbesondere überlappen sich die Programmiermodelle für Software (üblicherweise auf einem eingebetteten Betriebssystem ausgeführt) und digitaler Hardware (implementiert als programmierte Schaltungen eines FPGAs) nicht ausreichend, was das Potential für die Wiederverwendung von Modulen und die flexible Nutzung des HW/SW-Entwurfsraumes stark schmälert. Darüber hinaus findet die vielversprechende Möglichkeit zur partiellen Rekonfiguration, wie sie moderne SRAM-basierte FPGAs bieten, bisher keine Entsprechung in einem verbreiteten Entwurfsverfahren. Die vorliegende Arbeit stellt ein neuartiges und grundlegendes Konzept der Programmierung von Hardware-Modulen als Threads für programmierbare Hardware vor. Eine Ausführungsumgebung namens ReconOS wird gezeigt, die auf bestehenden eingebetteten Betriebssystemen basiert und das Multithreading-Programmiermodell, das bereits verbreitet und erfolgreich in Software-Umgebungen eingesetzt wird, auch auf rekonfigurierbare Hardware anwendet. Mittels Threads und gemeinsamen Synchronisations- und Kommunikations-Mechanismen als Abstraktionsschicht erlaubt diese Entwurfs- und Ausführungsumgebung die Erstellung von portablen und flexiblen Hardware/-Software-Anwendungen für CPU/FPGA-Systeme. Diese Arbeit diskutiert das ReconOS-Programmiermodell und die zugehörige Laufzeitumgebung und ihre Auswirkungen auf den Entwurf von Hardware-Threads und zeigt nichtpreemptive und kooperative Verfahren zur Nutzung der partiellen Rekonfiguration. Implementierungen werden präsentiert auf Basis moderner Plattform-FPGAs und den Betriebssystemen eCos und Linux. Flächenbedarf und Latenzen der vorgestellten Verfahren werden quantifiziert und die Anwendbarkeit und die Vorteile des Multithreading-Ansatzes anhand mehrerer Fallstudien wird demonstriert.
Rising logic densities together with the inclusion of dedicated processor cores have increasingly promoted reconfigurable logic devices, such as FPGAs, from traditional application areas such as glue logic, emulation, and prototyping to powerful implementation platforms for complete reconfigurable systems-on-chip. The combination of fast CPU cores and fine-grained reconfigurable logic allows designers to map both sequential, control-dominated code and highly parallel data-centric computations onto a single programmable device. However, traditional design techniques that view specialized hardware circuits as passive coprocessors are ill-suited for programming these reconfigurable computers. In particular, the programming models for software (running on an embedded operating system) and digital hardware (synthesized to an FPGA) lack commonalities which hinders design space exploration and severely impairs the potential for code re-use. Moreover, the promising feature of partial reconfiguration available in modern SRAM-based FPGAs has yet to be embraced by a pervasive programming paradigm. This thesis presents fundamental work in the new area of multithreaded programming of reconfigurable logic devices. It proposes an execution environment called ReconOS that is based on existing embedded operating systems and extends the multithreaded programming model already established and highly successful in the software domain-to-reconfigurable hardware. Using threads and common synchronization and communication services as an abstraction layer, this design and execution platforms allow for the creation of portable and flexible multithreaded HW/SW applications for CPU/FPGA systems. This work introduces the ReconOS programming model and its run-time environment, discusses its implications for the design of hardware components, and introduces non-preemptive and cooperative mechanisms for run-time sharing of reconfigurable resources through partial reconfiguration techniques integrated into the operating system. It presents implementations based on modern platform FPGAs and the software host operating systems eCos and Linux, quantifies time and area overheads of the proposed mechanisms and, finally, demonstrates the feasibility and the benefits of the multithreading design approach with several case studies.