Advanced Configuration and Power Interface

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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[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, 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[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 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 | 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). 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]

  1. CORBET, Jonathan. Kernel development [online]. LWN.net, 2001-07-04, [cit. 2010-07-02]. Dostupné online. (anglicky) 
  2. SEARLS, Doc. Linus & the Lunatics, Part II [online]. Linux Journal, 2003-11-25, [cit. 2010-01-13]. Dostupné online. (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[editovat | editovat zdroj]