Cache Hierarchy and Locality (キャッシュ階層とローカリティ)

article technology medium #キャッシュ#L1-L2-L3#3D-V-Cache#メモリ階層#ローカリティ#GPU#半導体#cache
Created: 2026-05-31 Updated:

CPU・GPU のキャッシュ階層(L1/L2/L3)の構造、時間・空間ローカリティの原理、AMD 3D V-Cache や Infinity Cache などの最新動向を俯瞰する。キャッシュコヒーレンスは memory-system-concepts (tech-111) が担当。

Cache Hierarchy and Locality (キャッシュ階層とローカリティ)

プロセッサの演算速度と主記憶の帯域幅の乖離(Memory Wall)を埋める最重要機構がキャッシュ階層である。L1・L2・L3 という多段 SRAM バッファが時間・空間ローカリティを活用してメインメモリへのアクセスを劇的に削減する。AMD の 3D V-Cache(X3D)や GPU の Shared Memory/L1 統合など、2025–2026 年の設計トレンドも含めて俯瞰する。なおキャッシュコヒーレンス(MESI/MOESI)とメモリシステム全体の概念は memory-system-concepts(tech-111) で扱う。

メモリ階層とローカリティの原理

コンピュータの記憶装置は速度・容量・コストのトレードオフによって階層を形成する。レジスタ(~1 サイクル)→ L1 キャッシュ(4〜5 サイクル)→ L2(12〜15 サイクル)→ L3(40〜80 サイクル)→ DRAM(~200 サイクル)→ SSD(数万サイクル)と、段階的に遅くなる一方でそれぞれ容量が拡大する。

時間ローカリティ(temporal locality)は「最近アクセスしたデータは近い将来また使われる」という傾向であり、ループ変数や繰り返し参照されるデータをキャッシュに保持することで効果を発揮する。空間ローカリティ(spatial locality)は「あるアドレスにアクセスすると隣接アドレスも使われやすい」という傾向であり、キャッシュラインによる塊単位転送(典型的に 64 バイト)がこれを活用する。

ハードウェアプリフェッチャは連続アクセスパターンを検出してキャッシュラインを先読みし、レイテンシを隠蔽する。ソフトウェアプリフェッチ命令(PREFETCHNTA など)を用いる最適化も存在するが、近年のハードウェアプリフェッチャの精度向上により差異は縮小している。

L1 キャッシュとプロセッサコア内の記憶

L1 キャッシュはコアに最も近く、レイテンシが最短(4〜5 サイクル)で容量は最小(32〜64 KB が典型)。命令キャッシュ(I)とデータキャッシュ(D)とデータキャッシュ(D)に分離する ハーバード構造 が多くの実装で採用され、同一サイクルでの命令フェッチとデータアクセスを可能にする。

GPU における L1 と Shared Memory: NVIDIA A100/H100 などの現代 GPU では、SM(Streaming Multiprocessor)ごとに L1 データキャッシュと Shared Memory が統合された物理 SRAM を使用する。A100 の SM は 192 KB の統合バッファを持ち、L1 と Shared Memory の比率をプログラム可能に調整できる(例: 最大 164 KB Shared Memory + 28 KB L1)。Shared Memory はプログラマが明示的に管理するスクラッチパッドであり、スレッドブロック内のスレッド間データ共有に使用される。Shared Memory の 32 バンク構造はバンクコンフリクトのリスクを持つため、アクセスパターン設計が重要である。

L2 キャッシュとコア間共有

L2 は L1 のバックフィルを担う中間キャッシュである。モバイル・デスクトップ CPU では各コア専有、サーバ CPU ではコアクラスタ単位で共有される構成が多い。容量は 256 KB〜数 MB の範囲。レイテンシは 12〜15 サイクル程度。

GPU(例: NVIDIA H100)では L2 キャッシュが全 SM 共有で大容量化が進み、H100 では 50 MB の L2 を備える。GPU L2 はフレームバッファ帯域幅削減に寄与し、メモリトラフィックを削減する重要なバッファとなっている。

書き込みポリシーについては ライトバック(write-back: キャッシュにのみ書き込み、退避時にメインメモリへ)が電力と帯域幅で有利なため主流。ライトスルー(write-through: 毎回メインメモリへ同時書き込み)はコヒーレンス管理が単純になるが帯域浪費が大きい。

L3 / LLC とキャッシュ構造設計

LLC(Last Level Cache)は全コアが共有する最後の防衛線。CPU の L3 は数 MB〜数百 MB のスケールで、DRAM アクセスを削減する役割を持つ。

セットアソシアティブ: L3 は通常 8〜16 way のセットアソシアティブ構成。容量ミスを減らしつつ、フルアソシアティブより実装コストを抑える。ラインは Set = (Address / LineSize) % NumSets でマッピングされる。置換ポリシーは LRU(Least Recently Used)やその近似(Pseudo-LRU、RRIP など)が使われ、スラッシングを防ぐための工夫が各社で行われている。

包含/排他ポリシー: L3 が L1/L2 の全コピーを保持する 包含(inclusive) ポリシーは、コヒーレンス処理を L3 で集中管理できる利点がある(Intel Core 旧世代が採用)。逆に 排他(exclusive) または 非包含(non-inclusive) は実効容量を最大化できる(AMD Zen がこの方向)。

AMD 3D V-Cache(X3D): AMD は Zen 4 ベースの Ryzen 7000X3D / Ryzen 9000X3D において、L3 SRAM チップレットを TSV(Through Silicon Via)で CPU ダイ上にスタックする 3D V-Cache を採用。Ryzen 9 9950X3D では 64 MB の追加 L3 をスタックし、合計 128 MB の L3 を実現。ゲームワークロードでは L3 容量がボトルネックとなるため、この追加容量が 20〜40% の性能向上をもたらすケースがある。製造は TSMC の SoIC-XS を利用。情報カットオフ ~2025-08 のため、2026 年時点の最新投入状況は要確認。

AMD Infinity Cache: GPU(Radeon RX 6000/7000 シリーズ)向けに開発された大容量 SRAM キャッシュ。RX 7900 XTX では 96 MB を搭載し、GDDR6 の帯域幅を実効的に数倍に増幅する。メモリインターフェース幅を抑えつつ高帯域を実現するコスト効率型アーキテクチャである。

キャッシュ障害パターン(アンチパターン表)

パターン発生メカニズム影響対策
False Sharing(偽共有)異なるコアが同一キャッシュラインの異なる変数を書き込むコヒーレンストラフィック爆発、性能低下パディング・アライメントで変数をライン境界に分離
容量ミス(Capacity Miss)ワーキングセットがキャッシュ容量を超過繰り返しの DRAM アクセスデータ構造をキャッシュサイズに合わせて分割(ブロック化)
キャッシュスラッシングセットへの競合が多く、利用直後に退避されるヒット率激減より高い Associativity・異なるデータレイアウト
GPU バンクコンフリクト同一ワープの複数スレッドが同一 Shared Memory バンクにアクセスシリアル実行、スループット低下アクセスオフセットをバンク数でずらす
プリフェッチのキャッシュ汚染不要なプリフェッチがキャッシュを占拠有効データの退避NT(Non-Temporal)ストア命令で LL キャッシュをバイパス

2026 年の動向

3D スタックキャッシュの拡大が最大のトレンドである。AMD X3D の後続製品では 256 MB 以上の L3 スタックが射程に入っており、他 CPU ベンダも類似技術の採用を模索している。GPU では L2 の大容量化(H100: 50 MB、次世代 GPU: 100 MB 超が観測される)が進む一方、HBM との連携でメモリ帯域のボトルネックを異なる層で解決する設計が主流となっている。情報カットオフ ~2025-08 のため、2026-05 時点での次世代 GPU の具体仕様は外部検証未実施。

キャッシュコヒーレンスのスケーラビリティ問題(MESI/MOESI のディレクトリプロトコル、NUMA アーキテクチャとの連携)については memory-system-concepts(tech-111) を参照。

Local graph