sim,stats: Update stats style for power_model and thermal_domain

Change-Id: Ie50553c301ff5790b51057dc117568374f0cbe36
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36515
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
Hoa Nguyen
2020-10-23 01:31:43 -07:00
parent 836920ac5d
commit e175be98fb
4 changed files with 23 additions and 51 deletions

View File

@@ -44,13 +44,21 @@
#include "sim/sub_system.hh"
PowerModelState::PowerModelState(const Params &p)
: SimObject(p), _temp(0), clocked_object(NULL)
: SimObject(p), _temp(0), clocked_object(NULL),
ADD_STAT(dynamicPower, "Dynamic power for this object (Watts)"),
ADD_STAT(staticPower, "Static power for this object (Watts)")
{
dynamicPower
.method(this, &PowerModelState::getDynamicPower);
staticPower
.method(this, &PowerModelState::getStaticPower);
}
PowerModel::PowerModel(const Params &p)
: SimObject(p), states_pm(p.pm), subsystem(p.subsystem),
clocked_object(NULL), power_model_type(p.pm_type)
clocked_object(NULL), power_model_type(p.pm_type),
ADD_STAT(dynamicPower, "Dynamic power for this power state"),
ADD_STAT(staticPower, "Static power for this power state")
{
panic_if(subsystem == NULL,
"Subsystem is NULL! This is not acceptable for a PowerModel!\n");
@@ -61,6 +69,11 @@ PowerModel::PowerModel(const Params &p)
pms->setTemperature(p.ambient_temp);
}
dynamicPower
.method(this, &PowerModel::getDynamicPower);
staticPower
.method(this, &PowerModel::getStaticPower);
}
void

View File

@@ -83,30 +83,15 @@ class PowerModelState : public SimObject
clocked_object = clkobj;
}
void regStats() {
SimObject::regStats();
dynamicPower
.method(this, &PowerModelState::getDynamicPower)
.name(params().name + ".dynamic_power")
.desc("Dynamic power for this object (Watts)")
;
staticPower
.method(this, &PowerModelState::getStaticPower)
.name(params().name + ".static_power")
.desc("Static power for this object (Watts)")
;
}
protected:
Stats::Value dynamicPower, staticPower;
/** Current temperature */
double _temp;
/** The clocked object we belong to */
ClockedObject * clocked_object;
Stats::Value dynamicPower, staticPower;
};
/**
@@ -136,22 +121,6 @@ class PowerModel : public SimObject
*/
double getStaticPower() const;
void regStats() {
SimObject::regStats();
dynamicPower
.method(this, &PowerModel::getDynamicPower)
.name(params().name + ".dynamic_power")
.desc("Dynamic power for this power state")
;
staticPower
.method(this, &PowerModel::getStaticPower)
.name(params().name + ".static_power")
.desc("Static power for this power state")
;
}
void setClockedObject(ClockedObject *clkobj);
virtual void regProbePoints();
@@ -176,8 +145,6 @@ class PowerModel : public SimObject
PowerModel &pm;
};
Stats::Value dynamicPower, staticPower;
/** Actual power models (one per power state) */
std::vector<PowerModelState*> states_pm;
@@ -192,6 +159,8 @@ class PowerModel : public SimObject
/** The type of power model - collects all power, static or dynamic only */
Enums::PMType power_model_type;
Stats::Value dynamicPower, staticPower;
};
#endif

View File

@@ -50,8 +50,11 @@
ThermalDomain::ThermalDomain(const Params &p)
: SimObject(p), _initTemperature(p.initial_temperature),
node(NULL), subsystem(NULL)
node(NULL), subsystem(NULL),
ADD_STAT(currentTemp, "Temperature in centigrade degrees")
{
currentTemp
.method(this, &ThermalDomain::currentTemperature);
}
double
@@ -70,18 +73,6 @@ ThermalDomain::setSubSystem(SubSystem * ss)
"thermalUpdate");
}
void
ThermalDomain::regStats()
{
SimObject::regStats();
currentTemp
.method(this, &ThermalDomain::currentTemperature)
.name(params().name + ".temp")
.desc("Temperature in centigrate degrees")
;
}
void
ThermalDomain::emitUpdate()
{

View File

@@ -93,7 +93,6 @@ class ThermalDomain : public SimObject, public ThermalEntity
*/
void setSubSystem(SubSystem * ss);
void regStats() override;
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;