Transitioning between idle and active states
During sleep, Windows periodically transitions the SoC platform from idle mode to active mode to perform value adding activities such as receiving an email notification or performing a maintenance task. Additionally, on-demand transitions to active mode can occur in response to user inputs, interrupts from networking devices, and other hardware events.
After the SoC has entered the DRIPS state, the platform will typically be in its lowest power mode. During sleep, the platform will switch between this idle (DRIPS) mode and the active mode periodically. Low power is achieved in sleep by spending the majority of the time in the DRIPS mode and very small amounts of time in the active mode.
Transitioning from idle to active
Windows will transition the SoC to the active mode for the following reasons:
- An on-demand wake event due to an interrupt from a networking device (Wi-Fi, mobile broadband, or Ethernet). The networking device generates an interrupt when a matching WoL pattern is detected or when the media or connection state changes. The interrupt wakes the SoC using an out-of-band GPIO, in-band USB resume signaling, or PCI PME interrupt.
- An on-demand wake event due to a platform device interrupt from a source such as the battery fuel gauge, battery charge controller, or thermal sensors.
- An on-demand wake event due to an interrupt caused by user input at a keyboard, touchpad, external USB peripheral, power button, or lid switch.
As soon as the SoC wakes and the platform exits the DRIPS state, the CPUs start running code again. However, the screen stays powered off unless the interrupt was a result of user input or connecting to a power source. The driver for the device that causes the interrupt is responsible for reporting user presence to the OS if the interrupt corresponds to user input. The Windows power manager determines whether the screen should be powered on; the system designer needs only to ensure that the interrupt from each device is connected and programmed to wake the SoC from the DRIPS state.
System designers must work closely with the SoC vendor to connect device interrupts for SoC wakeup. Some SoC devices require device interrupts to be connected to special "wake-capable" inputs or configured for wake using system firmware.
Transitioning from active to idle
Windows transitions the SoC platform from active mode to idle mode after all software activity is stopped and the devices on and off the SoC chip have entered low-power states.
The SoC transitions between idle and active modes during sleep based on the triggers explained in the previous section. Whenever the SoC is active, Windows will aggressively attempt to return it to the idle (DRIPS) state to reduce power consumption.
The SoC will also be active when the system exits modern standby in response to user input, such as a power button press. The SoC will be put back in the idle (DRIPS) state automatically when all of the following conditions are true:
- All devices outside of the SoC have been powered down.
- All network and radio devices have entered their low-power state to wait for packets matching WoL patterns or wake interrupts.
- All host controllers on the SoC have been powered down.
- All app background tasks have completed.
- All CPU and GPU activity has stopped and all CPUs are idle.
Almost all modern standby power problems are related to making sure all of these five conditions have been met. Windows includes a built-in diagnostic tool called SleepStudy to help discover which of these conditions is not being met when the SoC is prevented from entering the idle (DRIPS) state.