sábado, 28 de noviembre de 2015

Memorias cache



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.
 


No hay comentarios:

Publicar un comentario