summaryrefslogtreecommitdiff
path: root/src/mem/dram_ctrl.cc
diff options
context:
space:
mode:
authorWendy Elsasser <wendy.elsasser@arm.com>2016-10-13 19:22:11 +0100
committerWendy Elsasser <wendy.elsasser@arm.com>2016-10-13 19:22:11 +0100
commit7b269f2c95f546e69b5f5bea0edc741f2a0d9cfe (patch)
tree1240a654d1a99409cbef30fe6631090de51e95f0 /src/mem/dram_ctrl.cc
parent0dd0d4ee7adb561e89a47c3e8284c237bebdc4ab (diff)
downloadgem5-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.cc20
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()