JP2011090474A - メモリ管理装置およびメモリ管理方法 - Google Patents
メモリ管理装置およびメモリ管理方法 Download PDFInfo
- Publication number
- JP2011090474A JP2011090474A JP2009242960A JP2009242960A JP2011090474A JP 2011090474 A JP2011090474 A JP 2011090474A JP 2009242960 A JP2009242960 A JP 2009242960A JP 2009242960 A JP2009242960 A JP 2009242960A JP 2011090474 A JP2011090474 A JP 2011090474A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- cache
- file
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】不揮発性メモリに書き込むデータを取捨選択することにより、書き換え回数の不要な増加を防止し、不揮発性メモリの寿命を維持しながら、利用効率を向上させることができるメモリ管理装置を提供する。
【解決手段】キャッシュメモリ5に保存されたファイルの中から、バッファメモリ4にデータを有するファイルについて、現時点から過去の一定期間にキャッシュヒットしたことにより削減された通信量、キャッシュミスしたことによって発生した通信量を算出し、その合計である通信合計量Gtotalとしきい値Sとを比較することにより、キャッシュとして利用された頻度が少ないファイルの有無を判定する。そして、利用可能性が低いファイルの一部であるデータをバッファメモリ4から破棄し、利用可能性が高いファイルの一部であるデータをキャッシュメモリ5に保存する。また、書き換え回数の増加量に対する通信削減量の割合が大きいファイルのデータを優先して保存する。
【選択図】図2
【解決手段】キャッシュメモリ5に保存されたファイルの中から、バッファメモリ4にデータを有するファイルについて、現時点から過去の一定期間にキャッシュヒットしたことにより削減された通信量、キャッシュミスしたことによって発生した通信量を算出し、その合計である通信合計量Gtotalとしきい値Sとを比較することにより、キャッシュとして利用された頻度が少ないファイルの有無を判定する。そして、利用可能性が低いファイルの一部であるデータをバッファメモリ4から破棄し、利用可能性が高いファイルの一部であるデータをキャッシュメモリ5に保存する。また、書き換え回数の増加量に対する通信削減量の割合が大きいファイルのデータを優先して保存する。
【選択図】図2
Description
この発明は、フラッシュメモリ等の不揮発性メモリなどにより構成されるメモリ管理装置およびメモリ管理方法に関し、特に、不揮発性メモリを効率的に利用することにより、不揮発性メモリの寿命を維持するメモリ管理装置およびメモリ管理方法に関する。
現在、一般家庭で用いられるAV(Audio Visual)機器、家電製品などに搭載または着脱可能に設けられている半導体記憶装置の一つとして、電気的に書き換えが可能であるフラッシュメモリなどの不揮発性メモリが普及している。そして、近年、一般家庭で用いられるAV機器、家電製品などで利用されるアプリケーションにおいてもインターネットへの接続を前提とするものが増えてきており、それに伴い、それら機器において用いられているフラッシュメモリの利用状況も変化しつつある。
アプリケーションによっては、インターネット上のサーバにアクセスして必要なデータを取得し、それらのデータを機器内のフラッシュメモリにキャッシュとして保存するように要求するものがある。一般に、インターネットから取得するデータの量や更新頻度は、ユーザの使い方やサーバ側の運用仕様に依存するため、アプリケーションから保存要求がなされたデータの全てをフラッシュメモリに直接書き込んだ場合、書き換え回数が大幅に増加することとなる。
フラッシュメモリ上のデータの更新を行う場合、更新するデータが属するブロック内の全データを一旦消去する。そして、更新後のデータが消去済みのブロックに書き込まれる。しかし、フラッシュメモリには寿命が存在する。フラッシュメモリ、特にNAND型フラッシュメモリの寿命は、ブロック毎の消去回数であり、少ないもので数百回程度しか消去/書き込みを行うことができない。また、消去/書き込みが特定のブロックに集中しないようにウェアレベリングを行うように構成されたものでもやはり消去回数には制限があり、多いものでも数万回程度の消去/書き込みで寿命が尽きてしまう。そのため、頻繁にデ−タの書き換えを行い、書き換え回数が増加すると、不揮発性メモリの寿命はすぐに尽きてしまい、データの正常な保存を行うことができなくなる。
したがって、書き換え回数を制限するための適切な制御が必要となる。通常は、機器の使用期間中にフラッシュメモリの寿命が尽きて機能不全に陥ることを防ぐため、フラッシュメモリの書き換え回数が一定量を超えないように機器にインストールするアプリケーションを設計する、ということが行われている。
ところで、近年、アプリケーションプログラム自体をネットワークサービスから機器等にダウンロードし、機器上でそのアプリケーションを起動させることにより、機器を様々な用途に用いることができるウィジェットと呼ばれるサービスが普及してきている。
ウィジェットとは、近年、提唱されて普及し始めているパーソナルコンピュータ等におけるアプリケーションやパーソナルコンピュータのデスクトップ上で動作する小規模なプログラムである。ウィジェットは、ガジェット、アクセサリーソフトとも称されている。ウィジェットは、特定のランタイム環境で実行されるものであり、カレンダー、時計、電卓、辞書、検索窓等の機能を持つものが知られている。また、天気予報やニュースの見出しをディスプレイに表示したり、インターネットからユーザが欲しい情報のみを取得して表示させる等の機能を有するものもある。
また、ウィジェットをデジタルテレビ受信機に直接ダウンロードすることにより、テレビジョン放送を見ながら同時に電卓等の機能を利用したり、インターネット上のコンテンツを利用することができるアプリキャスト(登録商標)と称されるサービスも行われている。
それらウィジェットやアプリキャストは開発ツールが公開されている。したがって、アプリケーションをパーソナルコンピュータやテレビジョン受像機などのメーカーとは異なる事業者や一般ユーザが開発することが可能である。また、複数の異なる機種やプラットフォーム上で動作するのが一般的である。そのため、通常、そのようなアプリケーションの設計では、そのアプリケーションが動作するハードウェアシステムの詳細仕様に依存する制約を直接に配慮することはできない。
従って、アプリケーションが機器に搭載されたフラッシュメモリに対してキャッシュとして用いるデータの書き換えを無制限に要求してきた場合、書き換えが短期間の間に大量に行われ、フラッシュメモリの寿命はすぐに尽きてしまうという問題がある。そのため、仮にアプリケーションがフラッシュメモリに対するデータの書き換えを無制限に要求してきたとしても、プラットフォーム側で適切に制御してフラッシュメモリの寿命を維持する必要がある。
フラッシュメモリの書き換え量を軽減して寿命を維持する技術としては、実質的に寿命制約のないメモリデバイス(DRAM等の揮発性メモリ)をいわゆるWriteBackバッファとして利用することにより、書き換え量を減らす電子機器が提案されている(特許文献1)。
しかし、上述のような、インターネットから取得したデータをキャッシュとして保存する用途に限って言えば、結果的に有効利用されないデータも常に書き込まれ、その分だけ書き換え回数が増え、フラッシュメモリの寿命が無駄に消費されることになる。また、特許文献1のような方法による効果はあくまでも寿命の延長が期待できるだけであり、必要な期間中に寿命を確実に維持できる保証はない。キャッシュとして保存するデータが、必要であれば常時インターネットから取得できる場合は、フラッシュメモリへの保存はアプリケーションが機能するために必要不可欠ではないので、フラッシュメモリの寿命維持を優先してシステムの破綻を防止する方が望ましい。
したがって、この発明の目的は、不揮発性メモリに書き込むデータを取捨選択することにより、書き換え回数が不要に増加することを防止し、不揮発性メモリの寿命を維持することができるメモリ管理装置およびメモリ管理方法を提供することにある。
上述した課題を解決するために、第1の発明は、外部との通信を行うインターフェースと、インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、キャッシュメモリおよびバッファメモリに対するデータの書き込み動作を制御する制御部とを有し、制御部は、バッファデータがキャッシュとして有効利用される可能性を判定し、可能性が低いと判定したバッファデータを破棄するよう制御するメモリ管理装置である。
また、第2の発明は、外部との通信を行うインターフェースと、インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、キャッシュメモリおよびバッファメモリに対するデータの書き込み動作を制御する制御部とを有するメモリ管理装置におけるメモリ管理方法であって、制御部は、揮発性メモリに保存されたデータがキャッシュとして有効利用される可能性を判定し、可能性が低いと判定したデータを破棄するよう制御するメモリ管理方法である。
この発明によれば、キャッシュとして有効利用される可能性が高いデータを優先して不揮発メモリに保存し、また、有効利用される見込みが低いデータを保存せずに破棄することにより、不揮発性メモリを効率よく利用し、その寿命を延長することができる。また、不揮発性メモリの寿命を超える書き換えを制限することにより、一定期間は不揮発性メモリの寿命が尽きないことを保証することができる。
[メモリ管理装置の構成]
以下、この発明の実施の形態について、メモリ管理装置がパーソナルコンピュータ(図示せず。)の一部として構成され、そのパーソナルコンピュータでウィジェット等のアプリケーションを動作させる場合を例にして説明する。なお、以下に説明する実施の形態は、この発明の好適な具体例であり、技術的に好ましい種々の限定が付されているが、この発明の範囲は、以下の説明における実施の形態に限定されないものとする。
以下、この発明の実施の形態について、メモリ管理装置がパーソナルコンピュータ(図示せず。)の一部として構成され、そのパーソナルコンピュータでウィジェット等のアプリケーションを動作させる場合を例にして説明する。なお、以下に説明する実施の形態は、この発明の好適な具体例であり、技術的に好ましい種々の限定が付されているが、この発明の範囲は、以下の説明における実施の形態に限定されないものとする。
図1に示すように、メモリ管理装置1は、制御部2、インターフェース3、バッファメモリ4、キャッシュメモリ5および履歴保存用メモリ6とから構成され、それらはバス7により接続されている。
制御部2は、例えば、CPU(Central Processing Unit)などにより構成されるマイクロコンピュータであり、フラッシュメモリに予め記録されているプログラムに従い、メモリ管理装置1の各部を制御するものである。また、ユーザが起動したアプリケーションも実行する。インターフェース3は、例えば、インターネットに接続可能なLAN(Local Area Network)ポートである。本実施の形態では、メモリ管理装置1はインターフェース3を介してインターネットに接続してあり、インターネットを経由してデータのダウンロードを行うことができるものとする。
バッファメモリ4は、インターフェース3を介してインターネットからダウンロードしたデータをキャッシュメモリ5に書き込む前に一時的に保存するためのものである。バッファメモリ4は揮発性メモリ、例えば、DRAM(Dynamic Random Access Memory)で構成される。
キャッシュメモリ5は、インターフェース3を介してインターネットからダウンロードしたデータをキャッシュとして保存するためのものである。キャッシュメモリ5は、例えば不揮発性メモリであるNAND型フラッシュメモリで構成される。なお、本実施の形態においては、バッファメモリ4の容量は、キャッシュメモリ5に保存可能な全データの合計サイズよりも小さいものとする。
ウィジェット等のアプリケーションには、動作に用いるデータをインターネット上からダウンロードして取得し、そのダウンロードしたデータをキャッシュメモリ5にキャッシュとして保存することを要求するものがある。使用頻度の高いデータをキャッシュとして保存しておくことにより、それ以降、そのデータを用いる場合はキャッシュメモリ5からを読み込む(キャッシュヒット)ことにより、その都度そのデータをインターネットにアクセスしてダウンロードする必要がなくなる。これにより、アプリケーションの動作の高速化を図ることができる。逆に、使用頻度の高いデータがキャッシュメモリ5にキャッシュとして保存されていない場合は、そのデータをキャッシュメモリ5から読み込むことができず(キャッシュミス)、そのデータをインターネットにアクセスして取得することになる。これにより、アプリケーションの動作が滞ることとなる。
履歴保存用メモリ6は、後述する通信削減量Ghit、通信発生量Gmiss、不揮発性メモリの直近書き換え回数ΔWを履歴として保存するためのものである。なお、履歴保存用メモリ6は独立した記録媒体として設けてもよいし、上述のプログラムを記録したフラッシュメモリの一部の領域を利用してもよい。
[メモリ管理装置の動作]
次に、図2乃至図5を参照して、メモリ管理装置1が行う処理について説明する。図4Aに示すようにキャッシュメモリ5には、キャッシュファイルであるファイルA、ファイルB、ファイルCおよびファイルDが保存されている。emptyはキャッシュメモリ5の空き容量を表す。なお、本実施の形態ではキャッシュメモリ5に保存されているファイルの数は4つとして説明を行うが、ファイルの数は4つに限られるものではない。また、ファイルとは、所謂ファイルシステムのファイルである必要はなく、キャッシュメモリに保存されたデータをグルーピングして管理するためのデータ構造である。
次に、図2乃至図5を参照して、メモリ管理装置1が行う処理について説明する。図4Aに示すようにキャッシュメモリ5には、キャッシュファイルであるファイルA、ファイルB、ファイルCおよびファイルDが保存されている。emptyはキャッシュメモリ5の空き容量を表す。なお、本実施の形態ではキャッシュメモリ5に保存されているファイルの数は4つとして説明を行うが、ファイルの数は4つに限られるものではない。また、ファイルとは、所謂ファイルシステムのファイルである必要はなく、キャッシュメモリに保存されたデータをグルーピングして管理するためのデータ構造である。
バッファメモリ4には、バッファデータとしてデータa1、データb1およびデータc1が保存されている。データa1はファイルAの一部としてファイルAに属し、データb1はファイルBの一部としてファイルBに属し、データc1はファイルCの一部としてファイルCに属するものである。データa1、データb1およびデータc1は、インターネットからダウンロードされ、アプリケーションによりキャッシュメモリ5へ書き込むことを要求されたデータであり、キャッシュメモリ5へ書き込まれる前に一時的にバッファメモリ4に保存されている。emptyはバッファメモリ4の空き容量を表す。
データa2は、インターネットからダウンロードされ、新たにアプリケーションからキャッシュメモリ5への書き込み要求がなされたデータであり、ファイルAの一部としてファイルAに属するものである。図4Aに示すようにデータa2はまだバッファメモリ4には保存されていない。なお、それらデータはそれぞれ、メモリ空間の連続領域に配置される1つのブロックであるように記載されているが、複数のメモリ領域に分割して格納されているものであってもよい。
インターネットからダウンロードされ、アプリケーションからキャッシュメモリ5への書き込み要求がなされたデータa2は通常、一時的にバッファメモリ4に保存され、その後キャッシュメモリ5に書き込まれる。しかし、図4Aに示すように、データa2よりもバッファメモリ4の空き容量の方が小さいため、このままの状態ではデータa2をバッファメモリ4に保存することができない。そこで、この発明に係るメモリ管理装置1では図2および図3に示す処理を行う。
ステップS1で、バッファメモリ4にデータを有するファイルについて、現時点から過去の一定期間(以下、直近期間tと称する。)にアプリケーションがそのファイルに属するデータをキャッシュとして利用したことにより削減された通信量を見積もる。アプリケーションがキャッシュとして利用しようとしているデータがキャッシュメモリ5に存在しない場合、アプリケーションはインターフェース3を介してインターネットにアクセスして必要なデータを取得するため、それにより通信量が増加する。しかし、キャッシュヒットし、アプリケーションがキャッシュメモリ5のファイルに属するデータをキャッシュとして利用した場合、アプリケーションはインターネットにアクセスしてデータを取得する必要がないため、これにより通信量が削減されたと考えるものである。以下、削減された通信量を通信削減量Ghitと称する。
なお、キャッシュヒットした場合は上述のようにインターネットにアクセスする必要がないため、通信は行われない。したがって、行われていない通信の量を通信削減量Ghitとして見積もるのが困難である場合は、アプリケーションがキャッシュメモリ5に保存されたファイルからキャッシュとして読み込んだデータの合計サイズを通信削減量Ghitの近似値として用いても良い。すなわち、キャッシュメモリ5から読み込んだデータの量はキャッシュミスした場合にアプリケーションがインターネットにアクセスし取得する必要が生じるデータの量と同一であるため、その量を通信削減量Ghitとするものである。
ここで、バッファメモリ4にデータを有するファイルとは、ファイルに属するデータがバッファメモリ4に保存されているファイルを意味し、本実施の形態ではデータa1、データb1、データc1がバッファメモリ4に保存されているため、ファイルA、ファイルB、ファイルCがそれに当たる。
また、ステップS1では、バッファメモリ4にデータを有する各ファイルについて、直近期間tにアプリケーションが要求するデータがそのファイルに含まれておらずキャッシュミスしたことによって発生した通信量を計測する。以下、そのキャッシュミスにより発生した通信量を通信発生量Gmissと称する。アプリケーションがキャッシュとして利用しようとするデータがキャッシュメモリ5に存在しない場合、アプリケーションはインターネットにアクセスして必要なデータを取得するため、これにより発生した通信量を測定する。通信発生量Gmissは、実際に行われた通信に関するものであるため、インターフェース3を介して受信したデータ量を測定することにより取得することができる。
さらに、ステップS1では、バッファメモリ4にデータを持つ各ファイルについて、直近期間tにそのファイルを更新するために行ったキャッシュメモリ5の書き換えの回数(以下、直近書き換え回数ΔWと称する)を計測する。なお、本発明は、直近書き換え回数ΔWを単純に、キャッシュメモリ5として用いられているNAND型フラッシュメモリの直近期間tにおけるブロック消去回数の合計値で算出することを想定している。直近書き換え回数ΔWは、ファイルの一部であるデータの更新に伴って行われた全ての書き換えを対象とするものである。すなわち、インターネットからデータをダウンロードしてキャッシュメモリ5内のファイルを更新する場合に限られるものではない。例えば、メモリ管理装置1が搭載された機器の終了処理においてもバッファメモリ4に保存されたデータがキャッシュメモリ5に保存される場合があり、そのような書き換えも直近書き換え回数ΔWに含むものとする。
本実施の形態では、図4Aに示すように、バッファメモリ4にはデータa1、データb1およびデータc1が保存されているため、ステップS1の処理はファイルA、ファイルBおよびファイルCについて行われる。属するデータがバッファメモリ4に保存されていないファイルDについては処理は行われない。通信削減量Ghit、通信発生量Gmissおよび直近書き換え回数ΔWは制御部2により見積もられ、または計測され、履歴保存用メモリ6に一定期間保存される。なお、直近期間tは、例えば一週間や一ヶ月のような任意の期間であり、利用するアプリケーションの種類、ユーザの使い方等に合わせて制御部2が自動で設定するようにしてもよいし、ユーザが任意に設定してもよい。
次に、ステップS2で、現時点においてキャッシュメモリ5が許容することができる書き換え回数(以下、許容書き換え回数Wlimitと称する。)を算出する。許容書き換え回数Wlimitは、例えば、Wlimit=Wmax×(Tage/Tlife)という式から算出することができる。この式において、Wmaxは、キャッシュメモリ5の最大書き換え可能回数であり、キャッシュメモリ5として用いているフラッシュメモリのメーカーが保証するデバイスの仕様情報から取得することができる。例えば、キャッシュメモリ5として用いているフラッシュメモリの1ブロックあたりの最大書き換え可能回数(消去可能回数)が10万回で、利用可能なブロック数がN個の場合、Wmaxは100,000*N程度の値とする。実際には完全なウェアレベリングが不可能であるため、1ブロックあたりの平均書き換え可能回数は10万回よりも少なめに見積もる必要がある。Tageはキャッシュメモリ5が搭載された機器を使い始めてから現時点までの経過時間である。機器を使い始めて1年が経過している場合はTageは1年となる。Tlifeは、機器を使い始めてからキャッシュメモリ5の寿命を維持すべき期間である。メモリ管理装置1を搭載した機器の一般的な寿命が5年だとすると、キャッシュメモリ5もその機器の寿命が続く限りはその寿命を維持する必要があるため、Tlifeは5年となる。
次にステップS3で、バッファメモリ4にデータを有するファイルそれぞれついて、通信削減量Ghitと通信発生量Gmissの合計を通信合計量Gtotalとして算出する。本実施の形態では、バッファメモリ4には現時点でデータa1、データb1およびデータc1が保存されているため、ステップS3の算出はファイルA、ファイルBおよびファイルCについて行われる。
次にステップS4で、ファイルごとに、ステップS3で算出した通信合計量Gtotalとしきい値Sとを比較する。通信合計量Gtotalがしきい値Sより少ない場合、そのファイルに含まれるデータは、直近期間tにおいて、キャッシュとして利用された頻度が低いといえる。また、アプリケーションがそのデータをインターネットにアクセスして取得して利用した頻度も低いといえる。すなわち、そのようなファイルはアプリケーションに要求される頻度が少なく、キャッシュデータとしての利用効率の観点では重要ではないファイルである。ステップS4はそのようなアプリケーションに要求される頻度が低いファイルの有無を判定するものである。
ここで、しきい値Sとは、利用頻度の低いファイルの有無の判定を行うためのしきいとなる値である。しきい値Sは通常、ファイル毎に異なる値を設定する。例えば、アプリケーションの一般的な使用状況において期待される通信合計量Gtotalの値をGtypとすると、しきい値Sは、しきい値S=K×Gtypで算出される。Kは0<K<1の実数係数であり、後述するステップS7で行われるデータの破棄の起こりやすさを調節するパラメータである。Kの値が大きい場合はしきい値Sも大きくなり、通信合計量Gtotalがしきい値Sよりも少ないファイルが増え、ステップS7によるデータの破棄が行われる頻度が高くなる。一方、Kの値が小さい場合はしきい値Sも小さくなるので、通信合計量Gtotalがしきい値Sよりも少ないファイルは減少し、データの破棄が行われる頻度は低くなる。
本実施の形態では、ファイルAは通信合計量Gtotalがしきい値Sよりも多く、ファイルBおよびファイルCは通信合計量Gtotalがしきい値Sよりも少ない場合を想定して説明を行う。
次に、ステップS5で、通信合計量Gtotalがしきい値Sよりも少ないファイルが存在するか否かを判定する。上述のようにファイルBおよびファイルCは通信合計量Gtotalがしきい値Sよりも少ないため、通信合計量Gtotalがしきい値Sよりも少ないファイルが存在するとして、処理はステップS6に進む(ステップS5のYes)。
次に、ステップS6で、通信合計量Gtotalがしきい値Sよりも少ないファイルBおよびファイルCそれぞれについて、Gtotal/しきい値Sを算出する。次に、ステップS7で、上述のステップS6で算出したGtotal/しきい値Sの値が最小のファイルを選択し、そのファイルの一部であり、バッファメモリ4に保存されているデータを破棄する。これにより、破棄されたデータのサイズ分バッファメモリ4が解放される。本実施の形態では、ファイルCよりファイルBの方がGtotal/しきい値Sの値が小さいものとする。そうすると、図4Bに示すように、ファイルBの一部であるデータb1が破棄され、データb1の分バッファメモリ4が解放される。なお、Gtotal/しきい値Sの値が同一のファイルが複数ある場合は、バッファメモリ4を占めるデータのサイズやファイルの最終アクセス時などの条件で任意に1つのファイルを選択するようにするとよい。
ステップS4乃至ステップS7は、アプリケーションに要求される頻度が少ないファイルに属するデータをキャッシュメモリ5に保存せずに破棄するための処理である。アプリケーションに要求される頻度が少ないファイルに属するデータはキャッシュとして保存されても有効利用される可能性が低いと判断することができる。したがって、この発明では、データが将来的に有効利用される可能性が低いか否かを判断し、可能性が低いデータを保存せずに破棄することによって、不必要なキャッシュメモリの書き換えを抑制し、キャッシュメモリの寿命を延長することができる。なお、もしアプリケーションがそのようなデータを必要とする場合は、インターネットにアクセスすることにより常時取得することができるので問題はないと考える。また、使用する場合はインターネットにアクセスして取得するため、アプリケーションの動作が滞ることが想定されるが、要求される頻度が少ないデータであるため、アプリケーションの動作には影響は少ないと考えられる。ここで、有効利用とは、アプリケーションによりキャッシュとして利用される頻度が高いことをいう。
次に、ステップS8で、アプリケーションから新たに書き込み要求がなされているデータをバッファメモリ4に保存することが可能か否かを判定する。すなわち、バッファメモリ4の空き容量がアプリケーションから書き込み要求がなされているデータより大きいか否かを判定する。データをバッファメモリ4に保存可能であると判定した場合は処理は終了となる(ステップS8のYes)。一方、保存することが不可能であると判定した場合は、処理はステップS5に戻る(ステップS8のNo)。本実施の形態では、図4Bに示すように、データb1が破棄されてその分バッファメモリ4が解放されたが、アプリケーションから新たに書き込み要求がなされているデータa2はバッファメモリ4の空き容量よりもサイズが大きい。したがって、データa2をバッファメモリ4に保存することは不可能であるため、処理はステップS5に戻る。
そして、再び、ステップS5で通信合計量Gtotalがしきい値Sより少ないファイルが存在するかを判定する。本実施の形態では、ファイルCは通信合計量Gtotalがしきい値Sよりも少ないため、処理はステップS6に進む(ステップS5のYes)。次に、上述のデータb1に対して行ったのと同様にステップS6およびステップS7の処理によって図4Cに示すようにデータc1が破棄され、その分バッファメモリ4が解放される。
そして、ステップS8で再び、アプリケーションから新たに書き込み要求がなされているデータa2をバッファメモリ4に保存することが可能か否かを判定する。データa2をバッファメモリ4に保存可能であると判定した場合は、処理は終了となる(ステップS8のYes)。本実施の形態では図4Cに示すようにデータb1に続き、データc1が破棄され、その分バッファメモリ4が解放されたが、まだバッファメモリ4のemptyで表す空き容量よりもデータa2の方が大きい。したがって、データa2をバッファメモリ4に保存することは不可能であるとして処理はステップS5に戻る(ステップS8のNo)。
ステップS5で、通信合計量Gtotalがしきい値Sより少ないファイルが存在するかを判定する。本実施の形態では、通信合計量Gtotalがしきい値Sより少ないファイルはファイルBおよびファイルCであるが、それらの一部であるデータb1およびデータc1は既に破棄されている。したがって、通信合計量Gtotalがしきい値Sより少ないファイルが存在しないとして、処理は図3に示すステップS9に進む(ステップS5のNo)。
次にステップS9で、通信合計量Gtotalがしきい値Sよりも多いファイル全てについて、R=通信削減量Ghit/直近書き換え回数ΔWを算出する。本実施の形態では、通信合計量Gtotalがしきい値Sよりも多いのはファイルAであるため、ファイルAについてRの算出が行われる。ただし、直近書き換え回数ΔWが0の場合は、R=通信削減量Ghitとする。そして、ステップS10でN=1に設定する。ここで、Nは後述するステップS11、ステップS17およびステップS18で用いる、通信合計量Gtotalがしきい値Sよりも多いファイルのRの値の大きさの順位を示すものである。
次にステップS11で、通信合計量Gtotalがしきい値Sよりも多いファイルの中から、ステップS9で算出したRの値がN番目に大きいファイルを選択する。上述のステップS10でN=1に設定されているので、まずはRの値が1番大きいファイルが選択される。本実施の形態では、通信合計量Gtotalがしきい値Sより多いファイルはファイルAのみであるため、ファイルAがRの値が最大のファイルとして選択される。
次にステップS12で、ステップS11で選択したファイルAの一部であるデータa1をキャッシュメモリ5に書き込むために必要な書き換え回数(以下、必要書き換え回数ΔWeと称する。)を見積もる。さらに、ステップS13で、キャッシュメモリ5の使用開始時から現時点までの書き換え回数の総計である累積書き換え回数Wnowを取得する。
次にステップS14で、必要書き換え回数ΔWeと累積書き換え回数Wnowの合計が上述のステップS1で算出した許容書き換え回数Wlimitより少ないか否かを判定する。少ないと判定した場合(ステップS14のYes)は、処理はステップS15に進み、ステップS11で選択したファイルの一部であるデータをキャッシュメモリ5に保存し、バッファメモリ4を解放する。したがって、ファイルAのΔWeとWnowの合計がWlimitより小さい場合には、図4Dに示すようにデータa1がキャッシュメモリ5に書き込まれ、その分バッファメモリ4が解放される。
Rの値が大きいファイルは、直近期間tにおいて、キャッシュメモリ5の書き換え回数に対し、キャッシュヒットによる通信削減量Ghitが大きいファイルであるといえる。すなわち、ファイルの更新回数が少ない割にアプリケーションによって利用される頻度が高いファイルであるということができる。したがって、そのような有効利用されているファイルの一部であるデータを優先してキャッシュメモリ5に保存することにより、キャッシュメモリ5を効率的に使用することができる。
ステップS15でデータがキャッシュメモリ5に保存され、バッファメモリ4の解放が行われた場合、次にステップS16で、アプリケーションから新たに書き込み要求がなされているデータをバッファメモリ4に保存することが可能か否かを判定する。データをバッファメモリ4に保存可能であると判定した場合は、処理は終了となる(ステップS16のYes)。一方、保存することが不可能であると判定した場合は、処理はステップS17に進む(ステップS16のNo)。本実施の形態では、図4B乃至図4Dに示すように、データb1、c1が破棄され、さらにデータa1がキャッシュメモリ5に保存されたことにより、バッファメモリ4の空き容量はデータa2よりも大きくなった。したがって、データa2をバッファメモリ4に保存することが可能であるため、処理は終了となる(ステップS16のYes)。
ところで、上述のステップS14で、ファイルAについての必要書き換え回数ΔWeと累積書き換え回数Wnowの合計が許容書き換え回数Wlimitよりも多いと判定した場合は、処理はステップS17に進む(ステップS14のNo)。したがって、その場合はステップS15によるデータa1のキャッシュメモリ5への保存は行われない。本発明の目的は、キャッシュメモリ5として用いられているフラッシュメモリの寿命を維持することである。そのため、ステップS14は、たとえキャッシュデータとしての利用効率が大きいファイルであっても、その書き込みのためにキャッシュメモリ5を構成するフラッシュメモリの寿命が尽きるような場合には書き込みを行わないようにするための処理である。これにより、キャッシュメモリ5の寿命を維持することができる。
また、ステップS16で、アプリケーションから新たに書き込み要求がなされたデータをバッファメモリ4に保存することが不可能であると判定した場合も同様に処理はステップS17に進む(ステップS16のNo)。
ステップS17では、キャッシュメモリ5に保存されているファイルの内、バッファメモリ4にデータを有し、通信合計量Gtotalがしきい値Sよりも大きいファイルの数をMとし、M>Nであるか否かを判定する。そして、M>Nであると判定した場合は、処理はステップS18に進む(ステップS17のYes)。M>Nであると判定した場合とは、通信合計量Gtotalがしきい値Sよりも大きいファイルのうち、まだステップS11で選択されていないファイルが存在することを意味する。ステップS18ではNをインクリメントし、その後、処理はステップS11に戻る。そして、ステップS11乃至ステップS18の処理によって、許容書き換え回数Wlimitを超えない限度において、バッファメモリ4内のデータがキャッシュメモリ5に保存されて、その分バッファメモリ4が解放される。ステップS18でNがインクリメントされることによって、ステップS11を繰り返すたびにRの大きさの順位に従って、ファイルが選択されることになる。
そして、ステップS17で、M>Nではないと判定した場合は、処理はステップS19に進む(ステップS17のNo)。M>Nではないと判定した場合とは、通信合計量Gtotalがしきい値Sよりも大きいファイルのうち、ステップS11で選択されていないファイルがこれ以上存在しないことを意味する。その場合、次にステップS19で、アプリケーションから最後に書き込み要求を受けたデータを破棄する。すなわち、ステップS16のNoからステップS17に至った場合は、バッファメモリ4に保存されたデータの破棄、書き出しを行ってもデータa2を保存するためのバッファメモリ4の空き容量を確保することができなかったため、データa2を破棄する。したがって、データa2はキャッシュメモリ5には保存されないため、アプリケーションがデータa2を必要とする場合は、インターネットにアクセスして取得することになる。
また、ステップS14のNoからステップS17に至った場合は、例えば、図5Aに示すように、データa1をキャッシュメモリ5に書き込もうとすると許容書き換え回数Wlimitを超えてしまうような場合である。許容書き換え回数Wlimitを超えてデータの書き換えを行うとキャッシュメモリ5の寿命が尽きてしまうため、その場合は、データa1をキャッシュメモリ5に保存しない。したがって、これ以上データa2を保存するためのバッファメモリ4の空き容量を確保することができない。このような場合に、図5Bに示すようにデータa1をキャッシュメモリ5に書き込まずバッファメモリ4に保持し、データa2を破棄する。これにより、データa2を保存することよりもキャッシュメモリ5の寿命を維持することを優先する。これにより、許容書き換え回数Wlimitを超えてキャッシュメモリ5の書き換えが行われることを防止し、キャッシュメモリ5の寿命を維持することができる。そして、メモリ管理装置1を搭載する機器の正常動作を維持することができる。
なお、データa2は破棄されるため、キャッシュメモリ5には保存されない。したがって、アプリケーションがデータa2を必要とする場合は、インターネットにアクセスして取得する必要がある。しかし、キャッシュとして保存しようとするデータが、必要な場合に常時インターネットから取得することができるものである場合は、キャッシュメモリ5への保存はアプリケーションが機能するために必要不可欠ではない。そこで、必要不可欠ではないキャッシュメモリ5への保存を制限することによってキャッシュメモリ5の寿命を延長することができる。
なお、アプリケーションからの1回の書き込み要求を1つのトランザクションとみなした場合、上述のようにバッファメモリ4に保存されたデータの破棄を行うと、トランザクションのアトミック性は保証されるが、永続性は保証されない。つまり、バッファメモリ4に保存されたデータの破棄が行われるとそのデータを一部とするファイルの内容はトランザクション単位で過去の状態に戻ることになる。アプリケーションがそれを許容することができない場合は、ステップS4で用いるしきい値Sを0に設定し、ステップS6乃至ステップS8の処理をスキップする。すなわち、しきい値Sを0に設定したことによって全てのファイルについての通信合計量Gtotalがしきい値Sよりも大きくなるためステップS6乃至ステップS8によるデータの破棄が行われない。さらに、ステップS19でデータを破棄する代わりにアプリケーションに対してエラー通知を行い、そのデータのバッファメモリへの保存は行わない。これにより、データは破棄されないため、そのようなアプリケーションにおいてもこの発明を適用することが可能になる。
また、アプリケーションが新しくインストールされたものである場合、一定期間、その新規アプリケーションが利用するデータを効率的に保存しておくために、新規アプリケーションが利用するデータは、優先的にキャッシュメモリ5に保存することが望ましい。その方法としては、通信削減量Ghitとして実際に見積もった値を用いる代わりに通信削減量Ghitには十分大きな定数値を設定し、通信発生量Gmissには0を設定することが考えられる。これにより、新規アプリケーションが利用するファイルは常に通信合計量Gtotalがしきい値Sよりも多くなる。さらに通信合計量Gtotal/直近書き換え回数ΔW=Rの値も大きくなるため、その新規アプリケーションが利用するファイルに属するデータが優先してキャッシュメモリ5に保存されることになる。
以上、この発明の実施の形態について具体的に説明したが、この発明は、上述の実施形態に限定されるものではなく、この発明の技術的思想に基づく範囲内で各種の変形や適用が可能である。例えば、この発明に係るメモリ管理装置は、パーソナルコンピュータに限られず、デジタルテレビジョン受信機、携帯電話機、PDA(Personal Digital Assistant)装置、通信機能を備えた携帯ゲーム機などの機器にも応用することができる。
また、キャッシュメモリ5に用いる記録媒体はフラッシュメモリに限られず、消去回数に限界がある記録媒体ならばどのような記録媒体を用いてもその記録媒体の寿命を延長し、効率よく利用することができる。
1・・・メモリ管理装置
2・・・制御部
3・・・インターフェース
4・・・バッファメモリ
5・・・キャッシュメモリ
2・・・制御部
3・・・インターフェース
4・・・バッファメモリ
5・・・キャッシュメモリ
Claims (9)
- 外部との通信を行うインターフェースと、
該インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、
前記バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、
該キャッシュメモリおよび前記バッファメモリに対する前記データの書き込み動作を制御する制御部とを有し、
前記制御部は、前記バッファデータがキャッシュとして有効利用される可能性を判定し、有効利用される可能性が低いと判定した前記バッファデータを破棄するよう制御するメモリ管理装置。 - 前記制御部は、前記バッファデータがキャッシュとして有効利用される可能性を判定し、有効利用される可能性が高いと判定した前記バッファデータを前記キャッシュメモリに書き込むよう制御する請求項1に記載のメモリ管理装置。
- 前記制御部は、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在し、キャッシュヒットしたことにより削減された前記インターフェースを介した通信量をしきい値と比較し、前記削減された通信量が前記しきい値よりも少ない場合に前記バッファデータは有効利用される可能性が低いと判定する請求項1に記載のメモリ管理装置。
- 前記制御部は、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在せず、キャッシュミスしたことにより発生した前記インターフェースを介した通信量をしきい値と比較し、前記発生した通信量が前記しきい値よりも少ない場合に前記バッファデータは有効利用される可能性が低いと判定する請求項1に記載のメモリ管理装置。
- 前記制御部は、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在し、キャッシュヒットしたことにより削減された前記インターフェースを介した通信量と、前記バッファデータが属する前記キャッシュファイルに前記アプリケーションから要求されたデータが存在せず、キャッシュミスしたことにより発生した前記インターフェースを介した通信量との合計をしきい値と比較し、前記合計が前記しきい値よりも少ない場合に前記バッファデータは有効利用される可能性が低いと判定する請求項1に記載のメモリ管理装置。
- 前記制御部は、有効利用される可能性が高いと判定された前記バッファデータが属するキャッシュファイルが複数存在する場合に、該複数のキャッシュファイルそれぞれについて、キャッシュファイルの更新に伴い行われた前記キャッシュメモリの書き換えの回数を測定し、さらに、キャッシュファイルに前記アプリケーションから要求されたデータが存在してキャッシュヒットしたことにより削減された前記インターフェースを介した通信量を推定し、前記書き換えの回数に対する前記削減された通信量の割合が大きい前記キャッシュファイルに属する前記バッファデータを優先して前記キャッシュメモリに書き込むよう制御する請求項2に記載のメモリ管理装置。
- 前記制御部は、現時点において前記キャッシュメモリが許容できる書き換え回数を算出し、該書き換え回数を超えない限度において、有効利用される可能性が高いと判定した前記バッファデータを前記キャッシュメモリに書き込むよう制御する請求項2に記載のメモリ管理装置。
- 外部との通信を行うインターフェースと、
該インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、
前記バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、
該キャッシュメモリおよび前記バッファメモリに対する前記データの書き込み動作を制御する制御部とを有し、
前記制御部は、前記アプリケーションが現時点から遡った一定期間にインストールされたものである場合、前記アプリケーションがキャッシュとして利用する前記キャッシュファイルに属する前記バッファデータを優先して前記キャッシュメモリに書き込むよう制御するメモリ管理装置。 - 外部との通信を行うインターフェースと、
該インターフェースを介して転送され、アプリケーションから書き込み要求を受けたデータをバッファデータとして一時的に保存する、揮発性メモリにより構成されるバッファメモリと、
前記バッファデータをキャッシュファイルに属するデータとして保存する、不揮発性メモリにより構成されるキャッシュメモリと、
該キャッシュメモリおよび前記バッファメモリに対する前記データの書き込み動作を制御する制御部とを有するメモリ管理装置におけるメモリ管理方法であって、
前記制御部は、前記揮発性メモリに保存された前記データがキャッシュとして有効利用される可能性を判定し、可能性が低いと判定した前記データを破棄するよう制御するメモリ管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009242960A JP2011090474A (ja) | 2009-10-22 | 2009-10-22 | メモリ管理装置およびメモリ管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009242960A JP2011090474A (ja) | 2009-10-22 | 2009-10-22 | メモリ管理装置およびメモリ管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011090474A true JP2011090474A (ja) | 2011-05-06 |
Family
ID=44108678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009242960A Pending JP2011090474A (ja) | 2009-10-22 | 2009-10-22 | メモリ管理装置およびメモリ管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011090474A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015130203A (ja) * | 2015-03-17 | 2015-07-16 | 株式会社東芝 | 情報処理装置、ネットワーク装置、及び情報処理プログラム |
JP2017134603A (ja) * | 2016-01-27 | 2017-08-03 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置およびデータ処理プログラム |
-
2009
- 2009-10-22 JP JP2009242960A patent/JP2011090474A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015130203A (ja) * | 2015-03-17 | 2015-07-16 | 株式会社東芝 | 情報処理装置、ネットワーク装置、及び情報処理プログラム |
JP2017134603A (ja) * | 2016-01-27 | 2017-08-03 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置およびデータ処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8972690B2 (en) | Methods and apparatuses for usage based allocation block size tuning | |
US7827358B2 (en) | Memory management methods and systems | |
US9274945B2 (en) | Processing unit reclaiming requests in a solid state memory device | |
US9201810B2 (en) | Memory page eviction priority in mobile computing devices | |
US20170123988A1 (en) | System and method for flash read cache with adaptive pre-fetch | |
US20100318745A1 (en) | Dynamic Content Caching and Retrieval | |
US20120185638A1 (en) | Method and system for cache endurance management | |
JP2015534157A5 (ja) | ||
JPH10133940A (ja) | メモリ装置 | |
US9170943B2 (en) | Selectively enabling write caching in a storage system based on performance metrics | |
JP2011530133A (ja) | キャッシュコンテンツの記憶管理 | |
JPH10111837A (ja) | メモリ装置 | |
JP2011514593A5 (ja) | ||
KR20100133710A (ko) | 메모리 시스템 및 그것의 코드 데이터 로딩 방법 | |
US7117306B2 (en) | Mitigating access penalty of a semiconductor nonvolatile memory | |
KR101668054B1 (ko) | 제한된 기록 내구성을 갖는 메모리들에 대한 인트라-세트 마모-레벨링을 위한 방법들 및 장치들 | |
CN111159059B (zh) | 一种垃圾回收方法、装置及非易失性的存储设备 | |
US20190095347A1 (en) | Multi-port shared cache apparatus | |
CN115794682A (zh) | 缓存替换方法及装置、电子设备、存储介质 | |
US20120124291A1 (en) | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data | |
JP6640776B2 (ja) | メモリシステム | |
Han et al. | A hybrid swapping scheme based on per-process reclaim for performance improvement of android smartphones (August 2018) | |
US7124262B2 (en) | Selectivity pipelining and prefetching memory data | |
JP2011090474A (ja) | メモリ管理装置およびメモリ管理方法 | |
JP2006350633A (ja) | データ管理方法及びデータ管理システム |