(57)【要約】【課題】記憶システムの構成要素又はサブアセンブリに障害が発生した場合にシステム全体の障害を防ぐための冗長構成を有するデータ記憶システムを提供する。【解決手段】複数の第１のディレクタ／メモリ基板の各々が、（ｉ）ホストコンピュータ／サーバに連結したディレクタ、及び（ｉｉ）このような基板上でディレクタと通信するローカルキャッシュメモリ部分を含み、複数の第２のディレクタ／メモリ基板の各々が、（ｉ）一式のディスクドライブに連結したディレクタ、及び（ｉｉ）このような基板上でディレクタと通信するローカルキャッシュメモリ部分を含むデータ記憶システム。一式のディスクドライブに記憶するためにホストコンピュータ／サーバによって供給される書込データは、第２の複数のディレクタ／メモリ基板のうちの１つにあるローカルキャッシュメモリ部分まで通される。ホストコンピュータ／サーバによる使用のために一式のディスクドライブによって供給される読取データは、第１の複数のディレクタ／メモリ基板のうちの１つにあるローカルキャッシュメモリ部分まで通される。【選択図】図３
2007519991.tif 000002
【特許請求の範囲】
【請求項１】
（ｉ）ホストコンピュータ／サーバに連結したディレクタと、（ｉｉ）基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する第１のディレクタ／メモリ基板と、
（ｉ）一式のディスクドライブに連結したディレクタと、（ｉｉ）基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する第２のディレクタ／メモリ基板と、を含み、
前記一式のディスクドライブに記憶するために前記ホストコンピュータ／サーバによって供給される書込データは、前記第２の複数のディレクタ／メモリ基板のうちの１つにある前記ローカルキャッシュメモリ部分まで通され、
前記第２の複数のディレクタ／メモリ基板のうちのそのような１つの基板上の前記ディレクタは、前記メモリ部分のそのような１つから前記一式のディスクドライブまでのデータの転送を制御し、
前記ホストコンピュータ／サーバによる使用のために前記一式のディスクドライブによって供給される読取データは、前記第１の複数のディレクタ／メモリ基板のうちの１つにある前記ローカルキャッシュメモリ部分まで通され、
前記第１の複数のディレクタ／メモリ基板のうちのそのような１つの基板上の前記ディレクタは、前記メモリ部分のうちのそのような１つから前記ホストコンピュータ／サーバへのデータの転送を制御する、ことを特徴とするデータ記憶システム。
【請求項２】
前記ローカルキャッシュメモリ部分は、そのようなディレクタ及びキャッシュメモリ部分の両方を有する前記基板のうちの前記１つの基板上の前記ディレクタによって制御されることを特徴とする請求項１に記載のデータ記憶システム。
【請求項３】
前記複数の第１のディレクタ／メモリ基板及び前記複数の第２のディレクタ／メモリ基板の前記ローカルキャッシュメモリ部分は、前記ホストコンピュータ／サーバと前記一式のディスクドライブの間を通るデータのためのデータ転送部分を形成することを特徴とする請求項２に記載のデータ記憶システム。
【請求項４】
前記複数の第１のディレクタと前記複数の第２のディレクタとに連結したネットワークを含むことを特徴とする請求項３に記載のデータ記憶システム。
【請求項５】
前記第１及び第２のディレクタは、前記ネットワークを通じて前記第１のディレクタと前記第２のディレクタとの間を通されるメッセージに応答して、前記ホストコンピュータと前記一式のディスクドライブの間のデータ転送を制御し、そのようなデータが前記データ転送部分を通過するようにホストコンピュータ／サーバと該一式のディスクドライブの間の該データ転送を制御することを特徴とする請求項４に記載のデータ記憶システム。
【請求項６】
前記ネットワークは、パケット交換ネットワークであることを特徴とする請求項５に記載のデータ記憶システム。
【請求項７】
前記メッセージは、各パケットが宛先フィールドを有するパケットを含むことを特徴とする請求項６に記載のデータ記憶システム。
【請求項８】
システムインタフェースを通じてホストコンピュータ／サーバと一式のディスクドライブとの間でデータを転送するためのデータ記憶システムであって、
そのようなシステムインタフェースが、
（Ａ）各基板が（ｉ）ホストコンピュータ／サーバに連結したディレクタと（ｉｉ）そのような基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する、複数の第１のディレクタ／メモリ基板と、
（Ｂ）各基板が（ｉ）一式のディスクドライブに連結したディレクタと（ｉｉ）そのような基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する、複数の第２のディレクタ／メモリ基板と、を含み、
（Ｃ）（ｉ）前記一式のディスクドライブに記憶するために前記ホストコンピュータ／サーバによって前記インタフェースに供給される書込データは、前記第２の複数のディレクタ／メモリ基板のうちの１つにある前記ローカルキャッシュメモリ部分まで通され、該第２の複数のディレクタ／メモリ基板のうちのそのような１つの基板上の前記ディレクタは、該メモリ部分のうちのそのような１つから該一式のディスクドライブまでのデータの転送を制御し、（ｉｉ）該ホストコンピュータ／サーバによる使用のために該一式のディスクドライブによって該インタフェースに供給される読取データは、前記第１の複数のディレクタ／メモリ基板のうちの１つにある前記ローカルキャッシュメモリ部分まで通され、該第１の複数のディレクタ／メモリ基板のうちのそのような１つの基板上の前記ディレクタは、該メモリ部分のうちのそのような１つから該ホストコンピュータ／サーバへのデータの転送を制御する、ことを特徴とするデータ記憶システム。
【請求項９】
前記ローカルキャッシュメモリ部分は、そのようなディレクタ及びキャッシュメモリ部分の両方を有する前記基板のうちの前記１つの基板上の前記ディレクタによって制御されることを特徴とする請求項８に記載のデータ記憶システム。
【請求項１０】
前記複数の第１のディレクタ／メモリ基板及び前記複数の第２のディレクタ／メモリ基板の前記ローカルキャッシュメモリ部分は、前記ホストコンピュータ／サーバと前記一式のディスクドライブの間を通されるデータのためのデータ転送部分を形成することを特徴とする請求項９に記載のデータ記憶システム。
【請求項１１】
前記複数の第１のディレクタと前記複数の第２のディレクタとに連結したネットワークを含むことを特徴とする請求項１０に記載のデータ記憶システム。
【請求項１２】
前記第１及び第２のディレクタは、前記ネットワークを通じて前記第１のディレクタと前記第２のディレクタとの間を通されるメッセージに応答して、前記ホストコンピュータと前記一式のディスクドライブの間のデータ転送を制御し、そのようなデータが前記データ転送部分を通過するようにホストコンピュータ／サーバと該一式のディスクドライブの間の該データ転送を制御することを特徴とする請求項１１に記載のデータ記憶システム。
【請求項１３】
前記ネットワークは、パケット交換ネットワークであることを特徴とする請求項１２に記載のデータ記憶システム。
【請求項１４】
前記メッセージは、各パケットが宛先フィールドを有するパケットを含むことを特徴とする請求項１３に記載のデータ記憶システム。
【請求項１５】
（Ａ）各基板が（ｉ）ホストコンピュータ／サーバに連結したディレクタと（ｉｉ）そのような基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する、複数の第１のディレクタ／メモリ基板と、（Ｂ）各基板が（ｉ）一式のディスクドライブに連結したディレクタと（ｉｉ）そのような基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する、複数の第２のディレクタ／メモリ基板とを有するシステムインタフェースを通じて、ホストコンピュータ／サーバと一式のディスクドライブとの間でデータを転送する方法であって、
（ａ）一式のディスクドライブに記憶するためにホストコンピュータ／サーバによってインタフェースに供給された書込データを、第２の複数のディレクタ／メモリ基板のうちの１つにあるローカルキャッシュメモリ部分まで通す段階と、
（ｂ）前記第２の複数のディレクタ／メモリ基板のうちのそのような１つの基板上のディレクタに、前記メモリ部分のそのような１つから前記一式のディスクドライブまでのデータの転送を制御させる段階と、
（ｃ）前記ホストコンピュータ／サーバによる使用のために前記一式のディスクドライブによって前記インタフェースに供給された読取データを、前記第１の複数のディレクタ／メモリ基板のうちの１つにあるローカルキャッシュメモリ部分まで通す段階と、
（ｄ）前記第１の複数のディレクタ／メモリ基板のうちのそのような１つの基板上のディレクタに、前記メモリ部分のそのような１つから前記ホストコンピュータ／サーバまでのデータの転送を制御させる段階と、を含むことを特徴とする方法。
【請求項１６】
そのようなディレクタ及びキャッシュメモリ部分の両方を有する前記基板のうちの前記１つの基板上の前記ディレクタによって制御された前記ローカルキャッシュメモリ部分を有する段階を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
（Ａ）各基板が（ｉ）ホストコンピュータ／サーバに連結したディレクタと（ｉｉ）そのような基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する、複数の第１のディレクタ／メモリ基板と、
（Ｂ）各基板が（ｉ）一式のディスクドライブに連結したディレクタと（ｉｉ）そのような基板上で該ディレクタと通信するローカルキャッシュメモリ部分とを有する、複数の第２のディレクタ／メモリ基板と、を有し、
（Ｃ）該複数の第１のディレクタ／メモリ基板及び該複数の第２のディレクタ／メモリ基板の該ローカルキャッシュメモリ部分が、該ホストコンピュータ／サーバと該一式のディスクドライブの間を通されるデータのためのデータ転送部分を形成し、
（Ｄ）該複数の第１のディレクタと該複数の第２のディレクタとに連結されたネットワークを更に有し、
（Ｅ）該第１及び第２のディレクタが、該ネットワークを通じて該第１のディレクタと該第２のディレクタの間を通されるメッセージに応答して該ホストコンピュータと該一式のディスクドライブの間のデータ転送を制御し、そのようなデータが該データ転送部分を通過するようにホストコンピュータ／サーバと該一式のディスクドライブの間の該データ転送を制御する、
システムインタフェースを通じて、ホストコンピュータ／サーバと一式のディスクドライブとの間でデータを転送する方法であって、
（ａ）一式のディスクドライブに記憶するためにホストコンピュータ／サーバによってインタフェースに供給された書込データを、第２の複数のディレクタ／メモリ基板のうちの１つにあるローカルキャッシュメモリ部分まで通す段階と、
（ｂ）前記第２の複数のディレクタ／メモリ基板のうちのそのような１つの基板上のディレクタに、前記メモリ部分のそのような１つから前記一式のディスクドライブまでのデータの転送を制御させる段階と、
（ｃ）前記ホストコンピュータ／サーバによる使用のために前記一式のディスクドライブによって前記インタフェースに供給された読取データを、前記第１の複数のディレクタ／メモリ基板のうちの１つにあるローカルキャッシュメモリ部分まで通す段階と、
（ｄ）前記第１の複数のディレクタ／メモリ基板のうちのそのような１つの基板上のディレクタに、前記メモリ部分のそのような１つから前記ホストコンピュータ／サーバまでのデータの転送を制御させる段階と、を含むことを特徴とする方法。
【請求項１８】
そのようなディレクタ及びキャッシュメモリ部分の両方を有する前記基板のうちの前記１つの基板上の前記ディレクタによって制御された前記ローカルキャッシュメモリ部分を有する段階を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記ネットワークは、パケット交換ネットワークであり、前記メッセージは、各パケットが宛先フィールドを有するパケットを含む、ことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、２００３年９月３０日出願の現在特許出願中の米国特許出願出願番号第１０／６７５，０３８号の一部継続出願である。
【０００２】
文献の引用(Incorporate by reference)
本特許出願は、本発明と同じ出願人に譲通された発明者Ｊｏｈｎ  Ｋ．Ｗａｌｔｏｎ、Ｗｉｌｌｉａｍ  Ｆ．Ｂａｘｔｅｒ  ＩＩＩ、Ｋｅｎｄｅｌｌ  Ａ．Ｃｈｉｌｔｏｎ、Ｄａｎｉｅｌ  Ｃａｓｔｅｌ、Ｍｉｃｈａｅｌ  Ｂｅｒｍｉｎｇｈａｍ、及びＪａｍｅｓ  Ｍ．Ｇｕｙｅｒにより２００３年９月３０日出願の「パケット・スイッチング・ネットワークを有するデータ記憶システム」という名称の現在特許出願中の米国特許出願出願番号第１０／６７５，０３８号の全内容を引用により組み入れる。
【０００３】
本発明は、一般的にはデータ記憶システムに関し、より具体的には、記憶システムの構成要素又はサブアセンブリに障害が発生した場合にシステム全体の障害を防ぐための冗長構成を有するデータ記憶システムに関する。
【背景技術】
【０００４】
当業者では公知であるように、大型のホストコンピュータ及びサーバ（本明細書では総称して「ホストコンピュータ／サーバ」と呼ぶ）は、大容量のデータ記憶システムを必要とする。これらの大型のコンピュータ／サーバは、一般的に、データ記憶システムを含む周辺装置を通じてホストコンピュータ／サーバに取り込まれたデータに対して多くの演算を実行するデータプロセッサを含む。これらの演算の結果は、記憶システムを含む周辺装置に出力される。
【０００５】
データ記憶システムの１つの形式は、磁気ディスク記憶システムである。この場合、一式のディスクドライブとホストコンピュータ／サーバとは、インタフェースを通じて互いに連結されている。インタフェースは、「フロントエンド」又はホストコンピュータ／サーバコントローラ（又はディレクタ）と、「バックエンド」又はディスクコントローラ（又はディレクタ）とを含む。インタフェースは、コントローラ（又はディレクタ）を、それらがホストコンピュータ／サーバに対して透過的（トランスペアレント）であるように作動させる。すなわち、データは、ホストコンピュータ／サーバが単に自らのローカルディスクドライブで演算していると思えるような方法で一式のディスクドライブに保存され、そこから検索される。１つのこのようなシステムは、発明者Ｍｏｓｈｅ  Ｙａｎａｉ、Ｎａｔａｎ  Ｖｉｓｈｌｉｔｚｋｙ、Ｂｒｕｎｏ  Ａｌｔｅｒｅｓｃｕ、及びＤａｎｉｅｌ  Ｃａｓｔｅｌに１９９３年４月２７日に付与され、本発明と同じ出願人に譲渡された「ディスクマッピング及びデータ検索のためのシステム及び方法」という名称の米国特許第５，２０６，９３９号に説明されている。
【０００６】
このような米国特許に説明されているように、インタフェースはまた、ホストコンピュータ／サーバコントローラ（又はディレクタ）及びディスクコントローラ（又はディレクタ）に加えて、アドレス可能なキャッシュメモリを含むことができる。キャッシュメモリは、半導体メモリであり、ホストコンピュータ／サーバからのデータをディスクドライブに記憶する前に迅速に記憶し、他方ではディスクドライブからのデータがホストコンピュータ／サーバに送られる前に記憶するために設けられている。ディスクドライブの場合の磁気メモリとは違って半導体メモリであるキャッシュメモリは、データの読取及び書込がディスクドライブよりもはるかに速い。
【０００７】
ホストコンピュータ／サーバコントローラ、ディスクコントローラ、及びキャッシュメモリは、バックプレーン(backplane)プリント回路基板を通じて相互に接続されている。より詳細には、ディスクコントローラは、ディスクコントローラのプリント回路基板上に装着される。ホストコンピュータ／サーバコントローラは、ホストコンピュータ／サーバコントローラのプリント回路基板上に装着される。更に、キャッシュメモリは、キャッシュメモリのプリント回路基板上に装着される。ディスクディレクタ、ホストコンピュータ／サーバディレクタ、及びキャッシュメモリのプリント回路基板は、バックプレーンプリント回路基板に接続される。ディレクタ内の障害の場合のデータの保全性をもたらすために、バックプレーンプリント回路基板は、一対のバスを有する。一組のディスクディレクタを一方のバスに接続し、別の組のディスクディレクタを他方のバスに接続する。同様に、一組のホストコンピュータ／サーバディレクタを一方のバスに接続し、別の組のホストコンピュータ／サーバディレクタは、他方のバスに接続されたディレクタである。キャッシュメモリは、両方のバスに接続される。バスの各々は、データ、アドレス、及び制御情報を提供する。
【０００８】
この構成を図１に概略的に示す。
【０００９】
すなわち、２つのバスＢ１及びＢ２を使用することは、ある一定の程度の冗長性をもたらし、一方のバスに接続したコントローラ又はディスクドライブが機能しなくなった場合にシステム全体の障害を防ぐものである。更に、２つのバスを使用することにより、単一のバスを有するシステムに比べてシステムのデータ転送帯域幅が増大する。すなわち、作動中に、ホストコンピュータ／サーバ１２がデータを記憶したい場合には、ホストコンピュータ１２は、書込指令を実行するためにフロントエンドディレクタ１４（すなわち、ホストコンピュータ／サーバディレクタ）の１つに書込要求を出す。フロントエンドディレクタ１４のうちの１つは、その要求に応えてホストコンピュータ１２にデータを求める。この要求がフロントエンドディレクタ１４のうちの要求中のディレクタに通された後に、ディレクタ１４は、データの大きさを判断し、要求を記憶するためにキャッシュメモリ１８にスペースを予約する。フロントエンドディレクタ１４は、次に、このようなフロントエンドディレクタ１４に接続したアドレスメモリバスＢ１及びＢ２の１つで制御信号を生成し、キャッシュメモリ１８への転送を可能にする。次に、ホストコンピュータ／サーバ１２は、データをフロントエンドディレクタ１４へ転送する。フロントエンドディレクタ１４は、その後、転送が完了したことをホストコンピュータ／サーバに通知する。フロントエンドディレクタ１４は、図示していないがキャッシュメモリ１８に記憶された「テーブル」を検索してバックエンドディレクタ２０（すなわち、ディスクディレクタ）のどれがこの要求を処理するかを判断する。「テーブル」は、ホストコンピュータ／サーバ１２のアドレスを一式１４のディスクドライブ内のアドレスにマップする。フロントエンドディレクタ１４は、次に、要求、データ量、及びデータに関するディスクアドレスを処理するバックエンドディレクタ２０に対する「メールボックス」（図示しないが、キャッシュメモリ１８内に記憶されている）内に通知を入れる。他のバックエンドディレクタ２０は、それらがアイドル状態の時にキャッシュメモリ１８をポーリングし、それらの「メールボックス」を検査する。ポーリングした「メールボックス」が転送を行う予定を示す場合、バックエンドディレクタ２０は、要求を処理し、一式２２内のディスクドライブをアドレス指定し、キャッシュメモリ１８からデータを読み取り、それを一式２２内のディスクドライブのアドレスに書き込む。
【００１０】
一式２２内のディスクドライブからホストコンピュータ／サーバ１２へデータを読み取る場合には、システムは、逆の方法で作動する。より詳細には、読取作動中に、特定の記憶域（すなわち、要求されたデータブロック）にあるデータを求めて、読取要求がホストコンピュータ／サーバ１２によって開始される。フロントエンドディレクタ１４の１つは、この読取要求を受け取り、キャッシュメモリ１８を調べて要求されたデータブロックがキャッシュメモリ１８に記憶されているか否かを判断する。要求されたデータブロックがキャッシュメモリ１８にある場合、要求されたデータブロックは、キャッシュメモリ１８から読み出され、ホストコンピュータ／サーバ１２へ送られる。フロントエンドディレクタ１４が、要求されたデータブロックはキャッシュメモリ１８にない（すなわち、いわゆる「キャッシュミス」）と判断した場合、ディレクタ１４は、要求されたデータブロックを受け取る必要があるという注釈をキャッシュメモリ１８（すなわち、「メールボックス」）に書き込む。バックエンドディレクタ２０は、キャッシュメモリ１８をポーリングして、取るべきアクション（すなわち、要求されたデータのブロックの読取作動）があるか否かを判断する。キャッシュメモリ１８のメールボックスをポーリングして読取作動を検出したバックエンドディレクタ２０のうちの１つは、要求されたデータブロックを読み取り、キャッシュメモリ１８に記憶されたこのような要求データブロックの記憶を始める。情報がキャッシュメモリ１８内に完全に書き込まれると、読取完了表示がキャッシュメモリ１８内の「メールボックス」に入れられる。フロントエンドディレクタ１４は、読取完了表示を求めてキャッシュメモリ１８をポーリングしているということに注意されたい。ポーリング中のフロントエンドディレクタ１４の１つが読取完了表示を検出すると、このようなフロントエンドディレクタ１４は、この時点でキャッシュメモリ１８に記憶されている要求されたデータのホストコンピュータ／サーバ１２への転送を完了する。
【００１１】
メールボックスの使用及びポーリングは、ホストコンピュータ／サーバ１２と一式２２のディスクドライブとの間でデータを転送する時間を必要とし、従って、インタフェースの作動帯域幅を低減する。
【００１２】
ここで図２を参照すると、システムインタフェース１６１を通じてホストコンピュータ／サーバ１２０と一式のディスクドライブ１４０との間でデータを転送するためのデータ記憶システム１００を示している。データ記憶システム１００は、本明細書においてその全内容が引用により組み入れられる、２０００年３月３１日出願の現在特許出願中の米国特許出願出願番号「ＵＳ  ２０００  ０５４８２８」に説明されている。また、２００２年３月６日に公開された対応する英国特許ＧＢ２３６６４２５も参照されたい。
【００１３】
システムインタフェース１６１は、図のように、ポート１２３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〜３１８4と、ディスクドライブ３１４の一式に連結したここでは例えば４つの複数のバックエンドディレクタ／メモリのプリント回路基板３２０1〜３２０4とを含む。フロントエンドディレクタ基板／メモリ基板３１８1〜３１８4とバックエンドディレクタ／メモリ基板３２０1〜３２０4とは、図のようにここではスイッチング構成のパケット交換ネットワーク３５４を通じて互いに連結され、すなわち、互いに通信している。
【００３６】
フロントエンド及びバックエンドディレクタ／メモリ基板３１８1〜３１８4及び３２０1〜３２０4は、機能的に同様であり、ディレクタと、すなわち、場合によってそれぞれＦＥディレクタ３５０又はＢＥディレクタ３５２と、ローカルキャッシュメモリ３５４とを含む。従って、フロントエンドディレクタ／メモリ基板３１８1〜３１８4は、フロントエンド（ＦＥ）ディレクタ３５０を含み、バックエンドディレクタ／メモリ基板３２０1〜３２０4は、バックエンド（ＢＥ）ディレクタ３５２を含む。ＦＥ３５０は、ホストコンピュータ／サーバ１２０に接続され、ＢＥ３５２は、一式のディスクドライブ１４０に接続されることに注意されたい。
【００３７】
より詳細には、ディレクタ３５０及び３５２の各々は、図のように配置されかつその全内容が引用により組み込まれている本発明と同じ出願人に譲渡された発明者Ｙｕｖａｌ  Ｏｆｅｋ他による２０００年３月３１日出願の現在特許出願中の米国特許出願出願番号第０９／５４０，８２８号に詳細に説明されているように、ＢＥ又はＦＥに関わらず、マイクロプロセッサ（μＰ）３２９（すなわち、中央演算装置（ＣＰＵ）及びＲＡＭ）と、メッセージエンジン及びメモリコントローラ３３７を有するメッセージエンジン／ＣＰＵコントローラと、データパイプ３３８とを含む。しかし、ここでは、フロントエンド及びバックエンドディレクタ３５０及び３５２が、ディレクタ３５０及び３５３間を通されるメッセージに応答して、ここではスイッチング構成であるパケット交換ネットワーク３５４を通じてホストコンピュータ／サーバ１２０と一式のディスクドライブ１４０との間のデータ転送を制御することを言えば十分である。
【００３８】
ソフトウエアの制御下でマイクロプロセッサ３２９によって生成された各メッセージは、図示していないがＲＡＭの送信待ち行列に記憶される。図示していないがＲＡＭの送信待ち行列からメッセージが読み出され、ＤＭＡ作動によりメッセージネットワークのパケット交換ネットワーク３５４を通じて１つ又はそれよりも多くの他のディレクタへ送信されると、メッセージは、パケット化装置でパケットに区切られる。ディレクタに対しては、パケットの各々は、図４Ａに示すように指令と、ソースＩＤ（すなわち、送信ディレクタ）と、宛先ＩＤ（すなわち、受信ディレクタ）アドレスと、ペイロードといったフィールドを含み、４バイトの「周期的冗長検査（ＣＲＣ）」で終わっている。
【００３９】
フロントエンドディレクタ／メモリ基板及びバックエンドディレクタ／メモリ基板の例示的なものを図４に詳細に示す。上述のように、基板の各々は、場合によってはディレクタ３５０及び３５２、及びローカルメモリ部分３５４を含む。ディレクタは、マイクロプロセッサ３２９と、メッセージエンジン／ＣＰＵコントローラ３３１と、データパイプ３３８とを含む。データパイプ３２０とメッセージエンジン／ＣＰＵコントローラ３３１とは、それぞれ、図のようにクロスバースイッチ３３２に連結したパケット化装置及びパケット解除装置を含む。メモリ部分３３５は、図のようにパケット化装置及びパケット解除装置を通じてクロスバースイッチ３３２に連結したローカルキャッシュメモリ３５７を含む。クロスバースイッチは、図３に示すように、パケット交換ネットワーク３５４に連結されている。
【００４０】
ここではパケット交換を使用しているので、データパイプ、メッセージエンジン／ＣＰＵコントローラ、及びメモリ部分で使用する共通のパケット交換プロトコルを有効にするために、メモリ部分は、パケット化装置及びパケット解除装置を含むことに注意されたい。データパケットは、メモリ部分を出入りする。
【００４１】
キャッシュメモリのデータに関しては、パケットの各々は、指令（例えば、読取、書込）と、ソースＩＤ（すなわち、送信元）と、宛先ＩＤ（すなわち、データを制御するディレクタ基板ＩＤ）といったフィールドを含む。
【００４２】
また、ディレクタ／メモリ基板上のメモリ部分は、このような基板上のクロスバースイッチを通じて同じ基板上のデータパイプと通信することができるということにも注意されたい。従って、上述のように、クロスバースイッチは、パケット交換ネットワーク部分３５４全体の一部である。従って、フロントエンド及びバックエンドディレクタ３５０及び３５２とキャッシュメモリ部分３５５とは、上述のパケット交換ネットワークを通じて互いに通信し、このようなネットワークは、クロスバースイッチ３３２とパケット交換部分３５４とを含む。
【００４３】
各パケットは、クロスバースイッチ３３２へ送られる。パケットの宛先部分は、メッセージの宛先を示すために使用され、スイッチ３３２によって復号化されて、パケット交換ネットワーク部分３５４を通るメッセージルーティングを判断する。復号化処理は、図示していないがパケット交換ネットワーク部分３５４内のルーティングテーブルを用い、このようなルーティングテーブルは、初期化及び診断プロセッサ（コントローラ）による電源投入中にコントローラにより初期化される。ルーティングテーブルは、メッセージのルーティングを特定するパケットの宛先アドレス部分と、メッセージが向うディレクタ３５０及び３５２の一方との関係を提供する。
【００４４】
ここで再び図４を参照すると、パケットは、図示していないがパケット交換ネットワーク３５４内の復号化テーブルを使用し、このようなルーティングテーブルは、図示していないが初期化及び診断プロセッサ（コントローラ）による電源投入中にコントローラによって初期化される。このテーブルは、データのためのルーティングを特定するパケットの宛先アドレス部分と、場合によってデータを書き込むか又は読み取るためのキャッシュメモリ内の場所との関係を提供する。
【００４５】
再び図３を参照すると、ユーザデータ（すなわち、ホストコンピュータ／サーバ１２０へ転送及びホストコンピュータ／サーバ１２０から転送されるデータ）に関して、パケット交換ネットワーク３５４は、ディレクタ３５０及び３５２を相互に接続するために使用され、データは、標準の「アトミック」塊又はパケットでネットワーク３５４を通じて転送される。書込データ（すなわち、一式のディスクドライブ１４０内に書き込まれるホストコンピュータ／サーバ内のデータ）は、一式１４０内のディスクドライブに連結した適切なバックエンドディレクタ（本明細書ではＢＥと呼ぶことがある）に送られ、データは、この中にデステージ（すなわち、ＢＥからディスクドライブへの転送）のために書き込まれることになる。読取データ（すなわち、ホストコンピュータ／サーバ１２０内に書き込まれる一式１４０内のディスクドライブ上のデータ）は、このようなデータを要求しているホストコンピュータ／サーバのプロセッサに連結した適切なフロントエンドディレクタ（本明細書ではＦＥと呼ぶことがある）に送られる。書込データは、ＦＥ制御のキャッシュメモリ（すなわち、ＦＥローカルキャッシュメモリ部分３５５）において「ヒット」した時でさも常にＢＥへ送られる。
【００４６】
フロントエンドディレクタ（ＦＥ）は、異なるプロトコルを汎用データ要求（すなわち、システムのプロトコル）に変換する。ＦＥは、基本的に変換機構及びルータであり、要求のルーティングの方法（すなわち、ＢＥのどれが要求を受け取るか）を理解するように求められるが、キャッシュメモリのコヒーレンシーを制御することはない。読取ヒット性能に関しては、ＦＥは、そのローカルキャッシュメモリ３５５を制御する。ＦＥは、実質的に自身のローカルキャッシュメモリ３５５構造にわたって「所有」（すなわち、独立制御を維持）しており、データコヒーレンシーの管理の提供、アトミックデータ要求のサービス提供、及び適切な肯定応答の提供をＢＥに依存している。
【００４７】
バックエンドディレクタ（ＢＥ）は、その一次アタッシュのドライブ（すなわち、それらが接続した一式１４０内のディスクドライブの対のうちの主要なもの）を「所有」する。ＢＥはまた、そのローカルキャッシュメモリ３５５にドライブデータをキャッシュするためにシステムコヒーレンシーを「所有」する。ＢＥは、ディレクタとその１つ又は複数のどれがそのローカルキャッシュメモリ３５５に要求データを有するかの関係を提供するシステムのストレージマップを集合的に「所有」して管理する。
【００４８】
ファブリックパケット交換ネットワーク３５４は、メッセージ通信とユーザデータ移動の両方をサポートする。このネットワークは、例えば「プッシュ・オンリー」型又は「プッシュ・プル」型とすることができる。
【００４９】
すなわち、フロントエンドディレクタ３５０及びバックエンドディレクタ３５２は、全て独立に作動し、単一のグローバルキャッシュメモリ構造を共有するように制約されていない。
【００５０】
以下は、キャッシュメモリ作動の例である。
【００５１】
読取及び書込作動の例を説明する前に図５を参照する。ここでは、フロントエンドディレクタ基板は、ホストコンピュータ／サーバ１２０とパケット交換ネットワーク３５４との間に連結されており、バックエンドディレクタ／メモリ基板は、パケット交換ネットワーク３５４と一式のディスクドライブ１４０との間に連結されている。各ディレクタ基板上、すなわち、例えばフロントエンドディレクタ基板３１８4又は例えばバックエンドディレクタ基板３２０4上で、ローカルキャッシュメモリ部分３５５とこのような基板上のディレクタとは、このような基板上のクロスバースイッチ３３２（図３及び４）を通じて互いに通信するということに注意されたい。
【００５２】
ここで図６Ａ及び６Ｂも参照して読取作動を説明する。
【００５３】
段階６０２では、ホストコンピュータ１２０からの読取要求に応答して、読取要求の実行を開始する。次に、ホストコンピュータ１２０からの読取要求を受け取ったフロントエンド（ＦＥ）ディレクタ３５０は、要求を構文解析する（段階６０４）。次に、フロントエンドＦＥディレクタ３５０は、タグ（すなわち、要求のアドレス）を調べて読み出される要求データが読取要求を受け取ったフロントエンドディレクタのローカルメモリキャッシュ３５５にあるか否かを判断する（段階６０６）。ホストコンピュータ／サーバ１２０からの要求は、ホストコンピュータ／サーバのアドレスからシステムのアドレスへのアドレス変換のためにＦＥへ通されることに注意されたい。
【００５４】
段階６０８では、読取要求を受け取ったフロントエンドディレクタが、読み出されるデータはそのローカルキャッシュメモリ３５５にあると判断した場合、このようなローカルキャッシュメモリのデータは、そこから読み出される（段階６１０）。読取データは、その後、要求を受け取ったフロントエンドディレクタによってこのようなデータを要求しているホストコンピュータ１２０へ戻されて読取は完了する（段階６１４）。
【００５５】
一方、段階６０８で読み出されるデータがローカルキャッシュメモリ３５５にないと判断された場合、読取要求を受け取ったフロントエンドディレクタは、そのシステムマップ（図５）からバックエンドディレクタ３６２のどれが要求データを制御している（すなわち、「所有している」）かを判断する。システムマップは、システム内のデータの状態を制御する１つかつ１つだけのＢＥを指すことに注意されたい。
【００５６】
読取要求を受け取ったフロントエンドディレクタはまた、読取データのためにそのローカルキャッシュメモリ３５５にスペース（すなわち、スロット）を割り当てる（段階６１６）。
【００５７】
読取要求を受け取ったフロントエンドディレクタは、要求される読取データを「所有」していると判断されたバックエンドディレクタ３６２の１つにパケット交換ネットワーク３５４を通じてメッセージを送る（段階６１８）。
【００５８】
要求されるデータを「所有」するバックエンドディレクタは、そのトラックテーブルの検索で調べ、要求されたデータが他のディレクタによって現在能動的に書込み中でないことを確かめ、タグにアクセスするためにローカルキャッシュ内のインデックスを判断する（段階６２０）。
【００５９】
次に、バックエンドディレクタは、タグの内容を調べ、要求された読取データがこのバックエンドディレクタのローカルキャッシュメモリ３５５にあるか、他のディレクタのローカルキャッシュにあるか、又はこのバックエンドディレクタに連結したディスクドライブにあるかを判断する。要求された読取データが何らかの他のディレクタにある場合には、バックエンドディレクタは、共有のコピーが要求側のローカルキャッシュにあることになることを示すためにそのタグを更新し、データを要求側に提供するために彼自身のために作用するようにメッセージをデータの現在の保持者に送り、データがＦＥのキャッシュメモリ内で利用可能なＦＥにメッセージを送る。要求されたデータを現在保持していると特定されたディレクタが、データをそれ以上持たない（そのキャッシュラインを以前無効にしていた）というメッセージを戻す場合、バックエンドディレクタは、ディスクからのデータにアクセスする準備をする（段階６２６）。
【００６０】
要求されたデータがこのバックエンドディレクタに（すなわち、このバックエンドディレクタのローカルキャッシュメモリ３５５又はこのバックエンドディレクタに連結したディスクドライブに）ある場合（段階６２２）、このバックエンドディレクタのタグ処理を利用して、要求されたデータがそのディレクタのローカルキャッシュメモリ３５５にあるか否かを判断する（段階６４２）。データがそのディレクタのローカルキャッシュメモリ３５５にない場合、そのバックエンドディレクタは、そのローカルキャッシュメモリ３５５にキャッシュラインを生成する（段階６２６）。任意的に、バックエンドは、キャッシュラインのデータ全体を生成して記憶する必要はなく、要求中のフロントエンドディレクタのローカルキャッシュメモリ３５５にデータのコピーがあることになるという内容を示すタグを生成するだけであることに注意すべきである。バックエンドディレクタは、ディスクドライブからデータを読み取り、データを要求しているフロントエンドディレクタのローカルキャッシュメモリにそれを送る（段階６２８）。次に、この時点でそのローカルキャッシュメモリ３５５にデータを有するフロントエンドディレクタ３５０は、そのローカルキャッシュメモリエントリを有効としてマーク付けし、読取データを記憶し、その後、ホストコンピュータ１２０まで読取データを送る（段階６３０）。そこで読取処理は終わる（段階６３２）。
【００６１】
一方、段階６２４において、データがそのディレクタのローカルキャッシュメモリ３５５にあると判断された場合、そのバックエンドディレクタ３５２は、データを要求しているフロントエンドディレクタ３５０のローカルキャッシュメモリへコピーを送る（段階６３４）。バックエンドディレクタ３５２はまた、読取データの共有コピーを有するとしてそのタグを更新する（段階６３６）。このバックエンドディレクタ３５２はまた、読取データ要求を行っているフロントエンドディレクタに対して、データをこのようなフロントエンドディレクタのローカルキャッシュメモリ３５５に記憶することができるというメッセージを送る（段階６３８）。
【００６２】
読取データ要求を行っているフロントエンドディレクタは、そのローカルキャッシュメモリ内のローカルキャッシュメモリ部分３５５を有効としてマーク付けする。読取データ要求を行っているフロントエンドディレクタは、そのローカルキャッシュメモリ部分３５５内のデータをホストコンピュータ／サーバ１２０へ転送し（段階６４２）、読取要求は終了する（段階６４４）。
【００６３】
段階６２２において、ローカルキャッシュのタグが存在し、かつデータはローカルキャッシュメモリ部分３５５にはなく（段階６２４）、更に、データは何らかの他のディレクタにあるとタグが示していると判断された場合、バックエンドディレクタは、他のどのディレクタがデータを有するかを判断する（段階６４６）。バックエンドディレクタは、要求中のフロントエンドディレクタがデータのコピーを手に入れることを示すようにタグを更新する（段階６４８）。バックエンドディレクタは、次に、特定された他のディレクタに対して、読み出されるデータのそのコピーを、要求しているディレクタに送るように要求を送ることになる（段階６５０）。次に、この特定された他のディレクタは、バックエンドディレクタに代わって、読み出されるデータを要求しているディレクタのローカルキャッシュメモリ部分３５５へ送るように作用することになり（段階６５２）、要求中のディレクタにデータが利用可能であることを通知することになる（段階６５２）。フロントエンドディレクタは、次に、上述の方法でデータをホストコンピュータ／サーバ１２０に送る（段階６４０から６４４）。
【００６４】
ここで図７も参照して書込作動を説明する。
【００６５】
段階７０２では、ホストコンピュータ１２０からフロントエンドディレクタ３５０への書込要求に応答して、書込要求の実行が開始される。次に、ホストコンピュータ１２０から書込要求を受け取ったフロントエンド（ＦＥ）ディレクタ３５０は、要求を構文解析し、書込データのためにローカルキャッシュメモリ３５５にスロットを割り当てる（段階７０４）。
【００６６】
書込要求を受け取ったフロントエンドディレクタは、そのシステムマップ（図５）からバックエンドディレクタのどれがそのディスクを制御しているかを判断する（段階４０４）。ホストコンピュータ／サーバ１２０からの要求は、ホストコンピュータ／サーバのアドレスからシステムのアドレスへのアドレス変換のために、要求を受け取るフロントエンドディレクタまで通されることに注意されたい。
【００６７】
段階７０６では、要求を受け取るフロントエンドディレクタは、ホストコンピュータからのデータが書き込まれるディスクドライブを制御すると判断されたバックエンドディレクタへ要求を送る。
【００６８】
要求されたデータを「所有」するバックエンドディレクタは、そのトラックテーブルを調べ、要求されたデータが現在何らかの他のディレクタによって能動的に書込み中ではないことを確かめ、ローカルキャッシュ内のインデックスを判断してタグにアクセスする。また、タグから他のディレクタのローカルキャッシュに共有の読取コピーがあるか否かを判断し、そうである場合は、それらのディレクタへキャッシュライン無効要求を出す。
【００６９】
段階７０８では、ホストコンピュータからのデータが書き込まれるディスクドライブを制御すると判断されたバックエンドディレクタは、そのローカルキャッシュメモリ３５５に書込データのためにスロットがそれ以上は存在しない場合はスロットを割り当て、そのスロットのアドレスをホストコンピュータからデータを書き込む要求を受け取ったフロントエンドディレクタに送る。
【００７０】
段階７１０では、フロントエンドディレクタ３５０は、そのローカルキャッシュメモリ３５５内の割り当てたスロットにホストコンピュータ１２０からのデータを書き込み、ホストコンピュータからのデータが書き込まれるディスクドライブを制御すると判断されたバックエンドディレクタに同じデータを送る。
【００７１】
段階７１２では、ホストコンピュータからのデータが入ることになるディスクドライブを制御すると判断されたバックエンドディレクタ３５２は、フロントエンドディレクタから受け取ったデータをバックエンドディレクタのローカルキャッシュメモリ３５５内の割り当てたスロットに書き込む。すなわち、ディスクドライブに書き込まれるデータの２つのコピーが存在し、１つは、書込要求を受け取るフロントエンドディレクタのローカルキャッシュにあり、１つは、このようなデータが書き込まれるディスクドライブに連結したバックエンドディレクタのものである。
【００７２】
段階７１４では、書込要求を受け取ったフロントエンドディレクタは、書込データが転送されたという肯定応答をホストコンピュータ１２０に送る。
【００７３】
段階７１６では、このようなデータが書き込まれるディスクドライブに連結したバックエンドディレクタは、そのローカルキャッシュメモリ３５５の割り当てたスロット内のデータをディスクドライブにデステージし、ホストコンピュータからの要求を受け取ったフロントエンドディレクタに書込完了の通知を送る。
【００７４】
段階７１８では、フロントエンド及びバックエンドディレクタ３５０及び３５２は、以前に割り当てたキャッシュスロットを使えるようにするために、その割り当てたキャッシュラインを無効にする。
【００７５】
書込作動が完了する（段階７２０）。
【００７６】
本発明のいくつかの実施形態を説明した。それにも関わらず、本発明の精神及び範囲を逸脱することなく様々な修正を行うことができることが理解されるであろう。従って、他の実施形態も特許請求の範囲に含まれるものである。
【図面の簡単な説明】
【００７７】
【図１】従来技術のデータ記憶システムのブロック図である。
【図２】従来技術のデータ記憶システムのブロック図である。
【図３】本発明によるデータ記憶システムのブロック図である。
【図４】図３のデータ記憶システムに使用される複数のディレクタ／メモリ基板の例示的なもののブロック図である。
【図４Ａ】図２のデータ記憶システムに使用されるパケットの図である。
【図５】図３のシステムの読取及び書込作動を理解するのに役立つ図である。
【図６Ａ】図６Ｂと共に図３のデータ記憶システムにより実行される読取作動の流れ図である。
【図６Ｂ】図６Ａと共に図３のデータ記憶システムにより実行される読取作動の流れ図である。
【図７】図３のデータ記憶システムにより実行される書込作動の流れ図である。
【符号の説明】
【００７８】
１２０  ホストコンピュータ／サーバ
１４０  一式のディスクドライブ
３００  データ記憶システム
３１６  システムインタフェース
３５０  フロントエンドディレクタ
３５２  バックエンドディレクタ
【図１】
2007519991.tif 000003
【図２】
2007519991.tif 000004
【図３】
2007519991.tif 000005
【図４】
2007519991.tif 000006
【図４Ａ】
2007519991.tif 000007
【図５】
2007519991.tif 000008
【図６Ａ】
2007519991.tif 000009
【図６Ｂ】
2007519991.tif 000010
【図７】
2007519991.tif 000011
【国際調査報告】
2007519991.tif 000012
2007519991.tif 000013