Skip to content

comsec-group/charm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

CHaRM (CCS 2025) -- Artifacts

These artifacts contain all the tools and scripts needed to reproduce the paper’s two main result sets:

  1. Efficiency results (storage, area, power, access energy via CACTI)
  2. Performance results (end-to-end simulations via Ramulator 2)

Table of Contents


All commands in a glance

Assumes Python ≥ 3.8 and build tools installed (see below).

# 1) Install Python deps
python -m pip install pyyaml numpy pandas matplotlib

# 2) Efficiency (Tables 5 & 6)
cd scripts
python generate_efficiency_results.py --table5
python generate_efficiency_results.py --table6

# 3) Performance (Figures 11–13)
cd ../ramulator2 && mkdir -p _build && cd _build && cmake .. && make -j$(nproc)
cd ../../scripts
python run_experiments.py --run-artifact-all
python run_experiments.py --run-artifact-all --multi-core
python extract_results.py --figure11
python extract_results.py --figure12
python extract_results.py --figure13

System Requirements

CHaRM itself does not add extra requirements beyond those needed by Ramulator 2. The following setup was tested.

  • OS: Ubuntu 22.04.5 LTS
  • gcc/g++: 12.3.0
  • CMake: 3.22.1
  • Python: ≥ 3.8 (tested with 3.10.12)

Python packages (install via pip):

python -m pip install pyyaml numpy pandas matplotlib

Directory Layout

.
├── ramulator2/                 # Ramulator2 simulator
├── scripts/                    # All orchestration & plotting scripts + CACTI
│   ├── generate_efficiency_results.py
│   ├── run_experiments.py
│   ├── extract_results.py
│   ├── cacti/					# CACTI binary, configs, and results (the generate_efficiency_results.py handles this)
│   └── results/                # Generated outputs go here
└── README.md                   # This file

Efficiency Results

The efficiency experiments report storage, area, power, and access energy using CACTI.

Run from the scripts/ directory:

cd scripts
python generate_efficiency_results.py --help

CLI Help (efficiency)

usage: generate_efficiency_results.py [-h] [--mitigation MITIGATION] [--athresh ATHRESH] [--table5] [--table6]

scripts to generate efficiency results

options:
  -h, --help            show this help message and exit
  --mitigation MITIGATION
                        Mitigation technique(s), comma-separated. Choices: CHaRM, ABACUS, Hydra. (default: CHaRM)
  --athresh ATHRESH     Activaton threshold(s), comma-separated (default: 512)
  --table5              generate and extract results for table 5 (default: disabled)
  --table6              generate and extract results for table 6 (default: disabled)

Reproduce Table 5 and Table 6

python generate_efficiency_results.py --table5
python generate_efficiency_results.py --table6

The contents of the tables will be written in the terminal.


Performance Results

Follow these steps to build Ramulator2, run simulations, and extract plots.

Step 1: Build Ramulator2

cd ramulator2
mkdir -p _build && cd _build
cmake ..
make -j$(nproc)

Step 2: Extracting the traces

After building, return to the root and then into scripts/. Before starting the simulation, you need to download the required benchmarks and application traces. We use traces for three benchmark suites: SPEC CPU2017, YCSB, TPC. Please use the artifact package on Zenodo to download the traces. in order to extract the traces:

cd ../../scripts
tar -xzf cputraces.tar.gz

Step 3: Run Simulations

Once the traces are extracted, you are set to start the simulations, using the following script:

python run_experiments.py --help

CLI Help (simulations)

usage: run_experiments.py [-h] [--mitigation MITIGATION] [--athresh ATHRESH] [--llc-size LLC_SIZE] [--multi-core] [--run-artifact-all]

scripts to launch simulations

options:
  -h, --help            show this help message and exit
  --mitigation MITIGATION
                        Mitigation technique(s), comma-separated. Choices: NoDefence, CHaRM, ABACUS, Hydra, PARA. (default: NoDefence)
  --athresh ATHRESH     Activaton threshold(s), comma-separated (default: 512)
  --llc-size LLC_SIZE   Last Level Cache size per core in MB (default: 4) -- defined values: 1, 2, 4, 8
  --multi-core          Enable multi-core mode (default: disabled)
  --run-artifact-all    Run all the simulations for artifact evaluation (default: disabled)

Run the paper’s main experiments (Figures 11–13):

# Single-core set
python run_experiments.py --run-artifact-all

# Multi-core set
python run_experiments.py --run-artifact-all --multi-core

Simulations will be executed in batches (each batch runs all workloads for a specific mitigation and activation threshold); the scripts show the progress.

Step 4: Extract & Plot

python extract_results.py --help

CLI Help (plotting)

usage: extract_results.py [-h] [--mitigation MITIGATION] [--athresh ATHRESH] [--llc-size LLC_SIZE] [--multi-core] [--bar-plot] [--box-plot] [--figure11] [--figure12] [--figure13]

scripts to extract and generate plots of the simulation results

options:
  -h, --help            show this help message and exit
  --mitigation MITIGATION
                        Mitigation technique(s), comma-separated. Choices: NoDefence, CHaRM, ABACUS, Hydra, PARA. (default: NoDefence)
  --athresh ATHRESH     Activaton threshold(s), comma-separated. (default: 512)
  --llc-size LLC_SIZE   Last Level Cache size per core in MB (default: 4)
  --multi-core          Enable multi-core mode (default: disabled)
  --bar-plot            generating a bar plot (default: disabled)
  --box-plot            generating a box plot (default: disabled)
  --figure11            extract results for figure 11 (default: disabled)
  --figure12            extract results for figure 12 (default: disabled)
  --figure13            extract results for figure 13 (default: disabled)

Generate the plots for the paper figures:

python extract_results.py --figure11
python extract_results.py --figure12
python extract_results.py --figure13

Where to find the plots

Plots are written under scripts/results/XXMBLLC/, where XX is the LLC size used for the simulations.

For the default 4 MB LLC:

scripts/results/4MBLLC/figure11.png
scripts/results/4MBLLC/figure12.png
scripts/results/4MBLLC/figure13.png

Citation

To cite CHaRM in research papers, use the following bibtex entry:

@inproceedings{hajiabadi_charm_2025,
	title = {{CHaRM: Checkpointed and Hashed Counters for Flexible and Efficient Rowhammer Mitigation}},
	booktitle = {{CCS}},
	author = {Hajiabadi, Ali and Marazzi, Michele and Razavi, Kaveh},
	year = {2025}
}

About

Artifacts for CHaRM (CCS '25)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published