Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A detailed michroarchitectural x86 simulator
C++ C Other
branch: master

Add a magic ALU that triggers on fake NOPs.

This is an easy way to prototype accelerators that take X amount of cycles.
Just set the magic ALU latency (and rate) to X.

TESTED=manual,integration
BUG=XIOSIM-21

Change-Id: I69a7541e90f26c17cac544e3bb8da0b9b5680fcd
latest commit 7578121cce
@s-kanev authored
Failed to load latest commit information.
DRAMSim2 @ e0849ce Added DRAMSim2 as a git submodule
ZCOMPS-MC Small cleanups (mostly uninitiliazed uses).
ZCOMPS-bpred Magic branch predictor with a predefined hit rate.
ZCOMPS-btb Clean up ancient libc duplicates.
ZCOMPS-coherence Initial split of global clock to local ones.
ZCOMPS-dram Initial split of global clock to local ones.
ZCOMPS-dvfs Add a sample DVFS policy
ZCOMPS-fusion importing zesto-prerelease-v0.2b
ZCOMPS-memdep Initial split of global clock to local ones.
ZCOMPS-prefetch Fixed typo in comment
ZCOMPS-ras Added more stats to IO core.
ZCOMPS-repeater Fix DFS frequency caluclation.
ZCORE-power Cherry-pick IPC=1 core from old branches.
ZPIPE-alloc Cherry-pick IPC=1 core from old branches.
ZPIPE-commit Don't lock memory_lock around oracle.
ZPIPE-decode Cherry-pick IPC=1 core from old branches.
ZPIPE-exec Cherry-pick IPC=1 core from old branches.
ZPIPE-fetch Don't lock memory_lock around oracle.
config Add a magic ALU that triggers on fake NOPs.
doc importing zesto-prerelease-v0.2b
mcpat Fix power modelling regressions after McPAT 1.2 and MP.
mem-repeater @ 1955e73 Updating mem-repeater submodule with fix for compile issues.
pintool Add a test to 8868afa
scripts Add a magic ALU that triggers on fake NOPs.
tests Abstract a replacement API.
.clang-format Test clang-format on pintool/*
.gitignore Minor - Add to gitignore, comment some printing
.gitmodules Minor merge corrections from big coherency merge
COPYING importing zesto-prerelease-v0.2b
INSTALL.zesto Documentation update.
Makefile Clean up BufferManager implementation.
README.md Tear out non-confuse configuration.
README.zesto Documentation update.
WARRANTY importing zesto-prerelease-v0.2b
core-set.h Add a missing header include for assert.h
eval.c Clean up ancient libc duplicates.
eval.h Added lots of const qualifiers that should have been there on char *-…
helix.h Implement two flush variants
host.h More legacy cleanups.
interface.h Don't lock memory_lock around oracle.
machine.c Add a magic ALU that triggers on fake NOPs.
machine.def Tweaks to eliminate build warnings ...
machine.h Add a magic ALU that triggers on fake NOPs.
make_def_lists.pl Stub no dvfs class.
memory.cpp Don't lock memory_lock around oracle.
memory.h Don't lock memory_lock around oracle.
misc.c ztrace doesn't belong in zesto-opts.cpp.
misc.h ztrace doesn't belong in zesto-opts.cpp.
pin.h Add delta compression to handshakes.
regs.h Per-core ztrace file.
sim-main.c Kill zesto-opts.
sim-slave.cpp Don't lock memory_lock around oracle.
sim.h Kill zesto-opts.
slave.cpp Don't lock memory_lock around oracle.
slices.cpp Kill zesto-opts.
spec_pin.con Merging trunk changes to atom branch.
spec_pinpoints.con Scripting.
stat_database.h Replacement for the SimpleScalar stats library. This does not yet inc…
stats.c Tweaks to eliminate build warnings ...
stats.h Support for runtime power traces.
synchronization.h Add a simple ROI API and an example test.
thread.h Use random_r instead of random
valcheck.h importing zesto-prerelease-v0.2b
version.h importing zesto-prerelease-v0.2b
x86flow.def Tweaks to eliminate build warnings ...
zesto-MC.cpp ztrace doesn't belong in zesto-opts.cpp.
zesto-MC.h Added DRAMSim2 as a git submodule
zesto-alloc.cpp Kill zesto-opts.
zesto-alloc.h Tear out non-confuse configuration.
zesto-bpred.cpp Add core parameter to bpred_dir_t
zesto-bpred.h Add core parameter to bpred_dir_t
zesto-cache.cpp Don't lock memory_lock around oracle.
zesto-cache.h ztrace doesn't belong in zesto-opts.cpp.
zesto-coherence.cpp Kill zesto-opts.
zesto-coherence.h Minor fixes to const coherence.
zesto-commit.cpp Kill zesto-opts.
zesto-commit.h Tear out non-confuse configuration.
zesto-config-params.cpp Fix small bugs in confuse configs
zesto-config.cpp Add a magic ALU that triggers on fake NOPs.
zesto-config.h Tear out non-confuse configuration.
zesto-core.cpp Don't lock memory_lock around oracle.
zesto-core.h Don't lock memory_lock around oracle.
zesto-decode.cpp Kill zesto-opts.
zesto-decode.h Tear out non-confuse configuration.
zesto-dram.cpp Kill zesto-opts.
zesto-dram.h Tear out non-confuse configuration.
zesto-dvfs.cpp Add a sample DVFS policy
zesto-dvfs.h Scale leakage and dynamic with dvfs policy.
zesto-exec.cpp Kill zesto-opts.
zesto-exec.h Tear out non-confuse configuration.
zesto-fetch.cpp Kill zesto-opts.
zesto-fetch.h Tear out non-confuse configuration.
zesto-memdep.cpp Kill zesto-opts.
zesto-memdep.h Initial split of global clock to local ones.
zesto-noc.cpp Kill zesto-opts.
zesto-noc.h Merge branch 'master' into dvfs
zesto-oracle.cpp Add a magic ALU that triggers on fake NOPs.
zesto-oracle.h Don't lock memory_lock around oracle.
zesto-power.cpp Fix DFS frequency caluclation.
zesto-power.h Tear out non-confuse configuration.
zesto-prefetch.cpp Kill zesto-opts.
zesto-prefetch.h Added initial 'two level' prefetcher, better handles consistant strid…
zesto-repeater.cpp Tear out non-confuse configuration.
zesto-repeater.h Tear out non-confuse configuration.
zesto-structs.h Tear out non-confuse configuration.
zesto-uncore.cpp Kill zesto-opts.
zesto-uncore.h Tear out non-confuse configuration.
ztrace.cpp ztrace doesn't belong in zesto-opts.cpp.
ztrace.h ztrace doesn't belong in zesto-opts.cpp.

README.md

XIOSim

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 10s KIPS per simulated core and uses cores on the simulation host to speed up muliticore 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.

Dependences

  • Pin kit version 2.14+ Download
  • Recent version of GCC including C++11 support (4.7+ is ok)
  • Boost 1.54+
  • libconfuse
  • (integration tests only) Python and py.test

To install dependent libraries on an Ubuntu system:

sudo apt-get install libboost-all-dev libconfuse-dev:i386

Try it out

export PIN_ROOT=</path/to/your/pin/installation>
cd pintool
make
./run.sh

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 parameters (mostly related to regions-of-interest) are passed as command-line flags (between the -t and -s switches). 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.
-parsec             # to properly use the Parsec suite region-of-interest hooks (ROI).

ISA support

The simulator supports user-mode, 32-bit instructions. Some basic SSE instructions are supported for doing floating point, but by no means the whole extension set (a warning is printed if more than 2% instructions are unsupported. In that case, ping Svilen to add your fancy instructions). Support for 64-bit mode, SSEx and/or AVX is planned.

Something went wrong with that request. Please try again.