Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A detailed michroarchitectural x86 simulator
C++ C Other
branch: master

Only assert buffer::empty() in debug builds.

Turns out this check significantly increases the contention
on locks_[tid], leading to priority inversion when we are
strapped for cores.

TESTED=integraion
BUG=XIOSIM-20

Change-Id: I50e4baa61c6b275d441cce2ae525d4ca184a4ddb
latest commit 849341bad5
@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 Fix power modelling regressions after McPAT 1.2 and MP.
ZPIPE-alloc Clean up helix-specific stuff from pipe.
ZPIPE-commit Kill zesto-opts.
ZPIPE-decode First step at ignore API that fixes npc != pc + len.
ZPIPE-exec Tweaks to eliminate build warnings ...
ZPIPE-fetch ztrace doesn't belong in zesto-opts.cpp.
config Remove unused option
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 Only assert buffer::empty() in debug builds.
scripts Updated SPEC scripts for the harness world.
tests Add an IPC step microbenchmark to test DVFS.
.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 Turn on -Werror for libsim.
README.md Tear out non-confuse configuration.
README.zesto Documentation update.
WARRANTY importing zesto-prerelease-v0.2b
callbacks.c Limit sim memory accesses. Still crude.
callbacks.h timing_sim not under pin any more.
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 Move ipc_message_t away from interface.h.
machine.c Clean up dead decoder code
machine.def Tweaks to eliminate build warnings ...
machine.h Clean up dead decoder code
make_def_lists.pl Stub no dvfs class.
memory.cpp ztrace doesn't belong in zesto-opts.cpp.
memory.h Clean up v2p translation (esp for repeater).
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 Fix DFS frequency caluclation.
sim.h Kill zesto-opts.
slave.cpp Kill zesto-opts.
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 Fix XIOSIM_LOCK bug with register clobber.
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 Tweaks to eliminate build warnings ...
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 Kill zesto-opts.
zesto-config.h Tear out non-confuse configuration.
zesto-core.cpp Turn on -Werror for libsim.
zesto-core.h Kill zesto-opts.
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 Turn on -Werror for libsim.
zesto-oracle.h ztrace doesn't belong in zesto-opts.cpp.
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.