# HG changeset patch # User Korey Sewell <ksew...@umich.edu> # Date 1241030260 14400 # Node ID 1e06d3c4aa338ee6c97b1ffc9626ca32991b98fe # Parent 2bfd792b1cc059cc58531c43c9ecf0bbcbad9f12 [mq]: fix_cpu_progr_intvl
diff --git a/configs/common/Options.py b/configs/common/Options.py --- a/configs/common/Options.py +++ b/configs/common/Options.py @@ -38,6 +38,8 @@ parser.add_option("--fastmem", action="s # Run duration options parser.add_option("-m", "--maxtick", type="int") parser.add_option("--maxtime", type="float") +parser.add_option("--prog_intvl", type="int") + # Checkpointing options ###Note that performing checkpointing via python script files will override diff --git a/configs/example/se.py b/configs/example/se.py --- a/configs/example/se.py +++ b/configs/example/se.py @@ -125,6 +125,9 @@ if options.detailed: CPUClass.clock = '2GHz' +if options.prog_intvl: + CPUClass.progress_interval = options.prog_intvl + np = options.num_cpus system = System(cpu = [CPUClass(cpu_id=i) for i in xrange(np)], diff --git a/src/cpu/base.cc b/src/cpu/base.cc --- a/src/cpu/base.cc +++ b/src/cpu/base.cc @@ -61,11 +61,11 @@ int maxThreadsPerCPU = 1; int maxThreadsPerCPU = 1; CPUProgressEvent::CPUProgressEvent(BaseCPU *_cpu, Tick ival) - : Event(Event::Progress_Event_Pri), interval(ival), lastNumInst(0), - cpu(_cpu) -{ - if (interval) - cpu->schedule(this, curTick + interval); + : Event(Event::Progress_Event_Pri), _interval(ival), lastNumInst(0), + cpu(_cpu), _repeatEvent(true) +{ + if (_interval) + cpu->schedule(this, curTick + _interval); } void @@ -73,17 +73,19 @@ CPUProgressEvent::process() { Counter temp = cpu->totalInstructions(); #ifndef NDEBUG - double ipc = double(temp - lastNumInst) / (interval / cpu->ticks(1)); - - DPRINTFN("%s progress event, instructions committed: %lli, IPC: %0.8d\n", - cpu->name(), temp - lastNumInst, ipc); + double ipc = double(temp - lastNumInst) / (_interval / cpu->ticks(1)); + + DPRINTFN("%s progress event, total committed:%i, instructions committed: %lli, IPC: %0.8d\n", + cpu->name(), temp, temp - lastNumInst, ipc); ipc = 0.0; #else cprintf("%lli: %s progress event, instructions committed: %lli\n", curTick, cpu->name(), temp - lastNumInst); #endif lastNumInst = temp; - cpu->schedule(this, curTick + interval); + + if (_repeatEvent) + cpu->schedule(this, curTick + _interval); } const char * @@ -230,8 +232,10 @@ BaseCPU::startup() if (params()->progress_interval) { Tick num_ticks = ticks(params()->progress_interval); - Event *event = new CPUProgressEvent(this, num_ticks); - schedule(event, curTick + num_ticks); + cprintf("Setting num_ticks to %i.\n", num_ticks); + + Event *event; + event = new CPUProgressEvent(this, num_ticks); } } diff --git a/src/cpu/base.hh b/src/cpu/base.hh --- a/src/cpu/base.hh +++ b/src/cpu/base.hh @@ -61,15 +61,21 @@ class CPUProgressEvent : public Event class CPUProgressEvent : public Event { protected: - Tick interval; + Tick _interval; Counter lastNumInst; BaseCPU *cpu; - - public: - CPUProgressEvent(BaseCPU *_cpu, Tick ival); + bool _repeatEvent; + + public: + CPUProgressEvent(BaseCPU *_cpu, Tick ival = 0); void process(); + void interval(Tick ival) { _interval = ival; } + Tick interval() { return _interval; } + + void repeatEvent(bool repeat) { _repeatEvent = repeat; } + virtual const char *description() const; }; _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev