(57)【特許請求の範囲】
【請求項１】
フラッシュメモリに設けられたセクタへデータを書き込む際、誤り訂正符号を用いてデータを書き込む書き込み工程と、
アクセス指示に対応する物理アドレスへ配された、データセクタにアクセスする第１アクセス工程と、
当該データセクタの制御エリアに格納され、当該データセクタが不良セクタであるか否かを示す良否識別コードに基づいて、当該データセクタが正常であるか否かを判定すると共に、当該データセクタが不良セクタだった場合、当該データセクタに対応する物理アドレスに配されたテーブルセクタから、上記データセクタの代替となるスペアセクタを示す対応情報を読み出し、当該スペアセクタへアクセスする第２アクセス工程と、
当該テーブルセクタの制御エリアに格納され、当該テーブルセクタが不良セクタであるか否かを示す良否識別コードに基づいて、当該テーブルセクタが正常であるか否かを判定すると共に、当該テーブルセクタが不良セクタだった場合、スペアセクタが配されるスペアセクタ領域から、テーブルセクタのスペアセクタを探索する探索工程と、
発見したスペアセクタに格納された対応情報に基づいて、上記データセクタのスペアセクタへアクセスする第３アクセス工程と、
アクセスする際に上記誤り訂正符号に基づいて誤りが発生しているか否かを確認し、アクセスしたセクタに誤りを検出した場合、検出した誤り量が、誤り訂正符号で訂正可能な範囲の間に、誤りの発生したセクタが、上記スペアセクタ領域内で未使用のスペアセクタで代替されるように、誤りが発生したセクタに関連するテーブルセクタを更新する更新工程とを備えていることを特徴とするフラッシュメモリのアクセス方法。
【請求項２】
上記更新工程は、テーブルセクタに誤りが発生した場合、上記スペアセクタ領域のうち、各データセクタのスペアセクタが割り当てられる側とは逆の端部から順番に、テーブルセクタのスペアセクタを割り当て、当該スペアセクタへ、代替するテーブルセクタを示す情報を書き込む工程を含み、
上記探索工程は、上記端部から順番にテーブルセクタのスペアセクタを探索することを特徴とする請求項１記載のフラッシュメモリのアクセス方法。
【請求項３】
上記アクセスは、データの読み出しであることを特徴とする請求項１または２記載のフラッシュメモリのアクセス方法。
【請求項４】
フラッシュメモリへアクセスするドライバを備えるシステムであって、
当該ドライバは、フラッシュメモリに設けられたセクタへデータを書き込む際、誤り訂正符号を用いてデータを書き込むものであり、
上記ドライバは、アクセス指示に対応する物理アドレスへ配された、データセクタにアクセスする第１アクセス処理と、
当該データセクタの制御エリアに格納され、当該データセクタが不良セクタであるか否かを示す良否識別コードに基づいて、当該データセクタが正常であるか否かを判定すると共に、当該データセクタが不良セクタだった場合、当該データセクタに対応する物理アドレスに配されたテーブルセクタから、上記データセクタの代替となるスペアセクタを示す対応情報を読み出し、当該スペアセクタへアクセスする第２アクセス処理と、
当該テーブルセクタの制御エリアに格納され、当該テーブルセクタが不良セクタであるか否かを示す良否識別コードに基づいて、当該テーブルセクタが正常であるか否かを判定すると共に、当該テーブルセクタが不良セクタだった場合、スペアセクタが配されるスペアセクタ領域から、テーブルセクタのスペアセクタを探索する探索処理と、
発見したスペアセクタに格納された対応情報に基づいて、上記データセクタのスペアセクタへアクセスする第３アクセス処理と、
アクセスする際に上記誤り訂正符号に基づいて誤りが発生しているか否かを確認し、アクセスしたセクタに誤りを検出した場合、検出した誤り量が、誤り訂正符号で訂正可能な範囲の間に、誤りの発生したセクタが、上記スペアセクタ領域内で未使用のスペアセクタで代替されるように、誤りが発生したセクタに関連するテーブルセクタを更新する更新処理とを行うものであることを特徴とするシステム。
【請求項５】
さらに、上記ドライバが行う上記更新処理には、テーブルセクタに誤りが発生した場合、上記スペアセクタ領域のうち、各データセクタのスペアセクタが割り当てられる側とは逆の端部から順番に、テーブルセクタのスペアセクタを割り当て、当該スペアセクタへ、代替するテーブルセクタを示す情報を書き込む処理が含まれ、
上記探索処理は、上記端部から順番にテーブルセクタのスペアセクタを探索する処理であることを特徴とする請求項４記載のシステム。
【請求項６】
上記アクセスは、データの読み出しであることを特徴とする請求項４または５記載のシステム。
【請求項７】
誤り訂正符号で符号化されたデータが格納されている複数のセクタを備えたフラッシュメモリであって、
上記各セクタには、自らの良否が記録されていると共に、
上記各セクタは、各論理アドレスに格納すべき情報が格納され、かつ、アクセスするセクタを特定する論理アドレスに対応する物理アドレスに配されているデータセクタと、
所定のスペアセクタ領域に配され、不良が発生したセクタに格納すべき情報が格納されているスペアセクタと、
上記論理アドレスに対応する物理アドレスに配され、上記データセクタを代替するスペアセクタを示す対応情報が格納されていると共に、上記誤り訂正符号に基づいてアクセスしたセクタに誤りが発生していた場合に、検出した誤り量が上記誤り訂正符号で訂正可能な範囲の間に、当該セクタが上記スペアセクタ領域内で未使用のスペアセクタで代替されるように、上記対応情報のうち、誤りが発生したセクタに関連する対応情報が更新されるテーブルセクタとに分けられ、
上記スペアセクタのうち、テーブルセクタを代替するスペアセクタは、上記スペアセクタ領域のうち、データセクタのスペアセクタとは逆の端部から順番に配されていると共に、当該テーブルセクタのスペアセクタには、代替するテーブルセクタを示すセクタ情報が記録されていることを特徴とするフラッシュメモリ。
【請求項８】
上記アクセスは、データの読み出しであることを特徴とする請求項７記載のフラッシュメモリ。
【請求項９】
請求項１、２または３記載のフラッシュメモリのアクセス方法で生成される信号を受け入れるための信号線を備えていることを特徴とするフラッシュメモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリ内に不良セクタが生じても、アクセス時間を余り増大させずに、当該セクタを代替することで、信頼性の高いフラッシュメモリを実現可能なフラッシュメモリのアクセス方法、および、その方法でアクセスするためのデータが格納されたフラッシュメモリに関するものである。
【０００２】
【従来の技術】
従来から、例えば、ＦＡ（ Factory Automation ）用途のコンピュータなど、他の用途よりも劣悪な周囲環境で使用される機器では、信頼性を向上させるために、不揮発性の記録媒体としても、可動部分を持たない半導体記録媒体が好適に使用されている。しかしながら、これらの半導体記録媒体では、情報の記録に半導体素子を使用するため、磁気や光を用いた記録媒体に比べて、記録容量が小さく、記録容量の増大が強く要求されている。
【０００３】
この要求に応えるために、従来の１ビット毎に読み書き可能なＥＥＰＲＯＭのように、１メモリセルに２個の素子を用いる半導体記録媒体に代えて、例えば、ＡＮＤ型のフラッシュメモリのように、１メモリセルを１個の素子で実現して、記録容量を増加させた半導体記録媒体が普及しつつある。
【０００４】
上記ＡＮＤ型のフラッシュメモリでは、消去や書き込みの際に、基板と浮遊ゲートとの間で電荷が受け渡され、トンネル酸化膜中を電荷が移動する。一方、電圧が印加されていない状態や読み出しの際には、上記トンネル酸化膜により基板と浮遊ゲートとの間が絶縁され、電荷を保持している。
【０００５】
ここで、ＡＮＤ型のフラッシュメモリの記録容量を増加させるためには、集積度を向上させる必要があり、トンネル酸化膜の膜厚を薄くすることが求められるが、トンネル酸化膜の膜厚を薄くすれば、長期間電荷を保持することが難しくなる。特に、上記ＡＮＤ型のフラッシュメモリでは、消去や書き込みの際にトンネル酸化膜中を電荷が移動して、トンネル酸化膜が劣化する虞れがある。したがって、上記トンネル酸化膜の膜厚は、劣化を見込んで設定する必要がある。さらに、トンネル酸化膜の膜厚は、製造時のプロセスバラツキによって変動するため、マージンを低く設定すると、歩留りが低下してしまう。これらの結果、情報記録の信頼性を向上させるためには、余りトンネル酸化膜の膜厚を薄く設定できない。
【０００６】
このように、ＡＮＤ型のフラッシュメモリでは、大容量化と信頼性との両立が困難であるため、大容量化が特に要求される場合には、誤り訂正符号（ＥＣＣ）によって符号化した上で記録されることもある。
【０００７】
【発明が解決しようとする課題】
しかしながら、上記ＡＮＤ型のフラッシュメモリでは、ビット誤りが蓄積されていくため、誤り訂正符号を用いたとしても、長期間、高い信頼性を維持することが難しいという問題を生じる。
【０００８】
具体的には、ＡＮＤ型のフラッシュメモリでは、上述したように、書き換え（消去）の際、トンネル酸化膜が劣化して、電圧が印加されていない期間に、電荷を保持できなくなってしまう。ここで、トンネル酸化膜の劣化は、回復できないため、１度ビット誤りが発生したメモリセルは、その後もビット誤りが発生する可能性が高くなり、ビット誤りが蓄積されていく。この結果、長期間使用すると、誤り訂正符号でも訂正できなくなり、情報が失われてしまう。
【０００９】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、フラッシュメモリ内に不良セクタが生じても、アクセス時間を余り増大させずに、当該セクタを代替して、信頼性の高いフラッシュメモリを実現することにある。
【００１０】
【課題を解決するための手段】
本発明に係るフラッシュメモリのアクセス方法は、上記課題を解決するために、フラッシュメモリに設けられたセクタへデータを書き込む際、誤り訂正符号を用いてデータを書き込む書き込み工程を含むフラッシュメモリのアクセス方法において、以下の手段を講じたことを特徴としている。
【００１１】
すなわち、アクセス指示に対応する物理アドレスへ配された、データセクタにアクセスする第１アクセス工程と、アクセスしたデータセクタが不良セクタだった場合、当該データセクタに対応する物理アドレスに配されたテーブルセクタから、上記データセクタの代替となるスペアセクタを示す対応情報を読み出し、当該スペアセクタへアクセスする第２アクセス工程と、テーブルセクタが不良セクタだった場合、スペアセクタが配されるスペアセクタ領域から、テーブルセクタのスペアセクタを探索する探索工程と、発見したスペアセクタに格納された対応情報に基づいて、上記データセクタのスペアセクタへアクセスする第３アクセス工程と、上記誤り訂正符号に基づいて、アクセスしたセクタに誤りを検出した場合、検出した誤り量が、誤り訂正符号で訂正可能な範囲の間に、誤りの発生したセクタが、上記スペアセクタ領域内で未使用のスペアセクタで代替されるように、誤りが発生したセクタに関連するテーブルセクタを更新する更新工程とを備えている。
【００１２】
上記構成によれば、データセクタの物理アドレスとアクセス指示とが対応しているので、特に、両者の変換テーブルを参照しなくても、例えば、算術演算などによって、両者を変換できる。したがって、正常なデータセクタ（大体のデータセクタ）に関して、１セクタへのアクセスで、フラッシュメモリへのアクセスが終了する。この結果、変換テーブルを参照する場合よりも、アクセス速度が短縮できる。また、アクセスされるセクタ数が少ないので、不良セクタに遭遇する可能性も低い。
【００１３】
一方、データセクタが不良セクタであった場合は、当該データセクタに対応する物理アドレスに配されたテーブルセクタから、上記データセクタの代替となるスペアセクタを示す対応情報を読み出し、当該スペアセクタへアクセスする。この場合、テーブルセクタの物理アドレスと、データセクタとが対応しているので、上記と同様に、変換テーブルなしに、両者を変換でき、データセクタとテーブルセクタとの双方が不良セクタではない限り（ほとんどの場合）、データセクタおよびテーブルセクタへのアクセスが付加されるだけで、所望のデータが格納されたスペアセクタへアクセスできる。この結果、テーブルセクタの物理アドレスとテーブルセクタとの変換テーブルを参照する場合よりも、不良セクタに遭遇する可能性が少なく、かつ、アクセス速度を向上できる。
【００１４】
また、テーブルセクタが不良セクタであった場合は、スペアセクタが配されるスペアセクタ領域から、テーブルセクタのスペアセクタが探索される。この結果、いずれの物理アドレスに配されたセクタが不良になるかを予測しにくいフラッシュメモリにおいて、データセクタ、スペアセクタおよびテーブルセクタのいずれのセクタが不良セクタであっても、所望のデータが格納されたセクタへアクセスできる。
【００１５】
なお、この場合は、データセクタが正常な場合や、テーブルセクタが正常な場合よりもアクセス速度が低下するが、フラッシュメモリに不良セクタが発生する可能性は、例えば、実施形態で用いたフラッシュメモリの場合で０．２％以下など、十分に低いので、両者が不良セクタである可能性は極めて低く、ほとんどの場合で、速いアクセス速度を維持できる。
【００１６】
ところで、データセクタのスペアセクタや、テーブルセクタのスペアセクタを割り当てる方法は、種々の方法が考えられるが、例えば、それぞれに専用の領域を設ける場合は、いずれか一方の領域を全て使い切ってしまうと、他方の領域に空いているスペアセクタが存在しても、同じ割り当て方法では、スペアセクタを割り当てることができなくなり、メモリ効率が低下してしまう。ところが、フラッシュメモリでは、いずれの物理アドレスのセクタに不良が発生するかを予測しにくいので、上記両領域の大きさを適切に設定することが難しい。この結果、メモリ効率の低下を防止するためには、一方の領域を使い切ったか否かによって、空いているスペアセクタの探索方法を変更する必要があり、探索方法が複雑になる虞れがある。
【００１７】
これに対して、本発明に係るフラッシュメモリのアクセス方法は、上記構成に加えて、上記更新工程は、テーブルセクタに誤りが発生した場合、上記スペアセクタ領域のうち、各データセクタのスペアセクタが割り当てられる側とは逆の端部から順番に、テーブルセクタのスペアセクタを割り当て、当該スペアセクタへ、代替するテーブルセクタを示すセクタ情報を書き込む工程を含み、上記探索工程は、上記端部から順番にテーブルセクタのスペアセクタを探索することを特徴としている。
【００１８】
上記構成によれば、スペアセクタ領域の空き領域は、データセクタのスペアセクタと、データセクタのスペアセクタとの間に配されるので、予めそれぞれに専用の領域を設ける必要がない。したがって、データセクタの不良セクタ数とテーブルセクタの不良セクタ数との比率が、どのような比率であっても、空いているスペアセクタの探索方法を変更せずに、空いているスペアセクタを使い切ることができる。この結果、探索方法を複雑にすることなくメモリ効率を向上できる。
【００１９】
一方、本発明に係るフラッシュメモリは、誤り訂正符号で符号化されたデータが格納されている複数のセクタを備えたフラッシュメモリであって、上記課題を解決するために、上記各セクタには、自らの良否が記録されていると共に、上記各セクタは、各論理アドレスに格納すべき情報が格納され、かつ、アクセスするセクタを特定する論理アドレスに対応する物理アドレスに配されているデータセクタと、所定のスペアセクタ領域に配され、不良が発生したセクタに格納すべき情報が格納されているスペアセクタと、上記論理アドレスに対応する物理アドレスに配され、上記データセクタを代替するスペアセクタを示す対応情報が格納されているテーブルセクタとに分けられ、上記スペアセクタのうち、テーブルセクタを代替するスペアセクタは、上記スペアセクタ領域のうち、データセクタのスペアセクタとは逆の端部から順番に配されていると共に、当該テーブルセクタのスペアセクタには、代替するテーブルセクタを示すセクタ情報が記録されていることを特徴としている。
【００２０】
上記データ構造が、フラッシュメモリに格納されていれば、上記アクセス方法にて、フラッシュメモリへアクセスできる。この結果、データセクタが正常な場合、すなわち、大体の論理ブロックへのアクセスする場合の速度は、スペアセクタを設けない場合と同一に保つことができる。また、データセクタとテーブルセクタとの双方が不良セクタではない場合、すなわち、ほとんどの論理ブロックへアクセスする場合の速度は、余り低下しない。
【００２１】
さらに、テーブルセクタが不良セクタの場合であっても、スペアセクタ領域のうち上記端部から順番に、所望のテーブルセクタを示すセクタ情報が格納されているスペアセクタを探索することで、確実にテーブルセクタのスペアセクタを見いだすことができる。
【００２２】
この結果、全体的に余りアクセス速度を低下させずに、いずれの物理アドレスのセクタに不良が発生しても、当該セクタをスペアセクタで代替でき、フラッシュメモリの信頼性を向上できる。
【００２３】
【発明の実施の形態】
本発明の一実施形態について図１ないし図９に基づいて説明すると以下の通りである。すなわち、本実施形態に係るＡＮＤ型のフラッシュメモリ（フラッシュＥＥＰＲＯＭ）は、他の型のフラッシュメモリと同様に、電力が供給されていない状態でも格納された情報を保持可能であり、可動部分を持たない。また、ＯＲ型など、他の型のフラッシュメモリに比べて、低コストで容量を増大させやすい。したがって、例えば、ＦＡ（ Factory Automation ）用途でのマン・マシン・インターフェースとなるグラフィック操作パネルなど、劣悪な周囲環境での安定動作が要求されるシステムでの大容量記録媒体として、特に好適に使用できる。
【００２４】
上記グラフィック操作パネルは、例えば、図２に示すように、上記フラッシュメモリ１と、フラッシュメモリ１に格納された情報を利用するアプリケーション２と、アプリケーション２からの要求に応じて、フラッシュメモリ１にアクセスするドライバ３とを備えている。なお、上記アプリケーション２およびドライバ３は、インターフェース用ＩＣを介してフラッシュメモリ１へアクセス可能なＣＰＵ、または、その機能を有するＣＰＵ自体が、ＲＯＭやＲＡＭなどの記憶媒体に記憶されたプログラムを実行することに実現される機能ブロックである。
【００２５】
上記アプリケーション２は、記録媒体として、後述するセクタ長が異なるフラッシュメモリ、あるいは、ＯＡ( Office Automation ）用途のコンピュータで使用されるフロッピーディスクなど、実際のアクセス方法が異なる他の記録媒体を使用する場合であっても、同一の方法でアクセスできるように、アクセスするアドレスやアクセスする長さなどを、論理的なブロックで指示しており、上記ドライバ３が、自らで使用されているフラッシュメモリ１に応じた方法でアクセスしている。これにより、他の記録媒体を使用する場合であっても、アプリケーション２を共用でき、アプリケーション２の移植性を向上させている。また、ドライバ３が論理ブロック長に拘わらず、フラッシュメモリ１に適したセクタ長でアクセスするので、両者の相違に起因するメモリ効率の低減を防止できる。
【００２６】
ここで、本実施形態で使用されるフラッシュメモリ１では、予め命令セットが定義されており、フラッシュメモリ１は、例えば、アドレス信号、コマンド信号およびデータ信号を伝送するＩＯ信号線や、ＣＥ信号などの制御信号を伝送する制御信号線など、フラッシュメモリ１に設けられた信号線を介して命令セット中の命令が指示されると、それぞれの命令に応じた処理を実行する。
【００２７】
上記フラッシュメモリ１は、ＡＮＤ型のフラッシュメモリであり、ＥＥＰＲＯＭに比べて、１メモリセルあたりのトランジスタ数が少なく、例えば、６４Ｍビットや２５６Ｍビット以上と、大きな記録容量を持っている一方で、ランダムアクセス速度が遅い。したがって、上記フラッシュメモリ１では、所定長のセクタＳを単位とするブロックアクセス用の命令が設けられており、当該命令を実行するために、指示されたスタートアドレスに続くアドレスを順次発生するアドレスカウンタと、順次入力される書き込みデータを蓄積する入力バッファと、順次読み出されるデータを蓄積する出力バッファとを備えている。これにより、アドレスの指定回数が削減され、かつ、各メモリセルへのアクセスと外部の入出力とが並列して実施されるので、フラッシュメモリ１のブロックアクセス時の見かけ上のアクセス速度を向上できる。
【００２８】
また、上記フラッシュメモリ１は、大容量化を達成するために、トンネル酸化膜の膜圧が比較的薄く設定されており、上記ＥＥＰＲＯＭに比べて、初期不良や経時劣化、あるいは、アクセスの繰り返しに起因する不良などが発生する確率が高くなっている。したがって、図３に示すように、フラッシュメモリ１は、冗長な構成となっており、各セクタＳには、データを格納するデータエリアＤＡに加えて、制御エリアＣＡが設けられている。
【００２９】
図３に例示するフラッシュメモリ１では、メモリ容量（全データエリアＤＡの容量）が６４Ｍビットであり、セクタ長（データエリアＤＡの長さ）が５１２バイト、制御エリアＣＡの長さが１６バイトに設定されている。この場合、全セクタ数は、１６３８４セクタであり、各セクタＳを特定するセクタアドレスは、００００Ｈ〜３ＦＦＦＨ（数字の末尾のＨはその数字が１６進数であることを示す）の範囲となる。また、出荷時には、１６３８４セクタのうち、１６０５７セクタを使用できることが保証されている。
【００３０】
当該フラッシュメモリ１では、読み込みあるいは書き込みなどのアクセスは、セクタＳを単位として行われており、当該セクタＳ全体を読み書きするシリアルリード命令ｒ１およびプログラム命令ｐ１が設けられている。さらに、上記制御エリアＣＡへアクセスするために、シリアルリード命令ｒ２、プログラム命令ｐ３も設けられている。当該命令ｒ２・ｐ３では、制御エリアＣＡのみが読み出されるため、データエリアＤＡとは用途が異なり、単独でアクセスする可能性がある制御エリアＣＡへのアクセス速度を、セクタＳ全体を読み書きする場合よりも向上できる。なお、上記各プログラム命令ｐ１・ｐ３では、書き込む前に、消去が行われるが、消去のみを行う消去命令ｅ１や、予め消去されている場合に使用され、消去せずに書き込むプログラム命令ｐ２なども規定されている。
【００３１】
本実施形態に係るドライバ３は、上記フラッシュメモリ１に対して、予め、以下に示すフォーマットを施した後で、フラッシュメモリ１へアクセスする。具体的には、図１に示すように、上記フラッシュメモリ１は、不良が発生していない場合にアクセスされるデータセクタＤＳを格納するデータセクタ領域１１と、不良セクタを代替するスペアセクタＳＳが格納されるスペアセクタ領域１２と、データセクタＤＳとスペアセクタＳＳとの対応を示すテーブルセクタＴＳが記録されるバッドセクタテーブル領域１３とに分割されている。
【００３２】
なお、以下では、各データセクタＤＳを特定する場合、データセクタ領域１１の始め（セクタアドレスの小さい方）から順番に付したデータセクタ番号ｄｎで区別し、各スペアセクタＳＳを特定する場合、スペアセクタ領域１２の始めから順番に付したスペアセクタ番号ｓｎで区別する。一方、バッドセクタテーブル領域１３では、各テーブルセクタＴＳを特定するテーブルセクタ番号ｔｎが、バッドセクタテーブル領域１３の末尾から順番に付されている。また、各セクタＳを区別する場合は、例えば、データセクタ番号ｄｎが１のデータセクタＤＳは、データセクタＤＳ1 などのように、各セクタ番号ｄｎ・ｓｎ・ｔｎを添字で付して表現する。
【００３３】
上記バッドセクタテーブル領域１３には、各データセクタＤＳのデータセクタ番号ｄｎに対応する位置に、それぞれを代替するスペアセクタＳＳのスペアセクタ番号（対応情報）ｓｎが格納されている。本実施形態では、スペアセクタ番号を２バイトで表現できるため、各テーブルセクタＴＳには、２５６個のスペアセクタ番号が格納できる。したがって、例えば、データセクタＤＳ2 に対応するスペアセクタ番号ｓｎ（この例では、１）は、テーブルセクタＴＳ1 の２番目（第３バイトから第４バイトまで）に格納されている。また、この例では、他のデータセクタＤＳは、不良セクタではないため、テーブルセクタＴＳ1 の残余のバイトは、スペアセクタＳＳが対応していないことを示す値（この例では、０）が格納されている。
【００３４】
例えば、本実施形態に係るフラッシュメモリ１では、出荷時に正常動作が保証されている１６０５７セクタのうち、０．１８％、すなわち、６１６セクタをスペアセクタＳＳとして割り当てている。また、全セクタＳのうち、スペアセクタＳＳを除いたセクタＳを代替するために、全セクタ数をＴ１、スペアセクタ数をＴ２、１テーブルセクタＴＳ当たりに格納可能なスペアセクタ番号ｓｎの個数をＴ３とすると、（Ｔ１−Ｔ２）／Ｔ３＝６１．５９…なので、６２セクタがテーブルセクタＴＳとして割り当てられている。したがって、残余の１５７０６セクタ、すなわち、セクタアドレスが００００Ｈ〜３Ｄ５９Ｈの範囲（データエリアＤＡの記録容量で７８５３ｋバイト）が、データセクタ領域１１となり、続く、３Ｄ５ＡＨ〜３ＦＣ１Ｈまでの範囲（３０８ｋバイト）がスペアセクタ領域１２、さらに、３ＦＣ２Ｈ〜３ＦＦＦＨまでの範囲（３１ｋバイト）がバッドセクタテーブル領域１３に設定される。
【００３５】
また、各セクタＳの制御エリアＣＡは、それぞれ、図４に示す良否識別領域２１、セクタ番号領域２２、消去回数領域２３、用途識別領域２４、制御エリアＥＣＣ領域２５およびデータエリアＥＣＣ領域２６に分割されている。
【００３６】
上記良否識別領域２１は、当該セクタＳが不良セクタであるか否かを示す良否識別コードが格納されている。各良否識別コードは、例えば、各コード間のハミング距離を十分に長く設定するなどして、アクセス時にビットエラーが発生しても、それぞれを区別できるように決定されている。例えば、本実施形態では、良否識別領域２１が第１〜第３バイト目までの３バイト幅に設定されており、各良否識別コードとして、正常を示すコード（Ｃ７７１１ＣＨ）、初期不良を示すコード（ＦＦＦＦＦＦＨ）、２ビット誤りを示すコード（９ＥＥ２２９Ｈ）、１ビット誤りを示すコード（３８８ＥＥ３Ｈ）、並びに、書き込みや消去に失敗したことを示すコード（６１１ＤＤ６Ｈ）が決められている。
【００３７】
また、セクタ番号領域２２は、セクタ番号ｄｎまたはｔｎを格納するために、第４および第５バイト目の２バイト幅に設定されており、データセクタＤＳの場合、データセクタ番号ｄｎが格納され、テーブルセクタＴＳの場合は、テーブルセクタ番号ｔｎが格納される。一方、スペアセクタＳＳで、データセクタＤＳを代替している場合は、当該データセクタＤＳのデータセクタ番号ｄｎ、テーブルセクタＴＳを代替している場合は、当該テーブルセクタＴＳのテーブルセクタ番号（セクタ情報）ｔｎが格納される。また、スペアセクタＳＳが、いずれのセクタＳをも代替していない場合は、代替していないことを示す値（例えば、ＦＦＦＦＨ）が格納される。
【００３８】
さらに、上記消去回数領域２３には、消去回数（書き換え回数）が格納されている。フラッシュメモリ１では、正常に書き換えできると保証されている回数が例えば、１０万回程度であり、この回数を越えて書き換えた場合、正常な書き換えが保証されない。したがって、書き換え毎に消去回数領域２３に格納されているカウント値を増加させ、当該カウント値が所定の値を越えた場合、スペアセクタＳＳで代替するなどすれば、書き換え回数の超過に起因するアクセス不良を事前に防止できる。本実施形態では、第６〜第８バイト目までのうちの２０ビットが消去回数領域２３として割り当てられている。
【００３９】
また、用途識別領域２４には、当該セクタＳが、データセクタＤＳであるか、スペアセクタＳＳであるか、テーブルセクタＴＳであるかを示すコードが格納されている。図４の例では、用途識別領域２４は、制御エリアＣＡの第８バイト目のうち、消去回数領域２３を除いた４ビットである。
【００４０】
ところで、上述したように、フラッシュメモリ１では、初期不良あるいは経時変化によって、ビット誤りが発生する。したがって、ビット誤りが発生しても、誤りを訂正できるように、制御エリアＣＡおよびデータセクタＤＳが誤り訂正符号（ＥＣＣ）で符号化されており、制御エリアＣＡには、それぞれの誤り訂正符号を格納するために、制御エリアＥＣＣ領域２５およびデータエリアＥＣＣ領域２６が設けられている。上記制御エリアＥＣＣ領域２５は、第９および第１０バイト目の２バイト幅に設定され、上記各領域２１〜２４の誤り訂正符号を格納している。また、データエリアＥＣＣ領域２６は、第１３〜第１６バイト目までの４バイトである。なお、第１１〜第１２バイト目は、将来の拡張のために確保されており、５ＡＡ５Ｈが格納されている。
【００４１】
本実施形態では、例えば、１ビット誤りを訂正可能で、２ビット誤りを検出可能な誤り訂正符号が使用されており、発生したビット誤りが訂正可能なうちに、当該セクタＳの正しい情報をスペアセクタＳＳへ代替する。これにより、情報を損失することなく、各セクタＳをスペアセクタＳＳで代替できる。
【００４２】
これらの結果、アクセスするデータセクタＤＳが不良セクタであっても、当該データセクタＤＳに対応する位置に配されたテーブルセクタＴＳを参照すれば、データセクタＤＳのスペアセクタＳＳを特定でき、正常に読み書きできる。
【００４３】
一方、テーブルセクタＴＳが不良セクタとなった場合は、スペアセクタ領域１２の末尾から順番に、テーブルセクタＴＳのスペアセクタＳＳが割り当てられる。テーブルセクタＴＳのスペアセクタＳＳには、上述したように、代替したテーブルセクタＴＳのテーブルセクタ番号ｔｎとが、制御エリアＣＡに格納されている。したがって、スペアセクタ領域１２の末尾から探索することで、テーブルセクタＴＳのスペアセクタＳＳを特定でき、正常に読み書きできる。
【００４４】
上記構成のグラフィック操作パネルにおいて、フラッシュメモリ１へアクセスする際の各部の動作を図５および図６に示すフローチャートに基づいて説明すると以下の通りである。すなわち、図５に示すステップ１（以下では、Ｓ１のように略称する）において、図２に示すアプリケーション２から、例えば、読み出しを開始する論理ブロック（開始ブロック）、読み出す論理ブロックの数、読み出したデータを格納するバッファのアドレス、および、読み出したバイト数を格納するアドレスなど、読み出しに必要なデータが指示されると、ドライバ３は、Ｓ２において、指示された論理ブロックに対応するデータセクタＤＳが正常であるか否かを判定するために、当該データセクタＤＳの制御エリアＣＡを読み出す。
【００４５】
アプリケーション２では、例えば、フロッピーディスクへアクセスする場合と同一になるように、論理ブロックの大きさは、５１２バイトに設定されている。また、本実施形態に係るフラッシュメモリ１では、セクタ長が５１２バイトであり、論理ブロック長と同一である。さらに、上記各データセクタＤＳは、番号が０の論理ブロックに対応するデータセクタＤＳ1 から、番号が１５７０５の論理ブロックに対応するデータセクタＤＳ15706 まで、論理ブロックのアドレスの順番に配されている。したがって、この例では、上記Ｓ２において、ドライバ３は、開始ブロックに１を足したデータセクタ番号ｄｎのデータセクタＤＳへアクセスして、制御エリアＣＡを読み出す。
【００４６】
さらに、ドライバ３は、Ｓ３において、制御エリアＣＡの良否識別領域２１に格納された良否識別コードに基づいて、当該データセクタＤＳが正常であるか否かを判定する。ここで、良否識別コードが正常を示すコードの場合（Ｓ３にて YESの場合）、ドライバ３は、Ｓ４において、当該データセクタＤＳのデータエリアＤＡを読み出して、当該データセクタＤＳの内容と、アプリケーション２へ読み出しが正常に終了したこととを伝える。
【００４７】
本実施形態では、論理ブロックの順番に、当該論理ブロックに対応するデータセクタＤＳが配されており、最初に、データセクタＤＳにアクセスする。したがって、論理ブロックとデータセクタＤＳとの対応を格納するテーブルを設けて、当該テーブルを参照しなくても、論理ブロックのアドレスから、データセクタ番号ｄｎへ容易に変換できる。さらに、データセクタＤＳが正常である限り、１セクタを読み出すだけで、セクタＳの内容を取得でき、アクセス速度を、代替しない場合と同様に維持できる。また、アクセスするセクタ数が少ないので、アクセスするセクタ数が多い場合と比較すると、不良セクタに遭遇する可能性が少なく、アクセス速度を短いレベルに維持できる。なお、上記Ｓ２〜Ｓ４が、特許請求の範囲に記載の第１アクセス工程に対応している。
【００４８】
一方、データエリアＤＡが不良セクタであった場合（上記Ｓ３にてNOの場合）、ドライバ３は、特許請求の範囲に記載の第２アクセス工程に対応するＳ５〜Ｓ９において、当該データセクタＤＳに対応するテーブルセクタＴＳへアクセスして、データセクタＤＳのスペアセクタＳＳを特定し、スペアセクタＳＳへアクセスする。
【００４９】
具体的には、Ｓ５において、テーブルセクタＴＳの制御エリアＣＡが読み出され、Ｓ６にて、当該テーブルセクタＴＳが正常であることが確認された後、Ｓ７において、当該テーブルセクタＴＳ中のデータセクタＤＳに対応するバイト位置から、データセクタＤＳのスペアセクタＳＳを示すスペアセクタ番号ｓｎが読み出される。例えば、図１に示すように、データセクタＤＳ2 が不良セクタの場合は、テーブルセクタＴＳ1 の第２番目のスペアセクタ番号ｓｎ（この場合は、１）が読み出される。
【００５０】
さらに、ドライバ３は、Ｓ８において、特定されたスペアセクタＳＳの制御エリアＣＡを読み出し、正常なセクタであることを確認した後、Ｓ９にて、当該スペアセクタＳＳのデータセクタＤＳを読み出して、正常終了する。なお、スペアセクタＳＳが不良セクタであった場合、アプリケーション２へ読み出しに失敗したことを伝える。
【００５１】
バッドセクタテーブル領域１３に、テーブルセクタＴＳとして格納されるスペアセクタ番号ｓｎは、バッドセクタテーブル領域１３の末尾のテーブルセクタＴＳから、データセクタＤＳの順番に格納されている。したがって、特に、テーブルセクタＴＳとデータセクタＤＳとの対応を示すテーブルを設けなくても、不良が発生したデータセクタＤＳに対応するテーブルセクタＴＳｎを算出できる。この結果、テーブルセクタＴＳが正常であれば、３つのセクタＳへアクセスするだけで、所望のデータを取得でき、上記テーブルを設ける場合よりもアクセス速度を短縮できる。なお、データセクタＤＳの良否判定は、制御エリアＣＡのみの読み出しで判定されるため、データセクタＤＳ全体を読み出す場合よりもアクセス速度が短縮される。
【００５２】
ここで、本実施形態で使用しているフラッシュメモリ１の故障発生率は、比較的低く、全体の０．１８％程度のスペアセクタ領域１２を設けて、セクタＳを代替すれば、１０年以上データを保持でき、１０万回以上、書き換えることができる。したがって、上述したように、データセクタＤＳ、テーブルセクタＴＳを配すれば、ほとんどのセクタＳに対して、３セクタ以内のアクセス回数でデータにアクセスできる。
【００５３】
一方、上記Ｓ６にて、テーブルセクタＴＳの不良が検出された場合、特許請求の範囲に記載の探索工程に対応するＳ１０において、ドライバ３は、スペアセクタ領域１２から、テーブルセクタＴＳのスペアセクタＳＳを探索する。本実施形態に係るスペアセクタＳＳでは、上述したように、セクタ番号領域２２へ、代替するセクタ番号（ｄｎまたはｔｎ）が格納されている。したがって、各スペアセクタＳＳの制御エリアＣＡを順次読み出し、代替するセクタ番号を確認すれば、所望のテーブルセクタＴＳを代替するスペアセクタＳＳを発見できる。なお、スペアセクタＳＳを探索する際には、制御エリアＣＡのみが読み出されるので、セクタＳ全体を読み出す場合に比べて、アクセス速度が短縮されている。
【００５４】
一方、本実施形態では、後述するように、スペアセクタ領域１２中、データセクタＤＳのスペアセクタＳＳは、スペアセクタ領域１２の始めから順番に配され、テーブルセクタＴＳのスペアセクタＳＳは、スペアセクタ領域１２の末尾から割り当てられているので、空いているスペアセクタＳＳは、両者の中間に配される。したがって、データセクタＤＳのスペアセクタＳＳを格納する領域と、テーブルセクタＴＳのスペアセクタＳＳを格納する領域とを予め設定する場合とは異なり、空いているスペアセクタＳＳの探索方法を変更しなくても、スペアセクタ領域１２を使い切ることができる。
【００５５】
ここで、フラッシュメモリ１では、どのセクタＳに不良が発生するかを予測することは難しいので、データセクタ領域１１に発生する不良セクタ数や、バッドセクタテーブル領域１３に発生する不良セクタ数は、予測しにくい。したがって、本実施形態のようにスペアセクタＳＳを配すれば、上記探索方法を変更したり、不良セクタ数を予測しなくても、スペアセクタ領域１２を使い切ることができ、フラッシュメモリ１のセクタＳの代替に好適である。
【００５６】
上記Ｓ１０にて、テーブルセクタＴＳのスペアセクタＳＳが特定されると、特許請求の範囲に記載の第３アクセス工程に対応するＳ１１〜Ｓ１３において、上述のＳ７〜Ｓ９と同様の処理が行われ、データセクタＤＳのスペアセクタＳＳからデータが読み出される。
【００５７】
なお、ドライバ３は、アプリケーション２から指示された論理ブロックが複数の場合や論理ブロックが複数のデータセクタＤＳに対応する場合は、上記Ｓ２以降の処理を繰り返して、各データセクタＤＳ、あるいは、そのスペアセクタＳＳからデータを読み出す。
【００５８】
また、フラッシュメモリ１へ書き込む場合には、ドライバ３は、図６に示すように動作する。書き込みは、読み込みと略同じであるが、図５に示すＳ４、Ｓ９およびＳ１３に代えて、特許請求の範囲に記載の書き込み工程に対応するＳ２１、Ｓ２２およびＳ２３が設けられており、ドライバ３は、書き込みが指示されたデータを、正常なデータセクタＤＳあるいはスペアセクタＳＳへ書き込む。
【００５９】
ところで、ドライバ３は、各セクタＳのデータセクタＤＳあるいは制御エリアＣＡにアクセスする際、当該セクタＳの制御エリアＣＡから、制御エリアＥＣＣ領域２５、あるいは、データエリアＥＣＣ領域２６を読み出して、ビット誤りが発生しているか否かを確認している。以下では、図７に示すフローチャートを参照して、訂正可能なビット誤りが検出された場合の処理について説明する。
【００６０】
すなわち、セクタＳに訂正可能なビット誤りが検出されると、ドライバ３は、Ｓ３１において、例えば、アクセスの状況などに基づいて、当該セクタＳが、（１）データセクタＤＳまたはそのスペアセクタＳＳであるか、あるいは、（２）テーブルセクタＴＳまたはそのスペアセクタＳＳであるかを判定する。例えば、図５（図６）に示すＳ２・Ｓ４（Ｓ２１）・Ｓ８・Ｓ９（Ｓ２２）・Ｓ１２・Ｓ１３（Ｓ２３）などでは、データセクタＤＳ、または、そのスペアセクタＳＳへアクセスしていると判定され、Ｓ５・Ｓ７・Ｓ１０・Ｓ１１などでは、テーブルセクタＴＳ、または、そのスペアセクタＳＳへアクセスしていると判定される。なお、例えば、制御エリアＣＡに、当該スペアセクタＳＳがデータセクタＤＳを代替しているか、テーブルセクタＴＳを代替しているかを示す値が書き込まれていれば、それに基づいて、スペアセクタＳＳの用途を判定してもよい。
【００６１】
上記Ｓ３１にて、（１）データセクタＤＳ、または、そのスペアセクタＳＳと判定された場合は、Ｓ３２において、空いているスペアセクタＳＳが探索される。本実施形態では、データセクタＤＳのスペアセクタＳＳは、スペアセクタ領域１２の始めから順番に配されているので、上記Ｓ３２において、ドライバ３は、スペアセクタ領域１２の始めのセクタＳから順番に、制御エリアＣＡを読み出し、例えば、セクタ番号領域２２の値などに基づいて、空いているスペアセクタＳＳを探索する。さらに、空いているスペアセクタＳＳが見つかると、Ｓ３３において、ドライバ３は、検出したビット誤りを訂正した後、正しいデータを当該スペアセクタＳＳへ書き込む。
【００６２】
書き込みが正常に終了すると、ドライバ３は、特許請求の範囲に記載の更新工程に対応するＳ３４において、図５のＳ５などと同様に、誤りが発生したデータセクタＤＳに関連するテーブルセクタＴＳを特定し、当該データセクタＤＳに対応するスペアセクタ番号ｓｎが、上記Ｓ３３にて正しいデータを書き込んだスペアセクタ番号ｓｎになるように、上記テーブルセクタＴＳを更新する。また、テーブルセクタＴＳが不良セクタの場合は、図５に示すＳ１０と同様に、当該テーブルセクタＴＳのスペアセクタＳＳを特定して更新する。
【００６３】
なお、上記Ｓ３３にて、書き込みに失敗すると、ドライバ３は、書き込みに失敗したスペアセクタＳＳの良否識別領域２１へ、例えば、書き込みに失敗したことを示すコードなど、少なくとも、正常ではないことを示すコードを書き込んだ後、上記Ｓ３２以降の処理を繰り返す。
【００６４】
一方、上記Ｓ３１において、ビット誤りの発生したセクタＳが、（２）テーブルセクタＴＳまたはそのスペアセクタＳＳであると判定された場合は、Ｓ４１において、スペアセクタ領域１２の末尾から順番に、空いているスペアセクタＳＳが探索される。空いているスペアセクタＳＳが見つかると、ドライバ３は、Ｓ４２にて、ビット誤りを訂正した後のデータを当該スペアセクタＳＳへ書き込む。さらに、ドライバ３は、書き込みに成功したことを確認した後、特許請求の範囲に記載の更新工程に対応するＳ４３において、ビット誤りが発生したテーブルセクタＴＳの良否識別領域２１を書き換え、可能であれば、良否識別コードがビット誤りの状態を示すように、それが不可能な場合でも、少なくとも、良否識別コードが正常ではないことを示すように訂正される。なお、上記Ｓ４２での書き込み失敗が検出されると、上記Ｓ３３での失敗と同様に、少なくとも正常ではないことを示すコードが書き込まれた後、Ｓ４１以降の処理が繰り返される。
【００６５】
ところで、上記では、アプリケーション２から指示される論理ブロックの長さが、フラッシュメモリ１のセクタ長と同一である場合を例にして説明したが、これに限るものではない。例えば、図８に示すフラッシュメモリ１ａでは、セクタ数は、図１に示すフラッシュメモリ１と同様に３ＦＦＦＨであるが、セクタ長が２０４８バイトに設定されており、制御エリアＣＡａの長さは、６４バイトに設定されている。
【００６６】
この場合、全セクタ数が同じなので、スペアセクタ領域１２の割合を同一に設定すると、スペアセクタＳＳの数は、図１の場合と同じく６１６セクタ（データエリアＤＡの記録容量で１２３２ｋバイト）である。ただし、セクタ番号（ｓｎ・ｄｎ・ｔｎ）に必要なバイト数が変わらないにも拘わらず、セクタ長が長くなっているので、１セクタに格納可能なセクタ番号の数が１０２４個となっており、テーブルセクタＴＳの数は、１６個（３２ｋバイト）で十分である。したがって、残余の１５７５２セクタ（３１５０４ｋバイト）がデータセクタＤＳに割り当てられる。なお、図９に示すように、制御エリアＣＡａの構造は、データエリアＥＣＣ領域２６がデータエリアＤＡａの誤り訂正符号を格納する他は、図４に示す制御エリアＣＡと同様であり、１７バイト目以降は、将来の拡張に備えて確保されている。
【００６７】
また、ドライバ３は、各セクタＳのデータエリアＤＡａを、論理ブロック長に合わせて４つのブロックＢに分割し、アクセスする論理ブロックが指示されると、当該論理ブロックに対応するブロックＢが含まれるセクタＳにアクセスする。これにより、アプリケーション２は、セクタ長に拘わらず、アクセスする論理ブロックを指示でき、アプリケーション２の開発時の手間を削減できると共に、１論理ブロックに１セクタ割り当てる場合よりも、セクタＳの利用効率を向上できる。
【００６８】
なお、上記の説明では、データセクタ領域１１におけるデータセクタＤＳの物理アドレスを論理セクタの順番に配し、バッドセクタテーブル領域１３におけるテーブルセクタＴＳの物理アドレスを論理アドレスとは逆順に配したが、これに限らず、例えば、算術演算や論理演算などによって、論理アドレスから物理アドレスへ変換できれば、同様の効果が得られる。
【００６９】
【発明の効果】
本発明に係るフラッシュメモリのアクセス方法は、以上のように、アクセス指示に対応する物理アドレスへ配された、データセクタにアクセスする第１アクセス工程と、アクセスしたデータセクタが不良セクタだった場合、当該データセクタに対応する物理アドレスに配されたテーブルセクタを参照して、スペアセクタへアクセスする第２アクセス工程と、テーブルセクタが不良セクタだった場合、スペアセクタ領域から、テーブルセクタのスペアセクタを探索する探索工程と、発見したスペアセクタを参照して、上記データセクタのスペアセクタへアクセスする第３アクセス工程と、誤り訂正符号で訂正可能なうちに、テーブルセクタを更新して、誤りの発生したセクタをスペアセクタで代替する更新工程とを備えている構成である。
【００７０】
上記構成では、データセクタが正常な場合や、データセクタとテーブルセクタとの双方が不良セクタではない場合など、ほとんどの論理ブロックへアクセスする場合の速度を余り低下させずに、誤りの発生したセクタを確実に代替でき、フラッシュメモリの信頼性を向上できるという効果を奏する。
【００７１】
本発明に係るフラッシュメモリのアクセス方法は、以上のように、上記構成に加えて、上記更新工程は、テーブルセクタに誤りが発生した場合、上記スペアセクタ領域のうち、各データセクタのスペアセクタが割り当てられる側とは逆の端部から順番に、テーブルセクタのスペアセクタを割り当て、当該スペアセクタへ、代替するテーブルセクタを示すセクタ情報を書き込む工程を含んでいる構成である。
【００７２】
上記構成によれば、スペアセクタ領域の空き領域は、データセクタのスペアセクタと、データセクタのスペアセクタとの間に配されるので、各セクタの不良セクタ数が、どのような比率であっても、空いているスペアセクタの探索方法を変更せずに、空いているスペアセクタを使い切ることができる。この結果、探索方法を複雑にすることなく、メモリ効率を向上できるという効果を奏する。
【００７３】
本発明に係るフラッシュメモリは、以上のように、フラッシュメモリの各セクタには、自らの良否が記録されていると共に、上記各セクタは、各論理アドレスに格納すべき情報が格納され、かつ、アクセスするセクタを特定する論理アドレスに対応する物理アドレスに配されているデータセクタと、所定のスペアセクタ領域に配され、不良が発生したセクタに格納すべき情報が格納されているスペアセクタと、上記論理アドレスに対応する物理アドレスに配され、上記データセクタを代替するスペアセクタを示す対応情報が格納されているテーブルセクタとに分けられ、上記スペアセクタのうち、テーブルセクタを代替するスペアセクタは、上記スペアセクタ領域のうち、データセクタのスペアセクタとは逆の端部から順番に配されていると共に、当該テーブルセクタのスペアセクタには、代替するテーブルセクタを示すセクタ情報が記録されている構成である。
【００７４】
上記データ構造が、フラッシュメモリに格納されていれば、上記アクセス方法にて、フラッシュメモリへアクセスできる。この結果、全体的に余りアクセス速度を低下させずに、いずれの物理アドレスのセクタに不良が発生しても、当該セクタをスペアセクタで代替でき、フラッシュメモリの信頼性を向上できるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すものであり、フォーマット後のＡＮＤ型のフラッシュメモリに格納されているデータ構造を示す説明図である。
【図２】上記ＡＮＤ型のフラッシュメモリが含まれるシステム全体を示すブロック図である。
【図３】フォーマット前の上記ＡＮＤ型のフラッシュメモリを示す説明図である。
【図４】上記ＡＮＤ型のフラッシュメモリのセクタ構造を示す説明図である。
【図５】上記ＡＮＤ型のフラッシュメモリからデータを読み出す際のドライバの動作を説明するフローチャートである。
【図６】上記ＡＮＤ型のフラッシュメモリにデータを書き込む際のドライバの動作を説明するフローチャートである。
【図７】上記ＡＮＤ型のフラッシュメモリにエラーが発生した場合のドライバの動作を説明するフローチャートである。
【図８】上記ＡＮＤ型のフラッシュメモリの変形例を示すものであり、当該フラッシュメモリに格納されているデータ構造を示す説明図である。
【図９】上記ＡＮＤ型のフラッシュメモリのセクタ構造を示す説明図である。
【符号の説明】
１・１ａ  フラッシュメモリ
１２・１２ａ  スペアセクタ領域
ＤＳ  データセクタ
ＳＳ  スペアセクタ
ＴＳ  テーブルセクタ
ｓｎ  スペアセクタ番号（対応情報）
ｔｎ  テーブルセクタ番号（セクタ情報）
【図１】
0003670151.tif 000002
【図２】
0003670151.tif 000003
【図３】
0003670151.tif 000004
【図４】
0003670151.tif 000005
【図５】
0003670151.tif 000006
【図６】
0003670151.tif 000007
【図７】
0003670151.tif 000008
【図８】
0003670151.tif 000009
【図９】
0003670151.tif 000010