Source code of the simulator used to evaluate the mechanisms presented in:
H. Hassan, A. Olgun, A. G. Yağlıkçı, H. Luo, and O. Mutlu. "A Case for Self-Managing DRAM Chips: Improving Performance, Efficiency, Reliability, and Security via Autonomous in-DRAM Maintenance Operations". In arXiv, 2022.
The architectural simulator is built on Ramulator, which is described in this earlier work:
Yoongu Kim, Weikun Yang, and Onur Mutlu, "Ramulator: A Fast and Extensible DRAM Simulator". IEEE Computer Architecture Letters (CAL), March 2015.
Please cite the above works if you make use of the tool provided in this repository.
The simulator integrates DRAMPower for DRAM power consumption and energy analysis. DRAMPower depends on libxerces
, which can be installed using apt install libxerces-c-dev
.
Ramulator is a cycle-accurate memory simulator that support a wide array of commercial and academic DRAM standards. We have modified the memory controller of Ramulator to evaluate the performance of the SMD-based DRAM maintenance mechanisms proposed in our paper. This version also integrated DRAMPower, a tool used to estimate DRAM energy consumption.
$ make -j
$ ./run.sh
Note that the script will run a very quick simulation using a small trace file. Please refer to the original Ramulator repository for traces collected from real workloads.
The run.sh
script simulates a single-core workload (i.e., "403.gcc" from the
SPEC2006 benchmark suite) using the default system and the SMD-combined configuration with the deterministic RowHammer protection mechanism.
Update the script to simulate a different workload with different
configuration parameters. See src/Config.h
for a list of the available
configuration parameters.
We provide multiple bash scripts under the scripts
directory. Each script sets the simulation configuration parameters for one of the SMD configurations evaluated in the paper. You can replace the contents of run.sh
with the content of a script under scripts
to simulate a different SMD configuration. We briefly describe the configurations provided in the scripts
directory:
- SMD-Combined-DRP.sh: SMD combined with the deterministic RowHammer protection mechanism (Graphene).
- SMD-Combined-PRP.sh: SMD combined with the probabilistic RowHammer protection mechanism (PARA).
- SMD-DRP.sh: SMD deterministic RowHammer protection mechanism (Graphene) + SMD fixed rate refresh (SMD-FR).
- SMD-FR.sh: SMD fixed rate refresh with a refresh period of 32 ms.
- SMD-MS.sh: SMD memory scrubbing with a 5 minute scrubbing period + SMD fixed rate refresh (SMD-FR).
- SMD-PRP.sh: SMD probabilistic RowHammer protection mechanism (PARA) + SMD fixed rate refresh (SMD-FR).
- SMD-PRPplus.sh: SMD's area-efficient RowHammer protection mechanism with bloom filters + SMD fixed rate refresh (SMD-FR).
- SMD-VR.sh: SMD variable rate refresh with a refresh period of 32 ms and a weak row probability of 0.1%.
Also, please refer to the original Ramulator repository for information about the simulation output and additional details on Ramulator's source code.