lshw y lscpu no están de acuerdo con los cachés, ¿cuál es correcto?

lshw y lscpu no están de acuerdo con los cachés, ¿cuál es correcto?

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 lshwdice

*-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 lscpuafirma

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

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 Cachesignifica que el caché se comparte entre los (cuatro) núcleos (y Internal Cachelo 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 lscpues más precisa porque incluye los tres niveles de caché, L1, L2 y L3. Parece que lshwsolo 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é lshwutiliza el término External Cachepara 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."

información relacionada