La memoria es uno de los componentes principales de cualquier sistema y por tanto su estructura tiene un gran impacto en el rendimiento general del sistema. En este trabajo se estudia el concepto de memoria entrelazada y su influencia en los sistemas vectoriales.
La mayor parte de las unidades funcionales segmentadas producen un resultado por ciclo de reloj. La producción de un resultado por ciclo de reloj y la ejecución paralela de diversos unidades funcionales provocan una alta carga de accesos y almacenamientos a/en memoria.
La memoria es mucho más lenta que las unidades funcionales ya que emplea varios ciclos de reloj en almacenar o servir datos. Por tanto, los resultados generados por las unidades funcionales deben esperar en una cola.
Como posibles soluciones al problema del rendimiento del sistema podemos optar por el aumento de registros o de la memoria caché debido a su mayor velocidad, pero estas dos memorias son mucho más caras y por tanto más pequeñas que la memoria principal. Por este motivo la solución más común a este problema es la utilización de bancos o módulos de memoria.
Bancos de Memoria
Definición
Los bancos de memoria permiten la construcción de sistemas de memoria constituidos por varios bancos o unidades con posiciones de memoria correlativas asignadas a módulos sucesivos. Cada módulo funciona de forma independiente y por tanto tiene su propio tiempo de ciclo.
En este ejemplo se pueden llegar a leer/escribir datos en ocho módulos distintos al mismo tiempo.
La velocidad de respuesta del banco es igual al tiempo de ciclo del banco (en supercomputadores del orden de 4-8 ciclos de reloj).
Para conseguir un sistema de memoria efectivo basado en bancos de memoria, se necesitan, al menos, tantos bancos de memoria como ciclos de reloj del banco.
Esquema de Funcionamiento
Para estudiar el funcionamiento de los bancos de memoria, vamos a hacerlo con un ejemplo:
El código anterior en Fortran, es un bucle en el que a los contenidos de las primeras 16 posiciones de un vector de 512, se les suma 1.0.
La forma en que se almacena el vector A en memoria es, asignando los elementos de A en bancos consecutivos, de la siguiente forma: