# Interfície ACPI

Configuració avançada i interfície d'alimentació (ACPI) és un estàndard obert que els sistemes operatius poden utilitzar per descobrir i configurar components de maquinari de l'ordinador, per dur a terme la gestió de l'energia (p. ex. posar en repòs components de maquinari no utilitzats), configuració automàtica (p., i seguiment de l'estat. Llançat per primera vegada el desembre de 1996, ACPI pretén substituir la gestió avançada de l'energia (APM), l'especificació multiprocessador i l'especificació Plug and Play BIOS (PnP). ACPI posa la gestió de l'energia sota el control del sistema operatiu, a diferència del sistema anterior centrat en la BIOS que es basava en el microprogramari específic de la plataforma per determinar les polítiques de configuració i gestió de l'energia. L'especificació és fonamental per al sistema de configuració i gestió d'energia dirigida pel sistema operatiu (OSPM). L'ACPI defineix les interfícies d'abstracció de maquinari entre el microprogramari del dispositiu (per exemple, BIOS, UEFI), els components de maquinari de l'ordinador i els sistemes operatius.
Internament, ACPI anuncia els components disponibles i les seves funcions al nucli del sistema operatiu mitjançant llistes d'instruccions (" mètodes ") proporcionades a través del microprogramari del sistema (UEFI o BIOS), que el nucli analitza. A continuació, ACPI executa les operacions desitjades escrites en ACPI Machine Language (com ara la inicialització de components de maquinari) mitjançant una màquina virtual mínima incrustada.
Intel, Microsoft i Toshiba van desenvolupar originalment l'estàndard, mentre que HP, Huawei i Phoenix també van participar més tard. A l'octubre de 2013, ACPI Special Interest Group (ACPI SIG), els desenvolupadors originals de l'estàndard ACPI, van acordar transferir tots els actius al Fòrum UEFI, en el qual es durà a terme tot el desenvolupament futur. La darrera versió de l'estàndard 6.5 es va publicar l'agost de 2022.

## Arquitectura

L'ACPI a nivell de microprogramari té tres components principals: les taules ACPI, la BIOS ACPI i els registres ACPI. L'ACPI BIOS genera taules ACPI i les carrega a la memòria principal. Gran part de la funcionalitat ACPI del microprogramari es proporciona en codi de bytes de l'ACPI Machine Language (AML), un llenguatge de baix nivell específic de domini complet de Turing, emmagatzemat a les taules ACPI. Per fer ús de les taules ACPI, el sistema operatiu ha de tenir un intèrpret per al bytecode AML. L'ACPI Component Architecture (ACPICA) proporciona una implementació d'intèrpret AML de referència. En el moment del desenvolupament de la BIOS, el bytecode AML es compila a partir del codi ASL (ACPI Source Language).
La decisió general de disseny no va estar exempta de crítiques. El novembre de 2003, Linus Torvalds —autor del nucli de Linux— va descriure ACPI com "un complet desastre de disseny en tots els sentits".

### Arquitectura de components ACPI (ACPICA)

L'ACPI Component Architecture (ACPICA), escrit principalment pels enginyers d'Intel, proporciona una implementació de referència de codi obert independent de la plataforma – sistema operatiu relacionat amb el codi ACPI. El codi ACPICA és utilitzat per Linux, Haiku, ArcaOS i FreeBSD, que el complementen amb el codi específic del seu sistema operatiu.

## Història

La primera revisió de l'especificació ACPI es va publicar el desembre de 1996, suportant espais d'adreçament de 16, 24 i 32 bits. No va ser fins a l'agost de 2000 que l'ACPI va rebre suport d'adreces de 64 bits, així com suport per a estacions de treball i servidors multiprocessador amb la revisió 2.0.
El 1999, l'aleshores director general de Microsoft, Bill Gates, va declarar en un correu electrònic que Linux es beneficiaria d'ACPI sense que haguessin de treballar i va suggerir que fos només per a Windows.
El setembre de 2004, es va publicar la revisió 3.0, que incorporava a l'especificació ACPI el suport per a interfícies SATA, bus PCI Express, suport multiprocessador per a més de 256 processadors, sensors de llum ambiental i dispositius de presència de l'usuari, a més d'ampliar el model tèrmic més enllà de l'anterior. suport centrat en el processador.
Publicada el juny de 2009, la revisió 4.0 de l'especificació ACPI va afegir diverses característiques noves al disseny; els més notables són el suport USB 3.0, el suport de processador lògic en ralentí i el suport x2APIC.
La revisió 5.0 de l'especificació ACPI es va publicar el desembre de 2011, que va afegir el suport de l'arquitectura ARM. La revisió 5.1 es va publicar el juliol de 2014.
L'última revisió d'especificacions és la 6.5, que es va publicar l'agost de 2022.

## Interfícies
### Maquinari

Els sistemes compatibles amb ACPI interactuen amb el maquinari mitjançant una "Interfície de maquinari fix de funcions (FFH)" o un model de programació de maquinari independent de la plataforma que es basa en el llenguatge de màquina ACPI (AML) específic de la plataforma proporcionat pel fabricant d'equips originals (OEM).

### Firmware

ACPI defineix moltes taules que proporcionen la interfície entre un sistema operatiu compatible amb ACPI i el microprogramari del sistema (BIOS o UEFI). Això inclou, per exemple, RSDP, RSDT, XSDT, FADT, FACS, DSDT, SSDT, MADT i MCFG.

## Referències

* ↑ «ACPI Overview» (slide show in PDF) (en anglès). www.acpi.info. Arxivat de l'original el 2019-05-25.
* ↑ «APM BIOS Specification» (RTF) (en anglès). Intel Corporation, Microsoft Corporation, 01-02-1996. Arxivat de l'original el February 6, 2012. [Consulta: 2 juliol 2010].
* ↑ «What is ACPI (Advanced Configuration and Power Interface)? - Definition from WhatIs.com» (en anglès). SearchWindowsServer. [Consulta: 18 setembre 2020].
* ↑ «ACPI Device Tree - Representation of ACPI Namespace — The Linux Kernel documentation» (en anglès). www.kernel.org. [Consulta: 18 setembre 2020].
* ↑ «The Advanced Configuration & Power Interface web page has a prominent note that links to the Preexisting ACPI Specifications page on the UEFI web site» (en anglès). acpi.org, 23-07-2014. Arxivat de l'original el June 22, 2011. [Consulta: 25 gener 2016].
* ↑ «Advanced Configuration and Power Interface Specification, Release 6.5» (en anglès). UEFI.org/specifications, 01-08-2022. [Consulta: 4 octubre 2022].
* ↑ Bernhard Kauer. «ATARE: ACPI Tables and Regular Expressions» (en anglès), 01-08-2009. [Consulta: 18 febrer 2019].
* ↑ Searls, Doc. «Linus & the Lunatics, Part II» (en anglès). Linux Journal, 25-11-2003. [Consulta: 13 gener 2010].
* ↑ «Readme for the ACPI Driver Package» (en anglès). arcanoae.com. [Consulta: 6 setembre 2020].
* ↑ «Microsoft wollte ACPI nur für Windows» (en alemany austríac). Der Standard. [Consulta: 6 novembre 2022].
* ↑ «Microsoft: ACPI sollte nur unter Windows funktionieren» (en anglès). Golem.de. [Consulta: 6 novembre 2022].
* ↑ Gates, Bill. «ACPI extensions» (en anglès), 24-01-1999. Arxivat de l'original el 2007-02-02.
* ↑ Hewlett-Packard. «Advanced Configuration and Power Interface Specification (Revision 5.0)» (en anglès). acpi.info, 06-12-2011. Arxivat de l'original el September 14, 2012. [Consulta: 17 novembre 2013].
* ↑ «Advanced Configuration and Power Interface Specification (Revision 5.1)» (en anglès). uefi.org, 23-07-2014. [Consulta: 24 maig 2015].
* ↑ «Advanced Configuration and Power Interface Specification, Release 6.5» (en anglès). UEFI.org/specifications, 01-08-2022. [Consulta: 4 octubre 2022].
* ↑ Brown, Len Ottawa Linux Symposium, 20-07-2005, pàg. 3.
* ↑ «ACPI Tables — The Linux Kernel documentation» (en anglès). www.kernel.org. Arxivat de l'original el 2020-10-20. [Consulta: 8 novembre 2020].