Grundlagen: Energiemanagement mit ACPI 3.0

10.12.2004 von Bernhard  Haluschak
Intelligente Energiesparfunktionen werden in Computern immer wichtiger. Sie helfen nicht nur Stromkosten zu sparen, sondern schonen auch die Hardware. Die Schnittstelle ACPI, Version 3.0, schafft dafür die Grundlagen.

Das Advanced Configuration und Power Interface (ACPI) ist eine offene Spezifikation. Sie bietet eine flexible und erweiterbare Hardware-Schnittstelle um Komponenten zu konfigurieren und besonders Energieverwaltungs-Funktionen eines gesamten Computersystems, bestehend aus Hardware, Betriebssystem und Applikationen, zu realisieren. Mit Hilfe von ACPI ist das Betriebssystem in der Lage, laufende Systemprozesse zu ermitteln und entsprechende Powermanagement-Ressourcen für Rechnerkomponenten und Peripherie bereitzustellen. Dazu zählen die klassischen Funktionen wie "Suspend to Disk", "Suspend to RAM" oder "Wake on LAN". Zusätzlich versucht die ACPI-Spezifikation, die Konfiguration und das Verwalten der Hardware zu standardisieren.

Unter Federführung eines Konsortiums, bestehend aus Intel, Microsoft und Toshiba, erschien im Dezember 1996 die erste offizielle ACPI-Spezifikation, Version 1.0. Sie sollte die bisherigen BIOS-basierenden Powermanagement-APIs wie APM oder PNPBIOS ablösen. In den folgenden Jahren kamen Compaq beziehungsweise Hewlett-Packard und Pheonix dazu. Im Juli 2000 veröffentlichte die Arbeitsgemeinschaft die ACPI-2.0-Spezifikationen und im September 2004 folgte die 3.0-Version.

Die aktuellen ACPI-3.0-Vorgaben bauen auf den Vorgänger-Spezifikationen auf. Sie integrieren neue Technologien wie PCI Express und SATA sowie Ambient Light Sensor. Inwiefern die Änderungen umgesetzt werden, hängt von den jeweiligen Komponentenherstellern ab. So kündigte Microsoft die Umsetzung von ACPI 3.0 erst mit dem Betriebssystem Longhorn an.

Im folgenden Artikel geben wir eine Übersicht, was ACPI 3.0 grundsätzlich bietet und welche Vor- und Nachteile es hat.

Grundlegende Funktionen von ACPI

Das ACPI steuert in konformen Systemen eine Vielzahl von Funktionsbereichen. Zu den wichtigsten Aufgaben von ACPI zählen:

System-Powermanagement: ACPI definiert Mechanismen, die einen Computer in einen systemabhängigen oder -unabhängigen Schlafzustand versetzen. Gleichzeitig stellt es für jedes Gerät eine globale Funktion zur Verfügung, die ein System aus dem Schlafzustand weckt.

Geräte-Powermanagement: In so genannten "Tables" hinterlegt ACPI die Powermanagement-Beschreibung der Mainboard-Komponenten. Dort sind die Energiezustände und die Verwaltung der Geräte hinterlegt, um diese in bestimmte Energie-Modi zu versetzen. Die ACPI-Tables ermöglichen dem Betriebssystem, die entsprechenden Geräte in einen je nach der Applikation abhängigen niedrigeren Energiezustand zu versetzen.

Prozessor-Powermanagement: Befindet sich das Betriebssystem in einem Idle-Mode, kann es ACPI-spezifische Befehle verwenden, um Prozessoren in einen energiesparenden Zustand zu versetzen.

Geräte- und Prozessor-Performance-Management: In einem aktiven System versucht das Operating-System-directed Powermanagement (OSPM), das von ACPI definiert ist, Komponenten und Prozessoren in bestimmte Performance-Zustände zu versetzen. In diesem Betrieb soll eine optimale Balance zwischen Performance, Energieverbrauch und Umgebungsbedingungen wie Akustik oder Bildqualität erreicht werden.

Konfiguration und Plug-and-Play: ACPI ist in der Lage, Systeminformationen zu spezifizieren, um Mainboard-Devices zu ermitteln und zu konfigurieren. Diese Daten ordnet ACPI hierarchisch an, so dass das Betriebssystem exakt weiß, welche Komponente eine bestimmte Reihenfolge an Systemereignissen auslöst.

Weitere Funktionen von ACPI

Management von Systemereignissen: Die ACPI-Spezifikationen stellen einen allgemeinen Ereignis-Mechanismus zur Verfügung, der zum Beispiel temperaturabhängige Vorgänge, Energiezustände oder den Plug-and-Play-Status eines Gerätes erkennt.

Batterie-Management: Durch ACPI verlagert sich das Batterie-Management vom APM-BIOS in das ACPI-konforme Betriebssystem. Allerdings benötigt diese Methode ein intelligentes Batterie-Subsystem-Interface, das vom Betriebssystem durch einen entsprechend integrierten Controller angesteuert und verwaltet wird. Ein so genanntes "Control-Batterie-Interface" ist ausschließlich in ACPI Machine Language (AML) definiert. Es bietet den Nutzern die Flexibilität, jede Art von Batterie mit zugehörigem Kommunikations-Interface zu verwenden, die ACPI-Funktionalität unterstützen. Mit Hilfe des Batterie-Managements kann das Betriebssystem das Verhalten der Batterie effizient beeinflussen, indem es etwa je nach Auslastung neue Low-Battery-Punkte oder Warnmeldschwellen setzt. Zusätzlich kontrolliert es das Ladeverhalten der eingesetzten Batterien.

Thermisches Management: Seitdem das Betriebssystem durch ACPI die Kontrolle über die Energie- und Performance-Zustände besitzt, verfügt es auch über Steuerfunktionen für das Thermal-Management. Mittels eines einfachen skalierbaren Models kann der Anwender durch spezielle ACPI-Funktionen thermische Zonen und Anzeigen definieren sowie die Methoden zur Abkühlung der Hotspots bestimmen.

Embedded Controller: ACPI definiert eine Hardware- und Software-Schnittstelle zwischen dem Betriebssystem-Bus-Enumerator und einem integrierten Controller. Dies erlaubt jedem Betriebssystem, mit jedem integrierten Controller zu kommunizieren. Zusätzlich können Gerätetreiber über diese Schnittstelle Daten austauschen und auf Systemressourcen integrierter Controller zurückgreifen. Das ermöglicht es, spezielle Systemfunktionen zur Verfügung zu stellen, die das Betriebssystem und die Anwenderprogramme nutzen können.

SMBus Controller: Damit das Betriebssystem über einen Standard-Bus-Treiber mit einer SMBus-fähigen Komponente kommunizieren kann, stellt ACPI ein entsprechendes Hardware- und Software-Kommunikations-Interface zur Verfügung. Es garantiert dem Anwender, auf bestimmte System-Features, die der SMBus bietet, über das Betriebssystem beziehungsweise die Applikationen zuzugreifen.

ACPI-Architektur

ACPI besteht grundsätzlich aus drei betriebssystemunabhängigen Blöcken wie den ACPI-Registern, dem ACPI-BIOS und den ACPI-Tabellen. Zusätzlich kommen noch zwei betriebssystemabhängige Elemente wie das Operating-System-directed Powermanagement (OSPM) System Code und der ACPI-Treiber inklusive ACPI Machine Language (AML) Interpreter hinzu.

Alle ACPI-Funktionseinheiten sind ausschließlich im Betriebssystem integriert. Der Treiber beziehungsweise der AML-Interpreter bilden die Schnittstelle zwischen der System-Hardware und dem Betriebssystem oder den Applikationen. Diese können auf bestimmte ACPI-Register zugreifen oder spezielle Routinen des ACPI-BIOS aktivieren sowie die ACPI-Tabellen auslesen.

Eine zentrale Bedeutung in der ACPI-Architektur besitzen die ACPI-Tabellen. Sie enthalten die Lage der festen Registerblöcke, in denen die Informationen über die gesamte Mainboard-Hardware und deren angeschlossenen Geräte hinterlegt sind. Zusätzlich enthalten die Tabellen Steuer- und Konfigurationsmöglichkeiten der Hardware wie verschiedene Energiezustände, Batterieverwaltung, Lüftersteuerungen oder Systemanzeigen für verschiedene Stromsparzustände.

ACPI-BIOS und -Tables

Das ACPI-BIOS repräsentiert ein Teil des System-BIOS und enthält alle notwendigen Startsequenzen sowie ein Interface für Sleep-, Wake- und Restart-Funktionen. Während der Bootphase greift der Rechner auf bestimmte Routinen des ACPI-BIOS zu und sucht nach dem Root System Description Pointer als Startpunkt (RSDP).

Die RSDP-Adressstruktur legt das ACPI-BIOS im Systemspeicher ab. Dieser Aufbau enthält Pointer beziehungsweise Adressen auf weitere Tabellen. Besonders wichtig ist die der Extended System Description Table (XSDT), welche auf zusätzliche Beschreibungen der Konfiguration und der Systemimplementierungen verzweigt. Alle Tabellen besitzen den gleichen Aufbau und vereinfachen somit die Implementierung bestimmter Funktionen im System.

Die primäre Aufgabe einer System Description Table besteht darin, Definitionen von Standardkomponenten eines Systems für das OSPM verständlich zu verwalten. Sie ermöglichen dem Betriebssystem, je nach Anforderungen und Design die Hardware zu verwalten und zu steuern. Die XSD-Table enthält Vektoren auf weitere Tabellen im Speicher. Die erste Tabelle, die angesprochen wird, ist stets die Fixed ACPI Description Table (FADT). Die Daten dieser Tabelle enthalten spezifische Eintragungen, die die festgelegten Eigenschaften der Hardware beschreiben. Eine zentrale Bedeutung hat die Differentiated System Description Table (DSDT). Sie enthält alle relevanten Daten von Komponenten eines PCs wie I/O-Geräte, Speicher, PCI-Konfiguration oder integrierte Controller.

ACPI-Betriebszustände

Im Wesentlichen unterteilt ACPI die Powermanagement-Struktur in drei unterschiedliche Funktionselemente. Als übergeordnete Instanzen fungieren vier globale Powermanagement-Zustände mit der Bezeichnung G0 bis G3.

Der G0- beziehungsweise S0-Modus definiert ein vollständig aktives System. Der Anwender kann auf alle Systemkomponenten, soweit sie sich nicht in einem Stromsparmodus befinden, in Echtzeit zugreifen. Darüber hinaus können die Peripheriegeräte ihren Power-Status dynamisch wechseln.

Das Gegenteil von G0 ist der G3-Status. Dieser repräsentiert ein vollständig vom Netz getrenntes System, so dass alle Komponenten stromlos sind.

Der G2- beziehungsweise der S5-Zustand bezeichnet ACPI als "Soft-Off-Modus", der per Software oder entsprechend konfiguriertem Power-Schalter aktiviert wird. Das System bezieht nur noch über die aktive 5-Volt-Standby-Leitung des Netzteils ein Minimum an elektrischer Energie. Um das System zu starten, muss es einen vollständigen Bootprozess durchlaufen.

Im G1-Schlafmodus sind große Teile der aktiven Elemente des Betriebssystems auf Festplatte oder im Speicher abgelegt. Alle Komponenten wie zum Beispiel Speicher, Chipsatz, Tastatur oder Maus, die für ein Wake-up-Ereignis notwendig sind, versorgt das Netzteil weiterhin mit Strom.

Der Legacy-Modus besitzt einen Sonderstatus. Er ist nur aktiv, wenn kein ACPI-Betriebssystem durch entsprechende BIOS-Konfiguration zur Verfügung steht. Durch spezielle Interrupt-Mechanismen und Registereinträge kann ein System dennoch per Legacy-Boot direkt vom G3- oder G2-Betriebszustand in den G0-Arbeitszustand wechseln.

Die globale Einteilung der Betriebszustände G0 bis G3 eines Systems unterteilt ACPI in sechs weitere abgestufte so genannte "Sleeping-States" S0 bis S5. Diese beinhalten zum Beispiel Funktionen wie "Suspend to RAM" (S3) und "Suspend to Disk" (S4). Im häufig eingesetzten S1-Modus schläft das System, kann aber ohne merkliche Verzögerung rasch aktiviert werden, da das System den Chipsatz und die CPU nicht neu initialisieren muss. Zusätzlich können angeschlossene Komponenten wie Modems, IDE/SATA-Festplatten, PCI-Express-Komponenten oder optische Laufwerke über vier weitere optionale und systemunabhängige Energiesparmodi verfügen.

CPU-Throttling und Performance

Mit über 100 Watt elektrischer Leistungsaufnahme zählt der Intel Prescott aktuell zu den Spitzenverbrauchern unter den Prozessoren. Auch in der Vergangenheit gehörten die CPUs zu den größten Energieverbrauchern. Um diesem Problem entgegenzuwirken, widmen die ACPI-Spezifikationen dem Prozessor ein eigenes detailliertes Kapitel.

Die Stromsparfunktionen des Prozessors sind im globalen Betriebszustand G0 integriert. Dort definieren die ACPI-Spezifikationen für den Prozessor vier Energiestufen C0 bis C3.

Den "normalen" Betriebsmodus C0 unterteilt ACPI in die zwei Unterkategorien Throttling und Performance State Px. Im Throttling-Modus arbeitet die CPU nur in begrenzten Zeitintervallen mit der vollen Taktfrequenz. Den Rest der Zeit "steht" die CPU, da der Takt durch Setzen des Stop-Clock-Signals (STPCLK) gestoppt wird. Durch diese "Brute-Force-Methode" lässt sich nahezu im Verhältnis 1:1 Energie einsparen. Das Throttling kann der Anwender im begrenzten Maße (BIOS-Einstellungen) beeinflussen. Es wird jedoch überwiegend zum Schutz des Prozessors vor Überhitzung durch zu hohe Umgebungstemperatur beziehungsweise ein ausgefallenes CPU-Kühlssystem eingesetzt. Hierauf hat der Anwender keine Einflussnahme. Die Throttling-Intervalle bestimmt das System automatisch durch Verändern bestimmter Registerinhalte (Duty Width Register).

Anders als das Throttling beeinflussen die Performance States nicht die Taktzuführung, sondern die Höhe der Taktfrequenz, mit der die CPU arbeiten soll. So steht der P0-Zustand für maximale Performance und höchsten Energieverbrauch. Dagegen kennzeichnet der P(x)-Modus den minimalen Performance-Level bei geringster Leistungsaufnahme. Der maximale Zustand x hängt vom eingesetzten Prozessor ab. Die Zwischenwerte für den x-Parameter sind vom Anwender beziehungsweise von der Applikation frei wählbar.

CPU-Stromsparmodi

Zu den weiteren Energiespar- und Thermal-Mangement-Zuständen des Prozessors zählt der C1-Modus. Befindet sich die CPU im "Leerlauf" oder wartet auf Benutzeraktivitäten, begibt sich der Prozessor per Haltbefehl (HLT) in den Energiesparmodus C1. In diesem Zustand ist der Chipsatz deaktiviert. Lediglich die CPU-eigenen Register und Caches bleiben weiter aktiv. Die CPU kann jederzeit diesen Zustand ohne merkliche Zeitverzögerung durch ein Ereignis verlassen - zwangsweise aber durch einen Interrupt initiiert durch Tastatur, Maus oder LAN-Interface.

Weitaus mehr Strom als der C1-Modus spart der C2-Zustand der CPU. Allerdings dauert die Aufwachphase deutlich länger. Zusätzlich benötigt der C2-Status Chipsatz-Unterstützung, denn dieser wurde besonders für Multiprozessor-Systeme geschaffen. Ist ein Prozessor inaktiv, wird dieser in den C2-Zustand versetzt, während die anderen CPUs ihre Arbeit weiter verrichten. Der außer Gefecht gesetzte Prozessor ist aber fähig, seine Cache-Konsistenz zu erhalten. Ein Busmaster- oder Multiprozessor-Interrupt im C2-Modus ist in der Lage, nur spezifische CPUs anzusprechen und diese zu aktivieren.

Über das höchste Energie-Einsparpotenzial verfügt der C3-Modus. Allerdings besitzt dieser die längste Aufwachphase. Zusätzlich ist bei Busmaster-Zugriffen die Cache- Integrität nicht gewährleistet, da die Komponenten in der Lage sind, an der CPU vorbei direkt in den Speicher zu schreiben. Deshalb muss das Betriebssystem in Multiprozessor-Systemen die Puffer zeitaufwendig entleeren, bevor die CPU in den C3-Zustand wechselt. Dagegen genügt es in Single-CPU-Systemen, die Busmaster-Zugriffe per Registereintrag zu unterbinden, um die Cache-Konsistenz im C3-Zustand zu garantieren.

Batterie-Management

Gerade Notebooks verlangen ein intelligentes Batterie-Management, um die Laufzeit des Gerätes zu maximieren. ACPI versucht diese Anforderungen im Mobile-Bereich durch eine ausgeklügelte Akku-Verwaltung zu erfüllen.

Ein ACPI-konformes Batteriesystem benötigt entweder ein Smart-Battery-Subsystem-Interface oder eine Control-Method-Batterieschnittstelle. Ersteres wird direkt über einen integrierten Controller vom Betriebssystem gesteuert. Das Control-Method-Verfahren benutzt ausschließlich ACPI-Machine-Language-Routinen (AML), um beliebige Batterietypen und Kommunikations-Interfaces nutzen zu können. Das erhöht die Flexibilität beim Batterie-Management in mobilen Geräten.

Beide Batteriesysteme stellen dem Betriebssystem eine Schnittstelle zur Verfügung, die spezifische Daten über den Energielieferanten zu Konfigurations- und Analysezwecken überträgt. Dazu zählen die Gesamtkapazität der Akkus, der Entlade- und Aufladezustand sowie ein Akkuwechsel. Zusätzlich kann das Smart-Battery-System über die Restkapazität oder beim vorgegebenen Stromsparmodus die erwartete Laufdauer der Batterie bestimmen und entsprechende Funktionen wie einen Shutdown auslösen.

Darüber hinaus verwaltet das Batterie-Management unterschiedliche Warnstufen der Akkukapazität. Je nach verbleibender Energiemenge informiert das Betriebssystem den Anwender über den Zustand des Akkus. Es unterscheidet Warn- und Low-Level-Meldungen sowie kritische Zustände (leerer oder zu heißer Akku) der Akkuzelle.

Ambient-Light-Sensor

Als Novum beinhalten die ACPI-Spezifikationen 3.0 optional einen Ambient-Light-Sensor (ALS) zur Unterstützung des Powermanagements. Dieser ermittelt die Beleuchtungsstärke und die Farbtemperatur einer fest definierten Fläche. Die Beleuchtungsstärke wird in der Einheit Lux (Lumen pro Quadratmeter) angegeben; die Farbtemperatur in Grad Kelvin.

Ein bewölkter Tag erreicht eine Lichtstärke von zirka 1000 Lux, eine normale Bürobeleuchtung erreicht Werte zwischen 300 und 400 Lux und ein abgedunkelter Konferenzraum begnügt sich mit etwa 10 Lux. Die typische Farbtemperatur des Sonnenlichts im Sommer beträgt ungefähr 5500 Grad Kelvin, eine 200-Watt-Glühlampe kommt auf einen Wert von zirka 3300 Grad Kelvin und ein Kerzenlicht auf etwa 1500 Grad Kelvin.

Die vom ALS ermittelten Werte über die Beleuchtungsstärke leitet ACPI an Funktionen des Betriebssystems, um die Helligkeit eines Displays optimal und energiesparend an die Umgebungsbedingungen anzupassen. Dagegen werden Farbtemperaturen dazu benutzt, um die Farbanpassung des Displays an eine bestimmte lichtabhängige Umgebung vorzunehmen.

Jedes Display und auch der Lichtsensor besitzen bestimmte lichtspezifische Eigenschaften, die durch eine so genannte Referenz- oder Kalibrierkurve (Response) beschrieben werden. Die Anwender, beziehungsweise eine entsprechende Funktion des Betriebssystems, können auf dieser Kurve mehrere ALS-Punkte für unterschiedliche Anwendungsorte festlegen, um so eine gleich bleibende Display-Qualität bei vergleichbaren Umgebungsbedingungen zu erhalten.

Fazit und Ausblick

Wie der Trend der vergangenen Jahre zeigt, benötigen die Rechensysteme immer mehr elektrische Energie und erzeugen somit immer mehr Wärme. Dies verursacht nicht nur enorme Kosten, sondern verringert auch die Lebensdauer der Komponenten. Mit Hilfe von ACPI will man dieser Entwicklung entgegenwirken. Es beinhaltet ein effektives und intelligentes Powermanagement, das alle wichtigen Baugruppen eines Rechners mit einbezieht.

Die seit September 2004 verabschiedete ACPI-Spezifikation 3.0 erweitert die Unterstützung auf mehr als 256 Prozessoren und berücksichtigt auch neue Technologien wie PCI-Express und SATA sowie lichtempfindliche Umgebungs- und Benutzer-Anwesenheits-Sensoren. Die Energieverwaltung der Prozessoren wurde überarbeitet. Zusätzlich integrierten die Entwickler die Energiekontrolle in Abhängigkeit von der Energieaufnahme mehrerer Prozessoren in Verbindung mit der Performance und der CPU-Throttling-Zustände.

Die Nutzung der ACPI-Funktionen setzt eine entsprechende Unterstützung in der Hardware, im BIOS und in den Treibern sowie in den eingesetzten Betriebssystemen voraus. Je genauer sich dabei die Hersteller an die Vorgaben der Spezifikationen halten, desto reibungsloser arbeiten diese Komponenten zusammen. Zurzeit bieten die ACPI-Spezifikationen Support inklusive Entwicklungs-Tools für Windows-, Linux- und Unix-basierende Betriebssysteme. Allerdings bieten die Betriebssysteme momentan noch keinen vollständigen ACPI-Support. Die aktuellen ACPI-3.0-Vorgaben und Erweiterungen will Microsoft erst mit Einführung von Longhorn umsetzen. (hal)