Numa
NUMA
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/11/03 04:19 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2021年6月) |
NUMA(英: Non-Uniform Memory Access)とは、共有メモリ型マルチプロセッサコンピュータシステムのアーキテクチャのひとつで、複数プロセッサが共有するメインメモリへのアクセスコストが、メモリ領域とプロセッサに依存して均一でないアーキテクチャである。日本語では「不均一メモリアクセス」や「不均等メモリアクセス」と訳される[1][2]。
定義
![]() | この節は検証可能な参考文献や出典が全く示されていないか、不十分です。(2023年11月) |
プロセッサとメモリの対(これをノードと呼ぶ)が複数存在し、それらをインターコネクト(その詳細は問わない)で接続したものを学術的にはNUMAの定義としている。ただし共有メモリ型であるので各プロセッサが全ノードのメモリを利用可能である必要があり、各ノードのメモリを全プロセッサに共通の物理アドレス空間にマップできることが要件となる。あるプロセッサから見て同一ノードのメモリを「ローカル」メモリ、他ノードのメモリを「リモート」メモリと呼ぶ。
一般的には
- ローカルメモリのアクセス遅延時間 < リモートメモリのアクセス遅延時間
である。
小規模の対称型マルチプロセッシング (SMP) システムでは単一バス上にすべてのプロセッサとメモリが同居しているが、バスの特性として複数プロセッサによるメモリの同時アクセスができないことが挙げられる。あるプロセッサがメモリアクセスを行っている間、他のプロセッサは待つしかない。この現象は同一バスに接続されるプロセッサが増えるにしたがって顕著となる。したがってSMPシステムの並列度を増してスケールアップしていく場合、単純に小規模SMPシステムの設計を拡張してバスに接続するプロセッサ数を増やしていったのでは、プロセッサはほとんどの時間をメモリアクセスの待ち時間に費やすことになってしまうであろう。また、単一バスに接続されるプロセッサが増えるということはバス信号線の物理的長さの増大を意味し、それはバスクロック向上の阻害要因となってしまう(信号線路上を伝わる電気信号の速さは有限であるため)。
これを解決するため、メモリを複数バンクに分割しプロセッサとメモリバンク間をクロスバースイッチなどで結ぶ手法(メモリインターリーブ)も実際に取られているが、この手法ではローカルバスと比較して常に大きな遅延でアクセスすることになってしまう(このようなアーキテクチャは、NUMAの定義でノードを構成するプロセッサとメモリをプロセッサノードとメモリノードにデカップリングしたUMAアーキテクチャの一形態である)。
また、メモリ側をマルチポートとすることも考えられるが、同時アクセスによる遅延を防ぐためポートを増やすとそれだけインターコネクトのための信号線が増えるためコスト増大を招いてしまう。
NUMA浸透の背景
![]() | この節は検証可能な参考文献や出典が全く示されていないか、不十分です。(2023年11月) |
ソフトウェアの動作を詳しく観察すると、ほとんどのメモリアクセスはある特定の領域に集中している(参照の局所性)。オペレーティングシステムが適切にメモリを割り当てることによって、プロセッサが頻繁に参照する必要のあるデータをアクセスコストの低いメモリに配置し、アクセスコストの高いメモリには頻繁に参照しないデータを配置することができる。
それによって、実際には不均一なメモリアクセスコストを持つアーキテクチャのシステム(実際のSMP的システム)でも理想的なSMPシステムに近い性能を発揮することができる。この点に着目したのがNUMAアーキテクチャである。
NUMAの特徴をまとめると、バスを共有するプロセッサ数を抑えることでバスの輻輳を防ぎ、バスクロックの向上を容易にする。その一方で、共有メモリ型のマルチプロセッサシステムであるのでNUMAシステムはソフトウェア的には(少なくともユーザアプリケーションからは)通常のSMPシステムと同等に見え、したがってSMPシステム用に開発されたアプリケーションがそのまま稼動する。ただし、オペレーティングシステムがNUMAを意識したメモリ管理を行わない場合は性能劣化が避けられない。
歴史
![]() | この節は検証可能な参考文献や出典が全く示されていないか、不十分です。(2023年11月) |
![]() |
初期[いつ?]のNUMAシステムは、4ウェイ程度の小規模なSMPシステム(これを「ビルディング・ブロック」などと呼ぶ)を比較的高速・低レイテンシのインターコネクトによって接続して構成されていた。
現在[いつ?]、主流のCPUにおいては、チップレベルでNUMAアーキテクチャを取り入れているものが多い(インテルのItanium、Nehalem系などや、AMDのOpteronプロセッサなど)。
これらのプロセッサではメモリバスがプロセッサチップと直結しており、メモリと組み合わせて単一のNUMAノードを構成し、リモートメモリアクセスを行うためのチップ間高速インターコネクトポートがオンチップで実装されている。
NUMAに対して、メモリアクセスコストの均一性を保ったまま大規模SMPシステムを構築するアーキテクチャを、特にNUMAと区別するためUMA(Uniform Memory Access)と呼ぶことがある[注釈 1]。
NUMAを採用した独自大型サーバを製造販売している会社としては、SGI[いつ?]、IBM、HP、富士通(富士通シーメンス)、NEC、サンマイクロシステム[いつ?]、Crayなどがある。
脚注
注釈
- ^ ユニファイドメモリアーキテクチャ(Unified Memory Architecture, UMA)と名前は似ているが、別の概念である。
出典
関連項目
Numa
NUMA
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/28 09:49 UTC 版)
「シークエント・コンピュータ」の記事における「NUMA」の解説
SMP市場には参入が相次ぎ、競争が激化してきたため、シークエント社では次の差別化のポイントを探していた。シークエントはインテルに技術をライセンス供与してSMPの日常化(陳腐化)を図るとともに、ccNUMA(キャッシュコヒーレントNUMA)ベースのシステムの開発に着手した。NUMAは分割されたプロセッサグループ毎にメモリを配置し、メモリアクセスの衝突によるボトルネックを解消するものである。各タスクがアクセスするメモリが局所的である限りにおいて、NUMAによってSMPシステムを越えたマルチプロセッサマシンが可能となる。例えば、サーバならば、各ユーザはそれぞれ別のファイルを操作することが期待される。 1996年、彼らはこの新しいアーキテクチャに基づいたマシンの最初のシリーズをリリースした。これがNUMA-Qと呼ばれ、IBMに買収される前の最後のシステムとなった。 1998年10月 シークエントはIBMとSCOと共にProject Montereyを開始した。その目的はIA-32、IA-64、POWER、PowerPCといったプラットフォーム上でNUMA機能を備えたUNIXの標準化であった。しかし、IBMとSCOがLinux市場に方向転換したためプロジェクトは消滅した。また、このプロジェクトは後にSCOとIBMの訴訟問題のベースとなった。
※この「NUMA」の解説は、「シークエント・コンピュータ」の解説の一部です。
「NUMA」を含む「シークエント・コンピュータ」の記事については、「シークエント・コンピュータ」の概要を参照ください。
固有名詞の分類
- numaのページへのリンク