/Archimulator

A multicore architectural simulator written in Java and running on Linux/Unix.

Primary LanguageJavaOtherNOASSERTION

Archimulator README

This README briefly describes what Archimulator is and how to setup & run Archimulator.

License Information

Copyright (c) 2010-2016 by Min Cai (min.cai.china@gmail.com)

This program is free software, licensed under the MIT license. Please, read the license file "COPYING" for further information.

Acknowledgements

YourKit Java Profiler

https://www.yourkit.com/

Archimulator is profiled using the YourKit Java Profiler.

YourKit supports open source projects with its full-featured Java Profiler.

YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

Archimulator in a Glance

Archimulator is an easy-to-use, feature-rich, and extensible CMP architectural simulator powered by Java on 32/64 bit Linux/Unix..

Web Site

Please obtain the latest Archimulator code from Archimulator on Github: http://github.com/mcai/Archimulator/.

Key Features

  • Archimulator is written in 100% Java with the aid of JNA (Java Native Access) for native POSIX syscall implementations, which assures its portability and usability across many Linux machine configurations.

  • Archimulator facilitates interface-based hierarchical object orientation to improve code readability and extensibility.

  • Archimulator provides functional architectural simulation of:

    • Program loading for statically-linked MIPS32 ELF executables (both Little Endian and Big Endian are supported);
    • Functional execution of common integer and floating-point instructions of MIPS32 ISA;
    • Emulation of common POSIX system calls;
    • Execution of Pthreads based multithreaded programs.
  • Archimulator provides cycle-accurate microarchitectural simulation of:

    • Separate pipeline structures such as the reorder buffer, separate integer and floating point physical register files;
    • Explicit register renaming based on the merged architectural and rename register file model;
    • Single-threaded superscalar out-of-order execution, multithreaded SMT and CMP execution model;
    • Multi-level inclusive cache hierarchy with the directory-based MESI coherence protocol;
    • Simple cycle-accurate DRAM controller model;
    • Various kinds of static and dynamic branch predictors, checkpointing-based pipeline recovery on branch misprediction.
  • Archimulator supports the following unclassified simulation features:

    • Support measurement of instructions, pipeline structures and the memory hierarchy;
    • Support generation of instruction traces;
    • Support both execution-driven and trace-driven memory subsystem simulation;
    • Support complex simulation strategies, e.g., cycle count based, instruction count based, and hotspot oriented simulation;
    • Support seamless switching between functional simulation and performance simulation mode;
    • Support the helper thread based data prefetching scheme: classification of good, bad and ugly prefetch requests.
  • Archimulator provides the following common infrastructure:

    • Scheduling and dispatching framework for modeling synchronous (cycle accurate) and asynchronous activities;
    • Database/ORM supported configuration and statistics reporting of the simulated architectures, workloads and simulations;
    • An easy-to-use logging mechanism.
  • Archimulator currently supports correct execution of all the Olden benchmark suite except incorrect output from "health", plus some of CPU2006 benchmarks. Other benchmarks are being tested.

System Requirements

Archimulator has been tested on 64 bit Ubuntu Linux 12.04 on an Intel Core i7 machine with 32 GB memory.

For developing and running Archimulator, make sure that:

  1. You have Ubuntu Linux 12.04 or higher (or other mainstream Linux distros);

  2. To compile and run Java programs, the following software must be installed:

    • Open JDK 8.0 or higher;
    • Apache Maven 3.0.4 or higher.

Quick Start

  1. For Debian/Ubuntu based Linux distros (other distros can be similarly prepared):

    • sudo apt-get install build-essential gcc-multilib git-core
  2. git clone git://github.com/mcai/Archimulator.git; cd Archimulator; mvn clean install

  3. chmod +x ./archimulator.sh;./archimulator.sh

Customizing Archimulator for Your Needs

  • Archimulator has shipped a few benchmark binaries under the directory: benchmarks/ for your convenience. So if you use Archimulator for testing purposes only, there is no need to compile benchmarks for Archimulator by yourself.

  • As is always true for open source software, the existing Archimulator code are good examples for demonstrating its usage and power.

Contact

Please report bugs and send suggestions to:

Min Cai (min.cai.china@gmail.com)

College of Computer Science, Beijing University of Technology, Beijing, China