El desfase de reloj (a veces llamado desfase temporal ) es un fenómeno en los sistemas de circuitos digitales sincrónicos (como los sistemas informáticos ) en el que la misma señal de reloj de origen llega a diferentes componentes en diferentes momentos debido a un retardo de propagación de la señal de compuerta o, en una tecnología de semiconductores más avanzada , de cable . La diferencia instantánea entre las lecturas de dos relojes cualesquiera se denomina desfase.
El funcionamiento de la mayoría de los circuitos digitales está sincronizado por una señal periódica conocida como " reloj " que dicta la secuencia y el ritmo de los dispositivos en el circuito. Este reloj se distribuye desde una única fuente a todos los elementos de memoria del circuito, que, por ejemplo, podrían ser registros o flip-flops . En un circuito que utiliza registros activados por flanco, cuando el flanco o tic del reloj llega a un registro, el registro transfiere la entrada del registro a la salida del registro, y estos nuevos valores de salida fluyen a través de la lógica combinacional para proporcionar los valores en las entradas del registro para el siguiente tic del reloj.
Lo ideal es que la entrada de cada elemento de memoria alcance su valor final a tiempo para el siguiente tic del reloj, de modo que se pueda predecir con exactitud el comportamiento de todo el circuito. La velocidad máxima a la que puede funcionar un sistema debe tener en cuenta la variación que se produce entre los distintos elementos de un circuito debido a las diferencias en la composición física, la temperatura y la longitud del recorrido.
En un circuito sincrónico, se dice que dos registros, o flip-flops, son "adyacentes secuencialmente" si una ruta lógica los conecta. Dados dos registros adyacentes secuencialmente R i y R j con tiempos de llegada de reloj a los pines de reloj de registro de origen y destino iguales a T C i y T C j respectivamente, el desfase de reloj se puede definir como: T skew i, j = T C i − T C j .
El desfase de reloj puede deberse a muchos factores diferentes, como la longitud de interconexión de cables, las variaciones de temperatura, las variaciones en los dispositivos intermedios, el acoplamiento capacitivo , las imperfecciones del material y las diferencias en la capacitancia de entrada en las entradas de reloj de los dispositivos que utilizan el reloj. A medida que aumenta la frecuencia de reloj de un circuito, la sincronización se vuelve más crítica y se puede tolerar una menor variación para que el circuito funcione correctamente.
Existen dos tipos de desfase de reloj: desfase negativo y desfase positivo . El desfase positivo ocurre cuando el registro receptor recibe el tic del reloj más tarde que el registro transmisor. El desfase negativo es lo opuesto: el registro transmisor recibe el tic del reloj más tarde que el registro receptor. El desfase de reloj cero se refiere a la llegada del tic del reloj simultáneamente al registro transmisor y receptor. [1]
Existen dos tipos de violación que pueden ser causadas por el sesgo del reloj. Un problema es causado cuando el reloj llega al primer registro y la señal del reloj hacia el segundo registro viaja más lento que la salida del primer registro al segundo registro - la salida del primer registro llega a la entrada del segundo registro más rápido y por lo tanto se sincroniza reemplazando los datos iniciales en el segundo registro, o tal vez destruyendo la integridad de los datos bloqueados. Esto se llama violación de retención porque los datos anteriores no se mantienen el tiempo suficiente en el flip-flop de destino para que se sincronizan correctamente. Otro problema es causado si el flip-flop de destino recibe el tic del reloj antes que el flip-flop de origen - la señal de datos tiene mucho menos tiempo para llegar al flip-flop de destino antes del siguiente tic del reloj. Si no lo hace, ocurre una violación de configuración , llamada así porque los nuevos datos no se configuraron y estabilizaron antes de que llegara el siguiente tic del reloj. Una violación de retención es más grave que una violación de configuración porque no se puede arreglar aumentando el período del reloj. La desviación positiva y la desviación negativa no pueden afectar negativamente las restricciones de tiempo de configuración y mantenimiento respectivamente (ver las desigualdades a continuación).
Cuando una señal sincroniza ampliamente un circuito, las señales o transiciones de estado que inicia deben estabilizarse antes de que envíe señales a otro conjunto de transiciones de estado, y eso limita la frecuencia superior del reloj. Por lo tanto, la desviación disminuye la frecuencia de reloj a la que el circuito funcionará correctamente. Para cada registro de origen y registro de destino conectados por una ruta, se deben respetar las siguientes desigualdades de configuración y retención:
dónde
Los desfases de reloj positivos son buenos para corregir violaciones de configuración, pero pueden causar violaciones de retención. Los desfases de reloj negativos pueden proteger contra una violación de retención, pero pueden causar una violación de configuración.
En las desigualdades anteriores, se utiliza un único parámetro, J , para tener en cuenta el jitter . Este parámetro debe ser un límite superior para la diferencia de jitter en todos los pares de registros de origen/registros de destino. Sin embargo, si se conoce la estructura de la red de distribución de reloj, diferentes pares de registros de origen/registros de destino pueden tener diferentes parámetros de jitter, y se puede utilizar un valor de jitter diferente para la restricción de retención en contraste con el valor para la restricción de configuración. Por ejemplo, si el registro de origen y el registro de destino reciben sus señales de reloj desde un búfer de reloj cercano común , el límite de jitter para esa restricción de retención puede ser muy pequeño, ya que cualquier variación en esa señal de reloj afectará a los dos registros por igual. Para el mismo ejemplo, el límite de jitter para la restricción de configuración debe ser mayor que para la restricción de retención, porque el jitter puede variar de un tic de reloj a otro. Si el registro de origen recibe su señal de reloj desde un búfer de hoja de la red de distribución de reloj que está muy alejado del búfer de hoja que alimenta el registro de destino, entonces el límite de fluctuación tendrá que ser mayor para tener en cuenta las diferentes trayectorias de reloj hacia los dos registros, que pueden tener diferentes fuentes de ruido acopladas a ellos.
Las figuras 1 y 2 ilustran una situación en la que un sesgo intencional del reloj puede beneficiar a un circuito sincrónico. [2] En el circuito de sesgo cero de la figura 1, un camino largo va del flip-flop FF1 al flip-flop FF2, y un camino corto, como un camino de registro de desplazamiento, de FF2 a FF3. El camino FF2 -> FF3 está peligrosamente cerca de tener una violación de retención: si ocurre incluso una pequeña cantidad de retraso de reloj adicional en FF3, esto podría destruir los datos en la entrada D de FF3 antes de que el reloj llegue para sincronizarlos a la salida Q de FF3. Esto podría suceder incluso si FF2 y FF3 estuvieran físicamente cerca uno del otro, si sus entradas de reloj vinieran de diferentes búferes de hoja de una red de distribución de reloj.
La figura 2 muestra cómo se puede solucionar el problema con un sesgo de reloj intencional. Se interpone una pequeña cantidad de retraso adicional antes de la entrada de reloj de FF2, lo que luego coloca de manera segura la ruta FF2 -> FF3 lejos de su violación de retención. Como beneficio adicional, este mismo retraso de reloj adicional relaja la restricción de configuración para la ruta FF1 -> FF2. La ruta FF1 -> FF2 puede funcionar correctamente en un período de reloj que es menor que el requerido para el caso de sesgo de reloj cero, por una cantidad igual al retraso del búfer de retraso de reloj agregado.
Un error muy común sobre el sesgo intencional del reloj es que es necesariamente más peligroso que el sesgo cero del reloj, o que requiere un control más preciso de los retrasos en la red de distribución del reloj. Sin embargo, es el circuito de sesgo cero de la Figura 1 el que está más cerca de funcionar mal: una pequeña cantidad de sesgo positivo del reloj para el par FF2 -> FF3 causará una violación de retención, mientras que el circuito de sesgo intencional de la Figura 2 es más tolerante a las variaciones de retraso no deseadas en la distribución del reloj.
Si los tiempos de llegada del reloj a los registros individuales se consideran como variables que se deben ajustar para minimizar el período del reloj mientras se satisfacen las desigualdades de configuración y retención para todas las rutas a través del circuito, entonces el resultado es un problema de programación lineal . [3] En este programa lineal, el sesgo de reloj cero es simplemente un punto factible: la solución al programa lineal generalmente da un período de reloj que es menor que el que se logra con el sesgo cero. Además, se pueden garantizar márgenes de seguridad mayores o iguales que el caso del sesgo cero al establecer los tiempos de configuración y retención y el límite de fluctuación de manera adecuada en el programa lineal.
Debido a la forma simple de este programa lineal, se encuentra disponible un algoritmo fácilmente programado para llegar a una solución. [2] La mayoría de los sistemas CAD para diseño VLSI y FPGA contienen funciones para optimizar los desfases de reloj.
Además del sesgo de reloj debido a las diferencias estáticas en la latencia del reloj desde la fuente de reloj hasta cada registro sincronizado, ninguna señal de reloj es perfectamente periódica, de modo que el período de reloj o el tiempo de ciclo de reloj varía incluso en un solo componente, y esta variación se conoce como fluctuación de reloj . En un punto particular en una red de distribución de reloj, la fluctuación es el único contribuyente a la incertidumbre de la sincronización del reloj.
Como aproximación, suele ser útil analizar la incertidumbre total de sincronización del reloj entre dos registros como la suma del desfase espacial del reloj (las diferencias espaciales en la latencia del reloj desde la fuente del reloj) y la fluctuación del reloj (es decir, la falta de periodicidad del reloj en un punto particular de la red). Desafortunadamente, el desfase espacial del reloj varía en el tiempo de un ciclo al siguiente debido a variaciones locales dependientes del tiempo en la fuente de alimentación, la temperatura local y el acoplamiento del ruido con otras señales.
Por lo tanto, en el caso habitual de enviar y recibir registros en diferentes ubicaciones, no hay una forma clara de separar la incertidumbre total de la sincronización del reloj en sesgo espacial y fluctuación. Por lo tanto, algunos autores usan el término sesgo de reloj para describir la suma del sesgo espacial del reloj y la fluctuación del reloj. Por supuesto, esto significa que el sesgo del reloj entre dos puntos varía de un ciclo a otro, lo que es una complejidad que rara vez se menciona. Muchos otros autores usan el término sesgo de reloj solo para la variación espacial de los tiempos de reloj y usan el término fluctuación del reloj para representar el resto de la incertidumbre total de la sincronización del reloj. Por supuesto, esto significa que la fluctuación del reloj debe ser diferente en cada componente, lo que nuevamente rara vez se analiza.
Afortunadamente, en muchos casos, la desviación espacial del reloj permanece bastante constante de un ciclo a otro, de modo que el resto de la incertidumbre total de la sincronización del reloj se puede aproximar bien mediante un único valor de fluctuación de reloj común.
En una red como Internet , el desfase de reloj describe la diferencia en frecuencia ( primera derivada del desfase con el tiempo) de diferentes relojes dentro de la red. [4] Las operaciones de red que requieren marcas de tiempo que sean comparables entre hosts pueden verse afectadas por el desfase de reloj. Se han diseñado varios protocolos (por ejemplo, Network Time Protocol ) para reducir el desfase de reloj y producir funciones más estables. Algunas aplicaciones (como los servidores de juegos ) también pueden usar su propio mecanismo de sincronización para evitar problemas de confiabilidad debido al desfase de reloj.
El sesgo de reloj es la razón por la que, a altas velocidades o largas distancias, se prefieren las interfaces seriales (por ejemplo, Serial Attached SCSI o USB ) a las interfaces paralelas (por ejemplo, SCSI paralelo ). [ cita requerida ]