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í IntelMicrosoft a Toshiba v roce 1996. Poslední zveřejněná verze, na které se nově podíleli HP a Phoenix byla vypuštěna 5. dubna 2010 s oznacenim Revision 4.0a. V současné době pracují vývojáři na nové verzi ACPI 5.0.

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 Linuxuoznač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 32-bitové 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 [editovat]

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 [editovat]

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í). Napří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). 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.