Debido a que las trazas físicas en una placa de circuito pueden causar retrasos en la señal que superan las tolerancias de tiempo de la memoria de alta velocidad, los sistemas DDR3 y DDR4 deben someterse a un proceso de calibración en cada arranque para alinear los datos con el reloj del sistema. Este proceso, documentado en el proyecto LiteDRAM, compensa el hecho de que diferentes chips de memoria en el mismo rango reciben la señal de reloj en momentos ligeramente distintos debido a su distancia física desde el controlador.

Una tabla técnica que muestra los parámetros de la interfaz de memoria y las especificaciones de tiempo.
Especificaciones técnicas para los parámetros de tiempo y configuración de la interfaz de memoria.github.com

Esta tabla proporciona parámetros técnicos específicos relacionados con las configuraciones de la interfaz de memoria discutidas en el artículo.

El desafío de la topología Fly-By

Las interfaces de memoria DDR3 y DDR4 utilizan una topología fly-by para los pines de reloj, comando y dirección. En este diseño, las señales pasan por cada chip de memoria por turnos antes de llegar a un punto de terminación, lo que mantiene limpias las señales con alta carga a altas velocidades.

Terminación y fuerza de unidad predeterminada DDR3/DDR4: DDR3 RTT_NOM 60 ohm; DDR4 RTT_NOM 40 ohm; DDR3 RTT_WR 60 ohm; DDR4 RTT_WR 120 ohm
Terminación y fuerza de unidad predeterminada DDR3/DDR4github.com

Gráfico elaborado por HN Digest a partir de cifras reportadas por github.com; los valores se muestran como en la fuente.

La desventaja es que cada chip recibe el reloj un poco más tarde que el anterior. Debido a que los carriles de datos son punto a punto, sus retrasos no siguen el reloj, creando un desajuste entre el primer y el último chip que puede exceder un solo periodo de reloj.

“Con el enrutamiento fly-by, el desajuste entre el primer y el último chip puede exceder un periodo de reloj, por lo que cada carril necesita su propio retraso DQS.”

— litedram/doc/manual/03_dram_interface.md at master · enjoy-digital/litedram

Nivelado de escritura y calibración de latencia

Para corregir los desajustes de fly-by, el controlador realiza un 'nivelado de escritura'. Pone a la DRAM en un modo especial y envía pulsos DQS, midiendo el retraso hasta que la DRAM devuelve una transición de bit específica. El controlador luego ajusta los retrasos de salida para cada carril hasta que el DQS esté perfectamente alineado con el reloj (CK) en ese chip específico.

Una tabla de datos que detalla las configuraciones de hardware de memoria y las características de la señal.
Tabla de datos detallada que ilustra las configuraciones de hardware de memoria y las características de la señal.github.com

Esta tabla apoya la discusión de configuraciones de hardware específicas y comportamientos de señal en sistemas de memoria de alta velocidad.

Más allá de la alineación, el sistema también debe calibrar la latencia de escritura y el entrenamiento DQ-DQS. Esto asegura que un carril no esté un ciclo de reloj completo antes o después, y que los datos (DQ) estén centrados frente al pulso de reloj (DQS) durante la operación de escritura.

Nivelado de lectura y el ojo de datos

En el lado de la lectura, el controlador no sabe exactamente cuándo llegarán los datos porque los retrasos de la placa y de E/S difieren por carril. El nivelado de lectura encuentra dos ajustes para cada carril: un 'bitslip' grueso para alinear la palabra con el ciclo de reloj correcto, y un retraso de entrada fino para encontrar el 'ojo de datos'.

El ojo de datos es la ventana donde la primera palabra de una lectura llega a la posición de bit correcta. Una ventana amplia indica una interfaz robusta, mientras que una ventana estrecha sugiere problemas de integridad de señal o de reloj. En algunos hardwares, como los PHY de Lattice y Gowin, el sistema también debe usar un 'burst detect' para identificar cuándo la DRAM está enviando datos realmente.

Un gráfico o tabla técnica que muestra los datos de tiempo y nivelado de memoria.
Una visión técnica general de los puntos de datos de tiempo y nivelado de memoria.github.com

Este recurso visual proporciona contexto adicional para las mediciones de nivelado de lectura y del ojo de datos descritas en el texto.

Restricciones de hardware y compensaciones

No todo el hardware soporta el mismo nivel de calibración. Por ejemplo, el FPGA Artix-7 carece de los retrasos de salida necesarios para el nivelado de escritura estándar en todos los carriles, lo que obliga al sistema a usar una fase DQS estática o un modo de cambio de fase de CK.

Además, aunque el PHY UltraScale+ puede establecer el VREF (voltaje de referencia) de lectura del FPGA en pasos, el BIOS de LiteDRAM actualmente deja este valor en el valor de compilación a menos que sea ajustado manualmente por software. Estas limitaciones resaltan cómo las restricciones físicas del hardware dictan directamente las configuraciones de memoria soportadas.