diff options
author | Kevin Lim <ktlim@umich.edu> | 2006-08-11 17:42:59 -0400 |
---|---|---|
committer | Kevin Lim <ktlim@umich.edu> | 2006-08-11 17:42:59 -0400 |
commit | 716ceb6c107751fded501f18466a4166b7809e64 (patch) | |
tree | 5c3fc8f455d79c647ffaab96ee594b8d911fc678 /cpu/base.cc | |
parent | 5ec58c4bdc2ffa8c650a784efc5a342a3ad36810 (diff) | |
download | gem5-716ceb6c107751fded501f18466a4166b7809e64.tar.xz |
Code update for CPU models.
arch/alpha/isa_traits.hh:
Add in clear functions.
cpu/base.cc:
cpu/base.hh:
Add in CPU progress event.
cpu/base_dyn_inst.hh:
Mimic normal registers in terms of writing/reading floats.
cpu/checker/cpu.cc:
cpu/checker/cpu.hh:
cpu/checker/cpu_builder.cc:
cpu/checker/o3_cpu_builder.cc:
Fix up stuff.
cpu/cpu_exec_context.cc:
cpu/cpu_exec_context.hh:
cpu/o3/cpu.cc:
cpu/o3/cpu.hh:
Bring up to speed with newmem.
cpu/o3/alpha_cpu_builder.cc:
Allow for progress intervals.
cpu/o3/tournament_pred.cc:
Fix up predictor.
cpu/o3/tournament_pred.hh:
cpu/ozone/cpu.hh:
cpu/ozone/cpu_impl.hh:
cpu/simple/cpu.cc:
Fixes.
cpu/ozone/cpu_builder.cc:
Allow progress interval.
cpu/ozone/front_end_impl.hh:
Comment out this message.
cpu/ozone/lw_back_end_impl.hh:
Remove this.
python/m5/objects/BaseCPU.py:
Add progress interval.
python/m5/objects/Root.py:
Allow for stat reset.
sim/serialize.cc:
sim/stat_control.cc:
Add in stats reset.
--HG--
extra : convert_revision : fdb5ac5542099173cc30c40ea93372a065534b5e
Diffstat (limited to 'cpu/base.cc')
-rw-r--r-- | cpu/base.cc | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/cpu/base.cc b/cpu/base.cc index de03b9eab..36950a683 100644 --- a/cpu/base.cc +++ b/cpu/base.cc @@ -54,6 +54,26 @@ vector<BaseCPU *> BaseCPU::cpuList; // been initialized int maxThreadsPerCPU = 1; +void +CPUProgressEvent::process() +{ +#ifndef NDEBUG + Counter temp = cpu->totalInstructions(); + double ipc = double(temp - lastNumInst) / (interval / cpu->cycles(1)); + DPRINTFN("%s progress event, instructions committed: %lli, IPC: %0.8d\n", + cpu->name(), temp - lastNumInst, ipc); + ipc = 0.0; + lastNumInst = temp; + schedule(curTick + interval); +#endif +} + +const char * +CPUProgressEvent::description() +{ + return "CPU Progress event"; +} + #if FULL_SYSTEM BaseCPU::BaseCPU(Params *p) : SimObject(p->name), clock(p->clock), checkInterrupts(true), @@ -150,7 +170,6 @@ BaseCPU::BaseCPU(Params *p) if (params->profile) profileEvent = new ProfileEvent(this, params->profile); #endif - } BaseCPU::Params::Params() @@ -185,6 +204,11 @@ BaseCPU::startup() if (!params->deferRegistration && profileEvent) profileEvent->schedule(curTick); #endif + + if (params->progress_interval) { + new CPUProgressEvent(&mainEventQueue, params->progress_interval, + this); + } } |