RISC-V QEMU - Implementierung

Überblick

Die Fachgruppe Schaltungstechnik war 2017 initial in Kooperation mit SiFive und TI der Co-Maintainer der ersten RISC-V-Implementierung innerhalb des QEMU CPU-Emulators. QEMU ist ein quelloffener CPU-Emulator, der eine Vielzahl von Befehlssatzarchitekturen zur Ausführung von kompilierter Software unterstützt. Die Fachgruppe kann auf umfangreiche Erfahrungen auf diesem Gebiet zurückgreifen, da sie in den letzten Jahren als registrierter Maintainer bereits den kompletten TriCore™-Befehlssatz in Kooperation mit der Infineon Technologies AG entwickelte und veröffentlichte. Die momentanen Aktivitäten konzentrieren sich auf die Implementierung des RISC-V-Befehlssatzes in verschiedenen Varianten in QEMU zur Erstellung von virtuellen Prototypen und die Entwicklung von Chips für RISC-V-basierte IoT-Knoten (IoT – Internet of Things), was durch das Bundesministerium für Bildung und Forschung (BMBF) durch Projekte gefördert wird: COMPACT und SAFE4I.

Die Fachgruppe entwickelte mehrere QEMU-basierte konfigurierbare Analyse-Plattformen für RISC-V-basierte IoT-Devices. Die Analyse umfasst funktionale und nichtfunktionale Eigenschaften der Softwarebinärinstruktionen für die RISC-V ISA. Die Konfigurationsmöglichkeiten basierten auf dem Prinzip ISA-Spezifikation durch sog. Decode-Trees, die für die RISC-V-Architektur innerhalb des QEMU-Open-Source-Projekts entwickelt, implementiert und veröffentlicht wurden. In diesem Rahmen wurde die Decodierung der vollständigen RISC-V-ISA innerhalb von QEMU auf Decode-Trees umgestellt. Die implementierten Erweiterungen und Umstellungen wurden Anfang 2019 vollständig in den QEMU-Open-Source-Upstream übertragen und sind seit April 2019 im QEMU-Release 4.0.0 enthalten. 

Zur dynamischen Analyse kompilierter RISC-V Software wurde QTA (QEMU Timing Analyzer) https://github.com/hni-sct/qemu-qta auf Basis der neu verfügbaren TCG-Plugin-API-Schnittstelle zur Werkzeugintegration entwickelt und implementiert. Diese Schnittstelle garantiert allen QEMU-Erweiterungen eine Kompatibilität mit zukünftigen QEMU-Versionen, ohne dass die Erweiterung kontinuierlich an die jeweilig neue QEMU-Version neu angepasst werden muss. Die TCG-Plugin-API-Schnittstelle wurde seit ihrer Entwicklung innerhalb des QEMU-Projektes kontinuierlich verifiziert, bis sie Mitte 2019 einen stabilen Zustand erreichte, so dass absehbar war, dass sie bald mit QEMU 4.2 offiziell zur Verfügung stehen würde. QTA wurde dann unter Verwendung dieser Schnittstelle 2020 von der UPB implementiert und Anfang 2021 frei veröffentlicht. Der Quellcode ist seit Januar 2021 unter github.com/hni-sct/qta im Rahmen einer MIT-Lizenz frei verfügbar.  QTA führt eine zeitannotierte Ausführung kompilierter Software für alle von QEMU unterstützten Befehlssatzarchitekturen durch. Zur Zeitannotation wurde eine Schnittstelle für ait (Absint) als Analyse-Front-End implementiert und für ARM- und RISC-V-kompilierte SW getestet. 

Website SAFE4I: https://www.edacentrum.de/safe4i/

Website COMPACT: https://www.edacentrum.de/compact/

Informationen zu SAFE4I auf der Website der Fachgruppe Schaltungstechnik: https://www.hni.uni-paderborn.de/sct/projekte/safe4i/

Informationen zu COMPACT auf der Website der Fachgruppe Schaltungstechnik: https://www.hni.uni-paderborn.de/sct/projekte/compact/

Detailinformationen

Projektleitung

contact-box image

apl. Prof. Dr. Wolfgang Müller

Schaltungstechnik (SCT) / Heinz Nixdorf Institut

Zur Person
contact-box image

Prof. Dr.-Ing. J. Christoph Scheytt

Schaltungstechnik (SCT) / Heinz Nixdorf Institut

Zur Person

Kooperationspartner

Infineon Technologies AG (IFX)

Kooperationspartner

Zur Website

Robert Bosch GmbH (RB)

Kooperationspartner

Zur Website

Kontakt

Wenn Sie Fragen zu diesem Projekt haben, kontaktieren Sie uns!

apl. Prof. Dr. Wolfgang Müller

Schaltungstechnik (SCT) / Heinz Nixdorf Institut

Apl. Professor

contact-box image