config, arm, power: Example to report the power for the L2 Cache

This patch add an example to demonstrate how to report the power for the L2
Cache of the big cluster separately ,it decouples the L2 contributions from
the CPU power equation

Signed-off-by: Sherif Elhabbal <elhabbalsherif@gmail.com>
Change-Id: Idde43c8bcb10df9d44d20282eaf21ce87a9d3f58
Reviewed-on: https://gem5-review.googlesource.com/12684
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
Sherif Elhabbal
2018-09-14 17:10:24 +02:00
parent b1cb96672a
commit 537d6874c8

View File

@@ -69,6 +69,25 @@ class CpuPowerModel(PowerModel):
CpuPowerOff(), # OFF
]
class L2PowerOn(MathExprPowerModel):
# Example to report l2 Cache overall_accesses
# The estimated power is converted to Watt and will vary based on the size of the cache
dyn = "overall_accesses*0.000018000"
st = "(voltage * 3)/10"
class L2PowerOff(MathExprPowerModel):
dyn = "0"
st = "0"
class L2PowerModel(PowerModel):
# Choose a power model for every power state
pm = [
L2PowerOn(), # ON
L2PowerOff(), # CLK_GATED
L2PowerOff(), # SRAM_RETENTION
L2PowerOff(), # OFF
]
def main():
parser = argparse.ArgumentParser(
@@ -90,6 +109,14 @@ def main():
cpu.default_p_state = "ON"
cpu.power_model = CpuPowerModel()
# Example power model for the L2 Cache of the bigCluster
for l2 in root.system.bigCluster.l2.descendants():
if not isinstance(l2, m5.objects.Cache):
continue
l2.default_p_state = "ON"
l2.power_model = L2PowerModel()
bL.instantiate(options)
print("*" * 70)