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

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

Rodrigo Alonso

Cuando hablamos de procesadores casi siempre se suele mencionar el término memoria caché y, como suele ser habitual, cuanta mayor cantidad tengan un sistema informático mejor rendimiento vamos a obtener. Pero, ¿sabes cómo funciona 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 mejorarla y que así el sistema fuera más eficiente, puesto que por mucho que el procesador fuera muy rápido no servirí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é por parte de los ingenieros, en lo que es una de las soluciones más eficaces que hemos visto a lo largo de toda la historia de la informática. ¿Qué haríamos sin cachés? Pues básicamente sufrir enormes atascos de información que colapsarían los sistemas.

 

¿Qué es la memoria caché?

No olvidemos que la definición más simple de lo que es un procesador es que se trata de un componente que manipula datos. Desgraciadamente, por limitaciones físicas estos no se encuentran en su mayoría dentro de él, sino en otro conjunto de chips a los que llamamos memoria RAM. Esto conlleva a que la comunicación entre ambos tenga cierto retardo. La memoria caché es la solución más utilizada para paliar este problema.

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 muy rápida y contiene un pequeño conjunto de instrucciones que el equipo usa 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 inmediata, eficiente y sin obstáculos de por medio, lo que provoca que ese pequeño lag entre la CPU y la RAM desaparezca o, mejor dicho, se camufle convenientemente para que todo el sistema funcione sincronizadamente.

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 emplea para «tenerlos a mano» cuando haga falta sin necesidad de tener que volverlos a pedir desde la fuente original.

 

Niveles de caché en un procesador actual

cpu niveles cache

Especificamos «procesador moderno» porque los primeros en los que se comenzó a implementar este tipo de memoria no funcionaban así. Los SoC más actuales 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.) por lo que esta vieja idea se ha ido perfeccionando con el paso de los años para adecuar su eficiencia a las necesidades de computación de los equipos más avanzados.

 

Caché L1

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 en 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 efectuar el procesador y por el otro la información que 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 que no es algo que sea un problema por el hecho de que solo su núcleo tendrá acceso a la misma.

 

Caché L2

El siguiente nivel es el de la caché L2, que 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 servía 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.

 

Caché LLC (Last Level Cache)

Este nivel muchas veces se conoce como caché L3 e incluso L4, pero en última instancia se trata de la caché de último nivel y por eso se la llama LLC (por las palabras en inglés «Last Level Cache», o «caché de último nivel»). En cualquier caso, se trata de un espacio unificado que es capaz de guardar tanto datos como instrucciones indistintamente, y suele tener un tamaño bastante considerable en comparación con los niveles anteriores, pero también está compartida por todos los núcleos del procesador.

 

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

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 más cercanas a la memoria caché.

Proporcionalmente hoy en día es habitual manejar capacidades de varios terabytes cuando hablamos de discos duros, mientras que cuando lo hacemos de la RAM esta cantidad se reduce a unos pocos gigabytes (hoy en día lo más habitual es ver 8 ó 16 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 porque sobre el papel, no es necesario más capacidad para guardar esos datos que el procesador necesita recurrentemente.

Cache Microscopio

Debemos tener en cuenta que los ordenadores tienen tres tipos de memoria: por un lado está la memoria de almacenamiento, la que encontramos en discos duros y los 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, contamos con la memoria caché que está dentro del propio procesador, que es la más rápida de todas pero también la más pequeña.

La forma 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 este la procesa, las instrucciones principales y más utilizadas se copian en la caché, de manera que la CPU pueda tener acceso inmediato a ellas. Y esto mejora el rendimiento en gran medida, por supuesto.

 

Secuencia de uso de la caché

La utilidad de la memoria caché es simple: almacenar el segmento de memoria RAM más cercano a donde se encuentra mirando el procesador en este momento. Esto significa que, de manera preventiva, lo que hará será copiar un bloque de datos entero en el nivel de caché más alto de todos. Eso sí, a través de una serie de mecanismos relativamente complejos, se dedicará a mantener aquella información que aún pueda ser útil para que el procesador siga funcionando a su máximo rendimiento.

Sin embargo, la búsqueda de la información no empezará en la RAM, sino primero en la caché de menor tamaño y la más cercana al procesador. De esta forma se buscará primero en la L1, luego en la L2 y así progresivamente hasta que se encuentre el dato. Si lo hace en la caché, entonces significará que habrá tardado menos tiempo y, por tanto, menos ciclos de reloj en encontrar la información. Es por ello que un procesador con una caché recortada siempre tendrá peor rendimiento.

microchiips

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é.

 

Caché vs Scratchpad

Ambos son dos tipos de memoria interna en el procesador, sin embargo, existen una serie de diferencias clave entre ambas que las hacen estar pensadas para cometidos muy distintos. A continuación os las enumeramos todas:

  • 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 sí mismo.
  • En cambio, una Scratchpad RAM funciona como una memoria RAM al uso, independiente a las cachés, ya que la cache no está asociada a ella y que se suele encontrar en algunos procesadores.
  • La principal 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.
 

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

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 más lenta e ineficiente para ciertos procesos que tienen lugar durante la partida.

CPU AMD Ryzen 9 5900X

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 mejora el rendimiento de un PC, puesto que si tenemos una CPU lenta, por mucha caché que le metamos seguirá siendo lenta.

La combinación perfecta es una CPU con un alto IPC, una gran caché y memoria RAM de alta frecuencia y baja latencia para que los datos fluyan, se carguen más rápido y no se produzcan cuellos de botella que atasquen todo el proceso. Así, ganaremos en rendimiento y todo lo que ejecutemos dentro del PC –sea exigente o no– se moverá con mucha mayor consistencia y soltura que en el caso de contar con un hardware menos avanzado. Obviamente todas estas ventajas al final tienen un precio, y ahí estamos nosotros para valorar si nos merece la pena invertir en ello o no.

1 Comentario