La memoria caché es una de las especificaciones más importantes del procesador y es un dato que siempre nos proporcionan los fabricantes. Seguramente te has planteado alguna vez que es la memoria caché y para qué sirve, para tratar de solucionar estas dudas hemos elaborado este artículo en el que tratamos de explicarlo de una forma muy sencilla y entendible.
El objetivo de este artículo no es profundizar en los conceptos relacionados en este sistema de memoria sino explicarlo de una forma clara y entendible.
Índice de contenidos
Antes de ver que es la memoria caché necesitamos tener claro cómo funciona un procesador en nuestros ordenadores, de una forma muy simple lo podemos resumir diciendo que este toma los datos e instrucciones que necesita para trabajar de la memoria RAM. Cuando el procesador necesita acceder a una información para hacer sus tareas, esta información es pedida a la RAM que la proporciona al procesador tan rápido como puede. Este proceso no es instantáneo, sino que se necesita un tiempo, varios ciclos de reloj dependiendo de la latencia, solo son unos nanosegundos, pero, aunque a nosotros nos parezca que no es nada en realidad es un mundo y mientras el procesador está esperando se pierde la oportunidad de hacer otros cálculos y operaciones.
Para solucionar este problema se creó la memoria caché, esta no es más que una pequeña cantidad de memoria que está dentro del procesador, la finalidad de la memoria caché es hacer que el acceso a la información por parte del procesador sea lo más rápida posible. La memoria caché está dentro del procesador por lo que la información tiene que viajar muy poco hasta llegar al lugar donde se procesa, por lo que el tiempo que se necesita para acceder a ella es mucho más reducido que en el caso de la RAM.
La cantidad de esta memoria es minúscula en comparación con la RAM, un PC de gama alta actual puede tener capacidades del orden de GB o más de RAM pero la cantidad de caché máxima está en el orden de KB y MB generalmente. Esto también tiene su importancia ya que el tiempo que se necesita para acceder a un dato en la memoria es proporcional a la cantidad de esta. Por tanto, tenemos que el acceso a la caché es mucho más rápido que el acceso a la RAM y además está más cerca y los datos tienen que viajar menos distancia.
La memoria caché del procesador está organizada en varios niveles, la mayoría de los procesadores actuales tienen tres niveles de esta memoria, es lo que se conoce como caché L1, L2 y L3… hasta la LLC (Last Level Cache), que es el último nivel que se implementa, sea una L2, una L3, L4, etc. Los niveles más bajos son los más rápidos, pero con menor capacidad, mientras los niveles más altos están algo más alejados de la unidad de control y se tarda algunos ciclos más en acceder, sin embargo, son de mayor capacidad.
Además, la memoria cache L1 suele estar separada en L1 de instrucciones, donde solo se almacenan instrucciones, y la L1 de datos, solo para datos, mientras la L2 y niveles superiores está unificada, es decir, compartida por datos e instrucciones.
Los niveles más altos, en los procesadores multinúcleo, pueden estar compartidos o no. Por ejemplo, puede que un procesador de 8 núcleos tenga una ocho L1 para cada núcleo, pero sin embargo comparta la L2 para dos núcleos, o tal vez la L3 esté compartida por los ocho.
Por último, la memoria caché explota dos conceptos básicos para acelerar el procesamiento: localidad y velocidad. Es decir, está situada en un lugar cercano a las unidades de procesamiento o núcleos, para reducir la latencia, sin necesidad de ir «tan lejos» a buscarla a la RAM o a algún lugar de la memoria virtual del sistema. Por otro lado, son memorias muy caras, por ese motivo no tienen capacidades demasiado grandes, ya que tendrían costes muy elevados debido a que las celdas de memoria tienen tiempos de acceso muy rápidos frente a otras celdas de otros tipos de memoria, como la RAM, la flash, etc.
Para que te hagas una idea, acceder a la memoria principal, o RAM, se puede demorar unos 100 ciclos de reloj, lo que equivaldría a unos 50 ns. Puede parecer poco, pero son 100 ciclos en los que el procesador podría haber ejecutado decenas de instrucciones y ha tenido que esperar. En cambio, para acceder a la L1, por su baja latencia, podría hacerlo entre 3-5 ciclos nada más, mientras que para la L2 puede ir desde los 8-20 ciclos, y desde 30-80 ciclos para la L3. Esto significa una ganancia de tiempo que se traduce en un aumento del rendimiento bastante considerable.
Tal es el aumento del rendimiento, que últimamente está proliferando un nuevo paradigma en el que se le da bastante importancia al acercamiento de los datos e instrucciones a las unidades de procesamiento usando memorias HBM cercanas a los núcleos, caché empaquetada sobre la unidad de procesamiento (3D), etc.
Y es algo bastante obvio, imagina que tienes que desempeñar un trabajo de bricolaje para el que necesitas materia prima (datos) y las herramientas (instrucciones). ¿Cómo puedes realizar el trabajo más rápidamente? ¿Si tienes todas las materias primas y las herramientas a tu lado (caché)? ¿O si tienes que ir al trastero donde las guardas a por ellas (RAM) o tal vez a la ferretería cercana (disco duro)?
Cuando la memoria caché contiene un dato o instrucción que la CPU está buscando, se dice que se produce un acierto (hit), mientras que si no lo contiene se produce un fallo (miss). Según el hit rate y miss rate de un sistema, se tendrá mayor o menor rendimiento. Ten en cuenta que si la capacidad de la caché es mayor, hay más posibilidades de que una información buscada esté y no haya sido borrada para almacenar otra información diferente. Aunque esto no solo depende del tamaño de la caché, también de las políticas y algoritmos empleados, etc.
Imaginemos una CPU con 3 niveles de caché, y que dicha CPU quisieses localizar una instrucción y un dato para ejecutarlos. Podría ocurrir lo siguiente:
He agregado el E/S como si fuese una memoria principal más, ya que éste también es tratado como un sistema de memoria a «ojos» de la CPU. Hay datos entrantes por parte de los periféricos de entrada (leer), y datos salientes para los periféricos de salida (escribir).
Te recomendamos nuestro artículo de qué es y cómo funciona le memoria caché L1, L2 y L3.
Los tipos de memoria caché se pueden catalogar teniendo en cuenta diversos parámetros, como por ejemplo:
Como resumen y conclusión podemos decir que la memoria cache del procesador es la solución al problema de rendimiento del sistema de memoria, esta se encarga de acelerar las lecturas y escrituras que necesita hacer el procesador sobre el sistema de memoria principal para conseguir un mayor rendimiento general del sistema.
Te recomendamos la lectura de nuestras guías más interesantes:
Se trata de una memoria que está dentro del propio procesador en cantidades muy reducidas, pero es extremadamente importante para que este pueda funcionar correctamente.