Memoria caché
Keywords: Memoria caché, Acrónimo, Aleatorio, Bit, Caché, Caché de disco, Coherencia, Español, FIFO
La memoria caché es un tipo especial de memoria que poseen los ordenadores. Esta memoria se situa entre el microprocesador y la memoria RAM y se utiliza para almacenar datos que se utilizan frecuentemente. Esta memoria permite agilizar la transmisión de datos entre el microprocesador y la memoria principal. Es de acceso aleatorio (también conocida como acceso directo) y funciona de una manera similar a como lo hace la memoria principal (RAM), siendo la memoria caché mucho más rápida que la RAM. Por otro lado el término caché puede utilizarse también para una zona de memoria de disco denominado caché de disco (Disk cache o Cache buffer en inglés).
| Tabla de contenidos |
|
|
Características generales
Con el aumento de la rapidez de los microprocesadores ocurrió la paradoja de que las memorias principales no eran suficientemente rápidas como para poder ofrecerles los datos que éstos necesitaban. Por esta razón, los ordenadores comenzaron a construirse con una memoria caché interna situada entre el microprocesador y la memoria principal. Además la caché contiene los datos que más se usan para reducir el tiempo de espera a los mismos. Por supuesto este aumento de velocidad (unas 5 veces más rápida) conlleva un elevado aumento de precio.
Existen dos tipos de memoria caché cuyo funcionamiento es análogo:
- L1 o interna (situada dentro del propio procesador y por tanto de acceso aún más rápido y aún más cara). La caché de primer nivel contiene muy pocos kilobytes (unos 32 ó 64 Kb).
- L2 o externa (situada entre el procesador y la RAM). Los tamaños típicos de la memoria caché L2 oscilan en la actualidad entre 256 kb y 1 Mb.
Composición interna
Las memorias caché están compuestas por dos elementos distintos: un directorio que almacena etiquetas que identifican la dirección de memoria almacenada y bloques de información, todos de igual tamaño, que guardan la información propiamente dicha.
Diseño
En el diseño de la memoria caché se deben considerar varios factores que influyen directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria. Estos factores son las políticas de ubicación, extracción, reemplazo, escritura y el tamaño de la caché y de sus bloques.
Política de ubicación
decide donde debe colocarse un bloque de memoria principal que entra en la memoria caché. Las más utilizadas son:
Directa
El bloque i-esimo de memoria principal le corresponde la posición i módulo k donde k es el número de bloques de la memoria caché.
Asociativa
Cualquier bloque de memoria principal puede ir en cualquier bloque de memoria caché.
Asociativa por conjuntos
La memoria caché se divide en varios conjuntos de n bloques, así al bloque i-esimo de memoria principal le corresponde el conjunto i módulo (k/n) donde k es el número de bloques de memoria caché.
Política de extracción
La política de extracción determina cuando y cual bloque de memoria principal hay que traer a memoria caché. Existen dos políticas muy extendidas:
Por demanda
Un bloque solo se trae a memoria caché cuando ha sido referenciado y se produzca un fallo.
Con prebúsqueda
Cuando se referencia el bloque i-esimo de memoria principal, se trae además el bloque (i+1)-esimo.
Política de reemplazo
Determina que bloque de memoria caché debe abandonarla cuando no existe espacio disponible para un bloque entrante. Hay tres políticas muy importantes que son:
Aleatoria
El bloque es reemplazado de forma aleatoria.
FIFO
Se usa un algoritmo FIFO(First In First Out, el primero que entra es el primero que sale) para determinar que bloque debe abandonar la caché. Este algoritmo, generalmente es poco eficiente.
LRU
Acrónimo inglés de Least Recently Used (Español: El menos recientemente usado). Determina el bloque que hace más tiempo que no se referencia, y determina que éste debe ser el que debe abandonar la caché. Como esta política es difícil de implementar en hardware normalmente se usan versiones un poco simplificadas.
Política de escritura
Determina cuándo se actualiza la información en memoria principal cuando se ha escrito en memoria caché. Existen dos políticas principales:
Escritura inmediata
También llamada en inglés Write Through. Cuando se escribe un bloque en memoria caché se actualiza directamente la información también en memoria principal, manteniendo la coherencia en todo momento.
Escritura aplazada
En inglés Write Back, cuando se escribe un bloque en memoria caché, se marca como sucio usando un bit especial llamado normalmente dirty bit. Cuando el bloque sea desalojado de memoria caché (mediante la correspondiente política de reemplazo), se comprueba el bit de sucio, y si está activado se escribe la información de dicho bloque en memoria principal. También es llamada como política de post-escritura.
