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つのキャッシュレベルがすべて含まれているため、より正確です。lshwIntelが自社CPUにL3キャッシュを追加したことを反映して最小限に修正したものと見られる。 L3キャッシュサイズに関する情報は、3つのキャッシュレベルに関するすべての情報を表示するのではなく、L2キャッシュとして報告されているようです。

私はあなたが見ている仕様にL1とL2キャッシュが含まれていないと仮定します。どちらも、与えられたマイクロアーキテクチャで同じであるからです。例えばニハレムの場合これは64KB L1キャッシュ/コア(32KB L1データ+ 32KB L1命令)と256KB L2キャッシュ/コア。」。

私は各コアに独自のL1とL2を提供し、より大きな汎用L3を提供することが次のようになると思います。Nehalem(マイクロアーキテクチャ)(2008年11月?)

なぜこの単語がL3を指すのにlshw使われるのかわかりません。External Cacheしかし、L3キャッシュが私が考慮したのではなくCPUチップにあるため、誤解を招くようです。外部。繰り返しますが、これはソフトウェアを最小限に変更しながら、古いソフトウェアを使用して新しいハードウェアを説明したいのと同じです。

(実際のソースコードを見るともっと学ぶことができますが、試してみる時間はありません。)

最後に、L3キャッシュはコア/スレッド間で共有されます。次の引用は、上記のWikipediaの記事からのものです。ハイパースレッディングが再導入され、L2が減少し、L2がL3キャッシュにマージされました。すべてのコアを使用できます。

関連情報