'''NUMA(Non-Uniform Memory Access)'''とは、[[共有メモリ]]型[[マルチプロセッサ]][[コンピュータシステム]]の[[アーキテクチャ]]の分類のひとつで、複数ある[[プロセッサ]]が共有する[[メインメモリ]]へのアクセスコストが、メモリの部分領域とアクセスするプロセッサに依存して均一でないアーキテクチャである。
初期のやや学術的なNUMAシステムの定義としては、4ウェイ程度プロセッサとメモリの小規模な[[SMP]]システム対(これを「ビルディング・ブロック」など[[ノード]]と呼ぶ)が複数存在し、それらを高速・低遅延のインターコネクトによって(その詳細は問わない)で接続して構成されていたものとなる。ただし共有メモリ型であるので各プロセッサが同じビルディング・ブロック内全ノードのメモリをアクセドレスす可能である場合にはロ必要があり、各ノーカルなドのメモリバスを単一の遅延時間だけで物理アクセドレス空間にマップできるため高速にアクセス可能だことが、他のビルディング・ブ要件となる。あるプロセック内サから見て同一ノードのメモリを「ローカル」メモリ、他ノードのメモリを「リモート」メモリと呼ぶ。一般的には(ローカルメモリのアクセスするにはインタ遅延時間)<(リモーコネクトを通らなければならないためメモリのアクセス遅延が大きくな時間)である。
初期のNUMAシステムは、4ウェイ程度の小規模な[[SMP]]システム(これを「ビルディング・ブロック」などと呼ぶ)を高速・低遅延のインターコネクトによって接続して構成されていた。
現在ではチップレベルでNUMAアーキテクチャを取り入れたIBMの[[POWER]]4やAMDの[[Opteron]]プロセッサなどもある。これらのプロセッサではメモリバスがプロセッサチップと直結しており、マルチプロセッサシステムで他のプロセッサのメモリバスに接続されたメモリにアクセスする際には、チップ間のインターコネクトを通じてデータをやり取りするようになっている。このため、外からは一見SMPシステムのように見えても厳密な意味ではプロセッサ-メモリ間のアクセスコストの均一性が破れておりNUMAアーキテクチャである。 ▼
▲現在ではチップレベルでNUMAアーキテクチャを取り入れたIBMの[[POWER]]4やAMDの[[Opteron]]プロセッサなどもある。これらのプロセッサではメモリバスがプロセッサチップと直結しており 、マルチプロセッサシステムで他のプロセッサのメモリ バスに接続されたメモリにアクセスする際にはと組み合わせて単一のNUMAノードを構成し、チップ間 の高速インターコネクト を通じてデータをやり取りするによ うになって いる。このため、外からは一見SMPシステムのように見えても厳密な意味ではプロセッサ-共有メモリ 間のアクセス コストの均一性が破れておりNUMAアーキテクチャであるを行う。
NUMAに対して、プロセッサ-メモリ間の対象性を保ったまま大規模SMPシステムを構築するアーキテクチャを特にNUMAと区別するため、UMA(Uniformed Memory Access)と呼ぶこともある。 ▼
▲NUMAに対して 、プロセッサ-メモリ 間アクセスコストの 対象均一性を保ったまま大規模SMPシステムを構築するアーキテクチャを 、特にNUMAと区別するため 、UMA(UniformedUMA(Uniform Memory Access)と呼ぶこと もがある。
==背景==
小規模SMPシステムでは単一バス上にすべてのプロセッサとメモリが同居しているが、バスの特性として複数プロセッサの同時メモリアクセスができないことが挙げられる。他のプロセッサがメモリアクセスを行っている間、自分は待つしかない。この現象は同一バスに接続されるプロセッサが増えるにしたがって顕著となる。したがってSMPシステムの並列度を増してスケールアップしていく場合、単純に小規模SMPシステムの設計を拡張して単一メモリバスに接続するプロセッサ数を増やしていったのでは、プロセッサはほとんどの時間をメモリアクセスの待ち時間に費やすことになってしまうであろう。また、単一バスに接続されるプロセッサが増えるということはバス信号線の物理的長さの増大を意味し、それはバスクロック向上の阻害要因となってしまう(信号線路上を伝わる電気信号の速さは有限であるため)。
これを解決するため、メモリを複数バンクに分割しプロセッサとメモリバンク間をクロスバースイッチなどで結ぶ手法も実際に取られているが、この手法ではローカルバスと比較して常に大きな遅延でアクセスすることになってしまう(このようなアーキテクチャは、NUMAの定義でノードを構成するプロセッサとメモリをプロセッサノードとメモリノードにデカップリングしたUMAアーキテクチャの一形態である)。
これを解決するまため、メモリを複数バンクに分割しプロセッサとメモリバンク間をクロスバースイッチなどで結ぶ手法も実際に取られているが、この手法ではローカルバスと比較して常に大きな遅延でアクセスすることになってしまう。メモリ側をマルチポートとすることも考えられるが、同時アクセスによる遅延を防ぐためポートを増やすとそれだけインターコネクトのための信号線が増えるためコスト増大を招いてしまう。
一方、ソフトウェアの動作を詳しく観察すると、ほとんどのメモリアクセスはある特定の領域に集中している(「[[参照のローカル性]]」:"locality of reference")。[[オペレーティング・システム]]が適切にメモリを割り当てることによって、プロセッサが頻繁に参照する必要のあるデータをアクセスコストの低いメモリに配置し、アクセスコストの高いメモリには頻繁に参照しないデータを配置することができる。それによって不均一なメモリアクセスコストを持つシステムでも理想的なSMPシステムに近い性能を発揮することができる点に着目したのがNUMAアーキテクチャである。
NUMAの特長をまとめると、バスを共有するプロセッサ数を抑えることでバスの輻輳を防ぎ、バスクロックの向上を可能と容易にする。その一方で、SMPとはアーキテクチャが大幅に異なるためアプリケーションを書き直さなければならない非共有分散メモリ型のマルチプロセッサシステムとは異なり、であるのでNUMAシステムはソフトウェア的には(少なくともユーザアプリケーションからは)通常のSMPシステムと同等に見えるため、したがってSMPシステム用に開発されたアプリケーションがそのまま稼動する。ただし、オペレーティングシステムがNUMAを意識したメモリ管理を行わない場合は性能劣化が避けられない。
NUMAシステムを製造販売している(いた)会社としてはSGI、IBM、Sequent(1999年にIBMと合併)、Compaq(現HP)などがある。
|