(57)【特許請求の範囲】
【請求項１】
複数のディスク装置を複数のディスクコントローラで共有するディスクアレイ装置において、
前記各ディスクコントローラ間の通信に用いられる信号線を具備すると共に、
前記各ディスクコントローラは、
前記ディスク装置への書き込みデータを当該書込みデータが書き込まれる前記ディスク装置上のディスク領域に対応付けて確保されたキャッシュ領域に格納すると共に、前記ディスク装置からの読み出しデータを当該読み出しデータが格納されている前記ディスク装置上のディスク領域に対応付けて確保されたキャッシュ領域に格納するキャッシュメモリと、
自ディスクコントローラと所定のインタフェースを介して接続されるホスト装置から当該自ディスクコントローラに与えられたアクセス要求に関する制御情報であって、アクセスされるべきディスク領域を指定するアドレス情報を含む制御情報が当該ディスク領域に対応付けられたキャッシュ領域の排他使用状態が解除されるまで登録される第１の制御情報テーブルと、他のディスクコントローラと所定のインタフェースを介して接続されるホスト装置から当該他のディスクコントローラに与えられて当該他のディスクコントローラの制御情報転送制御機構により転送されたアクセス要求に関する制御情報であって、アクセスされるべきディスク領域を指定するアドレス情報を含む制御情報が当該ディスク領域に対応付けられたキャッシュ領域の排他使用状態が解除されるまで登録される第２の制御情報テーブルとを格納するためのメモリと、
ホスト装置から自ディスクコントローラに与えられたアクセス要求に関する制御情報を前記信号線を介して他のディスクコントローラへ転送する制御を行う制御情報転送制御機構と、
ホスト装置から自ディスクコントローラに与えられたアクセス要求に関する制御情報である第１の制御情報を、前記第１及び第２の制御情報テーブルに登録されている他の制御情報である第２の制御情報と比較することにより、前記第１の制御情報に含まれているアドレス情報の指定するディスク領域と重複するディスク領域を指定する第２の制御情報を前記第１及び第２の制御情報テーブルから検索する検索機構と、
前記検索機構により前記重複するディスク領域を指定する第２制御情報が検索されないという条件に基づき、当該条件を満たした段階で、前記第１の制御情報に含まれているアドレス情報の指定するディスク領域に対応付けられたキャッシュ領域を排他使用状態に設定する状態制御機構とを具備し、
制御情報転送制御機構は、ホスト装置から自ディスクコントローラに与えられたアクセス要求に関する制御情報に含まれているアドレス情報の指定するディスク領域に対応付けられたキャッシュ領域が前記状態制御機構によって排他使用状態に設定された場合、当該制御情報を他のディスクコントローラへ転送し、
前記状態制御機構は、他のディスクコントローラの制御情報転送制御機構により制御情報が転送された場合、当該転送された制御情報に含まれているアドレス情報の指定するディスク領域に対応付けられたキャッシュ領域を排他使用状態に設定する
ことを特徴とするディスクアレイ装置。
【請求項２】
前記状態制御機構は、ホスト装置から自ディスクコントローラに与えられたアクセス要求に関する制御情報に含まれているアドレス情報の指定するディスク領域に対応付けられたキャッシュ領域を排他使用状態に設定した場合には、当該制御情報を自ディスクコントローラの前記制御情報転送制御機構により他のディスクコントローラに転送させて当該他のディスクコントローラに対して排他使用を通知して応答を待ち、他のディスクコントローラの前記制御情報転送制御機構により転送されたアクセス要求に関する制御情報に含まれているアドレス情報の指定するディスク領域に対応付けられたキャッシュ領域を排他使用状態に設定した場合には、排他使用状態への設定完了を当該制御情報の転送元のディスクコントローラに通知する通知回路を有することを特徴とする請求項１記載のディスクアレイ装置。
【請求項３】
前記ディスクコントローラ間の排他制御の実行権の確保を制御する排他制御機構であって、他のディスクコントローラからの排他制御実行権確保要求が前記信号線を介して送られていない状態で排他制御実行権が必要となった場合、自ディスクコントローラを当該排他制御実行権の確保状態に設定すると共に他のディスクコントローラに対して排他制御実行権確保要求を前記信号線を介して送り、排他制御実行権を確保していない状態で他のディスクコントローラから前記信号線を介して排他制御実行権確保要求が送られた場合に、当該他ディスクコントローラが排他制御実行権を確保している状態に設定する排他制御機構とを更に具備することを特徴とする請求項１記載のディスクアレイ装置。
【請求項４】
前記ディスクコントローラ間の排他制御の実行権の確保と解放を制御する排他制御機構であって、他のディスクコントローラからの排他制御実行権確保要求が前記信号線を介して送られていない状態で排他制御実行権が必要となった場合、自ディスクコントローラを当該排他制御実行権の確保状態に設定すると共に他のディスクコントローラに対して排他制御実行権確保要求を前記信号線を介して送り、排他制御実行権を確保していない状態で他のディスクコントローラから前記信号線を介して排他制御実行権確保要求が送られた場合に、当該他ディスクコントローラが排他制御実行権を確保している状態に設定し、他のディスクコントローラから排他使用状態への設定完了が通知された場合に、自ディスクコントローラを前記排他制御実行権の確保状態から解放する排他制御機構とを更に具備することを特徴とする請求項２記載のディスクアレイ装置。
【請求項５】
自ディスクコントローラと他のディスクコントローラとの間で、前記信号線を介して、キャッシュデータを転送する制御を行うキャッシュデータ転送制御機構と、
他のディスクコントローラの前記キャッシュデータ転送制御機構により転送されたキャッシュデータを、当該他のディスクコントローラの前記制御情報転送制御機構により転送されたアクセス要求に関する制御情報に基づいて前記キャッシュメモリに書き込ませることで、当該他のディスクコントローラの前記キャッシュメモリの内容に自ディスクコントローラの前記キャッシュメモリの内容を一致させるキャッシュ一致化機構とを更に具備することを特徴とする請求項１記載のディスクアレイ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のディスク装置を複数のディスクコントローラで共有する構成のディスクアレイ装置に係り、特にディスクコントローラ間の排他制御に好適なディスクアレイ装置に関する。
【０００２】
【従来の技術】
ディスク装置、例えハードディスク装置（以下、ＨＤＤと称する）を複数備えたディスクアレイ装置として、当該複数のＨＤＤを複数のディスクコントローラ（以下、コントローラと称する）で共有する構成をとるものが知られている。このような構成のディスクアレイ装置には、コントローラが２重化以上の構成となるため信頼性が向上するという利点がある。また、通常の使用時には各コントローラが備える複数のインタフェースを使用できるため、１台のコントローラで動作させるよりも性能が向上するという利点もある。
【０００３】
上記の構成をとるディスクアレイ装置では、異なるコントローラがＨＤＤを共有する。したがって、異なるコントローラが同時に同じＨＤＤへの書き込みを実行した場合などの実行結果を保証するために、コントローラ間の排他制御が必要となる。また、各コントローラが実装するキャッシュメモリの情報を一致させるための制御が必要となる。
【０００４】
この種の従来のディスクアレイ装置では、排他制御、及びキャッシュの一致化制御を、コントローラに実装されているＣＰＵのファームウェア（マイクロプログラム）を使用して、コントローラ間で通信を行い、ソフトウェア的に処理していた。
【０００５】
【発明が解決しようとする課題】
上記したように従来のディスクアレイ装置では、複数のコントローラの間の排他制御、及びキャッシュの一致化制御をファームウェアを使用して実行していた。
【０００６】
このため従来のディスクアレイ装置では、コントローラのＣＰＵの負荷が高くなると共に処理に時間がかかるなどの問題があった。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、複数のディスク装置を共有使用する複数のコントローラの間の排他制御が、ＣＰＵ負荷を軽滅しながら、短時間で行えるディスクアレイ装置を提供することにある。
【０００８】
本発明の他の目的は、キャッシュメモリを内蔵する複数のコントローラの間の排他制御とキャッシュの一致化制御とが、ＣＰＵ負荷を軽滅しながら、短時間で行えるディスクアレイ装置を提供することにある。
【０００９】
【課題を解決するための手段】
本発明は、複数のディスク装置を複数のディスクコントローラで共有するディスクアレイ装置において、上記各コントローラ間の通信に用いられる信号線を備えると共に、上記各コントローラに、自コントローラと所定のインタフェースを介して接続されるホスト装置から当該自コントローラに与えられたアクセス要求に関する制御情報が登録される第１の制御情報テーブルと、他コントローラと所定のインタフェースを介して接続されるホスト装置から当該他コントローラに与えられたアクセス要求に関する制御情報が登録される第２の制御情報テーブルとを格納するためのメモリと、ホスト装置から自コントローラに与えられたアクセス要求に関する制御情報を上記信号線を介して他コントローラへ転送する制御を行う制御情報転送制御機構と、ホスト装置から自コントローラに与えられた、または他コントローラから転送されたアクセス要求に関する制御情報と、上記第１及び第２の制御情報テーブルの登録制御情報との比較により、アクセス領域が重複する別の登録制御情報を検索する検索機構と、この検索機構によりアクセス領域が重複する別の登録制御情報が検索されないという条件に基づき、当該条件を満たした段階で、上記ホスト装置から自コントローラに与えられたアクセス要求に関する制御情報または上記他コントローラから転送されたアクセス要求に関する制御情報の指定するアクセス領域を排他使用状態に設定する状態制御機構とを備えたことを特徴とする。
このような構成においては、複数のコントローラの間の排他制御がコントローラ内のＣＰＵ負荷を軽滅しながら速やかに行える。
【００１０】
ここで、状態制御機構に、ホスト装置から自コントローラに与えられたアクセス要求に関する制御情報の指定するアクセス領域を排他使用状態（ロック状態）に設定した場合には、当該制御情報を上記制御情報転送制御機構により他コントローラに転送させて当該コントローラに対してロックを通知して応答を待ち、他コントローラから転送されたアクセス要求に関する制御情報の指定するアクセス領域をロック状態に設定した場合には、ロック設定完了を当該制御情報の転送元のコントローラに通知する通知回路を設けるとよい。
このような通知回路を設けることで、コントローラ間の排他制御が確実に且つ高速に行える。
【００１１】
また、コントローラ間の排他制御の実行権（排他フラグ）の確保を制御する排他制御機構を追加し、他コントローラからの排他制御実行権確保要求が上記信号線を介して送られていない状態で排他制御実行権が必要となった場合、自コントローラを当該排他制御実行権の確保状態に設定すると共に他コントローラに対して排他制御実行権確保要求を上記信号線を介して送り、排他制御実行権を確保していない状態で他コントローラから上記信号線を介して排他制御実行権確保要求が送られた場合に、当該他コントローラが排他制御実行権を確保している状態に設定する構成とするとよい。
このような構成においては、コントローラ間の排他制御の実行権の確保が効率的に行え、排他制御実行権の確保状態での排他制御を実現できる。
【００１２】
また、上記排他制御機構に、他コントローラから排他使用状態への設定完了（ロック設定完了）が通知された場合に、自コントローラを排他制御実行権の確保状態から解放する構成とするとよい。
このような構成においては、従来のコントローラのように、ホスト装置からのアクセス要求の実行が完了するまでロック状態に設定されるのと異なり、他コントローラでのロック状態への設定完了毎に自コントローラのロック状態が解除されるため、複数のコントローラ間の排他制御が効率的に行える。この場合、自コントローラのロック解除を他コントローラに通知して、当該他コントローラでのロック状態を解除させる構成にすればなおよい。
【００１３】
また、ホスト装置から自コントローラに与えられたアクセス要求に関する制御情報の上記第１の制御情報テーブルを対象とする登録と削除、及び他コントローラから転送されたアクセス要求に関する制御情報の上記第２の制御情報テーブルを対象とする登録と削除のためのテーブル更新を行うテーブル更新機構を追加するとよい。特に、ロック解除時に、上記更新機構により該当する制御情報を削除（例えば論理的に削除）するとよい。
【００１４】
また本発明は、ディスク装置の一部の写しが置かれるキャッシュメモリと、自コントローラと他コントローラとの間で、上記信号線を介して、キャッシュデータを転送する制御を行うキャッシュデータ転送制御機構と、他コントローラのキャッシュデータ転送制御機構により転送されたキャッシュデータを、当該他コントローラの上記制御情報転送制御機構により転送されたアクセス要求に関する制御情報に基づいてキャッシュメモリに書き込ませることで、当該他コントローラのキャッシュメモリの内容に自コントローラのキャッシュメモリの内容を一致させるキャッシュ一致化機構とを更に備えたことを特徴とする。
このような構成においては、コントローラ間の排他制御だけでなくキャッシュ一致化制御もコントローラ内のＣＰＵ負荷を軽滅しながら、短時間で行える。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００１６】
図１は本発明の一実施形態に係るディスクアレイ装置を備えた計算機システムのブロック構成図である。
【００１７】
図１（ａ）に示すように、計算機システムは、例えば２台のホスト装置（以下、ホストと称する）Ａ１，Ａ２と、ディスクアレイ装置（以下、ディスクアレイと称する）Ａ３とを備えて構成されている。ホストＡ１とディスクアレイＡ３とは、ＳＣＳＩ（Small Computer System Interface）、ファイバチャネルなどのインタフェースＳ１によって接続されている。ホストＡ２とディスクアレイＡ３とは、同様のインタフェースＳ２によって接続されている。
【００１８】
ディスクアレイＡ３は、図１（ｂ）に示すように、例えば２台のコントローラ（ディスクコントローラ）Ｂ１，Ｂ２と、複数台のＨＤＤ（ハードディスク装置）Ｂ３とを備えて構成されている。コントローラＢ１とコントローラＢ２とは、コントローラ間通信用の信号線Ｓ３によって接続されている。また各ＨＤＤ  Ｂ３は、ＳＣＳＩ、ファイバチャネルなどのインタフェースＳ４によってコントローラＢ１，Ｂ２と接続されている。コントローラＢ１，Ｂ２はＨＤＤ  Ｂ３を共有して使用する。
【００１９】
コントローラＢ１（Ｂ２）は、図１（ｃ）に示すように、Ｉ／Ｏ制御部Ｃ１と、ＣＰＵ  Ｃ２と、メモリＣ３と、ＨＤＤ制御部Ｃ４と、キャッシュメモリＣ５と、キャッシュ制御部Ｃ６と、排他制御部Ｃ７とを備えて構成されている。
【００２０】
Ｉ／Ｏ制御部Ｃ１は、インタフェースＳ１（Ｓ２）によりホストＡ１（Ａ２）と接続され、当該ホストＡ１（Ａ２）とのインタフェースのプロトコル制御及びデータ転送の制御を行う。
【００２１】
ＣＰＵ  Ｃ２は、コントローラＢ１（Ｂ２）の全体の制御を行う。
メモリＣ３は制御情報などを格納するのに用いられる。
ＨＤＤ制御部Ｃ４は、キャッシュ制御部Ｃ６とＨＤＤ  Ｂ３との間のデータ転送の制御を行う。
【００２２】
キャッシュメモリＣ５は、キャッシュ制御部Ｃ６の制御に従ってＨＤＤ  Ｂ３への書き込みデータ、ＨＤＤ  Ｂ３からの読み出しデータ、コントローラＢ１（Ｂ２）の制御情報などを格納するのに用いられる。
キャッシュ制御部Ｃ６は、キャッシュＣ５への書き込み、及びキャッシュメモリＣ５からの読み出しを制御する。
排他制御部Ｃ７はコントローラＢ１，Ｂ２での通信を制御する。
【００２３】
Ｉ／Ｏ制御部Ｃ１、ＣＰＵ  Ｃ２、メモリＣ３、ＨＤＤ制御部Ｃ４、キャッシュ制御部Ｃ６及び排他制御部Ｃ７は、内部バスとしての信号線Ｓ５により相互接続されている。
【００２４】
図２は排他制御部Ｃ７のブロック構成図である。
排他制御部Ｃ７は、制御情報受信制御回路Ｃ７１と、ＤＭＡコントローラＣ７２と、受信データメモリＣ７３と、他コント送信制御回路Ｃ７４と、他コント受信制御回路Ｃ７５と、排他制御回路Ｃ７６と、状態制御回路Ｃ７７と、比較回路Ｃ７８とを備えて構成されている。
【００２５】
制御情報受信制御回路Ｃ７１は、ホストＡ１（Ａ２）からＩ／Ｏ制御部Ｃ１に転送されるＨＤＤアクセスの制御情報を受信して、受信データメモリＣ７３に格納する。
ＤＭＡコントローラＣ７２は、受信データメモリＣ７３のデータを、メモリＣ３またはキャッシュメモリＣ５に転送する。
受信データメモリＣ７３は、制御情報受信制御回路Ｃ７１、及び他コント受信制御回路Ｃ７５で受信されたデータを格納する。
【００２６】
他コント送信制御回路Ｃ７４は、受信データメモリＣ７３のデータを信号線Ｓ３を介して他コントローラに送信する。
他コント受信制御回路Ｃ７５は、他コントローラから転送されたデータを受信して受信データメモリＣ７３に格納する。
【００２７】
排他制御回路Ｃ７６は、コントローラＢ１，Ｂ２間の排他を制御する。排他の制御は、信号線Ｓ３の使用権を所有することで実現する。
状態制御回路Ｃ７７は、排他制御部Ｃ７内の各部（Ｃ７１〜Ｃ７６）の状態を監視して排他制御部Ｃ７の動作の制御を行う。
比較回路Ｃ７８は、ＤＭＡコントローラＣ７２で読み出した制御情報Ｄまたは制御情報Ｅと、受信データメモリＣ７３に格納されたデータとを比較する。
【００２８】
図３は、コントローラＢ１（Ｂ２）内の記憶部、例えばメモリＣ３またはキャッシュメモリＣ５のいずれかに格納される制御情報テーブルのデータ構造例を示す。
まず、コントローラＢ１（Ｂ２）自身（以下、自コントローラと称する）の情報（制御情報）Ｄのテーブル（自コントテーブル）は、当該コントローラが受け付けるコマンド数ｎ個のフィールドＤ１〜Ｄｎを持つ。各フイールドＤｘ（ｘ＝１〜ｎ）は、Ｄｘ１〜Ｄｘ５の各情報から構成される。
【００２９】
Ｄｘ１は制御情報のフラグであり、０，１，２の値のいずれかをとる。Ｄｘ１＝０のときは、該当するフィールドＤｘが無効であることを示す。Ｄｘ１＝１のときは、フィールドＤｘは有効であるが、つまりフィールドＤｘには有効な情報が登録されているが、ロックされていない状態を示す。Ｄｘ１＝２のときは、情報は現在書き換え中であり、ロックされていることを示す。
Ｄｘ２はコマンドＩＤ（コマンド識別子）、Ｄｘ３はＬＵＮ番号（論理ユニット番号）、Ｄｘ４はアドレス（ディスクアドレス）、Ｄｘ５はサイズ（データサイズ）である。
【００３０】
また、コントローラＢ１（Ｂ２）内のメモリＣ３またはキャッシュメモリＣ５には、他のコントローラＢ２（Ｂ１）の情報（制御情報）Ｅも格納される。この他コントローラの情報Ｅのテーブル（他コントテーブル）のデータ構造は自コントローラの情報Ｄのテーブルと同様であり、フィールドＥ１〜Ｅｎを持つ。そして、各フイールドＥｘ（ｘ＝１〜ｎ）はＤｘ１〜Ｄｘ５に対応するＥｘ１〜Ｅｘ５の各情報から構成される。
【００３１】
図４は、コントローラＢ１（Ｂ２）内の記憶部、例えばメモリＣ３またはキャッシュメモリＣ５のいずれかに格納されるキャッシュディレクトリ情報テーブルのデータ構造例を示す。
【００３２】
キャッシュデイレクトリ情報Ｆのテーブルは、キャッシュメモリＣ５のデータ登録情報であり、キャッシュ容量分のフィールドＦ１〜Ｆｎを持つ。各フイールドＦｘ（ｘ＝１〜ｎ）は、Ｆｘ１〜Ｆｘ５の各情報から構成される。
【００３３】
Ｆｘ１はフイールドＦｘのフラグであり、０，１，２の値のいずれかをとる。Ｆｘ１＝０のときは、該当するフイールドＦｘが無効であることを示す。Ｆｘ１＝１のときはフイールドが有効であり、キャッシュメモリＣ５にはＨＤＤ  Ｂ３と同じデータが格納されていることを示す。Ｆｘ１＝２のときはフイールドが有効であり、ＨＤＤ  Ｂ３とは異なるデータが格納されていることを示す。
Ｆｘ２ははＬＵＮ番号、Ｆｘ４はディスクアドレス、Ｄｘ５はキャッシュアドレスである。
【００３４】
次に本実施形態の動作について、ホストＡ１からディスクアレイＡ３へデータライト（ライトアクセス）が行われる場合のコントローラＢ１，Ｂ２の動作を例に、図５乃至図７のフローチャートを参照して説明する。ここでは、図３及び図４に示した制御情報は、コントローラＢ１，Ｂ２内のメモリＣ３に格納されるものとする。
【００３５】
まずコントローラＢ１，Ｂ２の動作は、大きく分けて以下の３つの処理
（１）排他処理（ステップ１０１〜１１２，２０１〜２０５の処理）
（２）データ転送（ステップ１１３〜１１８，２０６〜２０８の処理）
（３）終了処理（ステップ１１９〜１２３，２０９〜２１２の処理）
からなる。
【００３６】
それぞれの処理の詳細は次の通りである。
（１）排他処理
＜ステップ１０１＞
まず、ホストＡ１からのライト要求が、インタフェースＳ１を介して、ディスクアレイＡ３のコントローラＢ１に入力され、当該コントローラＢ１内のＩ／Ｏ制御部Ｃ１で受信されたものとする。
【００３７】
＜ステップ１０２＞
ライト要求を受信したＩ／Ｏ制御部Ｃ１は、ライト要求の制御情報（ライト要求情報）Ｇ（コマンドＩＤ、ＬＵＮ番号、ディスクアドレス、サイズ）を自コントローラ（Ｂ１）の情報Ｄのテーブル（自コントテーブル）の未使用フィールド（フラグＤｉ１＝０のフィールド）Ｄｉ（ｉは１〜ｎのいずれか）に登録し、つまりライト要求情報Ｇ中のコマンドＩＤ（Ｇ２）、ＬＵＮ番号（Ｇ３）、ディスクアドレス（Ｇ４）、サイズ（Ｇ５）をＤｉ２、Ｄｉ３、Ｄｉ４、Ｄｉ５に登録し、フラグＤｉ１＝１に設定する。
【００３８】
なお、ライト要求受信をＩ／Ｏ制御部Ｃ１からＣＰＵ  Ｃ２に、割り込み信号を用いて通知し、この通知を受けたＣＰＵ  Ｃ２が上記ステップ１０２を行うようにしてもよい。ここでは、Ｉ／Ｏ制御部Ｃ１がＣＰＵ  Ｃ２に通知する代わりに、ＣＰＵ  Ｃ２がＩ／Ｏ制御部Ｃ１に対してライト要求受信の有無を定期的に問い合わせるようにしてもよい。
【００３９】
Ｉ／Ｏ制御部Ｃ１（またはＣＰＵ  Ｃ２）は、ライト要求情報Ｇを排他制御部Ｃ７に転送する。排他制御部Ｃ７の制御情報受信制御回路Ｃ７１は、このライト要求情報Ｇを受信すると、ライト要求情報Ｇ中のコマンドＩＤ（Ｇ２）、ＬＵＮ番号（Ｇ３）、ディスクアドレス（Ｇ４）、サイズ（Ｇ５）を受信データメモリＣ７３の図示せぬレジスタＲ２、Ｒ３、Ｒ５１、Ｒ４に格納する。
【００４０】
＜ステップ１０３＞
ＣＰＵ  Ｃ２は、ステップ１０２で自コントテーブルのフィールドＤｉに登録された、自コントローラの情報ＤｉのＬＵＮ番号Ｄｉ３、アドレス（ディスクアレイ）Ｄｉ４を、キャッシュディレクトリ（ｄｉｒ）情報Ｆの各フィールドＦｘに登録されているＬＵＮ番号Ｆｘ２、Ｆｘ３と比較して、一致するものを検索する。
【００４１】
一致するものが存在するキャッシュヒットの場合は、キャッシュメモリＣ５にライト要求で指定されたＨＤＤ  Ｂ３のデータが存在するので、該当するフィールドＦｘ中のキャッシュアドレスＦｘ４を排他制御部Ｃ７に通知して、Ｆｘ１＝２にする。
排他制御部Ｃ７は、受信データメモリＣ７３の図示せぬレジスタＲ５にキャッシュアドレスＦｘ４を格納する。
【００４２】
一方、一致するものが存在しないキャッシュミスヒットの場合は、何もせずにステップ１０４に進む。
【００４３】
＜ステップ１０４＞
ＣＰＵ  Ｃ２は新たなキャッシュメモリ上の領域Ｆｙ４を確保する。但し、ステップ１０６以降では、キャッシュヒット、ミスヒットの場合に無関係に共通の処理となることから、以後の説明ではキャッシュヒットの場合のＦｘ４（Ｆｘ）を用いることとする。
【００４４】
＜ステップ１０５＞
ＣＰＵ  Ｃ２はライト要求情報ＧのＬＵＮ番号（Ｇ３）、ディスクアドレス（Ｇ４）、確保した領域Ｆｘ４のキャッシュアドレスを、それぞれキャッシュディレクトリ情報Ｆの対応するフィールドＦｘ中のＦｘ２、Ｆｘ３、Ｆｘ４に登録し、フラグＦｘ１をＦｘ１＝２にする。そしてＣＰＵ  Ｃ２は、キャッシュアドレスＦｘ４を、排他制御部Ｃ７に通知する。
排他制御部Ｃ７は、受信データメモリＣ７３内の図示せぬレジスタＲ５にキャッシュアドレスＦｘ４を格納する。
【００４５】
＜ステップ１０６＞
コントローラＢ１のＣＰＵ  Ｃ２は、上記ステップ１０３のキャッシュディレクトリチェックでキャッシュヒットを検出した場合には直ちに、キャッシュミスヒットを検出した場合にはステップ１０４，１０５の後に、排他制御部Ｃ７に対して起動をかける。起動は、排他制御部Ｃ７の受信データメモリＣ７３の内部に起動レジスタＲ１（図示せず）を用意して、当該起動レジスタＲ１に所定値、例えば１を書き込むことで行う。
【００４６】
起動レジスタＲ１に１がセットされた以降のステップ１０６の処理と、ステップ１０７，１１１の処理とは、コン卜ローラ（自コントローラ）Ｂ１の排他制御部Ｃ７が実行し、ステップ２０１〜２０５の処理はコントローラ（他コントローラ）Ｂ２の排他制御部Ｃ７が実行する。
排他制御部Ｃ７は、起動レジスタＲ１に１が設定されると、排他フラグを確保するための処理を行う。この排他フラグを確保したコントローラがコントローラＢ１，Ｂ２間の排他制御の管理権（実行権）を持つマスターとなる。排他フラグは排他制御部Ｃ７に置かれて制御される。ここでは、コントローラＢ１がマスターとされるとする。
【００４７】
もし、コントローラＢ２側がマスターとなって排他フラグの確保を行う場合には、コントローラＢ１の排他制御部Ｃ７に対して信号線Ｓ３を用いて排他フラグの確保を要求することになる。
【００４８】
信号線Ｓ３は１ビット信号線Ｓ３１，Ｓ３２，Ｓ３３（図示せず）を含んでいる。Ｓ３１はコン卜ローラＢ１，Ｂ２間の排他制御の実行権を持つコントローラ（マスター）から出力される排他フラグ確保要求信号の信号線として用いられる。また、Ｓ３２はマスターからの排他フラグ確保要求に対する応答としての排他フラグ確保通知信号の信号線として用いられ、Ｓ３３はマスターからの排他フラグの解放要求信号の信号線として用いられる。したがって、もしコン卜ローラＢ２がマスターとなった場合には、当該コン卜ローラＢ２の排他制御部Ｃ７は、信号線Ｓ３のうちのＳ３１を１にすることでコン卜ローラＢ１に対して排他フラグの確保を要求することになる。
【００４９】
さてコン卜ローラＢ１では、起動レジスタＲ１に１が設定されると、排他制御部Ｃ７内の状態制御回路Ｃ７７から有効な（値が１の）排他フラグ確保要求信号（Ｓ９１とする）が出力される。同じ排他制御部Ｃ７内の排他制御回路Ｃ７６は、この状態制御回路Ｃ７７からの排他フラグ確保要求信号Ｓ９１の状態と信号線Ｓ３上のＳ３１の状態（コン卜ローラＢ２側からの排他フラグ確保要求信号Ｓ３１の状態）とを調べ、要求のある方に排他フラグを与える。排他フラグは、排他制御回路Ｃ７６内に用意されるコン卜ローラＢ１用の排他レジスタＲ６と、コン卜ローラＢ２用の排他レジスタＲ７により、それぞれ提供される。そこで以下の説明では、Ｒ６，Ｒ７を排他フラグと呼ぶ。排他フラグＲ６，Ｒ７は同時に１にならないように制御される。
【００５０】
コン卜ローラＢ１の排他制御回路Ｃ７６内の排他フラグＲ６は、Ｒ６＝０、Ｒ７＝０のときに、自コン卜ローラＢ１の状態制御回路Ｃ７７からの排他フラグ確保要求信号Ｓ９１が１となると、Ｒ６＝１になる。これが“排他フラグの確保”であり、コン卜ローラＢ１がマスターとなる。この場合、コン卜ローラＢ１の排他制御回路Ｃ７６は、信号線Ｓ３上の排他フラグ確保要求信号Ｓ３１を１にして、コン卜ローラＢ２に対して排他フラグの確保を要求する。
【００５１】
さて、コン卜ローラＢ２の排他制御回路Ｃ７６内の排他フラグＲ６は、Ｒ６＝０、Ｒ７＝０のときに、上記のようにコン卜ローラＢ１側からの排他フラグ確保要求信号Ｓ３１が１になると、Ｒ６＝１になる（排他フラグの確保）。コン卜ローラＢ２側でＲ６＝１になると、当該コン卜ローラＢ２の排他制御回路Ｃ７６は信号線Ｓ３のＳ３２の状態（排他フラグ確保通知信号Ｓ３２）を１にして（コン卜ローラＢ１からの排他フラグ確保要求に対する）排他フラグの確保をコン卜ローラＢ１に通知する。
【００５２】
状態制御回路Ｃ７７からの要求信号の１つに、排他フラグの解放要求信号Ｓ９２がある。コン卜ローラＢ１内の状態制御回路Ｃ７７は、確保した排他フラグを解放できるようになると、排他フラグ解放要求信号Ｓ９２を１にする。すると、同じコン卜ローラＢ１内の排他制御回路Ｃ７６は、Ｒ６＝０に戻す。これが“排他フラグの解放”である。そして排他制御回路Ｃ７６は、信号線Ｓ３のＳ３３の状態（解放要求信号Ｓ３３）を１にする。コン卜ローラＢ２の排他制御回路Ｃ７６は、コン卜ローラＢ１側からの（排他フラグの）解放要求信号Ｓ３３が１になると、当該コン卜ローラＢ１側の排他フラグＲ６をＲ６＝０に戻す（排他フラグの解放）。
【００５３】
コン卜ローラＢ２側がマスターとなる場合は上記と逆である。即ち、コン卜ローラＢ１の排他制御回路Ｃ７６内の排他フラグＲ７は、Ｒ６＝０、Ｒ７＝０のときに、コン卜ローラＢ２からの排他フラグ確保要求信号Ｓ３１が１になると、Ｒ７＝１になる（排他フラグの確保）。Ｒ７＝１になると、コン卜ローラＢ１の排他制御回路Ｃ７６は信号線Ｓ３のＳ３２の状態（排他フラグ確保通知信号Ｓ３２）を１にして（コン卜ローラＢ２からの排他フラグ確保要求に対する）排他フラグの確保をコン卜ローラＢ２に通知する。コン卜ローラＢ２は、確保した排他フラグを解放できるようになると、信号線Ｓ３のＳ３３の状態（解放要求信号Ｓ３３）を１にする。コン卜ローラＢ１側の排他制御回路Ｃ７６は、コン卜ローラＢ２からの（排他フラグの）解放要求信号Ｓ３３が１になると、Ｒ７＝０に戻す（排他フラグの解放）。
【００５４】
＜ステップ１０７＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、ＤＭＡコントローラＣ７２を起動して、メモリＣ３に格納されている自コントローラの情報Ｄを比較回酪Ｃ７８に送る。
比較回路Ｃ７８は、情報Ｄのうち、フラグＤｚ１がＤｚ１＝１またはＤｚ１＝２のフィールドＤｚを対象に、当該Ｄｚ中のＬＵＮ番号Ｄｚ３、アドレスＤｚ４と、受信データメモリＣ７３内のレジスタＲ３、Ｒ５１（の内容）とが一致していて、且つ当該Ｄｚ中のコマンドＩＤ  Ｄｚ２とレジスタＲ２（の内容）とが一致しないもの、つまり別のコマンドＩＤで、同じ領域（ディスク領域、キャッシュ領域）をアクセスするものを検索する。
【００５５】
もし、一致しているものがなかった場合は、現在自コントローラＢ１で同じ領域に対するアクセスを実行していないことから、次のステップ１０８を実行する。
これに対し、一致しているものがあった場合は、現在自コントローラＢ１で同じ領域に対するアクセスを実行しているので、状態制御回路Ｃ７７は一旦排他フラグを解放（排他制御回路Ｃ７６内の排他フラグＲ６をＲ６＝０に）する。そして一定時間待って、再度排他フラグを確保する。その後、再度ステップ１０７を実行する。
【００５６】
＜ステップ１０８＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、ＤＭＡコントローラＣ７２を起動して、メモリＣ３に格納されている他コントローラＢ２の情報Ｅを比較回路Ｃ７８に送る。
比較回路Ｃ７８は、情報Ｅのうち、フラグＥｚ１がＥｚ１＝１またはＥｚ１＝２のフィールドＥｚを対象に、当該Ｅｚ中のＬＵＮ番号Ｅｚ３、アドレスＥｚ４と、受信データメモリＣ７３のレジスタＲ３、Ｒ５１（の内容）とが一致していて、且つ当該Ｅｚ中のコマンドＩＤ  ＥＺ２とレジスタＲ２（の内容）とが一致しないものを検索する。
【００５７】
もし、一致しているものがなかった場合は、現在他コントローラＢ２で同じ領域に対するアクセスを実行していないことから、次のステップ１０９を実行する。
これに対し、一致しているものがあった場合は、現在他コントローラＢ２で同じ領域に対するアクセスを実行しているので、状態制御回路Ｃ７７は一旦排他フラグを解放する。そして一定時間待って、再度排他フラグを確保する。その後、再度ステップ１０８を実行する。
【００５８】
＜ステップ１０９＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、ＤＭＡコントローラＣ７２を起動して、メモリＣ３内に格納されている情報ＤのフィールドＤｉ中のフラグＤｉ１をＤｉ１＝１からＤｉ１＝２に書き換える。これにより、フィールドＤｉ（中のアドレスＤｉ４）で示されるコン卜ローラＢ１側のキャッシュ領域がロックされたことが示される。
【００５９】
＜ステップ１１０＞
コン卜ローラＢ１の状態制御回路Ｃ７７は他コント送信制御回路Ｃ７４を起動して、自コントローラＢ１の受信データメモリＣ７３のレジスタＲ２、Ｒ３、Ｒ４、Ｒ５、Ｒ５１にそれぞれ格納されているコマンドＩＤ（Ｇ２）、ＬＵＮ番号（Ｇ３）、サイズ（Ｇ５）、キャッシュアドレス（Ｆｘ４）、ディスクアドレス（Ｇ４）、つまりコマンドＩＤ  Ｒ２、ＬＵＮ番号Ｒ３、サイズＲ４、キャッシュアドレスＲ５、ディスクアドレスＲ５１を、信号線Ｓ３経由でコン卜ローラＢ２の排他制御部Ｃ７に転送する。
【００６０】
＜ステップ１１１＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、ステップ１１０を実行すると、コン卜ローラＢ２からの他コントローラへのロック完了通知、つまりコン卜ローラＢ１自身へのロック完了通知を受信するまで待つ。
【００６１】
＜ステップ１１２＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、コン卜ローラＢ２での後述するステップ２１２の実行により当該コン卜ローラＢ２から送られるロック完了通知を受信すると、排他制御回路Ｃ７６で保持・管理しているコン卜ローラＢ１用の排他フラグＲ６をＲ６＝０にして、排他フラグを解放する。
するとコン卜ローラＢ１の状態制御回路Ｃ７７は、先にＩ／Ｏ制御部Ｃ１で適用したような割り込み等の手段を用いて、同じコン卜ローラＢ１のＣＰＵ  Ｃ２に排他制御の完了を通知する。
これによりＣＰＵ  Ｃ２は、ホストＡ１に対してライト要求を受け付けたことを通知する。
【００６２】
＜ステップ２０１＞
さて、コン卜ローラＢ２の排他制御部Ｃ７に設けられた他コント受信制御回路Ｃ７５は、上記ステップ１１０でコン卜ローラＢ１の（状態制御回路Ｃ７７の制御により）他コント送信制御回路Ｃ７４から、コマンドＩＤ（Ｇ２）、ＬＵＮ番号（Ｇ３）、サイズ（Ｇ５）、キャッシュアドレス（Ｆｘ４）、ディスクアドレス（Ｇ４）が転送されると、そのコマンドＩＤ、ＬＵＮ番号、サイズ、キャッシュアドレス、ディスクアドレスを、（コン卜ローラＢ１の受信データメモリＣ７３内のレジスタＲ２、Ｒ３、Ｒ４、Ｒ５、Ｒ５１に相当する）自コントローラＢ２の排他制御部Ｃ７に設けられた受信データメモリＣ７３内のレジスタＲｒ２、Ｒｒ３、Ｒｒ４、Ｒｒ５、Ｒｒ５１（図示せず）に格納する。
【００６３】
＜ステップ２０２＞
コン卜ローラＢ２の状態制御回路Ｃ７７は、ＤＭＡコントローラＣ７２を起動して、受信データメモリＣ７３内のレジスタＲｒ２、Ｒｒ３、Ｒｒ５１、Ｒｒ４の内容（コン卜ローラＢ１から転送されたコマンドＩＤ、ＬＵＮ番号、ディスクアドレス、サイズ）を、メモリＣ３に格納されている他コントローラ（Ｂ１）の情報ＥのフィールドＥｉ中のＥｉ２、Ｅｉ３、Ｅｉ４、Ｅｉ５に登録する。
【００６４】
＜ステップ２０３＞
このステップ２０３では、先にコン卜ローラＢ１側で行われたステップ１０３と同様のディレクトリチェックが行われる。そして、ミスヒットが検出されてステップ１０５と同様の処理が行われた場合は、コン卜ローラＢ２の状態制御回路Ｃ７７は、ＤＭＡコントローラＣ７２を起動して、ステップ１０５で登録したのと同様の情報（Ｒｒ３、Ｒｒ５１、Ｒｒ５の内容）をキャッシュデイレクトリ情報Ｆ（のフィールドＦｘ中のＦｘ２、Ｆｘ３、Ｆｘ４）に登録する。
【００６５】
＜ステップ２０４＞
コン卜ローラＢ２の状態制御回路Ｃ７７は、ＤＭＡコン卜ローラＣ７２を起動して、メモリＣ３に格納されている他コントローラの情報ＥのフィールドＥｉ中のＥｉ１をＥｉ１＝０からＥｉ１＝２に変更する。これにより、フィールドＥｉ（中のアドレスＥｉ４）で示されるコン卜ローラＢ１側で書き換え中のキャッシュ領域に対応する領域（他コント領域）がロックされたことが示される。
【００６６】
＜ステップ２０５＞
コン卜ローラＢ２の状態制御回路Ｃ７７は、他コント送信制御回路Ｃ７４を起動して、処理の完了（他コント領域のロック完了）をコン卜ローラＢ１の排他制御部Ｃ７に通知する。
【００６７】
（２）データ転送
＜ステップ１１３＞
ホストＡ１は、コン卜ローラＢ１（内のＣＰＵ  Ｃ２）からライト要求受け付け通知が返されると、インタフェースＳ１を介してライトデータをディスクアレイＡ３に転送する。このホストＡ１からのライトデータは、ディスクアレイＡ３のコントローラＢ１に入力され、当該コン卜ローラＢ１のＩ／Ｏ制御部Ｃ１で受信される。
【００６８】
＜ステップ１１４＞
ライトデータを受信したコン卜ローラＢ１のＩ／Ｏ制御部Ｃ１は、当該ライトデータをキャッシュ制御部Ｃ６に転送する。なお、ライトデータ受信をＩ／Ｏ制御部Ｃ１からＣＰＵ  Ｃ２に、割り込み信号により、或いはＣＰＵ  Ｃ２からの定期的な問い合わせ（ポーリング）に応じて通知し、この通知を受けたＣＰＵ  Ｃ２が上記ステップ１１４を行うようにしてもよい。
【００６９】
＜ステップ１１５＞
キャッシュ制御部Ｃ６はライトデータを、先にロックされている自コントローラＢ１内のキャッシュメモリＣ５の領域に書き込む。
またキャッシュ制御部Ｃ６は、排他制御部Ｃ７にアドレス（キャッシュ領域のアドレス）、ライトデータを転送する。
【００７０】
＜ステップ１１６＞
排他制御部Ｃ７は、同じコン卜ローラＢ１内のキャッシュ制御部Ｃ６からアドレス、データを受信すると、そのアドレス、データを、受信データメモリＣ７３に確保されるレジスタＲｓｄ１〜Ｒｓｄｎ（図示せず）に格納する。
【００７１】
排他制御部Ｃ７の状態制御回路Ｃ７７は、排他制御回路Ｃ７６に対して排他フラグの確保を要求する。そして状態制御回路Ｃ７７は、排他制御回路Ｃ７６により前記ステップ１０６と同様にして当該状態制御回路Ｃ７７内の排他フラグＲ６がＲ６＝１に設定されること、つまり排他フラグが確保されることを確認する。
【００７２】
＜ステップ１１７＞
状態制御回路Ｃ７７は、他コント送信制御回路Ｃ７４を起動して、受信データメモリＣ７３内の上記レジスタＲｓｄ１〜Ｒｓｄｎの内容、即ちキャッシュメモリＣ５への書き込み時のアドレス、ライトデータを、コン卜ローラＢ２の排他制御部Ｃ７に転送する。
【００７３】
＜ステップ１１８＞
コン卜ローラＢ１の排他制御部Ｃ７の状態制御回路Ｃ７７は、他コント送信制御回路Ｃ７４によりキャッシュメモリＣ５への書き込み時のアドレス、ライトデータをコン卜ローラＢ２側へ転送すると、当該コン卜ローラＢ２側からのライトデータの書き込み完了通知を受信するまで待つ。
【００７４】
＜ステップ２０６＞
一方、コン卜ローラＢ２の排他制御部Ｃ７の他コント受信制御回路Ｃ７５は、コン卜ローラＢ１の排他制御部Ｃ７（の他コント送信制御回路Ｃ７４）からアドレス、ライトデータが転送されると、そのアドレス、ライトデータを、自コントローラＢ２（の排他制御部Ｃ７）内の受信データメモリＣ７３に確保されるレジスタＲｒｄ１〜Ｒｒｄｎ（図示せず）に格納し、その旨を状態制御回路Ｃ７７に通知する。
【００７５】
＜ステップ２０７＞
コン卜ローラＢ２の排他制御部Ｃ７の状態制御回路Ｃ７７は、受信データメモリＣ７３内の上記レジスタＲｒｄ１〜Ｒｒｄｎの内容、即ちコン卜ローラＢ１側でのキャッシュメモリＣ５への書き込み時のアドレス、ライトデータをキャッシュ制御部Ｃ６に転送する。
キャッシュ制御部Ｃ６は、状態制御回路Ｃ７７により転送されたライトデータを、当該データと共に転送されたアドレスで指定されるキャッシュメモリＣ５の領域に書き込む。これにより、コン卜ローラＢ１側のキャッシュメモリＣ５とコン卜ローラＢ２側のキャッシュメモリＣ５とのデータの一致化が図られる。
【００７６】
＜ステップ２０８＞
コン卜ローラＢ２の状態制御回路Ｃ７７は他コント送信制御回路Ｃ７４を起動して、自コントローラＢ２のキャッシュメモリＣ５へのデータ書き込みが完了したことをコン卜ローラＢ１の排他制御部Ｃ７に通知する。
【００７７】
（３）終了処理
＜ステップ１１９，１２０＞
コン卜ローラＢ１の状態制御回路Ｃ７７はＤＭＡコントローラＣ７２を起動して、自コントローラの情報ＤのフィールドＤｉ中のフラグＤｉ１をＤｉ１＝２からＤｉ１＝０に書き換える。これにより、フィールドＤｉ（中のアドレスＤｉ４）で示されるコン卜ローラＢ１側のキャッシュ領域（自コント領域）がロック状態から解除されたことになる。また、フィールドＤｉの情報は、Ｄｉ１＝０となったことで無効化される。つまり、フィールドＤｉの情報（自コントテーブルのＤｉの情報）が削除されたことになる。
【００７８】
＜ステップ１２１＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、他コント送信制御回路Ｃ７４を起動してロック解除通知をコン卜ローラＢ２の排他制御部Ｃ７に転送する。
【００７９】
＜ステップ１２２＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、他コント送信制御回路Ｃ７４によりロック解除通知をコン卜ローラＢ２側に転送すると、当該コン卜ローラＢ２側からの他コントローラへのロック解除完了通知を受信するまで待つ。
【００８０】
＜ステップ１２３＞
コン卜ローラＢ１の状態制御回路Ｃ７７は、コン卜ローラＢ２側からの他コントローラへのロック解除完了通知を受信すると、排他制御回路Ｃ７６内の排他フラグＲ６をＲ６＝０にして、排他フラグを解放する。
そして状態制御回路Ｃ７７は、割り込み、もしくはその他の手段を用いてＣＰＵ  Ｃ２に処理の完了を通知する。
これによりＣＰＵ  Ｃ２は、ホストＡ１に対してライトが完了したことを通知する。
【００８１】
＜ステップ２０９＞
一方、コン卜ローラＢ２の排他制御部Ｃ７に設けられた他コント受信制御回路Ｃ７５は、上記ステップ１２１でコン卜ローラＢ１の（状態制御回路Ｃ７７の制御により）他コント送信制御回路Ｃ７４からロック解除通知が転送されると、当該ロック解除通知を受信して、状態制御回路Ｃ７７に渡す。
【００８２】
＜ステップ２１０，２１１＞
コン卜ローラＢ２の状態制御回路Ｃ７７は、コン卜ローラＢ１側からのロック解除通知を受け取ると、メモリＣ３に格納されている他コントローラ（Ｂ１）の情報ＥのフィールドＥｉ中のフラグＥｉ１をＥｉ１＝２からＥｉ１＝０に書き換える。これにより、フィールドＥｉ（中のアドレスＥｉ４）で示されるコン卜ローラＢ２側のキャッシュ領域（他コント領域）がロック状態から解除されたことになる。また、フィールドＥｉの情報は、Ｅｉ１＝０となったことで無効化される。つまり、フィールドＥｉの情報（他コントテーブルのＥｉの情報）が削除されたことになる。
【００８３】
＜ステップ２１２＞
コン卜ローラＢ２の状態制御回路Ｃ７７は、他コント送信制御回路Ｃ７４を起動して、ロック解除処理が完了したことをコン卜ローラＢ１の排他制御部Ｃ７に通知する。
【００８４】
以上は、ホストＡ１からディスクアレイＡ３へのライトアクセスが行われる場合のコン卜ローラＢ１，Ｂ２の動作について説明したが、ホストＡ２からディスクアレイＡ３へのデータライトが行われた場合の動作も、コン卜ローラＢ１に代わってコン卜ローラＢ２がマスターになるだけで、つまりコン卜ローラＢ１とコン卜ローラＢ２との関係が逆になるだけで、上記と同様の動作が行われることは明らかである。
【００８５】
また、ホストＡ１（Ａ２）からディスクアレイ装置Ａ３へのリードアクセスが行われる場合のコン卜ローラＢ１，Ｂ２の処理手順、特に本発明に直接関係するコン卜ローラＢ１，Ｂ２間の排他制御、キャッシュ一致化制御については、リードとライトの違いはあるものの（リードアクセスの場合のキャッシュ一致化のデータはＨＤＤからのリードデータであり、ライトアクセスの場合のキャッシュ一致化のデータはホストからのライトデータである）、上記したライトアクセスの場合とほぼ同様である。したがって、ホストＡ１（Ａ２）からディスクアレイ装置Ａ３へのリードアクセス時のコン卜ローラＢ１，Ｂ２の処理手順については説明を省略し、フローチャートのみを図８乃至図１０に示す。但し、リードアクセスでは、キャッシュヒットとなった場合、コン卜ローラＢ１，Ｂ２間で該当するキャッシュデータが一致しており、キャッシュデータの書き込み（更新）は発生しないことから、ライトアクセスの場合と異なって、排他制御及びキャッシュ一致化制御は不要となることだけを付記しておく。
【００８６】
また、ディスクアレイ装置におけるコントローラ間の排他制御の高速化のみに着目し、上記ステップ１０６〜１１２，１１９〜１２３と、ステップ２０１〜２０５，２０９〜２１２を実行する専用のハードウェアを実装するようにしてもよい。この場合、キャッシュの一致化制御は従来と同様にファームウェアを用いて実行することになるが、専用ハードウェアが簡素化されることから実装が簡単になる。
【００８７】
また、制御情報Ｄ，Ｅ，Ｆの少なくとも一部を、メモリＣ２またはキャッシュメモリＣ５ではなく、排他制御部Ｃ７の専用メモリ上に実装することも可能である。
【００８８】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００８９】
【発明の効果】
以上詳述したように本発明によれば、複数のディスク装置を共有使用する複数のコントローラの間の排他制御を行うための専用機構をコントローラ内に実装したことにより、当該排他制御がコントローラ内のＣＰＵ負荷を軽滅しながら、短時間で行える。
【００９０】
また本発明によれば、複数のディスク装置を共有使用する複数のコントローラの間の排他制御及びキャッシュ一致化制御を行うための専用機構をコントローラ内に実装したことにより、当該排他制御及びキャッシュ一致化制御がコントローラ内のＣＰＵ負荷を軽滅しながら、短時間で行える。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るディスクアレイ装置を備えた計算機システムのブロック構成図。
【図２】図１中の排他制御部Ｃ７のブロック構成図。
【図３】図１中のコン卜ローラＢ１，Ｂ２で適用される制御情報テーブルのデータ構造例を示す図。
【図４】図１中のコン卜ローラＢ１，Ｂ２で適用されるキャッシュディレクトリ情報テーブルのデータ構造例を示す図。
【図５】同実施形態におけるライトアクセス時のコン卜ローラＢ１，Ｂ２の処理手順を説明するためのフローチャートの一部を示す図。
【図６】同実施形態におけるライトアクセス時のコン卜ローラＢ１，Ｂ２の処理手順を説明するためのフローチャートの他の一部を示す図。
【図７】同実施形態におけるライトアクセス時のコン卜ローラＢ１，Ｂ２の処理手順を説明するためのフローチャートの残りを示す図。
【図８】同実施形態におけるリードアクセス時のコン卜ローラＢ１，Ｂ２の処理手順を説明するためのフローチャートの一部を示す図。
【図９】同実施形態におけるリードアクセス時のコン卜ローラＢ１，Ｂ２の処理手順を説明するためのフローチャートの他の一部を示す図。
【図１０】同実施形態におけるリードアクセス時のコン卜ローラＢ１，Ｂ２の処理手順を説明するためのフローチャートの残りを示す図。
【符号の説明】
Ａ１，Ａ２…ホスト（ホスト装置）
Ａ３…ディスクアレイ（ディスクアレイ装置）
Ｂ１，Ｂ２…コン卜ローラ（ディスクコントローラ）
Ｂ３…ＨＤＤ（ディスク装置）
Ｓ３…信号線（コントローラ間通信用の信号線）
Ｃ２…ＣＰＵ
Ｃ３…メモリ
Ｃ５…キャッシュメモリ
Ｃ６…キャッシュ制御部
Ｃ７…排他制御部
Ｃ７１…制御情報受信制御回路
Ｃ７２…ＤＭＡコン卜ローラ
Ｃ７３…受信データメモリ
Ｃ７４…他コント送信制御回路（制御情報転送制御機構、キャッシュデータ転送制御機構）
Ｃ７５…他コント受信制御回路
Ｃ７６…排他制御回路
Ｃ７７…状態制御回路（テーブル更新機構、キャッシュ一致化機構）
Ｃ７８…比較回路
【図１】
0004357708.tif 000002
【図２】
0004357708.tif 000003
【図３】
0004357708.tif 000004
【図４】
0004357708.tif 000005
【図５】
0004357708.tif 000006
【図６】
0004357708.tif 000007
【図７】
0004357708.tif 000008
【図８】
0004357708.tif 000009
【図９】
0004357708.tif 000010
【図１０】
0004357708.tif 000011