(57)【要約】不揮発性フラッシュメモリシステムは、圧縮されているカウントを多数の当該イベントの発生について１回だけ更新することにより、個々のブロックが消去されて書き直された回数などのイベントの発生を数える。乱数または擬似乱数発生器は、該イベントのそれぞれの発生に応答して新しい数を出力し、該乱数発生器の出力が所定数と一致するときに圧縮されているカウントを更新する。単一のイベントに応答して該所定数が該乱数発生器により作られる確率は、圧縮されているカウントの値などの他の何らかの要素の関数として変更されてもよく、そのときにはイベント数のもっと有益な追跡を提供する。これらの手法は、フラッシュメモリシステム或いは他の種類の電子システムにおいて繰り返される他の種類のイベントを監視するためにも応用される。【特許請求の範囲】
【請求項１】
電子システムの動作中に繰り返されるイベントの発生の数の圧縮されているカウントを維持する方法であって、
前記システムイベントの個々の発生に応答して、発生するランダムなまたは擬似ランダムな確率Ｐを有するもう一つのイベントが発生したか否か判定し、
ランダムにまたは擬似ランダムに発生する該イベントが発生した場合に前記システムイベントの発生の数の圧縮されているカウントを更新すること、
を含む方法。
【請求項２】
電子システムの動作中に繰り返されるイベントの発生の数の圧縮されているカウントを維持する方法であって、
該イベントの個々の発生時に乱数を作り、
作られた乱数が少なくとも１つの所定値と一致するときを判定し、
作られた乱数が前記少なくとも１つの所定値と一致することに応答して、該電子システム内での該イベントの発生の数の圧縮されているカウントを更新すること、
を含む方法。
【請求項３】
前記少なくとも１つの所定値は、作られる可能性のある乱数のＮ個の別々の値のうちの１つであり、該電子システムにおいて最大の期待数Ｍのイベントが発生することが許容され、該圧縮されているカウントは少なくともＭ÷Ｎに等しい数まで維持可能であることを特徴とする請求項２記載の方法。
【請求項４】
該電子システムの初期化の時に、第２乱数発生器により作られた数で乱数発生器をシーディングすることをさらに含む請求項２記載のの方法。
【請求項５】
作られた乱数が前記少なくとも１つの所定値と一致するときを判定することは、前記イベントの累積数が大きくなるに連れて作られた個々の乱数について一致が発生する確率を減少させるために、累積的に発生した前記イベントの数を考慮に入れること特徴とする請求項２記載の方法。
【請求項６】
該方法は不揮発性フラッシュメモリを含む電子システムで実行され、繰り返される該イベントは該フラッシュメモリのアドレス指定された部分の消去を含む請求項２〜５のいずれか記載の方法。
【請求項７】
該乱数を作ること、およびその作られた乱数が前記少なくとも１つの所定値と等しいときを判定することとは、両方とも、該フラッシュメモリシステムの前記アドレス指定された部分に個々の消去電圧パルスが加えられている間に行われること特徴とする請求項６記載の方法。
【請求項８】
フラッシュＥＥＰＲＯＭシステムであって、該システムは、不揮発性メモリセルの複数のブロックであって、その個々のブロック内のセルは同時に消去可能である複数のブロックと、
メモリセルのアドレス指定されたブロックへのデータのプログラミングと、メモリセルのアドレス指定されたブロックからのデータの読出しと、メモリセルのアドレス指定されたブロックのうちの１つ以上からのデータの同時消去とを制御するマイクロプロセッサとを含むコントローラと、
個々の該メモリセル・ブロックと関連するカウントを維持するメモリセルの該複数のブロックの中に設けられた記憶装置と、
アドレス指定されたブロックのうちの１つ以上が消去されたことに応答して数をランダムに発生する数発生器と、
乱数発生器により作られる可能な数のうちの所定の少なくとも１つと作られた乱数とが一致するときに、消去される１つ以上のアドレス指定されたブロックと関連するカウントのうちの少なくとも１つを更新させる比較器と、
を含むシステム。
【請求項９】
その数発生器は、制御された総数の可能な異なる乱数のうちの１つを発生することを特徴としており、可能な異なる乱数の前記総数は、消去される１つ以上のアドレス指定されたブロックと関連するカウントのうちの前記少なくとも１つにより制御されることを特徴とする請求項８記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、イベント計数技術に関し、特に、半導体メモリシステムへの、特に不揮発性フラッシュ型の電気的に消去可能でプログラマ可能なリード・オンリー・メモリ（ＥＥＰＲＯＭ）への該技術の応用に関する。
【０００２】
【従来の技術】
フラッシュＥＥＰＲＯＭシステムは、特に、ホストシステムと取り外し可能に結合される密閉カードに封入されているとき、多様なアプリケーションで使用される。現在の商用メモリカード・フォーマットは、パーソナルコンピュータ・メモリカード国際協会（ＰＣＭＣＩＡ）、コンパクトフラッシュ（ＣｏｍｐａｃｔＦｌａｓｈ（ＣＦ））、マルチメディアカード（ＭｕｌｔｉＭｅｄｉａＣａｒｄ（ＭＭＣ））およびセキュアディジタル（ＳＤ）のそれを含んでいる。これらのカードの一サプライヤーは、本願の譲受人であるサンディスク　コーポレーションである。その様なカードと共に用いられるホストシステムは、パーソナルコンピュータ、ノートブック型コンピュータ、手持ち式計算装置、カメラ、オーディオ再生装置等を含む。フラッシュＥＥＰＲＯＭシステムは、ホストシステムにはめ込まれるバルク大容量記憶装置としても利用される。
【０００３】
その様な不揮発性メモリシステムは、メモリセルのアレイ、周辺操作回路およびシステムコントローラを含む。該コントローラは、ホストシステムとの通信と、ユーザデータを蓄積したり検索したりする該メモリセルアレイの操作とを管理する。メモリセルはセルのブロックに分けられ、セルのブロックは同時に消去可能なセルの最小グルーピングである。セルの１以上のブロックにデータを書込む前に、セルのこれらのブロックは消去される。ユーザデータは、一般に、ホストとメモリアレイとの間でセクタとして転送される。１セクタのユーザデータは取り扱いやすい任意の量であって良く、好ましくは、メモリ・ブロックの容量より少ないかまたは等しく、しばしば標準ディスクドライバ・セクタサイズに等しく、それは５１２バイトである。
【０００４】
１つの商業的アーキテクチャでは、メモリシステム・ブロックは１セクタのユーザデータとオーバヘッドデータとを蓄積するサイズとされ、該オーバヘッドデータは、該ブロックに蓄積されているユーザデータについての誤り訂正符号（ＥＣＣ）、該ブロックが消去され再プログラミングされた回数のカウント、該メモリセル・ブロックの欠陥およびその他の物理的情報、および該ブロックにかけられるべきプログラミングおよび／または消去電圧などの情報を含む。この種の不揮発性メモリシステムの種々の実施形態が次の米国特許および係属中の特許出願に記載されており、その各々の全体が上記参照によりここに取り入れられている。それらは、特許第５，１７２，３３８号、第５，６０２，９８７号、第５，３１５，５４１号、第５，２００，９５９号、第５，２７０，９７９号、第５，４２８，６２１号、第５，６６３，９０１号、第５，５３２，９６２号、第５，４３０，８５９号、第５，７１２，１８０号、および１９９７年８月７日に出願された特許出願第０８／９１０，９４７号および１９９９年６月３０日に出願された特許出願第０９／３４３，３２８号である。もう一つの商業的アーキテクチャでは、ユーザデータを蓄積している多数のブロックについてのオーバヘッドデータは他のブロック中のテーブルに一緒に蓄積される。このオーバヘッドデータは、個々のユーザデータ・ブロックが消去され再プログラミングされた回数のカウントを含む。その様なシステムの例が、２０００年２月１７日に出願された米国特許出願第０９／５０５，５５５号に記載されている。もう一つのタイプの不揮発性メモリシステムは、ユーザデータの多数のセクタを蓄積するもっと大きなメモリセル・ブロック・サイズを利用する。
【０００５】
個々のメモリ・ブロックが経験した消去／再プログラミング・サイクルの数（それらの“経験カウント”）がしばしば１つまたは幾つかの理由からフラッシュ・メモリシステム内に維持される。１つの理由は、過度の使用から故障する前にシステムからマッピングすることによって他のブロックと置き換えるために、ブロックがその寿命の終わりに達しかかっているときを判定することである。これは、例えば、米国特許第５，０４３，９４０号に記載されており、この特許は上記参照によりここに取り入れられている。現在の商用フローティングゲート・メモリセルは数十万から１００万消去／再プログラミング・サイクルの寿命を有し、これはしばしばメモリの実用寿命の間殆どのアプリケーションでどのブロックが循環されるよりも大きい。しかし、他のもっと再プログラミングの集中的なアプリケーションはその様な大きな数に達することがある。ブロック経験カウントを追跡するもう一つの理由は、メモリシステムの寿命を延ばす一つの方法として、それらが寿命の終わりに達する前にそれらの損耗を一様にするために種々のブロックへのデータのマッピングを変更できるようにすることである。この様な損耗平等化技術の例が米国特許第６，０８１，４４７号に記載されており、この特許は、その全体が上記参照によりここに取り入れられている。ブロック経験カウントを維持するもう一つの理由は、消去／再プログラミング・サイクルの数が増えるに連れて生じるメモリセルの特性の変化を考慮に入れるためにプログラミングおよびその他の動作電圧を調整できるようにすることである。
【０００６】
（発明の開示）
重要な点は、１つ１つのイベントの発生を追跡するのではなくて、各回だけでもイベントが大量に発生しているということである。１つの利点は、発生したイベントＡの数を表す圧縮されているカウントＲが、各イベントが数えられる場合よりは希に更新されるだけでよいということである。もう一つの利点は、２進計数方式では多数のイベントＡを表すカウントＲを維持するために、より少数のビットが必要とされるということである。圧縮されているカウントＲを維持するための好ましい手法は、監視されるイベントが発生する毎に圧縮されているカウントＲが更新される確率Ｐを確立することを含む。その結果として、圧縮されているカウントＲは、平均で、１／Ｐ回の実際のイベント当たり１回の割合で更新される。この確率は、好ましくは、イベントが発生するシステムの動作から実際的であるくらい独立しているように選択されるので、圧縮されているカウントＲを更新する頻度に対するシステム動作の影響が最小限となる。
【０００７】
ここに記載される特定の例では、電子システムを操作する動作の一部分として発生する反復イベントの数を監視するためにこの手法が利用される。乱数発生器はイベントの数の圧縮されているカウントＲが更新されるときを決定するために用いるのに好ましく、実際には擬似乱数発生器が普通使用される。イベントが発生するとき、好ましくはイベントが発生する毎に、乱数が発生される。該乱数のうちの１つは、好ましくは、次の順番の数にインクリメントさせるなどにより、圧縮されているカウントＲを更新させるトリガとして選定される。これは、平均で、Ｎ回のイベント当たり１回の割合で発生するが、ここで、Ｎは、時間がたつに連れて乱数発生器により発生される別個の乱数の可能な総数である。イベントの各発生が数えられるのではなくて、圧縮されているカウントＲは平均でＮ個のイベント当たり１回の割合で更新され、そのカウントは、平均で、発生したイベントの数の１／Ｎを表す。或いは、別の言い方をすれば、イベントのいずれか１つの発生が圧縮されているカウントＲを更新させるという結果をもたらす確率は１／Ｎである。ＲとＮとの積は、１／Ｐに比例するありそうな誤差の限界内で、もし必要ならば、実際のイベントの数Ａを与え、それは、Ｐ＝１／Ｎなので、Ｎが大きくなるに連れてありそうな誤差が大きくなることを言っている。
【０００８】
これらの手法は、特にディジタル・メモリシステムに応用される。上述された従来の技術の欄に記載されている不揮発性フラッシュメモリ・システムの例では、消去／再プログラミング・イベント等のイベントの圧縮されているカウントＲを更新する動作は比較的に希に行われればよいので、メモリの他の動作からより少しの時間を減じる。これは、ユーザデータ・プログラミング等の、その様な他の動作がより高速に行われるという結果をもたらす。また、各ブロックについてのカウントを蓄積するのに必要なビット数も顕著に少なくなる。さらに、イベントの各々の発生を数えなくても良いときはメモリシステムの動作の複雑さも減少する。
【０００９】
フラッシュメモリで発生する消去および再プログラミング・サイクルの数の経験カウント（時には“ホット”カウントと呼ばれる）を維持するためのこの手法の応用では、数ＮはＭの小部分であるように選択され、ここで、Ｍは、動作の能率が非常に悪かったり完全な故障の危険が生じたりする前にメモリセルが無事に経験し得る消去／再プログラミング・サイクルの最大数で表したメモリの予想寿命である。結果として生じる圧縮されているカウントＲは、発生したイベントの数Ａを正確に知ることを可能にしないけれども、その相対的正確さは、イベントの数Ａが大きくなるに連れて、特にメモリ・ブロックの寿命の終わりＭに近づくときに、高くなる。メモリの寿命にわたる最大の圧縮されているカウントＲは、全ての消去イベントが数えられる場合のＭではなくてＭ÷Ｎであるので、経験カウントに必要な記憶空間のバイト数は顕著に減少されることができる。圧縮されているカウントの更新は多数の消去イベントについて１回だけなので、メモリの全体としての性能が改善される。さらに、フラッシュ・メモリシステムは維持しデバッグしやすい。
【００１０】
その様なイベントのうちの特定の１つが圧縮されているカウントを更新させる確率Ｐはメモリまたは他の電子システムのイベントが数えられる時間全体にわたって同じに保たれる必要はなくて、例えば、監視されているイベントの数Ａの関数として変更されても良い。具体的には、実際のカウントの値Ａが小さいときにフラッシュメモリの消去／再プログラミング・イベントのより正確な圧縮されているカウントＲを維持したい場合には、確率Ｐは動作の始めには高く維持され、そしてメモリの寿命中に実際のカウントＡが大きくなるに連れて小さくされる。特別の例として、圧縮されているカウントＲが特定のブロックのメモリセルにそのプログラミングおよび／または消去中にかけられる電圧を制御するためにシステムにより使用されるときにはこれは特に有益であり、その理由は、それらの電圧が実際の経験カウントＡのレベルが低いときにしばしば変更されることである。この能力は、個々のブロックについての圧縮されているカウントＲを蓄積するためにより多くのビットを専用する必要を伴うことなく提供される。
【００１１】
本発明の付加的な局面、特徴および利点は特定の代表的な実施形態についての以下の記述に包含されており、その記述は添付図面と関連して考慮されるべきである。
【００１２】
【発明の実施の形態】
図１は、典型的な不揮発性メモリシステムの主要な構成要素のうちの幾つかの概略図である。コントローラ１１は、ライン１３を介してホスト・システムと通信する。コントローラ１１は、それ自身の集積回路チップを占めることがあり、ライン１５を介して１つ以上の不揮発性メモリと並列に通信し、１つのメモリ１７が示されている。メモリ１７は、メモリセルアレイおよび付随する周辺回路３７を包含し、それらは、コントローラ・インタフェース３９と共に、独立した集積回路チップ上に形成されることができる。
【００１３】
ユーザデータは、この例ではライン１５を介してコントローラ１１とメモリ１７との間で転送される。メモリ１７は、該コントローラによりアドレス指定される。具体的には、ライン１５内のデータバスは１バイト幅であって良い。図１に示されているメモリシステムは、ホストシステムの一部として埋め込まれるか、或いは上述したカード規格のうちの１つに従うカードなどのカードに入れられることができる。カードの場合、ライン１３は、ホストシステム内の補足的ソケットと噛み合う該カード上の外部端子で終端する。１つのコントローラチップと複数のメモリチップとの使用が一般的であるけれども、もちろん、それらの回路を組み合わせることによりその様なシステムのためにより少数の別々のチップを使用するのが趨勢である。６４メガバイトのデータ容量を有する不揮発性メモリシステムを形成するために、図示されているメモリ１７の容量例は２５６Ｍｂｉｔであり、従ってその様なメモリチップを２つとコントローラチップとを必要とする。単一のより小さな容量のメモリチップを使用すると、より小容量のメモリシステムとなる。８メガバイト・システムが市場向きの例である。逆に、システムにおいてより高いビット蓄積密度および／またはより多数のメモリアレイ・チップを用いると、より大容量のメモリとなる。１．３ギガバイト以上に及ぶその様なメモリシステムが実際的である。
【００１４】
コントローラ１１は、コントローラ・インタフェース論理２５を通して内部メモリと外部コンポーネントとのインタフェースとに接続されているマイクロプロセッサまたはマイクロコントローラ２３を包含する。プログラムメモリ２７は、接続されているメモリアレイからデータを読出してそのデータをホストに送り、データをホストからメモリアレイに書込み、そして他の多数の監視および制御機能を実行するようにメモリシステムの動作を制御するためにマイクロコントローラ２３によりアクセスされるファームウェアおよびソフトウェアを蓄積する。メモリ２７は、何らかの形の不揮発性メモリからのデータにより初期化される揮発性の再プログラミング可能なランダムアクセスメモリ（ＲＡＭ）、再プログラミング可能ではない不揮発性メモリ（ＲＯＭ）、ワンタイム・プログラマブル・メモリ（ＯＴＰ）または再プログラミング可能なフラッシュＥＥＰＲＯＭシステムであって良い。もしメモリ２７が再プログラミング可能ならば、コントローラはホスト・システムがそれをプログラミングすることを可能にするように構成されることができる。ランダムアクセスメモリ（ＲＡＭ）２９は、とりわけ、読出しおよび書込み動作の間にアクセスされる不揮発性メモリから読出されるテーブルからのデータを蓄積するために使用される。
【００１５】
論理回路３１はホスト通信ライン１３とインタフェースし、もう１つの論理回路３３はライン１５を介してメモリ・アレイとインタフェースする。もう１つのメモリ３５は、ホスト・システムとメモリ１７との間で転送されるユーザデータを一時的に蓄積するバッファとして使用される。コントローラ内のメモリは、オペレーティング・ファームウェアを蓄積するものを除いて、普通は揮発性であり、その理由は、高速アクセスおよび効率的コントローラ動作のために望ましい他の特性を有するメモリはその特性を有することである。数個の揮発性メモリは物理的に単一のメモリに便利にまとめられても良い。
【００１６】
メモリ１７の論理回路３９は、ライン１５を通してコントローラとインタフェースする。論理回路３９の目的は、別々のバスおよび制御ラインを介して転送されるメモリセルアレイ３７のための信号を作ることである。種々の制御信号がライン４１で供給される。データバス４５は不揮発性メモリにプログラミングされ或いは不揮発性メモリから読出されるユーザデータを伝え、アドレスバス４７は、ユーザデータを読出し、ユーザデータを書込み或いはメモリセルのブロックを消去するためにアクセスされるメモリの部分のアドレスを伝える。電力制御回路４３は、回路４１に存する制御信号に応答して、ライン４９を通してメモリセル・アレイ３７を操作するために必要とされる種々の電圧および電流を供給する。ライン４７に存するアドレスにより示されるセルのうちのいくつかをプログラミングし、読出し或いは消去するために適するメモリセルアレイ３７のビットラインおよびゲートへの電圧が含まれる。
【００１７】
１つの典型的なフラッシュメモリの実施形態では、該アレイのメモリセルは幾つかのブロックに分けられ、その各ブロックはメモリセルの最小の消去可能な単位であり、個々のブロック内の全てのセルが同時に消去可能である。一般に、数個のブロックが同時に消去され、メモリアレイへのデータのプログラミングは、始めに消去されたブロックで行われる。ありふれた例では、各ブロックは、５１２バイトのユーザデータに加えて、そのユーザデータに付随し且つ／または該オーバヘッドデータが蓄積されているメモリセルのブロックに付随する数バイトのオーバヘッドデータを保持する。その様なブロックは、１つの特定の現行の実施形態では、２列のメモリセルから形成される。もう１つの例では、各ブロックは、３２７６８（６４×５１２）バイトのユーザデータに加えてオーバヘッドデータを保持する。ユーザデータと同じブロックにオーバヘッドデータを蓄積する代わりとして、オーバヘッドデータの一部または全部を、その目的に専用される他のブロックに蓄積することができる。
【００１８】
幾つかのフラッシュＥＥＰＲＯＭシステムにおける現行のフラッシュメモリの各ブロックに付随するオーバーヘッド情報のアイテムのうちの１つは、そのブロックが経験した消去／再プログラミング・サイクルの数である。このブロック経験カウントは多くの目的のために役立ち、そのうちの主要なものが上述されている。該ブロックの消去または再プログラミングのうずれかのイベントを書き留めておくためにブロック経験カウントが更新されるとき、そのブロックについて不揮発性メモリに蓄積されている現行の経験カウントが最初に読出されて、一時メモリに普通はコントローラ内の不揮発性メモリに蓄積される。この読出されたカウントは、その後、カウントを１だけインクリメントするなどにより、後のイベントの発生を表すために更新され、そしてその更新されたカウントが次に不揮発性メモリブロックに書き戻される。これは、時間がかかり、従ってメモリシステムの性能に強い悪影響を及ぼすかなりの数の動作を必要とする。
【００１９】
本発明の主要な実施形態では、経験カウントは、関連するブロックが消去され再プログラミングされる毎には更新されない。むしろ、圧縮されているカウントは、数えられている消去／再プログラミング・イベントの率と比例定数により関連させられる平均の率で比較的希に更新される。例えば、フラッシュメモリが約１，０００，０００消去／再プログラミング・サイクルの寿命を有し、圧縮されているカウントが約４０００サイクルに１回だけ更新されるならば、更新プロセスは多数のサイクルの発生にわたってわずか１／４０００の頻度で行われるに過ぎない。メモリの動作中に圧縮されている経験カウントを更新するために使用される時間の量は、経験カウントが各々のイベントにより更新されるときよりは顕著に少ない。さらに、維持されているカウントを蓄積するのに必要なビットの数は実際のカウントを維持するのに必要なそれよりは顕著に少ないので、カウントを維持するために不揮発性メモリにおいて占められるスペースは顕著に少ない。例えば、１，０００，０００サイクルの実際のカウントが維持されるならば、１から１，０００，０００までの各々の数を数えるために全てのブロックについて約３バイトが必要である。一方、平均して４０００個当たり１つの割合でイベントが数えられるだけならば、最大カウントは約２５０であり、これは１バイトで維持されることができる。従って、この例では、オーバーヘッド記憶スペースの節約は１ブロック当たり２バイトである。
【００２０】
ブロックが経験したイベントの実際の数の表示は、維持されているカウントにこの例では４０００を乗じることによって常に利用可能であるが、コントローラメモリ２７に蓄積されているメモリシステムのオペレーティング・ファームウェアは好ましくは圧縮されているカウントを個々のブロックの使用の表示として直接用いて動作する。不揮発性メモリ内でのまたは他の何らかの電子システムでの他の何らかのイベントの発生のカウントの監視を更新する頻度を減らすことにより、性能が改善したり記憶スペースの要件が減少したりするという利点が同じく得られる。
【００２１】
圧縮されているカウントを維持する好ましい手法は一連の乱数を生成する動作を含み、その場合、新しい数は新しいイベントの各々に応答して発生され、圧縮されているカウントは、発生された乱数がそれらの数のうちの所定の選択された１つに等しいときに更新される。例えば、１〜４０００までの乱数の発生器が使用され、イベントが発生する毎に新しい数が発生され、特定の数（例えば、２７５０）が、その数が発生したときに維持されているカウントを更新するように選択されるならば、圧縮されているカウントは乱数発生器の出力が２７５０に等しくなる毎に更新される。平均で、これは４０００個のイベントにつき１回発生する。発生したイベントの数と圧縮されているカウントとの間には精密な関係はないけれども、特に多数のイベントが発生した後は、密接な相関関係がある。記述されている例の目的のためには、特に数十万のイベントが発生した後に、圧縮されているカウントの精度が充分であることが見出されている。メモリの個々のブロックが交換されなければならないときを決定するために、記述されているアプリケーションの例では、これは経験カウント情報が極めて有益となるときである。
【００２２】
図２は、例として、図１の不揮発性メモリシステムで実施されるこのプロセスを概念的に示している。乱数発生器５１は、インクリメント・パルスがライン５３で加えられる毎に新しい乱数をライン５２に出力する。該インクリメント・パルスは、ライン４１に存するコマンドが消去動作を示しているときにライン４９における電圧パルスの開始点で発生する。信号のこの結合はＡＮＤゲート５４により特定されるように図示されている。ライン４７におけるアドレスにより指示されるメモリ３７の１つ以上のメモリセル・ブロック３８が同時に消去されるのは、この様な消去電圧パルスの間である。１つの特定の実施形態では、１６個のブロックが同時に消去される。一般に、単一の消去電圧パルスが加えられる。
【００２３】
乱数発生器と関連する数の集合に包含される１つの数が、５５により示されているようにシステム内の所定の場所に不揮発性に蓄積される。乱数発生器５１により発生されたライン５２に存する各々の新しい数は、比較器５７により、メモリ５５に蓄積されているのと比較される。その２つの数が一致すると、ライン５９の信号は、現在消去されるブロックの各々について圧縮されているカウントＲを更新させる。その比較が否定であれば（即ち、その２つの数が一致しないのであれば）、殆どの時間にそうであるけれども、その様な更新は行われない。この比較は、速度要件、柔軟性の必要およびコスト考慮事項により、論理ゲートを用いて、或いはソフトウェアで、或いはファームウェアで実施されることができる。
【００２４】
一実施形態では、数個のユーザデータ・ブロックについて、指定ブロック６１などの多数の指定されているブロックのうちの１つにおいてカウントが維持される。その様な指定ブロックについてのデータ構造の概要が図３に示されている。ユーザデータを蓄積する他の多数のブロックの各々について数バイトのオーバヘッド・データがその様なブロックで維持され、その数は種々のブロックの容量による。例えば、メモリセル・ブロック２についてのオーバヘッド（“ＯＨ”）データは、乱数発生器出力５２と蓄積されている数５５との一致が生じたときに更新される圧縮されているカウントのバイト６３を包含する。
【００２５】
もう一つの実施形態では、カウントは、独立の指定ブロック６１で維持されるのではなくて、そのために該カウントが維持されているところのブロックの一部として蓄積される。例えば、図４を参照すると、圧縮されているカウントのバイト６５はメモリセル・ブロック１についてのオーバヘッドデータ６７の一部として蓄積され、該ブロック内のセルの大半はユーザデータを蓄積する。従って、数個のブロックが一緒に消去されるとき、各ブロックの圧縮されているカウントは、乱数５２が消去動作のときに５５のところに蓄積されているそれと一致するときに更新される。そのとき消去されない他のブロックの圧縮されているカウントに関しては何も行われない。
【００２６】
さらに、もう一つの実施形態では、もっぱらカウントを蓄積し、他の種類のオーバヘッドデータを一切蓄積しないブロックにカウントは蓄積される。
【００２７】
乱数発生器５１は、多数の公知のハードウェアおよび／またはソフトウェア手法のうちのいずれかに従って実現されてもよい。しかし、特定の実施形態では、乱数発生器５１の機能はメモリコントローラ１１（図１）のマイクロコントローラ２３によって実行される。マイクロコントローラ２３は、一般的に消去パルスの持続時間中はアイドルであるので、その様なパルスの間は新しい乱数５２を発生してその数を所定の数５５と比較して一致が存在するか否かを判定する機能を実行するために使用されることができる。標準的なシフトおよび排他的ＯＲアルゴリズムが使用され、そのアルゴリズムでは３２ビット値がコントローラＲＡＭ２９に蓄積され、１２ビット乱（実際にはこの手法では擬似乱）数が各消去コマンドに応答してそれからライン５２に生成される。１２ビット乱数は４０９６個の異なる可能な結合を提供する。メモリの寿命が約百万サイクルであるならば、イベントの実際の数を表す圧縮されているカウントを１バイトが蓄積することになる。各消去イベントの発生時に、発生された乱数５２が５５に蓄積されている数と一致する確率Ｐは４０９６に１つである。
【００２８】
より詳細には、乱数発生器は、コントローラＲＡＭ２９（図１）に形成されている３２ビットのシフトレジスタを使用する。全ての新しい乱数は、該シフトレジスタの第２および第３の最下位ビットに対して排他的ＯＲ演算を繰り返し実行し、その結果としてのビットを該シフトレジスタの３２ビットの全てのシフト動作中に該シフトレジスタの最上位ビットに送ることによって、発生される。新しい１６ビット乱数を発生するためには、この操作は１６回繰り返される。そのとき、該シフトレジスタの１６個の最下位ビットのうちの４個の最上位ビットは、該シフトレジスタの１６個の最下位ビットと１６進数０ＦＦＦｈ（２進形式では００００　１１１１　１１１１　１１１１）とのＡＮＤ演算を実行することによってマスクされる。そこで該シフトレジスタの１２個の最下位ビットが０００ｈ（２進形式では００００　００００　００００）になる毎に該論理ＡＮＤ演算の出力は１となり、その様なときには圧縮されているカウントＲがインクリメントされるという意味でヒット（一致）がある。該シフトレジスタの３２ビットの全てが全く同じにゼロになったならば、それ以降に発生される後の乱数も全てゼロになる。そこで、もしそうなったならば、乱数発生器は再シード（ｒｅ−ｓｅｅｄ） される。
【００２９】
上で具体的に記述された乱数発生器５１以外の何らかの手段で確率Ｐを作ることができることが注目されよう。例として、システム雑音、シングル・エレクトロン装置におけるトンネル事象、一定時間内の放射性崩壊、および何らかのハードウェア、ファームウェアまたはソフトウェア装置でランダムに発生する他のイベントを使用することが含まれる。乱数発生器５１を初期化するシードを発達させるのに使用される他の適当な乱数発生手法が以下に追加的に記述される。
【００３０】
メモリシステムが無給電状態からパワーアップされた結果として初期化されると、乱数発生器５１はプロセスを開始するために初期値にセットされなければならない。これは、ライン７５の初期化信号によってトリガされて、初期値シード７３を乱数発生器５１に供給するシードソース７１により実行される。
【００３１】
使用することのできる代わりのシードソースは多数ある。１つは、初期化前のメモリシステム動作中の乱数発生器５１の最後の値５２を不揮発性に蓄積することである。乱数発生器５１はその後、その蓄積された数から開始させられる。けれどもシードとして乱数または相関性のない数のソースを用いてもうまくゆく。タイムレコーダを含むシステムでは、作られる時間は数の疑似ランダムな系列であり、初期化時に存在する数は乱数発生器５１のためのシードとして使用される。代わりに、乱数発生器５１と同じまたは異なる設計の第２の乱数発生器を使用してシードを選択してもよい。上で具体的に記述された乱数発生器については、再シード（ｒｅ−ｓｅｅｄｉｎｇ）はシフトレジスタの３２ビットを全て初期化する動作を含む。
【００３２】
シードを発生するためのもう一つの代わりの手法は、通常の方法で読むことのできるメモリのブロックのユーザデータを読出すことを伴う。しかし、高度のランダム性を確実にするために、そのデータが初期化と初期化との間で変化しないならば、その読出しは、特定の一実施形態では、データを読出すために通常使用される量を遙かに上回る量だけ離れている限界しきい値レベルで実行される。これは、読み取り値が限界に近い結果として、そのデータを読出すときに多数のエラーが発生して、好ましくは同じデータのうちの少なくとも一部が異なるときに別様に読まれることを確実にすることを意図している。シードのランダム性をさらに高めるために、この意図的に間違って読出されたデータから第２のブロックのアドレスを作ることができ、その第２ブロックのデータは該データを同じく間違って読出しそうな方法で読出される。ランダム性をさらに確実にしたいならば、これをもう幾つかのサイクルにわたって継続することができる。
【００３３】
上述したように、一致が発生する確率Ｐがメモリ・システムの寿命の全体にわたって同じままであるということが仮定されている。しかし、変化する何らかの関連条件または発生する関連イベントに応答するなど、何らかの方法で確率Ｐを変更することが望まれるアプリケーションもあり得る。発生器５１からの乱数５２の各々と比較される記憶装置５５内の所定の数の個数を変更することによって、その確率を希望に応じて変更することができる。記憶装置５５内の１個、２個、或いはもっと多くの所定の数のいずれかと発生した乱数との一致が発生する毎に、圧縮されているカウントが更新される。発生器５１の乱数出力と比較されるために利用可能にされる記憶装置５５内の所定の数の個数が変更されるに連れて、任意の与えられた乱数について一致が発生する確率Ｐが変更される。
【００３４】
確率を変更するために比較される蓄積されている所定の数の個数を変更する代わりに、ディジタルシステムでは、記憶装置５５内の単一の数と、個々の乱数との比較されるビットの数を変更することができる。例えば、乱数発生器５１の乱数出力５２が１２ビットで、５５に蓄積されている所定の数も１２ビットであれば、一致の最低の確率（４０９６に１つ）は１２ビット全ての明確な比較が必要であるときに生じる。しかし、もう一つの例として、各々の数の同じ箇所に存する２つのビットだけが比較されるならば、各々の比較の結果として一致が生じる確率は遙かに大きくなる（４つに１つ）。このことは、実際上、乱数発生器により発生され得るいろいろな乱数の総数を変化させ、そしてその様にして、どれか１つの乱数が所定の数と一致する確率を変化させる。比較される２つの数のビットの数は、従って、可能な乱数の総数は、ユーザの選択に応じてファームウェアまたはソフトウェアの制御下で容易に変更され、或いはメモリシステムの他の何らかの条件またはイベントにおいて変化が検出されたことに応答して自動的に変更される。
【００３５】
フラッシュメモリシステムにおいて一致が発生する確率を変更する１つの具体的なアプリケーションについて、図５のフローチャートに関連して説明する。この操作方法は、実際のカウントＡの比較的に低い数に普通は対応するＲの低い数で、比較的に高い数の場合よりは頻繁に、圧縮されているカウントＲをインクリメントし、その結果として比較的に低い数において圧縮されているカウントＲは実際のカウントＡをより精密に表す。この様にして低い数での圧縮されているカウントＲの解像度が改善される。最初はＲの低い値においてＰの高い値を使用し、そしてＲの高い値でＰの低い値（これは１／４０９６より低くなることができ、実際には１／３２７６８の低さになることができる）へと進むことによって、圧縮されているカウントＲを蓄積するのに必要なビット数を増やすことなく、これを達成することができる。このアプローチを使用することにより、０から２５５までの整数Ｒが高いカウント範囲では百万の高さのカウントを表し、低いカウント範囲では１桁の低さの数を表すことができる。ここに記載されている特定のフラッシュＥＥＰＲＯＭシステムの例では、同じビット数の予め指定された数と比較される２進形式の乱数の総数は、消去される各ブロックの圧縮されているカウントＲの値の関数であるように指定されることができる。
【００３６】
この特徴を例証する図５〜８に関して記述される具体的な例では、発生器５１（図２）により発生される乱数５２と蓄積されている所定の数５５との両方が各々長さ１６ビットである。圧縮されているカウントＲの値により、各々の異なる数のビットが比較器５７によって比較される。圧縮されているカウントＲの値が比較的に低いときには、比較的に高い（その場合、一致が発生する確率が比較的に低い）ときよりも少ない数のビットが比較される（従って、一致が発生する確率が比較的に高い）。圧縮されているカウントＲは１バイトで蓄積され、０〜２５５の範囲を有する。
【００３７】
図５を参照すると、プロセスの概要における第１ステップ７１は、消去動作が実行されるときを決定する。これが起こったとき、ステップ７３において、乱数発生器５１は乱数５２（図７も参照）を発生させられる。次のステップ７５で、消去されるべく現在のアドレス指定されているブロックについての圧縮されているカウントＲがその不揮発性記録６１から読出される。このことは、図２に示されてはいないけれども、好ましくは上述されているように図２に示されている処理も実行するマイクロコントローラ２３（図１）により実行されると理解されよう。図６に示されているようなテーブルが、次のステップ７７で使用されるべく該コントローラの不揮発性メモリに蓄積されている。このテーブルにより表される論理は、ハードウェア、ファームウェア、またはソフトウェアで実現されることができる。
【００３８】
比較されるべき数５２および５５のビットの個数（図７）は、図６のテーブルの左側コラムで消去される各々のブロックについて読出された圧縮されているカウントＲを探し、その中央コラムで比較されるべきビットの個数を読出すことによって決定される。図６の右側コラムは、この説明のための情報として、比較された数５２および５５のビット間で一致が生じる確率Ｐを与えている。Ｒの最低値０〜１５についてはどのビットも比較されないことに注意するべきであり、その理由は、それらがＡの実際のカウント値０〜１５のそれぞれに等しいことである。従って、そのＲが１５以下であるブロックについて消去イベントが発生する毎に、そのＲは１だけインクリメントされる。しかし、Ｒが１６〜３１の中にある次の範囲の中では、数５２および５５の各々の同じビット位置にあるビット７９および８１などの各数の１ビットが比較される。従って、各々の場合に一致が生じる０．５の確率がある。Ｒの次の範囲３２〜４７では、数５２のビット７９および８３と数５５のビット８１および８５などの２ビットが比較され、その結果として、いずれの場合にも一致が発生する確率は０．２５となる。圧縮されているカウントＲがその最高の範囲２４０〜２５５まで増えてゆくとき、１６ビットのうちの１５個が比較され、その結果として、任意の１つの比較から１６ビットのうちの１５個の一致が生じる非常に低い確率（３２７６８に１つ）がもたらされる。
【００３９】
数５２および５５のビットの数が図６のテーブルで調べられ、次に比較がステップ８７（図５）で行われる。次のステップ８９は、個別ブロック・ベースで一致があるかないかを決定する。もしそうならば、ステップ７５で読出されたアドレス指定されているブロックの中でその一致を満たしたそれらの個々のブロックのみの圧縮されているカウントＲがステップ９１で１だけインクリメントされる。消去されるブロックのグループのうちのどのブロックも一致を生じさせなければ、消去されるそのブロックに関しては該プロセスは終了し、ステップ７１は他の消去コマンドの受領を待つ。
【００４０】
記述されている例は種々の数のインクリメントを含んでいるけれども、代わりに１つ以上を高い値から低い値へとデクリメントしてもよい。必要なときに意味のある値を読出せるようにＲが更新される限りは、数５２および５５の間の肯定的比較という事実を記録するために圧縮されているカウントＲをどの様に更新するか、例えば、その度に１以上インクリメントすることにより、その度に１以上デクリメントすることにより、或いは他の何らかの手法により更新するかは、普通は重要ではない。
【００４１】
図８に示されているそのようなテーブルも、Ａの見積もりを知らなければならない場合に圧縮されているカウントＲを実際のカウントＡに関連させるために故障解析エンジニアにより使用されるソフトウェア・パッケージの一部として随意に包含される。（殆どの場合に、カウントＡとそれとの関係は既知であるので、メモリシステム・ファームウェアはカウントＲ自体から動作することができる。）左側コラムの圧縮されているカウントＲの値の第１のグループ９３については、中央のコラムに示されている実際のカウントＡと同じである。右側コラムに呈示されているＲとＡとの間のエラーの統計的標準偏差は、このグループについてはゼロである。図６のテーブルの第２行に対応する図８のテーブルの次のグループ９５では、Ｒの値はＡの値と等しくない。むしろ、このグループの各ＲカウントはＡの各２回の発生につき約１回インクリメントされるので、Ａの値は、おおよそ、第１のグループ９３の一番上の値である１５に左側コラムのカウントＲの１５を超過している数の２倍を加えたものである。同様に、図６のテーブルの第３行に対応する次のグループ９７内の任意の与えられたＲの値についてのＡの値は、最後のグループ９５内のＲの一番上の値３１についてのＡの値に前のグループ９５の一番上のカウント３１を超過しているＲのカウントのおおよそ４倍を加えたものである。この関係はカウントＲの可能な値の全てを通じて存続する。
【００４２】
前のグループ９３，９５，９７等により表されるＲの異なる範囲で確率値が異なっていることの効果の組み合わせの寄与がますます増加するので、特にＲの値が大きくなるとき、カウントＲとＡとの関係は普通は上記で概略的に決定されている関係ではない。その結果として、図８のテーブルの中央のコラムは余分の未知項ｘを含んでいる。ｘ項を含む数学的モデルによりＲとＡとの関係を近似することはできるけれども、普通は図８のテーブルの中央コラムに存する各々の与えられたＲについてＡの期待値（即ち、平均値）を経験的に作るのが好ましい。このプロセスが実行されるメモリシステムは、ゼロからそのタイプのメモリが経験すると期待される最大数にまでわたる、実際のまたはシミュレートされた数個の消去イベントに少なくとも１グループのブロックをさらすことによって最も良く操作される。消去サイクルのシステムにより維持される圧縮されているカウントＲと実際のカウントＡとの両方が該試験の間監視される。後者は図８の中央コラムの値を与える。実際のメモリシステムを使用して圧縮されているカウントＲに対応する実際のカウントＡを作ることにより、システムおよびプロセスの乱数発生器５１および他の部分の種々の欠点が考慮される。その様な要素を全て正確に数学的にモデリングすることは困難である。
【００４３】
図８の右側コラムのエラー数も、それを含むことが望まれるときには、その様な経験的手法により最も良く決定される。カウントＲおよびＡは数個のメモリ・ブロックの多数のサイクルの間維持され、異なるブロック間の差は、その様な差の母集団の標準偏差によるなどの何らかの方法で統計的に表される。このコラムは、所望の精度と、該カウントを蓄積しておくのに必要な所要記憶スペースとの間の種々のかね合いと、該メモリシステムのユーザによる診断とを査定する目的のために有益であり得るけれども、システムの動作中、普通はコントローラ１１によって使用されない。
【００４４】
ここに記載されている例は、フラッシュＥＥＰＲＯＭシステムのブロックが経験する消去／書き直しサイクルの数のカウントを維持するためのものであるけれども、特にメモリセルの各々のブロックまたはブロックのグループについて一つのイベントの独立のカウントが維持されるときには、これらの手法はその様なシステムで他のイベントを数えるのに同様の利点を持って応用されることもできる。一例は、個々のブロックが限界走査データ復元手法にさらされる回数を、それらのブロックに伴う問題の指標として数えることである。もう一つの例は、他の読むことのできないセクタのユーザデータを復元するために誤り訂正符号（ＥＣＣ）が実際に行われた回数を数えることである。もう一つは、時間の経過と共に発生した障害を補償するために、ブロック中のデータをスクラビングによって適切なマージンレベルまでリフレッシュさせる必要が発生した回数を追跡することである。これらのおよびその他の状況において、ブロック、サブブロック（セクタ）、またはブロックのグループで生じるその様なイベントの数が大きいと、それらに何らかの問題があることを意味する。この情報は、該ブロック、サブブロック、または問題のあるブロックのグループを取り替え、或いは他の何らかの修正処置をとるためにメモリコントローラによって使用されることができる。
【００４５】
さらに、上述した計数手法は、フラッシュＥＥＰＲＯＭまたは他の不揮発性メモリシステムに対する使用に限定されない。これらの手法は、動作の過程で或いはシステムの使用により発生する１つ以上のイベントを数え続けることが必要であるかまたは望ましい任意の電子システムに応用される。
【００４６】
本発明の種々の局面は特定の代表的な実施形態に関して説明してきたけれども、本発明が添付されている請求項の最大の範囲内で保護を受ける権利が与えられることが理解されよう。
【００４７】
以下に記載するのは、付属の説明書である。
【００４８】
付属の説明書
新しい圧縮確率的整数イベントカウンタ方式
このアイデアは一定のイベントが発生した回数の記録を取っておかなければならないどの様な状況にも応用可能である。イベントが発生した回数を追跡する普通の方法は、イベントが発生する毎にインクリメントされるカウンタを工夫することである。イベントが発生し得る最大の回数がＭ回であるならば、この情報を蓄積するために該カウンタはＮ＝ｌｏｇ２ Ｍビットを必要とする。そこで、例を挙げると、百万までのイベントを追跡したいならば、このカウントの蓄積のために２０ビット≒３バイトを専用せざるを得ない。２０ビット＝２．５バイト＝２０ビットであり、２２０＝１０４８５７６であることに注意されたい。今、その様なイベントカウンタが多数必要であるならば、全てのカウンタを蓄積するのに必要なメモリの全体は相当になり得る。セクタ当たり１つのカウンタを基礎としてフラッシュメモリでホットカウントを実施することになるときは、正にそうである。また、セクタがプログラミングまたは消去される毎に各セクタのホットカウントを更新することは、メモリの動作速度と、各セクタのホットカウントの頻繁な更新により生じる損耗との両方に関して重荷になり得る。ホットカウントを包含している各々の５１２バイトのセクタは、そのセクタがサイクル（プログラミングおよび消去）された回数を蓄積するために３バイトを余分に必要としている。
【００４９】
一定のインクリメント確率を用いる簡単なアプローチ
この新しいアイデアは、セクタ当たりホットカウント３バイトをセクタ当たりホットカウント１バイトに圧縮することを可能にする。正確さを諦めることを厭わないのであれば、新しいホットカウント方式は、その最も簡単な形では、次の通りである。１２ビット擬似乱数発生器を用いて、確率ｐ（この場合は、ｐ＝１／４０９６＝０．０００２４４１）を作ることができる。この確率を発生する１つの方法は、セクタがプログラミングまたは消去される毎にランダム１２ビット２進整数を作ることによる。この１２ビットの整数が特定の１２ビットの整数（例えば、１０１１１１０１０００１）と一致した場合に限って、書かれかけているセクタに対応するカウンタがインクリメントされる。２１２＝４０９６であることに注意されたい。セクタがプログラミングされる毎に、そのセクタのカウンタが整数値１だけインクリメントされる確率Ｐがある。平均で、どの４０９６個のプログラミング・イベントも皆、カウンタを１回インクリメントする。
【００５０】
与えられたセクタがプログラミングされた実際の回数である実際のカウントＡと、このカウントの、Ａよりおよそ４０９６倍小さい表示Ｒとを区別しなければならない。記録して追跡するのはＲ＝ｒである。与えられた任意の時におけるＲの値はＡの値＝ａを正確には決定しないが、Ａの値の概算の見積もりを与える。Ｒが小さいときにはＲはＡの非常にまずい指標であるが、Ｒが大きくなるに連れてＲは相対的な意味でＡの正確な指標となってゆく。ここで“Ｒ”および“Ａ”はランダム変数を表し、“ｒ”および“ａ”はこれらのランダム変数がとることのできる一定の整数値を表す。
【００５１】
ＲがインクリメントされるイベントとしてＥを定義することができる。すると、確率（Ｅ）＝Ｐｒ（Ｅ）＝ｐ、そして確率（ｎｏｔＥ）＝Ｐｒ（／Ｅ）＝１−ｐであり、“ｒ”＝“ａ”回のトライアルでＥが発生する回数＝下記の二項分布により与えられる確率密度関数ｆ（ｒ｜ａ）を有するランダム変数である。
Ｐｒ（Ｒ＝ｒ｜Ａ＝ａ）＝ｆ（ｒ｜ａ）＝（ａ！／（ｒ！（ａ−ｒ）！））ｐｒ （１−ｐ）（ａ−ｒ）
｛Ｒの平均値｝＝Ｅｘｐ（Ｒ）＝ａ・ｐ、そして
｛Ｒの標準偏差｝＝ＳＤ（Ｒ）＝√［ａ・ｐ・（１−ｐ）］
上記式は二項分布においてよく知られている。このホットカウント方式の目的のために、Ｒの何らかの既知の値が与えられたときのＡの期待値と、Ｒの何らかの既知の値が与えられたときのＡの標準偏差とを知らなければならない。その理由は、何時でもＲの値だけが蓄積されていて検索されることができ、Ａの正確な値についての知識は全く保持されていないことである。
【００５２】
Ｅｘｐ（Ａ｜Ｒ＝ｒ）＝ｒ／ｐと書いてもいいように思われる。確かにこれは正しいかも知れないが、Ｐｒ（Ｒ＝ｒ｜Ａ＝ａ）＝ｆ（ａ｜ｒ）についての式を引き出すためにベイズの定理を用いる必要がある。この時、この確率密度関数を用いてＥｘｐ（Ａ｜Ｒ＝ｒ）とＳＤ（Ａ｜Ｒ）とを計算することができる。ベイズの定理は次のように述べている。
2004509404.tif 000002
上の方程式の右辺の分母は、下記の恒等式を用いて書き直すことができる。
2004509404.tif 000003
ここで、実際のカウントＡは表示Ｒより決して小さくはないことが分かっており（従って、合計はｒから始まる）、そして実際のカウントＡが何らかの大きな数Ｍ（例えば、Ｍ＝１００００００またはＭ＝１０００００００）より決して大きくはならないことを仮定する。従って、｛Ａ＝ｒ，Ａ＝ｒ＋１，Ａ＝ｒ＋２，…，Ａ＝Ｍ｝はパーティションを形成する。また、条件付き確率の定義により、
2004509404.tif 000004
である。このような場合にはランダム変数Ａは一様に分布すると仮定しても差し支えないと述べている“ベイズの見積もりについての一様分布の許容性（Ｔｈｅ Ａｄｍｉｓｓｉｂｉｌｉｔｙ ｏｆ Ｕｎｉｆｏｒｍ Ｄｉｓｔｒｉｂｕｔｉｏｎ ｆｏｒ Ｂａｙｅｓｉａｎ Ｅｓｔｉｍａｔｅｓ）”と呼ばれる統計の理論がある。換言すると、もし実際のカウントがＭより決して大きくならず、表示Ｒの値が分からなければ、何らかのランダムな時点でＡの値は０からＭまでのどの様な整数である可能性もあり、各整数値は他のどれとも同じ可能性を有する。従って、Ｐｒ（Ａ＝ｓ）＝定数＝（１／（Ｍ＋１））であり、この定数を下記の合計、
2004509404.tif 000005
から引き出すことができ、そして、Ａは一様に分布しているのでｓの任意の値およびａの任意の値についてＰｒ（Ａ＝ｓ）＝Ｐｒ（Ａ＝ａ）であることが分かり、
2004509404.tif 000006
である。上記式から明らかなように、ｐ＝一定であるこの簡単な例でも、計算にはコンピュータ・プログラムが必要である。しかし、ウォルドの等式（ジョン・ワイリー＆サンズからのシェルドン　Ｍ．ロス（Ｓｈｅｌｄｏｎ Ｍ． Ｒｏｓｓ， Ｊｏｈｎ Ｗｉｌｅｙ ＆ Ｓｏｎｓ）による書籍「確率的過程」（ＳＴＯＣＨＡＳＴＩＣ　ＰＲＯＣＥＳＳＥＳ）（１９８３年）第５９ページを参照）を用いて次式、Ｅｘｐ（Ａ｜Ｒ＝ｒ）＝Ｅｘｐ（Ｒ｜Ａ＝ａ）／ｐ＝ｒ／ｐに容易に到達することができる。従って、ｐ＝１／４０９６の場合には、Ｅｘｐ（Ａ｜Ｒ＝ｒ）＝４０９５・ｒである。
【００５３】
Ｒの何らかの値＝ｒが与えられたときにＡの期待値および標準偏差の両方を計算するもう一つの方法は、モンテカルロ・シミュレーションを実行することによる。これらのシミュレーションは、次のセクションで論じられる“ｒ依存ｐ値アルゴリズム”などのもっと複雑なアルゴリズムが採用されるときに特に有益である。どの様な乱数発生方式でも実際は完全に一様ではないかも知れない分布で擬似乱数を発生するので、モンテカルロ・シミュレーションを実行するための最良の場は、生産が始まるであろう同じプロセッサおよびファームウェアからなる。この様にして、乱数発生方式の欠陥も該シミュレーションに取り込まれることになる。
【００５４】
この簡単な場合についてのモンテカルロ・シミュレーションは２段階から成る。第１段階は２つのループから成り、一方のループは他方のループに組み重ねられている。内側のループは各パス毎に実際のカウント“ａ”を１だけインクリメントする。また、整数“ａ”がインクリメントされる毎に、１２ビットのランダム２進整数ｂが作られ、この整数が１０１１１１０１０００１に等しくなったときに限って、表示“ｒ”がインクリメントされる。上で論じられているように、その様な一致の確率は４０９６に１つである。外側ループの中で、且つ内側ループの外側では、“ａ”および“ｒ”は共にゼロにセットされることに注意されたい。このことは、全てのトライアルがａ＝０で且つｒ＝０からスタートすることを可能にする。内側ループはｒ＜２５６である限り反復される。平均して内側ループは百万回実行される。内側ループは、１つのセクタがおよそ百万回サイクルされるとき（ｒが２５５１０＝１１１１１１１１２ で飽和するまで）に該セクタのホットカウントに起こることをシミュレートする。これは単一のトライアルと称されてよい。一方、外側ループは多数のトライアルをシミュレートする。外側ループは、多数のトライアルの統計的に重要なサンプルを作るために１００００回実行されることができる。第１段階中に蓄積されなければならないデータを最小限度にするためには、“ｒ”のインクリメントに対応する“ａ”の値を記録するだけでよい。“ｒ”の固定されている各値に１つのファイルを専用とすることができる。そこで、例えば、ｒ１２３．ｏｕｔという名称のファイルは、１００００回のトライアルにわたって“ｒ”がちょうど１２３になったときの“ａ”の値である１００００個の整数を含む。２５５個の出力ファイルを作る。段階２では、“ｒ”の２５５個のゼロでない値の各々について平均値と標準偏差とを得るためにその２５５個の出力ファイルの各々が処理される。
【００５５】
インクリメントの可変確率値を使用するもっと複雑なアプローチ
（Ｒ＝ｒが与えられたときのＡの期待値）に対する（Ｒ＝ｒが与えられたときのＡの標準偏差）の比を“ｒ”の種々の値について大体一定に保つために、もっと複雑なアルゴリズムを採用することができる。これは、“ｒ”の値についての知識に基づいて“ａ”の値の相対的不確定性を制限するので、有益である。この新しい方式では、“ｒ”がインクリメントされる確率“ｐ”は、“ｒ”の現在の値に関連する。
０≦ｒ＜１６　ならば、　　　　ｐ＝１／２０ ＝１．０
１６≦ｒ＜３２　ならば、　　　　ｐ＝１／２１ ＝１／２＝０．５
３２≦ｒ＜４８　ならば、　　　　ｐ＝１／２２ ＝１／４＝０．２５
４８≦ｒ＜６４　ならば、　　　　ｐ＝１／２３ ＝１／８＝０．１２５
…
…
…
２４０≦ｒ＜２５６　ならば、　　　ｐ＝１／２１５＝１／３２７６８
＝０．００００３０５
“ｒ”は２進形式で００００００００から１１１１１１１１までの単純なカウントとして表されることができ、十進法の同等物は０から２５５までである。ヘックスでは、“ｒ”の値は００ｈからＦＦｈまでにわたることができる。“ｒ”の２５６の異なる値の各々についてＡの平均値とＡの標準偏差とを与えるテーブルがホットカウント“ｒ”のどのユーザにも提供される。代わりに、後述されるように、“ｒ”は４ビットの仮数および４ビットの指数の形で表されることができる。しかし、この後者の表示は、いくら良く見ても扱いにくい。
【００５６】
この方式のためのモンテカルロ・シミュレーションは上述された簡単な方式に非常に良く似ているが、上述されたように、今は“ｐ”の値は“ｒ”の現在の値によるという点が違っている。
【００５７】
特定のメモリのための新しいホットカウントおよびカウンタ方式
各ページ（６４セクタ）は、そのページ自体の外で、他のページ内のテーブルに蓄積される単一の１バイトの長さのホットカウントを有する。該ホットカウントは、該カウントがインクリメントされる必要があると決定される毎にコントローラＲＡＭで更新される。ページが消去される毎に、対応するホットカウントをインクリメントするかしないかが決定される。この方式では、ホットカウントをインクリメントする機会は該カウントの現在の値におよそ逆比例する。
【００５８】
ホットカウントを包含するテーブルは、約５０００ページのホットカウントを包含するために約５０００バイトを持たなければならないであろう。２３０＝１Ｇｂｉｔであると仮定すると、４０９６ページは１Ｇｂｉｔのユーザ容量を有する必要がある。わずか１０個のセクタから成るテーブルがチップ全体のホットカウントを包含することができよう。このテーブルのその後の各バイトは次の物理的ページのホットカウントに対応する。数ページが書かれるとき、パーティション境界に遭遇するまで該ＲＡＭでホットカウントが更新されることができ、そのポイントで該パーティションに対応するホットカウントテーブルを包含するセクタが１発で更新される。その各々が同じパーティションに属する単一のページのホットカウントである６４個のバイトから成るものとしてホットカウントテーブルを定義することができる。１つのホットカウントテーブルが２つのセクタにまたがって分割されることはない（即ち、各“ホットカウントテーブル・セクタ”は８個の“ホットカウントテーブル”全体を包含する）。
【００５９】
読出しまたは書込みの動作がパーティション境界を横切る毎に、１つのホットカウントテーブル・セクタが更新され、そして損耗平等化、スクラビング、および退去活動が実行され得るように全てのホットカウントテーブル・セクタが読出されて処理される。ホットカウントバイトの論理的順序は対応するページの物理的順序を表す。また、ホットカウントテーブルの論理的順序は対応するパーティションの物理的順序を表す。
【００６０】
ホットカウントセクタの更新は普通は消去さえ必要とはしないが、その理由は、他のどのセクタの場合とも同じく、セクタの更新は該セクタ・データを前もって消去されている新しいセクタに書込み、そして該データの最新のバージョンが存する場所を反映するようにマップを更新することだけを必要とするに過ぎないことである。１つのパーティションは６４ページから成るので、パーティションに対応するホットカウントはわずか６４バイトである。この方式では、各ページの１バイト・ホットカウントは百万サイクルの間にわずか２５６回インクリメントされるだけである。そこで、たとえ各ページのホットカウントが更新され次第直ぐにインクリメントされ、５１２ページのホットカウントを包含するセクタがあちこちに移されないとしても、ホットカウントテーブル・セクタは５１２＊２５６＝１３１０７２回更新されることになる。このことは、これら５１２ページのうちのどのページも百万回サイクルされているということを仮定している。もしユーザセクタが百万サイクルに耐えられるならば、ホットカウントセクタも１３１０００サイクルに耐えることができる。
【００６１】
ホットカウント方式
各ページに対応する８ビットのカウントは４ビットの仮数Ｍおよび４ビットの指数Ｅから成る。そこで、ホットカウントが０１０１００１０であれば、Ｍ＝０１０１２ ＝５１０であり、Ｅ＝００１０２ ＝２１０である。この例では指数は２１０であるので、有効仮数Ｎを作るために補正項Ａ＝１１００２ を仮数に加えなければならず、ここで、Ｎ＝Ｎ（Ｅ）、およびＡ＝Ａ（Ｅ）はＥの関数である。実際のホットカウントは基底１０で、Ｎ（Ｅ）１０＊２１０＊＊Ｅ１０＝［Ｍ＋Ａ（Ｅ）］＊（２＊＊Ｅ）である。或いは、ホットカウントは基底２で、Ｎ（Ｅ）＊（１０）＊＊Ｅである。０から１５までのカウントでは、ページの全ての消去がホットカウントを１００％の確かさでインクリメントする。１６から４６までのカウントでは、全ての消去がホットカウントをインクリメントする５０％の見込みを有する。
【００６２】
一般にインクリメントする確率ｐは、ｐ＝１／（２＊＊Ｅ）により与えられるＥの関数である。
下記はＡ（Ｅ）の値である。
Ａ（００００）＝００００，
Ａ（０００１）＝１０００，
Ａ（００１０）＝１１００，
Ａ（００１１）＝１１１０，
Ａ（０１００）＝１１１１，
Ａ（０１０１）＝１１１１，
Ａ（０１１０）＝１１１１，
Ａ（０１１１）＝１１１１，
…
Ａ（１１１１）＝１１１１
可能な最大の数Ｌは、Ｍ＝１１１１、およびＥ＝１１１１により与えられる。
Ｌ＝（１１１１＋１１１１）＊（（１０）＊＊（１１１１）＝１０１５７９２１０最小のｐは１／３２７６８である。
【００６３】
カウンタの活動のカウントにもこの同じ方法を応用することができる。この方式の詳細については添付されているエクセル・ワークシートを参照されたい。サイクルされるセルは、多数回サイクルされているときには寿命の始めの頃と比べてゆっくりと老化するので、この比例ホットカウントは損耗平等化および退去目的の両方のために充分な分解能を有するであろう。
【図面の簡単な説明】
【図１】
本発明のイベント監視を取り入れたメモリ・システムの略ブロック図である。
【図２】
その中で発生するイベントの圧縮されているカウントを維持する図１のメモリシステムの動作を概念的に説明するブロック図である。
【図３】
図２に示されている手法に従うイベントの圧縮されているカウントの図１のメモリシステム内での不揮発性蓄積の１つの形を説明する。
【図４】
図２に示されている手法に従うイベントの圧縮されているカウントの図１のメモリシステム内での不揮発性蓄積のもう１つの形を説明する。
【図５】
図２に従う図１のメモリ・システムの動作の特定の例のフローチャートである。
【図６】
図５の動作例と共に使用されるテーブルである。
【図７】
図５の例で使用される２つの２進数の比較を示す。
【図８】
図５の例で使用されるもう１つのテーブルである。
【図１】
2004509404.tif 000007
【図２】
2004509404.tif 000008
【図３】
2004509404.tif 000009
【図４】
2004509404.tif 000010
【図５】
2004509404.tif 000011
【図６】
2004509404.tif 000012
【図７】
2004509404.tif 000013
【図８】
2004509404.tif 000014
【国際公開パンフレット】
2004509404.tif 000015
2004509404.tif 000016
2004509404.tif 000017
2004509404.tif 000018
2004509404.tif 000019
2004509404.tif 000020
2004509404.tif 000021
2004509404.tif 000022
2004509404.tif 000023
2004509404.tif 000024
2004509404.tif 000025
2004509404.tif 000026
2004509404.tif 000027
2004509404.tif 000028
2004509404.tif 000029
2004509404.tif 000030
2004509404.tif 000031
2004509404.tif 000032
2004509404.tif 000033
2004509404.tif 000034
2004509404.tif 000035
2004509404.tif 000036
2004509404.tif 000037
2004509404.tif 000038
2004509404.tif 000039
2004509404.tif 000040
2004509404.tif 000041
2004509404.tif 000042
2004509404.tif 000043
2004509404.tif 000044
2004509404.tif 000045
2004509404.tif 000046
2004509404.tif 000047
【国際公開パンフレット（コレクトバージョン）】
2004509404.tif 000048
【国際調査報告】
2004509404.tif 000049
2004509404.tif 000050