caché de la CPU


Un caché de CPU es un caché de hardware utilizado por la unidad central de procesamiento (CPU) de una computadora para reducir el costo promedio (tiempo o energía) para acceder a los datos de la memoria principal . [1] Una caché es una memoria más pequeña y rápida, ubicada más cerca del núcleo del procesador , que almacena copias de los datos de las ubicaciones de la memoria principal que se usan con frecuencia . La mayoría de las CPU tienen una jerarquía de varios niveles de caché (L1, L2, a menudo L3 y, en raras ocasiones, incluso L4), con cachés separados específicos de instrucciones y específicos de datos en el nivel 1.

Existen otros tipos de cachés (que no cuentan para el "tamaño de caché" de los cachés más importantes mencionados anteriormente), como el búfer de búsqueda de traducción (TLB), que es parte de la unidad de administración de memoria (MMU) que tienen la mayoría de las CPU.

Al intentar leer o escribir en una ubicación de la memoria principal, el procesador verifica si los datos de esa ubicación ya están en la memoria caché. Si es así, el procesador leerá o escribirá en el caché en lugar de la memoria principal mucho más lenta.

Las primeras CPU que usaban caché tenían solo un nivel de caché; a diferencia del caché de nivel 1 posterior, no se dividió en L1d (para datos) y L1i (para instrucciones). La caché Split L1 comenzó en 1976 con la CPU IBM 801 , [2] [3] se generalizó a finales de los 80 y en 1997 ingresó al mercado de CPU integradas con ARMv5TE. En 2015, incluso los SoC por debajo del dólar dividieron el caché L1. También tienen cachés L2 y, para procesadores más grandes, también cachés L3. La caché L2 generalmente no se divide y actúa como un depósito común para la caché L1 ya dividida. Cada núcleo de un procesador multinúcleotiene una caché L1 dedicada y, por lo general, no se comparte entre los núcleos. La caché L2 y las cachés de nivel superior pueden compartirse entre los núcleos. La memoria caché L4 actualmente es poco común y generalmente está en (una forma de) memoria dinámica de acceso aleatorio (DRAM), en lugar de en memoria estática de acceso aleatorio (SRAM), en un troquel o chip separado (excepcionalmente, la forma, eDRAM es utilizado para todos los niveles de caché, hasta L1). Ese también fue el caso históricamente con L1, mientras que los chips más grandes han permitido la integración de este y, en general, todos los niveles de caché, con la posible excepción del último nivel. Cada nivel adicional de caché tiende a ser más grande y optimizado de manera diferente.

Las memorias caché (como la RAM históricamente) generalmente se han dimensionado en potencias de: 2, 4, 8, 16, etc. KiB ; cuando se alcanzan tamaños de MiB (es decir, para tamaños más grandes que no sean L1), el patrón se rompió muy pronto, para permitir cachés más grandes sin verse obligados al paradigma de duplicación de tamaño, con, por ejemplo, Intel Core 2 Duo con caché L2 de 3 MiB en abril de 2008. Mucho más tarde, sin embargo, para los tamaños L1, que todavía solo cuentan en una pequeña cantidad de KiB, sin embargo, IBM zEC12 de 2012 es una excepción, para obtener un caché de datos L1 inusualmente grande de 96 KiB para su época, y por ejemplo, el IBM z13 que tiene un Caché de instrucciones L1 de 96 KiB (y caché de datos L1 de 128 KiB), [4] e Intel Ice LakeProcesadores basados ​​​​en 2018, con caché de datos L1 de 48 KiB y caché de instrucciones L1 de 48 KiB. En 2020, algunas CPU Intel Atom (con hasta 24 núcleos) tienen (múltiples de) tamaños de caché de 4,5 MiB y 15 MiB. [5] [6]

Los datos se transfieren entre la memoria y la caché en bloques de tamaño fijo, llamados líneas de caché o bloques de caché . Cuando una línea de caché se copia de la memoria al caché, se crea una entrada de caché. La entrada de caché incluirá los datos copiados, así como la ubicación de memoria solicitada (llamada etiqueta).


Placa base de una computadora NeXTcube (1990). En el borde inferior de la imagen a la izquierda del medio, está la CPU Motorola 68040 operada a 25 MHz con dos cachés de nivel 1 separadas de 4 KiB cada una en el chip, una para la parte de la CPU y otra para la FPU integrada , y no caché externo.
Una ilustración de las diferentes formas en que las ubicaciones de memoria pueden ser almacenadas en caché por ubicaciones de caché particulares
Jerarquía de memoria de un servidor AMD Bulldozer
Jerarquía de caché del núcleo K8 en la CPU AMD Athlon 64.
Ruta de lectura para una memoria caché asociativa bidireccional