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 lshw
sagt
*-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 lscpu
behauptet
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 -a
es 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 Cache
Bedeutet das, dass der Cache zwischen den (vier) Kernen geteilt wird (und Internal Cache
umgekehrt)?
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 lscpu
sind genauer, da sie alle drei Cache-Ebenen (L1, L2 und L3) umfassen. Es scheint, dass diese lshw
nur 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 lshw
der Begriff External Cache
fü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."