Code Generation Techniques For Emerging Capability Architectures

171410-Thumbnail Image.png
Description
Memory safety and security issues continue to plague modern systems and are rapidly becoming a top priority. Capability architectures are a proposed solution that solve the problem at a fundamental hardware level, with several commercially viable options under active development.

Memory safety and security issues continue to plague modern systems and are rapidly becoming a top priority. Capability architectures are a proposed solution that solve the problem at a fundamental hardware level, with several commercially viable options under active development. These new and evolving designs place higher demand upon the software tools needed to develop software to ensure correct execution. Capabilities introduce ideas that challenge typical architecture assumptions about the representation of data and its location in memory. This calls for a new core system software ecosystem. A fundamental component of any software ecosystem is a compiler. Without a compiler, large critical components of the ecosystem must be written in assembly language; a tedious and possibly error-prone task. A compiler for a capability architecture that emphasizes memory security must above all else ensure functional and correct code generation, raw performance and power efficiency are no longer the chief concerns. Compilers for these architectures have been developed, but as capability architectures mature in complexity new compilation support is required. A set of techniques that help solve the compilation challenges for a capability architecture are presented in this work. These capability-aware compiler ideas are presented in their generalized forms to enable their adoption in other architectures and future extensions. Some of the ideas presented come out of work on a compiler for a new capability architecture, Zeno. The Zeno compiler utilizes the extensible RISC-V instruction set and adds a set of global memory extensions, xBGAS (Extended Base Global Address Space), which is used to provide memory security. The Zeno compiler is described in detail as an implementation of the generalized capability-aware compiler. Static analysis is used to evaluate the generated assembly code produced by the compiler. Rather than focusing on the runtime performance of code generated by the Zeno compiler, this work evaluates the compiler based on a static analysis of the generated source code. We find the code produced by the Zeno compiler sufficient to enable further testing of the Zeno architecture and drive its development. The generated code is sufficient to enable further testing of the Zeno architecture and drive its development.
Date Created
2022
Agent

Teaching Optimization Through Low-Level Source Code For The x86 Instruction Set

163974-Thumbnail Image.png
Description
Low-level optimization is the process of handwriting key parts of applications in assembly code that is better than what can be generated from a higher-level language. In performance-intensive applications, this is key to ensuring efficient code. This is generally something

Low-level optimization is the process of handwriting key parts of applications in assembly code that is better than what can be generated from a higher-level language. In performance-intensive applications, this is key to ensuring efficient code. This is generally something that is taught in on the job training, but knowledge of it improves college student’s skill sets and makes them more desirable employees I have created material for a course teaching this low-level optimization with assembly code. I specifically focus on the x86 architecture, as this is one of the most prolific computer architectures. The course contains a series of lecture videos, live coding videos, and structured programming assignments to support the learning objectives. This material is presented in an entirely autonomous way, which serves as remote learning material and can be easily added as supplemental material to an existing course.
Date Created
2022-05
Agent