This repository is a fork of the official gem5 repository (Version 22.0.0.2) that implements ParRP cache partitioning mechanism studied in the ParRP paper.
The required dependencies are the same as for official gem5 (Version 22.0.0.2). Please refer to the official gem5 build instruction.
Additionally, the experiment launching scripts require python tqdm library for progress monitoring, and the build script requires mold linker installed for speedup the linking stage when building gem5.
We also provide the Docker environment with all the required dependencies. To use docker:
- Docker image is availble at https://hub.docker.com/r/xwangce/gem5-parrp, or you can build it locally by running
docker build -t gem5-parrp:latest .inside the repo directory. - Launch the container:
docker run -u $UID:$GID --volume <parrp repo directory>:/gem5 --rm -it gem5-parrp:latest
- src/: gem5 sources
- mem/ruby/: implemtation of ParRP and MSI coherence protocol
- omptr/: contains omptr tools for the Worst-Case Execution Time (WCET) study of multi-threaded programs, along with the BOTS benchmark programs.
- omptr.h: omptr instrumentation macros
- analyzer/: tools for WCET study
- analyzer: analyzer for computing WCET
- checker: checker for isolation guarantee
- bots/: BOTS benchmark programs
- omp-tasks/: sources of BOTS benchmark programs (files ending in "-omptr" are instrumented versions for WCET study)
- examples/: example OpenMP programs instrumented with omptr
- splash3-static-link/: Splash3 benchmark programs
Assuming using docker container, in the directory /gem5:
- Build gem5:
./build.sh - Measure per-request worst-case latency:
./run_measurement.py. Please refer to the comment at the top of the file for detailed instructions. - Run synthetic benchmark:
python3 run_synth.py. The experiment results are stored undersynth-out. - Run BOTS benchmark:
python3 run_bots.py. The experiment results are stored underbots-out. - Run Splash3 benchmark:
python3 run_splash3.py. The experiment results are stored undersplash-3-out. - Run analyzer:
python3 run_analyzer.py. Analyzer outputs are stored under experiment output folders. - Run checker:
python3 run_checker.py. Checker outputs are stored under experiment output folders.