Geräteenergieverwaltung

Die ACPI 6.3-Spezifikation definiert einen Satz von Namespaceobjekten, um Geräteleistungsinformationen für ein Gerät anzugeben. Beispielsweise kann eine Gruppe von Objekten die Energieressourcen angeben, die ein Gerät in jedem unterstützten Gerätestromzustand benötigt. Ein anderer Objekttyp kann die Fähigkeit des Geräts beschreiben, als Reaktion auf Hardwareereignisse aus einem Energiesparzustand zu reaktivieren.

Geräteenergieverwaltung in Windows

Während ein System ausgeführt wird (d. h. das System befindet sich im ACPI-definierten Arbeitszustand S0), können einzelne Geräte je nach Aktivität Übergänge zwischen Geräteleistungszuständen vornehmen, um Strom zu sparen. In herkömmlichen PC-Systemen werden auch ACPI-definierte Schlafzustände (S1 bis S4) verwendet, um Strom zu sparen, aber diese nicht verbundenen, latenzfreien Schlafzustände werden auf Windows-SoC-Plattformen nicht verwendet. Daher hängt die Akkulaufzeit stark davon ab, wie Plattformen die Energieverwaltung von Geräten zur Laufzeit implementieren.

Geräte, die in das SoC integriert sind, können über das Windows Power Framework (PoFx) verwaltet werden. Diese Framework-integrierten Geräte werden von PoFx über ein SoC-spezifisches Power Engine Plug-In (MicroPEP) verwaltet, das die Besonderheiten der Leistungs- und Taktsteuerungen des SoC kennt. Weitere Informationen zu PoFx finden Sie unter Übersicht über das Power Management Framework.

Für Peripheriegeräte, die nicht in den SoC integriert sind, verwendet Windows ACPI Device Power Management. Für diese ACPI-verwalteten Geräte trifft der Besitzer der Energierichtlinie in einem Gerätetreiberstapel (in der Regel die Funktion oder der Klassentreiber) Entscheidungen über den Übergang des Gerätestromzustands, und der Windows ACPI-Treiber, Acpi.sys, ruft ASL-Steuerungsmethoden auf, um die erforderlichen plattformspezifischen Energiesteuerungen anzuwenden.

Es ist möglich, und einige Gerätestapel verwenden ACPI Device Power Management allein oder in Kombination mit dem microPEP für die Energieverwaltung von SoC-Geräten.

Wie unter Geräteenergieverwaltung in ACPI beschrieben, unterstützt Windows die D3cold-Energieverwaltungsfunktionen, die in der ACPI 5.0-Spezifikation definiert sind. Wenn Sie diesen Support verwenden, können Geräte, Plattformen und Treiber sich dafür entscheiden, dass die Geräteleistung während Leerlaufzeiten vollständig entfernt wird. Diese Funktion kann die Akkulaufzeit erheblich verbessern. Das Entfernen von Energie muss jedoch von allen betroffenen Komponenten unterstützt werden, um erfolgreich zu D0 zurückkehren zu können. Aus diesem Grund müssen Fahrer (Bus und Funktion) sowie die Plattform selbst angeben, dass sie sie unterstützen. Weitere Informationen zur D3cold-Treiber-Anmeldung finden Sie unter Unterstützung von D3cold in einem Treiber.

Geräteenergieverwaltung in ACPI

Namespacegeräte unterstützen bis zu vier Gerätestromzustände, nummeriert D0 (Vollfunktion oder "ein") bis D3 (keine Funktion oder "aus"). Jeder Zustand kann unterschiedliche Energieanforderungen aufweisen, wobei höhere Zustände weniger Strom verbrauchen als Zustände mit niedrigeren Zahlen. Darüber hinaus verfügt der Zustand D3 (off) über zwei Unterzustände, D3hot und D3cold. Der D3hot-Unterzustand erfordert, dass das Gerät auf dem übergeordneten Bus zugänglich bleibt, damit es auf busspezifische Softwarebefehle reagieren kann. Diese Anforderung und die dafür verwendete Leistung werden in D3cold entfernt. Schließlich kann ein Gerät bewaffnet werden, um sich aufgrund eines Hardwareereignisses aus einem Zustand mit geringer Leistung zu reaktivieren und bei Bedarf auch die Plattform aus dem Leerlaufzustand zu bringen.

Die Plattform gibt ihre Unterstützung für D3cold an, indem dem Betriebssystem die Steuerung des Features "_PR3 Support" (Bit 2) gewährt wird, wenn die plattformweite OSPM Capabilities-Methode angefordert wird. Weitere Informationen finden Sie in Abschnitt 6.2.10.2, "Plattformweite OSPM-Funktionen" in der ACPI 5.0-Spezifikation.

Energieverwaltete Geräte verwenden untergeordnete Objekte, um ihre Energiefunktionen für das Betriebssystem zu beschreiben. In den folgenden Abschnitten werden diese Funktionen und Objekte beschrieben.

Energieressourcen und -zustände

Ein Gerät deklariert seine Unterstützung für einen Energiezustand, indem es die Gruppe der Energieressourcen auflistet, die es benötigt, um sich in diesem Zustand zu befinden. ACPI Power Resources stellt die Spannungsschienen dar, die Geräte antreiben, und die Taktsignale, die sie antreiben. Diese Ressourcen werden am Stamm des Namespace deklariert. Jede Energieressource verfügt über eine _ON und eine _OFF-Methode, über die sie gesteuert wird, sowie eine _STA-Methode, um ihren Zustand zu melden. Weitere Informationen finden Sie in Abschnitt 7.1, "Deklarieren eines Energieressourcenobjekts" der ACPI 5.0-Spezifikation.

Der Windows ACPI-Treiber, Acpi.sys, überwacht die Energieabhängigkeiten zwischen Geräten, die Ressourcen gemeinsam nutzen, und stellt beim Übergang dieser Geräte zwischen den Energiezuständen sicher, dass nur die Energieressourcen aktiviert werden, die tatsächlich von einem Gerät benötigt werden.

Energieressourcenanforderungen (_PRx)

Es gibt ein Power Resource Requirements -Objekt (_PRx), wobei x = 0, 1, 2 oder 3 für jeden unterstützten Gerätestromzustand ist. Wenn sich der Gerätetreiber für den Wechsel in einen neuen Energiezustand entscheidet, stellt Acpi.sys sicher, dass alle für den neuen Zustand erforderlichen Energieressourcen aktiviert sind und dass nicht mehr verwendete Ressourcen deaktiviert werden.

Gerätestatus wird unterstützt Zu verwendende Ressourcenbedarfsobjekt Ressourcen, die in das Anforderungsobjekt eingeschlossen werden sollen
D0 (erforderlich) _PR0 Alle Strom- und Uhren, die für die volle Funktion des Geräts erforderlich sind.
D1 _PR1 Alle Leistungs- oder Uhren, die für die von der Klasse definierte reduzierte Funktionalität dieses Zustands erforderlich sind.
D2 _PR2 Alle Leistungs- oder Uhren, die für die von der Klasse definierte reduzierte Funktionalität dieses Zustands erforderlich sind.
D3hot (erforderlich) _PR3 Nur die Stromversorgung oder Uhren, die erforderlich sind, damit das Gerät auf seinem Bus angezeigt wird und auf einen busspezifischen Befehl reagiert.

Wenn eine bestimmte Plattform das D3cold-Feature unterstützt und der Gerätetreiber für ein Gerät D3cold aktiviert, werden die _PR3 Energieressourcen des Geräts, wenn sie nicht von einem anderen Gerät verwendet werden, irgendwann nach dem Übergang zu D3Cold deaktiviert.

Weitere Informationen zu den Energieressourcenanforderungen für ein Gerät, das D3cold unterstützt, finden Sie unter Firmwareanforderungen für D3cold.

Gerätestromzustand (_PSx)

Es gibt eine Power State-Methode, _PSx, wobei x = 0, 1, 2 oder 3 für jeden unterstützten Gerätestromzustand DX ist. Diese Methode ist optional, aber wenn sie vorhanden ist, wird sie aufgerufen, bevor die Energieressourcen für den Zustand deaktiviert sind und nachdem die Energieressourcen für den Zustand aktiviert sind. _PSx ist zum Ausführen plattformspezifischer Aktionen vorgesehen, die rund um den Energiezyklus erforderlich sind. _PSx dürfen nicht auf Geräteregister zugreifen, die dem Funktionstreiber zugewiesen sind, nicht auf Busstandardregister zugreifen, die dem Bustreiber zugewiesen sind, oder die Netzressourcen ein- oder ausschalten. Dies ist ein Vorgang, der für Acpi.sys reserviert ist.

Reaktivierungsfunktionen

Energieverwaltete Geräte können Möglicherweise Ereignisse erkennen, wenn sie sich in einem Energiesparzustand befinden, und bewirken, dass die Plattform aktiviert wird, um sie zu behandeln. Um dieses Feature zu aktivieren, benötigt Windows Informationen zu den Funktionen der Plattform und des Geräts.

Sx Device Wake State (_SxW)

Auf einer bestimmten Plattform gibt es eine bestimmte Zuordnung zwischen Gerätezuständen, die die Aktivierungsfunktion unterstützen, und Systemzuständen, die auf Reaktivierungsereignisse reagieren können. ACPI definiert das _SxW-Objekt, um diese Informationen für das Betriebssystem bereitzustellen. Es gibt ein SxW-Objekt für jeden unterstützten Systemstromzustand, Sx. Da SoC-Plattformen immer in S0 enthalten sind, ist das einzige Objekt von Interesse hier _S0W. Dieses Objekt gibt die Fähigkeit der Plattform an, als Reaktion auf das Aktivierungssignal eines Geräts aus einem Leerlaufzustand mit geringer Leistung zu reaktivieren. Das -Objekt wird von Windows verwendet, um den Ziel-D-Zustand für das Gerät im Leerlauf des Systems mit geringer Leistung zu bestimmen. Weitere Informationen zu _S0W finden Sie in Abschnitt 7.2.20, "_S0W (S0 Device Wake State)" in der ACPI 5.0-Spezifikation.

Bei den meisten SoC-Plattformen werden Geräte im Leerlauf aggressiv in den D3-Zustand verwaltet, und das System ist in der Lage, aus dem Leerlauf mit geringer Energie zu erwachen, während sich das Gerät in diesem Zustand befindet. Für ein solches System gibt das _S0W-Objekt 3 (oder 4 zurück, wenn es auch D3cold unterstützt).

_S0W(4) ist eine Anforderung für D3Cold, unabhängig davon, ob das Gerät die Aktivierung unterstützt oder nicht.

Jeder D-Zustand kann als der niedrigste Aktivierungszustand festgelegt werden, und einige Geräteklassen oder Busse verwenden unterschiedliche Werte. Beispielsweise verwenden SDIO- und USB-verbundene Geräte den Status D2 für diesen Zustand.

Um die Migration von Gerätetreibern von Windows 7 zu Windows 8 oder Windows 8.1 zu erleichtern, muss Ihr Gerät möglicherweise auch _S4W bereitstellen. Derzeit ist die einzige Geräteklasse, die diese Anforderung erfüllt, Netzwerk (Ndis.sys).

Wake-fähige Interrupts (_CRS)

Die Ressourcenbeschreibung für ein Gerät gibt an, dass das Gerät in der Lage ist, ein Aktivierungsereignis zu erkennen und zu signalisieren, indem es einen Interrupt als "Wake-fähig" markiert (entweder ExclusiveAndWake oder SharedAndWake). Windows- und Gerätetreiber bieten eine spezielle Behandlung solcher Interrupts, um sicherzustellen, dass sie aktiviert werden, wenn das Gerät in einen Zustand mit geringer Leistung übergehen wird. Weitere Informationen finden Sie in den Beschreibungen der Interrupt- und GpioInt-Ressourcendeskriptoren in Abschnitt 6.4.3.6, "Erweiterter Interruptdeskriptor" und Abschnitt 6.4.3.8.1 , "GPIO-Verbindungsdeskriptoren" der ACPI 5.0-Spezifikation.

Aktivierung

Je nach Benutzerszenario oder Systemrichtlinie können Wake-fähige Geräte tatsächlich für das Aufwachen bewaffnet sein oder nicht. Daher können Wake-fähige Interrupts aktiviert werden oder nicht, wenn sich das Gerät im Leerlauf befindet. Zusätzlich zum Aktivieren von Interrupts verwendet Windows die folgenden Mechanismen, um die Aktivierung auf einem Gerät zu aktivieren.

Gerätemodusaktivierung (_DSW)

ACPI definiert das _DSW-Objekt als Möglichkeit für das Betriebssystem, die ACPI-Plattformfirmware über den nächsten Ruhezustand oder Leerlauf mit geringer Leistung zu informieren. Dieses Objekt ist optional und wird nur verwendet, wenn die Plattform die plattformspezifische Aktivierungshardware im Voraus konfigurieren muss. Der Ziel-D-Zustand für das Gerät und der Ziel-S-Zustand für das System werden jeweils bereitgestellt. Die Kombination aus D-Zustand und S-Zustand entspricht immer den Informationen, die von den _SxW Objekten des Geräts bereitgestellt werden.

Power Resources for Wake (_PRW)

In einigen Fällen müssen zusätzliche Energieressourcen aktiviert werden, damit ein Gerät für die Aktivierung aktiviert wird. In diesem Fall kann das Gerät das _PRW-Objekt bereitstellen, um diese zusätzlichen Energieressourcen aufzulisten. Der Windows ACPI-Treiber, Acpi.sys, verwaltet diese Energieressourcen wie gewohnt und stellt sicher, dass sie aktiviert werden, wenn sie von einem Gerät benötigt werden (d. h. ein Aktiviertes Gerät), und andernfalls deaktiviert sind.

_PRW wird auch verwendet, um die Aktivierungsfunktion für herkömmliche PC-Plattformen (full-ACPI hardware) zu definieren.