stringtranslate.com

Memoria entrelazada

En informática , la memoria entrelazada es un diseño que compensa la velocidad relativamente lenta de la memoria dinámica de acceso aleatorio (DRAM) o memoria central , distribuyendo 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 genera un mayor rendimiento de la memoria debido a la reducción de la espera a que los bancos de memoria estén listos para las operaciones.

Se diferencia de las arquitecturas de memoria multicanal , principalmente porque la memoria entrelazada no agrega más canales entre la memoria principal y el controlador de memoria . Sin embargo, el entrelazado de canales también es posible, por ejemplo en los procesadores freescale i.MX 6, que permiten realizar el entrelazado entre dos canales. [ cita necesaria ]

Descripción general

Con la memoria entrelazada, las direcciones de memoria se asignan a cada banco de memoria por turno. Por ejemplo, en un sistema entrelazado con dos bancos de memoria (asumiendo memoria direccionable por palabras ), 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 entrelazada está entrelazada de n vías cuando hay n bancos y la ubicación de la memoria i reside en el banco i mod n .

Ejemplo de entrelazado de memoria con 4 bancos. Los bancos rojos son refrescantes y no se pueden utilizar.

La memoria entrelazada da como resultado lecturas contiguas (que son comunes tanto en multimedia como en la ejecución de programas) y escrituras contiguas (que se usan con frecuencia al llenar los buffers de almacenamiento o comunicación) usando cada banco de memoria por turno, en lugar de usar 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.

DRAM entrelazada

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. Entonces es posible, con un controlador de memoria que soporte el entrelazado, disponer estos bancos de memoria de manera que se intercalen.

Los datos en DRAM se almacenan en unidades de páginas. Cada banco de DRAM tiene un búfer de filas que sirve como caché para acceder a cualquier página del banco. Antes de leer una página en el banco DRAM, primero se carga en el búfer de filas . Si la página se lee inmediatamente desde el búfer de filas (o un acceso al búfer de filas), tiene la latencia de acceso a la memoria más corta en un ciclo de memoria. Si se trata de una falta de 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 en el búfer de fila ocurren cuando se atienden solicitudes de acceso en diferentes páginas de memoria en el mismo banco. Un conflicto de búfer de fila provoca un retraso sustancial en el acceso a la memoria. Por el contrario, los accesos a la memoria a diferentes bancos pueden realizarse en paralelo con un alto rendimiento.

El problema de los conflictos entre búfer de filas ha sido bien estudiado y se ha encontrado una solución eficaz. [1] El tamaño de un búfer de filas es normalmente el tamaño de una página de memoria administrada por el sistema operativo. Los conflictos o errores de búfer de filas provienen de una secuencia de accesos a diferentes páginas en el mismo banco de memoria. El estudio [1] muestra que un método de entrelazado de memoria convencional propagaría conflictos de asignación de direcciones a nivel de caché al espacio de direcciones de memoria, provocando errores en el búfer de fila en un banco de memoria. El método de memoria entrelazada basado en permutación resolvió el problema con un costo de microarquitectura trivial. [1] Sun Microsystems adoptó rápidamente este método de intercalado por permutación en sus productos. [2] Este método sin patente se puede encontrar en muchos microprocesadores comerciales, como AMD, Intel y NVIDIA , para sistemas integrados, computadoras portátiles, de escritorio y servidores empresariales. [3]

En diseños tradicionales (planos), a los bancos de memoria se les puede asignar un bloque contiguo de direcciones de memoria, lo cual es muy simple para el controlador de memoria y brinda el mismo rendimiento en escenarios de acceso completamente aleatorio, en comparación con los niveles de rendimiento logrados mediante el entrelazado. Sin embargo, en realidad las lecturas de memoria rara vez son aleatorias debido a la localidad de referencia , y la optimización para un acceso cercano proporciona un rendimiento mucho mejor en diseños intercalados.

La forma en que se direcciona la memoria no tiene ningún efecto en el tiempo de acceso a las ubicaciones de memoria que ya están almacenadas en caché , y solo tiene un impacto en las ubicaciones de memoria que deben recuperarse de la DRAM.

Historia

Las primeras investigaciones sobre memoria entrelazada 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.

Ver también

Referencias

  1. ^ abc Zhao Zhang, Zhichun Zhu y Xiaodong Zhang (2000). Un esquema de entrelazado de páginas basado en permutaciones para reducir los conflictos entre el búfer de filas y explotar la localidad de los datos. MICRÓ 33.{{cite conference}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  2. ^ "Carta de Sun al Director de la Oficina de Transferencia de Tecnología del College of William and Mary" (PDF) . 15 de julio de 2005.
  3. ^ "El profesor Xiaodong Zhang recibe el premio ACM Microarchitecture Test of Time 2020". Departamento de Ingeniería y Ciencias de la Computación, Facultad de Ingeniería, Universidad Estatal de Ohio . 19 de enero de 2021.
  4. ^ Mark Smotherman (julio de 2010). "IBM Stretch (7030): paralelismo monoprocesador agresivo". clemson.edu . Consultado el 7 de diciembre de 2013 .

enlaces externos