2. ACPI - Advanced Configuration and Power Interface
Power Management mit ACPI
Der größte Teil der ACPI-Spezifikation beschäftigt
sich mit dem Thema Power Management. Die Idee besteht darin, das
komplette Power Management in das Betriebssystem zu verlagern.
Dieses weiß am besten über die gerade benötigte
Rechenleistung Bescheid, so dass es die Energiesparmaßnahmen
am effizientesten koordinieren kann.
Dieser Ansatz ist sicher nicht falsch, doch birgt er auch einige
Risiken: Sobald ausschließlich das Betriebssystem für
elementare Dinge wie die Lüfter- und Temperaturkontrolle
des Prozessors verantwortlich ist, läuft man Gefahr, dass
der Rechner beschädigt wird, wenn das System abstürzt.
Es kann einen abgeschalteten CPU-Lüfter nicht mehr einschalten,
wenn der Prozessor zu heiß wird.
Einige Hersteller implementieren deshalb eigene Schutzmechanismen,
die solch ein Desaster verhindern sollen. Eine vom Betriebsystem
und sonstiger Software unabhängige Hardware hat hier also
Priorität vor den Power-Management-Maßnahmen des Betriebssystems.
Bei strenger Auslegung der ACPI-Spezifikation sind solche Lösungen
nicht zulässig. Bei sicherheitsrelevanten Systemen sind sie
aber allemal notwendig und sinnvoll.
ACPI berücksichtigt eine Vielzahl unterschiedlicher Zustände
des Systems als Ganzes, des Prozessors, diverser Komponenten und
Peripherie-Geräte, die zum Teil etwas verwirrend miteinander
verwoben sind. Die im Text folgenden Grafiken sollen einen groben
Überblick über die Zusammenhänge liefern.
Auf der obersten Ebene kennt ACPI vier globale Power-Management-Zustände,
die als G0 bis G3 bezeichnet werden. Zustand G3 ist ein mechanisch
abgeschalteter, vom Netz getrennter Rechner. G2 steht für
ein per Software abgeschaltetes System, bei dem die 5-Volt-Standby-Leitung
noch Spannung liefert. Ein schlafender Rechner, der sich per Mausbewegung
oder Tastendruck aufwecken lässt, befindet sich im Zustand
G1. G0 schließlich kennzeichnet einen vollständig aktiven
PC.
Eine Sonderrolle außerhalb der ACPI-Spezifikation spielt
der Legacy-Modus. Er ist direkt nach dem Kaltstart aktiv und sorgt
für das Booten des Systems. Nur wenn Mechanismen wie 'Suspend
to Disk' oder 'Suspend to RAM' verwendet wurden, erfolgt ein direkter
Übergang vom G3- oder G2-Modus in den Betriebszustand G0
über einen ACPI-Boot.
Die grobe Einteilung der Systemzustände wird durch die sechs
Sleep-States S0 bis S5 feiner untergliedert. Für jedes angeschlossene
Gerät wie Modem, Festplatte, CD-ROM, Monitor oder Drucker
gibt es zusätzlich noch je vier vom sonstigen System unabhängige
Stromspar-Zustände.
So erreicht ACPI einen möglichst geringen Energieverbrauch
- ein Drucker muss schließlich nur dann Energie verbrauchen,
wenn er wirklich benötigt wird. Den Rest der Zeit kann er
bei möglichst niedrigem Energieverbrauch vor sich hinschlummern.
Ähnliches gilt auch für andere externe Geräte.
Da der Prozessor einerseits zu den größten Energiefressern
im Rechner gehört, sich aber auf der anderen Seite auch am
leichtesten vom Betriebssystem kontrollieren lässt, hält
die ACPI-Spezifikation für ihn eine Sonderbehandlung bereit.
Innerhalb des globalen Zustands 'System arbeitet' (G0) kann der
Prozessor selbst vier Leistungs- bzw. Energieverbrauchs-Niveaus
einnehmen. Der Grundzustand 'Arbeiten' (C0) gliedert sich bereits
in zwei Modi: Der Prozessor läuft entweder mit voller Geschwindigkeit
oder er befindet sich im sogenannten Throttling-Mode bei verminderter
Leistungsfähigkeit. Throttling heißt hier, dass die
CPU den Prozessortakt nur für eine begrenzte Zeit erhält.
Die übrige Zeit wird die Taktzufuhr über das STPCLK-Signal
unterbunden, und alle Prozessor-Register frieren ein. Der Energieverbrauch
der CPU lässt sich auf diese Weise drastisch senken, weshalb
der ACPI-Treiber das Throttling vornehmlich dann einsetzt, wenn
die CPU zu heiß wird, etwa weil der CPU-Lüfter ausgefallen
ist. Wie lange der Prozessor den Takt erhält, bestimmt das
Duty-Setting im drei Bit breiten Duty Width Register.
Wenn der Prozessor auf Benutzereingaben wartet oder eine Idle-Task
ausführt, begibt er sich via HALT-Befehl in den C1-Modus.
Der Energieverbrauch sinkt deutlich, der Prozessor ist aber noch
in der Lage, die Integrität des L1- und L2-Cache sicherzustellen.
Snoop-Zyklen, etwa PCI-Mastern werden noch ausgeführt. Jeder
Interrupt (Mausbewegung, Tastendruck) beendet bereits umgehend
das Nickerchen des Prozessors. Zusätzliche Unterstützung
durch den Chipsatz ist nicht erforderlich.
Der C2-Power-Status des Prozessors wurde speziell für die
Multiprozessoren-Systeme eingeführt. Hier wird ein unbeschäftigter
Prozessor in den Schlafmodus versetzt, während andere CPUs
noch mit voller Leistung arbeiten. Wie im C1-Zustand ist der Prozessor
nach wie vor in der Lage, die Cache-Integrität sicherzustellen
und erwacht bei jedem ihn betreffenden Interrupt. Im Unterschied
zum C1-Zustand ist der C2-Modus nur mit entsprechend ausgelegten
Chipsätzen nutzbar. Sie müssen sich unter anderem darum
kümmern, dass eingehende Interrupts nur den Prozessor wecken,
der sie auch bearbeiten soll (I/O-APIC).
C3 schließlich ist ein Energiespar-Modus, in dem die CPU
die Cache-Integrität nicht mehr aufrecht erhalten kann. Das
Betriebssystem ist daher verpflichtet, die betroffenen Caches
zu leeren, bevor es den Prozessor in den C3-Modus schickt. In
Single-Prozessorsystemen kann man auf diese zeitaufwendige Maßnahme
auch verzichten, indem man vor dem Eintritt in den C3-Modus alle
Busmaster-Devices abschaltet.
Je weiter das Energie-Niveau des Prozessors sinkt, desto länger
dauert es, bis die CPU wieder die volle Leistungsfähigkeit
erreicht. Aus dem Halt-Zustand (C1) erwacht ein Pentium je nach
Systemkonfiguration innerhalb von 20 bis 30 Takten, die Rückkehr
aus dem C3-Zustand und das anschließende Reinitialisieren
der Caches können dagegen mehrere hundert Takte in Anspruch
nehmen. Die meisten derzeit existierenden ACPI-Implementierungen
pendeln nur zwischen den Modi C0 und C1.
Abschließend nochmals alle Power-Management-Zustände
gemäß ACPI in einer Tabelle:
|
Globale Systemzustände |
|
G0 |
Working |
Der Rechner arbeitet normal. |
|
G1 |
Sleeping |
Der Rechner ist im Sleep-Modus und verbraucht wenig Energie. |
|
G2 |
Soft Off |
Der Rechner ist abgeschaltet, 5V-Standby führt noch Spannung. |
|
G3 |
Mechanical Off |
Der Rechner ist komplett abgeschaltet und vom Netz getrennt. |
|
|
Sleep-Modi |
|
S1 |
|
Das System schläft, ist aber mit einem Interrupt wieder
aufzuwecken. Weder CPU noch Chipsatz müssen reinitialisiert
werden. |
|
S2 |
|
Wie S1, die CPU und ihr Cache sind abgeschaltet, das Betriebssystem
ist für das Reinitialisieren zuständig. |
|
S3 |
|
Wie S1, die CPU, alle Caches und der Chipsatz sind abgeschaltet.
Die Board-Hardware sorgt dafür, dass alle Speicherinhalte
erhalten bleiben, und das Betriebssystem restauriert die restlichen
Systemzustände. (Suspend to RAM) |
|
S4 |
|
Das System verbraucht kaum noch Energie, alle Board-Komponenten
sind abgeschaltet. Das Betriebssystem ist für die Reinitialisierung
des Systemzustandes verantwortlich. (Suspend to Disk) |
|
S5 |
Soft Off |
wie G3 |
|
|
Device-Modi |
|
D0 |
Full On |
Das Gerät ist betriebsbereit. |
|
D1/ D2 |
|
Das Gerät ist im Sleep-Modus. Der Unterschied zwischen D1
und D2 liegt lediglich in dem niedrigeren Energieverbrauch und
der höheren Einschalt-Latenz bei D2. |
|
D3 |
Off |
Das Gerät ist per Software, nicht aber mechanisch abgeschaltet.
Das Betriebssystem reinitialisiert bei Bedarf. |
|
|
Prozessor-Modi |
|
C0 |
|
Der Prozessor führt Befehle aus. |
|
C1 |
|
Der Prozessor befindet sich im Halt-Modus und kümmert sich
weiterhin um die Cache-Integrität. |
|
C2 |
|
Speziell für MP-Systeme. Eine CPU befindet sich im Halt-Modus,
alle anderen arbeiten weiter. |
|
C3 |
|
Der Prozessor ist quasi abgeschaltet. Er kümmert sich nicht
mehr um die Cache-Integrität. Das Betriebssystem muss alle
CPU-Register und die Caches restaurieren, wenn ein Interrupt
oder ein Busmaster-Zugriff auf den Hauptspeicher erfolgt. |
|