(57)【特許請求の範囲】
【請求項１】
データ記憶用の複数のブロックを有するフラッシュＥＥＰＲＯＭを内蔵し、データ処理装置に着脱自在に装着されるフラッシュメモリカードのデータ管理方法において、
前記各ブロックはページ毎にデータ記憶領域および冗長領域を有し、
ブロックイレーズ処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数の値が所定のしきい値を越えているか否かを検出するステップと、
各ページに対するアクセス処理を実行する度、そのアクセス処理において発生されたエラー内容を示すページステータス情報を、該当するページの冗長領域に書き込むステップであって、前記イレーズ回数の値が所定のしきい値を越えていることが検出された際、イレーズ回数がイレーズ限界回数を越えたことを示すイレーズ回数オーバーフラグを前記ページステータス情報として該当するブロックの所定ページの冗長領域に書き込むステップとを具備することを特徴とするフラッシュメモリカードのデータ管理方法。
【請求項２】
データ記憶用の複数のブロックを有するデータブロック領域およびスペアブロックを有するスペアブロック領域とを含むフラッシュＥＥＰＲＯＭを内蔵し、データ処理装置に着脱自在に装着されるフラッシュメモリカードのデータ管理方法において、
前記各ブロックはページ毎にデータ記憶領域および冗長領域を有し、その冗長領域には、対応するページに対するアクセス処理において発生されたエラーの内容を管理するためのページステータス情報を記憶する領域が割り当てられており、
ブロックイレーズ処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数の値が所定のしきい値を越えているか否かを検出するイレーズ回数検出ステップと、
イレーズ回数の値が所定のしきい値を越えていることが検出された際、イレーズ回数がイレーズ限界回数を越えたことを示すイレーズ回数オーバーフラグを、前記ページステータス情報の１つとして該当するブロックの所定ページの冗長領域に書き込むステップと、
ページライト、ページリード、またはブロックイレーズ処理でエラーが発生された時、その処理をリトライするステップと、
このリトライ処理が正常実行されない時、または前記イレーズ回数検出ステップによってイレーズ回数がしきい値を越えていることが検出された時に、該当するブロックを不良ブロックとし、その不良ブロックを前記スペアブロックによって代替するステップとを具備することを特徴とするフラッシュメモリカードのデータ管理方法。
【請求項３】
ページライト処理でエラーが発生した際、そのエラー発生を示すプログラムエラーフラグを、前記ページステータス情報の１つとして該当するページの冗長領域に書き込むステップをさらに具備することを特徴とする請求項２記載のフラッシュメモリカードのデータ管理方法。
【請求項４】
ブロックイレーズ処理でエラーが発生した際、そのエラー発生を示すイレーズエラーフラグを、前記ページステータス情報の１つとして該当する消去ブロックの所定ページの冗長領域に書き込むステップをさらに具備することを特徴とする請求項２記載のフラッシュメモリカードのデータ管理方法。
【請求項５】
リードベリファイ処理でエラーが発生した際、そのエラー発生を示すベリファイエラーフラグを、前記ページステータス情報の１つとして該当するページの冗長領域に書き込むステップをさらに具備することを特徴とする請求項２記載のフラッシュメモリカードのデータ管理方法。
【請求項６】
データ記憶用の複数のブロックを有するデータブロック領域およびスペアブロックを有するスペアブロック領域とを含むフラッシュＥＥＰＲＯＭを内蔵し、データ処理装置に着脱自在に装着されるフラッシュメモリカードのデータ管理方法において、
前記各ブロックはページ毎にデータ記憶領域および冗長領域を有し、その冗長領域には、対応するページに対するアクセス処理において発生されたエラーの内容を管理するためのページステータス情報を記憶する領域が割り当てられており、
ブロックイレーズ処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数が所定の回数を越えているか否かを検出するイレーズ回数検出ステップと、
ページライト、ページリードベリファイ、またはブロックイレーズ処理でエラーが発生された時、それらエラーを示すプログラムエラーフラグ、ベリファイエラーフラグ、またはイレーズエラーフラグを前記ページステータス情報の１つとして該当するページの冗長領域に書き込むステップと、
ページライト、ページリードベリファイ、またはブロックイレーズ処理でエラーが発生された時、その処理をリトライするステップと、
このリトライ処理が正常実行されない時、または前記イレーズ回数検出ステップによってイレーズ回数が所定のイレーズ回数を越えていることが検出された時に、該当するブロックを不良ブロックとし、その不良ブロックを前記スペアブロックによって代替するステップと、
前記イレーズ回数検出ステップによってイレーズ回数が所定のイレーズ回数を越えていることが検出された時、イレーズ回数を越えたことを示すイレーズ回数オーバーフラグを、前記ページステータス情報の１つとして前記不良ブロックの所定ページの冗長領域に書き込むステップとを具備することを特徴とするフラッシュメモリカードのデータ管理方法。
【請求項７】
データ記憶用の複数のブロックを有するデータブロック領域とスペアブロックを有するスペアブロック領域とを含むフラッシュＥＥＰＲＯＭを内蔵したフラッシュメモリカードが着脱自在に装着されるカードスロットを有し、そのフラッシュメモリカードをアクセス制御可能なデータ処理装置において、
前記フラッシュＥＥＰＲＯＭの各ブロックはページ毎にデータ記憶領域および冗長領域を有し、その冗長領域には、対応するページに対するアクセス処理において発生されたエラーの内容を管理するためのページステータス情報を記憶する領域が割り当てられており、
上位プログラムからの要求に応じて、ページリード、ページライト、またはブロックイレーズを実行させるためのコマンドを前記フラッシュメモリカードに発行して、前記フラッシュメモリカードをアクセス制御する手段と、
ブロックイレーズのためのアクセス処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数の値が所定のしきい値を越えているか否かを検出するイレーズ回数検出手段と、
イレーズ回数の値が所定のしきい値を越えていることが検出された際、イレーズ回数がイレーズ限界回数を越えたことを示すイレーズ回数オーバーフラグを、前記ページステータス情報の１つとして該当するブロックの所定ページの冗長領域に書き込む手段と、
ページライト、ページリード、またはブロックイレーズのためのアクセス処理でエラーが発生された時、その処理をリトライする手段と、
このリトライ処理が正常実行されない時、または前記イレーズ回数検出手段によってイレーズ回数がしきい値を越えていることが検出された時に、該当するブロックを不良ブロックとし、その不良ブロックを前記スペアブロックによって代替する手段とを具備することを特徴とするデータ処理装置。
【請求項８】
データ記憶用の複数のブロックを有するデータブロック領域とスペアブロックを有するスペアブロック領域とを含むフラッシュＥＥＰＲＯＭを内蔵したフラッシュメモリカードが着脱自在に装着されるカードスロットを有し、そのフラッシュメモリカードをアクセス制御可能なデータ処理装置において、
前記各ブロックはページ毎にデータ記憶領域および冗長領域を有し、その冗長領域には、対応するページに対するアクセス処理において発生されたエラーの内容を管理するためのページステータス情報を記憶する領域が割り当てられており、
上位プログラムからの要求に応じて、ページリード、ページライト、またはブロックイレーズを実行させるためのコマンドを前記フラッシュメモリカードに発行して、前記フラッシュメモリカードをアクセス制御する手段と、
ブロックイレーズのためのアクセス処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数が所定の回数を越えているか否かを検出するイレーズ回数検出手段と、
ページライト、ページリードベリファイ、またはブロックイレーズのアクセス処理でエラーが発生された時、それらエラーを示すプログラムエラーフラグ、ベリファイエラーフラグ、またはイレーズエラーフラグを前記ページステータス情報の１つとして該当するページの冗長領域に書き込む手段と、
ページライト、ページリードベリファイ、またはブロックイレーズのアクセス処理でエラーが発生された時、その処理をリトライする手段と、
このリトライ処理が正常実行されない時、または前記イレーズ回数検出手段によってイレーズ回数が所定のイレーズ回数を越えていることが検出された時に、該当するブロックを不良ブロックとし、その不良ブロックを前記スペアブロックによって代替する手段と、
前記イレーズ回数検出手段によってイレーズ回数が所定のイレーズ回数を越えていることが検出された時、イレーズ回数を越えたことを示すイレーズ回数オーバーフラグを、前記ページステータス情報の１つとして前記不良ブロックの所定ページの冗長領域に書き込む手段とを具備することを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、フラッシュＥＥＰＲＯＭから構成されるコモンメモリと、カード属性情報を格納するアトリビュートメモリとを内蔵し、データ処理装置に着脱自在に装着されるフラッシュメモリカードのデータ管理方法、およびそのデータ管理方法を使用したデータ処理装置に関する。
【０００２】
【従来の技術】
従来、パーソナルコンピュータやワークステーション等のデータ処理装置の外部記憶装置としては、通常、ハードディスク装置やフロッピーディスク装置などのディスク装置が用いられていた。
【０００３】
最近では、それらディスク装置に代わる外部記憶装置として、フラッシュＥＥＰＲＯＭを内蔵したフラッシュメモリカードが使用されるようになり、カード装着用のスロットが標準装備されたパーソナルコンピュータや、パーソナルコンピュータに外付けされて使用されるメモリカードリーダ／ライタなどの周辺装置も開発されている。
【０００４】
フラッシュメモリカードは携帯性に富んでおり、またフロッピーディスクよりも大きな容量のファイルを取り扱う事ができる。このため、特にノートブック型のポータブルコンピュータ、ＰＤＡ、電子スチルカメラなどの外部記憶装置として有効である。
【０００５】
【発明が解決しようとする課題】
しかし、フラッシュメモリカードは、書き換え回数の制限という固有の問題を有しており、新たなメモリ技術の採用によって改良が続けられてはいるものの、外部記憶装置として使用する上では、データ記憶の信頼性の面で完全ではない。このため、フラッシュメモリカードにおいては、データのリード／ライトだけでなく、データの信頼性についてもソフトウェアで管理することが必要である。
【０００６】
この発明はこのような点に鑑みてなされたものであり、フラッシュＥＥＰＲＯＭのエラー発生状況に係る情報を効率良く管理できるようにして、フラッシュメモリカードの信頼性を十分に向上させることができるデータ管理方法およびそのデータ管理方法を使用したデータ処理装置を提供することを目的とする。
【０００７】
【課題を解決するための手段および作用】
この発明は、データ記憶用の複数のブロックを有するフラッシュＥＥＰＲＯＭを内蔵し、データ処理装置に着脱自在に装着されるフラッシュメモリカードのデータ管理方法において、前記各ブロックはページ毎にデータ記憶領域および冗長領域を有し、ブロックイレーズ処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数の値が所定のしきい値を越えているか否かを検出するステップと、各ページに対するアクセス処理を実行する度、そのアクセス処理において発生されたエラー内容を示すページステータス情報を、該当するページの冗長領域に書き込むステップであって、前記イレーズ回数の値が所定のしきい値を越えていることが検出された際、イレーズ回数がイレーズ限界回数を越えたことを示すイレーズ回数オーバーフラグを前記ページステータス情報として該当するブロックの所定ページの冗長領域に書き込むステップとを具備することを特徴とする。
【０００８】
このデータ管理方法によれば、フラッシュＥＥＰＲＯＭが持つ冗長部を使用して、データの信頼性向上に必要なページステータス情報が管理される。ページステータス情報は、フラッシュＥＥＰＲＯＭをアクセスした際に発生したエラーの内容を示すものであり、これによって各ページのデータ領域の現在の状態および過去のエラーの内容を認識することができるようになり、フラッシュメモリカードの信頼性を高めることができる。
【０００９】
特に、各ぺージの冗長領域を使用してページステータス情報を管理しているので、アクセス対象のページの状態を即座に認識することができる。
ページステータス情報としては、ブロックイレーズ処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数の値が所定のしきい値を越えているか否かを検出することで、イレーズ回数が所定の回数を越えたことを示すイレーズ回数オーバーフラグを管理することが好ましい。
【００１０】
また、この発明は、データ記憶用の複数のブロックを有するデータブロック領域およびスペアブロックを有するスペアブロック領域とを含むフラッシュＥＥＰＲＯＭを内蔵し、データ処理装置に着脱自在に装着されるフラッシュメモリカードのデータ管理方法において、前記各ブロックはページ毎にデータ記憶領域および冗長領域を有し、その冗長領域には、対応するページに対するアクセス処理において発生されたエラーの内容を管理するためのページステータス情報を記憶する領域が割り当てられており、ブロックイレーズ処理が実行される度、該当するブロックのイレーズ回数をカウントアップし、そのカウントアップされたイレーズ回数の値が所定のしきい値を越えているか否かを検出するイレーズ回数検出ステップと、イレーズ回数の値が所定のしきい値を越えていることが検出された際、イレーズ回数がイレーズ限界回数を越えたことを示すイレーズ回数オーバーフラグを、前記ページステータス情報の１つとして該当するブロックの所定ページの冗長領域に書き込むステップと、ページライト、ページリード、またはブロックイレーズ処理でエラーが発生された時、その処理をリトライするステップと、このリトライ処理が正常実行されない時、または前記イレーズ回数検出ステップによってイレーズ回数がしきい値を越えていることが検出された時に、該当するブロックを不良ブロックとし、その不良ブロックを前記スペアブロックによって代替するステップとを具備することを特徴とする。
【００１１】
このデータ管理方法においては、イレーズ回数が所定のしきい値に達すると、リトライエラーの発生を引き起こすブロック不良が検出された場合と同様にして、スペアブロックを利用したブロック代替が行われる。
【００１２】
この場合、そのブロックの所定ページの冗長領域にはイレーズ回数オーバーフラグが設定される。このため、そのイレーズ回数オーバーフラグを参照することにより、代替された原因がイレーズ回数オーバーによるものか否かを検出することができる。
【００１３】
イレーズ回数オーバーが原因で不良ブロックとされたブロックは、実際には何等不良が発生されていない。したがって、例えば不良ブロック数が増え、代替対象のスペアブロックが不足した場合などには、イレーズ回数オーバーフラグがセットされている不良ブロックを検出し、それを正常なブロックとして利用するなどの運用形態をとることが可能となる。これにより、結果としてフラッシュメモリカードの寿命を延ばすことができる。
【００１４】
また、イレーズ回数オーバーフラグに加え、発生したエラーに応じてプログラムエラーフラグ、イレーズエラーフラグ、ベリファイエラーフラグなどを冗長領域にセットすることが好ましい。これにより、ページの状態を管理することができるので、代替の原因をさらに詳しく調べることが可能となる。
【００１５】
【実施例】
以下、図面を参照して、この発明の実施例を説明する。
図１には、この発明の一実施例に係るデータ管理方法によって制御されるフラッシュメモリカード１１の構成とそのカード１１をアクセス制御するポータブルパーソナルコンピュータのハードウェアおよびソフトウェア構成が示されている。
【００１６】
フラッシュメモリカード１１はＪＥＩＤＡ／ＰＣＭＣＩＡに準拠した物理的および電気的仕様を持つＰＣカードであり、他のＰＣカード１２と同様に、パーソナルコンピュータのＰＣカードホストアダプタ１３が提供するカードスロットに取り外し自在に装着される。
【００１７】
フラッシュメモリカード１１の認識およびアクセスは、パーソナルコンピュータのシステムメモリにロードされて実行されるフラッシュメモリカードドライバ１４、カードサービス１５、ソケットサービス１６、およびメモリテクノロジトライバ１７などによって制御される。
【００１８】
フラッシュメモリカードドライバ１４は、フラッシュメモリカード１１に対応したデバイスドライバプログラムであり、ＪＥＩＤＡ／ＰＣＭＣＩＡで規定されているクライアントドライバとして使用される。このフラッシュメモリカードドライバ１４は、オペレーティングシステム１８やアプリケーションプログラム１９からのコマンドをフラッシュメモリカード１１用のコマンド（ページライトコマンド、ページリードコマンド、ブロックイレーズコマンドなど）に変換して、フラッシュメモリカード１１をアククセス制御する。
【００１９】
また、フラッシュメモリカードドライバ１４は、フラッシュメモリカード１１の信頼性を向上させるために、フラッシュメモリカード１１に対するアクセスで発生したエラー履歴の管理機能や、不良ブロックの代替機能などを有している。
【００２０】
カードサービス１５、ソケットサービス１６、およびメモリテクノロジドライバ１７は、それぞれＪＥＩＤＡ／ＰＣＭＣＩＡによって規定されたドライバプログラム群であり、ＰＣカードのリソース管理、ＰＣカード認識などに利用される。
【００２１】
フラッシュメモリカード１１は、パーソナルコンピュータの２次記憶装置として利用されるＰＣカードであり、アトリビュートメモリ１１１と、コモンメモリ１１２を内蔵している。
【００２２】
アトリビュートメモリ１１１は、ＥＥＰＲＯＭなどから構成される不揮発性メモリであり、ここにはカード属性情報が格納されている。カード属性情報は、コモンメモリ１１２のメモリの種類、メモリサイズ、アクセス速度等の情報と、フラッシュメモリカード１１の用途（ディスクとして使用するか、メモリとして使用するかなど）に関する情報を含んでいる。
【００２３】
さらに、このフラッシュメモリカード１１においては、コモンメモリ１１２に使用されているＮＡＮＤ型フラッシュＥＥＰＲＯＭのイレーズ限界回数を示す値もカード属性情報の１つとしてアトリビュートメモリ１１１に格納されている。
【００２４】
コモンメモリ１２は、パーソナルコンピュータから供給されるユーザデータなどを記憶するためのメモリデバイスであり、複数のＮＡＮＤ型フラッシュＥＥＰＲＯＭから構成されている。
【００２５】
ＮＡＮＤ型フラッシュＥＥＰＲＯＭにおいては、書き込みや消去を行う際に扱うデータ量に最低単位が定まっており、消去はブロック単位で実行され、データ書き込み、および読み出しはページ単位で実行される。
【００２６】
この実施例では、ＮＡＮＤ型フラッシュＥＥＰＲＯＭとして、例えば、１６ＭビットのＮＡＮＤ型フラッシュＥＥＰＲＯＭが使用される場合を想定する。
この１６ＭビットのＮＡＮＤ型フラッシュＥＥＰＲＯＭは、図２に示されているように、メモリセルアレイ２１とデータレジスタ２２を備えている。メモリセルアレイ２１は、８Ｋ行×２６４列×８ビットのメモリ構成を有し、５１２個のブロックに分割されている。データ消去はこのブロック単位で実行することができる。各ブロックは１６ページ（行）から構成されており、各ページは、２５６バイトのデータ記憶領域と８バイトの冗長領域を備えている。
【００２７】
データの書込みと読み出しは、２５６＋８バイトのデータレジスタ２２を介して、ページ単位（２５６＋８バイト）で実行される。また、指定したページ内の冗長領域（８バイト）だけをリード／ライトアクセスすることもできる。
【００２８】
図１のコモンメモリ１２のデータ記憶空間は、多数のブロックを含むユーザデータ格納領域と、不良ブロック代替用のいくつかのスペアブロックを含むスペアブロック領域と、ブロック管理情報を記憶するブロックを含むブロック管理領域とに分割されている。
【００２９】
ブロック管理情報は、データ書き込みや消去などを正常に実行することができない不良ブロックの物理ブロック番号（物理ブロックアドレス）を管理する不良ブロック管理テーブル、およびスペアブロックの物理ブロック番号毎にそれが代替する不良ブロックの物理ブロック番号（物理ブロックアドレス）を管理するスペアブロック管理テーブルなどを含んでいる。
【００３０】
これら不良ブロック管理テーブルおよびスペアブロック管理テーブルの内容を書き換えることにより、不良ブロックをスペアブロックによって代替することができる。すなわち、エラー発生したブロックはその物理ブロック番号が不良ブロック管理テーブルに登録されることによって不良ブロックとして扱われる。アクセス対象のブロックが不良ブロックならば、スペアブロック管理テーブルが参照され、これによって代替先のスペアブロックが認識される。これによって、不良ブロックの代りに、スペアブロックがアクセスされる。
【００３１】
また、コモンメモリ１１２においては、各ページの８バイトの冗長領域は、ページステータス情報などの管理データの格納に利用されている。この管理データは、フラッシュメモリカード１１の信頼性を高めるために、前述のフラッシュメモリカードドライバ１４によって管理されている。
【００３２】
ページステータス情報は、対応するページに対するアクセスで発生したエラー内容を識別するための複数のフラグから構成されている。フラッシュメモリカードドライバ１４は、各冗長領域のフラグを参照することにより、ページ単位でエラー発生履歴などを認識することができる。
【００３３】
冗長領域を利用したコモンメモリ１１２のデータ管理はこの発明の特徴とする部分であり、以下、図３を参照して、コモンメモリ１１２上におけるユーザデータおよび管理データの記憶形式について具体的に説明する。
【００３４】
１ページのデータ領域は２５６バイトであるので、フラッシュメモリカード１１をフロッピーディスクまたはハードディスクとして使用する場合には、１セクタ分のユーザデータは図示のように連続する２ページに亙って記憶される。
【００３５】
各ブロックの先頭ページ（ページ０）の８バイトの冗長領域には、次のような管理データが格納される。
ページデータ用ＬＲＣ（２バイト）
イレーズカウンタ（４バイト）
イレーズカウンタ用ＬＲＣ（１バイト）
ページステータス情報（１バイト）
ページデータ用ＬＲＣは、水平冗長検査（ＬＲＣ）の手法を利用して、ページ０の２５６バイトのデータ領域に格納されたユーザデータ（セクタ０の上位２５６バイト）を計算することによって得られたエラー訂正符号である。
【００３６】
このページデータ用ＬＲＣは、データライト時に作成され、データリード時に参照される。フラッシュメモリカードドライバ１４は、その上位ソフトウェア（ＯＳ、アプリケーションプログラム）にデータを渡すときには、ページデータ用ＬＲＣを利用して、そのデータの有効性を確認する。
【００３７】
イレーズカウンタは、対応するブロックの消去回数（データ書換え回数）を示すものであり、各ブロックの先頭ページにのみ書き込まれる。イレーズカウンタのデータ長は４バイトであり、最大で４Ｇ（ギガ）回数分を表記できる。このように大きなデータ長を確保したのは、これからのフラッシュメモリデバイス技術の進歩により、消去限界回数が増えていくことを考慮したためである。
【００３８】
イレーズカウンタの値は、対応するブロックが消去される度に＋１カウントアップされる。イレーズカウンタの値がアトリビュートメモリ１１１に格納されている消去限界回数を越えると、そのブロックをスペアブロックによって代替するための処理がフラッシュメモリカードドライバ１４によって実行される。
【００３９】
アトリビュートメモリ１１１に格納されている消去限界回数の値は、マージンを確保するために、フラッシュＥＥＰＲＯＭ自体の実際の消去限界回数よりも小さな値に設定されている。
【００４０】
イレーズカウンタ用ＬＲＣは、その上位４バイトのイレーズカウンタから水平冗長検査（ＬＲＣ）によって計算されたエラー訂正符号である。イレーズカウンタは、ブロック全体のデータ管理に影響を及ぼす重要なデータであり、イレーズカウンタ用ＬＲＣはそのイレーズカウンタの信頼性を担保するために使用される。
【００４１】
ページステータス情報は対応するページの状態を示すものであり、その１バイト中の８ビットにそれぞれに意味を持たせることにより、対応するページの状態を８つのフラグによって表す。
【００４２】
ページ１〜ページ１６それぞれの冗長領域には、ページデータ用ＬＲＣとページステータス情報だけが格納され、イレーズカウンタおよびイレーズカウンタ用ＬＲＣは格納されない。
【００４３】
次に、ページステータス情報の詳細を説明する。ページステータス情報は８つのフラグを持つことができるが、この実施例では、次の５つのフラグが定義されている。
【００４４】
プログラムフラグ（ｂ７）
0003576625.tif 000002
イレーズ回数オーバーフラグ（ｂ６）
ｂ６＝０（イレーズ回数がしきい値を超過）
ベリファイエラーフラグ（ｂ２）
ｂ２＝０（リードベリファイエラー）
プログラムエラーフラグ（ｂ１）
ｂ１＝０（プログラムエラー）
イレーズエラーフラグ（ｂ０）
ｂ０＝０（イレーズエラー）
通常状態（工場出荷時も含む）においては、ページステータス情報の１バイトは、ＦＦｈ（８ビットがすべて１）で表現される。以下、各フラグの説明を行う。
【００４５】
プログラムフラグ（ｂ７）は、対応するページにデータを書き込む場合にブロックイレーズを実行する必要があるか否かを判断するために使用されるものであり、対応するページを含むブロックが消去済で、そのページに対する書き込みがまだ実行されてない状態（プログラムフラグ＝１）と、対応するページに対する書き込みが実行済みである状態（プログラムフラグ＝０）のいずれかを示す。
【００４６】
消去のみのコマンドが発行された直後か、初期状態である場合は、プログラムフラグは“１”である。この場合、書き込む際に再度消去する必要は無い。
イレーズ回数オーバーフラグ（ｂ６）は、対応するページを含むブロックの消去回数がアトリビュートメモリ１１１に記録されている消去限界回数の値を超過しているか否かを示すフラグである。
【００４７】
すなわち、フラッシュメモリカードデバイスドライバ１４は、ブロックイレーズを実行する度に対応するイレーズカウンタの値を＋１インクリメントし、そのインクリメントされたイレーズカウンタの値がアトリビュートメモリ１１１の消去限界回数を越えているか否かを調べる。越えていたならば、該当するブロックに含まれる全ページの冗長領域、またはそのブロックの先頭ページの冗長領域に、“０”のイレーズ回数オーバーフラグがセットされる。また、この場合には、そのブロックはその時点で劣化を起こして無くても不良ブロックとして扱われ、スペアブロックとの代替処理が行われる。フラッシュメモリカードデバイスドライバ１４は、各不良ブロックのイレーズ回数オーバーフラグを参照することにより、実際にエラーを起こしているブロックか、イレーズ回数オーバーによって不良として扱われているブロックかを識別することができる。
【００４８】
ベリファイエラーフラグ（ｂ２）は、対応するページに対するページリード時に実行されるリードベリファイ作業でエラーが発生したか否かを示すフラグである。
【００４９】
すなわち、フラッシュメモリカードデバイスドライバ１４は、指定されたページからデータをリードした後、そのリードデータの正当性を対応するページデータＬＲＣを利用して検証する。リードデータにエラーが検出されたならば、ベリファイエラーフラグが“０”にセットされる。この場合、ページリードはリトライされるが、リトライ処理で再度エラーが発生されると、そのページを含むブロックは不良ブロックとして扱われ、スペアブロックとの代替が行われる。ベリファイエラーが原因で代替された不良ブロックは、以降、使用されることはない。
【００５０】
プログラムエラーフラグ（ｂ１）は、対応するページに対するページライト（プログラム）実行後にそのライトデータの正当性を検証するために実行されるプログラムベリファイ作業でエラーが発生したか否かを示すフラグである。
【００５１】
すなわち、フラッシュメモリカードデバイスドライバ１４は、指定されたページにライトデータを書き込んだ後、そのページからデータを一旦リードして、ライトデータと比較する。不一致であれば、プログラムエラーフラグが“０”にセットされる。この場合、ページライトはリトライされるが、リトライ処理で再度エラーが発生されると、そのページを含むブロックは不良ブロックとして扱われ、スペアブロックと代替される。この代替処理では、不良ブロックの内容が読み出されてスペアブロックにコピーされた後、スペアブロックに対するライトデータの書き込みが実行される。プログラムエラーが原因で代替された不良ブロックは、以降、使用されることはない。
【００５２】
イレーズエラーフラグ（ｂ０）は、対応するページを含むブロックに対する消去動作が正常に実行されたか否かを示すフラグである。
すなわち、フラッシュメモリカードデバイスドライバ１４は、指定されたブロックに対するイレーズ処理を実行した後、イレーズ処理が正常に実行されたか否かを調べる。イレーズが失敗した場合には、そのブロックに含まれる全ページの冗長領域、またはそのブロックの先頭ページの冗長領域に、“０”のイレーズエラーフラグがセットされる。この場合、ブロックイレーズ処理はリトライされるが、リトライ処理で再度エラーが発生されると、そのブロックは不良ブロックとして扱われ、スペアブロックと代替される。イレーズエラーが原因で代替された不良ブロックは、以降、使用されることはない。
【００５３】
次に、図４〜図６のフローチャートを参照して、フラッシュメモリカードデバイスドライバ１４によって実行されるページリード、ページライト、およびブロックイレーズ処理について説明する。
【００５４】
まず、図４のフローチャートを参照して、ＯＳ１８やアプリケーションプログラム１９からリードコマンドが発行された場合に実行されるページリード処理の手順を説明する。
【００５５】
ＯＳ１８やアプリケーションプログラム１９からリード要求コマンドを受け取ると、フラッシュメモリカードデバイスドライバ１４は、ページリージコマンドを発行することによって、リード要求コマンドによって指定されたページに対するリードアクセスを開始し、そのページから２５６バイトのユーザデータと８バイトの管理データを同時にリードする（ステップＳ１０１）。
【００５６】
この後、フラッシュメモリカードデバイスドライバ１４は、リードされたページデータに含まれる２５６バイトのユーザデータに従ってＬＲＣを計算し（ステップＳ１０２）、その計算されたＬＲＣと、リードされたページデータに含まれるページデータ用ＬＲＣとの一致の有無に従ってページリードが成功したか否かを判断する（ステップＳ１０３）。
【００５７】
計算されたＬＲＣが、リードされたページデータに含まれるページデータ用ＬＲＣと一致したならば、ページリードが正常に実行されたことが確認され、リードされたページデータに含まれる２５６バイトのユーザデータが有効データとして、ＯＳ１８やアプリケーションプログラム１９に渡される。
【００５８】
一方、不一致であれば、ページリードが失敗したと認識され、ベリファイエラーフラグが“０”にセットされた後、ページリードがリトライされる（ステップＳ１０５）。このリトライで再度リード処理のエラーが発生されると、フラッシュメモリカードデバイスドライバ１４は、ブロック代替処理を行う（ステップＳ１０６）。
【００５９】
このブロック代替処理では、スペアブロック管理テーブルが書き替えられ、エラー発生したブロックの物理ブロック番号が所定のスペアブロックに対応するエントリに登録される。この後、フラッシュメモリカードデバイスドライバ１４は、エラー発生したブロックの物理ブロック番号を不良ブロック管理テーブルに登録してそれを不良ブロックにする（ステップＳ１０７）。
【００６０】
これらステップＳ１０６，Ｓ１０７の処理により、以降は、不良ブロックを指定するブロック番号がスペアブロックのブロック番号に変換され、不良ブロックの代りに、スペアブロックがアクセスされることになる。なお、ステップＳ１０６とＳ１０７はどちらを先に実行しても良い。
【００６１】
次に、図５のフローチャートを参照して、ＯＳ１８やアプリケーションプログラム１９からライトコマンドが発行された場合に実行されるページライト処理の手順を説明する。
【００６２】
ＯＳ１８やアプリケーションプログラム１９からライト要求コマンドを受け取ると、フラッシュメモリカードデバイスドライバ１４は、まず、冗長領域だけをリードする専用コマンドをフラッシュＥＥＰＲＯＭに発行して、ライトアクセス対象のページから８バイトの管理データをリードする（ステップＳ２０１）。次いで、フラッシュメモリカードデバイスドライバ１４は、リードした管理データに含まれるプログラムフラグを参照して、該当するページが消去済か否かを調べる（ステップＳ２０２）。
【００６３】
該当するページが消去済で無い（プログラムフラグ＝“１”）ならば、フラッシュメモリカードデバイスドライバ１４は、ステップＳ２０５以降のページライト処理の実行に先だって、次の処理を行う。
【００６４】
すなわち、フラッシュメモリカードデバイスドライバ１４は、まず、ライト対象のページを含むブロックに対するイレーズ処理を実行し（ステップＳ２０３）、その後、ステップＳ２０１でリードした管理データに含まれるイレーズカウンタの値を＋１カウントアップする（ステップＳ２０４）。
【００６５】
このようにしてプログラム可能状態になると、フラッシュメモリカードデバイスドライバ１４は、２５６バイトのライトデータからページデータ用ＬＲＣなどを計算によって求め、２５６バイトのライトデータと８バイトの管理データを含むページライトデータを生成する（ステップＳ２０５）。
【００６６】
次に、フラッシュメモリカードデバイスドライバ１４は、ページライトコマンドを発行してページライトデータのライトアクセスを実行し（ステップＳ２０６）、その後、書き込んだデータを即座にフラッシュＥＥＰＲＯＭから読み出して、それをページライトデータと比較するライトベリファイを実行する（ステップＳ２０７）。
【００６７】
リードデータとページライトデータが一致せず、ページライトが失敗したと判断されると、フラッシュメモリカードデバイスドライバ１４は、プログラムエラーフラグを“０”にセットした後、ページライト処理をリトライする（ステップＳ２０９）。このリトライで再度ページライト処理のエラーが発生されると、フラッシュメモリカードデバイスドライバ１４は、ブロック代替処理を行う（ステップＳ２１５）。
【００６８】
このブロック代替処理では、まず、エラー発生したブロックの記憶内容がそれを代替するスペアブロックにコピーされた後、ライトデータがスペアブロックに書き込まれる。この後、スペアブロック管理テーブルが書き替えられて、エラー発生したブロックの物理ブロック番号がそれを代替するスペアブロックのエントリに登録される。この後、フラッシュメモリカードデバイスドライバ１４は、エラー発生したブロックの物理ブロック番号を不良ブロック管理テーブルに登録してそれを不良ブロックにする（ステップＳ２１６）。
【００６９】
これらステップＳ２１５，Ｓ２１６の処理により、以降は、不良ブロックの代りに、スペアブロックがアクセスされることになる。なお、ステップＳ１０６とＳ１０７はどちらを先に実行しても良い。
【００７０】
リードデータとページライトデータが一致し、ページライトが成功したと判断された場合には（リトライ成功も含む）、フラッシュメモリカードデバイスドライバ１４は、ステップＳ２０４でカウントアップされたイレーズカウンタの値がアトリビュートメモリ１１１の消去限界回数を越えたか否かを調べる（ステップＳ２１０）。消去限界回数を越えている場合には、フラッシュメモリカードデバイスドライバ１４は、ブロック代替処理を行う（ステップＳ２１１）。
【００７１】
このブロック代替処理では、まず、消去限界回数を越えたブロックの記憶内容がそれを代替するスペアブロックにコピーされた後、スペアブロックの先頭ページのイレーズカウンタの値が初期値（＝０）に設定し直される。そして、スペアブロック管理テーブルが書き替えられて、消去限界回数を越えたブロックの物理ブロック番号がそれを代替するスペアブロックのエントリに登録される。
【００７２】
この後、フラッシュメモリカードデバイスドライバ１４は、エラー発生したブロックの物理ブロック番号を不良ブロック管理テーブルに登録してそれを不良ブロックにし（ステップＳ２１２）、次いで、不良ブロックの先頭ページに“０”のイレーズ回数オーバーフラグをセットする（ステップＳ２１３）。
【００７３】
これらステップＳ２１２，Ｓ２１２の処理により、以降は、不良ブロックの代りに、スペアブロックがアクセスされることになる。また、ステップＳ２１３の処理により、不良ブロックにされた原因（代替の原因）がイレーズ回数オーバーによるものであることを、知ることができる。
【００７４】
なお、ステップＳ２１１とＳ２１３はどちらを先に実行しても良い。また、ステップＳ２１０〜Ｓ２１３の処理は、ステップＳ２０２でプログラムフラグ＝１であることが検出された場合には実行する必要はない。これは、プログラムフラグ＝１ならば、イレーズカウンタのカウントアップは実行されないからである。
【００７５】
次に、図６のフローチャートを参照して、ＯＳ１８やアプリケーションプログラム１９からイレーズコマンドが発行された場合に実行されるブロックイレーズ処理の手順を説明する。
【００７６】
ＯＳ１８やアプリケーションプログラム１９からイレーズコマンドを受け取ると、フラッシュメモリカードデバイスドライバ１４は、まず、冗長領域だけをリードする専用コマンドをフラッシュＥＥＰＲＯＭに発行して、ブロックイレーズ対象の先頭ページから８バイトの管理データをリードする（ステップＳ３０１）。次いで、フラッシュメモリカードデバイスドライバ１４は、リードした管理データに含まれるプログラムフラグを参照して、該当するページがプログラムされている状態か否かを調べる（ステップＳ３０２）。
【００７７】
該当するページがプログラムされている（プログラムフラグ＝“０”）ならば、フラッシュメモリカードデバイスドライバ１４は、ブロックイレーズコマンドを発行して、イレーズ対象のブロックに対するイレーズ処理を実行し（ステップＳ３０３）、その後、ステップＳ３０１でリードした管理データに含まれるイレーズカウンタの値を＋１カウントアップする（ステップＳ３０４）。
【００７８】
次いで、フラッシュメモリカードデバイスドライバ１４は、例えば、イレーズしたブロックの記憶データが初期値（各ビット＝“１”）か否かを調べることなどにより、ブロックイレーズが正常に実行されたか否かを検出する（ステップＳ３０５）。
【００７９】
ブロックイレーズが失敗したと判断されると、フラッシュメモリカードデバイスドライバ１４は、イレーズ対象ブロックの先頭ページの冗長領域に“０”のイレーズフラグをセットした後、ブロックイレーズ処理をリトライする（ステップＳ３０６）。このリトライで再度ブロックイレーズ処理のエラーが発生されると、フラッシュメモリカードデバイスドライバ１４は、ブロック代替処理を行う（ステップＳ３１２）。
【００８０】
このブロック代替処理では、まず、スペアブロック管理テーブルが書き替えられて、エラー発生したブロックの物理ブロック番号がそれを代替するスペアブロックのエントリに登録される。この後、フラッシュメモリカードデバイスドライバ１４は、エラー発生したブロックの物理ブロック番号を不良ブロック管理テーブルに登録してそれを不良ブロックにする（ステップＳ３１３）。
【００８１】
これらステップＳ３１２，Ｓ３１３の処理により、以降は、不良ブロックの代りに、スペアブロックがアクセスされることになる。なお、ステップＳ３１２とＳ３１３はどちらを先に実行しても良い。
【００８２】
ブロックイレーズが成功したと判断された場合には（リトライ成功も含む）、フラッシュメモリカードデバイスドライバ１４は、ステップＳ３０４でカウントアップされたイレーズカウンタの値がアトリビュートメモリ１１１の消去限界回数を越えたか否かを調べる（ステップＳ３０７）。消去限界回数を越えている場合には、フラッシュメモリカードデバイスドライバ１４は、ブロック代替処理を行う（ステップＳ３０８）。
【００８３】
このブロック代替処理では、消去限界回数を越えたブロックの物理ブロック番号がそれを代替するスペアブロックのエントリに登録される。この後、フラッシュメモリカードデバイスドライバ１４は、エラー発生したブロックの物理ブロック番号を不良ブロック管理テーブルに登録してそれを不良ブロックにし（ステップＳ３０９）、次いで、不良ブロックの先頭ページに“０”のイレーズ回数オーバーフラグをセットする（ステップＳ３１０）。
【００８４】
これらステップＳ３０８，Ｓ３０９の処理により、以降は、不良ブロックの代りに、スペアブロックがアクセスされることになる。また、ステップＳ３１０の処理により、不良ブロックにされた原因（代替の原因）がイレーズ回数オーバーによるものであることを、知ることができる。なお、ステップＳ３０８とＳ３０９はどちらを先に実行しても良い。
【００８５】
一方、ステップＳ３０７で消去限界回数を越えていないことが検出された場合には、フラッシュメモリカードデバイスドライバ１４は、イレーズしたブロックの先頭ページに、ステップＳ３０４でカウントアップしたイレーズカウンタの値を書き込み、そして各ページのプログラムフラグを“１”にリセットとして終了する（ステップＳ３１１）。
【００８６】
以上説明したように、この実施例においては、フラッシュＥＥＰＲＯＭが持つ冗長部を使用して、データの信頼性向上に必要なページステータス情報が管理される。ページステータス情報は、フラッシュＥＥＰＲＯＭをアクセスした際に発生したエラーの内容などを示すものであり、これによって各ページのデータ領域の現在の状態および過去のエラー履歴などを認識することができるようになり、フラッシュメモリカード１１の信頼性を高めることができる。
【００８７】
また、イレーズ回数が消去限界回数を越えると、ページライトリトライ、ページリードリトライ、またはブロックイレーズリトライのエラーを引き起こすブロック不良が発生された場合と同様にして、スペアブロックを利用したブロック代替が行われる。この場合、そのブロックの先頭ページの冗長領域にはイレーズ回数オーバーフラグが設定される。このため、そのイレーズ回数オーバフラグを参照することにより、代替された原因がイレーズ回数オーバーによるものか、あるいはプログラムエラー、リードベリファイエラー、イレーズエラーなど、他の原因によるものかを検出することができる。
【００８８】
イレーズ回数オーバーが原因で不良ブロックとされたブロックは、実際には何等不良が発生されていない。したがって、例えば不良ブロック数が増え、代替対象のスペアブロックが不足した場合などには、イレーズ回数オーバフラグがセットされている不良ブロックを検出し、それを正常なブロックとして利用するなどの運用形態をとることが可能となる。これにより、結果としてフラッシュメモリカード１１の寿命を延ばすことができる。
【００８９】
なお、この実施例では、プログラムエラー、リードベリファイエラー、イレーズエラーのリトライで再度エラーが発生した時に直ぐに該当のブロックを不良ブロックにして代替処理を行ったが、リトライ回数を複数回に設定し、複数回リトライしても正常に処理が実行されない場合に代替処理を実行するようにしても良い。
【００９０】
また、この実施例では、フラッシュＥＥＰＲＯＭ上のスペアブロック管理テーブル上に各スペアブロックの代替先を登録することによってブロック代替を実行したが、この代替処理は、フラッシュメモリカードドライバ１４が論理ブロック番号と物理ブロック番号との対応関係を示すアドレス変換テーブルをメモリ上にに作成し、不良ブロックの物理ブロック番号をそれを代替するスペアブロックの物理ブロック番号に変更することによって行うこともできる。
【００９１】
また、この実施例では各ページが２５６バイトのデータ領域と８バイトの冗長領域とから構成される１６ＭビットタイプのフラッシュＥＥＰＲＯＭを使用する場合を例示したが、例えば、各ページが５１２バイトのデータ領域と８バイトの冗長領域とから構成される３２ＭビットタイプのフラッシュＥＥＰＲＯＭを使用すれば、ページステータス情報を含む管理データは５１２バイトのセクタのステータスを示すことになるので、ページステータス情報を含む管理データを、セクタ単位でのデータ管理にさらに有効に利用することが可能となる。
【００９２】
また、この実施例のデータ管理方法は、パーソナルコンピュータに限らず、フラッシュメモリカード１１をアクセス制御できる装置であればＰＤＡなど他の全てのデータ処理装置に適用することができる。
【００９３】
さらに、この実施例ではフラッシュメモリカード１１を制御するドライバ１４にデータ管理機能を設けたが、フラッシュＥＥＰＲＯＭとプロセッサとを内蔵するインテリジェントなフラッシュディスク装置を使用する場合には、そのフラッシュディスク装置自体に同様のデータ管理機能を持たせることもできる。
【００９４】
【発明の効果】
以上説明したように、この発明によれば、フラッシュＥＥＰＲＯＭのエラー発生状況に係る情報を効率良く管理できるようなり、フラッシュメモリカードの信頼性を十分に向上させることが可能となる。特に、各ぺージの冗長領域を使用してページステータス情報を管理しているので、アクセス対象のページの状態を即座に認識することができる。
【図面の簡単な説明】
【図１】この発明の一実施例に係るフラッシュメモリカードのデータ管理方法を使用したパーソナルコンピュータのハードウェアおよびソフトウェア構成を示すブロック図。
【図２】同実施例で使用されるフラッシュメモリカードに設けられたフラッシュＥＥＰＲＯＭの回路構成を示す図。
【図３】同実施例で使用されるフラッシュメモリカードに格納される管理データのデータ構造を説明するための図。
【図４】同実施例のデータ管理方法が適用されたページリード処理の手順を説明するフローチャート。
【図５】同実施例のデータ管理方法が適用されたページライト処理の手順を説明するフローチャート。
【図６】同実施例のデータ管理方法が適用されたブロックイレーズ処理の手順を説明するフローチャート。
【符号の説明】
１１…フラッシュメモリカード、１２…他のＰＣカード、１３…ＰＣカードホストアダプタ、１４…フラッシュメモリカードドライバ、１５…カードサービス、１６…ソケットサービス、１７…メモリテクノロジドライバ、１８…ＯＳ、１０…アプリケーションプログラム。
【図１】
0003576625.tif 000003
【図２】
0003576625.tif 000004
【図３】
0003576625.tif 000005
【図４】
0003576625.tif 000006
【図５】
0003576625.tif 000007
【図６】
0003576625.tif 000008