caesr-uwaterloo / pecc

gem5 implementation of predictable exclusive cache coherence

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gem5 for PECC

This repository is a fork of the official gem5 repository (Version 22.0.0.2) that implements the two coherence protocols studied in the PECC paper:

  1. PECC protocol (gem5 protocol name: EXCL)
  2. Conventional MOESI protocol for inclusive cache (gem5 protocol name: INCL)

Note that this repo does not contain ZCLLC implementation because it is a separate work.

Dependencies

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 (run_synth.py and run_splash3.py) require python tqdm library for progress monitoring.

We also provide the Dockerfile with all the required dependencies. To use docker:

  1. Build the image: run docker build -t gem5-pecc:latest . inside the repo directory.
  2. Launch the container: docker run -u $UID:$GID --volume <pecc repo directory>:/gem5 --rm -it gem5-pecc:latest

Usage

Assuming using docker container, in the directory /gem5:

  1. Build the two protocols: ./build.sh EXCL and ./build.sh INCL
  2. Run synthetic benchmark: python3 run_synth.py. The experiment results are stored under synth-out.
  3. Run Splash3 benchmark: python3 run_splash3.py. The experiment results are stored under splash-3-out.

Internal Workings

For information on the internal workings of the two protocols, PECC-INTERNAL.md breifly documents some important aspects of the gem5 implementations of the two protocols.

About

gem5 implementation of predictable exclusive cache coherence

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 66.1%Language:Python 12.5%Language:C 10.7%Language:GLSL 9.3%Language:HTML 0.2%Language:Assembly 0.2%Language:Hack 0.2%Language:CMake 0.2%Language:Shell 0.1%Language:Makefile 0.1%Language:M4 0.1%Language:Dockerfile 0.1%Language:Starlark 0.0%Language:Perl 0.0%Language:Fortran 0.0%Language:SuperCollider 0.0%Language:Roff 0.0%Language:Java 0.0%Language:Scala 0.0%Language:Vim Script 0.0%Language:sed 0.0%Language:Awk 0.0%Language:SCSS 0.0%Language:BASIC 0.0%Language:Emacs Lisp 0.0%Language:Forth 0.0%Language:SWIG 0.0%