Advanced Configuration and Power Interface
ACPI (Advanced Configuration and Power Interface) je v informatice označení pro otevřenou specifikaci pro komunikaci jádra operačního systému s hardwarem a naopak, abstrakci funkcí hardwaru a též nahrazení dřívější technologie APM (Advanced Power Management). Jednou z podmnožin funkcí je správa napájení – řízení spotřeby u celé řady mobilních a stolních počítačů, serverů a periferních zařízení.
Historie
Standard ACPI byl vyvinut za vzájemné spolupráce společností Intel, Microsoft a Toshiba v roce 1996. Poslední zveřejněná verze ACPI specifikace verze 6.3 byla publikována UEFI Fórem na konci ledna 2019.
Kontroverze
Někteří softwaroví vývojáři mají k ACPI výhrady, protože standard vyžaduje, aby byl bajtkód z externího (a tedy nedůvěryhodného) zdroje spuštěn s neomezenými oprávněními.[1] Linus Torvalds, tvůrce jádra Linuxu označil ACPI jako „kompletně katastrofální návrh ve všech směrech“ (anglicky a complete design disaster in every way) ve spojení se svým pohledem „moderní PC jsou hrozná“ (anglicky modern PCs are horrible).[2]
Implementace
Specifikace byla navržena multiplatformně jak pro 32bitové procesory architektury x86, tak pro 64bitový procesor Itanium. Není omezena jen na notebooky nebo stolní počítače, její součástí jsou i funkce pro víceprocesorové počítače (což APM vůbec neřešilo). Součástí ACPI specifikace je i programovací jazyk ASL (ACPI Source Language), jímž je možno programovat obsluhy událostí (event handler) jako je například probuzení počítače za 30 minut a podobně. ASL je překládán pomocí kompilátoru do bytekódu.
Od roku 2000 většina počítačů podporuje ACPI. Z počátku neexistovala referenční implementace, podle které by mohla být práce tvůrců BIOSu kontrolována.
Microsoft Windows
Ve Windows 2000 byla obsažena první implementace, která částečně ACPI implementovala, avšak ne zcela podle normy. Výrobci BIOSů pak vytvářeli vlastní část implementace takovou, aby „fungovala s Windows“, což způsobovalo potíže v alternativních systémech.[3] Rozšíření z poslední verze ACPI 4.0 je zčásti začleněna do Windows 7 a Windows Server 2008 R2.[4]
Linux
V Linuxu byla první implementací verze vyvíjená uvnitř firmy SUSE, jejímž cílem bylo se striktně držet specifikace. Implementace v BIOSech počítačů však obsahují mnoho chyb, a proto tento přístup neměl příliš úspěch. Následná implementace, která byla zařazena do jádra veze 2.4.x a je obsažena i v jádrech verze 2.6, obsahuje pro tyto případy spoustu workaroundů a výjimek pro jednotlivé verze BIOSů.[5] Plně je podporováno ACPI verze 2.0.[6]
Přítomnost ACPI a její podpory lze po startu systému zjistit pomocí níže uvedeného příkazu. Pokud jsou vypsány nějaké řádky o ACPI, lze v nich vysledovat i stav ACPI (zjištěné problémy i doporučení). Na příkazovém řádku zadejte:
dmesg | grep ACPI
ACPI tabulky
Informace o systému jsou zapisovány do samostatných ACPI tabulek:
- RSDP – Root System Description Pointer
- RSDT – Root System Description Table
- DSDT – Differentiated System Description Table
- XSDT – Extended System Description Table
- FADT – Fixed ACPI Description Table
- FACS – Firmware ACPI Control Structure
- SBST – Smart Battery Table
- ECDT – Embedded Controller Boot Resources Table
- MADT – Multiple APIC Description Table
- SRAT – System Resource Affinity Table
- SLIT – System Locality Distance Information Table
- SSDT – Secondary System Descriptor Table
DSDT tabulka je jedna z nejdůležitějších a největších tabulek ACPI. Je součástí BIOSu a operační systém ji načítá při bootování. Zpravidla může DSDT obsahovat chyby (výrobce hlavně zajímá, aby vše fungovalo pod MS Windows).
ACPI stavy
- G0 (Working): Normální běh PC, počítač běží a můžete na něm pracovat
- G1 (Sleeping): Stav se sníženou spotřebou, nedojde k ukončení běžících programů a k úplnému vypnutí počítače
- S1 (Power on Suspend, POS): Stav s vysokou rychlostí uspání i probuzení. CPU běží, ale nevykonává žádné instrukce (zastaven např. instrukcí HLT - nečinný). Není ukončen běh programů ani ztracena data v paměti. Vypínají se jen některé komponenty – třeba monitor a disky. Spotřeba energie není o mnoho nižší než při normálním běhu. Výpadkem energie dojde ke ztrátě dat.
- S2: Režim obdobný jako S1, navíc se vypíná také procesor. V praxi se téměř nepoužívá.
- S3 (Suspend to RAM, STR): Stav s vysokou rychlostí uspání i probuzení. Všechna data, stav CPU a periférií jsou uchována v operační paměti. Ostatní komponenty včetně zdroje jsou vypnuty. PC ze sítě odebírá pouze napětí 5 V pro udržení obsahu paměti. V tomto režimu se spotřeba počítače pohybuje kolem 5 W a počítač by do něj měl přejít po aktivaci „úsporného režimu“. Výpadkem energie dojde ke ztrátě dat.
- S4 (Suspend to Disk, STD): „Režim spánku“ neboli hibernace (u Windows NT). Obsah paměti je při přechodu do tohoto stavu uložen na pevný disk (u Windows do souboru s názvem
hiberfil.sys
, v Linuxu typicky do stránkovacího oddílu). Poté je počítač vypnut (dojde k přepnutí do stavu G2). Nevýhodou je značně delší doba mezi uspáváním a probouzením, data jsou však i při odpojení napájení zachována.
- G2 (Soft Off): Tento stav se také někdy označuje jako S5 a nachází se v něm většina vypnutých PC. Zdroj však stále dodává do základní desky napětí o velikosti 5V (standby). V tomto stavu nebudou zachována žádná data podobně jako ve stavu G3. Počítač může být zapnut tlačítkem, pomocí klávesnice, přes pokyn z počítačové sítě a podobně.
- G3 (Mechanical Off): Při odpojení od napájení, v tomto stavu dojde k úplnému vypnutí napájení počítače.
Reference
- CORBET, Jonathan. Kernel development [online]. LWN.net, 2001-07-04 [cit. 2010-07-02]. Dostupné online. (anglicky)
- SEARLS, Doc. Linus & the Lunatics, Part II [online]. Linux Journal, 2003-11-25 [cit. 2010-01-13]. Dostupné online. (anglicky)
- – Troubleshooting ACPI
- – Intel Developer Forum (Fall, 2009). www.acpi.info [online]. [cit. 2011-01-03]. Dostupné v archivu pořízeném dne 2010-12-11.
- – ACPI HOWTO (zastaralé). www.columbia.edu [online]. [cit. 2011-01-03]. Dostupné v archivu pořízeném dne 2010-12-29.
- – ACPI guideline for vendorss (2008)
Externí odkazy
- http://www.acpi.info/DOWNLOADS/ACPIspec40a.pdf – Advanced Configuration and Power Interface Specification
- http://www.acpi.info Archivováno 22. 6. 2011 na Wayback Machine – domácí stránka ACPI
- http://www.intel.com/technology/iapc/acpi/ – stránky o ACPI u firmy Intel
- http://www.acpica.org – Intel's ACPI Component Architecture