diff options
author | Andreas Sandberg <andreas@sandberg.pp.se> | 2013-05-02 12:03:43 +0200 |
---|---|---|
committer | Andreas Sandberg <andreas@sandberg.pp.se> | 2013-05-02 12:03:43 +0200 |
commit | e316e4e5fe836a3cdd522f7181ea1e6421afd416 (patch) | |
tree | 60b6007e58256688a34bbad4ec4d69cd805350c3 /src/cpu | |
parent | fa249461caa431b774b558349b32282477ef6153 (diff) | |
download | gem5-e316e4e5fe836a3cdd522f7181ea1e6421afd416.tar.xz |
kvm: Add a stat counting number of instructions executed
This changeset adds a 'numInsts' stat to the KVM-based CPU. It also
cleans up the variable names in kvmRun to make the distinction between
host cycles and estimated simulated cycles clearer. As a bonus
feature, it also fixes a warning (unreferenced variable) when
compiling in fast mode.
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/kvm/base.cc | 20 | ||||
-rw-r--r-- | src/cpu/kvm/base.hh | 1 |
2 files changed, 14 insertions, 7 deletions
diff --git a/src/cpu/kvm/base.cc b/src/cpu/kvm/base.cc index 510d6ae25..f087b7b1a 100644 --- a/src/cpu/kvm/base.cc +++ b/src/cpu/kvm/base.cc @@ -175,6 +175,11 @@ BaseKvmCPU::regStats() BaseCPU::regStats(); + numInsts + .name(name() + ".committedInsts") + .desc("Number of instructions committed") + ; + numVMExits .name(name() + ".numVMExits") .desc("total number of KVM exits") @@ -485,8 +490,10 @@ BaseKvmCPU::kvmRun(Tick ticks) hwCycles.stop(); - uint64_t cyclesExecuted(hwCycles.read() - baseCycles); - Tick ticksExecuted(runTimer->ticksFromHostCycles(cyclesExecuted)); + const uint64_t hostCyclesExecuted(hwCycles.read() - baseCycles); + const uint64_t simCyclesExecuted(hostCyclesExecuted * hostFactor); + const uint64_t instsExecuted(hwInstructions.read() - baseInstrs); + const Tick ticksExecuted(runTimer->ticksFromHostCycles(hostCyclesExecuted)); if (ticksExecuted < ticks && timerOverflowed && @@ -496,14 +503,13 @@ BaseKvmCPU::kvmRun(Tick ticks) ticks, ticksExecuted); } - numCycles += cyclesExecuted * hostFactor; + /* Update statistics */ + numCycles += simCyclesExecuted;; ++numVMExits; + numInsts += instsExecuted; DPRINTF(KvmRun, "KVM: Executed %i instructions in %i cycles (%i ticks, sim cycles: %i).\n", - hwInstructions.read() - baseInstrs, - cyclesExecuted, - ticksExecuted, - cyclesExecuted * hostFactor); + instsExecuted, hostCyclesExecuted, ticksExecuted, simCyclesExecuted); return ticksExecuted + flushCoalescedMMIO(); } diff --git a/src/cpu/kvm/base.hh b/src/cpu/kvm/base.hh index 0554f913e..f46455af6 100644 --- a/src/cpu/kvm/base.hh +++ b/src/cpu/kvm/base.hh @@ -510,6 +510,7 @@ class BaseKvmCPU : public BaseCPU public: /* @{ */ + Stats::Scalar numInsts; Stats::Scalar numVMExits; Stats::Scalar numMMIO; Stats::Scalar numCoalescedMMIO; |