Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

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

Kill zesto-opts.

Preserve the very few useful things left there and move them
to more appropriate places:
- a trimmed down sim_reg_stats in sim-slave.
- ZESTO_STAT in zesto-core (this should go in the new stats lib)

Change-Id: I21d94b3a02dc46aaa44b780d27fbf4aadd05311a
latest commit 85d0fbbab7
@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 Scale leakage and dynamic with 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 Updated repeater flush API.
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 Revert "Change LFENCE such that it is ignored by younger loads if all"
ZPIPE-fetch ztrace doesn't belong in zesto-opts.cpp.
config Update default.cfg after f0e5f3f.
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 Tear out non-confuse configuration.
scripts Tear out non-confuse configuration.
tests More end-to-end tests for ROIs.
.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 Kill zesto-opts. 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 Fix GRP15 decoding masks (fences).
machine.h Clean up dead decoder code 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 Kill zesto-opts.
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 Properly print u64 stats.
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 Simple incomplete mfence.
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 Kill zesto-opts.
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 Kill zesto-opts.
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 Scale leakage and dynamic with 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 Kill zesto-opts.
zesto-oracle.h ztrace doesn't belong in zesto-opts.cpp.
zesto-power.cpp Fix power modelling regressions after McPAT 1.2 and MP.
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.


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.


  • 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

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.