L1・L2・L3キャッシュの違い:容量・レイテンシ・共有範囲・包含関係を比較
L1・L2・L3キャッシュは、CPUのコアに近い順に並んだ多段のキャッシュで、近いほど小さく速く、遠いほど大きく遅くなります。一般的なPCやサーバーのCPUでは、L1は数十 KBで数サイクル、L2は数百 KB〜数 MBで十数サイクル、L3は数 MB〜数十 MBで数十サイクルが代表的な範囲です。L1とL2は多くの場合コアごとに持ち、L3は複数のコアで共有します。主記憶のDRAMへのアクセスには数百サイクルかかるので、この階層でできるだけ多くのアクセスを受け止めます。
| 項目 | L1キャッシュ | L2キャッシュ | L3キャッシュ |
|---|---|---|---|
| コアとの関係 | 各コア専用 | 多くはコアごとに専用。数コアで共有する設計もある | 複数のコア(チップ全体やコアのまとまり)で共有 |
| 容量(PC・サーバー向けCPUの代表的な範囲) | 命令用・データ用それぞれ約32〜64 KB | コアあたり約256 KB〜数 MB | チップ全体で数 MB〜数十 MB |
| レイテンシ(代表的な範囲) | 約3〜5サイクル | 約10〜20サイクル | 約30〜70サイクル。コアから遠い部分ほど長い |
| 命令とデータ | 分ける(IキャッシュとDキャッシュ) | 共用(統合キャッシュ) | 共用(統合キャッシュ) |
| 設計で重視すること | ヒット時間の短さ。パイプラインの中で毎サイクル使う | L1のミスを受け止め、ミスペナルティを小さくする | 主記憶へのアクセスを減らし、コアの間でデータを共有する |
| ミスしたときの行き先 | L2 | L3 | 主記憶(DRAM) |
| アドレスの扱い | 仮想インデックス・物理タグ(VIPT)が多い | 物理アドレス | 物理アドレス |
| 包含関係 | 最も上位。下位に含まれるかは下位の方式で決まる | インクルーシブ、非インクルーシブなど設計による | インクルーシブにすると一貫性の確認を絞り込みやすい。重複をなくすエクスクルーシブや非インクルーシブの設計もある |
| 物理的な配置 | コアの中。実行ユニットのすぐそば | コアのすぐ外側。コアの一部として配置 | コアごとのスライスに分け、リングやメッシュの網でつなぐことが多い |
| ラインサイズ | 64バイトが一般的 | 64バイトが一般的 | 64バイトが一般的 |
数値は代表的な目安で、世代や製品によって異なります。