ACPI – Zaawansowany Interfejs Zarządzania Konfiguracją i Energią
ACPI (ang. Advanced Configuration and Power Interface, zaawansowany interfejs zarządzania konfiguracją i energią) to otwarty standard stworzony przez firmy Intel, Microsoft oraz Toshiba, a później dołączyły do nich Hewlett-Packard i Phoenix Technologies. Standard ten został zaprezentowany w grudniu 1996 roku.
ACPI poszerza możliwości zarządzania energią w systemach operacyjnych w porównaniu do wcześniejszego rozwiązania APM. Umożliwia on systemowi operacyjnemu kontrolę nad ilością energii dostarczanej do różnych urządzeń komputera, takich jak napędy CD-ROM, twarde dyski oraz urządzenia peryferyjne. Tak jak w przypadku APM, ACPI pozwala na wyłączanie tych urządzeń, gdy nie są używane, co sprzyja oszczędzaniu energii.
Ostatnia wersja specyfikacji, 6.2A, została ogłoszona we wrześniu 2017 roku.
Przegląd
Jednym z najważniejszych aspektów standardu jest zarządzanie poborem energii, które wprowadza dwa znaczące usprawnienia. Po pierwsze, zarządzanie poborem energii zostało przeniesione do systemu operacyjnego. W przeciwieństwie do wcześniejszego standardu APM, który pozostawiał tę kwestię BIOS-owi, ACPI umożliwia systemowi operacyjnemu bezpośrednią ingerencję w detale działania urządzeń, co daje mu niemal pełną kontrolę nad oszczędzaniem energii.
Drugą kluczową cechą ACPI jest wprowadzenie zasad zarządzania poborem energii, które wcześniej były stosowane głównie w urządzeniach przenośnych, również do komputerów stacjonarnych i serwerów. Zgodnie z tymi zasadami, każdy system komputerowy może przejść w stan skrajnie niskiego poboru energii, w którym zasilanie jest odłączone nawet od pamięci, ale system może szybko wrócić do pełnej gotowości za pomocą prostego przerwania (np. klawiatury, zegara czasu rzeczywistego, modemu itd.). Takie funkcje były do tej pory dostępne jedynie w laptopach.
Standard przewiduje, że niektóre klawisze standardowej klawiatury mogą być używane do uśpienia lub wyłączania komputera. Niektórzy producenci, tacy jak ASUS czy Compaq, rozszerzyli te zasady, dodając specjalne klawisze, tzw. klawisze zarządzania energią.
ACPI nie jest kompatybilne ze starszym sprzętem. Aby korzystać z jego funkcji, zarówno system, jak i chipset płyty głównej, a w niektórych przypadkach także procesor, muszą być zaprojektowane specjalnie dla ACPI.
W zarządzaniu energią ACPI wykorzystuje specjalny język, ACPI Machine Language (AML), który zawiera odniesienia do zdarzeń związanych z poborem energii. Specyfikacja nie przewiduje użycia natywnego języka maszynowego danego komputera.
Pierwsza wersja systemu Windows, która obsługiwała ACPI, to Windows 98, a dla systemu FreeBSD była to wersja 5.0. Częściową obsługą ACPI mogą pochwalić się również systemy Linux, OpenBSD oraz NetBSD.
Stany
Stany globalne
Specyfikacja ACPI definiuje siedem stanów globalnych, w których może znajdować się system komputerowy zgodny z ACPI:
- G0, Pracuje (Working) – Jest to domyślny stan pracy komputera, w którym system operacyjny oraz uruchomione programy działają, a procesor wykonuje polecenia. W tym stanie, bez przechodzenia w stan G1, możliwe jest przełączanie procesora oraz urządzeń dodatkowych (np. napędów optycznych, dysków twardych) w stany niskiego poboru energii, C0-Cn dla procesora i D0-D3 dla urządzeń. Na przykład, laptopy automatycznie wyłączają nieużywane urządzenia podczas pracy na baterii.
- G1, Uśpiony (Sleeping) – Dzieli się na stany od S1 do S4. Czas przełączenia komputera do stanu G0 jest najszybszy w przypadku S1, względnie krótki dla S2 i S3, natomiast najdłuższy dla S4.
- S1 – Najbardziej „energożerny” stan uśpienia, w którym czyszczone są pamięci podręczne procesora, a procesor przestaje wykonywać polecenia. Zasilanie pozostaje podłączone do procesora i pamięci, a urządzenia, które nie wymagają energii, są wyłączane. Niektóre nowe urządzenia mogą nie obsługiwać tego stanu, podczas gdy starsze komputery częściej obsługują S1 niż S3.
- S2 – Stan głębszego uśpienia niż S1, w którym zasilanie jest odłączane od procesora, jednak nie jest on często wykorzystywany.
- S3 – W Windows określany jako „stan wstrzymania”, a w macOS jako „stan uśpienia”. Utrzymywany jest dopływ energii do pamięci RAM, co pozwala na wznowienie pracy dokładnie w tym samym miejscu, w którym została przerwana. Specyfikacja ACPI uznaje ten stan za podobny do S2, z tą różnicą, że w S3 więcej podzespołów jest wyłączanych.
- S4 – W Windows nazywany „hibernacją”, a w macOS „bezpiecznym uśpieniem”. W tym stanie zawartość pamięci operacyjnej jest zapisywana na dysku twardym, co umożliwia wznowienie pracy w tym samym miejscu po wyjściu z hibernacji. Główna różnica między S3 a S4 polega na tym, że w stanie S3 utrata zasilania skutkuje utratą danych, podczas gdy w S4 komputer jest odporny na całkowite odcięcie zasilania.
- G2, programowo wyłączony (Soft Off) – Jest to stan niemal identyczny z G3, ponieważ do powrotu do G0 konieczne jest ponowne uruchomienie komputera. Stan G2 może być wywołany przez system operacyjny, a niektóre komponenty pozostają pod napięciem, co oznacza, że wymiana podzespołów nie jest bezpieczna.
- G3, mechanicznie wyłączony (Mechanical Off) – Pobór mocy jest bliski zeru, co umożliwia bezpieczny demontaż części składowych komputera. Typowym elementem, który pozostaje pod napięciem, jest zegar czasu rzeczywistego z własną baterią. Komputer przechodzi w ten stan po utracie źródła zasilania.
Dodatkowo istnieje stan Legacy, zdefiniowany dla urządzeń działających pod kontrolą systemów operacyjnych, które nie są zgodne z ACPI. W tym stanie urządzenia nie podlegają ACPI, co skutkuje brakiem działania procedur standardu.
Stany urządzeń
Stany urządzeń D0-D3 są definiowane w zależności od typu używanego sprzętu:
- D0, W pełni działający (Fully-On) – Jest to stan normalnej pracy urządzenia.
- D1 i D2 – Pośrednie stany zasilania, różnie definiowane dla poszczególnych urządzeń.
- D3, Wyłączony (Off) – Stan, w którym urządzenie jest wyłączone i nie reaguje na sygnały z magistrali.
Stany procesora
Stany procesora C0-C3 są definiowane następująco:
- C0 – Stan standardowej pracy procesora.
- C1, określany jako „Zatrzymany” (Halt) – Procesor nie wykonuje rozkazów, ale może szybko powrócić do stanu pełnej funkcjonalności.
- C2, określany jako „Zatrzymanie zegara” (Stop-Clock) – Procesor jest widoczny programowo, ale jego „wybudzenie” zajmuje więcej czasu.
- C3, określany jako „Uśpiony” (Sleep) – Procesor nie musi utrzymywać spójnej zawartości pamięci podręcznej. Niektóre procesory mogą mieć różne wersje tego stanu, różniące się czasem potrzebnym do powrotu do pełnej gotowości.
Stany wydajności
Podczas pracy procesora lub innego urządzenia w stanach D0 lub C0 można korzystać z różnych poziomów wydajności związanych z poborem energii. Stany te są zależne od zastosowania, gdzie P0 to maksymalne zużycie energii i wydajności, a P1 do Pn to stany coraz bardziej oszczędne, ale mniej wydajne. Górna granica również zależy od zastosowania, ale nie może przekraczać P255.
Poszczególne „stany P” w procesorach Intela są określane jako SpeedStep, w AMD nazywa się to Cool’n’Quiet, a w VIA – PowerSaver.
Tabele ACPI
Systemy operacyjne korzystają z różnych tabel, aby uzyskać informacje o urządzeniach, w tym:
- 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) – Używana przez systemy obsługujące niejednolity dostęp do pamięci (Non-Uniform Memory Access, NUMA). Te systemy potrafią przydzielać pamięć lokalną do lokalnych wątków, co dotyczy np. komputerów wieloprocesorowych opartych na AMD Opteron. Aby uzyskać pełną zgodność z NUMA, w BIOSie komputera należy wyłączyć opcję „Node Interleave”, pozostawiając „SRAT” włączoną. Dodatkowo, system operacyjny również musi spełniać wymogi NUMA – obecnie wszystkie 64-bitowe wersje Windows oraz odpowiednio skonfigurowane systemy Linux są zgodne z tymi wymaganiami.
- SLIT (System Locality Distance Information Table)
- SSDT (Secondary System Descriptor Table)
Krytyka
Specyfikacja ACPI liczy ponad 700 stron i zawiera wiele elementów, w tym tabelki deklaracyjne, system kodowania i listę urządzeń. Często podnoszoną kwestią jest to, że wdrożenie ACPI wymaga zezwolenia na działanie skomplikowanego, niepewnego i potencjalnie błędnego kodu z pełnymi uprawnieniami, co wprowadza zagrożenia dotyczące stabilności i bezpieczeństwa systemu komputerowego.
W sytuacjach, gdy sprzęt nie spełnia norm ACPI, ale zgłasza takie możliwości, pojawia się problem z oprogramowaniem, które musi radzić sobie z problematycznymi urządzeniami. Oprogramowanie może być zgodne z ACPI, co stwarza ryzyko niestabilności sprzętowej, lub może nie być zgodne, aby skutecznie komunikować się z niestandardowymi urządzeniami. Takie podejście jest niepożądane w inżynierii oprogramowania, ponieważ wymaga ciągłego dostosowywania i testowania oprogramowania do różnych urządzeń, co jest przeciwieństwem założeń standardów, takich jak ACPI. Wciąż toczą się debaty między „purystami standardowymi” (np. w środowiskach linuksowych) a zwolennikami oprogramowania, które ma działać z jak największą liczbą urządzeń.
Zobacz też
- schemat zasilania