jueves, 10 de junio de 2010

MEMORIA CACHE

La memoria caché es una clase de memoria RAM estática (SRAM) de acceso aleatorio y alta velocidad, situada entre el CPU y la RAM. Se presenta de forma temporal y automática para el usuario, y le proporciona acceso rápido a los datos de uso más frecuente.



La ubicación de la caché entre el microprocesador y la RAM, hace que sea suficientemente rápida para almacenar y transmitir los datos que el microprocesador necesita recibir casi instantáneamente. Aunque como su capacidad es mucho menor que la RAM los datos de la caché son reemplazados constantemente, en teoría, solo los datos más comúnmente usados permanecerán por periodos más largos.

Las funciones de la caché son las siguientes:


• Acelerar el procesamiento de las instrucciones de memoria en la CPU.


• Las computadoras tienden a utilizar las mismas instrucciones y (en menor medida), los mismos datos repetidamente, por ello la caché contiene las instrucciones más usadas.


• Por lo tanto, a mayor instrucciones y datos la CPU pueda obtener directamente de la memoria caché, tanto más rápido será el funcionamiento de la computadora.


Una memoria caché es una memoria en la que se almacena 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). Básicamente, la memoria caché de un procesador es un tipo de memoria volátil (del tipo RAM), pero de una gran velocidad.



En informática, es un tipo de memoria que se coloca entre la memoria principal y la CPU y que acelera el funcionamiento del ordenador o computadora, ya que permite ejecutar instrucciones y leer y escribir datos  a una gran velocidad. Se denomina también CPU caché. Es un banco de memoria especial, a diferencia de la caché de disco, que es una parte de la memoria RAM del ordenador.




Hay tres tipos diferentes de memoria caché para procesadores:




Caché de 1er nivel (L1):


Esta caché está integrada en el núcleo del procesador, trabajando a la misma velocidad que este. La cantidad de memoria caché L1 varía de un procesador a otro, estando normalmente entra los 64KB y los 256KB. Esta memoria suele a su vez estar dividida en dos partes dedicadas, una para instrucciones y otra para datos.
Caché de 2º nivel (L2):


Integrada también en el procesador, aunque no directamente en el núcleo de este, tiene las mismas ventajas que la caché L1, aunque es algo más lenta que esta. La caché L2 suele ser mayor que la caché L1, pudiendo llegar a superar los 2MB. A diferencia de la caché L1, esta no está dividida, y su utilización está más encaminada a programas que al sistema.


Caché de 3º nivel (L3):

Esta memoria es un tercer nivel que soportan principalmente los procesadores de la firma AMD®. Con este nivel de memoria se agiliza el acceso a datos e instrucciones que no fueron localizadas en L1 ó L2. Si no se encuentra el dato en ninguna de las 3, entonces se accederá a buscarlo en la memoria RAM.


La memoria caché funciona de la siguiente manera:

• Cuando un programa está ejecutándose y la CPU necesita ir a traer datos (o más instrucciones) a la RAM, primero verifica que los datos estén en la memoria caché.

• Si no los encuentra en la caché, traerá una copia de esos datos de la RAM a la CPU y también realizará una copia en la memoria caché.

• La próxima vez que los necesita, los irá a buscar a la memoria caché, de donde los podrá extraer más rápidamente.

• El último bloque de datos leído desde la RAM también se copia en la memoria caché. Este bloque es, con mucha probabilidad, el mismo que se necesitará en la próxima lectura de datos.
Mapeo

Al pasar los datos desde la memoria principal a la memoria caché estos se traen por bloques. El motivo de llevar los datos por bloques se debe a que, por ejemplo, si el procesador pide el dato de la dirección entonces es muy probable que después pida el dato de la dirección n+1, por lo tanto, se ahorra tiempo al llevar los datos por bloques a la caché. Por otro lado la memoria caché es de poca capacidad, en relación con la memoria principal, por lo tanto cobra importancia el tema de que y como poner datos en la memoria caché. Es necesario entonces contar con un proceso de conversión de las direcciones, que se llama mapeo y se clasifica de la siguiente manera:

• Mapeo Directo
• Mapeo Asociativo (totalmente asociativo)
• Mapeo Asociativo por conjunto

Caché de mapeo directo

La memoria RAM se divide en porciones de igual tamaño, de acuerdo a la cantidad de líneas de caché existan. Cada línea de caché es un recurso a compartir por las direcciones de memoria de una porción diferente. Por ejemplo, si se dispone de una RAM de 64 MB y la caché de 512 KB, cada línea podrá almacenar 32 de las 4.096 direcciones que contiene la porción de RAM asociada (64 MB/ 16.384 líneas = 4.096 bytes / línea).

Esta técnica permite una búsqueda muy rápida, ya que cada posición de RAM sólo puede estar en una determinada línea. Sin embargo, la probabilidad de encontrar la información buscada es mínima.

Ventajas: Este método es rápido, fácil de implementar y sencillo de usar.

Desventajas: Con este sistema se produce un efecto llamado Contención que se produce cuando dos cosas quieren usar un mismo elemento. Este efecto reduce drásticamente el rendimiento del procesador.


Caché completamente asociativa

Una caché asociativa (a veces denominada totalmente asociativa) es aquella en la que una línea de caché se puede colocar en cualquier localidad de caché; por tanto, elimina los fallos de conflicto. Tal caché es muy difícil de implementar porque necesita comparar miles de tags contra la tag deseada para cada acceso.

Cada línea de caché se puede llenar con cualquier grupo de posiciones de la memoria RAM. En este caso, el porcentaje de acierto es máximo. En cambio, el tiempo de acceso es muy elevado, puesto que una posición de RAM puede estar en cualquier línea de caché (esto es lento, incluso empleando algoritmos de búsqueda avanzados).

 
 
 
 
 
 
 
 
 
Caché asociativa por conjuntos

La caché se divide en conjuntos de N líneas, a cada conjunto se le asocia un grupo de posiciones de RAM. Dentro del conjunto asignado, una posición de RAM puede ir a parar a cualquiera de las N líneas que lo forman, es decir dentro de cada conjunto la caché es totalmente asociativa. Esta situación es la más equilibrada, puesto que se trata de un compromiso entre las técnicas anteriores. Si se hace N=1, se tiene una caché. De mapeo directo. Si N es igual al número de líneas de la caché, se tiene una caché completamente asociativa. Si se escoge un valor de N apropiado, se alcanza la solución óptima.

Normalmente, la caché L2 es de mapeo directo, mientras que la caché L1 es asociativa por conjuntos de N líneas.