How samainsworth/gem5-triangel works
This repository is an artefact for reproducing Triangel temporal-prefetcher experiments using a modified gem5 simulator. The documented workflow prepares SPEC workloads and checkpoints, runs simulations with selected CPU, cache, memory, and prefetcher settings, then analyzes results against reported metrics. The graph preserves those documented stages and capabilities; run scripts, checkpoint-generation implementation, analysis internals, and the Triangel/Triage source paths are not present in the supplied tree, so their paths and uncertain internal wiring are left unspecified.
Main entry points: Simulation.py Simulation orchestration · storage.cc Simulation statistics · CpuConfig.py CPU selection · CacheConfig.py Cache configuration
Components 16
Workload inputs
- SPEC CPU2006
- Checkpoint generation
- KVM checkpoints
- Ubuntu disk image
Simulation configuration
- CPU selection
configs/common/CpuConfig.py - Cache configuration
configs/common/CacheConfig.py - Memory configuration
configs/common/MemConfig.py - Simulation orchestration
configs/common/Simulation.py - Ruby protocols
configs/ruby/Ruby.py
Simulator runtime
- Triangel prefetcher
- Triage prefetcher
- Modified gem5
Result evaluation
- Simulation statistics
src/base/stats/storage.cc - Experiment analysis
- Reported metrics
Other components
- Experimenter
Connections 18
- Experimenter → SPEC CPU2006: prepares workloads
- SPEC CPU2006 → Checkpoint generation: runs in
- Experimenter → Checkpoint generation: generates checkpoints
- Checkpoint generation → KVM checkpoints: writes
- Experimenter → Simulation orchestration: starts experiments
- KVM checkpoints → Simulation orchestration: restores from
- Ubuntu disk image → Simulation orchestration: provides guest OS
- Simulation orchestration → CPU selection: configures
- Simulation orchestration → Cache configuration: configures
- Simulation orchestration → Memory configuration: configures
- Simulation orchestration → Ruby protocols: configures
- Simulation orchestration → Modified gem5: runs
- Modified gem5 → Triangel prefetcher: supports
- Modified gem5 → Triage prefetcher: supports
- Modified gem5 → Simulation statistics: records
- Simulation statistics → Experiment analysis: supplies results
- Experiment analysis → Reported metrics: computes
- Experimenter → Experiment analysis: validates results