ACPI

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

ACPI (ang. Advanced Configuration and Power Interface, zaawansowany interfejs zarządzania konfiguracją i energią) – otwarty standard opracowany przez firmy Intel, Microsoft i Toshiba, do których później dołączyły HP oraz Phoenix, po raz pierwszy ogłoszony w grudniu 1996.

ACPI zwiększa możliwości systemów zarządzania energią oferowane przez wcześniejsze rozwiązanie APM. Umożliwia systemowi operacyjnemu kontrolowanie ilości energii dostarczanej do poszczególnych urządzeń komputera (napędu CD-ROM, twardego dysku oraz urządzeń peryferyjnych) i, podobnie jak APM, umożliwia ich wyłączanie, gdy nie są używane a konieczne jest oszczędzanie energii.

Najnowsza wersja specyfikacji - 5.0 - ogłoszona została 6 grudnia 2011.

Przegląd[edytuj | edytuj kod]

Najbardziej rozpowszechnioną częścią standardu jest zarządzanie poborem energii; w tej dziedzinie ACPI wprowadza dwa znaczne usprawnienia. Po pierwsze, zarządzanie poborem energii zostało przekazane systemowi operacyjnemu. Poprzednio stosowany standard APM pozostawiał kwestie poboru energii BIOS-owi komputera – do ustawień tych system operacyjny miał tylko ograniczony dostęp. Według standardu ACPI, BIOS udostępnia systemowi operacyjnemu narzędzia pozwalające na bezpośrednią ingerencję w szczegóły pracy urządzeń, przez co system uzyskuje prawie całkowitą kontrolę nad oszczędzaniem mocy.

Drugą ważną cechą ACPI jest implementacja zasad zarządzania poborem prądu, które wcześniej spotykano tylko w urządzeniach przenośnych, do domeny komputerów stacjonarnych i serwerów. Według tych zasad każdy system komputerowy można przenieść w stan krańcowo niskiego poboru mocy, w których zasilanie odłączone jest nawet od pamięci urządzenia, ale z którego system może być bardzo szybko postawiony w stan pełnej gotowości do pracy za pomocą prostego przerwania (wykorzystującego klawiaturę, zegar czasu rzeczywistego, modem, itd.). Te cechy spotykane były, do czasu wprowadzenia standardu, tylko w komputerach przenośnych.

Standard zakłada, że niektóre klawisze standardowej klawiatury komputera mogą służyć do zawieszenia pracy komputera, lub do jego wyłączenia. Niektórzy dostawcy sprzętu, na przykład ASUS, czy Compaq, rozszerzyli te zasady, wprowadzając w swoich produktach dodatkowe klawisze, tak zwane klawisze zarządzania energią.

Standardów ACPI nie można stosować do starszego sprzętu. By korzystać z dobrodziejstw ACPI, zarówno system, jak i chipset płyty głównej oraz w niektórych przypadkach procesor komputera muszą być specjalnie zaprojektowane.

Do zarządzania energią, ACPI wykorzystuje specjalny język – ACPI Machine Language, AML – zawierający odwołania do zdarzeń związanych z poborem mocy. Specyfikacja nie zakłada wykorzystywania natywnego języka maszynowego danego komputera.

Pierwszą wersją systemu Windows umożliwiającą stosowanie standardu ACPI była wersja Windows 98. Pierwszą wersją systemu FreeBSD obsługującą ten standard była wersja 5.0. Co najmniej częściową obsługą ACPI mogą poszczycić się Linux, OpenBSD i NetBSD.

Stany[edytuj | edytuj kod]

Stany globalne[edytuj | edytuj kod]

Specyfikacja ACPI definiuje następujące siedem tak zwanych stanów globalnych, w których może znajdować się system komputerowy kompatybilny z ACPI:

  • G0, Pracuje (Working) jest domyślnym stanem pracy komputera, oznaczającym, że zarówno system operacyjny, jak i dowolne uruchomione na nim programy działają, a procesor (lub procesory) normalnie wykonuje polecenia. W tym stanie, tj. bez przechodzenia w stan G1, możliwe jest przełączenie procesora oraz urządzeń dodatkowych (napędów optycznych, dysków twardych) wielokrotnie w stan niskiego poboru energii, C0-Cn dla procesora i D0-D3 dla napędów i innych urządzeń. Dla przykładu, komputery przenośne domyślnie wyłączają wszystkie aktualnie nieużywane urządzenia podczas pracy na baterii. Część systemów stacjonarnych odłącza urządzenia dla zminimalizowania hałasu.
  • G1, Uśpiony (Sleeping) dzieli się na dalsze stany, oznaczane S1 do S4. Czas przełączenia komputera do stanu G0 jest najkrótszy w przypadku S1, względnie krótki dla stanów S2 i S3', najdłuższy w przypadku S4'.
    • S1 to najbardziej "energożerny" stan uśpienia. Podczas przejścia w ten stan, czyszczone są pamięci podręczne procesora, a procesor przestaje wykonywać polecenia. Zachowany jest dopływ energii do procesora i pamięci, a urządzenia, które nie zgłaszają konieczności utrzymania dopływu energii są wyłączane. Niektóre nowe urządzenia nie obsługują tego stanu, zaś starsze komputery znacznie prawdopodobniej obsługują stan S1 niż S3.
    • S2 jest stanem głębszego uśpienia niż S1. przejście w ten stan oznacza odłączenie zasilania od procesora. Nie jest on jednak często stosowany.
    • Stan S3 w systemie Windows określany jest jako "stan wstrzymania", zaś komputery działające pod kontrolą MacOS X nazywają go "stanem uśpienia". Czasami pojawia się również określenie "wstrzymaj do pamięci" (Suspend to RAM, STR). Oficjalnie specyfikacja ACPI podaje tylko terminy S3 i Sleep. W tym stanie utrzymany jest dopływ prądu do pamięci RAM, choć jest to prawie jedyny podzespół komputera pozostający pod napięciem. Skoro więc stan systemu operacyjnego, jak też uruchomione programy i otwarte dokumenty przechowywane są w pamięci operacyjnej, użytkownik może wrócić do pracy przerwanej przed przejściem komputera w stan S3 w dokładnie w tym samym miejscu, gdzie znajdował się przedtem – stan pamięci operacyjnej jest niezmieniony. Specyfikacja oficjalnie stwierdza, że stan S3 jest podobny do S2, jedyna różnica leży w ilości wyłączanych podzespołów systemu.
    • S4, w systemie Windows określany mianem "hibernacja". MacOS X nazywa ten stan "bezpiecznym uśpieniem", a niektóre źródła podają termin "wstrzymaj do dysku" (Suspend to Disk). Specyfikacja ACPI podaje tylko określenie S4. W tym stanie zawartość pamięci operacyjnej komputera zapisywana jest na twardym dysku, co zachowuje stan systemu operacyjnego, uruchomionych aplikacji, otwartych dokumentów, itd. Oznacza to możliwość podjęcia pracy przerwanej przed przejściem komputera w stan S4 w tym samym miejscu, podobnie, jak ma to miejsce w przypadku stanu S3. Różnica pomiędzy tymi dwoma stanami, oprócz zwiększonej ilości czasu, wymaganej do przeniesienia zawartości pamięci na twardy dysk i odwrotnie, jest taka, że całkowite odcięcie zasilania od komputera przebywającego w stanie S3 oznacza utratę przechowywanych w pamięci danych, na przykład nie zapisanych dokumentów. Komputer przełączony w stan S4 nie cierpi z powodu całkowitego odcięcia zasilania. Stan S4 jest podobny raczej do G2 i G3 niż do któregokolwiek ze stanów S1-S3.
  • G2, programowo wyłączony (Soft Off), czasami określany jako S5 jest prawie identyczny z niżej opisanym stanem G3, co oznacza, że do przełączenia systemu z jednego z tych stanów do stanu pracy G0 niezbędne jest uruchomienie komputera od nowa. Jedyną różnicą jest to, że stan G3 stosowany jest w przypadkach fizycznego odłączenia źródła zasilania, zaś G2 może być wywołany przez system operacyjny – najczęściej jako skutek wydania przez użytkownika polecenia zamknięcia systemu. Dodatkowo w celu umożliwienia takich działań, jak uruchomienie komputera po naciśnięciu przez użytkownika klawisza spacji, niektóre komponenty systemu komputerowego pozostają pod napięciem. Nie jest wiec bezpieczne przeprowadzanie na przykład wymiany podzespołów komputera, gdy przebywa on w stanie G2.
  • G3 (mechanicznie wyłączony, Mechanical Off). Pobór mocy przez komputer jest bardzo bliski zeru, do tego stopnia, że możliwe jest odłączenie kabla zasilającego i bezpieczny demontaż części składowych komputera. Typowym elementem pozostającym pod napięciem jest zegar czasu rzeczywistego, czerpiący energię z własnej małej baterii. Komputer przechodzi w ten stan po utracie źródła zasilania, na przykład przy awarii sieci elektrycznej. Po przywróceniu źródła zasilania, do doprowadzenia komputera do stanu G0 niezbędne jest przeprowadzenie pełnego procesu startowego.

Dodatkowo obecny jest stan Legacy, zdefiniowany dla urządzeń pracujących pod kontrolą systemu operacyjnego niekompatybilnego ze specyfikacją ACPI. W tym stanie urządzenia i pobierana przez nich energia nie podlegają ACPI, co efektywnie odłącza działanie procedur standardu.

Stany urządzeń[edytuj | edytuj kod]

Stany urządzeń D0-D3 zależą od typu zastosowanego urządzenia:

  • D0, W pełni działający, Fully-On jest stanem zwykłego działania urządzenia.
  • D1 i D2 są pośrednimi stanami zasilania, różnie definiowanymi dla poszczególnych urządzeń.
  • D3, Wyłączony, Off, jest stanem, w którym urządzenie jest wyłączone i nie reaguje na sygnały dochodzące z magistrali.

Stany procesora[edytuj | edytuj kod]

Stany procesora, C0-C3, definiuje się następująco:

  • C0 jest stanem standardowej pracy procesora.
  • C1, określany jako "Zatrzymany" (Halt) jest stanem, w którym procesor nie wykonuje rozkazów, ale może momentalnie powrócić do stanu pełnej funkcjonalności.
  • C2, określany jako "Zatrzymanie zegara" (Stop-Clock) oznacza przejście procesora w stan, w którym jest on widoczny programowo, lecz jego "wybudzenie" może zająć więcej czasu.
  • C3, określany jako "Uśpiony" (Sleep) jest stanem, w którym procesor nie musi utrzymywać spójnej zawartości swojej pamięci podręcznej. Niektóre procesory wprowadzają różne wersje tego stanu (głębokie uśpienie, głębsze uśpienie, itd.), różniące się czasem, jaki jest niezbędny do doprowadzenia procesora do stanu pełnej gotowości do pracy.

Stany wydajności[edytuj | edytuj kod]

Podczas pracy procesora lub innego urządzenia w stanie D0 lub C0, możliwe jest korzystanie z jednego z kilku poziomów wydajności związanej z pobieraną energią. Stany te są zależne od zastosowania, ale P0 to stan maksymalnego poboru mocy i największej wydajności urządzenia, zaś P1 do Pn to kolejne stany coraz oszczędniejszej, lecz mniej wydajnej pracy. Górna granica jest również zależna od zastosowania, ale nie może przekraczać P16.

Poszczególne "stany P" w procesorach Intela określane są jako SpeedStep, AMD nazywa je Cool'n'Quiet, zaś VIAPowerSaver.

Tabele ACPI[edytuj | edytuj kod]

Tabelami wykorzystywanymi przez systemy operacyjne do uzyskiwania informacji o urządzeniach są:

  • 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) – wykorzystywana przez systemy zdolne wykorzystywać niejednolity dostęp do pamięci (Non-Uniform Memory Access, NUMA). Systemy takie są zdolne przydzielać pamięć lokalną do lokalnie wykonywanych wątków. Dotyczy to choćby wieloprocesorowych komputerów opartych na układach AMD Opteron. Chcąc uzyskać system w pełni odpowiadający NUMA należy w BIOSie komputera wyłączyć opcję "Node Interleave", pozostawiając opcję "SRAT" włączoną. Dodatkowo, zastosowany system operacyjny również musi spełniać założenia NUMA – w chwili obecnej na liście systemów spełniających te wymagania znajdują się wszystkie 64-bitowe wersje Windows oraz systemy Linux z odpowiednio skonfigurowanym jądrem.
  • SLIT (System Locality Distance Information Table)
  • SSDT (Secondary System Descriptor Table)

Krytyka[edytuj | edytuj kod]

  • Specyfikacja ACPI jest skomplikowana – mieści się w najnowszej wersji na ponad 700 stronach tekstu – i zawiera wiele części, między innymi tablice deklaracyjne, system kodowania i wykaz poszczególnych urządzeń. Często podnoszoną kwestią (patrz [1]) było to, że zaimplementowanie ACPI oznacza konieczność zezwolenia skomplikowanemu, nie budzącemu zaufania i prawdopodobnie obciążonemu błędami kodowi na pracę z pełnymi uprawnieniami, co sprowadza na system komputerowy zagrożenia w kwestiach stabilności i bezpieczeństwa.
  • W sytuacjach, gdy sprzęt nie spełnia norm ACPI, lecz raportuje takie możliwości, istnieje kwestia oprogramowania mającego styczność z poszczególnymi problematycznymi urządzeniami. Oprogramowanie może być zgodne z ACPI, co przekłada się na ryzyko niestabilności sprzętowej, albo odbiegać od norm ACPI, by odpowiednio komunikować się z niestandardowymi urządzeniami. Jest to jednak działanie z punktu widzenia inżynierii oprogramowania niepożądane, gdyż tak tworzone oprogramowanie musiałoby być dostosowywane do względnie dużej liczby urządzeń i odpowiednio testowane – a do unikania tego typu sytuacji powstają takie standardy, jak ACPI. Między "purystami standardowymi" (jak na przykład środowiska linuksowe) a adwokatami oprogramowania, które ma "po prostu działać" z maksymalną ilością urządzeń toczą się ciągle debaty.

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]