Cómo funciona la memoria caché de la CPU y por qué es importante

Cuando hablamos de procesadores, casi siempre se suele mencionar el término «memoria caché» de los mismos, y como suele ser habitual, cuanta mayor cantidad tengan suele ser sinónimo de mejor rendimiento. Pero, ¿sabes cómo funciona la memoria caché de los procesadores y por qué es tan importante? Te lo contamos todo a continuación.

En la década de los 80, la velocidad de los procesadores se vio incrementada exponencialmente en comparación con los tiempos de acceso a la memoria. Rápidamente, se hizo evidente que había que hacer algo para mejorar la velocidad con la que se podía acceder a la memoria del PC para que el sistema fuera más eficiente, puesto que por mucho que el procesador fuera muy rápido, si no podía acceder rápidamente a los datos no servía de nada. Estas discrepancias entre la velocidad del procesador y los tiempos de acceso a la memoria fueron las que llevaron a crear la memoria caché.

¿Qué es la memoria caché?

Este componente, que a veces pasa desapercibido en pos de la cantidad de núcleos de los procesadores y su velocidad, fue todo un hito en la historia de la computación. A un nivel básico, la memoria caché es un tipo de memoria muy rápida que contiene un pequeño conjunto de instrucciones que el equipo utiliza con asiduidad para realizar sus tareas cotidianas. El equipo carga esas instrucciones en la caché usando algoritmos complejos para poder acceder a ellos de manera rápida, eficiente y sin más obstáculos de por medio.

Comunicacion CPU Caché RAM

En otras palabras, la caché es un tipo de memoria a la que el procesador tiene acceso directo, casi instantáneo, y en la que se almacenan los datos e instrucciones que más utiliza para «tenerlos a mano» de manera inmediata.

Niveles de caché en un procesador moderno

cpu niveles cache

Especificamos «procesador moderno» porque los primeros procesadores, en los cuales se comenzó a implementar este tipo de memoria, no funcionaban así. Los procesadores modernos tienen varios niveles de caché, diferenciados en L1, L2, L3 e incluso L4 en algunos casos (la L viene de «level», nivel en inglés, por lo tanto hablamos de caché de nivel 1, nivel 2, etc.).

La primera de ellas es la conocida como caché L1 y al ser la más cercana a las unidades de ejecución es la más rápida pero también la más pequeña de todas. Se suele dividir a día de hoy en dos bloques distintos, en uno de ellos se almacenan los datos a tratar y el otro las instrucciones, siendo estas últimas las acciones que ha de realizar el procesador. Es decir, por un lado son las operaciones que tiene que realizar el procesador, y por el otro la información que este debe procesar. La caché L1 se encuentra a nivel de cada núcleo y no del procesador entero y ninguna de las cachés L1 es coherente con el resto, lo cual no es algo que sea un problema por el hecho que solo su núcleo tendrá acceso a la misma.

El siguiente nivel es el de la caché L2, la cual es un poco más lenta, pero todavía muy rápida y con mayor capacidad que la caché L1. Se ha de tener en cuenta que cada nivel adicional contiene todos los datos de las cachés de nivel anterior. Históricamente la caché L2 sirve para comunicar varios núcleos y darles coherencia a la memoria y acceso, por lo que es una caché compartida. Esto es debido a que solo hay interfaz de memoria y este se ha de unificar a través de la caché.

Algunas arquitecturas de CPU pueden tener más niveles de caché, por ejemplo se suelen agrupar los núcleos en clústeres con una L2 en común para luego tener una L3 general. También puede ser que un núcleo tenga varios niveles de caché local o que una CPU tenga varios niveles de caché compartida, por lo que no es algo fijo.

¿Cómo funciona la memoria caché del procesador?

Cache Microscopio

La memoria caché no funciona igual que la memoria RAM, no podemos hacer que la CPU se dirija a una dirección concreta dentro de la caché. Esto es debido a que lo que hace la caché es copiar los datos que se encuentran en la RAM y son cercanos a la dirección de memoria que está ejecutando en ese momento la CPU, por lo que la caché copia en su interior las direcciones de memoria más cercanas a la memoria caché. Proporcionalmente hablando, hoy en día es habitual manejar capacidades de varios terabytes cuando hablamos de discos duros, mientras que cuando hablamos de RAM, esta cantidad se reduce a unos pocos gigabytes (hoy en día lo más habitual es ver 16 ó 8 GB de RAM). La caché, por su parte, es todavía mucho más pequeña, y de hecho se mide en megabytes o kilobytes.

Hemos de saber que los ordenadores tienen tres tipos de memoria: por un lado, está la memoria de almacenamiento, la que encontramos en discos duros y SSD, que suponen el repositorio más grande del equipo. Por otro lado, tenemos la memoria RAM, o memoria de acceso aleatorio, que es mucho más rápida pero más pequeña que la anterior. Finalmente tenemos la memoria caché que está dentro del propio procesador, que es el más rápido de todos pero también el más pequeño.

La manera en la que funciona este tipo de memoria es que, cuando se inicia un programa, este comienza a ejecutar una serie de instrucciones que se encuentran en su código y son gestionadas por el procesador. Esa información primero se carga en la RAM y luego pasa al procesador, pero para mejorar la eficiencia con la que esté la procesa, las instrucciones principales y más utilizadas se copian en la caché, de manera que el procesador pueda tener acceso inmediato a ellas. Y esto mejora el rendimiento en gran medida, por supuesto.

La secuencia de uso de la caché

microchiips

Vamos a ver el comportamiento de los datos a tenor de lo que hemos explicado ya: cuando se ejecuta un programa en el PC, los datos van a la memoria RAM, y desde ésta a la caché L3, luego a la L2 y finalmente a la L1. Mientras el programa esté en ejecución, el procesador irá a buscar la información que necesita procesador primero a la memoria más rápida, la caché L1. Si no la encuentra ahí, se irá a la L2, luego a la L3, y si no está en ninguna, entonces la buscará en la RAM.

Este es el motivo de que la memoria caché sea tan importante, así como lo son los tiempos de acceso. Imaginad que si cada vez que el procesador tiene que ejecutar una instrucción (y ejecuta miles por segundo) tiene que esperar un nanosegundo, que es lo que tarda el tiempo de acceso. La suma de este tiempo, al final, sucumbiría en una enorme pérdida de rendimiento, y volviendo al principio este era precisamente el problema que encontraron en los 80, y motivo por el que se creó la caché.

¿Cómo afecta la memoria caché a los juegos?

CPU AMD Ryzen 9 5900X

En algunos procesadores el tener un mayor tamaño de caché de nivel 3 compartida repercute directamente en los juegos, otorgando una mayor estabilidad de FPS o imágenes por segundo y un mejor tiempo de respuesta dado que no se tiene que acceder tan frecuentemente a la memoria principal, mucho mas lenta.

Cuanta más información se pueda guardar en esta caché, ya que será más grande, el procesador necesitará acceder menos veces a la memoria RAM y con ello incrementará el rendimiento general en juegos. Hay que tener en cuenta que no es lo único que incrementa el rendimiento de un ordenador, ya que si tenemos una CPU lenta por mucha caché que tenga seguirá siendo lenta. La combinación perfecta es una CPU con un alto IPC, una gran caché y memoria RAM a alta frecuencia y baja latencia.

Cache vs Scratchpad

Scratchpad RAM

La caché solo almacena la copia de los datos más cercanos en memoria a los que estamos utilizando, por lo que no se trata de un pozo de memoria por si mismo.

En cambio una Scratchpad RAM funciona como una memoria RAM al uso, independiente a las caches ya que la cache no esta asociada a ella y que se suele encontrar en algunos procesadores.

La diferencia entre ambas es que la cache no puede ser gestionada por el programa sino que es autogestionada, en cambio una memoria scratchpad se ha de manejar manualmente por el programa de la misma manera que estos manejan la RAM.

1 Comentario