Partilhar via


Gerenciamento de energia do dispositivo

A especificação 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 suportado. Outro tipo de objeto pode descrever a capacidade do dispositivo de despertar de um estado de baixa energia 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 pela ACPI, S0), dispositivos individuais podem fazer transições entre estados de energia do dispositivo, dependendo da atividade, para economizar energia. Em sistemas de PC tradicionais, os estados de suspensão definidos pela ACPI (S1 a S4) também são usados para economizar energia, mas esses estados de suspensão desconectados e de alta latência não são usados em plataformas SoC do Windows. Portanto, a vida útil da bateria é altamente dependente de como as plataformas implementam o gerenciamento de energia do dispositivo em tempo de execução.

Os dispositivos integrados no SoC podem ser geridos através do Windows Power Framework (PoFx). Esses dispositivos integrados no framework são geridos pelo PoFx através de um módulo energético específico do SoC (microPEP) que compreende as especificidades dos controles de energia e relógio do SoC. Para obter mais informações sobre PoFx, consulte Visão geral da estrutura de gerenciamento de energia.

Para dispositivos periféricos que não estão integrados ao SoC, o Windows usa o Gerenciamento de Energia de Dispositivo ACPI. Para esses dispositivos geridos por ACPI, o proprietário da política de energia numa pilha de controladores de dispositivo (normalmente o controlador de função ou de classe) toma decisões sobre a transição dos estados de energia do dispositivo e o controlador ACPI do Windows, Acpi.sys, invoca métodos de controlo ASL para aplicar os controlos de energia específicos da plataforma necessários.

É possível, e algumas pilhas de dispositivos fazem isso, usar somente o gerenciamento de energia do dispositivo ACPI ou em combinação com o microPEP para a gestão de energia de dispositivos no SoC.

Conforme descrito em Gerenciamento de energia de dispositivo na ACPI, o Windows oferece suporte aos recursos de gerenciamento de energia D3cold definidos na especificação ACPI 5.0. Ao usar esse suporte, dispositivos, plataformas e drivers podem optar por ter a energia do dispositivo completamente removida durante os períodos ociosos de tempo de execução. Esta capacidade pode melhorar significativamente a vida útil da bateria. No entanto, a remoção de energia deve ser suportada por todos os componentes afetados para poder retornar a D0 com êxito. Por esse motivo, os controladores (bus e função), assim como a própria plataforma, devem indicar que a suportam. Para obter mais informações sobre a ativação do driver D3cold, consulte Suporte ao D3cold num driver.

Gerenciamento de energia do dispositivo na ACPI

Os dispositivos de namespace suportam até quatro estados de energia do dispositivo, numerados de D0 (função completa ou "ligado") para D3 (sem função ou "desligado"). Cada estado pode ter diferentes requisitos de energia, com estados de maior número consumindo menos energia do que estados de menor número. Além disso, o estado D3 (desligado) tem dois subestados, D3hot e D3cold. O subestado D3hot requer que o dispositivo permaneça acessível em seu barramento pai para que possa responder a comandos de software específicos do barramento. Este requisito, e a potência utilizada para o cumprir, são removidos no D3cold. Finalmente, um dispositivo pode ser armado para ativar-se de um estado de baixa energia devido a um evento de hardware e, se necessário, também para tirar a plataforma de um estado ocioso.

A plataforma indica o seu suporte para D3cold concedendo ao SO o controlo do recurso "Suporte de _PR3" (bit 2) quando solicitado usando o Método de Capacidades OSPM a nível de toda a plataforma. Para obter mais informações, consulte a seção 6.2.10.2, "Recursos do OSPM em toda a plataforma", na especificação ACPI 5.0.

Os dispositivos gerenciados por energia usam objetos filho para descrever seus recursos de energia para o 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. ACPI Power Resources representam os trilhos de tensão que alimentam os dispositivos e os sinais de relógio que os acionam. Esses recursos são declarados na raiz do namespace. Cada recurso de energia tem um _ON e um método _OFF através do qual é controlado, e um método _STA para relatar seu estado. Para obter mais informações, consulte a seção 7.1, "Declarando um objeto de recurso de energia", da especificação ACPI 5.0.

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

Requisitos de recursos de energia (_PRx)

Há um objeto Power Resource Requirements (_PRx), onde x = 0, 1, 2 ou 3, para cada estado de energia do dispositivo suportado. Quando o driver de 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 estejam ativados e que todos os recursos que não estão mais em uso sejam desativados.

Estado suportado do dispositivo Objeto de requisitos de recursos a ser usado Recursos a serem incluídos no objeto de requisitos
D0 (obrigatório) _PR0 Toda a potência e relógios necessários para o funcionamento completo do dispositivo.
D 1 _PR1 Qualquer potência ou relógios necessários para a funcionalidade reduzida definida pela classe deste estado.
D 2 _PR2 Qualquer potência ou relógios necessários para a funcionalidade reduzida definida pela classe deste estado.
D3hot (obrigatório) _PR3 Apenas a alimentação ou os sinais de relógio necessários para que o dispositivo apareça no barramento e responda a um comando específico do barramento.

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

Para obter mais informações sobre os requisitos de recursos de energia para um dispositivo que suporta D3cold, consulte Requisitos de firmware para D3cold.

Estado de energia do dispositivo (_PSx)

Há um método de estado de energia, _PSx, onde x = 0, 1, 2 ou 3, para cada estado de energia do dispositivo suportado Dx. Esse método é opcional, mas, se estiver presente, é invocado antes que os recursos de energia para o estado sejam desligados e depois que os recursos de energia para o estado sejam ativados. _PSx destina-se a executar quaisquer ações específicas da plataforma necessárias relacionadas ao ciclo de energia. _PSx não deve acessar registradores de dispositivo atribuídos ao driver de função, acessar registros padrão de barramento atribuídos ao driver de barramento ou ligar ou desligar recursos de energia, que é uma operação reservada para Acpi.sys.

Capacidades de despertar

Dispositivos gerenciados por energia podem ser capazes de detetar eventos quando em um estado de baixo consumo de energia e fazer com que a plataforma acorde para lidar com eles. Para habilitar esse recurso, o Windows precisa de informações sobre os recursos da plataforma e do dispositivo.

Estado de despertar do dispositivo Sx (_SxW)

Em uma determinada plataforma, há um mapeamento específico entre os estados do dispositivo que suportam a capacidade de despertar e os estados do sistema que podem responder a eventos de despertar. 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 suportado, Sx. Como as plataformas SoC estão sempre em S0, o único objeto de interesse aqui é _S0W. Este objeto especifica a capacidade da plataforma de despertar de um estado ocioso de baixa potência em resposta ao sinal de despertar de um dispositivo. O objeto é usado pelo Windows para determinar o estado D de destino para o dispositivo durante a inatividade de baixo consumo de energia do sistema. 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 geridos energeticamente para o estado D3 quando em repouso, e o sistema é capaz de sair do estado de baixa potência enquanto o dispositivo está nesse estado. Para tal sistema, o objeto _S0W retorna 3 (ou 4, se também suportar D3cold).

_S0W(4) é um requisito para o D3Cold independentemente de o dispositivo suportar ou não a vigília.

Qualquer estado D pode ser designado como o estado com capacidade de despertar com menor potência, e algumas classes de dispositivos ou barramentos usam valores diferentes. Por exemplo, dispositivos conectados por 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 ser obrigado a fornecer _S4W também. 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 para um dispositivo indica que o dispositivo é capaz de detetar e sinalizar um evento de despertar marcando uma interrupção como "capaz de despertar" (ExclusiveAndWake ou SharedAndWake). O Windows e os drivers de dispositivo fornecem tratamento especial dessas interrupções para garantir que elas sejam ativadas quando o dispositivo fizer a transição para um estado de baixo consumo de energia. Para obter mais informações, consulte as descrições dos descritores de recursos Interrupt e GpioInt na seção 6.4.3.6, "Descritor de interrupção estendida", e na seção 6.4.3.8.1, "Descritores de conexão GPIO", da especificação ACPI 5.0.

Ativação de despertar

Dependendo do cenário de utilização ou da política do sistema, os dispositivos com capacidade de acordar podem ou não estar realmente habilitados para acordar. Portanto, interrupções com capacidade de despertar podem ou não ser ativadas quando o dispositivo está ocioso. Além de habilitar interrupções, o Windows usa os seguintes mecanismos para habilitar o despertar em um dispositivo.

Dispositivo Ativar/Desativar (Sleep Wake) (_DSW)

ACPI define o objeto _DSW como uma forma de o sistema operativo informar o firmware da plataforma ACPI sobre o próximo período de suspensão ou modo de baixo consumo de energia. Esse objeto é opcional e é usado somente se a plataforma tiver a necessidade de configurar o hardware de ativação 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 estados D e S sempre estará em conformidade com as informações fornecidas pelo(s) objeto(s) _SxW do dispositivo.

Recursos de energia para despertar (_PRW)

Em alguns casos, recursos de energia adicionais devem ser ligados para permitir que um dispositivo seja ativado para despertar. 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 normalmente, certificando-se de que eles sejam ativados quando forem necessários para um dispositivo (ou seja, um dispositivo habilitado para despertar) e sejam desativados caso contrário.

_PRW também é usado para definir a capacidade de despertar para plataformas de PC tradicionais (hardware ACPI completo).