Schützenhöfer, H. (2020). Cycle-Accurate simulator generator for the VADL processor description language [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2021.78460
E194 - Institut für Information Systems Engineering
-
Date (published):
2020
-
Number of Pages:
102
-
Keywords:
ISS; CAS; Generator; Simulator; VADL; RISC-V
en
Abstract:
Ein Simulator ist eine Software, welche die Ausführung eines Programms, dass für eine unterschiedliche Plattform oder Architektur erstellt wurde, nachahmen kann. Ein Simulator kann also beispielsweise ein RISC-V Programm auf einem Linux Host ausführen und ist damit gerade während der Entwicklung eines Mikroprozessors, bevor die Hardware noch verfügbar wird, ein besonders nützliches Tool. Ein Simulator kann nun entweder per Hand geschrieben oder automatisch aus einer abstrakten Beschreibung des Prozessor-Modells durch einen Simulator-Generator erzeugt werden. Ein solches abstraktes Modell eines Prozessors kann in einer Prozessorbeschreibungssprache (PDL) beschrieben werden, welche typischerweise die Spezifikation der Instruction Set Architecture (ISA), der Application Binary Interface (ABI) sowie der Mikroarchtektur (MIA) beinhaltet. Ein Simulator der nur die Auswirkungen von ausgeführten Instruktionen reproduziert, wird üblicherweise als Funktionssimulator oder Instruction Set Simulator (ISS) bezeichnet. Ein Cycle-Accurate Simulator (CAS) kann auch die Anzahl der ausgeführten Prozessorzyklen ermitteln, wozu üblicherweise auch das Pipelinemodell simuliert werden muss.Das Ziel dieser Arbeit lag darin einen ISS und CAS Generator für die neu geschaffene Vienna Architecture Description Language (VADL) bereitzustellen. Ein flexibles Framework zur Codeerzeugung wurde in Xtend zu diesem Zweck erstellt, welches einen C++ Simulator generieren kann und die Basis für beide Simulator-Generator Implementierungen bildet. Eine VADL Spezifikation für RISC-V wurde für die Evaluierung verwendet, welche die grundlegenden Integer Funktionen (I), Multiplikation und Division (M), Kontroll- und Statusregister (Zicsr) und komprimierte Instruktionen (C) in 32 und 64 Bit unterstützt hat. Sechs ISS Varianten und eine weitere für den CAS mit einer 5-stage Inorder-Pipeline wurden von dieser RISC-V Spezifikation abgeleitet und für Auswertungen und Tests verwendet. Für diese Simulator Varianten wurden jeweils mehre Benchmarks, wie etwa MiBench-Automotive, MiBench-Network and Dhrystone durchgeführt und deren Ergebnisse einer empirischen Analyse unterzogen und mit demhandgeschriebenen SWERV-ISS verglichen.
de
A simulator is a software that can mimic the execution of a program, which has been created for a different platform or architecture. While a simulator can be used for example to run a RISC-V program on a Linux host machine, it is an especially useful tool during the development of a micro processor before the hardware is available. A simulator can either be implemented manually or automatically created from an abstract processor model by a simulator generator. An abstract model of a processor can be described by a Processor Description Language (PDL), which typically includes a specification of the Instruction Set Architecture (ISA), Application Binary Interface (ABI) and also the Micro Architecture (MiA). When a simulator only reproduces the effects of the simulated instructions it is commonly called a functional simulator or Instruction Set Simulator (ISS). A Cycle-Accurate Simulator (CAS) can also provide the number of executed cycles, which typically requires the simulation of the pipeline model. The aim of this work was to provide an ISS and CAS generator for the newly created Vienna Architecture Description Language (VADL). A flexible code generation framework has been created in Xtend for this purpose, which can emit a C++ simulator and builds the foundation for both simulator generator implementations. A VADL specification for RISC-V has been used for evaluation, which supported the base integer function set (I), multiplication and division (M), control and status registers (Zicsr) and compressed instructions (C) in 32 and 64 bits. Six ISS variants and one for CAS with a 5-stage inorder pipeline have been derived from this RISC-V specification and used for evaluation. A variety of benchmarks has been conducted for these generated simulator variants, including MiBench-Automotive, MiBench-Network and Dhrystone and the presented in an empirical comparison against the hand written SWERV-ISS.