web-dev-qa-db-ja.com

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 反対)?

14
Raphael

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

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

特定のマイクロアーキテクチャ内ではすべて同じであるため、確認した仕様にはL1キャッシュとL2キャッシュが含まれていなかったと思います。たとえば、Nehalemの場合 this is "64 KB L1 cache/core(32 KB L1 Data + 32 KB L1 Instruction)および256 KB L2 cache/core。」。

各コアに独自のL1とL2を与え、単一のはるかに大きな共通のL3を Nehalem(マイクロアーキテクチャ) (2008年11月?)の一部として最初に導入したと思います。

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

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

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

3
irrational John