Los procesadores modernos funcionan increíblemente rápido; pueden superar significativamente a la RAM del sistema. Este desequilibrio de velocidad entre el procesador y la memoria haría que su procesador a menudo permanezca inactivo, esperando que se le envíen datos para poder continuar ejecutando un proceso. Para evitar que esto suceda y permitir que los procesadores sigan funcionando cada vez más rápido, se utiliza un caché de CPU.
¿Cómo acelera una caché de CPU una CPU?
La memoria caché del procesador está diseñada para ser lo más rápida posible y luego almacenar en caché los datos solicitados por el procesador. La velocidad de la caché de la CPU se optimiza de tres formas: latencia, ancho de banda y proximidad. La caché del procesador funciona con latencias muy bajas, lo que minimiza el tiempo necesario para devolver un resultado. Por ejemplo, el Intel i9-9900k tiene una latencia de caché de 0,8, 2,4 y 11,1 nanosegundos para las cachés L1, L2 y L3 respectivamente. En comparación, la latencia de la RAM moderna de alta velocidad es del orden de 14 nanosegundos.
Consejo: Los niveles de caché se explicarán con más detalle más adelante, pero en términos simples, las capas de caché inferiores son más rápidas pero más caras y, por lo tanto, tienen menores capacidades. Un nanosegundo es una milmillonésima de segundo, por lo que una latencia de 0,8 segundos significa que se necesitan menos de una milmillonésima de segundo para devolver un resultado.
En términos de ancho de banda, la caché de la CPU ofrece importantes mejoras de rendimiento con respecto al almacenamiento y la RAM tradicionales. Las velocidades de lectura de las cachés L1 y L3 pueden alcanzar un máximo de 2,3 TB/s y 370 GB/s respectivamente, mientras que el ancho de banda de la RAM suele rondar los 40 GB/s. Este mayor ancho de banda significa que la memoria caché de la CPU puede transferir datos a la CPU mucho más rápido que la RAM.
Para lograr las máximas velocidades posibles, la caché del procesador está integrada en el silicio del propio chip del procesador. Esto minimiza la distancia que deben recorrer las señales eléctricas, manteniendo así la latencia lo más baja posible. Por ejemplo, cuando la caché L3 se movió por primera vez de la placa base al procesador, el procesador de la época (Pentium 4 EE) pudo lograr una mejora de rendimiento del 10 al 20%.
Arquitectura de caché de CPU
Los procesadores modernos suelen utilizar tres capas de caché de CPU denominadas L1-3, y los cachés con números más bajos están más cerca de los núcleos del procesador, son más rápidos y más caros. Cada núcleo de procesador individual en un procesador multinúcleo tiene su propia caché L1. Generalmente se divide en dos partes, L1I y L1D. El L1I se utiliza para almacenar en caché las instrucciones para el procesador, mientras que el L1D se utiliza para almacenar en caché los datos en los que se ejecutarán estas instrucciones.
Cada núcleo del procesador suele tener también su propia caché L2 en un procesador moderno. La caché L2 es más grande y más lenta que la caché L1 y se utiliza principalmente para almacenar datos que de otro modo no cabrían en la caché L2. Al tener una caché L2 dedicada por núcleo, se evitan conflictos de caché. Los conflictos de caché ocurren cuando diferentes núcleos luchan por reclamar espacio de caché para sus propias cargas de trabajo, lo que puede llevar a que se borre información importante del caché.
La caché L3 suele compartirse entre todos los núcleos de CPU del procesador. Nuevamente, la caché L3 es más lenta que la caché L2 pero es más barata y más grande. Al proporcionar una caché compartida, es posible reducir la cantidad de datos que se duplicarían en niveles inferiores de caché por núcleo.
Consejo: A modo de ejemplo, en términos de tamaños de caché, el Intel i9-9900K tiene un caché L1 de 64 KB y un caché L2 de 256 KB por núcleo (para un total de 512 KB L1 y 2 MB L2), también tiene un caché compartido. Caché L3 de 16 MB.
¿Cómo se utiliza el caché de la CPU?
Todos los niveles de caché de la CPU se utilizan para acelerar el rendimiento de la CPU almacenando en caché los datos de la RAM. Cuando un procesador solicita datos, normalmente primero busca en sus capas de caché para intentar obtener los datos lo más rápido posible. Si los datos se encuentran en un caché, el procesador puede continuar procesándolos. Si los datos no están en el caché, en lo que se llama un error de caché, entonces el procesador debe verificar la RAM y luego el disco duro si los datos tampoco están allí. Las capas más rápidas siempre se comprueban primero para obtener el máximo rendimiento.
Para ayudar al procesador a tener los datos que necesita en la caché cuando los necesita, la caché intenta adelantarse a los datos que el procesador podría necesitar a continuación. Por ejemplo, si el procesador ha solicitado datos para una imagen que está procesando, la caché puede intentar almacenar en caché de forma preventiva más datos de la imagen para que puedan entregarse al procesador lo más rápido posible.