(57)【要約】【課題】ブロック単位に消去が行われる不揮発性メモリの信頼性向上を図る。【解決手段】制御部１０は、タイマ１２，１３を用いて、フラッシュメモリ２０（不揮発性メモリ）の第１のブロックへのデータの最初の書き込みからの経過時間に周囲温度を加味した実効的なデータ保持時間を求める。ブロックの書き換え回数と実効的なデータ保持時間とに応じて当該ブロックのデータ保持保証時間を予め定めたデータ保持保証値テーブル２１を参照し、第１のブロックについて求められた実効的なデータ保持時間を、当該ブロックの書き換え回数に応じたデータ保持保証時間と比較する。この比較の結果、前記求められた実効的なデータ保持時間が当該ブロックの書き換え回数に応じたデータ保持保証時間以上となったとき、データ保持時間第１のブロックのデータを第２のブロックに書き換える。【選択図】図１
2010165039.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位に消去が行われる不揮発性メモリの第１のブロックへのデータの最初の書き込みからの経過時間に周囲温度を加味した実効的なデータ保持時間を求める第１のステップと、
ブロックの書き換え回数と実効的なデータ保持時間とに応じて当該ブロックのデータ保持保証時間を予め定める第２のステップと、
前記第１のブロックについて求められた実効的なデータ保持時間を、当該ブロックの書き換え回数に応じたデータ保持保証時間と比較する第３のステップと、
比較の結果、前記求められた実効的なデータ保持時間が当該ブロックの書き換え回数に応じたデータ保持保証時間以上となったとき、前記第１のブロックのデータを第２のブロックに書き換える第４のステップと
を備えたメモリ制御方法。
【請求項２】
前記第１のステップにおいて、前記経過時間は、予め定めた一定周期の満了時に、その時点の周囲温度を考慮して実効的なデータ保持時間の追加分を求め、この追加分で更新される請求項１に記載のメモリ制御方法。
【請求項３】
前記第１のブロックに次いで古いデータを格納した第３のブロックを新たな第１のブロックとして前記第１，第３，第４のステップを繰り返して実行する請求項１または２に記載のメモリ制御方法。
【請求項４】
ブロック単位に消去が行われる不揮発性メモリの第１のブロックへのデータの最初の書き込みからの経過時間に周囲温度を加味した実効的なデータ保持時間を求める計時手段と、
ブロックの書き換え回数と実効的なデータ保持時間とに応じて当該ブロックのデータ保持保証時間を予め定めたデータテーブルと、
前記第１のブロックについて求められた実効的なデータ保持時間を、当該ブロックの書き換え回数に応じたデータ保持保証時間と比較し、この比較の結果、前記求められた実効的なデータ保持時間が当該ブロックの書き換え回数に応じたデータ保持保証時間以上となったとき、前記第１のブロックのデータを第２のブロックに書き換える制御手段と
を備えたメモリ制御装置。
【請求項５】
ブロック単位に消去が行われる不揮発性メモリと、
この不揮発性メモリを制御するメモリ制御装置と、
周囲温度を計測する温度計測手段とを備え、
このメモリ制御装置は、
ブロック単位に消去が行われる不揮発性メモリの第１のブロックへのデータの最初の書き込みからの経過時間に周囲温度を加味した実効的なデータ保持時間を求める計時手段と、
ブロックの書き換え回数と実効的なデータ保持時間とに応じて当該ブロックのデータ保持保証時間を予め定めたデータテーブルと、
前記第１のブロックについて求められた実効的なデータ保持時間を、当該ブロックの書き換え回数に応じたデータ保持保証時間と比較し、この比較の結果、前記求められた実効的なデータ保持時間が当該ブロックの書き換え回数に応じたデータ保持保証時間以上となったとき、前記第１のブロックのデータを第２のブロックに書き換える制御手段と
を有する電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック単位に消去が行われる不揮発性メモリを制御する方法、装置およびこれを用いた電子機器に関する。
【背景技術】
【０００２】
近年、半導体プロセスの微細化が進み、再書き込み可能な不揮発性メモリの一種であるフラッシュメモリの信頼性の低下が問題となりつつある。特に多値ＮＡＮＤフラッシュメモリにおいては、書き換え回数を重ねた後のデータ保持時間が短くなってきており、これを使用した製品寿命内にデータ化けが発生する可能性が高まってきている。
【０００３】
図６に、フラッシュメモリの書き換え回数とデータ保持保証時間と温度との関係のイメージ図を示す。この図から分かるように、メモリ内のデータが安定的に保持されることが保証される時間であるデータ保持保証時間は、書き換え回数が増加していくにつれて低下するとともに、周囲の温度によっても変化する。特に、温度が高くなるほど、データ保持保証時間は短くなる。
【０００４】
特許文献１には、メモリセルに記憶した値を保持するために周期的にリフレッシュする抵抗メモリにおいて、クロックサイクルや読み出しアクセスの回数をカウントし、カウント値に応じてリフレッシュを行う際に、周囲温度に応じて１回のカウント時のカウントの増加幅を変える技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１５２９０４号号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
フラッシュメモリに関して、頻繁に読み出しを行う領域に対しては、データ化けが発生したビット数をモニタすることで、エラー訂正可能な範囲で再書き込みする技術が知られている。しかし、書き換え回数を重ねた上に高温条件となると、一度もデータ読み出し（Read）を行わない間にデータ化けが発生する恐れがある。
【０００７】
今後、一層の微細化/多値化が進むにつれて、この問題が顕著になり、重要な課題となることが予想される。
【０００８】
上記特許文献１には周囲温度に応じてカウント値の重み付けを変えることが示されている。
【０００９】
特許文献１に記載の技術は抵抗メモリに関するもので、書き換え回数に制限があるフラッシュメモリにおける特有の問題については配慮されていない。
【００１０】
本発明は、ブロック単位に消去が行われる不揮発性メモリの信頼性向上を図るメモリ制御方法および装置を提供するものである。
【課題を解決するための手段】
【００１１】
本発明によるメモリ制御方法は、ブロック単位に消去が行われる不揮発性メモリの第１のブロックへのデータの最初の書き込みからの経過時間に周囲温度を加味した実効的なデータ保持時間を求める第１のステップと、ブロックの書き換え回数と実効的なデータ保持時間とに応じて当該ブロックのデータ保持保証時間を予め定める第２のステップと、前記第１のブロックについて求められた実効的なデータ保持時間を、当該ブロックの書き換え回数に応じたデータ保持保証時間と比較する第３のステップと、比較の結果、前記求められた実効的なデータ保持時間が当該ブロックの書き換え回数に応じたデータ保持保証時間以上となったとき、前記第１のブロックのデータを第２のブロックに書き換える第４のステップとを備える。
【００１２】
第１のステップにより、不揮発性メモリの一つのブロックである第１のブロックへのデータの最初の書き込みからの経過時間に周囲温度を加味することにより、当該ブロックの実効的なデータ保持時間が求められる。また、第２のステップにより、ブロックの書き換え回数と実効的なデータ保持時間とに応じて当該ブロックのデータ保持保証時間が比較の基準値として予め定められる。第３のステップにより、前記第１のブロックについて求められた実効的なデータ保持時間と、当該ブロックの書き換え回数に応じたデータ保持保証時間とが比較される。その結果、第４のステップで、前記求められた実効的なデータ保持時間が当該ブロックの書き換え回数に応じたデータ保持保証時間以上となったとき、前記第１のブロックのデータが第２のブロックに書き換えられる。これにより、当該データは新たなブロックに書き込まれるので、その経過時間はリセットされ、より長いデータ保持時間が期待される。
【００１３】
本発明によるメモリ制御装置は、ブロック単位に消去が行われる不揮発性メモリの第１のブロックへのデータの最初の書き込みからの経過時間に周囲温度を加味した実効的なデータ保持時間を求める計時手段と、ブロックの書き換え回数と実効的なデータ保持時間とに応じて当該ブロックのデータ保持保証時間を予め定めたデータテーブルと、前記第１のブロックについて求められた実効的なデータ保持時間を、当該ブロックの書き換え回数に応じたデータ保持保証時間と比較し、この比較の結果、前記求められた実効的なデータ保持時間が当該ブロックの書き換え回数に応じたデータ保持保証時間以上となったとき、前記第１のブロックのデータを第２のブロックに書き換える制御手段とを備えたものである。
【００１４】
また、本発明による電子機器は、ブロック単位に消去が行われる不揮発性メモリと、この不揮発性メモリを制御するメモリ制御装置と、周囲温度を計測する温度計測手段とを備え、このメモリ制御装置として上記の装置を用いたものである。
【発明の効果】
【００１５】
本発明により、周囲温度と書き換え回数によって変化する不揮発性メモリのデータ保持時間として温度を加味した実効的な時間を算出し、この算出結果に基づいてデータ保持保証可能な範囲でブロック単位に再書き込みを行うことにより、データが化けてしまうことを未然に防ぎ、不揮発性メモリの信頼性の向上を図ることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明によるブロック単位に消去が行われる不揮発性メモリのメモリ制御方法を採用する電子機器の概略のハードウェア構成を示した図である。
【図２】本発明の実施の形態におけるフラッシュメモリへの初回の書込時の処理を示したフローチャートである。
【図３】本発明の実施の形態におけるタイマＢが満了したときの処理のフローチャートである。
【図４】本発明の実施の形態におけるフラッシュメモリへの書き込み発生時の処理のフローチャートである。
【図５】本発明の実施の形態におけるデータ保持保証値テーブルの内容例を示した図である。
【図６】従来の書き換え回数・データ保持保証時間・温度の関係のイメージを示した図である。
【発明を実施するための形態】
【００１７】
以下、本発明の好適な実施の形態について詳細に説明する。
【００１８】
図１は、本発明によるブロック単位に消去が行われる不揮発性メモリのメモリ制御方法を採用する電子機器の概略のハードウェア構成を示している。この電子機器は、制御部１０、ＲＡＭ１１、タイマＡ１２、タイマＢ１３、温度センサ１４、フラッシュメモリ２０を備えている。その他、電子機器が携帯電話機のような機器であれば、基地局との無線通信を行う通信部、ユーザの指示や情報を入力するための操作部、表示画面上に情報を表示する表示部、電源部、等を備える。
【００１９】
制御部１０は、ＣＰＵなどのプロセッサにより構成され、コンピュータプログラムの実行により電子機器の各部を制御する手段である。
【００２０】
ＲＡＭ１１は、制御部１０がデータの一時記憶領域や作業領域として利用するメモリである。本実施の形態では、フラッシュメモリ２０のデータ保持時間確認対象ブロック、そのブロックのデータ保持時間等のデータ（パラメータ）を一時的に保持する。フラッシュメモリにおける「ブロック」は消去の最小記憶単位である。書き込みはブロックより小さいセクタやページと呼ばれる単位で書き込みが行われる。
【００２１】
タイマＡ１２は、リアルタイムクロック（ＲＴＣ）のように基準時間を計測する計時手段である。タイマＢ１３は、温度測定間隔の時間を計測する計時手段である。タイマＡとタイマＢとは、単一のタイマで実現することも可能であるが、使用目的が異なるため別個に設けている。
【００２２】
温度センサ１４は、フラッシュメモリ２０またはその周囲の温度を測定する温度計測手段である。
【００２３】
フラッシュメモリ２０は、本実施の形態における制御対象である再書き込み可能な不揮発性のメモリであり、上述したコンピュータプログラムや各種のデータを不揮発的に保持する。フラッシュメモリ２０は、基準温度Tbaseにおける一定の書き換え回数ごとのデータ保持保証が可能な時間を定めたデータテーブルであるデータ保持保証値テーブル２１を保持している。このテーブルは、不揮発的に保持できればフラッシュメモリ２０以外の記憶部に記憶してもよい。なお、本実施の形態の前提条件として、フラッシュメモリ２０の各ブロック（Ｂｌｏｃｋ）の書き換え回数が保持されているものとする。書き換え回数の平滑化処理が行われている際は、その代表値を用いてもよい。
【００２４】
これらの各部と制御部１０とはバス３０を介して相互に接続されている。
【００２５】
以下、本実施の形態における動作を図２〜図４を用いて説明する。
【００２６】
図２は、フラッシュメモリ２０への初回の書込時の処理を示したフローチャートである。
【００２７】
フラッシュメモリへの初回書き込み時には、「実効データ保持時間」「累積実効データ保持時間」のようなパラメータを初期化する（Ｓ１１）。書き込むブロックをＢｌｏｃｋＡとすると、「実効データ保持時間」の確認対象となるブロックを今回書き込み行うＢｌｏｃｋＡとする（すなわち、「確認対象ブロック」BLKcmp＝Ａ）。ブロックＡへ（消去後）初めて書き込みを行った時点の累積実効データ保持時間Tact[A]を０とし、ＲＡＭ１１上に保持されている累積実効データ保持時間Tact_RAMを０とする。
【００２８】
「実効データ保持時間」とは、あるブロック（第１のブロック）へのデータの最初の書き込みからの経過時間に周囲温度を加味した実効的なデータ保持時間であり、「累積実効データ保持時間」はその累積した時間である。
【００２９】
ついで、「確認対象ブロック」BLKcmp、その「実効データ保持時間」Tact[BLKcmp]、およびＲＡＭ１１上に保持されている累積実効データ保持時間Tact_RAMの３つのパラメータをＲＡＭ１１に保持する（Ｓ１２）。また、ブロックＡの「実効データ保持時間」Tact[A]と、「書き込み時の基準時間」Tref[A]の各パラメータとを、フラッシュメモリ２０に、今回書き込みを行うブロックに対応付けて書き込む（Ｓ１３）。この書き込みを行う場所は、フラッシュメモリの他のブロック（管理用ブロック）を想定している。但し、管理用ブロックではなく各部ロックの所定の箇所（例えば先頭）の領域であってもよい。その後、タイマＢをスタートさせる（Ｓ１４）。
【００３０】
図３にタイマＢが満了したとき（満了時）の処理のフローチャートを示す。
【００３１】
制御部１０は、タイマＢで計測していた時間が所定時間に達した（満了した）とき、温度センサ１４の値Ｔｍｅｓを読み込む（Ｓ２１）。この値をもとにアレニウス・モデルの次式（１）等を用いて温度加速係数を算出する（Ｓ２２）。
温度加速係数α＝exp｛（Ea/k）・（(1/Tmes）−(1/Tbase)）｝・・・  （１）
【００３２】
ここに各変数は以下のとおりである。
Ea：  活性化エネルギー
ｋ：  ボルツマン係数
Tmes：  温度センサで計測された絶対温度
Tbase：  データ保持保証値テーブル２１作成の際の絶対温度
【００３３】
タイマＢが満了する所定の時間（すなわち一定周期Tcyc）に温度加速係数αを掛け合わせることにより、温度による影響を考慮した実効値α・Tcycを算出する。次式（２）に示すように、この実効値に対して、ＲＡＭ１１上に保持されている累積実効データ保持時間Tact_RAMに足し合わせることで現時点の累積実効データ保持時間Tact[now]を算出する（Ｓ２３）。
Tact[now]＝Tact_RAM  ＋  α・Tcyc    ・・・  （２）
【００３４】
ここに、Tact[now]は 現時点での累積実効データ保持時間を表す。この現時点での実効データ保持時間の値Tact[now]と値Tact[BLKcmp]の差である当該確認対象ブロックの実効データ保持時間を、データ保持保証値テーブル２１における、確認対象ブロックの現在の書き換え回数に応じた値Tmax[y]と比較する（Ｓ２４）。Tact[BLKcmp]は、ブロックBLKcmpへ（消去後）初めて書き込みを行った時点の累積実効データ保持時間である。すなわち、次式（３）の成否を確認する。
Tact[now]−Tact[BLKcmp] ≧ Tmax[y]  ・・・  （３）
【００３５】
データ保持保証値テーブル２１には、図５に示すように、書き換え回数（ｙ）の範囲毎に、対応するデータ保持保証時間Tmax[y]が定められている。このデータ保持保証時間は、ブロックが書き換えられてからそのブロックのデータの保持が保証される時間である。ここに、トータルの書き換え回数ｙが多いほど、データ保持保証時間Tmax[y]は短くなっていく（Ｔ１＞Ｔ２＞Ｔ３…）。なお、書き換え回数ｙは一般的なフラッシュメモリの制御ソフトウェアが備えたWearLevelingという各ブロックの書き換え回数を平滑化する機能によりカウントされ、フラッシュメモリ上の管理データとして保存されており、その値を利用することができる。
【００３６】
比較の結果、現時点での実効データ保持時間の値Tact[now]と値Tact[BLKcmp]の差である当該確認対象ブロックの実効データ保持時間が所定値Tmax[y]以上である場合、当該確認対象ブロックのデータを他のブロックへ書き換える書き換え（移動）処理を実施する。この所定値Tmax[y]は y回書き換え後のデータ保持保証時間を表す。
【００３７】
データの書き換え（移動）処理では、まず、タイマＡの値を読み込む（Ｓ２６）。現在の確認対象ブロックBLKcmpが示すブロック（第１のブロック）の次に古いブロック（第３のブロック：ブロックＢ）を検索し（Ｓ２７）、確認対象ブロックBLKcmpを当該ブロックであるブロックＢに設定する（Ｓ２８）。（すなわち、BLKcmp＝Bとする。）「次に古いブロック」の検索方法としては、各ブロックに対しての初回書き込み時に保存した基準時間を用いると容易である。
【００３８】
次に、現在有効なデータを保存しているブロックのうち現時点で最も古いブロック（第１のブロック）のデータを、空き状態の他のブロック（第２のブロック：ブロックＣ）へ書き換える（移動する）（Ｓ２９）。「他のブロック」の決定方法は特に限定しないが、例えば、書き換え回数の少ない空きブロックを用いることができる。このときの手順は後述の図４で説明する。さらに、当該パラメータをＲＡＭ１１に保存する（Ｓ３０）。すなわち、ＲＡＭ１１上の「確認対象ブロック」BLKcmp、新たな確認対象ブロック（ブロックＣ）の書き込み時点での現時点の「累積実効データ保持時間」Tact[BLKcmp]、現時点のＲＡＭ上の「累積実効データ保持時間」Tact_RAMをTact[now]に更新する。Tact[now]はブロックＣに対して書き込みを行った時点での累積実効データ保持時間を意味する。さらに、書き込むブロック（ブロックＣ）に対応付けて当該パラメータをフラッシュメモリ２０に保存する（Ｓ３１）。これらのパラメータは、ブロックＣに対して書き込みを行った時点での累積実効データ保持時間Tact[C]=Tact[now]、および、ブロックＣに対して書き込みを行った時点での基準時間Tref[C]（すなわちＳ２６でリードしたタイマＡの値）である。
【００３９】
その後、タイマＢを再開する（Ｓ３２）。
【００４０】
なお、ステップＳ２４において、現時点での累積実効データ保持時間の値Tact[now]と値Tact[BLKcmp]の差が所定値Tmax[y]に達していない場合、ＲＡＭ上の現時点の累積実効データ保持時間Tact[now]をＲＡＭ１１に保存する（Tact_RAM＝Tact[now]）ことにより更新し（Ｓ２５）、タイマＢを再開する（Ｓ３２）。
【００４１】
図４は、フラッシュメモリ２０への書き込み発生時の処理のフローチャートを示している。
【００４２】
フラッシュメモリに書き込みを実施する際、今回の書き込みがそのブロック内で最初の書き込みかどうか判断する（Ｓ４１）。ここではブロックＤへの書き込みを想定する。「最初」とは、あるブロックについてその消去後の最初の書き込みを意味する。前述のように書き込みはブロックより小さい単位で行われるので、最初の書き込みの後に追加的な２回目以降の書き込みがありうる。「最初」であれば、タイマＡの値Tref[D]とタイマＢの値Tbを読み込む（Ｓ４２）。タイマＡの値Tref[D]の値は図３のＳ２７における検索時に利用される。ついで、温度センサ１４の値Tmesを読み込む（Ｓ４３）。この値をもとにアレニウス・モデルの上記式（１）等を用いて温度加速係数αを算出する（Ｓ４４）。この温度加速係数αとタイマＢの値Ｔｂから、現在ＲＡＭ上に保持している「累積実効データ保持時間」への追加分である「実効データ保持時間差」α・Ｔｂが求まる。これをTact_RAMと足し合わせることにより、書き込み時点での現時点の「累積実効データ保持時間」Tact[now]を算出する（Ｓ４５）。さらに、Ｓ４２でリードしたタイマＡの値をブロックＤに対して書き込みを行った時点での基準時間Tref[D]として、かつ、ステップＳ４５で求めた「累積実効データ保持時間」Tact[now]を、ブロックＤに対して書き込みを行った時点での累積実効データ保持時間Tact[D]として、それぞれ、書き込むブロックに対応付けてフラッシュメモリ２０に保存する（Ｓ４６）。
【００４３】
本発明を携帯電話機に適用した場合には、タイマＢをＷａｋｅｕｐ要因として用い、それまでの期間を低消費電力動作モード（例えばスリープモード）にすることで、低消費電力化も可能である。
【００４４】
本発明により、温度と書き換え回数によって変化するフラッシュメモリのデータ保持時間として、温度センサを用いて実効的な時間を算出し、データ保持保証可能な範囲でブロック単位に再書き込みを行うことで、データが化けてしまうことを未然に防ぎ、信頼性の向上を実現することができる。
【００４５】
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。例えば、本発明は多値ＮＡＮＤメモリに利用して好適であるが、多値のメモリ、ＮＡＮＤメモリへの利用に限定されるものではない。
【符号の説明】
【００４６】
１０…制御部、１２…タイマＡ、１３…タイマＢ、１４…温度センサ、２０…フラッシュメモリ、２１…データ保持保証値テーブル、３０…バス
【図１】
2010165039.tif 000003
【図２】
2010165039.tif 000004
【図３】
2010165039.tif 000005
【図４】
2010165039.tif 000006
【図５】
2010165039.tif 000007
【図６】
2010165039.tif 000008