(57)【要約】【課題】第１サイズの単位データを第１サイズと異なる第２サイズのデータ領域に保存する記憶装置における書込処理の性能低下を軽減させる。【解決手段】記憶装置５のデータ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、記憶装置５の複数の前記データ領域に同じ第１サイズのデータブロックを割り当てる割当処理部１４と、各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部１３と、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部１１ａと、前記書き込み対象のデータブロックのデータを含む前記第１サイズと異なる第２サイズの書込用データを生成して前記一のデータ領域に書き込む書込処理部１１ｂと、を備える。【選択図】図１
2014186412.tif 000002
【特許請求の範囲】
【請求項１】
上位装置に対して第１サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第１サイズと異なる第２サイズ単位でデータの入出力を行なう制御装置であって、
前記データ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第１サイズのデータブロックを割り当てる処理を行なう割当処理部と、
各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部と、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
前記書き込み対象のデータブロックのデータを含む前記第２サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
を備えることを特徴とする、制御装置。
【請求項２】
前記管理部は、
前記書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該複数の記憶領域のうち、一の記憶領域は前記データブロックのデータが書き込まれると有効を示し、他の全ての記憶領域は無効を示すように、前記管理情報を書き換える
ことを特徴とする、請求項１記載の制御装置。
【請求項３】
前記管理部は、
前記各データ領域に割り当てられた前記複数のデータブロックの記憶領域について、データブロックごとに、前記複数のデータ領域のうちのいずれか一のデータ領域内で該データブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、前記データ保存状態を管理し、
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域のうちの一つである第１のデータ領域における全てのデータブロックのデータ保存状態が無効であると判断した場合に、前記第１のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、請求項２記載の制御装置。
【請求項４】
所定のタイミングで、前記管理部が管理する前記データ保存状態に基づいて、前記複数のデータ領域の各々から前記データ保存状態が有効な前記第１サイズのデータブロックを全て読み出し、読み出した前記データブロックを含む前記第２サイズの書込用データを生成して、生成した前記書込用データを、前記複数のデータ領域のいずれか一のデータ領域に書き込む最適化部、
をさらに備えることを特徴とする、請求項２又は請求項３記載の制御装置。
【請求項５】
読み出し対象のデータである一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域の中から一以上のデータ領域を判定する読出領域判定部と、
前記読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記読出領域判定部により判定された前記一以上のデータ領域の中から、前記データ保存状態が有効な前記読み出し対象の一以上のデータブロックを読み出す処理を行なう読出処理部と、
をさらに備えることを特徴とする、請求項２〜４のいずれか１項記載の制御装置。
【請求項６】
データを記憶する記憶装置と、
上位装置に対して第１サイズのデータブロック単位で入出力を行ない、前記記憶装置の各データ領域に対して前記第１サイズと異なる第２サイズ単位でデータの入出力を行なう制御装置と、をそなえ、
前記制御装置は、
前記データ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第１サイズのデータブロックを割り当てる処理を行なう割当処理部と、
各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部と、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
前記書き込み対象のデータブロックのデータを含む前記第２サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
を備えることを特徴とする、ストレージ装置。
【請求項７】
上位装置に対して第１サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第１サイズと異なる第２サイズ単位でデータの入出力を行なうコンピュータに、
前記データ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第１サイズのデータブロックを割り当て、
各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理し、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定し、
前記書き込み対象のデータブロックのデータを含む前記第２サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む、
処理を実行させることを特徴とする、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置，ストレージ装置，及び制御プログラムに関する。
【背景技術】
【０００２】
従来、５１２エミュレーションを行なう４ＫセクタHard Disk Drive（ＨＤＤ）が知られている。４ＫセクタＨＤＤは、ディスク（媒体）に記録されるデータの最小単位である１セクタが４Ｋバイト（４０９６バイト（４ＫｉＢ））のＨＤＤである。
５１２エミュレーションは、ディスク上では１セクタ＝４０９６バイトであるが、ＰＣやサーバ等のホスト装置に対するＩ／Ｆ（インタフェース）上では、５１２バイト／セクタとなるように行なわれるエミュレーションである。以下、５１２エミュレーションを行なう４ＫセクタＨＤＤを４ＫセクタＨＤＤ（５１２Ｅ）という。
【０００３】
４ＫセクタＨＤＤが登場する以前から、１セクタが５１２バイトであるＨＤＤが用いられており、ホスト装置には、５１２バイト／セクタのＨＤＤに合わせて５１２バイト単位でＨＤＤに対して書込コマンドを発行するものが少なくない。
４ＫセクタＨＤＤ（５１２Ｅ）は、上記のような５１２バイト単位で書込コマンドを発行するホスト装置との互換性を担保するために、ホスト装置に対して５１２バイト／セクタのＨＤＤと同様なＩ／Ｆを提供する。従って、ホスト装置は、５１２バイト／セクタのＨＤＤへのアクセスと同様のコマンド及びデータサイズで、４ＫセクタＨＤＤ（５１２Ｅ）へのアクセスを行なうことができる。
【０００４】
ここで、４ＫセクタＨＤＤ（５１２Ｅ）では、ホスト装置からの書込コマンドに応じて、Read Modify Write（リードモディファイライト；以下、ＲＭＷという）が発生することがある。以下、図１４及び図１５を参照して、ＲＭＷについて説明する。
図１４は、４ＫセクタＨＤＤ（５１２Ｅ）によるＲＭＷの動作例を示す図であり、図１５は、４ＫセクタＨＤＤ（５１２Ｅ）におけるLogical Block Address（ＬＢＡ）とセクタとの対応関係を例示する図である。
【０００５】
図１４に示すように、情報処理システム１００は、ストレージ装置２００及びホスト装置３００を備える。ホスト装置３００は、ＰＣやサーバ等の情報処理装置であり、５１２バイト単位で書込コマンド及び読出コマンドを発行する。ストレージ装置２００は、コントローラモジュール４００及び４ＫセクタＨＤＤ（５１２Ｅ）５００を備える。以下、４ＫセクタＨＤＤ（５１２Ｅ）５００を単にＨＤＤ５００ともいう。
【０００６】
コントローラモジュール４００は、ホスト装置３００からのアクセス要求に応じてＨＤＤ５００に対してアクセスを行なう制御装置であり、ＨＤＤ５００に出力する書込データ及びＨＤＤ５００から読み出した読出データ等を一時的に格納するメモリ４１０を備える。ＨＤＤ５００は、４ＫセクタＨＤＤ（５１２Ｅ）であり、コントローラモジュール４００との間でやり取りされる書込／読出データを一時的に格納するメモリ５１０、及び、データを記憶する記憶領域（ディスク）５２０を備える。
【０００７】
ＨＤＤ５００は、図１５に示すように、ホスト装置３００に対するＩ／Ｆ上では５１２バイトを１ブロックとして管理する一方、ディスク上では４０９６バイトを１ブロック（セクタ）として管理する。ホスト装置３００は、コントローラモジュール４００配下に接続されたＨＤＤ５００へアクセスを行なう際には、ＨＤＤ５００のＩ／Ｆによりホスト装置３００が認識できる５１２バイト単位のＬＢＡを指定して、コマンドを発行する。
【０００８】
なお、図１５に示す例では、ＬＢＡの＃００〜＃１５がそれぞれ５１２バイトのブロックであり、セクタ＃０及び＃１がそれぞれ４０９６バイトのブロックである。また、ＬＢＡの＃００〜＃０７とＨＤＤ５００のセクタ＃０とが対応し、ＬＢＡの＃０８〜＃１５とＨＤＤ５００のセクタ＃１とが対応する。
図１４に示す情報処理システム１００において、ホスト装置３００から５１２バイトの書込データをＬＢＡ＃０２に書き込む書込コマンドが発行されると、コントローラモジュール４００は、書込データを一旦メモリ４１０に溜め込む。このとき、コントローラモジュール４００は、書込データを５１２バイト単位のデータブロックで管理する。
【０００９】
そして、コントローラモジュール４００は、メモリ４１０に溜め込んだ書込データを非同期でＨＤＤ５００へ書き込む（図１４中の矢印（１）参照）。ＨＤＤ５００は、書込データを受信すると、書き込み対象のブロックであるＬＢＡ＃０２を含む４０９６バイトのデータブロック＃０を、記憶領域５２０からメモリ５１０に読み出す（図１４中の矢印（２）参照）。
【００１０】
次いで、ＨＤＤ５００は、記憶領域５２０から読み出した４０９６バイトのデータとコントローラモジュール４００から受信した書込データとをマージする（図１４中の（３）参照）。つまり、ＨＤＤ５００は、読み出した４０９６バイトのデータのうち、ＬＢＡ＃０２に対応する領域の５１２バイトのデータを、書込データで上書き（モディファイ）する。
【００１１】
最後に、ＨＤＤ５００は、メモリ５１０に保持されたマージ後の４０９６バイトのデータを記憶装置５２０へ書き込む（図１４中の矢印（４）参照）。
以上のように、４ＫセクタＨＤＤ（５１２Ｅ）は、１セクタである４０９６バイト未満の書込データを受信すると、図１４中の（２）〜（４）に示すＲＭＷを行なう。
なお、関連する技術として、未記録Error Correction Code（ＥＣＣ）ブロックを含む光ディスク等に、リードモディファイを行なわずにユーザデータを記録可能にする技術が知られている（例えば、特許文献１参照）。この技術では、光ディスク装置は、未使用ＥＣＣブロック内のセクタにユーザデータを記録するコマンドを受け取った場合、ＲＭＷを行なわずにホスト装置から転送されたユーザデータにダミーデータを付加する。そして、光ディスク装置は、ダミーデータの付加によりユーザデータを１ＥＣＣブロック分のデータ長とした上で目的のＥＣＣブロックに記録する。
【００１２】
また、関連する他の技術として、４Ｋバイトでディスクに読み書きするハードディスクドライブ装置において、ディスクに記憶されている５１２バイトの管理データを上書きする際の処理速度を向上させる技術が知られている（例えば、特許文献２参照）。この技術では、ハードディスクドライブ装置は、管理データを含む４Ｋバイトのデータを予めキャッシュメモリに記憶しておき、データの書込命令により、ＰＣからの管理データでキャッシュメモリ内の管理データを更新する。そして、ハードディスクドライブ装置は、更新された管理データを含む４Ｋバイトのデータをキャッシュメモリからディスクに書き込む。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平１０−１０６１７０号公報
【特許文献２】特開２０１２−１１３７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
４ＫセクタＨＤＤ（５１２Ｅ）５００において上述したＲＭＷが発生すると、５１２バイト／セクタのＨＤＤと比べて、ＨＤＤの性能低下が懸念される。
具体的には、５１２バイト／セクタのＨＤＤは、例えば５１２バイトの書込データを受け取ると、書き込みのためのシーク処理、及び、書込データの書込処理を行なう。これに対し、４ＫセクタＨＤＤ（５１２Ｅ）は、ＲＭＷが発生すると、５１２バイト／セクタのＨＤＤにおける処理に加えて、読み出しのためのシーク処理、データの読出処理、及び、マージ処理を行なう（図１４の（２）〜（４）参照）。このように、ＲＭＷの処理は、５１２バイト／セクタのＨＤＤによるデータの書き込みよりもオーバーヘッドが大きい。
【００１５】
特に、数ｍｓ程度の時間がかかるシーク処理に着目すると、５１２バイト／セクタのＨＤＤでは書き込みのために１回行なわれるのに対し、ＲＭＷにおいては読み出し及び書き込みのために２回行なわれることになる。
以上のように、４ＫセクタＨＤＤ（５１２Ｅ）によるＲＭＷは、ＨＤＤ単体でみた場合、５１２バイト／セクタのＨＤＤによるデータの書き込みよりもＨＤＤ性能を低下させる要因となる。
【００１６】
また、上述したユーザデータにダミーデータを付加する技術は、ダミーデータが付加されたユーザデータを、未使用の１ＥＣＣブロック内へ記録するものであり、既にデータが記憶されているブロック内への記録については、考慮されていない。
さらに、上述した４Ｋバイトのデータを予めキャッシュメモリに記憶しておく技術では、キャッシュメモリの占有時間及び占有率が高くなり、ディスクに対するキャッシュとして使用可能なキャッシュメモリの領域が減少する。キャッシュメモリの利用可能領域が減少すると、同容量のキャッシュメモリを有するＨＤＤよりもキャッシュミスの可能性が高くなるため、ＨＤＤの性能低下が懸念される。
【００１７】
ここまで、４ＫセクタＨＤＤ（５１２Ｅ）においてＲＭＷが発生する場合を例に挙げて説明したが、入力される最小サイズ（単位）と異なるサイズで書込データを保存し、ＲＭＷに類する処理を行なう他の記憶装置においても同様の問題がある。このような記憶装置の一例としては、４Ｋバイト等のページ単位で書込データを記憶するSolid State Drive（ＳＳＤ）やUniversal Serial Bus（ＵＳＢ）メモリ等のフラッシュメモリが挙げられる。
【００１８】
１つの側面では、本発明は、第１サイズの単位データを第１サイズと異なる第２サイズのデータ領域に保存する記憶装置における書込処理の性能低下を軽減させることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１９】
本件の制御装置は、上位装置に対して第１サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第１サイズと異なる第２サイズ単位でデータの入出力を行なう制御装置であって、前記データ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第１サイズのデータブロックを割り当てる処理を行なう割当処理部と、各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す第１管理情報を管理する管理部と、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第１管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、前記書き込み対象のデータブロックのデータを含む前記第２サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、を備える。
【発明の効果】
【００２０】
一実施形態によれば、第１サイズの単位データを第１サイズと異なる第２サイズのデータ領域に保存する記憶装置における書込処理の性能低下を軽減させることができる。
【図面の簡単な説明】
【００２１】
【図１】一実施形態に係る通信システムの構成例を示す図である。
【図２】図１に示すＨＤＤにおけるＬＢＡとセクタとの対応関係を例示する図である。
【図３】図１に示す処理部による動作例を説明するための図である。
【図４】図１に示す処理部による動作例を説明するための図である。
【図５】図１に示す処理部による動作例を説明するための図である。
【図６】図１に示す処理部による動作例を説明するための図である。
【図７】図１に示す処理部による動作例を説明するための図である。
【図８】図１に示す処理部による動作例を説明するための図である。
【図９】（ａ）及び（ｂ）は、それぞれ、図７及び図８に示す動作例におけるＨＤＤでのマージ量を説明するための図である。
【図１０】図１に示す書込制御部による動作例を説明するフローチャートである。
【図１１】図１に示す読出制御部による動作例を説明するフローチャートである。
【図１２】一実施形態に係る情報処理システムの構成の変形例を示す図である。
【図１３】図１又は図１２に示すコントローラモジュールのハードウェア構成例を示す図である。
【図１４】ＨＤＤによるリードモディファイライトの動作例を示す図である。
【図１５】４ＫセクタＨＤＤ（５１２エミュレーション）におけるＬＢＡとセクタとの対応関係を例示する図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照して実施の形態を説明する。
〔１〕一実施形態
〔１−１〕情報処理システムの説明
図１は、一実施形態に係る情報処理システム１の構成例を示す図である。
図１に示すように、情報処理システム１は、ストレージ装置２及びホスト装置３を備える。ホスト装置３は、ＰＣやサーバ等の情報処理装置であり、ストレージ装置２に対して５１２バイト単位で書込又は読出コマンドを発行する上位装置の一例である。ストレージ装置２は、コントローラモジュール４、少なくとも一つの４ＫセクタＨＤＤ（５１２Ｅ）５、チャネルアダプタ６、及び、デバイスアダプタ７を備える。以下、４ＫセクタＨＤＤ（５１２Ｅ）５を単にＨＤＤ５ともいう。
【００２３】
チャネルアダプタ６は、ホスト装置３と接続され、ホスト装置３とのインタフェース制御を行なうモジュールであり、ホスト装置３との間で通信やデータ転送を行なう。デバイスアダプタ７は、ストレージ装置２に収容されるＨＤＤ５とのインタフェース制御を行なうモジュールであり、ＨＤＤ５との間で通信やデータ転送を行なう。
コントローラモジュール（制御装置，制御部）４は、ホスト装置３からのアクセス要求に応じてＨＤＤ５に対してアクセスを行なう制御装置であり、後述するメモリ２０や各種資源の管理及びライトバック処理等の制御を行なうモジュールである。本実施形態に係るコントローラモジュール４は、ホスト装置３に対して第１サイズのデータブロック単位で入出力を行ない、ＨＤＤ５の各データ領域に対して第１サイズと異なる第２サイズ単位でデータの入出力を行なう。
【００２４】
ＨＤＤ（記憶装置）５は、図示しないCentral Processing Unit（ＣＰＵ）等のプロセッサを備え、上述した５１２エミュレーションを行なう４ＫセクタＨＤＤである。また、ＨＤＤ５は、メモリ５１、記憶領域５２、及び、記憶装置ビットマップ５３を備える。なお、ＨＤＤ５に代えて、４Ｋバイト等のページ単位で書込データを記憶し、ＲＭＷに類する処理を行なうＳＳＤやＵＳＢメモリ等のフラッシュメモリが用いられてもよい。また、図１では、一つのＨＤＤ５のみを図示しているが、複数のＨＤＤ５がデバイスアダプタ７を介してコントローラモジュール４と接続されてもよい。
【００２５】
メモリ５１は、コントローラモジュール４との間でやり取りされる書込／読出データを一時的に格納するものであり、例えば、Random Access Memory（ＲＡＭ）等の揮発性メモリ又はフラッシュメモリ等の不揮発性メモリが挙げられる。なお、メモリ５１は、上述した揮発性又は不揮発性メモリのほか、ＨＤＤやＳＳＤ等の記憶装置であってもよく、情報を記憶可能な種々のデバイスが用いられてよい。例えばメモリ５１として、記憶領域５２と同じ媒体上の別領域が用いられてもよい。
【００２６】
記憶領域５２は、種々のデータやプログラムを記憶するディスク領域である。本実施形態に係る記憶領域５２においては、一つのＬＢＡに対して、複数（例えば二つ）のデータ領域が割り当てられる。以下、記憶領域５２について、図２を参照して説明する。
図２は、図１に示すＨＤＤ５におけるＬＢＡとセクタとの対応関係を例示する図である。ＨＤＤ５は、図２に示すように、ホスト装置３に対するＩ／Ｆ上では５１２バイト（第１サイズ）を１ホストブロックとして管理する。ホストブロックは、ＨＤＤ５に対するホスト装置３からのInput/Output（Ｉ／Ｏ）命令単位データブロックである。
【００２７】
一方、ＨＤＤ５は、記憶領域５２上では第１サイズの整数倍である４０９６バイト（第２サイズ）を１セクタブロックとして記憶領域５２上の各セクタに対応付けて管理する。セクタブロックは、ハードディスクの記憶領域５２に対するＨＤＤ５のコントローラからのＩ／Ｏ命令単位データブロックである。なお、図２に示すように、ＬＢＡの＃００〜＃１５がそれぞれ５１２バイトのブロックであり、セクタ＃０−０及び＃０−１がそれぞれ４０９６バイトのブロックである。また、以下、セクタブロックを単にセクタという。
【００２８】
本実施形態に係るＨＤＤ５では、ＬＢＡの＃００〜＃０７と、ＨＤＤ５のセクタ＃０−０及びセクタ＃０−１とが対応する。すなわち、ホスト装置３が認識できる５１２バイト単位のＬＢＡに対して、複数（図２に示す例では二つ）の４０９６バイトのセクタ（データ領域）が割り当てられるのである。なお、図２において図示を省略しているが、ＬＢＡの＃０８〜＃１５に対しても、ＨＤＤ５の図示しない二つのセクタが割り当てられる。このような割り当ては、後述する割当処理部１４により行なわれる。
【００２９】
以下、記憶領域５２についてより具体的に説明する。
上述のように、コントローラモジュール４又はＨＤＤ５は、一つのＬＢＡ（以下、ホストブロックともいう）を５１２バイトで管理する。そして、コントローラモジュール４（割当管理部１４）又はＨＤＤ５は、８ブロックを１単位として記憶領域５２の１セクタにマッピングし、さらに同一ホストブロックに対してもう１セクタをマッピングする。以下、同一の８ホストブロックに対応する二つのセクタ（図２に示すセクタ＃０−０及び＃０−１参照）を、それぞれＡ領域５２ｂ−１及びＢ領域５２ｂ−２という。なお、以下、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２を区別しない場合には、データ領域５２ｂという。これらのＡ領域５２ｂ−１及びＢ領域５２ｂ−２は、記憶領域５２における互いに異なる領域であり、且つ、いずれのデータ領域５２ｂも第１サイズの複数のデータブロックの各々のＬＢＡに対応する領域を含む。
【００３０】
記憶領域５２において、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２は、例えば数十セクタ〜数百セクタの単位で、複数のＡ領域５２ｂ−１、複数のＢ領域５２ｂ−２、複数のＡ領域５２ｂ−１、…という形で交互に配置される（図１参照）。つまり、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２は、記憶領域５２において１セクタごとに交互に配置されるのではなく、連続するホストブロックの書き込み又は読み出しを考慮して、ある程度意味のある単位で複数セクタがまとめられることが好ましい。なお、ＨＤＤ５のディスクは、トラック当たりのセクタ数や角速度の関係から、内周部よりも外周部の方が性能が良いため、性能差を考慮して、一対のＡ領域５２ｂ−１及びＢ領域５２ｂ−２が離れすぎないようにすることが好ましい。
【００３１】
Ａ領域５２ｂ−１及びＢ領域５２ｂ−２をそれぞれ所定の単位でまとめることにより、ホスト装置３によりシーケンシャルなアクセスが行なわれた場合でも、ＨＤＤ５の性能低下を抑止することができる。なお、以下、記憶領域５２における、Ａ領域５２ｂ−１のグループを第１グループ５２ａ−１といい、Ｂ領域５２ｂ−２のグループを第２グループ５２ａ−２という。
【００３２】
ここで、同一の８ホストブロックに対応するＡ領域５２ｂ−１及びＢ領域５２ｂ−２が格納するデータは、ホストブロックごとに排他的な関係を有する。図２に示すＬＢＡ＃００〜＃０７に着目して説明すると、例えば、ＬＢＡ＃００〜＃０３の最新のデータがＡ領域５２ｂ−１であるセクタ＃０−０に格納されている場合、Ｂ領域５２ｂ−２であるセクタ＃０−１に格納されているデータは無効なデータとなる。一方、ＬＢＡ＃０４〜＃０７の最新のデータがセクタ＃０−１に格納されている場合には、セクタ＃０−０に格納されているデータは無効なデータとなる。
【００３３】
ＨＤＤ５は、各データ領域の上述のような排他関係に基づく後述するコントローラモジュール４による制御を受けて、第１サイズのデータブロックを第１サイズよりも大きい第２サイズの複数のデータ領域のいずれか一つに保存する。ＨＤＤ５におけるデータの保存の態様の詳細は、後述する。
記憶装置ビットマップ格納領域５３は、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２における排他的なデータ保存状態を管理する記憶装置ビットマップ２２ａを格納する。
【００３４】
記憶装置ビットマップ（管理情報，第１管理情報）２２ａは、各データ領域５２ｂにおける複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す情報である。記憶装置ビットマップ２２ａは、以下に例示するように、Ａ領域５２ｂ−１及び５２ｂ−２のいずれか一方のデータ領域５２ｂに含まれるデータブロックごとに該データブロックのデータ保存状態が有効か否かを示すビットマップ情報とすることができる。例えば、ＬＢＡ＃００〜＃０３のデータがＡ領域５２ｂ−１に、ＬＢＡ＃０４〜＃０７のデータがＢ領域５２ｂ−２に、それぞれ格納されている場合、ＬＢＡ＃００〜＃０７に関する記憶装置ビットマップ２２ａが示すデータ保存状態は、以下のようになる。
【００３５】
Ａ領域５２ｂ−１：１１１１００００
Ｂ領域５２ｂ−２：００００１１１１
なお、上記の記憶装置ビットマップ２２ａは、１ビットが５１２バイトの１ホストブロックに相当し、左からＬＢＡの昇順で配置される。また、記憶装置ビットマップ２２ａにおいて、“１”は有効つまり当該セクタにおいてホストブロックのデータが最新であることを示し、“０”は無効つまり当該セクタに格納されたホストブロックのデータが無効であることを示す。
【００３６】
また、上記ではＡ領域５２ｂ−１及びＢ領域５２ｂ−２の双方について、ＬＢＡ＃００〜＃０７に関する記憶装置ビットマップ２２ａの例を示したが、それぞれのビットマップは排他関係を有するため、記憶装置ビットマップ２２ａには、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一方のビットマップが設定されればよい。以下、記憶装置ビットマップ２２ａには、Ａ領域５２ｂ−１のビットマップが設定されるものとするが、便宜上、記憶装置ビットマップ２２ａにＢ領域５２ｂ−２のビットマップも設定されるものとして説明する場合がある。
【００３７】
記憶装置ビットマップ格納領域５３は、記憶領域５２における第１グループ５２ａ−１（全てのＡ領域５２ｂ−１）についての記憶装置ビットマップ２２ａを格納する。例えば、ＨＤＤ５における記憶領域５２の容量が３００Ｇバイトである場合、記憶装置ビットマップ格納領域５３は、第１グループ５２ａ−１についての３６Ｍバイト程度の記憶装置ビットマップ２２ａを格納する。
【００３８】
なお、記憶装置ビットマップ格納領域５３は、ＨＤＤ５のディスク領域の一部の領域とすることができる。
〔１−２〕コントローラモジュールの説明
次に、図１を参照しながら、コントローラモジュール４の詳細を説明する。
図１に示すように、コントローラモジュール４は、ＣＰＵ１０、メモリ２０、及び、ＳＳＤ３０を備える。
【００３９】
ＣＰＵ（処理部）１０は、メモリ２０、ＳＳＤ３０、チャネルアダプタ６、及び、デバイスアダプタ７とそれぞれ接続され、種々の制御や演算を行なう処理装置（プロセッサ）の一例である。ＣＰＵ１０は、メモリ２０、ＳＳＤ３０、ＨＤＤ５、又は、図示しないRead Only Memory（ＲＯＭ）等に格納されたプログラムを実行することにより、コントローラモジュール４における種々の機能を実現する。本実施形態に係るＣＰＵ１０は、メモリ２０等に格納された制御プログラムを実行することにより、後述する書込制御部１１、読出制御部１２、記憶装置ビットマップ管理部１３、割当処理部１４、及び、メモリビットマップ管理部１５を備える処理部としての機能を実現する。
【００４０】
メモリ（保持部）２０は、種々のデータやプログラムを一時的に格納するキャッシュメモリ等の記憶装置であって、ＣＰＵ１０がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。例えば、メモリ２０は、ユーザデータ領域２１及びビットマップ領域２２を含む。なお、メモリ２０としては、例えばＲＡＭ等の揮発性メモリが挙げられる。
【００４１】
ユーザデータ領域（保持領域）２１は、ＣＰＵ２０が処理部として機能するための制御プログラム、ホスト装置３からＨＤＤ５へ書き込まれる書込データ、又は、ＨＤＤ５からホスト装置３へ読み出される読出データ等を一時的に格納する領域である。ユーザデータ領域２１は、第２サイズである４０９６バイト以上の領域である。なお、書込データは、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一つに書き込まれるデータブロック（書き込み対象のデータブロック）であり、ホスト装置３から第１サイズである５１２バイト単位で入力される。
【００４２】
ビットマップ領域２２は、ＣＰＵ２０により参照される記憶装置ビットマップ２２ａ及びメモリビットマップ２２ｂを保持する領域である。なお、ビットマップ領域２２が保持する記憶装置ビットマップ２２ａは、ＨＤＤ５の記憶装置ビットマップ格納領域５３又はＳＳＤ３０の記憶装置ビットマップ格納領域３１に格納された記憶装置ビットマップ２２ａの少なくとも一部である。ビットマップ領域２２が保持する記憶装置ビットマップ２２ａ及びメモリビットマップ２２ｂの詳細については、後述する。
【００４３】
ＳＳＤ（格納部）３０は、種々のデータやプログラムを格納する記憶装置であり、記憶装置ビットマップ格納領域３１を含む。記憶装置ビットマップ格納領域３１は、上述したＨＤＤ５の記憶装置ビットマップ格納領域５３に格納されるものと同一の記憶装置ビットマップ２２ａを格納する。なお、図１には、ＳＳＤ３０及びＨＤＤ５の双方が記憶装置ビットマップ２２ａを格納する例を示しているが、ＳＳＤ３０及びＨＤＤ５のうちのいずれか一方のみが記憶装置ビットマップ２２ａを格納することとしてもよい。また、ＳＳＤ３０又は／及びＨＤＤ５の記憶装置ビットマップ格納領域５３に代えて、ＣＰＵ１０からアクセス可能な他の記憶装置が用いられてもよい。さらに、コントローラモジュール４には、ＳＳＤ３０に代えて、ＨＤＤ等がそなえられてもよい。
【００４４】
〔１−３〕処理部の説明
次に、ＣＰＵ１０が処理部として実現する各機能について説明する。
割当処理部１４は、ＨＤＤ５のデータ領域５２ｂを複数の第１サイズのデータブロックの記憶領域に割り当て、複数のデータ領域５２ｂに同じ第１サイズのデータブロックを割り当てる処理を行なう。つまり、割当処理部１４は、上述のように、例えば数十セクタ〜数百セクタの単位で、複数のＡ領域５２ｂ−１、複数のＢ領域５２ｂ−２、複数のＡ領域５２ｂ−１、…という形で、データ領域５２ｂを交互に割り当てる（図１参照）。
【００４５】
なお、割当処理部１４によるＬＢＡとＨＤＤ５の一つのセクタとの間でのアドレスの変換は、既知の種々の手法を用いて実現可能である。本実施形態においては、このような手法に対して、一つのＬＢＡについて対応する複数（二つ）のセクタを得るように論理を変更することで、ＬＢＡとＨＤＤ５の複数（二つ）のセクタとの間でのアドレスの変換を実現することができる。
【００４６】
記憶装置ビットマップ管理部（管理部）１３は、ＨＤＤ５にホスト装置３からのデータブロックをＡ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一つに排他的に保存させるように、複数のデータ領域５２ｂにおけるデータ保存状態を管理する。記憶装置ビットマップ管理部１３によるデータ保存状態の管理は、メモリ２０のビットマップ領域２２に保持された記憶装置ビットマップ２２ａ及びメモリビットマップ２２ｂに基づいて行なわれる。例えば、記憶装置ビットマップ管理部１３は、ビットマップ更新部１３ａ、ビットマップ読出部１３ｂ、及び、ビットマップ書込部１３ｃを備える。
【００４７】
ビットマップ更新部１３ａは、メモリ２０に保持されたデータブロックが、後述する書込制御部１１により一のデータ領域５２ｂへライトバックにより書き込まれると、メモリビットマップ２２ｂに基づき記憶装置ビットマップ２２ａを作成又は更新する。
具体的には、ビットマップ更新部１３ａは、ホスト装置３からユーザデータ領域２１に書き込まれたデータブロックが、一のデータ領域５２ｂへ書き込まれると、該データブロックに対して割り当てられた複数の記憶領域のデータ保存状態を更新する。
【００４８】
より具体的に、ビットマップ更新部１３ａは、書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態について、以下の二つの条件を満たすように記憶装置ビットマップ２２ａを書き換える。
・上記複数の記憶領域のうち、一のデータ領域５２ｂ内で書き込み対象のデータブロックに対して割り当てられた記憶領域はデータブロックのデータが書き込まれると有効を示す。
・上記複数の記憶領域のうち、他の全てのデータ領域５２ｂ内で書き込み対象のデータブロックに対して割り当てられた記憶領域は無効を示す。
【００４９】
例えば、ビットマップ更新部１３ａは、ホストブロックが書き込まれたデータ領域５２ｂの記憶装置ビットマップ２２ａに対して、メモリビットマップ２２ｂにおいて“１”が設定されたデータブロックに対応する位置のビットを“１”に更新する。
なお、ビットマップ更新部１３ａは、ＨＤＤ５がフォーマットされた場合等、対象となる記憶装置ビットマップ２２ａが存在しない場合には、対象となる記憶装置ビットマップ２２ａを新たに作成してビットマップ領域２２に格納する。
【００５０】
なお、ＨＤＤ５がフォーマットされる場合、第１グループ５２ａ−１及び第２グループ５２ａ−２の全データ領域５２ｂに、有効なデータ（例えば“０”）が設定される。この場合、全データ領域５２ｂ内に有効なデータが存在するが、ビットマップ更新部１３ａは、第１グループ５２ａ−１及び第２グループ５２ａ−２のいずれか一方のグループについて、全てのビットが“１”（有効）の記憶装置ビットマップ２２ａを作成する。
【００５１】
ビットマップ読出部１３ｂは、ＳＳＤ３０又はＨＤＤ５等から記憶装置ビットマップ２２ａのうちの、ＣＰＵ１０から指示されたデータ領域５２ｂに係る部分を読み出し、メモリ２０のビットマップ領域２２に展開する。
なお、ビットマップ読出部１３ｂは、ＳＳＤ３０等から読み出す記憶装置ビットマップ２２ａの部分を、ＣＰＵ１０からの指示ではなく、ＣＰＵ１０内部又はチャネルアダプタ６を監視することで推定してもよい。つまり、ビットマップ読出部１３ｂは、監視により得られたホスト装置３からの書込／読出コマンドから、ＣＰＵ１０による処理対象となるデータ領域５２ｂを推定してもよい。処理対象となるデータ領域５２ｂを推定することにより、ビットマップ読出部１３ｂは、ＣＰＵ１０が要求する記憶装置ビットマップ２２ａを予めビットマップ領域２２に格納しておくことができ、コントローラモジュール４の処理性能を向上させることができる。
【００５２】
ビットマップ書込部１３ｃは、ビットマップ領域２２に保持された記憶装置ビットマップ２２ａを、所定のタイミングでＳＳＤ３０又はＨＤＤ５等へ書き込み、記憶装置ビットマップ格納領域３１又は５３内の記憶装置ビットマップ２２ａを更新する。なお、所定のタイミングの例としては、以下の（ｉ）〜（iii）のうちの一つ又はこれらの組み合わせが挙げられる。
（ｉ）定期的なタイミング
（ii）書込制御部１１によりＨＤＤ５へライトバックが行なわれたタイミング
（iii）ビットマップ領域２２内の記憶装置ビットマップ２２ａのサイズが所定サイズ以上になったタイミング
このように、記憶装置ビットマップ管理部１３は、複数のデータ領域５２ｂのうちのいずれか一のデータ領域５２ｂ内でデータブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、データ保存状態を管理する。なお、記憶装置ビットマップ管理部１３は、各データ領域５２ｂに割り当てられた複数のデータブロックの記憶領域について、データブロックごとに、上記の管理を行なう。
【００５３】
メモリビットマップ管理部１５は、ホスト装置３からのユーザデータ（書き込み対象のユーザデータ）が、ＨＤＤ５内の対応するデータ領域５２ｂのうちのいずれのデータブロックに書き込まれるか否かを示すメモリビットマップ２２ｂを管理する。
メモリビットマップ（第２管理情報）２２ｂは、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域５２ｂにおける書き込み対象のデータブロックが保存される領域を示す情報である。図２に示すＬＢＡ＃００〜＃０７に着目して説明すると、例えば、ＬＢＡ＃０３及び＃０４のデータがＨＤＤ５のセクタ＃０−０又は＃０−１に書き込むべきユーザデータとしてホスト装置３から入力された場合、メモリビットマップ２２ｂは以下のようになる。
【００５４】
ＬＢＡ＃００〜＃０７：０００１１０００
なお、上記のメモリビットマップ２２ｂは、１ビットが５１２バイトの１ホストブロックに相当し、左からＬＢＡの昇順で配置される。また、メモリビットマップ２２ｂにおいて、“１”は有効つまり対応する位置のホストブロックのデータが書き込み対象であることを示し、“０”は無効つまり対応する位置のホストブロックのデータが書き込み対象ではないことを示す。
【００５５】
メモリビットマップ管理部１５は、ホスト装置３からの書込コマンドに応じて、上述したメモリビットマップ２２ｂを作成し、メモリ２０のビットマップ領域２２に格納する。
ここで、書き込み対象のユーザデータは、ユーザデータ領域２１の任意の位置に格納される。従って、メモリビットマップ管理部１５は、ユーザデータ領域２１における書き込み対象のユーザデータが格納された位置と、メモリビットマップ２２ｂとを対応付けて管理することが好ましい。
【００５６】
なお、メモリビットマップ管理部１５は、ユーザデータ領域２１に保持されたユーザデータがＨＤＤ５へライトバックされると、当該ユーザデータに対応するメモリビットマップ２２ｂを破棄、又は、ＡＬＬ“０”に更新する。
〔１−３−１〕書込制御部の説明
書込制御部１１は、ホスト装置３からの書込コマンドに応じて書込データをメモリ２０に一旦留め、ライトバック等により非同期でＨＤＤ５へ書き込む制御を行なう。例えば、書込制御部１１は、書込領域判定部１１ａ及び書込処理部１１ｂを備える。
【００５７】
書込領域判定部１１ａは、ビットマップ領域２２に保持された、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域５２ｂの記憶装置ビットマップ２２ａに基づき、複数のデータ領域５２ｂの中から一のデータ領域５２ｂを判定する。ここで、一のデータ領域５２ｂとは、ＨＤＤ５においてデータブロックの書き込みに伴うデータブロックの読み出し、つまり、ＲＭＷが可能な限り発生しないデータ領域５２ｂである。
【００５８】
なお、書込領域判定部１１ａは、ＲＭＷの発生しないデータ領域５２ｂを判定できない場合がある。この場合、ＨＤＤ５においてＲＭＷが発生することになるが、以下の処理により、今回又は次回以降のＲＭＷによるＨＤＤ５の性能低下への影響を抑えたり、ＲＭＷの発生しないデータ領域５２ｂを判定し易くしたりすることができる。
例えば、書込領域判定部１１ａは、ＲＭＷの発生しないデータ領域５２ｂを判定できない場合、所定の条件に応じて、複数のデータ領域５２ｂからいずれか一のデータ領域５２ｂを選択する。所定の条件としては、ＨＤＤ５の処理負荷が所定の閾値以上であることや、ホスト装置３から書込／読出コマンドが所定数以上発行されていること等、ＨＤＤ５の性能低下を引き起こす可能性が高まったことを条件とすることができる。
【００５９】
書込領域判定部１１ａは、ＨＤＤ５の性能低下を引き起こす可能性が高まった場合、ＲＭＷにおいてＨＤＤ５によるシーク処理及びマージ処理（図１４中（３）参照）の処理量が少なくなるデータ領域５２ｂを選択する。一方、書込領域判定部１１ａは、ＨＤＤ５の性能低下を引き起こす可能性が低い場合、今回又は次回以降ＲＭＷの発生しないデータ領域５２ｂを判定し易くするために、記憶装置ビットマップ２２ａが複数のデータ領域５２ｂ間で偏るようなデータ領域５２ｂを選択する。
【００６０】
書込領域判定部１１ａによる一のデータ領域５２ｂの判定の手法については、後述する。
書込処理部１１ｂは、書き込み対象のデータブロックのデータを含む第２サイズの書込用データブロック（書込用データ）を生成し、生成した書込用データブロックを、書込領域判定部１１ａにより判定された一のデータ領域５２ｂへ書き込む処理を行なう。
【００６１】
具体的には、書込処理部１１ｂは、ユーザデータ領域２１において、書き込み対象のユーザデータ（データブロック）にダミーデータを付加して４０９６バイト単位に丸めることで、書込用データブロックを生成する。より具体的に、書込処理部１１ｂは、メモリビットマップ２２ｂとユーザデータ領域２１内のユーザデータの格納位置とに基づき、書き込み対象のユーザデータを含む４０９６バイト分のユーザデータ領域２１内のデータ（書込用データブロック）を取得する。取得されたデータには、書き込み対象のユーザデータ（データブロック）と、ユーザデータ領域２１のアドレス上における、書き込み対象のユーザデータの前後少なくとも一方のダミーデータ（不要データ）とが含まれる。
【００６２】
なお、ダミーデータは、既に書込制御部１１によりＨＤＤ５へライトバックが行なわれたデータブロックである。従って、書込処理部１１ｂは、書込用データブロックの生成にあたり、ユーザデータ領域２１に残存する不要データブロックを流用することができるため、ダミーデータを生成してユーザデータに付加するよりも高速に書込用データブロックを生成することができる。なお、コントローラモジュール４は、メモリビットマップ２２ｂによりユーザデータとダミーデータとを区別することができる。
【００６３】
図２に示すＬＢＡ＃００〜＃０７に着目し、例えば、ホスト装置３から書き込み対象のユーザデータとしてＬＢＡ＃０３及び＃０４のデータがメモリ２０に書き込まれた場合について説明する。書込処理部１１ｂは、ユーザデータ領域２１におけるＬＢＡ＃０３及び＃０４の書き込み対象のデータブロックと、ＬＢＡ＃００〜＃０２及び＃０５〜＃０７に対応するユーザデータ領域２１におけるデータブロックと、をまとめて書込用データブロックとして取得する。つまり、書込処理部１１ｂは、ユーザデータ領域２１に保持された書き込み対象のデータブロックを含む二以上のデータブロックを用いて書込用データブロックを生成するのである。
【００６４】
このように、書込処理部１１ｂによれば、ＨＤＤ５において、４０９６バイト単位でデータブロックが書き込まれるためＲＭＷが発生せず、従来の５１２バイト／セクタのＨＤＤと同等な書込性能を維持することができる。また、書込用データブロックの生成にあたりユーザデータ領域２１内の実際のデータを用いるため、４０９６バイトの書込用データブロックを容易に生成することができる。
【００６５】
なお、書込処理部１１ｂは、ホスト装置３からのデータブロックに“０”又は“１”の任意のダミーデータを付加することで書込用データブロックを生成してもよい。
また、上述したように、書込領域判定部１１ａによりＲＭＷの発生しないデータ領域５２ｂが判定されない場合がある。この場合、書込処理部１１ｂは、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域５２ｂの記憶装置ビットマップ２２ａに基づいて、書き込み対象のデータブロックを含む所定のサイズの書込用データブロックを生成する。そして、書込処理部１１ｂは、生成した所定のサイズの書込用データブロックを、書込領域判定部１１ａにより選択された一のデータ領域５２ｂへ書き込む。
【００６６】
なお、書込領域判定部１１ａは、ホスト装置３からのユーザデータが第２サイズである４０９６バイト単位である場合には、ＲＭＷが発生しないため、データ領域５２ｂの判定処理を行なわずに対応するデータ領域５２ｂのうちの任意の一方を選択する。そして、書込処理部１１ｂは、第２サイズであるユーザデータを、書込領域判定部１１ａが選択した一のデータ領域５２ｂへ書き込む。
【００６７】
換言すれば、書込領域判定部１１ａは、ホスト装置３からのユーザデータが、ＲＭＷが発生する条件に該当する場合に、記憶装置ビットマップ２２ａに基づく一のデータ領域５２ｂの判定を行なうのである。なお、ＲＭＷが発生する条件として、ホスト装置３からのユーザデータが４０９６バイトに満たない（又は４０９６バイトの整数倍のサイズではない）場合が挙げられる。また、ＲＭＷが発生する他の条件として、４０９６バイトの整数倍のサイズであるユーザデータの開始アドレスがデータ領域５２ｂの開始アドレスからずれている場合等も挙げられる。
【００６８】
なお、ビットマップ更新部１３ａは、書込処理部１１ｂにより書込用データブロックがデータ領域５２ｂに書き込まれると、上述のように、書込用データブロックに含まれる書き込み対象のデータブロックについて、記憶装置ビットマップ２２ａを更新する。
次に、図３〜図９を参照して、書込制御部１１の動作例を説明する。図３〜図８は、それぞれ、図１に示す処理部による動作例を説明するための図であり、図９（ａ）及び図９（ｂ）は、それぞれ、図７及び図８に示す動作例におけるＨＤＤ５でのマージ量を説明するための図である。なお、図３〜図９において、枠で囲われた“記憶領域”及び“ユーザデータ領域”内の数字はデータブロックの世代数を示し、英字は当該データブロックが意味のない（無効な）データを設定されたブロックであることを示す。また、図３〜図９において、記憶装置ビットマップ２２ａは、Ａ領域５２ｂ−１（第１グループ５２ａ−１）についてのビットマップ情報であるものとする。
【００６９】
〔１−３−１−１〕Ａ領域又はＢ領域の記憶装置ビットマップがＡＬＬ“１”である場合
書込領域判定部１１ａは、データブロックを書き込むデータ領域５２ｂの判定において、対応するＡ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一方の記憶装置ビットマップ２２ａのデータ保存状態がＡＬＬ“１”であるか否かを判定する。Ａ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一方がＡＬＬ“１”と判定すると、書込領域判定部１１ａは、ＡＬＬ“１”ではないデータ領域５２ｂを、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００７０】
換言すれば、書込領域判定部１１ａは、一のデータ領域５２ｂとして、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域５２ｂの記憶装置ビットマップ２２ａのデータ保存状態がＡＬＬ“０”のデータ領域５２ｂを選択するのである。
一例として、図３を参照して説明する。前提として、ＨＤＤ５の記憶領域５２はフォーマットされた直後であり、全てのデータ領域５２ｂにはＡＬＬ“０”のデータが記憶されているものとする。図３の（１）に示すように、フォーマット直後の記憶装置ビットマップ２２ａには、ビットマップ更新部１３ａによりＡ領域５２ｂ−１についてＡＬＬ“１”が設定されている。この場合、図３の（２）に示すように、Ｂ領域５２ｂ−２についての記憶装置ビットマップ２２ａは、ＡＬＬ“０”である。
【００７１】
図３の（３）において、ホスト装置３により、ＬＢＡ＃００〜＃０３について世代“１”のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部１５により、先頭４ビットが“１”のメモリビットマップ２２ｂが生成される。
書込領域判定部１１ａは、書込コマンドに応じて、書き込み対象のＬＢＡに対応するセクタ＃０−０（Ａ領域５２ｂ−１）の記憶装置ビットマップ２２ａを参照し、全てのビットが“１”であるか否かを判定する。図３の（２）に示す例では、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａはＡＬＬ“１”であるため、書込領域判定部１１ａは、Ａ領域５２ｂ−１とは異なるＢ領域５２ｂ−２を、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００７２】
また、書込処理部１１ｂは、書き込み対象のＬＢＡ＃００〜＃０３のデータブロック（２０４８バイトのショートブロック）を、書込領域判定部１１ａが判定したＢ領域５２ｂ−２に書き込む。このとき、ＬＢＡ＃００〜＃０３の４ブロックのみをＢ領域５２ｂ−２にライトバックすると、ＨＤＤ５においてＲＭＷが発生する。そこで、書込処理部１１ｂは、メモリビットマップ２２ｂに基づき、ユーザデータ領域２１から、書き込み対象のＬＢＡ＃００〜＃０３のデータブロックと、ダミーデータであるＬＢＡ＃０４〜＃０７のデータブロックとを生成（取得）する。そして、書込処理部１１ｂは、生成した４０９６バイトの書込用データブロックを、書込領域判定部１１ａが判定したデータ領域５２ｂに書き込む（図３の（４）参照）。
【００７３】
さらに、書込処理部１１ｂが書込用データブロックの書き込みを行なうと、ビットマップ更新部１３ａがメモリビットマップ２２ｂに基づき記憶装置ビットマップ２２ａを更新する。
なお、書込領域判定部１１ａは、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａを参照し、全てのビットが“１”であるか否かを判定するものとして説明したが、これに限定されるものではない。例えば、書込領域判定部１１ａは、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａの全てのビットが“０”であるか否かを判定してもよい。この場合、“０”である場合には、書込領域判定部１１ａは、Ａ領域５２ｂ−１を、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００７４】
〔１−３−１−２〕メモリビットマップと、Ａ領域又はＢ領域の記憶装置ビットマップとの論理和がＡＬＬ“１”である場合
書込領域判定部１１ａは、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一方に書き込み対象のデータブロックが保存されると、一方のデータ領域５２ｂにおける全ての記憶装置ビットマップ２２ａのデータ保存状態がＡＬＬ“１”になるか否かを判定する。データ保存状態がＡＬＬ“１”になると判定すると、書込領域判定部１１ａは、ＡＬＬ“１”になるデータ領域５２ｂとは異なる他のデータ領域５２ｂを、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００７５】
換言すれば、書込領域判定部１１ａは、データ領域５２ｂの記憶装置ビットマップ２２ａにおいて“１”である全てのビット位置が、書き込み対象のデータブロックのメモリビットマップ２２ｂにおいて“１”である全てのビット位置に含まれるか否かを判定する。つまり、書込領域判定部１１ａは、前記書き込み対象のデータブロックに対して割り当てられたデータ領域５２ｂにおけるデータ保存状態が有効な全てのデータブロックの領域が、データ領域５２ｂにおいて書き込み対象のデータブロックが保存される全ての領域に含まれるか否かを判断する。そして、書込領域判定部１１ａは、含まれると判定した場合に、当該データ領域５２ｂを、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００７６】
一例として、図４を参照して説明する。前提として、ＨＤＤ５の記憶領域５２はランダムライトが行なわれた後であり、複数のデータ領域５２ｂには、飛び飛びでデータが書き込まれた状態であるものとする。図４の（１）に示すように、記憶装置ビットマップ２２ａには、ビットマップ更新部１３ａによりＡ領域５２ｂ−１について飛び飛びで“１”が設定されている。
【００７７】
図４の（２）において、ホスト装置３により、ＬＢＡ＃００〜＃０７のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部１５により、先頭８ビットが“１”のメモリビットマップ２２ｂが生成される。
書込領域判定部１１ａは、書込コマンドに応じて、書き込み対象のＬＢＡに対応するセクタ＃０−０（Ａ領域５２ｂ−１）の記憶装置ビットマップ２２ａを参照し、メモリビットマップ２２ｂとの論理和を取った場合に、全てのビットが“１”になるか否かを判定する。図４の（２）に示す例では、メモリビットマップ２２ｂだけで８ホストブロック全てが“１”であり、バウンダリに合った４０９６バイトのユーザデータであるため、書込領域判定部１１ａは、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２を選択するまでもない。例えば、書込領域判定部１１ａがＡ領域５２ｂ−１を選択した場合、書込処理部１１ｂにより、４０９６バイトである書き込み対象のデータブロックがＡ領域５２ｂ−１に書き込まれる（図４の（３）参照）。
【００７８】
また、他の例を、図５を参照して説明する。前提として、ＨＤＤ５の記憶領域５２はランダムライトが行なわれた後であり、複数のデータ領域５２ｂには、１０２４バイトで離散したデータが書き込まれた状態であるものとする。図５の（１）に示すように、記憶装置ビットマップ２２ａには、ビットマップ更新部１３ａによりＡ領域５２ｂ−１について２ブロックごとに飛び飛びで“１”が設定されている。
【００７９】
図５の（２）において、ホスト装置３により、ＬＢＡ＃００、＃０１、＃０４、＃０５のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部１５により、２ビットごとに飛び飛びで“１”であるメモリビットマップ２２ｂが生成される。
書込領域判定部１１ａは、書込コマンドに応じて、書き込み対象のＬＢＡに対応するセクタ＃０−０（Ａ領域５２ｂ−１）の記憶装置ビットマップ２２ａを参照し、メモリビットマップ２２ｂとの論理和を取った場合に、全てのビットが“１”になるか否かを判定する。図５の（２）に示す例では、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａとメモリビットマップ２２ｂとの論理和がＡＬＬ“１”になるため、書込領域判定部１１ａは、Ａ領域５２ｂ−１とは異なるＢ領域５２ｂ−２を、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００８０】
また、書込処理部１１ｂは、メモリビットマップ２２ｂに基づき、書き込み対象のＬＢＡ＃００、＃０１、＃０４、＃０５のデータブロックと、ダミーデータであるＬＢＡ＃０２、＃０３、＃０６、＃０７のデータブロックとを生成（取得）する。そして、書込処理部１１ｂは、生成した４０９６バイトの書込用データブロックを、書込領域判定部１１ａが判定したデータ領域５２ｂに書き込む（図５の（３）参照）。
【００８１】
さらに、他の例を、図６を参照して説明する。前提として、ホスト装置３がメインフレームであり、ホスト装置３から指定される書き込み対象のアドレスがＬＢＡではなくCount Key Data（ＣＫＤ）であるものとする。なお、ＣＫＤは、書き込み対象のデータブロックのサイズがレコードという固定サイズであり（図６の（１）“Ｒ１”〜“Ｒ４”参照）、１レコードは、５１２バイトよりも大きく、且つ、５１２バイトの整数倍ではないものとする。また、コントローラモジュール４は、ホスト装置３から指定されるＣＫＤをＬＢＡに変換して、書き込み対象のレコード（書き込み対象のデータブロック）をＬＢＡに対応付ける。さらに、コントローラモジュール４は、レコードを５１２バイト単位で区切ったときの５１２バイト未満の部分にダミーデータを付加して、当該部分のバウンダリを５１２バイトに合わせる。なお、図６に示す例では、レコードのサイズは、ダミーデータが付加されて５データブロック（２５６０バイト）に調整される。
【００８２】
さらに、前提として、ＨＤＤ５の記憶領域５２はフォーマットされた直後であり、全てのデータ領域５２ｂにはＡＬＬ“０”のデータが記憶されているものとする。図６の（２）に示すように、フォーマット直後の記憶装置ビットマップ２２ａには、ビットマップ更新部１３ａによりＡ領域５２ｂ−１（第１グループ５２ａ−１）についてＡＬＬ“１”が設定されている。
【００８３】
上述した前提において、ホスト装置３により、Ｒ２について世代“１”のレコードの書込コマンドが発行されると、メモリ２０のユーザデータ領域２１に、世代“１”のＲ２のデータが格納される（図６の（３）参照）。また、メモリビットマップ管理部１５により、Ｒ２に対応するビット（６ビット目〜１０ビット目のビット）が“１”のメモリビットマップ２２ｂが生成される。
【００８４】
書込領域判定部１１ａは、書込コマンドに応じて、書き込み対象のレコードに対応するセクタ＃０−０及び＃１−０（Ａ領域５２ｂ−１）の記憶装置ビットマップ２２ａを参照し、それぞれのセクタにおいて全てのビットが“１”であるか否かを判定する。図６の（４）に示す例では、セクタ＃０−０及び＃１−０のいずれの記憶装置ビットマップ２２ａもＡＬＬ“１”である。従って、書込領域判定部１１ａは、Ａ領域５２ｂ−１とは異なるＢ領域５２ｂ−２であるセクタ＃０−１及び＃１−１を、それぞれレコードを書き込むべき一のデータ領域５２ｂと判定する。
【００８５】
また、書込処理部１１ｂは、書き込み対象のＲ２のレコードを、書込領域判定部１１ａが判定したＢ領域５２ｂ−２であるセクタ＃０−１及び＃１−１に書き込む。このとき、書込処理部１１ｂは、メモリビットマップ２２ｂに基づき、ユーザデータ領域２１から、書き込み対象のＲ２のレコードと、ダミーデータであるデータブロック（図６の（３）セクタ＃０−０〜＃１−０に対応するデータ“ｘ”参照）とを生成（取得）する。そして、書込処理部１１ｂは、生成した４０９６バイト×２の書込用データブロックを、書込領域判定部１１ａが判定したデータ領域５２ｂに書き込む（図６の（４）参照）。
【００８６】
次いで、ホスト装置３により、Ｒ１について世代“１”のレコードの書込コマンドが発行されると、メモリ２０のユーザデータ領域２１に、世代“１”のＲ１のデータが格納される（図６の（５）参照）。また、メモリビットマップ管理部１５により、Ｒ１に対応するビット（１ビット目〜５ビット目のビット）が“１”のメモリビットマップ２２ｂが生成される。
【００８７】
書込領域判定部１１ａは、書込コマンドに応じて、書き込み対象のレコードに対応するセクタ＃０−０（Ａ領域５２ｂ−１）の記憶装置ビットマップ２２ａを参照し、それぞれのセクタにおいて全てのビットが“１”であるか否かを判定する。図６の（４）に示す例では、セクタ＃０−０の記憶装置ビットマップ２２ａはＡＬＬ“１”ではない。
そこで、書込領域判定部１１ａは、書き込み対象のレコードに対応するセクタ＃０−０及び＃０−１（Ａ領域５２ｂ−１）の記憶装置ビットマップ２２ａを参照し、メモリビットマップ２２ｂとの論理和を取った場合に、全てのビットが“１”になるか否かを判定する。図６の（５）に示す例では、Ｂ領域５２ｂ−２の記憶装置ビットマップ２２ａとメモリビットマップ２２ｂとの論理和がＡＬＬ“１”になるため、書込領域判定部１１ａは、Ｂ領域５２ｂ−１とは異なるＡ領域５２ｂ−２を、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００８８】
また、書込処理部１１ｂは、書き込み対象のＲ１のレコードを、書込領域判定部１１ａが判定したＡ領域５２ｂ−１であるセクタ＃０−０に書き込む。このとき、書込処理部１１ｂは、メモリビットマップ２２ｂに基づき、ユーザデータ領域２１から、書き込み対象のＲ１のレコードと、ダミーデータであるデータブロック（図６の（５）セクタ＃０−０に対応するデータ“ｘ”参照）とを生成（取得）する。そして、書込処理部１１ｂは、生成した４０９６バイトの書込用データブロックを、書込領域判定部１１ａが判定したデータ領域５２ｂに書き込む（図６の（６）参照）。
【００８９】
図６を用いて説明したように、本実施形態に係るストレージ装置２は、ホスト装置３がメインフレームである場合でも、ＲＭＷの発生を抑止し、ＨＤＤ５の性能低下を軽減させることができる。特に、レコードサイズが第２サイズである４０９６バイト（１セクタ）よりも大きい場合には、一つのセクタに属するレコードは最大でも二つになる。これは、書込領域判定部１１ａが、Ａ領域５２ｂ−１又はＢ領域５２ｂ−２から、データブロックを書き込むべき一のデータ領域５２ｂを確実に判定できることを意味する。すなわち、レコードサイズが第２サイズよりも大きい場合には、ＲＭＷが発生しなくなるため、ＲＭＷに起因するＨＤＤ５の性能低下を無くすことができる。
【００９０】
なお、図４〜図６の例においても、書込処理部１１ｂが書込用データブロックの書き込みを行なうと、ビットマップ更新部１３ａがメモリビットマップ２２ｂに基づき記憶装置ビットマップ２２ａを更新する。
また、書込領域判定部１１ａは、Ａ領域５２ｂ−１又はＢ領域５２ｂ−２の記憶装置ビットマップ２２ａとメモリビットマップ２２ｂとの論理和がＡＬＬ“１”になるか否かを判定するものとして説明したが、これに限定されるものではない。
【００９１】
例えば、書込領域判定部１１ａは、上述のように、データ領域５２ｂの記憶装置ビットマップ２２ａにおいて“１”である全てのビット位置が、メモリビットマップ２２ｂにおいて“１”である全てのビット位置に含まれるか否かを判定してもよい。この場合、書込領域判定部１１ａは、含まれると判定したデータ領域５２ｂを、データブロックを書き込むべき一のデータ領域５２ｂと判定する。
【００９２】
〔１−３−１−３〕その他の場合
上述した例では、書込領域判定部１１ａが、ＲＭＷの発生しないデータ領域５２ｂを判定できる場合について説明したが、ここでは、ＲＭＷの発生しないデータ領域５２ｂを判定できない場合について説明する。
一例として、図７及び図８を用いて説明する。前提として、ＨＤＤ５の記憶領域５２は書込処理が行なわれた後であり、複数のデータ領域５２ｂには、図７の（１）及び図８の（１）に示すようなデータが書き込まれた状態であるものとする。図７の（１）及び図８の（１）に示すように、記憶装置ビットマップ２２ａには、ビットマップ更新部１３ａによりＡ領域５２ｂ−１について飛び飛びで“１”が設定されている。
【００９３】
図７の（２）及び図８の（２）において、ホスト装置３により、ＬＢＡ＃０７のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部１５により、最終１ビットが“１”のメモリビットマップ２２ｂが生成される。
書込領域判定部１１ａは、書込コマンドに応じて、ＲＭＷの発生しないデータ領域５２ｂの判定を試みる。しかし、書き込み対象のＬＢＡに対応するセクタ＃０−０（Ａ領域５２ｂ−１）は、全ビットが“１”ではなく、セクタ＃０−０の記憶装置ビットマップ２２ａとメモリビットマップ２２ｂとの論理和も全ビットが“１”にはならない。
【００９４】
このような場合にはＲＭＷが発生するが、書込領域判定部１１ａは、既述のように所定の条件に応じて、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一方のデータ領域５２ｂを選択する。
図７に示す例では、バックエンド負荷が低く、ＨＤＤ５の性能低下を引き起こす可能性が低い場合について説明する。
【００９５】
この場合、書込領域判定部１１ａは、ＨＤＤ５においてＲＭＷによりマージされる量が多いデータ領域５２ｂを選択する。マージ量が多いということは、データ領域５２ｂ中に有効データが多くなることを意味する。つまり、書込領域判定部１１ａは、Ａ領域５２ｂ−１又はＢ領域５２ｂ−２のいずれかに有効データが多いデータ領域５２ｂを用意しておくのである。これにより、次回以降の書き込みにおいて、ホスト装置３から書き込まれるホストブロック数が少なくても、ライトバックの際に、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａとメモリビットマップ２２ｂとの論理和が全ビット“１”になる可能性が高くなる。
【００９６】
例えば、図７の（３）に示すように、書込領域判定部１１ａは、ＨＤＤ５においてＲＭＷによる読出量が多いが１セクタ内に有効データが多くなるように、データブロックを書き込むべき一のデータ領域５２ｂとしてＢ領域５２ｂ−２を選択する。
また、書込処理部１１ｂは、書き込み対象のＬＢＡ＃０７のデータブロックを、書込領域判定部１１ａが判定したＢ領域５２ｂ−２に書き込む（図７の（４）参照）。
【００９７】
さらに、ＨＤＤ５は、図９（ａ）に示すように、ＲＭＷにより記憶領域５２のセクタ＃０−１（Ｂ領域５２ｂ−２）から、７データブロック分のデータを読み出し、メモリ５１で書込処理部１１ｂからの１データブロックとのマージ処理を行なう。そして、ＨＤＤ５は、マージ結果をセクタ＃０−１へ書き込み、処理を終了する。
なお、書込処理部１１ｂが書込用データブロックの書き込みを行なうと、ビットマップ更新部１３ａが記憶装置ビットマップ２２ａを更新する。
【００９８】
上記の処理により、セクタ＃０−１では、ＬＢＡ＃０１〜＃０７に対応する７データブロックが有効なデータとなる。
一方、図８に示す例では、バックエンド負荷が高く、ＨＤＤ５の性能低下を引き起こす可能性が高い場合について説明する。
この場合、書込領域判定部１１ａは、バックエンド負荷をこれ以上上げないため、マージ量が少ない面を選択する。
【００９９】
例えば、図８の（３）に示すように、書込領域判定部１１ａは、ＨＤＤ５においてＲＭＷによる読出量が少ないＡ領域５２ｂ−１を、データブロックを書き込むべき一のデータ領域５２ｂに選択する。
また、書込処理部１１ｂは、書き込み対象のＬＢＡ＃０７のデータブロックを、書込領域判定部１１ａが判定したＢ領域５２ｂ−２に書き込む。このとき、書込処理部１１ｂは、メモリビットマップ２２ｂに基づき、ユーザデータ領域２１から、書き込み対象のＬＢＡ＃０７のデータブロックと、ダミーデータであるＬＢＡ＃０１〜＃０６のデータブロックとを生成（取得）する。そして、書込処理部１１ｂは、生成した７データブロック分の書込用データブロックを、書込領域判定部１１ａが判定したデータ領域５２ｂに書き込む（図８の（４）参照）。
【０１００】
さらに、ＨＤＤ５は、図９（ｂ）に示すように、ＲＭＷにより記憶領域５２のセクタ＃０−０（Ａ領域５２ｂ−１）から、１データブロック分のデータを読み出し、メモリ５１で書込処理部１１ｂからの７データブロックとのマージ処理を行なう。そして、ＨＤＤ５は、マージ結果をセクタ＃０−０へ書き込み、処理を終了する。
なお、書込処理部１１ｂが書込用データブロックの書き込みを行なうと、ビットマップ更新部１３ａが記憶装置ビットマップ２２ａを更新する。
【０１０１】
上記の処理により、図９（ｂ）に示すように、ＨＤＤ５においてＲＭＷにより記憶領域５２のセクタ＃０−０から読み出すデータは、１データブロック分で済む。従って、図９（ａ）の場合と比較して、ＨＤＤ５の性能劣化を低減させることができる。
以上のように、本実施形態に係るコントローラモジュール４は、ホスト装置３から見たデータブロックに対して、ＨＤＤ５内に複数倍（例えば二倍）のデータブロックを持つように制御を行なう。そして、書込制御部１１は、書き込み対象のデータブロックをＨＤＤ５へ書き込む際に、可能な限りＲＭＷが発生しないデータ領域５２ｂを選択し、書き込みを行なうことで、性能の低下を抑えるように制御を行なう。
【０１０２】
〔１−３−２〕読出制御部の説明
図１の説明に戻り、読出制御部１２は、ホスト装置３からの読出要求に応じて、ＨＤＤ５から読出データを読み出し、ホスト装置３へ渡す制御を行なう。例えば、読出制御部１２は、読出領域判定部１２ａ、読出処理部１２ｂ、及び、データマージ処理部１２ｃを備える。
【０１０３】
読出領域判定部１２ａは、読み出し対象のデータを形成する第１サイズの一以上のデータブロックの読出要求に応じて、複数のデータ領域５２ｂの中から、一以上のデータ領域５２ｂを判定する。
具体的には、読出領域判定部１２ａは、ホスト装置３から読出要求を受けた場合に、指定されたデータがＡ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれのデータ領域５２ｂに含まれるかを、読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の記憶装置ビットマップ２２ａを参照して判定する。
【０１０４】
読出処理部１２ｂは、記憶装置ビットマップ２２ａに基づいて、読出領域判定部１２ａにより判定された一以上のデータ領域５２ｂの中から、データ保存状態が有効である読出要求に係るデータブロックを読み出す。
読出処理部１２ｂは、例えば、読出要求に係るデータがＡ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一方のデータ領域５２ｂにのみ含まれる場合には、当該データ領域５２ｂから読出要求に係るデータブロックを読み出して、ホスト装置３へ出力する。具体的には、読出処理部１２ｂは、読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、読出領域判定部１２ａにより判定された一以上のデータ領域の中から、データ保存状態が有効な読み出し対象の一以上のデータブロックを読み出す処理を行なう。
【０１０５】
一例として、図４を参照して説明する。前提として、記憶装置ビットマップ２２ａ及び記憶領域５２には図４の（３）に示すデータが格納されているものとする。また、図４の（２）においてユーザデータ領域２１に格納されたＬＢＡ＃００〜＃０７のデータは、全てメモリ２０から削除され、キャッシュミスの状態になっているものとする。
図４の（３）において、ホスト装置３により、ＬＢＡ＃００〜＃０７のデータの読出要求が発行されると、読出領域判定部１２ａは、記憶装置ビットマップ２２ａを参照して、読出要求に係るデータがどのデータ領域５２ｂに保存されているかを判定する。図４の（３）に示す例では、Ａ領域５２ｂ−１のデータ保存状態がＡＬＬ“１”であるため、ＬＢＡ＃００〜＃０７の各データブロックは、全てＡ領域５２ｂ−１に保存されている。従って、読出領域判定部１２ａは、読出要求に係るデータブロックを読み出すべきデータ領域５２ｂがＡ領域５２ｂ−１であると判定する。
【０１０６】
また、読出処理部１２ｂは、読出領域判定部１２ａにより判定されたＡ領域５２ｂ−１から、読出要求に係るＬＢＡ＃００〜＃０７のデータブロックを読み出して、ホスト装置３へ出力する。
一方、読出要求に係るデータがＡ領域５２ｂ−１及びＢ領域５２ｂ−２の双方に離散して保存されている場合も考えられる。この場合、読出処理部１２ｂは、それぞれのデータ領域５２ｂから読み出したデータブロックについて、データマージ処理部１２ｃに対して読出要求に係るデータの生成を指示する。
【０１０７】
データマージ処理部１２ｃは、読出処理部１２ｂにより、二以上のデータ領域５２ｂの中から、読出要求に係るデータブロックがそれぞれ読み出される場合に、読み出された各々のデータブロックをマージし、読み出し対象のデータを生成する処理を行なう。データマージ処理部１２ｃによるマージ処理は、例えばメモリ２０のユーザデータ領域２１上で行なわれる。データマージ処理部１２ｃは、マージ処理を行なって読出要求に係るデータを生成すると、読出処理部１２ｂを介して、又は直接、ホスト装置３へ出力する。
【０１０８】
一例として、図３、図５、図７、及び図８を参照して説明する。前提として、記憶装置ビットマップ２２ａ及び記憶領域５２には図３の（４）、並びに、図５、図７、及び図８の（３）に示すデータが格納されているものとする。また、図３の（３）、並びに、図５、図７、及び図８の（２）においてユーザデータ領域２１に格納されたＬＢＡ＃００〜＃０７のデータは、全てメモリ２０から削除され、キャッシュミスの状態になっているものとする。
【０１０９】
ホスト装置３により、ＬＢＡ＃００〜＃０７のデータの読出要求が発行されると、読出領域判定部１２ａは、記憶装置ビットマップ２２ａを参照して、読出要求に係るデータがどのデータ領域５２ｂに保存されているかを判定する。図３の（４）に示す例では、ＬＢＡ＃００〜＃０３の各データブロックはＢ領域５２ｂ−２に保存され、ＬＢＡ＃０４〜＃０７の各データブロックはＡ領域５２ｂ−１に保存されている。図５の（３）に示す例では、ＬＢＡ＃００、＃０１、＃０４、＃０５の各データブロックはＢ領域５２ｂ−２に保存され、ＬＢＡ＃０２、＃０３、＃０６、＃０７の各データブロックはＡ領域５２ｂ−１に保存されている。図７の（３）に示す例では、ＬＢＡ＃０１〜＃０７の各データブロックはＢ領域５２ｂ−２に保存され、ＬＢＡ＃００のデータブロックはＡ領域５２ｂ−１に保存されている。また、図８の（３）に示す例では、ＬＢＡ＃０１〜＃０６の各データブロックはＢ領域５２ｂ−２に保存され、ＬＢＡ＃００、＃０７の各データブロックはＡ領域５２ｂ−１に保存されている。
【０１１０】
従って、読出領域判定部１２ａは、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２のデータ保存状態がいずれもＡＬＬ“１”ではないため、読出要求に係るデータブロックを読み出すべきデータ領域５２ｂがＡ領域５２ｂ−１及びＢ領域５２ｂ−２であると判定する。
また、読出処理部１２ｂは、読出領域判定部１２ａにより判定されたＡ領域５２ｂ−１及びＢ領域５２ｂ−２のそれぞれから、読出要求に係るＬＢＡ＃００〜＃０７のデータブロックを読み出して、ユーザデータ領域２１へ格納する。そして、読出処理部１２ｂは、データマージ処理部１２ｃに対して読出要求に係るデータの作成を指示する。
【０１１１】
データマージ処理部１２ｃは、ユーザデータ領域２１に格納された各データブロックをマージする。図３の（５）に示す例では、データマージ処理部１２ｃは、Ｂ領域５２ｂ−２からのＬＢＡ＃００〜＃０３の各データブロックと、Ａ領域５２ｂ−１からのＬＢＡ＃０４〜＃０７の各データブロックとをマージする。図５の（４）に示す例では、データマージ処理部１２ｃは、Ｂ領域５２ｂ−２からのＬＢＡ＃００、＃０１、＃０４、＃０５の各データブロックと、Ａ領域５２ｂ−１からのＬＢＡ＃０２、＃０３、＃０６、＃０７の各データブロックとをマージする。図７の（４）に示す例では、データマージ処理部１２ｃは、Ｂ領域５２ｂ−２からのＬＢＡ＃０１〜＃０７の各データブロックと、Ａ領域５２ｂ−１からのＬＢＡ＃００のデータブロックとをマージする。また、図８の（４）に示す例では、データマージ処理部１２ｃは、Ｂ領域５２ｂ−２からのＬＢＡ＃０１〜＃０６の各データブロックと、Ａ領域５２ｂ−１からのＬＢＡ＃００、＃０７の各データブロックとをマージする。
【０１１２】
そして、データマージ処理部１２ｃは、マージにより得られた読出要求に係るデータをホスト装置３へ出力する。
なお、ここまで、ホスト装置３からの読出要求が第２サイズである場合について説明したが、読出要求が第１サイズの単位で発行される場合でも、読出制御部１２は上述したものと同様の制御により対応可能である。
【０１１３】
〔１−４〕情報処理システムの動作例
次に、上述の如く構成された情報処理システム１（コントローラモジュール４）の動作例を、図１０及び図１１を参照して説明する。図１０は、図１に示す書込制御部１１による動作例を説明するフローチャートであり、図１１は、図１に示す読出制御部１２による動作例を説明するフローチャートである。
【０１１４】
〔１−４−１〕書込制御部の動作例
はじめに、図１０を参照して書込制御部１１の動作を説明する。
なお、前提として、書込制御部１１がホスト装置３から書込コマンドを受けた状態であるとする。
図１０に示すように、書込領域判定部１１ａにより、ホスト装置３からの書込コマンドに応じて、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａがＡＬＬ“１”又はＡＬＬ“０”であるか否かが判定される（ステップＳ１）。ＡＬＬ“１”又はＡＬＬ“０”であると判定された場合（ステップＳ１のＹｅｓルート）、さらに、書込領域判定部１１ａにより、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａがＡＬＬ“１”であるか否かが判定される（ステップＳ２）。ＡＬＬ“１”ではない、つまりＡＬＬ“０”であると判定された場合（ステップＳ２のＮｏルート）、書込領域判定部１１ａにより、書き込み対象のデータ領域５２ｂがＡ領域５２ｂ−１であると判定される。そして、書込処理部１１ｂにより、書込要求に係るユーザデータがＡ領域５２ｂ−１に書き込まれ（ステップＳ３）、処理が終了する。
【０１１５】
一方、ステップＳ２において、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａがＡＬＬ“１”であると判定された場合（ステップＳ２のＹｅｓルート）、書込領域判定部１１ａにより、書き込み対象のデータ領域５２ｂがＢ領域５２ｂ−２であると判定される。そして、書込処理部１１ｂにより、書込要求に係るユーザデータがＢ領域５２ｂ−２に書き込まれ（ステップＳ４）、処理が終了する。
【０１１６】
また、ステップＳ１において、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａがＡＬＬ“１”及びＡＬＬ“０”のいずれでもないと判定された場合（ステップＳ１のＮｏルート）、書込領域判定部１１ａにより、次の判定処理が行なわれる。すなわち、書込領域判定部１１ａにより、メモリビットマップ２２ｂとＡ領域５２ｂ−１又はＢ領域５２ｂ−２の記憶装置ビットマップ２２ａとの論理和がＡＬＬ“１”であるか否かが判定される（ステップＳ５）。論理和がＡＬＬ“１”であると判定された場合（ステップＳ５のＹｅｓルート）、書込領域判定部１１ａにより、メモリビットマップ２２ｂとＡ領域５２ｂ−１の記憶装置ビットマップ２２ａとの論理和がＡＬＬ“１”であるか否かが判定される（ステップＳ６）。
【０１１７】
一方、メモリビットマップ２２ｂとＡ領域５２ｂ−１の記憶装置ビットマップ２２ａとの論理和がＡＬＬ“１”ではないと判定された場合（ステップＳ６のＮｏルート）、ステップＳ３に移行する。また、メモリビットマップ２２ｂとＡ領域５２ｂ−１の記憶装置ビットマップ２２ａとの論理和がＡＬＬ“１”であると判定された場合（ステップＳ６のＹｅｓルート）、ステップＳ４に移行する。
【０１１８】
また、ステップＳ５において、論理和がＡＬＬ“１”ではないと判定された場合（ステップＳ５のＮｏルート）、書込領域判定部１１ａにより、バックエンド負荷が閾値以上であるか否かが判定される（ステップＳ７）。バックエンド負荷が閾値以上であると判定された場合（ステップＳ７のＹｅｓルート）、書込領域判定部１１ａにより、マージ量が少ないのはＡ領域５２ｂ−１であるか否かが判定される（ステップＳ８）。マージ量が少ないのはＡ領域５２ｂ−１であると判定された場合（ステップＳ８のＹｅｓルート）、ステップＳ３に移行する。一方、マージ量が少ないのはＡ領域５２ｂ−１ではないと判定された場合（ステップＳ８のＮｏルート）、ステップＳ４に移行する。
【０１１９】
さらに、ステップＳ７において、バックエンド負荷が閾値未満であると判定された場合（ステップＳ７のＮｏルート）、書込領域判定部１１ａにより、マージ量が多いのはＡ領域５２ｂ−１であるか否かが判定される（ステップＳ９）。マージ量が多いのはＡ領域５２ｂ−１であると判定された場合（ステップＳ９のＹｅｓルート）、ステップＳ３に移行する。一方、マージ量が多いのはＡ領域５２ｂ−１ではないと判定された場合（ステップＳ９のＮｏルート）、ステップＳ４に移行する。
【０１２０】
〔１−４−２〕読出制御部の動作例
次に、図１１を参照して読出制御部１２の動作を説明する。
なお、前提として、読出制御部１２がホスト装置３から読出要求を受けた状態であるとする。
図１１に示すように、読出領域判定部１２ａにより、読出要求に係る読み出し対象ＬＢＡの範囲のＡ領域５２ｂ−１の記憶装置ビットマップ２２ａが、ＡＬＬ“１”であるか否かが判定される（ステップＳ１１）。ＡＬＬ“１”であると判定された場合（ステップＳ１１のＹｅｓルート）、読出処理部１２ｂにより、Ａ領域５２ｂ−１から読出データの読み出しが行なわれ（ステップＳ１２）、処理が終了する。
【０１２１】
一方、ステップＳ１１において、ＡＬＬ“１”ではないと判定された場合（ステップＳ１１のＮｏルート）、読出領域判定部１２ａにより、当該Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａが、ＡＬＬ“０”であるか否かが判定される（ステップＳ１３）。ＡＬＬ“０”であると判定された場合（ステップＳ１３のＹｅｓルート）、読出処理部１２ｂにより、Ｂ領域５２ｂ−２から読出データの読み出しが行なわれ（ステップＳ１４）、処理が終了する。
【０１２２】
また、ステップＳ１３において、ＡＬＬ“０”ではないと判定された場合（ステップＳ１３のＮｏルート）、データマージ処理部１２ｃによる処理が行なわれる（ステップＳ１５）。すなわち、データマージ処理部１２ｃにより、Ａ領域５２ｂ−１の記憶装置ビットマップ２２ａのうち、ビット“１”のデータブロックがＡ領域５２ｂ−１から、ビット“０”のデータブロックがＢ領域５２ｂ−２から、それぞれ読み出されてマージされる。そして、処理が終了する。
【０１２３】
〔１−５〕まとめ
上述のように、本実施形態に係るコントローラモジュール４によれば、書き込み対象の第１サイズのデータブロックを含む第２サイズの書込用データブロック（書込用データ）が、複数のデータ領域５２ｂのうちの一のデータ領域５２ｂへ書き込まれる。具体的には、コントローラモジュール４が、ＬＢＡのブロックサイズよりも大きい複数のセクタのうち、ＲＭＷが生じない一のセクタに、ＬＢＡで指定された対象データを含むセクタサイズのデータを書き込む。従って、ＨＤＤ５等の記憶装置において書き込み対象のデータブロックの書き込みに伴う第２サイズのデータブロックの読み出し（ＲＭＷ）の発生を抑制でき、ＨＤＤ５の性能低下を軽減することができる。
【０１２４】
４ＫセクタＨＤＤ（５１２Ｅ）においては、ＲＭＷが頻発する可能性もあり、従来の５１２バイト／セクタのＨＤＤと比較して、性能低下は顕著である。また、近年、ＨＤＤの容量の増加に伴いＨＤＤへのアクセス頻度も増加している。ＨＤＤの容量が増加しても、ディスクの数は変わらないため、ＨＤＤはビジー状態に陥りやすくなり、性能低下が懸念される。
【０１２５】
本実施形態においては、４ＫセクタＨＤＤ（５１２Ｅ）におけるＲＭＷの発生に伴う性能低下、及び、ＨＤＤが大容量化することによる性能低下に着眼し、ＨＤＤ等の記憶容量の一部を用いて、ＲＭＷの発生の抑制を実現するものである。これにより、本実施形態においては、可能な限りＲＭＷの発生を抑制してＨＤＤ５への書き込みを行なうことができるため、従来の５１２バイト／セクタのＨＤＤと比べても同等な書込性能を得ることができる。
【０１２６】
なお、ＲＭＷの発生を抑制するために、ＨＤＤのデータ領域内のデータをキャッシュメモリ上に記憶しておくことも考えられるが、ＨＤＤへの書込サイズ単位でキャッシュメモリが占有されてしまい、キャッシュメモリの使用効率が悪い。また、キャッシュメモリの使用効率の悪さをキャッシュメモリの増設により補おうとしても、ＨＤＤのように大容量を容易に拡張することは困難である。
【０１２７】
本実施形態では、ＨＤＤの記憶容量を二倍使用することになるが、近年大容量で安価なＨＤＤが多く普及するようになり、比較的安価にＨＤＤを増設することができる。従って、本実施形態に係るコントローラモジュール４は、ＨＤＤ等の記憶装置の容量を犠牲にしても従来の５１２バイト／セクタと同等なライト性能を維持することを期待する場合に、特に有効である。
【０１２８】
また、本実施形態に係るコントローラモジュール４によれば、書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該データブロックが書き込まれたデータ領域５２ｂに応じた値を示すように、記憶装置ビットマップ２２ａが書き換えられる。従って、複数のデータ領域５２ｂ間で書き込み対象のデータブロックの整合性を保つことができ、書込領域判定部１１ａは、ＲＭＷが発生しない一のデータ領域５２ｂの判定を確実に行なうことができる。
【０１２９】
また、書込領域判定部１１ａにより、図１０のステップＳ１、Ｓ２、Ｓ５、及びＳ６において、記憶装置ビットマップ２２ａ及びメモリビットマップ２２ｂに基づき、書き込み対象のデータブロックを書き込むべき一のデータ領域５２ｂが判定される。従って、複数のデータ領域５２ｂ間で書き込み対象のデータブロックの整合性を保つことができ、書込領域判定部１１ａは、ＲＭＷが発生しない一のデータ領域５２ｂの判定を確実に行なうことができる。
【０１３０】
さらに、書込領域判定部１１ａによれば、図１０のステップＳ７〜Ｓ９において、書き込み対象のデータブロックを含む所定のサイズの書込用データブロックが、所定の条件に応じた最適なデータ領域５２ｂへ書き込まれる。従って、今回又は次回の書き込みにおけるＲＭＷの影響を軽減することができる。
また、記憶装置ビットマップ２２ａは、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２のいずれか一方のデータ領域５２ｂに含まれるデータブロックごとに該データブロックのデータ保存状態が有効か否かを示すビットマップ情報である。従って、一のデータ領域５２ｂに係るビットマップ情報により、二つのデータ領域５２ｂにおけるデータ保存状態を管理でき、記憶装置ビットマップ２２ａを記憶するリソースを削減することができる。
【０１３１】
さらに、記憶装置ビットマップ管理部１３により、書込用データブロックが一のデータ領域５２ｂへ書き込まれると、書込用データブロックに含まれる第１サイズのデータブロックについて、該データブロックに対して割り当てられた複数の記憶領域のデータ保存状態が更新される。従って、書込領域判定部１１ａは、最新のデータ保存状態に基づき、ＲＭＷが発生しない一のデータ領域５２ｂの判定を確実に行なうことができる。
【０１３２】
また、読出領域判定部１２ａにより、データの読出要求に応じて、複数のデータ領域５２ｂの中から、読み出し対象のデータを形成する一以上のデータブロックを読み出す一以上のデータ領域５２ｂが判定される。そして、読出処理部１２ｂによって、読出領域判定部１２ａにより判定された一以上のデータ領域の中から、データ保存状態が有効な前記読み出し対象の一以上のデータブロックが読み出される。従って、読出制御部１２は、読出要求に係る一以上のデータブロックを一以上のデータ領域５２ｂの中から確実に読み出すことができる。
【０１３３】
さらに、データマージ処理部１２ｃにより、複数のデータ領域５２ｂのうちの二以上のデータ領域の中から、読み出された各々のデータブロックがマージされ、読み出し対象のデータが生成される。従って、読出要求に係るデータが複数のデータ領域５２ｂに離散していても、マージ処理により確実に読み出すことができる。
また、書込処理部１１ｂにより、ユーザデータ領域２１に保持された書き込み対象のデータブロックと、ユーザデータ領域２１に保持された不要データブロックとを用いて書込用データブロックが生成される。そして、書込処理部１１ｂにより、生成された書込用データブロックが、一のデータ領域５２ｂへ書き込まれる。従って、書込処理部１１ｂは、書き込み対象のデータブロックに対してダミーデータ等を付加するといった処理が不要となり、書込用データブロックを容易に生成することができる。
【０１３４】
〔２〕変形例
上述した一実施形態において、コントローラモジュール４のＣＰＵ１０は、図１２に示すようにさらに最適化部１６を備えてもよく、書込制御部１１は、図１に示す書込処理部１１ｂに対して追加の処理を行なう書込処理部１１ｂ′を備えてもよい。
図１２は、一実施形態に係る情報処理システム１の構成の変形例を示す図である。なお、図１２において、図１に示す符号と同一の符号は、図１に示す構成と同一又は略同一のため、重複した説明は省略する。また、図１２においては、読出制御部１２、記憶装置ビットマップ管理部１３、及びビットマップ領域２２の詳細な図示を省略している。
【０１３５】
図１２に示すＣＰＵ１０は、図１に示すＣＰＵ１０と比べて、書込制御部１１が書込処理部１１ｂに代えて書込処理部１１ｂ′を備える点、及び、新たに最適化部１６を備える点が異なる。
最適化部１６は、複数のデータ領域５２ｂ間で、各々のデータ領域５２ｂが格納する複数のデータブロックを移動させるものである。具体的には、最適化部１６は、所定のタイミングで、記憶装置ビットマップ管理部１３が管理する記憶装置ビットマップ２２ａに基づいて、複数のデータ領域５２ｂの各々からデータ保存状態が有効な第１サイズのデータブロックを全て読み出す。そして、最適化部１６は、読み出したデータブロックを含む第２サイズの書込用データブロック（書込用データ）を生成して、生成した書込用データブロックを、複数のデータ領域５２ｂのいずれか一のデータ領域５２ｂに書き込む。
【０１３６】
つまり、最適化部１６は、例えば図４の（１）のように、複数のデータ領域５２ｂ間で有効なデータブロックが離散している場合に、それぞれのデータ領域５２ｂから有効なデータブロックを例えばユーザデータ領域２１に読み出す。そして、最適化部１６は、読み出した複数のデータブロックを４０９６バイトの書込用データブロックにマージして、複数のデータ領域５２ｂのうちの一のデータ領域５２ｂに書き込む（例えば図４の（３）セクタ＃０−０参照）。
【０１３７】
なお、所定のタイミングの例としては、以下の（ｉ）〜（ii）のうちの一つ又はこれらの組み合わせが挙げられる。
（ｉ）定期的なタイミング
（ii）ＨＤＤ５の負荷等のバックエンド負荷が閾値未満になったタイミング
このように、最適化部１６によれば、データ保存が有効であるデータブロックを一つのデータ領域５２ｂに偏らせることができ、次回の書き込みの際にＲＭＷが発生しない一のデータ領域５２ｂが判定される確率を高めることができる。つまり、次回の書き込みの際には、書込制御部１１は、図１０のステップＳ１及びＳ２の判定を経て、ＲＭＷを発生させずに書き込み対象のデータブロックを確実にＡ領域５２ｂ−１又はＢ領域５２ｂ−２に書き込むことができる。従って、ＨＤＤ５の性能低下を確実に防止することができる。
【０１３８】
書込処理部１１ｂ′は、図１に示す書込処理部１１ｂの機能に加えて、データマージ処理部１２ｃにより生成されたデータを、該データを形成する一以上のデータブロックに対して割り当てられた複数のデータ領域５２ｂのうちの一のデータ領域５２ｂに書き込む機能を有する。すなわち、書込処理部１１ｂ′は、読出制御部１２により複数のデータ領域５２ｂから読み出されてユーザデータ領域２１においてマージされたデータを、一のデータ領域５２ｂに書き込むのである。
【０１３９】
このように、書込処理部１１ｂ′によっても、最適化部１６と同様の効果を奏するこことができる。
なお、ＣＰＵ１０は、最適化部１６及び書込処理部１１ｂ′の機能のうちの少なくとも一方を備えることとしてもよい。また、最適化部１６及び書込処理部１１ｂ′の機能は、例えば書込制御部１１及び読出制御部１２の少なくとも一方に備えさせてもよい。
【０１４０】
このように、一実施形態の変形例に係る情報処理システム１によれば、上述した一実施形態の情報処理システム１と同様の効果を奏することができるほか、上述した最適化部１６及び書込処理部１１ｂ′による効果を奏することもできる。
〔３〕ハードウェア構成例
図１３は、図１又は図１２に示すコントローラモジュール４のハードウェア構成例を示す図である。
【０１４１】
図１３に示すように、ストレージ装置２は、図１又は図１２において既述のＣＰＵ１０、メモリ２０、ＳＳＤ３０を備えるとともに、入出力装置４１、記録媒体４２、及び、読取装置４３を備える。
入出力装置４１は、例えばマウスやキーボード等の入力装置及びディスプレイやプリンタ等の出力装置の少なくとも一方を含むものであり、ユーザ操作等による動作命令を受け付ける一方、コントローラモジュール４による処理結果を出力する。
【０１４２】
記録媒体４２は、フラッシュメモリやＲＯＭ等の記憶装置であり、種々のデータやプログラムを記録する。
読取装置４３は、光ディスクやＵＳＢメモリ等のコンピュータ読取可能な記録媒体４３ａに記録されたデータやプログラムを読み出す装置である。
記録媒体４２又は／及び４３ａには、一実施形態及び変形例に係る処理部の機能を実現する制御プログラムが格納されてもよい。すなわち、ＣＰＵ１０は、記録媒体４２、又は、読取装置４３を介して記録媒体４３ａから入力された制御プログラムを、メモリ２０等の記憶装置に展開して実行することにより、処理部の機能を実現する。
【０１４３】
なお、上述した各ハードウェアは、互いにバスで通信可能に接続される。
〔４〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１４４】
例えば、一実施形態及び変形例において、データ領域５２ｂの組は二つであるものとして説明したが、これに限定されるものではない。コントローラモジュール４は、三つ以上のデータ領域５２ｂをＨＤＤ５の記憶領域５２に管理し、三つ以上のデータ領域５２ｂで排他的にデータブロックが保存されるように制御してもよい。
また、書込処理部１１ｂは、ユーザデータをＨＤＤ５へライトバックするものとして説明したが、これに限定されるものではない。例えば、書込処理部１１ｂがライトスルーを行なう場合であっても、上述した処理部の構成を適用することができる。
【０１４５】
さらに、Ａ領域５２ｂ−１及びＢ領域５２ｂ−２は、一つのＨＤＤ５の記憶領域５２に割り当てられるものとして説明したが、これに限定されるものではない。Ａ領域５２ｂ−１及びＢ領域５２ｂ−２は、複数のＨＤＤ５に跨って、それぞれ所定の単位で複数のセクタがまとまって割り当てられてもよい。
また、一実施形態及び変形例において、コントローラモジュール４は、ストレージ装置２に備えられるものとして説明したが、これに限定されるものではない。例えば、コントローラモジュール４は、個々のＨＤＤ５内に備えられてもよいし、ホスト装置３に備えられてもよい。
【０１４６】
さらに、図１３を参照して、一実施形態及び変形例に係るコントローラモジュール４は、入出力装置４１、記録媒体４２、及び読取装置４３を備えるものとして説明したが、これに限定されるものではない。例えば、入出力装置４１、記録媒体４２、及び読取装置４３の少なくとも一つは、ホスト装置３に備えられてもよい。制御プログラムはホスト装置３からコントローラモジュール４に転送され、コントローラモジュール４のＣＰＵ１０は、ホスト装置３から転送された制御プログラムをメモリ２０に展開して実行してもよい。また、ホスト装置３及びコントローラモジュール４の少なくとも一方は、有線又は無線を介してインターネット等のネットワークに接続されてもよい。ＣＰＵ１０は、制御プログラムを提供する他の装置からネットワークを介して制御プログラムを受信し、受信した制御プログラムをメモリ２０に展開して実行してもよい。
【０１４７】
また、一実施形態及び変形例に係るコントローラモジュール４は、複数の４ＫセクタＨＤＤ（５１２Ｅ）や、複数の４ＫセクタＨＤＤ（５１２Ｅ）を用いた種々のRedundant Array of Inexpensive Disks（ＲＡＩＤ）構成のストレージに対しても同様の制御を行なうことができる。
なお、一実施形態及び変形例に係るストレージ装置２において、チャネルアダプタ６及びデバイスアダプタ７の少なくとも一方は、コントローラモジュール４に備えられてもよい。
【０１４８】
また、一実施形態のコントローラモジュール４の各種機能の全部もしくは一部は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のプログラムを実行することによって実現されてもよい。
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【０１４９】
ここで、コンピュータとは、ハードウェアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウェアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記プログラムは、上述のようなコンピュータに、一実施形態のコントローラモジュール（制御装置，制御部）４の各種機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【０１５０】
〔５〕付記
以上の実施形態及び変形例に関し、更に以下の付記を開示する。
（付記１）
上位装置に対して第１サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第１サイズと異なる第２サイズ単位でデータの入出力を行なう制御装置であって、
前記データ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第１サイズのデータブロックを割り当てる処理を行なう割当処理部と、
各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す第１管理情報を管理する管理部と、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第１管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
前記書き込み対象のデータブロックのデータを含む前記第２サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
を備えることを特徴とする、制御装置。
【０１５１】
（付記２）
前記管理部は、
前記書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該複数の記憶領域のうち、一の記憶領域は前記データブロックのデータが書き込まれると有効を示し、他の全ての記憶領域は無効を示すように、前記第１管理情報を書き換える
ことを特徴とする、付記１記載の制御装置。
【０１５２】
（付記３）
前記管理部は、
前記各データ領域に割り当てられた前記複数のデータブロックの記憶領域について、データブロックごとに、前記複数のデータ領域のうちのいずれか一のデータ領域内で該データブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、前記データ保存状態を管理し、
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第１管理情報に基づいて、前記複数のデータ領域のうちの一つである第１のデータ領域における全てのデータブロックのデータ保存状態が無効であると判断した場合に、前記第１のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記２記載の制御装置。
【０１５３】
（付記４）
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第１管理情報と、前記書き込み対象のデータブロックに対して割り当てられた前記複数のデータ領域における前記書き込み対象のデータブロックが保存される領域を示す第２管理情報とに基づき、前記第１のデータ領域における前記データ保存状態が有効な全てのデータブロックの領域が、前記第１のデータ領域において前記書き込み対象のデータブロックが保存される全ての領域に含まれると判断した場合に、前記第１のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記３記載の制御装置。
【０１５４】
（付記５）
前記書込領域判定部は、
前記第１及び第２管理情報に基づく判断によっても、前記複数のデータ領域の中から前記一のデータ領域が判定できない場合に、所定の条件に応じて、前記複数のデータ領域からいずれか一のデータ領域を選択し、
前記書込処理部は、
選択した前記一のデータ領域について、前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第１管理情報に基づいて、前記書き込み対象のデータブロックを含む所定のサイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により選択された前記一のデータ領域へ書き込む
ことを特徴とする、付記４記載の制御装置。
【０１５５】
（付記６）
前記複数のデータ領域は、第１のデータ領域及び第２のデータ領域の二つのデータ領域であり、
前記第１管理情報は、前記第１及び第２のデータ領域のいずれか一方のデータ領域に含まれる前記データブロックごとに該データブロックのデータ保存状態が有効か否かを示すビットマップ情報であり、
前記管理部は、
前記ビットマップ情報に基づいて、前記第１及び第２のデータ領域におけるデータ保存状態を管理する
ことを特徴とする、付記３〜５のいずれか１項記載の制御装置。
【０１５６】
（付記７）
所定のタイミングで、前記管理部が管理する前記データ保存状態に基づいて、前記複数のデータ領域の各々から前記データ保存状態が有効な前記第１サイズのデータブロックを全て読み出し、読み出した前記データブロックを含む前記第２サイズの書込用データを生成して、生成した前記書込用データを、前記複数のデータ領域のいずれか一のデータ領域に書き込む最適化部、
をさらに備えることを特徴とする、付記２〜６のいずれか１項記載の制御装置。
【０１５７】
（付記８）
前記管理部は、
前記書込用データが前記一のデータ領域へ書き込まれると、前記書込用データに含まれる前記第１サイズのデータブロックについて、該データブロックに対して割り当てられた複数の記憶領域のデータ保存状態を更新する
ことを特徴とする、付記２〜７のいずれか１項記載の制御装置。
【０１５８】
（付記９）
読み出し対象のデータを形成する一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域の中から、一以上のデータ領域を判定する読出領域判定部と、
前記読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記読出領域判定部により判定された前記一以上のデータ領域の中から、前記データ保存状態が有効な前記読み出し対象の一以上のデータブロックを読み出す処理を行なう読出処理部と、
をさらに備えることを特徴とする、付記２〜８のいずれか１項記載の制御装置。
【０１５９】
（付記１０）
前記読出処理部により、前記複数のデータ領域のうちの二以上のデータ領域の中からデータブロックがそれぞれ読み出されると、読み出された各々のデータブロックをマージして、前記読み出し対象のデータを生成する処理を行なうデータマージ処理部、
をさらに備えることを特徴とする、付記９記載の制御装置。
【０１６０】
（付記１１）
前記書込処理部は、
前記データマージ処理部により生成された前記データを、該データを形成する前記一以上のデータブロックに対して割り当てられた複数のデータ領域のうちの一のデータ領域に書き込む
ことを特徴とする、付記１０記載の制御装置。
【０１６１】
（付記１２）
前記複数のデータ領域のいずれか一つに書き込む前記書き込み対象のデータブロックを保持する前記第２サイズ以上の保持領域を有する保持部、
をさらに備え、
前記書込処理部は、
前記保持領域に保持された前記書き込み対象のデータブロックと、前記保持領域に保持された不要データブロックとを用いて前記書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域へ書き込む
ことを特徴とする、付記１〜１１のいずれか１項記載の制御装置。
【０１６２】
（付記１３）
データを記憶する記憶装置と、
上位装置に対して第１サイズのデータブロック単位で入出力を行ない、前記記憶装置の各データ領域に対して前記第１サイズと異なる第２サイズ単位でデータの入出力を行なう制御装置と、
を備え、
前記制御装置は、
前記データ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第１サイズのデータブロックを割り当てる処理を行なう割当処理部と、
各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部と、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
前記書き込み対象のデータブロックのデータを含む前記第２サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
を備えることを特徴とする、ストレージ装置。
【０１６３】
（付記１４）
前記管理部は、
前記書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該複数の記憶領域のうち、一の記憶領域は前記データブロックのデータが書き込まれると有効を示し、他の全ての記憶領域は無効を示すように、前記第１管理情報を書き換える
ことを特徴とする、付記１３記載のストレージ装置。
【０１６４】
（付記１５）
前記管理部は、
前記各データ領域に割り当てられた前記複数のデータブロックの記憶領域について、データブロックごとに、前記複数のデータ領域のうちのいずれか一のデータ領域内で該データブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、前記データ保存状態を管理し、
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第１管理情報に基づいて、前記複数のデータ領域のうちの一つである第１のデータ領域における全てのデータブロックのデータ保存状態が無効であると判断した場合に、前記第１のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記１４記載のストレージ装置。
【０１６５】
（付記１６）
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第１管理情報と、前記書き込み対象のデータブロックに対して割り当てられた前記複数のデータ領域における前記書き込み対象のデータブロックが保存される領域を示す第２管理情報とに基づき、前記第１のデータ領域における前記データ保存状態が有効な全てのデータブロックの領域が、前記第１のデータ領域において前記書き込み対象のデータブロックが保存される全ての領域に含まれると判断した場合に、前記第１のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記１５記載のストレージ装置。
【０１６６】
（付記１７）
前記制御装置は、
所定のタイミングで、前記管理部が管理する前記データ保存状態に基づいて、前記複数のデータ領域の各々から前記データ保存状態が有効な前記第１サイズのデータブロックを全て読み出し、読み出した前記データブロックを含む前記第２サイズの書込用データを生成して、生成した前記書込用データを、前記複数のデータ領域のいずれか一のデータ領域に書き込む最適化部、
をさらに備えることを特徴とする、付記１３〜１６のいずれか１項記載のストレージ装置。
【０１６７】
（付記１８）
前記制御装置は、
読み出し対象のデータを形成する一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域の中から、一以上のデータ領域を判定する読出領域判定部と、
前記読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記読出領域判定部により判定された前記一以上のデータ領域の中から、前記データ保存状態が有効な前記読み出し対象の一以上のデータブロックを読み出す処理を行なう読出処理部と、
をさらに備えることを特徴とする、付記１３〜１６のいずれか１項記載のストレージ装置。
【０１６８】
（付記１９）
前記制御装置は、
前記読出処理部により、前記複数のデータ領域のうちの二以上のデータ領域の中からデータブロックがそれぞれ読み出されると、読み出された各々のデータブロックをマージして、前記読み出し対象のデータを生成する処理を行なうデータマージ処理部、
をさらに備えることを特徴とする、付記１８記載のストレージ装置。
【０１６９】
（付記２０）
上位装置に対して第１サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第１サイズと異なる第２サイズ単位でデータの入出力を行なうコンピュータに、
前記データ領域を複数の第１サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第１サイズのデータブロックを割り当て、
各データ領域における前記複数の第１サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理し、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定し、
前記書き込み対象のデータブロックのデータを含む前記第２サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む、
処理を実行させることを特徴とする、制御プログラム。
【符号の説明】
【０１７０】
１，１００    情報処理システム
２，２００    ストレージ装置
３    ホスト装置（上位装置）
４    コントローラモジュール（制御装置，制御部）
５    ＨＤＤ（記憶装置）
６    チャネルアダプタ
７    デバイスアダプタ
１０    ＣＰＵ（処理部）
１１    書込制御部
１１ａ    書込領域判定部
１１ｂ，１１ｂ′    書込処理部
１２    読出制御部
１２ａ    読出領域判定部
１２ｂ    読出処理部
１２ｃ    データマージ処理部
１３    記憶装置ビットマップ管理部（管理部）
１３ａ    ビットマップ更新部
１３ｂ    ビットマップ読出部
１３ｃ    ビットマップ書込部
１４    割当処理部
１５    メモリビットマップ管理部
１６    最適化部
２０    メモリ（保持部）
２１    ユーザデータ領域（保持領域）
２２    ビットマップ領域
２２ａ    記憶装置ビットマップ（管理情報，第１管理情報）
２２ｂ    メモリビットマップ（第２管理情報）
３０    ＳＳＤ（格納部）
３１，５３    記憶装置ビットマップ格納領域
４１    入出力装置
４２，４３ａ    記録媒体
４３    読取装置
５１，４１０，５１０    メモリ
５２，５２０    記憶領域
５２ａ−１    第１グループ
５２ａ−２    第２グループ
５２ｂ，５２ｂ−１    Ａ領域（データ領域）
５２ｂ，５２ｂ−２    Ｂ領域（データ領域）
３００    ホスト装置
４００    コントローラモジュール
５００    ＨＤＤ
【図１】
2014186412.tif 000003
【図２】
2014186412.tif 000004
【図３】
2014186412.tif 000005
【図４】
2014186412.tif 000006
【図５】
2014186412.tif 000007
【図６】
2014186412.tif 000008
【図７】
2014186412.tif 000009
【図８】
2014186412.tif 000010
【図９】
2014186412.tif 000011
【図１０】
2014186412.tif 000012
【図１１】
2014186412.tif 000013
【図１２】
2014186412.tif 000014
【図１３】
2014186412.tif 000015
【図１４】
2014186412.tif 000016
【図１５】
2014186412.tif 000017