El objetivo
de la caché es lograr que la velocidad de la memoria sea lo más rápida posible.
Hay una
memoria principal más grande y relativamente más lenta junto con una caché más
pequeña y más rápida. Esta caché tiene un copia de partes de la memoria
principal. Cuando el procesador intenta leer una palabra de memoria, se
comprueba si está en la caché.
En la memoria cache los datos están organizados en bloques
denominados líneas de cache. Cada bloque comprende un número determinado de
bytes consecutivos de memoria.
La unidad de transferencia de información entre el
procesador y la memoria cache es de una palabra, mientras que entre la memoria
cache y la memoria principal es de un bloque.
Correspondencia directa
Es la más simple de realizar. Cada bloque de memoria
principal se asigna siempre al mismo bloque de memoria cache, según la
siguiente fórmula:
Donde:
No Bloques cache= 2 x, el bloque de
memoria se obtiene tomando los x bits menos significativos del numero binario
que representa el bloque de memoria principal.
Correspondencia totalmente asociativa
Un bloque de memoria puede ubicarse
en cualquier línea de la memoria cache. La dirección de memoria se descompone
en dos campos: desplazamiento (byte dentro del bloque o línea) y etiqueta
La correspondencia directa es
sencilla de implementar. Su mayor inconveniente proviene de la rigidez a la
hora de asignar bloques de memoria principal a la memoria cache pues no hay
libertad. Cada bloque de memoria principal puede ir únicamente a un bloque de
memoria cache. Si la CPU accede con mucha frecuencia a dos bloques de memoria
principal asignados al mismo bloque de cache, aparecerán con gran frecuencia
fallos de cache, lo cual repercute en un bajo rendimiento.
La correspondencia asociativa da
total libertad. Un bloque de memoria principal puede asignarse a cualquier
bloque de memoria cache.
En este caso, la etiqueta que
acompaña al bloque de cache coincide con el número de bloque de memoria
principal.
Correspondencia
asociativa por conjuntos
La estrategia asociativa proporciona un rendimiento óptimo,
derivado de la libertad total en cuanto a la asignación de bloques de memoria a
bloques de cache. Sin embargo, presenta un inconveniente. El costo de
implementación es inasumible, debido al elevado número de comparadores que
utiliza. Se necesita un comparador por bloque. En la correspondencia directa bastaba
un solo comparador.
La estrategia asociativa por conjuntos se basa en dividir la
memoria cache en conjuntos, cada uno de los cuales contiene un número fijo de
bloques. Cada bloque de memoria principal puede cachearse en cualquiera de los
bloques de un conjunto.
El numero de conjuntos de la memoria cache se elige como una
potencia de dos, 2c, donde c es el numero de bits empleados para
representar el conjunto. Con este tipo de correspondencia, los c bits menos
significativos del numero de bloque de memoria principal proporcionan el
conjunto, y los restantes la etiqueta.
Rendimiento
El tiempo medio
(Tm) de acceso a un sistema de memoria compuesto por una memoria principal y
una memoria cache viene dado por:
- Pa (tasa de aciertos): mide la probabilidad de encontrar en la cache el dato al que se desea acceder. La tasa de fallos se mide como (1-Pa)
- Ta (Tiempo de acceso de la cache)
- Tf (Tiempo de penalización): tiempo necesario para tratar un fallo de cache, es decir, transferir el bloque que contiene la dirección solicitada en caso de no encontrarse en la memoria cache y enviar la palabra solicitada al procesador.
Estrategias de escritura
- Escritura inmediata (write-through): Toda operación de escritura se lleva a cabo simultáneamente sobre la memoria cache y la memoria principal.
- Post-escritura (write-back): Los datos inicialmente solo se escriben en la memoria cache. El dato escrito aparece reflejado en la memoria principal solo cuando el bloque que lo contiene es reemplazado.