(57)【要約】データ記憶システム（１０）はデータ記憶設備へのアクセスを提供するための複数のノードを含む。各ノードはノードに汎用計算機能を付与するためのコンピュータ‐メモリコンプレックスと、それぞれのノードを介して実施される転送を制御するためのノードコントローラと、データ転送のためにデータを緩衝するクラスタメモリとを備える。データ記憶システム（１０）の各々２つのノード用に装備された特定の個別の通信経路を含む複数の通信経路（１６）はノードを相互接続する。
2004506267.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムであって、
データ記憶設備へのアクセスを提供するための複数のノードを有し、各ノードは、
該ノードに汎用計算機能を付与するために使用可能なコンピュータ‐メモリコンプレックスと、
それぞれの該ノードを介して実施されるデータ転送を制御するために使用可能なノードコントローラと、および
該ノードコントローラに結合されたクラスタメモリであって、該クラスタメモリが該データ転送用にデータを緩衝するために使用可能であるクラスタメモリとを有し、そして
該データ記憶システムの２つのノードの各々に装備された個別の通信経路を含む該ノードを相互接続するための複数の通信経路と、
を有するシステム。
【請求項２】
該ノードを介してデータを転送するための入力／出力バスをサポートするために該コンピュータ‐メモリコンプレックスが使用可能である請求項１記載のデータ記憶システム。
【請求項３】
該データ記憶システムの各々２つのノード用に装備された個別のリンクを含む該ノードを接続するための複数のリンクを有する請求項１記載のデータ記憶システム。
【請求項４】
それぞれ２つのノードのハートビート接続を各リンクがサポートする請求項３記載のデータ記憶システム。
【請求項５】
１つのノードの該クラスタメモリにおいて緩衝された該データが他のノードの該クラスタメモリにおいて自動的に鏡映される請求項１記載のデータ記憶システム。
【請求項６】
該通信経路の制御が該ノードコントローラ間に配分される請求項１記載のデータ記憶システム。
【請求項７】
各ノードが該データ記憶設備またはホストデバイスに接続するための少なくとも１つのスロットを有する請求項１記載のデータ記憶システム。
【請求項８】
各ノードがシステムボードとして実施される請求項１記載のデータ記憶システム。
【請求項９】
該システムボードがバックプレーンによって接続される請求項８記載のデータ記憶システム。
【請求項１０】
データ記憶設備へのアクセス用ノードであって、該ノードは、
該ノードに汎用計算機能を付与するために使用可能なコンピュータ‐メモリコンプレックスと、
該コンピュータ‐メモリコンプレックスに結合されたノードコントローラであって、該ノードコントローラが該ノードを介して実施されるデータ転送を制御するために使用可能であるノードコントローラと、および
該ノードコントローラに結合されたクラスタメモリであって、該クラスタメモリが該データ転送用にデータを緩衝するために使用可能であるクラスタメモリと、
を有するノード。
【請求項１１】
該コンピュータ‐メモリコンプレックスが入力／出力バスをサポートするために使用可能な請求項１０記載のノード。
【請求項１２】
該入力／出力バスが周辺構成部分インタフェースバスを有する請求項１０記載のノード。
【請求項１３】
該ノードコントローラが該入力／出力バスへ接続される請求項１１記載のノード。
【請求項１４】
該ノードコントローラが該周辺構成部分インタフェースバス上の周辺構成部分インタフェースデバイスとして作用する請求項１２記載のノード。
【請求項１５】
該クラスタメモリが同期動的ランダムアクセスメモリを有する請求項１０記載のノード。
【請求項１６】
該コンピュータ‐メモリコンプレックスにおいて、
少なくとも１つの中央処理装置と、および
システムメモリと、
を有する請求項１０記載のノード。
【請求項１７】
該ノードコントローラにおいて、
少なくとも１つの論理エンジンと、および
メモリコントロールと、
を有する請求項１０記載のノード。
【請求項１８】
データ記憶システムであって、
データ記憶設備へのアクセスを提供するための複数のシステムボードを有し、各システムボードは、
該データ記憶設備へ該システムボードを接続するために使用可能なインタフェーススロットと、
該システムボードに汎用計算機能を付与するために使用可能なコンピュータ‐メモリコンプレックスと、
該コンピュータ‐メモリコンプレックスに結合されたノードコントローラであって、該ノードコントローラが該システムボードを介して実施されるデータ転送を制御するために使用可能であるノードコントローラと、および
該ノードコントローラに結合されたキャッシュメモリであって、該キャッシュメモリが該データ転送用にデータを緩衝するために使用可能であるキャッシュメモリとを有し、そして
該システムボードを相互接続するためのバックプレーンであって、該バックプレーンが該システムボード間のデータ転送のための複数の通信経路をサポートするバックプレーンと、
を有するシステム。
【請求項１９】
個別の通信経路が該データ記憶システムの２つのシステムボードの各々に装備される請求項１８記載のデータ記憶システム。
【請求項２０】
各ノードコントローラがアプリケーション指向の集積回路を有する請求項１８記載のデータ記憶システム。
【請求項２１】
該キャッシュメモリがデュアルインラインメモリモジュールを有する請求項１８記載のデータ記憶システム。
【請求項２２】
該コンピュータ‐メモリコンプレックスにおいて、
少なくとも１つの中央処理装置と、および
システムメモリと、
を有する請求項１８記載のデータ記憶システム。
【請求項２３】
該データ記憶システムの２つのシステムボードの各々に装備された個別の直列接続部を含む複数の直列接続部をさらに有する請求項１８記載のデータ記憶システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にデータ記憶の分野に関し、さらに詳細には、データ記憶システムに関する。
【０００２】
【従来の技術】
コンピュータシステムに関連して、企業記憶アーキテクチャは多量のデータおよび情報の大量電子記憶を提供する。コンピュータ化およびネットワーク化インフラストラクチャにおける非常に活発な技術的進歩は、これら技術の利用方法の迅速かつ大規模な社会学上の変更と組合わされて、おそらくコンピュータシステムの他のどの態様よりもさらに迅速に企業記憶アーキテクチャの変化を押し進めてきた。その結果として、例えば、直接付加されたＪＢＯＤ（多数ディスクの単なる付加）、ＳＡＮ（記憶エリアネットワーク）付加ＪＢＯＤ、ホストアダプタＲＡＩＤ（安価／独立ディスクの冗長なアレイ）コントローラ、外部ＲＡＩＤコントローラ、冗長な外部ＲＡＩＤコントローラ、および、ＮＡＳ（ネットワーク付加記憶）などの種々異なる記憶アーキテクチャが構成された。これら記憶アーキテクチャは特殊な適所で役立てられ、また、機能性、性能、コスト、可用性、スケーラビリティ、および、扱い易さ等の観点からそれぞれ大幅に異なることもあり得る。
【０００３】
一般に、あらゆるビジネスは、例えば、データベース記憶、ホームディレクトリ、共用アプリケーションの実行可能性、データウェアハウス記憶などの様々なデータ記憶を必要とする。一般に、以前に開発されたアーキテクチャのどの一つを用いても一ビジネスの記憶需要の全てを処理出来ない。従って、あらゆるビジネスは、必要とする機能性および適切な性能を入手するために幾つかの異なるアーキテクチャを使用せざるを得ない。これは、結果的に、データ記憶の分裂化をもたらすことになる。即ち、データ資源の共用が制限され、データに静的な境界が創造され、スタッフの冗長な訓練が必要となり、追加的な管理資源が必要とされる。例えば、１つのタイプのアーキテクチャに過剰な記憶スペースが有っても、一般に、別のタイプのアーキテクチャにおける混雑を緩和するためにこのスペースを利用出来ない。記憶アーキテクチャのタイプが異なれば、相互にバックアップ用／冗長用として利用することさえ出来ない。
【０００４】
以前に開発されたデータ記憶アーキテクチャは、これらとは別の問題も含む。例えば、データを実際に記憶するデバイス（例えば、ディスクドライブ）へのアクセスを制御するために、データ記憶アーキテクチャでは、一般に、コンピュータ‐メモリコンプレックス（例えば、中央処理装置（ＣＰＵ）および関連記憶装置）を使用する。しかし、以前に開発されたアーキテクチャにおいては、全てのデータ転送はコンピュータ‐メモリコンプレックスの内部バスを介して経路指定され、これらの内部バスは一般に比較的バンド幅が狭いので、大量データの転送はコンピュータ‐メモリコンプレックスの動作を著しく低速化し、アーキテクチャ全体の性能に負の衝撃を次々に与える。
【０００５】
企業アーキテクチャは、比較的安価な不揮発性メモリを用意するためにディスク記憶システムを利用できるが、ディスク記憶システムには幾つかの問題がある。これらの問題を次に示す。ディスクシステムは、その機械的性質および動作に関連した固有の磨耗性に起因して故障し易い。ディスクシステムへのアクセス（即ち、読み書き）は、この場合にもその機械的性質に起因して比較的低速である。さらに、ディスク記憶システムはデータ転送用のバンド幅が比較的狭く、従って、実効バンド幅は「プラッタスピード」（即ち、データビットがディスクヘッドの下を移動する速さ）によって制限される。
【０００６】
ディスク記憶システムと関連した問題を軽減するために様々な努力が払われている。この種の努力の結果として得られた典型的なシステムでは幾つかのディスクドライブへのデータ／情報のアクセスを制御するために「ノード」を用いる。以前に開発されたこの種のシステムのノードにおいては冗長データ（例えば、パリティ情報、または、データ自体の重複コピー）が複数のディスクドライブに記憶されているので、１個のディスクドライブが故障しても、データを復元するために冗長データが使用できる。この種のノードは、ディスクドライブに関連した低速探索時間を短縮させるために、その中にデータをキャッシュ出来るシステムメモリを備えたメインコンピュータシステムを有する。さらに、この種のノードは、「ストライピング」として知られている技法により複数のディスクドライブを横断してデータを記憶することが可能であり、その結果、実効データ記憶バンド幅は個別のディスクドライブの総計バンド幅となる。さらに、冗長性を提供するために、１つのシステム内で複数のノードが使用可能である。
【０００７】
しかしながら、記憶ノードを利用する以前に開発されたシステムはそれ自体の問題を抱えている。ノードを貫くデータ記憶バンド幅は、メインコンピュータシステムに制限が課せられているので、依然として比較的狭い。ノードにおいてデータをキャッシングするためのメモリは一般に揮発性であり、従って、ノードが故障すれば、データが失われることもあり得る。さらに、ノードは、システムにとって故障を起こす単一点であり得る。即ち、ノードが故障すれば、当該ノードへ接続されているディスクドライブ上の全てのデータは利用不可能となる。複数のノードが装備されている場合であっても、ノード間の通信は一般に低速であり、従って当該システムの性能は最適状態以下になる。
【０００８】
（発明の概要）
以前に開発された記憶システムおよびその技法と関連した欠点および問題は、本発明を用いて実質的に軽減または排除される。
【０００９】
とりわけ、本発明は、通信指向であって高度に利用可能なデータ記憶、処理、または経路指定に特に適した高性能、スケーラブル（基準化可能）、かつ柔軟でコスト効果的な記憶システムアーキテクチャを提供する。このアーキテクチャはビジネスにおける記憶必要性の全範囲を扱うことが可能であり、局部的な混雑または故障の場合における待ち時間（レイテンシ）、バンド幅、および性能安定性を含む記憶容量および性能の両方においてスケーラブルである。本アーキテクチャは、全ての構成部分に冗長性が組み込まれているので、信頼度が非常に高い。
【００１０】
本発明の一実施形態によれば、データ記憶システムは、データ記憶設備へのアクセスを提供するために複数のノードを含む。各ノードは、ノードに対して汎用計算機能を付与するためのコンピュータ‐メモリコンプレックス、それぞれのノードを介してデータ転送を制御するためのノードコントローラ、および、データ転送用にデータを緩衝するためのクラスタメモリを備える。複数の通信経路は、データ記憶システムの２つのノードの各々に個別の通信経路を用いて、ノードを相互接続する。
【００１１】
本発明の他の一実施形態によれば、データ記憶システムはデータ記憶設備へのアクセスを提供するための複数のシステムボードを含む。各システムボードは、システムボードをデータ記憶設備へ接続するためのインタフェーススロット、システムボードに汎用計算機能を付与するためのコンピュータ‐メモリコンプレックス、システムボードを介してデータ転送を制御するためのノードコントローラおよびデータ転送用にデータを緩衝するためのキャッシュメモリを備える。バックプレーンはシステムボードを相互接続し、システムボード間でデータを転送するための複数の通信経路をサポートする。
【００１２】
本発明の一実施形態に従ったデータ記憶システムは、複数（例えば、一実施例当り８個まで）のノードを含む。これらのノードは幾つかのホストデバイス（例えば、サーバ）と記憶デバイス（例えば、ディスクドライブ）間および相互間でデータおよび情報を転送するための接続部を提供する。各ノードは、各通信経路が高速リンクであっても差し支えない幾つかの通信経路によって他の全てのノードへ接続される。各ノードは、ノードコントローラ、クラスタメモリ、およびコンピュータ‐メモリコンプレックスを含むこともある。本発明の技術的利点には、各ノードに、コンピュータ‐メモリコンプレックスとは別にノードコントローラおよびクラスタメモリを装備することが含まれる。コンピュータ‐メモリコンプレックスにおける中央処理装置（ＣＰＵ）は、データ転送に必要な種々のアドレスおよび長さを設定する制御機能を実施する。ただし、データブロックの転送は、実際には、コンピュータ‐メモリコンプレックスを介することなく、クラスタメモリに対してノードコントローラを介して実施される。制御対象とされるデータ量はデータブロック内のデータ量よりも遥かに少ないので、コンピュータ‐メモリコンプレックスはデータバンド幅に課せられる負担の大部分から解放される。クラスタメモリに関しては、ノードを介して転送されるデータ／情報はコンピュータ‐メモリコンプレックス内に一時的に記憶されなくても差し支えない。従って、コンピュータ‐メモリコンプレックスの作業負荷（ワークロード）および責任を軽減することにより、ノードコントローラおよびクラスタメモリはデータ記憶システおよびアーキテクチャ全体を作動容易化および最適化する。
【００１３】
本発明の他の技術的利点には、データ記憶システムにおけるノード間に高速相互接続するリンクを提供することが含まれる。各通信経路は、ノード間にデータおよび情報の迅速な転送を提供するための広いバンド幅を持つ２方向リンクであっても差し支えない。各通信経路は、例えば、伝送制御コントロールプロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、または、ファイバチャネルプロトコルのプロトコルオーバヘッドなしに、ノードの間に待ち時間の短い通信チャネルを提供することが出来る。これは、ノードの間における非常に効率的な通信を可能にする。
【００１４】
さらに別の本発明の技術的利点には、キャッシュされなければならないデータの「鏡映すること（ミラリング）」が含まれる。ローカル（局所）ノードにおいてクラスタメモリ内へデータを書き込むと、１つまたは複数の遠隔ノードにおけるクラスタメモリに同じデータが送信され、かつ書き込まれる。従って、ローカルノードが故障した場合には、キャッシュされたデータが遠隔ノードから回復可能である。ミラリングは幾つかの方法によって達成可能である。或る方法においては、各ノードにクラスタメモリの領域が提供され、その結果、この種の領域に何か書き込むと、同じデータが遠隔ノードのクラスタメモリにコピーされる。また、他の方法においては、（排他的論理和（ＸＯＲ）エンジンを用いて）ダイレクトメモリアクセス（ＤＭＡ）転送がローカルクラスタメモリから遠隔メモリまで通信経路全体に亙って提供される。
【００１５】
さらに、本発明の他の技術的利点は、当該システムおよびアーキテクチャのノードを接続する通信経路に加えて幾つかの直列接続部を提供することが含まれる。各々２つのノードに個別の直列接続が提供される。この直列接続は、同じ２つのノードを接続する通信経路とは区別され、かつ当該通信経路から独立している。本直列接続は、それぞれ２つのノードの間に「ハートビート（ｈｅａｒｔｂｅａｔ）」接続を提供し、かつこれをサポートする。従って、２つのノードの各々では、一方のノードが故障したかどうかを判定するためにもう一方のノードが相手ノードに照会することが可能である。これによって、２つのノード間の「スプリット−ブレイン（ｓｐｌｉｔ−ｂｒａｉｎ）」問題に起因するデータの潜在的破損可能性が回避される。
【００１６】
本発明の他の技術的利点には、低コストを達成するため、および、産業界の進歩とさらに新規な部品の導入につれて変化することを可能にするために、産業界と規格面との仲介役を用いて商品としての部品に強力な影響を及ぼすデータ記憶システムおよびアーキテクチャが含まれる。従って、本システムおよびアーキテクチャはコスト効果的であり、かつ柔軟性に富む。
【００１７】
さらに本発明の他の技術的利点は、データ記憶システムおよびアーキテクチャにおける幾つかのノード間で通信経路全体に亙って制御を配分することである。従って、システムおよびアーキテクチャを完全に故障させ兼ねない単一故障点は存在しない。
【００１８】
本発明の一実施形態において、当該データ記憶システムには２つよりも多いノードは装備されていない。１つのノードが故障した場合に、当該ノードの負荷は生き残っているノードの間で配分される。即ち、故障した当該ノードの作業負荷は他のノードの間に均等に配分され、残りのノードのうちのどれ一つとして当該データ記憶システムにおけるボトルネックとしては作用しないはずである。
【００１９】
本発明の他の態様および利点は、以下の記述および添付図面から明白になるはずであろう。
【００２０】
本発明を完全に理解し、さらに特徴および利点に関して理解するために、添付図面と共に記載されている以下の記述を参照することとする。
【００２１】
【発明の実施の形態】
本発明に関する好ましい実施形態およびそれらの利点は図１〜８を参照することによってよく理解されるはずである。種々の図面の同等および対応する部分には同等の参照番号が用いられる。
【００２２】
データ記憶システムの作動環境
図１は、本発明の一実施形態に従ったデータ記憶システム１０が作動可能な環境を示す図である。一般に、データ記憶システム１０は、種々のホストデバイス１２によって、経路指定され、生成され、操作され、処理され、或いは他の方法で処理されたデータおよび情報のために大容量記憶装置を提供するように機能する。
【００２３】
図に示すように、これらのホストデバイス１２には、例えば、サーバクラスタ１２ａ、１つまたは複数のパーソナルコンピュータ１２ｂ、１２ｃ、１２ｄ、メインフレーム１２ｅ、サーバタワー１２ｆなどの種々様々な処理装置を含ませることができる。また、ホストデバイス１２には、例えば、プリンタ１２ｇ、モデム１２ｈ、ルータ１２ｉなどの各種周辺装置を含ませても差し支えない。これらホストデバイス１２の各々は、データ記憶システム１０に接続される。ここで用いられる用語「接続された」または「結合された」は複数の要素間の直接的または間接的いずれかのあらゆる接続または結合を意味し、この種の接続または結合は物質的または論理的であっても差し支えない。
【００２４】
データ記憶システム１０は、相互接続構成部分１６および記憶構成部分１８を含む。一般に、相互接続構成部分１６はホストデバイス１２が情報を記憶し、かつ記憶構成部分１８から情報を検索することを可能にする。一実施形態において、相互接続構成部分１６は１つのコンピュータアクセスノードから多数のコンピュータアクセスノードまで容易に基準化可能なモジュール式アーキテクチャである。各ノードは、記憶構成部分１８内の１つまたは複数の特定記憶デバイスと連携可能である。
【００２５】
記憶構成部分１８は、データおよび情報に関して大容量記憶装置を提供する。記憶構成部分１８は、例えば、テープまたはディスク記憶体のような、任意の適切な記憶資源を用いて実現可能である。一実施形態において、図に示すように、記憶構成部分１８は幾つかの記憶装置２０を含み、これらの装置は２０ａ、２０ｂ、２０ｃ、２０ｄのように別々にラベル表示される。各記憶装置２０は、複数のディスクドライブを含むＪＢＯＤ（単なるディスクの集合）設備であり得る。ディスクドライブは、１つまたは複数の高温取り付け可能なディスクドライブスレッドを備えたラック取り付け可能な収納棚に取り付けることが出来る。各スレッドは、１対のファイバチャネル（ＦＣ）接続部に４個のディスクドライブを収容可能である。スレッドは次の２つの方法のいずれかによって構成可能である。即ち、（１）全てのスレッドを同じ冗長ＦＣ接続部に取り付けるか、または、（２）スレッドの半分を一方の冗長ＦＣ接続部の組に取り付け、スレッドのもう一方の半分を冗長ＦＣ接続部のもう一方の組に取り付ける方法である。
【００２６】
ここでさらに詳細に述べるように、データ記憶システム１０は、通信指向の高度に利用可能なデータ記憶、処理、または、経路指定用として特に適切なスケーラブルなアーキテクチャを実現するかまたは内蔵する。このアーキテクチャは幾つかのアプリケーション用に使用可能であり、高性能かつ高度に利用可能でスケーラブルであり、柔軟であって、コスト効果的な記憶アレイを提供することができる。
【００２７】
データ記憶システム１０用としてスケーラブルなアーキテクチャを用いることにより、ユーザ（例えば、ビジネス）は、データ記憶用に最初は小さい構成体を使用し、後で、必要に応じて、非常に大きい構成体に拡張することが出来る。この場合の拡張は、データ記憶システム１０を損なうことなく、システムアーキテクチャを変えることなく、また、データ記憶システム１０によってサポートされた計算環境の基礎的なインフラストラクチャを著しく変更することなく達成可能である。
【００２８】
その融通性および拡張可能性の故に、ビジネスの様々な記憶必要条件を強化するためにデータ記憶システム１０を使用できる。これはデータにおける静的な境界を取り払い、それによって、データ資源が容易に共用され、かつ能率的に利用されることを可能にする。さらに、これは、多数のデータ記憶アーキテクチャの使用と管理に際して、スタッフの訓練および資源の管理に関連した非能率性を排除するか、または、実質的に軽減する。
【００２９】
相互接続構成部分
図２は、本発明の一実施形態に従った相互接続構成部分１６のブロック図である。相互接続構成部分１６は通信経路２６によって一緒に接続された幾つかの処理ノード２２を含む。
【００３０】
図に示すように、ノード２２は２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅ、２２ｆ、２２ｇ、２２ｈとして個別にラベル表示される。各ノード２２は、一般に、１つまたは複数のホストデバイス１２および記憶装置２０（図１）に関するインタフェース／アクセス点として機能する。その為に、一実施形態において、各ノード２２は１つまたは複数の周辺構成部分相互接続（ＰＣＩ）スロットを備える。この場合、各スロットはそれぞれの接続部２４をサポートする。各接続部２４はホストデバイス１２または記憶装置２０を接続することが出来る。接続部２４は小さいコンピュータシステムインタフェース（ＳＣＳＩ）、ファイバチャネル（ＦＣ）、ファイバチャネル調停ループ（ＦＣＡＬ）、イーサネット、インフィニバンド、または、他のあらゆる適当な接続部であっても差し支えない。
【００３１】
一実施形態において、各ホストデバイス１２および記憶装置２０は構成部分１６を相互接続するための２つの個別の接続部２４を有する。接続部２４で構成されるこの種の対の各々において、一方の接続部２４はそれぞれのホスト／記憶装置を１つのノード２２に結合し、もう一方の接続部２４はそれぞれのホスト／記憶デバイスを他のノード２２に結合する。これら２つのノード２２の一方はホスト／記憶装置に関して「一次ノード」と称し、もう一方のノード２２は「二次ノード」と呼ばれる。一実施形態における正常作動に際して、一次ノードはそれぞれのホスト／記憶装置への全てのアクセスを実施し、一次ノードが故障した場合に限り二次ノードが一次ノードの動作を引き継ぐ。一代替実施形態において、一次ノードおよび二次ノードはアクセスを実施するために同時に活動化される。両実施形態共に冗長性および欠陥許容性を備えるので、あらゆる任意のノード２２が故障しても、当該ノード２２に接続されているホストデバイス１２および記憶装置２０への接続が失われることはない。
【００３２】
各ノード２２はそれ自体の個別のクラスタメモリを含むことが可能である（図２に明確には示されていない）。各クラスタメモリはそれぞれのノード２２を介して転送されるデータおよび情報を緩衝する。また、以下にさらに詳細に述べるように、各クラスタメモリは１つまたは複数の他のノード２２を介して転送されるデータ／情報を緩衝するためにも役立つ。従って、ノード２２内のクラスタメモリは一緒に扱われることにより、記憶構成部分１８に対する読取りおよび書込み用キャッシュとして用いられる。クラスタメモリは、例えば、同期動的ランダムアクセスメモリ（ＳＤＲＡＭ）のような任意の適当なキャッシュメモリとして実現可能である。
【００３３】
通信経路２６（図を見易くするために、一方だけをラベル表示する）はノード２２を一緒に接続する。図に示すように、通信経路２６は任意の所与ノード２２を相互接続構成部分１６のあらゆる他のノード２２に接続する。即ち、任意の２つの所与ノード２２のために、１つの個別の通信経路２６が備えられる。各通信経路２６は、ノード２２の間にデータおよび情報の迅速な転送を提供するために、広いバンド幅を持つ高速二方向性リンクとして実現可能である。一実施形態において、リンクは幅２バイトであって、各方向に２６６ＭＨｚで作動可能であり、リンク当たりの全バンド幅は１，０６４ＭＢ／ｓである。各通信経路２６全体に亙るデータ／情報転送の制御は２つの個別のノード２２間で共用される。
【００３４】
通信経路２６は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）またはファイバチャネルプロトコルのプロトコルオーバヘッドなしに、ノード２２間に待ち時間の短い通信チャネルを提供する。一実施形態において、通信経路２６全体に亙るデータ／情報の転送は、任意の６４ビットワードに含まれる１つの単一ビットエラーをカバーすることが可能であり、かつ通信経路２６上のあらゆるラインエラーを検出できる誤り訂正コード（ＥＣＣ）によってカバーされる。通信経路２６上におけるデータ／情報転送の制御はノード２２間に配分されるので、当該構成部分を完全に故障させる恐れのある相互接続構成部分１６における単一故障点は存在しない。
【００３５】
通信経路２６に加えて、各ノード２２は、個別のリンク２３を備えたすべての他のノード２２に接続され得る。説明を簡単にするために、ただ１つのリンク２３だけを図示することとする。これらのリンク２３は通信経路２６と比較してさらに低速の接続部であり得る。一実施形態において、各リンク２３は、それぞれのノード２２のＰＣＩスロットによってサポートされた直列接続部であり得る。さらに低速の各リンク２３は、それぞれ２つのノード２２間において「ハートビート」接続を提供するかまたはサポートする。ここでさらに述べるように、この種の「ハートビート」接続は、２つのノード２２の各々が、もう一方のノードが故障しているかどうかを判定するためにもう一方の当該ノードに照会することを可能にする。
【００３６】
ここで説明される相互接続構成部分１６用構成は大容量記憶のために分散クラスタメモリを提供する。即ち、記憶構成部分１８に対して書込みまたは読取りされるデータは通信経路２６を横断して転送され、複数ノード２２のクラスタメモリに記憶されることが可能である。記憶構成部分１８へ書込むために、データは、１つのノード２２のクラスタメモリ内に一時的に書込まれ、同様に、他のノード２２のクラスタメモリに「鏡映される」。即ち、関連データは、もう一方のノード２２のクラスタメモリに自動的に送られ、複製される。一実施形態において、ノード２２でのキャッシュへの書込みは、相互接続構成部分１６の他のあらゆるノード２２にコピーされることが可能である。これは、書込まれるべきデータの複数のコピー（複写）を提供するので、当該データはバックアップされる。複数クラスタメモリへの書込みは通信経路２６を通る書込みと事実上同時に発生する。これは、著しい耐故障性および冗長性を提供し、その結果、１つのノード２２が故障してもデータは失われない。さらに、書込みキャッシングに関しては、データはホストデバイス１２からの入来に際して他のノード２２に鏡映されるので、当該書込みの肯定応答は比較的迅速に返され得る。これは、重要な意味を持つ書込み操作の待ち時間を短縮する。さらに、読取りキャッシング容量が大きいので読取りヒット率を大幅に改良することが可能であり、それによって、実効待ち時間および読取り所要バンド幅が短縮される。
【００３７】
分散クラスタメモリは共用され、かつ保護される。分散クラスタメモリは共用される。なぜなら、一実施形態において、相互接続構成部分１６の任意のノード２２におけるそれぞれのコントローラは他の任意のノード２２におけるクラスタメモリに書き込むことが可能であることに因る。あらゆる所与ノード２２におけるクラスタメモリは他のノード２２からの予期しないアクセスに対して保護され、結果的に、遠隔ノードにおけるハードウェアまたはソフトウェア故障はローカルノードには重大な悪影響を及ぼすことはない。また、分散クラスタメモリはサイズならびに性能の観点からスケーラビリティも受け入れ易くする。
【００３８】
相互接続構成部分１６に関する一実施形態において、各ノード２２は、ここに記述される機能性を提供するために適当な中央処理装置（ＣＰＵ）デバイス、メモリデバイス、アプリケーション指向の集積回路（ＡＳＩＣ）デバイスが配置されたシステムボードとして実現される。これらのシステムボードは、通信経路２６をサポートするバックプレーンに一緒に接続される。この種の一実施形態について図７に示し、これを参照しながら以下に説明することとする。
【００３９】
ノード
図３は、本発明の一実施形態に従ったノード２２のブロック図である。ノード２２は、ホストデバイス１２および記憶装置２０を接続するための接続部２４、および、他のノード２２と通信するための通信経路２６をサポートする。図に示すように、ノード２２は、コンピュータ‐メモリコンプレックス３０、ノードコントローラ３２、クラスタメモリ３４を用いて実現可能である。
【００４０】
コンピュータ‐メモリコンプレックス３０は、１つまたは複数の中央処理装置（ＣＰＵ）、および、オペレーティングシステムの独立コピーを実施する関連メモリを含むコンピュータシステムであっても差し支えない。コンピュータ‐メモリコンプレックス３０は１つまたは複数の適当なバスをサポートし、制御し、または、管理するように機能し、この場合、データおよび情報は接続部２４を経て転送可能である。一実施形態において、この種の各バスは周辺構成部分相互接続（ＰＣＩ）バスであっても差し支えない。また、コンピュータ‐メモリコンプレックス３０は、例えば、ハイパー‐テキストトランスポートプロトコル（ＨＴＴＰ）サービス、ネットワークファイルシステム（ＮＦＳ）サービス、共同インターネットファイルシステム（ＣＩＦＳ）サービスのような他の機能をサポートすることもあり得る。コンピュータ‐メモリコンプレックス３０の一実施形態については以下にさらに詳細に説明することとする。
【００４１】
ノードコントローラ３２とクラスタメモリ３４は異なり、コンピュータ‐メモリコンプレックス３０から分離している。ノードコントローラ３２はコンピュータ‐メモリコンプレックス３０とは強調作動することが可能であるが、ある程度、後者と独立して作動する。即ち、コンピュータ‐メモリコンプレックス３０はノードコントローラ３２をプログラムすることが出来る。ノードコントローラ３２は、プログラムされると、独立的にデータを操作することが可能であり、それによって、ノード２２を通るデータの転送に関して全体制御を可能にする。従って、コンピュータ‐メモリコンプレックス３０はデータの実際操作を実施するタスクによって負担をかけられることはない。クラスタメモリ３４はノードコントローラ３２に結合され、ここに述べるように、一般に、ノード２２を介して転送されつつあるデータおよび情報をキャッシュするように機能する。クラスタメモリ３４に関しては、ノード２２を介して転送されつつあるデータ／情報は一時的にコンピュータ‐メモリコンプレックス３０に記憶されなくても差し支えない。従って、コンピュータ‐メモリコンプレックス３０の作業負荷および責任を軽減することにより、ノードコントローラ３２およびクラスタメモリ３４はノード２２を介して実施されるデータおよび情報の転送を容易化および最適化する。
【００４２】
一実施形態において、データ／情報の転送は２つのノード２２におけるクラスタメモリ３４間で直接発生することもあり得る。通信経路２６のバンド幅は広いので、ノード２２間で非常に効率的な通信が可能である。さらに、任意の２つの所与ノード２２間におけるこれらの直接転送は、それぞれのノードコントローラ３２の１つまたは両方の制御の下に実施され得る。従って、この種の直接転送はコンピュータ‐メモリコンプレックス３０のＰＣＩバンド幅またはＣＰＵ／メモリバンド幅を消費しない。
【００４３】
大量のデータ転送に汎用計算コンピュータ‐メモリコンプレックス３０をバイパスさせるこの能力は有利である。これは、非常に広いバンド幅においてデータ／情報を転送することを可能にする。さらに、コンピュータ‐メモリコンプレックス３０の負荷は小さいので、例えば、ＨＴＴＰサービス、ＮＦＳサービス、ＣＩＦＳサービスのような他の機能を提供またはサポートするためにも利用することができる。
【００４４】
ノードの典型的な実施例
図４は、本発明の一実施形態に従ったノード２２の典型的な実施例を示す図である。この実施例には、バックプレーンを介して他のノード２２に接続された適当なシステムボードに取り付けられた１つまたは複数の集積回路（ＩＣ）デバイスを用いるコンピュータ‐メモリコンプレックス３０およびノードコントローラ３２が含まれても差し支えない。
【００４５】
図に示すように、２つの周辺構成部分相互接続（ＰＣＩ）バス４４はコンピュータ‐メモリコンプレックス３０によってサポートされる。４４ａおよび４４ｂによって別々にラベル表示されるこれらのＰＣＩバスはそれぞれ６６ＭＨｚ、６４ビットバスである。幾つかのＰＣＩブリッジ４５が各バスに装備される。図に示すように、ＰＣＩブリッジ４５ａおよび４５ｂはＰＣＩバス４４ａ用に装備され、ＰＣＩブリッジ４５ｃおよび４５ｄはＰＣＩバス４４ｂ用に装備される。ＰＣＩバス４４およびそれぞれのＰＣＩブリッジ４５は、ホストデバイス１２または記憶装置２０を接続できる１つまたは複数のＰＣＩスロットをサポートする。この実施形態において、各ＰＣＩバス４４は１つの６６ＭＨｚ、６４ビットＰＣＩスロット４６および２つの３３ＭＨｚ、６４ビットＰＣＩスロット４８をサポートする。集合的に、ＰＣＩバス４４、ＰＣＩブリッジ４５、ＰＣＩスロット４６および４８は、図２および３を参照して説明される接続部２４をサポートまたは実現する。
【００４６】
ノードコントローラ３２は両方のＰＣＩバス４４に存在し、したがって、ホストデバイス１２および記憶装置２０に対してデータ／情報を直接（即ち、コンピュータ‐メモリコンプレックス３０を介して経路指定することなく）転送可能である。１つまたは複数のスロット５０はノードコントローラ３２をクラスタメモリに接続する。図４には８本のスロット５０が示されているが、理解し易くするために、これらのスロット５０の中の２本だけをラベル表示して図示することとした。各スロットはクラスタメモリを実施するために適当なメモリデバイスを保持することができる。
【００４７】
クラスタメモリはバンク内に実施可能であり、図に示すように、別々に「クラスタメモリバンク１」および「クラスタメモリバンク０」とラベル表示される。一実施形態において、各バンクは幾つかのデュアルインラインメモリモジュール（ＤＩＭＭ）を含み、各ＤＩＭＭは個別のスロット５０内に保持される。各ＤＩＭＭは容量１ギガバイトまでの同期動的ランダムアクセスメモリ（ＳＤＲＡＭ）であっても差し支えない。従って、ノード２２におけるクラスタメモリの両バンクの合計容量は８ＧＢであり、８個のノードを備えた相互接続構成部分１６に分散したクラスタメモリの合計容量は６４ＧＢである。
【００４８】
メモリバンクにはロングバーストを用いてアクセス可能であり、結果的に、維持できるバンド幅はピークバンド幅に近い。一実施形態において、クラスタメモリの各バンクの幅は８バイトであり、１３３ＭＨｚで作動するので、結果的に、１０６４ＭＢ／ｓのピークバンド幅となる。２つのバンクの総合バンド幅は約２ＧＢ／ｓである。
【００４９】
汎用コンピュータ‐メモリコンプレックスにおけるシステムメモリとは異なり、クラスタメモリはシステムバス（例えば、Ｐｅｎｔｉｕｍ　Ｐｒｏバス）上で利用可能なバンド幅に制限されない。それどころか、クラスタメモリは、システムバスを横断する必要のない多重データ通路を経てアクセス可能である。これらのデータ通路には２つのＰＣＩバス４４ａおよび４４ｂ、通信経路２６、内部ＸＯＲエンジンデータ通路が含まれる。各６６ＭＨｚ、６４ビットＰＣＩバスは約５００ＭＢ／ｓを転送可能であるので、２つのＰＣＩバスだけがクラスタメモリバンド幅の約１ＧＢ／ｓに役立てられることが可能であり、この値はシステムバス上で達成可能なバンド幅を超過するはずである。リンク転送はクラスタメモリバンド幅をさらに広くする。
【００５０】
コンピュータ‐メモリコンプレックス
図５は、本発明の一実施形態に従ったコンピュータ‐メモリコンプレックス３０の典型的な実施例を示す図である。一般に、コンピュータ‐メモリコンプレックス３０は、システムメモリコントローラ、２つのＰＣＩバス、多重プロセッサ用システムバスを提供するマルチプロセッサ構成可能チップセットを用いて実現される。図に示すように、チップセットはメインコントローラ５４、入力／出力（Ｉ／Ｏ）ブリッジ６０、ＰＣＩ／レガシブリッジ６２を含むことができる。一実施形態において、メインコントローラ５４、Ｉ／Ｏブリッジ６０、ＰＣＩ／レガシブリッジ６２は全てＳｅｒｖｅｒＷｏｒｋｓから商業的に入手可能な「Ｃｈａｍｐ　Ｎｏｒｔｈ　Ｂｒｉｄｇｅ」、「Ｃｈａｍｐｉｏｎ　Ｉｎｐｕｔ／Ｏｕｔｐｕｔ（Ｉ／Ｏ）Ｂｒｉｄｇｅ（ＣＩＯＢ）」および「Ｓｏｕｔｈ　Ｂｒｉｄｇｅ」を用いてそれぞれ実現可能である。他のチップセットも同様に使用可能である。
【００５１】
５８ａおよび５８ｂによって別々にラベル表示された１つまたは複数の中央処理装置（ＣＰＵ）５８は、一般的に、コンピュータ‐メモリコンプレックス３０が組み込まれているノード２２を介して実施されるデータ転送を制御するための処理能力を提供する。各ＣＰＵ５８は、例えば、インテル社によるＰＥＮＴＩＵＭ　ＩＩＩのような任意の適当な処理装置を用いて実現可能である。
【００５２】
メインコントローラ５４はＣＰＵバス５５を介してＣＰＵ５８に接続される。メインコントローラ５４はコンピュータ‐メモリコンプレックス３０の動作全体を調和させ、かつ管理する。メインコントローラ５４はＣＰＵバス５５とシステムメモリ用バスとの間のブリッジとして機能する。
【００５３】
１つまたは複数のスロット５６はメインコントローラ５４をシステムメモリに接続する。理解し易くするために、ただ１つのスロット５６だけをラベル表示することとする。各スロット５６はシステムメモリを実現するために適当なメモリデバイスを保持することができる。システムメモリは、例えば、同期動的ランダムアクセスメモリ（ＳＤＲＡＭ）を用いて実現可能である。一般に、システムメモリは、それぞれのノード２２に関する転送を制御する際に用いられるデータおよび情報を記憶するように機能する。システムメモリはノード２２を介して実施される大量転送用にデータをキャッシュするためには必要とされない。この機能はノードにおいてクラスタメモリ３４により実施可能である。
【００５４】
メインコントローラ５４に結合されたＩ／Ｏブリッジ６０は、４４ａおよび４４ｂと別々にラベル表示されたＰＣＩバス４４をサポートする。特に、Ｉ／Ｏブリッジ６０は、各ＰＣＩバス４４のトラフィックを制御する。Ｉ／Ｏブリッジ６０は、ＰＣＩバス４４とメインコントローラ５４との間のブリッジとして機能する。それぞれのノード２２を介して転送されるデータはＰＣＩバス４４で運ばれる。
【００５５】
ＰＣＩ／レガシブリッジ６２はメインコントローラ５４に結合される。ＰＣＩ／レガシブリッジ６２は、一般に、ＰＣＩと産業規格アーキテクチャ（ＩＳＡ）、集積ドライブ電子装置（ＩＤＥ）、ＰＣプラットホーム上の他の「レガシ」インタフェースとの間のブリッジとして機能する。ローカルドライブ６４はＰＣＩ／レガシブリッジ６２に接続される。ドライブ６４はコンピュータ‐メモリコンプレックス３０用のローカルオペレーティングシステムをブートするため、および、停電の場合にシステムメモリからローカルデータをバックアップするために使用できる。
【００５６】
直列ポート６６はＲＣＣサウスブリッジ６２に接続される。一般に、直列ポート６６はコンピュータ‐メモリコンプレックス３０に対し直列接続部をサポートするように機能する。この直列接続部は、それぞれのノード２２と他のノードとの間の二次通路として使用できる。通信経路２６よりもさらに低速の接続部であっても差し支えない直列接続部は２つのノード２２間の「ハートビート」接続部として機能する。
【００５７】
一実施形態において、個別の直列ポート６６は相互接続構成部分１６における他の全てのノード２２のために装備される。従って、８個のノード２２を備えた相互接続構成部分１６の場合には、あらゆる所与ノード２２におけるコンピュータ‐メモリコンプレックス３０は他の７個のノードの各々に第２通路を提供するために７個の直列ポート６６を備える。ノード２２からの直列接続部はバックプレーンを経て他のノードに経路指定される。他のノードとの接続部をサポートする個別の直列ポート６６に加えて、それぞれのノード２２内への診断ポートとして使用するために他の１つの直列ポート６６が備えられる。この直列ポート６６はパネルコネクタを介して利用可能である。一実施形態において、各直列ポート６６は、例えば、八進直列ポートチップのような同一または個別の適当な集積回路ポートデバイスとして実現可能である。
【００５８】
直列接続部（直列ポート６６により装備）および通信経路２６は任意の２つのノード２２間に冗長な通信リンクを提供する。この冗長性は、一般に、「スプリット−ブレイン」問題として知られている問題を取り扱う。スプリット−ブレイン問題はマスタノードが故障した場合にマスタノードに代置するためのバックアップノードが設計されている集団システムにおいて発生する。一般に、マスタノードとバックアップノードは単一通信リンクによって結合される。この通信リンクが破壊されると、バックアップノードはマスタノードが故障したと（誤って）推論し、マスタノードの制御機能を代行する。それと同時に、マスタノードは、バックアップノードが故障したと（誤って）推論し、制御機能の実施を継続する。制御機能を実施するマスタノードおよびバックアップノード両方の二重作動は結果的にデータの汚染を招くことがあり得る。直列ポート６６によって装備された各通信リンクは、それぞれ２つのノード２２間の「ハートビート」接続として機能する。任意の２つのノード間の通信経路２６が故障した場合には、直列接続部は２つのノード２２の各々がもう一方のノードの「ハートビート」をチェックすることを可能にする。即ち、各ノード２２は、もう一方のノードが故障したかどうかを判定するために一方のノードに照会することが可能である。マスタノードが依然として適切に機能していることを「ハートビート」接続が表示した場合には、バックアップノードは制御機能を代行しない。従って、「スプリット−ブレイン」問題に起因するデータの汚染は回避される。
【００５９】
同様にメインコントローラ５４に結合されているイーサネットポート６８は、外部または遠隔ハードウェアのノード２２とのイーサネット接続をサポートする。イーサネットポート６８は１０／１００ベース−Ｔイーサネットハブとして実現される。一実施形態において、当該ハードウェアに関する管理および制御機能に冗長性を付与するために、幾つかのノード２２のイーサネットポート６８はあらゆる所与の外部ハードウェアへの接続が可能である。従って、これらのイーサネットポート６８の１つが故障した場合には、もう一方のイーサネットポート６８が依然として管理および制御を提供する。
【００６０】
ノードコントローラ
図６は、本発明の一実施形態に従ったノードコントローラ３２の典型的な実施例を示す図である。この実施例において、別々に７０ａおよび７０ｂとラベル表示されたノードコントローラは１つまたは複数のＰＣＩ制御インタフェース７０を含む。各ＰＣＩ制御インタフェース７０はインタフェースにそれぞれのＰＣＩバス（「ＰＣＩ０」または「ＰＣＩ１」）を提供する。この種の各バスは６４ビット、６６ＭＨｚバスであっても差し支えない。ＰＣＩ制御インタフェース７０はノードコントローラ３２が各バスにおいてＰＣＩデバイスとして作用することを可能にする。それぞれのコンピュータ‐メモリコンプレックス３０における環境ソフトウェアはノードコントローラ３２を２つのＰＣＩバスにおける分離かつ独立した装置として操作する。
【００６１】
制御および状態レジスタ（ＣＳＲ）７２は各ＰＣＩ制御インタフェース７０に接続される。制御および状態レジスタ７２は、一般に、ノードコントローラ３２において用いられる各種情報を維持および追跡するように機能する。従って、例えば、制御および状態レジスタ７２は、ノードコントローラ３２において使用されるフラグまたは他の制御信号に関する現行値を維持することが出来る。これには、割込み、マスク、コマンド信号が含まれることもある。また、制御および状態レジスタ７２はデータに関するベースアドレスを保持することができる。ノードコントローラ３２の他の部分ならびに外部ＰＣＩデバイスは、制御および状態レジスタ７２に対する読取りまたは書込みが可能である。
【００６２】
ノードコントローラ３２はスレーブデバイス（標的）として作用することが可能であり、その場合には、各ＰＣＩバス上の他のデバイス（例えば、ホストデバイス１２またはコンピュータ‐メモリコンプレックス３０のＣＰＵ）がクラスタメモリ３４に対して読取りまたは書込みすることを可能にする。また、ＰＣＩデバイスは制御および状態レジスタ７２に対して書込みおよび読取りが可能である。
【００６３】
メモリコントロール７４は、一般に、それぞれのノード２２および／または遠隔ノードのクラスタメモリ３４に関するインタフェースを提供またはサポートするように機能する。一実施形態において、メモリコントロール７４はローカルクラスタメモリ３４および他のノードのクラスタメモリまで延在する通信経路２６に関する２つの７２ビット、１３３ＭＨｚ　ＳＤＲＡＭチャネル（０および１）をサポートする。
【００６４】
図に示すように、各通信経路２６は２つの個別の相互接続リンクを含む。リンク対の場合には、一方のリンクがデータ／情報をノードコントローラ３２からそれぞれのノード２２まで運び、もう一方のリンクがデータ／情報を同じノード２２からノードコントローラ３２（明確には、メモリコントロール７４）まで運ぶ。従って、対として用いられる相互接続リンクは相互接続構成部分１６のノード２２に関して完全に接続されたクロスバーを形成する。一実施形態において、リンクは１８ビット幅であり、名目上１３３ＭＨｚにおいて作動する。時計の両縁においてデータがサンプリングされる場合には、各リンクに関するデータレートは５３２ＭＢ／ｓである。
【００６５】
クラスタメモリ３４は複数の領域にプログラムまたは分割される。例えば、各領域は６４バイトで構成される１行であり、遠隔ノード２２との連携が可能である。ノードコントローラ３２は、クラスタメモリ３４の特定領域へデータを書込むことによって、この同じデータがそれぞれの相互接続リンクを経て関連遠隔ノード２２に送られるように構成することが可能である。従って、データは遠隔ノードのクラスタメモリ３４において「鏡映される」。また、ノードコントローラ３２は、他の領域へデータを書込むことによって、この同じデータが相互接続構成部分１６全体に「ブロードキャスト」される、即ち、データは全ての出相互接続リンクを越えてそれぞれの遠隔ノード２２へ送られるように構成可能である。
【００６６】
一実施形態において、データワード（例えば、２バイト）がメモリ領域に書込まれる場合には、このワードだけが遠隔ノードに送られない。その代りに、全領域の既存データ（例えば、６４バイトのメモリ行）がメモリから読取られ、当該ワードに関する新規データは既存データに合併され、合併されたデータはメモリ領域へライトバックされ、同様に、通信経路２６を経て遠隔ノードへ送られる。このメカニズムはノード２２間の著しくオーバヘッドの小さい通信を可能にする。
【００６７】
１つまたは複数の「排他的論理和」（ＸＯＲ）エンジン７６はＰＣＩ制御インタフェース７０、メモリコントロール７４、通信経路２６の出相互接続リンクに結合される。ＸＯＲエンジン７６は安価なディスク（ＲＡＩＤ）構成の冗長なアレイをサポートする。詳細に説明すると、ＸＯＲエンジン７６はＲＡＩＤボリュームの初期化または全ＲＡＩＤストリップの書込みに際してＲＡＩＤパリティを計算し、ＲＡＩＤグループ内の１つのディスクが不良である場合にデータを復元し、ディスクから読み取られたオールドパリティおよび他のノードから相互接続リンクを経て受け取られた部分パリティから新規のＲＡＩＤパリティを計算する。ＸＯＲエンジン７６は、例えば、チェックサムのような他のタイプの操作を実施する。チェックサムは、データが有効であることを保証するために使用できるコードである。
【００６８】
一実施形態において、ＸＯＲエンジン７６はローカルクラスタメモリ３４の複数領域の読取り、全領域におけるＸＯＲ操作の実施、ローカルクラスタメモリ３４の他の領域への結果のライトバックが可能である。これは、全ＲＡＩＤストリップの書込みを加速するため、およびＲＡＩＤグループのディスク故障の後におけるデータの再構成速度を上げるために用いられる。個別のＸＯＲエンジン７６、は各相互接続リンクに備えられる。この種の各ＸＯＲエンジン７６はローカルクラスタメモリ３４の２つの領域においてＸＯＲ操作を実施し、遠隔ノード２２におけるクラスタメモリに結果を置くことが出来る。これは、新規パリティを計算するために、ＲＡＩＤ部分ストリップの書込みに際して用いられる。また、各リンクＸＯＲエンジン７６は、遠隔ノードのクラスタメモリへローカルクラスタメモリ３４の領域をコピーするためにも使用できる。
【００６９】
一実施形態において、ＸＯＲエンジン７６は、システムメモリとローカルクラスタメモリ３４との間でデータを動かすために、ダイレクトメモリアクセス（ＤＭＡ）エンジンを実現できる。詳細には、ＸＯＲエンジン７６は、ＰＣＩバスを経てシステムメモリからデータを読取るため、および、ＰＣＩバスを経てシステムメモリにデータを書込むために使用できる。コンピュータ‐メモリコンプレックス３０におけるＣＰＵは、データ記憶装置の未加工容積を超過するファイルシステムを実現するためにこのＤＭＡエンジンを使用することができる。
【００７０】
１つまたは複数の待ち行列７８はＸＯＲエンジン７６に接続される。待ち行列７８はＸＯＲエンジン７６によって処理されることが可能なコマンドブロックを記憶する。各コマンドブロックは幾つかのソースを指定し、指定に際してＸＯＲ操作が実施可能であり、その結果は特定の宛先に送られる。各ソースはクラスタメモリ３４またはＰＣＩバス４４の領域であり得る。宛先は出相互接続リンクの１つ、ＰＣＩバス、または、クラスタメモリの領域であり得る。個別のコマンド待ち行列７８は各宛先に提供される。
【００７１】
ここで説明された機能性に関して、ノードコントローラ３２はデータ／情報およびノード２８を通る通信の記憶を加速し、それによって、性能および可用性を強化する。
【００７２】
相互接続構成部分の典型的なハードウェアの実施例
図７は、本発明の一実施形態に従った相互接続構成部分１６の典型的な実施例を示す図である。この実施例において、各ノード２２は個別のシステムボード８０を用いて実施可能である。バックプレーン８２はシステムボード８０をまとめて接続する。
【００７３】
図に示すように、システムボードは８０ａ、８０ｂ、８０ｃとラベル表示される。一実施形態において、８個のシステムボード８０は相互接続構成部分１６に含まれる。各システムボード８０は、１つまたは複数のＣＰＵ、システムメモリ、ＰＣＩバス、ＰＣＩスロットを備えた既製の標準構成部分を用いて実施可能な個別のコンピュータシステムである。ＰＣＩスロットはホストデバイス１２または記憶装置２０に接続部を提供する。図に示すように、各ホストデバイス１２および記憶装置２０は複数のシステムボード８０のＰＣＩスロットに接続可能である。これは冗長性を付与するので、１つのシステムボード８０が破損した場合に、ホストデバイス１２および当該システムボード８０に接続された記憶装置２０は依然としてそれぞれのバックアップシステムボード８０を経てデータまたは情報を送受信可能である。
【００７４】
各システムボード８０はそれ自体のノードコントローラ３０を含み、ＰＣＩスロットを備えたそれぞれのＰＣＩバスを共有する。ノードコントローラ３０は、アプリケーション指向の集積回路（ＡＳＩＣ）としてそれぞれ実現可能である。各ノードコントローラ３０は、バックプレーン８２を経て他のシステムボード８０に接続された幾つかの相互接続リンクをサポートする。各ノードコントローラ３０は、キャッシュメモリ８４として実現可能なクラスタメモリの２つのバンクへのアクセス（即ち、読取りまたは書込み）を制御する。それぞれのシステムボード８０上のＣＰＵまたは他のデバイス（例えば、ＰＣＩマスタ）はノードコントローラ３０を経て、ローカルクラスタメモリの位置または領域に対して直接的に読み書きすることが可能である。例えば、ＰＣＩファイバチャネル調停ループ（ＦＣＡＬ）コントローラはローカルシステムボード８０上のキャッシュメモリ８４に対してダイレクトメモリアクセス（ＤＭＡ）を実施可能である。
【００７５】
異なるシステムボード８０上のノードコントローラ３０は、例えば、大量転送として、データ／情報をそれらの間で転送するために通信する。ノードコントローラ３０はピア・トゥ・ピア転送、即ち、ＣＰＵおよびシステムメモリを含むメインコンピュータシステム（即ち、コンピュータ‐メモリコンプレックス）以外の２つのＰＣＩデバイスの間の転送を実施できる。これは、幾つかの理由により有利である。ノードコントローラ３０は先ずピア・トゥ・ピア転送を扱うので、各システムボード８０におけるメインコンピュータシステムは他の機能に関してさらに利用可能にされる。同時に、メインコンピュータシステムへの「正常」ＰＣＩバス転送は個別のバスを必要とすることなしに情報制御のために使用できる。さらに、データの大量転送は、例えば、システムバスおよび限定された容量のシステムメモリにおける比較的狭いバンド幅のようなメインコンピュータシステムに関する一般的な制限条件を回避する。相互接続構成部分１６において、大量データ転送は大容量、かつ比較的広いクラスタメモリ、および、高速リンクを用いて実施されるので、ノード２２間の転送は非常に迅速である。クラスタメモリは各ノードコントローラ３２に別々に装備されるので、異なるノードにおいて他のノードコントローラへデータを移送するために追加転送は必要ではない。これらは相互接続構成部分１６の効率および性能を最適化し、従って、データ記憶システム１０の動作全体を強化する。
【００７６】
バックプレーン８２はシステムボード８０を保持するための幾つかのスロットを含む。バックプレーン８２はノード２２を相互接続するための通信経路２６をサポートする。各通信経路２６は２つのシステムボード８０を接続する一対の高速リンク８６（各方向に１つ）として実現される。一実施形態において、一対の個別の高速リンク８６がデータ相互接続構成部分１６の各々２つのシステムボード８０用に装備される。このように、バックプレーン８２は、システムボード８０を相互接続するための完全に接続されたクロスバーを提供する。クロスバーは待ち時間を追加することなしに合理的な大きさのシステムサイズにまで達することを可能にする優れたスケーラビリティを付与する。
【００７７】
相互接続構成部分１６はバックプレーン８２に機械的に適合可能なシステムボード８０のデータ転送容量を越えて基準化されることが可能である。特に、１つまたは複数のシステムボード８０は他のバックプレーン８２への接続部を備えたスイッチとして役立てることが可能であり、それによって、追加システムボード８０によって装備される容量を含み得る程度まで容量を拡張する。
【００７８】
ノード故障の影響
図８は、本発明の一実施形態に従ったノード故障の影響を示す図である。図に示すように、個別に「ノード０」、「ノード１」、「ノード２」、「ノード３」として別々に参照される幾つかのノード２２は各種ホストデバイス１２および記憶装置２０に接続する。
【００７９】
ホストデバイス１２は「ホスト０」、「ホスト１」、「ホスト２」と個別に参照される。各ホストデバイス１２は複数のノードへ接続される。特に、図に示すように、ホスト０はノード０およびノード１に接続される。ホスト１はノード２およびノード３に接続される。ホスト２はノード０、ノード１、ノード２、ノード３に接続される。
【００８０】
記憶装置２０は「ディスク０」、「ディスク１」、「ディスク２」、「ディスク３」、「ディスク４」、「ディスク５」として別々に参照される。各記憶装置２０は複数のノードへ接続される。特に、図に示すように、ディスク０はノード０およびノード１に接続される。ディスク１はノード０およびノード２に接続される。ディスク２はノード０およびノード３に接続される。ディスク３はノード１およびノード２に接続される。ディスク４はノード１およびノード３に接続される。ディスク５はノード２およびノード３に接続される。
【００８１】
各ホストデバイス１２および各記憶装置２０は一次ノードおよび二次ノードを備える。正常作動している一実施形態において、一次ノードはそれぞれのホスト／記憶装置への全てのアクセスを実施し、一次ノードが故障した場合に限り、二次ノードがこれを引き継ぐ。一代替実施形態において、一次ノードおよび二次ノードはアクセスを実施するために同時に作動化される。
【００８２】
図８に示す配置構成において、もう一方のノードが故障した場合には、ノード０およびノード１の各々がもう一方のノードの記憶装置２０の制御を引き継ぐようにノード２２を対構成することが可能である。同様に、故障した場合には、これらのノードの各々がもう一方のノードの記憶装置の制御を引き継ぐようにノード２およびノード３を対構成することが可能である。この種の対構成により、特定のノードが故障した場合には、その関連ノードの負荷は２倍になるはずであり、従って、当然、データ記憶システム１０におけるボトルネックとなるはずである。ただ２つだけのノードを備えたシステムにおいては、この負荷倍増は回避不可能である。
【００８３】
ただし、本発明の一実施形態においては、２つよりも多い数のノードが装備される。１つのノードが故障した場合には、当該ノードの負荷は生き残っているノード全体にさらに均等に配分されることが可能である。従って、例えば、ノード０が故障した場合には、ノード１、ノード２、および、ノード３がノード０に割り当てられた記憶装置の幾らかの部分の制御を引き継ぐはずである。詳細には、ノード１がディスク０の制御を引き継ぎ、ノード２はディスク１の制御を引き継ぎ、ノード３がディスク２の制御を引き継ぐ。故障したノードの作業負荷は他のノードの間に均等に配分されるので、残っているノードのうちのいずれのノードもシステムにおけるボトルネックとして作用することはないはずである。
【００８４】
従って、本発明の一実施形態は、高性能、スケーラブル、かつ柔軟でコスト効果的、しかも複数の通信経路によって相互接続された幾つかのノードを有するデータ記憶システムおよびアーキテクチャを提供する。各ノードは汎用コンピュータ‐メモリコンプレックス、ノードコントローラ、キャッシュ記憶装置として使用可能なクラスタメモリ、データを要求および記憶するホストデバイスおよび記憶装置に対する幾つかの接続部であっても差し支えない。他のノードがその代行可能であるので、どのノードが故障しても結果的にデータ損失は生じないので、このデータ記憶システムおよびアーキテクチャは高度に利用可能である。当該データ記憶システムの残りの動作に悪影響を及ぼすことなしに、多くの構成部分が追加または代置可能である。また、各ノードおよび通信経路は非常に高いスループットを維持するために十分なバンド幅を持つので、データ記憶システムは高性能を提供する。各ノードはキャッシュ用としてそれ自体の個別のクラスタメモリを持ち、従って、データ転送は容易に実施される。各ノードは他のシステムボードを相互接続するバックプレーンコネクタに容易に追加可能なシステムボードを用いて実施可能である。即ち、本データ記憶システムはスケーラブルである。
【００８５】
本発明の特定の実施形態について図示および記述してきたが、当該技術分野における当業者にとって、その広い態様において本発明から逸脱することなしに改変例または変形例を作成することが可能であり、従って、添付の特許請求の範囲は本発明の真の適用範囲内に所在する全てのこの種の改変例および変形例をその適用範内に包含することは明白なはずである。
【図面の簡単な説明】
【図１】
本発明の一実施形態に従ったデータ記憶システムが作動可能な環境を示す図である。
【図２】
本発明の一実施形態に従った相互接続構成部分のブロック図である。
【図３】
本発明の一実施形態に従ったノードの簡素化されたブロック図である。
【図４】
本発明の一実施形態に従ったノードの典型的な実施例を示す図である。
【図５】
本発明の一実施形態に従ったコンピュータ‐メモリコンプレックスの典型的な実施例を示す図である。
【図６】
本発明の一実施形態に従ったノードコントローラの典型的な実施例を示す図である。
【図７】
本発明の一実施形態に従った１つのハードウェア構成体として実施された複数のノードを示す図である。
【図８】
本発明の一実施形態に従ったノード故障の影響を示す図である。
【図１】
2004506267.tif 000003
【図２】
2004506267.tif 000004
【図３】
2004506267.tif 000005
【図４】
2004506267.tif 000006
【図５】
2004506267.tif 000007
【図６】
2004506267.tif 000008
【図７】
2004506267.tif 000009
【図８】
2004506267.tif 000010
【国際公開パンフレット】
2004506267.tif 000011
2004506267.tif 000012
2004506267.tif 000013
2004506267.tif 000014
2004506267.tif 000015
2004506267.tif 000016
2004506267.tif 000017
2004506267.tif 000018
2004506267.tif 000019
2004506267.tif 000020
2004506267.tif 000021
2004506267.tif 000022
2004506267.tif 000023
2004506267.tif 000024
2004506267.tif 000025
2004506267.tif 000026
2004506267.tif 000027
2004506267.tif 000028
2004506267.tif 000029
2004506267.tif 000030
2004506267.tif 000031
2004506267.tif 000032
2004506267.tif 000033
2004506267.tif 000034
2004506267.tif 000035
2004506267.tif 000036
2004506267.tif 000037
2004506267.tif 000038
2004506267.tif 000039
2004506267.tif 000040
2004506267.tif 000041
2004506267.tif 000042
2004506267.tif 000043
2004506267.tif 000044
2004506267.tif 000045
2004506267.tif 000046
2004506267.tif 000047
2004506267.tif 000048
2004506267.tif 000049
2004506267.tif 000050
2004506267.tif 000051
2004506267.tif 000052
2004506267.tif 000053
2004506267.tif 000054
2004506267.tif 000055
2004506267.tif 000056
2004506267.tif 000057
2004506267.tif 000058
2004506267.tif 000059
2004506267.tif 000060
2004506267.tif 000061
2004506267.tif 000062
2004506267.tif 000063
2004506267.tif 000064
【国際調査報告】
2004506267.tif 000065