QUÉ ES LA MEMORIA CACHÉ? Es una memoria de acceso rápido que se encuentra entre la CPU y la MEMORIA PRINCIPAL El ser pequeña y rápida es muy útil para acceder a datos o instrucciones recientemente accedidas CPU CACHE Rápida Pequeña MEMORIA PRINCIPAL Lenta Mayor tamaño
Principio de localidad de referencia LOCALIDAD TEMPORAL MUY PROBABLE REPETIR INSTRUCCIONES LOCALIDAD ESPACIAL MUY PROBABLE EJECUTAR INSTRUCCIONES CERCANAS
Ejemplo de localidad espacial Principio de localidad espacial: Si un ítem es referenciado, es altamente probable que se referencie a los ítems vecinos a éste. Ejemplo: Algoritmo de convolución for (i = 0 ; i < 256 ; i++ ){ suma = 0.0f; for (j = 0 ; (j <= i && j < 256) ; j++) suma += v0[i-j] * v1[j]; faux[i] = suma; } i, j, suma, se utilizan a menudo. Por lo tanto si se mantienen en el cache, el tiempo de acceso a estas variables por parte del procesador es óptimo.
Cómo se realiza una operación Lectura de Memoria Inicio CPU envía señal de lectura Hit!! Busca ítem en cache Miss Busca ítem en memoria del sistema Busca ítem en cache y envía a la CPU Escribe ítem en el cache Actualiza directorio cache Envía ítem a la CPU Fin
Qué es el hit rate? El tamaño de la memoria cache debe ser: Suficientemente grande para que el procesador resuelva la mayor cantidad posible de búsquedas de código y datos en esta memoria asegurando una alta performance Suficientemente pequeña para no afectar el consumo ni el costo del sistema. Se dice que se logra un hit cuando se accede a un ítem (dato o código) y éste se encuentra en la memoria cache. En caso contrario, se dice que el resultado del acceso es un miss. Se espera un hit rate lo mas alto posible hit rate= Cantidad de accesos con presencia en Memoria Cache Cantidad total de accesos a memoria
Práctica Cómo se mide la efectividad de la caché? Tiempo medio de acceso a la memoria T acceso =T acceso cache P acierto + T acceso MP (1-P acierto ) Ejemplo: Dados T acceso MP =500ηs ; T acceso cache= 50ηs; P acierto =0.99 Caculo el tiempo de acceso con cache T acceso =50 ηs* 0.99 + 500 ηs *0.01= 54.5 ηs Es efectivo que tenga cache? Mejora? En cuánto? Indice de mejora= 54.5 ηs / 500 ηs = 9.19
Estructura de Memoria Cache y Memoria Principal Línea: Elemento mínimo de palabra de datos dentro del cache. Corresponde a un múltiplo del tamaño de la palabra de datos de memoria. Razón: Cuando se direcciona un ítem en memoria generalmente se requerirá de los ítem que lo rodean (Principio de vecindad espacial)
Tranferencias Cpu (bytes) palabras Cache Divida en líneasl Bloque Memoria Principal Está divida en bloques Qué se transfiere cpu-cache y entre cache-memoria principal
Mapeo Dado que hay muchas menos líneas en cache que en memoria principal es necesario un algoritmo para mapear bloques de memoria principal en líneas de cache. La elección de la forma de mapeo la impone la manera en que la cache esá organizada.
Organización de MEMORIA CACHE Mapeo directo Asociativa Asociativa por conjuntos A continuación se verán cada técnica seguida de un ejemplo especifico, que tiene los siguientes elementos: Cache de 64 KB Los datos son transferidos desde la memoria principal y la cache en bloques de 4 bytes cada transferencia. (Entonces la cache esta organizada en 2^14 lineas de 4 bytes ) La memoria principal consiste en 16 MB, con direccionamiento a byte, 2^24 direcciones. O sea direcciones de 24 bits.
Correspondencia Directa o Mapeo Directo Esta es la técnica más simple En cada linea pueden alojarse 4 palabras, en cada bloque de memoria principal hay 4 palabras. El mapeo se expresa i= j mod m Donde i= nro de linea de cache; j bloque de memoria principal, m nro de lineas de la cache.
Ejemplo Cache Mapeo Directo
ASOCIATIVA
EJEMPLO: ASOCIATIVA
ASOCIATIVA POR CONJUNTOS DE N VIAS
EJEMPLO:
Políticas Si el bloque está en caché Si el bloque no está en caché HIT Política de ubicación F. de correspondencia Traerlo de Memoria Principal Donde se ubica? Política de sustitución Si la caché está llena Dónde se ubica? Es una escritura
Políticas de sustitución Algoritmos de reemplazo del contenido de la memoria cache LRU: Least Recently Used. Se corresponde con el principio de vecindad temporal. LFU: Least Frecuently Used FIFO
Recomendados Stalling, William. Computer Organization and Architecture. Fifth edition. Prentice Hall. Tanenbaum, Andrew S. Organización de computadoras : un enfoque estructurado (4ª Ed) Prentice Hall; 2000