The Vienna Architecture Description Language

Simon Himmelbauer,Christoph Hochrainer,Benedikt Huber,Niklas Mischkulnig,Philipp Paulweber,Tobias Schwarzinger,Andreas Krall
2024-02-14
Abstract:The Vienna Architecture Description Language (VADL) is a powerful processor description language (PDL) that enables the concise formal specification of processor architectures. By utilizing a single VADL processor specification, the VADL system exhibits the capability to automatically generate a range of artifacts necessary for rapid design space exploration. These include assemblers, compilers, linkers, functional instruction set simulators, cycle-accurate instruction set simulators, synthesizable specifications in a hardware description language, as well as test cases and documentation. One distinctive feature of VADL lies in its separation of the instruction set architecture (ISA) specification and the microarchitecture (MiA) specification. This segregation allows users the flexibility to combine various ISAs with different MiAs, providing a versatile approach to processor design. In contrast to existing PDLs, VADL's MiA specification operates at a higher level of abstraction, enhancing the clarity and simplicity of the design process. Notably, with a single ISA specification, VADL streamlines compiler generation and maintenance by eliminating the need for intricate compiler-specific knowledge. This article introduces VADL, describes the generator techniques in detail and demonstrates the power of the language and the performance of the generators in an empirical evaluation. The evaluation shows the expressiveness and conciseness of VADL and the efficiency of the generated artifacts.
Programming Languages
What problem does this paper attempt to address?
The problem that this paper attempts to solve is the complexity and error - proneness in existing Processor Description Languages (PDL) and compiler backend development. Specifically, the paper points out: 1. **Complexity of Compiler Backend Development**: Developing backends for compilers such as LLVM, GCC or Just - In - Time (JIT) compilers is a cumbersome and error - prone process. The specifications of these compilers are very large, and it is difficult for even experienced compiler developers to understand. 2. **Lack of Automated Generation Tools**: Currently, there is no PDL or compiler backend specification language that can automatically generate multiple necessary toolchain components, such as assemblers, debuggers, disassemblers, Instruction Set Simulators (ISS), linkers, etc., from a single concise specification. 3. **Insufficient Abstraction Level in Computer Architecture Research and Teaching**: Existing PDLs or Hardware Description Languages (HDL) have a relatively low abstraction level and cannot meet the needs of higher - level research and teaching. For example, the automatic generation functions of hardware, Cycle - Accurate Simulators (CAS) and compiler instruction schedulers have not been realized. To address these problems, the paper proposes the Vienna Architecture Description Language (VADL), aiming to improve processor design and toolchain generation in the following ways: - **Multi - tool Generation from a Single Specification**: Automatically generate multiple tools such as assemblers, compilers, linkers, functional ISS, cycle - accurate simulators, synthesizable HDL specifications, test cases and documentation from a concise VADL processor specification. - **Separation of ISA and MiA**: Strictly distinguish between the Instruction Set Architecture (ISA) and Micro - architecture (MiA) specifications, allowing users to flexibly combine different ISAs and MiAs, providing more flexible processor design solutions. - **High - Abstraction - Level MiA Specification**: The MiA specification of VADL works at a higher abstraction level, improving the clarity and simplicity of the design process. - **Simplify Compiler Generation and Maintenance**: Through a single ISA specification, eliminate the need for complex compiler - specific knowledge and simplify compiler generation and maintenance. In summary, the goal of this paper is to provide a powerful processor description language through VADL to simplify processor design and toolchain generation, improve design efficiency and reduce errors.