School of Informatics - University of Edinburgh Institute for Computing Systems Architecture - School of Informatics
Institute for Computing
Systems Architecture

A LLVM Backend for a Just-In-Time Compilation Engine of a state-of-the-art Instruction Set SimulatorNew

Instruction Set Simulators as well as Virtual Machines implement JIT compilation techniques for improving the runtime performance of computer programs. The idea is to convert code compiled for some different architecture into native machine code at runtime to increase simulation speed. As part of the PASTA project a state-of-the-art ISS for the ARC© instruction set architecture implementing JIT compilation techniques has already been developed. The aim of this project is to extend the current JIT compilation engine with a LLVM (Low Level Virtual Machine) backend to decrease JIT compilation time whilst generating fast code.


The full specification is available at: Project Specification

Supervisors: Björn Franke, Nigel Topham

Concurrent, Adaptive, Just-In-Time and Ahead-Of-Time Compilation in the context of a state-of-the-art Instruction Set SimulatorNew

Instruction Set Simulators as well as Virtual Machines implement JIT compilation techniques for improving the runtime performance of computer programs. The idea is to convert code compiled for some different architecture into native machine code at runtime to increase simulation speed. As part of the PASTA project a state-of-the-art ISS for the ARC© instruction set architecture implementing JIT compilation techniques has already been developed. The aim of this project is to extend the current JIT compilation engine with a concurrent and adaptive JIT compilation engine in order to better utilise todays multi-core architectures. Furthermore the new JIT compilation engine should be extended to support AOT compilation to enable even faster simulation speeds.

The full specification is available at: Project Specification

Supervisor: Björn Franke

Customisation of an extensible, ultra-low power embedded RISC processor

Extensible processors are application-specific instruction set processors (ASIPs) that allow for customisation through user-defined instruction set extensions (ISE) implemented in an extended micro architecture.
The EnCore processor is developed entirely within the Institute for Computer Systems Architecture (ICSA) at the University of Edinburgh. The core is written in Verilog, and currently exists as two main variants; five and seven stage pipeline depth versions, each having varying cache configurations. Both feature a reasonably complete implementation of the ARCompact instruction set (as defined by the commercial ARC700 core), to the point that the arc-elf32 version of GCC can be used for compilation of C code for the processor. The EnCore does not currently feature an MMU, but this is in development and is likely to be incorporated into a later version of the EnCore.
The EnCore has been tested with various configurations in FPGA fabric, and has through this method been verified as correctly executing compiled C code obtained through the GCC arc-elf32 compiler. The five stage core closes timing at 25MHz using a Spartan-3 1600E FPGA as the implementation fabric, utilising approximately 50% of the available resources, and is expected to run two or three times faster using a newer FPGA family. The seven stage pipeline variant is expected to tolerate a roughly 40% higher clock frequency than this.
The core can be extended using modules written in Verilog derived from the ISEs. While it is expected that these will increase the logic in the core, in some cases by a large factor, we are not expecting it to impact the maximum operating frequency to a large degree. ISEs incorporated do not affect the critical path of the core itself, and are timed to fit with the clock frequency of the main core pipeline.
The student will go through the full processor customisation flow for a compute-intensive numerical application and evaluate the performance improvement over the existing processor/application baseline implementation.

Supervisors: Björn Franke, Nigel Topham

Energy-efficient Data Caches for Embedded Microprocessors

Cache memories account for over half the total power consumption of a typical embedded microprocessor. Hence, even relatively simple energy saving schemes can have a big impact on overall energy efficiency. In an M-way set-associative data cache there are M tag memories and M data memories. A naive data cache implementation will access all 2M memory devices simultaneously, every time a Load or Store instruction is executed. To counter this problem, 'way prediction' schemes have been devised. These attempt to predict the 'way' in which the required data resides (assuming it is in cache). If the prediction mechanism is correct, approximately 1-(1/(2M)) of the memory-related energy is saved. If the prediction is incorrect, the energy increases slightly and the program may see a performance penalty. The aim of this project is to evaluate the energy saving potential of one or more 'conservative' methods that either yield a perfect prediction or no prediction at all. Such schemes already exist. This will require the construction of a trace-driven simulator through which the prediction accuracy of various schemes can be determined. As an extension, the best-performing scheme could be implemented in an existing synthesised embedded microprocessor.

Supervisors: Nigel Topham,Aris Efthymiou

Optimising Branch Predictors for Low-power Embedded Processors

A high-speed simulator is available in Informatics for research purposes. One interesting research question that could be addressed by this simulator, is how to trade Branch Predictor accuracy for energy consumption in embedded systems. This project will use an exisisting simulation framework that is able to simulate Linux running at around 200 MIPS. The project will deploy a range of Branch Predictors and measure their effective prediction accuracy when running realistic workloads. The energy consumption of each predictor can be estimated using simple linear models, and from this it will be possible to gain insight into the most effective predictors in such embedded systems. In particular, the interference between operating system and application will be measurable in this very realistic simulation.

Supervisors: Nigel Topham, Marcelo Cintra