(57)【特許請求の範囲】
【請求項１】
複数のメモリボード（１００Ａ，１００Ｂ，・・・，１００Ｎ）を備え、且つ複数のホストコントローラと、複数のディスクコントローラとに接続したメモリシステム（１６）であって、前記メモリシステムは：
前記各メモリボードは、夫々のデータ値を記憶し得る複数のセグメントを有することと、
前記セグメントは各パリティセットへとグループ化され、前記各パリティセットはＮ個のセグメントを有し、前記Ｎは４以上の自然数であることと、
前記各パリティセットにおける夫々の前記Ｎ個のセグメントは、１個のパリティセグメントおよび（Ｎ−１）個のデータセグメントを有することと、
前記各パリティセットにおける前記Ｎ個のセグメントは、前記各メモリボードのいずれもが前記各パリティセットからの２つ以上のセグメントを有さない様に、前記各メモリボード間に分散され、且つ、
少なくとも１個のパリティセットにおける１個のパリティセグメントに記憶されたデータ値は、前記少なくとも１個のパリティセットにおける各データセグメントに記憶された各データ値の排他論理和により計算され得ることと、
前記メモリボードの各々は、複数のメモリ領域と、前記メモリ領域に対応して、各メモリ領域に対するデータの記憶および読出を夫々個別に制御する複数のメモリ領域コントローラと、前記メモリ領域コントローラを含む制御ネットワーク回路構成（２００）とを有することと、
前記制御ネットワーク回路構成（２００）は、クロスバースイッチング回路構成とシリアルパラレル変換回路構成を有することと、
前記シリアルパラレル変換回路構成は、リンク（４０，４２，４４，４６）を介して前記ホストコントローラと前記ディスクコントローラから受信したシリアル情報ストリームをパラレル情報ストリームに変換し、且つ前記パラレル情報ストリームを前記クロスバースイッチング回路構成に送信することと、
前記シリアル情報ストリームは、前記メモリボードと、データが記憶されるべきメモリ領域またはデータが読取られるべきメモリ領域と、前記データの送信を開始した前記ホストコントローラまたは前記データの送信を開始した前記ディスクコントローラとを示すことと、
前記メモリ領域の各々は、夫々のメモリボードに含まれるセグメントの部分集合を含み、
且つ、
夫々のメモリ領域に含まれるセグメントの各々には、夫々のメモリ領域に含まれる他のセグメントに割当てられ得る他の基本メモリアドレスとは異なる、基本メモリアドレスが割当てられ得ることと
を備えることを特徴とするメモリシステム。
【請求項２】
前記メモリシステム（１６）は更に、
前記クロスバースイッチング回路構成は、クロスバースイッチネットワークと、ポイントーツーポイントネットワークとを有することと、
前記ポイントーツーポイントネットワークは、複数のポイント間相互接続を有することと、
前記ポイント間相互接続は、前記クロスバースイッチネットワークの夫々のポートを前記メモリ領域コントローラの夫々のポートに接続することと、
前記クロスバースイッチネットワークは、前記シリアルパラレル変換回路構成から前記パラレル情報ストリームを受信すべく、且つ前記パラレル情報ストリームの内容に基づき、前記ポイントーツーポイントネットワークにおける適切なポイント間相互接続を介して、前記パラレル情報ストリームにおいて特定されたメモリ領域に関連するメモリ領域コントローラのポートに、前記パラレル情報ストリームを送信すべく構成されることと
を備える請求項１記載のメモリシステム。
【請求項３】
前記メモリシステム（１６）は更に、
前記メモリ領域コントローラの各々は、前記ポイントーツーポイントネットワークを介して受信した前記パラレル情報ストリームに応じて、前記メモリ領域コントローラの関連するメモリ領域の夫々に、コマンドを発行しうることであって、
前記コマンドによって、前記メモリシステム（１６）は、前記メモリ領域に前記データを記憶するか、または前記メモリ領域から前記データを読出すことと、
前記メモリシステム（１６）は、読出された前記データを、前記ポイントーツーポイントネットワークを介して、前記クロスバースイッチネットワークに送信することと、
前記メモリシステム（１６）は、前記データを、前記クロスバースイッチネットワークから前記シリアルパラレル変換回路構成を通し、前記リンク（４０，４２，４４，４６）を介して、適切な前記ホストコントローラまたは適切な前記ディスクコントローラに送信することと
を備える請求項２記載のメモリシステム。
【請求項４】
前記個数Ｎが４に等しい、請求項１記載のメモリシステム。
【請求項５】
前記メモリシステム（１６）は更に、
前記個数Ｎは４に等しいことと、
前記少なくとも１個のパリティセットにおける１つのデータセグメントに初めに記憶されるデータ値は可変値Ａに等しく、且つ、前記少なくとも１個のパリティセットにおける１個のパリティセグメントに初めに記憶されるデータ値は可変値Ｐに等しいことと、
前記メモリシステムは前記少なくとも１個のパリティセットにおける各セグメントに記憶された夫々のデータ値を変更すべく使用され得る回路構成を含み、且つ、
前記回路構成が１つの前記データ値を前記可変値Ａから別の可変値Ａ’へと変更すべく使用されるとき、前記回路構成は前記少なくとも１個のパリティセットにおける前記１個のパリティセグメントに記憶されたデータ値もまた可変値Ｐから別の可変値Ｐ’へと変更し、この値Ｐ’はＰ  ＸＯＲ  Ａ  ＸＯＲ  Ａ’に等しく、前記式中、“ＸＯＲ”は排他論理和関数を表すことと
を備える請求項１記載のメモリシステム。
【請求項６】
前記メモリシステム（１６）は更に、
前記メモリボードの各々は、前記メモリ領域コントローラを介して前記各メモリボードを双方向に接続する双方向データ経路を有し、前記双方向データ経路は、前記データセグメントのデータ値における変更済データワードが前記パリティセグメントの部分的パリティ値の生成と送信と同時に前記データセグメントに書込まれることを可能にすること
を備える請求項１項記載のメモリシステム。
【請求項７】
データ値を記憶し得る複数のメモリセグメントを各々が有する複数のメモリボード（１００Ａ，１００Ｂ，・・・，１００Ｎ）を含み、且つ複数のホストコントローラと、複数のディスクコントローラとに接続したメモリシステム（１６）の使用方法であって、
パリティセットの各々は４以上の自然数であるＮ個のセグメントを含むように前記各セグメントを各パリティセットへとグループ化する工程であって、各パリティセットにおけるＮ個のセグメントは１個のパリティセグメントと（Ｎ−１）個のデータセグメントとから成ることと；
各パリティセットにおける前記Ｎ個のセグメントを、前記各メモリボードのいずれもが各パリティセットからの１つより多くのセグメントを有さない様に、前記各メモリボード間に分散する工程と；
少なくとも１個のパリティセットにおける１個のパリティセグメントに対して、前記少なくとも１個のパリティセットにおける各データセグメントに記憶されたデータ値の排他論理和を取ることで計算され得るデータ値を記憶する工程と；
前記各メモリボードを夫々複数のメモリ領域を含むようにさらに編成する工程と
を備え、
前記メモリボードの各々は複数のメモリ領域と、前記メモリ領域に対応して、各メモリ領域に対するデータの記憶および読み出しを夫々個別に制御する複数のメモリ領域コントローラと、前記メモリ領域コントローラを含む制御ネットワーク回路構成（２００）とを有し、
前記制御ネットワーク回路構成（２００）は、クロスバースイッチング回路構成とシリアルパラレル変換回路構成を有し、
前記シリアルパラレル変換回路構成は、リンク（４０，４２，４４，４６）を介してホストコントローラとディスクコントローラから受信したシリアル情報ストリームをパラレル情報ストリームに変換し、且つ前記パラレル情報ストリームを前記クロスバースイッチング回路構成に送信し、
前記シリアル情報ストリームは、前記メモリボードと、データが記憶されるべきメモリ領域またはデータが読取られるべきメモリ領域と、前記データの送信を開始した前記ホストコントローラまたは前記データの送信を開始した前記ディスクコントローラとを示し、
各メモリ領域は、夫々のメモリボードに含まれるセグメントの部分集合を含み、夫々のメモリ領域に含まれるセグメントの各々には、夫々のメモリ領域に含まれる他のセグメントに割当てられ得る他の基本メモリアドレスとは異なる、基本メモリアドレスが割当てられ得る
メモリシステムの使用方法。
【請求項８】
各メモリボードの各メモリセグメントのデータは、複数個のデータワードにさらにセグメント化され、それらのデータワードは複数のストライプユニットにグループ化され、各ストライプユニットは所定の複数のデータワードを含み、前記ストライプユニットは、各メモリボードの夫々のメモリ領域にわたってストライピングされている、請求項１記載のメモリシステム。
【請求項９】
各ストライプユニットにおけるデータワードの数は６４である、請求項８に記載のメモ
リシステム。
【請求項１０】
各メモリボードの各メモリセグメントのデータは、複数個のデータワードにさらにセグメント化され、それらのデータワードは複数のストライプユニットにグループ化され、各ストライプユニットは所定の複数のデータワードを含み、前記ストライプユニットは、各メモリボードの夫々のメモリ領域にわたってストライピングされている、請求項７記載のメモリシステムの使用方法。
【請求項１１】
各ストライプユニットにおけるデータワードの数は６４である、請求項１０記載のメモリシステムの使用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パリティに基づく障害許容技術を採用するメモリシステム（およびその使用方法）に関する。
【背景技術】
【０００２】
ネットワークコンピュータシステムは一般的に、１つ以上のネットワーク通信媒体を介して相互に通信すべく構成された複数のコンピュータノードであって該ネットワーク通信媒体により相互接続されるべく地理的に分離もしくは分散された複数のコンピュータノードを含む。従来の形式のネットワークコンピュータシステムとしては、データを記憶して読出すためにネットワークに集中記憶場所を提供すべく構成されたネットワーク記憶サブシステムが挙げられる。好適にはネットワークにおいて斯かる記憶サブシステムを用いることで、ネットワークのデータ記憶管理および制御機能は各ネットワークノード間に分散される代わりに上記サブシステムに集中される。
【０００３】
本出願の譲受人（以下、“譲受人”）により製造されると共にＳｙｍｍｅｔｅｒｉｘ（登録商標）の商品名により販売されている従来の一形式のネットワーク記憶サブシステム（以下、“譲受人の従来記憶システム”）は、１つ以上のリダンダント・アレイ・オブ・インディペンデント（またはインエクスペンシブ）・ディスク（ＲＡＩＤ）として構成された複数の大容量ディスク記憶デバイスを備える。これらのディスクデバイスは、上記サブシステムにおける共有キャッシュメモリリソースにユーザデータを記憶して読出す（一般的に“バックエンド”コントローラ／ディレクタと称される）ディスクコントローラにより制御される。上記共有キャッシュメモリリソースに対しては、（一般的に“フロントエンド”コントローラ／ディレクタと称される）複数のホストコントローラからもユーザデータの記憶および読出しが行われる。上記ディスクコントローラは、特に該ディスクコントローラをディスクデバイスにインタフェースする夫々のディスクアダプタに連結される。同様に、上記ホストコントローラは夫々のホストチャネルアダプタに連結されるが、該ホストチャネルアダプタは特にチャネル入出力（Ｉ／Ｏ）ポートを介して上記ホストコントローラを（たとえば、ＳＣＳＩ、エンタープライズシステムコネクション（ＥＳＣＯＮ）および／またはファイバチャネル（ＦＣ）式の通信チャネルなどの）ネットワーク通信チャネルへとインタフェースし、このネットワーク通信チャネルは上記記憶サブシステムを、上記コンピュータネットワークにおいて該サブシステムの外部となる（一般的には“ホスト”コンピュータノードもしくは“ホスト”と称される）コンピュータノードに接続する。
【０００４】
譲受人の従来記憶システムにおいて共有キャッシュメモリリソースは、記憶システムにおける電気的バックプレーンに接続され得る複数のメモリ回路基板から成り得る。上記キャッシュメモリリソースは、これもまた譲受人の従来記憶システムに含まれるディスク記憶デバイスから区別される半導体メモリである。上記キャッシュメモリリソースを構成するメモリボードの各々には特に、ユーザデータを記憶する比較的に高速の同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）集積回路（ＩＣ）デバイスが載置される。上記共有キャッシュメモリリソースは、複数のキャッシュメモリ領域へとセグメント化され得る。而して各領域は、複数のメモリセグメントへとセグメント化され得る。
【０００５】
キャッシュメモリリソースの障害許容性を強化するために、従来の“二重書込式”障害許容方式を実施すべくキャッシュメモリリソースを構成することが提案されている。この方式によるとキャッシュメモリリソースは２つの部分すなわち第１部分および第２部分へと区分され、ユーザデータ空間全体が均等に該２つの部分へと分割され、（たとえばホス
トコントローラもしくはディスクコントローラにより）キャッシュメモリリソースにユーザデータが書き込まれる毎に、そのデータの１つのコピーはキャッシュメモリの第１部分の一部へと書き込まれ、且つ、そのユーザデータの複製（すなわち冗長）コピーはキャッシュメモリの第２部分の対応部分に書き込まれる。故にこの方式によると、キャッシュメモリの第１部分に記憶されたデータはキャッシュメモリの第２部分に記憶されたデータを厳密に鏡映する。キャッシュメモリリソースの部分における故障が無い場合、リソースからユーザデータを読み取る全ての要求は、キャッシュメモリの第１部分からのデータを戻し得る。しかしキャッシュメモリの第１部分の一部が故障し且つこの故障部分に記憶されていたユーザデータの読み取りが望まれたとき、そのユーザデータはキャッシュメモリの第２部分における上記故障部分に対応する部分から代替的に読み取られ得る。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
提案されたこの障害許容技術において、ユーザデータを記憶する上で実際に利用可能なのはキャッシュメモリリソースにおけるユーザデータ空間全体の多くとも半分のみである、と言うのも、キャッシュメモリリソースの第２部分はキャッシュメモリリソースの第１部分に記憶されたユーザデータの冗長コピーを記憶するためにのみ確保されるからである。このために、ユーザデータを記憶すべく実際に利用可能なキャッシュメモリリソースの量は不適当に減少される。故に、ユーザデータを記憶すべく先行技術の二重書込技術において可能であるよりも多くのキャッシュメモリリソースを実際に利用可能とし得るキャッシュメモリ障害許容技術を提供することが所望される。
【課題を解決するための手段】
【０００７】
上記問題点を解決するために、請求項１に記載の発明は、複数のメモリボードを備えたメモリシステムであって、前記メモリボードの各々は、夫々のデータ値を記憶し得る複数のメモリセグメントを有し、該セグメントは、そのパリティセットの各々がＮ個のセグメントを含むように各パリティセットへとグループ化され、前記Ｎは整数であり、各パリティセットにおけるそれぞれのＮ個のセグメントは、１個のパリティセグメントおよび（Ｎ−１）個のデータセグメントから成り、各パリティセットにおける前記Ｎ個のセグメントは、前記各メモリボードのいずれもが各パリティセットからの１つ以上のセグメントを有さない様に、前記各メモリボード間に分散され、且つ、少なくとも一個のパリティセットにおける１個のパリティセグメントに記憶されたデータ値は、該少なくとも一個のパリティセットにおける各データセグメントに記憶された各データ値の排他論理和により計算され得、各メモリボードは複数のメモリ領域と、それらのメモリ領域に対応して、各メモリ領域に対するデータの記憶および読み出しをそれぞれ個別に制御する複数のメモリ領域コントローラとを含み、各メモリ領域は、夫々のメモリボードに含まれるセグメントの部分集合を含み、且つ、夫々のメモリ領域に含まれるセグメントの各々には、夫々のメモリ領域に含まれる他のセグメントに割当てられ得る他の基本メモリアドレスとは異なる、基本メモリアドレスが割当てられ得ることを要旨とする。
【０００８】
請求項２に記載の発明は、請求項１に記載のメモリシステムにおいて、前記個数Ｎが４に等しいことを要旨とする。
請求項３に記載の発明は、請求項１に記載のメモリシステムにおいて、個数Ｎは４に等しく、前記少なくとも一個のパリティセットにおける１つのデータセグメントに初めに記憶されるデータ値は可変値Ａに等しく、且つ、前記少なくとも一個のパリティセットにおける１個のパリティセグメントに初めに記憶されるデータ値は可変値Ｐに等しく、当該メモリシステムは前記少なくとも一個のパリティセットにおける各セグメントに記憶された夫々のデータ値を変更すべく使用され得る回路構成を含み、且つ、前記回路構成が１つの前記データ値を前記可変値Ａから別の可変値Ａ’へと変更すべく使用されるとき、該回路構成は前記少なくとも一個のパリティセットにおける前記１個のパリティセグメントに記
憶されたデータ値もまた可変値Ｐから別の可変値Ｐ’へと変更し、この値Ｐ’はＰＸＯＲＡＸＯＲＡ’に等しく、前記式中、“ＸＯＲ”は排他論理和関数を表すことを要旨とする。
【０００９】
請求項４に記載の発明は、請求項４に記載のメモリシステムにおいて、前記回路構成は、前記少なくとも一個のパリティセットにおける１つの前記データ値および前記１個のパリティセグメントに記憶されたデータ値を夫々の不可分な操作において変更するように構成されることを要旨とする。
【００１０】
請求項５に記載の発明は、請求項１に記載のメモリシステムにおいて、前記各メモリボードは半導体メモリを備え、且つ、各複数のメモリセグメントは前記半導体メモリに含まれることを要旨とする。
【００１１】
請求項６に記載の発明は、データ値を記憶し得る複数のメモリセグメントを各々が有する複数のメモリボードを含むメモリシステムの使用方法であって、当該パリティセットの各々は整数であるＮ個のセグメントを含むように前記各セグメントを各パリティセットへとグループ化する工程と、各パリティセットにおけるＮ個のセグメントは１個のパリティセグメントと（Ｎ−１）個のデータセグメントとから成ることと、各パリティセットにおける前記Ｎ個のセグメントを、前記各メモリボードのいずれもが各パリティセットからの１つより多くのセグメントを有さない様に、前記各メモリボード間に分散する工程と、少なくとも一個のパリティセットにおける１個のパリティセグメントに対して、該少なくとも一個のパリティセットにおける各データセグメントに記憶されたデータ値の排他論理和を取ることで計算され得るデータ値を記憶する工程と、各メモリボードを夫々複数のメモリ領域を含むようにさらに編成する工程とを備え、各メモリボードは、各メモリ領域に対応して、各メモリ領域に対するデータの記憶および読み出しをそれぞれ個別に制御する複数のメモリ領域コントローラを有し、各メモリ領域は、夫々のメモリボードに含まれるセグメントの部分集合を含み、夫々のメモリ領域に含まれるセグメントの各々には、夫々のメモリ領域に含まれる他のセグメントに割当てられ得る他の基本メモリアドレスとは異なる、基本メモリアドレスが割当てられ得ることを要旨とする。
【００１２】
請求項７に記載の発明は、請求項１に記載のメモリシステムにおいて、各メモリボードの各メモリセグメントのデータは、複数個のデータワードにさらにセグメント化され、それらのデータワードは複数のストライプユニットにグループ化され、各ストライプユニットは所定の複数のデータワードを含み、前記ストライプユニットは、各メモリボードの夫々のメモリ領域にわたってストライピングされていることを要旨とする。
【００１３】
請求項８に記載の発明は、請求項７に記載のメモリシステムにおいて、各ストライプユニットにおけるデータワードの数は６４である、ことを要旨とする。
請求項９に記載の発明は、請求項６に記載のメモリシステムにおいて、各メモリボードの各メモリセグメントのデータは、複数個のデータワードにさらにセグメント化され、それらのデータワードは複数のストライプユニットにグループ化され、各ストライプユニットは所定の複数のデータワードを含み、前記ストライプユニットは、各メモリボードの夫々のメモリ領域にわたってストライピングされていることを要旨とする。
【００１４】
請求項１０に記載の発明は、請求項９に記載のメモリシステムにおいて、各ストライプユニットにおけるデータワードの数は６４であることを要旨とする。
本発明は、先行技術の上述のおよび他の不都合および不利益を克服し得るメモリシステムおよびその使用方法を提供する。本発明の一実施形態においては、ネットワークデータ記憶システムにおいて好適に使用され得るキャッシュメモリシステムが提供される。該実施形態のキャッシュメモリシステムは、複数のメモリボードを含み得る。これらのボード
の各々は、電気的プリント回路基板またはカードであるか、またはそれらを含む。各メモリボードは、協働してユーザデータ空間を構成するとともに、夫々のデータ値を記憶し得る複数の半導体メモリセグメントを有し得る。各セグメントは複数のパリティセットもしくはグループへとグループ化され得る。各パリティセットまたはグループは、Ｎを任意の整数として、Ｎ個のメモリセグメントを含み得る。メモリシステムの構成に応じて、個数Ｎは４に等しくてもよい。
【００１５】
各パリティセットにおけるＮ個のメモリセグメントは、１個のパリティセグメントおよび（Ｎ−１）個のユーザデータセグメントから成り得る。各パリティセットにおけるＮ個のセグメントは、上記各メモリボードのいずれもが各パリティセットもしくはグループのうちから、１つより多くのメモリセグメントを有さない様に上記各メモリボード間に分散され得る。すなわち各メモリボードは、任意の所与のパリティセットもしくはグループからの、多くても単一個のセグメントを有し得る。少なくとも一個のパリティセットもしくはグループ（以下では“少なくとも一個のパリティセット”）は、該少なくとも一個のパリティセットの各データセグメントに記憶された各データ値のＸＯＲ（すなわち、ビット毎の排他論理和）を実施することで計算され得るデータ値Ｐを記憶する１個のパリティセグメントを含み得る。たとえば上記個数Ｎが４に等しく、且つ、少なくとも一個のパリティセットにおける各データセグメントに記憶されたデータ値がＡ、ＢおよびＣに夫々等しいとすると、データ値ＰはＡ  ＸＯＲ  Ｂ  ＸＯＲ  Ｃに等しくなり得る。これに代わって、各パリティセットもしくはグループは、そのパリティセットもしくはグループの各データセグメントに記憶されたデータ値のＸＯＲにより計算され得るパリティセグメントを含んでもよい。
【００１６】
上記キャッシュメモリシステムは、少なくとも一個のパリティセットまたはグループにおける各セグメントに記憶されたデータ値を変更すべく使用され得る制御回路構成を含み得る。上記少なくとも一個のパリティセットまたはグループにおける１つのデータセグメントに初めに記憶され得るデータ値はデータ値Ａに等しく、かつそのパリティセットもしくはグループにおける１個のパリティセグメントに初めに記憶され得るデータ値はデータ値Ｐに等しくされ得る。上記制御回路構成が上記１つの値を値Ａから別のデータ値Ａ’へと変更すべく使用されるとき、該回路構成はまた上記少なくとも一個のパリティセットにおけるパリティセグメントに記憶されたデータ値を値Ｐから別の値Ｐ’へと変更し得る。この値Ｐ’は、Ｐ  ＸＯＲ  Ａ  ＸＯＲ  Ａ’に等しくなり得る。上記制御回路構成は、上記少なくとも一個のパリティセットにおける１個のパリティセグメントおよび１つのデータセグメントに夫々記憶されたデータ値に対し、これらの変更を不可分な操作（ａｔｏｍｉｃ  ｏｐｅｒａｔｉｏｎ）を用いて行うように構成され得る。
【００１７】
各メモリボードは、複数のメモリ領域を含み得る。各メモリ領域は、そのメモリ領域を構成するメモリボードまたはカードに含まれるメモリセグメントの部分集合を含み得る。夫々のメモリ領域に含まれる各メモリセグメントには、そのメモリ領域に含まれる他のセグメントに割当てられ得る他の基本メモリアドレスとは異なる基本メモリアドレスが割当てられ得る。
【００１８】
本発明の該実施形態において、パリティセットにおける１つのデータセグメントが故障した場合には、この故障データセグメントに記憶されていたデータ値は、この故障データセグメントが属するパリティセットにおける正常なデータセグメントおよびパリティセグメントに記憶されている各データ値を用いて再構築され得る。たとえば、所与のパリティセットが合計で３個のデータセグメントおよび１個のパリティセグメントを含み、故障データセグメントがデータ値Ａを記憶しており、且つ、２個の正常なデータセグメントおよび１個のパリティセグメントが夫々値Ｂ、ＣおよびＰを記憶している場合には、故障データセグメントに記憶されていた上記データ値Ａは、本発明の該実施形態に従ってＰ＝Ａ  
ＸＯＲ  Ｂ  ＸＯＲ  Ｃと仮定するならば、以下の関係に基づき再構築され得る。
【００１９】
Ａ＝Ｐ  ＸＯＲ  Ｃ  ＸＯＲ  Ｂ
上述の従来の二重書込技術を利用するメモリシステムと対照的に、本発明の改良された障害許容メモリシステムにおいては好適に、ユーザデータを記憶すべくユーザデータ空間全体の５０％以上もが利用可能とされ得る。たとえば本発明の上記実施形態に従い実施されて改良された障害許容キャッシュメモリシステムにおいてユーザデータを記憶すべく実際に利用可能とされ得る全体的キャッシュメモリの最大百分率は、Ｎの値を設定することで選択され得ると共に、Ｎに対して選択された値に依存して、５０％よりも相当に大きくなり得る。たとえばＮが４に等しければ、斯かる最大百分率は７５％に等しくなり得る。
【００２０】
本発明のこれらのおよび他の特徴および利点ならびに本発明の種々の実施形態は、同一番号が同様の部材を示す添付図面に基づく以下の詳細な説明を参照すれば明らかとなろう。
【発明の効果】
【００２１】
本発明によれば、障害許容技術を採用するメモリシステムにおいて、利用可能なメモリリソースを増大させることが可能となる。
【発明を実施するための最良の形態】
【００２２】
以下における詳細な説明は本発明の好適実施形態および使用方法に関して行われるが、本発明がこれらの好適実施形態および使用方法への限定を意図しないことを理解すべきである。反対に当業者であれば、これらの好適実施形態および使用方法の多くの代替例、改変例および均等物は明らかであろう。たとえば本発明はネットワークデータ記憶サブシステムにおけるキャッシュメモリシステムに関して好適に用いられるものとして説明されるが、本発明は他の形式のメモリシステムに関しても使用され得る。故に本発明は、当業者に対して明らかな斯かる代替例、改変例および均等物の全てを広範囲に包含すると解釈すべきであり、添付の請求の範囲に示された様にのみ定義されると解釈すべきである。
【００２３】
次に図１乃至図５を参照し、本発明の好適実施形態を記述する。図１は、本発明の一実施形態が好適に実施され得るデータ記憶システム１１２を含むデータ記憶ネットワーク１１０を示す高レベルブロック図である。該システム１１２は通信リンク１１４，１１６，１１８，１２０，・・・１２２を介して夫々のホストコンピュータノード１２４，１２６，１２８，１３０，・・・１３２と接続される。通信リンク１１４，１１６，１１８，１２０，・・・１２２の各々は、夫々の従来のネットワーク通信プロトコル（たとえばＦＣ、ＥＳＣＯＮ、ＳＣＳＩ、ファイバコネクティビティなど）を伴う通信を行うべく構成され得る。ホストノード１２４，１２６，１２８，１３０，・・・１３２はまた、夫々の付加的な従来のネットワーク通信リンク１３４，１３６，１３８，１４０，・・・１４２を介して外部ネットワーク１４４にも接続される。ネットワーク１４４は、トランスミッション制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）・ベースおよびイーサネット・ベースの少なくともいずれかの一個以上のローカルエリアネットワークおよび／またはワイドエリアネットワークから成り得る。ネットワーク１４４はまた、（図１において番号１４５で集合的に示された）ネットワーク通信リンクを介して（図１で番号１４６で集合的にもしくは単一的に示された）一個以上のクライアントコンピュータノードにも接続される。これらのリンク１３４，１３６，１３８，１４０，・・・１４２および１４５により利用される単一もしくは複数のネットワーク通信プロトコルは、ノード１２４，１２６，１２８，１３０，・・・１３２がネットワーク１４４を介してノード１４６とデータおよびコマンドを確実に交換し得るべく選択される。
【００２４】
ホストノード１２４，１２６，１２８，１３０，・・・１３２は、サーバコンピュータ
、ワークステーションもしくはメインフレームなどの幾つかの公知形式のコンピュータノードのうちの任意の１つであり得る。概略的にホストノード１２４，１２６，１２８，１３０，・・・１３２およびクライアントノード１４６の各々は、ソフトウェアプログラムおよび関連するデータ構造を記憶するとともに、これらのノード１２４，１２６，１２８，１３０，・・・１３２および１４６により実施されると本明細書中に記載された機能および動作を実施するための各コンピュータ可読メモリ（図示せず）を備える。これに加えてノード１２４，１２６，１２８，１３０，・・・１３２および１４６の各々は更に、これらのソフトウェアプログラムを実行するとともに、これらのデータ構造を操作し、且つ、通信リンク１３４，１３６，１３８，１４０，・・・１４２、ネットワーク１４４およびリンク１４５を介してホストノード１２４，１２６，１２８，１３０，・・・１３２およびクライアントノード１４６間でのデータおよびコマンドの交換を許容かつ促進するための夫々の一個以上のプロセッサ（図示せず）およびネットワーク通信デバイスを含む。ホストノード１２４，１２６，１２８，１３０，・・・１３２に含まれる上記プロセッサおよびネットワーク通信デバイスによりソフトウェアプログラムを実行することで、以下に記載される様式で通信リンク１１４，１１６，１１８，１２０，・・・１２２を介してノード１２４，１２６，１２８，１３０，・・・１３２およびシステム１１２間でのデータおよびコマンドの交換も許容かつ促進される。
【００２５】
図２は、システム１１２の機能要素の概略的な高レベルブロック図である。システム１１２は、複数のホストアダプタ２６・・・２８、複数のホストコントローラ２２・・・２４、メッセージネットワークもしくはシステム１４、共有キャッシュメモリリソース１６、複数のディスクコントローラ１８・・・２０、複数のディスクアダプタ３０・・・３２、および、一群のディスク記憶デバイス３４・・・３６を含む。システム１１２、各ホストコントローラおよび各ディスクコントローラは共有キャッシュメモリリソース１６に含まれた個々のメモリボード（図３および図４参照）に対し、複数のネットワークリンクを備えたポイント・ツー・ポイント・データ転送ネットワークシステムを介して接続される。たとえばホストコントローラ２２および２４は、上記ポイント・ツー・ポイント・データ転送ネットワークシステムに含まれる夫々の複数のポイント・ツー・ポイント・データ転送ネットワークリンク４２，４０を介してキャッシュメモリリソース１６に接続される。同様にディスクコントローラ１８および２０は、上記ポイント・ツー・ポイント・データ転送ネットワークシステムに含まれる夫々の複数のポイント・ツー・ポイント・データ転送ネットワークリンク４４および４６を介してキャッシュメモリリソース１６に接続される。
【００２６】
システム１１２の該実施形態において各図中に明確には示されないが、夫々のリンク１１４，１１６，１１８，１２０，・・・１２２において用いられる特定の通信プロトコルに依って、各ホストアダプタ２６・・・２８は夫々の複数のホストノードに接続され得る。たとえばシステム１１２の該実施形態において、もしリンク１１４、１１６、１１８、１２０がＦＣ通信リンクであれば、アダプタ２６はリンク１１４、１１６、１１８、１２０を介して夫々のノード１２４、１２６、１２８、１３０に接続され得る。各ホストアダプタ２６・・・２８が接続され得るホストノードの個数は、本発明の該実施形態から逸脱することなくホストアダプタ２６・・・２８およびホストコントローラ２２・・・２４の特定構成に応じて変更され得ることが理解されるべきである。ネットワーク１１０においてホストアダプタ２６は、ホストコントローラ２４がリンク１１４、１１６、１１８、１２０を介してノード１２４、１２６、１２８、１３０と夫々データおよびコマンドを交換し得るネットワーク通信インタフェースを提供する。
【００２７】
ホストコントローラ２２・・・２４は、夫々の単一の回路基板もしくはパネルを備え得る。同様にディスクコントローラ１８・・・２０もまた、夫々の単一の回路基板もしくはパネルを備え得る。各ディスクアダプタ３０・・・３２は夫々の単一の回路基板もしくは
パネルを備え得る。同様に、各ホストアダプタ２６・・・２８は夫々の単一の回路基板もしくはパネルを備え得る。ホストコントローラ２２・・・２４は、夫々の対合する電気機械的接続システムを介して夫々のホストアダプタ２８・・・２６に電気的かつ機械的に接続され得る。
【００２８】
ディスクアダプタ３２は一連の大容量記憶デバイス３４に電気的に接続されると共に、ディスクコントローラ２０をこれらのデバイス３４にインタフェースすることで、ディスクコントローラ２０および記憶デバイス３４の夫々におけるプロセッサ（図示せず）間のデータおよびコマンドの交換を可能にする。ディスクアダプタ３０は一連の大容量記憶デバイス３６に電気的に接続されると共に、ディスクコントローラ１８をこれらのデバイス３６にインタフェースすることで、ディスクコントローラ１８および記憶デバイス３６の夫々におけるプロセッサ（図示せず）間のデータおよびコマンドの交換を可能にする。デバイス３４・・・３６は、磁気的且つ／又は光学的な大容量ディスク記憶デバイスの冗長アレイとして構成され得る。
【００２９】
尚、図２に示されたシステム１１２の各機能要素の夫々の個数は単に例示目的であり、システム１１２の載置が企図された特定用途に応じて、本発明から逸脱することなく変更され得ることを理解すべきである。但し、システム１１２の特定構成要素が故障した場合に、システム１１２がフェイルオーバー障害許容を行い得るのが望ましい。故にシステム１１２の実際の実施においては、任意の所定の機能要素の故障が検出されると共に故障した機能要素の作用は故障構成要素と同一形式の冗長的な機能要素により肩代わりされるのを確実にするための、該システム１１２は冗長的な機能要素および従来の機構を含むのが望ましい。
【００３０】
次に、システム１１２に対してデータを読出しかつ記憶する一般的な方法を記載する。広範囲に述べると、ネットワーク１１０の作動時にクライアントノード１４６はデータを読出す要求を所定ホストノード（たとえばノード１２４）に対して、該クライアントノード１４６に関連するリンク１４５の１つと、ネットワーク１４４と、ホストコンピュータノード１２４に関連するリンク１３４とを介して送信し得る。要求されたデータがホストノード１２４にローカル的に記憶されていない代わりにデータ記憶システム１１２に記憶されている場合には、ホストノード１２４は該ノード１２４に関連するＦＣリンク１１４を介してシステム１１２からそのデータを送信することを要求し得る。
【００３１】
リンク１１４を介して送信された要求は初めに、そのリンク１１４に接続されたホストアダプタ２６により受信される。リンク１１４に関連するホストアダプタ２６は次に、その要求を該ホストアダプタが接続されたホストコントローラ２４へと送信し得る。自身に送信された要求に応じてホストコントローラ２４は次に、キャッシュ１６に記憶されたデータ記憶管理テーブル（図示せず）から、要求されつつあるデータが現在においてキャッシュ１６内に在ることを確認し得る。要求データが現在においてキャッシュ１６内に無い場合には、ホストコントローラ２４はメッセージをメッセージネットワーク１４を介して、要求データが記憶されている記憶デバイス３６に関連するディスクコントローラ（たとえばコントローラ１８）へと送信して、ディスクコントローラ１８が要求データをキャッシュ１６内に読出すことを要求し得る。
【００３２】
ホストコントローラ２４から送信されたメッセージに応じて、ディスクコントローラ１８は、一個以上の記憶デバイス３６に要求データを読出させるために、自身が接続されたディスクアダプタ３０を介して適切なコマンドを送信し得る。斯かるコマンドに応じて記憶デバイス３６はディスクアダプタ３０を介して要求データをディスクコントローラ１８に送信し得るものであり、且つ、ディスクコントローラ１８はキャッシュ１６に記憶すべく上記要求データを一個以上のリンク４４を介して転送し得る。ディスクコントローラ１
８は次に、要求データがキャッシュ１６に記憶されたことをホストコントローラ２４に通知するメッセージをネットワーク１４を介して送信し得る。
【００３３】
ネットワーク１４を介してディスクコントローラ１８から送信されたメッセージに応じてホストコントローラ２４は、一個以上のリンク４０を介してキャッシュ１６から要求データを読出し得ると共に、該データをアダプタ２６およびリンク１１４を介してホストノード１２４へと転送し得る。次にホストノード１２４は上記要求データを要求したクライアントノード１４６に対して該データを、リンク１３４と、ネットワーク１４４と、該クライアントノード１４６に関連するリンク１４５とを介して送信し得る。
【００３４】
加えてクライアントノード１４６は所定ホストノード（たとえばノード１２４）に対してデータを記憶させる要求を、該クライアントノード１４６に関連する１つのリンク１４５と、ネットワーク１４４と、ホストノード１２４に関連するリンク１３４とを介して送信し得る。ホストノード１２４はそのデータをローカル的に記憶してもよいし、これに代わって、該ノード１２４に関連するリンク１１４を介してシステム１１２にそのデータを記憶することを要求してもよい。
【００３５】
リンク１１４を介して送信されたデータ記憶要求は先ず、該リンク１１４に接続されたホストアダプタ２６により受信される。リンク１１４に関連するホストアダプタ２６は次に、自身が接続されたホストコントローラ２４に対して上記データ記憶要求を送信し得る。自身に送信されたデータ記憶要求に応じてホストコントローラ２４は次に、キャッシュ１６に記憶するとの要求に関連するデータを、一個以上のリンク４０を介して転送する。その後、各ディスクコントローラのうちの１つ（たとえばコントローラ１８）はアダプタ３０を介してデバイス３６に対し適切なコマンドを発行することにより、キャッシュ１６に記憶されたデータを一個以上のデバイス３６内に記憶させ得る。
【００３６】
システム１１２の特徴および作用に関する詳細は、たとえば２０００年１２月２１日に出願された、“多段ルーティングによるクロスバースイッチを有するデータ記憶システム（Ｄａｔａ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ  Ｈａｖｉｎｇ  Ｃｒｏｓｓｂａｒ  Ｓｗｉｔｃｈ  Ｗｉｔｈ  Ｍｕｌｔｉ−Ｓｔａｇｅｄ  Ｒｏｕｔｉｎｇ）”と称される、本発明と同様に本出願人が所有する同時係属の米国特許出願第０９／７４５，８１４号に示されている。該同時係属出願はその全容を本出願中に援用される。
【００３７】
次に図３乃至図５を特に参照し、システム１１２のキャッシュメモリシステム１６において好適に使用され得る本発明の好適実施形態を説明する。メモリシステム１６は、システム１１２における電気的バックプレーン（図示せず）に接続され得る複数の電気回路基板もしくはカード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎを備える。このバックプレーンに接続されたときにメモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎは、該バックプレーンにおける電気回路トレース線を介してシステム１１２の他の構成要素に電気的に接続され得、その結果、本明細書中に記載される様式にて、該メモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎが相互に、且つシステム１１２におけるホストコントローラおよびディスクコントローラと通信および相互作用し得る。図３に示されたメモリボードの個数は単に例示的であり、システム１１２に含まれ得るメモリボードの実際の個数は該システム１１２の構成に依存して変更され得ることを銘記することは重要である。メモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎの各々の構造および作用は本質的に同一であることから、不要な説明の重複を回避すべく、本明細書においては１つのメモリボード１００Ａの構造および作用を説明する。
【００３８】
図４は、メモリボード１００Ａの適切な機能要素の概略的な高レベルの論理図である。
ボード１００Ａは、制御・ネットワーク回路構成２００および複数のメモリ領域２０２，２０４，２０６，２０８を備える。メモリ領域２０２，２０４，２０６，２０８の各々は、夫々のＳＤＲＡＭ  ＩＣデバイスの複数のバンクを備える。たとえば領域２０２は（番号２１０により集合的に参照された）ＳＤＲＡＭ  ＩＣデバイスの複数のバンクを備える。領域２０４はＳＤＲＡＭ  ＩＣデバイスの複数のバンク２１２を備える。領域２０６はＳＤＲＡＭ  ＩＣデバイスの複数のバンク２１４を備える。さらに、領域２０８はＳＤＲＡＭ  ＩＣデバイスの複数のバンク２１６を備える。バンク２１０，２１２，２１４，２１６の各々に含まれる夫々の複数のＳＤＲＡＭ  ＩＣデバイスは、メモリシステム１６における夫々の所定サイズ（たとえば各々が２５６メガバイト）の複数のメモリセグメントを備えるべく構成される。本発明のこの実施形態においてメモリセグメントの各々は、同一のメモリ領域内における他のメモリセグメントから独立して異なる基本メモリアドレスを有し得る。より詳細には、メモリバンク２１０におけるＳＤＲＡＭ  ＩＣデバイスはメモリセグメント２２０Ａ，２２０Ｂ，・・・２２０Ｎを備えるように構成される。メモリバンク２１２におけるＳＤＲＡＭ  ＩＣデバイスはメモリセグメント２２２Ａ，２２２Ｂ，・・・２２２Ｎを備えるように構成される。メモリバンク２１４におけるＳＤＲＡＭ  ＩＣデバイスはメモリセグメント２２４Ａ，２２４Ｂ，・・・２２４Ｎを備えるように構成される。また、メモリバンク２１６におけるＳＤＲＡＭ  ＩＣデバイスはメモリセグメント２２６Ａ，２２６Ｂ，・・・２２６Ｎを備えるように構成される。尚、ボード１００Ａに含まれる夫々のメモリ領域の個数、ならびに、斯かる領域に含まれるメモリセグメントの個数およびサイズは本発明の該実施形態から逸脱することなく変更され得ることに留意すべきである。たとえば本発明の該実施形態において上記メモリ領域は夫々、２個以上かつ６４個以下の間で変更され得る整数個のメモリセグメントを備え得る。
【００３９】
また、夫々のメモリセグメントにおいて、その中に記憶されたデータは更に、複数個の６４ビットデータワードへとセグメント化され得る。個々のデータワードは各々が６４ワードのストライプユニット（ｓｔｒｉｐｅ  ｕｎｉｔ）へとグループ化されると共に、ストライプユニットは、夫々のメモリボードにおける夫々のメモリ領域に亙りストライピングされ得る。
【００４０】
尚、メモリシステム１６に含まれるＳＤＲＡＭ  ＩＣデバイスの各々は半導体メモリデバイスであり、且つ、これらのＳＤＲＡＭ  ＩＣデバイスは、システム１１２における上記ホストコントローラおよびディスクコントローラから該メモリシステム１６に送信されたユーザデータ、ならびに、本発明の該実施形態に従うパリティ関連データを記憶すべく該メモリシステム１６により使用され得ることが理解されるべきである。故にキャッシュメモリシステム１６はシステム１１２に含まれるディスク記憶デバイス３４・・・３６から区別される半導体メモリシステムであり、且つ、メモリシステム１６に含まれる上記メモリ領域およびメモリセグメントは夫々、半導体メモリ領域および半導体メモリセグメントである。
【００４１】
一般に制御・ネットワーク回路構成２００は特に、リンク４０，４２，４４，４６を介してメモリ領域２０２，２０４，２０６，２０８とホストコントローラおよびディスクコントローラとの間でデータおよびコマンドを交換するのを促進し得る論理ネットワーク回路構成および制御論理回路構成（図示せず）を備える。より詳細には回路構成２００における上記制御論理回路構成は、特にメモリ領域２０２，２０４，２０６，２０８に対するデータの記憶および読出しを制御し得るメモリ領域コントローラを含み得る。また回路構成２００における上記論理ネットワーク回路構成は、クロスバー・スイッチング／関連ポイント・ツー・ポイント・ネットワーク回路構成（以下、“クロスバー・スイッチング回路構成”）およびシリアル／パラレル変換回路構成を含み得る。上記シリアル／パラレル変換回路構成は、リンク４０，４２，４４，４６を介して上記ホストコントローラおよびディスクコントローラから受信したシリアル情報ストリーム（たとえば、データ、アドレ
ス情報、コマンド、巡回冗長検査情報、信号通知、セマフォなど）を対応するパラレル情報ストリームへと変換し、且つ、そのパラレル情報ストリームを上記クロスバー・スイッチング回路構成へと送信すべく構成され得る。上記シリアル情報ストリームはまた、特に、キャッシュ１６におけるメモリボード、そのメモリボードにおけるデータが記憶され／読み取られるべきメモリ領域、およびそのデータに関連するデータ転送を開始したホストコントローラもしくはディスクコントローラなどを表す“タグ”情報を含み得る。上記シリアル／パラレル変換回路構成はまた、上記クロスバー・スイッチング回路構成から受信したパラレル情報ストリームを対応シリアル情報ストリームへと変換し、適切なホストおよびディスクコントローラに関連するリンク４０，４２，４４，４６を介して斯かるコントローラへと送信する様にも構成され得る。
【００４２】
上記クロスバー・スイッチング回路構成は、クロスバースイッチネットワークおよび関連するポイント・ツー・ポイント・ネットワークを含み得る。このポイント・ツー・ポイント・ネットワークは、クロスバースイッチネットワークの夫々のポートをメモリ領域コントローラの夫々のポートに接続し得る複数のポイント間相互接続もしくはリンクを含み得る。上記クロスバースイッチネットワークは、上記シリアル／パラレル変換回路構成からパラレル情報を受信し、且つ、受信した情報を該情報の内容に基づき、ボード１００Ａにおけるポイント・ツー・ポイント・ネットワークにおける適切なポイント間相互接続を介して適切なメモリ領域コントローラ（たとえば、受信したパラレル情報において特定されたボード１００Ａにおけるメモリ領域に関連するメモリ領域コントローラ）のポートへと送信するように構成され得る。
【００４３】
各メモリ領域コントローラは、ボード１００Ａにおけるポイント・ツー・ポイント・ネットワークを介して受信した上記情報に応じて、該メモリ領域コントローラが関連するメモリ領域２０２，２０４，２０６，２０８の夫々（たとえば領域２０２）へとコマンドを発行し得る。これらのコマンドにより特に領域２０２は、メモリバンク２１０にデータを記憶するか、またはメモリバンク２１０から記憶データを読出し得る。その様に読出されたデータは上記メモリ領域コントローラにより、ボード１００Ａにおけるポイント・ツー・ポイント・ネットワークを介して上記クロスバースイッチネットワークへと送信され、其処から上記シリアル／パラレル変換回路構成を通り、リンク４０，４２，４４，４６の１つを介して適切なホストコントローラもしくはディスクコントローラへと送信され得る。
【００４４】
尚、各図には示されていないが、ボード１００Ａを具体化する場合、回路構成２００の各部分は領域２０２，２０４，２０６，２０８内で（たとえば上記領域における実際のＳＤＲＡＭ  ＩＣデバイスに対し、チップセレクト、クロック同期、メモリアドレッシング、データ転送、メモリ制御／管理、クロックイネーブル信号などの比較的に低レベルのコマンド／信号を提供する回路構成へと）分散され得るが、本発明の説明の目的のために該回路構成は論理的に回路構成２００に含まれるものと見做され得ることに留意されたい。ボード１００Ａを具体化する上で領域２０２，２０４，２０６，２０８内に分散され得る回路構成２００の形式および機能の更なる詳細および説明は、たとえば２００１年２月２８日に出願された、“エラー条件処理（Ｅｒｒｏｒ  Ｃｏｎｄｉｔｉｏｎ  Ｈａｎｄｌｉｎｇ）”と称される、本発明と同様に本出願人が所有する同時係属の米国特許出願第０９／７９６，２５９号（代理人整理番号：ＥＭＣ−０１−０３４）にて示されている。この同時係属出願はその全容を本出願中に援用される。
【００４５】
図５は、本発明の該実施形態の記載を促進すべく用いられる概略的な高レベルブロック図である。図５において、メモリボード１００Ａにおける領域２０２，２０４，２０６，２０８の全てに含まれるメモリセグメント４００Ａ，４００Ｂ，４００Ｃ，・・・４００Ｎの全ては、集合的に符号３００で示される。換言するとメモリセグメント４００Ａ，４
００Ｂ，４００Ｃ，・・・４００Ｎはメモリボード１００Ａ内に在ると記載した全てのメモリセグメント（すなわち、メモリセグメント２２０Ａ，２２０Ｂ，・・・２２０Ｎ；２２２Ａ，２２２Ｂ，・・・２２２Ｎ；２２４Ａ，２２４Ｂ，・・・２２４Ｎ；および、２２６Ａ，２２６Ｂ，・・・２２６Ｎ）を備える。これらのメモリセグメント４００Ａ，４００Ｂ，４００Ｃ，・・・４００Ｎは図５において集合的に符号３００で示される。図５においては同様に、メモリボード１００Ｂにおける全てのメモリ領域に含まれる全てのメモリセグメント５００Ａ，５００Ｂ，５００Ｃ，・・・５００Ｎは集合的に符号３０２で示される。同様に、メモリボード１００Ｃにおける全てのメモリ領域に含まれるメモリセグメント６００Ａ，６００Ｂ，６００Ｃ，・・・６００Ｎの全ては集合的に符号３０４で示され、メモリボード１００Ｄにおける全てのメモリ領域に含まれるメモリセグメント７００Ａ，７００Ｂ，７００Ｃ，・・・７００Ｎの全ては集合的に符号３０６で示される。
【００４６】
本発明の該実施形態に依れば、上記ホストコントローラ、ディスクコントローラ、ならびに、夫々のメモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎにおける制御・ネットワーク回路構成が、障害許容／データ保護技術を実施するように構成され得る。前記技術において、メモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎの各々におけるメモリセグメントの各々は、特に、パリティセットもしくは群の各々は夫々同一整数Ｎ個のメモリセグメントを含み得るが、夫々のパリティセットもしくは群における２個のメモリセグメントが同一のメモリボードには含まれない様に、夫々のパリティセットもしくは群における他のメモリセグメントと関連付けられ得る。故に本発明の該実施形態においては、もし各パリティセットにおける夫々のメモリセグメントの個数Ｎが４に等しく、且つ各パリティセットがセグメント３００，３０２，３０４，３０６を用いて形成されるならば、各パリティセットは、メモリボード１００Ａに含まれるメモリセグメント３００から選択された夫々の第１メモリセグメント、メモリボード１００Ｂに含まれるメモリセグメント３０２から選択された夫々の第２メモリセグメント、メモリボード１００Ｃに含まれるメモリセグメント３０４から選択された夫々の第３メモリセグメント、および、メモリボード１００Ｄに含まれるメモリセグメント３０６から選択された夫々の第４メモリセグメントを含み得る。故にこの好適実施形態に依れば、第１パリティセットはメモリセグメント４００Ａ，５００Ａ，６００Ａ，７００Ａを備え、第２パリティセットはメモリセグメント４００Ｂ，５００Ｂ，６００Ｂ，７００Ｂを備え、第３パリティセットはメモリセグメント４００Ｃ，５００Ｃ，６００Ｃ，７００Ｃを備え、さらに、セグメント３００，３０２，３０４，３０６に含まれる他のメモリセグメントはこのパターンに従う任意のパリティセットへと割当てられ得る。
【００４７】
各パリティセットは、夫々の単一個のパリティセグメントと、（Ｎ−１）個のデータセグメントとから成り得る。夫々のパリティセットにおけるパリティセグメントおよびデータセグメントは、夫々のパリティセットのパリティセグメントが、それらのパリティセットに含まれるメモリセグメントを有する各メモリボード間で実質的に等しく分散されるように、選択され得る。故に本発明の該実施形態において、セグメント４００Ａ，５００Ａ，６００Ａ，７００Ａを含むパリティセットにおいては、セグメント４００Ａがパリティセグメントであり且つセグメント５００Ａ，６００Ａ，７００Ａがデータセグメントとされ、セグメント４００Ｂ，５００Ｂ，６００Ｂ，７００Ｂを含むパリティセットにおいてはセグメント５００Ｂがパリティセグメントであり且つセグメント４００Ｂ，６００Ｂ，７００Ｂがデータセグメントとされ、セグメント４００Ｃ，５００Ｃ，６００Ｃ，７００Ｃを含むパリティセットにおいてはセグメント６００Ｃがパリティセグメントであり、且つセグメント４００Ｃ，５００Ｃ，７００Ｃがデータセグメントとされる。さらに、セグメント３００，３０２，３０４，３０６に含まれる他のメモリセグメントはこのパターンに従ってパリティセグメントもしくはデータセグメントとして選択され得る。
【００４８】
夫々のパリティセットにおけるパリティセグメントおよびデータセグメントは、夫々のデータ値を記憶し得る。夫々のパリティセットにおいて、パリティセグメントに記憶され得るデータ値は、そのパリティセットにおけるデータセグメントに記憶された各データ値の論理ＸＯＲに等しくなり得る。夫々のデータセグメントに記憶され得るデータ値は、システム１１２におけるホストコントローラおよび／またはディスクコントローラからキャッシュ１６が受信したコマンドに応じて、夫々のデータセグメントに書き込まれたユーザデータ値であり得る。故に例示目的で、もしメモリセグメント４００Ａ，５００Ａ，６００Ａ，７００Ａが夫々データ値Ｐ，Ａ，Ｂ，Ｃを記憶すると、データ値ＰはＡ  ＸＯＲ  Ｂ  ＸＯＲ  Ｃに等しくなり得る。
【００４９】
メモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎにおける夫々の制御・ネットワーク回路構成および／またはシステム１１２の他の構成要素（たとえばホストコントローラおよびディスクコントローラ）は、メモリ１６における夫々のパリティセットのマッピングを維持可能であり、このマッピングは夫々のパリティセットに含まれるメモリセグメントの位置および個数を表し得る。斯かる回路構成は、初期化スキームに従って（且つ／又は、受信したホストコントローラもしくはディスクコントローラのコマンドに応じて）、夫々のパリティセットにおけるパリティセグメントにおいて、初期データ値を生成して記憶するように構成され得る。たとえば斯かる初期化スキームにおいて、データ値Ａはメモリセグメント５００Ａから読み取られて、一連の複数データワード転送でボード１００Ａにおける制御・ネットワーク回路構成２００へと送信され得る。回路構成２００は値Ａをセグメント４００Ａに一時的に記憶し得る。データ値Ｂもまたセグメント６００Ａから読み取られ、一連の複数データワード転送で回路構成２００へと送信され得る。回路構成２００は（該回路構成２００に含まれる図示せずＸＯＲ論理回路構成を用いて）、セグメント４００Ａに一時的に記憶された値Ａにおける対応データワードに対して、値Ｂからの受信データワードをＸＯＲし、このＸＯＲ演算の結果（すなわちＡ  ＸＯＲ  Ｂ）により値Ａを置き換え得る。換言すると回路構成２００は、データワード毎に演算Ａ  ＸＯＲ  Ｂを実施し、その結果をセグメント４００Ａに記憶する。次に、セグメント７００Ａからデータ値Ｃが読み取られ、一連の複数データワードバーストで制御・ネットワーク回路構成２００へと送信され得る。回路構成２００は値Ｃから受信したデータワードを、セグメント４００Ａに記憶されている対応データワードとＸＯＲし、このＸＯＲ演算の結果を値Ｐとしてセグメント４００Ａに記憶し得る。
【００５０】
その後、（たとえばホストコントローラもしくはディスクコントローラのコマンドに応じて）あるパリティセットにおけるデータセグメントへとデータ値が書き込まれるとき、そのパリティセットにおけるパリティセグメントへもデータ値が書き込まれることで、そのパリティセグメントに記憶されたデータ値は該パリティセットにおける各メモリセグメントに記憶されたデータ値間において上記論理関係を満足することを保証しなければならない。たとえばメモリセグメント７００Ａが、該メモリセグメント７００Ａに記憶されているデータ値ＣがＣ’へと変更されるように書き込まれるなら、メモリセグメント４００Ａに記憶されているデータ値Ｐもまた新たなデータ値（たとえばＰ’）へと変更されねばならず、この場合にＰ’はＡ  ＸＯＲ  Ｂ  ＸＯＲ  Ｃ’に等しい。
【００５１】
これを達成すべく、データ値Ｃに対して変更されたデータ値Ｃ’における各データワードに対し、夫々の一連の不可分な操作が実施され得る。各一連の不可分な操作は、メモリ１６における夫々のデータ転送サイクルの間に実施され得る第１の不可分な操作および第２の不可分な操作を含む。すなわち、値Ｃにおける対応データワードとは異なる値Ｃ’におけるデータワードの各々に対し、夫々一連の不可分な操作が実施され得る。
【００５２】
たとえば、値Ｃ’におけるデータワード（以下、“変更済データワード”と称する）が値Ｃにおける対応データワードと異なる場合、これらのメモリ演算の内の第１のメモリ演算において、ボード１００Ｄにおける制御・ネットワーク回路構成に含まれるＸＯＲ論理
回路構成を使用して、変更済データワードと値Ｃにおける該変更済データワードの対応データワードとのＸＯＲに等しい部分的パリティ値を計算し得ると共に、この部分的パリティ値はボード１００Ａにおける制御・ネットワーク回路構成へと送信され得る。これらのメモリ演算の内の第２のメモリ演算において、この回路構成２００に含まれるＸＯＲ論理回路構成は、上記部分的パリティ値と、変更済データワードに対応する、セグメント４００Ａに記憶された値ＰにおけるデータワードとのＸＯＲを実施して、このＸＯＲ演算の結果をＰからの対応データワードが記憶されているセグメント４００Ａの位置へと書き込み得る。値Ｃ’内に値Ｃにおける夫々の対応データワードとは異なる付加的データワードが存在する場合には、これらの付加的データワードの各々に対して上記プロセスが反復され、（あるとすれば）このプロセスの斯かる付加的反復の最後においてセグメント４００Ａに記憶される値はＰ’である、と言うのも、簡潔さのために此処でその様なことは行ないが、数学的には以下の様に示され得るからである。
【００５３】
Ａ  ＸＯＲ  Ｂ  ＸＯＲ  Ｃ’＝Ｐ  ＸＯＲ  Ｃ  ＸＯＲ  Ｃ’＝Ｐ’
各メモリボードにおける制御・ネットワーク回路構成は双方向データ経路を備え得る。該双方向データ経路は、値Ｃ’における変更済データワードが部分的パリティ値の生成および送信と同時にセグメント７００Ａに書き込まれるのを可能にし得る。これにより好適に、データ転送サイクルの個数が相当に減少され、故に、本発明の該実施形態においてメモリ書込み操作を実施するのに必要な時間も（たとえば、二重書込式障害許容技術を利用するメモリにおいて上記と同一量のデータを伴う書込み操作を実施するために必要な時間と等しくなるように）相当に減少され得る。
【００５４】
また本発明の該実施形態によれば、メモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎにおける制御・ネットワーク回路構成（および／または、システム１１２におけるホストコントローラおよびディスクコントローラなどの他の構成要素）は、（たとえば従来のメモリ故障検出技術を用いて）パリティセットにおける各データセグメントの１つのデータセグメントの故障が生じた時点を検出するように構成され得る。斯かる故障が検出された場合、メモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎの内の適切な夫々のメモリボード中に含まれる制御・ネットワーク回路構成は、故障データセグメントが属するパリティセットにおける正常なデータセグメントに記憶されたデータ値とパリティセグメントに記憶されたデータ値とを用いて、故障データセグメントに記憶されていたデータ値を再構築するように使用され得ると共に、再構築されたデータ値を故障していない別のメモリセグメントへと記憶し得る。たとえばメモリセグメント５００Ａの故障が検出された場合には、メモリセグメント４００Ａに記憶された値Ｐをボード１００Ｄにおける制御・ネットワーク回路構成によって使用するために（たとえば一連の複数データワード転送で）送信するために、メモリボード１００Ａにおける制御・ネットワーク回路構成２００が使用され得る。メモリボード１００Ｄにおける制御・ネットワーク回路構成は、該ボード１００Ｄにおける制御・ネットワーク回路構成に含まれる論理ＸＯＲ回路構成を用いることで値Ｐからの受信データワードを値Ｃにおける対応データワードと論理ＸＯＲを取り（たとえばデータワード毎に演算Ｐ  ＸＯＲ  Ｃを実施し）、且つ、これらのＸＯＲ演算から生成するデータ値（以下においては“データ値Ｘ”と称する）をデータ記憶のために現在利用可能なメモリ１６の別のメモリセグメント（たとえば７００Ｎ）に一時的に記憶し得る。メモリボード１００Ｃに含まれる制御・ネットワーク回路構成は、メモリセグメント６００Ａに記憶されたデータ値Ｂを、メモリボード１００Ｄにおける制御・ネットワーク回路構成により使用するべく（たとえば一連の複数データワード転送で）、送信し得る。メモリボード１００Ｄにおける制御・ネットワーク回路構成は次にその論理ＸＯＲ回路構成を用いてデータ値Ｂからの受信データワードと値Ｘからの対応データワードとの論理ＸＯＲを行い（すなわちデータワード毎に演算Ｘ  ＸＯＲ  Ｂを実施し）、（故障したセグメント５００Ａに記憶されていたデータ値Ａに等しい）その生じた値を、メモリボード１００Ａ、１００Ｃもしくは１００Ｄ内に配置されて
おらず、かつデータの記憶に利用可能なメモリセグメントへと記憶するように送信し得る。たとえば、もしボード１００Ｂにおけるセグメント５００Ａのみが故障したならば、ボード１００Ｂはその他の点では正常に動作しており、セグメント５００Ｎはデータを記憶すべく利用可能であり、新たに再構築された値Ａはセグメント５００Ｎに記憶され得る。これに代わって、故障したセグメント５００Ａを含むメモリボード１００Ｂに対して新たに再構築された値Ａを記憶するのが望ましくない場合には、再構築値Ａは、たとえばメモリボード１００Ｎにおいて利用可能なデータセグメントへと記憶され得る。データ値Ｘおよび再構築値Ａが記憶され得る特定のメモリセグメントもまた、本発明の該実施形態から逸脱することなく変更され得る。
【００５５】
尚、値Ａが破損データワード毎に再構築され得るのことに留意することが重要である。すなわちセグメント５００Ａに含まれるデータワードの全てが破損したのでなければ、再構築が必要なのは破損データワードのみである。たとえばセグメント５００Ａの第１データワード（たとえば最下位データワード）のみが破損した場合には、破損した第１データワードを数学的に再構築すべく使用される必要があるのは値Ｐ，Ｂ，Ｃにおける夫々の対応する第１データワードのみである。再構築されたデータワードは次にセグメント５００Ａからの他の正常データワードと結合されて上記値Ａを生成し、次いで、この値Ａは利用可能データセグメント（たとえば５００Ｎ、または、ボード１００Ｎにおける利用可能データセグメント）に記憶され得る。
【００５６】
夫々のメモリボード１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎの制御・ネットワーク回路構成はアプリケーション特有の集積回路（および関連回路構成）として具体化され得るものである。該集積回路は、斯かる制御・ネットワーク回路構成により実施されると上述した処理手順、プロセス、技術、演算および機能を夫々の制御・ネットワーク回路構成が実施し得るべく実行される特定アルゴリズムによって、事前プログラムされ得る。
【００５７】
故に本発明に依れば、本明細書中において上記に示された目的および課題を完全に満足し且つ各利点を達成するというメモリシステムおよびその使用方法が提供されることは明らかである。本出願において採用された語句および表現は限定のためでなく説明のための語句であり、斯かる語句および表現を使用する上では本出願の図示および記載特徴またはその一部の一切の均等物を排除することは意図されず、寧ろ、権利請求された発明の有効範囲内において可能である種々の改変が為され得ることが理解される。
【００５８】
たとえば本発明の好適実施形態は、ホストコントローラとディスクコントローラとの間の通信を促進するメッセージネットワーク１４と、リンク４０，４２，４４，４６を備えたポイント・ツー・ポイント・データ転送ネットワークシステムとを備えたネットワークデータ記憶システムにおける使用に関して説明したが、適切に改変されるならば、本発明の該実施形態は代替的に、たとえば２００１年２月２８日に出願された、“エラー条件処理（Ｅｒｒｏｒ  Ｃｏｎｄｉｔｉｏｎ  Ｈａｎｄｌｉｎｇ）”と称される本発明と同様に本出願人が所有する同時係属中の米国特許出願第０９／７９６，２５９号に記載された形式の冗長バスシステムを利用する他の形式のネットワークデータ記憶システムに関しても使用され得る。
【００５９】
他の改変も可能である。たとえば、メモリシステム１６においては一定のメモリ書込み−変更−読取り操作が実施され得ると共に、これらの操作は本発明との互換性に対して適合され得る。斯かる書込み−変更−読取り操作の例としてはシステム１６におけるメモリセグメント（たとえばセグメント５００Ａ）に既に記憶されているデータワードに対して算術的および／または論理的なメモリ演算が実施され得るという（比較およびスワップ、半もしくは全ワード／バイトの加算などの）操作が挙げられる。これらの演算の結果はデ
ータワードが以前に記憶されていたメモリの箇所に上書きすべく使用され得ると共に、以前に記憶されていたデータワードが戻され得る。これらの操作は、以前に記憶されていたデータワードが戻されるときに（たとえばその操作が実施されるメモリボードにおける制御・ネットワーク回路構成に含まれる）ＸＯＲ論理回路構成が、戻されたデータ値と共に、以前に記憶されていたデータワードと論理／算術演算の結果とのＸＯＲであり得る余分なデータワードを生成して包含し得るように、実施され得る。戻されたデータ値は、セグメント５００Ａが属するパリティセットにおけるパリティセグメント４００Ａの値ＰをＰ’へと変更する上で上述のように使用され得る。
【００６０】
他の改変もまた可能である。故に本発明は、添付の各請求項により包含され得る全ての改変例、変形例、代替例および均等物を包含すると広範囲に解釈されるべきである。
【図面の簡単な説明】
【００６１】
【図１】本発明の一実施形態が好適に実施されるデータ記憶システムを含むデータ記憶ネットワークの概略的な高レベルブロック図である。
【図２】図１に示されたデータ記憶ネットワークに含まれるデータ記憶システムの機能要素を示す概略的な高レベルブロック図である。
【図３】図２のデータ記憶システムにおける共有キャッシュメモリリソースの機能要素を示す概略的な高レベルブロック図である。
【図４】図３の共有キャッシュメモリリソースに含まれ得るメモリボードの機能要素を示す概略的な高レベルブロック図である。
【図５】本発明の一実施形態の見地の記載を促進すべく用いられる概略的な高レベルブロック図である。
【符号の説明】
【００６２】
１４…メッセージネットワーク、１６…共有キャッシュメモリリソース、１８…ディスクコントローラ、２０…ディスクコントローラ、２２・・・２４…ホストコントローラ、２６・・・２８…ホストアダプタ、３０・・・３２…ディスクアダプタ、３４・・・３６…ディスク記憶デバイス、４０、４２、４４、４６…ポイント・ツー・ポイント・データ転送ネットワークリンク、１００Ａ，１００Ｂ，１００Ｃ，１００Ｄ，・・・１００Ｎ…メモリボード、１１０…データ記憶ネットワーク、１１２…データ記憶システム、１１４，１１６，１１８，１２０…通信リンク、１２４，１２６，１２８，１３０…ホストコンピュータノード、１３４，１３６，１３８，１４０…ネットワーク通信リンク、１４４…外部ネットワーク、１４５…ネットワーク通信リンク、１４６…クライアントコンピュータノード、２００…制御・ネットワーク回路構成、２０２，２０４，２０６，２０８…メモリ領域、２１０，２１２，２１４，２１６…ＳＤＲＡＭ  ＩＣデバイスのバンク、２２０Ａ，２２０Ｂ，・・・２２０Ｎ…メモリセグメント、２２２Ａ，２２２Ｂ，・・・２２２Ｎ…メモリセグメント、２２４Ａ，２２４Ｂ，・・・２２４Ｎ…メモリセグメント、２２６Ａ，２２６Ｂ，・・・２２６Ｎ…メモリセグメント、３００、３０２、３０４、３０６…メモリセグメント、４００Ａ，４００Ｂ，４００Ｃ，・・・４００Ｎ…メモリセグメント、５００Ａ，５００Ｂ，５００Ｃ，・・・５００Ｎ…メモリセグメント、６００Ａ，６００Ｂ，６００Ｃ，・・・６００Ｎ…メモリセグメント、７００Ａ，７００Ｂ，７００Ｃ，・・・７００Ｎ…メモリセグメント。
【図１】
0004643539.tif 000002
【図２】
0004643539.tif 000003
【図３】
0004643539.tif 000004
【図４】
0004643539.tif 000005
【図５】
0004643539.tif 000006