lshw und lscpu sind sich über Caches nicht einig - was ist richtig?

14

Ich versuche, Einzelheiten über Caches herauszufinden (insbesondere welche Caches zwischen Kernen geteilt werden und welche nicht) und bin 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 lscpubehauptet

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

Ich mache mir keine allzu großen Sorgen, dass Anweisung und Datencache zusammengefügt werden, aber wohin ist L2 gegangen?

Beobachtet auf einem Rechner mit Ubuntu 10.10, oder uname -asprechen lassen :

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 genauesten Herstellerspezifikationen, die ich finden konnte, noch Wikipedia die erforderlichen Details aufweisen.

Unabhängige Bonusfrage: Bedeutet das, External Cachedass der Cache zwischen den (vier) Kernen (und Internal Cachedem Gegenteil) geteilt wird?

Raphael
quelle
Zwei Gedanken. Was sagt der Hersteller zuerst? Mein Ansatz wäre wahrscheinlich, die Spezifikationen für die CPU nachzuschlagen und dann zu versuchen, von dort aus nach vorne zu argumentieren. Zweitens, wenn es etwas ist, das Sie tun könnten, wäre ich gespannt, was Sie haben, wenn Sie dies versuchen würden, nachdem Sie eine Live-CD / USB für das neueste Ubuntu oder Fedora gebootet haben. (Vielleicht ist es ein Fehler, der bereits behoben ist? Ich nehme an, es gibt andere Möglichkeiten, um zu überprüfen, ob ein Fehler vorhanden war und behoben wurde, aber ...)
irrational John
@irrationalJohn: Guter Punkt zu offiziellen Spezifikationen (obwohl nicht im Zusammenhang mit der allgemeineren Frage). Leider helfen die Spezifikationen nicht einmal (siehe Bearbeiten). Außerdem kann ich die Maschine nicht manipulieren.
Raphael

Antworten:

3

Vielen Dank, dass Sie die zusätzlichen Informationen zum Prozessor zu Ihrer Frage hinzugefügt haben. Es ist hilfreich zu wissen, dass sich die von Ihnen veröffentlichten Beispiele auf eine beziehen Intel Core i7-920 Processor.

Die von bereitgestellten Informationen lscpusind genauer, da sie alle drei Cache-Ebenen L1, L2 und L3 enthalten. Es scheint, dass lshwnur geringfügig geändert wurde, um Intels Hinzufügung eines L3-Caches zu ihren 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. Für Nehalem ist dies beispielsweise " 64 KB L1-Cache / Kern (32 KB L1-Daten + 32 KB L1-Anweisung) und 256 KB L2-Cache / Kern ".

Ich glaube, dass im Rahmen der Nehalem (Mikroarchitektur) (im November 2008?) Zum ersten Mal jeder Kern sein eigenes L1 und L2 mit einem einzigen, viel größeren gemeinsamen L3 erhalten hat .

Ich weiß nicht, warum lshwsich der Begriff External Cacheauf den L3 bezieht. Aber es kommt mir irreführend vor, da der L3-Cache auf dem CPU-Würfel liegt und nicht das, was ich für extern halte . Wiederum scheint dies der Versuch zu sein, alte Software zu verwenden, um neuere Hardware zu beschreiben, während nur minimale Änderungen an der Software vorgenommen werden.

(Wahrscheinlich könnte man mehr lernen, wenn man sich den tatsächlichen Quellcode ansieht, aber ich hatte keine Zeit, das zu versuchen.)

Schließlich wird der L3-Cache von den Kernen / Threads gemeinsam genutzt. Das folgende Zitat stammt aus dem Wikipedia-Artikel, der oben verlinkt wurde: " Hyper-Threading wird wieder eingeführt, zusammen mit einer Reduzierung von L2, das als L3-Cache aufgenommen wurde, der von allen Kernen verwendet werden kann . "

irrational John
quelle
Vielen Dank für die Hilfe bezüglich der Spezifikationen. Trotzdem ist es schade, nach technischen Daten suchen zu müssen, wenn wir Werkzeuge haben, die so tun, als ob sie dem entsprechen, was wir wollen.
Raphael
@RI wusste nicht, dass Sie (noch) nach etwas suchen. Ehrlich gesagt, das Problem, das ich normalerweise mit Intel habe, ist, dass zu viele Informationen bereitgestellt werden. Für welche Art von Informationen interessieren Sie sich? Wenn Sie auf der Intel i7-920-Seite nach rechts schauen , sehen Sie Quick Links . Der Datenblatt-Link führt Sie zu einer Seite mit technischen Dokumenten . Bei den i7-900-Prozessoren gibt es zwei Volumes, bevor sie überhaupt die mechanischen und thermischen Spezifikationen auflisten. Softwareentwickler bemannt auf einer anderen Seite. Zu viele, um sie aufzulisten.
irrational John
Nun, ich habe parallele Algorithmen verglichen, sodass die Cache-Architektur wichtig war. Es ist schade, dass die GNU / Linux-Tools anscheinend nicht (alle) zuverlässig sind. Auf jeden Fall ging es bei der Frage mehr um die Werkzeuge als um die spezifische Maschine, an der ich arbeitete.
Raphael
@Raphael Ich weiß nicht genau, warum lshwdie Cache-Ergebnisse zurückgegeben werden. Aber möglicherweise wollten sie ihr Ausgabeformat nicht ändern, um ein Skript zu beschädigen, das ihre Ausgabe analysiert. Mit Software-Tools können Sie sich allzu leicht in eine Ecke malen.
irrational John