lshw と lscpu はキャッシュに関して意見が一致しません。どちらが正しいのでしょうか?

lshw と lscpu はキャッシュに関して意見が一致しません。どちらが正しいのでしょうか?

キャッシュの詳細 (特に、どのキャッシュがコア間で共有され、どのキャッシュが共有されないか) を調べようとしましたが、矛盾に遭遇しました。

sudo lshw言う

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

しかしlscpu

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

命令キャッシュとデータ キャッシュが追加されることについてはあまり心配していませんが、L2 はどこへ行ったのでしょうか?

Ubuntu 10.10 を実行しているマシンで観察、またはuname -a発言させると:

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

これは一般的な質問ですが、最も正確なメーカー仕様私は見つけられなかったウィキペディア必要な詳細が記載されています。

関係のないボーナスの質問:External Cacheキャッシュが (4 つの) コア間で共有される (およびInternal Cacheその逆) ことを意味しますか?

答え1

質問にプロセッサに関する追加情報を追加していただきありがとうございます。投稿した例が参照していることを知っておくと役立ちます。Intel Core i7-920 Processor

によって提供される情報はlscpu、L1、L2、L3 の 3 つのキャッシュ レベルすべてが含まれているため、より正確です。Intellshwが CPU に L3 キャッシュを追加したことを反映するために、最小限の変更のみが行われたようです。3 つのキャッシュ レベルすべてに関する情報を表示する代わりに、L3 キャッシュのサイズに関する情報が L2 キャッシュとして報告されているようです。

あなたが見た仕様にはL1キャッシュとL2キャッシュが含まれていなかったと思います。なぜなら、特定のマイクロアーキテクチャ内ではすべて同じだからです。たとえば、Nehalemの場合これは64 KB L1 キャッシュ/コア (32 KB L1 データ + 32 KB L1 命令) および 256 KB L2 キャッシュ/コア。「」。

各コアにL1とL2を与え、単一の大きな共通L3を持たせるという手法は、Nehalem (マイクロアーキテクチャ)(2008年11月頃?)。

なぜL3を指すのにlshwこの用語が使われているのかは分かりません。しかし、L3キャッシュはCPUダイ上にあるので、誤解を招くのではないかと思います。External Cache外部の繰り返しになりますが、これは、ソフトウェアに最小限の変更のみを加えながら、古いソフトウェアを使用して新しいハードウェアを記述しようとしているように感じられます。

(実際のソースコードを見ればもっと多くのことがわかるかもしれませんが、それを試す時間がありませんでした。)

最後に、L3 キャッシュはコア/スレッド間で共有されます。次の引用は、上記のリンク先の Wikipedia の記事からのものです。ハイパースレッディングが再導入され、L2が削減され、L3キャッシュとして組み込まれました。すべてのコアで使用可能

関連情報