(57)【要約】  複数のディレクタを有し、上記ディレクタの一部分がホストコンピュータ／サーバに結合されるようになっており、上記ディレクタの別の部分がディスクドライブのバンクに結合されるようになっているシステムインタフェース。上記複数のディレクタは、ある網を通して相互接続されている。上記複数のディレクタの間で共用される資源を有する共通資源セクションが設けられている。上記共通共用資源セクションは、上記複数のディレクタによって使用される共用コンピュータコードを含む。上記コードは、上記複数のディレクタの各々をブートアップするためのコンピュータコードを含む。共通共用コード記憶セクションが、上記網を通して上記ディレクタと相互接続されている。第２の冗長共通共用資源セクションが設けられている。網は、パケット交換網である。
2007507793.tif 000002
【特許請求の範囲】
【請求項１】
システムインタフェースであって、
複数のディレクタを含み、前記ディレクタの一部分はホストコンピュータ／サーバに結合されるようになっており、前記ディレクタの別の部分はディスクドライブのバンクに結合されるようになっており、前記複数のディレクタはある網を通して相互接続され、
前記複数のディレクタの間で共用される資源を提供する共通資源セクションを更に含む、
ことを特徴とするシステムインタフェース。
【請求項２】
前記共通共用資源セクションは、前記複数のディレクタによって使用される共用コンピュータコードを含むことを特徴とする請求項１に記載のシステムインタフェース。
【請求項３】
前記コードは、前記複数のディレクタの各々をブートアップするためのコンピュータコードを含むことを特徴とする請求項２に記載のシステムインタフェース。
【請求項４】
前記共通共用コード記憶セクションは、前記網を通して前記ディレクタと相互接続されていることを特徴とする請求項３に記載のシステムインタフェース。
【請求項５】
第２の、冗長共通共用資源セクションを含むことを特徴とする請求項１に記載のシステムインタフェース。
【請求項６】
前記第２の、冗長共通共用資源セクションは、前記最初に記載した共通共用コード記憶セクションに障害が発生した場合に前記複数のディレクタによって使用されるコンピュータコードを格納していることを特徴とする請求項５に記載のシステムインタフェース。
【請求項７】
前記システムインタフェースは、前記最初に記載した共用資源セクションに障害が発生した場合に前記ディレクタを相互接続するのに使用するための前記第２の共用資源セクションに結合されている第２の、冗長網を含むことを特徴とする請求項５に記載のシステムインタフェース。
【請求項８】
前記網は、パケット交換網であることを特徴とする請求項１に記載のシステムインタフェース。
【請求項９】
前記冗長網は、パケット交換網であることを特徴とする請求項８に記載のシステムインタフェース。
【請求項１０】
前記網を通して前記ディレクタと前記共用資源とに結合されているキャッシュメモリを含むことを特徴とする請求項１に記載のシステムインタフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ記憶システムに関し、具体的には記憶システムの構成要素またはサブアセンブリに障害が発生した場合に総合システムを障害から保護する冗長配列を有するデータ記憶システムに関する。
【背景技術】
【０００２】
当分野においては公知のように、大きいホストコンピュータ及びサーバ（以下、“ホストコンピュータ／サーバ”という）は、大容量データ記憶システムを必要とする。これらの大きいコンピュータ／サーバは、一般的に、データ記憶システムを含む周辺装置を通してホストコンピュータ／サーバへ導入されたデータに対して多くの操作を遂行するデータプロセッサを含んでいる。これらの操作の結果は、記憶システムを含む周辺装置へ出力される。
【０００３】
データ記憶システムの１つの型は、磁気ディスク記憶システムである。図１に示すように、このシステムにおいては、ディスクドライブのバンク及びホストコンピュータ／サーバがシステムインタフェースを通して相互に結合されている。このインタフェースは、“フロントエンド”即ちホストコンピュータ／サーバコントローラ（またはディレクタ）及び“バックエンド”即ちディスクコントローラ（またはディレクタ）を含む。このインタフェースは、コントローラ（またはディレクタ）がホストコンピュータ／サーバに透明であるようにそれらを動作させる。換言すれば、ホストコンピュータ／サーバが単にそれ自体のローカルディスクドライブを動作させていると見做し得るように、ディスクドライブのバンク内へデータを記憶させ、それらからデータを検索する。このようなシステムの１つが、1993年４月23日付Moshe Yanai, Natan Vishlitzky, Bruno Alterescu及びDaniel Castelの米国特許第5,206,939号“ディスクマッピング及びデータ検索システム及び方法”に開示されている。
【０００４】
上記米国特許に記載されているように、インタフェースは、ホストコンピュータ／サーバコントローラ（またはディレクタ）及びディスクコントローラ（またはディレクタ）の他に、アドレス可能なキャッシュメモリを更に含むことができる。キャッシュメモリは半導体メモリであり、ホストコンピュータ／サーバからのデータをディスクドライブ内に格納する前に迅速に記憶するために、及びディスクドライブからのデータをホストコンピュータ／サーバへ送る前に記憶するために設けられている。キャッシュメモリは、ディスクドライブのような磁気メモリとは区別される半導体メモリであり、データの読出し及び書込みはディスクドライブよりも遥かに高速である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
最大データ帯域幅、最小システム待ち時間、及び最小コストを有するインタフェースが要望されていることは公知である。
【課題を解決するための手段】
【０００６】
本発明によれば、キャッシュメモリ及び複数のディレクタを有するシステムインタフェースが提供される。本システムインタフェースのディレクタの一部分はホストコンピュータ／サーバに結合されるようになっており、ディレクタの別の部分はディスクドライブのバンクに結合されるようになっている。複数のディレクタ及びキャッシュメモリは、網（ネットワーク）を通して相互接続されている。本システムインタフェースは、複数のディレクタの間で１つの資源を共用するための共通資源セクションを含んでいる。
【０００７】
一実施の形態においては、共通共用資源セクションは、複数のディレクタが使用する共用コンピュータコードを含む。このコードは、複数のディレクタの各々をブートアップするためのコンピュータコードを含んでいる。共通共用コード記憶セクションは、網を通してディレクタに相互接続されている。
【０００８】
一実施の形態においては、本システムインタフェースは、上述した第１の共通共用コード記憶セクションに障害が発生した場合に複数のディレクタによって使用される第２の、冗長共通共用コード記憶セクションを含む。
【０００９】
一実施の形態においては、本システムインタフェースは、上述した第１の共用コード記憶セクションに障害が発生した場合にディレクタを相互接続するのに使用される第２の、冗長網を含む。
【００１０】
一実施の形態においては、網はパケット交換網である。
【００１１】
以下に、本発明の１つまたはそれ以上の実施の形態の詳細を添付図面を参照して説明する。本発明の他の特色、目的、及び長所は、以下の説明、添付図面、及び特許請求の範囲から明白になるであろう。
【発明を実施するための最良の形態】
【００１２】
図２を参照する。データ記憶システム１０は、システムインタフェース１６を通してホストコンピュータ／サーバ１２とディスクドライブ１４との間でデータを転送するように示されている。システムインタフェース１６は、ホストコンピュータ／サーバ１２に結合されている複数の（例えば、図示の例においては４つの）フロントエンドディレクタ１８1−１８4と、ディスクドライブのバンク１４に結合されている複数の（例えば、図示の例においては４つの）バックエンドディレクタ２０1−２０4とを含む。インタフェース１６は、グローバルキャッシュメモリ２２を有するデータ転送セクション２４を含む。グローバルキャッシュメモリは、図示のように、複数の（図示の例においてはｎの）グローバルキャッシュメモリセクション２２1−２２4を含む。フロントエンドディレクタ１８1−１８4、バックエンドディレクタ２０1−２０4、及びグローバルキャッシュメモリは、パケット交換網を通して互いに通信し合う。パケット交換網は、図示のように、ディレクタの各々と、パケット交換網セクション２６とに結合されているクロスバスイッチ３２を含む。
【００１３】
フロントエンドディレクタ１８1−１８4及びバックエンドディレクタ２０1−２０4は機能的には類似しており、マイクロプロセッサ（μＰ）（即ち、中央処理ユニット（ＣＰＵ）及びＲＡＭ）と、メッセージエンジン及びメモリコントローラ３７を有するメッセージエンジン／ＣＰＵコントローラと、図示のように配列されているデータパイプ３８（2000年３月31日付Yuval Ofekらの特許出願第09 / 540,828号に詳細が開示されているので参照されたい）とを含む。しかしながら、ここではフロントエンドディレクタ１８1−１８4及びバックエンドディレクタ２０1−２０4が、パケット交換網を通してディレクタ１８1−１８4、２０1−２０4の間で交換されるメッセージに応答して、ホストコンピュータ／サーバ１２とディスクドライブのバンク１４との間のデータ転送を制御することに言及するだけで十分であろう。メッセージは、ホストコンピュータ／サーバ１２とディスクドライブのバンク１４との間のデータ転送を容易にする。このデータはデータ転送セクション２４を介してグローバルキャッシュメモリ２２を通過する。詳述すれば、フロントエンドディレクタ１８1−１８4の場合には、データはフロントエンドディレクタ１８1−１８4内のデータパイプ３１を通してホストコンピュータからグローバルキャッシュメモリ２２へ伝送され、メッセージはこのフロントエンドディレクタ１８1−１８4内のメッセージエンジン／ＣＰＵコントローラ３１を通過する。バックエンドディレクタ２０1−２０4の場合には、データはバックエンドディレクタ２０1−２０4内のデータパイプ３８を通してディスクドライブ１４からグローバルキャッシュメモリ２２へ伝送され、メッセージは再度このバックエンドディレクタ２０1−２０4内のメッセージエンジン／ＣＰＵコントローラ３１を通過する。
【００１４】
この点において、図３に詳細を示すように、フロントエンドディレクタ１８1−１８4及びバックエンドディレクタ２０1−２０4がクロスバスイッチ３２に結合されていることに注目されたい。クロスバスイッチ３２（図示の例においては、スイッチングファブリック）もパケット交換網２６に結合されており、システムインタフェース１６のためのパケット交換網を提供している。
【００１５】
ソフトウェア制御の下にマイクロプロセッサ２９によって作成された各メッセージは、ＲＡＭ内の送り待ち行列（図示してない）内に格納される。直接メモリアクセス（ＤＭＡ）動作を介してメッセージがＲＡＭ内の送り待ち行列から読出され、メッセージ網２６（図２）を通して１つまたはそれ以上の他のディレクタへ伝送されると、それは、図２Ａに示すパケタイザ（packetizer）においてパケットにパケット化される。ディレクタの場合、各パケットはコマンドフィールド、ソースＩＤ（即ち、送信ディレクタ）フィールド、宛先ＩＤ（即ち、受信ディレクタ）アドレスフィールド、ペイロードフィールド、及び図２Ａに示すような４バイトの巡回冗長文字（ＣＲＣ）を有する終止フィールドを含んでいる。グローバルメモリへ、及びグローバルメモリから通過するデータの場合、各パケットは、コマンド（例えば、読出し、書込み）フィールド、ソースＩＤ（即ち、送信元）フィールド、及び宛先ＩＤ（即ち、受信メモリ位置（即ち、図２に示す構成の場合グローバルメモリ内の位置）、または図５に基づいて説明する構成のように、グローバルキャッシュメモリセクション及びオフセットを有するディレクタボードＩＤ）フィールドを含む。
【００１６】
パケットは、クロスバスイッチ３２へ送られる。パケットの宛先部分はそのメッセージの宛先を指示するために使用され、パケット交換網セクション２６を通るメッセージの経路を決定するためにスイッチ３２によってデコードされる。デコーディングプロセスは、パケット交換網セクション２６内の経路テーブルを使用する。この経路テーブルは、初期化及び診断プロセッサ（コントローラ）（図示してない）による起動中に、コントローラによって初期化される。経路テーブルは、パケットの宛先アドレス部分（メッセージのための経路を識別する）と、メッセージが導かれるディレクタ１８1−１８4、２０1−２０4の一方との間の関係を与える。
【００１７】
図３を参照する。データパイプ３８は、メッセージエンジン／ＣＰＵコントローラが使用するものと同一の伝送（即ち、パケットプロトコル）を使用して、データをキャッシュメモリ２２へ送信し、及びキャッシュメモリ２２から受信するためのパケタイザ及びデパケタイザ（depacketizer）を更に含む。パケットの宛先部分は、書込み中にはデータを記憶するためにキャッシュメモリ２２内の宛先（即ち、アドレス）を、また読出し中にはキャッシュメモリ２２内に格納されているデータの検索を指示するために使用され、パケット交換網６を通るメッセージの経路を決定するためにスイッチ３２によってデコードされる。デコーディングプロセスは、パケット交換網２６内の経路テーブル（図示してない）を使用する。この経路テーブルは、初期化及び診断プロセッサ（コントローラ）（図示してない）による起動中に、コントローラによって初期化される。テーブルは、パケットの宛先アドレス部分（データのための経路を識別する）と、データを書込むための、または読出すための（その場合に応じて）キャッシュメモリ内の位置との間の関係を提供する。
【００１８】
図４を参照する。システムインタフェース１６の代替実施の形態が、システムインタフェース１６’で示されている。この例においては、冗長パケット交換網１６’が含まれている。図８、９Ａ−９Ｃに関して後述するように、システムがパケット交換網が障害を発生した場合に完全なシステム接続性を可能にする十分な冗長接続を含む場合には、単一のパケット交換網を使用できることに注目されたい。
【００１９】
図５に、システムインタフェース１６の代替実施の形態を、システムインタフェース１６”で示す。この例においては、システムインタフェース１６”は、ホストコンピュータ／サーバ１２に結合されている複数の（図示の例においては、例えば４つの）フロントエンドディレクタ／メモリボード１８’1−１８’4、ディスクドライブのバンク１４に結合されている複数の（図示の例においては、例えば４つの）バックエンドディレクタ／メモリボード２０’1−２０’4を含む。インタフェース１６”は、グローバルキャッシュメモリを有するデータ転送セクションを含む。グローバルメモリキャッシュ２２は、グローバルキャッシュメモリセクション２２a−２２nを含む。図示の例においては、フロントエンドディレクタ／メモリボード１８’1−１８’4及びバックエンドディレクタ／メモリボード２０’1−２０’4内にそれぞれ配置されているグローバルキャッシュメモリセクション２２1−２２8を含んでいる。
【００２０】
フロントエンドディレクタ／メモリボード１８’1−１８’4及びバックエンドディレクタ／メモリボード２０’1−２０’4の例を図６に示す。本実施の形態においてはパケット交換を使用しているので、データパイプ、メッセージエンジン／ＣＰＵコントローラ、及びメモリセクションが共通パケット交換プロトコルを使用できるようにするために、メモリセクションがパケタイザ及びデパケタイザを含んでいることに注目されたい。グローバルメモリへ、及びグローバルメモリから渡されるデータパケットは、図２Ａに示されている。ディレクタ／メモリボード上のメモリセクションが、そのボード上のクロスバスイッチを介してそのボード上のデータパイプと通信できることにも注目されたい。従って、上述したように、クロスバスイッチは総合パケット交換網の一部である。従って、フロントエンドディレクタ１８1−１８4、バックエンドディレクタ／メモリ２０1−２０4、及びグローバルキャッシュメモリセクション２２1−２２8は、上述したパケット交換網を通して互いに通信する。この網は、クロスバスイッチ及びパケット交換セクション２６を含む。
【００２１】
図７Ａに、システムインタフェースの代替実施の形態を示す。図示の例においては、ボードの１つは、2002年６月26日付Kendell A. Chiltonの米国特許出願第10 / 180,751号“キャッシュメモリマネージャを有するデータ記憶システム”に開示されているキャッシュメモリマネージャである。
【００２２】
図７に、システムインタフェースの代替実施の形態を示す。図示の例においては、システムインタフェースのためのパケット交換網を得るために各クロスバスイッチをパケット交換網セクション２６に結合する代わりに、クロスバスイッチは図７及び８に示すように相互接続されている。従って、図８に示すように、各クロスバスイッチはスイッチングノード（図においては、ノードＡ乃至Ｈで示されている）と考えることができる。従って、ノードＡ−Ｈとしてのクロスバスイッチが、パケット交換網１００を構成している。
【００２３】
従って、図７に関して説明したように、各ディレクタはクロスバスイッチに結合されている。クロスバスイッチは、少なくとも２つの他のディレクタのクロスバスイッチに直接接続され、またこれら少なくとも２つの直接接続されたディレクタを通して他のディレクタのクロスバスイッチングファブリックに間接的に接続されている。
【００２４】
例えば、クロスバスイッチＡはクロスバスイッチＢ、Ｅ、及びＨに直接的に接続され、直接接続されているクロスバスイッチＢ、Ｅ、及びＨの１つを通して他のクロスバスイッチ（即ち、スイッチＣ、Ｄ、Ｆ、及びＧ）に間接的に結合されている。例えば、スイッチＤは、直接接続されているスイッチＨを通してスイッチＡに間接的に接続されている。
【００２５】
クロスバスイッチＢはクロスバスイッチＡ、Ｃ、及びＦに直接的に接続され、直接接続されているクロスバスイッチＡ、Ｃ、及びＦの１つを通して他のクロスバスイッチ（即ち、スイッチＤ、Ｅ、Ｇ、及びＨ）に間接的に結合されている。
【００２６】
同様にクロスバスイッチＣはクロスバスイッチＢ、Ｄ、及びＧに直接的に接続され、他のクロスバスイッチに間接的に結合されている。クロスバスイッチＤはクロスバスイッチＣ、Ｅ、及びＨに直接的に接続されている。クロスバスイッチＥはクロスバスイッチＤ、Ｆ、及びＡに直接的に接続されている。クロスバスイッチＦはクロスバスイッチＥ、Ｇ、及びＢに直接的に接続され、他のクロスバスイッチに間接的に結合されている。クロスバスイッチＧはクロスバスイッチＨ、Ｆ、及びＣに直接的に接続され、他のクロスバスイッチに間接的に結合されている。クロスバスイッチＨはクロスバスイッチＡ、Ｇ、及びＤに直接的に接続され、他のクロスバスイッチに間接的に結合されている。
【００２７】
以上のように、各ディレクタはクロスバスイッチに結合されている。スイッチは、少なくとも２つの他のクロスバスイッチに直接的に接続されており、これら少なくとも２つの直接接続されているクロスバスイッチを通して他のクロスバスイッチに間接的に接続されている。従って、上述したように、パケット交換網は、直接及び間接接続されているクロスバスイッチのクロスバスイッチからなる。
【００２８】
図９Ａを参照する。１対の相互接続されたパケット交換網１００1、１００2が、16のディレクタ、または16のディレクタ／メモリボードのためのパケット交換網を形成している。網１００1のノードと網１００2のノードとの接続は次のようになっている。
網１００1のノードＡは網１００2のノードＡに直接接続されている。
網１００1のノードＢは網１００2のノードＢに直接接続されている。
網１００1のノードＣは網１００2のノードＣに直接接続されている。
網１００1のノードＤは網１００2のノードＤに直接接続されている。
網１００1のノードＥは網１００2のノードＥに直接接続されている。
網１００1のノードＦは網１００2のノードＦに直接接続されている。
網１００1のノードＧは網１００2のノードＧに直接接続されている。
網１００1のノードＨは網１００2のノードＨに直接接続されている。
【００２９】
このような接続を用いると、網１００1、１００2の一方のノードの１つ（即ち、ソースノード）は、他方の網の宛先ノードに到達する前に他方の網の２つのノードを通過する必要があり得る（即ち、２つのホップが必要である）ことに注目されたい。例えば、網１００1のノードＧがソースノードであり、網１００2のノードＤが宛先ノードであるとすれば、網網１００1のソースノードＧからの情報は、網１００2の宛先ノードＤに到達する前に、例えば網１００1のノードＨを、次いで網１００2のノードＨを通過しなければならない。同様に、網１００1のノードＧがソースノードであり、網１００2のノードＢが宛先ノードであるとすれば、網１００1のソースノードＧからの情報は、網１００2の宛先ノードＤに到達する前に、例えば網１００1のノードＦを、次いで網１００2のノードＦを通過しなければならない。
【００３０】
図９Ｂに示す配列は、この２ホップ状態を解消する。図の例においては、網１００1のノードと網１００2のノードとの接続は次のようになっている。
網１００1のノードＡは網１００2のノードＡに直接接続されている。
網１００1のノードＢは網１００2のノードＦに直接接続されている。
網１００1のノードＣは網１００2のノードＣに直接接続されている。
網１００1のノードＤは網１００2のノードＨに直接接続されている。
網１００1のノードＥは網１００2のノードＥに直接接続されている。
網１００1のノードＦは網１００2のノードＢに直接接続されている。
網１００1のノードＧは網１００2のノードＧに直接接続されている。
網１００1のノードＨは網１００2のノードＤに直接接続されている。
【００３１】
図示の配列においては、例えば網１００1のノードＧを考えると、このノードが網１００2のノードＧに直接接続されていることに注目されたい。また、網１００1のノードＧに直接接続されている網１００2の２つのノードＨ及びＦが、網１００2のノードＧに間接的に接続されている網１００2のノードに接続されていることにも注目されたい。
【００３２】
従って、一般的に言えば、複数のパケット交換網のそれぞれは複数のクロスバスイッチを含み、各クロスバスイッチは、（１）上記複数のパケット交換網の１つ内の複数のクロスバスイッチの少なくとも２つの他のもののクロスバスイッチと、上記複数のパケット交換網の第２のもののクロスバスイッチの１つとに直接的に接続され、（２）上記パケット交換ファブリックの１つに直接接続されているクロスバスイッチを介して上記複数のパケット交換網の１つの複数のクロスバスイッチの他のものに間接的に接続されている。上記複数のパケット交換網の上記１つ内の複数のクロスバスイッチの上記少なくとも２つの他のものの２つは、上記複数のパケット交換網の第２のものの２つのクロスバスイッチに間接的に接続され、上記複数のパケット交換網の第２のものの上記２つのクロスバスイッチは、上記複数のパケット交換網の上記第２のものの複数のクロスバスイッチの上記１つに間接的に接続されているクロスバスイッチである。
【００３３】
図９Ｃに示す配列は、図８に示した４つの網１００、即ち網１００1−１００4を使用して３２のノードを相互に接続する態様を示している。ノードは、図９Ｂを参照して上述した原理を用いて相互接続されている。これらの相互接続は、以下のようになっている。
網１００1  ：網１００2 網１００3 網１００4
Ａ−Ｅ        Ａ−Ｅ        Ａ−Ｅ        Ａ−Ｅ
Ｂ−Ｆ        Ｂ−Ｆ        Ｂ−Ｆ        Ｂ−Ｆ
Ｃ−Ｇ        Ｃ−Ｇ        Ｃ−Ｇ        Ｃ−Ｇ
Ｄ−Ｈ        Ｄ−Ｈ        Ｄ−Ｈ        Ｄ−Ｈ
Ａ−Ｂ        Ａ−Ｂ        Ａ−Ｂ        Ａ−Ｂ
Ｂ−Ｃ        Ｂ−Ｃ        Ｂ−Ｃ        Ｂ−Ｃ
Ｃ−Ｄ        Ｃ−Ｄ        Ｃ−Ｄ        Ｃ−Ｄ
Ｄ−Ｅ        Ｄ−Ｅ        Ｄ−Ｅ        Ｄ−Ｅ
Ｅ−Ｆ        Ｅ−Ｆ        Ｅ−Ｆ        Ｅ−Ｆ
Ｆ−Ｇ        Ｆ−Ｇ        Ｆ−Ｇ        Ｆ−Ｇ
Ｇ−Ｈ        Ｇ−Ｈ        Ｇ−Ｈ        Ｇ−Ｈ
Ｈ−Ａ        Ｈ−Ａ        Ｈ−Ａ        Ｈ−Ａ
相互接続：
網１００1のノードＡは網１００2のノードＡに直接接続されている。
網１００1のノードＢは網１００2のノードＦに直接接続されている。
網１００1のノードＣは網１００2のノードＣに直接接続されている。
網１００1のノードＤは網１００2のノードＨに直接接続されている。
網１００1のノードＥは網１００2のノードＥに直接接続されている。
網１００1のノードＦは網１００2のノードＢに直接接続されている。
網１００1のノードＧは網１００2のノードＧに直接接続されている。
網１００1のノードＨは網１００2のノードＤに直接接続されている。
網１００1のノードＡは網１００3のノードＡに直接接続されている。
網１００1のノードＢは網１００3のノードＦに直接接続されている。
網１００1のノードＣは網１００3のノードＣに直接接続されている。
網１００1のノードＤは網１００3のノードＨに直接接続されている。
網１００1のノードＥは網１００3のノードＥに直接接続されている。
網１００1のノードＦは網１００3のノードＢに直接接続されている。
網１００1のノードＧは網１００3のノードＧに直接接続されている。
網１００1のノードＨは網１００3のノードＤに直接接続されている。
網１００1のノードＡは網１００4のノードＡに直接接続されている。
網１００1のノードＢは網１００4のノードＦに直接接続されている。
網１００1のノードＣは網１００4のノードＣに直接接続されている。
網１００1のノードＤは網１００4のノードＨに直接接続されている。
網１００1のノードＥは網１００4のノードＥに直接接続されている。
網１００1のノードＦは網１００4のノードＢに直接接続されている。
網１００1のノードＧは網１００4のノードＧに直接接続されている。
網１００1のノードＨは網１００4のノードＤに直接接続されている。
網１００2のノードＡは網１００3のノードＡに直接接続されている。
網１００2のノードＢは網１００3のノードＦに直接接続されている。
網１００2のノードＣは網１００3のノードＣに直接接続されている。
網１００2のノードＤは網１００3のノードＨに直接接続されている。
網１００2のノードＥは網１００3のノードＥに直接接続されている。
網１００2のノードＦは網１００3のノードＢに直接接続されている。
網１００2のノードＧは網１００3のノードＧに直接接続されている。
網１００2のノードＨは網１００3のノードＤに直接接続されている。
網１００2のノードＡは網１００4のノードＡに直接接続されている。
網１００2のノードＢは網１００4のノードＦに直接接続されている。
網１００2のノードＣは網１００4のノードＣに直接接続されている。
網１００2のノードＤは網１００4のノードＨに直接接続されている。
網１００2のノードＥは網１００4のノードＥに直接接続されている。
網１００2のノードＦは網１００4のノードＢに直接接続されている。
網１００2のノードＧは網１００4のノードＧに直接接続されている。
網１００2のノードＨは網１００4のノードＤに直接接続されている。
網１００3のノードＡは網１００4のノードＡに直接接続されている。
網１００3のノードＢは網１００4のノードＦに直接接続されている。
網１００3のノードＣは網１００4のノードＣに直接接続されている。
網１００3のノードＤは網１００4のノードＨに直接接続されている。
網１００3のノードＥは網１００4のノードＥに直接接続されている。
網１００3のノードＦは網１００4のノードＢに直接接続されている。
網１００3のノードＧは網１００4のノードＧに直接接続されている。
網１００3のノードＨは網１００4のノードＤに直接接続されている。
【００３４】
従って、例えば網１００1のノードＦを出発点とすれば、網１００1のノードＦから、１ホップを有する“１”で指示されているノード、及び２ホップを有する“２”で指示されているノードを除く他の全てのノードには直接接続されている。従って、16の１ホップ相互接続と、６つの２ホップ相互接続が存在している。
【００３５】
図１０に、非平衡システムを示す。即ち、図示の例においては、６つのフロントエンドディレクタ／メモリボードと、２つのバックエンドディレクタ／メモリボードとが存在している。他の配列、例えば６つのバックエンド及び２つのフロントエンドのような配列も等価になる。
【００３６】
図１１に、別の実施の形態を示す。図示の例においては、３つのフロントエンドディレクタ／メモリボード、４つのバックエンドディレクタ／メモリボード、及び共用資源ボードが存在する。共用資源ボードは、図８に関して説明したように、バック及びフロントエンドディレクタ／メモリボードに接続されているクロスバスイッチを含む。図示の例においては、コード記憶セクション／メモリボードのクロスバスイッチは、グローバルキャッシュメモリセクション及び共用コード記憶セクションに結合されている。共用資源ボードは、図示のように配列されている上記マイクロプロセッサ及びメッセージエンジン／ＣＰＵコントローラ、フロントエンド及びバックエンドディレクタによって使用されるコンピュータコードを格納しているメモリ（図示の例ではＥＰＲＯＭ）、及びＥＰＲＯＭコントローラを含む共用資源セクションを含んでいる。共用資源セクションは、システムインタフェースの外部の源及び試験機器（図示してない）からアクセス可能な保守網接続を更に含む。この接続によってコードの更新が可能になり、コードを全てのディレクタによって共用することができるようになる。また共用資源セクションは、上述した経路テーブルのリセット（即ち、ブートアップ制御）及び作成をも可能にする。これらの特色は、システムインタフェースが更新されるようになるので特に有用である。またそれは、システムの環境監視をも可能にする。
【００３７】
ＥＰＲＯＭは、共用資源（即ち、フロントエンド及びバックエンドディレクタによって共用される資源）及び他のシステム資源を格納している。この配列は、この共用コード記憶セクション／メモリボードの置換によってコードを更新することを可能にする。このボードは、その上に共用メモリセクションを設けることなく作成できることを理解されたい。ＥＰＲＯＭ内に格納されているコードは、フロントエンド及びバックエンドディレクタのＣＰＵのためのブートアップコード、構成データ、エミュレーションデータコード、診断コードを含むことができる。ＥＰＲＯＭ内のコードは、共用コード記憶セクション／メモリボード上のクロスバスイッチを介して、その共用コード記憶セクション／メモリボード上のメッセージエンジン／ＣＰＵコントローラ及び共用メモリセクションへ転送できることに注目されたい。
【００３８】
ＥＰＲＯＭの使用は、種々のディレクタによってロードすることができるコードイメージを保持するために使用されるこのようなデバイスの一例であることは理解できよう。従って、他のデバイスは、例えばステータス及びエラーロギングのための不揮発性ＲＡＭ（ＮＶＲＡＭ）、時刻時計、エンクロージャ管理、ファブリック初期化ハードウェア及びソフトウェア、記憶システム及びデータ記憶管理ユーティリティ、デバッグアクセスポート及び支援、及びグローバル経路指定情報を含む。
【００３９】
図１２に、別の実施の形態を示す。図示の例においては、３つのフロントエンドディレクタ／メモリボード、３つのバックエンドディレクタ／メモリボード、及び１対の共用コード記憶セクション／メモリボードが存在している。第２の共用コード記憶セクション／メモリボードは、１対の記憶セクション／メモリボードの一方に障害が発生した場合に冗長性を与える。
【００４０】
図１３に、図３に示したディレクタの詳細を示す。図示の例においては、データパイプ３８が、入力／出力（Ｉ／Ｏ）インタフェース、データパイプ／待ち行列コントローラ、並びにパケタイザ及びデパケタイザを含んでいる。データパイプ／待ち行列コントローラは、詳細を後述するＩ／Ｏメモリ及び変換テーブルを含む。ここでは、Ｉ／Ｏインタフェースメモリが、後述する理由から、インバウンド待ち行列のためのセクションを含んでいないことに言及すれば十分である。インバウンドメッセージのための待ち行列はインバウンドメッセージを実行するディレクタのＣＰＵメモリ内に格納されているので、Ｉ／Ｏインタフェースメモリ内に破線で示されている“仮想”待ち行列で表されている。このメモリは、インバウンドメッセージ生産者または消費者インデックスを格納しないことを理解されたい。
【００４１】
マイクロプロセッサメモリ（即ち、ＣＰＵメモリ）は、その一セクション内にインバウンド待ち行列を含むように図示されている。マイクロプロセッサメモリは、後述する理由から、アウトバウンド待ち行列のためのセクションを含まないことに注目されたい。アウトバウンドメッセージのための待ち行列は、インバウンドメッセージを実行するディレクタのＩ／Ｏインタフェースメモリ内に格納されているので、マイクロプロセッサメモリ内に破線で示されている“仮想”待ち行列で表されている。このメモリは、アウトバウンドメッセージの生産者または消費者インデックスを格納する必要がないことを理解されたい。
【００４２】
図１４に、１対のディレクタを示す。１対のディレクタの一方のディレクタの動作を説明する目的から、以下に一方を発信ディレクタ、他方を遠隔ディレクタと呼ぶことに注目されたい。
【００４３】
図１５Ａ及び１５Ｂ、及び１６Ａ及び１６Ｂを参照する。図１５Ａ及び１５Ｂは、発信ディレクタから遠隔ディレクタへのインバウンド情報（即ち、メッセージ）の処理を示すフロー図であり、図１６Ａ及び１６Ｂは、遠隔ディレクタから発信ディレクタへのアウトバウンド情報（即ち、メッセージ）の処理を示すフロー図である。
【００４４】
図１５Ａ及び１５Ｂを参照する。Ｉ／Ｏ（即ち、情報）が発信ディレクタのＩ／Ｏインタフェースに到着する（ステップ１５００）。発信ディレクタのＩ／Ｏインタフェースは待ち行列エントリを作成する（ステップ１５０２）。発信ディレクタのＩ／Ｏインタフェースの待ち行列コントローラは、変換テーブル（図１７）を使用して待ち行列エントリのアドレスを遠隔ディレクタのためのアドレスに変換し、パケット交換ネットワークを通して待ち行列情報を遠隔ディレクタへ伝送するためにパケット化する（ステップ１５０４）。また発信ディレクタのＩ／Ｏインタフェースは、その生産者インデックスを更新する（ステップ１５０６）。発信ディレクタの待ち行列ディレクタは、変換テーブル（図１７）を使用して更新された生産者インデックスを変換し、それをパケット化し、そして変換された生産者インデックスをＩ／Ｏインタフェースメモリ内に格納するのではなく、遠隔ディレクタのＣＰＵメモリのインバウンド待ち行列のために書込む（ステップ１５０８）。また発信ディレクタのＩ／Ｏインタフェースは、割込み要求を表明する（オプション）（ステップ１５１０）。またそれは、生産者インデックスが消費者インデックスを超えていないか（即ち、オーバフロー状態）をチェックする。
【００４５】
発信ディレクタの待ち行列コントローラは、パケット交換ネットワークを介して割込みを遠隔ディレクタへ中継する（オプション）（ステップ１５１２）。
【００４６】
パケット交換ネットワークは、遠隔ディレクタへの書込み及び割込みを、パケット交換ネットワークを介して輸送する（ステップ１５１４）。
【００４７】
割込みは遠隔ディレクタによって認識されるか、またはもし割込みが存在しなければ、生産者インデックスがポーリングされる（ステップ１５１６）。
【００４８】
遠隔ディレクタのＣＰＵは、発信ディレクタの待ち行列コントローラによってそれへ送られた生産者インデックスが指し示している（先にそのＣＰＵメモリ内に書込まれた）情報を読出す（ステップ１５１８）。遠隔ディレクタのＣＰＵは、Ｉ／Ｏを処理する（ステップ１５２０）。遠隔ディレクタのＣＰＵは、また、その消費者インデックスを更新する（ステップ１５２２）。パケット交換網は、更新された消費者インデックスを、発信ディレクタのＩ／Ｏインタフェースへ輸送する（ステップ１５２４）。発信ディレクタのインタフェース待ち行列コントローラは遠隔ディレクタから消費者インデックスを受信し、変換テーブルを使用してインデックスを変換し、そして変換した消費者インデックスを格納する（ステップ１５２６）。インバウンド待ち合わせは完了する（ステップ１５２８）。
【００４９】
図１６Ａ及び１６Ｂを参照する。発信ディレクタは、Ｉ／Ｏを遠隔ディレクタへ送ることを決定する（ステップ１６００）。発信ディレクタ内のＣＰＵは、その生産者インデックスをそれ自体のＣＰＵメモリ内に格納するのではなく、パケット交換網を介して伝送するために更新する（ステップ１６０４）。
【００５０】
パケット交換網は、書込みを遠隔ディレクタのＩ／Ｏインタフェースへ輸送する（ステップ１６０６）。
【００５１】
遠隔ディレクタのＩ／Ｏインタフェースの待ち行列コントローラは、発信ディレクタから受信したアドレスを、それ自体の生産者インデックスを使用してアウトバウンド待ち行列内のアドレスに変換する（ステップ１６０８）。遠隔ディレクタのＩ／Ｏインタフェースの待ち行列コントローラは、それ自体の生産者インデックスを更新し、このＩ／Ｏインタフェースによって期待される場合には、それを格納する（ステップ１６１０）。遠隔ディレクタのＩ／Ｏインタフェースは、インデックスの更新を認識し、待ち行列を読出し、そしてその消費者インデックスを更新する（ステップ１６１２）。Ｉ／Ｏインタフェースは、必要な動作を遂行する（ステップ１６１４）。また、遠隔ディレクタの待ち行列コントローラは、消費者インデックスの更新を理解し、変換テーブル（図１７）を使用してそれを遠隔ディレクタのための消費者インデックスに変換し、そしてパケット交換網を通してそれを発信ディレクタへ伝送する（ステップ１６１６）。パケット交換網は、書込みを発信ディレクタのＩ／Ｏインタフェースへ輸送する（ステップ１６１８）。消費者インデックスは、遠隔ディレクタにおいて更新される（オーバフロー制御に使用される）（ステップ１６２０）。アウトバウンド待ち合わせは完了する（ステップ１６２２）。
【００５２】
図１７に、変換テーブルを示す。テーブルのアドレスｆ(x)は、待ち行列エントリ内の情報のある部分を取り、それからテーブル内にアドレスを導出する機能である。例えば待ち行列エントリには、トランザクションＩＤ、ホストアドレス、論理デバイス番号、または待ち行列エントリをある論理順序に集約するあるフィールドが存在し得る。他の場合には、この機能は、変換テーブル内の次の各エントリを取る単なるカウンタであることができる。“雑遠隔情報”は、例えば、機密保護キー、待ち行列長、タスク分割、テーブル検査合計及び妥当性ノート、割込み優先、及び“スコアボード”のような遠隔ノードにアクセスするのに必要な他の情報を含むことができる。
【００５３】
このテーブルの他に、２つのレジスタが維持されている。即ち、“ローカル生産者インデックス”及び“ローカル消費者インデックス”である。これらのインデックス（またはポインタ）は、Ｉ／Ｏインタフェースが見て、それと共に動作するものである。何れかの方向に複数の待ち行列が存在することができ、従って、変換テーブル内の“遠隔生産者インデックス”エントリは、２つの分離した待ち行列をこの１つの変換テーブルと共に表す実際に２つのインデックスであることができる。もしアドレスオフセットが遠隔ＣＰＵ番号と同一であれば、テーブル内にフィールドは必要ない。若干の場合には、遠隔生産者インデックスは必要ではない。もしＩ／Ｏインタフェースが生産者インデックスを供給しなければ、変換テーブルは１を合成するためのメカニズムである。遠隔生産者インデックスの更新は、たとえローカルＩ／Ｏインタフェースが１を生成しなくとも、遠隔ＣＰＵへの割込みを発生するようにプログラムすることができる。
【００５４】
以上に、本発明の多くの実施の形態を説明した。それにも拘わらず、本発明の思想及び範囲から逸脱することなく、種々の変更を行い得ることは理解されよう。従って、他の実施の形態が特許請求の範囲内にあることを理解されたい。
【図面の簡単な説明】
【００５５】
【図１】従来技術によるデータ記憶システムのブロック図である。
【図２】本発明によるデータ記憶システムのブロック図である。
【図２Ａ】図２のデータ記憶システムに使用されるパケットの図である。
【図３】図２のシステムに使用される例示ディレクタのブロック図である。
【図４】本発明の代替実施の形態によるデータ記憶システムのブロック図である。
【図５】本発明の代替実施の形態によるデータ記憶システムのブロック図である。
【図６】図５のシステムに使用するようになっている例示ディレクタ／メモリボードのブロック図である。
【図７】本発明の別の実施の形態によるデータ記憶システムのブロック図である。
【図７Ａ】本発明の別の実施の形態によるデータ記憶システムのブロック図である。
【図８】図７のように構成された８つのディレクタ／メモリボードを有する本発明によるデータ記憶システムのブロック図である。
【図９Ａ】図７のように構成された16のディレクタ／メモリボードを有する本発明によるデータ記憶システムを示す図である。
【図９Ｂ】図９Ａに示すものとは相互接続が異なり、ノーダル輸送ホップが最少数となるように相互接続されている図７のように構成された16のディレクタ／メモリボードを有する本発明によるデータ記憶システムを示す図である。
【図９Ｃ】本発明により相互接続され、図７のように構成された３２のディレクタ／メモリボードを有する本発明によるデータ記憶システムを示す図である。
【図１０】本発明の更に別の実施の形態によるデータ記憶システムのブロック図である。
【図１１】本発明の更に別の実施の形態によるデータ記憶システムのブロック図であって、このシステムは共用コード記憶セクションを有している。
【図１２】図２のシステムに使用されるディレクタのより詳細なブロック図である。
【図１３】本発明の更に別の実施の形態による共用コード記憶セクションを有するデータ記憶システムのブロック図である。
【図１４】図３に示す１対のディレクタのより詳細なブロック図である。
【図１５】Ａ及びＢは、図１４の発信ディレクタから図１４の遠隔ディレクタへのインバウンド情報（即ち、メッセージ）の処理を示すフロー図である。
【図１６】Ａ及びＢは、図１４の遠隔ディレクタから図１４の発信ディレクタへのアウトバウンド情報（即ち、メッセージ）の処理を示すフロー図である。
【図１７】図１５及び１６のフロー図に使用される変換テーブルを示す図である。
【図１】
2007507793.tif 000003
【図２】
2007507793.tif 000004
【図２Ａ】
2007507793.tif 000005
【図３】
2007507793.tif 000006
【図４】
2007507793.tif 000007
【図５】
2007507793.tif 000008
【図６】
2007507793.tif 000009
【図７】
2007507793.tif 000010
【図７Ａ】
2007507793.tif 000011
【図８】
2007507793.tif 000012
【図９Ａ】
2007507793.tif 000013
【図９Ｂ】
2007507793.tif 000014
【図９Ｃ】
2007507793.tif 000015
【図１０】
2007507793.tif 000016
【図１１】
2007507793.tif 000017
【図１２】
2007507793.tif 000018
【図１３】
2007507793.tif 000019
【図１４】
2007507793.tif 000020
【図１５Ａ】
2007507793.tif 000021
【図１５Ｂ】
2007507793.tif 000022
【図１６Ａ】
2007507793.tif 000023
【図１６Ｂ】
2007507793.tif 000024
【図１７】
2007507793.tif 000025
【国際調査報告】
2007507793.tif 000026
2007507793.tif 000027
2007507793.tif 000028