Из Википедии, бесплатной энциклопедии
  (Перенаправлено из интерфейса ошибок платформы ACPI )
Перейти к навигации Перейти к поиску

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

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

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

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

Архитектура [ править ]

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

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

Архитектура компонентов ACPI (ACPICA) [ править ]

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

История [ править ]

Первая редакция спецификации ACPI была выпущена в декабре 1996 года, поддерживая 16, 24 и 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], в которой добавлена поддержка архитектуры ARM . Версия 5.1 была выпущена в июле 2014 года. [19]

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

Операционные системы [ править ]

Windows 98 от Microsoft была первой операционной системой, реализовавшей 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 и версии Solaris для ПК имеют хотя бы некоторую поддержку ACPI. [29] Некоторые новые операционные системы, такие как Windows Vista , требует компьютера , чтобы иметь ACPI-совместимый BIOS, и с тех пор Windows 8 , то S0ix / Современное Standby состояние было реализовано. [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]

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

Состояния устройства [ править ]

Состояния устройства D0 - D3 зависят от устройства:

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

Состояния процессора [ править ]

Состояния питания ЦП C0 - C3 определяются следующим образом:

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

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

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

P-состояния стали называться SpeedStep в процессорах Intel, как PowerNow! или Cool'n'Quiet в процессорах AMD и как PowerSaver в процессорах VIA .

  • 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, FACS, 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 , были уличены в использовании этой функции для установки вредоносного программного обеспечения, такого как Superfish . [51] Более ранние версии Windows, чем Windows 7, не поддерживают эту функцию, но можно использовать альтернативные методы. Такое поведение сравнивают с руткитами . [52]

См. Также [ править ]

  • Управление питанием в активном состоянии
  • Coreboot
  • Экологичные вычисления
  • Клавиши управления питанием
  • Унифицированный расширяемый интерфейс встроенного ПО
  • Wake On LAN
  • SBSA

Ссылки [ править ]

  1. ^ Спецификация PCI BIOS, PCI-SIG
  2. ^ Спецификация прошивки PCI , PCI-SIG
  3. ^ «Обзор ACPI» (PDF) . www.acpi.info . Архивировано из оригинала ( слайд-шоу в формате PDF) 25 мая 2019 года.
  4. ^ «Спецификация APM BIOS» . Корпорация Intel , корпорация Microsoft . Февраль 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. ^ a b «Расширенная конфигурация и спецификация интерфейса питания, версия 6.3» (PDF) . UEFI.org/specifications . Январь 2019 . Проверено 30 января 2019 года .
  9. Бернхард Кауэр (август 2009 г.). «ATARE: таблицы ACPI и регулярные выражения» (PDF) . Проверено 18 февраля 2019 года .
  10. ^ a b Реализация ACPI на FreeBSD - Usenix
  11. ^ ACPI в Linux , 2005 г.
  12. ^ a b c Linux Magazine, выпуск 162, май 2014 г., стр.9
  13. ^ Сирлс, Doc (25 ноября 2003). «Линус и лунатики, часть II» . Linux Journal . Проверено 13 января 2010 года .
  14. Корбет, Джонатан (4 июля 2001 г.). «Развитие ядра» . Еженедельный выпуск LWN.net . LWN.net . Проверено 2 июля 2010 года .
  15. ^ Linux Format n ° 184, июнь 2014 г., стр.
  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. ^ Роберт Cowart; Брайан Книттель (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. ^ Therien, Гай (6 января 2000). «Технический обзор спецификации ACPI 2.0, Форум разработчиков Intel» (PPT) . Корпорация Intel. Архивировано 21 июля 2011 года . Проверено 21 августа 2011 года .
  30. ^ Маршалл, Аллен. «ACPI в Windows Vista» (PPT) . Корпорация Microsoft . Проверено 2 июля 2010 года .
  31. ^ «Acpi.sys: драйвер Windows ACPI» . Корпорация Microsoft . 15 июня 2017 . Проверено 20 сентября 2019 года .
  32. ^ a b Состояние 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» . AnandTech . Проверено 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" . software.intel.com . 9 марта 2020.
  41. ^ «Athlon II X2: аппаратное обеспечение C1E и возвращение ошибки CnQ» . AnandTech . Проверено 26 октября, 2020 .
  42. Уоссон, Скотт (21 февраля 2005 г.). «Процессоры Intel Pentium 4 600 серии» . Технический отчет . п. 2.
  43. ^ "Пакет процессора и основные C-состояния" . AnandTech . 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. Перейти ↑ Brown, Len (20 июля 2005 г.). «ACPI в Linux». Симпозиум по Linux в Оттаве : 3. CiteSeerX 10.1.1.173.2206 . 
  47. ^ «Таблицы ACPI - Документация ядра Linux» . www.kernel.org . Проверено 8 ноября 2020 года .
  48. ^ "DSDT" . ArchWiki .
  49. ^ «Начало работы с ACPI» . GitBook .
  50. ^ Блог Марка Шаттлворта (2014-03-17), ACPI, прошивка и ваша безопасность
  51. ^ Хоффман, Крис. «Zombie Crapware: как работает двоичная таблица платформы Windows» . How-To Geek .
  52. ^ «Руткит производителей:« Двоичная таблица платформы Windows »(WPBT)» . Born's Tech и Windows World .

Внешние ссылки [ править ]

  • Официальный сайт (спецификации UEFI и ACPI)
  • Все, что вам нужно знать о режимах энергосбережения CPU C-States
  • Пример кода ASL (в файлах * .dsl) из проекта SeaBIOS
  • Пример кода EFI ASL, используемого VirtualBox ; Сам код EFI / ASL взят из набора Intel EFI Development Kit II с открытым исходным кодом ( TianoCore )
  • ACPICA

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.