(57)【特許請求の範囲】
【請求項１】
書き換え可能な不揮発性メモリを搭載したメモリカードにおいて、
上記不揮発性メモリのデータ書き込み状態を管理するブロック使用管理テーブルと、
上記不揮発性メモリへブロック単位でデータを書き込む手段と、
上記データの書き込みが正常に実行されたか否かを判定し、データの書き込みが正常に実行された場合に上記ブロック使用管理テーブルを更新し、対応するブロックへの再書き込みを禁止する手段と、
上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データが登録されるエラー管理テーブルと、
ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択しデータの書き込みをリトライする手段と、
上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする手段と
を具備することを特徴とするメモリカード。
【請求項２】
不揮発性メモリへデータを書き込む第１のステップと、
データの書き込みが正常に実行されたか否かを判定する第２のステップと、
上記データの書き込みが正常に実行された場合にブロック使用管理テーブルを更新し、そのブロックへの再書き込みを禁止する第３のステップと、
上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データをエラー管理テーブルに登録する第４のステップと、
ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択してリトライする第５のステップと、
上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする第６のステップと
を具備することを特徴とする不揮発性メモリのデータ書き込み方法。
【請求項３】
不揮発性メモリのデータ書き込み状態を管理するブロック使用管理テーブルと、
上記不揮発性メモリへブロック単位でデータを書き込む手段と、
上記データの書き込みが正常に実行されたか否かを判定し、データの書き込みが正常に実行された場合に上記ブロック使用管理テーブルを更新し、対応するブロックへの再書き込みを禁止する手段と、
上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データが登録されるエラー管理テーブルと、
ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択しデータの書き込みをリトライする手段と、
上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする手段と
を具備することを特徴とする不揮発性メモリ。
【請求項４】
書き換え可能な不揮発性メモリにデータを書き込む装置において、
上記不揮発性メモリのデータ書き込み状態を管理するブロック使用管理テーブルと、
上記不揮発性メモリへブロック単位でデータを書き込む手段と、
上記データの書き込みが正常に実行されたか否かを判定し、データの書き込みが正常に実行された場合に上記ブロック使用管理テーブルを更新し、対応するブロックへの再書き込みを禁止する手段と、
上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データが登録されるエラー管理テーブルと、
ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択しデータの書き込みをリトライする手段と、
上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする手段と
を具備することを特徴とするデータ書き込み装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリへのデータ書き込み時のエラーにより不良ブロックを判定し、続く書き込み処理が正しく実行されたことを確認して先行のブロックを不良ブロックとして管理するメモリカード、不揮発性メモリ、不揮発性メモリのデータ書込み方法及びデータ書き込み装置に関する。
【背景技術】
【０００２】
近年、画像データや音楽データに代表される種々のデジタル情報を保存する記憶装置として、電源がオフされても保存情報が消失する虞のない書き換え可能な不揮発性メモリを搭載したメモリカードが広まってきている。
【０００３】
書き換え可能な不揮発性メモリの代表的なものにＮＡＮＤ型フフラッシュメモリがある。この種のフラッシュメモリはブロック単位で管理され、未使用のブロックに対しては管理データとして“１”が書き込まれている。そして、データの書き込みを行なった場合に、管理データを“１”から“０”に書き換えている。また、データの書き込みを行なった際に書き込みが正常に行なわれたか否かを判別し、エラーが発生すると、そのブロックの管理データを“１”から“０”に書き換えている。また、書き込みエラーが発生した場合は、不揮発性メモリの異なるブロックに対してリトライ処理を行なう。このリトライ処理において、エラーが発生すれば、そのブロックの管理データを“０”に書き換える（例えば、特許文献１参照）。
【０００４】
上記のようにデータ書き込みの際にエラーが発生すると、その都度、対応するブロックの管理データを“１”から“０”に書き換えている。なお、不揮発性メモリにデータを書き込む動作として２つの状態があり、書き込み最小単位により完結するシングルライトと、これを複数回実施して完結するマルチプルライトがある。
【特許文献１】特開平６−３３２８０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のようにデータの書き込みを行なった際には、そのブロックが不良ブロックであるか否かを判定しているが、不良ブロックであるという判定は、メモリ自身の要因だけでなく、システム的な要因に起因する場合が存在する。従って、上記従来のようにデータ書き込みの際に不良ブロックであると判定された場合に、対応するブロックの管理データを“１”から“０”に書き換え、不良と判定されたブロックを直ちに利用できないようにすると、メモリ自身が不良でなくても、そのブロックは使用できないようになる。このため従来の不揮発性メモリのデータ書き込み方法では、メモリカードの寿命が短くなるという問題があった。
【０００６】
本発明は上記の課題を解決するためになされたもので、システム的な要因に起因する不良ブロックの判定に対しては、管理データの書き換えを阻止し、不揮発性メモリの寿命が短くなることを確実に防止し得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一実施態様によれば、書き換え可能な不揮発性メモリを搭載したメモリカードにおいて、上記不揮発性メモリのデータ書き込み状態を管理するブロック使用管理テーブルと、上記不揮発性メモリへブロック単位でデータを書き込む手段と、上記データの書き込みが正常に実行されたか否かを判定し、データの書き込みが正常に実行された場合に上記ブロック使用管理テーブルを更新し、対応するブロックへの再書き込みを禁止する手段と、上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データが登録されるエラー管理テーブルと、ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択しデータの書き込みをリトライする手段と、上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする手段とを具備するものである。
【０００８】
本発明の他の実施態様によれば、不揮発性メモリへデータを書き込む第１のステップと、データの書き込みが正常に実行されたか否かを判定する第２のステップと、上記データの書き込みが正常に実行された場合にブロック使用管理テーブルを更新し、そのブロックへの再書き込みを禁止する第３のステップと、上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データをエラー管理テーブルに登録する第４のステップと、ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択してリトライする第５のステップと、上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする第６のステップとを具備する不揮発性メモリのデータ書き込み方法が提供される。
【０００９】
本発明の他の実施態様によれば、不揮発性メモリのデータ書き込み状態を管理するブロック使用管理テーブルと、上記不揮発性メモリへブロック単位でデータを書き込む手段と、上記データの書き込みが正常に実行されたか否かを判定し、データの書き込みが正常に実行された場合に上記ブロック使用管理テーブルを更新し、対応するブロックへの再書き込みを禁止する手段と、上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データが登録されるエラー管理テーブルと、ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択しデータの書き込みをリトライする手段と、上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする手段とを具備する不揮発性メモリが提供される。
【００１０】
本発明の他の実施態様によれば、書き換え可能な不揮発性メモリにデータを書き込む装置において、上記不揮発性メモリのデータ書き込み状態を管理するブロック使用管理テーブルと、上記不揮発性メモリへブロック単位でデータを書き込む手段と、上記データの書き込みが正常に実行されたか否かを判定し、データの書き込みが正常に実行された場合に上記ブロック使用管理テーブルを更新し、対応するブロックへの再書き込みを禁止する手段と、上記データの書き込みが正常に実行されなかった場合に当該ブロックについてエラー管理データが登録されるエラー管理テーブルと、ホストデバイスからの再書き込み要求により上記エラー管理テーブルを参照して空きブロックを選択しデータの書き込みをリトライする手段と、上記リトライによってデータの書き込みが正常に実行された場合に上記エラー管理テーブルに登録されているエラー管理データをクリアする手段とを具備する。
【発明の効果】
【００１１】
本発明によれば、システム的な要因に起因する不良ブロックの判定に対しては、管理データの書き換えを阻止し、不揮発性メモリの寿命が短くなることを確実に防止し得る。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の一実施形態を説明する。図１は本発明の一実施形態に係るメモリカードの全体構成を示すブロック図である。
【００１３】
図１のメモリカードは、例えばパーソナルコンピュータ、電子カメラ、ゲーム機を始めとする各種電子機器に装着して使用されるもので、ホストインタフェース１１と、コントローラ１２と、ＲＯＭ１３と、ＲＡＭ１４と、書き換え可能な不揮発性メモリ、例えばフラッシュメモリ１５とを備えている。
【００１４】
ホストインタフェース１１は、上記メモリカードが装着される電子機器本体（以下、ホストデバイスと称する）とのインタフェースをなす。コントローラ１２は、カード全体の制御を司るもので、マイクロプロセッサ（ＭＰＵ）１２１と、レジスタ（ＲＥＧ）１２２とを有している。上記マイクロプロセッサ１２１は、ホストインタフェース１１を介して受信されるコマンドをＲＯＭ１３に格納されている制御プログラム（ファームウェア）に従って解釈して実行する。
【００１５】
ＲＯＭ１３は、読み出し専用の不揮発性メモリである。ＲＯＭ１３は、上記制御プログラム、及び管理用の固定データ等を予め格納するのに用いられる。ＲＡＭ１４は、揮発性メモリであり、コントローラ１２の作業用領域１４１の他、ブロック使用管理テーブル１４２、エラー管理テーブル１４３、書き込みデータバッファ１４４等が設けられる。上記ブロック使用管理テーブル１４２は、図２に示すようにフラッシュメモリ１５の各ブロックに対し、それぞれ未使用状態と使用又は不良ブロック状態を記憶してブロックの使用状態を管理する。上記ブロック使用管理テーブル１４２は、図３（ａ）に示すようにフラッシュメモリ１５の各ブロックが未使用の場合には、各ブロックに対して“１”が書き込まれている。そして、ブロック単位でデータの書き込みが行なわれると、図３（ｂ）に示すように“１”が“０”に書き換えられ、そのブロックが使用状態であることが示される。また、不良ブロックに対しても“０”が書き込まれ、その後の使用が禁止される。
【００１６】
また、上記エラー管理テーブル１４３は、マルチプルライト処理の場合に使用されるもので、データ書き込みの際にエラーが発生すると、不良データとして登録される。
【００１７】
フラッシュメモリ１５の各ブロックは、一定サイズの複数のセクタから構成される。また、フラッシュメモリ１５の領域は、システム管理情報等が保存される管理領域１５１と、画像データ、音楽データ等のデジタルコンテンツを保存するデータ領域１５２からなっている。管理領域１５１には、データ領域１５２に保存されているディジタルコンテンツを使用するのに必要な、コンテンツ復号キー、コピー制御情報、移動制御情報等の重要な情報が保存されている。
【００１８】
次に上記メモリカードに対するデータ書き込み処理について説明する。最初に、シングルライト処理について、図４に示すフローチャートを参照して説明する。コントローラ１２は、ホストデバイスからの指令に従ってシングルライト処理を行なう場合、まず、書き込みアドレスを計算する（ステップＡ１）。すなわち、ブロック使用管理テーブル１４２に書き込まれているブロック使用管理データを参照して書き込み可能な領域を見つける。この場合、不良ブロックは使用済みとして管理されているので、再度利用することはない。
【００１９】
そして、上記書き込みアドレスに対してデータの書き込みを行なう（ステップＡ２）。この場合、ホストデバイスから送られてくるデータをＲＡＭ１４の書き込みデータバッファ１４４にブロック単位で保持し、上記書き込みアドレスに対して書き込みを行なう。その後、ライトステータス、つまり、データ書き込みの処理ステータスが正常か否かを判別する（ステップＡ３）。
【００２０】
上記ステップＡ３で、異常ステータスが見つかっても不良ブロックをブロック使用管理テーブル１４２に直ちに登録することはしない。すなわち、上記ステップＡ３で、ライトステータスが異常であると判定された場合には、先行状態が異常であるとし（ステップＡ４）、リトライを継続するか終了するかをリトライ回数から判別する（ステップＡ５）。このステップＡ５では、予め設定されたリトライ回数に達したか否かによってリトライを継続するか終了するかを判別し、リトライ回数が設定値に達していなければ、ステップＡ１に戻り、異なるブロックを見つけてデータの再書き込みを行なう。上記ステップＡ５で、リトライ回数が設定値に達したと判定された場合には、ステップＡ６に進んでエラー終了とし、シングルライト処理を終了する。
【００２１】
また、上記ステップＡ３でライトステータスが正常であると判定された場合には、上記のデータ書き込みがリトライ処理であるか否かを判別し（ステップＡ７）、リトライ処理であった場合には、先行状態、つまり、前回の書き込みが正常か否かを判別する（ステップＡ８）。書き込み異常の場合には、不良データと判断し、前回のライト時に利用したアドレスを不良ブロックとし（ステップＡ９）、ステップＡ１０で先行状態を正常にした後、ブロック使用管理テーブル１４２を更新する（ステップＡ１１）。例えば図３（ａ）に示すようにブロック使用管理テーブル１４２が全て未使用状態となっているとき、最初のデータ書き込みがエラーとなってリトライ処理を行ない、その結果、データを正しく書けた場合には、図３（ｂ）に示すように、そのブロックに対する管理データを“０”に書き換えて使用状態とすると共に、その１つ前に書き込みを行なったブロックを不良ブロックとして“０”に書き換える。
【００２２】
また、上記のようにリトライ処理によってデータの書き込みが正常に行なわれた場合において、図３（ｃ）に示すように１つ前のブロックが既に使用状態となっており、その前のブロックが前回書き込みを行なったブロックであった場合には、図３（ｄ）に示すように正常に書き込みができた今回のブロックに“０”を書き込むと共に、前回書き込みを行なった２つ前のブロックを不良ブロックとして“０”を書き込む。
【００２３】
また、上記ステップＡ７でリトライ処理ではないと判定された場合、あるいはステップＡ８で先行状態が正常であると判定された場合には、ステップＡ１０で先行状態を正常にした後、ブロック使用管理テーブル１４２を更新する（ステップＡ１１）。この場合には、データの書き込みが正常に行なわれたブロックに対して“０”を書き込んで使用状態とする。
【００２４】
その後、正常終了（ステップＡ１２）としてシングルライト処理を終了する。
【００２５】
上記のようにシングルライトにおいては、データ書き込みを行なった際にエラーが発生してもブロック使用管理テーブル１４２に不良ブロックの登録は行なわず、その後、リトライ処理によって正常に処理を終了した場合に、前回の書き込み時に利用したアドレスを不良ブロックとしてブロック使用管理テーブル１４２を更新するようにしているので、メモリ自身の要因によってエラーが発生した場合のみブロック使用管理テーブル１４２が更新される。従って、システム的な要因によるエラーの場合には、ブロック使用管理テーブル１４２が更新されることはなく、リトライを繰り返して実施した場合においても、再書き込み実施試行分の不良ブロック判定を回避することが可能であり、不揮発性メモリの寿命が短くなることを確実に防止することができる。
【００２６】
次に、マルチプルライトによるデータ書き込み処理について図５に示すフローチャートを参照して説明する。
【００２７】
ホストデバイスからマルチプルライトによる書き込みが指示されると、コントローラ１２は、まず、ブロック使用管理テーブル１４２に書き込まれている管理データを利用して、フラッシュメモリ１５の書き込み可能な空きブロックを選択し（ステップＢ１）、この空きブロックに対してデータの書き込みを行なう（ステップＢ２）。この場合、ホストデバイスから送られてくるデータがＲＡＭ１４の書き込みデータバッファ１４４に順次書き込まれ、このデータが上記空きブロックに書き込まれる。その後、ライトステータス、つまり、データ書き込みの処理ステータスが正常か否かを判別する（ステップＢ３）。
【００２８】
上記ステップＢ３で、ライトステータスが異常であると判定された場合には、先行状態が異常であるとし、エラーデータをＲＡＭ１４のエラー管理テーブル１４３に登録する（ステップＢ４）。書き込みエラーが発生した場合、コントローラ１２からホストインタフェース１１を介してホストデバイスに書き込みエラーの発生を示すデータが送られる。これによりホストデバイスから再書き込み要求が指示される（ステップＢ５）。
【００２９】
コントローラ１２は、再書き込み要求により、エラー管理テーブル１４３を参照して他の空きブロックの選択動作を行ない（ステップＢ６）、その空きブロックに対してリトライ処理を行なう（ステップＢ７）。すなわち、ホストデバイスから送られてくるデータを書き込みデータバッファ１４４に順次保持し、上空きブロックへの書き込みを行なう。
【００３０】
そして、上記リトライ処理に対してデータの書き込みが正常に行なわれたか否かを判別し（ステップＢ８）、書き込み異常が発生した場合にはステップＢ５に戻り、上記した処理を繰り返して実行する。
【００３１】
また、上記ステップＢ８で正常に書き込み処理を終了したと判定された場合には、上記エラー管理テーブル１４３に登録されているエラー管理データをクリアすると共にブロック使用管理テーブル１４２を更新し（ステップＢ９）、正常終了（ステップＢ１０）としてマルチプルライト処理を終了する。
【００３２】
マルチプルライト時にエラーが発生した場合、ＲＡＭ１４の書き込みデータバッファ１４４には書き込みデータの一部しか保持されていない。このため書き込みデータバッファ１４４の保持データに基づくリトライを実施することができず、上記シングルライトの場合のようにリトライによって正常に書き込みができたという行為によって１つ前に書き込みを行なったブロックを不良ブロックであると判断することはできない。また、ホストデバイスからの書き込み再要求によって再度不良ブロック化できない事態が考えられる。
【００３３】
このため本発明によるマルチプルライト処理においては、上記したように書き込みエラーを発生したブロックについてエラー管理テーブル１４３に登録し、ブロック使用管理テーブル１４２とは別管理にする。その後、ホストデバイスからの再書き込み要求により、上記エラー管理テーブル１４３に登録されたエラー管理データに基づいて空きブロックを選択することでリトライ動作を可能としている。そして、リトライ動作が正しく実施されたことで上記エラー管理テーブル１４３に登録されているエラー管理データをクリアする。
【００３４】
上記マルチプルライトの場合には、エラーが発生した場合、そのエラーがメモリ自身の要因であるか、システム的な要因に起因するものか判断できないので、ブロック使用管理テーブル１４２の更新は行なわない。このようにエラーが発生したと判断されたブロックをそのまま未使用領域として残しておいても、その後、図５で説明したシングルライト処理において、そのエラーがメモリ自身の要因であるか、システム的な要因に起因するものかを判断できるので問題はない。上記したようにマルチプルライト処理の場合には、エラーが発生してもブロック使用管理テーブル１４２が更新されることはなく、不揮発性メモリの寿命が短くなることを確実に防止することができる。
【００３５】
なお、上記実施形態では、不揮発性メモリを備えたメモリカードに実施した場合について説明したが、その他、例えばコンピュータが内蔵する不揮発性メモリに対しても、上記実施形態と同様にして実施し得るものである。
【００３６】
以上詳記したように本発明によれば、シングルライト処理により不揮発性メモリへデータ書き込みを行なった際にエラーが発生しても不良ブロックを直ちにブロック使用管理テーブルに登録することはせず、その後、リトライ処理によって正常に書き込みができた場合に、前回の書き込み時に利用したアドレスを不良ブロックとしてブロック使用管理テーブルを更新するようにしているので、メモリ自身の要因によってエラーが発生した場合のみブロック使用管理テーブルが更新される。従って、システム的な要因によるエラーの場合には、ブロック使用管理テーブルが更新されることはなく、不揮発性メモリの寿命が短くなることを確実に防止することができる。また、マルチプルライト処理においては、書き込みエラーが発生した場合に、エラーデータをエラー管理テーブルに登録し、ホストデバイスからの再書き込み要求により上記エラー管理テーブルに登録されたエラー管理データに基づいて空きブロックを選択してリトライ処理を行ない、リトライ動作が正しく実施されたことでエラー管理テーブルをクリアするようにしたので、システム的な要因によるエラーによってブロック使用管理テーブルが更新されることはなく、不揮発性メモリを効率的に使用して長寿命化を図ることができる。
【００３７】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００３８】
【図１】本発明の一実施形態に係るメモリカードの全体構成を示すブロック図。
【図２】同実施形態におけるブロック使用管理テーブルの構成例を示す図。
【図３】同実施形態におけるブロック使用管理テーブルの管理データ例を示す図。
【図４】同実施形態におけるシングルライト処理の動作を示すフローチャート。
【図５】同実施形態におけるマルチプルライト処理の動作を示すフローチャート。
【符号の説明】
【００３９】
１１…ホストインタフェース、１２…コントローラ、１２１…マイクロプロセッサ（ＭＰＵ）、１２２…レジスタ（ＲＥＧ）、１３…ＲＯＭ、１４…ＲＡＭ、１４１…作業用領域、１４２…ブロック使用管理テーブル、１４３…エラー管理テーブル、１４４…書き込みデータバッファ、１５…フラッシュメモリ、１５１…管理領域
【図１】
0004602387.tif 000002
【図２】
0004602387.tif 000003
【図３】
0004602387.tif 000004
【図４】
0004602387.tif 000005
【図５】
0004602387.tif 000006