(57)【特許請求の範囲】
【請求項１】
第１のソリッドステートドライブと、
前記第１のソリッドステートドライブを制御するストレージコントローラとを具備し、
前記ストレージコントローラは、
前記第１のソリッドステートドライブの物理領域が割り当てられる論理領域を有する論理ユニットを定義する論理ユニット管理部と、
前記論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集するアクセス統計値収集部と、
前記書き込み頻度に基づいて、前記書き込み頻度が低い第１の小論理アドレス領域の集合と前記第１の小論理アドレス領域の集合を除く第２の小論理アドレス領域の集合とをそれぞれ前記論理ユニットから選択する選択部と、
前記第１の小論理アドレス領域の集合のデータを前記第１のソリッドステートドライブにまとめて再書き込みするための第１の再書き込みと、前記第２の小論理アドレス領域の集合のデータを前記第１のソリッドステートドライブにまとめて再書き込みするための第２の再書き込みとを実行する再書き込み部とを具備する
ストレージ装置であって、
ハードディスクドライブを更に具備し、
前記ストレージコントローラは、前記第１のソリッドステートドライブに加えて前記ハードディスクドライブを制御し、
前記論理ユニット管理部は、前記第１のソリッドステートドライブに加えて前記ハードディスクドライブを用いて前記論理ユニットを定義し、
前記アクセス統計値収集部は、前記小論理アドレス領域各々の前記書き込み頻度に加えて前記小論理アドレス領域各々の読み出し頻度を収集し、
前記選択部は、前記書き込み頻度及び前記読み出し頻度に基づいて、前記書き込み頻度が低く且つ前記読み出し頻度が高い小論理アドレス領域の集合を前記第１の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第１の小論理アドレス領域の集合を除く前記書き込み頻度が高い小論理アドレス領域の集合を前記第２の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第１の小論理アドレス領域の集合及び前記第２の小論理アドレス領域の集合を除く第３の小論理アドレス領域の集合を前記論理ユニットから選択し、
前記再書き込み部は、前記第３の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みするための第３の再書き込みを実行する
ストレージ装置。
【請求項２】
前記選択部は、前記書き込み頻度が高い小論理アドレス領域から順に、予め定められた第２の数の小論理アドレス領域を、前記第２の小論理アドレス領域の集合として前記論理ユニットから選択し、前記第２の小論理アドレス領域の集合を除く、残りの前記読み出し頻度が高い小論理アドレス領域から順に、予め定められた第１の数の小論理アドレス領域を、前記第１の小論理アドレス領域の集合として前記論理ユニットから選択する請求項１記載のストレージ装置。
【請求項３】
予備のソリッドステートドライブとしての第２のソリッドステートドライブを更に具備し、
前記再書き込み部は、前記第１の小論理アドレス領域の集合のデータを前記予備のソリッドステートドライブにまとめて再書き込みするための第４の再書き込みを前記第１の再書き込みに代えて実行し、前記第２の小論理アドレス領域の集合のデータを前記予備のソリッドステートドライブにまとめて再書き込みするための第５の再書き込みを前記第２の再書き込みに代えて実行し、且つ前記第３の小論理アドレス領域の集合のうち前記第１のソリッドステートドライブに割り当てられている第４の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みするための第６の再書き込みを前記第３の再書き込みに代えて実行し、
前記論理ユニット管理部は、前記第４、第５及び第６の再書き込みの後、前記予備のソリッドステートドライブとして、前記第２のソリッドステートドライブから前記第１のソリッドステートドライブに切り替え、且つ前記論理ユニットに割り当てられるソリッドステートドライブを、前記第１のソリッドステートドライブから前記第２のソリッドステートドライブに切り替える
請求項１記載のストレージ装置。
【請求項４】
前記再書き込み部は、前記再書き込みに際し、前記第１のソリッドステートドライブのデータを前記ハードディスクドライブにコピーしてから前記第１のソリッドステートドライブのデータを消去し、しかる後に、前記第１の小論理アドレス領域の集合のデータを前記ハードディスクドライブから読み出して、当該第１の小論理アドレス領域の集合のデータを前記第１のソリッドステートドライブにまとめて再書き込みするための第４の再書き込みを前記第１の再書き込みに代えて実行し、且つ前記第２の小論理アドレス領域の集合のデータを前記ハードディスクドライブから読み出して、当該第２の小論理アドレス領域の集合のデータを前記第１のソリッドステートドライブにまとめて再書き込みするための第５の再書き込みを前記第２の再書き込みに代えて実行する
請求項１記載のストレージ装置。
【請求項５】
ソリッドステートドライブ及びハードディスクドライブを制御するストレージコントローラにおいて、
前記ソリッドステートドライブの物理領域が割り当てられる論理領域を有する論理ユニットを定義する論理ユニット管理部と、
前記論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集するアクセス統計値収集部と、
前記書き込み頻度に基づいて、前記書き込み頻度が低い第１の小論理アドレス領域の集合と前記第１の小論理アドレス領域の集合を除く第２の小論理アドレス領域の集合とをそれぞれ前記論理ユニットから選択する選択部と、
前記第１の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第１の再書き込みと、前記第２の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第２の再書き込みとを実行する再書き込み部と
を具備し、
前記論理ユニット管理部は、前記ソリッドステートドライブに加えて前記ハードディスクドライブを用いて前記論理ユニットを定義し、
前記アクセス統計値収集部は、前記小論理アドレス領域各々の前記書き込み頻度に加えて前記小論理アドレス領域各々の読み出し頻度を収集し、
前記選択部は、前記書き込み頻度及び前記読み出し頻度に基づいて、前記書き込み頻度が低く且つ前記読み出し頻度が高い小論理アドレス領域の集合を前記第１の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第１の小論理アドレス領域の集合を除く前記書き込み頻度が高い小論理アドレス領域の集合を前記第２の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第１の小論理アドレス領域の集合及び前記第２の小論理アドレス領域の集合を除く第３の小論理アドレス領域の集合を前記論理ユニットから選択し、
前記再書き込み部は、前記第３の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みするための第３の再書き込みを実行する
ストレージコントローラ。
【請求項６】
ソリッドステートドライブ及びハードディスクドライブを制御するストレージコントローラにおいて、前記ソリッドステートドライブにデータを再配置する方法であって、
前記ソリッドステートドライブと前記ハードディスクドライブとの物理領域が割り当てられる論理領域を有する論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度及び読み出し頻度を収集し、
前記書き込み頻度及び前記読み出し頻度に基づいて、前記書き込み頻度が低く且つ前記読み出し頻度が高い小論理アドレス領域の集合を第１の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第１の小論理アドレス領域の集合を除く前記書き込み頻度が高い小論理アドレス領域の集合を第２の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第１の小論理アドレス領域の集合及び前記第２の小論理アドレス領域の集合を除く第３の小論理アドレス領域の集合を前記論理ユニットから選択し、
前記第１の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みし、
前記第２の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みし、
前記第３の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みする
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法に関する。
【背景技術】
【０００２】
近年、ソリッドステートドライブ（ＳＳＤ）を備えたストレージ装置が出現している。ＳＳＤは、書き換え可能な不揮発性メモリから構成される。書き換え可能な不揮発性メモリとしてフラッシュメモリが用いられるのが一般的である。ＳＳＤは、磁気ディスクを用いたハードディスクドライブ（ＨＤＤ）と比べて、ディスクの回転に伴う機械的な制御を必要としないため高速なアクセスが可能である。【０００３】
しかし、ＳＳＤ（より詳細には、ＳＳＤ内のフラッシュメモリ）への書き込みには、ＨＤＤへの書き込みとは異なり、いくつかの制約がある。第１は、ＳＳＤに既に書き込まれているデータを書き換える場合、当該ＳＳＤ内では、当該データ（つまり既存の古いデータ）を消去してから新しいデータを書き込むという手順が必要である。さらにデータ消去は、例えば、数百キロバイト（ＫＢ）程度のサイズのブロック（メモリブロックまたは物理ブロック）と呼ばれる単位でしか実行できない。【０００４】
そのため、一般的にＳＳＤは、当該ＳＳＤを利用するホストコンピュータ（以下、ホストと称する）が必要とする（または認識する）ストレージデバイスの記憶容量よりも大容量のフラッシュメモリを用いて構成される。複数のＳＳＤを備えストレージデバイスでは、ＳＳＤの記憶領域を一定容量（サイズ）毎に区切って設けた複数の物理ブロックを選択的に割り当てることにより複数の論理ユニット（論理ディスク）を定義（構築）している。ホストは、論理ユニットに対してデータの読み出し及び書き込みを行う。ＳＳＤは物理メモリあるいは物理ディスクと呼ばれる。ホストによる論理ユニットへのアクセスには論理アドレスが用いられ、物理メモリへのアクセスには物理アドレスが用いられる。論理アドレスは、一般に物理アドレスとは一致しない。また、仮に初期状態において論理アドレスが物理アドレスに一致していたとしても、論理ユニットのデータの書き換え（つまり物理メモリのデータの書き換え）が繰り返されると、論理アドレスは物理アドレスに一致しなくなる。【０００５】
ホストは、論理アドレスを用いて論理ユニットに論理的にアクセスすることにより、物理メモリ（ＳＳＤ）にアクセスする。このホストからのアクセスを可能とするために、例えばＳＤＤに内蔵のコントローラは、論理アドレスと物理アドレスとの対応関係を管理する。【０００６】
ここで、ストレージ装置が、論理アドレスと物理アドレスとが一致している初期状態にあるとする。この状態で、ブロックサイズよりも小さなサイズのデータの論理ユニットへの書き込みが行われたとする。この場合、ＳＳＤは書き込みが行われた論理アドレスに割り当てられている物理ブロックにデータの書き込みは行わず、データの更新は行わない。このデータの更新を行わない代わりに、更新前の旧データを無効として管理する。一方、ＳＳＤは新たに未使用の物理ブロックを前記論理アドレスに割り当て、この新たに割り当てられた物理ブロックにデータを書き込む。【０００７】
ＳＳＤにおける無効化されたデータの領域の発生は、メモリ領域（より詳細には、有効なメモリ領域）の断片化（fragmentation）と呼ばれる。今、メモリ領域の断片化が進んで、無効化されたデータの領域を含むブロック（より詳細には、使用中ブロック）が増えたものとする。この場合、ＳＳＤ（物理メモリ）内で使用可能なフリーブロック（未使用な物理ブロック）が減少することから、新たなデータ書き込みが行えなくなる。そのためＳＳＤは自律的に、無効化されたデータの領域を含む複数の物理ブロックに記録されている有効データを、ひとまとめにして未使用な物理ブロックに再書き込みする。そしてＳＳＤは、この再書き込みによって不要となった前記複数の物理ブロックのデータを消去する。このような処理を、断片化解消処理（デフラグメンテーション処理）と称する。この断片化解消処理により、前記複数の物理ブロックは未使用なブロック（フリーブロック）として再利用可能となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第４２６１５３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ＳＳＤ内部で前述のような断片化解消処理が実行される頻度が高くなると、当該ＳＳＤのアクセス速度が低下する。【００１０】
そこで、ＳＳＤ（ソリッドステートドライブ）内で断片化解消処理が実行される頻度を低減することが要求されている。【００１１】
本発明が解決しようとする課題は、ソリッドステートドライブにおいて断片化解消処理が実行される頻度を低減できるように当該ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法を提供することにある。
【課題を解決するための手段】
【００１２】
実施形態によれば、ストレージ装置は、ソリッドステートドライブとストレージコントローラとを具備する。前記ストレージコントローラは、前記ソリッドステートドライブを制御する。前記ストレージコントローラは、論理ユニット管理部と、アクセス統計値収集部と、選択部と、再書き込み部とを具備する。前記論理ユニット管理部は、前記ソリッドステートドライブの物理領域が割り当てられる論理領域を有する論理ユニットを定義する。前記アクセス統計値収集部は、前記論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集する。前記選択部は、前記書き込み頻度に基づいて、前記書き込み頻度が低い第１の小論理アドレス領域の集合と前記第１の小論理アドレス領域の集合を除く第２の小論理アドレス領域の集合とをそれぞれ前記論理ユニットから選択する。前記再書き込み部は、前記第１の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第１の再書き込みと、前記第２の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第２の再書き込みとを実行する。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施形態に係るストレージ装置の典型的なハードウェア構成を示すブロック図である。
【図２】図２は、図１に示されるストレージコントローラの典型的な機能構成を主として示すブロック図である。
【図３】図３は、前記第１の実施形態における書き込み頻度が低い論理アドレス領域のデータの再書き込みを説明するための図である。
【図４】図４は、前記第１の実施形態における書き込み頻度が高い論理アドレス領域のデータの再書き込みを説明するための図である。
【図５】図５は、前記第１の実施形態における、論理ユニットの記憶領域と、論理ブロックと、統計ブロックとの関係を説明するための図である。
【図６】図６は、前記第１の実施形態における統計ブロック毎のライト統計値と当該統計ブロックのデータの再配置位置との関係を説明するための図である。
【図７】図７は、前記第１の実施形態におけるライト統計値が大きい統計ブロックのデータの再書き込みを説明するための図である。
【図８】図８は、前記第１の実施形態におけるライト統計値が小さい統計ブロックのデータの再書き込みを説明するための図である。
【図９】図９は、前記第１の実施形態におけるアクセス統計値の更新を含むコマンド処理の手順を示すフローチャートである。
【図１０】図１０は、第２の実施形態に係るストレージ装置を含むストレージシステムの典型的なハードウェア構成を示すブロック図である。
【図１１】図１１は、図１０に示されるストレージコントローラの典型的な機能構成を主として示すブロック図である。
【図１２】図１２は、前記第２の実施形態における再マッピング処理を説明するための図である。
【図１３】図１３は、前記再マッピング処理の手順を示すフローチャートである。
【図１４】図１４は、前記第２の実施形態の変形例におけるマッピング単位毎のストライプングを説明するための図である。
【図１５】図１５は、前記変形例における再書き込み処理全体の手順を示すフローチャートである。
【図１６】図１６は、図１５に示される再書き込み処理における第１の処理の手順を示すフローチャートである。
【図１７】図１７は、図１５に示される再書き込み処理における第２の処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、実施の形態につき図面を参照して説明する。  
＜第１の実施形態＞
図１は、第１の実施形態に係るストレージ装置の典型的なハードウェア構成を示すブロック図である。図１に示すストレージ装置は、ソリッドステートドライブ（ＳＳＤ）１０と、ホストコンピュータ（以下、ホストと称する）２０とから構成される。ＳＳＤ１０は、ストレージ装置の物理メモリ１１として用いられる。
【００１５】
ホスト２０は、ストレージコントローラ２１を備えている。第１の実施形態において、ストレージコントローラ２１はホスト２０に予め内蔵されている。しかし、ストレージコントローラ２１が、ホスト２０のカードスロットに装着して用いられるカードに備えられていても構わない。また、ストレージコントローラ２１の一部がホスト２０に内蔵され。当該ストレージコントローラ２１の残りが前記カードに備えられていてもよい。
【００１６】
ストレージコントローラ２１は、物理メモリ１１（ＳＳＤ１０）の記憶領域を利用してホスト２０から認識可能な論理ユニット（以下、ＬＵと称する）１２を定義する。ストレージコントローラ２１は、論理アドレスを用いてＬＵ１２に論理的にアクセスすることにより、ＳＳＤ１０（物理メモリ１１）にアクセスする。つまりストレージコントローラ２１は、ＳＳＤ１０に対して、論理アドレスを用いてアクセスを要求する。ＳＳＤ１０（より詳細には、ＳＳＤ１０に内蔵のコントローラ）は、ＬＵ１２の論理領域（論理アドレス）と物理メモリ１１の物理領域（物理アドレス）との対応関係を管理する。ＳＳＤ１０は、ストレージコントローラ２１からのアクセス要求の示す論理アドレスを上述の対応関係に基づいて物理アドレスに変換し、当該物理アドレスの示す物理領域にアクセスする。
【００１７】
図２は、図１に示されるストレージコントローラ２１の典型的な機能構成を主として示すブロック図である。ストレージコントローラ２１は、ＬＵ（論理ユニット）管理部２１１、アクセス統計値収集部２１２、選択部２１３、アクセスコントローラ２１４及び管理データ記憶部２１５を備えている。ＬＵ管理部２１１は、ＬＵ１２を定義（構築）し、且つ管理する。
【００１８】
アクセス統計値収集部２１２は、ＬＵ１２の小ブロックＳＢ（つまり、小論理アドレス領域）毎にアクセス統計値を収集する。小ブロックＳＢは、後述する論理ブロックが等分割（例えば４分割）された部分的な領域である。以下の説明では、小ブロックＳＢを統計ブロックＳＢと称する。アクセス統計値は、例えば、ライト統計値Ｗ＿Ｉ及びリード統計値Ｒ＿Ｉから構成される。
【００１９】
ライト統計値Ｗ＿Ｉは、アクセス統計値を収集するための予め定められた期間（以下、統計収集期間と称する）における、ＬＵ１２のＩ（Ｉ＝０，１，２…）番目の統計ブロックＳＢへのデータ書き込みの回数を示す。つまりライト統計値Ｗ＿Ｉは、ＬＵ１２のＩ番目の統計ブロックＳＢへのデータ書き込みの頻度（つまり更新頻度）を示す。“Ｉ”は、統計ブロックＳＢを示すインデックス値（統計インデックス値）である。
【００２０】
リード統計値Ｒ＿Ｉは、統計収集期間における、ＬＵ１２のＩ番目の統計ブロックＳＢからのデータ読み出しの回数を示す。つまりリード統計値Ｒ＿Ｉは、ＬＵ１２のＩ番目の統計ブロックＳＢからのデータ読み出しの頻度を示す。
【００２１】
選択部２１３は、ＬＵ１２の統計ブロックＳＢ毎の統計値（例えばライト統計値Ｗ＿Ｉ）に基づいて、アクセス頻度（例えば書き込み頻度）が低い統計ブロックＳＢをアクセス頻度が低い順に、一定数選択する。アクセス頻度が低い統計ブロックＳＢの選択の後、選択部２１３は、残りの統計ブロックＳＢを選択する。つまり選択部２１３は、ＬＵ１２の領域全体を、アクセス頻度が低い統計ブロックＳＢ（第１の小ブロック）の集合と、アクセス頻度が高い統計ブロックＳＢ（第２の小ブロック）の集合とに区分する。
【００２２】
アクセスコントローラ２１４は、ホスト２０からのアクセス要求（アクセスコマンド）に応じ、ＬＵ１２に論理的にアクセスすることにより物理メモリ１１にアクセスする。アクセスコントローラ２１４は再書き込み部２１４ａを備えている。再書き込み部２１４ａは、統計収集期間が経過する毎に、選択部２１３によって選択された書き込み頻度が低い統計ブロックＳＢのデータを当該統計ブロックＳＢに論理的に再書き込み（上書き）する。このＬＵ１２への論理的な再書き込みは、物理メモリ１１（ＳＳＤ１０内のコントローラ）内では、連続するメモリブロックへのデータの再書き込み（つまり再配置）として実現される。再書き込み部２１４ａは、書き込み頻度が低い統計ブロックＳＢのデータの再書き込みの後、残りの統計ブロックＳＢのデータを当該統計ブロックＳＢに論理的に再書き込み（上書き）する。
【００２３】
第１の実施形態において、ストレージコントローラ２１の上述の機能要素（つまりＬＵ管理部２１１、アクセス統計値収集部２１２、選択部２１３及びアクセスコントローラ２１４）は、図１に示されるホスト２０（または当該ホスト２０内のストレージコントローラ２１）のＣＰＵがストレージ制御プログラムを実行することにより実現されるソフトウェアモジュールである。しかし、機能要素２１１乃至２１４の一部または全部がハードウェアモジュールによって実現されても構わない。
【００２４】
管理データ記憶部２１５は、例えばホスト２０（または当該ホスト２０内のストレージコントローラ２１）が有するメモリの記憶領域の一部を用いて実現される。管理データ記憶部２１５には、アクセス統計値テーブル（以下、ＡＳＴと称する）２１５ａが格納される。ＡＳＴ２１５ａの各エントリは、ＬＵ１２の統計ブロックＳＢの統計インデックス値Ｉに対応付けてアクセス統計値（ライト統計値Ｗ＿Ｉ及びリード統計値Ｒ＿Ｉ）を格納するのに用いられる。
【００２５】
第１の実施形態の特徴は、選択部２１３によって選択されたアクセス頻度が低い統計ブロックＳＢのデータを、再書き込み部２１４ａによるデータ再書き込みによって、ＳＳＤ１０（物理メモリ１１）の連続するメモリブロックに再配置することにある。このような再書き込みを適用する理由について、以下に説明する。
【００２６】
ＳＳＤ１０が物理メモリ１１として用いられる第１の実施形態では、ストレージコントローラ２１がＬＵ１２に書かれたデータ（より詳細には、ブロックサイズよりも小さなサイズのデータ）を更新すると、ＳＳＤ１０内では無効データの領域が発生する。したがって、このようなデータ更新（データ書き込み）がＬＵ１２内の多くの論理領域（論理アドレス領域）に対して行われると、従来技術の説明からも明らかなように、メモリ領域の断片化が進んで、無効データの領域を含む使用中のメモリブロック（物理ブロック）が増える。この場合、ＳＳＤ１０内では、断片化解消処理が自律的に実行される。しかし、この断片化解消処理が頻繁に実行されると、ＳＳＤ１０（物理メモリ１１）のアクセス速度が低下する。このことは、ＬＵ１２のアクセス速度が低下することと等価である。
【００２７】
そこで、断片化解消処理が実行される頻度を低減するために、ＳＳＤ１０のメモリブロック内の無効データを減らすことが考えられる。そのためには、ＬＵ１２の全論理アドレス領域のデータが当該ＬＵ１２にシーケンシャルに再度書き込まれると良い。その理由は、ＬＵ１２へのシーケンシャルなデータ書き込みは、ＳＳＤ１０内では、空いている連続するメモリブロックへのデータの再書き込み（つまり再配置）として実現されるからである。つまり、連続する論理アドレスでＬＵ１２にデータを論理的に書き込む動作により、当該データが物理メモリ１１にまとまって記録されるからである。
【００２８】
しかし、ホスト２０からのＬＵ１２へのアクセスは、同一ストレージ装置内では同様の傾向（パターン）となりがちである。このため、上述のようにシーケンシャルライトにより物理メモリ１１内の連続する領域にデータを配置しても、その後の書き込みによって無効データの領域が再び出現する。
【００２９】
そこで第１の実施形態は、無効データの領域を減らすために、つまり断片化解消処理が実行される頻度を低減するために、選択部２１３による統計ブロックＳＢの選択と、再書き込み部２１４ａによるデータ再書き込みを適用する。この方法の概要について説明する。
【００３０】
一般に、ＬＵ１２への論理的な書き込みによりＳＳＤ１０のような物理メモリにデータを書き込む場合、当該ＬＵ１２の論理アドレス領域（論理領域）全体に対して均一に書き込みが発生するわけではない。つまり、ＬＵ１２内には、書き込み（更新）頻度の低い論理アドレス領域と書き込みの高い論理アドレス領域とが分布している。
【００３１】
そこで発明者は、ＳＳＤ１０（物理メモリ１１）のメモリ領域の断片化を減らすためには、書き込み頻度に基づくデータの再配置が有効であると認識するに至った。このデータの再配置とは、書き込み頻度が低い論理アドレス領域のデータと書き込み頻度が高い論理アドレス領域のデータとをそれぞれＳＳＤ１０内の異なるメモリブロックに再書き込み（再配置）することである。
【００３２】
このようなデータ再配置を適用するならば、ホスト２０（ストレージコントローラ２１）は、ＳＳＤ１０の領域が書き込み頻度の低い第１のメモリブロックの集合と書き込み頻度の高い第２のメモリブロックの集合とに分かれた状態でＳＳＤ１０を利用することになる。この場合、第２のメモリブロックの集合に対応する論理アドレス領域への書き込み動作は発生するものの、第１のメモリブロックの集合に対応する論理アドレス領域への書き込み動作は殆ど発生しない。よって、断片化の発生を、書き込み頻度が高いメモリブロックの集合に限定することができるため、ＳＳＤ１０全体での断片化の発生量を減らすことができる。
【００３３】
以下、第１の実施形態における再書き込み部２１４ａによるデータの再書き込みを、図３及び図４を参照して説明する。図３は書き込み頻度が低い論理アドレス領域のデータの再書き込みを説明するための図、図４は書き込み頻度が高い論理アドレス領域のデータの再書き込みを説明するための図である。図３において、矢印３０１，３０３，３０５及び３０７で示される論理アドレスから始まるＬＵ１２のそれぞれ論理アドレス領域３０２，３０４，３０６及び３０８は、書き込み頻度が低い不連続な論理アドレス領域である。図４において、矢印４０１，４０３及び４０５で示される論理アドレスから始まるＬＵ１２のそれぞれ論理アドレス領域４０２，４０４及び４０６は、書き込み頻度が高い（より詳細には、書き込み頻度が低くない）不連続な論理アドレス領域である。
【００３４】
再書き込み部２１４ａはまず、書き込み頻度が低い論理アドレス領域３０２，３０４，３０６及び３０８のデータを連続的に読み出して、当該読み出されたデータを当該論理アドレス領域３０２，３０４，３０６及び３０８に論理的に再書き込みする（つまり上書き）する。この再書き込みのために再書き込み部２１４ａは、論理アドレス領域３０２，３０４，３０６及び３０８からのデータの連続する読み出しと、連続して読み出されたデータの論理アドレス領域３０２，３０４，３０６及び３０８への書き込みとを、対応する論理アドレスを用いて物理メモリ１１（ＳＳＤ１０）に要求する。
【００３５】
物理メモリ１１（ＳＳＤ１０）の記憶領域（物理アドレス領域）は、複数の一定サイズのメモリブロック（物理ブロック）ＰＢ＿０，ＰＢ＿１，…，ＰＢ＿Ｍ−１，ＰＢ＿Ｍ，…から構成されている。メモリブロックは、物理メモリ１１におけるデータ消去の最小の単位である。
【００３６】
物理メモリ１１（ＳＳＤ１０内のコントローラ）は、再書き込み部２１４ａからの読み出し要求に応じて、図３に示される論理アドレス領域３０２，３０４，３０６及び３０８に割り当てられている当該物理メモリ１１（ＳＳＤ１０）の物理アドレス領域（物理領域）のデータを連続して読み出す。例えば、論理アドレス領域３０２，３０４，３０６及び３０８の総サイズは、予め定められた数（図３の例では、Ｍ個）のメモリブロックの総サイズに一致するものとする。
【００３７】
物理メモリ１１（ＳＳＤ１０内のコントローラ）は、再書き込み部２１４ａからの前記読み出し要求に続く書き込み要求に応じて、論理アドレス領域３０２，３０４，３０６及び３０８に割り当てられている当該物理メモリ１１（ＳＳＤ１０）の物理アドレス領域を無効とする。また物理メモリ１１（ＳＳＤ１０内のコントローラ）は、論理アドレス領域３０２，３０４，３０６及び３０８の総サイズに対応する個数（つまりＭ個）のフリーメモリブロック（より詳細には、物理位置が連続するＭ個のフリーメモリブロック）、例えばメモリブロックＰＢ＿０，ＰＢ＿１，…，ＰＢ＿Ｍ−１を確保する。そして物理メモリ１１（ＳＳＤ１０内のコントローラ）は、図３に示されるように、前記書き込み要求で指定されたデータ、つまり論理アドレス領域３０２，３０４，３０６及び３０８から読み出されたデータを、メモリブロックＰＢ＿０，ＰＢ＿１，…，ＰＢ＿Ｍ−１に、メモリブロックＰＢ＿０の先頭から順にシーケンシャルに書き込む。
【００３８】
このようにして、書き込み頻度が低い論理アドレス領域のデータが、連続するＭ個のメモリブロックＰＢ＿０乃至ＰＢ＿Ｍ−１の集合（メモリブロック集合）３０９（図３参照）にまとまって書き込まれる。以後、物理メモリ１１（ＳＳＤ１０内のコントローラ）は、論理アドレス領域３０２，３０４，３０６及び３０８を、メモリブロックＰＢ＿０，ＰＢ＿１，…，ＰＢ＿Ｍ−１（メモリブロック集合３０９）内の対応する物理アドレス領域に関連付けて管理する。
【００３９】
次に再書き込み部２１４ａは、上述の再書き込みの対象とならなかった、残りの論理アドレス領域のデータ、つまり論理アドレス領域４０２，４０４及び４０６を含む書き込み頻度が高い論理アドレス領域のデータを、上述の書き込み頻度が低い論理アドレス領域のデータの再書き込みと同様にして、当該書き込み頻度が高い論理アドレス領域に再書き込みする。これにより、物理メモリ１１（ＳＳＤ１０内のコントローラ）は、論理アドレス領域４０２，４０４及び４０６を含む書き込み頻度が高い論理アドレス領域のデータを、図４に示されるように、例えばメモリブロックＰＢ＿Ｍから始まる連続するメモリブロックの集合（メモリブロック集合）４０７にシーケンシャルに書き込む。
【００４０】
このようにして、書き込み頻度が高い論理アドレス領域のデータが、メモリブロック集合３０９とは別のメモリブロック集合４０７（図４参照）にまとまって書き込まれる。以後、物理メモリ１１（ＳＳＤ１０内のコントローラ）は、論理アドレス領域４０２，４０４及び４０６を含む書き込み頻度が高い論理アドレス領域とメモリブロック集合４０７内の対応する物理アドレス領域とを関連付けて管理する。
【００４１】
明らかなように、書き込み頻度が低い領域のデータがまとめて再書き込みされた、物理メモリ１１（ＳＳＤ１０）内のブロック集合３０９では、無効データの領域が発生しにくくなる。これにより第１の実施形態によれば、物理メモリ１１（ＳＳＤ１０内のコントローラ）内で断片化解消処理が実行される頻度は減少し、当該物理メモリ１１（ＳＳＤ１０）のアクセス速度の低下（つまりＬＵ１２のアクセス速度の低下）を防止できる。
【００４２】
次に、上述のような再書き込みのために第１の実施形態で適用される書き込み頻度の収集について、図５を参照して説明する。図５は、ＬＵ１２の記憶領域と、論理ブロックと、統計ブロックＳＢとの関係を説明するための図である。
【００４３】
ＬＵ１２の記憶領域は、物理メモリ１１（ＳＳＤ１０）のメモリブロックと同一サイズの複数の論理ブロックＬＢ＿０，ＬＢ−１，…から構成される。つまりＬＵ１２の記憶領域は、メモリブロックと同一サイズの複数の論理ブロックＬＢ＿０，ＬＢ−１，…にＬＵ管理部２１１によって分割（つまり区分）して管理される。ＬＵ１２の論理ブロックＬＢ＿ｊ（ｊ＝０，１，…）の数は、物理メモリ１１（ＳＳＤ１０）のメモリブロックＰＢ＿ｉ（ｉ＝０，１，…）の数よりも少ない。
【００４４】
ＬＵ１２の各論理ブロックＬＢ＿ｊは、一定サイズの複数の統計ブロック（小ブロック）ＳＢに分割されて管理される。図５の例では、各論理ブロックＬＢ＿ｊは、４つの統計ブロックＳＢに分割される。ＬＵ１２の論理ブロックＬＢ＿ｊの数がＮであるものとすると、ＬＵ１２全体の統計ブロックＳＢの数は４Ｎとなる。この場合、ＬＵ１２の論理領域全体は４Ｎ個の統計ブロックＳＢに分割して管理される。つまりＬＵ１２の論理領域は、４Ｎ個の統計ブロック（小ブロック）ＳＢから構成される。
【００４５】
統計ブロックＳＢは、統計インデックス値Ｉによって特定される。第１の実施形態において統計ブロックＳＢは、書き込み頻度が収集される単位である。つまり第１の実施形態では、論理ブロックＬＢ＿ｊ（またはメモリブロックＰＢ＿ｉ）よりも小サイズの統計ブロックＳＢを単位に、書き込み頻度が収集される。また第１の実施形態では、統計ブロックＳＢに対するデータ書き込みの頻度を示すライト統計値Ｗ＿Ｉとして、書き込み回数（ライトカウント）が用いられる。
【００４６】
アクセス統計値収集部２１２は、統計収集期間において統計ブロックＳＢへのデータ書き込みが発生する都度、当該統計ブロックＳＢのライト統計値Ｗ＿Ｉを１インクリメントする。後述する第２の実施形態では、統計ブロックＳＢ毎のライト統計値Ｗ＿Ｉに加えて、当該統計ブロックＳＢからのデータ読み出しの頻度を示すリード統計値Ｒ＿Ｉも用いられる。そこでアクセス統計値収集部２１２は、統計収集期間において統計ブロックＳＢからのデータ読み出しが発生する都度、当該統計ブロックＳＢのリード統計値Ｒ＿Ｉを１インクリメントする。但し、第２の実施形態では、統計ブロックＳＢ、つまり小ブロックＳＢは、第１の実施形態と異なり、ストレージコントローラ側で管理されるマッピングの単位である。つまり第２の実施形態では、ストレージコントローラは、ＬＵ内の小ブロックＳＢ（マッピング単位）毎に、当該小ブロックＳＢと物理領域（物理メモリ内の物理領域）とを対応付ける。統計ブロック（小ブロック）ＳＢ毎のライト統計値Ｗ＿Ｉ及びリード統計値Ｒ＿Ｉは、当該統計ブロックＳＢの統計インデックス値Ｉに対応付けてＡＳＴ２１５ａに格納される。
【００４７】
ここで、ＳＳＤを含む複数の物理ディスクを用いて実現されるＲＡＩＤ（Redundant Arrays of Independent DisksまたはRedundant Arrays of Inexpensive Disks）構成の物理メモリ（アレイ）を備えたストレージ装置を想定する。このようなストレージ装置は、ＬＵの論理アドレスを、アクセス統計値に基づいて動的に変更する機能を持つストレージコントローラを持つ可能性がある。もし、図１に示すディスク装置のストレージコントローラ２１が、このような機能を有しているならば、アクセス統計値収集部２１２は、この機能を利用すれば良い。
【００４８】
次に、第１の実施形態における再書き込み部２１４ａによる再書き込みの具体例について、図６乃至図８を参照して説明する。図６は、統計収集期間が経過した時点におけるＬＵ１２の統計ブロック毎のライト統計値と当該統計ブロックのデータの再配置位置との関係を説明するための図である。図７は、ライト統計値が大きい統計ブロックのデータの再書き込みを説明するための図、図８は、ライト統計値が小さい統計ブロックのデータの再書き込みを説明するための図ある。
【００４９】
第１の実施形態において再書き込み部２１４ａは、統計収集期間が経過する毎に、以下に述べる再書き込みを実行する。図６の例では、統計収集期間が経過した時点におけるＬＵ１２の論理ブロックＬＢ＿０内の４つの統計ブロックＳＢのライト統計値Ｗ＿Ｉは、７５，３７，１１０及び２３である。また、ＬＵ１２の論理ブロックＬＢ＿１内の４つの統計ブロックＳＢのライト統計値Ｗ＿Ｉは、６６，１０１，１５及び１０５である。また、ＬＵ１２の論理ブロックＬＢ＿３内の４つの統計ブロックＳＢのライト統計値Ｗ＿Ｉは、８８，９６，１２及び４０である。また、ＬＵ１２の論理ブロックＬＢ＿２内の４つの統計ブロックＳＢのライト統計値Ｗ＿Ｉは、図６では省略されているが、全て９６未満であるものとする。
【００５０】
選択部２１３は、再書き込み部２１４ａによる再書込に際し、ＬＵ１２内の統計ブロックＳＢを当該統計ブロックＳＢのライト統計値Ｗ＿Ｉの昇順にソートする。そして選択部２１３は、ライト統計値Ｗ＿Ｉが最も小さい統計ブロックＳＢから順に一定個数の統計ブロックＳＢを、書込頻度が低い統計ブロックＳＢ（第１の小論理アドレス領域）の集合として選択する。前記一定個数は、各論理ブロックが４つの統計ブロックＳＢに分割される第１の実施形態では、４Ｍである。この４Ｍ個の統計ブロックＳＢの総サイズは、Ｍ個の論理ブロックの総サイズに一致する。
【００５１】
図６の例では、Ｍが３である。この場合、まず選択部２１３は、ライト統計値Ｗ＿Ｉが小さい４×３（＝１２）個の統計ブロックＳＢ（つまり３個の論理ブロックに相当するサイズの論理アドレス領域）を、当該ライト統計値Ｗ＿Ｉが最も小さい統計ブロックＳＢから順に、書き込み頻度が低い統計ブロックＳＢとして選択する。つまり選択部２１３は、書き込み頻度が低い４×３個の統計ブロックＳＢから構成される論理アドレス領域（論理領域）を選択する。ここでは、選択部２１３は、図６に示されるＬＵ１２内の論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１を選択する。
【００５２】
論理アドレス領域６０１は、論理ブロックＬＢ＿０内のライト統計値Ｗ＿Ｉが７５及び３７の２つの連続する統計ブロックＳＢから構成される。論理アドレス領域６０３は、論理ブロックＬＢ＿０内のライト統計値Ｗ＿Ｉが２３の統計ブロックＳＢから構成される。論理アドレス領域６０４は、論理ブロックＬＢ＿１内のライト統計値Ｗ＿Ｉが６６の統計ブロックＳＢから構成される。論理アドレス領域６０６は、論理ブロックＬＢ＿１内のライト統計値Ｗ＿Ｉが１５の統計ブロックＳＢから構成される。論理アドレス領域６０８は、論理ブロックＬＢ＿２内のライト統計値Ｗ＿Ｉが９６未満の４つの連続する統計ブロックＳＢから構成される。論理アドレス領域６０９は、論理ブロックＬＢ＿３内のライト統計値Ｗ＿Ｉが８８の統計ブロックＳＢから構成される。論理アドレス領域６１１は、論理ブロックＬＢ＿３内のライト統計値Ｗ＿Ｉが１２及び４０の２つの連続する統計ブロックＳＢから構成される。
【００５３】
このように選択部２１３は、総サイズが、４Ｍ（＝４×３）個の統計ブロックＳＢのそれに一致する、ＬＵ１２内の書込頻度が低い論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１を選択する。再書き込み部２１４ａは、選択部２１３によって選択された書き込み頻度が低い論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１のデータを、当該論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１に再書き込み（上書き）する動作（第１の再書き込み）を実行する。
【００５４】
これにより、論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１のデータ、つまり当該論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１に割り当てられていた物理メモリ１１（ＳＳＤ１０）内の物理アドレス領域のデータは、物理メモリ１１（ＳＳＤ１０）の連続するＭ（Ｍ＝３）個のメモリブロック（物理ブロック）に再配置される。ここでは、論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１のデータが、図６に示されるように、物理メモリ１１（ＳＳＤ１０）のメモリブロックＰＢ＿０乃至ＰＢ＿２に再配置されるものとする。以後、物理メモリ１１（ＳＳＤ１０内のコントローラ）は、論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１とメモリブロックＰＢ＿０乃至ＰＢ＿２内の対応する物理アドレス領域とを関連付けて管理する。
【００５５】
より詳細に述べるならば、再書き込み部２１４ａは、図７に示すように、ＬＵ１２内の書き込み頻度が低い論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１のデータを論理的に且つ連続的にリードする。この論理的なリードは、物理メモリ１１（ＳＳＤ１０内のコントローラ）内では、現在論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１に割り当てられている物理アドレス領域からデータをリードする動作として実現される。
【００５６】
次に再書き込み部２１４ａは、論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１からリードされたデータを、図７に示すように、当該論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１に論理的に且つ連続的に再書き込み（上書き）する。このＬＵ１２へのデータの論理的な再書き込み（上書き）は、物理メモリ１１（ＳＳＤ１０内のコントローラ）内では、論理アドレス領域６０１，６０３，６０４，６０６，６０８，６０９及び６１１からリードされたデータを、図７に示すように、当該物理メモリ１１（ＳＳＤ１０）内の連続するメモリブロック（物理ブロック）ＰＢ＿０乃至ＰＢ＿２にライトする動作として実現される。
【００５７】
書き込み頻度が低い論理アドレス領域のデータの再書き込みの後、選択部２１３は、ＬＵ１２内の残りの論理アドレス領域、つまり図６に示される論理アドレス領域６０２，６０５，６０７及び６１０を含む書き込み頻度が高い論理アドレス領域を選択する。再書き込み部２１４ａは、選択部２１３によって選択された書き込み頻度が高い論理アドレス領域のデータ、つまり図６に示される論理アドレス領域６０２，６０５，６０７及び６１０を含む書き込み頻度が高い論理アドレス領域のデータを、当該書き込み頻度が高い論理アドレス領域に再書き込み（上書き）する動作（第２の再書き込み）を実行する。
【００５８】
これにより、論理アドレス領域６０２，６０５，６０７及び６１０のデータ、つまり当該論理アドレス領域６０２，６０５，６０７及び６１０に割り当てられていた物理メモリ１１（ＳＳＤ１０）内の物理アドレス領域のデータは、図６に示されるように、物理メモリ１１（ＳＳＤ１０）の例えばメモリブロック（物理ブロック）ＰＢ＿２に後続するメモリブロックＰＢ＿３に再配置される。以後、物理メモリ１１（ＳＳＤ１０）は、論理アドレス領域６０２，６０５，６０７及び６１０とメモリブロックＰＢ＿３内の対応する物理アドレス領域とを関連付けて管理する。
【００５９】
より詳細に述べるならば、再書き込み部２１４ａは、図８に示すように、ＬＵ１２内の論理アドレス領域６０２，６０５，６０７及び６１０を含む書き込み頻度が高い論理アドレス領域のデータを論理的に且つ連続的にリードする。この論理的なリードは、物理メモリ１１（ＳＳＤ１０内のコントローラ）内では、現在論理アドレス領域６０２，６０５，６０７及び６１０を含む書き込み頻度が高い論理アドレス領域のデータに割り当てられている物理アドレス領域からデータをリードする動作として実現される。
【００６０】
次に再書き込み部２１４ａは、論理アドレス領域６０２，６０５，６０７及び６１０を含む書き込み頻度が高い論理アドレス領域からリードされたデータを、図８に示すように、当該書き込み頻度が高い論理アドレス領域（つまり元の論理アドレス領域）に論理的に且つ連続的に再書き込み（上書き）する。このＬＵ１２へのデータの論理的な再書き込み（上書き）は、物理メモリ１１（ＳＳＤ１０内のコントローラ）内では、論理アドレス領域６０２，６０５，６０７及び６１０を含む書き込み頻度が高い論理アドレス領域からリードされたデータを、図８に示すように、当該物理メモリ１１（ＳＳＤ１０）内のメモリブロック（物理ブロック）ＰＢ＿３から始まる連続するメモリブロックにライトする動作として実現される。
【００６１】
次に、第１の実施形態におけるアクセス統計値（ライト統計値Ｗ＿Ｉまたはリード統計値Ｒ＿Ｉ）の更新を含むコマンド処理について、図９を参照して説明する。図９は、コマンド処理の手順を示すフローチャートである。
【００６２】
ストレージコントローラ２１は、ホスト２０からコマンドを受信した場合（ステップＳ１）。当該受信されたコマンドがディスクコマンドであるかを判定する（ステップＳ２）。もし、受信されたコマンドがディスクアクセスコマンドであるならば（ステップＳ２のＹｅｓ）、当該コマンドは、アクセス先を指定する論理アドレス（つまりアクセス対象アドレス）を含む。
【００６３】
前記受信コマンドがディスクアクセスコマンドである場合（ステップＳ２のＹｅｓ）、ストレージコントローラ２１のアクセスコントローラ２１４は、当該受信コマンドに含まれているアクセス対象アドレスに基づいて、アクセス先の統計ブロックを示す統計インデックス値Ｉを算出する（ステップＳ３）。ここでは説明の簡略化のために、アクセス範囲が統計ブロックのサイズに一致し、且つ２つの統計ブロックにまたがらないものとする。この場合、アクセスコントローラ２１４は、アクセス対象アドレスを統計ブロックサイズで除することにより、統計インデックス値Ｉを算出する。
【００６４】
次にストレージコントローラ２１は、前記受信コマンド（ディスクアクセスコマンド）がリードコマンドであるかを判定する（ステップＳ４）。もし、前記受信コマンドがリードコマンドであるならば（ステップＳ４のＹｅｓ）、ストレージコントローラ２１のアクセス統計値収集部２１２は、ステップＳ３で算出された統計インデックス値Ｉに対応付けてＡＳＴ２１５ａに格納されているリード統計値Ｒ＿Ｉを１インクリメントする（ステップＳ５）。これに対し、前記受信コマンドがライトコマンドであるならば（ステップＳ４のＮｏ）、アクセス統計値収集部２１２は、ステップＳ３で算出された統計インデックス値Ｉに対応付けてＡＳＴ２１５ａに格納されているライト統計値Ｗ＿Ｉを１インクリメントする（ステップＳ６）。
【００６５】
ストレージコントローラ２１（より詳細には、ストレージコントローラ２１のアクセスコントローラ２１４）は、アクセス統計値収集部２１２によってステップＳ５またはＳ６が実行されると、前記受信コマンド（つまりリードコマンドまたはライトコマンド）の指定する処理（ディスクアクセス処理）を実行する（ステップＳ７）。一方、前記受信コマンドがディスクアクセスコマンドでない場合（ステップＳ２のＮｏ）、ストレージコントローラ２１はステップＳ４乃至Ｓ６をスキップして、当該受信コマンドの指定する処理（ディスクアクセスとは異なる処理）を実行する（ステップＳ７）。なお、第１の実施形態では、リード統計値Ｒ＿Ｉは必ずしも必要でない。したがって、ステップＳ５は必ずしも必要でない。
【００６６】
＜第２の実施形態＞
図１０は、第２の実施形態に係るストレージ装置を含むストレージシステムの典型的なハードウェア構成を示すブロック図である。図１に示すストレージシステムは、ストレージ装置１００、ホストコンピュータ（以下、ホストと称する）２００、及びネットワーク３００から構成される。ストレージ装置１００は、ネットワーク３００を介してホスト２００と接続されている。ホスト２００は、ストレージ装置１００を外部記憶装置として利用する。
【００６７】
ストレージ装置１００は、複数のＳＳＤ、例えば４つのＳＳＤ１１０−１（＃１）乃至１１０−４（＃４）と、複数のＨＤＤ、例えば４つのＨＤＤ１２０−１（＃１）乃至１２０−４（＃４）と、ストレージコントローラ１３０を備えている。このようにストレージコントローラ１３０は、前記第１の実施形態におけるストレージコントローラ２１と異なり、ホスト２００から独立して備えられている。ストレージコントローラ１３０はＳＳＤ１１０−１乃至１１０−４及びＨＤＤ１２０−１乃至１２０−４と接続されており、当該ＳＳＤ１１０−１乃至１１０−４及びＨＤＤ１２０−１乃至１２０−４を制御する。
【００６８】
ストレージコントローラ１３０は、ＳＳＤ１１０−１乃至１１０−４及びＨＤＤ１２０−１乃至１２０−４の少なくとも１つの記憶領域を利用してホスト２００から認識可能なＬＵ１５０を定義する。図１０の例では、ＬＵ１５０が、ＳＳＤ１１０−１及びＨＤＤ１２０−１の記憶領域を利用して定義されている。またストレージコントローラ１３０は、ＬＵ１５０の論理アドレス領域（論理領域）に割り当てられる物理アドレス領域（物理領域）を提供する物理メモリ１４０を定義する。図１０の例では、物理メモリ１４０は、ＳＳＤ１１０−１及びＨＤＤ１２０−１から構成されるアレイ（ディスクアレイ）である。
【００６９】
図１１は、図１０に示されるストレージコントローラ１３０の典型的な機能構成を主として示すブロック図である。図１１において、図２と等価な要素には同一参照番号が付されている。以下、図１１に示されるストレージコントローラ１３０の構成について、図２に示されるストレージコントローラ２１の構成と相違する点を中心に説明する。
【００７０】
ストレージコントローラ１３０は、図２に示されるストレージコントローラ２１と同様に、ＬＵ管理部２１１、アクセス統計値収集部２１２、選択部２１３、アクセスコントローラ２１４及び管理データ記憶部２１５を備えている。ＬＵ管理部２１１は、前記第１の実施形態と異なり、マッピング部２１１ａを備えている。
【００７１】
マッピング部２１１ａは、ＬＵ１５０のマッピング単位の論理アドレス領域毎に、物理メモリ１４０内のドライブ（物理ディスク）、つまりＳＳＤ１１０−１またはＨＤＤ１２０−１を割り当てる（対応付ける）。このＬＵ１５０の論理アドレス領域と物理メモリ１４０内のドライブとの対応付けをマッピングと呼ぶ。より詳細に述べるならば、マッピング部２１１ａはマッピングによって、ＬＵ１５０のマッピング単位の論理アドレス領域毎に、当該論理アドレス領域を、当該論理アドレス領域に割り当てられるドライブと、当該ドライブによって認識される論理アドレス領域（以下、ドライブ論理アドレス領域）とに対応付ける。ＬＵ１５０の論理アドレス領域（論理アドレス）にＳＳＤが割り当てられる場合に、当該論理アドレス領域（論理アドレス）に対応付けられるドライブ論理アドレス領域（ドライブ論理アドレス）をＳＳＤ論理アドレス領域（ＳＳＤ論理アドレス）と呼ぶ。これに対し、ＬＵ１５０の論理アドレス領域（論理アドレス）にＨＤＤが割り当てられる場合に、当該論理アドレス領域（論理アドレス）に対応付けられるドライブ論理アドレス領域（ドライブ論理アドレス）をＨＤＤ論理アドレス領域（ＨＤＤ論理アドレス）と呼ぶ。前記第１の実施形態は、ＬＵ１５０の全ての論理アドレスがＳＳＤ論理アドレスに等しい場合に相当する。
【００７２】
マッピング部２１１ａは、ＬＵ１５０のマッピング単位毎のアクセス頻度に基づいて、当該ＬＵ１５０の論理アドレス領域とドライブとのマッピングを動的に変更する。このマッピングを変更する機能（つまり再マッピング機能）を利用して、マッピング部２１１ａが、アクセス頻度が高い論理アドレス領域にＳＳＤ１１０−１（つまりアクセス速度が高速なＳＳＤ１１０−１）を再割り当てし、アクセス頻度が低い論理アドレス領域にＨＤＤ１２０−１（つまりアクセス速度が低速なＨＤＤ１２０−１）を再割り当てすることが想定される。この場合、ＬＵ１５０（ストレージ装置１００）全体のアクセス速度の向上が期待される。
【００７３】
しかし上述の再マッピングでは、ＳＳＤ１１０−１内に書き込み頻度が高いメモリブロックと読み出し頻度が高いメモリブロックとが混在する可能性がある。読み出し頻度が高いメモリブロックは、書き込み頻度が低いメモリブロックを含む可能性がある。このような場合、ＳＳＤ１１０−１内では断片化解消処理が多発して、当該ＳＳＤ１１０−１のアクセス速度が低下する。
【００７４】
そこでマッピング部２１１ａは、ＳＳＤ１１０−１内で断片化解消処理が多発するのを防止するための再マッピングを、ライト統計値Ｗ＿Ｉ及びリード統計値Ｒ＿Ｉに基づいて行う。また選択部２１３は、この再マッピングに伴う再書き込み部２１４ａによる再書き込みのために、ライト統計値Ｗ＿Ｉ及びリード統計値Ｒ＿Ｉに基づいて、マッピング単位に論理アドレス領域を選択する
管理データ記憶部２１５には、ＡＳＴ２１５ａに加えてマッピングテーブル（以下、ＭＴと称する）２１５ｂが格納される。ＭＴ２１５ｂの各エントリは、ＬＵ１５０のマッピング単位の論理アドレス（つまり統計ブロックＳＢの統計インデックス値Ｉ）と、当該論理アドレス（統計インデックス値Ｉ）の論理アドレス領域（統計ブロックＳＢ）に割り当てられたドライブ（ＳＳＤ１１０−１またはＨＤＤ１２０−１）及びドライブ論理アドレス（ＳＳＤ論理アドレスまたはＨＤＤ論理アドレス）との対応を示す情報（つまりマッピング情報）を格納するのに用いられる。
【００７５】
次に、第２の実施形態における動作について、再マッピング処理（つまりデータ再配置処理）を例に、図１２及び図１３を参照して説明する。図１２は、再マッピング処理を説明するための図、図１３は再マッピング処理の手順を示すフローチャートである。
【００７６】
図１２において、ＬＵ１５０内の論理アドレス領域Ｘ１，Ｘ２及びＸ３は、書き込み頻度が高い論理アドレス領域である。論理アドレス領域Ｘ１乃至Ｘ３の読み出し頻度は、高くても或いは低くても構わない。論理アドレス領域Ｘ１乃至Ｘ３を含む書き込み頻度が高い論理アドレス領域（以下、第２の論理アドレス領域と称する）の総サイズは、例えばＭｘ個（ここでは、Ｍｘ＝２とする）のメモリブロックの総サイズに一致する。図１２において、論理アドレス領域Ｘ１乃至Ｘ３以外の書き込み頻度が高い論理アドレス領域は省略されている。
【００７７】
ＬＵ１５０内の論理アドレス領域Ｙ１，Ｙ２，Ｙ３，Ｙ４，Ｙ５及びＹ６は、読み出し頻度が高く且つ書き込み頻度が低い論理アドレス領域（以下、第１の論理アドレス領域と称する）である。第１の論理アドレス領域Ｙ１乃至Ｙ６の総サイズは、例えばＭｙ個（ここでは、Ｍｙ＝２とする）のメモリブロックの総サイズに一致する。
【００７８】
ＬＵ１５０内の論理アドレス領域Ｚ１，Ｚ２，Ｚ３，Ｚ４，Ｚ５，Ｚ６及びＺ７は、前記第２の論理アドレス領域と、前記第１の論理アドレス領域Ｙ１乃至Ｙ６とを除く、ＬＵ１５０内の論理アドレス領域（以下、第３の論理アドレス領域と称する）である。つまり第３の論理アドレス領域Ｚ１乃至Ｚ７は、読み出し頻度が低く且つ書き込み頻度も低い論理アドレス領域である。
【００７９】
再マッピング処理は、統計収集期間が経過する毎に、図１３のフローチャートに示される手順で次のように実行される。まず選択部２１３は、ＬＵ１５０の全領域（つまり全統計ブロックＳＢ）を、ＡＳＴ２１５ａに格納されているマッピング単位毎のライト統計値Ｗ＿Ｉの昇順にソートする（ステップＳ１１）。そして選択部２１３は、ライト統計値Ｗ＿Ｉのソート結果に基づいて、ライト統計値Ｗ＿Ｉの大きい（つまり書き込み頻度が高い）論理アドレス領域から順に、Ｍｘ個（Ｍｘ＝２）のメモリブロックに一致する量だけ、論理アドレス領域Ｘを選択する（ステップＳ１２）。ここでは、論理アドレス領域Ｘ１乃至Ｘ３を含む第２の論理アドレス領域が、論理アドレス領域Ｘとして選択される。
【００８０】
次に選択部２１３は、選択された論理アドレス領域Ｘ（つまり書き込み頻度が高い第２の論理アドレス領域）を除く、ＬＵ１５０の領域を、ＡＳＴ２１５ａに格納されているマッピング単位毎のリード統計値Ｒ＿Ｉの昇順にソートする（ステップＳ１３）。そして選択部２１３は、リード統計値Ｒ＿Ｉのソート結果に基づいて、リード統計値Ｒ＿Ｉの大きい（つまり読み出し頻度が高い）論理アドレス領域から順に、Ｍｙ個（Ｍｙ＝２）のメモリブロックに一致する量だけ、論理アドレス領域Ｙを選択する（ステップＳ１４）。ここでは、読み出し頻度が高く且つ書き込み頻度が低い第１の論理アドレス領域Ｙ１乃至Ｙ６が、論理アドレス領域Ｙとして選択される。
【００８１】
するとマッピング部２１１ａ及び再書き込み部２１４ａは、ステップＳ１５乃至Ｓ１７から構成される処理Ｐｘを次のように実行する。まずマッピング部２１１ａは、ステップＳ１４で選択された論理アドレス領域Ｙ（つまり第１の論理アドレス領域Ｙ１乃至Ｙ６）の論理アドレスに、ＳＳＤ１１０−１を再割り当て（再マッピング）する（ステップＳ１５）。つまりマッピング部２１１ａは、ＭＴ２１５ｂを更新することにより、第１の論理アドレス領域Ｙ１乃至Ｙ６に、ＳＳＤ１１０−１及び第１のＳＳＤ論理アドレス（例えば、連続する第１のＳＳＤ論理アドレス）を割り当てる。
【００８２】
ステップＳ１５において再書き込み部２１４ａは、第１の論理アドレス領域Ｙ１乃至Ｙ６（より詳細には、再マッピング以前に第１の論理アドレス領域Ｙ１乃至Ｙ６に割り当てられていたドライブ）に書き込まれているデータを、再マッピングによって新たに第１の論理アドレス領域Ｙ１乃至Ｙ６に割り当てられたＳＳＤ１１０−１に再書き込みする。これにより第１の論理アドレス領域Ｙ１乃至Ｙ６のデータが、図１２に示されるように、ＳＳＤ１１０−１内の連続するＭｙ個（Ｍｙ＝２）のメモリブロックから構成される物理アドレス領域１１１に再配置される。
【００８３】
次にマッピング部２１１ａは、ステップＳ１２で選択された論理アドレス領域Ｘ（つまり論理アドレス領域Ｘ１乃至Ｘ３を含む書き込み頻度が高い第２の論理アドレス領域）の論理アドレスに、ＳＳＤ１１０−１を再マッピングする（ステップＳ１６）。つまりマッピング部２１１ａは、ＭＴ２１５ｂを更新することにより、論理アドレス領域Ｘ１乃至Ｘ３を含む第２の論理アドレス領域に、ＳＳＤ１１０−１及び第２のＳＳＤ論理アドレス（例えば、前記連続する第１のＳＳＤ論理アドレスに後続する連続する第２のＳＳＤ論理アドレス）を割り当てる。
【００８４】
ステップＳ１６において再書き込み部２１４ａは、第２の論理アドレス領域（より詳細には、再マッピング以前に第２の論理アドレス領域に割り当てられていた物理アドレス領域）に書き込まれているデータを、再マッピングによって新たに第２の論理アドレス領域に割り当てられたＳＳＤ１１０−１に再書き込みする。これにより第２の論理アドレス領域（つまり論理アドレス領域Ｘ１乃至Ｘ３を含む書き込み頻度が高い論理アドレス領域）のデータが、図１２に示されるように、ＳＳＤ１１０−１内の連続するＭｘ個（Ｍｘ＝２）のメモリブロックから構成される物理アドレス領域１１２に再配置される。物理アドレス領域１１２は、ステップＳ１５に続いてステップＳ１６が実行されることから、一般に物理アドレス領域１１１に後続する。
【００８５】
次にマッピング部２１１ａは、ステップＳ１２及びＳ１４の何れにおいても選択されなかったＬＵ１５０内の残りの論理アドレス領域Ｚ（つまり第３の論理アドレス領域Ｚ１乃至Ｚ７）の論理アドレスに、ＨＤＤ１２０−１を再マッピングする（ステップＳ１７）。つまりマッピング部２１１ａは、ＭＴ２１５ｂを更新することにより、第３の論理アドレス領域Ｚ１乃至Ｚ７に、ＨＤＤ１２０−１及びＨＤＤ論理アドレス（例えば、連続するＨＤＤ論理アドレス）を割り当てる。
【００８６】
ステップＳ１７において再書き込み部２１４ａは、第３の論理アドレス領域Ｚ１乃至Ｚ７（より詳細には、再マッピング以前に第３の論理アドレス領域Ｚ１乃至Ｚ７に割り当てられていた物理アドレス領域）に書き込まれているデータを、再マッピングによって新たに当該第３の論理アドレス領域Ｚ１乃至Ｚ７に割り当てられたＨＤＤ１２０−１に再書き込みする。これにより第３の論理アドレス領域Ｚ１乃至Ｚ７のデータが、図１２に示されるように、ＨＤＤ１２０−１内の物理アドレス領域１２１に再配置される。すると、再マッピング処理は終了する。
【００８７】
第２の実施形態によれば、再マッピング処理の実行により、ＳＳＤ１１０−１内の物理アドレス領域１１１は、読み出し頻度は高いが、書き込み頻度は低い領域（メモリブロックの集合）に遷移する。つまりＳＳＤ１１０−１内の物理アドレス領域１１１は、頻繁にデータが読み出されるが、データの書き込み（更新）は発生しにくい領域に遷移する。したがって物理アドレス領域１１１では、無効データの領域が発生しにくくなる。よって第２の実施形態によれば、ＳＳＤ１１０−１内で断片化解消処理が実行される頻度を低減して、当該ＳＳＤ１１０−１のアクセス速度の低下、つまりストレージ装置１００全体（ＬＵ１５０）アクセス速度の低下を防止できる。
【００８８】
しかも、第２の実施形態によれば、再マッピング処理の実行により、ＳＳＤ１１０−１内の物理アドレス領域１１２は、書き込み頻度が高い領域（メモリブロックの集合）に遷移する。つまりＳＳＤ１１０−１内の物理アドレス領域１１２は、データの書き込み（更新）が頻繁に発生する領域に遷移する。このように第２の実施形態によれば、ＳＳＤ１１０−１の物理アドレス領域を、書き込み頻度または読み出し頻度が高い（つまりアクセス頻度が高い）領域として用いることができる。これにより、ストレージ装置１００全体（ＬＵ１５０）のアクセス速度を向上することができる。
【００８９】
更に第２の実施形態によれば、再マッピング処理の実行により、ＨＤＤ１２０−１内の物理アドレス領域１２１は、読み出し頻度及び書き込み頻度がいずれも低い領域（セクタの集合）に遷移する。つまりＨＤＤ１２０−１内の物理アドレス領域１２１は、アクセスが発生しにくい領域に遷移する。よって第２の実施形態によれば、ＨＤＤ１２０−１へのアクセスによってストレージ装置１００全体（ＬＵ１５０）のアクセス速度が低下するのを防止できる。
【００９０】
前記第２の実施形態では、ストレージコントローラ１３０は、ホスト２００から独立して備えられており、且つネットワーク３００を介して当該ホスト２００と接続されている。しかし、ストレージコントローラ１３０が、前記第１の実施形態におけるストレージコントローラ２１と同様に、ホスト２００に備えられていても構わない。
【００９１】
＜第２の実施形態の変形例＞
次に、前記第２の実施形態の変形例について説明する。  
前記第２の実施形態では、使用中のＳＳＤ１１０−１を用いて再マッピング処理が実行される。しかし、この再マッピング処理が、非使用状態（いわゆるアンマップ状態）のＳＳＤ（例えば予備ＳＳＤ）を用いて実行されても良い。前記第２の実施形態の変形例の特徴は、予備ＳＳＤが存在する場合、当該予備ＳＳＤを用いて再マッピングを実行することにある。図１３のフローチャートにおける処理Ｐｘは、ストレージ装置１００の構成によって変わる。
【００９２】
以下、本変形例の概要について、便宜的に図１０及び図１１を参照して説明する。  
一般に、複数のＳＳＤ及びＨＤＤを備えたストレージ装置は、予備のＳＳＤまたはＨＤＤを持つことがある。図１０に示されるストレージ装置１００においても、ＳＳＤ１１０−１乃至１１０−４の例えば１つまたはＨＤＤ１２０−１乃至１２０−４の例えば１つを予備として用いることができる。
【００９３】
ここで、図１０に示されるように、物理メモリ１４０がＳＳＤ１１０−１及びＨＤＤ１２０−１から構成されており、したがって当該ＳＳＤ１１０−１及びＨＤＤ１２０−１が、前記第２の実施形態と同様に使用中の状態にあるものとする。この状態で、ストレージコントローラ１３０に接続されているＳＤＤの中に予備ＳＳＤが存在するならば、マッピング部２１１ａは、当該予備ＳＳＤの全領域をマッピング単位で消去することによりアンマップする。つまりマッピング部２１１ａは、予備ＳＳＤの全領域をフリー状態にする。再書き込み部２１４ａは、ＳＳＤ１１０−１及びＨＤＤ１２０−１からアンマップ状態にある予備ＳＳＤにデータをコピーする。この予備ＳＳＤが存在する場合に実行される処理（第１の処理）を処理Ｐａと呼ぶ。
【００９４】
これに対し、予備ＳＳＤは存在しないものの、ＨＤＤ１２０−１に十分な空き領域が存在するならば、再書き込み部２１４ａは、ＳＳＤ１１０−１にマッピングされている領域のデータを当該ＨＤＤ１２０−１の空き領域にコピーする。このコピーの後、マッピング部２１１ａは、ＳＳＤ１１０−１の全領域をアンマップする。すると再書き込み部２１４ａは、ＨＤＤ１２０−１からアンマップ状態にあるＳＳＤ１１０−１にデータをコピーする。このＨＤＤ１２０−１に十分な空き領域が存在する場合に実行される処理（第２の処理）を処理Ｐｂと呼ぶ。  
一方、ＨＤＤ１２０−１に十分な空き領域が存在しないならば、前記第２の実施形態と同様の処理が行われる。
【００９５】
次に、本変形例の詳細について説明する。但し、ここでは、上述の概要と異なり、複数のＳＳＤ（例えば２つのＳＳＤ１１０−１及び１１０−２）と複数のＨＤＤ（例えば２つのＨＤＤ１２０−１及び１２０−２）とから物理メモリ（アレイ）が構成されているものとする。また、ＳＳＤ１１０−１及び１１０−２とＨＤＤ１２０−１及び１２０−２（つまりＳＳＤと同数のＨＤＤ）の記憶領域を利用して、図１０に示されるＬＵ１５０に相当するＬＵ１５１（図１４参照）が定義されているものとする。必要ならば、図１０においてＬＵ１５０をＬＵ１５１に置き換え、当該ＬＵ１５１に対応付けられているＳＳＤ１１０−１とＨＤＤ１２０−１とを、ＳＳＤ１１０−１及び１１０−２とＨＤＤ１２０−１及び１２０−２とに置き換えられたい。なお、ＳＳＤ１１０−１及び１１０−２から第１の物理メモリ（アレイ）が構成され、ＨＤＤ１２０−１及び１２０−２から第２の物理メモリ（アレイ）が構成されても良い。
【００９６】
図１４は、ＬＵ１５１がＳＳＤ１１０−１及び１１０−２とＨＤＤ１２０−１及び１２０−２の記憶領域を利用して定義される場合における、マッピング単位毎のストライプングを説明するための図である。ＬＵ１５１の領域は、マッピング単位でＳＳＤ１１０−１及び１１０−２またはＨＤＤ１２０−１及び１２０−２と対応付けられる。
【００９７】
例えば、図１４に示される、ある１つのマッピング単位の領域１４１は、ＳＳＤ１１０−１及び１１０−２にマッピングされる。このＳＳＤ１１０−１及び１１０−２にマッピングされる領域１４１は、当該ＳＳＤ１１０−１及び１１０−２で一定サイズのストライプブロックにストライピングされる。また、図１４に示される、別の１つのマッピング単位の領域１４２は、ＨＤＤ１２０−１及び１２０−２にマッピングされる。つまり、領域１４２は、ＨＤＤ１２０−１及び１２０−２でストライプブロックにストライピングされる。
【００９８】
次に、前記第２の実施形態の変形例で適用される、前記処理Ｐｘに相当する処理（以下、再書き込み処理と称する）について、図１５乃至図１７のフローチャートを参照して説明する。図１５は、再書き込み処理全体の手順を示すフローチャートである。図１６は、再書き込み処理における処理Ｐａ（第１の処理）の手順を示すフローチャート、図１７は、再書き込み処理における処理Ｐｂ（第２の処理）の手順を示すフローチャートである。
【００９９】
ここでは、図１４に示されているように、ＬＵ１５１がＳＳＤ１１０−１及び１１０−２とＨＤＤ１２０−１及び１２０−２の記憶領域を利用して定義されるものとする。但し以下の説明では、ＬＵ１５１の領域に割り当てられる２つのＳＳＤをＳＳＤ＿１及びＳＳＤ＿２と表記し、当該２つのＳＳＤのうちのｎ番目のＳＳＤをＳＳＤ＿ｎと表記する。同様に、ＬＵ１５１の別の領域に割り当てられる２つのＨＤＤをＨＤＤ＿１及びＨＤＤ＿２と表記し、当該２つのＨＤＤＤのうちのｎ番目のＨＤＤをＨＤＤ＿ｎと表記する。
【０１００】
図１５のフローチャートに示される再書き込み処理は、上述したように図１３のフローチャートにおける処理Ｐｘに相当する。したがって、この再書き込み処理は、図１３のフローチャートにおけるステップＳ１４に続いて実行される。
【０１０１】
まずマッピング部２１１ａは、ストレージコントローラ１３０に接続されているＳＤＤの中に予備ＳＳＤ（より詳細には、空き状態にある予備ＳＳＤ）が存在するかを判定する（ステップＳ２１）。もし、予備ＳＳＤが存在するならば（ステップＳ２１のＹｅｓ）、マッピング部２１１ａは再書き込み部２１４ａと協働して処理Ｐａを実行する（ステップＳ２２）。ここでは、予備ＳＳＤは、ＳＳＤ１１０−３または１１０−４であるものとする。
【０１０２】
これに対し、予備ＳＳＤが存在しないならば（ステップＳ２１のＮｏ）、マッピング部２１１ａは、ＨＤＤ（より詳細には、ＨＤＤ＿１及びＨＤＤ＿２）に十分な空き領域があるかを判定する（ステップＳ２３）。十分な空き領域とは、ＳＳＤ＿１及びＳＳＤ＿２のデータ（つまりＳＳＤ＿１及びＳＳＤ＿２にマッピングされているＬＵ１５１のアドレス領域のデータ）をＨＤＤ＿１及びＨＤＤ＿２にコピーするのに必要な空き領域を指す。もし、ＨＤＤ＿１及びＨＤＤ＿２に十分な空き領域があるならば（ステップＳ２３のＹｅｓ）、マッピング部２１１ａは再書き込み部２１４ａと協働して第２の処理Ｐｂを実行する（ステップＳ２４）。
【０１０３】
これに対し、ＨＤＤ＿１及びＨＤＤ＿２に十分な空き領域がないならば（ステップＳ２３のＮｏ）、マッピング部２１１ａは再書き込み部２１４ａと協働して、図１３に示される処理Ｐｘと同様の処理を実行する。必要ならば、処理Ｐｘにおいて、ＳＳＤをＳＳＤ＿１及びＳＳＤ＿２に、ＨＤＤをＨＤＤ＿１及びＨＤＤ＿２に置き換えられたい。
【０１０４】
次に上記処理Ｐａについて、図１６のフローチャートを参照して説明する。まずマッピング部２１１ａは、ＳＳＤ及びＨＤＤを指定する変数ｎを初期値１に設定する（ステップＳ３１）。次にマッピング部２１１ａは、予備ＳＳＤ（つまり空き状態にある予備ＳＳＤ）を、データの転送先（コピー先）として選択して、当該予備ＳＳＤの全領域をアンマップする（ステップＳ３２）。これにより、前記予備ＳＳＤの全領域のデータは消去される。またステップＳ３２においてマッピング部２１１ａは、データの転送元（コピー元）としてＳＳＤ＿n及びＨＤＤ＿ｎを選択する。ここでは、ｎ＝１であるため、ＳＳＤ＿１及びＨＤＤ＿１がデータの転送元として選択される。
【０１０５】
再書き込み部２１４ａは、ＬＵ１２内の読み出し頻度が高く且つ書き込み頻度が低い論理アドレス領域Ｙに割り当てられているＳＳＤ＿n及びＨＤＤ＿ｎ内の物理アドレス領域のデータ（つまりストライピングされたデータ）を、例えば、論理アドレスの昇順で且つマッピング単位（つまり統計ブロックＳＢ）毎に、当該ＳＳＤ＿n及びＨＤＤ＿ｎから読み出す（ステップＳ３３）。そして再書き込み部２１４ａは、読み出されたデータを前記予備ＳＳＤ（つまり転送先の予備ＳＳＤ）に書き込む（ステップＳ３４）。再書き込み部２１４ａは、ステップＳ３３及びＳ３４を、読み出し／書き込みが行われたマッピング単位の数が論理アドレス領域Ｙの総サイズに対応する数ＮＭｙに達するまで繰り返す（ステップＳ３５）。つまり再書き込み部２１４ａは、論理アドレス領域Ｙ１，Ｙ２，Ｙ３，Ｙ４，Ｙ５及びＹ６のデータの読み出し／書き込みを実行する。
【０１０６】
マッピング部２１１ａは、再書き込み部２１４ａによる上述の書き込みに際し、ＭＴ２１５ｂを用いて再マッピングを行う。例えば、論理アドレス領域Ｙ１から読み出されたデータの書き込みに際し、マッピング部２１１ａは、当該論理アドレス領域Ｙ１の論理アドレスＬＢＡｙ１に、予備ＳＳＤ及びＳＳＤ論理アドレスＳＬＢＡ０を割り当てる。ＳＳＤ論理アドレスＳＬＢＡ０は例えば０である。この場合、再書き込み部２１４ａは、論理アドレス領域Ｙ１から読み出されたデータの書き込みを、ＳＳＤ論理アドレスＳＬＢＡ０を書き込み先として指定することにより、予備ＳＳＤに要求する。同様にマッピング部２１１ａは、論理アドレス領域Ｙ２から読み出されたデータの書き込みに際し、当該論理アドレス領域Ｙ２の論理アドレスＬＢＡｙ２に、予備ＳＳＤ及びＳＳＤ論理アドレスＳＬＢＡ１を割り当てる。ＳＳＤ論理アドレスＳＬＢＡ１はＳＳＤ論理アドレスＳＬＢＡ０に後続する。この場合、再書き込み部２１４ａは、論理アドレス領域Ｙ２から読み出されたデータの書き込みを、ＳＳＤ論理アドレスＳＬＢＡ１を書き込み先として指定することにより、予備ＳＳＤに要求する。
【０１０７】
同様にマッピング部２１１ａは、論理アドレス領域Ｙ３から読み出されたデータの書き込みに際し、当該論理アドレス領域Ｙ３の連続する論理アドレスＬＢＡｙ３ａ，ＬＢＡｙ３ｂ及びＬＢＡｙ３ｃに、予備ＳＳＤ及び連続するＳＳＤ論理アドレスＳＬＢＡ２，ＳＬＢＡ３及びＳＬＢＡ４を割り当てる。ＳＳＤ論理アドレスＳＬＢＡ２は、ＳＳＤ論理アドレスＳＬＢＡ１に後続する。この場合、再書き込み部２１４ａは、論理アドレス領域Ｙ３から読み出されたデータの書き込みを、ＳＳＤ論理アドレスＳＬＢＡ２を書き込み先（書き込み先の開始アドレス）として指定することにより、予備ＳＳＤに要求する。同様にマッピング部２１１ａは、論理アドレス領域Ｙ４から読み出されたデータの書き込みに際し、当該論理アドレス領域Ｙ４の連続する論理アドレスＬＢＡｙ４ａ及びＬＢＡｙ４ｂに、予備ＳＳＤ及び連続するＳＳＤ論理アドレスＳＬＢＡ５及びＳＬＢＡ６を割り当てる。ＳＳＤ論理アドレスＳＬＢＡ５は、ＳＳＤ論理アドレスＳＬＢＡ４に後続する。この場合、再書き込み部２１４ａは、論理アドレス領域Ｙ４から読み出されたデータの書き込みを、ＳＳＤ論理アドレスＳＬＢＡ５を書き込み先（書き込み先の開始アドレス）として指定することにより、予備ＳＳＤに要求する。
【０１０８】
同様にマッピング部２１１ａは、論理アドレス領域Ｙ５から読み出されたデータの書き込みに際し、当該論理アドレス領域Ｙ５の論理アドレスＬＢＡｙ５に、予備ＳＳＤ及びＳＳＤ論理アドレスＳＬＢＡ７を割り当てる。ＳＳＤ論理アドレスＳＬＢＡ７は、ＳＳＤ論理アドレスＳＬＢＡ６に後続する。この場合、再書き込み部２１４ａは、論理アドレス領域Ｙ５から読み出されたデータの書き込みを、ＳＳＤ論理アドレスＳＬＢＡ７を書き込み先として指定することにより、予備ＳＳＤに要求する。同様にマッピング部２１１ａは、論理アドレス領域Ｙ６から読み出されたデータの書き込みに際し、当該論理アドレス領域Ｙ６の論理アドレスＬＢＡｙ６に、予備ＳＳＤ及びＳＳＤ論理アドレスＳＬＢＡ８を割り当てる。ＳＳＤ論理アドレスＳＬＢＡ８は、ＳＳＤ論理アドレスＳＬＢＡ７に後続する。この場合、再書き込み部２１４ａは、論理アドレス領域Ｙ６から読み出されたデータの書き込みを、ＳＳＤ論理アドレスＳＬＢＡ８を書き込み先として指定することにより、予備ＳＳＤに要求する。
【０１０９】
上述の再書き込みにより、論理アドレス領域Ｙ（論理アドレス領域Ｙ１乃至Ｙ６）から読み出されたデータは、ＳＳＤ−nの連続する物理アドレスの領域に再配置される。ここでは、ＳＳＤ−nはステップＳ３２でアンマップされていることから、当該ＳＳＤ−nの例えば物理アドレス０から始まる連続する物理アドレスの領域に再配置されることが期待される。
【０１１０】
次に再書き込み部２１４ａは、ＬＵ１２内の書き込み頻度が高い論理アドレス領域Ｘに割り当てられているＳＳＤ＿n及びＨＤＤ＿ｎ内の物理アドレス領域のデータ（ストライピングされたデータ）を、例えば、論理アドレスの昇順で且つマッピング単位毎に、当該ＳＳＤ＿n及びＨＤＤ＿ｎから読み出す（ステップＳ３６）。そして再書き込み部２１４ａは、読み出されたデータを前記予備ＳＳＤに書き込む（ステップＳ３７）。再書き込み部２１４ａは、ステップＳ３６及びＳ３５を、読み出し／書き込みが行われたマッピング単位の数が論理アドレス領域Ｘの総サイズに対応する数ＮＭｘに達するまで繰り返す（ステップＳ３８）。
【０１１１】
論理アドレス領域Ｘから読み出されたデータの予備ＳＳＤへの書き込みに際しても、上述の論理アドレス領域Ｙから読み出されたデータの予備ＳＳＤへの書き込みと同様のマッピングが行われる。ここでは、論理アドレス領域Ｙの先頭の論理アドレスには、ＳＳＤ論理アドレスＳＬＢＡ９が割り当てられる。ＳＳＤ論理アドレスＳＬＢＡ９は、論理アドレス領域Ｘの最終の論理アドレスに割り当てられたＳＳＤ論理アドレスＳＬＢＡ８に後続する。この場合、論理アドレス領域Ｘから読み出されたデータは、ＳＳＤ−nの物理アドレス０から始まる連続する物理アドレスの領域に後続する物理アドレスの領域に再配置されることが期待される。
【０１１２】
次に再書き込み部２１４ａは、ＬＵ１２内の残りの論理アドレス領域Ｚ（つまり読み出し頻度が低く且つ書き込み頻度も低い論理アドレス領域Ｚ）に割り当てられている物理アドレス領域のデータのうち、ＳＳＤ＿n内の物理アドレス領域のデータ（ストライピングされたデータ）を、例えば、論理アドレスの順番で且つマッピング単位毎に、当該ＳＳＤ＿nから読み出す（ステップＳ３９）。そして再書き込み部２１４ａは、読み出されたデータを前記ＨＤＤ＿ｎに書き込む（ステップＳ４０）。再書き込み部２１４ａは、ステップＳ３９及びＳ４０を、全ての論理アドレス領域Ｚについて繰り返す（ステップＳ４１）。
【０１１３】
マッピング部２１１ａは、論理アドレス領域Ｚに割り当てられている物理アドレス領域のデータのうち、ＳＳＤ＿nから読み出されたデータのＨＤＤ−ｎへの書き込みに際しも、予備ＳＳＤへの書き込み時と同様のマッピングを行う。例えばマッピング部２１１ａは、論理アドレス領域Ｚの先頭の論理アドレスに、フリー状態にあるＨＤＤ論理アドレス領域の先頭のＨＤＤ論理アドレスを割り当てる。
【０１１４】
ステップＳ３９及びＳ４０が全ての論理アドレス領域Ｚについて繰り返されると（ステップＳ４１）、マッピング部２１１ａは、予備ＳＳＤをＳＳＤ＿n（つまり新ＳＳＤ＿ｎ）に切り替える（ステップＳ４２）。またマッピング部２１１ａは、切り替え前のＳＳＤ＿n（つまり旧ＳＳＤ＿n）を予備ＳＤＤに切り替える（ステップＳ４３）。
【０１１５】
次にマッピング部２１１ａは、変数ｎを１インクリメントする（ステップＳ４４）。ここでは、ｎは１から２にインクリメントされる。そしてマッピング部２１１ａは、このインクリメント後の変数ｎ（＝２）が、ＬＵ１５０を定義するのに用いられているＳＳＤの数（＝ＨＤＤの数）ＮＤを超えたかを判定する（ステップＳ４５）。ここでは、ＮＤは２である。
【０１１６】
この例のように、ｎ（＝２）がＮＤ（＝２）を超えていないならば（ステップＳ４５のＮｏ）、マッピング部２１１ａは再書き込み部２１４ａと協働して、ステップＳ３２乃至Ｓ４５を再び実行する。
【０１１７】
以上の動作により、ｎが１である状態では、ＳＳＤ＿１及びＨＤＤ＿１から論理アドレス領域Ｙに対応するデータが読み出されて、当該データが予備ＳＳＤに書き込まれる。次に、ＳＳＤ＿１及びＨＤＤ＿１から論理アドレス領域Ｘに対応するデータが読み出されて、当該データが予備ＳＳＤに書き込まれる。次に、ＳＳＤ＿１から残りの論理アドレス領域Ｚに対応するデータが読み出されて、当該データがＨＤＤ＿１に書き込まれる。そして、予備ＳＳＤが新ＳＳＤ＿１に切り替えられ、旧ＳＳＤ＿１が予備ＳＳＤに切り替えられる。するとｎは１から２にインクリメントされる。
【０１１８】
このように、ｎが２である状態では、ＳＳＤ＿２及びＨＤＤ＿２から論理アドレス領域Ｙに対応するデータが読み出されて、当該データが予備ＳＳＤ（つまり旧ＳＳＤ＿１）に書き込まれる。ここで予備ＳＳＤ（旧ＳＳＤ＿１）は、この読み出し／書き込みの前にアンマップされている。次に、ＳＳＤ＿２及びＨＤＤ＿２から論理アドレス領域Ｘに対応するデータが読み出されて、当該データが予備ＳＳＤ（旧ＳＳＤ＿１）に書き込まれる。次に、ＳＳＤ＿２から残りの論理アドレス領域Ｚに対応するデータが読み出されて、当該データがＨＤＤ＿２に書き込まれる。そして、予備ＳＳＤ（旧ＳＳＤ＿１）が新ＳＳＤ＿２に切り替えられ、旧ＳＳＤ＿２が予備ＳＳＤに切り替えられる。するとｎは２から３にインクリメントされる。このように、ｎ（＝３）がＮＤ（＝２）を超えたならば（ステップＳ４５のＹｅｓ）、図１６のフローチャートで示される処理Ｐａは終了する。
【０１１９】
処理Ｐａによれば、予備ＳＳＤを利用することで、図１２と同様のデータ再配置を確実に実現することができる。但し、図１２に示すデータ再配置は、処理ＰａにおいてＮＤが１の場合に相当する。
【０１２０】
次に上記処理Ｐｂについて、図１７のフローチャートを参照して説明する。まずマッピング部２１１ａは、ＳＳＤ及びＨＤＤを指定する変数ｎを初期値１に設定する（ステップＳ５１）。再書き込み部２１４ａは、予備ＳＳＤが存在しないことから、以下に述べる手順で、ＳＳＤ＿n内のデータ（より詳細には有効なデータ）をＨＤＤ＿ｎにコピー（退避）する。まず再書き込み部２１４ａは、ＳＳＤ＿nがマッピングされているＬＵ１２内の論理アドレス領域に割り当てられている当該ＳＳＤ＿nの物理領域から、例えば、論理アドレスの昇順で且つマッピング単位毎に、データ（有効なデータ）を読み出す（ステップＳ５２）。そして再書き込み部２１４ａは、読み出されたデータをＨＤＤ＿ｎに書き込む（ステップＳ５３）。これによりＳＳＤ＿nからＨＤＤ＿ｎにデータがコピーされる。再書き込み部２１４ａは、ステップＳ５２及びＳ５３を、ＳＳＤ＿n内の有効なデータが全てＨＤＤ＿ｎにコピーされるまで、論理アドレスの順番に繰り返す（ステップＳ５４）。
【０１２１】
ＳＳＤ＿nからＨＤＤ＿ｎへのデータコピーが終了すると、マッピング部２１１ａはＳＳＤ＿nをアンマップする（ステップＳ５５）。ステップＳ５５においてマッピング部２１１ａは、ＳＳＤ＿nをアンマップする前に、当該ＳＳＤ＿nがマッピングされていたＬＵ１５０の論理アドレス領域（マッピング単位）にＨＤＤ＿ｎをマッピングする（割り当てる）。すると再書き込み部２１４ａは、ＬＵ１２内の読み出し頻度が高く且つ書き込み頻度が低い論理アドレス領域Ｙに割り当てられているＨＤＤ＿ｎ内の物理アドレス領域のデータを、例えば、論理アドレスの昇順で且つマッピング単位毎に、当該ＨＤＤ＿ｎから読み出す（ステップＳ５６）。読み出されたデータは、ＳＳＤ−nをアンマップする前に、当該ＳＳＤ−nからＨＤＤ−ｎにコピーされたデータを含んでいる可能性がある。再書き込み部２１４ａは、読み出されたデータをＳＳＤ＿n（アンマップ状態にあるＳＳＤ−n）に書き込む（ステップＳ５７）。再書き込み部２１４ａは、ステップＳ５６及びＳ５７を、読み出し／書き込みが行われたマッピング単位の数が論理アドレス領域Ｙの総サイズに対応する数ＮＭｙに達するまで繰り返す（ステップＳ５８）。
【０１２２】
次に再書き込み部２１４ａは、ＬＵ１２内の書き込み頻度が高い論理アドレス領域Ｘに割り当てられているＨＤＤ＿ｎ内の物理アドレス領域のデータを、例えば、論理アドレスの昇順で且つマッピング単位毎に、当該ＨＤＤ＿ｎから読み出す（ステップＳ５９）。そして再書き込み部２１４ａは、読み出されたデータをＳＳＤ＿nに書き込む（ステップＳ６０）。再書き込み部２１４ａは、ステップＳ５９及びＳ６０を、読み出し／書き込みが行われたマッピング単位の数が論理アドレス領域Ｘの総サイズに対応する数ＮＭｘに達するまで繰り返す（ステップＳ６１）。
【０１２３】
次にマッピング部２１１ａは、変数ｎを１インクリメントする（ステップＳ６２）。ここでは、ｎは１から２にインクリメントされる。そしてマッピング部２１１ａは、このインクリメント後の変数ｎ（＝２）が、ＬＵ１５０を定義するのに用いられているＳＳＤの数（つまりＨＤＤの数）ＮＤを超えたかを判定する（ステップＳ６３）。ここでは、ＮＤは２である。
【０１２４】
この例のように、ｎ（＝２）がＮＤ（＝２）を超えていないならば（ステップＳ６３のＮｏ）、マッピング部２１１ａは再書き込み部２１４ａと協働して、ステップＳ５２乃至Ｓ６３を再び実行する。これに対して、ｎがＮＤを超えたならば（ステップＳ６３のＹｅｓ）、図１７のフローチャートで示される処理Ｐｂは終了する。
【０１２５】
処理Ｐｂによれば、ＬＵ１５０を定義するのに用いられているＨＤＤ（ここではＨＤＤ＿１及びＨＤＤ＿２）に十分な空き領域があるならば、当該ＨＤＤを利用することで、図１２と同様のデータ再配置を確実に実現することができる。但し、図１２に示すデータ再配置は、処理ＰｂにおいてＮＤが１の場合に相当する。
【０１２６】
以上説明した少なくとも１つの実施形態によれば、ＳＳＤ（ソリッドステートドライブ）において断片化解消処理が実行される頻度を低減できるように当該ＳＳＤにデータを再配置するストレージ装置、ストレージコントローラ及び方法を提供できる。
【０１２７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【要約】
実施形態によれば、ストレージコントローラは、アクセス統計値収集部と選択部と再書き込み部とを含む。アクセス統計値収集部は、ソリッドステートドライブを用いて定義される論理ユニットの論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集する。選択部は、書き込み頻度が低い第１の小論理アドレス領域の集合を論理ユニットから選択する。再書き込み部は、第１の小論理アドレス領域の集合のデータをソリッドステートドライブにまとめて再書き込みし、残りの第２の小論理アドレス領域の集合のデータをソリッドステートドライブにまとめて再書き込みする。【図１】
0005550741.tif 000002
【図２】
0005550741.tif 000003
【図３】
0005550741.tif 000004
【図４】
0005550741.tif 000005
【図５】
0005550741.tif 000006
【図６】
0005550741.tif 000007
【図７】
0005550741.tif 000008
【図８】
0005550741.tif 000009
【図９】
0005550741.tif 000010
【図１０】
0005550741.tif 000011
【図１１】
0005550741.tif 000012
【図１２】
0005550741.tif 000013
【図１３】
0005550741.tif 000014
【図１４】
0005550741.tif 000015
【図１５】
0005550741.tif 000016
【図１６】
0005550741.tif 000017
【図１７】
0005550741.tif 000018