(57)【特許請求の範囲】
【請求項１】
情報が記憶されるデータ領域を有するフラッシュメモリ部と、
前記フラッシュメモリ部のデータ領域を複数のブロックに区画し、前記各ブロックに同ブロックの使用状態を示すブロック管理値を付加するとともに、最新値が認識される毎に、前記複数のブロックのうち特定のブロックに同最新値を書き込み、前記特定のブロックの前記ブロック管理値が未使用状態である場合には前記最新値を書き込んだときに、前記ブロック管理値を未使用状態から使用状態とし、前記特定のブロックのデータ容量によって次の最新値の書き込みが不可と判断したとき、前記特定のブロックの最新値を次のブロックにコピーするとともに、前記次のブロックにおける前記ブロック管理値を使用状態とするメモリ制御部と、を備えたフラッシュメモリ装置において、
前記メモリ制御部は、前記ブロック管理値を使用状態とする際に、前記ブロック管理値を前記ブロック毎に異なるように予め定められた規則で設定し、前記使用状態である前記ブロックが複数存在する場合には、それらのブロック管理値を前記予め定められた規則に基づき比較して、直近に設定した前記ブロック管理値における前記ブロックの最新値を真の最新値として読み出すフラッシュメモリ装置。
【請求項２】
請求項１に記載のフラッシュメモリ装置において、
前記予め定められた規則とは、前記ブロック管理値を前記ブロック毎に異なるように順に大きく若しくは小さく設定することであって、
前記メモリ制御部は、前記使用状態である前記ブロックが複数存在する場合には、前記ブロック管理値が大きい若しくは小さい前記ブロックにおける最新値を真の最新値として読み出すフラッシュメモリ装置。
【請求項３】
請求項１又は２に記載のフラッシュメモリ装置において、
前記メモリ制御部は、前記最新値の書き込みが不可と判断された前のブロックから次のブロックに前記最新値をコピーしているときに、前記最新値が更新された場合には、この更新を反映させた最新値を次のブロックに書き込み、
前記コピー中にリセットが発生した場合には、前記前のブロック及び次のブロックにおけるブロック管理値の比較に基づき前記次のブロックの最新値を読み出すとともに、同最新値においてコピーが完了していない領域においては前記前のブロックの最新値を読み出して前記領域を補完するフラッシュメモリ装置。
【請求項４】
請求項１〜３の何れか一項に記載のフラッシュメモリ装置において、
前記メモリ制御部は、前記次のブロックにおける前記ブロック管理値を使用状態とした後に、前記書き込みが不可と判断された前のブロックにおける前記ブロック管理値を使用状態から未使用状態とするとともに、前記前のブロックのデータを消去するフラッシュメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、フラッシュメモリ装置に関する。
【背景技術】
【０００２】
従来、フラッシュメモリ装置においては、データの読み出し時間の短縮を図るべく、メモリ領域をブロックという単位に分けて管理している（例えば、特許文献１参照）。そして、各ブロックにはブロック管理値が付与されている。ブロック管理値とは、そのブロックが使用状態（アクティブ状態）及び未使用状態の何れであるかを示す情報である。
【０００３】
図４に示すように、ブロック管理値は、例えば、１６進法による４桁の数字から構成される。具体的には、アクティブ状態においては「＄１１１１」が割り当てられ、未使用状態においては「＄ＦＦＦＦ」が割り当てられる。以下、本明細書では、「＄」の後に示される数字は１６進法の数字とする。
【０００４】
図４の上側に示すように、第１のブロックがアクティブ状態であって、第２のブロックが未使用状態であるとする。両ブロックは、データを格納する第１〜第ｎのデータエリアＡ１〜Ａｎを有する。未使用状態にある第２のブロックにおける全てのデータエリアＡ１〜Ａｎは、データが存在しない空き状態である。データ（最新値）の書き込み要求があると、その最新値は第１のブロックにおける第１〜第ｎのデータエリアＡ１〜Ａｎに順番に書き込まれていく。これにより、空き状態であるデータエリアが減っていく。そして、図４の下側に示すように、第１のブロックにおける第ｎのデータエリアＡｎに最新値が書き込まれたとき、第２のブロックにおけるブロック管理値が未使用状態からアクティブ状態に書き換えられるとともに、当該最新値が第２のブロックにおける第１のデータエリアＡ１にコピーされる。その後に、第１のブロックに記憶されるデータが全て消去されるとともに、そのブロック管理値がアクティブ状態から未使用状態に書き換えられる。
【０００５】
なお、上記コピー中に、最新値が更新される場合もある。この場合、更新された最新値が第２のブロックの第１のデータエリアＡ１に書き込まれる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−１３４３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、第１のブロックから第２のブロックへの最新値のコピー中に、フラッシュメモリ装置の電源が一時的にオフ状態とされることでリセットが発生するおそれがある。この場合、第１のブロックが未使用状態へ切り替えられないため、上記リセット時に再度電源がオンとなったときアクティブ状態となるブロックが２つ存在することになって最新値が不明となる。
【０００８】
特に、コピー中に、最新値が更新された場合には、第１及び第２のブロック間で最新値が異なるデータとなる。このとき、真の最新値は、第２のブロックにおける最新値であるものの、それを判断することができない。よって、誤って第１のブロックにおける最新値が読み出されるおそれがある。
【０００９】
この発明は、こうした実情に鑑みてなされたものであり、その目的は、ブロック間で最新値をコピーしている間にリセットが発生した場合であっても、真の最新値が認識されるフラッシュメモリ装置を提供することにある。
【課題を解決するための手段】
【００１０】
以下、上記目的を達成するための手段及びその作用効果について説明する。
請求項１に記載の発明は、情報が記憶されるデータ領域を有するフラッシュメモリ部と、前記フラッシュメモリ部のデータ領域を複数のブロックに区画し、前記各ブロックに同ブロックの使用状態を示すブロック管理値を付加するとともに、最新値が認識される毎に、前記複数のブロックのうち特定のブロックに同最新値を書き込み、前記特定のブロックの前記ブロック管理値が未使用状態である場合には前記最新値を書き込んだときに、前記ブロック管理値を未使用状態から使用状態とし、前記特定のブロックのデータ容量によって次の最新値の書き込みが不可と判断したとき、前記特定のブロックの最新値を次のブロックにコピーするとともに、前記次のブロックにおける前記ブロック管理値を使用状態とするメモリ制御部と、を備えたフラッシュメモリ装置において、前記メモリ制御部は、前記ブロック管理値を使用状態とする際に、前記ブロック管理値を前記ブロック毎に異なるように予め定められた規則で設定し、前記使用状態である前記ブロックが複数存在する場合には、それらのブロック管理値を前記予め定められた規則に基づき比較して、直近に設定した前記ブロック管理値における前記ブロックの最新値を真の最新値として読み出すことをその要旨としている。
【００１１】
同構成によれば、ブロック管理値を使用状態とする際に、ブロック管理値がブロック毎に異なるように予め定められた規則で設定される。このため、たとえ、使用状態であるブロックが複数存在する場合であっても、それらのブロック管理値を前記予め定められた規則に基づき比較することで直近に設定したブロック管理値におけるブロックの最新値を真の最新値として読み出すことができる。
【００１２】
請求項２に記載の発明は、請求項１に記載のフラッシュメモリ装置において、前記予め定められた規則とは、前記ブロック管理値を前記ブロック毎に異なるように順に大きく若しくは小さく設定することであって、前記メモリ制御部は、前記使用状態である前記ブロックが複数存在する場合には、前記ブロック管理値が大きい若しくは小さい前記ブロックにおける最新値を真の最新値として読み出すことをその要旨としている。
【００１３】
同構成によれば、ブロック管理値を使用状態とする際に、ブロック管理値がブロック毎に異なるとともに順に大きく若しくは小さくなるように設定される。このため、たとえ、使用状態であるブロックが複数存在する場合であっても、ブロック管理値が大きい若しくは小さいブロックの最新値を読み出すことで、真の最新値を読み出すことができる。
【００１４】
請求項３に記載の発明は、請求項１又は２に記載のフラッシュメモリ装置において、前記メモリ制御部は、前記最新値の書き込みが不可と判断された前のブロックから次のブロックに前記最新値をコピーしているときに、前記最新値が更新された場合には、この更新を反映させた最新値を次のブロックに書き込み、前記コピー中にリセットが発生した場合には、前記前のブロック及び次のブロックにおけるブロック管理値の比較に基づき前記次のブロックの最新値を読み出すとともに、同最新値においてコピーが完了していない領域においては前記前のブロックの最新値を読み出して前記領域を補完することをその要旨としている。
【００１５】
同構成によれば、最新値を次のブロックにコピーしているときに、最新値が更新された場合には、更新された最新値が次のブロックに書き込まれる。例えば、コピー中に電源が一時的にオフ状態とされてリセットが発生した場合には、使用状態のブロックが２つ存在することになる。この場合、両ブロックのブロック管理値に基づき次のブロックの最新値が読み出されるとともに、同最新値においてコピーが完了していない領域においては前のブロックの最新値が読み出されることで補完される。これにより、最新値において更新された領域のコピーが完了した後にリセットが発生した場合であっても、真の最新値を読み出すことができる。
【００１６】
請求項４に記載の発明は、請求項１〜３の何れか一項に記載のフラッシュメモリ装置において、前記メモリ制御部は、前記次のブロックにおける前記ブロック管理値を使用状態とした後に、前記書き込みが不可と判断された前のブロックにおける前記ブロック管理値を使用状態から未使用状態とするとともに、前記前のブロックのデータを消去することをその要旨としている。
【００１７】
同構成によれば、次のブロックにおけるブロック管理値が使用状態とされた後に、前のブロックにおけるブロック管理値が使用状態から未使用状態とされるとともに、前のブロックのデータが消去される。従って、コピー中にリセットが発生しない限り、使用状態となるブロックを１つとすることができる。よって、ブロック管理値を比較する処理の回数を低減させることができる。
【発明の効果】
【００１８】
本発明によれば、フラッシュメモリ装置において、ブロック間で最新値をコピーしている間にリセットが発生した場合であっても、真の最新値を認識することができる。
【図面の簡単な説明】
【００１９】
【図１】フラッシュメモリ装置の構成図。
【図２】各ブロック、特にそのブロック管理値を示したメモリマップ。
【図３】（ａ）はコピー中に最新値が更新された場合の第１及び第２のブロックを示したメモリマップ、（ｂ）は（ａ）の途中でリセットが発生した場合の第１及び第２のブロックを示したメモリマップ。
【図４】従来の各ブロックを示したメモリマップ。
【発明を実施するための形態】
【００２０】
以下、本発明にかかるフラッシュメモリ装置を具体化した一実施形態について図１〜図３を参照して説明する。
図１に示すように、フラッシュメモリ装置は、メモリ制御部１１と、フラッシュメモリ部１５とを備える。フラッシュメモリ部１５は不揮発性メモリである。メモリ制御部１１は、フラッシュメモリ部１５のデータ領域を利用して最新値を管理する。この最新値は、図示しない外部装置からの情報に応じてメモリ制御部１１によって認識される。
【００２１】
詳しくは、図２に示すように、メモリ制御部１１は、フラッシュメモリ部１５のデータ領域を複数のブロックＢ１〜Ｂｎに区画して使用する。各ブロックＢ１〜Ｂｎは、ブロック管理値と、第１〜第ｎのデータエリアＡ１〜Ａｎとで構成される。
【００２２】
ブロック管理値は、１６進法による４桁の数字から構成される。具体的には、アクティブ状態においては「＄１１１１」〜「＄１１１Ｆ」が割り当てられ、未使用状態においては「＄ＦＦＦＦ」が割り当てられる。本例では、「Ｆ」は何の情報も付加されていない初期状態を示す。また、最新値も、ブロック管理値と同様に、１６進法による複数桁の数字から構成される。
【００２３】
また、各データエリアＡ１〜Ａｎは、それぞれ同一のデータ容量を有している。ここで、全てのブロックＢ１〜Ｂｎに何もデータが記憶されていない状態においては、メモリ制御部１１は、全てのブロック管理値を未使用状態（「＄ＦＦＦＦ」）とする。
【００２４】
この状態において、メモリ制御部１１は、最新値を認識すると、その最新値を第１のブロックＢ１における第１のデータエリアＡ１に書き込むとともに、第１のブロックＢ１におけるブロック管理値を未使用状態（「＄ＦＦＦＦ」）からアクティブ状態（「＄１１１１」）とする。以下、同様に、メモリ制御部１１は、最新値を第２〜第ｎのデータエリアＡ２〜Ａｎに順番に書き込んでいく。すなわち、このとき古い最新値は消去されない。また、ブロック管理値は「＄１１１１」に維持される。
【００２５】
図２の下側に示すように、メモリ制御部１１は、第１のブロックＢ１における第ｎのデータエリアＡｎに最新値を書き込むと、第２のブロックＢ２のブロック管理値を未使用状態（「＄ＦＦＦＦ」）からアクティブ状態（「＄１１１２」）に書き換える。このとき、第２のブロックＢ２におけるアクティブ状態を示す「＄１１１２」は、第１のブロックＢ１におけるアクティブ状態を示す「＄１１１１」より「１」だけ大きい。そして、メモリ制御部１１は、第１のブロックＢ１の最新値を、第２のブロックＢ２における第１のデータエリアＡ１にコピーする。その後に、メモリ制御部１１は、第１のブロックＢ１に記憶されたデータを消去するとともに、ブロック管理値をアクティブ状態（「＄１１１１」）から未使用状態（「＄ＦＦＦＦ」）に書き換える。
【００２６】
また、第１のブロックと同様にして、第２のブロックＢ２における第ｎのデータエリアＡｎに最新値が書き込まれると、第３のブロックＢ３におけるブロック管理値がアクティブ状態（「＄１１１３」）に書き換えられた後に、第３のブロックＢ３の第１のデータエリアＡ１に最新値がコピーされる。その後、第２のブロックＢ２のデータが消去されるとともに、そのブロック管理値がアクティブ状態から未使用状態に書き換えられる。以下同様に、第４〜第ｎのブロックＢ４〜Ｂｎがアクティブ状態とされるときにはブロック管理値として「＄１１１４」〜「＄１１１Ｆ」が書き込まれる。このように、アクティブ状態となるブロック管理値が「１」ずつ大きく、すなわち連番として設定される。そして、本例では、「＄１１１Ｆ」の次は再び「＄１１１１」とされる。
【００２７】
また、メモリ制御部１１は、第１のブロックＢ１の第ｎ−１のデータエリアＡｎ−１まで最新値を書き込んで、次の最新値が容量の観点から第ｎのデータエリアＡｎに入りきらない場合、次の最新値を第２のブロックＢ２に書き込む。この場合、第２のブロックＢ２の第１及び第２のデータエリアＡ１，Ａ２が使用される。その後、上記と同様に、メモリ制御部１１は、第１のブロックＢ１に記憶されたデータを消去するとともに、そのブロック管理値をアクティブ状態から未使用状態に書き換える。
【００２８】
上記構成によれば、特定のブロックにおける最新値をコピーした後に、そのブロックは未使用状態に書き換えられるため、基本的にはアクティブ状態となっているブロックは１つである。このため、メモリ制御部１１は、アクティブ状態におけるブロックから最新値を読み出すことができる。
【００２９】
ここで、コピー中に、フラッシュメモリ装置の電源が一時的にオフされることでリセットが発生するおそれがある。この場合、図２の下側の例では、第２のブロックＢ２におけるブロック管理値の書き換えは完了しているものの第１のブロックＢ１におけるブロック管理値の書き換えは完了していないため、アクティブ状態となるブロックが２つ存在することになる。
【００３０】
ここで、上述のようにブロック管理値が連番とされる。これを利用して、メモリ制御部１１は、最新値を読み出す際に、アクティブ状態のブロックが複数あれば、ブロック管理値の大小関係に基づき最新値を読み出す。例えば、メモリ制御部１１は、ブロック管理値が「＄１１１１」である第１のブロックＢ１と、ブロック管理値が「＄１１１２」である第２のブロックＢ２とがある場合には、「＄１１１２」＞「＄１１１１」の関係により、大きい方の「＄１１１２」に対応した第２のブロックＢ２における最新値を読み出す。これを原則として、本例では、ブロック管理値が「＄１１１Ｆ」の次は再び「＄１１１１」とされるため、例外的に「＄１１１１」は「＄１１１Ｆ」より大きいと判断される。
【００３１】
ここで、図３（ａ）に示すように、第１のブロックＢ１の最新値を、第２のブロックＢ２にコピーしている最中に、最新値が更新される場合がある。ここでは、更新後の最新値を真の最新値と呼ぶ。メモリ制御部１１は、最新値のコピー中に最新値が更新されると、真の最新値を第２のブロックＢ２に書き込む。図３（ａ）の例では、メモリ制御部１１は、４桁目の「５」をコピーしているとき、３桁目が「Ａ」から「３」に更新された旨認識した場合には、３桁目に更新後の「３」を書き込む。これにより、第２のブロックＢ２には真の最新値（「＄５３９１」）を書き込むことができる。
【００３２】
さらに、上記状況に加えて、図３（ｂ）に示すように、２桁目である「９」の書き込み中にリセットが発生したとする。この場合、３桁目及び４桁目（「３」及び「５」）のコピーが完了し、残りの２桁である「９」及び「１」のコピーが完了しないため初期状態の「Ｆ」となる。
【００３３】
この状態において、再度、電源がオンされた後に最新値を読み出す場合には、メモリ制御部１１は、まず、上記同様にブロック管理値の大小に基づき、第２のブロックＢ２における最新値（「＄５３ＦＦ」）を読み出す。そして、その最新値に「Ｆ」が存在する場合、コピー中にリセットが発生したとして、「Ｆ」の桁を、第１のブロックＢ１における最新値で補完する。これにより、アクティブ状態となるブロックが２つある場合であっても、正しい順番で最新値が読み取られる。これにより、誤って第１のブロックＢ１における真の最新値と異なる更新前の最新値が読み取られることが防止される。よって、真の最新値をより確実に読み出すことができる。
【００３４】
以上、説明した実施形態によれば、以下の効果を奏することができる。
（１）ブロック管理値をアクティブ状態とする際に、ブロック管理値がブロック毎に異なるとともに順に大きくなるように設定される。具体的には、ブロック管理値として第１のブロックＢ１には「＄１１１１」が、第２のブロックＢ２には「＄１１１２」が記憶される。このため、たとえ、アクティブ状態であるブロックが複数存在する場合であっても、ブロック管理値が大きい、上記例では第２のブロックＢ２の最新値を読み出すことで、真の最新値を読み出すことができる。
【００３５】
（２）最新値を第１のブロックＢ１から第２のブロックＢ２にコピーしているときに、最新値が更新された場合には、更新された真の最新値が第２のブロックＢ２に書き込まれる。例えば、コピー中にリセットが発生した場合には、ブロック管理値の大小関係に基づき、第２のブロックＢ２の最新値が読み出されるとともに、同最新値においてコピーが完了していない領域においては第１のブロックＢ１の最新値が読み出されることで補完される。図３（ｂ）の例では、第２のブロックＢ２の最新値における１桁目及び２桁目が、コピーが完了していない領域であって、これらは第１のブロックＢ１の最新値が利用される。これにより、最新値において更新された領域（図３（ｂ）では３桁目）のコピーが完了した後にリセットが発生した場合であっても、真の最新値を読み出すことができる。
【００３６】
（３）第２のブロックＢ２におけるブロック管理値がアクティブ状態とされた後に、第１のブロックＢ１におけるブロック管理値がアクティブ状態から未使用状態とされるとともに、第１のブロックＢ１のデータが消去される。従って、コピー中にリセットが発生しない限り、アクティブ状態となるブロックを１つとすることができる。よって、ブロック管理値の大小関係を比較する処理の回数を低減させることができる。
【００３７】
（４）第１のブロックＢ１の第ｎ−１のデータエリアＡｎ−１まで最新値を書き込んで、次の最新値が容量の観点から第ｎのデータエリアＡｎに入りきらない場合、つぎの最新値が第２のブロックＢ２に書き込まれる。この状況において、コピーの完了時にリセットが発生した場合には、両ブロックＢ１，Ｂ２間で最新値が異なる。この場合であっても、ブロック管理値の大小関係に基づき、正しく第２のブロックＢ２の最新値が読み出される。
【００３８】
（５）たとえ両ブロック間の最新値が同じ場合であっても、上記実施形態のようにブロック管理値の大小関係に基づく優先順位があれば、常に同一の処理が行われる。
なお、上記実施形態は、これを適宜変更した以下の形態にて実施することができる。
【００３９】
・上記実施形態においては、ブロック管理値における大小関係は、１桁目で判断されていた。しかし、その他の桁を順番に増やすことで、ブロックを連番化してもよい。これにより、ブロック管理値を、１６を超えて連番化することができる。
【００４０】
また、ブロック管理値は順に大きくなっていれば連番に限らず、例えば「＄１１１１」、「＄１１１３」、「＄１１１５」…として、２ずつ大きくしてもよい。
・さらに、ブロック管理値は順に小さくなるように設定されてもよい。例えば、第１のブロックＢ１のブロック管理値を「＄１１１Ｆ」とした場合には、第２のブロックＢ２のブロック管理値を「＄１１１Ｅ」とする。このようにブロック管理値を順に小さく設定する場合も、上記と同様にブロック管理値は連番でなくてもよい。本構成において、リセット後にアクティブ状態のブロックが複数あれば、メモリ制御部１１は、まずブロック管理値が小さい方の第２のブロックＢ２における最新値を読み出す。これにより、上記実施形態と同様に、真の最新値を読み出すことができる。
【００４１】
・さらに、予め定められた規則に基づきブロック管理値が設定されれば、ブロック管理値を上記のように順に大きく若しくは小さく設定しなくてもよい。例えば、第１のブロックのブロック管理値を「＄１１１１」とし、第２のブロックのブロック管理値を「＄１１１５」とし、第３のブロックのブロック管理値を「＄１１１３」としてもよい。この場合であっても、予め定められた規則を認識しているため、ブロック管理値の比較を通じて真の最新値を読み出すことができる。
【００４２】
・上記実施形態においては、アクティブ状態には「＄１１１１」〜「＄１１１Ｆ」が割り当てられ、未使用状態には「＄ＦＦＦＦ」が割り当てられていた。しかし、これらの割り当て方法はこれに限定されない。例えば、未使用状態には「＄００００」を割り当て、アクティブ状態には「＄０００１」〜「＄０００Ｆ」を割り当ててもよい。
【００４３】
・上記実施形態においては、図２の下側に示すように、メモリ制御部１１は、第１のブロックＢ１の最新値を第２のブロックＢ２における第１のデータエリアＡ１にコピーした後に、第１のブロックＢ１に記憶されるデータを消去するとともに、ブロック管理値をアクティブ状態から未使用状態に書き換えていた。しかし、このデータの消去及びブロック管理値の未使用状態への書き換えを省略してもよい。この場合、アクティブ状態となるブロックが複数存在することになるものの、上記実施形態のようにブロック管理値の大小関係に基づき真の最新値を読み出すことができる。本構成は、より多くの過去の最新値を記憶させる場合に有効である。
【００４４】
次に、前記実施形態から把握できる技術的思想をその効果と共に記載する。
（イ）請求項１〜４の何れか一項に記載のフラッシュメモリ装置において、前記各ブロックは複数のデータエリアから構成され、前記メモリ制御部は、前記最新値を各データエリアに格納するフラッシュメモリ装置。
【符号の説明】
【００４５】
１１…メモリ制御部、１５…フラッシュメモリ部。
【図１】
0005520880.tif 000002
【図２】
0005520880.tif 000003
【図３】
0005520880.tif 000004
【図４】
0005520880.tif 000005