(57)【特許請求の範囲】
【請求項１】
システム・インターフェース装置であって、
（ａ）複数の第１ディレクタ・ボードであって、該第１ディレクタ・ボードの各１つが、
（ｉ）複数の第１ディレクタと、
（ｉｉ）前記第１ディレクタ・ボードのかかる１つの上の前記第１ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第１ディレクタ・ボードと、
（ｂ）複数の第２ディレクタ・ボードであって、該第２ディレクタ・ボードの各１つが、
（ｉ）複数の第２ディレクタと、
（ｉｉ）前記第２ディレクタ・ボードのかかる１つの上の前記第２ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第２ディレクタ・ボードと、
（ｃ）キャッシュ・メモリを有するデータ転送部であって、かかるキャッシュ・メモリが前記複数の第１および第２ディレクタに結合されている、データ転送部と、
（ｄ）前記複数の第１のディレクタ・ボードのディレクタ・ボードの各々の出入力ポートの対と、前記複数の第２のディレクタ・ボードのディレクタ・ボードの各々の出入力ポートの対とに結合されている、前記データ転送部とは独立して動作するメッセージ・ネットワークと、
を備え、
（ｅ）前記第１および第２ディレクタが、前記メッセージ・ネットワークを通じて前記第１ディレクタおよび前記第２ディレクタ間を通過するメッセージに応答して、前記第１ディレクタおよび前記第２ディレクタ間のデータ転送を制御することにより、前記データに前記データ転送部内の前記キャッシュ・メモリを通過させ、前記第１ディレクタおよび前記第２ディレクタ間のデータ転送を容易にすることを特徴とするシステム・インターフェース装置。
【請求項２】
請求項１記載のシステム・インターフェース装置において、前記第１ディレクタの各１つが、
前記第１ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
前記メッセージ・ネットワークと前記第１ディレクタのかかる１つとの間でメッセージを転送するコントローラと、
を含むことを特徴とするシステム・インターフェース装置。
【請求項３】
請求項１記載のシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間でメッセージを転送するコントローラと、
を含むことを特徴とするシステム・インターフェース装置。
【請求項４】
請求項２記載のシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間でメッセージを転送するコントローラと、
を含むことを特徴とするシステム・インターフェース装置。
【請求項５】
請求項１記載のシステム・インターフェース装置において、前記第１ディレクタの各１つが、
前記第１ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
マイクロプロセッサと、
前記マイクロプロセッサおよび前記データ・パイプに結合され、前記メッセージ・ネットワークと前記第１ディレクタのかかる１つとの間におけるメッセージ転送を制御し、かつ前記第１ディレクタのかかる１つの前記入力と前記キャッシュ・メモリとの間でデータを制御するコントローラと、
を含むことを特徴とするシステム・インターフェース装置。
【請求項６】
請求項１記載のシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
マイクロプロセッサと、
前記マイクロプロセッサおよび前記データ・パイプに結合され、前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間におけるメッセージ転送を制御し、かつ前記第２ディレクタのかかる１つの前記入力と前記キャッシュ・メモリとの間でデータを制御するコントローラと、
を含むことを特徴とするシステム・インターフェース装置。
【請求項７】
請求項５記載のシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
マイクロプロセッサと、
前記マイクロプロセッサおよび前記データ・パイプに結合され、前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間におけるメッセージ転送を制御し、かつ前記第２ディレクタのかかる１つの前記入力と前記キャッシュ・メモリとの間でデータを制御するコントローラと、
を含むことを特徴とするシステム・インターフェース装置。
【請求項８】
ホスト・コンピュータ／サーバとディスク・ドライブ・バンクとの間において、システム・インターフェース装置を介してデータを転送するデータ記憶システムであって、前記システム・インターフェース装置が、
（ａ）ホスト・コンピュータ／サーバに結合されている複数の第１ディレクタ・ボードであって、該第１ディレクタ・ボードの各１つが、
（ｉ）複数の第１ディレクタと、
（ｉｉ）前記第１ディレクタ・ボードのかかる１つの上の前記第１ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第１ディレクタ・ボードと、
（ｂ）前記ディスク・ドライブ・バンクに結合されている複数の第２ディレクタ・ボードであって、該第２ディレクタ・ボードの各１つが、
（ｉ）複数の第２ディレクタと、
（ｉｉ）前記第２ディレクタ・ボードのかかる１つの上の前記第２ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第２ディレクタ・ボードと、
（ｃ）キャッシュ・メモリを有するデータ転送部であって、かかるキャッシュ・メモリが前記複数の第１および第２ディレクタに結合されている、データ転送部と、
（ｄ）前記複数の第１のディレクタ・ボードのディレクタ・ボードの各々の出入力ポートの対と、前記複数の第２のディレクタ・ボードのディレクタ・ボードの各々の出入力ポートの対とに結合されている、前記データ転送部とは独立して動作するメッセージ・ネットワークと、
を備え、
（ｅ）前記第１および第２ディレクタが、前記メッセージ・ネットワークを通じて前記第１ディレクタおよび前記第２ディレクタ間を通過するメッセージに応答して、前記ホスト・コンピュータと前記ディスク・ドライブ・バンクとの間のデータ転送を制御することにより、前記データに前記データ転送部内の前記キャッシュ・メモリを通過させ、前記ホスト・コンピュータ／サーバおよび前記ディスク・ドライブ・バンク間のデータ転送を容易にすることを特徴とするデータ記憶システム。
【請求項９】
請求項８記載のデータ記憶システムのシステム・インターフェース装置において、前記第１ディレクタの各１つが、
前記第１ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
前記メッセージ・ネットワークと前記第１ディレクタのかかる１つとの間でメッセージを転送するコントローラと、
を含むことを特徴とするデータ記憶システム。
【請求項１０】
請求項８記載のデータ記憶システムのシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間でメッセージを転送するコントローラと、
を含むことを特徴とするデータ記憶システム。
【請求項１１】
請求項９記載のデータ記憶システムのシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間でメッセージを転送するコントローラと、
を含むことを特徴とするデータ記憶システム。
【請求項１２】
請求項８記載のデータ記憶システムのシステム・インターフェース装置において、前記第１ディレクタの各１つが、
前記第１ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
マイクロプロセッサと、
前記マイクロプロセッサおよび前記データ・パイプに結合され、前記メッセージ・ネットワークと前記第１ディレクタのかかる１つとの間におけるメッセージ転送を制御し、かつ前記第１ディレクタのかかる１つの前記入力と前記キャッシュ・メモリとの間でデータを制御するコントローラと、
を含むことを特徴とするデータ記憶システム。
【請求項１３】
請求項８記載のデータ記憶システムのシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
マイクロプロセッサと、
前記マイクロプロセッサおよび前記データ・パイプに結合され、前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間におけるメッセージ転送を制御し、かつ前記第２ディレクタのかかる１つの前記入力と前記キャッシュ・メモリとの間でデータを制御するコントローラと、
を含むことを特徴とするデータ記憶システム。
【請求項１４】
請求項１２記載のデータ記憶システムのシステム・インターフェース装置において、前記第２ディレクタの各１つが、
前記第２ディレクタのかかる１つの入力と前記キャッシュ・メモリとの間に結合されているデータ・パイプと、
マイクロプロセッサと、
前記マイクロプロセッサおよび前記データ・パイプに結合され、前記メッセージ・ネットワークと前記第２ディレクタのかかる１つとの間におけるメッセージ転送を制御し、かつ前記第２ディレクタのかかる１つの前記入力と前記キャッシュ・メモリとの間でデータを制御するコントローラと、
を含むことを特徴とするデータ記憶システム。
【請求項１５】
システム・インターフェース装置であって、
（ａ）複数の第１ディレクタ・ボードであって、該第１ディレクタ・ボードの各１つが、
（ｉ）各々データ・ポートとメッセージ・ポートとを有する複数の第１ディレクタと、
（ｉｉ）前記第１ディレクタ・ボードのかかる１つの上の前記第１ディレクタのメッセージ・ポートに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第１ディレクタ・ボードと、
（ｂ）複数の第２ディレクタ・ボードであって、該第２ディレクタ・ボードの各１つが、
（ｉ）各々データ・ポートとメッセージ・ポートとを有する複数の第２ディレクタと、
（ｉｉ）前記第２ディレクタ・ボードのかかる１つの上の前記第２ディレクタのメッセージ・ポートに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第２ディレクタ・ボードと、
（ｃ）キャッシュ・メモリを有するデータ転送部であって、かかるキャッシュ・メモリが前記複数の第１および第２ディレクタのデータ・ポートに結合されている、データ転送部と、
（ｄ）前記複数の第１のディレクタ・ボードの各ディレクタ・ボードの１対の出入力ポートと、前記複数の第２のディレクタ・ボードの各ディレクタ・ボードの１対の出入力ポートとに結合されているメッセージ・ネットワークと、
を備え、
（ｅ）前記第１および第２ディレクタが、前記メッセージ・ネットワークを通じて前記第１ディレクタおよび前記第２ディレクタ間を通過するメッセージに応答して、前記キャッシュ・メモリを通過するデータ転送に於けるデータに対して、前記第１ディレクタおよび前記第２ディレクタ間のデータ転送を制御する、
ことを特徴とするシステム・インターフェース装置。
【請求項１６】
システム・インターフェース装置であって、
（ａ）複数の第１ディレクタ・ボードであって、該第１ディレクタ・ボードの各１つが、
（ｉ）複数の第１ディレクタと、
（ｉｉ）前記第１ディレクタ・ボードのかかる１つの上の前記第１ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第１ディレクタ・ボードと、
（ｂ）複数の第２ディレクタ・ボードであって、該第２ディレクタ・ボードの各１つが、
（ｉ）複数の第２ディレクタと、
（ｉｉ）前記第２ディレクタ・ボードのかかる１つの上の前記第２ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチと、
を有する、第２ディレクタ・ボードと、
（ｃ）キャッシュ・メモリを有するデータ転送部であって、かかるキャッシュ・メモリが前記複数の第１および第２ディレクタに結合されている、データ転送部と、
（ｄ）前記複数の第１のディレクタ・ボードのディレクタ・ボードの各々の出入力ポートの対と、前記複数の第２のディレクタ・ボードのディレクタ・ボードの各々の出入力ポートの対とに結合されている、前記データ転送部とは独立して動作するメッセージ・ネットワークと、
を備え、
（ｅ）前記第１および第２ディレクタが、前記メッセージ・ネットワークを通じて前記第１ディレクタおよび前記第２ディレクタ間を通過するメッセージに応答して、前記キャッシュ・メモリを通過するデータ転送に於けるデータに対して、前記第１ディレクタおよび前記第２ディレクタ間のデータ転送を制御し、
（ｆ）前記メッセージの各々が宛先フィールドを含む、
ことを特徴とするシステム・インターフェース装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的に、データ記憶システムに関し、更に特定すれば、記憶システムの構成部品またはサブアセンブリ内における障害時に、システム全体を障害から保護する冗長構成を有するデータ記憶システムに関する。
【０００２】
【従来の技術】
当技術分野では公知であるが、大型のホスト・コンピュータおよびサーバ（ここでは総称して「ホスト・コンピュータ／サーバ」と呼ぶ）は、大容量データ記憶システムを必要とする。これらの大型コンピュータ／サーバは、一般に、データ・プロセッサを有し、データ記憶システムを含む周辺機器を介してホスト・コンピュータ／サーバに導入されるデータに対して、多くの処理を実行する。これらの処理の結果は、記憶システムを含む周辺機器に出力される。
【０００３】
データ記憶システムの一種に、磁気ディスク記憶システムがある。ここでは、ディスク・ドライブ・バンクおよびホスト・コンピュータ／サーバが、インターフェースを介して互いに結合されている。インターフェースは、「フロント・エンド」、即ち、ホスト・コンピュータ／サーバ・コントローラ（またはディレクタ）および「バック・エンド」、即ち、ディスク・コントローラ（またはディレクタ）を含む。インターフェースは、コントローラ（またはディレクタ）がホスト・コンピュータ／サーバに対して透過的であるように、これらを動作させる。即ち、ホスト・コンピュータ／サーバが単にディスク・ドライブ・バンクがそれ自体のローカル・ディスク・ドライブとして動作していると考えるように、ディスク・ドライブ・バンクにデータを記憶し、ここからデータを検索する。かかるシステムの１つが、”Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  ＤｉｓｋＭａｐｐｉｎｇ  ａｎｄ  Ｄａｔａ  Ｒｅｔｒｉｅｖａｌ”（ディスク・マッピングおよびデータ検索システムおよび方法）と題する米国特許第５，２０６，９３９号に記載されている。この特許の発明者は、Ｍｏｓｈｅ  Ｙａｎａｉ（モッシュ・ヤナイ）、Ｎａｔａｎ  Ｖｉｓｈｌｉｔｚｋｙ（ナタン・ビシュリツキ）、Ｂｒｕｎｏ  Ａｌｔｅｒｅｓｃｕ（ブルーノ・アルテレスク）およびＤａｎｉｅｌ  Ｃａｓｔｅｌ（ダニエル・カステル）であり、１９９３年４月２７日に発行され、本願と同一譲受人に譲渡されている。
【０００４】
この米国特許に記載されているように、インターフェースは、ホスト・コンピュータ／サーバ・コントローラ（またはディレクタ）およびディスク・コントローラ（またはディレクタ）に加えて、アドレス可能なキャッシュ・メモリも含むことができる。キャッシュ・メモリとは、半導体メモリであって、ディスク・ドライブ内への記憶の前に、ホスト・コンピュータ／サーバからのデータを迅速に記憶し、一方ホスト・コンピュータ／サーバに送る前に、ディスク・ドライブからのデータを記憶するために設けられている。半導体メモリであるキャッシュ・メモリは、ディスク・ドライブの場合におけるような磁気メモリとは異なり、そのデータ読み出しおよび書き込みが、ディスク・ドライブよりも遥かに速い。
【０００５】
ホスト・コンピュータ／サーバ・コントローラ、ディスク・コントローラおよびキャッシュ・メモリは、バックプレーン（背面）プリント回路ボードを介して相互接続されている。即ち、ディスク・コントローラがディスク・コントローラ・プリント回路ボード上に実装されている。ホスト・コンピュータ／サーバ・コントローラは、ホスト・コンピュータ／サーバ・コントローラ・プリント回路ボード上に実装されている。そして、キャッシュ・メモリは、キャッシュ・メモリ・プリント回路ボード上に実装されている。ディスク・ディレクタ、ホスト・コンピュータ／サーバ・ディレクタ、およびキャッシュ・メモリ・プリント回路ボードは、背面プリント回路ボード内に差し込まれる。ディレクタにおける障害の場合にデータの完全性を得るために、背面プリント回路ボードは１対のバスを有する。１組のディスク・ディレクタが一方のバスに接続され、他の１組のディスク・ディレクタが他方のバスに接続されている。同様に、１組のホスト・コンピュータ／サーバ・ディレクタが、一方のバスに接続され、他の１組のホスト・コンピュータ／サーバ・ディレクタが他方のバスに接続されている。キャッシュ・メモリは双方のバスに接続されている。バスの各１つは、データ、アドレスおよび制御情報を供給する。
【０００６】
この構成を図１に概略的に示す。即ち、２系統のバスＢ１、Ｂ２の使用により、ある程度の冗長性を備え、一方のバスに接続されているコントローラまたはディスク・ドライブに障害が発生した場合に、システム全体を障害から保護する。更に、２系統のバスを用いることにより、単一のバスを有するシステムと比較して、システムのデータ転送帯域幅が増大する。したがって、動作において、ホスト・コンピュータ／サーバ１２がデータを記憶したい場合、ホスト・コンピュータ１２は書き込み要求をフロント・エンド・ディレクタ１４（即ち、ホスト・コンピュータ／サーバ・ディレクタ）の１つに発行し、書き込みコマンドを実行する。フロント・エンド・ディレクタ１４の１つは、要求に答えて、ホスト・コンピュータ１２にデータを求める。要求がフロント・エンド・ディレクタ１４の内の要求する１つに渡った後、当該ディレクタ１４は、データのサイズを決定し、要求を記憶するためにキャッシュ・メモリ１８内に空間を予約する。次に、フロント・エンド・ディレクタ１４は、このフロント・エンド・ディレクタ１４に接続されているアドレス・メモリ・バスＢ１、Ｂ２の一方の上で制御信号を生成し、キャッシュ・メモリ１８への転送をイネーブルする。次に、ホスト・コンピュータ／サーバ１２は、データをフロント・エンド・ディレクタ１４に転送する。すると、フロント・エンド・ディレクタ１４は、ホスト・コンピュータ／サーバ１２に、転送が完了したことを通知する。フロント・エンド・ディレクタ１４は、キャッシュ・メモリ１８内に格納されている、図示しない表を調べ、バック・エンド・ディレクタ２０（即ち、ディクス・ディレクタ）の内どれがこの要求を処理するか決定する。表は、ホスト・コンピュータ・サーバ１２のアドレスを、ディスク・ドライブ・バンク１４内のアドレスにマップする。次に、フロント・エンド・ディレクタ１４は、要求を処理すべきバック・エンド・ディレクタ２０に対する「メール・ボックス」（図示せず。キャッシュ・メモリ１８内に記憶されている）に、データ量およびデータのディスク・アドレスの通知を入力する。他のバック・エンド・ディレクタ２０は、アイドル状態にあるときに、キャッシュ・メモリ１８をポールし、それらの「メール・ボックス」をチェックする。ポールした「メール・ボックス」が、転送を行なうべきことを指示する場合、バック・エンド・ディレクタ２０は要求を処理し、バンク２２内のディスク・ドライブにアドレスし、キャッシュ・メモリ１８からデータを読み出し、これをバンク２２内のディスク・ドライブのアドレスに書き込む。
【０００７】
バンク２２内のディスク・ドライブからホスト・コンピュータ／サーバ１２にデータを読み出す場合、システムは逆に動作する。即ち、読み出し動作の間、読み出し要求が、ホスト・コンピュータ／サーバ１２によって、指定のメモリ・ロケーション（即ち、要求されたデータ・ブロック）におけるデータに対して発せられる。フロント・エンド・ディレクタ１４の１つは、読み出し要求を受け取り、キャッシュ・メモリ１８を検査して、要求されたデータ・ブロックがキャッシュ・メモリ１８内に記憶されているか否かについて判定を行なう。要求されたデータ・ブロックがキャッシュ・メモリ１８内にある場合、キャッシュ・メモリ１８から要求されたデータ・ブロックを読み出し、ホスト・コンピュータ／サーバ１２に送る。フロント・エンド・ディレクタ１４が、要求されたデータ・ブロックがキャッシュ・メモリ１８内にないと判定した場合（即ち、いわゆる「キャッシュ・ミス」）、ディレクタ１４は、キャッシュ・メモリ１８（即ち、「メール・ボックス」）に、要求されたデータ・ブロックを受け取る必要があることの注意を書き込む。バック・エンド・ディレクタ２０はキャッシュ・メモリ１８をポールし、取るべき処置（即ち、要求されたデータ・ブロックの読み出し動作）があるか否かについて判定を行なう。キャッシュ・メモリ１８のメール・ボックスをポールし、読み出し動作を検出したバック・エンド・ディレクタ２０の１つは、要求されたデータ・ブロックを読み出し、キャッシュ・メモリ１８内に記憶されている、要求されたデータ・ブロックの記憶を開始する。記憶が完全にキャッシュ・メモリ１８内に書き込まれたとき、読み出し完了指示をキャッシュ・メモリ１８内の「メール・ボックス」に置く。尚、フロント・エンド・ディレクタ１４は、読み出し完了指示を見つけるために、キャッシュ・メモリ１８をポールすることを注記しておく。ポールしているフロント・エンド・ディレクタ１４の１つが読み出し完了指示を検出した場合、このフロント・エンド・ディレクタ１４は、この時点ではキャッシュ・メモリ１８内に記憶されている要求データの、ホスト・コンピュータ／サーバ１２への転送を完了する。
【０００８】
【発明が解決しようとする課題】
メールボックスおよびポーリングを使用すると、ホスト・コンピュータ／サーバ１２およびディスク・ドライブ・バンク２２間でデータを転送する時間が必要となるため、インターフェースの動作帯域幅の減少を招くことになる。
【０００９】
【課題を解決するための手段】
本発明によれば、システム・インターフェースを提供する。インターフェースは、複数の第１ディレクタ・ボードを含む。第１ディレクタ・ボードの各々は、（ｉ）複数の第１ディレクタと、（ｉｉ）第１ディレクタ・ボードのかかる１つの上の第１ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチとを有する。複数の第２ディレクタ・ボードが設けられている。第２ディレクタ・ボードの各１つは、（ｉ）複数の第２ディレクタと、（ｉｉ）第２ディレクタ・ボードのかかる１つの上の第２ディレクタに結合されている入出力ポートと、１対の出入力ポートとを有するクロスバー・スイッチとを有する。キャッシュ・メモリを有するデータ転送部が設けられている。キャッシュ・メモリは複数の第１および第２ディレクタに結合されている。メッセージ・ネットワークが設けられており、かかるネットワークは、データ転送部とは独立して動作する。第１および第２ディレクタは、メッセージ・ネットワークを通じて第１ディレクタおよび第２ディレクタ間を通過するメッセージに応答して、第１ディレクタおよび第２ディレクタ間のデータ転送を制御し、第１ディレクタおよび第２ディレクタ間のデータ転送を容易にする。データは、データ転送部内のキャッシュ・メモリを通過する。
【００１０】
一実施形態では、ディレクタの各１つは、第１ディレクタのかかる１つの入力とキャッシュ・メモリとの間に結合されているデータ・パイプと、メッセージ・ネットワークと第１ディレクタのかかる１つとの間でメッセージを転送するコントローラとを含む。
【００１１】
一実施形態では、ディレクタの各１つは、第１ディレクタのかかる１つの入力とキャッシュ・メモリとの間に結合されているデータ・パイプと、マイクロプロセッサとを含む。コントローラが、マイクロプロセッサおよびデータ・パイプに結合され、メッセージ・ネットワークと第１ディレクタのかかる１つとの間におけるメッセージ転送を制御し、かつ第１ディレクタのかかる１つの入力とキャッシュ・メモリとの間でデータを制御する。
【００１２】
本発明のこれらおよびその他の特徴は、以下の詳細な説明を添付図面と共に読むことによって、一層容易に明らかとなろう。
【００１３】
【発明の実施の形態】
これより図２を参照し、システム・インターフェース１６０を介してホスト・コンピュータ／サーバ１２０とディスク・ドライブ・バンク１４０との間でデータを転送するデータ記憶システム１００を示す。図示のように、システム・インターフェース１６０は、ポート１２３1〜１２３32を介してホスト・コンピュータ／サーバ１２０に結合されている、ここでは３２個の、複数のフロント・エンド・ディレクタ１８０1〜１８０32、ポート１２３33〜１２３64を介してディスク・ドライブ・バンク１４０に結合されている複数のバック・エンド・ディレクタ２００1〜２００32、グローバル・キャッシュ・メモリ２２０を有し、複数のフロント・エンド・ディレクタ１８０1〜１８０16およびバック・エンド・ディレクタ２００1〜２００16に結合されているデータ転送部２４０、ならびにデータ転送部２４０とは独立して動作し、複数のフロント・エンド・ディレクタ１８０1〜１８０32およびバック・エンド・ディレクタ２００1〜２００32に結合されているメッセージ・ネットワーク２６０を含む。フロント・エンド・ディレクタ１８０1〜１８０32およびバック・エンド・ディレクタ２００1〜２００32は、機能的に同様であり、マイクロプロセッサ（μＰ）２９９（即ち、中央演算装置（ＣＰＵ）およびＲＡＭ）、メッセージ・エンジン／ＣＰＵコントローラ３１４、およびデータ・パイプ３１６を含む。これらについては、図６、図７および図８と関連付けて更に詳しく説明する。しかしながら、ここでは、フロント・エンド・ディレクタ１８０1〜１８０32およびバック・エンド・ディレクタ２００1〜２００32は、メッセージ・ネットワーク２６０を通じてディレクタ１８０1〜１８０32および２００1〜２００32間で受け渡されるメッセージに応答して、ホスト・コンピュータ／サーバ１２０およびディスク・ドライブ・バンク１４０間のデータ転送を制御することを言えば十分であろう。このメッセージは、ホスト・コンピュータ／サーバ１２０およびディスク・ドライブ・バンク１４０間のデータ転送を容易にする。かかるデータは、データ転送部２４０を介してグローバル・キャッシュ・メモリ２２０を通過する。即ち、フロント・エンド・ディレクタ１８０1〜１８０32の場合、データは、ホスト・コンピュータからフロント・エンド・ディレクタ１８０1〜１８０32内のデータ・パイプ３１６を通じて、グローバル・キャッシュ・メモリ２２０に渡り、メッセージは、かかるフロント・エンド・ディレクタ１８０1〜１８０32内のメッセージ・エンジン／ＣＰＵコントローラ３１４を通過する。バック・エンド・ディレクタ２００1〜２００32の場合、データは、バック・エンド・ディレクタ２００1〜２００32から、バック・エンド・ディレクタ２００1〜２００32内のデータ・パイプ３１６を通じて、ディスク・ドライブ・バンク１４０およびグローバル・キャッシュ・メモリ２２０に渡り、メッセージはこの場合もかかるバック・エンド・ディレクタ２００1〜２００32内のメッセージ・エンジン／ＣＰＵコントローラ３１４を通過する。
【００１４】
かかる構成では、データ転送部２４０内のキャッシュ・メモリ２２０には、ディレクタのメッセージを転送する負担がかからない。むしろ、メッセージ・ネットワーク２６０が、データ転送部２４０とは独立して動作することにより、システム・インターフェース１６０の動作帯域幅が増大する。
【００１５】
動作において、まず最初にホスト・コンピュータ／サーバ１２０による読み出し要求について検討すると（即ち、ホスト・コンピュータ／サーバ１２０はディスク・ドライブ・バンク１４０からのデータを要求する）、要求は、ホスト・コンピュータ１２０内の複数、ここでは３２個のホスト・コンピュータ・プロセッサ１２１1〜１２１32の１つから、かかるホスト・コンピュータ・プロセッサ１２１1〜１２１32に接続されている１つ以上のフロント・エンド・ディレクタ１８０1〜１８０32の対に渡される。（尚、ホスト・コンピュータ１２０内において、ホスト・コンピュータ・プロセッサ１２１1〜１２１32の各々は、ここでは１対の（しかし、１対に限定される訳ではない）フロント・エンド・ディレクタ１８０1〜１８０32に結合され、それに結合されているフロント・エンド・ディレクタ１８０1〜１８０32の１つにおける障害の場合に、冗長性が得られるようになっていることを注記しておく。同様に、ディスク・ドライブ・バンク１４０は、複数、ここでは３２個のディスク・ドライブ１４１1〜１４１32を有し、各ディスク・ドライブ１４１1〜１４１32はここでは１対の（しかし、１対に限定される訳ではない）バック・エンド・ディレクタ２００1〜２００32に結合され、これらに結合されているバック・エンド・ディレクタ２００1〜２００32の１つにおける障害の場合に冗長性が得られるようになっている。）各フロント・エンド・ディレクタ１８０1〜１８０32は、マイクロプロセッサ（μＰ）２９９（即ち、中央演算装置（ＣＰＵ）およびＲＡＭ）を含み、図６および図８に関連付けて詳細に説明する。しかしながら、ここでは、マイクロプロセッサ２９９はグローバル・キャッシュ・メモリ２２０からのデータを要求することを言えば十分であろう。グローバル・キャッシュ・メモリ２２０は、図示しない、常駐キャッシュ管理テーブルを有する。各ディレクタ１８０1〜１８０32、２００1〜２００32は、常駐キャッシュ管理テーブルにアクセスすることができ、フロント・エンド・ディレクタ１８０1〜１８０32がデータ転送を要求する毎に、フロント・エンド・ディレクタ１８０1〜１８０32はグローバル・キャッシュ・メモリ２２０に問い合わせ、要求したデータがグローバル・キャッシュ・メモリ２２０内にあるか否かについて判定しなければならない。要求したデータがグローバル・キャッシュ・メモリ２２０内にある場合（即ち、読み出し「ヒット」）、フロント・エンド・ディレクタ１８０1〜１８０32、即ち、その中にあるマイクロプロセッサ２９９は、グローバル・キャッシュ・メモリ２２０のためにＤＭＡ（直接メモリ・アクセス）動作を仲介し、要求されたデータは、要求元のホスト・コンピュータ・プロセッサ１２１1〜１２１32に転送される。
【００１６】
一方、グローバル・キャッシュ・メモリ２２０内のキャッシュ管理テーブルの問い合わせの結果として、データ要求を受信したフロント・エンド・ディレクタ１８０1〜１８０32が、要求データはグローバル・キャッシュ・メモリ２２０内にないと判定した場合（即ち、「ミス」）、かかるフロント・エンド・ディレクタ１８０1〜１８０32は、要求データがディスク・ドライブ・バンク１４０内にあると結論付ける。このため、データ要求を受信したフロント・エンド・ディレクタ１８０1〜１８０32は、バック・エンド・ディレクタ２００1〜２００32の１つからのデータを要求し、かかるバック・エンド・ディレクタ２００1〜２００32がディスク・ドライブ・バンク１４０からのデータを要求するようにしなければならない。どのバック・エンド・ディレクタ２００1〜２００32がディスク・ドライブ・バンク１４０内のどのディスク・ドライブ１４１1〜１４１32を制御するかというマッピングは、起動初期化フェーズにおいて決定される。マップはグローバル・キャッシュ・メモリ２２０内に記憶されている。したがって、フロント・エンド・ディレクタ１８０1〜１８０32がグローバル・キャッシュ・メモリ２２０からのデータを要求し、要求したデータがグローバル・キャッシュ・メモリ２２０内にない（即ち、「ミス」）と判断した場合、フロント・エンド・ディレクタ１８０1〜１８０32には、ディスク・ドライブ・バンク１４０内の要求データを担当するバック・エンド・ディレクタ２００1〜２００32のグローバル・キャッシュ・メモリ２２０内のマップによっても通知される。次に、要求元のフロント・エンド・ディレクタ１８０1〜１８０32は、マップで指定されたバック・エンド・ディレクタ２００1〜２００32からディスク・ドライブ・バンク１４０内のデータを要求しなければならない。このフロント・エンド・ディレクタ１８０1〜１８０32とバック・エンド・ディレクタ２００1〜２００32の内適切な１つ（グローバル・キャッシュ・メモリ２２０内に記憶されているマップによって判定する）との間の要求は、メッセージによって行われる。このメッセージは、フロント・エンド・ディレクタ１８０1〜１８０32からメッセージ・ネットワーク２６０を通じて適切なバック・エンド・ディレクタ２００1〜２００32に到達する。尚、メッセージはグローバル・キャッシュ・メモリ２２０を通過せず（即ち、データ転送部２４０を通過しない）、代わりに別個の独立したメッセージ・ネットワーク２６０を通過することを注記しておく。このように、ディレクタ１８０1〜１８０32、２００1〜２００32間の通信は、メッセージ・ネットワーク２６０を通じて行われるのであり、グローバル・キャッシュ・メモリ２２０を通じてではない。その結果、グローバル・キャッシュ・メモリ２２０にとって貴重な帯域幅は、ディレクタ１８０1〜１８０32、２００1〜２００32間のメッセージのやりとりには用いられない。
【００１７】
したがって、グローバル・キャッシュ・メモリ２２０における「読み出しミス」時には、フロント・エンド・ディレクタ１８０1〜１８０32は、メッセージ・ネットワーク２６０を通じて、バック・エンド・ディレクタ２００1〜２００32の適切な１つにメッセージを送り、かかるバック・エンド・ディレクタ２００1〜２００32に、要求データをディスク・ドライブ・バンク１４０からグローバル・キャッシュ・メモリ２２０に転送するように命令する。完了時に、バック・エンド・ディレクタ２００1〜２００32は、要求元のフロント・エンド・ディレクタ１８０1〜１８０32に、メッセージによってデータ転送が完了したことを通知する。メッセージは、バック・エンド・ディレクタ２００1〜２００32からメッセージ・ネットワーク２６０を通じてフロント・エンド・ディレクタ１８０1〜１８０32に達する。承認信号に応答して、フロント・エンド・ディレクタ１８０1〜１８０32には、これによって、キャッシュ「読み出しヒット」が得られた場合に、前述したように、かかるフロント・エンド・ディレクタ１８０1〜１８０32が、グローバル・キャッシュ・メモリ２２０から要求元のホスト・コンピュータ・プロセッサ１２１1〜１２１32にデータを転送できることが通知される。
【００１８】
尚、要求データを担当するバック・エンド・ディレクタ２００1〜２００32が１つ以上あり得ることも注記しておく。したがって、要求データを担当するバック・エンド・ディレクタ２００1〜２００32が１つだけの場合、要求元のフロント・エンド・ディレクタ１８０1〜１８０32は、メッセージ・ネットワーク２６０を通じて、バック・エンド・ディレクタ２００1〜２００32の特定の１つのみにユニキャスト・メッセージを送る。一方、要求データを担当するバック・エンド・ディレクタ２００1〜２００32が１つよりも多い場合、フロント・エンド・ディレクタ１８０1〜１８０32の内要求元から、要求データを担当するバック・エンド・ディレクタ２００1〜２００32全てに、マルチキャスト・メッセージ（ここでは、一連のユニキャスト・メッセージとして実現する）を送る。いずれの場合でも、ユニキャストおよびマルチキャスト・メッセージ双方を用いる際、かかるメッセージはメッセージ・ネットワーク２６０を通じて受け渡されるのであり、データ転送部２４０を通じてではない（即ち、グローバル・キャッシュ・メモリ２２０を通じてではない）。
【００１９】
同様に、データを要求するホスト・コンピュータ・プロセッサ１２１1〜１２１32が１つであっても、データ読み出し動作を完了するためには、マルチキャスト（即ち、一連のユニキャスト）メッセージによって、メッセージ・ネットワーク２６０を通じて要求元のホスト・コンピュータ・プロセッサ１２１1または１つ以上のその他のホスト・コンピュータ・プロセッサ１２１1〜１２１32に承認信号を送る場合もあることを注記しておく。
【００２０】
書き込み動作について検討する。ホスト・コンピュータ１２０は、データをストレージ（即ち、ディスク・ドライブ・バンク１４０）に書き込もうとする。フロント・エンド・ディレクタ１８０1〜１８０32の１つが、ホスト・コンピュータ１２０からデータを受信し、それをグローバル・キャッシュ・メモリ２２０に書き込む。次いで、フロント・エンド・ディレクタ１８０1〜１８０32は、バック・エンド・ディレクタ２００1〜２００32がかかるキャッシュ・メモリ２２０からデータを取り出しディスク・ドライブ・バンク１４０に記憶することができると判断した場合、ある時間期間の後に、かかるデータの転送を要求する。ディスク・ドライブ・バンク１４０への転送の前に、キャッシュ・メモリ２２０内のデータには、「フレッシュ・データ」（即ち、ディスク・ドライブ・バンク１４０に転送されていないデータ、つまり、「書き込み保留」のデータ）としてのビットが添付される。したがって、ディスク・ドライブ・バンク１４０への転送前に、グローバル・キャッシュ・メモリ２２０内の同一メモリ・ロケーション（例えば、特定のバンク・アカウント）に対して多数の書き込み要求がある場合、キャッシュ・メモリ２２０内のデータは、最新データによって上書きされる。データがグローバル・キャッシュ・メモリ２２０に転送される毎に、当該転送を制御するフロント・エンド・ディレクタ１８０1〜１８０32は、転送が完了したことをホスト・コンピュータ１２０にも知らせることによって、他のデータ転送のためにホスト・コンピュータ１２０を解放する。
【００２１】
グローバル・キャッシュ・メモリ２２０内のデータをディスク・ドライブ・バンク１４０に転送する時刻となったとバック・エンド・ディレクタ２００1〜２００32が判断した場合、バック・エンド・ディレクタ２００1〜２００32は、グローバル・キャッシュ・メモリ２２０からディスク・ドライブ・バンク１４０にデータを転送し、グローバル・キャッシュ・メモリ２２０内のデータと関連付けられているタグをリセットし（即ち、データのタグを除去し）、グローバル・キャッシュ・メモリ２２０内のデータがディスク・ドライブ・バンク１４０に転送されたことを示す。尚、グローバル・キャッシュ・メモリ２２０内においてタグを除去されたデータは、新たなデータによって上書きされるまで、そこに残っていることを注記しておく。
【００２２】
次に図４および図５を参照し、電気キャビネット３００を含むシステム・インターフェース１６０を示す。電気キャビネット３００は、内部に、ここでは各々４つのフロント・エンド・ディレクタ１８０1〜１８０32を有する複数、ここでは、８つのフロント・エンド・ディレクタ・ボード１９０1〜１９０8、ここでは各々４つのバック・エンド・ディレクタ２００1〜２００32を有する、複数、ここでは、８つのバック・エンド・ディレクタ・ボード２１０1〜２１０8、および複数、ここでは、８つのメモリ・ボード２２０’を格納している。これら全体でグローバル・キャッシュ・メモリ２２０を構成する。これらのボードは、背面３０２の前側に差し込まれる。（尚、背面３０２は半平面（ｍｉｄ−ｐｌａｎｅ）プリント回路ボードであることを注記しておく。）背面３０２の後ろ側に差し込まれるのは、メッセージ・ネットワーク・ボード３０４1、３０４2である。背面３０２の後ろ側は、図２ないし図５には示されていない、アダプタ・ボードが差し込まれている。これらは、図２に示すように、背面３０２の後ろ側に差し込まれたボードを、コンピュータ１２０およびディスク・ドライブ・バンク１４０と結合する。即ち、端的に再度図２を参照すると、図示しないＩ／Ｏアダプタが、フロント・エンド・ディレクタ１８０1〜１８０32の各１つおよびホスト・コンピュータ１２０間に結合され、図示しないＩ／Ｏアダプタが、バック・エンド・ディレクタ２００1〜２００32の各１つおよびディスク・ドライブ・バンク１４０の間に結合されている。
【００２３】
次に図６を参照すると、背面３０２に差し込まれた、ディレクタ・ボード１９０1〜１９０8、２１０1〜２１０8およびグローバル・キャッシュ・メモリ２２０、ならびに、ホスト・コンピュータ１２０と共に、図示しないＩ／Ｏアダプタ・ボードを介して同様に背面３０２に差し込まれた、ディスク・ドライブ・バンク内のディスク・ドライブ１４１1〜１４１32を含むシステム・インターフェース１６０が示されている。メッセージ・ネットワーク２６０（図２）は、メッセージ・ネットワーク・ボード３０４1および３０４2を含む。メッセージ・ネットワーク・ボード３０４1および３０４2の各１つは、その構造が同一である。１対のメッセージ・ネットワーク・ボード３０４1および３０４2は、冗長性およびメッセージ負荷の均衡化のために用いられる。したがって、各メッセージ・ネットワーク・ボード３０４1、３０４2は、コントローラ３０６（即ち、メッセージ・ネットワーク・ボード３０４1、３０４2の一方、ここではボード３０４1について図７に示すように、ＣＰＵ、システム・コントローラ・インターフェース、およびメモリから成る初期化および診断プロセッサ）、およびクロスバー・スイッチ部３０８（例えば、ここでは４つのスイッチ３０８1〜３０８4で構成されたスイッチング・ファブリック）を含む。
【００２４】
再度図６を参照すると、ディレクタ・ボード１９０1〜２１０8の各１つは、先に注記したように、４つのディレクタ１８０1〜１８０32、２００1〜２００32（図２）を含む。尚、ボード当たり４つのフロント・エンド・ディレクタ１８０1〜１８０32を有するディレクタ・ボード１９０1〜１９０8をフロント・エンド・ディレクタと呼び、ボード当たり４つのバック・エンド・ディレクタ２００1〜２００32を有するディレクタ・ボード２１０1〜２１０8をバック・エンド・ディレクタと呼ぶことを注記しておく。ディレクタ１８０1〜１８０32、ディレクタ２００1〜２００32の各１つは、ＣＰＵ３１０、ＲＡＭ３１２（先に言及したマイクロプロセッサ２９９を構成する）、メッセージ・エンジン／ＣＰＵコントローラ３１４、およびデータ・パイプ３１６を含む。
【００２５】
ディレクタ・ボード１９０1〜２１０8の各１つは、クロスバー・スイッチ３１８を含む。クロスバー・スイッチ３１８は、４つの入出力ポート３１９を有し、各１つが、ディレクタ・ボード１９０1〜２１０8上の４つのディレクタ１８０1〜１８０32、２００1〜２００32の対応する１つのデータ・パイプ３１６に結合されている。クロスバー・スイッチ３１８は、図６において参照番号３２１で集合的に識別されている８つの出入力ポートを有する（これらは背面３０２に差し込まれる）。フロント・エンド・ディレクタ・ボード１９１1〜１９１8上のクロスバー・スイッチ３１８は、フロント・エンド・ディレクタ・ボード１９０1〜１９０8上の４つのフロント・エンド・ディレクタ１８０1〜１８０32から選択した１つのデータ・パイプ３１６を、背面３０２および図示しないＩ／Ｏアダプタを介して、グローバル・キャッシュ・メモリ２２０に結合するために用いられる。バック・エンド・ディレクタ・ボード２１０1〜２１０8上のクロスバー・スイッチ３１８は、バック・エンド・ディレクタ・ボード２１０1〜２１０8上の４つのバック・エンド・ディレクタ２００1〜２００32から選択した１つのデータ・パイプ３１６を、背面３０２および図示しないＩ／Ｏアダプタを介して、グローバル・キャッシュ・メモリ２２０に結合するために用いられる。したがって、図２を参照すると、フロント・エンド・ディレクタ１８０1〜１８０32内のデータ・パイプ３１６は、ホスト・コンピュータ１２０およびグローバル・キャッシュ・メモリ２２０間でデータを結合し、一方バック・エンド・ディレクタ２００1〜２００32内のデータ・パイプ３１６は、ディスク・ドライブ・バンク１４０およびグローバル・キャッシュ・メモリ２２０間でデータを結合する。尚、ディレクタ１８０1〜１８０32、２００1〜２００32の各１つおよびグローバル・キャッシュ・メモリ２２０の間には、別個の二点間データ経路Ｐ1〜Ｐ64（図２）があることを注記しておく。また、背面３０２は、プリント回路ボードの１つ以上の層の上において、エッチングした導体のみで構成されているので、受動背面であることを注記しておく。即ち、背面３０２は能動構成部品を全く有していない。
【００２６】
再度図６を参照すると、ディレクタ・ボード１９０1〜２１０8の各１つはクロスバー・スイッチ３２０を含む。各クロスバー・スイッチ３２０は、４つの入出力ポート３２３を有し、４つの入出力ポート３２３の各１つは、ディレクタ・ボード１９０1〜２１０8上の４つのディレクタ１８０1〜１８０32、２００1〜２００32の対応する１つのメッセージ・エンジン／ＣＰＵコントローラ３１４に結合されている。各クロスバー・スイッチ３２０は、１対の出入力ポート３２５1、３２５2を有し、これらは背面３０２に差し込まれている。各ポート３２５1、３２５2は、それぞれ、背面３０２を介して、メッセージ・ネットワーク・ボード３０４1、３０４2の対応する１つに結合されている。フロント・エンド・ディレクタ・ボード１９０1〜１９０8上のクロスバー・スイッチ３２０は、フロント・エンド・ディレクタ・ボード１９０1〜１９０8上の４つのフロント・エンド・ディレクタ１８０1〜１８０32から選択した１つのメッセージ・エンジン／ＣＰＵコントローラ３１４と、図２のメッセージ・ネットワーク２６０との間でメッセージを結合するために用いられる。同様に、バック・エンド・ディレクタ・ボード２１０1〜２１０8は、バック・エンド・ディレクタ・ボード２１０1〜２１０8上の４つのバック・エンド・ディレクタ２００1〜２００32から選択した１つが生成するメッセージを、かかる４つのバック・エンド・ディレクタから選択した１つのメッセージ・エンジン／ＣＰＵコントローラ３１４とメッセージ・ネットワーク２６０（図２）との間で結合するために用いられる。したがって、再度図２を参照すると、ディレクタ１８０1〜１８０32、２００1〜２００32の各１つとメッセージ・ネットワーク２６０との間に別個の専用メッセージ経路を有する（各ディレクタ毎に背面３０２に対してＭ個の個別接続が必要となる。ここでＭは整数である）代わりに、ここでは、Ｍ／４個の個別接続だけで済む。このように、ディレクタ１８０1〜１８０32、２００1〜２００32および背面３０２間の接続総数は、１／４に減少する。したがって、図２および図６から、メッセージ・ネットワーク２６０（図２）は、クロスバー・スイッチ３２０およびメッセージ・ネットワーク・ボード３０４1、３０４2を含むことがわかる。
【００２７】
図３Ａに示すように、各メッセージは６４バイトの記述子であり、ソフトウエア制御の下でＣＰＵ３１０（図６）によって作成され、ＲＡＭ３１２内の送出キューに記憶される。ＲＡＭ３１２内の送出キューからメッセージを読み出し、メッセージ・ネットワーク２６０（図２）を通じて、以下で説明するＤＭＡ動作によって、１つ以上の別のディレクタに送信する場合、パケット化／パケット分解部４２８（図８）のパケット化部分において、図３Ｂに示すＭＡＣ型パケットにパケット化する。ここでは、ＮＧＩＯプロトコル仕様を用いる。パケット型には３つある。即ち、メッセージ・パケット部、承認パケット、およびメッセージ・ネットワーク・ファブリック管理パケットであり、後者は、初期化中（即ち、起動中）にメッセージ・ネットワーク・ルーティングを確立するために用いられる。図３Ｂに示すように、ＭＡＣパケットの各１つは、ソース（即ち、送信側ディレクタ）および宛先（即ち、受信側ディレクタ）アドレスを含む８バイトのヘッダ、ペイロードを有し、４バイトの巡回冗長チェック（ＣＲＣ）が末尾に位置する。承認パケット（即ち、信号）は、４バイトの承認ペイロード部を有する。メッセージ・パケットは、３２バイトのペイロード部を有する。ファブリック管理パケット（ＦＭＰ）は、２５６バイトのペイロード部を有する。ＭＡＣパケットはクロスバー・スイッチ３２０に送られる。パケットの宛先部分は、メッセージの宛先を示すために用いられ、スイッチ３２０によってデコードされ、どのポートにメッセージを導出するかについて判定を行なう。デコード・プロセスは、スイッチ３１８内のデコーダ・テーブル３２７を用い、かかるテーブルは、初期化および診断プロセッサ（コントローラ）３０６（図６）による起動中に、コントローラによって初期化される。テーブル３２７（図８）は、メッセージに対するルーティングを識別するＭＡＣパケットの宛先アドレス部分と、ディレクタ・ボード１９０1〜１９０8、２１０1〜２１０8上の４つのディレクタ１８０1〜１８０32、２００1〜２００32の１つ、またはメッセージを発信する先のメッセージ・ネットワーク・ボード３０４1、３０４2の１つとの間の関係を与える。
【００２８】
より具体的には、図６を参照すると、クロスバー・スイッチ３２０の各１つにつき、１対の出入力ポート３２５1、３２５2が設けられており、各々、１対のメッセージ・ネットワーク・ボード３０４1、３０４2の対応する１つに結合されている。したがって、メッセージ・ネットワーク・ボード３０４1、３０４2の各１つは、１６個の入出力ポート３２２1〜３２２16を有し、各１つが、図示のように、背面３０２を介して、ディレクタ・ボード１９０1〜１９０8、２１０1〜２１０8の対応する１つの出入力ポート３２５1、３２５2の対応する１つに結合されている。したがって、一例として図７のメッセージ・ネットワーク・ボード３０４1を検討すると、各スイッチ３０８1〜３０８4は、３つの結合ポート３２４1〜３２４3を含む。結合ポート３２４1〜３２４3は、図７に示すように、スイッチ３２２1〜３２２4を相互接続するために用いられる。したがって、メッセージ・ネットワーク・ボード３０４1を検討すると、図示のように、入出力ポート３２２1〜３２２8は、フロント・エンド・ディレクタ・ボード１９０1〜１９０8の出入力ポート３２５1に結合され、入出力ポート３２２9〜３２２16は、バック・エンド・ディレクタ・ボード２１０1〜２１０8の出入力ポート３２５1に結合されている。同様に、メッセージ・ネットワーク・ボード３０４2を検討すると、その入出力ポート３２２1〜３２２8は、背面３０２を介して、フロント・エンド・ディレクタ・ボード１９０1〜１９０8の出入力ポート３２５2に結合され、入出力ポート３２２9〜３２２16は、背面３０２を介して、バック・エンド・ディレクタ・ボード２１０1〜２１０8の出入力ポート３２５2に結合されている。
【００２９】
前述のように、メッセージ・ネットワーク・ボード３０４1、３０４2の各１つは、図６および図７に示すように、プロセッサ３０６（図６）および４つのスイッチ３０８1〜３０８4を有するクロスバー・スイッチ部３０８を含む。スイッチ３０８1〜３０８4は、図示のように相互接続されているので、メッセージは入出力ポート３２２1〜３２２16のいずれの対の間でも通過することができる。このため、フロント・エンド・ディレクタ１８０1〜１８０32のいずれの１つからのメッセージでも、フロント・エンド・ディレクタ１８０1〜１８０32の他の１つに、および／またはバック・エンド・ディレクタ２００1〜２００32のいずれの１つにでも結合することが可能となる。同様に、バック・エンド・ディレクタ２００1〜２００32のいずれの１つからのメッセージでも、バック・エンド・ディレクタ２００1〜２００32の他の１つに、および／またはフロント・エンド・ディレクタ１８０1〜１８０32のいずれの１つにでも結合することができる。
【００３０】
前述のように、各ＭＡＣパケット（図３Ｂ）は、アドレス宛先部分およびデータ・ペイロード部分を含む。ＭＡＣヘッダは、ＭＡＣパケットの宛先を示すために用いられ、かかるＭＡＣヘッダはスイッチによってデコードされ、どのポートにＭＡＣパケットを導出すべきかについて判定を行なう。このデコード・プロセスは、スイッチ３０８1〜３０８4内のテーブルを用いる。かかるテーブルは、起動中にプロセッサ３０６によって初期化される。このテーブルは、ＭＡＣパケットの宛先を識別するＭＡＣヘッダと、メッセージ・ネットワークを通じて辿るルートとの関係を与える。したがって、初期化の後、スイッチ３２０およびスイッチ部３０８内のスイッチ３０８1〜３０８4はパケット・ルーティングを与え、これによって、ディレクタ１８０1〜１８０32、２００1〜２００32の各１つは、それ自体および他のいずれか１つのディレクタ間でメッセージを送信することができ、その際、かかる他のディレクタが同じディレクタ・ボード１９０1〜１９０8、２１０1〜２１０8上にあるか、または別のディレクタ・ボード上にあるかは無関係である。更に、ＭＡＣパケットは、図３Ｂに示すように、そのヘッダ内に追加ビットＢを有し、これによって、メッセージはメッセージ・ネットワーク・ボード３０４1またはメッセージ・ネットワーク・ボード３０４2を通過することが可能になる。通常動作の間、この追加ビットＢは、論理１および論理０間で切り替えられ、１つのメッセージが冗長メッセージ・ネットワーク・ボード３０４1、３０４2の一方を通過し、次のメッセージがメッセージ・ネットワーク・ボード３０４1、３０４2の他方を通過するようにして、システム上の負荷要求を均衡化する。しかしながら、メッセージ・ネットワーク・ボード３０４1、３０４2の一方における障害の場合、障害を発生したメッセージ・ネットワーク・ボードを交換するまで、ボード３０４1、３０４2の障害がない方のみを用いる。
【００３１】
次に図８を参照して、ディレクタ・ボード１９０1〜１９０8、２１０1〜２１０8の一例、ここでは、ディレクタ１８０1、１８０3、１８０5、１８０7を含むディレクタ・ボード１９０1を示す。ディレクタ１８０1〜１８０4の一例、ここでは、ディレクタ１８０1を詳細に示すと、ディレクタ１８０1は、データ・パイプ３１６、メッセージ・エンジン／ＣＰＵコントローラ３１４、ＲＡＭ３１２、およびＣＰＵ３１０を含み、これらは全て、図示のように、ＣＰＵインターフェース・バス３１７に結合されている。一例としてのディレクタ１８０1は、更に、ローカル・キャッシュ・メモリ３１９（ＣＰＵ３１０に結合されている）、先に図６および図７に関連付けて端的に説明した、クロスバー・スイッチ３１８、およびクロスバー・スイッチ３２０を含む。データ・パイプ３１６は、プロトコル変換器４００、四ポートＲＡＭ４０２、および四ポートＲＡＭコントローラ４０４を含み、図示のように配列されている。端的に説明すると、プロトコル変換器４００は、フロント・エンド・ディレクタ１８０1〜１８０32の場合、ホスト・コンピュータ１２０のプロトコル間、（そして、バック・エンド・ディレクタ２００1〜２００32の場合、バンク１４０内のディスク・ドライブによって用いられるプロトコル間）、およびディレクタ１８０1〜１８０3、２００1〜２００32およびグローバル・メモリ２２０（図２）間のプロトコルを変換する。即ち、ホスト・コンピュータ１２０が用いるプロトコルは、例えば、ファイバ・チャネル、ＳＣＳＩ、ＥＳＣＯＮまたはＦＩＣＯＮであり、例えば、ホスト・コンピュータ１２０の製造者によって決定され、一方システム・インターフェース１６０（図２）内部で用いられるプロトコルは、インターフェース１６０の製造者によって選択される場合がある。四ポートＲＡＭ４０２は、ＦＩＦＯであり、ＲＡＭ４０２に入力するレート・データは、ＲＡＭ４０２から出力するレート・データとは異なる場合があるため、コントローラ４０４によって制御される。ＲＡＭ４０２は４つのポートを有し、各々が１８ビット・ディジタル・ワードを処理するように構成されている。ここで、プロトコル変換器４００は、システム・インターフェース１６０（図２）のプロトコルに対して３６ビットのディジタル・ワードを生成する。このワードの１８ビット部分は、四ポートＲＡＭ４０２の１対のポートの一方に結合され、このワードの別の１８ビット部分は、四ポートＲＡＭ４０２のポート対の他方に結合されている。四ポートＲＡＭは、１対のポート４０２Ａ、４０２Ｂを有し、ポート４０２Ａ、４０２Ｂの各１つは、１８ビット・ディジタル・ワードを処理するように構成されている。ポート４０２Ａ、４０２Ｂの各１つは、独立制御可能であり、ＲＡＭ４０２内のメモリ・アレイに対して、調停は受けるが独立してアクセスすることができる。図示のように、データは、クロスバー・スイッチ３１８を介して、ポート４０２Ａ、４０２Ｂおよびキャッシュ・メモリ２２０（図２）間で転送される。
【００３２】
クロスバー・スイッチ３１８は、１対のスイッチ４０６Ａ、４０６Ｂを含む。スイッチ４０６Ａ、４０６Ｂの各１つは、４つの入出力ディレクタ側ポートＤ1〜Ｄ4（先に図６と関連付けてまとめてポート３１９として示した）、および４つの入出力メモリ側ポートＭ1〜Ｍ4、Ｍ5〜Ｍ8をそれぞれ、図示のように含む。入出力メモリ側ポートＭ1〜Ｍ4、Ｍ5〜Ｍ8は、先に図６に関連付けてまとめて３１７として示した。スイッチ４０６Ａのディレクタ側ポートＤ1〜Ｄ4は、図示のように、ディレクタ１８０1、１８０3、１８０5、１８０7の各１つにおける四ポートＲＡＭ４０２の４０２Ａポートに接続されている。同様に、スイッチ４０６Ｂのディレクタ側ポートは、図示のように、ディレクタ１８０1、１８０3、１８０5、１８０7の各１つにおける四ポートＲＡＭ４０２の４０２Ｂポートに接続されている。図示のように、ポートＤ1〜Ｄ4は、バスＲA1〜ＲA4上においてディレクタ１８０1、１８０3、１８０5、１８０7の内のコントローラによってスイッチ４０６Ａに供給された制御ワードに応じて、ポートＭ1〜Ｍ4に選択的に結合され、ポートＤ1〜Ｄ4は、バスＲB1〜ＲB4上においてディレクタ１８０1、１８０3、１８０5、１８０7の内のコントローラによってスイッチ４０６Ｂに供給された制御ワードに応じて、ポートＭ5〜Ｍ8に結合されている。バスＲA1〜ＲA4上の信号は要求信号である。したがって、ディレクタ１８０1、１８０3、１８０5、１８０7のいずれか１つのポート４０２Ａを、バスＲA1〜ＲA4上の要求信号に応じて、選択的に、スイッチ４０６ＡのポートＭ1〜Ｍ4のいずれか１つに結合することができる。同様に、ディレクタ１８０1〜１８０4のいずれの１つのポート４０２Ｂも、バスＲB1〜ＲB4上の要求信号に応じて選択的に、スイッチ４０６ＢのポートＭ１〜Ｍ４のいずれの１つにでも結合することができる。ディレクタ・ボード１９０1〜１９０8、２１０1〜２１０8およびグローバル・キャッシュ・メモリ２２０間の結合を図９に示す。
【００３３】
より具体的には、図２も参照すると、前述のように、ホスト・コンピュータ１２０内のホスト・コンピュータ・プロセッサ１２１1〜１２１32の各１つは、１対のフロント・エンド・ディレクタ１８０1〜１８０32に結合され、それに結合されているフロント・エンド・ディレクタ１８０1〜１８０32の１つにおける障害の場合に冗長性を与えるようにしている。同様に、ディスク・ドライブ・バンク１４０は、複数、ここでは３２個のディスク・ドライブ１４１1〜１４１32を有し、各ディスク・ドライブ１４１1〜１４１32は１対のバック・エンド・ディレクタ２００1〜２００32に結合され、それに結合されているバック・エンド・ディレクタ２００1〜２００32の１つにおける障害の場合に冗長性を与えるようにしている。したがって、一例として、ホスト・コンピュータ・プロセッサ１２１1を検討すると、かかるプロセッサ１２１1は、１対のフロント・エンド・ディレクタ１８０1、１８０2に結合されている。したがって、ディレクタ１８０1に障害が発生した場合、ホスト・コンピュータ・プロセッサ１２１1は、他のフロント・エンド・ディレクタ１８０2によってではあるが、なおもシステム・インターフェース１６０にアクセスすることができる。このように、ディレクタ１８０1、１８０2は、冗長ディレクタ対と見なされる。同様に、他の冗長フロント・エンド・ディレクタ対は、フロント・エンド・ディレクタ１８０3、１８０4；１８０5、１８０6；１８０7、１８０8；１８０9、１８０10；１８０11、１８０12；１８０13、１８０14；１８０15、１８０16；１８０17、１８０18；１８０19、１８０20；１８０21、１８０22；１８０23、１８０24；１８０25、１８０26；１８０27、１８０28；１８０29、１８０30；および１８０31、１８０32である（図２には、ディレクタ１８０31、１８０32のみを示す）。
【００３４】
同様に、ディスク・ドライブ１４１1は、１対のバック・エンド・ディレクタ２００1、２００2に結合されている。したがって、ディレクタ２００1に障害が発生した場合、ディスク・ドライブ１４１1は、他のバック・エンド・ディレクタ２００2によってではあるが、なおもシステム・インターフェース１６０にアクセスすることができる。このように、ディレクタ２００1、２００2は、冗長ディレクタ対と見なされる。同様に、他の冗長バック・エンド・ディレクタ対は、バック・エンド・ディレクタ２００3、２００4；２００5、２００6；２００7、２００8；２００9、２００10；２００11、２００12；２００13、２００14；２００15、２００16；２００17、２００18；２００19、２００20；２００21、２００22；２００23、２００24；２００25、２００26；２００27、２００28；２００29、２００30；および２００31、２００32である（図２には、ディレクタ２００31、２００32のみを示す）。更に、図９も参照すると、グローバル・キャッシュ・メモリ２２０は、図示のように、複数、ここでは８個のキャッシュ・メモリ・ボード２２０1〜２２０8を含む。更にまた、図１０を参照すると、キャッシュ・メモリ・ボードの一例、ここではボード２２０1が詳細に示されている。これについては、”Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍ”（フォールト・トレラント・メモリ・システム）と題する米国特許第５，９４３，２８７号に詳しく記載されている。この特許は、発明者がＪｏｈｎ  Ｋ．Ｗａｌｔｏｎ（ジョン  Ｋ．ウォルトン）であり、１９９９年８月２４日に発行され、本願と同じ譲受人に譲渡されている。その主題全体は、この言及により本願にも含まれるものとする。したがって、図１０に示すように、ボード２２０1は、複数、ここでは４つのＲＡＭメモリ・アレイを含み、アレイの各１つは、１対の冗長ポート、即ち、ＡポートおよびＢポートを有する。ボード自体は１６個のポート、即ち、８つ１組のＡポートＭA1〜ＭA8および８つ１組のＢポートＭB1〜ＭB8を有する。８つのＡポートの内４つ、ここではＡポートＭA1〜ＭA4は、図９に示すように、フロント・エンド・ディレクタ・ボード１９０1、１９０3、１９０5、１９０7の各々のＭ1ポートにそれぞれ結合されている。８つのＢポートの内４つ、ここではＢポートＭB1〜ＭB4は、図９に示すように、フロント・エンド・ディレクタ・ボード１９０2、１９０4、１９０6、１９０8の各々のＭ1ポートにそれぞれ結合されている。８つのＡポートの内別の４つ、ここではＡポートＭA5〜ＭA8は、図９に示すように、バック・エンド・ディレクタ・ボード２１０1、２１０3、２１０5、２１０7の各々のＭ1ポートにそれぞれ結合されている。８つのＢポートの内別の４つ、ここではＢポートＭB5〜ＭB8は、図９に示すように、バック・エンド・ディレクタ・ボード２１０2、２１０4、２１０6、２１０8の各々のＭ1ポートにそれぞれ結合されている。
【００３５】
一例として、４つのＡポートＭA1〜ＭA4について検討すると、４つのＡポートＭA1〜ＭA4の各１つは、論理ネットワーク２２１1Aを通じて、メモリ・アレイのいずれか１つのＡポートに結合することができる。したがって、ポートＭA1について検討すると、かかるポートは、４つのメモリ・アレイのＡポートに結合することができる。同様に、４つのＡポートＭA5〜ＭA8について検討すると、４つのＡポートＭA5〜ＭA8の各１つは、論理ネットワーク２２１1Bを通じて、メモリ・アレイのいずれか１つのＡポートに結合することができる。同様に、４つのＢポートＭB1〜ＭB4について検討すると、４つのＢポートＭB1〜ＭB4の各１つは、論理ネットワーク２２１1Bを通じて、メモリ・アレイのいずれか１つのＢポートに結合することができる。同様に、４つのＢポートＭB5〜ＭB8について検討すると、４つのＢポートＭB5〜ＭB8の各１つは、論理ネットワーク２２１2Bを通じて、メモリ・アレイのいずれか１つのＢポートに結合することができる。したがって、ポートＭB1について検討すると、かかるポートは、４つのメモリ・アレイのＢポートに結合することができる。このように、いずれかのフロント・エンド・ディレクタ１８０1〜１８０32またはバック・エンド・ディレクタ２００1〜２００32からのデータおよび制御が、メモリ・ボード上の４つのメモリ・アレイの各１つに到達することができる経路は、２系統ある。つまり、メモリ・ボード上には、８組の冗長ポート、即ち、ポートＭA1、ＭB1；ＭA2、ＭB2；ＭA3、ＭB3；ＭA4、ＭB4；ＭA5、ＭB5；ＭA6、ＭB6；ＭA7、ＭB7；ＭA8、ＭB8がある。更に、前述のように、ディレクタの各１つは、１対の冗長ポート、即ち、４０２Ａポートおよび４０２Ｂポート（図８）を有する。したがって、冗長ディレクタの各対毎に、当該対内のディレクタの一方のＡポート（即ち、ポート４０２Ａ）は、冗長メモリ・ポート対の一方に接続され、かかる対におけるディレクタの他方のＢポート（即ち、４０２Ｂ）は、冗長メモリ・ポート対の他方に接続される。
【００３６】
即ち、図１１を参照すると、一例として冗長ディレクタ対が示されており、ここでは、例えば、フロント・エンド・ディレクタ１８０1およびフロント・エンド・ディレクタ１８０2とする。最初に注記すべきは、各冗長ディレクタ対におけるディレクタ１８０1、１８０2は、それぞれ異なるディレクタ・ボード、ここでは１９０1、１９０2上になければならないということである。したがって、ここでは、フロント・エンド・ディレクタ・ボード１９０1〜１９０8は、その上に、フロント・エンド・ディレクタ１８０1、１８０3、１８０5、１８０7；フロント・エンド・ディレクタ１８０2、１８０4、１８０6、１８０8；フロント・エンド・ディレクタ１８０9、１８０11、１８０13、１８０15；フロント・エンド・ディレクタ１８０10、１８０12、１８０14、１８０16；フロント・エンド・ディレクタ１８０17、１８０19、１８０21、１８０23；フロント・エンド・ディレクタ１８０18、１８０20、１８０22、１８０24；フロント・エンド・ディレクタ１８０25、１８０27、１８０29、１８０31；フロント・エンド・ディレクタ１８０18、１８０20、１８０22、１８０24を有する。したがって、ここでは、バック・エンド・ディレクタ・ボード２１０1〜２１０8は、その上に、バック・エンド・ディレクタ２００1、２００3、２００5、２００7；バック・エンド・ディレクタ２００2、２００4、２００6、２００8；バック・エンド・ディレクタ２００9、２００11、２００13、２００15；バック・エンド・ディレクタ２００10、２００12、２００14、２００16；バック・エンド・ディレクタ２００17、２００19、２００21、２００23；バック・エンド・ディレクタ２００18、２００20、２００22、２００24；バック・エンド・ディレクタ２００25、２００27、２００29、２００31；バック・エンド・ディレクタ２００18、２００20、２００22、２００24を有する。
【００３７】
このように、図１０に示すフロント・エンド・ディレクタ１８０1は、ここでは、フロント・エンド・ディレクタ・ボード１９０1上にあり、図１１に示すその冗長フロント・エンド・ディレクタ１８０2は、別のフロント・エンド・ディレクタ・ボード、ここでは例えば、フロント・エンド・ディレクタ・ボード１９０2上にある。前述のように、四ポートＲＡＭ４０２のポート４０２Ａ（即ち、先に述べたＡポート）は、クロスバー・スイッチ３１８のスイッチ４０６Ａに接続され、四ポートＲＡＭ４０２のポート４０２Ｂ（即ち、先に述べたＢポート）は、クロスバー・スイッチ３１８のスイッチ４０６Ｂに接続されている。冗長ディレクタ１８０2も同様であるが、ディレクタ１８０1のスイッチ４０６ＡのポートＭ1〜Ｍ4は、図示のように、グローバル・キャッシュ・メモリ・ボード２２０1〜２２０4のＭA1ポートに接続されており、その冗長ディレクタ１８０2に対して、スイッチ４０６ＡのポートＭ1〜Ｍ4は、図示のように、グローバル・キャッシュ・メモリ・ボード２２０1〜２２０4の冗長ＭB1ポートに接続されている。
【００３８】
クロスバー・スイッチ３１８（図８）について更に詳しく言及すると、前述のように、ディレクタ・ボード１９０1〜２１０8の各１つは、かかるスイッチ３１８を有し、かかるスイッチ３１８は、１対のスイッチ４０６Ａ、４０６Ｂを含む。スイッチ４０６Ａ、４０６Ｂの各１つは、その構造が同一であり、その一例として、ここではスイッチ４０６Ａを図１２に詳細に示す。つまり、スイッチ４０６Ａは、ディレクタ・ボードの一例１９０1に関連して説明したように、４つの入出力ディレクタ側ポートＤ1〜Ｄ4を含む。したがって、図８に示すディレクタ・ボード１９０1では、スイッチ４０６Ａの４つの入出力ディレクタ側ポートＤ1〜Ｄ4は、各々、ディレクタ・ボード１９０1上のディレクタ１８０1、１８０3、１８０5、１８０7の対応する１つのポート４０２Ａに結合されている。
【００３９】
再度図１２を参照すると、スイッチの一例４０６Ａは、複数、ここでは４個のスイッチ部４３０1〜４３０4を含む。スイッチ部４３０1〜４３０4の各１つは、その構造が同一であり、入出力ディレクタ側ポートＤ1〜Ｄ4の対応する１つと、出入力メモリ側ポートＭ1〜Ｍ4の対応する１つとの間に、図示のようにそれぞれ結合されている。（尚、スイッチ４０６Ｂ（図８）の出入力メモリ側ポートは、図示のように、ポートＭ5〜Ｍ8として示されていることは認められよう。また、スイッチ４０６Ａは、ディレクタ１８０1、１８０3、１８０5、１８０7（図８）における四ポート・コントローラ４０４からのバスＲA1〜ＲA4上の要求信号に応答し、スイッチ４０６Ｂは、同様に、ディレクタ１８０1、１８０3、１８０5、１８０7内のコントローラ４０４からのバスＲB1〜ＲB4上の要求信号に応答することも理解されよう）。即ち、ディレクタ１８０1のコントローラ４０４は、バスＲA1またはバスＲB1上に要求信号を生成する。同様に、ディレクタ１８０3のコントローラ４０４は、バスＲA2またはバスＲB2上に要求信号を生成し、ディレクタ１８０5のコントローラ４０４は、バスＲA3またはバスＲB3上に要求信号を生成し、ディレクタ１８０7のコントローラ４０４は、バスＲA4またはバスＲB4上に要求信号を生成する。
【００４０】
一例としてスイッチ部４３０1について検討すると、かかるスイッチ部４３０1は、図１２では、バスＲA1上の要求信号を供給されるＦＩＦＯ４３２を含むものとして示されている。（尚、スイッチ４３０2〜４３０4内の、図示しない、ＦＩＦＯには、それぞれ、要求信号ＲA2〜ＲA4が供給されることは理解されよう）。また、スイッチ部４０６1は、要求発生部４３４、アービタ４３６、およびセレクタ４４２、４４６も含み、全て図示のように配列されている。バスＤＭ１〜ＤＭ４上のメモリ側ポートＭ1〜Ｍ4におけるデータが、セレクタ４４６への入力として供給される。また、セレクタ４４６には、ＦＩＦＯ４３２に記憶されている要求信号ＲA1に応答して、バス４４９上に要求発生器によって生成された制御信号も供給される。バス４４９上の制御信号は、セレクタ４４６に、ディレクタ側ポートＤ1に結合すべきメモリ側ポートＭ1〜Ｍ4の１つを示す。他のスイッチ部４３０2〜４３０4も、それぞれ、ディレクタ側ポートＤ1〜Ｄ4およびメモリ側ポートＭ1〜Ｍ4については、同様に動作する。
【００４１】
尚、ポートＤ1におけるワードのデータ部分（即ち、バスＤＤ１上のワード）は別のスイッチ部４３０2〜４３０4にも結合されていることを注記しておく。更に、ポートＤ2〜Ｄ4におけるワードのデータ部分（即ち、それぞれ、バスＤＤ２〜ＤＤ４上のワード）は、図示のように、スイッチ部４３０1〜４３０4に供給されることも注記しておく。即ち、スイッチ部４３０1〜４３０4の各１つは、図示のように、ポートＤ1〜Ｄ4におけるワードのデータ部分（即ち、バスＤＤ１〜ＤＤ４）を有する。また、ポートＭ１におけるワードのデータ部分（即ち、バスＤＭ１上のワード）は他のスイッチ部４３０2〜４３０4にも結合されていることを注記しておく。更に、ポートＭ2〜Ｍ4におけるワードのデータ部分（即ち、それぞれ、バスＤＭ２〜ＤＭ４上のワード）は、図示のように、スイッチ部４３０2〜４３０4に供給されることも注記しておく。即ち、図示のように、スイッチ部４３０1〜４３０4の各１つは、ポートＭ1〜Ｍ4（即ちバスＤＭ１〜ＤＭ４）上のワードのデータ部分を有する。
【００４２】
以下で更に詳しく説明するが、バスＲA1上のスイッチ部４３０1に対する要求は、ディレクタ１８０1からの要求であり、ディレクタ１８０1のポート４０２Ａ（ディレクタ側ポートＤ1）に結合するスイッチ４３０1内の４つのポートＭ1〜Ｍ4の１つを識別する。したがって、ディレクタ１８０1のポート４０２Ａは、バスＲA1上のデータに応じて、選択的に、メモリ側ポートＭ1〜Ｍ4の１つに結合することができる。同様に、スイッチ部４３０2〜４３０4それぞれに対するバスＲA2、ＲA3、ＲA4上の要求は、それぞれ、ディレクタ１８０3、１８０5、１８０7からの要求であり、ディレクタ１８０3、１８０5、１８０7のポート４０２Ａに結合するスイッチ４３０1〜４３０4内の４つのポートＭ1〜Ｍ4の１つをそれぞれ識別する。
【００４３】
より具体的には、要求ＲA1は、四ポートＲＡＭコントローラ４４０（図８）によって生成される毎に、受信ＦＩＦＯ４３２に記憶される。要求発生器４３４は、ＦＩＦＯ４３２から要求を受信し、４つのメモリ側ポートＭ1〜Ｍ4の内どの１つをディレクタ１８０1のポート４０２Ａに結合するか判断する。メモリ側ポートＭ1〜Ｍ4に対するこれらの要求は、それぞれ、ラインＲＡ１，１〜ＲＡ１，４上に生成される。したがって、ラインＲＡ１，１（即ち、メモリ側ポートＭ1に対する要求）はアービタ４３６に供給され、ラインＲＡ２，１、ＲＡ３，１、ＲＡ４，１上の（ディレクタ１８０3、１８０5、１８０7のポート４０２Ａに結合されている）スイッチ部４３０2〜４３０4からの要求も、それぞれ、図示のようにアービタ４３６に供給される。アービタ４３６は、メモリ側ポートＭ１に対する多数の要求を、先着順で解決する。次いで、アービタ４３６は、メモリ側ポートＭ1に結合するディレクタ１８０1、１８０3、１８０5、１８０7の１つを示す制御信号を、バス４３５上に生成する。
【００４４】
バス４３５上の制御信号は、セレクタ４４２に供給される。また、セレクタ４４２には、ポートＤ1におけるデータのデータ部分（即ち、データ・バスＤＤ１上のデータ）が、図示のように、ポートＤ2〜Ｄ4におけるデータのデータ部分、即ち、それぞれ、データ・バスＤＤ２〜ＤＤ４上のデータと共に供給される。したがって、バス４３５上の制御信号によって、セレクタ４４２は、その出力に、アービタ４３６によってメモリ側ポートＭ1へのアクセスを付与された、ディレクタ１８０1、１８０3、１８０5、１８０7の１つからのデータ・バスＤＤ１〜ＤＤ４を結合する。セレクタ４４２の選択された出力は、メモリ側ポートＭ1に結合される。尚、アービタ４３６がラインＲＡ１，１、ＲＡ２，１、ＲＡ３，１、ＲＡ４，１上の信号を通じて要求を受信したとき、アービタ４３６によって、それぞれラインＡＫ１，１、ＡＫ１，２、ＡＫ１，３、ＡＫ１，４上の承認信号を通じて承認がそれぞれ返送されることを注記しておく。かかる信号は、それぞれ、スイッチ部４３０1、４３０2、４３０3、４３０4における要求発生器４３４に供給される。
【００４５】
このように、いずれかのポートＤ1〜Ｄ4上のデータをポートＭ1〜Ｍ4の１つに結合し、先に図２に関連付けて説明した二点間データ経路Ｐ1〜Ｐ64を実施することができる。
【００４６】
再度図８を参照すると、ホスト・コンピュータ１２０（図２）からのデータは、多くのホスト・コンピュータ・プロセッサ１２１1〜１２１32からバッチでシステム・インターフェース１６０（図２）に提示される。つまり、ホスト・コンピュータ・プロセッサ１２１1〜１２１32からのデータは、ディレクタ１８０1〜１８０32に提示される際に、互いにインターリーブされる。各ホスト・コンピュータ・プロセッサ１８０1〜１８０32（即ち、ソース）からのバッチは、プロトコル変換器４００によって、タグが付けられる。更に特定すれば、ファイバ・チャネル接続の場合は、Ｔａｃｈｅｏｎ  ＡＳＩＣによる。コントローラ４０４には、初期化の間に参照テーブルが形成されている。データがプロトコル変換器４００に入来し、コントローラ４０４の制御の下で四ポートＲＡＭ４２０に入力されると、プロトコル変換器４００は、コントローラに、データが四ポートＲＡＭ４２０内にあることを知らせる。コントローラ４０４は、その参照テーブルのコンフィギュレーションを見て、データを記憶するグローバル・キャッシュ・メモリ２２０のロケーション（例えば、キャッシュ・メモリ・ボード２２０1〜２２０8）を決定する。こうして、コントローラ４０４は適切なバスＲA1、ＲB1上に要求信号を生成し、次いで四ポートＲＡＭ４０２に、四ポートＲＡＭ４０２内の特定のロケーションにデータ・ブロックがあることを知らせ、それをグローバル・キャッシュ・メモリ２２０内の前述の特定のロケーションに移動する。また、クロスバー・スイッチ３１８は、バスＲA2、ＲB2、ＲA3、ＲB3、ＲA4、ＲB4上にそれぞれ要求信号を形成することによって、当該特定のディレクタ・ボード１９０1上のディレクタ１８０3、１８０5、１８０7における他のコントローラ４０４のどれが要求しているかを調べることができる。多数の要求の調停は、図１２に関連付けて先に説明したように、アービタ４３６によって処理される。
【００４７】
再度図８を参照すると、ディレクタの一例１８０1は、メッセージ・エンジン／ＣＰＵコントローラ３１４を含むものとして示されている。メッセージ・エンジン／ＣＰＵコントローラ３１４は、フィールド・プログラム可能ゲート・アレイ（ＦＰＧＡ）内に内蔵されている。メッセージ・エンジン（ＭＥ）３１５は、図示のように、ＣＰＵバス３１７およびＤＭＡ部４０８に結合されている。メッセージ・エンジン（ＭＥ）３１５は、直接メモリ・アクセス（ＤＭＡ）部４０８、メッセージ・エンジン（ＭＥ）状態機械４１０、送信バッファ４２４および受信バッファ４２４、ＭＡＣパケット化／パケット分解部４２８、送信および受信ポインタ・レジスタ４２０、ならびにパリティ発生器３２１を含む。ＤＭＡ部４０８は、図示してあり図１３と関連付けて以下に詳細に説明するＤＭＡ送信部４１８、および図示してあり図１４と関連付けて以下に詳細に説明するＤＭＡ受信部４２４を含み、これらの各々は、図８に示すように、ＣＰＵバス・インターフェース３１７に結合されている。メッセージ・エンジン（ＭＥ）３１５は、ＤＭＡ送信部４１８に結合されている送信データ・バッファ４２２、ＤＭＡ受信部４２１に結合されている受信データ・バッファ４２４、アドレス・デコーダ４０１を介してＣＰＵバス３１７に結合されているレジスタ４２０、送信データ・バッファ４２２に結合されている前述のパケット化／パケット分解部４２８、図示のような受信データ・バッファ４２４およびクロスバー・スイッチ３２０、ならびに送信データ・バッファ４２２およびクロスバー・スイッチ３２０間に結合されているパリティ発生器３２１を含む。即ち、パケット化部分４２８Ｐは、メッセージ・ペイロードを、送信データ・バッファ４２２からクロスバー・スイッチ３２０に受け渡されるＭＡＣパケット（図３Ｂ）にパケット化するために用いられ、パケット分解部分４２８Ｄは、ＭＡＣパケットを、クロスバー・スイッチ３２０から受信データ・バッファ４２４に受け渡されるメッセージ・ペイロードに分解するために用いられる。パケット化は、ここでは、ＭＡＣコアによって行われ、ＭＡＣコアは、ＭＡＣパケットを構築し、前述のように、メッセージを送信および受信するディレクタを示すソース・アドレスおよび宛先アドレス指定、ならびに巡回冗長チェック（ＣＲＣ）というようなものを、各メッセージに添付する。また、メッセージ・エンジン（ＭＥ）３１５は、受信書き込みポインタ４５０、受信読み出しポインタ４５２、送信書き込みポインタ４５４、および送信読み出しポインタ４５６も含む。
【００４８】
次に図１５乃至図２１を参照しながら、ディレクタ１８０1〜１８０32、２００1〜２００32からのメッセージの送信、およびディレクタ２１０1〜２１０32によるメッセージの受信（ここでは、図８に示すディレクタ１８０1を例にとる）について説明する。最初にメッセージの送信について検討するために、図８および図１５乃至図１８を参照する。まず、前述のように、起動時に、メッセージ・ネットワーク・ボード３０４1、３０４2双方のコントローラ３０６（図６）は、スイッチ部３０８内のスイッチ３０８1〜３０８4およびクロスバー・スイッチ３２０に対して先に述べたメッセージ・ルーティング・マッピングを初期化する。前述のように、要求はホスト・コンピュータ１２０によって行われる。この要求は、プロトコル変換器４００に送られる。プロトコル変換器４００は、ＣＰＵバス３１７およびバッファ３０１を介してマイクロプロセッサ２９９に要求を送る。例示のディレクタ１８０1のマイクロプロセッサ２９９内にあるＣＰＵ３１０（図８）が、メッセージをディレクタ１８０2〜１８０32、２００1〜２００32の別の１つに送信すると判断した場合（例えば、ＣＰＵ３１０は、グローバル・キャッシュ・メモリ２２０（図２）において「ミス」があったと判定し、図２に関連付けて先に説明したように、バック・エンド・ディレクタ２００1〜２００32の適切な１つにメッセージを送ろうとする）、ＣＰＵ３１０は６４バイトの記述子（図３Ａ）を構築する。この記述子は、ディスク・ドライブ・バンク１４０（図２）から読み出すデータのバッチのアドレスを示す３２バイトのメッセージ・ペイロード（ステップ５００）、および８バイト・ビット・ベクトルによって、メッセージの宛先、即ち、メッセージを受信するディレクタまたは複数のディレクタを示す３２バイトのコマンド・フィールド（ステップ５１０）を含む。コマンド・フィールドの８バイト部分は、メッセージを受信するディレクタまたは複数のディレクタを示す。即ち、８バイト部分における６４ビットの各１つは６４個のディレクタの１つに対応する。ここでは、論理１のビットは、対応するディレクタがメッセージを受信することを示し、論理０は、かかる対応するディレクタがメッセージを受信しないことを示す。したがって、８バイト・ワードが論理１ビットを１つよりも多く有する場合、１つよりも多いディレクタが同じメッセージを受信することになる。以下で説明するが、同じメッセージは並行にかかるディレクタの全てに送られるのではなく、逆に同じメッセージは順次かかるディレクタ全てに送られる。いずれにしても、図１５乃至図１８に示すように、得られる６４バイト記述子は、ＣＰＵ３１０（図８）によって発生され（ステップ５１２）、ＲＡＭ３１２に書き込まれる（ステップ５１４）。
【００４９】
より具体的には、図８に示すように、ＲＡＭ５１２は、１対のキュー、送出キューおよび受信キューを含む。ＲＡＭ３１２は、図示のように、エラー検出および訂正（ＥＤＡＣ）／メモリ制御部３０３を介して、ＣＰＵバス３１７に結合されている。一方、ＣＰＵ３１０は、メッセージ・エンジン（ＭＥ）３１５の状態機械４１０（図８）に、記述子がＲＡＭ３１２に書き込まれたことを示す。尚、メッセージ・エンジン（ＭＥ）３１５は、図８に示すように、受信書き込みポインタまたはカウンタ４５０、受信読み出しポインタまたはカウンタ４５２、送出書き込みポインタまたはカウンタ４５４、および送出読み出しポインタまたはカウンタ４５４も含むことも注記しておく。４つのポインタ４５０、４５２、４５４、４５６は全て、起動時にゼロにリセットされる。これも先に記したことであるが、メッセージ・エンジン／ＣＰＵコントローラ３１４は、受信データ・バッファ４２４（図８）に結合されているパケット化／パケット分解部４２８のパケット分解部分４２８Ｄ、および送信データ・バッファ４２２（図８）に結合されているパケット化／パケット分解部４２８のパケット化部分４２８Ｐも含む。したがって、図１５乃至図１８を再度参照すると、ＣＰＵ３１０がＲＡＭ３１２に記述子が書き込まれたことを示し、既に送る準備ができているとき、ＣＰＵ３１０は送出書き込みポインタを増分し、レジスタ・デコーダ４０１を介してこれを送出書き込みポインタ・レジスタ４５４に送る。したがって、送出書き込みポインタ・レジスタ４５４の内容は、未だ送られていない、ＲＡＭ３１２の送出キュー３１２Ｓ内のメッセージ数を示す。状態機械４１０は、送出書き込みポインタ・レジスタ４５４および送出読み出しポインタ・レジスタ４５６をステップ５１８においてチェックする。前述のように、送出書き込みポインタ・レジスタ４５４および送出読み出しポインタ・レジスタ４５６の双方は、起動中に、最初にゼロにリセットされる。したがって、送出読み出しポインタ・レジスタ４５６および送出書き込みポインタ・レジスタ４５４が異なる場合、状態機械は、ＲＡＭ３１２内にメッセージがあり、かかるメッセージは送信の準備ができていることを知る。メッセージを送る場合、状態機械４１０は、記憶されている６４バイトの記述子を図８のＤＭＡ送信部４１８を介してメッセージ・エンジン（ＭＥ）３１５へ送信開始する（ステップ５２０、５２２）。記述子は、送出読み出しポインタ４５６が送出書き込みポインタ４５４と等しくなるまで、ＲＡＭ３１２内の送出キュー３１２Ｓから送られる。
【００５０】
ステップ５１０に関連して先に説明したように、ＣＰＵ３１０は、メッセージを受信するディレクタまたは複数のディレクタを示す宛先ベクトルを発生する。また、先に示したように、コマンド・フィールドは３２バイトであり、その内８バイトは、メッセージを受信する６４個のディレクタの対応する１つを表すビットを有する。例えば、図１８Ａを参照すると、ビット位置１〜６４の各々は、ディレクタ１８０1〜１８０32、２００1〜２００31をそれぞれ表す。ここで、この例では、論理１はビット位置１にしかないので、８バイト・ベクトルは、宛先ディレクタがフロント・エンド・ディレクタ１８０1のみであることを示す。図１８Ｂの例では、論理１はビット位置２にしかないので、８バイト・ベクトルは、宛先ディレクタがフロント・エンド・ディレクタ１８０2のみであることを示す。図１８Ｃの例では、論理１は１つのビット位置よりも多いので、メッセージの宛先は１つよりも多いディレクタである。即ち、マルチキャスト・メッセージである。図１８Ｃの例では、論理１があるのはビット位置２、３、６３、６４のみである。したがって、８バイト・ベクトルは、宛先ディレクタがフロント・エンド・ディレクタ１８０2、１８０3およびバック・エンド・ディレクタ２００31、２００32のみであることを示す。メッセージ・エンジン（ＭＥ）３１５内のレジスタ部４２０（図８）のレジスタには、マスク・ベクトルが記憶されており、使用できない可能性があるディレクタまたは複数のディレクタを識別する（例えば、不良ディレクタまたはその時点でシステム内に存在しないディレクタ）。ステップ５２４、５２５は、ユニキャスト送信のためにある。メッセージ・エンジン（ＭＥ）３１５の状態機械４１０が、レジスタ４２０内に記憶されている送信ベクトル・マスク（図１８Ｄ）を検査することによって、ディレクタが使用可能であることを示した場合、メッセージ・エンジン（ＭＥ）３１５は、先に論じたように、メッセージ・ペイロードをＭＡＣヘッダおよびＣＲＣによって、パケット化部分４２８Ｐの内側でカプセル化する（ステップ５２６）。マスクの一例を図１８Ｄに示す。このマスクは、６４個のビット位置を有し、ディレクタの各１つに対して１つずつとなっている。したがって、図１８Ａないし図１８Ｃに関連付けて先に説明した宛先ベクトルと同様に、ビット位置１〜６４は、それぞれ、ディレクタ１８０1〜１８０32、２００1〜２００32を表す。ここで、本例では、マスク内のビット位置における論理１は、表すディレクタが使用可能であることを示し、かかるビット位置における論理０は、表すディレクタが使用不可能であることを示す。ここで、図１８Ｄに示す例では、ディレクタ２００32のみが使用不可能となっている。したがって、メッセージが図１８Ｃに示すような宛先ベクトルを有する場合、宛先ベクトルが図１８Ｄのマスクを通過した後、図１８Ｅに示すように、宛先ベクトルを変更する。したがって、ディレクタ２００32はメッセージを受信しない。かかる宛先ベクトルに対するマスク変更は、重要である。何故なら、以下で説明するが、マルチキャスト上のメッセージは、順次送られるのであり、並行に送られるのではないからである。したがって、使用不可能なディレクタまたは複数のディレクタに対するメッセージ送信を排除することによって、システムのメッセージ送信効率が向上する。
【００５１】
パケット化／パケット分解部４２８（図８）のパケット化部分によってメッセージをＭＡＣパケットにパケット化した後、メッセージ・エンジン（ＭＥ）３１５はＭＡＣパケットをクロスバー・スイッチ３２０に転送し（ステップ５２８）、ＭＡＣパケットは、メッセージ・ネットワーク２６０によって、メッセージ・ネットワーク・ボード３０４1、３０４2を介して、または同一のディレクタ・ボード上でかかるディレクタ・ボード上のクロスバー・スイッチ３２０を介して宛先に導出される（ステップ５３０）。
【００５２】
図１９乃至図２１を参照しながら、メッセージ読み出し動作について説明する。即ち、ステップ６００において、ディレクタはメッセージを待つ。メッセージを受信すると、メッセージ・エンジン（ＭＥ）３１５の状態機械４１０は、パケットを受信する（ステップ６０２）。状態機械４１０は、受信ビット・ベクトル・マスク（図１８。レジスタ４２６に記憶されている）を、パケットのソース・アドレスと突き合わせてチェックする（ステップ６０４）。状態機械４１０が、メッセージが不適正なソース（即ち、障害のあるディレクタ。例えば、図１８Ｄのマスクに示す）からであると判断した場合、パケットを破棄する（ステップ６０６）。一方、状態機械４１０が、パケットが適正な即ち有効なディレクタ（即ち、ソース）からであると判断した場合、メッセージ・エンジン（ＭＥ）３１５は、パケット分解部４２８Ｄにおいて、パケットからメッセージを抜き出す（ステップ６０８）。メッセージ・エンジン（ＭＥ）３１５内の状態機械４１０は、ＤＭＡ受信動作を介した３２バイト・ペイロードの転送を開始する（ステップ６１０）。ＤＭＡは、３２バイト・メッセージを、ＲＡＭ３１２内のメモリ受信キュー３１２Ｒに書き込む（ステップ６１２）。メッセージ・エンジン（ＭＥ）３１５の状態機械４１０は、次に、受信書き込みポインタ・レジスタ４５０（ステップ６１４）を増分する。次に、ＣＰＵ３１０は、受信書き込みポインタ４５０が受信読み出しポインタ４５２と等しいか否かについてチェックする（ステップ６１６）。これらが等しい場合、かかる状態は、ＣＰＵ３１０にメッセージが受信されていないことを示す（ステップ６１８）。一方、受信書き込みポインタ４５０および受信読み出しポインタ４５２が等しくない場合、かかる状態は、ＣＰＵ３１０に、メッセージが受信されていることを示し、ＣＰＵ３１０はＲＡＭ３１２の受信キュー３１４Ｒ内のメッセージを処理し、次いでＣＰＵ３１０は受信読み出しポインタを増分し、これを受信読み出しポインタ・レジスタ４５２に書き込む。このようにして、起動中にゼロに初期化された受信読み出しポインタ４５２の内容および受信書き込みポインタ４５０の内容が等しくなるまで、メッセージはＲＡＭ３１２の受信キュー３１２Ｒに記憶される。
【００５３】
次に図２２を参照しながら、メッセージの承認処理について説明する。ステップ７００において、受信ＤＭＡエンジン４２０は、問題なく、ＲＡＭ３１２（図８）内の受信キューへのメッセージ転送を完了する。メッセージ・エンジン（ＭＥ）３１５内の状態機械４１０は、承認ＭＡＣパケットを発生し、このＭＡＣパケットを送出元ディレクタに、メッセージ・ネットワーク２６０（図２）を通じて送信する（ステップ７０２、７０４）。送出元ディレクタにおけるメッセージ・エンジン（ＭＥ）３１５は、承認ＭＡＣパケット内の１６バイトのステータス・ペイロードを抜き取り、受信ＤＭＡ動作によってかかるステータス・ペイロードを転送する（ステップ７０６）。送出元（即ち、ソース）ディレクタのＤＭＡは、ＲＡＭメモリの送出キュー３１４Ｓ内にある記述子のステータス・フィールドに書き込む（ステップ７０８）。（承認メッセージを受信した）送出元ディレクタのメッセージ・エンジン（ＭＥ）３１５の状態機械４１０は、その送出読み出しポインタ４５４を増分する（ステップ７１２）。（承認メッセージを受信した）送出元ディレクタのＣＰＵ３１０は、記述子ステータスを処理し、記述子をＲＡＭ３１２の送出キュー３１２Ｓから除去する（ステップ７１４）。尚、送出および受信キュー３１２Ｓおよび３１２Ｒは、各々、巡回キューであることを注記しておく。
【００５４】
前述のように、ＭＡＣパケットは、通常動作の間、クロスバー・スイッチ３２０内のセレクタＳによって、ハードウエアで、１対のメッセージ・ネットワーク・ボード３０４1、３０４2の一方に交互に送信される。セレクタＳは、ＭＡＣパケット（図３Ｂ）のヘッダ内にあるビットＢに応答し、かかるビットＢが１の論理状態の場合、データをメッセージ・ネットワーク・ボード４０２Ａの１つに結合し、逆の論理状態に応答して、データをメッセージ・ネットワーク・ボード４０２Ｂの別の１つに結合する。即ち、１つのメッセージがボード３０４1に送信されると、次のメッセージはボード３０４2に送信される。
【００５５】
再度図１３を参照しながら、送信ＤＭＡの一例４１８について、その詳細を示す。前述のように、記述子は、ＣＰＵ３１０（図８）によって作成された後、ＲＡＭ３１２に記憶される。前述のように、送出書き込みポインタ４５０（図８）および送出読み出しポインタ４５２が異なるカウントを有する場合、メッセージ・エンジン（ＭＥ）３１５（図８）内の状態機械４１０によって、作成した記述子はメッセージ・エンジン（ＭＥ）３１５へのＤＭＡ送信に使用可能であることの指示が与えられ、記述子のペイロードはＭＡＣパケットにパケット化され、メッセージ・ネットワーク３６０（図２）を通じて、１つ以上のディレクタ１８０1〜１８０32、２００1〜２００32に送られる。即ち、ＣＰＵ３１０が作成した記述子は、最初にローカル・キャッシュ・メモリ３１９に記憶され、後にＲＡＭ３１２内の送出キュー３１２Ｓに転送される。送出書き込みポインタ４５０および送出読み出しポインタ４５２が異なるカウントを有する場合、メッセージ・エンジン（ＭＥ）３１５の状態機械４１０は、ステップ５２０（図１５乃至図１７）に関連して先に論じたように、ＤＭＡ送信を開始する。更に、前述のように、記述子は、ＲＡＭ３１２内の送出キュー３１２Ｒに位置する。更に、前述のように、メッセージを収容した各記述子は固定サイズであり、ここでは６４バイトである。新たな未送信記述子がＣＰＵ３１０によって作成される毎に、送出キュー３１２Ｓ内の順次ロケーション即ちアドレスに順次記憶されていく。ここでは、アドレスは３２ビット・アドレスである。
【００５６】
送信ＤＭＡが開始されると、メッセージ・エンジン（ＭＥ）３１５（図８）内の状態機械４１０は、バス４１１上でキュー・アドレスを、ＤＭＡ送信部４１８（図１３）内のアドレス・レジスタ４１３に、送信書き込みイネーブル信号Ｔｘ＿ＷＥ信号と共に送る。ＤＭＡ送信部４１８は、信号Ｘｍｉｔ＿Ｂｒをアサートすることによって、ＣＰＵバス３１７を要求する。ＣＰＵバス・アービタ４１４（図８）は、バス調停を実行し、適切なときに、アービタ４１４はＣＰＵバス３１７へのアクセスをＤＭＡ送信部４１８に付与する。次に、Ｘｍｉｔ  ＣＰＵ状態機械４１９は、出力アドレス・レジスタ４０３にロードすることによって、ＣＰＵバス３１７のアドレス・バス部分３１７Ａ上に、アドレス・レジスタ４１３内にある現在使用可能なアドレスを置く。出力アドレス・レジスタ４０３にロードする前に、パリティ発生器４０５が奇数パリティを発生する。ＲＡＭ３１２の送出キュー３１２Ｓに対して、レジスタ４０３内のアドレスを、ＣＰＵバス３１７の部分３１７Ｃを通じて、適切な読み出し制御信号と共に、ＣＰＵバス３１７（図８）上に置く。ＲＡＭ３１２からのアドレスにあるデータは、ＣＰＵバス３１７のデータ・バス部分３１７Ｄを通じて、パリティ・チェッカ４１５を通過し、データ入力レジスタ４１７に達する。ＣＰＵ３１０からの制御信号は、ＣＰＵバス３１７のバス部分３１７Ｃを通じて、Ｘｍｉｔ  ＣＰＵ状態機械４１９に供給される。制御信号の１つは、要求された記述子の最新コピーがＲＡＭ３１２の送出キュー３１２Ｓ内にあるか、または未だローカル・キャッシュ・メモリ３１９内に位置するかを示す。即ち、いずれの所与のアドレスにおいても、最新記述子は最初にＣＰＵ３１０によってローカル・キャッシュ・メモリ３１９内に形成され、後にＣＰＵ３１０によってＲＡＭ３１２内のキューに転送される。したがって、同一アドレスを有する２つの記述子があるという場合もある。即ち、１つがＲＡＭ３１２にあり、１つがローカル・キャッシュ・メモリ３１９（図８）にあり、最新の記述子はローカル・キャッシュ・メモリ３１９内にある。いずれの場合でも、送信ＤＭＡ４１８は、ＲＡＭ３１２からＤＭＡ送信のために記述子を取得しなければならず、この記述子は、状態機械４１９が生成した信号４０２を用いて、送信バッファ・レジスタ４２１に記憶され、これらのレジスタ４２１にロードされる。ＣＰＵ３１０からＸｍｉｔ  ＣＰＵ状態機械４１９への制御信号は、最新の記述子がローカル・キャッシュ・メモリ３１９内にあるか否かを示す。最新の記述子がローカル・キャッシュ・メモリ３１９内にある場合、ＸｍｉｔＣＰＵ状態機械４１９は、ＲＡＭ３１２内の送出キュー３１２Ｓから丁度読み出され、レジスタ４２１に格納されているデータをセレクタ４２３に受け渡すのを禁止する。このような場合、状態機械４１９は、同じアドレス・ロケーションにおいて、別のデータ転送を実行しているはずである。次に、最新のメッセージは、ＣＰＵ３１０によって、ローカル・キャッシュ・メモリ３１９からＲＡＭ３１２内の送出キュー３１２Ｓに転送される。次に、送信メッセージ状態機械４１９は、ＣＰＵバス３１７に対する調停を再度行ない、かかるＣＰＵバス３１７が付与された後、Ｘｍｉｔ  ＣＰＵ状態機械４１９はＲＡＭ３１２から記述子を読み出す。このとき、しかしながら、ＲＡＭ３１２内の送出キュー３１２Ｓ内には、最新の記述子が得られる。そして、Ｘｍｉｔ  ＣＰＵ状態機械４１９による信号４０２のアサートに応答して、ＲＡＭ３１２内の記述子を送信バッファ・レジスタ４２１にロードする。次に、レジスタ４２１内の記述子は、セレクタ４２３を介して、Ｘｍｉｔメッセージ（ｍｓｇ）状態機械４２７の制御の下で、メッセージ・バス・インターフェース４０９に転送される。即ち、送信バッファ・レジスタ４２１内の記述子は、Ｘｍｉｔメッセージ（ｍｓｇ）状態機械４２７によって、３２ビット送信メッセージ・バス・インターフェース４０９上で送信データ・バッファ４２２（図８）に転送される。送信データ・バッファ４２２（図８）内のデータは、図１５乃至図１７のステップ５３０において説明したように、パケット化／パケット分解部４２８のパケット化部によってパケット化される。
【００５７】
図２３も参照しながら、送信ＤＭＡ４１８（図１３）を動作させる方法を更に具体的に示す。前述のように、各記述子は６４バイトである。ここで、記述子の転送は、２つのインターフェース、即ち、ＣＰＵバス３１７および送信メッセージ・インターフェース・バス４０９（図８）を介して行われる。ＣＰＵバス３１７は、６４ビット幅であり、８つの６４ビット二重ワードが６４バイトの記述子を構成する。Ｘｍｉｔ  ＣＰＵ状態機械４１９は、制御信号を発生し、これによってＲＡＭ３１２から送信バッファ・レジスタ４２１（図８）への記述子の転送が行われる。６４バイトの記述子は、ＣＰＵバス３１７上における２回の３２バイト・バースト・アクセスによって転送される。８つの二重ワードの各１つは、順次送信バッファ・レジスタ４２１（図１３）に記憶される。したがって、ステップ８００において、メッセージ・エンジン３１５の状態機械４１０は、送信ＤＭＡアドレス・レジスタ４１３に、ＲＡＭ３１２内の送出キュー３１２Ｓにおける、送信する記述子のアドレスをロードする。これを行なうには、Ｔｘ＿ＷＥ信号をアサートする。これによって、Ｘｍｉｔ  ＣＰＵ状態機械４１９をステップ８００に進め、アドレス・レジスタ４１３にロードし、ステップ８０２に進む。ステップ８０２において、Ｘｍｉｔ  ＣＰＵ状態機械４１９は、ＣＰＵ転送カウンタ４３１（図１３）に、３２バイトのカウントをロードする。これは２である。これは、ステップ８０２において、６４バイトの記述子を転送するために必要となる、３２バイトの転送回数である。Ｘｍｉｔ  ＣＰＵ状態機械４１９は、次にステップ８０４に進む。ステップ８０４において、送信ＤＭＡ状態機械４１９は、そのアドレス・レジスタ４１３にロードされたアドレスの有効性をチェックする。アドレス・レジスタ４１３にロードされたアドレスは、メモリ・アドレス・レジスタ４３５にロードされた値と突き合わせてチェックする。メモリ・アドレス・レジスタ４３５は、基底アドレスおよびＲＡＭ３１２内の送出キュー３１２Ｓのオフセットを収容する。基底アドレスおよびオフセットの和が、ＲＡＭ３１２内の送出キュー３１２Ｓに対するアドレス範囲となる。アドレス・チェック回路４３７は、アドレス・レジスタ４１３内のアドレスがＲＡＭ３１２内の送出キュー３１２Ｓの範囲内にあるか否か、常にチェックしている。アドレスが送出キュー３１２Ｓの範囲外にあることが発見された場合、ステップ４１６において、転送を中断し、このステータスをステータス・レジスタ４０４に記憶し、次いでメッセージ・エンジン３１５の状態機械４１０に戻す。アドレスの有効性チェックは、ステップ８０５において行われる。アドレスが範囲以内にある場合、即ち、有効な場合、送信ＤＭＡ状態機械４１９は、転送を実行し、ステップ８０６に進む。ステップ８０６において、送信ＤＭＡ状態機械４１９は、アービタ４１４へのＸｍｉｔ＿ＢＲ信号をアサートすることによって、ＣＰＵバス３１７を要求し、次いでステップ８０７に進む。ステップ８０７において、Ｘｍｉｔ  ＣＰＵ状態機械４１９は、それにアービタによってバスが付与されているか否か常にチェックする。ＣＰＵバス３１７が付与された場合、Ｘｍｉｔ  ＣＰＵ状態機械はステップ８０８に進む。ステップ８０８において、Ｘｍｉｔ  ＣＰＵ状態機械４１９は、アドレスおよびデータ・サイクルを発生し、本質的にＲＡＭ３１２内の送出キュー３１２Ｓからその送信バッファ・レジスタ４２１に、３２バイトの記述子を読み込む。Ｘｍｉｔ  ＣＰＵ状態機械４１９は、次にステップ８１０に進む。ステップ８１０において、Ｘｍｉｔ  ＣＰＵ状態機械４１９は、そのバッファ・レジスタ４２１に読み込んだ記述子をロードし、ステップ８１１に進む。ステップ８１１において、これら３２バイトのデータ上に、何らかのローカル・キャッシュ・メモリ３１９のコヒーレンシ・エラーがないかチェックする（即ち、最新データがキャッシュ・メモリ３１９にはあるが、ＲＡＭ３１２にはないという状態が生じているか否かチェックする）。このデータがローカルＣＰＵキャッシュ・メモリ３１９内に位置することが検出された場合、Ｘｍｉｔ  ＣＰＵ状態機械４１９はこのデータを破棄し、ステップ８０６に進む。ここで、ＸｍｉｔＣＰＵ状態機械４１９は再度ＣＰＵバス３１７を要求し、付与されたなら、別の３２バイトのデータを送信バッファ・レジスタ４２１に転送する。この時点までに、ＣＰＵは記述子の最後のコピーをＲＡＭ３１２に既に転送し終えている。最初にＲＡＭ３１２からフェッチした３２バイトの記述子がローカルＣＰＵキャッシュ・メモリ３１９内になかった場合（即ち、キャッシュ・コヒーレンシ・エラーが検出されなかった場合）、Ｘｍｉｔ  ＣＰＵ状態機械４１９はステップ８１２に進む。ステップ８１２において、Ｘｍｉｔ  ＣＰＵ状態機械４１９は、カウンタ４３１を減数し、アドレス・レジスタ４１３を増分し、かかるアドレス・レジスタ４１３が次のアドレスを示すようにする。次いで、Ｘｍｉｔ  ＣＰＵ状態機械は、ステップ８１４に進む。ステップ８１４において、送信ＣＰＵ状態機械４１９は、転送カウンタ４３１が終了したか否か、即ち、ゼロまでカウントしたか否か調べるためにチェックを行い、カウントがゼロでないことがわかった場合、ステップ８０４に進み、次の３２バイトの記述子の転送を開始する。カウンタ４３１がゼロの場合、プロセスはステップ８１６に進み、転送を完了する。ＲＡＭ３１２から送信ＤＭＡバッファ・レジスタ４２１への２番目の３２バイトの記述子の転送が成功すれば、ＣＰＵバス３１７上での転送は完了する。
【００５８】
メッセージ・インターフェース４０９は、３２ビット幅であり、１６個の３２ビット・ワードが６４バイトの記述子を構成する。６４バイトの記述子は、各々３２バイトずつまとめて転送される。Ｘｍｉｔ  ｍｓｇ状態機械４２７は、インターフェース４０９を制御し管理する。Ｘｍｉｔ  ＣＰＵ状態機械は、信号４３３をアサートし、最初の３２バイトのＣＰＵバス３１７上での転送が成功したことを示し（図２４のステップ８１８）、これがＸｍｉｔ  ｍｓｇ状態機械をステップ８１８に進ませ、メッセージ・インターフェース上での転送を開始する。ステップ８２０において、Ｘｍｉｔ  ｍｓｇ機械４２７は、バースト／転送カウンタ４３９をリセットし、メッセージ・インターフェース４０９を通じた転送を開始する。ステップ８２０において、「転送有効」（ＴＸ＿ＤＡＴＡ＿Ｖａｌｉｄ）信号をアサートすることにより、メッセージ・エンジン３１５の状態機械４１０にバス４０９上に有効なデータが得られること示し、メッセージ・インターフェース４０９上での転送を開始する。送信ｍｓｇ機械４２７は、バースト／転送カウンタ４３９におけるバースト・カウンタが８に等しい値に達するまで（ステップ８２２）、後続の各クロック毎に、３２ビットのデータを転送する。バースト／転送カウンタ４３９内のバースト・カウンタは、ライン４３３上の信号によって、メッセージ・バス４０９上に３２ビット・ワードが置かれる毎に増分される。バースト・カウンタが８になったとき、送信カウンタ４３１が終了したか、即ち、ゼロか否かについて、状態機械４２７がチェックを行なう（ステップ８２４）。バースト／転送カウント４３９における転送カウンタの終了は、６４バイトの記述子をメッセージ・エンジン３１５内の転送バッファ４２２に転送し終えたことを示す。これが終了していた場合、送信メッセージ状態機械４２７はステップ８２６に進む。ステップ８２６において、Ｘｍｉｔ  ｍｓｇ状態機械は、転送出力終了（Ｔｘ＿ＥＯＴ）をアサートし、メッセージ・バス４０９上での転送終了を示す。この状態において、Ｔｘ＿ＥＯＴ信号のアサート後に、ステータス・レジスタ４０４内に捕獲された転送のステータスを、メッセージ・エンジン３１５の状態機械４１０に送る。ＤＭＡ動作は、記述子を送信バッファ４２２（図８）に記憶することによって完了する。
【００５９】
一方、バースト／転送カウンタ４３９内の転送カウンタが終了していない場合、プロセスはステップ８００に進み、前述の手順を繰り返し、記述子データの２番目の３２バイトを転送し、その時点で転送は完了する。
【００６０】
次に図１４を参照し、受信ＤＭＡ４２０を示す。ここでは、別のディレクタから受信したメッセージをＲＡＭ３１２（図８）に書き込む。受信ＤＭＡ４２０は、３種類の情報、即ち、サイズが８バイトのエラー情報、サイズが１６バイトの承認情報、およびサイズが３２バイトの受信メッセージ・ペイロードおよび／またはファブリック管理情報を処理するように構成されている。図８も参照すると、メッセージ・エンジン３１５の状態機械４１０は、Ｒｘ＿ＷＥ信号をアサートし、受信ＤＭＡ４２０に、そのＲｅｃバッファ４２６（図８）にデータを転送する準備ができていることを示す。受信バッファ内のデータとしては、８バイトのエラー情報、１６バイトの承認情報、または３２バイトのファブリック管理／受信メッセージ・ペイロード情報が考えられる。これは、Ｒｘ＿ｔｒａｎｓｆｅｒカウント信号上に、２ビット・エンコード受信転送カウントを置き、情報の種類、およびこの情報がＲＡＭ３１２の受信キューに記憶されるアドレスである、アドレスを示す。受信書き込みイネーブル信号Ｒｘ＿ＷＥに応答して、受信メッセージ機械４５０（図１４）は、アドレスをアドレス・レジスタ４５２に、および情報の種類を示す転送カウントを、受信転送カウンタ４５４にロードする。アドレス・レジスタ４５２にロードされたアドレスは、アドレス・チェック回路４５６によってチェックされ、これがＲＡＭ３１２内の受信キューアドレスの範囲内にあるか否かについて調べる。これを行なうには、アドレスを、メモリ・レジスタ４５７（即ち、内部の基底アドレス・レジスタおよびオフセット・レジスタ）にロードした値と突き合わせてチェックする。基底アドレス・レジスタは、ＲＡＭ３１２内に常駐する受信キュー３１２Ｒの開始アドレスを収容し、オフセット・レジスタはＲＡＭ３１２内にあるこの受信キュー３１２Ｒのサイズを収容する。したがって、基底アドレス・レジスタおよびオフセット・レジスタに記憶されている値の加算（ａｄｄｉｔｉｖｅ  ｓｕｍ）は、ＲＡＭ３１２Ｒ内の受信キューのアドレス範囲を指定する。メモリ・レジスタ４５７には、初期化の間にロードが行われる。Ｒｘ＿ＷＥ信号をアサートした後に続くクロックで、メッセージ・エンジン３１５の状態機械４１０は、先に進み、３２ビットのメッセージ・エンジン３１５のデータ・バス４０７（図１４）上にデータを置く。Ｒｘ＿ｄａｔａ＿ｖａｌｉｄ信号が各３２ビット・データに付随し、メッセージ・エンジン・データ・バス４０７上のデータが有効であることを示す。このＲｘ＿ｄａｔａ＿ｖａｌｉｄ信号に応答して、受信メッセージ状態機械４５０は、データ・バス上のデータを受信バッファ・レジスタ４６０にロードする。メッセージ・エンジンのデータ・バス４０７ｄを通じた転送の終了は、Ｒｘ＿ＥＯＴ信号のアサートによって示され、この時点で、受信メッセージ状態機械４５０は、バス４０７のメッセージ・エンジン・データ・バス４０７Ｄ上の最後の３２ビットのデータを受信バッファ・レジスタ４６０にロードする。これは、バス４０７のメッセージ・エンジンのデータ・バス４０７Ｄの部分を通じた転送の終了を知らせる。かかる転送の終了時に、信号４６４のアサートによって、Ｒｘ＿Ｃｐｕ状態機械４���２に移送される（ｃｏｎｖｅｙ）。受信ＣＰＵ機械４６２は、ここで信号ＲＥＣ＿Ｂｒをアサートすることによって、ＣＰＵバス３１７を要求する。ＣＰＵバス・アービタ４１４（図８）による調停の後、受信ＤＭＡ４２０（図１４）には、ＣＰＵバス３１７へのアクセスが与えられる。受信ＣＰＵ状態機械４６２は、先に進み、そのバッファ・レジスタ４２４内にあるデータをＣＰＵバス３１７を通じて、ＲＡＭ３１２内の受信キュー３１２Ｒに転送する。同時に、このデータは二重バッファ・レジスタ４６６にも転送される。受信バッファ・レジスタ４６０の出力にあるデータは、セレクタ４７０の一方の入力に渡り、更に二重データ受信バッファ・レジスタ４６０にも渡る。二重受信バッファ・レジスタ４６６の出力は、セレクタ４７０の第２入力に供給される。データが受信ＣＰＵ状態機械４６２によって転送される際、キャッシュ・コヒーレンシ・エラーに対するチェックも行われる。ＲＡＭ３１２に書き込まれているアドレスに対応するデータがＣＰＵのローカル・キャッシュ・メモリ３１９（図８）内に位置する場合、受信ＤＭＡ機械４２０は、ＣＰＵ３１０がそのローカル・キャッシュ・メモリ３１９内にある古いデータをＲＡＭ３１２内の受信キュー３１２Ｒに戻しコピーし、二重バッファ・レジスタ４６６からの新たなデータのコピーで、この古いデータを上書きするのを待つ。
【００６１】
より具体的には、中央演算装置３１０がＤＭＡ受信部４２０に、受信バッファ・レジスタ４６０内のデータがローカル・キャッシュ・メモリ３１９において得られることを示す場合、受信ＣＰＵ状態機械４６２は、ライン４６３上に選択信号を生成する。ライン４６３は、二重バッファ・レジスタ４６６内のデータをセレクタ４７０の出力に結合し、次いでバス３１７に結合し、ランダム・アクセス・メモリ３１２に格納する。
【００６２】
ＲＡＭ３１２への書き込み成功によって、ＤＭＡ転送が完了する。すると、受信ＤＭＡ４２０は、メッセージ・エンジン３１５の状態機械４１０に、転送のステータスについて知らせる。転送のステータスは、ステータス・レジスタ４５９内に取り込まれる。
【００６３】
このように、受信ＤＭＡおよび送信ＤＭＡ双方により、ローカル・キャッシュ・メモリ３１９のチェックを行い、受信ＤＭＡの場合、「古い」データを有しているか否か、また送信ＤＭＡの場合、「新しい」データを有しているか否かについて判定を行なう。
【００６４】
次に図２５を参照しながら、受信ＤＭＡ４２０の動作を示す。即ち、ステップ８３０において、受信メッセージ機械４５０は、書き込みイネーブル信号Ｒｘ＿ＷＥがアサートされているか否かチェックする。アサートされていることがわかった場合、受信ＤＭＡ４２０は先に進み、アドレス・レジスタ４５２および転送カウンタ４５４にロードする。転送カウンタ４５４にロードされる値は、図８のメッセージ・エンジン状態機械３１０によって要求されたＤＭＡ転送の種類を決定する。Ｒｘ＿ＷＥ信号のアサートによって、ＤＭＡ受信転送動作が開始する。これがＲｘ  ｍｓｇ状態機械４５０をステップ８３２に進ませる。ステップ８３２において、Ｒｅｃ  ｍｓｇ状態機械４５０はアドレス・レジスタ４５２および転送カウンタ４５４にロードし、次いでステップ８３４に進む。ステップ８３４において、Ｒｘ＿ＤＡＴＡ＿ＶＡＬＩＤ信号がアサートされているか否か調べるためにチェックを行なう。アサートされている場合、ステップ８３６に進む。ステップ８３６において、Ｒｘ  ｍｓｇ状態機械は、バッファ・レジスタ４６０（図１４）に、図１４のバス４０７のメッセージ・エンジン・データ・バス４０７Ｄ上にあるデータをロードする。Ｒｘ＿ＤＡＴＡ＿ＶＡＬＩＤ信号が、バス４０７上の各データ片に付随する。データは順次バッファ・レジスタ４６０（図１４）にロードされる。バス４０７のメッセージ・エンジン・データ・バス４０７Ｄ上での転送終了は、Ｒｘ＿ＥＯＴ信号のアサートによって示される。受信メッセージ状態機械４５０が転送終了状態にある場合、ステップ８４０において、受信ＣＰＵ状態機械４６２に知らせ、これによって、ＣＰＵバス３１７側での転送が開始する。
【００６５】
受信ＣＰＵ状態機械のフローについて、以下に説明する。即ち、図２６を参照すると、バス４０７のメッセージ・エンジン・データ・バス４０７Ｄ部分上における転送終了によって、受信ＣＰＵ状態機械４６２を起動し、ステップ８４２に進ませる。受信ＣＰＵ状態機械４６２は、この状態におけるアドレスの有効性をチェックする（ステップ８４４）。これは、アドレス・チェック回路４５６によって行われる。アドレス・レジスタ４５２にロードされたアドレスがＲＡＭ３１２内の受信キュー３１２Ｒの範囲外である場合、転送を中断し、ステータスを受信ステータス・レジスタ４５９に取り込み、Ｒｅｃ  ＣＰＵ状態機械４６２はステップ８４５に進む。アドレスが有効な場合、受信ＣＰＵ状態機械４６２は、ステップ８４６に進む。ステップ８４６において、受信ＣＰＵ状態機械４６２は、ＣＰＵバス３１７のアクセスを要求する。次に、ステップ８４８に進む。ステップ８４８において、バス３１７に関する付与についてチェックする。付与が認められている場合、ステップ８５０に進む。ステップ８５０において、Ｒｅｃ  ＣＰＵ状態機械４６２は、アドレスおよびデータ・サイクルを実行し、本質的にバッファ・レジスタ４６０内のデータを、ＲＡＭ３１２内の受信キュー３１２Ｒに書き込む。ＲＡＭ３１２への書き込みと同時に、ＣＰＵバス３１７上に置かれたデータは、二重バッファ・レジスタ４６６にもロードされる。同時に、ＣＰＵ３１０は、制御ラインの１つにおいてＲＡＭ３１２に書き込んだアドレスに対応するデータが、そのローカル・キャッシュ・メモリ３１９において得られるか否かについて示す。アドレスおよびデータ・サイクルの終了時に、Ｒｅｃ  ＣＰＵ状態機械４６２は、ステップ８５０に進む。このステップにおいて、送信ＤＭＡ４１８（図１３）に関連付けて先に述べた種類のキャッシュ・コヒーレンシ・エラーがないかチェックする。キャッシュ・コヒーレンシ・エラーが検出された場合、受信ＣＰＵ状態機械４６２はステップ８４６に進み、トランザクションを再試行する。より具体的には、受信ＣＰＵ状態機械４６２はここで前回のアドレスに対して別のアドレスおよびデータ・サイクルを発生し、今回は、二重バッファ４６６からのデータをＣＰＵデータ・バス３１７上に置く。キャッシュ・コヒーレンシ・エラーがなかった場合、受信ＣＰＵ状態機械４６２はステップ８５２に進み、ここで転送カウンタ４５４を減数し、アドレス・レジスタ４５２内のアドレスを増分する。次いで、受信ＣＰＵ状態機械４６２はステップ８５４に進む。ステップ８５４において、状態機械４６２は、転送カウンタが終了したか、即ち、ゼロか否かチェックする。転送カウンタがゼロでない場合、受信ＣＰＵ状態機械４６２はステップ８４４に進み、転送カウンタがゼロになるまで前述の手順を繰り返す。ステップ８５４において転送カウンタがゼロであった場合、ＲＡＭ３１２内の受信キュー３１２Ｒへの書き込みが完了し、Ｒｅｃ  ＣＰＵ状態機械はステップ８４５に進む。ステップ８４５において、ステータス・レジスタに記憶されているステータスを、メッセージ・エンジン３１５の状態機械４１０に返送する。
【００６６】
再度図８を参照し、割込制御ステータス・レジスタ４１２について更に詳しく説明する。前述のように、パケットは、パケット化／パケット分解部４２８のパケット化部分によってクロスバー・スイッチ３２０に送られ、１つ以上のディレクタに送信される。尚、パケット化／パケット分解部４２８のパケット化部分によって送られたパケットは、クロスバー・スイッチ３２０に渡る前に、メッセージ・エンジン３１５内のパリティ発生器ＰＧを通過することを注記しておく。かかるパケットが、ディレクタの一例１８０1内のメッセージ・エンジン３１５によってクロスバー・スイッチ３２０に送られると、クロスバー・スイッチ３２０に渡される前に、パリティ・ビット発生器ＰＧによって、パリティ・ビットがパケットに付加される。パケットのパリティは、クロスバー・スイッチ３２０内のパリティ・チェッカ／発生器（ＰＧ／Ｃ）のパリティ・チェッカ部分においてチェックされる。チェックの結果は、クロスバー・スイッチ３２０内のＰＧ／Ｃによって、ディレクタ１８０1内の割込制御ステータス・レジスタ４１２に送られる。
【００６７】
同様に、クロスバー・スイッチ３２０からディレクタの一例１８０1のメッセージ・エンジン３１５にパケットが送信される場合、パケットはディレクタ１８０1内のメッセージ・エンジン３１５に送信される前に、クロスバー・スイッチ３２０内のパリティ・チェッカ／発生器（ＰＧ／Ｃ）のパリティ発生部分を通過する。次に、パケットのパリティは、ディレクタ１８０1内のパリティ・チェッカ（ＰＣ）のパリティ・チェッカ部分においてチェックされ、その結果（即ち、ステータス）はステータス・レジスタ４１２に送信される。
【００６８】
以上、本発明の多数の実施形態について説明した。しかしながら、本発明の精神および範囲から逸脱することなく、種々の変更が可能であることは理解されよう。したがって、他の実施形態も特許請求の範囲に該当するものとする。
【図面の簡単な説明】
【図１】  従来技術によるデータ記憶システムのブロック図である。
【図２】  本発明によるデータ記憶システムのブロック図である。
【図３】  図３Ａは、図２のデータ記憶システムのシステム・インターフェースにおいて用いられる記述子のフィールドを示す図である。
図３Ｂは、図２のデータ記憶システムのシステム・インターフェースにおいて用いられるＭＡＣパケット内で用いるフィールドを示す図である。
【図４】  図２のデータ記憶システムに用いられるシステム・インターフェースを格納する電気キャビネットの図である。
【図５】  図２のデータ記憶システムのシステム・インターフェースを設けたプリント回路ボードを示す、概略等幅図である。
【図６】  図２のデータ記憶システムにおいて用いられるシステム・インターフェースのブロック図である。
【図７】  図２のデータ記憶システムのシステム・インターフェースにおいて用いられる１対のメッセージ・ネットワーク・ボードの一方に対する、フロント・エンド・ディレクタおよびバック・エンド・ディレクタ間の接続を示すブロック図である。
【図８】  図２のデータ記憶システムのシステム・インターフェースにおいて用いられるディレクタ・ボードの一例のブロック図である。
【図９】  図２のデータ記憶システムにおいて用いられるシステム・インターフェースのブロック図である。
【図１０】  図９のシステム・インターフェースにおいて用いられるグローバル・キャッシュ・メモリ・ボードの一例の図である。
【図１１】  １対のホスト・プロセッサと、図９のシステム・インターフェースにおいて用いられるグローバル・キャッシュ・メモリ・ボード間に結合された１対のディレクタ・ボードを示す図である。
【図１２】  図９のシステム・インターフェースのフロント・エンド・ディレクタおよびリア・エンド・ディレクタ内において用いられるクロスバー・スイッチの一例のブロック図である。
【図１３】  図９のシステム・インターフェースにおいて用いられる送信直接メモリ・アクセス（ＤＭＡ）のブロック図である。
【図１４】  図９のシステム・インターフェースにおいて用いられる受信ＤＭＡのブロック図である。
【図１５】  図１６および図１７間の関係を示す図である。
【図１６】  図９のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの送出動作のプロセス・フロー図である。
【図１７】  図９のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの送出動作のプロセス・フロー図である。
【図１８】  図１８Ａは、図９のシステム・インターフェースにおけるメッセージ・ネットワークが用いるディジタル・ワードの一例である。
図１８Ｂは、図９のシステム・インターフェースにおけるメッセージ・ネットワークが用いるディジタル・ワードの一例である。
図１８Ｃは、図９のシステム・インターフェースにおけるメッセージ・ネットワークが用いるディジタル・ワードの一例である。
図１８Ｄは、かかるメッセージ・ネットワークにおいて用いられるマスク内のビットを示す図である。
図１８Ｅは、図１８Ｃに示すディジタル・ワードに適用する図１８Ｄのマスクの結果を示す図である。
【図１９】  図２０および図２１間の関係を示す図である。
【図２０】  図９のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの受信動作を示すプロセス・フロー図である。
【図２１】  図９のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの受信動作を示すプロセス・フロー図である。
【図２２】  図９のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの承認動作を示すプロセス・フロー図である。
【図２３】  図１３の送信ＤＭＡの送信ＤＭＡ動作を示すプロセス・フロー図である。
【図２４】  図１３の送信ＤＭＡの送信ＤＭＡ動作を示すプロセス・フロー図である。
【図２５】  図１４の受信ＤＭＡの受信ＤＭＡ動作を示すプロセス・フロー図である。
【図２６】  図１４の受信ＤＭＡの受信ＤＭＡ動作を示すプロセス・フロー図である。
【符号の説明】
１００    データ記憶システム
１２０    ホスト・コンピュータ／サーバ
１４０    ディスク・ドライブ・バンク
１６０    システム・インターフェース
１８０    フロント・エンド・ディレクタ
１９０    フロント・エンド・ディレクタ・ボード
２００    バック・エンド・ディレクタ
２１０    バック・エンド・ディレクタ・ボード
２２０    キャシュ・メモリ
２４０    データ転送部
２６０    メッセージ・ネットワーク
２９９    マイクロプロセッサ
３１４    コントローラ
３１６    データ・パイプ
【図１】
0004350319.tif 000002
【図２】
0004350319.tif 000003
【図３】
0004350319.tif 000004
【図４】
0004350319.tif 000005
【図５】
0004350319.tif 000006
【図６】
0004350319.tif 000007
【図７】
0004350319.tif 000008
【図８】
0004350319.tif 000009
【図９】
0004350319.tif 000010
【図１０】
0004350319.tif 000011
【図１１】
0004350319.tif 000012
【図１２】
0004350319.tif 000013
【図１３】
0004350319.tif 000014
【図１４】
0004350319.tif 000015
【図１５】
0004350319.tif 000016
【図１６】
0004350319.tif 000017
【図１７】
0004350319.tif 000018
【図１８】
0004350319.tif 000019
【図１９】
0004350319.tif 000020
【図２０】
0004350319.tif 000021
【図２１】
0004350319.tif 000022
【図２２】
0004350319.tif 000023
【図２３】
0004350319.tif 000024
【図２４】
0004350319.tif 000025
【図２５】
0004350319.tif 000026
【図２６】
0004350319.tif 000027