(57)【特許請求の範囲】
【請求項１】
外部に対する入出力単位となる記憶領域であるページを複数含み、予め定められたデータの単位であるクラスタのデータを、前記ページに複数記憶する記憶媒体と、前記クラスタを識別する情報である論理アドレスと前記記憶媒体の物理的なアドレスである物理アドレスとの対応を記憶する記憶部と、に対するデータの読み書きを制御するコントローラであって、
外部から書き込みが要求されたデータを、前記クラスタのサイズとなる複数のクラスタデータに変換し、変換した前記クラスタデータを外部の圧縮部により圧縮させ、前記記憶媒体への書込先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御する書込制御部と、
外部から読み込みが要求されたデータに対して、前記記憶部から前記物理アドレスを取得し、取得した前記物理アドレスに応じて前記記憶媒体から前記クラスタデータを読み込み、読み込んだ前記クラスタデータを外部の展開部により展開させ、展開された前記クラスタデータを出力するよう制御する読込制御部と、
前記記憶媒体に書き込まれた前記クラスタデータの中から転記する前記クラスタデータを予め定められた規則に従って決定し、決定した前記クラスタデータを前記記憶媒体から読込み、読み込んだ前記クラスタデータを外部の展開部により展開させ、展開された前記クラスタデータを外部の圧縮部により圧縮させ、前記記憶媒体への転記先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記転記先の前記物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御する転記制御部と、
を有し、
前記書込制御部は、
前記クラスタデータを前記圧縮部により圧縮させるか否かを、予め定められた規則に従って制御し、前記圧縮部による圧縮に要する時間が予め定められた時間以上である場合には、前記圧縮部による圧縮を取りやめ、圧縮を取りやめられた前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御し、
前記読込制御部は、
前記クラスタデータを前記展開部に展開させるか否かを、予め定められた規則に従って制御し、読み込んだ前記クラスタデータが圧縮されていない場合には、前記読み込んだクラスタデータを前記展開部に展開させずにそのまま出力するよう制御し、
前記転記制御部は、
前記クラスタデータを前記展開部に展開させるか否かを、予め定められた規則に従って制御し、前記クラスタデータを前記圧縮部により圧縮させるか否かを、予め定められた規則に従って制御し、読み込んだ前記クラスタデータが圧縮されていない場合には、前記読み込んだクラスタデータを前記展開部に展開させないよう制御し、
前記圧縮部による圧縮に要する時間が予め定められた時間以上である場合には、前記圧縮部による圧縮を取りやめ、圧縮を取りやめられた前記クラスタデータを前記転記先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御する
コントローラ。
【請求項２】
外部に対する入出力単位となる記憶領域であるページを複数含み、予め定められたデータの単位であるクラスタのデータを、前記ページに複数記憶する記憶媒体と、前記クラスタを識別する情報である論理アドレスと前記記憶媒体の物理的なアドレスである物理アドレスとの対応を記憶する記憶部と、に対するデータの読み書きを制御するコントローラであって、
外部から書き込みが要求されたデータを、前記クラスタのサイズとなる複数のクラスタデータに変換し、変換した前記クラスタデータを外部の圧縮部により圧縮させ、前記記憶媒体への書込先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御する書込制御部と、
外部から読み込みが要求されたデータに対して、前記記憶部から前記物理アドレスを取得し、取得した前記物理アドレスに応じて前記記憶媒体から前記クラスタデータを読み込み、読み込んだ前記クラスタデータを外部の展開部により展開させ、展開された前記クラスタデータを出力するよう制御する読込制御部と、
前記記憶媒体に書き込まれた前記クラスタデータの中から転記する前記クラスタデータを予め定められた規則に従って決定し、決定した前記クラスタデータを前記記憶媒体から読込み、読み込んだ前記クラスタデータを外部の展開部により展開させ、展開された前記クラスタデータを外部の圧縮部により圧縮させ、前記記憶媒体への転記先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記転記先の前記物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御する転記制御部と、
を有し、
前記書込制御部は、
外部から書き込みが要求されたデータを、前記クラスタのサイズとなる複数のクラスタデータに変換し、変換した前記クラスタデータを外部の圧縮部により第１の圧縮率で圧縮させ、圧縮された前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御し、
前記読込制御部は、
外部から読み込みが要求されたデータに対して、前記記憶部から前記物理アドレスを取得し、取得した前記物理アドレスに応じて前記記憶媒体から前記クラスタデータを読み込み、読み込んだ前記クラスタデータを外部の展開部により前記第１の圧縮率又は前記第１の圧縮率よりも高い第２の圧縮率に応じて展開させ、展開された前記クラスタデータを出力するよう制御し、
前記転記制御部は、
前記記憶媒体に書き込まれた前記クラスタデータの中から転記する前記クラスタデータを予め定められた規則に従って決定し、決定した前記クラスタデータを前記記憶媒体から読込み、読み込んだ前記クラスタデータを前記第１の圧縮率又は前記第２の圧縮率に応じて外部の展開部により展開させ、展開させた前記クラスタデータを外部の圧縮部により前記第２の圧縮率で圧縮させ、圧縮された前記クラスタデータを前記転記先の前記物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御する
コントローラ。
【請求項３】
外部に対する入出力単位となる記憶領域であるページを複数含み、予め定められたデータの単位であるクラスタのデータを、前記ページに複数記憶する記憶媒体と、
前記クラスタを識別する情報である論理アドレスと前記記憶媒体の物理的なアドレスである物理アドレスとの対応を記憶する記憶部と、
データを圧縮する圧縮部と、
外部から書き込みが要求されたデータを、前記クラスタのサイズとなる複数のクラスタデータに変換し、変換した前記クラスタデータを前記圧縮部により圧縮させ、前記記憶媒体への書込先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御する書込制御部と、
前記圧縮部が圧縮したデータを展開する展開部と、
外部から読み込みが要求されたデータに対して、前記記憶部から前記物理アドレスを取得し、取得した前記物理アドレスに応じて前記記憶媒体から前記クラスタデータを読み込み、読み込んだ前記クラスタデータを前記展開部により展開させ、展開された前記クラスタデータを出力するよう制御する読込制御部と、
前記記憶媒体に書き込まれた前記クラスタデータの中から転記する前記クラスタデータを予め定められた規則に従って決定し、決定した前記クラスタデータを前記記憶媒体から読込み、読み込んだ前記クラスタデータを前記展開部により展開させ、展開された前記クラスタデータを前記圧縮部により圧縮させ、前記記憶媒体への転記先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記転記先の前記物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御する転記制御部と、
を有し、
前記書込制御部は、
外部から書き込みが要求されたデータを、前記クラスタのサイズとなる複数のクラスタデータに変換し、変換した前記クラスタデータを前記圧縮部により第１の圧縮率で圧縮させ、圧縮された前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御し、
前記読込制御部は、
外部から読み込みが要求されたデータに対して、前記記憶部から前記物理アドレスを取得し、取得した前記物理アドレスに応じて前記記憶媒体から前記クラスタデータを読み込み、読み込んだ前記クラスタデータを前記展開部により前記第１の圧縮率又は前記第１の圧縮率よりも高い第２の圧縮率に応じて展開させ、展開された前記クラスタデータを出力するよう制御し、
前記転記制御部は、
前記記憶媒体に書き込まれた前記クラスタデータの中から転記する前記クラスタデータを予め定められた規則に従って決定し、決定した前記クラスタデータを前記記憶媒体から読込み、読み込んだ前記クラスタデータを前記第１の圧縮率又は前記第２の圧縮率に応じて前記展開部により展開させ、展開させた前記クラスタデータを前記圧縮部により前記第２の圧縮率で圧縮させ、圧縮された前記クラスタデータを前記転記先の前記物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御するデータ記憶装置。
【請求項４】
外部に対する入出力単位となる記憶領域であるページを複数含み、予め定められたデータの単位であるクラスタのデータを、前記ページに複数記憶する記憶媒体と、前記クラスタを識別する情報である論理アドレスと前記記憶媒体の物理的なアドレスである物理アドレスとの対応を記憶する記憶部と、に対するデータの読み書きを制御するコンピュータを、
外部から書き込みが要求されたデータを、前記クラスタのサイズとなる複数のクラスタデータに変換し、変換した前記クラスタデータを外部の圧縮部により圧縮させ、前記記憶媒体への書込先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御する書込制御部と、
外部から読み込みが要求されたデータに対して、前記記憶部から前記物理アドレスを取得し、取得した前記物理アドレスに応じて前記記憶媒体から前記クラスタデータを読み込み、読み込んだ前記クラスタデータを外部の展開部により展開させ、展開された前記クラスタデータを出力するよう制御する読込制御部と、
前記記憶媒体に書き込まれた前記クラスタデータの中から転記する前記クラスタデータを予め定められた規則に従って決定し、決定した前記クラスタデータを前記記憶媒体から読込み、読み込んだ前記クラスタデータを外部の展開部により展開させ、展開された前記クラスタデータを外部の圧縮部により圧縮させ、前記記憶媒体への転記先の前記物理アドレスを予め定められた規則に従って決定し、圧縮された前記クラスタデータを前記転記先の前記物理アドレスに応じて前記記憶媒体に書き込むよう制御するとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御する転記制御部と、
して機能させ、
前記書込制御部に、
外部から書き込みが要求されたデータを、前記クラスタのサイズとなる複数のクラスタデータに変換させ、変換させた前記クラスタデータを外部の圧縮部により第１の圧縮率で圧縮させ、圧縮された前記クラスタデータを前記書込先の物理アドレスに応じて前記記憶媒体に書き込むよう制御させるとともに、前記論理アドレスと前記書込先の物理アドレスとの対応を前記記憶部に書き込むよう制御させ、
前記読込制御部に、
外部から読み込みが要求されたデータに対して、前記記憶部から前記物理アドレスを取得させ、取得させた前記物理アドレスに応じて前記記憶媒体から前記クラスタデータを読み込ませ、読み込ませた前記クラスタデータを外部の展開部により前記第１の圧縮率又は前記第１の圧縮率よりも高い第２の圧縮率に応じて展開させ、展開された前記クラスタデータを出力するよう制御させ、
前記転記制御部に、
前記記憶媒体に書き込まれた前記クラスタデータの中から転記する前記クラスタデータを予め定められた規則に従って決定させ、決定させた前記クラスタデータを前記記憶媒体から読込ませ、読み込ませた前記クラスタデータを前記第１の圧縮率又は前記第２の圧縮率に応じて外部の展開部により展開させ、展開させた前記クラスタデータを外部の圧縮部により前記第２の圧縮率で圧縮させ、圧縮された前記クラスタデータを前記転記先の前記物理アドレスに応じて前記記憶媒体に書き込むよう制御させるとともに、前記論理アドレスと前記転記先の物理アドレスとの対応を前記記憶部に書き込むよう制御させる
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、コントローラ、データ記憶装置及びプログラムに関する。
【背景技術】
【０００２】
ＳＳＤ（Solid  State  Drive）に代表されるように、ＮＡＮＤ型フラッシュメモリのような半導体記憶媒体を用いて構成されるデータ記憶装置が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−６５８３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＮＡＮＤ型フラッシュメモリのような半導体記憶媒体の寿命は、データの書き換え回数に依存するといわれており、このような半導体記憶媒体を用いて構成されたデータ記憶装置では、半導体記憶媒体に書き込むデータの容量をできるだけ少なくしなければならない。
【課題を解決するための手段】
【０００５】
実施の形態のコントローラは、外部に対する入出力単位となる記憶領域であるページを複数含み、予め定められたデータの単位であるクラスタのデータを、ページに複数記憶する記憶媒体と、クラスタを識別する情報である論理アドレスと記憶媒体の物理的なアドレスである物理アドレスとの対応を記憶する記憶部と、に対するデータの読み書きを制御する。また、実施の形態のコントローラは、書込制御部と、読込制御部と、転記制御部と、を有する。書込制御部は、外部から書き込みが要求されたデータを、クラスタのサイズとなる複数のクラスタデータに変換し、変換したクラスタデータを外部の圧縮部により圧縮させ、記憶媒体への書込先の物理アドレスを予め定められた規則に従って決定し、圧縮されたクラスタデータを書込先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと書込先の物理アドレスとの対応を記憶部に書き込むよう制御する。読込制御部は、外部から読み込みが要求されたデータに対して、記憶部から物理アドレスを取得し、取得した物理アドレスに応じて記憶媒体からクラスタデータを読み込み、読み込んだクラスタデータを外部の展開部により展開させ、展開されたクラスタデータを出力するよう制御する。転記制御部は、記憶媒体に書き込まれたクラスタデータの中から転記するクラスタデータを予め定められた規則に従って決定し、決定したクラスタデータを記憶媒体から読込み、読み込んだクラスタデータを外部の展開部により展開させ、展開されたクラスタデータを外部の圧縮部により圧縮させ、記憶媒体への転記先の物理アドレスを予め定められた規則に従って決定し、圧縮されたクラスタデータを転記先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと転記先の物理アドレスとの対応を記憶部に書き込むよう制御する。また、書込制御部は、クラスタデータを圧縮部により圧縮させるか否かを、予め定められた規則に従って制御し、圧縮部による圧縮に要する時間が予め定められた時間以上である場合には、圧縮部による圧縮を取りやめ、圧縮を取りやめられたクラスタデータを書込先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと書込先の物理アドレスとの対応を記憶部に書き込むよう制御する。また、読込制御部は、クラスタデータを展開部に展開させるか否かを、予め定められた規則に従って制御し、読み込んだクラスタデータが圧縮されていない場合には、読み込んだクラスタデータを展開部に展開させずにそのまま出力するよう制御する。また、転記制御部は、クラスタデータを展開部に展開させるか否かを、予め定められた規則に従って制御し、クラスタデータを圧縮部によりさせるか否かを、予め定められた規則に従って制御し、読み込んだクラスタデータが圧縮されていない場合には、読み込んだクラスタデータを展開部に展開させないよう制御し、圧縮部による圧縮に要する時間が予め定められた時間以上である場合には、圧縮部による圧縮を取りやめ、圧縮を取りやめられたクラスタデータを転記先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと転記先の物理アドレスとの対応を記憶部に書き込むよう制御する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施の形態にかかるデータ記憶装置の構成例を示すブロック図。
【図２】記憶媒体におけるブロックとページの関係を示す模式図。
【図３】ページに対するクラスタセットの記憶位置（配置）を示す模式図。
【図４】第１の実施の形態におけるアドレス正引きテーブルを示す模式図。
【図５】第１の実施の形態による書き込み処理の手順例を示すフローチャート。
【図６】第１の実施の形態による読み込み処理の手順例を示すフローチャート。
【図７】第１の実施の形態による転記処理の手順例を示すフローチャート。
【図８】第２の実施の形態にかかるデータ記憶装置の構成例を示すブロック図。
【図９】記録スロットの構成例を示す模式図。
【図１０】記録スロットを分割したサイズに対する圧縮後のデータのサイズを示す模式図。
【図１１】圧縮されたクラスタが記録スロット（又はページ）をまたがって記憶された状態を示す模式図。
【図１２】記録スロットに圧縮されたクラスタが記憶されるパターンを示す模式図。
【図１３】第２の実施の形態におけるアドレス正引きテーブルを示す模式図。
【図１４】第２の実施の形態による書き込み処理の手順例を示すフローチャート。
【図１５】第２の実施の形態による読み込み処理の手順例を示すフローチャート。
【図１６】第２の実施の形態による転記処理の手順例を示すフローチャート。
【図１７】第３の実施の形態にかかるデータ記憶装置の構成例を示すブロック図。
【図１８】第３の実施の形態におけるアドレス正引きテーブルを示す模式図。
【図１９】記録スロットの端に記憶されているクラスタの状態を示す模式図。
【図２０】第３の実施の形態による書き込み処理の手順例を示すフローチャート。
【図２１】第３の実施の形態による読み込み処理の手順例を示すフローチャート。
【図２２】第３の実施の形態による転記処理の手順例を示すフローチャート。
【図２３】非可逆圧縮データ訂正用誤り訂正データを含むデータ例を示す模式図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、コントローラ、データ記憶装置及びプログラムの実施の形態を詳細に説明する。なお、以下の各実施の形態では、データ記憶装置としてＳＳＤを例に説明するが、これに限定されるものではない。
【０００８】
（第１の実施の形態）
第１の実施の形態にかかるデータ記憶装置は、記憶媒体にデータを書き込む場合に、書き込むデータを圧縮してデータ量を削減する機能を具備するコントローラを有する。
【０００９】
第１の実施の形態にかかるデータ記憶装置のコントローラは、外部に対する入出力単位となる記憶領域であるページを複数含み、予め定められたデータの単位であるクラスタのデータを、ページに複数記憶する記憶媒体と、クラスタを識別する情報である論理アドレスと記憶媒体の物理的なアドレスである物理アドレスとの対応を記憶する記憶部と、に対するデータの読み書きを制御するコントローラであって、外部から書き込みが要求されたデータを、クラスタのサイズとなる複数のクラスタデータに変換し、変換したクラスタデータを外部の圧縮部により圧縮させ、記憶媒体への書込先の物理アドレスを予め定められた規則に従って決定し、圧縮されたクラスタデータを書込先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと書込先の物理アドレスとの対応を記憶部に書き込むよう制御する書込制御部と、外部から読み込みが要求されたデータに対して、記憶部から物理アドレスを取得し、取得した物理アドレスに応じて記憶媒体からクラスタデータを読み込み、読み込んだクラスタデータを外部の展開部により展開させ、展開されたクラスタデータを出力するよう制御する読込制御部と、記憶媒体に書き込まれたクラスタデータの中から転記するクラスタデータを予め定められた規則に従って決定し、決定したクラスタデータを記憶媒体から読込み、読み込んだクラスタデータを外部の展開部により展開させ、展開されたクラスタデータを外部の圧縮部により圧縮させ、記憶媒体への転記先の物理アドレスを予め定められた規則に従って決定し、圧縮されたクラスタデータを転記先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと転記先の物理アドレスとの対応を記憶部に書き込むよう制御する転記制御部と、を有することを特徴とする。
【００１０】
また、第１の実施の形態にかかるデータ記憶装置のコントローラは、さらに、書込制御部が、クラスタデータを圧縮部により圧縮させるか否かを、予め定められた規則に従って制御し、読込制御部が、クラスタデータを展開部に展開させるか否かを、予め定められた規則に従って制御し、転記制御部が、クラスタデータを展開部に展開させるか否かを、予め定められた規則に従って制御し、クラスタデータを圧縮部により圧縮させるか否かを、予め定められた規則に従って制御することを特徴とする。
【００１１】
また、第１の実施の形態にかかるデータ記憶装置のコントローラは、さらに、記憶媒体が、複数のページからなるブロックを含み、書込制御部が、ブロックを管理する管理単位内で物理アドレスが連続する複数のページにまたがってクラスタデータを記憶媒体に書き込むよう制御し、読込制御部が、ブロックを管理する管理単位内で物理アドレスが連続する複数のページにまたがってクラスタデータが書き込まれている場合、連続する複数のページを合わせて読込んでクラスタデータを抽出するよう制御し、転記制御部が、ブロックを管理する管理単位内で物理アドレスが連続する複数のページにまたがってクラスタデータが書き込まれている場合、連続する複数のページを合わせて読込んでクラスタデータを抽出するよう制御し、ブロックを管理する管理単位内で物理アドレスが連続する複数のページにまたがってクラスタデータを記憶媒体に書き込むよう制御することを特徴とする。
【００１２】
以降、より詳細な一例を説明する。図１は、第１の実施の形態にかかるデータ記憶装置１００の構成の一例を示すブロック図である。図１に示すように、データ記憶装置１００は、コントローラ１１０と、記憶媒体アクセス部１０１と、第１アクセス部１０２と、第２アクセス部１０３と、圧縮部１０４と、展開部１０５と、インタフェース部１０６と、記憶媒体１５１と、第１メモリ１５２と、第２メモリ１５３と、を有する。
【００１３】
（記憶媒体１５１）
記憶媒体１５１は、例えばＮＡＮＤ型フラッシュメモリのような半導体記憶媒体である。記憶媒体１５１は、図２に示すように複数のブロック４００を有する。ブロック４００は、例えば半導体記憶媒体におけるデータの読み書き処理を行う単位の１つである。例えば、記憶媒体１５１は、ブロック４００ごとに消去処理を行う。
【００１４】
また、図２に示すように、ブロック４００は、複数のページ４０２を有する。ページ４０２は、記憶媒体１５１と記憶媒体１５１の外部（例えば記憶媒体アクセス部１０１）とのデータの入出力単位である。ブロック４００における各ページ４０２には、連続するページ番号（通し番号）が付与されている。また、記憶媒体１５１へのデータの書き込み順番として、例えば、ページ番号の昇順に書き込むように定められている。つまり、記憶媒体１５１へのデータの書き込み手順としては、例えば、ブロック４００の単位であらかじめ記録されているデータの消去処理を行った後に、ページ番号の昇順にデータを書き込むといったように定められている。
【００１５】
ページ４０２には、図３（ａ）に示すように、複数のクラスタセットが記憶される。クラスタセットには、クラスタデータと、誤り訂正データが含まれる。誤り訂正データを生成する基となるデータには、クラスタデータが含まれる。ここで、クラスタとは、データ記憶装置１００の内部でのデータの単位である。また、クラスタを識別するアドレス情報を例えば論理アドレスとする。
【００１６】
クラスタのサイズは、例えば、１０２４バイトのように定められているが、これに限られるものではない。なお、クラスタセットの一部としてページ４０２に記憶されるクラスタデータは、圧縮されていてもよいし、圧縮されていなくてもよい。クラスタセットには、当該クラスタを示す情報であるメタデータがさらに含まれてもよい。メタデータは、例えば、当該クラスタの論理アドレスなどである。クラスタセットにメタデータが含まれる場合、誤り訂正データを生成する基となるデータにメタデータがさらに含まれる。また、クラスタセットにメタデータが含まれる場合、クラスタセットの一部としてページ４０２に記憶されるメタデータは、圧縮されていてもよいし、圧縮されていなくてもよい。第１の実施の形態では、クラスタセットにメタデータが含まれる場合を例に説明するが、これに限定されることなく、クラスタセットにはメタデータが含まれない構成であってもよい。
【００１７】
また、クラスタセットには、当該クラスタセットのサイズを示す情報であるクラスタセットサイズデータがさらに含まれていてもよい。なお、クラスタセットにクラスタセットサイズデータが含まれる場合、クラスタセットの一部としてページ４０２に記憶されるクラスタセットサイズデータは、圧縮されない。第１の実施の形態では、クラスタセットにクラスタセットサイズデータが含まれない場合を例に説明するが、これに限定されることなく、クラスタセットにクラスタセットサイズデータが含まれる構成であってもよい。
【００１８】
なお、ページ４０２に記憶されるクラスタセットの記憶フォーマットは、図３（ａ）に示す例に限られない。ページ４０２に記憶されるクラスタセットの記憶フォーマットは、クラスタセットに含まれる各データを適切に取り出すことができる予め定められた規則に従って記憶されるものであればよい。例えば、図３（ａ）に示すように、ページ４０２は、必ずしもメタデータ、クラスタデータ、誤り訂正データの順番で記憶される必要はない。
【００１９】
また、後述する物理的なアドレス情報が連続する２つのページ４０２は、ブロック４００を管理する管理単位内であれば、図３（ｂ）に示すように、１つのクラスタセットを記憶してもよい。すなわち、クラスタセットは、２つのページ４０２にまたがるように記憶されてもよい。なお、ページ４０２は、当該ページ４０２だけでクラスタセットを記憶する場合、クラスタセットを記憶していない領域にダミーデータを記憶するように構成されてもよい。ダミーデータは、予め定められた値（例えば全て０）でもよいし、ランダムな値でもよい。ここで、ページ４０２は、ダミーデータの代わりに誤り訂正データを記憶するように構成されてもよい。ページ４０２が誤り訂正データを記憶する場合、記憶媒体１５１が記憶するデータの信頼性を高めることが可能となる。また、ページ４０２は、クラスタセットの順番を適宜入れ替えて記憶することにより、ダミーデータを記憶する量を削減するように構成されてもよい。ページ４０２がダミーデータを記憶する量を削減する場合、記憶媒体１５１の利用効率を高めることが可能となる。
【００２０】
（記憶媒体アクセス部１０１）
記憶媒体アクセス部１０１（図１）は、記憶媒体１５１へデータを書き込むように指示を受けると、書き込み指示されたデータを記憶媒体１５１に対して入力し、書き込み処理を実行する。また、記憶媒体アクセス部１０１は、記憶媒体１５１が記憶するデータを読み込むように指示を受けると、指示されたデータを記憶媒体１５１から読み込み、読み込みを要求した要求元に対して読み込んだデータを返却する。
【００２１】
（第１メモリ１５２）
第１メモリ１５２は、管理情報を記憶する。管理情報には、アドレス正引きテーブル１６０が含まれる。アドレス正引きテーブル１６０は、クラスタの論理アドレスと、この論理アドレスが指し示すデータが格納されている記憶媒体１５１の物理的なアドレス情報（以下、単に物理アドレスと記すことがある）とを対応付けたテーブルである。また、第１メモリ１５２は、データ記憶装置１００が行う様々な処理を簡単にするために、アドレス正引きテーブル１６０が含む情報から導出される情報を予め記憶するように構成されてもよい。
【００２２】
図３（ａ）を用いて説明したように、ページ４０２が複数のクラスタセットを記憶する場合、アドレス正引きテーブル１６０は、図４に示した論理アドレスを昇順に並べたものをテーブルのインデックスとする。そして、アドレス正引きテーブル１６０は、記憶媒体１５１の物理アドレスであるブロック番号情報、ページ番号情報及びページ上オフセット情報の組をテーブルの要素として記憶する。
【００２３】
また、アドレス正引きテーブル１６０は、記憶媒体１５１に記憶されているクラスタセットのサイズの情報を合わせて記憶する。なお、クラスタセットのサイズの情報は、必ずしもアドレス正引きテーブル１６０に記憶されている必要はない。例えば、前記メタデータがさらに、クラスタセットのクラスタセットサイズを示す情報を含むように構成されてもよい。
【００２４】
第１の実施の形態では、アドレス正引きテーブル１６０がクラスタセットのサイズの情報を含む場合を例に説明する。ただし、これに限定されることなく、アドレス正引きテーブル１６０は、クラスタセットのサイズの情報を含まない構成であってもよい。ここで、同一ブロック４００の連続するページ番号のページ４０２が、図３（ｂ）を用いて上述したブロック４００を管理する管理単位内で物理アドレスが連続する２つのページ４０２に相当する。
【００２５】
例えば、ブロック番号６６のページ番号３４番のページが図３（ｂ）の左側のページになり、同一ブロック（ブロック番号６６）のページ番号３５番のページが図３（ｂ）の右側のページになる。この場合、ページをまたいで記憶された当該クラスタセットに関する物理アドレスは、ブロック番号情報が６６、ページ番号情報が３４、ページ上オフセット情報が当該クラスタセットの記憶開始位置となる。また、ページをまたいで記憶されたクラスタセットのデータが必要になった場合には、ブロック番号６６のページ番号３５においてページ上オフセットが０としてデータを読み込めばよいことになる。このように、物理アドレスが連続する２つのページ４０２は、ブロック４００を管理する管理単位内であれば、１つのクラスタセットを記憶してもよい。
【００２６】
なお、アドレス正引きテーブル１６０の構成は、図４に示される構成に限られない。例えば、データ記憶装置１００が複数の記憶媒体１５１を備え、記憶媒体１５１に並列アクセスして速度向上を図る場合、アドレス正引きテーブル１６０は、各記憶媒体１５１から選出したブロック群を束ねた論理ブロックを単位として種々の情報を対応付けるように構成されてもよい。また、アドレス正引きテーブル１６０は、論理ブロックを構成する複数のブロック４００の同一ページ番号のページを束ねた論理ページを単位として種々の情報を対応付けるように構成されてもよい。
【００２７】
管理情報は、論理ブロック情報から論理ブロックを構成するブロック４００の情報を導出するための論物変換表（図示せず）をさらに含むように構成されてもよい。また、管理情報は、記憶媒体１５１の物理アドレスとして、論理ブロック番号情報と、論理ページ番号情報と、論理ページ上オフセット情報とを含むように構成されてもよい。この場合、同一論理ページを構成する連続するページ、または、同一論理ブロックの連続する論理ページ番号のページが、図３（ｂ）を用いて上述したブロック４００を管理する管理単位内で物理アドレスが連続する２つのページ４０２に相当する。
【００２８】
前者については、例えば、ブロック番号５のブロック、ブロック番号９７のブロック、ブロック番号３６のブロック、ブロック番号１０４のブロックが論理ブロック番号４９の論理ブロックを構成し、論理ページへのクラスタ書き込みの順番がこの順番であったとする。この時、例えば、論理ページ番号４０番の論理ページにおいて、ブロック番号５のブロックのページ番号４０のページが図３（ｂ）の左側のページになり、ブロック番号９７のブロックのページ番号４０のページが図３（ｂ）の右側のページになる。同一論理ページの連続するページをまたいで記憶された該クラスタセットに関する物理アドレスは、論理ブロック番号情報として４９、論理ページ番号情報として４０、論理ページ上オフセット情報として当該クラスタセットの記憶開始位置となる。また、同一論理ページの連続するページをまたいで記憶されたクラスタセットのデータが必要になった場合には、ブロック番号９７のブロックのページ番号４０においてページのオフセット０から読み込めばよいことになる。
【００２９】
また、後者については、例えば、論理ブロック番号６６の論理ページ番号３４番のページが図３（ｂ）の左側のページになり、同一論理ブロック（論理ブロック番号６６）の論理ページ番号３５番のページが図３（ｂ）の右側のページになる。この場合、論理ページをまたいで記憶された当該クラスタセットに関する物理アドレスは、論理ブロック番号情報として６６、論理ページ番号情報として３４、論理ページ上オフセット情報として当該クラスタセットの記憶開始位置となる。また、同一論理ページの連続するページをまたいで記憶されたクラスタセットのデータが必要になった場合には、論理ブロック番号６６の論理ページ番号３５において論理ページ上オフセット０から読み込めばよいことになる。したがって、物理アドレスが連続する２つのページ４０２は、ブロック４００を管理する管理単位内であれば、１つのクラスタセットを記憶してもよい。
【００３０】
このように、アドレス正引きテーブル１６０の構成は種々変形可能である。第１の実施の形態では、アドレス正引きテーブル１６０が、記憶媒体１５１の物理アドレスとして、ブロック番号情報と、ページ番号情報と、ページ上オフセット情報とを含む場合を例に説明する。ただし、アドレス正引きテーブル１６０は、これに限定されることなく、他の構成であってもよい。
【００３１】
（第１アクセス部１０２）
第１アクセス部１０２（図１）は、第１メモリ１５２へデータを書き込むように指示を受けると、書き込みを指示されたデータを第１メモリ１５２に書き込む。また、第１アクセス部１０２は、第１メモリ１５２が記憶するデータを読み込むように指示を受けると、指示されたデータを第１メモリ１５２から読み込み、読み込みを要求した要求元に対して読み込んだデータを返却する。
【００３２】
（第２メモリ１５３）
第２メモリ１５３は、書き込み対象の複数のクラスタセットを一時記憶する。
【００３３】
（第２アクセス部１０３）
第２アクセス部１０３は、第２メモリ１５３へデータを書き込むように指示を受けると、書き込みを指示されたデータを第２メモリ１５３に書き込む。また、第２アクセス部１０３は、第２メモリ１５３が記憶するデータを読み込むように指示を受けると、指示されたデータを第２メモリ１５３から読み込み、読み込みを要求した要求元に対して読み込んだデータを返却する。
【００３４】
（圧縮部１０４）
圧縮部１０４は、データを圧縮する指示を受けると、指示されたデータを予め定められた方法で例えば可逆圧縮し、圧縮を要求した要求元に対して圧縮したデータを返却する。
【００３５】
（展開部１０５）
展開部１０５は、圧縮部１０４によって圧縮されたデータを展開する指示を受けると、指示されたデータを予め定められた方法で展開し、展開を要求した要求元に対して展開したデータを返却する。
【００３６】
（コントローラ１１０）
コントローラ１１０は、書込部１１１と、読込部１１２と、書込制御部１１３と、読込制御部１１４と、転記制御部１１５と、を有する。
【００３７】
（書込部１１１）
書込部１１１は、書込制御部１１３（又は転記制御部１１５）からクラスタの書き込み要求を受け付ける。クラスタの書き込み要求には、書き込み先情報と、書き込み対象のクラスタデータと、書き込み対象のクラスタの論理アドレスを示すデータが含まれる。書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上オフセットの情報が含まれる。
【００３８】
書込部１１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタデータを抽出する。書込部１１１は、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信し、クラスタデータを圧縮することを圧縮部１０４に対して指示する。そして、書込部１１１は、圧縮部１０４が圧縮した書き込み対象のクラスタデータを取得する。なお、書込部１１１は、クラスタデータを圧縮する必要がない場合には、抽出した書き込み対象のクラスタデータを、圧縮部１０４に送信することなく、圧縮された書き込み対象のクラスタデータと同様に処理する（圧縮された書き込み対象のクラスタデータとみなす）ように構成されてもよい。例えば、書込部１１１は、抽出した書き込み対象のクラスタデータを圧縮した結果のサイズが圧縮前のサイズとあまり変わらない場合などには、圧縮による効果があまりないため、クラスタデータを圧縮する必要がなく、圧縮部１０４にクラスタデータを送信しないように構成されてもよい。
【００３９】
また、書込部１１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタの論理アドレスを示すデータを抽出し、抽出した書き込み対象のクラスタの論理アドレスを示すデータを含むメタデータを生成する。なお、クラスタセットに含まれるメタデータを圧縮する場合は、書込部１１１は、生成したメタデータを圧縮部１０４に圧縮させ、圧縮されたメタデータを圧縮部１０４から取得し、以降、取得した圧縮されたメタデータを前記生成したメタデータに読み替えることができる。書込部１１１は、圧縮された書き込み対象のクラスタデータと、生成したメタデータを含むデータとを基にして、誤り訂正データを生成する。そして、書込部１１１は、圧縮された書き込み対象のクラスタデータと、生成したメタデータと、生成した誤り訂正データとを含むクラスタセットを生成する。
【００４０】
次に、書込部１１１は、生成したクラスタセットのサイズを算出する。そして、書込部１１１は、書き込み先のページに生成したクラスタセットが収まるか否かを判定する。より詳細には、書込部１１１は、書き込み先情報に含まれるページ上オフセットの情報と、算出したクラスタセットのサイズとを加算した結果が、ページサイズに収まっているか否かを判定する。
【００４１】
書込部１１１は、判定結果がＹＥＳ（書き込み先のページに収まる）の場合、生成したクラスタセットを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に対して書き込み指示を行う。また、書込部１１１は、書き込み要求を行った要求元（書込要求元）に対してクラスタセットのサイズの情報を返却する。
【００４２】
書込部１１１は、判定結果がＮｏ（書き込み先のページに収まらない）の場合、書き込み要求を行った要求元に対して書き込み先のページあふれを示す応答を行う。また、書込部１１１は、書込要求元から次の書き込み先情報を受け付けると、生成したクラスタセットを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に対して書き込み指示を行う。また、書込部１１１は、書込要求元に対してクラスタセットのサイズの情報を返却する。
【００４３】
また、書込部１１１は、書込要求元からダミーデータを記憶させる指示を受け付けると、書き込み先のページのクラスタセットを記憶していない領域のサイズ分のダミーデータを生成する。なお、ダミーデータは予め定められた値（例えば全て０）でもよいし、ランダムな値でもよい。そして、書込部１１１は、生成したダミーデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に対して書き込み指示を行う。
【００４４】
ここで、書込部１１１は、ダミーデータの代わりに、第２メモリ１５３が一時記憶しているクラスタセットの誤り訂正データを生成するように構成されてもよい。第２メモリ１５３が一時記憶しているクラスタセットの誤り訂正データを生成する場合、記憶媒体１５１が記憶するデータの信頼性を高めることが可能となる。また、第２メモリ１５３は、クラスタセットの順番を適宜入れ替えて記憶することにより、ダミーデータを記憶する量を削減するように構成されてもよい。第２メモリ１５３がダミーデータを記憶する量を削減する場合、記憶媒体１５１の利用効率を高めることが可能となる。
【００４５】
書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になると、第２メモリ１５３からページサイズ分のデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。そして、書込部１１１は、ページサイズ分のデータを取得する。より詳細には、書込部１１１は、第２メモリ１５３が一時記憶しているデータのうち、図３（ｂ）の左側のページに記憶されるデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。
【００４６】
データ記憶装置１００が複数の記憶媒体１５１を備え、記憶媒体１５１に並列アクセスして速度向上を図る場合、第２メモリ１５３が一時記憶しているデータの合計サイズが並列書き込みするページ数のページ４０２のサイズ以上になると、第２メモリ１５３から並列書き込みするページ数分のサイズのデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。
【００４７】
そして、書込部１１１は、第２アクセス部１０３を介して取得したページサイズ分（又は並列書き込みするページ数分のサイズ）のデータを、書き込み先のページ（又は並列書き込みする各ページ）に書き込むように、記憶媒体アクセス部１０１に対して書き込み指示を行う。
【００４８】
ここで、書き込み先のページは、図３（ｂ）の左側のページである。書込部１１１は、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号と、ページ番号を、記憶媒体アクセス部１０１に指示する。書込部１１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。また、書込部１１１は、書込要求元から受信した書き込み先情報に含まれる、クラスタの書き込み先のブロック番号と、ページ番号を、書込要求元に通知する。
【００４９】
第１の実施の形態では、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とは異なるように構成されている。よって、書込部１１１は、書込要求元が転記制御部１１５である場合、書込要求元が書込制御部１１３である場合の処理と同様の処理を別の書き込み先のページに対して行う。
【００５０】
なお、書込部１１１は、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とを同じにする構成であってもよい。例えば、書込部１１１は、書込制御部１１３から書き込み要求されても、転記制御部１１５から書き込み要求されても、同一の書き込み先のページに対して上述した処理を行う。
【００５１】
（読込部１１２）
読込部１１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、ページ上オフセットの情報と、クラスタセットサイズの情報と、が含まれる。なお、当該読み込み対象のクラスタセットがページをまたがって記憶されている場合は、読込部１１２は、連続する読み込み先ページの情報をあわせて受け付ける。連続する読み込み先ページの情報には、ブロック番号と、ページ番号と、が含まれる。
【００５２】
読込部１１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００において、抽出したページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に対して読み込み指示を行う。そして、読込部１１２は、記憶媒体アクセス部１０１から当該ページのデータを取得する。読み込み対象のクラスタセットがページをまたがって記憶されている場合は、読込部１１２は、取得した連続する読み込み先ページの情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００において、抽出したページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示に対して読み込み指示を行う。そして、読込部１１２は、記憶媒体アクセス部１０１から当該ページのデータをさらに取得する。
【００５３】
また、読込部１１２は、取得した読み込み先情報から、ページ上オフセットの情報と、クラスタセットサイズの情報を抽出する。読込部１１２は、取得したページにおいて、抽出したページ上オフセットの情報が示す位置を読込み開始位置として、抽出したクラスタセットサイズの情報が示すサイズのデータを抽出する。読み込み対象のクラスタセットがページをまたがって記憶されている場合は、当該クラスタセットの残りのサイズ分のデータを、連続する読み込み先ページの先頭の位置から抽出し、先に抽出したデータと合わせてクラスタセットのデータとする。
【００５４】
読込部１１２は、クラスタセットのデータを誤り訂正し、誤り訂正後のクラスタセットのデータを取得する。より詳細には、読込部１１２は、クラスタセットのデータ内で、メタデータとクラスタデータとを含むデータを、誤り訂正データを生成するための基のデータであるとする。また、読込部１１２は、クラスタセットのデータを誤り訂正して、誤り訂正後のクラスタセットのデータを取得する。ここで、読込部１１２は、誤り訂正を失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。
【００５５】
読込部１１２は、誤り訂正が成功した（誤り訂正可能だった）場合には、誤り訂正後のクラスタセットのデータからクラスタデータを抽出する。読込部１１２は、抽出したクラスタデータを展開部１０５に送信し、展開部１０５に対して抽出したクラスタデータを展開するように指示する。そして、読込部１１２は、展開部１０５が展開したクラスタデータを取得する。
【００５６】
なお、読込部１１２は、クラスタデータを展開する必要がない場合には、抽出したクラスタデータを展開部１０５に送信することなく、抽出したクラスタデータを展開されたクラスタデータと同様に処理するように構成されてもよい。例えば、クラスタデータが圧縮されずに記憶媒体１５１に記憶されていた場合、読込部１１２は、抽出したクラスタデータを展開部１０５に送信することなく、抽出したクラスタデータを展開されたクラスタデータと同様に処理する。そして、読込部１１２は、展開されたクラスタデータ（又は展開する必要がない抽出したクラスタデータ）を読み込み要求元に送信する。
【００５７】
（インタフェース部１０６）
インタフェース部１０６は、例えばＰＣ（Personal  Computer）などの図示しないホスト装置から、書き込み命令及び読み込み命令などの命令を受け付ける。書き込み命令には、データ記憶装置アドレス情報及び書き込みデータが含まれる。読み込み命令には、データ記憶装置アドレス情報が含まれる。データ記憶装置アドレス情報は、データ記憶装置１００が図示しないホスト装置に対して提供するアドレス情報である。例えば、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤのデータ記憶装置アドレス情報の例として、ＬＢＡ（Logical  Block  Address）がある。ＬＢＡで特定されるデータのサイズは、例えば、５１２バイトのように定められている。データ記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータ（クラスタ）のサイズとは、前述したように一般に異なっている。しかし、データ記憶装置アドレスと論理アドレスは相互に変換可能である。例えば、データ記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレスが１０２４バイトごとに割り当てられている場合、データ記憶装置アドレス情報を２で除算して商を求めることにより、データ記憶装置アドレス情報を論理アドレスに変換することができる。第１の実施の形態では、説明の簡単化のために、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが同じである場合を例に説明する。ただし、これに限定されることなく、データ記憶装置１００は、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが異なるものであってもよい。
【００５８】
インタフェース部１０６は、受け付けた命令が書き込み命令である場合、書込制御部１１３に対して受け付けた書き込み命令を転送する。また、インタフェース部１０６は、受け付けた命令が読み込み命令である場合、読込制御部１１４に対して受け付けた読み込み命令を転送する。インタフェース部１０６は、読込制御部１１４からデータを受信すると、受信したデータを図示しないホスト装置に転送する。
【００５９】
（書込制御部１１３）
書込制御部１１３は、インタフェース部１０６から書き込み命令を受け取ると、受け取った書き込み命令から、データ記憶装置アドレス情報及び書き込みデータを抽出する。そして、書込制御部１１３は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。また、書込制御部１１３は、書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズ分だけずらして書き込み先情報を生成する。
【００６０】
書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、図４に示すように、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上オフセットの情報が含まれる。書込制御部１１３は、ページ上オフセットの情報に対し、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズの情報が示すクラスタセットのサイズを加算することにより、書き込み先情報を生成する。
【００６１】
書込部１１１に対する前回のクラスタ書き込み要求において、書込部１１１に次の書き込み先情報を与えた（クラスタがページをまたがって記憶された）場合には、書込制御部１１３は、次の書き込み先情報にクラスタセットの残りのサイズ分だけずらした書き込み先情報を生成する。次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページの先頭の位置を示すページ上オフセットの情報が含まれる。書込制御部１１３は、ページ上オフセットの情報に対し、クラスタセットの残りのサイズを加算することにより、書き込み先情報を生成する。
【００６２】
なお、図示しないホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じになる構成である場合、書込制御部１１３及び転記制御部１１５は、生成する書き込み先情報が重複しないように連携して処理を行う。書込制御部１１３は、生成した書き込み先情報と、書き込み対象のクラスタデータとする抽出した書き込みデータと、書き込み対象のクラスタを変換した論理アドレスとを、書込部１１１に送信し、書込部１１１に対して書き込みを指示する。
【００６３】
書込制御部１１３は、書込部１１１から書き込み先のページあふれを示す応答を受け取ると、ブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合には、次の書き込み先情報を書込部１１１に与える。書込制御部１１３は、ダミーデータを書き込む指示を書込部１１１に対して行うことがある。例えば、書込制御部１１３は、ブロック４００を管理する同一の管理単位内で物理アドレスが連続しない場合以外にも、適宜、ダミーデータを書き込む指示を書込部１１１に対して行ってもよい。なお、書込制御部１１３は、ダミーデータを書き込む指示を書込部１１１に行った場合、当該書き込み対象のクラスタデータを書き込むために、新たな書き込み先ページを確保して、書込み処理をやり直す。そして、書込制御部１１３は、書込部１１１からクラスタセットのサイズを受信する。
【００６４】
書込制御部１１３は、書込部１１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０を更新する。より詳細には、書込制御部１１３は、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０における変換した論理アドレスが示す記憶媒体１５１の物理アドレスを、書き込み先の記憶媒体１５１の物理アドレスに更新するように、第１アクセス部１０２に対して書き込み指示を行う。
【００６５】
また、書込制御部１１３は、当該ページに書き込まれたクラスタについて、書込部１１１から取得したクラスタセットのサイズの情報を、アドレス正引きテーブル１６０に書き込むように、第１アクセス部１０２に対して書き込み指示を行う（図４参照）。
【００６６】
（読込制御部１１４）
読込制御部１１４は、インタフェース部１０６から読み込み命令を受け取ると、受け取った読み込み命令からデータ記憶装置アドレス情報を抽出する。読込制御部１１４は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。読込制御部１１４は、変換した論理アドレスに対応付けられている情報を取得する。より詳細には、読込制御部１１４は、アドレス正引きテーブル１６０における変換された論理アドレスが示す記憶媒体１５１の物理アドレスと、クラスタセットのサイズの情報とを読み込むように、第１アクセス部１０２に対して読み込みの指示を行う。そして、読込制御部１１４は、物理アドレス及びクラスタセットのサイズの情報を取得する。
【００６７】
読込制御部１１４は、取得した物理アドレスに含まれるページ上オフセットの情報、及び取得したクラスタセットのサイズの情報を用いて、当該クラスタセットがページをまたがって記憶されているか否かを判断する。読込制御部１１４は、判断結果がＹＥＳ（ページをまたがって記憶されている）の場合は、連続する読み込み先ページの情報を生成する。連続する読み込み先ページの情報には、ブロック番号と、ページ番号と、が含まれる。ここで、ブロック番号とページ番号とには、取得した物理アドレスに含まれるブロック番号と、ページ番号に連続する番号が新たに設定される。
【００６８】
例えば、同一ブロック４００内の連続するページ番号のページが、図３（ｂ）で説明したブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合に該当すると、ブロック番号及びページ番号に連続する番号が新たに設定される。例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号６６のページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一ブロック（ブロック番号６６）のページ番号３５番のページになる。
【００６９】
また、同一論理ページの連続するページ、又は同一論理ブロックの連続する論理ページ番号のページが、図３（ｂ）で説明したブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合には次のようになる。例えば、ブロック番号５のブロック、ブロック番号９７のブロック、ブロック番号３６のブロック、ブロック番号１０４のブロックが論理ブロック番号４９の論理ブロックを構成しており、論理ページへのクラスタ書き込み順番がこの順番であったとする。
【００７０】
前者については、例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号５のブロックのページ番号４０のページを示している場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報がブロック番号９７のブロックのページ番号４０のページになる。また、後者については、例えば、図３（ｂ）の左側に示したページが、論理ブロック番号６６の論理ページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一論理ブロック（論理ブロック番号６６）の論理ページ番号３５番のページになる。
【００７１】
読込制御部１１４は、取得した物理アドレス及び取得したクラスタセットのサイズの情報を読み込み先情報とし、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部１１２に対して読み込み指示を行う。なお、読み込み対象クラスタセットがページをまたがって記憶されている場合は、読込制御部１１４は、読込部１１２に対し、生成した連続する読み込み先ページの情報を合わせて送信する。
【００７２】
読込制御部１１４は、読込部１１２から読み込みエラーを通知されると、読み込みエラーを示すデータをインタフェース部１０６に送信する。なお、第１メモリ１５２は、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を管理情報のひとつとしてさらに記憶してもよい。このようにすることで、再度同じ論理アドレスに対して読み込み要求されたときに、すばやく読み込みエラーを返却することができる。読込制御部１１４は、読込部１１２から読み込んだデータを受信すると、受信したデータをインタフェース部１０６に送信する。
【００７３】
（転記制御部１１５）
データ記憶装置１００は、データ記憶装置１００が記憶しているデータを内部的に整理するために、適宜転記処理を実行する。転記制御部１１５は、予め定められた規則に従って、以下に述べる転記処理の制御をおこなう。まず、転記制御部１１５は、転記するクラスタを決定する。より詳細には、転記制御部１１５は、第１メモリ１５２が記憶する管理情報を読み込むように第１アクセス部１０２に対して読み込み指示を行って管理情報を取得する。転記制御部１１５は、任意の予め定められた方法を用いて、取得した管理情報から転記するクラスタを決定する。第１の実施の形態においては、転記するクラスタを決定する方法は公知のいずれの方法であってもよい。転記制御部１１５は、決定したクラスタの論理アドレスを取得した管理情報から抽出する。
【００７４】
次に、転記制御部１１５は、転記するクラスタを読み込む。より詳細には、転記制御部１１５は、抽出した論理アドレスに対応付けられている情報を取得する。例えば、転記制御部１１５は、アドレス正引きテーブル１６０において抽出した論理アドレスが示す記憶媒体１５１の物理アドレスと、クラスタセットのサイズの情報とを読み込むように、第１アクセス部１０２に対して読み込み指示を行う。そして、転記制御部１１５は、物理アドレス及びクラスタセットのサイズの情報を取得する。
【００７５】
転記制御部１１５は、取得した物理アドレスに含まれるページ上オフセットの情報と、取得したクラスタセットのサイズの情報とを用いて、当該クラスタセットがページをまたがって記憶されているか否かを判断する。転記制御部１１５は、判断結果がＹＥＳ（ページをまたがって記憶されている）の場合は、連続する読み込み先ページの情報を生成する。連続する読み込み先ページの情報には、ブロック番号と、ページ番号と、が含まれる。ここで、ブロック番号とページ番号とには、取得した物理アドレスに含まれるブロック番号と、ページ番号に連続する番号とが新たに設定される。
【００７６】
例えば、同一ブロック４００内の連続するページ番号のページが、図３（ｂ）で説明したブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合に該当すると、ブロック番号及びページ番号に連続する番号が新たに設定される。例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号６６のページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一ブロック（ブロック番号６６）のページ番号３５番のページになる。
【００７７】
また、同一論理ページの連続するページ、又は同一論理ブロックの連続する論理ページ番号のページが、図３（ｂ）で説明したブロック４００を管理する管理単位内で物理アドレスが連続する場合には次のようになる。例えば、ブロック番号５のブロック、ブロック番号９７のブロック、ブロック番号３６のブロック、ブロック番号１０４のブロックが論理ブロック番号４９の論理ブロックを構成しており、論理ページへのクラスタ書き込み順番がこの順番であったとする。
【００７８】
前者については、例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号５のブロックのページ番号４０のページを示している場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報がブロック番号９７のブロックのページ番号４０のページになる。また、後者については、例えば、図３（ｂ）の左側に示したページが、論理ブロック番号６６の論理ページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一論理ブロック（論理ブロック番号６６）の論理ページ番号３５番のページになる。
【００７９】
転記制御部１１５は、取得した物理アドレス及び取得したクラスタセットのサイズの情報を読み込み先情報とし、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部１１２に対して読み込み指示を行う。なお、読み込み対象クラスタセットがページをまたがって記憶されている場合は、転記制御部１１５は、読込部１１２に対し、生成した連続する読み込み先ページの情報を合わせて送信する。
【００８０】
転記制御部１１５は、読込部１１２から読み込みエラーを通知されると、転記処理後も当該クラスタを読み込むとエラーとなるように整合性を担保する処理を行う。例えば、転記制御部１１５は、読み込みエラーとなったクラスタデータを読み込みエラーとなる状態のまま転記してもよい。また、転記制御部１１５は、第１メモリ１５２が有する管理情報に対し、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を含ませ、読み込みエラーとなったクラスタデータは転記しないように構成されてもよい。
【００８１】
次に、転記制御部１１５は、読込部１１２が読み込んだデータを受信する。そして、転記制御部１１５は、転記するクラスタの書き込みを行う。より詳細には、転記制御部１１５は、書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズの情報が示すクラスタセットのサイズ分だけずらした書き込み先情報を生成する。書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上オフセットの情報が含まれる。転記制御部１１５は、ページ上オフセットの情報に対し、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズの情報が示すクラスタセットのサイズを加算することで、当該書き込み先情報を生成する。
【００８２】
なお、書込部１１１に対する前回のクラスタ書き込み要求において、書込部１１１に次の書き込み先情報を与えた（クラスタがページをまたがって記憶された）場合は、次の書き込み先情報にクラスタセットの残りのサイズ分だけずらした書き込み先情報を生成する。次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページの先頭の位置を示すページ上オフセットの情報が含まれる。転記制御部１１５は、ページ上オフセットの情報に対し、クラスタセットの残りのサイズを加算することで、当該書き込み先情報を生成する。
【００８３】
なお、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じ構成である場合、書込制御部１１３及び転記制御部１１５は、生成する書き込み先情報が重複しないように連携して処理を行う。転記制御部１１５は、生成した書き込み先情報と、転記対象のクラスタデータとして読込部１１２から受信したデータと、抽出した論理アドレスとを、書込部１１１に対して送信する。そして、書込制御部１１３は、書込部１１１に対して書き込み指示を行う。
【００８４】
転記制御部１１５は、書込部１１１から書き込み先のページあふれを示す応答を受け取ると、ブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合には、次の書き込み先情報を書込部１１１に対して出力する。転記制御部１１５は、ダミーデータを書き込む指示を書込部１１１に対して行うことがある。
【００８５】
例えば、転記制御部１１５は、ブロック４００を管理する同一の管理単位内で物理アドレスが連続しない場合以外にも、適宜、ダミーデータを書き込む指示を書込部１１１に対して行ってもよい。なお、転記制御部１１５は、ダミーデータを書き込む指示を書込部１１１に行った場合、該書き込み対象のクラスタデータを書き込むために、新たな書き込み先ページを確保して書き込み処理をやり直す。
【００８６】
次に、転記制御部１１５は、書込部１１１からクラスタセットのサイズを受信する。転記制御部１１５は、書込部１１１への書き込み要求が少なくとも１ページ分になるまで上記処理を繰り返す。記憶媒体１５１の入出力単位がページ４０２であるので、転記制御部１１５は、少なくとも１ページ分の書き込みを行わなければ後述する管理情報の更新処理を行うことができない。つまり、転記処理が完了しないからである。
【００８７】
転記制御部１１５は、転記したクラスタの管理情報を更新する。より詳細には、転記制御部１１５は、書込部１１１から書き込み完了通知を受信すると、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０を更新する。転記制御部１１５は、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０において抽出した論理アドレスが示す記憶媒体１５１の物理アドレスを、書き込み先の記憶媒体１５１の物理アドレスに更新するように、第１アクセス部１０２に書き込みの指示を行う。
【００８８】
また、転記制御部１１５は、当該ページに書き込まれたクラスタについて、書込部１１１から取得したクラスタセットのサイズの情報をアドレス正引きテーブル１６０に記憶させるように、第１アクセス部１０２に対して書き込みの指示を行う。
【００８９】
転記制御部１１５は、任意の予め定められた方法に従って上記処理を繰り返す。
【００９０】
なお、データ記憶装置１００は、インタフェース部１０６がデータを受入れる速度などに応じて、圧縮部１０４が圧縮を行うか否かを切替えるように構成されてもよい。例えば、データ記憶装置１００は、圧縮部１０４が圧縮を行うとインタフェース部１０６が受入れ可能なデータの速度が低下する場合には、圧縮部１０４が圧縮を行わないよう制御する。また、データ記憶装置１００は、圧縮部１０４が圧縮を行っていないデータを読込制御部１１４が記憶媒体１５１などから読み込む場合には、展開部１０５が展開を行わないように構成されてもよい。
【００９１】
次に、第１の実施の形態のデータ記憶装置１００の動作について説明する。まず、図示しないホスト装置からの書き込み命令に応じて、データ記憶装置１００が行う書き込み処理の手順について、図５を参照して説明する。図５は、データ記憶装置１００が行う書き込み処理の手順の一例を示すフローチャートである。
【００９２】
（書き込み処理）
ステップ１００（Ｓ１００）において、データ記憶装置１００は、外部のホスト装置（図示せず）などから書き込み命令及び読み込み命令を含む命令を受け付ける。より詳細には、インタフェース部１０６は、図示しないホスト装置から、書き込み命令を受け付ける。書き込み命令には、データ記憶装置アドレス情報及び書き込みデータが含まれる。読み込み命令には、データ記憶装置アドレス情報が含まれる。データ記憶装置アドレス情報は、データ記憶装置１００が図示しないホスト装置に対して提供するアドレス情報である。
【００９３】
例えば、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤのデータ記憶装置アドレス情報の例として、ＬＢＡ（Logical  Block  Address）がある。ＬＢＡで特定されるデータのサイズは、例えば、５１２バイトのように定められている。データ記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータ（クラスタ）のサイズとは、前述したように一般に異なっている。しかし、データ記憶装置アドレスと論理アドレスは相互に変換可能である。例えば、データ記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレスが１０２４バイトごとに割り当てられている場合、データ記憶装置アドレス情報を２で除算して商を求めることにより、データ記憶装置アドレス情報を論理アドレスに変換することができる。
【００９４】
第１の実施の形態では、説明の簡単化のために、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが同じである場合を例に説明する。ただし、これに限定されることなく、データ記憶装置１００は、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが異なるものであってもよい。インタフェース部１０６は、受け付けた命令が書き込み命令であった場合、書込制御部１１３に受け付けた書き込み命令を転送する。
【００９５】
ステップ１０２（Ｓ１０２）において、書込制御部１１３は、書き込み先情報を生成する。より詳細には、書込制御部１１３は、インタフェース部１０６から書き込み命令を受け取ると、受け取った書き込み命令から、データ記憶装置アドレス情報及び書き込みデータを抽出する。そして、書込制御部１１３は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。また、書込制御部１１３は、書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズ分だけずらして書き込み先情報を生成する。
【００９６】
より詳細には、書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、図４に示すように、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上オフセットの情報が含まれる。書込制御部１１３は、ページ上オフセットの情報に対し、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズの情報が示すクラスタセットのサイズを加算することにより、書き込み先情報を生成する。書込部１１１に対する前回のクラスタ書き込み要求において、書込部１１１に次の書き込み先情報を与えた（クラスタがページをまたがって記憶された）場合には、書込制御部１１３は、次の書き込み先情報にクラスタセットの残りのサイズ分だけずらした書き込み先情報を生成する。
【００９７】
より詳細には、次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページの先頭の位置を示すページ上オフセットの情報が含まれる。書込制御部１１３は、ページ上オフセットの情報に対し、クラスタセットの残りのサイズを加算することにより、書き込み先情報を生成する。なお、図示しないホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じになる構成である場合、書込制御部１１３及び転記制御部１１５は、生成する書き込み先情報が重複しないように連携して処理を行う。書込制御部１１３は、生成した書き込み先情報と、書き込み対象のクラスタデータとする抽出した書き込みデータと、書き込み対象のクラスタを変換した論理アドレスとを、書込部１１１に送信し、書込部１１１に対して書き込みを指示する。書込部１１１は、書込制御部１１３からクラスタの書き込み要求を受け付ける。クラスタの書き込み要求には、書き込み先情報と、書き込み対象のクラスタデータと、書き込み対象のクラスタの論理アドレスを示すデータが含まれる。書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上オフセットの情報が含まれる。
【００９８】
ステップ１０４（Ｓ１０４）において、書込部１１１は、（必要に応じて）圧縮部１０４に対して圧縮する指示を送信する。より詳細には、書込部１１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタデータを抽出する。書込部１１１は、抽出した書き込み対象のクラスタデータを、圧縮部１０４に送信して圧縮することを指示する。圧縮部１０４は、データを圧縮する指示を受けると、指示されたデータを予め定められた方法で例えば可逆圧縮し、圧縮を要求した要求元に対して圧縮したデータを返却する。そして、書込部１１１は、圧縮された書き込み対象のクラスタデータを圧縮部１０４から取得する。なお、書込部１１１は、クラスタデータを圧縮する必要がない場合には、抽出した書き込み対象のクラスタデータを、圧縮部１０４に送信することなく、圧縮された書き込み対象のクラスタデータと同様に処理する（圧縮された書き込み対象のクラスタデータとみなす）ように構成されてもよい。例えば、書込部１１１は、抽出した書き込み対象のクラスタデータを圧縮した結果のサイズが圧縮前のサイズとあまり変わらない場合などには、圧縮による効果があまりないため、クラスタデータを圧縮する必要がなく、圧縮部１０４にクラスタデータを送信しないように構成されてもよい。
【００９９】
ステップ１０６（Ｓ１０６）において、書込部１１１は、クラスタセットを生成する。より詳細には、書込部１１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタの論理アドレスを示すデータを抽出し、抽出した書き込み対象のクラスタの論理アドレスを示すデータを含むメタデータを生成する。なお、クラスタセットに含まれるメタデータを圧縮する場合は、書込部１１１は、生成したメタデータを圧縮部１０４に圧縮させ、圧縮されたメタデータを圧縮部１０４から取得し、以降、取得した圧縮されたメタデータを前記生成したメタデータに読み替えることができる。書込部１１１は、圧縮された書き込み対象のクラスタデータと、生成したメタデータを含むデータとを基にして、誤り訂正データを生成する。そして、書込部１１１は、圧縮された書き込み対象のクラスタデータと、生成したメタデータと、生成した誤り訂正データとを含むクラスタセットを生成する。
【０１００】
ステップ１０８（Ｓ１０８）において、書込部１１１は、書き込み先のページに生成したクラスタセットが収まっているかを判定する。より詳細には、書込部１１１は、生成したクラスタセットのサイズを算出する。そして、書込部１１１は、書き込み先のページに生成したクラスタセットが収まるか否かを判定する。より詳細には、書込部１１１は、書き込み先情報に含まれるページ上オフセットの情報と、算出したクラスタセットのサイズとを加算した結果が、ページサイズに収まっているか否かを判定する。
【０１０１】
ステップ１１０（Ｓ１１０）において、第２メモリ１５３は、書き込み対象の複数のクラスタセットを一時記憶する。より詳細には、書込部１１１は、Ｓ１０８の処理において判定結果がＹＥＳ（書き込み先のページに収まる）の場合、生成したクラスタセットを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部１１１は、書込要求元にクラスタセットのサイズの情報を返却する。書込制御部１１３は、書込部１１１からクラスタセットのサイズを受信する。
【０１０２】
ステップ１１２（Ｓ１１２）において、書込部１１１及び書込制御部１１３は、末端処理をする。より詳細には、書込部１１１は、Ｓ１０８の処理において判定結果がＮＯ（書き込み先のページに収まらない）の場合、書き込み先のページあふれを示す応答を書込要求元に応答する。書込制御部１１３は、書込部１１１から書き込み先のページあふれを示す応答を受け取ると、ブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合には、次の書き込み先情報を書込部１１１に与える。書込部１１１は、書込要求元から次の書き込み先情報を受け付けると、生成したクラスタセットを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部１１１は、書込要求元にクラスタセットのサイズの情報を返却する。書込制御部１１３は、書込部１１１からクラスタセットのサイズを受信する。そして、Ｓ１１４の処理に進む。なお、書込制御部１１３は、ブロック４００を管理する同一の管理単位内で物理アドレスが連続しない場合以外にも、適宜、ダミーデータを書き込む指示を書込部１１１に対して行ってもよい。また、書込部１１１は、書込要求元からダミーデータを記憶させる指示を受け付けると、書き込み先のページのクラスタセットを記憶していない領域のサイズ分のダミーデータを生成する。なお、ダミーデータは予め定められた値（例えば全て０）でもよいし、ランダムな値でもよい。そして、書込部１１１は、生成したダミーデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に対して書き込み指示を行う。
【０１０３】
ここで、書込部１１１は、ダミーデータの代わりに、第２メモリ１５３が一時記憶しているクラスタセットの誤り訂正データを生成するように構成されてもよい。第２メモリ１５３が一時記憶しているクラスタセットの誤り訂正データを生成する場合、記憶媒体１５１が記憶するデータの信頼性を高めることが可能となる。また、第２メモリ１５３は、クラスタセットの順番を適宜入れ替えて記憶することにより、ダミーデータを記憶する量を削減するように構成されてもよい。第２メモリ１５３がダミーデータを記憶する量を削減する場合、記憶媒体１５１の利用効率を高めることが可能となる。なお、書込制御部１１３は、ダミーデータを書き込む指示を書込部１１１に与えた場合、書き込み対象のクラスタデータを書き込むために、新たな書き込み先ページを確保し、上記処理をＳ１０２からやり直す。
【０１０４】
ステップ１１４（Ｓ１１４）において、書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１ページ分以上になったか否かを判定する。書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になっていない場合（Ｓ１１４：Ｎｏ）は、Ｓ１００の処理に進む。また、書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になった場合（Ｓ１１４：Ｙｅｓ）は、Ｓ１１６の処理に進む。
【０１０５】
ステップ１１６（Ｓ１１６）において、書込部１１１は、記憶媒体アクセス部１０１を介して１ページ分のデータを記憶媒体１５１に書き込む。より詳細には、書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になると、第２メモリ１５３からページサイズ分のデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。そして、書込部１１１は、ページサイズ分のデータを取得する。より詳細には、書込部１１１は、第２メモリ１５３が一時記憶しているデータのうち、図３（ｂ）の左側のページに記憶されるデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。
【０１０６】
データ記憶装置１００が複数の記憶媒体１５１を備え、記憶媒体１５１に並列アクセスして速度向上を図る場合、第２メモリ１５３が一時記憶しているデータの合計サイズが並列書き込みするページ数のページ４０２のサイズ以上になると、第２メモリ１５３から並列書き込みするページ数分のサイズのデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。
【０１０７】
そして、書込部１１１は、第２アクセス部１０３を介して取得したページサイズ分（又は並列書き込みするページ数分のサイズ）のデータを、書き込み先のページ（又は並列書き込みする各ページ）に書き込むように、記憶媒体アクセス部１０１に対して書き込み指示を行う。
【０１０８】
ここで、書き込み先のページは、図３（ｂ）の左側のページである。書込部１１１は、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号と、ページ番号を、記憶媒体アクセス部１０１に指示する。記憶媒体アクセス部１０１は、記憶媒体１５１へデータを書き込むように指示を受けると、書き込み指示されたデータを記憶媒体１５１に対して入力し、書き込み処理を実行する。
【０１０９】
ステップ１１８（Ｓ１１８）において、書込制御部１１３は、管理情報を更新する。より詳細には、書込部１１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。ここで、書き込み先のページは、図３（ｂ）の左側のページであり、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号と、ページ番号を、書込要求元に通知する。書込制御部１１３は、書込部１１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０を更新する。より詳細には、書込制御部１１３は、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０における変換した論理アドレスが示す記憶媒体１５１の物理アドレスを、書き込み先の記憶媒体１５１の物理アドレスに更新するように、第１アクセス部１０２に対して書き込み指示を行う。また、書込制御部１１３は、当該ページに書き込まれたクラスタについて、書込部１１１から取得したクラスタセットのサイズの情報を、アドレス正引きテーブル１６０に書き込むように、第１アクセス部１０２に対して書き込み指示を行う（図４参照）。
【０１１０】
次に、図示しないホスト装置からの読み込み命令に応じて、データ記憶装置１００が行う読み込み処理の手順について、図６を参照して説明する。図６は、データ記憶装置１００が行う読み込み処理の手順の一例を示すフローチャートである。
【０１１１】
（読み込み処理）
ステップ２００（Ｓ２００）において、データ記憶装置１００は、外部のホスト装置（図示せず）などから、読み込み命令を受け付ける。より詳細には、インタフェース部１０６は、図示しないホスト装置から、書き込み命令及び読み込み命令を含む命令を受け付ける。書き込み命令には、データ記憶装置アドレス情報及び書き込みデータが含まれる。読み込み命令には、データ記憶装置アドレス情報が含まれる。データ記憶装置アドレス情報は、データ記憶装置１００が図示しないホスト装置に提供するアドレス情報である。
【０１１２】
例えば、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤのデータ記憶装置アドレス情報の例として、ＬＢＡ（Logical  Block  Address）がある。ＬＢＡで特定されるデータのサイズは、例えば、５１２バイトのように定められている。データ記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータ（クラスタ）のサイズとは、前述したように一般に異なっている。しかし、データ記憶装置アドレスと論理アドレスは相互に変換可能である。例えば、データ記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレスが１０２４バイトごとに割り当てられている場合、データ記憶装置アドレス情報を２で除算して商を求めることにより、データ記憶装置アドレス情報を論理アドレスに変換することができる。
【０１１３】
第１の実施の形態では、説明の簡単化のために、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが同じである場合を例に説明する。ただし、これに限定されることなく、データ記憶装置１００は、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが異なるものであってもよい。インタフェース部１０６は、受け付けた命令が読み込み命令であった場合、読込制御部１１４に受け付けた読み込み命令を転送する。
【０１１４】
ステップ２０２（Ｓ２０２）において、読込制御部１１４は、読み込み先情報を生成する。より詳細には、読込制御部１１４は、インタフェース部１０６から読み込み命令を受け取ると、受け取った読み込み命令からデータ記憶装置アドレス情報を抽出する。読込制御部１１４は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。読込制御部１１４は、変換した論理アドレスに対応付けられている情報を取得する。より詳細には、読込制御部１１４は、アドレス正引きテーブル１６０における変換された論理アドレスが示す記憶媒体１５１の物理アドレスと、クラスタセットのサイズの情報とを読み込むように、第１アクセス部１０２に対して読み込みの指示を行う。そして、読込制御部１１４は、物理アドレス及びクラスタセットのサイズの情報を取得する。読込制御部１１４は、取得した物理アドレスに含まれるページ上オフセットの情報、及び取得したクラスタセットのサイズの情報を用いて、当該クラスタセットがページをまたがって記憶されているか否かを判断する。読込制御部１１４は、判断結果がＹＥＳ（ページをまたがって記憶されている）の場合は、連続する読み込み先ページの情報を生成する。より詳細には、連続する読み込み先ページの情報には、ブロック番号と、ページ番号と、が含まれる。ここで、ブロック番号とページ番号とには、取得した物理アドレスに含まれるブロック番号と、ページ番号に連続する番号が新たに設定される。
【０１１５】
例えば、同一ブロック４００内の連続するページ番号のページが、図３（ｂ）で説明したブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合に該当すると、ブロック番号及びページ番号に連続する番号が新たに設定される。例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号６６のページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一ブロック（ブロック番号６６）のページ番号３５番のページになる。また、同一論理ページの連続するページ、又は同一論理ブロックの連続する論理ページ番号のページが、図３（ｂ）で説明したブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合には次のようになる。例えば、ブロック番号５のブロック、ブロック番号９７のブロック、ブロック番号３６のブロック、ブロック番号１０４のブロックが論理ブロック番号４９の論理ブロックを構成しており、論理ページへのクラスタ書き込み順番がこの順番であったとする。
【０１１６】
前者については、例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号５のブロックのページ番号４０のページを示している場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報がブロック番号９７のブロックのページ番号４０のページになる。また、後者については、例えば、図３（ｂ）の左側に示したページが、論理ブロック番号６６の論理ページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一論理ブロック（論理ブロック番号６６）の論理ページ番号３５番のページになる。
【０１１７】
ステップ２０４（Ｓ２０４）において、読込制御部１１４は、読込部１１２を介して読み込み対象データを読み込む。より詳細には、読込制御部１１４は、取得した物理アドレス及び取得したクラスタセットのサイズの情報を読み込み先情報とし、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部１１２に対して読み込み指示を行う。なお、読み込み対象クラスタセットがページをまたがって記憶されている場合は、読込制御部１１４は、読込部１１２に対し、生成した連続する読み込み先ページの情報を合わせて送信する。
【０１１８】
読込部１１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、ページ上オフセットの情報と、クラスタセットサイズの情報と、が含まれる。なお、当該読み込み対象のクラスタセットがページをまたがって記憶されている場合は、読込部１１２は、連続する読み込み先ページの情報をあわせて受け付ける。連続する読み込み先ページの情報には、ブロック番号と、ページ番号と、が含まれる。
【０１１９】
読込部１１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００において、抽出したページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に対して読み込み指示を行う。そして、読込部１１２は、記憶媒体アクセス部１０１から当該ページのデータを取得する。
【０１２０】
読み込み対象のクラスタセットがページをまたがって記憶されている場合は、読込部１１２は、取得した連続する読み込み先ページの情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００において、抽出したページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示に対して読み込み指示を行う。そして、読込部１１２は、記憶媒体アクセス部１０１から当該ページのデータをさらに取得する。読込部１１２は、取得した読み込み先情報から、ページ上オフセットの情報と、クラスタセットサイズの情報を抽出する。読込部１１２は、取得したページにおいて、抽出したページ上オフセットの情報が示す位置を読込み開始位置として、抽出したクラスタセットサイズの情報が示すサイズのデータを抽出する。読み込み対象のクラスタセットがページをまたがって記憶されている場合は、当該クラスタセットの残りのサイズ分のデータを、連続する読み込み先ページの先頭の位置から抽出し、先に抽出したデータと合わせてクラスタセットのデータとする。
【０１２１】
ステップ２０６（Ｓ２０６）において、読込制御部１１４は、読み込み対象データを展開部１０５により展開してホスト装置に返却する。より詳細には、読込部１１２は、クラスタセットのデータを誤り訂正し、誤り訂正後のクラスタセットのデータを取得する。より詳細には、読込部１１２は、クラスタセットのデータ内で、メタデータとクラスタデータとを含むデータを、誤り訂正データを生成するための基のデータであるとする。また、読込部１１２は、クラスタセットのデータを誤り訂正して、誤り訂正後のクラスタセットのデータを取得する。
【０１２２】
ここで、読込部１１２は、誤り訂正を失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。読込制御部１１４は、読込部１１２から読み込みエラーを通知されると、読み込みエラーを示すデータをインタフェース部１０６に送信する。なお、第１メモリ１５２は、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を管理情報のひとつとしてさらに記憶してもよい。インタフェース部１０６は、読込制御部１１４からデータ（読み込みエラーを示すデータ）を受信すると、受信したデータ（読み込みエラーを示すデータ）を図示しないホスト装置に転送する。読込部１１２は、誤り訂正が成功した（誤り訂正可能だった）場合には、誤り訂正後のクラスタセットのデータからクラスタデータを抽出する。読込部１１２は、抽出したクラスタデータを展開部１０５に送信し、展開部１０５に対して抽出したクラスタデータを展開するように指示する。展開部１０５は、圧縮部１０４によって圧縮されたデータを展開する指示を受けると、指示されたデータを予め定められた方法で展開し、展開を要求した要求元に対して展開したデータを返却する。そして、読込部１１２は、展開部１０５が展開したクラスタデータを取得する。
【０１２３】
なお、読込部１１２は、クラスタデータを展開する必要がない場合には、抽出したクラスタデータを展開部１０５に送信することなく、抽出したクラスタデータを展開されたクラスタデータと同様に処理するように構成されてもよい。例えば、クラスタデータが圧縮されずに記憶媒体１５１に記憶されていた場合、読込部１１２は、抽出したクラスタデータを展開部１０５に送信することなく、抽出したクラスタデータを展開されたクラスタデータと同様に処理する。そして、読込部１１２は、展開されたクラスタデータ（又は展開する必要がない抽出したクラスタデータ）を読み込み要求元に送信する。
【０１２４】
読込制御部１１４は、読込部１１２から読み込んだデータを受信すると、受信したデータをインタフェース部１０６に送信する。インタフェース部１０６は、読込制御部１１４からデータを受信すると、受信したデータを図示しないホスト装置に転送する。
【０１２５】
次に、データ記憶装置１００が行う転記処理の手順について、図７を参照して説明する。図７は、データ記憶装置１００が行う転記処理の手順の一例を示すフローチャートである。転記制御部１１５は、予め定められた規則に従って、図７に示す転記処理の制御をおこなう。
【０１２６】
（転記処理）
ステップ３００（Ｓ３００）において、転記制御部１１５は、転記するクラスタを決定する。より詳細には、転記制御部１１５は、第１メモリ１５２が記憶する管理情報を読み込むように第１アクセス部１０２に対して読み込み指示を行って管理情報を取得する。転記制御部１１５は、任意の予め定められた方法を用いて、取得した管理情報から転記するクラスタを決定する。第１の実施の形態においては、転記するクラスタを決定する方法は公知のいずれの方法であってもよい。転記制御部１１５は、決定したクラスタの論理アドレスを取得した管理情報から抽出する。
【０１２７】
ステップ３０２（Ｓ３０２）において、転記制御部１１５は、読み込み先情報を生成する。より詳細には、転記制御部１１５は、抽出した論理アドレスに対応付けられている情報を取得する。例えば、転記制御部１１５は、アドレス正引きテーブル１６０において抽出した論理アドレスが示す記憶媒体１５１の物理アドレスと、クラスタセットのサイズの情報とを読み込むように、第１アクセス部１０２に対して読み込み指示を行う。そして、転記制御部１１５は、物理アドレス及びクラスタセットのサイズの情報を取得する。転記制御部１１５は、取得した物理アドレスに含まれるページ上オフセットの情報と、取得したクラスタセットのサイズの情報とを用いて、当該クラスタセットがページをまたがって記憶されているか否かを判断する。転記制御部１１５は、判断結果がＹＥＳ（ページをまたがって記憶されている）の場合は、連続する読み込み先ページの情報を生成する。連続する読み込み先ページの情報には、ブロック番号と、ページ番号と、が含まれる。
【０１２８】
ここで、ブロック番号とページ番号とには、取得した物理アドレスに含まれるブロック番号と、ページ番号に連続する番号とが新たに設定される。例えば、同一ブロック４００内の連続するページ番号のページが、図３（ｂ）で説明したブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合に該当すると、ブロック番号及びページ番号に連続する番号が新たに設定される。例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号６６のページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一ブロック（ブロック番号６６）のページ番号３５番のページになる。
【０１２９】
また、同一論理ページの連続するページ、又は同一論理ブロックの連続する論理ページ番号のページが、図３（ｂ）で説明したブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合には次のようになる。例えば、ブロック番号５のブロック、ブロック番号９７のブロック、ブロック番号３６のブロック、ブロック番号１０４のブロックが論理ブロック番号４９の論理ブロックを構成しており、論理ページへのクラスタ書き込み順番がこの順番であったとする。
【０１３０】
前者については、例えば、図３（ｂ）の左側に示したページが、取得した物理アドレスがブロック番号５のブロックのページ番号４０のページを示している場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報がブロック番号９７のブロックのページ番号４０のページになる。また、後者については、例えば、図３（ｂ）の左側に示したページが、論理ブロック番号６６の論理ページ番号３４番のページであった場合、図３（ｂ）の右側に示したページは、連続する読み込み先ページの情報が同一論理ブロック（論理ブロック番号６６）の論理ページ番号３５番のページになる。
【０１３１】
ステップ３０４（Ｓ３０４）において、転記制御部１１５は、読込部１１２を介して読み込み対象データを読み込む。転記制御部１１５は、取得した物理アドレスと、取得したクラスタセットのサイズの情報とを、読み込み先情報として、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部１１２に読み込み指示する。なお、読み込み対象クラスタセットがページをまたがって記憶されている場合は、転記制御部１１５は、読込部１１２に対し、生成した連続する読み込み先ページの情報を合わせて送信する。
【０１３２】
読込部１１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、ページ上オフセットの情報と、クラスタセットサイズの情報と、が含まれる。なお、当該読み込み対象のクラスタセットがページをまたがって記憶されている場合は、読込部１１２は、連続する読み込み先ページの情報をあわせて受け付ける。連続する読み込み先ページの情報には、ブロック番号と、ページ番号と、が含まれる。
【０１３３】
読込部１１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００において、抽出したページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に対して読み込み指示を行う。そして、読込部１１２は、記憶媒体アクセス部１０１から当該ページのデータを取得する。読み込み対象のクラスタセットがページをまたがって記憶されている場合は、読込部１１２は、取得した連続する読み込み先ページの情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００において、抽出したページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示に対して読み込み指示を行う。そして、読込部１１２は、記憶媒体アクセス部１０１から当該ページのデータをさらに取得する。
【０１３４】
また、読込部１１２は、取得した読み込み先情報から、ページ上オフセットの情報と、クラスタセットサイズの情報を抽出する。読込部１１２は、取得したページにおいて、抽出したページ上オフセットの情報が示す位置を読込み開始位置として、抽出したクラスタセットサイズの情報が示すサイズのデータを抽出する。読み込み対象のクラスタセットがページをまたがって記憶されている場合は、当該クラスタセットの残りのサイズ分のデータを、連続する読み込み先ページの先頭の位置から抽出し、先に抽出したデータと合わせてクラスタセットのデータとする。
【０１３５】
ステップ３０６（Ｓ３０６）において、転記制御部１１５は、読み込み対象データを展開部１０５により展開して取得する。より詳細には、読込部１１２は、クラスタセットのデータを誤り訂正し、誤り訂正後のクラスタセットのデータを取得する。より詳細には、読込部１１２は、クラスタセットのデータ内で、メタデータとクラスタデータとを含むデータを、誤り訂正データを生成するための基のデータであるとする。また、読込部１１２は、クラスタセットのデータを誤り訂正して、誤り訂正後のクラスタセットのデータを取得する。ここで、読込部１１２は、誤り訂正を失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。
【０１３６】
より詳細には、転記制御部１１５は、読込部１１２から読み込みエラーを通知されると、転記処理後も当該クラスタを読み込むとエラーとなるように整合性を担保する処理を行う。例えば、転記制御部１１５は、読み込みエラーとなったクラスタデータを読み込みエラーとなる状態のまま転記してもよい。また、転記制御部１１５は、第１メモリ１５２が有する管理情報に対し、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を含ませ、読み込みエラーとなったクラスタデータは転記しないように構成されてもよい。
【０１３７】
読込部１１２は、誤り訂正が成功した（誤り訂正可能だった）場合には、誤り訂正後のクラスタセットのデータからクラスタデータを抽出する。読込部１１２は、抽出したクラスタデータを展開部１０５に送信し、展開部１０５に対して抽出したクラスタデータを展開するように指示する。そして、読込部１１２は、展開部１０５が展開したクラスタデータを取得する。
【０１３８】
なお、読込部１１２は、クラスタデータを展開する必要がない場合には、抽出したクラスタデータを展開部１０５に送信することなく、抽出したクラスタデータを展開されたクラスタデータと同様に処理するように構成されてもよい。例えば、クラスタデータが圧縮されずに記憶媒体１５１に記憶されていた場合、読込部１１２は、抽出したクラスタデータを展開部１０５に送信することなく、抽出したクラスタデータを展開されたクラスタデータと同様に処理する。そして、読込部１１２は、展開されたクラスタデータ（又は展開する必要がない抽出したクラスタデータ）を読み込み要求元に送信する。転記制御部１１５は、読み込み対象データを読込部１１２から受信する。
【０１３９】
ステップ３０８（Ｓ３０８）において、転記制御部１１５は、書き込み先情報を生成する。より詳細には、転記制御部１１５は、書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズの情報が示すクラスタセットのサイズ分だけずらした書き込み先情報を生成する。より詳細には、書込部１１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上オフセットの情報が含まれる。書込制御部１１３は、ページ上オフセットの情報に対し、書込部１１１に対する前回のクラスタ書き込み要求において書込部１１１から返信されたクラスタセットのサイズの情報が示すクラスタセットのサイズを加算することにより、書き込み先情報を生成する。
【０１４０】
なお、書込部１１１に対する前回のクラスタ書き込み要求において、書込部１１１に次の書き込み先情報を与えた（クラスタがページをまたがって記憶された）場合には、転記制御部１１５は、次の書き込み先情報にクラスタセットの残りのサイズ分だけずらした書き込み先情報を生成する。次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページの先頭の位置を示すページ上オフセットの情報が含まれる。転記制御部１１５は、ページ上オフセットの情報に対し、クラスタセットの残りのサイズを加算することにより、書き込み先情報を生成する。なお、図示しないホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じになる構成である場合、書込制御部１１３及び転記制御部１１５は、生成する書き込み先情報が重複しないように連携して処理を行う。
【０１４１】
転記制御部１１５は、生成した書き込み先情報と、転記対象のクラスタデータとして読込部１１２から受信したデータと、抽出した論理アドレスとを、書込部１１１に対して送信する。そして、書込制御部１１３は、書込部１１１に対して書き込み指示を行う。書込部１１１は、転記制御部１１５からクラスタの書き込み要求を受け付ける。クラスタの書き込み要求には、書き込み先情報と、書き込み対象のクラスタデータと、書き込み対象のクラスタの論理アドレスを示すデータが含まれる。書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上オフセットの情報が含まれる。
【０１４２】
ステップ３１０（Ｓ３１０）において、書込部１１１は、圧縮部１０４によってクラスタデータを（必要に応じて）圧縮する。より詳細には、書込部１１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタデータを抽出する。書込部１１１は、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信し、クラスタデータを圧縮することを圧縮部１０４に対して指示する。そして、書込部１１１は、圧縮部１０４が圧縮した書き込み対象のクラスタデータを取得する。
【０１４３】
なお、書込部１１１は、クラスタデータを圧縮する必要がない場合には、抽出した書き込み対象のクラスタデータを、圧縮部１０４に送信することなく、圧縮された書き込み対象のクラスタデータと同様に処理する（圧縮された書き込み対象のクラスタデータとみなす）ように構成されてもよい。
【０１４４】
ステップ３１２（Ｓ３１２）において、書込部１１１は、クラスタセットを生成する。より詳細には、書込部１１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタの論理アドレスを示すデータを抽出し、抽出した書き込み対象のクラスタの論理アドレスを示すデータを含むメタデータを生成する。なお、クラスタセットに含まれるメタデータを圧縮する場合は、書込部１１１は、生成したメタデータを圧縮部１０４に圧縮させ、圧縮されたメタデータを圧縮部１０４から取得し、以降、取得した圧縮されたメタデータを前記生成したメタデータに読み替えることができる。
【０１４５】
書込部１１１は、圧縮された書き込み対象のクラスタデータと、生成したメタデータを含むデータとを基にして、誤り訂正データを生成する。そして、書込部１１１は、圧縮された書き込み対象のクラスタデータと、生成したメタデータと、生成した誤り訂正データとを含むクラスタセットを生成する。
【０１４６】
ステップ３１４（Ｓ３１４）において、書込部１１１は、生成したクラスタセットがページに収まっているかを判定する。より詳細には、書込部１１１は、生成したクラスタセットのサイズを算出する。そして、書込部１１１は、書き込み先のページに生成したクラスタセットが収まるか否かを判定する。より詳細には、書込部１１１は、書き込み先情報に含まれるページ上オフセットの情報と、算出したクラスタセットのサイズとを加算した結果が、ページサイズに収まっているか否かを判定する。
【０１４７】
ステップ３１６（Ｓ３１６）において、第２メモリ１５３は、書き込み対象の複数のクラスタセットを一時記憶する。より詳細には、書込部１１１は、Ｓ３１４の処理において判定結果がＹＥＳ（書き込み先のページに収まる）の場合、生成したクラスタセットを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部１１１は、書込要求元にクラスタセットのサイズの情報を返却する。転記制御部１１５は、書込部１１１からクラスタセットのサイズを受信する。
【０１４８】
ステップ３１８（Ｓ３１８）において、書込部１１１及び転記制御部１１５は、末端処理をする。より詳細には、書込部１１１は、Ｓ３１８の処理において判定結果がＮＯ（書き込み先のページに収まらない）の場合、書き込み先のページあふれを示す応答を書込要求元に応答する。転記制御部１１５は、書込部１１１から書き込み先のページあふれを示す応答を受け取ると、ブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合には、次の書き込み先情報を書込部１１１に与える。書込部１１１は、書込要求元から次の書き込み先情報を受け付けると、生成したクラスタセットを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部１１１は、書込要求元にクラスタセットのサイズの情報を返却する。転記制御部１１５は、書込部１１１からクラスタセットのサイズを受信する。そして、Ｓ３２０の処理に進む。
【０１４９】
なお、転記制御部１１５は、ダミーデータを書き込む指示を書込部１１１に対して行うことがある。例えば、転記制御部１１５は、ブロック４００を管理する同一の管理単位内で物理アドレスが連続しない場合以外にも、適宜、ダミーデータを書き込む指示を書込部１１１に対して行ってもよい。また、書込部１１１は、書込要求元からダミーデータを記憶させる指示を受け付けると、書き込み先のページのクラスタセットを記憶していない領域のサイズ分のダミーデータを生成する。そして、書込部１１１は、生成したダミーデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に対して書き込み指示を行う。
【０１５０】
ここで、書込部１１１は、ダミーデータの代わりに、第２メモリ１５３が一時記憶しているクラスタセットの誤り訂正データを生成するように構成されてもよい。第２メモリ１５３が一時記憶しているクラスタセットの誤り訂正データを生成する場合、記憶媒体１５１が記憶するデータの信頼性を高めることが可能となる。また、第２メモリ１５３は、クラスタセットの順番を適宜入れ替えて記憶することにより、ダミーデータを記憶する量を削減するように構成されてもよい。第２メモリ１５３がダミーデータを記憶する量を削減する場合、記憶媒体１５１の利用効率を高めることが可能となる。なお、転記制御部１１５は、ダミーデータを書き込む指示を書込部１１１に与えた場合、書き込み対象のクラスタデータを書き込むために、新たな書き込み先ページを確保し、上記処理をＳ３０８からやり直す。
【０１５１】
ステップ３２０（Ｓ３２０）において、書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１ページ分以上になったか否かを判定する。書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になっていない場合（Ｓ３２０：Ｎｏ）は、Ｓ３００の処理に進む。また、書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になった場合（Ｓ３２０：Ｙｅｓ）は、Ｓ３２２の処理に進む。これは、記憶媒体１５１の入出力単位がページ４０２であるので、少なくとも１ページ分の書き込みが行われなければ、後述する管理情報の更新処理ができず、転記処理が完了しないからである。
【０１５２】
ステップ３２２（Ｓ３２２）において、書込部１１１は、記憶媒体アクセス部１０１を介して１ページ分のデータを記憶媒体１５１に書き込む。より詳細には、書込部１１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になると、第２メモリ１５３からページサイズ分のデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。そして、書込部１１１は、ページサイズ分のデータを取得する。より詳細には、書込部１１１は、第２メモリ１５３が一時記憶しているデータのうち、図３（ｂ）の左側のページに記憶されるデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行い、ページサイズ分のデータを取得する。
【０１５３】
なお、データ記憶装置１００が複数の記憶媒体１５１を備え、記憶媒体１５１に並列アクセスして速度向上を図る場合、第２メモリ１５３が一時記憶しているデータの合計サイズが並列書き込みするページ数のページ４０２のサイズ以上になると、第２メモリ１５３から並列書き込みするページ数分のサイズのデータを読み込むように、第２アクセス部１０３に対して読み込み指示を行う。
【０１５４】
そして、書込部１１１は、第２アクセス部１０３を介して取得したページサイズ分（又は並列書き込みするページ数分のサイズ）のデータを、書き込み先のページ（又は並列書き込みする各ページ）に書き込むように、記憶媒体アクセス部１０１に対して書き込み指示を行う。
【０１５５】
ここで、書き込み先のページは、図３（ｂ）の左側のページである。書込部１１１は、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号と、ページ番号を、記憶媒体アクセス部１０１に指示する。
【０１５６】
ステップ３２４（Ｓ３２４）において、転記制御部１１５は、管理情報を更新する。より詳細には、書込部１１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。ここで、書き込み先のページは、図３（ｂ）の左側のページであり、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号と、ページ番号を、書込要求元に通知する。転記制御部１１５は、書込部１１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０を更新する。より詳細には、転記制御部１１５は、当該ページに書き込まれたクラスタについて、アドレス正引きテーブル１６０における変換した論理アドレスが示す記憶媒体１５１の物理アドレスを、書き込み先の記憶媒体１５１の物理アドレスに更新するように、第１アクセス部１０２に対して書き込み指示を行う。また、転記制御部１１５は、当該ページに書き込まれたクラスタについて、書込部１１１から取得したクラスタセットのサイズの情報を、アドレス正引きテーブル１６０に書き込むように、第１アクセス部１０２に対して書き込み指示を行う（図４参照）。
【０１５７】
このように、第１の実施の形態にかかるデータ記憶装置１００によれば、圧縮部１０４が圧縮処理を行うので、外部から書き込み要求されるデータサイズの総量に対して、実際に記憶媒体１５１に書き込むデータ量を少なくすることができる。したがって、データ記憶装置１００は、データ圧縮機能を有しないデータ記憶装置よりも寿命を長くすることができる。
【０１５８】
（第２の実施の形態）
ところで、第１の実施の形態のように、ページ４０２に（圧縮した）クラスタセットを詰めて記憶すると、記憶媒体１５１の記憶効率は良いものの、データ管理の処理量が増加してしまうことがある。第２の実施の形態では、ページ４０２が記憶するクラスタセットのサイズを予め定められた単位に揃える。
【０１５９】
第２の実施の形態にかかるデータ記憶装置のコントローラは、ページが、クラスタのサイズの整数倍のサイズを備えた１つ以上の設定領域を含み、設定領域が、予め定められた複数の分割サイズに分割されており、書込制御部が、圧縮されたクラスタデータのサイズが分割サイズの整数倍になるように、圧縮されたクラスタデータにダミーデータを加え、転記制御部が、圧縮されたクラスタデータのサイズが分割サイズの整数倍になるように、圧縮されたクラスタデータにダミーデータを加えることを特徴とする。
【０１６０】
また、第２の実施の形態にかかるデータ記憶装置のコントローラは、さらに、ページが、クラスタのサイズの整数倍のサイズを備えた１つ以上の設定領域を含み、設定領域が、予め定められた複数の分割サイズに分割されており、書込制御部が、圧縮されたクラスタデータのサイズが分割サイズの整数倍になるように、圧縮されたクラスタデータにダミーデータを加え、転記制御部が、圧縮されたクラスタデータのサイズが分割サイズの整数倍になるように、圧縮されたクラスタデータにダミーデータを加え、書込制御部が、さらに、分割サイズの整数倍にされたクラスタデータのサイズが設定領域のサイズと同じになった場合、クラスタデータの圧縮を取りやめ、圧縮をとりやめたクラスタデータを書込先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと書込先の物理アドレスとの対応を記憶部に書き込むよう制御し、読込制御部が、さらに、読み込んだクラスタデータが圧縮されていない場合には、読み込んだクラスタデータを展開部に展開させずにそのまま出力するよう制御し、転記制御部が、さらに、読み込んだクラスタデータが圧縮されていない場合には、読み込んだクラスタデータを展開部に展開させないよう制御し、分割サイズの整数倍にされたクラスタデータのサイズが設定領域のサイズと同じになった場合、クラスタデータの圧縮を取りやめ、圧縮をとりやめたクラスタデータを転記先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと転記先の物理アドレスとの対応を記憶部に書き込むよう制御することを特徴とする。
【０１６１】
また、第２の実施の形態にかかるデータ記憶装置のコントローラは、さらに、記憶媒体が、複数のページからなるブロックを含み、書込制御部が、ブロックを管理する管理単位内で物理アドレスが連続する複数の設定領域にまたがってクラスタデータを記憶媒体に書き込むよう制御し、読込制御部が、ブロックを管理する管理単位内で物理アドレスが連続する複数の設定領域にまたがってクラスタデータが書き込まれている場合、連続する複数の設定領域を合わせて読込んでクラスタデータを抽出するよう制御し、転記制御部が、ブロックを管理する管理単位内で物理アドレスが連続する複数の設定領域にまたがってクラスタデータが書き込まれている場合、連続する複数の設定領域を合わせて読込んでクラスタデータを抽出するよう制御し、ブロックを管理する管理単位内で物理アドレスが連続する複数の設定領域にまたがってクラスタデータを記憶媒体に書き込むよう制御することを特徴とする。
【０１６２】
以降、より詳細な一例を説明する。まず、第２の実施の形態のデータ記憶装置の構成について説明する。なお、第１の実施の形態と同様の機能を有する構成要素については、第１の実施の形態と同様の符号が付してある。例えば、読み書き対象が第１メモリ１５２ではなく第１メモリ２５２であるだけで、そのほかの機能は第１の実施の形態と同様である構成要素についても、第１の実施の形態と同様の符号が付してある。
【０１６３】
図８は、第２の実施の形態のデータ記憶装置２００の機能構成の概要の一例を示すブロック図である。図８に示すように、データ記憶装置２００は、記憶媒体アクセス部１０１と、第１アクセス部１０２と、第２アクセス部１０３と、圧縮部１０４と、展開部１０５と、インタフェース部１０６と、コントローラ２１０と、記憶媒体２５１と、第１メモリ２５２と、第２メモリ１５３と、を有する。
【０１６４】
（記憶媒体２５１）
記憶媒体２５１は、記憶媒体１５１（図１）に対して、データの記憶フォーマットにさらに制約が加えられている。より詳細には、図９に示すように、ページ４０２には複数の記録スロットが含まれる。記録スロットのサイズは、例えば、記憶媒体１５１における圧縮されていないクラスタセット（又はクラスタデータ）のサイズと同じである。ただし、記録スロットは、他のサイズに設定されてもよい設定領域である。例えば、記録スロットのサイズは、圧縮されていないクラスタセット（又はクラスタデータ）のサイズの整数倍であってもよい。
【０１６５】
記録スロットのデータ記憶可能な領域は、予め定められた数に分割されている。記録スロットの分割数は任意である。例えば、論理アドレスで識別できるデータ（クラスタ）のサイズを１０２４バイトとし、データ記憶装置アドレスで識別できるデータ（セクタ）のサイズを５１２バイトと定める。この場合、クラスタは、記録スロットのデータ記憶可能な領域をセクタデータのサイズの５１２バイトで分割すれば２分割されることになる。
【０１６６】
例えば、記録スロットのデータ記憶可能な領域が４分割されている場合、図９に示すように、記録スロットの記憶フォーマットは、メタデータ、第１のデータ、第１の誤り訂正データ、第２のデータ、第２の誤り訂正データ、第３のデータ、第３の誤り訂正データ、第４のデータ及び第４の誤り訂正データを含む。ここで、第１の誤り訂正データを生成する基となるデータには、メタデータと、第１のデータが含まれる。第２の誤り訂正データを生成する基となるデータには、メタデータと、第２のデータが含まれる。第３の誤り訂正データを生成する基となるデータには、メタデータと、第３のデータが含まれる。第４の誤り訂正データを生成する基となるデータには、メタデータと、第４のデータが含まれる。以下、記録スロットを４分割する場合を例に説明するが、記録スロットの分割数はいくつであってもよい。
【０１６７】
一方、クラスタを圧縮して記憶する場合は、圧縮後のデータのサイズを分割したサイズの整数倍のサイズに揃える。ここで、分割したサイズとは、図９における第１〜第４のデータの記憶領域に相当する。つまり、メタデータや第１〜第４の誤り訂正データの記憶領域は含まれない。より詳細には、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータを分割したサイズの整数倍のサイズに揃える。なお、圧縮対象のクラスタのメタデータは、圧縮されていても圧縮されていなくてもよい。
【０１６８】
圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータが、分割したサイズ（の１倍）以下となった場合、図１０（ａ）に示すように、分割したサイズ（の１倍）の領域から、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータの領域を除いた残りの領域には、ダミーデータを記憶することにより、データのサイズを分割したサイズの整数倍に揃える。なお、ダミーデータは、予め定められた値（例えば全て０）でもよいし、ランダムな値でもよい。また、ダミーデータは、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータを生成の基とした誤り訂正データでもよい。ダミーデータを誤り訂正データとした場合には、記憶データの信頼性が向上するという効果を奏する。
【０１６９】
第２の実施の形態では、前述したようにクラスタデータ（記録スロット）を４分割した場合を例に説明している。そして、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの２倍以下となった場合は、図１０（ｂ）に示すように、分割したサイズの整数倍にデータのサイズを揃える。また、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの３倍以下となった場合は、図１０（ｃ）に示すように、分割したサイズの整数倍にデータのサイズを揃える。なお、データのサイズは、分割したサイズの整数倍に限られず、２の倍数のサイズなど、他のサイズに揃えられてもよい。
【０１７０】
ここで、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの４倍以下、すなわち、圧縮しないクラスタデータのサイズ以下となった場合は、次のいずれかのようにデータのサイズを揃えてもよい。例えば、図１０（ｄ）に示すように、データのサイズを図１０（ａ）〜（ｃ）と同様に分割したサイズの整数倍のサイズに揃えてもよい。また、クラスタデータを圧縮せずに、図９に示されるページ４０２に複数含まれる記録スロットに対し、データをそのまま記憶してもよい。
【０１７１】
クラスタデータを圧縮して記憶し、分割したサイズの整数倍のサイズに揃えることの利点は、例えば、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータを生成の基とした誤り訂正データをダミーデータとし、記憶データの信頼性を向上させることがあげられる。また、後述するように、同一ページ内の隣接する記録スロットにまたがってクラスタを記憶したり、ブロック４００を管理する管理単位をまたがない範囲（例えば同一のブロック４００内）で、物理アドレスが連続する場合に限り、ページをまたいでデータを記憶できる。したがって、第２の実施の形態によれば、記憶媒体２５１の記憶効率が向上させることができ、データ記憶装置２００の寿命を延ばすことができるという効果を奏する。
【０１７２】
一方、クラスタデータを圧縮せずに記憶することの利点としては、例えば、書き込み時の圧縮処理にかかる処理時間や、読み込み時の展開処理にかかる処理時間を削減することが可能となることがあげられる。また、圧縮したクラスタは、図３（ｂ）に示したページにまたがって記憶されることと同様に、図１１（ａ）に示した同一ページ内の隣接する記録スロットにまたがって記憶されてもよい。また、圧縮したクラスタは、図１１（ｂ）に示すように、ブロック４００を管理する管理単位をまたがない範囲で、物理アドレスが連続する場合に限り、ページ４０２をまたいで記憶されてもよい。なお、図１１では、説明を簡単にするために、記録スロットのメタデータや誤り訂正データの記憶領域は記載していない。
【０１７３】
また、ページ４０２は、クラスタデータを圧縮して記憶する場合、記録スロットの記憶フォーマットのうちのメタデータの領域に、圧縮して記憶されたクラスタの配置パターンを示す特殊な値（マジックナンバー）を示すデータを記憶する。
【０１７４】
第２の実施の形態では、前述したようにクラスタデータを４分割した場合を例に説明している。この場合、ページ４０２は、記録スロットにおいて例えば図１２に示した８個のパターンを示すマジックナンバーを記憶する。これにより、記録スロットにクラスタデータを圧縮せずに記憶した場合と、記録スロットにクラスタデータを圧縮して記憶した場合との区別が可能になる。
【０１７５】
なお、図１２（ａ）〜（ｈ）の各パターンは、記録スロットの先頭または末尾に記憶されているクラスタにおいては、図１１（ａ）、（ｂ）に示すように、同一ページ内の隣接する記録スロットにまたがって記憶されたものの一部である場合、又はページ４０２をまたいで記憶されたものの一部である場合がある。したがって、記録スロットは、マジックナンバーにこれらの状況を示すパターンをさらに追加することにより、処理を簡単にする構成にされてもよい。
【０１７６】
（第１メモリ２５２）
第１メモリ２５２（図８）は、管理情報には、アドレス正引きテーブル１６２が含まれる。アドレス正引きテーブル１６２は、クラスタの論理アドレスと、この論理アドレスが指し示すデータが格納されている記憶媒体１５１の物理アドレスとを対応付けたテーブルである。また、第１メモリ２５２は、データ記憶装置２００が行う様々な処理を簡単にするために、アドレス正引きテーブル１６２含む情報から導出される情報を予め記憶するように構成されてもよい。
【０１７７】
アドレス正引きテーブル１６２は、クラスタの論理アドレスと、論理アドレスのデータが格納されている記憶媒体２５１の物理アドレスの対応付けを管理する。ここで、論理アドレスを昇順に並べたものを表のインデックスとするのは、第１メモリ１５２が有するアドレス正引きテーブル１６０と同様である。図１３に示すように、アドレス正引きテーブル１６２は、表の要素として、記憶媒体２５１の物理アドレスであるブロック番号情報と、ページ番号情報と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報の組を含む。また、アドレス正引きテーブル１６２は、アドレス正引きテーブル１６０が記憶するクラスタセットのサイズの情報に代えて、分割したサイズの何倍であるかを示す情報を含む。
【０１７８】
なお、図１１（ａ）に示した同一ページ内の隣接する記録スロットの場合や、図１１（ｂ）に示したブロック４００を管理する管理単位をまたがない範囲で物理アドレスが連続する場合は、第１の実施の形態の第１メモリ１５２と同様に処理される。また、記憶媒体２５１が複数設けられて並列アクセスされる場合のアドレス正引きテーブル１６２の構成も、第１の実施の形態の第１メモリ１５２で説明した考え方と同様である。
【０１７９】
コントローラ２１０（図８）は、書込部２１１と、読込部２１２と、書込制御部２１３と、読込制御部２１４と、転記制御部２１５と、を有する。
【０１８０】
（書込部２１１）
書込部２１１は、書込制御部２１３（又は転記制御部２１５）からクラスタの書き込み要求を受け付ける。クラスタの書き込み要求には、書き込み先情報と、書き込み対象のクラスタデータと、書き込み対象のクラスタの論理アドレスを示すデータが含まれる。書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報が含まれる。
【０１８１】
書込部２１１が、クラスタデータを圧縮する手順は書込部１１１と同様である。具体的には、書込部２１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタデータを抽出する。書込部２１１は、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信し、クラスタデータを圧縮することを圧縮部１０４に対して指示する。そして、書込部２１１は、圧縮部１０４が圧縮した書き込み対象のクラスタデータを取得する。
【０１８２】
書込部２１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタの論理アドレスを示すデータを抽出し、抽出した書き込み対象のクラスタの論理アドレスを示すデータを含むメタデータを生成する。なお、クラスタセットに含まれるメタデータを圧縮する場合は、書込部２１１は、圧縮されたメタデータをメタデータと同様に扱う。
【０１８３】
書込部２１１は、生成したメタデータと、圧縮されたクラスタデータとを合わせたデータを、分割したサイズの整数倍のサイズに揃える。より詳細には、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの整数倍以下となった場合、分割したサイズの整数倍の領域から、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータの領域を除いた残りの領域分のダミーデータを生成する。なお、ダミーデータとしては、予め定められた値（例えば全て０）でもよいし、ランダムな値でもよい。また、ダミーデータは、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータを生成の基にした誤り訂正データでもよい。ダミーデータを誤り訂正データとした場合には、記憶データの信頼性が向上するという効果を奏する。揃え方の具体例は、前述の記憶媒体２５１で説明したとおりである。
【０１８４】
書込部２１１は、書き込み先の記録スロットに、分割したサイズの整数倍のサイズに揃えたデータが収まるか判定する。より詳細には、書き込み先情報に含まれる記録スロット上オフセットの情報に、分割したサイズの整数倍のサイズを加算した結果が、当該記録スロットに収まっているかを判定すればよい。
【０１８５】
書込部２１１は、判定結果がＹＥＳ（書き込み先の記録スロットに収まる）の場合、分割したサイズの整数倍のサイズに揃えたデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示を行う。また、書込部２１１は、書込要求元に分割したサイズの整数倍のサイズに揃えたデータが分割したサイズの何倍であるかを示す情報を返却する。
【０１８６】
書込部２１１は、判定結果がＮＯ（書き込み先の記録スロットに収まらない）の場合、書き込み先の記録スロットあふれを示す応答を、書込要求元に応答する。書込部２１１は、書込要求元から次の書き込み先情報を受け付けると、第２メモリ１５３が分割したサイズの整数倍のサイズに揃えたデータを一時記憶するように、第２アクセス部１０３に書き込み指示を行う。また、書込部２１１は、書込要求元に分割したサイズの整数倍のサイズに揃えたデータが分割したサイズの何倍であるかを示す情報を返却する。
【０１８７】
書込部２１１は、書込要求元からダミーデータを記憶させる指示を受け付けると、書き込み先の記録スロットの残りの領域のサイズ分のダミーデータを生成する。書込部２１１は、生成したダミーデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示を行う。ここで、書込部２１１は、ダミーデータの代わりに第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータの誤り訂正データを生成してもよい。書込部２１１は、第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータの誤り訂正データを利用することで、データの信頼性を高めてもよい。また、書込部２１１は、分割したサイズの整数倍のサイズに揃えたデータの順番を適宜入れ替えてダミーデータを記憶する量を削減し、記憶媒体２５１の利用効率を高めてもよい。書込部２１１は、記録スロット分のデータがそろうまで、上述した処理を繰り返す。
【０１８８】
書込部２１１は、１記録スロット分のデータが揃うと、記録スロットの記憶フォーマットのうちのメタデータとして、圧縮して記憶されるクラスタの配置パターンを示す特殊な値（マジックナンバー）を示すデータを生成する。また、記録スロットの記憶フォーマットのうち誤り訂正データを生成する。より詳細には、例えば、クラスタデータが４分割されている場合、図９に示すように、第１の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第１のデータが含まれる。第２の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第２のデータが含まれる。第３の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第３のデータが含まれる。第４の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第４のデータが含まれる。
【０１８９】
書込部２１１は、生成したマジックナンバーを示すデータであるメタデータと、第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータと、生成した誤り訂正データとを記録スロットのデータとして一時記憶するように、第２アクセス部１０３に書き込みする指示を行う。なお、書込部２１１は、圧縮してもデータサイズが小さくならないなどの圧縮の必要性がない場合などには、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信せずに、ページ４０２に複数含まれる記録スロットにそのまま当該クラスタのデータを記憶してもよい。書込部２１１は、書き込むデータが１ページ分になるまで、上記の処理を繰り返す。
【０１９０】
書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になったら、第２メモリ１５３が一時記憶しているデータのうち、ページサイズ分のデータを読み込むように第２アクセス部１０３に読み込みの指示を行ってページサイズ分のデータを取得する。ここで、書込部２１１は、書き込み先のページとして、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号と、ページ番号とを記憶媒体アクセス部１０１に指示する。そして、書込部２１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。
【０１９１】
第２の実施の形態では、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とを、異ならせた構成となっている。このため、書込要求元が転記制御部２１５であった場合も、上述した書込要求元が書込制御部２１３の場合の処理と同様の処理を、別の書き込み先のページに対して実施する。なお、データ記憶装置２００は、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とを、同じにする構成であってもよい。この場合、書込制御部２１３から書き込み要求されても、転記制御部２１５から書き込み要求されても、同一の書き込み先のページに対して上述した処理を実施する。
【０１９２】
（読込部２１２）
読込部２１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報と、分割したサイズの何倍であるかを示す情報とが含まれる。なお、当該読み込み対象のクラスタが記録スロットをまたがって記憶されている場合や、ページをまたがって記憶されている場合は、読込部２１２は、連続する読み込み先記録スロットの情報をあわせて受け付ける。連続する読み込み先記録スロットの情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報が含まれる。
【０１９３】
読込部２１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００の、ページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示して当該ページのデータを取得する。当該読み込み対象のクラスタが記録スロットやページをまたがって記憶されている場合は、読込部２１２は、取得した連続する読み込み先ページの情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００に含まれるページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示して当該ページのデータをさらに取得する。なお、同一ページの隣接する記録スロットの場合には、記憶媒体２５１からの読み込みがページ４０２単位であるので、読込部２１２は、１回の読み込み処理で記憶媒体２５１から読み込むことができる。したがって、同一ページの隣接する記録スロットにまたがってクラスタが記憶されている場合には、読込部２１２は、１つの読み込み処理でまとめて読込んでもよい。
【０１９４】
また、読込部２１２は、取得した読み込み先情報から、ページ上記録スロットフセット情報と、記録スロットフセット情報と、分割したサイズの何倍であるかを示す情報を抽出する。読込部２１２は、取得したページのデータのうち、抽出したページ上記録スロットフセット情報と、記録スロットフセットの情報と、分割したサイズの何倍であるかを示す情報が示す位置から、当該記録スロットのメタデータと、分割したサイズの整数倍のサイズに揃えたデータと、当該データの誤り訂正データを抽出する。当該読み込み対象のクラスタが記録スロットやページをまたがって記憶されている場合は、当該クラスタに対する残りのデータを、連続する記録スロットの先頭の位置から抽出し、あわせて、当該クラスタに対するデータとする。
【０１９５】
読込部２１２は、抽出した誤り訂正データを用いて、抽出した誤り訂正対象データを誤り訂正し、誤り訂正後のデータを取得する。より詳細には、読込部２１２は、抽出したデータのうち、当該記録スロットのメタデータと、分割したサイズの整数倍のサイズに揃えたデータを含むデータを、誤り訂正データを生成する基のデータであるとする。そして、読込部２１２は、抽出したデータのうち、誤り訂正データによって誤り訂正し、誤り訂正後のデータを取得する。
【０１９６】
読込部２１２は、誤り訂正が失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。また、読込部２１２は、誤り訂正が成功した（誤り訂正可能だった）場合は、誤り訂正後のデータからクラスタデータを抽出する。読込部２１２は、抽出したクラスタデータを展開部１０５に送信し、展開部１０５に対して展開指示を行う。そして、読込部２１２は、展開されたクラスタデータを取得する。
【０１９７】
なお、読込部２１２は、誤り訂正後のデータから抽出したクラスタデータが圧縮されていない場合などには、クラスタデータを展開部１０５に送信しない。読込部２１２は、取得した展開されたクラスタデータを、読み込み要求元に送信する。
【０１９８】
（書込制御部２１３）
書込制御部２１３は、インタフェース部１０６から書き込み命令を受け取ると、受け取った書き込み命令から、データ記憶装置アドレス情報及び書き込みデータを抽出する。そして、書込制御部２１３は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。また、書込制御部２１３は、書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報に応じて、記録スロット上オフセット分だけずらした書き込み先情報を生成する。
【０１９９】
書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報が含まれる。このうち、記録スロット上オフセットの情報に、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報が示す分のオフセットを加算することで、当該書き込み先情報を生成する。
【０２００】
なお、書込部２１１に対する前回のクラスタ書き込み要求において、書込部２１１に次の書き込み先情報を与えた（クラスタが記録スロットまたはページをまたがって記憶された）場合は、次の書き込み先情報に分割したサイズの何倍であるかの残りの分だけずらした書き込み先情報を生成する。より詳細には、次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロットの先頭の位置を示す記録スロット上オフセット情報が含まれる。書込部２１１は、記録スロット上オフセット情報に、分割したサイズの何倍であるかの残りの分のオフセットを加算することで、当該書き込み先情報を生成する。
【０２０１】
なお、データ記憶装置２００は、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じである構成の場合、書込制御部２１３と転記制御部２１５とが、生成する書き込み先情報が重複しないように連携して処理を行う。
【０２０２】
書込制御部２１３は、生成した書き込み先情報と、書き込み対象のクラスタデータとして抽出した書き込みデータと、書き込み対象のクラスタの論理アドレスとして変換した論理アドレスとを、書込部２１１に対して送信し、書込部２１１に書き込みを指示する。
【０２０３】
書込制御部２１３は、書込部２１１から書き込み先の記録スロットのあふれを示す応答を受け取ると、同一ページ内の隣接する記録スロットであるか、ブロック４００を管理する管理単位をまたがない範囲で、物理アドレスが連続する場合、次の書き込み先情報を書込部１１１に与える。
【０２０４】
なお、書込制御部２１３は、ダミーデータの記憶の指示を書込部２１１に与えることがある。同一ページ内の隣接する記録スロットであるか、ブロック４００を管理する管理単位をまたがない範囲で、物理アドレスが連続する場合以外の場合は、書込制御部２１３は、ダミーデータ記憶指示を書込部２１１に与える。書込制御部２１３は、ダミーデータ記憶指示を書込部２１１に与えた場合、当該書き込み対象のクラスタデータを書き込むために、新たな書き込み先記録スロットを確保し、上記処理を始めからやり直す。
【０２０５】
書込制御部２１３は、書込部２１１から分割したサイズの何倍であるかを示す情報を受信する。書込制御部２１３は、書込部２１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２を更新する。より詳細には、書込制御部２１３は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２における、変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に書き込み指示する。
【０２０６】
また、書込制御部２１３は、当該ページに書き込まれたクラスタに対して、書込部２１１から取得した分割したサイズの何倍であるかを示す情報を、アドレス正引きテーブル１６２に書き込むように、第１アクセス部１０２に対して書き込み指示する。
【０２０７】
（読込制御部２１４）
読込制御部２１４は、インタフェース部１０６から読み込み命令を受け取ると、受け取った読み込み命令からデータ記憶装置アドレス情報を抽出する。読込制御部２１４は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。読込制御部２１４は、変換した論理アドレスに対応付けられている情報を取得する。より詳細には、読込制御部２１４は、アドレス正引きテーブル１６２における変換した論理アドレスが示す記憶媒体２５１の物理アドレスと、分割したサイズの何倍であるかを示す情報を読み込むように、第１アクセス部１０２に対して読み込みする指示を行う。そして、読込制御部２１４は、物理アドレスと、分割したサイズの何倍であるかを示す情報を取得する。
【０２０８】
読込制御部２１４は、取得した物理アドレスに含まれるページ上記録スロットフセット情報と、記録スロット上オフセット情報と、取得した分割したサイズの何倍であるかを示す情報から、当該クラスタが同一ページ内の隣接する記録スロット、又は、ページをまたがって記憶されているかを判断する。読込制御部２１４は、判断結果がＹＥＳ（クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されている）の場合は、読込制御部２１４は、連続する読み込み先記録スロットの情報を生成する。より詳細には、連続する読み込み先記録スロットの情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報が含まれるが、ページ内の隣接する記録スロットにまたがって記憶されている場合は、このうち、ブロック番号と、ページ番号には、取得した物理アドレスに含まれるブロック番号と、ページ番号が設定され、ページ上記録スロットフセット情報には、連続する情報が設定される。また、クラスタがページをまたがって記憶されている場合は、ブロック番号には取得した物理アドレスに含まれるブロック番号が設定され、ページ番号には、連続する番号が設定され、ページ上記録スロットフセット情報には、先頭の位置を示す情報が設定される。
【０２０９】
読込制御部２１４は、取得した物理アドレスと、取得した分割したサイズの何倍かであるかを示す情報とを、読み込み先情報として、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部２１２に読み込み指示する。なお、読み込み対象クラスタが同一ページ内の隣接する記録スロット、または、ページをまたがって記憶されている場合は、読込制御部２１４は、読込部２１２に対して、生成した連続する読み込み先記録スロットの情報を合わせて送信する。なお、同一ページの隣接する記録スロットの場合は、記憶媒体２５１からの読み込みはページ４０２単位であるので、１回の読み込み処理で記憶媒体２５１から読み込める。したがって、読込制御部２１４は、連続する読み込み先の記録スロットの情報の読み込みを一つの読み込み処理にまとめてもよい。
【０２１０】
読込制御部２１４は、読込部２１２から読み込みエラーを通知されると、読み込みエラーを示すデータをインタフェース部１０６に送信する。なお、第１メモリ２５２は、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を管理情報としてさらに記憶してもよい。このようにすることで、再度同じ論理アドレスに対して読み込み要求されたときに、すばやく読み込みエラーを返却することができる。読込制御部２１４は、読込部２１２が読み込んだデータを受信すると、受信したデータをインタフェース部１０６に送信する。
【０２１１】
（転記制御部２１５）
転記制御部２１５は、予め定められた規則に従って、以下に述べる転記処理の制御をおこなう。まず、転記制御部２１５は、転記するクラスタを決定する。より詳細には、転記制御部２１５は、第１メモリ２５２から管理情報を読み込むように第１アクセス部１０２に対して読み込みの指示を行い、管理情報を取得する。転記制御部２１５は、予め定められた規則に従って、取得した管理情報から転記するクラスタを決定する。転記するクラスタの決定は、任意の公知の規則に従って行われてもよい。
【０２１２】
転記制御部２１５は、決定したクラスタの論理アドレスを取得した管理情報から抽出する。そして、転記制御部２１５は、転記するクラスタのデータを読み込む。より詳細には、転記制御部２１５は、抽出した論理アドレスに対応付けられている情報を取得する。転記制御部２１５は、アドレス正引きテーブル１６２における変換した論理アドレスが示す記憶媒体１５１の物理アドレスと、分割したサイズの何倍であるかを示す情報を読み込むように、第１アクセス部１０２に読み込みを指示する。そして、転記制御部２１５は、物理アドレスと、分割したサイズの何倍であるかを示す情報を取得する。
【０２１３】
転記制御部２１５は、取得した物理アドレスに含まれるページ上記録スロットフセット情報と、記録スロット上オフセット情報と、取得した分割したサイズの何倍であるかを示す情報から、当該クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されているか否かを判断する。転記制御部２１５は、判断結果がＹＥＳ（同一ページ内の隣接する記録スロット、又はページをまたがって記憶されている）の場合は、連続する読み込み先の記録スロットの情報を生成する。より詳細には、連続する読み込み先記録スロットの情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報が含まれる。クラスタがページ内の隣接する記録スロットにまたがって記憶されている場合は、ブロック番号には、前記取得した物理アドレスに含まれるブロック番号が設定される。ページ番号には、取得した物理アドレスに含まれるページ番号が設定される。
【０２１４】
ページ上記録スロットフセット情報には、連続する情報が設定される。また、クラスタがページをまたがって記憶されている場合は、ブロック番号に対して、取得した物理アドレスに含まれるブロック番号が設定される。ページ番号には、連続する番号が設定され、ページ上記録スロットフセット情報には、先頭の位置を示す情報が設定される。
【０２１５】
転記制御部２１５は、取得した物理アドレスと、取得した分割したサイズの何倍かであるかを示す情報とを、読み込み先情報として、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部２１２に対して読み込みを指示する。なお、読み込み対象クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されている場合、転記制御部２１５は、読込部２１２に対して、生成した連続する読み込み先記録スロットの情報を合わせて送信する。なお、クラスタが同一ページの隣接する記録スロットに書き込まれている場合は、記憶媒体２５１からの読み込みがページ４０２単位であるため、１回の読み込み処理で記憶媒体２５１からクラスタを読み込める。したがって、読み込み対象クラスタが同一ページ内の隣接する記録スロットをまたがって記憶されている場合は、クラスタの読込処理を１つの読み込み処理にまとめてもよい。
【０２１６】
転記制御部２１５は、読込部２１２から読み込みエラーを通知されると、転記処理後も当該クラスタを読み込むとエラーとなるように整合性を担保する処理をする。例えば、読み込みエラーとなったクラスタデータを読み込みエラーとなる状態のまま転記してもよいし、第１メモリ２５２が有する管理情報において、該論理アドレスを読み込むと読み込みエラーとなる旨の情報を記憶しておき、読み込みエラーとなったクラスタデータは転記しないようにしてもよい。
【０２１７】
転記制御部２１５は、読込部２１２から読み込んだデータを受信する。転記制御部２１５は、転記するクラスタを書き込む。より詳細には、転記制御部２１５は、書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報が示す記録スロット上オフセット分だけずらした書き込み先情報を生成する。書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報が含まれる。また、転記制御部２１５は、記録スロット上オフセットの情報に対し、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報が示す分のオフセットを加算することにより、当該書き込み先情報を生成する。
【０２１８】
なお、書込部２１１に対する前回のクラスタ書き込み要求において、書込部２１１に次の書き込み先情報を与えた（クラスタが記録スロットまたはページをまたがって記憶された）場合は、次の書き込み先情報に分割したサイズの何倍であるかの残りの分だけずらした書き込み先情報を生成する。より詳細には、次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロットの先頭の位置を示す記録スロット上オフセット情報が含まれる。書込部２１１は、記録スロット上オフセット情報に対し、分割したサイズの何倍であるかの残りの分のオフセットを加算することにより、当該書き込み先情報を生成する。
【０２１９】
なお、図示しないホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じである場合、書込制御部２１３及び転記制御部２１５は、生成する書き込み先情報が重複しないように、連携して処理を行う。
【０２２０】
転記制御部２１５は、生成した書き込み先情報と、書き込み対象のクラスタデータとして抽出した書き込みデータと、書き込み対象のクラスタの論理アドレスとして変換した論理アドレスとを書込部２１１に送信し、書込部２１１に書き込みを指示する。
【０２２１】
転記制御部２１５は、書込部２１１から書き込み先の記録スロットのあふれを示す応答を受け取ると、同一ページ内の隣接する記録スロットであるか、ブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合、次の書き込み先情報を書込部２１１に与える。なお、転記制御部２１５は、データサイズを揃えるために、ダミーデータを記憶する指示を書込部２１１に与える構成であってもよい。例えば、クラスタが同一ページ内の隣接する記録スロットに書き込まれている場合、又はブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合以外には、転記制御部２１５は、ダミーデータを記憶する指示を書込部２１１に与える。なお、転記制御部２１５は、ダミーデータを記憶する指示を書込部２１１に与えた場合、当該書き込み対象のクラスタデータを書き込むために、新たな書き込み先記録スロットを確保し、上記書き込み処理を始めからやり直す。そして、転記制御部２１５は、書込部２１１から分割したサイズの何倍であるかを示す情報を受信する。
【０２２２】
転記制御部２１５は、書込部２１１への書き込み要求が、書き込みデータを圧縮した結果、少なくとも１ページ分になるまで上記処理を繰り返す。これは、記憶媒体２５１の入出力単位がページ４０２であるので、少なくとも１ページ分の書き込みが行われなければ、後述する管理情報の更新処理ができず、転記処理が完了しないからである。
【０２２３】
そして、転記制御部２１５は、転記したクラスタの管理情報を更新する。より詳細には、転記制御部２１５は、書込部２１１から書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２を更新する。転記制御部２１５は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に対して書き込みを指示する。
【０２２４】
また、転記制御部２１５は、当該ページに書き込まれたクラスタに対して、書込部２１１から取得した分割したサイズの何倍であるかを示す情報を、アドレス正引きテーブル１６２に書き込むように、第１アクセス部１０２に書き込みを指示する。転記制御部２１５は、予め定められた規則に従って上記処理を繰り返す。
【０２２５】
次に、第２の実施の形態のデータ記憶装置２００の動作について説明する。まず、図示しないホスト装置からの書き込み命令に応じて、データ記憶装置２００が行う書き込み処理の手順について、図１４を参照して説明する。図１４は、データ記憶装置２００が行う書き込み処理の手順の一例を示すフローチャートである。
【０２２６】
（書き込み処理）
ステップ４００（Ｓ４００）において、データ記憶装置２００は、外部のホスト装置（図示せず）などから書き込み命令を受け付ける。より詳細には、インタフェース部１０６は、図示しないホスト装置から、書き込み命令及び読み込み命令を含む命令を受け付ける。書き込み命令には、データ記憶装置アドレス情報及び書き込みデータが含まれる。読み込み命令には、データ記憶装置アドレス情報が含まれる。データ記憶装置アドレス情報は、データ記憶装置１００が図示しないホスト装置に対して提供するアドレス情報である。
【０２２７】
例えば、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤのデータ記憶装置アドレス情報の例として、ＬＢＡ（Logical  Block  Address）がある。ＬＢＡで特定されるデータのサイズは、例えば、５１２バイトのように定められている。データ記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータ（クラスタ）のサイズとは、前述したように一般に異なっている。しかし、データ記憶装置アドレスと論理アドレスは相互に変換可能である。例えば、データ記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレスが１０２４バイトごとに割り当てられている場合、データ記憶装置アドレス情報を２で除算して商を求めることにより、データ記憶装置アドレス情報を論理アドレスに変換することができる。第２の実施の形態では、説明の簡単化のために、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが同じである場合を例に説明する。ただし、これに限定されることなく、データ記憶装置２００は、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが異なるものであってもよい。
【０２２８】
インタフェース部１０６は、受け付けた命令が書き込み命令であった場合、書込制御部２１３に受け付けた書き込み命令を転送する。
【０２２９】
ステップ４０２（Ｓ４０２）において、書込制御部１１３は、書き込み先情報を生成する。より詳細には、書込制御部２１３は、インタフェース部１０６から書き込み命令を受け取ると、受け取った書き込み命令から、データ記憶装置アドレス情報及び書き込みデータを抽出する。そして、書込制御部２１３は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。また、書込制御部２１３は、書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報が示す記録スロット上オフセット分だけずらした書き込み先情報を生成する。
【０２３０】
より詳細には、書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報が含まれる。このうち、記録スロット上オフセットの情報に、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報が示す分のオフセットを加算することで、当該書き込み先情報を生成する。
【０２３１】
なお、書込部２１１に対する前回のクラスタ書き込み要求において、書込部２１１に次の書き込み先情報を与えた（クラスタが記録スロットまたはページをまたがって記憶された）場合は、次の書き込み先情報に分割したサイズの何倍であるかの残りの分だけずらした書き込み先情報を生成する。より詳細には、次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロットの先頭の位置を示す記録スロット上オフセット情報が含まれる。書込部２１１は、記録スロット上オフセット情報に、分割したサイズの何倍であるかの残りの分のオフセットを加算することで、当該書き込み先情報を生成する。なお、データ記憶装置２００は、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じである構成の場合、書込制御部２１３と転記制御部２１５とが、生成する書き込み先情報が重複しないように連携して処理を行う。書込制御部２１３は、生成した書き込み先情報と、書き込み対象のクラスタデータとして抽出した書き込みデータと、書き込み対象のクラスタの論理アドレスとして変換した論理アドレスとを、書込部２１１に対して送信し、書込部２１１に書き込みを指示する。
【０２３２】
書込部２１１は、書込制御部２１３からクラスタの書き込み要求を受け付ける。
クラスタの書き込み要求には、書き込み先情報と、書き込み対象のクラスタデータと、書き込み対象のクラスタの論理アドレスを示すデータが含まれる。書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報が含まれる。
【０２３３】
ステップ４０４（Ｓ４０４）において、書込部２１１は、（必要に応じて）圧縮部１０４に対して圧縮する指示を送信する。書込部２１１がクラスタデータを圧縮する手順は書込部１１１と同様である。具体的には、書込部２１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタデータを抽出する。書込部２１１は、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信し、クラスタデータを圧縮することを圧縮部１０４に対して指示する。そして、書込部２１１は、圧縮部１０４が圧縮した書き込み対象のクラスタデータを取得する。
【０２３４】
書込部２１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタの論理アドレスを示すデータを抽出し、抽出した書き込み対象のクラスタの論理アドレスを示すデータを含むメタデータを生成する。なお、クラスタセットに含まれるメタデータを圧縮する場合は、書込部２１１は、圧縮されたメタデータをメタデータと同様に扱う。
【０２３５】
ステップ４０６（Ｓ４０６）において、書込部２１１は、クラスタデータのサイズを分割したサイズの整数倍に揃える。より詳細には、書込部２１１は、生成したメタデータと、圧縮されたクラスタデータとを合わせたデータを分割したサイズの整数倍のサイズに揃える。
【０２３６】
より詳細には、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの整数倍以下となった場合、分割したサイズの整数倍の領域から、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータの領域を除いた残りの領域分のダミーデータを生成する。なお、ダミーデータとしては、予め定められた値（例えば全て０）でもよいし、ランダムな値でもよい。また、ダミーデータは、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータを生成の基にした誤り訂正データでもよい。ダミーデータを誤り訂正データとした場合には、記憶データの信頼性が向上するという効果を奏する。
【０２３７】
具体的には、第２の実施形態では、前述したようにクラスタデータが４分割されている場合について記載している。書込部２１１は、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータが、分割したサイズ（の１倍）以下となった場合、図１０（ａ）に示すように、分割したサイズ（の１倍）の領域から、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータの領域を除いた残りの領域には、ダミーデータを記憶することにより、データのサイズを分割したサイズの整数倍に揃える。
【０２３８】
同様に、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの２倍以下となった場合は、図１０（ｂ）に示すように、分割したサイズの整数倍にデータのサイズを揃える。また、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの３倍以下となった場合は、図１０（ｃ）に示すように、分割したサイズの整数倍にデータのサイズを揃える。なお、データのサイズは、分割したサイズの整数倍に限られず、２の倍数のサイズなど、他のサイズに揃えられてもよい。
【０２３９】
ここで、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの４倍以下、すなわち、圧縮しないクラスタデータのサイズ以下となった場合は、次のいずれかのようにデータのサイズを揃えてもよい。例えば、図１０（ｄ）に示すように、データのサイズを図１０（ａ）〜（ｃ）と同様に分割したサイズの整数倍のサイズに揃えてもよい。また、クラスタデータを圧縮せずに、図９に示されるページ４０２に複数含まれる記録スロットに対し、データをそのまま記憶してもよい。
【０２４０】
クラスタデータを圧縮して記憶し、分割したサイズの整数倍のサイズに揃えることの利点は、例えば、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータを生成の基とした誤り訂正データをダミーデータとし、記憶データの信頼性を向上させることがあげられる。また、後述するように、同一ページ内の隣接する記録スロットにまたがってクラスタを記憶したり、ブロック４００を管理する管理単位をまたがない範囲（例えば同一のブロック４００内）で、物理アドレスが連続する場合に限り、ページをまたいでデータを記憶できる。したがって、第２の実施の形態によれば、記憶媒体２５１の記憶効率が向上させることができ、データ記憶装置２００の寿命を延ばすことができるという効果を奏する。
【０２４１】
一方、クラスタデータを圧縮せずに記憶することの利点としては、例えば、書き込み時の圧縮処理にかかる処理時間や、読み込み時の展開処理にかかる処理時間を削減することが可能となることがあげられる。また、圧縮したクラスタは、図３（ｂ）に示したページにまたがって記憶されることと同様に、図１１（ａ）に示した同一ページ内の隣接する記録スロットにまたがって記憶されてもよい。また、圧縮したクラスタは、図１１（ｂ）に示すように、ブロック４００を管理する管理単位をまたがない範囲で、物理アドレスが連続する場合に限り、ページ４０２をまたいで記憶されてもよい。なお、図１１では、説明を簡単にするために、記録スロットのメタデータや誤り訂正データの記憶領域は記載していない。
【０２４２】
ステップ４０８（Ｓ４０８）において、書込部２１１は、記録スロットに生成したクラスタセットが収まっているかを判定する。より詳細には、書込部２１１は、書き込み先の記録スロットに対し、分割したサイズの整数倍のサイズに揃えたデータが収まるか否かを判定する。具体的には、書込部２１１は、書き込み先情報に含まれる記録スロット上オフセットの情報に対し、分割したサイズの整数倍のサイズを加算した結果が、当該記録スロットに収まっているかを判定する。
【０２４３】
ステップ４１０（Ｓ４１０）において、第２メモリ１５３は、整数倍のサイズに揃えたデータを一時記憶する。より詳細には、書込部２１１は、Ｓ４０８の処理において判定結果がＹＥＳ（書き込み先の記録スロットに収まる）の場合、分割したサイズの整数倍のサイズに揃えたデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部２１１は、書込要求元に分割したサイズの整数倍のサイズに揃えたデータが分割したサイズの何倍であるかを示す情報を返却する。書込制御部２１３は、書込部２１１から分割したサイズの何倍であるかを示す情報を受信する。
【０２４４】
ステップ４１２（Ｓ４１２）において、書込部２１１及び書込制御部２１３は、末端処理をする。より詳細には、書込部２１１は、Ｓ４０８の処理において判定結果がＮＯ（書き込み先の記録スロットに収まらない）の場合、書き込み先の記録スロットあふれを示す応答を書込要求元に応答する。書込制御部２１３は、書込部２１１から書き込み先の記録スロットあふれを示す応答を受け取ると、同一ページ内の隣接する記録スロットであるか、ブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合、次の書き込み先情報を書込部２１１に与える。書込部２１１は、書込要求元から次の書き込み先情報を受け付けると、分割したサイズの整数倍のサイズに揃えたデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部２１１は、書込要求元に分割したサイズの整数倍のサイズに揃えたデータが分割したサイズの何倍であるかを示す情報を返却する。書込制御部２１３は、書込部２１１から分割したサイズの何倍であるかを示す情報を受信する。そして、書込制御部２１３は、Ｓ４１４の処理に進む。
【０２４５】
なお、書込制御部２１３は、書込部２１１から書き込み先の記録スロットあふれを示す応答を受け付けると、ダミーデータ記憶指示を書込部２１１に与えてもよい。なお、同一ページ内の隣接する記録スロットであるか、ブロック４００を管理する管理単位をまたがない範囲で、物理アドレスが連続する場合以外の場合は、書込制御部２１３は、ダミーデータ記憶指示を書込部２１１に与える。書込部２１１は、書込要求元からダミーデータ記憶指示を受け付けると、書き込み先の記録スロットの残りの領域のサイズ分のダミーデータを生成する。そして、書込部２１１は、生成したダミーデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示を行う。
【０２４６】
ここで、書込部２１１は、ダミーデータの代わりに第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータの誤り訂正データを生成してもよい。書込部２１１は、第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータの誤り訂正データを利用することで、データの信頼性を高めてもよい。また、書込部２１１は、分割したサイズの整数倍のサイズに揃えたデータの順番を適宜入れ替えてダミーデータを記憶する量を削減し、記憶媒体２５１の利用効率を高めてもよい。
【０２４７】
なお、書込制御部２１３は、ダミーデータを書き込む指示を書込部２１１に与えた場合、当該書き込み対象のクラスタデータを書き込むために、新たな書き込み先記録スロットを確保し、上記処理をＳ４０２からやり直す。
【０２４８】
ステップ４１４（Ｓ４１４）において、書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１記録スロット分以上になったか否かを判定する。書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１記録スロットのサイズ以上になっていない場合（Ｓ４１４：Ｎｏ）は、Ｓ４００の処理に進む。また、書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１記録スロットのサイズ以上になった場合（Ｓ４１４：Ｙｅｓ）は、Ｓ４１６の処理に進む。
【０２４９】
ステップ４１６（Ｓ４１６）において、書込部２１１は、記録スロットデータを生成する。より詳細には、書込部２１１は、１記録スロット分のデータが揃うと、記録スロットの記憶フォーマットのうちのメタデータとして、圧縮して記憶されたクラスタの配置パターンを示す特殊な値（マジックナンバー）を示すデータを生成する。また、書込部２１１は、記録スロットの記憶フォーマットのうち誤り訂正データを生成する。
【０２５０】
より詳細には、例えば、クラスタデータが４分割されている場合、図９に示すように、第１の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第１のデータが含まれる。第２の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第２のデータが含まれる。第３の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第３のデータが含まれる。第４の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第４のデータが含まれる。
【０２５１】
書込部２１１は、生成したマジックナンバーを示すデータであるメタデータと、第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータと、生成した誤り訂正データを、記録スロットのデータとして、一時記憶するように、第２アクセス部１０３に書き込み指示する。
【０２５２】
なお、書込部２１１は、圧縮してもデータサイズが小さくならないなどの圧縮の必要性がない場合などには、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信せずに、ページ４０２に複数含まれる記録スロットにそのまま当該クラスタのデータを記憶してもよい。
【０２５３】
ステップ４１８（Ｓ４１８）において、書込部２１１は、書き込むデータが１ページ分以上になったか否かを判定する。書込部２１１は、書き込むデータが１ページ分以上になっていない場合（Ｓ４１８：Ｎｏ）は、Ｓ４００の処理に進む。また、書込部２１１は、書き込むデータが１ページ分以上になった場合（Ｓ４１８：Ｙｅｓ）は、Ｓ４２０の処理に進む。
【０２５４】
ステップ４２０（Ｓ４２０）において、書込部２１１は、１ページ分のデータを書き込む。より詳細には、書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になったら、第２メモリ１５３が一時記憶しているデータのうち、ページサイズ分のデータを読み込むように第２アクセス部１０３に読み込み指示し、ページサイズ分のデータを取得する。ここで、書込部２１１は、書き込み先のページとして、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号とページ番号を記憶媒体アクセス部１０１に指示する。
【０２５５】
ステップ４２２（Ｓ４２２）において、書込制御部２１３は、管理情報を更新する。より詳細には、書込部２１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。書込制御部２１３は、書込部２１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２を更新する。書込制御部２１３は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に書き込み指示する。また、書込制御部２１３は、当該ページに書き込まれたクラスタに対して、書込部２１１から取得した分割されたサイズの何倍であるかを示す情報を、アドレス正引きテーブル１６２に書き込むように、第１アクセス部１０２に書き込み指示する。
【０２５６】
次に、図示しないホスト装置からの読み込み命令に応じて、データ記憶装置２００が行う読み込み処理の手順について、図１５を参照して説明する。図１５は、データ記憶装置２００が行う読み込み処理の手順の一例を示すフローチャートである。
【０２５７】
（読み込み処理）
ステップ５００（Ｓ５００）において、データ記憶装置２００は、外部のホスト装置（図示せず）などから、読み込み命令を受け付ける。より詳細には、インタフェース部１０６は、図示しないホスト装置から、書き込み命令及び読み込み命令を含む命令を受け付ける。書き込み命令には、データ記憶装置アドレス情報及び書き込みデータが含まれる。読み込み命令には、データ記憶装置アドレス情報が含まれる。データ記憶装置アドレス情報は、データ記憶装置２００が図示しないホスト装置に提供するアドレス情報である。
【０２５８】
例えば、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤのデータ記憶装置アドレス情報の例として、ＬＢＡ（Logical  Block  Address）がある。ＬＢＡで特定されるデータのサイズは、例えば、５１２バイトのように定められている。データ記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータ（クラスタ）のサイズとは、前述したように一般に異なっている。しかし、データ記憶装置アドレスと論理アドレスは相互に変換可能である。例えば、データ記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレスが１０２４バイトごとに割り当てられている場合、データ記憶装置アドレス情報を２で除算して商を求めることにより、データ記憶装置アドレス情報を論理アドレスに変換することができる。第２の実施の形態では、説明の簡単化のために、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが同じである場合を例に説明する。ただし、これに限定されることなく、データ記憶装置２００は、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが異なるものであってもよい。
【０２５９】
インタフェース部１０６は、受け付けた命令が読み込み命令であった場合、読込制御部２１４に受け付けた読み込み命令を転送する。
【０２６０】
ステップ５０２（Ｓ５０２）において、読込制御部２１４は、読み込み先情報を生成する。より詳細には、読込制御部２１４は、インタフェース部１０６から読み込み命令を受け取ると、受け取った読み込み命令からデータ記憶装置アドレス情報を抽出する。読込制御部２１４は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。読込制御部２１４は、変換した論理アドレスに対応付けられている情報を取得する。より詳細には、読込制御部２１４は、アドレス正引きテーブル１６２における変換された論理アドレスが示す記憶媒体２５１の物理アドレスと、分割したサイズの何倍であるかを示す情報とを読み込むように、第１アクセス部１０２に対して読み込みの指示を行う。そして、読込制御部２１４は、物理アドレスと、分割したサイズの何倍であるかを示す情報を取得する。読込制御部２１４は、取得した物理アドレスに含まれるページ上記録スロットフセット情報と、記録スロット上オフセット情報と、取得した分割したサイズの何倍であるかを示す情報から、当該クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されているか否かを判断する。読込制御部２１４は、判断結果がＹＥＳ（クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されている）の場合は、連続する読み込み先記録スロットの情報を生成する。連続する読み込み先記録スロットの情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報が含まれる。
【０２６１】
クラスタがページ内の隣接する記録スロットにまたがって記憶されている場合は、このうち、ブロック番号と、ページ番号には、取得した物理アドレスに含まれるブロック番号と、ページ番号が設定され、ページ上記録スロットフセット情報には、連続する情報が設定される。また、クラスタがページをまたがって記憶されている場合は、ブロック番号には取得した物理アドレスに含まれるブロック番号が設定され、ページ番号には、連続する番号が設定され、ページ上記録スロットフセット情報には、先頭の位置を示す情報が設定される。
【０２６２】
ステップ５０４（Ｓ５０４）において、読込制御部２１４は、読み込み対象データを読み込む。より詳細には、読込制御部２１４は、取得した物理アドレスと、取得した分割したサイズの何倍かであるかを示す情報とを読み込み先情報とし、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部２１２に読み込み指示する。なお、読み込み対象クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されている場合は、読込制御部２１４は、読込部２１２に対して、生成した連続する読み込み先記録スロットの情報を合わせて送信する。なお、読み込み対象クラスタセットが同一ページの隣接する記録スロットに書き込まれている場合は、記憶媒体２５１からの読み込みがページ４０２単位であるので、１回の読み込み処理で記憶媒体２５１から読み込み対象クラスタが読み込まれてもよい。
【０２６３】
読込部２１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報と、分割したサイズの何倍であるかを示す情報とが含まれる。なお、当該読み込み対象のクラスタが記録スロットをまたがって記憶されている場合や、ページをまたがって記憶されている場合は、読込部２１２は、連続する読み込み先記録スロットの情報をあわせて受け付ける。連続する読み込み先記録スロットの情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報が含まれる。
【０２６４】
読込部２１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００の、ページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示して当該ページのデータを取得する。当該読み込み対象のクラスタが記録スロットやページをまたがって記憶されている場合は、読込部２１２は、取得した連続する読み込み先ページの情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００に含まれるページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示して当該ページのデータをさらに取得する。なお、同一ページの隣接する記録スロットの場合には、記憶媒体２５１からの読み込みがページ４０２単位であるので、読込部２１２は、１回の読み込み処理で記憶媒体２５１から読み込むことができる。したがって、同一ページの隣接する記録スロットにまたがってクラスタが記憶されている場合には、読込部２１２は、１つの読み込み処理でまとめて読込んでもよい。
【０２６５】
また、読込部２１２は、取得した読み込み先情報から、ページ上記録スロットフセット情報と、記録スロットフセット情報と、分割したサイズの何倍であるかを示す情報を抽出する。読込部２１２は、取得したページのデータのうち、抽出したページ上記録スロットフセット情報と、記録スロットフセットの情報と、分割したサイズの何倍であるかを示す情報が示す位置から、当該記録スロットのメタデータと、分割したサイズの整数倍のサイズに揃えたデータと、当該データの誤り訂正データを抽出する。当該読み込み対象のクラスタが記録スロットやページをまたがって記憶されている場合は、当該クラスタに対する残りのデータを、連続する記録スロットの先頭の位置から抽出し、あわせて、当該クラスタに対するデータとする。
【０２６６】
ステップ５０６（Ｓ５０６）において、読込部２１２は、読み込み対象データを展開してホスト装置に返却する。より詳細には、読込部２１２は、抽出した誤り訂正データを用いて、抽出した誤り訂正対象データを誤り訂正し、誤り訂正後のデータを取得する。
【０２６７】
より詳細には、読込部２１２は、抽出したデータのうち、当該記録スロットのメタデータと、分割したサイズの整数倍のサイズに揃えたデータを含むデータを、誤り訂正データを生成する基のデータであるとする。そして、読込部２１２は、抽出したデータのうち、誤り訂正データによって誤り訂正し、誤り訂正後のデータを取得する。
【０２６８】
読込部２１２は、誤り訂正が失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。読込制御部２１４は、読込部２１２から読み込みエラーを通知されると、読み込みエラーを示すデータをインタフェース部１０６に送信する。なお、第１メモリ２５２は、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を管理情報としてさらに記憶してもよい。このようにすることで、再度同じ論理アドレスに対して読み込み要求されたときに、すばやく読み込みエラーを返却することができる。
【０２６９】
インタフェース部１０６は、読込制御部２１４からデータ（読み込みエラーを示すデータ）を受信すると、受信したデータ（読み込みエラーを示すデータ）を図示しないホスト装置に転送する。読込部２１２は、誤り訂正が成功した（誤り訂正可能だった）場合は、誤り訂正後のデータから、クラスタデータを抽出する。読込部２１２は、抽出したクラスタデータを、展開部１０５に送信し、展開部１０５に対して展開することを指示する。読込部２１２は、展開されたクラスタデータを取得する。
【０２７０】
なお、読込部２１２は、誤り訂正後のデータから抽出したクラスタデータが圧縮されていない場合などには、クラスタデータを展開部１０５に送信しない。読込部２１２は、取得した展開されたクラスタデータを、読み込み要求元に送信する。読込制御部２１４は、読込部２１２から読み込んだデータを受信すると、受信したデータをインタフェース部１０６に送信する。インタフェース部１０６は、読込制御部１１４からデータを受信すると、受信したデータを図示しないホスト装置に転送する。
【０２７１】
次に、データ記憶装置２００が行う転記処理の手順について、図１６を参照して説明する。図１６は、データ記憶装置２００が行う転記処理の手順の一例を示すフローチャートである。転記制御部２１５は、予め定められた規則に従って、図１６に示す転記処理の制御をおこなう。
【０２７２】
（転記処理）
ステップ６００（Ｓ６００）において、転記制御部１１５は、転記するクラスタを決定する。より詳細には、転記制御部２１５は、第１メモリ２５２から管理情報を読み込むように第１アクセス部１０２に読み込み指示し、管理情報を取得する。転記制御部２１５は、取得した管理情報から、任意の予め定められた方法を用いて、取得した管理情報から転記するクラスタを決定する。第２の実施の形態においては、転記するクラスタを決定する方法は公知のいずれの方法であってもよい。転記制御部２１５は、決定したクラスタの論理アドレスを、取得した管理情報から抽出する。
【０２７３】
ステップ６０２（Ｓ６０２）において、転記制御部２１５は、読み込み先情報を生成する。より詳細には、転記制御部２１５は、抽出した論理アドレスに対応付けられている情報を取得する。転記制御部２１５は、アドレス正引きテーブル１６２における、変換した論理アドレスが示す記憶媒体２５１の物理アドレスと、分割した細部の何倍であるかを示す情報を読み込むように、第１アクセス部１０２に読み込み指示し、物理アドレスと、分割したサイズの何倍であるかを示す情報を取得する。
【０２７４】
転記制御部２１５は、取得した物理アドレスに含まれるページ上記録スロットフセット情報と、記録スロット上オフセット情報と、取得した分割したサイズの何倍であるかを示す情報から、当該クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されているか否かを判断する。転記制御部２１５は、判断結果がＹＥＳ（同一ページ内の隣接する記録スロット、又はページをまたがって記憶されている）の場合は、連続する読み込み先の記録スロットの情報を生成する。より詳細には、連続する読み込み先記録スロットの情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報が含まれる。クラスタがページ内の隣接する記録スロットにまたがって記憶されている場合は、ブロック番号には、前記取得した物理アドレスに含まれるブロック番号が設定される。ページ番号には、取得した物理アドレスに含まれるページ番号が設定される。
【０２７５】
ページ上記録スロットフセット情報には、連続する情報が設定される。また、クラスタがページをまたがって記憶されている場合は、ブロック番号に対して、取得した物理アドレスに含まれるブロック番号が設定される。ページ番号には、連続する番号が設定され、ページ上記録スロットフセット情報には、先頭の位置を示す情報が設定される。
【０２７６】
ステップ６０４（Ｓ６０４）において、転記制御部２１５は、読み込み対象データを読み込む。より詳細には、転記制御部２１５は、取得した物理アドレスと、取得した分割したサイズの何倍かであるかを示す情報とを、読み込み先情報として、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部２１２に読み込み指示する。
【０２７７】
なお、読み込み対象クラスタが同一ページ内の隣接する記録スロット、又はページをまたがって記憶されている場合、転記制御部２１５は、読込部２１２に対して、生成した連続する読み込み先記録スロットの情報を合わせて送信する。なお、クラスタが同一ページの隣接する記録スロットに書き込まれている場合は、記憶媒体２５１からの読み込みがページ４０２単位であるため、１回の読み込み処理で記憶媒体２５１からクラスタを読み込める。したがって、読み込み対象クラスタが同一ページ内の隣接する記録スロットをまたがって記憶されている場合は、クラスタの読込処理を１つの読み込み処理にまとめてもよい。
【０２７８】
読込部２１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報と、分割したサイズの何倍であるかを示す情報とが含まれる。なお、当該読み込み対象のクラスタが記録スロットをまたがって記憶されている場合や、ページをまたがって記憶されている場合は、読込部２１２は、連続する読み込み先記録スロットの情報をあわせて受け付ける。連続する読み込み先記録スロットの情報には、ブロック番号と、ページ番号と、ページ上記録スロットフセット情報が含まれる。
【０２７９】
読込部２１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００の、ページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示して当該ページのデータを取得する。当該読み込み対象のクラスタが記録スロットやページをまたがって記憶されている場合は、読込部２１２は、取得した連続する読み込み先ページの情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００に含まれるページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示して当該ページのデータをさらに取得する。なお、同一ページの隣接する記録スロットの場合には、記憶媒体２５１からの読み込みがページ４０２単位であるので、読込部２１２は、１回の読み込み処理で記憶媒体２５１から読み込むことができる。したがって、同一ページの隣接する記録スロットにまたがってクラスタが記憶されている場合には、読込部２１２は、１つの読み込み処理でまとめて読込んでもよい。
【０２８０】
また、読込部２１２は、取得した読み込み先情報から、ページ上記録スロットフセット情報と、記録スロットフセット情報と、分割したサイズの何倍であるかを示す情報を抽出する。読込部２１２は、取得したページのデータのうち、抽出したページ上記録スロットフセット情報と、記録スロットフセットの情報と、分割したサイズの何倍であるかを示す情報が示す位置から、当該記録スロットのメタデータと、分割したサイズの整数倍のサイズに揃えたデータと、当該データの誤り訂正データを抽出する。当該読み込み対象のクラスタが記録スロットやページをまたがって記憶されている場合は、当該クラスタに対する残りのデータを、連続する記録スロットの先頭の位置から抽出し、あわせて、当該クラスタに対するデータとする。
【０２８１】
ステップ６０６（Ｓ６０６）において、転記制御部２１５は、読み込んだ読み込み対象データを展開して取得する。より詳細には、読込部２１２は、抽出した誤り訂正データを用いて、抽出した誤り訂正対象データを誤り訂正し、誤り訂正後のデータを取得する。より詳細には、抽出したデータのうち、該記録スロットのメタデータと、分割したサイズの整数倍のサイズに揃えたデータを含むデータを誤り訂正データの生成の基のデータであるとして、抽出したデータのうち、誤り訂正データを誤り訂正データであるとして、誤り訂正し、誤り訂正後のデータを取得する。読込部２１２は、誤り訂正が失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。転記制御部２１５は、読込部２１２から読み込みエラーを通知されると、転記処理後も当該クラスタを読み込むとエラーとなるように整合性を担保する処理をする。例えば、読み込みエラーとなったクラスタデータを読み込みエラーとなる状態のまま転記してもよいし、第１メモリ２５２が有する管理情報において、該論理アドレスを読み込むと読み込みエラーとなる旨の情報を記憶しておき、読み込みエラーとなったクラスタデータは転記しないようにしてもよい。読込部２１２は、誤り訂正が成功した（誤り訂正可能だった）場合は、誤り訂正後のデータから、クラスタデータを抽出する。読込部２１２は、抽出したクラスタデータを、展開部１０５に送信し、展開部１０５に展開指示し、展開されたクラスタデータを取得する。
【０２８２】
なお、読込部２１２は、誤り訂正後のデータから抽出したクラスタデータが圧縮されていない場合などには、クラスタデータを展開部１０５に送信しない。読込部２１２は、取得した展開されたクラスタデータを、読み込み要求元に送信する。転記制御部２１５は、読込部２１２から読み込んだデータを受信する。
【０２８３】
ステップ６０８（Ｓ６０８）において、転記制御部２１５は、書き込み先情報を生成する。より詳細には、転記制御部２１５は、書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報を、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報が示す記録スロット上オフセット分だけずらした書き込み先情報を生成する。
【０２８４】
より詳細には、書込部２１１に対する前回のクラスタ書き込み要求において送信した書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報が含まれる。このうち、記録スロット上オフセットの情報に、書込部２１１に対する前回のクラスタ書き込み要求において書込部２１１から返信された分割したサイズの何倍であるかを示す情報が示す分のオフセットを加算することで、転記制御部２１５は、当該書き込み先情報を生成する。
なお、書込部２１１に対する前回のクラスタ書き込み要求において、書込部２１１に次の書き込み先情報を与えた（クラスタが記録スロットまたはページをまたがって記憶された）場合は、次の書き込み先情報に分割したサイズの何倍であるかの残りの分だけずらした書き込み先情報を生成する。
【０２８５】
より詳細には、次の書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロットの先頭の位置を示す記録スロット上オフセット情報が含まれる。書込部２１１は、記録スロット上オフセット情報に、分割したサイズの何倍であるかの残りの分のオフセットを加算することで、当該書き込み先情報を生成する。
【０２８６】
なお、データ記憶装置２００は、ホスト装置から書き込み要求されたデータを書き込むブロック４００と、転記先のブロック４００とが同じである構成の場合、書込制御部２１３と転記制御部２１５とが、生成する書き込み先情報が重複しないように連携して処理を行う。転記制御部２１５は、生成した書き込み先情報と、書き込み対象のクラスタデータとして抽出した書き込みデータと、書き込み対象のクラスタの論理アドレスとして変換した論理アドレスとを、書込部２１１に送信し、書込部２１１に書き込み指示する。
【０２８７】
書込部２１１は、転記制御部２１５からクラスタの書き込み要求を受け付ける。クラスタの書き込み要求には、書き込み先情報と、書き込み対象のクラスタデータと、書き込み対象のクラスタの論理アドレスを示すデータが含まれる。書き込み先情報には、クラスタの書き込み先のブロック番号と、ページ番号と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報が含まれる。
【０２８８】
ステップ６１０（Ｓ６１０）において、書込部２１１は、圧縮部１０４によってクラスタデータを（必要に応じて）圧縮する。書込部２１１が、クラスタデータを圧縮する手順は書込部１１１と同様である。
【０２８９】
具体的には、書込部２１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタデータを抽出する。書込部２１１は、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信し、クラスタデータを圧縮することを圧縮部１０４に対して指示する。そして、書込部２１１は、圧縮部１０４が圧縮した書き込み対象のクラスタデータを取得する。
【０２９０】
書込部２１１は、受け付けたクラスタの書き込み要求から書き込み対象のクラスタの論理アドレスを示すデータを抽出し、抽出した書き込み対象のクラスタの論理アドレスを示すデータを含むメタデータを生成する。なお、クラスタセットに含まれるメタデータを圧縮する場合は、書込部２１１は、圧縮されたメタデータをメタデータと同様に扱う。
【０２９１】
ステップ６１２（Ｓ６１２）において、書込部２１１は、分割したサイズの整数倍にデータのサイズを揃える。より詳細には、書込部２１１は、生成したメタデータと、取得した圧縮されたクラスタデータと、を合わせたデータを分割したサイズの整数倍のサイズに揃える。
【０２９２】
より詳細には、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの整数倍以下となった場合、分割したサイズの整数倍の領域から、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータの領域を除いた残りの領域分のダミーデータを生成する。なお、ダミーデータとしては、予め定められた値（例えば全て０）でもよいし、ランダムな値でもよい。また、ダミーデータは、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータを生成の基にした誤り訂正データでもよい。ダミーデータを誤り訂正データとした場合には、記憶データの信頼性が向上するという効果を奏する。
【０２９３】
具体的には、第２の実施形態では、前述したようにクラスタデータが４分割されている場合について記載しているため、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータが、分割したサイズ（の１倍）以下となった場合、図１０（ａ）に示すように、分割したサイズ（の１倍）の領域から、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータの領域を除いた残りの領域には、ダミーデータを記憶することにより、データのサイズを分割したサイズの整数倍に揃える。
【０２９４】
同様に、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの２倍以下となった場合は、図１０（ｂ）に示すように、分割したサイズの整数倍にデータのサイズを揃える。また、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの３倍以下となった場合は、図１０（ｃ）に示すように、分割したサイズの整数倍にデータのサイズを揃える。なお、データのサイズは、分割したサイズの整数倍に限られず、２の倍数のサイズなど、他のサイズに揃えられてもよい。
【０２９５】
ここで、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの４倍以下、すなわち、圧縮しないクラスタデータのサイズ以下となった場合は、次のいずれかのようにデータのサイズを揃えてもよい。例えば、図１０（ｄ）に示すように、データのサイズを図１０（ａ）〜（ｃ）と同様に分割したサイズの整数倍のサイズに揃えてもよい。また、クラスタデータを圧縮せずに、図９に示されるページ４０２に複数含まれる記録スロットに対し、データをそのまま記憶してもよい。
【０２９６】
クラスタデータを圧縮して記憶し、分割したサイズの整数倍のサイズに揃えることの利点は、例えば、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、を合わせたデータを生成の基とした誤り訂正データをダミーデータとし、記憶データの信頼性を向上させることがあげられる。また、後述するように、同一ページ内の隣接する記録スロットにまたがってクラスタを記憶したり、ブロック４００を管理する管理単位をまたがない範囲（例えば同一のブロック４００内）で、物理アドレスが連続する場合に限り、ページをまたいでデータを記憶できる。したがって、第２の実施の形態によれば、記憶媒体２５１の記憶効率が向上させることができ、データ記憶装置２００の寿命を延ばすことができるという効果を奏する。
【０２９７】
一方、クラスタデータを圧縮せずに記憶することの利点としては、例えば、書き込み時の圧縮処理にかかる処理時間や、読み込み時の展開処理にかかる処理時間を削減することが可能となることがあげられる。また、圧縮したクラスタは、図３（ｂ）に示したページにまたがって記憶されることと同様に、図１１（ａ）に示した同一ページ内の隣接する記録スロットにまたがって記憶されてもよい。また、圧縮したクラスタは、図１１（ｂ）に示すように、ブロック４００を管理する管理単位をまたがない範囲で、物理アドレスが連続する場合に限り、ページ４０２をまたいで記憶されてもよい。なお、図１１では、説明を簡単にするために、記録スロットのメタデータや誤り訂正データの記憶領域は記載していない。
【０２９８】
ステップ６１４（Ｓ６１４）において、書込部２１１は、書き込み先の記録スロットに、分割したサイズの整数倍のサイズに揃えたデータが収まるか判定する。書込部２１１は、書き込み先情報に含まれる記録スロット上オフセットの情報に対し、分割したサイズの整数倍のサイズを加算した結果が当該記録スロットに収まっているかを判定する。
【０２９９】
ステップ６１６（Ｓ６１６）において、第２メモリ１５３は、整数倍のサイズに揃えたデータを一時記憶する。より詳細には、書込部２１１は、Ｓ６１４の処理において判定結果がＹＥＳ（書き込み先の記録スロットに収まる）の場合、分割したサイズの整数倍のサイズに揃えたデータを第２メモリ１５３が一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部２１１は、書込要求元に分割したサイズの整数倍のサイズに揃えたデータが分割したサイズの何倍であるかを示す情報を返却する。転記制御部２１５は、分割したサイズの何倍であるかを示す情報を書込部２１１から受信する。
【０３００】
ステップ６１８（Ｓ６１８）において、書込部２１１及び転記制御部２１５は、末端処理をする。より詳細には、書込部２１１は、判定結果がＮＯ（書き込み先の記録スロットに収まらない）の場合、書き込み先の記録スロットあふれを示す応答を書込要求元に応答する。転記制御部２１５は、書込部２１１から書き込み先の記録スロットのあふれを示す応答を受け取ると、同一ページ内の隣接する記録スロットであるか、ブロック４００を管理する同一の管理単位内で物理アドレスが連続する場合、次の書き込み先情報を書込部２１１に与える。書込部２１１は、書込要求元から次の書き込み先情報を受け付けると、第２メモリ１５３が分割したサイズの整数倍のサイズに揃えたデータを一時記憶するように、第２アクセス部１０３に書き込み指示する。また、書込部２１１は、書込要求元に分割したサイズの整数倍のサイズに揃えたデータが分割したサイズの何倍であるかを示す情報を返却する。転記制御部２１５は、書込部２１１から分割したサイズの何倍であるかを示す情報を受信する。そして、Ｓ６２０の処理に進む。
【０３０１】
なお、転記制御部２１５は、書込部２１１から書き込み先の記録スロットあふれを示す応答を受け付けると、ダミーデータ記憶指示を書込部２１１に与えてもよい。同一ページ内の隣接する記録スロットであるか、ブロック４００を管理する管理単位をまたがない範囲で、物理アドレスが連続する場合以外の場合は、転記制御部２１５は、ダミーデータ記憶指示を書込部２１１に与える。書込部２１１は、書込要求元からダミーデータ記憶指示を受け付けると、書き込み先の記録スロットの残りの領域のサイズ分のダミーデータを生成する。書込部２１１は、第２メモリ１５３が生成したダミーデータを一時記憶するように、第２アクセス部１０３に書き込み指示する。
【０３０２】
ここで、書込部２１１は、ダミーデータの代わりに第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータの誤り訂正データを生成してもよい。書込部２１１は、第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータの誤り訂正データを利用することで、データの信頼性を高めてもよい。また、書込部２１１は、分割したサイズの整数倍のサイズに揃えたデータの順番を適宜入れ替えてダミーデータを記憶する量を削減し、記憶媒体２５１の利用効率を高めてもよい。
【０３０３】
なお、転記制御部２１５は、ダミーデータ記憶指示を書込部２１１に与えた場合、当該書き込み対象のクラスタデータを書き込むために、新たな書き込み先記録スロットを確保し、上記書き込み処理をステップＳ６０８からやり直す。
【０３０４】
ステップ６２０（Ｓ６２０）において、書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１記録スロット分以上になったか否かを判定する。書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１記録スロット分以上になっていない場合（Ｓ６２０：Ｎｏ）は、Ｓ６００の処理に進む。また、書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズが１記録スロット分以上になった場合（Ｓ６２０：Ｙｅｓ）は、Ｓ６２２の処理に進む。
【０３０５】
ステップ６２２（Ｓ６２２）において、書込部２１１は、記録スロットデータを生成する。より詳細には、書込部２１１は、１記録スロット分のデータが揃うと、記録スロットの記憶フォーマットのうちのメタデータとして、圧縮して記憶されたクラスタの配置パターンを示す特殊な値（マジックナンバー）を示すデータを生成する。また、書込部２１１は、記録スロットの記憶フォーマットのうち誤り訂正データを生成する。
【０３０６】
より詳細には、例えば、クラスタデータが４分割されている場合、図９に示すように、第１の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第１のデータが含まれる。第２の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第２のデータが含まれる。第３の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第３のデータが含まれる。第４の誤り訂正データを生成する基になっているデータには、生成したマジックナンバーを示すデータであるメタデータと、第４のデータが含まれる。
【０３０７】
書込部２１１は、生成したマジックナンバーを示すデータであるメタデータと、第２メモリ１５３が一時記憶している分割したサイズの整数倍のサイズに揃えたデータと、生成した誤り訂正データとを記録スロットのデータとして一時記憶するように、第２アクセス部１０３に書き込みする指示を行う。なお、書込部２１１は、圧縮してもデータサイズが小さくならないなどの圧縮の必要性がない場合などには、抽出した書き込み対象のクラスタデータを圧縮部１０４に送信せずに、ページ４０２に複数含まれる記録スロットにそのまま当該クラスタのデータを記憶してもよい。
【０３０８】
ステップ６２４（Ｓ６２４）において、転記制御部２１５は、第２メモリ１５３が一時記憶しているデータの合計サイズが１ページ分以上になったか否かを判定する。書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になっていない場合（Ｓ６２４：Ｎｏ）は、Ｓ６００の処理に進む。また、書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になった場合（Ｓ６２４：Ｙｅｓ）は、Ｓ６２６の処理に進む。転記制御部２１５は、書込部２１１への書き込み要求が、書き込みデータを圧縮した結果として、少なくとも１ページ分になるまでＳ６００から上記処理を繰り返す。これは、記憶媒体２５１の入出力単位がページ４０２であるので、少なくとも１ページ分書き込みが行われないと、後述する管理情報の更新処理ができず、転記処理が完了しないからである。
【０３０９】
ステップ６２６（Ｓ６２６）において、書込部２１１は、記憶媒体アクセス部１０１を介して１ページ分のデータを記憶媒体２５１に書き込む。より詳細には、書込部２１１は、第２メモリ１５３が一時記憶しているデータの合計サイズがページ４０２のサイズ以上になったら、第２メモリ１５３が一時記憶しているデータのうち、ページサイズ分のデータを読み込むように第２アクセス部１０３に読み込みの指示を行ってページサイズ分のデータを取得する。ここで、書込部２１１は、書き込み先のページとして、書込要求元から受信した書き込み先情報に含まれるクラスタの書き込み先のブロック番号と、ページ番号とを記憶媒体アクセス部１０１に指示する。
【０３１０】
ステップ６２８（Ｓ６２８）において、転記制御部２１５は、管理情報を更新する。より詳細には、書込部２１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。転記制御部２１５は、書込部２１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２を更新する。転記制御部２１５は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６２における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に書き込み指示する。また、転記制御部２１５は、当該ページに書き込まれたクラスタに対して、書込部２１１から取得した分割したサイズの何倍であるかを示す情報を、アドレス正引きテーブル１６２に書き込むように、第１アクセス部１０２に書き込み指示する。
【０３１１】
このように、第２の実施の形態によれば、ページ４０２に書き込むクラスタセットのサイズを予め定められた単位に揃えることができるため、第１の実施の形態と比較すると記憶媒体２５１の記憶効率は多少低下するものの、データを管理するために必要な処理を少なくすることができる。
【０３１２】
（第３の実施の形態）
次に、第３の実施の形態について説明する。第３の実施の形態では、第１及び第２の実施の形態におけるアドレス正引きテーブルのサイズを削減し、アドレス正引きテーブルのために確保すべきメモリ容量を削減する。なお、第３の実施の形態は、第２の実施の形態を変形させた実施の形態として説明するが、第１の実施の形態を変形させた実施の形態であってもよい。
【０３１３】
第３の実施の形態にかかるデータ記憶装置のコントローラは、第２の実施の形態にかかるデータ記憶装置のコントローラに加えて、さらに、記憶媒体が、複数のページからなるブロックを含み、書込制御部が、クラスタデータを記憶媒体に書き込む場合に、論理アドレスを含むメタデータを合わせて書き込むとともに、書込先の物理アドレスとして少なくともブロックを特定する情報を記憶部に書き込むよう制御し、読込制御部が、記憶部から取得した物理アドレスに記録されている複数のクラスタデータを読み込み、読み込んだクラスタデータとともに書き込んだメタデータを抽出し、抽出したメタデータに含まれる論理アドレスと読み込み要求されたデータの論理アドレスとを比較し、それぞれの論理アドレスが一致するクラスタデータを読込むよう制御し、転記制御部が、記憶媒体に書き込まれたクラスタデータの中から転記するクラスタデータを予め定められた規則に従って決定し、決定したクラスタデータに対応する物理アドレスを記憶部から取得し、取得した物理アドレスに記録されている複数のクラスタデータを読み込み、読み込んだクラスタデータとともに書き込んだメタデータを抽出し、抽出したメタデータに含まれる論理アドレスと決定したクラスタデータの論理アドレスとを比較し、それぞれの論理アドレスが一致するクラスタデータを読込むよう制御し、クラスタデータを記憶媒体に書き込む場合に、論理アドレスを含むメタデータを合わせて書き込むとともに、転記先の物理アドレスとして少なくともブロックを特定する情報を記憶部に書き込むよう制御することを特徴とする。
【０３１４】
また、第３の実施の形態にかかるデータ記憶装置のコントローラは、さらに、読込制御部が、クラスタデータの記憶順番が最後のものから順に論理アドレスを比較し、転記制御部が、クラスタデータの記憶順番が最後のものから順に論理アドレスを比較することを特徴とする。
【０３１５】
以降、より詳細な一例を説明する。まず、第３の実施の形態のデータ記憶装置の構成について説明する。なお、第２の実施の形態と同様の機能を有する構成要素については、第２の実施の形態と同様符号が付してある。例えば、読み書き対象が第１メモリ２５２ではなく第１メモリ３５２であるだけで、そのほかの機能は第２の実施の形態と同様である構成要素についても、第２の実施の形態と同様の符号が付してある。
【０３１６】
図１７は、第３の実施の形態のデータ記憶装置３００の機能構成の一例を示すブロック図である。図１７に示すように、データ記憶装置３００は、コントローラ３１０と、第１アクセス部１０２と、第１メモリ３５２と、第２アクセス部１０３と、第２メモリ１５３と、記憶媒体アクセス部１０１と、記憶媒体２５１と、インタフェース部１０６と、圧縮部１０４と、展開部１０５と、を有する。
【０３１７】
（第１メモリ３５２）
第１メモリ３５２は、管理情報を記憶する。管理情報には、アドレス正引きテーブル１６４が含まれる。また、第１メモリ３５２は、データ記憶装置３００が行う様々な処理を簡単にするために、アドレス正引きテーブル１６４が含む情報から導出される情報を予め記憶するように構成されてもよい。
【０３１８】
アドレス正引きテーブル１６４は、クラスタの論理アドレスと、論理アドレスのデータが格納されている記憶媒体２５１の物理アドレスの対応付けを管理する。アドレス正引きテーブル１６４は、管理する物理アドレスの情報を最少にする場合、ブロック４００を示す情報だけを管理対象とされてもよい。例えば、アドレス正引きテーブル１６２は、記憶媒体２５１の物理アドレスとして、ブロック番号情報と、ページ番号情報と、ページ上記録スロットフセット情報と、記録スロット上オフセット情報の組を管理していた。これに対し、アドレス正引きテーブル１６４は、図１８（ａ）に示すように、管理する物理アドレスの情報を最少にする場合、ブロック番号情報を管理すればよいことになる。
【０３１９】
ここで、アドレス正引きテーブル１６４が管理する情報の量が増えると、以下に説明するクラスタデータの読み書き処理量が減り、アドレス正引きテーブル１６４が管理する情報の量が減ると、以下に説明するクラスタデータの読み書き処理量が増えるという関係がある。以下、第３の実施の形態では、図１８（ｂ）に示すように、アドレス正引きテーブル１６４がブロック番号情報と、ページ番号情報の組を管理する構成で説明する。ただし、アドレス正引きテーブル１６４は、図１８（ｂ）に示した構成に限定されることなく、他の構成であってもよい。なお、第３の実施の形態では、アドレス正引きテーブル１６４は、情報量（サイズ）を削減するために、アドレス正引きテーブル１６２が記憶する分割したサイズの何倍であるかを示す情報を記憶しない。
【０３２０】
（コントローラ３１０）
コントローラ３１０は、書込部２１１と、読込部３１２と、書込制御部３１３と、読込制御部３１４と、転記制御部３１５と、を有する。
【０３２１】
（読込部３１２）
読込部３１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、が含まれる。読込部３１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００の、ページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示し、当該ページのデータを取得する。なお、ページ４０２には複数の記録スロットが格納されているが、ページ４０２に格納される記録スロットの数は変更可能である。また、記憶媒体２５１へのデータの入出力単位はページ４０２であるので、前述のように当該ページのデータをすべて読み込んでも読み込み処理において新たに生じる処理はない。
【０３２２】
読込部３１２は、取得したページのデータに含まれる記録スロットのデータを誤り訂正し、誤り訂正後の記録スロットのデータを取得する。読込部３１２は、誤り訂正が失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。読込部３１２は、誤り訂正が成功した（誤り訂正可能だった）場合は、誤り訂正後のデータから、各記録スロットのメタデータを抽出する。読込部３１２は、抽出した各記録スロットのメタデータに含まれるマジックナンバーから、各記録スロットに記憶されているクラスタの配置パターンを算出する。なお、抽出した各記録スロットのメタデータに、該記録スロットにクラスタが圧縮されて記憶されている旨のマジックナンバーが含まれていなかったときは、読込部３１２は、該記録スロットにはクラスタが圧縮されずに記憶されていると判断する。また、読込部３１２は、誤り訂正後のデータから、算出したクラスタの配置パターンに従って、各クラスタのメタデータを抽出する。なお、読込部３１２は、圧縮されて記憶されているクラスタのメタデータが圧縮されずに記憶されている場合は、誤り訂正後のデータからそのまま抽出する。一方、読込部３１２は、圧縮されて記憶されているクラスタのメタデータが圧縮されて記憶されている場合は、誤り訂正後のデータを展開部１０５に展開指示することにより、当該メタデータを取得する。
【０３２３】
なお、図１９に示すように、記録スロットの端に記憶されているクラスタは、記憶時点の状況によって、圧縮されたクラスタの一部であるのか全部であるのかのどちらかであるため、圧縮されたクラスタの一部であるのか全部であるのかのどちらかであるかを判断する必要がある。読込部３１２は、当該クラスタの展開を試みることで、この判断が可能である。より詳細には、読込部３１２は、記録スロットの端に記憶されているクラスタの展開を試みるように、展開部１０５に展開指示する。展開が成功し、展開した結果、クラスタのサイズ分のクラスタデータが得られた場合は、当該クラスタは圧縮されたクラスタの全部であったと判断できる。一方、展開に失敗した場合や、展開した結果、クラスタのサイズ分に満たないクラスタデータが得られた場合は、読込部３１２は、該クラスタは圧縮されたクラスタの一部であったと判断する。なお、図１９では、説明の簡単のために、記録スロットのメタデータや誤り訂正データの記憶領域は記載していない。
【０３２４】
ここで、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが全部であると判断された場合、読込部３１２は、当該クラスタのメタデータを抽出する。一方、該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが一部であると判断された場合（図１９の右側のページが読み込み対象のページであった時の圧縮したクラスタデータその６に相当する）、読込部３１２は、当該クラスタのメタデータは抽出しない。これは、当該クラスタについて、アドレス正引きテーブル１６４には、ひとつ前の連続するページの物理アドレスが書き込まれているため、当該クラスタに対して読み込み要求があった場合は、読込部３１２に対して、ひとつ前の連続するページが読み込み要求されるからである。
【０３２５】
また、図１９に示した圧縮したクラスタデータその４のように、当該ページ内の隣接する記録スロットの隣り合う端に記憶されているクラスタがともに一部であると判断された場合、それらのクラスタを合わせると全部となるため、読込部３１２は、当該全部となるクラスタのメタデータを抽出する。一方、図１９に示した圧縮したクラスタデータその１及びその２のように、当該ページ内の隣接する記録スロットの隣り合う端に記憶されているクラスタがともに全部であると判断された場合、読込部３１２は、それぞれのクラスタのメタデータを抽出する。
【０３２６】
また、図１９の左側のページが読み込み対象のページであった場合の圧縮したクラスタデータその６のように、当該ページ４０２におけるクラスタの記憶順番の一番最後のクラスタが一部であると判断された場合、当該一番最後のクラスタは、物理アドレスが連続する次のページ４０２のクラスタの記憶順番の一番最初のクラスタと合わせられることにより、全部のクラスタデータとなる。したがって、読込部３１２は、誤り訂正処理までと同様の手順で連続する次のページ４０２に記憶されているデータを取得し、物理アドレスが連続する次のページ４０２のクラスタの記憶順番の一番最初のクラスタと合わせることで、全部となるクラスタデータを抽出する。また、読込部３１２は、当該全部となるクラスデータのメタデータを抽出する。一方、当該ページ４０２におけるクラスタの記憶順番の一番最後のクラスタが全部であると判断された場合、読込部３１２は、当該クラスタのメタデータを抽出する。読込部３１２は、受け付けた読み込み要求に含まれる読み込み対象のクラスタの論理アドレスを抽出する。読込部３１２は、抽出した各クラスタのメタデータに含まれる論理アドレスを抽出する。読込部３１２は、抽出した読み込み対象のクラスタの論理アドレスと、抽出した各クラスタのメタデータに含まれる論理アドレスを比較して、一致するクラスタを読み込み対象のクラスタと判断する。
【０３２７】
なお、同じ論理アドレスを持つクラスタが複数存在する場合は、その複数存在するクラスタのうち、当該ページ４０２におけるクラスタの記憶順番が一番最後のクラスタを読み込み対象のクラスタと判断する。したがって、当該ページ４０２におけるクラスタの記憶順番の一番最後のものから順番に論理アドレスを比較することにより、比較時間を短縮することができるという効果を奏する。
【０３２８】
読込部３１２は、読み込み対象のクラスタと判断したクラスタデータを展開部１０５に送信して展開部１０５に展開指示し、展開されたクラスタデータを取得する。なお、読込部３１２は、必要に応じて、読み込み対象のクラスタと判断したクラスタデータを、展開部１０５に送信しない場合がある。この場合、読込部３１２は、以降の処理における展開されたクラスタデータを展開部１０５に送信しなかった読み込み対象のクラスタデータで読み替える。例えば、クラスタデータが圧縮されずに記憶媒体２５１に記憶されていた場合、読込部３１２は、クラスタデータを展開部１０５に送信しない。読込部３１２は、取得したクラスタデータを、読み込み要求元に送信する。
【０３２９】
（書込制御部３１３）
書込制御部３１３は、次の処理以外の処理を書込制御部２１３と同様に行う。
【０３３０】
書込制御部３１３は、書込部２１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４を更新する。より詳細には、書込制御部３１３は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に書き込み指示する。ただし、更新する書き込み先の記憶媒体２５１の物理アドレスは、生成した書き込み先情報に含まれるブロック番号情報と、ページ番号情報である。なお、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが一部である場合（図１９の右側のページが書き込み完了したページであった場合の圧縮したクラスタその６に相当する）、書込制御部３１３は、当該クラスタについては、アドレス正引きテーブル１６４を更新しない。これは、当該クラスタに対しては、アドレス正引きテーブル１６４には、ひとつ前の連続するページの物理アドレスが書き込まれているためである。また、書込制御部３１３は、書込制御部２１３と異なり、当該ページに書き込まれたクラスタに対して、書込部２２１から取得した分割したサイズの何倍であるかを示す情報を、アドレス正引きテーブル１６４に書き込むように、第１アクセス部１０２には指示しない。
【０３３１】
（読込制御部３１４）
読込制御部３１４は、インタフェース部１０６から読み込み命令を受け取ると、受け取った読み込み命令からデータ記憶装置アドレス情報を抽出する。読込制御部３１４は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。読込制御部３１４は、変換した論理アドレスに対応付けられている情報を取得する。より詳細には、読込制御部３１４は、アドレス正引きテーブル１６４における、変換した論理アドレスが示す記憶媒体２５１の物理アドレスを読み込むように、第１アクセス部１０２に読み込み指示し、物理アドレスを示す情報を取得する。物理アドレスには、ブロック番号情報と、ページ番号情報が含まれる。
【０３３２】
読込制御部３１４は、取得した物理アドレスを読み込み先情報とし、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部３１２に読み込み指示する。読込制御部３１４は、読込部３１２から読み込みエラーを通知されると、読み込みエラーを示すデータをインタフェース部１０６に送信する。なお、第１メモリ３５２は、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を管理情報としてさらに記憶してもよい。このようにすることで、再度同じ論理アドレスに対して読み込み要求されたときに、すばやく読み込みエラーを返却することができる。読込制御部３１４は、読込部３１２から読み込んだデータを受信すると、受信したデータをインタフェース部１０６に送信する。
【０３３３】
（転記制御部３１５）
転記制御部３１５は、予め定められた規則に従って、以下に述べる転記処理の制御をおこなう。まず、転記制御部３１５は、転記するクラスタを決定する。より詳細には、転記制御部３１５は、第１メモリ３５２から管理情報を読み込むように第１アクセス部１０２に読み込み指示し、管理情報を取得する。転記制御部３１５は、取得した管理情報から、予め定められた規則に従って、転記するクラスタを決定する。転記するクラスタの決定は、任意の公知の規則に従って行われてもよい。転記制御部３１５は、決定したクラスタの論理アドレスを、取得した管理情報から抽出する。
【０３３４】
転記制御部３１５は、転記するクラスタを読み込む。より詳細には、転記制御部３１５は、抽出した論理アドレスに対応付けられている情報を取得する。転記制御部３１５は、アドレス正引きテーブル１６４における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを読み込むように、第１アクセス部１０２に読み込み指示し、物理アドレスを示す情報を取得する。物理アドレスには、ブロック番号情報と、ページ番号情報が含まれる。
【０３３５】
転記制御部３１５は、取得した物理アドレスを、読み込み先情報として、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部３１２に読み込み指示する。転記制御部３１５は、読込部３１２から読み込みエラーを通知されると、転記処理後も当該クラスタを読み込むとエラーとなるように整合性を担保する処理をする。例えば、転記制御部３１５は、読み込みエラーとなったクラスタデータを読み込みエラーとなる状態のまま転記してもよいし、第１メモリ３５２が有する管理情報において、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を記憶しておき、読み込みエラーとなったクラスタデータは転記しないようにしてもよい。転記制御部３１５は、読込部３１２から読み込んだデータを受信する。
【０３３６】
転記制御部３１５は、転記するクラスタを書き込む。転記制御部３１５の転記するクラスタを書き込む処理は、転記制御部２１５の転記するクラスタを書き込む処理と同様である。転記制御部３１５は、書込部２１１への書き込み要求が、書き込みデータを圧縮した結果、少なくとも１ページ分になるまで上記処理を繰り返す。これは、記憶媒体２５１の入出力単位がページ４０２であるので、少なくとも１ページ分書き込みを行わなければ、後述する管理情報の更新処理ができず、転記処理が完了しないからである。
【０３３７】
転記制御部３１５は、転記したクラスタの管理情報を更新する。より詳細には、転記制御部３１５は、書込部２１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４を更新する。より詳細には、転記制御部３１５は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４における、変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に書き込み指示する。ただし、更新する書き込み先の記憶媒体２５１の物理アドレスは、生成した書き込み先情報に含まれるブロック番号情報と、ページ番号情報である。なお、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが一部である場合（図１９の右側のページが書き込み完了したページであった時の圧縮したクラスタデータその６に相当する）、転記制御部３１５は、当該クラスタについては、アドレス正引きテーブル１６４を更新しない。これは、当該クラスタに対しては、アドレス正引きテーブル１６４には、ひとつ前の連続するページの物理アドレスが登録されているためである。転記制御部３１５は、予め定められた規則に従って、上記処理を必要に応じて繰り返す。
【０３３８】
次に、第３の実施の形態のデータ記憶装置３００の動作について説明する。まず、図示しないホスト装置からの書き込み命令に応じて、データ記憶装置３００が行う書き込み処理の手順について、図２０を参照して説明する。図２０は、データ記憶装置３００が行う書き込み処理の手順の一例を示すフローチャートである。なお、図２０に示したフローチャートにおいては、図１４に示したフローチャートに対して書込制御部２１３が書込制御部３１３に代えられている。ただし、図２０に示したフローチャートにおいて、図１４に示した処理と実質的に同一な処理には同一の符号が付してある。
【０３３９】
（書き込み処理）
ステップ７２２（Ｓ７２２）において、書込制御部３１３は、管理情報を更新する。より詳細には、書込部２１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。書込制御部３１３は、書込部２１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４を更新する。書込制御部３１３は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に書き込み指示する。ただし、更新する書き込み先の記憶媒体２５１の物理アドレスは、生成した書き込み先情報に含まれるブロック番号情報とページ番号情報である。なお、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが一部である場合（図１９の右側のページが書き込み完了したページであった時の圧縮したクラスタその６に相当する）、書込制御部３１３は、当該クラスタについては、アドレス正引きテーブル１６４を更新しない。これは、当該クラスタに対しては、アドレス正引きテーブル１６４には、ひとつ前の連続するページの物理アドレスが登録されているためである。
【０３４０】
次に、図示しないホスト装置からの読み込み命令に応じて、データ記憶装置３００が行う読み込み処理の手順について、図２１を参照して説明する。図２１は、データ記憶装置３００が行う読み込み処理の手順の一例を示すフローチャートである。
【０３４１】
（読み込み処理）
ステップ８００（Ｓ８００）において、データ記憶装置３００は、読み込み命令を受け付ける。より詳細には、インタフェース部１０６は、図示しないホスト装置から、書き込み命令及び読み込み命令を含む命令を受け付ける。書き込み命令には、データ記憶装置アドレス情報及び書き込みデータが含まれる。読み込み命令には、データ記憶装置アドレス情報が含まれる。
【０３４２】
データ記憶装置アドレス情報は、データ記憶装置３００が図示しないホスト装置に対して提供するアドレス情報である。
【０３４３】
例えば、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤのデータ記憶装置アドレス情報の例として、ＬＢＡ（Logical  Block  Address）がある。ＬＢＡで特定されるデータのサイズは、例えば、５１２バイトのように定められている。データ記憶装置アドレスで特定されるデータのサイズと、論理アドレスで特定されるデータ（クラスタ）のサイズとは、前述したように一般に異なっている。しかし、データ記憶装置アドレスと論理アドレスは相互に変換可能である。例えば、データ記憶装置アドレス情報が５１２バイトごとに割り当てられ、論理アドレスが１０２４バイトごとに割り当てられている場合、データ記憶装置アドレス情報を２で除算して商を求めることにより、データ記憶装置アドレス情報を論理アドレスに変換することができる。
【０３４４】
第３の実施の形態では、説明の簡単化のために、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが同じである場合を例に説明する。ただし、これに限定されることなく、データ記憶装置３００は、データ記憶装置アドレスで特定されるデータのサイズと、クラスタのサイズとが異なるものであってもよい。
【０３４５】
インタフェース部１０６は、受け付けた命令が読み込み命令であったときは、読込制御部３１４に受け付けた読み込み命令を転送する。
【０３４６】
ステップ８０２（Ｓ８０２）において、読込制御部３１４は、読み込み先情報を生成する。より詳細には、読込制御部３１４は、インタフェース部１０６から読み込み命令を受け取ると、受け取った読み込み命令から、データ記憶装置アドレス情報を抽出する。読込制御部３１４は、抽出したデータ記憶装置アドレス情報を、対応する論理アドレスに変換する。読込制御部３１４は、変換した論理アドレスに対応付けられている情報を取得する。読込制御部３１４は、アドレス正引きテーブル１６４における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを読み込むように、第１アクセス部１０２に読み込み指示し、物理アドレスを示す情報を取得する。物理アドレスには、ブロック番号情報と、ページ番号情報が含まれる。
【０３４７】
ステップ８０４（Ｓ８０４）において、読込制御部３１４は、読み込み先情報で指定される領域をすべて読み込む。より詳細には、読込制御部３１４は、取得した物理アドレスを読み込み先情報とし、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部３１２に読み込み指示する。読込部３１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号とが含まれる。読込部３１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００の、ページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示し、当該ページのデータを取得する。
【０３４８】
なお、ページ４０２には複数の記録スロットが格納されているが、ページ４０２に格納される記録スロットの数は変更可能である。また、記憶媒体２５１へのデータの入出力単位はページ４０２であるので、当該ページ４０２のデータを全て読み込んでも、新たな処理は必要とならない。
【０３４９】
ステップ８０６（Ｓ８０６）において、読込制御部３１４は、メタデータを抽出する。より詳細には、読込部３１２は、取得したページのデータに含まれる記録スロットのデータを誤り訂正し、誤り訂正後の記録スロットのデータを取得する。読込部３１２は、誤り訂正が失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。読込制御部３１４は、読込部３１２から読み込みエラーを通知されると、読み込みエラーを示すデータをインタフェース部１０６に送信する。なお、第１メモリ３５２は、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を管理情報のひとつとしてさらに記憶してもよい。このようにすることで、再度同じ論理アドレスに対して読み込み要求されたときに、すばやく読み込みエラーを返却することができる。
【０３５０】
インタフェース部１０６は、読込制御部１１４からデータ（読み込みエラーを示すデータ）を受信すると、受信したデータ（読み込みエラーを示すデータ）を図示しないホスト装置に転送する。読込部３１２は、誤り訂正が成功した（誤り訂正可能だった）場合は、誤り訂正後のデータから、各記録スロットのメタデータを抽出する。読込部３１２は、抽出した各記録スロットのメタデータに含まれるマジックナンバーから、各記録スロットに記憶されているクラスタの配置パターンを算出する。なお、抽出した各記録スロットのメタデータに、当該記録スロットにクラスタが圧縮されて記憶されている旨のマジックナンバーが含まれていなかったときは、読込部３１２は、当該記録スロットにはクラスタが圧縮されずに記憶されていると判断する。読込部３１２は、誤り訂正後のデータから、算出したクラスタの配置パターンに従って、各クラスタのメタデータを抽出する。なお、圧縮されて記憶されているクラスタのメタデータが圧縮されずに記憶されている場合は、誤り訂正後のデータからそのまま抽出すればよい。一方、圧縮されて記憶されているクラスタのメタデータが圧縮されて記憶されている場合は、誤り訂正後のデータを展開部１０５に展開指示することで、当該メタデータを取得できる。
【０３５１】
なお、図１９に示すように、記録スロットの端に記憶されているクラスタは、記憶時点の状況によって、圧縮されたクラスタの一部であるのか全部であるのかのどちらかであるため、圧縮されたクラスタの一部であるのか全部であるのかのどちらかであるかを判断する必要がある。当該クラスタの展開を試みることで、この判断が可能である。より詳細には、読込部３１２は、記録スロットの端に記憶されているクラスタの展開を試みるように、展開部１０５に展開指示する。読込制御部３１４は、展開が成功し、展開した結果、クラスタのサイズ分のクラスタデータが得られた場合は、当該クラスタは圧縮されたクラスタの全部であったと判断できる。一方、読込制御部３１４は、展開に失敗した場合や、展開した結果、クラスタのサイズ分に満たないクラスタデータが得られた場合は、当該クラスタは圧縮されたクラスタの一部であったと判断できる。なお、図１９においては、説明の簡単化のために、記録スロットのメタデータや誤り訂正データの記憶領域は省略している。
【０３５２】
ここで、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが全部であると判断された場合、読込部３１２は、当該クラスタのメタデータを抽出する。一方、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが一部であると判断された場合（図１９の右側のページが読み込み対象のページであった時の圧縮したクラスタその６に相当する）、読込部３１２は、当該クラスタのメタデータは抽出しない。これは、当該クラスタに対しては、アドレス正引きテーブル１６４には、ひとつ前の連続するページの物理アドレスが登録されているため、当該クラスタに対して読み込み要求があった場合は、読込部３１２に対して、ひとつ前の連続するページが読み込み要求されるからである。
【０３５３】
また、図１９に示した圧縮したクラスタデータその４のように、当該ページ内の隣接する記録スロットの隣り合う端に記憶されているクラスタがともに一部であると判断された場合、それらのクラスタを合わせると全部となるため、読込部３１２は、当該全部となるクラスタのメタデータを抽出する。一方、図１９に示した圧縮したクラスタデータその１及びその２のように、当該ページ内の隣接する記録スロットの隣り合う端に記憶されているクラスタがともに全部であると判断された場合、読込部３１２は、それぞれのクラスタのメタデータを抽出する。
【０３５４】
また、図１９の左側のページが読み込み対象のページであった時の圧縮したクラスタデータその６のように、当該ページ４０２におけるクラスタの記憶順番の一番最後のクラスタが一部であると判断された場合、当該一番最後のクラスタは、物理アドレスが連続する次のページ４０２のクラスタの記憶順番の一番最初のクラスタと合わせられることにより、全部のクラスタデータとなる。したがって、読込部３１２は、誤り訂正処理までと同様の手順で連続する次のページ４０２に記憶されているデータを取得し、物理アドレスが連続する次のページ４０２のクラスタの記憶順番の一番最初のクラスタと合わせることで、全部となるクラスタデータを抽出する。また、読込部３１２は、当該全部となるクラスデータのメタデータを抽出する。一方、当該ページ４０２におけるクラスタの記憶順番の一番最後のクラスタが全部であると判断された場合、読込部３１２は、当該クラスタのメタデータを抽出する。
【０３５５】
ステップ８０８（Ｓ８０８）において、読込部３１２は、読み込み対象データを抽出する。より詳細には、読込部３１２は、受け付けた読み込み要求に含まれる読み込み対象のクラスタの論理アドレスを抽出する。読込部３１２は、抽出した各クラスタのメタデータに含まれる論理アドレスを抽出する。そして、読込部３１２は、抽出した読み込み対象のクラスタの論理アドレスと、抽出した各クラスタのメタデータに含まれる論理アドレスを比較して、一致するクラスタを読み込み対象のクラスタと判断する。
【０３５６】
なお、同じ論理アドレスを持つクラスタが複数存在する場合は、読込部３１２は、その複数存在するクラスタのうち、当該ページ４０２におけるクラスタの記憶順番が一番最後のクラスタを読み込み対象のクラスタと判断する。したがって、読込部３１２が当該ページ４０２におけるクラスタの記憶順番の一番最後のものから順番に論理アドレスを比較することにより、比較時間を短縮することができるという効果を奏する。
【０３５７】
ステップ８１０（Ｓ８１０）において、コントローラ３１０は、読み込み対象データを展開してホスト装置に返却する。より詳細には、読込部３１２は、読み込み対象のクラスタと判断したクラスタデータを展開部１０５に送信し、展開部１０５に対して展開を指示し、展開されたクラスタデータを取得する。なお、読込部３１２は、必要に応じて、読み込み対象のクラスタと判断したクラスタデータを展開部１０５に送信しない場合がある。この場合、読込部３１２は、以降の処理における展開されたクラスタデータを展開部１０５に送信しなかった読み込み対象のクラスタデータで読み替える。例えば、クラスタデータが圧縮されずに記憶媒体２５１に記憶されていた場合、読込部３１２は、クラスタデータを展開部１０５に送信しない。読込部３１２は、取得した展開されたクラスタデータを、読み込み要求元に送信する。読込制御部３１４は、読込部３１２から読み込んだデータを受信すると、受信したデータをインタフェース部１０６に送信する。インタフェース部１０６は、読込制御部３１４からデータを受信すると、受信したデータを図示しないホスト装置に転送する。
【０３５８】
次に、データ記憶装置３００が行う転記処理の手順について、図２２を参照して説明する。図２２は、データ記憶装置３００が行う転記処理の手順の一例を示すフローチャートである。転記制御部３１５は、予め定められた規則に従って、図２２に示す転記処理の制御をおこなう。なお、図２２に示したフローチャートにおいては、図１６に示したフローチャートに対して転記制御部２１５が転記制御部３１５に代えられている。ただし、図２２に示したフローチャートにおいて、図１６に示した処理と実質的に同一な処理には同一の符号が付してある。
【０３５９】
（転記処理）
ステップ９００（Ｓ９００）において、転記制御部３１５は、転記するクラスタを決定する。より詳細には、転記制御部３１５は、第１メモリ３５２から管理情報を読み込むように第１アクセス部１０２に読み込み指示し、管理情報を取得する。転記制御部３１５は、取得した管理情報から、任意の予め定められた方法を用いて、転記するクラスタを決定する。第３の実施の形態においては、転記するクラスタを決定する方法は公知のいずれの方法であってもよい。転記制御部３１５は、決定したクラスタの論理アドレスを、取得した管理情報から抽出する。
【０３６０】
ステップ９０２（Ｓ９０２）において、転記制御部３１５は、読み込み先情報を生成する。より詳細には、転記制御部３１５は、抽出した論理アドレスに対応付けられている情報を取得する。転記制御部３１５は、アドレス正引きテーブル１６４における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを読み込むように、第１アクセス部１０２に読み込み指示し、物理アドレスを示す情報を取得する。物理アドレスには、ブロック番号情報と、ページ番号情報が含まれる。
【０３６１】
ステップ９０４（Ｓ９０４）において、転記制御部３１５は、読み込み先情報で指定される領域をすべて読み込む。より詳細には、転記制御部３１５は、取得した物理アドレスを、読み込み先情報とし、変換した論理アドレスを読み込み対象のクラスタの論理アドレスとして、読込部３１２に読み込み指示する。読込部３１２は、読み込み要求元からクラスタの読み込み要求を受け付ける。クラスタの読み込み要求には、読み込み先情報と、読み込み対象のクラスタの論理アドレスを示すデータが含まれる。読み込み先情報には、ブロック番号と、ページ番号と、が含まれる。読込部３１２は、取得した読み込み先情報から、ブロック番号と、ページ番号を抽出し、抽出したブロック番号のブロック４００の、ページ番号のページ４０２のデータを読み込むように、記憶媒体アクセス部１０１に指示し、当該ページのデータを取得する。
【０３６２】
なお、ページ４０２には複数の記録スロットが格納されているが、ページ４０２に格納される記録スロットの数は変更可能である。また、記憶媒体２５１へのデータの入出力単位はページ４０２であるので、当該ページ４０２のデータを全て読み込んでも、新たな処理は必要とならない。
【０３６３】
ステップ９０６（Ｓ９０６）において、転記制御部３１５は、メタデータを抽出する。より詳細には、読込部３１２は、取得したページのデータに含まれる記録スロットのデータを誤り訂正し、誤り訂正後の記録スロットのデータを取得する。読込部３１２は、誤り訂正が失敗した（誤り訂正不能だった）場合は、読み込みエラーを読み込み要求元に通知する。転記制御部３１５は、読込部３１２から読み込みエラーを通知されると、転記処理後も当該クラスタを読み込むとエラーとなるように整合性を担保する処理をする。例えば、読み込みエラーとなったクラスタデータを読み込みエラーとなる状態のまま転記してもよいし、第１メモリ３５２が有する管理情報において、当該論理アドレスを読み込むと読み込みエラーとなる旨の情報を記憶しておき、読み込みエラーとなったクラスタデータは転記しないようにしてもよい。読込部３１２は、誤り訂正が成功した（誤り訂正可能だった）場合は、誤り訂正後のデータから、各記録スロットのメタデータを抽出する。読込部３１２は、抽出した各記録スロットのメタデータに含まれるマジックナンバーから、各記録スロットに記憶されているクラスタの配置パターンを算出する。なお、抽出した各記録スロットのメタデータに、当該記録スロットにクラスタが圧縮されて記憶されている旨のマジックナンバーが含まれていなかったときは、読込部３１２は、当該記録スロットにはクラスタが圧縮されずに記憶されていると判断する。
【０３６４】
読込部３１２は、誤り訂正後のデータから、算出したクラスタの配置パターンに従って、各クラスタのメタデータを抽出する。なお、読込部３１２は、圧縮されて記憶されているクラスタのメタデータが圧縮されずに記憶されている場合は、誤り訂正後のデータからそのまま抽出する。一方、圧縮されて記憶されているクラスタのメタデータが圧縮されて記憶されている場合は、読込部３１２は、誤り訂正後のデータを展開部１０５に展開指示することにより、当該メタデータを取得する。
【０３６５】
なお、図１９に示すように、記録スロットの端に記憶されているクラスタは、記憶時点の状況によって、圧縮されたクラスタの一部であるのか全部であるのかのどちらかである。したがって、読込部３１２は、記録スロットの端に記憶されているクラスタが、圧縮されたクラスタの一部であるのか全部であるのかのどちらかであるかを判断する必要がある。読込部３１２は、当該クラスタの展開を試みることにより、圧縮されたクラスタの一部であるのか全部であるかを判断する。より詳細には、読込部３１２は、記録スロットの端に記憶されているクラスタの展開を試みるように、展開部１０５に展開指示する。展開が成功し、展開した結果、クラスタのサイズ分のクラスタデータが得られた場合は、読込部３１２は、当該クラスタは圧縮されたクラスタの全部であったと判断する。一方、展開に失敗した場合や、展開した結果、クラスタのサイズ分に満たないクラスタデータが得られた場合は、読込部３１２は、当該クラスタは圧縮されたクラスタの一部であったと判断する。なお、図１９においては、説明の簡単化のために、記録スロットのメタデータや誤り訂正データの記憶領域は省略している。
【０３６６】
ここで、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが全部であると判断された場合、読込部３１２は、当該クラスタのメタデータを抽出する。一方、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが一部であると判断された場合（図１９の右側のページが読み込み対象のページであった時の圧縮したクラスタその６に相当する）、読込部３１２は、当該クラスタのメタデータは抽出しない。これは、当該クラスタに対しては、アドレス正引きテーブル１６４には、ひとつ前の連続するページの物理アドレスが登録されているため、当該クラスタに対して読み込み要求があった場合は、読込部３１２に対して、ひとつ前の連続するページが読み込み要求されるからである。
【０３６７】
また、図１９に示した圧縮したクラスタデータその４のように、当該ページ内の隣接する記録スロットの隣り合う端に記憶されているクラスタがともに一部であると判断された場合、それらのクラスタを合わせると全部となるため、読込部３１２は、当該全部となるクラスタのメタデータを抽出する。一方、図１９に示した圧縮したクラスタデータその１及びその２のように、当該ページ内の隣接する記録スロットの隣り合う端に記憶されているクラスタがともに全部であると判断された場合、読込部３１２は、それぞれのクラスタのメタデータを抽出する。
【０３６８】
また、図１９の左側のページが読み込み対象のページであった時の圧縮したクラスタデータその６のように、当該ページ４０２におけるクラスタの記憶順番の一番最後のクラスタが一部であると判断された場合、当該一番最後のクラスタは、物理アドレスが連続する次のページ４０２のクラスタの記憶順番の一番最初のクラスタと合わせられることにより、全部のクラスタデータとなる。したがって、読込部３１２は、誤り訂正処理までと同様の手順で連続する次のページ４０２に記憶されているデータを取得し、物理アドレスが連続する次のページ４０２のクラスタの記憶順番の一番最初のクラスタと合わせることで、全部となるクラスタデータを抽出する。また、読込部３１２は、当該全部となるクラスデータのメタデータを抽出する。一方、当該ページ４０２におけるクラスタの記憶順番の一番最後のクラスタが全部であると判断された場合、読込部３１２は、当該クラスタのメタデータを抽出する。
【０３６９】
ステップ９０８（Ｓ９０８）において、読込部３１２は、読み込み対象データを抽出する。より詳細には、読込部３１２は、受け付けた読み込み要求に含まれる読み込み対象のクラスタの論理アドレスを抽出する。読込部３１２は、抽出した各クラスタのメタデータに含まれる論理アドレスを抽出する。読込部３１２は、抽出した読み込み対象のクラスタの論理アドレスと、抽出した各クラスタのメタデータに含まれる論理アドレスを比較して、一致するクラスタを読み込み対象のクラスタと判断する。
【０３７０】
なお、同じ論理アドレスを持つクラスタが複数存在する場合は、読込部３１２は、その複数存在するクラスタのうち、当該ページ４０２におけるクラスタの記憶順番が一番最後のクラスタを読み込み対象のクラスタと判断する。したがって、読込部３１２は、当該ページ４０２におけるクラスタの記憶順番の一番最後のものから順番に論理アドレスを比較することにより、比較時間を短縮することができるという効果を奏する。
【０３７１】
ステップ９１０（Ｓ９１０）において、読込部３１２は、読み込んだ読み込み対象データを展開して取得する。より詳細には、読込部３１２は、読み込み対象のクラスタと判断したクラスタデータを展開部１０５に送信し、展開部１０５に展開指示し、展開されたクラスタデータを取得する。なお、読込部３１２は、必要に応じて、読み込み対象のクラスタと判断したクラスタデータを、展開部１０５に送信しない場合がある。この場合、読込部３１２は、以降の処理における展開されたクラスタデータを展開部１０５に送信しなかった読み込み対象のクラスタデータで読み替える。例えば、クラスタデータが圧縮されずに記憶媒体２５１に記憶されていた場合、読込部３１２は、クラスタデータを展開部１０５に送信しない。読込部３１２は、取得した展開されたクラスタデータを、読み込み要求元に送信する。転記制御部３１５は、読込部３１２から読み込んだデータを受信する。
【０３７２】
ステップ９３２（Ｓ９３２）において、転記制御部３１５は、管理情報を更新する。より詳細には、書込部２１１は、書き込み先のページの書き込み完了通知を書込要求元に通知する。転記制御部３１５は、書込部２１１から、書き込み完了通知を受信すると、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４を更新する。転記制御部３１５は、当該ページに書き込まれたクラスタに対して、アドレス正引きテーブル１６４における変換した論理アドレスが示す記憶媒体２５１の物理アドレスを、書き込み先の記憶媒体２５１の物理アドレスに更新するように、第１アクセス部１０２に書き込み指示する。ただし、更新する書き込み先の記憶媒体２５１の物理アドレスは、生成した書き込み先情報に含まれるブロック番号情報と、ページ番号情報である。なお、当該ページ４０２におけるクラスタの記憶順番の一番最初のクラスタが一部である場合（図１９の右側のページが書き込み完了したページであった時の圧縮したクラスタその６に相当する）、転記制御部３１５は、当該クラスタについては、アドレス正引きテーブル１６４を更新しない。これは、当該クラスタに対しては、アドレス正引きテーブル１６４には、ひとつ前の連続するページの物理アドレスが登録されているためである。
【０３７３】
このように、第３の実施の形態によれば、第２の実施の形態におけるアドレス正引きテーブル１６２のサイズに比べて、アドレス正引きテーブル１６４のサイズを削減することができる。つまり、第３の実施の形態によれば、第２の実施の形態における第１メモリ２５２として確保すべきメモリ容量に比べて、第１メモリ３５２として確保すべきメモリ容量を削減することができる。
【０３７４】
（第４の実施の形態）
ところで、第１〜第３の実施の形態では、書込部１１１又は書込部２１１がデータの圧縮処理を行わないように指示する場合がある。また、読込部１１２、読込部２１２又は読込部３１２がデータの展開処理を行わないように指示する場合がある。第４の実施の形態は、圧縮処理及び展開処理を行わない構成の組合せの例である。なお、第４の実施の形態で説明する圧縮処理及び展開処理を行わない構成の組合わせは、例であり、他のさまざまな組合わせであってもよい。ここでは、データ記憶装置３００の変形例として構成される第４の実施の形態を説明する。ただし、第４の実施の形態は、データ記憶装置１００又はデータ記憶装置２００の変形例として構成されてもよい。
【０３７５】
（第１の組合わせ）
まず、第１の組合せを説明する。第１の組合せでは、データ記憶装置３００（データ記憶装置１００又はデータ記憶装置２００）は、ホスト装置から書き込み要求されるデータは圧縮して記憶せず、転記されるデータは圧縮して記憶する。つまり、データ記憶装置３００は、ホスト装置から書き込み要求されたクラスタデータを記憶媒体に記憶する場合にはクラスタデータを圧縮せず、転記するクラスタデータを記憶媒体に記憶する場合にクラスタデータを圧縮する。そして、データ記憶装置３００は、ホスト装置から書き込み要求されて記憶媒体が記憶しているクラスタデータを読み込む場合には読み込んだクラスタデータを展開せず、転記されて記憶媒体に記憶されたクラスタデータを記憶媒体から読み込む場合には読み込んだクラスタデータを展開する。
【０３７６】
より詳細には、書込部２１１は、書込制御部３１３から書き込み要求を受け付けた場合、書き込み対象のクラスタデータを圧縮部１０４に送信せずに、書き込み対象のクラスタデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。したがって、ホスト装置から書き込み要求されて記憶されたデータを読み込む場合には、当該データは圧縮されずに記憶されているので、読込部３１２は、記憶媒体２５１から読み込んだデータを、展開部１０５に送信せずに、読み込み要求元に返却する。
【０３７７】
一方、書込部２１１は、転記制御部３１５から書き込み要求を受け付けたときは、書き込み対象のクラスタデータを圧縮部１０４に送信し、圧縮されたデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。したがって、転記されたデータを読み込む場合には、当該データは圧縮されて記憶されているので、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信し、展開されたデータを読み込み要求元に返却する。
【０３７８】
（第２の組合せ）
次に、第１の組合せを基にした第２の組合せを説明する。第１の組合せでは、データ記憶装置３００は、転記されたデータは圧縮されて記憶されている。従って、第２の組合せでは、過去に転記されたデータを転記元にする場合、転記元のデータを圧縮されたまま読み込み、圧縮されたままの状態で転記先に書き込むことにより、転記処理の読み込み時におけるデータの展開処理と、転記処理の書き込み時におけるデータの圧縮処理とを削減する。
【０３７９】
第２の組合せにかかるデータ記憶装置のコントローラは、第１の組合せにかかるデータ記憶装置のコントローラに加えて、さらに、転記制御部が、予め定められた規則に従って決定する転記するクラスタデータのうち、当該転記制御部の制御により記憶媒体に書き込まれたクラスタデータの中から再転記するクラスタデータに関して、読み込んだクラスタデータを外部の展開部により展開させないよう制御し、クラスタデータを圧縮部により圧縮させないように制御することを特徴とする。
【０３８０】
より詳細には、書込部２１１は、書込制御部３１３から書き込み要求を受け付けた場合は、書き込み対象のクラスタデータを圧縮部１０４に送信せずに、記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。ホスト装置から書き込み要求されて記憶されたデータを、ホスト装置からの読み込み要求により読み込む場合には、当該データは圧縮されずに記憶されているので、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信せずに、読み込み要求元に返却する。
【０３８１】
また、読み込み対象のデータが過去に転記されたデータであり、且つ、ホスト装置読み込み制御部から読み込み要求された場合には、当該データは圧縮されて記憶されているので、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信し、展開されたデータを読み込み要求元に返却する。
【０３８２】
一方、読み込み対象のデータが過去に転記されたデータであり、且つ、転記制御部から読み込み要求された場合は、当該データは圧縮されて記憶されているが、転記処理の読み込み時におけるデータの展開処理を削減するために、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信せずに、読み込み要求元に返却する。
【０３８３】
書込部２１１は、転記制御部３１５から書き込み要求を受け付けた場合、転記対象のデータが過去に転記されたデータでなければ（ホスト装置から書き込み要求され、転記されていないデータである場合）、書き込み対象のクラスタデータを圧縮部１０４に送信して、圧縮されたデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。
【０３８４】
一方、書込部２１１は、転記制御部３１５から書き込み要求を受け付けた場合、転記対象のデータが過去に転記されたデータであれば、転記処理の書き込み時におけるデータの圧縮処理を削減するために、書き込み対象のクラスタデータを圧縮部１０４に送信せずに、記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。
【０３８５】
（第３の組合せ）
次に、第３の組合せを説明する。第３の組合せでは、データ記憶装置３００は、ホスト装置から書き込み要求されたデータを圧縮して記憶し、転記処理において常に転記元のデータを圧縮されたまま読み込み、圧縮されたままの状態で転記先に書き込むことにより、転記処理の読み込み時におけるデータの展開処理と、転記処理の書き込み時におけるデータの圧縮処理とを常に削減する。
【０３８６】
第３の組合せでは、データ記憶装置３００（データ記憶装置１００又はデータ記憶装置２００）のコントローラは、さらに、書込制御部が、クラスタデータを圧縮部により圧縮させるように制御し、読込制御部が、クラスタデータを展開部に展開させるように制御し、転記制御部が、クラスタデータを展開部に展開させないように制御し、クラスタデータを圧縮部により圧縮させないように制御することを特徴とする。
【０３８７】
より詳細には、書込部２１１は、書込制御部３１３から書き込み要求を受け付けた場合は、書き込み対象のクラスタデータを圧縮部１０４に送信し、圧縮したデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。
【０３８８】
転記制御部３１５から読み込み要求された場合は、当該データは圧縮されて記憶されているが、転記処理の読み込み時におけるデータの展開処理を削減するために、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信せずに、読み込み要求元に返却する。
【０３８９】
書込部２１１は、転記制御部３１５から書き込み要求を受け付けた場合は、転記処理の書き込み時におけるデータの圧縮処理を削減するために、書き込み対象のクラスタデータを圧縮部１０４に送信せずに、記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。
【０３９０】
一方、読込制御部３１４から読み込み要求された場合は、当該データは圧縮されて記憶されているので、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信し、展開したデータを読み込み要求元に返却する。
【０３９１】
（第４の組合せ）
次に、第４の組合せを説明する。第４の組合せでは、データ記憶装置３００は、圧縮処理に予め定められた閾値以上の時間がかかる場合、クラスタを圧縮して記憶することを取りやめ、クラスタを圧縮せずに記憶する。
【０３９２】
第４の組合せでは、データ記憶装置３００（データ記憶装置１００又はデータ記憶装置２００）のコントローラは、さらに、書込制御部が、圧縮部による圧縮に要する時間が予め定められた時間以上である場合には、圧縮部による圧縮を取りやめ、圧縮を取りやめられたクラスタデータを書込先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと書込先の物理アドレスとの対応を記憶部に書き込むよう制御し、読込制御部が、読み込んだクラスタデータが圧縮されていない場合には、読み込んだクラスタデータを展開部に展開させずにそのまま出力するよう制御し、転記制御部が、読み込んだクラスタデータが圧縮されていない場合には、読み込んだクラスタデータを展開部に展開させないよう制御し、圧縮部による圧縮に要する時間が予め定められた時間以上である場合には、圧縮部による圧縮を取りやめ、圧縮を取りやめられたクラスタデータを転記先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと転記先の物理アドレスとの対応を記憶部に書き込むよう制御することを特徴とする。
【０３９３】
より詳細には、書込部２１１は、書き込み対象のクラスタデータを圧縮部１０４に送信し、予め定められた閾値未満の時間で圧縮部１０４から圧縮したデータを受け取ると、取得した圧縮したクラスタデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。したがって、圧縮されて記憶されているデータを読み込む場合には、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信し、展開されたデータを読み込み要求元に返却する。
【０３９４】
書込部２１１は、書き込み対象のクラスタデータを圧縮部１０４に送信し、予め定められた閾値以上の時間がたっても圧縮部１０４から圧縮したデータを受け取れなかった場合は、（圧縮されていない）書き込み対象のクラスタデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。したがって、圧縮されずに記憶されているデータを読み込む場合には、読込部３１２は、記憶媒体２５１から読み込んだデータを、展開部１０５に送信せずに、読み込み要求元に返却する。
【０３９５】
ところで、一般に、データの圧縮処理は、データの転送処理等と比べると、比較的処理時間がかかる。ここで、データ記憶装置３００のピーク書き込み性能は、転記処理を実行する必要がない状態で、ホスト装置からの書き込み処理のみを実行している場合の性能を指す。したがって、第１の組合せ又は第２の組合せで挙げた、ホスト装置書き込み処理においてデータの圧縮処理を行わない構成では、データ記憶装置のピーク書き込み性能を向上させることができるという効果を奏する。
【０３９６】
一方、ＮＡＮＤフラッシュメモリのような半導体記憶媒体は、データの転送処理やデータの読み込み処理等に比べて、データの書き込み処理には処理時間がかかる。ここで、書き込み要求されたデータの圧縮効率が非常に良い場合は、半導体記憶媒体への書き込み量が相当量減り、結果として、半導体記憶媒体への書き込み処理時間が相当量減ることになる。このため、前述したデータの圧縮処理時間を勘案しても総合的な処理時間が短縮する場合がある。したがって、データの圧縮効率が非常に良い場合、第４の実施の形態の第３の組合せで挙げたデータ記憶装置３００は、ホスト装置書き込み処理においてデータの圧縮処理を行う構成とすることにより、データ記憶装置の書き込み性能を向上することができるという効果を奏する。また、第４の実施の形態の第３の組合せで挙げたデータ記憶装置３００は、ホスト装置書き込み処理においてデータの圧縮処理を行う構成とすることにより、記憶媒体への書き込み量を最小にすることができるため、データ記憶装置の寿命を最大化できるという効果を奏する。
【０３９７】
また、第４実施の形態の第４の組合せで挙げたデータ記憶装置３００は、圧縮処理に予め定められた閾値以上の時間がかかる場合は、クラスタデータを圧縮して記憶することを取りやめ、クラスタデータを圧縮せずに記憶することにより、データ記憶装置の書き込み性能と、データ記憶装置の寿命の長期化とのバランスを適切に設定することができるという効果を奏する。
【０３９８】
（第５の実施の形態）
第４の実施の形態の効果の一例として、データ記憶装置３００のピーク書き込み性能が向上するという効果を述べたが、ホスト装置から書き込み要求されたデータを圧縮せずに記憶媒体に記憶すると、転記処理においてデータを圧縮して記憶媒体に記憶しても、記憶媒体に書き込むデータの容量が、データを全く圧縮せずに記憶する場合に比べて少ないものの比較的多くなってしまう。
【０３９９】
ところで、一般的な傾向として、データの圧縮率を高めるとデータの圧縮処理時間が長くなり、データの圧縮率を低くするとデータの圧縮処理時間は短くなる。したがって、ホスト装置から書き込み要求されたデータは低い圧縮率で圧縮して記憶媒体に記憶し、転記処理で書き込むデータは高い圧縮率で圧縮して記憶媒体に記憶することにより、データ記憶装置のピーク書き込み性能をあまり犠牲にすることなく、記憶媒体に書き込むデータの容量を抑えることができる。
【０４００】
以下、第５の実施形態の具体例について説明する。ここでは、データ記憶装置３００の変形例として構成される第５の実施の形態を説明する。ただし、第５の実施の形態は、データ記憶装置１００又はデータ記憶装置２００の変形例として構成されてもよい。なお、第５実施の形態におけるデータ記憶装置３００の構成の組合せは一例であり、データ記憶装置３００は、他のさまざまな構成の組合せであってもよい。
【０４０１】
（第１の組合わせ）
まず、第１の組合せを説明する。第１の組合せでは、データ記憶装置３００（データ記憶装置１００又はデータ記憶装置２００）のコントローラは、さらに、書込制御部が、外部から書き込みが要求されたデータを、クラスタのサイズとなる複数のクラスタデータに変換し、変換したクラスタデータを外部の圧縮部により第１の圧縮率で圧縮させ、圧縮されたクラスタデータを書込先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと書込先の物理アドレスとの対応を記憶部に書き込むよう制御し、読込制御部が、外部から読み込みが要求されたデータに対して、記憶部から物理アドレスを取得し、取得した物理アドレスに応じて記憶媒体からクラスタデータを読み込み、読み込んだクラスタデータを外部の展開部により第１の圧縮率又は第１の圧縮率よりも高い第２の圧縮率に応じて展開させ、展開されたクラスタデータを出力するよう制御し、転記制御部が、記憶媒体に書き込まれたクラスタデータの中から転記するクラスタデータを予め定められた規則に従って決定し、決定したクラスタデータを記憶媒体から読込み、読み込んだクラスタデータを第１の圧縮率又は第２の圧縮率に応じて外部の展開部により展開させ、展開させたクラスタデータを外部の圧縮部により第２の圧縮率で圧縮させ、圧縮されたクラスタデータを転記先の物理アドレスに応じて記憶媒体に書き込むよう制御するとともに、論理アドレスと転記先の物理アドレスとの対応を記憶部に書き込むよう制御することを特徴とする。
【０４０２】
より詳細には、第１の組合せであるデータ記憶装置３００において、圧縮部１０４は、さらに複数の圧縮率を設定可能にされている。また、展開部１０５は、さらに複数の圧縮率で圧縮されたデータをそれぞれ展開できるように設定可能にされている。書込部２１１は、書込制御部３１３から書き込み要求を受け付けた場合、書き込み対象のクラスタデータを低い圧縮率で圧縮するように圧縮部１０４に送信し、圧縮したデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。したがって、読込部３１２は、ホスト装置から書き込み要求されて記憶されたデータを読み込む場合には、当該データは低い圧縮率で圧縮されて記憶されているので、記憶媒体２５１から読み込んだデータを低い圧縮率で圧縮されているとして展開処理するように展開部１０５に送信し、展開したデータを読み込み要求元に返却する。
【０４０３】
一方、書込部２１１は、転記制御部３１５から書き込み要求を受け付けた場合、書き込み対象のクラスタデータを高い圧縮率で圧縮するように圧縮部１０４に送信し、圧縮したデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。したがって、読込部３１２は、転記されたデータを読み込む場合には、当該データは高い圧縮率で圧縮されて記憶されているので、記憶媒体２５１から読み込んだデータを高い圧縮率で圧縮されているとして展開するように展開部１０５に送信し、展開したデータを読み込み要求元に返却する。
【０４０４】
（第２の組合わせ）
次に、第２の組合せを説明する。第２の組合せでは、データ記憶装置３００は、過去に転記されたデータを転記元にする場合、過去に転記した場合の圧縮率と今回転記する場合の圧縮率が同じである場合は、第４の実施の形態の第２の組合せと同様に、転記元のデータを圧縮されたまま読み込み、圧縮されたままの状態で転記先に書き込むことにより、転記処理の読み込み時におけるデータの展開処理と、転記処理の書き込み時におけるデータの圧縮処理とを削減する。
【０４０５】
より詳細には、圧縮部１０４は、複数の圧縮率を設定できるようになっており、展開部１０５は、複数の圧縮率を設定できるようになっている。書込部２１１は、書込制御部３１３から書き込み要求を受け付けた場合、書き込み対象のクラスタデータを低い圧縮率で圧縮するように圧縮部１０４に送信し、圧縮したデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。したがって、ホスト装置から書き込み要求されて記憶されたデータを読み込む場合には、当該データは低い圧縮率で圧縮されて記憶されているので、読込部３１２は、記憶媒体２５１から読み込んだデータを低い圧縮率で圧縮されているとして展開処理するように展開部１０５に送信し、展開したデータを読み込み要求元に返却する。
【０４０６】
また、読み込み対象のデータが過去に転記されたデータであり、且つ、読込制御部３１４から読み込み要求された場合、当該データは高い圧縮率で圧縮されて記憶されているので、読込部３１２は、記憶媒体２５１から読み込んだデータを高い圧縮率で圧縮されているとして展開するように展開部１０５に送信し、展開したデータを読み込み要求元に返却する。
【０４０７】
一方、読み込み対象のデータが過去に転記されたデータであり、且つ、転記制御部から読み込み要求された場合、当該データは高い圧縮率で圧縮されて記憶されているが、過去に転記した場合の圧縮率と今回転記する場合の圧縮率が同じである場合は、転記処理の読み込み時におけるデータの展開処理を削減するために、読込部３１２は、記憶媒体２５１から読み込んだデータを展開部１０５に送信せずに、読み込み要求元に返却する。
【０４０８】
書込部２１１は、転記制御部３１５から書き込み要求を受け付けた場合は、転記対象のデータが過去に転記されたデータでない場合（ホスト装置から書き込み要求され、転記されていないデータである場合）は、書き込み対象のクラスタデータを高い圧縮率で圧縮するように圧縮部１０４に送信し、圧縮したデータを記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。
【０４０９】
一方、書込部２１１は、転記制御部３１５から書き込み要求を受け付けると、転記対象のデータが過去に転記されたデータである場合、過去に転記した場合の圧縮率と今回転記する場合の圧縮率が同じであれば、転記処理の読み込み時におけるデータの圧縮処理を削減するために、書き込み対象のクラスタデータを圧縮部１０４に送信せずに、記憶媒体２５１に書き込むように、記憶媒体アクセス部１０１に書き込み指示する。
【０４１０】
（第６の実施の形態）
データ圧縮機能を有しないデータ記憶装置は、記憶媒体におけるデータ記憶可能な容量から、転記処理の動作等に必要な予め定められた容量を差し引いた容量を、ホスト装置に対して使用を許可する容量（以下、表記容量と記す）としてホスト装置に提供している。第６の実施の形態では、第１〜第５の実施の形態で説明したデータ圧縮機能を有するデータ記憶装置における、表記容量の構成のバリエーションを説明する。なお、第６の実施の形態では、データ圧縮機能を有しないデータ記憶装置、及び第１〜第５の実施の形態で説明したデータ圧縮機能を有するデータ記憶装置において、記憶媒体におけるデータ記憶可能な容量は同一であり、また、転記処理の動作等に必要な予め定められた容量も同一であるとして説明するが、この限りではない。第６の実施の形態は、データ記憶装置１００、データ記憶装置２００又はデータ記憶装置３００の変形例として構成されてもよい。
【０４１１】
（第１の構成）
表記容量の第１の構成は、データ圧縮機能を有しないデータ記憶装置の表記容量と同様の表記容量をホスト装置に提供する。本構成では、データの圧縮結果の実績に応じて、記憶媒体に書き込むデータの量が減少し、データ記憶装置の寿命が長期化するという効果を奏する。
【０４１２】
（第２の構成）
データ圧縮機能を有するデータ記憶装置では、データの圧縮結果の実績に応じて、データを圧縮しない場合と比べると、記憶媒体に実際に記憶されている記憶媒体上のデータの量は同じでも、より多くのデータを記憶していることになる。したがって、第２の構成は、データ圧縮機能を有しないデータ記憶装置の表記容量よりも多い容量をホスト装置に提供する。
【０４１３】
なお、データの圧縮結果の実績によっては、ホスト装置に提供した表記容量よりも少ない容量のデータしか記憶媒体に実際に記憶できない場合がある。このような場合、ホスト装置からのさらなる書き込み要求を処理できなくなる。したがって、このような場合は、ホスト装置からのさらなる書き込み要求に対して、データ記憶装置は、書き込みエラーを返す。なお、データ記憶装置は、データの圧縮結果の実績に従って、記憶可能な残り容量をホスト装置に対して通知する機能を有してもよい。
【０４１４】
また、第２の実施の形態で説明したように、第６の実施の形態にかかるデータ記憶装置２００は、圧縮後のデータのサイズを予め定められた単位に合わせる場合、表記容量の最大値を、最大圧縮時に記憶可能な容量としてもよい。この場合、データ記憶装置には、例えばホスト装置からの書き込み要求を処理できなくなると、書き込みエラーを返すという制約が付される。
【０４１５】
具体的には、例えば、クラスタの圧縮後のデータのサイズを、クラスタが圧縮されない場合に記憶される領域を４分割した単位に合わせる場合には、表記容量の最大値を、データ圧縮機能を有しないデータ記憶装置の表記容量の４倍の表記容量としてもよい。ただし、この場合は、上記の制約などが付される。
【０４１６】
本構成では、データの圧縮結果の実績に応じて、記憶媒体に書き込むデータの容量が減少し、データ記憶装置の寿命が長期化するという効果に合わせて、データ圧縮機能を有しないデータ記憶装置の表記容量よりも多い表記容量をホスト装置に提供できるという効果を奏する。
【０４１７】
（第７の実施の形態）
ところで、第１〜第６の実施の形態では、圧縮及び展開処理として、可逆圧縮を前提とする構成をしていた。一方、圧縮されたデータを展開すると、圧縮前のデータには戻らない非可逆圧縮がある。ここで、圧縮前のデータと、非可逆圧縮されたデータを展開して得られたデータとの間で、一致しない箇所を、非可逆圧縮されたデータを展開して得られたデータにおける、圧縮前のデータに対する誤りであると考えることができる。したがって、圧縮前のデータを誤り訂正データの生成の基になるデータとして誤り訂正符号を生成すると、一致しない箇所の数が生成した誤り訂正符号で訂正できる範囲に収まっている限り、非可逆圧縮されたデータを展開して得られたデータを誤り訂正符号で訂正することにより、圧縮前のデータを得ることができる。なお、第７の実施の形態では、一致しない箇所の数が生成した誤り訂正符号で訂正できる範囲に収まっているとして、説明する。第７の実施の形態は、データ記憶装置１００、データ記憶装置２００又はデータ記憶装置３００の変形例として構成されてもよい。
【０４１８】
データ記憶装置２００は、クラスタデータを記憶媒体に記憶する場合に、圧縮前のデータを誤り訂正データの生成の元となるデータとして、非可逆圧縮データ訂正用誤り訂正データを生成し、クラスタデータを非可逆圧縮する。そして、データ記憶装置２００は、非可逆圧縮したクラスタデータと、生成した非可逆圧縮データ訂正用誤り訂正データを、合わせて記憶する。
【０４１９】
また、データ記憶装置２００は、記憶媒体からクラスタデータを読み込む場合に、読み込んだクラスタデータを非可逆圧縮されたデータとして展開し、展開されたクラスタデータを、読み込んだクラスタデータと合わせて記憶されている非可逆圧縮データ訂正用誤り訂正データを用いて訂正する。
【０４２０】
以下、第７の実施の形態は、第２の実施の形態の変形例として説明する。第２の実施の形態の書込部２１１は、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータとを合わせたデータが、分割したサイズの整数倍以下となった場合、分割したサイズの整数倍の領域から圧縮対象のクラスタのメタデータと圧縮後のクラスタデータとを合わせたデータの領域を除いた残りの領域に対し、ダミーデータを書き込むことにより、分割したサイズの整数倍のサイズにクラスタデータのサイズを揃える。
【０４２１】
一方、第７の実施の形態の書込部２１１は、図２３に示すように、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、圧縮前のデータを誤り訂正データの生成の元となるデータとして生成した誤り訂正データである非可逆圧縮データ訂正用誤り訂正データと、を合わせたデータが、分割したサイズの整数倍以下となった場合、分割したサイズの整数倍の領域から、圧縮対象のクラスタのメタデータと、圧縮後のクラスタデータと、非可逆圧縮訂正用誤り訂正データとを合わせたデータの領域を除いた残りの領域に対し、ダミーデータを書き込むことにより、分割したサイズの整数倍のサイズにクラスタデータのサイズを揃える。
【０４２２】
また、第２の実施の形態の読込部２１２は、抽出したクラスタデータを、展開部１０５に送信し、展開部１０５に展開指示し、展開されたクラスタデータを取得する。一方、第７の実施の形態の読込部２１２は、抽出したクラスタデータを、展開部１０５に送信し、展開部１０５に展開指示し、展開されたクラスタデータを取得し、展開されたクラスタデータを誤り訂正データの生成の基のデータであるとして、また、当該クラスタに対する非可逆圧縮訂正用誤り訂正データを抽出し、抽出した非可逆圧縮訂正用誤り訂正データを誤り訂正データであるとして誤り訂正し、誤り訂正されたクラスタデータを取得する。
【０４２３】
このように、第７の実施形態にかかるデータ記憶装置２００は、非可逆圧縮処理と、非可逆圧縮されたデータの展開処理を行うように構成されてもよい。
【０４２４】
また、本発明の実施形態を複数の組合わせによって説明したが、これらの実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。これら新規の実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０４２５】
１００、２００、３００  データ記憶装置
１０１  記憶媒体アクセス部
１０２  第１アクセス部
１０３  第２アクセス部
１０４  圧縮部
１０５  展開部
１０６  インタフェース部
１１０、２１０、３１０  コントローラ
１１１、２１１  書込部
１１２、２１２、３１２  読込部
１１３  ２１３、３１３  書込制御部
１１４、２１４、３１４  読込制御部
１１５、２１５、３１５  転記制御部
１５１、２５１  記憶媒体
１５２、２５２、３５２  第１メモリ
１５３  第２メモリ
１６０、１６２、１６４  アドレス正引きテーブル
４００  ブロック
４０２  ページ
【図１】
0005687639.tif 000002
【図２】
0005687639.tif 000003
【図３】
0005687639.tif 000004
【図４】
0005687639.tif 000005
【図５】
0005687639.tif 000006
【図６】
0005687639.tif 000007
【図７】
0005687639.tif 000008
【図８】
0005687639.tif 000009
【図９】
0005687639.tif 000010
【図１０】
0005687639.tif 000011
【図１１】
0005687639.tif 000012
【図１２】
0005687639.tif 000013
【図１３】
0005687639.tif 000014
【図１４】
0005687639.tif 000015
【図１５】
0005687639.tif 000016
【図１６】
0005687639.tif 000017
【図１７】
0005687639.tif 000018
【図１８】
0005687639.tif 000019
【図１９】
0005687639.tif 000020
【図２０】
0005687639.tif 000021
【図２１】
0005687639.tif 000022
【図２２】
0005687639.tif 000023
【図２３】
0005687639.tif 000024