Estoy tratando de averiguar detalles específicos sobre los cachés (en particular, qué cachés se comparten entre los núcleos y cuáles no) y me he topado con una inconsistencia.
sudo lshw
dice
*-cache:0
description: L1 cache
physical id: a
slot: Internal Cache
size: 64KiB
capacity: 64KiB
capabilities: synchronous internal write-back
*-cache:1
description: L2 cache
physical id: b
slot: External Cache
size: 8MiB
capabilities: synchronous internal write-back
pero lscpu
afirma
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
No me preocupo demasiado por la adición del caché de instrucciones y datos, pero ¿adónde se fue L2?
Observado en una máquina que ejecuta Ubuntu 10.10, o para uname -a
hablar:
Linux name 2.6.35-32-generic #66-Ubuntu SMP Mon Feb 13 21:04:32 UTC 2012 x86_64 GNU/Linux
Esta es una pregunta general, pero tenga en cuenta que ni la respuesta más precisaespecificaciones del fabricanteno pude encontrar niWikipediatiene el detalle necesario.
Pregunta adicional no relacionada: ¿ External Cache
significa que el caché se comparte entre los (cuatro) núcleos (y Internal Cache
lo contrario)?
Respuesta1
Gracias por agregar información adicional sobre el procesador a su pregunta. Es útil saber que los ejemplos que publicó se refieren a unIntel Core i7-920 Processor
.
La información proporcionada por lscpu
es más precisa porque incluye los tres niveles de caché, L1, L2 y L3. Parece que lshw
solo se modificó mínimamente para reflejar la adición de una caché L3 por parte de Intel a sus CPU. En lugar de mostrar información sobre los tres niveles de caché, la información sobre el tamaño de la caché L3 aparentemente se informa como caché L2.
Supongo que las especificaciones que miró no incluían caché L1 y L2 porque dentro de una microarquitectura determinada son todas iguales. Por ejemplo, para Nehalemesto es"Caché/núcleo L1 de 64 KB (datos L1 de 32 KB + instrucciones L1 de 32 KB) y caché/núcleo L2 de 256 KB.".
Creo que darle a cada núcleo su propia L1 y L2 con una única L3 común mucho más grande se introdujo por primera vez como parte delNehalem (microarquitectura)(¿en noviembre de 2008?).
No sé por qué lshw
utiliza el término External Cache
para referirse a la L3. Pero me parece engañoso ya que el caché L3 está en la CPU y no es lo que yo consideraría.externo. Una vez más, esto se siente como intentar utilizar software antiguo para describir hardware más nuevo y realizar solo cambios mínimos en el software.
(Probablemente se podría aprender más mirando el código fuente real, pero no tuve tiempo de intentar hacerlo).
Finalmente, sí, la caché L3 se comparte entre los núcleos/hilos. La siguiente cita es del artículo de Wikipedia vinculado anteriormente, "Se reintroduce el Hyper-threading junto con una reducción en L2, que se ha incorporado como L3 Cacheque es utilizable por todos los núcleos."