diff options
author | Anouk Van Laer <anouk.vanlaer@arm.com> | 2017-03-17 12:02:00 +0000 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-11-20 11:03:03 +0000 |
commit | c0d613adb4eca09c32aca1cc90f04c29574f69c6 (patch) | |
tree | 1c2a0d26778d8b8ca3f0b359f990dc695156bf8f /src/cpu/base.hh | |
parent | d626f4f7aaa4d2c9f7ae1afc35577fa025b4de38 (diff) | |
download | gem5-c0d613adb4eca09c32aca1cc90f04c29574f69c6.tar.xz |
pwr: Adds logic to enter power gating for the cpu model
If the CPU has been clock gated for a sufficient amount of time
(configurable via pwrGatingLatency), the CPU will go into the OFF
power state. This does not model hardware, just behaviour.
Change-Id: Ib3681d1ffa6ad25eba60f47b4020325f63472d43
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3969
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/cpu/base.hh')
-rw-r--r-- | src/cpu/base.hh | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/cpu/base.hh b/src/cpu/base.hh index 79a4bf1d6..7039fcfbc 100644 --- a/src/cpu/base.hh +++ b/src/cpu/base.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2013 ARM Limited + * Copyright (c) 2011-2013, 2017 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -307,6 +307,11 @@ class BaseCPU : public MemObject void registerThreadContexts(); + // Functions to deschedule and reschedule the events to enter the + // power gating sleep before and after checkpoiting respectively. + void deschedulePowerGatingEvent(); + void schedulePowerGatingEvent(); + /** * Prepare for another CPU to take over execution. * @@ -583,6 +588,11 @@ class BaseCPU : public MemObject bool waitForRemoteGDB() const; Cycles syscallRetryLatency; + // Enables CPU to enter power gating on a configurable cycle count + protected: + const Cycles pwrGatingLatency; + void enterPwrGating(); + EventFunctionWrapper enterPwrGatingEvent; }; #endif // THE_ISA == NULL_ISA |