(57)【要約】【課題】記憶装置の長寿命化を図ることができる【解決手段】本発明の記憶装置は、第１のメモリと、第２のメモリと、前記第１のメモリおよび前記第２のメモリへのデータの読み書きを行う入出力部と、前記第１のメモリのアドレス毎のデータの書き込み頻度を監視し、該監視の結果に応じて、前記第１のメモリのアドレスであって、該アドレスを書き込み先とするデータを前記第２のメモリに書き込むアドレスであるキャッシュアドレスを決定する制御部と、を有し、前記入出力部は、前記第１のメモリのアドレスを指定したデータの書き込み要求が入力されると、前記指定されたアドレスが前記キャッシュアドレスである場合には、前記データを前記第２のメモリに書き込む。【選択図】図２
2014203381.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリと、
第２のメモリと、
前記第１のメモリおよび前記第２のメモリへのデータの読み書きを行う入出力部と、
前記第１のメモリのアドレス毎のデータの書き込み頻度を監視し、該監視の結果に応じて、前記第１のメモリのアドレスであって、該アドレスを書き込み先とするデータを前記第２のメモリに書き込むアドレスであるキャッシュアドレスを決定する制御部と、を有し、
前記入出力部は、前記第１のメモリのアドレスを指定したデータの書き込み要求が入力されると、前記指定されたアドレスが前記キャッシュアドレスである場合には、前記データを前記第２のメモリに書き込むことを特徴とする記憶装置。
【請求項２】
請求項１記載の記憶装置において、
前記第１のメモリおよび前記第２のメモリには、複数のアプリケーションの実行に応じたデータが書き込まれ、
前記制御部は、前記アプリケーションの実行状態毎に、該実行状態における前記第１のメモリのアドレス毎のデータの書き込み頻度を監視し、前記キャッシュアドレスを決定する際には、その時点でのアプリケーションの実行状態における前記第１のメモリのアドレス毎のデータの書き込み頻度の監視の結果に応じて、前記キャッシュアドレスを決定することを特徴とする記憶装置。
【請求項３】
請求項２記載の記憶装置において、
前記入出力部は、前記アプリケーションの起動時あるいは終了時に、前記第１のメモリの同一のアドレスを書き込み先とし、前記第２のメモリに書き込まれたデータのうち最新のデータを前記アドレスへ書き込むことを特徴とする記憶装置。
【請求項４】
請求項１または２記載の記憶装置において、
前記入出力部は、前記第１のメモリの同一のアドレスを書き込み先とし、所定期間内に前記第２のメモリに書き込まれたデータのうち最新のデータを、前記所定期間の経過後に、前記アドレスへ書き込むことを特徴とする記憶装置。
【請求項５】
請求項１から４のいずれか１項に記載の記憶装置において、
前記制御部は、前記書き込み頻度が所定の閾値以上のアドレスを前記キャッシュアドレスと決定することを特徴とする記憶装置。
【請求項６】
請求項１から５のいずれか１項に記載の記憶装置において、
前記制御部は、前記第１のメモリへの単位時間当たりのデータの書き込み回数に基づいて前記第１のメモリの寿命を推測し、該推測した寿命が予め定められた期限までの残存期間に満たない場合に、前記キャッシュアドレスを決定することを特徴とする記憶装置。
【請求項７】
記憶装置の制御方法であって、
前記記憶装置が備える第１のメモリのアドレス毎のデータの書き込み頻度を監視し、該監視の結果に応じて、前記第１のメモリのアドレスであって、該アドレスを書き込み先とするデータを前記記憶装置が備える第２のメモリに書き込むアドレスであるキャッシュアドレスを決定し、  前記第１のメモリのアドレスを指定したデータの書き込み要求が入力されると、前記指定されたアドレスが前記キャッシュアドレスである場合には、前記データを前記第２のメモリに書き込むことを特徴とする記憶装置の制御方法。
【請求項８】
記憶装置に、
前記記憶装置が備える第１のメモリのアドレス毎のデータの書き込み頻度を監視し、該監視の結果に応じて、前記第１のメモリのアドレスであって、該アドレスを書き込み先とするデータを前記記憶装置が備える第２のメモリに書き込むアドレスであるキャッシュアドレスを決定する処理と、
前記第１のメモリのアドレスを指定したデータの書き込み要求が入力されると、前記指定されたアドレスが前記キャッシュアドレスである場合には、前記データを前記第２のメモリに書き込む処理と、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶する記憶装置とその制御方法、および、プログラムに関する。
【背景技術】
【０００２】
携帯電話、スマートフォンなどの情報処理装置の多くには、データを記憶する記憶手段として不揮発性メモリであるフラッシュメモリを備えた記憶装置が搭載されている。このような記憶装置の一例が、特許文献１（特開２０１２−８４１２７号公報）に開示されている。
【０００３】
特許文献１には、記憶手段として不揮発性メモリ（フラッシュメモリ）および揮発性メモリ（ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を備え、書き込み対象のデータの特性（データが書き換えられる頻度やデータの重要度）に応じて、データの書き込み先を揮発性メモリとするか、不揮発性メモリとするかを決定する記憶装置が開示されている。
【０００４】
一般に、不揮発性メモリは、揮発性メモリと比較して、データ保持の信頼性は高いが、データへのアクセス時間が長いという特性がある。特許文献１に開示されている記憶装置によれば、データの特性に合ったメモリにデータを記憶させることができる。
【０００５】
フラッシュメモリでは、記憶素子であるトランジスタの制御ゲートと酸化膜との間に設けられた浮遊ゲートに酸化膜を通過した電子が保持されることでデータが書き込まれ、浮遊ゲートに保持されている電子が酸化膜を通過して外部に引き抜かれることでデータが消去される。
【０００６】
電子が酸化膜の通過を繰り返すことに起因して酸化膜が劣化すると、浮遊ゲートで保持されるべき電子が外部へ流出しやすくなり、データを正しく記憶できなくなってしまう。そのため、フラッシュメモリにおいては、データの正しい書き込み・消去が可能な回数が限られている。
【０００７】
特許文献１に開示されている記憶装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からフラッシュメモリへのアクセスに用いられるアドレス（ＣＰＵ物理アドレス）と、フラッシュメモリ内においてＣＰＵ物理アドレスに対応するアドレス（ＮＡＮＤ物理アドレス）とが対応付けられた変換テーブルを有しており、ＣＰＵからのデータの書き込み要求において指定されたＣＰＵ物理アドレスに対応するＮＡＮＤ物理アドレスにデータが書き込まれる。そのため、特許文献１に開示されている記憶装置においては、書き込み対象のデータの特性によっては、フラッシュメモリの特定のアドレスへのデータの書き込み、消去が集中することで、その特定のアドレスにおいてデータの正しい書き込み・消去が可能な回数の上限に達してしまい、フラッシュメモリの寿命が短くなってしまうことがある。
【０００８】
そこで、特許文献２には、記憶手段としてフラッシュメモリを備え、フラッシュメモリのアドレス毎にデータの書き込みおよび消去の回数を記憶し、その回数がアドレス間で平均化されるようにデータの書き込みを行う記憶装置が開示されている。
【０００９】
特許文献２に開示されている記憶装置によれば、フラッシュメモリ内のアドレス間でデータの書き込みおよび消去の回数が平均化されるので、特定のアドレスにデータの書き込み・消去が集中することに起因してフラッシュメモリの寿命が短くなることを防ぐことができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−８４１２７号公報
【特許文献２】特開２０１１−２０３９１６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献２に開示されている記憶装置によれば、フラッシュメモリ内の特定のアドレスへのデータの書き込み・消去回数が多い場合には、同じフラッシュメモリ内で、その特定のアドレスとは別のアドレスに書き込みが行われるため、フラッシュメモリへのデータの書き込み回数自体は減っていない。そのため、特許文献２に開示されている記憶装置でも、長寿命化を十分に図ることができない。
【００１２】
本発明の目的は、長寿命化を図ることができる記憶装置とその制御方法、および、プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明の記憶装置は、
第１のメモリと、
第２のメモリと、
前記第１のメモリおよび前記第２のメモリへのデータの読み書きを行う入出力部と、
前記第１のメモリのアドレス毎のデータの書き込み頻度を監視し、該監視の結果に応じて、前記第１のメモリのアドレスであって、該アドレスを書き込み先とするデータを前記第２のメモリに書き込むアドレスであるキャッシュアドレスを決定する制御部と、を有し、
前記入出力部は、前記第１のメモリのアドレスを指定したデータの書き込み要求が入力されると、前記指定されたアドレスが前記キャッシュアドレスである場合には、前記データを前記第２のメモリに書き込む。
【００１４】
上記目的を達成するために本発明の記憶装置の制御方法は、
前記記憶装置が備える第１のメモリのアドレス毎のデータの書き込み頻度を監視し、該監視の結果に応じて、前記第１のメモリのアドレスであって、該アドレスを書き込み先とするデータを前記記憶装置が備える第２のメモリに書き込むアドレスであるキャッシュアドレスを決定し、
前記第１のメモリのアドレスを指定したデータの書き込み要求が入力されると、前記指定されたアドレスが前記キャッシュアドレスである場合には、前記データを前記第２のメモリに書き込む。
【００１５】
上記目的を達成するために本発明のプログラムは、
記憶装置に、
前記記憶装置が備える第１のメモリのアドレス毎のデータの書き込み頻度を監視し、該監視の結果に応じて、前記第１のメモリのアドレスであって、該アドレスを書き込み先とするデータを前記記憶装置が備える第２のメモリに書き込むアドレスであるキャッシュアドレスを決定する処理と、
前記第１のメモリのアドレスを指定したデータの書き込み要求が入力されると、前記指定されたアドレスが前記キャッシュアドレスである場合には、前記データを前記第２のメモリに書き込む処理と、を実行させる。
【発明の効果】
【００１６】
本発明によれば、記憶装置の長寿命化を図ることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態の記憶装置が組み込まれた情報処理装置のハードウェア構成の一例を示すブロック図である。
【図２】図１に示す情報処理装置の機能ブロック図である。
【図３】図２に示す情報処理装置の、フラッシュメモリへのデータの書き込みが要求された際の動作の一例を示すフローチャートである。
【図４】図２に示す情報処理装置の、新たなアプリケーションの起動が要求された際の動作の一例を示すフローチャートである。
【図５】図２に示す情報処理装置の、アプリケーションの終了が要求された際の動作の一例を示すフローチャートである。
【図６】図２に示す情報処理装置の、キャッシュ動作の要否を決定する際の動作を示すフローチャートである。
【図７】図２に示す情報処理装置の、新たなアプリケーションの起動が要求された際の動作の他の一例を示すフローチャートである。
【図８】図２に示すフラッシュメモリの論理アドレス毎の書き込み回数の一例を示す図である。
【図９】図２に示す情報処理装置の、アプリケーションの終了が要求された際の動作の他の一例を示すフローチャートである。
【図１０】図２に示す情報処理装置の、フラッシュメモリへのデータの書き込みが要求された際の動作を示すフローチャートである。
【図１１】図２に示す情報処理装置の、フラッシュメモリからのデータの読み出しが要求された際の動作を示すフローチャートである。
【図１２】本発明の第１の実施形態の記憶装置が組み込まれた情報処理装置の機能ブロック図の他の例である。
【図１３】本発明の第２の実施形態の記憶装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下に、本発明を実施するための形態について図面を参照して説明する。
【００１９】
（第１の実施形態）
図１は、本発明の第１の実施形態の記憶装置１００が組み込まれた情報処理装置１０のハードウェア構成の一例を示す図である。なお、情報処理装置１０の具体例としては、携帯電話、スマートフォン、パーソナルコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄａｔａ  Ａｓｓｉｔａｎｔｓ）、ゲーム機などがある。
【００２０】
図１に示す情報処理装置１０は、ＣＰＵ１１と、ＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１２と、通信ユニット１３と、フラッシュメモリ１１０と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２０と、を有する。上述した各部は、バス１４を介して接続されている。フラッシュメモリ１１０は、第１のメモリの一例であり、ＲＡＭ１２０は、第２のメモリの一例である。
【００２１】
ＣＰＵ１１は、情報処理装置１０全体の動作を制御する。
【００２２】
ＲＴＣ１２は、現在時刻を示す現在時刻データを出力するクロックである。ＲＴＣ１２は、情報処理装置１０の電源がオフのときにも時刻を刻み続けることができる。
【００２３】
通信ユニット１３は、情報処理装置１０外部の他の装置と通信を行う。
【００２４】
フラッシュメモリ１１０は、ＣＰＵ１１が実行する各種制御用プログラムや固定データなどを記憶する不揮発性メモリである。
【００２５】
ＲＡＭ１２０は、ＣＰＵ１１がアプリケーションを実行する際に必要となるデータや、アプリケーションの実行に応じた画像を図１においては不図示の表示部に表示させるためのデータなどを記憶する揮発性メモリである。また、ＲＡＭ１２０は、ワークメモリとしても使用される。
【００２６】
フラッシュメモリ１１０およびＲＡＭ１２０は、記憶装置１００の一部を構成する。
【００２７】
次に、情報処理装置１０の構成のうち、本発明に特に関連する部分の構成について、図２に示す機能ブロック図を参照して説明する。なお、図２において、図１と同様の構成については同じ符号を付し、説明を省略する。また、図２においては、通信ユニット１３の記載を省略する。
【００２８】
図２に示す情報処理装置１０は、ＲＴＣ１２と、フラッシュメモリ１１０と、ＲＡＭ１２０と、アプリケーション管理モジュール１３０と、アクセス管理部１４０と、メモリドライバ１５０と、信頼性管理モジュール１６０とを有する。メモリドライバ１５０は、入出力部の一例であり、信頼性管理モジュール１６０は、制御部の一例である。フラッシュメモリ１１０、ＲＡＭ１２０、メモリドライバ１５０、および、信頼性管理モジュール１６０は、記憶装置１００を構成する。
【００２９】
アプリケーション管理モジュール１３０、アクセス管理部１４０、メモリドライバ１５０、および、信頼性管理モジュール１６０は、通常、ＣＰＵ１１上で動作する機能ブロックであるが、これに限られるものではない。
【００３０】
アプリケーション管理モジュール１３０は、情報処理装置１０に搭載されている複数のアプリケーション（アプリケーション１７０ａ，１７０ｂ，・・・，１７０ｎ）の起動および終了を管理しており、アプリケーションの起動および終了時のシステムリソースの割り当てを行う。また、アプリケーション管理モジュール１３０は、信頼性管理モジュール１６０からの要求に応じて、動作中のアプリケーションを示す動作アプリケーション情報を出力する。なお、アプリケーション管理モジュール１３０は、複数のアプリケーションを並列的に実行させることが可能である。
【００３１】
アクセス管理部１４０は、フラッシュメモリ１１０へのデータの書き込みやフラッシュメモリ１１０からのデータの読み出しを要求する旨を示すアクセス要求がアプリケーションから入力されると、そのアクセス要求において指定されているフラッシュメモリ１１０の論理アドレスへのデータの書き込み要求や読み出し要求をメモリドライバ１５０に出力する。
【００３２】
メモリドライバ１５０は、書き込み要求や読み出し要求のアクセス管理部１４０からの入力に応じて、フラッシュメモリ１１０あるいはＲＡＭ１２０へのデータの書き込みや読み出しを行う。
【００３３】
なお、上述したように、書き込み要求や読み出し要求においては、フラッシュメモリ１１０の論理アドレスが指定されている。メモリドライバ１５０は、フラッシュメモリ１１０の論理アドレスと、その論理アドレスに対応する物理アドレスとを対応付けた論物変換テーブルを有しており、書き込み要求や読み出し要求において指定された論理アドレスに対応する物理アドレスを論物変換テーブルを参照して特定し、特定した物理アドレスにデータの書き込みや読み出しを行う。
【００３４】
なお、以下では、説明の簡略化のため、論理アドレスを用いて説明を行い、論理アドレスと物理アドレスとの変換については記載を省略する。
【００３５】
フラッシュメモリ１１０は、上述したような、ＣＰＵ１１が実行する各種制御用プログラムや固定データなどに加えて、フラッシュメモリ書き込みログ１１１、および、キャッシュアドレス情報１１２を記憶する。
【００３６】
フラッシュメモリ書き込みログ１１１は、データが書込まれたフラッシュメモリ１１０の論理アドレスを示す情報が蓄積されたログである。フラッシュメモリ書き込みログからフラッシュメモリ１１０のアドレス毎の書き込み頻度を得ることができる。
【００３７】
フラッシュメモリ書き込みログ１１１は、アプリケーションの実行状態（実行中のアプリケーション）を示す複数のパターン（パターン１〜パターンＸ）毎に蓄積される。なお、例えば、パターン１は、アプリケーション１７０ａのみが実行中である状態を示し、パターン２は、アプリケーション１７０ｂのみが実行中である状態を示し、パターン３は、アプリケーション１７０ａおよびアプリケーション１７０ｂが実行中である状態を示す。このようなアプリケーションの実行状態毎に、フラッシュメモリ書き込みログ１１１が蓄積される。
【００３８】
キャッシュアドレス情報１１２は、フラッシュメモリ１１０の論理アドレスのうち、フラッシュメモリ１１０を書き込み先とするデータを、フラッシュメモリ１１０ではなく、ＲＡＭ１２０に書き込むキャッシュ動作の対象となる論理アドレス（以下、キャッシュアドレスと称する）を示す情報である。キャッシュアドレス情報１１２は、パターン（パターン１〜パターンＸ）毎に記憶される。
【００３９】
ＲＡＭ１２０は、上述したような、ＣＰＵ１１がアプリケーションを実行する際に必要となるデータや、アプリケーションの実行に応じた画像を表示部に表示させるためのデータなどに加えて、フラッシュメモリ書き込みログ１２１、および、キャッシュデータ１２２を記憶する。
【００４０】
フラッシュメモリ書き込みログ１２１は、データが書込まれたフラッシュメモリ１１０の論理アドレスを示す情報が蓄積されたログである。なお、ＲＡＭ１２０は、フラッシュメモリ１１０と同様に、アプリケーションの実行状態を示すパターン毎に、フラッシュメモリ書き込みログ１２１を蓄積する。
【００４１】
キャッシュデータ１２２は、キャッシュ動作が行われることで、ＲＡＭ１２０に書き込まれたデータである。
【００４２】
信頼性管理モジュール１６０は、フラッシュメモリ１１０の論理アドレス毎のデータの書き込み頻度を監視し、その監視の結果に応じて、キャッシュアドレスを決定する。ここで、信頼性管理モジュール１６０は、アプリケーション管理モジュール１３０から取得した動作アプリケーション情報に示されるアプリケーションに対応するパターンにおけるフラッシュメモリ書き込みログ１１１を、メモリドライバ１５０を介して取得する。そして、信頼性管理モジュール１６０は、取得したフラッシュメモリ書き込みログ１１１に応じてキャッシュアドレスを決定する。また、信頼性管理モジュール１６０は、決定したキャッシャアドレスをメモリドライバ１５０に通知する。
【００４３】
次に、本実施形態の情報処理装置１０の動作について、記憶装置１００の動作を中心に説明する。
【００４４】
まず、情報処理装置１０の電源投入時の動作について説明する。
【００４５】
情報処理装置１０の電源が投入され、アプリケーション１７０ａを起動する旨が入力されたとする。
【００４６】
アプリケーション１７０ａを起動する旨が入力されると、アプリケーション管理モジュール１３０は、アプリケーション１７０ａを起動させる。なお、アプリケーション１７０ａの起動前には情報処理装置１０の電源が投入されておらず、アプリケーションが実行されていないため、フラッシュメモリ書き込みログは蓄積されていない。
【００４７】
次に、信頼性管理モジュール１６０は、メモリドライバ１５０に対して、ＲＡＭ１２０に蓄積されているフラッシュメモリ書き込みログ１２１の初期化を要求する。その要求に応じて、メモリドライバ１５０は、ＲＡＭ１２０に蓄積されているフラッシュメモリ書き込みログ１２１を初期化する。
【００４８】
次に、アプリケーションからフラッシュメモリ１１０へのデータの書き込みが要求された際の動作について、図３に示すフローチャート参照して説明する。なお、図３においては、キャッシュメモリは決定されていないものとする。
【００４９】
アプリケーションからフラッシュメモリ１１０へのデータの書き込みを要求する旨を示すアクセス要求が出力されると（ステップＳ３１）、アクセス管理部１４０は、アクセス要求において指定された論理アドレスへのデータの書き込み要求をメモリドライバ１５０に出力する（ステップＳ３２）。
【００５０】
メモリドライバ１５０は、アクセス管理部１４０から入力された書き込み要求において指定された論理アドレスへのデータの書き込みを行う（ステップＳ３３）。
【００５１】
次に、メモリドライバ１５０は、データを書き込んだ論理アドレスを示す情報をフラッシュメモリ書き込みログ１２１としてＲＡＭ１２０に蓄積する（ステップＳ３４）。このようにして、情報処理装置１００の電源投入後、フラッシュメモリ１１０にデータが書き込まれる毎に、フラッシュメモリ書き込みログ１２１が蓄積される。なお、情報処理装置１００の電源を切る旨が入力された場合には、ＲＡＭ１２０への電力供給を停止する前に、ＲＡＭ１２０に蓄積されたフラッシュメモリ書き込みログ１２１を、フラッシュメモリ１１０にフラッシュメモリ１１１として記憶させることで、情報処理装置１００の電源が切られた場合にも、フラッシュメモリ１１０の各論理アドレスへの書き込み頻度を保持しておくことができる。
【００５２】
次に、新たなアプリケーションの起動が要求された際の動作について、図４に示すフローチャートを参照して説明する。なお、以下では、アプリケーション１７０ａ，１７０ｂが実行されている状態において、新たにアプリケーション１７０ｎを起動させる旨の要求が入力されたものとする。
【００５３】
アプリケーション１７０ｎを起動させる旨の要求が入力されると、アプリケーション管理モジュール１３０は、アプリケーション１７０ｎを起動させる。また、アプリケーション管理モジュール１３０は、新たにアプリケーションを起動させた旨を信頼性管理モジュール１６０に通知する。
【００５４】
アプリケーション管理モジュール１３０からの通知を受けて、信頼性管理モジュール１６０は、アプリケーション１７０ｎの起動前に動作していたアプリケーションを示す動作アプリケーション情報の出力をアプリケーション管理モジュール１３０に要求する。また、信頼性管理モジュール１６０は、その要求に応じてアプリケーション管理モジュール１３０から出力された動作アプリケーション情報を取得する（ステップＳ４１）。
【００５５】
次に、信頼性管理モジュール１６０は、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１をフラッシュメモリ１１０に記憶させるようにメモリドライバ１５０に要求する。ここで、信頼性管理モジュール１６０は、動作アプリケーション情報に示されるアプリケーションに対応するパターンがフラッシュメモリ１１０上に存在する場合には、そのパターンにおけるフラッシュメモリ書き込みログ１２１を、そのパターンにおけるフラッシュメモリ書き込みログ１１１に追記するように要求する。
【００５６】
信頼性管理モジュール１６０からの要求に応じて、メモリドライバ１５０は、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１をフラッシュメモリ１１０に記憶させる（ステップＳ４２）。
【００５７】
次に、信頼性管理モジュール１６０は、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１の初期化をメモリドライバ１５０に要求する。その要求に応じて、メモリドライバ１５０は、フラッシュメモリ書き込みログ１２１を初期化する（ステップＳ４３）。なお、ここでの初期化とは、フラッシュメモリ１１０の各論理アドレスへの書き込み頻度を０に戻すことを意味する。ステップＳ４２において、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１がフラッシュメモリ１１０に記憶されたため、その時点までのフラッシュメモリ１１０の各論理アドレスへの書き込み頻度は、フラッシュメモリ１１０に記憶されたことになる。ここで、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１を初期化せずに、再び、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１がフラッシュメモリ１１０に記憶されてしまうと、ステップＳ４２までのフラッシュメモリ１１０の各論理アドレスへの書き込み頻度が、重複してフラッシュメモリ１１０に記憶されてしまうことになる。その結果、フラッシュメモリ１１０の各論理アドレスへの書き込み頻度を正確に把握できなくなってしまう。
【００５８】
そこで、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１をフラッシュメモリ１１０に記憶させた後、フラッシュメモリ書き込みログ１２１を初期化することで、フラッシュメモリ１１０の各論理アドレスへの書き込み頻度が、重複してフラッシュメモリ１１０に記憶されてしまうことがなくなり、フラッシュメモリ１１０の各論理アドレスへの書き込み頻度を正確に把握できるようになる。
【００５９】
次に、アプリケーションの終了が要求された際の動作について、図５に示すフローチャートを参照して説明する。なお、以下では、アプリケーション１７０ａ，１７０ｂが実行されている状態において、アプリケーション１７０ａを終了させる旨の要求が入力されたものとする。
【００６０】
アプリケーション１７０ａを終了させる旨の要求が入力されると、アプリケーション管理モジュール１３０は、アプリケーション１７０ａを終了させる。また、アプリケーション管理モジュール１３０は、アプリケーション１７０を終了させた旨を信頼性管理モジュール１６０に通知する。
【００６１】
アプリケーション管理モジュール１３０からの通知を受けて、信頼性管理モジュール１６０は、アプリケーションを終了させる前に動作していたアプリケーションを示す動作アプリケーション情報の出力をアプリケーション管理モジュール１３０に要求する。また、信頼性管理モジュール１６０は、その要求に応じてアプリケーション管理モジュール１３０から出力された動作アプリケーション情報を取得する（ステップＳ５１）。
【００６２】
次に、信頼性管理モジュール１６０は、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１をフラッシュメモリ１１０に記憶させるようにメモリドライバ１５０に要求する。ここで、信頼性管理モジュール１６０は、動作アプリケーション情報に示されるアプリケーションに対応するパターンがフラッシュメモリ１１０上に存在する場合には、そのパターンにおけるフラッシュメモリ書き込みログ１２１を、そのパターンにおけるフラッシュメモリ書き込みログ１１１に追記するように要求する。
【００６３】
信頼性管理モジュール１６０からの要求に応じて、メモリドライバ１５０は、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１をフラッシュメモリ１１０に記憶させる（ステップＳ５２）。
【００６４】
次に、信頼性管理モジュール１６０は、ＲＡＭ１２０に記憶されているフラッシュメモリ書き込みログ１２１の初期化をメモリドライバ１５０に要求する。その要求に応じて、メモリドライバ１５０は、フラッシュメモリ書き込みログ１２１を初期化する（ステップＳ５３）。なお、ここでの初期化を行う目的は、ステップＳ４３での初期化を行う目的と同様である。
【００６５】
次に、キャッシュ動作の要否を決定する際の動作について、図６に示すフローチャートを参照して説明する。
【００６６】
フラッシュメモリ１１０内部では、通常、データ書き換え回数（図２においては不図示）が保持されている。このデータ書き換え回数に基づいて、フラッシュメモリ１１０の寿命（データの正しい書き込み・消去が可能な回数の上限値に達するまでの期間）を予測することができる。
【００６７】
まず、信頼性管理モジュール１６０は、フラッシュメモリ１１０で保持されているデータ書き換え回数を、メモリドライバ１５０を介して取得する（ステップＳ６１）。
【００６８】
次に、信頼性管理モジュール１６０は、ＲＴＣ１２から現在時刻を取得し、情報処理装置１０の動作開示時刻からの経過時間を算出する（ステップＳ６２）。なお、信頼性管理モジュール１６０は、最初に情報処理装置１００の電源が投入された際に、ＲＴＣ１３から現在時刻データを取得しておき、その現在時刻データに示される時刻を情報処理装置１０の動作開示時刻として、経過時間を算出する。
【００６９】
次に、信頼性管理モジュール１６０は、ステップＳ６１で取得したデータ書き換え回数と、ステップＳ６２で算出した経過時間とに基づいてフラッシュメモリ１１０の単位時間当たりの書き換え回数を算出する。さらに、信頼性管理モジュール１６０は、所定の閾値（例えば、データの正しい書き込み・消去が可能な回数）と書き換え回数との差分を、算出した単位時間当たりの書き換え回数で除算することで、フラッシュメモリ１１０の寿命を予測する（ステップＳ６３）。
【００７０】
次に、信頼性管理モジュール１６０は、予測したフラッシュメモリ１１０の寿命が、現在時刻から予め設定された情報処理装置１０の耐用期限までの残存期間以上であるか否かを判定する（ステップＳ６４）。
【００７１】
フラッシュメモリ１１０の寿命が情報処理装置１０の耐用期限までの残存期間以上であると判定した場合には（ステップＳ６４：Ｙｅｓ）、信頼性管理モジュール１６０は、キャッシュ動作が不要であると判定し（ステップＳ６５）、処理を終了する。
【００７２】
フラッシュメモリ１１０の寿命が情報処理装置１０の耐用期限までの残存期間未満であると判定した場合には（ステップＳ６４：Ｎｏ）、信頼性管理モジュール１６０は、キャッシュ動作が必要であると判定する（ステップＳ６６）。この場合、信頼性管理モジュール１６０は、キャッシュ動作を行うようにメモリドライバ１５０に要求する。
【００７３】
なお、信頼性管理モジュール１６０は、上述したステップＳ６１からステップＳ６６までの処理を、例えば、所定の時間間隔で行う。
【００７４】
次に、キャッシュ動作が必要と判定された場合の、新たなアプリケーションの起動が要求された際の動作について、図７に示すフローチャートを参照して説明する。なお、図７においては、アプリケーション１７０ａ，１７０ｂが実行されている状態において、新たにアプリケーション１７０ｎを起動させる旨の要求が入力されたものとする。また、図７において、図４と同様の処理については同じ符号を付し、説明を省略する。
【００７５】
アプリケーション１７０ｎを起動させる旨の要求が入力されると、アプリケーション管理モジュール１３０は、アプリケーション１７０ｎを起動させ、新たにアプリケーションを起動させた旨を信頼性管理モジュール１６０に通知する。
【００７６】
アプリケーション管理モジュール１３０からの通知を受けて、信頼性管理モジュール１６０は、ＲＡＭ１２０に記憶されているキャッシュデータ１２２のフラッシュメモリ１１０への書き込みをメモリドライバ１５０に要求する（ステップＳ７１）。その要求に応じて、メモリドライバ１５０は、ＲＡＭ１２０に一時的に書き込まれていたキャッシュデータ１２２を、フラッシュメモリ１１０の本来の書込み先の論理アドレスに書き込む。
【００７７】
次に、信頼性管理モジュール１６０は、ステップＳ４１、ステップＳ４２の処理を行う。
【００７８】
次に、信頼性管理モジュール１６０は、動作中のアプリケーションを示す動作アプリケーション情報の出力をアプリケーション管理モジュール１３０に要求する。また、信頼性管理モジュール１６０は、その要求に応じてアプリケーション管理モジュール１３０から出力された動作アプリケーション情報を取得する（ステップＳ７２）。
【００７９】
次に、信頼性管理モジュール１６０は、フラッシュメモリ１１０に記憶されているフラッシュメモリ書き込みログ１１１を、メモリドライバ１５０を介して取得する。ここで、信頼性管理モジュール１６０は、ステップＳ７２で取得した動作アプリケーション情報に示されるアプリケーションに対応するパターンにおけるフラッシュメモリ書き込みログ１１１が記憶されている場合には、そのパターンにおけるフラッシュメモリ書き込みログ１１１を、メモリドライバ１５０を介して取得する（ステップＳ７３）。
【００８０】
信頼性管理モジュール１６０は、ステップＳ７３で取得したフラッシュメモリ書き込みログ１１１に基づいて書き込み頻度が高いフラッシュメモリ１１０の論理アドレスを特定し、その特定した論理アドレスをキャッシュアドレスとして決定する。
【００８１】
上述したように、フラッシュメモリ書き込みログは、データが書込まれた論理アドレスを示す情報が蓄積されたものである。したがって、フラッシュメモリ書き込みログから、図８に示すように、フラッシュメモリ１１０の各論理アドレスへの書き込み回数を得ることができる。なお、図８において、横軸はフラッシュメモリ１１０の論理アドレスを示し、縦軸は書き込み回数を示す。
【００８２】
信頼性管理モジュール１６０は、書き込み回数が所定の閾値Ｔ以上の論理アドレスを特定する。ここで、本実施形態においては、図８に示す領域Ａ１，Ａ２，Ａ３に含まれる論理アドレスの書き込み回数が閾値Ｔ以上であったとする。信頼性管理モジュール１６０は、領域Ａ１，Ａ２，Ａ３に含まれる論理アドレスをキャッシュアドレスとして決定する。
【００８３】
図７を再び参照すると、信頼性管理モジュール１６０は、キャッシュ動作を行う必要があると判定した旨とともに、決定したキャッシュアドレスをメモリドライバ１５０に通知する（ステップＳ７４）。メモリドライバ１５０は、通知されたキャッシュアドレスを示すキャッシュアドレス情報をフラッシュメモリ１１０に記憶させる。
【００８４】
次に、信頼性管理モジュール１６０は、ステップＳ４３の処理に進む。
【００８５】
上述したように、本実施形態においては、実行中のアプリケーションに応じてキャッシュメモリを決定している。
【００８６】
一般に、アプリケーションの実行状態に応じて頻繁にデータの読み書きが行われる論理アドレスが異なることが多い。そのため、アプリケーションの実行状態を示すパターン毎に、フラッシュメモリ書き込みログを蓄積し、そのフラッシュメモリ書き込みログに応じて、アプリケーションの実行状態に応じてキャッシュアドレスを決定することで、アプリケーションの実行状態に応じて、動的にキャッシュアドレスを変更することができる。
【００８７】
次に、キャッシュ動作が必要と判定された場合の、アプリケーションの終了が要求された際の動作について、図９に示すフローチャートを参照して説明する。なお、図９においては、アプリケーション１７０ａ，１７０ｂが実行されている状態において、アプリケーション１７０ａを終了させる旨の要求が入力されたものとする。また、図９において、図５と同様の処理については同じ符号を付し、説明を省略する。
【００８８】
アプリケーション１７０ａを起動させる旨の要求が入力されると、アプリケーション管理モジュール１３０は、アプリケーション１７０ａを終了させ、アプリケーションを終了させた旨を信頼性管理モジュール１６０に通知する。
【００８９】
アプリケーション管理モジュール１３０からの通知を受けて、信頼性管理モジュール１６０は、ＲＡＭ１２０に記憶されているキャッシュデータ１２２のフラッシュメモリ１１０への書き込みをメモリドライバ１５０に要求する（ステップＳ９１）。その要求に応じて、メモリドライバ１５０は、ＲＡＭ１２０に一時的に書き込まれていたキャッシュデータ１２２を、フラッシュメモリ１１０の本来の書込み先の論理アドレスに書き込む。
【００９０】
次に、信頼性管理モジュール１６０は、ステップＳ５１、ステップＳ５２の処理を行う。
【００９１】
次に、信頼性管理モジュール１６０は、動作中のアプリケーションを示す動作アプリケーション情報の出力をアプリケーション管理モジュール１３０に要求する。また、信頼性管理モジュール１６０は、その要求に応じてアプリケーション管理モジュール１３０から出力された動作アプリケーション情報を取得する（ステップＳ９２）。
【００９２】
次に、信頼性管理モジュール１６０は、フラッシュメモリ１１０に記憶されているフラッシュメモリ書き込みログ１１１を、メモリドライバ１５０を介して取得する。ここで、信頼性管理モジュール１６０は、ステップＳ９２で取得した動作アプリケーション情報に示されるアプリケーションに対応するパターンにおけるフラッシュメモリ書き込みログ１１１が記憶されている場合には、そのパターンにおけるフラッシュメモリ書き込みログ１１１を、メモリドライバ１５０を介して取得する（ステップＳ９３）。
【００９３】
信頼性管理モジュール１６０は、ステップＳ９３で取得したフラッシュメモリ書き込みログ１１１に基づいて書き込み頻度が高いフラッシュメモリ１１０の論理アドレスを特定し、その特定した論理アドレスをキャッシュアドレスとして決定する。
【００９４】
次に、信頼性管理モジュール１６０は、キャッシュ動作を行う必要があると判定した旨とともに、決定したキャッシュアドレスをメモリドライバ１５０に通知する（ステップＳ９４）。メモリドライバ１５０は、通知されたキャッシュアドレスを示すキャッシュアドレス情報をフラッシュメモリ１１０に記憶させる。
【００９５】
次に、信頼性管理モジュール１６０は、ステップＳ５３の処理に進む。
【００９６】
次に、キャッシュ動作が必要と判定された場合の、アプリケーションからフラッシュメモリ１１０へのデータの書き込みが要求された際の動作について、図１０に示すフローチャートを参照して説明する。
【００９７】
アプリケーションからフラッシュメモリ１１０へのデータの書き込みを要求する旨を示すアクセス要求が出力されると（ステップＳ１０１）、アクセス管理部１４０は、アクセス要求において指定された論理アドレスへのデータの書き込み要求をメモリドライバ１５０に出力する（ステップＳ１０２）。
【００９８】
メモリドライバ１５０は、信頼性管理ドライバ１６０からキャッシュ動作が必要であると判定された旨が通知されているため、キャッシュアドレス情報１１２をフラッシュメモリ１１０から取得する。また、メモリドライバ１５０は、アクセス管理部１４０から入力された書き込み要求において指定された論理アドレスが、取得したキャッシュアドレス情報１１２に示されるキャッシュアドレスであるか否かを判定する（ステップＳ１０３）。すなわち、メモリドライバ１５０は、キャッシュアドレスの中に、書き込み要求において指定された論理アドレスと一致するものがあるか否かを判定する。
【００９９】
データの書き込み要求において指定された論理アドレスがキャッシュアドレスでないと判定した場合には（ステップＳ１０３：Ｎｏ）、メモリドライバ１５０は、指定されたフラッシュメモリ１１０の論理アドレスにデータを書き込む（ステップＳ１０４）。
【０１００】
次に、メモリドライバ１５０は、データを書き込んだ論理アドレスを示す情報を、フラッシュメモリ書き込みログ１２１としてＲＡＭ１２０に蓄積する（ステップＳ１０５）。
【０１０１】
一方、データの書き込み要求において指定された論理アドレスがキャッシュアドレスであると判定した場合には（ステップＳ１０３：Ｎｏ）、メモリドライバ１５０は、ＲＡＭ１２０にキャッシュデータ１２２として書き込む（ステップＳ１０６）。
【０１０２】
なお、メモリドライバ１５０は、フラッシュメモリ１１０の同一の論理アドレスを指定した書き込み要求が複数回入力された場合には、書き込み要求が入力されるたびに、前回の書き込み要求に応じてＲＡＭ１２０に書き込んだデータを、今回の書き込み要求において要求されたデータに書き換える。
【０１０３】
こうすることで、キャッシュデータ１２２をフラッシュメモリ１１０に書き込む際には、最新のデータをフラッシュメモリ１１０に書き込むことができる。
【０１０４】
なお、メモリドライバ１５０は、フラッシュメモリ１１０の同一の論理アドレスを指定した書き込み要求が複数回入力された場合に、各書き込み要求に応じたデータをＲＡＭ１２０のそれぞれ異なるアドレスに書き込むとともに、書き込み要求において指定されたフラッシュメモリ１１０の論理アドレスと、データを書き込んだＲＡＭ１２０のアドレスとを対応付けて、ＲＡＭ１２０などに記憶させておき、キャッシュデータ１２２をフラッシュメモリ１１０に書き込む際には、最新のデータをフラッシュメモリ１１０に書き込むようにしてもよい。
【０１０５】
次に、キャッシュ動作が必要と判定された場合の、アプリケーションからフラッシュメモリ１１０に記憶されたデータの読み出しが要求された際の動作について、図１１に示すフローチャートを参照して説明する。
【０１０６】
アプリケーションからフラッシュメモリ１１０に記憶されているデータの読み出しを要求する旨を示すアクセス要求が出力されると（ステップＳ１１１）、アクセス管理部１４０は、そのアクセス要求において指定された論理アドレスからのデータの読み出し要求をメモリドライバ１５０に出力する（ステップＳ１１２）。
【０１０７】
メモリドライバ１５０は、信頼性管理ドライバ１６０からキャッシュ動作が必要であると判定された旨が通知されているため、キャッシュアドレス情報１１２をフラッシュメモリ１１０から取得する。また、メモリドライバ１５０は、アクセス管理部１４０から入力された読み出し要求において指定された論理アドレスが、取得したキャッシュアドレス情報１１２に示されるキャッシュアドレスであるか否かを判定する（ステップＳ１１３）。すなわち、メモリドライバ１５０は、キャッシュアドレスの中に、読み出し要求において指定された論理アドレスと一致するものがあるか否かを判定する。
【０１０８】
読み出し要求において指定された論理アドレスがキャッシュアドレスでないと判定した場合には（ステップＳ１１３：Ｎｏ）、メモリドライバ１５０は、指定されたフラッシュメモリ１１０の論理アドレスからデータを読み出す（ステップＳ１１４）。
【０１０９】
一方、読み出し要求において指定された論理アドレスがキャッシュアドレスであると判定した場合には（ステップＳ１１３：Ｙｅｓ）、メモリドライバ１５０は、指定されたフラッシュメモリ１１０の論理アドレスに対応付けられたＲＡＭ１２０のアドレスからデータを読み出す（ステップＳ１１５）。
【０１１０】
アクセス管理部１４０は、メモリドライバ１５０が読み出したデータをアクセス要求の出力元のアプリケーション（アプリケーション１７０ａ）に出力する。
【０１１１】
このように、本実施形態によれば、記憶装置１００は、記憶手段としてフラッシュメモリ１１０およびＲＡＭ１２０を有し、フラッシュメモリ１１０の論理アドレス毎の書き込み頻度に応じて、フラッシュメモリ１１０のアドレスからキャッシュアドレスを決定する。また、記憶装置１００は、フラッシュメモリ１１０のアドレスを指定したデータの書き込み要求が入力されると、指定されたアドレスがキャッシュアドレスであるか否かを判定し、指定されたアドレスがキャッシュアドレスであると判定した場合には、データをＲＡＭ１２０に書き込む。
【０１１２】
フラッシュメモリ１１０を書き込み先とするデータをＲＡＭ１２０に書き込む（退避させる）ことで、フラッシュメモリ１１０へのデータの書き込み回数を減らすことができるので、フラッシュメモリ１１０の長寿命化を図ることができる。
【０１１３】
なお、本実施形態においては、データの正しい書き込み・消去が可能な回数が限られる記憶手段がフラッシュメモリである例を用いて説明したが、これに限られるものではない。データの正しい書き込み・消去が可能な回数が限られる記憶手段としては、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などがある。
【０１１４】
また、本実施形態においては、フラッシュメモリ１１０を書き込み先とするデータを退避させるための記憶手段（キャッシュ側の記憶手段）として、揮発性メモリであるＲＡＭを用いる例を用いて説明したが、これに限られるものではない。キャッシュ側の記憶手段としては、フラッシュメモリやＥＥＰＲＯＭなどと比べて、データの正しい書き込み・消去が可能な回数の制限が問題とならない記憶手段、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気抵抗メモリ（ＭＲＡＭ：Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、抵抗変化型メモリ（ＲｅＲＡＭ：Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、強誘電体メモリ（ＦｅＲＡＭ：Ｆｅｒｒｏｅｌｅｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスクなど、種々の記憶手段を用いることができる。
【０１１５】
また、本実施形態においては、新たなアプリケーションの起動時、あるいは、アプリケーションの終了時にキャッシュデータをフラッシュメモリ１１０に書き込む例を用いて説明したが、これに限られるものではない。例えば、キャッシュ動作の開始後、所定時間ごとに、キャッシュデータをフラッシュメモリ１１０に書き込むようにしてもよい。
【０１１６】
また、本実施形態においては、予測したフラッシュメモリ１１０の寿命が、情報処理装置１０の耐用期限までの残存期間未満である場合にキャッシュ動作を行う例を用いて説明したが、これに限られるものではない。例えば、書き込み頻度に応じたキャッシュアドレスを決定する処理を記憶装置１００の起動開示時から行うようにしてもよい。
【０１１７】
なお、書き込み頻度が高いフラッシュメモリ１３０の論理アドレスは予測することができる。例えば、頻繁に書き換えられるデータ（ファイル）が書込まれる論理アドレスの書き込み頻度（書き込み回数）は高くなると考えられる。したがって、フラッシュメモリ書き込みログを用いなくても、書き込み頻度が高い論理アドレスを予測し、キャッシュメモリとして決定することが可能である。このような動作を行う情報処理装置１０Ａの構成を、図１０に示す機能ブロック図を参照して説明する。なお、図１０において、図２と同様の構成については同じ符号を付し、説明を省略する。
【０１１８】
図１０に示す情報処理装置１０Ａは、図２に示す情報処理装置１０比較して、アクセス管理部１４０をアクセス管理部２２０に変更した点と、メモリドライバ１５０をメモリドライバ２２０に変更した点と、信頼性管理モジュール１６０を信頼性管理モジュール２３０に変更した点とが異なる。また、情報処理装置１０Ａにおいては、情報処理装置１０と比較して、フラッシュメモリ１１０が、フラッシィメモリ書き込みログ１１１およびキャッシュアドレス情報１１２を記憶していない点と、ＲＡＭ１２０が、フラッシュメモリ書き込みログ１２１およびキャッシュデータ１２２を記憶しておらず、ファイルデータ１２３およびファイル書き込みログ１２４を記憶している点と、が異なる。なお、図１０においては、図２においては記載を省略した通信ユニット１３も記載している。
【０１１９】
ファイルデータ１２３は、アプリケーションがアクセスするファイルであり、本来、フラッシュメモリ１１０に記憶されるデータであるが、キャッシュ動作のために、ＲＡＭ１２０に書き込まれたファイルである。ファイルデータ１２３は、図２におけるキャッシュデータに相当する。
【０１２０】
ファイル書き込みログ１２４は、アプリケーションがアクセスしたファイルを示す情報が蓄積されたログである。ファイル書き込みログ１２４は、アプリケーション毎に蓄積される。
【０１２１】
アクセス管理部２１０は、アプリケーションからファイルの書き込み要求する旨を示すアクセス要求が出力されると、ＲＡＭ１２０に記憶されている、そのアプリケーションに対応するファイル書き込みログ１２４に書込みが要求されたファイルを示す情報を蓄積する。
【０１２２】
また、アクセス管理部２１０は、アクセス要求において指定されたファイルの書き込み要求をメモリドライバ２２０に出力する。
【０１２３】
メモリドライバ２２０は、ファイルの書き込み要求がアクセス管理部２１０から出力されると、そのファイルがキャッシュ動作の対象であるか否かを判定する。また、メモリドライバ２２０は、書き込みが要求されたファイルがキャッシュ動作の対象でないと判定した場合には、そのファイルをフラッシュメモリ１１０に書き込む。一方、メモリドライバ２２０は、書き込みが要求されたファイルがキャッシュ動作の対象でないと判定した場合には、そのファイルをファイルデータ１２３としてＲＡＭ１２０に書き込む。
【０１２４】
信頼性管理モジュール２３０は、ＲＡＭ１２０に記憶されているファイル書き込みログ１２４を、アクセス管理部２３０を介して取得し、取得したファイル書き込みログ１２４に基づいて、キャッシュ動作の対象とするファイルを決定する。ここで、信頼性管理モジュール２３０は、書き込み頻度が高いファイルをキャッシュ動作の対象として決定する。また、信頼性管理モジュール２３０は、キャッシュ動作の対象として決定したファイルをメモリドライバ２２０に通知し、キャッシュ動作を行わせる。
【０１２５】
なお、ファイル書き込みログ１２４に基づいてキャッシュ動作の対象とするファイルを信頼性管理モジュール２３０が決定する例を用いて説明したが、これに限られるものではない。
【０１２６】
例えば、情報処理装置１０Ａの外部で、アプリケーション毎にファイルへのアクセスを解析して書き込み頻度が高いファイルを特定し、その特定したファイルを示す情報を、通信ユニット１３を介して、信頼性管理モジュール２３０に送信するようにしてもよい。この場合、信頼性管理モジュール２３０は、通信ユニット１３を介して送信されてきた情報に示されるファイルをキャッシュ動作の対象として決定する。
【０１２７】
（第２の実施形態）
図１３は、本発明の第２の実施形態の記憶装置３００の構成を示すブロック図である。
【０１２８】
図１３に示す記憶装置３００は、第１のメモリ３１０と、第２のメモリ３２０と、入出力部３３０と、制御部３４０と、を有する。
【０１２９】
第１のメモリ３１０は、記憶装置３００が組み込まれた情報処理装置が有するＣＰＵが実行する各種制御用プログラムや固定データなどを記憶する。
【０１３０】
なお、第１のメモリ３１０の具体例としては、フラッシュメモリ、ＥＥＰＲＯＭなどがある。これらのメモリでは、一般に、データの正しい書き込み・消去が可能な回数が限られている。
【０１３１】
第２のメモリ３２０は、記憶装置３００が組み込まれた情報処理装置が有するＣＰＵがアプリケーションを実行する際に必要となるデータや、アプリケーションの実行に応じた画像を情報処理装置が有する表示部に表示させるためのデータなどを記憶する。また、第２のメモリ３２０は、ワークメモリとしても使用される。
【０１３２】
なお、第２のメモリ３２０の具体例としては、ＤＲＡＭ、ＳＲＡＭ、磁気抵抗メモリ、抵抗変化型メモリ、強誘電体メモリ、磁気ディスクなどがある。これらのメモリでは、一般に、フラッシュメモリやＥＥＰＲＯＭと比べて、データの正しい書き込み・消去が可能な回数の制限が問題とならない。
【０１３３】
入出力部３３０は、第１のメモリ３１０あるいは第２のメモリ３２０へのデータの書き込みや読み出しを行う。
【０１３４】
制御部３４０は、第１のメモリ３１０のアドレス毎のデータの書き込み頻度を監視し、監視の結果に応じて、第１のメモリ３１０のアドレスのうち、キャッシュ動作の対象となるアドレスであるキャッシュアドレスを決定する。
【０１３５】
なお、入出力部３３０は、第１のメモリ３１０へのデータの書き込みを行うごとに、データの書き込みを行った第１のメモリ３１０の論理アドレスを示す情報を、例えば、第２のメモリ３２０に蓄積させている。制御部３４０は、この蓄積された情報を入出力部３３０を介して取得することで、第１のメモリ３１０のアドレス毎のデータの書き込み頻度を監視することができる。
【０１３６】
次に、本実施形態の記憶装置２００の動作について説明する。
【０１３７】
まず、制御部３４０は、第１のメモリ３１０のアドレス毎のデータの書き込み頻度の監視結果に応じて、第１のメモリ３１０のアドレスのうち、キャッシュ動作の対象となるアドレスであるキャッシュアドレスを決定する。なお、制御部３４０は、例えば、書き込み頻度が所定の閾値以上である論理アドレスをキャッシュアドレスとして決定する。
【０１３８】
入出力部３３０は、制御部３４０がキャッシュアドレスを決定した後に、第１のメモリの論理アドレスを指定したデータの書き込み要求が入力されると、その指定された論理アドレスがキャッシュアドレスであるか否かを判定する。
【０１３９】
データの書き込み要求において指定された論理アドレスがキャッシュアドレスであると判定した場合には、入出力部３３０は、そのデータを第２のメモリ３２０に書き込む。一方、データの書き込み要求において指定された論理アドレスがキャッシュアドレスでないと判定した場合には、入出力部３３０は、そのデータを第１のメモリ３１０の指定されたアドレスに書き込む。
【０１４０】
このように、本実施形態によれば、記憶装置２００は、記憶手段として第１のメモリ３１０および第２のメモリ３２０を有し、第１のメモリ３１０のアドレス毎の書き込み頻度に応じて、第１のメモリ３１０のアドレスからキャッシュアドレスを決定する。また、記憶装置２００は、第１のメモリ３１０のアドレスを指定したデータの書き込み要求が入力されると、指定されたアドレスがキャッシュアドレスであるか否かを判定し、指定されたアドレスがキャッシュアドレスであると判定した場合には、データを第２のメモリ３２０に書き込む。
【０１４１】
第１のメモリ３１０を書き込み先とするデータを第２のメモリ３２０に書き込む（退避させる）ことで、第１のメモリ３１０へのデータの書き込み回数を減らすことができるので、第１のメモリ３１０の長寿命化を図ることができる。
【０１４２】
本発明に係る記憶装置にて行われる方法は、コンピュータに実行させるためのプログラムに適用してもよい。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。
【符号の説明】
【０１４３】
１０，１０Ａ    情報処理装置
１１    ＣＰＵ
１２    ＲＴＣ
１３    通信ユニット
１４    バス
１００，３００    記憶装置
１１０    フラッシュメモリ
１２０    ＲＡＭ
１３０    アプリケーション管理モジュール
１４，２１００    アクセス管理部
１５０，２２０    メモリドライバ
１６０，２３０    信頼性管理モジュール
３１０    第１のメモリ
３２０    第２のメモリ
３３０    入出力部
３４０    制御部
【図１】
2014203381.tif 000003
【図２】
2014203381.tif 000004
【図３】
2014203381.tif 000005
【図４】
2014203381.tif 000006
【図５】
2014203381.tif 000007
【図６】
2014203381.tif 000008
【図７】
2014203381.tif 000009
【図８】
2014203381.tif 000010
【図９】
2014203381.tif 000011
【図１０】
2014203381.tif 000012
【図１１】
2014203381.tif 000013
【図１２】
2014203381.tif 000014
【図１３】
2014203381.tif 000015