Mi CPU Intel cambia la velocidad del reloj dependiendo del uso, pero ¿cómo decide a qué velocidad de reloj ejecutar? ¿La velocidad del reloj la determina el software del sistema operativo utilizando un algoritmo o está basado en hardware? ¿Depende del número de interrupciones? ¿La rotación de caché? ¿La CPU misma establece su propio reloj? ¿O lo configura un controlador separado? O software?
16
Respuestas:
El reloj central de la CPU no se recibe directamente de la placa base. Ese reloj suele ser mucho más lento (a menudo en un factor de 10 o más) que la frecuencia interna de la CPU. En cambio, la señal de reloj de la placa base se utiliza como frecuencia de referencia para un oscilador controlado por bucle bloqueado de fase de mayor frecuencia dentro de la CPU. El reloj generado se ejecuta en algún múltiplo del reloj de referencia, y ese múltiplo se puede cambiar configurando ciertos registros en la CPU. La generación real del reloj se realiza únicamente en hardware.
Para reducir aún más la energía, la CPU también envía señales al regulador de voltaje que suministra su voltaje central para que funcione en un punto de ajuste más bajo. A frecuencias más bajas, la CPU puede funcionar a un voltaje más bajo sin mal funcionamiento, y debido a que el consumo de energía es proporcional al cuadrado del voltaje, incluso una pequeña reducción en el voltaje puede ahorrar una gran cantidad de energía.
La escala de voltaje y frecuencia se realiza por hardware, pero la decisión de ejecutar en un modo de baja potencia se toma por software (el SO). La forma en que el sistema operativo determina el modo óptimo para ejecutarse es un problema separado y más desordenado, pero probablemente se reduce principalmente a qué% de tiempo ha estado inactivo el sistema últimamente. Principalmente inactivo, baja la frecuencia. Mayormente ocupado, elevar la frecuencia. Una vez que el sistema operativo decide la frecuencia a la que se ejecuta, solo es cuestión de establecer un registro.
Referencia: " Tecnología Intel SpeedStep mejorada para el procesador Intel Pentium M "
fuente
Bueno, en los sistemas operativos modernos hay algo llamado "programador de tareas". Se ejecuta periódicamente (muy rápido) y selecciona (de una lista) la siguiente tarea a ejecutar. Las tareas pueden estar en muchos estados, como seleccionar, bloquear, dormir, etc.
Si todas las tareas están en modo de selección (esperando algo del sistema operativo) y no se pueden atender, o algunas están inactivas, etc., por lo que no se está haciendo un uso intensivo del procesador, el programador de tareas invocará una tarea especial llamada "inactivo" ".
Si el controlador de la CPU comprueba la tabla del planificador de tareas y verifica que la tarea inactiva se está ejecutando la mayor parte del tiempo de la CPU, simplemente enviará un comando al circuito PLL de generación de reloj de la CPU para reducir su reloj. Por el contrario, si la tarea inactiva requiere cada vez menos tiempo de CPU (lo que significa que la CPU se está utilizando mucho), el controlador de la CPU aumentará la velocidad de la CPU.
No es muy difícil, pero hay un límite inferior en el que la CPU no puede reducirse más porque no todas las CPU son completamente estáticas (por lo que necesitan ciclos de actualización). El cpus completamente estático puede ir tan bajo como 0 (cero) MHz porque no hay ningún estado que perder si el reloj se detiene.
fuente