Delen via


Component-Level Energiebeheer

Vanaf Windows 8 kan met het energiebeheerframework (PoFx) een stuurprogramma de energiestatussen van de afzonderlijke onderdelen in een apparaat beheren. Energiebeheer op onderdeelniveau bestaat naast energiebeheer op apparaatniveau. Zie Overzicht van het Power Management Framework voor een inleiding.

Op deze pagina wordt de PoFx-API voor Component-Level Power Management beschreven.

Om een apparaat te registreren dat moet worden beheerd door PoFx, roept het stuurprogramma de PoFxRegisterDevice-routine aan. De bestuurder geeft deze routine door aan een PO_FX_DEVICE structuur die, onder andere, een matrix van PO_FX_COMPONENT structuren bevat. Elk element in deze matrix beschrijft de Fx-energiestatussen van een onderdeel in het apparaat en de kenmerken van elke Fx-status. (Ten minste implementeert een onderdeel dat geen energiebeheer op onderdeelniveau ondersteunt alleen de F0-status.) De kenmerken van een bepaalde Fx-energiestatus in een bepaald onderdeel worden beschreven door een PO_FX_COMPONENT_IDLE_STATE structuur, die de volgende waarden bevat:

  • De overgangslatentie, de tijd die nodig is om een overgang van deze Fx-status naar de F0-status (volledig ingeschakeld) te maken.
  • De verblijfsvereiste, de tijd die een onderdeel in deze Fx-staat moet doorbrengen om een overgang naar de staat de moeite waard te maken.
  • Het nominale vermogen, dat is het vermogen dat door het onderdeel in deze Fx-status wordt verbruikt.

PoFx gebruikt deze informatie (naast andere systeembrede invoer en afhankelijkheden) om intelligente beslissingen te nemen over welke Fx-energiestatus een onderdeel op een bepaald moment moet hebben. PoFx moet twee concurrerende doelstellingen in balans hebben. Ten eerste moet een onderdeel dat niet actief is geconfigureerd om zo weinig mogelijk energie te verbruiken. Ten tweede moet een onderdeel worden voorbereid om over te schakelen van een laag vermogen Fx-status naar F0 snel genoeg om het uiterlijk te behouden van een apparaat dat altijd ingeschakeld en altijd verbonden is.

Energiebeheer op onderdeelniveau kan alleen worden uitgevoerd wanneer een apparaat de stroomstatus D0 (volledig ingeschakeld) heeft. Wanneer een apparaat zich in de D1 (bijna aan), D2 (bijna uit) of D3-energiestatus bevindt, is het apparaat niet toegankelijk. Wanneer het apparaat de status D0 heeft, moeten alleen onderdelen die het stuurprogramma actief gebruikt, de F0-status behouden. Niet-actieve onderdelen kunnen mogelijk overschakelen naar fx-statussen met een laag vermogen om het energieverbruik te verminderen.

Hoewel een apparaat de D0-energiestatus heeft, volgt het stuurprogramma een eenvoudig protocol om energiebeheer op onderdeelniveau mogelijk te maken. Wanneer het stuurprogramma toegang nodig heeft tot een onderdeel, roept het stuurprogramma de PoFxActivateComponent-routine aan om toegang tot het onderdeel aan te vragen. Als het onderdeel de status Fx met een laag vermogen heeft wanneer deze aanroep plaatsvindt, start PoFx een overgang naar de F0-status en meldt het stuurprogramma wanneer deze overgang is voltooid. Het stuurprogramma heeft vervolgens toegang tot het onderdeel. Wanneer het stuurprogramma geen toegang meer nodig heeft tot het onderdeel, roept het stuurprogramma de PoFxIdleComponent-routine aan om PoFx op de hoogte te stellen. Als reactie op deze aanroep kan PoFx het onderdeel mogelijk overschakelen naar een laag vermogen Fx-status.

Een onderdeel dat toegankelijk is, bevindt zich in de actieve voorwaarde. Een onderdeel dat niet toegankelijk is, bevindt zich in de niet-actieve voorwaarde. Om de toegankelijkheid van de onderdelen op een apparaat bij te houden, onderhoudt PoFx een activeringsreferentietelling voor elk onderdeel. Met een PoFxActivateComponent-aanroep wordt het aantal met één verhoogd op het opgegeven onderdeel en wordt de telling met één verminderd door een PoFxIdleComponent-aanroep .

Als een PoFxActivateComponent-aanroep het aantal van nul naar één verhoogd, start PoFx een overgang van de niet-actieve voorwaarde naar de actieve voorwaarde en meldt het stuurprogramma wanneer deze overgang is voltooid. Als een PoFxActivateComponent optreedt wanneer het onderdeel zich al in de actieve voorwaarde bevindt, blijft het onderdeel in de actieve voorwaarde en ontvangt het stuurprogramma geen melding.

Als een PoFxIdleComponent-aanroep de telling van één tot nul afzet, start PoFx een overgang van de actieve voorwaarde naar de niet-actieve voorwaarde en meldt het stuurprogramma wanneer deze overgang is voltooid. Als een PoFxIdleComponent-aanroep de telling verlaagt, maar het aantal niet nul wordt, blijft het onderdeel in de actieve toestand en ontvangt de driver geen melding.

Het aantal activeringsreferenties verwerkt gemakkelijk situaties waarin twee of meer codepaden in hetzelfde stuurprogramma mogelijk gelijktijdig toegang moeten hebben tot hetzelfde onderdeel in een apparaat. Door dit aantal te handhaven, stelt PoFx de verschillende onderdelen van het stuurprogramma in staat om onafhankelijk de toegang tot het onderdeel te behouden zonder dat het stuurprogramma de toegang tot het onderdeel centraal hoeft te beheren.

De actief/niet-actief status van een onderdeel is het enige betrouwbare middel voor een driver om te bepalen of een onderdeel toegankelijk is. Een onderdeel dat de F0-energiestatus heeft, maar zich in de niet-actieve toestand bevindt, staat mogelijk op het punt om over te schakelen naar een fx-status met een laag vermogen.

Een onderdeel dat zich in de actieve voorwaarde bevindt, heeft altijd de status F0. Het onderdeel kan F0 niet verlaten totdat deze de niet-actieve voorwaarde invoert. Een onderdeel dat zich in de niet-actieve toestand bevindt, kan zich in F0 of in een laag vermogen Fx-status bevinden. Als een onderdeel de status Fx met een laag vermogen heeft wanneer een PoFxActivateComponent-aanroep een overgang van de niet-actieve voorwaarde naar de actieve voorwaarde start, moet PoFx eerst het onderdeel overschakelen naar F0 voordat het onderdeel de actieve voorwaarde kan invoeren.

Naslaginformatie over energiebeheer van apparaten