diff options
author | Wendy Elsasser <wendy.elsasser@arm.com> | 2016-10-13 19:22:11 +0100 |
---|---|---|
committer | Wendy Elsasser <wendy.elsasser@arm.com> | 2016-10-13 19:22:11 +0100 |
commit | 7b269f2c95f546e69b5f5bea0edc741f2a0d9cfe (patch) | |
tree | 1240a654d1a99409cbef30fe6631090de51e95f0 /src/mem/dram_ctrl.cc | |
parent | 0dd0d4ee7adb561e89a47c3e8284c237bebdc4ab (diff) | |
download | gem5-7b269f2c95f546e69b5f5bea0edc741f2a0d9cfe.tar.xz |
mem: Add callback to compute stats prior to dump event
The per rank statistics are periodically updated based on
state transition and refresh events.
Add a method to update these when a dump event occurs to
ensure they reflect accurate values.
Specifically, need to ensure that the low-power state
durations, power, and energy are logged correctly.
Change-Id: Ib642a6668340de8f494a608bb34982e58ba7f1eb
Reviewed-by: Radhika Jagtap <radhika.jagtap@arm.com>
Diffstat (limited to 'src/mem/dram_ctrl.cc')
-rw-r--r-- | src/mem/dram_ctrl.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index e13c2af02..2866925c3 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -1857,6 +1857,24 @@ DRAMCtrl::Rank::updatePowerStats() } void +DRAMCtrl::Rank::computeStats() +{ + DPRINTF(DRAM,"Computing final stats\n"); + + // Force DRAM power to update counters based on time spent in + // current state up to curTick() + cmdList.push_back(Command(MemCommand::NOP, 0, curTick())); + + // Update the stats + updatePowerStats(); + + // final update of power state times + pwrStateTime[pwrState] += (curTick() - pwrStateTick); + pwrStateTick = curTick(); + +} + +void DRAMCtrl::Rank::regStats() { using namespace Stats; @@ -1906,6 +1924,8 @@ DRAMCtrl::Rank::regStats() averagePower .name(name() + ".averagePower") .desc("Core power per rank (mW)"); + + registerDumpCallback(new RankDumpCallback(this)); } void DRAMCtrl::regStats() |