Condividi tramite


Risparmio energia del dispositivo

La specifica ACPI 6.3 definisce un set di oggetti dello spazio dei nomi per specificare le informazioni sull'alimentazione del dispositivo per un dispositivo. Ad esempio, un set di oggetti può specificare le risorse di alimentazione richieste da un dispositivo in ogni stato di alimentazione del dispositivo supportato. Un altro tipo di oggetto può descrivere la capacità del dispositivo di riattivarsi da uno stato a basso consumo in risposta agli eventi hardware.

Risparmio energia del dispositivo in Windows

Mentre un sistema è in esecuzione (ovvero, il sistema si trova nello stato di lavoro definito da ACPI, S0), i singoli dispositivi possono effettuare transizioni tra gli stati di alimentazione del dispositivo, a seconda dell'attività, per risparmiare energia. Nei sistemi PC tradizionali, anche gli stati di sospensione definiti da ACPI (da S1 a S4) vengono usati per risparmiare energia, ma questi stati di sospensione disconnessi e ad alta latenza non vengono usati nelle piattaforme SoC di Windows. Pertanto, la durata della batteria dipende dal modo in cui le piattaforme implementano il risparmio energia dei dispositivi in fase di esecuzione.

I dispositivi integrati nel SoC possono essere gestiti tramite Windows Power Framework (PoFx). Questi dispositivi integrati nel framework sono gestiti da PoFx tramite un plug-in del motore di alimentazione specifico di SoC (microPEP) che conosce le specifiche dei controlli di alimentazione e orologio del SoC. Per altre informazioni su PoFx, vedere Panoramica di Power Management Framework.

Per i dispositivi periferici che non sono integrati nel SoC, Windows usa il risparmio energia del dispositivo ACPI. Per questi dispositivi gestiti da ACPI, il proprietario dei criteri di alimentazione in uno stack di driver di dispositivo (in genere la funzione o il driver di classe) prende decisioni di transizione dello stato di alimentazione del dispositivo e il driver ACPI di Windows, Acpi.sys, richiama i metodi di controllo ASL per applicare i controlli di alimentazione specifici della piattaforma necessari.

È possibile e alcuni stack di dispositivi lo fanno, usare solo il risparmio energia del dispositivo ACPI o in combinazione con il microPEP per il risparmio energia del dispositivo on-SoC.

Come descritto in Gestione alimentazione dei dispositivi in ACPI, Windows supporta le funzionalità di risparmio energia D3cold definite nella specifica ACPI 5.0. Usando questo supporto, dispositivi, piattaforme e driver possono acconsentire esplicitamente alla rimozione completa dell'alimentazione del dispositivo durante i periodi di inattività in fase di esecuzione. Questa funzionalità può migliorare significativamente la durata della batteria. Tuttavia, la rimozione dell'alimentazione deve essere supportata da tutti i componenti interessati per poter tornare correttamente a D0. Per questo motivo, i conducenti (bus e funzione) e la piattaforma stessa devono indicare che lo supportano. Per altre informazioni sul consenso esplicito del driver D3cold, vedere Supporto di D3cold in un driver.

Risparmio energia del dispositivo in ACPI

I dispositivi dello spazio dei nomi supportano fino a quattro stati di alimentazione del dispositivo, D0 numerati (funzione completa o "attivato") su D3 (nessuna funzione o "off"). Ogni stato può avere requisiti di potenza diversi, con stati numerati più elevati che consumano meno potenza rispetto agli stati con numero inferiore. Inoltre, lo stato D3 (off) ha due sottostate, D3hot e D3cold. Lo stato secondario D3hot richiede che il dispositivo rimanga accessibile sul bus padre in modo che possa rispondere ai comandi software specifici del bus. Questo requisito e la potenza usata per soddisfarla vengono rimosse in D3cold. Infine, un dispositivo può essere armato per riattivarsi da uno stato a basso consumo a causa di un evento hardware e, se necessario, anche per far uscire la piattaforma da uno stato di inattività.

La piattaforma indica il supporto per D3cold concedendo al sistema operativo il controllo della funzionalità "supporto _PR3" (bit 2) quando richiesto tramite il metodo capabilities osPM a livello di piattaforma. Per altre informazioni, vedere la sezione 6.2.10.2, "Platform-wide OSPM Capabilities", nella specifica ACPI 5.0.

I dispositivi gestiti dall'alimentazione usano oggetti figlio per descrivere le funzionalità di alimentazione per il sistema operativo. Le sezioni seguenti descrivono queste funzionalità e oggetti.

Alimentazione di risorse e stati

Un dispositivo dichiara il supporto per uno stato di alimentazione elencando il set di risorse di alimentazione necessarie per essere in tale stato. Le risorse di alimentazione ACPI rappresentano le guide di tensione che alimentano i dispositivi e l'orologio segnala che li guidano. Queste risorse vengono dichiarate nella radice dello spazio dei nomi. Ogni risorsa di alimentazione ha un _ON e un metodo _OFF tramite il quale è controllato e un metodo _STA per segnalarne lo stato. Per altre informazioni, vedere la sezione 7.1 "Dichiarazione di un oggetto risorsa di Power", della specifica ACPI 5.0.

Il driver ACPI di Windows, Acpi.sys, monitora le dipendenze di alimentazione tra i dispositivi che condividono le risorse e, poiché questi dispositivi passano tra stati di alimentazione, garantisce che solo le risorse di alimentazione effettivamente necessarie per un dispositivo siano attivate in qualsiasi momento specifico.

Requisiti di Power Resource (_PRx)

Esiste un oggetto Power Resource Requirements (_PRx), dove x = 0, 1, 2 o 3, per ogni stato di alimentazione del dispositivo supportato. Quando il driver di dispositivo decide di passare a un nuovo stato di alimentazione, Acpi.sys garantisce che tutte le risorse di alimentazione necessarie per il nuovo stato siano attivate e che le risorse non più in uso siano disattivate.

Stato del dispositivo supportato Oggetto Requisiti risorsa da usare Risorse da includere nell'oggetto requisiti
D0 (obbligatorio) _PR0 Tutta l'alimentazione e gli orologi necessari per la funzione completa del dispositivo.
D1 _PR1 Qualsiasi potenza o orologio necessario per la funzionalità ridotta definita dalla classe di questo stato.
D2 _PR2 Qualsiasi potenza o orologio necessario per la funzionalità ridotta definita dalla classe di questo stato.
D3hot (obbligatorio) _PR3 Solo l'alimentazione o gli orologi necessari per la visualizzazione del dispositivo sul bus e rispondere a un comando specifico del bus.

Se una particolare piattaforma supporta la funzionalità D3cold e il driver di dispositivo per un dispositivo acconsente esplicitamente a D3cold, le risorse di alimentazione _PR3 del dispositivo, se non vengono usate da altri dispositivi, verranno disattivate qualche volta dopo la transizione a D3Cold.

Per altre informazioni sui requisiti delle risorse di alimentazione per un dispositivo che supporta D3cold, vedere Requisiti del firmware per D3cold.

Stato di alimentazione del dispositivo (_PSx)

Esiste un metodo Power State, _PSx, dove x = 0, 1, 2 o 3, per ogni stato di alimentazione del dispositivo supportato Dx. Questo metodo è facoltativo, ma, se presente, viene richiamato prima che le risorse di alimentazione per lo stato siano disattivate e dopo l'attivazione delle risorse di alimentazione per lo stato. _PSx è progettato per eseguire qualsiasi azione specifica della piattaforma necessaria per il ciclo di alimentazione. _PSx non deve accedere ai registri dei dispositivi assegnati al driver di funzione, accedere ai registri standard del bus assegnati al driver del bus o attivare o disattivare le risorse di alimentazione, che è un'operazione riservata per Acpi.sys.

Funzionalità di riattivazione

I dispositivi gestiti dall'alimentazione potrebbero essere in grado di rilevare gli eventi in uno stato a basso consumo e causare la riattivazione della piattaforma per gestirli. Per abilitare questa funzionalità, Windows necessita di informazioni sulle funzionalità della piattaforma e del dispositivo.

Stato di riattivazione del dispositivo Sx (_SxW)

In una determinata piattaforma esiste un mapping specifico tra gli stati del dispositivo che supportano la funzionalità di riattivazione e gli stati del sistema in grado di rispondere agli eventi di riattivazione. ACPI definisce l'oggetto _SxW per fornire queste informazioni al sistema operativo. È disponibile un oggetto SxW per ogni stato di alimentazione del sistema supportato, Sx. Poiché le piattaforme SoC sono sempre in S0, l'unico oggetto di interesse è _S0W. Questo oggetto specifica la capacità della piattaforma di riattivare da uno stato di inattività a basso consumo in risposta al segnale di riattivazione di un dispositivo. L'oggetto viene usato da Windows per determinare lo stato D di destinazione per il dispositivo durante l'inattività a basso consumo di sistema. Per altre informazioni su _S0W, vedere la sezione 7.2.20 "_S0W (stato di riattivazione del dispositivo S0)", nella specifica ACPI 5.0.

Per la maggior parte delle piattaforme SoC, i dispositivi vengono gestiti in modo aggressivo allo stato D3 quando sono inattive e il sistema è in grado di svegliarsi da inattività a basso consumo mentre il dispositivo è in questo stato. Per un sistema di questo tipo, l'oggetto _S0W restituisce 3 (o 4, se supporta anche D3cold).

_S0W(4) è un requisito per D3Cold indipendentemente dal fatto che il dispositivo supporti o meno la riattivazione.

Qualsiasi stato D può essere designato come stato con supporto per la riattivazione più basso e alcune classi di dispositivi o bus usano valori diversi. Ad esempio, i dispositivi connessi a SDIO e USB usano lo stato D2 per questo stato.

Per facilitare la migrazione dei driver di dispositivo da Windows 7 a Windows 8 o Windows 8.1, potrebbe essere necessario specificare anche il dispositivo _S4W. Attualmente, l'unica classe di dispositivo con questo requisito è la rete (Ndis.sys).

Interruzioni con supporto per la riattivazione (_CRS)

La descrizione della risorsa per un dispositivo indica che il dispositivo è in grado di rilevare e segnalare un evento di riattivazione contrassegnando un interrupt come "con supporto per la riattivazione" (ExclusiveAndWake o SharedAndWake). I driver di Windows e di dispositivo forniscono una gestione speciale di tali interruzioni per assicurarsi che siano abilitati quando il dispositivo passa a uno stato a basso consumo. Per altre informazioni, vedere le descrizioni dei descrittori di risorse Interrupt e GpioInt nella sezione 6.4.3.6, "Extended Interrupt Descriptor" e sezione 6.4.3.8.1 , "GPIO Connection Descriptors", della specifica ACPI 5.0.

Abilitazione della riattivazione

A seconda dello scenario utente o dei criteri di sistema, i dispositivi che supportano la riattivazione possono o meno essere armati per la riattivazione. Pertanto, le interruzioni con supporto per la riattivazione possono essere abilitate o meno quando il dispositivo è inattiva. Oltre ad abilitare gli interrupt, Windows usa i meccanismi seguenti per abilitare la riattivazione in un dispositivo.

Riattivazione sospensione del dispositivo (_DSW)

ACPI definisce l'oggetto _DSW come modo per consentire al sistema operativo di informare il firmware della piattaforma ACPI sul successivo periodo di inattività di sospensione o basso consumo. Questo oggetto è facoltativo e viene usato solo se la piattaforma ha la necessità di configurare in anticipo hardware di riattivazione specifico della piattaforma. Vengono forniti entrambi lo stato D di destinazione per il dispositivo e lo stato S di destinazione per il sistema. La combinazione di stato D e stato S sarà sempre conforme alle informazioni fornite dagli oggetti _SxW del dispositivo.

Risorse di alimentazione per la riattivazione (_PRW)

In alcuni casi, è necessario attivare risorse di alimentazione aggiuntive per abilitare un dispositivo per la riattivazione. In questo caso, il dispositivo può fornire l'oggetto _PRW per elencare le risorse di alimentazione aggiuntive. Il driver ACPI di Windows, Acpi.sys, gestirà queste risorse di alimentazione come avviene normalmente, assicurandosi che siano attivate quando sono necessarie da un dispositivo (ovvero, un dispositivo abilitato per la riattivazione) e sono disattivate in caso contrario.

_PRW viene usato anche per definire la funzionalità di riattivazione per le piattaforme PC tradizionali (hardware ACPI full-ACPI).