stringtranslate.com

ACPI

Расширенный интерфейс конфигурации и питания ( 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] Последняя версия стандарта 6.5 была выпущена в августе 2022 года. [6]

Архитектура

ACPI на уровне встроенного ПО состоит из трех основных компонентов: таблиц ACPI, ACPI BIOS и регистров ACPI. ACPI BIOS генерирует таблицы ACPI и загружает таблицы ACPI в оперативную память . Большая часть функций ACPI встроенного ПО обеспечивается в байт-коде машинного языка ACPI (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 .

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

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

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

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

Microsoft Windows 98 была первой операционной системой, реализовавшей ACPI, [17] [18] , но ее реализация была несколько ошибочной или неполной, [19] [20] хотя некоторые проблемы, связанные с ней, были вызваны аппаратным обеспечением ACPI первого поколения. . [21] Другие операционные системы, включая более поздние версии Windows , 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.

Серия ядра Linux 2.4 имела лишь минимальную поддержку 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]

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

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

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

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

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

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

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

P-состояния стали известны в процессорах Intel как SpeedStep , а также 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» . Корпорация Интел , Корпорация Майкрософт . Февраль 1996 года. Архивировано из оригинала (RTF) 6 февраля 2012 года . Проверено 2 июля 2010 г.
  3. ^ «Что такое ACPI (расширенный интерфейс конфигурации и питания)? - Определение с сайта WhatIs.com» . ПоискWindowsServer . Проверено 18 сентября 2020 г.
  4. ^ «Дерево устройств ACPI — представление пространства имен ACPI — документация по ядру Linux» . www.kernel.org . Проверено 18 сентября 2020 г.
  5. ^ «На веб-странице расширенной конфигурации и интерфейса питания есть заметная заметка, которая ссылается на страницу существующих спецификаций ACPI на веб-сайте UEFI». acpi.org . 23 июля 2014. Архивировано из оригинала 22 июня 2011 года . Проверено 25 января 2016 г.
  6. ^ ab «Расширенная конфигурация и спецификация интерфейса питания, версия 6.5» (PDF) . UEFI.org/спецификации . Август 2022 года . Проверено 4 октября 2022 г.
  7. ^ Бернхард Кауэр (август 2009 г.). «ATARE: Таблицы ACPI и регулярные выражения» (PDF) . Проверено 18 февраля 2019 г.
  8. ^ ab реализация ACPI во FreeBSD - Usenix
  9. ^ ACPI в Linux, 2005 г.
  10. ^ ACPICA: Архитектура компонентов ACPI
  11. ^ «Ознакомительные сведения для пакета драйверов 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. ^ Хьюлетт-Паккард ; Корпорация Интел ; Майкрософт ; Феникс Технологии ; Тошиба (6 декабря 2011 г.). «Расширенная конфигурация и спецификация интерфейса питания (версия 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» . Поддержка.lenovo.com. Архивировано из оригинала 3 февраля 2014 года . Проверено 27 января 2014 г.
  19. ^ Роберт Коварт; Брайан Ниттел (2000). Использование Microsoft Windows 2000 Professional . Издательство Que. п. 30. ISBN 978-0-7897-2125-9.
  20. ^ Windows 98 не поддерживает режим пассивного охлаждения ACPI.
  21. ^ «Главная история: ошибки и исправления Win98 - декабрь 1998 г.» . winmag.com . Архивировано из оригинала 13 октября 1999 года.
  22. ^ «Журнал изменений ArcaOS» . Проверено 24 августа 2020 г.
  23. ^ «Объявление о выпуске FreeBSD 5.0» . www.freebsd.org . Проверено 3 декабря 2020 г.
  24. ^ «acpi (4) — Страницы руководства NetBSD» . man.netbsd.org . Проверено 3 декабря 2020 г.
  25. ^ «acpi(4) — страницы руководства OpenBSD» . man.openbsd.org . Проверено 3 декабря 2020 г.
  26. Териен, Гай (6 января 2000 г.). «Технический обзор спецификации ACPI 2.0, Форум разработчиков Intel» (PPT) . Корпорация Интел. Архивировано из оригинала 21 июля 2011 года . Проверено 21 августа 2011 г.
  27. ^ Маршалл, Аллен. «ACPI в Windows Vista» (PPT) . Корпорация Майкрософт . Проверено 2 июля 2010 г.
  28. ^ «Acpi.sys: драйвер ACPI для Windows» . Корпорация Майкрософт . 15 июня 2017 г. Проверено 20 сентября 2019 г.
  29. ^ ab Состояние ACPI в ядре Linux
  30. ^ ACPI BIOS. msdn.microsoft.com .
  31. ^ Коротко о Linux. Эллен Сивер, Эллен Сивер (5-е изд.). Пекин: О'Рейли. 2005. с. 36. ISBN 978-0-596-52949-9. ОСЛК  773210086.{{cite book}}: CS1 maint: другие ( ссылка )
  32. ^ ACPI Spec Rev 5.0 - от 6 декабря 2011 г.
  33. Ананд Лал Шимпи (5 октября 2012 г.). «Анализ архитектуры Intel Haswell». АнандТех . Проверено 20 октября 2013 г.
  34. ^ содержимое драйвера Windows. «Современный резерв». docs.microsoft.com . Проверено 20 марта 2020 г.
  35. ^ "Состояния S0ix" . программное обеспечение.intel.com . 9 марта 2020 г.
  36. Ван, Венди (17 октября 2018 г.). «Как достичь состояний S0ix в Linux*». 01.org .
  37. ^ "Состояния D0ix" . программное обеспечение.intel.com . 9 марта 2020 г.
  38. ^ «Athlon II X2: аппаратное обеспечение C1E и возвращение ошибки CnQ» . АнандТех . Проверено 26 октября 2020 г.
  39. Уоссон, Скотт (21 февраля 2005 г.). «Процессоры Intel Pentium 4 серии 600». Технический отчет . п. 2.
  40. ^ «Пакет процессора и основные C-состояния». АнандТех . 9 июня 2013 года . Проверено 20 октября 2013 г.
  41. ^ «Расширенная конфигурация и спецификация интерфейса питания, версия 3.0, раздел 2.6 Определения состояний производительности устройства и процессора» (PDF) . ACPI.info . 2 сентября 2004 г. с. 23. Архивировано из оригинала (PDF) 28 ноября 2015 года . Проверено 19 августа 2015 г.
  42. ^ Агрегация ссылок
  43. ^ Корпорация Intel (сентябрь 2006 г.). «ACPI для конкретного поставщика процессора Intel» (PDF) . Архивировано из оригинала (PDF) 25 декабря 2012 года . Проверено 5 октября 2014 г.
  44. Браун, Лен (20 июля 2005 г.). «ACPI в Linux». Оттавский симпозиум по Linux : 3. CiteSeerX 10.1.1.173.2206 . 
  45. ^ «Таблицы ACPI — Документация по ядру Linux» . www.kernel.org . Архивировано из оригинала 20 октября 2020 года . Проверено 8 ноября 2020 г.
  46. Ссылки АрчВики .
  47. ^ «Начало работы с ACPI» . Гитбук .
  48. ↑ Аб Хоффман, Крис (19 августа 2015 г.). «Программное обеспечение зомби: как работает двоичная таблица платформы Windows». Как компьютерщик .
  49. ^ «Руткит поставщиков»: «Двоичная таблица платформы Windows» (WPBT)» . Born's Tech и Windows World . 6 декабря 2017 г.
  50. Маянк Шарма (27 сентября 2021 г.). «Миллионы компьютеров с Windows 10 подвержены опасной уязвимости безопасности». ТехРадар . Проверено 10 ноября 2022 г.
  51. ^ Блог Марка Шаттлворта (17 марта 2014 г.), «ACPI, прошивка и ваша безопасность»
  52. ^ ab Linux Magazine, выпуск 162, май 2014 г., стр. 9
  53. Сирлс, Док (25 ноября 2003 г.). «Лайнус и безумцы, часть II». Linux-журнал . Проверено 13 января 2010 г.

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