How simplessd/simplessd-fullsystem works
SimpleSSD is an educational SSD simulator built on gem5, intended for full-system storage evaluation. The principal runtime path is a user-provided simulation configuration through gem5’s Python entry point and SimObject configuration into the simulation engine; CPU and GPU models then execute workloads against memory and device models. The README identifies NVMe, SATA, and UFS interfaces, but their source files are absent from the supplied tree, so those nodes use the documented source directory. Several broader subsystem links are omitted where the excerpts do not establish the caller relationship.
Main entry points: main.cc Simulation engine · SimObject.py SimObject model · main.py Python entry · cxx_manager.cc Config manager
Components 19
Configuration
- SimObject model
src/python/m5/SimObject.py - Parameter system
src/python/m5/params.py - Simulation configs
configs/common/Simulation.py
Simulation runtime
- Python entry
src/python/m5/main.py - C++ config runner
util/cxx_config/main.cc - Config manager
src/sim/cxx_manager.cc - Simulation engine
src/sim/main.cc - SystemC integration
util/systemc/gem5_within_systemc/main.cc
Compute and memory
- Minor CPU pipeline
src/cpu/minor/pipeline.cc - GPU global memory
src/gpu-compute/global_memory_pipeline.cc - GPU local memory
src/gpu-compute/local_memory_pipeline.cc - Ruby coherence
src/mem/ruby/slicc_interface/AbstractController.cc - Protocol compiler
src/mem/slicc/main.py - PCI copy engine
src/dev/pci/copy_engine.cc
Storage and analysis
- SSD interfaces
src/dev/storage - DRAM power model
ext/drampower/src/CmdHandlers.cc - Network modeling
ext/dsent/model/electrical/router/Router.cc - Area and power
ext/mcpat/iocontrollers.cc
Other components
- Simulation user
Connections 17
- Simulation user → Python entry: starts
src/python/m5/main.py - Python entry → SimObject model: loads
src/python/m5/main.py - SimObject model → Parameter system: uses
src/python/m5/SimObject.py - Simulation user → C++ config runner: configures
util/cxx_config/main.cc - C++ config runner → Config manager: configures
util/cxx_config/main.cc - Config manager → SimObject model: instantiates
src/sim/cxx_manager.cc - Simulation configs → Python entry: supplies config
- Simulation engine → Minor CPU pipeline: runs
- GPU global memory → Ruby coherence: issues memory requests
src/gpu-compute/global_memory_pipeline.cc - GPU local memory → GPU global memory: runs alongside
- Protocol compiler → Ruby coherence: generates protocol code
src/mem/slicc/main.py - PCI copy engine → Simulation engine: simulates device
- Simulation user → SSD interfaces: evaluates
README - DRAM power model → Simulation engine: models memory power
- Network modeling → Simulation engine: models networks
- Area and power → Simulation engine: estimates power
- SystemC integration → Config manager: configures
util/systemc/gem5_within_systemc/main.cc