(57)【要約】【課題】  フラッシュメモリなど不良ブロックが発生するメモリで、メモリ領域が不足した場合でも極力メモリ書き込みを継続できるようにすることを目的とする。【解決手段】  フラッシュメモリにデータを書き込む場合、このフラッシュメモリの未使用のブロックを取得してデータを書き込むデータ書込手段と、書き込んだデータが正しくない場合には、当該ブロックを不良ブロックとする不良ブロック設定手段と、一方、未使用ブロックを取得できなかった場合、ある不良ブロックが再利用可能か否かを判定する再利用判定手段を備え、再利用可能と判定された場合にはこの不良ブロックを未使用ブロックとして復活させる。【選択図】  図６
2007179257.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを備えた情報機器において、
前記フラッシュメモリにデータを書き込む場合、このフラッシュメモリの未使用のブロックを取得し、当該ブロックにデータを書き込むデータ書込手段と、
前記データ書込手段が書き込んだデータが正しく書かれたか否かを判定する成否判定手段と、
前記成否判定手段により、書き込んだデータが正しくない場合には、当該ブロックを不良ブロックとする不良ブロック設定手段と、
前記データ書込手段が未使用のブロックを取得できなかった場合、不良ブロックを取得し、その不良ブロックが再利用可能か否かを判定する再利用判定手段と、
前記再利用判定手段により再利用可能と判定された場合、当該不良ブロックを未使用ブロックとする未使用ブロック設定手段と、
前記データ書込手段は、前記未使用ブロック設定手段が設定した当該未使用ブロックを取得する
ことを特徴とする情報機器。
【請求項２】
前記成否判定手段は、
前記データ書込手段が書き込んだデータが正しい場合には、書き込んだ当該ブロックの論理ブロック番号と同じ論理ブロック番号を持つブロックを未使用ブロックとする
ことを特徴とする請求項１に記載の情報機器
【請求項３】
フラッシュメモリのデータ領域にデータを書き込む場合のメモリ領域管理方法であって、
このフラッシュメモリ内の未使用のブロックを取得し、
未使用のブロックが取得できた場合、
取得したブロックにデータを書き込んだ後、データが正しく書き込まれたか否かを判定し、
正しく書き込まれていない場合、当該ブロックを不良ブロックとし、さらに別の未使用ブロックを取得してこの未使用ブロックに書き込みを試みるとともに、
未使用のブロックが取得できなかった場合、フラッシュメモリ内の不良ブロックを取得し、その不良ブロックが再利用可能か否かを判定し、
再利用可能と判定した場合、当該不良ブロックを未使用ブロックとした後にデータを
書き込む
ことを特徴とするメモリ領域管理方法。
【請求項４】
データが正しく書き込まれたと判定された場合、この書き込まれたブロックの論理ブロック番号と同じ論理ブロック番号を持つブロックを未使用ブロックとする
ことを特徴とする請求項３に記載のメモリ領域管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリに不良ブロックがある場合の、その不良ブロックの代わりとなる代替ブロックの管理に関する。
【背景技術】
【０００２】
近年、メモリカードやシリコンオーディオなどの記憶装置としてフラッシュメモリが用いられるようになった。このフラッシュメモリは電源を供給しなくとも記憶したデータが消えない不揮発性を備えたメモリである。
【０００３】
ＡＶ系のデータを記憶するようになるとメモリ容量の大きいメモリが必要となる。しかしながらメモリ容量を増やすことはすなわちチップ内の蓄積度を高めることとなる。チップ内に形成されたメモリ素子の中にはさまざまな理由で不良となるものあるため、蓄積度が上がるにつれチップ内で不良と診断される箇所が無視できないほど多くなる。このためフラッシュメモリではあらかじめ代替領域を用意しておき、不良と判断された領域をこの代替領域で置き換えて行く。しかしながら代替領域を多く取るのは効率が悪いため、あらかじめ定めた量の領域としている。するといずれは代替領域を使い切り、もはやメモリとして利用できなくなってしまう。
【０００４】
不良な領域と判断される理由の一つには、書き込み処理中の電源断など処理が完了する前に不正なデータが書き込まれたままになる場合が考えられる。このような理由で不良と判断された領域を救済する目的で、読み出し時に不良な領域と判断されたときのその領域を再利用すべきかどうかをデータの読み出し段階で判断し、再利用不可ならば代替領域を割り当てるメモリ制御方法が提案されている（特許文献１参照）。
【特許文献１】特開２００４−２７２４７６公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
フラッシュメモリは不良な領域を発見すると、あらかじめ用意した代替領域を用いて置き換えることでメモリの信頼性を高めている。
【０００６】
しかしながら代替領域を使い切るとメモリとして使用できなくなってしまう。一方、不良な領域と判断された場合であっても再び記憶領域として利用できる場合がある。
【０００７】
本発明は上記問題に鑑みてなされたものであり、新たに書き込むメモリ領域が不足した場合でも極力メモリ書き込みを継続できるとともに書き込みの信頼性を高めることを目的とする。
【課題を解決するための手段】
【０００８】
本発明によれば、フラッシュメモリを備えた情報機器において、前記フラッシュメモリにデータを書き込む場合、このフラッシュメモリの未使用のブロックを取得し、当該ブロックにデータを書き込むデータ書込手段と、前記データ書込手段が書き込んだデータが正しく書かれたか否かを判定する成否判定手段と、前記成否判定手段により、書き込んだデータが正しくない場合には、当該ブロックを不良ブロックとする不良ブロック設定手段と、前記データ書込手段が未使用のブロックを取得できなかった場合、不良ブロックを取得し、その不良ブロックが再利用可能か否かを判定する再利用判定手段と、前記再利用判定手段により再利用可能と判定された場合、当該不良ブロックを未使用ブロックとする未使用ブロック設定手段と、前記データ書込手段は、前記未使用ブロック設定手段が設定した当該未使用ブロックを取得することを特徴とする情報機器が提供される。
【０００９】
また本発明によれば、フラッシュメモリのデータ領域にデータを書き込む場合のメモリ領域管理方法であって、このフラッシュメモリ内の未使用のブロックを取得し、未使用のブロックが取得できた場合、取得したブロックにデータを書き込んだ後、データが正しく書き込まれたか否かを判定し、正しく書き込まれていない場合、当該ブロックを不良ブロックとし、さらに別の未使用ブロックを取得してこの未使用ブロックに書き込みを試みるとともに、未使用のブロックが取得できなかった場合、フラッシュメモリ内の不良ブロックを取得し、その不良ブロックが再利用可能か否かを判定し、再利用可能と判定した場合、当該不良ブロックを未使用ブロックとした後にデータを書き込むことを特徴とするメモリ領域管理方法が提供される。
【発明の効果】
【００１０】
フラッシュメモリに新たに書き込む領域が不足した場合、不良と判断された領域を救済することでメモリ書き込みを継続することができる。
【発明を実施するための最良の形態】
【００１１】
（第１の実施形態）
図１は、本実施形態におけるメモリシステムのブロック図の一例を示す図である。図１には、ＣＰＵ１００、ＲＡＭ１０１、内部バス１０２、入出力部１０３およびメモリ１０４が示されている。
【００１２】
ＣＰＵ１００は、中央演算処理装置を指し、プログラムの実行や各部への制御指示を送る機能を有する。
【００１３】
ＲＡＭ１０１は、ランダムアクセスメモリである。通常はＣＰＵ１００が処理するプログラムコードを記憶しており、ＣＰＵ１００はこのメモリからコードを取得し、あるいは処理の結果を書き込む。ランダムアクセスメモリはリードオンリーメモリ（ＲＯＭ）などと比較して高速に読み書きでき、またこのような用途で使用する場合電源を落とした後でも記憶した情報を保持しておく必要がないことから、ＣＰＵ１００の処理するコードを記憶する目的で利用されることが多い。
【００１４】
内部バス１０２は、ＣＰＵ１００およびＲＡＭ１０１の間を接続する、広帯域の伝送能力を備えたバスである。本実施形態ではこれらが実装される基板上に形成され、基板上の各電子部品間のデータ交換のための通路となる。
【００１５】
入出力部１０３は、内部バス１０２を介してＣＰＵ１００から入出力指示を受け、所定の装置とデータのやり取りを行う機能を有する。本実施形態では所定の装置がフラッシュメモリであり、ＣＰＵ１００からの指示によりこのフラッシュメモリを制御する。
【００１６】
メモリ１０４は、フラッシュメモリである。入出力部１０３を介することでＣＰＵ１００の指示でデータを入力し、また読み出すことができる。
【００１７】
図２は、本実施形態におけるメモリ１０４の記憶フォーマットの一例を示す図である。一般的なフラッシュメモリ（たとえばＮＡＮＤ型）では、図２に示すようなデータ構造で記憶されている。データ領域は大きく複数のブロック領域に分けられて管理されている。ブロックの数はフラッシュメモリの記憶容量によって最大数が決まる。
【００１８】
ブロックはさらに３２のセクタに分かれている。記憶データの読み出し、書き込みはこのセクタ単位に行うことが可能である。一方、フラッシュメモリの特性上、データを書き込む前には書き込み先のデータを一度削除する必要がある。削除に関しては１ブロックに含まれる３２セクタ単位に削除処理が可能となっている。
【００１９】
１つのセクタには、利用者のデータを記憶する５１２バイトの領域と、管理用のデータを記憶する１６バイトの領域が存在する。この１６バイトの領域に記憶する管理用のデータを冗長データと呼ぶ。
【００２０】
図３に、冗長データの記憶フォーマットの一例を示す。冗長データ３００は、フラグ３０１、論理ブロック番号３０２、データ領域のＥＣＣデータ３０３およびリザーブ領域３０４により構成される。
【００２１】
フラグ３０１には、そのブロックの状態（未使用、使用済、不良）を格納している。「未使用」であればまだデータが書き込まれていない状態、「使用済」はデータが書き込まれている状態、「不良」はそのブロックは記憶に使えないことを表している。
【００２２】
論理ブロック番号３０２には、そのブロックの論理ブロック番号が入る。フラッシュメモリの物理的な構成は図２に示すようにブロック０〜ｎまで振られているが、これらアクセス対象のブロックを論理的に変更できるよう設けられている。
【００２３】
データ領域のＥＣＣデータ３０３は、そのセクタのデータ領域に記憶されているデータから求めたＥＣＣ（誤り訂正符号）を格納している。この情報はデータ領域に記憶されているデータが正しく読み出せたか否かを判定するために使用される。
【００２４】
リザーブ領域３０４は、将来使用される可能性があるものの、現在では公には使用されていない領域である。
【００２５】
図４は、従来のフラッシュメモリへの書き出し時に取られていた処理フローの一例を示す図である。
【００２６】
データ領域に、あるデータを書き出すにあたりフラグ３０１から未使用のブロックが存在するか否かを調べる（ステップＳ０１）。未使用のブロックが無い場合（Ｎｏ）、たとえば書き込みを指示したアプリケーションに対し書き込みに失敗したことを通知する書き込みエラー処理をして（ステップＳ０２）フローを終了する。
【００２７】
未使用ブロックが存在する場合（Ｙｅｓ）、未使用のブロックを１つ取得し（ステップＳ０３）、そのブロックのデータ領域にデータを書き込む（ステップＳ０４）。
【００２８】
次に、ステップＳ０４で書き込んだのと同じブロック内のデータ領域からデータを読み出しを試みる（ステップＳ０５）。先ほど書き込んだブロックからデータ領域に記憶したデータが読み出せたか、読み出したデータのＥＣＣとＥＣＣデータ３０３のＥＣＣとが正しい値を示しているか、または書き込んだデータと読み出したデータをつき合わせて正しいデータが読み出せたかどうかを判断する（ステップＳ０６）。
【００２９】
読み出したデータが正しくない場合（Ｎｏ）、そのブロックのフラグを不良状態とし（ステップＳ０７）他の未使用のブロックがあるかどうかを再び調べる（ステップＳ０１）。
【００３０】
正しく読み出せた場合（Ｙｅｓ）、このブロックの論理ブロック番号と同じ番号を持つ別のブロックの内容を削除して、削除したブロック内のフラグ３０１を未使用の状態に変える（ステップＳ０８）。
【００３１】
このように一時的に同じ論理ブロック番号を持つブロックを与えるのは、たとえばメモリに書き込み中に電源が切れた場合のことを考慮したものである。同じ論理ブロック番号を持つブロックの書き込みに失敗しても同じ論理ブロック番号を持つ前のブロックが残っていることからデータ消失の危険を回避でき、よって書き込み時の信頼性を高めることができる。
【００３２】
図５は、本実施形態におけるフラッシュメモリへの書き出し時の処理フローの一例を示す図である。
【００３３】
従来の処理フローを説明した図４との相違点は、ステップＳ０１に相当するステップＳ１１による未使用ブロックの存在確認の結果、未使用のブロックが存在しない場合（Ｎｏ）の処理である。以下にこの相違する処理について説明する。
【００３４】
図６は、本実施形態における未使用ブロックが存在しない場合の処理フローの一部を示す図である。
【００３５】
まず、フラグに不良とされているブロックのうち再利用見込みのあるブロックを取得する（ステップＳ２１）。ここで言う再利用見込みのあるブロックとは、以前データ領域への書き出し処理で不良と判定されたブロックを指す。ただし、図６に示す処理フローにより再利用可能か否かのチェックを受けたことがあり、かつ再利用不可と診断されたブロックは除外する。再利用可能か否かの処理を受けたことがあるか否かの情報あるいは再利用不可と判定された情報は、フラグ３０１にその旨の情報を加えても良いし、リザーブ領域３０４に記憶するようにしても良い。
【００３６】
再利用見込みのある不良ブロックの有無を調べ（ステップＳ２２）、存在しない場合（Ｎｏ）、たとえば書き込みを指示したアプリケーションに対し書き込みに失敗したことを通知する書き込みエラー処理をして（ステップＳ２３）フローを終了する。
【００３７】
このように構成することで、再利用見込みのない不良ブロックも含めて毎回すべての不良ブロックをチェックする時間を省くことができ、データ領域への書き込み処理時間を短縮することができる。
【００３８】
再利用見込みのある不良ブロックがある場合（Ｙｅｓ）、その再利用見込みのあるブロックが再利用可能か否かをチェックする（ステップＳ２４）。チェックの結果、再利用できないと判定されたとき（Ｎｏ）には別の再利用見込みのある不良ブロックを取得する。
【００３９】
再利用可能と判定されたときには（Ｙｅｓ）その不良ブロックのデータ領域を削除し、フラグ３０１の状態を未使用とする（ステップＳ２５）。その後、図５に示す従来のデータ書き込み（ステップＳ１３）を継続する。
【００４０】
このように構成すると、一旦なんらかの理由で不良ブロックと判定された正常なブロックを再利用することができ、フラッシュメモリに新たに書き込む領域が不足した場合にもメモリ書き込みを継続することができる。
【００４１】
図７は、本実施形態における再利用可能か否かのチェックをするための処理フローの一例を示した図である。
【００４２】
書き込み時にビット化けが発生しないことを確認するために、まずデータ領域全体のデータビットに１を書き込む（ステップＳ３１）。次にすべてのデータビットを読み出し、すべてのデータビットが１になっているか否かを調べる（ステップＳ３２）。このとき１でないデータビットがあった場合には、再利用不可能と判定される（ステップＳ３３）。
【００４３】
今度はデータ領域全体のデータビットに０を書き込む（ステップＳ３４）。次にすべてのデータビットを読み出し、すべてのデータビットが０であるか否かを調べる（ステップＳ３５）。このとき０でないデータビットがあった場合には、再利用不可能と判定される（ステップＳ３３）。
【００４４】
今度はデータ領域全体のデータビットに再び１を書き込む（ステップＳ３６）。このときもまたステップＳ３２と同様に読み出したデータビットがすべて１であるか否かを調べる（ステップＳ３７）。このとき１でないデータビットがあった場合には、再利用不可能と判定される（ステップＳ３３）。
【００４５】
ここでも読み出したデータビットに問題が無い場合（Ｙｅｓ）、初めてその不良ブロックを再利用可能と判定することができる（ステップＳ３８）。
【００４６】
再利用不可と判定されたとき、ステップＳ３８でその不良ブロックの冗長データのフラグ３０１あるいはリザーブ領域３０４などに再利用不可の旨の情報を入れておくこともできる。すると、このチェックで再利用不可と判定されたブロックは再利用見込みがほとんど無いため、次回のチェックを省かせることができる。
【００４７】
しかしながらメモリ資源が切迫している場合には、再利用見込みのあるブロックをチェックしたあとに再利用見込みのないブロックも改めてチェックを試みるようにしても良い。
【００４８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４９】
【図１】本実施形態におけるメモリシステムのブロック図の一例を示す図である。
【図２】本実施形態におけるメモリ１０４の記憶フォーマットの一例を示す図である。
【図３】冗長データの記憶フォーマットの一例を示す図である。
【図４】従来のフラッシュメモリへの書き出し時に取られていた処理フローの一例を示す図である。
【図５】本実施形態におけるフラッシュメモリへの書き出し時の処理フローの一例を示す図である。
【図６】本実施形態における未使用ブロックが存在しない場合の処理フローの一部を示す図である。
【図７】本実施形態における再利用可能か否かのチェックをするための処理フローの一例を示した図である。
【符号の説明】
【００５０】
１００・・・ＣＰＵ、１０１・・・ＲＡＭ、１０２・・・内部バス、１０３・・・入出力部、１０４・・・メモリ、３００・・・冗長データ、３０１・・・フラグ、３０２・・・論理ブロック番号、３０３・・・データ領域のＥＣＣデータ、３０４・・・リザーブ領域
【図１】
2007179257.tif 000003
【図２】
2007179257.tif 000004
【図３】
2007179257.tif 000005
【図４】
2007179257.tif 000006
【図５】
2007179257.tif 000007
【図６】
2007179257.tif 000008
【図７】
2007179257.tif 000009