特許第6202756号(P6202756)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

<>
  • 特許6202756-支援型コヒーレント共有メモリ 図000002
  • 特許6202756-支援型コヒーレント共有メモリ 図000003
  • 特許6202756-支援型コヒーレント共有メモリ 図000004
  • 特許6202756-支援型コヒーレント共有メモリ 図000005
  • 特許6202756-支援型コヒーレント共有メモリ 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6202756
(24)【登録日】2017年9月8日
(45)【発行日】2017年9月27日
(54)【発明の名称】支援型コヒーレント共有メモリ
(51)【国際特許分類】
   G06F 15/173 20060101AFI20170914BHJP
   G06F 15/177 20060101ALI20170914BHJP
   G06F 12/08 20160101ALI20170914BHJP
【FI】
   G06F15/173 665Z
   G06F15/173 665J
   G06F15/177 C
   G06F12/08 551C
   G06F12/08 541Z
   G06F12/08 531F
【請求項の数】13
【外国語出願】
【全頁数】19
(21)【出願番号】特願2014-229936(P2014-229936)
(22)【出願日】2014年11月12日
(65)【公開番号】特開2015-127949(P2015-127949A)
(43)【公開日】2015年7月9日
【審査請求日】2014年11月13日
(31)【優先権主張番号】14/142,726
(32)【優先日】2013年12月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ダス シャルマ、デベンドラ
(72)【発明者】
【氏名】クマー、モハン ジェイ.
(72)【発明者】
【氏名】フライシャー、バリン ティー.
【審査官】 清木 泰
(56)【参考文献】
【文献】 特開2001−142731(JP,A)
【文献】 特開2013−140445(JP,A)
【文献】 特開平07−152640(JP,A)
【文献】 特開2006−252545(JP,A)
【文献】 特開昭53−084657(JP,A)
【文献】 特開平10−207782(JP,A)
【文献】 特開平09−185550(JP,A)
【文献】 特開平02−033649(JP,A)
【文献】 米国特許出願公開第2008/0307253(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F15/16−15/177
G06F12/08−12/128
G06F12/00−12/06
G06F13/16−13/18
G06F12/16
G06F11/16−11/20
(57)【特許請求の範囲】
【請求項1】
複数のノードにわたるコヒーレント共有メモリのための装置であって、
第1ノード及び第2ノードを有する前記複数のノードを備え、
前記第1ノードは、
第1CPUと、
第1グローバルメモリと、
第1共有メモリ領域を前記第1グローバルメモリにマッピングする第1ファブリックメモリコントローラと
を含み、
前記第2ノードは、
第2CPUと、
第2グローバルメモリと、
第2共有メモリ領域を前記第2グローバルメモリにマッピングする第2ファブリックメモリコントローラと
を含み、
前記第1ファブリックメモリコントローラは、前記第1CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第1共有メモリ領域へのアクセスが可能となるように、前記第1グローバルメモリへのアクセスを管理し、
前記第2ファブリックメモリコントローラは、前記第2CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第2共有メモリ領域へのアクセスが可能となるように、前記第2グローバルメモリへのアクセスを管理し、
プライマリファブリックメモリコントローラとして動作する前記第1ファブリックメモリコントローラは、書き込みを行う場合、バックアップファブリックメモリコントローラとして動作する前記第2ファブリックメモリコントローラが前記書き込みを複製すべく、前記書き込みを前記第2ファブリックメモリコントローラに送信し、
前記第2ファブリックメモリコントローラは、前記書き込みの完了を前記第1ファブリックメモリコントローラに送信し、
前記書き込みが行われたとしても、書き込みが完了するまで、前記書き込みは、前記第1ファブリックメモリコントローラにおいて完了したものと見なされず、
前記第2ファブリックメモリコントローラは、前記第1ファブリックメモリコントローラの故障の場合に使用される、装置。
【請求項2】
前記第1ファブリックメモリコントローラは、
前記第2ファブリックメモリコントローラから前記書き込みの完了を受信するまでのタイマを設定し、前記第2ファブリックメモリコントローラから前記書き込みの完了を受信しない場合、タイムアウトする、請求項1に記載の装置。
【請求項3】
前記ロードストアセマンティクスは、ノード間の通信を可能にする請求項1又は2に記載の装置。
【請求項4】
前記第1ファブリックメモリコントローラ及び前記第2ファブリックメモリコントローラは、前記第1グローバルメモリ又は前記第2グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記第1グローバルメモリ及び前記第2グローバルメモリにわたるRAIDスキームをサポートする請求項1から3のいずれか一項に記載の装置。
【請求項5】
前記第1ファブリックメモリコントローラ又は前記第2ファブリックメモリコントローラの故障に応じて、機能しない前記第1ファブリックメモリコントローラ又は前記第2ファブリックメモリコントローラに付随するメモリモジュールのコンテンツは、他のファブリックメモリコントローラに転送される請求項1から4のいずれか一項に記載の装置。
【請求項6】
前記第1ファブリックメモリコントローラ又は前記第2ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しない前記メモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送される請求項1から5のいずれか一項に記載の装置。
【請求項7】
前記第1共有メモリ領域及び前記第2共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、I/Oスタック、又はそれらの任意の組み合わせを通じてアクセスされる請求項1から6のいずれか一項に記載の装置。
【請求項8】
前記第1ノード及び前記第2ノードは、前記第1共有メモリ領域及び前記第2共有メモリ領域に格納されたデータにアクセスし、前記第1共有メモリ領域及び前記第2共有メモリ領域からの前記データをローカルキャッシュにローカルにキャッシュする請求項1から7のいずれか一項に記載の装置。
【請求項9】
第1CPU、第1グローバルメモリ及び第1ファブリックメモリコントローラを含む第1ノードと、第2CPU、第2グローバルメモリ及び第2ファブリックメモリコントローラを含む第2ノードとを有する複数のノードにわたるコヒーレント共有メモリの方法であって、
前記第1ファブリックメモリコントローラが、第1共有メモリ領域を前記第1グローバルメモリにマッピングすることで、キャッシュ可能な前記第1グローバルメモリを利用可能にする段階と、
前記第2ファブリックメモリコントローラが、第2共有メモリ領域を前記第2グローバルメモリにマッピングすることで、キャッシュ可能な前記第2グローバルメモリを利用可能にする段階と、
ソフトウェア支援メカニズムを用いて、前記複数のノードにわたるデータコヒーレンシを保証する段階と、
前記第1ファブリックメモリコントローラ及び前記第2ファブリックメモリコントローラの使用を通じて、各ノードに対する独立した複数のフォールトドメインを維持する段階
備え、
前記第1グローバルメモリを利用可能にする段階は、
前記第1ファブリックメモリコントローラが、前記第1CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第1共有メモリ領域へのアクセスが可能となるように、前記第1グローバルメモリへのアクセスを管理する段階を含み、
前記第2グローバルメモリを利用可能にする段階は、
前記第2ファブリックメモリコントローラが、前記第2CPUが故障した場合であっても、ロードストアセマンティクスを用いて前記第2共有メモリ領域へのアクセスが可能となるように、前記第2グローバルメモリへのアクセスを管理する段階を含み、
前記方法は、
書き込みを行う場合、プライマリファブリックメモリコントローラとして動作する前記第1ファブリックメモリコントローラにより、バックアップファブリックメモリコントローラとして動作する前記第2ファブリックメモリコントローラが前記書き込みを複製すべく、前記書き込みを前記第2ファブリックメモリコントローラに送信し、前記第2ファブリックメモリコントローラから前記第1ファブリックメモリコントローラに前記書き込みの完了を送信する段階であって、前記書き込みが行われたとしても、書き込みが完了するまで、前記書き込みは、前記第1ファブリックメモリコントローラにおいて完了したものと見なされない、段階と、
前記第1ファブリックメモリコントローラの故障の場合に前記第2ファブリックメモリコントローラを使用する段階と
を更に備える方法。
【請求項10】
前記ロードストアセマンティクスは、各ノードが他のノードと直接的に通信することを可能にする請求項9に記載の方法。
【請求項11】
フォールト分離境界は、各ノードに対する前記独立した複数のフォールトドメインを可能にする請求項9又は10に記載の方法。
【請求項12】
コンピュータに、請求項9から11のいずれか一項に記載の方法を実行させるためのプログラム。
【請求項13】
請求項12に記載のプログラムを格納するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、マルチノードシステムに関する。より具体的には、本開示は、マルチノードシステム内の共有メモリに関する。
【背景技術】
【0002】
マルチノードシステムは、複数のノードを含み得る。その種のシステムは、これらに限定されないが、ネットワーク、ラックサーバシステム、ブレードサーバ、及びその類のものを含む。場合によって、各ノードは、ノードの中のプロセッシング又は入出力(I/O)デバイスの間のハードウェアキャッシュコヒーレンシを有する1又は複数のラックの実質的な部分をスパンする大規模な対称型マルチプロセッシング(SMP)ノードであり得る。キャッシュコヒーレンシの結果として、大規模なSMPシステムは、任意の計算デバイスによるメモリロードストアセマンティクスを通じて直接的にアクセス可能なアプリケーションデータを格納するために、大きなメモリ設置面積を有するが、複数のコンピューティングデバイスの間のきめの細かい負荷バランシングの問題を解決するために、十分な計算リソースを利用できる。そのシステムは、複数のノードが粗粒子レベルで複数のタスクを調整できる、複数のより小さいSMPシステムから構成される疎結合(LC)システムであり得る。
【図面の簡単な説明】
【0003】
以下の詳細な説明は、開示された主題の多数の目的及び特徴の特定の例を含む添付の図面を参照することによって、よりよく理解されてよい。
図1】複数のマルチノードシステムモデルのブロック図である。
図2】部分的にコヒーレントなシステムの例である。
図3】グローバルメモリマップの例である。
図4】複数のクラスタにわたるコヒーレント共有メモリのためのプロセスフロー図である。
図5】プールされた複数のメモリリソースにアクセスし得るノード500のブロック図である。
【0004】
本開示及び図面を通して、同様のコンポーネント及び特徴を言及するために、同一の数字が使用される。100番台の数字は、最初に図1に表れる特徴を参照し、200番台の数字は、最初に図2に表れる特徴を参照し、他も同様である。
【発明を実施するための形態】
【0005】
SMPシステムは、単一のフォールトドメインを含み、システムの任意のコンポーネント又はソフトウェアのピースにおけるフォールトがシステム全体を機能しなくさせる。例えば、SMPノードが機能しない場合、SMPノードを含むシステム全体が機能しない。逆に、LCシステムは、独立した複数のフォールトドメインを通じて、任意のコンポーネント又はソフトウェアのピースの故障を封じ込めるものである。したがって、LCシステムの中の影響を受けるサーバ又はコンポーネントはクラッシュし得るが、他のサーバ又はコンポーネントは、故障が発生していないかのように動作し続ける。しかし、LCシステムの中のメモリは、ロード/ストアセマンティクスを通じて共有されない。むしろ、複数のメッセージは、LCシステムの中でのメモリ共有を達成するために、I/Oドライバを通じて送信される。メモリ共有を可能にするI/Oドライバの使用は、複数のI/Oドライバに関連するより高いレイテンシのために、複数のSMPシステムに比べて、LCシステムのパフォーマンスを低下させ得る。
【0006】
ここで説明される複数の実施形態は、複数のクラスタにわたるコヒーレント共有メモリに関する。複数の実施形態において、ファブリックメモリコントローラは、1又は複数のノードに結合される。ファブリックメモリコントローラは、ロードストアセマンティクスを用いて、各ノード内の複数のメモリモジュールへのアクセスを管理する。各ノード上のメモリモジュールは、各ノードの共有メモリ領域内に含まれる。複数の共有メモリ領域は、ノードが機能しないときでさえ、アクセス可能である。さらに、ファブリックメモリコントローラは、グローバルメモリを管理し、複数のノードの各共有メモリ領域は、ファブリックメモリコントローラによってグローバルメモリにマッピングされてよい。結果として、キャッシュ可能なグローバルメモリが提供される。キャッシュ可能なグローバルメモリは、各ノード又はクラスタの独立した複数のフォールトドメインを維持しながら、複数のノード及び複数のクラスタをわたってデータ整合性を供給できる。さらに、各クラスタがその別個のフォールトドメインを維持しながら、グローバルメモリは、ローカルメモリのようなロードストアセマンティクスを用いて、アクセス可能かつキャッシュ可能である。さらに、共有メモリは、信頼性、可用性、及び保守性(RAS)機能性を提供でき、全てのRAID(Redundant Array of Independent Disks)スキームを含む。本技術は、高密度ラックスケールアーキテクチャ(RSA)とともに使用されてもよい。
【0007】
複数の実施形態において、各ノードは、1又は複数のプロセッシングデバイス(例えば、複数のCPU)、キャッシュ可能又はキャッシュ不可能な及び揮発性又は不揮発性のメモリ、並びに1つのBIOSイメージ又は1つのオペレーティングシステム/仮想マシンモニタイメージを実行する1又は複数のI/Oデバイスを含む。このように、各ノードは、封じ込められるフォールトドメインである。ノードの中の任意のハードウェアコンポーネントにおける又はノード上で実行するソフトウェアの中における任意の故障は、最悪のケースで、そのノードを停止させるだけである。
【0008】
下記の説明及び請求項において、用語「結合」及び「接続」は、それらの派生語とともに使用され得る。これらの用語は、互いに対して同義語であることを意図するものではないことが理解されるべきである。むしろ、特定の複数の実施形態において、「接続」は、2又はより多い要素が互いに直接的な物理的又は電気的なコンタクト状態にあることを示すために使用されてよい。「結合」は、2又はより多い要素が直接的な物理的又は電気的なコンタクト状態にあることを意味してよい。しかし、「結合」は、2又はより多い要素が互いに直接的なコンタクト状態にないが、依然として互いに協働又は作用することを意味してもよい。しかし、用語「疎結合」は、独立した複数のフォールトドメインを有するシステムに言及する。結果として、用語「結合」の使用は、疎結合システムとして知られているものを変更又は修正しない。
【0009】
いくつかの実施形態は、ハードウェア、ファームウェア、及びソフトウェアのうちの1つ又は組み合わせで実装されてよい。いくつかの実施形態は、ここで説明される複数のオペレーションを実行するコンピューティングプラットフォームによって読み取られて実行され得る、機械可読媒体上に格納された複数の命令として実装されてもよい。機械可読媒体は、例えばコンピュータのような機械によって可読な形で情報を格納又は送信するための任意のメカニズムを含んでよい。例えば、機械可読媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光学ストレージ媒体、複数のフラッシュメモリデバイスなどを含んでよい。
【0010】
実施形態は、実装又は例である。本明細書における「実施形態」、「一実施形態」、「いくつかの実施形態」、「様々な実施形態」、又は「他の実施形態」という言及は、その複数の実施形態に関連して説明された特定の特徴、構造、又は特性が、本発明の全ての実施形態ではなく、少なくともいくつかの実地形態に含まれることを意味する。「実施形態」、「一実施形態」、又は「いくつかの実施形態」の様々な出現は、必ずしも全て同一の実施形態に関することでない。ある実施形態の要素又は態様は、他の実施形態の要素又は態様に組み合わされることができる。
【0011】
ここで説明及び示される全てのコンポーネント、特徴、構造、特性などは、特定の実施形態又は複数の実施形態に含まれる必要があるとは限らない。例えば、コンポーネント、特徴、構造、又は特性が含まれ「てよい」、「るかもしれない」、「ることができる」、又は「得る」と本明細書が述べる場合、その特定のコンポーネント、特徴、構造、又は特性は、含まれることが必要とされない。本明細書又は請求項が「一の」又は「ある」要素と言及する場合、それは、その要素が1つだけあることを意味しない。本明細書又は請求項が、「追加の」要素と言及する場合、それは、その追加の要素が1より多くあることを除外しない。
【0012】
いくつかの実施形態は特定の実装を参照して説明されるが、いくつかの実施形態に従って、他の実装が可能であるということに注意すべきである。さらに、図面に示され及び/又はここで説明される回路要素又は他の特徴の配置及び/又は順序は、示された及び説明された特定の方法で配置される必要はない。いくつかの実施形態に従って、多くの他の配置が可能である。
【0013】
図に示される各システムにおいて、表される複数の要素が異なる及び/又は同様であり得ることを示唆するために、場合によって、複数の要素が同一の参照番号又は異なる参照番号をそれぞれ有してよい。しかし、要素は、異なる実装を有し、ここで示され又は説明されるシステムのいくつか又は全てと連携するために十分に柔軟性があってよい。図に示される様々な要素は、同一でも又は異なっていてもよい。どの1つが第1の要素と称され、どれが第2の要素と呼ばれるかは任意である。
【0014】
図1は、複数のマルチノードシステムモデルのブロック図100である。複数のマルチノードシステムモデルは、部分的にコヒーレントなシステム102、SMPシステム104、及びLCシステム106を含む。数個のサーバが各システムの中に示されるが、各システムは、1つのサーバと見なされてよい。SMPシステム104において、各ノード108は、ノードコントローラ(NC)110に接続される。NC110は、各ノード108がスケールインターコネクト112に接続することを可能にする。スケールインターコネクト112は、SMPシステム104の各NC110の間の通信を可能にするために使用されてよい。したがって、SMPシステム104は、共有メモリを有するノードコントローラ型である。SMPシステムは、完全にコヒーレントであり、高速分散ロックマネージャを含む。しかし、SMPシステム104は、単一のフォールトドメインである。言い換えれば、任意のノード108又はノードコントローラ110の中で発生する単一のフォールトは、システム全体が機能しなくなる、クラッシュする、又は利用不可能になる原因となる。
【0015】
LCシステム106において、各ノード114は、ネットワークインターフェースカード(NIC)116に接続される。場合によって、NIC116は、インフィニバンドホストバスアダプタ(IBHBA)のようなリモートダイレクトメモリアクセス(RDMA)可能なイーサネット(登録商標)デバイス又は他のI/Oコントローラである。NIC116は、各ノード114がRDMAインターコネクト118に接続することを可能にする。RDMAインターコネクト118は、LCシステム106にわたってメモリ共有を可能にするために、各NIC116がメッセージを送信することを可能にする。したがって、LCシステム106は、独立した複数のフォールトドメインを含む。しかし、メモリは、LCシステム106において共有されない。さらに、LCシステム106にわたって負荷のバランスをとることは難しく、LCシステム106は、分散ロックマネージャの拡張性を有する。
【0016】
部分的にコヒーレントなシステム102は、複数の強化型ノードコントローラ(eNC)122のうちの1つにそれぞれ接続された複数のノード120を含む。各eNC122は、そのそれぞれのノード120をスケールインターコネクト124に接続する。部分的にコヒーレントなシステム102は、独立した複数のフォールトドメインで、マルチノードシステムにわたってメモリを共有する。部分的にコヒーレントなシステム102は、以下に説明されるようなソフトウェア支援の使用を通じて、部分的にコヒーレントである。さらに、部分的にコヒーレントなシステム102は、高速分散ロックマネージャを含む。
【0017】
図2は、部分的にコヒーレントなシステム102の例である。部分的にコヒーレントなシステム102は、ノード202及びノード204を含む。ノード202は、ファブリックメモリコントローラ(FMC)206を含み、ノード204は、FMC208を含む。さらに、ノード202は、ノードメモリ214及びローカルメモリ218を含む。ノード204は、ノードメモリ216及びローカルメモリ220を含む。各FMC206及び208は、図2に示されるようなそれらのそれぞれのノードを有する別個のコンポーネントであってよい。いくつかの実施形態において、FMC206及び208は、マルチノードシステムの各ノード内で(複数の)CPUに統合されてよい。したがって、いくつかの実施形態において、FMC206は、ノード202のCPU210A及びCPU210Bに統合されてよく、FMC208は、ノード204のCPU212A及びCPU212Bに統合されてよい。CPU210A、210B、212A、及び212Bは、SMI3と同様の(システムメモリマップのための)メモリセマンティクスの組み合わせであるPLM(プラッツマウス)プロトコル、及びブロックタイプメモリアクセスのための(PCIeのような)I/Oプロトコルを用いて、グローバルメモリにそれぞれアクセスする。グローバルメモリは、ノードメモリ214及びノードメモリ216を含む。複数の実施形態において、グローバルメモリは、共有メモリ又はブロックメモリとしてアクセスされてよい。グローバルメモリは、複数の領域に分割されてよい。さらに、FMC206及びFMC208は、フォールト分離境界207A及びフォールト分離境界207Bをそれぞれ実装し、グローバルメモリは、そのローカルノードがダウンしたときでさえ、他の複数のノードによってアクセスされることができる。
【0018】
プラッツマウス(PLM)リンクは、各CPUをFMCに接続するために使用されてよい。したがって、ノード202は、CPU210A及びCPU210BをFMC206に接続するために、複数のPLMリンク222のペアを含む。同様に、ノード204は、CPU212A及びCPU212BをFMC208に接続するために、複数のPLMリンク224のペアを含む。PLMリンク226A及びPLMリンク226Bは、ノード202及びノード204をスイッチ228にそれぞれ接続するために使用されてもよい。各PLMリンクは、SMI3のような随意的なディレクトリ情報を有するメモリセマンティクス、及びPeripheral Component Interconnect Express(PCIe)プロトコルのようなロードストア機能性を有するI/Oプロトコルの両方をサポートできる。複数の実施形態において、複数のピンの共通セットを用いてメモリセマンティクス及びI/Oプロトコルをサポートできる任意のリンクが、ノードをSMCに接続するために使用されることができる。さらに、複数のピンの共通セットを用いてメモリセマンティクス及びI/Oプロトコルをサポートできる任意のリンクが、CPUをFMCに接続するために使用されることができる。さらに、複数のPLMリンクは、PCIeアーキテクチャの物理レイヤを用いて実装されてよい。
【0019】
グローバルメモリは、スイッチ228を介してアクセスされてよい。スイッチ228は、マルチノードシステム内の複数のノードの複数のFMCを接続するために使用されてよい。場合によって、スイッチ228は、ストームレイク(STL)スイッチ、スイッチとして使用される他のFMC、又はダイレクトアタッチメカニズムであってよい。スイッチは、1又は複数のノードの間のグローバルデータの要求を送るために使用されてよい。いずれにしても、スイッチ228は、グローバルメモリをわたって低レイテンシメッセージセマンティクスを送信するために使用される。複数の実施形態において、複数のFMCは、複数のPLMリンクを直接的に用いて又は他のFMCスイッチを通じて、互いに接続される。さらに、複数の実施形態において、複数のFMCは、STLスイッチを通じて、STLのようなネットワーキングスタックを超えてPLMプロトコルをトンネリングすることによって接続されてよい。
【0020】
スイッチ及び複数のPLMリンクを介して接続された複数のノードの複数のFMCの結果として、グローバルメモリは、共有され、ロードストアセマンティクスを介してアクセスされることができる。ノードにローカルな計算について、ノードは、これらの計算のために、それ自身の予約されたメモリにアクセスしてよい。複数のノード上に存在するグローバルメモリは、同一の特性のメモリを有してよく、各ノードは、このメモリ上で複数のオペレーションを実行できる。さらに、複数のノードは、複数のポリシを通じてグローバルメモリの特定の複数のピースに割り当てられることができ、複数のポリシは、各ノード又は複数のノードの複数のFMCを接続するスイッチによって保持されてよい。
【0021】
RMDAを通じてメッセージを送信することに代えて、ロードストアセマンティクスは、FMCを通じて複数のノードの間で通信するために使用される。各FMCは、フォールト分離境界を実装し、ノードの複数のCPUが機能しなくなったとしても、各ノードのグローバルメモリは、FMCを通じてアクセスされてよい。上述のとおり、共有メモリは、STLネットワーキングスタック又はPLMリンクを通じてアクセス可能であってよい。複数のノードの各FMCは、ロード/ストアセマンティクスを用いて、複数のノードの間で複数のメッセージを送信してよいが、複数のノードのトラフィックを妨害しない。
【0022】
FMCの複数のフォールト分離境界は、様々な技術を用いて実装されてよい。いくつかの実施形態において、ハードウェアは、各CPUが同一のノード及びシステム内で他の複数のCPUから独立することを保証するために使用されてよい。このように、独立した複数のCPUの故障は、他の複数のCPUのオペレーションに影響しない。他の複数の実施形態において、CPUの故障は、他の複数のCPUが機能しなくなる原因になり得るが、機能しないノード内のグローバルメモリは、ノードは、他の複数のノードの処理に影響することなく機能しないことができるように、電力が供給されてアクティブであってよく、機能しないノードのメモリは、アクセス可能に維持される。
【0023】
図3は、グローバルメモリマップ300の例である。グローバルメモリマップ300は、複数のノードにわたるグローバルメモリへのアクセスを調整するために、ルータ又はスイッチとして動作する1又は複数のFMCによって見られるものとして示される。グローバルメモリマップの複数の部分は、ノード302及びノード304上に格納されてよい。グローバルメモリは、複数の共有メモリ領域306に分割されてよい。グローバルメモリは、図2に示されるようなFMCによって管理されてよい。したがって、グローバルメモリの各ノード302及びノード304は、FMCによって、グローバルメモリマップ300によって示されるようにグローバルメモリにマッピングされる。具体的には、ノード302の共有メモリ領域308は、1からnの範囲の任意の数の共有メモリ領域を含んでよい。ノード304の共有メモリ領域310は、1からpの範囲の他の数の共有メモリ領域を含んでよい。そして、グローバルメモリは、1からnの範囲の共有メモリ領域308、及び1からpの範囲の共有メモリ領域310を含む。各共有メモリ領域は、1つのFMCに物理的に取り付けられてよく、又は複数のFMCにわたってストライプされてよい。さらに、メモリ領域のサイズは、可変又は固定であってよい。複数の実施形態において、各領域は、ページレベルの粒度に維持されてよく、メモリ領域全体は、メモリ管理スキームの一部として、ページ化されることができる。図2に示されるように、各ノードは、FMCによってアクセス可能でなく、グローバルメモリマップ300によって表されないローカルメモリを含んでよい。グローバルクラスタメモリマップ300は、ローカルコヒーレントメモリ領域314及びローカルコヒーレントメモリ領域316を、ロードストアファブリックを通じてアクセス可能でない各個々のノードのプライベートメモリとして認識する部分312を含む。
【0024】
ローカルコヒーレントメモリ領域314及び316は、メッセージ領域として使用されてよい。したがって、ローカルコヒーレントメモリ領域314及び316のそれぞれは、メッセージ領域318及びメッセージ領域320をそれぞれ含む。ローカルのメッセージ領域318及びメッセージ領域320は、複数のノードにわたってメモリを共有するために、スイッチ又はルータとして動作するFMCによって直接的にアクセス可能でないが、FMCは、メッセージ領域322に間接的にアクセスしてよい。
【0025】
共有メモリ領域308及び共有メモリ領域310は、グローバルクラスタメモリマップ300として、同一のアドレスレンジを有する複数のノードのそれぞれに認識可能である。各共有メモリ領域は、複数のノードの各セットに対する異なる複数のアクセス権を有してよい。複数のアクセス権は、複数のポリシのセットに基づいてよい。さらに、各共有メモリ領域のアドレスレンジ及び任意の複数のアクセス権は、複数のレンジレジスタのセットによって強制される。場合によって、複数の領域が(複数の)FMCにおける複数の(スーパー)ページである場合に、各共有メモリ領域のアドレスレンジ及び複数のアクセス権は、メモリに存在するページテーブルによって実装されてよい。ノードが複数の適切なアクセス権を有する場合、グローバルメモリは、任意のノードにおいてキャッシュ可能である。しかし、グローバルメモリを管理する1又は複数のFMCは、複数のノードの間に、ハードウェアベースのキャッシュコヒーレンシメカニズムを強制しなくてよい。代わりに、データコヒーレンシは、複数のノード上で実行するソフトウェアによって強制される。
【0026】
メッセージ領域318及びメッセージ領域320は、ノード302及びノード304にわたるデータコヒーレンシを保証するために使用されることができる。各ノードは、メモリの特定の部分へのアクセスを有する他の複数のノードにメッセージをブロードキャストでき、メモリのその特定の部分のステータスに関する情報を要求できる。例えば、第1のノードは、メモリの特定の領域に属するデータを有する場合、メモリのその領域に属するデータを有する任意のノードがメモリのその領域をアップデートすることを要求できる。メモリのその領域を有する任意のノードは、メッセージに応答でき、メモリのその領域が更新されて置き換えられたことを、要求している第1のノードに通知できる。場合によって、グローバルメモリにアクセスするためのメッセージの送信は、ダイレクトメモリアクセスであるソフトウェアベースのハンドシェイクであり、データへアクセスするためにI/Oスタックを使用しない。
【0027】
グローバルメモリは、グローバルメモリの中のデータを取り出してアップデートできる複数のノード上の配置を含むことができ、複数のノードの間にハンドシェイクを用いるメモリのクラスタリングモデルが存在する。さらに、複数のFMCは、各ノードに対する複数の適切なアクセス権を保証でき、故障している任意のノードのデータへのアクセスを提供できる。このアクセスは、ロード/ストアセマンティクス及びハードウェアを用いて、I/Oソフトウェアスタックの遅延なしに生じる。さらに、メモリは、ブロックアクセスではなく、直線的に、バイト毎に、フラットメモリのようにアクセスされることができる。場合によって、複数の共有メモリ領域は、キャッシュ可能である。さらに、場合によって、複数のメッセージ領域は、複数のノード上に格納されたデータに関する複数のメッセージを送信するために複数のFMCを用いることに代えて、複数のノードの間でデータを送信するために使用されることができる。
【0028】
図4は、複数のクラスタにわたるコヒーレント共有メモリのためのプロセスフロー図400である。ブロック402において、キャッシュ可能なグローバルメモリがビルドされる。場合によって、キャッシュ可能なグローバルメモリは、複数のクラスタにわたる複数の共有メモリ領域を用いることが可能にされ、複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である。ブロック404において、データコヒーレンシは、ソフトウェア支援メカニズムを用いて、複数のクラスタにわたって保証される。ブロック406において、独立した複数のフォールトドメインは、ファブリックメモリコントローラの使用を通じて、各クラスタに対して維持される。
【0029】
いくつかの実施形態において、ファブリックメモリコントローラは、マルチノードシステムにわたる信頼性、可用性、及び保守性(RAS)の特徴を可能にするために使用される。企業向けであるために、FMCは、他の複数のFMCにわたるRAIDの様々な形式のようなメモリの複製をサポートする。このように、FMC又はその関連するグローバルメモリがダウンした場合に、複製されたメモリのコンテンツを再構成する能力が、利用可能である。複製は、K−aryl複製であってよく、全ての書き込みは、(k−1)の追加のコピーに複製される。アドレスマップレンジレジスタ(又はページテーブル)は、(複数の)バックアップロケーションとともに、プライマリロケーションを格納する。複数のRAIDスキームについては、ホストFMCは、他の複数のアドレス、及び共にRAIDされた複数のFMCを保持する。プライマリロケーションをホストするFMCは、(複数の)バックアップロケーションをホストする(複数の)FMCのそれぞれにおける書き込みを複製する。RAIDされた複数の構成については、ホストするFMCは、パリティを格納する複数のRAIDロケーションに、排他的論理和の情報を送信する。
【0030】
書き込み場合、書き込まれたアドレスロケーションに対するプライマリであるFMCは、複数のバックアップロケーションに複数の書き込みを送信する。いくつかの実施形態において、FMCは、パリティを格納する(複数の)FMCに対するRAID排他的論理和ロケーションに複数の書き込みを送信する。複数のバックアップFMCは、プライマリFMCに書き込み完了を送信し返す。複数の書き込みが行われたとしても、全ての書き込みが完了するまで、書き込みは、プライマリFMCにおいて完了されたと見なされない。プライマリFMCは、それが書き込みを送信する他の(複数の)FMCのそれぞれに対するタイマを保持する。完了が各宛先FMCから受信されない場合、プライマリFMCは、タイムアウトしてよい。さらに、プライマリFMCは、別のパスを用いてトランザクションをやり直すことを試してよく、及び/又は必要な回復動作を行うためにシステムソフトウェアに通知する。
【0031】
複製が利用可能な場合、読み取りは、プライマリFMC又はバックアップFMCのいずれかによって提供されてよい。読み取り要求を生成するノードに付随するFMCは、タイマを保持する。タイムアウトによって完了が受信されない場合、それは、いくつかの予め定められた回数の間、同一のFMC又はバックアップFMCへの別のパスを試みてよい。それでもトランザクションがタイムアウトする場合、それは、データの返信を壊してよい。FMCは、必要な修正動作を行う又は単にエラーを記録するために、タイムアウトエラーをシステムソフトウェアに報告してもよい。複数の実施形態において、FMC又はFMCに付随するメモリモジュールが機能しない場合、コンテンツは、空きの容量を有する他のFMCに転送されることができ、その結果、複数のレンジレジスタ(又は複数のページテーブルエントリ)が更新される。
【0032】
図5は、プールされた複数のメモリリソースにアクセスし得るノード500のブロック図である。ノード500は、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、サーバ、又はブレードサーバなどであってよい。ノード500は、高密度ラックスケールアーキテクチャ(RSA)内のノードであってもよい。いくつかの例において、ノードは、マルチノードシステムをわたって他のノードに通信できる任意のデバイスである。したがって、いくつかの例において、マルチノードシステムは、複数のノードのネットワークであり、各ノードは、ネットワークにわたって通信できる任意のデバイスである。さらに、いくつかの例において、マルチノードは、ラックサーバシステムにおけるサーバである。
【0033】
ノード500は、格納された複数の命令を実行するように構成された中央処理ユニット(CPU)502を含んでよい。CPU502は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、又は任意の数の他の構成であることができる。場合によって、CPU502及びノード500の他の複数のコンポーネントは、システムオンチップ(SOC)として実装されてよい。さらに、ノード500は、1つより多いCPU502を含んでよい。CPU502によって実行される複数の命令は、複数のノードにわたって複数のメモリリソースをプールすることを可能にするために使用されてよい。
【0034】
ノード500は、グラフィックスプロセッシングユニット(GPU)504を含んでもよい。示されるように、CPU502は、バス506を通じてGPU504に接続されてよい。しかし、いくつかの実施形態において、CPU502及びGPU504は、同一のダイ上に位置付けられる。GPU504は、ノード500内で任意の数のグラフィックオペレーションを実行するために構成されてよい。例えば、GPU504は、ノード500のユーザに対して表示させるために、複数のグラフィックスイメージ、複数のグラフィックスフレーム、複数のビデオ、又はその類のものを描画又は操るように構成されてよい。しかし、場合によって、ノード500は、GPU504を含まない。
【0035】
CPU502は、バス506を通じてCPU入出力(I/O)に接続されてもよい。複数の実施形態において、CPUI/O508は、CPU502がマルチノードシステムにおいてプールされたメモリにアクセスできるように使用される。CPU502は、ノード500内の専用のメモリを含まずに、プールされたメモリにアクセスできる。さらに、CPUI/O508は、トランスミッションコントロールプロトコル及びインターネットプロトコル(TCP/IP)並びにインフィニバンド(IB)のような複数のネットワークプロトコル及び通信を使用せずに、マルチノードシステム内にプールされたメモリにアクセスできる。複数の実施形態において、プラッツマウス(PLM)リンク510のようなリンクは、シリアルリンク上で実行するメモリセマンティクスベースの複数のプロトコルを用いて、各ノードを共有メモリコントローラに接続するために使用される。Peripheral Component Interconnect Express(PCIe)リンク512は、CPU502をネットワークに接続するために使用されてよい。
【0036】
CPU502は、バス506を通じて、ノード500を1又は複数のI/Oデバイス516に接続するように構成された入出力(I/O)デバイスインターフェース514に接続されてもよい。複数のI/Oデバイス516は、例えば、キーボード及びポインティングデバイスを含んでよく、ポインティングデバイスは、タッチパッド又はタッチスクリーンなどを含んでよい。複数のI/Oデバイス516は、ノード500の複数のビルトインコンポーネントであってよく、又はノード500に外部接続された複数のデバイスであってよい。CPU502は、バス506を通じて、ノード500を複数のディスプレイデバイス520に接続するように構成されたディスプレイインターフェース518にリンクされてもよい。複数のディスプレイデバイス520は、ノード500のビルトインコンポーネントであるディスプレイスクリーンを含んでよい。複数のディスプレイデバイス520は、ノード500に外部接続されたコンピュータモニタ、テレビ、又はプロジェクタなどを含んでもよい。
【0037】
図5のブロック図は、ノード500が図5に示された複数のコンポーネントの全てを含むことを示すことを意図するものではない。さらに、ノード500は、詳細な特定の実装に応じて、図5に示されない任意の数の追加のコンポーネントを含んでよい。さらに、ノード500は、図5に示されたものより少ないコンポーネントを含んでよい。例えば、ノード500は、GPU504、I/Oデバイスインターフェース514、又はディスプレイインターフェース518を含まなくてよい。
【0038】
本技術は、独立した複数のフォールトドメインを維持しながら、キャッシュ可能なグローバルメモリを利用可能にする。グローバルメモリは、異なる複数のノード(例えば、データベース)の間の複数の共有データ構造体を格納するために使用されることができ、複数のノードの間の高速通信のために使用されることもできる。共有メモリが永続性である(すなわち、不揮発性メモリ(NVM)の中にある)場合、データがすでにメモリの中にあるので、計画された又は計画されていないノードのダウンタイムの後の複数のレジュームオペレーション、及び複数のノードの間の複数のタスクの移行のための時間は、非常に速くなる。さらに、データ整合性がソフトウェアによって強制されるので、ノードが機能しない場合から回復するためのチェックポイントを確立するために使用されることができる修正されたキャッシュ可能なデータの明確な引き渡しがある。
【0039】
本技術は、また、メモリ及びストレージレベルの弾力性を可能にするためにRASの複数の特徴を提供する。さらに、いくつかの実施形態において、メモリは、ストレージの代替であってよい。メモリが不揮発性メモリである場合、データベースの複数の部分がディスク又はソリッドステートドライブ(SSD)からアップロードされないように、データベース全体は、メモリからマッピングされてよい。このように、データベースにアクセスする時間は減少される。場合によって、次の世代の不揮発性メモリは、ストレージを代替できるがメモリタイプのセマンティクスを用いてアクセスされる大きい容量を有する。さらに、本技術で説明された不揮発性メモリは、ストレージと同一の弾力性を維持する。不揮発性メモリは、何度も複製されることができる。このように、任意のRAIDスキームは、高いレベルの信頼性及びフォールトアイソレーションを提供するために実装されることができる。
【実施例1】
【0040】
複数のクラスタにわたるコヒーレント共有メモリのための装置が、ここで提供される。装置は、ファブリックメモリコントローラ、1又は複数のノード、及びグローバルメモリを含む。ファブリックメモリコントローラは、ノードの故障にさえも応えて、各共有メモリ領域がロードストアセマンティクスを用いてアクセス可能になるように、各ノードの共有メモリ領域へのアクセスを管理する。各共有メモリ領域は、ファブリックメモリコントローラによってグローバルメモリにマッピングされる。
【0041】
ファブリックメモリコントローラは、1又は複数のノード内に位置付けられてよい。さらに、ロードストアセマンティクスは、1又は複数のノードの間の通信を可能にする。ファブリックメモリコントローラは、1又は複数のノードのステータスに関連してグローバルメモリがアクセス可能になるように、メモリ複製をサポートしてもよい。さらに、ファブリックメモリコントローラは、グローバルメモリの任意の部分が故障の場合に再構成されることができるように、グローバルメモリにわたる全てのRAIDスキームをサポートしてよい。装置は、バックアップファブリックメモリコントローラを含んでよく、バックアップファブリックメモリコントローラは、第1のファブリックメモリコントローラの故障の場合に使用される。ファブリックメモリコントローラの故障に応じて、機能しないファブリックメモリコントローラのコンテンツは、他のファブリックメモリコントローラに転送されてよい。さらに、ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しないメモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送されてよい。
【実施例2】
【0042】
支援型コヒーレント共有メモリシステムが、ここで説明される。システムは、部分的にコヒーレントなメモリ及びファブリックメモリコントローラを含む。部分的にコヒーレントなメモリは、複数のクラスタからの複数の共有メモリ領域を含み、各クラスタの独立したフォールトドメインは、維持され、ファブリックメモリコントローラは、ロードストアセマンティクスを通じた部分的にコヒーレントなメモリへのアクセスを可能にする。
【0043】
複数の共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、I/Oスタック、又はそれらの任意の組み合わせを通じてアクセスされてよい。さらに、複数のクラスタは、複数の共有メモリ領域に格納されたデータにアクセスし、複数の共有メモリ領域からのデータをローカルキャッシュにローカルにキャッシュできる。部分的にコヒーレントなメモリの複数のクラスタは、1又は複数の強化型ネットワーキングインターフェースコントローラを用いて接続されてよい。さらに、各ノードは、他の複数のノードによって直接的にアクセス可能でないローカルメモリを維持できる。共有メモリ領域は、集中させられてよく、各クラスタの独立したフォールトドメインは、ファブリックメモリコントローラによって実装されたフォールト分離境界を通じて維持されてよい。
【実施例3】
【0044】
複数のクラスタにわたるコヒーレント共有メモリの方法が、ここで説明される。方法は、複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする段階を含み、複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である。方法は、また、ソフトウェア支援メカニズムを用いて、複数のクラスタにわたるデータコヒーレンシを保証する段階を含む。さらに、方法は、ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する段階を含む。
【0045】
ファブリックメモリコントローラは、複数のクラスタを通じて分散されてよい。さらに、ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする。さらに、フォールト分離境界は、各クラスタに対する独立した複数のフォールトドメインを可能にしてよい。
【0046】
前述の説明において、開示された主題の様々な態様が説明された。説明のために、特定の数、システム、及び構成が、主題の完全な理解を提供すべく説明された。しかし、本開示を利用できる当業者にとって、主題が特定の詳細なしで実施され得ることが明らかである。他の例では、周知の特徴、コンポーネント、又はモジュールは、開示された主題をわかりにくくしないように、省略され、単純化され、組み合わせられ、又は分離された。
【0047】
開示された主題の様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせで実装されてよく、命令、関数、プロシージャ、データ構造体、ロジック、アプリケーションプログラム、シミュレーション、エミュレーション、及び設計のファブリケーションのための設計表現又は形式のような、機械によってアクセスされたときに、その機械にタスクを実行させ、抽象データ型又は低レベルハードウェアコンテキストを定義させ、又は結果を生成させるプログラムコードの参照によって又はと併用して説明されてよい。
【0048】
シミュレーションのために、プログラムコードは、設計されたハードウェアに期待される実行方法のモデルを本質的に提供するハードウェア記述言語又は他の機能記述言語を用いてハードウェアを表してよい。プログラムコードは、アセンブリ言語若しくは機械語、又はコンパイル及び/又はインタプリタされ得るデータであってよい。さらに、どのような形にしても動作を起こすこと又は結果をもたらすことをソフトウェアと言うことは、技術的によくあることである。そのような表現は、プロセッサに動作を実行させ又は結果を生成させるプロセッシングシステムによるプログラムコードの実行を述べることの簡潔な表現の方法にすぎない。
【0049】
プログラムコードは、例えば、ソリッドステートメモリ、ハードドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、デジタル多用途ディスク(DVD)などを含むストレージデバイス及び/又は関連する機械可読又は機械アクセス可能媒体のような揮発性及び/又は不揮発性メモリ、並びに機械アクセス可能生物学状態保存ストレージのようなより珍しい媒体に格納されてよい。機械可読媒体は、アンテナ、光ファイバ、通信インターフェースなどのような機械によって可読な形で、情報を格納、送信、又は受信するための任意の有形のメカニズムを含んでよい。プログラムコードは、パケット、シリアルデータ、パラレルデータなどの形で送信されてよく、圧縮又は暗号化された形式で使用されてよい。
【0050】
プログラムコードは、プロセッサ、プロセッサによって可読な揮発性及び/又は不揮発性メモリ、少なくとも1つの入力デバイス、及び/又は1又は複数の出力デバイスをそれぞれ含む、可動又は固定のコンピュータ、パーソナルデジタルアシスタント、セットトップボックス、携帯電話、及びページャ、並びに他の電子デバイスのようなプログラム可能な機械上で実行するプログラムに実装されてよい。プログラムコードは、開示された実施形態を実行し、出力情報を生成するために、入力デバイスを用いて入力されたデータに適用されてよい。出力情報は、1又は複数の出力デバイスに適用されてよい。当業者は、開示された主題の実施形態が、マルチプロセッサ又はマルチコアプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、及び仮想的に任意のデバイスに組み込まれ得る普及した又は小型のコンピュータ又はプロセッサを含む様々なコンピュータシステム構成で実施され得ることを理解してよい。開示された主題の実施形態は、また、分散型コンピューティング環境で実施され得、タスクは、通信ネットワークを通じてリンクされたリモートプロセッシングデバイスによって実行され得る。
【0051】
オペレーションは、順次的なプロセスとして説明されてよいが、オペレーションのいくつかは、実際には、並行に、同時に、及び/又は分散環境で、並びにシングル又はマルチプロセッサマシンによるアクセスのためにローカルに及び/又はリモートに格納されたプログラムコードで実行されてよい。さらに、いくつかの実施形態において、オペレーションの順序は、開示された主題の意図から逸脱しない範囲で、再配置されてよい。プログラムコードは、組み込まれたコントローラによって又はそれと併用して使用されてよい。
【0052】
例示の実施形態を参照して開示された主題が説明されたが、この説明は、限定する意味で解釈されることを意図するものではない。例示の複数の実施形態の様々な修正、及び当開示された主題に付随することが業者にとって明かな主題の他の実施形態は、開示された主題の範囲内にあると考えられる。
[項目1]
複数のクラスタにわたるコヒーレント共有メモリのための装置であって、
ファブリックメモリコントローラと、
1又は複数のノードと、
グローバルメモリと
を備え、
前記ファブリックメモリコントローラは、前記ノードの故障にさえも応えて、各共有メモリ領域がロードストアセマンティクスを用いてアクセス可能になるように、各ノードの共有メモリ領域へのアクセスを管理し、
各共有メモリ領域は、前記ファブリックメモリコントローラによって前記グローバルメモリにマッピングされる装置。
[項目2]
前記ファブリックメモリコントローラは、前記1又は複数のノード内に位置付けられる項目1に記載の装置。
[項目3]
前記ロードストアセマンティクスは、前記1又は複数のノードの間の通信を可能にする項目1又は2に記載の装置。
[項目4]
前記ファブリックメモリコントローラは、前記グローバルメモリが前記1又は複数のノードのステータスに関連してアクセス可能になるように、メモリ複製をサポートする項目1から3のいずれか一項に記載の装置。
[項目5]
前記ファブリックメモリコントローラは、前記グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記グローバルメモリにわたる全てのRAIDスキームをサポートする項目1から4のいずれか一項に記載の装置。
[項目6]
前記装置は、バックアップファブリックメモリコントローラを含み、
前記バックアップファブリックメモリコントローラは、第1の前記ファブリックメモリコントローラの故障の場合に使用される項目1から5のいずれか一項に記載の装置。
[項目7]
前記ファブリックメモリコントローラの故障に応じて、機能しない前記ファブリックメモリコントローラのコンテンツは、他のファブリックメモリコントローラに転送される項目1から6のいずれか一項に記載の装置。
[項目8]
前記ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しない前記メモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送される項目1から7のいずれか一項に記載の装置。
[項目9]
支援型コヒーレント共有メモリのためのシステムであって、
部分的にコヒーレントなメモリと、
ファブリックメモリコントローラと
を備え、
前記部分的にコヒーレントなメモリは、複数のクラスタからの複数の共有メモリ領域を含み、各クラスタの独立したフォールトドメインは、維持され、
前記ファブリックメモリコントローラは、ロードストアセマンティクスを通じた前記部分的にコヒーレントなメモリへのアクセスを可能にするシステム。
[項目10]
前記複数の共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、I/Oスタック、又はそれらの任意の組み合わせを通じてアクセスされる項目9に記載のシステム。
[項目11]
前記複数のクラスタは、前記複数の共有メモリ領域に格納されたデータにアクセスし、前記複数の共有メモリ領域からの前記データをローカルキャッシュにローカルにキャッシュする項目9又は10に記載のシステム。
[項目12]
前記部分的にコヒーレントなメモリの前記複数のクラスタは、1又は複数の強化型ネットワーキングインターフェースコントローラを用いて接続される項目9から11のいずれか一項に記載のシステム。
[項目13]
複数のクラスタにわたるコヒーレント共有メモリの方法であって、
複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする段階であって、前記複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である段階と、
ソフトウェア支援メカニズムを用いて、前記複数のクラスタにわたるデータコヒーレンシを保証する段階と、
ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する段階と
を備える方法。
[項目14]
前記ファブリックメモリコントローラは、前記複数のクラスタを通じて分散される項目13に記載の方法。
[項目15]
前記ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする項目13又は14に記載の方法。
[項目16]
フォールト分離境界は、各クラスタに対する前記独立した複数のフォールトドメインを可能にする項目13から15のいずれか一項に記載の方法。
[項目17]
複数のクラスタにわたるコヒーレント共有メモリのための装置であって、
ロードストアセマンティクスを用いて、クラスタの各ノードの複数のメモリモジュールへのアクセスを管理する手段と、
前記複数のメモリモジュールの複数の共有メモリ領域をグローバルメモリにマッピングする手段と
を備える装置。
[項目18]
複数のメモリモジュールへのアクセスを管理する前記手段は、前記ノード内に位置付けられる項目17に記載の装置。
[項目19]
前記ロードストアセマンティクスは、1又は複数のノードの間の通信を可能にする項目17又は18に記載の装置。
[項目20]
前記グローバルメモリが前記ノードのステータスにかかわらずアクセス可能になるように、メモリ複製を可能にする手段
を備える項目17から19のいずれか一項に記載の装置。
[項目21]
前記グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記グローバルメモリにわたる全てのRAIDスキームのための手段
を備える項目17から20のいずれか一項に記載の装置。
[項目22]
複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする手順であって、前記複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である手順と、
ソフトウェア支援メカニズムを用いて、前記複数のクラスタにわたるデータコヒーレンシを保証する手順と、
ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する手順と
をコンピュータに実行させるためのプログラム。
[項目23]
前記ファブリックメモリコントローラは、前記複数のクラスタを通じて分散される項目22に記載のプログラム。
[項目24]
前記ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする項目22又は23に記載のプログラム。
[項目25]
フォールト分離境界は、各クラスタに対する前記独立した複数のフォールトドメインを可能にする項目22から24のいずれか一項に記載のプログラム。
図1
図2
図3
図4
図5