(57)【要約】【課題】静的にメモリの最低限の寿命を見積もり可能にする不揮発性メモリ、その制御方法及びプログラムを提供する。【解決手段】複数のブロック毎に電気的なデータの書込及び消去が行われる不揮発性メモリであって、時間を計測するカウンタ手段と、複数のブロック毎に、最後に消去が行われたときの時間が記録される記録手段と、所定のブロックの消去が行われた場合に、カウント手段で計測された現在の時間と、所定のブロックに対応して記録手段に記録されている時間とに基づいて演算を行う演算手段と、を有し、演算手段による演算結果が予め設定された規定値よりも小さい場合、ウェイト信号がアクティブにされる。【選択図】図１
2010205167.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロック毎に電気的なデータの書込及び消去が行われる不揮発性メモリであって、
時間を計測するカウンタ手段と、
前記複数のブロック毎に、最後に消去が行われたときの時間が記録される記録手段と、
所定のブロックの消去が行われた場合に、前記カウント手段で計測された現在の時間と、前記所定のブロックに対応して前記記録手段に記録されている時間とに基づいて演算を行う演算手段と、を有し、
前記演算手段による演算結果が予め設定された規定値よりも小さい場合、ウェイト信号がアクティブにされることを特徴とする不揮発性メモリ。
【請求項２】
前記演算手段による演算結果が予め設定された規定値よりも小さい場合、割込信号がアクティブにされることによって、異常の通知が行われることを特徴とする請求項１記載の不揮発性メモリ。
【請求項３】
前記演算手段による演算結果が予め設定された規定値よりも大きい場合、前記所定のブロックの消去が行われた後、前記所定のブロックに対応して前記記録手段に記録されている時間が、前記カウント手段で計測された現在の時間に基づいて新たな値に更新されることを特徴とする請求項１又は２記載の不揮発性メモリ。
【請求項４】
前記所定のブロックの消去が電源オン後に初めて行われた消去であるか否かが、前記記録手段に記録されている時間に基づいて判断され、
前記演算手段は、
前記所定のブロックの消去が初めて行われた消去ではない場合に前記演算を行うことを特徴とする請求項１から３のいずれか１項に記載の不揮発性メモリ。
【請求項５】
前記所定のブロックの消去が初めて行われた消去である場合、前記カウンタ手段で計測された現在の時間が、前記記録手段において前記所定のブロックに対応して記録されることを特徴とする請求項４記載の不揮発性メモリ。
【請求項６】
複数のブロック毎に電気的なデータの書込及び消去が行われる不揮発性メモリの制御方法であって、
前記不揮発性メモリ又は前記不揮発性メモリと接続される電子機器は、
時間の計測を行うステップと、
前記複数のブロック毎に、最後に消去が行われたときの時間を記録しておくステップと、
所定のブロックの消去が行われた場合に、計測した現在の時間と、前記所定のブロックに対応して記録されている時間とに基づいて演算を行うステップと、
前記演算の結果が予め設定された規定値よりも小さい場合、ウェイト信号をアクティブにするステップと、
を有することを特徴とする不揮発性メモリの制御方法。
【請求項７】
前記演算の結果が予め設定された規定値よりも小さい場合、割込信号をアクティブにすることによって、異常の通知を行うステップを有することを特徴とする請求項６記載の不揮発性メモリの制御方法。
【請求項８】
複数のブロック毎に電気的なデータの書込及び消去が行われる不揮発性メモリを制御するためのプログラムであって、
時間の計測を行う処理と、
前記複数のブロック毎に、最後に消去が行われたときの時間を記録しておく処理と、
所定のブロックの消去が行われた場合に、計測した現在の時間と、前記所定のブロックに対応して記録されている時間とに基づいて演算を行う処理と、
前記演算の結果が予め設定された規定値よりも小さい場合、ウェイト信号をアクティブにする処理と、
をコンピュータに実行させることを特徴とするプログラム。
【請求項９】
前記演算の結果が予め設定された規定値よりも小さい場合、割込信号をアクティブにすることによって、異常の通知を行う処理をコンピュータに実行させることを特徴とする請求項８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの書込及び消去を電気的に可能とする不揮発性メモリ、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
データの書込及び消去を電気的に可能とする不揮発性メモリの一例として、例えば特許文献１、２に開示されているフラッシュメモリがある。フラッシュメモリは、ハードディスクよりも小型で衝撃に強く、バックアップ電源が不要であるという特徴によって、現在幅広く使用されている。フラッシュメモリは、例えば、携帯電話、ゲーム機器、デジタルカメラ、パソコンなどの情報処理装置において、メインメモリ、メモリカードやＵＳＢ（Universal Serial Bus）メモリ、ＢＩＯＳ（Basic Input/Output System）などに使用されている。
【０００３】
フラッシュメモリでは、複数のブロック（記憶素子）が備えられ、ブロック単位でデータの消去と書込（これを書換という）が行われるが、書換回数には制限がある。この書換回数は、フラッシュメモリ全体対しての回数ではなく、ブロック１つに対しての回数であるので、データの書換が特定のブロックに集中してしまうと、フラッシュメモリの寿命が短くなってしまう。このようなことから、フラッシュメモリでは、寿命を延ばすための手法として、ウェアレベリングと呼ばれる仕組みを備える必要がある。このウェアレベリングは、データの書換が行われる部分が特定のブロックに集中しないように均等に分散させる手法である。これにより、各ブロックにおける書換回数が均一化され、結果としてフラッシュメモリの寿命を延ばすことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−９９９８３号公報
【特許文献２】特開２００７−１５６８６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
フラッシュメモリにおいて、ハードウェアを用いてウェアレベリングを実装することは、コスト増や大型化という問題が生じるため、昨今のフラッシュメモリの普及状況を鑑みると現実的ではない。よって、ウェアレベリングは、ハードウェアではなく、ソフトウェアを用いて実装することが望ましい。
【０００６】
しかしながら、ソフトウェアを用いてウェアレベリングを実装する場合、ソフトウェアのバグ等により書換が著しく発生するという不具合が起こりうる。そして、このような不具合が起こると、書換回数が無駄に消化されてしまい、フラッシュメモリの寿命が短くなってしまうという問題が生じる。なお、上記不具合の検出には、全てのケースを網羅するなど、長時間のテストを必要とすることが多くなるため、事前に不具合を検出してその対策を行うことは困難である。
【０００７】
本発明は、上記事情に鑑みてなされたものであり、静的にメモリの最低限の寿命を見積もり可能にする不揮発性メモリ、その制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
かかる目的を達成するために、本発明の不揮発性メモリは、複数のブロック毎に電気的なデータの書込及び消去が行われる不揮発性メモリであって、時間を計測するカウンタ手段と、複数のブロック毎に、最後に消去が行われたときの時間が記録される記録手段と、所定のブロックの消去が行われた場合に、カウント手段で計測された現在の時間と、所定のブロックに対応して記録手段に記録されている時間とに基づいて演算を行う演算手段と、を有し、演算手段による演算結果が予め設定された規定値よりも小さい場合、ウェイト信号がアクティブにされることを特徴とする。
【０００９】
本発明の不揮発性メモリの制御方法は、複数のブロック毎に電気的なデータの書込及び消去が行われる不揮発性メモリの制御方法であって、不揮発性メモリ又は不揮発性メモリと接続される電子機器は、時間の計測を行うステップと、複数のブロック毎に、最後に消去が行われたときの時間を記録しておくステップと、所定のブロックの消去が行われた場合に、計測した現在の時間と、所定のブロックに対応して記録されている時間とに基づいて演算を行うステップと、演算の結果が予め設定された規定値よりも小さい場合、ウェイト信号をアクティブにするステップと、を有することを特徴とする。
【００１０】
本発明のプログラムは、複数のブロック毎に電気的なデータの書込及び消去が行われる不揮発性メモリを制御するためのプログラムであって、時間の計測を行う処理と、複数のブロック毎に、最後に消去が行われたときの時間を記録しておく処理と、所定のブロックの消去が行われた場合に、計測した現在の時間と、所定のブロックに対応して記録されている時間とに基づいて演算を行う処理と、演算の結果が予め設定された規定値よりも小さい場合、ウェイト信号をアクティブにする処理と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、不揮発性メモリにおいて、静的にメモリの最低限の寿命を見積もり可能にする。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係る不揮発性メモリの構成例を示すブロック図である。
【図２】本発明の一実施形態に係る不揮発性メモリのＲＡＭで使用される領域の例を示す図である。
【図３】本発明の一実施形態に係る不揮発性メモリの動作例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態（実施形態）について添付図面を参照して詳細に説明する。本発明の不揮発性メモリの一実施形態として、電気的にデータの消去及び書込が可能なフラッシュメモリを例に説明する。
【００１４】
まず、本実施形態のフラッシュメモリの構成について図１を用いて説明する。
【００１５】
図１に示すように、本実施形態のフラッシュメモリは、一般的な構成であるメモリアレイ１及びＩ／Ｆ回路２の他に、カウンタ（カウンタ手段）３、ＲＡＭ（記録手段）４、演算器（演算手段）５を有している。なお、図示していないが、本実施形態のフラッシュメモリは、所定の電子機器に接続（組込も含む）されているものとする。電子機器の例としては、携帯電話、ゲーム機器、デジタルカメラ、パソコンなどの情報処理装置が挙げられる。
【００１６】
Ｉ／Ｆ回路２は、アドレス、データ、ＷＡＩＴ信号がそれぞれ伝送される信号線（バス）と接続される。また、本実施形態でのＩ／Ｆ回路２は、割込信号が伝送される信号線とも接続される。なお、アドレス、データ、ＷＡＩＴ信号がそれぞれ伝送される信号線は、図示しないＣＰＵ（Central Processing Unit）と接続されている。このＣＰＵは、本実施形態のフラッシュメモリが接続（組込）されている電子機器のＣＰＵである。
【００１７】
カウンタ３には、カウンタ用のクロックが入力される。このクロック入力は、例として、簡便さと通常時計として使用される水晶周波数の32.768kHzとし、規定値は0x40000（８秒）とする。このカウンタ３は、時間をカウントし、タイムスタンプを取得する。取得されたタイムスタンプは、カウンタ値としてＲＡＭ４の所定の領域に記録（設定）される。
【００１８】
また図１では、例として、メモリアレイ１は１２８個のブロック（記憶素子）から構成されるものとし、カウンタ３は実仕様上あふれることがない６４bitとし、ＲＡＭ４は６４bit×（１２８＋１）＝１０３２バイトとし、電源ＯＮ時にすべて０に初期化されるものとする。
【００１９】
ＲＡＭ４は、メモリアレイ１のブロック毎に、最後に消去が行われたときのタイムスタンプが記録される。ここで、ＲＡＭ４にて使用される領域について図２に例示する。ＲＡＭ４では、ブロック０〜１２８毎にカウンタ値保持領域が分割される。カウンタ値保持領域とは、カウンタ３で取得されたカウンタ値（タイムスタンプ）を記録して保持するための領域である。図２に示すように、アドレス「０」はブロック０用のカウンタ値保持領域であり、アドレス「８」はブロック１用のカウンタ値保持領域である。このようにして、ＲＡＭ４において、ブロック１用〜ブロック１２８用までの、１２８個のカウンタ値保持領域が使用される。また、ＲＡＭ４においては、規定値設定用の保持領域が使用される。この領域には、上述したように、例として規定値0x40000（８秒）が保持される。
【００２０】
次に、本実施形態のフラッシュメモリの動作（本発明のフラッシュメモリの制御方法及びプログラムの一実施形態）について図３を用いて説明する。図３に示す動作を実行するためのプログラムは、フラッシュメモリ内に格納されている。このプログラムは、図示しない電子機器のＣＰＵに読み込まれる。そしてＣＰＵは、そのプログラムによって制御され、図３の動作を行う。
【００２１】
例えばブロック０が消去された場合、ＣＰＵは、電子機器の電源ＯＮ後の初めての消去であるかどうかを判断する（ステップＳ１）。ＣＰＵは、ＲＡＭ４におけるブロック０用のカウンタ値保持領域に記録（設定）されているカウンタ値を参照する。そして、ＣＰＵは、参照した結果、カウンタ値が０である場合は電源ＯＮ後の初めての消去であると判断し、カウンタ値が０ではない場合は電源ＯＮ後の初めての消去ではないと判断する。
【００２２】
ここでは、例として、ＲＡＭ４におけるブロック０用のカウンタ値保持領域に記録されているカウンタ値は０であるとする。よって、ＣＰＵは、電子機器の電源ＯＮ後の初めての消去であると判断し（ステップＳ１／ＹＥＳ）、カウンタ３から現在のカウンタ値を取得し、その値をＲＡＭ４のブロック０用のカウンタ値保持領域に記録する（ステップＳ２）。ここでは、例としてこのカウンタ値を0x8000とする。
【００２３】
そして、前回の消去から１０秒後に、再びブロック０が消去されたとする。ＣＰＵは、再び、電源ＯＮ後の初めての消去であるかどうかを判断する（ステップＳ１）。このとき、ＲＡＭ４のブロック０用のカウンタ値保持領域には、カウンタ値0x8000が記録されている。よって、ＣＰＵは、ブロック０用のカウンタ値保持領域を参照した結果、カウンタ値が０ではないので、電源ＯＮ後の初めての消去ではないと判断する（ステップＳ１／ＮＯ）。
【００２４】
ＣＰＵは、演算器５を用いて数式（現在のカウンタ値−カウンタ値保持領域のカウンタ値）を演算させ、その演算結果と、ＲＡＭ４における規定値設定用の保持領域に予め記録されている規定値とを比較する（ステップＳ３）。この動作は、例えば次のようになる。まずＣＰＵは、カウンタ３から現在のカウンタ値0x50000（１０秒）を取得し、ＲＡＭ４からカウンタ値保持領域のカウンタ値0x8000を取得し、取得した両方の値を演算器５に入力する。次に演算器５において（0x50000−0x8000）が演算される。この演算結果は、0x42000となる。一方で、規定値は、上述したように0x40000（８秒）である。ＣＰＵは、演算結果0x42000と、規定値0x40000とを比較する。
【００２５】
ステップＳ３における比較の結果、演算結果の方が規定値よりも大きいので（ステップＳ４／ＹＥＳ）、消去が実行された後、ＣＰＵ、ブロック０用のカウンタ値保持領域に記録されているカウンタ値0x8000を0x58000（0x8000＋0x50000）に更新する（ステップＳ５）。
【００２６】
そして、前回の消去から１秒後に、再びブロック０が消去されたとする。ＣＰＵは、再び、電源ＯＮ後の初めての消去であるかどうかを判断する（ステップＳ１）。このとき、ＲＡＭ４のブロック０用のカウンタ値保持領域には、カウンタ値0x58000が記録されている。よって、ＣＰＵは、ブロック０用のカウンタ値保持領域を参照した結果、カウンタ値が０ではないので、電源ＯＮ後の初めての消去ではないと判断する（ステップＳ１／ＮＯ）。
【００２７】
ＣＰＵは、再び、演算器５を用いて数式（現在のカウンタ値−カウンタ値保持領域のカウンタ値）を演算させ、その演算結果と、ＲＡＭ４における規定値設定用の保持領域に予め記録されている規定値とを比較する（ステップＳ３）。この動作は、例えば次のようになる。まずＣＰＵは、カウンタ３から現在のカウンタ値0x55000（１１秒）を取得し、ＲＡＭ４からカウンタ値保持領域のカウンタ値0x58000を取得し、取得した両方の値を演算器５に入力する。演算器５において（0x55000−0x58000）が演算される。この演算結果は-0x3000となる。一方で、規定値は0x40000である。よって、ＣＰＵは、演算結果-0x3000と、規定値0x40000とを比較する。
【００２８】
ステップＳ３における比較の結果、演算結果の方が規定値よりも小さいので（ステップＳ４／ＮＯ）、ＣＰＵは、ＷＡＩＴ信号をＡＣＴＩＶＥにする（ステップＳ６）。なお、ＷＡＩＴ信号のＡＣＴＩＶＥは、演算結果が規定値よりも小さい間中行われる。このように、ＷＡＩＴ信号をＡＣＴＩＶＥにすることによって、静的に最低限の寿命を見積もり可能にする（静的な寿命設計を可能にする）。
【００２９】
なお、上記図３のステップＳ６において、ＷＡＩＴ信号をＡＣＴＩＶＥとする代わりに、割込信号をＡＣＴＩＶＥとして、ＣＰＵへ異常を通知するようにしてもよい。これにより、ソフトウェアの不具合の検出を可能にする。あるいは、上記図３のステップＳ６において、ＷＡＩＴ信号をＡＣＴＩＶＥにすると同時に、割込信号をＡＣＴＩＶＥにすることによって、ＣＰＵに異常を通知するようにしてもよい。これにより、静的に最低限の寿命を見積もり可能にするとともに、ソフトウェアの不具合の検出を可能にする。
【００３０】
なお、上記説明では図３の動作を行う主体を、電子機器のＣＰＵとして説明したが、これに限定されない。例えば、動作の主体は演算器５であってもよい。
【００３１】
以上説明したように、本実施形態のフラッシュメモリでは、規定時間（規定値）内の再消去の場合、ＷＡＩＴ信号を使用してバスマスタを待たせる。すなわち本実施形態では、所定ブロックの消去のときに前回消去した時間と比較し、一定時間（規定値）を過ぎていなければ、ＷＡＩＴ信号をＡＣＴＩＶＥにすることで、静的に最低限の寿命を見積もり可能にする。つまり、一般的なフラッシュメモリに１キロバイト程度の少量のＲＡＭとカウンタと演算器を追加するだけで、仮にソフトウェアに不具合があったとしても、フラッシュメモリの最低限の寿命を保障できる。例えば、本実施形態のフラッシュメモリにおいて、ブロックが１２８個あって、１０万回の書換が可能であるような場合、規定時間を２０秒とすれば、各ブロックを順番にアクセスしたとしても、最低限１０万回×２０秒＝約８年という期間の保障が可能となる。
【００３２】
また、本実施形態のフラッシュメモリでは、規定時間（規定値）内の再消去の場合、割込信号を使用してＣＰＵに通知する。すなわち本実施形態のフラッシュメモリでは、所定ブロックの消去のときに前回消去した時間と比較し、一定時間（規定値）を過ぎていなければ、割込信号をＡＣＴＩＶＥにしてＣＰＵに異常を通知することで、ソフトウェアの不具合の検出を可能にする。
【００３３】
以上、本発明の実施形態について説明したが、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変形が可能である。例えば、上記実施形態で説明した処理動作に従って時系列的に実行されるのみならず、処理を実行する装置の処理能力、あるいは、必要に応じて並列的にあるいは個別に実行するように構築することも可能である。
【産業上の利用可能性】
【００３４】
本発明は、不揮発性メモリを使用可能な機器・装置、システム全般に適用できる。
【符号の説明】
【００３５】
１    メモリアレイ
２    Ｉ／Ｆ回路
３    カウンタ
４    ＲＡＭ
５    演算器
【図１】
2010205167.tif 000003
【図２】
2010205167.tif 000004
【図３】
2010205167.tif 000005