diff options
author | Malek Musleh <malek.musleh@gmail.com> | 2015-04-14 11:01:10 -0500 |
---|---|---|
committer | Malek Musleh <malek.musleh@gmail.com> | 2015-04-14 11:01:10 -0500 |
commit | 826f69b47073f23ced9b6a2f5eac51e3ae9bc953 (patch) | |
tree | e51be674b77157fe419d1c6687f2e21a634d36df | |
parent | 34ad1123ee5927e3b1503f07649620a533d3eab9 (diff) | |
download | gem5-826f69b47073f23ced9b6a2f5eac51e3ae9bc953.tar.xz |
config, cpu: fix progress interval for switched CPUs
This patch ensures that the CPU progress Event is triggered for the new set of
switched_cpus that get scheduled (e.g. during fast-forwarding). it also avoids
printing the interval state if the cpu is currently switched out.
Committed by: Nilay Vaish <nilay@cs.wisc.edu>
-rw-r--r-- | configs/common/Simulation.py | 1 | ||||
-rw-r--r-- | src/cpu/base.cc | 11 |
2 files changed, 9 insertions, 3 deletions
diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py index 230701c23..73874674c 100644 --- a/configs/common/Simulation.py +++ b/configs/common/Simulation.py @@ -462,6 +462,7 @@ def run(options, root, testsys, cpu_class): switch_cpus[i].system = testsys switch_cpus[i].workload = testsys.cpu[i].workload switch_cpus[i].clk_domain = testsys.cpu[i].clk_domain + switch_cpus[i].progress_interval = testsys.cpu[i].progress_interval # simulation period if options.maxinsts: switch_cpus[i].max_insts_any_thread = options.maxinsts diff --git a/src/cpu/base.cc b/src/cpu/base.cc index b761e714e..4d8b09ed2 100644 --- a/src/cpu/base.cc +++ b/src/cpu/base.cc @@ -94,6 +94,14 @@ void CPUProgressEvent::process() { Counter temp = cpu->totalOps(); + + if (_repeatEvent) + cpu->schedule(this, curTick() + _interval); + + if(cpu->switchedOut()) { + return; + } + #ifndef NDEBUG double ipc = double(temp - lastNumInst) / (_interval / cpu->clockPeriod()); @@ -107,9 +115,6 @@ CPUProgressEvent::process() temp - lastNumInst); #endif lastNumInst = temp; - - if (_repeatEvent) - cpu->schedule(this, curTick() + _interval); } const char * |