¿Qué es la memoria caché?
La definición de memoria caché en informática nos dice que es uno de los recursos con los que cuenta una CPU (Unidad Central de Procesamiento) para almacenar temporalmente datos recientemente procesados en una memoria auxiliar. Se trata de lo que se conoce como una memoria estática de acceso aleatorio (SRAM) muy rápida y colocada cerca de la CPU.
Así, pese a su pequeño tamaño, la memoria caché opera con mayor velocidad, dotando al microprocesador de un tiempo extra para acceder a los datos que se usan con más frecuencia.
¿Para qué sirve la memoria caché?
La principal función de la memoria caché es almacenar datos o instrucciones que la CPU va a necesitar en un futuro inmediato, de manera que se gana velocidad en la ejecución de procesos, evitando que la CPU tenga que esperar y aumentando así el rendimiento del equipo.
De manera que la memoria caché sirve para mejorar el rendimiento y velocidad de la CPU en la ejecución de las tareas cotidianas.
¿Cómo funciona la memoria caché?
El funcionamiento de la memoria caché es bastante sencillo; cuando iniciamos un proceso o programa en nuestro ordenador, este empieza a ejecutar una serie de instrucciones que son gestionadas por el procesador. Esa información se carga primero en la RAM y luego pasa al procesador, de manera que para agilizar este proceso, las instrucciones principales y las que más se utilizan se copian en la memoria caché, así el procesador podrá tener acceso inmediato a ellas y no tener que ir a buscar las originales almacenadas en la RAM.
Esto ahorra tiempo de procesamiento y hacer que el equipo sea más rápido a la hora de ejecutar ciertas instrucciones disponibles en la memoria caché. Por eso, la memoria caché es un elemento fundamental en los procesadores actuales.
Podemos decir que la memoria caché funciona como una memoria de instrucciones transitoria.
3 formas de almacenar datos en caché
Aunque las configuraciones de almacenamiento en la caché van evolucionando a medida que avanza y se desarrolla la tecnología actual, hay 3 configuraciones que se usan normalmente para almacenar datos en ella:
Memoria caché asignada directa: Se asigna una localización exacta a cada bloque en la memoria caché. Se trata de un caché mapeado directo, que funciona como una tabla con tres columnas, en la que el bloque de caché contiene los datos reales recuperados y almacenados, una etiqueta con toda o parte de la dirección de esos datos recuperados y un bit de bandera que muestra la presencia en la entrada de la fila de un bit de datos válido.
Mapeo de caché completamente asociativo: Funciona de forma similar al anterior, pero permite mapear un bloque de memoria en cualquier ubicación de caché en vez de en una ubicación de memoria caché previamente especificada.
Mapeo de caché asociativo: A medias de los otros dos, aquí cada bloque se mapea a un subconjunto de ubicaciones de caché.
Latencia, ancho de bus y la falta de cache
Hemos entendido que los datos fluyen desde el disco duro hasta el núcleo de procesamiento a través de todos los niveles de memoria. Donde primero busca el procesador la siguiente instrucción a procesar, es en la memoria caché, un sistema de calidad debería se saber ubicar correctamente los datos en función de su importancia para así reducir al máximo los tiempos de acceso a ellos, lo que se llama latencia.
La latencia es entonces, el tiempo que se tarda en acceder a los datos desde la memoria. Mientras más lejos y más lenta, mayor latencia y más tiempo tendrá que esperar la CPU su siguiente instrucción. Así cuando una instrucción no está situada en la memoria caché, el procesador debe buscarla directamente en la memoria RAM, a esto se le denomina falta de caché o caché miss, es entonces cuando se experimenta un PC más lento.
El ancho de bus también es de gran importancia para la velocidad, ya que éste marca la capacidad para transferir mayores bloques de datos desde la memoria a la CPU. Tanto CPU como memoria RAM son de 64 bits, pero la función de Dual Channel es capaz de doble esta capacidad a 128 bits para que la transferencia entre estos elementos tenga mayor capacidad.
AMAT son las siglas de Average Memory Access Time, o tiempo medio de acceso a memoria. Es una media por el hecho que no todas las instrucciones una CPU o una GPU tienen la misma latencia y dependen de la memoria de la misma manera. Pero al mismo tiempo nos sirve para medir el rendimiento de la caché de una CPU o una GPU.
Para calcular el AMAT de cualquier CPU o GPU se utiliza la siguiente fórmula:
AMAT = Hit Time + Miss Rate * Miss Penalty
Lo que nos interesa es que el AMAT sea bajo, ya que mide el tiempo de acceso de la CPU a los datos y por tanto la latencia a la hora de encontrar los datos. En cuanto a los diferentes valores de la fórmula AMAT para medir el rendimiento de la memoria caché estos son los siguientes:
El primer valor que es el Hit Time, que es el tiempo en que la CPU o la GPU tardará en encontrar el dato en la caché. En este caso es importante que la caché sea pequeña para que su recorrido se pueda realizar más rápido. Ya que cuanto más grande sea la caché entonces se tardará más en hacer el recorrido. Este es el motivo por el cual los niveles de caché más cercanos al núcleo tienen tamaños muy pequeños.
El segundo valor es el Miss Rate, que es el porcentaje de veces en los que los datos no se encuentran en la caché. Esto entra en contradicción con el Hit Rate, ya que la mejor manera de encontrar un dato en caché es aumentar la capacidad de almacenamiento de esta. La caché además ha de tener mecanismos para saber qué datos ha de conservar en su interior, para dar espacio a otros que van a tener un mayor acceso a corto plazo por parte de las CPU o las GPU.
El tercer valor es el Miss Penalty, este es el tiempo de latencia que se tarda en acceder a un dato si se encuentra en la memoria RAM y no en la caché. Esto supone un tiempo enorme en lo que a ciclos de reloj se refiere. Ya que como es obvió, en el caso de que el datos se encuentre en la RAM y no en la caché se ha de sumar el tiempo de búsqueda previó en la jerarquía de caches previa a la RAM.
El rendimiento de la memoria caché dependerá por tanto de cómo se optimice el Hit Time o el Miss Rate, dado que optimizar un apartado supone perjudicar al otro, los arquitectos han de decidir a qué valor le dan más importancia a la hora de diseñar una nueva CPU o una nueva GPU.