Sei sulla pagina 1di 15

INTRODUCCIÓN

Mientras que los procesadores se hicieron casi 10 mil veces más rápidos desde el 8088(el
procesador usado en el formato XT), la memoria RAM, su principal herramienta de trabajo,
evolucionó

El Gran Libro del PC Interno - Luis Durán Rodríguez - Google Libros_files


DESARROLLO

- Estructura jerárquica de las memorias en una PC.

Pdf clase 06 jerarquía


Pdf clase 06 jerarquía

La jerarquía de memoria es la organización piramidal de la memoria en niveles que tienen las


computadoras. El objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de
una memoria de baja velocidad, basándose en el principio de cercanía de referencias.

Los puntos básicos relacionados con la memoria pueden resumirse en:

 Capacidad: La cuestión de la capacidad es simple, cuanta más memoria haya disponible,


más podrá utilizarse.
 Velocidad: La velocidad óptima para la memoria es la velocidad a la que el
microprocesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y
cálculo, utilizados para traer operando o guardar resultados.
 Coste por bit: En suma, el coste de la memoria no debe ser excesivo, para que sea factible
construir un equipo accesible.

Los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio.

 A menor tiempo de acceso mayor coste.


 A mayor capacidad menor coste por bit.
 A mayor capacidad menor velocidad.
Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para
satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio
llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un
rendimiento cercano al de la memoria más rápida.

Los niveles que componen la jerarquía de memoria habitualmente son:

 Nivel 0: Registros del microprocesador o CPU


 Nivel 1: Memoria caché
 Nivel 2: Memoria primaria (RAM)
 Nivel 3: Memorias flash
 Nivel 4: Disco duro (con el mecanismo de memoria virtual)
 Nivel 5: Cintas magnéticas (consideradas las más lentas, con mayor capacidad, de acceso
secuencial)
 Nivel 6: Redes (actualmente se considera un nivel más de la jerarquía de memorias).

Los lenguajes de programación actuales generalmente asumen la existencia de únicamente dos


niveles de memoria: memoria primaria y memoria secundaria (normalmente en disco). En lenguaje
ensamblador, ensamblador en línea, y lenguajes como C y C++, se pueden direccionar datos
directamente a los registros de la CPU.

Para aprovechar de forma óptima las ventajas de la jerarquía de memoria es necesaria la cooperación
entre programadores, compiladores y fabricantes de hardware:

 Programadores: deben ser responsables del movimiento entre memoria principal y disco
mediante el uso de ficheros.
 Hardware: el movimiento de datos entre la memoria principal y los niveles de caché es
realizado por algoritmos de hardware.
 Compiladores: son responsables de optimizar el código de modo que el uso de los registros
y la caché sea eficiente.

Todo lo anterior es de JERARQUIA DE LA MEMORIA _ Arquitectura de hardware pagina

guardada (https://es.wikipedia.org/wiki/Jerarqu%C3%ADa_de_memoria )

Necesidad de la memoria caché.


Existe una relación inherente entre el tamaño y la velocidad; dado que un recurso más
grande implica mayores distancias físicas, pero también una compensación entre
tecnologías costosas (como SRAM) versus productos más baratos, fácilmente
producidos en masa (como DRAM o discos duros).
El almacenamiento en búfer proporcionado por una caché beneficia tanto el ancho de
banda como la latencia:

 Latencia

Un recurso más grande incurre en una latencia significativa para el acceso, por ejemplo
puede tomar cientos de ciclos de reloj para que un procesador moderno de 4 GHz llegue
a tener disponible los datos de una DRAM. Esto se mitiga leyendo en grandes
fragmentos y almacenando los datos temporalmente en una memoria más rápida o
cercana al procesador, con la esperanza de que las lecturas posteriores sean más rápidas.
La predicción o la obtención previa explícita también pueden adivinar de dónde vendrán
las lecturas futuras y realizar las solicitudes con anticipación; si se hace correctamente,
la latencia se reduce a ser casi despreciable.

 Ancho de banda

El uso de una caché también permite un mayor rendimiento (throughput) del recurso
subyacente, mediante el empaquetado de múltiples transferencias de pequeñas en
solicitudes más grandes y más eficientes. En el caso de DRAM, esto podría servirse por
un bus más ancho. Imagínese un programa escaneando bytes en un espacio de
direcciones de 32 bits, pero atendido por un bus de datos de 128 bits fuera de chip; los
accesos de byte individuales sin caché solo permitirían usar 1/16 del ancho de banda
total, y el 80% del movimiento de datos serían direcciones. Leer trozos más grandes
reduce la fracción de ancho de banda requerida para transmitir información de
dirección.

Todo lo anterior es de Caché (informática) - Wikipedia, la enciclopedia libre

Organización de memorias caché (asociación).


Pdf clase 06 jerarquía

La memoria caché tiene un método de acceso asociativo, lo que significa que los datos
almacenados en ella tienen asociado un valor al que llamaremos etiqueta y que se puede
utilizar para identificar el dato almacenado.

Además, la caché no guarda los datos igual que los guarda la RAM, en bytes, sino que
los guarda en bloques relacionados por cercanía. Los datos que la caché considera
cercanos, conocidos como conjunto de vecindad, varían con la implementación de la
misma. Todos los valores de un conjunto de vecindad tienen asociada una única etiqueta
que se liga con el conjunto de vecindad, no con los valores almacenados en la caché.

¿Cómo se organiza la caché?

Consideremos un ordenador con una capacidad de direccionamiento de memoria


principal de hasta 2n bytes direccionables, teniendo cada byte una única dirección de n
bits. Consideremos además una caché de tamaño mucho menor que 2n y organizada
según C líneas y K bytes cada línea (una línea es un conjunto de vecindad).

Imaginemos que la memoria está dividida en un número de bloques y que, cada bloque,
es curiosamente del mismo tamaño que el conjunto de vecindad (de longitud fija, de K
bytes) provocando que la memoria tenga M = 2n/K bloques. El número de líneas es
considerablemente menor que el número de bloques de memoria principal (C < < M).

Por tanto, en todo momento, un subconjunto de los bloques de memoria residirá en las
líneas de la caché. Ya que hay más bloques que líneas, una línea dada no puede
dedicarse unívoca y permanentemente a un bloque por lo que es aquí donde la etiqueta
toma su importancia: cada línea incluye una etiqueta que identifica qué bloque de
memoria en particular está siendo almacenado en una línea de caché. La etiqueta es
usualmente una porción de la dirección de memoria principal, como describiremos más
adelante en este tema.

Función de correspondencia

La caché es mucho más pequeña que la memoria RAM y, a pesar de ello, la caché
consigue una tasa de acierto del 98% aproximadamente.

El principio de vecindad: A cortos periodos de tiempo (milisegundos) el conjunto de


datos que maneja el microprocesador es reducido y cercano. Este principio concuerda
exactamente con el funcionamiento de la caché y la idea de organizar los datos en
conjuntos de vecindad.

Una función de correspondencia es un algoritmo que se ejecuta en la caché y que


determina qué datos (de todos los que están en la memoria) se sitúan en la caché y
dónde lo hacen, con el fin de maximizar el número de aciertos.
Es necesario la función de correspondencia cuando después de un fallo de caché hay
que elegir un hueco en ella para meter un elemento procedente de memoria, hay que
tener en cuenta que la posición que se le reserve tiene que ser fácil de encontrar entre
los datos ya existentes en caché, dado que después, con toda seguridad, habrá que
volver a buscar ese dato y la búsqueda tiene que ser muy rápida.

Pdf ININF1_M10_U3_T2

gggPara todos los casos consideraremos un ejemplo:

 Cache de 64 KBytes
 Bloques de 4 bytes
 cache de 16K (214) líneas de 4 bytes cada una
 16MBytes de memoria principal
 24 bits de direcciones
 (224) =16 MB)
Pdf clase 06 jerarquía
+

+
Modelos de sincronización de la caché con la memoria RAM.

La unidad caché es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área
reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad
independiente.

Hay dos tipos de caché frecuentemente usados en computadoras personales: memoria caché y caché
de disco.

Una memoria caché, a veces llamada “RAM caché”, es una parte de RAM estática (SRAM) de alta
velocidad, más rápida que la RAM dinámica (DRAM) usada como memoria principal. La memoria
caché es efectiva dado que los programas acceden una y otra vez a los mismos datos o instrucciones.
Guardando esta información en SRAM, la computadora evita acceder a la lenta DRAM.

Cuando se encuentra un dato en la caché, se dice que se ha producido un acierto, siendo un caché
juzgado por su tasa de aciertos (hit rate). Los sistemas de memoria caché usan una tecnología
conocida por caché inteligente en la cual el sistema puede reconocer cierto tipo de datos usados
frecuentemente. Las estrategias para determinar qué información debe ser puesta en la caché
constituyen uno de los problemas más interesantes en la ciencia de las computadoras. Algunas
memorias caché están construidas en la arquitectura de los microprocesadores. Por ejemplo, el
microprocesador Pentium II: tiene 32 KiB de caché de primer nivel (level 1 o L1) repartida en 16
KiB para datos y 16 KiB para instrucciones; la caché de segundo nivel (level 2 o L2) es de 512 KiB
y trabaja a mitad de la frecuencia del microprocesador. La caché L1 está en el núcleo del
microprocesador, y la L2 está en una tarjeta de circuito impreso junto a éste.

La caché de disco trabaja sobre los mismos principios que la memoria caché, pero en lugar de usar
SRAM de alta velocidad, usa la convencional memoria principal. Los datos más recientes del  disco
duro a los que se ha accedido (así como los sectores adyacentes) se almacenan en un búfer de
memoria. Cuando el programa necesita acceder a datos del disco, lo primero que comprueba es la
caché de disco para ver si los datos ya están ahí. La caché de disco puede mejorar notablemente el
rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de
veces más rápido que acceder a un byte del disco duro.

Composición interna.

Los datos en la memoria caché se alojan en distintos niveles según la frecuencia de uso que tengan,
estos niveles son los siguientes:

1- Memoria caché nivel 1 (Caché L1):  También llamada memoria interna, se encuentra en el
núcleo del microprocesador. Es utilizada para acceder a datos importantes y de uso
frecuente, es el nivel en el que el tiempo de respuesta es menor. Su capacidad es de hasta
128 kb. Este nivel se divide en dos:
 Nivel 1 Data Cache: Se encarga de almacenar datos usados frecuentemente y cuando sea
necesario volver a utilizarlos, accede a ellos en muy poco tiempo, por lo que se agilizan los
procesos.
 Nivel 1 Instruction Cache: Se encarga de almacenar instrucciones usadas frecuentemente y
cuando sea necesario volver a utilizarlas, inmediatamente las recupera, por lo que se
agilizan los procesos.

2- Memoria caché nivel 2 (Caché L2):

Se encarga de almacenar datos de uso frecuente. Es más lenta que la caché L1, pero más rápida que
la memoria principal (RAM). Se encuentra en el procesador, mas no es su núcleo. Genera una copia
del nivel 1. Su capacidad es de hasta 1 Mb.

 Caché Exclusivo: Los datos solicitados se eliminan de la memoria caché L2.


 Caché Inclusivo: Los datos solicitados se quedan en la memoria caché L2.

3- Memoria caché nivel 3 (Caché L3):


Esta memoria se encuentra en algunos procesadores modernos y genera una copia a la L2. Es más
rápida que la memoria principal (RAM), pero más lenta que L2. En esta memoria se agiliza el acceso
a datos e instrucciones que no fueron localizadas en L1 o L2.

Es generalmente de un tamaño mayor y ayuda a que el sistema guarde gran cantidad de información
agilizando las tareas del procesador.

Todo lo anterior es de JERARQUIA DE LA MEMORIA _ Arquitectura de hardware pagina


guardada

Algoritmos para garantizar un buen funcionamiento de la caché:

Mejorar el rendimiento:

 Reducir fallos en la caché (miss rate).


 Reducir penalizaciones por fallo (miss penalty).
 Reducir el tiempo de acceso en caso de acierto (hit time).

Reducción de fallos

Tipos de fallos

Existen 3 tipos de fallos en una memoria caché (se conocen como clasificación 3C):

 Forzosos (Compulsory o Cold): En el primer acceso a un bloque, este no se


encuentra en la caché (fallos de arranque en frío o de primera referencia).
 Capacidad (Capacity): La caché no puede contener todos los bloques necesarios
durante la ejecución de un programa.
 Conflicto (Conflict): Diferentes bloques deben ir necesariamente al mismo
conjunto o línea cuando la estrategia es asociativa por conjuntos o de
correspondencia directa (fallos de colisión).
En un sistema multiprocesador, existen 2 tipos más de fallos (clasificación 5C): Ros,
Alberto; Cuesta, Blas; Fernández-Pascual, Ricardo; Gómez, María E.; Acacio, Manuel
E.; Robles, Antonio; García, José M.; Duato, José (2010). «EMC2: Extending Magny-
Cours Coherence for Large-Scale Servers». 17th International Conference on High
Performance Computing (HiPC): 1--10. doi:10.1109/HIPC.2010.5713176. (wikepedia)

 Coherencia (Coherence): El bloque se encuentra en caché en estado inválido


ante una lectura o sin permiso de escritura ante una escritura debido a la
solicitud del bloque por otro procesador.
 Cobertura (Coverage): El bloque se encuentra en caché pero en estado inválido
(sin permisos) debido a una invalidación emitida a causa de un reemplazo en el
directorio, que causa la pérdida de la información de compartición.

Técnicas para reducir fallos

Existen diversas técnicas para reducir esos fallos en la caché, algunas son:

 Incrementar el tamaño del bloque. Ventajas: Se reducen los fallos forzosos como
sugiere el principio de localidad espacial. Inconvenientes: Aumentan los fallos
por conflicto al reducirse el número de bloques de la caché y los fallos de
capacidad si la caché es pequeña. La penalización por fallo aumenta al
incrementarse el tiempo de transferencia del bloque.
 Incremento de la asociatividad. Ventajas: Se reducen los fallos por conflicto.
Inconveniente: Aumenta el tiempo de acceso medio al incrementarse el tiempo
de acierto (multiplexión). También aumenta el coste debidos a los comparadores
 Caché víctima. Consiste en añadir una pequeña caché totalmente asociativa (1-5
bloques) para almacenar bloques descartados por fallos de capacidad o conflicto.
En caso de fallo, antes de acceder a la memoria principal se accede a esta caché.
Si el bloque buscado se encuentra en ella, se intercambian los bloques de ambas
cachés.
 Optimización del compilador. El compilador reordena el código de manera que
por la forma en cómo se hacen los accesos, se reducen los fallos de caché.

Reducción de tiempo de acceso

 Cachés pequeñas y simples. Las cachés pequeñas permiten tiempos de acierto


reducidos pero tienen poca capacidad.
En las cachés de correspondencia, la comprobación de la etiqueta y el acceso al dato, se
hace al mismo tiempo.

 Evitar la traducción de direcciones. Evita la traducción durante la indexación de


la caché (consiste en almacenar direcciones de la caché, evitando así la
traducción de direcciones virtuales a físicas en caso de acierto)
 Escrituras en pipeline para aciertos en escritura rápidos. Consiste en crear un
pipeline para las operaciones de escritura, de manera que la escritura actual se
hace solapada en el tiempo con la comparación de etiquetas de la escritura
siguiente. Aquí esto que escribí debajo

Esto es de la Wikipedia pero venía esta referencia ↑ «Técnicas de aumento de


prestaciones para memoria y E/S». Osan Lopez L. 18 de septiembre de 2015.
Consultado el 29 de noviembre de 2017.

Mapa de memoria en una PC:

Entendemos por mapa de memoria la organización de las distintas unidades de memoria


(chips) en el espacio de direccionamiento de un procesador. Representa el margen de las
direcciones de acceso a cada tipo de memoria y/o las unidades de entrada/salida.

Objetivos del diseño de un mapa de memoria:

a) Adaptación al ancho de palabra del procesador (bus de datos): El ancho de los


datos que salen y entran de la memoria ha de coincidir con el tamaño del bus de
datos del procesador (K).
• Si el ancho del bus de datos de los chips de memoria es superior a K bits,
sólo utilizaremos K líneas de dicho bus.
• Si el ancho del bus de datos de los chips de memoria es K bits, no tendremos
problema, se conectarán directamente las líneas de datos del chip con las del
microprocesador.
• Si el ancho del bus de datos de los chips de memoria es inferior a K bits,
tendremos que utilizar varios chips para conectarlos en paralelo al bus de datos
del microprocesador.
b) Adaptación el espacio direccionable por el procesador (bus de direcciones):
Proporcionar el espacio direccionable por el microprocesador.
Si el ancho del bus de direcciones del procesador es M, el espacio direccionable
será 2 posiciones de memoria.
Ejemplo: el bus de direcciones del microprocesador es de 12 bits (A11-A0), es
decir, un espacio de 2 (= 4K posiciones). Chips de memoria de 2K posiciones.
Será necesario utilizar dos chips. M 12.

Potrebbero piacerti anche