(57)【要約】【課題】  フラッシュＥＥＰＲＯＭシステムを提供する。【解決手段】  本発明によるフラッシュＥＥＰＲＯＭシステムは、プロセッサ２１およびメモリシステムを含む。前記メモリシステムは、複数のセクタに分割された不揮発性フローティングゲートメモリセルのアレイ３３を含んでいる。前記セクタはそれぞれ１つのユニットとして同時に消去可能な前記メモリセルアレイの明確なグループを含むものである。個々のセクタ内にメモリセルの少なくとも１つのユーザデータ部と少なくとも１つのオーバーヘッド部を設け、少なくとも１つの磁気ディスクセクタを指定する形式のアドレスをプロセッサから受けることに応答して、前記少なくとも１つの磁気ディスクセクタに対応する少なくとも１つの不揮発性メモリセクタのアドレスを指定する。【選択図】  図１Ａ
2007149119.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータシステムとの接続を確立するための電気端子を有するメモリシステムにおいて、
不揮発性フローティングゲートメモリセルアレイであって、前記アレイは複数のセクタに分割され、各セクタは１つのユニットとして同時に消去可能な前記メモリセルの明確なグループを有し、かつユーザデータを記憶するユーザデータ部と予備部のデータを記憶する予備部にさらに分割される不揮発性フローティングゲートメモリセルアレイと、
アレイの動作を制御するために前記電気端子と前記メモリセルアレイ間に接続されるメモリコントローラであって、前記コントローラは、
１以上の不揮発性メモリセクタをアドレス指定するために、前記端子を介して１以上の大容量メモリ記憶ブロックのアドレスを受け取ることに応答するアドレス指定手段であって、前記アドレス指定手段は、使用不能なあらゆる不揮発性メモリセクタの特定に応答する手段と別の使用可能なセクタに置き換える手段とを含むアドレス指定手段と、
アドレス指定されたセクタに記憶される予備部のデータを読出す手段と、
アドレス指定されたセクタからユーザデータを読出すか、もしくは前記セクタにユーザデータを書込むかのいずれかのために読出される予備部のデータに応答する手段と、
消去動作用に複数のセクタを選択し、選択された複数のセクタのみに同時に消去動作を実行する手段と、
を含むメモリシステム。
【請求項２】
ホストコンピュータシステムとの接続を確立するための電気端子を有するメモリシステムにおいて、
不揮発性フローティングゲートメモリセルアレイであって、前記アレイは複数のセクタに分割され、各セクタは１つのユニットとして同時に消去可能な前記メモリセルの明確なグループを有し、かつユーザデータを記憶するユーザデータ部と予備部のデータを記憶する予備部にさらに分割される不揮発性フローティングゲートメモリセルアレイと、
アレイの動作を制御するために前記電気端子と前記メモリセルアレイ間に接続されるメモリコントローラであって、前記コントローラは、
１以上の不揮発性メモリセクタをアドレス指定するために、前記端子を介して１以上の大容量メモリ記憶ブロックのアドレスを受け取ることに応答するアドレス指定手段であって、前記アドレス指定手段は、使用不能なあらゆる不揮発性メモリセクタの特定に応答する手段と別の使用可能なセクタに置き換える手段とを含むアドレス指定手段と、
アドレス指定されたセクタに記憶される予備部のデータを読出す手段であって、アドレス指定されたセクタの予備部のデータから前記アドレス指定されたセクタの１つのアドレスを読出す手段を含み、さらに読出された予備部のデータのアドレスと前記セクタのアドレスを比較することにより、所望のセクタがアドレス指定されたことを特定する手段を含む予備部のデータを読出す手段と、
アドレス指定されたセクタからユーザデータを読出すか、もしくは前記セクタにユーザデータを書込むかのいずれかのために読出される予備部のデータに応答する手段と、
を含むメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には半導体の電気的に消去可能なプログラムリードオンリーメモリ（ＥＥｐｒｏｍ）に関し、さらに詳しく言えばフラッシュＥＥｐｒｏｍチップ回路を集積したシステムに関する。
【背景技術】
【０００２】
コンピュータシステムは、通常、大量のデータを蓄積するために磁気ディスクを使用する。しかしながら、ディスクドライブはそれらが大型であること、およびそれらが高度に精密な機械的な駆動機構を必要とする点において欠点をもっている。したがって、それらは頑丈なものではなく、信頼性について問題があるばかりでなく、かなりの電力を消費する。固体記憶装置であるＤＲＡＭとＳＲＡＭはこれらの欠点を持ち合わせていない。しかしながら、それらはかなり高価なものであり、それらの記憶（揮発性）を維持するためには定常的に電力を必要とし、かつ高価である。
【０００３】
ＥＥｐｒｏｍとフラッシュＥＥｐｒｏｍは同様に固体記憶装置である。しかしながら、不揮発性であり、そして電力が落とされた後でも、その記憶を維持している。しかしながら、通常のフラッシュＥＥｐｒｏｍは、それらが耐えられる書込み（またはプログラム）／消去回数の数において有限の寿命をもっている。典型的にはそれらの装置は１０2 から１０3 の書込み／消去回数を過ぎると信頼できなくなる。そこで従来そのような素子、それらは半永久的なデータとかプログラムの蓄積が要求される場合であって、再プログラムの必要性にある種の制限があってもいい場合において利用されている。
【特許文献１】米国特許出願第２０４，１７５号
【発明の開示】
【０００４】
したがって、本発明の一つの目的はかなりの数の書込み／消去回数に耐性で信頼性を維持することができる機能を拡張したフラッシュＥＥｐｒｏｍ記憶システムを提供することである。
さらに他の目的はコンピュータシステムにおける不揮発性メモリとして使用することができる改良されたフラッシュＥＥｐｒｏｍシステムを提供することである。
本発明のさらに他の目的は、コンピュータシステムの磁気ディスク装置の代わりに使用することができる改良されたフラッシュＥＥｐｒｏｍシステムを提供することである。
本発明のさらに他の目的は、消去動作において改良を施されたフラッシュＥＥｐｒｏｍシステムを提供することにある。
本発明のさらに他の目的は、改良された誤り訂正を行なうことができるフラッシュＥＥｐｒｏｍシステムを提供することにある。
本発明のさらに他の目的は、書込み動作を改良することによりフラッシュＥＥｐｒｏｍシステムに対するストレスを最小にすることができるフラッシュＥＥｐｒｏｍを提供する
ことにある。
本発明のさらに他の目的は書込み動作において向上させたフラッシュＥＥｐｒｏｍシステムを提供することにある。
【０００５】
前記目的および追加の目的はＥＥｐｒｏｍチップのシステムの構造や回路や技術における改良によって達成される。
【０００６】
本発明の一つの特徴はチップ上のＥＥｐｒｏｍセルのアレイがセクタに構成され、そしてその各々のセルに含まれる全てのセルが同時に消去されることである。フラッシュＥＥｐｒｏｍメモリシステムは、コントローラの制御下にある１またはそれ以上のフラッシュＥＥｐｒｏｍチップを持っている。本発明においては、チップ間のセクタの任意の組合せを選択し、それらを同時に消去することを許容している。これにより、本発明によるシステムは従来のすべてのセクタが毎回消去されるか、または一つのセクタが一時に消去される従来の構成に比べて、より早くかつ効果的になっている。本発明においては、セクタの消去のための任意の組合せ、または、消去動作において、さらに消去されることを阻止するために、選ばれないという任意の組合せを可能にしている。この特徴は最初に正確に「消去された」状態にされたセクタを余分に消去することを停止することにおいて重要であり、これによりフラッシュＥＥｐｒｏｍシステムに不必要なストレスを与えることを防止している。本発明においては、全システムにおける全てのセクタを全体として選ばないことを許容することにより、消去のために全てのセクタが選ばれないという状態を可能にしている。この全体的なリセットは、このシステムをその当初の消去のために選択されるべきセクタを選択する状態に早急に戻すということである。本発明のさらに他の特徴は、特定のチップを書込み、読みまたは書込みの動作に選択するチップセレクト信号と独立して選択が行なわれることである。したがって、ＥＥｐｒｏｍチップのあるチップを他の読み、または書込み動作が行なわれている他のチップに含まれないものを消去のために選択できるということである。
【０００７】
本発明の他の特徴によれば、欠陥のあるフラッシュＥＥｐｒｏｍメモリセルから発生する誤りを訂正するために使用する改良された誤り訂正回路または、技術が使用されることである。本発明の一つの特徴はセルのレベルにおいて、欠陥セルのマッピングを許容することであり、それによって同じセクタのセルで欠陥のセルを置き換えることを可能にしている。欠陥セルを置き換えられたセルのアドレスに接続するための欠陥ポインタは欠陥マップに記憶されている。欠陥のあるセルはアクセスされるたびごとに、その悪いデータは、代替のセルの良いデータに置き換えられる。
【０００８】
本発明のさらに他の特徴はセクタレベルにおいて欠陥マッピングを許容することである。一つのセクタにおける欠陥セルの数がある一定の数を超えたときにその欠陥セルを含むセクタは他のセクタによって代替される。
【０００９】
本発明の重要な特徴は、欠陥のあるセルや欠陥のあるセクタが発見されると、直ちにリマップされることである。これにより、誤り訂正コードを適当に修正することにより、そのシステムで生じる可能性がある誤りを最小にすることができる。
【００１０】
本発明のさらに他の特徴によれば、書込みキャッシュを設けることにより、フラッシュＥＥｐｒｏｍへの書込みの回数を最小にすることができることである。これにより、このフラッシュＥＥｐｒｏｍメモリは書込み／消去回数によって発生させられる、より少ないストレスに従属させることにより、その老朽化を防止することである。最もアクティブなデータファイルは、フラッシュＥＥｐｒｏｍメモリの代わりにキャッシュメモリに書込まれる。活動のレベルが予め定められたレベルに減少されたときは、データファイルがキャッシュメモリからフラッシュＥＥｐｒｏｍメモリに書込まれる。本発明の他の利点はより早いキャッシュメモリを使用することによって増大させられる。
【００１１】
本発明のさらに他の特徴によれば、コンピュータシステムメモリとして長期間、不揮発性蓄積のためにコントローラとＥＥｐｒｏｍ回路チップを持つプリント回路基板が提供されるが、ハードディスクシステムの代わりに提供されることである。そしてそのプリント回路カードは本発明の他のいろいろな特徴を単独で、または組合せて盛り込むことができる。
【００１２】
さらに他の目的，特徴および本発明の利点は、添付の図面を参照して本発明の好適な実施例の以下の記載により理解されたい。
【発明を実施するための最良の形態】
【００１３】
（ＥＥｐｒｏｍシステム）
本発明の種々の特徴が盛り込まれているコンピュータシステムが一般的に図１Ａに示されている。典型的なコンピュータシステムはバスライン２３に接続されているマイクロプロセッサ２１、それにより主システムメモリ２５にランダムアクセスすることができ、そして少なくとも１または２以上の入出力装置２７、例えばキーボード、モニタ、モデム等々が設けられている。典型的なコンピュータシステムバス２３に接続されている他の主たるコンピュータの要素は大量の長期間使用可能な不揮発性メモリ２９である。典型的にそのようなメモリは１０メガバイトのデータ蓄積能力をもつディスク駆動システムである。データは、システムの中の揮発性メモリ２５の中に容易に引き出されて利用され、容易に補充されたり、または変えられたり、変更されたりする。
【００１４】
本発明の一つの態様は、前記のようなディスクドライブのシステムをある半導体メモリに変えることであるが、その際に不揮発性，メモリへのデータの消去および再書込の容易性，アクセス速度，コストおよび信頼性を犠牲にしないことである。これは電気的に消去可能でありプログラム可能なリードオンリーメモリ（ＥＥｐｒｏｍ）の半導体回路チップを用いることによって、完成される。この形式のメモリはハードディスクで磁気的なメモリ媒体を駆動するものに比較して、動作電力が少なく、非常に軽量という付加的な利点を備えるものであり、これにより電池で動作させられる可搬型のコンピュータに適しているということができる。
【００１５】
全体の記憶装置２９はコンピュータのシステムバス２３に接続されているメモリコントローラ３１とＥＥｐｒｏｍの集積回路チップのアレイ３３から構成されている。データと命令はコントローラ３１からシリアルデータ線３５を介して一義的にＥＥｐｒｏｍアレイ３３に通信される。同様にして、データとステータス信号は、ＥＥｐｒｏｍ３３からコントローラ３０にシリアルデータ線３７を介して通信される。図１Ａにはコントローラ３１とＥＥｐｒｏｍアレイ３３間のその他の制御やステータス回路は示されていない。
【００１６】
図１Ｂを参照すると、コントローラ３１は、好ましくは一つの集積回路チップ上に形成されている。システムバス２３の一部であるシステムアドレスとデータバス３９はシ、ステム制御線４１に接続されており、そのシステム制御線４１は読込み，書込みおよにその他通常のコンピュータシステム制御線を含んでいる。
【００１７】
ＥＥｐｒｏｍアレイ３３はＥＥｐｒｏｍの集積回路チップ４３、４５、４７等々を複数個含んでいる。それぞれはインタフェース回路４０からのそれぞれのチップセレクトおよびイネーブル線４９、５１、５３を含んでいる。インタフェース回路４０は、さらに回路５７とシリアルデータ線３５、３７とのインタフェースとして働く。ＥＥｐｒｏｍチップ４３、４５、４７に書込まれるか、または読出されるメモリの位置アドレスとデータはバス５５、論理およびレジスタ回路５７、さらに他のバス５９を通してメモリチップ４３、４５、４７等々に伝達される。
【００１８】
図１Ａと図１Ｂに示されている全体のメモリ２９は、１枚のプリント回路カードに適当なメモリの大きさで製造されている。図１Ｂの種々のシステムバス３９と４１は他のコンピュータシステムとともに、そのようなカードの接続ピンに接続されている。さらに前記カードやその要素には種々の標準的な電力供給電圧（図示せず）が接続されている。
【００１９】
大量のメモリのためには、一つのアレイ３３に形成されているものでは十分でない場合がありえる。そのような場合には、制御チップ３１のシリアルデータ線３５、３７に付加的なＥＥｐｒｏｍアレイを接続することができる。このことは好ましくは一つのプリント回路カードによって行なわれることが望ましいのであるが、それをするために十分なスペースのない場合には、１またはそれ以上のＥＥｐｒｏｍアレイを第２のプリント回路カードの上に形成し、そしてそれを物理的に第１のものの上に設けるか、設けてそれを共通のコントローラチップ３１に接続することによって行なうことができる。
【００２０】
（メモリ構造の消去）
蓄積されるデータがファイルまたはブロックとして行なわれるシステムデザインにおいては、そのデータは定期的に改定されたり、または新しい情報が挿入される必要がある。そして、もはや不必要となった情報の上に、さらに書込みを行なうことにより、追加の情報を収容することが望まれる場合がある。フラッシュＥＥｐｒｏｍメモリにおいては、メモリセルはまず初めに情報を蓄積する前に消される必要がある。すなわち、このことは書込み（またはプログラム）の操作の前に常に消去の動作が先行されるということである。
【００２１】
従来のフラッシュ消去メモリ装置においては、消去の動作はいくつかの方法があり、その一つより行なわれる。例えば、インテル・コーポレイションの２７Ｆ−２５６、ＣＭＯＳはフラッシュＥＥｐｒｏｍにおいては、全体のチップが一時に消去される。もしチップの中の情報の全てが消去されるべきではないときには、まず初めに一時的にその情報が救済されなくてはならない。そしてそれは、他のメモリ（典型的にはＲＡＭ）に書込まれる。そしてその情報はその装置に再度プログラムすることによって、不揮発性のフラッシュ消去メモリの中に回復される。これは時間を要することであり、費用もかかり、作業空間も必要である。
【００２２】
他の装置、例えばシーク・テクノロジー・インコーポレイテッドのモデル４８５１２フラッシュＥＥｐｒｏｍチップにおいては、メモリはブロック（またはセクタ）に分割されており、それらは別々に分離して消去可能である。しかしながら、毎回一つずつ行なわなければならない。希望するセクタの選択により、消去の段階に入り、指定された領域が消去される。一時的な記憶装置の必要はなくなるのであるが、種々のメモリ領域の消去は依然として時間がかかる逐次作業を必要とする。
【００２３】
本発明においては、フラッシュＥＥｐｒｏｍメモリはいくつかのセクタに分割され、そこにおいてそのセクタに含まれるセルは同時に消去することができる。各々のセクタは、別々にアドレスされ、そして選択的に消去される。最も重要な特徴は一緒に消去すべきいくつかのセクタの組合せを選択できることである。これにより、各々を独立して消去するという従来の技術に見られるものに比較してより早い消去システムを提供することができるのである。
【００２４】
図２は、消去のために選ばれたいくつかのセクタを略図示している。一つのフラッシュＥＥｐｒｏｍシステムは、例えば、２０１、２０３、２０５のように１またはそれ以上のフラッシュＥＥｐｒｏｍチップを含んでいる。それらは線２０９を介してコントローラ３１と通信している。典型的にはコントローラ３１それ自身は図示されていないマイクロプロセサシステムと通信している。各フラッシュＥＥｐｒｏｍチップの中のメモリはセクタに分離されており、その一つのセクタの中の全ての記憶セルは同時に消去できる。使用者に利用可能なものとして、例えば各々のセクタが５１２バイト（すなわち５１２×８セル）あり、一つのチップは１０２４セクタを持っている。各セクタは独立してアドレス可能に分割されており、そして例えばセクタに２１１、２１３、２１５、２１７等のように複数のセクタが消去可能に選択される。図２に図示されているように、選択されたセクタは一つのＥＥｐｒｏｍチップに限られるか、またはシステム中のいくつかのチップ内に分散させられることができる。選ばれたセクタは同時に消去されるであろう。この能力は、この発明によるメモリシステムに従来の構造のものよりも、より早い操作を許容するものである。
【００２５】
図３Ａは、フラッシュＥＥｐｒｏｍ（例えば図２のチップ２０１など）で、１またはそれ以上のセクタが消去のために選択または選択されなかった状態を示すブロックダイヤグラムである。実際上は各セクタ、例えば２１１、または２１３が各セクタに関連して設けられている、例えば２１１、２１３のような消去可能レジスタの状態の設定または、設定によりタグをつけるとか選択されるかによって、各々のセクタ２２１、２２３が選択される。選択と引き続く消去動作は、コントローラ３１（図２参照）のコントロールの下に行なわれる。回路２２０はコントローラ３１と複数の線２０９によって通信させられている。コントロールからのコマンド情報は直列インタフェース２２７を介してコマンドレジスタ２２５によって、回路２２０内で捕捉される。そしてそれは、コマンドデコーダ２２９によってデコードされ、コマンドデコーダ２２９は種々の制御信号を出力する。同様にアドレス情報はアドレスレジスタ２３１によって補足され、そしてアドレスデコーダ２３３によってデコーダされる。
【００２６】
一例として、セクタ２１１を消去のために選択するためには、前記コントローラはセクタ２１１のアドレスを回路２２０に送る。このアドレスは、線２３５の中にデコードされ、そしてそれは、レジスタ２２１の出力２３９をハイ（ＨＩＧＨ）にセットするためにイネーブルバス２３７の消去イネーブル信号と共同して組み合わせて用いられる。これにより、セクタ２１１は引き続く消去動作が可能になる。同様にして、もしセクタ２１３も同様に消去されるべきであると要求されているときは、レジスタ２２３のその関連するレジスタ２３もハイにセットされるであろう。
【００２７】
図３Ｂは、レジスタ２２１または２２３の構造をより詳細に示してある。消去イネーブルレジスタ２２１はＳＥＴ／ＲＥＳＥＴラッチである。そのセット入力端子２４１はアドレスデコード線２３５によってゲートされたバス２３７の消去イネーブル信号セットから得られる。同様にして、リセット入力２４３は線２３５中のアドレスデコードによってゲートされるバス２３７中の消去イネーブル信号をクリアするものから得られる。このようにして消去イネーブル信号または消去イネーブル信号をクリアする信号がすべてのセクタに発生させられたときにアドレスされたセクタのみにその信号が有効となる。
【００２８】
全ての消去されるべきセクタが選択された後にコントローラは回路２２０、同様に全てのグローバル消去コマンドが２５１によって現れているときに線２０９に沿って消去のための高電圧が発生させられる。かくしてその装置は、全ての選択されたセクタ（例えばセクタ２１１と２１３）が同時に消去されるでろう。チップ内の希望するセクタが消去されることに加えて本発明による構造では、同時消去のために異なる種類のチップ上のセクタの選択を許容している。
【００２９】
図４の（１）〜（１１）は、図３Ａの回路２２０に関連して用いられるアルゴリズムを図示している。図４の（１）でコントローラは回路２２０の中でデコードされた消去されるべきセクタに関連させられている消去イネーブルレジスタにアドレスをシフトさせる。図４の（２）においてコントローラはアドレスされたセクタの消去イネーブルレジスタへアドレスデコードされた信号をラッチするために用いられる消去イネーブルコマンドをセットするためにデコードする。このタグはそのセクタの引き続く消去のためである。図４の（３）において、もしそれ以上のより多くのセクタがタグが付されるべきであるときには消去されるべき全てのセクタにタグが付加されるまで図４の（１）から図４の（２）に示されている関連して記述されている操作を繰り返す。消去されるべき全てのセクタにタグが付された後にコントローラは図４の（４）に示されている消去のサイクルを開始させる。
【００３０】
最適化された消去の構成は同時継続中の米国特許出願に開示されている。それらは同時出願継続中の米国特許出願第２０４，１７５号（特許文献１）でエリヤホウ  ハラリ博士により１９８８年６月８日に出願されたものと本出願と同時に、サンジャイ  メハロトラとハラリ博士によって出願された「多状態ＥＥｐｒｏｍ読み書き回路およびその技術」に示されているものである。フラッシュＥＥｐｒｏｍセルは消去パルスを印加することによって消去され、引続き読みによりそのセルが消去されて消去状態にあるかどうかということが検証される。もしそうでない場合、そのセルが消された状態にあると検証されるまでパルスの印加と検証が繰り返される。この制御された方法によって消去することによりセルはＥＥｐｒｏｍを老化させるかまたはプログラムを困難にするであろう過剰消去にさらされないようにする。
【００３１】
選択されたセクタのグループが消去サイクルにあるときに他のものはより早く消去された状態に達することもある。本発明の他の重要な特徴は選択されたグループの中から消去用に検証されたセクタを除去する能力であり、これにより過剰消去を防いでいる。
【００３２】
図４（４）を再度参照すると、全ての消去されるべきセクタにタグが付されるとコントローラはタグが付されたセクタのグループの消去サイクルを開始する。図４の（５）では、消去が行なわれるべきタグＥＥｐｒｏｍチップ中にグローバル消去イネーブルと呼ばれるグローバルコマンドをシフトさせる。これは図４の（５）において、コントローラが一定の持続する期間、一定の値だけ消去電圧（ＶＥ）を上げるということになる。コントローラはこの電圧を消去期間経過の終わりに低下させる。図４の（６）において、コントローラは消去のために選択されたセクタの読み出し検証を実行する。図４の（７）において、セクタのいずれもが検証されない場合には図４の（５）〜（７）に図示されているシーケンスが繰り返される。図４の（８）から図４の（９）において、もし１または２以上のセクタが消去されたと検証されたときは、それらはそのシーケンスから取り出される。同様に図３Ａを参照すると、このことは各検証されたセクタに対応するコントローラのアドレスをバス２３７の中の消去コマンドをクリアすることによって、消去可能なレジスタを低電圧にする。図４の（５）から（１０）に示されているシーケンスは図４の（１１）に示されているようにそのグループが消去されたと検証されるまで繰り返される。その消去サイクルの完了によってコントローラは不動作状態（ＮＯＰ）命令に移行し、そして、グローバル消去可能コマンドは引き上げられて誤った消去から保護される。
【００３３】
どのセクタを消去すべきであるか、消去すべきでないかを選択する能力は、どの消去を止めることが有効であるかと同様に有効である。これにより遅く消去されるセクタより前に消去が完了されたものが消去のシーケンスから分離されてその装置により以上のストレスを与えることから保護することができる。このことにより、システムの信頼性を向上させることができるであろう。もしセクタが良くないものであるとき、あるいはある理由によって使用できないときそのセクタをとばし、そのセクタにおいて消去が起こらないようにすることに利点がある。例えばもしあるセクタが欠陥をもっていて回路の短絡があったならば、それはより多くの電力を消去するであろう。本発明によっては消去サイクルをとばすことにより、そのチップの中で消去に必要とする電力を減少させることができるという有意義なシステムの利点を得ることができる。
【００３４】
その装置の中で消去されるべきセクタを選びだす能力を持つことはそのシステムの電力消費を少なくするという他の配慮に繋がる。本発明における消去構造の弾力性により、そのシステムの電力の能力にしたがって、消去の要求を採用することができる。これは、このシステムをソフトウエアによって、異なった消去の状態を与えるか、または他のシステムとの間の基本的な構造によって与えるかによって成し遂げられるであろう。それは例えばラップトップコンピュータのようなシステムで電圧のレベルを監視することによって消去の量を変化するようにコントローラにさせることもできるだろう。
【００３５】
本発明におけるシステムのさらに他の動作の能力は、すべての消去イネーブルラッチをクリアするフラッシュＥＥｐｒｏｍチップにリセットコマンドを発する能力であり、そして消去サイクルがさらに発生しないようにすることである。これは図３Ａおよび図３Ｂに線２６１のリセット信号によって図示されている。全てのチップに不変的にこの作業を行なうことによって全ての消去イネーブルレジスタをリセットする時間を短くすることができるであろう。
【００３６】
その他の付加的な能力はチップセレクトに無関係に消去動作をする能力をもつことである。あるメモリチップにおいて消去動作が開始されるとコントローラは他のメモリチップにアクセスしてそれらの読み、書きの動作をさせることができる。加得るに消去装置の消去を行なっているということが選択され、そして次の消去のためのコマンドのアドレスを蓄積することもできる。
【００３７】
（欠陥マッピング）
メモリ装置における物理的な欠陥は困難な誤動作を巻き起こす。データは、欠陥のあるセルに蓄積される度に破壊されてしまう。従来のメモリ装置、例えばＲＡＭやディスクにおいては、製造過程で生じるあらゆる物理的な欠陥は工場において修正されている。ＲＡＭにおいては、予備の冗長メモリセルがチップに設けられていて、それが欠陥セルの代わりに接続される。従来のディスクドライブ装置において媒体が不完全であるときには、欠陥の問題となりやすかった。これらの問題を解決するために製造業者は存在するこれらの欠陥についての様々な方法を案出しており、そしてもっとも通常用いられるものはセクタの欠陥のマッピングである。通常のディスクシステムにおいては、媒体はシリンダとセクタに分割されている。セクタはデータが蓄積される基本単位である。システムにおいて、種々のセクタに分けられ、悪いものであるとマークをつけられたものは、そのシステムにおいては使用されないようにする。これは、種々の方法によって実現されている。欠陥マップのテーブルが使用されるディスクの特定の位置に設けられており、インターフェイスコントローラを介して利用される。さらに、欠陥のある悪いセクタは物理的に特殊なＩＤが施されて、ＩＤとフラッグマーカーが付されている。欠陥のあるものがアドレスされたときは、そのデータは通常は他の代替位置に配置されている。この代わりのセクタの要請のために、余分なセクタがある間隔で、またはある位置離れて設けられている。これは、メモリの容量を減少させるものであり、どのように代わりのセクタを設けられているかという問題を提供している。
【００３８】
本発明の一つの重要な応用は、フラッシュＥＥｐｒｏｍチップのアレイによって実現されるシステムによって、通常のディスク記憶装置を置き換えることである。このＥＥｐｒｏｍシステムは従来のディスクと同等、またはそれ以上であるように設定することが好ましく、「固体ディスク」とみなすことができる。
【００３９】
そのような固体メモリ装置により作られた「ディスク」システムにおいては、欠陥を効率的に処理するために、低価格でそれが成し遂げられるという配慮が必要となる。本発明の他の重要な特徴は、より多くのメモリを可能な限り保存することができるように誤り訂正を可能にすることである。現実問題として、それはセルごとに欠陥セルが捜し出されることにより全体のセクタ，例えば（通常５１２バイト）において、欠陥が起こる度に捨ててしまうことをなくすことである。この提案は特にフラッシュＥＥｐｒｏｍ媒体に適している。なぜならば、大多数の誤りはビットの誤りとして起こり、従来のディスク媒体に通常みられるストリームが長い近接した欠陥ではないことによる。
【００４０】
ＲＡＭと磁気ディスクの両方の先行技術においては、一度その装置が工場から出荷されるとそこでは、通常の動作の後に現れる物理的欠陥から生ずるハードの誤りを置き換えるための手段がほとんどもしくは全くないことである。そのために、欠陥の訂正は主として誤り訂正コード（ＥＣＣ）を用いることに依存して行なわれている。
【００４１】
フラッシュＥＥｐｒｏｍ装置の性質上、書込み／消去の回数が増加するにしたがって、セルの欠陥が次第に増加することが予想できる。使用して蓄積されるハードの誤りが最終的にはＥＣＣを圧倒してしまい、その装置を使用不能なものにしてしまうのである。本発明の一つの重要な特徴は、そのシステムのハードの誤りが発生するごとに、そのシステムのハードの誤りを訂正するという能力をもっていることである。また、読出し操作の期間においても、欠陥セルが発見され、そしてＥＣＣにより位置づけられる。欠陥のセルが特定されると直ちにコントローラはその欠陥セルを通常はそれと同じセクタに存在する空きセルによって置き換えるための欠陥マッピングを供給するであろう。この動的なハードの誤りの訂正は、通常の誤り訂正スキームに加えて装置の寿命を有効に引き延ばすことができる。
【００４２】
本発明の他の特徴は、誤り訂正へのアプローチに適していることである。誤り訂正コード（ＥＣＣ）は常時ソフトの誤りを訂正するとともに、発生するであろうハードの誤りの訂正に利用される。ハードの誤りが検出されるとすぐに、欠陥マッピングはその欠陥セルをそれの同じセクタブロックに存在する予備のセルと置き換えるために使用される。欠陥セルの数がその特定のセクタのための欠陥マッピングの能力を越えた場合においてのみ、その全体のセクタは、通常のディスクシステムのように置き換えられる。このスキームにより、信用性を損なうことなく最小の損失で食い止めることができる。
【００４３】
図５は、セルをリマッピングするスキームのメモリ構造を図示したものである。前述したように、このフラッシュＥＥｐｒｏｍメモリはセクタに分割されており、各セクタに属するセルは同時に消去可能である。典型的なセクタ４０１のメモリ構造は、データ部４０３と予備（または影）部４０５に分けられている。データ部４０３はユーザによって使用可能なメモリ空間である。予備部４０５はさらに欠陥データの代替部領域４０７、欠陥マッピング領域４０９、ヘッダ領域４１１、およびＥＣＣと他の領域４１３に分けられている。これらの領域は、コントローラにより、ヘッダやＥＣＣ等のように欠陥領域や他のオーバーヘッド情報を操作するために使用することもできる情報を含む。
【００４４】
セクタの中で、一つの欠陥セルが発見される度に欠陥データ領域の代替部４０７の中の一つの良いセルが欠陥セルと指定されたデータをバックアップするために割当てられる。かくして、もし欠陥セルにデータが誤って記憶されたとしても、バックアップセルの中には誤りのないコピーが記憶される。欠陥セルとバックアップセルのアドレスは欠陥マップ４０９の中の欠陥ポインタに記憶される。
【００４５】
ユーザデータ領域４０３と予備部４０５間は、厳格に区別される必要がないというように理解されたい。各々に割当られた領域の相対的な大きさは論理的に再割当することができる。さらにまた、種々の領域のグループ分けは、主として議論のために必要であって、物理的に必要なものではない。例えば欠陥データ領域の代替部４０７は、予備部４０５の中にそれが専有する領域はユーザーは利用できないものであることを示すだけのものである。
【００４６】
読出し動作において、コントローラは最初にヘッダ、欠陥マップ、それから代替欠陥データ部分を読出す。その後実際のデータを読む。それは欠陥マップによって欠陥セルのトラックと代替データの位置を保っている。欠陥セルに遭遇するために、コントローラはその不良データを欠陥代替セルの良いデータで代用する。
【００４７】
図６は、好適な実施例におけるの読出データパス制御を図示している。メモリ装置３３はコントローラ３１の制御下にある複数のフラッシュＥＥｐｒｏｍチップを含んでいる。コントローラ３１それ自体は、マイクロプロセッサ（図示せず）の制御下にあるマイクロプロセッサシステムの一部を形成している。セクタの読出しを開始するにあたり、マイクロプロセッサはコントローラ中のアドレス発生器５０３に読出し操作を開始するためのアドレスをロードする。この情報は、マイクロプロセッサのインターフェイスポート５０５を介してロードされる。それから、マイクロプロセサはＤＭＡコントローラ５０７にバッファメモリまたはデータリードが送られるべきアドレスバスのスタート位置をロードする。それからマイクロプロセッサはヘッダの情報（ヘッド、シリンダ、セクタ）を保持レジスタファイル５０９にロードする。最終的にマイクロプロセッサはコマンドシーケンサ５１１にコントローラ３１への制御前にリードコマンドをロードする。
【００４８】
制御開始後に、コントローラ３１はまず初めにセクタのヘッダにアドレスし、そしてユーザが指定したアドレスの位置でメモリがアクセスされたことを検証する。これは次のシーケンスによって実現される。コントローラはメモリ装置３３の中の一つのメモリチップ（チップセレクト）を選択し、そしてヘッダ領域のアドレスをアドレス発生器５０３の出力からメモリ装置３３の選択されたメモリへシフトする。コントローラはマルチプレクサ５１３をスイッチし、そしてメモリ装置３３にリードコマンド出力をシフトする。それからメモリ装置は送られたアドレスを読み、そしてコントローラにアドレスされたセクタからの直列データの送信を開始する。コントローラ中のレシーバ５１５はこのデータを受け、そしてそれを並列形式にする。一つの実施形態においては、１バイト（８ビット）が一度にコンパイルされ、マイクロプロセッサによって保持レジスタファイル５０９に予め記憶されたヘッダ情報と受信したデータとを比較する。もし、その比較の結果が正しければ、正しい情報、正しい位置がベリファイ（検証）されて動作は継続する。
【００４９】
次にコントローラ３１は欠陥ポインタを読出し、これらの不良アドレスの位置をホールディングレジスタファイル５０９にロードする。これにコントローラの欠陥データの読出しが続き、その欠陥データの代替はそれが書込まれたときに、その誤ったビットを置き換えるために書込まれているものであった。代替ビットは、欠陥データの代替ファイル５１７の中に記憶されており、それはデータビットが読出されるときにアクセスされる。
【００５０】
ヘッダがマッチしており、そして欠陥ポインタと代替ビットのロードが完了すると、コントローラは読まれるべき希望するセクタの最低のアドレスのシフトアウトを開始する。メモリ装置３３の中のセクタからのデータはコントローラチップ３１に移送される。受信機５１５はそのデータを並列形式に変換し、各バイトを一時的なホルダであるＦＩＦＯ５１９へコントローラから送り出されるべく移送する。
【００５１】
パイプライン構造が受信機５１５から、ＦＩＦＯ５１９へコントローラを開始してデータがゲートされるときの有効な処理能力を提供するために用いられる。各々のデータビットがメモリから受信されたときに、コントローラは送られるべきデータのアドレス（アドレス発生器５０７に蓄積されたもの）を欠陥ポインタマップ（レジスタファイル５０９に蓄積されたもの）と比較を続ける。もし、比較器５２１の出力のマッチにより、そのアドレスが悪い位置にあると決定されると、受信器５１５により受信されたメモリからの悪いビットは、その位置の良いビットと置き換えられる。良いビットは欠陥データ代替ファイルから得られる。これは受信機５１５からの悪いビットの代わりに、欠陥データ代替ファイルからの良いビットを受信するようにマルチプレクサ５２３をスイッチングすることによってなされる。ＦＩＦＯの中に訂正されたデータがあるときに、それはバッファメモリまたはシステムメモリ（図示せず）へ送られるべき状態にある。そのデータはコントローラのＦＩＦＯ５１９からコントローラのＤＭＡコントローラ５０７によってシステムメモリへ送られる。このコントローラ５０７はそれからリクエストしてシステムバスへのアクセスを得、そして一つのアドレスを出し、そしてデータを出力インタフェース２５５経由でゲートしてシステムバスへ出す。これは各バイトがＦＩＦＯ５１９へロードすることによってなされる。訂正されたデータがＦＩＦＯにロードされると、それはまたＥＣＣハードウエア５２７にもゲートされ、そこでデータファイルはＥＣＣによって処理される。
【００５２】
このように前述した方法により、メモリ装置３３から読まれたデータはコントローラ３１を介して前記システムに送り出されるべくゲートされる。このプロセスはアドレスされたデータの最後のビットが移送されるまで続く。
【００５３】
前もって検出された欠陥セルの欠陥マッピングにもかかわらず、最後のマッピング移行に新しいハードの誤りが発生するかもしれない。ダイナミック欠陥マッピングが恒久的に新しい欠陥セルを押し出すにしたがって欠陥マッピングの間に発生するであろう最新のハードの誤りはＥＣＣによって十分に取り扱われる。データがコントローラ３１によってゲートされるにしたがってコントローラは蓄積されていた値がちょうど計算された残りの値とマッチするかどうかを決定するために、ＥＣＣビットをＥＣＣハードウエア２２７へゲートとして入れる。もしそれがマッチすればシステムメモリに移送されたデータは正しいものであったとして、読み込み動作は完成させられた。しかしながら、もしＥＣＣレジスタに誤りがあったならば、システムメモリに送られるデータについての訂正計算が行なわれる。そして訂正されたデータが再送信される。誤りを計算する方法はハードウエアでもソフトウエアでも通常の方法によって行なわれる。ＥＣＣは誤りに原因する欠陥セルについての計算と位置出しをすることができる。これはコントローラ３１によって欠陥セルが発見されたセクタに関連して欠陥マップを更新するのに用いられる。このようにしてハードエラーは常にフラッシュＥＥｐｒｏｍシステムから除かれる。
【００５４】
図７は、好適な実施例における書込みデータパス制御を図示している。書込みの順序の最初の部分は既に説明した読みのシーケンスと共通している。マイクロプロセッサはまず初めに読みのシーケンスと同様にメモリ装置３３とＤＭＡのためのアドレスポインタをロードする。それは望まれるヘッダをアドレス発生器５０３にロードし、そしてコマンドキューをコマンドシーケンサ５１１にロードする。コマンドキューはリードヘッダコマンドファーストと一緒にロードされる。その後、制御はコントローラ３１に渡される。コントローラはそれからアドレスとコマンドをメモリ装置３３にリードシーケンスと同様にゲートする。メモリ装置は、ヘッダデータをコントローラの受信機５１５を介して戻す。コントローラは受信したヘッダデータを予期された値（ホールディングレジスタ５０９に蓄積されていたもの）と比較する。もし比較の結果が正しかったならば、正常な位置がベリファイされたものであって、シーケンスが連続する。それからコントローラはメモリ装置３３からの欠陥アドレスポインタをホールディングレジスタファイル５０９にロードし、代替データを欠陥データ代替ファイル５２７へロードする。
【００５５】
次にコントローラはシステムメモリ（図示せず）から書込みデータのフェッチを開始する。コントローラはこれをシステムバスにアクセスすることにより行い、記憶またはバスアドレスを出力し、リードサイクルを行なう。コントローラはデータをインプット入力インタフェース６０３を介してＦＩＦＯ６０１に引き込む。そしてコントローラはそれから、スターティングセクタのアドレス（最も低いバイトのアドレス）をアドレス発生器５０３から選ばれたメモリ装置３３へシフトする。これはＦＩＦＯ６０１からのデータによって追従される。これらのデータはマルチプレクサ６０５と５１３を通じて送られ、そしてメモリ装置３３に送り出される前に直列フォーマットに変換される。このシーケンスは書きサイクルのためのすべてのバイトが選ばれたメモリにロードされるまで続く。
【００５６】
データがＦＩＦＯ６０１からゲートされて、選択されたメモリ３３にゲートされるときに効果的な有効な処理能力を提供するためにパイプライン構造が採用されている。データはＦＩＦＯ６０１からゲートされてＥＣＣハードウエア５２７へ送られ、ここにおいて、残りの値はＥＣＣの中で計算されるであろう。次のステージにおいてデータがマルチプレクサ６０５と５１３を介してメモリ装置に送られているときに比較器５２１はアドレス発生器５０３からのそのアドレスをホールディングレジスタファイル５０９にある欠陥ポインタのアドレスと比較する。マッチが発生したときは、欠陥位置が書込まれようとしていることを示し、コントローラはこのビットを欠陥データ代替ファイル５１７へ記憶する。同時にメモリに送られる全ての誤りビットは０として送られるであろう。
【００５７】
選ばれたメモリ装置の中に書込みサイクルのバイトがロードされた後に、コントローラはプログラムコマンドをメモリ装置に発生して書込みサイクルを開始する。フラッシュＥＥｐｒｏｍ装置のための書込み操作の理想的な構造は先に引用した同時継続中の米国特許出願第２０４，１７５号（特許文献１）であって、一つは多状態ＥＥｐｒｏｍの読み、書き回路と技術と呼ばれているものに示されており、前記関連する部分をここで参考として挙げる。簡単に言えば、書込みのサイクルの間中にコントローラはプログラム（または書込み）電圧パルスを供給していることである。これは、全てのビットのプログラムが適当であるかということを決定するためのベリファイ読みが続く。もし、そのビットがベリファイされなかったときは、コントローラはプログラム／ベリファイサイクルを全てのビットが正しくプログラムされるまで繰り返す。
【００５８】
もし、一つのビットがプログラム／ベリファイサイクルを延ばした後でもベリファイに失敗したときは、コントローラはそのビットを欠陥ビットであると指定し、そしてそれにしたがって欠陥マップを更新するであろう。更新は欠陥セルが検出されるや否や、ダイナミックに行なわれる。同様な操作が消去ベリファイの失敗の場合においても、採用される。
【００５９】
全てのビットがプログラムされてベリファイされた後に、コントローラはＦＩＦＯ６０１から次のデータビットをロードし、アドレスセクタの中の次の位置をアドレスする。そしてコントローラはそれから他のプログラム／ベリファイシーケンスを次のバイトについて行なう。このシーケンスはそのセクタの最後のデータまで、連続して行なわれる。一度このことが発生するとセクタ（図５参照）に関連する影のメモリ（ヘッダ領域）をアドレスし、そしてＥＣＣレジスタの内容をこの領域に書込む。
【００６０】
さらに、欠陥があるとしてフラグがたてられそして欠陥データ代替ファイル５１６の中に蓄積されたビットの集合は代替欠陥データ位置（図５参照）に書き込まれ、これによって引き続く読みに使用される良いビットの価値を保つ。一度これらのデータグループが書込まれ、そして検証されるとそのセクタの書込みは完全なものと考えられる。
【００６１】
この発明は全体のセクタの欠陥をマッピングする規定をもっているが、しかしそれはその特定のセクタの欠陥セクタマッピング能力を越える欠陥が存在した後のことである。各セクタの中における欠陥セルの数としてカウントが保存される。あるセクタの中の数がある一定量を越えたときに、コントローラはそのセクタは欠陥としてそれを他のセクタにマップする。関連するセクタの欠陥ポインタは欠陥セクタマップの中に保存されるであろう。セクタ欠陥マップは最初の欠陥セクタにおいて、その余分な領域が欠陥がない場合において設け、そのセクタの中に設けられる。しかしながら、セクタのデータ領域が大量の欠陥が発生した場合においては、その余白の領域も同時に欠陥が多くなる可能性が強い。
【００６２】
そのような理由により、他の実施例においては、コントローラに保持される他のメモリの中に、セクタマップを位置させることが好ましい。メモリはコントローラのハードウエアか、またはフラッシュＥＥｐｒｏｍのメモリから離れた部分に位置させられるであろう。コントローラがアクセスで多領域のアドレスを与えられると、そのコントローラはこのアドレスをセクタ欠陥マップと比較する。もし、マッチが起こるならば欠陥セクタへのアクセスが拒否され、そして欠陥マップの中に存在する代替アドレスが入力され、そして対応する代替セクタが代わりにアクセスされる。
【００６３】
さらに他の具体例においてはセクタの再マッピングはマイクロプロセッサによって遂行される。マイクロプロセッサは入ってきたアドレスとアドレスを見てそれをセクタ欠陥マップと比較する。もしマッチがあれば、それはコントローラにコマンドを発生する代わりに、新しいコマンドとして他の位置を代替する。
【００６４】
固体ディスクのより速いスピードから離れて、さらに他の利点は、機械的な部分が存在しないということである。ディスク駆動に本来的に存在する回転性に原因する長いサーチ時間は存在しない。さらにこれに加得るに、長い同期時間、同期マークの検出時間、書込みギャップ等も必要でない。かくして、どこに読出されるべきデータが存在するか、またはどこに書込まれるべきであるかという位置にアクセスするために必要なオーバーヘッド時間はより少なくなる。これらの単純性、および無理がないということは、オーバーヘッドを少なくしたより速いシステムとして現れる。加得るに、ファイルはメモリの中に希望する任意のアドレスの順序で配列され、そしてコントローラには必要なデータにどうして得るかということが必要なだけである。
【００６５】
本発明のさらに他の特徴は欠陥マッピングは、セクタにまたはセクタからの移動させられるデータの流れを妨げる必要がない状態で構成されていることである。ブロック中で誤りを含むデータはそれに係わらず返送され、そしてそれは後に訂正される。順次アドレスを保存することによって、それ自身高い速い速度を得ることができるであろう。さらにまた、それはその装置の読み書きのデータパスにおける効果的なパイプライン構造の実現を許容する。
【００６６】
（書込みキャッシュシステム）
キャッシュメモリは一般的に遅いアクセスの装置のシステムの能力の速度を上げるために用いられている。例えば、コンピュータシステムにおいてディスク記憶装置からのデータのアクセスは遅い。そしてもしデータがより速いラムＲＡＭから得られるならば、スピードはより速くなるであろう。典型的に、ＲＡＭのシステムの部分はディスクからもっとも最近にアクセスされたものを仮に保持するためにキャッシュが使用されている。次にそのデータが要るときには遅いディスクの代わりにより速いキャッシュからそれを得ることができる。そのシステムは、同じデータが繰り返されて使用されるような状況において、うまく動作する。これは最も多くの構成やプログラムにおいて見られるものであり、これはコンピュータというものはプログラムを走らせているときには、非常に狭い記憶領域でのみ働く傾向があるからである。キャッシングの他の例は通常より安いが、しかし遅いＤＲＡＭにアクセスする時間を速くするために、より速いＳＲＡＭキャッシュを利用することである。
【００６７】
ほとんどの従来のキャッシュの設計は、メモリからの読み取りのスピードアップのための読出し（リード）キャッシュである。ある状況においては、メモリに書き込む速度を上げるために、書込みキャッシュが使用される。しかしながら、キャッシュには同時に書込まれるのに対して、システムメモリ（例えばディスク）への書込みの場合においては、データはそれらが発生するごとにその都度直接書込まれる。これは電力がなくなったときに更新され、ファイルが無くなってしまうという懸念のために、このことが成されるのである。もし書込みデータがキャッシュメモリ（揮発性）にのみに記憶されているときに、電力が無くなるということは新しく更新されたデータが、システムメモリ（不揮発性）の中の古いデータを更新する前に、キャッシュメモリから更新されたファイルがなくなってしまうということである。これらのファイルが引き続き利用されるときには、そのシステムは古いデータに基づいて操作されるということになるであろう。主メモリを毎回書き込む必要性は、キャッシュ機構を書込みのために壊してしまうことになる。読出しキャッシュにおいては、この懸念は全くなく、キャッシュからなくなるであろうデータはディスクでバックアップされているからである。
【００６８】
本発明においては、フラッシュＥＥｐｒｏｍのシステムは従来のディスク形の記憶装置をもつシステムに置き換えられて用いられる。しかしながら、フラッシュＥＥｐｒｏｍは過度のプログラム（消去サイクル）による消耗に曝されている。同時継続中の米国特許出願第２０４，１７５号（特許文献１），発明の名称「多状態のＥＥｐｒｏｍ読みおよび書きサーキットとその技術」、サンジャイ・メハロポラとエリヤホウ・ハラリ博士により本発明と同時に出願された願書に開示されている改良されたフラッシュＥＥｐｒｏｍメモリ装置においてさえ、耐久力の限界はほぼ１０6 のプログラム／消去サイクルに限定されている。この装置の寿命を１０年に引き延ばして考えてみると５分間に１回ずつの消去に限定される。これは通常のコンピュータの使用においては限界的なものである。
【００６９】
この問題を解決するために、キャッシュメモリシステムは、非常に多くのプログラム／消去サイクルに耐えることから切り離すことができるように新規な方法で用いられる。キャッシュの第１次的な機能は、フラッシュＥＥｐｒｏｍメモリに書込むために用いられ、従来のキャッシュの使用とは違ってフラッシュＥＥｐｒｏｍメモリからの読みには用いない。フラッシュＥＥｐｒｏｍメモリに書込む代わりに、毎回データは更新され、そのデータはフラッシュＥＥｐｒｏｍメモリへ送られる前に、キャッシュの中で、数回動作させられるであろう。これにより、フラッシュＥＥｐｒｏｍメモリへの書込みの回数を減らすことができる。さらにまた、主としてより速いキャッシュメモリの中に書込むことにより、より遅いフラッシュＥＥｐｒｏｍへの書込みの回数を減らし、全体のシステムにおける書込み効率を増強させることができるという利点が得られる。
【００７０】
本発明を実現するにあたって、比較的小さい大きさのキャッシュメモリが極めて有効である。これは電源断の間に揮発性のキャッシュメモリの中におけるデータ損失の問題を克服するのに役立つ。そのようなときには、キャッシュメモリを十分長い時間、十分な電源で維持することと、フラッシュＥＥｐｒｏｍメモリの中に特別に予約された空間である不揮発性メモリの中にそれらのデータを詰め込んでおくということもできる。このシステムにおける電力断、または電力障害において、書込みキャッシュシステムは全体のシステムから切り離されて、準備されていた再充電可能な電力供給はキャッシュシステムの電源とフラッシュＥＥｐｒｏｍメモリに準備された空間への電源にのみ利用される。
【００７１】
図８は、本発明による装置のコントローラの一部を形成するキャッシュシステム７０１を略図的に示した図である。キャッシュシステム７０１の一方側はフラッシュＥＥｐｒｏｍメモリアレイ３３に接続されている。一方側において、それはマイクロプロセッサシステム（図示せず）にホストインタフェース７０３を介して接続されている。このキャッシュシステム７０８は２つのメモリをもっている。１つは一時的に書込みデータファイルを保持するキャッシュメモリ７０５である。他はキャッシュメモリ７０５の中に保持されるデータファイルに関連する情報を記憶するためのタグメモリ７０９である。メモリタイミング／コントロール回路７１３はキャッシュメモリ７０５からフラッシュＥＥｐｒｏｍメモリ３３へのデータファイルの書込みを制御する。メモリコントロール回路７１３はタグメモリの中に蓄積されている情報と同様にマイクロプロセッサシステムの電源装置にホストインタフェース７０３と線７１７を介して接続されている電力検出入力７１５に応答させられる。マイクロプロセッサシステムの電力の劣化はメモリコントロール回路７１３によって検出され、それは揮発性のキャッシュメモリ７０５の中のデータファイルの全てを不揮発性のフラッシュＥＥｐｒｏｍメモリ３３にダウンロードするであろう。
【００７２】
本発明において、フラッシュＥＥｐｒｏｍメモリアレイ３３は、セクタ（典型的には５１２バイトの大きさ）に組織されており、各セクタ内の全てのメモリセルは、一緒に消去可能である。かくして各々のセクタは、データファイルとみなされ、そしてメモリアレイ上の書込み操作は、１または２以上のそのようなファイルにおいて行なわれる。
【００７３】
フラッシュＥＥｐｒｏｍメモリ３３の中における新しいセクタの読みの間、データファイルは読み出されて直接的にホストを介してコントローラに送られる。このファイルは通常のキャッシュシステムにおいて行なわれていたようにキャッシュメモリ７０５を満たすために使用されない。
【００７４】
ホストシステムがファイルの中のデータの処理を完了して、それをフラッシュＥＥｐｒｏｍメモリ３３の中に書き戻そうと希望したときに、それはキャッシュシステム７０１に書込みサイクルの要求によりアクセスする。コントローラはこれによりこの要求を受け入れてそのサイクルで動作させる。
【００７５】
本発明の１つの具体例においてはデータファイルはキャッシュメモリ７０５へ書込まれる。同時にデータファイルに関連する他の２つの情報片はタグメモリ７０９に書込まれる。第１のものはファイルポインタであってキャッシュメモリ７０５の中に存在するファイルを規定する。第２のものはタイムスタンプであり、それはキャッシュメモリの中に最も最後にファイルされたかの時間を物語るものである。このようにしてホストがフラッシュＥＥｐｒｏｍメモリ３３に書込みを欲するときはいつでも、そのデータファイルはポインタとタグメモリ７０９の中のタイムスタンプとともにキャッシュメモリ７０５の中に最初に現実に記憶されたものである。
【００７６】
本発明のさらに他の具体例によれば、ホストからの書込みがあったときは、コントローラはまず初めにそのファイルが既にキャッシュメモリの中に存在していたものであったのか、またはタグメモリ７０９の中においてタグが着けられたもののいずれかであったかを見ることによりチェックする。もしそれがタグが着けられていなかったならばフラッシュメモリ３３に書込まれる。一方、その標識とタイムスタンプはタグメモリ７０９に書込まれる。もし、そのファイルすでにキャッシュメモリの中に存在するか、タグが着けられたものであったならば、それはキャッシュメモリの中で更新され、フラッシュメモリの中には書込まれない。この方法によりしばしば用いられないデータファイルのみがフラッシュメモリに書込まれる一方、しばしば用いられるデータファイルはキャッシュメモリの中に捉えられている。
【００７７】
本発明のさらに他の具体例によれば、ホストからの書込みがあったときは、予め定めた時間（例えば５分間のみ）の間にどこかでさらに書込まれたデータファイルであるかどうかを見てチェックする。もしそうでなかったならばフラッシュメモリ３３に書込まれる。一方、その標識とタイムスタンプはタグメモリ７０９に書込まれる。もし、そのデータファイルが予め定めた時間間隔内に書込まれたものであったならば、それはキャッシュメモリ７０５の中に書込まれ、フラッシュメモリへは書込まれない。同時に、その標識とタイムスタンプはタグメモリ７０９へ他の実施例と同様に書込まれる。この方法においても同様にほとんど使用されないデータファイルのみがフラッシュメモリに記録される一方、しばしば使用されるデータファイルはキャッシュの中に捉えられている。
【００７８】
全ての具体例において、いつでもキャッシュメモリ７０５は充填されるように使われる。コントローラが予め決めた十分に満たされた状態に達したことを検出したときにはコントローラはキャッシュメモリ７０５の中のその他のファイルに優先してフラッシュメモリ３３の中に書込むことによって保存することを開始する。
【００７９】
いずれの具体例においても、キャッシュメモリ７０５はいつでも充填される方向にスタートさせられている。コントローラがある定められた満たされた状態に達したことを検出したときにはコントローラはキャッシュメモリ７０５の中に他のものに優先してあるファイルの保存をフラッシュメモリ３５の中にそれらを書込むことによって開始する。これらのファイルのためのファイルの標識であるタグビットはそのときにリセットさせる。そしてこれらのファイルが書き終わったものであることを示す。これにより、キャッシュメモリに入ろうとする新しいデータのための空間が形成される。
【００８０】
コントローラは新しいよく働くファイルのための空間を形成するために、最初に動かされた最も活用されないファイルをフラッシュメモリ３３にもどすことに対する責任ももたされている。各ファイルの活動の水準を追跡して保持するために各ファイルのためのタイムスタンプはそのファイルの新しい活動のためにリセットされない限り、動作させられる度ごとにコントローラによって集積される。このタイミングはタイマ７１１によって提供されている。すべてのタイムステップ（カウント）にコントローラはキャッシュメモリの中のデータファイルに系統的にアクセスしてこのデータファイルのために、最後に書き込まれスタンプを読む。コントローラはそれからこのタイムスタンプを他のタイムステップ（すなわちカウントを１上昇）でインクリメントする。
【００８１】
ファイルのタイムスタンプに対して、そのファイルの活動にしたがって２つのことが起こる。１つの可能性は、そのタイムスタンプが新しい活動が発生したという事象によってリセットされることである。他の可能性はそのファイルについて新しい活動を発生しないで、そのタイムスタンプがキャッシュから除去されるまでインクリメントされることである。実際、タイムスタンプが無制限に増加すると最大の限界に達する。例えば、システムによりタイムスタンプが最大５分の不活動期間までインクリメントされる場合がある。したがって  データファイルがキャシュメモリに書込まれるとき、ファイルのタイムスタンプは初期値に設定される。その後、タイムスタンプは、別の書込み更新により初期値に再度設定されなければ、タイムステップ毎にインクリメントしながら増加し始める。例えば、５分の不活動状態後には、タイムスタンプは最大値の終端カウントまでインクリメントされる。
【００８２】
カウントを維持する１つの実施例において、ファイルのカウントインクリメントが生じる度に、シフトレジスタのある場所にビットがシフトされる場合がある。もしファイルが更新（新しい活動が発生したこと）のときにビットの位置は、シフトレジスタの当初の位置にセットされるであろう。一方、ファイルが不活動状態にあるときにはある場合においてビットは次第に最終的なシフト位置に向かってシフトされるであろう。各ファイルのカウント値は各タイムステップごとに記憶され、それからインクリメントされていく。各インクリメント後、カウント値はマスターカウンタと比較され、その差は問題の時間遅れである。
【００８３】
かくして、もしファイルが活動状態であれば、その加算されたタイムスタンプはデータファイルが書き換えられる度に当初の値にリセットされてもどされる。この方法により、常に更新されているファイルは低いスタンプ標識を持ち、そしてその動作が減少するまで、キャッシュメモリの中に保存されるであろう。不活動の期間が経過した後に、それらは最大のタイムスタンプ標識を得る。使われていないファイルは次第にフラッシュメモリの中に記憶され、新しい、より使用されるファイルのためにキャッシュメモリの中のスペースを空けていく。タグメモリの中においてもスペースはこれらの不活性なファイルがフラッシュメモリに移動されるにしたがってあけられていく。
【００８４】
いつでもキャッシュメモリに入ろうとする新しいデータファイルのために場所が空けられている必要があり、コントローラはいくつかの古いファイルを除去してそれをフラッシュメモリ３３の中に保存する。スケジューリングはコントローラの中のメモリタイミング／コントロール回路７１３によってなされる。ファイルを保存することについての決定はいろいろな領域に基礎づけられている。コントローラがそのシステムにおける書込みの発生頻度をいつも監視しており、キャッシュがどの程度満たされているかをみている。もし、キャッシュの中に、空き部屋、空間、空き間がときには保存がされる必要はない。もし、より多くの空き部屋が要求されるときは、最も速い時間のタイムスタンプをもつファイルが最初に移動され、フラッシュメモリに記憶される。
【００８５】
本発明はコントローラの中のハードウエアの中の構成に関連して記述されてきたが、他の構成が可能であるというようにも理解されたい。例えば、キャッシュメモリはそのシステムの中のどこに存在してもよいし、また現存するマイクロプロセッサシステムに用いられるソフトウエアによって実現されても良い。そのような変形は本発明の方の範囲内にある。
【００８６】
いかに多くの回数データがフラッシュメモリに書き戻されたかというプロファイルはいろいろな要素のもとで決定される。それは、キャッシュメモリの大きさとそのシステムにおける書込みの発生頻度に依存する。小さなキャッシュメモリシステムの場合では、最も頻度の高いファイルのみがキャッシュ化されるだろう。より少ない頻度でアクセスされるファイルはキャッシュメモリの大きさを増大することに関連してキャッシュ化されるであろう。本発明、すなわち比較的安くて小さい量のキャッシュメモリを使用する場合においては、好ましくは１メガバイト程度のものの利用が有効である。最も良く用いられるファイル（例えば上位５％）に定常的に書込まないようにすることにより、フラッシュＥＥｐｒｏｍの書込み頻度は、各ミリ秒ごとのものを５分毎秒程度に減少させることができるであろう。これにより、メモリの使い尽くし時間は、ほとんど永久というように延ばすことができる。この改良は書込み時間中のシステムの動作能率を向上させるという改良になって現れる。
【００８７】
タイムタグをライトキャッシュの概念の中に実現するということは、ライトキャッシュバッファメモリを比較的小さくするという利点となり、その理由は．それがしばしば、書かれるデータファイルの記憶に用いられ、その他のファイルはフラッシュＥＥｐｒｏｍメモリに直接書込まれるのである。第２の特徴は、ライトキャッシュバッファの入出で、ある移動データファイルの管理は、次にどのデータファイルが呼ばれるかという進んだ知識を要求されないので、自動化できることである。
【００８８】
前述した本発明の種々の点は、フラッシュＥＥｐｒｏｍメモリが従来の不揮発性大容量記憶装置と代替可能なものになるフラッシュＥＥｐｒｏｍメモリアレイのシステムに関連するものである。
【００８９】
前述した本発明の種々の点の実施例は好適な実施例であるが、当業者はそれらの変形例もまた実施可能であることを理解されたい。したがって、本発明は、添付の請求の範囲の全範囲内に保護が与えられるべきものである。
【図面の簡単な説明】
【００９０】
【図１Ａ】本発明によるフラッシュＥＥｐｒｏｍメモリシステムを含むマイクロプロセッサシステムのブロック図である。
【図１Ｂ】ある数のフラッシュＥＥｐｒｏｍメモリチップと一つのコントローラチップを含むシステムを示すブロック図である。
【図２】消去されるべく選択されるメモリセクタを含むフラッシュＥＥｐｒｏｍチップシステムの略図である。
【図３Ａ】本発明による多数のセクタの選択的消去を実現するためのコントローラの回路を示すブロック図である。
【図３Ｂ】図２Ａに示された消去のために一つのセクタを選択するために使用される典型的なレジスタの詳細を示す回路図である。
【図４】複数のセクタ消去選択の消去シーケンスを図示した流れ図である。
【図５】一つのフラッシュＥＥｐｒｏｍセクタをデータ領域と予備の冗長領域に分けたことを示す略図である。
【図６】本発明による欠陥マッピングを使用した読込み操作中におけるデータパスを示したブロック図である。
【図７】本発明による欠陥マッピングを使用した書込み時におけるデータの制御パスを図示したブロック図である。
【図８】コントローラの中の書込みキャッシュ回路を図示したブロック図である。
【符号の説明】
【００９１】
２１  マイクロプロセッサ
２３  システムバス
２５  ＲＡＭ
２７  Ｉ／Ｏ装置
２９  バルクメモリ
３１  メモリコントローラ
３３  ＥＥｐｒｏｍアレイ（メモリ）
３５，３７  シリアルデータ線
３９  データバス
４０  インタフェース回路
４１  システム制御線
４３，４５，４７  ＥＥｐｒｏｍチップ
４９，５１，５３  チップセレクト（イネイブル）
５７  論理およびレジスタ回路
５９  バス
２０１，２０３，２０５  ＥＥｐｒｏｍチップ
２０９  線
２１１，２１３  セクタ
２２１，２２３  レジスタ
２２５  コマンドレジスタ
２２７  シリアルインタフェース
２２９  コマンドデコーダ
２３１  アドレスレジスタ
２３３  アドレスデコーダ
５０３  メモリアドレス発生器
５０５  ポート（μｐインタフェース）
５０７  ＤＭＡコントローラ
５０９  ホールディングレジスタファイル
５１１  コマンドシーケンサ
５１３  マルチプレクサ
５１５  受信器
５１７  欠陥データ代替ファイル
５１９  ＦＩＦＯ
５２１  コンパレータ
５２３  マルチプレクサ
５２５  出力インタフェース
５２７  ＥＣＣハードウエア
６０１  ＦＩＦＯ
６０３  インタフェース
６０５  マルチプレクサ
【図１Ａ】
2007149119.tif 000003
【図１Ｂ】
2007149119.tif 000004
【図２】
2007149119.tif 000005
【図３Ａ】
2007149119.tif 000006
【図３Ｂ】
2007149119.tif 000007
【図４】
2007149119.tif 000008
【図５】
2007149119.tif 000009
【図６】
2007149119.tif 000010
【図７】
2007149119.tif 000011
【図８】
2007149119.tif 000012