El C-State y P-State son estados que tienen relación con la gestión de energía de un sistema y que se implementan en la CPU para aprovechar las funciones de ACPI. En este artículo podrás aprender un poco más sobre estos conceptos y comprender cómo gestiona el consumo y la temperatura tu equipo.
Índice de contenidos
¿Qué es ACPI?
La interfaz de configuración avanzada y alimentación (ACPI o Advanced Configuration Power Interface) es una especificación de la industria destinada a la gestión eficiente del consumo de energía en ordenadores portátiles y de sobremesa. ACPI describe la forma en que el BIOS/UEFI de un ordenador, la CPU, los dispositivos periféricos y el sistema operativo (SO) gestionan con el consumo de energía. El objetivo principal de ACPI es consolidar, examinar y mejorar el anterior estándar de gestión de energía APM.
ACPI se lanzó en 1996 y es una interfaz estándar destinada a la gestión de la energía. Los diseñadores iniciales de la especificación fueron Intel, Toshiba y Microsoft, aunque posteriormente contribuyeron Phoenix y HP, entre otros.
ACPI es un sistema estandarizado, pero usado principalmente en los equipos de la familia x86. Los ARM para dispositivos móviles suelen usar sistemas ligeramente diferentes, como los clusters de núcleos heterogéneos como big.LITTLE o similares. De esta forma pueden gestionar el consumo y la temperatura según la carga de trabajo del software.
En cuanto a las funciones o pretensiones de ACPI destacan:
- Se puede establecer el tiempo de encendido o apagado de un dispositivo.
- El ordenador puede cerrar automáticamente los programas de baja prioridad cuando la batería se esté agotando para optimizar el uso de la energía.
- Si una aplicación no requiere toda la velocidad del procesador, el sistema operativo puede reducirla o se pueden apagar núcleos que estén inactivos. Aquí es donde entran los C-States y P-States.
- Si un equipo no se está utilizando, puede entrar en modo de espera. Si está en modo de espera, la energía de su módem permanece encendida para poder recibir los correos/faxes entrantes.
Para que esto sea posible tienen diferentes estados que pueden usar los componentes de un equipo como convenga en cada caso:
G-State
Son los llamados estados globales o G-States y estarán asociados también a estados C en algunos casos. Estos estados son:
- G0/S0: la computadora está trabajando (working).
- G1: durmiendo (sleeping):
- G1/S1: encendido-suspendido. Se conserva el estado del sistema, manteniendo la CPU y memoria cache.
- G1/S2: CPU apagada. Se pierden los datos.
- G1/S3: standby, sleep, o suspendido. La RAM del sistema permanece alimentada para que no se pierdan los datos.
- G1/S4: hibernación o suspensión de disco. Todo se almacena en la memoria no volátil o secundaria. Así se libera a la RAM para apagarla también y que no se pierdan los datos.
- G2/S5: soft-off, apagado suave. Se produce un apagado del equipo, pero se mantiene un mínimo de alimentación para que un evento pueda arrancar.
- G3: apagado duro. Se desconecta la fuente de alimentación mediante el interruptor físico. Solo funcionarán cosas como el RTC que está alimentado por pila.
D-State
Los Device States o estados de dispositivos también son otra de las funciones que ACPI provee, en este caso tenemos:
- D0: fully on, completamente encendido. Está operativo.
- D1 y D2: son estados intermedios que pueden variar de un dispositivo a otro.
- D3: se divide en hot y cold, con alimentación auxiliar (responde al bus) o sin ella respectivamente (no responde al bus).
En este artículo nos centraremos en los estados que afectan al microprocesador, que son los siguientes que detallamos en el siguiente apartado.
C-State
En cuanto a los CPU States, o estados del procesador, ACPI tiene los siguientes:
- C0: operativo.
- C1/C1E: halt, el procesador no está procesando instrucciones, pero puede regresar a un estado de ejecución de forma instantánea. Los modernos procesadores tienen C1E (Enhanced Halt State) para reducir aún más el consumo.
- C2: Stop-clock, mantiene el estado de forma similar al C1, pero puede tardar más en regresar a su estado activo al haber detenido el reloj.
- C3: existen variantes como Sleep, Deep Sleep o Deeper Sleep. Un estado en el que la cache L1 y L2 se vacían en la LLC, y todos los relojes centrales se apagan. Solo se mantiene el núcleo encendido para mantener su estado.
- C4-C10: otros procesadores han integrado más estados para ahorros mayores. Por ejemplo, el C6 apagará el núcleo también y guarda el estado en una SRAM dedicada para que el voltaje del core sea 0v. Cuando se sale de C6 se puede restablecer el estado desde la SRAM.
P-State
Los estados P, P-States o Performance State son otros de los más importantes de cara a la CPU. Estos estados de consumo son los que los diseñadores de procesadores patentan bajo marcas registradas como Intel SpeedStep, AMD Power Now!, etc. Y los estados de rendimiento son:
- P0: máximo voltaje y frecuencia.
- P1: se escala la frecuencia y voltaje a valores ligeramente por debajo de P0.
- P2: menor frecuencia y voltaje que P1.
- Pn: menos…
Como se aprecia en la anterior imagen, los estados están relacionados entre sí como comenté anteriormente. Los G pueden llevar a estados S concretos, y estos a su vez a otros.
Todo esto estará controlado por el propio sistema operativo, los controladores, el firmware y ACPI, que le darán al hardware lo que necesita. Por ejemplo, el sistema operativo, a través de los gobernadores puede indicarle al controlador de la CPU que baje su frecuencia a 500 Mhz cuando estás usando un software de ofimática, que no necesita de gran rendimiento. De este modo se ahorra energía y se reduce la temperatura. En cambio, cuando se demanda más rendimiento, como en un videojuego, el gobernador del sistema operativo hará justo lo contrario, podrá elevar la frecuencia a la máxima posible para que la CPU rinda como se espera.
M-State
Aquí se agregan también un tipo extra de estados como son los estados de memoria de ACPI. Estos se han incorporado más recientemente y afectan a la memoria, para hacer que ésta también consuma menos y contribuya al ahorro general. Entre los estados tenemos:
- M0: en este caso la memoria está 100% en estado idle, o 0 modo normal de operación.
- M1: 80% / 30 ns en bajo consumo.
- M2: 30% / 10 μs, self-refresh
- Otros: algunos también agregan modos M3, M4, etc.
Ahora ya conoces un poco más cómo se maneja la energía en tu equipo, y quizás ahora entiendes un poco mejor los escalados dinámicos de frecuencia, los modos turbo, etc.