Skip to content
oraccha edited this page Jan 14, 2013 · 1 revision

Non Uniform Memory Access

メモリアクセス時間が,プロセッサメモリ領域への距離によって異なる共有メモリアーキテクチャ.

マルチプロセッサシステムにおけるメモリモデルには次の三つが考えられる(命令とデータの流れに着目したFlynnによる分類ってのもある).

  • UMA (Uniform Memory Access) . 共有メモリモデル.通常単一のバスにプロセッサとメモリ,I/Oコントローラが接続される.すべてのメモリに対するアクセス時間は均一であるが,スケーラビリティがない. . SMP マシンはここに分類される.
  • NUMA (Non Uniform Memory Access) . 分散共有メモリモデル.各プロセッサはローカルメモリを持ち,他のプロセッサが持つリモートメモリに対してもアクセスできるが,アクセス時間が遅い.ノード間はスイッチまたはクロスバー接続される.
    • 各プロセッサにメモリが直結され,プロセッサ間は HyperTransport で接続される AMD64 アーキテクチャも一種の NUMA と言える.
  • NORMA (No Remote Memory Access) . 分散メモリモデル.ローカルメモリに対しては直接アクセスできるが,リモートメモリはメッセージパッシングを用いてアクセスする.メッセージパッシングの API としては PVMMPI が有名. . いわゆる MPPBeowulf もこれかな.

SGIのChallenge XLはバスベース(最大36プロセッサ)だったが、OriginはNUMAアーキテクチャ。

ソフトウェア開発の容易さから言うと UMA > NUMA > NORMA となる.

NUMA でも SMP に対応した OS であればとりあえず動作する. しかし,NUMA ではとある仮想アドレスのページが単純に各ノードに分散されてしまうと,性能上のボトルネックになる.そこで,局所性を考えたページ配置を OS 側で行なう必要がある. また,プロセッサの性能が年率 1.5〜2 倍向上しているのに対して,インタコネクトの性能は 15% 程度しか向上していないので,ノード間の通信のオーバヘッドが相対的に大きくなる.ますますキャッシュにセンシティブになっている.


  • ccNUMA

  • [http://lse.sourceforge.net/numa/ Linux-on-NUMA] (LinuxScalabilityEffort)

  • [http://japan.linux.com/enterprise/03/05/14/0222221.shtml?topic=1 NUMA:理論と実践] (japan.linux.com 2003-05-14)


プログラミング言語のレイヤ

Clone this wiki locally