Расширенная конфигурация и интерфейс питания


В компьютере расширенный интерфейс конфигурации и питания ( ACPI ) предоставляет открытый стандарт , который операционные системы могут использовать для обнаружения и настройки аппаратных компонентов компьютера, для выполнения управления питанием (например, перевода неиспользуемых аппаратных компонентов в спящий режим), для выполнения автоматической настройки (например, Plug and Play и горячая замена ), а также для мониторинга состояния. Впервые выпущенный в декабре 1996 года, ACPI призван заменить Advanced Power Management (APM), спецификацию MultiProcessor и спецификацию Plug and Play BIOS (PnP). [1]ACPI переносит управление питанием под контроль операционной системы, в отличие от предыдущей системы, ориентированной на BIOS, которая полагалась на прошивку для конкретной платформы для определения политик управления питанием и конфигурации. [2] Спецификация занимает центральное место в системе конфигурации и управления питанием, ориентированной на операционную систему ( OSPM ). ACPI определяет интерфейсы аппаратной абстракции между прошивкой устройства (например, BIOS , UEFI ), аппаратными компонентами компьютера и операционными системами . [3] [4]

Внутри ACPI сообщает о доступных компонентах и ​​их функциях ядру операционной системы, используя списки инструкций (« методы »), предоставляемые системной прошивкой ( UEFI или BIOS ), которые анализирует ядро. Затем ACPI выполняет необходимые операции, написанные на машинном языке ACPI (такие как инициализация аппаратных компонентов), используя встроенную минимальную виртуальную машину .

Изначально стандарт разработали Intel , Microsoft и Toshiba , а позже в нем также участвовали HP , Huawei и Phoenix . В октябре 2013 года ACPI Special Interest Group (ACPI SIG), первоначальные разработчики стандарта ACPI, согласились передать все активы UEFI Forum , в котором и будет происходить вся дальнейшая разработка. [5]

Форум UEFI опубликовал последнюю версию стандарта «Ревизия 6.4» в конце января 2021 года. [6]

ACPI на уровне прошивки состоит из трех основных компонентов: таблиц ACPI, ACPI BIOS и регистров ACPI. ACPI BIOS генерирует таблицы ACPI и загружает их в оперативную память . Многие функции ACPI встроенного ПО представлены в байт - коде машинного языка ACPI (AML), полного по Тьюрингу доменно -ориентированного низкоуровневого языка , который хранится в таблицах ACPI. [7] Чтобы использовать таблицы ACPI, операционная система должна иметь интерпретатор .для байт-кода AML. Эталонная реализация интерпретатора AML предоставляется архитектурой компонентов ACPI (ACPICA). Во время разработки BIOS байт-код AML компилируется из кода ASL (исходный язык ACPI). [8] [9]

Общее конструкторское решение не обошлось без нареканий. В ноябре 2003 года Линус Торвальдс — автор ядра Linux — описал ACPI как «полную проектную катастрофу во всех отношениях». [10] [11] В 2001 году другие старшие разработчики программного обеспечения для Linux, такие как Алан Кокс , выразили обеспокоенность по поводу требований, согласно которым байт -код из внешнего источника должен запускаться ядром с полными привилегиями, а также общей сложности спецификации ACPI. [12] В 2014 году Марк Шаттлворт , основатель дистрибутива Ubuntu Linux , сравнил ACPI с троянскими конями . [13]


Пример таблиц ACPI ноутбука Lenovo .
Этот экран был виден до тех пор, пока Microsoft не потребовал ACPI. За исключением нескольких аномалий, этот экран не отображается по умолчанию с Windows 2000, хотя его визуализация все еще существует в Windows 11.