Advantages of ACPI Over Previous Techniques
Before ACPI technology was adopted, Intel architecture systems first relied on BIOS-based power management schemes and then later designs based on Advanced Power Management (APM).
BIOS-based Power Management
BIOS-based power management engines are costly to implement and offer little in the way of flexibility in the field or at the OS layer. In BIOS-based power management, a PM state machine was designed and managed inside the BIOS firmware and then ported for each specific platform. The BIOS relied on system usage indicators such as CPU cache lines, system timers, and hardware switches to determine PM state switching triggers. In this scheme the validation and testing phase was fairly complex. Updating firmware in the field is a nontrivial task and riskier than installing OS patches or updating drivers. Once the BIOS-driven power management engine shipped in a product it was difficult to modify, optimize or fix compatibility bugs. In the field systems could and sometimes did unexpectedly hang due to insufficient system monitoring or incompatibility with OS and runtime applications.
Advanced Power Management (APM)
In the 1990s APM brought a significant improvement by adding a rich API layer used for a more cooperative model between the OS and the BIOS. Using APM the OS was required to call the BIOS on a predetermined frequency in order to reset counters thereby indicating system use. APM also employed APIs to allow the OS to make policy decisions and make calls into the BIOS to initiate power management controls.
APM expanded power management choices to scalable levels of sleep states to balance power savings and wake latency. It also allowed for power managing devices independently. For example the OS could elect to put the hard drive in sleep mode while keeping the rest of the system awake.
APM was an improvement in overall system PM capability and allowed for better management from the OS but it had the negative effect of requiring the BIOS to maintain a more complex state machine than before. This involved increased development and testing/validation costs. When quality and unexpected errors occurred they were difficult and costly to fix downstream from the factory where the BIOS is typically finalized. The APM scheme was responsible for many infamous "blue screens," which were challenging to work around in the field and sometimes required BIOS field upgrades, a costly and somewhat risky operation.
Advanced Configuration and Power Interface (ACPI)
APCI solved many problems by creating a scheme where the BIOS or embedded boot loader firmware is only responsible for passing its knowledge of the hardware control mechanisms and methods to the OS while pushing state machine management and PM policy decisions to the OS and driver layer. APCI methodology can simplify the BIOS or firmware implementation and testing cycle. Instead of testing a complex state machine, firmware validation can cycle through forced system states exercising all ACPI control methods and verify correct operation and desired results from the hardware, as illustrated in Figure 4. This can save significant time and cost at the BIOS and firmware design center and can help achieve greater quality objectives at the firmware layer which in turn eliminate costly and risky BIOS or firmware upgrades in the field.
First published in 1999, the Advanced Configuration and Power Interface (ACPI) specification is an open industry specification co-developed by Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba.
The ACPI specification was developed to establish industry common interfaces enabling robust OS-directed motherboard device configuration and power management of both devices and entire systems. In compliant systems, ACPI is the key element in operating system–directed configuration and Power Management (OSPM). ACPI evolves a preexisting collection of power management BIOS code. Advanced Power Management (APM) application programming interfaces (APIs), PNPBIOS APIs, multiprocessor specification (MPS) tables and so on into a well-defined power management and configuration interface specification. ACPI remains a key component of later Universal Extensible Firmware Interface (UEFI) specifications.
ACPI specifications define ACPI hardware interfaces, ACPI software interfaces, and ACPI data structures. The specifications also define the semantics of these interfaces. ACPI is not a software specification; it is not a hardware specification, although it addresses both software and hardware and how they must behave. ACPI is, instead, an interface specification comprised of both software and hardware elements, as in Figure 4.
Firmware creators write definition blocks using the ACPI control method source language (ASL) and operating systems use an ACPI control method language (AML) interpreter to produce byte stream encoding.