TU Darmstadt / ULB / TUprints

Optimization of the Memory Subsystem of a Coarse Grained Reconfigurable Hardware Accelerator

Jung, Lukas Johannes (2019)
Optimization of the Memory Subsystem of a Coarse Grained Reconfigurable Hardware Accelerator.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
Text
2019-05-13_Jung_Lukas_Johannes.pdf - Published Version
Copyright Information: In Copyright.

Download (6MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Optimization of the Memory Subsystem of a Coarse Grained Reconfigurable Hardware Accelerator
Language: English
Referees: Hochberger, Prof. Dr. Christian ; Göhringer, Prof. Dr. Diana
Date: 2019
Place of Publication: Darmstadt
Date of oral examination: 27 March 2019
Abstract:

Fast and energy efficient processing of data has always been a key requirement in processor design. The latest developments in technology emphasize these requirements even further. The widespread usage of mobile devices increases the demand of energy efficient solutions. Many new applications like advanced driver assistance systems focus more and more on machine learning algorithms and have to process large data sets in hard real time. Up to the 1990s the increase in processor performance was mainly achieved by new and better manufacturing technologies for processors. That way, processors could operate at higher clock frequencies, while the processor microarchitecture was mainly the same. At the beginning of the 21st century this development stopped. New manufacturing technologies made it possible to integrate more processor cores onto one chip, but almost no improvements were achieved anymore in terms of clock frequencies. This required new approaches in both processor microarchitecture and software design. Instead of improving the performance of a single processor, the current problem has to be divided into several subtasks that can be executed in parallel on different processing elements which speeds up the application.

One common approach is to use multi-core processors or GPUs (Graphic Processing Units) in which each processing element calculates one subtask of the problem. This approach requires new programming techniques and legacy software has to be reformulated. Another approach is the usage of hardware accelerators which are coupled to a general purpose processor. For each problem a dedicated circuit is designed which can solve the problem fast and efficiently. The actual computation is then executed on the accelerator and not on the general purpose processor. The disadvantage of this approach is that a new circuit has to be designed for each problem. This results in an increased design effort and typically the circuit can not be adapted once it is deployed.

This work covers reconfigurable hardware accelerators. They can be reconfigured during runtime so that the same hardware is used to accelerate different problems. During runtime, time consuming code fragments can be identified and the processor itself starts a process that creates a configuration for the hardware accelerator. This configuration can now be loaded and the code will then be executed on the accelerator faster and more efficient. A coarse grained reconfigurable architecture was chosen because creating a configuration for it is much less complex than creating a configuration for a fine grained reconfigurable architecture like an FPGA (Field Programmable Gate Array). Additionally, the smaller overhead for the reconfigurability results in higher clock frequencies. One advantage of this approach is that programmers don't need any knowledge about the underlying hardware, because the acceleration is done automatically during runtime. It is also possible to accelerate legacy code without user interaction (even when no source code is available anymore).

One challenge that is relevant for all approaches, is the efficient and fast data exchange between processing elements and main memory. Therefore, this work concentrates on the optimization of the memory interface between the coarse grained reconfigurable hardware accelerator and the main memory. To achieve this, a simulator for a Java processor coupled with a coarse grained reconfigurable hardware accelerator was developed during this work. Several strategies were developed to improve the performance of the memory interface. The solutions range from different hardware designs to software solutions that try to optimize the usage of the memory interface during the creation of the configuration of the accelerator. The simulator was used to search the design space for the best implementation. With this optimization of the memory interface a performance improvement of 22.6% was achieved.

Apart from that, a first prototype of this kind of accelerator was designed and implemented on an FPGA to show the correct functionality of the whole approach and the simulator.

Alternative Abstract:
Alternative AbstractLanguage

Schnelle und energieeffiziente Datenverarbeitung ist seit jeher eine wichtige Anforderung an Prozessorentwicklung. Aktuelle Entwicklungen in Bereichen wie zum Beispiel Bildverarbeitung verstärken diese Anforderungen. Die Nutzung von vielen mobilen Endgeräten steigert den Bedarf an energieeffizienten Lösungen. Viele Anwendungen wie zum Beispiel Fahrerassistenzsysteme setzen immer mehr auf Algorithmen aus dem Bereich Maschinelles Lernen. Hierbei müssen unter harten Echtzeitbedingungen viele Daten in kürzester Zeit verarbeiten werden. Bis zu den 1990er Jahren wurden Leistungssteigerungen in Prozessoren meist dadurch erreicht, dass neue und bessere Fertigungstechnologien verwendet wurden. Dadurch wurde es möglich, Prozessoren mit einer höheren Taktfrequenz zu betreiben, während die eigentliche Prozessorarchitektur weitestgehend unverändert blieb. Seit Beginn des einundzwanzigsten Jahrhunderts jedoch stagniert diese Entwicklung. Neuere Fertigungstechnologien ermöglichen es zwar mehr Prozessorkerne auf der gleichen Chipfläche zu fertigen, jedoch wurden kaum noch Steigerungen in der Taktfrequenz erreicht. Dies erforderte ein Umdenken in sowohl dem Entwurf von Prozessorarchitekturen als auch im Software-Entwurf. Anstatt die Leistung eines einzelnen Prozessors zu verbessern, muss nun ein zu berechnendes Problem so formuliert werden, dass es in kleinere Teile aufgeteilt wird welche auf mehreren Recheneinheiten parallel und dadurch schneller berechnet werden können.

Ein oft genutzter Ansatz ist der Einsatz von Mehrkernprozessoren oder GPUs (Graphic Processing Units), in dem jeder Prozessorkern einen Teil des Problems unabhängig von den restlichen Kernen berechnet. Dies erfordert jedoch neuartige Programmiertechniken und bestehende Software muss umformuliert werden. Ein anderer Ansatz sind Hardware-Beschleuniger, die mit einem Prozessor verbunden werden. Hier wird für ein bestimmtes Problem eine spezielle Schaltung entworfen, die dieses Problem effizient und schnell lösen kann. Die Berechnung dieses Problems findet dann nicht mehr auf dem Prozessor statt, sondern auf dem Hardware-Beschleuniger. Der Nachteil dieser Lösung ist jedoch, dass für jedes Problem eine eigene Schaltung in Hardware entwickelt werden muss. Dies bedeutet einen hohen Entwicklungsaufwand und die Schaltung kann im allgemeinen nicht im Nachhinein geändert werden.

Diese Arbeit beschäftigt sich mit der Nutzung von rekonfigurierbaren Hardware-Beschleunigern. Diese werden während der Laufzeit umkonfiguriert, um mehrere Probleme mithilfe der gleichen Hardware beschleunigen zu können. Wenn während der Laufzeit rechenintensive Software-Abschnitte erkannt werden, so startet der Prozessor selbstständig einen Prozess, der eine Konfiguration für den Hardware-Beschleuniger berechnet. Anschließend kann diese Konfiguration geladen werden und das Problem wird effizienter und schneller auf dem Beschleuniger ausgeführt. Es wurde eine grobkörnig rekonfigurierbare Architektur gewählt, da die Komplexität eine Konfiguration zu berechnen sehr viel geringer ist als in feinkörnig rekonfigurierbaren Architekturen wie zum Beispiel FPGAs (Field Programmable Gate Array). Außerdem sind durch den vergleichsweise geringeren Mehraufwand für die Rekonfigurierbarkeit höhere Taktfrequenzen möglich als bei FPGAs. Ein Vorteil dieses Verfahrens ist, dass ein Programmierer oder eine Programmiererin keinerlei Kenntnis über die Hardware besitzen muss, da die Beschleunigung automatisch während der Laufzeit geschieht. Außerdem können bereits vorhandene Programme (bei denen möglicherweise kein Programmcode mehr vorliegt) ohne weiteren Aufwand beschleunigt werden.

Ein Problem, das für alle Rechnerarchitekturen relevant ist, ist die effiziente und schnelle Datenübertragung zwischen Recheneinheit und Hauptspeicher. Diese Arbeit konzentriert sich daher auf die Optimierung der Speicheranbindung eines grobkörnig rekonfigurierbaren Hardware-Beschleunigers. Zu diesem Zweck wurde während dieser Arbeit ein Simulator für einen Java-Prozessor entworfen, in dem ein grobkörnig rekonfigurierbarer Hardware-Beschleuniger eingebunden ist. Es wurden mehrere Verfahren entwickelt, die die Speicheranbindung des Hardware-Beschleunigers verbessern. Dies umfasst sowohl Lösungen auf Hardware-Ebene als auch Lösungen auf Software-Ebene, die bei der Generierung der Konfiguration für den Beschleuniger versuchen die Nutzung der Speicherschnittelle zu optimieren. Der entwickelte Simulator wurde genutzt, um den Entwurfsraum nach der besten Implementierung abzusuchen. Durch diese Optimierung des Speichersystems wurde eine Leistungssteigerung von 22,6% erreicht.

Außerdem wurde während dieser Arbeit ein erster Prototyp eines solchen Beschleunigers in Hardware entworfen und auf einem FPGA implementiert, um die korrekte Funktionalität des Verfahrens und des Simulators zu zeigen.

German
URN: urn:nbn:de:tuda-tuprints-86743
Classification DDC: 600 Technology, medicine, applied sciences > 620 Engineering and machine engineering
Divisions: 18 Department of Electrical Engineering and Information Technology > Institute of Computer Engineering > Computer Systems Group
Date Deposited: 31 May 2019 14:06
Last Modified: 09 Jul 2020 02:35
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/8674
PPN: 449160149
Export:
Actions (login required)
View Item View Item