How neethubal/bzsim works
BZSim combines ZSim’s execution-driven system simulation with BookSim’s detailed interconnect model. The main workflow is to launch a configured simulation, initialize cores and system resources, schedule simulated execution and memory activity, and collect statistics; BookSim models traffic through configurable networks and routers. The README documents optional DRAMSim2 integration. Several subsystem links reflect documented capability or header-level integration; unsampled implementation details are not assumed.
Main entry points: init.cpp System initialization · zsim.cpp ZSim runtime · trafficmanager.cpp Traffic manager · iq_router.cpp Router models
Components 26
ZSim Runtime
- ZSim runtime
zsim/src/zsim.cpp - System initialization
zsim/src/init.cpp - Simulation configuration
zsim/src/config.cpp - Thread scheduler
zsim/src/scheduler.h - Process tracking
zsim/src/process_tree.h - Simulation allocator
zsim/src/galloc.h
System Modeling
- Core models
zsim/src/core.h - Instruction decoder
zsim/src/decoder.cpp - Memory hierarchy
zsim/src/memory_hierarchy.cpp - Cache modeling
zsim/src/cache.cpp - Detailed memory
zsim/src/detailed_mem.cpp - DRAMSim2
BookSim Interconnect
- Interconnect interface
zsim/src/booksim_net_ctrl.cpp - BookSim configuration
booksim2/src/booksim_config.cpp - Traffic patterns
booksim2/src/traffic.cpp - Traffic manager
booksim2/src/trafficmanager.cpp - Network topologies
booksim2/src/networks/network.hpp - Router models
booksim2/src/routers/iq_router.cpp - Routing functions
booksim2/src/routefunc.hpp - Flits and credits
booksim2/src/flit.hpp - Switch allocation
booksim2/src/allocators/allocator.cpp - Power monitoring
booksim2/src/power/power_module.cpp
Statistics and Tracing
- Statistics
zsim/src/stats.h - Logging
zsim/src/log.h - Network statistics
booksim2/src/stats.cpp
Other components
- Simulation user
Connections 25
- Simulation user → ZSim runtime: launches
- ZSim runtime → System initialization: initializes
zsim/src/zsim.cpp - System initialization → Simulation configuration: reads
zsim/src/init.cpp - ZSim runtime → Thread scheduler: uses
zsim/src/zsim.cpp - ZSim runtime → Process tracking: tracks processes
zsim/src/zsim.cpp - System initialization → Core models: configures
zsim/src/init.cpp - Core models → Instruction decoder: decodes instructions
zsim/src/core.h - System initialization → Memory hierarchy: initializes
zsim/src/init.cpp - System initialization → Cache modeling: configures
zsim/src/init.cpp - System initialization → Detailed memory: configures
zsim/src/init.cpp - Detailed memory → DRAMSim2: may integrate
- ZSim runtime → Interconnect interface: includes interconnect control
- Interconnect interface → Traffic manager: drives network traffic
- Traffic manager → Network topologies: transfers flits
- Traffic manager → Traffic patterns: selects patterns
- Network topologies → Router models: contains routers
booksim2/src/networks/network.hpp - Router models → Routing functions: computes routes
booksim2/src/routers/iq_router.cpp - Router models → Flits and credits: receives flits
booksim2/src/routers/iq_router.cpp - Router models → Switch allocation: uses allocation
booksim2/src/routers/iq_router.cpp - Traffic manager → Network statistics: records results
- Traffic manager → Statistics: aggregates metrics
- System initialization → Simulation allocator: initializes
zsim/src/init.cpp - ZSim runtime → Logging: uses
zsim/src/zsim.cpp - Network topologies → BookSim configuration: uses configuration
- Router models → Power monitoring: may monitor