On the computer, Advanced Configuration and Power Interface ( ACPI ) provides an open standard that the operating system can use to locate and configure computer hardware components, to perform power management by (for example) placing components that are not used for sleeping, and for performing status monitoring. First released in December 1996, ACPI aims to replace Advanced Power Management (APM), MultiProcessor Specifications, and Plug and Play BIOS (PnP) Specifications. ACPI brings power management under operating system control, as opposed to a prior-centered BIOS system that relies on platform-specific firmware to define power management and configuration policies. This specification is important for the system Operating and Power Management System ( OSPM ), an implementation for ACPI that removes device management responsibilities from the previous firmware interface via UI.
Internally, ACPI advertises available components and functions to the operating system kernel using the instruction list ("method") provided through the system firmware (Unified Extensible Firmware Interface (UEFI) or BIOS), which is parsed by the kernel. ACPI then executes the desired operation (such as hardware component initialization) using a minimal embedded virtual machine.
Intel, Microsoft and Toshiba initially developed standards, while HP, Huawei, and Phoenix also participated later. In October 2013 the original developers of the ACPI standard agreed to transfer all assets to the UEFI Forum, where all future developments will take place.
The UEFI Forum publishes the latest version of the standard, "Revised 6.2 Errata A", in September 2017.
Video Advanced Configuration and Power Interface
Architecture
The firmware level of ACPI has three main components: ACPI tables, BIOS ACPI, and ACPI registers. Unlike its predecessors, such as APM or PnP BIOS, ACPI implements a bit of its functionality in the ACPI BIOS code, whose primary role is to load the ACPI tables in system memory. Instead, most of the firmware's ACPI functionality is provided in the ACPI Machine Language (AML) bytecode stored in the ACPI table. To utilize this table, the operating system must have an interpreter for the bytecode AML. Implementation of the AML reference interpreter is provided by the ACPI Component Architecture (ACPICA). During the development of the BIOS, AML bytecode is compiled from the ASL code (ACPI Source Language).
Because ACPI also replaces PnP BIOS, it also provides hardware enumerators, most of which are implemented in the ACPI Differential System Description (DSDT) table. The advantage of the bytecode approach is that unlike the PnP BIOS code (which is 16-bit), the ACPI bytecode can be used in any operating system, even in 64-bit long mode.
The overall design decision is not without criticism. In November 2003, Linus Torvalds - the author of the Linux kernel - described ACPI as "a complete design disaster in every way". In 2001, other senior Linux software developers such as Alan Cox expressed concerns about the requirements that bytecode from external sources must be run by the kernel with full privileges, as well as the overall complexity of the ACPI specification. In 2014, Mark Shuttleworth, founder of the Ubuntu Linux distribution, compares the ACPI with Trojan horses.
ACPI Component Architecture (ACPICA)
The ACPI Component Architecture ( ACPICA ), mostly written by Intel engineers, provides an open source reference reference platform reference implementation of the ACPI code associated with the operating system. The ACPICA code is used by Linux, Haiku and FreeBSD, which complement it with their special operating system code.
Maps Advanced Configuration and Power Interface
History
The first revision of the ACPI specification was released in December 1996, supporting 16 and 32-bit addressing space. Not until August 2000 ACPI received 64-bit address support as well as support for multiprocessor and server workstations with revision 2.0.
In September 2004, revision 3.0 was released, bringing ACPI specification support for SATA controllers, PCI Express buses, multiprocessor support for more than 256 processors, ambient light sensors and user attendance devices, as well as expanding thermal models beyond previous processor-centric support.
Released in June 2009, a revision 4.0 of the ACPI specification added various new features for the design; most notable are USB 3.0 support, logic support idling support, and x2APIC support.
Revision 5.0 of the ACPI specification was released in December 2011, followed by a revised 5.1 released in July 2014.
The latest revised specification is the 6.2 Errata A, which was released in September 2017.
Operating system
Microsoft Windows 98 is the first operating system to implement ACPI, but its implementation is somewhat buggy or incomplete, although some of the problems associated with it are caused by first generation ACPI devices. The first Windows 98 issue disables ACPI by default except on the system whitelist. Other operating systems, including newer versions of Windows, eComStation, FreeBSD, NetBSD, OpenBSD, HP-UX, OpenVMS, Linux, and Solaris PC versions, have at least some support for ACPI. Some newer operating systems, such as Windows Vista, require an ACPI-compliant BIOS to work at all.
Series 2.4 of the Linux kernel only has minimal support for ACPI, with better support implemented (and enabled by default) from kernel version 2.6.0 and so on. The old ACPI BIOS implementation tends to be quite buggy, and as a result is not supported by the next operating system. For example, Windows 2000, Windows XP, and Windows Server 2003 only use ACPI if the BIOS date is after January 1, 1999, and for Windows 98 Second Edition this date is December 1, 1999. Similarly, the Linux 2.6 kernel lists the blacklist ACPI BIOS starting before January 1, 2001.
OSPM responsibility
Once the OSPM compatible operating system activates ACPI, it takes exclusive control of all aspects of power management and device configuration. The OSPM implementation should expose an ACPI-compatible environment to device drivers, exposing the status of certain systems, devices and processors.
Power status
Global status
The ACPI specification defines four global "Gx" states and six "Sx" sleep states for ACPI-compliant computer systems:
- G0 , S0 : The computer is running and the CPU is running instructions. "Awaymode" is part of S0, where monitor is off but background task runs.
- G1 , Sleep : Divided into four states, S1 to S4:
- S1 , Power on Suspend (POS) : The processor cache is flushed, and the CPU stops executing instructions. The power to the CPU (s) and RAM is maintained. Devices that do not indicate that they should be kept alive can be turned off.
- S2 : CPU is turned off. A dirty cache is flushing into RAM.
- S3 , commonly referred to as Standby , Sleep , or Suspend RAM (STR) : RAM is still supported.
- S4 , Hibernate or Suspend to Disk : All content from main memory is saved to non-volatile memory like hard drive, and system shut down.
- G2 ( S5 ), Soft Off : G2/S5 is almost the same as G3
Mechanical Off , except that the power supply unit (PSU) still supplies power, at a minimum, to the power button to allow return to S0. Full reboot required. No previous content retained. Other components can remain enabled so that the computer can "wake" on input from the keyboard, clock, modem, LAN, or USB device. - G3 , Mechanical Off : The power of the computer has been completely removed through a mechanical switch (as on the back of the PSU). The power cord is removable and the system is safe for disassembly (typically, only real-time clocks continue to run using their own small battery).
The specification also defines the status of Legacy : the status of an operating system that does not support ACPI. Under these circumstances, hardware and power are not managed through ACPI, effectively disabling ACPI.
Device status
The device states D0 - D3 depending on the device:
- D0 or Fully Active is the operating status.
- D1 and D2 are medium strength states that vary by device definition.
- D3 : Country D3 is further divided into D3 Hot (has power), and Cold D3 (no power is provided):
- Hot : The device may assert power management requests to transition to a higher power state.
- Cold or Off has the device turned off and is not responding to the bus.
Processor status
The CPU power status C0 - C3 is defined as follows:
- C0 is the operating status.
- C1 (often known as Stopping ) is a state in which the processor does not execute instructions, but can return to a state of execution essentially instantly. All ACPI-conformant processors must support this power status. Some processors, such as Pentium 4, also support Enhanced C1 ( C1E or Enhanced Halt State) status for lower power consumption.
- C2 (often known as Stop-Clock ) is a state in which the processor maintains all visible status of the software, but it may take longer to wake up. The status of this processor is optional.
- C3 (often known as Sleep ) is a state in which the processor does not need to store the cachenya coherently, but maintains another status. Some processors have variations on the state of C3 (Sleep Sleeping, Sleep Deep, etc.) which differ in how long it takes to wake up the processor. The status of this processor is optional.
- Additional status is defined by the manufacturer for multiple processors. For example, the Intel Haswell platform has a status up to C10 , where it distinguishes core countries and packages .
Performance status
While the device or processor operates (D0 and C0, respectively), it can be in one of several power performance states. This status depends on the implementation. In fact, P0 is always the highest performing country; with P1 to P n being a lower-performing lower status, to the specific extent of implementation n no greater than 16.
P-states has been known as SpeedStep in Intel processors, such as PowerNow! or Cool'n'Quiet in an AMD processor, and as a PowerSaver in a VIA processor.
- P0 power and max frequency
- P1 is less than P0 , the voltage and frequency are scaled
- P2 is less than P1 , the voltage and frequency are scaled
- ...
- Pn is less than P (n-1) , the voltage and frequency are scaled
Hardware interface
The ACPI-compliant system interacts with hardware through a "Function Fixed Hardware (FFH) Interface", or platform-independent hardware programming model that relies on a platform-specific ACPI Machine Language (AML) platform provided by the original equipment manufacturer (OEM).
Fixed Hardware interface function is a platform-specific feature, provided by the platform manufacturer for performance and failure recovery. The standard Intel-based PC has a fixed function interface set by Intel, which provides a set of core functions that reduce the need for an ACPI system for full driver stacks to provide basic functionality during boot time or in case of major system failures.
The ACPI Platform Error Interface (APEI) is a specification for reporting hardware errors, e.g. from the chipset, to the operating system.
Firmware interface
ACPI defines many tables that provide interfaces between operating systems that comply with ACPI standards, and system firmware. These include Differential System Description Table (DSDT), Secondary System Description Table (SSDT), and Static Affinity Static Table (SRAT), for example.
Tables allow system hardware descriptions in a platform-independent way, and are presented either as fixed format data structures or in AML. The main AML table is DSDT (the system description table is differentiated).
Pointer Description The Root system is located in a way that depends on the platform, and describes the rest of the table.
Security risks
Ubuntu Linux founder Mark Shuttleworth has likened ACPI to Trojan horses. He has described the proprietary firmware (related to ACPI or other firmware) as a security risk, saying that "firmware on your device is NSA's best friend" and call firmware (ACPI or non-ACPI) "Trojan horse with monumental proportions". He has shown that low quality, closed-source firmware is a major threat to system security: "Your biggest mistake is to assume that the NSA is the only institution that abuses this belief - in fact, it makes sense to assume that all firmware is a tank of insecurity, the highest level of incompetence of the producers, and the highest level of competence from the vast array of agencies ".
As a solution to this problem, it has requested a declarative firmware (ACPI or non-ACPI). Firmware must be open source so that code can be checked and verified. Firmware must be declarative, which means it should describe "hardware relationships and dependencies" and should not include executable code.
See also
References
External links
- Official website (UEFI/ACPI Specifications)
- Everything You Need to Know About C-States CPU Power-Save Mode
- Sample ASL code (in *.dsl file) from SeaBIOS project
- Sample ASL EFI code used by VirtualBox; EFI/ASL code itself comes from the open source Intel EFI Development Kit II (TianoCore)
This article is based on material extracted from Free On-line Computing Dictionary before November 1, 2008 and entered under "license" terms of GFDL, version 1.3 or later.
Source of the article : Wikipedia