(57)【特許請求の範囲】
【請求項１】
ホスト装置から読出命令を受けたことに応答して、記憶装置に記憶されているデータを読み出してキャッシュメモリに一旦格納してから前記ホスト装置に転送するデータ処理装置であって、
前記ホスト装置からの第１読出命令により指定される第１データを格納する前記キャッシュメモリ内の第１キャッシュページが、前記第１読出命令以外の命令に基づくタスクによって使用されているか否かを判別するデータ転送判別手段と、
前記データ転送判別手段によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行した後、前記第１データを前記第１キャッシュページから前記ホスト装置に転送し、前記データ転送判別手段によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていると判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を省略して、前記第１データを前記第１キャッシュページから前記ホスト装置に転送するデータ転送手段と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記データ転送手段は、前記データ転送判別手段によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行する設定処理実行手段と、
前記設定処理実行手段によって前記第１キャッシュページをデータ転送可能な状態に設定するための処理が実行された後、前記第１キャッシュページに格納されているデータを特定可能なデータ識別情報を第１識別情報テーブルに登録する第１識別情報登録手段と、を含み、
前記データ転送判別手段は、前記ホスト装置から前記第１読出命令とは異なる第２読出命令を受けたことに応答して、前記第２読出命令により指定される第２データが、前記第１識別情報テーブルに登録されているデータ識別情報から特定されるデータに含まれているか否かを判別することにより、前記第２データを格納する前記キャッシュメモリ内の前記第１キャッシュページが、前記第２読出命令以外の命令に基づくタスクによって使用されているか否かを判別する、
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記データ転送手段によって行われる前記第１キャッシュページから前記ホスト装置へのデータ転送が、全て終了したか否かを判別する第１データ転送終了判別手段と、
前記第１データ転送終了判別手段によって前記データ転送が全て終了したと判別した場合、前記第１キャッシュページのデータ転送可能な状態を解除するための処理を実行する解除処理実行手段と、
をさらに備えることを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記データ転送手段から第１設定指示を受けたことに応答して、前記第１設定指示により指定される前記第１データを含む前記第１キャッシュページをデータ転送可能な状態に設定した後、設定完了を前記データ転送手段に対して通知するキャッシュページ設定手段をさらに備え、
前記データ転送手段は、前記第１キャッシュページをデータ転送可能な状態に設定するための処理として、前記第１設定指示を前記キャッシュページ設定手段に対して送る処理と、前記キャッシュページ設定手段からの前記設定完了の通知を受ける処理と、を実行する、
ことを特徴とする請求項１、２、又は３に記載のデータ処理装置。
【請求項５】
前記キャッシュページ設定手段は、前記データ転送手段から前記第１設定指示を受けたことに応答して、前記第１設定指示により指定される前記第１データを含む前記第１キャッシュページをデータ転送可能な状態に設定する転送可能状態設定手段と、
前記転送可能状態設定手段によって前記第１キャッシュページをデータ転送可能な状態に設定された後、前記第１キャッシュページに格納されているデータを特定可能なデータ識別情報を第２識別情報テーブルに登録する第２識別情報登録手段と、
前記第２識別情報登録手段によって前記第２識別情報テーブルに登録された前記データ識別情報を、前記設定完了とともに前記データ転送手段に通知する第１設定完了通知手段と、を含み、
前記第１識別情報登録手段は、前記第１設定完了通知手段によって通知された前記データ識別情報を前記第１識別情報テーブルに登録する、
ことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記データ転送手段は、前記データ転送判別手段によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行する設定処理実行手段と、
前記設定処理事項手段によって前記第１キャッシュページをデータ転送可能な状態に設定するための処理が実行された後、前記第１キャッシュページに格納されているデータを特定可能なデータ識別情報を第１識別情報テーブルに登録する第１識別情報登録手段と、を含み、
前記データ転送手段によって行われる前記第１キャッシュページから前記ホスト装置へのデータ転送が、全て終了したか否かを判別する第１データ転送終了判別手段と、
前記第１データ転送終了判別手段によって前記データ転送が全て終了したと判別した場合、前記第１キャッシュページのデータ転送可能な状態を解除するための処理を実行する解除処理実行手段と、
前記第１データ転送終了判別手段によって前記データ転送が全て終了したと判別された場合、前記第１識別情報テーブルに登録されている前記データ識別情報を削除する第１識別情報削除手段と、をさらに備え、
前記解除処理実行手段は、前記第１キャッシュページのデータ転送可能な状態を解除するための処理として、解除指示を前記キャッシュページ設定手段に送る処理を実行し、
前記キャッシュページ設定手段は、前記解除処理実行手段から前記解除指示を受けたことに応答して、前記解除指示により指定される前記第１データを含む前記第１キャッシュページのデータ転送可能な状態を解除する転送可能状態解除手段と、
前記転送可能状態解除手段によって前記第１キャッシュページのデータ転送可能な状態が解除された後、前記第２識別情報テーブルに登録されている前記データ識別情報を削除する第２識別情報削除手段と、をさらに含む、
ことを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記データ転送判別手段と前記データ転送手段とを含む命令実行手段を複数備え、
前記転送可能状態設定手段は、前記複数の命令実行手段のうちの第１命令実行手段が含むデータ転送手段から前記第１設定指示を受けたことに応答して、前記第１設定指示により指定される前記第１データを含む前記第１キャッシュページをデータ転送可能な状態に設定し、
前記第２識別情報登録手段は、前記転送可能状態設定手段によって前記第１キャッシュページがデータ転送可能な状態に設定された後、前記第１キャッシュページに含まれているデータを特定可能なデータ識別情報を前記第２識別情報テーブルに登録し、
前記第１設定完了通知手段は、前記第２識別情報登録手段によって前記第２識別情報テーブルに登録された前記データ識別情報を、前記設定完了とともに前記第１命令実行手段に通知し、
前記キャッシュページ設定手段は、前記複数の命令実行手段のうち、前記第１命令実行手段とは異なる第２命令実行手段が含むデータ転送手段から、前記第１設定指示とは異なる第２設定指示を受けたことに応答して、前記第２設定指示により指定される第３データが、前記第２識別情報テーブルに登録されている前記データ識別情報から特定されるデータに含まれているか否かを判別する第１データ判別手段をさらに含み、
前記第１データ判別手段によって前記第３データが前記データ識別情報から特定されるデータに含まれていると判別された場合、前記第２識別情報登録手段による前記データ識別情報の第２識別情報テーブルへの登録を省略して、前記第１設定完了通知手段による前記データ識別情報と前記設定完了とを前記第２命令実行手段に通知する、
ことを特徴とする請求項５又は６に記載のデータ処理装置。
【請求項８】
前記第２識別情報登録手段は、前記転送可能状態設定手段によって前記第１キャッシュページをデータ転送可能な状態に設定した後、前記第１キャッシュページに格納されているデータを特定可能なデータ識別情報とともに、前記第１命令実行手段を特定可能な第１命令実行手段識別情報を前記第２識別情報テーブルに登録し、
前記キャッシュページ設定手段は、前記解除処理実行手段から前記解除指示を受けたことに応答して、前記解除指示により指定される前記第１データを含む前記第１キャッシュページのデータ転送可能な状態を解除する転送可能状態解除手段と、
前記転送可能状態解除手段によって前記第１キャッシュページのデータ転送可能な状態が解除された後、前記第２識別情報テーブルに登録されている前記データ識別情報を削除する第２識別情報削除手段と、
前記第１データ判別手段によって前記第３データが前記データ識別情報から特定されるデータに含まれていると判別された場合、前記第２命令実行手段を特定可能な第２命令実行手段識別情報を前記第２識別情報テーブルに登録する第３識別情報登録手段と、
前記第１命令実行手段から前記解除指示を受けたことに応答して、前記第１命令実行手段識別情報とともに前記第２命令実行手段識別情報が、前記第２識別情報テーブルに登録されているか否かを判別する識別情報登録判別手段と、をさらに含み、
前記第２識別情報削除手段は、前記識別情報登録判別手段によって前記第２命令実行手段識別情報が前記第２識別情報テーブルに登録されていると判別された場合、前記第２識別情報テーブルに登録されている前記第１命令実行手段識別情報を削除し、前記識別情報登録判別手段によって前記第２命令実行手段識別情報が前記第２識別情報テーブルに登録されていないと判別された場合、前記第２識別情報テーブルに登録されている前記第１命令実行手段識別情報とともに前記データ識別情報を削除する、
ことを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記ホスト装置から書込命令を受けたことに応答して、前記書込命令により指定される第４データが、前記第１識別情報テーブルに登録されている前記データ識別情報から特定されるデータに含まれているか否かを判別する第２データ判別手段と、
前記第２データ判別手段によって、前記第４データが、前記第１識別情報テーブルに登録されている前記データ識別情報から特定されるデータに含まれていると判別された場合、前記キャッシュメモリ内の、前記第４データを含む第２キャッシュページから前記ホスト装置へのデータ転送が複数並行して行われることを抑制する転送抑制手段と、をさらに備え、
前記データ転送手段は、前記転送抑制手段によって、前記第２キャッシュページから前記ホスト装置に対するデータ転送が複数並行して行われることを抑制した後、前記データ識別情報から特定されるデータに含まれる第５データを指定する第３読出命令を受けた場合、前記データ転送判別手段による判別結果に関わらず、前記第２キャッシュページをデータ転送可能な状態に設定するための処理を実行した後、前記第２キャッシュページから前記第５データのみを前記ホスト装置に転送する、
ことを特徴とする請求項１乃至８のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記データ転送手段から第１設定指示を受けたことに応答して、前記第１設定指示により指定される前記第１データを含む前記第１キャッシュページをデータ転送可能な状態に設定した後、設定完了を前記データ転送手段に対して通知するキャッシュページ設定手段をさらに備え、
前記データ転送手段は、前記ホスト装置から前記書込命令を受けたことに応答して、前記第２キャッシュページをデータ転送可能な状態に設定するための処理として、前記第４データを指定する第３設定指示を前記キャッシュメモリ設定手段に送り、
前記キャッシュページ設定手段は、前記データ転送手段から前記第３設定指示を受けたことに応答して、前記第２キャッシュページから前記ホスト装置へのデータ転送が全て終了したか否かを判別する第２データ転送終了判別手段と、
前記第２データ転送終了判別手段によって、前記データ転送が全て終了したと判別されるまで、前記転送可能状態設定手段による前記第２キャッシュページのデータ転送可能な状態への設定を抑制する転送可能状態抑制手段と、をさらに含む、
ことを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記キャッシュメモリ設定手段は、前記第１命令実行手段から前記第３設定指示を受けたことに応答して、前記第１命令実行手段識別情報とともに前記第２命令実行手段識別情報が、前記第２識別情報テーブルに登録されているか否かを判別する第２識別情報登録判別手段と、
前記第２識別情報登録判別手段によって前記第２命令実行手段識別情報が前記第２識別情報テーブルに登録されていると判別された場合、抑制指示を前記第２命令実行手段に送る抑制指示手段と、をさらに含み、
前記第２命令実行手段は、前記抑制指示手段から前記抑制指示を受けたことに応答して、前記転送抑制手段によって前記第２キャッシュページから前記ホスト装置に対するデータ転送が複数並行して行われることを抑制する、
ことを特徴とする請求項９又は１０に記載のデータ処理装置。
【請求項１２】
ホスト装置から読出命令を受けたことに応答して、記憶装置に記憶されているデータを読み出してキャッシュメモリに一旦格納してから前記ホスト装置に転送するデータ処理方法であって、
前記ホスト装置からの第１読出命令により指定される第１データを格納する前記キャッシュメモリ内の第１キャッシュページが、前記第１読出命令以外の命令に基づくタスクによって使用されているか否かを判別するデータ転送判別ステップと、
前記データ転送判別ステップによって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行した後、前記第１データを前記第１キャッシュページから前記ホスト装置に転送し、前記データ転送判別ステップによって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていると判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を省略して、前記第１データを前記第１キャッシュページから前記ホスト装置に転送するデータ転送ステップと、
を備えることを特徴とするデータ処理方法。
【請求項１３】
ホスト装置から読出命令を受けたことに応答して、記憶装置に記憶されているデータを読み出してキャッシュメモリに一旦格納してから前記ホスト装置に転送するコンピュータに、
前記ホスト装置からの第１読出命令により指定される第１データを格納する前記キャッシュメモリ内の第１キャッシュページが、前記第１読出命令以外の命令に基づくタスクによって使用されているか否かを判別するデータ転送判別手順と、
前記データ転送判別手順によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行した後、前記第１データを前記第１キャッシュページから前記ホスト装置に転送し、前記データ転送判別手順によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていると判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を省略して、前記第１データを前記第１キャッシュページから前記ホスト装置に転送するデータ転送手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法、及びプログラムに関し、特に処理の高速化して性能を向上させることができるデータ処理装置、データ処理方法、及びプログラムに関する。
【背景技術】
【０００２】
まず、一般的なディスクアレイ装置の構成について、図面を参照して説明する。
【０００３】
ディスクアレイ装置１００１は、図２７に示すように、ホストディレクタ（Host Director）１０１０と、キャッシュディレクタ（Cache Director）１０２０と、ディスクディレクタ１０３０（Disk Director）と、から構成され、これらはクロスバースイッチやファイバチャネルなどのバスなどを介して相互に通信可能に接続されている。
【０００４】
ホストディレクタ１０１０は、例えばＳＣＳＩ（Small Computer System Interface）やファイバチャネルなどのチャネルを介してホスト装置（Host）１００２と接続され、ポート（Port）１０１１と、例えばＲＡＭ（Random Access Memory）などのメモリ（mem）１０１２と、ホストプロセッサ（HP）１０１３と、を備えている。
【０００５】
ホストプロセッサ１０１３は、例えばＭＰＵ（Micro Processing Unit）などから構成され、図２８（ａ）に示すように、論理ディスク番号（LDN）と論理セクタ番号（LSN）と転送セクタ長（Length）とページ番号（PageID）とをタスク毎に記憶可能な複数の内部テーブル（HA-Task0-Table〜HA-TaskN-Table）１１３０−Ｎ（Ｎは整数）を、メモリ１０１２に保持するなどして備えている。
【０００６】
ホストプロセッサ１０１３は、ホスト装置１００２からディスクアレイ装置１００１に対して発行された物理ディスクアレイ１００３のハードディスクドライブに格納されたデータの読出命令（リード命令（ReadCommand））を受けると、リード命令を解析し、論理ディスク番号と論理セクタ番号と転送セクタ長といった必要な情報を抽出して内部テーブル１１３０−Ｎに記憶する。
【０００７】
ホストプロセッサ１０１３は、キャッシュディレクタ１０２０に対して、図２８（ｂ）に示すような、論理ディスク番号と論理セクタ番号と転送セクタ長といったキャッシュページ１２３０−Ｎを獲得するために必要な情報からなる獲得指示パラメータを含む（Page獲得命令）をキャッシュディレクタ１０２０に対して発行する。
【０００８】
キャッシュディレクタ１０２０は、例えばＲＡＭなどのメモリ１０２２と、キャッシュプロセッサ（CP）１０２３と、を備えている。
【０００９】
キャッシュプロセッサ１０２３は、例えばＭＰＵなどから構成され、図２９に示すように、複数のキャッシュページ（CachePege1〜CachePegeN）１２３０−Ｎと、未使用キャッシュページリンク（NULL-LINK）１２３１と、ＨＤＤ一致データリンク（CLEAN-LINK）１２３２と、複数のキャッシュヒットページ検索リンク（HASH-LINK）１２３３と、をメモリ１０２２に保持するなどして備えている。
【００１０】
初期状態では、キャッシュページ１２３０−Ｎが全て未使用キャッシュページリンク１２３１に接続され、キャッシュヒットページ検索リンク１２３３には、未接続の状態になっている。
【００１１】
キャッシュページ１２３０−Ｎは、双方向リンク構造を有し、ＬＤＮ部と、ＬＳＮ部と、ｄｅｔｅ部と、Ｒｎｇ部と、未使用キャッシュページリンク１２３１及びＨＤＤ一致データリンク１２３２の根に接続可能なｆｗｄ／ｂｗｄ部と、キャッシュヒットページ検索リンク１２３３の根に接続可能なＰＲＥＶ／ＮＥＸＴ部と、を含んで構成されている。
【００１２】
キャッシュページ１２３０−Ｎの使用時には、論理ディスク番号と論理セクタ番号とが、それぞれＬＤＮ部とＬＳＮ部とに設定され、ホスト装置１００２から送られるデータや、物理ディスクアレイ１００３から読み出したデータは、データ部に格納される。また、Ｒｎｇ部には、キャッシュページ１２３０−Ｎのデータ格納範囲（Rng）が設定される。
【００１３】
キャッシュヒットページ検索リンク１２３３は、キャッシュページ１２３０−Ｎの検索を高速に行うための仕組みで、論理ディスク番号の数分だけ根を持っている。
【００１４】
ディスクディレクタ１０３０は、例えばバスなどを介して複数のハードディスクドライブ（HDD）を備える物理ディスクアレイ１００３と接続されているポート１０３１と、例えばＲＡＭなどのメモリ１０３２と、例えばＭＰＵなどから構成されるディスクプロセッサ（DP）１０３３と、を備えている。
【００１５】
次に、上記構成を備えるディスクアレイ装置の動作例について、図面を参照して説明する。
【００１６】
ホスト装置１００２からディスクアレイ装置１００１に対して発行されたリード命令を受けると、ホストディレクタ１０１０では、まず、ホストプロセッサ１０１３が、リード命令を解析し、図２８（ｂ）に示すような、論理ディスク番号と論理セクタ番号と転送セクタ長とから構成される獲得指示パラメータを含むキャッシュページ１２３０−Ｎの獲得指示（Page獲得命令）をキャッシュディレクタ１０２０に対して発行する。
【００１７】
キャッシュディレクタ１０２０では、キャッシュプロセッサ１０２３が、まず、ホストプロセッサ１０１３から受けた獲得指示パラメータを元に、キャッシュヒットページ検索リンク１２３３を辿って、キャッシュヒットしているキャッシュページ１２３０−Ｎを検索する。具体的には、獲得指示パラメータの論理ディスク番号に該当するキャッシュヒットページ検索リンク１２３３が選択される。そして、このキャッシュヒットページ検索リンク１２３３にリンクインしているキャッシュページ１２３０−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、獲得指示パラメータの論理ディスク番号、論理セクタ番号、及び転送セクタ長と、が比較されるなどして、リード命令により読出の命令がなされたデータを含むデータを格納するキャッシュページ１２３０−Ｎがあるか否かが判別される。
【００１８】
検索した結果、キャッシュヒットしているキャッシュページ１２３０−Ｎがなかった場合には、図３０に示すように、未使用キャッシュページリンク１２３１からキャッシュページ１２３０−Ｎをリンクアウトするとともに、キャッシュページ１２３０−Ｎに、獲得指示パラメータに含まれている論理ディスク番号及び論理セクタ番号と、獲得指示を発行したホストプロセッサ１０１３を示すＭＰＵ番号と、を登録する。そして、キャッシュプロセッサ１０２３は、キャッシュページ１２３０−Ｎをキャッシュヒットページ検索リンク１２３３にリンクインする。
【００１９】
そして、キャッシュプロセッサ１０２３は、図３１（ａ）に示すような、キャッシュページ１２３０−Ｎのページ番号を含む獲得完了通知（CachePage獲得完了命令）をホストディレクタ１０１０に対して返却する。なお、転送セクタ長がキャッシュページ１２３０−Ｎを複数ページ数分必要とする場合には、そのページ数分だけ上記処理を繰り返し実行し、必要なページ数分全てを排他中にしてから、キャッシュページ１２３０−Ｎの獲得完了通知をホストディレクタ１０１０に対して返却すればよい。
【００２０】
キャッシュプロセッサ１０２３から獲得完了通知を受けると、ホストディレクタ１０１０では、ホストプロセッサ１０１１が、図３１（ｂ）に示すように、獲得完了通知に含まれるキャッシュページ１２３０−Ｎのページ番号を内部テーブル１１３０−Ｎに記憶するとともに、図３１（ｃ）に示すような、論理ディスク番号と論理セクタ番号と転送セクタ長とページ番号とから構成されるＨＤＤ読出パラメータを含む読出指示（DiskRead命令）をディスクディレクタ１０３０に対して発行することにより、物理ディスクアレイ１００３から論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータを、ページ番号が示すキャッシュページ１２３０−Ｎに読み出すことを指示する。
【００２１】
ディスクディレクタ１０３０では、ディスクプロセッサ１０３３が、まず、読出指示に含まれるＨＤＤ読出パラメータの論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータを、物理ディスクアレイ１００３のハードディスクドライブから、ＨＤＤ読出パラメータのページ番号が示すキャッシュページ１２３０−Ｎに対して転送するとともに、読出完了通知をホストディレクタ１０１０に対して返却する。
【００２２】
ディスクプロセッサ１０３３から読出完了通知を受けると、ホストディレクタ１０１０では、ホストプロセッサ１０１３が、内部テーブル１１３０−Ｎに記憶されている論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータを、ページ番号が示すキャッシュページ１２３０−Ｎからホスト装置１００２に対して転送する。
【００２３】
キャッシュページ１２３０−Ｎからホスト装置１００２へのデータ転送が完了した後、ホストプロセッサ１０１３は、図３２に示すような、内部テーブル１１３０−Ｎに記憶されている論理ディスク番号と論理セクタ番号と転送セクタ長とページ番号とから構成される返却指示パラメータ（CachePage返却命令）を含む返却指示をキャッシュディレクタ１０２０に対して発行する。
【００２４】
ホストディレクタ１０１０から返却指示を受けると、キャッシュディレクタ１０２０では、キャッシュプロセッサ１０２３が、図３３に示すように、返却指示に含まれる返却指示パラメータのページ番号が示すキャッシュページ１２３０−Ｎのデータ格納範囲を登録するとともに、キャッシュページ１２３０−ＮをＨＤＤ一致データリンク１２３２に接続してリンクインして、排他を解除する。
【００２５】
そして、キャッシュプロセッサ１０２３は、キャッシュページ２３０−Ｎの返却完了通知をホストディレクタ１０１０に対して返却する。なお、上記のような処理は、ホストプロセッサ１０１３、キャッシュプロセッサ１０２３、及びディスクプロセッサ１０３３内の複数のタスクにて並行して実行されている。
【００２６】
これに対して、ホスト装置１００２からキャッシュページ１２３０−Ｎ上の既に格納さているデータに関してリード命令が発行されるなどして、キャッシュプロセッサ１０２３が、キャッシュヒットページ検索リンク１２３３を辿ってキャッシュヒットしたキャッシュページ１２３０−Ｎを検出した場合には、ＨＤＤ一致データリンク１２３２からキャッシュページ１２３０−Ｎをリンクアウトして排他中にするとともに、ページ番号やデータ格納範囲などの情報を含む獲得完了通知をホストディレクタ１０１０に対して返却する。なお、キャッシュヒットしたキャッシュページ１２３０−Ｎが他のタスクによって排他中である場合には、キャッシュページ１２３０−Ｎの返却を待つ。
【００２７】
キャッシュプロセッサ１０２３から獲得完了通知を受けると、ホストディレクタ１０１０では、獲得完了通知にデータ格納範囲が含まれているため、ホストプロセッサ１０１３が、リード命令により読出の命令がなされたデータを含むデータがキャッシュページ１２３０−Ｎに格納されているとして、物理ディスクアレイ１００３のハードディスクドライブからのデータの読出が不要であると判別する。この場合、ホストプロセッサ１０１３は、書込指示のディスクディレクタ１０３０に対する発行を省略して、内部テーブル１１３０−Ｎに記憶されている論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータを、ページ番号が示すキャッシュページ１２３０−Ｎからホスト装置１００２に対して転送する。その後、ホストプロセッサ１０１３は、内部テーブル１１３０−Ｎに記憶されているページ番号を含むキャッシュページ１２３０−Ｎの返却指示をキャッシュディレクタ１０２０に対して発行する。
【００２８】
ホストプロセッサ１０１３から返却指示を受けると、キャッシュディレクタ１０２０では、キャッシュプロセッサ１０２３が、キャッシュページ１２３０−ＮをＨＤＤ一致データリンク１２３２にリンクインして排他を解除するとともに、キャッシュページ１２３０−Ｎの返却完了通知をホストディレクタ１０１０に対して返却する。
【００２９】
これにより、キャッシュヒットしているキャッシュページ１２３０−Ｎに格納されているデータに関して、ホスト装置１００２からディスクアレイ装置１００１に対して複数のリード命令が発行された場合には、書込指示を発行するなどのホストディレクタ１０１０からディスクディレクタ１０３０に対する処理や、データを転送するなどのディスクディレクタ１０３０での処理を省略することができるようになるため、その分ディスクアレイ装置１００１内での処理を高速化することができる（例えば特許文献１参照）。
【特許文献１】特開２００７−１０２６９９号公報
【発明の開示】
【発明が解決しようとする課題】
【００３０】
しかしながら、上記ディスクアレイ装置１００１では、キャッシュヒットしているキャッシュページ１２３０−Ｎに格納されているデータに関して、ホスト装置１００２から複数のリード命令が発効された場合でも、キャッシュページ１２３０−Ｎの獲得指示を発行するなどのホストディレクタ１０１０からキャッシュディレクタ１０２０に対する処理や、キャッシュページ１２３０−Ｎを排他中にするなどのキャッシュディレクタ１０２０内での処理を省略することができず、ディスクアレイ装置１００１内での処理の高速化にも限界があった。
【００３１】
本発明は、上記実状に鑑みてなされたものであり、処理の高速化して性能を向上させることができるデータ処理装置、データ処理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３２】
上記目的を達成するため、本発明の第１の観点に係るデータ処理装置は、ホスト装置から読出命令を受けたことに応答して、記憶装置に記憶されているデータを読み出してキャッシュメモリに一旦格納してから前記ホスト装置に転送するデータ処理装置であって、前記ホスト装置からの第１読出命令により指定される第１データを格納する前記キャッシュメモリ内の第１キャッシュページが、前記第１読出命令以外の命令に基づくタスクによって使用されているか否かを判別するデータ転送判別手段と、前記データ転送判別手段によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行した後、前記第１データを前記第１キャッシュページから前記ホスト装置に転送し、前記データ転送判別手段によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていると判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を省略して、前記第１データを前記第１キャッシュページから前記ホスト装置に転送するデータ転送手段と、を備えることを特徴とする。
【００３３】
また、本発明の第２の観点に係るデータ処理方法は、ホスト装置から読出命令を受けたことに応答して、記憶装置に記憶されているデータを読み出してキャッシュメモリに一旦格納してから前記ホスト装置に転送するデータ処理方法であって、前記ホスト装置からの第１読出命令により指定される第１データを格納する前記キャッシュメモリ内の第１キャッシュページが、前記第１読出命令以外の命令に基づくタスクによって使用されているか否かを判別するデータ転送判別ステップと、前記データ転送判別ステップによって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行した後、前記第１データを前記第１キャッシュページから前記ホスト装置に転送し、前記データ転送判別ステップによって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていると判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を省略して、前記第１データを前記第１キャッシュページから前記ホスト装置に転送するデータ転送ステップと、を備えることを特徴とする。
【００３４】
さらに、本発明の第３の観点に係るプログラムは、ホスト装置から読出命令を受けたことに応答して、記憶装置に記憶されているデータを読み出してキャッシュメモリに一旦格納してから前記ホスト装置に転送するコンピュータに、前記ホスト装置からの第１読出命令により指定される第１データを格納する前記キャッシュメモリ内の第１キャッシュページが、前記第１読出命令以外の命令に基づくタスクによって使用されているか否かを判別するデータ転送判別手順と、前記データ転送判別手順によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていないと判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を実行した後、前記第１データを前記第１キャッシュページから前記ホスト装置に転送し、前記データ転送判別手順によって前記第１キャッシュページが前記第１読出命令以外の命令に基づくタスクによって使用されていると判別された場合、前記第１キャッシュページをデータ転送可能な状態に設定するための処理を省略して、前記第１データを前記第１キャッシュページから前記ホスト装置に転送するデータ転送手順と、を実行させるためのものである。
【発明の効果】
【００３５】
本発明によれば、処理の高速化して性能を向上させることができるデータ処理装置、データ処理方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明を実施するための最良の形態について説明する。
【００３７】
まず、本実施形態に係るディスクアレイ装置の構成について、図面を参照して説明する。
【００３８】
ディスクアレイ装置１は、図１に示すように、ホストディレクタ（Host Director）１０と、キャッシュディレクタ（Cache Director）２０と、ディスクディレクタ３０（Disk Director）と、から構成され、これらは、例えばクロスバースイッチやファイバチャネルなどのバスなどを介して相互に通信可能に接続されている。
【００３９】
ホストディレクタ１０は、ポート（Port）１１ａ及び１１ｂと、メモリ（mem）１２ａ及び１２ｂと、ホストプロセッサ（HP）１３ａ及び１３ｂと、を備えている。
【００４０】
ポート１１ａ及び１１ｂは、それぞれＳＣＳＩ（Small Computer System Interface）やファイバチャネルなどのチャネルを介してホスト装置（Host）２と接続されている。
【００４１】
メモリ１０ａ及び１０ｂは、それぞれＲＡＭ（Random Access Memory）などによって実現され、ホストプロセッサ１３ａ及び１３ｂに内蔵されている。
【００４２】
ホストプロセッサ１３ａ及び１３ｂは、それぞれホスト装置２からディスクアレイ装置１に対して発行されるコマンドを解析してデータのホスト装置２との間でデータの送受信を行うもので、例えばＭＰＵ（Micro Processing Unit）などから構成されている。
【００４３】
ホストプロセッサ１３ａ及び１３ｂは、それぞれ図２に示すように、複数の内部テーブル（HA-Task0-Table〜HA-TaskN-Table）１３０ａ−Ｎ及び１３０ｂ−Ｎ（Ｎは整数）と、論理ディスク番号（LDN）×論理セクタ番号（LSN）／２５６個のローカル共有テーブル１３１ａ−Ｎ及び１３０ｂ−Ｎと、を例えばメモリ１２ａ及び１２ｂに保持するなどして実装している。
【００４４】
内部テーブル１３０ａ−Ｎ及び１３０ｂ−Ｎは、それぞれ論理ディスク番号と、論理セクタ番号と、転送セクタ長（Length）と、ページ番号（PageID）と、をタスク毎に記憶可能に構成されている。
【００４５】
ローカル共有テーブル１３１ａ−Ｎ及び１３１ｂ−Ｎは、キャッシュヒットしたデータ（date）を共有するためのもので、それぞれ論理ディスク番号と、論理セクタ番号と、転送セクタ長と、ページ番号と、有効フラグ値（Valid Flag）と、共有タスクカウント値（Share Task Count）と、を最大８タスク分だけ登録可能に構成されている。
【００４６】
キャッシュディレクタ２０は、メモリ２２と、キャッシュプロセッサ（CP）２３と、を備えている。
【００４７】
メモリ２２は、例えばＲＡＭなどによって実現され、キャッシュプロセッサ２３に内蔵されている。
【００４８】
キャッシュプロセッサ２３は、データを一時的に格納し、固定長のキャッシュページ（Cache Page）２３０−Ｎとして管理するもので、例えばＭＰＵなどから構成されている。
【００４９】
キャッシュプロセッサ２３は、図３に示すように、複数のキャッシュページ（CachePege1〜CachePegeN）２３０−Ｎと、未使用キャッシュページリンク（NULL-LINK）２３１と、ＨＤＤ一致データリンク（CLEAN-LINK）２３２と、複数のキャッシュヒットページ検索リンク（HASH-LINK）２３３と、論理ディスク番号×論理セクタ番号／２５６個のグローバル共有テーブル２３４−Ｎと、を例えばＲＡＭ２２に保持するなどして実装している。
【００５０】
初期状態では、キャッシュページ２３０−Ｎが全て未使用キャッシュページリンク２３１に接続され、キャッシュヒットページ検索リンク２３３には、未接続の状態になっている。
【００５１】
キャッシュページ２３０−Ｎは、双方向リンク構造を有し、それぞれＬＤＮ部と、ＬＳＮ部と、ｄｅｔｅ部と、Ｒｎｇ部と、未使用キャッシュページリンク２３１及びＨＤＤ一致データリンク２３２の根に接続可能なｆｗｄ／ｂｗｄ部と、キャッシュヒットページ検索リンク２３３の根に接続可能なＰＲＥＶ／ＮＥＸＴ部と、を含んで構成されている。
【００５２】
キャッシュページ２３０−Ｎの使用時には、論理ディスク番号と論理セクタ番号とが、それぞれＬＤＮ部とＬＳＮ部とに設定され、ホスト装置２から送られるデータや、物理ディスクアレイ３から読み出したデータは、データ部に格納される。また、Ｒｎｇ部には、キャッシュページ２３０−Ｎのデータ格納範囲が設定される。
【００５３】
キャッシュヒットページ検索リンク２３３は、キャッシュページ２３０−Ｎの検索を高速に行うための仕組みで、論理ディスク番号の数分だけ根を持っている。
【００５４】
グローバル共有テーブル２３４−Ｎは、ホストディレクタ１０からの複数の要求を共有するためのもので、それぞれ論理ディスク番号と、論理セクタ番号と、データ格納範囲と、ページ番号と、有効フラグ値と、ＭＰＵ番号と、がホストプロセッサ１３ａ及び１３ｂの数（本実施形態では２つ）分だけ登録可能に構成されている。
【００５５】
図１に示すディスクディレクタ３０は、ポート３１と、メモリ３２と、ディスクプロセッサ（DP）３３と、を備えている。
【００５６】
ポート３１は、例えばバスなどを介して複数のハードディスクドライブ（HDD）を備える物理ディスクアレイ３と接続されている。
【００５７】
メモリ３２は、例えばＲＡＭなどによって実現され、ディスクプロセッサ３３に内蔵されている。
【００５８】
ディスクプロセッサ３３は、ＲＡＩＤ（Redundant Arrays of Inexpensive (Independent) Disks）演算などを実施し複数のハードディスクドライブからの読出及び書込を行うもので、例えばＭＰＵなどから構成されている。
【００５９】
次に、上記構成を備えるディスクアレイ装置の動作について、図面を参照して説明する。
【００６０】
ホストディレクタ１０では、ホスト装置２からディスクアレイ装置１に対して発行された物理ディスクアレイ３のハードディスクドライブに格納されたデータの読出命令（リード命令（ReadCommand））を受けると、ホストプロセッサ１３ａ又は１３ｂが、図４及び図５に示すリード（Read）処理をタスク毎に実行する。
【００６１】
このリード処理において、まず、ホストプロセッサ１３ａ又は１３ｂは、図４に示すように、リード命令を解析し、論理ディスク番号と論理セクタ番号と転送セクタ長といった必要な情報を抽出して内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶する（ステップＳ１０１）。
【００６２】
次に、ホストプロセッサ１３ａ又は１３ｂは、リード命令により指定された論理ディスク番号、論理セクタ番号、及び転送セクタ長と、ＲＡＭ１２ａ又は１２ｂに実装するローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、を比較するなどして、リード命令により読出の命令がなされたデータを含むデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されているか否かを判別する（ステップＳ１０２）。
【００６３】
ここで、キャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていると判別した場合には（ステップＳ１０２；Ｙｅｓ）、ローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎに登録されている有効フラグ値が“１”であるか“２”であるかをチェックすることにより、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することができるか否かを判別する（ステップＳ１０３）。
【００６４】
そして、ステップＳ１０２の処理にてキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていないと判別した場合や（ステップＳ１０２；Ｎｏ）、ステップＳ１０３の処理にて有効フラグ値が“２”であることにより、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することが抑制されていると判別した場合には（ステップＳ１０３；Ｎｏ）、リード命令により指定された論理ディスク番号と論理セクタ番号と転送セクタ長とから構成される獲得指示パラメータを含むキャッシュページ２３０−Ｎの獲得指示（Page獲得命令）をキャッシュディレクタ２０に対して発行する（ステップＳ１０４）。
【００６５】
その後、ホストプロセッサ１３ａ又は１３ｂは、キャッシュディレクタ２０から獲得完了通知（CashePage獲得完了通知）を受けるまで（ステップＳ１０５；Ｎｏ）、ループして待ち、獲得完了通知を受けると（ステップＳ１０５；Ｙｅｓ）、獲得完了通知に含まれるキャッシュページ２３０−Ｎのページ番号を内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶する（ステップＳ１０６）。
【００６６】
続いて、ホストプロセッサ１３ａ又は１３ｂは、キャッシュページ２３０−Ｎに格納されているデータの範囲を示すデータ格納範囲が獲得完了通知に含まれているか否かをチェックすることにより、キャッシュページ２３０−Ｎにデータが格納されているか否かを判別する（ステップＳ１０７）。
【００６７】
ここで、データ格納範囲が獲得完了通知に含まれておらず、キャッシュページ２３０−Ｎにデータが格納されていないと判別した場合には（ステップＳ１０７；Ｎｏ）、内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶されている論理ディスク番号と論理セクタ番号と転送セクタ長とページ番号とから構成されるＨＤＤ読出パラメータを含む読出指示（DiskRead命令）をディスクディレクタ３０に対して発行する（ステップＳ１０８）。その後、ホストプロセッサ１３ａ又は１３ｂは、ディスクディレクタ３０から読出完了通知（CachePage格納完了通知）を受けるまで（ステップＳ１０９；Ｎｏ）、ループして待つ。
【００６８】
これに対して、データ格納範囲が獲得完了通知に含まれており、キャッシュページ２３０−Ｎにデータが格納されていると判別した場合には（ステップＳ１０７；Ｙｅｓ）、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用すべく、データ格納範囲と、内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶されている論理ディスク番号、論理セクタ番号、及びページ番号と、をローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎに登録するとともに（ステップＳ１１０）、有効フラグ値を、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａが共有して使用することができることを示す“１”に設定する（ステップＳ１１１）。
【００６９】
また、ステップＳ１０３の処理にて有効フラグ値が“１”であることにより、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することができると判別した場合には（ステップＳ１０３；Ｙｅｓ）、キャッシュページ２３０−Ｎを共有して使用している同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクの数を示す共有タスクカウント値を“１”カウントアップする（ステップＳ１１２）。
【００７０】
そして、ステップＳ１０９の処理にてディスクディレクタ３０から読出完了通知を受けたと判別した場合や（ステップＳ１０９；Ｙｅｓ）、ステップＳ１１１又はＳ１１２の処理を実行した後には、内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶されている論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータを、ページ番号が示すキャッシュページ２３０−Ｎからホスト装置２に対して転送する（ステップＳ１１３）。
【００７１】
その後、ホストプロセッサ１３ａ又は１３ｂは、図５に示すように、有効フラグ値が“０”であるか否かをチェックすることにより、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用していたか否かを判別する（ステップＳ１１４）。
【００７２】
ここで、有効フラグ値が“０“以外であることにより、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用していたと判別した場合には（ステップＳ１１４；Ｙｅｓ）、共有タスクカウント値を“１”カウントダウンし（ステップＳ１１５）、カウントダウン後の共有タスクカウント値が“０”であるか否かをチェックすることにより、キャッシュページ２３０−Ｎを使用している同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａが未だあるか否かを判別する（ステップＳ１１６）。
【００７３】
ここで、カウントダウン後の共有タスクカウント値が“０”であることにより、キャッシュページ２３０−Ｎを使用している同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａがもはやないと判別した場合には（ステップＳ１１６；Ｙｅｓ）、ローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎから論理ディスク番号と論理セクタ番号とデータ格納範囲とページ番号とを削除するとともに（ステップＳ１１７）、有効フラグ値を初期値である“０”に戻す（ステップＳ１１８）。
【００７４】
これに対して、カウントダウン後の共有タスクカウント値が“０”であることにより、キャッシュページ２３０−Ｎを使用している同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａが未だあると判別した場合には（ステップＳ１１６；Ｙｅｓ）、そのままリード処理を終了する。
【００７５】
そして、ステップＳ１１４の処理にて有効フラグ値が“０“であることにより、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用していないと判別した場合や（ステップＳ１１４；Ｙｅｓ）、ステップＳ１１８の処理を実行した後には、内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶されているページ番号を含むキャッシュページ２３０−Ｎの返却指示（Page返却命令）をキャッシュディレクタ２０に対して発行する（ステップＳ１１９）。
【００７６】
その後、ホストプロセッサ１３ａ又は１３ｂは、キャッシュディレクタ２０から返却完了通知（Page返却完了通知）を受けるまで（ステップＳ１２０；Ｎｏ）、ループして待ち、返却完了通知を受けると（ステップＳ１２０；Ｙｅｓ）、リード処理を終了する。
【００７７】
また、ホストディレクタ１０では、ホスト装置２からディスクアレイ装置１に対して発行されたデータの物理ディスクアレイ３への書込命令（ライト命令（WriteCommand））を受けると、ホストプロセッサ１３ａ又は１３ｂが、図６に示すライト（Write）処理をタスク毎に実行する。
【００７８】
このライト処理において、まず、ホストプロセッサ１３ａ又は１３ｂは、図６に示すように、ライト命令を解析し、論理ディスク番号と論理セクタ番号と転送セクタ長といった必要な情報を抽出して内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶する（ステップＳ１２１）。
【００７９】
次に、ホストプロセッサ１３ａ又は１３ｂは、ライト命令により指定された論理ディスク番号、論理セクタ番号、及び転送セクタ長と、ＲＡＭ１２ａ又は１２ｂに実装するローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、を比較するなどして、ライト命令により書込の命令がなされたデータを含むデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されているか否かを判別する（ステップＳ１２２）。
【００８０】
ここで、キャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていると判別した場合には（ステップＳ１２２；Ｙｅｓ）、ローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎに登録されている有効フラグ値を、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することが抑制されていることを示す“２”に設定する（ステップＳ１２３）。
【００８１】
そして、ステップＳ１２２の処理にてキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていないと判別した場合や（ステップＳ１２２；Ｎｏ）、ステップＳ１２３の処理を実行した後には、ライト命令により指定された論理ディスク番号と論理セクタ番号と転送セクタ長とから構成される獲得指示パラメータを含むキャッシュページ２３０−Ｎの獲得指示（Page獲得命令）をキャッシュディレクタ２０に対して発行する（ステップＳ１２４）。
【００８２】
その後、ホストプロセッサ１３ａ又は１３ｂは、キャッシュディレクタ２０から獲得完了通知（CashePage獲得完了通知）を受けるまで（ステップＳ１２５；Ｎｏ）、ループして待ち、獲得完了通知を受けると（ステップＳ１２５；Ｙｅｓ）、獲得完了通知に含まれるキャッシュページ２３０−Ｎのページ番号を内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶する（ステップＳ１２６）。
【００８３】
続いて、ホストプロセッサ１３ａ又は１３ｂは、キャッシュページ２３０−Ｎに格納されているデータの範囲を示すデータ格納範囲が獲得完了通知に含まれているか否かをチェックすることにより、キャッシュページ２３０−Ｎにデータが格納されているか否かを判別する（ステップＳ１２７）。
【００８４】
ここで、データ格納範囲が獲得完了通知に含まれておらず、キャッシュページ２３０−Ｎにデータが格納されていないと判別した場合には（ステップＳ１２７；Ｎｏ）、内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶されている論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータをホスト装置２から、ページ番号が示すキャッシュページ２３０−Ｎに対して転送する（ステップＳ１２８）。
【００８５】
そして、ステップＳ１２７の処理にてデータ格納範囲が獲得完了通知に含まれておらず、キャッシュページ２３０−Ｎにデータが格納されていると判別した場合や（ステップＳ１２７；Ｎｏ）、ステップＳ１２８の処理を実行した後には、内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶されている論理ディスク番号と論理セクタ番号と転送セクタ長とページ番号とから構成されるＨＤＤ書込パラメータを含む書込指示（DiskWrite命令）をディスクディレクタ３０に対して発行する（ステップＳ１２９）。
【００８６】
その後、ホストプロセッサ１３ａ又は１３ｂは、ディスクディレクタ３０から書込完了通知（Disk格納完了通知）を受けるまで（ステップＳ１３０；Ｎｏ）、ループして待ち、書込完了通知を受けると（ステップＳ１３０；Ｙｅｓ）、内部テーブル１３０ａ−Ｎ又は１３０ｂ−Ｎに記憶されているページ番号を含むキャッシュページ２３０−Ｎの返却指示（Page返却命令）をキャッシュディレクタ２０に対して発行する（ステップＳ１３１）。
【００８７】
そして、ホストプロセッサ１３ａ又は１３ｂは、キャッシュディレクタ２０から返却完了通知を受けるまで（ステップＳ１３２；Ｎｏ）、ループして待ち、返却完了通知を受けると（ステップＳ１３２；Ｙｅｓ）、ライト処理を終了する。
【００８８】
さらに、ホストプロセッサ１３ａ又は１３ｂは、キャッシュディレクタ２０からホストディレクタ１０に対して発行されたキャッシュページ２３０−Ｎの共有抑止通知（CashePage共有抑止通知）を受けると、図７に示すページ共有抑止処理を実行する。
【００８９】
このページ共有抑止処理において、ホストプロセッサ１３ａ又は１３ｂは、図７に示すように、ローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎに登録されている有効フラグ値を“２”に設定してから（ステップＳ１４１）、ページ共有抑止処理を終了する。
【００９０】
一方、キャッシュプロセッサ２３は、ディスクディレクタ１０からキャッシュディレクタ２０に対して発行されたキャッシュページ２３０−Ｎの獲得指示を受けると、図８及び図９に示すページ獲得処理を実行する。
【００９１】
このページ獲得処理において、まず、キャッシュプロセッサ２０は、図８に示すように、ディスクディレクタ１０から受けた獲得指示が、図４及び図５に示すリード処理にて発行されたものか、図６に示すライト処理にて発行されたものかを判別する（ステップＳ２０１）。
【００９２】
ここで、獲得指示がリード処理にて発行されたものと判別した場合には（ステップＳ２０１；Ｎｏ）、ＲＡＭ２２に実装するグローバル共有テーブル２３４−Ｎに登録されている有効フラグ値が“２”であるか否かをチェックすることにより、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することが抑制されているか否かを判別する（ステップＳ２０２）。
【００９３】
ここで、有効フラグ値が“２”であり、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することが抑制されている判別した場合には（ステップＳ２０２；Ｙｅｓ）、有効フラグ値が“２”以外となるまで、ループして待つ。
【００９４】
これに対して、有効フラグ値が“２”以外であり、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することが抑制されていない判別した場合には（ステップＳ２０２；Ｎｏ）、獲得指示に含まれる獲得指示パラメータの論理ディスク番号、論理セクタ番号、及び転送セクタ長と、グローバル共有テーブル２３４−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、を比較するなどして、リード命令により読出の命令がなされたデータを含むデータを格納するキャッシュページ２３０−Ｎが別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されているか否かを判別する（ステップＳ２０３）。
【００９５】
ここで、キャッシュページ２３０−Ｎが別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていないと判別した場合には（ステップＳ２０３；Ｎｏ）、キャッシュヒットページ検索リンク１２３３を辿って、キャッシュヒットしているキャッシュページ２３０−Ｎを検索し、そのようなキャッシュページ２３０−Ｎがあるか否かを判別する（ステップＳ２０４）。
【００９６】
具体的にステップＳ２０４の処理では、獲得指示パラメータの論理ディスク番号に該当するキャッシュヒットページ検索リンク２３３が選択される。そして、このキャッシュヒットページ検索リンク２３３にリンクインしているキャッシュページ２３０−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、獲得指示パラメータの論理ディスク番号、論理セクタ番号、及び転送セクタ長と、が比較されるなどして、リード命令により読出の命令がなされたデータを含むデータを格納するキャッシュページ２３０−Ｎがあるか否かが判別される。
【００９７】
ここで、キャッシュヒットしているキャッシュページ２３０−Ｎがないと判別した場合には（ステップＳ２０４；Ｎｏ）、未使用キャッシュページリンク２３１からキャッシュページ２３０−Ｎをリンクアウトするとともに（ステップＳ２０５）、キャッシュページ２３０−Ｎに、獲得指示パラメータに含まれている論理ディスク番号及び論理セクタ番号と、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂを示すＭＰＵ番号と、を登録する（ステップＳ２０６）。そして、キャッシュプロセッサ２３は、キャッシュページ２３０−Ｎをキャッシュヒットページ検索リンク２３３にリンクインする（ステップＳ２０７）。
【００９８】
その後、キャッシュプロセッサ２３は、キャッシュページ２３０−Ｎのページ番号を含む獲得完了通知（CachePage獲得完了命令）をホストディレクタ１０に対して返却してから（ステップＳ２０８）、ページ返却処理を終了する。
【００９９】
これに対して、キャッシュヒットしているキャッシュページ２３０−Ｎがあると判別した場合には（ステップＳ２０４；Ｙｅｓ）、ＨＤＤ一致データリンク２３２からキャッシュページ２３０−Ｎをリンクアウトするとともに（ステップＳ２０９）、このキャッシュページ２３０−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、キャッシュページ２３０−Ｎのページ番号と、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂを示すＭＰＵ番号と、をグローバル共有テーブル２３４−Ｎに登録する（ステップＳ２１０）。そして、キャッシュプロセッサ２３は、グローバル共有テーブル２３４−Ｎに登録されている有効フラグ値を、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａが共有して使用することができることを示す“１”に設定する（ステップＳ２１１）。
【０１００】
また、ステップＳ２０３の処理にてキャッシュページ２３０−Ｎが別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていると判別した場合には（ステップＳ２０３；Ｙｅｓ）、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂを示すＭＰＵ番号をグローバル共有テーブル２３４−Ｎに登録する（ステップＳ２１２）。
【０１０１】
そして、ステップＳ２１１又はＳ２１２の処理を実行した後、キャッシュプロセッサ２３は、グローバル共有テーブル２３４−Ｎに登録されているページ番号とデータ格納範囲とを含む獲得完了通知をホストディレクタ１０に対して返却してから（ステップＳ２１３）、ページ返却処理を終了する。
【０１０２】
また、ステップＳ２０１の処理にて獲得指示がライト処理にて発行されたものと判別した場合には（ステップＳ２０１；Ｙｅｓ）、図９に示すように、獲得指示に含まれる獲得指示パラメータの論理ディスク番号、論理セクタ番号、及び転送セクタ長と、グローバル共有テーブル２３４−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、を比較するなどして、ライト命令により書込の命令がなされたデータを含むデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されているか否かを判別する（ステップＳ２１４）。
【０１０３】
ここで、キャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていると判別した場合には（ステップＳ２１４；Ｎｏ）、キャッシュヒットページ検索リンク１２３３を辿って、キャッシュヒットしているキャッシュページ２３０−Ｎを検索し、そのようなキャッシュページ２３０−Ｎがあるか否かを判別する（ステップＳ２１５）。
【０１０４】
ここで、キャッシュヒットしているキャッシュページ２３０−Ｎがないと判別した場合には（ステップＳ２１５；Ｎｏ）、未使用キャッシュページリンク２３１からキャッシュページ２３０−Ｎをリンクアウトするとともに（ステップＳ２１６）、キャッシュページ２３０−Ｎに、獲得指示パラメータに含まれている論理ディスク番号及び論理セクタ番号と、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂを示すＭＰＵ番号と、を登録して排他中にする（ステップＳ２１７）。そして、キャッシュプロセッサ２３は、キャッシュページ２３０−Ｎをキャッシュヒットページ検索リンク２３３にリンクインする（ステップＳ２１８）。
【０１０５】
その後、キャッシュプロセッサ２３は、排他中にしたキャッシュページ２３０−Ｎのページ番号を含む獲得完了通知をホストディレクタ１０に対して返却してから（ステップＳ２１９）、ページ獲得処理を終了する。
【０１０６】
これに対して、ステップＳ２１４の処理にてキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていると判別した場合には（ステップＳ２１４；Ｙｅｓ）、有効フラグ値を、キャッシュページ２３０−Ｎを同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａと共有して使用することが抑制されていることを示す“２”に設定する（ステップＳ２２０）。
【０１０７】
続いて、キャッシュプロセッサ２３は、グローバル共有テーブル２３４−Ｎに登録されているＭＰＵ番号が、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂとは別のホストプロセッサ１３ｂ又は１３ａを示すものを含んでいるか否かを判別する（ステップＳ２２１）。
【０１０８】
ここで、グローバル共有テーブル２３４−Ｎに登録されているＭＰＵ番号が、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂとは別のホストプロセッサ１３ｂ又は１３ａを示すものを含んでいると判別した場合には（ステップＳ２２１；Ｙｅｓ）、キャッシュページ２３０−Ｎの共有抑止通知を、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂとは別のホストプロセッサ１３ｂ又は１３ａに対して発行する（ステップＳ２２２）。
【０１０９】
そして、ステップＳ２２１の処理にてグローバル共有テーブル２３４−Ｎに登録されているＭＰＵ番号が、獲得指示を発行したホストプロセッサ１３ａ又は１３ｂとは別のホストプロセッサ１３ｂ又は１３ａを示すものを含んでいないと判別した場合（ステップＳ２２１；Ｎｏ）、ステップＳ２２２の処理を実行した後には、キャッシュページ２３０−ＮがＨＤＤ一致データリンク２３２にリンクインしているか否かを判別する（ステップＳ２２３）。
【０１１０】
その後、キャッシュプロセッサ２３は、キャッシュヒットしているキャッシュページ２３０−ＮがＨＤＤ一致データリンク２３２にリンクインするまで（ステップＳ２２３；Ｎｏ）、ループして待ち、ＨＤＤ一致データリンク２３２にリンクインすると（ステップＳ２２３；Ｙｅｓ）、グローバル共有テーブル２３４−Ｎから論理ディスク番号と論理セクタ番号とデータ格納範囲とページ番号とＭＰＵ番号とを削除するとともに（ステップＳ２２４）、有効フラグ値を初期値である“０”に戻す（ステップＳ２２５）。
【０１１１】
そして、キャッシュヒットしているキャッシュページ２３０−Ｎがあると判別した場合や（ステップＳ２１５；Ｙｅｓ）、ステップＳ２２５の処理を実行した後には、ＨＤＤ一致データリンク２３２からキャッシュページ２３０−Ｎをリンクアウトして排他中にするとともに（ステップＳ２２６）、排他中にしたキャッシュページ２３０−Ｎのページ番号とデータ格納範囲とを含む獲得完了通知をホストディレクタ１０に対して返却してから（ステップＳ２２７）、ページ獲得処理を終了する。
【０１１２】
また、キャッシュプロセッサ２３は、ディスクディレクタ１０からキャッシュディレクタ２０に対して発行されたキャッシュページ２３０−Ｎの返却指示を受けると、図１０に示すページ返却処理を実行する。
【０１１３】
このページ返却処理において、まず、キャッシュプロセッサ２０は、図１０に示すように、グローバル共有テーブル２３４−Ｎに登録されている有効フラグ値が“０”であるか“１”であるかをチェックすることにより、論理ディスク番号と論理セクタ番号とデータ格納範囲とページ番号とＭＰＵ番号とが登録されているグローバル共有テーブル２３４−Ｎがあるか否かを判別する（ステップＳ２３１）。
【０１１４】
ここで、有効フラグ値が“１”であることより、論理ディスク番号と論理セクタ番号とデータ格納範囲とページ番号とＭＰＵ番号とが登録されているグローバル共有テーブル２３４−Ｎがあると判別した場合には（ステップＳ２３１；Ｙｅｓ）、グローバル共有テーブル２３４−Ｎに登録されているＭＰＵ番号が、返却指示を発行したホストプロセッサ１３ａ又は１３ｂとは別のホストプロセッサ１３ｂ又は１３ａを示すものを含んでいるか否かを判別する（ステップＳ２３２）。
【０１１５】
ここで、グローバル共有テーブル２３４−Ｎに登録されているＭＰＵ番号が、返却指示を発行したホストプロセッサ１３ａ又は１３ｂを示すものを含んでいないと判別した場合には（ステップＳ２３２；Ｎｏ）、グローバル共有テーブル２３４−Ｎから論理ディスク番号と論理セクタ番号とデータ格納範囲とページ番号とＭＰＵ番号とを削除するとともに（ステップＳ２３３）、有効フラグ値を初期値である“０”に戻す（ステップＳ２３４）。
【０１１６】
そして、ステップＳ２３１の処理にて有効フラグ値が“０”であることより、論理ディスク番号と論理セクタ番号とデータ格納範囲とページ番号とＭＰＵ番号とが登録されているグローバル共有テーブル２３４−Ｎがないと判別した場合や（ステップＳ２３１；Ｎｏ）、ステップＳ２３４の処理を実行した後には、キャッシュページ２３０−Ｎを、ＨＤＤ一致データリンク２３２にリンクインする（ステップＳ２３５）。
【０１１７】
これに対して、ステップＳ２３２の処理にてグローバル共有テーブル２３４−Ｎに登録されているＭＰＵ番号が、返却指示を発行したホストプロセッサ１３ａ又は１３ｂとは別のホストプロセッサ１３ｂ又は１３ａを示すものを含んでいると判別した場合には（ステップＳ２３２；Ｙｅｓ）、キャッシュページ２３０−Ｎに記憶されているＭＰＵ番号を、返却指示を発行したホストプロセッサ１３ａ又は１３ｂとは別のホストプロセッサ１３ｂ又は１３ａを示すＭＰＵ番号に書き換えるとともに（ステップＳ２３６）、グローバル共有テーブル２３４−Ｎから、返却指示を発行したホストプロセッサ１３ａ又は１３ｂを示すＭＰＵ番号を削除する（ステップＳ２３７）。
【０１１８】
その後、キャッシュプロセッサ２３は、キャッシュページ２３０−Ｎの返却完了通知をホストディレクタ１０に対して返却してから（ステップＳ２３８）、ページ返却処理を終了する。
【０１１９】
他方、ディスクプロセッサ３３は、ディスクディレクタ１０からディスクディレクタ３０に対して発行された読出指示を受けると、図１１に示すディスク読出処理を実行する。
【０１２０】
このディスク読出処理において、まず、ディスクプロセッサ３０は、読出指示に含まれるＨＤＤ読出パラメータの論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータを、物理ディスクアレイ３のハードディスクドライブから、ＨＤＤ読出パラメータのページ番号が示すキャッシュページ２３０−Ｎに対して転送する（ステップＳ３０１）。その後、ディスクプロセッサ３３は、読出完了通知をホストディレクタ１０に対して返却してから（ステップＳ３０２）、ディスク読出処理を終了する。
【０１２１】
また、ディスクプロセッサ３３は、ディスクディレクタ１０からディスクディレクタ３０に対して発行された書込指示を受けると、図１２に示すディスク書込処理を実行する。
【０１２２】
このディスク読出処理において、まず、ディスクプロセッサ３０は、書込指示に含まれるＨＤＤ書込パラメータの論理ディスク番号と論理セクタ番号と転送セクタ長とに対応するデータを、ＨＤＤ書込パラメータのページ番号が示すキャッシュページ２３０−Ｎから、物理ディスクアレイ３のハードディスクドライブに対して転送する（ステップＳ３１１）。その後、ディスクプロセッサ３３は、書込完了通知をホストディレクタ１０に対して返却してから（ステップＳ３１２）、ディスク書込処理を終了する。
【０１２３】
続いて、上記動作の具体例について、図面を参照して説明する。
【０１２４】
［１］まず、キャッシュページ２３０−Ｎ上に格納されたデータに関して、複数のリード命令が同一のホストプロセッサ１３ａ又は１３ｂに対してのみ発行された場合の動作例について説明する。
【０１２５】
例えば、既にページ番号が“２”のキャッシュページ２３０−２上に、論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”〜“０ｘ０２４０”のデータが格納されている場合において、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”〜“０ｘ０２１０”のデータの読出を指定するリード命令＃１を受けると、ホストディレクタ１０では、まず、ホストプロセッサ１３ａにより、タスク“０”にて、図４及び図５に示すリード処理が実行される。このリード処理では、図４に示すステップＳ１０１の処理にて、リード命令＃１が解析され、図１３（ａ）に示すように、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とが内部テーブル１３０ａ−０に記憶される。
【０１２６】
ここでは、リード命令＃１により読出の命令がなされたデータを含むデータがローカル共有テーブル１３１ａ−Ｎに登録されていないことから、ステップＳ１０２の処理では、このようなデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていないと判別される。このため、ステップＳ１０４の処理では、図１３（ｂ）に示すような、リード命令＃１により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とから構成される獲得指示パラメータを含むキャッシュページ２３０−Ｎの獲得指示がキャッシュディレクタ２０に対して発行される。
【０１２７】
一方、ホストディレクタ１０から獲得指示を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、図８及び図９に示すページ獲得処理が実行される。このページ獲得処理では、リード命令＃１により読出の命令がなされたデータを含むデータがグローバル共有テーブル２３４−Ｎに登録されていないことから、図８に示すステップＳ２０３の処理にて、このようなデータを格納するキャッシュページ２３０−Ｎが別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていないと判別される。また、キャッシュページ２３０−２には、図１４（ａ）に示すように、獲得指示パラメータの論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とから指定されるデータを含むデータが格納されていることから、ステップＳ２０４の処理では、キャッシュページ２３０−２が検索される。
【０１２８】
このため、ステップＳ２０９〜Ｓ２１１の処理では、ＨＤＤ一致データリンク２３２からキャッシュページ２３０−２がリンクアウトされて排他中にされ、図１４（ｂ）に示すように、キャッシュページ２３０−２に登録されている論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”、及びデータ格納範囲“０ｘ００”〜“０ｘ４０”と、キャッシュページ２３０−２のページ番号“Ｐａｇｅ２”と、獲得指示を発行したホストプロセッサ１３ａを示すＭＰＵ番号“０ｘ０００１”と、がグローバル共有テーブル２３４−０に登録されるとともに、有効フラグ値が“１”に設定される。
【０１２９】
その後、ステップＳ２１３の処理では、図１５（ａ）に示すような、グローバル共有テーブル２３４−０に登録されたページ番号“Ｐａｇｅ２”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とを含む獲得完了通知がホストディレクタ１０に対して返却されることにより、ホストディレクタ１０には、キャッシュページ２３０−２の獲得完了、ページ番号“Ｐａｇｅ２”、及びデータ格納範囲“０ｘ００”〜“０ｘ４０”が通知される。
【０１３０】
そして、キャッシュディレクタ２０から獲得完了通知を受けると、ホストディレクタ１０では、ホストプロセッサ１３ａにより、図１５（ｂ）に示すように、図４に示すステップＳ１０６の処理にて獲得完了通知に含まれるキャッシュページ２３０−２のページ番号が内部テーブル１３０ａ−０に記憶された後、獲得完了通知にデータ格納範囲“０ｘ００”〜“０ｘ４０”が含まれていることから、ステップＳ１０７の処理にてキャッシュページ２３０−２にデータが格納されていると判別される。
【０１３１】
このため、ステップＳ１１０及びＳ１１１の処理では、図１５（ｃ）に示すように、内部テーブル１３０ａ−０に記憶されている論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”、及びページ番号“Ｐａｇｅ２”と、獲得完了通知に含まれるデータ格納範囲“０ｘ００”〜“０ｘ４０”と、がローカル共有テーブル１３１ａ−０に登録されるともに、有効フラグ値が“１”に設定される。
【０１３２】
その後、ステップＳ１１３の処理では、内部テーブル１３０ａ−０に記憶されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”に対応するデータが、ページ番号“Ｐａｇｅ２”が示すキャッシュページ２３０−２からホスト装置２に対して転送される。
【０１３３】
その間に、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２１０”〜“０ｘ０２２０”のデータの読出を指定するリード命令＃２を受けると、ホストディレクタ１０では、タスク“１”にてリード処理が実行され、このリード処理では、ステップＳ１０１の処理にて、リード命令＃１が解析され、図１６（ａ）に示すように、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とが内部テーブル１３０ａ−１に記憶される。
【０１３４】
ここでは、リード命令＃２により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とに対応するデータが、ローカル共有テーブル１３１ａ−０に登録されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”に対応するデータに含まれていることから、ステップＳ１０２の処理では、このようなデータを格納するキャッシュページ２３０−２が他のタスク“０”により共有して使用されていると判別される。
【０１３５】
また、ステップＳ１０３の処理にて有効フラグ値が“１”であると判別されることから、ステップＳ１１２の処理では、図１６（ｂ）に示すように、自分のタスクＩＤ（Identification Data）“１”がローカル共有テーブル１３１ａ−０に登録されてキャッシュページ２３０−２が共有中にされた後、共有タスクカウント値が“１”カウントアップされて“１”となる。
【０１３６】
その後、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２２０”〜“０ｘ０２３０”のデータの読出を指定するリード命令＃３と、論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２３０”〜“０ｘ０２４０”のデータの読出を指定するリード命令＃４と、を順次受けると、それぞれタスク“２”及び“３”にてリード処理が実行される。これらのリード処理では、それぞれ、ステップＳ１０１の処理にて、リード命令＃３及び＃４が解析され、論理ディスク番号と論理セクタ番号と転送セクタ長とが内部テーブル１３０ａ−０に記憶されるとともに、ステップＳ１１２の処理にて、自分のタスクＩＤ“２”及び“３”がローカル共有テーブル１３１ａ−０に登録されてキャッシュページ２３０−２を共有中にされた後、共有タスクカウント値が“１”ずつカウントアップされる。
【０１３７】
これにより、内部テーブル１３０ａ−３には、図１７（ａ）に示すように、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ１０”とが記憶されるとともに、ローカル共有テーブル１３１ａ−０に登録されている共有タスクカウント値は、図１７（ｂ）に示すように、“３”となる。
【０１３８】
ここで、タスク“１”〜“３”にてリード処理が実行されている場合において、タスク“０”にて実行されるリード処理内のステップＳ１１３の処理が実行された後には、有効フラグ値が“１”であることから、図５に示すステップＳ１１４の処理にてキャッシュページ２３０−２が他のタスク“１”〜“３”と共有して使用していたと判別される。また、ステップＳ１１５の処理にて共有タスクカウント値が“１”カウントダウンされて“２”となることから、ステップＳ１１６の処理では、キャッシュページ２３０−２を使用している他のタスク“１”〜“３”が未だあると判別され、ステップＳ１１９の処理にてキャッシュページ２３０−２の返却指示がキャッシュディレクタ２０に対して発行されることなく、そのままタスク“０”でのリード処理が終了される。
【０１３９】
このように、キャッシュページ２３０−２を使用している他のタスク“１”〜“３”が未だある場合には、ステップＳ１１９の処理によるキャッシュページ２３０−２の返却指示の発行が省略される。
【０１４０】
また、タスク“１”及び“２”にて実行されるリード処理内のステップＳ１１３の処理が終了した後にも、ステップＳ１１５の処理にてカウントダウンされた共有タスクカウント値が“０”以外であることから、ステップＳ１１６の処理では、キャッシュページ２３０−２を使用している他のタスク“１”〜“３”が未だあると判別され、ステップＳ１１９の処理によるキャッシュページ２３０−２の返却指示の発行が省略される。
【０１４１】
そして、タスク“３”にて実行されるリード処理内のステップＳ１１３の処理が終了した後には、ステップＳ１１５の処理にてカウントダウンされる共有タスクカウント値が“０”となることから、ステップＳ１１６の処理では、キャッシュページ２３０−２を使用している同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａがもはやないと判別され、ステップＳ１１７及びＳ１１８の処理にてローカル共有テーブル１３１ａ−０から論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とページ番号“Ｐａｇｅ２”とが削除されるとともに、有効フラグ値が初期値である“０”に戻される。その後、ステップＳ１１９の処理では、図１８に示すように、キャッシュページ２３０−２の返却指示がキャッシュディレクタ２０に対して発行される。
【０１４２】
一方、ホストディレクタ１０から返却指示を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、図１０に示すページ返却処理が実行される。このページ返却処理では、ステップＳ２３１の処理にてグローバル共有テーブル２３４−０に登録されている有効フラグ値が“１”であると判別され、ステップＳ２３２の処理にて返却指示を発行したホストプロセッサ１３ａを示すＭＰＵ番号“０ｘ０００１”がグローバル共有テーブル２３４−０に登録されていると判別される。
【０１４３】
このため、ステップＳ２３３及びＳ２３４の処理では、図１９に示すように、グローバル共有テーブル２３４−０から、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とページ番号“Ｐａｇｅ２”とＭＰＵ番号“０ｘ０００１”とが削除されるとともに、有効フラグ値が初期値である“０”に戻されて、キャッシュページ２３０−２の排他が解除される。そして、ステップＳ２３５の処理では、キャッシュページ２３０−２がＨＤＤ一致データリンク２３２の最後尾にリンクインされる。
【０１４４】
その後、ステップＳ２３８の処理では、キャッシュページ２３０−２の返却完了通知をホストディレクタ１０に対して返却される。そして、キャッシュディレクタ２０から返却完了通知を受けると、ホストディレクタ１０では、ホストプロセッサ１３ａによるタスク“３”でのリード処理が終了される。
【０１４５】
［２］次に、キャッシュページ２３０−Ｎ上に格納されたデータに関して、複数のリード命令がそれぞれ別のホストプロセッサ１３ａ及び１３ｂに対して発行された場合の動作例について説明する。
【０１４６】
例えば、既にページ番号が“２”のキャッシュページ２３０−２上に、論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”〜“０ｘ０２４０”のデータが格納されている場合において、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”〜“０ｘ０２１０”のデータの読出を指定するリード命令＃１を受けると、ホストディレクタ１０では、まず、ホストプロセッサ１３ａにより、タスク“０”にて、図４及び図５に示すリード処理が実行される。このリード処理では、図４に示すステップＳ１０１の処理にて、リード命令＃１が解析され、図２０（ａ）に示すように、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ１０”とが内部テーブル１３０ａ−０に記憶される。
【０１４７】
ここでは、リード命令＃１により読出の命令がなされたデータを含むデータがローカル共有テーブル１３１ａ−Ｎに登録されていないことから、ステップＳ１０２の処理では、このようなデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ内の他のタスクや別のホストプロセッサ１３ｂにより共有して使用されていないと判別される。このため、ステップＳ１０４の処理では、図２０（ｂ）に示すような、リード命令＃１により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ１０”とから構成される獲得指示パラメータを含むキャッシュページ２３０−Ｎの獲得指示（ＨＰ１）がキャッシュディレクタ２０に対して発行される。
【０１４８】
その後、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２３０”〜“０ｘ０２４０”のデータの読出を指定するリード命令＃４を受けると、ホストディレクタ１０では、タスク“０”にて、リード処理が実行され、このリード処理では、ステップＳ１０１の処理にて、リード命令＃１が解析され、図２０（ｃ）に示すように、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２３０”と転送セクタ長“０ｘ１０”とが内部テーブル１３０ｂ−０に記憶される。
【０１４９】
ここでは、リード命令＃４により読出の命令がなされたデータを含むデータがローカル共有テーブル１３１ｂ−Ｎに登録されていないことから、ステップＳ１０２の処理では、このようなデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ｂ内の他のタスクや別のホストプロセッサ１３ａにより共有して使用されていないと判別される。このため、ステップＳ１０４の処理では、図２０（ｄ）に示すような、リード命令＃４により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２３０”と転送セクタ長“０ｘ１０”とから構成される獲得指示パラメータを含むキャッシュページ２３０−Ｎの獲得指示（ＨＰ２）がキャッシュディレクタ２０に対して発行される。
【０１５０】
一方、ホストディレクタ１０から獲得指示（ＨＰ１）を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、図８及び図９に示すページ獲得処理が実行される。このページ獲得処理では、リード命令＃１により読出の命令がなされたデータを含むデータがグローバル共有テーブル２３４−Ｎに登録されていないことから、図８に示すステップＳ２０３の処理にて、このようなデータを格納するキャッシュページ２３０−Ｎが別のホストプロセッサ１３ａにより共有して使用されていないと判別される。また、キャッシュページ２３０−２には、図２１に示すように、獲得指示パラメータの論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とから指定されるデータを含むデータが格納されていることから、ステップＳ２０４の処理では、キャッシュページ２３０−２が検索される。
【０１５１】
このため、ステップＳ２０９〜Ｓ２１１の処理では、図２１に示すように、ＨＤＤ一致データリンク２３２からキャッシュページ２３０−２がリンクアウトされて排他中にされ、キャッシュページ２３０−２に登録されている論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”、及びデータ格納範囲“０ｘ００”〜“０ｘ４０”と、キャッシュページ２３０−２のページ番号“Ｐａｇｅ２”と、獲得指示（ＨＰ２）を発行したホストプロセッサ１３ａを示すＭＰＵ番号“０ｘ０００１”と、がグローバル共有テーブル２３４−０に登録されるとともに、有効フラグ値が“１”に設定される。
【０１５２】
その後、ステップＳ２１３の処理では、グローバル共有テーブル２３４−０に登録されたページ番号“Ｐａｇｅ２”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とを含む獲得完了通知（ＨＰ１）がホストディレクタ１０に対して返却される。
【０１５３】
また、ホストディレクタ１０から獲得指示（ＨＰ２）を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、ページ獲得処理が実行され、このページ獲得処理では、図８に示すステップＳ２０３の処理にて、リード命令＃４により読出の命令がなされたデータを含むデータを格納するキャッシュページ２３０−２が、獲得指示（ＨＰ２）を発行したホストプロセッサ１３ｂとは別のホストプロセッサ１３ａにより共有して使用されていると判別されることから、ステップＳ２１２の処理にて、図２１に示すように、獲得指示（ＨＰ２）を発行したホストプロセッサ１３ｂを示すＭＰＵ番号“０ｘ０００２”がグローバル共有テーブル２３４−０に登録される。
【０１５４】
その後には、ステップＳ２０９の処理によるＨＤＤ一致データリンク２３２からのキャッシュページ２３０−２のリンクアウトといったキャッシュページ２３０−２の排他処理が省略されて、ステップＳ２１３の処理にて、グローバル共有テーブル２３４−０に登録されたページ番号“Ｐａｇｅ２”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とを含む獲得完了通知（ＨＰ２）がホストディレクタ１０に対して返却される。
【０１５５】
まず、キャッシュディレクタ２０から獲得完了通知（ＨＰ１）を受けると、キャッシュディレクタ２０では、ステップＳ１０６の処理にて獲得完了通知（ＨＰ１）に含まれるキャッシュページ２３０−２のページ番号“２”が内部テーブル１３０ａ−０に記憶された後、ステップＳ１１３の処理にて、内部テーブル１３０ａ−０に記憶されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２３０”と転送セクタ長“０ｘ１０”とに対応するデータが、ページ番号“Ｐａｇｅ２”が示すキャッシュページ２３０−２からホスト装置２に対して転送される。
【０１５６】
そして、図３１に示すステップＳ１１９の処理では、図２２に示すような、内部テーブル１３０ａ−０に記憶されているページ番号“Ｐａｇｅ２”を含むキャッシュページ２３０−Ｎの返却指示（ＨＰ１）がキャッシュディレクタ２０に対して発行される。
【０１５７】
ホストディレクタ１０から返却指示（ＨＰ１）を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、図１０に示すページ返却処理が実行される。このページ返却処理では、ステップＳ２３１の処理にてグローバル共有テーブル２３４−０に登録されている有効フラグ値が“１”であると判別され、ステップＳ２３２の処理にて返却指示（ＨＰ１）を発行したホストプロセッサ１３ａとは別のホストプロセッサ１３ｂを示すＭＰＵ番号“０ｘ０００２”がグローバル共有テーブル２３４−０に登録されていると判別される。
【０１５８】
このため、ステップＳ２３６及びＳ２３７の処理では、図２３に示すように、キャッシュページ２３０−２に記憶されているＭＰＵ番号が、返却指示（ＨＰ１）を発行したホストプロセッサ１３ａとは別のホストプロセッサ１３ｂを示すＭＰＵ番号“０ｘ０００２”に書き換えられるとともに、グローバル共有テーブル２３４−０から、返却指示（ＨＰ１）を発行したホストプロセッサ１３ａを示すＭＰＵ番号“０ｘ０００１”が削除される。
【０１５９】
その後、ステップＳ２３８の処理では、キャッシュページ２３０−２の返却完了通知をホストディレクタ１０に対して返却される。そして、キャッシュディレクタ２０から返却完了通知を受けると、ホストディレクタ１０では、ホストプロセッサ１３ａによるタスク“０”でのリード処理が終了される。
【０１６０】
次に、キャッシュディレクタ２０から獲得完了通知（ＨＰ２）を受けると、キャッシュディレクタ２０では、ステップＳ１０６の処理にて獲得完了通知（ＨＰ２）に含まれるキャッシュページ２３０−２のページ番号“Ｐａｇｅ２”が内部テーブル１３０ｂ−０に記憶された後、ステップＳ１１３の処理にて、内部テーブル１３０ｂ−０に記憶されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２３０”と転送セクタ長“０ｘ１０”とに対応するデータが、ページ番号“Ｐａｇｅ２”が示すキャッシュページ２３０−２からホスト装置２に対して転送される。
【０１６１】
そして、図３１に示すステップＳ１１９の処理では、内部テーブル１３０ｂ−０に記憶されているページ番号“Ｐａｇｅ２”を含むキャッシュページ２３０−２の返却指示（ＨＰ２）がキャッシュディレクタ２０に対して発行される。
【０１６２】
ホストディレクタ１０から返却指示を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、図１０に示すページ返却処理が実行される。このページ返却処理では、ステップＳ２３１の処理にてグローバル共有テーブル２３４−０に登録されている有効フラグ値が“１”であると判別され、ステップＳ２３２の処理にて返却指示（ＨＰ２）を発行したホストプロセッサ１３ｂを示すＭＰＵ番号“０ｘ０００２”がグローバル共有テーブル２３４−０に登録されていると判別される。
【０１６３】
このため、ステップＳ２３３及びＳ２３４の処理では、グローバル共有テーブル２３４−０から、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とページ番号“Ｐａｇｅ２”とＭＰＵ番号“０ｘ０００２”とが削除されるとともに、有効フラグ値が初期値である“０”に戻されて、キャッシュページ２３０−２の排他が解除される。そして、ステップＳ２３５の処理では、キャッシュページ２３０−２がＨＤＤ一致データリンク２３２の最後尾にリンクインされる。
【０１６４】
その後、ステップＳ２３８の処理では、キャッシュページ２３０−２の返却完了通知をホストディレクタ１０に対して返却される。そして、キャッシュディレクタ２０から返却完了通知を受けると、ホストディレクタ１０では、ホストプロセッサ１３ｂによるタスク“０”でのリード処理が終了される。
【０１６５】
［３］最後に、キャッシュページ２３０−Ｎが同一ホストプロセッサ１３ｂ内の他のタスクにより共有して使用されているときに、ライト命令が発行されて共有制御が抑制される場合の動作例について説明する。
【０１６６】
例えば、既にページ番号が“２”のキャッシュページ２３０−２上に、論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”〜“０ｘ０２４０”のデータが格納されている場合において、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”〜“０ｘ０２１０”のデータの読出を指定するリード命令＃１を受けると、ホストディレクタ１０では、まず、ホストプロセッサ１３ａにより、タスク“０”にて、図４及び図５に示すリード処理が実行される。このリード処理では、図４に示すステップＳ１０１の処理にて、リード命令＃１が解析され、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とが内部テーブル１３０ａ−０に記憶される。
【０１６７】
ここでは、リード命令＃１により読出の命令がなされたデータを含むデータがローカル共有テーブル１３１ａ−Ｎに登録されていないことから、ステップＳ１０２の処理では、このようなデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていないと判別される。このため、ステップＳ１０４の処理では、リード命令＃１により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とから構成される獲得指示パラメータを含むキャッシュページ２３０−Ｎの獲得指示がキャッシュディレクタ２０に対して発行される。
【０１６８】
一方、ホストディレクタ１０から獲得指示を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、図８及び図９に示すページ獲得処理が実行される。このページ獲得処理では、リード命令＃１により読出の命令がなされたデータを含むデータがグローバル共有テーブル２３４−Ｎに登録されていないことから、図８に示すステップＳ２０３の処理にて、このようなデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていないと判別される。また、キャッシュページ２３０−２には、獲得指示パラメータの論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とから指定されるデータを含むデータが格納されていることから、ステップＳ２０４の処理では、キャッシュページ２３０−２が検索される。
【０１６９】
このため、ステップＳ２０９〜Ｓ２１１の処理では、ＨＤＤ一致データリンク２３２からキャッシュページ２３０−２がリンクアウトされて排他中にされ、キャッシュページ２３０−２に登録されている論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”、及びデータ格納範囲“０ｘ００”〜“０ｘ４０”と、キャッシュページ２３０−２のページ番号“Ｐａｇｅ２”と、獲得指示を発行したホストプロセッサ１３ａを示すＭＰＵ番号“０ｘ０００１”と、がグローバル共有テーブル２３４−０に登録されるとともに、有効フラグ値が“１”に設定される。
【０１７０】
その後、ステップＳ２１３の処理では、グローバル共有テーブル２３４−０に登録されたページ番号“Ｐａｇｅ２”とデータ格納範囲“０ｘ００”〜“０ｘ４０”とを含む獲得完了通知がホストディレクタ１０に対して返却されることにより、ホストディレクタ１０には、キャッシュページ２３０−２の獲得完了、ページ番号“Ｐａｇｅ２”、及びデータ格納範囲“０ｘ００”〜“０ｘ４０”が通知される。
【０１７１】
そして、キャッシュディレクタ２０から獲得完了通知を受けると、ホストディレクタ１０では、ホストプロセッサ１３ａにより、図４に示すステップＳ１０６の処理にて獲得完了通知に含まれるキャッシュページ２３０−２のページ番号が内部テーブル１３０ａ−０に記憶された後、獲得完了通知にデータ格納範囲“０ｘ００”〜“０ｘ４０”が含まれていることから、ステップＳ１０７の処理にてキャッシュページ２３０−２にデータが格納されていると判別される。
【０１７２】
このため、ステップＳ１１０及びＳ１１１の処理では、内部テーブル１３０ａ−０に記憶されている論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２００”、及びページ番号“Ｐａｇｅ２”と、獲得完了通知に含まれるデータ格納範囲“０ｘ００”〜“０ｘ４０”と、がローカル共有テーブル１３１ａ−０に登録されるともに、有効フラグ値が“１”に設定される。
【０１７３】
その後、ステップＳ１１３の処理では、内部テーブル１３０ａ−０に記憶されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”に対応するデータが、ページ番号“Ｐａｇｅ２”が示すキャッシュページ２３０−２からホスト装置２に対して転送される。
【０１７４】
その間に、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２１０”〜“０ｘ０２２０”のデータの読出を指定するリード命令＃２を受けると、ホストディレクタ１０では、タスク“１”にてリード処理が実行され、このリード処理では、ステップＳ１０１の処理にて、リード命令＃１が解析され、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とが内部テーブル１３０ａ−１に記憶される。
【０１７５】
ここでは、リード命令＃２により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”と転送セクタ長“０ｘ００１０”とに対応するデータが、ローカル共有テーブル１３１ａ−０に登録されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”に対応するデータに含まれていることから、ステップＳ１０２の処理では、このようなデータを格納するキャッシュページ２３０−２が他のタスク“０”により共有して使用されていると判別される。
【０１７６】
また、ステップＳ１０３の処理にて有効フラグ値が“１”であると判別されることから、ステップＳ１１２の処理では、自分のタスクＩＤ（Identification Data）“１”がローカル共有テーブル１３１ａ−０に登録されてキャッシュページ２３０−２が共有中にされた後、共有タスクカウント値が“１”カウントアップされて“１”となる。
【０１７７】
その後、論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２２０”〜“０ｘ０２３０”のデータの書込を指定するライト命令＃５を受けると、ホストディレクタ１０では、まず、ホストプロセッサ１３ａにより、タスク“１”にて、図６に示すライト処理が実行される。このライト処理では、ステップＳ１２１の処理にて、ライト命令＃５が解析され、図２４（ａ）に示すように、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２２０”と転送セクタ長“０ｘ００１０”とが内部テーブル１３０ａ−２に記憶される。
【０１７８】
ここでは、ライト命令＃５により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２２０”と転送セクタ長“０ｘ００１０”とに対応するデータが、ローカル共有テーブル１３１ａ−０に登録されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”に対応するデータに含まれていることから、ステップＳ１２２の処理では、このようなデータを格納するキャッシュページ２３０−２が他のタスク“０”及び“１”により共有して使用されていると判別される。
【０１７９】
このため、ステップＳ１２３の処理では、図２４（ｂ）に示すように、ローカル共有テーブル１３１ａ−０に登録されている有効フラグ値が“２”に設定されて、キャッシュページ２３０−２を同一ホストプロセッサ１３ａ内の他のタスクや別のホストプロセッサ１３ｂと共有して使用することが抑制される。
【０１８０】
そして、ステップＳ１２４の処理では、図２５に示すように、ライト命令＃５により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２２０”と転送セクタ長“０ｘ００１０”とから構成される獲得指示パラメータを含むキャッシュページ２３０−Ｎの獲得指示（Write用）がキャッシュディレクタ２０に対して発行される。
【０１８１】
その後、ホスト装置２から論理ディスク番号“０ｘ００２０”、論理セクタ番号“０ｘ０２２０”〜“０ｘ０２３０”のデータの読出を指定するリード命令＃３を受けると、ホストディレクタ１０では、タスク“３”にてリード処理が実行され、このリード処理では、ステップＳ１０１の処理にて、リード命令＃３が解析され、論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２２０”と転送セクタ長“０ｘ００１０”とが内部テーブル１３０ａ−３に記憶される。
【０１８２】
ここでは、リード命令＃３により指定された論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２２０”と転送セクタ長“０ｘ００１０”とに対応するデータが、ローカル共有テーブル１３１ａ−０に登録されている論理ディスク番号“０ｘ００２０”と論理セクタ番号“０ｘ０２００”とデータ格納範囲“０ｘ００”〜“０ｘ４０”に対応するデータに含まれていることから、ステップＳ１０２の処理では、このようなデータを格納するキャッシュページ２３０−２が他のタスク“０”〜“２”により共有して使用されていると判別される。
【０１８３】
また、ステップＳ１０３の処理にて有効フラグ値が“２”であると判別されることから、ステップＳ１０４の処理によるキャッシュページ２３０−Ｎの獲得指示のキャッシュディレクタ２０に対する発行が省略されることなく実行される。
【０１８４】
ところで、ホストディレクタ１０から獲得指示（Write用）を受けると、キャッシュディレクタ２０では、キャッシュプロセッサ２３により、ページ獲得処理が実行され、このページ獲得処理では、図８に示すステップＳ２０１の処理にて、獲得指示（Write用）がライト処理にて発行されたものと判別され、また、図９に示すステップＳ２１４の処理にて、ライト命令＃５により書込の命令がなされたデータを含むデータを格納するキャッシュページ２３０−２が他のタスク“０”〜“２”により共有して使用されていると判別される。
【０１８５】
このため、ステップＳ２２０の処理では、図２６に示すように、グローバル共有テーブル２３４−０に登録されている有効フラグ値が“２”に設定されて、以後、キャッシュページ２３０−２を同一ホストプロセッサ１３ａ内の他のタスクや別のホストプロセッサ１３ｂと共有して使用することが抑制されるとともに、ステップＳ２２１の処理にて、獲得指示（Write用）を発行したホストプロセッサ１３ａとは別のホストプロセッサ１３ｂを示すＭＰＵ番号“０ｘ０００２”がグローバル共有テーブル２３４−０に登録されていると判別された場合には、ステップＳ２２２の処理にて、キャッシュページ２３０−２の共有抑止通知（CashePage共有抑止通知）が、獲得指示を発行したホストプロセッサ１３ａとは別のホストプロセッサ１３ａに対して発行される。
【０１８６】
そして、キャッシュディレクタ２０から共有抑止通知を受けると、ホストディレクタ１０では、ホストプロセッサ１３ｂにより、図７に示すページ共有抑止処理が実行される。このページ共有抑制処理では、ステップＳ１４１の処理にて、ローカル共有テーブル１３１ｂ−Ｎに登録されている有効フラグ値が“２”に設定されて、以後、キャッシュページ２３０−２を同一ホストプロセッサ１３ｂ内の他のタスクや別のホストプロセッサ１３ａと共有して使用することが抑制される。
【０１８７】
一方、キャッシュディレクタ２０では、他のタスク“０”及び“１”によりキャッシュページ２３０−２が共有して使用されて排他中である場合、即ちキャッシュページ２３０−２がキャッシュヒットしている場合、キャッシュプロセッサ２３により、図９に示すステップＳ２２３の処理にて、キャッシュヒットしているキャッシュページ２３０−２がＨＤＤ一致データリンク２３２にリンクインされるまでループして待たれる。
【０１８８】
その後、ＨＤＤ一致データリンク２３２にリンクインされて排他が解除されると、ステップＳ２２６の処理では、ＨＤＤ一致データリンク２３２からキャッシュページ２３０−Ｎがリンクアウトされることにより、キャッシュページ２３０−２が獲得される。
【０１８９】
これにより、ライト処理によりキャッシュページ２３０−２が使用されて排他中となっている場合には、このキャッシュページ２３０−２の共有が禁止される。
【０１９０】
以上説明したように、本実施形態におけるディスクアレイ装置１によれば、ホストプロセッサ１３ａ又は１３ｂは、ステップＳ１０２の処理にてリード命令により指定された論理ディスク番号、論理セクタ番号、及び転送セクタ長と、ローカル共有テーブル１３１ａ−Ｎ又は１３１ｂ−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、を比較するなどして、リード命令により読出の命令がなされたデータを含むデータを格納するキャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されているか否かを判別する。
【０１９１】
そして、キャッシュページ２３０−Ｎが同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていると判別した場合には、キャッシュページ２３０−Ｎの獲得指示をキャッシュディレクタ２０に対して発行するステップＳ１０４の処理や、読出指示をディスクディレクタ３０に対して発行するステップＳ１０８の処理などを省略することができる。
【０１９２】
また、ステップＳ１１４の処理にてキャッシュページ２３０−Ｎを共有して使用している同一ホストプロセッサ１３ａ又は１３ｂ内の他のタスクや別のホストプロセッサ１３ｂ又は１３ａがなくなったと判別するまで、キャッシュページ２３０−Ｎの返却指示をキャッシュディレクタ２０に対して発行するステップＳ１１９の処理も省略することができる。
【０１９３】
このように、ホストディレクタ１０からキャッシュディレクタ２０に対する処理や、ホストディレクタ１０からディスクディレクタ３０に対する処理、さらにはこれに応答してキャッシュディレクタ２０内で実行されるページ獲得処理及びページ返却処理や、キャッシュディレクタ２０内で実行されるディスク読出処理などを省略することができるため、ディスクアレイ装置１内での処理を高速化してデータの読出性能を向上させることができる。
【０１９４】
また、キャッシュプロセッサ２３は、ステップＳ２０３の処理にて獲得指示パラメータの論理ディスク番号、論理セクタ番号、及び転送セクタ長と、グローバル共有テーブル２３４−Ｎに登録されている論理ディスク番号、論理セクタ番号、及びデータ格納範囲と、を比較するなどして、リード命令により読出の命令がなされたデータを含むデータを格納するキャッシュページ２３０−Ｎが別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されているか否かを判別する。
【０１９５】
そして、キャッシュページ２３０−Ｎが別のホストプロセッサ１３ｂ又は１３ａにより共有して使用されていると判別した場合には、ＨＤＤ一致データリンク２３２からキャッシュページ２３０−Ｎをリンクアウトして排他中にするステップＳ２０８の処理などを省略することができる。
【０１９６】
このように、キャッシュディレクタ２０内で実行されるキャッシュページ２３０−Ｎを排他中にする処理などをさらに省略することができるため、ディスクアレイ装置１内での処理をさらに高速化してデータの読出性能をより一層向上させることができる。
【０１９７】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。以下、本発明に適用可能な上記実施形態の変形態様について、説明する。
【０１９８】
上記実施形態において、ホストディレクタ１０は、ポート１１ａ及び１１ｂと、メモリ１２ａ及び１２ｂと、ホストプロセッサ１３ａ及び１３ｂと、を２個ずつ備え、キャッシュディレクタ２０は、メモリ２２と、キャッシュプロセッサ２３と、をそれぞれ１個ずつ備え、ディスクディレクタ３０は、ポート３１と、メモリ３２と、ディスクプロセッサ３３と、をそれぞれ１個ずつ備えているものとして説明した。しかしながら、本発明はこれに限定されるものではなく、ホストディレクタ１０や、キャッシュディレクタ２０、ディスクディレクタ３０が備えるポートや、メモリ、プロセッサなどの個数は、任意に変更可能である。また、ディスクアレイ装置１に接続されるホスト装置２の個数も、上記実施形態のように、１個に限定されるものではなく、任意に変更可能である。
【０１９９】
上記実施形態において、ホストプロセッサ１３ａ及び１３ｂや、キャッシュプロセッサ２０、ディスクプロセッサ３０のＭＰＵが実行するプログラムは、予めＲＯＭ（Read Only Memory）などに記憶されているものとして説明した。しかしながら、本発明はこれに限定されるものではなく、上述の処理を実行させるためのプログラムを、プロセッサなどに適用することで、上記実施形態に係るホストプロセッサ１３ａ及び１３ｂや、キャッシュプロセッサ２０、ディスクプロセッサ３０として機能させてもよい。
【０２００】
このようなプログラムの提供方法は任意であり、例えばコンピュータが読取可能な記録媒体（フレキシブルディスク、ＣＤ（Compact Disc）−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）−ＲＯＭなど）に格納して配布してもよいし、インターネット等のネットワーク上のストレージにプログラムを格納しておき、これをダウンロードさせることにより提供してもよい。
【０２０１】
さらに、上記の処理をＯＳ（Operating System）とアプリケーションプログラムとの分担、又はＯＳとアプリケーションプログラムとの協働によって実行する場合には、アプリケーションプログラムのみを記録媒体やストレージに格納してもよい。また、搬送波にプログラムを重畳し、ネットワークを介して配信することも可能である。例えば、ネットワーク上の掲示板（ＢＢＳ：Bulletin Board System）に上記プログラムを掲示し、ネットワークを介してプログラムを配信してもよい。そして、このプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、上記の処理を実行できるように構成してもよい。
【図面の簡単な説明】
【０２０２】
【図１】ディスクアレイ装置を中心としたシステム全体の構成例を示すブロック図である。
【図２】ホストプロセッサの構成例を示すブロック図である。
【図３】キャッシュプロセッサの構成例を示すブロック図である。
【図４】リード処理の一例を示すフローチャートである。
【図５】リード処理の一例を示すフローチャートである。
【図６】ライト処理の一例を示すフローチャートである。
【図７】ページ共有抑止処理の一例を示すフローチャートである。
【図８】ページ獲得処理の一例を示すフローチャートである。
【図９】ページ獲得処理の一例を示すフローチャートである。
【図１０】ページ返却処理の一例を示すフローチャートである。
【図１１】ディスク読出処理の一例を示すフローチャートである。
【図１２】ディスク書込処理の一例を示すフローチャートである。
【図１３】（ａ）は内部テーブルの登録例を示す説明図であり、（ｂ）は獲得指示パラメータの構成例を示す説明図である。
【図１４】（ａ）はキャッシュページの登録例を示す説明図であり、（ｂ）はグローバル共有テーブルの登録例を示す説明図である。
【図１５】（ａ）は獲得完了通知パラメータの構成例を示す説明図であり、（ｂ）は内部テーブルの登録例を示す説明図であり、（ｃ）はローカル共有テーブルの登録例を示す説明図である。
【図１６】（ａ）は内部テーブルの登録例を示す説明図であり、（ｂ）はローカル共有テーブルの登録例を示す説明図である。
【図１７】（ａ）は内部テーブルの登録例を示す説明図であり、（ｂ）はローカル共有テーブルの登録例を示す説明図である。
【図１８】返却指示パラメータの構成例を示す説明図である。
【図１９】キャッシュプロセッサの接続例を示す説明図である。
【図２０】（ａ）はホストプロセッサの接続例を示す説明図であり、（ｂ）は獲得指示パラメータの構成例を示す説明図であり、（ｃ）はホストプロセッサの接続例を示す説明図であり、（ｄ）は獲得指示パラメータの構成例を示す説明図である。
【図２１】キャッシュプロセッサの接続例を示す説明図である。
【図２２】返却指示パラメータの構成例を示す説明図である。
【図２３】キャッシュプロセッサの接続例を示す説明図である。
【図２４】（ａ）は内部テーブルの登録例を示す説明図であり、（ｂ）はローカル共有テーブルの登録例を示す説明図である。
【図２５】獲得指示パラメータの構成例を示す説明図である。
【図２６】キャッシュプロセッサの接続例を示す説明図である。
【図２７】従来のディスクアレイ装置を中心としたシステム全体の構成例を示すブロック図である。
【図２８】（ａ）は従来のホストプロセッサの接続例を示すブロック図であり、（ｂ）は従来の獲得指示パラメータの構成例を示す説明図である。
【図２９】従来のキャッシュプロセッサの構成例を示すブロック図である。
【図３０】従来のキャッシュプロセッサの接続例を示す説明図である。
【図３１】（ａ）は従来の獲得完了通知の構成例を示す説明図であり、（ｂ）は内部テーブルの登録例を示す説明図であり、（ｃ）はＨＤＤ読出パラメータの構成例を示す説明図である。
【図３２】返却指示パラメータの構成例を示す説明図である。
【図３３】従来のキャッシュプロセッサの接続例を示す説明図である。
【符号の説明】
【０２０３】
１  ディスクアレイ装置
２  ホスト装置
３  物理ディスクアレイ
１０  ホストディレクタ
１１ａ，１１ｂ，３１  ポート
１２ａ，１２ｂ，２１，３２  メモリ
１３ａ，１３ｂ  ホストプロセッサ
２０  キャッシュディレクタ
２３  キャッシュプロセッサ
３０  ディスクディレクタ
３３  ディスクプロセッサ
１３０ａ−Ｎ，１３０ｂ−Ｎ  内部テーブル
１３１ａ−Ｎ，１３１ｂ−Ｎ  ローカル共有テーブル
２３０−Ｎ  キャッシュページ
２３１  未使用キャッシュページリンク
２３２  ＨＤＤ一致データリンク
２３３  キャッシュヒットページ検索リンク
２３４−Ｎ  グローバル共有テーブル
【図１】
0005176663.tif 000002
【図２】
0005176663.tif 000003
【図３】
0005176663.tif 000004
【図４】
0005176663.tif 000005
【図５】
0005176663.tif 000006
【図６】
0005176663.tif 000007
【図７】
0005176663.tif 000008
【図８】
0005176663.tif 000009
【図９】
0005176663.tif 000010
【図１０】
0005176663.tif 000011
【図１１】
0005176663.tif 000012
【図１２】
0005176663.tif 000013
【図１３】
0005176663.tif 000014
【図１４】
0005176663.tif 000015
【図１５】
0005176663.tif 000016
【図１６】
0005176663.tif 000017
【図１７】
0005176663.tif 000018
【図１８】
0005176663.tif 000019
【図１９】
0005176663.tif 000020
【図２０】
0005176663.tif 000021
【図２１】
0005176663.tif 000022
【図２２】
0005176663.tif 000023
【図２３】
0005176663.tif 000024
【図２４】
0005176663.tif 000025
【図２５】
0005176663.tif 000026
【図２６】
0005176663.tif 000027
【図２７】
0005176663.tif 000028
【図２８】
0005176663.tif 000029
【図２９】
0005176663.tif 000030
【図３０】
0005176663.tif 000031
【図３１】
0005176663.tif 000032
【図３２】
0005176663.tif 000033
【図３３】
0005176663.tif 000034