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 dónde debe colocarse un bloque de memoria principal que entra en la memoria caché. Las más utilizadas son:
Directa: Al bloque i-ésimo de memoria principal le corresponde la posición i módulo n, donde n es el número de bloques de la memoria caché.
Asociativa: Cualquier bloque de memoria principal puede ir en cualquiera de los n bloques de la memoria caché.
Asociativa por conjuntos: La memoria caché se divide en k conjuntos de bloques, así al bloque i-ésimo de memoria principal le corresponde el conjunto i módulo k. Dicho bloque de memoria podrá ubicarse en cualquier posición de ese conjunto.
Política de extracción
La política de extracción determina cuándo y qué bloque de memoria principal hay que traer a memoria caché. Existen dos políticas muy extendidas:
Por demanda: Un bloque sólo se trae a memoria caché cuando ha sido referenciado y no se lo encuentre en memoria principal.
Con prebúsqueda: Cuando se referencia el bloque i-ésimo de memoria principal, se trae además el bloque (i+1)-ésimo. Esta política se basa en la propiedad de localidad espacial de los programas.
Política de reemplazo
Véase también: Algoritmos de reemplazo de páginas.
Determina qué bloque de memoria caché debe abandonarla cuando no existe espacio disponible para un bloque entrante. Básicamente hay cuatro políticas que son:
Aleatoria: El bloque es reemplazado de forma aleatoria.
FIFO: Se usa un algoritmo First In First Out FIFO (primero en entrar es el primero en salir) para determinar qué bloque debe abandonar la caché. Este algoritmo generalmente es poco eficiente.
Menos recientemente usado (LRU): Se sustituye el bloque que hace más tiempo que no se ha usado en la caché, traeremos a caché el bloque en cuestión y lo modificaremos ahí.
Menos frecuencias usadas (LFU): Se sustituye el bloque que ha experimentado menos referencias.
No hay comentarios:
Publicar un comentario