cachesim
15-418 Parallel Computer Architecture and Programming Final Project
Cache simulator for a NUMA multiprocessor machine using distributed directory based cache coherence
Deliverables
Proposal
The proposal can be found here
Checkpoint
The checkpoint report can be found here
Presentation
The presentation slides can be found here
Final
The final report can be found here
Usage
Running the simulation on an existing trace
Quick start:
./cachesim -p 8 -n 2 -m MESI -Ai -t traces/tts_nosleep8.trace
which runs the sim with an Intel L1 cache configuration on a small sample trace. The full traces for the programs we used to generate our data are too large to be stored on Github.
For more information, run ./cachesim -h
Generating your own traces
Download the pin
program here and put unzip it to ~/pin
.
Run the following:
cd ~/pin/source/tools/ManualExamples
make
../../../pin -t obj-intel64/pinatrace.{so, dylib} -o <path/to/output/trace.trace> -- path/to/your/executable
(pinatrace.so
on Linux, pintrace.dylib
on macOS)
Note: the traces must be generated on a Linux machine (e.g. CMU’s andrew
machines), since they rely on the /proc
filesystem.
Generating the lock traces
Ensure pin
and cachesim
are in the home directory.
Run ./util/run-traces.sh -t [-p]
The -p
argument is optional if you want it to prompt you to let you just run certain traces.
This will run the pintool on all the programs in the programs/
directory and output the trace files into the traces/
directory. The num_numa
variable in run-traces.sh
can be modified if the system does not have 2 (the number on andrew
) NUMA nodes.
Running the sim on the lock traces
Run ./util/run-traces.sh -s [-p]
after generating the traces, or ./util/run-traces.sh -s -t [-p]
otherwise.
Generating plots of the data
Run ./util/plot.py
to generate all line charts and output them into plots/
. See plot.py
for information about how to generate specific plots, or bar charts.