Dynamic idle-state manager

A dynamic idle-state manager in mobile devices adjusts idle duration thresholds based on real-time operating conditions to enhance power management efficiency by optimizing idle state transitions, addressing inefficiencies in static threshold-based systems.

WO2025221239A1PCT designated stage Publication Date: 2025-10-23GOOGLE LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
PCT/US2024/024639
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-04-15
Publication Date
2025-10-23

AI Technical Summary

Technical Problem

Current power management systems in mobile devices use static idle duration thresholds that are based on a single set of normal operating conditions, which may not accurately reflect the actual operating conditions of the SoC, leading to inefficient idle state transitions due to part-to-part variations and changing conditions.

Method used

A dynamic idle-state manager that collects real-time operating conditions to calculate energy consumption predictions for different idle states, dynamically adjusts idle duration thresholds, and uses feedback to refine these predictions for optimal power management.

Benefits of technology

The dynamic approach ensures more accurate determination of idle states, reducing energy consumption and improving power management efficiency by aligning idle state transitions with current operating conditions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024024639_23102025_PF_FP_ABST
    Figure US2024024639_23102025_PF_FP_ABST
Patent Text Reader

Abstract

Power management for a block on a system-on-chip can be customized relative to the block entering a first idle state or a second idle state. An idle duration prediction of the block is determined. Operating conditions of the block are repeatedly collected and used to determine a first total energy consumption prediction of the first idle state and a second total idle energy consumption prediction of the second idle state for the predicted idle duration. An idle duration threshold is dynamically calculated based on the first and second total energy consumption predictions. Based on the idle duration threshold and the idle duration prediction, it is determined whether the block should enter the first idle state or the second idle state. Feedback about the actual power consumed by the block by entering a determined idle state may be used to calibrate the first and second total energy consumption predictions.
Need to check novelty before this filing date? Find Prior Art

Description

DYNAMIC IDLE-STATE MANAGERBACKGROUND

[0001] Mobile devices, such as mobile phones, typically include a system-on-a-chip (SoC), which is the brain of the mobile device. The SoC includes various components, such as central processors, memory, graphic processors, audio processors, high-speed input and output interfaces, and encry ption engines. Multiple blocks of the SoC, such as a central processing unit (CPU), a graphics processing unit (GPU), and a tensor processing unit (TPU), have idle states for power management. The idle states conserve power, also referred to herein as energy, while a block is idle (e.g., not actively processing). Two example idle states are a clock-gating idle state and a power-gating idle state. A block being in the power-gating idle state may use less power than the block being in the clock-gating idle state. However, the block may use more power to transition from an active state to the power-gating idle state than the power used to transition from an active state to the clock-gating idle state. This can make power management more challenging.

[0002] Current power management systems use an idle duration prediction that estimates how long a block of the SoC will be idle for an upcoming idle period. The power management system then utilizes an idle duration threshold for the block. The idle duration threshold indicates if it is more efficient for the block to enter the clock-gating idle state or the power-gating idle state based on the estimated duration of the idle period. The clocking-gating idle state is considered a lighter idle state, and the power-gating idle state is considered a deeper idle state. Typically, the idle duration threshold indicates that for an idle duration that is less than the idle duration threshold it would be more efficient to enter a lighter idle state and for an idle duration that exceeds the idle duration threshold it would be more efficient for the block to enter a deeper idle state. Idle duration thresholds are constant values coded into the power management system for each block having idle states. The idle duration threshold is typically derived or determined for each block of interest of an SoC while the block is operating at specific conditions. Typically, the specific operating conditions correspond to the block operating at what are considered normal operating conditions.SUMMARY

[0003] This document describes the power management of a block on an SoC with regard to the block entering an idle state. An idle duration prediction of a block is determined for an upcoming idle period. The idle duration prediction may be based on scheduled interruptions of the block and previous workload patterns of the block. The block has a first, or lighter, idle state and a second, or deeper, idle state. This document details a dynamic idle-state manager thatrepeatedly collects operating conditions of the block. The dynamic idle-state manager calculates a first total energy consumption prediction of the first idle state and a second total energy consumption prediction of the second idle state. The dynamic idle-state manager may include an energy overhead estimator that repeatedly collects the operating conditions of the block. The energy overhead estimator may also calculate the first total energy consumption prediction and the second total energy consumption prediction. Due to the repeated collection of operating conditions and the calculation of the first total energy consumption prediction and the second total energy consumption prediction, the dynamic idle-state manager can more accurately determine whether the block should enter the first idle state or the second idle state.

[0004] This document details that the dynamic idle-state manager dynamically calculates an idle duration threshold based on the first total energy consumption prediction and the second total energy consumption prediction. The dynamic idle-state manager may include an idle duration threshold adjuster configured to dynamically adjust an idle duration threshold of the block. The idle duration threshold adjuster may dynamically adjust the idle duration threshold based on the collected operating conditions.

[0005] This document details that the power management system determines if the block should enter the first idle state or the second idle state based on the idle duration threshold and the idle duration prediction. The dynamic idle-state manager of the power management system may make this determination. The collected operating conditions may include determining a voltage or a current of the block, determining an operating frequency of the block, reading a current leakage of the block from non-volatile memory of the SoC, and / or measuring an operating temperature of the block.

[0006] This document details that the first total energy consumption prediction may include a predicted energy consumption of the block entering the first idle state, a predicted energy consumption of the block in the first idle state, and a predicted energy consumption of the block exiting the first idle state. The second total energy consumption prediction may include a predicted energy consumption of the block entering the second idle state, a predicted energy consumption of the block in the second idle state, and a predicted energy consumption of the block exiting the second idle state. This document describes that the idle duration threshold can indicate a first range of durations for which the first idle state is more efficient than the second idle state, a first duration at which an efficiency of the first idle state is approximately equal to an efficiency of the second idle state, and a second range of durations for which the second idle state is more efficient than the first idle state.

[0007] This document describes determining (e.g., measuring) a first actual total energy consumption and a second actual total energy consumption. The first actual total energyconsumption is the total energy, or power, used by the block at least to transition to and remain in the first idle state. The second actual total energy consumption is the total energy, or power, used by the block at least to transition to and remain in the second idle state. A power monitor may be used to monitor the power used by the block as it transitions to and remains in an idle state. The measured first actual total energy consumption may be compared to the first total energy consumption prediction. This comparison may be used to calibrate and reduce (e.g., minimize) a difference between the measured first actual total energy consumption and first total energy consumption prediction. Likewise, the measured second actual total energy consumption may be compared to the second total energy consumption prediction, and the comparison may be used to calibrate and reduce (e.g., minimize) the differences between the actual consumption and the predicted consumption over time.

[0008] In some aspects, the techniques described herein relate to a method including determining an idle duration prediction, of a block of a system-on-chip (SoC), the block having a first idle state and a second idle state. The method includes collecting, repeatedly, operating conditions of the block. The method includes calculating, based on the repeated collection of operating conditions of the block, a first total energy consumption prediction of the first idle state and calculating, based on the repeated collection of operating conditions of the block, a second total energy consumption prediction of the second idle state. The method includes calculating an idle duration threshold based on the first total energy consumption prediction and the second total energy consumption prediction. The method includes selecting between at least the first idle state or the second idle state based on the idle duration threshold and the idle duration prediction.

[0009] In some aspects, the techniques described herein relate to an apparatus including a system-on-chip (SoC). The SoC comprising a block having a first idle state and a second idle state. The SoC includes an idle duration predictor configured to generate an idle duration prediction of the block. The SoC includes an energy overhead estimator configured to collect operating conditions of the block, estimate, for the block, a first total energy consumption prediction of the first idle state, and estimate, for the block, a second total energy consumption prediction of the second idle state. The SoC includes an idle duration threshold adjuster configured to dynamically adjust an idle duration threshold of the block based on collected operating conditions from the energy overhead estimator. The SoC includes an idle state manager configured to select between at least the first idle state or the second idle state based on the idle duration prediction and the dynamically calculated idle duration threshold.BRIEF DESCRIPTION OF DRAWINGS

[0010] Apparatuses of and techniques for a dynamic idle-state manager are described with reference to the following drawings. The same numbers are used throughout the drawings to reference like features and components.Fig. 1 illustrates an example apparatus with an SoC that includes a processor and a dynamic idle-state manager to manage idle states of blocks within the SoC.Fig. 2 illustrates a schematic of an example implementation of a dynamic idle-state manager that dynamically manages idle states for blocks on an SoC.Fig. 3 illustrates a schematic of another example implementation of a dynamic idle- state manager that dynamically manages idle states for blocks on an SoC.Fig. 4 illustrates an example flow diagram for dynamically managing an idle state for a block on an SoC.Fig. 5 illustrates an example graph that indicates different idle thresholds based on differing operational conditions of a block on an SoC.Fig. 6 illustrates another example flow diagram for dynamically managing an idle state for a block on an SoC.Fig. 7 illustrates an example graph that indicates a predicted energy consumption and a measured energy consumption for a block on an SoC.Fig. 8 is a flow chart illustrating an example process that implements dynamic management of idle states for a block on an SoC.Fig. 8-1 is a flow chart illustrating an example process of collecting operating conditions of a block on an SoC for dynamically managing idle states for the block.Fig. 9 is a flow chart illustrating an example process of dynamically managing idle states for a block on an SoC.Fig. 10 is a flow chart illustrating an example process of dynamically managing idle states for a block on an SoC.DETAILED DESCRIPTIONOverview

[0011] Current power management systems use an idle duration prediction that estimates how long a block of the SoC will be idle for an upcoming idle period. The power management system then utilizes an idle duration threshold for the block. The idle duration threshold indicates if it is more efficient for the block to enter the clock-gating idle state or the power-gating idle state based on the estimated duration of the idle period. The clocking-gating idle state is considered alighter idle state, and the power-gating idle state is considered a deeper idle state. Typically, the idle duration threshold indicates that for an idle duration that is less than the idle duration threshold it would be more efficient to enter a lighter idle state and for an idle duration that exceeds the idle duration threshold it would be more efficient for the block to enter a deeper idle state. A block will consume more energy to transition to the deeper idle state (e.g., the power-gating idle state) than to transition to the lighter idle state (e.g., clock -gating idle state). On the other hand, the block will consume less power while in the deeper idle state (e.g., the power-gating idle state) than the block will consume while in the lighter idle state (e.g., the clock-gating idle state). Idle duration thresholds are constant values coded into the power management system for each block having idle states. The idle duration threshold is typically derived or determined for each block of interest of an SoC while the block is operating at specific conditions. Typically, the specific operating conditions correspond to the block operating at what are considered normal operating conditions.

[0012] A static idle duration threshold is typically a fixed value coded into the power management system. An idle duration threshold was determined for blocks on the SoC for one set of operating conditions, which is typically a set of the normal operating conditions. The idle duration threshold indicates an idle duration at which a block will consume the same amount of energy if the block enters the first idle state (e.g., the lighter idle state) or the block enters the second idle state (e.g., the deeper idle state). If graphically represented, the power consumption for a block entering and remaining in the first idle state comprises a first line segment having a first slope for the transition period and a second line segment having a second slope for the period that the block remains in the first idle state. Likewise, the power consumption for a block entering and remaining in the second idle state, if graphically represented, comprises a third line segment having a third slope for the transition period and a fourth line segment having a fourth slope for the period that the block remains in the first idle state. The idle duration threshold is the point at which the energy consumption line having the second slope that represents the block in the first idle state crosses with the energy consumption line having the fourth slope that represents the block in the second idle state.

[0013] For example, the idle duration threshold may be statically set at 2500 microseconds for a particular block within the SoC. If the predicted idle duration for that block is also 2500 microseconds, then it would not matter which idle state the block enters as, based on the static idle duration threshold, the block will consume the same amount of energy entering and exiting either idle state. For a predicted idle duration that is less than the idle duration threshold (e.g., 2500 microseconds), the block should enter the first idle state as the block will consume less energy' than if the block were to enter the second idle state. For a predicted idle duration that is greaterthan the idle duration threshold (e.g., 2500 microseconds), the block should enter the second idle state as the block will consume less energy than if the block were to enter the first idle state.

[0014] The static idle duration threshold was determined based on a single baseline operating condition for a block on the SoC. Depending on the current application running on the SoC, however, the static idle duration threshold may not accurately delineate which idle state a block should enter. Likewise, the static idle duration threshold may not accurately delineate which idle state a block should enter if the operating frequency, current, or voltage of the block differs from the normal operating conditions used to derive the static idle duration threshold. Another changing operating condition that may alter whether an idle duration threshold is accurate is the operating temperature. If the present operating temperature varies from the operating temperature used to determine the static idle duration threshold, the static idle duration threshold may not accurately identify which idle state a block on the SoC should enter.

[0015] Over time the “normal'’ operating conditions of an SoC may vary. The usage of the blocks on the SoC over time may change the “normal” operating conditions. Further, the “normal” operating conditions may also vary between two SoCs having the same design, or architecture, due to part-to-part variations. For example, one component on a first SoC may leak more current than the same component on a second SoC. As an individual part, or block, is manufactured, the block is tested by the manufacturer for current leakage. Blocks with identical circuit designs may have different current leakages but may still be used in identical products if the two blocks fall within the accepted specification for the product. The manufacturer records in non-volatile memory of the SoC the current leakage of the block at specified conditions based on the testing after the SoC has been manufactured.

[0016] As discussed herein, the idle duration thresholds used by present power management systems are static idle duration thresholds that were determined for different blocks based on using a specific set of operating conditions. However, the current operating conditions for an SoC may not coincide with the operating conditions used to determine the static idle duration threshold. There are multiple factors, such as the present current, voltage, operating frequency, and / or operating temperature, that can alter the suitable idle duration threshold for a block on an SoC. Additionally, part-to-part variation for SoCs having the identical design configuration, or architecture, may negatively affect the accuracy of the static idle duration threshold for a block. Thus, a static idle duration threshold may not accurately indicate which idle state a block should enter for a predicted idle duration. An idle state manager that dynamically generates an idle duration threshold for a block can overcome this problem.

[0017] For example implementations, this document describes dynamically adapting the power management of a block on an SoC for an idle duration prediction for the block. When ablock is about to become idle, the block may enter a first idle state (e.g., a clock-gating idle state) or a second idle state (e.g., a power-gating idle state). This document details that operating conditions of the block are repeatedly (e.g., periodically or aperiodically) collected and used to calculate a first total energy consumption prediction of the first idle state and a second total energy consumption prediction of the second idle state. An energy overhead estimator may repeatedly collect the operating conditions and calculate the first total energy consumption prediction and the second total energy consumption prediction based on the collected operating conditions. This document details that the operating conditions may include determining a voltage or a current of the block, determining an operating frequency of the block, obtaining a current leakage of the block (e.g., reading a current leakage of the block from non-volatile memory of the SoC), and / or measuring an operating temperature of the block. It will be understood that references herein to collecting operating conditions may be understood to mean collecting data indicative of operating conditions. Similarly, subsequent processing of the collected operating conditions (e.g., calculating based on collected operating conditions) may be understood to mean performing a calculation based on the collected data indicative of operating conditions. Further, reading a current leakage from a non-volatile memory', may be understood to be equivalent to reading data indicating a current leakage. That is, the non-volatile memory may store data indicating a current leakage. Similarly, measuring an operating temperature of the block may’ comprise generating data indicative of the operating temperature of the block. Further still, determine a voltage, a current, or an operating frequency of the block may comprise generating data indicative of the voltage, the current, or the operating frequency of the block. Such generated or otherwise obtained data (e.g. data indicative of a voltage, a current, an operating frequency, an operating temperature, and / or a current leakage) may be considered to be data indicative of operating conditions. Such data may alternatively be referred to as operating conditions.

[0018] This document details that an idle duration threshold can be dynamically calculated based on the first total energy consumption prediction and the second total energy consumption prediction. In some cases, the first total energy consumption prediction includes a predicted energy consumption of the block entering the first idle state, a predicted energy consumption of the block in the first idle state, and a predicted energy' consumption of the block exiting the first idle state. The second total energy consumption prediction includes a predicted energy' consumption of the block entering the second idle state, a predicted energy consumption of the block in the second idle state, and a predicted energy' consumption of the block exiting the second idle state. A dynamically7calculated idle duration threshold is more efficient than a statically determined idle duration threshold because the dynamically calculated idle duration threshold is determined based on the present operating conditions of the block instead of on one set of (e.g.,the expected normal) operating conditions. The normal operating conditions that were used to previously determine a static, or set, idle duration threshold may no longer be the “normal” operating conditions of the block or may not be applicable to the present applications being executed by the block on the SoC.

[0019] This document further details that the power management system can determine if the block should enter the first idle state or the second idle state based on a dynamically calculated idle duration threshold and the idle duration prediction. The dynamic idle-state manager of the power management system may make this determination. This document also describes using feedback to calibrate the first and second total energy consumption predictions used to dynamically determine the idle duration threshold. A power monitor may be used to determine the actual energy consumption of a block at least as it enters and operates in an idle state. The measured actual energy consumption may be compared to the predicted total energy consumption to then minimize the differences between the actual consumption and the predicted consumption over time. These and other implementations are described herein.Example Environments and Electronic Devices

[0020] Fig. 1 illustrates an example environment 100 including an apparatus, also referred to herein as a mobile device, 102. The apparatus 102 includes an SoC 104, which includes at least a CPU 106, a GPU 108, a TPU 110, and a dynamic idle-state manager 120. The dynamic idle- state manager 120 of the SoC 104 is configured to dynamically manage the idle states of blocks such as the CPU 106, the GPU 108, and the TPU 110 that are on the SoC 104 of the apparatus 102. In implementations, the instructions for dynamically managing the idle state of blocks of the SoC are as described herein.

[0021] The dynamic idle-state manager 120 is configured to manage the idle states based on operating conditions of the SoC 104. Based on the operating conditions, the dynamic idle-state manager 120 is configured to dynamically update, or change, idle state thresholds that determine an idle state a block should enter for an idle duration as detailed herein.

[0022] In this example, the apparatus 102 is depicted as a smartphone. The apparatus 102 may, however, be implemented as any suitable computing or other electronic device. Examples of the apparatus 102 include a mobile electronic device or mobile device, mobile communication device, modem, cellular or mobile phone, mobile station, gaming device, navigation device, media or entertainment device (e.g., a media streamer or gaming controller), laptop computer, desktop computer, tablet computer, smart appliance, vehicle-based electronic system, wearable computing device (e.g., clothing, watch, or reality-altering glasses), Internet of Things (loTs) device, sensor, stock management device, electronic portion of a machine or piece of equipment (e.g., vehicle orrobot), memory storage device (e.g., a solid-state drive (SSD)), server computer or portion thereof (e.g., a server blade or rack or another part of a datacenter), and the like. Illustrated examples of the apparatus 102 include a tablet device 102-1, a smart television 102-2, a desktop computer 102- 3, a server computer 102-4, a smartwatch 102-5, a smartphone (or document reader) 102-6, and intelligent glasses 102-7.

[0023] In example implementations, the apparatus 102 includes the SoC 104 that is the brains of the apparatus 102. The SoC 104 is typically a complex chip that includes a number of different components, such as processors, memory', encryption engines, and high-speed input and output. The SoC 104 typically comprises a single integrated circuit. The integrated circuit can be part of, or realized as, a chip, a package, a module, an assembly, or at least one printed circuit board (PCB) (not shown). Examples of a PCB include a flexible PCB, a rigid PCB, a single- or multi-layered PCB, a surface-mounted or through-hole PCB, combinations thereof, and so forth. One or more integrated circuit (IC) chips can be mounted on a PCB. Each IC chip can be realized as a general-purpose processor, a microcontroller, an application-specific IC (ASIC), and so forth. Other examples of IC chips include a security-oriented IC chip, a memory chip, a communications IC chip (e.g., a modem or radio-frequency IC), a graphics processor, an artificial intelligence (Al) accelerator, sensor chips, combinations thereof, and so forth. Sensor chips may include, for example, an accelerometer, a camera or other light sensor, a satellite positioning system (e.g., a Global Positioning System (GPS)) chip, and the like. An integrated circuit chip can be packaged alone or together with other IC chips. Although some of this disclosure refers to utilizing techniques in conjunction with an SoC, the invention is not so limited. For example, a dynamic idle-state manager 120 as described herein can be included in other circuits, such as any integrated circuit or chip that includes blocks that enter different idle states.Example Apparatuses, Systems, and Operational Schemes

[0024] Fig. 2 illustrates a schematic 200 of one implementation of a dynamic idle-state manager 120. The dynamic idle-state manager 120 is used by a power management system of an SoC 104 to determine which idle state a block on the SoC 104 should enter when idle, as discussed herein. The dynamic idle-state manager 120 includes an energy overhead estimator 210 and an idle duration threshold adjuster 220. The energy overhead estimator 210 is configured to repeatedly collect operating conditions of a block, such as a CPU 106, a GPU 108, or a TPU 110 on the SoC 104. The energy' overhead estimator 210 may be configured to schedule the repeated collection of the operating conditions of the block while the block is active. Alternatively, the dynamic idle-state manager 120 or a component of the dynamic idle-state manager 120. such asthe idle duration threshold adjuster 220, may instruct the energy overhead estimator 210 to schedule the repeated collection of the operating conditions of the block while the block is active.

[0025] The energy overhead estimator 210 may be configured to read a current leakage of the block. For example, the energy overhead estimator 210 may include a first module configured to read, from non-volatile memory on the SoC 104, a cunent leakage for the block (or data indicative of current leakage for the block). The energy overhead estimator 210 may be configured to determine a present voltage, current, or operating frequency of the block (or data indicative of a present voltage, current, or operating frequency of the block). For example, the energy overhead estimator 210 may include a second module configured to determine a present voltage, current, or operating frequency of the block. The energy overhead estimator 210 may be configured to determine an operating temperature of the block. For example, the energy overhead estimator 210 may include a third module configured to measure the present operating temperature of the block. The third module may thus generate data indicative of the operating temperature of the block.

[0026] The energy overhead estimator 210 may include a fourth module configured to append a first time to the current leakage read by the first module. The first time may be the time at which the current leakage is read from the non-volatile memory by the first module. The fourth module may be configured to append a second time to the voltage, current, or operating frequency determined by the second module. The second time may be the time at which the voltage, current, or operating frequency is determined by the second module. The fourth module may be configured to append a third time to the operating temperature measured by the third module. The third time may be the time at which the operating temperature is measured by the third module.

[0027] Based on the repeatedly collected operating conditions of the block, the energy overhead estimator 210 calculates a first total energy consumption prediction for a first idle state of the block. Based on the repeatedly collected operating conditions of the block, the energy' overhead estimator 210 also calculates a second total energy consumption prediction for a second idle state of the block. The energy overhead estimator 210 may be configured to schedule the calculation of the first total energy consumption prediction and the calculation of the second total energy' consumption while the block is active. Alternatively, the dynamic idle-state manager 120 or a component of the dynamic idle-state manager 120, such as the idle duration threshold adjuster 220, may instruct the energy overhead estimator 210 to schedule the calculation of the first total energy consumption prediction and the calculation of the second total energy consumption while the block is active.

[0028] The first idle state may be a lighter idle state, such as a clock-gating idle state, and the second idle state may be a deeper idle state, such as a power-gating idle state. The first totalenergy consumption prediction may include a predicted energy consumption of the block entering the first idle state, a predicted energy consumption of the block in the first idle state, and a predicted energy consumption of the block exiting the first idle state. The second total energy consumption prediction includes a predicted energy consumption of the block entering the second idle state, a predicted energy consumption of the block in the second idle state, and a predicted energy consumption of the block exiting the second idle state.

[0029] The idle duration threshold adjuster 220 dynamically calculates an idle duration threshold based on the first total energy' consumption prediction for the first idle state of the block and the second total energy consumption prediction for the second idle state of the block. In this way, the idle duration threshold adjuster 220 may be considered to calculate, or adjust, an idle duration threshold based on the collected operating conditions of the block. The idle duration threshold adjuster 220 may be configured to calculate the idle duration threshold while the block is active. Alternatively, the dynamic idle-state manager 120 may instruct the idle duration threshold adjuster 220 to calculate the idle duration threshold while the block is active.

[0030] The idle duration threshold is dynamically determined because the idle duration threshold is determined based on the present operating conditions of the block instead of a static idle duration threshold that is a fixed value based on normal operating conditions of an SoC at the time of manufacture. The idle duration threshold indicates the idle duration at which the block will consume approximately the same energy whether the block enters the first idle state or the second idle state. The idle duration threshold indicates a first range of durations for which the first idle state is more efficient than the second idle state and a second range of durations for which the second idle state is more efficient than the first idle state.

[0031] The power management system predicts, or determines, an idle duration of the block of the SoC 104. The predicted idle duration of the block may be based on scheduled interruptions of the block and previous workload patterns of the block. If the predicted idle duration is less than the dynamically calculated idle duration threshold, the power management system will instruct the block of the SoC 104 to enter the first, or lighter, idle state. If the predicted idle duration is greater than the dynamically calculated idle duration threshold, the power management system vvi 11 instruct the block of the SoC 104 to enter the second, or deeper, idle state. The power management system will instruct the block to enter the first idle state or the second idle state based on the predicted idle duration and the dynamically calculated idle duration threshold.

[0032] Fig. 3 illustrates a schematic 300 of one implementation of a dynamic idle-state manager 120. The dynamic idle-state manager 120 is used by a pow er management system of an SoC 104 to determine which idle state a block on the SoC 104 should enter w hen idle, as discussedherein. The dynamic idle-state manager includes an energy overhead estimator 210, an idle duration threshold adjuster 220, and an estimation v. measurement comparator 310.

[0033] As discussed herein, the energy overhead estimator 210 is configured to repeatedly collect operating conditions of a block, such as a CPU 106, a GPU 108, or a TPU 110 on the SoC 104. For example, the energy overhead estimator 210 may be configured to read a current leakage of the block from non-volatile memory on the SoC 104. The energy overhead estimator 210 may be configured to determine a present voltage, current, or operating frequency of the block. The energy overhead estimator 210 may be configured to determine an operating temperature of the block.

[0034] As discussed herein, the energy overhead estimator 210 calculates a first total energy consumption prediction for a first idle state of the block and a second total energy consumption prediction for a second idle state of the block based on the repeatedly collected operating conditions of the block. The first total energy consumption prediction may include a predicted energy consumption of the block entering the first idle state, a predicted energy consumption of the block in the first idle state, and a predicted energy consumption of the block exiting the first idle state. The second total energy consumption prediction includes a predicted energy consumption of the block entering the second idle state, a predicted energy' consumption of the block in the second idle state, and a predicted energy consumption of the block exiting the second idle state.

[0035] The idle duration threshold adjuster 220 dynamically calculates an idle duration threshold based on the first total energy consumption prediction and the second total energy' consumption prediction. As discussed herein, the idle duration threshold is dynamically determined instead of a static idle duration threshold that is a fixed value based on normal operating conditions of an SoC at the time of manufacture. The idle duration threshold indicates the idle duration at which the block will consume approximately the same energy whether the block enters the first idle state or the second idle state. The idle duration threshold indicates a first range of durations for which the first idle state is more efficient than the second idle state and a second range of durations for which the second idle state is more efficient than the first idle state.

[0036] As discussed herein, the power management system predicts, or determines, an idle duration of the block of the SoC 104. If the predicted idle duration is less than the dynamically calculated idle duration threshold, the power management system will instruct the block of the SoC 104 to enter the first, or lighter, idle state. If the predicted idle duration is greater than the dynamically calculated idle duration threshold, the power management system will instruct the block of the SoC 104 to enter the second, or deeper, idle state. The pow er management systemwill instruct the block to enter the first idle state or the second idle state based on the predicted idle duration and the dynamically calculated idle duration threshold.

[0037] This implementation of the dynamic idle-state manager 120 includes an estimation v. measurement comparator 310 that may be used to calibrate the first total energy’ consumption prediction and the second total energy consumption prediction provided by the energy overhead estimator 210. The estimation v. measurement comparator 310 is configured to measure the actual energy’ consumption of a block as it transitions into a specified idle state, remains in the idle state, and exits the idle state. The measured actual energy consumption is then compared to the total energy consumption prediction. For example, if the block entered the first idle state, the measured actual energy consumption would be compared to the first total energy’ consumption prediction. Likewise, if the block entered the second idle state, the measured actual energy' consumption would be compared to the second total energy consumption prediction. These comparisons may be provided as feedback to the energy’ overhead estimator 210 to calibrate the total energy’ consumption predictions to the actual energy consumption to refine the dynamically calculated idle duration thresholds provided by’ the idle duration threshold adjuster 220. The feedback may be used by the energy’ overhead estimator 210 to minimize the difference between the actual energy consumption of a block and the total energy consumption prediction provided by the energy overhead estimator 210.

[0038] Fig. 4 illustrates a flow diagram 400 for one implementation of a power management system to dynamically manage an idle state for a block on an SoC. The power management system includes an idle duration predictor 420. The idle duration predictor 420 estimates an idle duration prediction of a block on an SoC. The idle duration prediction is based on scheduled interruptions and / or events in software 410. The idle duration prediction may also be based on previous workload patterns of the block. The power management system includes an energy’ overhead estimator 210. The energy’ overhead estimator 210 provides a first total energy’ consumption prediction for a first idle state of the block based on SoC operating conditions 430. The energy overhead estimator 210 also provides a second total energy consumption prediction for a second idle state of the block based on the SoC operating conditions 430.

[0039] The power management system includes an idle duration threshold adjuster 220. The idle duration threshold adj uster 220 provides dynamic idle duration thresholds 440 based on the first total energy consumption prediction for the first idle state of the block and the second total energy consumption prediction for the second idle state of the block provided by the energy' overhead estimator 210. The power management system decides 450 which idle state to enter based on both the idle duration prediction provided by the idle duration predictor 420 and the dynamic idle duration thresholds 440 provided by the idle duration threshold adjuster 220. Adynamic idle-state manager 120 of the power management system may make the decision 450 on which idle state to enter. The block then enters an idle state 460. The block enters either the first idle state or the second idle state based on the decision 450 on which idle state to enter.

[0040] Fig. 5 illustrates a graph 500 that indicates the energy consumption by a block over a predicted idle duration for a first idle state 510 of the block and a second idle state 520 of the block. A first line segment representing the first idle state has a first slope, indicated at 510, which depicts the amount of energy’ consumed for the block to transition from an active state to the first idle state. A second line segment representing the second idle state has a second slope, indicated at 520, which depicts the amount of energy consumed for the block to transition from an active state to the second idle state. The first idle state may be a lighter idle state, such as a clock-gating state, and the second idle state may be a deeper idle state, such as a power-gating state. As depicted in Fig 5, the block may consume more energy transitioning to the second, deeper, idle state than transitioning to the first, lighter, idle state. A block will typically enter and exit a light idle state more quickly than the block enters and exits a deeper idle state.

[0041] Once the block has transitioned to the first idle state, Fig. 5 illustrates three (3) line segments 510-1, 510-2, 510-3 depicting the first idle state having three (3) different slopes. The three (3) different slopes depict differing operating conditions of the block on the SoC. For example, line segment 510-1 may depict the energy consumed by the block while in the first idle state while having a low operating temperature. Line segment 510-2 may depict the energy' consumed by the block while in the first idle state while having a medium operating temperature. Line segment 510-3 may depict the energy consumed by the block while in the first idle state while having a high operating temperature. Although the line segments 510-1, 510-2, 510-3 are described with differing operating temperatures, the block may consume different energy while in the first idle state for various operating conditions such as voltage, operating frequency, current, or current leakage.

[0042] Once the block has transitioned to the second idle state, Fig. 5 illustrates three (3) line segments 520-1, 520-2, 520-3 depicting the second idle state having three (3) different slopes. The three (3) different slopes depict differing operating conditions of the block on the SoC. For example, line segment 520-1 may depict the energy' consumed by the block while in the second idle state while having a low operating temperature. Line segment 520-2 may depict the energy' consumed by the block while in the second idle state while having a medium operating temperature. Line segment 520-3 may depict the energy consumed by the block while in the second idle state while having a high operating temperature. Although the line segments 520-1, 520-2, 520-3 are described with differing operating temperatures, the block may consumedifferent energy while in the second idle state for various operating conditions such as voltage, operating frequency, current, or current leakage.

[0043] Fig. 5 depicts three different idle duration thresholds 530-1, 530-2, and 530-3. A first idle duration threshold 530-1 may be calculated for a low operating condition. A second idle duration threshold 530-2 may be calculated for a medium operating condition. A third idle duration threshold 530-3 may be calculated for a high operating condition. These idle duration thresholds 530-1, 530-2, 530-3 may be dynamically determined based on the actual operating conditions of the block on the SoC. A power management system utilizing these dynamic idle duration thresholds may better decide which idle state a block should enter for a predicted idle duration.

[0044] Fig. 6 illustrates a flow diagram 600 for one implementation of a power management system to dynamically manage an idle state for a block on an SoC. The power management system includes an idle duration predictor 420. The idle duration predictor 420 estimates an idle duration prediction of a block on an SoC. The idle duration prediction is based on scheduled interruptions and / or events in software 410. The idle duration prediction may also be based on previous workload patterns of the block. The power management system includes an energy overhead estimator 210. The energy overhead estimator 210 provides a first total energy consumption prediction for a first idle state of the block based on SoC operating conditions 430. The energy overhead estimator 210 also provides a second total energy consumption prediction for a second idle state of the block based on the SoC operating conditions 430.

[0045] The power management system includes an idle duration threshold adjuster 220. The idle duration threshold adjuster 220 provides dynamic idle duration thresholds 440 based on the first total energy consumption prediction for the first idle state of the block and the second total energy consumption prediction for the second idle state of the block provided by the energy overhead estimator 210. The power management system decides 450 which idle state to enter based on both the idle duration prediction provided by the idle duration predictor 420 and the dynamic idle duration thresholds 440 provided by the idle duration threshold adjuster 220. A dynamic idle-state manager 120 of the power management system may make the decision 450 on which idle state to enter. The block then enters an idle state 460. The block enters either a first idle state or a second idle state based on the decision 450 on which idle state to enter.

[0046] The power management system includes a power monitor 610. The power monitor 610 monitors, or measures, the power, or energy, actually consumed by a block as it transitions to an idle state, remains in the idle state, and exits the idle state back to an active state. The actual power consumed by the block measured by the power monitor 610 may be sent to an estimation v. measurement comparator 310. The estimation v. measurement comparator 310 may be used tocalibrate the first total energy consumption prediction and the second total energy consumption prediction provided by the energy overhead estimator 210. The estimation v. measurement comparator 310 uses the actual energy consumption of the block measured by the power monitor 610 and compares the actual energy consumed to the first and second total energy consumption predictions. This comparison may be provided as feedback to the energy overhead estimator 210 to calibrate the total energy consumption predictions to the actual energy consumption to refine the dynamic idle duration thresholds 440 provided by the idle duration threshold adjuster 220. The feedback may be used by the energy overhead estimator 210 to minimize the difference between the actual energy consumption of a block and the total energy consumption prediction provided by the energy overhead estimator 210.

[0047] Fig. 7 illustrates a graph 700 that indicates a first total energy consumption prediction 710-1 for a block on an SoC 104 as the block transitions to and enters a first idle state. Fig. 7 also shows a first actual total energy consumption 710-2 for the block as it transitions to and enters the first idle state. Dashed vertical lines 720 indicate times at which a power monitor 610 took power, or energy, measurements as the block transitioned to and entered the first idle state. The total number of measurements by the power monitor 610 and the times at which the measurements are made may be varied and are shown in Fig. 7 for illustrative purposes. As indicated by both the first total energy consumption prediction 710-1 and the first actual total energy consumption 710-2, the block uses energy, or power, to transition to the first idle state as indicated by the portions of line segments beginning at the origin of the graph having a first slope. After the block enters the first idle state, the block uses energy', or power, at a different rate indicated by second portions of the line segments having a different slope than the transition period for the first total energy- consumption prediction 710-1 and the first actual total energyconsumption 710-2.

[0048] Fig. 7 illustrates that the first total energy' consumption prediction 710-1 may differ from the first actual total energy consumption 710-2 for the block as it transitions into and remains in an idle state. An estimation v. measurement comparator 310 of the power management system may use this data to provide feedback to an energy7overhead estimator 210. The energy- overhead estimator 210 may be calibrated using this feedback to minimize a difference between a total energy consumption prediction and the actual total energy consumed by the block to transition into and remain in an idle state.Example Methods

[0049] Example methods are described below with reference to the flow charts of Fig. 8, Fig. 8-1, Fig. 9, and Fig. 10. Although example method aspects are described separately below, they may be implemented together in any combination or permutation.

[0050] Fig. 8 is a flow chart 800 illustrating an example method for dynamically determining idle duration thresholds. The flow chart 800 includes six blocks 802-812. The operations of the example processes can be performed by electronic circuit components as described herein. For example, the operations may be performed by a dynamic idle-state manager of a power management system. The power management system may be managing the power of a mobile device.

[0051] At 802. an idle duration prediction, for of a block of a system-on-chip (SoC). is determined, the block associated wi th a first idle state and a second idle state. The block associated with a first idle state and a second idle state may alternatively be referred to as the block having a first idle state and a second idle state, or the block being operable in a first idle state and a second idle state. For example, an idle duration predictor 420 may predict, or generate, an idle duration based on schedule interruptions, events in software, and / or previous workload patterns of the block. At 804, operating conditions of the block (or data indicative thereof) are repeatedly collected. Example steps of collecting operating conditions are described below w ith reference to Fig. 8-1. In one implementation, an energy overhead estimator 210 is configured to repeatedly collect operating conditions of a block, such as a CPU 106, a GPU 108, or a TPU 110 on an SoC 104. The energy overhead estimator 210 may determine a voltage of the block, determine a current of the block, determine an operating frequency of the block, read a current leakage of the block, and / or measure an operating temperature of the block.

[0052] At 806, a first total energy’ consumption prediction of the first idle state is calculated based on the repeated collection of operating conditions of the block. For example, an energy overhead estimator 210 may calculate the first total energy consumption prediction of the first idle state. The first total energy consumption prediction may include a predicted energy' consumption of the block entering (e.g., transitioning to) the first idle state, a predicted energy’ consumption of the block in the first idle state, and a predicted energy consumption of the block exiting the first idle state.

[0053] At 808, a second total energy’ consumption prediction of the second idle state is calculated based on the repeated collection of operating conditions of the block. For example, an energy overhead estimator may calculate the second total energy consumption prediction of the second idle state. The second total energy consumption prediction may include a predicted energy' consumption of the block entering (e.g., transitioning to) the second idle state, a predicted energy'consumption of the block in the second idle state, and a predicted energy consumption of the block exiting the second idle state.

[0054] At 810, an idle duration threshold based on the first total energy consumption prediction and the second total energy consumption prediction is calculated. For example, an idle duration threshold adjuster 220 may dynamically calculate an idle duration threshold based on the first total energy consumption prediction for the first idle state of the block and the second total energy consumption prediction for the second idle state of the block.

[0055] At 812, a selection is made between at least the first idle state or the second idle state based on the idle duration threshold and the idle duration prediction. For example, a power management system or a component of the power management system, such as a dynamic idle- state manager 120, will compare the idle duration prediction with the idle duration threshold to determine what idle state the block should enter. If the idle duration prediction is less than the idle duration threshold, the decision will be made that the block should enter the first idle state as the block will consume less energy than if the block were to enter the second idle state. If the idle duration prediction is greater than the idle duration threshold, the decision will be made that the block should enter the second idle state as the block will consume less energy' than if the block were to enter the first idle state.

[0056] Fig. 8-1 is a flow chart 804-1 illustrating an example process for collecting operating conditions of a block on an SoC. The flow chart 804-1 includes five optional blocks 804-2 to 804-6. At 804-2, a voltage or current of the block may be optionally determined. At 804-3, an operating frequency of the block may be optionally determined. At 804-4, a current leakage of the block may be optionally read from non-volatile memory on the SoC. At 804-5, an operating temperature of the block may be optionally measured. At 804-6, a voltage of the block may be optionally determined, and an operating temperature of the block may be optionally measured.

[0057] Fig. 9 is a flow chart 900 illustrating an example method for calibrating a component of a dynamic idle-state manager. The flow chart 900 includes six blocks 902-912. At 902, a first idle state is entered with a block with the first idle state being a lighter idle state. At 904, the block remains in the first idle state for a period. At 906, the block exits the first idle state to an active state. At 908, a first actual total energy consumption is measured. For example, a power monitor 610 may be used to monitor the power, or energy, actually consumed by the block as it enters (e.g., transitions to) the first idle state, as the block remains in the first idle state, and as the block exits the first idle state to an active state.

[0058] At 910, the measured first actual total energy' consumption is compared with a first total energy consumption prediction. For example, an estimation v. measurement comparator 310may use the actual energy consumption of the block measured by the power monitor 610 and compare the actual energy consumed to a total energy consumption prediction provided by an energy7overhead estimator 210. At 912, an energy' overhead estimator is calibrated, based on the comparison, to reduce a difference between the measured first actual total energy consumption and the first total energy consumption prediction. For example, the estimation v. measurement comparator 310 may provide feedback to the energy overhead estimator 210 to minimize a difference between the first total energy consumption prediction and the measured first actual total energy consumed by the block.

[0059] Fig. 10 is a flow chart 1000 illustrating an example method for calibrating a component of a dynamic idle-state manager. The flow chart 1000 includes six blocks 1002-1012. At 1002, a second idle state is entered with a block with the second idle state being a deeper idle state. At 1004, the block remains in the second idle state for a period. At 1006, the block exits the second idle state to an active state. At 1008, a second actual total energy consumption is measured. For example, a power monitor 610 may be used to monitor the power, or energy, actually consumed by the block as it enters (e.g., transitions to) the second idle state, as the block remains in the second idle state, and as the block exits the second idle state to an active state.

[0060] At 1010, the measured second actual total energy consumption is compared with a second total energy consumption prediction. For example, an estimation v. measurement comparator 310 may use the actual energy' consumption of the block measured by the power monitor 610 and compare the actual energy' consumed to a total energy consumption prediction provided by an energy' overhead estimator 210. At 1012, an energy overhead estimator is calibrated, based on the comparison, to reduce a difference between the measured second actual total energy consumption and the second total energy consumption prediction. For example, the estimation v. measurement comparator 310 may provide feedback to the energy overhead estimator 210 to minimize a difference betw een the second total energy' consumption prediction and the measured second actual total energy consumed by the block.

[0061] An Soc may have more than two idle states. The methods and apparatus disclosed herein regarding the determination of an idle threshold for a first idle state and a second idle state are applicable for a third idle state as would be appreciated by one of ordinary' skill in the art having the benefit of this disclosure. Likewise, the methods and apparatus disclosed herein are applicable to an Nthidle state and a (N+l)thidle state as would be appreciated by one of ordinary’ skill in the art having the benefit of this disclosure.

[0062] For the methods described herein and the associated flow' chart(s) and flow diagram(s), the orders in which operations are shown and / or described are not intended to be construed as a limitation. Instead, any number or combination of the described method operationscan be combined in any order to implement a given method or an alternative method, including by combining operations from the flow chart or diagram and the earlier-described schemes and techniques into one or more methods. Operations may also be omitted from or added to the described methods. Further, described operations can be implemented in fully or partially overlapping manners.Example Aspects and Implementations of a Dynamic idle-state manager

[0063] In the following, some example aspects and implementations are descnbed:

[0064] Example aspect 1. A method comprising: determining an idle duration prediction for a block of a system-on-chip (SoC), the block having a first idle state and a second idle state; collecting, repeatedly, operating conditions of the block; calculating, based on the repeated collection of operating conditions of the block, a first total energy consumption prediction of the first idle state; calculating, based on the repeated collection of operating conditions of the block, a second total energy' consumption prediction of the second idle state; calculating an idle duration threshold based on the first total energy consumption prediction and the second total energy' consumption prediction; and selecting between at least the first idle state or the second idle state based on the idle duration threshold and the idle duration prediction.

[0065] Example aspect 2. The method of example aspect 1, wherein collecting, repeatedly, operating conditions of the block comprises determining a voltage or a current of the block.

[0066] Example aspect 3. The method of example aspect 1 or example aspect 2, wherein collecting, repeatedly, operating conditions of the block comprises determining an operating frequency of the block.

[0067] Example aspect 4. The method of any one of example aspects 1 to 3, wherein collecting, repeatedly, operating conditions of the block further comprises reading, from nonvolatile memory, a current leakage of the block.

[0068] Example aspect 5. The method of any one of example aspects 1 to 4, wherein collecting, repeatedly, operating conditions of the block further comprises measuring an operating temperature of the block.

[0069] Example aspect 6. The method of any one of example aspects 1 to 5, wherein collecting, repeatedly, operating conditions of the block further comprises determining a voltage of the block and measuring an operating temperature of the block.

[0070] Example aspect 7. The method of any one of example aspects 1 to 6, wherein determining the idle duration prediction is based on scheduled interrupts of the block and previous workload patterns of the block.

[0071] Example aspect 8. The method of any one of example aspects 1 to 7, wherein the first total energy consumption prediction includes a predicted energy consumption of the block entering the first idle state, a predicted energy consumption of the block in the first idle state, and a predicted energy consumption of the block exiting the first idle state.

[0072] Example aspect 9. The method of any one of example aspects 1 to 8. wherein the second total energy consumption prediction includes a predicted energy consumption of the block entering the second idle state, a predicted energy consumption of the block in the second idle state, and a predicted energy consumption of the block exiting the second idle state.

[0073] Example aspect 10. The method of any one of example aspects 1 to 9. wherein the idle duration threshold indicates a first range of durations for which the first idle state is more efficient than the second idle state, a first duration at which an efficiency of the first idle state is approximately equal to an efficiency of the second idle state, and a second range of durations for which the second idle state is more efficient than the first idle state.

[0074] Example aspect 11. The method of any one of example aspects 1 to 10, further comprising: scheduling the collecting operating conditions of the block repeatedly to be performed while the block is active; scheduling the calculating the first total energy consumption prediction of the first idle state while the block is active; scheduling the calculating the second total energy consumption prediction of the second idle state while the block is active; and scheduling the calculating the idle duration threshold while the block is active.

[0075] Example aspect 12. The method of any one of example aspects 1 to 11, wherein the first idle state is a lighter idle state than the second idle state and responsive to determining that the block should enter the first idle state, the method further comprises: entering, with the block, the first idle state; remaining, with the block, in the first idle state for a period; and exiting, with the block, the first idle state to an active state.

[0076] Example aspect 13. The method of any one of example aspects 1 to 12, further comprising: measuring a first actual total energy consumption, wherein the measured first actual total energy consumption includes an actual energy consumption of the block entering the first idle state, an actual energy consumption of the block while in the first idle state, and an actual energy consumption of the block exiting the first idle state; and comparing the measured first actual total energy consumption with the first total energy consumption prediction.

[0077] Example aspect 14. The method of any one of example aspects 1 to 13, further comprising calibrating, based on a comparison of the measured first actual total energy consumption with the first total energy consumption prediction, an energy overhead estimator to reduce a difference between the measured first actual total energy’ consumption and the first total energy consumption prediction.

[0078] Example aspect 15. The method of any one of example aspects 1 to 14, wherein the second idle state is a deeper idle state than the first idle state and responsive to determining that the block should enter the second idle state, the method further comprises: entering, with the block, the second idle state; remaining, with the block, in the second idle state for a period; and exiting, with the block, the second idle state to an active state.

[0079] Example aspect 16. The method of any one of example aspects 1 to 15, further comprising: measuring a second actual total energy' consumption, wherein the measured second actual total energy consumption includes an actual energy' consumption of the block entering the second idle state, an actual energy consumption of the block while in the second idle state, and an actual energy consumption of the block exiting the second idle state; and comparing the measured second actual total energy consumption with the second total energy consumption prediction.

[0080] Example aspect 17. The method of any one of example aspects 1 to 16, further comprising using an energy overhead estimator for calculating the first total energy’ consumption prediction of the first idle state and the second total energy consumption prediction of the second idle state.

[0081] Example aspect 18. The method of any one of example aspects 1 to 17, further comprising calibrating, based on a comparison of the measured second actual total energy' consumption with the second total energy consumption prediction, an energy overhead estimator to reduce a difference between the measured second actual total energy consumption and the second total energy' consumption prediction.

[0082] Example aspect 19. A non-transitoiy computer readable memory storing instructions which, when executed by one or more processors, cause the one or more processors to execute any one of the methods of example aspects 1 to 18.

[0083] Example aspect 20. An apparatus comprising: a system-on-chip (SoC), the SoC comprising a block having a first idle state and a second idle state. The SoC includes an idle duration predictor configured to generate an idle duration prediction of the block. The SoC includes an energy overhead estimator configured to: collect operating conditions of the block, calculate, for the block, a first total energy consumption prediction of the first idle state and calculate, for the block, a second total energy’ consumption prediction of the second idle state. The SoC includes an idle duration threshold adjuster configured to dynamically calculate an idle duration threshold of the block based on collected operating conditions from the energy’ overhead estimator. The SoC includes an idle state manager configured to select between at least the first idle state or the second idle state based on the idle duration prediction and the dynamically calculated idle duration threshold.

[0084] Example aspect 21. The apparatus of example aspect 20, further comprising: a power monitor configured to determine a first actual power consumed by the block as it enters, remains in, and exits the first idle state, or a second actual power consumed by the block as it enters, remains in, and exits the second idle state; and a feedback loop configured to connect the power monitor to the energy overhead estimator, wherein the energy overhead estimator is configured to be calibrated to reduce a difference based on a comparison of the first actual power consumed by the block with the first total energy' consumption prediction or to reduce a difference based on a comparison of the second actual power consumed by the block with the second total energy consumption prediction.

[0085] Example aspect 22. The apparatus of example aspect 20 or example aspect 21, wherein the idle duration threshold adjuster is further configured to schedule the energy' overhead estimator to collect operating conditions of the block while the block is in an active state.

[0086] Example aspect 23. The apparatus of any one of example aspects 20 to 22, wherein the idle duration threshold adjuster is further configured to schedule the energy’ overhead estimator to calculate the first total energy consumption prediction of the first idle state and the second total energy consumption prediction of the second idle state of the block while the block is in the active state.

[0087] Example aspect 24. The apparatus of any one of example aspects 20 to 23, wherein the operating conditions collected by the energy overhead estimator are configured to include one or more of voltage, current, current leakage, operating frequency, or operating temperature.

[0088] Example aspect 25. The apparatus of any one of example aspects 20 to 24, wherein the first total energy consumption prediction includes a predicted energy consumption of the block entering the first idle state, a predicted energy consumption of the block as it is in the first idle state, and a predicted energy consumption of the block exiting the first idle state.

[0089] Example aspect 26. The apparatus of any one of example aspects 20 to 25, wherein the second total energy consumption prediction of the second idle state includes a predicted energy consumption of the block entering the second idle state, a predicted energy consumption of the block as it is in the second idle state, and a predicted energy consumption of the block exiting the second idle state.

[0090] Example aspect 27. The apparatus of any one of example aspects 20 to 26, wherein, for the block, the idle duration threshold adjuster is configured to generate a first idle duration threshold for a first measured operating temperature, a second idle duration threshold for a second measured operating temperature, and a third idle duration threshold for a third measured operating temperature, wherein the first measured operating temperature, the second measuredoperating temperature, and the third measured operating temperature are each a different temperature.

[0091] Example aspect 28. The apparatus of any one of example aspects 20 to 27, wherein, for the block, the idle duration threshold adjuster is configured to generate a first idle duration threshold for a first measured operating voltage, a second idle duration threshold for a second measured operating voltage, and a third idle duration threshold for a third measured operating voltage, the first measured operating voltage, the second measured operating voltage, and the third measured operating voltage each being a different voltage.

[0092] Example aspect 29. The apparatus of any one of example aspects 20 to 28, wherein, for the block, the idle duration threshold adjuster is configured to generate a first idle duration threshold for a first obtained current leakage, a second idle duration threshold for a second obtained current leakage, and a third idle duration threshold for a third obtained current leakage, the first obtained current leakage, the second obtained current leakage, and the third obtained cunent leakage each being a different level of cunent leakage.

[0093] Example aspect 30. The apparatus of any one of example aspects 20 to 29, wherein the energy overhead estimator further comprises: a first module configured to read, from nonvolatile memory on the SoC, a cunent leakage for the block; a second module configured to determine the voltage, cunent. or operating frequency of the block; and a third module configured to measure the operating temperature of the block.

[0094] Example aspect 31. The apparatus of any one of example aspects 20 to 30, wherein the energy overhead estimator further comprises: a fourth module configured to: append a first time to the current leakage read by the first module; append a second time to the voltage or operating frequency determined by the second module; and append a third time to the operating temperature measured by the third module.

[0095] Unless context dictates otherwise, use herein of the word “or” may be considered use of an “inclusive or,” or a term that pennits inclusion or application of one or more items that are linked by the word “or” (e.g., a phrase “A or B” may be interpreted as permitting just “A,” as permitting just “B,” or as permitting both “A” and “B”). Also, as used herein, a phrase referring to “at least one of’ a list of items refers to any combination of those items, including single members. For instance, “at least one of a, b, or c” can cover a, b, c, a-b, a-c, b-c, and a-b-c, as well as any combination with multiples of the same element (e.g., a-a. a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, and c-c-c, or any other ordering of a, b, and c). Further, items represented in the accompanying figures and terms discussed herein may be indicative of one or more items or terms, and thus reference may be made interchangeably to single or plural forms of the items and terms in this written description.

[0096] Although implementations for a dynamic idle-state manager have been described in language specific to certain features and / or methods, the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations for a dynamic idle-state manager.

Claims

CLAIMSWhat is claimed is:

1. A method comprising: determining an idle duration prediction for a block of a system-on-chip (SoC), the block having a first idle state and a second idle state; collecting operating conditions of the block repeatedly; calculating, based on the repeated collection of operating conditions of the block, a first total energy consumption prediction of the first idle state; calculating, based on the repeated collection of operating conditions of the block, a second total energy consumption prediction of the second idle state; calculating an idle duration threshold based on the first total energy consumption prediction and the second total energy consumption prediction; and selecting between at least the first idle state or the second idle state based on the idle duration threshold and the idle duration prediction.

2. The method of claim 1, wherein collecting operating conditions of the block repeatedly comprises: determining a voltage, an operating frequency, or a current of the block; reading, from non-volatile memory, a current leakage of the block; or measuring an operating temperature of the block.

3. The method of claims 1 or 2, wherein: the first total energy consumption prediction comprises: a predicted energy consumption of the block entering the first idle state; a predicted energy consumption of the block in the first idle state; and a predicted energy consumption of the block exiting the first idle state; and the second total energy consumption prediction comprises: a predicted energy consumption of the block entering the second idle state; a predicted energy consumption of the block in the second idle state; and a predicted energy consumption of the block exiting the second idle state.

4. The method of claims 1, 2, or 3, wherein the idle duration threshold indicates: a first range of durations for which the first idle state is more efficient than the second idle state; a first duration at which an efficiency of the first idle state is approximately equal to an efficiency of the second idle state; and a second range of durations for which the second idle state is more efficient than the first idle state.

5. The methods of claims 1 to 4, further comprising: scheduling the collecting operating conditions of the block repeatedly to be performed while the block is active; scheduling the calculating the first total energy consumption prediction of the first idle state while the block is active; scheduling the calculating the second total energy consumption prediction of the second idle state while the block is active; and scheduling the calculating the idle duration threshold while the block is active.

6. The method of any preceding claim, wherein the first idle state is a lighter idle state than the second idle state, and responsive to determining that the block should enter the first idle state, the method further comprises: entering, with the block, the first idle state; remaining, with the block, in the first idle state for a period; and exiting, with the block, the first idle state to an active state.

7. The method of claim 6, further comprising: measuring a first actual total energy consumption; and comparing the measured first actual total energy consumption with the first total energy consumption prediction, wherein the measured first actual total energy consumption includes: an actual energy' consumption of the block entering the first idle state; an actual energy consumption of the block while in the first idle state; and an actual energy consumption of the block exiting the first idle state.

8. The method of claim 7, further comprising: calibrating, based on a comparison of the measured first actual total energy consumption with the first total energy consumption prediction, an energy overhead estimator to reduce a difference between the measured first actual total energy consumption and the first total energy’ consumption prediction.

9. The method of any preceding claim, wherein the second idle state is a deeper idle state than the first idle state, and responsive to determining that the block should enter the second idle state, the method further comprises: entering, with the block, the second idle state; remaining, with the block, in the second idle state for a period; and exiting, with the block, the second idle state to an active state.

10. The method of claim 9, further comprising: measuring a second actual total energy7consumption; and comparing the measured second actual total energy’ consumption with the second total energy consumption prediction, wherein the measured second actual total energy consumption includes: an actual energy consumption of the block entering the second idle state; an actual energy consumption of the block while in the second idle state; and an actual energy7consumption of the block exiting the second idle state.

11. The method of claim 10, further comprising: calibrating, based on a comparison of the measured second actual total energy’ consumption with the second total energy consumption prediction, an energy7overhead estimator to reduce a difference between the measured second actual total energy consumption and the second total energy7consumption prediction.

12. A non-transitory computer readable memory storing instructions which, when executed by one or more processors, cause the one or more processors to execute any one of the methods of claims 1 to 11.

13. An apparatus comprising: a system-on-chip (SoC), the SoC comprising: a block having a first idle state and a second idle state; an idle duration predictor configured to generate an idle duration prediction for the block; an energy overhead estimator configured to: collect operating conditions of the block; calculate, for the block, a first total energy consumption prediction of the first idle state; and calculate, for the block, a second total energy consumption prediction of the second idle state; an idle duration threshold adjuster configured to dynamically calculate an idle duration threshold of the block based on collected operating conditions from the energy overhead estimator; and an idle state manager configured to select between at least the first idle state or the second idle state based on the idle duration prediction and the dynamically calculated idle duration threshold.

14. The apparatus of claim 13, wherein the SoC further comprises: a power monitor configured to: determine a first actual power consumed by the block as it enters, remains in, and exits the first idle state; or determine a second actual power consumed by the block as it enters, remains in, and exits the second idle state; and a feedback loop configured to connect the power monitor to the energy overhead estimator, wherein the energy overhead estimator is configured to be calibrated to: reduce a difference based on a comparison of the first actual power consumed by the block with the first total energy consumption prediction; or reduce a difference based on a comparison of the second actual power consumed by the block with the second total energy consumption prediction.

15. The apparatus of claim 14, wherein: the first total energy consumption prediction comprises: a predicted energy consumption of the block entering the first idle state; a predicted energy consumption of the block as it is in the first idle state; and a predicted energy consumption of the block exiting the first idle state; and the second total energy consumption prediction comprises: a predicted energy consumption of the block entering the second idle state; a predicted energy consumption of the block as it is in the second idle state; and a predicted energy consumption of the block exiting the second idle state.

Citation Information

Patent Citations

  • Sleep mode latency scaling and dynamic run time adjustment

    US20130290758A1

  • Early cache prefetching in preparation for exit from idle mode

    US20160321183A1