A detailed michroarchitectural x86 simulator
C++ Python Other
Switch branches/tags
Nothing to show
Latest commit 9673bbd Jul 19, 2016 @s-kanev s-kanev Fixed a couple of vulnerabilities in gzopen().
A buffer overrun and not escaping the fname parameter.
While I'm at it, add a gzopen test.

Credit for finding them goes to Nick Finco from Google security.

Change-Id: I33264471b12985d1345dd17948258302af8e81dd
Failed to load latest commit information.
DRAMSim2 @ e0849ce Added DRAMSim2 as a git submodule Feb 22, 2013
mem-repeater @ 1955e73
tests Sample load/store misses by the PC of the instruction. May 17, 2016
third_party Switch catch to single-header version. May 15, 2016
tools Add /dev/shm to test sandbox. May 10, 2016
tools_local/cpp scheduler: First cut at blocked threads. May 1, 2016
.clang-format Set bin packing parameters to true. Oct 23, 2015
.gitignore Reorg directory structure. Oct 31, 2015
LICENSE Update README for bazel. Add license. Nov 19, 2015
WORKSPACE Update libconfuse to v3.0. Apr 14, 2016
run.sh Missed run.sh in b213d4 Apr 11, 2016



XIOSim is a detailed user-mode microarchitectural simulator for the x86 architecture. It has detailed models for in-order (Atom-like) and out-of-order (Nehalem-like) cores and tightly-integrated power models. XIOSim supports multiprogram and multithreaded execution, regions-of-interest (including SimPoints). It runs at 100s KIPS per simulated core and uses cores on the simulation host to speed up multicore simulation (fastest runs use 2x the number of simulated cores).

XIOSim builds up on and integrates a significant amount of others' work:

  • The out-of-order performance model from Zesto.
  • The Pin binary instrumentation engine.
  • The power models from McPAT.
  • The DRAM models from DRAMSim2.


  • Bazel 0.1.4 or newer Download
  • a recent C++ toolchain with C++14 support (GCC 4.9 or newer)
  • (integration tests only) Python and py.test

XIOSim uses bazel for fetching and building dependences. Check out third_party for a complete list of libraries we use.

Try it out

bazel build :xiosim

Build status

Build Status

Configuration and flags

Most simulated parameters are contained in a configuration file. Feel free to browse a Nehalem-based machine to get a feel for them.

Simulated applications are specified in their own configuration file. Check out how that looks. You can add as many as you want for a single multiprogram simulation.

A few instruction feeder parameters (mostly related to regions-of-interest) are passed as command-line flags (after the pintool -t switch). For example:

-ppfile test.pp     # to use a PinPoints file.
-skip 10000         # to fast-forward the first 10,000 instructions.
-length 10000       # to only simmulate 10,000 instructions.

ISA support

The simulator supports user-mode, ia32 and x86_64 instructions. If you want to simulate 32-bit applications, build with bazel build --cpu=piii :xiosim.


XIOSim is under the BSD license, unless otherwise noted. In-tree third-party compoments are under licences that are no more restrictive: Zesto is under a notice-type license, copyright Georgia Tech; McPAT and CACTI are under a notice-type license, copyright HP; ezOptionParser is under an MIT license; InstLib is under an Intel Open Source license. Despite what some Zesto files mention, there is no more code derived from SimpleScalar and covered by the SimpleScalar license.