¿Cómo se mide el tiempo en los sistemas informáticos?

13

Algo que me ha intrigado es esto: ¿cómo regula exactamente una computadora y dice la hora? Por ejemplo: si tuviera que escribir un programa que hiciera esto:

Haz 2 + 2 y luego espera 5 segundos

¿Cómo sabe el procesador qué son "5 segundos"? ¿Cómo se mide el tiempo en los sistemas informáticos? ¿Hay un chip específico para ese único propósito? ¿Como funciona?

Gracias por cualquier respuesta; Estoy realmente interesado en informática, y me encantaría cualquier ayuda que me puedan dar = D.

DRK3
fuente
2
Aquí hay una explicación fácil de leer y comprender cómo lo hacen las computadoras: eecis.udel.edu/~ntp/ntpfaq/NTP-s-sw-clocks.htm Aquí hay una explicación opcional de la precisión de un reloj de computadora: ntp.org/ ntpfaq / NTP-s-sw-clocks-quality.htm
Synetech

Respuestas:

13

Si bien la respuesta de Joel es correcta, en realidad es un poco más complicada.

Lo primero que debe tenerse en cuenta (y me centraré solo en las PC aquí) es que hay varios relojes en una computadora y cada uno tiene su propio uso.

Lo más popular y fácil de entender es el reloj en tiempo real . Básicamente es un chip que tiene un reloj simple en su interior. Por lo general, tienen el mismo tipo de cristales de cuarzo que los relojes estándar y generalmente tienen una batería para controlar el tiempo cuando la computadora está apagada. El problema con ellos es que no son muy precisos, como se puede ver en los enlaces de Syntech. El cristal de 32.768 kHz es demasiado lento para cualquier cronometraje en sistemas modernos cuyos procesadores están en el rango de megahercios y gigahercios.

Aquí llegamos al siguiente punto: hay relojes internos utilizados para mediciones de tiempo precisas y cuenta regresiva.

Un reloj simple es un temporizador de intervalo programable . Lo que hace es esperar una cierta cantidad de tiempo y luego enviar una interrupción a la CPU. Cuando la CPU recibe la interrupción, detendrá lo que esté haciendo y atenderá la tarea que generó la interrupción. De esta manera, la CPU no tiene que verificar constantemente si se hace algo. En cambio, puede enfocarse en otros trabajos y hacer que el PIT le avise cuando el trabajo esté terminado. El PIT utiliza una fuente de reloj de 1.193182 MHz y, por lo tanto, es mucho más preciso que el RTC simple.

El siguiente sistema de medición interesante es el contador de sello de tiempo . La idea detrás de esto es que podemos obtener mediciones de tiempo mucho más precisas usando la fuente de reloj del procesador que usando varios temporizadores del sistema. PIT tiene un reloj de 1.193182 MHz, pero incluso los primeros procesadores x86 tenían un reloj mucho más alto. Entonces tendremos un temporizador que se actualiza después de cada cantidad establecida de ciclos de procesador. En ese momento, los procesadores tenían relojes muy estables y el uso de TSC era una buena manera de hacer mediciones precisas de tiempo. Sin embargo, el uso de TSC trae una serie de problemas. Los diferentes procesadores tienen diferentes velocidades de medición y miden el tiempo a diferentes velocidades. Más adelante, a medida que la tecnología avanzó, obtuvimos procesadores modernos que pueden cambiar su frecuencia. Ese es un problema importante, ya que el reloj de la CPU ya no es constante y no podemos usarlo para medir el tiempo.

Y es por eso que tenemos temporizadores de eventos de alta precisión ahora. HPET utiliza un reloj de 10 MHz y, por lo tanto, es más preciso que PIT. Por otro lado, su fuente de reloj no depende del reloj de la CPU y puede usarse para medir el tiempo incluso si el reloj de la CPU cambia. A diferencia de PIT, que funciona como cuenta regresiva, HPET mide el tiempo desde que se encendió la computadora y compara el tiempo actual cuando se necesita una acción.

Hay otras fuentes de tiempo disponibles para computadoras que creo que deben mencionarse. Algunas computadoras están conectadas a relojes atómicos y pueden usarlas para medir con precisión el tiempo.

Una opción menos costosa y mucho más común es usar una fuente de tiempo externa para calibrar las fuentes de tiempo internas de la computadora. Por ejemplo, los receptores GPS se pueden utilizar para proporcionar mediciones de tiempo de alta precisión, porque los satélites GPS tienen sus relojes atómicos internos.

Otra opción que es menos común que el receptor GPS es utilizar un receptor de radio especial que decodifica la información de tiempo de las estaciones de radio que mantienen el tiempo, como DCF77, por ejemplo. Dichas estaciones de tiempo tienen sus propias fuentes de tiempo de alta precisión y transmiten su salida por radio. Como las ondas de radio viajan a la velocidad de la luz, el retraso a menudo es insignificante.

AndrejaKo
fuente
1
Gran respuesta. No sabía que los satélites GPS tenían sus propios relojes atómicos a bordo. Resulta que cada uno de los 24 tiene 4 relojes atómicos, cada uno de acuerdo con este artículo: science.nasa.gov/science-news/science-at-nasa/2004/…
deltaray
2
Respuesta muy detallada! ¡Gracias por tomarse el tiempo de escribir todo eso!
DRK3
1
Especialmente interesante es el poco acerca de cómo los relojes dependían de la velocidad del reloj de la CPU, pero ver cómo las velocidades del reloj de la CPU son variables hoy en día, eso se convierte en un problema. Gracias de nuevo.
DRK3
@ DRK3 Aquí hay un gran video sobre relojes atómicos: wimp.com/atomicclock
Griffin
1
Esta respuesta confunde de alguna manera las nociones de "precisión", "precisión" y "resolución". En el lenguaje de la instrumentación, "precisión" se refiere a la repetibilidad de una medición. Un instrumento puede ser muy preciso sin serlo, si no se ha calibrado correctamente. (Sin embargo, no puede ser preciso si no lo es). Y solo porque HPET marca 10 millones de veces por segundo, por lo tanto tiene una resolución más alta, no garantiza que sea más preciso que algo que funciona cada milisegundo más o menos.
Jamie Hanrahan
11

IIRC, hay un pequeño cristal que vibra a una frecuencia específica cuando una corriente eléctrica pasa a través de él. Cada movimiento se cuenta y un número específico de ellos activa un ciclo de reloj.

Joel Coehoorn
fuente
3
Creo que todavía es cuarzo. (Incluso puede ver el pequeño rectángulo redondeado de metal estampado con “14MHz” o “14.3MHz”, o alguna otra frecuencia, que contiene un cristal de cuarzo en la placa base.)
Synetech
¡Gracias por la respuesta! No tenía idea de que se usa un cristal (cuarzo).
DRK3
1
No siempre usan un cristal de cuarzo. Algunos microcontroladores muy económicos usan un "resonador de cerámica" en su lugar. Incluso la sincronización impulsada por cristal de cuarzo en las placas base de productos básicos no es tan precisa (es decir, su sincronización puede variar). Generalmente no son mejores que un reloj digital típico.
Jamie Hanrahan
Muy simple respuesta! ¿Es esto lo que sucede también en los relojes de cuarzo?
Nicolas Barbulesco