Ariel Multi-Core Processor Emulation Element Library

Ariel is a processor core emulation component which dynamically streams instructions from a running application (via a UNIX-pipe based connection to a PIN-tool based profiling session). As instructions arrive at the processor core they generate memory read/write requests which are then forwarded to a memInterface-based memory hierarchy (e.g. memHierarchy). The design of Ariel allows for multiple memory pools to be present in the system including pools with differing memory bandwidths or performance characteristics (e.g. a DRAM pool and an Flash-memory pool).

The Ariel application connector currently runs in one of two modes:

Applications executed using Ariel can be compiled with any X86 or X86-64 compatible compiler including GNU, Intel, PGI, Oracle or LLVM with routine testing being applied to the GNU and LLVM toolchains. OpenMP runtimes from GNU and Intel have both previously been tested. Users can also build their application with any specialized optimization or instruction set flags (e.g. SSE, AVX, AVX-2) as required, the front ends will correctly interpret the memory requests and encode these for the emulation core.

Sample Input Configurations

A sample input configuration is provided at Ariel Simple Front End STREAM example. This configuration runs a small OpenMP-based memory bandwidth (STREAM) application trapping memory requests and forwarding these for simulation. Only a single level of memory is supported as the example uses the simple front end. At this time the multi-level memory front end is being developed for publication and will be made available after this work is accepted.