Organización de la memoria DRAM

He estado tratando de entender el funcionamiento de los chips DRAM pero aparentemente con mucha confusión. Suponga que hay 8 bancos en un solo chip en un módulo. ¿Es solo un bit lo que sale de un solo banco y un byte de un chip en total? Y de los 8 bytes que salen de un canal, ¿cómo accede el controlador de memoria a solo un byte?

Respuestas (1)

La DRAM está organizada en una jerarquía de varios niveles, y conocer la terminología correcta para las distintas capas es clave para entenderla, así que las recapitularé brevemente para asegurarme de que estamos en la misma página. (Obviamente, esto solo se refiere al caso sencillo del libro de texto, y no considera cosas como ECC).

En el nivel más bajo, está el banco , que es la matriz física 2D de celdas (condensadores/transistores de acceso) y las líneas de palabras y líneas de bits que las conectan. Hay un búfer de fila por banco, al que sigue un decodificador de columna para seleccionar, de hecho, solo un bit de la fila.

Ocho bancos por chip generan ocho pines de salida de datos por chip. Luego, ocho de estos chips se combinarían para formar un rango con 64 bits de salida. En el caso de los DIMM , cada módulo de memoria física consta de al menos uno de esos rangos. Para módulos DIMM de varios rangos, los chips que componen los diferentes rangos comparten las mismas líneas de comando y datos, por lo que solo un rango puede usar el bus en cualquier momento (hay líneas de selección de chips para abordarlos).

Finalmente, un canal describe el sistema completo de uno o más rangos y los buses de comando/datos que los conectan. En lo que respecta a la señalización de bajo nivel, cada canal es un bus completamente independiente, por lo que los diferentes accesos nunca entran en conflicto, etc.

En cuanto a su pregunta sobre la selección de un solo byte: el controlador de memoria es libre de manejar esos fragmentos de datos de 64 bits de la forma más apropiada. En teoría, solo podría incluir un mux para seleccionar el byte de datos apropiado para leer. Sin embargo, en los procesadores modernos, todos los accesos a la memoria se realizan típicamente en unidades de ancho de línea de caché (64 bytes), por lo que todos los bits se reenviarían al subsistema de caché. Incluso si solo se lee un byte en un registro, primero se recuperaría toda la línea de caché.

Entonces, al usar multiplexores, uno puede obtener un solo byte de un canal, ¿verdad? Entonces, cuando los 64 bits llegan al controlador de memoria, el controlador de memoria multiplexa solo un byte y lo envía al procesador. ¿Tengo razón? Además, ¿cómo se selecciona solo un byte? ¿Hay algunos búferes de tres estados para controlarlo después de ser multiplexado? y si los multiplexores están realmente presentes, ¿qué pasa cuando el procesador necesita 8 bytes completos?
En los procesadores modernos, si se leen todos los 64 bytes, ¿cómo funciona el procesador en un solo byte (por ejemplo, leyendo un carácter literal)?
En un sistema moderno, la interfaz con la memoria suele ser en términos de líneas de caché completas. Demasiada sobrecarga para realizar operaciones de un solo byte. Tampoco es posible leer un solo byte. Lees los 64 bits y descartas lo que no necesitas. Para la escritura, generalmente hay bytes que enmascaran qué bytes actualizar, el resto se descarta.
Pero lo que hay que recordar es que la CPU solo funciona en la memoria caché L1. Si los datos no están en el caché, entonces el controlador de memoria va y obtiene una línea de caché completa de la RAM. Cuando una línea de caché se expulsa del caché, se vuelve a escribir en la memoria si está sucia (las líneas de caché se marcan como sucias al escribir)