ACPI

Z Multimediaexpo.cz

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í.

Obsah

Historie

Standard ACPI byl vyvinut za vzájemné spolupráce společností Intel, Microsoft 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 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 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

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 aktuálních 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). 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). Žádná data nebudou při odpojení napájení ztracena. 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

  1. LWN.net (anglicky)
  2. Linux Journal – Linus & the Lunatics, Part II (anglicky)
  3. http://www.novell.com/documentation/suse91/suselinux-adminguide/html/ch09s03.html – Troubleshooting ACPI
  4. http://www.acpi.info/presentations/SF09_EBLS005_100.pdf – Intel Developer Forum (Fall, 2009)
  5. http://www.columbia.edu/~ariel/acpi/acpi_howto.txt – ACPI HOWTO (zastaralé)
  6. ftp://ftp.suse.com/pub/people/trenn/ACPI_BIOS_on_Linux_guide/acpi_guideline_for_vendors.pdf – ACPI guideline for vendorss (2008)

Externí odkazy