Windows Management Interface for ACPI by Microsoft Corporation.
This service also exists in Windows 10, 11, 8 and Vista.
Startup Type
Windows 7 edition | without SP | SP1 |
---|---|---|
Starter | Manual | Manual |
Home Basic | Manual | Manual |
Home Premium | Manual | Manual |
Professional | Manual | Manual |
Ultimate | Manual | Manual |
Enterprise | Manual | Manual |
Default Properties
Display name: | Microsoft Windows Management Interface for ACPI |
Service name: | WmiAcpi |
Type: | kernel |
Path: | %WinDir%\system32\DRIVERS\wmiacpi.sys |
Error control: | normal |
Group: | Extended Base |
Default Behavior
The Microsoft Windows Management Interface for ACPI service is a kernel driver. If the Microsoft Windows Management Interface for ACPI fails to load or initialize, the error is recorded into the Event Log. Windows 7 startup should proceed, but a message box is displayed informing you that the WmiAcpi service has failed to start.
Restore Default Startup Type of Microsoft Windows Management Interface for ACPI
Automated Restore
1. Select your Windows 7 edition and Service Pack, and then click on the Download button below.
2. Save the RestoreMicrosoftWindowsManagementInterfaceforACPIWindows7.bat file to any folder on your hard drive.
3. Right-click the downloaded batch file and select Run as administrator.
4. Restart the computer to save changes.
Note. Make sure that the wmiacpi.sys
file exists in the %WinDir%\system32\DRIVERS
folder. If this file is missing you can try to restore it from your Windows 7 installation media.
Yea, though I walk through the valley of the shadow of death, I will fear no evil: for thou art with me; thy rod and thy staff they comfort me.
Материал из РУВИКИ — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 13 марта 2022 года; проверки требуют 2 правки.
Экран «Теперь питание компьютера можно отключить» в Windows 9x.
ACPI (англ. Advanced Configuration and Power Interface — усовершенствованный интерфейс управления конфигурацией и питанием) — открытый промышленный стандарт, впервые выпущенный в декабре 1996 года и разработанный совместно компаниями HP, Intel, Microsoft, Phoenix и Toshiba, который определяет общий интерфейс для обнаружения аппаратного обеспечения, управления питанием и конфигурации материнской платы и устройств.
Спецификация 2.0 была представлена в сентябре 2000 года. Она распространяется на более широкий спектр компьютеров, включая корпоративные серверы, настольные системы и ноутбуки. Кроме того, в ACPI 2.0 добавлена поддержка 64-разрядных микропроцессоров для серверов, поддержка различных типов памяти, устройств PCI и PCI-X.
Версия спецификации 3.0b была выпущена 10 октября 2006 года.
На настоящий момент последней версией спецификации ACPI является версия 6.2a, выпущенная организацией UEFI Forum в сентябре 2017 года.[1]
Задача ACPI — обеспечить взаимодействие между операционной системой, аппаратным обеспечением и BIOS материнской платы.
ACPI пришел на смену технологии APM (англ. Advanced Power Management).
Наиболее известной частью стандарта ACPI является управление питанием, имеющее два значительных усовершенствования по сравнению с предшествующими стандартами. Во-первых, концепция ACPI передаёт управление питанием операционной системе (ОS). Такая модель выгодно отличается от существовавшей до этого модели APM, в которой за управление питанием ответственен BIOS материнской платы, а возможности ОС в этом отношении сильно ограничены. В модели ACPI BIOS предоставляет операционной системе методы для прямого детализированного управления аппаратным обеспечением. Таким образом, ОС получает практически полный контроль над энергопотреблением.
Другая важная часть спецификации ACPI — это предоставление на серверах и настольных компьютерах таких возможностей по управлению питанием, которые до того были доступны только на портативных компьютерах. Например, система может быть переведена в состояние чрезвычайно низкого энергопотребления, в котором питание подается лишь на оперативную память (а возможно, и она находится без питания), но при этом прерывания некоторых устройств (часы реального времени, клавиатура, модем и т. д.) могут достаточно быстро перевести систему из такого состояния в нормальный рабочий режим (то есть «пробудить» систему).
Помимо требований к программному интерфейсу, ACPI также требует специальной поддержки от аппаратного обеспечения. Таким образом, поддержку ACPI должны иметь ОС, чипсет материнской платы и даже центральный процессор.
В наши дни различные версии ACPI поддерживаются многими ОС — в том числе всеми версиями Microsoft Windows, начиная с Windows 98, системами GNU/Linux, FreeBSD, OpenBSD, NetBSD и eComStation.
Интерфейс ACPI организуется путём размещения в определённой области оперативной памяти нескольких таблиц, содержащих описание аппаратных ресурсов и программных методов управления ими. Каждый тип таблицы имеет определённый формат, описанный в спецификации. Кроме того, таблицы, содержащие методы управления устройствами и обработчики событий ACPI, содержат код на языке AML (ACPI Machine Language) — машинно-независимый набор инструкций, представленный в компактной форме. Операционная система, поддерживающая ACPI, содержит интерпретатор AML, который транслирует инструкции AML в инструкции центрального процессора, выполняя таким образом методы или обработчики событий.
Некоторые из этих таблиц полностью или частично хранят статические данные в том смысле, что от запуска к запуску системы они не изменяются. Статические данные, как правило, создаются производителем материнской платы или BIOS и описываются на специальном языке ASL (ACPI Source Language), а затем компилируются в представление на AML.
Другие таблицы хранят динамические данные, которые зависят, например, от установок BIOS и комплектации материнской платы. Такие таблицы формируются BIOS на этапе загрузки системы до передачи управления ОС.
Роль ОС в этой модели заключается в том, что она переводит различные компоненты аппаратного обеспечения из одного состояния (например, нормальный режим работы) в другое (например, режим пониженного энергопотребления). Переход из одного состояния в другое происходит, как правило, по событию. Например, падение температуры на ядре процессора является событием, по которому ОС может вызвать метод уменьшения скорости вращения вентилятора. Другой пример: пользователь дал явное указание перехода системы в спящее состояние с сохранением оперативной памяти на диск, а через некоторое время администратор сети произвёл включение системы c помощью функции Wake-on-LAN.
Состояния[править | править код]
Глобальные состояния[править | править код]
Выделяют следующие основные состояния «системы в целом».
- G0 (S0) (Working) — нормальная работа.
- G1 (Suspend, Sleeping, Sleeping Legacy) — машина выключена, однако текущий системный контекст (system context) сохранён, работа может быть продолжена без перезагрузки. Для каждого устройства определяется «степень потери информации» в процессе засыпания, а также где информация должна быть сохранена и откуда будет прочитана при пробуждении, и время на пробуждение из одного состояния до другого (например, от сна до рабочего состояния). Выделяют 4 состояния сна:
- S1 («Power on Suspend» (POS) в BIOS) — состояние, при котором все процессорные кэши сброшены и процессоры прекратили выполнение инструкций. Однако питание процессоров и оперативной памяти поддерживается; устройства, которые не обозначили, что они должны оставаться включенными, могут быть отключены;
- S2 — более глубокое состояние сна, чем S1, когда центральный процессор отключен, обычно, однако, не используемое;
- S3 («Suspend to RAM» (STR) в BIOS, «Ждущий режим» («Standby») в версиях Windows вплоть до Windows XP и в некоторых вариациях Linux, «Спящий режим» («Sleep») в Windows Vista и Mac OS X, хотя в спецификациях ACPI упоминается только как S3 и Sleep) — в этом состоянии на оперативную память (ОЗУ) продолжает подаваться питание, и она остаётся практически единственным компонентом, потребляющим энергию. Так как состояние операционной системы и всех приложений, открытых документов и т. д. хранится в оперативной памяти, пользователь может возобновить работу точно на том месте, где он её оставил — состояние оперативной памяти при возвращении из S3 то же, что и до входа в этот режим. (В спецификации указано, что S3 довольно похож на S2, только чуть больше компонентов отключаются в S3.) S3 имеет два преимущества перед S4: компьютер быстрее возвращается в рабочее состояние, и, второе, если запущенная программа (открытые документы и т. д.) содержит конфиденциальную информацию, то эта информация не будет принудительно записана на диск. Однако дисковые кэши могут быть сброшены на диск для предотвращения нарушения целостности данных в случае, если система не просыпается, например, из-за сбоя питания;
- S4 («Гибернация» (Hibernation) в Windows, «Safe Sleep» в Mac OS X, также известен как «Suspend to disk», хотя спецификация ACPI упоминает только термин S4) — в этом состоянии всё содержимое оперативной памяти сохраняется в энергонезависимой памяти, такой, как жёсткий диск: состояние операционной системы, всех приложений, открытых документов и т. д. Это означает, что после возвращения из S4 пользователь может возобновить работу с места, где она была прекращена, аналогично режиму S3. Различие между S4 и S3, кроме дополнительного времени на перемещение содержимого оперативной памяти на диск и назад, — в том, что перебои с питанием компьютера в S3 приведут к потере всех данных в оперативной памяти, включая все несохранённые документы, в то время как компьютер в S4 этому не подвержен. S4 весьма отличается от других состояний S и сильнее S1-S3 напоминает G2 Soft Off и G3 Mechanical Off. Система, находящаяся в S4, может быть также переведена в G3 Mechanical Off (Механическое выключение) и все ещё оставаться в S4, сохраняя информацию о состоянии так, что можно восстановить операционное состояние после подачи питания.
- G2 (S5) (soft-off) — мягкое (программное) выключение; система полностью остановлена, но под напряжением, готова включиться в любой момент. Системный контекст утерян.
- G3 (mechanical off) — механическое выключение системы; блок питания ATX отключен.
Дополнительно — технология OnNow от Microsoft (Расширения S1-S4 состояния G1).
Также Windows, начиная с Vista, поддерживает «Гибридный спящий режим», сочетающий в себе преимущества S1/S3 (быстрота пробуждения) и S4 (защищённость от сбоев электропитания).
Также он реализован в GNU/Linux (pm-suspend-hybrid), аналогичная реализация в Mac OS X имеет название Safe Sleep.
Состояния центрального процессора[править | править код]
Выделяют четыре состояния функционирования процессора (от C0 до C3).
- C0 — оперативный (рабочий) режим.
- C1 (известно как Halt) — состояние, в котором процессор не исполняет инструкции, но может незамедлительно вернуться в рабочее состояние. Некоторые процессоры, например, Pentium 4, также поддерживают состояние Enhanced C1 (C1E) для более низкого энергопотребления.
- C2 (известно как Stop-Clock) — состояние, в котором процессор обнаруживается приложениями, но для перехода в рабочий режим требуется время.
- C3 (известно как Sleep) — состояние, в котором процессор отключает собственный кэш, но готов к переходу в другие состояния.
Состояния устройств[править | править код]
Выделяют четыре состояния функционирования других устройств (монитор, модем, шины, сетевые карты, видеокарта, диски, флоппи и т. д.) — от D0 до D3.
- D0 — полностью оперативное состояние, устройство включено.
- D1 и D2 — промежуточные состояния, активность определяется устройством.
- D3 — устройство выключено.
Состояния производительности[править | править код]
Пока процессор или устройство функционирует (C0 и D0, соответственно), он может находиться в одном или нескольких состояниях производительности. Эти состояния зависят от конкретной реализации. Так, P0 — всегда наивысший уровень производительности; с P1 до Pn последовательное снижение уровня производительности, до предела реализации, где n не превышает 16.
P-состояния также известны как SpeedStep в процессорах Intel, как PowerNow! или Cool’n’Quiet в процессорах AMD, и как LongHaul в процессорах VIA.
- P0 максимальная производительность и частота
- P1 меньше, чем P0, напряжение/частота урезаны
- P2 меньше, чем P1, напряжение/частота урезаны
- …
- Pn меньше, чем P(n-1), напряжение/частота урезаны
- Расширенное управление питанием
- Ждущий режим
- Гибернация
- Wake-on-LAN
- BIOS
- Extensible Firmware Interface
- ↑ Advanced Configuration and Power Interface Specification, Version 6.2a (PDF). UEFI.org (сентябрь 2017). Архивировано 27 января 2018 года.
- Домашняя страница ACPI Архивная копия от 22 июня 2011 на Wayback Machine
The Advanced Configuration and Power Interface (ACPI) was introduced in the mid-1990s as a collaborative effort among leading technology companies to standardize power management features across computer systems. As an open industry specification, ACPI empowers software developers to incorporate sophisticated power management features, significantly enhancing the energy efficiency of computers ranging from mobile devices to server platforms. Supported extensively by the Microsoft Windows family, ACPI enables the operating system to autonomously manage the power resources for computer subsystems and peripherals, marking a leap forward in the OnNow initiative that allows computers to awaken with a simple keyboard touch.
This article aims to unfold the layers of ACPI, exploring its mechanism, benefits, and the role it plays in shaping an eco-friendly, power-aware computing landscape.
Table of Contents:
- What is Advanced Configuration and Power Interface (ACPI)?
- How ACPI Works: An In-Depth Look
- ACPI and Power Management: A Seamless Integration
- ACPI in the Microsoft Windows Ecosystem
- ACPI Explained in Video
- References
1. What is Advanced Configuration and Power Interface (ACPI)?
1.1 Definition and Historical Context
The Advanced Configuration and Power Interface (ACPI) is an open industry specification co-developed by Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba in 1996. It was introduced to establish unified standards for power management and device configuration that are independent of operating systems. ACPI was developed as a successor to previous, less flexible power management standards, providing a robust framework to support advanced power management features across various hardware and software environments.
1.2 The Scope of ACPI in Modern Computing
ACPI has evolved to become a critical component of modern computing, central to achieving energy efficiency and dynamic power management in a wide range of devices from desktops and laptops to servers and embedded systems. Its ability to define power states and manage device power consumption dynamically allows operating systems to optimize energy use, prolonging battery life in portable devices and reducing energy costs in data centers. Furthermore, ACPI facilitates hardware discovery, system configuration, and power management at runtime, enabling systems to adapt to changes in usage patterns and hardware configurations seamlessly.
2. How ACPI Works: An In-Depth Look
2.1 The Architecture of ACPI
ACPI’s architecture is ingeniously designed around a series of tables provided by the system’s BIOS (Basic Input/Output System) or UEFI (Unified Extensible Firmware Interface) firmware. These tables, the most crucial being the Differentiated System Description Table (DSDT) and the Secondary System Description Table (SSDT), serve as blueprints detailing the hardware components of the system and their power management capabilities. The DSDT is central to ACPI’s functionality, containing the AML (ACPI Machine Language) code that the operating system interprets to manage power states of devices. The SSDTs, on the other hand, may provide additional information and override the DSDT for specific device configurations.
By leveraging these tables, ACPI enables the operating system to identify hardware components, understand their power management features, and apply appropriate power policies dynamically. This process is facilitated by the ACPI driver within the operating system, which acts as an interpreter between the ACPI firmware definitions and the operating system’s power management subsystem.
2.2 Interaction Between Hardware, OS, and Applications
The interaction facilitated by ACPI between the hardware, operating system, and applications is a testament to its sophisticated design. Through a well-defined interface, the Advanced Configuration and Power Interface allows the operating system to send commands to the hardware, adjusting power states in real-time according to current system demands. This dynamic interaction supports various scenarios, from adjusting CPU power states (P-states) for energy efficiency to managing peripheral devices’ power levels (D-states) for optimal performance or energy savings.
Applications can also play a role in this ecosystem, requesting the operating system to adjust system power settings based on their operational needs. For instance, a video streaming application might request higher performance during playback, while a background service might relinquish processor performance in favor of energy savings when not actively in use. This collaborative approach ensures that power management is both flexible and responsive to the needs of the system and its users.
3. ACPI and Power Management: A Seamless Integration
3.1 Power States and Their Management
ACPI defines a comprehensive set of power states that cater to the varying needs of energy conservation and system performance. These are categorized into system states (G-states), sleep states (S-states, S0-S5), and device states (D-states, D0-D3), each tailored to specific levels of system activity and power saving.
- G-states (Global States): Represent the overall power state of the system, including working (G0), sleeping (G1), and soft off states (G2).
- S-states (Sleep States): Range from S0 (fully operational) to S5 (system shutdown). S3 (suspend to RAM) and S4 (suspend to disk) are particularly crucial for achieving significant power savings while allowing for quick system resume.
- D-states (Device States): D0 represents a fully operational state, while D1-D3 indicate progressively lower power states, with D3 being the lowest power state short of being powered off.
Transitioning between these states is managed by the operating system in response to system activity, user preferences, and application requests. This seamless state management allows for an optimal balance between power conservation and system responsiveness.
3.2 ACPI’s Role in Device Power Management
Beyond orchestrating system-wide power management, ACPI excels in providing granular control over the power states of individual devices. This capability is crucial for extending the battery life of mobile devices and reducing the energy footprint of desktops and servers. By enabling devices to enter low-power states when inactive and quickly resume operation when needed, ACPI minimizes unnecessary power consumption without detracting from the user experience.
For mobile devices, this means that even when in a standby mode, critical functions like receiving calls or emails can continue, while non-essential components are kept in a low-power state. In server environments, ACPI’s device-level power management can contribute to substantial energy savings, especially during periods of low demand.
The integration of ACPI into power management strategies represents a significant leap forward in our ability to optimize energy use in computing devices. By understanding and leveraging the depth of ACPI’s capabilities, designers and developers can create systems that are not only powerful and responsive but also remarkably energy-efficient.
4. ACPI in the Microsoft Windows Ecosystem
4.1 Integration with Windows Operating Systems
Microsoft has been a key proponent of ACPI, integrating its support across the Windows family of operating systems. Beginning with Windows 98 and more prominently from Windows 2000 onwards, ACPI has been deeply integrated into Windows, allowing the operating system to manage hardware power consumption more effectively. This integration supports features such as standby, hibernate, and battery management, which are crucial for mobile computing. Windows leverages the Advanced Configuration and Power Interface to perform power management tasks transparently, such as turning off the display or hard disk after periods of inactivity and managing CPU throttling based on the system load.
4.2 Benefits for Windows Users and Developers
For users, ACPI integration in Windows translates to enhanced battery life, improved system stability, and a more responsive computing experience. Users benefit from the automatic power-saving features without needing to adjust complex settings manually. For developers, Windows provides a comprehensive set of APIs and tools to interact with ACPI, enabling the development of power-aware applications and services. This support facilitates the creation of software that can respond to changes in power state, participate in power management decisions, and optimize performance and energy usage, contributing to the overall sustainability of computing resources.
5. ACPI Explained in Video
6. References
Books:
- “Operating Systems: Principles and Practice” by Thomas Anderson and Michael Dahlin. While not exclusively about ACPI, this book offers insights into operating system design and how features like ACPI integrate into modern operating systems for power management.
RFCs and Technical Documents:
- ACPI Specification Version 6.4: The latest version of the ACPI specification provides detailed technical information about ACPI’s architecture, power states, and interfaces. Available from the UEFI Forum’s website.
- ACPI Component Architecture (ACPICA): Reference implementation of the Advanced Configuration and Power Interface (ACPI) specification.
Other Resources:
- “Advanced Configuration and Power Interface (ACPI)” in the IEEE Computer Society’s digital library provides articles and papers discussing the development, implementation, and impact of ACPI in computing.
Что контролирует и чем управляет ACPI.
Спецификация ACPI определяет новый интерфейс между операционной системой и компонентами компьютера, обеспечивающими поддержку Plug and Play и управления электропитанием. Методы, определенные в ACPI, не зависят от конкретной операционной системы или типа процессора. ACPI определяет интерфейс на уровне регистров для базовых функций Plug and Play и управления электропитанием, а также определяет описательный интерфейс для дополнительных аппаратных возможностей.
При запуске ACPI совместимой ОС перехватываются некоторые функции BIOS (таких как APM BIOS PNPBIOS) и, кроме этого, ACPI-интерфейсу передаётся контроль над перечисленными ниже функциями.
Plug and Play — ACPI берёт на себя управление подключением и конфигурированием Plug and Play устройств. Кроме этого, в случае отключения устройства, ACPI определяет, какие из оставшихся в системе устройств будут затронуты этим, и переконфигурирует их соответствующим образом.
System Power management — ACPI получает контроль над такими функциями, как выключение системы, или перевод её в sleep mode.
Device Power Management — ACPI контролирует потребление питания всех устройств установленных в системе. Так же, он занимается переводом их с одного режима потребления питания на другой, в зависимости от требований ОС, приложений или пользователя.
System Events — ACPI предоставляет глобальный механизм наблюдения за системными событиями, такими изменение температурной политики, изменение статуса энергопотребления, подсоединение или отсоединение различных устройств, и т.д. Кроме этого, ACPI позволяет гибко настраивать, как система должна реагировать на эти события.
Processor Power Management — при простаивании системы, ACPI позволяет переводить процессор в энергосберегающий режим, и выводить его из этого режима в случае необходимости.
Battery Management — эта функция перешла к ACPI от APM систем, она контролирует заряд батарей, рассчитывает, сколько времени система сможет поработать на этом заряде, предупреждает пользователя о необходимости перезарядить батареи. Кроме этого, ACPI требует от батарей поддержки Smart Battery, что позволяет ОС контролировать работу батарей через CMBatt (Control Method Battery) интерфейс.
Thermal Management — кроме контроля питания, ACPI предоставляет возможность контролировать и управлять температурой различных компонентов системы. Для этого используются датчики температуры, и так называемые тепловые зоны.
Embedded Controller — ACPI предоставляет стандартный интерфейс для работы с вставленным контролёром. Этот контролёр управляет такими устройствами как, например, мышь и клавиатура.
System Management Bus Controller — ACPI предоставляет стандартный интерфейс взаимодействия программного и аппаратного обеспечения с SMBus. Что, в свою очередь, позволяет OEM производителям предоставлять возможность ОС использовать особенности их продуктов в полной мере.
Как уже упоминалось, ACPI предоставляет возможность гибко реагировать на изменения в состоянии системы. Но для того, что бы реагировать на состояние системы, необходимо это состояние знать. Поэтому спецификация ACPI охватывает, кроме всего прочего, и устройства, которые позволяют следить за системой.
Для управления и мониторинга системы, используются два вида объектов, это sensors (датчики) и watchdogs (если дословно, то сторожевые псы, что это такое на самом деле, станет ясно из дальнейшего текста).
Датчики представляют собой устройства, которые измеряют какой-либо физический параметр. Вообще то видов датчиков существует великое множество, и сфера их применения весьма обширна, но для мониторинга состояния ПК, в настоящее время, обычно используются датчики следующих видов:
Thermal sensor — датчик температуры, соответственно, температуру он и измеряет.
Fan sensor — датчик вентилятора, или кулера, измеряет скорость вращения вентилятора.
Voltage sensor — датчик напряжения, измеряет напряжение электрического тока.
Это, конечно же, далеко не полный перечень датчиков, которые используются на ПК, существуют и более экзотические устройства, например Chassis Intrusion Sensor — датчик который позволяет определить, вскрыт корпус или нет.
Датчики делятся на два вида, числовые и основанные на статусе (status based). Числовой сенсор, снимает какое либо значение (температуру, частоту вращения вентилятора, и т.д.), и возвращает числовое значение. Исходя из природы измеряемого значения, такие сенсоры бывают числовыми и аналоговыми. Типичным числовым сенсором является счётчик оборотов вентилятора, который абсолютно точно может сказать, сколько оборотов за определённое время делает вентилятор. Типичным аналоговым сенсором можно назвать датчик температуры, у которого появляются такие понятия как регулярность снятия значения (для датчиков температуры обычно это 1 секунда), верхний и нижний пределы диапазона измеряемых значений, и разрешение, которое сообщает, с какой точностью производятся измерения.
Основанные на статусе сенсоры «видят» состояние устройства и засекают изменение его статуса. К таким сенсорам относится, например, Chassis intrusion sensor, который сигнализирует о вскрытии корпуса. Минимально сенсор, основанный на статусе, может генерировать два различных бита (так называемый бинарный сенсор), которые имеют два значения (хорошо/плохо), максимально — до 32. Согласно спецификации, первые 16 битов определяются как стандартные. Из оставшихся 16 битов, 15 (16-30) могут быть использованы различными производителями для своих специфических нужд. Последний возможный бит зарезервирован и интерпретируется как неизвестный статус.
ACPI предусматривает использование основанных на статусе числовых сенсоров. Такие устройства определяют статус исходя из показаний числового сенсора, то есть, при превышении значений показываемых числовым сенсором каких либо границ, меняется статус наблюдаемого устройства. Такие сенсоры также могут генерировать 32 различных бита, 16 из которых интерпретируются как стандартные границы. Но распределяются они по-другому, чем у простых сенсоров, основанных на статусе.
Примером практической реализации подобной технологии, может служить технология Smart Doctor, применяемая Asus в своих видеокартах серии Asus6xxx, которая делает выводы о состоянии карты, исходя из показаний термодатчика и заранее заданных значениях температуры чипа, при которых карта может перестать нормально работать.
Кроме этого, для основанных на статусе числовые сенсоры, предусмотрено такое понятие, как допуск (hysteresis), который служит для предотвращения лишних срабатываний сенсора. Допуск всегда отрицательный для верхних пределов, и всегда положительный для нижних пределов (см. рис. 1).
Рис. 1
Как видно из схем, в этом случае, датчик без допуска выдал шесть сообщений об изменении статуса устройства, в то время как с допуском, всего два.
Watchdog — устройства, которые следить за состоянием системы, основываясь на аппаратных таймерах. Такие устройства способны отслеживать зависания системы, причины которых приведены ниже.
System Initialization Failure Watchdog.
Ошибка при инициализации системы. Это ошибки, которые возникают при инициализации основных компонентов системы, таких как центральный процессор, оперативная память и т.д..
Pre-Os Boot Failure Watchdog.
Ошибка при загрузке BIOS. Этот датчик способен обнаружить, и среагировать на ошибки, которые возникают в промежутке времени, когда аппаратное обеспечение компьютера уже инициализировалось и идёт подготовка к загрузке ОС.
OS Boot Failure Watchdog.
Обнаруживает зависание системы в процессе загрузки операционной системы.
OS Hang Watchdog.
Обнаруживает зависания операционной системы.
Shutdown Failure Watchdog.
Обнаруживает зависания в процессе выключения системы.
Согласно спецификации, существует 32 варианта, которыми любой из выше перечисленных watchdog может среагировать на обнаруженные проблемы.
Может использоваться ещё один класс подобных устройств — Heartbeat Watchdogs. Это устройство регулярно проверяет наличие чего-либо. Например, LAN Presence Heartbeat Watchdog регулярно проверяет наличие сети (32 возможных значения генерируемых им битов).
Все эти устройства уже давно применялись для мониторинга состояния системы, но с появлением ACPI появилась возможность более гибкого управления системой на основе их показаний, например, для управления системой в зависимости от показаний датчиков и watchdog и управления датчиками и watchdog в зависимости от состояния системы. Примером подобного взаимодействия, могут служить thermal zone (температурная зона). Температурная зона управляет скоростью вращения вентилятора, или режимом работы другого охлаждающего устройства, в зависимости от температуры охлаждаемого объекта. В зависимости от типа охлаждающего устройства температурные зоны делятся на активные и пассивные. В активных зонах, как легко можно догадаться, используются активные охлаждающие устройства, такие как вентиляторы, скоростью вращения которых можно управлять. В пассивных зонах используется пассивное охлаждение, и управление температурой сводится, как правило, к понижению напряжения перегревшегося устройства.
Кроме этого, возможности ACPI позволяют пользователю самому задавать температурные и другие режимы, в зависимости от текущих потребностей. Например, если пользователь работает в каком-либо текстовом редакторе и не нуждается в излишней процессорной мощности, он может перевести систему в состояние Silence, при котором выключатся все активные кулеры, понизится напряжение на все ненужные устройства, центральный процессор перейдёт на более низкую тактовую частоту, и т.д. Производительность компьютера упадёт, так же как и потребление энергии, но того, что останется, с лихвой хватит для весьма обширного списка задач. Или же, пользователь может перевести систему в состояние Performance, когда знает, что задача, которая перед ним стоит, требует максимальной отдачи от машины. Кроме всего вышеперечисленного, с помощью ASL координируется работа различных устройств и сенсоров, что бы предотвращать ложные срабатывания.
Время на прочтение5 мин
Количество просмотров26K
Продолжаем знакомство с новыми возможностями недавно вышедших из под пера UEFI Forum стандартов, и если в предыдущей части речь шла о внутреннем стандарте PI, то на этот раз она пойдет об ACPI 6.0 и его отличиях от предыдущей версии 5.1.
Если вам интересно, что именно изменилось за 10 месяцев разработки стандарта, и какими новшествами нас порадуют или огорчат будущие системы с поддержкой ACPI 6.0 — добро пожаловать под кат.
Что вообще такое ACPI
ACPI или Advanced Configuration and Power Interface — это открытый стандарт на взаимодействие ОС и прошивки, разработанный совместно инженерами Hewlett-Packard, Intel, Microsoft, Phoenix и Toshiba. Первый релиз вышел в декабре 1996 года и включал в себя как улучшенные аналоги APM, MPS и PnPBIOS, так и собственные наработки для обнаружения подключенного оборудования, мониторинга, управления питанием и охлаждением.
Интерфейс ACPI практически независим от архитектуры целевой машины и состоит из множества таблиц, которые содержат либо данные (информацию SMBIOS и DMI, например, или лицензионный ключ для Windows 8), либо код на языке AML. Код этот выполняется специальным драйвером-интерпретатором, который обязан присутствовать в каждой ACPI-совместимой ОС. Первой такой ОС была Windows 98, но реализация ACPI в те времена хромала на обе ноги как со стороны разработчиков BIOS’ов, так и со стороны MS, и потому до Windows Vista (и ядра Linux 2.6.0, если взглянуть по другую сторону баррикад) интерфейс фактически не использовался.
Тем не менее, стандарт быстро стал популярным (не обошлось без давления со стороны Intel и Microsoft) и пережил уже 6 редакций. В версии 2.0 добавили поддержку 64-битных процессоров, в 3.0 — SATA, PCIe, управления температурой компонентов (т.е. не только CPU) и больших многопроцессорных систем, в 4.0 — USB3 и x2APIC, в 5.0 — GPIO, простых периферийных шин (I2C, SPI, UART) и управления питанием памяти.
На данный момент сильнее всего ACPI задействован в MacOS X, десктопные и серверные редакции Windows тоже требуют от BIOS’а наличия поддержки как минимум ACPI 2.0, а Linux и FreeBSD по прежнему могут без особых проблем работать без ACPI, но используют интерфейс, если его удалось обнаружить.
ACPI 6.0
С момента выпуска предыдущей версии 5.1. прошел почти год, но каких-то радикальных изменений в новом стандарте не случилось, что позволит производителям прошивок реализовать его поддержку в достаточно короткие сроки.
Для начала я перечислю все заметные изменения, а потом уже постараюсь дать развернутый комментарий по каждой группе. Поехали!
Поддержка NVDIMM
Support for Non-Volatile Memory Firmware Interfaces — добавление новой ACPI-таблицы NFIT, из которой ОС сможет узнать, на какие именно части адресного пространства CPU отображена NVDIMM и как именно ОС может ей воспользоваться. Для чего это нужно и почему это здорово — читайте ниже.
Extended Vendor Range for E820 Address Types and UEFI Memory Types — добавление новых типов памяти для старой (E820) и новой (UEFI MemMap) карт памяти, в дополнение к NFIT для тех ОС, который о ней еще пока слыхом не слыхивали.
Persistent memory S4 behavior — возможность использовать NVDIMM вместо S4 data storage, что избавит пользователей Windows от файла hiberfil.sys, да и вообще несколько размоет границу между S3 (он же Sleep) и S4 (он же Hibernate) для обычного пользователя.
Поддержка USB-C
Add USB-C Connection support to _UPC — теперь у каждого USB-порта можно узнать, является ли он портом USB Type C и если да, то какие именно новые режимы поддерживает.
Обновление для языка ASL
ASL: Printf and Fprintf Debug Macros — новые макросы для форматного вывода, сильно упрощающие написание отладочного кода на ASL (до этого приходилось городить километры вложенных Concatenate).
ASL: Helper Macro ToPLD() — еще один полезный макрос, позволяющий заполнять объекты типа _PLD, которые используются для описания физического положения устройств в системе (т.е. что-то вроде «порт USB3 — первый слева во втором ряду портов на задней панели»), и который до этого заполнялся серией вызовов Store (с возможностью забыть заполнить часть полей и переписать уже заполненные).
ASL: Extensions for Symbolic Operators and Expressions (ASL 2.0) — невероятно замечательное изменение, после которого код на ASL станет вдвое приятнее писать и вдесятеро приятнее читать, ведь теперь вместо Add(X, Y, Z) можно писать Z = X + Y, а вместо LGreaterEqual(X, Y) — X >= Y. Я джва года ждал такую игру, блин!
Температуры, питания и производительность
Standby Thermal Trip — возможность при сильном превышении температуры какой-либо части платы перейти в S3 вместо полного отключения, что позволит потерять меньше данных.
Adding Support for Faster Thermal Sampling — возможность для производителя платы указать период опроса датчиков температуры (минимальное значение — 0,1 с), которой не было ранее. Позволит улучшить скорость реакции драйвера OSPM на изменения температуры компонентов.
Adjust max p-states — поддержка более 16 промежуточных состояний питания (по простому — пар «множитель CPU — желаемое напряжение») для находящейся под нагрузкой (т.е в состоянии С0) системы. Позволит точнее сэкономить еще немного энергии на мобильных ПК.
ACPI Low Power Idle Table and _LPD proposal — новые таблица и метод для перехода в энергосберегающие состояния LPI. Работают они пока только на Haswell и более новых процессорах Intel, только в Windows и только при наличии Intel Power Engine Plug-in, так что пока толку от этого новшества не много.
CPPC heterogeneous performance capabilities — поддержка технологии CPPC от Intel. Еще один способ управления нагрузкой, в добавок к десятку уже имеющихся. Тоже только для Haswell+, но на этот раз драйвером для Linux не обделили.
Поддержка архитектуры ARM
Reserve IORT and support for ARM GICv3/4 in MADT — название таблицы IORT зарезервировано для будущих версий стандарта, поддержка контролера прерываний ARM GIC добавлена в MADT. Шаг за шагом UEFI Forum добавляет поддержку ARM в свои стандарты, еще пара лет, и на ARM-системах с UEFI и ACPI начнет стартовать десктопная Windows…
Остальное
Reserve STAO and XENV table signatures — парочка таблиц зарезервирована для добавления в будущие версии стандарта. STAO позволит драйверу OSPM игнорировать некоторую часть кода ACPI (что может понадобиться, к примеру, на китайских планшетах, где в ACPI зачастую творится трэш, угар и содомия, а просто дропнуть все таблицы целиком во время загрузки ОС — слишком радикально), а XENV нужна гипервизору Xen для передачи данных в Dom0.
FADT Hypervisor Vendor Identification Support — новое 64-битное поле в таблице FADT, в котором гипервизор может сообщить ОС о своем присутствии и типе.
Support for Platform-specific device reset — поддержка нового типа ресетов, о которой я уже писал в первой части.
Generic Button(s) Abstraction — напоследок, еще одна приятность уровня ASL 2.0, которую я ждал те же джва года, поддержка кнопок для любых целей, а не только Power/Reset/Lid/Sleep. Никаких больше кривых драйверов, вызывающих SMI на каждый чих, никакой регулировки громкости через DMI, один раз кнопкам пишется ASL-код и они работают из коробки.
Совсем немного про NVDIMM
Обещал рассказать, чем поддержка NVDIMM чревата простому пользователю — и расскажу.
Даже без самой NVDIMM (о плюсах которой можно почитать, например, здесь) таблица NFIT позволит прошивке отобразить любой непрерывный файл в память и сообщить ОС, что он там и что с него можно загрузиться. Это, в свою очередь, позволит UEFI загружаться не только с физических носителей, но и из ISO-образов, с виртуальных дисков, с любых блочных устройств (даже без ФС) и т.п. Фишку, скорее всего, подсмотрели у GRUB’а, который так умеет уже лет десять, но она от этого не становится менее полезной.
Заключение
В отличие от PI 1.4, в котором почти ничего интересного и не было, в новой версии ACPI добавилось несколько приятных как пользователю (NFIT, кнопки, USB-C), так и разработчику (ASL 2.0, новые макросы, больше возможностей для контроля температуры) вещей. Ну и самих себя UEFI Forum не обделили, добавив скопом все недавние энергосберегающие технологии Intel и оставив задел на будущую версию для ARM и Linaro.
Ждем теперь, когда производители UEFI-платформ (т.е AMI, Phoenix и Insyde) объявят и поддержке ACPI 6.0 в своих продуктах.
P.S.
Извиняюсь за обилие аббревиатур, но иначе тут никак.
Спасибо за внимание, удачных вам прошивок.