JP4885406B2 - ポイント間構成を有するデータ記憶システム - Google Patents

ポイント間構成を有するデータ記憶システム Download PDF

Info

Publication number
JP4885406B2
JP4885406B2 JP2002507375A JP2002507375A JP4885406B2 JP 4885406 B2 JP4885406 B2 JP 4885406B2 JP 2002507375 A JP2002507375 A JP 2002507375A JP 2002507375 A JP2002507375 A JP 2002507375A JP 4885406 B2 JP4885406 B2 JP 4885406B2
Authority
JP
Japan
Prior art keywords
director
data
directors
message
cache memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2002507375A
Other languages
English (en)
Other versions
JP2004502263A5 (ja
JP2004502263A (ja
Inventor
ブラック,デビッド
マクアーサー,スティーブン
ホイーラー,リチャード
ウィルソン,ポール・シー
ザニ,マーク
カーン,ファロウク
マクレラン,クリストファー・エス
ワルトン,ジョン・ケイ
チルトン,ケンデル・エイ
テュッチオ,ウィリアム
シーボルト,ロバート・エイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/606,730 external-priority patent/US7007194B1/en
Priority claimed from US09/606,734 external-priority patent/US7073020B1/en
Application filed by EMC Corp filed Critical EMC Corp
Publication of JP2004502263A publication Critical patent/JP2004502263A/ja
Publication of JP2004502263A5 publication Critical patent/JP2004502263A5/ja
Application granted granted Critical
Publication of JP4885406B2 publication Critical patent/JP4885406B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、一般的に、データ記憶システムに関し、更に特定すれば、記憶システムの構成部品またはサブアセンブリ内における障害時に、システム全体を障害から保護する冗長構成を有するデータ記憶システムに関する。
【0002】
【従来の技術】
当技術分野では公知であるが、大型のホスト・コンピュータおよびサーバ(ここでは総称して「ホスト・コンピュータ/サーバ」と呼ぶ)は、大容量データ記憶システムを必要とする。これらの大型コンピュータ/サーバは、一般に、データ・プロセッサを有し、データ記憶システムを含む周辺機器を介してホスト・コンピュータ/サーバに導入されるデータに対して、多くの処理を実行する。これらの処理の結果は、記憶システムを含む周辺機器に出力される。
【0003】
データ記憶システムの一種に、磁気ディスク記憶システムがある。ここでは、ディスク・ドライブ・バンクおよびホスト・コンピュータ/サーバが、インターフェースを介して互いに結合されている。インターフェースは、「フロント・エンド」、即ち、ホスト・コンピュータ/サーバ・コントローラ(またはディレクタ)および「バック・エンド」、即ち、ディスク・コントローラ(またはディレクタ)を含む。インターフェースは、コントローラ(またはディレクタ)がホスト・コンピュータ/サーバに対して透過的であるように、これらを動作させる。即ち、ホスト・コンピュータ/サーバが単にディスク・ドライブ・バンクがそれ自体のローカル・ディスク・ドライブとして動作していると考えるように、ディスク・ドライブ・バンクにデータを記憶し、ここからデータを検索する。かかるシステムの1つが、”System and Method for Disk Mapping and Data Retrieval”(ディスク・マッピングおよびデータ検索システムおよび方法)と題する米国特許第5,206,939号に記載されている。この特許の発明者は、Moshe Yanai(モッシュ・ヤナイ)、Natan Vishlitzky(ナタン・ビシュリツキ)、Bruno Alterescu(ブルーノ・アルテレスク)およびDaniel Castel(ダニエル・カステル)であり、1993年4月27日に発行され、本願と同一譲受人に譲渡されている。
【0004】
この米国特許に記載されているように、インターフェースは、ホスト・コンピュータ/サーバ・コントローラ(またはディレクタ)およびディスク・コントローラ(またはディレクタ)に加えて、アドレス可能なキャッシュ・メモリも含むことができる。キャッシュ・メモリとは、半導体メモリであって、ディスク・ドライブ内への記憶の前に、ホスト・コンピュータ/サーバからのデータを迅速に記憶し、一方ホスト・コンピュータ/サーバに送る前に、ディスク・ドライブからのデータを記憶するために設けられている。半導体メモリであるキャッシュ・メモリは、ディスク・ドライブの場合におけるような磁気メモリとは異なり、そのデータ読み出しおよび書き込みが、ディスク・ドライブよりも遥かに速い。
【0005】
ホスト・コンピュータ/サーバ・コントローラ、ディスク・コントローラおよびキャッシュ・メモリは、バックプレーン(背面)プリント回路ボードを介して相互接続されている。即ち、ディスク・コントローラがディスク・コントローラ・プリント回路ボード上に実装されている。ホスト・コンピュータ/サーバ・コントローラは、ホスト・コンピュータ/サーバ・コントローラ・プリント回路ボード上に実装されている。そして、キャッシュ・メモリは、キャッシュ・メモリ・プリント回路ボード上に実装されている。ディスク・ディレクタ、ホスト・コンピュータ/サーバ・ディレクタ、およびキャッシュ・メモリ・プリント回路ボードは、背面プリント回路ボード内に差し込まれる。ディレクタにおける障害の場合にデータの完全性を得るために、背面プリント回路ボードは1対のバスを有する。1組のディスク・ディレクタが一方のバスに接続され、他の1組のディスク・ディレクタが他方のバスに接続されている。同様に、1組のホスト・コンピュータ/サーバ・ディレクタが、一方のバスに接続され、他の1組のホスト・コンピュータ/サーバ・ディレクタが他方のバスに接続されている。キャッシュ・メモリは双方のバスに接続されている。バスの各1つは、データ、アドレスおよび制御情報を供給する。
【0006】
この構成を図1に概略的に示す。即ち、2系統のバスB1、B2の使用により、ある程度の冗長性を備え、一方のバスに接続されているコントローラまたはディスク・ドライブに障害が発生した場合に、システム全体を障害から保護する。更に、2系統のバスを用いることにより、単一のバスを有するシステムと比較して、システムのデータ転送帯域幅が増大する。したがって、動作において、ホスト・コンピュータ/サーバ12がデータを記憶したい場合、ホスト・コンピュータ12は書き込み要求をフロント・エンド・ディレクタ14(即ち、ホスト・コンピュータ/サーバ・ディレクタ)の1つに発行し、書き込みコマンドを実行する。フロント・エンド・ディレクタ14の1つは、要求に答えて、ホスト・コンピュータ12にデータを求める。要求がフロント・エンド・ディレクタ14の内の要求する1つに渡った後、当該ディレクタ14は、データのサイズを決定し、要求を記憶するためにキャッシュ・メモリ18内に空間を予約する。次に、フロント・エンド・ディレクタ14は、このフロント・エンド・ディレクタ14に接続されているアドレス・メモリ・バスB1、B2の一方の上で制御信号を生成し、キャッシュ・メモリ18への転送をイネーブルする。次に、ホスト・コンピュータ/サーバ12は、データをフロント・エンド・ディレクタ14に転送する。すると、フロント・エンド・ディレクタ14は、ホスト・コンピュータ/サーバ12に、転送が完了したことを通知する。フロント・エンド・ディレクタ14は、キャッシュ・メモリ18内に格納されている、図示しない表を調べ、バック・エンド・ディレクタ20(即ち、ディクス・ディレクタ)の内どれがこの要求を処理するか決定する。表は、ホスト・コンピュータ・サーバ12のアドレスを、ディスク・ドライブ・バンク14内のアドレスにマップする。次に、フロント・エンド・ディレクタ14は、要求を処理すべきバック・エンド・ディレクタ20に対する「メール・ボックス」(図示せず。キャッシュ・メモリ18内に記憶されている)に、データ量およびデータのディスク・アドレスの通知を入力する。他のバック・エンド・ディレクタ20は、アイドル状態にあるときに、キャッシュ・メモリ18をポールし、それらの「メール・ボックス」をチェックする。ポールした「メール・ボックス」が、転送を行なうべきことを指示する場合、バック・エンド・ディレクタ20は要求を処理し、バンク22内のディスク・ドライブにアドレスし、キャッシュ・メモリ18からデータを読み出し、これをバンク22内のディスク・ドライブのアドレスに書き込む。
【0007】
バンク22内のディスク・ドライブからホスト・コンピュータ/サーバ12にデータを読み出す場合、システムは逆に動作する。即ち、読み出し動作の間、読み出し要求が、ホスト・コンピュータ/サーバ12によって、指定のメモリ・ロケーション(即ち、要求されたデータ・ブロック)におけるデータに対して発せられる。フロント・エンド・ディレクタ14の1つは、読み出し要求を受け取り、キャッシュ・メモリ18を検査して、要求されたデータ・ブロックがキャッシュ・メモリ18内に記憶されているか否かについて判定を行なう。要求されたデータ・ブロックがキャッシュ・メモリ18内にある場合、キャッシュ・メモリ18から要求されたデータ・ブロックを読み出し、ホスト・コンピュータ/サーバ12に送る。フロント・エンド・ディレクタ14が、要求されたデータ・ブロックがキャッシュ・メモリ18内にないと判定した場合(即ち、いわゆる「キャッシュ・ミス」)、ディレクタ14は、キャッシュ・メモリ18(即ち、「メール・ボックス」)に、要求されたデータ・ブロックを受け取る必要があることの注意を書き込む。バック・エンド・ディレクタ20はキャッシュ・メモリ18をポールし、取るべき処置(即ち、要求されたデータ・ブロックの読み出し動作)があるか否かについて判定を行なう。キャッシュ・メモリ18のメール・ボックスをポールし、読み出し動作を検出したバック・エンド・ディレクタ20の1つは、要求されたデータ・ブロックを読み出し、キャッシュ・メモリ18内に記憶されている、要求されたデータ・ブロックの記憶を開始する。記憶が完全にキャッシュ・メモリ18内に書き込まれたとき、読み出し完了指示をキャッシュ・メモリ18内の「メール・ボックス」に置く。尚、フロント・エンド・ディレクタ14は、読み出し完了指示を見つけるために、キャッシュ・メモリ18をポールすることを注記しておく。ポールしているフロント・エンド・ディレクタ14の1つが読み出し完了指示を検出した場合、このフロント・エンド・ディレクタ14は、この時点ではキャッシュ・メモリ18内に記憶されている要求データの、ホスト・コンピュータ/サーバ12への転送を完了する。
【0008】
【発明が解決しようとする課題】
メールボックスおよびポーリングを使用すると、ホスト・コンピュータ/サーバ12およびディスク・ドライブ・バンク22間でデータを転送する時間が必要となるため、インターフェースの動作帯域幅の減少を招くことになる。
【0009】
【課題を解決するための手段】
本発明によれば、システム・インターフェースを提供する。このインターフェースは、複数の第1ディレクタと、複数の第2ディレクタと、データ転送部と、メッセージ・ネットワークとを含む。データ転送部は、キャッシュ・メモリを含む。キャッシュ・メモリは、複数の第1および第2ディレクタに結合されている。メッセージング・ネットワークは、データ転送部とは独立して動作し、このネットワークは、複数の第1ディレクタおよび複数の第2ディレクタに結合されている。第1および第2ディレクタは、メッセージング・ネットワークを通じて第1ディレクタおよび第2ディレクタ間を通るメッセージに応答して、第1および第2ディレクタ間のデータ転送を制御し、第1ディレクタおよび第2ディレクタ間のデータ転送を促進する。データは、データ転送部内のキャッシュ・メモリを通過する。かかる構成では、データ転送部内のキャッシュ・メモリは、ディレクタにメッセージを転送するタスクを負担せず、代わりにメッセージング・ネットワークが設けられており、かかるメッセージングのためにデータ転送部とは独立して動作することにより、システム・インターフェースの動作帯域幅を拡大する。
【0010】
本発明の一実施形態では、システム・インターフェースは、第1ディレクタの各々に、第1ディレクタのかかる1つの入力とキャッシュ・メモリとの間に結合されているデータ・パイプと、メッセージ・ネットワークと第1ディレクタのかかる1つとの間でメッセージを転送するコントローラとを含む。
【0011】
一実施形態では、第2ディレクタの各1つは、第2ディレクタのかかる1つの入力とキャッシュ・メモリとの間に結合されているデータ・パイプと、メッセージング・ネットワークと第2ディレクタのかかる1つとの間でメッセージを転送するコントローラとを含む。
【0012】
一実施形態では、ディレクタは、第1ディレクタのかかる1つの入力とキャッシュ・メモリとの間に結合されているデータ・パイプと、マイクロプロセッサと、マイクロプロセッサおよびデータ・パイプに結合され、メッセージ・ネットワークと第1ディレクタのかかる1つとの間のメッセージ転送を制御し、第1ディレクタのかかる1つの入力とキャッシュ・メモリとの間でデータを制御するコントローラとを含む。
【0013】
本発明の別の特徴によれば、システム・インターフェースを通じてホスト・コンピュータ/サーバとディスク・ドライブのバンクとの間でデータを転送するデータ記憶システムを提供する。システム・インターフェースは、ホスト・コンピュータ/サーバに結合されている複数の第1ディレクタと、ディスク・ドライブのバンクに結合されている複数の第2ディレクタと、データ転送部と、メッセージ・ネットワークとを含む。データ転送部は、キャッシュ・メモリを含む。キャッシュ・メモリは、複数の第1および第2ディレクタに結合されている。メッセージ・ネットワークは、データ転送部とは独立して動作し、このネットワークは、複数の第1ディレクタおよび複数の第2ディレクタに結合されている。第1および第2ディレクタは、メッセージング・ネットワークを通じて第1ディレクタおよび第2ディレクタ間を通るメッセージに応答して、ホスト・コンピュータおよびディスク・ドライブのバンク間のデータ転送を制御し、ホスト・コンピュータ/サーバとディスク・ドライブのバンクとの間のデータ転送を促進する。このデータは、データ転送部内のキャッシュ・メモリを通過する。
【0014】
更に別の実施形態によれば、ホスト・コンピュータ/サーバとディスク・ドライブのバンクとの間でデータを転送するように適合化したデータ記憶システムを動作させる方法を提供する。この方法は、メッセージング・ネットワークを通じてメッセージを転送し、キャッシュ・メモリを介して、ホスト・コンピュータ/サーバとディスク・ドライブのバンクとの間でデータを転送するステップを含み、かかるメッセージ・ネットワークはキャッシュ・メモリとは独立している。
【0015】
別の実施形態によれば、システム・インターフェースを通じて、ホスト・コンピュータ/サーバとディスク・ドライブのバンクとの間でデータを転送するように適合化したデータ記憶システムを動作させる方法を提供する。インターフェースは、ホスト・コンピュータ/サーバに結合されている複数の第1ディレクタと、ディスク・ドライブのバンクに結合されている複数の第2ディレクタと、キャッシュ・メモリを有するデータ転送部とを含む。かかるキャッシュ・メモリは、複数の第1および第2ディレクタに結合されている。この方法は、メッセージング・ネットワークを通じて第1ディレクタおよび第2ディレクタ間を通るメッセージに応答して、第1および第2ディレクタの制御の下で、ホスト・コンピュータ/サーバとディスク・ドライブのバンクとの間でデータを転送して、ホスト・コンピュータ/サーバとディスク・ドライブのバンクとの間のデータ転送を促進するステップを含む。かかるデータは、データ転送部内のキャッシュ・メモリを通過し、かかるメッセージ・ネットワークはキャッシュ・メモリとは独立している。
【0016】
本発明のこれらおよびその他の特徴は、以下の詳細な説明を添付図面と共に読むことによって、一層容易に明らかとなろう。
【0017】
【発明の実施の形態】
これより図2を参照し、システム・インターフェース160を介してホスト・コンピュータ/サーバ120とディスク・ドライブ・バンク140との間でデータを転送するデータ記憶システム100を示す。図示のように、システム・インターフェース160は、ポート1231〜12332を介してホスト・コンピュータ/サーバ120に結合されている、ここでは32個の、複数のフロント・エンド・ディレクタ1801〜18032、ポート12333〜12364を介してディスク・ドライブ・バンク140に結合されている複数のバック・エンド・ディレクタ2001〜20032、グローバル・キャッシュ・メモリ220を有し、複数のフロント・エンド・ディレクタ1801〜18016およびバック・エンド・ディレクタ2001〜20016に結合されているデータ転送部240、ならびにデータ転送部240とは独立して動作し、複数のフロント・エンド・ディレクタ1801〜18032およびバック・エンド・ディレクタ2001〜20032に結合されているメッセージ・ネットワーク260を含む。フロント・エンド・ディレクタ1801〜18032およびバック・エンド・ディレクタ2001〜20032は、機能的に同様であり、マイクロプロセッサ(μP)299(即ち、中央演算装置(CPU)およびRAM)、メッセージ・エンジン/CPUコントローラ314、およびデータ・パイプ316を含む。これらについては、図6、図7および図8と関連付けて更に詳しく説明する。しかしながら、ここでは、フロント・エンド・ディレクタ1801〜18032およびバック・エンド・ディレクタ2001〜20032は、メッセージ・ネットワーク260を通じてディレクタ1801〜18032および2001〜20032間で受け渡されるメッセージに応答して、ホスト・コンピュータ/サーバ120およびディスク・ドライブ・バンク140間のデータ転送を制御することを言えば十分であろう。このメッセージは、ホスト・コンピュータ/サーバ120およびディスク・ドライブ・バンク140間のデータ転送を容易にする。かかるデータは、データ転送部240を介してグローバル・キャッシュ・メモリ220を通過する。即ち、フロント・エンド・ディレクタ1801〜18032の場合、データは、ホスト・コンピュータからフロント・エンド・ディレクタ1801〜18032内のデータ・パイプ316を通じて、グローバル・キャッシュ・メモリ220に渡り、メッセージは、かかるフロント・エンド・ディレクタ1801〜18032内のメッセージ・エンジン/CPUコントローラ314を通過する。バック・エンド・ディレクタ2001〜20032の場合、データは、バック・エンド・ディレクタ2001〜20032から、バック・エンド・ディレクタ2001〜20032内のデータ・パイプ316を通じて、ディスク・ドライブ・バンク140およびグローバル・キャッシュ・メモリ220に渡り、メッセージはこの場合もかかるバック・エンド・ディレクタ2001〜20032内のメッセージ・エンジン/CPUコントローラ314を通過する。
【0018】
かかる構成では、データ転送部240内のキャッシュ・メモリ220には、ディレクタのメッセージを転送する負担がかからない。むしろ、メッセージ・ネットワーク260が、データ転送部240とは独立して動作することにより、システム・インターフェース160の動作帯域幅が増大する。
【0019】
動作において、まず最初にホスト・コンピュータ/サーバ120による読み出し要求について検討すると(即ち、ホスト・コンピュータ/サーバ120はディスク・ドライブ・バンク140からのデータを要求する)、要求は、ホスト・コンピュータ120内の複数、ここでは32個のホスト・コンピュータ・プロセッサ1211〜12132の1つから、かかるホスト・コンピュータ・プロセッサ1211〜12132に接続されている1つ以上のフロント・エンド・ディレクタ1801〜18032の対に渡される。(尚、ホスト・コンピュータ120内において、ホスト・コンピュータ・プロセッサ1211〜12132の各々は、ここでは1対の(しかし、1対に限定される訳ではない)フロント・エンド・ディレクタ1801〜18032に結合され、それに結合されているフロント・エンド・ディレクタ1801〜18032の1つにおける障害の場合に、冗長性が得られるようになっていることを注記しておく。同様に、ディスク・ドライブ・バンク140は、複数、ここでは32個のディスク・ドライブ1411〜14132を有し、各ディスク・ドライブ1411〜14132はここでは1対の(しかし、1対に限定される訳ではない)バック・エンド・ディレクタ2001〜20032に結合され、これらに結合されているバック・エンド・ディレクタ2001〜20032の1つにおける障害の場合に冗長性が得られるようになっている。)各フロント・エンド・ディレクタ1801〜18032は、マイクロプロセッサ(μP)299(即ち、中央演算装置(CPU)およびRAM)を含み、図6および図8に関連付けて詳細に説明する。しかしながら、ここでは、マイクロプロセッサ299はグローバル・キャッシュ・メモリ220からのデータを要求することを言えば十分であろう。グローバル・キャッシュ・メモリ220は、図示しない、常駐キャッシュ管理テーブルを有する。各ディレクタ1801〜18032、2001〜20032は、常駐キャッシュ管理テーブルにアクセスすることができ、フロント・エンド・ディレクタ1801〜18032がデータ転送を要求する毎に、フロント・エンド・ディレクタ1801〜18032はグローバル・キャッシュ・メモリ220に問い合わせ、要求したデータがグローバル・キャッシュ・メモリ220内にあるか否かについて判定しなければならない。要求したデータがグローバル・キャッシュ・メモリ220内にある場合(即ち、読み出し「ヒット」)、フロント・エンド・ディレクタ1801〜18032、即ち、その中にあるマイクロプロセッサ299は、グローバル・キャッシュ・メモリ220のためにDMA(直接メモリ・アクセス)動作を仲介し、要求されたデータは、要求元のホスト・コンピュータ・プロセッサ1211〜12132に転送される。
【0020】
一方、グローバル・キャッシュ・メモリ220内のキャッシュ管理テーブルの問い合わせの結果として、データ要求を受信したフロント・エンド・ディレクタ1801〜18032が、要求データはグローバル・キャッシュ・メモリ220内にないと判定した場合(即ち、「ミス」)、かかるフロント・エンド・ディレクタ1801〜18032は、要求データがディスク・ドライブ・バンク140内にあると結論付ける。このため、データ要求を受信したフロント・エンド・ディレクタ1801〜18032は、バック・エンド・ディレクタ2001〜20032の1つからのデータを要求し、かかるバック・エンド・ディレクタ2001〜20032がディスク・ドライブ・バンク140からのデータを要求するようにしなければならない。どのバック・エンド・ディレクタ2001〜20032がディスク・ドライブ・バンク140内のどのディスク・ドライブ1411〜14132を制御するかというマッピングは、起動初期化フェーズにおいて決定される。マップはグローバル・キャッシュ・メモリ220内に記憶されている。したがって、フロント・エンド・ディレクタ1801〜18032がグローバル・キャッシュ・メモリ220からのデータを要求し、要求したデータがグローバル・キャッシュ・メモリ220内にない(即ち、「ミス」)と判断した場合、フロント・エンド・ディレクタ1801〜18032には、ディスク・ドライブ・バンク140内の要求データを担当するバック・エンド・ディレクタ2001〜20032のグローバル・キャッシュ・メモリ220内のマップによっても通知される。次に、要求元のフロント・エンド・ディレクタ1801〜18032は、マップで指定されたバック・エンド・ディレクタ2001〜20032からディスク・ドライブ・バンク140内のデータを要求しなければならない。このフロント・エンド・ディレクタ1801〜18032とバック・エンド・ディレクタ2001〜20032の内適切な1つ(グローバル・キャッシュ・メモリ220内に記憶されているマップによって判定する)との間の要求は、メッセージによって行われる。このメッセージは、フロント・エンド・ディレクタ1801〜18032からメッセージ・ネットワーク260を通じて適切なバック・エンド・ディレクタ2001〜20032に到達する。尚、メッセージはグローバル・キャッシュ・メモリ220を通過せず(即ち、データ転送部240を通過しない)、代わりに別個の独立したメッセージ・ネットワーク260を通過することを注記しておく。このように、ディレクタ1801〜18032、2001〜20032間の通信は、メッセージ・ネットワーク260を通じて行われるのであり、グローバル・キャッシュ・メモリ220を通じてではない。その結果、グローバル・キャッシュ・メモリ220にとって貴重な帯域幅は、ディレクタ1801〜18032、2001〜20032間のメッセージのやりとりには用いられない。
【0021】
したがって、グローバル・キャッシュ・メモリ220における「読み出しミス」時には、フロント・エンド・ディレクタ1801〜18032は、メッセージ・ネットワーク260を通じて、バック・エンド・ディレクタ2001〜20032の適切な1つにメッセージを送り、かかるバック・エンド・ディレクタ2001〜20032に、要求データをディスク・ドライブ・バンク140からグローバル・キャッシュ・メモリ220に転送するように命令する。完了時に、バック・エンド・ディレクタ2001〜20032は、要求元のフロント・エンド・ディレクタ1801〜18032に、メッセージによってデータ転送が完了したことを通知する。メッセージは、バック・エンド・ディレクタ2001〜20032からメッセージ・ネットワーク260を通じてフロント・エンド・ディレクタ1801〜18032に達する。承認信号に応答して、フロント・エンド・ディレクタ1801〜18032には、これによって、キャッシュ「読み出しヒット」が得られた場合に、前述したように、かかるフロント・エンド・ディレクタ1801〜18032が、グローバル・キャッシュ・メモリ220から要求元のホスト・コンピュータ・プロセッサ1211〜12132にデータを転送できることが通知される。
【0022】
尚、要求データを担当するバック・エンド・ディレクタ2001〜20032が1つ以上あり得ることも注記しておく。したがって、要求データを担当するバック・エンド・ディレクタ2001〜20032が1つだけの場合、要求元のフロント・エンド・ディレクタ1801〜18032は、メッセージ・ネットワーク260を通じて、バック・エンド・ディレクタ2001〜20032の特定の1つのみにユニキャスト・メッセージを送る。一方、要求データを担当するバック・エンド・ディレクタ2001〜20032が1つよりも多い場合、フロント・エンド・ディレクタ1801〜18032の内要求元から、要求データを担当するバック・エンド・ディレクタ2001〜20032全てに、マルチキャスト・メッセージ(ここでは、一連のユニキャスト・メッセージとして実現する)を送る。いずれの場合でも、ユニキャストおよびマルチキャスト・メッセージ双方を用いる際、かかるメッセージはメッセージ・ネットワーク260を通じて受け渡されるのであり、データ転送部240を通じてではない(即ち、グローバル・キャッシュ・メモリ220を通じてではない)。
【0023】
同様に、データを要求するホスト・コンピュータ・プロセッサ1211〜12132が1つであっても、データ読み出し動作を完了するためには、マルチキャスト(即ち、一連のユニキャスト)メッセージによって、メッセージ・ネットワーク260を通じて要求元のホスト・コンピュータ・プロセッサ1211または1つ以上のその他のホスト・コンピュータ・プロセッサ1211〜12132に承認信号を送る場合もあることを注記しておく。
【0024】
書き込み動作について検討する。ホスト・コンピュータ120は、データをストレージ(即ち、ディスク・ドライブ・バンク140)に書き込もうとする。フロント・エンド・ディレクタ1801〜18032の1つが、ホスト・コンピュータ120からデータを受信し、それをグローバル・キャッシュ・メモリ220に書き込む。次いで、フロント・エンド・ディレクタ1801〜18032は、バック・エンド・ディレクタ2001〜20032がかかるキャッシュ・メモリ220からデータを取り出しディスク・ドライブ・バンク140に記憶することができると判断した場合、ある時間期間の後に、かかるデータの転送を要求する。ディスク・ドライブ・バンク140への転送の前に、キャッシュ・メモリ220内のデータには、「フレッシュ・データ」(即ち、ディスク・ドライブ・バンク140に転送されていないデータ、つまり、「書き込み保留」のデータ)としてのビットが添付される。したがって、ディスク・ドライブ・バンク140への転送前に、グローバル・キャッシュ・メモリ220内の同一メモリ・ロケーション(例えば、特定のバンク・アカウント)に対して多数の書き込み要求がある場合、キャッシュ・メモリ220内のデータは、最新データによって上書きされる。データがグローバル・キャッシュ・メモリ220に転送される毎に、当該転送を制御するフロント・エンド・ディレクタ1801〜18032は、転送が完了したことをホスト・コンピュータ120にも知らせることによって、他のデータ転送のためにホスト・コンピュータ120を解放する。
【0025】
グローバル・キャッシュ・メモリ220内のデータをディスク・ドライブ・バンク140に転送する時刻となったとバック・エンド・ディレクタ2001〜20032が判断した場合、バック・エンド・ディレクタ2001〜20032は、グローバル・キャッシュ・メモリ220からディスク・ドライブ・バンク140にデータを転送し、グローバル・キャッシュ・メモリ220内のデータと関連付けられているタグをリセットし(即ち、データのタグを除去し)、グローバル・キャッシュ・メモリ220内のデータがディスク・ドライブ・バンク140に転送されたことを示す。尚、グローバル・キャッシュ・メモリ220内においてタグを除去されたデータは、新たなデータによって上書きされるまで、そこに残っていることを注記しておく。
【0026】
次に図4および図5を参照し、電気キャビネット300を含むシステム・インターフェース160を示す。電気キャビネット300は、内部に、ここでは各々4つのフロント・エンド・ディレクタ1801〜18032を有する複数、ここでは、8つのフロント・エンド・ディレクタ・ボード1901〜1908、ここでは各々4つのバック・エンド・ディレクタ2001〜20032を有する、複数、ここでは、8つのバック・エンド・ディレクタ・ボード2101〜2108、および複数、ここでは、8つのメモリ・ボード220’を格納している。これら全体でグローバル・キャッシュ・メモリ220を構成する。これらのボードは、背面302の前側に差し込まれる。(尚、背面302は半平面(mid−plane)プリント回路ボードであることを注記しておく。)背面302の後ろ側に差し込まれるのは、メッセージ・ネットワーク・ボード3041、3042である。背面302の後ろ側は、図2ないし図5には示されていない、アダプタ・ボードが差し込まれている。これらは、図2に示すように、背面302の後ろ側に差し込まれたボードを、コンピュータ120およびディスク・ドライブ・バンク140と結合する。即ち、端的に再度図2を参照すると、図示しないI/Oアダプタが、フロント・エンド・ディレクタ1801〜18032の各1つおよびホスト・コンピュータ120間に結合され、図示しないI/Oアダプタが、バック・エンド・ディレクタ2001〜20032の各1つおよびディスク・ドライブ・バンク140の間に結合されている。
【0027】
次に図6を参照すると、背面302に差し込まれた、ディレクタ・ボード1901〜1908、2101〜2108およびグローバル・キャッシュ・メモリ220、ならびに、ホスト・コンピュータ120と共に、図示しないI/Oアダプタ・ボードを介して同様に背面302に差し込まれた、ディスク・ドライブ・バンク内のディスク・ドライブ1411〜14132を含むシステム・インターフェース160が示されている。メッセージ・ネットワーク260(図2)は、メッセージ・ネットワーク・ボード3041および3042を含む。メッセージ・ネットワーク・ボード3041および3042の各1つは、その構造が同一である。1対のメッセージ・ネットワーク・ボード3041および3042は、冗長性およびメッセージ負荷の均衡化のために用いられる。したがって、各メッセージ・ネットワーク・ボード3041、3042は、コントローラ306(即ち、メッセージ・ネットワーク・ボード3041、3042の一方、ここではボード3041について図7に示すように、CPU、システム・コントローラ・インターフェース、およびメモリから成る初期化および診断プロセッサ)、およびクロスバー・スイッチ部308(例えば、ここでは4つのスイッチ3081〜3084で構成されたスイッチング・ファブリック)を含む。
【0028】
再度図6を参照すると、ディレクタ・ボード1901〜2108の各1つは、先に注記したように、4つのディレクタ1801〜18032、2001〜20032(図2)を含む。尚、ボード当たり4つのフロント・エンド・ディレクタ1801〜18032を有するディレクタ・ボード1901〜1908をフロント・エンド・ディレクタと呼び、ボード当たり4つのバック・エンド・ディレクタ2001〜20032を有するディレクタ・ボード2101〜2108をバック・エンド・ディレクタと呼ぶことを注記しておく。ディレクタ1801〜18032、ディレクタ2001〜20032の各1つは、CPU310、RAM312(先に言及したマイクロプロセッサ299を構成する)、メッセージ・エンジン/CPUコントローラ314、およびデータ・パイプ316を含む。
【0029】
ディレクタ・ボード1901〜2108の各1つは、クロスバー・スイッチ318を含む。クロスバー・スイッチ318は、4つの入出力ポート319を有し、各1つが、ディレクタ・ボード1901〜2108上の4つのディレクタ1801〜18032、2001〜20032の対応する1つのデータ・パイプ316に結合されている。クロスバー・スイッチ318は、図6において参照番号321で集合的に識別されている8つの出入力ポートを有する(これらは背面302に差し込まれる)。フロント・エンド・ディレクタ・ボード1911〜1918上のクロスバー・スイッチ318は、フロント・エンド・ディレクタ・ボード1901〜1908上の4つのフロント・エンド・ディレクタ1801〜18032から選択した1つのデータ・パイプ316を、背面302および図示しないI/Oアダプタを介して、グローバル・キャッシュ・メモリ220に結合するために用いられる。バック・エンド・ディレクタ・ボード2101〜2108上のクロスバー・スイッチ318は、バック・エンド・ディレクタ・ボード2101〜2108上の4つのバック・エンド・ディレクタ2001〜20032から選択した1つのデータ・パイプ316を、背面302および図示しないI/Oアダプタを介して、グローバル・キャッシュ・メモリ220に結合するために用いられる。したがって、図2を参照すると、フロント・エンド・ディレクタ1801〜18032内のデータ・パイプ316は、ホスト・コンピュータ120およびグローバル・キャッシュ・メモリ220間でデータを結合し、一方バック・エンド・ディレクタ2001〜20032内のデータ・パイプ316は、ディスク・ドライブ・バンク140およびグローバル・キャッシュ・メモリ220間でデータを結合する。尚、ディレクタ1801〜18032、2001〜20032の各1つおよびグローバル・キャッシュ・メモリ220の間には、別個の二点間データ経路P1〜P64(図2)があることを注記しておく。また、背面302は、プリント回路ボードの1つ以上の層の上において、エッチングした導体のみで構成されているので、受動背面であることを注記しておく。即ち、背面302は能動構成部品を全く有していない。
【0030】
再度図6を参照すると、ディレクタ・ボード1901〜2108の各1つはクロスバー・スイッチ320を含む。各クロスバー・スイッチ320は、4つの入出力ポート323を有し、4つの入出力ポート323の各1つは、ディレクタ・ボード1901〜2108上の4つのディレクタ1801〜18032、2001〜20032の対応する1つのメッセージ・エンジン/CPUコントローラ314に結合されている。各クロスバー・スイッチ320は、1対の出入力ポート3251、3252を有し、これらは背面302に差し込まれている。各ポート3251、3252は、それぞれ、背面302を介して、メッセージ・ネットワーク・ボード3041、3042の対応する1つに結合されている。フロント・エンド・ディレクタ・ボード1901〜1908上のクロスバー・スイッチ320は、フロント・エンド・ディレクタ・ボード1901〜1908上の4つのフロント・エンド・ディレクタ1801〜18032から選択した1つのメッセージ・エンジン/CPUコントローラ314と、図2のメッセージ・ネットワーク260との間でメッセージを結合するために用いられる。同様に、バック・エンド・ディレクタ・ボード2101〜2108は、バック・エンド・ディレクタ・ボード2101〜2108上の4つのバック・エンド・ディレクタ2001〜20032から選択した1つが生成するメッセージを、かかる4つのバック・エンド・ディレクタから選択した1つのメッセージ・エンジン/CPUコントローラ314とメッセージ・ネットワーク260(図2)との間で結合するために用いられる。したがって、再度図2を参照すると、ディレクタ1801〜18032、2001〜20032の各1つとメッセージ・ネットワーク260との間に別個の専用メッセージ経路を有する(各ディレクタ毎に背面302に対してM個の個別接続が必要となる。ここでMは整数である)代わりに、ここでは、M/4個の個別接続だけで済む。このように、ディレクタ1801〜18032、2001〜20032および背面302間の接続総数は、1/4に減少する。したがって、図2および図6から、メッセージ・ネットワーク260(図2)は、クロスバー・スイッチ320およびメッセージ・ネットワーク・ボード3041、3042を含むことがわかる。
【0031】
図3Aに示すように、各メッセージは64バイトの記述子であり、ソフトウエア制御の下でCPU310(図6)によって作成され、RAM312内の送出キューに記憶される。RAM312内の送出キューからメッセージを読み出し、メッセージ・ネットワーク260(図2)を通じて、以下で説明するDMA動作によって、1つ以上の別のディレクタに送信する場合、パケット化/パケット分解部428(図8)のパケット化部分において、図3Bに示すMAC型パケットにパケット化する。ここでは、NGIOプロトコル仕様を用いる。パケット型には3つある。即ち、メッセージ・パケット部、承認パケット、およびメッセージ・ネットワーク・ファブリック管理パケットであり、後者は、初期化中(即ち、起動中)にメッセージ・ネットワーク・ルーティングを確立するために用いられる。図3Bに示すように、MACパケットの各1つは、ソース(即ち、送信側ディレクタ)および宛先(即ち、受信側ディレクタ)アドレスを含む8バイトのヘッダ、ペイロードを有し、4バイトの巡回冗長チェック(CRC)が末尾に位置する。承認パケット(即ち、信号)は、4バイトの承認ペイロード部を有する。メッセージ・パケットは、32バイトのペイロード部を有する。ファブリック管理パケット(FMP)は、256バイトのペイロード部を有する。MACパケットはクロスバー・スイッチ320に送られる。パケットの宛先部分は、メッセージの宛先を示すために用いられ、スイッチ320によってデコードされ、どのポートにメッセージを導出するかについて判定を行なう。デコード・プロセスは、スイッチ318内のデコーダ・テーブル327を用い、かかるテーブルは、初期化および診断プロセッサ(コントローラ)306(図6)による起動中に、コントローラによって初期化される。テーブル327(図8)は、メッセージに対するルーティングを識別するMACパケットの宛先アドレス部分と、ディレクタ・ボード1901〜1908、2101〜2108上の4つのディレクタ1801〜18032、2001〜20032の1つ、またはメッセージを発信する先のメッセージ・ネットワーク・ボード3041、3042の1つとの間の関係を与える。
【0032】
より具体的には、図6を参照すると、クロスバー・スイッチ320の各1つにつき、1対の出入力ポート3251、3252が設けられており、各々、1対のメッセージ・ネットワーク・ボード3041、3042の対応する1つに結合されている。したがって、メッセージ・ネットワーク・ボード3041、3042の各1つは、16個の入出力ポート3221〜32216を有し、各1つが、図示のように、背面302を介して、ディレクタ・ボード1901〜1908、2101〜2108の対応する1つの出入力ポート3251、3252の対応する1つに結合されている。したがって、一例として図7のメッセージ・ネットワーク・ボード3041を検討すると、各スイッチ3081〜3084は、3つの結合ポート3241〜3243を含む。結合ポート3241〜3243は、図7に示すように、スイッチ3221〜3224を相互接続するために用いられる。したがって、メッセージ・ネットワーク・ボード3041を検討すると、図示のように、入出力ポート3221〜3228は、フロント・エンド・ディレクタ・ボード1901〜1908の出入力ポート3251に結合され、入出力ポート3229〜32216は、バック・エンド・ディレクタ・ボード2101〜2108の出入力ポート3251に結合されている。同様に、メッセージ・ネットワーク・ボード3042を検討すると、その入出力ポート3221〜3228は、背面302を介して、フロント・エンド・ディレクタ・ボード1901〜1908の出入力ポート3252に結合され、入出力ポート3229〜32216は、背面302を介して、バック・エンド・ディレクタ・ボード2101〜2108の出入力ポート3252に結合されている。
【0033】
前述のように、メッセージ・ネットワーク・ボード3041、3042の各1つは、図6および図7に示すように、プロセッサ306(図6)および4つのスイッチ3081〜3084を有するクロスバー・スイッチ部308を含む。スイッチ3081〜3084は、図示のように相互接続されているので、メッセージは入出力ポート3221〜32216のいずれの対の間でも通過することができる。このため、フロント・エンド・ディレクタ1801〜18032のいずれの1つからのメッセージでも、フロント・エンド・ディレクタ1801〜18032の他の1つに、および/またはバック・エンド・ディレクタ2001〜20032のいずれの1つにでも結合することが可能となる。同様に、バック・エンド・ディレクタ2001〜20032のいずれの1つからのメッセージでも、バック・エンド・ディレクタ2001〜20032の他の1つに、および/またはフロント・エンド・ディレクタ1801〜18032のいずれの1つにでも結合することができる。
【0034】
前述のように、各MACパケット(図3B)は、アドレス宛先部分およびデータ・ペイロード部分を含む。MACヘッダは、MACパケットの宛先を示すために用いられ、かかるMACヘッダはスイッチによってデコードされ、どのポートにMACパケットを導出すべきかについて判定を行なう。このデコード・プロセスは、スイッチ3081〜3084内のテーブルを用いる。かかるテーブルは、起動中にプロセッサ306によって初期化される。このテーブルは、MACパケットの宛先を識別するMACヘッダと、メッセージ・ネットワークを通じて辿るルートとの関係を与える。したがって、初期化の後、スイッチ320およびスイッチ部308内のスイッチ3081〜3084はパケット・ルーティングを与え、これによって、ディレクタ1801〜18032、2001〜20032の各1つは、それ自体および他のいずれか1つのディレクタ間でメッセージを送信することができ、その際、かかる他のディレクタが同じディレクタ・ボード1901〜1908、2101〜2108上にあるか、または別のディレクタ・ボード上にあるかは無関係である。更に、MACパケットは、図3Bに示すように、そのヘッダ内に追加ビットBを有し、これによって、メッセージはメッセージ・ネットワーク・ボード3041またはメッセージ・ネットワーク・ボード3042を通過することが可能になる。通常動作の間、この追加ビットBは、論理1および論理0間で切り替えられ、1つのメッセージが冗長メッセージ・ネットワーク・ボード3041、3042の一方を通過し、次のメッセージがメッセージ・ネットワーク・ボード3041、3042の他方を通過するようにして、システム上の負荷要求を均衡化する。しかしながら、メッセージ・ネットワーク・ボード3041、3042の一方における障害の場合、障害を発生したメッセージ・ネットワーク・ボードを交換するまで、ボード3041、3042の障害がない方のみを用いる。
【0035】
次に図8を参照して、ディレクタ・ボード1901〜1908、2101〜2108の一例、ここでは、ディレクタ1801、1803、1805、1807を含むディレクタ・ボード1901を示す。ディレクタ1801〜1804の一例、ここでは、ディレクタ1801を詳細に示すと、ディレクタ1801は、データ・パイプ316、メッセージ・エンジン/CPUコントローラ314、RAM312、およびCPU310を含み、これらは全て、図示のように、CPUインターフェース・バス317に結合されている。一例としてのディレクタ1801は、更に、ローカル・キャッシュ・メモリ319(CPU310に結合されている)、先に図6および図7に関連付けて端的に説明した、クロスバー・スイッチ318、およびクロスバー・スイッチ320を含む。データ・パイプ316は、プロトコル変換器400、4ポートRAM402、および4ポートRAMコントローラ404を含み、図示のように配列されている。端的に説明すると、プロトコル変換器400は、フロント・エンド・ディレクタ1801〜18032の場合、ホスト・コンピュータ120のプロトコル間、(そして、バック・エンド・ディレクタ2001〜20032の場合、バンク140内のディスク・ドライブによって用いられるプロトコル間)、およびディレクタ1801〜1803、2001〜20032およびグローバル・メモリ220(図2)間のプロトコルを変換する。即ち、ホスト・コンピュータ120が用いるプロトコルは、例えば、ファイバ・チャネル、SCSI、ESCONまたはFICONであり、例えば、ホスト・コンピュータ120の製造者によって決定され、一方システム・インターフェース160(図2)内部で用いられるプロトコルは、インターフェース160の製造者によって選択される場合がある。4ポートRAM402は、FIFOであり、RAM402に入力するレート・データは、RAM402から出力するレート・データとは異なる場合があるため、コントローラ404によって制御される。RAM402は4つのポートを有し、各々が18ビット・ディジタル・ワードを処理するように構成されている。ここで、プロトコル変換器400は、システム・インターフェース160(図2)のプロトコルに対して36ビットのディジタル・ワードを生成する。このワードの18ビット部分は、4ポートRAM402の1対のポートの一方に結合され、このワードの別の18ビット部分は、4ポートRAM402のポート対の他方に結合されている。4ポートRAMは、1対のポート402A、402Bを有し、ポート402A、402Bの各1つは、18ビット・ディジタル・ワードを処理するように構成されている。ポート402A、402Bの各1つは、独立制御可能であり、RAM402内のメモリ・アレイに対して、調停は受けるが独立してアクセスすることができる。図示のように、データは、クロスバー・スイッチ318を介して、ポート402A、402Bおよびキャッシュ・メモリ220(図2)間で転送される。
【0036】
クロスバー・スイッチ318は、1対のスイッチ406A、406Bを含む。スイッチ406A、406Bの各1つは、4つの入出力ディレクタ側ポートD1〜D4(先に図6と関連付けてまとめてポート319として示した)、および4つの入出力メモリ側ポートM1〜M4、M5〜M8をそれぞれ、図示のように含む。入出力メモリ側ポートM1〜M4、M5〜M8は、先に図6に関連付けてまとめて317として示した。スイッチ406Aのディレクタ側ポートD1〜D4は、図示のように、ディレクタ1801、1803、1805、1807の各1つにおける4ポートRAM402の402Aポートに接続されている。同様に、スイッチ406Bのディレクタ側ポートは、図示のように、ディレクタ1801、1803、1805、1807の各1つにおける4ポートRAM402の402Bポートに接続されている。図示のように、ポートD1〜D4は、バスRA1〜RA4上においてディレクタ1801、1803、1805、1807の内のコントローラによってスイッチ406Aに供給された制御ワードに応じて、ポートM1〜M4に選択的に結合され、ポートD1〜D4は、バスRB1〜RB4上においてディレクタ1801、1803、1805、1807の内のコントローラによってスイッチ406Bに供給された制御ワードに応じて、ポートM5〜M8に結合されている。バスRA1〜RA4上の信号は要求信号である。したがって、ディレクタ1801、1803、1805、1807のいずれか1つのポート402Aを、バスRA1〜RA4上の要求信号に応じて、選択的に、スイッチ406AのポートM1〜M4のいずれか1つに結合することができる。同様に、ディレクタ1801〜1804のいずれの1つのポート402Bも、バスRB1〜RB4上の要求信号に応じて選択的に、スイッチ406BのポートM1〜M4のいずれの1つにでも結合することができる。ディレクタ・ボード1901〜1908、2101〜2108およびグローバル・キャッシュ・メモリ220間の結合を図9に示す。
【0037】
より具体的には、図2も参照すると、前述のように、ホスト・コンピュータ120内のホスト・コンピュータ・プロセッサ1211〜12132の各1つは、1対のフロント・エンド・ディレクタ1801〜18032に結合され、それに結合されているフロント・エンド・ディレクタ1801〜18032の1つにおける障害の場合に冗長性を与えるようにしている。同様に、ディスク・ドライブ・バンク140は、複数、ここでは32個のディスク・ドライブ1411〜14132を有し、各ディスク・ドライブ1411〜14132は1対のバック・エンド・ディレクタ2001〜20032に結合され、それに結合されているバック・エンド・ディレクタ2001〜20032の1つにおける障害の場合に冗長性を与えるようにしている。したがって、一例として、ホスト・コンピュータ・プロセッサ1211を検討すると、かかるプロセッサ1211は、1対のフロント・エンド・ディレクタ1801、1802に結合されている。したがって、ディレクタ1801に障害が発生した場合、ホスト・コンピュータ・プロセッサ1211は、他のフロント・エンド・ディレクタ1802によってではあるが、なおもシステム・インターフェース160にアクセスすることができる。このように、ディレクタ1801、1802は、冗長ディレクタ対と見なされる。同様に、他の冗長フロント・エンド・ディレクタ対は、フロント・エンド・ディレクタ1803、1804;1805、1806;1807、1808;1809、18010;18011、18012;18013、18014;18015、18016;18017、18018;18019、18020;18021、18022;18023、18024;18025、18026;18027、18028;18029、18030;および18031、18032である(図2には、ディレクタ18031、18032のみを示す)。
【0038】
同様に、ディスク・ドライブ1411は、1対のバック・エンド・ディレクタ2001、2002に結合されている。したがって、ディレクタ2001に障害が発生した場合、ディスク・ドライブ1411は、他のバック・エンド・ディレクタ2002によってではあるが、なおもシステム・インターフェース160にアクセスすることができる。このように、ディレクタ2001、2002は、冗長ディレクタ対と見なされる。同様に、他の冗長バック・エンド・ディレクタ対は、バック・エンド・ディレクタ2003、2004;2005、2006;2007、2008;2009、20010;20011、20012;20013、20014;20015、20016;20017、20018;20019、20020;20021、20022;20023、20024;20025、20026;20027、20028;20029、20030;および20031、20032である(図2には、ディレクタ20031、20032のみを示す)。更に、図9も参照すると、グローバル・キャッシュ・メモリ220は、図示のように、複数、ここでは8個のキャッシュ・メモリ・ボード2201〜2208を含む。更にまた、図10を参照すると、キャッシュ・メモリ・ボードの一例、ここではボード2201が詳細に示されている。これについては、”Fault Tolerant Memory System”(フォールト・トレラント・メモリ・システム)と題する米国特許第5,943,287号に詳しく記載されている。この特許は、発明者がJohn K.Walton(ジョン K.ウォルトン)であり、1999年8月24日に発行され、本願と同じ譲受人に譲渡されている。その主題全体は、この言及により本願にも含まれるものとする。したがって、図10に示すように、ボード2201は、複数、ここでは4つのRAMメモリ・アレイを含み、アレイの各1つは、1対の冗長ポート、即ち、AポートおよびBポートを有する。ボード自体は16個のポート、即ち、8つ1組のAポートMA1〜MA8および8つ1組のBポートMB1〜MB8を有する。8つのAポートの内4つ、ここではAポートMA1〜MA4は、図9に示すように、フロント・エンド・ディレクタ・ボード1901、1903、1905、1907の各々のM1ポートにそれぞれ結合されている。8つのBポートの内4つ、ここではBポートMB1〜MB4は、図9に示すように、フロント・エンド・ディレクタ・ボード1902、1904、1906、1908の各々のM1ポートにそれぞれ結合されている。8つのAポートの内別の4つ、ここではAポートMA5〜MA8は、図9に示すように、バック・エンド・ディレクタ・ボード2101、2103、2105、2107の各々のM1ポートにそれぞれ結合されている。8つのBポートの内別の4つ、ここではBポートMB5〜MB8は、図9に示すように、バック・エンド・ディレクタ・ボード2102、2104、2106、2108の各々のM1ポートにそれぞれ結合されている。
【0039】
一例として、4つのAポートMA1〜MA4について検討すると、4つのAポートMA1〜MA4の各1つは、論理ネットワーク2211Aを通じて、メモリ・アレイのいずれか1つのAポートに結合することができる。したがって、ポートMA1について検討すると、かかるポートは、4つのメモリ・アレイのAポートに結合することができる。同様に、4つのAポートMA5〜MA8について検討すると、4つのAポートMA5〜MA8の各1つは、論理ネットワーク2211Bを通じて、メモリ・アレイのいずれか1つのAポートに結合することができる。同様に、4つのBポートMB1〜MB4について検討すると、4つのBポートMB1〜MB4の各1つは、論理ネットワーク2211Bを通じて、メモリ・アレイのいずれか1つのBポートに結合することができる。同様に、4つのBポートMB5〜MB8について検討すると、4つのBポートMB5〜MB8の各1つは、論理ネットワーク2212Bを通じて、メモリ・アレイのいずれか1つのBポートに結合することができる。したがって、ポートMB1について検討すると、かかるポートは、4つのメモリ・アレイのBポートに結合することができる。このように、いずれかのフロント・エンド・ディレクタ1801〜18032またはバック・エンド・ディレクタ2001〜20032からのデータおよび制御が、メモリ・ボード上の4つのメモリ・アレイの各1つに到達することができる経路は、2系統ある。つまり、メモリ・ボード上には、8組の冗長ポート、即ち、ポートMA1、MB1;MA2、MB2;MA3、MB3;MA4、MB4;MA5、MB5;MA6、MB6;MA7、MB7;MA8、MB8がある。更に、前述のように、ディレクタの各1つは、1対の冗長ポート、即ち、402Aポートおよび402Bポート(図8)を有する。したがって、冗長ディレクタの各対毎に、当該対内のディレクタの一方のAポート(即ち、ポート402A)は、冗長メモリ・ポート対の一方に接続され、かかる対におけるディレクタの他方のBポート(即ち、402B)は、冗長メモリ・ポート対の他方に接続される。
【0040】
即ち、図11を参照すると、一例として冗長ディレクタ対が示されており、ここでは、例えば、フロント・エンド・ディレクタ1801およびフロント・エンド・ディレクタ1802とする。最初に注記すべきは、各冗長ディレクタ対におけるディレクタ1801、1802は、それぞれ異なるディレクタ・ボード、ここでは1901、1902上になければならないということである。したがって、ここでは、フロント・エンド・ディレクタ・ボード1901〜1908は、その上に、フロント・エンド・ディレクタ1801、1803、1805、1807;フロント・エンド・ディレクタ1802、1804、1806、1808;フロント・エンド・ディレクタ1809、18011、18013、18015;フロント・エンド・ディレクタ18010、18012、18014、18016;フロント・エンド・ディレクタ18017、18019、18021、18023;フロント・エンド・ディレクタ18018、18020、18022、18024;フロント・エンド・ディレクタ18025、18027、18029、18031;フロント・エンド・ディレクタ18018、18020、18022、18024を有する。したがって、ここでは、バック・エンド・ディレクタ・ボード2101〜2108は、その上に、バック・エンド・ディレクタ2001、2003、2005、2007;バック・エンド・ディレクタ2002、2004、2006、2008;バック・エンド・ディレクタ2009、20011、20013、20015;バック・エンド・ディレクタ20010、20012、20014、20016;バック・エンド・ディレクタ20017、20019、20021、20023;バック・エンド・ディレクタ20018、20020、20022、20024;バック・エンド・ディレクタ20025、20027、20029、20031;バック・エンド・ディレクタ20018、20020、20022、20024を有する。
【0041】
このように、図10に示すフロント・エンド・ディレクタ1801は、ここでは、フロント・エンド・ディレクタ・ボード1901上にあり、図11に示すその冗長フロント・エンド・ディレクタ1802は、別のフロント・エンド・ディレクタ・ボード、ここでは例えば、フロント・エンド・ディレクタ・ボード1902上にある。前述のように、4ポートRAM402のポート402A(即ち、先に述べたAポート)は、クロスバー・スイッチ318のスイッチ406Aに接続され、4ポートRAM402のポート402B(即ち、先に述べたBポート)は、クロスバー・スイッチ318のスイッチ406Bに接続されている。冗長ディレクタ1802も同様であるが、ディレクタ1801のスイッチ406AのポートM1〜M4は、図示のように、グローバル・キャッシュ・メモリ・ボード2201〜2204のMA1ポートに接続されており、その冗長ディレクタ1802に対して、スイッチ406AのポートM1〜M4は、図示のように、グローバル・キャッシュ・メモリ・ボード2201〜2204の冗長MB1ポートに接続されている。
【0042】
クロスバー・スイッチ318(図8)について更に詳しく言及すると、前述のように、ディレクタ・ボード1901〜2108の各1つは、かかるスイッチ318を有し、かかるスイッチ318は、1対のスイッチ406A、406Bを含む。スイッチ406A、406Bの各1つは、その構造が同一であり、その一例として、ここではスイッチ406Aを図12に詳細に示す。つまり、スイッチ406Aは、ディレクタ・ボードの一例1901に関連して説明したように、4つの入出力ディレクタ側ポートD1〜D4を含む。したがって、図8に示すディレクタ・ボード1901では、スイッチ406Aの4つの入出力ディレクタ側ポートD1〜D4は、各々、ディレクタ・ボード1901上のディレクタ1801、1803、1805、1807の対応する1つのポート402Aに結合されている。
【0043】
再度図12を参照すると、スイッチの一例406Aは、複数、ここでは4個のスイッチ部4301〜4304を含む。スイッチ部4301〜4304の各1つは、その構造が同一であり、入出力ディレクタ側ポートD1〜D4の対応する1つと、出入力メモリ側ポートM1〜M4の対応する1つとの間に、図示のようにそれぞれ結合されている。(尚、スイッチ406B(図8)の出入力メモリ側ポートは、図示のように、ポートM5〜M8として示されていることは認められよう。また、スイッチ406Aは、ディレクタ1801、1803、1805、1807(図8)における4ポート・コントローラ404からのバスRA1〜RA4上の要求信号に応答し、スイッチ406Bは、同様に、ディレクタ1801、1803、1805、1807内のコントローラ404からのバスRB1〜RB4上の要求信号に応答することも理解されよう)。即ち、ディレクタ1801のコントローラ404は、バスRA1またはバスRB1上に要求信号を生成する。同様に、ディレクタ1803のコントローラ404は、バスRA2またはバスRB2上に要求信号を生成し、ディレクタ1805のコントローラ404は、バスRA3またはバスRB3上に要求信号を生成し、ディレクタ1807のコントローラ404は、バスRA4またはバスRB4上に要求信号を生成する。
【0044】
一例としてスイッチ部4301について検討すると、かかるスイッチ部4301は、図12では、バスRA1上の要求信号を供給されるFIFO432を含むものとして示されている。(尚、スイッチ4302〜4304内の、図示しない、FIFOには、それぞれ、要求信号RA2〜RA4が供給されることは理解されよう)。また、スイッチ部4061は、要求発生部434、アービタ436、およびセレクタ442、446も含み、全て図示のように配列されている。バスDM1〜DM4上のメモリ側ポートM1〜M4におけるデータが、セレクタ446への入力として供給される。また、セレクタ446には、FIFO432に記憶されている要求信号RA1に応答して、バス449上に要求発生器によって生成された制御信号も供給される。バス449上の制御信号は、セレクタ446に、ディレクタ側ポートD1に結合すべきメモリ側ポートM1〜M4の1つを示す。他のスイッチ部4302〜4304も、それぞれ、ディレクタ側ポートD1〜D4およびメモリ側ポートM1〜M4については、同様に動作する。
【0045】
尚、ポートD1におけるワードのデータ部分(即ち、バスDD1上のワード)は別のスイッチ部4302〜4304にも結合されていることを注記しておく。更に、ポートD2〜D4におけるワードのデータ部分(即ち、それぞれ、バスDD2〜DD4上のワード)は、図示のように、スイッチ部4301〜4304に供給されることも注記しておく。即ち、スイッチ部4301〜4304の各1つは、図示のように、ポートD1〜D4におけるワードのデータ部分(即ち、バスDD1〜DD4)を有する。また、ポートM1におけるワードのデータ部分(即ち、バスDM1上のワード)は他のスイッチ部4302〜4304にも結合されていることを注記しておく。更に、ポートM2〜M4におけるワードのデータ部分(即ち、それぞれ、バスDM2〜DM4上のワード)は、図示のように、スイッチ部4302〜4304に供給されることも注記しておく。即ち、図示のように、スイッチ部4301〜4304の各1つは、ポートM1〜M4(即ちバスDM1〜DM4)上のワードのデータ部分を有する。
【0046】
以下で更に詳しく説明するが、バスRA1上のスイッチ部4301に対する要求は、ディレクタ1801からの要求であり、ディレクタ1801のポート402A(ディレクタ側ポートD1)に結合するスイッチ4301内の4つのポートM1〜M4の1つを識別する。したがって、ディレクタ1801のポート402Aは、バスRA1上のデータに応じて、選択的に、メモリ側ポートM1〜M4の1つに結合することができる。同様に、スイッチ部4302〜4304それぞれに対するバスRA2、RA3、RA4上の要求は、それぞれ、ディレクタ1803、1805、1807からの要求であり、ディレクタ1803、1805、1807のポート402Aに結合するスイッチ4301〜4304内の4つのポートM1〜M4の1つをそれぞれ識別する。
【0047】
より具体的には、要求RA1は、4ポートRAMコントローラ440(図8)によって生成される毎に、受信FIFO432に記憶される。要求発生器434は、FIFO432から要求を受信し、4つのメモリ側ポートM1〜M4の内どの1つをディレクタ1801のポート402Aに結合するか判断する。メモリ側ポートM1〜M4に対するこれらの要求は、それぞれ、ラインRA1,1〜RA1,4上に生成される。したがって、ラインRA1,1(即ち、メモリ側ポートM1に対する要求)はアービタ436に供給され、ラインRA2,1、RA3,1、RA4,1上の(ディレクタ1803、1805、1807のポート402Aに結合されている)スイッチ部4302〜4304からの要求も、それぞれ、図示のようにアービタ436に供給される。アービタ436は、メモリ側ポートM1に対する多数の要求を、先着順で解決する。次いで、アービタ436は、メモリ側ポートM1に結合するディレクタ1801、1803、1805、1807の1つを示す制御信号を、バス435上に生成する。
【0048】
バス435上の制御信号は、セレクタ442に供給される。また、セレクタ442には、ポートD1におけるデータのデータ部分(即ち、データ・バスDD1上のデータ)が、図示のように、ポートD2〜D4におけるデータのデータ部分、即ち、それぞれ、データ・バスDD2〜DD4上のデータと共に供給される。したがって、バス435上の制御信号によって、セレクタ442は、その出力に、アービタ436によってメモリ側ポートM1へのアクセスを付与された、ディレクタ1801、1803、1805、1807の1つからのデータ・バスDD1〜DD4を結合する。セレクタ442の選択された出力は、メモリ側ポートM1に結合される。尚、アービタ436がラインRA1,1、RA2,1、RA3,1、RA4,1上の信号を通じて要求を受信したとき、アービタ436によって、それぞれラインAK1,1、AK1,2、AK1,3、AK1,4上の承認信号を通じて承認がそれぞれ返送されることを注記しておく。かかる信号は、それぞれ、スイッチ部4301、4302、4303、4304における要求発生器434に供給される。
【0049】
このように、いずれかのポートD1〜D4上のデータをポートM1〜M4の1つに結合し、先に図2に関連付けて説明した二点間データ経路P1〜P64を実施することができる。
【0050】
再度図8を参照すると、ホスト・コンピュータ120(図2)からのデータは、多くのホスト・コンピュータ・プロセッサ1211〜12132からバッチでシステム・インターフェース160(図2)に提示される。つまり、ホスト・コンピュータ・プロセッサ1211〜12132からのデータは、ディレクタ1801〜18032に提示される際に、互いにインターリーブされる。各ホスト・コンピュータ・プロセッサ1801〜18032(即ち、ソース)からのバッチは、プロトコル変換器400によって、タグが付けられる。更に特定すれば、ファイバ・チャネル接続の場合は、Tacheon ASICによる。コントローラ404には、初期化の間に参照テーブルが形成されている。データがプロトコル変換器400に入来し、コントローラ404の制御の下で4ポートRAM420に入力されると、プロトコル変換器400は、コントローラに、データが4ポートRAM420内にあることを知らせる。コントローラ404は、その参照テーブルのコンフィギュレーションを見て、データを記憶するグローバル・キャッシュ・メモリ220のロケーション(例えば、キャッシュ・メモリ・ボード2201〜2208)を決定する。こうして、コントローラ404は適切なバスRA1、RB1上に要求信号を生成し、次いで4ポートRAM402に、4ポートRAM402内の特定のロケーションにデータ・ブロックがあることを知らせ、それをグローバル・キャッシュ・メモリ220内の前述の特定のロケーションに移動する。また、クロスバー・スイッチ318は、バスRA2、RB2、RA3、RB3、RA4、RB4上にそれぞれ要求信号を形成することによって、当該特定のディレクタ・ボード1901上のディレクタ1803、1805、1807における他のコントローラ404のどれが要求しているかを調べることができる。多数の要求の調停は、図12に関連付けて先に説明したように、アービタ436によって処理される。
【0051】
再度図8を参照すると、ディレクタの一例1801は、メッセージ・エンジン/CPUコントローラ314を含むものとして示されている。メッセージ・エンジン/CPUコントローラ314は、フィールド・プログラム可能ゲート・アレイ(FPGA)内に内蔵されている。メッセージ・エンジン(ME)315は、図示のように、CPUバス317およびDMA部408に結合されている。メッセージ・エンジン(ME)315は、直接メモリ・アクセス(DMA)部408、メッセージ・エンジン(ME)状態機械410、送信バッファ424および受信バッファ424、MACパケット化/パケット分解部428、送信および受信ポインタ・レジスタ420、ならびにパリティ発生器321を含む。DMA部408は、図示してあり図13と関連付けて以下に詳細に説明するDMA送信部418、および図示してあり図14と関連付けて以下に詳細に説明するDMA受信部424を含み、これらの各々は、図8に示すように、CPUバス・インターフェース317に結合されている。メッセージ・エンジン(ME)315は、DMA送信部418に結合されている送信データ・バッファ422、DMA受信部421に結合されている受信データ・バッファ424、アドレス・デコーダ401を介してCPUバス317に結合されているレジスタ420、送信データ・バッファ422に結合されている前述のパケット化/パケット分解部428、図示のような受信データ・バッファ424およびクロスバー・スイッチ320、ならびに送信データ・バッファ422およびクロスバー・スイッチ320間に結合されているパリティ発生器321を含む。即ち、パケット化部分428Pは、メッセージ・ペイロードを、送信データ・バッファ422からクロスバー・スイッチ320に受け渡されるMACパケット(図3B)にパケット化するために用いられ、パケット分解部分428Dは、MACパケットを、クロスバー・スイッチ320から受信データ・バッファ424に受け渡されるメッセージ・ペイロードに分解するために用いられる。パケット化は、ここでは、MACコアによって行われ、MACコアは、MACパケットを構築し、前述のように、メッセージを送信および受信するディレクタを示すソース・アドレスおよび宛先アドレス指定、ならびに巡回冗長チェック(CRC)というようなものを、各メッセージに添付する。また、メッセージ・エンジン(ME)315は、受信書き込みポインタ450、受信読み出しポインタ452、送信書き込みポインタ454、および送信読み出しポインタ456も含む。
【0052】
次に図15乃至図21を参照しながら、ディレクタ1801〜18032、2001〜20032からのメッセージの送信、およびディレクタ2101〜21032によるメッセージの受信(ここでは、図8に示すディレクタ1801を例にとる)について説明する。最初にメッセージの送信について検討するために、図8および図15乃至図18を参照する。まず、前述のように、起動時に、メッセージ・ネットワーク・ボード3041、3042双方のコントローラ306(図6)は、スイッチ部308内のスイッチ3081〜3084およびクロスバー・スイッチ320に対して先に述べたメッセージ・ルーティング・マッピングを初期化する。前述のように、要求はホスト・コンピュータ120によって行われる。この要求は、プロトコル変換器400に送られる。プロトコル変換器400は、CPUバス317およびバッファ301を介してマイクロプロセッサ299に要求を送る。例示のディレクタ1801のマイクロプロセッサ299内にあるCPU310(図8)が、メッセージをディレクタ1802〜18032、2001〜20032の別の1つに送信すると判断した場合(例えば、CPU310は、グローバル・キャッシュ・メモリ220(図2)において「ミス」があったと判定し、図2に関連付けて先に説明したように、バック・エンド・ディレクタ2001〜20032の適切な1つにメッセージを送ろうとする)、CPU310は64バイトの記述子(図3A)を構築する。この記述子は、ディスク・ドライブ・バンク140(図2)から読み出すデータのバッチのアドレスを示す32バイトのメッセージ・ペイロード(ステップ500)、および8バイト・ビット・ベクトルによって、メッセージの宛先、即ち、メッセージを受信するディレクタまたは複数のディレクタを示す32バイトのコマンド・フィールド(ステップ510)を含む。コマンド・フィールドの8バイト部分は、メッセージを受信するディレクタまたは複数のディレクタを示す。即ち、8バイト部分における64ビットの各1つは64個のディレクタの1つに対応する。ここでは、論理1のビットは、対応するディレクタがメッセージを受信することを示し、論理0は、かかる対応するディレクタがメッセージを受信しないことを示す。したがって、8バイト・ワードが論理1ビットを1つよりも多く有する場合、1つよりも多いディレクタが同じメッセージを受信することになる。以下で説明するが、同じメッセージは並行にかかるディレクタの全てに送られるのではなく、逆に同じメッセージは順次かかるディレクタ全てに送られる。いずれにしても、図15乃至図18に示すように、得られる64バイト記述子は、CPU310(図8)によって発生され(ステップ512)、RAM312に書き込まれる(ステップ514)。
【0053】
より具体的には、図8に示すように、RAM512は、1対のキュー、送出キューおよび受信キューを含む。RAM312は、図示のように、エラー検出および訂正(EDAC)/メモリ制御部303を介して、CPUバス317に結合されている。一方、CPU310は、メッセージ・エンジン(ME)315の状態機械410(図8)に、記述子がRAM312に書き込まれたことを示す。尚、メッセージ・エンジン(ME)315は、図8に示すように、受信書き込みポインタまたはカウンタ450、受信読み出しポインタまたはカウンタ452、送出書き込みポインタまたはカウンタ454、および送出読み出しポインタまたはカウンタ454も含むことも注記しておく。4つのポインタ450、452、454、456は全て、起動時にゼロにリセットされる。これも先に記したことであるが、メッセージ・エンジン/CPUコントローラ314は、受信データ・バッファ424(図8)に結合されているパケット化/パケット分解部428のパケット分解部分428D、および送信データ・バッファ422(図8)に結合されているパケット化/パケット分解部428のパケット化部分428Pも含む。したがって、図15乃至図18を再度参照すると、CPU310がRAM312に記述子が書き込まれたことを示し、既に送る準備ができているとき、CPU310は送出書き込みポインタを増分し、レジスタ・デコーダ401を介してこれを送出書き込みポインタ・レジスタ454に送る。したがって、送出書き込みポインタ・レジスタ454の内容は、未だ送られていない、RAM312の送出キュー312S内のメッセージ数を示す。状態機械410は、送出書き込みポインタ・レジスタ454および送出読み出しポインタ・レジスタ456をステップ518においてチェックする。前述のように、送出書き込みポインタ・レジスタ454および送出読み出しポインタ・レジスタ456の双方は、起動中に、最初にゼロにリセットされる。したがって、送出読み出しポインタ・レジスタ456および送出書き込みポインタ・レジスタ454が異なる場合、状態機械は、RAM312内にメッセージがあり、かかるメッセージは送信の準備ができていることを知る。メッセージを送る場合、状態機械410は、記憶されている64バイトの記述子を図8のDMA送信部418を介してメッセージ・エンジン(ME)315へ送信開始する(ステップ520、522)。記述子は、送出読み出しポインタ456が送出書き込みポインタ454と等しくなるまで、RAM312内の送出キュー312Sから送られる。
【0054】
ステップ510に関連して先に説明したように、CPU310は、メッセージを受信するディレクタまたは複数のディレクタを示す宛先ベクトルを発生する。また、先に示したように、コマンド・フィールドは32バイトであり、その内8バイトは、メッセージを受信する64個のディレクタの対応する1つを表すビットを有する。例えば、図18Aを参照すると、ビット位置1〜64の各々は、ディレクタ1801〜18032、2001〜20031をそれぞれ表す。ここで、この例では、論理1はビット位置1にしかないので、8バイト・ベクトルは、宛先ディレクタがフロント・エンド・ディレクタ1801のみであることを示す。図18Bの例では、論理1はビット位置2にしかないので、8バイト・ベクトルは、宛先ディレクタがフロント・エンド・ディレクタ1802のみであることを示す。図18Cの例では、論理1は1つのビット位置よりも多いので、メッセージの宛先は1つよりも多いディレクタである。即ち、マルチキャスト・メッセージである。図18Cの例では、論理1があるのはビット位置2、3、63、64のみである。したがって、8バイト・ベクトルは、宛先ディレクタがフロント・エンド・ディレクタ1802、1803およびバック・エンド・ディレクタ20031、20032のみであることを示す。メッセージ・エンジン(ME)315内のレジスタ部420(図8)のレジスタには、マスク・ベクトルが記憶されており、使用できない可能性があるディレクタまたは複数のディレクタを識別する(例えば、不良ディレクタまたはその時点でシステム内に存在しないディレクタ)。ステップ524、525は、ユニキャスト送信のためにある。メッセージ・エンジン(ME)315の状態機械410が、レジスタ420内に記憶されている送信ベクトル・マスク(図18D)を検査することによって、ディレクタが使用可能であることを示した場合、メッセージ・エンジン(ME)315は、先に論じたように、メッセージ・ペイロードをMACヘッダおよびCRCによって、パケット化部分428Pの内側でカプセル化する(ステップ526)。マスクの一例を図18Dに示す。このマスクは、64個のビット位置を有し、ディレクタの各1つに対して1つずつとなっている。したがって、図18Aないし図18Cに関連付けて先に説明した宛先ベクトルと同様に、ビット位置1〜64は、それぞれ、ディレクタ1801〜18032、2001〜20032を表す。ここで、本例では、マスク内のビット位置における論理1は、表すディレクタが使用可能であることを示し、かかるビット位置における論理0は、表すディレクタが使用不可能であることを示す。ここで、図18Dに示す例では、ディレクタ20032のみが使用不可能となっている。したがって、メッセージが図18Cに示すような宛先ベクトルを有する場合、宛先ベクトルが図18Dのマスクを通過した後、図18Eに示すように、宛先ベクトルを変更する。したがって、ディレクタ20032はメッセージを受信しない。かかる宛先ベクトルに対するマスク変更は、重要である。何故なら、以下で説明するが、マルチキャスト上のメッセージは、順次送られるのであり、並行に送られるのではないからである。したがって、使用不可能なディレクタまたは複数のディレクタに対するメッセージ送信を排除することによって、システムのメッセージ送信効率が向上する。
【0055】
パケット化/パケット分解部428(図8)のパケット化部分によってメッセージをMACパケットにパケット化した後、メッセージ・エンジン(ME)315はMACパケットをクロスバー・スイッチ320に転送し(ステップ528)、MACパケットは、メッセージ・ネットワーク260によって、メッセージ・ネットワーク・ボード3041、3042を介して、または同一のディレクタ・ボード上でかかるディレクタ・ボード上のクロスバー・スイッチ320を介して宛先に導出される(ステップ530)。
【0056】
図19乃至図21を参照しながら、メッセージ読み出し動作について説明する。即ち、ステップ600において、ディレクタはメッセージを待つ。メッセージを受信すると、メッセージ・エンジン(ME)315の状態機械410は、パケットを受信する(ステップ602)。状態機械410は、受信ビット・ベクトル・マスク(図18。レジスタ426に記憶されている)を、パケットのソース・アドレスと突き合わせてチェックする(ステップ604)。状態機械410が、メッセージが不適正なソース(即ち、障害のあるディレクタ。例えば、図18Dのマスクに示す)からであると判断した場合、パケットを破棄する(ステップ606)。一方、状態機械410が、パケットが適正な即ち有効なディレクタ(即ち、ソース)からであると判断した場合、メッセージ・エンジン(ME)315は、パケット分解部428Dにおいて、パケットからメッセージを抜き出す(ステップ608)。メッセージ・エンジン(ME)315内の状態機械410は、DMA受信動作を介した32バイト・ペイロードの転送を開始する(ステップ610)。DMAは、32バイト・メッセージを、RAM312内のメモリ受信キュー312Rに書き込む(ステップ612)。メッセージ・エンジン(ME)315の状態機械410は、次に、受信書き込みポインタ・レジスタ450(ステップ614)を増分する。次に、CPU310は、受信書き込みポインタ450が受信読み出しポインタ452と等しいか否かについてチェックする(ステップ616)。これらが等しい場合、かかる状態は、CPU310にメッセージが受信されていないことを示す(ステップ618)。一方、受信書き込みポインタ450および受信読み出しポインタ452が等しくない場合、かかる状態は、CPU310に、メッセージが受信されていることを示し、CPU310はRAM312の受信キュー314R内のメッセージを処理し、次いでCPU310は受信読み出しポインタを増分し、これを受信読み出しポインタ・レジスタ452に書き込む。このようにして、起動中にゼロに初期化された受信読み出しポインタ452の内容および受信書き込みポインタ450の内容が等しくなるまで、メッセージはRAM312の受信キュー312Rに記憶される。
【0057】
次に図22を参照しながら、メッセージの承認処理について説明する。ステップ700において、受信DMAエンジン420は、問題なく、RAM312(図8)内の受信キューへのメッセージ転送を完了する。メッセージ・エンジン(ME)315内の状態機械410は、承認MACパケットを発生し、このMACパケットを送出元ディレクタに、メッセージ・ネットワーク260(図2)を通じて送信する(ステップ702、704)。送出元ディレクタにおけるメッセージ・エンジン(ME)315は、承認MACパケット内の16バイトのステータス・ペイロードを抜き取り、受信DMA動作によってかかるステータス・ペイロードを転送する(ステップ706)。送出元(即ち、ソース)ディレクタのDMAは、RAMメモリの送出キュー314S内にある記述子のステータス・フィールドに書き込む(ステップ708)。(承認メッセージを受信した)送出元ディレクタのメッセージ・エンジン(ME)315の状態機械410は、その送出読み出しポインタ454を増分する(ステップ712)。(承認メッセージを受信した)送出元ディレクタのCPU310は、記述子ステータスを処理し、記述子をRAM312の送出キュー312Sから除去する(ステップ714)。尚、送出および受信キュー312Sおよび312Rは、各々、巡回キューであることを注記しておく。
【0058】
前述のように、MACパケットは、通常動作の間、クロスバー・スイッチ320内のセレクタSによって、ハードウエアで、1対のメッセージ・ネットワーク・ボード3041、3042の一方に交互に送信される。セレクタSは、MACパケット(図3B)のヘッダ内にあるビットBに応答し、かかるビットBが1の論理状態の場合、データをメッセージ・ネットワーク・ボード402Aの1つに結合し、逆の論理状態に応答して、データをメッセージ・ネットワーク・ボード402Bの別の1つに結合する。即ち、1つのメッセージがボード3041に送信されると、次のメッセージはボード3042に送信される。
【0059】
再度図13を参照しながら、送信DMAの一例418について、その詳細を示す。前述のように、記述子は、CPU310(図8)によって作成された後、RAM312に記憶される。前述のように、送出書き込みポインタ450(図8)および送出読み出しポインタ452が異なるカウントを有する場合、メッセージ・エンジン(ME)315(図8)内の状態機械410によって、作成した記述子はメッセージ・エンジン(ME)315へのDMA送信に使用可能であることの指示が与えられ、記述子のペイロードはMACパケットにパケット化され、メッセージ・ネットワーク360(図2)を通じて、1つ以上のディレクタ1801〜18032、2001〜20032に送られる。即ち、CPU310が作成した記述子は、最初にローカル・キャッシュ・メモリ319に記憶され、後にRAM312内の送出キュー312Sに転送される。送出書き込みポインタ450および送出読み出しポインタ452が異なるカウントを有する場合、メッセージ・エンジン(ME)315の状態機械410は、ステップ520(図15乃至図17)に関連して先に論じたように、DMA送信を開始する。更に、前述のように、記述子は、RAM312内の送出キュー312Rに位置する。更に、前述のように、メッセージを収容した各記述子は固定サイズであり、ここでは64バイトである。新たな未送信記述子がCPU310によって作成される毎に、送出キュー312S内の順次ロケーション即ちアドレスに順次記憶されていく。ここでは、アドレスは32ビット・アドレスである。
【0060】
送信DMAが開始されると、メッセージ・エンジン(ME)315(図8)内の状態機械410は、バス411上でキュー・アドレスを、DMA送信部418(図13)内のアドレス・レジスタ413に、送信書き込みイネーブル信号Tx_WE信号と共に送る。DMA送信部418は、信号Xmit_Brをアサートすることによって、CPUバス317を要求する。CPUバス・アービタ414(図8)は、バス調停を実行し、適切なときに、アービタ414はCPUバス317へのアクセスをDMA送信部418に付与する。次に、Xmit CPU状態機械419は、出力アドレス・レジスタ403にロードすることによって、CPUバス317のアドレス・バス部分317A上に、アドレス・レジスタ413内にある現在使用可能なアドレスを置く。出力アドレス・レジスタ403にロードする前に、パリティ発生器405が奇数パリティを発生する。RAM312の送出キュー312Sに対して、レジスタ403内のアドレスを、CPUバス317の部分317Cを通じて、適切な読み出し制御信号と共に、CPUバス317(図8)上に置く。RAM312からのアドレスにあるデータは、CPUバス317のデータ・バス部分317Dを通じて、パリティ・チェッカ415を通過し、データ入力レジスタ417に達する。CPU310からの制御信号は、CPUバス317のバス部分317Cを通じて、Xmit CPU状態機械419に供給される。制御信号の1つは、要求された記述子の最新コピーがRAM312の送出キュー312S内にあるか、または未だローカル・キャッシュ・メモリ319内に位置するかを示す。即ち、いずれの所与のアドレスにおいても、最新記述子は最初にCPU310によってローカル・キャッシュ・メモリ319内に形成され、後にCPU310によってRAM312内のキューに転送される。したがって、同一アドレスを有する2つの記述子があるという場合もある。即ち、1つがRAM312にあり、1つがローカル・キャッシュ・メモリ319(図8)にあり、最新の記述子はローカル・キャッシュ・メモリ319内にある。いずれの場合でも、送信DMA418は、RAM312からDMA送信のために記述子を取得しなければならず、この記述子は、状態機械419が生成した信号402を用いて、送信バッファ・レジスタ421に記憶され、これらのレジスタ421にロードされる。CPU310からXmit CPU状態機械419への制御信号は、最新の記述子がローカル・キャッシュ・メモリ319内にあるか否かを示す。最新の記述子がローカル・キャッシュ・メモリ319内にある場合、Xmit CPU状態機械419は、RAM312内の送出キュー312Sから丁度読み出され、レジスタ421に格納されているデータをセレクタ423に受け渡すのを禁止する。このような場合、状態機械419は、同じアドレス・ロケーションにおいて、別のデータ転送を実行しているはずである。次に、最新のメッセージは、CPU310によって、ローカル・キャッシュ・メモリ319からRAM312内の送出キュー312Sに転送される。次に、送信メッセージ状態機械419は、CPUバス317に対する調停を再度行ない、かかるCPUバス317が付与された後、Xmit CPU状態機械419はRAM312から記述子を読み出す。このとき、しかしながら、RAM312内の送出キュー312S内には、最新の記述子が得られる。そして、Xmit CPU状態機械419による信号402のアサートに応答して、RAM312内の記述子を送信バッファ・レジスタ421にロードする。次に、レジスタ421内の記述子は、セレクタ423を介して、Xmitメッセージ(msg)状態機械427の制御の下で、メッセージ・バス・インターフェース409に転送される。即ち、送信バッファ・レジスタ421内の記述子は、Xmitメッセージ(msg)状態機械427によって、32ビット送信メッセージ・バス・インターフェース409上で送信データ・バッファ422(図8)に転送される。送信データ・バッファ422(図8)内のデータは、図15乃至図17のステップ530において説明したように、パケット化/パケット分解部428のパケット化部によってパケット化される。
【0061】
図23も参照しながら、送信DMA418(図13)を動作させる方法を更に具体的に示す。前述のように、各記述子は64バイトである。ここで、記述子の転送は、2つのインターフェース、即ち、CPUバス317および送信メッセージ・インターフェース・バス409(図8)を介して行われる。CPUバス317は、64ビット幅であり、8つの64ビット二重ワードが64バイトの記述子を構成する。Xmit CPU状態機械419は、制御信号を発生し、これによってRAM312から送信バッファ・レジスタ421(図8)への記述子の転送が行われる。64バイトの記述子は、CPUバス317上における2回の32バイト・バースト・アクセスによって転送される。8つの二重ワードの各1つは、順次送信バッファ・レジスタ421(図13)に記憶される。したがって、ステップ800において、メッセージ・エンジン315の状態機械410は、送信DMAアドレス・レジスタ413に、RAM312内の送出キュー312Sにおける、送信する記述子のアドレスをロードする。これを行なうには、Tx_WE信号をアサートする。これによって、Xmit CPU状態機械419をステップ800に進め、アドレス・レジスタ413にロードし、ステップ802に進む。ステップ802において、Xmit CPU状態機械419は、CPU転送カウンタ431(図13)に、32バイトのカウントをロードする。これは2である。これは、ステップ802において、64バイトの記述子を転送するために必要となる、32バイトの転送回数である。Xmit CPU状態機械419は、次にステップ804に進む。ステップ804において、送信DMA状態機械419は、そのアドレス・レジスタ413にロードされたアドレスの有効性をチェックする。アドレス・レジスタ413にロードされたアドレスは、メモリ・アドレス・レジスタ435にロードされた値と突き合わせてチェックする。メモリ・アドレス・レジスタ435は、基底アドレスおよびRAM312内の送出キュー312Sのオフセットを収容する。基底アドレスおよびオフセットの和が、RAM312内の送出キュー312Sに対するアドレス範囲となる。アドレス・チェック回路437は、アドレス・レジスタ413内のアドレスがRAM312内の送出キュー312Sの範囲内にあるか否か、常にチェックしている。アドレスが送出キュー312Sの範囲外にあることが発見された場合、ステップ416において、転送を中断し、このステータスをステータス・レジスタ404に記憶し、次いでメッセージ・エンジン315の状態機械410に戻す。アドレスの有効性チェックは、ステップ805において行われる。アドレスが範囲以内にある場合、即ち、有効な場合、送信DMA状態機械419は、転送を実行し、ステップ806に進む。ステップ806において、送信DMA状態機械419は、アービタ414へのXmit_BR信号をアサートすることによって、CPUバス317を要求し、次いでステップ807に進む。ステップ807において、Xmit CPU状態機械419は、それにアービタによってバスが付与されているか否か常にチェックする。CPUバス317が付与された場合、Xmit CPU状態機械はステップ808に進む。ステップ808において、Xmit CPU状態機械419は、アドレスおよびデータ・サイクルを発生し、本質的にRAM312内の送出キュー312Sからその送信バッファ・レジスタ421に、32バイトの記述子を読み込む。Xmit CPU状態機械419は、次にステップ810に進む。ステップ810において、Xmit CPU状態機械419は、そのバッファ・レジスタ421に読み込んだ記述子をロードし、ステップ811に進む。ステップ811において、これら32バイトのデータ上に、何らかのローカル・キャッシュ・メモリ319のコヒーレンシ・エラーがないかチェックする(即ち、最新データがキャッシュ・メモリ319にはあるが、RAM312にはないという状態が生じているか否かチェックする)。このデータがローカルCPUキャッシュ・メモリ319内に位置することが検出された場合、Xmit CPU状態機械419はこのデータを破棄し、ステップ806に進む。ここで、Xmit CPU状態機械419は再度CPUバス317を要求し、付与されたなら、別の32バイトのデータを送信バッファ・レジスタ421に転送する。この時点までに、CPUは記述子の最後のコピーをRAM312に既に転送し終えている。最初にRAM312からフェッチした32バイトの記述子がローカルCPUキャッシュ・メモリ319内になかった場合(即ち、キャッシュ・コヒーレンシ・エラーが検出されなかった場合)、Xmit CPU状態機械419はステップ812に進む。ステップ812において、Xmit CPU状態機械419は、カウンタ431を減数し、アドレス・レジスタ413を増分し、かかるアドレス・レジスタ413が次のアドレスを示すようにする。次いで、Xmit CPU状態機械は、ステップ814に進む。ステップ814において、送信CPU状態機械419は、転送カウンタ431が終了したか否か、即ち、ゼロまでカウントしたか否か調べるためにチェックを行い、カウントがゼロでないことがわかった場合、ステップ804に進み、次の32バイトの記述子の転送を開始する。カウンタ431がゼロの場合、プロセスはステップ816に進み、転送を完了する。RAM312から送信DMAバッファ・レジスタ421への2番目の32バイトの記述子の転送が成功すれば、CPUバス317上での転送は完了する。
【0062】
メッセージ・インターフェース409は、32ビット幅であり、16個の32ビット・ワードが64バイトの記述子を構成する。64バイトの記述子は、各々32バイトずつまとめて転送される。Xmit msg状態機械427は、インターフェース409を制御し管理する。Xmit CPU状態機械は、信号433をアサートし、最初の32バイトのCPUバス317上での転送が成功したことを示し(図24のステップ818)、これがXmit msg状態機械をステップ818に進ませ、メッセージ・インターフェース上での転送を開始する。ステップ820において、Xmit msg機械427は、バースト/転送カウンタ439をリセットし、メッセージ・インターフェース409を通じた転送を開始する。ステップ820において、「転送有効」(TX_DATA_Valid)信号をアサートすることにより、メッセージ・エンジン315の状態機械410にバス409上に有効なデータが得られること示し、メッセージ・インターフェース409上での転送を開始する。送信msg機械427は、バースト/転送カウンタ439におけるバースト・カウンタが8に等しい値に達するまで(ステップ822)、後続の各クロック毎に、32ビットのデータを転送する。バースト/転送カウンタ439内のバースト・カウンタは、ライン433上の信号によって、メッセージ・バス409上に32ビット・ワードが置かれる毎に増分される。バースト・カウンタが8になったとき、送信カウンタ431が終了したか、即ち、ゼロか否かについて、状態機械427がチェックを行なう(ステップ824)。バースト/転送カウント439における転送カウンタの終了は、64バイトの記述子をメッセージ・エンジン315内の転送バッファ422に転送し終えたことを示す。これが終了していた場合、送信メッセージ状態機械427はステップ826に進む。ステップ826において、Xmit msg状態機械は、転送出力終了(Tx_EOT)をアサートし、メッセージ・バス409上での転送終了を示す。この状態において、Tx_EOT信号のアサート後に、ステータス・レジスタ404内に捕獲された転送のステータスを、メッセージ・エンジン315の状態機械410に送る。DMA動作は、記述子を送信バッファ422(図8)に記憶することによって完了する。
【0063】
一方、バースト/転送カウンタ439内の転送カウンタが終了していない場合、プロセスはステップ800に進み、前述の手順を繰り返し、記述子データの2番目の32バイトを転送し、その時点で転送は完了する。
【0064】
次に図14を参照し、受信DMA420を示す。ここでは、別のディレクタから受信したメッセージをRAM312(図8)に書き込む。受信DMA420は、3種類の情報、即ち、サイズが8バイトのエラー情報、サイズが16バイトの承認情報、およびサイズが32バイトの受信メッセージ・ペイロードおよび/またはファブリック管理情報を処理するように構成されている。図8も参照すると、メッセージ・エンジン315の状態機械410は、Rx_WE信号をアサートし、受信DMA420に、そのRecバッファ426(図8)にデータを転送する準備ができていることを示す。受信バッファ内のデータとしては、8バイトのエラー情報、16バイトの承認情報、または32バイトのファブリック管理/受信メッセージ・ペイロード情報が考えられる。これは、Rx_transferカウント信号上に、2ビット・エンコード受信転送カウントを置き、情報の種類、およびこの情報がRAM312の受信キューに記憶されるアドレスである、アドレスを示す。受信書き込みイネーブル信号Rx_WEに応答して、受信メッセージ機械450(図14)は、アドレスをアドレス・レジスタ452に、および情報の種類を示す転送カウントを、受信転送カウンタ454にロードする。アドレス・レジスタ452にロードされたアドレスは、アドレス・チェック回路456によってチェックされ、これがRAM312内の受信キューアドレスの範囲内にあるか否かについて調べる。これを行なうには、アドレスを、メモリ・レジスタ457(即ち、内部の基底アドレス・レジスタおよびオフセット・レジスタ)にロードした値と突き合わせてチェックする。基底アドレス・レジスタは、RAM312内に常駐する受信キュー312Rの開始アドレスを収容し、オフセット・レジスタはRAM312内にあるこの受信キュー312Rのサイズを収容する。したがって、基底アドレス・レジスタおよびオフセット・レジスタに記憶されている値の加算(additive sum)は、RAM312R内の受信キューのアドレス範囲を指定する。メモリ・レジスタ457には、初期化の間にロードが行われる。Rx_WE信号をアサートした後に続くクロックで、メッセージ・エンジン315の状態機械410は、先に進み、32ビットのメッセージ・エンジン315のデータ・バス407(図14)上にデータを置く。Rx_data_valid信号が各32ビット・データに付随し、メッセージ・エンジン・データ・バス407上のデータが有効であることを示す。このRx_data_valid信号に応答して、受信メッセージ状態機械450は、データ・バス上のデータを受信バッファ・レジスタ460にロードする。メッセージ・エンジンのデータ・バス407dを通じた転送の終了は、Rx_EOT信号のアサートによって示され、この時点で、受信メッセージ状態機械450は、バス407のメッセージ・エンジン・データ・バス407D上の最後の32ビットのデータを受信バッファ・レジスタ460にロードする。これは、バス407のメッセージ・エンジンのデータ・バス407Dの部分を通じた転送の終了を知らせる。かかる転送の終了時に、信号464のアサートによって、Rx_Cpu状態機械462に移送される(convey)。受信CPU機械462は、ここで信号REC_Brをアサートすることによって、CPUバス317を要求する。CPUバス・アービタ414(図8)による調停の後、受信DMA420(図14)には、CPUバス317へのアクセスが与えられる。受信CPU状態機械462は、先に進み、そのバッファ・レジスタ424内にあるデータをCPUバス317を通じて、RAM312内の受信キュー312Rに転送する。同時に、このデータは二重バッファ・レジスタ466にも転送される。受信バッファ・レジスタ460の出力にあるデータは、セレクタ470の一方の入力に渡り、更に二重データ受信バッファ・レジスタ460にも渡る。二重受信バッファ・レジスタ466の出力は、セレクタ470の第2入力に供給される。データが受信CPU状態機械462によって転送される際、キャッシュ・コヒーレンシ・エラーに対するチェックも行われる。RAM312に書き込まれているアドレスに対応するデータがCPUのローカル・キャッシュ・メモリ319(図8)内に位置する場合、受信DMA機械420は、CPU310がそのローカル・キャッシュ・メモリ319内にある古いデータをRAM312内の受信キュー312Rに戻しコピーし、二重バッファ・レジスタ466からの新たなデータのコピーで、この古いデータを上書きするのを待つ。
【0065】
より具体的には、中央演算装置310がDMA受信部420に、受信バッファ・レジスタ460内のデータがローカル・キャッシュ・メモリ319において得られることを示す場合、受信CPU状態機械462は、ライン463上に選択信号を生成する。ライン463は、二重バッファ・レジスタ466内のデータをセレクタ470の出力に結合し、次いでバス317に結合し、ランダム・アクセス・メモリ312に格納する。
【0066】
RAM312への書き込み成功によって、DMA転送が完了する。すると、受信DMA420は、メッセージ・エンジン315の状態機械410に、転送のステータスについて知らせる。転送のステータスは、ステータス・レジスタ459内に取り込まれる。
【0067】
このように、受信DMAおよび送信DMA双方により、ローカル・キャッシュ・メモリ319のチェックを行い、受信DMAの場合、「古い」データを有しているか否か、また送信DMAの場合、「新しい」データを有しているか否かについて判定を行なう。
【0068】
次に図25を参照しながら、受信DMA420の動作を示す。即ち、ステップ830において、受信メッセージ機械450は、書き込みイネーブル信号Rx_WEがアサートされているか否かチェックする。アサートされていることがわかった場合、受信DMA420は先に進み、アドレス・レジスタ452および転送カウンタ454にロードする。転送カウンタ454にロードされる値は、図8のメッセージ・エンジン状態機械310によって要求されたDMA転送の種類を決定する。Rx_WE信号のアサートによって、DMA受信転送動作が開始する。これがRx msg状態機械450をステップ832に進ませる。ステップ832において、Rec msg状態機械450はアドレス・レジスタ452および転送カウンタ454にロードし、次いでステップ834に進む。ステップ834において、Rx_DATA_VALID信号がアサートされているか否か調べるためにチェックを行なう。アサートされている場合、ステップ836に進む。ステップ836において、Rx msg状態機械は、バッファ・レジスタ460(図14)に、図14のバス407のメッセージ・エンジン・データ・バス407D上にあるデータをロードする。Rx_DATA_VALID信号が、バス407上の各データ片に付随する。データは順次バッファ・レジスタ460(図14)にロードされる。バス407のメッセージ・エンジン・データ・バス407D上での転送終了は、Rx_EOT信号のアサートによって示される。受信メッセージ状態機械450が転送終了状態にある場合、ステップ840において、受信CPU状態機械462に知らせ、これによって、CPUバス317側での転送が開始する。
【0069】
受信CPU状態機械のフローについて、以下に説明する。即ち、図26を参照すると、バス407のメッセージ・エンジン・データ・バス407D部分上における転送終了によって、受信CPU状態機械462を起動し、ステップ842に進ませる。受信CPU状態機械462は、この状態におけるアドレスの有効性をチェックする(ステップ844)。これは、アドレス・チェック回路456によって行われる。アドレス・レジスタ452にロードされたアドレスがRAM312内の受信キュー312Rの範囲外である場合、転送を中断し、ステータスを受信ステータス・レジスタ459に取り込み、Rec CPU状態機械462はステップ845に進む。アドレスが有効な場合、受信CPU状態機械462は、ステップ846に進む。ステップ846において、受信CPU状態機械462は、CPUバス317のアクセスを要求する。次に、ステップ848に進む。ステップ848において、バス317に関する付与についてチェックする。付与が認められている場合、ステップ850に進む。ステップ850において、Rec CPU状態機械462は、アドレスおよびデータ・サイクルを実行し、本質的にバッファ・レジスタ460内のデータを、RAM312内の受信キュー312Rに書き込む。RAM312への書き込みと同時に、CPUバス317上に置かれたデータは、二重バッファ・レジスタ466にもロードされる。同時に、CPU310は、制御ラインの1つにおいてRAM312に書き込んだアドレスに対応するデータが、そのローカル・キャッシュ・メモリ319において得られるか否かについて示す。アドレスおよびデータ・サイクルの終了時に、Rec CPU状態機械462は、ステップ850に進む。このステップにおいて、送信DMA418(図13)に関連付けて先に述べた種類のキャッシュ・コヒーレンシ・エラーがないかチェックする。キャッシュ・コヒーレンシ・エラーが検出された場合、受信CPU状態機械462はステップ846に進み、トランザクションを再試行する。より具体的には、受信CPU状態機械462はここで前回のアドレスに対して別のアドレスおよびデータ・サイクルを発生し、今回は、二重バッファ466からのデータをCPUデータ・バス317上に置く。キャッシュ・コヒーレンシ・エラーがなかった場合、受信CPU状態機械462はステップ852に進み、ここで転送カウンタ454を減数し、アドレス・レジスタ452内のアドレスを増分する。次いで、受信CPU状態機械462はステップ854に進む。ステップ854において、状態機械462は、転送カウンタが終了したか、即ち、ゼロか否かチェックする。転送カウンタがゼロでない場合、受信CPU状態機械462はステップ844に進み、転送カウンタがゼロになるまで前述の手順を繰り返す。ステップ854において転送カウンタがゼロであった場合、RAM312内の受信キュー312Rへの書き込みが完了し、Rec CPU状態機械はステップ845に進む。ステップ845において、ステータス・レジスタに記憶されているステータスを、メッセージ・エンジン315の状態機械410に返送する。
【0070】
再度図8を参照し、割込制御ステータス・レジスタ412について更に詳しく説明する。前述のように、パケットは、パケット化/パケット分解部428のパケット化部分によってクロスバー・スイッチ320に送られ、1つ以上のディレクタに送信される。尚、パケット化/パケット分解部428のパケット化部分によって送られたパケットは、クロスバー・スイッチ320に渡る前に、メッセージ・エンジン315内のパリティ発生器PGを通過することを注記しておく。かかるパケットが、ディレクタの一例1801内のメッセージ・エンジン315によってクロスバー・スイッチ320に送られると、クロスバー・スイッチ320に渡される前に、パリティ・ビット発生器PGによって、パリティ・ビットがパケットに付加される。パケットのパリティは、クロスバー・スイッチ320内のパリティ・チェッカ/発生器(PG/C)のパリティ・チェッカ部分においてチェックされる。チェックの結果は、クロスバー・スイッチ320内のPG/Cによって、ディレクタ1801内の割込制御ステータス・レジスタ412に送られる。
【0071】
同様に、クロスバー・スイッチ320からディレクタの一例1801のメッセージ・エンジン315にパケットが送信される場合、パケットはディレクタ1801内のメッセージ・エンジン315に送信される前に、クロスバー・スイッチ320内のパリティ・チェッカ/発生器(PG/C)のパリティ発生部分を通過する。次に、パケットのパリティは、ディレクタ1801内のパリティ・チェッカ(PC)のパリティ・チェッカ部分においてチェックされ、その結果(即ち、ステータス)はステータス・レジスタ412に送信される。
【0072】
以上、本発明の多数の実施形態について説明した。しかしながら、本発明の精神および範囲から逸脱することなく、種々の変更が可能であることは理解されよう。したがって、他の実施形態も特許請求の範囲に該当するものとする。
【図面の簡単な説明】
【図1】 従来技術によるデータ記憶システムのブロック図である。
【図2】 本発明によるデータ記憶システムのブロック図である。
【図3】 図3Aは、図2のデータ記憶システムのシステム・インターフェースにおいて用いられる記述子のフィールドを示す図である。
図3Bは、図2のデータ記憶システムのシステム・インターフェースにおいて用いられるMACパケット内で用いるフィールドを示す図である。
【図4】 図2のデータ記憶システムに用いられるシステム・インターフェースを格納する電気キャビネットの図である。
【図5】 図2のデータ記憶システムのシステム・インターフェースを設けたプリント回路ボードを示す、概略等幅図である。
【図6】 図2のデータ記憶システムにおいて用いられるシステム・インターフェースのブロック図である。
【図7】 図2のデータ記憶システムのシステム・インターフェースにおいて用いられる1対のメッセージ・ネットワーク・ボードの一方に対する、フロント・エンド・ディレクタおよびバック・エンド・ディレクタ間の接続を示すブロック図である。
【図8】 図2のデータ記憶システムのシステム・インターフェースにおいて用いられるディレクタ・ボードの一例のブロック図である。
【図9】 図2のデータ記憶システムにおいて用いられるシステム・インターフェースのブロック図である。
【図10】 図9のシステム・インターフェースにおいて用いられるグローバル・キャッシュ・メモリ・ボードの一例の図である。
【図11】 1対のホスト・プロセッサと、図9のシステム・インターフェースにおいて用いられるグローバル・キャッシュ・メモリ・ボード間に結合された1対のディレクタ・ボードを示す図である。
【図12】 図9のシステム・インターフェースのフロント・エンド・ディレクタおよびリア・エンド・ディレクタ内において用いられるクロスバー・スイッチの一例のブロック図である。
【図13】 図9のシステム・インターフェースにおいて用いられる送信直接メモリ・アクセス(DMA)のブロック図である。
【図14】 図9のシステム・インターフェースにおいて用いられる受信DMAのブロック図である。
【図15】 図16および図17間の関係を示す図である。
【図16】 図9のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの送出動作のプロセス・フロー図である。
【図17】 図9のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの送出動作のプロセス・フロー図である。
【図18】 図18Aは、図9のシステム・インターフェースにおけるメッセージ・ネットワークが用いるディジタル・ワードの一例である。
図18Bは、図9のシステム・インターフェースにおけるメッセージ・ネットワークが用いるディジタル・ワードの一例である。
図18Cは、図9のシステム・インターフェースにおけるメッセージ・ネットワークが用いるディジタル・ワードの一例である。
図18Dは、かかるメッセージ・ネットワークにおいて用いられるマスク内のビットを示す図である。
図18Eは、図18Cに示すディジタル・ワードに適用する図18Dのマスクの結果を示す図である。
【図19】 図20および図21間の関係を示す図である。
【図20】 図9のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの受信動作を示すプロセス・フロー図である。
【図21】 図9のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの受信動作を示すプロセス・フロー図である。
【図22】 図9のシステム・インターフェースにおいて用いられるメッセージ・ネットワークの承認動作を示すプロセス・フロー図である。
【図23】 図13の送信DMAの送信DMA動作を示すプロセス・フロー図である。
【図24】 図13の送信DMAの送信DMA動作を示すプロセス・フロー図である。
【図25】 図14の受信DMAの受信DMA動作を示すプロセス・フロー図である。
【図26】 図14の受信DMAの受信DMA動作を示すプロセス・フロー図である。
【符号の説明】
100 データ記憶システム
120 ホスト・コンピュータ/サーバ
140 ディスク・ドライブ・バンク
160 システム・インターフェース
180 フロント・エンド・ディレクタ
190 フロント・エンド・ディレクタ・ボード
200 バック・エンド・ディレクタ
210 バック・エンド・ディレクタ・ボード
220 キャシュ・メモリ
240 データ転送部
260 メッセージ・ネットワーク
299 マイクロプロセッサ
314 コントローラ
316 データ・パイプ

Claims (3)

  1. 複数の第1のディレクタと、
    複数の第2のディレクタと、
    前記複数の第1のディレクタおよび複数の第2のディレクタに結合されたキャッシュメモリを有するデータ転送部と、
    前記複数の第1のディレクタおよび複数の第2のディレクタの対応するものにそれぞれが結合されている複数のポートを有するスイッチングネットワークを含み、前記データ転送部と独立して動作するメッセージネットワークと、
    からなり、
    前記データ転送部内のキャッシュメモリを通過する前記複数の第1のディレクタと前記複数の第2のディレクタ間のデータ転送を促進するために、前記第1および第2の複数のディレクタが、前記メッセージネットワークを通して前記第1および第2の複数のディレクタ間を通過するメッセージに応答して、前記第1と第2の複数のディレクタ間でのデータ転送を制御し、
    前記複数のディレクタの各々と前記キャッシュメモリとの間に別個2点間データ経路が有る、
    ことを特徴とする、システム・インターフェース装置。
  2. 複数の第1のディレクタと、
    複数の第2のディレクタと、
    前記複数の第1のディレクタおよび複数の第2のディレクタに結合されたキャッシュメモリを有するデータ転送部と、
    前記複数の第1のディレクタおよび複数の第2のディレクタの対応するものにそれぞれが結合されている複数のポートを有するスイッチングネットワークを含むメッセージネットワークと、
    からなり、
    前記第1および第2の複数のディレクタが、前記メッセージネットワークを通して前記第1および第2の複数のディレクタ間を通過するメッセージに応答して、前記第1と第2の複数のディレクタ間でのデータ転送を制御し、前記メッセージは前記データ転送部をバイパスし、かつ前記データ転送は前記データ転送部内のキャッシュメモリへの前記複数のディレクタを通るデータ転送であり、
    前記複数のディレクタの各々と前記キャッシュメモリとの間に別個2点間データ経路が有る、
    ことを特徴とする、システム・インターフェース装置。
  3. 複数のディレクタと、
    前記複数のディレクタに結合されたキャッシュメモリを有するデータ転送部と、
    前記複数のディレクタに結合され、前記データ転送部と独立して動作するメッセージネットワークと、
    からなり、
    前記メッセージネットワークが、前記複数のディレクタの任意のものから前記複数のディレクタの選択された1つへメッセージを転送し、
    前記複数のディレクタが、前記メッセージネットワークを通して前記複数のディレクタ間を通過するメッセージに応答して、データ転送を制御し、前記メッセージは前記データ転送部をバイパスし、かつ前記データ転送は前記データ転送部内のキャッシュメモリへの前記複数のディレクタを通るデータ転送であり、
    前記複数のディレクタの各々と前記キャッシュメモリとの間に別個2点間データ経路が有り、
    前記メッセージネットワークが、前記複数のディレクタの対応するものにそれぞれが結合されている複数のポートを有するスイッチングネットワークを含む、
    ことを特徴とする、システム・インターフェース装置。
JP2002507375A 2000-06-29 2001-06-27 ポイント間構成を有するデータ記憶システム Expired - Lifetime JP4885406B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US09/606,730 US7007194B1 (en) 2000-06-29 2000-06-29 Data storage system having point-to-point configuration
US09/606,730 2000-06-29
US09/606,734 2000-06-29
US09/606,734 US7073020B1 (en) 1999-01-04 2000-06-29 Method for message transfer in computer storage system
PCT/US2001/041175 WO2002003387A2 (en) 2000-06-29 2001-06-27 Data storage system having point-to-point configuration

Publications (3)

Publication Number Publication Date
JP2004502263A JP2004502263A (ja) 2004-01-22
JP2004502263A5 JP2004502263A5 (ja) 2008-08-14
JP4885406B2 true JP4885406B2 (ja) 2012-02-29

Family

ID=27085321

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002507375A Expired - Lifetime JP4885406B2 (ja) 2000-06-29 2001-06-27 ポイント間構成を有するデータ記憶システム

Country Status (3)

Country Link
JP (1) JP4885406B2 (ja)
GB (1) GB2374697A (ja)
WO (1) WO2002003387A2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050216625A1 (en) * 2004-03-09 2005-09-29 Smith Zachary S Suppressing production of bus transactions by a virtual-bus interface
EP1741064A4 (en) 2004-03-23 2010-10-06 Google Inc DIGITAL CARTOGRAPHIC SYSTEM
EP1738329B1 (en) * 2004-03-23 2016-12-28 Google Inc. Generating and serving tiles in a digital mapping system
US20060236032A1 (en) * 2005-04-13 2006-10-19 Campbell Brian K Data storage system having memory controller with embedded CPU
US8010407B1 (en) 2006-11-14 2011-08-30 Google Inc. Business finder for locating local businesses to contact

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07244634A (ja) * 1994-03-03 1995-09-19 Hitachi Ltd 外部記憶制御装置およびバス切り替え制御方法
JPH10333836A (ja) * 1997-05-29 1998-12-18 Hitachi Ltd ディスクアレイ制御装置
JPH11177589A (ja) * 1997-12-12 1999-07-02 Canon Inc データ転送装置およびデータ転送装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JPH11312126A (ja) * 1998-04-27 1999-11-09 Hitachi Ltd 記憶制御装置
US6061274A (en) * 1999-01-04 2000-05-09 Emc Corporation Methods and apparatus for message transfer in computer storage system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484262A (en) * 1979-01-09 1984-11-20 Sullivan Herbert W Shared memory computer method and apparatus
JPS59100964A (ja) * 1982-12-01 1984-06-11 Hitachi Ltd ディスク制御システム及びその並列データ転送方法
JP2567922B2 (ja) * 1988-08-30 1996-12-25 株式会社日立製作所 パス制御方式
JP2872251B2 (ja) * 1988-10-12 1999-03-17 株式会社日立製作所 情報処理システム
JP3264465B2 (ja) * 1993-06-30 2002-03-11 株式会社日立製作所 記憶システム
CA2153445C (en) * 1994-09-08 2002-05-21 Ashok Raj Saxena Video optimized media streamer user interface
US6134624A (en) * 1998-06-08 2000-10-17 Storage Technology Corporation High bandwidth cache system
US7010575B1 (en) * 2000-03-31 2006-03-07 Emc Corporation Data storage system having separate data transfer section and message network having bus arbitration

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07244634A (ja) * 1994-03-03 1995-09-19 Hitachi Ltd 外部記憶制御装置およびバス切り替え制御方法
JPH10333836A (ja) * 1997-05-29 1998-12-18 Hitachi Ltd ディスクアレイ制御装置
JPH11177589A (ja) * 1997-12-12 1999-07-02 Canon Inc データ転送装置およびデータ転送装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JPH11312126A (ja) * 1998-04-27 1999-11-09 Hitachi Ltd 記憶制御装置
US6061274A (en) * 1999-01-04 2000-05-09 Emc Corporation Methods and apparatus for message transfer in computer storage system

Also Published As

Publication number Publication date
WO2002003387A2 (en) 2002-01-10
GB0207148D0 (en) 2002-05-08
WO2002003387A3 (en) 2003-06-05
GB2374697A (en) 2002-10-23
JP2004502263A (ja) 2004-01-22

Similar Documents

Publication Publication Date Title
JP3689345B2 (ja) 別個のデータ転送部、およびバス調停機能を備えたメッセージ・ネットワークを有するデータ記憶システム
US6779071B1 (en) Data storage system having separate data transfer section and message network with status register
US7010575B1 (en) Data storage system having separate data transfer section and message network having bus arbitration
US6611879B1 (en) Data storage system having separate data transfer section and message network with trace buffer
US6594712B1 (en) Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link
US6684268B1 (en) Data storage system having separate data transfer section and message network having CPU bus selector
JP2802043B2 (ja) クロック故障検出回路
US6779150B1 (en) CRC error detection system and method
JP4309600B2 (ja) 別個のデータ転送部ならびに共通プリント回路ボード上の複数のディレクタおよび冗長スイッチング・ネットワークを備えたメッセージ・ネットワークを有するデータ記憶システム
US5664223A (en) System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively
US6636933B1 (en) Data storage system having crossbar switch with multi-staged routing
US7117275B1 (en) Data storage system having separate data transfer section and message network
US6487628B1 (en) Peripheral component interface with multiple data channels and reduced latency over a system area network
US6061274A (en) Methods and apparatus for message transfer in computer storage system
US6609164B1 (en) Data storage system having separate data transfer section and message network with data pipe DMA
JP2006190327A (ja) 別個のデータ転送部、および共通回路ボード上に複数のディレクタを備えたメッセージ・ネットワークを有するデータ記憶システム
US6631433B1 (en) Bus arbiter for a data storage system
US6816916B1 (en) Data storage system having multi-cast/unicast
US6901468B1 (en) Data storage system having separate data transfer section and message network having bus arbitration
US6687797B1 (en) Arbitration system and method
US7073020B1 (en) Method for message transfer in computer storage system
US6742017B1 (en) Data storage system having separate data transfer section and message network with pointer or counters
US6581112B1 (en) Direct memory access (DMA) receiver
US6889301B1 (en) Data storage system
US6584513B1 (en) Direct memory access (DMA) transmitter

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080623

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080623

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111122

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111208

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141216

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4885406

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term