Compartilhar via


Gerenciamento de energia do dispositivo

A especificação do ACPI 6.3 define um conjunto de objetos de namespace para especificar informações de energia do dispositivo para um dispositivo. Por exemplo, um conjunto de objetos pode especificar os recursos de energia que um dispositivo requer em cada estado de energia do dispositivo com suporte. Outro tipo de objeto pode descrever a capacidade do dispositivo de acordar de um estado de baixa potência em resposta a eventos de hardware.

Gerenciamento de energia do dispositivo no Windows

Enquanto um sistema está em execução (ou seja, o sistema está no estado de trabalho definido por ACPI, S0), os dispositivos individuais podem fazer transições entre os estados de energia do dispositivo, dependendo da atividade, para economizar energia. Em sistemas de computador tradicionais, os estados de suspensão definidos pelo ACPI (S1 a S4) também são usados para economizar energia, mas esses estados de suspensão, que são desconectados e de alta latência, não são usados em plataformas Windows SoC. Portanto, a duração da bateria depende muito de como as plataformas implementam o gerenciamento de energia do dispositivo em tempo de execução.

Os dispositivos integrados ao SoC podem ter o gerenciamento de energia por meio do Windows Power Framework (PoFx). Esses dispositivos integrados à estrutura são gerenciados por energia pela PoFx por meio de um microPEP (plug-in do power engine) específico do SoC que conhece as especificidades dos controles de energia e relógio do SoC. Para obter mais informações sobre o PoFx, consulte Visão geral do Power Management Framework.

Para dispositivos periféricos que não estão integrados ao SoC, o Windows usa o Gerenciamento de Energia do Dispositivo ACPI. Para esses dispositivos gerenciados por ACPI, o responsável pela política de energia na pilha de drivers do dispositivo (normalmente, o driver de função ou de classe) toma decisões sobre a transição do estado de energia do dispositivo, e o driver ACPI do Windows, Acpi.sys, invoca métodos de controle ASL para aplicar os controles de energia específicos da plataforma necessários.

É possível, e algumas pilhas de dispositivos usam apenas o Gerenciamento de Energia de Dispositivo acPI ou em combinação com o microPEP para gerenciamento de energia de dispositivo no SoC.

Conforme descrito no gerenciamento de energia do dispositivo no ACPI, o Windows dá suporte aos recursos de gerenciamento de energia D3cold definidos na especificação ACPI 5.0. Usando esse suporte, dispositivos, plataformas e drivers podem optar por ter a energia do dispositivo completamente removida durante períodos ociosos em tempo de execução. Essa funcionalidade pode melhorar significativamente a vida útil da bateria. No entanto, a remoção de energia deve ser suportada por todos os componentes afetados para que eles possam retornar com sucesso ao estado D0. Por esse motivo, os drivers (controladores de barramento e função), bem como a própria plataforma, devem indicar que suportam isso. Para obter mais informações sobre a opção de uso do driver D3cold, consulte Suporte a D3cold em um Driver.

Gerenciamento de energia do dispositivo no ACPI

Os dispositivos de namespace dão suporte a até quatro estados de energia do dispositivo, numerados de D0 (função completa, ou "ligado") a D3 (sem função, ou "desligado"). Cada estado pode ter requisitos de energia diferentes, com estados com maior número consumindo menos energia do que estados com menor número. Além disso, o estado D3 (desativado) tem dois subestados, D3hot e D3cold. O subestado D3hot exige que o dispositivo permaneça acessível no seu barramento principal, para que possa responder a comandos de software específicos do barramento. Esse requisito e a energia usada para atendê-lo são removidos em D3cold. Por fim, um dispositivo pode ser configurado para se ativar de um estado de baixa potência devido a um evento de hardware e, se necessário, também retirar a plataforma de um estado de inatividade.

A plataforma indica seu suporte para D3cold ao conceder ao sistema operacional o controle do recurso "_PR3 Support" (bit 2) quando solicitado por meio do método de capacidades do OSPM em toda a plataforma. Para obter mais informações, consulte a seção 6.2.10.2, "Funcionalidades do OSPM em toda a plataforma", na especificação ACPI 5.0.

Dispositivos com gerenciamento de energia usam objetos filho para descrever seus recursos de energia ao sistema operacional. As seções a seguir descrevem esses recursos e objetos.

Recursos de energia e estados

Um dispositivo declara seu suporte para um estado de energia listando o conjunto de recursos de energia necessários para estar nesse estado. Os Recursos de Energia do ACPI representam os trilhos de tensão que alimentam os dispositivos e os sinais de relógio que os impulsionam. Esses recursos são declarados na raiz do namespace. Cada recurso de energia tem um _ON e um método _OFF por meio do qual ele é controlado e um método _STA para relatar seu estado. Para obter mais informações, consulte a seção 7.1, "Declarando um objeto Power Resource", da especificação ACPI 5.0.

O driver ACPI do Windows, Acpi.sys, monitora as dependências de energia entre os dispositivos que compartilham recursos e, à medida que esses dispositivos fazem a transição entre estados de energia, garante que apenas os recursos de energia que são realmente necessários por um dispositivo sejam ativados a qualquer momento específico.

Requisitos de recursos de energia (_PRx)

Há um objeto power resource requirements (_PRx), em que x = 0, 1, 2 ou 3, para cada estado de energia do dispositivo com suporte. Quando o driver do dispositivo decide fazer a transição para um novo estado de energia, Acpi.sys garante que todos os recursos de energia necessários para o novo estado sejam ativados e que todos os recursos que não estão mais em uso sejam desativados.

Estado suportado do dispositivo Objeto de requisitos de recurso a ser usado Recursos a serem incluídos no objeto de requisitos
D0 (obrigatório) _PR0 Todas as energias e relógios necessários para a função completa do dispositivo.
D1 _PR1 Qualquer energia ou relógios necessários para a funcionalidade reduzida definida pela classe desse estado.
D2 _PR2 Qualquer energia ou relógios necessários para a funcionalidade reduzida definida pela classe desse estado.
D3hot (obrigatório) _PR3 Apenas a alimentação ou os sinais de temporização necessários para que o dispositivo apareça em seu barramento e responda a um comando específico do barramento.

Se uma plataforma específica der suporte ao recurso D3cold e o driver do dispositivo para um dispositivo optar por D3cold, os recursos de energia _PR3 do dispositivo serão desativados, se não estiverem sendo usados por nenhum outro dispositivo, em algum momento após a transição para D3Cold.

Para obter mais informações sobre os requisitos de recursos de energia para um dispositivo que dá suporte a D3cold, consulte Requisitos de Firmware para D3cold.

Estado de energia do dispositivo (_PSx)

Há um método de estado de energia, _PSx, em que x = 0, 1, 2 ou 3, para cada estado de potência Dx do dispositivo com suporte. Esse método é opcional, mas, se ele estiver presente, ele será invocado antes que os recursos de energia do estado sejam desativados e depois que os recursos de energia do estado forem ativados. _Psx destina-se a executar quaisquer ações específicas da plataforma relacionadas ao ciclo de energia. _Psx não deve acessar registros de dispositivos atribuídos ao driver de função, acessar registros padrão do barramento atribuídos ao driver do barramento, nem ligar ou desligar recursos de energia, que é uma operação reservada para Acpi.sys.

Capacidades de ativação

Os dispositivos gerenciados por energia podem ser capazes de detectar eventos quando estiverem em um estado de baixa potência e fazer com que a plataforma seja ativada para lidar com eles. Para habilitar esse recurso, o Windows precisa de informações sobre os recursos da plataforma e do dispositivo.

Estado de ativação do dispositivo Sx (_SxW)

Em uma determinada plataforma, há um mapeamento específico entre estados de dispositivo que dão suporte à funcionalidade de ativação e aos estados do sistema que podem responder a eventos de ativação. A ACPI define o objeto _SxW para fornecer essas informações ao sistema operacional. Há um objeto SxW para cada estado de energia do sistema com suporte, Sx. Como as plataformas SoC estão sempre em S0, o único objeto de interesse aqui é _S0W. Esse objeto especifica a capacidade da plataforma de despertar de um estado ocioso de baixa potência em resposta ao sinal de ativação de um dispositivo. O objeto é usado pelo Windows para determinar o estado D-alvo para o dispositivo quando o sistema está em ociosidade de baixa potência. Para obter mais informações sobre _S0W, consulte a seção 7.2.20, "_S0W (S0 Device Wake State)", na especificação ACPI 5.0.

Para a maioria das plataformas SoC, os dispositivos são gerenciados agressivamente quanto ao consumo de energia para o estado D3 quando ociosos, e o sistema é capaz de acordar do estado de baixo consumo enquanto o dispositivo está neste estado. Para esse sistema, o objeto _S0W retornará 3 (ou 4, se ele também oferecer suporte a D3cold).

_S0W(4) é um requisito para D3Cold, independentemente de o dispositivo dar suporte ou não ao acordar.

Qualquer estado D pode ser designado como o estado com menor capacidade de ativação e algumas classes de dispositivo ou ônibus usam valores diferentes. Por exemplo, dispositivos conectados a SDIO e USB usam o estado D2 para esse estado.

Para facilitar a migração de drivers de dispositivo do Windows 7 para o Windows 8 ou Windows 8.1, seu dispositivo pode precisar fornecer _S4W. Atualmente, a única classe de dispositivo que tem esse requisito é a rede (Ndis.sys).

Interrupções com capacidade de despertar (_CRS)

A descrição do recurso de um dispositivo indica que o dispositivo é capaz de detectar e sinalizar um evento de ativação marcando uma interrupção como "capaz de ativação" (ExclusiveAndWake ou SharedAndWake). Os drivers do Windows e do dispositivo fornecem tratamento especial dessas interrupções para garantir que elas estejam habilitadas quando o dispositivo fizer a transição para um estado de baixa potência. Para obter mais informações, consulte as descrições dos descritores de recursos Interrupt and GpioInt na seção 6.4.3.6, "Descritor de Interrupção Estendida" e seção 6.4.3.8.1, "Descritores de Conexão GPIO", da especificação ACPI 5.0.

Habilitação de ativação

Dependendo do cenário do usuário ou da política do sistema, os dispositivos compatíveis com o recurso de acordar podem ou não estar realmente preparados para acordar. Portanto, interrupções capazes de ativar o dispositivo podem ou não estar habilitadas quando o dispositivo está ocioso. Além de habilitar interrupções, o Windows usa os mecanismos a seguir para ativar o recurso de despertar em um dispositivo.

Suspensão e ativação do dispositivo (_DSW)

A ACPI define o objeto _DSW como uma forma de o sistema operacional informar o firmware da plataforma ACPI sobre o próximo período de suspensão ou em modo ocioso de baixa potência. Esse objeto é opcional e é usado somente se a plataforma tiver a necessidade de configurar o hardware de wake-up específico da plataforma com antecedência. O estado D de destino para o dispositivo e o estado S de destino para o sistema são fornecidos. A combinação de estado D e S sempre estará em conformidade com as informações fornecidas pelos objetos de _SxW do dispositivo.

Recursos de energia para despertar (_PRW)

Em alguns casos, recursos de energia adicionais devem ser ativados para que um dispositivo seja habilitado para acordar. Nesse caso, o dispositivo pode fornecer o objeto _PRW para listar esses recursos de energia adicionais. O driver ACPI do Windows, Acpi.sys, gerenciará esses recursos de energia como normalmente faz, assegurando que eles estejam ativados quando forem necessários por um dispositivo (ou seja, um dispositivo habilitado para ativação) e que estejam desativados caso contrário.

_PRW também é usado para definir a funcionalidade de ativação para plataformas de PC tradicionais (hardware acPI completo).