CMU-SAFARI / ramulator-pim

A fast and flexible simulation infrastructure for exploring general-purpose processing-in-memory (PIM) architectures. Ramulator-PIM combines a widely-used simulator for out-of-order and in-order processors (ZSim) with Ramulator, a DRAM simulator with memory models for DDRx, LPDDRx, GDDRx, WIOx, HBMx, and HMCx. Ramulator is described in the IEEE CAL 2015 paper by Kim et al. at https://people.inf.ethz.ch/omutlu/pub/ramulator_dram_simulator-ieee-cal15.pdf Ramulator-PIM is used in the DAC 2019 paper by Singh et al. at https://people.inf.ethz.ch/omutlu/pub/NAPEL-near-memory-computing-performance-prediction-via-ML_dac19.pdf
144 stars 60 forks source link

Fix some bug in Processor.cpp #11

Open chenyxuan opened 3 years ago

chenyxuan commented 3 years ago

I tried to run ramulator-pim with an in-order core but failed.

Command:

 ./ramulator --config Configs/pim.cfg --disable-perf-scheduling true --mode=cpu --stats pim.stats --trace sample_traces/pim/pim-rodiniaBFS.out --core-org=inOrder --number-cores=4 --trace-format=zsim --split-trace=true

Result:

tick_gcd: 800
cpu_tick: 1
mem_tick: 1
Number of Cores: 4
Split Trace 
Core 0 trying to load trace sample_traces/pim/pim-rodiniaBFS.out.0
Trace opended: sample_traces/pim/pim-rodiniaBFS.out.0
Core 1 trying to load trace sample_traces/pim/pim-rodiniaBFS.out.1
Trace opended: sample_traces/pim/pim-rodiniaBFS.out.1
Core 2 trying to load trace sample_traces/pim/pim-rodiniaBFS.out.2
Trace opended: sample_traces/pim/pim-rodiniaBFS.out.2
Core 3 trying to load trace sample_traces/pim/pim-rodiniaBFS.out.3
Trace opended: sample_traces/pim/pim-rodiniaBFS.out.3
[0]retired: 0, clk, 1
[1]retired: 0, clk, 1
[2]retired: 0, clk, 1
[3]retired: 0, clk, 1

-> retired: 0
-> cycles: 1
-> ipc: 0
-> total instructions: 0
-> total time: -nanns
Simulation done. Statistics written to pim.stats

This should be due to the fact that the core didn't update more_reqs at the end of tick_inOrder() when split_trace is true.

I fixed it by copying some lines of code from tick_outOrder() and now it runs well.