NUMA アーキテクチャ(ヌーマアーキテクチャ)
Non-Uniform Memory Access。Threadripper PRO 7995WX 4 CCD NUMA・EPYC 9965 12 CCD・Intel Xeon 6 MCC/XCC・Remote memory access penalty(+30-100ns)・numactl(Linux)・numa-domains(Windows)・NUMA Node Interleave・Sub-NUMA Cluster(SNC)・Intel DVFS・AMD Infinity Fabric NUMA aware・HWLOC topology・2026年HEDT+AIワークロードで重要、正しいアフィニティ設定。
概要
NUMA(Non‑Uniform Memory Access)とは、CPUコアとメモリが物理的に分離され、各コアが自分の近くにあるメモリに高速にアクセスできる一方、遠方のメモリへのアクセスは遅延が増大する構造を指す。
2025年に登場したThreadripper PRO 7995WXは、4 CCD(Core Complex Die)を備え、各CCDが独立したNUMAノードを形成することで、最大64コア・128スレッドの処理を高速に実現する。
2026年のEPYC 9965は12 CCDを採用し、さらに大規模なワークロードに対応。Intel Xeon 6 MCC/XCCは、MCC(Memory‑Capped Core)とXCC(eXtended Core Cluster)を組み合わせ、メモリ帯域を柔軟に拡張できる。
主な特徴・仕組み
- NUMAノード:各CCDが独自のメモリバンクを持ち、ノード間の通信はInfinity Fabric(AMD)やQPI(Intel)を介する。
- 遅延:遠方メモリアクセスは30〜100 nsのペナルティが発生。
- Affinity設定:Linuxではnumactl、Windowsではnuma‑domainsを用いてスレッドをノードに固定。
- NUMA Node Interleave:メモリページを複数ノードに分散配置し、バランスを取る。
- Sub‑NUMA Cluster (SNC):ノード内でさらに小規模なクラスタを形成し、ローカル性を高める。
- HWLOC topology:ハードウェア構成を可視化し、最適なAffinityを決定。
- Intel DVFS:CPU周波数を動的に調整し、NUMAノード間の負荷を均等化。
スペック/製品比較表
| 製品 | コア/スレッド | ベース/ブースト | L3キャッシュ | メモリ帯域 | NUMAノード数 |
|---|---|---|---|---|---|
| Threadripper PRO 7995WX | 64/128 | 2.5 GHz / 3.4 GHz | 256 MB | 2 TB/s | 4 |
| EPYC 9965 | 96/192 | 2.3 GHz / 3.6 GHz | 512 MB | 4 TB/s | 12 |
| Xeon 6 MCC/XCC | 48/96 | 2.4 GHz / 3.5 GHz | 384 MB | 3 TB/s | 6 |
| Ryzen 9 7950X | 16/32 | 4.5 GHz / 5.0 GHz | 64 MB | 1 TB/s | 1 |
具体例・対応製品
- Threadripper PRO 7995WX:4 CCD × 16 コア、DDR5‑6000 32 GB、NUMAノード間の遅延は約70 ns。
- EPYC 9965:12 CCD × 8 コア、DDR5‑4800 64 GB、Infinity Fabric 2.5 GHz。
- Xeon 6 MCC/XCC:MCC 24 コア、XCC 24 コア、DDR4‑3200 32 GB、QPI 20 Gb/s。
- Ryzen 9 7950X:16 コア、DDR5‑5200 32 GB、単一ノード。
自作PCでの選び方・注意点
- NUMAノード数を把握し、ワークロードに合わせて選択。
- メモリ帯域がCPUクロックと一致するか確認。
- numactlでスレッドを固定し、ノード間の通信を最小化。
- NUMA Node Interleaveを有効にしてメモリバランスを確保。
- HWLOCでトポロジーを確認し、最適なAffinityを設定。
- Intel DVFSを有効にして負荷分散を自動化。
- Infinity FabricのクロックをCPUクロックに合わせる。
- メモリモジュールは同一容量・速度を揃える。
- 電源ユニットはノード数に応じた出力を確保。
- ケースは熱設計を重視し、ノード間の熱影響を抑制。
関連用語との違い
- UMA(Uniform Memory Access):全コアが同一メモリに均等にアクセス。NUMAはノードごとにアクセス速度が異なる。
- Cache‑Coherent NUMA (CC-NUMA):キャッシュ整合性を保つNUMA。AMD Infinity FabricはCC-NUMAを実装。
- SNC(Sub‑NUMA Cluster):ノード内でさらに小規模クラスタを形成し、ローカル性を高める。
- DVFS(Dynamic Voltage and Frequency Scaling):CPU周波数を動的に調整し、NUMAノード間の負荷を均等化。
よくある質問
Q1. NUMAノードを増やすと性能は必ず上がる?
A1. 近年のAIワークロードでは、ノード数が増えるとメモリ帯域が拡張されるが、逆に遅延が増える場合もある。最適なノード数はアプリケーションに依存。
Q2. numactlで設定したAffinityは永続化できる?
A2. Linuxでは/etc/numactl.confに設定を書き込むことで起動時に自動適用可能。
Q3. Intel XeonとAMD EPYCでどちらがNUMAに強い?
A3. EPYCはInfinity Fabricでノード間帯域が広く、XeonはQPIで高い遅延を持つ。用途に応じて選択が必要。
まとめ
NUMAアーキテクチャは、2025年以降の高性能PCやサーバーで不可欠な構造となっている。Threadripper PRO 7995WXやEPYC 9965、Xeon 6 MCC/XCCはそれぞれ異なるノード設計とメモリ帯域を提供し、次世代のAIやデータ解析ワークロードに最適化されている。numactlやnuma‑domainsでAffinityを正しく設定し、HWLOCでトポロジーを把握することで、NUMAの遅延ペナルティを最小化し、最大のパフォーマンスを引き出すことができる。