FG Technische Informatik
Refine
Document Type
- Doctoral thesis (2)
Has Fulltext
- yes (2)
Is part of the Bibliography
- no (2)
Language
- German (2)
Keywords
- SystemC (2) (remove)
Institute
Sowohl in Anlagen mit Hochgeschwindigkeitsrechensystemen als auch in der Industrie in so genannten smarten Problemlösungen spielen Rechenbeschleuniger eine immer bedeutendere Rolle. Diese wissenschaftliche Arbeit befasst mich mit der Untersuchung anwendungsorientierter FPGA-Architekturen, um die Lücke zwischen Performanz und Energieverbrauch zu verkleinern oder gar zu schließen. Sie untersucht zunächst die optimale Granularität einer Architektur für einen Algorithmus. Anhand der Auswertung einer umfangreichen Versuchsreihe mit ca. 650 Simulationen und etwa 200 verschiedenen Architekturen wird versucht einen FPGA mit optimalen Eigenschaften für eine Beschleunigerhardware abzuleiten. Für die Untersuchung wird das Evaluationswerkzeugs Verilog-To-Routing genutzt, dessen Steuerung nebst dem Parsen der Ergebnisse mittels Python automatisiert wird. Basierend auf den Ergebnissen dieser Granularitätsuntersuchung wird die Einführung einer parameterisierbaren CGRA-Architektur beschrieben, welche als Overlay auf einer beliebigen FPGA-Architektur aufgebracht werden kann. Die ersten Ergebnisse einer Evaluation mit einem Faltungsalgorithmus weisen auf Probleme beim Datentransfer zwischen einem Prozessorsystem und dem VCGRA als Beschleuniger hin, weshalb in zusätzliche Module für eine Entspannung dieses Flaschenhalses investiert wird. Aus Überlegungen entstehen so genannte Pre-Fetcher und Datenpuffer, eine Memory Management Unit und eine zentrale Steuerstelle, die Central Control Unit, welche das VCGRA zu einer Gesamtarchitektur ergänzen. Die Entwicklungsschritte und Evaluation dieser zusätzlichen Module erfolgt nun in SystemC, statt in VHDL, um den Zyklus von Design und Evaluation zu verkürzen. Im Zusammenhang mit der Central Control Unit wird ein Maschinencode im Binärformat und ein passender Assemblerbefehlssatz entworfen, um das VCGRA autark zu steuern. Alle Werkzeuge und die Architektur stehen unter Open-Source- Lizenzen der wissenschaftlichen Community zur Verfügung.
Elektronische Systeme sind in vielen Bereichen des täglichen Lebens zur Selbstverständlichkeit geworden. Dabei werden diese zunehmend komplexer und leistungsfähiger. Für den Entwurf entstehen dadurch Herausforderungen, die z. B. zunehmend mit Hilfe von SystemC gelöst werden. SystemC, eine C++- Klassenbibliothek, erlaubt die Modellierung von Hardwarekomponenten in einer Programmiersprache, wie sie zuvor nur mittels spezieller Hardwarebeschreibungssprachen möglich war. Die Simulation des Systems im Zusammenhang mit Fehlererscheinungen ist ein wichtiger Schritt für den Zuverlässigkeitsnachweis. Für die Simulation von Fehlern ergeben sich dabei im wesentlichen zwei Einsatzbereiche. Zum einen ist es die Fehlersimulation, welche Testmuster hinsichtlich ihrer Effektivität für den Produktionstest beurteilt. Zum anderen dient sie, häufig als simulierte Fehlerinjektion bezeichnet, dem Nachweis der Fehlertoleranz oder des Systemverhaltens im Betrieb. In dieser Arbeit werden erstmals verschiedene Aspekte und Strategien zur Simulation von Fehlern in digitalen Schaltungen als SystemC-Beschreibungen methodisch untersucht. Vorteile mit der Verwendung von SystemC bestehen z. B. in der Verwendung eines einheitlichen Beschreibungsmittels in einem durchgängigen Ablauf und in der Möglichkeit einer schnellen Ausführung. Voraussetzung für die Simulation von Hardware ist eine entsprechende Modellierungsmöglichkeit. Neben der Betrachtung der Register-Transfer- und Gatterebene wird eine neue Modellierung auf der Schalterebene präsentiert. Der Vorteil liegt hierbei in einer höheren Auflösung bei einer akzeptablen Geschwindigkeitseinbuße, wie sie insbesondere bei der Simulation von Fehlern sinnvoll ist. Bei der Modellierung der Fehler wurden neben dem klassischen Haftfehlermodell weitere Modelle kreiert, die Defekte und Störungen realitätsnäher abbilden. Die Injektion der Fehler in die Hardware-Beschreibung erfolgt mit Hilfe verschiedener Strategien. Neben der Umsetzung von Methoden, wie sie aus anderen Hardwarebeschreibungssprachen bekannt sind, werden weitere Wege in SystemC gezeigt. Hierbei nutzt man spezielle Eigenschaften der Sprache C++ und des SystemC-Kernels. Ergebnis dieser Techniken ist eine Modifikation der SystemC-Bibliothek, die zu einer sehr effizienten Fehlerinjektion führt. Bei der Einführung neuer Entwurfswerkzeuge entsteht oft das Problem der Portierung des bestehenden Know-hows. Eine Alternative kann die Kopplung von bestehenden und neuen Simulationsprogrammen sein. Probleme solcher gekoppelten Simulationen liegen z. B. im zusätzlichen Kommunikationsaufwand und der Synchronisation, welche die Ausführungszeit oft deutlich erhöhen. Die hier präsentierte Mixed-Language-Co-Simulation in Form einer Thread-Implementierung und einer weiteren Modifikation der SystemC-Bibliothek erweist sich aber als sehr effizient im Vergleich zu anderen Co-Simulationen. Eine wesentliche Herausforderung für Simulationsaufgaben besteht in ihren Ausführungen in einer akzeptablen Zeit. Es werden verschiedene Implementierungen der beschleunigten Simulation präsentiert. Dabei kommen unterschiedliche Ebenen der Parallelisierung zur Verwendung und zur Untersuchung in Bezug auf ihre Performance. Eine Kombination verschiedener Methoden führt zu einer zusätzlichen Verbesserung. Mit dieser Arbeit wird gezeigt, dass die Simulation von Fehlern in Hardware mit SystemC praktikabel und sinnvoll ist. Anhand von Simulationen und Bewertungen an Beispielschaltungen wird dies unterstrichen.