¿Cómo se hace el direccionamiento de DDR3 SDRAM?

Para trabajar en la programación de una SDRAM DDR3, estuve revisando la especificación SDRAM DDR3 estándar de JEDEC (enlace a pdf, página 30).
Me confundí un poco con el direccionamiento DDR3, una instantánea de la cual está debajo.
ingrese la descripción de la imagen aquí
Corríjame si me equivoco. 512Mb corresponde al número total de bits que SDRAM puede almacenar. Puede haber 3 configuraciones en las que se pueden almacenar datos, 128Mb x 4, 64Mb x 8, 32Mb x 16.
El 4, 8 y 16 en la configuración anterior creo que es la longitud de cada ubicación en SDRAM, es decir, en 128Mb Configuración x 4, habrá una ubicación de 128 Mb cada uno de 4 bits. Del mismo modo para las otras 2 configuraciones.

Lo que no entiendo es que DDR3 SDRAM tiene 64 E/S de datos, es decir, pines DDR_DQ. Entonces, ¿por qué no hay una configuración como 8Mb x 64 para utilizar todos los 64 pines de E/S de datos?

¿O lo he descubierto completamente mal?

¿Dónde ve exactamente una referencia a 64 pines de E/S? Por lo general, los buses anchos son compatibles con la operación de múltiples chips en paralelo, como en un módulo de memoria.

Respuestas (1)

Esto es direccionamiento para chips individuales. Aquí se enumeran 6 chips diferentes, tres de 512 Mb y tres de 1 Gb. Dos de los chips tienen 4 pines DQ, dos tienen 8 y dos tienen 16 pines. El estándar DDR3 admite 4, 8 o 16 pines DQ por chip. Cuando los chips se combinan en módulos, necesita obtener 64 pines DQ en total. Entonces podrías hacer un módulo con cuatro 64Mx16, ocho 128Mx8 o dieciséis 256Mx4, por ejemplo. Luego, los pines de dirección se comparten entre todos los chips del módulo. También es posible construir un módulo de 'doble rango' donde cada pin DQ en el módulo está conectado a dos chips. Esto aumenta la capacidad de la memoria a expensas de la velocidad: solo un rango puede usar los pines DQ a la vez,

Entonces, ¿una sola lectura en uno de los chips devolverá 4, 8 o 16 bits en el DQ?
Sí. Pero en un DIMM, es imposible hacer una sola lectura o escritura de un chip. Se accede a todos los chips en el mismo rango en paralelo, proporcionando juntos 64 bits.
Ok, lo entiendo (al menos es un problema con el controlador de memoria de Intel, otra pregunta sería "¿cómo se accede a la RAM? ¿Está mapeada y es opaca para el firmware?"). Estaba confundido como la unidad real de almacenamiento. Así que elija un banco, elija una dirección de fila, elija una dirección de columna y obtendrá un valor de 8 bits.
No es un problema con un controlador de memoria, es cómo están conectados físicamente los chips. Las señales de control de lectura y escritura están conectadas en paralelo a todos los chips del módulo. Es imposible emitir un comando de lectura a solo uno de los chips. En cuanto a las escrituras, hay habilitaciones de bytes para deshabilitar las escrituras byte por byte... pero si el módulo se compone de chips de 4 bits, entonces solo puede controlar los chips en pares. El punto es que no importa cómo se corte el bus y se almacene en chips separados.
Solo estaba preguntando desde la perspectiva de alguien que escribe el código de inicialización antes de que UEFI BIOS pueda comenzar, la parte que inicializa RAM y la prueba. Supongo que es probablemente específico del dispositivo.
Bueno, esa es una pregunta bastante profunda. No estoy seguro exactamente de cómo funciona en una placa base Intel moderna... pero algo tiene que leer las EEPROM SPD en los módulos de memoria y luego establecer la configuración del controlador de memoria en consecuencia. Esto probablemente será específico para la configuración precisa del hardware. Recomendaría mirar una hoja de datos del controlador de memoria para tener una idea de lo que está involucrado.