Memorias Cache, Memorias De Lectura-escritura, De sólo Lectura
Enviado por SkyForger • 7 de Octubre de 2012 • 2.205 Palabras (9 Páginas) • 1.515 Visitas
Memoria cache
El objetivo de la memoria cache es lograr que la velocidad de la memoria sea lo mas rápido posible, consiguiendo al mismo tiempo un tamaño grande al precio de memorias semiconductoras menos costosas.
En la imagen se observa que una memoria principal relativamente grande y más lenta, junto con una memoria cache más pequeña y rápida. La cache contiene una copia de partes de la memoria principal. Cuando el procesador intenta leer una palabra de memoria, se hace una comprobación para determinar si la palabra esta está en la cache. Si esa así, se entrega dicha palabra al procesador. Si no, un bloque de memoria principal, consistente en un número de palabras, se transfiere a la cache, y después la palabra se entrega al procesador.
La memoria consta de hasta 2 a la n palabras direccionales teniendo cada palabra una única dirección de n bits. Esta memoria la consideramos dividida en un numero de bloques de longitud física. La cache consta de C líneas de K palabras cada una, y el numero de líneas es considerablemente menor que el numero de bloques de memoria principal (C<<M). Cda línea incluye una etiqueta que identifica que bloque particular esta siendo almacenado. La etiqueta es usualmente una porción de la dirección de memoria principal.
Los diferentes tipos de caché se organizan por niveles, formando una jerarquía. En general se cumple que, a mayor cercanía a la CPU, se presenta mayor velocidad de acceso y menor capacidad de almacenamiento.
Nivel 1 (L1): Conocido como caché interno, es el nivel más cercano a la CPU (está en el mismo núcleo) con lo que el acceso se produce a la velocidad de trabajo del procesador (la máxima velocidad).
Nivel 2 (L2): Conocido como caché externo, inicialmente se instalaba en la placa base (en el exterior de la CPU). A partir de los procesadores Pentium 4 vienen incorporado en el procesador (no precisamente en el núcleo).
Nivel 3 (L3): Se encuentra en algunas placas base, procesadores y tarjetas de interfaz.
Elementos de diseño de la cache
Aunque hay muy diversas implementaciones de cache, existen unos cuantos criterios básicos de diseño que sirven para clasificar y diferenciar entre arquitecturas de cache.
Tamaño de cache
Nos gustaría que el tamaño fuera lo suficientemente pequeño como para que el coste total medio por bit se aproximara a la memoria principal, y que fuera lo suficientemente grande como para que el tiempo de acceso medio total fuera próximo al de la cache. Cuanto más grande es el tamaño, mayor es el número de puertas implicadas en direccionar la cache. El resultado es que caches grandes tienden a ser ligeramente mas lentas que las pequeñas (incluso estando fabricadas con la misma tecnología de circuito integrado y con la misma ubicación en el chip o en la tarjeta de circuito impreso). El tamaño de la cache está también limitado por las superficies disponibles de chip y de tarjetas. Las cache son muy sensibles al tipo de tarea, es imposible predecir un tamaño “optimo”.
Función de correspondencia
Ya que hay menos líneas de cache que bloques de memoria principal, se necesita un algoritmo que haga corresponder bloques de memoria principal a las líneas de cache. Además, se requiere algún medio de determinar que bloque de memoria principal ocupa actualmente una línea dada de cache. La elección de función de correspondencia determina como se organiza la cache. Pueden utilizarse tres técnicas: directa asociativa y asociativa por conjuntos.
Correspondencia directa: es la más simple, consiste en hacer corresponder cada bloque de memoria principal a sólo una línea posible de cache. La correspondencia se expresa como:
La función de correspondencia se implementa fácilmente utilizando la dirección. Cada dirección de memoria principal puede verse como dividida en tres campos. Los w bits (menos significativos) identifican cada palabra dentro de un bloque de memoria principal; en la mayoría de las maquinas actuales, el direccionamiento es a nivel de bytes. Los s bits restantes especifican uno de los 2n (dos a la n) bloques de la memoria principal. La lógica de la cache interpreta a esos s bits como una etiqueta s – r bits (mas significativos) y un campo de línea de r bits.
Correspondencia asociativa: supera la desventaja de la directa, permitiendo que cada bloque de memoria principal pueda cargarse en cualquier línea de la cache. En este caso, la lógica de control de la cache interpreta una dirección de memoria simplemente como una etiqueta y un campo de palabra. El campo de etiqueta identifica únicamente un bloque de memoria principal. Para identificar si un bloque está en la cache, su lógica de control debe examinar simultáneamente todas las etiquetas de líneas para buscar una coincidencia.
Con esta correspondencia hay flexibilidad para que cualquier bloque sea remplazado cuando se va a escribir uno nuevo en la cache.
La principal desventaja de la correspondencia asociativa es la compleja circuitería necesaria para examinar en paralelo las etiquetas de todas las líneas de cache.
Correspondencia asociativa por conjuntos: es una solución a las desventajas de la correspondencia directa y asociativa. en este caso la cache se divide en “v” conjuntos , cada uno de “k” líneas:
m = v x k
i = j modulo v
Donde:
i = numero de conjuntos de cache
j = numero de bloques de memoria principal
m = numero de líneas de cache
En este caso se denomina correspondencia asociativa por conjuntos de k vías. Con esta asignación, el bloque puede asignarse a cualquiera de las líneas del conjunto. La lógica de control de la cache interpreta una dirección de memoria con tres campos: etiqueta, conjunto y palabra.
Con la correspondencia totalmente asociativa, la etiqueta en una dirección de memoria es bastante larga, y debe compararse con la etiqueta de cada línea en la cache, sin embargo con la correspondencia asociativa por conjuntos, la etiqueta de una direccionad e memoria es mucho mas corta, y se compara sólo con las etiquetas de un mismo conjunto.
Algoritmos de Sustitución
Cuando se introduce un nuevo bloque en la cache, debe de sustituirse uno de los bloques existentes. Para las técnicas asociativas se requieren algoritmos de sustitución. Se han probado diversos algoritmos, el mas efectivo es probablemente denominado LRU (least-recently used) se sustituye el bloque que se ha mantenido en la cache por mas tiempo sin haber sido referenciado. Esto es fácil de implementar para la asociativa por conjuntos de dos vías. Cada línea incluye in bit USO. Cuando una línea es referenciada, se pone a
...