(57)【要約】【課題】データの書き換え回数を抑制して、耐久性を向上させることが可能なデータ記憶装置、データ記憶方法およびプログラムを提供する。【解決手段】本発明の実施形態としてのデータ記憶装置は、第１記憶デバイスと、所定のサイズ単位で書き込みが可能な第２記憶デバイスと、を備える。前記データ記憶装置は、データの有効期限情報を伴うデータの書き込み要求に応じて、前記データを前記第１記憶デバイスに書き込み、前記第１記憶デバイスに書き込まれたデータに関する前記有効期限情報と前記データの保存箇所とを表すデータ管理情報を管理し、所定の条件が成立したとき、前記有効期限情報間の近接性に基づいて複数の前記データを選択し、選択した複数のデータを前記第１記憶デバイスから読み出して、前記第２記憶デバイスに前記所定のサイズ単位で書き込む処理を実行する。【選択図】図１
2017123110.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶デバイスと、
所定のサイズ単位で書き込みが可能な第２記憶デバイスと、
を備え、
有効期限情報を伴うデータの書き込み指示に応じて、前記データを前記第１記憶デバイスに書き込み、
前記第１記憶デバイスに書き込まれたデータに関する前記有効期限情報と前記データの保存箇所とを表すデータ管理情報を管理し、
所定の条件が成立したとき、前記有効期限情報間の近接性に基づいて複数の前記データを選択し、選択した複数のデータを前記第１記憶デバイスから読み出して、前記第２記憶デバイスに前記所定のサイズ単位で書き込む処理を実行する、データ記憶装置。
【請求項２】
前記有効期限情報が同じまたは近いデータを優先して選択する
請求項１に記載のデータ記憶装置。
【請求項３】
前記所定の条件は、前記第１記憶デバイスに書き込まれた前記データの合計サイズが、前記所定のサイズ単位の整数倍以上になることである
請求項１または２に記載のデータ記憶装置。
【請求項４】
複数の前記データ管理情報を前記第１記憶デバイスで保持する
請求項１ないし３のいずれか一項に記載のデータ記憶装置。
【請求項５】
複数の前記データ管理情報を、有効期限に対する少なくとも１つの閾値によって分類して管理する
請求項１ないし４のいずれか一項に記載のデータ記憶装置。
【請求項６】
前記分類ごとに前記第１記憶デバイスに第１領域を設定し、前記データを、前記データの前記データ管理情報が属する前記分類に対応する前記第１領域に書き込む
請求項５に記載のデータ記憶装置。
【請求項７】
前記有効期限情報が前記閾値の時刻を過ぎた前記分類を検出し前記分類に属する前記データ管理情報を消去する
請求項５または６に記載のデータ記憶装置。
【請求項８】
前記分類ごとに前記第２記憶デバイスに第２領域を設定し、前記データを、前記データの前記データ管理情報が属する前記分類に対応する前記第２領域に書き込む
請求項５ないし７のいずれか一項に記載のデータ記憶装置。
【請求項９】
前記有効期限情報を正規化により所定の時刻単位に合わせ、正規化された有効期限情報で前記データ管理情報を管理する
請求項１ないし８のいずれか一項に記載のデータ記憶装置。
【請求項１０】
前記データの前記有効期限情報と、前記第２記憶デバイスにおける前記所定のサイズ単位の前記領域毎の書き換え回数とに基づいて、前記第２記憶デバイスにおいて前記データの書き込みを行う前記領域を特定する
請求項１ないし９のいずれか一項に記載のデータ記憶装置。
【請求項１１】
前記領域の書き換え回数は、前記領域に含まれる複数の記憶素子の書き換え回数の平均である
請求項１０に記載のデータ記憶装置。
【請求項１２】
前記データの前記有効期限情報と、前記第２記憶デバイスにおける前記所定のサイズ単位の前記領域毎の書き換え回数とに基づいて、前記領域毎の適性値を算出し、前記適性値に基づき、前記第２記憶デバイスにおける前記データの書き込みを行う前記領域を特定する
請求項１ないし１１のいずれか一項に記載のデータ記憶装置。
【請求項１３】
前記分類ごとに前記第１記憶デバイスに第１領域を設定し、前記データを、前記データの前記データ管理情報が属する前記分類に対応する前記第１領域に書き込み、
前記分類ごとに前記第２記憶デバイスに第２領域を設定し、前記データを、前記データの前記データ管理情報が属する前記分類に対応する前記第２領域に書き込み、
前記複数の第２領域の各々における前記所定のサイズ単位の領域毎の書き換え回数に応じて、前記複数の分類と前記複数の第２領域との対応を変更する
請求項５に記載のデータ記憶装置。
【請求項１４】
前記分類ごとに前記第１記憶デバイスに第１領域を設定し、前記データを、前記データの前記データ管理情報が属する前記分類に対応する前記第１領域に書き込み、
前記第２記憶デバイスは、性質の異なる複数の記憶デバイスを有し、
前記複数の記憶デバイスがそれぞれ前記複数の分類に対応し、
前記データを、前記データの前記データ管理情報が属する前記分類に対応する前記記憶デバイスに書き込む、
請求項５のいずれか一項に記載のデータ記憶装置。
【請求項１５】
前記第１記憶デバイスは、揮発性記憶デバイスであり、
前記第２記憶デバイスは、不揮発性記憶デバイスである
請求項１ないし１４のいずれか一項に記載のデータ記憶装置。
【請求項１６】
前記第１記憶デバイスと前記第２記憶デバイスとを制御するストレージ制御部と、
前記有効期限情報を伴うデータの書き込み指示を、バスを介して取得するストレージI/F部とを備え、
前記ストレージ制御部は、前記書き込み指示で指定された前記データを前記第１記憶デバイスに書き込み、
前記第１記憶デバイスに書き込まれたデータに関する前記有効期限情報と前記データの保存箇所とを表すデータ管理情報を管理し、
所定の条件が成立したとき、前記有効期限情報間の近接性に基づいて複数の前記データを選択し、選択した複数のデータを前記第１記憶デバイスから読み出して、前記第２記憶デバイスに前記所定のサイズ単位で書き込む処理を実行する
請求項１ないし１５のいずれか一項に記載のデータ記憶装置。
【請求項１７】
前記第１記憶デバイスを含む第１記憶部と、
前記第２記憶デバイスを含む第２記憶部と、
制御部と、
バスと、を備え、
前記制御部と前記第２記憶部とは前記バスを介して接続され、前記第１記憶部は前記バスを介してまたは前記バスを介さずに前記制御部と接続され、
前記制御部は、前記書き込み指示を前記第１記憶部に対して生成し、前記データを前記第１記憶部に書き込み、前記第１記憶部に書き込まれたデータに関する前記有効期限情報と前記データの保存箇所とを表すデータ管理情報を管理し、所定の条件が成立したとき、前記有効期限情報間の近接性に基づいて複数の前記データを選択し、選択した前記複数のデータを前記第１記憶デバイスから読み出して、前記第２記憶部に前記所定のサイズ単位で書き込む処理を実行する
請求項１ないし１５のいずれか一項に記載のデータ記憶装置。
【請求項１８】
制御部と、
ストレージコントローラと、
バスと、を備え、
前記制御部と前記第２記憶部と前記ストレージコントローラは前記バスに接続され、前記第１記憶部は前記バスを介してまたは前記バスを介さずに前記制御部と接続され、
前記制御部は、前記書き込み指示を生成して前記データを前記第１記憶部に書き込み、
前記ストレージコントローラは、複数の前記書き込み指示を一時的に記憶する内部記憶部を有し、所定の条件が満たされたときに、前記有効期限情報間の近接性に基づいて前記第１記憶部における複数の前記データを選択し、選択した複数のデータを前記第１記憶部から読み出して、前記第２記憶部に前記所定のサイズ単位で書き込む処理を実行する
請求項１ないし１５のいずれか一項に記載のデータ記憶装置。
【請求項１９】
有効期限情報を伴うデータの書き込み指示に応じて、前記データを前記第１記憶デバイスに書き込むステップと、
前記第１記憶デバイスに書き込まれたデータに関する前記有効期限情報と前記データの保存箇所とを表すデータ管理情報を管理するステップと、
所定の条件が成立したとき、前記有効期限情報間の近接性に基づいて複数の前記データを選択し、選択した複数のデータを前記第１記憶デバイスから読み出して、前記第２記憶デバイスに前記所定のサイズ単位で書き込む処理を実行するステップと、
を備えたデータ記憶方法。
【請求項２０】
有効期限情報を伴うデータの書き込み指示に応じて、前記データを前記第１記憶デバイスに書き込むステップと、
前記第１記憶デバイスに書き込まれたデータに関する前記有効期限情報と前記データの保存箇所とを表すデータ管理情報を管理するステップと、
所定の条件が成立したとき、前記有効期限情報間の近接性に基づいて複数の前記データを選択し、選択した複数のデータを前記第１記憶デバイスから読み出して、前記第２記憶デバイスに前記所定のサイズ単位で書き込む処理を実行するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶装置、データ記憶方法およびプログラムに関する。
【背景技術】
【０００２】
ネットワークを介して取得するデータを一時的に保存するキャッシュシステムが広く利用されている。例えばウェブサイトを閲覧する時にそのデータを一時的に保存する技術は、ウェブキャッシュ技術として広く利用されている。一般にウェブサイトを介して提供される情報はデータとともに有効期限を保持している。既存のウェブキャッシュ技術では、その有効期限を用いて、一時的に保存したデータの有効性を管理する仕組みが用いられている。
【０００３】
また、ＰＣＩ  Ｅｘｐｒｅｓｓを用いてＳＳＤを接続する際の規格であるＮＶＭｅにおいては、データを保存する際に、保存するデータの特性を通知する仕組みが実現されている。ここで特性とは「データの読み書き頻度」を表す。この仕組みを用いることで、ＳＳＤをはじめとする記憶装置は、保存するデータの特性（読み出しが多い、書き込みが多い、読み書き共に多い、読み書き共に少ない、等）に基づいた処理を実行できる。ただし、処理の内容は規定されておらず、実装依存である。
【０００４】
アプリケーションが希望するデータ保持期間（Ｄａｔａ  Ｒｅｔｅｎｔｉｏｎ  Ｔｉｍｅ）に関する情報を記憶装置が受信し、それによってデータを保持するセルから値を読み出す際の電荷の閾値（セルがマルチレベル対応の場合）やデータ符号化の方法を変更する記憶装置が開示されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】NVM Express Revision 1.1
【非特許文献２】“Application-Aware Solid-State Drives (SSDs) with Adaptive Coding”, S. Tanakamaru, et al., in VLSI Circuits Digest of Technical Papers, 2014 Symposium on
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上のように、ネットワーク上の情報に対する有効期限を管理する技術と、記憶装置においてデータの保持期限に応じて処理を変化させる技術が開示されているが、ネットワーク上の情報が持つ有効期限を活用する記憶装置は実現されていない。その結果、ネットワークのデータを一時的に保存して配布するキャッシュ技術において、記憶装置の動作特性（データの読み出し速度、書き込み速度、情報保存セルの耐久性など）を考慮したデータの一時保存が実現できておらず、記憶装置の利点が損なわれている。
【０００７】
より具体的には、記憶装置において、異なる有効期限を持つデータが、効率的な読み書きができる単位の中に混在する状況が発生している。このため、当該単位の中に有効期限が長いデータと短いデータとが混在する場合に、有効期限が短いデータを記憶装置から削除して別のデータを格納しようとすると、有効期限が長いデータを別の領域に退避させるなどのオーバヘッドが生じる。特に、記憶素子の書き換え回数に上限がある場合、このようなオーバヘッドは記憶素子の書き換え回数を必要以上に増加させ、記憶装置としての耐用期間が短くなってしまう。
【０００８】
本発明の実施形態は、データの書き換え回数を抑制して、耐久性を向上させることが可能なデータ記憶装置、データ記憶方法およびプログラムを提供する。
【課題を解決するための手段】
【０００９】
本発明の実施形態としてのデータ記憶装置は、第１記憶デバイスと、所定のサイズ単位で書き込みが可能な第２記憶デバイスと、を備える。前記データ記憶装置は、有効期限情報を伴うデータの書き込み指示に応じて、前記データを前記第１記憶デバイスに書き込み、前記第１記憶デバイスに書き込まれたデータに関する前記有効期限情報と前記データの保存箇所とを表すデータ管理情報を管理し、所定の条件が成立したとき、前記有効期限情報間の近接性に基づいて複数の前記データを選択し、選択した複数のデータを前記第１記憶デバイスから読み出して、前記第２記憶デバイスに前記所定のサイズ単位で書き込む処理を実行する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係るデータ記憶装置としてのキャッシュ装置のブロック図。
【図２】図１のキャッシュ装置を備えるネットワークシステムの模式図。
【図３】キャッシュデータ管理情報の管理を実現する第１の方法の例を示す図。
【図４】キャッシュデータ管理情報の管理を実現する第２の方法の例を示す図。
【図５】テーブルを複数に分割する例を示す図。
【図６】図３の方法に対して、正規化された有効期限を適用する例を示す図。
【図７】図４の方法に対して、正規化された有効期限を適用する例を示す図。
【図８】リングバッファでデータ保存を実現する例を示す図。
【図９】リングバッファの更新例を示す図。
【図１０】保存する領域を２つの領域に分割して管理する例を示す図。
【図１１】デバイス管理情報を１つの領域で管理する例を示す図。
【図１２】複数の領域に分割して管理する例を示す図。
【図１３】適性値を算出する関数の例を示す図。
【図１４】第１の実施形態の不揮発性記憶部の全体動作のフローチャートを示す図。
【図１５】図１４のステップＳ１０５で読み出し指示を受信した場合の動作フローの一例を示す図。
【図１６】図１４のステップＳ１０４で書き込み指示を受信した場合の動作フローの一例を示す図。
【図１７】正規化処理の動作フローの一例を示す図。
【図１８】揮発性記憶デバイスにデータを保存する際の保存箇所を決定する処理の動作フローの一例を示す。
【図１９】図１６のステップＳ３０５の動作の一例を示すフローチャートを示す図。
【図２０】不揮発性記憶デバイスへの書き出し処理の動作フローの一例を示す図。
【図２１】第１の実施形態に係るシーケンス図。
【図２２】図２１に続くシーケンス図。
【図２３】第２の実施形態に係るシーケンス図。
【図２４】図２３に続くシーケンス図。
【図２５】図２３のシーケンスの変形例を示す図。
【図２６】第３の実施形態に係るデータ記憶装置としてのキャッシュ装置のブロック図。
【図２７】第３の実施形態に係るシーケンス図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、本発明を実施するための形態を説明する。本発明の実施形態は、ネットワーク上に有効期限を伴って保存されているデータを再配布用に一時的にキャッシュ装置に保存しておき、キャッシュ装置では有効期限間の近接性を活用した保存処理を実行することを特徴の１つとする。より具体的には、複数のデータに対して有効期限が近いデータ同士をまとめて保存する。有効期限が近いデータ同士をまとめて保存するようになり、保存に伴うオーバヘッドが削減できる。さらに、有効期限が切れたデータを記憶装置から削除したり、管理したりする際のオーバヘッドが削減できる。その結果、記憶素子（セル）の書き換え回数を抑制でき、記憶装置の耐久性も向上させることができる。
【００１２】
（第１の実施形態）
図１は本発明の実施形態に係るデータ記憶装置としてのキャッシュ装置のブロック図である。この図では本発明の動作に大きく関与しない部分は省略しているため、キャッシュ装置に必要な全て構成要素が記載されているわけではない。
【００１３】
図１のキャッシュ装置は、制御部１０１と、揮発性記憶部１０２と、通信Ｉ／Ｆ部１０３と、バス１０４と、不揮発性記憶部１０５とを備える。これらの要素は、ＰＣＩ  Ｅｘｐｒｅｓｓやメモリバスなどのバス１０４を介して、適切に接続されている。揮発性記憶部１０２は、制御部１０１にバス１０４を介さずに、直接接続されているが、バス１０４を介して接続されてもよい。
【００１４】
通信Ｉ／Ｆ部１０３は、ネットワークに接続するための通信インターフェースである。例えば通信Ｉ／Ｆ部１０３は、ネットワークを介して他の装置と所定の通信プロトコルに従って通信することで、情報を送受信する。ネットワークは有線ネットワークでも、無線のネットワークでもかまわない。所定の通信プロトコルも、ＩＥＥＥ８０２．１１規格などの無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）規格、ブルートゥース（登録商標）、など何でもかまわない。
【００１５】
制御部１０１は、キャッシュ装置全体の動作を司る。制御部１０１は、ネットワークから取得した情報または情報に含まれるデータを一時的に揮発性記憶部１０２または不揮発性記憶部１０５に記憶して、データの新たな取得要求をネットワークから受信した時に、要求されたデータを再送信するキャッシュとして機能する。この機能を実現するプログラム等がプロセッサで動作することで、制御部１０１の機能が実現される。制御部１０１は、一例として、当該プログラムを実行するプロセッサまたはコンピュータとして実現される。制御部１０１は、複数のプロセッサにより構成されてもよい。
【００１６】
揮発性記憶部１０２は、制御部１０１の動作を規定するプログラムや、このプログラムの動作で用いられる情報を記憶する揮発性記憶デバイス１０２ａを含む。また揮発性記憶デバイス１０２ａは、このプログラムが動作することにより一時的に生成される情報を記憶してもよい。揮発性記憶部１０２の代わりに、不揮発性デバイスを含む不揮発性記憶部を用いてもよい。
【００１７】
不揮発性記憶部１０５は、揮発性記憶部１０２より多くの情報を、長い時間にわたり記憶できる記憶部である。
【００１８】
不揮発性記憶部１０５は、ストレージＩ／Ｆ部１０６と、ストレージ制御部１０７、揮発性記憶デバイス１０８と、不揮発性記憶デバイス１０９とを備える。
【００１９】
ストレージＩ／Ｆ部１０６は、バス１０４と接続するためのインターフェースである。
【００２０】
ストレージ制御部１０７は、不揮発性記憶部１０５の動作を司る。
【００２１】
不揮発性記憶デバイス１０９は、ＮＡＮＤフラッシュメモリ、ＭＲＡＭまたはＦＲＡＭ（登録商標）などの記憶デバイスである。
【００２２】
揮発性記憶デバイス１０８は、ＤＲＡＭまたはＳＲＡＭなどの記憶デバイスである。
【００２３】
揮発性記憶デバイス１０８は、不揮発性記憶デバイス１０９よりも少ない量の情報を保存できて、ランダムアクセス性に優れるデバイスであると仮定する。また、不揮発性記憶デバイス１０９は、情報の保持に電力は不要であるが、書き換えの回数に制限（上限）があるデバイスであると仮定する。
【００２４】
以降では、揮発性記憶デバイス１０８としてＤＲＡＭを、不揮発性記憶デバイス１０９としてＮＡＮＤフラッシュを用いる場合を例に説明する。
【００２５】
図２は、図１のキャッシュ装置を備えるネットワークシステムの模式図である。データの取得を要求する端末装置と、要求されたデータを提供するサーバ装置とが、ネットワークを介して接続されている。さらにキャッシュ装置も、端末装置からアクセス可能な状態で、ネットワークに接続されている。図２ではサーバ装置とキャッシュ装置とが、同じネットワークに接続されているように記載されているが、実際にはこれらの装置が接続されるネットワークは異なっていてもかまわない。端末装置がデータのキャッシュの効果を享受するためには、キャッシュ装置はサーバ装置よりも端末装置に近い場所に接続されていることが望ましいが、その限りではない。キャッシュ装置は、アクセスポイントのような中継装置に設けられてもよい。
【００２６】
端末装置がデータの取得要求を送信すると、適切な手段（例えば、通信パケットを横取りすることによって受信してもよいし、ＤＮＳなどの仕組みを利用してキャッシュ装置に向けて通信要求が送信されるようにしてもよい）によって、キャッシュ装置がその取得要求を受信する。キャッシュ装置では、読み出し指示を生成して、読み出しを試み、取得要求で要求されたデータが、揮発性記憶部１０２もしくは不揮発性記憶部１０５のいずれかに格納されており、かつそれが有効であれば、そのデータを使って応答を送信する。そのデータがいずれにも格納されていなければ、キャッシュ装置は、サーバ装置から当該データを取得して、当該データの書き込み指示を生成し、当該データを揮発性記憶部１０２もしくは不揮発性記憶部１０５に保存するとともに、当該データを端末装置に送信する。キャッシュ装置に記憶されているデータは、一例として過去に端末装置または別の端末装置から要求されたことのあるデータであるが、一度も要求されたことのないデータをキャッシュ装置が自発的にサーバ装置から取得して記憶してもかまわない。
【００２７】
なお、端末装置から送信されるデータ取得要求、キャッシュ装置から送信されるデータ等は、実際には、使用する通信プロトコルに応じたパケットによって送信される。つまり、当該情報がペイロード部に設定され、当該ペイロード部にヘッダ等が付加されることで、パケットとされ、当該パケットが送信される。使用する通信プロトコルに応じて、伝送単位の呼び方は様々であり、パケットでなく、フレームと呼んでもかまわない。また、これらに限定されるものでもない。
【００２８】
サーバ装置が提供するデータには、何らかの手段によって有効期限が付与されている。例えば、ＨＴＴＰヘッダのＥｘｐｉｒｅｓヘッダなどで、有効期限が設定されている。キャッシュ装置は、この有効期限を用いて、一時保存したデータの有効性（有効期限を過ぎているか）を判断しながら、端末装置への応答を行う。保存したデータの有効性の確認は、端末装置への応答の際に、当該データを読み出すタイミングで行っても良いし、定期的に保存したデータの有効期限を確認する処理を実行しても良い。また、次に切れる有効期限とそれに対応するデータとを関連づけて記憶しておき、有効期限の到来の確認の際に、関連づけられたデータをまとめて無効にする処理を行っても良い。
【００２９】
なお、関連技術に係る記憶装置では、有効期限が切れたことにより無効と判定されたデータを積極的に削除する処理は行われていなかった。積極的な削除処理を繰り返すと、データが書き込まれた順番とは関係なく、記憶デバイス上にまだらに未使用領域が発生し、その利用効率が低下することが懸念されるためである。また、ＮＡＮＤフラッシュのようにブロック単位でしか削除処理が実行できない場合、同一ブロックに含まれる他の有効なデータを残す場合には、当該有効なデータを別のブロックに退避する必要がある。その結果、動作の効率が低下し、また、データを保持する記憶素子の書き換え回数も増加してしまう。
【００３０】
そこで本実施形態は、不揮発性記憶デバイス１０９への書き込みを有効期限に基づいて効果的に制御することで、このような問題を防止することを特徴の１つとする。
【００３１】
不揮発性記憶部１０５のストレージＩ／Ｆ部１０６は、制御部１０１から有効期限を伴うデータの書き込み指示を受け、その指示をストレージ制御部１０７に通知する。制御部１０１では、サーバ装置から取得した有効期限を伴うデータが受信されると書き込み要求が生じ、それに応じて書き込み指示を生成する。この書き込み指示は、（識別子、有効期限、データ）の組を含む。有効期限の情報は、前述の通りネットワークを介して受信した情報に付随するメタ情報（上記例ではＨＴＴＰヘッダ内のＥｘｐｉｒｅｓヘッダ）から、制御部１０１の処理によって生成される。
【００３２】
なお、ネットワークを介して受信したメタ情報において、期限を表現する方法はさまざまである。例えば、特定の日時を直接指定している場合や、現在時刻からの経過時間を指定している場合もある。本明細書の説明では、日時を直接指定する方式で期限を表現する場合を扱うものとするが、両者の変換は難しい作業ではなく、いずれの方法でも実現可能である。
【００３３】
また、書き込み指示は、前記の（識別子、有効期限、データ）に加え、データ長など他の種類の情報を含んでいても良い。ただし、ここでは、そのような他の種類の情報を含まない場合を例として説明する。
【００３４】
また、（識別子、有効期限、データ）における“データ”は、データそのものでもよいし、データを保存しているメモリ（例えば、揮発性記憶部１０２や各部に内蔵されるＳＲＡＭなど）のアドレスでもよい。
【００３５】
この書き込み指示を受信したストレージ制御部１０７は、揮発性記憶デバイス１０８に、書き込み指示で指定されたデータを保存する。揮発性記憶デバイス１０８の記憶領域を、一時書き込み領域と呼ぶことがある。
【００３６】
また、ストレージ制御部１０７は、書き込み指示に基づき、管理エントリ（識別子、有効期限、データを保存したアドレス）を作成し、これを揮発性記憶デバイス１０８に登録する。登録された管理エントリを、キャッシュデータ管理情報（あるいは単にデータ管理情報）と呼ぶことがある。データのサイズは、データを保存したアドレスから算出可能であるが、キャッシュデータ管理情報にデータのサイズを別途、追加してもよい。
【００３７】
ここで管理エントリ（キャッシュデータ管理情報）における『識別子』は、書き込み指示に含まれる識別子と同じでもよいし、新たに別の識別子を割り当てて、これをキャッシュデータ管理情報における識別子としても良い。この際、『識別子』は、データを直接特定できる名前であってもよいし、名前等から導出された固定長のビット列であっても良い。また、キャッシュ装置の制御部１０１で管理するファイルシステム上での位置を特定するビット列（例えば、ｉ−ｎｏｄｅ番号のようなもの）、もしくは、不揮発性記憶部１０５上の位置を表す固有のビット列（例えば、ヘッド番号・トラック番号・セクタ番号の組み合わせのようなもの）であってもよい。なお、キャッシュデータ管理情報、ならびに揮発性記憶デバイス１０８におけるデータ保持方法については後述する。
【００３８】
また、後述するように、揮発性記憶デバイス１０８には、不揮発性記憶デバイス１０９の管理情報（以下、デバイス管理情報）も記憶されている。ストレージ制御部１０７がこの登録および更新を行う。デバイス管理情報は、不揮発性記憶デバイス１０９の書き込み単位となる単位領域に対応する書き換え回数、単位領域に保存されている１つ以上のデータの有効性を示すフラグ等を保持している。例えば、不揮発性記憶デバイス１０９がブロック単位で書き込みが行われる場合、各ブロック（単位領域）に対応する書き換え回数、および各ブロックに保存されている１つ以上のデータの有効性を示すフラグを保持している。詳細は後述する。
【００３９】
なお、本実施形態では不揮発性記憶部１０５が揮発性記憶デバイス１０８を具備しているが、制御部１０１から受信した書き込み指示で指定されたデータまたはキャッシュデータ管理情報またはこれらの両方を保存するためのバッファを具備していれば、揮発性記憶デバイス１０８は必須ではない。例えば、不揮発性記憶部１０５から揮発性記憶デバイス１０８を除去して、不揮発性記憶デバイス１０９のみとしてもよい。その際、データを保存する大容量の不揮発性記憶デバイス１０９とは異なる性質のデバイスを、キャッシュデータ管理情報用に組み合わせて用いても良い（例えば、ＳＬＣ  ＮＡＮＤフラッシュやＭＲＡＭなど）。または、揮発性記憶デバイス１０８はキャッシュデータ管理情報のみを保存する比較的小規模なものとし、実データの保存には不揮発性記憶デバイス１０９を複数種類用いる等の方法でもよい。
【００４０】
ストレージ制御部１０７は、所定の条件が成立すると、揮発性記憶デバイス１０８上の一時書き込み領域にあるデータを、有効期限の近接性を利用して選択（同じまたは近い有効期限のものを選択）し、不揮発性記憶デバイス１０９に効率的にアクセスできるサイズ単位で、不揮発性記憶デバイス１０９の領域へと移動する。
【００４１】
一例として、任意の方法で１つのデータを選択し、そのデータから近い順に追加的にデータを選択して、合計サイズが当該サイズ単位の整数倍になるようにしてもよい。パディングデータを追加して、合計サイズの調整を行ってもよい。同じ有効期限のものが多数あれば、その有効期限のデータから優先的に選択してもよい。不揮発性記憶デバイス１０９へどれだけの量のデータを移動させるかは、任意の方法で決定すればよい。
【００４２】
なお、揮発性記憶デバイス１０８上のデータを複数に分類ごとに分けて管理している場合に、同じ分類の中から優先的に選択するようにしてもよい。また、揮発性記憶デバイス１０８におけるデータを分類毎の領域に保存している場合、分類ごとに所定の条件の成否を判断することも可能である。分類については後述する。
【００４３】
ここで、上記の所定の条件は、例えば以下のものがある。
【００４４】
（第１の条件）揮発性記憶デバイス１０８の使用率が所定の割合に達した時（所定の割合に達していなくても、新しい情報またはデータを追加できない場合を含む）。揮発性記憶デバイス１０８の領域を分類に応じて分割しているときは、分類ごとにこの判断を行ってもよい。
【００４５】
（第２の条件）揮発性記憶デバイス１０８に保存されているデータのサイズの合計が、効率的に不揮発性記憶デバイス１０９へ書き込み処理ができるサイズの整数倍以上になった時。なお、効率的に書き込み処理できるサイズの整数倍の値からオフセット値だけ小さい値以上かつ当該整数倍の値以下の範囲に入ったときでもよい。オフセット値は、例えば効率的に書き込み処理できるサイズより小さい値である。
【００４６】
（第３の条件）揮発性記憶デバイス１０８にデータ保存されてから、所定の時間が経過した時（所定の時間が経過したデータのみを移動の対象としてもよいし、当該所定の時間が経過したデータに加えて、効率的な書き込み処理ができるサイズの整数倍に近づけるまたは一致させるため、その他のデータを対象としてもよい）。
【００４７】
いずれかの所定の条件が成立すると、揮発性記憶デバイス１０８に保存されている不揮発性記憶デバイス１０９のデバイス管理情報（詳細は後述）を参照し、不揮発性記憶デバイス１０９上でデータが保存できる領域を特定する。ここでは揮発性記憶デバイス１０８にデバイス管理情報が保存されているとしたが、デバイス管理情報も不揮発性記憶デバイス１０９に保存されていても良い。また、揮発性記憶デバイス１０８と不揮発性記憶デバイス１０９との間で適切にデバイス管理情報を同期する仕組みが備わっていても良い。いずれにせよ、不揮発性記憶デバイス１０９に関する情報は任意の場所で実現してよい。
【００４８】
保存先となる不揮発性記憶デバイス１０９の領域が決定されると、当該領域に揮発性記憶デバイス１０８からデータを移動する（書き込む）処理を行う。データが不揮発性記憶デバイス１０９に保存されると、揮発性記憶デバイス１０８上のデータは削除され、キャッシュデータ管理情報は、当該データの保存先として、不揮発性記憶デバイス１０９上の保存箇所を指すように適切に更新される。キャッシュデータ管理情報の更新により当該情報から揮発性記憶デバイス１０８上のデータが見えなくなれば、揮発性記憶デバイス１０８上のデータの削除を行わないことも可能である（当該データの領域を空き領域とみなして、後に別のデータで上書きする）。
【００４９】
（読み出し処理の動作フロー）
不揮発性記憶部１０５の読み出し処理は、制御部１０１が読み出し指示を生成し、ストレージＩ／Ｆ部１０６を介してストレージ制御部１０７が読み出し指示を受信することで開始される。読み出し指示には、読み出すべきデータの識別子、および読み出し先となるバッファの情報を含む。なお、このバッファはキャッシュ装置の揮発性記憶部１０２に確保されているとする。
【００５０】
ストレージ制御部１０７は、揮発性記憶デバイス１０８のキャッシュデータ管理情報を参照し、読み出すべきデータが揮発性記憶デバイス１０８に保存されているかどうかを確認する。一例として、該当する識別子が存在し、有効期限内であれば、当該データが存在すると判断することができる。なお、有効期限が過ぎている場合、そのデータは存在しないと判断すればよい。読み出すべきデータが揮発性記憶デバイス１０８に保存されている場合には、揮発性記憶デバイス１０８から当該データを読み出してストレージＩ／Ｆ部１０６を介して、揮発性記憶部１０２に確保された上記バッファへと転送する。当該データが揮発性記憶デバイス１０８でなく、不揮発性記憶デバイス１０９に保存されている場合にも同様の処理を行って、揮発性記憶部１０２に確保された上記バッファに転送する。
【００５１】
（キャッシュデータ管理情報の説明）
前述の通り、不揮発性記憶部１０５（揮発性記憶デバイス１０８、不揮発性記憶デバイス１０９）に保存されているデータの保存箇所等は、キャッシュデータ管理情報により管理されている。キャッシュデータ管理情報の管理を実現する方法は複数存在する。ここではそれらについて述べる。
【００５２】
図３（Ａ）は、キャッシュデータ管理情報の管理を実現する第１の方法の例を示す。これは、有効期限の昇順もしくは降順にソートされた１つのテーブルとして、キャッシュデータ管理情報を管理する方法である。この場合、データの書き込み指示が発生すると、当該データの有効期限を確認して、テーブルにおける適切な位置にエントリが追加される。なお、識別子を用いたデータの読み書きを高速に行うため、識別子とテーブルのエントリ番号とを対応付ける仕組み（ハッシュ表など）を備えていても良い。識別子のハッシュ値と、テーブルのエントリ番号とを対応づけて管理する例を図３（Ｂ）に示す。ＨＡＳＨ（ＩＤ１）は、ＩＤ１のハッシュ値を表す。ハッシュ値の昇順もしくは降順にテーブルの各行がソートされている。
【００５３】
図４は、キャッシュデータ管理情報の管理を実現する第２の方法の例を示す。これは、有効期限を少なくとも１つの閾値で分類し、分類ごとにテーブルを管理する方法である。テーブル毎（すなわち分類毎）に、データの有効期限とは別にテーブル（分類）の有効期限が対応づけられている。データの有効期限と上記閾値とを比較することで、データがどの分類（テーブル）に属するかを判断できる。データの書き込み指示が発生すると、当該データの有効期限と閾値とを比較して当該データが属する分類を特定し、該当する分類に対応するテーブルにエントリが追加される。なお、キャッシュ装置内に時刻を管理する時計が設けられていてもよいし、ネットワークを介してまたは外部インターフェース等を介して時刻の情報を逐次取得してもよい。
【００５４】
また、有効期限を迎えたテーブルは、そのテーブルで管理されている情報と共に逐次削除され、残されたテーブルから新たな有効期限を持ったテーブルを生成する。図５に、有効期限（２０１５／０１／０３  ０９：００）を迎えたテーブルを削除し、有効期限が２０１５／０１／０３  ０９：００より後のテーブルを複数に分割する例を示す。この時、有効期限の昇順にテーブルが構成されていれば、単純なテーブルの分割操作で、複数の新しいテーブルを生成できる。なお、分割により生成される各テーブルは、後述するように、不揮発性記憶デバイス１０９のデバイス管理情報と関連するように構成することが望ましい。なお、削除したテーブルに登録されているエントリ（有効期限を過ぎたエントリが想定される）が示すデータを揮発性記憶デバイス１０８から削除する処理を必要に応じて行うことも可能である。
【００５５】
また、有効期限を、所定の時刻単位に合わせるように正規化することもできる。図６は、第１の方法（図３参照）に対して、正規化された有効期限を適用する場合の方法（第３の方法）の例を示す。図３で示した例に対して、１時間を単位として正規化を行っている。正規化の際には、有効期限が切れた後で応答しないようにするため、超過分（ここでは４５分）は切り捨てている。その結果、エントリの有効期限は  “２０１５／０１／０２  ０９：４５”として指定されているが、“２０１５／０１／０２  ０９：００”に丸められて、追加されている。なお、この有効期限の正規化処理はストレージ制御部１０７にて行い、書き込み指示を行った制御部１０１は正規化処理に関与しない。
【００５６】
図７は、第２の方法（図４参照）に対して、正規化された有効期限を適用する場合の方法（第４の方法）の例を示す。図４で示した例に対して３０分を単位として正規化を行っている。エントリの有効期限は“２０１５／０１／０２  ０９：４５”として指定されているが、正規化により“２０１５／０１／０２  ０９：３０”に丸められて、有効期限（２０１５／０１／０３  ０９：００）の上側のテーブルに追加されている。
【００５７】
なお、図７の例では、正規化前の有効期限を個々のエントリに持たせて厳密に管理している。図６の例では、個々のエントリでは正規化前の有効期限を保持せずに、正規化した有効期限だけで管理している。正規化前の有効期限を管理するか否かは任意でもよい。ここで正規化粒度やその時刻単位については、使用する不揮発性記憶デバイス１０９の特性や構成に合わせて選択すればよい。例えば、不揮発性記憶デバイス１０９が３つの領域に分かれている場合には、３つの値（有効期限）のいずれかに正規化されるようにするなどである。
【００５８】
（揮発性記憶デバイス１０８におけるデータ保存方法）
不揮発性記憶部１０５に対して書き込み指示されたデータは、まずは揮発性記憶デバイス１０８にて一時的に保存（一時的に保存することを、キャッシュすると呼ぶ場合もある）される。前述のキャッシュデータ管理情報の管理方法（図３〜図７参照）と同様に、揮発性記憶デバイス１０８におけるデータ保存方法にも複数の実現方法がある。
【００５９】
データ保存の第一の方法は、特別な構造を持たずに、データを保存する方法である。例えば、揮発性記憶デバイス１０８上にリングバッファを構成することで、保存と読み出しとが実現できるようにすればよい。その際、有効期限に応じて不揮発性記憶デバイス１０９にデータの移動を行うことから、揮発性記憶デバイス１０８に格納されたデータが先頭から順番に不揮発性記憶デバイス１０９に移動されるとは限らない。よって、リングバッファ上のデータが移動されたかどうかを管理する仕組み（データ移動フラグ）を設ける。図８に、リングバッファでデータ保存を実現する例を示す。この例では、６つのデータが揮発性記憶デバイス１０８のバッファ上に格納されている。各データの先頭には、データ移動フラグが保持されている。不揮発性記憶デバイス１０９にデータが移動される際に、当該データの先頭のデータ移動フラグを変更することで、当該データが移動済みであることが分かるようにする。
【００６０】
リングバッファを用いた更なる例として、初期状態として図９の上側に示す状態を仮定したとする。先に述べた揮発性記憶デバイス１０８から不揮発性記憶デバイス１０９へとデータを移動させる３つの条件のうち、一定時間が経過したデータを移動させるという条件（前述した第３の条件）が成立したと仮定する。ここではＮｏ．１とＮｏ．２のエントリ（ＩＤ１とＩＤ３）に対して条件が成立し、Ｎｏ．３のエントリ（ＩＤ２）に対しては成立しなかったとする。ストレージ制御部１０７は、ＩＤ１とＩＤ３のデータをまとめ、必要であれば不揮発性記憶デバイス１０９に効率的に書き込めるサイズになるようパディングを行い、不揮発性記憶デバイス１０９へ書き込む処理を行う。書き込み後のデータはそれぞれ、ＡＤＤＲ１（ＮＯＮＶ）とＡＤＤＲ２（ＮＯＮＶ）で特定できるとする。一連の処理が実行された結果、キャッシュデータ管理情報は、図９の下に示すように更新され、エントリ（ＩＤ１とＩＤ３）が示すデータは、不揮発性記憶デバイス１０９に保存され、エントリＩＤ２が示すデータは揮発性記憶デバイス１０８に残ったままである。なお、この例では、データ移動フラグを使用していない。なお、一定時間が経過したデータを移動させる場合は、有効期限が同じまたは近いものが、移動先で同じブロックまたは近いブロックになるように移動を行うようにしてもよい。
【００６１】
揮発性記憶デバイス１０８からデータを移動させる際に、仮にデータを飛び飛びに移動させる場合には、揮発性記憶デバイス１０８において使用中領域に挟まれる形で空き領域となった領域にフラグを設定する。これにより、使用中領域に挟まれるその領域は、未使用であることを示す。この場合、リングバッファのデータ開始点は、飛び飛びに利用されているバッファの状況を考慮しながら、適切に設定する。
【００６２】
データ保存の第二の方法は、有効期限に基づいて、揮発性記憶デバイス１０８におけるデータ保存用の領域を分割する方法である。その際、前述のキャッシュデータ管理情報の説明で述べた第２〜第４の方法での閾値もしくは正規化粒度に基づいて、領域を分割することが好ましい。
【００６３】
図１０は、揮発性記憶デバイス１０８における一時書き込み領域（データ保存用領域）を２つの領域に分割して管理する例を示す。キャッシュデータ管理情報も、図７のように２つに分割されていることを仮定している。図１０の例では、有効期限の閾値で区分される２つの領域を、それぞれ異なるリンクリストで構成することで、分割を実現している。なお、図８に示すようなリングバッファ形式を２つ用いることで、複数の分割された領域（バッファ）を実現してもよい。または、オフセットを変えてバッファを確保することにより、複数の分割された領域（バッファ）を実現してもよい。さらに、揮発性記憶デバイス１０８を複数設けて、それぞれを異なるバッファとして機能させてもよい。
【００６４】
なお、データ保存の第一の方法と第二の方法のいずれであっても、揮発性記憶デバイス１０８に保存できるデータの量は、不揮発性記憶デバイス１０９で効率的に書き込みができる単位（ＮＡＮＤフラッシュであればブロック単位）の整数倍であることが好ましい。
【００６５】
（デバイス管理情報の説明）
不揮発性記憶部１０５に含まれるストレージ制御部１０７は、不揮発性記憶デバイス１０９の状態を管理している。ストレージ制御部１０７は、デバイス管理情報を用いて不揮発性記憶デバイス１０９の状態を管理する。デバイス管理情報は、例えば、不揮発性記憶デバイス１０９がブロック単位で書き込みが行われる場合、各ブロックに対応する書き換え回数、および保存されている情報の有効性を示すフラグを保持している。有効性を示すフラグは、データを書き込んだ段階で有効となる。有効期限が切れたとき、または、制御部１０１からＴｒｉｍコマンドを受信したときに、無効となる。なお、デバイス管理情報として、追加的に他の情報を保持していても良いが、本実施形態の本質には関係ないため省略する。
【００６６】
デバイス管理情報は、例えば、揮発性記憶デバイス１０８内に保存されている。その際、キャッシュデータ管理情報の説明で述べたのと同様に、デバイス管理情報の全体をひとつで管理（１つの領域で管理）しても良いし、有効期限に応じて複数に分割して管理（複数に分割した情報を個別の領域で管理）しても良い。例えば、有効期限が第１時刻までのデータを管理する情報と、第２時刻より後のデータを管理する情報に分けてもよい。デバイス管理情報を１つの領域で管理する例を図１１に示す。また、デバイス管理情報を複数の領域で管理する例を図１２に示す。不揮発性記憶デバイス１０９における個々のブロックは、所定のサイズの複数のページから構成され、ブロックの単位で消去および書き込みが可能である。ページはページ番号で識別される（図１１、図１２参照）。なお、ブロックにページを追加する場合は、いったんブロックの書き込み済みのページを退避して、ブロックに含まれる全情報を消去した上、退避したページと、追加するページとを当該ブロックに書き込む必要がある。
【００６７】
また、図１１または図１２において、デバイス管理情報で管理されている各エントリは、例えば、単位記憶領域の順番（ブロックの番号の順番）に並んでいても良いし、書き換え回数の昇順（または降順）に並んでいても良いし、そのほか任意の並び順で良い。また、書き込み可能な領域（有効なデータが保存されていない領域）と、書き込み不可能な領域（有効なデータが保存されている領域）とを分けて管理しても良いし、一緒に管理しても良い。
【００６８】
（デバイス管理情報を参照した保存先の特定）
ストレージ制御部１０７が不揮発性記憶デバイス１０９におけるデータの保存箇所を決定する際には、デバイス管理情報に含まれる各ブロックの書き換え回数と、書き込み指示に含まれるデータサイズおよび有効期限とを参照する。すなわち、ストレージ制御部１０７は書き込み指示を受信した際に、（データのサイズ、有効期限、候補となるブロックの書き換え回数）の３つの値をパラメータとして、データの保存箇所（ブロック）を決定する。
【００６９】
一例として、（データのサイズ、有効期限、候補となるブロックの書き換え回数）の３つのパラメータから、書き込み候補となる各ブロックの適性値を出力する関数を計算し、適正値に基づいて、ブロックを決定する。ここでデータのサイズは、対象とするブロック（このブロックは複数のブロックをまとめたブロック群であっても良い）が、書き込み指示されたデータを保存できるサイズを有するかの判定に利用される。残りの２つのパラメータ（有効期限、書き換え回数）で、書き込み候補となるブロックの適性値を判断する。なお、書き換え回数を用いることは必須では無く、書き換え回数を考慮しないで、書き込むブロックを決定する構成も可能である。
【００７０】
例えば、キャッシュデータ管理情報の分割に従って、不揮発性記憶デバイス１０９の領域も分割する方法である。すなわち、有効期限が閾値に対して大きいか小さいか（閾値によって区画された分類（有効期限範囲）のどれに属するかで）で、不揮発性記憶デバイス１０９上で保存する場所を特定する。この場合、不揮発性記憶デバイス１０９の各ブロックの書き換え回数は考慮しなくてもよい。データの書き込み場所を決定する処理とは独立に、ブロック毎の書き換え回数を平滑化する処理（ウェアレベリング）を行う必要がある。ブロックの書き換え回数は、当該ブロックに含まれる複数の記憶素子の書き換え回数の平均値を用いることができる。ウェアレベリングは、分割された領域ごとに行ってもよいし、複数の当該領域にまたがって行ってもよい。複数の領域にまたがって行う場合、上記有効期限範囲と領域との対応関係が、ウェアレベリングで変更されることになる。
【００７１】
また、ブロックごと、もしくは複数のブロックをまとめたブロック群ごとの適性値という概念を導入し、より柔軟に書き込み場所を決定することも可能である。書き込み指示で指定された有効期限で書き込み対象のブロックの候補を特定し、その中から選択したブロックで書き換えを行うことを繰り返すと、事前に定めた閾値（例えば、不揮発性記憶デバイス１０９の設計時に想定した書き換え間隔）よりも書き換えの間隔が短くなるブロックが発生する場合は、書き換え回数が少ないブロックの方が、書き換え回数の多いブロックよりも適性値は高くなるようにすることが望ましい。逆に、閾値よりも書き換え間隔が長くなるブロックの場合、書き換え回数が多いブロックを書き込み対象にしても不適切とは言えない。デバイス全体での寿命を考慮して、有効期限との関係から、書き換え回数が少ないブロックよりも、書き換え回数が多いブロックの適性値を高くすることもできる。このような基準でブロック（またはブロック群）の適性値を算出することで、全体として書き換え頻度を少なく抑え、データ保存領域の劣化を遅らせる効果が期待でき、不揮発性記憶デバイス１０９全体としての稼働時間を高める効果が期待できる。このような関数のイメージを図１３に示す。なお、図１３では連続関数で記載されているが、実際には離散的な値を出力する関数で良い。
【００７２】
なお、適性値の算出は、データの書き込み指示を受けるたびに行ってもよいし、一定時間間隔で計算してデバイス管理情報に登録しておくこともできる。有効期限を正規化する場合には、各正規化単位に合わせて適性値を事前に計算し、その値が降順または昇順になるようデバイス管理情報を構成しても良い。
【００７３】
（有効期限が切れたデータの削除）
有効期限が切れたデータは、無効なデータとして、適切なタイミングで、不揮発性記憶部１０５から削除する必要がある。具体的には、積極的に無効なデータを検出および削除して空き領域を確保する方法（第１の方法）と、新たなデータが追加された場合に、無効なデータを新たなデータで書き換える方法（第２の方法）との二通りがある。
【００７４】
はじめに第１の方法について述べる。前述の通り、揮発性記憶デバイス１０８にて、キャッシュデータ管理情報が保持されている。ストレージ制御部１０７は、この情報に基づいて、有効期限が切れたデータを定期的に削除する処理（無効化処理）を実行する。有効期限が同じまたは近いデータが、削除の単位であるブロック（単位領域）内にまとめられているため、適切なタイミングで無効化処理を行うことで、一括した削除が可能である。よって、ＮＡＮＤフラッシュを不揮発性記憶デバイス１０９として用いる場合でも、退避および書き戻す処理が不要となる。これにより空き領域を積極的に確保でき、応答性が向上する。また、ブロック内の未使用領域を集めるようなガーベージコレクションも不要となる。なお、先に述べたように有効期限を正規化するなどしてデータを複数の集合（グループ）に分けて管理を行う場合、空き領域の確保処理はグループごとに実行すればよい。無効化処理が完了した際には、デバイス管理情報を適切に更新し、無効化処理が完了した当該ブロックが、以降利用可能であるようにしておく。なお、揮発性記憶デバイス１０８の一時書き込み領域に記憶されているデータのうち、不揮発性記憶デバイス１０９に移動させられる前に有効期限が切れたデータが存在する場合は、そのデータを揮発性記憶デバイス１０８から削除してもよい。
【００７５】
一方、第２の方法では、新たなデータの書き込みを行う際に、キャッシュデータ管理情報を参照し、有効期限が切れたブロックを特定する。その後、特定したブロックに対して無効化処理（消去処理）を実行し、新たなデータの書き込みを行う。その際、デバイス管理情報の当該書き込みが行われたブロックに対する書き換え回数をインクリメントする。本第２の方法は、書き換えが発生した段階で有効期限が切れたブロックの特定を行うため、第１の方法よりも書き込み処理は遅くなる。しかし、バックグラウンド処理が不要になるメリットがある。なお、新たなデータのサイズが、ブロックのサイズよりも大きい場合には、合計サイズが新たなデータのサイズ以上になるまで、有効期限が切れたブロックの探索を続け、複数のブロックを書き換え対象ブロックとして特定する。なお、ブロック内の一部のデータの有効期限が切れ、残りの一部のデータの有効期限が切れていないような状況を許容する場合には、有効期限が切れたデータの合計サイズが、新たなデータのサイズ以上になるまで、有効期限が切れたデータの探索を行い、当該有効期限が切れたデータを含む複数のブロックを書き換え対象ブロックとして特定すればよい。有効期限が切れていないデータについては、新たなデータを書き込む際に退避および書き戻しの処理を行えばよい。
【００７６】
（不揮発性記憶部１０５の変形）
不揮発性記憶デバイス１０９は、複数の異なる有効期限（分類）に対応するため、複数の異なる特性の記憶デバイスを用いて実現してもよい。より具体的には、有効期限が短いデータ（書き換え頻度が高い）を保存する部分はＳＬＣのＮＡＮＤフラッシュを利用し、有効期限が長いデータを保存する部分（書き換え頻度が低い）はＭＬＣのＮＡＮＤフラッシュを使用する等である。なお、記憶素子レベルで違いを実装することが困難な場合には、疑似的に類する効果を得るように制御しても良い。なお、有効期限が長いデータとしてＭＬＣのＮＡＮＤフラッシュに保存された場合にも、そのデータの有効期限が近づいてきた場合（例えば期限まで一定時間以下になった場合）は、ＳＬＣのＮＡＮＤフラッシュに移動させてもよい。
【００７７】
同様に不揮発性記憶デバイス１０９における予備領域の容量を変化させても良い。例えば有効期限が短いデータを保存する領域と、有効期限が長いデータを保存する領域に分けて管理し、それぞれに予備領域を設ける場合に、有効期限が短いデータを保存する領域の方の予備領域を、有効期限が長いデータを保存する領域の方の予備領域よりも大きくしてもよい。また、不揮発性記憶デバイス１０９にデータを書き込む際のエラー訂正符号の強度を変更してもよい。例えば有効期限が長いデータを保存する領域の方のエラー訂正符号を、有効期限が短いデータを保存する領域よりも強くして、長い保持に対する耐性を高めてもよい。また、データを読み出す際に値を検知するための電荷の閾値（例えば電荷量に応じて“１１”、“１０”、“０１”、“００”の４つの状態を表現するマルチレベル対応の場合）を調整してもよい。例えば有効期限が長いデータを保存する領域の方の閾値は１つとして、２つの状態を表現し、有効期限が短いデータを保存する領域は閾値を３つとして、４つの状態を表現してもよい。これらのように、有効期限に応じてデータを正確に保持しつつ、記憶容量もしくは動作速度などが改善するように、各種のパラメータを調整してもよい。
【００７８】
ＮＡＮＤフラッシュを利用する記憶装置では、ブロック毎の書き込み回数（例えばブロックに含まれる記憶素子の書き込み回数の平均）を平滑化するウェアレベリングの機能が必須である。本実施形態で、不揮発性記憶デバイス１０９の領域が有効期限に基づいて複数に分割されている場合には、有効期限範囲（グループ）に対応する分割領域毎にその内部に限定してウェアレベリングを実行しても良いし、複数の分割領域にまたがってウェアレベリングを実行しても良い。グループ内に限定した場合、元々消去のタイミングが同じまたは近いブロック同士でウェアレベリングが実行されるため、平滑化しやすいという利点がある。ただし、グループ間での偏りが発生するため、これらの領域に対して同じ特性の記憶デバイスを使用している場合には、グループ間で書き込み回数を平準化する処理を定期的に行うことが望ましい。この場合、有効期限範囲（グループ）と領域との対応関係が、ウェアレベリングにより変更される。
【００７９】
図１４に、本実施形態に係る不揮発性記憶部１０５の全体動作のフローチャートを示す。ストレージ制御部１０７が、制御部１０１からストレージＩ／Ｆ部１０６を介して指示を受信した場合（Ｓ１０１、Ｓ１０２のＹＥＳ）、当該指示が書き込み指示か、読み出し指示かを判断する（Ｓ１０３）。書き込み指示の場合、書き込み処理（Ｓ１０４）へ進み、読み出し指示の場合、読み出し処理へ進む（Ｓ１０５）。
【００８０】
図１５は、図１４のステップＳ１０５で読み出し指示を受信した場合の動作フローの一例を示す。読み出し指示で指定されるデータの識別子を特定する（Ｓ２０１）。その後、揮発性記憶デバイス１０８に格納されているキャッシュデータ管理情報（Ｓ２０２）を探索し、当該識別子の格納先を特定する（Ｓ２０３）。読み出すべきデータが存在しないことをキャッシュデータ管理情報が示す場合、読み出しエラーを示す応答を返す（Ｓ２０４）。読み出すべきデータが存在することがキャッシュデータ管理情報に示される場合、当該データが揮発性記憶デバイス１０８にあるか不揮発性記憶デバイス１０９にあるかを特定する（Ｓ２０５）。これには、例えば、キャッシュデータ管理情報に含まれるアドレスを用いることで判断する。もしくは、キャッシュデータ管理情報が、記憶デバイス（揮発性記憶デバイス１０８または不揮発性記憶デバイス１０９）を特定する情報を保持していてもよい。何らかの方法で特定すると、キャッシュデータ管理情報のエントリに含まれるアドレス情報を用いて、当該記憶デバイスにアクセスして、データを読み出す（Ｓ２０６、Ｓ２０７）。記憶デバイスから取得したデータを含む応答を、ストレージＩ／Ｆ部１０６を介して制御部１０１に返す（Ｓ２０８）。
【００８１】
図１６は、図１４のステップＳ１０４で書き込み指示を受信した場合の動作フローの一例を示す。既に述べたように、揮発性記憶デバイス１０８から不揮発性記憶デバイス１０９へデータを移動する処理は複数ある。ここではそのうちの一例を示し、その他のフローチャートは説明に煩雑となるため、ここでは省略する。
【００８２】
はじめに書き込み指示に含まれる有効期限を取得する（Ｓ３０１）。取得した有効期限は、必要に応じて正規化する（Ｓ３０２）。正規化とは、先の述べた通り、所定の時間間隔になるように有効期限を丸める処理などを指す。図１７に正規化処理の動作フローの一例を示す。所定の時刻単位に対応して複数の基準値が設定されている状況において、書き込み指示に含まれる有効期限の値を超えない最も近い基準値（最小値）を特定し（Ｓ４０１、Ｓ４０２）、正規化された有効期限とする（Ｓ４０３）例えば１５分刻みで正規化する場合、基準値として０分、１５分、３０、４５分を用意し、２０ＸＸ年Ｙ月Ｚ日１５：３２であれば、３２を越えない最も近い基準値は３０であるため、正規化された有効期限は“２０ＸＸ年Ｙ月Ｚ日１５：３０”となる。
【００８３】
必要に応じて上記の正規化を行った後、書き込み指示されたデータを揮発性記憶デバイス１０８に保存する際の保存箇所を決定する（Ｓ３０３）。この処理の動作フローの一例を図１８に示す。揮発性記憶デバイス１０８の領域が有効期限に基づいて１つ以上の領域に分割されていると仮定する（“１つ以上”のため、分割されていない場合も同じように扱ってよい）。つまり、各領域には有効期限が設定されており、これは、前述したメモリ管理情報が１つ以上のテーブルで管理されている場合における各テーブルの有効期限に対応する。不揮発性記憶デバイス１０９も同様に有効期限に基づいて１つ以上の領域に分割されていると仮定する。揮発性記憶デバイス１０８における各領域について、書き込み指示されたデータの有効期限がその範囲に含まれるかどうかを判定する（Ｓ５０１、Ｓ５０２、Ｓ５０３、Ｓ５０４）。有効期限を満たす領域が特定されたら、当該特定した領域に空き領域があるかを確認する（Ｓ５０５）。空き領域が無い場合は、保存不可と判断し（Ｓ５０８）、空き領域がある場合は（Ｓ５０７）、特定した領域に保存すると決定する（Ｓ５０７）。
【００８４】
保存不可となった場合（図１８のＳ５０８、図１６のＳ３０４のＮＯ）、揮発性記憶デバイス１０８において、不揮発性記憶デバイス１０９に移動するデータを決定する処理を行う（図１６のＳ３０５）。図１９に、図１６のステップＳ３０５の動作の一例を示すフローチャートを示す。ここでは、前提として、揮発性記憶デバイス１０８上のデータが、不揮発性記憶デバイス１０９に保存するのに適切な順（降順）に整列されているとする。書き出すのに最も好適なデータから順番に参照してデータサイズを合計し、合計が新しく揮発性記憶デバイス１０８に保存するデータの長さ以上になるまで参照を継続して、参照されたこれらのデータが格納されている領域を、データ書き出し領域として応答する（Ｓ６０１、Ｓ６０２、Ｓ６０３、Ｓ６０４、Ｓ６０５、Ｓ６０６）。もし、揮発性記憶デバイス１０８に保存されている全てデータを書き出したとしてもデータが保存できない場合（すなわち、揮発性記憶デバイス１０８のサイズが、保存すべきデータのサイズよりも小さい場合）、書き出し不可と応答する（Ｓ６０７）。なお、図１９のフローチャートにおいて、“Ｘ”は、新たに揮発性記憶デバイス１０８に保存しようとするデータを表し、Ｅ（ｊ）は、揮発性記憶デバイス１０８の領域（ｉ）に対応するキャッシュデータ管理情報のｊ番目のエントリを表す（つまり領域（ｉ）は、ｊ番目のエントリのデータを格納している）。また、Ｓｉｚｅ（Ｅ（ｊ））はｊ番目のエントリに対応するデータの長さを表す。“ｊｌａｓｔ”は、キャッシュデータ管理情報に含まれるエントリのうち最後のエントリを表す。
【００８５】
揮発性記憶デバイス１０８から不揮発性記憶デバイス１０９に移動するデータが特定されると、特定したデータを実際に不揮発性記憶デバイス１０９に書き出す処理を行う（図１６のＳ３０６のＹＥＳ、Ｓ３０８）。図２０に、図１６のステップＳ３０８で行う不揮発性記憶デバイス１０９への書き出し処理の動作フローの一例を示す。先に述べた通り、この処理は不揮発性記憶デバイス１０９を効率的に動作させるデータサイズを単位として実行される。すなわち、ＮＡＮＤフラッシュであればブロックを単位として書き込みを実行する。図１９のステップＳ６０５で特定したデータをまとめ（Ｓ７０１、Ｓ７０２）、まとめたデータが、ブロックの単位（ブロックサイズの整数倍）に一致しないのであれば、パディングを実行した後（Ｓ７０３）、不揮発性記憶デバイス１０９にブロック単位で書き出す（Ｓ７０４）。図２０のフローチャートにおいて、“Ｓｕｍ（Ｓｉｚｅ（Ｅ（ｊ）））”は、図１９のステップＳ６０５で特定したデータを統合したサイズを表す。Ｐａｄｄｉｎｇ（Ｌ）は、なお、不揮発性記憶デバイス１０９に効率的に書き込みができるサイズにするための必要なサイズのパディングのサイズを表す。
【００８６】
以上が本実施形態における不揮発性記憶部１０５の動作である。一連の説明では、揮発性記憶デバイス１０８に保存されているデータは何らかの基準によって、事前に整列している場合を取り上げた。これは図８で述べたリングバッファに書き込まれた順番でも良いし、各データに対して計算された適性値の順番でも良いし、有効期限の昇順（または降順）でもよいし、識別子の順番でもよい。なお、適性値を用いた場合に、書き込み指示を受信した際に事前に整列した状態にするためには、揮発性記憶部１０２がアイドル状態にある時に各データの適性値を計算し、整列しなおす処理を実行すればよい。または、実際に書き込み指示を受信した際に、適性値を計算するようにしてもよい。
【００８７】
図２１に第１の実施形態に係るシーケンスの一例を示す。図２２に図２１に続くシーケンスの例を示す。制御部１０１で、通信Ｉ／Ｆ部１０３を介して書き込み要求を受信すると（Ａ１０１）、書き込み指示（識別子、有効期限、データ）を生成し（Ａ１０２）、ストレージＩ／Ｆ部１０６を介して、ストレージ制御部１０８に送る（Ａ１０３、Ａ１０４）。ストレージ制御部１０７は、キャッシュデータ管理情報を必要に応じて生成し（Ａ１０５）、揮発性記憶デバイス１０８へのデータの保存可否を判断する（Ａ１０６）。
【００８８】
揮発性記憶デバイス１０８へのデータの保存が可能であれば、揮発性記憶デバイス１０８においてキャッシュデータ管理情報にエントリを追加し（Ａ１０７、Ａ１０８）、揮発性記憶デバイス１０８にデータを保存する（Ａ１０９、Ａ１１０）。
【００８９】
揮発性記憶デバイス１０８へのデータの保存が不可であれば（空き容量がない場合）、ストレージ制御部は、揮発性記憶デバイス１０８において書き出し候補となるデータを選定し（Ａ１１１）、選定したデータの書き出しを揮発性記憶デバイス１０８に指示する（図２２のＡ１１２）。当該データを揮発性記憶デバイス１０８から読み出して、不揮発性記憶デバイス１０９に書き込む（Ａ１１３）。また、ストレージ制御部１０７は、揮発性記憶デバイス１０８におけるキャッシュデータ管理情報に新たなエントリを追加し（Ａ１１４、Ａ１１５）、また、揮発性記憶デバイス１０８に新たなデータを書き込む（保存する）（Ａ１１６、Ａ１１７）。
【００９０】
（第１の実施形態のまとめ）
以上で述べたように、第１の実施形態では不揮発性記憶部１０５に対して有効期限を伴ったデータ書き込み指示を行う制御部１０１と、その指示に基づいて書き込み動作を行う不揮発性記憶部１０５とを備えるキャッシュ装置を述べた。不揮発性記憶部１０５は、揮発性記憶デバイス１０８を一時書き込み領域として利用して、通知された有効期限の近接性に基づき、揮発性記憶デバイス１０８から不揮発性記憶デバイス１０９へのデータ書き込み処理をまとめて行う。その際、不揮発性記憶デバイス１０９への書き込みを、効率的に書き込みおよび更新ができる単位でまとめることで、細かな情報を書き込む要求が頻繁にあった場合でも、書き込み効率を維持しつつ、書き換え回数の増加を抑制できる。
【００９１】
（第２の実施形態）
第１の実施形態では不揮発性記憶部１０５に揮発性記憶デバイス１０８と不揮発性記憶デバイス１０９とを搭載し、揮発性記憶デバイス１０８に記憶されているデータを有効期限に応じてまとめて、不揮発性記憶デバイス１０９に書き込みを行なっていた。一方、本実施形態では、揮発性記憶部１０２と、不揮発性記憶部１０５との間で、第１の実施形態と同様の処理を実行する。
【００９２】
本実施形態におけるキャッシュ装置のブロック図は、第１の実施形態におけるブロック図（図１）と同じである。ただし、ストレージ制御部１０７における制御処理の一部を、キャッシュ装置の制御部１０１にて実行する点が異なる。
【００９３】
本実施形態の揮発性記憶部１０２は、ライトバック方式のディスクキャッシュとして機能する。すなわち、制御部１０１により発行した有効期限付きの書き込み指示で指定されるデータを、揮発性記憶部１０２で一時的に保存し、所定の条件が満たされた際に当該一時保存したデータを揮発性記憶部１０２から不揮発性記憶部１０５に書き出す動作を行う。ディスクキャッシュとして機能するにあたり必要となる情報は、第１の実施形態とほぼ同じである。すなわち、キャッシュデータ管理情報と書き込みを指示された実データとである。キャッシュデータ管理情報のエントリを構成する要素は、図３〜図７に記載したものと同じでよい。識別子は、第１の実施形態と同様に、書き込むデータを特定する情報である。具体的には、識別子は、名前や種々のビット列である。有効期限は、第１の実施形態と同様に、制御部１０１より書き込み指示とともに通知され、必要に応じて正規化されてもよい。保存先アドレスは、揮発性記憶部１０２上の位置を特定するものである。所定の条件は、一例として、第１の実施形態の説明で述べた第１の条件、第２の条件、第３の条件等がある。
【００９４】
（動作シーケンス）
揮発性記憶部１０２を用いた一連の処理は、制御部１０１によって制御される。例えば、ファイルシステムもしくはデバイスドライバの処理の一部として、揮発性記憶部１０２を用いた一連の処理を実装することができる。
【００９５】
図２３は本実施形態のシーケンス図である。図２４は、図２３に続くシーケンス図である。制御部１０１で、通信Ｉ／Ｆ部１０３を介して書き込み要求を受信すると（Ｂ１０１）、書き込み指示を生成し（Ｂ１０２）、キャッシュデータ管理情報を必要に応じて生成する（Ｂ１０３）。制御部１０１は、揮発性記憶部１０２へのデータ保存可否を判断し（Ｂ１０４）、揮発性記憶部１０２へのデータの保存が可能であれば、揮発性記憶部１０２においてキャッシュデータ管理情報にエントリを追加し（Ｂ１０５、Ｂ１０６）、揮発性記憶部１０２にデータを保存する（Ｂ１０７、Ｂ１０８）。
【００９６】
揮発性記憶部１０２へのデータの保存が不可であれば（空き容量がない場合）、制御部１０１は、揮発性記憶部１０２において書き出し候補となるデータを選定し（Ｂ１０９）、選定したデータの書き出し指示を、ストレージＩ／Ｆ部１０６を介して、ストレージ制御部１０７に出力する（図２４のＢ１１０、Ｂ１１１）。また、書き出し対象となるデータをストレージＩ／Ｆ部１０６を介して（Ｂ１１３、Ｂ１１４）、ストレージ制御部１０７に送る。ストレージ制御部１０７は、不揮発性記憶デバイス１０９における書き出し先を選定し（Ｂ１１２）、書き出し対象となるデータを書き込む（Ｂ１１５）。また、制御部１０１は、揮発性記憶部１０２におけるキャッシュデータ管理情報に新たなエントリを追加し（Ｂ１１６、Ｂ１１７）、また、揮発性記憶部１０２に新たなデータを書き込む（保存する）（Ｂ１１８、Ｂ１１９）。
【００９７】
（第２の実施形態：変化形）
先の例はディスクキャッシュ（揮発性記憶部１０２）にて有効期限ごとに（あるいは有効期限範囲ごとに）書き込み要求をまとめ、書き込み指示されたデータを一時的に保存した。これに対して、揮発性記憶部１０２ではなく、アプリケーションの内部にて、有効期限ごとに書き込み要求をまとめることも可能である。これは、例えば、ウェブデータのキャッシュサーバ、データベースのキャッシュサーバなどに対して適用可能である。
【００９８】
この変化形における機能ブロック図は、第１の実施形態の機能ブロック図（図１）と同じである。一方、シーケンス図は若干の変更を伴う。前述した図２３および図２４のシーケンスにおける変更点を図２５に示す。
【００９９】
先に述べたディスクキャッシュとして機能する場合、書き込み要求が発生した後に、書き込み指示を制御部１０１が作成し、その書き込み指示に基づいて、書き込むべき内容を有効期限ごとにまとめて揮発性記憶部１０２にキャッシュしていた。これに対して、本変化形の場合、アプリケーションが確保したバッファへデータを保存する要求が発生することで（Ｂ２０１）、処理が開始される。このバッファは、一連の説明における揮発性記憶部１０２に相当し、キャッシュデータ管理情報および実データの一時保存に用いられる。キャッシュデータ管理情報を必要に応じて作成し（Ｂ２０２）、アプリケーションは、バッファに当該要求に係るデータが格納できるかどうかを調べ（Ｂ２０３）、格納できる場合には当該データをバッファに格納し、格納できない場合には不揮発性記憶部１０５にデータの書き出し指示を出力する。データの書き出し処理はディスクキャッシュの場合と同様である。すなわち、アプリケーション内で書き出し候補となるデータを選定した後、不揮発性記憶部１０５への当該データの書き込み指示を生成する動作となる。
【０１００】
（第２の実施形態のまとめ）
第２の実施形態では、制御部１０１による書き込み指示で指定されたデータを、揮発性記憶部１０２で有効期限の分類ごとに一時的に保存し、有効期限が同じまたは近い書き込み指示のデータをまとめて、不揮発性記憶部１０５へ書き込んだ。具体的に、不揮発性記憶デバイス１０９に効率的に書き込みおよび更新ができるサイズ単位で書き込みを行った。これにより、細かな情報の書き込みの要求が頻繁にあった場合でも、書き込み効率を維持しつつ、書き換え回数の増加を抑制できる。
【０１０１】
（第３の実施形態）
第３の実施形態では、不揮発性記憶部１０５に対する指示（書き込み指示または読み出し指示）そのものを、制御部１０１と不揮発性記憶部１０５との間に配置したストレージコントローラで有効期限に基づいてまとめて記憶および管理する。一般に、制御部１０１は、ストレージを制御するプロトコル（例えば、ＡＨＣＩやＮＶＭ  Ｅｘｐｒｅｓｓ）を使って、不揮発性記憶部１０５に相当する記憶装置（ＳＳＤやＨＤＤなど）を制御する。本実施形態では、それらのプロトコルに従って交換されるメッセージのレベルで、上記のストレージコントローラで有効期限ごとに指示（書き込み指示または読み出し指示）をまとめる機能を提供する。
【０１０２】
本実施形態のキャッシュ装置は、他の実施形態のキャッシュ装置にストレージコントローラ１１１を追加したものとなり、この機能ブロック図を図２６に示す。図１と同一名称の要素には同一の符号を付して、拡張または変更された処理を除き、重複する説明を省略する。
【０１０３】
ストレージコントローラ１１１は、内部記憶部１１１ａを含む。内部記憶部１１１ａは任意のメモリまたは回路などで構成できる。ストレージコントローラ１１１は、制御部１０１で動作するソフトウェアから指示を受け、不揮発性記憶部１０５（のストレージ制御部１０７）が解釈可能な制御コマンドに当該指示を変換する部分である。また、ストレージコントローラ１１１で変換を行う過程において、本実施形態の機能である有効期限ごとに指示をまとめる機能も実行する。なお、ストレージコントローラ１１１は第１および第２の実施形態のキャッシュ装置でも存在し得るものであるが、第１および第２の実施形態の特徴に関連しないため省略した。
【０１０４】
図２７に、本実施形態に係るシーケンス図を示す。基本的な動作は第２の実施形態と同じであるが、以下の点が異なる。
●  制御部１０１で生成された書き込み指示をストレージコントローラ１１１に送信する点（Ｃ１０３）
●  ストレージコントローラ１１１がキャッシュデータ管理情報の生成および管理を行う点（Ｃ１０４）。この際、ストレージコントローラ１１１は、データそのものに対する一時保存の機能は提供しないため、キャッシュデータ管理情報のエントリ追加は、データのサイズに依存せず行われる。揮発性記憶部１０２の空き領域の状態は、自身で保持しているエントリの内容から判断し、不揮発性記憶デバイスへの書き出しタイミングを決定してもよい。
●  書き込み指示されたデータの揮発性記憶部１０２から不揮発性記憶部１０５への転送は、ストレージコントローラ１１１が司る点（Ｃ１０７）
他のシーケンス（Ｃ１０１、Ｃ１０２、Ｃ１０５、Ｃ１０６、Ｃ１０８、Ｃ１０９、Ｃ１１０、Ｃ１１１、Ｃ１１２）は、第２の実施形態と同じであるため、説明を省略する。
【０１０５】
キャッシュデータ管理情報の識別子は、ストレージ用プロトコルにおいて個々のメッセージを特定する識別子とする。また、ストレージコントローラ１１１が受信する書き込み指示では、データの実態は転送せず、データが格納された揮発性記憶部１０２のアドレス情報のみが制御部１０１から通知される。ストレージコントローラ１１１は、書き込み指示を自身の内部バッファにおいて有効期限に基づいてまとめ、所定の条件が成立した場合に、不揮発性記憶部１０５へ書き込むための指示を揮発性記憶部１０２に対して発行する。その際、データを揮発性記憶部１０２から読み出し、不揮発性記憶部１０５へと転送する。
【０１０６】
なお、ストレージコントローラ１１１が不揮発性記憶部１０２に対して書き出し指示を発行する場合、既存のストレージ制御プロトコルの書き込みコマンドを連続的に発行することで対応しても良いし、複数のコマンドを集約した新しいコマンドを定義しても良い。さらに、既存のコマンドを用いて指示されたデータだけを集約し、集約したデータを既存のコマンドを用いて書き込んでも良い。
【０１０７】
また、不揮発性記憶部１０５への書き出しを行う条件として第１の実施形態で挙げた３つの所定の条件のうち、第３の条件の成立を管理するため、タイマーによる制御を導入しても良い。その際、有効期限（もしくは正規化された有効期限）が複数の閾値で区切られているのであれば、その各々でタイマーを動作させ、所定の時間が経過したら、不揮発性記憶デバイス１０９に書き出すように実装して良い。このようにすると不揮発性記憶部１０５の利用効率は低下するが、不意の電源断などで揮発性記憶デバイス１０８上のデータが喪失する可能性を減らすことができる。
【０１０８】
（第３の実施形態のまとめ）
第３の実施形態では、ストレージコントローラ１１１の内部記憶部１１１ａにおいて有効期限を伴う書き込み指示を一時的に記憶し、有効期限が近いもの同士でまとめた。所定の条件が成立した場合には、書き込み指示されたデータを有効期限の近接性に基づいて選択して（まとめて）、揮発性記憶部１０２から不揮発性記憶部１０５に書き込むことで、効果的な動作を実現できる。その他の動作は、第１の実施形態と同様であり、同様の効果が得られることが自明であるため、その動作の説明は省略した。また、ストレージコントローラ１１１において書き込み指示を一時的に記憶することで、書き込みコマンドの変換など、より効率的な動作を実現するための改良を、積極的に組み合わせることができる。
【０１０９】
なお、各実施形態のキャッシュ装置（データ記憶装置）は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、キャッシュ装置が備える各ブロックは、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、キャッシュ装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、各記憶部または各記憶デバイスは、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【０１１０】
本実施形態で用いられる用語は、広く解釈されるべきである。例えば用語“プロセッサ”は、汎用目的プロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、マイクロコントローラ、状態マシンなどを包含してもよい。状況によって、“プロセッサ”は、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム可能論理回路  （ＰＬＤ）などを指してもよい。“プロセッサ”は、複数のマイクロプロセッサのような処理装置の組み合わせ、ＤＳＰおよびマイクロプロセッサの組み合わせ、ＤＳＰコアと協働する１つ以上のマイクロプロセッサを指してもよい。
【０１１１】
別の例として、用語“メモリ”は、電子情報を格納可能な任意の電子部品を包含してもよい。“メモリ”は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、フラッシュメモリ、磁気または光学データストレージを指してもよく、これらはプロセッサによって読み出し可能である。プロセッサがメモリに対して情報を読み出しまたは書き込みまたはこれらの両方を行うならば、メモリはプロセッサと電気的に通信すると言うことができる。メモリは、プロセッサに統合されてもよく、この場合も、メモリは、プロセッサと電気的に通信していると言うことができる。
【０１１２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１１３】
１０１：制御部
１０２ａ：揮発性記憶デバイス
１０２：揮発性記憶部
１０３：通信Ｉ／Ｆ部
１０４：バス
１０５：不揮発性記憶部
１０６：ストレージＩ／Ｆ部
１０７：ストレージ制御部
１０８：揮発性記憶デバイス
１０９：不揮発性記憶デバイス
１１１：ストレージコントローラ
１１１ａ：内部記憶部
【図１】
2017123110.tif 000003
【図２】
2017123110.tif 000004
【図３】
2017123110.tif 000005
【図４】
2017123110.tif 000006
【図５】
2017123110.tif 000007
【図６】
2017123110.tif 000008
【図７】
2017123110.tif 000009
【図８】
2017123110.tif 000010
【図９】
2017123110.tif 000011
【図１０】
2017123110.tif 000012
【図１１】
2017123110.tif 000013
【図１２】
2017123110.tif 000014
【図１３】
2017123110.tif 000015
【図１４】
2017123110.tif 000016
【図１５】
2017123110.tif 000017
【図１６】
2017123110.tif 000018
【図１７】
2017123110.tif 000019
【図１８】
2017123110.tif 000020
【図１９】
2017123110.tif 000021
【図２０】
2017123110.tif 000022
【図２１】
2017123110.tif 000023
【図２２】
2017123110.tif 000024
【図２３】
2017123110.tif 000025
【図２４】
2017123110.tif 000026
【図２５】
2017123110.tif 000027
【図２６】
2017123110.tif 000028
【図２７】
2017123110.tif 000029