This repository contains a gem5 implementation of Pinned Loads: Taming Speculative Loads in Secure Processors.
Please check our paper for details:
@inproceedings{Zhao:PinnedLoads:ASPLOS22,
author = {Zhao, Zirui Neil and Ji, Houxiang and Morrison, Adam and Marinov, Darko and Torrellas, Josep},
title = {Pinned Loads: Taming Speculative Loads in Secure Processors},
year = {2022},
publisher = {Association for Computing Machinery},
booktitle = {Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'22)},
}
You can find the Pinned Loads paper here!
Depending on your system, it may take about 5 to 20 minutes to build gem5.
To make the building process easier,
we provide a Dockerfile under docker/
and a script cgem.sh
that will build the Docker image and compile Pinned Loads.
Before you start, please set environment variable GEM5_ROOT
to
the root of Pinned Loads (absolute path):
export GEM5_ROOT=<Path to Pinned Loads> # e.g., export GEM5_ROOT=$HOME/PinnedLoads
Then, execute the script:
./cgem.sh
to build the Docker image and Pinned Loads.
For more information about installing and using Docker, please refer to Docker's official documents.
You will need all libraries that are required by gem5. Note that due to a bug in gem5, it might crash on some SPEC benchmarks in SE mode if gem5 is built on a system that is newer than Ubuntu 16.04.
Once all libraries are installed, execute the following command under the Pinned Loads directory:
scons build/X86_MESI_Two_Level/gem5.opt -j$(nproc)
We provide scripts that run Pinned Loads for all the schemes proposed in our paper. For more details, please refer to this README.
All the results in the paper can be reproduced. For more information about re-running our experiments, please refer to this section in the README.
All Pinned Loads related changes are released under MIT license. The rest of contents are under the original gem5 license.