JP2009199211A - メモリ制御方法及び装置、コンピュータプログラム - Google Patents
メモリ制御方法及び装置、コンピュータプログラム Download PDFInfo
- Publication number
- JP2009199211A JP2009199211A JP2008038535A JP2008038535A JP2009199211A JP 2009199211 A JP2009199211 A JP 2009199211A JP 2008038535 A JP2008038535 A JP 2008038535A JP 2008038535 A JP2008038535 A JP 2008038535A JP 2009199211 A JP2009199211 A JP 2009199211A
- Authority
- JP
- Japan
- Prior art keywords
- data
- area
- writing
- group
- area group
- 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)
- Memory System (AREA)
Abstract
【解決手段】フラッシュメモリ6に、それぞれ複数のデータの書込領域を有する複数のデータブロックを有する実データブロック223を形成する。メモリ制御装置は、データブロックのうち、追記可能な書込領域を有するデータブロックを特定し、特定したデータブロックの追記可能な書込領域に、入力された新たなデータを逐次追記してデータの追記を完了させる。追記前のブロックは、ある時期まで保持した後、ブロック単位で消去する。データブロックにおける書込回数が所定回数に達したときは、次に所定回数のデータ書換を確保するために必要となる数のデータブロックを新たに選択し、選択したデータブロックについて上記動作を繰り返す。
【選択図】図4
Description
「アプリケーションノート U17057JJ3V0AN00」、第3版、NECエレクトロニクス株式会社、2004年11月、p.25−27
このため、EEPROMエミュレーションのアドレス体系は、EEPROMのアドレス体系と一致しない。なお、図16(b)において、数値は、16進法(Hexadecimal Numbre)で表現される数値である。
本発明のメモリ制御装置においても、データ領域グループの追記可能な書込領域に逐次追記されるので、アドレス体系の汎用化が可能であり、消去回数の減少とデータ書込の平準化も可能となるので、書込可能回数が、不揮発性メモリの通常の使用態様より増加する。
図2(a)は、一般的に行われている従来のメモリ制御の概念図である。従来は、フラッシュメモリにデータを書き込む場合、メモリ制御装置は、そのフラッシュメモリのアドレスを指定する。このときのアドレスは、物理アドレスである。このアドレスの示す書込領域にデータが存在するかどうかを調べ、存在するときは、それを消去した後にデータを書き込んでいる。例えばアドレス「0X3600」の示す書込領域にデータ「0X11」、「0X22」、「0X33」をこの順に書き込むと、そのアドレス「0X3600」の示す書込領域でのデータは逐次書き換えられ、最後のデータ「0X33」だけが残る。このようなメモリ制御の仕方では、同じアドレスでの書き換えが集中する場合があるために、上述したように約1000回程度の書き換えしかできない。そのため、このままでは、約10万回も書き換えが可能で、アドレス体系も異なるEEPROMの代用はできない。
なお、フラッシュメモリでは消去が伴うので、書込ないし追記は、実際には書き換えとなる。以下、両者を区別する必要がある場合を除き、書込ないし追記と表現する。
本実施形態によるフラッシュメモリ6のメモリ構造例を図4に示す。このようなメモリ構造は、グループ形成手段として機能するプロセッサユニット2により形成される。
本例では、フラッシュメモリ6は、便宜上、512kBのものとする。このフラッシュメモリ6に、128kBの割当領域20を設ける。図2との関係では、フラッシュメモリ6は、図2(a)にいう物理アドレスを持つ不揮発性メモリに相当する。
なお、管理領域ブロック222及び実データブロック223は、それぞれ複数のエントリを有する。エントリもまた、それぞれ連続するアドレスによってシーケンシャルにつながっている。図4の例では、実データブロック223についてのエントリ2231と、管理領域ブロック222についてのエントリ2221とが示されている。
なお、EMのアドレスが書き込まれていれば、正しくデータが書き込まれたことを示すことになるので、実際には、4バイトの書込がアトミックに保証できる必要はなく、1バイトの書込がアトミックに保証されれば十分である。
このブロック番号とエントリ位置が、実際にデータを書き込む物理アドレスに対応したものとなる。
次に、メモリ制御装置1の動作を具体的に説明する。
1.読込処理
フラッシュメモリ6に書き込まれているデータの読込処理を、図6の手順説明図及び図11のメモリ状態図を参照して説明する。この処理は、プロセッサユニット2が、読込処理手段として動作するときに実行される。
次に、データ書込処理を、図7〜図9を参照して説明する。書込直前のフラッシュメモリ6は、図11の状態にあるものとする。この処理は、プロセッサユニット2が、書込処理手段として動作するときに実行される。
図7を参照すると、メモリ制御装置1は、まず、データ書込要求の入力を契機に、ブロック情報を計算する(ステップW101)。ブロック情報は、上述のとおりである。その後、書込可能なアドレスのアライメント(a_addr)、サイズのオフセット(offset)を計算する(ステップW102)。書込分割回数SEQ、SMの初期フラグ値を決定する(ステップW103)。「SEQ=1」かどうかの判別を行い、「SEQ=1」であったときは(ステップW104:Yes)、初期データの書込判定と該当のアライメントアドレスのデータ読込処理へ移る(ステップW105)。ここで同じデータを書き込もうとしてしている場合は、処理を終える(ステップW106:Yes)。
メモリ制御装置1は、データをデータ書込の順番(SM、データ、EMの順)に従って書き込む。(ステップW201)。この後、ヘッダブロックの領域に空きが無いかどうかを調べ、空きがあるときは、データ書込処理に戻る(ステップW202:No)。ヘッダブロックの領域に空き領域が無い場合は、次のヘッダブロックを選択できるかどうかを調べる(ステップW202:Yes、W203)。選択できるときは、次のヘッダブロックを選択し、ブロック情報を更新する(ステップW203、W204)。その後、呼び出し元の処理に戻る。ステップW203において、次のヘッダブロック領域を選択できないと判別できるときは、再構築処理へ移行する(ステップW203:Yes)。
再構築の処理を、図10の処理手順図及び図13〜図15のメモリ構造図を参照して説明する。この処理は、プロセッサユニット2が、再構築処理手段、各種検知手段として動作するときに実行される。
再構築は、書込処理手段による書込処理が実行されたときと、検知手段として動作するプロセッサユニット2が電源切断等の理由による動作停止ないし中止からの回復を検知したときに行われる。読込処理のときには行われない。これは、読込処理の速度のワーストケースを保証するためである。
まず、書込処理時の再構築の手順を説明する。すなわち、再構築直前のフラッシュメモリ6が図13のようになっている状態で、図14のように、新たにデータを追記した場合を想定する。図13は、2つ目のヘッダブロック(5)に、1回分のデータについてのSM、EMしか書き込めない状態になっている状態(データ(n)によって511回の書込が既に行われている状態)、図14は、この1回分のデータについてのSM、EMを書き込んだ状態(512回の書込が行われ、ヘッダブロックのSM,EMが追記された状態)を示している。
すべての古いブロックのデータを確認し終えた場合、あるいは、ステップS106において、古いヘッダブロックが無かった場合は(ステップS106)、再構築完了の情報を管理領域に書き込み、書込処理のための待機に戻る(ステップS120)。
回復のときの再構築は、上述のステップS104,105において、2つのヘッダブロック及び4つのデータブロックを選択する際に、新しいものを選択するのでなく、それまで使用していたヘッダブロック及びデータブロックを再選択する。これは、検知手段にとって、再構築時に例えば電源切断が発生したことが容易に検知できることに加え、再度割当を行わないために発生するリスク、例えば、回復できない状態が発生することを減らすためである。
この場合、途中までデータが書き込まれたヘッダブロック、データブロックを選択することも想定されるが、再構築時のアルゴリズムが同じである以上、通常、同じデータが書き込まれることが保証される。こういった場合に、現在と同じデータを書き込む場合は、不揮発性メモリそのものに書き込むことはしない。これは、通常データを書き込む際の高速化と同じである。
次に、本実施形態のメモリ制御装置1の性能を説明する。
本実施形態によるメモリ構造では、管理領域ブロック222の書込可能回数は、実データブロック223の書込可能回数に比べて余裕がある。従って、2つの管理領域ブロック222が、それぞれ50〜100回程度の消去可能であることが保証されれば、一方の管理領域ブロックが、1000回まで消去しないうちに、突然不良ブロックとなっても、通常は、動作上の問題は生じない。また、初期データブロック211は、それぞれのブロックが、仮に一度も消去可能でなくとも、データが書き込めれば十分である。そのため、コスト的にも著しく有利となる。
これまで述べた仕組みによりデータの書込可能回数が影響するのは、図4に示したクラスタ毎の32個のブロックのうち、28個の実データブロック223である。書込可能回数には、いくつかの変動要因がある。代表的な変動要因には、再構築に使用される分のデータサイズ(Rバイト)、データの領域を何バイト固定長にするか(これまで説明した例では16バイト固定長)、次回の再構築を行うまでに使用するヘッダの数がある。ヘッダの数が多くなれば、再構築の回数が減るので、多くの書込要求を実現できるが、ヘッダ間の周期が長くなる分、検索に時間がかかることになる。従って、実際の書込可能回数は、これらの変動要因を考慮した上で、最適な値を決めていくことになる。
初期データブロック221に書き込まれる初期データは、市場で上書きされない部分である。そのため、単純には、初期データを持っているアドレスが指定されたときは、その初期データを使い、そうでなければ、EEPROMエミュレーションで得た値を使うことができる。
まず、初期データとして使用する範囲を決めるために、予めフラッシュメモリ6にアクセスしようとするプログラム上にアドレスを指定しておく。例えば、アドレス[0X3000]〜[0X3100]をその範囲とする。アドレス[0X3000]への1回目の書込は、図4に示した初期データブロック221に直接書き込まれる。初期データは、上述したとおり、原則として1度だけ書き込まれるものであるが、2回目以降の書込は、上述した本実施形態のEEPROMエミュレーションでそれを行う。また、EEPROMエミュレーションの際の領域検索にも用いられる。初期データブロック221を検索し、データが見つかれば終了し、見つからなければ、データが書き込まれていないことを示す[0XFF]を検索要求元に返すことになる。
また、本実施形態では、512kBのフラッシュメモリの場合の例を示したが、データサイズは、512kB以下、あるいはそれ以上であっても良い。
また、本実施形態では、エントリとブロックの2階層のグループでデータの書込を行う場合の例を説明したが、3階層であっても良い。あるいは、エントリ単位であっても良い。
Claims (9)
- 書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリにアクセス可能な装置が行うメモリ制御方法であって、
前記不揮発性メモリの書込領域を、それぞれシーケンシャルに関連付けて所定数毎にグループ化するとともに、所定回数のデータ書込を可能にする上で必要となるグループ数を確保し、確保した数のグループにおいて、書込時に未書込領域又は書込可能領域が残るグループがあるときはこのグループの当該領域への追記を行い、追記元のグループについては、所定の条件を満たした時点でグループ単位で消去することを特徴とする、
メモリ制御方法。 - 前記装置は、前記確保した数のグループによる所定回数のデータ書込を終了したことを検知したときに、前記不揮発性メモリから所定回数のデータ書込を可能にする上でさらに必要となるグループ数を新たに確保することを特徴とする、
請求項1記載のメモリ制御方法。 - 前記装置は、前記確保した数のグループによる所定回数のデータ書込を終了する前に制御動作を停止したときは、回復時に、停止前に確保していたグループを再確保することを特徴とする、
請求項1又は2記載のメモリ制御方法。 - 書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリへのデータの書込を制御する装置であって、
前記不揮発性メモリには、それぞれ複数の書込領域をシーケンシャルに関連付けた複数個のデータ領域グループと、どのデータ領域グループのどの書込領域にデータが書き込まれているかを表すヘッダ情報の書込領域を有する複数個のヘッダ領域グループと、どのデータ領域グループ及びどのヘッダ領域グループの書込領域にアクセス可能かを表す管理情報の書込領域を有する管理領域グループとが形成されており、
前記複数個のデータ領域グループのうち、追記可能な書込領域を有するデータ領域グループを前記不揮発性メモリにおいて特定し、特定したデータ領域グループのうち追記可能な書込領域に、入力された新たなデータを逐次追記し、追記可能な書込領域が足りない場合は次のデータ領域グループを前記不揮発性メモリにおいてさらに特定して前記入力されたデータの追記を完了させ、データの追記が完了した1又は複数のデータブロックを前記不揮発性メモリにおいてデータ領域グループ毎に書き換えるとともに、追記したデータ領域グループの書込領域の特定を可能にするアドレス情報を含む前記ヘッダ情報を生成し、生成したヘッダ情報を、前記ヘッダ領域グループの書込領域に追記する書込処理手段と、
前記データ領域グループ又は前記ヘッダ領域グループにおける書込回数が所定回数に達したことを検知する第1の検知手段と、
この第1の検知手段により前記所定回数に達したことが検知されたときに、次に前記所定回数のデータ書換を確保するために必要となる数の前記データ領域グループを前記不揮発性メモリより新たに確保し、確保したデータ領域グループについての前記管理情報を生成し、生成した管理情報を前記管理領域グループに書き込む再構築処理手段と、を有する、メモリ制御装置。 - 前記書込処理手段は、前記追記が完了したデータ領域グループが、追記可能な書込領域が残っていたデータ領域グループであるときは、追記前の当該データ領域グループを前記不揮発性メモリの所定領域に一時的に保持しておき、予め定めた条件を満たすことを検出したときに、当該一時的に保持してあるデータ領域グループを消去する、
請求項4記載のメモリ制御装置。 - 前記不揮発メモリに、複数回のデータ書込に共通に使用する初期データを書き込むための初期データ書込領域が形成されており、
前記書込処理手段は、前記データの追記を行う際に前記初期データ書込手段に書き込まれている初期データを参照する、
請求項4記載のメモリ制御装置。 - 前記再構築処理手段は、前記データ領域グループの消去に先立ち、前記新たなデータ領域グループと共に新たなヘッダ領域グループを選択し、選択したデータ領域グループ及びヘッダ領域グループについての前記管理情報を生成する、
請求項6記載のメモリ制御装置。 - メモリ制御動作の停止後に回復したことを検知する第2の検知手段をさらに備えており、
前記再構築処理手段は、
前記第2の検知手段が、前記回復したことを検知したときは、新たなデータ領域グループ及びヘッダ領域グループの確保に代えて、前記管理領域グループに書き込まれている管理情報に基づいて、停止前の書込状態のデータ領域グループ及びヘッダ領域グループを確保する、
請求項7記載のメモリ制御装置。 - コンピュータを、書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリへのデータの書込を制御する装置として動作させるためのコンピュータプログラムであって、
前記コンピュータを、
前記不揮発性メモリに、それぞれ複数の書込領域をシーケンシャルに関連付けた複数個のデータ領域グループと、どのデータ領域グループのどの書込領域にデータが書き込まれているかを表すヘッダ情報の書込領域を有する複数個のヘッダ領域グループと、どのデータ領域グループ及びどのヘッダ領域グループの書込領域にアクセス可能かを表す管理情報の書込領域を有する管理領域グループとを形成するグループ形成手段、
前記複数個のデータ領域グループのうち、追記可能な書込領域を有するデータ領域グループを前記不揮発性メモリにおいて特定し、特定したデータ領域グループのうち追記可能な書込領域に、入力された新たなデータを逐次追記し、追記可能な書込領域が足りない場合は次のデータ領域グループを前記不揮発性メモリにおいてさらに特定して前記入力されたデータの追記を完了させ、データの追記が完了した1又は複数のデータブロックを前記不揮発性メモリにおいてデータ領域グループ毎に書き換えるとともに、追記したデータ領域グループの書込領域の特定を可能にするアドレス情報を含む前記ヘッダ情報を生成し、生成したヘッダ情報を、前記ヘッダ領域グループの書込領域に追記する書込処理手段、
前記データ領域グループ又は前記ヘッダ領域グループにおける書込回数が所定回数に達したことを検知する検知手段、
この第1の検知手段により前記所定回数に達したことが検知されたときに、次に前記所定回数のデータ書換を確保するために必要となる数の前記データ領域グループを前記不揮発性メモリより新たに確保し、確保したデータ領域グループについての前記管理情報を生成し、生成した管理情報を前記管理領域グループに書き込む再構築処理手段、として機能させる、コンピュータプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008038535A JP2009199211A (ja) | 2008-02-20 | 2008-02-20 | メモリ制御方法及び装置、コンピュータプログラム |
PCT/JP2008/072724 WO2009104330A1 (ja) | 2008-02-20 | 2008-12-09 | メモリ制御方法及び装置、メモリアクセス制御方法、コンピュータプログラム、記録媒体 |
CN2008801281804A CN101978361B (zh) | 2008-02-20 | 2008-12-09 | 存储器控制方法以及装置、存储器访问控制方法 |
US12/867,584 US8595413B2 (en) | 2008-02-20 | 2008-12-09 | Memory control method and device, memory access control method, computer program, and recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008038535A JP2009199211A (ja) | 2008-02-20 | 2008-02-20 | メモリ制御方法及び装置、コンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009199211A true JP2009199211A (ja) | 2009-09-03 |
Family
ID=41142660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008038535A Pending JP2009199211A (ja) | 2008-02-20 | 2008-02-20 | メモリ制御方法及び装置、コンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009199211A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101339739B1 (ko) * | 2011-10-24 | 2013-12-10 | 콘티넨탈 오토모티브 일렉트로닉스 유한회사 | 에뮬레이션 eeprom을 이용한 적산계의 데이터 기록방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1173363A (ja) * | 1997-08-29 | 1999-03-16 | Matsushita Graphic Commun Syst Inc | メモリー制御装置 |
JP2004533029A (ja) * | 2001-01-19 | 2004-10-28 | サンディスク コーポレイション | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 |
JP2005018490A (ja) * | 2003-06-26 | 2005-01-20 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム |
JP2005243000A (ja) * | 2004-01-30 | 2005-09-08 | Matsushita Electric Ind Co Ltd | 半導体メモリ装置、メモリコントローラ及びデータ記録方法 |
-
2008
- 2008-02-20 JP JP2008038535A patent/JP2009199211A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1173363A (ja) * | 1997-08-29 | 1999-03-16 | Matsushita Graphic Commun Syst Inc | メモリー制御装置 |
JP2004533029A (ja) * | 2001-01-19 | 2004-10-28 | サンディスク コーポレイション | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 |
JP2008004117A (ja) * | 2001-01-19 | 2008-01-10 | Sandisk Corp | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 |
JP2005018490A (ja) * | 2003-06-26 | 2005-01-20 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム |
JP2005243000A (ja) * | 2004-01-30 | 2005-09-08 | Matsushita Electric Ind Co Ltd | 半導体メモリ装置、メモリコントローラ及びデータ記録方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101339739B1 (ko) * | 2011-10-24 | 2013-12-10 | 콘티넨탈 오토모티브 일렉트로닉스 유한회사 | 에뮬레이션 eeprom을 이용한 적산계의 데이터 기록방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10783071B2 (en) | Data storage device and operating method thereof, wherein mapping table for valid data of source block that has not been copied to destination block has a higher priority than mapping information collected by reverse scanning from end of the destination block | |
JP5336060B2 (ja) | 不揮発性メモリ装置およびそれを動作させる方法 | |
JP4192129B2 (ja) | メモリ管理装置 | |
US6154808A (en) | Method and apparatus for controlling data erase operations of a non-volatile memory device | |
KR100531192B1 (ko) | 비휘발성 메모리의 제어방법 | |
JP4688584B2 (ja) | ストレージ装置 | |
JP3485938B2 (ja) | 不揮発性半導体メモリ装置 | |
WO2009104330A1 (ja) | メモリ制御方法及び装置、メモリアクセス制御方法、コンピュータプログラム、記録媒体 | |
KR100370893B1 (ko) | 일괄 소거형 비휘발성 메모리 장치 | |
JP2010092506A (ja) | 複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能 | |
JPWO2007000862A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
JP4843222B2 (ja) | 半導体記憶装置の制御方法、メモリカード、及びホスト機器 | |
US5724544A (en) | IC memory card utilizing dual eeproms for image and management data | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
JP2009116465A (ja) | 記憶装置及びメモリ制御方法 | |
JP4661369B2 (ja) | メモリコントローラ | |
JP4794530B2 (ja) | 半導体装置および携帯電話 | |
JP4826232B2 (ja) | 情報処理装置およびブートプログラムの書き換え方法 | |
JP2009199211A (ja) | メモリ制御方法及び装置、コンピュータプログラム | |
JP5273780B2 (ja) | メモリアクセス制御方法及びメモリ制御装置、コンピュータプログラム | |
JP2013033338A (ja) | メモリシステム | |
JP5180726B2 (ja) | 記憶装置およびデータ書き込み制御方法 | |
JP5520880B2 (ja) | フラッシュメモリ装置 | |
JP2015049722A (ja) | マイクロコンピュータ及び不揮発性メモリのブロック管理方法 | |
JP2010026794A (ja) | メモリ制御装置及び方法、コンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100714 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100818 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20101125 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101202 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20101202 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121023 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121210 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130122 |