Actualizado a: 22 de enero de 2024
La CPU tiene varios mecanismos para controlar la temperatura y el consumo. En este tutorial te mostraremos cómo funcionan los P-States y C-States, además de explicarte qué son. De esta forma, tendrás más claro todo sobre la gestión de energía que hace tu equipo.
¿Qué es APM?
Antes de pasar a los P-States y C-States, primero es necesario introducir qué es APM (Advanced Power Management), una interfaz de programación o API que permitía al sistema operativo poder controlar la gestión de energía en los IBM PC y compatibles. Este sistema fue introducido junto con el BIOS en estos equipos.
Este sistema APM fue creado de forma conjunta por Intel y Microsoft, y se hizo público en 1992. Fue todo un paso adelante, para así poder gestionar la energía, especialmente en equipos portátiles donde esto era aún más importante.
APM podía ser configurado desde el BIOS, sin embargo, es el propio sistema operativo el que instala la API necesaria de APM para poder gestionar todos los modos disponibles de energía. De esta forma, se facilita su uso al integrarlo como una pieza de software y permitiendo la comunicación SO-BIOS.
Para entender cómo funciona APM de forma práctica, se puede decir que cada vez que se conectaba un dispositivo periférico, como un monitor, un disco duro, o cualquier otro elemento, el controlador de software que permite que el dispositivo funcione, también lo comunicará al sistema operativo. Y este controlador, escrito según las especificaciones de APM, puede controlar las opciones de energía de este componente.
Por ejemplo, imagina que conectas un disco duro con controlador compatible con APM. Esto podría hacer que esta unidad de disco se apague cuando no se está usando, y así ahorrar energía, a la par que evitas también un mayor calentamiento de la unidad.
Estados de APM
Básicamente, existen dos tipos de estados en APM:
- Los estados del sistema, que puede definir cinco estados de energía para todo el sistema en conjunto. Por ejemplo, se puede definir el encendido o apagado completos, que serían los estados más simples.
- Off: todo el equipo está completamente apagado, los dispositivos en off.
- On: todo está encendido, todos los dispositivos estarán on.
- Enabled: el equipo estará encendido, pero APM estará controlando el estado de los dispositivos como sea necesario.
- Standby: la mayoría de dispositivos están en modo bajo consumo, la CPU está apagada o ralentizada, y se guarda el estado del sistema. De esa forma, se puede iniciar rápidamente.
- Suspend: es un estado en el que el sistema se guarda, pero la mayoría de los dispositivos estarán apagados. El arranque será más rápido que encender desde cero, como una especie de hibernación.
- Los estados de energía del dispositivo. Estos permiten realizar ajustes en cada dispositivo de forma independiente:
- On: el dispositivo o periférico estará encendido y con toda la energía.
- Off: el dispositivo estará apagado, sin energía.
- Low Power: el dispositivo no está trabajando, pero la energía se mantiene por si se necesita despertar rápidamente.
- Power Managemet: el dispositivo está encendido, pero algunas de sus funciones no están disponibles o su rendimiento se ha reducido para consumir menos.
La única excepción en el APM es la CPU. Solo mediante el firmware del BIOS se puede controlar la CPU. Un controlador, ya sea a través del sistema o de un dispositivo, solo puede comunicarse con el BIOS; no puede dar una instrucción para apagar directamente a la CPU. Esto es para proteger la CPU de ser apagada por un controlador o driver mal escrito o con algún bug.
¿Qué es ACPI?
APM se quedó obsoleto y fue reemplazado por el ACPI (Advanced Configuration and Power Interface), o interfaz avanzada de gestión de energía. Este nuevo sistema va más allá de APM, con nuevas funciones para permitir un control más exhaustivo y eficiente de la energía. A diferencia del anterior, este sistema no solo funciona para PCs x86, sino que también ha sido implementado para otras arquitecturas como ARM, etc.
Por otro lado, hay que destacar que ACPI es capaz de detectar pulsaciones de botones de apagado como evento, haciendo que el sistema operativo lo sepa, y sin correr el riesgo como en APM, además de asignar IRQs para los dispositivos y que los diseñadores puedan explotar las funciones de ahorro como necesiten.
ACPI es un estándar creado por Intel, Microsoft y Toshiba en un inicio. Lanzaron la primera implementación en 1996, aunque tras eso vendrían algunas nuevas revisiones para soportar 64-bit, multiprocesadores (MP), y nuevas interfaces como SATA, PCIe, USB 3.x, etc.
Estados de energía de ACPI
ACPI también acepta varios modos o estados como APM, pero son diferentes y más numerosos en este caso. Por ejemplo, tenemos los:
- G-States o Global States y S-States o Sleep States: son estados globales definidos como Gx y Sx, y que son:
- G0 o Working (S0): el equipo está funcionando y la CPU está ejecutando instrucciones.
- G1 o Sleeping (S0ix): es un estado de espera o Standby moderno, un estado ocioso donde parte del SoC está durmiendo. Funciona tanto en ARM como en x86. S0ix significa que puede haber estados intermedios definidos por el fabricante.
- S1 (Power on Suspend o POS): la caché del procesador está inactiva, y la CPU ha parado la ejecución de instrucciones. Pero se mantiene el suministro de energía a la CPU y la RAM. Algunos dispositivos pueden estar apagados.
- S2: la CPU se apaga, y el contenido de la caché pasa a la RAM.
- S3 o Suspend: la RAM mantiene la energía para no perder los datos que contiene, pero el sistema estará suspendido.
- S4 o Hibernation: es un estado de suspensión especial, ya que en vez de mantener la RAM alimentada, se vuelva su contenido en la memoria secundaria para que no se pierda y se apaga el sistema.
- G2 o Soft Off (S5): similar a G3, pero con la excepción de que la PSU continúa suministrando energía y con el botón de encendido se puede retornar al modo S0. Se necesitará un reinicio completo, y no se almacena ningún estado previo. Algunos dispositivos también mantendrían la energía, por lo que podrían despertar al equipo desde el teclado, desde la red, etc.
- G3 o Mechanical Off: se trata de un estado en el que el equipo está totalmente apagado de forma mecánica con el interruptor de la PSU o similar. En este estado, se puede desenchufar y se puede acceder a él para realizar reparaciones, mantenimiento o actualizaciones de forma segura. Solo continuará funcionando el RTC a través de la pila del CMOS.
- D-States o Device States: estos son los estados de dispositivos y son los siguientes:
- D0 o Fully On: es el estado operativo del dispositivo. También puede haber estados D0ix intermedios como con S0ix.
- D1 y D2: son estados de energía intermedios definidos por varios dispositivos.
- D3: este estado se divide entre D3 Hot (tiene energía auxiliar y puede ser recuperado a un estado superior), y D3 Cold (no se suministra energía, apagado, no responderá a su bus).
- P-States o Performance States: (véase siguientes apartados).
- C-States o CPU States: (véase siguientes apartados).
Processor States (C-States)
He dejado para el final los C-States o estados del procesador o CPU. Estos estados son especiales, ya que son modos de energía para la CPU, algo que en APM no se podía controlar, ya que el BIOS era el único que podía interactuar con la CPU. Estos estados pueden entrar usando instrucciones como HLT (halt) o MWAIT (junto con registros EAX para indicar el estado Cx). Estas instrucciones no pueden ser ejecutadas por ningún software del espacio de usuario, pero sí en el espacio privilegiado o kernel.
Entre los C-States tenemos:
- C0 (Operativo): es el estado operativo, cuando la CPU está funcionando. Es el estado al que vuelve el núcleo de la CPU cuando se produce una interrupción. Algunas CPUs modernas pueden hacer que si ya existe un núcleo activo, la interrupción vuelva a ese núcleo, y no encender alguno de los que están apagados. Además, es importante destacar que se podría dejar un C0 permanente, pero esto podría generar problemas en el sistema.
- C1/C1E (Halt): es cuando la CPU se detiene y no procesa instrucciones, pero puede regresar al estado C0 de ejecución de forma instantánea. Además, las CPUs modernas también aceptan el estado C1E (Enhanced Halt State), que es una mejora que permite reducir el consumo aún más.
- C2 o Stop-Clock: es el estado es similar al anterior, pero se para la señal de reloj, lo que puede hacer que se tarde un poco más en restablecer al estado C0.
- C3 o Sleep: este estado tiene variantes, como Sleep, Deep Sleep o Deeper Sleep. En él la memoria caché L1 y L2 se vuelcan en la LLC, o L3, y todos los relojes se apagan como en C2. Solo se mantendrá el número con suministro de energía.
- C4-C10: existen más estados soportados por los actuales procesadores. Estos son algo más complejos, y no todos los procesadores los aceptan todos. Por ejemplo, en el C6 se apagará también el núcleo. Además, otros estados de estos pueden apagar núcleos, partes, etc., para conseguir ahorros extra.
Ten en cuenta una cosa, y es que al apagar un núcleo, costará cierto tiempo en ponerlo en marcha nuevamente. Por este motivo, es más eficiente usar un núcleo activo si se puede, para que sea más inmediato y mejore el rendimiento.
Performance States (P-States)
Para finalizar, también tenemos los P-States o Peformance States, es decir, los estados de rendimiento que afectarán al núcleo de la CPU. Los vistos antes afectan al a CPU, y estos otros a ciertos parámetros del núcleo. Por ejemplo, son los que usan tecnologías como VIA PowerSaver, AMD PowerNow!, Intel SpeedStep, etc. Esto no son más que marcas registradas, pero que en definitiva son implementaciones para usar estos P-States de forma que puedan ahorrar energía.
La conmutación entre estos P-States es muy rápida. Además, estos estados también están relacionados con los famosos modos Turbo y similares, ya que se pueden controlar en función del consumo y la disipación de energía (TDP) para poder escalar la frecuencia cuando es necesario ganar rendimiento sin afectar al chip.
En cuanto a los estados P, hay que destacar:
- P0: es el funcionamiento en el que el núcleo de la CPU está al máximo voltaje y frecuencia de reloj (base). Es cuando la CPU tiene una gran carga de trabajo.
- P1: en este caso, se reduce la frecuencia de reloj y el voltaje ligeramente por debajo del P0, ya que la carga de trabajo es menor y no necesita todo el rendimiento.
- P2: es un estado menor a P1, es decir, donde se reduce aún más la frecuencia y voltaje.
- Pn: existen más estados P, y que van decrementando la frecuencia de reloj y el voltaje para reducir más y más el consumo y la temperatura generada.