(57)【特許請求の範囲】
【請求項１】
個々に消去可能なメモリブロックに分割されたメモリアレイへの書込みにおける欠陥を管理する方法であって、
メモリアレイ中のメモリブロックごとにブロック状態テーブルを生成するステップを備え、
メモリブロックに対する第１のオフセットアドレスでのデータのプログラム動作を実行するステップを備え、
前記メモリブロックへの前記プログラム動作にエラーが生じたか否かを決定するステップを備え、
前記プログラム動作にエラーが生じたときには、前記ブロック状態テーブルを調べて前記メモリブロックに以前に生じたエラーを決定するステップを備え、
前記プログラム動作にエラーが生じたときにおいて、前記メモリブロックには前記第１のオフセットアドレスについて以前に生じた不審の表示がないときには、前記メモリブロックについて、第１の不審の表示を前記第１のオフセットアドレスの表示とともに、前記ブロック状態テーブル中に生成するステップを備え、
前記プログラム動作にエラーが生じたときにおいて、前記メモリブロックの前記第１のオフセットアドレスについて不審の表示が前記ブロック状態テーブル中に以前からあったときは、前記データについて新たなオフセットアドレスを割当てるステップを備え、
プログラム動作にエラーが生じたときにおいて、前記メモリブロックには不審の表示が以前からあるが当該オフセットアドレスには以前からの不審の表示がないときに、前記メモリブロックについて第２の不審の表示を、前記ブロック状態テーブル中に生成するステップを備え、
プログラム動作にエラーが生じたときにおいて、前記メモリブロックに２つの不審の表示があるときは、前記メモリブロックを不良とマークするステップを備え、前記データのために新たなブロックを割り当てるステップを備える
ことを特徴とする、メモリの欠陥管理方法。
【請求項２】
個々に消去可能なメモリブロックに分割された複数のメモリアレイからの読出しにおける欠陥を管理する方法であって、
前記メモリアレイに不良ブロックの状態領域を生成するステップを備え、
メモリブロックに格納されたデータの読出し動作をオフセットアドレスについて実行するステップを備え、
前記メモリブロックへの前記読出し動作にエラーが生じたことを決定するステップを備え、
前記メモリブロックの優先的なクリーンアップを指示する信号を生成するステップを備え、
前記メモリブロックの優先的なクリーンアップの後で、前記メモリブロックが不良であると前記不良ブロックの状態領域にマークするステップを備え、
前記不良ブロックの状態領域に対してのポーリング動作を行って、不良のメモリブロックの決定が行えるよう前記メモリアレイ中のメモリブロックの状態を決定するステップを備え、
前記メモリアレイに不審状態テーブルを生成するステップを備え、
前記メモリブロックへの前記読出し動作にエラーが生じたとき、前記メモリブロックが不審である旨を前記オフセットアドレスとともに、前記不審状態テーブル中にマークするステップを備え、
前記メモリブロックの消去動作を、そのメモリブロックが不審であると２回マークされていると、前記不審状態テーブルの保持も含めて、実行するステップを備え、
前記メモリブロックの消去動作が不良となると、前記メモリブロックが不良であるとマークするステップを備え、
前記メモリブロックの消去動作が成功すると、前記メモリブロックの前記不審状態テーブルを除去するステップを備える
ことを特徴とするメモリの欠陥管理方法。
【請求項３】
個々に消去可能なメモリブロックに分割された少なくとも１つのメモリアレイを有するメモリにおける欠陥を管理する方法であって、
第１のメモリアレイの第１のメモリブロックに対して、書込みデータのプログラム動作を実行するステップを備え、メモリブロックの複数のデータには無効なグループのデータと有効なグループのデータとが含まれ、
前記第１のメモリブロックに対する前記プログラム動作にエラーが生じたか否かを決定するステップを備え、
前記第１のメモリブロックへの前記プログラム動作にエラーが生じたとき、前記第１のメモリブロックについて、それが不審であるとマークするステップを備え、
前記第１のメモリアレイの第２のメモリブロックに対して、前記書込みデータのプログラム動作を実行するステップを備え、
前記第２のメモリブロックに対する前記プログラム動作にエラーが生じたか否かを決定するステップを備え、
前記第２のメモリブロックへの前記プログラム動作にはエラーが生じなかったとき、前記第１のメモリブロックの有効なグループの各データを他のブロックへ移動させる予定を、前記第１のメモリブロックについてマークするステップを備え、
前記第２のメモリブロックへの前記プログラム動作にエラーが生じたとき、前記第１のメモリアレイを不動作とするステップを備える
メモリの欠陥管理方法。
【請求項４】
個々に消去可能なメモリブロックに分割された少なくとも１つのメモリアレイを有するメモリからの読出しにおける欠陥を管理する方法であって、
前記メモリアレイに不良ブロックの状態領域を生成するステップを備え、
前記メモリアレイ中のブロックに対して、メモリブロックに格納されたデータから要求されたデータを読出すための読出し動作を実行するステップを備え、メモリブロックには有効なデータ部分と無効なデータ部分とが含まれ、
前記メモリブロックへの前記読出し動作にエラーが生じたことを決定するステップを備え、
前記メモリブロックの優先的なクリーンアップを実行するステップを備え、その優先的なクリーンアップでは、前記メモリブロック中の有効な各データ部分が前記メモリアレイ内の他のメモリブロックへコピーされ、
前記メモリブロックの優先的なクリーンアップの後で、前記メモリブロックを不良であるとマークするステップを備え、
前記不良ブロックの状態領域に対してのポーリング動作を行って、不良のメモリブロックの決定が行えるよう前記メモリアレイ中のメモリブロックの状態を決定するステップを備える
ことを特徴とするメモリの欠陥管理方法。
【請求項５】
個々に消去可能なメモリブロックに分割された複数のメモリアレイからの消去における欠陥を管理する方法であって、
前記メモリアレイのメモリブロックに対して消去用の高電圧で消去動作を実行するステップを備え、
前記消去動作にエラーが生じたことを決定するステップを備え、
前記消去用の高電圧が低いか否かを決定するステップを備え、
前記消去用の高電圧が低いとき、前記メモリアレイへの書込み動作を不動作にするステップを備え、
要求があれば、前記メモリアレイへの読出し動作を行うステップを備える
ことを特徴とするメモリの欠陥管理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、コンピュータメモリ管理に関し、特に、フラッシュＥＥＰＲＯＭ（電気的消去可能なプログラマブルＲＯＭ）の動作中に発生する欠陥を管理する方法に関する。
【０００２】
【従来の技術】
最新のコンピュータシステムでは、長期間メモリを多量に利用している。一般に、この長期間メモリは、１枚またはそれ以上のハードディスクによって得られる。ハードディスクは電気−機械式デバイスであり、これには、中心軸の周りに迅速に回転するように固定された１枚またはそれ以上の平坦な円形ディスクが設置されている。これら平坦なディスクの各々は、磁気材料の或る形態で被覆された対向する面を有している。電気的信号によって駆動される機械式アームによって、磁気ヘッドを各ディスクの一面上に配置して、このディスク上の位置に書込むか、またはそれらの位置から読出している。これらの位置はセクタに並んでいる。ディスクの１本の完全なトラックは多数のセクタ（例えば１７個のセクタ）によって構成されている。各セクタは、固定量のデータを記憶することが可能で、代表的なデータ量は５１２バイト（使用するディスクによっては、２５６バイト、１０２４バイトまたはそれ以上のバイトのセクタが存在する）である。フォーマット形式によっては１枚のディスクの片面に、６００以上のトラックを有することもできる。今日のパーソナルコンピュータで利用されている代表的なディスクドライブでは、４０ＭＢ（メガバイト）を記憶できる。
【０００３】
このようなディスクドライブは極めて有用なものであると共に、パーソナルコンピュータの動作に殆んど必要なものとなっている。しかし乍ら、このような電気−機械式ドライブには必然的に欠点が存在する。即ち、これらドライブは比較的に重いものであると共に、コンピュータの重量を増大させ、特に、ポータブルコンピュータにはこの欠点が顕著なものとなってしまう。また、更に、比較的かさばってしまうと共に、コンピュータ内部において大きな空間を占有してしまう欠点がある。また、これらドライブは大電力を必要とし、特にポータブルコンピュータにおいては、多大な電池電力を消費する欠点がある。更に重要なことには、電気−機械式ハードディスクドライブは極めてショックの影響を受けやすいものである。落下したポータブルコンピュータ中のハードディスクドライブは、機能停止に極めて陥りやすい欠点がある。これによって、データが突然的に消去されてしまうようになる。
【０００４】
最近、このような電気−機械式ハードディスクドライブ以外の長期間記憶形態のものが、コンピュータ分野で好適に利用されるようになってきた。これら長期間記憶形態のものの１つとしてフラッシュＥＥＰＲＯＭと呼ばれるものがある。このフラッシュＥＥＰＲＯＭメモリは、一般的な行列形式でメモリセルとして、多数のフローティングゲート金属酸化物シリコン電界効果トランジスタから構成されており、更に、個々のセルをアクセス可能であると共に、これらセルのメモリトランジスタを２つのメモリ状態の一方の状態へ移行させる回路から構成されている。一般的なＥＰＲＯＭセルとは類似しているが、ＤＲＡＭメモリとは対比されるフラッシュメモリセルは、電源を切っても情報を保持している。フラッシュＥＥＰＲＯＭアレイは長期間メモリとして利用するのに適している多数の特性を有している。このメモリアレイは、軽量であり、極めて少ないスペースを占有し、且つ、電気−機械式ディスクドライブより少ない電力消費である。更に、重要な点は、特に丈夫な点である。代表的な電気−機械式ハードディスクを破壊するような落下を繰返し行っても、悪影響なく耐えることができる。
【０００５】
フラッシュＥＥＰＲＯＭの一つの特色は、このメモリ（または、あるメモリ部分）中のすべてのトランジスタ（セル）のソースターミナルに対して、同時に高電圧を印加することによって記憶内容を消去できることである。これらソースターミナルは全てアレイ中のメタルバスによって互いに接続されているため、全体を一度で消去しなければならない。一般に、電気−機械式ハードディスクでは、このディスクの第１領域中に情報を記憶し、次に、この情報を変更する場合に、ディスクの同一領域を書替えるのに対して、フラッシュメモリアレイで書き換えるには、有効な情報のすべてを消去しなければならない。これら有効情報は、無効（汚損した）情報と一緒にアレイ中に存在している。
【０００６】
この理由のために、フラッシュＥＥＰＲＯＭアレイのセクタをプログラミングすると共に消去する異なった構成が利用されている。最初に、アレイ全体を独立して消去可能な小さなブロックに分割し、１つのブロックを消去することで、再度プログラムが必要な有効データの量を減少させている。次に、データ入力時に情報を変更する場合に、変更した情報を、古いデータ上に書込む代わりに、利用できるブロック上の新しいセクタに書込むと共に、この古いデータを「汚損」として印しを付ける。消去が行われると、ブロック上の消去すべき有効データのすべてを新しいブロック中に書込み、次に、汚損したブロックを消去して、メモリの無キズなブロックとして利用する。このような一連の消去処理動作のために、フラッシュＥＥＰＲＯＭアレイを消去するのに、一般に、２秒間程必要となる。しかし乍ら、この消去は書換えられる各エントリと共に行う必要が無いので、汚損情報が消去するのに好都合な、十分な量だけブロックに溜るまで、この消去処理を遅延させることができる。このことによって、消去動作の回数を最小限に抑えることができる。更に、このような消去動作は、アレイを制御する装置が書込み／読取り動作で使用されていないときに実行できるようになる。
【０００７】
データを変更する場合および汚損したセクタを有するブロックを消去する場合に書込みを行うフリースペースが必要であるため、データアレイ中のスペースを常時、これらの目的のために利用する必要があるか、またはこのアレイが機能しないことを意味する。このことは、フラッシュＥＥＰＲＯＭメモリアレイ中で利用可能なスペースの管理に対して厳しい課題を与えることになる。
【０００８】
他のメモリ構成と同様に、フラッシュＥＥＰＲＯＭメモリアレイの故障が発生するので、このような故障を対処する手段を設ける必要がある。実際上、フラッシュメモリアレイが経験するような或る明白な故障は、トランジスタメモリデバイスの動作における一般的なものである。また、これら故障の多くは、メモリデバイスまたはアレイの故障でないことも事実である。結局、このようなエラーの発生時に、アレイまたはそのセクションを無効化するためには、継続的な利用可能な回路を無効化することである。しかし、このことは、フラッシュメモリのように、書込みおよび消去動作用のフリースペースを継続的に利用するメモリにとっては、特に好ましくない。また、アレイの或る部分が利用できなくなる他の故障の場合は、可能な限りデータをこの部分に保存し乍ら、この部分を利用しないようにする必要がある。この理由のために、フラッシュメモリアレイ中に発生するような種々のタイプの故障を、ホストによってアレイ中に記憶されたデータを保存する一方、同時に、次の動作のためにアレイ自身を保存するような方法で処理することが望まれている。
【０００９】
【発明が解決しようとする課題】
従って、本発明の目的は、フラッシュメモリアレイの動作中に検出された欠陥に対する、フラッシュメモリ構成の応答を制御する方法を提供することである。また、本発明の他の目的は、フラッシュメモリのブロック中の明らかな欠陥に対する取扱いを合理的に管理できる方法を提供することである。
【００１０】
【課題を解決するための手段】
本発明のこれらの目的ならびに他の目的は、個々に消去可能なブロックに分割したフラッシュメモリアレイにおいて、以下の方法によって実現出来る。即ち、動作中に起るかもしれないエラーを検出するために書込み動作または読取り動作の各々をチェックするステップを有するなる、記憶したデータの無欠陥状態を確保するためにフラッシュメモリアレイの動作をモニタするステップと、エラーが発生した時、そのエラーが繰返し起るかどうかを決定するために、少なくとも１回の再動作を行うステップと、冗長でないエラーがブロック上に１個以上発生した場合に、このブロックから移動すべき有効データを表わすためにこのブロックにマークを付するステップと、そのようなエラーがこのブロック上に１個以上起る場合に、このブロックから有効な情報を移動するステップと、ならびにエラーを繰返すブロックを使用しないようにするステップを具備したことを特徴とする方法によってこれら目的が達成される。
【００１１】
【実施例】
以下、本発明の実施例を説明する前に、本明細書で採用した表示法および命名法について説明する。
以下に記載した本発明の詳細な説明の或る部分は、コンピュータメモリ中のデータビットに関する動作をアルゴリズムおよびシンボル的表現によって表わされている。これらアルゴリズム的記載および表現は、データ処理技術分野における当業者によって利用され、これら当業者の仕事の本質部分を、同一分野の他の当業者へ最も効率的に移行するための手段である。本明細書において、アルゴリズムとは、所望の結果を導くための自己完結型のシーケンスステップを考察するためのものである。これらのステップは、物理的な量の物理的操作を必要とするものである。
【００１２】
通常、絶対的に必要なものではないが、これらの数量は、記憶したり、転送したり、組合せたり、比較したり、または操作可能な電気または磁気信号の形態をとっている。共通利用の観点から、原則として、これらの信号を、ビット、値、エレメント、シンボル、文字、期間、数値等として扱うことが便利であることが証明されている。しかし乍ら、これらの用語およびそれと類似の用語を、適当な物理的数量と組合せると共に、単に、これら数量に便利なラベルを適用することも可能である。
【００１３】
更に、実行された操作は、加算や比較のような用語で呼ばれることがある。これら操作は、人的オペレータによって行われる精神的な動作と組合わされるものである。このような人的オペレータの能力は、本発明の一部分を構成する種々の動作における大部分において必要なことでもないし、所望なものでもない。これら操作は、マシーンによる操作である。コンピュータまたはこれの一部分を動作させる方法操作と、演算自身の方法とは区別すべきものである。本発明は、電気的または他の物理的（例えば、機械的、化学的）信号を処理するコンピュータを操作するステップから成る方法および装置に関するもので、これによって他の所望の物理的信号を発生させるものである。
以下図面を参照し乍ら、本発明の実施例を詳述する。
【００１４】
すでに説明したように、フラッシュＥＥＰＲＯＭメモリは、アレイ状にメモリセルとして配列された多数のトランジスタから構成され、更に、個々のセルにアクセス可能であると共に、これらセルのメモリトランジスタを２つのメモリ状態の一方に設定できる回路とによって構成される。代表的なＥＰＲＯＭセルのようなフラッシュメモリセルは、電源が切られた場合でも情報を保持する。しかし乍ら、この代表的なＥＰＲＯＭセルとは異なり、フラッシュＥＥＰＲＯＭセルは、電気的に、局部的にプログラム可能である。
【００１５】
しかし、このフラッシュＥＥＰＲＯＭセルは、これを先に消去してしまわないと再度プログラムできないことが問題点である。フラッシュＥＥＰＲＯＭを消去するためには、このメモリ中に使用されているすべてのトランジスタのソース端子に高電圧を印加する。これらソース端子のすべてが、アレイ内で金属バスによって接続されているので、全体アレイ（または、所定のサブ領域）を一度に消去する必要がある。一般に、電気−機械的ハードディスクでは、このディスクの第１領域中に情報を記憶すると共に、この情報を変更する場合には、このディスクの同じ領域を再書込みすることができるが、このフラッシュＥＥＰＲＯＭメモリではそのようなことは不可能である。即ち、このような書込み動作をさせるためには、フラッシュＥＥＰＲＯＭのアレイの消去された部分に残存している、すべての有効情報を無効な（汚損された）情報と一緒に消去する必要がある。このことは、アレイを消去する毎に、すべての有効な情報をアレイ中に再書込みする必要となる。この消去処理では、消去された部分におけるすべての有効データを再書込みする必要があるので、この消去処理は極めて遅いものとなってしまう。一般に、このフラッシュＥＥＰＲＯＭアレイの消去処理は、１秒から２秒の間の時間を要するものである。そのような、消去時間のために、迅速にデータを変更するためには、このフラッシュＥＥＰＲＯＭの利用が妨げられてしまう。
【００１６】
しかし乍ら、電気−機械式ハードディスクに通常に使用されているような消去および再書込み方法とは異なり、かつシステムの全体動作を遅延させない、フラッシュアレイ消去および再書込み方法を考案すれば、ハードディスクによって情報が記憶される場合のように、フラッシュＥＥＰＲＯＭをデータを迅速に変化させることができる長時間記憶装置として利用できる。
フラッシュＥＥＰＲＯＭアレイの消去および再書込みに関する新規な構成が、本願発明の譲受人に譲渡され、同一に出願した米国特許出願第        号明細書「固体メモリディスク用方法および回路」（Ｓ．Ｗｅｌｌｓ出願人）に開示されている。この新規構成では、代表的な長期間記憶アレイが一連のブロックに配列されたフラッシュメモリから構成されており、これらブロックの各々が独立して消去可能である。一実施例においては、このアレイを多数のシリコンチップに分割し、各チップを更に、１６個のサブブロックに分割する。実際上、各サブブロックは、これらシリコンチップの他のチップ上のサブブロックと物理的に対を成しており、これらサブブロックによってこのアレイの論理ブロックを創設する。この中では、データの奇数バイトが一方のチップのサブブロック上に記憶されると共に、データの偶数バイトが他方のチップのサブブロック上に記憶される。フラッシュメモリの論理ブロックの各々は、このような他のブロックから独立して消去可能である。しかし乍ら、一般に、アレイの論理ブロックの各々は、１２８ＫＢ（キロバイト）のデータを保持しており、電気−機械式ハードディスクドライブのトラック上に通常状態でストア（記憶）された情報を２５６セクタ分だけ保持するのに十分である。従って、１チップ当り、１６個の独立して消去可能なサブブロックを有する３０個のチップから成るフラッシュメモリアレイは、３０ＭＢの電気−機械式ハードディスクが保持するデータ量と同一のデータ量を保持する。このように、データを２４０個の独立して消去可能なブロックに分割しても、一つのブロックの消去は極めて多量の情報を消去すること、即ち、すべてのデータを消去し、次に、有効データを各セクタを再書込みして書替えることになり、実際上不可能である。
【００１７】
このような問題点を克服するために、上述した新規な構成においては、データを、利用可能なスペースを有するフラッシュメモリアレイのいずれかの物理ブロックに書込んでいる。従って、例え、データの明白なアドレスがあろうとも、または、ブロック上のアドレスがあろうとも、データをアレイ中の空所に書込む。書込みを行っているブロックの次に利用可能なセクタに１つのデータを書込むと共に、ルックアップ（索引）テーブルを保持し、これに、論理アドレスと一緒に、ブロック上の物理的位置を記録する。この新規なアレイ構成によって、最初のブロックをセクタ毎に書込むことができ、更に、第２ブロックを同じ順序方法で書込むことができる。セクタ中のデータが変更され、その結果として、このセクタに再書込みが必要になると、そのデータを新しい物理的位置に書込み、ルックアップテーブル中のこのデータを変更して、新しい物理的位置を論理セクタ番号と一緒に記録すると共にこのデータが書込まれていた最初の位置を「汚損」とマークする。所定期間経過した後に、或る特別な汚損ブロックから有効情報を他のブロックへ移動すると共に、有効情報が移動したブロックの全体を消去することによってスペースを解放することが望ましい十分な数のブロックで満たされる。このことによって、すでに汚損としてマークされた消去済みブロックのすべてのセクタに等しいセクタの付加された番号を解放する効果がある。
【００１８】
このアレイ構成の特別な効果としては、バックグラウンド中に、ブロックの消去を実行できることである。即ち、このアレイの設備が、書込みや読取り動作によって占有されていない時に、消去動作を行えるように構成したことである。このような方法によってフラッシュアレイに情報を書込むと共に、これから情報を受信している外部ホストは、例え、この消去動作が１秒または２秒も必要であったとしても、消去動作が行われていることに気が付かない。
【００１９】
図１には、本発明が、実施されているフラッシュＥＥＰＲＯＭメモリアレイ１０がブロックダイヤグラム形態で表されている。このメモリアレイ１０には、フラッシュＥＥＰＲＯＭメモリの複数のブロックＢ０〜Ｂ１５が設けられている。各ブロックには、一般的な行および列の形態で配列されたフローティングゲート電界効果トランジスタメモリセル（略せず）が設けられている。また、このブロックは、特定のメモリブロックや、特定の行および列を選択するために配列された回路が設けられており、これによって、その位置のメモリデバイスに書込みまたは読取ることができる。これらトランジスタメモリアレイおよびこれと組合わされたアクセス回路の詳細なレイアウトは、当業者にとって周知であるので、本例では図示しない。
【００２０】
フラッシュメモリは、特別な設備が設けられたＥＰＲＯＭアレイと、本質的に同一であるので、アレイ全体（または、個々に消去可能なブロック）を、このアレイのすべてのメモリトランジスタのソース・ターミナルに高電圧値を同時に印加することによって消去できる。このような消去によってこれらメモリセルの各々を１の状態に設定される。この状態において、０または１をセルに書込むことができる。１によって、このセルが同じ１の状態に保持され、他方、０によってこのセルが０の状態に切換えられる。セルは、そのソースターミナルに、消去のための高電圧を印加しない限りにおいて、この０状態から１状態へ切換えることが出来ない。これらメモリトランジスタのすべてのソースターミナルを一緒に結合したので、０状態におけるセルは、全体のアレイが再び一旦、消去されるまでその状態に維持される。
【００２１】
図１のアレイ１０において、メモリのブロックＢ０〜Ｂ１５が、アレイ１０の第１チップ１１上に配置されて描かれている。一実施例において、追加のシリコンチップ１１（例えば３０）の各々は、アレイ１０の追加のブロックを有し、合計で２４０個のブロックが得られる。本例においては、実際に、いずれのブロックも一対のサブブロックから構成され、これらサブブロックを隣接のチップ上に配置できる。これらサブブロックは、入力と、出力と、以下のような選択導体を有している。即ち、奇数バイトのデータを一方のサブブロック中に記憶させ、偶数バイトのデータを他方のサブブロックに記憶させるような選択導体である。この観点から本明細書において、ブロックは、そのような一対のサブブロックを包含するものと考えられる。なお、図中「Valid」は「有効データ」を、「Dirty」は「汚損データ」を、「Unused」は「未使用箇所」をそれぞれ示している。
【００２２】
一旦、いずれか１つのブロックを消去してしまうと、データを、全体ブロック上の何れの位置に書込むことができる。このアレイ１０の書込み、読取り、および消去動作を、コントロール回路１４によって制御し、このコントロール回路１４は、ホストからデータやコマンドを受信する。このコントロール回路１４には、マイクロプロセッサや、ＲＯＭが包含されており、このＲＯＭには、マイクロプロセッサを動作させるためのプロセスをストアすることができ、これによって本明細書に記載されている種々のコントロール動作を実行する。これらマイクロプロセッサおよびＲＯＭを用いて、本発明に従って処理を実行する。本発明の目的のために、このコントロール回路１４には、コマンドステートマシーンおよびライトステートマシーンが設けられていると考えることもできる。一実施例においては、このコントロール回路１４の一部分として説明されているが、これらコマンドステートマシーンおよびライトステートマシーンは、物理的には、各チップ１１の一部分である。
【００２３】
このコマンドステートマシーンによって、コントロール回路１４をフラッシュＥＥＰＲＯＭメモリアレイとの間のコマンドインターフェイスが得られる。コマンドステートマシーンによって、フラッシュメモリアレイへのすべてのデータ転送が制御される。また、コマンドステートマシーンによってホストへのデータの転送のシーケンスコントロールがなされるので、アレイへの書込みおよび読出しが適切な順序で行われる。このような目的のために使用されるコマンドステートマシーンおよびライトステートマシーンは、いずれも、本願の出願人に譲渡されているＦａｎｄｒｉｃｈ等の米国特許出願番号０７／６５５，６４３明細書「コマンドステートマシーン」１９９１年２月１１日出願、およびｋｙｎｅｔｔ等の米国特許出願番号０７／６５４，３７５号明細書「不揮発性半導体メモリのプログラミングおよび消去方法および回路」１９９１年２月１１日出願、に記載されている。
【００２４】
ホストが、アレイにストア（記憶）すべきデータをこのアレイの或るブロック中に書込みを開始すると（このブロックは完全に消去済み）、ストアすべきデータが、セクタ毎に、順番にこのブロック中に書込まれ、これは、このブロックがデータで満たされるまで行われる。次に、書込み動作が、フリースペースを有する次のブロックに進む。書込み動作が完了した後では、いつでも、この情報をアレイ１０から、このデータがストアされているブロックおよびセクタに対して質疑応答することによって読取りができる。
【００２５】
上述した構成によれば、データを論理セクタ中にストアする。これらセクタは、一般的な電気−機械式ハードディスクにデータをストアする時に利用されている物理的なセクタと、これらセクタをあらゆる寸法とすることができること（以下詳述）を除いて類似している。セクタ中のデータを変更する場合に、この変更したデータが、アレイ１０のブロックのいずれかの新しい空のセクタに書込まれる。一般的には、物理的な順序の次の空のセクタに書込まれる。古い情報の上に書込む代りに、このような書込みが行われる。これは、ストアされている全体ブロックを消去した場合にのみ、古い情報が再書込みされるからである。従って、新しい情報を充満されていないブロック（例えばブロックＢ７）上の新しい位置に書込むと共に、この古い位置に無効（汚損）のマークを付ける。これは、データが無効であることを表わすために、記憶しているデータに０を書込む（以下の方法によって行なう）ことによりマーク付けが行われる。アレイのブロックを消去することなく、あらゆるメモリセル中にゼロの値を書込むことが可能である。
【００２６】
データを置換する装置のために、データが何処にストアされていることを表わすのに用いられるセクタ番号は、物理的なセクタ番号よりむしろ論理的なセクタ番号である。このことは、一般的な電気−機械式ハードディスクにデータを構築するために利用される物理的セクタと比較されるものである。このような方法を実現するために、ルックアップテーブル１７（これは、コントローラ１４と組合わされたＲＡＭ１６の一部分にストアされている）を、アレイ１０と一緒に利用するので、この結果、特定の論理セクタが存在するアレイ１０中の物理的位置を決定出来る。
【００２７】
また、データを置換できるこのような構成のために、アレイの各ブロックは、所定時間経過後に、「汚損」のマークが付けられ、記憶のためには利用不可能な沢山のエントリを有するようになる。従って、以前にストアされて変更されたデータでアレイ１０が満たされると共に、記憶すべき新しい、または変更した情報のためのスペースを確保するために、ブロックから汚損された情報をクリアする必要が生じるようになる。一般に、アレイ１０のブロックの内、最も汚損しているブロックが消去用に選ばれる。無効なデータは移動する必要がないので最小量のデータをアレイの他のブロックに移動させるだけでよいからである。有効な情報が、他のブロックに一旦書込まれ、新しいアドレスがルックアップテーブル１７に記録されると、情報が読取られたそのブロックが消去される。次に、動作中、これが完全にクリーンなブロックとして置き換えられる。このような「クリーンアップ」動作が実行できるようにするために、ブロックのいくつかを、クリーンアップ動作が必要になった時に利用するために留保しておく必要がある。
【００２８】
図２は、上述した本発明の効果を実現するために個々のブロックに対して利用される論理構成を図示するものである。また、この図２は、データがアレイ１０の各ブロックにストアされる方法を理解するために有益な理想化された図面である。この図２は、短形の代表的なブロック２０が図示されている。この短形領域には、複数個のトランジスタデバイスが設けられており、これらトランジスタを配列して、各ブロックに与えられる１２８ＫＢ（キロバイト）の記憶容量が得られる。前述したように、個々のブロックの領域は、実際には、２つの物理的チップ上のサブブロック間に分割されており、その一方は奇数バイトのデータを保持すると共に、他方は偶数バイトのデータを保持している。個々のトランジスタや、種々の行／列選択ラインおよびブロック動作用の他の導体が図示されていないが、フラッシュメモリを設計する技術分野における当業者にとっては周知なものである。
【００２９】
図２から明らかなように、データをブロック２０において、このブロックの頂部から開始して底部に近づく方向に記憶している。このブロック２０の頂部において、このデータ用のアドレスとして、動作システムによって利用されている論理セクタ番号が、セクタ変換テーブル（またはヘッダ）と呼ばれている識別領域中にストアされる。例えば、最初のセクタ番号５８１１２が、この頂部の第１エントリ用のヘッダ中にストアされている。各ヘッダ内のセクタ番号に続いて、種々の属性ビットおよびポインタ値がストアされる。本例における属性は、エントリの有効性の表示、訂正番号、そのデータを圧縮するかどうかの表示、およびこのエントリにはデータが含まれているかどうかを表すビットである。このエントリの有効性の表示は、少なくとも１ビットを記憶する。この１ビットは、このビットが１の値であれば、有効を表し、０の値であれば無効を表す。このビットを複製して、正しい有効性がストアされていることを保償する。一実施例によれば、この訂正番号は４ビット値である。エントリにデータが包含されているかどうかを表すビットを利用することによって、データを用いずにセクタを創設できるようになる。他の情報を特定の実施例においてヘッダ中にもストアできる。
【００３０】
ポインタ値によって、ブロック２０上の物理的アドレスを指示（ブロック上の物理的な開始アドレスからのオフセット）し、このブロック２０には論理セクタ５８１１２用のデータの第１バイトがストアされている。図２の矢印は、論理セクタ５８１１２用のデータの第１バイトがストアされている物理的な位置を表している。記憶すべきデータ量は書込み動作時に知られているのので、このブロック２０の一実施例においては、このデータが前に記憶されたデータまで書込みが行われることによって記憶される。このブロック２０上の第１セクタである論理セクタ５８１１２の場合に、オフセットとして記憶されたアドレスと共に開始しながら、データが書込まれる。このオフセットは、データ領域の開始点に対するセクタ番号５８１１２と組合わされている。このデータ領域は、このブロック２０の左上側の隅から延在している矢印によって表された開始ポインタ値によってマークが付されている。
【００３１】
論理セクタ５８１１２に書込まれるデータの量は固定されず、変化させることができる。コンピュータシステムと記憶システムとの間の代表的なインターフェイスにおいては、データを５１２バイトのセクタ中に記憶のため割当てる。図２には、第２の論理セクタ５と、セクタ５用のデータの第１バイトがストアされている、ブロック２０上の物理的な位置を示すそのポインタが図示されている。このセクタ５用のデータが、最新に書込まれたデータセクタ（セクタ５８１１２）の上から開始し、下方向へ延びる領域内にストアされるので、新しいデータセクタの最後の列がこのセクタ５８１１２の第１列の直前の列中に存在する。新規なセクタの各々に対するデータは、最後に書込まれたセクタ用のデータの直上の列に書込まれるので、ほんの僅かな量のデータスペース（平均値として１バイト）だけが、この構成のブロック記憶計画中で無駄になるだけである。記憶領域へ転送すべきデータを圧縮する場合に、固定サイズの記憶構成において通常空白として残存している記憶スペースの量を除去することができる。このことは、明らかにデータフル状態のハードディスクにおける極めて多量の不使用スペースと対照的である。
【００３２】
ブロック２０のあらゆるセクタ内にストアされたデータを以下の方法によって検索することができる。即ち、セクタ用のヘッダに近接することによると共に、このデータの開始位置に対するポインタを検索し、更に、検索中のセクタ番号の直前に記憶された番号を有するセクタの開始位置に対するポインタを検索することによってデータの検索が実行できる。これら２つの値によって、セクタ中で検索されているデータ用の開始および終了位置を決定する。すでに指摘したように、論理セクタ番号は、チップ番号、ブロックおよびヘッダオフセット値を含むヘッダの物理的な位置と一緒に、ルックアップテーブル１７中にストアされる（一実施例において、このテーブルは、アレイ１０の他のコンポーネントを有するシリコンチップ上のスタテックＲＡＭ１６内に設けられている）。このルックアップテーブルを、コントロール回路１４のマイクロプロセッサによって維持している。
【００３３】
図２は、またセクタ８６７用のヘッダを表している。このセクタはデータ（ＷＯＤ）を用いずに書込まれる。
フラッシュメモリアレイによって利用されたデータを再書込みする異例の構成は、以下の条件を必要とする。即ち、メモリ割当てシステムによって、書込みまたは再書込みを必要とするデータに対して利用可能な、新規または新たに消去したフリーメモリスペースを継続的に形成することが要求される。このことによって、ブロックの或る数量が常時利用可能であり、これは汚損されたデータを保持するブロックがクリーンアップされると共に、これら汚損セクタが解放され得ることが要求されている。
【００３４】
あらゆるメモリアレイの動作中に発生する問題点は、このメモリを読取り、書込み、消去する試みが時々失敗することである。これら失敗（故障）は多くの理由から生じるものである。これら故障のいくつかは、アレイの物理的な故障によるものである一方、他の故障は、外部信号の或る形態のものが原因となっている。アレイの故障は再度発生すると共に、これによってアレイに正しく書込み、読取りおよび消去が行われないために、許容することが出来ないと共に、このアレイの問題を生じさせる部分を動作から除去する必要がある。一方、繰返すことのない外部エラーはこの結果を必要としない。
【００３５】
代表的な電気−機械式ハードディスクには、ディスクを設置する前に、テストが実行され、これによって不良セクタが存在するかどうかを決定する。発見されたセクタには不良のマークがこのディスク上のテーブル中に付与される。フラッシュメモリアレイは、サイズが変更されると共に、クリーンアップ毎およびセクタ毎に、物理的位置を変化する論理セクタを利用するので、このようなマーク付与方法を実行することは極めて困難である。従って、アレイの一部分が繰返しエラーを発生しているのが見つかると、このアレイの全体のブロックを動作から外す必要がある。このことによって困難な状況が生まれてしまう。その理由は、これによって汚損したブロックのクリーンアップ用に利用できるアレイのブロックの数を減少させてしまうからである。従って、特に、動作エラーを訂正する伝統的な処理を実行して、アレイからのブロックの不必要な移動を排除する必要がある。
【００３６】
フラッシュメモリアレイの動作中に起る故障には種々の異なったタイプのものが存在する。本発明は２つのタイプの故障が関与している。ブロックメモリが経験する第１のタイプの故障は読取り動作中に発生するデータビット故障である。このような故障は、アレイの物理的条件によるものか、または非反復性エラーのある形態によって生じるものである。第２のタイプの故障は、フラッシュメモリの故障によるもので、書込みまたは消去動作を実行した時にプログラムするフラッシュメモリの故障である。
訂正することができるデータの読取り動作中に発生するデータビット故障は、ブロックをアレイから除去する原因とはならない。その理由は、アレイの機能を果たすには、汚損したブロックがクリーンアップされるときに、データを受けるように準備された多数の余分なブロックが存在する必要があるからである。これら余分なブロック無しでは、新規なまたは更新されたデータが現れたとき、アレイはそのデータ用のスペースを得ることが出来ない。
【００３７】
図３は、読取りエラーの検出に応答して実行されるプロセスを表す。一般に、絶対条件ではないが、このようなプロセスをソフトウェアで実現すると共に、コントローラ１４の一部分としてのマイクロプロセッサによって実行する。また、概して、このプロセスをＲＯＭに記憶させている。このＲＯＭもコントローラ１４の一部分である。図３のプロセスは、アレイ用の可能な限り多くのメモリを利用するという要求に基づくものである。このプロセスは、セクタからデータを読出す動作が行われる第１ステップで開始する。全体のセクタが読取られ、次にこのデータをエラー検出回路に転送する。この検出回路は、コントロール回路１４の一部分を成す。このエラー検出回路は、セクタ中にデータと一緒に記憶されて、エラーが発生したかどうかを決定する、エラー検出および訂正コードの４バイトを利用している。本発明の一実施例では、このエラー検出および訂正コードによって、単一および複数ビットエラーの検出が実行される。
【００３８】
エラー検出および訂正コードの例および、このようなコードを利用して実行される動作の例は、例えば、Ｃｉｎｕｓ  Ｌｏｇｉｃ  Ｐｒｅｓｓ社発行（１９９０年）の「Ｐｒａｃｔｉｃａｌ  Ｅｒｒｏｒ  Ｃｏｎｅｃｔｉｏｎ  Ｄｅｓｉｇｎ  Ｆｏｒ  Ｅｎｇｉｎｅｅｒｓ」改訂第２版、ＧｌｏｖｅｒおよびＴｒｅｎｔ共著に詳しく述べられている。
【００３９】
図６は、エラー検出／訂正の基本方法を示し、この方法を利用してエラーを訂正している。この方法は、行列形式で構成されたメモリアレイにおけるエラーの検出／訂正を、より良く説明するためにのみ、絵図的に表したもので、ここで利用される特定のエラー検出および訂正用コードは、本発明にとって重要なものではない。この目的のため、メモリセル位置の４つの列と４つの行のみが図示してある。この方法は、パリティチェック構成を利用しており、ここでは、各列と各行に値が割当ててあり、この割当ては、特定の列または行に記憶された１の値を有するビットの総数が、偶数または奇数であるかに依存するものである。例えば、第１、第３および第４列のように１の値の合計が奇数の場合に、１をストアしてこの合計値を偶数にする。また、第２、第３、第４行のようにこの合計が偶数の場合に、０をストアして、その合計が偶数のままとする。これらエラーチェックビットをそれを書込むようにデータから発生させると共に、これらチェックビットを、データが書込まれるように、このデータと一緒にセクタにストアする。一実施例によれば、このタイプのエラー検出／訂正データの４バイトがデータの各セクタと一緒にストアされる。このデータをセクタから読出す場合に、パリティチェックビットを読出したデータの値に対してチェックすることができる。若し、単一ビットエラーが発生すると、単一列および単一行に対するパリティビットが、読出した値の合計値に一致しないことがわかる。例えば、第３列と第３行との交差点においてストアされている１の値を０として読出した場合に、この列のパリティ値が０であるのに、この列用の記憶したパリティビットは１であり、更に、この行用のパリティ値が１であるのに、記憶したパリティビットが０である。エラーチェック比較動作中のこれら２つの失敗によって、この交差点におけるビットが正しくないことが検出されると共に、このビットを適切な１値に訂正できるようになる。
【００４０】
図３に示したエラー検出ステップが一旦実行されると、エラーが発生しない場合には、このステップは直ちに完了状態に移り、それ以上のステップを要求しなくなる。セクタから読取ったデータをホストによって利用できる。
【００４１】
また、このエラー検出ステップ中にエラーを検出すると、この処理ステップは、ブロックがクリーンアップ用にマーク付けされるステップまで移動する。この結果、有効データを他のブロックへ移動すると共に、このブロックを優先順位で消去する。このマーク作業は、エラー検出回路によって信号を発生させることによって完了し、このエラー検出回路によってエラー検出用の欠陥読取りプロセスを通知する。次に、この欠陥読取りプロセスによって信号を発生させ、この信号を利用して、ＲＡＭ１６中に設けられた、クリーンアップ処理用のコントロール回路１４のマイクロプロセッサによって保持されたクリーンアップデータ構造にマークを付けている。このデータ構造は、特定のブロックのアドレスを表すと共に、この特定ブロックを優先順位でクリーンアップすべきことを表す。このクリーンアップ処理はその信号を受信していることを表し、更に、この処理が作動開始した時は何時でもこれに対応するようになる。このようなクリーアップ処理は、本願発明と同一出願日で、同一出願人へ譲渡されたＳ．  Ｗｅｌｌｓによる「浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法」と題する米国特許出願第          号明細書に詳述されている。
【００４２】
優先的にクリーンアツプするためにブロックにマークを付けた後で、この処理を、セクタ中のデータを再度読出すステップまで移動する。この処理ステップの動作スピードは、最初の処理ステップに比べて極めて遅いスピードで実行する。このように、情報を低速度で再び読出す理由は以下の通りである。即ち、フラッシュＥＥＰＲＯＭメモリアレイ中のブロックから読出動作を行なっている時に発生するエラーの大部分が原因であることが見つかった。これは、何回かの切換動作の後では、メモリセルによって発生された信号に対して、データを読み取るようにレベルを合わせるために長時間が必要となるからである。このデータは完全に良好なものであると共に、そのようなセクタに対する読出し動作を低下させる方法が見つかったら、このセクタからそのデータを読出すことが可能となる。読出しエラーが検出された場合の低速読出し動作を自動的に実行する回路は、本願と同一出願日に出願され、同一出願人に譲渡された米国特許出願第−−−−号、（Ｓ．  Ｗｅｌｌｓ発明）の「半導体メモリ中の読取り動作の信頼性を改善する方法および装置」に、開示されている。そのような読出し動作の再試行において、この情報をエラー無しで読取った場合に、この処理は完了し、このエラーは非反復性のものであると考えられ、単純に無視できるものである。読取り動作を低速化する処理が確立されたために、データを継続してアレイの領域に書込んだり、読取ることができる。この領域を利用し乍ら、データの損失が発生しないと共に、このエラー付きブロックに対して、クリーンアップの優先順位がすでに付けられているので、このブロックをアレイの動作部分として残す。
【００４３】
しかし乍ら、再読出動作中に、第２エラーが発生すると、このエラーは、より低速度の読取り動作によって補正できない１でないことがわかる。従って、このフロー処理は、コントロール回路１４のマイクロプロセッサ上で走るエラー訂正のソフトウェア処理によって、エラー訂正が実行されるステップへ移り、このエラー訂正は、情報の各セクタでストアされたエラー検出および訂正データの４バイトを利用して行われる。このエラー訂正は、公知技術であると共に、上述した方法で実行される。すでに指摘したように、この４バイトの情報によって、特定のセクタを読取る動作中に発生する単一およびマルチビットエラーの訂正を実行できる。このエラー訂正が成功した場合に、このフロー処理を終了する。
【００４４】
このブロックを依然としてサービス可能状態のままに残すようなこの結果は、このフロー処理によって、このデータを回復できる実際のビットエラー用の訂正結果であると考えられる。その理由は、このエラーは、訂正可能な１（これからデータを回復可能）であり、このブロックの記憶領域がアレイの全体動作に対して極めて価値のあるものであり、且つ、すでにマークを付したクリーンアップ優先度による完全な消去によって欠陥を完全に補修できるからである。
【００４５】
しかし、エラー訂正動作が失敗し、且つ、データを回復出来なかった場合には、このことは、エラーのタイプがシングルビットエラーまたはマルチビットエラーでないことを表し、このエラーに対して、訂正コードおよび回路によって有効データを発生することが期待されている。従って、この訂正回路によって、失敗を表す信号を訂正のために発生する。このブロック上のデータ構造に割当てられたブロックの領域が、図２の矩形の底面に「２１」として表示されており、この矩形形状によってブロックを構成している。この信号に応答して読取りプロセスによりマーク信号が発生され、このマーク信号によって、ブロックが故障であることを表示するために、この故障ブロックの部分２１内の４バイトの質問可能な状態領域にマークが付与される。また、この信号に応答して、読取りプロセスは、クリーンアッププロセスによって利用されるクリーンアップデータ構造用の信号を発生させ、これによってクリーンアップ優先順位用のブロックにマークを付けると共に、クリーンアップ処理後、このブロックに不良のマークを付ける。このことによって、バックグラウンドクリーンアップ動作を変更する効果が得られ、この結果、このブロックから有効なデータを移動させると共に、最終的には、このブロックを不良のマークを付け、使用しないようにする。
【００４６】
本発明の一実施例によれば、ブロックに不良のマークを付すためには、アレイを構築しているチップのすべての０ブロックのブロックデータ構造の２４０ビットスペース中に、表示を付すことによって実現する。このスペースは、図２の番号２１で示されている各ブロック上のデータ構造に割当てられたブロックの同一領域内に残っており、この２１で示されたものは、ブロックを構成する矩形の底面に存在している。ブロック「０」のすべてにマークを付すことによって、不良であるブロックから離間した領域内にあるブロックは不良であることを表す表示がストアされる（更に、このため、このことは、その故障状態の表示を正しくストアすることに依存しないようになる）。また、すべてのチップ上のすべての「０」ブロックのブロックデータ構造のこの領域のコントローラ１４により、特定のブロックが不良かどうかを表すための多数値を利用したポーリング動作によって、あらゆるブロックの状態を正しく表すことができる。このポーリング動作は、「０」ブロックの各々の不良ビットスペース（本例では、２４０ブロックに対して２４０ビットが割当てられている）を走査すると共に、各ブロック用の不良ブロック表示数を計数することによってシステムパワーアップで実行される。この場合、あるプリセット数（例えば多数値）より大きな数によって、ブロックが不良であることを表示している。
【００４７】
図４は、アレイの１つのブロックの１つのセクタに書込みを実行している間にエラーが発生する状態の下で、アレイの回路の動作を取扱うプロセスを表している。電気−機械式ハードディスクのようなメモリアレイに書込み動作する場合のプロセスに比較して、このアレイに書込まれたデータの各ワードを、これを書込んで動作が正しく行われていたかどうかを決定するように、アレイ１０のライトステートマシーンによってチェックする。同様のチェックが、このアレイのブロックを消去して、適切な消去動作が実行されるようになった時には何時でも実行される。これら動作の各々において、アレイに書込まれたデータ（消去動作では０値を書込む）とアレイに書込まれたデータとの間の比較動作は、これら書込の動作が実行された後に行う。このような動作の詳細については、上述した米国特許出願明細書「不揮発性半導体メモリのプログラミングおよび消去回路および方法」に記載されている。
【００４８】
アレイへの書込み動作中に、比較チェックが行われて、エラーが発生したかどうかを決定するようになる。エラーが発生しない場合には、このプロセスを終了して、次のワードを書込む。エラーが発生した場合には、このプロセスは、テストのステップへ移動する。このテストによってプログラミング電圧が不良になったかどうかを決定する。即ち、プログラミングおよび消去動作には、このアレイと組合わされた他の機能を実行する場合に比べて高い電圧を必要する。プログラミング電圧が不良になった場合に、アレイ全体を書込み／消去動作に対して不作動とする。これには高電圧が要求される。しかし、このような高電圧を必要としない読取り動作が許可される。一般に、プログラミング電圧は、電力がシステムに再度供給された場合に得られるようになる。
【００４９】
比較によって、プログラミングエラーが起ったが、プログラミング電圧が得られることを表す場合に、書込み動作が実行された特定のセクタに、ヘッダの属性フィールドの有効ビットで「汚損」とマーク付けされるので、この結果、このデータはホストによって利用されない。
【００５０】
次のステップに移り、ここでは、論理セクタのデータ部分へのデータの書込み中より、むしろ、ヘッダ情報の書込み中に、エラーが発生したかどうかを決定する。データが不良であれば、以下に説明する一般的なタイプの応答を行う。しかし、ヘッダ情報の書込み中に書込みエラーが発生すると、ポインタ値によって表されたオフセットが不良となる。ここで、セクタの実際の寸法は変化するので、２つのポインタが各セクタのデータを決定するために必要となることに注目すべきである。このポインタを利用して、書込み中のセクタと続くセクタとから、前述した方法に従ってデータを検索するので、この故障は、セクタ中のデータを高い信頼度で回復することができないと共に、この故障したセクタに続いて、書込まれるすべてのセクタ中のデータに対するポインタを高い信頼度で配置できたと考えられないことを意味する。
【００５１】
本発明のプロセスによれば、このような問題点を解決する方法が提供できる。ヘッダの書込み中エラーが起ると（即ち、データが書込まれる前に起ると）、不審信号がセクタに対して発生され、この不審信号の使い方は以下に説明する。次に、先行ヘッダを読取る。この先行ヘッダを、ブロック上の次の後続ヘッダ位置に書込むと共に、汚損マーク付けする。この複製ヘッダには、正確なオフセット値（ポインタ）が包含されており、この値から次の後続するセクタに書込むことができる。このことによって追加のセクタがブロックに対して書込まれる。この複製ヘッダ中の正確なポインタによって、書込みエラーを含んだ先行セクタの終端を指すことができる。従って、次のセクタをこのブロックに書込んだ時に、最後の良好なセクタが書込まれたブロックのデータスペースの終端まで書込みが行われる。このことによって、追加のセクタに対する正確なポインタが得られるだけでなく、データスペースが記憶用に失われないように出来るようになる。このデータスペースは、書込まれてはいないヘッダ書込みエラーと一緒に、セクタへ予め割当てられている。
【００５２】
書込み動作中に、ヘッダまたはデータ領域中にエラーが発生したかどうか、このプロセスはチェックして、ブロック状態領域中のブロックの状態を決定する。書込み動作が実行されたブロックに対して、４バイトで「不審」とマーク付けることもでき、この４バイトは、ブロック状態領域内でこの目的のために割当てられている。更に、このフロープロセスによって、状態ブロックにおける不審バイトを再検査してこれを決定する。一実施例によれば、２バイトが第１不審マーク処理（Ｑ１）に割当てられ、更に、２つの追加バイトを第２不審または故障マーク処理（Ｑ２）に割当てられている。このような不審マーク処理には、故障したセクタのオフセット番号が包含されているので、その位置を決定できる。一実施例によれば、これら不審バイトもＲＡＭ１６に記憶することができ、この結果、コントローラ１４によって、書込み中のブロック上のブロック状態領域に向かうことなく、不審となるデータを、ブロックが保持していることを決定できる。また、全体の４バイトの代わりに、各ブロックのシングルビットをＲＡＭ１６にストアすることもできる。このことによって、コントローラ１４は、故障した書込み動作中に、ＲＡＭ１６中の小さなデータ構造を再検査することが可能となり、これによって、ブロック状態領域中のこのデータの実際の位置を決定する前に、このブロックはいくつかの不審なデータを有しているかどうかを決定する。
【００５３】
このブロックがすでに「不審」とマーク付けされていなければ、このブロックを、ブロックステータス（状態）領域の不審テーブル中のブロック上に、不審状態とマーク付けする。これは、２つの第１Ｑ１バイトにマーク付けすると共に、エラーのオフセットを表示することによって実行される。
【００５４】
このように、ブロックに不審状態のマークを迅速に付けることは、極めて急激な結論のように見える。即ち、このブロックは不適切に動作していると結論しているように見えるが、アレイの構成においては、書込みが行われる回路によって、単一の書込みコマンドに応答して、書込み動作が複数回だけ、自動的に実行されるようになる。この書込み動作の詳細については、前述した米国特許出願「不揮発性半導体メモリのプログラミングおよび消去回路および方法」に記載されている。この結果、書込み故障を起した単一のホスト書込みコマンドによって、複数の書込み動作が実際に開始されると共に、追加の実行が余分なものとなる。
【００５５】
次に、このフロープロセスは移動して、もう１つのブロックにおける書込み動作用の新規なフリースペースを割当てるようになる。全体のセクタを割当てられたフリースペースに書込む動作が行われると共に、エラーが起らなければ、そのように実行される。しかし乍ら、エラーが発生した場合に、この新しいブロックは、不審状態とマーク付けされない。このエラーはシステムにおける一般的なハードウェアエラーであると思われる。その理由としては、同一データを異なったブロックに書込む時に２つのエラーが発生する。従って、書込みおよび消去動作が実行されず、読取り動作のみが許可される。
【００５６】
しかし乍ら、このことが第１不審状態マーク処理でなく、且つ、このブロックがすでにこの特殊なオフセットで不審状態としてマーク処理されていた場合に、このフロープロセスによって、これはステータスブロックにおける不審状態テーブルの再検査であることが見出される。このブロックに２回目の不審のマークが付されていない場合には、このフロープロセスは、フリーフラッシュメモリスペースの他の部分を単に割当てると共に、再度、書込み動作を実行する。属性テーブルにセクタが汚損とマーク付けされていた場合に、このセクタは、最終的にはクリーンアップ処理され、更に、このオフセットのために、ブロックステータス領域においてすでに不審状態としてマーク処理されている。このプロセスによって、単一位置における冗長なエラーが許容されるようになる。
【００５７】
この不審状態テーブルの再検査によって、このフロープロセスが以下の状態を発見した場合には、このフロープロセスによって、このブロックに対して、第２マーク処理のオフセットと共に、ブロックステータス領域のＱ２部分において２回目の不審状態としてマーク付け処理が行われる。即ち、この状態とは、ブロックは、現在のエラーのオフセットとは異なったオフセットで、一度、不審状態とマーク処理されている状態である。このような２個の不審状態マークの累積は、以下の状態を表示する。即ち、ブロックが故障し、更に、書込み欠陥プロセスにより、優先的なクリーンアップ動作に対してクリーンアップ処理（クリーンアップデータ構造を利用して）を通知すると共に、すべてのゼロブロックのブロックステータス領域におけるクリーンアップ処理の後で、このブロックを不良とマーク処理することを表示する。次に、このフロープロセスは新しいフリースペースをセクタに割当てると共に、マーク処理されていないブロックに対して説明したステップを経て前進する。これらのステップにおいて、このフロープロセスは、データのセクタをアレイの異なったチップの組に書込みを実行する。これが成功した場合には、このフロープロセスが完了する。もし、反対に成功しなかったら、第２ブロックを不審状態とマーク処理しないが、全体のアレイに対して、更に書込みおよび消去動作を実行しない。これは、そのブロックがフラッシュブロックでないことに基因して起るものである。これらフラッシュブロックは故障状態にあるが、アレイまたはこれと組合わせた回路の他の部分であると考えられる。
【００５８】
不審状態テーブルの再検査によって、ブロックは、すでに２回、不審状態とマーク付け処理されていることが、フロープロセスにより見かけられた時には、優先的クリーンアップ用のクリーンアップ処理に対して、単に信号が発生され、これは各チップ上のゼロブロックのブロックステータス領域内で、このブロックに不良のマークを付し、次に、書込み動作用のスペースを再度割当てると共に、直前に説明したように、新しいスペースへの書込み動作を実行するようにする。
【００５９】
図５は、消去動作中に生じる欠陥を処理する本発明による方法を説明するフローチャートである。このフロープロセスも、コントローラ１４のＲＯＭに記憶されたソフトウェアで実行することができる。このプロセスは、書込み欠陥管理プロセスの開始時におけるプロセスと類似している。アレイの消去が実行されると、比較チェックが遂行され、これによって、エラーが生じたかどうかが決定される。エラーが発生していなければ、このフロープロセスが終了し、次のワードが書込まれる。反対に、エラーが発生していれば、このプロセスは前進して、このステップでは、プログラミング電圧Ｖppが欠陥を有しているかどうかチェックする。もし、Ｖppに欠陥があれば、アレイ全体に対して書込みおよび消去動作を禁止する。これら動作には高電圧が必要となっているが、このような高電圧を必要としない読取り動作が許可される。一般に、このプログラミング電圧は、システムに電力が再送給された時に得られるものである。
【００６０】
また、比較チェックの結果として、消去エラーが発生したが、プログラミング電圧が得られると表示された場合には、この消去プロセスによって、クリーンアッププロセスに対して信号が発生される。このクリーンアッププロセスは、消去動作が実行された特定のセクタは、不良のマーク処理されるべきであることを表示するものである。次に、この消去欠陥管理プロセスが実行される。
【００６１】
図７は、コントロール回路１４のマイクロプロセッサによって実行されるプロセスを表しており、このプロセスは、クリーンアッププロセスが実行され、不良または不審なブロックをクリーンアップする場合には何時でも実行される。このクリーンアッププロセスは、ブロックを消去すべき時には、何時でも実行されるので、この結果として、汚損されたセクタ内で得られる過剰メモリを、システムによって利用状態から外すことができる。クリーンアップすべき特定のブロックの選択およびクリーンアップ処理によって実行されるデータの書込みおよびフリースペースへの書込みについての詳細な説明は、前述した米国特許出願明細書「フローティングセクタデータを記憶する固体メモリディスクのクリーンアップ方法」に開示されている。このクリーンアッププロセスの第１ステップにおいて、ブロックにストアされた有効セクタのすべてを読取ると共に、これら有効セクタを、セクタ毎に、他のブロックの不使用領域に書込む。この動作中、このプロセスによって、データが読取られるブロックはすでに不審状態のマークが付けられたかどうかを指示する。もし、このブロックは２回も不審状態のマークが付けられたか、または優先的にクリーンアップするためのマークが付けられ、更に不良とマーク付けすべきものであれば、このブロックに不良のマークが付与されるので、このブロックは、最早、読取りや書込み動作に使用されなくなる。もし、このブロックに、優先的にクリーンアップのマークが付けられていないか（更に、不良とマーク付けすべきであり）、または、２回の不審状態のマークが付けられていなければ、この不審状態およびこのブロックデータ構造をセーブすると共に、消去が実行される。消去動作が失敗した場合には、この失敗によってブロックは不良とマーク付けされてしまう。その理由は、消去出来ないブロックはプログラム出来ないからである。消去動作が成功した場合には、不審状態（ステータス）およびこのブロックデータ構造が消去されたブロックに再記憶されるようになる。次に、このブロックを利用可能状態に戻すことができる。
【００６２】
上述した本発明の種々の処理動作を利用することによって、継続的に、メモリのブロックを利用可能状態に維持することができ、他方、これと同時に、これらブロックに記憶されたデータの無欠陥をユーザに対して確保することが可能となる。
本発明を、一実施例について説明したが、これに限定されず、技術的範囲内において、種々の変形や変更を加え得ることは当業者にとって自明である。従って、本発明を、前述の請求範囲によって考察すべきである。
【図面の簡単な説明】
【図１】本発明を実施するフラッシュメモリアレイのレイアウトを示すブロック線図。
【図２】図１に示したようなフラッシュメモリアレイの単一ブロックに、情報を記憶するパターンを示すブロック線図。
【図３】本発明による、フラッシュメモリアレイ中のメモリアレイの第１タイプの故障を処理する方法を表すフローチャート。
【図４】本発明による、フラッシュメモリアレイ中のメモリセルの第２タイプの故障を処理する方法の第２部分を示すフローチャート。
【図５】消去動作中に起る欠陥を処理する、本発明による方法のフローチャート。
【図６】エラー訂正に利用できる、エラー検出およびエラー訂正の基本的な方法を表す図。
【図７】本発明による、フラッシュメモリアレイ内において、図３と図４に示した処理を利用して発見したメモリセルの欠陥をクリーンアップする処理のフローチャート。
【符号の説明】
１０  フラッシュＥＥＰＲＰＭメモリアレイ
１４  コントロール回路
１６  ＲＡＭ
１７  ルックアップテーブル
２０  ブロック
２１  ブロック領域
【図１】
0003695766.tif 000002
【図２】
0003695766.tif 000003
【図３】
0003695766.tif 000004
【図４】
0003695766.tif 000005
【図５】
0003695766.tif 000006
【図６】
0003695766.tif 000007
【図７】
0003695766.tif 000008