JP2009199211A - メモリ制御方法及び装置、コンピュータプログラム - Google Patents

メモリ制御方法及び装置、コンピュータプログラム Download PDF

Info

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
Application number
JP2008038535A
Other languages
English (en)
Inventor
Koji Shima
幸司 島
Hideyoshi Asai
英嘉 浅井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2008038535A priority Critical patent/JP2009199211A/ja
Priority to PCT/JP2008/072724 priority patent/WO2009104330A1/ja
Priority to CN2008801281804A priority patent/CN101978361B/zh
Priority to US12/867,584 priority patent/US8595413B2/en
Publication of JP2009199211A publication Critical patent/JP2009199211A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】フラッシュメモリへの書込可能回数を飛躍的に増加させる。
【解決手段】フラッシュメモリ6に、それぞれ複数のデータの書込領域を有する複数のデータブロックを有する実データブロック223を形成する。メモリ制御装置は、データブロックのうち、追記可能な書込領域を有するデータブロックを特定し、特定したデータブロックの追記可能な書込領域に、入力された新たなデータを逐次追記してデータの追記を完了させる。追記前のブロックは、ある時期まで保持した後、ブロック単位で消去する。データブロックにおける書込回数が所定回数に達したときは、次に所定回数のデータ書換を確保するために必要となる数のデータブロックを新たに選択し、選択したデータブロックについて上記動作を繰り返す。
【選択図】図4

Description

本発明は、データ処理装置において、データの書込可能回数に一定の制限のある不揮発性メモリへのデータの書込可能回数を、その不揮発性メモリの一般的な使い方をするよりも、多くする仕組みに関する。より詳しくは、不揮発性メモリとして、例えばEEPROM(Electrically Erasable and Programmable Read Only Memory )の代わりに、NAND型又はNOR型のフラッシュメモリを用いたときのように、データの書込可能回数が少なくなっても、もとのEEPROMと同程度のデータの書き換えをフラッシュメモリにおいて保証するメモリ制御方法、装置、コンピュータプログラムに関する。
EEPROM及びフラッシュメモリは、データの書込可能回数、正確には消去回数に制限がある。これらのメモリでは、データを書き込む際に、それまで書き込まれていたデータを消去する必要があるためである。フラッシュメモリは、EEPROMに比べて、データの書込可能回数が著しく少ないことは、良く知られている。書込可能回数は、例えば、EEPROMは約10万回(参考値)であるのに対し、フラッシュメモリは1000回(参考値)程度である。そのため、データの書換頻度の高い用途では、EEPROMが使われ、そうでない箇所では、一般に、フラッシュメモリが使われている。
EEPROMは、書込可能回数が多い反面、フラッシュメモリに比べてかなり高価である。そのため、EEPROMをデータを記録媒体として使用する情報処理装置において、このデータ記録媒体をフラッシュメモリで代用することができれば、データ記録媒体を低コストで実現できる期待がある。
EEPROMをフラッシュメモリで代用するには、フラッシュメモリにおいてEEPROMと同じ程度の回数の書込を保証する仕組みが必要となる。そのための従来技術して、例えば非特許文献1に紹介されている「EEPROMエミュレーション」と呼ばれる技術がある。フラッシュメモリでは、データ書き込む際に、それまで書き込まれていたデータを消去する必要があることは上述したとおりであるが、EEPROMエミュレーション(登録商標)では、そのデータの消去を複数の書込領域毎に行うことで、データ書込時の消去回数を減らし、見かけ上の書込可能回数をEEPROM程度まで多くする。
「アプリケーションノート U17057JJ3V0AN00」、第3版、NECエレクトロニクス株式会社、2004年11月、p.25−27
非特許文献1に紹介されているEEPROMエミュレーションでは、データを1回で書き込むことのできる複数の書込領域から成るグループ、すなわち書込単位は、図16(a)に示されるとおり、データ番号、データ、デリミタから構成される。図中、データ番号は、書込単位のアドレスである。データは所定バイト毎に格納される。書き込まれたデータを読み込むときは、先頭のデータ番号から所定バイト毎にインクリメントしながら他のデータ番号をサーチする。そして、最終のデータ番号を、最新のデータが書き込まれた書込単位のアドレスとして扱う。
データの領域は、複数バイトを割り当てることができる。但し、各データは、他のデータ番号で示される書込単位のデータとは独立であり、互いに干渉されることがない。例えば、図16(b)は、それぞれデータ番号が「0X01」、「0X02」、「0X03」となる3つの書込単位の例を示しているが、データ番号「0X01」の書込単位に、3バイトのデータ「0X11」、「0X22」、「0X33」をこの順に書き込んだ場合、データ番号「0X03」の書込単位から任意の1バイトを読み込もうとしても、データ「0X33」が得られるわけではない。
このため、EEPROMエミュレーションのアドレス体系は、EEPROMのアドレス体系と一致しない。なお、図16(b)において、数値は、16進法(Hexadecimal Numbre)で表現される数値である。
EEPROMをフラッシュメモリで代用するときのように、フラッシュメモリにおいてEEPROMと同程度の回数のデータの書込を保証するには、EEPROMのアドレス体系も保持されていると使いやすい。そのためには、アドレス体系管理の汎用化の仕組みが必要となる。
本発明は、書込領域毎のアドレスを管理することができ、不揮発性メモリの書込可能回数も通常の使用形態のときよりも増加させることができる特徴的なメモリ制御方法及び装置、並びに、コンピュータをこのような装置として動作させることができるコンピュータプログラムを提供することを課題とする。
本発明が提供するメモリ制御方法は、書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリにアクセス可能な装置が行うメモリ制御方法であって、前記不揮発性メモリの書込領域を、それぞれシーケンシャルに関連付けて所定数毎にグループ化するとともに、所定回数のデータ書込を可能にする上で必要となるグループ数を確保し、確保した数のグループにおいて、書込時に未書込領域又は書込可能領域が残るグループがあるときはこのグループの当該領域への追記を行い、追記元のグループについては、所定の条件を満たした時点でグループ単位で消去することを特徴とする方法である。
本発明のある実施の態様では、前記装置は、前記確保した数のグループによる所定回数のデータ書込を終了したことを検知したときに、前記不揮発性メモリから所定回数のデータ書込を可能にする上でさらに必要となるグループ数を新たに確保することを特徴とする。本発明の他の実施の態様では、前記装置は、前記確保した数のグループによる所定回数のデータ書込を終了する前に制御動作を停止したときは、回復時に、停止前に確保していたグループを再確保することを特徴とする。
本発明が提供するメモリ制御装置は、書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリへのデータの書込を制御する装置であって、前記不揮発性メモリには、それぞれ複数の書込領域をシーケンシャルに関連付けた複数個のデータ領域グループと、どのデータ領域グループのどの書込領域にデータが書き込まれているかを表すヘッダ情報の書込領域を有する複数個のヘッダ領域グループと、どのデータ領域グループ及びどのヘッダ領域グループの書込領域にアクセス可能かを表す管理情報の書込領域を有する管理領域グループとが形成されており、前記複数個のデータ領域グループのうち、追記可能な書込領域を有するデータ領域グループを前記不揮発性メモリにおいて特定し、特定したデータ領域グループのうち追記可能な書込領域に、入力された新たなデータを逐次追記し、追記可能な書込領域が足りない場合は次のデータ領域グループを前記不揮発性メモリにおいてさらに特定して前記入力されたデータの追記を完了させ、データの追記が完了した1又は複数のデータブロックを前記不揮発性メモリにおいてデータ領域グループ毎に書き換えるとともに、追記したデータ領域グループの書込領域の特定を可能にするアドレス情報を含む前記ヘッダ情報を生成し、生成したヘッダ情報を、前記ヘッダ領域グループの書込領域に追記する書込処理手段と、前記データ領域グループ又は前記ヘッダ領域グループにおける書込回数が所定回数に達したことを検知する第1の検知手段と、この第1の検知手段により前記所定回数に達したことが検知されたときに、次に前記所定回数のデータ書換を確保するために必要となる数の前記データ領域グループを前記不揮発性メモリより新たに確保し、確保したデータ領域グループについての前記管理情報を生成し、生成した管理情報を前記管理領域グループに書き込む再構築処理手段と、を有する装置である。
前記書込処理手段は、具体的には、前記書込処理手段は、前記追記が完了したデータ領域グループが、追記可能な書込領域が残っていたデータ領域グループであるときは、追記前の当該データ領域グループを前記不揮発性メモリの所定領域に一時的に保持しておき、予め定めた条件を満たすことを検出したときに、当該一時的に保持してあるデータ領域グループを消去する。また、不揮発メモリに、複数回のデータ書込に共通に使用する初期データを書き込むための初期データ書込領域を形成しておき、書込処理手段で、前記データの追記を行う際に前記初期データ書込手段に書き込まれている初期データを参照するようにしても良い。
前記再構築処理手段は、例えば、前記データ領域グループの消去に先立ち、前記新たなデータ領域グループと共に新たなヘッダ領域グループを選択し、選択したデータ領域グループ及びヘッダ領域グループについての前記管理情報を生成する。
好ましい実施の態様では、メモリ制御動作の停止後に回復したことを検知する第2の検知手段をさらに備えており、前記再構築処理手段は、前記第2の検知手段が、前記回復したことを検知したときは、新たなデータ領域グループ及びヘッダ領域グループの確保に代えて、前記管理領域グループに書き込まれている管理情報に基づいて、停止前の書込状態のデータ領域グループ及びヘッダ領域グループを確保する。
本発明が提供するコンピュータプログラムは、コンピュータを、書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリへのデータの書込を制御する装置として動作させるためのコンピュータプログラムであって、前記コンピュータを、前記不揮発性メモリに、それぞれ複数の書込領域をシーケンシャルに関連付けた複数個のデータ領域グループと、どのデータ領域グループのどの書込領域にデータが書き込まれているかを表すヘッダ情報の書込領域を有する複数個のヘッダ領域グループと、どのデータ領域グループ及びどのヘッダ領域グループの書込領域にアクセス可能かを表す管理情報の書込領域を有する管理領域グループとを形成するグループ形成手段、前記複数個のデータ領域グループのうち、追記可能な書込領域を有するデータ領域グループを前記不揮発性メモリにおいて特定し、特定したデータ領域グループのうち追記可能な書込領域に、入力された新たなデータを逐次追記し、追記可能な書込領域が足りない場合は次のデータ領域グループを前記不揮発性メモリにおいてさらに特定して前記入力されたデータの追記を完了させ、データの追記が完了した1又は複数のデータブロックを前記不揮発性メモリにおいてデータ領域グループ毎に書き換えるとともに、追記したデータ領域グループの書込領域の特定を可能にするアドレス情報を含む前記ヘッダ情報を生成し、生成したヘッダ情報を、前記ヘッダ領域グループの書込領域に追記する書込処理手段、前記データ領域グループ又は前記ヘッダ領域グループにおける書込回数が所定回数に達したことを検知する検知手段、この第1の検知手段により前記所定回数に達したことが検知されたときに、次に前記所定回数のデータ書換を確保するために必要となる数の前記データ領域グループを前記不揮発性メモリより新たに確保し、確保したデータ領域グループについての前記管理情報を生成し、生成した管理情報を前記管理領域グループに書き込む再構築処理手段、として機能させる、コンピュータプログラムである。
本発明のメモリ制御方法によれば、書込は不揮発性メモリにおいて確保したグループの未書込領域への書込領域毎で行うので、書込領域のアドレス体系の汎用化が可能となり、さらに、データの書込の平準化が可能で、消去もグループ単位で行うので、書込可能回数が不揮発性メモリの通常の使用態様よりも格段に増加するという特有の効果が得られる。
本発明のメモリ制御装置においても、データ領域グループの追記可能な書込領域に逐次追記されるので、アドレス体系の汎用化が可能であり、消去回数の減少とデータ書込の平準化も可能となるので、書込可能回数が、不揮発性メモリの通常の使用態様より増加する。
図1は、本発明の実施の形態例となるメモリ制御装置の構成例を示す図である。このメモリ制御装置1は、プロセッサユニット2と、不揮発性メモリの一例となるフラッシュメモリ6とをデータバス7で接続して構成される。プロセッサユニット2は、プロセッサ3と、本発明のコンピュータ・プログラムを格納したプログラムメモリ4と、揮発性メモリであるワーキングメモリ5とを含み、プロセッサ3が、コンピュータ・プログラム4をワーキングメモリ5に展開し、これを実行することにより、フラッシュメモリ6に対して特徴的なメモリ制御、例えばEEPROMエミュレーションを行うためのグループ形成手段、書込処理手段、読込処理手段、各種検知手段、再構築処理手段の機能をプロセッサユニット2において実現する。ワーキングメモリ5には、一時的なデータの保持を行うバッファも形成される。
まず、本実施形態によるメモリ制御の概念を従来技術との対比で説明する。
図2(a)は、一般的に行われている従来のメモリ制御の概念図である。従来は、フラッシュメモリにデータを書き込む場合、メモリ制御装置は、そのフラッシュメモリのアドレスを指定する。このときのアドレスは、物理アドレスである。このアドレスの示す書込領域にデータが存在するかどうかを調べ、存在するときは、それを消去した後にデータを書き込んでいる。例えばアドレス「0X3600」の示す書込領域にデータ「0X11」、「0X22」、「0X33」をこの順に書き込むと、そのアドレス「0X3600」の示す書込領域でのデータは逐次書き換えられ、最後のデータ「0X33」だけが残る。このようなメモリ制御の仕方では、同じアドレスでの書き換えが集中する場合があるために、上述したように約1000回程度の書き換えしかできない。そのため、このままでは、約10万回も書き換えが可能で、アドレス体系も異なるEEPROMの代用はできない。
本実施形態では、データを書き込む際に、同じアドレスに集中しないように、平準化した書込を実現し、書込可能回数の増加を図る。そのために、図2(b)に示すように、アドレス指定は論理アドレスに相当する部分に行い、データを書き込む書込領域は、論理アドレスに相当する部分と関連付けられたアドレスにより特定される書込領域とした。
なお、フラッシュメモリでは消去が伴うので、書込ないし追記は、実際には書き換えとなる。以下、両者を区別する必要がある場合を除き、書込ないし追記と表現する。
図2(b)の例では、アドレス「0X3600」(論理アドレスに相当)への1回目のデータ「0X11」は、そのアドレス「0X3600」とマッピングされたアドレス「0X1000」(物理アドレスに相当)の示す書込領域に書き込む。アドレス「0X3600」への2回目のデータ「0X22」は、アドレス「0X3600」とマッピングされたアドレス「0X1003」の示す書込領域に書き込む。アドレス「0X3600」への3回目のデータ「0X33」は、アドレス「0X3600」とマッピングされたアドレス「0X1004」の示す書込領域に書き込む。このようにすれば、3回のデータ書込が行われても、実際にデータが書き込まれる物理アドレス相当の示す領域での書換は、それぞれ1回だけとなるので、データの書込可能回数は、実質的に3倍となる。
本実施形態のメモリ制御は、このようなアドレスの関連付けの仕組みを採り入れた、新規なEEPROMエミュレーションを実現可能にする手法である。すなわち、データ書込は、EEPROMのアドレス体系を考慮して個々の書込領域毎に行い、消去は、不要になった複数の書込領域から成るグループ毎に行えるようにする。
以後の説明では、書込単位となる複数の書込領域のグループのうち、最小単位のグループをエントリ、複数のエントリのグループをブロックと呼ぶ。複数のエントリは、連続するアドレスによってシーケンシャルにつながっている。ブロックも同様である。本実施形態では、データの書込に際してこのようなグループの再構築を伴う点に一つの特徴がある。この再構築の概念を図3を参照して説明する。
図3(a)は、データ書込前のデータ領域グループの構造図である。ここでは、簡略化した構造例として、一つのエントリにおけるアドレスの領域が16バイトアライメント、データの領域が16バイト固定長、すなわち、例えばそれぞれ1バイトのデータを書き込む16個の書込領域を有するものとする。16個の書込領域並びに他のエントリの書込領域は、連続するアドレスで関連付けることにより、書込領域をそれぞれシーケンシャルに関連付ける。図示の数値は、16進法で表現されている。[0XFF]は、未書込領域を表す。
このような構造のエントリにおいて、メモリ制御装置1が、アドレス[0X3600](論理アドレスに相当)を指定して17バイトのデータを書き込んだとする。データの領域は16バイト固定長であるため、書込対象となる17バイトのデータは、アドレス[0X3600]〜[0X360F]のエントリに16バイト分(それぞれ[0X11])だけが書き込まれる。残りの1バイト分のデータ([0X11])は、シーケンシャルにつながる次のエントリの最初の書込領域(アドレス[0X3610])に書き込まれる。この状態を図3(b)に示す。この場合、アドレス[0X3610]から1バイトのデータを読み込むと、データ[0X11]が得られる。
この状態で、さらに1バイトのデータ[0X22]をアドレス[0X3611]に追記する場合、その時点で最新となっている、アドレス[0X3611]の16バイトアライメントであるアドレス[0X3610]のエントリを特定し、そのエントリの16バイト分のデータのうちアドレス[0X3611]に相当する部分を更新した16バイトのデータを、新しいエントリとして書き込む処理を行う(read-modify-write)。
更新は、追記前の最終の書込の次の未書込のエントリに、上記の新しいエントリを追記することにより、当該エントリの未書込領域を減らしていく処理である。この状態を示したのが、図3(c)である。追記が行われたエントリを、アドレス[0X3610]の新たなエントリとして書き込む。これにより、追記前のアドレス[0X3610]のエントリ(図3(b)の下段のエントリ)は不要となるので、これを、予め定めた所定条件を満たすことを検知したときに削除する。削除される間では保持される。保持する領域は、その領域を特定できれば、どこであっても良い。
このように、データ書込は個々の未書込領域毎に行い、消去するときはグループ毎(上記の例では、エントリ毎)に行うのが、本実施形態におけるEEPROMエミュレーションの一つの特徴である。これはブロックの場合も同様となる。これにより、データの書換が特定のアドレスに集中する場合に比べて消去回数が格段に減少するので、書込可能回数が増加する。この削除と必要なデータの保持を「再構築」という。再構築は、書込領域を[0XFF]に置き換える初期化とは区別される。
<フラッシュメモリのメモリ構造>
本実施形態によるフラッシュメモリ6のメモリ構造例を図4に示す。このようなメモリ構造は、グループ形成手段として機能するプロセッサユニット2により形成される。
本例では、フラッシュメモリ6は、便宜上、512kBのものとする。このフラッシュメモリ6に、128kBの割当領域20を設ける。図2との関係では、フラッシュメモリ6は、図2(a)にいう物理アドレスを持つ不揮発性メモリに相当する。
割当領域20は、それぞれ128kBの半分である64kBのクラスタ#0(第1系統用)21と、クラスタ#1(第2系統用)22とに分割する。第1系統と第2系統は、例えば、マスター/スレーブ、メイン/サブ、特別モード/通常モードのような使い方に対応するものである。2系統の使い方をしない場合、クラスタの分割は不要となる。
各系統のクラスタ21,22は、それぞれ複数のブロックで構成される。ブロックのサイズを2kBとすると、ブロックの数は32となる。個々のブロックの構成は、2系統のクラスタ21,22とも同じとなる。消去は、後述するエントリ毎、あるいは、ブロック毎に行うことができる。
図4の例では、クラスタ#1(第2系統用)22について、初期データ用の初期データブロック221、管理領域ブロック222及びデータ書込用の実データブロック223が形成される。
初期データブロック221は、フラッシュメモリ6に、初期に書き込む初期データのサイズに応じて、例えば2ブロック分(例えば、0〜31の番号で識別される32のブロックのうち、0,1の2つのブロック)を確保する。初期データは、フラッシュメモリ6に、原則として1度だけ書き込まれるデータであり、後述するヘッダ等を含まない、フラッシュメモリ6に書き込まれているデータを読み込むプログラムによってダイレクトに参照されるデータである。初期データとしては、例えば、EEPROMエミュレーションの際に、再構築用として確保するデータサイズを圧迫しないように、EEPROMエミュレーションにおいて共通に使用されるデータが用いられる。初期データのサイズは、512バイトといったように、大きな単位でのデータとなる場合があるので、後述するデータの追記を行う際にこの初期データを参照することにより、再構築の発生周期が長くなり、再構築回数の増加を抑えることができる。
管理領域ブロック222は、交互に使用する2ブロック(例えば、2,3の2つのブロック)を割り当てる。この管理領域ブロック222は、実データブロック223が、現在、どのようなブロック構成になっているかを書き込むための管理情報を書き込むためのブロック(領域グループ)である。
実データブロック223は、ヘッダブロックとデータブロックのいずれかとなる。ヘッダブロックは、フラッシュメモリ6のどの領域(どのブロックのどのアドレス)にどのデータが存在するかを示すヘッダだけが書き込まれるブロック(領域グループ)である。データブロックは、メモリ制御装置1の書込制御により、実際に扱うデータ(実データという)を書き込むためのブロック(領域グループ)であり、他のデータブロックとアドレスによってシーケンシャルにつながっている。
なお、管理領域ブロック222及び実データブロック223は、それぞれ複数のエントリを有する。エントリもまた、それぞれ連続するアドレスによってシーケンシャルにつながっている。図4の例では、実データブロック223についてのエントリ2231と、管理領域ブロック222についてのエントリ2221とが示されている。
実データブロック223のデータブロック内のエントリ、ヘッダブロック、及び、管理領域ブロック222の割当例を図5に示す。データブロックの各エントリは、図5上段に示すように、16バイト固定長である。書込領域構造は、図3(a)に示したエントリb11と同じである(図3(a)のアドレスは、便宜上の表現である)。ヘッダブロックは、本例では、書込の最小単位が4バイトとすると、その4バイトがフラッシュメモリ6に書き込まれるかそうでないかをアトミックに保証できる点を利用する。つまり、ヘッダを、4バイトのスタートマーク領域(StartMark:SMと略する)と、4バイトのエンドマーク領域(EndMark:EMと略する)と設定する。そして、アドレスへの書込を、SM、データブロック、EMの順に行う。このような順番で書込を行うことにより、実際にデータがデータブロックに書き込まれたか書き込まれないかは、EMへの書込が正常に行われたどうかによって、容易に判別することができる。
なお、EMのアドレスが書き込まれていれば、正しくデータが書き込まれたことを示すことになるので、実際には、4バイトの書込がアトミックに保証できる必要はなく、1バイトの書込がアトミックに保証されれば十分である。
SMは、フラグ(1バイト)、シーケンス番号(1バイト)、ブロック番号(1バイト)、エントリ位置(1バイト)の4バイトで構成される。フラグとシーケンス番号は、あるアドレスへの複数回にわたるデータの書込があったときに、これらがシーケンシャルにすべて行われたことを保証するために使用する。従えば256バイトの書込があったときは、個々のデータブロックが16バイト固定長であるために16回に分けて書込を行うことになる。このとき、16回の書込がシーケンシャルにすべて行われたことを保証するためにフラグとシーケンス番号が使用される。各回の書込が何番目かを表すのがシーケンス番号である。フラグには、シーケンス番号が有効であることを示す「SEQ」と、最初のシーケンス番号を示す「TOP_SEQ」とが設定される。検索は、最新に登録されたエントリから行われる。シーケンス番号は、書込が進むにつれて小さい値となる。従って、検索時に、フラグに「SEQ」があり、且つ、シーケンス番号が「0」であれば、それ以降に続くフラグ「TOP_SEQ」までのデータは、正しくデータブロックに書き込まれて、有効な状態であることを示す。逆に、検索時に、フラグに「SEQ」があり、且つ、シーケンス番号が「0」以外であれば、それ以降に続くフラグ「TOP_SEQ」までのデータは無いものとして扱う。
ブロック番号は、対象となるデータブロックが何番目のブロックかを識別するための番号であり、エントリ位置は、そのブロックのエントリが何番目のものかを示している。ブロック番号は、本例では、「0」〜「255」のいずれかである。エントリ位置は、データ長が16バイト固定で1ブロックが2kBとして、「0」〜「127」のいずれかである。
このブロック番号とエントリ位置が、実際にデータを書き込む物理アドレスに対応したものとなる。
EMは、同一アドレスの直前のエントリ位置(2バイト)、アドレス(2バイト)の4バイトで構成される。直前のエントリ位置は、再構築時に必要なデータである。再構築については、後で詳しく述べる。アドレスは、16バイトアライメント(固定長)であるが、あるアドレスに書込を行うときに、そのアドレスを読み込み、新しいデータで書き込む。これにより、そのアドレスの最新データは、最後に書き込まれたデータだけを読み込めば良いことになる。このアドレスが、SMのブロック番号及びエントリ位置(物理アドレス)と関連付けられた論理アドレスに相当するものとなる。
SM及びEMをこのように構成することにより、あるアドレスのデータを探し出すときに、EMの内容を参照するだけで、そのアドレスへのデータの書込が正常に行われているかどうかを迅速に判別することができる。
管理領域ブロック222は、再構築回数(2バイト)、フラグ(1バイト)、ブロック番号(1バイト)の4バイトから成る(図5下段)。再構築回数は、現在までの再構築の回数を示している。「ブロック番号」は、使用している実データブロック223を識別するためのブロック番号である。そのブロックが現在どのような状態かを示すのがフラグである。フラグは、「再構築中」、「ヘッダ」、「データ」、「再構築完了」のいずれかを示す。「ヘッダ」及び「データ」は、そのブロックの内容を示している。ブロック番号は、空きブロックの中から選択される。空きブロックは、本例では、消去済みであったときに空きブロックと判定される公知の機能を利用して判定する。
なお、後述するように、再構築を行うと、再構築前のブロック(エントリを含む)の情報は消去されるので、上記の空きブロックは、消去済みのブロックとなる。消去済のブロックは、ブロック内のすべてが未書込であることを示す[0XFF]であれば良いが、実際には、書込のできない不良ブロックの出現の可能性を否定できない。この場合、管理領域ブロック222のフラグに「不良ブロック」を設定し、不良ブロックの可能性のあるブロックの最初のエントリ部分を試し書き専用にして判定することも考えられる。しかし、一部のエントリのチェックでそのブロックの判定を行うことは、信頼性に欠ける。空きブロックの選択は、再構築時にだけ行われることに着目すれば、書込に失敗したときに、そのエントリをスキップする仕組みがあれば十分である。
メモリ制御装置1は、フラッシュメモリ6を初期化するときは、再構築すべきかどうかを判定する。再構築済であれば、通常の動作となる。この通常の動作の途中で電源の切断等があっても、SM、実データブロック、EMの順番に従って書き込まれている限り、データの状態は、特別な処理を必要としなくとも保証される。
<動作>
次に、メモリ制御装置1の動作を具体的に説明する。
1.読込処理
フラッシュメモリ6に書き込まれているデータの読込処理を、図6の手順説明図及び図11のメモリ状態図を参照して説明する。この処理は、プロセッサユニット2が、読込処理手段として動作するときに実行される。
フラッシュメモリ6は、図11に示される状態にあるものとする。図11の内容は、図4との関係では、「初期データ」が初期データブロック221、「管理領域」が管理領域ブロック222、その他のブロックが実データブロック223に対応する。各ブロックの後の数値は、「0」〜「31」のいずれかとなるブロック番号である。図11右側に示される管理領域のエントリのうち「0|0|S|0」は、フラグ「再構築中(S)」の次に検索開始の候補となる空きブロック番号が「0」、すなわち初期データブロック221なので再構築を開始していないことを示している。エントリ「0|0|H|4」及び「0|0|H|5」は、実データブロック223のうちヘッダブロック(H)としてブロック(4)及びブロック(5)を使用していることを示している。エントリ「0|0|D|6」〜「0|0|D|9」は、実データブロック223のうち、データブロック(D)として、ブロック(6),(7),(8),(9)を確保していることを示している。エントリ「0|0|E|0」は、フラグ「再構築完了(E)」が「0」、すなわち、再構築が完了していることを示している。
ヘッダブロック(4)のエントリは、確保しているデータブロックのうち、最初のデータブロック(6)に、データ(1)〜データ(3)の3つのデータが正常に書き込まれていることを示している。すなわち、データ(1)についてSM(1)とEM(1)、データ(2)についてSM(2)とEM(2)、データ(3)についてSM(3)とEM(3)の順に書き込まれていることを示している。
メモリ制御装置1は、データの読み込み要求を行うプログラムが指定する読み込むデータのアドレスの入力をもとに、ブロック情報を計算する(ステップR101)。ここにいうブロック情報は、上記の管理領域(2)及びヘッダブロック(4)に書き込まれているエントリから特定される情報である。
その後、アドレスのアライメント(a_addr)、オフセット(offset)を計算する(ステップR102)。アドレスのアライメント(a_addr)は、アドレス(addr)の16バイトアライメントである。例えば、読み込むデータの最初のアドレス(addr)が[0X3612]のとき、アドレスのアライメント(a_addr)は[0X3610]であり、差分である「2」がオフセット(offset)となる。このステップR102により計算されたアドレスのデータを読み込む(ステップR103)。必要なデータ分をワーキングメモリ5のバッファ(buf)に保存し、残りサイズを計算する(ステップR104)。ここにいう必要なデータ分は、「16−offset」かサイズ(size)のうち小さい方の値である。残りサイズは、サイズ(size)から(16−offset)分を差し引いた値となる。これを新たなサイズ(size)としてバッファに記憶する。残りサイズがあるときは、次のアライメントアドレスを計算し、オフセットを「0」にして、ステップR103の処理に戻る(ステップR105:Yes、R106)。残りサイズが無いときは、処理結果である読み出しデータを要求元に返し、終了する(ステップR105:No、R107)。
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)。
本例では、書込分割回数SEQは、サイズ(size)が16バイトとすると、SEQは「2」となる。すなわち、書込直前の状態では、最後に書き込まれたアドレス(addr)が[0X3612]で、オフセット(offset)が「2」であるから、1回の書込では14バイト分しか書き込めない。残りの2バイト分は、次のデータブロックへの2回目の書込となる。そのため、2分割ということになり、SEQは「2」となる。
そのため、処理は、初期データの書込判定と該当のアライメントアドレスのデータの読込処理へ移る(ステップW104:No、W107)。そして新しいデータに更新し(ステップW108)、書込処理へ移る(ステップW109)。書込処理については、後述する。ステップW106において、同じデータを書き込もうとしていない場合も、ステップW108の処理に移る。書込処理の後、「SEQ−1」の処理を行い、SMの初期フラグ値を調整する(ステップW110)。「SEQ>0?」を判別し、そうであった場合は、次のアドレスを計算して(ステップW111:Yes、W112)、ステップW107へ戻る。「SEQ>0」でなければ、処理を終える(ステップW111:No)。
図7のステップW105,W107における初期データの書込判定と該当のアライメントアドレスのデータ読込処理は、図8で示す手順で行われる。すなわち、メモリ制御装置1は、プログラムの指定したアライメントアドレスが初期データの範囲に指定されているかを調べる(ステップD101)。指定されているときは、初期データブロック221(図4)におけるアライメントアドレスから、サイズ(size)分のデータが、まだ初期値(0XFF)で埋められているかどうかを調べる(ステップD101:Yes、D102)。ここにいう初期値(0XFF)は、初期データと異なり、書き込まれているものが何もないことを表す。この初期値(0XFF)で埋められているときは、今回の書込データを初期データとして初期データブロック221に書き込み、書込処理を終える(ステップD102:Yes、D104)。他方、アライメントアドレスが初期データの範囲に指定されておらず、あるいは、指定されているが、指定のアライメントアドレスからサイズ分のデータが、初期値(0XFF)で埋められていない場合、つまり、初期データとして既に書き込まれている場合(ステップD101:No、D102:No)は、該当のアライメントアドレスのデータを読み込み(ステップD103)、呼び出し元の処理に戻る。
図7のステップW109における書込処理は、図9のように行われる
メモリ制御装置1は、データをデータ書込の順番(SM、データ、EMの順)に従って書き込む。(ステップW201)。この後、ヘッダブロックの領域に空きが無いかどうかを調べ、空きがあるときは、データ書込処理に戻る(ステップW202:No)。ヘッダブロックの領域に空き領域が無い場合は、次のヘッダブロックを選択できるかどうかを調べる(ステップW202:Yes、W203)。選択できるときは、次のヘッダブロックを選択し、ブロック情報を更新する(ステップW203、W204)。その後、呼び出し元の処理に戻る。ステップW203において、次のヘッダブロック領域を選択できないと判別できるときは、再構築処理へ移行する(ステップW203:Yes)。
以上の図7〜図9の処理の結果、フラッシュメモリ6のメモリ状態は、図12のようになる。データ(4)が書き込まれた結果、ヘッダブロック(4)の内容も更新される。管理領域(2)に変化はない。
3.再構築
再構築の処理を、図10の処理手順図及び図13〜図15のメモリ構造図を参照して説明する。この処理は、プロセッサユニット2が、再構築処理手段、各種検知手段として動作するときに実行される。
再構築は、書込処理手段による書込処理が実行されたときと、検知手段として動作するプロセッサユニット2が電源切断等の理由による動作停止ないし中止からの回復を検知したときに行われる。読込処理のときには行われない。これは、読込処理の速度のワーストケースを保証するためである。
3−1.書込処理時の再構築
まず、書込処理時の再構築の手順を説明する。すなわち、再構築直前のフラッシュメモリ6が図13のようになっている状態で、図14のように、新たにデータを追記した場合を想定する。図13は、2つ目のヘッダブロック(5)に、1回分のデータについてのSM、EMしか書き込めない状態になっている状態(データ(n)によって511回の書込が既に行われている状態)、図14は、この1回分のデータについてのSM、EMを書き込んだ状態(512回の書込が行われ、ヘッダブロックのSM,EMが追記された状態)を示している。
メモリ制御装置1は、図10に示すように、過去の消去可能なブロックが存在するかどうかを調べる(ステップS101)。過去の消去可能なブロックは、その内容が書き換えられたブロックである。存在するときは、そのブロックを消去する(ステップS101:Yes、S102)。消去可能なブロックが存在しない場合、あるいは存在するが消去した場合は、再構築開始を示す情報を管理領域ブロック222に書き込む(ステップS101:No、S103)。
新しいヘッダブロックを選択し、管理領域に書き込む(ステップS104)。また、新しいデータブロックを選択し、管理領域に書き込む(ステップS105)。512回の書込毎に再構築する場合、ヘッダブロックは2つ、データブロックは4つ選択される。つまり、再構築のために6ブロック消費する。これは、1つのヘッダブロックに256のヘッダを確保できるので、512のヘッダを確保するには、ヘッダブロックは2つとなる。データブロックは、データの領域が16バイト固定長で、ブロックサイズが2kBであるから1つで128回となり、512回確保するためには、4つが必要ということになる。図11〜図12の右側に示した管理領域ブロック222のエントリは、初期化後に行われる上記のことが根拠となっていた。再構築するときは、さらに6ブロックを確保する。
メモリ制御装置1は、古いヘッダブロックが存在するかどうかを調べる(ステップS106)。存在する場合は、その古いヘッダブロックにおいて登録の順番の新しい側から順にデータを読み込む(ステップS107)。過去に選択されたスキップすべきアドレスかどうかを調べ、そうでない場合は、新しいデータブロックにデータを書き込む(ステップS108:No、S109)。そして、選択アドレスと一致する、それより前のデータは不要なデータとなるので、スキップできるようにするために、バッファに記憶しておく(ステップS110)。
ステップS108において、スキップすべきアドレスであった場合(ステップS108:Yes)、あるいは、スキップできるように記憶した後は、すべての古いブロックのデータを確認したかどうかを調べる(ステップS111)。未確認のブロックのデータが存在するときは、ステップS108の処理に戻る(ステップS111:No、S112)。
すべての古いブロックのデータを確認し終えた場合、あるいは、ステップS106において、古いヘッダブロックが無かった場合は(ステップS106)、再構築完了の情報を管理領域に書き込み、書込処理のための待機に戻る(ステップS120)。
再構築の完了により、直前の実データブロックは、新たに不要となった実データブロック(旧実データブロックという)となる。旧実データブロックは、この段階では削除せず、次の再構築のタイミングまで保持される。これは、再構築完了を書き込む前には旧実データブロックは削除できないこともあるが、削除していないことを示すフラグを持つと、その分、後述する回復のときの再構築のときに考慮すべきことが増え、複雑になることを防ぐためである。
なお、旧実データブロックを削除するときは、管理領域ブロック222にエントリされているEMの「同一アドレスの直前のエントリ位置」が意味をもつ。つまり、古いデータがリンクされ、存在位置が判るので、再構築に要する時間を長引かせることがない。
再構築完了のメモリ状態を示したのが図15である。管理領域ブロック222に追加されたエントリは、再構築中(S)の最初に検索するブロック番号が「9」で、ヘッダブロックは新たにブロック(10),(11)が確保され、データブロックは、ブロック(12)〜(15)が確保される内容となる。データは、データ(1)〜データ(m)までが複写され、ヘッダブロックのエントリは、SM(1),EM(1)〜SM(m)、EM(m)に変化する。最新のエントリから逆順に検索すると、再構築完了(E)があるので、このフラッシュメモリ6では、再構築が正常に完了していることが保証される。
3−2.回復のときの再構築
回復のときの再構築は、上述のステップS104,105において、2つのヘッダブロック及び4つのデータブロックを選択する際に、新しいものを選択するのでなく、それまで使用していたヘッダブロック及びデータブロックを再選択する。これは、検知手段にとって、再構築時に例えば電源切断が発生したことが容易に検知できることに加え、再度割当を行わないために発生するリスク、例えば、回復できない状態が発生することを減らすためである。
この場合、途中までデータが書き込まれたヘッダブロック、データブロックを選択することも想定されるが、再構築時のアルゴリズムが同じである以上、通常、同じデータが書き込まれることが保証される。こういった場合に、現在と同じデータを書き込む場合は、不揮発性メモリそのものに書き込むことはしない。これは、通常データを書き込む際の高速化と同じである。
このように、本実施形態のメモリ制御装置1によれば、フラッシュメモリ6へのデータの書込に際して、アドレス体系の汎用化が可能な特徴的なEEPROMエミュレーション及び再構築を繰り返しながらデータ書込が行われるので、フラッシュメモリの通常の使用態様によれば頻出する特定のアドレスへの集中が回避され、データ書込が平準化される。これにより、無駄のないメモリ書込が可能となり、書込可能回数が飛躍的に増加する。例えば、従来の書込方式では1000回程度の書込可能回数しか許されないフラッシュメモリであっても、後述するように10万回程度の書込可能回数が確保されるので、同程度のEEPROMの代わりに、フラッシュメモリを使用することができる。
また、不要になったブロックでも、次の再構築のときまで削除されないで残っているので、例えば電源切断などの障害が発生しても、その発生前のデータが回復時に、再構築に復帰するので、安全性にも優れたものとなる。
<性能>
次に、本実施形態のメモリ制御装置1の性能を説明する。
本実施形態によるメモリ構造では、管理領域ブロック222の書込可能回数は、実データブロック223の書込可能回数に比べて余裕がある。従って、2つの管理領域ブロック222が、それぞれ50〜100回程度の消去可能であることが保証されれば、一方の管理領域ブロックが、1000回まで消去しないうちに、突然不良ブロックとなっても、通常は、動作上の問題は生じない。また、初期データブロック211は、それぞれのブロックが、仮に一度も消去可能でなくとも、データが書き込めれば十分である。そのため、コスト的にも著しく有利となる。
次に、本実施形態のメモリ制御により書込可能回数がどのくらい増加するかを述べる。
これまで述べた仕組みによりデータの書込可能回数が影響するのは、図4に示したクラスタ毎の32個のブロックのうち、28個の実データブロック223である。書込可能回数には、いくつかの変動要因がある。代表的な変動要因には、再構築に使用される分のデータサイズ(Rバイト)、データの領域を何バイト固定長にするか(これまで説明した例では16バイト固定長)、次回の再構築を行うまでに使用するヘッダの数がある。ヘッダの数が多くなれば、再構築の回数が減るので、多くの書込要求を実現できるが、ヘッダ間の周期が長くなる分、検索に時間がかかることになる。従って、実際の書込可能回数は、これらの変動要因を考慮した上で、最適な値を決めていくことになる。
これまで説明した例でいえば、データの領域が16バイト固定長なので、ヘッダの数、すなわち再構築に使用される分のデータサイズは、R/16となる。また、個々のブロックのサイズが2kBなので、1ブロック当たりの書込可能回数は、2kB/16(=128)回となる。512回の書込毎に再構築するとした場合、28個のブロックのうち、6個のブロックを消費することは上述したとおりである。
従って、書込要求の回数、すなわち書込可能回数は、1つのブロックで1000回まで書込可能なので、1クラスタ当たり、(512−R/16)×1000×28/6回の書込が可能となる。上記のRを3kBとすると、1クラスタ当たり、書込可能回数は、1,490,000回となる。このように、本実施形態のメモリ制御装置1によれば、EEPROM並の書込可能回数を確保することができることがわかる。
<初期データの扱い>
初期データブロック221に書き込まれる初期データは、市場で上書きされない部分である。そのため、単純には、初期データを持っているアドレスが指定されたときは、その初期データを使い、そうでなければ、EEPROMエミュレーションで得た値を使うことができる。
例えば、本実施形態において、アドレス[0X3000]〜[0X3100]を初期データ用として確保しておき、あるアドレス[0X3600]〜[0X3700]を、マルチメディア処理の実行の際に参照されるパラメータ値(例えばサウンドのON/OFFや解像度等)の設定データを書き込んだり、API(Application Programming Interface)などを書き込む領域として使用することができる。この場合、上位アドレスである[0X3000]から16バイトのデータの読込要求があれば、初期データを返し、他方、下位のアドレスである[0X3600]から16バイトのデータ(API)の読込要求があれば、EEPROMエミュレーションで書き込まれたデータを返すという態様で使用することになる。しかし、デバッグ用途、あるいは、市場でも初期データの値を上書きして使いたいことがある。また、初期データを書き込むときと、市場で書き込むAPI等とを区別することなく、あるアドレスに対して読み書きできれば、便利である。
このような場合に、次の手順に従って処理を行うことにより、フラッシュメモリ6を便利に使うことができる。
まず、初期データとして使用する範囲を決めるために、予めフラッシュメモリ6にアクセスしようとするプログラム上にアドレスを指定しておく。例えば、アドレス[0X3000]〜[0X3100]をその範囲とする。アドレス[0X3000]への1回目の書込は、図4に示した初期データブロック221に直接書き込まれる。初期データは、上述したとおり、原則として1度だけ書き込まれるものであるが、2回目以降の書込は、上述した本実施形態のEEPROMエミュレーションでそれを行う。また、EEPROMエミュレーションの際の領域検索にも用いられる。初期データブロック221を検索し、データが見つかれば終了し、見つからなければ、データが書き込まれていないことを示す[0XFF]を検索要求元に返すことになる。
初期データがEEPROMエミュレーションにおいて共通に用いられるデータである場合、この初期データを持たずにEEPROMエミュレーションを行おうとすると、再構築に使用されるときの書込領域の数が増え、その分、再構築の回数が増え、全体の書込可能回数が減るおそれがある。初期データの仕組みの利点は、再構築の回数を抑えることができ、全体の書き込み回数が多くなることが挙げられる。
なお、本実施形態では、不揮発性メモリの例として、フラッシュメモリを例に挙げて説明したが、本発明は、不揮発性メモリへのメモリ制御の仕方に特徴があるので、不揮発性メモリ自体の種類は任意であり、フラッシュメモリに限るものではない。
また、本実施形態では、512kBのフラッシュメモリの場合の例を示したが、データサイズは、512kB以下、あるいはそれ以上であっても良い。
また、本実施形態では、エントリとブロックの2階層のグループでデータの書込を行う場合の例を説明したが、3階層であっても良い。あるいは、エントリ単位であっても良い。
本発明は、不揮発性メモリをデータ記録媒体として使用する情報処理装置において、広く利用することができる。フラッシュメモリに限定しても、パーソナルコンピュータ、ディジタルカメラ、携帯電話端末等、多種多量の機器に搭載されるデータ記録媒体のメモリ制御に利用することができる。
本発明の実施の一形態となるメモリ制御装置の全体構成図。 (a)は従来のフラッシュメモリにおけるアドレスの使い方、(b)は本実施形態によるアドレスの使い方の説明図である。 本実施形態による書込方式の概略説明図であり、(a)は書込前のメモリ状態、(b)は17バイトのデータを書き込んだときのメモリ状態、(c)は他のデータを追記したときのメモリ状態を示す。 本実施形態におけるフラッシュメモリの構造説明図。 データブロック、ヘッダブロック、管理領域ブロックの内容説明図。 データ読込処理の手順説明図。 データ書込処理の手順説明図。 データ書込処理の手順説明図(部分詳細図)。 データ書込処理の手順説明図(部分詳細図)。 再構築のための手順説明図。 割当領域におけるエントリのデータ書込前の内容説明図。 割当領域におけるエントリのデータ書込後の内容説明図。 割当領域におけるエントリの再構築直前の内容説明図。 割当領域におけるエントリの再構築中の内容説明図。 割当領域におけるエントリの再構築後の内容説明図。 (a)はEEPROMエミュレーションを行うときの従来のメモリ内の構造図、(b)は実際にデータを書き込んだときのメモリ内の構造図。
符号の説明
1・・・メモリ制御装置、2・・・プロセッサユニット、3・・・プロセッサ、4・・・プログラムメモリ、5・・・ワーキングメモリ、6・・・フラッシュメモリ、7・・・データバス、20・・・割当領域、21,22・・・クラスタ、221・・・初期データブロック、222・・・管理領域ブロック、223・・・実データブロック、2221,2231・・・エントリ

Claims (9)

  1. 書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリにアクセス可能な装置が行うメモリ制御方法であって、
    前記不揮発性メモリの書込領域を、それぞれシーケンシャルに関連付けて所定数毎にグループ化するとともに、所定回数のデータ書込を可能にする上で必要となるグループ数を確保し、確保した数のグループにおいて、書込時に未書込領域又は書込可能領域が残るグループがあるときはこのグループの当該領域への追記を行い、追記元のグループについては、所定の条件を満たした時点でグループ単位で消去することを特徴とする、
    メモリ制御方法。
  2. 前記装置は、前記確保した数のグループによる所定回数のデータ書込を終了したことを検知したときに、前記不揮発性メモリから所定回数のデータ書込を可能にする上でさらに必要となるグループ数を新たに確保することを特徴とする、
    請求項1記載のメモリ制御方法。
  3. 前記装置は、前記確保した数のグループによる所定回数のデータ書込を終了する前に制御動作を停止したときは、回復時に、停止前に確保していたグループを再確保することを特徴とする、
    請求項1又は2記載のメモリ制御方法。
  4. 書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリへのデータの書込を制御する装置であって、
    前記不揮発性メモリには、それぞれ複数の書込領域をシーケンシャルに関連付けた複数個のデータ領域グループと、どのデータ領域グループのどの書込領域にデータが書き込まれているかを表すヘッダ情報の書込領域を有する複数個のヘッダ領域グループと、どのデータ領域グループ及びどのヘッダ領域グループの書込領域にアクセス可能かを表す管理情報の書込領域を有する管理領域グループとが形成されており、
    前記複数個のデータ領域グループのうち、追記可能な書込領域を有するデータ領域グループを前記不揮発性メモリにおいて特定し、特定したデータ領域グループのうち追記可能な書込領域に、入力された新たなデータを逐次追記し、追記可能な書込領域が足りない場合は次のデータ領域グループを前記不揮発性メモリにおいてさらに特定して前記入力されたデータの追記を完了させ、データの追記が完了した1又は複数のデータブロックを前記不揮発性メモリにおいてデータ領域グループ毎に書き換えるとともに、追記したデータ領域グループの書込領域の特定を可能にするアドレス情報を含む前記ヘッダ情報を生成し、生成したヘッダ情報を、前記ヘッダ領域グループの書込領域に追記する書込処理手段と、
    前記データ領域グループ又は前記ヘッダ領域グループにおける書込回数が所定回数に達したことを検知する第1の検知手段と、
    この第1の検知手段により前記所定回数に達したことが検知されたときに、次に前記所定回数のデータ書換を確保するために必要となる数の前記データ領域グループを前記不揮発性メモリより新たに確保し、確保したデータ領域グループについての前記管理情報を生成し、生成した管理情報を前記管理領域グループに書き込む再構築処理手段と、を有する、メモリ制御装置。
  5. 前記書込処理手段は、前記追記が完了したデータ領域グループが、追記可能な書込領域が残っていたデータ領域グループであるときは、追記前の当該データ領域グループを前記不揮発性メモリの所定領域に一時的に保持しておき、予め定めた条件を満たすことを検出したときに、当該一時的に保持してあるデータ領域グループを消去する、
    請求項4記載のメモリ制御装置。
  6. 前記不揮発メモリに、複数回のデータ書込に共通に使用する初期データを書き込むための初期データ書込領域が形成されており、
    前記書込処理手段は、前記データの追記を行う際に前記初期データ書込手段に書き込まれている初期データを参照する、
    請求項4記載のメモリ制御装置。
  7. 前記再構築処理手段は、前記データ領域グループの消去に先立ち、前記新たなデータ領域グループと共に新たなヘッダ領域グループを選択し、選択したデータ領域グループ及びヘッダ領域グループについての前記管理情報を生成する、
    請求項6記載のメモリ制御装置。
  8. メモリ制御動作の停止後に回復したことを検知する第2の検知手段をさらに備えており、
    前記再構築処理手段は、
    前記第2の検知手段が、前記回復したことを検知したときは、新たなデータ領域グループ及びヘッダ領域グループの確保に代えて、前記管理領域グループに書き込まれている管理情報に基づいて、停止前の書込状態のデータ領域グループ及びヘッダ領域グループを確保する、
    請求項7記載のメモリ制御装置。
  9. コンピュータを、書込領域のデータを消去した後に当該書込領域へのデータ書込を行う不揮発性メモリへのデータの書込を制御する装置として動作させるためのコンピュータプログラムであって、
    前記コンピュータを、
    前記不揮発性メモリに、それぞれ複数の書込領域をシーケンシャルに関連付けた複数個のデータ領域グループと、どのデータ領域グループのどの書込領域にデータが書き込まれているかを表すヘッダ情報の書込領域を有する複数個のヘッダ領域グループと、どのデータ領域グループ及びどのヘッダ領域グループの書込領域にアクセス可能かを表す管理情報の書込領域を有する管理領域グループとを形成するグループ形成手段、
    前記複数個のデータ領域グループのうち、追記可能な書込領域を有するデータ領域グループを前記不揮発性メモリにおいて特定し、特定したデータ領域グループのうち追記可能な書込領域に、入力された新たなデータを逐次追記し、追記可能な書込領域が足りない場合は次のデータ領域グループを前記不揮発性メモリにおいてさらに特定して前記入力されたデータの追記を完了させ、データの追記が完了した1又は複数のデータブロックを前記不揮発性メモリにおいてデータ領域グループ毎に書き換えるとともに、追記したデータ領域グループの書込領域の特定を可能にするアドレス情報を含む前記ヘッダ情報を生成し、生成したヘッダ情報を、前記ヘッダ領域グループの書込領域に追記する書込処理手段、
    前記データ領域グループ又は前記ヘッダ領域グループにおける書込回数が所定回数に達したことを検知する検知手段、
    この第1の検知手段により前記所定回数に達したことが検知されたときに、次に前記所定回数のデータ書換を確保するために必要となる数の前記データ領域グループを前記不揮発性メモリより新たに確保し、確保したデータ領域グループについての前記管理情報を生成し、生成した管理情報を前記管理領域グループに書き込む再構築処理手段、として機能させる、コンピュータプログラム。
JP2008038535A 2008-02-20 2008-02-20 メモリ制御方法及び装置、コンピュータプログラム Pending JP2009199211A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101339739B1 (ko) * 2011-10-24 2013-12-10 콘티넨탈 오토모티브 일렉트로닉스 유한회사 에뮬레이션 eeprom을 이용한 적산계의 데이터 기록방법

Citations (4)

* Cited by examiner, † Cited by third party
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 半導体メモリ装置、メモリコントローラ及びデータ記録方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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