(57)【要約】【課題】ストレージシステムの耐用年数をより長くする。【解決手段】実施形態の記憶制御装置は、複数の記憶部のいずれかに含まれる記憶領域であるチャンクを１以上含むストライプを記憶の単位とする記憶制御装置であって、第１選択部と、分割部と、決定部とを備える。第１選択部は、複数のストライプから、ストライプに含まれる有効な第１データの数に基づいて、ストライプを選択する。分割部は、第１選択部により選択されたストライプに含まれるチャンクを、複数の部分チャンクに分割する。決定部は、部分チャンクに含まれる有効な第１データの数に基づいて、ガーベジコレクションの対象にする部分チャンクを決定する。【選択図】図２
2018116526.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶部のいずれかに含まれる記憶領域であるチャンクを１以上含むストライプを記憶の単位とする記憶制御装置であって、
複数の前記ストライプから、前記ストライプに含まれる有効な第１データの数に基づいて、前記ストライプを選択する第１選択部と、
前記第１選択部により選択された前記ストライプに含まれる前記チャンクを、複数の部分チャンクに分割する分割部と、
前記部分チャンクに含まれる前記有効な第１データの数に基づいて、ガーベジコレクションの対象にする前記部分チャンクを決定する決定部と、
を備える記憶制御装置。
【請求項２】
前記第１選択部は、前記複数のストライプから、前記ストライプに含まれる前記有効な第１データの数が第１閾値以下である前記ストライプを選択する、
請求項１に記載の記憶制御装置。
【請求項３】
前記決定部は、前記複数の部分チャンクのうち、前記部分チャンクに含まれる前記有効な第１データの数が第２閾値以下である部分チャンクを、ガーベジコレクションの対象に決定する、
請求項１に記載の記憶制御装置。
【請求項４】
前記分割部は、前記第１選択部により選択された前記ストライプに含まれる前記チャンクを、２つの前記部分チャンクに分割し、
前記決定部は、前記有効な第１データの数がより少ない前記部分チャンクを、ガーベジコレクションの対象に決定し、前記２つの部分チャンクに含まれる前記有効な第１データの数が同じである場合は、いずれか一方の前記部分チャンクをガーベジコレクションの対象に決定する、
請求項１に記載の記憶制御装置。
【請求項５】
複数の前記第１データから、前記第１データを復元するための１以上の第２データを生成する生成部と、
前記１以上の第１データと前記１以上の第２データとを記憶させる前記ストライプを選択する第２選択部と、
前記１以上の第１データと前記１以上の第２データとを、前記第１選択部により選択された前記ストライプに含まれる前記チャンクに記憶させる記憶制御部と、
を更に備える請求項１に記載の記憶制御装置。
【請求項６】
前記記憶制御部は、前記複数の記憶部の状態に基づいて、前記１以上の第１データを記憶するチャンク、及び、前記１以上の第２データを記憶するチャンクの少なくとも一方を決定する、
請求項５に記載の記憶制御装置。
【請求項７】
前記複数の記憶部の状態は、前記複数の記憶部それぞれの総書き込み容量である、
請求項６に記載の記憶制御装置。
【請求項８】
前記複数の記憶部の状態は、前記複数の記憶部それぞれの容量と、前記複数の記憶部それぞれの総書き込み容量との割合である、
請求項６に記載の記憶制御装置。
【請求項９】
前記記憶制御部は、前記１以上の第１データを記憶するチャンク、及び、前記１以上の第２データを記憶するチャンクの少なくとも一方を、ランダムに決定する、
請求項５に記載の記憶制御装置。
【請求項１０】
前記分割部は、前記部分チャンクのサイズが第３閾値未満の場合は、前記チャンクを分割しない、
請求項１に記載の記憶制御装置。
【請求項１１】
前記分割部は、分割されることにより得られる前記部分チャンクのサイズが第３閾値以上の間、分割されることにより得られる前記部分チャンクの分割を繰り返す、
請求項１に記載の記憶制御装置。
【請求項１２】
サイズが第４閾値以下であるチャンクを含む複数の第１ストライプに含まれる前記有効な第１データを、サイズが第５閾値以上のチャンクを含む未使用の第２ストライプにコピーし、前記複数の第１ストライプを削除することにより、前記複数の第１ストライプを前記第２ストライプに結合する結合部、
を更に備える請求項１に記載の記憶制御装置。
【請求項１３】
複数の記憶部のいずれかに含まれる記憶領域であるチャンクを１以上含むストライプを記憶の単位とする記憶制御装置の記憶制御方法であって、
第１選択部が、複数の前記ストライプから、前記ストライプに含まれる有効な第１データの数に基づいて、前記ストライプを選択するステップと、
分割部が、前記第１選択部により選択された前記ストライプに含まれる前記チャンクを、複数の部分チャンクに分割するステップと、
決定部が、前記部分チャンクに含まれる前記有効な第１データの数に基づいて、ガーベジコレクションの対象にする前記部分チャンクを決定するステップと、
を含む記憶制御方法。
【請求項１４】
複数の記憶部のいずれかに含まれる記憶領域であるチャンクを１以上含むストライプを記憶の単位とするコンピュータを、
複数の前記ストライプから、前記ストライプに含まれる有効な第１データの数に基づいて、前記ストライプを選択する第１選択部と、
前記第１選択部により選択された前記ストライプに含まれる前記チャンクを、複数の部分チャンクに分割する分割部と、
前記部分チャンクに含まれる前記有効な第１データの数に基づいて、ガーベジコレクションの対象にする前記部分チャンクを決定する決定部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は記憶制御装置、記憶制御方法及びプログラムに関する。
【背景技術】
【０００２】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、及び、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の複数のブロックストレージデバイスを備えるストレージシステムが従来から知られている。例えば複数のＳＳＤを備えるＡＦＡ（Ａｌｌ  Ｆｌａｓｈ  Ａｒｒａｙ）が知られている。一般に、ＡＦＡ等のストレージシステムでは、ＳＳＤへの書き込み回数が多いほど、ＳＳＤの故障率が上昇する。そのため、ＳＳＤを交換せずにＡＦＡを使用可能な期間は、ＳＳＤへの書き込み回数が多いほど短くなる。ストレージシステムにデータを書き込む方式としては、例えばＬｏｇＳｔｒｕｃｔｕｒｅｄ方式が知られている。ＬｏｇＳｔｒｕｃｔｕｒｅｄ方式では、ホスト装置から送信されたライトコマンドで指定されたアドレスに依らずに、データの書き込み先のアドレスが未書き込み領域に決定される。ＬｏｇＳｔｒｕｃｔｕｒｅｄ方式の特徴の１つとして、必要に応じてＧＣ（ＧａｒｂａｇｅＣｏｌｌｅｃｔｉｏｎ）が発生する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国公開２０１６／０１８８４１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、ストレージシステムの耐用年数をより長くすることが難しかった。
【課題を解決するための手段】
【０００５】
実施形態の記憶制御装置は、複数の記憶部のいずれかに含まれる記憶領域であるチャンクを１以上含むストライプを記憶の単位とする記憶制御装置であって、第１選択部と、分割部と、決定部とを備える。第１選択部は、複数の前記ストライプから、前記ストライプに含まれる有効な第１データの数に基づいて、前記ストライプを選択する。分割部は、前記第１選択部により選択された前記ストライプに含まれる前記チャンクを、複数の部分チャンクに分割する。決定部は、前記部分チャンクに含まれる前記有効な第１データの数に基づいて、ガーベジコレクションの対象にする前記部分チャンクを決定する。
【図面の簡単な説明】
【０００６】
【図１】実施形態の記憶制御装置のハードウェア構成の例を示す図。
【図２】実施形態の記憶制御装置の機能構成の例を示す図。
【図３】実施形態の記憶部に記憶されるストライプの例を示す図。
【図４Ａ】実施形態の記憶部に記憶されるチャンクの位置の例を示す図。
【図４Ｂ】実施形態の記憶部に記憶されるチャンクの位置の例を示す図。
【図５】実施形態のライトコマンドの処理の例を示すフローチャート。
【図６】実施形態の第１アドレス情報の例を示す図。
【図７】実施形態の第２アドレス情報の例を示す図。
【図８】実施形態のストライプ情報の例を示す図。
【図９】実施形態の無効データを含むストライプの例を示す図。
【図１０】実施形態のリードコマンドの処理の例を示すフローチャート。
【図１１】実施形態のガーベジコレクションの処理の例を示すフローチャート。
【図１２】実施形態のガーベジコレクション対象のストライプの例を示す図。
【図１３】実施形態のストライプ情報の更新例を示す図。
【図１４】実施形態のストライプ情報の更新例を示す図。
【図１５】実施形態のストライプの結合処理の例を示すフローチャート。
【図１６】実施形態の変形例１のストライプの例を示す図。
【図１７】実施形態の変形例２のガーベジコレクションの処理の例を示すフローチャート。
【図１８】実施形態の変形例２のチャンクの分割例を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、記憶制御装置、記憶制御方法及びプログラムの実施形態を詳細に説明する。
【０００８】
はじめに、実施形態の記憶制御装置のハードウェア構成の例について説明する。
【０００９】
［ハードウェア構成の例］
図１は実施形態の記憶制御装置１００のハードウェア構成の例を示す図である。実施形態の記憶制御装置１００は、ホストＩ／Ｆ（ｉｎｔｅｒｆａｃｅ）１、プロセッサ２、主記憶装置３、スイッチ４及びＳＳＤ５−１〜５−ｎ（ｎは２以上の整数）を備える。
【００１０】
以下、ＳＳＤ５−１〜５−ｎを区別しない場合、単にＳＳＤ５という。
【００１１】
ホストＩ／Ｆ１は、ライトコマンド、リードコマンド、Ｔｒｉｍコマンド及びシャットダウンコマンド等の要求を、ホスト装置から受け付ける。ホスト装置は任意でよい。ホスト装置は、例えばパーソナルコンピュータ及びスマートデバイス等である。
【００１２】
ライトコマンドは、ＳＳＤ５に第１データを書き込むコマンドである。ライトコマンドは、第１データ、及び、当該第１データを特定する第１アドレスを含む。第１データは任意でよい。第１データは、例えばホスト装置のユーザにより使用されるユーザデータである。
【００１３】
リードコマンドは、ＳＳＤ５から第１データを読み出すコマンドである。リードコマンドは第１アドレスを含む。
【００１４】
Ｔｒｉｍコマンドは、ホスト装置により指定された第１アドレスにより特定される第１データを無効化する要求である。Ｔｒｉｍコマンドにより指定された第１アドレスにより特定される第１データは、ガーベジコレクションが実行されたときに消去される。
【００１５】
シャットダウンコマンドは、記憶制御装置１００をシャットダウンする要求である。
【００１６】
プロセッサ２は、ＳＳＤ５等の補助記憶装置からプログラムを読み出して実行する。
【００１７】
主記憶装置３は、プロセッサ２により作業領域として使用される記憶領域である。
【００１８】
スイッチ４は、プロセッサ２とＳＳＤ５−１〜５−ｎとを接続する。なおＳＳＤ５の数が少なく、プロセッサ２とＳＳＤ５とを直接接続可能な場合は、スイッチ４はなくてもよい。
【００１９】
ＳＳＤ５はデータを記憶する。ＳＳＤ５に記憶されるデータは、例えば上述の第１データ、第２データ及び制御データ等である。
【００２０】
第２データは、第１データを復元するためのデータである。第２データの形式は任意でよい。第２データは、例えばＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）−１〜ＲＡＩＤ−６で使用される冗長形式、ＲＳ（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）符号、及び、ハミング符号等である。また例えば、第２データは、単純に、第１データの複製でもよい。
【００２１】
制御データは、記憶制御装置１００の制御に使用されるテーブル等である。制御データは、例えば第１アドレス情報（図６参照）、第２アドレス情報（図７参照）、及び、ストライプ情報（図８参照）等である。
【００２２】
なお図１の例では、補助記憶装置がＳＳＤ５である場合を例示しているが、補助記憶装置は任意でよい。補助記憶装置は、例えばＨＤＤ等でもよい。
【００２３】
次に実施形態の記憶制御装置１００の機能構成の例について説明する。
【００２４】
［機能構成の例］
図２は実施形態の記憶制御装置１００の機能構成の例を示す図である。実施形態の記憶制御装置１００は、バッファ１０、記憶部１１−１〜１１−ｎ、受付部１２、生成部１３、選択部１４、記憶制御部１５、分割部１６、決定部１７及び結合部１８を備える。
【００２５】
図２では、各機能ブロックの動作の概要について説明する。図２により示される機能ブロックは一例であり、他の機能構成であってもよい。例えば１つの機能ブロックにより実行される処理を、複数の機能ブロックにより実行するように変更してもよい。なお各機能ブロックの動作の詳細については、後述のフローチャートを参照して説明する。
【００２６】
＜動作の概要＞
バッファ１０は、処理対象のデータを一時的に記憶する。バッファ１０は、例えば主記憶装置３により実現される。バッファ１０は、例えば受付部１２により受け付けられたライトコマンドで指定された第１データを記憶する。
【００２７】
記憶部１１−１〜１１−ｎはデータを記憶する。記憶部１１−１〜１１−ｎは、例えばＳＳＤ５−１〜５−ｎにより実現される。記憶部１１−１〜１１−ｎに記憶されるデータは、例えば第１データ、第２データ及び制御データ等である。以下、記憶部１１−１〜１１−ｎを区別しない場合は、単に記憶部１１という。
【００２８】
受付部１２は、ライトコマンド、リードコマンド、Ｔｒｉｍコマンド及びシャットダウンコマンド等の要求を、ホスト装置から受け付ける。
【００２９】
生成部１３は、１以上の第１データと１以上の第２データとを記憶させる単位であるストライプを生成する。ストライプは、複数の記憶部１１のいずれかに含まれるチャンクを１以上含む。チャンクは、所定のサイズの記憶領域である。未使用のストライプを識別する識別情報は、例えばＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ，Ｆｉｒｓｔ  Ｏｕｔ）等の方式によって、バッファ１０及び記憶部１１等に記憶される。ストライプを識別する識別情報は、例えばストライプＩＤ等である。
【００３０】
また、生成部１３は、１以上の第１データが記憶部１１に記憶される処理が実行されるときに、１以上の第１データから、上述の１以上の第２データを生成する。
【００３１】
選択部１４は、１以上の第１データと１以上の第２データとを記憶部１１に書き込むときに、１以上の第１データと１以上の第２データとを記憶させるストライプを選択する。選択部１４は、１以上の第１データと１以上の第２データとを記憶させるストライプを、例えばＦＩＦＯの先頭に記憶されている未使用のストライプの識別情報により識別されるストライプから順番に選択する。
【００３２】
また、選択部１４は、記憶部１１のガーベジコレクションの処理が実行されるときに、ガーベジコレクションの対象とするストライプを選択する。
【００３３】
また、選択部１４は、ストライプを結合する処理が実行されるときに、チャンクサイズが閾値（第４閾値）以下の複数のストライプと、チャンクサイズが閾値（第５閾値）以上のコピー先のストライプと、を選択する。
【００３４】
＜ストライプの例＞
図３は実施形態の記憶部１１に記憶されるストライプの例を示す図である。図３の例では、ストライプが、チャンク６０−１〜６０−８を含む場合を示す。各チャンクは、複数の記憶部１１のいずれかに記憶される。例えばチャンク６０−１は、記憶部１１−１に記憶される。チャンクサイズは任意でよい。図３の例は、チャンクサイズが４の場合を示す。
【００３５】
図３の例では、１以上の第１データが、チャンク６０−１〜６０−４、及び、チャンク６０−６〜６０−８に記憶されている。また図３の例では、第２データが、チャンク６０−５に記憶されている。
【００３６】
なおストライプに含まれる各チャンクは、隣り合う複数の記憶部１１を連続して使用して記憶しなくてもよい。各チャンクを記憶する記憶部１１の組み合わせは任意でよい。
【００３７】
図４Ａは実施形態の記憶部１１に記憶されるチャンクの位置の例を示す図である。図４Ａの例は、チャンク６０−１を記憶部１１−１に記憶し、チャンク６０−２を記憶部１１−４に記憶し、チャンク６０−３を記憶部１１−８に記憶し、チャンク６０−４を記憶部１１−９に記憶し、チャンク６０−５を記憶部１１−１０に記憶し、チャンク６０−６を記憶部１１−１１に記憶し、チャンク６０−７を記憶部１１−１５に記憶し、チャンク６０−８を記憶部１１−１６に記憶する場合を示す。
【００３８】
図４Ｂは実施形態の記憶部１１に記憶されるチャンクの位置の例を示す図である。図４Ｂの例は、チャンク６０−１を記憶部１１−１に記憶し、チャンク６０−２を記憶部１１−２に記憶し、チャンク６０−３を記憶部１１−３に記憶し、チャンク６０−４を記憶部１１−４に記憶し、チャンク６０−５〜６０−８を記憶部１１−５に記憶する場合を示す。
【００３９】
図２に戻り、記憶制御部１５は、１以上の第１データと１以上の第２データとを、選択部１４により選択されたストライプに含まれるチャンクに記憶させる。
【００４０】
なお１以上の第２データを記憶させるチャンクは任意でよい。記憶制御部１５は、例えば記憶部１１−１〜１１−ｎの状態に基づいて、１以上の第１データを記憶するチャンク、及び、１以上の第２データを記憶するチャンクの少なくとも一方を決定する。
【００４１】
記憶部１１−１〜１１−ｎの状態は、例えば記憶部１１−１〜１１−ｎそれぞれの総書き込み容量である。第２データは、当該第２データと同じストライプに含まれる第１データが更新される度に、更新が必要となるため、第２データの更新頻度は第１データよりも高くなることがある。そのため、記憶制御部１５が、総書き込み容量がより少ない記憶部１１に第２データを書き込むことにより、記憶部１１−１〜１１−ｎの耐用年数をより長くすることができる。
【００４２】
また例えば、記憶部１１−１〜１１−ｎの状態は、記憶部１１−１〜１１−ｎそれぞれの書き込み割合である。書き込み割合は、記憶部１１の容量と、記憶部１１の総書き込み容量との割合である。例えば記憶部１１の容量が１２８ＧＢであり、総書き込み容量が６４ＧＢである場合、書き込み割合は５０％である。また例えば、記憶部１１の容量が１２８ＧＢであり、総書き込み容量が５１２ＧＢである場合、書き込み割合は４００％である。
【００４３】
ストレージシステムに含まれる特定の記憶部１１のみが疲弊しやすい状態よりも、ストレージシステムに含まれる全ての記憶部１１が同じくらいのスピードで疲弊する状態の方が、ストレージシステムの寿命が長くなる。
【００４４】
そのため、記憶制御部１５は、記憶部１１−１〜１１−ｎの容量が同じである場合は、総書き込み容量を使用し、記憶部１１−１〜１１−ｎの容量が同じでない場合は、書込み割合を使用する。
【００４５】
例えば記憶部１１−１の容量が１２８ＧＢであり、記憶部１１−２の容量が５１２ＧＢであり、書込み対象のデータのサイズが１２８ＧＢである場合、当該データが記憶部１１−１に書き込まれるよりも、記憶部１１−２に書き込まれる方が、書込み割合を抑えることができる。記憶制御部１５が、書込み割合に基づいて、１以上の第１データを記憶するチャンク、及び、１以上の第２データを記憶するチャンクの少なくとも一方を決定することにより、ストレージシステムの寿命をより長くすることができる。記憶制御部１５は、例えば書き込み割合が他の記憶部１１よりも小さい記憶部１１に含まれるチャンクを、１以上の第２データを記憶するチャンクに決定する。
【００４６】
また例えば、記憶制御部１５は、１以上の第１データを記憶するチャンク、及び、１以上の第２データを記憶するチャンクの少なくとも一方を、ランダムに決定する。これにより、第１データよりも更新頻度が高い第２データが、常に同じ記憶部１１に記憶されることを防ぐことができるので、記憶部１１−１〜１１−ｎの耐用年数をより長くすることができる。
【００４７】
分割部１６は、チャンクを複数の部分チャンクに分割する。分割数は任意でよい。実施形態の説明では、簡単のため、分割数が２である場合を例にして説明する。例えばチャンクサイズが４であり、かつ、分割数が２である場合、分割部１６は、チャンクサイズが４のチャンクを、チャンクサイズが２の２つの部分チャンクに分割する。
【００４８】
決定部１７は、部分チャンクに含まれる有効データの数に基づいて、ガーベジコレクションの対象にする部分チャンクを決定する。有効データは、有効な第１データを示す。有効データの詳細については後述する。
【００４９】
結合部１８は、チャンクサイズが、閾値（第４閾値）以下であるチャンクを含む複数のストライプに含まれる有効データを、チャンクサイズが閾値（第５閾値）以上のチャンクを含む未使用のストライプにコピーする。そして結合部１８は、当該複数のストライプを削除する。これにより当該複数のストライプを１つのストライプに結合する。
【００５０】
以下、フローチャートを参照して、各機能ブロックの動作の詳細について説明する。はじめに、実施形態のライトコマンドの処理の例について説明する。
【００５１】
＜ライトコマンドの処理の例＞
図５は実施形態のライトコマンドの処理の例を示すフローチャートである。はじめに、受付部１２が、ホスト装置からライトコマンドを受け付ける（ステップＳ１）。次に、受付部１２が、ステップＳ１の処理により受け付けられたライトコマンドにより指定された第１データをバッファ１０に記憶する（ステップＳ２）。次に、受付部１２が、ライトコマンドの受け付けが成功したことをホスト装置に送信する（ステップＳ３）。
【００５２】
次に、生成部１３が、バッファ１０に記憶されている第１データの数（またはバッファ１０に記憶されている第１データのデータサイズ）が、閾値以上であるか否かを判定する（ステップＳ４）。なお閾値の定め方は任意でよい。閾値は、例えば１つのストライプを生成するために必要なデータサイズに基づいて決定される。バッファ１０に記憶されている第１データの数が、閾値以上でない場合（ステップＳ４、Ｎｏ）、処理はステップＳ１に戻る。
【００５３】
バッファ１０に記憶されている第１データの数が、閾値以上である場合（ステップＳ４、Ｙｅｓ）、生成部１３は、１以上の第１データから、第１データを復元するための１以上の第２データを生成する（ステップＳ５）。
【００５４】
次に、選択部１４が、１以上の第１データと１以上の第２データとを記憶させるストライプを選択する（ステップＳ６）。
【００５５】
次に、記憶制御部１５が、１以上の第１データと１以上の第２データとを、ステップＳ６の処理により選択されたストライプに含まれるチャンクに書き込む（ステップＳ７）。
【００５６】
次に、記憶制御部１５が、各チャンクから、書き込みの完了を示す完了通知を受信する（ステップＳ８）。
【００５７】
次に、記憶制御部１５が、第１アドレス情報、及び、第２アドレス情報を更新する（ステップＳ９）。ここで、第１アドレス情報及び第２アドレス情報の例について説明する。
【００５８】
＜第１アドレス情報の例＞
図６は実施形態の第１アドレス情報の例を示す図である。実施形態の第１アドレス情報は、第１アドレスと、記憶部ＩＤ、及び、第２アドレスとを関連付けて記憶する。第１アドレス及び第２アドレスは、例えばＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）方式のアドレスである。
【００５９】
第１アドレスは、ホスト装置から受け付けられたライトコマンドにより指定された第１データのアドレスである。ホスト装置では、第１データの記憶位置は第１アドレスにより特定される。
【００６０】
記憶部ＩＤは記憶部１１を識別する識別情報である。第２アドレスは、第１データが記憶されている位置を示すアドレスである。記憶制御装置１００では、第１データの記憶位置は、記憶部ＩＤ及び第２アドレスにより特定される。
【００６１】
図６の例では、例えば第１アドレス０ｘ００００により特定される第１データは、記憶部ＩＤが５である記憶部１１−５の第２アドレス０ｘ１０００に記憶されていることを示す。
【００６２】
上述の第１アドレス情報により、ホスト装置で使用されている第１アドレスと、記憶制御装置１００で使用されている記憶部ＩＤ、及び、第２アドレスとを対応付けることができる。
【００６３】
なお図６の例では、テーブル構造の第１アドレス情報について説明したが、第１アドレス情報のデータ構造は任意でよい。第１アドレス情報のデータ構造は、例えばツリー構造でもよい。
【００６４】
＜第２アドレス情報の例＞
図７は実施形態の第２アドレス情報の例を示す図である。第２アドレス情報は、第２アドレス及び第１アドレスを含む。第２アドレス情報は、記憶部１１毎に記憶される。図７の例は、記憶部１１−５の第２アドレス情報の例を示す。図７の例は、第２アドレス０ｘ１０００に、第１アドレス０ｘ００００により特定される第１データが記憶されていることを示す。
【００６５】
記憶制御部１５は、ライトコマンドにより指定された第１データを記憶部１１に書き込む度に、第１アドレス情報（図６参照）、及び、第２アドレス情報（図７参照）を更新する。
【００６６】
図５に戻り、次に、記憶制御部１５が、ストライプ情報を更新する（ステップＳ１０）。ここでストライプ情報の例について説明する。
【００６７】
＜ストライプ情報の例＞
図８は実施形態のストライプ情報の例を示す図である。実施形態のストライプ情報は、使用フラグ、ストライプＩＤ、チャンクサイズ、第２データ位置、記憶部ＩＤ、開始アドレス、有効データ数（前半）、及び、有効データ数（後半）を含む。
【００６８】
使用フラグは、ストライプが使用されているか否かを示す情報である。例えば、使用フラグが０の場合、ストライプが使用されていないことを示し、使用フラグが１の場合、ストライプが使用されていることを示す。記憶制御部１５は、ステップＳ６の処理により選択されたストライプの使用フラグを０から１に更新する。
【００６９】
ストライプＩＤは、ストライプを識別する識別情報である。
【００７０】
チャンクサイズは、ストライプに含まれるチャンクのサイズである。
【００７１】
第２データ位置は、第２データが記憶される記憶部１１を示す情報である。図８の例では、第２データが記憶される記憶部１１を示す情報は、記憶部１１を識別する記憶部ＩＤである。
【００７２】
記憶部ＩＤ、開始アドレス、有効データ数（前半）、及び、有効データ数（後半）は、チャンクの記憶場所、及び、当該チャンクに含まれる有効データ数を示す。記憶部ＩＤ、開始アドレス、有効データ数（前半）、及び、有効データ数（後半）は、ストライプに含まれるチャンクの数だけ保持される。有効データ数は、上述の有効データの数である。
【００７３】
記憶部ＩＤは、チャンクが割り当てられた記憶部１１を識別する識別情報である。
【００７４】
開始アドレスは、チャンクの先頭の記憶領域を示すアドレスである。
【００７５】
有効データ数（前半）は、チャンクを記憶する領域の前半の有効データの数を示す。図８のストライプＩＤが１の例では、チャンクサイズが４であり、開始アドレスが０ｘ００００であり、有効データ数（前半）が２であるので、０ｘ００００及び０ｘ０００１に記憶された第１データが有効データであることを示す。
【００７６】
有効データ数（後半）は、チャンクを記憶する領域の後半の有効データの数を示す。図８のストライプＩＤが１の例では、チャンクサイズが４であり、開始アドレスが０ｘ００００であり、有効データ数（後半）が１であるので、０ｘ０００２及び０ｘ０００３に記憶された第１データのうち、いずれか一方が有効データであり、いずれか一方が無効データであることを示す。無効データは、無効な第１データを示す。
【００７７】
ここで、有効データ及び無効データの詳細について説明する。ステップＳ６の処理により選択されたストライプに含まれるチャンクに記憶される第１データは、全て有効データである。しかしながら、ライトコマンドにより指定された第１アドレスにより特定された第１データが、既に記憶部１１に記憶されている場合（第１データの更新の場合）、既に記憶部１１に記憶されていたストライプに含まれる更新前の第１データが無効データになる。
【００７８】
記憶制御部１５は、更新前の第１データを記憶するストライプのストライプ情報を更新する。具体的には、記憶制御部１５は、更新前の第１データがチャンクの前半に記憶されている場合、有効データ数（前半）を減らし、更新前の第１データがチャンクの後半に記憶されている場合、有効データ数（後半）を減らす。
【００７９】
なお、第１データが有効データであるか否かは、第１アドレス情報（図６参照）、及び、第２アドレス情報（図７）から特定することができる。例えば、第１アドレス情報が図６の状態であり、第２アドレス情報が図７の状態である場合に、第１アドレス０ｘ００００により特定される第１データが更新される場合を例にして、具体的に説明する。
【００８０】
例えば、第１アドレス０ｘ００００により特定される更新後の第１データが、記憶部ＩＤが５の記憶部１１−５の第２アドレス０ｘ１２３４に記憶された場合、記憶制御部１５は、図６の第１アドレス情報の１行目を、｛０ｘ００００，５，０ｘ１０００｝から、｛０ｘ００００，５，０ｘ１２３４｝に更新する。また、記憶制御部１５は、図７の記憶部１１−５の第２アドレス情報に、｛０ｘ１２３４，０ｘ００００｝を書き込む。
【００８１】
第１アドレス情報及び第２アドレス情報が、上述のように更新されるので、第１アドレス情報及び第２アドレス情報から、有効データ及び無効データを特定することができる。
【００８２】
＜有効データの特定例＞
第２アドレス０ｘ１２３４を使用して、記憶部１１−５の第２アドレス情報から取得された第１アドレス０ｘ００００と、第１アドレス０ｘ００００を使用して第１アドレス情報から取得された記憶部ＩＤ及び第２アドレス｛５，０ｘ１２３４｝と、は整合する。したがって、記憶部１１−５の第２アドレス０ｘ１２３４に記憶されている第１データは、有効データである。
【００８３】
＜無効データの特定例＞
第２アドレス０ｘ１０００を使用して、記憶部１１−５の第２アドレス情報から取得された第１アドレス０ｘ００００と、第１アドレス０ｘ００００を使用して第１アドレス情報から取得された記憶部ＩＤ及び第２アドレス｛５，０ｘ１２３４｝と、は整合しない。したがって、記憶部１１−５の第２アドレス０ｘ００００に記憶されている第１データは、無効データである。
【００８４】
なお、無効データの他の例としては、例えば上述のＴｒｉｍコマンドにより指定された第１アドレスにより特定される第１データが挙げられる。
【００８５】
＜無効データを含むストライプの例＞
図９は実施形態の無効データを含むストライプの例を示す図である。例えばチャンク６０−１では、第２アドレス０ｘ００００により特定される第１データは、有効データであり、第２アドレス０ｘ０００１により特定される第１データは、有効データであり、第２アドレス０ｘ０００２により特定される第１データは、無効データであり、第２アドレス０ｘ０００３により特定される第１データは、有効データである。したがって、チャンク６０−１の有効データ数（前半）は２である。またチャンク６０−１の有効データ数（後半）は１である。
【００８６】
次に、実施形態のリードコマンドの処理の例について説明する。
【００８７】
＜リードコマンドの処理の例＞
図１０は実施形態のリードコマンドの処理の例を示すフローチャートである。はじめに、受付部１２が、ホスト装置から、第１アドレスを含むリードコマンドを受け付ける（ステップＳ２１）。
【００８８】
次に、記憶制御部１５が、ステップＳ２１の処理により受け付けられたリードコマンドに含まれる第１アドレスを使用して、第１アドレス情報を参照する（ステップＳ２２）。記憶制御部１５は、ステップＳ２２の処理により、第１アドレスにより特定される第１データを記憶する記憶部１１、及び、当該記憶部１１の第２アドレスを特定する。
【００８９】
次に、記憶制御部１５が、ステップＳ２２の処理により特定された記憶部１１の第２アドレスから、第１データを読み出す（ステップＳ２３）。
【００９０】
次に、受付部１２が、ステップＳ２１の処理により受け付けられたリードコマンドの応答として、ステップＳ２３の処理により読み出された第１データを送信する（ステップＳ２４）。
【００９１】
次に、実施形態のガーベジコレクションの処理の例について説明する。
【００９２】
＜ガーベジコレクションの処理の例＞
図１１は実施形態のガーベジコレクションの処理の例を示すフローチャートである。はじめに、選択部１４が、ストライプに含まれる有効データの数に基づいて、ガーベジコレクションの対象とするストライプを選択する（ステップＳ３１）。選択部１４は、例えばストライプ情報（図８参照）を参照することにより、ストライプに含まれる有効データの数が閾値（第１閾値）以下のストライプを選択する。選択部１４が、有効データの数が閾値以下のストライプを選択することにより、ガーベジコレクションの実行時に移動される有効データの数を抑えることができる。
【００９３】
次に、分割部１６が、ステップＳ３１の処理により選択されたストライプに含まれるチャンクを、部分チャンクに分割する（ステップＳ３２）。ここで、チャンクの分割について、図９のストライプに含まれるチャンクを２つの部分チャンクに分割する場合を例にして、具体的に説明する。分割部１６は、チャンク６０−１を、前半の部分チャンクと、後半の部分チャンクとに分割する。前半の部分チャンクは、第２アドレス０ｘ００００及び０ｘ０００１を含む部分チャンクである。後半の部分チャンクは、第２アドレス０ｘ０００２及び０ｘ０００３を含む部分チャンクである。同様に、分割部１６は、チャンク６０−２〜６０−８についても、前半の部分チャンクと、後半の部分チャンクとに分割する。
【００９４】
次に、決定部１７が、部分チャンクに含まれる有効データの数に基づいて、ガーベジコレクションの対象にする部分チャンクを決定する（ステップＳ３３）。具体的には、決定部１７は、ステップＳ３１の処理により選択されたストライプのストライプ情報に含まれる有効データ数（前半）、及び、有効データ数（後半）を参照する。有効データ数（前半）は、前半の部分チャンクに含まれる有効データの数を示す。有効データ数（後半）は、後半の部分チャンクに含まれる有効データの数を示す。決定部１７は、有効データの数がより少ない部分チャンクを、ガーベジコレクションの対象に決定する。なお決定部１７は、２つの部分チャンクに含まれる有効データの数が同じである場合は、いずれか一方の部分チャンクをガーベジコレクションの対象に決定する。
【００９５】
図１２は実施形態のガーベジコレクション対象のストライプの例を示す図である。図１２の例では、部分チャンク６１−１〜６１−８を含むストライプが、ガーベジコレクションの対象となるストライプである。
【００９６】
図１１に戻り、次に、記憶制御部１５が、ストライプ情報を更新する（ステップＳ３４）。具体的には、記憶制御部１５は、ステップＳ３１の処理により選択されたストライプのストライプ情報を、ガーベジコレクションの対象ではない部分チャンクを含むストライプのストライプ情報と、ガーベジコレクションの対象となる部分チャンクを含むストライプのストライプ情報とに更新する。
【００９７】
図１３は実施形態のストライプ情報の更新例を示す図である。図１３の例は、図８のストライプ情報に含まれるストライプＩＤが１のストライプが、ストライプＩＤが１のストライプと、ストライプＩＤが１００のストライプと、に分割された場合を示す。ストライプＩＤが１のストライプは、ガーベジコレクションの対象ではない部分チャンクを含むストライプである。ストライプＩＤが１００のストライプは、ガーベジコレクションの対象となる部分チャンクを含むストライプである。
【００９８】
具体的には、記憶制御部１５は、ストライプＩＤが１のストライプのストライプ情報のチャンクサイズを４から２に更新し、有効データ数（前半）を２から１に更新し、有効データ数（後半）を１から１に更新する（この場合では、有効データ数（後半）については変化なし）。また記憶制御部１５は、ストライプＩＤが１００のストライプのストライプ情報として、｛１，１００，２，０，１，０ｘ０００２，０，１｝を新規に作成する。なお新規に作成されるストライプのストライプＩＤは、未使用の番号から選択される。
【００９９】
図１１に戻り、次に、記憶制御部１５が、ガーベジコレクションの対象となるストライプに含まれる有効データの数（ステップＳ３１〜ステップＳ３５の処理を繰り返すことにより、ステップＳ３３の処理により選択されたＧＣ対象の全ての部分チャンクに含まれる有効データの数）が閾値以上であるか否かを判定する（ステップＳ３５）。なお閾値の定め方は任意でよい。閾値は、例えばガーベジコレクションによって移動の対象になる有効データにより、１つのストライプを生成するために必要なデータサイズに基づいて決定される。
【０１００】
有効データの数が閾値以上でない場合（ステップＳ３５、Ｎｏ）、処理はステップＳ３１に戻る。
【０１０１】
有効データの数が閾値以上である場合（ステップＳ３５、Ｙｅｓ）、記憶制御部１５は、ガーベジコレクションの対象となるストライプのガーベジコレクションを実行する（ステップＳ３６）。
【０１０２】
次に、記憶制御部１５が、ストライプ情報を更新する（ステップＳ３７）。具体的には、記憶制御部１５は、ガーベジコレクションの対象となる部分チャンクを含むストライプのストライプ情報の更新と、ガーベジコレクションにより移動された有効データを含むストライプのストライプ情報の新規作成とを行う。
【０１０３】
図１４は実施形態のストライプ情報の更新例を示す図である。図１４の例は、図１３のストライプ情報に含まれるストライプＩＤが１００のストライプのストライプ情報が更新された場合を示す。また図１４の例は、ガーベジコレクションにより移動された有効データを含むストライプのストライプ情報の例として、ストライプＩＤが２００のストライプのストライプ情報が新規に作成された場合を示す。
【０１０４】
具体的には、記憶制御部１５は、ストライプＩＤが１００のストライプのストライプ情報の使用フラグを１から０に更新し、有効データ数（後半）を１から０に更新する。また記憶制御部１５は、ストライプＩＤが２００のストライプのストライプ情報として、｛１，２００，４，０，１，０ｘ０２００，２，２｝を新規に作成する。
【０１０５】
上述の図１１のステップＳ３３で説明したように、実施形態の記憶制御部１５では、決定部１７が、部分チャンクに含まれる有効データの数に基づいて、ガーベジコレクションの対象にする部分チャンクを決定する。これにより、ガーベジコレクションの実行時に移動対象となる有効データの数を抑えることができるので、記憶部１１の耐用年数をより長くすることができる。
【０１０６】
次にストライプの結合処理の例について説明する。
【０１０７】
＜結合処理の例＞
図１５は実施形態のストライプの結合処理の例を示すフローチャートである。はじめに、選択部１４が、チャンクサイズが閾値（第４閾値）以下のストライプを複数、選択する（ステップＳ５１）。
【０１０８】
次に、選択部１４が、ステップＳ５１の処理により選択されたストライプに含まれる有効データのコピー先のストライプを選択する（ステップＳ５２）。選択部１４は、例えばチャンクサイズが閾値（第５閾値）以上のストライプを選択する。また例えば、選択部１４は、ＦＩＦＯの先頭に記憶されている未使用のストライプの識別情報により識別されるストライプを選択する。
【０１０９】
次に、結合部１８が、ステップＳ５１の処理により選択された複数のストライプに含まれる有効データを、ステップＳ５２の処理により選択されたストライプにコピーする（ステップＳ５３）。
【０１１０】
次に、結合部１８は、ステップＳ５１の処理により選択されたチャンクサイズが閾値（第４閾値）以下の複数のストライプを削除する（ステップＳ５４）。
【０１１１】
次に、記憶制御部１５が、ステップＳ５３の処理により移動された第１データの第１アドレス情報（図６参照）、及び、第２アドレス情報（図７参照）を更新する（ステップＳ５５）。
【０１１２】
次に、記憶制御部１５が、ストライプ情報（図８参照）を更新する（ステップＳ５６）。具体的には、記憶制御部１５は、ストライプの結合により削除された複数のストライプの使用フラグを１から０に更新することにより、当該複数のストライプのストライプ情報を削除する。また記憶制御部１５は、ストライプの結合により使用が開始されたストライプのストライプ情報の作成を行う。
【０１１３】
ステップＳ５６の処理により、ストライプ情報のデータサイズの増大を防ぐことができる。またストライプ情報のテーブルサイズが固定の場合は、ストライプ情報として記憶されるエントリの数の増大を防ぐことができる。
【０１１４】
なお選択部１４は、上述のステップＳ５１以外の方法により、結合対象のストライプを選択してもよい。選択部１４は、例えば同一の記憶部１１に含まれる隣り合う２つのチャンクであって、それぞれのチャンクサイズが閾値以下であるチャンクをそれぞれ含む２つのストライプを選択してもよい。
【０１１５】
以上説明したように、実施形態の記憶制御装置１００では、選択部１４が、複数のストライプから、ストライプに含まれる有効データの数に基づいて、ストライプを選択する。分割部１６が、選択部１４により選択されたストライプに含まれるチャンクを、複数の部分チャンクに分割する。そして決定部１７が、部分チャンクに含まれる有効データの数に基づいて、ガーベジコレクションの対象にする部分チャンクを決定する。
【０１１６】
これにより実施形態の記憶制御装置１００によれば、更新（上書き）が、長期間なされなかった第１データの移動が発生しにくくなるので、ストレージシステム（記憶部１１−１〜１１−ｎ）の書き込み回数を抑えることができる。これによりストレージシステムの耐用年数をより長くすることができる。
【０１１７】
なお上述の実施形態の説明では、簡単のため、分割部１６によりチャンクが２つの部分チャンクに分割される場合について説明したが、分割数は任意でよい。例えば分割数が４つの場合、図８のストライプ情報の有効データ数（前半）、及び、有効データ数（後半）を、４つの記憶領域の有効データ数に変更する。
【０１１８】
例えばストライプのチャンクサイズが２０であり、開始アドレスが０ｘ００００である場合、４つの記憶領域は、０ｘ００００〜０ｘ０００４の第１記憶領域、０ｘ０００５〜０ｘ０００９の第２記憶領域、０ｘ０００Ａ〜０ｘ０００Ｅの第３記憶領域、及び、０ｘ０００Ｆ〜０ｘ００１３の第４記憶領域である。
【０１１９】
なお上述の実施形態の説明では、簡単のため、分割後の部分チャンクサイズが同一である場合について説明したが、部分チャンクサイズは任意でよい。例えばチャンクサイズが４のチャンクを２つに分割する場合、図８のストライプ情報のチャンクサイズを、各部分チャンクに対応するチャンクサイズに変更する。例えばストライプのチャンクサイズが１６であり、開始アドレスが０ｘ００００であり、チャンクサイズが１２と４の２つの部分チャンクに分割する場合、各記憶領域は、０ｘ００００〜０ｘ０００Ｂと０ｘ０００Ｃ〜０ｘ０００Ｆとなる。
【０１２０】
分割部１６によりチャンクが４つの部分チャンクに分割される場合、決定部１７によりガーベジコレクションの対象に決定される部分チャンクの数は任意でよい。決定部１７は、例えば部分チャンクに含まれる有効データの数が、他の部分チャンクに含まれる有効データの数よりも少ない部分チャンクをガーベジコレクションの対象に決定してもよい。また例えば、決定部１７は、複数の部分チャンクのうち、部分チャンクに含まれる有効データの数が閾値（第２閾値）以下である部分チャンクを、ガーベジコレクションの対象に決定してもよい。
【０１２１】
また決定部１７は、ガーベジコレクションの対象とする部分チャンクの数は、１つに限らず、任意でよい。決定部１７は、例えばチャンクが分割されることにより得られた４つの部分チャンクのうち、３つの部分チャンクをガーベジコレクションの対象に決定してもよい。
【０１２２】
なおストライプ情報に４つの記憶領域毎の有効データ数が保持される場合でも、第１及び第２記憶領域の有効データ数と、第３及び第４記憶領域の有効データ数と、を参照することにより、チャンクが２つの部分チャンクに分割される場合にも対応することができる。
【０１２３】
（実施形態の変形例１）
次に実施形態の変形例１について説明する。実施形態の変形例１の説明では、実施形態と同様の説明については省略し、実施形態と異なる箇所について説明する。実施形態の変形例１では、部分チャンクのデータサイズに最小単位が定められている場合について説明する。
【０１２４】
図１６は実施形態の変形例１のストライプの例を示す図である。図１６の例は、チャンクサイズが２０のストライプを示す。図１６のストライプは、複数の第２データＰと、複数の第２データＱとを含む。第２データＰ及びＱが、図１６に示すように、記憶部１１−１１〜１１−１６に記憶されることにより、２つの記憶部が故障しても第１データを復元することができる。しかしながら、図１６に示す第２データＰ及びＱの位置関係が崩れてしまうと、第１データを復元することができなくなる。したがって、実施形態の変形例１の分割部１６は、部分チャンクのサイズが最小単位未満の場合は、チャンクを分割しない。図１６の例では、部分チャンクのサイズの最小単位を示す閾値（第３閾値）は５である。したがって、図１６の例では、分割部１６は、チャンクを例えば２つの部分チャンク、または、４つの部分チャンクに分割することができるが、５つ以上の部分チャンクに分割することはできない。
【０１２５】
なお図１６の例では、簡単のため、各記憶部１１に含まれるチャンクの開始アドレスが一致している場合を示しているが、各記憶部１１に含まれるチャンクの開始アドレスは異なっていてもよい。
【０１２６】
実施形態の変形例１の記憶制御装置１００では、分割部１６が、複数の第２データの位置関係を維持しながらチャンクを複数の部分チャンクに分割する。これにより実施形態の変形例１の記憶制御装置１００によれば、所定の数の記憶部１１の故障であれば、第１データの復元が可能になるとともに、記憶部１１−１〜１１−ｎの耐用年数をより長くすることができる。
【０１２７】
（実施形態の変形例２）
次に実施形態の変形例２について説明する。実施形態の変形例２の説明では、実施形態と同様の説明については省略し、実施形態と異なる箇所について説明する。実施形態の変形例２では、分割部１６が１つのストライプに対して、複数回の分割処理を実行する場合について説明する。
【０１２８】
図１７は実施形態の変形例２のガーベジコレクションの処理の例を示すフローチャートである。実施形態の変形例２では、実施形態のガーベジコレクションの処理（図１１参照）に、ステップＳ３２−２の処理が追加されている。
【０１２９】
はじめに、選択部１４が、ガーベジコレクションの対象とするストライプを選択する（ステップＳ３１）。次に、分割部１６が、ステップＳ３１の処理により選択されたストライプに含まれるチャンクを、部分チャンクに分割する（ステップＳ３２−１）。
【０１３０】
次に、分割部１６は、ステップＳ３２−１の処理により得られた部分チャンクを更に分割するか否かを判定する（ステップＳ３２−２）。分割部１６は、例えばステップＳ３２−１の処理により得られた部分チャンクを、更に分割した場合に得られる部分チャンクのチャンクサイズが閾値（第３閾値）以上の場合、更に分割することを決定する。また例えば、分割部１６は、例えばストライプ情報のデータサイズ又はエントリ数が、閾値以下の場合、ステップＳ３２−１の処理により得られた部分チャンクを更に分割することを決定する。
【０１３１】
部分チャンクを更に分割する場合（ステップＳ３２−２、Ｙｅｓ）、処理はステップＳ３２−１に戻る。
【０１３２】
部分チャンクを更に分割しない場合（ステップＳ３２−２、Ｎｏ）、処理はステップＳ３３に進む。ステップＳ３３〜ステップＳ３７の処理の説明は、実施形態のガーベジコレクションの処理の説明と同じなので省略する。
【０１３３】
図１８は実施形態の変形例２のチャンクの分割例を示す図である。図１８の例では、分割部１６が、チャンク７０を２つの部分チャンク７１−１及び７１−２に分割し、更に、部分チャンク７１−１を２つの部分チャンク７２−１及び７２−２に分割し、部分チャンク７１−２を２つの部分チャンク７２−３及び７２−４に分割する場合を示す。
【０１３４】
実施形態の変形例２の分割部１６は、１つのストライプを実施形態の分割部１６よりも細かく分割する。これにより１つのストライプを、更新頻度が比較的高い記憶領域（有効データの数が閾値以下の部分チャンク）と、更新頻度が比較的低い記憶領域（有効データの数が閾値より大きい部分チャンク）と、に分離することができる。具体的には、記憶制御部１５が、有効データの数が閾値以下の部分チャンクを含むストライプに、ガーベジコレクションを行うことにより、更新頻度が比較的高い第１データを含むストライプを生成することができる。また、結合部１８が、有効データの数が閾値より大きい部分チャンクに、上述の結合処理を実行することにより、更新頻度が比較的低い第１データを含むストライプを生成することができる。
【０１３５】
実施形態の変形例２の記憶制御装置１００によれば、第１データの参照の局所性が更に考慮されるので、記憶部１１−１〜１１−ｎに対する書き込み回数を更に抑えることができる。これにより、記憶部１１−１〜１１−ｎの耐用年数をより長くすることができる。
【０１３６】
上述の実施形態、並びに、変形例１及び２の記憶制御装置１００の機能ブロック（図２参照）は、１以上のプロセッサにより実行されるプログラムにより実現してもよい。プロセッサは、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【０１３７】
実施形態の記憶制御装置１００で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ、及び、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【０１３８】
また実施形態の記憶制御装置１００で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また実施形態の記憶制御装置１００が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【０１３９】
また実施形態の記憶制御装置１００で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１４０】
実施形態の記憶制御装置１００で実行されるプログラムは、実施形態の記憶制御装置１００の機能構成のうち、プログラムにより実現可能な機能を含むモジュール構成となっている。
【０１４１】
プログラムにより実現される機能は、プロセッサ２がＳＳＤ５等の記憶媒体からプログラムを読み出して実行することにより、プログラムにより実現される機能が主記憶装置３にロードされる。すなわちプログラムにより実現される機能は、主記憶装置３上に生成される。
【０１４２】
なお実施形態の記憶制御装置１００の機能の一部を、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等の１以上のハードウェアにより実現してもよい。ＩＣは、例えば専用の処理を実行するプロセッサである。また例えば、ＩＣはＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
【０１４３】
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち１つを実現してもよいし、各機能のうち２以上を実現してもよい。
【０１４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４５】
１  ホストＩ／Ｆ
２  プロセッサ
３  主記憶装置
４  スイッチ
５  ＳＳＤ
１０  バッファ
１１  記憶部
１２  受付部
１３  生成部
１４  選択部
１５  記憶制御部
１６  分割部
１７  決定部
１８  結合部
１００  記憶制御装置
【図１】
2018116526.tif 000003
【図２】
2018116526.tif 000004
【図３】
2018116526.tif 000005
【図４Ａ】
2018116526.tif 000006
【図４Ｂ】
2018116526.tif 000007
【図５】
2018116526.tif 000008
【図６】
2018116526.tif 000009
【図７】
2018116526.tif 000010
【図８】
2018116526.tif 000011
【図９】
2018116526.tif 000012
【図１０】
2018116526.tif 000013
【図１１】
2018116526.tif 000014
【図１２】
2018116526.tif 000015
【図１３】
2018116526.tif 000016
【図１４】
2018116526.tif 000017
【図１５】
2018116526.tif 000018
【図１６】
2018116526.tif 000019
【図１７】
2018116526.tif 000020
【図１８】
2018116526.tif 000021