削除された内容 追加された内容
RadioActive (会話 | 投稿記録)
m編集の要約なし
m 定義の追加
1行目:
'''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)などがある。