(57)【特許請求の範囲】
【請求項１】
多重ノードコンピュータシステムのデータへのアクセスを管理するための方法であって、
特定のデータ項目を記憶する不揮発性メモリへのアクセスを有する複数のノードから選択される第１のノードに、前記特定のデータ項目にアクセスする各エンティティが前記特定のデータ項目を整合した状態で保つようアクセスすることを確実にするための責務を割当てるステップを含み、
前記複数のノードの各ノードは揮発性メモリと、前記揮発性メモリへのアクセスを有する１つまたはそれ以上のプロセッサとを含み、さらに
前記第１のノードが前記特定のデータ項目に対する読出要求を受取るステップを含み、前記読出要求は前記複数のノードの第２のノードにおいて開始され、さらに
前記第1のノードが、前記第２のノードが前記特定のデータ項目を読み出すことを許可するロックを前記特定のデータ項目に付与するステップと、
前記第１のノードが、前記特定のデータ項目を記憶する不揮発性メモリを制御するディスクコントローラに、前記特定のデータ項目を識別する送信メッセージを転送するステップと、
前記ディスクコントローラが、前記第１のノードから前記特定のデータ項目を識別する前記第２のメッセージを受取るステップと、
前記第２のメッセージに応答して、前記ディスクコントローラが
前記不揮発性メモリから前記特定のデータ項目を読出すステップと、
前記特定のデータ項目が前記第１のノードによって処理されることなく、前記特定のデータ項目を前記第２のノードに届けるデータ項目返送経路に前記特定のデータ項目を伝達するステップとを行なうステップとを含む、方法。
【請求項２】
前記第２のノードが、前記第２のノードに属する揮発性メモリ中の、前記特定のデータ項目が記憶される場所を示す宛先データを発生するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のノードが前記第２のノードから前記宛先データを受取るステップと、
前記第１のノードが前記ディスクコントローラに前記宛先データを転送するステップと、
前記ディスクコントローラが前記第２のノードの揮発性メモリ中の前記場所に前記特定のデータ項目を届けるステップとをさらに含む、請求項２に記載の方法。
【請求項４】
前記読出要求を一意に識別する宛先データを発生するステップと、
前記特定のデータ項目が前記ディスクコントローラから前記第２のノードに到着するときに、前記第２のノードが前記宛先データを調べることによって前記特定のデータ項目の読出を許可する前記ロックが付与されていることを判断するステップとをさらに含む、請求項１に記載の方法。
【請求項５】
前記第２のノードが、前記読出要求を伝達する前に、前記特定のデータ項目に対する読出を許可するロックを付与されることなく前記特定のデータ項目を受取るためにバッファキャッシュの一部を割当てるステップをさらに含み、前記バッファキャッシュは前記第２のノードに属する揮発性メモリ中に存在する、請求項１に記載の方法。
【請求項６】
前記データ項目返送経路は前記第１のノードを完全にバイパスする、請求項１に記載の方法。
【請求項７】
前記読出要求は第１の通信ネットワークを通して送られ、前記ディスクコントローラは前記特定のデータ項目を第２の通信ネットワークを通して伝達する、請求項１に記載の方法。
【請求項８】
データブロックを含む不揮発性メモリと、
前記不揮発性メモリに結合されるディスクコントローラとを含み、前記ディスクコントローラは、第１のノードからの送りメッセージに応答して前記第１のノードによってデータブロックが処理されることなく、第２のノードにデータブロックを届けるデータ項目返送経路に前記データブロックを送るように構成され、
前記第２のノードは、第１のプロセッサを含み、かつ前記ディスクコントローラに結合され、前記第１のノードに前記データブロックに対する要求メッセージを送るよう構成され、
前記第１のノードは、前記ディスクコントローラおよび前記第２のノードに結合され、前記第１のノードは前記第２のノードから前記要求メッセージを受取り、前記要求メッセージに応答して、前記ディスクコントローラに前記要求メッセージに基づく前記送りメッセージを転送するよう構成され、前記第１のノードは第２のプロセッサを含み、
前記要求メッセージは、前記データブロックに対するアクセスの許可を要求し、
前記第１のノードは、前記第２のノードからの前記要求メッセージに応答して前記データブロックに対するアクセスの許可を付与する、装置。
【請求項９】
前記第２のノードは、前記データブロックが前記第２のノード内で記憶される場所を示す宛先データを発生するよう構成される、請求項８に記載の装置。
【請求項１０】
前記第１のノードは、前記宛先データを受取って該宛先データを前記ディスクコントローラに転送するよう構成される、請求項９に記載の装置。
【請求項１１】
前記第２のノードは前記要求メッセージを一意に識別する宛先データを発生するよう構成され、前記宛先データは前記第１のノードに送られ、前記第１のノードは前記宛先データを前記ディスクコントローラに転送し、前記ディスクコントローラは前記宛先データを前記第２のノードに送り返す、請求項８に記載の装置。
【請求項１２】
前記第２のノードは、前記第１のプロセッサに結合されるバッファキャッシュをさらに備え、前記第２のノードは、前記要求メッセージを伝達する前に前記データブロックを受取るために前記第１のバッファキャッシュの一部を割当てるよう構成される、請求項８に記載の装置。
【請求項１３】
前記第１のノードは、前記データブロックに前記第２のノードに前記データブロックを読出すことを許可するロックを付与することにより、前記第２のノードに前記データブロックへのアクセスの許可を与える、請求項８に記載の装置。
【請求項１４】
前記ディスクコントローラは、前記第１のノードを完全にバイパスするデータ項目返送経路に前記データブロックを送るよう構成される、請求項８に記載の装置。
【請求項１５】
前記要求メッセージは第１の通信ネットワークを通して送られ、前
記ディスクコントローラは前記データブロックを第２の通信ネットワークを通して伝達する、請求項８に記載の装置。
【請求項１６】
多重ノードコンピュータシステム中のデータにアクセスするための一連の命令が記憶されているコンピュータ読出可能媒体であって、前記一連の命令は以下のステップを行なうための命令を含み、そのステップは
特定のデータ項目を記憶する不揮発性メモリへのアクセスを有する複数のノードから選択される第１のノードに、前記特定のデータ項目にアクセスする各エンティティが前記特定のデータ項目を整合した状態で保つようアクセスすることを確実にするための責務を割当てるステップを含み、
前記複数のノードの各ノードは揮発性メモリと、前記揮発性メモリへのアクセスを有する１つまたはそれ以上のプロセッサとを含み、さらに
前記第１のノードが前記特定のデータ項目に対する読出要求を受取るステップを含み、前記読出要求は前記複数のノードの第２のノードにおいて開始され、さらに
前記第１のノードが、前記第２のノードに前記特定のデータ項目を読出すことを許可するロックを前記特定のデータ項目に付与するステップと、
前記第１のノードが、前記特定のデータ項目を記憶する不揮発性メモリを制御するディスクコントローラに、前記特定のデータ項目を識別する送信メッセージを転送するステップと、
前記ディスクコントローラが、前記第１のノードから前記特定のデータ項目を識別する前記送りメッセージを受取るステップと、
前記送りメッセージに応答して、前記ディスクコントローラが
前記不揮発性メモリから前記特定のデータ項目を読出すステップと、
前記特定のデータ項目が前記第１のノードによって処理されることなく、前記特定のデータ項目を前記第２のノードに届けるデータ項目返送経路に前記特定のデータ項目を伝達するステップとを行なうステップとを含む、コンピュータ読出可能媒体。
【請求項１７】
前記第２のノードが、前記第２のノードに属する揮発性メモリ中の、前記特定のデータ項目が記憶される場所を示す宛先データを発生するステップを行なうための命令をさらに含む、請求項１６に記載のコンピュータ読出可能媒体。
【請求項１８】
前記第１のノードが前記第２のノードから前記宛先データを受取るステップと、
前記第１のノードが前記ディスクコントローラに前記宛先データを転送するステップと、
前記ディスクコントローラが前記第２のノードの揮発性メモリ中の前記場所に前記特定のデータ項目を届けるステップとを行なうための命令をさらに含む、請求項１７に記載のコンピュータ読出可能媒体。
【請求項１９】
前記読出要求を一意に識別する宛先データを発生するステップと、
前記特定のデータ項目が前記ディスクコントローラから前記第２のノードに到着するときに、前記第２のノードが前記宛先データを調べることによって前記特定のデータ項目の読出を許可する前記ロックが付与されているかを判断するステップとを行なうための命令をさらに含む、請求項１６に記載のコンピュータ読出可能媒体。
【請求項２０】
前記第２のノードが、前記読出要求を伝達する前に、前記特定のデータ項目に対する読出を許可する前記ロックを付与されることなく前記特定のデータ項目を受取るためにバッファキャッシュの一部を割当てるステップを行なうための命令をさらに含み、前記バッファキャッシュは前記第２のノードに属する前記揮発性メモリ中に存在する、請求項１６に記載のコンピュータ読出可能媒体。
【請求項２１】
前記データ項目返送経路は前記第１のノードを完全にバイパスする、請求項１６に記載のコンピュータ読出可能媒体。
【請求項２２】
前記読出要求は第１の通信ネットワークを通して送られ、前記ディスクコントローラは前記特定のデータ項目を第２の通信ネットワークを通して伝達する、請求項１６に記載のコンピュータ読出可能媒体。
【請求項２３】
多重ノードコンピュータシステム中のデータにアクセスするための方法であって、
第１のノードから第２のノードに、データ項目に対するアクセス要求を送るステップを含み、前記データ項目は前記第１のノードおよび前記第２のノードの両方がアクセスを有する不揮発性メモリに存在し、さらに
前記第２のノードで前記アクセス要求を受取るステップと、
前記アクセス要求に応答して、前記第２のノードが前記第１のノードに前記データ項目にアクセスするための許可を与えるステップと、
前記第２のノードからディスクコントローラに、前記アクセス要求に対応するデータを転送するステップと、
前記ディスクコントローラにおいて前記アクセス要求に対応する前記データを受取るステップと、
前記アクセス要求に対応する前記データを受取る前記ディスクコントローラに応答して、前記ディスクコントローラによって前記不揮発性メモリから前記データ項目を読出すステップと、
前記ディスクコントローラによって、前記第２のノードをバイパスするデータ項目返送経路で前記データ項目を前記第１のノードに伝達するステップとを含む、方法。
【請求項２４】
前記第１のノード中の、前記要求されたデータが記憶されるバッファキャッシュの場所を示す宛先データを発生するステップと、
前記第２のノードにおいて前記宛先データを受取るステップと、
前記第２のノードから前記ディスクコントローラに前記宛先データを転送するステップとをさらに含む、請求項２３に記載の方法。
【請求項２５】
前記アクセス要求を一意に識別する宛先データを発生するステップをさらに含み、前記宛先データを発生するステップは前記第１のノードによって行なわれ、前記宛先データは前記第１のノードから前記第２のノードに送られ、前記宛先データは前記第２のノードから前記ディスクコントローラに転送され、前記宛先データが前記ディスクコントローラから前記第１のノードに送られることによって、複数のそのまま残っているアクセス要求のうちどのアクセス要求が前記ディスクコントローラによってサービスされているかを前記第１のノードに示す、請求項２３に記載の方法。
【請求項２６】
前記第１のノードが前記データ項目にアクセスするための許可を付与されていることを、第２のノードは前記第１のノードに直接伝えない、請求項２３に記載の方法。
【請求項２７】
前記データ項目に対する前記アクセス要求は前記第１のノードによって第１の通信ネットワークを通して送られ、前記データ項目は前記ディスクコントローラから前記第１のノードに向けて第２の通信ネットワークを通して伝達される、請求項２３に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明は共用ディスクコンピュータシステムに関し、特に、キャッシュコヒーレンス共用ディスクコンピュータシステムにおけるキャッシュコヒーレンス管理に関する。
【０００２】
【発明の背景】
キャッシュコヒーレンス共用ディスクコンピュータシステムにおいて、１つ以上の永続的ディスクが複数のノード間で共用され、各ノードがメモリとそのメモリを共用する１つ以上のプロセッサとを含む。各ノードのメモリの一部が、そのノードのプロセッサがアクセスするディスクレジデントデータを一時的に記憶する「バッファキャッシュ」として用いられ得る。
【０００３】
ディスク上のデータがノード間で共用されるので、システムには、共用データに対して読出または書込を行う各プロセッサまたは装置がそのデータを矛盾のない状態に保つよう読出または書込を行うことを確実とするように、共用データを管理する必要がある。２つのノードがあるデータ項目を共用する別個の処理を行っており、そのデータ項目のコピーが現在各ノードにある状況を考える。第１のノードがデータ項目のそのコピーを変更し、第２のノードがその変更を通知されなければ、第２のノードはデータ項目の古いものをその処理のために与え、エラーを起こしてしまう。しかしながら、（たとえば、第１のノードにおける更新に応答して第２のノードにおけるデータ項目を更新するか無効にすることによって）データ項目の各コピーを単一の（整合した）データ項目であるように見せかけるようデータ項目を維持する資源管理システムが確立されれば、そのデータ項目は「整合した」または「一貫した」状態にあると言える。
【０００４】
各バッファキャッシュはキャッシュコヒーレンスマネージャによって管理される。所与のバッファキャッシュのためのキャッシュコヒーレンスマネージャはそのバッファキャッシュに対するアクセスを制御し、１つ以上のバッファキャッシュ内のデータを一貫したまたは整合した状態に保つ。加えて、各バッファキャッシュは以下により詳細に述べる「局所性」を確立することができる。
【０００５】
共用ディスクコンピュータシステムは、１つ以上の共用ディスク上に持続的に記憶される共通のデータベースへのアクセスを多数のユーザまたは処理が必要とし得る、データベースシステムのような演算環境においてよく用いられる。
【０００６】
図１はキャッシュコヒーレンス共用ディスクコンピュータシステム１００を示す。図１において、２つのデータブロック１５２および１５４を含むディスク１５０がローカルバス１４５によってディスクコントローラ１４０に接続される。ディスクコントローラ１４０はＩ／Ｏネットワーク１３５によって第１のノード１９０および第２のノード１９２に接続される。
【０００７】
第１のノード１９０はプロセッサ１０２、バッファキャッシュ１０４およびキャッシュコヒーレンスマネージャ１０６を含む。バッファキャッシュ１０４は（キャッシュ内データブロック１５４'と表される）データブロック１５４のコピーを内蔵する。プロセッサ１０２、バッファキャッシュ１０４およびキャッシコヒーレントマネージャ１０６はローカルバス１０８によって相互接続される。
【０００８】
同様に、第２のノード１９２はプロセッサ１１２、バッファキャッシュ１１４およびキャッシュコヒーレンスマネージャ１１６を含む。バッファキャッシュ１１４は（キャッシュ内データブロック１５４'と表わされる）データブロック１５４のコピーを内蔵する。プロセッサ１１２、バッファキャッシュ１１４およびキャッシュコヒーレンスマネージャ１１６はローカルバス１１８によって相互接続される。
【０００９】
図１に示すキャッシュコヒーレンス共用ディスクコンピュータシステム内の第１のノード１９０および第２のノード１９２はシステムエリアネットワーク１３０によって相互接続される。たとえば、システムエリアネットワーク１３０はプロセッサ１０２および１１２ならびにキャッシュコヒーレンズマネージャ１０６および１１６を相互接続する。
【００１０】
プロセッサ１０２をバッファキャッシュ１０４およびキャッシュコヒーレンスマネージャ１０６に相互接続するためにさまざまな構成が用いられ得る（たとえば、ローカルバス１０８）。同様に、第１のノードを第２のノードに相互接続するためにさまざまな構成が用いられ得る（たとえば、システムエリアネットワーク１３０）。同様に、第１のノード１９０、第２のノード１９２およびディスクコントローラ１４０を接続するためにさまざまな構成が用いられ得る（たとえば、Ｉ／Ｏネットワーク１３５）。図１に示す相互接続構成は例示的であり、共用ディスクコンピュータシステムの説明を簡単にするためのものである。
【００１１】
コンピュータシステムにおける局所性は空間的局所性、時間的局所性およびプロセッサの局所性のような多数の異なる形態を取る。空間的局所性は、同時のメモリ参照が隣接するまたは近くのメモリアドレスにアクセスする可能性がある場合に存在すると言われる。時間的局所性は、最近のメモリ参照が再びアクセスされる可能性がある場合に存在すると言われる。さらに、並列演算はプロセッサの局所性と呼ばれるもう１つの形態の局所性を生むことができる。プロセッサの局所性は、同時のメモリ参照が（多くの異なるものの代わりに）単一のマルチプロセッサから行われる可能性がある場合に存在すると言われる。
【００１２】
バッファキャッシュを用いると、プロセッサが必要とするデータが将来においてそのプロセッサの近くに置かれる可能性を高めることによって、ディスク１５０と、相互接続されたプロセッサにおいて開始される処理との間の局所性を作ることができる。キャッシュコヒーレンスマネージャ１１６を用いて、プロセッサ１０２上で開始された局所処理は、ディスク１５０からデータブロック１５４を連続的に再読出しすることから生じるであろう処理および通信のレイテンシによって遅延される代わりに、隣接するバッファキャッシュ１０４内にある間にキャッシュ内データブロック１５４'へのアクセスの時間的局所性を利用することができる。
【００１３】
図１において、各キャッシュコヒーレンスマネージャはキャッシュコヒーレンスプロトコルを用いることによって、ディスク１５０からのデータブロックを整合した状態に保つ。キャッシュコヒーレンスプロトコルは、キャッシュ内データブロック１５４'が多数のバッファキャッシュに分散されても、各プロセッサ１０２および１１２がデータブロック１５４の類似したまたは整合したコピーにアクセスすることを確実とする。たとえば、キャッシュコヒーレンスマネージャ１０６は、コピーがバッファキャッシュ１０４および１１４内にある間にデータブロック１５２を整合した状態に保つ。同様に、キャッシュコヒーレンスマネージャ１１６は、バッファキャッシュ１０４および１１４に分散されている間にデータブロック１５４を整合した状態に保つ。
【００１４】
図１に示す共用ディスクコンピュータシステムのためのキャッシュコヒーレンスマネージャ１０６および１１６は、バッファキャッシュ１０４と１１４との間、プロセッサ１０２と１１２との間、ディスク１５０内のデータブロック１５２と１５４との間に局所性を作るのに役立つ。
【００１５】
キャッシュコヒーレンス管理
典型的なキャッシュコヒーレンス管理プロトコルのための通信シーケンスを図２に示す。図２において、プロセッサ１０２が開始する処理がデータブロック１５４の読出を要求したと想定する。加えて、データブロック１５４のコピーが現在はバッファキャッシュ１０４内にないと想定する。さらに、キャッシュコヒーレンス管理システムがデータブロック１５４のためのキャッシュコヒーレンスマネージャとしてノード１９２を選択したと想定する。
【００１６】
データブロック１５４が処理によって読出されるために、データブロック１５４のコピーがバッファキャッシュ１０４内に配置されなければならない。まず、第１のノード１９０がロック要求を第２のノード１９２に渡す。第２のノード１９２は第１のノード１９０からロック要求を受取り、ロック要求が有効であれば、ロック許可を第１のノード１９０に戻す。第１のノード１９０はロック許可を受取り、データブロック１５４のコピーのためにバッファキャッシュ１０４を準備する処理を開始する。第１のノード１９０は次に読出要求をディスクコントローラ１４０に渡す。次に、ディスクコントローラ１４０はディスク１５０からデータブロック１５４を読出し、データブロック１５４のコピーを第１のノード１９０に送る。第１のノード１９０はデータブロック１５４のコピーを受取り、データブロック１５４のコピーをキャッシュ内データブロック１５４'としてバッファキャッシュ１０４内へと記憶する。
【００１７】
上述のプロトコルの問題は、データブロック１５４を要求するノード１９０上の処理（「要求処理」）が、データブロック１５４のコピーを待っている間に止まってしまうことである。これらの条件下で要求処理が停止すると、アプリケーションプログラムに著しい性能問題が生じ得る。さらに、同期したコンテキスト切換が経路２と経路３との間で第１のノード１９０によって必要とされる。上述の問題は多量のノードが同じ共用ディスク上のデータにアクセスする場合にさらに悪化する。たとえば、何千ものノードがディスク１５０を共用すると、ディスク１５０が何百万ものデータブロックを有し、各ノードが毎分１０００個のデータブロックを要求することになるかもしれない。これらの条件下では、通信レイテンシ、プロセッサ機能停止およびコンテキスト切換が著しい量の処理時間を浪費するであろう。
【００１８】
可能な解決法
要求処理の機能停止の問題を解決する１つのアプローチが、M. D. HillおよびJ. R. Larusによる「マルチプロセッサプログラマのためのキャッシュ研究（“Cache Considerations for Multiprocessor Programmers”）」、ＡＣＭ通信（“Communications of The ACM”）、第３３巻、第８号、１９９０年８月、第９７−１０２頁に取上げられている。この論文において、HillおよびLarusは、機能停止の問題が共用ディスクの余分なアクセス（読出）を回避するようにバッファキャッシュに特別の注意を払うプログラミング技術によって少なくとも部分的に緩和され得ることを示唆している。４つのメモリモデルが提案され、単一プロセッサおよびマルチプロセッサのプログラミングのための規則が示唆されている。
【００１９】
Hill他のアプローチの問題は、情報を与えられたプログラミングモデルは機能停止の頻度を低減できるが、それらは根底にある問題、すなわち機能停止の持続に対処していない。
Mohan C.による「マルチシステム共用ディスクトランザクション環境における効率的ロッキングおよびキャッシュング（"Efficient locking and caching of data in the multisystem shared disks transaction environment"）」、１９９２年３月２３日、第４５３−４６８頁、ＸＰ−００２０５５７７９では、大域的ロックマネージャおよび局所的ロックマネージャを用いるロッキング方法が開示されている。
【００２０】
もう１つのアプローチが、J. B. Carter、J. K. Bennett、およびW. Zwaenepoelによる「分散型共用メモリシステムにおける整合性に関連した通信を低減するための技術（“Techniques for Reducing Consistency-Related Communication in Distributed Shared-Memory Systems”）」、ＡＣＭコンピュータシステム会報（“ACM Transactions on Computer Systems”）、第１３巻、第３号、１９９５年８月、第２０５−２４３頁において提案されている。この論文において、Carter他は、ある処理におけるバッファ処理およびマージ更新が共用データ（すなわち、ディスク１５０、またはバッファキャッシュ１０４および１１４間に分散されるデータブロック１５４）への書込のレイテンシをマスクし、更新作業のための全体のオーバーヘッドを効果的に低減すると示唆している。Carter他のアプローチは通信の頻度、したがって機能停止の頻度を低減することに向けられている。Carter他のアプローチは（機能停止が「一括」更新の数にわたって分けられるならば）機能停止の有効コストを低減するが、機能停止の個々のコストはより高くなる可能性がある。たとえば、読出要求が直ちに必要であれば、Carter他のアプローチは不十分である。なぜなら、十分な数の要求が集まるまで読出要求を待ち行列に入れる結果として機能停止の持続期間がより長くなるためである。
【００２１】
したがって、キャッシュコヒーレンス共用ディスクコンピュータシステムを実現するための改良された方法および装置が必要である。
【００２２】
【発明の概要】
キャッシュコヒーレンス共用ディスクコンピュータシステムにおけるＩ／Ｏ転送のための方法および装置が提供される。
【００２３】
この方法に従うと、要求ノードが要求されたデータを求める要求を送る。管理ノードが要求ノードから読出要求を受取り、要求されたデータへのロックを許可する。管理ノードは次に要求されたデータを識別するデータをディスクコントローラに転送する。ディスクコントローラは要求されたデータを識別するデータを管理ノードから受取り、要求されたデータを識別するデータに基づいて共用ディスクからデータ項目を読出す。共用ディスクからデータ項目を読出した後、ディスクコントローラはデータ項目を要求ノードに送る。
【００２４】
一実施例では、読出要求とデータ項目がコピーされるべきバッファキャッシュアドレスとを識別するＩ／Ｏ宛先ハンドルが発生される。Ｉ／Ｏ宛先ハンドルは、ディスクコントローラから要求ノードへのデータ項目の送信および処理を容易にするためにディスクコントローラに送られる。
【００２５】
要求されたデータを識別するデータを管理ノードからディスクコントローラへと直接的に転送する（「Ｉ／Ｏ転送」）結果として、機能停止の持続期間が低減し、システムの資源に対するコンテンションが低減し、コンテキスト切換がなくなる。
【００２６】
【好ましい実施例の詳細な説明】
この発明を、同じ参照番号が同様の要素を指す添付の図面において限定的ではなく例示的に示す。
【００２７】
キャッシュコヒーレンス共用ディスクコンピュータシステムにおけるＩ／Ｏ転送のための方法および装置を説明する。以下の説明において、説明の目的のために数多くの具体的な細部が記載されてこの発明の完全な理解を与える。しかしながら、この発明がこれらの具体的な細部なしで実行され得ることは当業者には明らかであろう。他の例では、この発明を不必要に不明瞭にすることを避けるために周知の構造および装置がブロック図に示される。
【００２８】
ハードウェア全体像
図３はこの発明の実施例に従うキャッシュコヒーレンス共用ディスクコンピュータシステム３００を示す。
【００２９】
第１のノード３０２がプロセッサ３０４および３０６、ネットワークドライバ３０８、Ｉ／Ｏコントローラ３１０ならびにバッファキャッシュ３１２を含む。ローカルバス３１６がプロセッサ３０４および３０６、ネットワークドライバ３０８、Ｉ／Ｏコントローラ３１０ならびにバッファキャッシュ３１２を相互接続する。
【００３０】
第２のノード３２２がプロセッサ３２４および３２６、ネットワークドライバ３２８、Ｉ／Ｏコントローラ３３０ならびにバッファキャッシュ３３２を含む。ローカルバス３３６がプロセッサ３２４および３２６、ネットワークドライバ３２８、Ｉ／Ｏコントローラ３３０ならびにバッファキャッシュ３３２を相互接続する。
【００３１】
第１のノード３０２は、ネットワークドライバ３０８をネットワークドライバ３２８に相互接続するシステムエリアネットワーク３５０によって第２のノード３２２に結合される。バッファキャッシュ３１２内のＩ／Ｏ宛先ハンドル３１４はバッファキャッシュ３１２内の宛先メモリアドレスを識別するデータを含む。同様に、バッファキャッシュ３３２内のＩ／Ｏ宛先ハンドル３３４はバッファキャッシュ３３２内の宛先メモリアドレスを識別するデータを含む。
【００３２】
システム３００はディスクコントローラ３６０を含む。ディスクコントローラ３６０はローカルバス３６２によってディスク３６４およびディスク３６６に結合される。同様に、ディスクコントローラ３７０はローカルバス３７２によってディスク３７４およびディスク３７６に結合される。ディスク３６４、３６６、３７４および３７６は各々データブロック（それぞれ３６８、３６９、３７８および３７９）を含む。ディスクコントローラ３６０および３７０はＩ／Ｏネットワーク３５５によって接続される。Ｉ／Ｏネットワーク３５５はまたそれぞれＩ／Ｏコントローラ３１０および３３０によって第１のノード３０２および第２のノード３２２を相互接続する。
【００３３】
システム３００におけるキャッシュコヒーレンス管理の課題は各ノードにおけるプロセッサが実行する１組の処理である。たとえば、第１のノード３０２内のプロセッサ３０４および３０６が実行する処理はデータブロック３６８および３６９を管理する。同様に、第２のノード３２２内のプロセッサ３２４および３２６が実行する処理はデータブロック３７８および３７９を管理する。
【００３４】
図４はキャッシュコヒーレント共用ディスクコンピュータシステム４００のための代替的な実施例を示す。システム４００において、２つのデータブロック１５２および１５４を含むディスク１５０がローカルバス１４５によってディスクコントローラ１４０に相互接続される。ディスクコントローラ１４０はＩ／Ｏネットワーク１３５によって第１のノード１９０および第２のノード１９２に相互接続される。
【００３５】
第１のノード１９０はプロセッサ１０２、バッファキャッシュ１０４およびキャッシュコヒーレンスマネージャ１０６を含む。バッファキャッシュ１０４はＩ／Ｏ宛先ハンドル３１４を内蔵する。ローカルバス１０８がプロセッサ１０２、バッファキャッシュ１０４およびキャッシュコヒーレンスマネージャ１０６を相互接続する。
【００３６】
同様に、第２のノード１９２はプロセッサ１１２、バッファキャッシュ１１４およびキャッシュコヒーレンスマネージャ１１６を含む。バッファキャッシュ１１４はＩ／Ｏ宛先ハンドル３３４を内蔵する。ローカルバス１１８がプロセッサ１１２、バッファキャッシュ１１４およびキャッシュコヒーレンスマネージャ１１６を相互接続する。
【００３７】
システム４００内のノードはシステムエリアネットワーク１３０によって相互接続される。たとえば、第１のノードおよび第２のノード１９２は、プロセッサ１０２および１１２ならびにキャッシュコヒーレンスマネージャ１０６および１１６を相互接続するシステムエリアネットワーク１３０によって結合される。
【００３８】
システム３００に類似しているが、システム４００はシステム３００とは異なる。すなわち、システム３００はソフトウェアベースのキャッシュコヒーレンス管理システムであり、キャッシュコヒーレンス管理が各ノードに関連したプロセッサによって実行される一連の処理であることを意味するが、システム４００は特にキャッシュコヒーレンス管理のために用いられる専用ハードウェアを有する。
【００３９】
以下の説明を簡単にするために、「要求ノード」および「管理ノード」という用語が「第１のノード」および「第２のノード」という用語と互換的に用いられる。「要求ノード」は読出要求を開始したノードを機能上特定するが、「管理ノード」は要求されたデータ項目のキャッシュコヒーレンス管理の責任を有するノードを機能上特定する。しかしながら、ここに説明されるキャッシュコヒーレンス共用ディスクコンピュータシステムにおけるどのノードが要求ノードまたは送りノードであってもよいことが当業者には明らかであろう。
【００４０】
動作全体像
この発明の一実施例に従うと、要求ノード内で実行する処理はデータ項目を要求する前にデータ項目を受取るためのメモリを割当てる。次に、要求ノードはデータ項目の要求により割当てられたメモリの場所を識別するデータ（「Ｉ／Ｏ宛先ハンドル」）を要求されたデータ項目を管理するノードに送る。管理ノードは次に、データ項目を含むディスクに、Ｉ／Ｏ宛先ハンドルが識別する場所へと直接的にデータ項目を送らせる。
【００４１】
一実施例では、要求ノードは要求されたデータ項目の論理アドレス（たとえば、資源名）を要求されたデータ項目の物理アドレスへと変換する。他の実施例では、管理ノードが要求されたデータ項目の論理アドレスを物理アドレスへと変換する。さらに他の実施例では、要求ノードおよび管理ノードの両方が要求されたデータ項目の論理アドレスを物理アドレスに変換する。さらに他の実施例では、ディスクコントローラが論理アドレスを物理アドレスへと変換する。上の実施例のいずれにおいても、変換工程はオペレーティングシステムの呼出、Ｉ／Ｏサブシステムの呼出または他のプロセスによって開始され得る。
【００４２】
Ｉ／Ｏ宛先ハンドルの発生
図３および図４に示すＩ／Ｏ宛先ハンドル３１４および３３４は各々、データブロックがコピーされるべきバッファキャッシュ（たとえば、バッファキャッシュ３１２、３３２、１０４または１１４）内の要求されたデータブロックのための宛先メモリアドレスを識別するデータを含む。たとえば、Ｉ／Ｏ宛先ハンドル３１４はデータ「０００１Ｅ２００Ｆ０００」によって要求ノード３０２とバッファキャッシュ３１２内の宛先メモリアドレスＥ２００Ｆ０００を識別することができるであろう。先行例では、初めの２バイトが要求ノードを識別し、次の４バイトが特定のメモリアドレスを識別する。
【００４３】
代替的実施例では、Ｉ／Ｏ宛先ハンドル３１４および３３４が宛先メモリアドレスおよび状態情報を含む。状態情報は特定のＩ／Ｏ要求を一意に識別するために用いられるタイムスタンプまたは他の情報を含み得る。たとえば、先行するＩ／Ｏ宛先ハンドル３１４「０００１Ｅ２００Ｆ０００」は読出要求のための時点またはシーケンス番号を表わすために３バイト「２Ａ０２３４」をその最後に添えていた可能性がある。加えて、Ｉ／Ｏ宛先ハンドルはＩ／Ｏ宛先ハンドルの認証または正確さを検証するためにチェックサムを含み得る。
【００４４】
一実施例に従うと、Ｉ／Ｏ宛先ハンドル３１４および３３４はオペレーティングシステムの呼出またはＩＯサブシステムの呼出によって発生される。一実施例では、ＩＯ宛先ハンドルの発生は事象の発生時に暗黙のうちに行なわれる。他の実施例では、Ｉ／Ｏ宛先ハンドルの発生は機能呼出によって明らかに行なわれる。たとえば、処理がプロセッサ３０４上で開始され、処理がデータブロック３７９の読出を要求すれば、そのプロセスにおける読出要求が、バッファキャッシュ３１２内の特定の宛先メモリアドレスのためにＩ／Ｏ宛先ハンドル３１４を発生するオペレーティングシステムの呼出を引き起こす。
【００４５】
代替的実施例では、Ｉ／Ｏ宛先ハンドル（たとえば、Ｉ／Ｏ宛先ハンドル３１４）はキャッシュコヒーレンス管理に責任を有する局所装置（たとえば、キャッシュコヒーレンスマネージャ１０６またはプロセッサ３０４によって発生される。局所装置は、読出要求において明白であるか暗黙であるオペレーティングシステムの呼出またはＩ／Ｏサブシステムの呼出を行なうであろう。Ｉ／Ｏ宛先ハンドルは、管理ノードおよびディスクコントローラを通るときにデータ（たとえば、状態情報）を添付し、除去しているかもしれない。
【００４６】
別の実施例では、バッファキャッシュ（たとえば、バッファキャッシュ３１２）内のデータブロックのために予約されているメモリの量をデータブロック（たとえば、データブロック３７９）の最大サイズで割算した結果がｐである、ｐ個のメモリアドレスを含むバンクがＩ／Ｏ宛先ハンドルを発生するために用いられ得る。Ｉ／Ｏ宛先ハンドルは特定のサイズ（少なくともデータブロックのサイズ）のバッファキャッシュ内のメモリブロックを指すであろう。Ｉ／Ｏ宛先ハンドルが発生されると、それは未解決のＩ／Ｏ要求に対応しないｐ個のメモリアドレスのバンクから選択される。ｐ個のメモリアドレスのバンクにおける未解決または現在割当てられていないメモリアドレスを識別するために状態フラグが用いられ得る。このように、特定のＩ／Ｏ宛先ハンドルでのデータブロックが到着すると、データブロックはバッファキャッシュ内の適切な場所へとコピーされ得る。読出要求を開始した処理が終了すると、メモリアドレスは有効メモリアドレスのバンクに戻されるであろう。
【００４７】
Ｉ／Ｏ転送
図５に示す通信流れ図を参照すると、データに対する要求を含む第１のメッセージが、要求処理を実行する要求ノードから要求されたデータを管理する責任を有する管理ノードへと渡される。管理ノードは要求ノードから第１のメッセージを受取り、要求されたデータに対するロックを要求ノードに許可する。管理ノードは第２のメッセージをディスクコントローラに転送する。ディスクコントローラは第２のメッセージを受取り、要求されたデータを共有ディスクから、Ｉ／Ｏ割当ハンドルが識別する要求ノード内の場所へとコピーする。
【００４８】
Ｉ／Ｏ宛先ハンドルは要求されたデータに添えられてもよく、要求されたデータとは別に送られてもよい。一実施例では、Ｉ／Ｏ宛先ハンドルは要求ノードから管理ノードへのＩ／Ｏ要求に添えられ、Ｉ／Ｏ要求とは別に管理ノードからディスクコントローラへと送られる。
【００４９】
他の実施例に従うと、Ｉ／Ｏ宛先ハンドルは未解決の読出要求を一意に識別するので、要求されたデータがディスクコントローラから要求ノードに到着し、バッファキャッシュ内の特定の記憶場所に与えられると、要求されたデータが到着したという事実がロック要求の許可を示す。したがって、ロック許可をディスクコントローラから要求ノードへの通信において送ることが必要ではない。代替的実施例では、ロック許可が要求ノードによって必要とされれば、管理ノードがロック許可を（Ｉ／Ｏ要求の転送とは別に）要求ノードに戻すことができるか、またはディスクコントローラがロック許可を要求ノードに送ることができる。
【００５０】
例
図３および図６を参照して、要求ノード３０２上でプロセッサ３０４が開始する処理がディスク３７６上にあるデータブロック３７９を要求する（ステップ６０５）状況を考える。上述のように、データブロック３７９は管理ノード３２２内のプロセッサ３２４および３２６に対して実行する処理によって管理される。
【００５１】
ステップ６１０において、プロセッサ３０４はデータブロック３７９の受取りのためにバッファキャッシュ３１２の一部を割当てる。ステップ６１５において、Ｉ／Ｏ宛先ハンドル３１４が要求ノード３０２内においてオペレーティングシステムの呼出によって発生される。Ｉ／Ｏ宛先ハンドルはステップ６１０においてデータブロック３７９のために割当てられたバッファキャッシュ３１２の部分を識別する。次にステップ６２０において、ロック要求、読出要求およびＩ／Ｏ宛先ハンドル３１４を含むＩＯ要求が要求ノード３０２からネットワークドライバ３０８によって管理ノード３２２に送られる。
【００５２】
ステップ６２５において、管理ノード３２２内のネットワークドライバ３２８が要求ノード３０２内のネットワークドライバ３０８からＩ／Ｏ要求を受取る。管理ノード３２２内のプロセッサ３２４がビジーではなく、プロセッサ３２６がビジーであると想定する。（両方のプロセッサがビジーであれば、そのプロセッサの一方、通常は管理ノード３２２内のデフォルトのプロセッサがＩ／Ｏ要求を処理するタスクを割当てられるであろう。）管理ノード３２２内のプロセッサ３２４はステップ６３０において要求ノード３０２にロック要求を許可し、ステップ６３２において、管理ノード３２２が要求されたデータの論理アドレスを物理アドレスに変換する。（物理アドレスは論理アドレスではなくＩ／Ｏ要求とともに送られる。）次にステップ６３５において、管理ノード３２２はＩ／Ｏコントローラ３３０を介してＩ／Ｏ要求をディスクコントローラ３７０に転送する。Ｉ／Ｏネットワーク３５５の構成の中には、Ｉ／Ｏ要求が解体され、Ｉ／Ｏ宛先ハンドル３１４が別個のメッセージで送られ得るものもある。
【００５３】
ステップ６４０において、ディスクコントローラ３７０は管理ノード３２２内のＩ／Ｏコントローラ３３０からＩ／Ｏ要求（およびＩ／Ｏ宛先ハンドル３１４）を受取る。次にステップ６４５において、ディスクコントローラ３７０はデータブロック３７９をフェッチすることによってＩ／Ｏ要求を処理する。ステップ６５０において、ディスクコントローラ３７０は、要求ノード３１２内のバッファキャッシュ３１２にアドレス指定されたデータブロック３７９をＩ／Ｏ宛先ハンドル３１４とともに送る。
【００５４】
ステップ６５５において、要求ノード３０２内のコントローラ３１０がデータブロック３７９を受取る。データブロック３７９はＩ／Ｏコントローラ３１０によって処理され、ステップ６６０において、それは、データブロック３７９をバッファキャッシュ３１２のＩ／Ｏ宛先ハンドル３１４によって識別されたアドレスへと移動する。Ｉ／Ｏ要求を開始したプロセッサ３０４はステップ６６５においてＩ／Ｏコントローラ３１０によってデータブロック３７９の到着を通知され、処理が完了する。
【００５５】
上述の実施例において、データブロック３７９の到着は要求ノード３０２が発生したロック要求が許可されたことを意味することに注意されたい。しかしながら、代替的実施例において、ロック許可はディスクコントローラ３７０または管理ノード３２２によって明らかに要求ノード３０２に与えられ得るであろう。
【図面の簡単な説明】
【図１】  従来のキャッシュコヒーレンス共用ディスクコンピュータシステムのブロック図である。
【図２】  従来のキャッシュコヒーレンスプロトコルのための通信経路を示すフロー図である。
【図３】  この発明の実施例に従うキャッシュコヒーレンス共用ディスクコンピュータシステムのブロック図である。
【図４】  この発明の代替的実施例に従うキャッシュコヒーレンス共用ディスクコンピュータシステムのブロック図である。
【図５】  この発明の実施例に従うキャッシュコヒーレンスプロトコルのための通信経路を示すフロー図である。
【図６】  この発明の実施例に従うデータ要求を扱うための工程を示すフロー図である。
【図１】
0003748774.tif 000002
【図２】
0003748774.tif 000003
【図３】
0003748774.tif 000004
【図４】
0003748774.tif 000005
【図５】
0003748774.tif 000006
【図６】
0003748774.tif 000007