Rapid Prototyping for Hardware Accelerators in the Medical Imaging Domain

Language
en
Document Type
Doctoral Thesis
Issue Date
2015-09-24
Issue Year
2015
Authors
Schmid, Moritz
Editor
Abstract

The tremendous technological progress in recent years has enabled Field Programmable Gate Arrays (FPGAs) to become very complex devices. In comparison to other popular accelerator technologies, such as Graphics Processing Units (GPUs), they may often offer competitive performance at a higher energy efficiency. Despite of many achievements in electronic design automation, a considerable part of the FPGA design process remains cumbersome and may elude inexperienced developers from choosing FPGAs over other accelerator technologies. In order to allow engineers with little or no prior hardware design experience to develop hardware accelerators for FPGA-based System-on-a-Chip (SoC) de- signs, this work proposes relevant contributions to system-level design primarily in the fields of (a) domain-specific High-Level Synthesis (HLS), and (b) interface synthesis for FPGA-based SoC integration of image processing Intellectual Property (IP) cores.
Most of the currently available HLS frameworks allow design entry using high-level programming languages, such as C++. Nevertheless, achieving efficient and high-performance synthesis results still demands an in-depth understanding of FPGA design principles. In many cases it is even required to be familiar with parallelization techniques to guide the hardware synthesis process. For these reasons, many of the available tools are not yet suitable for developers without the relevant experience. To mitigate this situation, this work proposes a lightweight library of basic code templates for medical image processing that allows the generation of hardware accelerator IP cores using HLS without requiring expertise in how to design the actual hardware implementation. Algorithms in this application domain are often a sequence of basic image processing operations, such as point, local, and global operators. Instead of providing complete algorithms, the library contains building blocks for these basic operators, as well as design elements for stream-based interconnection to facilitate the assembly of filter pipelines, as required for the implementation of complex algorithms. Directives to guide the synthesis process are already contained in the source code of the library and can be accessed easily from the top level without having to search a vast body of code. This modular structure allows designers to easily extend the library with new features, but also to perform design space exploration and tune the synthesis to achieve specific design goals, such as a high performance or low resource requirements. Since the library is written in C++, initial development and testing of new specifications can be carried out entirely in a familiar, software-based environment and requires neither knowledge of hardware design nor the necessary Computer Aided Design (CAD) tools. Another advantage of this design approach is a reduction of the development time, since testing and error localization is achieved significantly faster by running software than at the register-transfer-level using logic simulation. We have assessed the quality of the hardware synthesis results by using the library to generate accelerators for several typical algorithms for medical image processing. We show that in comparison to other libraries, our approach can achieve a higher throughput and a more efficient exploitation of the resources available on an FPGA. Furthermore, we have also compared the generated FPGA accelerators to highly optimized implementations for server-grade and embedded GPUs, where we can achieve a higher throughput, while at the same time, provide a substantially more energy-efficient solution. As an FPGA is initially unprogrammed, actually employing a HLS-generated image processing IP core requires to integrate it into its on- and off-chip environment. In order to prepare the automation of on- and off-chip integration, this work is also concerned with interface synthesis for FPGA-based SoC integration of accelerator IP cores. For on-chip integration, we propose an On-Chip Interconnect (OCI) that is built on a standardized bus specification and provides support for data streaming, as well as memory mapped components. Data type conversion and clock domain crossing between connected components is hereby handled inside of the OCI. In this way, a synthesized accelerator can be integrated into an SoC design without having to comply with any constraints imposed by other modules. This ensures interoperability across a wide range of vendor-supplied design modules and also supports the specification of custom protocols to communicate with user-specific components. Furthermore, we propose solutions for the integration of the SoC design into its off-chip environment, which might include a host computer or a distributed embedded system. For coupling an FPGA-based accelerator to a host computer, we establish connectivity between an image processing IP core and a Peripheral Component Interconnect Express (PCIe) communication controller via the OCI of an FPGA-based SoC design. For this purpose, we have developed a Linux-based software interface and driver, in order to exchange data between a software program and an accelerator in a hardware/software co-design, using PCIe for communication. To integrate an image processing accelerator in a distributed embedded system, we facilitate data exchange in the absence of software control using the Serial RapidIO (SRIO) protocol as an example for high-speed Serializer/Deserializer (SerDes) communication. Here we develop an SRIO communication controller that is augmented with a custom user application to autonomously generate packets for streaming-based application data. The developed communication endpoint can be seamlessly integrated into an OCI for FPGA-based SoC designs. Based on the presented preparations for automating system-level synthesis, we propose a holistic, fully automated prototyping procedure for the development of FPGA-based image processing accelerators comprising the following three major steps: 1. A functional specification of the accelerator is developed in a high-level programming language, using the proposed library as a high-level abstraction. The specification can be executed as part of a software program in oder to evaluate and optimize it with respect to the design goals. Once the specification fulfills the objectives, a hardware description in form of an IP core is automatically generated using HLS. 
 2. For board-level evaluation, the generated IP core is integrated into an FPGA-based SoC design and implemented on an FPGA development board that is connected to a host-computer via PCIe. As part of a hardware/software co-design, the generated IP core is evaluated and verified by a software-program running on the host-computer. 
 3. Finally, the synthesized IP core is evaluated under real-world conditions, for example as part of a product. For this, the IP core is integrated into an FPGA-based SoC for system-level evaluation that provides connectivity to the target system, for example, via the SRIO protocol. 
 The presented approaches for domain-specific HLS and interface synthesis considerably contribute to the automation of system-level design and therefore make the FPGA-platform approachable also for software developers who might lack any hardware design experience. The proposed high-level abstractions in form of a library allow the intuitive development of functional specifications for HLS in a high-level programming language. This facilitates (a) software-based localization and elimination of programming errors, (b) rapid design space exploration, (c) optimization with respect to specific design goals, and may thus remarkably expedite the design cycle. The contributions for interface synthesis allow the rapid integration of a generated IP core into FPGA-based SoC designs in order to perform (a) software-based board-level evaluation and verification as part of a hardware/software co-design, and (b) system-level evaluation for validation of system-level design decisions. In this way, we contribute a holistic and fully automized approach for rapid prototyping of hardware-accelerators that may increase productivity significantly. Although we concentrate on medical image processing in this work, the contributions are also applicable to many other application areas.

Abstract

Aufgrund des enormen technischen Fortschritts der vergangenen Jahre verfügen rekonfigurierbare Logikbausteine (engl. Field Programmable Gate Array (FPGA)) mittlerweile über eine ausreichend große Menge an Logikressourcen, um auch sehr komplexe Hardware-Systeme, zum Beispiel in Form einer Ein-Chip-Realisierung (engl. System-on-a-Chip (SoC)), implementieren zu können. Im Vergleich zu anderen oftmals verwendeten Beschleunigern, wie zum Beispiel Grafikkarten (engl. Graphics Processing Unit (GPU)), kann mit FPGAs eine vergleichbare Verarbeitungsgeschwindigkeit bei jedoch wesentlich höherer Energieeffizienz erreicht werden. Obwohl in der Entwurfsmethodik für Hardware-Systeme enorme Fortschritte hinsichtlich der Entwurfsautomatisierung erreicht werden konnten, existieren beim Entwurf von Schaltungen für FPGAs immer noch genügend schwierige Teilschritte die unerfahrene EntwicklerInnen davon abhalten sich bei der Konzipierung eines Systems für die FPGA-Plattform zu entscheiden. Um den Entwurf von FPGA-basierten Hardwarebeschleunigern in Form von Funktionsblöcken, sogenannten IP-Cores, auch für EntwicklerInnen mit nur wenig bzw. ohne Erfahrung im Hardware-Entwurf zu ermöglichen, werden in dieser Arbeit relevante Beiträge für den Entwurf auf der Systemebene vorgestellt. Insbesondere werden hierbei die Bereiche der (a) domänenspezifischen Architektursynthese von IP-Cores und der (b) Schnittstellensynthese für die Integration von IP-Cores in FPGA-basierte SoCs behandelt. Viele der heute verfügbaren Werkzeuge für die Architektursynthese (engl. High- Level Synthesis (HLS)) erlauben die Verwendung von höheren Programmiersprachen, wie zum Beispiel C++, für die Verhaltensbeschreibung. Jedoch erfordert die Angabe einer geeigneten Spezifikation nach wie vor fundierte Kenntnisse aus dem Bereich des FPGA-Entwurfs um als Ergebnis der Architektursynthese auch eine hinreichend effiziente Hardware-Realisierung zu erhalten. Oftmals ist es auch nötig mit weiteren Prinzipien, wie z. B. der Parallelisierung, vertraut zu sein, um durch Angabe geeigneter Synthesedirektiven gezielt Einfluss auf die einzelnen Schritte der Synthese, bestehend aus Allokation, Ablaufplanung und Bindung, nehmen zu können. Aus diesen Gründen können viele der heute verfügbaren HLS-Werkzeuge noch nicht ohne entsprechende Erfahrung eingesetzt werden. Eine Verbesserung dieser Situation kann durch die Verwendung einer in dieser Arbeit vorgeschlagenen Bibliothek erreicht werden. Mit deren Hilfe ist es möglich, auch ohne relevante Entwurfserfahrung für die Architektursynthese geeignete Verhaltensbeschreibungen zu erstellen. Die Bibliothek wurde in der Programmiersprache C++ entworfen und ist besonders für den Einsatz im Bereich der medizinischen Bildverarbeitung ausgelegt. Algorithmen dieser Domäne können häufig als Komposition von grundlegenden Bildverarbeitungsoperationen, wie Punkt- und lokalen Operatoren, realisiert werden. Daher werden durch die Bibliothek keine komplexen Algorithmen sondern grundlegende, generische Klassen und Funktionen für diese Operatoren, als auch zur Unterstützung deren Kombination als Bildverarbeitungskette bereitgestellt. Synthese-Direktiven sind ebenfalls bereits im Quellcode der Bibliothek enthalten und können auf einfache Weise modifiziert werden indem sie jeweils an zentralen Stellen zusammengefasst aufgeführt sind. Dies ist insbesondere für die Entwurfsraumexploration auf Systemebene von Vorteil, da sich die mit Hilfe der Bibliothek erstellten Spezifikationen hinsichtlich unterschiedlichen Entwurfszielen, wie besonders hoher Durchsatz oder sehr niedriger Ressourcenverbrauch, optimieren lassen. Darüber hinaus ermöglicht die modulare Struktur der Bibliothek deren Erweiterung um neue Funktionalität auf besonders einfache Weise. Da die Bibliothek in der Programmiersprache C++ geschrieben wurde, können die mit Hilfe dieser Programmierabstraktion erstellten Verhaltensbeschreibungen wie normale Software-Programme ausgeführt und dabei evaluiert und verifiziert werden. Dies kann in einer üblichen Software-Umgebung geschehen und erfordert keine besonderen, rechnergestützten Entwurfswerkzeuge oder Kenntnis des Hardware-Entwurfs. Hierdurch wird auch eine Reduzierung der Entwurfszeit erreicht, da die funktionale Verifikation der Verhaltensbeschreibung als Software-Programm erheblich schneller ausgeführt werden kann als die Simulation einer vergleichbaren Schaltung auf der Register-Transfer-Ebene. Zur Bewertung der Qualität der unter Verwendung der Bibliothek erreich- baren Syntheseergebnisse, wurden für mehrere typische Algorithmen aus dem Bereich der medizinischen Bildverarbeitung mit Hilfe der Bibliothek Spezifikationen erstellt. Unter Zuhilfenahme des HLS-Werkzeugs Vivado HLS, wurden anschließend entsprechende IP-Cores synthetisiert. Hierbei konnte gezeigt werden, dass die mit Hilfe unserer Bibliothek synthetisierten IP-Cores einen höheren Durchsatz und eine effizientere Ausnutzung der auf dem FPGA verfügbaren Hardware-Ressourcen aufweisen, als die mit Hilfe einer vergleichbaren Bibliothek erzielten Ergebnisse. Des Weiteren wurden die Bildverarbeitungsalgorithmen auch für die Ausführung auf unterschiedlichen GPUs implementiert, sowohl aus dem Hochleistungsbereich als auch für eingebettete Systeme. Im direkten Vergleich können die für den Einsatz im Rahmen eines FPGA-basierten SoCs synthetisierten IP-Cores einen höheren Durchsatz sowie eine signifikant höhere Energieeffizienz als die GPU-Implementierungen erreichen. FPGAs sind anfangs nicht konfiguriert, so dass für den Einsatz einer auf dem FPGA zu verwendenden Hardware-Komponente auch deren Einbettung in eine entsprechende Systemarchitektur zur Kommunikation mit weiteren auf dem FPGA implementierten Komponenten als auch mit der Außenwelt erstellt werden muss. Eine solche Architektur kann zum Beispiel als SoC realisiert sein. Um die nötigen Voraussetzungen für die Automatisierung dieses Entwurfsschritts zu schaffen, beschäftigen wir uns in dieser Arbeit weiterführend mit der Schnittstellensynthese (engl. interface synthesis) für die Integration von automatisch synthetisierten Bilverarbeitungs-IP-Cores in FPGA-basierten SoCs. Für die Bereitstellung der nötigen Kommunikationskanäle zwischen den allozierten Systemkomponenten schlagen wir die Verwendung eines im FPGA implementierten Verbindungsnetzwerks (engl. On-Chip Interconnect (OCI)) vor. Dieses basiert auf einer standardisierten Datenbusspezifikation die den Transport von Daten sowohl als Datenstrom als auch über speicherbezogene Abbildung (engl. memory-mapped) unterstützt. Jegliche Art von Anpassung, z.B. der Bitbreite oder der Taktrate, zwischen den Schnittstellen verbundener Komponenten ist hierbei durch das OCI implementiert. Auf diese Weise müssen bei der Synthese der Bildverarbeitungskomponenten keine besonderen Anforderungen anderer Systemkomponenten berücksichtigt werden. Dies fördert die Interoperabilität mit einer großen Menge an verfügbaren IP-Cores und unterstützt den Entwurf von anwendungsspezifischen IP-Cores und Verbindungsprotokollen. Ein weiterer Schwerpunkt besteht in der Anbindung der Bildverarbeitungs-IP-Cores an die Außenwelt, zum Beispiel an einen Host-Computer, oder an weitere SoCs im Rahmen eines verteilt implementierten eingebetteten Systems. Die Kopplung der auf dem FPGA implementierten IP-Cores mit einem auf dem Mikroprozessor eines Host-Computers ausgeführten Anwendungsprogramm geschieht mit Hilfe des Verbindungsstandards Peripheral Component Interconnect Express (PCIe). Für die Realisierung als Hardware/Software-System wurde auf der Hardware-Seite hierfür eine Systemkomponente zur Implementierung der PCIe-Kommunikationsschnittstelle über das OCI mit dem Bildverarbeitungs-IP-Core verbunden. Auf der Software-Seite wurden für den Datenaustausch geeignete Software-Schnittstellen als auch ein entsprechender Gerätetreiber für das Linux- Betriebssystem entworfen. Die Integration eines Bildverarbeitungs-IP-Cores in ein verteilt implementiertes eingebettetes System wurde hingegen unter Verwendung eines sogenannten Serialisierer/Deserialisierer-Protokolls (abgek. SerDes) für die serielle Datenübertragung zwischen parallelen Endpunkten implementiert. Als Beispiel dient der Verbindungsstandard Serial RapidIO (SRIO), der speziell für die Kopplung von Hardware-Systemen konzipiert wurde und vollständig als Hardware-Komponente realisiert werden kann. Hervorzuheben ist der Entwurf einer anwendungsspezifischen Systemkomponente zur autonomen Generierung von SRIO-Paketen für Datenstrom-basierte Anwendungen. Diese dient hierbei als Front-End und ermöglicht somit die Integration der SRIO-Schnittstelle in das OCI eines FPGA-basierten SoC. Basierend auf den entwickelten Grundlagen für die Entwurfsautomatisierung auf Systemebene, wird ein ganzheitlicher, vollständig automatisierbarer Ansatz zur schnellen Prototyperstellung von IP-Cores für die Implementierung von medizinischen Bildverarbeitungsalgorithmen als Teil eines FPGA-basierten SoC vorgestellt. Der Ansatz besteht aus den folgenden drei Teilschritten:

  1. Mit Hilfe der vorgeschlagenen Bibliothek als Programmierabstraktion wird eine Verhaltensbeschreibung in einer höheren Programmiersprache erstellt. Diese kann zunächst als Software-Programm ausgeführt und hinsichtlich der Zielvorgaben bewertet und optimiert werden. Sobald die Verhaltensbeschreibung die Vorgabe erfüllt, wird mit Hilfe der Architektursynthese ein Hardware-Entwurf in Form eines IP-Cores generiert.
  2. Der generierte IP-Core wird in ein FPGA-basiertes SoC integriert und auf einer FPGA-Entwicklungsplattform die über PCIe mit einem Host- Computer verbunden ist implementiert. Als Teil eines Hardware/Software-Systems kann der generierte IP-Core mit Hilfe eines Software-Programms evaluiert und verifiziert werden.
  3. Abschließend erfolgt der Test der generierten Hardware-Komponente im Feld, zum Beispiel als Teil eine Produkts. Hierfür wird der IP-Core in ein FPGA-basiertes SoC integriert, das die Verbindung zum Zielsystem über eine geeignete Kommunikationsschnittstelle, zum Beispiel SRIO herstellt. Die in dieser Arbeit vorgestellten Ansätze für die domänenspezifische Architektur- und Schnittstellensynthese leisten einen wesentlichen Beitrag zur Entwurfsautomatisierung von FPGA-basierten Systemen und ermöglichen hierdurch die Erschließung der FPGA-Technologie für Software-EntwicklerInnen. Die vorgeschlagene Programmierabstraktion in Form einer Bibliothek erlaubt einen besonders intuitiven Entwurf von Verhaltensbeschreibungen für die Architektursynthese in der Programmiersprache C++. Dies ermöglicht (a) die Software-gestützte Lokalisierung und frühzeitige Behebung von Entwurfsfehlern, (b) eine schnelle Entwurfsraumexploration, als auch (c) eine gezielte Optimierung zur Einhaltung von Zielvorgaben und somit eine signifikante Verkürzung der Entwurfszeit. Die Beiträge im Bereich der Schnittstellensynthese erlauben die automatisierte Integration von generierten Hardware-Realisierungen in FPGA-basierte SoCs für (a) die rechnergestützte Bewertung und Verifikation der generierten IP-Cores als Teil eines Hardware/Software-Systems als auch (b) den Test der Hardware-Komponenten als Teil des Zielsystems, um auf Systemebene getroffene Entwurfsentscheidungen zu validieren. Die Beiträge dieser Arbeit bieten in diesem Sinne einen ganzheitlichen Ansatz für die schnelle Prototyperstellung wodurch von einem erheblichen Produktivitätsgewinn ausgegangen werden kann. Obwohl sich die Arbeit auf den Bereich der medizinischen Bildverarbeitung konzentriert, können die Beiträge jedoch auch auf viele weitere Anwendungsbereiche übertragen werden.
DOI
Faculties & Collections
Zugehörige ORCIDs