¿Dónde se encuentran exactamente los cachés L1, L2 y L3 en la computadora?
Lo sé, usamos la caché para aumentar el rendimiento seleccionando DATOS e INSTRUCCIONES de la caché en lugar de la memoria principal.
Las siguientes son mis preguntas.
- ¿Dónde se encuentra exactamente la caché L1? . ¿Está en el chip de la CPU?
¿Dónde se encuentra exactamente la caché L2?
¿Dónde se encuentra exactamente la caché L3? está en la placa madre?
Creo que los últimos procesadores SMP utilizan cachés de 3 niveles, por lo que quiero comprender la jerarquía de niveles de caché y su arquitectura.
Respuesta1
Comencemos con esto:
Creo que los últimos procesadores SMP utilizan cachés de 3 niveles, por lo que quiero comprender la jerarquía de niveles de caché y su arquitectura.
Para entender los cachés necesitas saber algunas cosas:
Una CPU tiene registros. Los valores en eso se pueden utilizar directamente. Nada es más rápido.
Sin embargo no podemos agregar infinitos registros a un chip. Estas cosas ocupan espacio. Si hacemos el chip más grande, se vuelve más caro. Parte de esto se debe a que necesitamos un chip más grande (más silicio), pero también a que aumenta la cantidad de chips con problemas.
(Imagen una oblea imaginaria con 500 cm 2. Corté 10 chips, cada chip de 50 cm 2 de tamaño. Uno de ellos está roto. Lo descarto y me quedan 9 chips de trabajo. Ahora tomo la misma oblea y corto 100 fichas, cada una diez veces más pequeña. Una de ellas, si se rompe, descarto la ficha rota y me quedan 99 fichas funcionales que, de otro modo, habría perdido. chips, necesitaría pedir precios más altos (más que solo el precio del silicio adicional).
Ésta es una de las razones por las que queremos chips pequeños y asequibles.
Sin embargo, cuanto más cerca esté el caché de la CPU, más rápido se podrá acceder a él.
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. Las CPU modernas funcionan con relojes de GHz. Eso también es rápido. Si tomo una CPU de 4 GHz, una señal eléctrica puede viajar aproximadamente 7,5 cm por tic del reloj. Eso son 7,5 cm en línea recta. (Los chips son todo menos conexiones directas). En la práctica, necesitará mucho menos que esos 7,5 cm, ya que eso no da tiempo a 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 físicamente posible. Lo que significa chips grandes.
Estos dos deben estar equilibrados (rendimiento versus costo).
¿Dónde se encuentran exactamente los cachés L1, L2 y L3 en una computadora?
Suponiendo únicamente hardware tipo PC (las mainframes son bastante diferentes, incluso en el equilibrio entre rendimiento y costos);
IBM XT
El original de 4,77 Mhz: sin caché. La CPU accede a la memoria directamente. Una lectura de la memoria seguiría este patrón:
- La CPU coloca la dirección que desea leer en el bus de memoria y afirma la bandera de lectura.
- La memoria coloca 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 (6 Mhz), pero el modelo más rápido funcionaba hasta 20 Mhz y a menudo necesitaba demoras 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 afirma la bandera de lectura.
- La memoria comienza a poner los datos en el bus de datos. La CPU espera.
- La memoria terminó de recibir los datos y ahora está 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, eso puede ser fácilmente de 12 pasos, por eso tenemos caché.
80386: (1985)
Las CPU se vuelven más rápidas. Tanto por reloj como corriendo a velocidades de reloj más altas.
La RAM se vuelve más rápida, pero no tanto como las CPU.
Como resultado, se necesitan más estados de espera. Algunas placas base solucionan esto agregando caché (que sería caché de primer nivel ) en la placa base.
Una lectura de la memoria ahora comienza con una verificación si los datos ya están en el caché. Si es así, se lee desde la memoria caché mucho más rápida. 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.
En esta época se vuelve común colocar 256 KB de memoria estática rápida en la placa base como caché de segundo nivel . Por lo tanto, caché de primer nivel en la CPU, caché de segundo 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 pudieran ajustarse individualmente para su uso específico. Todavía tienes un primer caché pequeño pero muy rápido cerca de la CPU, y un segundo caché más grande pero más lento en la placa base. (A mayor distancia física).
En la misma área del pentium 1, Intel produjo elPentiumPro('80686'). Dependiendo del modelo, este chip tenía un caché integrado de 256 Kb, 512 KB o 1 MB. También era mucho más caro, lo que se explica fácilmente con la siguiente imagen.
Observe que la caché utiliza la mitad del espacio del chip. Y esto es para el modelo de 256 KB. Técnicamente era posible disponer de más caché y algunos modelos se produjeron con cachés de 512 KB y 1 MB. El precio de mercado de estos era alto.
Observe también que este chip contiene dos troqueles. Uno con la CPU real y el primer caché, y un segundo con el segundo caché de 256 KB.
Pentium-2
El pentium 2 es un núcleo pentium pro. Por razones económicas, no hay una segunda caché en la CPU. En cambio, lo que se vende como CPU es una PCB con chips separados para la CPU (y el primer caché) y el segundo caché.
A medida que la tecnología avanza y comenzamos a crear chips con componentes más pequeños, resulta financieramente posible volver a colocar el segundo caché en la CPU real. Sin embargo, todavía hay una división. Primer caché muy rápido acoplado a la CPU. Con un primer caché por núcleo de CPU y un segundo caché más grande pero menos rápido 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 en la velocidad a la que podemos sincronizar las CPU. Un 8086 o un 80286 no necesitaban refrigeración. Un Pentium-4 funcionando a 3,0 GHz produce tanto calor y utiliza tanta energía 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 consumirían menos energía que una única CPU idéntica de 3,0 GHz, pero podrían realizar más trabajo).
Esto se podría solucionar de tres maneras:
- Haga que las CPU sean más eficientes, para que realicen más trabajo a la misma velocidad.
- Utilice varias CPU
- Utilice varias CPU en el mismo 'chip'.
1) Es un proceso continuo. No es nuevo y no parará.
2) Se hizo desde el principio (por ejemplo, con placas base duales 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 en las que varios 'núcleos de CPU' estén integrados en un solo chip. (Luego llamamos a esa CPU CPU de doble núcleo para aumentar la confusión. Gracias marketing :))
Hoy en día simplemente 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 pentium-4 en el mismo chip.
¿Recuerdas la imagen del viejo Pentium-Pro? ¿Con el enorme tamaño de caché?
Ver eldos¿Grandes áreas en esta imagen?
Resulta que podemos compartir ese segundo caché entre ambos núcleos de CPU. La velocidad disminuiría levemente, pero un segundo caché compartido de 512 KB suele ser más rápido que agregar dos cachés independientes de segundo nivel de la mitad del tamaño.
Esto es importante para tu pregunta.
Significa que si lees algo de un núcleo de CPU y luego intentas leerlo desde otro núcleo que comparte el mismo caché, obtendrás un acierto de caché. No será necesario acceder a la memoria.
Dado que los programas migran entre CPU, dependiendo de la carga, la cantidad de núcleos y el programador, puede obtener rendimiento adicional fijando programas que usan los mismos datos en la misma CPU (accesos de caché en L1 e inferiores) o en las mismas CPU que compartir caché L2 (y por lo tanto 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, tiene dos opciones:
- No molestar. El sistema operativo debería poder programar cosas. El programador tiene un gran impacto en el rendimiento de la computadora y la gente ha dedicado mucho esfuerzo a optimizarlo. A menos que haga algo extraño o esté optimizando para un modelo específico de PC, será mejor que utilice el programador predeterminado.
- Si necesita hasta el último bit de rendimiento y un hardware más rápido no es una opción, intente dejar las bandas 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 la caché L3, pero no son diferentes. Una 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, tenerlo no tendría sentido) y, a menudo, se comparte con todos los núcleos.
Respuesta2
Esos cachés son partes internas del procesador. Algunos se comparten entre núcleos, otros son individuales y dependen de la implementación. Pero todos ellos están ubicados en el chip. Algunos detalles: Procesador Intel Intel® Core™ i7, tomadoaquí:
- Una caché de primer nivel (L1) de instrucciones de 32 KB y datos de 32 KB para cada núcleo
- Un caché de segundo nivel (L2) compartido de instrucciones/datos de 256 KB para cada núcleo
- Caché de último nivel (L3) de instrucciones/datos compartidos de 8 MB, compartido entre todos los núcleos
Foto del chip del procesador (lo siento, no sé el modelo exacto). Puedes ver que el caché ocupa un área significativa en el chip:
Respuesta3
La caché casi siempre está en el chip para un acceso más rápido. Aquí hay un bonito diagrama que muestra una CPU Intel de cuatro núcleos con el caché L3 resaltado. Cuando miras imágenes como esta de una CPU, grandes áreas uniformes suelen ser bancos de memoria en chip que se utilizan como caché.
Respuesta4
No estoy seguro acerca del L3, pero L1/L2 siempre está ubicado 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.