Bloque: unidad mínima de información que se transfiere entre dos niveles.
Acierto: se produce cuando los datos buscados están en el e l bloque superior.
Fallo: se accede al nivel inferior para leer un bloque y llevarlo al superior.
Tasa de fallos: es el porcentaje de accesos a memoria que producen un fallo.
Tiempo de acierto: es el tiempo necesario para acceder al nivel superior de la jerarquía.
Incluye el tiempo necesario para determinar si hay acierto Penalización:
y acceder al dato.
es el tiempo para traer un nuevo bloque del nivel inferior al superior más el
tiempo para suministrar la palabra al procesador.
bloque.
Latencia:
tiempo para recibir la primera palabra del
Ancho de banda: velocidad
de recepción del resto de palabras que componen el bloque.
Determina el tiempo para recibir el resto.
Ejemplo Supongamos una memoria principal con un tiempo de acceso de 500 ns, ns , y una caché con un tiempo de acceso de 50 ns, y con una tasa de aciertos del 99%. ¿Cuál es el tiempo medio de acceso a memoria en este sistema?
Aspectos de Diseño de las cache
Tamaño
Función de Correspondencia
Algoritmo de Reemplazo
Políticas de Escritura
Tamaño del bloque
Numero de Caches
FUNCION DE CORRESPONDENCIA Correspondencia directa Un bloque de memoria principal sólo puede ir a una línea.
Cada bloque de memoria principal ya tiene su línea asignada: Bloque 0-> Línea 0 Bloque 1 -> Línea 1 etc.. Bloque M -> Línea 0 (Si hay M líneas) Bloque M+1 -> Línea 1, La dirección se descompone en Etiqueta Línea Palabra
Se utilizan los bits de la dirección del dato a leer que corresponden a la línea de cache para ubicarnos en la línea de cache donde se supone esta el dato.
Se comparan los bits de la dirección del dato a leer que corresponden a la etiqueta de esa línea en particular de la cache(s-r). Con el fin de verificar si el bloque de memoria esta en cache.
Si el Bloque esta en cache es decir la comparación resulto verdadera entonces esto implica que el dato a buscar esta en cache.
Luego con los bits que corresponden a la palabra se di recciona el dato en cache y se entrega al CPU
Si el bloque no esta en cache, la comparación resulto falsa esto implica que el dato no esta en cache y debe buscarse en memoria principal.
La idea ahora es buscar el bloque de memoria principal donde se encuentra el dato.
Esto se hace comparando los bits que corresponden tanto t anto a la etiqueta como a la línea
cache (s) y una vez ubicado en el bloque se direcciona dire cciona el dato en memoria principal. Este se entrega al CPU y el bloque de memoria principal es cargado en cache, en la línea
que la dirección del dato específica.
Un bloque de memoria principal sólo puede ir a una línea
Ventajas:
Accesos a cache rápidos y sencillos Inconvenientes: Reemplazamientos reiterados cuando se producen accesos iterativos y consecutivos sobre bloques a los que les corresponde la misma línea. Es decir, ciertas situaciones de localidad de referencia refe rencia temporal puede ser incluso mejor no usar la caché.
Cada bloque de memoria puede ir a cualquier línea de la caché. Las direcciones están formadas por: Etiqueta Palabra
Se utilizan los bits de la dirección del dato al leer que corresponden al campo etiqueta, se compara con cada etiqueta de cada bloque para verificar veri ficar si el dato esta en la cache. ca che.
acierto, ierto, entonces esto implica Si el dato esta en la cache, es decir la comparación resulto ac que el dato a buscar esta en cache, luego con los bits que corresponden a la palabra se direcciona el dato en la cache y se entrega al CPU.
Si el Bloque no esta en cache se realiza el mismo procedimiento que en la correspondencia directa.
Ventaja:
Dos bloques con localidad de referencia temporal no competirían por la misma línea Inconveniente: Aumenta la complejidad de los accesos
Correspondencia asociativa por conjuntos Correspondencia asociativa por conjuntos.
La caché se divide en n conjuntos, cada uno de k líneas.
Un
bloque de memoria principal
va al conjunto que le corresponde (en cualquiera de sus líneas). Las direcciones están formadas por Etiqueta Conjunto Palabra
Se utilizan los bits de la dirección del dato a lee r que corresponden al conjunto de cache para ubicarnos en el conjunto de cache donde se supones esta el dato.
l eer que corresponden a la etiqueta de ese Se comparan los bits de la dirección del dato a leer conjunto en particular con todas las etiquetas del conjunto (s-d). Con el fin de verificar si el bloque de memoria esta en cache.
Luego sigue igual que en correspondencia asociativa
Algoritmos de sustitución
Algoritmos de sustitución:
Nos indica la línea que debe ser reemplazada.
En el caso de correspondencia directa no hay problemas (sólo puede ir a una línea).
LRU (Least Recentlly Used: Menos Recientemente Utilizado). Se reemplaza la línea que se usó hace más tiempo
FIFO (First Input First Output: El primero en entrar es el primero en salir). Se reemplaza la línea que se cargó en memoria hace más tiempo.
LFU (Least Frecuently Used: Menos Frecuentemente Utilizada). Se reemplaza la línea que se usa con menos frecuencia.
Aleatorio: El bloque reemplazado se selecciona de forma aleatoria.
. Sencillo de implementar y muy rápido.
No tiene en cuenta la utilización.
LRU (Least Recent Used): Selecciona el bloque que hace más tiempo que no se utiliza.
. Mejor relación coste/rendimiento.
. Sencillo de implementar para pocos bloques.
FIFO: Selecciona el bloque más antiguo de la cache. Se implementa por medio de contadores. Muy costoso en hardware.
LFU (least Frecuent used): Selecciona el bloque que se s e ha referenciado menos frecuentemente.
. Los bloques más usados no se sustituyen.
Muy costoso de implementar en hardware
Penaliza a los bloque más recientes.
Política de escritura.
Política de Escritura
Es el mecanismo que nos indica cuando se actualizan los datos en memoria principal.
Escritura inmediata: Cuando se modifica un dato en la caché, se modifica en en Memoria Principal. Inconveniente: Muchos accesos a memoria.
Post escritura: Sólo se escribe en memoria principal cuando el bloque ha sido modificado en caché y debe ser reemplazado. Inconveniente: caché y memoria principal pueden tener datos distintos.
Coherencia de caché.
Mecanismo de coherencia de caché.
Si hay una memoria principal y varias CP Us cada una con su caché, debemos mantener una relación lógica entre los datos en las cachés y la memoria principal.
Vigilancia
del bus en escritura inmediata: Si una caché escribe en memoria, las
demás activan un indicador señalando que esa línea ya no es valida.
Transparencia Hardware: Se utiliza Hardware adicional para modificar todas las cachés.
Memoria excluida de la caché: Los datos que se pueden compartir entre procesadores se excluyen de la caché, sólo pueden estar en memoria principal.
Todos los accesos a memoria compartida son fallos de Cache. Se emplean direcciones de memoria alta para la memoria compartida.
Otros elementos.
Otros elementos del diseño de una caché.
Caché de dos niveles: Puedo definir dos niveles de caché.
Caché unificada frente a partida: Puedo definir una caché para datos y otra para instrucciones o bien una única caché dónde se almacena todo.
Longitud de la línea. Cuanto mayor longitud tenga la línea, menos fallos tendremos, pero un fallo supone un coste muy alto (hay que trasvasar muchos datos de la memoria principal a la caché).
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.