Low power state selection based on idle duration history

By monitoring and predicting sleep state durations, the system optimally selects sleep states in processing devices, addressing inefficiencies in conventional systems by directly transitioning to deeper states when beneficial, thereby enhancing energy efficiency and reducing performance costs.

JP7745644B2Active Publication Date: 2025-09-29ADVANCED MICRO DEVICES INC +1
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023556943
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-03-31
Filing Date
2022-03-29
Publication Date
2025-09-29
Estimated Expiration
2042-03-29

AI Technical Summary

Technical Problem

Conventional sleep state management systems in processing devices suffer from inefficiencies due to hysteresis durations that are too long, leading to energy waste and performance penalties, as they lack adaptive approaches and have many tunable parameters, often failing to transition components to optimal sleep states based on accurate duration predictions.

Method used

A system and method that monitors and records sleep state durations to generate historical information, predicts the next sleep state duration, and selects an appropriate sleep state based on break-even durations, allowing direct transitions to deeper sleep states when beneficial, using feedback mechanisms to adjust predictions and reduce errors.

Benefits of technology

Improves energy efficiency by minimizing energy consumption during hysteresis periods and optimizing sleep state transitions, reducing performance costs by directly transitioning to deeper sleep states when warranted, thus enhancing overall power management.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007745644000002
    Figure 0007745644000002
  • Figure 0007745644000003
    Figure 0007745644000003
  • Figure 0007745644000004
    Figure 0007745644000004
Patent Text Reader

Abstract

The device (100) comprises a processor (102), a sleep state duration prediction module (404), and a system management unit (316). The sleep state duration prediction module is configured to predict a sleep state duration (416) of a component of the device. The system management unit transitions the component to a selected sleep state from a plurality of sleep states based on a comparison of the predicted sleep state duration to at least one duration threshold. Each sleep state of the plurality of sleep states is a lower power state than a previous sleep state of the plurality of sleep states.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Modern computer systems can typically support several power management states. The active system state generally represents a state in which the system is fully available and fully powered. Under some conditions, such as when some or all of the system components are not in use, the power of some or all of the components is reduced by entering a low-power system state from the active state.

[0002] The present disclosure may be better understood, and its numerous features and advantages made apparent to those skilled in the art by referencing the accompanying drawings, in which: The use of the same reference numbers in different drawings indicates similar or identical items. [Brief explanation of the drawings]

[0003] [Figure 1] FIG. 1 is a block diagram of an exemplary processing device according to some embodiments. [Figure 2] FIG. 2 is a block diagram illustrating additional details of the processing device of FIG. 1, in accordance with some embodiments. [Figure 3] FIG. 1 is a block diagram of an exemplary system-on-chip device according to some embodiments. [Figure 4] FIG. 2 is a block diagram of an exemplary system management unit according to some embodiments. [Figure 5] FIG. 1 is a flow diagram illustrating an overall exemplary method for directly transitioning components of a processing device to a deeper sleep state, according to some embodiments. [Figure 6] 5 is a flow diagram illustrating a more detailed method for the duration monitoring process shown in block 502 of FIG. 5, according to some embodiments. [Figure 7] FIG. 10 illustrates an example timing sequence for two different sleep states, according to some embodiments. [Figure 8]5 is a flow diagram illustrating a more detailed method for the duration prediction process shown in block 504 of FIG. 5, according to some embodiments. [Figure 9] 5 is a flow diagram illustrating a more detailed method for the sleep state selection process shown in block 506 of FIG. 5, according to some embodiments. [Figure 10] 5 is a flow diagram illustrating a more detailed method for the sleep state promotion process shown in block 510 of FIG. 5, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0004] Components within a processing device, such as a central processing unit (CPU), graphics processing unit (GPU), and accelerated processing unit (APU), can operate in different power management states that allow portions of the processing device to be deactivated or to operate at a lower operating frequency or voltage. For example, power management states available to processing device components may include an active state, an idle state, a power-gated state, etc. In an active state, the component executes instructions and operates at a nominal operating frequency and operating voltage. In an idle state, the component does not execute instructions and can operate at a lower operating frequency or operating voltage. In a power-gated state, power is disconnected from the component, for example, by using a header transistor that cuts off power supplied to the component when a power-gated signal is applied to the gate of the header transistor. The idle and power-gated states may be referred to as sleep states, and multiple levels of sleep states may be implemented by a processing device. In at least some implementations, while in the lowest (lightest) sleep state level, a processing device component consumes less power than when operating in an active state, but consumes more power than the next highest (deepest) sleep state level. When a component is placed in the highest (deepest) sleep state level, the component is typically power gated.

[0005] A processing device can save power by transitioning one or more components from an active state to a sleep state when there is no activity performed by the components of the processing device. For example, if a component is idle for a relatively long period of time, power supplied to the component can be gated to reduce standby and leakage power consumption. However, transitioning a processing device or its components between different sleep states has a significant impact on the energy consumed by the processing device and the performance of the processing device. For example, transitioning to or from a sleep state from either an active state or a deeper sleep state level imposes a performance cost due to the delay caused by the transition. Energy costs may also be incurred due to operations performed before the transition. A performance cost is also incurred for a component to return a processor core to an active state from a power-gated deep sleep level state. Therefore, a deeper sleep state is more efficient than a lighter sleep state only if the component is placed in the deeper sleep state long enough so that the power savings associated with the deeper sleep state exceed the power consumed during the entry and exit transitions into and from the deeper sleep state.

[0006] A sleep state management system / algorithm can benefit from determining an appropriate sleep state level based on the break-even cost of energy performance versus sleep duration. However, a priori knowledge of how long a sleep duration will be for a component is typically not available. Therefore, many conventional sleep state management systems attempt to filter sleep durations that are too short by introducing a hysteresis duration before saving the state of a component being put to sleep. Introducing a hysteresis duration usually results in energy inefficiency because the hysteresis duration is typically too long (e.g., on the order of milliseconds). Sleep durations for many types of workloads are generally in the sub-millisecond range, occasionally followed by longer sleep durations in the millisecond range. Therefore, a long entry hysteresis results in shorter sleep durations (e.g., sub-millisecond) being ignored and entry into a deeper sleep state for each single sleep request (zero entry hysteresis). Additionally, conventional sleep state management systems typically have many tunable parameters, a non-adaptive approach to sleep state entry, lack a framework for future improvements / extensions, and may be controlled by operating system power management algorithms, all of which characteristics further increase the inefficiencies of conventional sleep state management systems.

[0007] This disclosure describes embodiments of systems and methods for improving the energy efficiency of a processing device by transitioning components directly to deeper sleep states instead of consuming energy during an entry hysteresis period. As described in more detail below, sleep state durations of a processing device and its components are monitored and recorded to generate historical sleep state duration information. The historical sleep duration information is used to predict the component's next sleep state duration. A break-even duration is determined for one or more sleep states available to the component. The break-even duration indicates the sleep state duration for which the benefits of transitioning to the sleep state exceed the costs of transitioning to the sleep state. The predicted sleep duration is compared to the determined break-even durations for the one or more sleep states, and a sleep state for the component is selected based on this comparison. The component is then transitioned to the selected sleep state. In at least some embodiments, a component's current sleep state is promoted to a deeper sleep state if the component remains in the current sleep state for a duration that meets one or more sleep state duration thresholds. In at least some embodiments, a decision error feedback mechanism is implemented to subsequently adjust the predicted sleep duration to reduce errors in sleep state selection based thereon. Also, in at least some embodiments, information such as Latency Tolerance Report (LTR) values ​​from input / output devices (e.g., peripheral component interconnect express (PCIe) devices, universal serial bus (USB) devices, etc.) or timer values ​​for Advanced Programmable Interrupt Controller (APIC) interrupts are used in addition to the predicted sleep duration to select a component's sleep state.

[0008] 1 is a block diagram of an example processing device 100 in which the power state management techniques described herein may be implemented. In at least some embodiments, processing device 100 comprises, for example, a computer, a mobile device, a gaming device, a tablet computing device, a wearable computing device, a set-top box, a television, or another type of computing system or device. Device 100, in at least some embodiments, comprises a processor 102, memory 104, storage 106, one or more input devices 108, and one or more output devices 110. Processing device 100, in at least some embodiments, also comprises an input driver 112 and an output driver 114. It should be understood that processing device 100 may include additional components not shown in FIG. 1 .

[0009] In at least some embodiments, processor 102 includes a central processing unit (CPU), a graphics processing unit (GPU), a CPU and a GPU located on the same die or on multiple dies (e.g., using a multi-chip-module (MCM)), or one or more processor cores, each processor core being a CPU or a GPU. Memory 104, in at least some embodiments, is located on the same die as processor 102 or is located separately from processor 102. Memory 104 includes volatile or non-volatile memory (e.g., random access memory (RAM), dynamic RAM (DRAM), cache, etc.).

[0010] Storage 106, in at least some embodiments, comprises fixed or removable storage devices such as a hard disk drive, solid state drive, optical disk, flash drive, etc. Input device 108, in at least some embodiments, comprises, for example, a keyboard, keypad, touch screen, touchpad, detector, microphone, accelerometer, gyroscope, biometric scanner, or network connection (e.g., a wireless local area network card for transmitting / receiving wireless signals), etc. Output device 110, in at least some embodiments, comprises, for example, a display, speaker, printer, haptic feedback device, one or more optics, antenna, or network connection (e.g., a wireless local area network card for transmitting / receiving wireless signals), etc.

[0011] In at least some embodiments, input driver 112 communicates with processor 102 and input device 108, enabling processor 102 to receive input from input device 108. Output driver 114, in at least some embodiments, communicates with processor 102 and output device 110, enabling processor 102 to send output to output device 110. Note that processing device 100 operates similarly without input driver 112 and output driver 114. Output driver 114, in at least some embodiments, includes an accelerated processing device (APD) 116 coupled to display device 118. The APD accepts computational and graphics rendering commands from processor 102, processes the computational and graphics rendering commands, and provides pixel output to display device 118 for display. As described in further detail below, APD 116 includes one or more parallel processing units that perform computations according to the single-instruction-multiple-data (SIMD) paradigm. Thus, although various functions are described herein as being performed by or in conjunction with APD 116, in other embodiments, the functions described as being performed by APD 116 are additionally or alternatively performed by other computing devices having similar capabilities that are not driven by a host processor (e.g., processor 102) to provide graphics output to display device 118. For example, in at least some embodiments, any processing system that performs processing tasks according to the SIMD paradigm performs the functions described herein. Alternatively, in at least some embodiments, computing systems that do not perform processing tasks according to the SIMD paradigm perform the functions described herein.

[0012] 2 is a block diagram of processing device 100 and illustrates additional details regarding the execution of processing tasks on APD 116. In at least some embodiments, processor 102 maintains, in memory 104, one or more control logic modules for execution by processor 102. The control logic modules, in at least some embodiments, comprise operating system 202, kernel mode driver 204, and application 206. These control logic modules control various aspects of the operation of processor 102 and APD 116. For example, operating system 202 communicates directly with hardware and provides an interface to the hardware for other software executing on processor 102. Kernel mode driver 204 controls the operation of APD 116, for example, by providing an application programming interface (API) for software executing on processor 102 (e.g., application 206) to access various features of APD 116. The kernel mode driver 204 also includes, in at least some embodiments, a just-in-time compiler that compiles programs for execution by processing components of the APD 116 (such as the SIMD unit 210, described in more detail below).

[0013] In at least some embodiments, APD 116 executes commands and programs for selected functions, such as graphics and non-graphics operations that may be suitable for parallel processing. In at least some embodiments, APD 116 is used to perform graphics pipeline operations (pixel operations, geometric calculations, etc.) and rendering of images to display device 118 based on commands received from processor 102. APD 116 also performs computational operations not directly related to graphics operations, such as operations related to video, physics simulation, computational fluid dynamics, or other tasks, based on commands received from processor 102.

[0014] The APD 116, in at least some embodiments, includes compute units 208 (shown as 208-1 through 208-3) that include one or more SIMD units 210 (shown as 210-1 through 210-6), which perform operations at the request of the processor 102 in a parallel manner according to the SIMD paradigm. The SIMD paradigm allows multiple processing elements to share a single program control flow unit and program counter, executing the same program but with different data. In one example, each SIMD unit 210 includes 16 lanes, each of which executes the same instruction simultaneously with other lanes in the SIMD unit 210, but may execute that instruction with different data. Lanes can be predictively switched off if not all lanes execute a given instruction. Prediction can also be used to execute programs with branching control flow. More specifically, for programs with conditional branches or other instructions where control flow is based on calculations performed by individual lanes, prediction of lanes corresponding to currently unexecuted control flow paths and serial execution of different control flow paths enables arbitrary control flow.

[0015] In at least some embodiments, the basic unit of execution within a compute unit 208 is a work item. Each work item represents a single instantiation of a program executing in parallel on a particular lane. Work items, in at least some embodiments, can execute simultaneously as a "wavefront" on a single SIMD unit 210. One or more wavefronts are included in a "workgroup," which contains a collection of work items designated to execute the same program. A workgroup is executed by executing each of the wavefronts that make up the workgroup. In some embodiments, these wavefronts execute sequentially on a single SIMD unit 210, or execute partially or fully in parallel on different SIMD units 210. A wavefront, in at least some embodiments, represents the largest collection of work items that can execute simultaneously on a single SIMD unit 210. Thus, if commands received from processor 102 indicate that a particular program is to be parallelized to such an extent that it cannot be executed simultaneously on a single SIMD unit 210, then the program is divided into wavefronts that are either parallelized on two or more SIMD units 210 or serialized (or both parallelized and serialized) on the same SIMD unit 210. Scheduler 212 performs operations related to scheduling the various wavefronts on the different compute units 208 and SIMD units 210.

[0016] The parallel processing provided by the compute units 208 is, in at least some embodiments, appropriate for graphics-related operations such as pixel value calculations, vertex transformations, and other graphics operations. Thus, in some cases, the graphics pipeline 214, which accepts graphics processing commands from the processor 102, provides computational tasks to the compute units 208 for execution in parallel.

[0017] In at least some embodiments, the compute unit 208 is used to perform computational tasks that are not related to graphics or that are not performed as part of the "normal" operation of the graphics pipeline 214 (e.g., custom operations performed to supplement processing performed on the operation of the graphics pipeline 214). An application 206 or other software executing on the processor 102 sends programs defining such computational tasks to the APD 116 for execution.

[0018] 3 is a block diagram illustrating another example of a processing device 300 in which the power management techniques described herein may be implemented. In the example shown in FIG. 3, the processing device 300 is a system-on-a-chip (SoC) device 300. In at least some embodiments, the SoC device 300 includes components such as a data fabric 302, a CPU core complex 304, a GPU 306, a multimedia processing unit (MPU) 308, a display interface 310, an I / O hub 312, a memory controller 314, and a system management unit (SMU) 316. One or more of these and other components may, in at least some embodiments, be composed of intellectual property (IP) blocks / cores, which are reusable units of logic, cells, or integrated circuit (IC) layouts.

[0019] In at least one embodiment, the data fabric 302 includes circuitry for providing communication interconnections between various components of the SoC device 300. Any suitable interconnection hardware may be used in various implementations. In some implementations, from a physical perspective, the data fabric 302 is implemented in a central location in the SoC device or distributed across multiple hubs throughout the SoC device 300 and interconnected using a suitable communication medium (e.g., a bus). From a logical perspective, the data fabric 302 is at the center of the data flow, and information regarding the idle states of different components (including IP blocks) of the SoC device 300 is centralized (e.g., stored) in the data fabric 302. In some implementations, this information is used by the SMU 316 to determine the appropriate time to transition one or more components of the SoC device 300 into a power management state, such as a sleep state.

[0020] In at least some embodiments, CPU core complex 304 includes one or more suitable CPU cores. In at least some embodiments, each of the cores in the complex includes a private cache, and all of the cores in the complex communicate with a shared cache. In at least some embodiments, SoC device 300 includes multiple CPU core complexes. GPU 306, in at least some embodiments, includes any suitable GPU or combination of GPU hardware. MPU 308, in at least some embodiments, includes one or more suitable MPUs, such as an audio co-processor, an image signal processor, a video codec, etc.

[0021] Display interface 310, in at least some embodiments, includes any suitable hardware for driving one or more displays. I / O hub 312, in at least some embodiments, includes any suitable hardware for interfacing data fabric 302 with I / O devices 318. I / O devices 318, in at least some embodiments, include one or more of a universal serial bus (USB), a peripheral component interconnect express (PCIe) bus, a non-volatile memory host controller interface (NVMe) bus, a serial advanced technology attachment (SATA) bus, a Gigabit Ethernet (xUBE), an inter-integrated circuit (I2C) bus, a secure digital (SD) interface, a general-purpose input / output (GPIO) connection, a sensor fusion I / O connection, and / or any other suitable I / O hardware. Thus, in at least some embodiments, I / O hub 312 includes a USB host controller, a PCIe root complex, an NVMe host controller, a SATA host controller, an xGBE interface, an I2C node, an SD host, a GPIO controller, a sensor fusion controller, and / or any other suitable I / O device interface.

[0022] Memory controller 314, in at least some embodiments, includes any suitable hardware for interfacing with memory 320. SMU 316, in at least some embodiments, comprises hardware and firmware for managing and accessing system configuration / status registers and memory, generating clock signals, controlling power rail voltages, and enforcing security access and policies for SoC device 300. In at least some embodiments, SMU 316 is interconnected with other blocks of SoC device 300 using a system management communications network (not shown). SMU 316 also, in at least some embodiments, manages the thermal and power state of CPU core complex 304 and other components of SoC device 300 (including individual IP blocks). Thus, SMU 316 can control the power supplied to components and subcomponents of the SoC device, such as the cores and IP blocks of CPU core complex 304. In at least some embodiments, SMU 316 is configured to adjust the operating points of SoC components (e.g., cores of CPU core complex 304) by changing the operating frequency or operating voltage supplied to the components.

[0023] In at least some embodiments, the SMU 316 is configured to transition components of the SoC device 300 into and out of one or more power management states. It should be noted that throughout this description, references to transitioning components of the SoC device 300 into and out of one or more power management states include transitioning the entire SOC device 300, an entire component such as the CPU core complex 304, the GPU 306, the MPU 308, or the I / O hub 312, or a subcomponent of a component such as a core or IP block of the CPU core complex 304. Examples of power management states include an active state and one or more sleep states, such as an idle state and a power-gated state. A sleep state may also be referred to as a low-power state or a lower power state. In an active state, a component executes instructions and operates at a nominal operating frequency and operating voltage. In a sleep state, a component typically does not execute or operate instructions and can operate at a lower operating frequency / voltage. Additionally, a component may be power-gated in a sleep state such that power is disconnected from the component. For example, the SMU 316 issues signals or commands to gating logic connected to a power supply. In this example, the gating logic controls the power supplied to the component and gates the power by opening one or more circuits to block the flow of current to the component. In at least some embodiments, multiple levels of sleep states are implemented. As the sleep state level increases, less power is consumed by the component than at the previous sleep state level. The lowest sleep state level can be referred to as the lightest sleep state, and the highest sleep state level can be referred to as the deepest sleep state. A lighter sleep state is a lower-power sleep state than a deeper (higher-power) sleep state. By transitioning a component into one or more sleep states, power can be conserved.

[0024] Deeper sleep states may save more power than lighter sleep states, but deeper sleep states typically impose performance and power penalties in transition durations. For example, consider a set of sleep states S = {S1, S2, S3, ..., Sn}, where Sn is the deepest sleep state supported by the platform. For a component to enter the third sleep state S3, the component typically first enters the first sleep state S1, then transitions to the second sleep state S2, and then enters the third sleep state S3, according to a logical sequence of powering down the component and its subcomponents. Similarly, to transition from the third sleep state S3 to the active state, the component typically sequentially transitions from the third sleep state S3 to the second sleep state S2, then from the second sleep state S2 to the first sleep state S1, and then enters the active state. Entering each of these sequential sleep states consumes both time and power. More specifically, transitions into and out of each sleep state involve various actions performed by SMU 316, which require extra time and power for such transitions. Deeper sleep states require more (or more resource-intensive) actions for entry and exit than lighter sleep states. Deeper sleep states also typically take longer to recover to an active / working state than lighter sleep states, and therefore incur a greater latency penalty.

[0025] In at least some embodiments, the SMU 316 implements a fast sleep state transition mode for transitioning components to sleep states. As described in more detail below, the SMU 316 selects sleep states for components of the SoC device 300 based on predicted sleep state durations and determined break-even durations where the benefits of transitioning to a sleep state exceed (or at least equal) the costs of transitioning to a sleep state. The SMU 316 compares the predicted sleep durations to the break-even durations for one or more sleep states. Based on this comparison, the SMU 316 determines whether placing the component in a deeper sleep state is long enough that the power savings associated with the deeper sleep state exceed (or at least equal) the power consumed during entry and exit transitions into and from the deeper sleep state. If the predicted sleep duration meets the determined break-even duration for the deeper sleep state, the SMU 316 transitions the component to the deeper sleep state. However, if the predicted sleep duration does not meet the determined break-even duration of the deeper sleep state, the SMU 316 transitions the component to a lighter sleep state.

[0026] Thus, the fast sleep state mode of SMU 316 improves the energy efficiency of the device because SMU 316 can transition components directly to a deeper sleep state instead of consuming energy during an entry hysteresis period. In at least some embodiments, the fast sleep state transition mode can be enabled or disabled by hardware or software components of SoC device 300 or another device coupled to SoC device 300. When the fast sleep state transition mode is disabled, conventional power state management operations can be performed by SMU 316. In at least some embodiments, a bit can be stored in a register, such as a model-specific register (MSR), to inform other hardware, software, or the operating system whether the fast sleep state transition mode is enabled or disabled.

[0027] 4 is a block diagram illustrating a more detailed view of the SMU 316 according to at least some embodiments. While the SMU 316 is described herein as being implemented by the SoC device 300, it should be noted that the SMU 316 may also be implemented by the processing device 100 of FIG. 1. In the example shown in FIG. 4, the SMU 316 comprises a monitoring module 402, a sleep duration prediction module 404, a sleep state selection module 406, a sleep state promotion module 408, a decision error feedback module 410, and one or more storage devices 412. It should be noted that in at least some embodiments, one or more of these components are implemented in another component of the SoC device 300 (or processing device 100) different from the SMU 316, such as a central microcontroller, an individual IP management controller, etc.

[0028] The monitoring module 402, in at least some embodiments, monitors and records the sleep state durations of components of the SoC device 300. In at least some embodiments, the sleep state duration (τ) of a component is defined as the time (duration) between the SMU 316 receiving an interrupt for the lowest level sleep state (e.g., sleep state S0) and receiving any wake event for the component. In other words, the sleep state duration of a component is the time between the start of a first transition (which may include an entry hysteresis) in which the component is transitioned from an active state to a sleep state and the start of a second transition in which the component is transitioned from the sleep state back to an active state. Note that in other embodiments, the sleep state duration is defined using different parameters. In at least some embodiments, the monitoring module 402 records the sleep state durations of a component using one or more internal timers.

[0029] The monitoring module 402, in at least some embodiments, records / stores the sleep state durations as history duration information 414 in one or more storage devices 412. In at least some embodiments, the one or more storage devices 412 are located locally within the SMU 316, remotely from the SMU 316, or a combination thereof. The history duration information 414, in at least some embodiments, is stored at the device level, component level, sub-component level, combinations thereof, etc. If the history duration information 414 is recorded and stored at the device level, entries for the past n sleep state durations across all components of the SoC device 300 are stored. For example, if n=32, the history duration information 414, in this example, comprises entries for the previous 32 sleep state durations associated with any of the components of the SoC device 300. If the history duration information 414 is recorded and stored at the component or sub-component level, each component or sub-component is associated with its own history duration entry. For example, if n=32, then the historical duration information 414, in this example, comprises entries for the first component's previous 32 sleep durations, entries for the second component's previous 32 sleep state durations, etc. In at least some embodiments, each component or subcomponent is associated with a separate data structure that comprises its associated historical duration information 414. In at least some embodiments, the number of previous sleep state durations recorded by the monitoring module 402 is configurable.

[0030] The sleep duration prediction module 404, in at least some embodiments, utilizes the historical duration information 414 to predict the duration of the next sleep state. For example, if the SMU 316 determines that a given component is idle, the sleep duration prediction module 404 processes the historical duration information 414 to predict the duration of the component's next sleep state. In at least some embodiments, the sleep duration prediction module 404 stores the predicted sleep state duration 416 in one or more storage devices 412.

[0031] The sleep state selection module 406, in at least some embodiments, determines an appropriate sleep state for a component of the SoC device 300. In at least some embodiments, the sleep state selection module 406 selects a sleep state from multiple sleep states that results in the least amount of energy consumed and the least impact on performance (referred to herein as the selection criteria). The sleep state selection module 406, in at least some embodiments, identifies a sleep state that meets the selection criteria based on an expected sleep state duration 416 and a sleep state break-even duration 418, also referred to as a break-even duration 418 or break-even threshold 418. The sleep state break-even duration 418 indicates the amount of time a component should remain in a sleep state such that the energy saved by being placed in the sleep state is at least equal to the energy cost of transitioning in and out of the sleep state. For example, the break-even duration 418 for sleep state S2 indicates the amount of time a component should remain in sleep state S2 such that the energy saved by being placed in sleep state S2 is at least equal to the energy cost of transitioning in and out of sleep state S2.

[0032] The sleep state selection module 406, in at least some embodiments, stores the break-even duration 418 in one or more storage devices 412. In at least some embodiments, the sleep state selection module 406 uses latency tolerance information 420 associated with one or more I / O devices 318 (e.g., PCIe devices, USB devices, etc.), an APIC interrupt timer value, or a combination thereof, to select a sleep state for the component. The latency tolerance information 420, in at least some embodiments, indicates the busy level of the I / O devices 318. The APIC interrupt timer value indicates the time until the next APIC interrupt. Once a sleep state is selected, the SMU 316 proceeds to transition the component to the selected sleep state by performing one or more operations (e.g., flushing caches, gating clocks, powering down voltage rails, etc.).

[0033] The sleep state promotion module 408, in at least some embodiments, takes corrective action if it determines that an incorrect (less efficient) sleep state has been selected by the sleep state selection module 406. For example, the sleep state promotion module 408 monitors the component while in the selected sleep state to determine whether the component has been in the selected sleep state longer than a predetermined threshold. If so, the sleep state promotion module 408, in at least some embodiments, transitions the component to the next deeper sleep state.

[0034] The decision error feedback module 410, in at least some embodiments, monitors the sleep state decisions made by the sleep state selection module 406 to detect errors. Examples of detected errors include selecting a lighter sleep state when a deeper sleep state should have been selected, or selecting a deeper sleep state when a lighter sleep state should have been selected. An incorrect sleep state selection is the result of, for example, an incorrect sleep duration prediction. Thus, in at least some embodiments, the decision error feedback module 410 provides input to the sleep duration prediction module 404 such that the sleep duration prediction module 404 adjusts its subsequent sleep duration predictions to reduce sleep state selection errors.

[0035] 5 is a flowchart outlining an example method 500 for improving the energy efficiency of a processing device by transitioning components directly to deeper sleep states instead of consuming energy during an entry hysteresis period. The monitoring module 402 monitors sleep state durations of components of the SoC device 300, at block 502. The sleep duration prediction module 404 predicts the sleep durations for which the components of the SoC device 300 will be transitioned to sleep states, at block 504. The sleep state selection module 406 selects a sleep state for the components based on the predicted sleep durations, at block 506. The SMU 316 transitions the components to the selected sleep state, at block 508. In at least some embodiments, the sleep state promotion module 408 promotes the current sleep state of the components to a deeper sleep state, at block 510.

[0036] FIG. 6 is a flowchart illustrating an example of a more detailed method 600 for the sleep state duration monitoring process shown in block 502 of FIG. 5 . In at least some embodiments, the monitoring module 402 is invoked based on a determination made in block 602 that a component of the SoC device 300 should transition to a sleep state. For example, the SMU 316 receives or detects an interrupt indicating that one or more components of the SoC device 300 are idle. In block 604, one or more timers are initialized based on the determination that the component should transition to a sleep state. In block 606, a determination is made as to whether a wake event has been detected / received for the component. If a wake event has not been detected, the monitoring module 402 maintains the timer until a wake event is detected. If a wake event is detected for the component, the timer is stopped in block 608. In at least some embodiments, the recorded time between the SMU 316 receiving the sleep state request interrupt and receiving a wake event for the component is referred to as the sleep state duration of the component. However, other configurations for the sleep duration are equally applicable.

[0037] In at least some embodiments, if a component's sleep state is a deeper sleep state, the sleep state duration includes not only the duration of time the component is placed in the deeper sleep state, but also the time spent transitioning the component through the lighter sleep states. For example, consider a list of sleep states S = (S1, S2, ..., Sn), where Sn is the deepest sleep state supported by the components of SoC device 300. A component typically enters a first sleep state S1 and then a deeper sleep state S2 via a logical sequence that powers down the component or its subcomponents. Thus, if sleep state S2 is selected for a component, the component's sleep state duration includes the time the component is placed in sleep state S2 and the time spent transitioning the component from the active state to each lighter state. In at least some embodiments, sleep states are associated with an entry hysteresis. In these embodiments, the component's sleep state duration also includes the sleep state's hysteresis latency.

[0038] FIG. 7 shows an illustrative example of timing for transitioning components of SoC device 300 to a first sleep state (SLEEP1) and a deeper second sleep state (SLEEP2). In particular, FIG. 7 shows a first timing sequence 702 for transitioning a component to the first sleep state and a second timing sequence 704 for transitioning the component to the deeper second sleep state. In the example shown in FIG. 7, H corresponds to the entry hysteresis latency, which is the delay period before transitioning a component from an active state to a target sleep state. T corresponds to the entry latency and exit latency, which are the time it takes to transition a component from one state to another, and S corresponds to the duration of time the component is placed in the target sleep state. In the example shown in FIG. 7, the timing sequence 702 for the first sleep state SLEEP1 includes an entry hysteresis latency 706 (H SLEEP1 ), entry latency 708(TSLEEP1,entry ), sleep duration 710(S SLEEP1,sleep ), and Exit Latency 712 (T SLEEP1,exit ) Thus, in this example, the sleep state duration τ of the first sleep state is defined as follows: (Formula 1) τ=H sleep1 +T sleep1,entry +S sleep1,sleep

[0039] The timing sequence 704 for the second sleep state SLEEP2 includes the entry hysteresis latency 706 (H Sleep1 ), the entry latency 708 of the first sleep state (T Sleep1,entry ), the entry latency of the second sleep state 714 (T Sleep2,entry ), the sleep duration 716 (S Sleep2,sleep ), the second sleep state exit latency 718 (T Sleep2,exit ), and the exit latency 712 (T Sleep1,exit ) Thus, in this example, the sleep state duration τ of the second sleep state is defined as: (Formula 2) τ=H sleep1 +T sleep1,entry +T sleep2,entry +S sleep2,sleep

[0040] 6 , in block 610, the monitoring module 402 records the determined sleep state durations for the components as historical duration information 414. As described above, the historical duration information 414, in at least some embodiments, is stored at the device level, the component level, the sub-component level, a combination thereof, or the like. In at least some embodiments, if the historical duration information 414 is recorded per component or sub-component, the components or sub-components communicate their busy / idle status to the SMU 316. By recording the duration information 414 per component, the SMU 316 can optimize power for clusters of components, such as multimedia cores, based on idle patterns.

[0041] FIG. 8 is a flowchart illustrating an example of a more detailed method 800 for the sleep state duration prediction process shown in block 504 of FIG. 5 . In at least some embodiments, the sleep duration prediction module 404 is invoked based on a determination made in block 802 that a component of the SoC device 300 should be transitioned to a sleep state. In block 804, historical duration information 414 is obtained. In at least some embodiments, the historical duration information 414 is obtained for the SoC device 300 as a whole, while in other embodiments, the historical duration information 414 is obtained for the component. In block 806, the historical duration information 414 is processed using one or more techniques, such as a median calculation, a moving average metric or other statistical metric, machine learning, or a combination thereof. Next, in block 808, a next sleep state duration 416 of the component is predicted based on processing the historical sleep state duration information. For example, assume historical durations D={D1, D2, D3, ..., DL}. where Di represents the duration of the i-th sleep in seconds, and L is the total number of recorded sleep durations. In this example, the sleep duration prediction module 404 predicts the component's next sleep state duration 416 by calculating D_median = median(D) and sends it to the sleep state selection block 506 to determine the appropriate sleep state. The predicted sleep state duration 416 is then stored or sent, for example, for use by or sent to the sleep state selection module 406.

[0042] In at least some embodiments, the SMU 316 implements an error feedback module 410 that provides input to the sleep duration prediction module 404. In these embodiments, the sleep duration prediction module 404 uses feedback input from the error feedback module 410, in addition to the historical duration information 414, to predict the component's next sleep state duration 416. The error feedback module 410, in at least some embodiments, monitors the number of incorrect sleep state selections made by the sleep state selection module 406 based on the predicted sleep state duration 416. In one example, a sleep state selection is determined to be incorrect if a deeper sleep state is selected but the component's actual sleep state duration indicates that a lighter sleep state should have been selected. In another example, a sleep state selection is incorrect if a lighter sleep state is selected but the component's actual sleep state duration indicates that a deeper sleep state should have been selected. The error feedback module 410 implements one or more mechanisms, such as a proportional-integral-derivative (PID) controller, to provide inputs, such as corrections, to the sleep duration prediction module 404. The sleep duration prediction module 404 implements the inputs received from the error feedback module 410 to adjust its prediction operation to provide a more accurate predicted sleep state duration 416. For example, the sleep duration prediction module 404 uses the feedback inputs to adjust one or more parameters for predicting the sleep state durations of the components of the SoC device 300.

[0043] FIG. 9 is a flowchart illustrating an example of a more detailed method 900 for the sleep state selection process shown in block 506 of FIG. 5 . In method 900, at block 902, a break-even duration 418 is determined for one or more sleep states available to a component of SoC device 300. As described above, the break-even duration 418 for a given sleep state is the amount of time a component should remain in a sleep state such that the energy saved by being placed in the sleep state is at least equal to the energy consumed by transitioning to and remaining in a lighter sleep state. The energy for a given sleep state, in at least some embodiments, is determined based not only on the given sleep state but also on any lower-level sleep states. For example, consider a list of sleep states S=(S1, S2, ..., Sn), where Sn is the deepest sleep state supported by the component of SoC device 300. As described above, a component typically enters a first sleep state S1 and then enters sleep state S2 according to a logical sequence for powering the component or its subcomponents. Thus, in this example, the energy for sleep state S2 is calculated based on (1) the energy required to enter sleep states S1 and S2, (2) the energy required to remain in sleep states S1 and S2, and (3) the energy required to exit sleep states S1 and S2.

[0044] For example, referring back to FIG. 7, the sleep state selection module 406 determines the energy (E) for the sleep states SLEEP1 sequence 702 and SLEEP2 sequence 704 for a given (predicted) sleep state duration τ as follows: (Formula 3) E sleep1 =(H sleep1 P sleep0 )+(T sleep1,entry P sleep1,entry )+((τ-(H sleep1 +T sleep1,entry ))·P sleep1 )+(Tsleep1,exit P sleep1,exit ) where P sleep is the power consumed when placed in the corresponding sleep state, and P entry is the power consumed during entry into the sleep state, and P exit is the power consumed during the exit from the sleep state. (Formula 4) E sleep2 =(H sleep1 P sleep0 )+(T sleep1,entry P sleep1,entry )+(T sleep2,entry P sleep2,entry )+(τ-(H sleep1 +T sleep1,entry +T sleep2,entry ))·P sleep2 +(T sleep2,exit P sleep2,exit )+(T sleep1,exit P sleep1,exit )

[0045] The sleep state selection module 406 determines the break-even duration 418 for a given sleep state based on the calculated energy E for the sleep state and one or more lighter sleep states. For example, in at least some embodiments, the sleep state selection module 406 determines the break-even duration 418 for a given sleep state when the energy E of the sleep state is equal to the energy of one or more previous sleep states. * Therefore, in the current example, the sleep state selection module 406 determines the break-even duration 418 of a given sleep state as the value of E sleep1 =E sleep2, If , the break-even duration of sleep state SLEEP2 (τ * )418 to τ * The value is calculated according to the following formula:

[0046]

number

[0047] 9 , at block 904, the component's predicted sleep state duration 416 is compared to the break-even durations 418 determined for one or more of the sleep states available to the component. At block 906, a sleep state is selected based on this comparison. In at least some embodiments, the deepest sleep state is selected such that the component's predicted sleep state duration 416 meets the break-even duration 418 of the selected sleep state. For example, consider a first sleep state and a second, deeper sleep state. In this example, the break-even duration / threshold 418 for the second sleep state is 1.5 milliseconds. Thus, if the component's predicted sleep state duration 416 is equal to, or in other embodiments, greater than, 1.5 milliseconds, the sleep state selection module 406 selects the second, deeper sleep state for the component. However, if the component's predicted sleep state duration 416 is less than 1.5 milliseconds, and in other embodiments is less than 1.5 milliseconds, the sleep state selection module 406 selects a first, lighter sleep state for the component. Once a sleep state is selected for the component, control proceeds to block 508 of FIG. 5, where the component is transitioned to the selected sleep state.

[0048] In at least some embodiments, the sleep state selection module 406 uses latency tolerance information 420 of the I / O device 318 when selecting a sleep state for a component. The latency tolerance information 420, in at least some embodiments, includes a value that indicates the busy level of the associated I / O device 318. In one example, a long value indicates idle, and a short value indicates that the I / O device 318 is active. In some embodiments, the latency tolerance information 420 is exposed to the sleep state selection module 406 via one or more registers. In addition to the latency tolerance information 420, in at least some embodiments, an advanced programmable interrupt controller (APIC) value is used by the sleep state selection module 406 when making the sleep state selection. There are multiple APIC timers that, upon expiration, issue an interrupt to wake the processor. The APIC timer value made available to the sleep state selection module 406 indicates the time until the next APIC interrupt. Thus, the sleep state selection module 406, in at least some embodiments, monitors the next required timer interrupt to determine whether the initial sleep state selection should be updated. For example, if the sleep state selection module 406 initially selects a deeper sleep state, but the latency tolerance information 420 indicates an active I / O device 318 or the APIC value indicates that an interrupt will be issued within a predetermined time threshold, the sleep state selection module 406 updates the sleep state selection to a lighter sleep state.

[0049] FIG. 10 is a flowchart illustrating an example of a more detailed method 1000 for the sleep state promotion process shown in block 510 of FIG. 5 . In method 1000, at block 1002, one or more sleep state promotion attributes are determined for a sleep state of a component. For example, the amount of time the component has been in a selected sleep state (current sleep state duration) is determined. In at least some embodiments, the sleep state promotion module 408 uses one or more timers to determine the component's current sleep state duration. In another example, a percentage or number of long sleep durations in the historical duration information 414 are identified. A long sleep duration, in at least some embodiments, is a sleep duration that exceeds a predetermined sleep duration threshold. The one or more sleep state promotion attributes are compared to sleep state promotion criteria at block 1004. At block 1006, a determination is made whether the one or more sleep state promotion attributes meet the sleep state promotion criteria. For example, a determination is made whether the component's current sleep state duration is equal to or greater than a threshold amount of time. In another example, a first determination is made whether the component's current sleep state duration is greater than or equal to a threshold amount of time, and a second determination is made whether the percentage / number of long sleep durations is greater than or equal to a threshold percentage / number.

[0050] If one or more sleep state promotion attributes do not meet the sleep state promotion criteria, then at block 1008, the current sleep state is maintained (i.e., the sleep state is not promoted). Control then passes to block 1012. However, if one or more sleep state promotion attributes meet the sleep state promotion criteria, then at block 1010, the component is transitioned from the current sleep state to at least the next deepest sleep state. At block 1012, a determination is made whether a wake event has been detected for the component. If a wake event has not been detected for the component, control flow returns to block 1002. However, if a wake event has been detected, then at block 1014, the component exits sleep state promotion mode.

[0051] The power management techniques described herein improve the energy efficiency of processing devices by transitioning components directly into deeper sleep states instead of consuming energy during an entry hysteresis period. Various embodiments described herein implement fewer tunable parameters to reduce post-silicon ramp-up time / complexity, are workload adaptive to provide improved performance across a range of workloads, allow for future expansion / improvements by making the sleep state prediction system / algorithm modular, and decouple the prediction system / algorithm from operating system hints.

[0052] In some embodiments, the above-described apparatus and techniques are implemented in a system including one or more integrated circuit (IC) devices (also referred to as integrated circuit packages or microchips). In at least some embodiments, electronic design automation (EDA) and computer-aided design (CAD) software tools can be used in the design and manufacture of these IC devices. These design tools are typically represented as one or more software programs. The one or more software programs include code executable by a computer system for operating the computer system to operate on code representing the circuits of one or more IC devices to perform at least a portion of a process for designing or adapting a manufacturing system for producing the circuits. This code may include instructions, data, or a combination of instructions and data. The software instructions representing the design or manufacturing tools are typically stored on a computer-readable storage medium accessible to the computing system. Similarly, code representing one or more stages of the design or manufacture of the IC devices is stored on and accessed from the same or a different computer-readable storage medium.

[0053] In at least some embodiments, a computer-readable storage medium includes any non-transitory storage medium or combination of non-transitory storage media that can be accessed by a computer system during use to provide instructions and / or data to the computer system. Such storage media may include, but are not limited to, optical media (e.g., compact discs (CDs), digital versatile discs (DVDs), Blu-ray discs), magnetic media (e.g., floppy disks, magnetic tape, magnetic hard drives), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or flash memory), or micro-electromechanical systems (MEMS)-based storage media. The computer-readable storage medium (e.g., system RAM or ROM) may be internal to the computing system, the computer-readable storage medium (e.g., a magnetic hard drive) may be permanently attached to the computing system, the computer-readable storage medium (e.g., an optical disk or Universal Serial Bus (USB)-based flash memory) may be removably attached to the computing system, or the computer-readable storage medium (e.g., network-accessible storage (NAS)) may be coupled to the computer system via a wired or wireless network.

[0054] In some embodiments, certain aspects of the techniques described above are implemented by one or more processors of a processing system executing software. The software includes one or more sets of executable instructions stored or otherwise tangibly embodied in a non-transitory computer-readable storage medium. The software may include instructions and specific data that, when executed by one or more processors, operate the one or more processors to perform one or more aspects of the techniques described above. The non-transitory computer-readable storage medium may include, for example, a magnetic or optical disk storage device, a solid-state storage device such as flash memory, a cache, a random access memory (RAM), or other non-volatile memory device(s). The executable instructions stored on the non-transitory computer-readable storage medium may be implemented as source code, assembly language code, object code, or other form of instructions that can be interpreted or otherwise executed by one or more processors.

[0055] In addition to the above, it should be noted that not all activities or elements described in the summary description are required, that some of the particular activities or devices may not be required, that one or more additional activities may be performed, and that one or more additional elements may be included. Furthermore, the order in which the activities are listed is not necessarily the order in which they are performed. Also, the concepts have been described with reference to specific embodiments. However, those skilled in the art will recognize that various modifications and variations can be made without departing from the scope of the invention as set forth in the claims. Accordingly, the specification and drawings should be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of the present invention.

[0056] Benefits, other advantages, and solutions to problems have been described above with regard to specific embodiments. However, the benefits, advantages, solutions to problems, and features from which any benefit, advantage, or solution may arise or be manifested are not construed as critical, essential, or essential features of any or all claims. Moreover, the specific embodiments described above are illustrative only, since the disclosed invention may be modified and practiced in different, but similar manners apparent to those skilled in the art having the benefit of the teachings herein. No limitations are intended to the details of construction or design herein shown, other than as described in the appended claims. It is therefore apparent that the specific embodiments described above may be altered or modified, and that all such variations are considered within the scope of the disclosed invention. Accordingly, the protection sought herein is set forth in the appended claims.

Claims

1. A method performed by a processing device, comprising: predicting sleep state durations for components of the processing device based on feedback related to sleep state durations for one or more previous selections of sleep states; transitioning the component to a selected sleep state from a plurality of sleep states based on a comparison of the predicted sleep state duration to at least one break-even duration threshold, wherein each sleep state of the plurality of sleep states is a lower power state than a previous sleep state of the plurality of sleep states. method.

2. transitioning the component to the selected sleep state includes transitioning the component without an entry hysteresis delay.

10. The method of claim 1.

3. the sleep state duration comprises a duration of a previous sleep state associated with the processing device.

10. The method of claim 1.

4. the at least one break-even duration threshold indicates a duration of time for which the component is placed in a sleep state associated with the at least one break-even duration threshold such that the energy saved by being placed in the sleep state is at least equal to the energy cost of transitioning the component into and out of the sleep state; 10. The method of claim 1.

5. selecting the sleep state determining that the predicted sleep state duration does not meet the at least one break-even duration threshold; selecting a first sleep state among the plurality of sleep states that is a higher power state than at least a second sleep state among the plurality of sleep states in response to the predicted sleep state duration not meeting the at least one break-even duration threshold.

10. The method of claim 1.

6. selecting the sleep state determining that the predicted sleep state duration meets the at least one break-even duration threshold; selecting a first sleep state among the plurality of sleep states that is a lower power state than at least a second sleep state among the plurality of sleep states in response to the predicted sleep state duration meeting the at least one break-even duration threshold.

10. The method of claim 1.

7. the feedback indicating that one or more erroneous selections of a sleep state were previously made; and predicting the sleep state duration includes adjusting one or more parameters used to predict the sleep state duration based on the feedback.

10. The method of claim 1.

8. determining the duration for which the component is currently in the selected sleep state; comparing the duration to a threshold time; transitioning the component to a different sleep state based on the duration meeting the threshold time, the different sleep state being a lower power state than the selected sleep state.

10. The method of claim 1.

9. determining the duration for which the component is currently in the selected sleep state; determining a percentage of sleep state durations in a set of historical sleep state durations associated with the processing device that meet a threshold duration; comparing the duration to a threshold time; comparing the sleep state duration percentage to a threshold percentage; transitioning the component to a different sleep state based on the duration meeting the threshold time and the percentage of the sleep state duration meeting the threshold percentage, the different sleep state being a lower power state than the selected sleep state.

10. The method of claim 1.

10. 1. A processing device, comprising: a processor; a sleep state duration prediction module that predicts a sleep state duration of a component of the processing device based on sleep state duration related feedback for one or more previous selections of sleep states; a system management unit that transitions the component to a selected sleep state from a plurality of sleep states based on a comparison of the predicted sleep state duration with at least one break-even duration threshold, wherein each sleep state of the plurality of sleep states is a lower power state than a previous sleep state of the plurality of sleep states. Processing device.

11. the system management unit transitions the component to the selected sleep state without an entry hysteresis delay; The processing device of claim 10.

12. the sleep state duration comprises a duration of a previous sleep state associated with the processing device. The processing device of claim 10.

13. A sleep state selection module is provided, The sleep state selection module: determining that the predicted sleep state duration does not meet the at least one break-even duration threshold; selecting a first sleep state among the plurality of sleep states that is a higher power state than at least a second sleep state among the plurality of sleep states in response to the predicted sleep state duration not meeting the at least one break-even duration threshold; selecting the sleep state from the plurality of sleep states by The processing device of claim 10.

14. A sleep state selection module is provided, The sleep state selection module: determining that the predicted sleep state duration meets the at least one break-even duration threshold; selecting a first sleep state among the plurality of sleep states that is a lower power state than at least a second sleep state among the plurality of sleep states in response to the predicted sleep state duration satisfying the at least one break-even duration threshold; selecting the sleep state from the plurality of sleep states by The processing device of claim 10.

15. a feedback module that provides the feedback to the sleep state duration prediction module, the feedback indicating that one or more erroneous sleep state selections have been made; the sleep state duration prediction module adjusts one or more parameters used to predict the sleep state duration based on the feedback. The processing device of claim 10.

16. Equipped with a sleep state promotion module, The sleep state promotion module includes: determining the duration for which the component is currently in the selected sleep state; comparing the duration to a threshold time; transitioning the component to a different sleep state based on the duration meeting the threshold time, the different sleep state being a lower power state than the selected sleep state; and configured to: The processing device of claim 10.

17. 1. A processing device, comprising: a processor; a monitoring module that monitors a duration of each sleep state of a plurality of sleep states associated with the processing device and stores the durations as historical sleep state durations; a sleep state duration prediction module that predicts a sleep state duration of a component of the processing device based on the historical sleep state duration and feedback related to sleep state durations for one or more previous selections of a sleep state; a system management unit that transitions the component to a selected sleep state from a plurality of sleep states based on a comparison of the predicted sleep state duration with at least one break-even duration threshold, wherein each sleep state of the plurality of sleep states is a lower power state than a previous sleep state of the plurality of sleep states. Processing device.

18. Equipped with a sleep state promotion module, The sleep state promotion module includes: determining that the duration that the component has currently been in the selected sleep state meets a threshold time; transitioning the component to a different sleep state that is a lower power sleep state than the selected sleep state; configured to:

20. The processing device of claim 17.

Citation Information

Patent Citations

  • Platform power management based on latency guidance

    JP2012212467A

  • Multi-mode device power-saving optimization

    JP2014132449A

  • Using an Idle Duration History to Configure an Idle State of an Entity in a Computing Device

    US20150121057A1