Compartilhar via


Gerenciamento de Estado de Desempenho do Component-Level

A partir do Windows 10, a PoFx (estrutura de gerenciamento de energia) permite que um driver defina um ou mais conjuntos de estados de desempenho ajustáveis individualmente para componentes individuais em um dispositivo. O driver pode usar estados de desempenho para limitar a carga de trabalho de um componente para fornecer desempenho suficiente para suas necessidades atuais.

Visão geral dos estados de desempenho

No Windows 8 e no Windows 8.1, o PoFx fornece estados ociosos (estados F) para economia de energia no nível do componente pela interrupção das alimentações e relógios quando se entra em um estado F específico. Esse modelo economiza energia quando um componente está em um estado ocioso (não F0), mas não fornece nenhum mecanismo para otimizar o uso de energia ou balanceá-lo em relação às necessidades de desempenho quando o componente estiver ativo. Mesmo que um componente esteja ativo (em F0) e atendendo a uma solicitação, ele pode não exigir o desempenho completo do dispositivo. Por exemplo, uma placa gráfica pode precisar apenas atualizar um cursor piscando, e isso pode não exigir desempenho total.

Os estados de desempenho variável resolvem esse problema permitindo que o driver limite o componente de um dispositivo para fornecer desempenho suficiente para suas necessidades atuais. No Windows 8 e no Windows 8.1, se um componente der suporte a estados de desempenho, cada driver deverá implementar um algoritmo de seleção de estado de desempenho proprietário interno para o driver e, se necessário, notificar o PEP (plug-in de extensão da plataforma) de maneira proprietária. O PEP é um componente de software que executa tarefas de gerenciamento de energia específicas para uma determinada linha de produto de processador ou módulos SoC (System on a Chip). As soluções de estado de desempenho proprietários específicas do driver têm a desvantagem de serem fortemente acopladas ao PEP e não podem ser facilmente depuradas.

A partir do Windows 10, o PoFx fornece uma API para gerenciamento de estado de desempenho. Essa API tem duas metas principais:

  • Ele fornece uma forma padrão para que os drivers de dispositivo notifiquem o PEP sobre as alterações de estado de desempenho, permitindo que o PEP tome as medidas apropriadas.
  • Ele fornece uma maneira padrão para os drivers notificarem o sistema operacional sobre mudanças no estado de desempenho para registro de logs e análise no Analisador de Desempenho do Windows (WPA), sem a necessidade de um plug-in personalizado para cada driver.

Introdução à API PoFX para estados de desempenho de Component-Level

O PoFx permite que um dispositivo defina os seguintes tipos de estados de desempenho para cada componente:

  • Um número discreto de estados nas unidades de frequência (medidas em Hz), largura de banda (medida em bits por segundo) ou um número de índice opaco.
  • Uma distribuição contínua de estados entre um valor mínimo e máximo.

Os estados de desempenho são organizados em conjuntos e registrados por componente. Os estados de desempenho dentro de um conjunto devem aumentar monotonicamente. Espera-se que a maioria dos drivers defina um único conjunto de estados de desempenho por componente. Por exemplo, um driver pode definir um conjunto de estados de desempenho para controlar a frequência do relógio de um componente. No entanto, alguns drivers podem precisar definir mais de um conjunto de estado de desempenho para controlar várias dimensões de estados de desempenho para um componente. Por exemplo, um driver pode definir dois conjuntos de estados de desempenho para controlar a frequência do relógio e a largura de banda do barramento.

Para registrar um componente do dispositivo para o gerenciamento de estado de desempenho pela PoFx, um driver segue estas etapas gerais:

  1. O driver registra os componentes do dispositivo a serem gerenciados pela PoFx. Para obter mais informações, consulte Component-Level Power Management.

  2. O driver registra suporte para estados de desempenho chamando PoFxRegisterComponentPerfStates. Como parte da chamada de registro, os drivers podem definir eles mesmos o estado de desempenho de um determinado componente ou deixar que o PEP (plug-in de extensão da plataforma) o defina.

    O driver do dispositivo ou o PEP devem ter conhecimento dos estados de desempenho, incluindo o número de conjuntos de estado de desempenho por componente, o tipo de estado de desempenho (discreto ou baseado em intervalo) e os detalhes dos valores e a contagem dos estados de desempenho reais. Se o PEP não der suporte a estados de desempenho, o driver ainda poderá se registrar para suporte de estado de desempenho com PoFx e notificar o sistema operacional de alterações de estado de desempenho para registro em log e análise no WPA (Analisador de Desempenho do Windows).

    Em ambos os casos, após a conclusão bem-sucedida de PoFxRegisterComponentPerfStates, o driver tem uma estrutura PO_FX_COMPONENT_PERF_INFO que contém os conjuntos de estado de desempenho registrados.

  3. Quando o driver decide que um componente deve alterar os estados de desempenho, ele chama PoFxIssueComponentPerfStateChange ou PoFxIssueComponentPerfStateChangeMultiple. PoFx invoca a rotina ComponentPerfStateCallback fornecida pelo driver quando a alteração de estado de desempenho é concluída.

  4. O driver é informado pela rotina ComponentPerfStateCallback se o PEP foi bem-sucedido ou negou a alteração do estado de desempenho. Se o PEP tiver êxito em efetuar a alteração, o driver executará qualquer processo necessário para modificar o estado de desempenho sob a sua perspectiva. Se o PEP negou a alteração, o driver poderá optar por não fazer nada ou repetir a solicitação novamente com o mesmo estado de desempenho ou um estado de desempenho alternativo.

Referência de gerenciamento de energia do dispositivo