title: Compiler Backend Generation using the VADL Processor Description Language
Creators: name: Graf, Alexander
Publisher: name: TU Wien
Year: 2021
Subjects: subject: compiler generation
subject: processor description language

description: Die Nutzung von digitalen Geräten hat sich in den letzten Jahrzehnten drastisch erhöht. Eine Vielzahl von Alltagsgegenständen, sei es nun ein Smartphone oder ein Auto, haben einen Prozessor verbaut. Zusätzlich sind Konsumenten gewohnt, dass diese Geräte immer schneller und besser werden. Dies hat zur Folge, dass Hardwareproduzenten immer kleinere und leistungsstärkere Prozessoren auf den Markt bringen müssen. Infolgedessen haben sich sogenannte Application Specific Instruction Set Processors (ASIPs) etabliert, da diese Art von Prozessoren mit den Leistungsansprüchen und dem erhöhten Entwicklungs- aufwand gut mithalten können. Jedoch werden dafür ein großes Maß an Fachwissen und zusätzliche Werkzeuge für das Evaluieren des Prozessordesigns benötigt. Um die Markteinführung und gleichzeitig den sich wiederholenden Entwicklungsaufwand zu reduzieren, werden Processor Description Languages (PDLs) verwendet. Diese Beschreibungssprachen erlauben es dem Benutzer, einen Prozessor auf einer höheren Abstraktionsebene zu modellieren und gleichzeitig die notwendigen Werkzeuge zu erzeugen.Diese Arbeit stellt die Beschreibungssprache Vienna Architecture Description Language (VADL) vor und beschreibt, wie diese dazu verwendet werden kann, um ein LLVM Compiler Backend zu generieren. Nach der Verarbeitung und Analyse einer VADLSpezifikation werden Instruction Selection Patterns und weitere LLVM Artefakte erzeugt.Der Großteil dieser Arbeit beschäftigt sich mit den Methoden dieses Compilergenerators und den Sprachelementen, die für die Konfiguration eines Compilers notwendig sind.Die Arbeit wurde anhand einer VADL Spezifikation für den RV32IM Teil des RISCV Befehlssatz evaluiert. Der generierte Compiler wurde mit dem von LLVM zur Verfügung gestellten Compiler verglichen. Die Programme haben dabei im Schnitt um rund 12,11% schlechter abgeschnitten und 16,51% mehr Assembler-Befehle erzeugt. Die Ergebnisse sind dennoch beachtlich, da sowohl VADL als auch der Compilergenerator noch in den Kinderschuhen stecken und keine wesentlichen Optimierungen implementiert wurden. Dies lässt darauf schließen, dass in Zukunft deutlich bessere Ergebnisse zu erwarten sind.
description: The use of digital devices has dramatically increased in the last decades. Many day-to-day devices, such as smartphones or cars, embed some form of a processor. In addition, consumers expect their devices to become smaller and faster with each generation. This enforces hardware producers to create smaller and better performing processors in a short period of time. Application Specific Instruction Set Processors (ASIPs) have shown to meet the performance demands and increased development output, but require additional application knowledge and tooling for evaluating the processor design. To minimize time-to-market and repetitive work, Processor Description Languages (PDLs) are used. Instead of designing the processor and all its tools individually, such languages provide a higher abstraction level for designing embedded processors and generators that automatically produce all necessary tools.This work introduces the Vienna Architecture Description Language (VADL), a mixed PDL, and discusses how it is used to automatically generate a LLVM compiler backend. After extracting and analyzing the processor information from the VADL specification, instruction selection patterns and other LLVM specifications are generated. Most of this thesis focuses on the generator methodologies and language elements required for this retargeting process.The approach is evaluated by specifying the RISCV subset RV32IM in VADL and comparing the automatically generated compiler to the open source LLVM compiler. On average, programs perform only 12.11% worse and produce 16.51% more instructions for the assembly output, which is remarkable considering that the generator does little to no target-specific optimizations. Furthermore, both VADL and the compiler generator are still in an early stage of development. Much better results can be expected in the future.