(57)【要約】【課題】不揮発性メモリに書き込むデータを取捨選択することにより、書き換え回数の不要な増加を防止し、不揮発性メモリの寿命を維持しながら、利用効率を向上させることができるメモリ管理装置を提供する。【解決手段】キャッシュメモリ５に保存されたファイルの中から、バッファメモリ４にデータを有するファイルについて、現時点から過去の一定期間にキャッシュヒットしたことにより削減された通信量、キャッシュミスしたことによって発生した通信量を算出し、その合計である通信合計量Ｇｔｏｔａｌとしきい値Ｓとを比較することにより、キャッシュとして利用された頻度が少ないファイルの有無を判定する。そして、利用可能性が低いファイルの一部であるデータをバッファメモリ４から破棄し、利用可能性が高いファイルの一部であるデータをキャッシュメモリ５に保存する。また、書き換え回数の増加量に対する通信削減量の割合が大きいファイルのデータを優先して保存する。【選択図】図２
2011090474.tif 000002
【特許請求の範囲】
【請求項１】
外部との通信を行うインターフェースと、
該インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、
前記バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、
該キャッシュメモリおよび前記バッファメモリに対する前記データの書き込み動作を制御する制御部とを有し、
前記制御部は、前記バッファデータがキャッシュとして有効利用される可能性を判定し、有効利用される可能性が低いと判定した前記バッファデータを破棄するよう制御するメモリ管理装置。
【請求項２】
前記制御部は、前記バッファデータがキャッシュとして有効利用される可能性を判定し、有効利用される可能性が高いと判定した前記バッファデータを前記キャッシュメモリに書き込むよう制御する請求項１に記載のメモリ管理装置。
【請求項３】
前記制御部は、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在し、キャッシュヒットしたことにより削減された前記インターフェースを介した通信量をしきい値と比較し、前記削減された通信量が前記しきい値よりも少ない場合に前記バッファデータは有効利用される可能性が低いと判定する請求項１に記載のメモリ管理装置。
【請求項４】
前記制御部は、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在せず、キャッシュミスしたことにより発生した前記インターフェースを介した通信量をしきい値と比較し、前記発生した通信量が前記しきい値よりも少ない場合に前記バッファデータは有効利用される可能性が低いと判定する請求項１に記載のメモリ管理装置。
【請求項５】
前記制御部は、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在し、キャッシュヒットしたことにより削減された前記インターフェースを介した通信量と、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在せず、キャッシュミスしたことにより発生した前記インターフェースを介した通信量との合計をしきい値と比較し、前記合計が前記しきい値よりも少ない場合に前記バッファデータは有効利用される可能性が低いと判定する請求項１に記載のメモリ管理装置。
【請求項６】
前記制御部は、有効利用される可能性が高いと判定された前記バッファデータが属するキャッシュファイルが複数存在する場合に、該複数のキャッシュファイルそれぞれについて、キャッシュファイルの更新に伴い行われた前記キャッシュメモリの書き換えの回数を測定し、さらに、キャッシュファイルに前記アプリケーションから要求されたデータが存在してキャッシュヒットしたことにより削減された前記インターフェースを介した通信量を推定し、前記書き換えの回数に対する前記削減された通信量の割合が大きい前記キャッシュファイルに属する前記バッファデータを優先して前記キャッシュメモリに書き込むよう制御する請求項２に記載のメモリ管理装置。
【請求項７】
前記制御部は、現時点において前記キャッシュメモリが許容できる書き換え回数を算出し、該書き換え回数を超えない限度において、有効利用される可能性が高いと判定した前記バッファデータを前記キャッシュメモリに書き込むよう制御する請求項２に記載のメモリ管理装置。
【請求項８】
外部との通信を行うインターフェースと、
該インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、
前記バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、
該キャッシュメモリおよび前記バッファメモリに対する前記データの書き込み動作を制御する制御部とを有し、
前記制御部は、前記アプリケーションが現時点から遡った一定期間にインストールされたものである場合、前記アプリケーションがキャッシュとして利用する前記キャッシュファイルに属する前記バッファデータを優先して前記キャッシュメモリに書き込むよう制御するメモリ管理装置。
【請求項９】
外部との通信を行うインターフェースと、
該インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、
前記バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、
該キャッシュメモリおよび前記バッファメモリに対する前記データの書き込み動作を制御する制御部とを有するメモリ管理装置におけるメモリ管理方法であって、
前記制御部は、前記揮発性メモリに保存された前記データがキャッシュとして有効利用される可能性を判定し、可能性が低いと判定した前記データを破棄するよう制御するメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、フラッシュメモリ等の不揮発性メモリなどにより構成されるメモリ管理装置およびメモリ管理方法に関し、特に、不揮発性メモリを効率的に利用することにより、不揮発性メモリの寿命を維持するメモリ管理装置およびメモリ管理方法に関する。
【背景技術】
【０００２】
現在、一般家庭で用いられるＡＶ（Audio Visual）機器、家電製品などに搭載または着脱可能に設けられている半導体記憶装置の一つとして、電気的に書き換えが可能であるフラッシュメモリなどの不揮発性メモリが普及している。そして、近年、一般家庭で用いられるＡＶ機器、家電製品などで利用されるアプリケーションにおいてもインターネットへの接続を前提とするものが増えてきており、それに伴い、それら機器において用いられているフラッシュメモリの利用状況も変化しつつある。
【０００３】
アプリケーションによっては、インターネット上のサーバにアクセスして必要なデータを取得し、それらのデータを機器内のフラッシュメモリにキャッシュとして保存するように要求するものがある。一般に、インターネットから取得するデータの量や更新頻度は、ユーザの使い方やサーバ側の運用仕様に依存するため、アプリケーションから保存要求がなされたデータの全てをフラッシュメモリに直接書き込んだ場合、書き換え回数が大幅に増加することとなる。
【０００４】
フラッシュメモリ上のデータの更新を行う場合、更新するデータが属するブロック内の全データを一旦消去する。そして、更新後のデータが消去済みのブロックに書き込まれる。しかし、フラッシュメモリには寿命が存在する。フラッシュメモリ、特にＮＡＮＤ型フラッシュメモリの寿命は、ブロック毎の消去回数であり、少ないもので数百回程度しか消去／書き込みを行うことができない。また、消去／書き込みが特定のブロックに集中しないようにウェアレベリングを行うように構成されたものでもやはり消去回数には制限があり、多いものでも数万回程度の消去／書き込みで寿命が尽きてしまう。そのため、頻繁にデ−タの書き換えを行い、書き換え回数が増加すると、不揮発性メモリの寿命はすぐに尽きてしまい、データの正常な保存を行うことができなくなる。
【０００５】
したがって、書き換え回数を制限するための適切な制御が必要となる。通常は、機器の使用期間中にフラッシュメモリの寿命が尽きて機能不全に陥ることを防ぐため、フラッシュメモリの書き換え回数が一定量を超えないように機器にインストールするアプリケーションを設計する、ということが行われている。
【０００６】
ところで、近年、アプリケーションプログラム自体をネットワークサービスから機器等にダウンロードし、機器上でそのアプリケーションを起動させることにより、機器を様々な用途に用いることができるウィジェットと呼ばれるサービスが普及してきている。
【０００７】
ウィジェットとは、近年、提唱されて普及し始めているパーソナルコンピュータ等におけるアプリケーションやパーソナルコンピュータのデスクトップ上で動作する小規模なプログラムである。ウィジェットは、ガジェット、アクセサリーソフトとも称されている。ウィジェットは、特定のランタイム環境で実行されるものであり、カレンダー、時計、電卓、辞書、検索窓等の機能を持つものが知られている。また、天気予報やニュースの見出しをディスプレイに表示したり、インターネットからユーザが欲しい情報のみを取得して表示させる等の機能を有するものもある。
【０００８】
また、ウィジェットをデジタルテレビ受信機に直接ダウンロードすることにより、テレビジョン放送を見ながら同時に電卓等の機能を利用したり、インターネット上のコンテンツを利用することができるアプリキャスト（登録商標）と称されるサービスも行われている。
【０００９】
それらウィジェットやアプリキャストは開発ツールが公開されている。したがって、アプリケーションをパーソナルコンピュータやテレビジョン受像機などのメーカーとは異なる事業者や一般ユーザが開発することが可能である。また、複数の異なる機種やプラットフォーム上で動作するのが一般的である。そのため、通常、そのようなアプリケーションの設計では、そのアプリケーションが動作するハードウェアシステムの詳細仕様に依存する制約を直接に配慮することはできない。
【００１０】
従って、アプリケーションが機器に搭載されたフラッシュメモリに対してキャッシュとして用いるデータの書き換えを無制限に要求してきた場合、書き換えが短期間の間に大量に行われ、フラッシュメモリの寿命はすぐに尽きてしまうという問題がある。そのため、仮にアプリケーションがフラッシュメモリに対するデータの書き換えを無制限に要求してきたとしても、プラットフォーム側で適切に制御してフラッシュメモリの寿命を維持する必要がある。
【００１１】
フラッシュメモリの書き換え量を軽減して寿命を維持する技術としては、実質的に寿命制約のないメモリデバイス(ＤＲＡＭ等の揮発性メモリ)をいわゆるWriteBackバッファとして利用することにより、書き換え量を減らす電子機器が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−１６５４４６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかし、上述のような、インターネットから取得したデータをキャッシュとして保存する用途に限って言えば、結果的に有効利用されないデータも常に書き込まれ、その分だけ書き換え回数が増え、フラッシュメモリの寿命が無駄に消費されることになる。また、特許文献１のような方法による効果はあくまでも寿命の延長が期待できるだけであり、必要な期間中に寿命を確実に維持できる保証はない。キャッシュとして保存するデータが、必要であれば常時インターネットから取得できる場合は、フラッシュメモリへの保存はアプリケーションが機能するために必要不可欠ではないので、フラッシュメモリの寿命維持を優先してシステムの破綻を防止する方が望ましい。
【００１４】
したがって、この発明の目的は、不揮発性メモリに書き込むデータを取捨選択することにより、書き換え回数が不要に増加することを防止し、不揮発性メモリの寿命を維持することができるメモリ管理装置およびメモリ管理方法を提供することにある。
【課題を解決するための手段】
【００１５】
上述した課題を解決するために、第１の発明は、外部との通信を行うインターフェースと、インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、キャッシュメモリおよびバッファメモリに対するデータの書き込み動作を制御する制御部とを有し、制御部は、バッファデータがキャッシュとして有効利用される可能性を判定し、可能性が低いと判定したバッファデータを破棄するよう制御するメモリ管理装置である。
【００１６】
また、第２の発明は、外部との通信を行うインターフェースと、インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、キャッシュメモリおよびバッファメモリに対するデータの書き込み動作を制御する制御部とを有するメモリ管理装置におけるメモリ管理方法であって、制御部は、揮発性メモリに保存されたデータがキャッシュとして有効利用される可能性を判定し、可能性が低いと判定したデータを破棄するよう制御するメモリ管理方法である。
【発明の効果】
【００１７】
この発明によれば、キャッシュとして有効利用される可能性が高いデータを優先して不揮発メモリに保存し、また、有効利用される見込みが低いデータを保存せずに破棄することにより、不揮発性メモリを効率よく利用し、その寿命を延長することができる。また、不揮発性メモリの寿命を超える書き換えを制限することにより、一定期間は不揮発性メモリの寿命が尽きないことを保証することができる。
【図面の簡単な説明】
【００１８】
【図１】この発明に係るメモリ管理装置の概略的構成を示すブロック図である。
【図２】制御部が実行する処理を示すフローチャートである。
【図３】制御部が実行する処理を示すフローチャートである。
【図４】バッファメモリおよびキャッシュメモリにおいてデータの破棄および書き込みがなされる態様を示す図である。
【図５】バッファメモリおよびキャッシュメモリにおいてデータの破棄および書き込みがなされる態様を示す図である。
【発明を実施するための形態】
【００１９】
［メモリ管理装置の構成］
以下、この発明の実施の形態について、メモリ管理装置がパーソナルコンピュータ（図示せず。）の一部として構成され、そのパーソナルコンピュータでウィジェット等のアプリケーションを動作させる場合を例にして説明する。なお、以下に説明する実施の形態は、この発明の好適な具体例であり、技術的に好ましい種々の限定が付されているが、この発明の範囲は、以下の説明における実施の形態に限定されないものとする。
【００２０】
図１に示すように、メモリ管理装置１は、制御部２、インターフェース３、バッファメモリ４、キャッシュメモリ５および履歴保存用メモリ６とから構成され、それらはバス７により接続されている。
【００２１】
制御部２は、例えば、ＣＰＵ（Central Processing Unit）などにより構成されるマイクロコンピュータであり、フラッシュメモリに予め記録されているプログラムに従い、メモリ管理装置１の各部を制御するものである。また、ユーザが起動したアプリケーションも実行する。インターフェース３は、例えば、インターネットに接続可能なＬＡＮ（Local Area Network）ポートである。本実施の形態では、メモリ管理装置１はインターフェース３を介してインターネットに接続してあり、インターネットを経由してデータのダウンロードを行うことができるものとする。
【００２２】
バッファメモリ４は、インターフェース３を介してインターネットからダウンロードしたデータをキャッシュメモリ５に書き込む前に一時的に保存するためのものである。バッファメモリ４は揮発性メモリ、例えば、ＤＲＡＭ（Dynamic Random Access Memory）で構成される。
【００２３】
キャッシュメモリ５は、インターフェース３を介してインターネットからダウンロードしたデータをキャッシュとして保存するためのものである。キャッシュメモリ５は、例えば不揮発性メモリであるＮＡＮＤ型フラッシュメモリで構成される。なお、本実施の形態においては、バッファメモリ４の容量は、キャッシュメモリ５に保存可能な全データの合計サイズよりも小さいものとする。
【００２４】
ウィジェット等のアプリケーションには、動作に用いるデータをインターネット上からダウンロードして取得し、そのダウンロードしたデータをキャッシュメモリ５にキャッシュとして保存することを要求するものがある。使用頻度の高いデータをキャッシュとして保存しておくことにより、それ以降、そのデータを用いる場合はキャッシュメモリ５からを読み込む（キャッシュヒット）ことにより、その都度そのデータをインターネットにアクセスしてダウンロードする必要がなくなる。これにより、アプリケーションの動作の高速化を図ることができる。逆に、使用頻度の高いデータがキャッシュメモリ５にキャッシュとして保存されていない場合は、そのデータをキャッシュメモリ５から読み込むことができず（キャッシュミス）、そのデータをインターネットにアクセスして取得することになる。これにより、アプリケーションの動作が滞ることとなる。
【００２５】
履歴保存用メモリ６は、後述する通信削減量Ｇｈｉｔ、通信発生量Ｇｍｉｓｓ、不揮発性メモリの直近書き換え回数ΔＷを履歴として保存するためのものである。なお、履歴保存用メモリ６は独立した記録媒体として設けてもよいし、上述のプログラムを記録したフラッシュメモリの一部の領域を利用してもよい。
【００２６】
［メモリ管理装置の動作］
次に、図２乃至図５を参照して、メモリ管理装置１が行う処理について説明する。図４Ａに示すようにキャッシュメモリ５には、キャッシュファイルであるファイルＡ、ファイルＢ、ファイルＣおよびファイルＤが保存されている。eｍｐｔｙはキャッシュメモリ５の空き容量を表す。なお、本実施の形態ではキャッシュメモリ５に保存されているファイルの数は４つとして説明を行うが、ファイルの数は４つに限られるものではない。また、ファイルとは、所謂ファイルシステムのファイルである必要はなく、キャッシュメモリに保存されたデータをグルーピングして管理するためのデータ構造である。
【００２７】
バッファメモリ４には、バッファデータとしてデータａ１、データｂ１およびデータｃ１が保存されている。データａ１はファイルＡの一部としてファイルＡに属し、データｂ１はファイルＢの一部としてファイルＢに属し、データｃ１はファイルＣの一部としてファイルＣに属するものである。データａ１、データｂ１およびデータｃ１は、インターネットからダウンロードされ、アプリケーションによりキャッシュメモリ５へ書き込むことを要求されたデータであり、キャッシュメモリ５へ書き込まれる前に一時的にバッファメモリ４に保存されている。ｅｍｐｔｙはバッファメモリ４の空き容量を表す。
【００２８】
データａ２は、インターネットからダウンロードされ、新たにアプリケーションからキャッシュメモリ５への書き込み要求がなされたデータであり、ファイルＡの一部としてファイルＡに属するものである。図４Ａに示すようにデータａ２はまだバッファメモリ４には保存されていない。なお、それらデータはそれぞれ、メモリ空間の連続領域に配置される１つのブロックであるように記載されているが、複数のメモリ領域に分割して格納されているものであってもよい。
【００２９】
インターネットからダウンロードされ、アプリケーションからキャッシュメモリ５への書き込み要求がなされたデータａ２は通常、一時的にバッファメモリ４に保存され、その後キャッシュメモリ５に書き込まれる。しかし、図４Ａに示すように、データａ２よりもバッファメモリ４の空き容量の方が小さいため、このままの状態ではデータａ２をバッファメモリ４に保存することができない。そこで、この発明に係るメモリ管理装置１では図２および図３に示す処理を行う。
【００３０】
ステップＳ１で、バッファメモリ４にデータを有するファイルについて、現時点から過去の一定期間（以下、直近期間ｔと称する。）にアプリケーションがそのファイルに属するデータをキャッシュとして利用したことにより削減された通信量を見積もる。アプリケーションがキャッシュとして利用しようとしているデータがキャッシュメモリ５に存在しない場合、アプリケーションはインターフェース３を介してインターネットにアクセスして必要なデータを取得するため、それにより通信量が増加する。しかし、キャッシュヒットし、アプリケーションがキャッシュメモリ５のファイルに属するデータをキャッシュとして利用した場合、アプリケーションはインターネットにアクセスしてデータを取得する必要がないため、これにより通信量が削減されたと考えるものである。以下、削減された通信量を通信削減量Ｇｈｉｔと称する。
【００３１】
なお、キャッシュヒットした場合は上述のようにインターネットにアクセスする必要がないため、通信は行われない。したがって、行われていない通信の量を通信削減量Ｇｈｉｔとして見積もるのが困難である場合は、アプリケーションがキャッシュメモリ５に保存されたファイルからキャッシュとして読み込んだデータの合計サイズを通信削減量Ｇｈｉｔの近似値として用いても良い。すなわち、キャッシュメモリ５から読み込んだデータの量はキャッシュミスした場合にアプリケーションがインターネットにアクセスし取得する必要が生じるデータの量と同一であるため、その量を通信削減量Ｇｈｉｔとするものである。
【００３２】
ここで、バッファメモリ４にデータを有するファイルとは、ファイルに属するデータがバッファメモリ４に保存されているファイルを意味し、本実施の形態ではデータａ１、データｂ１、データｃ１がバッファメモリ４に保存されているため、ファイルＡ、ファイルＢ、ファイルＣがそれに当たる。
【００３３】
また、ステップＳ１では、バッファメモリ４にデータを有する各ファイルについて、直近期間ｔにアプリケーションが要求するデータがそのファイルに含まれておらずキャッシュミスしたことによって発生した通信量を計測する。以下、そのキャッシュミスにより発生した通信量を通信発生量Ｇｍｉｓｓと称する。アプリケーションがキャッシュとして利用しようとするデータがキャッシュメモリ５に存在しない場合、アプリケーションはインターネットにアクセスして必要なデータを取得するため、これにより発生した通信量を測定する。通信発生量Ｇｍｉｓｓは、実際に行われた通信に関するものであるため、インターフェース３を介して受信したデータ量を測定することにより取得することができる。
【００３４】
さらに、ステップＳ１では、バッファメモリ４にデータを持つ各ファイルについて、直近期間ｔにそのファイルを更新するために行ったキャッシュメモリ５の書き換えの回数（以下、直近書き換え回数ΔＷと称する）を計測する。なお、本発明は、直近書き換え回数ΔＷを単純に、キャッシュメモリ５として用いられているＮＡＮＤ型フラッシュメモリの直近期間ｔにおけるブロック消去回数の合計値で算出することを想定している。直近書き換え回数ΔＷは、ファイルの一部であるデータの更新に伴って行われた全ての書き換えを対象とするものである。すなわち、インターネットからデータをダウンロードしてキャッシュメモリ５内のファイルを更新する場合に限られるものではない。例えば、メモリ管理装置１が搭載された機器の終了処理においてもバッファメモリ４に保存されたデータがキャッシュメモリ５に保存される場合があり、そのような書き換えも直近書き換え回数ΔＷに含むものとする。
【００３５】
本実施の形態では、図４Ａに示すように、バッファメモリ４にはデータａ１、データｂ１およびデータｃ１が保存されているため、ステップＳ１の処理はファイルＡ、ファイルＢおよびファイルＣについて行われる。属するデータがバッファメモリ４に保存されていないファイルＤについては処理は行われない。通信削減量Ｇｈｉｔ、通信発生量Ｇｍｉｓｓおよび直近書き換え回数ΔＷは制御部２により見積もられ、または計測され、履歴保存用メモリ６に一定期間保存される。なお、直近期間ｔは、例えば一週間や一ヶ月のような任意の期間であり、利用するアプリケーションの種類、ユーザの使い方等に合わせて制御部２が自動で設定するようにしてもよいし、ユーザが任意に設定してもよい。
【００３６】
次に、ステップＳ２で、現時点においてキャッシュメモリ５が許容することができる書き換え回数（以下、許容書き換え回数Ｗｌｉｍｉｔと称する。）を算出する。許容書き換え回数Ｗｌｉｍｉｔは、例えば、Ｗｌｉｍｉｔ＝Ｗｍａｘ×（Ｔａｇｅ／Ｔｌｉｆｅ）という式から算出することができる。この式において、Ｗｍａｘは、キャッシュメモリ５の最大書き換え可能回数であり、キャッシュメモリ５として用いているフラッシュメモリのメーカーが保証するデバイスの仕様情報から取得することができる。例えば、キャッシュメモリ５として用いているフラッシュメモリの１ブロックあたりの最大書き換え可能回数（消去可能回数）が１０万回で、利用可能なブロック数がＮ個の場合、Ｗｍａｘは１００，０００＊Ｎ程度の値とする。実際には完全なウェアレベリングが不可能であるため、１ブロックあたりの平均書き換え可能回数は１０万回よりも少なめに見積もる必要がある。Ｔａｇｅはキャッシュメモリ５が搭載された機器を使い始めてから現時点までの経過時間である。機器を使い始めて１年が経過している場合はＴａｇｅは１年となる。Ｔｌｉｆｅは、機器を使い始めてからキャッシュメモリ５の寿命を維持すべき期間である。メモリ管理装置１を搭載した機器の一般的な寿命が５年だとすると、キャッシュメモリ５もその機器の寿命が続く限りはその寿命を維持する必要があるため、Ｔｌｉｆｅは５年となる。
【００３７】
次にステップＳ３で、バッファメモリ４にデータを有するファイルそれぞれついて、通信削減量Ｇｈｉｔと通信発生量Ｇｍｉｓｓの合計を通信合計量Ｇｔｏｔａｌとして算出する。本実施の形態では、バッファメモリ４には現時点でデータａ１、データｂ１およびデータｃ１が保存されているため、ステップＳ３の算出はファイルＡ、ファイルＢおよびファイルＣについて行われる。
【００３８】
次にステップＳ４で、ファイルごとに、ステップＳ３で算出した通信合計量Ｇｔｏｔａｌとしきい値Ｓとを比較する。通信合計量Ｇｔｏｔａｌがしきい値Ｓより少ない場合、そのファイルに含まれるデータは、直近期間ｔにおいて、キャッシュとして利用された頻度が低いといえる。また、アプリケーションがそのデータをインターネットにアクセスして取得して利用した頻度も低いといえる。すなわち、そのようなファイルはアプリケーションに要求される頻度が少なく、キャッシュデータとしての利用効率の観点では重要ではないファイルである。ステップＳ４はそのようなアプリケーションに要求される頻度が低いファイルの有無を判定するものである。
【００３９】
ここで、しきい値Ｓとは、利用頻度の低いファイルの有無の判定を行うためのしきいとなる値である。しきい値Ｓは通常、ファイル毎に異なる値を設定する。例えば、アプリケーションの一般的な使用状況において期待される通信合計量Ｇｔｏｔａｌの値をＧｔｙｐとすると、しきい値Ｓは、しきい値Ｓ＝Ｋ×Ｇｔｙｐで算出される。Ｋは０＜Ｋ＜１の実数係数であり、後述するステップＳ７で行われるデータの破棄の起こりやすさを調節するパラメータである。Ｋの値が大きい場合はしきい値Ｓも大きくなり、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ないファイルが増え、ステップＳ７によるデータの破棄が行われる頻度が高くなる。一方、Ｋの値が小さい場合はしきい値Ｓも小さくなるので、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ないファイルは減少し、データの破棄が行われる頻度は低くなる。
【００４０】
本実施の形態では、ファイルＡは通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも多く、ファイルＢおよびファイルＣは通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ない場合を想定して説明を行う。
【００４１】
次に、ステップＳ５で、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ないファイルが存在するか否かを判定する。上述のようにファイルＢおよびファイルＣは通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ないため、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ないファイルが存在するとして、処理はステップＳ６に進む（ステップＳ５のＹｅｓ）。
【００４２】
次に、ステップＳ６で、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ないファイルＢおよびファイルＣそれぞれについて、Ｇｔｏｔａｌ／しきい値Ｓを算出する。次に、ステップＳ７で、上述のステップＳ６で算出したＧｔｏｔａｌ／しきい値Ｓの値が最小のファイルを選択し、そのファイルの一部であり、バッファメモリ４に保存されているデータを破棄する。これにより、破棄されたデータのサイズ分バッファメモリ４が解放される。本実施の形態では、ファイルＣよりファイルＢの方がＧｔｏｔａｌ／しきい値Ｓの値が小さいものとする。そうすると、図４Ｂに示すように、ファイルＢの一部であるデータｂ１が破棄され、データｂ１の分バッファメモリ４が解放される。なお、Ｇｔｏｔａｌ／しきい値Ｓの値が同一のファイルが複数ある場合は、バッファメモリ４を占めるデータのサイズやファイルの最終アクセス時などの条件で任意に１つのファイルを選択するようにするとよい。
【００４３】
ステップＳ４乃至ステップＳ７は、アプリケーションに要求される頻度が少ないファイルに属するデータをキャッシュメモリ５に保存せずに破棄するための処理である。アプリケーションに要求される頻度が少ないファイルに属するデータはキャッシュとして保存されても有効利用される可能性が低いと判断することができる。したがって、この発明では、データが将来的に有効利用される可能性が低いか否かを判断し、可能性が低いデータを保存せずに破棄することによって、不必要なキャッシュメモリの書き換えを抑制し、キャッシュメモリの寿命を延長することができる。なお、もしアプリケーションがそのようなデータを必要とする場合は、インターネットにアクセスすることにより常時取得することができるので問題はないと考える。また、使用する場合はインターネットにアクセスして取得するため、アプリケーションの動作が滞ることが想定されるが、要求される頻度が少ないデータであるため、アプリケーションの動作には影響は少ないと考えられる。ここで、有効利用とは、アプリケーションによりキャッシュとして利用される頻度が高いことをいう。
【００４４】
次に、ステップＳ８で、アプリケーションから新たに書き込み要求がなされているデータをバッファメモリ４に保存することが可能か否かを判定する。すなわち、バッファメモリ４の空き容量がアプリケーションから書き込み要求がなされているデータより大きいか否かを判定する。データをバッファメモリ４に保存可能であると判定した場合は処理は終了となる（ステップＳ８のＹｅｓ）。一方、保存することが不可能であると判定した場合は、処理はステップＳ５に戻る（ステップＳ８のＮｏ）。本実施の形態では、図４Ｂに示すように、データｂ１が破棄されてその分バッファメモリ４が解放されたが、アプリケーションから新たに書き込み要求がなされているデータａ２はバッファメモリ４の空き容量よりもサイズが大きい。したがって、データａ２をバッファメモリ４に保存することは不可能であるため、処理はステップＳ５に戻る。
【００４５】
そして、再び、ステップＳ５で通信合計量Ｇｔｏｔａｌがしきい値Ｓより少ないファイルが存在するかを判定する。本実施の形態では、ファイルＣは通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも少ないため、処理はステップＳ６に進む（ステップＳ５のＹｅｓ）。次に、上述のデータｂ１に対して行ったのと同様にステップＳ６およびステップＳ７の処理によって図４Ｃに示すようにデータｃ１が破棄され、その分バッファメモリ４が解放される。
【００４６】
そして、ステップＳ８で再び、アプリケーションから新たに書き込み要求がなされているデータａ２をバッファメモリ４に保存することが可能か否かを判定する。データａ２をバッファメモリ４に保存可能であると判定した場合は、処理は終了となる（ステップＳ８のＹｅｓ）。本実施の形態では図４Ｃに示すようにデータｂ１に続き、データｃ１が破棄され、その分バッファメモリ４が解放されたが、まだバッファメモリ４のemptyで表す空き容量よりもデータａ２の方が大きい。したがって、データａ２をバッファメモリ４に保存することは不可能であるとして処理はステップＳ５に戻る（ステップＳ８のＮｏ）。
【００４７】
ステップＳ５で、通信合計量Ｇｔｏｔａｌがしきい値Ｓより少ないファイルが存在するかを判定する。本実施の形態では、通信合計量Ｇｔｏｔａｌがしきい値Ｓより少ないファイルはファイルＢおよびファイルＣであるが、それらの一部であるデータｂ１およびデータｃ１は既に破棄されている。したがって、通信合計量Ｇｔｏｔａｌがしきい値Ｓより少ないファイルが存在しないとして、処理は図３に示すステップＳ９に進む（ステップＳ５のＮｏ）。
【００４８】
次にステップＳ９で、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも多いファイル全てについて、Ｒ＝通信削減量Ｇｈｉｔ／直近書き換え回数ΔＷを算出する。本実施の形態では、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも多いのはファイルＡであるため、ファイルＡについてＲの算出が行われる。ただし、直近書き換え回数ΔＷが０の場合は、Ｒ＝通信削減量Ｇｈｉｔとする。そして、ステップＳ１０でＮ＝１に設定する。ここで、Ｎは後述するステップＳ１１、ステップＳ１７およびステップＳ１８で用いる、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも多いファイルのＲの値の大きさの順位を示すものである。
【００４９】
次にステップＳ１１で、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも多いファイルの中から、ステップＳ９で算出したＲの値がＮ番目に大きいファイルを選択する。上述のステップＳ１０でＮ＝１に設定されているので、まずはＲの値が１番大きいファイルが選択される。本実施の形態では、通信合計量Ｇｔｏｔａｌがしきい値Ｓより多いファイルはファイルＡのみであるため、ファイルＡがＲの値が最大のファイルとして選択される。
【００５０】
次にステップＳ１２で、ステップＳ１１で選択したファイルＡの一部であるデータａ１をキャッシュメモリ５に書き込むために必要な書き換え回数（以下、必要書き換え回数ΔＷｅと称する。）を見積もる。さらに、ステップＳ１３で、キャッシュメモリ５の使用開始時から現時点までの書き換え回数の総計である累積書き換え回数Ｗｎｏｗを取得する。
【００５１】
次にステップＳ１４で、必要書き換え回数ΔＷeと累積書き換え回数Ｗｎｏｗの合計が上述のステップＳ１で算出した許容書き換え回数Ｗｌｉｍｉｔより少ないか否かを判定する。少ないと判定した場合（ステップＳ１４のＹｅｓ）は、処理はステップＳ１５に進み、ステップＳ１１で選択したファイルの一部であるデータをキャッシュメモリ５に保存し、バッファメモリ４を解放する。したがって、ファイルＡのΔＷeとＷｎｏｗの合計がＷｌｉｍｉｔより小さい場合には、図４Ｄに示すようにデータａ１がキャッシュメモリ５に書き込まれ、その分バッファメモリ４が解放される。
【００５２】
Ｒの値が大きいファイルは、直近期間ｔにおいて、キャッシュメモリ５の書き換え回数に対し、キャッシュヒットによる通信削減量Ｇｈｉｔが大きいファイルであるといえる。すなわち、ファイルの更新回数が少ない割にアプリケーションによって利用される頻度が高いファイルであるということができる。したがって、そのような有効利用されているファイルの一部であるデータを優先してキャッシュメモリ５に保存することにより、キャッシュメモリ５を効率的に使用することができる。
【００５３】
ステップＳ１５でデータがキャッシュメモリ５に保存され、バッファメモリ４の解放が行われた場合、次にステップＳ１６で、アプリケーションから新たに書き込み要求がなされているデータをバッファメモリ４に保存することが可能か否かを判定する。データをバッファメモリ４に保存可能であると判定した場合は、処理は終了となる（ステップＳ１６のＹｅｓ）。一方、保存することが不可能であると判定した場合は、処理はステップＳ１７に進む（ステップＳ１６のＮｏ）。本実施の形態では、図４Ｂ乃至図４Ｄに示すように、データｂ１、ｃ１が破棄され、さらにデータａ１がキャッシュメモリ５に保存されたことにより、バッファメモリ４の空き容量はデータａ２よりも大きくなった。したがって、データａ２をバッファメモリ４に保存することが可能であるため、処理は終了となる（ステップＳ１６のＹｅｓ）。
【００５４】
ところで、上述のステップＳ１４で、ファイルＡについての必要書き換え回数ΔＷeと累積書き換え回数Ｗｎｏｗの合計が許容書き換え回数Ｗｌｉｍｉｔよりも多いと判定した場合は、処理はステップＳ１７に進む（ステップＳ１４のＮｏ）。したがって、その場合はステップＳ１５によるデータａ１のキャッシュメモリ５への保存は行われない。本発明の目的は、キャッシュメモリ５として用いられているフラッシュメモリの寿命を維持することである。そのため、ステップＳ１４は、たとえキャッシュデータとしての利用効率が大きいファイルであっても、その書き込みのためにキャッシュメモリ５を構成するフラッシュメモリの寿命が尽きるような場合には書き込みを行わないようにするための処理である。これにより、キャッシュメモリ５の寿命を維持することができる。
【００５５】
また、ステップＳ１６で、アプリケーションから新たに書き込み要求がなされたデータをバッファメモリ４に保存することが不可能であると判定した場合も同様に処理はステップＳ１７に進む（ステップＳ１６のＮｏ）。
【００５６】
ステップＳ１７では、キャッシュメモリ５に保存されているファイルの内、バッファメモリ４にデータを有し、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも大きいファイルの数をＭとし、Ｍ＞Ｎであるか否かを判定する。そして、Ｍ＞Ｎであると判定した場合は、処理はステップＳ１８に進む（ステップＳ１７のＹｅｓ）。Ｍ＞Ｎであると判定した場合とは、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも大きいファイルのうち、まだステップＳ１１で選択されていないファイルが存在することを意味する。ステップＳ１８ではＮをインクリメントし、その後、処理はステップＳ１１に戻る。そして、ステップＳ１１乃至ステップＳ１８の処理によって、許容書き換え回数Ｗｌｉｍｉｔを超えない限度において、バッファメモリ４内のデータがキャッシュメモリ５に保存されて、その分バッファメモリ４が解放される。ステップＳ１８でＮがインクリメントされることによって、ステップＳ１１を繰り返すたびにＲの大きさの順位に従って、ファイルが選択されることになる。
【００５７】
そして、ステップＳ１７で、Ｍ＞Ｎではないと判定した場合は、処理はステップＳ１９に進む（ステップＳ１７のＮｏ）。Ｍ＞Ｎではないと判定した場合とは、通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも大きいファイルのうち、ステップＳ１１で選択されていないファイルがこれ以上存在しないことを意味する。その場合、次にステップＳ１９で、アプリケーションから最後に書き込み要求を受けたデータを破棄する。すなわち、ステップＳ１６のＮｏからステップＳ１７に至った場合は、バッファメモリ４に保存されたデータの破棄、書き出しを行ってもデータａ２を保存するためのバッファメモリ４の空き容量を確保することができなかったため、データａ２を破棄する。したがって、データａ２はキャッシュメモリ５には保存されないため、アプリケーションがデータａ２を必要とする場合は、インターネットにアクセスして取得することになる。
【００５８】
また、ステップＳ１４のＮｏからステップＳ１７に至った場合は、例えば、図５Ａに示すように、データａ１をキャッシュメモリ５に書き込もうとすると許容書き換え回数Ｗｌｉｍｉｔを超えてしまうような場合である。許容書き換え回数Ｗｌｉｍｉｔを超えてデータの書き換えを行うとキャッシュメモリ５の寿命が尽きてしまうため、その場合は、データａ１をキャッシュメモリ５に保存しない。したがって、これ以上データａ２を保存するためのバッファメモリ４の空き容量を確保することができない。このような場合に、図５Ｂに示すようにデータａ１をキャッシュメモリ５に書き込まずバッファメモリ４に保持し、データａ２を破棄する。これにより、データａ２を保存することよりもキャッシュメモリ５の寿命を維持することを優先する。これにより、許容書き換え回数Ｗｌｉｍｉｔを超えてキャッシュメモリ５の書き換えが行われることを防止し、キャッシュメモリ５の寿命を維持することができる。そして、メモリ管理装置１を搭載する機器の正常動作を維持することができる。
【００５９】
なお、データａ２は破棄されるため、キャッシュメモリ５には保存されない。したがって、アプリケーションがデータａ２を必要とする場合は、インターネットにアクセスして取得する必要がある。しかし、キャッシュとして保存しようとするデータが、必要な場合に常時インターネットから取得することができるものである場合は、キャッシュメモリ５への保存はアプリケーションが機能するために必要不可欠ではない。そこで、必要不可欠ではないキャッシュメモリ５への保存を制限することによってキャッシュメモリ５の寿命を延長することができる。
【００６０】
なお、アプリケーションからの１回の書き込み要求を１つのトランザクションとみなした場合、上述のようにバッファメモリ４に保存されたデータの破棄を行うと、トランザクションのアトミック性は保証されるが、永続性は保証されない。つまり、バッファメモリ４に保存されたデータの破棄が行われるとそのデータを一部とするファイルの内容はトランザクション単位で過去の状態に戻ることになる。アプリケーションがそれを許容することができない場合は、ステップＳ４で用いるしきい値Ｓを０に設定し、ステップＳ６乃至ステップＳ８の処理をスキップする。すなわち、しきい値Ｓを０に設定したことによって全てのファイルについての通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも大きくなるためステップＳ６乃至ステップＳ８によるデータの破棄が行われない。さらに、ステップＳ１９でデータを破棄する代わりにアプリケーションに対してエラー通知を行い、そのデータのバッファメモリへの保存は行わない。これにより、データは破棄されないため、そのようなアプリケーションにおいてもこの発明を適用することが可能になる。
【００６１】
また、アプリケーションが新しくインストールされたものである場合、一定期間、その新規アプリケーションが利用するデータを効率的に保存しておくために、新規アプリケーションが利用するデータは、優先的にキャッシュメモリ５に保存することが望ましい。その方法としては、通信削減量Ｇｈｉｔとして実際に見積もった値を用いる代わりに通信削減量Ｇｈｉｔには十分大きな定数値を設定し、通信発生量Ｇｍｉｓｓには０を設定することが考えられる。これにより、新規アプリケーションが利用するファイルは常に通信合計量Ｇｔｏｔａｌがしきい値Ｓよりも多くなる。さらに通信合計量Ｇｔｏｔａｌ／直近書き換え回数ΔＷ＝Ｒの値も大きくなるため、その新規アプリケーションが利用するファイルに属するデータが優先してキャッシュメモリ５に保存されることになる。
【００６２】
以上、この発明の実施の形態について具体的に説明したが、この発明は、上述の実施形態に限定されるものではなく、この発明の技術的思想に基づく範囲内で各種の変形や適用が可能である。例えば、この発明に係るメモリ管理装置は、パーソナルコンピュータに限られず、デジタルテレビジョン受信機、携帯電話機、ＰＤＡ（Personal Digital Assistant）装置、通信機能を備えた携帯ゲーム機などの機器にも応用することができる。
【００６３】
また、キャッシュメモリ５に用いる記録媒体はフラッシュメモリに限られず、消去回数に限界がある記録媒体ならばどのような記録媒体を用いてもその記録媒体の寿命を延長し、効率よく利用することができる。
【符号の説明】
【００６４】
１・・・メモリ管理装置
２・・・制御部
３・・・インターフェース
４・・・バッファメモリ
５・・・キャッシュメモリ
【図１】
2011090474.tif 000003
【図２】
2011090474.tif 000004
【図３】
2011090474.tif 000005
【図４】
2011090474.tif 000006
【図５】
2011090474.tif 000007