Articles

Explicador: Caché L1 vs. Caché L2 vs. Caché L3

Cada CPU encontrada en cualquier computadora, desde una computadora portátil barata hasta un servidor de un millón de dólares, tendrá algo llamado caché. Lo más probable es que también posea varios niveles.

Debe ser importante, de lo contrario, ¿por qué estaría allí? Pero, ¿qué hace el caché y por qué la necesidad de diferentes niveles de las cosas? ¿Qué diablos significa asociativo de conjunto de 12 vías?

¿Qué es exactamente la caché?

TL; DR: Es una memoria pequeña pero muy rápida que se encuentra justo al lado de las unidades lógicas de la CPU.
Pero, por supuesto, hay mucho más que podemos aprender sobre la caché…

Comencemos con un sistema de almacenamiento mágico e imaginario: es infinitamente rápido, puede manejar un número infinito de transacciones de datos a la vez y siempre mantiene los datos seguros. No es que exista algo ni remotamente relacionado con esto, pero si lo hiciera, el diseño del procesador sería mucho más simple.

Las CPU solo necesitan tener unidades lógicas para sumar, multiplicar, etc. y un sistema para manejar las transferencias de datos. Esto se debe a que nuestro sistema de almacenamiento teórico puede enviar y recibir instantáneamente todos los números requeridos; ninguna de las unidades lógicas se retrasaría esperando una transacción de datos.

Pero, como todos sabemos, no hay ninguna tecnología de almacenamiento mágica. En su lugar, tenemos unidades de estado duro o sólido, e incluso las mejores de estas no son ni remotamente capaces de manejar todas las transferencias de datos necesarias para una CPU típica.

El gran T’phon del almacenamiento de datos

La razón es que las CPU modernas son increíblemente rápidas: solo toman un ciclo de reloj para agregar dos valores enteros de 64 bits juntos, y para una CPU que se ejecuta a 4 GHz, esto sería solo 0.00000000025 segundos o un cuarto de nanosegundo.

Mientras tanto, los discos duros giratorios tardan miles de nanosegundos solo para encontrar datos en los discos interiores, y mucho menos transferirlos, y las unidades de estado sólido aún tardan decenas o cientos de nanosegundos.

Estas unidades obviamente no se pueden integrar en los procesadores, lo que significa que habrá una separación física entre los dos. Esto solo agrega más tiempo al movimiento de datos, lo que empeora aún más las cosas.

La gran utilidad del almacenamiento de datos, lamentablemente

Así que lo que necesitamos es otro sistema de almacenamiento de datos, que se encuentre entre el procesador y el almacenamiento principal. Necesita ser más rápido que una unidad, ser capaz de manejar muchas transferencias de datos simultáneamente y estar mucho más cerca del procesador.

Bueno, ya tenemos algo así, y se llama RAM, y cada sistema informático tiene algo para este propósito.

Casi todo este tipo de almacenamiento es DRAM (memoria de acceso aleatorio dinámico) y es capaz de pasar datos mucho más rápido que cualquier unidad.

Sin embargo, aunque la DRAM es súper rápida, no puede almacenar tantos datos.

Algunos de los chips de memoria DDR4 más grandes fabricados por Micron, uno de los pocos fabricantes de DRAM, contienen 32 Gbits o 4 GB de datos; los discos duros más grandes contienen 4000 veces más que esto.

Por lo tanto, aunque hemos mejorado la velocidad de nuestra red de datos, se necesitarán sistemas adicionales, hardware y software, para determinar qué datos deben mantenerse en la cantidad limitada de DRAM, listos para la CPU.

Al menos la DRAM puede fabricarse para estar en el paquete de chips (conocido como DRAM integrado). Sin embargo, las CPU son bastante pequeñas, por lo que no puedes pegarlas tanto.

10 MB de DRAM justo a la izquierda del procesador gráfico de Xbox 360. Fuente: CPU Grave Yard

La gran mayoría de la DRAM se encuentra justo al lado del procesador, conectada a la placa base, y siempre es el componente más cercano a la CPU, en un sistema informático. Y sin embargo, todavía no es lo suficientemente rápido…

DRAM todavía tarda alrededor de 100 nanosegundos en encontrar datos, pero al menos puede transferir miles de millones de bits por segundo. Parece que necesitaremos otra etapa de memoria, para ir entre las unidades del procesador y la DRAM.

Entrar en el escenario a la izquierda: SRAM (memoria estática de acceso aleatorio). Mientras que la DRAM usa condensadores microscópicos para almacenar datos en forma de carga eléctrica, la SRAM usa transistores para hacer lo mismo y estos pueden funcionar casi tan rápido como las unidades lógicas de un procesador (aproximadamente 10 veces más rápido que la DRAM).

Hay, por supuesto, un inconveniente a la SRAM y una vez más, se trata del espacio.

La memoria basada en transistores ocupa mucho más espacio que la DRAM: para un chip DDR4 de 4 GB del mismo tamaño, obtendrías menos de 100 MB de SRAM. Pero como se realiza a través del mismo proceso que la creación de una CPU, la SRAM se puede construir dentro del procesador, lo más cerca posible de las unidades lógicas.

La memoria basada en transistores ocupa mucho más espacio que la DRAM: para un chip DDR4 de 4 GB del mismo tamaño, obtendrías menos de 100 MB de SRAM.

Con cada etapa adicional, hemos aumentado la velocidad de movimiento de datos, al costo de cuánto podemos almacenar. Podríamos seguir añadiendo más secciones, cada una de ellas más rápida pero más pequeña.

Y así llegamos a una definición más técnica de lo que es la caché: Son varios bloques de SRAM, todos ubicados dentro del procesador; se utilizan para garantizar que las unidades lógicas se mantengan lo más ocupadas posible, enviando y almacenando datos a velocidades súper rápidas. Feliz con eso? Bien because ¡porque a partir de ahora se va a complicar mucho más!Caché

: un estacionamiento de varios niveles

Como comentamos, la caché es necesaria porque no hay un sistema de almacenamiento mágico que pueda mantenerse al día con las demandas de datos de las unidades lógicas en un procesador. Las CPU y los procesadores gráficos modernos contienen una serie de bloques SRAM, que están organizados internamente en una jerarquía, una secuencia de cachés que se ordenan de la siguiente manera:

En la imagen de arriba, la CPU está representada por el rectángulo negro con rayas. Las unidades ALUs (unidades lógicas aritméticas) se encuentran en el extremo izquierdo; estas son las estructuras que alimentan el procesador, manejando las matemáticas que hace el chip. Aunque técnicamente no es caché, el nivel de memoria más cercano a las unidades ALU son los registros (se agrupan en un archivo de registro).

Cada uno de estos contiene un solo número, como un entero de 64 bits; el valor en sí puede ser un dato sobre algo, un código para una instrucción específica o la dirección de memoria de algunos otros datos.

El archivo de registro en una CPU de escritorio es bastante pequeño for por ejemplo, en el núcleo i9-9900K de Intel, hay dos bancos de ellos en cada núcleo, y el de enteros contiene solo 180 registros de 64 bits. El otro archivo de registro, para vectores (pequeños arreglos de números), tiene 168 entradas de 256 bits. Por lo tanto, el archivo de registro total para cada núcleo es un poco menos de 7 kB. En comparación, el archivo de registro en los multiprocesadores de streaming (el equivalente de GPU al núcleo de una CPU) de una Nvidia GeForce RTX 2080 Ti tiene un tamaño de 256 kB.

Los registros son SRAM, al igual que la caché, pero son tan rápidos como las unidades ALU que sirven, introduciendo y sacando datos en un solo ciclo de reloj. Pero no están diseñados para almacenar muchos datos (solo una pieza de ellos), por lo que siempre hay algunos bloques de memoria más grandes cerca: esta es la caché de nivel 1.

CPU Intel Skylake, ampliada en toma de un solo núcleo. Fuente: Wikichip

La imagen de arriba es una toma ampliada de un solo núcleo del diseño del procesador de escritorio Skylake de Intel.

Los archivos ALU y de registro se pueden ver en el extremo izquierdo, resaltados en verde. En la parte superior central de la imagen, en blanco, está la caché de datos de nivel 1. Esto no contiene mucha información, solo 32 kB, pero al igual que los registros, está muy cerca de las unidades lógicas y funciona a la misma velocidad que ellas.

El otro rectángulo blanco indica la caché de instrucciones de nivel 1, también de 32 kB de tamaño. Como su nombre indica, almacena varios comandos listos para ser divididos en pequeñas, llamadas micro operaciones (generalmente etiquetadas como µops), para que las unidades ALU realicen. También hay un caché para ellos, y podría clasificarlo como Nivel 0, ya que es más pequeño (solo contiene 1500 operaciones) y más cercano que los cachés L1.

Te estarás preguntando por qué estos bloques de SRAM son tan pequeños; ¿por qué no tienen un megabyte de tamaño? Juntas, las cachés de datos e instrucciones ocupan casi la misma cantidad de espacio en el chip que las unidades lógicas principales, por lo que hacerlas más grandes aumentaría el tamaño total del dado.

Pero la razón principal por la que solo tienen unos pocos kB, es que el tiempo necesario para encontrar y recuperar datos aumenta a medida que aumenta la capacidad de memoria. La caché L1 tiene que ser muy rápida, por lo que se debe alcanzar un compromiso, entre el tamaño y la velocidad at en el mejor de los casos, se necesitan alrededor de 5 ciclos de reloj (más largos para los valores de coma flotante) para sacar los datos de esta caché, listos para su uso.

Caché L2 de Skylake: 256 kB de bondad SRAM

Pero si esta fuera la única caché dentro de un procesador, entonces su rendimiento golpearía una pared repentina. Esta es la razón por la que todos tienen otro nivel de memoria integrado en los núcleos: la caché de nivel 2. Este es un bloque general de almacenamiento, que guarda instrucciones y datos.

Siempre es un poco más grande que el nivel 1: los procesadores AMD Zen 2 acumulan hasta 512 kB, por lo que las cachés de nivel inferior se pueden mantener bien suministradas. Sin embargo, este tamaño adicional tiene un costo, y se necesita aproximadamente el doble de tiempo para encontrar y transferir los datos de esta caché, en comparación con el nivel 1.

Retrocediendo en el tiempo, hasta los días del Intel Pentium original, el caché de nivel 2 era un chip separado, ya sea en una pequeña placa de circuito enchufable (como una RAM DIMM) o incorporada en la placa base principal. Finalmente se abrió camino en el paquete de CPU en sí, hasta que finalmente se integró en el dado de CPU, en los procesadores Pentium III y AMD K6-III.

Este desarrollo pronto fue seguido por otro nivel de caché, para soportar los otros niveles inferiores, y surgió debido al aumento de los chips multinúcleo.

Chip Intel Kaby Lake. Fuente: Wikichip

Esta imagen, de un chip Intel Kaby Lake, muestra 4 núcleos en el centro izquierdo (una GPU integrada ocupa casi la mitad del dado, a la derecha). Cada núcleo tiene su propio conjunto «privado» de cachés de nivel 1 y 2 (reflejos blancos y amarillos), pero también vienen con un tercer conjunto de bloques SRAM.

La caché de nivel 3, a pesar de que está directamente alrededor de un solo núcleo, se comparte completamente con los demás each cada uno puede acceder libremente al contenido de la caché L3 de otro. Es mucho más grande (entre 2 y 32 MB), pero también mucho más lento, con un promedio de más de 30 ciclos, especialmente si un núcleo necesita usar datos que están en un bloque de caché a cierta distancia.

A continuación, podemos ver un solo núcleo en la arquitectura Zen 2 de AMD: los cachés de datos e instrucciones de nivel 1 de 32 kB en blanco, el nivel 2 de 512 KB en amarillo y un enorme bloque de caché L3 de 4 MB en rojo.

CPU AMD Zen 2, ampliada en toma de un solo núcleo. Fuente: Fritzchens Fritz

Espere un segundo. ¿Cómo pueden ocupar 32 kB más espacio físico que 512 kB? Si el nivel 1 contiene tan pocos datos, ¿por qué es proporcionalmente mucho más grande que la caché L2 o L3?

Más que un simple número

La caché aumenta el rendimiento al acelerar la transferencia de datos a las unidades lógicas y mantener cerca una copia de las instrucciones y los datos de uso frecuente. La información almacenada en caché se divide en dos partes: los datos en sí y la ubicación de donde se encontraban originalmente en la memoria/almacenamiento del sistema this esta dirección se denomina etiqueta de caché.

Cuando la CPU ejecuta una operación que desea leer o escribir datos desde / hacia la memoria, comienza comprobando las etiquetas en la caché de nivel 1. Si el requerido está presente (una visita a la caché), se puede acceder a esos datos casi de inmediato. Se produce un error de caché cuando la etiqueta requerida no se encuentra en el nivel de caché más bajo.

Por lo tanto, se crea una nueva etiqueta en la caché L1, y el resto de la arquitectura del procesador se hace cargo, buscando a través de los otros niveles de caché (hasta la unidad de almacenamiento principal, si es necesario) para encontrar los datos de esa etiqueta. Pero para hacer espacio en la caché L1 para esta nueva etiqueta, invariablemente hay que arrancar algo más en la L2.

Esto da como resultado un barajamiento casi constante de los datos, todo logrado en solo un puñado de ciclos de reloj. La única manera de lograr esto es tener una estructura compleja alrededor de la SRAM, para manejar la administración de los datos. Dicho de otra manera: si un núcleo de CPU constara de solo una ALU, entonces la caché L1 sería mucho más simple, pero como hay docenas de ellas (muchas de las cuales harán malabares con dos hilos de instrucciones), la caché requiere múltiples conexiones para mantener todo en movimiento.

puede utilizar programas gratuitos, tales como CPU-Z, para comprobar la información de la caché del procesador de alimentar su propio equipo. Pero, ¿qué significa toda esa información? Un elemento importante es el conjunto de etiquetas asociativo this se trata de las reglas impuestas por la forma en que los bloques de datos de la memoria del sistema se copian en la caché.

La información de caché anterior es para un Intel Core i7-9700K. Sus cachés de nivel 1 se dividen en 64 pequeños bloques, llamados conjuntos, y cada uno de ellos se divide en líneas de caché (64 bytes de tamaño). Conjunto asociativo significa que un bloque de datos de la memoria del sistema se asigna a las líneas de caché de un conjunto en particular, en lugar de ser libre de asignar en cualquier lugar.

La parte de 8 direcciones nos dice que un bloque se puede asociar con 8 líneas de caché en un conjunto. Cuanto mayor sea el nivel de asociatividad (es decir, más «formas»), mejores serán las posibilidades de obtener una coincidencia en la caché cuando la CPU vaya a la caza de datos, y una reducción en las penalizaciones causadas por fallas en la caché. Las desventajas son que agrega más complejidad, aumenta el consumo de energía y también puede disminuir el rendimiento porque hay más líneas de caché que procesar para un bloque de datos.

Caché incluida L1+L2, caché de víctima L3, políticas de escritura, incluso ECC. Fuente: Fritzchens Fritz

Otro aspecto de la complejidad de la caché gira en torno a cómo se guardan los datos en los distintos niveles. Las reglas se establecen en algo llamado política de inclusión. Por ejemplo, los procesadores Intel Core tienen caché L1+L3 totalmente inclusiva. Esto significa que los mismos datos en el Nivel 1, por ejemplo, también pueden estar en el Nivel 3. Esto puede parecer que está desperdiciando un valioso espacio de caché, pero la ventaja es que si el procesador falla, al buscar una etiqueta en un nivel inferior, no necesita buscar en el nivel superior para encontrarla.

En los mismos procesadores, la caché L2 no es inclusiva: los datos almacenados allí no se copian a ningún otro nivel. Esto ahorra espacio, pero hace que el sistema de memoria del chip tenga que buscar a través de L3 (que siempre es mucho más grande) para encontrar una etiqueta perdida. Los cachés de víctimas son similares a esto, pero están acostumbrados a almacenar información que se expulsa de un nivel inferior, por ejemplo, los procesadores Zen 2 de AMD usan caché de víctimas L3 que solo almacena datos de L2.

Hay otras políticas para la caché, como cuando los datos se escriben en la caché y en la memoria principal del sistema. Estas se llaman políticas de escritura y la mayoría de las CPU de hoy en día usan cachés de escritura; esto significa que cuando los datos se escriben en un nivel de caché, hay un retraso antes de que la memoria del sistema se actualice con una copia de ella. En su mayor parte, esta pausa se ejecuta durante el tiempo que los datos permanecen en la caché, solo una vez que se inicia, la RAM obtiene la información.

El procesador gráfico GA100 de Nvidia, con un total de 20 MB de caché L1 y 40 MB de caché L2

Para los diseñadores de procesadores, elegir la cantidad, el tipo y la política de caché se trata de equilibrar el deseo de una mayor capacidad de procesador con una mayor complejidad y el espacio de troquelado requerido. Si fuera posible tener cachés de Nivel 1 totalmente asociativo de 20 MB y 1000 vías sin que los chips se vuelvan del tamaño de Manhattan (y consuman el mismo tipo de energía), ¡entonces todos tendríamos computadoras con tales chips!

El nivel más bajo de cachés en las CPU actuales no ha cambiado mucho en la última década. Sin embargo, el tamaño de la caché de nivel 3 ha seguido creciendo. Hace una década, se podían obtener 12 MB, si se tenía la suerte de tener un Intel i7-980X de 999 dólares. Por la mitad de esa cantidad hoy, se obtienen 64 MB.

Caché, en pocas palabras: absolutamente necesarias, absolutamente increíbles piezas de tecnología. No hemos mirado otros tipos de cachés en CPU y GPU (como búferes de búsqueda de traducción o cachés de texturas), pero como todos siguen una estructura simple y un patrón de niveles como hemos cubierto aquí, quizás no suenen tan complicados.

¿Tenía una computadora que tuviera caché L2 en la placa base? ¿Qué hay de las CPU Pentium II y Celeron basadas en ranuras (por ejemplo, 300a) que vienen en una placa hija? ¿Recuerdas tu primera CPU que había compartido L3? Háganoslo saber en la sección de comentarios.

Atajos de compras:
  • AMD Ryzen 9 3900X en Amazon
  • AMD Ryzen 9 3950X en Amazon
  • procesador Intel Core i9-10900K en Amazon
  • AMD Ryzen 7 3700X en Amazon
  • procesador Intel Core i7-10700K en Amazon
  • AMD Ryzen 5 3600 en Amazon
  • procesador Intel Core i5-10600K en Amazon

seguir Leyendo. Explicadores en TechSpot

  • Wi-Fi 6 Explicó: La Próxima Generación de Wi-Fi
  • ¿Qué son los Núcleos Tensores?
  • ¿Qué Es el Binning de Chips?