JP3793868B2 - フラッシュメモリ管理装置及び記録媒体 - Google Patents
フラッシュメモリ管理装置及び記録媒体 Download PDFInfo
- Publication number
- JP3793868B2 JP3793868B2 JP33487599A JP33487599A JP3793868B2 JP 3793868 B2 JP3793868 B2 JP 3793868B2 JP 33487599 A JP33487599 A JP 33487599A JP 33487599 A JP33487599 A JP 33487599A JP 3793868 B2 JP3793868 B2 JP 3793868B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- sector
- primary
- flash memory
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
【発明の属する技術分野】
本発明は、フラッシュメモリに対するデータの書き込みを制御するためのフラッシュメモリ管理装置及び記録媒体に関する。
【0002】
【従来の技術】
一般に、パーソナルコンピュータなどの情報処理装置では、半導体メモリからなるROM,RAMの他に、ハードディスクが内蔵の記憶装置として使用され、さらに、フロッピディスク、CDROM、ROMカード、RAMカードなどが外部記憶装置として使用される。
【0003】
さらに最近では、書き替え可能な読み出し専用メモリであるフラッシュメモリも内蔵あるいは外部記憶装置として使用されるようになっている。
【0004】
このフラッシュメモリは、セクタ単位で読み込みや書き込みが行えるメモリであり、ハード的にコントローラがない場合は、ソフトウエアにより読み書きの制御を行う。
【0005】
通常、このフラッシュメモリを組み込んだ情報処理装置におけるOS(オペレーションシステム)のファイルシステムが、該メモリの読み書きを行う単位(セクタ)は、フラッシュメモリの消去単位であるブロックのサイズより小さく、1セクタあたりの書き込み速度をあげるために、1セクタだけの書き換えの場合、ブロック全体の書き換えはなるべく起こらないような仕組としている。
【0006】
図11はフラッシュメモリにおける従来のメモリ管理構造を示す図である。
【0007】
フラッシュメモリは、消去単位である複数のブロックBlock.0〜Block.nのそれぞれにおいて読み書き単位となるセクタエリアs1,s2,〜,sjを有すると共に、各ブロック毎にそのセクタエリアs1,s2,〜,sjの物理アドレスを管理し、また、各セクタエリアs1,s2,〜,sjのデータが有効であるか無効であるかを管理するためのセクタ情報エリアsiを有している。
【0008】
そして、フラッシュメモリの最終ブロックBlock.nは、新たなデータの書き込み対象となるブロックの各セクタエリアが全て書き込み済み(ダーティ)である場合に、その中で有効なセクタエリアのデータだけを残して新たなブロックを生成し新たなデータの書き込みを行うための書き込み操作用予備ブロックとして設定される。
【0009】
図12はフラッシュメモリの読み書きをコントロールするソフトウエアドライバの構成を示す図である。
【0010】
すなわち、アプリケーション(a)がフラッシュメモリ(f)上のデータをアクセスする際には、API(b)を介して行われる。このAPI(b)を介してデータアクセスの情報を受け取ったOS(c)では、前記API(b)の情報からファイルの読み書きの要求であることを認知すると、これをファイルシステム(d)へ伝える。ファイルシステム(d)では、ファイルの置かれている論理アドレスを管理しており、アプリケーション(a)から要求を受けたファイルの論理アドレスに対して読み書きを行う。よって、ファイルシステム(d)では、ファイルの読み書きを、論理アドレスのセクタ単位でのデータのリードライトに変換して、フラッシュメモリドライバ(e)に対して物理的な読み書きの要求を出す。
【0011】
この場合、例えばファイルシステム(d)の管理している論理アドレスと、フラッシュメモリドライバ(e)の物理アドレスが固定で決まっているとすると、フラッシュメモリ(f)では、個々のセクタエリアを対象としたデータの書き換えを行うことができないので、1セクタの書き換え毎にブロックを消去しての書き換え作業が必要となってまう。
【0012】
これを回避するために、ファイルシステム(d)の論理アドレスに対応したフラッシュメモリドライバ(e)の物理アドレスは、データ書き込みのたびに変更できるようになっている。
【0013】
図13はフラッシュメモリのデータ既存セクタに対するデータ書き替え要求に際し同ブロック内に未使用セクタがある場合の新データの書き込み状態を示す図である。
【0014】
例えば図13(A)に示すように、ブロックmの既にデータの書き込まれている各セクタエリアs1〜s5のうちの2番目のセクタエリアs2にデータ書き換えの要求ができた場合は、図13(B)及び図13(C)に示すように、該当するブロックmのセクタ情報エリアsiにおいて、当該書き換え対象の古いセクタエリアs2を無効状態に設定すると共に、新たな物理アドレスの未使用のセクタエリアs6にデータを書き込み、このセクタエリアs6を有効状態に設定する。
【0015】
フラッシュメモリドライバ(e)では、随時このセクタ情報エリアsiの管理情報を書き換えながら、ブロック内の新たなセクタエリアへデータを書き足す形で、書き込みを行う。こうすることで、ブロック内の全てのセクタエリアs1〜sjが書き込み済みになるまで、該ブロック全体の消去は行われず、書き込み速度を上げることができている。
【0016】
図14はフラッシュメモリに対する従来のデータ書き込み制御方式において未使用セクタがないブロックに対するデータ追記要求に伴う新データの書き込み状態を示す図である。
【0017】
例えば図14(A)に示すように、未使用のセクタエリアがなくなったブロックmへのセクタデータの追記要求が起きた場合は、まず、ブロック全体を整理して別のブロックへ書き写す。すなわち、当該ブロックmのセクタ情報エリアSiにて管理される各セクタエリアs1〜sjそれぞれの有効/無効の情報に基づき、無効になっているセクタデータはすべて捨てて、有効なセクタデータだけを残し、図14(B)に示すように、予備ブロックnから確保した新たなブロック1に対してその有効なセクタデータだけを転送して記憶させる。こうすることにより、新しいブロック1には未使用のセクタエリアができ、この未使用のセクタエリアへ、追記要求されたデータの書き込みを行う。
【0018】
この際にも、図14(C)に示すように、通常のセクタデータの書き込みと同様に、セクタ情報エリアsiにおける各セクタ情報の書き換えを行い、各セクタエリアの物理アドレスとその有効/無効の状態を更新して管理する。
【0019】
そして、前記データ整理の対象となったブロックm内の全セクタデータを消去し、図14(D)に示すように、新たなブロック書き換えのための予備ブロックnに設定する。
【0020】
【発明が解決しようとする課題】
このように、フラッシュメモリにおける従来のデータ書き込み制御方式では、ブロック内の各セクタエリアが全て書き込み済み、つまりダーティになった状態でのセクタデータの書き換え要求、あるいはセクタデータの追記要求に伴い、そのブロック全体の書き換えが発生するため、メモリ内の各ブロックにおいて、一度その殆どのセクタがダーティ状態となると、それ以降、新たなデータ書き換え要求やデータ追記要求が来た場合に、かなりの割合で前記ブロック全体の書き換え処理が頻発する状況となってしまう。
【0021】
したがって、フラッシュメモリおいて、一度使用可能領域の全てがダーティ状態となると、それ以降はブロック全体の書き換えが頻発し、データ書き込み速度が遅くなるという問題がある。
【0022】
また、フラッシュメモリにおける従来のデータ書き込み制御方式では、前記ブロック全体の書き換え処理の発生に伴い、全てのセクタがダーティとなったブロックから新たなブロックへのデータの書き換えが行われている最中に、ハード的なリセットが掛かって新たなブロックへの書き込みが中断されると、書き込み途中にあるセクタのデータが、リセットが掛かる前までのデータしか有効になってなく、残りのセクタエリアに書き換えるべきデータを全く失ってしまう問題がある。
【0023】
本発明は、前記のような問題に鑑みなされたもので、その第1の目的は、ブロック全体の書き換えが頻繁に発生するのを防ぎ、データ書き込み速度の低下を防止することが可能になるフラッシュメモリ管理装置及び記録媒体を提供することにある。
【0024】
また、本発明の第2の目的は、データ書き込みの過程においてハードウエアリセットが掛かった場合でも、データの修復を容易に行うことが可能になるフラッシュメモリ管理装置を提供することにある。
【0025】
【課題を解決するための手段】
すなわち、本発明の請求項1に係るフラッシュメモリ管理装置は、フラッシュメモリが有する複数のブロックを一次ブロック群と二次ブロック群とに分けて設定するブロック設定手段と、前記各ブロックが有する複数のセクタエリアの個々のセクタエリアにデータを書き込むセクタデータ書き込み手段と、前記一次ブロック群から確保された一次ブロック内の全セクタエリアがデータ書き込み済みである場合には、当該一次ブロックの拡張ブロックとして前記二次ブロック群から確保した二次ブロックを用いるブロック拡張手段と、このブロック拡張手段により拡張された二次ブロック内の全セクタエリアがデータ書き込み済みである場合には、前記データ書き込み済みである一次ブロックと二次ブロック内の有効なセクタデータを整理して新たな一次ブロックを生成するブロック整理手段と、このブロック整理手段によるデータ整理後の元の一次ブロックと二次ブロックそれぞれの全セクタエリアのデータを消去するブロック解放手段とを備えたことを特徴とする。
【0026】
このようなフラッシュメモリ管理装置では、一次ブロック内の全セクタエリアがデータ書き込み済みとなった時点ではブロックの整理は行われず、拡張メモリとしての二次ブロック内の全セクタエリアがデータ書き込み済みとなってはじめて一次,二次ブロック内の有効なセクタデータが整理されて新たな一次ブロックが生成され、これと共に、データ整理後の元の一次ブロックと二次ブロックは、それぞれの全セクタエリアのデータが消去されて解放されるので、ブロック全体の書き換えが頻繁に起こらない構成となる。
【0027】
また、本発明の請求項2に係るフラッシュメモリ管理装置は、前記請求項1に係るフラッシュメモリ管理装置にあって、前記フラッシュメモリが有する各ブロックに対し、空き、データ書き込み中、データ書き込み終了、処理完了の各状態を示すブロック状態情報を記憶させ、このブロック状態情報に基づきブロック単位の制御を行うことを特徴とする。
【0028】
このようなフラッシュメモリ管理装置では、フラッシュメモリが有する各ブロックにおいて、空き、データ書き込み中、データ書き込み終了、処理完了の各状態を示すブロック状態情報が記憶されて管理されることで、例えばハードウエアリセットが発生した場合に、最もデータ消失の少ないブロック状態に制御できることになる。
【0029】
また、本発明の請求項3に係るフラッシュメモリ管理装置は、前記請求項1に係るフラッシュメモリ管理装置にあって、前記各ブロックが有する複数のセクタエリアに対し、空き、データ書き込み中、書き込み完了の各状態を示すセクタ状態情報を記憶させ、このセクタ状態情報に基づきセクタ単位の制御を行うことを特徴とする。
【0030】
このようなフラッシュメモリ管理装置では、フラッシュメモリの各ブロックが有する複数のセクタエリアにおいて、空き、データ書き込み中、書き込み完了の各状態を示すセクタ状態情報が記憶されて管理されることで、例えばハードウエアリセットが発生した場合に、最もデータ消失の少ないセクタ状態に制御できることになる。
【0031】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
【0032】
(第1実施形態)
図1は本発明の実施形態に係るフラッシュメモリ管理装置を搭載したパーソナルコンピュータの電子回路の構成を示すブロック図である。
【0033】
このパーソナルコンピュータは、制御部(CPU)11、記憶装置12、RAM13、キーボード14、マウス15、表示部16、記憶媒体読み取り部18、伝送制御部19より構成され、バス17を介して相互に接続されている。
【0034】
制御部(CPU)11は、キーボード14やマウス15からの入力信号に応じて、記憶装置12に予め記憶されている制御プログラム、あるいはフロッピディスクFDなどの外部記憶媒体18aからフロッピディスクドライブFDDなどの記憶媒体読み取り部18を介して記憶装置12に読み込まれた制御プログラム、あるいは外部のコンピュータ端末(プログラムサーバ21)の記憶装置22から通信ネットワーク20を経由し伝送制御部19を介して記憶装置12に読み込まれた制御プログラムを起動させ、RAM13をワークメモリとして回路各部の動作を制御する。
【0035】
記憶装置12は、半導体メモリのROMやフラッシュメモリ(Flash),ハードディスク装置(HD)等で構成し、本パーソナルコンピュータの電源投入直後に制御部(CPU)11により読み出される前述の制御プログラムを予め格納している他に、各種制御処理の実行に伴い設定されるフォーマットデータや保存の必要な処理データなどを格納している。
【0036】
RAM13は、前述の制御プログラムを実行する際に制御部(CPU)11が使用するワークメモリである。
【0037】
図2は前記パーソナルコンピュータの記憶装置12に内蔵されるフラッシュメモリ(Flash)のメモリ管理構造を示す図である。
【0038】
このフラッシュメモリ(Flash)は、複数のブロックBlock.0〜Block.nに区切られて該ブロック単位でデータの消去が管理され、また、各ブロックBlock.0〜Block.nはそのそれぞれに複数のセクタエリアs1〜sjと当該セクタエリアs1〜sjのアドレス管理情報及び有効/無効情報を格納するセクタ情報エリアsiを有し、該セクタ単位でデータの読み書きが管理される。
【0039】
なお、各セクタエリアs1〜sjにおいてデータの書き換えは行えないため、あるセクタエリアに対するデータの書き換え要求が来た場合には、未使用のセクタエリアに新たなデータを書き込み、セクタ情報エリアsiにおけるアドレス管理情報と有効/無効情報を変更することにより行う。
【0040】
また、このフラッシュメモリで用意されている複数のブロックBlock.0〜Block.nは、全ブロックの中でm個のブロックBlock.n−m〜Block.n−1が書き込み用二次ブロックxとして設定されると共に、最終ブロックnが書き込み操作用予備ブロックとして設定され、Block.0〜Block.n−m−1が一次ブロックとして設定される。
【0041】
前記二次ブロックxは、各一次ブロックBlock.0〜Block.n−m−1においてその全セクタエリアs1〜sjがダーティ(書き込み済み)となった状態で、データ書き換え要求あるいはデータ書き込み要求があった際に、当該全ダーティとなった一次ブロックの書き換えはせずに、この一次ブロックに組み合わせて続けて新たなデータを書き込んでいくためのブロックとして使用される。
【0042】
そして、ブロックの書き換えは、一次ブロック及びこの一次ブロックに続けて割り当てられた二次ブロックの全セクタエリアがダーティとなった状態で、データの書き換えあるいは書き込み要求があった際に、その一次,二次ブロックにおける有効なセクタエリアのデータが予備ブロックnから確保した新たな一次ブロックに書き換えられて整理され、その未使用のセクタエリアに新たなデータが書き込まれる。そして、データ整理された旧一次ブロックはその全内容が消去されて予備ブロックnとして戻され、二次ブロックもその全内容が消去されて空き二次ブロックBlock.n−m〜Block.n−1のプールに戻される。
【0043】
次に、前記構成によるパーソナルコンピュータのフラッシュメモリに対するデータ書き込み制御機能について説明する。
【0044】
図3は前記パーソナルコンピュータのフラッシュメモリに対するデータ書き込み制御処理を示すフローチャートである。
【0045】
例えば図2に示すように、未使用のセクタエリアs6〜sjがある一次ブロックBlock.0に対して、セクタデータの書き換え要求あるいは新たなデータの追記要求があった場合には、当該一次ブロック“0”の未使用のセクタエリアが先頭セクタから順次検索され、ダーティ状態(書き込み済み)ではないセクタエリアs6が検索されるので、当該検索された未使用のセクタエリアs6に対して書き換えあるいは追記となる新たなデータが書き込まれる(S1→S2→S3)。
【0046】
ここで、前記セクタエリアs6に書き込まれた新たなデータが書き換えのデータであった場合には、該当ブロック“0”のセクタ情報エリアsiで管理されるアドレス情報が古いセクタエリアのアドレスから新たなセクタエリアs6のアドレスへ変更されると共に、古いセクタエリアが有効に、新たなセクタエリアs6が有効に設定される。
【0047】
図4は前記フラッシュメモリに対するデータ書き込み制御処理において一次ブロックに未使用セクタがない場合のデータ書き換え要求に伴う新データの書き込み状態を示す図である。
【0048】
例えば図4(A)に示すように、フラッシュメモリの未使用のセクタエリアがなくなった一次ブロックa1のセクタエリアs5に対してデータ書き換え要求が来た場合には、まず、当該一次ブロックa1の未使用のセクタエリアが検索されて全てダーティ(書き込み済み)であると判断され、この一次ブロックa1に対しID(識別情報)が一致する二次ブロックが割り当てられているか否か判断される(ステップS1,S2→S4)。
【0049】
ここで、前記データ書き換え要求のあった一次ブロックa1に対しIDの一致する二次ブロックが存在しないと判断されると、図4(B)(C)に示すように、二次ブロックxのプール(Block.n−m〜Block.n−1)の中から空きブロックが検索され(ステップS4→S5)、前記一次ブロックa1に対する二次ブロックa2としてIDが付されて割り当てられ(ステップS6→S7)、当該割り当てられた二次ブロックa2のセクタエリアs1に対して新たなデータが書き込まれる(ステップS8)。
【0050】
この場合、前記データ書き換えの対象となった一次ブロックa1のセクタ情報エリアsiにおいて、セクタエリアs5が無効に変更され、また、二次ブロックa2のセクタ情報エリアsiにおいて、セクタエリアs1の物理アドレスが管理され有効セクタに設定される。
【0051】
この後、前記一次ブロックa1及び二次ブロックa2に対するデータ書き換え要求あるいはデータ追記要求があった場合には、当該二次ブロックa2内に未使用のセクタエリアが存在している限り、その未使用のセクタエリアに対し新たなデータが書き込まれるようになる(ステップS1,S2→S4→S9,S10→S8)。
【0052】
よって、この場合には、二次ブロックa2に未使用のセクタエリアがなくなるまで、一次及び二次ブロック全体a1,a2を対象とするブロックの書き換えは起こらないようになる。
【0053】
図5は前記フラッシュメモリに対するデータ書き込み制御処理において一次,二次ブロックに未使用セクタがない場合のデータ書き換え要求に伴う新データの書き込み状態を示す図である。
【0054】
例えば図5(A)(B)に示すように、フラッシュメモリの未使用のセクタエリアがなくなった一次,二次ブロックa1,a2における該一次ブロックa1のセクタエリアs2に対してデータ書き換え要求が来た場合には、一次ブロックa1はその全セクタエリアs1〜sjがダーティ状態と判断され(ステップS1,S2)、これに割り当てられた二次ブロックa2も全セクタエリアs1〜sjがダーティ状態と判断されるので(ステップS4→S9,S10)、当該一次,二次ブロックa1,a2の整理処理(書き換え処理)が行われる(ステップS11)。
【0055】
この一次,二次ブロックa1,a2の整理処理では、まず、図5(E)(D)に示すように、データの整理先(書き換え先)となる新たなブロックが予備ブロックnから確保されて当該一次,二次ブロックa1,a2と同一グループであることを識別するためのID(a3)として割り当てられる。
【0056】
すると、図5(A)(B)(E)に示すように、前記一次,二次ブロックa1,a2それぞれのセクタ情報エリアsiにて管理される有効/無効のセクタ情報に基づき、当該各ブロックa1,a2中の有効セクタのデータのみが読み出され、新ブロックn(a3)に対して整理されて書き込まれる(ステップS11)。
【0057】
そして、この新ブロックn(a3)の未使用セクタエリアに対して前記書き換え要求に伴う新たなデータが書き込まれ(ステップS12)、当該新ブロックn(a3)のセクタ情報エリアsiにて管理されるアドレス情報及び有効/無効情報が各セクタデータの書き換え及び書き込みアドレスに応じて新たに設定される。
【0058】
このように、前記一次,二次ブロックa1,a2全体の書き換え整理がなされると、各ブロックa1,a2の内容はブロック毎に消去され、図5(A)(D)に示すように、古い一次ブロックa1は予備ブロックnとして戻され、また、図5(B)(C)に示すように、古い二次ブロックa2は二次ブロックxのプールに戻される。
【0059】
そして、前記新ブロックn(a3)が新たな一次ブロックa1として有効になる。
【0060】
したがって、前記構成のパーソナルコンピュータのフラッシュメモリに対するデータ書き込み制御機能によれば、フラッシュメモリ内のデータ消去単位である複数のブロックBlock.0〜Block.nを、一次ブロック群Block.0〜Block.n−m−1と二次ブロック群n−m〜n−1と予備ブロックnに分けて設定し、ある一次ブロックに対するデータ書き込み要求に際しその一次ブロックの全セクタエリアs1〜sjがダーティ状態(書き込み済み)である場合には、前記二次ブロック群n−m〜n−1中の空いている二次ブロックを前記全ダーティな一次ブロックの拡張ブロックとして使用し、この二次ブロックの全セクタエリアs1〜sjまでもがダーティ状態となった場合には、当該一次ブロックと二次ブロックの有効なセクタデータのみを整理して前記予備ブロックnを用いた新たな一次ブロックへ書き換え、未使用のセクタエリアを確保すると共に、有効セクタ整理済みの古い一次ブロックはその内容を消去して予備ブロックnとして設定変更し、同有効セクタ整理済みの二次ブロックもその内容を消去して前記二次ブロック群n−m〜n−1中に戻すようにしたので、ブロック全体の書き換え整理が発生する頻度が大幅に削減されるようになり、当該ブロック全体の書き換え整理に起因するデータ書き込み速度の低下を防止できるようになる。
【0061】
なお、前記フラッシュメモリに対するデータ書き込み制御機能において、各ブロックBlock.0〜Block.nそれぞれのセクタ情報エリアsiには、該当ブロックが次で説明するような4つの状態の何れかであることを表すブロック状態情報(フラグ)を書き込み、ブロック整理の途中でのリセット発生などに伴うブロック移動中のメモリ破壊に対するデータの修復が容易に行える構成としている。
【0062】
▲1▼BLOCK FREE:ブロックの空き状態を表す。二次ブロック群n−m〜n−1のプールにある場合や予備ブロックnがこの状態となる。
【0063】
▲2▼BLOCK ON WRITE:ブロックのデータ書き込み途中を表す。一次,二次ブロックの整理に伴いセクタデータが移動途中にある新ブロックがこの状態となる。
【0064】
▲3▼BLOCK DIRTY:ブロックのデータ書き込みが終了し、且つ同じグループIDを有する他の有効ブロックが存在する状態を表す。
【0065】
▲4▼BLOCK COMPLETE:ブロックのデータ書き込みが終了し、且つ古いブロックが削除された状態を表す。
【0066】
図6は前記フラッシュメモリに対するデータ書き込み制御処理において一次,二次ブロックに未使用セクタがない場合のデータ書き込み要求に伴うデータ整理の過程とブロック状態情報の遷移(その1)を示す図である。
【0067】
図7は前記フラッシュメモリに対するデータ書き込み制御処理において一次,二次ブロックに未使用セクタがない場合のデータ書き込み要求に伴うデータ整理の過程とブロック状態情報の遷移(その2)を示す図である。
【0068】
図6(A)に示すように、通常は、一次ブロックa1,二次ブロックa2共に、そのセクタ情報エリアsiにセットされるブロック状態情報(フラグ)は、“COMPLETE”となる。
【0069】
ここで、一次ブロックa1,二次ブロックa2共に未使用のセクタエリアがない状態で、データの書き込み要求が来ると、前述したように当該一次,二次ブロックa1,a2の書き換え整理が行われる。
【0070】
すなわち、図6(B)に示すように、はじめに予備ブロックnが同一グループの新たなブロックn(a3)として獲得され、そのブロック状態情報は“FREE”にセットされる。
【0071】
すると、図6(C)に示すように、新たなブロックn(a3)のブロック状態情報は“ON WRITE”に変更セットされ、一次,二次ブロックa1,a2から有効なセクタデータのみを抽出して書き換えるブロック全体の整理が開始される。この際、新たなブロックn(a3)へのデータ書き込み途中は、当該ブロック状態情報は常に“ON WRITE”となっている。
【0072】
そして、図6(D)に示すように、前記一次,二次ブロックa1,a2から新たなブロックn(a3)に対する有効データの書き換え整理が終了すると、新ブロックn(a3)のブロック状態情報は“DIRTY”に変更される。なお、この時点では、整理対象ブロックa1,a2は未だ消去されないで残っている。
【0073】
この後、図7(E)(F)に示すように、整理対象の一次ブロックa1,二次ブロックa2の内容は順次消去され、一次ブロックa1は予備ブロックnとされてそのブロック状態情報は“FREE”に変更セットされ、また、二次ブロックa2は空き二次ブロックxのプールへ返されてそのブロック状態情報も“FREE”に変更セットされる。この間、新ブロックn(a3)のブロック状態情報は“DIRTY”にセットされたままとなる。
【0074】
そして、図7(G)に示すように、前記一次ブロックa1,二次ブロックa2の消去が完全に終了した際に、その新ブロックn(a3)は新たな一次ブロックa1として有効になり、ブロック状態情報は“COMPLETE”に変更セットされる。
【0075】
図8は前記フラッシュメモリのデータ書き込み制御処理に伴うリセット発生対応処理を示すフローチャートである。
【0076】
すなわち、フラッシュメモリに対するデータ書き込み中にリセットが発生した場合、データ自体が書き込み途中であるのと同時に、フラッシュメモリドライバ(e)の書き込み手順自体も途中である可能性があるため、リセット時には、まずデータ書き込みが完了しているかどうかを判断し、完了していない場合には、その後の動作に不具合がないように修正を行う。
【0077】
ハードウエアリセットが発生すると、はじめに、ブロック状態情報が“ON WRITE”にセットされているブロックが存在するか否か、つまり、前記図6(C)で示したように、データ整理途中で有効セクタデータの書き込み途中にあるブロックが存在するか否か検索される(ステップA1)。
【0078】
この場合、新ブロックn(a3)に対し書き込むべき有効セクタデータは一次,二次ブロックa1,a2に存在し、“ON WRITE”である新ブロックn(a3)には未だ書き込まれていないデータも存在するので、旧ブロックである一次,二次ブロックa1,a2が優先され、“ON WRITE”にセットされている新ブロックn(a3)の内容は削除される(ステップA1→A2)。
【0079】
これにより、新ブロックn(a3)は、前記図6(B)で示したように、一次,二次ブロックa1,a2からの有効セクタデータの書き込みが行われる前の状態に戻り、そのブロック状態情報は“FREE”にセットされる。
【0080】
一方、前記ステップA1において、ブロック状態情報が“ON WRITE”にセットされているデータ書き込み途中のブロックが存在しないと判断された場合には、次に、ブロック状態情報が“DIRTY”にセットされているブロックが検索される(ステップA1→A3)。
【0081】
つまり、このステップA3では、前記図6(D)で示したように、一次,二次ブロックa1,a2からの有効セクタデータの書き換え整理が終了したものの、該旧ブロックである一次,二次ブロックa1,a2の削除は未だ行われていない状態での新ブロックn(a3)が検索されるもので、この場合には、同じグループID(この場合「a」)が割り当てられているブロックのなかで、そのブロック状態情報が“COMPLETE”にセットされている一次,二次ブロックa1,a2が検索され、前記図7(E)(F)で示したように、各ブロック毎に順次その内容が消去されると共に、内容消去後の一次ブロックa1は予備ブロックnとされ、同内容消去後の二次ブロックa2は未使用の二次ブロックxのプールに戻される(ステップA4〜A6)。
【0082】
すると、前記“DIRTY”検索された新ブロックのブロック状態情報が、前記図7(G)で示したように、“COMPLETE”に変更される(ステップA7)。
【0083】
したがって、前記構成のパーソナルコンピュータのフラッシュメモリに対するデータ書き込み制御機能によれば、各ブロック毎のセクタ情報エリアsiにおいて、当該ブロックが空きである場合には“FREE”、データ書き込み途中である場合には“ON WRITE”、データ書き込み終了で旧ブロック未削除である場合には“DIRTY”、データ書き込み完了で旧ブロック削除後の場合には“COMPLETE”とするブロック状態情報(フラグ)をセットし、ハードウエアリセットが発生した際に、“ON WRITE”のブロックが検索された場合には、当該“ON WRITE”のブロックを削除してデータ書き込み前のブロック状態に戻し、また、“DIRTY”のブロックが検索された場合には、同一グループIDを有する“COMPLETE”のブロックを順次検索して削除し、当該ブロック状態情報“DIRTY”を“COMPLETE”に変更セットするようにしたので、一次,二次ブロック全体の書き換え整理途中にリセットが起きた場合でも、必要データを消失させることなく、その後の動作に支障が生じないよう容易にブロックデータを修復することができる。
【0084】
なお、前記第1実施形態のフラッシュメモリに対するデータ書き込み制御機能では、各ブロックBlock.0〜Block.nそれぞれのセクタ情報エリアsiに対し、該当ブロックの状態を表すブロック状態情報(フラグ)をセットすることで、リセット発生などに伴う各ブロックの状態を明確にしてデータの修復が容易に行える構成としたが、次の第2実施形態において説明するように、ブロック内の各セクタエリアs1〜sjのヘッダに対し当該各セクタそれぞれの状態を表すセクタ状態情報をセットすることで、セクタ単位の書き足し途中におけるリセット発生などに伴うデータの損失を防止する構成としてもよい。
【0085】
(第2実施形態)
ブロック内の各セクタエリアs1〜sjそれぞれのヘッダにセットされ、該当セクタの状態を表すセクタ状態情報としては、次の3つのセクタ状態情報が用意される。
【0086】
▲1▼SECTOR FREE:未使用のセクタを表す。
【0087】
▲2▼SECTOR ON WRITE:データ書き込み途中のセクタを表す。
【0088】
▲3▼SECTOR COMPLETE:データが書き込まれているセクタを表す。
【0089】
図9はフラッシュメモリに対する第2実施形態のデータ書き込み制御処理に伴うデータ書き込み過程とセクタ状態情報の遷移を示す図である。
【0090】
例えば図9(A)に示すように、既にデータが書き込まれていてセクタ状態情報が“COMPLETE”にセットされている2番目のセクタエリアのデータSector02に対しデータの書き換え要求があると、セクタ状態情報が“FREE”にセットされている4番目のセクタエリアが新たなデータ書き込みエリアとして指定され、図9(B)に示すように、そのセクタ状態情報が“ON WRITE”に変更セットされる。
【0091】
そして、この4番目のセクタエリアに対し新たなデータが書き込まれ、そのデータ書き込みが終了すると、図9(C)に示すように、前記データ書き換えの対象となった2番目のセクタエリアにおける次セクタの指定エリアi2aに対し、4番目のセクタエリアを示す次セクタ指定情報がセットされ、さらに、そのセクタ状態情報が“COMPLETE”に変更セットされる。
【0092】
この際、2番目のセクタエリアは、正しいセクタエリアを指すためだけに使用され、データ自体は無効となる。
【0093】
図10はフラッシュメモリに対する第2実施形態のデータ書き込み制御処理に伴うリセット発生時のデータ修復過程を示す図である。
【0094】
例えば図10(A)に示すように、2番目のセクタエリアのデータSector02に対するデータ書き換え要求に応じて、未使用セクタ“FREE”であった4番目のセクタエリアのセクタ状態情報が“ON WRITE”にセットされて新たなデータの書き込み途中にある状態で、ハードウエアリセットが発生した場合には、図10(B)に示すように、データ書き込み中であるの4番目のセクタエリアのセクタ状態情報は“ON WRITE”のまま保持され、データ読み込みの際には、そのセクタ状態情報が“ON WRITE”に保持されている4番目のセクタエリアは無視される。
【0095】
よって、データSector02を読み出す場合には、2番目のセクタエリアから読み出されることになるので、前記4番目のセクタエリアに書き込み途中の半端なデータが残ることはなく、書き換え前のデータが保持されるようになる。そして、次回のデータ書き込みの際には、セクタ状態情報が“ON WRITE”にセットされている4番目のセクタエリアは、ダーティ(書き込み済み)エリアと等価に判断されて無視され、図10(C)に示すように、新たな書き換えデータSector02は、“FREE”であった5番目のセクタエリアに書き込まれるようになる。
【0096】
そして、前記データ書き換えの対象となった2番目のセクタエリアにおける次セクタの指定エリアi2aには、5番目のセクタエリアを示す次セクタ指定情報がセットされ、5番目のセクタエリアのセクタ状態情報が“COMPLETE”に変更セットされる。
【0097】
したがって、前記構成のパーソナルコンピュータのフラッシュメモリに対する第2実施形態のデータ書き込み制御機能によれば、各セクタ毎のヘッダにおいて、当該ブロックが未使用(空き)である場合には“FREE”、データ書き込み途中である場合には“ON WRITE”、データ書き込み完了である場合には“COMPLETE”とするセクタ状態情報(フラグ)をセットし、ハードウエアリセットが発生した際には、“ON WRITE”で保持されているセクタエリアを無視し、データ書き換え前のセクタエリアを有効にしたままデータの読み出しを行うようにしたので、意図しないハードウエアリセットが発生した場合のデータ欠損を最小限に抑えることができる。
【0098】
なお、前記各実施形態において記載した手法、すなわち、図3のフローチャートに示すフラッシュメモリに対するデータ書き込み制御処理、図6乃至図8に示すブロック状態情報を設定したブロック管理処理とリセット対応処理、図9,図10に示すセクタ状態情報を設定したセクタ管理処理とリセット対応処理等の各手法は、コンピュータに実行させることができるプログラムとして、メモリカード(ROMカード20、RAMカード等)、磁気ディスク(フロッピディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の外部記憶媒体18aに格納して配布することができる。そして、コンピュータは、この外部記憶媒体18aに記憶されたプログラムを記憶媒体読み取り部18を介して記憶装置12やRAM13に読み込み、この読み込んだプログラムによって動作が制御されることにより、前記各実施形態において説明したフラッシュメモリの管理機能を実現し、前述した手法による同様の処理を実行することができる。
【0099】
また、前記各手法を実現するためのプログラムのデータは、プログラムコードの形態として通信ネットワーク20上を伝送させることができ、このネットワーク20に接続された伝送制御部19によって前記のプログラムデータを外部のプログラムサーバ21の記憶装置22から取り込み、前述したフラッシュメモリの管理機能を実現することもできる。
【0100】
【発明の効果】
以上のように、本発明の請求項1に係るフラッシュメモリ管理装置によれば、一次ブロック内の全セクタエリアがデータ書き込み済みとなった時点ではブロックの整理は行われず、拡張メモリとしての二次ブロック内の全セクタエリアがデータ書き込み済みとなってはじめて一次,二次ブロック内の有効なセクタデータが整理されて新たな一次ブロックが生成され、これと共に、データ整理後の元の一次ブロックと二次ブロックは、それぞれの全セクタエリアのデータが消去されて解放されるので、ブロック全体の書き換えが頻繁に起こらない構成になる。
【0101】
よって、ブロック全体の書き換えが頻繁に発生するのを防ぎ、データ書き込み速度の低下を防止することが可能になる。
【0102】
また、本発明の請求項2に係るフラッシュメモリ管理装置によれば、フラッシュメモリが有する各ブロックにおいて、空き、データ書き込み中、データ書き込み終了、処理完了の各状態を示すブロック状態情報が記憶されて管理されることで、例えばハードウエアリセットが発生した場合に、最もデータ消失の少ないブロック状態に制御できるようになる。
【0103】
また、本発明の請求項3に係るフラッシュメモリ管理装置によれば、フラッシュメモリの各ブロックが有する複数のセクタエリアにおいて、空き、データ書き込み中、書き込み完了の各状態を示すセクタ状態情報が記憶されて管理されることで、例えばハードウエアリセットが発生した場合に、最もデータ消失の少ないセクタ状態に制御できるようになる。
【0104】
よって、データ書き込みの過程においてハードウエアリセットが掛かった場合でも、データの修復を容易に行うことが可能になる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るフラッシュメモリ管理装置を搭載したパーソナルコンピュータの電子回路の構成を示すブロック図。
【図2】前記パーソナルコンピュータの記憶装置に内蔵されるフラッシュメモリ(Flash)のメモリ管理構造を示す図。
【図3】前記パーソナルコンピュータのフラッシュメモリに対するデータ書き込み制御処理を示すフローチャート。
【図4】前記フラッシュメモリに対するデータ書き込み制御処理において一次ブロックに未使用セクタがない場合のデータ書き換え要求に伴う新データの書き込み状態を示す図。
【図5】前記フラッシュメモリに対するデータ書き込み制御処理において一次,二次ブロックに未使用セクタがない場合のデータ書き換え要求に伴う新データの書き込み状態を示す図。
【図6】前記フラッシュメモリに対するデータ書き込み制御処理において一次,二次ブロックに未使用セクタがない場合のデータ書き込み要求に伴うデータ整理の過程とブロック状態情報の遷移(その1)を示す図。
【図7】前記フラッシュメモリに対するデータ書き込み制御処理において一次,二次ブロックに未使用セクタがない場合のデータ書き込み要求に伴うデータ整理の過程とブロック状態情報の遷移(その2)を示す図。
【図8】前記フラッシュメモリのデータ書き込み制御処理に伴うリセット発生対応処理を示すフローチャート。
【図9】フラッシュメモリに対する第2実施形態のデータ書き込み制御処理に伴うデータ書き込み過程とセクタ状態情報の遷移を示す図。
【図10】フラッシュメモリに対する第2実施形態のデータ書き込み制御処理に伴うリセット発生時のデータ修復過程を示す図。
【図11】フラッシュメモリにおける従来のメモリ管理構造を示す図。
【図12】フラッシュメモリの読み書きをコントロールするソフトウエアドライバの構成を示す図。
【図13】フラッシュメモリのデータ既存セクタに対するデータ書き替え要求に際し同ブロック内に未使用セクタがある場合の新データの書き込み状態を示す図。
【図14】フラッシュメモリに対する従来のデータ書き込み制御方式において未使用セクタがないブロックに対するデータ追記要求に伴う新データの書き込み状態を示す図。
【符号の説明】
11 …制御部(CPU)
12 …記憶装置
13 …RAM
14 …キーボード
15 …マウス
16 …表示部
17 …バス
18 …記憶媒体読み取り部
18a…外部記憶媒体
19 …伝送制御部
20 …ネットワーク
21 …プログラムサーバ(外部のコンピュータ端末)
22 …外部端末の記憶装置
Claims (4)
- フラッシュメモリが有する複数のブロックを一次ブロック群と二次ブロック群とに分けて設定するブロック設定手段と、
前記各ブロックが有する複数のセクタエリアの個々のセクタエリアにデータを書き込むセクタデータ書き込み手段と、
前記一次ブロック群から確保された一次ブロック内の全セクタエリアがデータ書き込み済みである場合には、当該一次ブロックの拡張ブロックとして前記二次ブロック群から確保した二次ブロックを用いるブロック拡張手段と、
このブロック拡張手段により拡張された二次ブロック内の全セクタエリアがデータ書き込み済みである場合には、前記データ書き込み済みである一次ブロックと二次ブロック内の有効なセクタデータを整理して新たな一次ブロックを生成するブロック整理手段と、
このブロック整理手段によるデータ整理後の元の一次ブロックと二次ブロックそれぞれの全セクタエリアのデータを消去するブロック解放手段と、
を備えたことを特徴とするフラッシュメモリ管理装置。 - 前記フラッシュメモリが有する各ブロックには、空き、データ書き込み中、データ書き込み終了、処理完了の各状態を示すブロック状態情報を記憶させ、このブロック状態情報に基づきブロック単位の制御を行うことを特徴とする請求項1に記載のフラッシュメモリ管理装置。
- 前記各ブロックが有する複数のセクタエリアには、空き、データ書き込み中、書き込み完了の各状態を示すセクタ状態情報を記憶させ、このセクタ状態情報に基づきセクタ単位の制御を行うことを特徴とする請求項1に記載のフラッシュメモリ管理装置。
- フラッシュメモリが有する複数のブロックを一次ブロック群と二次ブロック群とに分けて設定管理するフラッシュメモリ管理装置に、
前記各ブロックが有する複数のセクタエリアの個々のセクタエリアにデータを書き込むセクタデータ書き込みステップと、
前記一次ブロック群から確保された一次ブロック内の全セクタエリアがデータ書き込み済みである場合には、当該一次ブロックの拡張ブロックとして前記二次ブロック群から確保した二次ブロックを用いるブロック拡張ステップと、
このブロック拡張ステップにて拡張された二次ブロック内の全セクタエリアがデータ書き込み済みである場合には、前記データ書き込み済みである一次ブロックと二次ブロック内の有効なセクタデータを整理して新たな一次ブロックを生成するブロック整理ステップと、
このブロック整理ステップによるデータ整理後の元の一次ブロックと二次ブロックそれぞれの全セクタエリアのデータを消去するブロック解放ステップと、
を実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33487599A JP3793868B2 (ja) | 1999-11-25 | 1999-11-25 | フラッシュメモリ管理装置及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33487599A JP3793868B2 (ja) | 1999-11-25 | 1999-11-25 | フラッシュメモリ管理装置及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001154909A JP2001154909A (ja) | 2001-06-08 |
JP3793868B2 true JP3793868B2 (ja) | 2006-07-05 |
Family
ID=18282208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33487599A Expired - Fee Related JP3793868B2 (ja) | 1999-11-25 | 1999-11-25 | フラッシュメモリ管理装置及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3793868B2 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
WO2005022393A1 (ja) * | 2003-08-29 | 2005-03-10 | Matsushita Electric Industrial Co., Ltd. | 不揮発性記憶装置及びその書込み方法 |
EP2977906A1 (en) | 2004-04-28 | 2016-01-27 | Panasonic Corporation | Nonvolatile storage device and data write method |
JP4713867B2 (ja) * | 2004-09-22 | 2011-06-29 | 株式会社東芝 | メモリコントローラ,メモリ装置及びメモリコントローラの制御方法 |
US7315916B2 (en) * | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
US8341371B2 (en) * | 2005-01-31 | 2012-12-25 | Sandisk Il Ltd | Method of managing copy operations in flash memories |
US8307149B2 (en) | 2005-12-09 | 2012-11-06 | Panasonic Corporation | Nonvolatile memory device including a logical-to-physical logig-to-physical address conversion table, a temporary block and a temporary table |
JP4898252B2 (ja) * | 2006-03-15 | 2012-03-14 | パナソニック株式会社 | 不揮発性記憶装置及びそのデータ管理方法 |
KR101336258B1 (ko) | 2007-05-29 | 2013-12-03 | 삼성전자 주식회사 | 비휘발성 메모리의 데이터 처리 장치 및 방법 |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
JP5486193B2 (ja) * | 2009-01-27 | 2014-05-07 | 株式会社東海理化電機製作所 | フラッシュメモリの動作保護装置及びフラッシュメモリの動作保護方法 |
US8554987B2 (en) | 2009-06-18 | 2013-10-08 | Panasonic Corporation | Nonvolatile memory system for improving stream data writing |
JP5066209B2 (ja) | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
JP6276208B2 (ja) * | 2014-10-30 | 2018-02-07 | 東芝メモリ株式会社 | メモリシステム及びプログラム |
-
1999
- 1999-11-25 JP JP33487599A patent/JP3793868B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001154909A (ja) | 2001-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6802029B2 (en) | Operating system and data protection | |
JP3923955B2 (ja) | フラッシュメモリのエラーブロック管理方法及び装置 | |
JP3793868B2 (ja) | フラッシュメモリ管理装置及び記録媒体 | |
JP3526452B2 (ja) | ディスクアレイ装置及びデータバックアップ方法 | |
US8024507B2 (en) | Transaction-safe FAT file system improvements | |
EP0645031B1 (en) | Method and apparatus for writing files on nonerasable storage medium | |
JP2000298608A (ja) | コンピュータデータ記憶媒体及びメモリ管理方法 | |
EP1582971A2 (en) | Diskarray system | |
KR20010037155A (ko) | 플래시 파일 시스템 | |
JP2002251310A (ja) | フラッシュメモリのファイルシステム作成方式 | |
JPH113287A (ja) | 記憶装置およびそれに用いられる記憶領域管理方法 | |
US20050149493A1 (en) | Data recording apparatus and data recording method | |
JP3112709B2 (ja) | 追記型記憶媒体のアクセス装置 | |
JP2001101071A (ja) | フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法 | |
JP3967080B2 (ja) | 仮想ディスク制御システムおよび仮想ディスク制御プログラム | |
KR100321987B1 (ko) | 레이드 시스템에서 패러티 캐쉬 및 이의 운영 방법 | |
JPH11120044A (ja) | データ処理装置、データ処理方法、データ処理システム及び記録媒体 | |
JPH06214720A (ja) | ディスク記憶装置のデータ更新方法 | |
EP1237085B1 (en) | Memory management method for configuring a computer data storage medium to include a virtual disk drive | |
JP2008134777A (ja) | ファイル割当テーブルのキャッシュ方法 | |
JPH0778097A (ja) | ファイル再配置システム | |
JP3858648B2 (ja) | データ格納領域管理方法および装置 | |
JP2003296047A (ja) | Raidファイルシステム | |
CN118672516A (zh) | 一种数据存储方法、设备、存储介质及计算机程序产品 | |
JP2006119944A (ja) | データ記憶装置のデータ消去方法、データ消去プログラムおよび該データ消去プログラムが記憶された記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060223 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060314 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060327 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090421 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100421 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110421 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120421 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120421 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130421 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130421 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140421 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |