Giter VIP home page Giter VIP logo

xiosim's Introduction

XIOSim 0.3 Pre-release
Svilen Kanev,
Harvard University, 2013
===================================================
XIOSim is a detailed user-mode microarchitectural simulator for the x86 architecture. It features detailed models for in-order (Atom-like) and out-of-order (Nehalem-like) cores, tightly integrated power models and integrates with existing Pintools.

XIOSim builds up on and integrates a significant amount of others' work:
- the out-of-order performance model from the Zesto framework.
- the Pin binary instrumentation engine.
- the power models from McPAT.
- the DRAM models from DRAMSim2.

===================================================
REQUIREMENTS:
Pin kit version 2.14
Available at http://www.pintool.org/downloads.html

===================================================
BUILD INSTRUCTIONS:

0. Set PIN_HOME in pintool/makefile to pin kit location
2. Build pintool
cd pintool; make

Additional build targets:
- make libd (slave mode with tracing enabled -- on error, last 50,000 lines of trace are added to the output file)
- make tags (generate ctags)
- make clean

- cd pintool; make debug (adds a trace of syscalls to simulator output)

REBUILDING: After making changes to the simulator core, you first need to rebuild libsim. In the root of the simulator, do "make; cd pintool; make".

REQUIREMENTS: Recent version of GCC including some C++11 features (GCC 4.5+ should be ok). We use GCC 4.7.2.

===================================================
RUNNING IN SLAVE MODE:
Running as a pintool frees the simulator for certain responsibilities, like implementing an elf file loader and emulating/dispatching system calls. Instead, these are done natively by the host operating system, and we only grab information that is relevant for simulation.

Flags should be given in this order:

Pin flags [immediately after pin executable].

Pintool flags [after -t in command line]:
-ppfile, skip, etc. -- as defined by the CONTROLLER_PINPOINT class.
-skip -- exit after a number of simulated instructions.
-parsec -- support for the Parsec suite region-of-interest (ROI).
-pthreads -- EXPERIMENTAL support for pthreads synchronization.
-iljit -- Experimental support for running the high-level VM ILDJIT on top of the simulator.

Simulator command line flags [after -s in command line]:
-f.e. -redir:sim to redirect simulator output (see Zesto documentation).

Simulated executable and parameters [after -- in command line].

===================================================
SIMULATING POWER:
Setting the "-power" option to true (either in the configuration file or through the simulator command line) enables power computation. Power statistics for the whole duration of the simulation (or the current simulation slice) are appended to the appropriate output file.

Setting the "-power:rtp_interval" and "-power:rtp_file" options allows generating power traces that track core and uncore dynamic power every "rtp_interval" cycles.

Performance overheads: Power simulation adds a significant overhead to simulator start times and memory consumption during initialization, while the McPAT power models are trained. After initialization, there is no significant performance overhead, regardless whether power traces are generated.

===================================================
STABILITY NOTE:
Running under Pin and sharing its address space can cause issues with repeatability of the results between runs. This can completely ruin techniques that require the exact same call path, like PinPoints. To mitigate that:
- disable address space randomization (f.e. "setarch i686 -3BL");
- clear the environment (f.e. "/usr/bin/env -i"); note that all paths need to be absolute after this;
- run Pin with the "-separate_memory" flag to minimize issues with sharing of a single address space;

===================================================
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.

===================================================
SEGMENTATION SUPPORT NOTE:
Because OS functions are executed by the host OS itself, support for segmenting is limited to the ES and GS registers. The gcc/glibc/Linux toolchain appears to set other segment registers to a segment base of 0, so this is not a big issue. Note that other OS/compiler combinations may not do that.

xiosim's People

Contributors

s-kanev avatar kevinbrownell avatar glennholloway avatar xyzsam avatar

Watchers

Yuanwen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.