This repository contains the source code and scripts needed to run several of the experiments from the paper:
Ghost Threading: Helper-Thread Prefetching for Real Systems
Yuxin Guo, Alexandra W. Chadwick, Márton Erdős,, Utpal Bora, Akshay Bhosale, Giacomo Gabrielli and Timothy M. Jones
International Symposium on Microarchitecture (MICRO)
October 2025
Please cite this paper if you produce any work that uses this repository.
We aim to regenerate results for Figure 3 and the first three bars of Figures 6 to 8. Since this technique targets on real systems and involoves a lot of system-dependent configurations, we'd expect the results to have quite some significant variation across different hardware. Hopefully the main trends of the paper will be visible in your output.
To run these scripts you will need:
- A physical system with x86-64 Intel processor, which has at least 8 cores and supports Hyper
Threading and the
serialize
instruction (ideally Intel Core i7-12700 processor with 94GB memory or similar systems), running Linux (ideally Ubuntu 24.04 or 22.04). - At least 94GB memory is needed to build the input graphs for some benchmarks.
- Around 290GB disk space is needed (mainly for the input graphs).
- The following dependencies: gcc/g++ (ideally >= v13.0), clang (ideally >= v17.0), python3, and gnuplot. Install the software dependencies on Ubuntu:
sudo apt install gcc g++ clang python3 gnuplot
- For Figure 7 additional dependencies: perf. perf is a part of the Linux kernel and generally does not need installation.
If perf does not exist on the system, it is available in the
linux-tools-generic
package on Ubuntu:
sudo apt install linux-tools-generic
- For Figure 8: Intel RDT Software Package. To install:
git clone https://github.com/intel/intel-cmt-cat.git
cd intel-cmt-cat
# Check installation instructions from INSTALL file
make
sudo make install
# Test installation
membw # this shows the usage instructions
To compile our source code and build input data used for evaluation:
./build.sh
This process takes around one hour on my system.
The README
files in subfolders (figure3
, figure6
, figure7
, and figure8
) provide instructions for reproducing the corresponding figures. When reproducing the results, try to avoid running other applications on the server.