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 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), dispositivos individuais podem fazer transições entre estados de energia do dispositivo, dependendo da atividade, para economizar energia. Em sistemas de computador tradicionais, os estados de suspensão definidos por 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 Windows SoC. Portanto, a duração da bateria é altamente dependente de como as plataformas implementam o gerenciamento de energia do dispositivo em tempo de execução.
Os dispositivos integrados ao SoC podem ser gerenciados por energia por meio do PoFx (Windows Power Framework). 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 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 proprietário da política de energia em uma pilha de driver de dispositivo (normalmente a função ou driver de classe) toma decisões de transição de 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 do Dispositivo ACPI ou em combinação com o microPEP para o gerenciamento de energia do dispositivo no SoC.
Conforme descrito em 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 duração da bateria. No entanto, a remoção da energia deve ter suporte de todos os componentes afetados para poder retornar ao D0 com êxito. Por esse motivo, os drivers (barramento e função), bem como a própria plataforma, devem indicar que dão suporte a ela. Para obter mais informações sobre a aceitação 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, D0 numerado (função completa ou "ativado") para D3 (sem função ou "desativado"). 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 em seu barramento pai para que ele 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 estar armado para se ativar de um estado de baixa potência devido a um evento de hardware e, se necessário, para também tirar a plataforma de um estado ocioso.
A plataforma indica seu suporte para D3cold concedendo o controle do sistema operacional do recurso "suporte _PR3" (bit 2) quando solicitado usando o Método de Funcionalidades 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.
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 e estados de energia
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 recurso 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 do dispositivo com suporte | Objeto de requisitos de recurso a ser usado | Recursos a serem incluídos no objeto requirements |
---|---|---|
D0 (obrigatório) | _PR0 | Todos os relógios e energia 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 | Somente a energia ou os relógios 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 de 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 power state, _PSx, em que x = 0, 1, 2 ou 3, para cada Dx de estado de energia do dispositivo com suporte. Esse método é opcional, mas, se 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 todas as ações específicas da plataforma necessárias ao redor do ciclo de energia. _PSx não deve acessar registros de dispositivo atribuídos ao driver de função, acessar registros padrão do barramento atribuídos ao driver de ônibus ou ativar ou desativar recursos de energia, que é uma operação reservada para Acpi.sys.
Funcionalidades 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 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 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. O 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 acordar 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 de destino para o dispositivo durante a ociosidade de baixa energia do sistema. Para obter mais informações sobre _S0W, consulte a seção 7.2.20, "_S0W (Estado de Ativação do Dispositivo S0)", na especificação ACPI 5.0.
Para a maioria das plataformas SoC, os dispositivos são gerenciados agressivamente pelo poder para o estado D3 quando ociosos e o sistema é capaz de acordar de baixa potência ociosa enquanto o dispositivo está nesse 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 à ativação.
Qualquer estado D pode ser designado como o estado com capacidade de ativação mais baixa 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 Windows 8 ou Windows 8.1, seu dispositivo também pode ser necessário para fornecer _S4W. Atualmente, a única classe de dispositivo que tem esse requisito é rede (Ndis.sys).
Interrupções com capacidade de ativação (_CRS)
A descrição do recurso para um dispositivo indica que o dispositivo é capaz de detectar e sinalizar um evento de ativação marcando uma interrupção como "capaz de ativar" (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 e 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.
Ativação de ativação
Dependendo do cenário do usuário ou da política do sistema, os dispositivos compatíveis com ativação podem ou não estar realmente armados para ativação. Portanto, as interrupções com capacidade de ativação podem ou não ser habilitadas quando o dispositivo está ocioso. Além de habilitar interrupções, o Windows usa os mecanismos a seguir para habilitar a ativação em um dispositivo.
Velório de Suspensão do Dispositivo (_DSW)
O 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 ociosidade de baixa 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 estado D e S sempre estará em conformidade com as informações fornecidas pelos objetos _SxW do dispositivo.
Recursos de energia para ativação (_PRW)
Em alguns casos, recursos de energia adicionais devem ser ativados para que um dispositivo seja habilitado para ativação. 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, certificando-se de que eles estejam ativados quando forem necessários por um dispositivo (ou seja, um dispositivo habilitado para ativação) e desabilitados de outra forma.
_PRW também é usado para definir a funcionalidade de ativação para plataformas de pc tradicionais (hardware full-ACPI).