¿Dónde se encuentran exactamente los cachés L1, L2 y L3 en la computadora?

32

¿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

  1. ¿Dónde se encuentra exactamente L1 Cache? . está en el chip de la CPU?
  2. ¿Dónde se encuentra exactamente la caché L2?

  3. ¿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.

Mover
fuente
1
La jerarquía exacta varía entre los diferentes procesadores. Para conocer la jerarquía de caché en su propia máquina, puede usar la utilidad CoreInfo.exe de SysInternal ( technet.microsoft.com/en-us/sysinternals/cc835722.aspx )
2
Además, cuanto más grande sea el caché (L3> L2> 1), más lejos se ubicará del núcleo (la latencia de acceso a L3 es mayor que L1, por ejemplo).

Respuestas:

48

Comencemos con esto:

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.

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

¿Dónde se encuentran exactamente los cachés L1, L2 y L3 en una computadora?

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:

  • La CPU coloca la dirección que desea leer en el bus de memoria y activa el indicador de lectura
  • La memoria pone los datos en el bus de datos.
  • La CPU copia los datos del bus de datos a sus registros internos.

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:

  • La CPU coloca la dirección que desea leer en el bus de memoria y activa el indicador de lectura
  • La memoria comienza a poner los datos en el bus de datos. La CPU espera.
  • La memoria terminó de obtener los datos y ahora es estable en el bus de datos.
  • La CPU copia los datos del bus de datos a sus registros internos.

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.

Placa base 486 con ubicación de CPU y caché de segundo nivel marcado

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.

Imagen de una CPU pentium Pro, modelo de caché de 256 KB

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

Pentium-2

El Pentium 2 es un Pentium Pro Core. Por razones económicas no hay caché en la CPU. En cambio, lo que se vende es una CPU con una PCB con chips separados para la CPU (y la caché) y la 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 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.

Imagen de una 'CPU' pentium 2 (con y sin cubierta)

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. Haga que las CPU sean más eficientes, para que trabajen más a la misma velocidad.
  2. Use múltiples CPU
  3. Use múltiples CPU en el mismo 'chip'.

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.

Pentium-D temprano (2 núcleos P4)

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

Imagen de una CPU Core2 abierta

Si está programando para CPU modernas, entonces tiene dos opciones:

  1. No molestar. El sistema operativo debería poder programar cosas. El programador tiene un gran impacto en el rendimiento de la computadora y las personas han dedicado mucho esfuerzo a optimizar esto. A menos que haga algo extraño o esté optimizando para un modelo específico de PC, estará mejor con el programador predeterminado.
  2. Si necesita hasta el último rendimiento y el hardware más rápido no es una opción, intente dejar las huellas que acceden a los mismos datos en el mismo núcleo o en un núcleo con acceso a un caché compartido.


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.

modernCPUwithL3.png

Hennes
fuente
¡Qué gran relato!
lukas.pukenis
"pero un segundo caché compartido de 512 MB es" Creo que es 512 KB.
lukas.pukenis
¡Qué excelente respuesta! gracias por compartir hombre
samsamara
14

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í :

  • Una instrucción de 32 KB y caché de primer nivel de datos de 32 KB (L1) para cada núcleo
  • Una caché de segundo nivel de instrucción / datos compartidos de 256 KB (L2) para cada núcleo
  • Caché de último nivel de instrucción / datos compartidos de 8 MB (L3), compartido entre todos los núcleos

Foto del chip del procesador (lo siento, no sé el modelo exacto). Puede ver que el caché ocupa un área importante en el chip:

texto alternativo

Andrey
fuente
1
Si por chip te refieres al dado de silicio, entonces el último nivel de caché puede estar fuera del chip. Por ejemplo, zEC12 de IBM ( en.wikipedia.org/wiki/IBM_zEC12_(microprocesador) usa un módulo multichip con seis chips de procesador y dos chips de caché compartidos con caché L4. Crystal Well de Intel también proporciona un caché L4 sin chip (también usando eDRAM).
Paul A. Clayton
5

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

Nehalem Die (http://www.legitreviews.com/article/824/1/)

Michael Petito
fuente
5

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.

Douglas Leeder
fuente
1
+1 para la parte de estos días . En los viejos tiempos era diferente. (por ejemplo, caché L2 en la placa base en la hora Cyrix / Pentium-1)
Hennes
0

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.

Jas
fuente
L1 puede ser caché compartida (caché de instrucciones y datos). También hay CPU con datos L1 y caché de instrucciones L1. Y el caché L2 no siempre se encuentra en la CPU (incluso L1 no necesita estar en la CPU, pero solo recuerdo una computadora donde ese era el caso).
Hennes
0

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.

Qurban Yazdani
fuente