Memory System Concepts (メモリシステム概念)
Memory Wall・キャッシュコヒーレンス(MESI/MOESI)・NUMA/UMA・PIM/CIM・CXL メモリ拡張の概念を横断俯瞰。演算とメモリの乖離問題と near-data computing への進化を整理する。
article technology ja Memory Wall・キャッシュコヒーレンス(MESI/MOESI)・NUMA/UMA・PIM/CIM・CXL メモリ拡張の概念を横断俯瞰。演算とメモリの乖離問題と near-data computing への進化を整理する。Memory System Concepts (メモリシステム概念)
演算素子(CPU/GPU)の性能向上ペースとメモリの帯域幅・レイテンシ改善ペースの乖離が拡大する中で、メモリシステムの設計は半導体・AI インフラの中核課題になっている。本記事は Memory Wall・キャッシュコヒーレンス・NUMA/UMA・PIM/CIM・CXL メモリ拡張という横断的な概念を俯瞰し、キャッシュ階層(tech-108)・DRAM 世代(tech-109)・新規メモリ(tech-110)の補完知識として機能する。
Memory Wall — 演算とメモリの速度乖離
Memory Wall(メモリウォール)は、Wulf & McKee が 1995 年に命名した概念で、CPU の演算能力が毎年 60% 向上するのに対し、メモリ帯域幅は 10% 程度の改善に留まるため、演算とメモリのギャップが指数的に拡大する現象を指す。
ルーフラインモデル(Roofline Model) は演算強度(FLOP/byte)と実際のシステム性能の上限を整理するフレームワークである。演算強度が低い(= バイト当たりの演算が少ない)カーネルはメモリ帯域幅に律速され、演算強度が高い(= GEMM など)カーネルは演算ピーク性能に律速される。大規模言語モデルのデコード(自己回帰推論)は Attention 層の KV キャッシュ読み出しが dominante で、典型的にメモリ律速である。
Memory Wall への対応策は大きく 4 つ: (1) キャッシュ階層の拡大と最適化、(2) メモリ帯域幅の向上(HBM4 等)、(3) 演算をメモリに近付ける PIM/CIM、(4) CXL によるメモリプールの拡張。
キャッシュコヒーレンス — マルチコア一貫性
マルチコア/マルチソケットシステムでは、各コアが独自の L1/L2 キャッシュを持つため、同一データが複数のキャッシュに異なる状態で存在し得る。コヒーレンスプロトコル はこの一貫性を保証する仕組みである。
MESI プロトコル は最も基本的な 4 状態モデル:
- M(Modified): 自コアのみが最新値を持ち、メインメモリは古い
- E(Exclusive): 自コアのみが保持し、メインメモリと同一
- S(Shared): 複数コアが同一コピーを保持
- I(Invalid): 無効(別コアが Modified 状態)
MOESI は MESI に O(Owned)状態を追加し、Owner コアが他コアへの Shared キャッシュラインの提供責任を持つ。AMD の Zen 系アーキテクチャが採用し、メモリへの書き戻しトラフィックを削減する。MESIF(Intel)は F=Forward を追加し、Shared ラインの転送担当を明示する。
実装: バスベースのスヌープ(snooping)プロトコルはすべてのコアがバス全体をモニタするが、コア数増加でスケールしない。大規模サーバは ディレクトリプロトコル(directory protocol)を採用し、各キャッシュラインの所在をディレクトリが管理する。ディレクトリの容量は全キャッシュラインに比例するためオーバーヘッドが存在する。
False Sharing: 異なるコアが同一キャッシュライン(64 バイト)内の別々の変数を更新すると、実際にはデータ競合がないにもかかわらず無効化が頻発し性能が激減する(キャッシュ障害パターンは tech-108 参照)。
NUMA — 非均一メモリアクセス
NUMA(Non-Uniform Memory Access) は、マルチソケットサーバで各ソケット(NUMA ノード)に直結したローカルメモリへのアクセスが、他ソケットのリモートメモリへのアクセスよりも大幅に低レイテンシ・高帯域である構成を指す。
典型的なデュアルソケット NUMA サーバでは:
- ローカルメモリアクセス: ~100 ns
- リモートメモリアクセス(QPI/UPI インターコネクト経由): ~200〜300 ns(1.5〜3x の遅延)
OS の NUMA-aware スケジューラはスレッドとメモリを同一 NUMA ノードに配置する(NUMA-first アロケーション)。Linux の numactl --localalloc や libnuma API がこれを制御する。NUMA を無視したメモリアロケーションは重大な性能低下(メモリバウンドワークロードで 50% 以上の性能差)を引き起こすため、HPC・データベース・AI トレーニングでは NUMA 配置が必須設計項目である。
UMA — 統合メモリアーキテクチャ
UMA(Unified Memory Architecture) は CPU・GPU・その他アクセラレータが単一の物理メモリプールを共有するアーキテクチャ。 Apple Silicon(M1〜M4 シリーズ)が商用製品として最もよく知られる実装例で、CPU・GPU・Neural Engine が同一 LPDDR パッケージ上の統合メモリにアクセスする。
UMA の利点: CPU→GPU データ転送(CUDA でいう cudaMemcpy)が不要で、ゼロコピーのデータ共有が可能。帯域幅利用効率が高い。不利点: CPU と GPU がメモリ帯域幅を共有するため、どちらかが帯域を占有すると他方が律速される。また、VRAM として切り出せる容量が物理 RAM 全体に依存する。
離散 GPU(NVIDIA H100 等)の CUDA Unified Memory は、ソフトウェア的にページマイグレーションで CPU/GPU メモリを統一的に扱う仕組みだが、物理的 UMA ではなくメモリコピーが発生する点で Apple Silicon の UMA とは異なる。
PIM — Processing-in-Memory
PIM(Processing-in-Memory) はメモリチップ内部または近傍に演算素子を組み込み、データをチップ外に転送せずに演算を完結させるアーキテクチャ。Memory Wall を「演算をメモリに持ち込む」ことで回避する。
主要実装:
- Samsung HBM-PIM: HBM2 ダイ内に INT16 MAC 演算ユニットを統合。AI 推論ワークロードで HBM 外部データ転送を削減
- SK Hynix AiM(Accelerator-in-Memory): GDDR6 ベースのバンク内演算アーキテクチャ。各バンクに MAC 演算ユニットを持つ
- UPMEM: DDR4 互換 DIMM に 8 コア DRAM Processing Unit(DPU)を内蔵。x86 サーバに挿入して近接演算を可能にする
PIM の課題: プログラミングモデルの複雑化、各バンク間の通信コスト、精度(INT/FP 演算の選択)、既存ソフトウェアスタックとの互換性。現時点では特定ワークロード(大規模スキャン、単純 MAC)での利用に留まる。
CIM — Compute-in-Memory
CIM(Compute-in-Memory) は PIM より踏み込んで、メモリセルそのものを演算素子として使う。アナログ CIM では SRAM/ReRAM/FeRAM クロスバーアレイが行列-ベクトル積(MAC)を物理的に実行する。
- SRAM CIM クロスバー: AI チップの推論アクセラレータに組み込まれ始めている。精度は 8-bit 程度
- ReRAM CIM: アナログ MAC で高エネルギー効率が期待されるが、アナログノイズ・デバイスばらつきの精度課題が研究テーマ(tech-110 参照)
CIM はまだ大規模量産製品の主流ではなく、研究・初期製品段階にある。AI エッジ推論チップ(低消費電力向け)での採用例が徐々に出ている。情報カットオフ ~2025-08 のため、2026-05 時点でのCIM 商用製品の具体状況は外部検証を推奨する。
CXL — メモリ拡張・プーリング・共有
CXL(Compute Express Link) は PCIe 物理層上に構築されるキャッシュ・メモリコヒーレントインターコネクトで、CPU と拡張デバイスがメモリを共有・プールするための規格である。
CXL デバイスは 3 タイプに分類される:
- Type 1: CXL.io + CXL.cache(GPU・NIC など、CPUメモリをキャッシュ)
- Type 2: CXL.io + CXL.cache + CXL.mem(GPU 搭載メモリの CPU からの直接アクセスも可)
- Type 3: CXL.io + CXL.mem(メモリ拡張専用デバイス、DRAM/SCM プール)
CXL 3.1: 2024 年策定。64 GT/s の PCIe Gen 6 上で動作し、商用コントローラが 2025 年にサンプル出荷(例: Montage M88MX6852、64 GT/s・デュアルチャネル DDR5-8000 対応)。
商用展開: Microsoft が 2025 年 11 月に CXL ベースのクラウドインスタンスを初公開。CXL メモリプールは 100 TiB 規模での商用運用が 2025 年に始まり、stranded memory(使われないメモリ)の解消とメモリ利用率 +50% 向上が報告されている。エンタープライズへの量産展開は 2026〜2027 年が中心見通し。
CXL のレイテンシは DRAM ローカルアクセスより 100〜500 ns 程度大きい(プール型アクセスの特性上)。レイテンシ非敏感な大規模バッチ推論・データベース拡張メモリ用途が初期ターゲットである。
アンチパターン表
| パターン | 発生状況 | 影響 | 対策 |
|---|---|---|---|
| コヒーレンス状態爆発 | 多数コアが同一ラインを書き込む | スヌーピングトラフィック爆発、性能逓減 | ディレクトリプロトコル + NUMA-aware 配置 |
| NUMA 無視メモリ配置 | スレッド固定せずリモートメモリを無作為使用 | メモリバウンドで 2x 以上の性能差 | numactl・membind でローカルアロケーション強制 |
| PIM・CIM の効果過大評価 | 全ワークロードに PIM を適用 | 制御フローが複雑な処理は PIM では遅くなる | データスキャン・集約など規則性の高い処理に限定 |
| CXL レイテンシの過小評価 | L3 ヒットと同等の期待値でメモリプールを設計 | レイテンシ敏感なOLTP・ゲームで性能劣化 | バッチ推論・コールドデータ拡張にのみ CXL を当て込む |
2026 年の動向
Disaggregated Memory(分解メモリ)が次の潮流である。CXL 3.x による Type 3 メモリプール、RDMA over CXL、FAM(Fabric-Attached Memory)によってラック/クラスタ規模でのメモリプーリングが現実化する。AI 推論の大規模化(LLM の KV キャッシュは 100GB 超に到達)がメモリ容量の需要を急拡大させており、CXL プール型メモリとHBM の役割分担が設計の中心課題になる。情報カットオフ ~2025-08 のため、CXL 3.x 量産状況・FAM の具体仕様については 2026-05 時点で外部検証を推奨する。