(57)【特許請求の範囲】
【請求項１】
記憶媒体へのデータアクセスを制御する制御装置において、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行した書き込み要求が、前記記憶媒体の所定の記憶領域に前記書き込み対象のデータブロックと同一の指定数のデータブロックの書き込みを要求する同一データブロック書き込み要求であるかを判定し、前記同一データブロック書き込み要求であると判定した場合であって、前記同一データブロック書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合において、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とする制御装置。
【請求項２】
前記同一データブロック書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記制御部は、前記同一データブロック書き込み要求を前記アクセス要求装置から受け付けると、前記同一データブロック書き込み要求に応じた前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に設定することを特徴とする請求項１記載の制御装置。
【請求項３】
前記制御部が前記アクセス要求装置に応答した後に、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されている場合には、前記書き込み領域識別情報に示される前記記憶媒体の記憶領域にゼロデータを書き込み、前記ゼロデータ識別情報が設定されていない場合には、前記書き込み対象のデータブロックを前記指定数だけ複製して、複製されたデータブロックを、前記書き込み領域識別情報に示される前記記憶媒体の記憶領域に書き込む記憶媒体制御部をさらに有することを特徴とする請求項２記載の制御装置。
【請求項４】
前記アクセス要求装置から所定のデータブロックを読み出す要求を受け付けると、前記制御部は、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報が設定されている場合、要求を受け付けた前記データブロックの数だけゼロデータの前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする請求項１記載の制御装置。
【請求項５】
前記同一データブロック書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記制御部は、前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記書き込み領域識別情報記憶部を参照し、前記読み出し要求に応じた前記データブロックに対応する前記書き込み領域識別情報が記憶されている場合、前記ゼロデータ識別情報記憶部を参照することを特徴とする請求項４記載の制御装置。
【請求項６】
前記同一データブロック書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記アクセス要求装置から送られてきた前記データブロック内のデータがゼロデータではない場合、前記制御部は、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報により特定される書き込み領域の先頭に対応するキャッシュメモリのデータブロック記憶領域に前記データブロックを書き込み、
前記制御部は、前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていない場合、前記書き込み領域の先頭に記憶されている前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする請求項１記載の制御装置。
【請求項７】
記憶媒体へのデータアクセスを制御する制御方法において、
コンピュータが、
アクセス要求装置が発行した書き込み要求が、前記記憶媒体の所定の記憶領域に書き込み対象のデータブロックと同一の指定数のデータブロックの書き込みを要求する同一データブロック書き込み要求であるかを判定し、前記同一データブロック書き込み要求であると判定した場合であって、前記同一データブロック書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合において、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、
前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する、
ことを特徴とする制御方法。
【請求項８】
記憶媒体と、前記記憶媒体へのデータアクセスを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行した書き込み要求が、前記記憶媒体の所定の記憶領域に前記書き込み対象のデータブロックと同一の指定数のデータブロックの書き込みを要求する同一データブロック書き込み要求であるかを判定し、前記同一データブロック書き込み要求であると判定した場合であって、前記同一データブロック書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合において、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とするストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御装置、制御方法およびストレージ装置に関する。
【背景技術】
【０００２】
近年、コンピュータシステムで取り扱う大容量のデータを記憶する記憶装置を複数用いたストレージ装置が広く使用されている。ストレージ装置は、一例として１つまたは複数の記憶媒体と、これらの記憶媒体に対するデータの書き込みおよびデータの読み出しを制御する制御装置を含む。制御装置のデータの制御方法として、ホスト装置から転送されたデータを、バッファメモリに格納した後に、バッファメモリから記憶媒体にデータを転送する方法が知られている。この制御装置のデータの制御方法では、ホスト装置からバッファメモリにデータを格納するよりも、バッファメモリから記憶媒体にデータを書き込む方が、多くの処理時間を要することが知られている。このため、ホスト装置から制御装置にデータの転送が終了した時点で割り込み信号をホスト装置に転送し、ホスト装置の次のデータの転送を可能とする技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２０３９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ホスト装置が発行するライトコマンドの１つにホスト装置から転送されたデータブロックを指定された回数分書き込む指示のコマンド（ＷＲＩＴＥＳＡＭＥコマンド）が知られている。ＷＲＩＴＥＳＡＭＥコマンドに対し、制御装置は、ホスト装置から受け取ったデータブロックを１つずつ、指定された回数分、バッファメモリに書き込むという処理を行う。
【０００５】
しかしながら、実データをバッファメモリに書き込む分、書き込みが完了するまでに時間がかかり、ホスト装置への応答時間がかかるという問題があった。
本発明はこのような点に鑑みてなされたものであり、ホスト装置から受け付けたＷＲＩＴＥＳＡＭＥコマンドに対するホスト装置への応答時間を短縮する制御装置、制御方法およびストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、開示の制御装置が提供される。この制御装置は、記憶媒体へのデータアクセスを制御する装置であり、ゼロデータ識別情報記憶部と、制御部とを有している。
【０００７】
ゼロデータ識別情報記憶部は、記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶する。
【０００８】
制御部は、アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられてアクセス要求装置から送られてくるデータブロック内のデータがゼロデータである場合、ゼロデータ識別情報記憶部にゼロデータ識別情報を設定し、ゼロデータ識別情報を設定した時点で記憶媒体への書き込み完了をアクセス要求装置に応答する。
【発明の効果】
【０００９】
ホスト装置から受け付けた書き込み要求に対するホスト装置への応答時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態のストレージ装置を示す図である。
【図２】第２の実施の形態のストレージシステムを示すブロック図である。
【図３】第２の実施の形態の制御モジュールの機能を示すブロック図である。
【図４】第２の実施の形態の管理テーブルを説明する図である。
【図５】ＷＲＩＴＥＳＡＭＥビットマップ管理領域を説明する図である。
【図６】ＷＲＩＴＥ系コマンド処理を示すフローチャートである。
【図７】第２の実施の形態の第１の処理を示すフローチャートである。
【図８】第２の実施の形態の第２の処理を示すフローチャートである。
【図９】ＷＲＩＴＥＳＡＭＥビットマップをダーティビットマップに変換する処理を説明する図である。
【図１０】第２の実施の形態のＲＥＡＤコマンド処理を示すフローチャートである。
【図１１】第３の実施の形態の管理テーブルを示す図である。
【図１２】第３の実施の形態の第１の処理を示すフローチャートである。
【図１３】第３の実施の形態の第２の処理を示すフローチャートである。
【図１４】第３の実施の形態の第２の処理を示すフローチャートである。
【図１５】第３の実施の形態のＲＥＡＤコマンド処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、実施の形態のストレージ装置を、図面を参照して詳細に説明する。まず、第１の実施の形態において開示のストレージ装置を説明する。その後、第２の実施の形態において、開示のストレージ装置をより具体的に説明する。
【００１２】
＜第１の実施の形態＞
図１は、第１の実施の形態のストレージ装置を示す図である。
第１の実施の形態のストレージ装置１は、電気通信回線や、光通信回線等を介してアクセス要求装置２に接続されている。
【００１３】
ストレージ装置１は、制御装置３と、記憶媒体４を有している。記憶媒体４は、情報を記憶可能な記憶領域を有する。この記憶媒体４としては、例えば、ＨＤＤ（Hard Disk Drive）や、ＳＳＤ（Solid State Drive）等が挙げられる。なお、本実施の形態のストレージ装置１は、１個の記憶媒体４を有するが、記憶媒体の個数は、２個以上であってもよい。
【００１４】
アクセス要求装置２は、例えば図１に示すように、記憶媒体４の所定の記憶領域に指定数のデータブロック５の書き込みを要求する書き込み要求（以下、「同一データブロック書き込み要求」と言う）を制御装置３に転送する。また、アクセス要求装置２は、同一データブロック書き込み要求を転送した後に、データブロック５を制御装置３に転送する。
【００１５】
制御装置３は、アクセス要求装置２からの記憶媒体４へのデータブロック５の書き込み要求に応じて、記憶媒体４へのデータブロック５の書き込みを制御する。この制御装置３は、データブロック記憶領域３ａと、書き込み領域識別情報記憶部３ｂと、ゼロデータ識別情報記憶部３ｃと、制御部３ｄと、記憶媒体制御部３ｅとを有している。データブロック記憶領域３ａ、書き込み領域識別情報記憶部３ｂおよびゼロデータ識別情報記憶部３ｃは、制御装置３が有するキャッシュメモリ（Cache Memory）が備える記憶領域により実現することができる。また、制御部３ｄおよび記憶媒体制御部３ｅは、制御装置３が有するＣＰＵ（Central Processing Unit）が備える機能により実現することができる。
【００１６】
データブロック記憶領域３ａは、記憶媒体４への書き込み対象のデータブロック５を一時的に記憶可能な記憶領域である。
書き込み領域識別情報記憶部３ｂは、同一データブロック書き込み要求によるデータブロック５の記憶媒体４への書き込み領域を識別する書き込み領域識別情報を記憶する。書き込み領域識別情報の一例としてビットマップが挙げられる。
【００１７】
ゼロデータ識別情報記憶部３ｃは、データブロック５内のデータの全てのビットがゼロ（０）のゼロデータである場合に、データブロック５内のデータがゼロデータであることを識別するゼロデータ識別情報を記憶する。ゼロデータ識別情報の一例としてフラグが挙げられる。
【００１８】
制御部３ｄは、同一データブロック書き込み要求をアクセス要求装置２から受け付けると、同一データブロック書き込み要求に応じた書き込み領域識別情報を書き込み領域識別情報記憶部３ｂに設定する。
【００１９】
また、制御部３ｄは、同一データブロック書き込み要求を受け付けた後にアクセス要求装置２から転送されるデータブロック５を受け取ると、データブロック５内のデータがゼロデータであるか否かを判断する。データブロック５内のデータがゼロデータである場合、制御部３ｄは、ゼロデータ識別情報記憶部３ｃにゼロデータ識別情報を設定する。そして、制御部３ｄは、ゼロデータ識別情報を設定した時点で記憶媒体４への書き込み完了をアクセス要求装置２に応答する。その後、制御部３ｄは、ゼロデータの記憶媒体４の書き込み先への書き込みを、記憶媒体制御部３ｅに通知する。
【００２０】
第１の実施の形態の制御装置３は、データブロック５内のデータがゼロデータである場合、ゼロデータ識別情報記憶部３ｃにフラグを設定した時点で記憶媒体４への書き込み完了をアクセス要求装置２に応答する。従って、受け取ったゼロデータのデータブロックをデータブロック記憶領域３ａに書き込んだ後に書き込み完了をアクセス要求装置２に応答する場合に比べ、アクセス要求装置２に応答する時間を短くすることができる。
【００２１】
また、制御装置３は、書き込み領域識別情報記憶部３ｂを有し、制御部３ｄは、同一データブロック書き込み要求による書き込み領域識別情報を記憶する。従って、制御装置３は、同一データブロック書き込み要求によるデータブロックの記憶媒体４への書き込み領域を識別することができる。
【００２２】
ところで、制御部３ｄは、データブロック５内のデータがゼロデータではない場合、書き込み領域識別情報記憶部３ｂに記憶されている書き込み領域識別情報に対応して用意されるデータブロック記憶領域３ａの書き込み領域の先頭にデータブロック５を書き込む。
【００２３】
記憶媒体制御部３ｅは、制御部３ｄの通知に応じて、データブロック５を記憶媒体４に書き込む。具体的には、記憶媒体制御部３ｅは、ゼロデータ識別情報記憶部３ｃにゼロデータ識別情報が設定されているか否かを判断する。
【００２４】
そして、ゼロデータ識別情報が設定されていることを確認すると、記憶媒体制御部３ｅは、同一データブロック書き込み要求により指定された数だけゼロデータのデータブロック５を複製する。そして、記憶媒体制御部３ｅは、書き込み領域識別情報記憶部３ｂに記憶された書き込み領域識別情報に対応する記憶媒体４の記憶領域に複製したゼロデータのデータブロック５を書き込む。また、記憶媒体制御部３ｅは、ゼロデータ識別情報が設定されていないことを確認すると、書き込み領域識別情報記憶部３ｂに記憶された書き込み領域識別情報に基づいてデータブロック記憶領域３ａの書き込み領域の先頭に記憶されたデータブロック５を、同一データブロック書き込み要求により指定された数だけ複製する。そして、記憶媒体制御部３ｅは、複製したデータブロック５を書き込み領域識別情報記憶部３ｂに記憶された書き込み領域識別情報に対応する記憶媒体４の記憶領域に書き込む。
【００２５】
記憶媒体制御部３ｅの処理により、同一データブロック書き込み要求が指定した記憶媒体４の記憶領域に、同一データブロック書き込み要求により指定された数だけデータブロック５が書き込まれる。
【００２６】
以下、実施の形態をより具体的に説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージシステムを示すブロック図である。
【００２７】
ストレージシステム１０００は、ホスト装置３０と、このホスト装置３０にファイバチャネル（ＦＣ：Fibre Channel）スイッチ３１を介して接続されたストレージ装置１００とを有している。なお、図２では１つのホスト装置３０がストレージ装置１００に接続されているが、複数のホスト装置が、ストレージ装置１００に接続されていてもよい。また、ホスト装置３０とストレージ装置１００は、ＳＡＳ（Serial Attached SCSI）や、ｉＳＣＳＩ等のＦＣ以外の接続方法で接続されていてもよい。
【００２８】
ストレージ装置１００は、それぞれが複数のＨＤＤ２０を備えるドライブエンクロージャ（ＤＥ：Drive Enclosure）２０ａ、２０ｂ、２０ｃ、２０ｄと、これらのドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄの物理記憶領域をＲＡＩＤ（Redundant Arrays of Inexpensive/Independent Disks）によって管理する制御モジュール（ＣＭ：Controller Module）１０ａ、１０ｂとを有している。なお、本実施の形態では、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える記憶媒体としては、ＨＤＤ２０を例示したが、ＨＤＤ２０に限らず、ＳＳＤ等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える複数のＨＤＤ２０を区別しない場合は、「ＨＤＤ２０群」と言う。ＨＤＤ２０群の総容量は、例えば６００ＧＢ（Giga Byte）〜２４０ＴＢ（Tera Byte）である。
【００２９】
ストレージ装置１００は、２つの制御モジュール１０ａ、１０ｂを運用に使用することで、冗長性が確保されている。なお、ストレージ装置１００が備える制御モジュールの数は、２つに限定されず、３つ以上の制御モジュールにより冗長性が確保されていてもよいし、制御モジュール１０ａのみを使用した構成であってもよい。
【００３０】
制御モジュール１０ａ、１０ｂは、それぞれ制御装置の一例であり、制御モジュール１０ａ、１０ｂは、それぞれ同じハードウェア構成によって実現される。
制御モジュール１０ａは、内部バスを介してチャネルアダプタ（ＣＡ：Channel Adapter）１１ａ、１１ｂに接続されている。制御モジュール１０ｂは、内部バスを介してチャネルアダプタ１１ｃ、１１ｄに接続されている。
【００３１】
チャネルアダプタ１１ａ、１１ｂ、１１ｃ、１１ｄは、それぞれファイバチャネルスイッチ３１に接続され、ファイバチャネルスイッチ３１を介してホスト装置３０のチャネルＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４に接続される。チャネルアダプタ１１ａ、１１ｂ、１１ｃ、１１ｄは、ホスト装置３０と制御モジュール１０ａ、１０ｂとの間でデータを送受信するインタフェース機能を提供する。
【００３２】
制御モジュール１０ａ、１０ｂは、それぞれ、ホスト装置３０からのデータアクセス要求に応じてドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが有するＨＤＤ２０の物理記憶領域へのデータアクセスをＲＡＩＤによって制御する。
【００３３】
制御モジュール１０ａ、１０ｂは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール１０ａのハードウェア構成を説明する。
制御モジュール１０ａは、ＣＰＵ１０１と、ＲＡＭ（Random Access Memory）１０２と、フラッシュＲＯＭ（Read Only Memory）１０３と、キャッシュメモリ１０４と、デバイスアダプタ（ＤＡ：Device Adapter）１０５ａ、１０５ｂとを備えている。
【００３４】
ＣＰＵ１０１は、フラッシュＲＯＭ１０３等に記憶されたプログラムを実行することにより、制御モジュール１０ａ全体を統括的に制御する。ＲＡＭ１０２は、ＣＰＵ１０１に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。フラッシュＲＯＭ１０３は、不揮発性のメモリであり、ＣＰＵ１０１により実行されるプログラムや、プログラムの実行に必要な各種のデータ等を記憶する。
【００３５】
また、フラッシュＲＯＭ１０３は、ストレージ装置１００の停電時等にキャッシュメモリ１０４のデータ記憶領域に記憶されているデータの退避先となる。
キャッシュメモリ１０４は、ホスト装置３０がＨＤＤ２０群への書き込みを要求したデータや、ＨＤＤ２０群から読み出したデータ等を一時的に記憶する。
【００３６】
また、キャッシュメモリ１０４には、ＣＰＵ１０１による処理に必要なデータが一時的に記憶されてもよい。このキャッシュメモリ１０４としては、例えば、ＳＲＡＭ等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ１０４の記憶容量は、特に限定されないが、一例として２〜６４ＧＢ程度である。
【００３７】
デバイスアダプタ１０５ａ、１０５ｂは、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄに接続されている。このデバイスアダプタ１０５ａ、１０５ｂは、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備えるＨＤＤ２０群とキャッシュメモリ１０４との間でデータを送受信するインタフェース機能を提供する。制御モジュール１０ａは、デバイスアダプタ１０５ａ、１０５ｂを介してドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備えるＨＤＤ２０群との間でデータの送受信を行う。
【００３８】
制御モジュール１０ａと制御モジュール１０ｂとは図示しないルータを介して接続されている。例えば、ＨＤＤ２０群に書き込みを要求するデータがホスト装置３０からチャネルアダプタ１１ａを介して制御モジュール１０ａに送信されると、ＣＰＵ１０１は、受信したデータをキャッシュメモリ１０４に格納する。また、ＣＰＵ１０１は、データの格納と共に、受信したデータを、ルータを介して制御モジュール１０ｂに送信する。そして、制御モジュール１０ｂは、制御モジュール１０ｂが有するＣＰＵが受信したデータを制御モジュール１０ｂが有するキャッシュメモリに格納する。この処理によって、制御モジュール１０ａ内のキャッシュメモリ１０４と制御モジュール１０ｂ内のキャッシュメモリとに同一のデータが記憶される。
【００３９】
ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄには、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える複数のＨＤＤ２０のうち、１つ、または複数のＨＤＤ２０により構成されたＲＡＩＤグループが形成されている。このＲＡＩＤグループは、「論理ボリューム」「仮想ディスク」「ＲＬＵ（RAID Logical Unit）」等と呼ばれる場合もある。
【００４０】
図２では、ＲＡＩＤ５を構成するＲＡＩＤグループ２１を示している。なお、ＲＡＩＤグループ２１を構成するＨＤＤ２０は、他のＨＤＤ２０と区別するために、異なる符号（ＨＤＤ２１ａ、２１ｂ、２１ｃ、２１ｄ）を付している。すなわち、ＲＡＩＤグループ２１は、ＨＤＤ２１ａ、２１ｂ、２１ｃ、２１ｄで構成されており、ＲＡＩＤ５（３＋１）で運用されている。なお、ＲＡＩＤグループ２１のＲＡＩＤ構成は、一例であり、図示のＲＡＩＤ構成に限定されない。例えば、ＲＡＩＤグループ２１は、任意の個数のＨＤＤ２０を有することができる。また、ＲＡＩＤグループ２１は、ＲＡＩＤ６等、任意のＲＡＩＤ方式で構成することができる。
【００４１】
ＲＡＩＤグループ２１には、各ＲＡＩＤの記憶領域が１つまたは複数に論理的に分割されている。論理的に分割した記憶領域には、それぞれＬＵＮ（Logical Unit Number）が設定されて（割り当てられて）いる。以下の説明では、ホスト装置３０がＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡ（Logical Block Address）を指定してデータアクセスする場合の制御モジュール１０ａの処理を説明する。
【００４２】
ホスト装置３０は、ＬＢＡ単位のデータブロックを用いて指定したＬＵＮのＬＢＡにデータブロックを書き込むよう制御モジュール１０ａに指示する。ホスト装置３０は、指定したＬＵＮおよびＬＢＡにデータブロックを書き込むよう制御モジュール１０ａに指示する際に、ＷＲＩＴＥＳＡＭＥコマンドおよびＷＲＩＴＥコマンド（以下、ＷＲＩＴＥ系コマンドと言う）のいずれかを発行する。
【００４３】
ＷＲＩＴＥコマンドは、ホスト装置３０が用意したデータブロックそのものの書き込みをホスト装置３０が制御モジュール１０ａに指示する際に発行するコマンドである。ＷＲＩＴＥコマンドには、データブロックの書き込みを開始するＬＵＮのＬＢＡを指定するデータ、および書き込み対象のデータブロックが含まれている。
【００４４】
ＷＲＩＴＥＳＡＭＥコマンドは、ＲＡＩＤグループ２１に設定されたＬＵＮへの複製対象のデータブロックの指定した個数分の書き込みを、ホスト装置３０が制御モジュール１０ａに指示する際に発行するコマンドである。ＷＲＩＴＥＳＡＭＥコマンドには、複製対象のデータブロックの書き込みを開始するＬＵＮのＬＢＡを指定するデータ、および複製対象のデータブロックを連続して書き込むＬＢＡの個数を指定するデータが含まれている。
【００４５】
ホスト装置３０は、例えばあるＬＢＡからＬＢＡ１０個分のデータブロックを、指定したＬＵＮに書き込むよう制御モジュール１０ａに指示する際に、ＷＲＩＴＥＳＡＭＥコマンドを発行する。また、ホスト装置３０は、ＷＲＩＴＥＳＡＭＥコマンドを発行する際には、ＷＲＩＴＥＳＡＭＥコマンドの発行後に複製対象のデータブロックをストレージ装置１００に送信する。
【００４６】
このようなハードウェア構成の制御モジュール１０ａには、以下のような機能が設けられる。
図３は、第２の実施の形態の制御モジュールの機能を示すブロック図である。
【００４７】
制御モジュール１０ａは、チャネル制御部４１と、キャッシュ制御部４２と、ディスク制御部４３とを有している。キャッシュ制御部４２と、ディスク制御部４３は、ＣＰＵ１０１により実現可能な機能である。なお、キャッシュ制御部４２は、書き込み領域識別情報およびゼロデータ識別情報を設定する機能部の一例であり、ディスク制御部４３は、記憶媒体制御部の一例である。
【００４８】
チャネル制御部４１は、ホスト装置３０から受け付けたＷＲＩＴＥＳＡＭＥコマンド等の各種コマンドおよび、複製対象のデータブロック等の各種データをキャッシュ制御部４２に送る。
【００４９】
キャッシュ制御部４２は、キャッシュメモリ１０４のデータ記憶領域をキャッシュページと呼ばれる単位で制御する。各キャッシュページは、ＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡに関連づけられて使用される。本実施の形態の各キャッシュページは、一例として１２８個のＬＢＡを有している。１つのＬＢＡは、例えば、５１２バイト（Byte）である。１つのＬＢＡには、８バイトのＢＣＣ（Block Check Code）が付加されている。以下、キャッシュページに展開されたＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡそれぞれに対応する記憶領域を「キャッシュページのＬＢＡ」と言う。
【００５０】
キャッシュ制御部４２は、キャッシュページの各ＬＢＡに対応する管理テーブルを作成する。この管理テーブルは、キャッシュメモリ１０４の一部の領域で形成される。管理テーブルを作成することにより、管理テーブルに対応するキャッシュメモリ１０４のキャッシュページが確保される。
【００５１】
そして、キャッシュ制御部４２は、ホスト装置３０が発行する各種コマンドに応じて管理テーブルおよびキャッシュページを制御する。なお、各種コマンドに応じた処理の詳細は、後に詳述する。
【００５２】
図４は、第２の実施の形態の管理テーブルを説明する図である。
管理テーブル４２ａは、１キャッシュページ分のデータブロックを管理するテーブルである。管理テーブル４２ａは、ゼロデータフラグ管理領域４２１ａと、ダーティ（Dirty）ビットマップ（bitmap）管理領域４２２ａと、データプレゼント（Data Present）ビットマップ管理領域４２３ａと、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａとを有している。
【００５３】
ゼロデータフラグ管理領域４２１ａは、ホスト装置３０から制御モジュール１０ａが受信したデータブロックのデータがゼロデータである場合、受信したデータブロックのデータがゼロデータであることを識別するゼロデータフラグを管理する領域である。受信したデータブロックのデータがゼロデータである場合、ゼロデータフラグがセットされる。なお、ゼロデータフラグは、ゼロデータ識別情報の一例である。
【００５４】
ダーティビットマップ管理領域４２２ａは、キャッシュページのダーティデータブロックが記憶されている箇所を識別するビットマップ（１または０）を管理する領域である。ここでダーティデータブロックは、キャッシュページに記憶されたデータブロックであって、ＲＡＩＤグループ２１を構成するＨＤＤ２０に書き込まれていないデータブロックである。以下、ダーティビットマップ管理領域４２２ａのビットマップを「ダーティビットマップ」と言う。キャッシュ制御部４２は、キャッシュページのダーティデータブロックが記憶されている箇所に対応するダーティビットマップを、“１”に設定する。
【００５５】
データプレゼントビットマップ管理領域４２３ａは、キャッシュページのうちデータブロックが記憶されている箇所を識別するビットマップを管理する領域である。キャッシュ制御部４２は、キャッシュページのデータブロックが記憶されている箇所に対応するビットマップを、“１”に設定する。キャッシュ制御部４２は、例えばホスト装置３０からデータの読み出し要求を受け取ると、データプレゼントビットマップ管理領域４２３ａを参照することで、読み出し要求のデータブロックが、管理テーブル４２ａに対応するキャッシュページに記憶されているか否かを判断することができる。
【００５６】
ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａには、ＷＲＩＴＥＳＡＭＥコマンドが指定した複製対象のデータブロックの書き込みを開始するキャッシュページのＬＢＡから、複製対象のデータブロックを複製するＬＢＡの個数分だけ“１”に設定されるビットマップを管理する領域である。以下、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａ内のビットマップを「ＷＲＩＴＥＳＡＭＥビットマップ」と言う。なお、ＷＲＩＴＥＳＡＭＥビットマップは、書き込み領域識別情報の一例である。
【００５７】
図５は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域を説明する図である。
図５は、キャッシュ制御部４２が、管理テーブル４２ａを作成することにより確保されたキャッシュページ１０４ａを示している。
【００５８】
ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａには、キャッシュページ１０４ａの１２８個の各ＬＢＡに対応するＷＲＩＴＥＳＡＭＥビットマップが用意されている。
図５では、複製対象のデータブロックの書き込みを開始するＬＢＡをＬＢＡ５１に指定し、複製対象のデータブロックを書き込むＬＢＡの個数を５つに指定したＷＲＩＴＥＳＡＭＥコマンドが発行された場合を例示している。キャッシュ制御部４２は、ＬＢＡ５１〜５５に対応するＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａのＷＲＩＴＥＳＡＭＥビットマップを“１”に設定する。なお、図５に示すキャッシュページ１０４ａのＬＢＡ５１〜５５は、ＷＲＩＴＥＳＡＭＥコマンドが指定する書き込み対象のＬＢＡの範囲を示すものであり、複製対象のデータブロックがＬＢＡ５１〜５５に実際に書き込まれていることを示している訳ではない。
【００５９】
再び図３に戻って説明する。
ディスク制御部４３は、ホスト装置３０が発行したＷＲＩＴＥ系コマンドにより書き込みが指定されるデータブロックを、ＲＡＩＤグループ２１に設定されたＬＵＮに、キャッシュ制御部４２の制御とは非同期に書き込む。ディスク制御部４３のデータブロックの書き込み方法については、後に詳述する。
【００６０】
また、ディスク制御部４３は、ホスト装置３０の要求に応じて、ＲＥＡＤコマンドにより指定されたＬＵＮのＬＢＡに記憶されているデータブロックを読み出し、キャッシュメモリ１０４のデータ記憶領域に書き込む。なお、ＲＥＡＤコマンドは、ホスト装置３０が読み出しを希望するデータが記憶されているＬＵＮおよびＬＢＡを指定し、指定したＬＵＮおよびＬＢＡのデータブロック（以下、「読み出し対象のデータブロック」と言う）の読み出しを希望する際に発行するコマンドである。
【００６１】
次に、ＷＲＩＴＥ系コマンドを受け取った場合の制御モジュール１０ａの処理（ＷＲＩＴＥ系コマンド処理）を説明する。
図６は、ＷＲＩＴＥ系コマンド処理を示すフローチャートである。
【００６２】
［ステップＳ１］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａを参照し、いずれかのＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されているか否かを判断する。いずれかのＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されている場合（ステップＳ１のＹｅｓ）、ステップＳ３に遷移する。ＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されていない場合（ステップＳ１のＮｏ）、ステップＳ２に遷移する。
【００６３】
［ステップＳ２］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップがいずれも“１”に設定されていない場合のＷＲＩＴＥ系コマンドに対する処理（第１の処理）を行う。第１の処理が終了すると、図６の処理を終了する。
【００６４】
［ステップＳ３］  キャッシュ制御部４２は、いずれかのＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されている場合のＷＲＩＴＥ系コマンドに対する処理（第２の処理）を行う。第２の処理が終了すると、図６の処理を終了する。
【００６５】
次に、ステップＳ２の第１の処理を説明する。
図７は、第２の実施の形態の第１の処理を示すフローチャートである。
［ステップＳ１１］  キャッシュ制御部４２は、受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドか否かを判断する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドである場合（ステップＳ１１のＹｅｓ）、ステップＳ１２に遷移する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドではない場合、すなわち、受け取ったＷＲＩＴＥ系コマンドがＷＲＩＴＥコマンドである場合（ステップＳ１１のＮｏ）、ステップＳ１８に遷移する。
【００６６】
［ステップＳ１２］  キャッシュ制御部４２は、ホスト装置３０からＷＲＩＴＥＳＡＭＥコマンドを受け取ると、ＷＲＩＴＥＳＡＭＥコマンドに対応する管理テーブル４２ａを作成する。管理テーブル４２ａを作成することにより、管理テーブル４２ａに対応するキャッシュページ１０４ａが確保される。その後、ステップＳ１３に遷移する。
【００６７】
［ステップＳ１３］  キャッシュ制御部４２は、ステップＳ１１にて受け取ったＷＲＩＴＥＳＡＭＥコマンドを解析する。そして、キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥコマンドが指定したＬＢＡから指定した個数分、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａのＷＲＩＴＥＳＡＭＥビットマップを“１”に設定する。その後、ステップＳ１４に遷移する。
【００６８】
［ステップＳ１４］  キャッシュ制御部４２は、ホスト装置３０が送信した複製対象のデータブロックをチャネル制御部４１から受け取ると、ステップＳ１５に遷移する。
［ステップＳ１５］  キャッシュ制御部４２は、ステップＳ１４にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップＳ１４にて受け取った複製対象のデータブロック内のデータがゼロデータである場合（ステップＳ１５のＹｅｓ）、ステップＳ１６に遷移する。ステップＳ１４にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合（ステップＳ１５のＮｏ）、ステップＳ１７に遷移する。
【００６９】
［ステップＳ１６］  キャッシュ制御部４２は、ゼロデータフラグ管理領域４２１ａのゼロデータフラグをセットする。その後、ステップＳ１９に遷移する。
［ステップＳ１７］  キャッシュ制御部４２は、“１”に設定されているＷＲＩＴＥＳＡＭＥビットマップのうち、先頭のＷＲＩＴＥＳＡＭＥビットマップに対応するステップＳ１２にて確保したキャッシュページ１０４ａのＬＢＡに、ステップＳ１４にて受け取った複製対象のデータブロックを書き込む。この処理により、ステップＳ１３にて解析したＷＲＩＴＥＳＡＭＥコマンドが指定するＬＢＡに対応するステップＳ１２にて確保したキャッシュページ１０４ａのＬＢＡに、ステップＳ１４にて受け取った複製対象のデータブロックが書き込まれる。その後、ステップＳ１９に遷移する。
【００７０】
［ステップＳ１８］  キャッシュ制御部４２は、キャッシュページ１０４ａを確保し、ホスト装置３０から受信したデータブロックを、確保したキャッシュページ１０４ａのＷＲＩＴＥコマンドにより指定されたＬＢＡに書き込む。また、キャッシュ制御部４２は、データブロックが書き込まれたキャッシュページ１０４ａのＬＢＡに対応するデータプレゼントビットマップ管理領域４２３ａのビットマップを“１”に設定する。また、データブロックが書き込まれたキャッシュページ１０４ａのＬＢＡに対応するダーティビットマップ管理領域４２２ａのビットマップも“１”に設定する。その後、ステップＳ１９に遷移する。
【００７１】
［ステップＳ１９］  キャッシュ制御部４２は、ＷＲＩＴＥ系コマンドに対するデータの書き込み完了をホスト装置３０に応答する。その後、図７の処理を終了する。
図７に示す処理によると、複製対象のデータブロック内のデータがゼロデータである場合に、キャッシュページ１０４ａにデータブロックを書き込まずにＷＲＩＴＥＳＡＭＥコマンドに対するデータブロックの書き込み完了をホスト装置３０に応答する。従って、受け取ったゼロデータのデータブロックをキャッシュページ１０４ａに書き込んだ後に書き込み完了をホスト装置３０に応答する場合に比べ、ホスト装置３０に応答する時間を短くすることができる。
【００７２】
ところで、図７に示す処理を実行した後に、キャッシュ制御部４２は、複製対象のデータブロック内のデータがゼロデータ以外である場合、図７のステップＳ１７にて複製対象のデータブロックを書き込んだキャッシュページ１０４ａのＬＢＡに記憶されているデータブロックを、他のＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されている場所に対応するキャッシュページ１０４ａのＬＢＡに複製する。そして、キャッシュページ１０４ａのＬＢＡへの複製が終了すると、複製されたデータブロックをキャッシュページ１０４ａの複製されたデータブロックが記憶されているＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡに書き込む。
【００７３】
また、キャッシュ制御部４２からディスクへの書き込み指示を受け、ディスク制御部４３は、図７のステップＳ１４にてホスト装置３０が送信した複製対象のデータブロックを、第１の処理とは非同期にＷＲＩＴＥ系コマンドにより指定されたＬＵＮのＬＢＡに書き込む。ＷＲＩＴＥ系コマンドにより指定されたＬＵＮのＬＢＡにデータブロックを書き込む際、ディスク制御部４３は、以下の処理を行う。
【００７４】
ディスク制御部４３は、ゼロデータフラグ管理領域４２１ａを参照する。そして、ディスク制御部４３は、複製対象のデータブロック内のデータがゼロデータである場合、図７のステップＳ１３にて“１”に設定したＷＲＩＴＥＳＡＭＥビットマップに対応するキャッシュページ１０４ａのＬＢＡを特定する。そして、特定したＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡにゼロデータのデータブロックを書き込む。
【００７５】
次に、ステップＳ３の第２の処理を説明する。
図８は、第２の実施の形態の第２の処理を示すフローチャートである。
［ステップＳ２１］  キャッシュ制御部４２は、ホスト装置３０から受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドか否かを判断する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドである場合（ステップＳ２１のＹｅｓ）、ステップＳ２２に遷移する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドではない場合、すなわち、ＷＲＩＴＥコマンドである場合（ステップＳ２１のＮｏ）、ステップＳ２９に遷移する。
【００７６】
［ステップＳ２２］  キャッシュ制御部４２は、ホスト装置３０が送信した複製対象のデータブロックをチャネル制御部４１から受け取ると、ステップＳ２３に遷移する。
［ステップＳ２３］  キャッシュ制御部４２は、ステップＳ２２にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップＳ２２にて受け取った複製対象のデータブロック内のデータがゼロデータである場合（ステップＳ２３のＹｅｓ）、ステップＳ２４に遷移する。ステップＳ２２にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合（ステップＳ２３のＮｏ）、ステップＳ２６に遷移する。
【００７７】
［ステップＳ２４］  キャッシュ制御部４２は、管理テーブル４２ａのゼロデータフラグ管理領域４２１ａを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合（ステップＳ２４のＹｅｓ）、ステップＳ２５に遷移する。ゼロデータフラグがセットされていない場合（ステップＳ２４のＮｏ）、ステップＳ２６に遷移する。
【００７８】
［ステップＳ２５］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａを参照する。そして、キャッシュ制御部４２は、“１”に設定されているＷＲＩＴＥＳＡＭＥビットマップと、ステップＳ２１にて受け取ったＷＲＩＴＥＳＡＭＥコマンドにより“１”に設定されるＷＲＩＴＥＳＡＭＥビットマップをマージしたＷＲＩＴＥＳＡＭＥビットマップのパターンを作成する。そして、キャッシュ制御部４２は、作成したＷＲＩＴＥＳＡＭＥビットマップのパターンでＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａを更新する。その後、ステップＳ３１に遷移する。
【００７９】
［ステップＳ２６］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａに記憶されているＷＲＩＴＥＳＡＭＥビットマップにより特定されるデータブロックをダーティデータブロックに変換する。具体的には、キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されている箇所に対応するキャッシュページ１０４ａのＬＢＡを特定する。そしてキャッシュ制御部４２は、特定したＬＢＡに、“１”に設定されている先頭のＷＲＩＴＥＳＡＭＥビットマップに対応するキャッシュページ１０４ａのＬＢＡに記憶されているデータブロックを展開する。そして、キャッシュ制御部４２は、展開したデータブロックが記憶されている箇所に対応するダーティビットマップ管理領域４２２ａのダーティビットマップを“１”に設定する。その後、ステップＳ２７に遷移する。
【００８０】
［ステップＳ２７］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａのＷＲＩＴＥＳＡＭＥビットマップをクリア（全て“０”に設定）する。その後、キャッシュ制御部４２は、ステップＳ２１にて受け付けたＷＲＩＴＥＳＡＭＥコマンドが指定したＬＢＡから指定した個数分、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａのＷＲＩＴＥＳＡＭＥビットマップを“１”に設定する。その後、ステップＳ２８に遷移する。
【００８１】
［ステップＳ２８］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａの“１”に設定されているＷＲＩＴＥＳＡＭＥビットマップのうち、先頭のＷＲＩＴＥＳＡＭＥビットマップに対応するキャッシュページ１０４ａのＬＢＡに、ステップＳ２２にて受け取った複製対象のデータブロックを書き込む。その後、ステップＳ３１に遷移する。
【００８２】
［ステップＳ２９］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａを参照する。そして、ＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されている箇所に対応するキャッシュページ１０４ａのＬＢＡのデータブロックを、ディスク制御部４３の書き込み方法と同様の方法でキャッシュページ１０４ａのＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡに書き込む。その後、ステップＳ３０に遷移する。
【００８３】
［ステップＳ３０］  キャッシュ制御部４２は、ホスト装置３０から受信したデータブロックを、キャッシュページ１０４ａのＬＢＡに書き込む。また、キャッシュ制御部４２は、データブロックが書き込まれたキャッシュページ１０４ａのＬＢＡに対応するデータプレゼントビットマップ管理領域４２３ａのビットマップを“１”に設定する。その後、ステップＳ３１に遷移する。
【００８４】
［ステップＳ３１］  キャッシュ制御部４２は、データの書き込み完了をホスト装置３０に応答する。その後、図８の処理を終了する。
次に、図８のステップＳ２６の処理を、具体例を用いて説明する。
【００８５】
図９は、ＷＲＩＴＥＳＡＭＥビットマップをダーティビットマップに変換する処理を説明する図である。
図９（ａ）は、ＷＲＩＴＥＳＡＭＥビットマップをダーティビットマップに変換する前のキャッシュページ１０４ａ、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａおよびダーティビットマップ管理領域４２２ａを示している。
【００８６】
キャッシュページ１０４ａのＬＢＡ５１には実データが記憶されている。また、ＬＢＡ５２〜５５は、実データは記憶されていないが、ＷＲＩＴＥＳＡＭＥビットマップが“１”に設定されている。
【００８７】
図９（ｂ）は、ＷＲＩＴＥＳＡＭＥビットマップをダーティビットマップに変換する途中のキャッシュページ１０４ａ、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａおよびダーティビットマップ管理領域４２２ａを示している。
【００８８】
キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップを参照し、ＬＢＡ５１に記憶されているデータブロックをＬＢＡ５２、５３、５４、５５の順にコピーする。そして、コピーが終了すると、ＬＢＡに対応するビットのダーティビットマップを“１”に設定する。図９（ｂ）に示す処理により、ＷＲＩＴＥＳＡＭＥビットマップからダーティビットマップへの変換が行われる。変換する途中では、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａのＷＲＩＴＥＳＡＭＥビットマップの値は変化しない。
【００８９】
図９（ｃ）は、ＷＲＩＴＥＳＡＭＥビットマップをダーティビットマップに変換が終了した時点のキャッシュページ１０４ａ、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａおよびダーティビットマップ管理領域４２２ａを示している。ＷＲＩＴＥＳＡＭＥビットマップからダーティビットマップへの変換が終了すると、ステップＳ２７にて説明したように、ＷＲＩＴＥＳＡＭＥビットマップがクリアされる。
【００９０】
次に、制御モジュール１０ａがホスト装置３０からＲＥＡＤコマンドを受信したときの処理（ＲＥＡＤコマンド処理）を説明する。
図１０は、第２の実施の形態のＲＥＡＤコマンド処理を示すフローチャートである。
【００９１】
［ステップＳ４１］  キャッシュ制御部４２は、ＲＥＡＤコマンドにより指定された読み出し対象のデータブロックがキャッシュメモリ１０４に存在するか否か（キャッシュヒットするか否か）を判断する。読み出し対象のデータブロックがキャッシュメモリ１０４に存在する場合（ステップＳ４１のＹｅｓ）、ステップＳ４２に遷移する。読み出し対象のデータブロックがキャッシュメモリ１０４に存在しない場合（ステップＳ４１のＮｏ）、ステップＳ４５に遷移する。
【００９２】
［ステップＳ４２］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥビットマップ管理領域４２４ａを参照し、ＲＥＡＤコマンドにより指定されるＬＵＮのＬＢＡに対応するビットマップが“１”に設定されているか否かを判断する。読み出し対象のデータブロックにより指定されるＬＵＮのＬＢＡにビットマップが“１”に設定されている場合、すなわち、読み出し対象のデータブロックが、ＷＲＩＴＥＳＡＭＥコマンドの発行により書き込まれたデータブロックである場合（ステップＳ４２のＹｅｓ）、ステップＳ４３に遷移する。読み出し対象のデータブロックにより指定されるＬＵＮのＬＢＡにビットマップが“１”に設定されていない場合、すなわち、読み出し対象のデータブロックが、ＷＲＩＴＥコマンドの発行により書き込まれたデータブロックである場合（ステップＳ４２のＮｏ）、ステップＳ４６に遷移する。
【００９３】
［ステップＳ４３］  キャッシュ制御部４２は、ゼロデータフラグ管理領域４２１ａを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合（ステップＳ４３のＹｅｓ）、ステップＳ４４に遷移する。ゼロデータフラグがセットされていない場合（ステップＳ４３のＮｏ）、ステップＳ４７に遷移する。
【００９４】
［ステップＳ４４］  キャッシュ制御部４２は、ＲＥＡＤコマンドにより指定されるＬＢＡの数だけゼロデータのデータブロックを作成する。そして、キャッシュ制御部４２は、作成したゼロデータのデータブロックをホスト装置３０に転送する。その後、ステップＳ４９に遷移する。
【００９５】
［ステップＳ４５］  キャッシュ制御部４２は、ＲＥＡＤコマンドにより指定されるＬＵＮのＬＢＡに基づいて、ＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡからデータブロックを読み出す。読み出したデータブロックが、読み出し対象のデータブロックとなる。そして、キャッシュ制御部４２は、読み出したデータブロックをキャッシュページ１０４ａに書き込む。その後、ステップＳ４６に遷移する。
【００９６】
［ステップＳ４６］  キャッシュ制御部４２は、ステップＳ４５にて読み出した、読み出し対象のデータブロックまたは、キャッシュページ１０４ａに記憶されている読み出し対象のデータブロックをホスト装置３０に転送する。その後、ステップＳ４９に遷移する。
【００９７】
［ステップＳ４７］  キャッシュ制御部４２は、図７のステップＳ１７にて書き込んだＬＢＡに書き込まれたデータブロックをキャッシュページ１０４ａから読み出す。そして、読み出したデータブロックを、ＲＥＡＤコマンドにより指定されるＬＢＡの数だけ複製する。複製されたデータブロックが、読み出し対象のデータブロックとなる。その後、ステップＳ４８に遷移する。
【００９８】
［ステップＳ４８］  キャッシュ制御部４２は、読み出し対象のデータブロックをホスト装置３０に転送する。その後、ステップＳ４９に遷移する。
［ステップＳ４９］  キャッシュ制御部４２は、データの転送完了をホスト装置３０に応答する。その後、図１０に示す処理を終了する。
【００９９】
以上述べたように、制御モジュール１０ａによれば、キャッシュ制御部４２が、データブロック内のデータがゼロデータである場合、ゼロデータフラグ管理領域４２１ａにフラグを設定した時点でデータの書き込み完了をホスト装置３０に応答する。従って、受け取ったゼロデータのデータブロックをキャッシュページ１０４ａに書き込んだ後に書き込み完了をホスト装置３０に応答する場合に比べ、ホスト装置３０に応答する時間を短くすることができる。
【０１００】
また、ホスト装置３０に応答する時間を短くしても、ディスク制御部４３は、ＷＲＩＴＥＳＡＭＥビットマップを用いることで、ＲＡＩＤグループ２１に設定されたＬＵＮにデータブロックを書き込むことができる。
【０１０１】
また、キャッシュ制御部４２は、ＲＥＡＤコマンドを受け取った場合は、ＷＲＩＴＥＳＡＭＥビットマップおよびゼロデータフラグを用いることで、ホスト装置３０が要求するデータブロックを転送することができる。
【０１０２】
＜第３の実施の形態＞
次に、第３の実施の形態のストレージシステムについて説明する。
以下、第３の実施の形態のストレージシステムについて、前述した第２の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１０３】
第３の実施の形態のストレージシステムは、制御モジュール１０ａ、１０ｂが、ＲＡＩＤグループ２１に設定されたＬＵＮにデータを書き込む領域をキャッシュページ単位で管理する。第３の実施の形態のストレージシステムは、制御モジュール１０ａ、１０ｂが備える管理テーブルの構成および、管理テーブルを用いた処理方法が第２の実施の形態と異なっている。
【０１０４】
図１１は、第３の実施の形態の管理テーブルを示す図である。
第３の実施の形態の管理テーブル４２ｂは、フラグ管理領域４２１ｂと、ダーティビットマップ管理領域４２２ｂと、データプレゼントビットマップ管理領域４２３ｂとを有している。
【０１０５】
フラグ管理領域４２１ｂには、ＳＡＭＥデータフラグと、ゼロデータフラグを管理する領域である。ＳＡＭＥデータフラグは、ダーティビットマップで示されるデータブロックは、全て同じデータ内容のデータブロックであることを示すフラグである。ゼロデータフラグは、ダーティビットマップで示されるデータブロックが、全てゼロデータのデータブロックであることを示すフラグである。
【０１０６】
ダーティビットマップ管理領域４２２ｂと、データプレゼントビットマップ管理領域４２３ｂの機能は、ダーティビットマップ管理領域４２２ａと、データプレゼントビットマップ管理領域４２３ａと同じであるため説明を省略する。
【０１０７】
この管理テーブル４２ｂでは、管理テーブル４２ａに比べてＷＲＩＴＥＳＡＭＥビットマップ管理領域が省略されているため、キャッシュメモリ１０４の記憶領域に占める管理テーブル４２ｂの割合を、管理テーブル４２ａに比べ少なくすることができる。
【０１０８】
次に、第３の実施の形態の制御モジュール１０ａの第１の処理を説明する。
図１２は、第３の実施の形態の第１の処理を示すフローチャートである。
［ステップＳ５１］  キャッシュ制御部４２は、ホスト装置３０からＷＲＩＴＥ系コマンドを受け取ると、ＷＲＩＴＥ系コマンドに対応する管理テーブル４２ｂを作成する。管理テーブル４２ｂを作成することにより、管理テーブル４２ｂに対応するキャッシュページが確保される。その後、ステップＳ５２に遷移する。
【０１０９】
［ステップＳ５２］  キャッシュ制御部４２は、受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドか否かを判断する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドである場合（ステップＳ５２のＹｅｓ）、ステップＳ５３に遷移する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドではない場合、すなわち、ＷＲＩＴＥコマンドである場合（ステップＳ５２のＮｏ）、ステップＳ６１に遷移する。
【０１１０】
［ステップＳ５３］  キャッシュ制御部４２は、管理テーブル４２ｂのダーティビットマップ管理領域４２２ｂを参照し、“１”に設定されているダーティビットマップが存在するか否か、すなわち、ダーティデータブロックがキャッシュページ１０４ａに存在するか否かを判断する。“１”に設定されているダーティビットマップが存在する場合（ステップＳ５３のＹｅｓ）、ステップＳ５４に遷移する。“１”に設定されているダーティビットマップが存在しない場合（ステップＳ５３のＮｏ）、ステップＳ５５に遷移する。
【０１１１】
［ステップＳ５４］  キャッシュ制御部４２は、ダーティビットマップにより特定されるキャッシュページ１０４ａのダーティデータブロックを、特定したダーティデータブロックが記憶されているＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡに書き込む。その後、ステップＳ５５に遷移する。
【０１１２】
［ステップＳ５５］  キャッシュ制御部４２は、ホスト装置３０が送信した複製対象のデータブロックをチャネル制御部４１から受け取ると、ステップＳ５６に遷移する。
［ステップＳ５６］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥコマンドに含まれるＬＢＡに対応するダーティビットマップを“１”に設定する。その後、ステップＳ５７に遷移する。
【０１１３】
［ステップＳ５７］  キャッシュ制御部４２は、ステップＳ５５にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップＳ５５にて受け取った複製対象のデータブロック内のデータがゼロデータである場合（ステップＳ５７のＹｅｓ）、ステップＳ５８に遷移する。ステップＳ５５にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合（ステップＳ５７のＮｏ）、ステップＳ５９に遷移する。
【０１１４】
［ステップＳ５８］  キャッシュ制御部４２は、管理テーブル４２ｂのフラグ管理領域４２１ｂのゼロデータフラグをセットする。その後、ステップＳ６２に遷移する。
［ステップＳ５９］  キャッシュ制御部４２は、管理テーブル４２ｂのフラグ管理領域４２１ｂのＳＡＭＥデータフラグをセットする。その後、ステップＳ６０に遷移する。
【０１１５】
［ステップＳ６０］  キャッシュ制御部４２は、“１”に設定されているダーティビットマップのうち、先頭のダーティビットマップに対応するステップＳ５１にて確保したキャッシュページ１０４ａのＬＢＡに、ステップＳ５５にて受け取った複製対象のデータブロックを書き込む。その後、ステップＳ６２に遷移する。
【０１１６】
［ステップＳ６１］  キャッシュ制御部４２は、ホスト装置３０から受信したデータブロックを、ステップＳ５１にて作成した管理テーブル４２ｂに対応するキャッシュメモリ１０４のデータ記憶領域に書き込む。また、キャッシュ制御部４２は、データブロックが書き込まれたキャッシュページ１０４ａのＬＢＡに対応するデータプレゼントビットマップ管理領域４２３ａのビットマップを“１”に設定する。その後、ステップＳ６２に遷移する。
【０１１７】
［ステップＳ６２］  キャッシュ制御部４２は、ＷＲＩＴＥＳＡＭＥコマンドに対するデータの書き込み完了をホスト装置３０に応答する。その後、図１２の処理を終了する。
キャッシュ制御部４２は、複製対象のデータブロック内のデータがゼロデータ以外である場合、ディスク制御部４３が次の処理を行う。ディスク制御部４３は、複製対象のデータブロックを書き込んだキャッシュページ１０４ａのＬＢＡに記憶されているデータブロックを、キャッシュページ１０４ａのＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡに書き込む。
【０１１８】
ところで、図１２に示す処理を実行した後に、キャッシュ制御部４２から、ディスクへの書き込み指示を受け、ディスク制御部４３は、図１２のステップＳ５５にてホスト装置３０が送信した複製対象のデータブロックを、第１の処理とは非同期にＷＲＩＴＥ系コマンドにより指定されたＬＵＮのＬＢＡに書き込む。ＷＲＩＴＥ系コマンドにより指定されたＬＵＮのＬＢＡにデータブロックを書き込む際、ディスク制御部４３は、以下の処理を行う。
【０１１９】
ディスク制御部４３は、フラグ管理領域４２１ｂのゼロデータフラグを参照する。そして、ディスク制御部４３は、複製対象のデータブロック内のデータがゼロデータである場合、管理テーブル４２ｂに対応するキャッシュページ１０４ａのＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡにゼロデータのデータブロックを書き込む。
【０１２０】
次に、第３の実施の形態の第２の処理を説明する。
図１３および図１４は、第３の実施の形態の第２の処理を示すフローチャートである。
［ステップＳ７１］  キャッシュ制御部４２は、ホスト装置３０から受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドか否かを判断する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドである場合（ステップＳ７１のＹｅｓ）、ステップＳ７２に遷移する。受け取ったＷＲＩＴＥ系コマンドが、ＷＲＩＴＥＳＡＭＥコマンドではない場合、すなわち、ＷＲＩＴＥコマンドである場合（ステップＳ７１のＮｏ）、ステップＳ８４に遷移する。
【０１２１】
［ステップＳ７２］  キャッシュ制御部４２は、ホスト装置３０が送信した複製対象のデータブロックをチャネル制御部４１から受け取ると、ステップＳ７３に遷移する。
［ステップＳ７３］  キャッシュ制御部４２は、ステップＳ７２にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップＳ７２にて受け取った複製対象のデータブロック内のデータがゼロデータである場合（ステップＳ７３のＹｅｓ）、ステップＳ７４に遷移する。ステップＳ７２にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合（ステップＳ７３のＮｏ）、ステップＳ７６に遷移する。
【０１２２】
［ステップＳ７４］  キャッシュ制御部４２は、管理テーブル４２ｂのフラグ管理領域４２１ｂを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合（ステップＳ７４のＹｅｓ）、ステップＳ７５に遷移する。ゼロデータフラグがセットされていない場合（ステップＳ７４のＮｏ）、ステップＳ７８に遷移する。
【０１２３】
［ステップＳ７５］  キャッシュ制御部４２は、ダーティビットマップ管理領域４２２ｂを参照し、既存のダーティビットマップと、ステップＳ７１にて受け取ったＷＲＩＴＥＳＡＭＥコマンドにより“１”に設定されるダーティビットマップをマージしたダーティビットマップのパターンを作成する。そして、キャッシュ制御部４２は、作成したダーティビットマップのパターンでダーティビットマップ管理領域４２２ｂを更新する。その後、ステップＳ８６に遷移する。
【０１２４】
［ステップＳ７６］  キャッシュ制御部４２は、管理テーブル４２ｂのダーティビットマップ管理領域４２２ｂを参照し、ダーティビットマップの先頭のＬＢＡに対応するデータブロックを、キャッシュページ１０４ａから読み出す。その後、ステップＳ７７に遷移する。
【０１２５】
［ステップＳ７７］  キャッシュ制御部４２は、ステップＳ７６にて読み出したデータブロックが、ステップＳ７２にて受け取ったデータブロックと同一か否かを判断する。ステップＳ７６にて読み出したデータブロックが、ステップＳ７２にて受け取ったデータブロックと同一である場合（ステップＳ７７のＹｅｓ）、ステップＳ７５に遷移する。ステップＳ７６にて読み出したデータブロックが、ステップＳ７２にて受け取ったデータブロックと同一ではない場合（ステップＳ７７のＮｏ）、ステップＳ７８に遷移する。
【０１２６】
［ステップＳ７８］  キャッシュ制御部４２は、ダーティビットマップにより特定されるキャッシュページ１０４ａのダーティデータブロックを、特定したダーティデータブロックが記憶されているＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡに書き込む。ステップＳ７９に遷移する。
【０１２７】
［ステップＳ７９］  キャッシュ制御部４２は、管理テーブル４２ｂのフラグ管理領域４２１ｂのゼロデータフラグおよびＳＡＭＥデータフラグをリセットする。その後、ステップＳ８０に遷移する。
【０１２８】
［ステップＳ８０］  キャッシュ制御部４２は、ダーティビットマップ管理領域４２２ｂのダーティビットマップをクリアする。その後、キャッシュ制御部４２は、ステップＳ７１にて受け付けたＷＲＩＴＥＳＡＭＥコマンドが指定したＬＢＡから指定した個数分、ダーティビットマップ管理領域４２２ｂのダーティビットマップを“１”に設定する。その後、ステップＳ８１に遷移する。
【０１２９】
［ステップＳ８１］  キャッシュ制御部４２は、ステップＳ７２にて受け取った複製対象のデータブロック内のデータがゼロデータか否かを判断する。ステップＳ７２にて受け取った複製対象のデータブロック内のデータがゼロデータである場合（ステップＳ８１のＹｅｓ）、ステップＳ８２に遷移する。ステップＳ８１にて受け取った複製対象のデータブロック内のデータがゼロデータではない場合（ステップＳ８１のＮｏ）、ステップＳ８３に遷移する。
【０１３０】
［ステップＳ８２］  キャッシュ制御部４２は、管理テーブル４２ｂのフラグ管理領域４２１ｂのゼロデータフラグをセットする。その後、ステップＳ８６に遷移する。
［ステップＳ８３］  キャッシュ制御部４２は、管理テーブル４２ｂのフラグ管理領域４２１ｂのＳＡＭＥデータフラグをセットする。その後、ステップＳ８６に遷移する。
【０１３１】
［ステップＳ８４］  キャッシュ制御部４２は、ダーティビットマップ管理領域４２２ｂを参照する。そして、ダーティビットマップが“１”に設定されている箇所に対応するキャッシュページ１０４ａのＬＢＡのデータブロックを、ディスク制御部４３の書き込み方法と同様の方法でキャッシュページ１０４ａのＬＢＡに対応するＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡに書き込む。その後、ステップＳ８５に遷移する。
【０１３２】
［ステップＳ８５］  キャッシュ制御部４２は、ホスト装置３０から受信したデータブロックを、キャッシュページ１０４ａのＬＢＡに書き込む。また、キャッシュ制御部４２は、データブロックが書き込まれたキャッシュページ１０４ａのＬＢＡに対応するデータプレゼントビットマップ管理領域４２３ｂのビットマップを“１”に設定する。その後、ステップＳ８６に遷移する。
【０１３３】
［ステップＳ８６］  キャッシュ制御部４２は、データの書き込み完了をホスト装置３０に応答する。その後、図１３の処理を終了する。
次に、第３の実施の形態のＲＥＡＤコマンド処理を説明する。
【０１３４】
図１５は、第３の実施の形態のＲＥＡＤコマンド処理を示すフローチャートである。
［ステップＳ９１］  キャッシュ制御部４２は、ＲＥＡＤコマンドにより指定された読み出し対象のデータブロックがキャッシュメモリ１０４に存在するか否か（キャッシュヒットするか否か）を判断する。読み出し対象のデータブロックがキャッシュメモリ１０４に存在する場合（ステップＳ９１のＹｅｓ）、ステップＳ９２に遷移する。読み出し対象のデータブロックがキャッシュメモリ１０４に存在しない場合（ステップＳ９１のＮｏ）、ステップＳ９５に遷移する。
【０１３５】
［ステップＳ９２］  キャッシュ制御部４２は、フラグ管理領域４２１ｂを参照し、ＳＡＭＥデータフラグがセットされているか否かを判断する。ＳＡＭＥデータフラグがセットされている場合（ステップＳ９２のＹｅｓ）、ステップＳ９３に遷移する。ＳＡＭＥデータフラグがセットされていない場合（ステップＳ９２のＮｏ）、ステップＳ９６に遷移する。
【０１３６】
［ステップＳ９３］  キャッシュ制御部４２は、フラグ管理領域４２１ｂを参照し、ゼロデータフラグがセットされているか否かを判断する。ゼロデータフラグがセットされている場合（ステップＳ９３のＹｅｓ）、ステップＳ９４に遷移する。ゼロデータフラグがセットされていない場合（ステップＳ９３のＮｏ）、ステップＳ９７に遷移する。
【０１３７】
［ステップＳ９４］  キャッシュ制御部４２は、ＲＥＡＤコマンドにより指定されるＬＢＡの数だけゼロデータのデータブロックを作成する。そして、キャッシュ制御部４２は、作成したゼロデータのデータブロックをホスト装置３０に転送する。その後、ステップＳ９８に遷移する。
【０１３８】
［ステップＳ９５］  キャッシュ制御部４２は、ＲＥＡＤコマンドにより指定されるＬＵＮのＬＢＡに基づいて、ＲＡＩＤグループ２１に設定されたＬＵＮのＬＢＡからデータブロックを読み出す。読み出したデータブロックが、読み出し対象のデータブロックとなる。そして、キャッシュ制御部４２は、読み出したデータブロックをキャッシュページ１０４ａに書き込む。その後、ステップＳ９７に遷移する。
【０１３９】
［ステップＳ９６］  キャッシュ制御部４２は、図１２のステップＳ６０にて書き込んだＬＢＡに書き込まれたデータブロックをキャッシュページ１０４ａから読み出す。そして、読み出したデータブロックを、ＲＥＡＤコマンドにより指定されるＬＢＡの数だけ複製する。複製されたデータブロックが、読み出し対象のデータブロックとなる。その後、ステップＳ９７に遷移する。
【０１４０】
［ステップＳ９７］  キャッシュ制御部４２は、読み出し対象のデータブロックをホスト装置３０に転送する。その後、ステップＳ９８に遷移する。
［ステップＳ９８］  データの転送完了をホスト装置３０に応答する。その後、図１５に示す処理を終了する。
【０１４１】
この第３の実施の形態のストレージシステムによれば、第２の実施の形態のストレージシステムと同様の効果が得られる。
そして、第３の実施の形態のストレージシステムによれば、さらに、管理テーブル４２ｂの容量を、管理テーブル４２ａに比べて小さくできるため、キャッシュメモリ１０４の記憶領域に与える影響を小さくすることができる。
【０１４２】
以上、本発明の制御装置、制御方法およびストレージ装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１４３】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御装置３、制御モジュール１０ａ、１０ｂが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１４４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４６】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【０１４７】
以上の第１〜第３の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  記憶媒体へのデータアクセスを制御する制御装置において、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とする制御装置。
【０１４８】
（付記２）  前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記制御部は、前記書き込み要求を前記アクセス要求装置から受け付けると、前記書き込み要求に応じた前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に設定することを特徴とする付記１記載の制御装置。
【０１４９】
（付記３）  前記制御部が前記アクセス要求装置に応答した後に、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていることを確認すると前記書き込み領域識別情報記憶部に記憶された前記書き込み領域識別情報を用いて前記アクセス要求装置から送られてきた前記データブロックを前記記憶媒体に書き込む記憶媒体制御部をさらに有することを特徴とする付記２記載の制御装置。
【０１５０】
（付記４）  前記制御部が前記アクセス要求装置に応答した後に、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていないことを確認すると前記書き込み領域識別情報記憶部に記憶された前記書き込み領域識別情報を用いて前記記憶媒体に書き込むデータブロックを複製し、複製された前記データブロックを前記記憶媒体に書き込む記憶媒体制御部をさらに有することを特徴とする付記２記載の制御装置。
【０１５１】
（付記５）  前記データブロックを一時的に記憶するデータブロック記憶領域を備えるキャッシュメモリをさらに有し、
前記アクセス要求装置から送られてきた前記データブロック内のデータがゼロデータではない場合、前記制御部は、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報に対応して用意される前記データブロック記憶領域の書き込み領域の先頭に前記データブロックを書き込み、前記記憶媒体制御部は、前記書き込み領域の先頭に記憶されている前記データブロックを複製することを特徴とする付記４記載の制御装置。
【０１５２】
（付記６）  前記アクセス要求装置から所定のデータブロックを読み出す要求を受け付けると、前記制御部は、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報が設定されている場合、要求を受け付けた前記データブロックの数だけゼロデータの前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする付記１記載の制御装置。
【０１５３】
（付記７）  前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記書き込み領域識別情報記憶部を参照し、前記読み出し要求に応じた前記データブロックに対応する前記書き込み領域識別情報が記憶されている場合、前記ゼロデータ識別情報記憶部を参照することを特徴とする付記６記載の制御装置。
【０１５４】
（付記８）  前記書き込み要求による前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記アクセス要求装置から送られてきた前記データブロック内のデータがゼロデータではない場合、前記制御部は、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報により特定される書き込み領域の先頭に対応するキャッシュメモリのデータブロック記憶領域に前記データブロックを書き込み、
前記制御部は、前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記ゼロデータ識別情報記憶部を参照し、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報が設定されていない場合、前記記憶媒体制御部は、前記書き込み領域の先頭に記憶されている前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする付記１記載の制御装置。
【０１５５】
（付記９）  前記制御部は、前記書き込み領域識別情報が前記書き込み領域識別情報記憶部に記憶されている状態で、ゼロデータの前記データブロックを指定された数だけ前記記憶媒体に書き込む書き込み要求を前記アクセス要求装置から受け付けると前記ゼロデータ識別情報を参照し、前記ゼロデータ識別情報が設定されている場合、前記書き込み要求に関連づけられて送られてくる前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を、前記書き込み領域識別情報記憶部に記憶されている前記書き込み領域識別情報にマージし、マージが完了した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答することを特徴とする付記２記載の制御装置。
【０１５６】
（付記１０）  前記制御部は、前記書き込み領域識別情報が前記書き込み領域識別情報記憶部に記憶されている状態で、ゼロデータではないデータが含まれる前記データブロックを指定された数だけ前記記憶媒体に書き込む要求を前記アクセス要求装置から受け付けると、前記書き込み領域識別情報により識別される前記書き込み領域に対応するキャッシュメモリのデータブロック記憶領域に前記書き込み要求に関連づけられて送られてくる前記データブロックを書き込み、前記アクセス要求装置から送られてくる前記データブロックの前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に記憶することを特徴とする付記９記載の制御装置。
【０１５７】
（付記１１）  前記書き込み要求を受け付けたことを識別する書き込み領域識別情報を記憶する書き込み領域識別情報記憶部をさらに有し、
前記制御部は、前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータではない場合、前記書き込み要求に応じた前記書き込み領域識別情報を前記書き込み領域識別情報記憶部に設定し、前記書き込み領域識別情報により特定される書き込み領域の先頭に対応するキャッシュメモリのデータブロック記憶領域に、前記データブロックを書き込むことを特徴とする付記１記載の制御装置。
【０１５８】
（付記１２）  前記制御部は、前記アクセス要求装置から所定のデータブロックを読み出す読み出し要求を受け付けると、前記書き込み領域識別情報記憶部を参照し、前記書き込み領域識別情報が記憶されている場合、前記読み出し要求に応じた前記データブロックの数だけ前記データブロック記憶領域に記憶されている前記データブロックを複製し、前記アクセス要求装置に転送することを特徴とする付記１１記載の制御装置。
【０１５９】
（付記１３）  前記データブロック記憶領域に記憶されている前記データブロックの書き込み領域を識別するメモリ領域識別情報を記憶するメモリ領域識別情報記憶部をさらに有し、
前記制御部は、前記データブロック記憶領域に前記データブロックが書き込まれている状態で、ゼロデータの前記データブロックを指定された数だけ前記記憶媒体に書き込む書き込み要求を前記アクセス要求装置から受け付けると前記ゼロデータ識別情報を参照し、前記ゼロデータ識別情報が設定されている場合、前記書き込み要求に関連づけられて送られてくる前記データブロックの前記記憶媒体への書き込み領域を識別する書き込み領域識別情報を、前記メモリ領域識別情報記憶部に記憶されている前記メモリ識別情報にマージし、マージが完了した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答することを特徴とする付記１１記載の制御装置。
【０１６０】
（付記１４）  記憶媒体へのデータアクセスを制御する制御方法において、
コンピュータが、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、
前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する、
ことを特徴とする制御方法。
【０１６１】
（付記１５）  記憶媒体と、前記記憶媒体へのデータアクセスを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体への書き込み対象のデータブロック内のデータがゼロデータである場合、前記データブロックがゼロデータであることを識別するゼロデータ識別情報を記憶するゼロデータ識別情報記憶部と、
アクセス要求装置が発行する前記記憶媒体の所定の記憶領域に指定数の前記データブロックの書き込みを要求する書き込み要求に関連づけられて前記アクセス要求装置から送られてくる前記データブロック内のデータがゼロデータである場合、前記ゼロデータ識別情報記憶部に前記ゼロデータ識別情報を設定し、前記ゼロデータ識別情報を設定した時点で前記記憶媒体への書き込み完了を前記アクセス要求装置に応答する制御部と、
を有することを特徴とするストレージ装置。
【符号の説明】
【０１６２】
１、１００  ストレージ装置
２  アクセス要求装置
３  制御装置
３ａ  データブロック記憶領域
３ｂ  書き込み領域識別情報記憶部
３ｃ  ゼロデータ識別情報記憶部
３ｄ  制御部
３ｅ  記憶媒体制御部
４  記憶媒体
５  データブロック
１０ａ、１０ｂ  制御モジュール
２０  ＨＤＤ
２０ａ〜２０ｄ  ドライブエンクロージャ
３０  ホスト装置
４１  チャネル制御部
４２  キャッシュ制御部
４２ａ、４２ｂ  管理テーブル
４３  ディスク制御部
１０４  キャッシュメモリ
１０４ａ  キャッシュページ
４２１ａ  ゼロデータフラグ管理領域
４２１ｂ  フラグ管理領域
４２２ａ、４２２ｂ  ダーティビットマップ管理領域
４２３ａ、４２３ｂ  データプレゼントビットマップ管理領域
４２４ａ  ＷＲＩＴＥＳＡＭＥビットマップ管理領域
１０００  ストレージシステム
【図１】
0005712713.tif 000002
【図２】
0005712713.tif 000003
【図３】
0005712713.tif 000004
【図４】
0005712713.tif 000005
【図５】
0005712713.tif 000006
【図６】
0005712713.tif 000007
【図７】
0005712713.tif 000008
【図８】
0005712713.tif 000009
【図９】
0005712713.tif 000010
【図１０】
0005712713.tif 000011
【図１１】
0005712713.tif 000012
【図１２】
0005712713.tif 000013
【図１３】
0005712713.tif 000014
【図１４】
0005712713.tif 000015
【図１５】
0005712713.tif 000016