¿Dónde se encuentran exactamente los cachés L1, L2 y L3 en la computadora?
Lo sé, usamos Caché para aumentar el rendimiento seleccionando DATOS e INSTRUCCIONES de Caché en lugar de Memoria principal.
Las siguientes son mis preguntas
- ¿Dónde se encuentra exactamente L1 Cache? . está en el chip de la CPU?
¿Dónde se encuentra exactamente la caché L2?
¿Dónde se encuentra exactamente el caché L3? está en la placa madre?
Creo que los últimos procesadores SMP usan cachés de 3 niveles, así que quiero entender la jerarquía de nivel de caché y su arquitectura.
Respuestas:
Comencemos con esto:
Para comprender los cachés, debe saber algunas cosas:
Una CPU tiene registros. Los valores en eso se pueden usar directamente. Nada es mas rapido.
Sin embargo, no podemos agregar registros infinitos a un chip. Estas cosas ocupan espacio. Si hacemos el chip más grande, se vuelve más caro. Parte de eso es porque necesitamos un chip más grande (más silicio), pero también porque aumenta la cantidad de chips con problemas.
(Imagen de una oblea imaginaria con 500 cm 2. Corté 10 chips, cada chip tiene un tamaño de 50 cm 2. Uno de ellos está roto. Lo descarto y me quedan 9 chips de trabajo. Ahora tome la misma oblea y corte 100 fichas, cada una diez veces más pequeña. Una de ellas si está rota. Descarto la ficha rota y me quedan 99 fichas de trabajo. Esa es una fracción de la pérdida que de otro modo habría tenido. Para compensar la mayor cantidad chips tendría que pedir precios más altos. Más que solo el precio del silicio extra)
Esta es una de las razones por las que queremos chips pequeños y asequibles.
Sin embargo, cuanto más cerca esté la caché de la CPU, más rápido se podrá acceder a ella.
Esto también es fácil de explicar; Las señales eléctricas viajan cerca de la velocidad de la luz. Eso es rápido pero sigue siendo una velocidad finita. La CPU moderna funciona con relojes GHz. Eso también es rápido. Si tomo una CPU de 4 GHz, entonces una señal eléctrica puede viajar unos 7,5 cm por marca de reloj. Eso es 7,5 cm en línea recta. (Los chips son cualquier cosa menos conexiones directas). En la práctica, necesitará significativamente menos de esos 7,5 cm, ya que eso no permite que los chips presenten los datos solicitados y que la señal regrese.
En pocas palabras, queremos que el caché esté lo más cerca posible físicamente. Lo que significa chips grandes.
Estos dos deben ser equilibrados (rendimiento versus costo).
Suponiendo hardware de estilo PC únicamente (los mainframes son bastante diferentes, incluso en el rendimiento versus el balance de costos);
IBM XT
El original de 4.77Mhz: Sin caché. La CPU accede a la memoria directamente. Una lectura de memoria seguiría este patrón:
80286 (1982)
Todavía no hay caché. El acceso a la memoria no fue un gran problema para las versiones de menor velocidad (6Mhz), pero el modelo más rápido corrió hasta 20Mhz y a menudo necesitaba retrasarse al acceder a la memoria.
Luego obtienes un escenario como este:
Ese es un paso adicional dedicado a esperar el recuerdo. En un sistema moderno que puede ser fácilmente de 12 pasos, es por eso que tenemos caché .
80386 : (1985)
Las CPU se vuelven más rápidas. Tanto por reloj como corriendo a velocidades de reloj más altas.
RAM se vuelve más rápido, pero no tanto como las CPU.
Como resultado, se necesitan más estados de espera. Algunas placas base evitan esto agregando caché (que sería caché de primer nivel) en la placa base.
Una lectura de la memoria ahora comienza con una comprobación de si los datos ya están en el caché. Si es así, se lee del caché mucho más rápido. Si no es el mismo procedimiento que se describe con el 80286
80486 : (1989)
Esta es la primera CPU de esta generación que tiene algo de caché en la CPU.
Es un caché unificado de 8 KB, lo que significa que se utiliza para datos e instrucciones.
Alrededor de este tiempo se vuelve común poner 256KB de memoria estática rápida en la placa base como 2 nd caché de nivel. Así 1 st caché de nivel en la CPU, 2 nd caché de nivel en la placa base.
80586 (1993)
El 586 o Pentium-1 utiliza un caché de nivel 1 dividido. 8 KB cada uno para datos e instrucciones. El caché se dividió para que los cachés de datos e instrucciones se puedan ajustar individualmente para su uso específico. Todavía tiene una primera caché pequeña pero muy rápida cerca de la CPU, y una segunda caché más grande pero más lenta en la placa base. (A una distancia física mayor).
En la misma área del Pentium 1, Intel produjo el Pentium Pro ('80686'). Dependiendo del modelo, este chip tenía una memoria caché integrada de 256Kb, 512KB o 1MB. También era mucho más caro, lo cual es fácil de explicar con la siguiente imagen.
Observe que la caché usa la mitad del espacio en el chip. Y esto es para el modelo de 256 KB. Técnicamente era posible más caché y algunos modelos se producían con cachés de 512 KB y 1 MB. El precio de mercado para estos fue alto.
Observe también que este chip contiene dos troqueles. Uno con la CPU real y el 1er caché, y un segundo dado con 256 KB de 2º caché.
Pentium-2
El Pentium 2 es un Pentium Pro Core. Por razones económicas no hay 2º caché en la CPU. En cambio, lo que se vende es una CPU con una PCB con chips separados para la CPU (y la 1ª caché) y la 2ª caché.
A medida que avanza la tecnología y comenzamos a crear chips con componentes más pequeños, es financieramente posible volver a colocar el 2º caché en el dado de la CPU real. Sin embargo, todavía hay una división. Muy rápido 1er caché acurrucado en la CPU. Con una primera caché por núcleo de CPU y una segunda caché más grande pero menos rápida al lado del núcleo.
Pentium-3
Pentium-4
Esto no cambia para el pentium-3 o el pentium-4.
Alrededor de este tiempo, hemos alcanzado un límite práctico sobre la velocidad con la que podemos registrar las CPU. Un 8086 o un 80286 no necesitaban enfriamiento. Un pentium-4 que funciona a 3.0GHz produce tanto calor y usa tanta potencia que resulta más práctico colocar dos CPU separadas en la placa base en lugar de una rápida.
(Dos CPU de 2.0 GHz usarían menos energía que una CPU de 3.0 GHz idéntica, pero podrían hacer más trabajo).
Esto podría resolverse de tres maneras:
1) Es un proceso continuo. No es nuevo y no se detendrá.
2) Se realizó desde el principio (por ejemplo, con dos placas base Pentium-1 y el chipset NX). Hasta ahora, esa era la única opción para construir una PC más rápida.
3) Requiere CPU donde se construyen múltiples 'cpu core' en un solo chip. (Luego llamamos a esa CPU una CPU de doble núcleo para aumentar la confusión. Gracias a la comercialización :))
En estos días solo nos referimos a la CPU como un 'núcleo' para evitar confusiones.
Ahora obtienes chips como el pentium-D (dúo), que son básicamente dos núcleos de pentium-4 en el mismo chip.
¿Recuerdas la foto del viejo pentium-Pro? ¿Con el enorme tamaño de caché?
¿Ves las dos grandes áreas en esta imagen?
Resulta que podemos compartir esa segunda caché entre ambos núcleos de CPU. Velocidad bajaría ligeramente, pero un 512KiB compartida 2 nd caché es a menudo más rápido que la adición de dos independientes 2 nd nivel cachés de la mitad del tamaño.
Esto es importante para tu pregunta.
Significa que si lee algo de un núcleo de CPU y luego intenta leerlo de otro núcleo que comparte el mismo caché, obtendrá un acierto de caché. No será necesario acceder a la memoria.
Dado que los programas migran entre las CPU, dependiendo de la carga, el número de núcleos y el programador, puede obtener un rendimiento adicional al fijar programas que usan los mismos datos en la misma CPU (aciertos de caché en L1 e inferiores) o en las mismas CPU que compartir caché L2 (y así obtener errores en L1, pero aciertos en lecturas de caché L2).
Por lo tanto, en modelos posteriores verá cachés de nivel 2 compartidos.
Si está programando para CPU modernas, entonces tiene dos opciones:
Me doy cuenta de que todavía no he mencionado el caché L3, pero no son diferentes. Un caché L3 funciona de la misma manera. Más grande que L2, más lento que L2. Y a menudo se comparte entre núcleos. Si está presente es mucho más grande que el caché L2 (de lo contrario, no tendría sentido) y a menudo se comparte con todos los núcleos.
fuente
Que los cachés son elementos internos del procesador. Algunos se comparten entre núcleos, algunos son individuales, depende de la implementación. Pero todos ellos están ubicados en el chip. Algunos detalles: Procesador Intel Intel® Core ™ i7, tomado aquí :
Foto del chip del procesador (lo siento, no sé el modelo exacto). Puede ver que el caché ocupa un área importante en el chip:
fuente
La caché casi siempre está en chip para un acceso más rápido. Aquí hay un buen diagrama que muestra una matriz de CPU Intel de cuatro núcleos con el caché L3 resaltado. Cuando mira imágenes como esta de una matriz de CPU, las áreas grandes y uniformes son típicamente bancos de memoria en chip utilizados como caché.
fuente
En estos días, todos los cachés están en el dado de CPU A veces solían ubicarse en la placa base, o en la placa hija de la CPU, pero no creo que haya procesadores actuales que usen cachés de chips.
fuente
No estoy seguro sobre el L3, pero L1 / L2 siempre se encuentra en la CPU. En cuanto a la jerarquía, básicamente, L1 suele ser el caché de instrucciones, L2 y L3 son cachés de datos.
fuente
L1 está ubicado en el chip de la CPU, L2 está ubicado entre el procesador y la memoria principal, pero hay un punto para saber que en algunos sistemas L2 está ubicado en el chip de la CPU mientras que en algún otro sistema L2 está ubicado en la placa madre, y L3 está constantemente ubicado en el chip de la placa principal.
fuente