¿Son estrictamente periódicos los tics del reloj de la CPU?

51

¿Es la frecuencia de una CPU un valor medio de aproximadamente cuántos tics de reloj hay en un segundo o tiene una estabilidad física más fuerte?

En mi opinión, no debe ser estable ni inestable. Entonces, ¿hay alguna información disponible sobre la variación de una CPU?

¿La duración del ciclo de una CPU está estrictamente sincronizada con la vibración del cristal? ¿O la CPU solo tiene que asegurarse de lograr un ciclo antes del próximo tic?

gaélico
fuente
77
Hay muchos tipos diferentes de CPU. La mayoría usa un cristal que vibra a una frecuencia específica para cronometrarse. Lo que significa que la mayoría son tan precisos como un reloj de pulsera digital (que usa el mismo tipo de cristal para mantener la hora). en.wikipedia.org/wiki/Crystal_oscillator
krowe
55
@Gael algunas instrucciones toman cientos de tics, o ciclos de reloj , para completar.
misha256
1
@Gael: Además, es bastante común que las CPU se desaceleren o aceleren, y lo hacen con bastante frecuencia. Aunque no sé exactamente cómo se relaciona eso con las garrapatas.
Mooing Duck
18
¿Votar para cerrar esto como buscar recomendaciones de producto, servicio o material de aprendizaje ? ¿En serio, gente?
un CVn
30
Esta es una pregunta legítima que busca aclarar cómo funciona el hardware.
studiohack

Respuestas:

49

Como cualquier cosa complicada, puede describir la forma en que funciona una CPU en varios niveles.

En el nivel más fundamental, una CPU es impulsada por un reloj preciso. La frecuencia del reloj puede cambiar; Piense en el SpeedStep de Intel. Pero en todo momento la CPU está 100% bloqueada a la señal del reloj.

Las instrucciones de la CPU operan a un nivel mucho más alto. Una sola instrucción es algo complejo y puede tomar desde menos de un ciclo hasta miles de ciclos para completarse como se explica aquí en Wikipedia .

Entonces, básicamente, una instrucción consumirá cierto número de ciclos de reloj . En las CPU modernas, debido a tecnologías como núcleos múltiples, HyperThreading, canalización, almacenamiento en caché, fuera de orden y ejecución especulativa, el número exacto de ciclos de reloj para una sola instrucción no está garantizado, y variará cada vez que emita dicha instrucción. !

EDITAR

¿Hay alguna información disponible sobre la variación para una CPU específica?

Si y no. El 99,99% de los usuarios finales están interesados ​​en el rendimiento general , que puede cuantificarse ejecutando varios puntos de referencia.

Lo que está pidiendo es información altamente técnica. Intel no publica información completa o precisa sobre la latencia / rendimiento de las instrucciones de la CPU .

Hay investigadores que se han encargado de resolver esto. Aquí hay dos archivos PDF que pueden ser de interés:

Lamentablemente, es difícil obtener datos de variación . Citando del primer PDF:

los números listados son valores mínimos. Las fallas de caché, la desalineación y las excepciones pueden aumentar considerablemente el conteo del reloj.

Interesante lectura sin embargo!

misha256
fuente
1
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Sathyajith Bhat
44
Muy agradable. Por supuesto, But at all times the CPU is absolutely 100% locked to the clock signalsolo se aplica a las CPU síncronas. Es una tontería hablar de ticks en una CPU asíncrona (sin reloj), pero me pareció una omisión :)
Luaan
1
@Luaan: cierto. Creo que las verdaderas CPU asíncronas siguen siendo bastante raras, pero existen (o existieron en el pasado). Sin embargo, solo es realmente relevante para los investigadores y los expertos en hardware.
Daniel R Hicks
@DanielRHicks Eran de cierto interés para los dispositivos integrados (hay algunas CPU asíncronas MIPS y ARM antiguas), pero sí, no es realmente lo más importante en el mercado de consumo. Después de todo, ¿por qué preocuparse por el consumo de energía de la CPU de un teléfono inteligente cuando hay una pantalla con mucha energía justo al lado? Sin embargo, el ahorro de energía (y otras características) podría ser muy bueno para algunas otras aplicaciones: el IBM SyNAPSE parece un proyecto genial para fines científicos.
Luaan
@Luaan: el punto interesante, cuando se inventaron por primera vez, era que la computadora funcionaba exactamente tan rápido / lento como era necesario para realizar el cálculo. Pero esquemas de reloj más elaborados básicamente lograron lo mismo, más o menos.
Daniel R Hicks
29

¿Son estrictamente periódicos los tics del reloj de la CPU?

Por supuesto no. Incluso los mejores relojes no son estrictamente periódicos. Las leyes de la termodinámica dicen lo contrario:

  • Ley Zeroth: Hay un pequeño juego desagradable que el universo juega contigo.
  • Primera ley: no puedes ganar.
  • Segunda ley: Pero podrías llegar a un punto de equilibrio, en un día muy frío.
  • Tercera ley: nunca hace tanto frío.

Los desarrolladores de los mejores relojes intentan superar las leyes de la termodinámica. No pueden ganar, pero están muy, muy cerca de alcanzar el punto de equilibrio. ¿El reloj de tu CPU? Es basura en comparación con esos mejores relojes atómicos. Es por eso que existe el Protocolo de tiempo de red .


Predicción: Una vez más veremos un poco de caos cuando los mejores relojes atómicos del mundo pasen de 2015 30 de junio a las 23:59:59 UTC a 2015 30 de junio a las 23:59:60 UTC a 2015 1 de julio de 2015 00:00:00 UTC. Demasiados sistemas no reconocen los segundos bisiestos y tienen su nivel de seguridad establecido en dos (lo que impide un cambio de tiempo de más de un segundo). La fluctuación del reloj en esos sistemas significa que se rechazará el segundo salto de protocolo de tiempo de red. Varias computadoras se arruinarán, como lo hicieron en 2012.

David Hammen
fuente
99
+1, divertido e informativo. Y el tema de Leap Second también es una buena lectura.
jimm-cl
99
Bueno, IIRC, el wa-belly-up wa causó porque las rutinas del reloj del núcleo eran conscientes de la posibilidad de segundos intercalares, pero implementaron el ajuste como una llamada a una rutina de ajuste del reloj que no se podía llamar mientras el reloj ya estaba ajustado ... Y, por supuesto, el reloj del sistema no tiene nada que ver con el reloj de la CPU.
Hagen von Eitzen
1
Jajaja, genial. Tengo que agregar algo a su observación "El reloj de la CPU es basura en comparación con los relojes atómicos" : ¡De hecho! Pero todo es muy subjetivo, por no mencionar relativo. Podemos maravillarnos con la precisión superior de nuestros mejores relojes atómicos, pero en algún lugar (fuera de nuestra acogedora realidad) puede haber tecnología que haga que nuestros relojes atómicos se vean como "basura" :-p
misha256
2
@ misha256 la realidad es que no puede haber un reloj preciso . El tiempo es relativo.
Keltari
El reloj de la CPU puede ser basura, pero no hay nada como permitir que un registro de 8 bits se desborde solo para darle algo de tiempo al controlador de pantalla de 7 segmentos en un estado desconocido para aumentar sus instrucciones antes de emitir el siguiente. No necesitamos cristales para eso. O incluso más importante, no hay nada como esperar un nanosegundo para que la ALU complete su cálculo antes de guardar sus resultados en un registro (o en un bus que conduce a una ALU diferente).
John Dvorak
22

Alrededor de 2000, cuando las velocidades de reloj de las CPU comenzaron a entrar en el rango donde también operaban los teléfonos móviles, se hizo común agregar una variación a la velocidad real del reloj. La razón es simple: si el reloj de la CPU es exactamente 900 Mhz, toda la interferencia electrónica se genera a esa frecuencia. Varíe un poco la frecuencia del reloj entre 895 y 905 Mhz, y la interferencia también se distribuye en ese rango.

Esto fue posible porque las CPU modernas están limitadas por el calor. No tienen problemas para correr un poco más rápido durante un corto período de tiempo, ya que pueden enfriarse cuando el reloj se ralentiza más tarde.

MSalters
fuente
13
En el BIOS, a menudo verá esta opción descrita como "Spread Spectrum"
Mark Sowul, del
1
He leído que en las CPU multinúcleo los núcleos también usan relojes compensados ​​porque ayuda a evitar el ruido de la radio, ayuda con la distribución de energía y evita que los núcleos construyan armónicos.
Zan Lynx
3
@ MarkSowul gracias, finalmente alguien que dice el uso práctico de este "espectro extendido".
22

Diseñador de lógica digital aquí. El tiempo real que tarda una red lógica en cambiar en respuesta a una señal de entrada es el retraso de propagación . Piense en el sistema como:

registers A,B,C... ---> logic cloud ---> registers A',B',C'

El "reloj de lanzamiento" es el borde del reloj en el que cambia el primer conjunto de registros. El "reloj de captura" es el siguiente borde del reloj un período después. Para que el sistema funcione, la salida de la nube lógica debe ser estable antes de que llegue el reloj de captura.

El proceso para asegurarse de que esto funcione es el análisis de tiempos. Utilizando una simulación del sistema basada en la física, calcule el peor momento de llegada de cualquier entrada a cualquier salida. El mayor de estos números en todo el sistema establece el período de reloj mínimo.

Tenga en cuenta el peor de los casos . El tiempo de propagación real será más corto, pero depende de la variación del proceso de fabricación, la temperatura actual y el voltaje del chip ( PVT ). Esto significa que, en términos prácticos, puede aplicar un reloj más rápido (overclocking) y puede funcionar. También puede comenzar a producir errores, como decidir 0x1fffffff + 1 = 0x1f000000si el bit de transporte no llega a tiempo.

Los chips también pueden tener más de un reloj a bordo (por lo general, el FSB es más lento que el núcleo), y el reloj real puede aumentar o disminuir para fines de control térmico o variado (la respuesta de MSalter sobre el uso del espectro extendido para pasar las pruebas EMC).

pjc50
fuente
En algunos casos, el reloj de captura puede ser el segundo ciclo o posterior en lugar del siguiente. Algunos diseños suponen que los datos siempre tomarán al menos una cantidad mínima de tiempo (por ejemplo, si se sabe que el retardo de propagación está entre 2.1 y 2.9 ciclos, los datos se podrían generar y los resultados se muestrearían en cada ciclo; cada resultado muestreado reflejaría los datos de 3 ciclos antes); otros diseños más conservadores cambian los datos de salida más lentamente e ignoran el resultado hasta que se garantice que sea estable.
supercat
2

¿La duración de las instrucciones de una CPU está estrictamente sincronizada con la vibración del cristal? ¿O la CPU solo tiene que estar segura de lograr una instrucción antes del próximo tic?

Ninguno. La duración de la instrucción será un número de tics de reloj, pero ese número puede variar según los requisitos de la instrucción. Por ejemplo, si una instrucción no puede avanzar hasta que una ubicación de memoria particular esté en el caché L1, entonces la instrucción no se completará antes del siguiente tictac del reloj. No se avanzará en esa instrucción hasta que eso ocurra.

Pero cuando la CPU decide hacer algo, el método básico por el cual lo hace es configurar sus interruptores internos para que una determinada información vaya a una parte particular de la CPU. Espera a que la entrada llegue a esa porción y la salida llegue a la siguiente porción. Esta porción de espera es el propósito del reloj.

Imagine un circuito físico que toma dos entradas binarias y las suma, generando la suma en algún tercer conjunto de cables. Para hacer una adición, la CPU debe organizar los dos números que se agregarán para llegar a este sumador y las salidas para ir, por ejemplo, a un pestillo de registro de la CPU. La CPU no puede decirle al pestillo que almacene la salida hasta que las entradas lleguen al sumador, el sumador produce la salida y la salida alcanza el pestillo. Este es el propósito del reloj: establecer el tiempo de espera entre organizar la entrada para ir a algún lado y esperar que la salida esté lista para usar.

David Schwartz
fuente