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 Advanced Power Management (APM). 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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]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 | editovat zdroj]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
[editovat | editovat zdroj]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
[editovat | editovat zdroj]- 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
[editovat | editovat zdroj]- ↑ 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
[editovat | editovat zdroj]- Obrázky, zvuky či videa k tématu Advanced Configuration and Power Interface na Wikimedia Commons
- http://www.acpi.info/DOWNLOADS/ACPIspec40a.pdf Archivováno 17. 9. 2010 na Wayback Machine. – 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