ACPI
ACPI (Advanced Configuration and Power Interface — усовершенствованный интерфейс управления конфигурацией и питанием) — открытый промышленный стандарт, впервые выпущенный в декабре 1996 года и разработанный совместно компаниями HP, Intel, Microsoft, Phoenix и Toshiba, который определяет общий интерфейс для обнаружения аппаратного обеспечения, управления питанием и конфигурации материнской платы и устройств. Спецификация 2.0 была представлена в сентябре 2000 года. Она распространяется на более широкий спектр компьютеров, включая корпоративные серверы, настольные системы и ноутбуки. Кроме того, в ACPI 2.0 добавлена поддержка 64-разрядных микропроцессоров для серверов, поддержка различных типов памяти, устройств PCI и PCI-X. Версия спецификации 3.0b была выпущена 10 октября 2006 года.
На настоящий момент версией спецификации ACPI является версия 5.0, выпущенная 6 декабря 2011 года.
Задача ACPI — обеспечить взаимодействие между операционной системой, аппаратным обеспечением и BIOS материнской платы. ACPI пришло на смену технологии APM (англ. Advanced Power Management).
Наиболее известной частью стандарта ACPI является управление питанием, имеющее два значительных усовершенствования по сравнению с предшествующими стандартами. Во-первых, концепция ACPI передаёт управление питанием операционной системе (ОS). Такая модель выгодно отличается от существовавшей до этого модели APM (Advanced Power Manager), в которой за управление питанием ответственен BIOS материнской платы, а возможности ОС в этом отношении сильно ограничены. В модели ACPI BIOS предоставляет операционной системе методы для прямого детализированного управления аппаратным обеспечением. Таким образом, ОС получает практически полный контроль над энергопотреблением.
Другая важная часть спецификации ACPI — это предоставление на серверах и настольных компьютерах таких возможностей по управлению питанием, которые до того были доступны только на портативных компьютерах. Например, система может быть переведена в состояние чрезвычайно низкого энергопотребления, в котором питание подается лишь на оперативную память (а возможно, и она находится без питания), но при этом прерывания некоторых устройств (часы реального времени, клавиатура, модем и т. д.) могут достаточно быстро перевести систему из такого состояния в нормальный рабочий режим (то есть «пробудить» систему).
Помимо требований к программному интерфейсу ACPI также требует специальной поддержки от аппаратного обеспечения. Таким образом, поддержку ACPI должны иметь ОС, чипсет материнской платы и даже центральный процессор.
В наши дни различные версии ACPI поддерживаются всеми версиями Microsoft Windows, начиная с Windows 98, системами GNU/Linux, FreeBSD, OpenBSD, NetBSD и eComStation и др.. Интерфейс ACPI организуется путём размещения в определённой области оперативной памяти нескольких таблиц, содержащих описание аппаратных ресурсов и программных методов управления ими. Каждый тип таблицы имеет определённый формат, описанный в спецификации. Кроме того, таблицы, содержащие методы управления устройствами и обработчики событий ACPI, содержат код на языке AML (ACPI Machine Language) — машинно-независимый набор инструкций, представленный в компактной форме. Операционная система, поддерживающая ACPI, содержит интерпретатор AML, который транслирует инструкции AML в инструкции центрального процессора, выполняя таким образом методы или обработчики событий.
Некоторые из этих таблиц полностью или частично хранят статические данные в том смысле, что от запуска к запуску системы, они не изменяются. Статические данные, как правило, создаются производителем материнской платы или BIOS и описываются на специальном языке ASL (ACPI Source Language), а затем компилируются в представление на AML.
Другие таблицы хранят динамические данные, которые зависят, например, от установок BIOS и комплектации материнской платы. Такие таблицы формируются BIOS на этапе загрузки системы до передачи управления ОС.
Роль ОС в этой модели заключается в том, что она переводит различные компоненты аппаратного обеспечения из одного состояния (например, нормальный режим работы) в другое (например, режим пониженного энергопотребления). Переход из одного состояния в другое происходит, как правило, по событию. Например, падение температуры на ядре процессора является событием, по которому ОС может вызвать метод уменьшения скорости вращения вентилятора. Другой пример: пользователь дал явное указание перехода системы в спящее состояние с сохранением оперативной памяти на диск, а через некоторое время администратор сети произвёл включение системы c помощью функции Wake-on-LAN.
Выделяют следующие основные состояния «системы в целом»:
- G0 (S0) (Working) — нормальная работа.
- G1 (Suspend, Sleeping, Sleeping Legacy) — машина выключена, однако текущий системный контекст (system context) сохранён, работа может быть продолжена без перезагрузки. Для каждого устройства определяется «степень потери информации» в процессе засыпания, а также где информация должна быть сохранена и откуда будет прочитана при пробуждении и время на пробуждение из одного состояния до другого (например, от сна до рабочего состояния).
Выделяют 4 состояний сна:
S1 — состояние при котором все процессорные кэши сброшены и процессоры прекратили выполнение инструкций. Однако, питание процессоров и оперативной памяти поддерживается; устройства, которые не обозначили, что они должны оставаться включенными, могут быть отключены;
S2 — более глубокое состояние сна, чем S1, когда центральный процессор отключен, обычно, однако, не используемое;
S3 («Suspend to RAM» (STR) в BIOS, «Ждущий режим» («Standby») в версиях Windows и в некоторых вариациях Linux, «Sleep» в Windows Vista и Mac OS X, хотя в спецификациях ACPI упоминается только как S3 и Sleep) — в этом состоянии на оперативную память (ОЗУ) продолжает подаваться питание и она остаётся практически единственным компонентом, потребляющим энергию. Так как состояние операционной системы и всех приложений, открытых документов и т. д. хранится в оперативной памяти, пользователь может возобновить работу точно на том месте, где он её оставил — состояние оперативной памяти при возвращении из S3 то же, что и до входа в этот режим. В спецификации указано, что S3 довольно похож на S2, только чуть больше компонентов отключаются в S3.
S3 имеет два преимущества над S4: компьютер быстрее возвращается в рабочее состояние, и, второе, если запущенная программа (открытые документы и т. д.) содержит частную информацию, то эта информация не будет принудительно записана на диск. Однако, дисковые кэши могут быть сброшены на диск для предотвращения нарушения целостности данных в случае, если система не просыпается, например, из-за сбоя питания;
S4 («Спящий режим» (Hibernation) в Windows, «Safe Sleep» в Mac OS X, также известен как «Suspend to disk», хотя спецификация ACPI упоминает только термин S4) — в этом состоянии всё содержимое оперативной памяти сохраняется в энергонезависимой памяти, такой как жёсткий диск: состояние операционной системы, всех приложений, открытых документов и т. д. Это означает, что после возвращения из S4, пользователь может возобновить работу с места, где она была прекращена, аналогично режиму S3. Различие между S4 и S3, кроме дополнительного времени на перемещение содержимого оперативной памяти на диск и назад, - в том, что перебои с питанием компьютера в S3 приведут к потере всех данных в оперативной памяти, включая все несохранённые документы, в то время как компьютер в S4 этому не подвержен. S4 весьма отличается от других состояний S и сильнее S1-S3 напоминает G2 Soft Off и G3 Mechanical Off. Система, находящаяся в S4, может быть также переведена в G3 Mechanical Off (Механическое выключение) и все ещё оставаться S4, сохраняя информацию о состоянии так, что можно восстановить операционное состояние после подачи питания.
G2 (S5) (soft-off) — мягкое (программное) выключение; система полностью остановлена, но под напряжением, готова включиться в любой момент. Системный контекст утерян.
G3 (mechanical off) — механическое выключение системы; блок питания ATX отключен.
Дополнительно — технология OnNow от Microsoft (Расширения S1-S4 состояния G1). Также Windows 7 поддерживает "Гибридный спящий режим", сочетающий в себе преимущества S1/S3 (быстрота пробуждения) и S4 (защищённость от сбоев электропитания). Так же он реализован в GNU/Linux (pm-suspend-hybrid), аналогичная реализация в Mac OS X имеет название Safe Sleep.
Состояния центрального процессора.
Выделяют четыре состояния функционирования процессора (от C0 до C3).
C0 — оперативный (рабочий) режим.
C1 (известно как Halt) — состояние, в котором процессор не исполняет инструкции, но может незамедлительно вернуться в рабочее состояние. Некоторые процессоры, например Pentium 4, также поддерживают состояние Enhanced C1 (C1E), для более низкого энергопотребления.
C2 (известно как Stop-Clock) — состояние, в котором процессор обнаруживается приложениями, но для перехода в рабочий режим требуется время.
C3 (известно как Sleep) — состояние, в котором процессор отключает собственный кэш, но готов к переходу в другие состояния.
Состояния устройств.
Выделяют четыре состояния функционирования других устройств (монитор, модем, шины, сетевые карты, видеокарта, диски, флоппи и т. д.) — от D0 до D3.
D0 — полностью оперативное состояние, устройство включено.
D1 и D2 — промежуточные состояния, активность определяется устройством.
D3 — устройство выключено.