キャッシュの詳細 (特に、どのキャッシュがコア間で共有され、どのキャッシュが共有されないか) を調べようとしましたが、矛盾に遭遇しました。
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キャッシュとして組み込まれました。すべてのコアで使用可能。「