Расширенное управление питанием ( APM ) — технический стандарт управления питанием , разработанный Intel и Microsoft и выпущенный в 1992 году [1] , который позволяет операционной системе, работающей на IBM-совместимом персональном компьютере, работать с BIOS (частью встроенного ПО компьютера ) для управления питанием . [2]
Версия 1.2 была последней версией спецификации APM, выпущенной в 1996 году. ACPI является преемником APM. Microsoft прекратила поддержку APM в Windows Vista . Ядро Linux по-прежнему в основном поддерживает APM, хотя поддержка простоя процессора APM была прекращена в версии 3.0.
APM использует многоуровневый подход к управлению устройствами. Приложения, поддерживающие APM (включая драйверы устройств), взаимодействуют с драйвером APM, специфичным для ОС. Этот драйвер взаимодействует с BIOS, поддерживающим APM, который управляет оборудованием. Существует возможность отказаться от управления APM на уровне устройств, что можно использовать, если драйвер хочет напрямую взаимодействовать с аппаратным устройством.
Связь происходит в обоих направлениях; события управления питанием отправляются из BIOS в драйвер APM, а драйвер APM отправляет информацию и запросы в BIOS через вызовы функций. Таким образом, драйвер APM является посредником между BIOS и операционной системой.
Управление питанием происходит двумя способами: посредством вышеупомянутых вызовов функций из драйвера APM в BIOS, запрашивающих изменение состояния питания, и автоматически на основе активности устройства.
В APM 1.0 и APM 1.1 управление питанием почти полностью контролируется BIOS. В APM 1.2 операционная система может управлять временем PM (например, тайм-аутом приостановки).
Существует 12 событий питания (таких как запросы на режим ожидания, приостановку и возобновление, а также уведомления о низком заряде батареи), плюс события, определенные OEM , которые могут быть отправлены из APM BIOS в операционную систему. Драйвер APM регулярно опрашивает уведомления об изменении событий.
События управления питанием: [1]
Определено 21 вызов функций APM, которые драйвер APM может использовать для запроса состояний управления питанием или запроса переходов состояний питания. [1] Примеры вызовов функций включают предоставление BIOS информации о текущем использовании ЦП (BIOS может отреагировать на такой вызов, переведя ЦП в состояние низкого энергопотребления или вернув его в состояние полного энергопотребления), получение текущего состояния питания устройства или запрос изменения состояния питания.
Спецификация APM определяет состояния питания системы и устройства.
APM определяет пять состояний питания компьютерной системы:
APM также определяет состояния питания, которые может реализовать APM-совместимое оборудование. Нет требования, чтобы APM-совместимое устройство реализовывало все состояния.
Четыре состояния:
Ядро ЦП (определяемое в APM как тактовая частота ЦП, кэш , системная шина и системные таймеры) рассматривается в APM особым образом, поскольку это последнее устройство, которое выключается, и первое устройство, которое снова включается. Ядро ЦП всегда управляется через APM BIOS (нет возможности управлять им через драйвер). Драйверы могут использовать вызовы функций APM для уведомления BIOS об использовании ЦП, но BIOS должен действовать на основе этой информации; драйвер не может напрямую приказать ЦП перейти в состояние энергосбережения.
Спецификация ATA и спецификация SATA определяют положения APM для жестких дисков, которые определяют компромисс между частотой замедления вращения и производительностью постоянного включения. В отличие от APM на стороне BIOS, ATA APM и SATA APM никогда не были устаревшими. [3]
Агрессивные частоты замедления вращения могут сократить срок службы накопителя из-за ненужного накопления циклов нагрузки; большинство современных накопителей рассчитаны на выдерживание 300 000 циклов и обычно служат не менее 600 000. С другой стороны, отсутствие замедления вращения накопителя приведет к дополнительному потреблению энергии и выделению тепла; высокие температуры также сокращают срок службы жестких дисков. [4]
ATA Spec раскрывает этот интересный факт: Код подкоманды 05h позволяет хосту включить расширенное управление питанием. Чтобы включить расширенное управление питанием, хост записывает в регистр количества секторов желаемый уровень расширенного управления питанием, а затем выполняет команду SET FEATURES с кодом подкоманды 05h.