Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Спецификация ACPI 6.3 определяет набор объектов пространства имен для указания сведений о мощности устройства для устройства. Например, один набор объектов может указать ресурсы питания, необходимые устройству в каждом поддерживаемом состоянии питания устройства. Ещё один тип объекта может описывать способность устройства пробуждаться от низкого энергопотребления в ответ на аппаратные события.
Управление питанием устройств в Windows
В то время как система работает (то есть система находится в рабочем состоянии, определяемом ACPI, S0), отдельные устройства могут выполнять переходы между состояниями питания устройства, в зависимости от действия, чтобы сохранить мощность. В традиционных системах ПК определяемые ACPI состояния сна (S1–S4) также используются для экономии энергии, но эти отключенные состояния сна с высокой задержкой не используются на платформах Windows SoC. Таким образом, время автономной работы батареи сильно зависит от того, как платформы реализуют управление питанием устройства в режиме работы.
Устройства, интегрированные в SoC, можно управлять питанием с помощью Windows Power Framework (PoFx). Эти интегрированные в платформу устройства управляются PoFx через специфичный для SoC плагин модуля питания (microPEP), который учитывает особенности управления питанием и тактированием SoC. Дополнительные сведения о PoFx см. в Обзорефреймворка управления питанием.
Для периферийных устройств, которые не интегрированы в SoC, Windows использует управление питанием устройств ACPI. Для этих устройств, управляемых ACPI, владелец политики питания в стеке драйверов устройств (как правило, драйвер функции или класса) принимает решения о переходе состояния устройства, а драйвер Windows ACPI, Acpi.sys, вызывает методы управления ASL для применения необходимых элементов управления питанием для конкретной платформы.
Возможно, что некоторые стеки устройств используют управление питанием устройств ACPI отдельно или в сочетании с microPEP для управления питанием устройств на базе SoC.
Как описано в разделе управления питанием устройств в ACPI, Windows поддерживает возможности управления питанием D3cold, определенные в спецификации ACPI 5.0. С помощью этой поддержки устройства, платформы и драйверы могут отключать питание устройства в периоды простоя во время выполнения. Эта возможность может значительно повысить продолжительность работы батареи. Однако отключение питания должно быть поддержано всеми затронутыми компонентами, чтобы успешно вернуться в D0. По этой причине водители (автобус и функция), а также сама платформа должны указывать на то, что они поддерживают его. Дополнительные сведения о выборе драйвера D3cold см. в разделе "Поддержка D3cold в драйвере".
Управление питанием устройств в ACPI
Устройства пространства имен поддерживают до четырех состояний питания, нумерованных от D0 (полнофункциональное или "включено") до D3 (без функций или "выключено"). Каждое состояние может иметь разные требования к мощности, при этом более многочисленные состояния потребляют меньше энергии, чем более низкие числа состояний. Кроме того, состояние D3 (off) имеет два подстата, D3hot и D3cold. Подсостояние D3hot требует, чтобы устройство оставалось доступным на его родительской шине, чтобы оно могло отвечать на команды программного обеспечения, специфичные для шины. Это требование и мощность, используемая для его удовлетворения, отключаются в D3cold. Наконец, устройство может быть настроено для выхода из режима низкого энергопотребления из-за аппаратного события и, при необходимости, также выводить платформу из состояния простоя.
Платформа указывает на поддержку D3cold, предоставляя ОС управление функцией "_PR3 Support" (бит 2) при запросе через метод возможностей OSPM, применимый ко всей платформе. Дополнительные сведения см. в разделе 6.2.10.2, "Возможности OSPM на уровне платформы" в спецификации ACPI 5.0.
Управляемые питанием устройства используют дочерние объекты для описания своих возможностей питания в операционной системе. В следующих разделах описаны эти возможности и объекты.
Ресурсы и состояния электропитания
Устройство объявляет о своей поддержке состояния питания, перечисляя набор ресурсов питания, необходимых для того, чтобы находиться в этом состоянии. ACPI Power Resources представляют собой источники питания, которые обеспечивают устройства напряжением, и тактовые сигналы, которые ими управляют. Эти ресурсы объявляются в корне пространства имен. Каждый ресурс питания имеет _ON и метод _OFF, с помощью которого он управляется, и метод _STA для отчета о состоянии. Дополнительные сведения см. в разделе 7.1, посвященном объявлению объекта Power Resource, спецификации ACPI 5.0.
Драйвер Windows ACPI, Acpi.sys, отслеживает зависимости питания между устройствами, которые совместно используют ресурсы, и, по мере перехода этих устройств между состояниями питания, гарантирует, что включены только те ресурсы питания, которые фактически необходимы устройству в любой момент времени.
Требования к ресурсам электропитания (_PRx)
Существует объект Power Resource Requirements (_PRx), где x = 0, 1, 2 или 3 для каждого поддерживаемого состояния питания устройства. Когда драйвер устройства решает перейти к новому состоянию электропитания, Acpi.sys гарантирует, что все ресурсы питания, необходимые для нового состояния, включены, а те, которые больше не используются, отключены.
| Поддерживаемое состояние устройства | Объект "Требования к ресурсам" использовать | Ресурсы для включения в объект требований |
|---|---|---|
| D0 (обязательно) | _PR0 | Для полноценного функционирования устройства необходимы все тактовые сигналы и энергия. |
| D1 | _PR1 | Любая мощность или тактовые сигналы, необходимые для ограниченной функциональности этого класса состояния. |
| D2 | _PR2 | Любое питание или тактовые сигналы, необходимые для сниженной функциональности, определенной классом этого состояния. |
| D3hot (обязательно) | _PR3 | Только питание или часы, необходимые для того, чтобы устройство определялось на шине и реагировало на команду, специфичную для шины. |
Если определённая платформа поддерживает функцию D3cold, и драйвер данного устройства выбирает использование D3cold, то ресурсы питания устройства _PR3 будут отключены, если они не используются другими устройствами, через некоторое время после перехода на D3Cold.
Дополнительные сведения о требованиях к ресурсам питания для устройства, поддерживающего D3cold, см. в разделе "Требования к встроенному ПО для D3cold".
Состояние питания устройства (_PSx)
Существует метод Power State, _PSx, где x = 0, 1, 2 или 3 для каждого поддерживаемого состояния питания устройства Dx. Этот метод необязателен, но, если он присутствует, он вызывается до отключения ресурсов питания для состояния и после включения ресурсов питания для состояния. _PSx предназначено для выполнения любых действий, необходимых для конкретной платформы в цикле питания. _PSx не должен получать доступ к регистрам устройств, назначенным функциональному драйверу, получать доступ к стандартным регистрам шины, назначенным драйверу шины, или включать или выключать ресурсы питания, что зарезервировано для Acpi.sys.
Возможности пробуждения
Управляемые питанием устройства могут обнаруживать события, когда в состоянии низкой мощности и вызвать пробуждение платформы для их обработки. Чтобы включить эту функцию, Windows нуждается в информации о возможностях как платформы, так и устройства.
Состояние пробуждения устройства Sx (_SxW)
На данной платформе существует определенное сопоставление между состояниями устройства, поддерживающими функцию пробуждения и состояния системы, которые могут реагировать на события пробуждения. ACPI определяет объект _SxW для предоставления этой информации операционной системе. Существует объект SxW для каждого поддерживаемого состояния системы, Sx. Так как платформы SoC всегда находятся в S0, единственный объект интереса здесь _S0W. Этот объект указывает способность платформы пробуждаться от состояния простоя с низким энергопотреблением в ответ на сигнал пробуждения устройства. Объект используется Windows для определения целевого состояния D для устройства во время простоя системы с низкой мощностью. Дополнительные сведения о _S0W см. в разделе 7.2.20, "_S0W (состояние пробуждения устройства S0) в спецификации ACPI 5.0.
Для большинства платформ SoC устройства подвергаются агрессивному управлению питанием до состояния D3 при бездействии, и система может выходить из режима низкого энергопотребления, пока устройство находится в этом состоянии. Для такой системы объект _S0W возвращает 3 (или 4, если он также поддерживает D3cold).
_S0W(4) является требованием для D3Cold независимо от того, поддерживает ли устройство пробуждение.
Любое D-состояние можно назначить как состояние с низкой мощностью пробуждения, а некоторые классы устройств или автобусы используют разные значения. Например, устройства SDIO и USB используют состояние D2 для этого состояния.
Чтобы упростить миграцию драйверов устройств с Windows 7 на Windows 8 или Windows 8.1, возможно, потребуется, чтобы ваше устройство также поддерживало _S4W. В настоящее время единственным классом устройств, который имеет это требование, является сеть (Ndis.sys).
Прерывания с возможностью пробуждения (_CRS)
Описание ресурса устройства указывает, что устройство способно обнаруживать и сигнализировать о событии пробуждения, помечая прерывание как "поддерживающее пробуждение" (ExclusiveAndWake или SharedAndWake). Драйверы Windows и устройств обеспечивают специальную обработку таких прерываний, чтобы убедиться, что они включены при переходе устройства в состояние низкой мощности. Дополнительные сведения см. в описаниях дескрипторов ресурсов Прерывания и GpioInt в разделе 6.4.3.6 "Расширенный дескриптор прерываний" и разделе 6.4.3.8.1 "Дескрипторы подключения GPIO" спецификации ACPI 5.0.
Активация функции пробуждения
В зависимости от пользовательского сценария или системной политики, устройства, способные пробуждаться, могут быть активированы или не активированы для пробуждения. Таким образом, прерывания, поддерживающие пробуждения, могут быть активированы или не активированы, когда устройство находится в режиме простоя. Помимо включения прерываний Windows использует следующие механизмы для включения пробуждения на устройстве.
Выход из спящего режима устройства (_DSW)
ACPI определяет объект _DSW как способ информирования встроенного ПО платформы ACPI о следующем периоде сна или низкого энергопотребления. Этот объект является необязательным и используется только в том случае, если платформа должна заранее настроить оборудование пробуждения для конкретной платформы. Предоставляются целевое D-состояние для устройства и целевое S-состояние для системы. Сочетание D-состояний и S-state всегда будет соответствовать сведениям, предоставленным _SxW объектами устройства.
Источники питания для пробуждения (_PRW)
В некоторых случаях для включения устройства для пробуждения необходимо включить дополнительные ресурсы питания. В этом случае устройство может предоставить объекту _PRW список этих дополнительных ресурсов питания. Драйвер Windows ACPI, Acpi.sys, будет управлять этими ресурсами питания, как обычно: он включает их, когда они нужны устройству (то есть устройству с функцией пробуждения), и отключает в противном случае.
_PRW используется также для определения возможности выхода из спящего режима для традиционных (аппаратного обеспечения с полным ACPI) ПК.