zeal4u / ChampSim

ChampSim repository

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ChampSim

ChampSim is a trace-based simulator for a microarchitecture study. You can sign up to the public mailing list by sending an empty mail to champsim+subscribe@googlegroups.com. If you have questions about how to use ChampSim, you can often receive a quicker response on the mailing list. Please reserve GitHub Issues for bugs.

Clone ChampSim repository

git clone https://github.com/ChampSim/ChampSim.git

Compile

ChampSim takes a JSON configuration script. Examine champsim_config.json for a fully-specified example. All options described in this file are optional and will be replaced with defaults if not specified. The configuration scrip can also be run without input, in which case an empty file is assumed.

$ ./config.sh <configuration file>
$ make

Download DPC-3 trace

Professor Daniel Jimenez at Texas A&M University kindly provided traces for the 3rd Data Prefetching Championship (DPC-3). They can be found here (http://hpca23.cse.tamu.edu/champsim-traces/speccpu). A set of traces used for the 2nd Cache Replacement Championship (CRC-2) can be found from this link. (http://bit.ly/2t2nkUj)

Run simulation

Execute the binary directly.

$ bin/champsim --warmup_instructions 200000000 --simulation_instructions 500000000 ~/path/to/traces/600.perlbench_s-210B.champsimtrace.xz

The number of warmup and simulation instructions given will be the number of instructions retired. Note that the statistics printed at the end of the simulation include only the simulation phase.

Add your own branch predictor, data prefetchers, and replacement policy

Copy an empty template

$ mkdir prefetcher/mypref
$ cp prefetcher/no_l2c/no.cc prefetcher/mypref/mypref.cc

Work on your algorithms with your favorite text editor

$ vim prefetcher/mypref/mypref.cc

Compile and test Add your prefetcher to the configuration file.

{
    "L2C": {
        "prefetcher": "mypref"
    }
}

Note that the example prefetcher is an L2 prefetcher. You might design a prefetcher for a different level.

$ ./config.sh <configuration file>
$ make
$ bin/champsim --warmup_instructions 200000000 --simulation_instructions 500000000 600.perlbench_s-210B.champsimtrace.xz

How to create traces

Program traces are available in a variety of locations, however, many ChampSim users wish to trace their own programs for research purposes. Example tracing utilities are provided in the tracer/ directory.

Evaluate Simulation

ChampSim measures the IPC (Instruction Per Cycle) value as a performance metric.
There are some other useful metrics printed out at the end of simulation.

Good luck and be a champion!

About

ChampSim repository

License:Other


Languages

Language:C++ 88.1%Language:Python 11.9%Language:Makefile 0.0%