キャッシュ(特にコア間で共有されているキャッシュと共有されていないキャッシュ)の詳細を調べようとしていますが、矛盾が発生しています。
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
反対)?
プロセッサに関する追加情報を質問に追加していただきありがとうございます。投稿した例が 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の削減とともに再導入されました。すべてのコアによって。 "