NUMA(Non-Uniform Memory Access)とは
NUMA(Non-Uniform Memory Access、不均一メモリアクセス)は、複数のプロセッサがメモリを共有するシステムにおいて、メモリへのアクセス速度が均一でない
アーキテクチャです。各プロセッサは、自身に近い「ローカルメモリ」と、他のプロセッサに近い「リモートメモリ」にアクセスできます。ローカルメモリへのアクセスは高速ですが、リモートメモリへのアクセスは遅延が大きくなります。
NUMAの定義
NUMAシステムは、複数のプロセッサとメモリのペア(ノード)がインターコネクトで接続された構成を持ちます。共有メモリ型であるため、全てのプロセッサが全ノードのメモリにアクセスできます。各ノードのメモリは、システム全体の共通物理アドレス空間にマップされます。
- - ローカルメモリ: あるプロセッサから見て、同一ノードに存在するメモリ。
- - リモートメモリ: あるプロセッサから見て、他のノードに存在するメモリ。
一般的に、ローカルメモリへのアクセス遅延は、リモートメモリへのアクセス遅延よりも小さくなります。
NUMAの必要性
小規模なSMP(
対称型マルチプロセッシング)システムでは、単一バス上に全てのプロセッサとメモリが接続されています。しかし、バスの特性上、複数のプロセッサが同時にメモリへアクセスすることができません。そのため、プロセッサ数が増えるにつれて、メモリアクセスの待ち時間が増加し、システム全体のパフォーマンスが低下します。
この問題を解決するために、メモリを複数バンクに分割し、プロセッサとメモリバンク間をクロスバースイッチで結ぶ手法(メモリインターリーブ)も存在します。しかし、この手法では、常に大きな遅延が発生してしまいます。また、メモリをマルチポート化する方法もありますが、インターコネクトのための信号線が増加し、コストが増大します。
NUMAの利点
NUMA
アーキテクチャは、ソフトウェアの動作特性に着目し、メモリアクセスの局所性を利用します。
オペレーティングシステムが適切なメモリ割り当てを行うことで、頻繁にアクセスするデータをローカルメモリに配置し、アクセスコストを最小限に抑えることができます。これにより、不均一なメモリアクセスコストを持つシステムでも、理想的なSMPシステムに近いパフォーマンスを発揮できます。
NUMAの主な特徴は以下の通りです。
1. バスを共有するプロセッサ数を抑え、バスの輻輳を防ぐ。
2. バスクロックの向上を容易にする。
3. ソフトウェア的には、従来のSMPシステムと同様に扱える。
ただし、
オペレーティングシステムがNUMAを考慮したメモリ管理を行わないと、パフォーマンスが低下する可能性があります。
NUMAの歴史
初期のNUMAシステムは、複数の小規模SMPシステムを高速インターコネクトで接続して構成されていました。近年では、CPUチップレベルでNUMA
アーキテクチャが採用されることが多くなっています。例えば、
インテルのItaniumやNehalem系プロセッサ、AMDのOpteronプロセッサなどが挙げられます。
これらのプロセッサでは、メモリバスがプロセッサチップと直結しており、チップ間を高速インターコネクトで接続することで、NUMAノードを形成しています。
UMAとの比較
NUMAに対して、全てのプロセッサが均一なメモリアクセスコストでアクセスできる
アーキテクチャをUMA(Uniform Memory Access)と呼びます。UMAは、NUMAと比較して、大規模SMPシステムを構築する際に、複雑なメモリ管理を必要としない利点があります。
NUMAを採用している主な企業
NUMA
アーキテクチャを採用した独自大型サーバを製造・販売している企業としては、SGI、
IBM、HP、
富士通、NEC、サンマイクロシステム、Crayなどが挙げられます。
まとめ
NUMAは、複数のプロセッサとメモリを持つシステムにおいて、メモリアクセスの効率を向上させるための重要な
アーキテクチャです。ローカルメモリへの高速アクセスを優先することで、システム全体のパフォーマンスを最適化できます。適切なメモリ管理を行うことで、NUMAシステムは、大規模な並列処理を効率的に実行できます。