Переход между состоянием простоя и активным
Во время спящего режима Windows периодически переводит платформу SoC из режима простоя в активный для выполнения действий по добавлению значений, таких как получение уведомления по электронной почте или выполнение задачи обслуживания. Кроме того, переходы по запросу в активный режим могут происходить в ответ на входные данные пользователя, прерывания сетевых устройств и другие аппаратные события.
После того как SoC перейдет в состояние DRIPS, платформа, как правило, будет находиться в режиме наименьшего энергопотребления. Во время спящего режима платформа будет периодически переключаться между режимом простоя (DRIPS) и активным режимом. Низкая мощность достигается во сне, проводя большую часть времени в режиме DRIPS и очень небольшое количество времени в активном режиме.
Переход от простоя к активному
Windows переведут SoC в активный режим по следующим причинам:
- Событие пробуждения по запросу из-за прерывания сетевого устройства (Wi-Fi, мобильной широкополосной связи или Ethernet). Сетевое устройство создает прерывание при обнаружении соответствующего шаблона WoL или при изменении состояния носителя или подключения. Прерывание активирует SoC с помощью аппаратного контроллера GPIO, сигналов о возобновлении через USB или прерывания PCI PME.
- Событие пробуждения по запросу из-за прерывания устройства платформы от источника, например датчика топлива батареи, контроллера заряда батареи или тепловых датчиков.
- Событие пробуждения по запросу из-за прерывания, вызванного вводом данных пользователем на клавиатуре, сенсорной панели, внешнем USB-периферии, кнопке питания или переключателе крышки.
Как только SoC активируется и платформа выходит из состояния DRIPS, ЦП снова начинают выполнять код. Однако экран остается выключенным, если прерывание не было вызвано вводом данных пользователем или подключением к источнику питания. Драйвер устройства, вызвавшего прерывание, отвечает за сообщение о присутствии пользователя в ОС, если прерывание соответствует введенным пользователем данным. Диспетчер питания Windows определяет, следует ли включить экран; Конструктор системы должен только убедиться, что прерывание с каждого устройства подключено и запрограммировано для пробуждения SoC из состояния DRIPS.
Разработчики систем должны работать в тесном контакте с поставщиком SoC, чтобы подключить прерывания устройства для пробуждения SoC. Для некоторых устройств SoC требуется подключение прерываний устройства к специальным входным данным с поддержкой пробуждения или настройка для пробуждения с помощью встроенного ПО системы.
Переход из активного режима в режим простоя
Windows переводит платформу SoC из активного режима в режим простоя после того, как все действия программного обеспечения будут остановлены, а устройства, на которых установлена и выключена микросхема SoC, перешли в состояние с низким энергопотреблением.
SoC переходит между режимами простоя и активными в спящем режиме на основе триггеров, описанных в предыдущем разделе. Всякий раз, когда SoC активен, Windows будет агрессивно пытаться вернуть его в состояние простоя (DRIPS) для снижения энергопотребления.
SoC также будет активен, когда система выходит из режима ожидания в ответ на ввод пользователем, например нажатие кнопки питания. SoC автоматически возвращается в состояние простоя (DRIPS) при выполнении всех следующих условий:
- Все устройства за пределами SoC отключены.
- Все сетевые и радиоустройства вступили в состояние низкого энергопотребления, чтобы ждать пакетов, соответствующих шаблонам WoL, или прерываний пробуждения.
- Все контроллеры узла в SoC отключены.
- Все фоновые задачи приложения завершены.
- Все действия ЦП и GPU остановлены, а все ЦП находятся в бездействии.
Почти все современные проблемы с питанием в режиме ожидания связаны с обеспечением выполнения всех этих пяти условий. Windows включает встроенное средство диагностики Под названием SleepStudy , которое помогает определить, какие из этих условий не выполняются, если SoC не может войти в состояние простоя (DRIPS).