JP2014071535A - メモリ管理装置、マイクロコントローラ及びメモリ管理方法 - Google Patents
メモリ管理装置、マイクロコントローラ及びメモリ管理方法 Download PDFInfo
- Publication number
- JP2014071535A JP2014071535A JP2012215192A JP2012215192A JP2014071535A JP 2014071535 A JP2014071535 A JP 2014071535A JP 2012215192 A JP2012215192 A JP 2012215192A JP 2012215192 A JP2012215192 A JP 2012215192A JP 2014071535 A JP2014071535 A JP 2014071535A
- Authority
- JP
- Japan
- Prior art keywords
- sector
- status
- erased
- memory management
- sectors
- 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
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】メモリの実装面積を小さくすること。メモリに3つのセクタがある場合に、いずれか1つのセクタが壊れてもメモリを継続して使用できるようにすること。
【解決手段】メモリ管理装置1は、一括して消去可能なセクタを複数個有するメモリを管理する。メモリ管理装置1は、設定部2、判断部3及び制御部4を備えている。設定部2は、複数のセクタのうち、有効なデータが書き込まれる一のセクタに、消去対象のセクタの状態を示すステータスを設定する。判断部3は、起動時にステータスが消去中になっているか否かを判断する。制御部4は、起動時にステータスが消去中になっているセクタに対する消去を制御する。
【選択図】図1
【解決手段】メモリ管理装置1は、一括して消去可能なセクタを複数個有するメモリを管理する。メモリ管理装置1は、設定部2、判断部3及び制御部4を備えている。設定部2は、複数のセクタのうち、有効なデータが書き込まれる一のセクタに、消去対象のセクタの状態を示すステータスを設定する。判断部3は、起動時にステータスが消去中になっているか否かを判断する。制御部4は、起動時にステータスが消去中になっているセクタに対する消去を制御する。
【選択図】図1
Description
この発明は、メモリ管理装置、マイクロコントローラ及びメモリ管理方法に関する。
従来、データを記憶するデータ用のセクタと、データ用のセクタに記憶されているデータの管理情報を記憶する管理用のセクタと、予備のセクタと、を有するフラッシュメモリがある。データ用のセクタまたは管理用のセクタのコピー中に中断が発生すると、次回の起動時に、データ用のセクタのヘッダ情報または管理用のセクタの管理情報に基づいて、コピーの中断位置からコピーを継続する方法がある(例えば、特許文献1参照)。
しかしながら、従来のメモリ管理技術では、データ用のセクタの他に管理用のセクタを設ける必要がある。そのため、セクタ数が増えてしまい、フラッシュメモリの実装面積が大きくなってしまうという問題点がある。また、データ用のセクタまたは管理用のセクタに空き領域がなくなると、データ用のセクタに記憶されているデータまたは管理用のセクタに記憶されている管理情報は、予備のセクタへ移行される。そのため、データ用のセクタ、管理用のセクタ及び予備のセクタの3つのセクタがあっても、いずれか1つのセクタが壊れてしまうと、メモリを継続して使用することができなくなってしまうという問題点がある。
メモリの実装面積を小さくすることができるメモリ管理装置、マイクロコントローラ及びメモリ管理方法を提供することを目的とする。メモリに3つのセクタがある場合に、いずれか1つのセクタが壊れてもメモリを継続して使用することができるメモリ管理装置、マイクロコントローラ及びメモリ管理方法を提供することを目的とする。
メモリ管理装置は、一括して消去可能なセクタを複数個有するメモリを管理する。メモリ管理装置は、設定部、判断部及び制御部を備えている。設定部は、複数のセクタのうち、有効なデータが書き込まれる一のセクタに、消去対象のセクタの状態を示すステータスを設定する。判断部は、起動時にステータスが消去中になっているか否かを判断する。制御部は、起動時にステータスが消去中になっているセクタに対する消去を制御する。
このメモリ管理装置、マイクロコントローラ及びメモリ管理方法によれば、メモリの実装面積を小さくすることができる。また、メモリに3つのセクタがある場合に、いずれか1つのセクタが壊れてもメモリを継続して使用することができる。
以下に添付図面を参照して、このメモリ管理装置、マイクロコントローラ及びメモリ管理方法の好適な実施の形態を詳細に説明する。以下の各実施例の説明においては、同様の構成要素には同一の符号を付して、重複する説明を省略する。
・メモリ管理装置の一例
図1は、実施の形態にかかるメモリ管理装置の一例を示す図である。図1に示すように、メモリ管理装置1は、一括して消去可能なセクタを複数個有するメモリ5を管理する。セクタ単位でデータが消去されるメモリ5の一例として、例えばフラッシュメモリが挙げられる。セクタは、複数のデータを格納することができる。メモリ管理装置1は、複数のデータを、例えばセクタの前方から後方に向かって順に書き込むようにしてもよい。
図1は、実施の形態にかかるメモリ管理装置の一例を示す図である。図1に示すように、メモリ管理装置1は、一括して消去可能なセクタを複数個有するメモリ5を管理する。セクタ単位でデータが消去されるメモリ5の一例として、例えばフラッシュメモリが挙げられる。セクタは、複数のデータを格納することができる。メモリ管理装置1は、複数のデータを、例えばセクタの前方から後方に向かって順に書き込むようにしてもよい。
メモリ管理装置1は、セクタに書き込まれているデータを更新する場合、更新後のデータを同じセクタの空き領域に書き込み、更新前のデータを無効にする。セクタ内に有効なデータ、すなわち消去または無効にされていないデータがあるか否かは、例えばセクタの先頭に配置されるフラグによって示されてもよい。メモリ管理装置1は、このフラグを管理する。
セクタが有効なデータ、更新後のデータ及び更新前の無効なデータで一杯になると、メモリ管理装置1は、有効なデータ及び更新後のデータを消去済みの別のセクタへ移行する。移行先のセクタへのデータの移行が終了すると、移行元のセクタは消去可能となる。メモリ管理装置1は、フラグの値を、消去可能であることを示す値にする。メモリ管理装置1は、消去可能なセクタに対して、次に使用するまでに消去する。
また、メモリ管理装置1は、設定部2、判断部3及び制御部4を有する。設定部2は、複数のセクタのうち、有効なデータが書き込まれるいずれかのセクタに、消去対象のセクタの状態を示すステータスを設定する。判断部3は、起動時にステータスが消去中になっているか否かを判断する。制御部4は、起動時に、判断部3の判断結果に基づいて、ステータスが消去中になっているセクタに対する消去を制御する。
・メモリ管理方法の一例
図2は、実施の形態にかかるメモリ管理方法の一例を示す図である。図2に示すメモリ管理方法は、図1に示すメモリ管理装置1によってメモリ5に対して実施されてもよい。本実施例では、図1に示すメモリ管理装置1がメモリ5に対して、図2に示すメモリ管理方法を実施するとして説明する。
図2は、実施の形態にかかるメモリ管理方法の一例を示す図である。図2に示すメモリ管理方法は、図1に示すメモリ管理装置1によってメモリ5に対して実施されてもよい。本実施例では、図1に示すメモリ管理装置1がメモリ5に対して、図2に示すメモリ管理方法を実施するとして説明する。
メモリ管理装置1は、メモリ5に対する管理を開始すると、設定部2により、複数のセクタのうちの有効なデータが書き込まれるいずれかのセクタに、消去対象のセクタの状態を示すステータスを設定する(ステップS1)。メモリ管理装置1は、メモリ管理装置1及びメモリ5を有する装置の電源が遮断されるか、またはリセットされるまで(ステップS2:No)、メモリ5に対するデータの書き込み、更新、読み出し及び消去などのアクセスを制御し、必要に応じて、設定部2によりステータスを設定する(ステップS1)。
メモリ管理装置1は、メモリ管理装置1及びメモリ5を有する装置が電源投入またはリセットによって再び起動すると(ステップS2:Yes)、判断部3により、セクタごとにステータスを参照し、ステータスが消去中になっているか否かを判断する(ステップS3)。セクタの消去中に電源遮断またはリセットが起こり、消去が中断されると、消去中のセクタの内容が不定になってしまうことがある。あるいは、消去中のセクタのフラグが消去済みを示しているが、フラグ以外のデータの消去が完了していない場合や、フラグに付随するECC(Error Check and Correct)用のパリティビットの格納領域が消去されていないため、以後、フラグの書き込みができなくなってしまう場合がある。
このように、フラグがセクタの消去状態を正確に反映していない場合には、電源遮断またはリセット後の起動時にフラグを参照するだけでは、消去が完了しているか否かを判断することができない。そこで、電源遮断またはリセット後の起動時にステータスを参照し、ステータスが消去中になっている場合(ステップS3:Yes)、メモリ管理装置1は、例えば電源遮断またはリセットによってそのセクタに対する消去が中断されていると判断して、制御部4により、そのセクタに対して消去を行う(ステップS4)。
ステータスが消去中になっていない場合(ステップS3:No)、メモリ管理装置1は、例えば電源遮断またはリセットの前にそのセクタに対する消去が完了していると判断して、そのセクタに対して消去を行わない。次いで、メモリ管理装置1は、メモリ5の全セクタに対してステータスの参照が終了したか否かを判断する(ステップS5)。
終了していない場合(ステップS5:No)、ステップS3に戻り、未参照のセクタのステータスを参照し、ステップS3〜ステップS5を繰り返す。全セクタに対してステータスの参照が終了すると(ステップS5:Yes)、メモリ管理装置1は、一連の処理を終了する。
図1に示すメモリ管理装置1及び図2に示すメモリ管理方法によれば、有効なデータが書き込まれるセクタにステータスが設定される。それによって、ステータス用のセクタを設けずに済む。従って、セクタ数を減らすことができ、メモリの実装面積を小さくすることができる。また、メモリに3つのセクタがある場合、いずれか1つのセクタが壊れても、残りの2つのセクタ間でデータ及びステータスの移行を行うことができる。従って、メモリを継続して使用することができる。
・マイクロコントローラの一例
図3は、実施の形態にかかるマイクロコントローラの一例を示す図である。図3に示すように、マイクロコントローラ11は、メモリ管理装置12、及びメモリの一例として例えばフラッシュメモリ18を有する。メモリ管理装置12は、フラッシュメモリ18を管理する。
図3は、実施の形態にかかるマイクロコントローラの一例を示す図である。図3に示すように、マイクロコントローラ11は、メモリ管理装置12、及びメモリの一例として例えばフラッシュメモリ18を有する。メモリ管理装置12は、フラッシュメモリ18を管理する。
メモリ管理装置12は、CPU(Central Processing Unit、中央処理装置)13、ROM(Read Only Memory、リードオンリーメモリ)14、RAM(Random Access Memory、ランダムアクセスメモリ)15及び制御回路16を有する。CPU13、ROM14、RAM15及び制御回路16は、バス17に接続されている。
CPU13は、ROM14から、後述するステータス変更方法、復元方法及びデータ移行方法を実現するメモリ管理プログラムを読み出してRAM15に格納する。CPU13は、RAM15に格納されるメモリ管理プログラムを実行することによって、あるいは、CPU13はROM14に格納されるメモリ管理プログラムを直接読み出して実行することによって、例えば図1に示す設定部2、判断部3及び制御部4を実現し、ステータス変更処理、復元処理及びデータ移行処理を行う。CPU13は、ROM14から種々のアプリケーションプログラムを読み出してRAM15に格納する。CPU13は、RAM15に格納されるアプリケーションプログラムを実行する。あるいは、CPU13はROM14に格納されるアプリケーションプログラムを直接読み出して実行する。
ROM14は、メモリ管理プログラム、及びメモリ管理プログラムが使用する固定データを格納する。ROM14は、アプリケーションプログラム、及びアプリケーションプログラムが使用する固定データを格納する。RAM15は、CPU13の作業領域として用いられる。RAM15は、メモリ管理プログラムの実行中に使用される一時的なデータを格納する。RAM15は、アプリケーションプログラムの実行中に使用される一時的なデータを格納する。
制御回路16は、CPU13から、フラッシュメモリ18に対するフラグまたはステータスの書き込み、読み出しまたは消去の指示を受け取り、その指示に基づいてフラッシュメモリ18へのアクセスを制御する。制御回路16は、CPU13から、フラッシュメモリ18に対するデータの書き込み、読み出しまたは消去の指示を受け取り、その指示に基づいてフラッシュメモリ18へのアクセスを制御する。
フラッシュメモリ18は、制御回路16に接続されている。フラッシュメモリ18は、CPU13の指示によって制御回路16により書き込まれるフラグ、ステータスまたはデータを記憶する。
・ステータスの設定位置及び設定値の一例
図4は、ステータスの設定位置及び設定値の一例を示す図である。図4に示すように、フラッシュメモリ18の各セクタの先頭には、例えばフラグが設定されてもよい。フラグには、例えば「有効」を示す値、「使用済」を示す値または初期値が格納されてもよい。
図4は、ステータスの設定位置及び設定値の一例を示す図である。図4に示すように、フラッシュメモリ18の各セクタの先頭には、例えばフラグが設定されてもよい。フラグには、例えば「有効」を示す値、「使用済」を示す値または初期値が格納されてもよい。
「有効」フラグは、セクタに有効なデータが書き込まれている場合に設定される。これ以降、「有効」フラグが設定されているセクタを有効セクタと称することがある。メモリ管理装置1の例えば設定部2(図1参照)は、各セクタのフラグを参照することによって、有効セクタを特定することができる。
「使用済」フラグは、セクタが消去可能である場合に設定される。「使用済」フラグが設定されるセクタは、データが使用済みで以後使用されないため消去可能(消去対象)である。データの消去が完了するまで、「使用済」フラグが設定されるセクタにはデータを書き込むことができない。
フラグが初期値であるセクタは、例えばデータの消去が完了しているセクタである。データの消去が完了しているセクタには再びデータを書き込むことができる。また、セクタが壊れるなどしてセクタが使用できない状態にある場合、例えばフラグの値が不定になることがある。
図4に示す例では、例えば4つのセクタがあり、セクタ#1_21は有効セクタである。図4では、各セクタのデータを格納する領域において、網掛けされた領域は有効なデータを格納している領域であり、網掛けされていない領域は有効なデータを格納していない領域である。セクタ#2_22は使用済みのセクタである。セクタ#3_23は、消去済みで、データの書き込みが可能な状態にある。セクタ#4_24は、使用できない状態にある。
また、フラッシュメモリ18の各セクタの固定位置には、ステータスが設定されてもよい。各セクタにおいてステータスが設定される位置は、例えばフラグの次の位置であってもよい。ステータスは、いずれかの有効セクタに設定される。つまり、メモリ管理装置1の設定部2(図1参照)は、有効セクタの例えばフラグの次の位置にステータスを設定してもよい。なお、ステータスの位置は、フラグの次の位置以外の位置であってもよい。
有効セクタにおいてステータスの位置が固定されることによって、メモリ管理装置1の設定部2(図1参照)はステータスを設定することができ、また、判断部3(図1参照)はステータスを読み出すことができる。有効セクタ内のステータスを格納する領域には、フラッシュメモリ18の例えば複数のセクタのステータスを示す値が格納される。
ステータスには、例えば「初期値」、「消去中」を示す値、「消去済」を示す値または「不使用」を示す値が格納されてもよい。「初期値」ステータスは、前回のセクタのデータの消去が完了したときに設定される。以後、再びデータの書き込みによってセクタが有効なデータを格納している場合も初期値が維持される。「初期値」ステータスの値は、例えばセクタの消去後の値である「0xFFFFFFFF」であってもよい。
「消去中」ステータスは、セクタのデータを消去する直前に設定される。以後、消去中も「消去中」ステータスが維持される。「消去中」ステータスの値は、例えば「0xAA55FFFF」であってもよい。「消去済」ステータスは、セクタのデータの消去が成功し、消去が完了する場合に設定される。「消去済」ステータスの値は、例えば「0xAA55AA55」であってもよい。
フラッシュメモリの特性上、ビットの「0」を「1」に書き換えることができない。そのため、「初期値」、「消去中」及び「消去済」の各ステータスの値がそれぞれ上述した値である場合、「消去中」のステータスを「初期値」のステータスに上書きしたり、「消去済」のステータスを「消去中」のステータスに上書きすることはできない。
「不使用」ステータスは、セクタのデータの消去が失敗して不良セクタとなる場合に設定される。「不使用」ステータスの値は、例えば「0x00000000」であってもよい。
図4に示す例では、セクタ#1_21が有効セクタである。従って、セクタ#1_21内のステータスを格納する領域25には、セクタ#1、セクタ#2、セクタ#3及びセクタ#4の各ステータス26,27,28,29を示す値が格納される。図4では、各セクタのステータスを格納する領域において、斜線のある領域は、(有効な)ステータスの値を格納している領域であり、網掛けされていない領域は、ステータスの値を格納していない領域である。
・有効セクタが複数ある場合のステータスの設定位置
有効セクタが複数ある場合、ステータスは、複数の有効セクタのうちの1つのセクタに設定される。有効セクタが複数ある場合のステータスの設定位置については、例えば次に説明する2通りの例が挙げられる。
有効セクタが複数ある場合、ステータスは、複数の有効セクタのうちの1つのセクタに設定される。有効セクタが複数ある場合のステータスの設定位置については、例えば次に説明する2通りの例が挙げられる。
図5は、有効セクタが複数ある場合のステータスの設定位置の一例を示す図である。図5に示すように、全セクタが均等個数ずつ複数のグループ31,32,33,34に分けられており、全グループのうちの1つのグループが有効セクタとなる。有効セクタに含まれる複数のセクタの中で例えば前方の一つのセクタに設けたヘッダなどの1箇所の固定位置にステータス35が設定される。
図5に示す例では、例えば8つのセクタが、セクタ#1及びセクタ#2を含むグループ31、セクタ#3及びセクタ#4を含むグループ32、セクタ#5及びセクタ#6を含むグループ33、並びにセクタ#7及びセクタ#8を含むグループ34に分けられている。そして、セクタ#1及びセクタ#2を含むグループ31が有効セクタとなっている。
図6は、有効セクタが複数ある場合のステータスの設定位置の他の例を示す図である。図6には、有効セクタ及びステータスの変化の一例が時系列的に示されている。図6に示すように、今までの有効セクタが有効セクタであり続けるか、有効セクタでなくなって消去可能となるか、によらず、新たに有効セクタとなるセクタにステータスが移行する。
例えば、図6の1段目の状態41に示すように、最初のセクタ#1が有効セクタとなるときに、セクタ#1にステータス47が設定される。図6の2段目の状態42に示すように、新たにセクタ#2が有効セクタとなるときに、セクタ#1が有効セクタであり続けても、セクタ#2にステータス48が移行する。
同様に、図6の3段目の状態43に示すように、新たにセクタ#3が有効セクタとなるときに、セクタ#1及びセクタ#2が有効セクタであり続けるか、消去可能となるか、によらず、セクタ#3にステータス49が移行する。図6の3段目の状態43では、例えばセクタ#1は有効セクタのままであるが、セクタ#2は消去可能となっている。
図6の4段目の状態44では、3段目の状態43において消去可能であるセクタ#2のデータが消去されている。図6では省略されているが、残りのセクタについても順に有効セクタとなり、新たに有効セクタとなるときにステータスも移行する。
そして、図6の5段目の状態45に示すように、新たにセクタ#2が有効セクタとなるときに、他のセクタが有効セクタであり続けるか、消去可能となるか、によらず、セクタ#2にステータス50が移行する。図6の6段目の状態46では、新たにセクタ#3が有効セクタとなり、セクタ#3にステータス51が移行し、セクタ#2が再び消去可能となっている。
このように、今までの有効セクタが有効セクタであり続けても、新たに有効セクタとなるセクタにステータスが移行する。このようにステータスを移行させないで、今までの有効セクタ、例えば図6の例でセクタ#1にステータスを設定し続けると、例えば図6の5段目の状態45から図6の6段目の状態46へ変化するときに不具合が生じる。
例えば新たに他のセクタが有効セクタになっても、セクタ#1にステータスが設定され続けるとする。図6の5段目の状態45では、セクタ#1に設定されているステータスのうち、セクタ#2のステータスは「消去済」となる。この状態でセクタ#2がデータで一杯になると、セクタ#2のデータがセクタ#3へ移行される。
そして、セクタ#2が消去可能となる。しかし、フラッシュメモリでは「0」を「1」に書き換えることができないため、セクタ#1に設定されているステータスのうち、セクタ#2のステータスを「消去済」から「消去中」に変更することができなくなってしまう。本実施例のように、新たに有効セクタとなるセクタにステータスが移行することによって、この不具合を回避することができる。
有効セクタが複数ある場合には、例えばフラグの値によって最新の有効セクタと最新でない有効セクタとが識別されてもよい。例えば、最新の有効セクタのフラグの値が「0xAA55AA55FFFFFFFF」であり、最新でない有効セクタのフラグの値が「0xAA55AA55AA55AA55」であってもよい。
・ステータス変更方法の一例
図7は、実施の形態にかかるメモリ管理方法におけるステータス変更方法の一例を示す図である。図8は、図7に示すステータス変更方法における消去成功時のステータスの遷移を示す図である。図9は、図7に示すステータス変更方法における消去失敗時のステータスの遷移を示す図である。図8及び図9に示す例では、消去対象のセクタがセクタ#1_21であり、有効セクタであるセクタ#2_22内のステータスを格納する領域61に格納されているセクタ#1のステータス26が遷移する様子が示されている。
図7は、実施の形態にかかるメモリ管理方法におけるステータス変更方法の一例を示す図である。図8は、図7に示すステータス変更方法における消去成功時のステータスの遷移を示す図である。図9は、図7に示すステータス変更方法における消去失敗時のステータスの遷移を示す図である。図8及び図9に示す例では、消去対象のセクタがセクタ#1_21であり、有効セクタであるセクタ#2_22内のステータスを格納する領域61に格納されているセクタ#1のステータス26が遷移する様子が示されている。
図7に示すように、消去対象のセクタに対する消去処理が開始されると、メモリ管理装置1の例えば設定部2(図1参照)は、各セクタのフラグを参照する。それによって、例えば設定部2は、「有効」フラグが設定されているセクタ、すなわち有効セクタを特定することができる(ステップS11)。本実施例では、有効セクタはセクタ#2_22であるとする。
次いで、例えば設定部2は、セクタ#2_22内のステータスを格納する領域61に格納されているセクタ#1のステータス26を「初期値」から「消去中」に変更する(ステップS12)。本実施例では、セクタ#1_21は消去対象のセクタであるとする。そして、メモリ管理装置1の例えば制御部4(図1参照)は、セクタ#1_21を消去する(ステップS13)。
次いで、例えば設定部2は、セクタ#1_21の消去結果が成功であるか否かを判断する(ステップS14)。消去結果は、例えば制御回路16からCPU13(図3参照)へ通知される。例えば設定部2は、制御回路16からCPU13へ通知される消去結果に基づいて、消去の成功または失敗を判断することができる。
消去成功である場合(ステップS14:Yes)、例えば設定部2は、セクタ#2_22内のステータスを格納する領域61に格納されているセクタ#1のステータス26を「消去中」から「消去済」に変更する(ステップS15)。一方、消去失敗である場合(ステップS14:No)、例えば設定部2は、セクタ#2_22内のステータスを格納する領域61に格納されているセクタ#1のステータス26を「消去中」から「不使用」に変更する(ステップS16)。
消去に失敗するセクタは、劣化が激しいと推測される。従って、以後、消去に失敗するセクタは使用されないのが望ましい。ステータスが「不使用」に変更されることによって、消去に失敗するセクタが使用されなくなる。そして、セクタ#1_21に対する消去処理が終了する。複数のセクタが消去対象である場合、すべての消去対象のセクタに対して、図7に示す一連の消去処理が行われる。
・復元方法の一例
図10は、実施の形態にかかるメモリ管理方法における復元方法の一例を示す図である。図11は、図10に示す復元方法におけるステータスの遷移を示す図である。図11に示す例では、有効セクタはセクタ#1_21であるとする。そして、例えば電源遮断またはリセットによってセクタ#2_22に対する消去が中断されている場合の復元処理において、セクタ#1_21内のステータスを格納する領域25に格納されているセクタ#2のステータス27が遷移する様子が示されている。
図10は、実施の形態にかかるメモリ管理方法における復元方法の一例を示す図である。図11は、図10に示す復元方法におけるステータスの遷移を示す図である。図11に示す例では、有効セクタはセクタ#1_21であるとする。そして、例えば電源遮断またはリセットによってセクタ#2_22に対する消去が中断されている場合の復元処理において、セクタ#1_21内のステータスを格納する領域25に格納されているセクタ#2のステータス27が遷移する様子が示されている。
図10に示すように、電源の再投入やリセットによって例えばCPU13(図3参照)がメモリ管理プログラムの実行を開始すると、復元処理が開始される。復元処理が開始されると、メモリ管理装置1の例えば設定部2(図1参照)は、各セクタのフラグを参照し、有効セクタを特定する(ステップS21)。次いで、メモリ管理装置1の例えば判断部3(図1参照)は、セクタ#1_21内のステータスを格納する領域25に格納されている全てのセクタに対するステータスの参照が終了するまで(ステップS22:No)、各セクタに対するステータスを一セクタずつ参照していく(ステップS23)。
そして、例えば判断部3は、ステップS23で参照するステータスが「初期値」または「消去済」であるか否かを判断する(ステップS24)。ステータスが「初期値」または「消去済」である場合(ステップS24:Yes)、ステップS22へ戻る。その際、ステータスが「初期値」または「消去済」であるセクタに対して、何も処理がなされなくてもよい。
ステップS23で参照するステータスが「初期値」でもなく「消去済」でもない場合(ステップS24:No)、例えば判断部3は、ステップS23で参照するステータスが「消去中」であるか否かを判断する(ステップS25)。ステータスが「消去中」であるセクタは、消去が中断されている状態にある。そこで、ステータスが「消去中」である場合(ステップS25:Yes)、メモリ管理装置1の例えば制御部4(図1参照)は、ステータスが「消去中」であるセクタ#2_22を消去する(ステップS27)。
ステップS23で参照するステータスが「初期値」でもなく「消去済」でもなく(ステップS24:No)、「消去中」でもない場合(ステップS25:No)、例えば判断部3は、ステップS23で参照するステータスが「不使用」であるか否かを判断する(ステップS26)。ステータスが「不使用」である場合(ステップS26:Yes)、ステップS22へ戻る。
ステータスが「不使用」であるセクタに対して、劣化しているため使用しないこととして、何も処理しなくてもよいし、再消去を試みてもよい。そして、再消去に成功するセクタを、再び使用するようにしてもよい。再消去に失敗する場合には、今後、そのセクタを使用しないことにしてもよい。また、再消去を所定回数、試みてもよいし、起動時に毎回、再消去を試みてもよい。再消去を所定回数、試みる場合には、消去の回数によってステータスの値を変えてもよい。
ステータスが「初期値」、「消去済」、「消去中」及び「不使用」のいずれでもないセクタのステータスは、不定になっている。ステータスが不定であるということは、そのセクタに対して消去などの処理が行われている途中で処理が中断されていると判断することができる。そこで、ステータスが「初期値」、「消去済」、「消去中」及び「不使用」のいずれでもない場合(ステップS26:No)、例えば制御部4(図1参照)は、ステータスが「初期値」、「消去済」、「消去中」及び「不使用」のいずれでもないセクタを消去する(ステップS27)。
ステップS27でセクタの消去を行う場合、例えば設定部2は、消去結果が成功であるか否かを判断する(ステップS28)。本実施例では、ステータスが「消去中」であるセクタ#2_22の消去が成功するとする。消去成功である場合(ステップS28:Yes)、例えば設定部2は、セクタ#1_21内のステータスを格納する領域25に格納されているセクタ#2のステータス27を「消去中」から「消去済」に変更する(ステップS29)。そして、ステップS22へ戻る。
消去失敗である場合(ステップS28:No)、例えば設定部2は、セクタ#1_21内のステータスを格納する領域25に格納されているセクタ#2のステータス27を「消去中」から「不使用」に変更する(ステップS30)。そして、ステップS22へ戻る。
ステップS22では、例えば判断部3は、全てのセクタに対するステータスの参照が終了するか否かを判断する。参照していないステータスが残っている場合には(ステップS22:No)、参照していないステータスがなくなるまで、上述したようにステータスの参照及びステータスに対応する処理を繰り返し行う(ステップS22〜ステップS30)。全てのセクタに対するステータスの参照が終了する場合(ステップS22:Yes)、一連の復元処理が終了する。
・データ移行方法の一例
図12は、実施の形態にかかるメモリ管理方法におけるデータ移行方法の一例を示す図である。図13は、図12に示すデータ移行方法におけるステータスの遷移を示す図である。図13に示す例では、データの移行前の有効セクタがセクタ#1_21であり、データの移行後の有効セクタがセクタ#2_22であるとする。そして、セクタ#1_21のデータがセクタ#2_22へ移行されるとする。
図12は、実施の形態にかかるメモリ管理方法におけるデータ移行方法の一例を示す図である。図13は、図12に示すデータ移行方法におけるステータスの遷移を示す図である。図13に示す例では、データの移行前の有効セクタがセクタ#1_21であり、データの移行後の有効セクタがセクタ#2_22であるとする。そして、セクタ#1_21のデータがセクタ#2_22へ移行されるとする。
図12に示すように、データの移行処理が開始されると、メモリ管理装置1の例えば設定部2(図1参照)は、各セクタのフラグを参照し、有効セクタを特定する(ステップS41)。次いで、メモリ管理装置1の例えば判断部3(図1参照)は、セクタ#1_21内のステータスを格納する領域25に格納されているステータスのうち、データの移行先の候補となるセクタのステータスを参照する(ステップS42)。
そして、例えば判断部3は、ステップS42で参照するステータスが「不使用」であるか否かを判断する(ステップS43)。ステータスが「不使用」である場合(ステップS43:Yes)、データの移行先の候補となるセクタを別のセクタに変更する(ステップS44)。そして、ステップS42へ戻り、例えば判断部3(図1参照)は、セクタ#1_21内のステータスを格納する領域25に格納されているステータスのうち、新たにデータの移行先の候補となるセクタのステータスを参照する(ステップS42)。
ステータスが「不使用」でないセクタが見つかるまで、データの移行先の候補となるセクタのステータスの参照及びデータの移行先の候補となるセクタの変更を繰り返す(ステップS42〜ステップS44)。ステップS42で参照するステータスが「不使用」でない場合(ステップS43:No)、データの移行が行われる(ステップS45)。
本実施例では、セクタ#1_21内のステータスを格納する領域25に格納されているセクタ#2のステータス27が「消去済」である。従って、ステータスが「不使用」でないセクタとしてセクタ#2_22が見つかり、セクタ#2_22がデータの移行先のセクタとなる。それによって、ステップS45では、セクタ#1_21からセクタ#2_22へデータが移行される。
データの移行後にセクタ#1_21内のステータスを格納する領域25に格納されている全てのステータスが、セクタ#2_22内のステータスを格納する領域61に移行されるまで(ステップS46:No)、ステータスの移行処理が続けられる。移行されるステータスが「初期値」または「消去済」である場合(ステップS47:Yes)、例えば設定部2は、セクタ#2_22内のステータスを格納する領域61に対して何もしなくてよい。セクタ#2_22内のステータスを格納する領域61において、ステータスの移行前にステータスが「初期値」または「消去済」であるセクタに対応する領域は、既に「初期値」になっている。
一方、移行されるステータスが「初期値」でも「消去済」でもない場合(ステップS47:No)、例えば設定部2は、ステータスの移行によって、セクタ#2_22内のステータスを格納する領域61に、ステータスの移行前と同じ値のステータスを設定する(ステップS48)。そして、データの移行後にセクタ#1_21内のステータスを格納する領域25に格納されている全てのステータスが、セクタ#2_22内のステータスを格納する領域61に移行されると(ステップS46:Yes)、一連のデータの移行処理が終了する。
図3に示すマイクロコントローラ11及び図7〜図13に示すメモリ管理方法によれば、有効セクタにステータスが設定される。それによって、ステータス用のセクタを設けずに済む。従って、セクタ数を減らすことができ、フラッシュメモリ18の実装面積を小さくすることができる。例えば、少なくともセクタが2つあれば、フラッシュメモリ18の継続的な使用が実現される。フラッシュメモリ18の実装面積が小さくなると、マイクロコントローラ11を小型化することができる。
また、フラッシュメモリ18に3つのセクタがある場合、いずれか1つのセクタが壊れても、残りの2つのセクタ間でデータ及びステータスの移行を行うことができる。従って、フラッシュメモリ18を継続して使用することができる。
また、電源遮断またはリセットによってセクタの消去が中断されている場合、起動時にステータスを参照することによって、メモリ管理装置12は、消去が中断されていることを認識することができる。従って、起動時に、消去が中断されているセクタに対して再度消去を行うことができる。それによって、消去が中断されているセクタを適切に復元することができる。
また、「不使用」のステータスを設定することによって、使用不能なセクタを除外し、残りの正常なセクタを用いてフラッシュメモリ18を使い続けることができる。それに対して、本実施例のような消去状態を反映するステータスを設定しないで、全てのセクタの消去回数が均等になるように、セクタ#1、セクタ#2、セクタ#3、・・・というようにセクタを順番に使用するようにすることができる。
しかし、消去状態を反映するステータスが設定されていない場合、あるセクタが壊れて使用不能になると、その壊れたセクタの後に続くセクタは、正常であっても使用不能になってしまうため、フラッシュメモリ18の寿命が短くなってしまう。本実施例によれば、正常なセクタが2つになるまでフラッシュメモリ18を使い続けることができる。つまり、より長期間にわたってフラッシュメモリ18を使用することができる。
・メモリ管理装置の別の例
図14は、実施の形態にかかるメモリ管理装置の別の例を示す図である。図14に示すように、メモリ管理装置71を有するチップに対してフラッシュメモリ72が外付けされていてもよい。フラッシュメモリ72がチップに外付けされる場合でも、メモリ管理方法は、図3に示すマイクロコントローラ11のように、メモリ管理装置12とフラッシュメモリ18とが同一のチップ内に設けられている場合と同様である。
図14は、実施の形態にかかるメモリ管理装置の別の例を示す図である。図14に示すように、メモリ管理装置71を有するチップに対してフラッシュメモリ72が外付けされていてもよい。フラッシュメモリ72がチップに外付けされる場合でも、メモリ管理方法は、図3に示すマイクロコントローラ11のように、メモリ管理装置12とフラッシュメモリ18とが同一のチップ内に設けられている場合と同様である。
なお、上述した各実施例において、メモリはフラッシュメモリに限らず、フラッシュメモリと同様に、セクタ単位で一括して消去可能なメモリであればよい。
実施の形態にかかるメモリ管理装置1,71またはマイクロコントローラ11を、例えばセクタのサイズより小さいデータを随時更新するためにデータの書き換えを行うことのある装置やシステムに利用することができる。このような装置やシステムの一例として、例えば車載機器、民生機器または産業機器などの諸分野の機器において、データ格納用にフラッシュメモリを使用する機器が挙げられる。
上述した各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)一括して消去可能なセクタを複数個有するメモリの複数の前記セクタのうち、有効なデータが書き込まれる第1のセクタに、消去対象のセクタの状態を示すステータスを設定する設定部と、
起動時に前記ステータスが消去中になっているか否かを判断する判断部と、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御する制御部と、
を備えることを特徴とするメモリ管理装置。
起動時に前記ステータスが消去中になっているか否かを判断する判断部と、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御する制御部と、
を備えることを特徴とするメモリ管理装置。
(付記2)前記設定部は、消去に失敗したセクタに対応する前記ステータスに、使用不能であることを示すステータスを設定することを特徴とする付記1に記載のメモリ管理装置。
(付記3)前記設定部は、前記第1のセクタとは別の第2のセクタに新たに有効なデータが書き込まれるときに、前記第1のセクタから前記第2のセクタに前記ステータスを移行することを特徴とする付記1または2に記載のメモリ管理装置。
(付記4)一括して消去可能なセクタを複数個有するメモリと、
前記メモリを管理するメモリ管理装置と、
を備え、前記メモリ管理装置は、
複数の前記セクタのうち、有効なデータが書き込まれる第1のセクタに、消去対象のセクタの状態を示すステータスを設定する設定部と、
起動時に前記ステータスが消去中になっているか否かを判断する判断部と、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御する制御部と、
を備えることを特徴とするマイクロコントローラ。
前記メモリを管理するメモリ管理装置と、
を備え、前記メモリ管理装置は、
複数の前記セクタのうち、有効なデータが書き込まれる第1のセクタに、消去対象のセクタの状態を示すステータスを設定する設定部と、
起動時に前記ステータスが消去中になっているか否かを判断する判断部と、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御する制御部と、
を備えることを特徴とするマイクロコントローラ。
(付記5)前記設定部は、消去に失敗したセクタに対応する前記ステータスに、使用不能であることを示すステータスを設定することを特徴とする付記4に記載のマイクロコントローラ。
(付記6)前記設定部は、前記第1のセクタとは別の第2のセクタに新たに有効なデータが書き込まれるときに、前記第1のセクタから前記第2のセクタに前記ステータスを移行することを特徴とする付記4または5に記載のマイクロコントローラ。
(付記7)一括して消去可能なセクタを複数個有するメモリの複数の前記セクタのうち、有効なデータが書き込まれる一のセクタに、消去対象のセクタの状態を示すステータスを設定し、
起動時に前記ステータスが消去中になっているか否かを判断し、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御することを特徴とするメモリ管理方法。
起動時に前記ステータスが消去中になっているか否かを判断し、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御することを特徴とするメモリ管理方法。
1 メモリ管理装置
2 設定部
3 判断部
4 制御部
2 設定部
3 判断部
4 制御部
Claims (5)
- 一括して消去可能なセクタを複数個有するメモリの複数の前記セクタのうち、有効なデータが書き込まれる第1のセクタに、消去対象のセクタの状態を示すステータスを設定する設定部と、
起動時に前記ステータスが消去中になっているか否かを判断する判断部と、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御する制御部と、
を備えることを特徴とするメモリ管理装置。 - 前記設定部は、消去に失敗したセクタに対応する前記ステータスに、使用不能であることを示すステータスを設定することを特徴とする請求項1に記載のメモリ管理装置。
- 前記設定部は、前記第1のセクタとは別の第2のセクタに新たに有効なデータが書き込まれるときに、前記第1のセクタから前記第2のセクタに前記ステータスを移行することを特徴とする請求項1または2に記載のメモリ管理装置。
- 一括して消去可能なセクタを複数個有するメモリと、
前記メモリを管理するメモリ管理装置と、
を備え、前記メモリ管理装置は、
複数の前記セクタのうち、有効なデータが書き込まれる第1のセクタに、消去対象のセクタの状態を示すステータスを設定する設定部と、
起動時に前記ステータスが消去中になっているか否かを判断する判断部と、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御する制御部と、
を備えることを特徴とするマイクロコントローラ。 - 一括して消去可能なセクタを複数個有するメモリの複数の前記セクタのうち、有効なデータが書き込まれる一のセクタに、消去対象のセクタの状態を示すステータスを設定し、
起動時に前記ステータスが消去中になっているか否かを判断し、
起動時に前記ステータスが消去中になっているセクタに対する消去を制御することを特徴とするメモリ管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012215192A JP2014071535A (ja) | 2012-09-27 | 2012-09-27 | メモリ管理装置、マイクロコントローラ及びメモリ管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012215192A JP2014071535A (ja) | 2012-09-27 | 2012-09-27 | メモリ管理装置、マイクロコントローラ及びメモリ管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014071535A true JP2014071535A (ja) | 2014-04-21 |
Family
ID=50746709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012215192A Pending JP2014071535A (ja) | 2012-09-27 | 2012-09-27 | メモリ管理装置、マイクロコントローラ及びメモリ管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014071535A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3594818A1 (en) * | 2018-07-12 | 2020-01-15 | Renesas Electronics Corporation | Information processing device and control methods |
-
2012
- 2012-09-27 JP JP2012215192A patent/JP2014071535A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3594818A1 (en) * | 2018-07-12 | 2020-01-15 | Renesas Electronics Corporation | Information processing device and control methods |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5831271B2 (ja) | 半導体不揮発性メモリ装置のリフレッシュ操作開始方法およびシステム | |
JP4925301B2 (ja) | 半導体メモリシステム | |
JP4828816B2 (ja) | メモリカード、半導体装置、及びメモリカードの制御方法 | |
TW201916018A (zh) | 資料儲存裝置與將資料寫入記憶體裝置之方法 | |
JP2009521044A (ja) | ブロック消去可能なメモリ位置およびポインタ情報を有するブロックを見つけ出すポインタのリンク付けしたチェーンを備えるメモリ | |
JP2008198310A (ja) | ビットエラーの修復方法および情報処理装置 | |
WO2009118917A1 (ja) | フラッシュメモリを用いた記憶装置 | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4245585B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2013222435A (ja) | 半導体記憶装置及びその制御方法 | |
JPWO2009004674A1 (ja) | 記憶装置、ディスク装置、書込み判定方法、制御装置 | |
JP5695112B2 (ja) | データ記憶装置、データの記憶方法および車載用制御装置 | |
KR101548452B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
JP2010086009A (ja) | 記憶装置およびメモリ制御方法 | |
KR101627322B1 (ko) | 비-휘발성 버퍼를 이용한 데이터 저장 장치 및 방법 | |
JP2008117299A (ja) | 記憶媒体制御装置 | |
JP2014071535A (ja) | メモリ管理装置、マイクロコントローラ及びメモリ管理方法 | |
JP2008047155A (ja) | 一括消去型不揮発性メモリおよび携帯電話 | |
JP6636930B2 (ja) | フラッシュメモリ内蔵マイコン、マイコンに内蔵されたフラッシュメモリへのデータ書込み方法、および、フラッシュメモリへのデータを書込むプログラム | |
JP4239754B2 (ja) | 不揮発メモリシステム | |
JP5521437B2 (ja) | 携帯端末装置、ソフトウェア更新方法及びプログラム | |
JP4952742B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2010061257A (ja) | 半導体メモリ装置 | |
JP2009199242A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |