En informática , la memoria intercalada es un diseño que compensa la velocidad relativamente lenta de la memoria de acceso aleatorio dinámico (DRAM) o memoria central , al distribuir las direcciones de memoria de manera uniforme entre los bancos de memoria . De esa manera, las lecturas y escrituras de memoria contiguas utilizan cada banco de memoria por turno, lo que da como resultado un mayor rendimiento de la memoria debido a una menor espera para que los bancos de memoria estén listos para las operaciones.
Se diferencia de las arquitecturas de memoria multicanal , principalmente porque la memoria intercalada no agrega más canales entre la memoria principal y el controlador de memoria . Sin embargo, el intercalado de canales también es posible, por ejemplo, en los procesadores Freescale i.MX 6, que permiten realizar el intercalado entre dos canales. [ cita requerida ]
En el caso de la memoria intercalada, las direcciones de memoria se asignan a cada banco de memoria por turno. Por ejemplo, en un sistema intercalado con dos bancos de memoria (suponiendo que la memoria es direccionable por palabra ), si la dirección lógica 32 pertenece al banco 0, entonces la dirección lógica 33 pertenecería al banco 1, la dirección lógica 34 pertenecería al banco 0, y así sucesivamente. Se dice que una memoria intercalada tiene intercalación de n vías cuando hay n bancos y la ubicación de memoria i reside en el banco i mod n .
La memoria intercalada permite realizar lecturas contiguas (que son habituales tanto en multimedia como en la ejecución de programas) y escrituras contiguas (que se utilizan con frecuencia al llenar los búferes de almacenamiento o comunicación), utilizando cada banco de memoria a su vez, en lugar de utilizar el mismo repetidamente. Esto da como resultado un rendimiento de memoria significativamente mayor, ya que cada banco tiene un tiempo de espera mínimo entre lecturas y escrituras.
La memoria principal ( memoria de acceso aleatorio , RAM) suele estar compuesta por una colección de chips de memoria DRAM , donde se pueden agrupar varios chips para formar un banco de memoria. Luego, es posible, con un controlador de memoria que admita intercalación, disponer estos bancos de memoria de manera que queden intercalados.
Los datos en la memoria DRAM se almacenan en unidades de páginas. Cada banco de la memoria DRAM tiene un búfer de fila que sirve como caché para acceder a cualquier página del banco. Antes de leer una página del banco de la memoria DRAM, primero se carga en el búfer de fila . Si la página se lee inmediatamente desde el búfer de fila (o se produce un acierto en el búfer de fila), tiene la latencia de acceso a la memoria más corta en un ciclo de memoria. Si se produce un error en el búfer de fila, lo que también se denomina conflicto de búfer de fila, es más lento porque la nueva página debe cargarse en el búfer de fila antes de leerse. Los errores de búfer de fila ocurren cuando se atienden solicitudes de acceso en diferentes páginas de memoria del mismo banco. Un conflicto de búfer de fila genera un retraso sustancial para un acceso a la memoria. Por el contrario, los accesos a la memoria de diferentes bancos pueden realizarse en paralelo con un alto rendimiento.
El problema de los conflictos entre búferes de fila ha sido bien estudiado y se ha encontrado una solución eficaz. [1] El tamaño de un búfer de fila es normalmente el tamaño de una página de memoria gestionada por el sistema operativo. Los conflictos o errores de búfer de fila provienen de una secuencia de accesos a páginas diferentes en el mismo banco de memoria. El estudio [1] muestra que un método de intercalado de memoria convencional propagaría conflictos de asignación de direcciones a nivel de caché al espacio de direcciones de memoria, lo que causaría errores de búfer de fila en un banco de memoria. El método de memoria intercalada basado en permutación resolvió el problema con un coste de microarquitectura trivial. [1] Sun Microsystems adoptó rápidamente este método de intercalado de permutación en sus productos. [2] Este método libre de patentes se puede encontrar en muchos microprocesadores comerciales, como AMD, Intel y NVIDIA , para sistemas integrados, portátiles, ordenadores de sobremesa y servidores empresariales. [3]
En los diseños tradicionales (planos), a los bancos de memoria se les puede asignar un bloque contiguo de direcciones de memoria, lo que es muy simple para el controlador de memoria y brinda un rendimiento igual en escenarios de acceso completamente aleatorio, en comparación con los niveles de rendimiento logrados mediante intercalación. Sin embargo, en realidad, las lecturas de memoria rara vez son aleatorias debido a la localidad de referencia , y la optimización para el acceso cercano brinda un rendimiento mucho mejor en diseños intercalados.
La forma en que se direcciona la memoria no tiene efecto en el tiempo de acceso a las ubicaciones de memoria que ya están almacenadas en caché ; solo tiene impacto en las ubicaciones de memoria que necesitan recuperarse de la DRAM.
Las primeras investigaciones sobre la memoria intercalada se realizaron en IBM en los años 60 y 70 en relación con la computadora IBM 7030 Stretch , [4] pero el desarrollo continuó durante décadas mejorando el diseño, la flexibilidad y el rendimiento para producir implementaciones modernas.
{{cite conference}}
: CS1 maint: varios nombres: lista de autores ( enlace )