stringtranslate.com

ACPI

Расширенный интерфейс конфигурации и питания ( ACPI ) — это открытый стандарт , который операционные системы могут использовать для обнаружения и настройки компонентов компьютерного оборудования , для управления питанием (например, перевода неиспользуемых аппаратных компонентов в спящий режим), автоматической настройки (например, Plug and Play и горячая замена ) и мониторинга состояния. Впервые он был выпущен в декабре 1996 года. ACPI призван заменить Advanced Power Management (APM), MultiProcessor Specification и 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] Последняя версия стандарта 6.5 была выпущена в августе 2022 года. [6]

Архитектура

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

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

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

История

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

В 1999 году тогдашний генеральный директор Microsoft Билл Гейтс заявил в электронном письме, что Linux выиграет от ACPI без необходимости выполнять какую-либо работу, и предложил сделать его доступным только для Windows. [12] [13] [14]

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

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

Изначально ACPI был эксклюзивным для архитектуры x86 ; Версия 5.0 спецификации ACPI была выпущена в декабре 2011 года, [15] в которую была добавлена ​​поддержка архитектуры ARM . Версия 5.1 была выпущена в июле 2014 года. [16]

Последняя версия спецификации — 6.5, выпущенная в августе 2022 года. [6]

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

Экран «Теперь можно безопасно выключить компьютер» в Windows 9x. Большинство периферийных устройств компьютера отключены, и единственный способ выйти из этого экрана — выключить или перезагрузить компьютер.
Экран «Теперь можно безопасно выключить компьютер» в Windows NT 4.0. В отличие от Windows 9x и более поздних версий NT, большинство основных периферийных устройств компьютера работают нормально, поэтому пользователь может выбрать перезагрузку вместо выключения компьютера.
Экран «Теперь можно безопасно отключить питание системы» в Windows 10 и 11.

Windows 98 от Microsoft была первой операционной системой, реализовавшей ACPI, [17] [18] но ее реализация была несколько ошибочной или неполной, [19] [20] хотя некоторые из проблем, связанных с ней, были вызваны оборудованием ACPI первого поколения. [21] Другие операционные системы, включая более поздние версии Windows , macOS (x86 macOS только), eComStation , ArcaOS , [22] FreeBSD (начиная с FreeBSD 5.0 ​​[23] ), NetBSD (начиная с NetBSD 1.6 [24] ), OpenBSD (начиная с OpenBSD 3.8 [25] ), HP-UX , OpenVMS , Linux , GNU/Hurd и версии Solaris для ПК , имеют по крайней мере некоторую поддержку ACPI. [26] Некоторые новые операционные системы, такие как Windows Vista , требуют, чтобы компьютер имел ACPI-совместимый BIOS, а начиная с Windows 8 , было реализовано состояние S0ix/Modern Standby . [27]

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

Серия 2.4 ядра Linux имела лишь минимальную поддержку ACPI, с лучшей поддержкой, реализованной (и включенной по умолчанию) начиная с версии ядра 2.6.0. [29] Старые реализации ACPI BIOS, как правило, довольно глючны и, следовательно, не поддерживаются более поздними операционными системами. Например, Windows 2000 , Windows XP и Windows Server 2003 используют ACPI только если дата BIOS после 1 января 1999 года. [30] Аналогично, ядро ​​Linux 2.6 может не использовать ACPI, если дата BIOS до 1 января 2001 года. [29]

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

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

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

Силовые государства

Глобальные государства

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

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

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

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

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

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

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

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

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

Интерфейсы

Аппаратное обеспечение

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

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

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

Прошивка

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

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

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

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

Критика

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

Общее решение по дизайну не обошлось без критики. В ноябре 2003 года Линус Торвальдс — автор ядра Linux — описал ACPI как «полную катастрофу дизайна во всех отношениях». [52] [53]

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

Дальнейшее чтение

Ссылки

  1. ^ "Обзор ACPI" (PDF) . www.acpi.info . Архивировано из оригинала ( слайд-шоу в PDF) 25 мая 2019 г.
  2. ^ "APM BIOS Specification". Intel Corporation , Microsoft Corporation . Февраль 1996. Архивировано из оригинала (RTF) 6 февраля 2012 года . Получено 2 июля 2010 года .
  3. ^ "Что такое ACPI (Advanced Configuration and Power Interface)? - Определение с сайта WhatIs.com". SearchWindowsServer . Получено 18 сентября 2020 г. .
  4. ^ «Дерево устройств ACPI — представление пространства имен ACPI — документация ядра Linux». www.kernel.org . Получено 18 сентября 2020 г. .
  5. ^ «На веб-странице Advanced Configuration & Power Interface есть заметная ссылка на страницу Preexisting ACPI Specifications на веб-сайте UEFI». acpi.org . 23 июля 2014 г. Архивировано из оригинала 22 июня 2011 г. Получено 25 января 2016 г.
  6. ^ ab "Спецификация расширенной конфигурации и интерфейса питания, выпуск 6.5" (PDF) . UEFI.org/specifications . Август 2022 г. . Получено 4 октября 2022 г. .
  7. ^ Бернхард Кауэр (август 2009 г.). "ATARE: Таблицы и регулярные выражения ACPI" (PDF) . Получено 18 февраля 2019 г.
  8. ^ ab реализация ACPI на FreeBSD - Usenix
  9. ^ ACPI в Linux, 2005
  10. ^ ACPICA: Архитектура компонентов ACPI
  11. ^ "Readme для пакета драйверов ACPI". arcanoae.com . Получено 6 сентября 2020 г. .
  12. ^ «Microsoft использует ACPI для Windows» . Der Standard (на австрийском немецком языке) . Проверено 6 ноября 2022 г.
  13. ^ «Microsoft: ACPI используется для функций Windows» . Golem.de . Проверено 6 ноября 2022 г.
  14. Гейтс, Билл (24 января 1999 г.). "Расширения ACPI" (PDF) . Архивировано из оригинала (PDF) 2 февраля 2007 г.
  15. ^ Hewlett-Packard ; Intel Corporation ; Microsoft ; Phoenix Technologies ; Toshiba (6 декабря 2011 г.). "Advanced Configuration and Power Interface Specification (Revision 5.0)" (PDF) . acpi.info . Архивировано из оригинала (PDF) 14 сентября 2012 г. . Получено 17 ноября 2013 г. .
  16. ^ «Спецификация расширенной конфигурации и интерфейса питания (версия 5.1)» (PDF) . uefi.org . 23 июля 2014 г. . Получено 24 мая 2015 г. .
  17. ^ «Ограничения при использовании Microsoft Windows 98 на портативных компьютерах Compaq Armada» (PDF) . physik.hu-berlin.de. Октябрь 1998 г. стр. 3 . Получено 27 января 2014 г. .[ постоянная мертвая ссылка ‍ ]
  18. ^ "Windows 98 на системах ThinkPad - ThinkPad General". Support.lenovo.com. Архивировано из оригинала 3 февраля 2014 г. Получено 27 января 2014 г.
  19. ^ Роберт Коуарт; Брайан Книттел (2000). Использование Microsoft Windows 2000 Professional . Que Publishing. стр. 30. ISBN 978-0-7897-2125-9.
  20. ^ Windows 98 не поддерживает режим пассивного охлаждения ACPI
  21. ^ "Тема номера: Ошибки и исправления Win98 - Декабрь 1998". winmag.com . Архивировано из оригинала 13 октября 1999 года.
  22. ^ "ArcaOS Changelog" . Получено 24 августа 2020 г. .
  23. ^ "Анонс FreeBSD 5.0-RELEASE". www.freebsd.org . Получено 3 декабря 2020 г. .
  24. ^ "acpi(4) - Страницы руководства NetBSD". man.netbsd.org . Получено 3 декабря 2020 г. .
  25. ^ "acpi(4) - Страницы руководства OpenBSD". man.openbsd.org . Получено 3 декабря 2020 г. .
  26. ^ Therien, Guy (6 января 2000 г.). "Технический обзор спецификации ACPI 2.0, Форум разработчиков Intel" (PPT) . Корпорация Intel. Архивировано из оригинала 21 июля 2011 г. Получено 21 августа 2011 г.
  27. ^ Маршалл, Аллен. "ACPI в Windows Vista" (PPT) . Корпорация Microsoft . Получено 2 июля 2010 г.
  28. ^ "Acpi.sys: Windows ACPI Driver". Microsoft Corporation . 15 июня 2017 г. Получено 20 сентября 2019 г.
  29. ^ ab Состояние ACPI в ядре Linux
  30. ^ ACPI BIOS. msdn.microsoft.com .
  31. ^ Сивер, Эллен; Вебер, Аарон; Фиггинс, Стивен; Лав, Роберт; Роббинс, Арнольд (2005). Linux in a nutshell (5-е изд.). Севастополь, Калифорния: O'Reilly. стр. 36. ISBN 978-0-596-52949-9. OCLC  773210086.
  32. ^ ACPI Spec Rev 5.0 — от 6 декабря 2011 г.
  33. ^ Ананд Лал Шимпи (5 октября 2012 г.). "Проанализирована архитектура Intel Haswell". AnandTech . Получено 20 октября 2013 г.
  34. ^ windows-driver-content. "Modern Standby". docs.microsoft.com . Получено 20 марта 2020 г. .
  35. ^ "S0ix States". software.intel.com . 9 марта 2020 г.
  36. ^ Ван, Венди (17 октября 2018 г.). «Как достичь состояний S0ix в Linux*». 01.org .
  37. ^ "D0ix States". software.intel.com . 9 марта 2020 г.
  38. ^ «Athlon II X2: аппаратное обеспечение C1E и возвращение ошибки CnQ» . АнандТех . Проверено 26 октября 2020 г.
  39. ^ Уоссон, Скотт (21 февраля 2005 г.). "Процессоры Intel Pentium 4 серии 600". The Tech Report . стр. 2.
  40. ^ "Processor Package and Core C-States". AnandTech . 9 июня 2013 г. Получено 20 октября 2013 г.
  41. ^ «Спецификация расширенной конфигурации и интерфейса питания, редакция 3.0, раздел 2.6 Определения состояний производительности устройств и процессоров» (PDF) . ACPI.info . 2 сентября 2004 г. стр. 23. Архивировано из оригинала (PDF) 28 ноября 2015 г. . Получено 19 августа 2015 г. .
  42. ^ Агрегация ссылок
  43. ^ Корпорация Intel (сентябрь 2006 г.). "Intel Processor Vendor-Specific ACPI" (PDF) . Архивировано из оригинала (PDF) 25 декабря 2012 г. . Получено 5 октября 2014 г. .
  44. ^ Браун, Лен (20 июля 2005 г.). "ACPI в Linux". Ottawa Linux Symposium : 3. CiteSeerX 10.1.1.173.2206 . 
  45. ^ "ACPI Tables — The Linux Kernel documentation". www.kernel.org . Архивировано из оригинала 20 октября 2020 г. . Получено 8 ноября 2020 г. .
  46. ^ "DSDT". ArchWiki .
  47. ^ "Начало работы с ACPI". GitBook .
  48. ^ ab Хоффман, Крис (19 августа 2015 г.). "Зомби-вредоносное ПО: как работает двоичная таблица платформы Windows". How-To Geek .
  49. ^ "Вендоры 'rootkit': 'Windows Platform Binary Table' (WPBT)". Born's Tech and Windows World . 6 декабря 2017 г.
  50. ^ Mayank Sharma (27 сентября 2021 г.). «Миллионы ПК с Windows 10 подверглись опасной уязвимости безопасности». TechRadar . Получено 10 ноября 2022 г. .
  51. ^ Блог Марка Шаттлворта (17 марта 2014 г.), «ACPI, прошивка и ваша безопасность»
  52. ^ ab Linux Magazine выпуск 162, май 2014 г., стр. 9
  53. Searls, Doc (25 ноября 2003 г.). "Linus & the Lunatics, Part II". Linux Journal . Получено 13 января 2010 г.

Внешние ссылки