administración de estado de rendimiento de Component-Level
A partir de Windows 10, el marco de administración de energía (PoFx) permite a un controlador definir uno o varios conjuntos de estados de rendimiento ajustables individualmente para componentes individuales dentro de un dispositivo. El controlador puede usar estados de rendimiento para limitar la carga de trabajo de un componente para proporcionar un rendimiento suficiente para sus necesidades actuales.
Información general sobre los estados de rendimiento
En Windows 8 y Windows 8.1, PoFx proporciona estados inactivos (F-states) para el ahorro de energía en el nivel de componentes mediante la alimentación y el raíl de reloj cuando se introduce un estado F específico. Este modelo ahorra energía cuando un componente está en estado inactivo (no F0), pero no proporciona ningún mecanismo para optimizar el uso de energía ni equilibrarlo con las necesidades de rendimiento cuando el componente está activo. Aunque un componente está activo (en F0) y atiende una solicitud, es posible que no requiera el rendimiento completo del dispositivo. Por ejemplo, una tarjeta gráfica puede necesitar actualizar solo un cursor parpadeante y es posible que esto no necesite un rendimiento completo.
Los estados de rendimiento variable abordan este problema al permitir que el controlador limite el componente de un dispositivo para proporcionar un rendimiento suficiente para sus necesidades actuales. En Windows 8 y Windows 8.1, si un componente admite estados de rendimiento, cada controlador debe implementar un algoritmo de selección de estado de rendimiento propietario que sea interno para el controlador y, si es necesario, notifique al complemento de extensión de plataforma (PEP) de forma propietaria. El PEP es un componente de software que realiza tareas de administración de energía que son específicas de una línea de producto determinada de procesador o sistema en módulos chip (SoC). Las soluciones de estado de rendimiento propietarias específicas del controlador tienen la desventaja de estar estrechamente acopladas con el PEP y no se pueden depurar fácilmente.
A partir de Windows 10, PoFx proporciona una API para la administración del estado de rendimiento. Esta API tiene dos objetivos principales:
- Proporciona una manera estándar para que los controladores de dispositivos notifiquen al PEP los cambios de estado de rendimiento para que el PEP pueda tomar las medidas adecuadas.
- Proporciona una manera estándar para que los controladores notifiquen al sistema operativo los cambios de estado de rendimiento para el registro y el análisis en Windows Analizador de rendimiento (WPA), sin necesidad de un complemento personalizado para cada controlador.
Introducción a la API de PoFX para Component-Level Estados de rendimiento
PoFx permite a un dispositivo definir los siguientes tipos de estados de rendimiento para cada componente:
- Número discreto de estados en las unidades de frecuencia (medida en Hz), ancho de banda (medido en bits por segundo) o un número de índice opaco.
- Distribución continua de estados entre un valor mínimo y máximo.
Los estados de rendimiento se organizan en conjuntos y se registran por componente. Los estados de rendimiento dentro de un conjunto deben aumentar de forma monotónica. Se espera que la mayoría de los controladores definan un único conjunto de estados de rendimiento por componente. Por ejemplo, un controlador podría definir un conjunto de estados de rendimiento para controlar la frecuencia del reloj de un componente. Sin embargo, es posible que algunos controladores necesiten definir más de un estado de rendimiento establecido para controlar varias dimensiones de estados de rendimiento para un componente. Por ejemplo, un controlador podría definir dos conjuntos de estados de rendimiento para controlar la frecuencia del reloj y el ancho de banda del bus.
Para registrar un componente de dispositivo para la administración del estado de rendimiento de PoFx, un controlador sigue estos pasos generales:
El controlador registra los componentes del dispositivo que va a administrar PoFx. Para obtener más información, consulte Administración de energía de nivel de componente.
El controlador registra la compatibilidad con los estados de rendimiento llamando a PoFxRegisterComponentPerfStates. Como parte de la llamada de registro, los controladores pueden definir el propio estado de rendimiento de un componente determinado o aplazarlo al complemento de extensión de plataforma (PEP) para definirlos en su lugar.
El controlador de dispositivo o el PEP deben tener conocimiento de los estados de rendimiento, incluido el número de conjuntos de estados de rendimiento por componente, el tipo de estado de rendimiento (basado en intervalos o discretos) y los detalles de los valores y el recuento de los estados de rendimiento reales. Si el PEP no admite estados de rendimiento, el controlador todavía puede registrarse para admitir el estado de rendimiento con PoFx y notificar al sistema operativo los cambios de estado de rendimiento para el registro y el análisis en Windows Analizador de rendimiento (WPA).
En cualquier caso, al finalizar correctamente PoFxRegisterComponentPerfStates, el controlador tiene una estructura de PO_FX_COMPONENT_PERF_INFO que contiene los conjuntos de estados de rendimiento registrados.
Cuando el controlador decide que un componente debe cambiar los estados de rendimiento, llama a PoFxIssueComponentPerfStateChange o PoFxIssueComponentPerfStateChangeMultiple. PoFx invoca la rutina ComponentPerfStateCallback proporcionada por el controlador cuando se completa el cambio de estado de rendimiento.
La rutina ComponentPerfStateCallback informa al controlador si el PEP se realizó correctamente o denegó el cambio de estado de rendimiento. Si el PEP ha realizado correctamente el cambio, el controlador realiza el trabajo que necesita para cambiar el estado de rendimiento desde su perspectiva. Si el PEP denegó el cambio, el controlador puede optar por no hacer nada o volver a intentar la solicitud de nuevo con el mismo estado de rendimiento o alternativo.