Расширенная конфигурация и интерфейс питания - Advanced Configuration and Power Interface

В компьютере Расширенная конфигурация и интерфейс питания (ACPI) обеспечивает открытый стандарт который операционные системы можно использовать для обнаружения и настройки компьютерное железо компоненты, чтобы выполнить управление энергопотреблением путем (например) перевода неиспользуемых компонентов в спящий режим и выполнения мониторинга состояния. Впервые выпущенный в декабре 1996 года, ACPI призван заменить Расширенное управление питанием (APM), Спецификация многопроцессора, спецификация PCI BIOS,[1][2] и Подключи и играй BIOS (PnP) Спецификация.[3] ACPI передает управление питанием под контроль операционной системы, в отличие от предыдущей системы, ориентированной на BIOS, которая полагалась на микропрограммное обеспечение конкретной платформы для определения политик управления питанием и конфигурации.[4] Спецификация занимает центральное место в Конфигурация под управлением операционной системы и управление питанием (OSPM), реализация ACPI, которая снимает обязанности по управлению устройством с устаревших интерфейсов микропрограмм через пользовательский интерфейс. ACPI определяет аппаратная абстракция интерфейс между системной прошивкой (BIOS или же UEFI ) и операционные системы.[5][6]

Внутри ACPI объявляет доступные компоненты и их функции ядро операционной системы используя списки инструкций ("методы ") предоставляется через систему прошивка (UEFI или же BIOS ), который разбирает ядро. Затем ACPI выполняет желаемые операции, записанные в Машинный язык ACPI (например, инициализация аппаратных компонентов) с использованием встроенного минимального виртуальная машина.

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

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

Архитектура

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

Поскольку ACPI также заменяет PnP BIOS, он также предоставляет аппаратный перечислитель, в основном реализованный в таблице ACPI дифференцированной таблицы описания системы (DSDT). Преимущество подхода с использованием байт-кода заключается в том, что в отличие от кода PnP BIOS (который был 16-битным), байт-код ACPI может использоваться в любой операционной системе, даже в 64-битной. длинный режим.[11]

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

Компонентная архитектура ACPI (ACPICA)

В Архитектура компонентов ACPI (ACPICA), в основном написанный инженерами Intel, предоставляет Открытый исходный код платформо-независимая эталонная реализация кода ACPI, связанного с операционной системой.[16] Код ACPICA используется Linux, Хайку, ArcaOS[17] и FreeBSD,[10] которые дополняют его кодом, специфичным для операционной системы.

История

Первая редакция спецификации ACPI была выпущена в декабре 1996 г., поддерживая 16 и 32-битный адресные пространства. Только в августе 2000 года ACPI получил 64-битный адресная поддержка, а также поддержка многопроцессорных рабочих станций и серверов с версией 2.0.

В сентябре 2004 года была выпущена ревизия 3.0, в которой в спецификации ACPI появилась поддержка для SATA контроллеры, PCI Express автобус мультипроцессор поддержка более 256 процессоров, датчики внешней освещенности и устройства присутствия пользователя, а также расширение тепловой модели за пределы предыдущей ориентированной на процессор поддержки.

Выпущенная в июне 2009 года версия 4.0 спецификации ACPI добавила в дизайн различные новые функции; наиболее примечательными являются USB 3.0 поддержка, поддержка холостого хода логического процессора и x2APIC поддерживать.

Версия 5.0 спецификации ACPI была выпущена в декабре 2011 г.[18] за которым последовала версия 5.1, выпущенная в июле 2014 года.[19]

Последняя версия спецификации - 6.3, выпущенная в конце января 2019 года.[8]

Операционные системы

Microsoft Windows 98 была первой операционной системой, реализовавшей ACPI,[20][21] но его реализация была несколько ошибочной или неполной,[22][23] хотя некоторые из проблем, связанных с этим, были вызваны оборудованием ACPI первого поколения.[24] Первая редакция Windows 98 отключила ACPI по умолчанию, кроме белого списка систем. Другие операционные системы, включая более поздние версии Windows, eComStation, ArcaOS,[25] FreeBSD (начиная с FreeBSD 5.0[26]), NetBSD (начиная с NetBSD 1.6[27]), OpenBSD (начиная с OpenBSD 3.8[28]), HP-UX, OpenVMS, Linux, и ПК версии Солярис, есть хоть какая-то поддержка ACPI.[29] Некоторые новые операционные системы, например Виндоус виста (и позже Майкрософт Виндоус ), требуется, чтобы на компьютере был установлен ACPI-совместимый BIOS, а поскольку Windows 8, то S0ix / современный режим ожидания состояние было реализовано.[30]

Операционные системы Windows используют acpi.sys[31] для доступа к событиям ACPI.

В ядре Linux серии 2.4 была только минимальная поддержка ACPI, с улучшенной поддержкой, реализованной (и включенной по умолчанию) начиная с версии ядра 2.6.0.[32] Старые реализации ACPI BIOS, как правило, содержат множество ошибок и, следовательно, не поддерживаются более поздними операционными системами. Например, Windows 2000, Windows XP, и Windows Server 2003 Используйте ACPI только в том случае, если дата BIOS после 1 января 1999 г., а для Windows 98 Second Edition эта дата - 1 декабря 1999 г.[33] Точно так же ядро ​​Linux 2.6 помещало в черный список любой ACPI BIOS до 1 января 2001 года.[32]

Операционные системы на базе Linux могут предоставлять доступ к событиям ACPI через acpid.[34]

Обязанности OSPM

Как только OSPM-совместимая операционная система активирует ACPI, она получает исключительный контроль над всеми аспектами управления питанием и конфигурацией устройства. Реализация OSPM должна предоставлять драйверам устройств ACPI-совместимую среду, которая раскрывает определенные состояния системы, устройства и процессора.

Состояния питания

Глобальные состояния

Спецификация ACPI определяет следующие четыре глобальных состояния «Gx» и шесть состояний сна «Sx» для ACPI-совместимой компьютерной системы:[35][36]

GxИмяSxОписание
G0РаботающийS0Компьютер работает, а ЦП выполняет инструкции. "Awaymode" - это подмножество S0, при котором монитор выключен, но фоновые задачи выполняются.
G1СпатьS0ixСовременный режим ожидания,[37] или «Низкое энергопотребление S0 в режиме ожидания». Частичный спящий режим SoC процессора.[38][39] Известен на устройствах ARM и x86.
S1Режим ожидания при включении (POS): Кеши процессора очищаются, и ЦП прекращают выполнение инструкций. Питание ЦП и ОЗУ сохраняется. Устройства, которые не указывают, что они должны оставаться включенными, могут быть отключены
S2CPU выключен. Грязный кеш сбрасывается в ОЗУ
S3обычно называют Ожидать, Спать, или же Приостановить в ОЗУ (STR): баран остается включенным
S4Гибернации или же Приостановить на диск: Все содержание основная память сохраняется в энергонезависимая память например, жесткий диск, и система выключена
G2Soft OffS5G2 / S5 почти такой же, как G3 Механическое выключение, за исключением того, что блок питания (PSU) по-прежнему подает питание, как минимум, на кнопку питания, чтобы можно было вернуться к S0. Требуется полная перезагрузка. Предыдущее содержимое не сохраняется. Другие компоненты могут оставаться под напряжением, чтобы компьютер мог "просыпаться" при вводе с клавиатуры, часов, модем, LAN, или же USB устройство
G3Механическое выключениеПитание компьютера было полностью отключено с помощью механического переключателя (как на задней панели блока питания). Шнур питания можно вынуть, и система безопасна для разборки (обычно только часы реального времени продолжает работать, используя свою маленькую батарею)

Спецификация также определяет Наследие состояние: состояние операционной системы, которая не поддерживает ACPI. В этом состоянии оборудование и питание не управляются через ACPI, что фактически отключает ACPI.

Состояния устройства

Состояние устройства D0D3 зависят от устройства:

  • D0 или же Полностью включен это рабочее состояние.
    • Как и в случае с S0ix, у Intel D0ix состояния для промежуточных уровней на SoC.[40]
  • D1 и D2 являются промежуточными состояниями мощности, определение которых зависит от устройства.
  • D3: Состояние D3 делится на D3 Горячий (имеет вспомогательное питание), и D3 Холодный (без питания):
    • Горячей: Устройство может подтверждать запросы управления питанием для перехода в состояния с более высоким энергопотреблением.
    • Холодный или же Выключенный устройство выключено и не отвечает на свою шину.

Состояния процессора

Состояние питания процессора C0C3 определяются следующим образом:

  • C0 это рабочее состояние.
  • C1 (часто известный как Остановка) - это состояние, в котором процессор не выполняет инструкции, но может вернуться в состояние выполнения практически мгновенно. Все ACPI-совместимые процессоры должны поддерживать это состояние питания. Некоторые процессоры, такие как Pentium 4 и AMD Athlon, также поддерживают состояние Enhanced C1 (C1E или Enhanced Halt State) для снижения энергопотребления, однако на некоторых системах это оказалось ошибочным.[41][42]
  • C2 (часто известный как Секундомер) - это состояние, при котором процессор поддерживает все программно-видимое состояние, но для пробуждения может потребоваться больше времени. Это состояние процессора не является обязательным.
  • C3 (часто известный как Спать) - это состояние, при котором процессору не нужно сохранять кэш согласованный, но поддерживает другое состояние. У некоторых процессоров есть варианты состояния C3 (Deep Sleep, Deeper Sleep и т. Д.), Которые различаются по времени, необходимому для пробуждения процессора. Это состояние процессора не является обязательным.
  • Дополнительные состояния определены производителями для некоторых процессоров. Например, Intel с Haswell платформа имеет состояния до C10, где он отличает основной государства и упаковка состояния.[43]

Состояние производительности

Пока устройство или процессор работает (D0 и C0 соответственно), оно может находиться в одном из нескольких состояния мощности. Эти состояния зависят от реализации. P0 - всегда состояние с максимальной производительностью, от P1 до Pп являясь последовательно более низкими состояниями, вплоть до предела конкретной реализации, равного п не более 16.[44]

P-состояния стали известны как SpeedStep в Intel процессоры, как PowerNow! или же Cool'n'Quiet в AMD процессоры, и как PowerSaver в ЧЕРЕЗ процессоры.

  • P0 максимальная мощность и частота
  • P1 меньше, чем P0, напряжение и частота масштабируются
  • P2 меньше, чем P1, напряжение и частота масштабируются
  • Pn меньше, чем P (n – 1), напряжение и частота масштабируются

Аппаратный интерфейс

ACPI-совместимые системы взаимодействуют с аппаратным обеспечением либо через «функциональный фиксированный аппаратный интерфейс (FFH) Interface», либо через платформо-независимую модель программирования аппаратного обеспечения, которая опирается на платформенно-зависимый машинный язык ACPI (AML), предоставляемый производитель оригинального оборудования (OEM).

Функция Фиксированные аппаратные интерфейсы - это специфические для платформы функции, предоставляемые производителями платформы для повышения производительности и восстановления после сбоев. Стандарт Intel -основан ПК иметь фиксированный функциональный интерфейс, определенный Intel,[45] который обеспечивает набор основных функций, которые сокращают потребность ACPI-совместимой системы в полных стеках драйверов для обеспечения базовой функциональности во время загрузки или в случае серьезного сбоя системы.

Интерфейс ошибок платформы ACPI (APEI) - это спецификация для сообщения об аппаратных ошибках, например от набора микросхем до операционной системы.

Интерфейс прошивки

ACPI определяет множество таблиц, которые обеспечивают интерфейс между ACPI-совместимыми Операционная система и системная прошивка (BIOS или же UEFI ). Сюда входят, например, RSDP, RSDT, XSDT, FADT, DSDT, SSDT, MADT и MCFG.[46][47]

Таблицы позволяют описывать аппаратное обеспечение системы независимым от платформы способом и представлены либо в виде структур данных с фиксированным форматом, либо в виде AML. Основная таблица AML - это DSDT (таблица описания дифференцированной системы). AML можно декомпилировать с помощью таких инструментов, как Intel iASL (с открытым исходным кодом, часть ACPICA) для таких целей, как исправление таблиц для расширения совместимости с ОС.[48][49]

Указатель описания корневой системы (RSDP) расположен в зависимости от платформы и описывает остальные таблицы.

Риски безопасности

Ubuntu основатель Марк Шаттлворт сравнил ACPI с троянские кони.[50] Он описал проприетарный микропрограммное обеспечение (связанное с ACPI или любое другое микропрограммное обеспечение) в качестве угрозы безопасности, говоря, что АНБ лучший друг "и вызывающая прошивка (ACPI или не ACPI)" троянский конь монументальных размеров ». Он указал на низкое качество, закрытый исходный код Прошивка представляет собой серьезную угрозу безопасности системы:[12] "Ваша самая большая ошибка - предположить, что АНБ - единственное учреждение, злоупотребляющее этой позицией доверия - на самом деле, разумно предположить, что вся прошивка - это помойка незащищенности, любезности высшей степени некомпетентности со стороны производителей и высочайшей компетенции очень широкого круга таких агентств . "В качестве решения этой проблемы он призвал Открытый исходный код, декларативный прошивка (ACPI или без ACPI),[12] который вместо того, чтобы содержать исполняемый код, описывает только «аппаратную связь и зависимости».

Специальная таблица ACPI, называемая двоичной таблицей платформы Windows (WPBT), используется Microsoft, чтобы позволить поставщикам автоматически добавлять программное обеспечение в ОС Windows. Некоторые поставщики, например Lenovo и Samsung, были уличены в использовании этой функции для установки вредоносного ПО, например Суперфиш.[51] Версии Windows более ранние, чем Windows 7, не поддерживают эту функцию, но можно использовать альтернативные методы. Это поведение сравнивали с руткиты.[52]

Смотрите также

Рекомендации

  1. ^ Спецификация PCI BIOS, PCI-SIG
  2. ^ Спецификация прошивки PCI, PCI-SIG
  3. ^ «Обзор ACPI» (PDF). www.acpi.info. Архивировано из оригинал (слайд-шоу в PDF) 25 мая 2019 г.
  4. ^ «Спецификация APM BIOS». Корпорация Intel, Корпорация Майкрософт. Февраль 1996 г. Архивировано с оригинал (RTF) 26 февраля 2012 г.. Получено 2 июля, 2010.
  5. ^ «Что такое ACPI (Advanced Configuration and Power Interface)? - Определение с сайта WhatIs.com». SearchWindowsServer. Получено 18 сентября, 2020.
  6. ^ «Дерево устройств ACPI - Представление пространства имен ACPI - Документация ядра Linux». www.kernel.org. Получено 18 сентября, 2020.
  7. ^ «На веб-странице Advanced Configuration & Power Interface есть заметное примечание, которое ссылается на страницу с уже существующими спецификациями ACPI на веб-сайте UEFI». acpi.org. 23 июля 2014 г.. Получено 25 января, 2016.
  8. ^ а б «Расширенная конфигурация и спецификация интерфейса питания, версия 6.3» (PDF). UEFI.org/specifications. Январь 2019. Получено 30 января, 2019.
  9. ^ Бернхард Кауэр (август 2009 г.). «ATARE: таблицы ACPI и регулярные выражения» (PDF). Получено 18 февраля, 2019.
  10. ^ а б Реализация ACPI на FreeBSD - Usenix
  11. ^ а б ACPI в Linux, 2005
  12. ^ а б c Linux Magazine, выпуск 162, май 2014 г., стр.9
  13. ^ Сирлс, Док (25 ноября 2003 г.). "Линус и лунатики, часть 2". Linux журнал. Получено 13 января, 2010.
  14. ^ Корбет, Джонатан (4 июля 2001 г.). «Разработка ядра». Еженедельный выпуск LWN.net. LWN.net. Получено 2 июля, 2010.
  15. ^ Linux Format n ° 184, июнь 2014 г., стр.7.
  16. ^ ACPICA: Архитектура компонентов ACPI
  17. ^ «Файл Readme для пакета драйверов ACPI». arcanoae.com. Получено 6 сентября, 2020.
  18. ^ Hewlett Packard; Корпорация Intel; Microsoft; Phoenix Technologies; Toshiba (6 декабря 2011 г.). «Расширенная конфигурация и спецификация интерфейса питания (версия 5.0)» (PDF). acpi.info. Получено 17 ноября, 2013.
  19. ^ «Расширенная конфигурация и спецификация интерфейса питания (версия 5.1)» (PDF). uefi.org. 23 июля 2014 г.. Получено 24 мая, 2015.
  20. ^ «Ограничения при использовании Microsoft Windows 98 на портативных компьютерах Compaq Armada» (PDF). Physik.hu-berlin.de. Октябрь 1998. с. 3. Получено 27 января, 2014.[постоянная мертвая ссылка ]
  21. ^ «Windows 98 в системах ThinkPad - ThinkPad General». Support.lenovo.com. Архивировано из оригинал 3 февраля 2014 г.. Получено 27 января, 2014.
  22. ^ Роберт Коварт; Брайан Книттель (2000). Использование Microsoft Windows 2000 Professional. Que Publishing. п.30. ISBN  978-0-7897-2125-9.
  23. ^ Windows 98 не поддерживает режим пассивного охлаждения ACPI
  24. ^ "История с обложки: ошибки и исправления Win98 - декабрь 1998 г.". winmag.com. Архивировано из оригинал 13 октября 1999 г.
  25. ^ «Журнал изменений ArcaOS». Получено 24 августа, 2020.
  26. ^ "Объявление о выпуске FreeBSD 5.0". www.freebsd.org. Получено 3 декабря, 2020.
  27. ^ "acpi (4) - Справочные страницы NetBSD". man.netbsd.org. Получено 3 декабря, 2020.
  28. ^ "acpi (4) - страницы руководства OpenBSD". man.openbsd.org. Получено 3 декабря, 2020.
  29. ^ Териен, Гай (6 января 2000 г.). "Технический обзор спецификации ACPI 2.0, Форум разработчиков Intel" (PPT). Корпорация Intel. В архиве из оригинала 21 июля 2011 г.. Получено 21 августа, 2011.
  30. ^ Маршалл, Аллен. «ACPI в Windows Vista» (PPT). Корпорация Майкрософт. Получено 2 июля, 2010.
  31. ^ «Acpi.sys: драйвер Windows ACPI». Корпорация Майкрософт. 15 июня 2017 г.. Получено 20 сентября, 2019.
  32. ^ а б Состояние ACPI в ядре Linux
  33. ^ ACPI BIOS. msdn.microsoft.com.
  34. ^ "acpid в Debian". Debian. 2 июля 2011 г.. Получено 20 сентября, 2019.
  35. ^ ACPI Spec Rev 5.0 - от 6 декабря 2011 г.
  36. ^ Ананд Лал Шимпи (5 октября 2012 г.). «Анализ архитектуры Intel Haswell». АнандТех. Получено 20 октября, 2013.
  37. ^ Windows-драйвер-контент. «Современный режим ожидания». docs.microsoft.com. Получено 20 марта, 2020.
  38. ^ "S0ix States". software.intel.com. 9 марта 2020.
  39. ^ Ван, Венди (17 октября 2018 г.). «Как достичь состояний S0ix в Linux *». 01.org.
  40. ^ "D0ix States". software.intel.com. 9 марта 2020.
  41. ^ "Athlon II X2: аппаратное обеспечение C1E и возвращение ошибки CnQ". АнандТех. Получено 26 октября, 2020.
  42. ^ Уоссон, Скотт (21 февраля 2005 г.). «Процессоры Intel Pentium 4 600 серии». Технический отчет. п. 2.
  43. ^ "Пакет процессора и C-состояния ядра". АнандТех. 9 июня 2013 г.. Получено 20 октября, 2013.
  44. ^ «Спецификация расширенной конфигурации и интерфейса питания, версия 3.0, раздел 2.6, определения состояния производительности устройства и процессора» (PDF). ACPI.info. 2 сентября 2004 г. с. 23. Получено 19 августа, 2015.
  45. ^ Корпорация Intel (Сентябрь 2006 г.). "ACPI для конкретного производителя процессора Intel" (PDF). Архивировано из оригинал (PDF) 25 декабря 2012 г.. Получено 5 октября, 2014.
  46. ^ Браун, Лен (20 июля 2005 г.). «ACPI в Linux». Симпозиум по Linux в Оттаве: 3. CiteSeerX  10.1.1.173.2206.
  47. ^ «Таблицы ACPI - документация ядра Linux». www.kernel.org. Получено 8 ноября, 2020.
  48. ^ «ДСДТ». ArchWiki.
  49. ^ «Начало работы с ACPI». GitBook.
  50. ^ Блог Марка Шаттлворта (17 марта 2014 г.), ACPI, прошивка и ваша безопасность
  51. ^ Хоффман, Крис. «Zombie Crapware: как работает двоичная таблица платформы Windows». Как Компьютерщик.
  52. ^ «Руткит производителей:« Двоичная таблица платформы Windows »(WPBT)». Born's Tech и мир Windows.

внешняя ссылка

Статья основана на материалах, взятых из Бесплатный онлайн-словарь по вычислительной технике до 1 ноября 2008 г. и зарегистрированы в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.