¿Cómo controlan los procesadores su velocidad de reloj?

12

Recientemente me encontré con un procesador STM con 2 osciladores en el circuito, supongo que uno para operación de alta velocidad y el otro para baja potencia.

Para algo como un procesador de escritorio donde la velocidad del reloj se puede cambiar a cualquier frecuencia deseada (dentro de lo razonable), ¿cómo lo hace físicamente ?

alex.forencich
fuente
1
Como indica la respuesta de alex, la frecuencia de la CPU de escritorio moderna no es continuamente variable. Normalmente va en pasos de 100 o 133 MHz. (Relacionado: ¿cómo decide una CPU x86 moderna cuándo cambiar las frecuencias, para "turbo" por encima de la velocidad nominal máxima, o si el sistema operativo transfiere el control total de la administración de energía a la CPU (Intel Skylake): SKL tiene un morir microcontrolador con tantos transistores como un 486, solo para tomar decisiones de frecuencia: ¿Por qué este ciclo de retardo comienza a correr más rápido después de varias iteraciones sin dormir?
Peter Cordes

Respuestas:

21

Esto se hace usando un dispositivo llamado bucle de fase bloqueada o PLL. Aquí hay un diagrama de bloques de un PLL básico:

esquemático

simular este circuito : esquema creado con CircuitLab

El oscilador en la placa base no funciona a la frecuencia del reloj de la CPU, sino que funciona a una frecuencia del orden de 100 MHz. Este oscilador sirve solo como una frecuencia de referencia estable conocida. Dentro de la CPU, la frecuencia de reloj real será generada por un oscilador controlado por voltaje o VCO. El VCO se puede sintonizar para generar frecuencias en un rango relativamente amplio, pero por sí solo no es particularmente estable o preciso: para un voltaje de control dado, la frecuencia variará de una parte a otra y con el voltaje y la temperatura de suministro. Un bucle de bloqueo de fase sirve para bloquear la frecuencia de salida de VCO en una relación específica con la frecuencia de referencia.

fPFD=fref/D=fout/Mfout=frefM/D

Por ejemplo, suponga que la frecuencia de referencia es de 100 MHz, la referencia se divide por 1 (D) y el VCO se divide por 30 (M). Esto daría como resultado una frecuencia de salida de 100 MHz * 30/1 = 3 GHz. Esta relación se puede cambiar simplemente cambiando la configuración del divisor, que se puede hacer en el software a través de registros de control. Tenga en cuenta que cambiar la frecuencia sobre la marcha puede no ser tan simple como simplemente cambiar los valores del divisor, la frecuencia debe cambiarse de tal manera que se asegure de que la CPU no vea ningún 'fallo' o pulso de reloj demasiado corto. Puede ser necesario usar 2 PLL y cambiar entre ellos, o detener temporalmente el reloj o cambiar a otra fuente de reloj hasta que el PLL se estabilice en la nueva frecuencia.

Los PLL se utilizan en todo el lugar para generar frecuencias precisas y fácilmente ajustables a partir de referencias fijas y estables. Su tarjeta Wi-Fi y su enrutador Wi-Fi los utilizan para seleccionar el canal apropiado generando lo que se llama la frecuencia del oscilador local, una señal utilizada internamente en la radio para convertir y convertir los datos modulados. Lo más probable es que su radio FM use una para habilitar el control del software sobre la frecuencia de recepción, lo que permite una fácil recuperación de diferentes estaciones. Los PLL también se utilizan para generar las señales de reloj de alta frecuencia utilizadas para controlar los serializadores y deserializadores para Ethernet, PCI express, ATA en serie, Firewire, USB, DVI, HDMI, DisplayPort y muchos otros protocolos en serie modernos.

alex.forencich
fuente
7

Además de las respuestas anteriores ...

Su micro STM casi seguramente tiene el segundo oscilador para el reloj en tiempo real. Esto permite que el reloj siga funcionando (consumiendo una potencia mínima) mientras el resto del chip y el resto del circuito están apagados. Luego, el dispositivo puede mantener funcionando su reloj y su calendario, y normalmente también puede reiniciar el procesador principal en un temporizador, todo lo útil para dispositivos integrados.

Graham
fuente
El reloj en tiempo real suele ser mucho más lento que el reloj principal (32kHz es típico), y debido a esto, el oscilador del reloj en tiempo real y la circuitería conectada pueden tener un consumo de corriente muy bajo.
mkeith
@mkeith La baja velocidad de reloj es importante, claro, pero predominantemente porque casi todo el procesador está apagado.
Graham
Graham, la pregunta original es por qué hay dos osciladores. En principio, podría tener un apagado parcial con un solo oscilador y así ahorraría mucha energía. La razón por la que hay un segundo oscilador de menor velocidad es porque el consumo dinámico de energía está correlacionado linealmente con la frecuencia del reloj. Por lo tanto, el consumo dinámico de energía de un circuito de 32 kHz será aproximadamente 300 veces menor que el consumo dinámico de energía de un circuito de 10 MHz. La velocidad reducida del reloj es una parte importante de la respuesta, en mi opinión.
mkeith
@mkeith No es "en principio": así es exactamente como funciona en cada chip con un RTC. Por supuesto, la parte RTC utiliza un oscilador de menor velocidad para ahorrar velocidad. Pero la parte RTC nunca usa el reloj oscilador más rápido: es un circuito completamente separado en la misma pieza de silicio; e igualmente el resto del chip nunca usa el reloj oscilador más lento. El RTC en sí usa menos energía al funcionar a una velocidad de reloj más lenta, claro, pero todo el resto del chip está 100% apagado y está tomando corriente cero (bueno, nanoamperios de corriente de fuga, pero eso es todo).
Graham
1
@mkeith Claro, y estoy de acuerdo (aunque la frecuencia de los cristales RTC proviene históricamente de los movimientos electromecánicos de cuarzo en los relojes y relojes, no del ahorro de energía en la electrónica). Solo quería aclarar para el OP que el reloj más lento no es para un modo de "baja potencia" en el procesador principal, es para un periférico completamente separado.
Graham
0

muy cuidadosamente !

ingrese la descripción de la imagen aquí

Las CPU tienen preescalares de programación binaria y un PLL con VCO para controlar el contador de modo que multiplique el reloj FSB del bus frontal (digamos 100MHz).
Este modo dinámico de ahorro de energía se selecciona automáticamente cuando el uso de la CPU es bajo con los controladores de CPU, CPU, SO y BIOS correctos.

Mi i7 (8cpu) va de 3101 MHz a 800 MHz e instantáneamente los pasos 1100, 1300,1500 ... etc.

Si la BIOS elige x31 como en mi caso, entonces la CPU funciona a 100MHz x 3100MHz y con un contador binario en la CPU, elija de x8 a x15 para reducir la potencia de la CPU al mismo tiempo que regula el voltaje del chip de la CPU en 0.9V región todo para conservar el poder.

Puedo mostrar con mi cursor en la esquina superior derecha en Win8.1 junto con CPU% y memoria%

ingrese la descripción de la imagen aquí

Tony Stewart Sunnyskyguy EE75
fuente