ORGANIZACION Y RENDIMIENTO DE LA MEMORIA CACHE
8:43 | Author: Ricardo Silva Asenjo

INTRODUCCION

Una memoria caché es una memoria en la que se almacenas una serie de datos para su rápido acceso. Existen muchas memorias caché (de disco, de sistema, incluso de datos, como es el caso de la caché de Google), pero en este tutorial nos vamos a centrar en la caché de los procesadores.



Básicamente, la memoria caché de un procesador es un tipo de memoria volátil (del tipo RAM), pero de una gran velocidad.

En la actualidad esta memoria está integrada en el procesador, y su cometido es almacenar una serie de instrucciones y datos a los que el procesador accede continuamente, con la finalidad de que estos accesos sean instantáneos. Estas instrucciones y datos son aquellas a las que el procesador necesita estar accediendo de forma continua, por lo que para el rendimiento del procesador es imprescindible que este acceso sea lo más rápido y fluido posible.

Caché de memoria: De acuerdo a la ubicación física que tienen en elsistema se denominan o identifican por niveles:

-Nivel 1 (L1): Conocido como caché interno, es el nivel más cercano a la CPU (está en el mismo núcleo) con lo que el acceso se produce a la velocidad de trabajo del procesador (la máxima velocidad). Presenta un tamaño muy reducido, en Intel (4 a 32 KB), en VIA/Cyrix (1 a 64 KB), en AMD (8 a 128 KB).
-Nivel 2 (L2): Conocido como caché externo, inicialmente se instalaba en la placa base (en el exterior de la CPU). A partir de los procesadores Pentium 4 vienen incorporado en el procesador (no precisamente en el núcleo). El nivel L2 apareció con el procesador Pentium Pro, es una memoria más lenta que L1, pero de mayor capacidad. Los tamaños típicos de la memoria caché L2 oscilan en la actualidad entre 256 KB y 4 MB.
-Nivel 3 (L3): Se encuentra en algunas placas base, procesadores y tarjetas de interfaz. El procesador de Intel Itanium trae contenida en su cartucho al nivel L3 que soporta un tamaño hasta de 4 MB, y el Itanium 2 tolera hasta 6 MB de caché L3.
-Nivel 4 (L4): Se encuentra ubicado en los periféricos y en algunos procesadores como el Itanium.

Caché de memoria RAM: La memoria principal RAM suele hacer de caché para los dispositivos de almacenamiento y otros tipos de periféricos.

Caché en disco duro: Utilizadas por los navegadores Web y algunos periféricos.
La búsqueda de información comienza por la caché L1, y se va subiendo nivel a nivel en caso de no encontrar lo que se busca en el nivel actual. Cuantas más capas se asciende, mayor es el tiempo de espera. Pero, a mayor cercanía a la CPU, la probabilidad de encontrar lo que se busca es mayor. Esta forma de trabajo resulta una excelente relación de compromiso entre diversos factores, y consigue mejorar el rendimiento del ordenador de forma notable.

DISEÑO DE LA MEMORIA CACHE

En el diseño de la memoria cache 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 cache y de sus bloques.

Política de ubicación

Decide dónde debe colocarse un bloque de memoria principal que entra en la memoria cache. 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 cache.
Asociativa: Cualquier bloque de memoria principal puede ir en cualquiera de los n bloques de la memoria cache.

Asociativa por conjuntos: La memoria cache 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 cache. Existen dos políticas muy extendidas:

Por demanda: Un bloque sólo se trae a memoria cache cuando ha sido referenciado y se produzca un fallo.

Con prebúsqueda: Cuando se referencia el bloque i-ésimo de memoria principal, se trae además el bloque (i+1)-esimo. Esta política se basa en la propiedad de localidad espacial de los programas.

Política de reemplazo

Determina qué bloque de memoria cache 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 cache. Este algoritmo generalmente es poco eficiente.

Menos recientemente usado (LRU): Se sustituye el bloque que hace más tiempo que no se ha utilizado.

Menos frecuentemente usado (LFU): Se reemplaza el bloque que se ha usado con menos frecuencia.

Siendo la Aleatoria y la LRU las de mejor rendimiento.

Política de escritura

Determina cuándo se actualiza la información en memoria principal cuando se ha escrito en memoria cache. Existen dos políticas principales:

Escritura inmediata o escritura directa: En inglés Write Through. Cuando se escribe en un bloque que se encuentra en memoria cache, la información se modifica también simultáneamente en memoria principal, manteniendo así la coherencia en todo momento. Suele combinarse con la técnica de "No carga en escritura" (No Write Allocation) que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, la modificación se realizará únicamente en memoria principal, sin traer dicho bloque a cache, y además sólo se actualizará la palabra concreta que haya cambiado.

Escritura aplazada o post-escritura: En inglés Write Back. Cuando se escribe en un bloque que se encuentra en memoria cache, queda marcado como basura usando un bit especial llamado normalmente dirty bit o bit de basura. Cuando el bloque sea desalojado de memoria cache (mediante la correspondiente política de reemplazo), se comprueba el bit de basura, y si está activado se escribe la información de dicho bloque en memoria principal. Esta política suele combinarse con la técnica de "Carga en escritura" (Write Allocation), que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, traeremos a cache el bloque en cuestión y lo modificaremos ahí.
This entry was posted on 8:43 and is filed under . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.