¿Cómo se comunican entre sí los dispositivos con diferentes relojes externos en una placa base?

No tengo ningún conocimiento práctico sobre circuitos electrónicos. Actualmente soy un programador de software de alto nivel y recién empiezo a aprender sobre hardware de computadoras y electrónica.

Básicamente, entiendo que cada dispositivo tiene su propia frecuencia interna pero usan una frecuencia externa para comunicarse con otros dispositivos como la CPU y viceversa a través de un "bus".

Y sé que la placa base también tiene su propio reloj.

Lo que no puedo darme cuenta es cómo estos dispositivos pueden comunicarse entre sí si tienen un reloj diferente y cómo sucede exactamente esta comunicación. ¿Qué es un ciclo de reloj y qué tiene que ver el "reloj de la placa base" con él? ¿Qué sucede si uso una CPU de 1000 Mhz con una memoria de 1333 Mhz?

Todas las explicaciones de internet varían y no son muy claras. Sé que cuando empiece a estudiar ingeniería eléctrica desde el principio todo esto se aclarará automáticamente, pero por ahora necesito tener una idea precisa de cómo funciona todo.

Mediante el uso de protocolos síncronos.

Respuestas (2)

Hay dos formas diferentes en que los chips de una placa base se comunican entre sí: comunicación síncrona y comunicación asíncrona.

Comunicación síncrona

La mayoría de las placas base tienen un generador de reloj que controla una señal de reloj global que sincroniza la memoria, la CPU y algunos otros chips. Se prueba que la llamada "memoria DDR3-1333" funciona hasta 166,7 Mhz. Cuando se conecta a una placa base que funciona con un reloj de memoria de 100 MHz, esa memoria en realidad funciona a 100 Mhz y funciona bien con una CPU con un reloj de memoria de 100 MHz. (Esa memoria no tiene un reloj interno de 166,7 MHz). Si alguien cambiara la frecuencia del reloj global (la mayoría de las placas base modernas permiten que una persona cambie fácilmente la frecuencia con una configuración de BIOS), entonces la memoria se ejecutaría a cualquier frecuencia que el generador de reloj envíe al chip de memoria.

Me recuerda a los neumáticos de un automóvil de 130 mph. En realidad, no funcionan a 130 mph todo el tiempo. Algo más controla la velocidad real a la que se mueve la llanta, y la llanta está diseñada para manejar cualquier velocidad que se le solicite, siempre que esa velocidad no supere las 130 mph.

Comunicación asíncrona

Por una variedad de razones, muchos dispositivos en una placa base típica funcionan a una velocidad de reloj diferente de la señal de reloj global de la placa base similar a un metrónomo.

Algunos de esos dispositivos, como muchas CPU modernas, tienen un oscilador interno sincronizado en fase para oscilar a cierta frecuencia que es una proporción fija de pequeños números enteros en relación con la señal de reloj global de la placa base.

Otros de esos dispositivos, como el chip del reloj en tiempo real , tienen su propio oscilador de cristal completamente independiente del oscilador de cristal conectado al generador de reloj. (La relación de sus frecuencias a menudo no es un número racional y, a veces, se desvía lentamente).

Si bien algunos investigadores han construido CPU sin reloj , casi todas las CPU comerciales son completamente síncronas o globalmente asíncronas localmente síncronas (GALS).

Cuando dos dispositivos con diferentes osciladores (o dos dominios de reloj diferentes en un chip GALS) necesitan transferirse datos entre sí, entiendo que las 3 técnicas más populares para el cruce de dominios de reloj son:

  • La fuente de datos envía un "reloj de bus" similar a un metrónomo que es menos de la mitad de la velocidad del reloj utilizada por el destino (ya sea el reloj real de la fuente de datos, si es lo suficientemente lento, o alguna señal más lenta derivada del reloj). de la fuente de datos) que le dice al destino cuándo tomar los datos en las líneas de datos. El destino registra el "reloj del bus" y las líneas de datos, y acepta los nuevos datos en el borde acordado de la señal del reloj. La fuente de datos mantiene las líneas de datos constantes antes y después de ese borde de "reloj", el tiempo suficiente para que, sin importar la frecuencia de reloj relativa de la fuente y el destino, se enganchen los datos correctos.
  • La fuente de datos usa código gris para los datos que pasan entre los dominios de reloj , de modo que no importa cuándo el destino obtiene los datos (justo antes, durante o justo después de un cambio), el destino ve datos válidos.
  • La fuente de datos utiliza algún protocolo de comunicación asincrónica que generalmente establece datos en algunos cables, luego establece algún cable que indica que los datos están listos. La fuente de datos mantiene esas líneas de datos constantes hasta que recibe una señal del receptor que indica que el receptor ha recibido esos datos y está listo para el siguiente.
Critica de 2022: la mayoría de las CPU tienen un generador de reloj interno de 100 MHz en estos días. Así que las placas base baratas/populares ($100) no tienen reloj. Las placas base más caras ($ 250) vienen con un generador de reloj externo que permite un control preciso al hacer overclocking.

Bueno, en general, para que dos chips se comuniquen entre sí, existe un acuerdo sobre la frecuencia a la que se ejecutará la interfaz. Para su caso de memoria, la interfaz de memoria se ejecutaría a 1333 MHz, y mientras que la CPU solo funciona a 1 Ghz, la interfaz de memoria en ese chip de CPU está diseñada para funcionar a 1333 MHz.

A partir de ahí tienes dos problemas interesantes. Imagínese si la interfaz de memoria fuera de 1 GHz pero la CPU fuera solo de 100 MHz. Quizás este sistema solo necesite un acceso lento a la memoria para que no use todo su potencial, si necesitara ese ancho de banda de memoria, simplemente podría traer un bus interno mucho más amplio desde la CPU a su controlador de memoria. Digamos que internamente mueve datos a 256 bits, pero el bus de memoria externa tiene solo 32 bits de ancho. Solo como ejemplo.

Esto también trae a colación otra cuestión de dominio de reloj cruzado. Si sus relojes son todos múltiplos sincrónicos entre sí derivados de una fuente común, digamos que el oscilador de la CPU, esto no es un problema. Pero si, en cambio, los relojes se ejecutan en no múltiplos o de otro modo asíncronos entre sí, puede encontrarse con problemas de dominio de reloj cruzado. Aquí debe usar las técnicas adecuadas para garantizar que los datos y los comandos se muevan limpiamente de un dominio de reloj a otro o podría terminar con datos faltantes o corruptos o problemas de metaestabilidad.

Consulte CDC o cross clock domain como término de búsqueda para obtener más información al respecto.

¿Qué es el reloj de la placa base?
@ ropbla9 Por lo general, en una placa base de PC hay un circuito de oscilador maestro del que se derivan casi todas las demás señales de reloj necesarias (más comúnmente usando división de frecuencia digital).
@LorenzoDonati, entonces, ¿qué es un ciclo de reloj?
Google: en una computadora, el ciclo del reloj es el tiempo entre dos pulsos adyacentes del oscilador que establece el tempo del procesador de la computadora.
@ ropbla9 Agregando a lo que dijo SomeHWGuy. Una señal de reloj suele ser una señal periódica de dos niveles (una onda cuadrada). Un período de esa señal también se conoce como ciclo de reloj .