A computer system has a memory controller that includes read buffers
coupled to a plurality of memory channels. The memory controller
advantageously eliminates the inter-channel skew caused by memory modules
being located at different distances from the memory controller. The
memory controller preferably includes a channel interface and
synchronization logic circuit for each memory channel. This circuit
includes read and write buffers and load and unload pointers for the read
buffer. Unload pointer logic generates the unload pointer and load pointer
logic generates the load pointer. The pointers preferably are free-running
pointers that increment in accordance with two different clock signals.
The load pointer increments in accordance with a clock generated by the
memory controller but that has been routed out to and back from the memory
modules. The unload pointer increments in accordance with a clock
generated by the computer system itself. Because the trace length of each
memory channel may differ, the time that it takes for a memory module to
provide read data back to the memory controller may differ for each
channel. The "skew" is defined as the difference in time between when the
data arrives on the earliest channel and when data arrives on the latest
channel. During system initialization, the pointers are synchronized.
After initialization, the pointers are used to load and unload the read
buffers in such a way that the effects of inner-channel skew is
eliminated.
Un sistema informático tiene un regulador de la memoria que incluya los almacenadores intermediarios leídos juntados a una pluralidad de canales de la memoria. El regulador de la memoria elimina ventajoso la posición oblicua entre canales causada por los módulos de la memoria que son situados en diversas distancias del regulador de la memoria. El regulador de la memoria incluye preferiblemente una interfaz de canales y un circuito de lógica de la sincronización para cada canal de la memoria. Este circuito incluye leído y escribe almacenadores intermediarios y la carga y descarga los indicadores para el almacenador intermediario leído. Descargue la lógica del indicador genera el indicador del descargar y la lógica del indicador de la carga genera el indicador de la carga. Los indicadores son preferiblemente los indicadores free-running que incrementan de acuerdo con dos diversas señales del reloj. Los incrementos del indicador de la carga de acuerdo con un reloj generado por el regulador pero ése de la memoria se han encaminado hacia fuera y trasero de los módulos de la memoria. Los incrementos del indicador del descargar de acuerdo con un reloj generado por el sistema informático sí mismo. Porque la longitud del rastro de cada canal de la memoria puede diferenciar, el tiempo que toma para que un módulo de la memoria proporcione datos leídos de nuevo al regulador de la memoria puede diferenciar para cada canal. La "posición oblicua" se define como la diferencia en tiempo entre cuando los datos llegan en el canal más temprano y cuando los datos llegan en el canal más último. Durante la inicialización de sistema, se sincronizan los indicadores. Después de la inicialización, los indicadores se utilizan para cargar y para descargar los almacenadores intermediarios leídos de una manera tal que los efectos de la posición oblicua del interno-canal se eliminen.