lshw und lscpu sind sich hinsichtlich der Caches nicht einig – wer hat recht?

lshw und lscpu sind sich hinsichtlich der Caches nicht einig – wer hat recht?

Ich versuche, Einzelheiten zu Caches herauszufinden (insbesondere, welche Caches zwischen Kernen geteilt werden und welche nicht) und bin dabei auf eine Inkonsistenz gestoßen.

sudo lshwsagt

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

aber lscpubehauptet

L1d cache:   32K
L1i cache:   32K
L2 cache:   256K
L3 cache:  8192K

Ich mache mir keine großen Sorgen darüber, dass Befehls- und Datencache zusammengerechnet werden, aber wo ist L2 geblieben?

Beobachtet auf einer Maschine mit Ubuntu 10.10, oder um uname -aes kurz zu machen:

Linux name 2.6.35-32-generic #66-Ubuntu SMP Mon Feb 13 21:04:32 UTC 2012 x86_64 GNU/Linux

Dies ist eine allgemeine Frage, aber beachten Sie, dass weder die genauestenHerstellerangabeIch konnte weder finden nochWikipediaverfügen über die erforderlichen Details.

Unabhängige Bonusfrage: External CacheBedeutet das, dass der Cache zwischen den (vier) Kernen geteilt wird (und Internal Cacheumgekehrt)?

Antwort1

Vielen Dank, dass Sie Ihrer Frage zusätzliche Informationen zum Prozessor hinzugefügt haben. Es ist hilfreich zu wissen, dass sich die von Ihnen geposteten Beispiele auf einenIntel Core i7-920 Processor.

Die von bereitgestellten Informationen lscpusind genauer, da sie alle drei Cache-Ebenen (L1, L2 und L3) umfassen. Es scheint, dass diese lshwnur minimal geändert wurden, um Intels Ergänzung eines L3-Caches zu seinen CPUs widerzuspiegeln. Anstatt Informationen zu allen drei Cache-Ebenen anzuzeigen, werden die Informationen zur Größe des L3-Caches anscheinend als L2-Cache gemeldet.

Ich gehe davon aus, dass die von Ihnen betrachteten Spezifikationen keinen L1- und L2-Cache enthielten, da sie innerhalb einer bestimmten Mikroarchitektur alle gleich sind. Zum Beispiel für Nehalemdas ist"64 KB L1-Cache/Kern (32 KB L1-Daten + 32 KB L1-Befehl) und 256 KB L2-Cache/Kern.".

Ich glaube, dass die Bereitstellung eines eigenen L1 und L2 für jeden Kern mit einem einzigen, viel größeren gemeinsamen L3 erstmals im Rahmen derNehalem (Mikroarchitektur)(im November 2008?).

Ich weiß nicht, warum lshwder Begriff External Cachefür L3 verwendet wird. Aber es erscheint mir irreführend, da sich der L3-Cache auf dem CPU-Chip befindet und nicht das, was ich alsextern. Auch hier fühlt es sich so an, als würde man versuchen, alte Software zu verwenden, um neuere Hardware zu beschreiben, während man nur minimale Änderungen an der Software vornimmt.

(Wahrscheinlich könnte man mehr erfahren, wenn man sich den tatsächlichen Quellcode ansieht, aber mir fehlte die Zeit, das zu versuchen.)

Und schließlich: Ja, der L3-Cache wird von den Kernen/Threads gemeinsam genutzt. Das folgende Zitat stammt aus dem oben verlinkten Wikipedia-Artikel: „Hyper-Threading wird zusammen mit einer Reduzierung von L2 wieder eingeführt, das als L3-Cache integriert wurdedie von allen Kernen genutzt werden kann."

verwandte Informationen