Tema 2. Jerarquía de memorias.

El objetivo en el diseño del sistema de memoria de un computador es que tenga una gran capacidad y un tiempo de acceso reducido con el precio más bajo posible. Como no hay ninguna tecnología que cumpla simultáneamente estos requisitos, la memoria del computador se estructura en varios niveles con el objetivo de conseguir unas prestaciones mejores, y forma lo que denominamos jerarquía de memorias.
En una jerarquía de memorias se utilizan varios tipos de memoria con distintas características de capacidad, velocidad y coste, que dividiremos en niveles diferentes: memoria del procesador, memoria interna y memoria externa.
Cada nivel de la jerarquía se caracteriza también por la distancia a la que se encuentra del procesador. Los niveles más próximos al procesador son los primeros que se utilizan; eso es así porque también son los niveles con una velocidad más elevada.
A continuación se muestra cuál es la variación de la capacidad, velocidad y coste por bit para los niveles típicos de una jerarquía:

2.1. Registros.

El registro es el espacio de memoria que se encuentra dentro del procesador, integrado dentro del mismo chip de este. Se utilizan celdas de memoria de tipo estático, SRAM, para su implementación.

Es el espacio de memoria en el cual el procesador puede acceder más rápidamente a los datos. Este espacio de memoria es accesible al programador de lenguaje de ensamblador y, si se gestiona bien, permite minimizar el número de accesos a la memoria interna, que son bastante más lentos.

2.2. Memoria interna.

La memoria interna en un computador moderno está formada típicamente por dos niveles fundamentales: memoria caché y memoria principal. En los computadores actuales es frecuente encontrar la memoria caché también dividida en niveles.

2.2.1. Memoria caché.

Las memorias caché son memorias de capacidad reducida, pero más rápidas que la memoria principal, que utilizan un método de acceso asociativo. Se pueden encontrar dentro del chip del procesador o cerca de él y están diseñadas para reducir el tiempo de acceso a la memoria. En la memoria caché se almacenan los datos que se prevé que se utilizarán más habitualmente, de manera que sea posible reducir el número de accesos que debe hacer el procesador a la memoria principal (ya que el tiempo de acceso a la memoria principal siempre es superior al tiempo de acceso a la memoria caché).
No es accesible por parte del programador, es gestionada por el hardware y el sistema operativo y se implementa utilizando tecnología SRAM.
Los procesadores modernos utilizan diferentes niveles de memoria caché, lo que se conoce como memoria caché de primer nivel, segundo nivel, etc. Actualmente es habitual disponer de hasta tres niveles de memoria caché, referidos como L1, L2 y L3. Cada vez es más frecuente que algunos de estos niveles se implementen dentro del chip del procesador y que el nivel más próximo al procesador esté dividido en dos partes: una dedicada a las instrucciones y otra dedicada a los datos.

Memoria caché de los procesadores de Intel y AMD

Los últimos procesadores de Intel y AMD incluyen tres niveles de memoria caché: un primer nivel (L1) dividido en memoria caché de instrucciones y memoria caché de datos, y los otros niveles (L2 y L3), unificados. Los procesadores actuales tienen un diseño multinúcleo (multicore); un procesador integra en un solo chip varios núcleos completamente funcionales, cada núcleo dispone de una memoria caché de primer nivel (L1) y de segundo nivel (L2), y la memoria caché de tercer nivel (L3) es compartida por todos los núcleos del procesador. En estos procesadores toda la memoria caché se integra dentro del chip del microprocesador.

2.2.2. Memoria principal.

En la memoria principal se almacenan los programas que se deben ejecutar y sus datos, es la memoria visible para el programador mediante su espacio de direcciones.
La memoria principal se implementa utilizando diferentes chips conectados a la placa principal del computador y tiene una capacidad mucho más elevada que la memoria caché (del orden de Gbytes o de Tbytes en supercomputadores).
Utiliza tecnología DRAM (Dynamic RAM), que es más lenta que la SRAM, pero con una capacidad de integración mucho más elevada, hecho que permite obtener más capacidad en menos espacio.

2.3. Memoria externa.

La memoria externa corresponde a dispositivos de almacenamiento secundario: discos magnéticos, cintas magnéticas, discos ópticos, dispositivos de memoria flash, etc., y también se pueden considerar sistemas de almacenamiento en red.
Estos dispositivos son gestionados por el sistema de ficheros del sistema operativo mediante el sistema de entrada/salida.
Los dispositivos que forman la memoria externa se conectan al computador con algún tipo de bus (serie o paralelo). Estos dispositivos se pueden encontrar físicamente dentro del computador conectados por buses internos del computador (IDE, SATA, SCSI, etc.) o pueden estar fuera del computador conectados por buses externos (USB, Firewire, eSATA, Infiniband, etc.).

2.4. Memoria virtual.

Decimos que un computador utiliza memoria virtual cuando las direcciones de memoria de los programas se refieren a un espacio de memoria superior al espacio de memoria físico, espacio de memoria principal.
La memoria virtual libera al programador de las restricciones de la memoria principal. En estos computadores diferenciamos entre el mapa de direcciones lógicas o virtuales (las direcciones que utilizan los programas) y el mapa de direcciones físicas o reales (las direcciones de la memoria principal). El espacio de memoria virtual utiliza como soporte un dispositivo de almacenamiento externo (habitualmente un disco magnético), mientras que el espacio de memoria físico se corresponde con la memoria principal del computador.
En la actualidad, prácticamente todos los computadores utilizan memoria virtual. La utilización de la memoria virtual implica resolver dos problemas: la traducción de direcciones lógicas a direcciones físicas y la asignación de espacio de memoria físico a los programas que se deben ejecutar. La gestión de la memoria virtual la efectúa el sistema operativo.

2.5. Funcionamiento de la jerarquía de memorias.

El código de los programas se organiza en subrutinas, tiene estructuras iterativas y trabaja con conjuntos de datos agrupados. Esto, unido al hecho de que la ejecución del código es secuencial, lleva a que durante un intervalo de tiempo determinado se utilice solo una pequeña parte de toda la información almacenada: este fenómeno se denomina proximidad referencial.

A causa de esta característica, se ha probado empíricamente que aproximadamente el 90% de todas las instrucciones ejecutadas corresponden al 10% del código de un programa.

Distinguimos dos tipos de proximidad referencial:

1) Proximidad temporal. Es cuando, en un intervalo de tiempo determinado, la probabilidad de que un programa acceda de manera repetida a las mismas posiciones de memoria es muy grande.

La proximidad temporal se debe principalmente a las estructuras iterativas; un bucle ejecuta las mismas instrucciones repetidamente, de la misma manera que las llamadas repetitivas a subrutinas.

2) Proximidad espacial. Es cuando, en un intervalo de tiempo determinado, la probabilidad de que un programa acceda a posiciones de memoria próximas es muy grande.

La proximidad espacial se debe principalmente al hecho de que la ejecución de los programas es secuencial –se ejecuta una instrucción detrás de la otra salvo las bifurcaciones– y también a la utilización de estructuras de datos que están almacenados en posiciones de memoria contiguas.


Publicar un comentario

0 Comentarios

Close Menu