JP2004509404A - 圧縮イベント計数手法およびフラッシュメモリシステムへの応用 - Google Patents
圧縮イベント計数手法およびフラッシュメモリシステムへの応用 Download PDFInfo
- Publication number
- JP2004509404A JP2004509404A JP2002527511A JP2002527511A JP2004509404A JP 2004509404 A JP2004509404 A JP 2004509404A JP 2002527511 A JP2002527511 A JP 2002527511A JP 2002527511 A JP2002527511 A JP 2002527511A JP 2004509404 A JP2004509404 A JP 2004509404A
- Authority
- JP
- Japan
- Prior art keywords
- count
- random number
- memory
- blocks
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Debugging And Monitoring (AREA)
Abstract
不揮発性フラッシュメモリシステムは、圧縮されているカウントを多数の当該イベントの発生について1回だけ更新することにより、個々のブロックが消去されて書き直された回数などのイベントの発生を数える。乱数または擬似乱数発生器は、該イベントのそれぞれの発生に応答して新しい数を出力し、該乱数発生器の出力が所定数と一致するときに圧縮されているカウントを更新する。単一のイベントに応答して該所定数が該乱数発生器により作られる確率は、圧縮されているカウントの値などの他の何らかの要素の関数として変更されてもよく、そのときにはイベント数のもっと有益な追跡を提供する。これらの手法は、フラッシュメモリシステム或いは他の種類の電子システムにおいて繰り返される他の種類のイベントを監視するためにも応用される。
Description
【0001】
【発明の属する技術分野】
本発明は、一般に、イベント計数技術に関し、特に、半導体メモリシステムへの、特に不揮発性フラッシュ型の電気的に消去可能でプログラマ可能なリード・オンリー・メモリ(EEPROM)への該技術の応用に関する。
【0002】
【従来の技術】
フラッシュEEPROMシステムは、特に、ホストシステムと取り外し可能に結合される密閉カードに封入されているとき、多様なアプリケーションで使用される。現在の商用メモリカード・フォーマットは、パーソナルコンピュータ・メモリカード国際協会(PCMCIA)、コンパクトフラッシュ(CompactFlash(CF))、マルチメディアカード(MultiMediaCard(MMC))およびセキュアディジタル(SD)のそれを含んでいる。これらのカードの一サプライヤーは、本願の譲受人であるサンディスク コーポレーションである。その様なカードと共に用いられるホストシステムは、パーソナルコンピュータ、ノートブック型コンピュータ、手持ち式計算装置、カメラ、オーディオ再生装置等を含む。フラッシュEEPROMシステムは、ホストシステムにはめ込まれるバルク大容量記憶装置としても利用される。
【0003】
その様な不揮発性メモリシステムは、メモリセルのアレイ、周辺操作回路およびシステムコントローラを含む。該コントローラは、ホストシステムとの通信と、ユーザデータを蓄積したり検索したりする該メモリセルアレイの操作とを管理する。メモリセルはセルのブロックに分けられ、セルのブロックは同時に消去可能なセルの最小グルーピングである。セルの1以上のブロックにデータを書込む前に、セルのこれらのブロックは消去される。ユーザデータは、一般に、ホストとメモリアレイとの間でセクタとして転送される。1セクタのユーザデータは取り扱いやすい任意の量であって良く、好ましくは、メモリ・ブロックの容量より少ないかまたは等しく、しばしば標準ディスクドライバ・セクタサイズに等しく、それは512バイトである。
【0004】
1つの商業的アーキテクチャでは、メモリシステム・ブロックは1セクタのユーザデータとオーバヘッドデータとを蓄積するサイズとされ、該オーバヘッドデータは、該ブロックに蓄積されているユーザデータについての誤り訂正符号(ECC)、該ブロックが消去され再プログラミングされた回数のカウント、該メモリセル・ブロックの欠陥およびその他の物理的情報、および該ブロックにかけられるべきプログラミングおよび/または消去電圧などの情報を含む。この種の不揮発性メモリシステムの種々の実施形態が次の米国特許および係属中の特許出願に記載されており、その各々の全体が上記参照によりここに取り入れられている。それらは、特許第5,172,338号、第5,602,987号、第5,315,541号、第5,200,959号、第5,270,979号、第5,428,621号、第5,663,901号、第5,532,962号、第5,430,859号、第5,712,180号、および1997年8月7日に出願された特許出願第08/910,947号および1999年6月30日に出願された特許出願第09/343,328号である。もう一つの商業的アーキテクチャでは、ユーザデータを蓄積している多数のブロックについてのオーバヘッドデータは他のブロック中のテーブルに一緒に蓄積される。このオーバヘッドデータは、個々のユーザデータ・ブロックが消去され再プログラミングされた回数のカウントを含む。その様なシステムの例が、2000年2月17日に出願された米国特許出願第09/505,555号に記載されている。もう一つのタイプの不揮発性メモリシステムは、ユーザデータの多数のセクタを蓄積するもっと大きなメモリセル・ブロック・サイズを利用する。
【0005】
個々のメモリ・ブロックが経験した消去/再プログラミング・サイクルの数(それらの“経験カウント”)がしばしば1つまたは幾つかの理由からフラッシュ・メモリシステム内に維持される。1つの理由は、過度の使用から故障する前にシステムからマッピングすることによって他のブロックと置き換えるために、ブロックがその寿命の終わりに達しかかっているときを判定することである。これは、例えば、米国特許第5,043,940号に記載されており、この特許は上記参照によりここに取り入れられている。現在の商用フローティングゲート・メモリセルは数十万から100万消去/再プログラミング・サイクルの寿命を有し、これはしばしばメモリの実用寿命の間殆どのアプリケーションでどのブロックが循環されるよりも大きい。しかし、他のもっと再プログラミングの集中的なアプリケーションはその様な大きな数に達することがある。ブロック経験カウントを追跡するもう一つの理由は、メモリシステムの寿命を延ばす一つの方法として、それらが寿命の終わりに達する前にそれらの損耗を一様にするために種々のブロックへのデータのマッピングを変更できるようにすることである。この様な損耗平等化技術の例が米国特許第6,081,447号に記載されており、この特許は、その全体が上記参照によりここに取り入れられている。ブロック経験カウントを維持するもう一つの理由は、消去/再プログラミング・サイクルの数が増えるに連れて生じるメモリセルの特性の変化を考慮に入れるためにプログラミングおよびその他の動作電圧を調整できるようにすることである。
【0006】
(発明の開示)
重要な点は、1つ1つのイベントの発生を追跡するのではなくて、各回だけでもイベントが大量に発生しているということである。1つの利点は、発生したイベントAの数を表す圧縮されているカウントRが、各イベントが数えられる場合よりは希に更新されるだけでよいということである。もう一つの利点は、2進計数方式では多数のイベントAを表すカウントRを維持するために、より少数のビットが必要とされるということである。圧縮されているカウントRを維持するための好ましい手法は、監視されるイベントが発生する毎に圧縮されているカウントRが更新される確率Pを確立することを含む。その結果として、圧縮されているカウントRは、平均で、1/P回の実際のイベント当たり1回の割合で更新される。この確率は、好ましくは、イベントが発生するシステムの動作から実際的であるくらい独立しているように選択されるので、圧縮されているカウントRを更新する頻度に対するシステム動作の影響が最小限となる。
【0007】
ここに記載される特定の例では、電子システムを操作する動作の一部分として発生する反復イベントの数を監視するためにこの手法が利用される。乱数発生器はイベントの数の圧縮されているカウントRが更新されるときを決定するために用いるのに好ましく、実際には擬似乱数発生器が普通使用される。イベントが発生するとき、好ましくはイベントが発生する毎に、乱数が発生される。該乱数のうちの1つは、好ましくは、次の順番の数にインクリメントさせるなどにより、圧縮されているカウントRを更新させるトリガとして選定される。これは、平均で、N回のイベント当たり1回の割合で発生するが、ここで、Nは、時間がたつに連れて乱数発生器により発生される別個の乱数の可能な総数である。イベントの各発生が数えられるのではなくて、圧縮されているカウントRは平均でN個のイベント当たり1回の割合で更新され、そのカウントは、平均で、発生したイベントの数の1/Nを表す。或いは、別の言い方をすれば、イベントのいずれか1つの発生が圧縮されているカウントRを更新させるという結果をもたらす確率は1/Nである。RとNとの積は、1/Pに比例するありそうな誤差の限界内で、もし必要ならば、実際のイベントの数Aを与え、それは、P=1/Nなので、Nが大きくなるに連れてありそうな誤差が大きくなることを言っている。
【0008】
これらの手法は、特にディジタル・メモリシステムに応用される。上述された従来の技術の欄に記載されている不揮発性フラッシュメモリ・システムの例では、消去/再プログラミング・イベント等のイベントの圧縮されているカウントRを更新する動作は比較的に希に行われればよいので、メモリの他の動作からより少しの時間を減じる。これは、ユーザデータ・プログラミング等の、その様な他の動作がより高速に行われるという結果をもたらす。また、各ブロックについてのカウントを蓄積するのに必要なビット数も顕著に少なくなる。さらに、イベントの各々の発生を数えなくても良いときはメモリシステムの動作の複雑さも減少する。
【0009】
フラッシュメモリで発生する消去および再プログラミング・サイクルの数の経験カウント(時には“ホット”カウントと呼ばれる)を維持するためのこの手法の応用では、数NはMの小部分であるように選択され、ここで、Mは、動作の能率が非常に悪かったり完全な故障の危険が生じたりする前にメモリセルが無事に経験し得る消去/再プログラミング・サイクルの最大数で表したメモリの予想寿命である。結果として生じる圧縮されているカウントRは、発生したイベントの数Aを正確に知ることを可能にしないけれども、その相対的正確さは、イベントの数Aが大きくなるに連れて、特にメモリ・ブロックの寿命の終わりMに近づくときに、高くなる。メモリの寿命にわたる最大の圧縮されているカウントRは、全ての消去イベントが数えられる場合のMではなくてM÷Nであるので、経験カウントに必要な記憶空間のバイト数は顕著に減少されることができる。圧縮されているカウントの更新は多数の消去イベントについて1回だけなので、メモリの全体としての性能が改善される。さらに、フラッシュ・メモリシステムは維持しデバッグしやすい。
【0010】
その様なイベントのうちの特定の1つが圧縮されているカウントを更新させる確率Pはメモリまたは他の電子システムのイベントが数えられる時間全体にわたって同じに保たれる必要はなくて、例えば、監視されているイベントの数Aの関数として変更されても良い。具体的には、実際のカウントの値Aが小さいときにフラッシュメモリの消去/再プログラミング・イベントのより正確な圧縮されているカウントRを維持したい場合には、確率Pは動作の始めには高く維持され、そしてメモリの寿命中に実際のカウントAが大きくなるに連れて小さくされる。特別の例として、圧縮されているカウントRが特定のブロックのメモリセルにそのプログラミングおよび/または消去中にかけられる電圧を制御するためにシステムにより使用されるときにはこれは特に有益であり、その理由は、それらの電圧が実際の経験カウントAのレベルが低いときにしばしば変更されることである。この能力は、個々のブロックについての圧縮されているカウントRを蓄積するためにより多くのビットを専用する必要を伴うことなく提供される。
【0011】
本発明の付加的な局面、特徴および利点は特定の代表的な実施形態についての以下の記述に包含されており、その記述は添付図面と関連して考慮されるべきである。
【0012】
【発明の実施の形態】
図1は、典型的な不揮発性メモリシステムの主要な構成要素のうちの幾つかの概略図である。コントローラ11は、ライン13を介してホスト・システムと通信する。コントローラ11は、それ自身の集積回路チップを占めることがあり、ライン15を介して1つ以上の不揮発性メモリと並列に通信し、1つのメモリ17が示されている。メモリ17は、メモリセルアレイおよび付随する周辺回路37を包含し、それらは、コントローラ・インタフェース39と共に、独立した集積回路チップ上に形成されることができる。
【0013】
ユーザデータは、この例ではライン15を介してコントローラ11とメモリ17との間で転送される。メモリ17は、該コントローラによりアドレス指定される。具体的には、ライン15内のデータバスは1バイト幅であって良い。図1に示されているメモリシステムは、ホストシステムの一部として埋め込まれるか、或いは上述したカード規格のうちの1つに従うカードなどのカードに入れられることができる。カードの場合、ライン13は、ホストシステム内の補足的ソケットと噛み合う該カード上の外部端子で終端する。1つのコントローラチップと複数のメモリチップとの使用が一般的であるけれども、もちろん、それらの回路を組み合わせることによりその様なシステムのためにより少数の別々のチップを使用するのが趨勢である。64メガバイトのデータ容量を有する不揮発性メモリシステムを形成するために、図示されているメモリ17の容量例は256Mbitであり、従ってその様なメモリチップを2つとコントローラチップとを必要とする。単一のより小さな容量のメモリチップを使用すると、より小容量のメモリシステムとなる。8メガバイト・システムが市場向きの例である。逆に、システムにおいてより高いビット蓄積密度および/またはより多数のメモリアレイ・チップを用いると、より大容量のメモリとなる。1.3ギガバイト以上に及ぶその様なメモリシステムが実際的である。
【0014】
コントローラ11は、コントローラ・インタフェース論理25を通して内部メモリと外部コンポーネントとのインタフェースとに接続されているマイクロプロセッサまたはマイクロコントローラ23を包含する。プログラムメモリ27は、接続されているメモリアレイからデータを読出してそのデータをホストに送り、データをホストからメモリアレイに書込み、そして他の多数の監視および制御機能を実行するようにメモリシステムの動作を制御するためにマイクロコントローラ23によりアクセスされるファームウェアおよびソフトウェアを蓄積する。メモリ27は、何らかの形の不揮発性メモリからのデータにより初期化される揮発性の再プログラミング可能なランダムアクセスメモリ(RAM)、再プログラミング可能ではない不揮発性メモリ(ROM)、ワンタイム・プログラマブル・メモリ(OTP)または再プログラミング可能なフラッシュEEPROMシステムであって良い。もしメモリ27が再プログラミング可能ならば、コントローラはホスト・システムがそれをプログラミングすることを可能にするように構成されることができる。ランダムアクセスメモリ(RAM)29は、とりわけ、読出しおよび書込み動作の間にアクセスされる不揮発性メモリから読出されるテーブルからのデータを蓄積するために使用される。
【0015】
論理回路31はホスト通信ライン13とインタフェースし、もう1つの論理回路33はライン15を介してメモリ・アレイとインタフェースする。もう1つのメモリ35は、ホスト・システムとメモリ17との間で転送されるユーザデータを一時的に蓄積するバッファとして使用される。コントローラ内のメモリは、オペレーティング・ファームウェアを蓄積するものを除いて、普通は揮発性であり、その理由は、高速アクセスおよび効率的コントローラ動作のために望ましい他の特性を有するメモリはその特性を有することである。数個の揮発性メモリは物理的に単一のメモリに便利にまとめられても良い。
【0016】
メモリ17の論理回路39は、ライン15を通してコントローラとインタフェースする。論理回路39の目的は、別々のバスおよび制御ラインを介して転送されるメモリセルアレイ37のための信号を作ることである。種々の制御信号がライン41で供給される。データバス45は不揮発性メモリにプログラミングされ或いは不揮発性メモリから読出されるユーザデータを伝え、アドレスバス47は、ユーザデータを読出し、ユーザデータを書込み或いはメモリセルのブロックを消去するためにアクセスされるメモリの部分のアドレスを伝える。電力制御回路43は、回路41に存する制御信号に応答して、ライン49を通してメモリセル・アレイ37を操作するために必要とされる種々の電圧および電流を供給する。ライン47に存するアドレスにより示されるセルのうちのいくつかをプログラミングし、読出し或いは消去するために適するメモリセルアレイ37のビットラインおよびゲートへの電圧が含まれる。
【0017】
1つの典型的なフラッシュメモリの実施形態では、該アレイのメモリセルは幾つかのブロックに分けられ、その各ブロックはメモリセルの最小の消去可能な単位であり、個々のブロック内の全てのセルが同時に消去可能である。一般に、数個のブロックが同時に消去され、メモリアレイへのデータのプログラミングは、始めに消去されたブロックで行われる。ありふれた例では、各ブロックは、512バイトのユーザデータに加えて、そのユーザデータに付随し且つ/または該オーバヘッドデータが蓄積されているメモリセルのブロックに付随する数バイトのオーバヘッドデータを保持する。その様なブロックは、1つの特定の現行の実施形態では、2列のメモリセルから形成される。もう1つの例では、各ブロックは、32768(64×512)バイトのユーザデータに加えてオーバヘッドデータを保持する。ユーザデータと同じブロックにオーバヘッドデータを蓄積する代わりとして、オーバヘッドデータの一部または全部を、その目的に専用される他のブロックに蓄積することができる。
【0018】
幾つかのフラッシュEEPROMシステムにおける現行のフラッシュメモリの各ブロックに付随するオーバーヘッド情報のアイテムのうちの1つは、そのブロックが経験した消去/再プログラミング・サイクルの数である。このブロック経験カウントは多くの目的のために役立ち、そのうちの主要なものが上述されている。該ブロックの消去または再プログラミングのうずれかのイベントを書き留めておくためにブロック経験カウントが更新されるとき、そのブロックについて不揮発性メモリに蓄積されている現行の経験カウントが最初に読出されて、一時メモリに普通はコントローラ内の不揮発性メモリに蓄積される。この読出されたカウントは、その後、カウントを1だけインクリメントするなどにより、後のイベントの発生を表すために更新され、そしてその更新されたカウントが次に不揮発性メモリブロックに書き戻される。これは、時間がかかり、従ってメモリシステムの性能に強い悪影響を及ぼすかなりの数の動作を必要とする。
【0019】
本発明の主要な実施形態では、経験カウントは、関連するブロックが消去され再プログラミングされる毎には更新されない。むしろ、圧縮されているカウントは、数えられている消去/再プログラミング・イベントの率と比例定数により関連させられる平均の率で比較的希に更新される。例えば、フラッシュメモリが約1,000,000消去/再プログラミング・サイクルの寿命を有し、圧縮されているカウントが約4000サイクルに1回だけ更新されるならば、更新プロセスは多数のサイクルの発生にわたってわずか1/4000の頻度で行われるに過ぎない。メモリの動作中に圧縮されている経験カウントを更新するために使用される時間の量は、経験カウントが各々のイベントにより更新されるときよりは顕著に少ない。さらに、維持されているカウントを蓄積するのに必要なビットの数は実際のカウントを維持するのに必要なそれよりは顕著に少ないので、カウントを維持するために不揮発性メモリにおいて占められるスペースは顕著に少ない。例えば、1,000,000サイクルの実際のカウントが維持されるならば、1から1,000,000までの各々の数を数えるために全てのブロックについて約3バイトが必要である。一方、平均して4000個当たり1つの割合でイベントが数えられるだけならば、最大カウントは約250であり、これは1バイトで維持されることができる。従って、この例では、オーバーヘッド記憶スペースの節約は1ブロック当たり2バイトである。
【0020】
ブロックが経験したイベントの実際の数の表示は、維持されているカウントにこの例では4000を乗じることによって常に利用可能であるが、コントローラメモリ27に蓄積されているメモリシステムのオペレーティング・ファームウェアは好ましくは圧縮されているカウントを個々のブロックの使用の表示として直接用いて動作する。不揮発性メモリ内でのまたは他の何らかの電子システムでの他の何らかのイベントの発生のカウントの監視を更新する頻度を減らすことにより、性能が改善したり記憶スペースの要件が減少したりするという利点が同じく得られる。
【0021】
圧縮されているカウントを維持する好ましい手法は一連の乱数を生成する動作を含み、その場合、新しい数は新しいイベントの各々に応答して発生され、圧縮されているカウントは、発生された乱数がそれらの数のうちの所定の選択された1つに等しいときに更新される。例えば、1〜4000までの乱数の発生器が使用され、イベントが発生する毎に新しい数が発生され、特定の数(例えば、2750)が、その数が発生したときに維持されているカウントを更新するように選択されるならば、圧縮されているカウントは乱数発生器の出力が2750に等しくなる毎に更新される。平均で、これは4000個のイベントにつき1回発生する。発生したイベントの数と圧縮されているカウントとの間には精密な関係はないけれども、特に多数のイベントが発生した後は、密接な相関関係がある。記述されている例の目的のためには、特に数十万のイベントが発生した後に、圧縮されているカウントの精度が充分であることが見出されている。メモリの個々のブロックが交換されなければならないときを決定するために、記述されているアプリケーションの例では、これは経験カウント情報が極めて有益となるときである。
【0022】
図2は、例として、図1の不揮発性メモリシステムで実施されるこのプロセスを概念的に示している。乱数発生器51は、インクリメント・パルスがライン53で加えられる毎に新しい乱数をライン52に出力する。該インクリメント・パルスは、ライン41に存するコマンドが消去動作を示しているときにライン49における電圧パルスの開始点で発生する。信号のこの結合はANDゲート54により特定されるように図示されている。ライン47におけるアドレスにより指示されるメモリ37の1つ以上のメモリセル・ブロック38が同時に消去されるのは、この様な消去電圧パルスの間である。1つの特定の実施形態では、16個のブロックが同時に消去される。一般に、単一の消去電圧パルスが加えられる。
【0023】
乱数発生器と関連する数の集合に包含される1つの数が、55により示されているようにシステム内の所定の場所に不揮発性に蓄積される。乱数発生器51により発生されたライン52に存する各々の新しい数は、比較器57により、メモリ55に蓄積されているのと比較される。その2つの数が一致すると、ライン59の信号は、現在消去されるブロックの各々について圧縮されているカウントRを更新させる。その比較が否定であれば(即ち、その2つの数が一致しないのであれば)、殆どの時間にそうであるけれども、その様な更新は行われない。この比較は、速度要件、柔軟性の必要およびコスト考慮事項により、論理ゲートを用いて、或いはソフトウェアで、或いはファームウェアで実施されることができる。
【0024】
一実施形態では、数個のユーザデータ・ブロックについて、指定ブロック61などの多数の指定されているブロックのうちの1つにおいてカウントが維持される。その様な指定ブロックについてのデータ構造の概要が図3に示されている。ユーザデータを蓄積する他の多数のブロックの各々について数バイトのオーバヘッド・データがその様なブロックで維持され、その数は種々のブロックの容量による。例えば、メモリセル・ブロック2についてのオーバヘッド(“OH”)データは、乱数発生器出力52と蓄積されている数55との一致が生じたときに更新される圧縮されているカウントのバイト63を包含する。
【0025】
もう一つの実施形態では、カウントは、独立の指定ブロック61で維持されるのではなくて、そのために該カウントが維持されているところのブロックの一部として蓄積される。例えば、図4を参照すると、圧縮されているカウントのバイト65はメモリセル・ブロック1についてのオーバヘッドデータ67の一部として蓄積され、該ブロック内のセルの大半はユーザデータを蓄積する。従って、数個のブロックが一緒に消去されるとき、各ブロックの圧縮されているカウントは、乱数52が消去動作のときに55のところに蓄積されているそれと一致するときに更新される。そのとき消去されない他のブロックの圧縮されているカウントに関しては何も行われない。
【0026】
さらに、もう一つの実施形態では、もっぱらカウントを蓄積し、他の種類のオーバヘッドデータを一切蓄積しないブロックにカウントは蓄積される。
【0027】
乱数発生器51は、多数の公知のハードウェアおよび/またはソフトウェア手法のうちのいずれかに従って実現されてもよい。しかし、特定の実施形態では、乱数発生器51の機能はメモリコントローラ11(図1)のマイクロコントローラ23によって実行される。マイクロコントローラ23は、一般的に消去パルスの持続時間中はアイドルであるので、その様なパルスの間は新しい乱数52を発生してその数を所定の数55と比較して一致が存在するか否かを判定する機能を実行するために使用されることができる。標準的なシフトおよび排他的ORアルゴリズムが使用され、そのアルゴリズムでは32ビット値がコントローラRAM29に蓄積され、12ビット乱(実際にはこの手法では擬似乱)数が各消去コマンドに応答してそれからライン52に生成される。12ビット乱数は4096個の異なる可能な結合を提供する。メモリの寿命が約百万サイクルであるならば、イベントの実際の数を表す圧縮されているカウントを1バイトが蓄積することになる。各消去イベントの発生時に、発生された乱数52が55に蓄積されている数と一致する確率Pは4096に1つである。
【0028】
より詳細には、乱数発生器は、コントローラRAM29(図1)に形成されている32ビットのシフトレジスタを使用する。全ての新しい乱数は、該シフトレジスタの第2および第3の最下位ビットに対して排他的OR演算を繰り返し実行し、その結果としてのビットを該シフトレジスタの32ビットの全てのシフト動作中に該シフトレジスタの最上位ビットに送ることによって、発生される。新しい16ビット乱数を発生するためには、この操作は16回繰り返される。そのとき、該シフトレジスタの16個の最下位ビットのうちの4個の最上位ビットは、該シフトレジスタの16個の最下位ビットと16進数0FFFh(2進形式では0000 1111 1111 1111)とのAND演算を実行することによってマスクされる。そこで該シフトレジスタの12個の最下位ビットが000h(2進形式では0000 0000 0000)になる毎に該論理AND演算の出力は1となり、その様なときには圧縮されているカウントRがインクリメントされるという意味でヒット(一致)がある。該シフトレジスタの32ビットの全てが全く同じにゼロになったならば、それ以降に発生される後の乱数も全てゼロになる。そこで、もしそうなったならば、乱数発生器は再シード(re−seed) される。
【0029】
上で具体的に記述された乱数発生器51以外の何らかの手段で確率Pを作ることができることが注目されよう。例として、システム雑音、シングル・エレクトロン装置におけるトンネル事象、一定時間内の放射性崩壊、および何らかのハードウェア、ファームウェアまたはソフトウェア装置でランダムに発生する他のイベントを使用することが含まれる。乱数発生器51を初期化するシードを発達させるのに使用される他の適当な乱数発生手法が以下に追加的に記述される。
【0030】
メモリシステムが無給電状態からパワーアップされた結果として初期化されると、乱数発生器51はプロセスを開始するために初期値にセットされなければならない。これは、ライン75の初期化信号によってトリガされて、初期値シード73を乱数発生器51に供給するシードソース71により実行される。
【0031】
使用することのできる代わりのシードソースは多数ある。1つは、初期化前のメモリシステム動作中の乱数発生器51の最後の値52を不揮発性に蓄積することである。乱数発生器51はその後、その蓄積された数から開始させられる。けれどもシードとして乱数または相関性のない数のソースを用いてもうまくゆく。タイムレコーダを含むシステムでは、作られる時間は数の疑似ランダムな系列であり、初期化時に存在する数は乱数発生器51のためのシードとして使用される。代わりに、乱数発生器51と同じまたは異なる設計の第2の乱数発生器を使用してシードを選択してもよい。上で具体的に記述された乱数発生器については、再シード(re−seeding)はシフトレジスタの32ビットを全て初期化する動作を含む。
【0032】
シードを発生するためのもう一つの代わりの手法は、通常の方法で読むことのできるメモリのブロックのユーザデータを読出すことを伴う。しかし、高度のランダム性を確実にするために、そのデータが初期化と初期化との間で変化しないならば、その読出しは、特定の一実施形態では、データを読出すために通常使用される量を遙かに上回る量だけ離れている限界しきい値レベルで実行される。これは、読み取り値が限界に近い結果として、そのデータを読出すときに多数のエラーが発生して、好ましくは同じデータのうちの少なくとも一部が異なるときに別様に読まれることを確実にすることを意図している。シードのランダム性をさらに高めるために、この意図的に間違って読出されたデータから第2のブロックのアドレスを作ることができ、その第2ブロックのデータは該データを同じく間違って読出しそうな方法で読出される。ランダム性をさらに確実にしたいならば、これをもう幾つかのサイクルにわたって継続することができる。
【0033】
上述したように、一致が発生する確率Pがメモリ・システムの寿命の全体にわたって同じままであるということが仮定されている。しかし、変化する何らかの関連条件または発生する関連イベントに応答するなど、何らかの方法で確率Pを変更することが望まれるアプリケーションもあり得る。発生器51からの乱数52の各々と比較される記憶装置55内の所定の数の個数を変更することによって、その確率を希望に応じて変更することができる。記憶装置55内の1個、2個、或いはもっと多くの所定の数のいずれかと発生した乱数との一致が発生する毎に、圧縮されているカウントが更新される。発生器51の乱数出力と比較されるために利用可能にされる記憶装置55内の所定の数の個数が変更されるに連れて、任意の与えられた乱数について一致が発生する確率Pが変更される。
【0034】
確率を変更するために比較される蓄積されている所定の数の個数を変更する代わりに、ディジタルシステムでは、記憶装置55内の単一の数と、個々の乱数との比較されるビットの数を変更することができる。例えば、乱数発生器51の乱数出力52が12ビットで、55に蓄積されている所定の数も12ビットであれば、一致の最低の確率(4096に1つ)は12ビット全ての明確な比較が必要であるときに生じる。しかし、もう一つの例として、各々の数の同じ箇所に存する2つのビットだけが比較されるならば、各々の比較の結果として一致が生じる確率は遙かに大きくなる(4つに1つ)。このことは、実際上、乱数発生器により発生され得るいろいろな乱数の総数を変化させ、そしてその様にして、どれか1つの乱数が所定の数と一致する確率を変化させる。比較される2つの数のビットの数は、従って、可能な乱数の総数は、ユーザの選択に応じてファームウェアまたはソフトウェアの制御下で容易に変更され、或いはメモリシステムの他の何らかの条件またはイベントにおいて変化が検出されたことに応答して自動的に変更される。
【0035】
フラッシュメモリシステムにおいて一致が発生する確率を変更する1つの具体的なアプリケーションについて、図5のフローチャートに関連して説明する。この操作方法は、実際のカウントAの比較的に低い数に普通は対応するRの低い数で、比較的に高い数の場合よりは頻繁に、圧縮されているカウントRをインクリメントし、その結果として比較的に低い数において圧縮されているカウントRは実際のカウントAをより精密に表す。この様にして低い数での圧縮されているカウントRの解像度が改善される。最初はRの低い値においてPの高い値を使用し、そしてRの高い値でPの低い値(これは1/4096より低くなることができ、実際には1/32768の低さになることができる)へと進むことによって、圧縮されているカウントRを蓄積するのに必要なビット数を増やすことなく、これを達成することができる。このアプローチを使用することにより、0から255までの整数Rが高いカウント範囲では百万の高さのカウントを表し、低いカウント範囲では1桁の低さの数を表すことができる。ここに記載されている特定のフラッシュEEPROMシステムの例では、同じビット数の予め指定された数と比較される2進形式の乱数の総数は、消去される各ブロックの圧縮されているカウントRの値の関数であるように指定されることができる。
【0036】
この特徴を例証する図5〜8に関して記述される具体的な例では、発生器51(図2)により発生される乱数52と蓄積されている所定の数55との両方が各々長さ16ビットである。圧縮されているカウントRの値により、各々の異なる数のビットが比較器57によって比較される。圧縮されているカウントRの値が比較的に低いときには、比較的に高い(その場合、一致が発生する確率が比較的に低い)ときよりも少ない数のビットが比較される(従って、一致が発生する確率が比較的に高い)。圧縮されているカウントRは1バイトで蓄積され、0〜255の範囲を有する。
【0037】
図5を参照すると、プロセスの概要における第1ステップ71は、消去動作が実行されるときを決定する。これが起こったとき、ステップ73において、乱数発生器51は乱数52(図7も参照)を発生させられる。次のステップ75で、消去されるべく現在のアドレス指定されているブロックについての圧縮されているカウントRがその不揮発性記録61から読出される。このことは、図2に示されてはいないけれども、好ましくは上述されているように図2に示されている処理も実行するマイクロコントローラ23(図1)により実行されると理解されよう。図6に示されているようなテーブルが、次のステップ77で使用されるべく該コントローラの不揮発性メモリに蓄積されている。このテーブルにより表される論理は、ハードウェア、ファームウェア、またはソフトウェアで実現されることができる。
【0038】
比較されるべき数52および55のビットの個数(図7)は、図6のテーブルの左側コラムで消去される各々のブロックについて読出された圧縮されているカウントRを探し、その中央コラムで比較されるべきビットの個数を読出すことによって決定される。図6の右側コラムは、この説明のための情報として、比較された数52および55のビット間で一致が生じる確率Pを与えている。Rの最低値0〜15についてはどのビットも比較されないことに注意するべきであり、その理由は、それらがAの実際のカウント値0〜15のそれぞれに等しいことである。従って、そのRが15以下であるブロックについて消去イベントが発生する毎に、そのRは1だけインクリメントされる。しかし、Rが16〜31の中にある次の範囲の中では、数52および55の各々の同じビット位置にあるビット79および81などの各数の1ビットが比較される。従って、各々の場合に一致が生じる0.5の確率がある。Rの次の範囲32〜47では、数52のビット79および83と数55のビット81および85などの2ビットが比較され、その結果として、いずれの場合にも一致が発生する確率は0.25となる。圧縮されているカウントRがその最高の範囲240〜255まで増えてゆくとき、16ビットのうちの15個が比較され、その結果として、任意の1つの比較から16ビットのうちの15個の一致が生じる非常に低い確率(32768に1つ)がもたらされる。
【0039】
数52および55のビットの数が図6のテーブルで調べられ、次に比較がステップ87(図5)で行われる。次のステップ89は、個別ブロック・ベースで一致があるかないかを決定する。もしそうならば、ステップ75で読出されたアドレス指定されているブロックの中でその一致を満たしたそれらの個々のブロックのみの圧縮されているカウントRがステップ91で1だけインクリメントされる。消去されるブロックのグループのうちのどのブロックも一致を生じさせなければ、消去されるそのブロックに関しては該プロセスは終了し、ステップ71は他の消去コマンドの受領を待つ。
【0040】
記述されている例は種々の数のインクリメントを含んでいるけれども、代わりに1つ以上を高い値から低い値へとデクリメントしてもよい。必要なときに意味のある値を読出せるようにRが更新される限りは、数52および55の間の肯定的比較という事実を記録するために圧縮されているカウントRをどの様に更新するか、例えば、その度に1以上インクリメントすることにより、その度に1以上デクリメントすることにより、或いは他の何らかの手法により更新するかは、普通は重要ではない。
【0041】
図8に示されているそのようなテーブルも、Aの見積もりを知らなければならない場合に圧縮されているカウントRを実際のカウントAに関連させるために故障解析エンジニアにより使用されるソフトウェア・パッケージの一部として随意に包含される。(殆どの場合に、カウントAとそれとの関係は既知であるので、メモリシステム・ファームウェアはカウントR自体から動作することができる。)左側コラムの圧縮されているカウントRの値の第1のグループ93については、中央のコラムに示されている実際のカウントAと同じである。右側コラムに呈示されているRとAとの間のエラーの統計的標準偏差は、このグループについてはゼロである。図6のテーブルの第2行に対応する図8のテーブルの次のグループ95では、Rの値はAの値と等しくない。むしろ、このグループの各RカウントはAの各2回の発生につき約1回インクリメントされるので、Aの値は、おおよそ、第1のグループ93の一番上の値である15に左側コラムのカウントRの15を超過している数の2倍を加えたものである。同様に、図6のテーブルの第3行に対応する次のグループ97内の任意の与えられたRの値についてのAの値は、最後のグループ95内のRの一番上の値31についてのAの値に前のグループ95の一番上のカウント31を超過しているRのカウントのおおよそ4倍を加えたものである。この関係はカウントRの可能な値の全てを通じて存続する。
【0042】
前のグループ93,95,97等により表されるRの異なる範囲で確率値が異なっていることの効果の組み合わせの寄与がますます増加するので、特にRの値が大きくなるとき、カウントRとAとの関係は普通は上記で概略的に決定されている関係ではない。その結果として、図8のテーブルの中央のコラムは余分の未知項xを含んでいる。x項を含む数学的モデルによりRとAとの関係を近似することはできるけれども、普通は図8のテーブルの中央コラムに存する各々の与えられたRについてAの期待値(即ち、平均値)を経験的に作るのが好ましい。このプロセスが実行されるメモリシステムは、ゼロからそのタイプのメモリが経験すると期待される最大数にまでわたる、実際のまたはシミュレートされた数個の消去イベントに少なくとも1グループのブロックをさらすことによって最も良く操作される。消去サイクルのシステムにより維持される圧縮されているカウントRと実際のカウントAとの両方が該試験の間監視される。後者は図8の中央コラムの値を与える。実際のメモリシステムを使用して圧縮されているカウントRに対応する実際のカウントAを作ることにより、システムおよびプロセスの乱数発生器51および他の部分の種々の欠点が考慮される。その様な要素を全て正確に数学的にモデリングすることは困難である。
【0043】
図8の右側コラムのエラー数も、それを含むことが望まれるときには、その様な経験的手法により最も良く決定される。カウントRおよびAは数個のメモリ・ブロックの多数のサイクルの間維持され、異なるブロック間の差は、その様な差の母集団の標準偏差によるなどの何らかの方法で統計的に表される。このコラムは、所望の精度と、該カウントを蓄積しておくのに必要な所要記憶スペースとの間の種々のかね合いと、該メモリシステムのユーザによる診断とを査定する目的のために有益であり得るけれども、システムの動作中、普通はコントローラ11によって使用されない。
【0044】
ここに記載されている例は、フラッシュEEPROMシステムのブロックが経験する消去/書き直しサイクルの数のカウントを維持するためのものであるけれども、特にメモリセルの各々のブロックまたはブロックのグループについて一つのイベントの独立のカウントが維持されるときには、これらの手法はその様なシステムで他のイベントを数えるのに同様の利点を持って応用されることもできる。一例は、個々のブロックが限界走査データ復元手法にさらされる回数を、それらのブロックに伴う問題の指標として数えることである。もう一つの例は、他の読むことのできないセクタのユーザデータを復元するために誤り訂正符号(ECC)が実際に行われた回数を数えることである。もう一つは、時間の経過と共に発生した障害を補償するために、ブロック中のデータをスクラビングによって適切なマージンレベルまでリフレッシュさせる必要が発生した回数を追跡することである。これらのおよびその他の状況において、ブロック、サブブロック(セクタ)、またはブロックのグループで生じるその様なイベントの数が大きいと、それらに何らかの問題があることを意味する。この情報は、該ブロック、サブブロック、または問題のあるブロックのグループを取り替え、或いは他の何らかの修正処置をとるためにメモリコントローラによって使用されることができる。
【0045】
さらに、上述した計数手法は、フラッシュEEPROMまたは他の不揮発性メモリシステムに対する使用に限定されない。これらの手法は、動作の過程で或いはシステムの使用により発生する1つ以上のイベントを数え続けることが必要であるかまたは望ましい任意の電子システムに応用される。
【0046】
本発明の種々の局面は特定の代表的な実施形態に関して説明してきたけれども、本発明が添付されている請求項の最大の範囲内で保護を受ける権利が与えられることが理解されよう。
【0047】
以下に記載するのは、付属の説明書である。
【0048】
付属の説明書
新しい圧縮確率的整数イベントカウンタ方式
このアイデアは一定のイベントが発生した回数の記録を取っておかなければならないどの様な状況にも応用可能である。イベントが発生した回数を追跡する普通の方法は、イベントが発生する毎にインクリメントされるカウンタを工夫することである。イベントが発生し得る最大の回数がM回であるならば、この情報を蓄積するために該カウンタはN=log2 Mビットを必要とする。そこで、例を挙げると、百万までのイベントを追跡したいならば、このカウントの蓄積のために20ビット≒3バイトを専用せざるを得ない。20ビット=2.5バイト=20ビットであり、220=1048576であることに注意されたい。今、その様なイベントカウンタが多数必要であるならば、全てのカウンタを蓄積するのに必要なメモリの全体は相当になり得る。セクタ当たり1つのカウンタを基礎としてフラッシュメモリでホットカウントを実施することになるときは、正にそうである。また、セクタがプログラミングまたは消去される毎に各セクタのホットカウントを更新することは、メモリの動作速度と、各セクタのホットカウントの頻繁な更新により生じる損耗との両方に関して重荷になり得る。ホットカウントを包含している各々の512バイトのセクタは、そのセクタがサイクル(プログラミングおよび消去)された回数を蓄積するために3バイトを余分に必要としている。
【0049】
一定のインクリメント確率を用いる簡単なアプローチ
この新しいアイデアは、セクタ当たりホットカウント3バイトをセクタ当たりホットカウント1バイトに圧縮することを可能にする。正確さを諦めることを厭わないのであれば、新しいホットカウント方式は、その最も簡単な形では、次の通りである。12ビット擬似乱数発生器を用いて、確率p(この場合は、p=1/4096=0.0002441)を作ることができる。この確率を発生する1つの方法は、セクタがプログラミングまたは消去される毎にランダム12ビット2進整数を作ることによる。この12ビットの整数が特定の12ビットの整数(例えば、101111010001)と一致した場合に限って、書かれかけているセクタに対応するカウンタがインクリメントされる。212=4096であることに注意されたい。セクタがプログラミングされる毎に、そのセクタのカウンタが整数値1だけインクリメントされる確率Pがある。平均で、どの4096個のプログラミング・イベントも皆、カウンタを1回インクリメントする。
【0050】
与えられたセクタがプログラミングされた実際の回数である実際のカウントAと、このカウントの、Aよりおよそ4096倍小さい表示Rとを区別しなければならない。記録して追跡するのはR=rである。与えられた任意の時におけるRの値はAの値=aを正確には決定しないが、Aの値の概算の見積もりを与える。Rが小さいときにはRはAの非常にまずい指標であるが、Rが大きくなるに連れてRは相対的な意味でAの正確な指標となってゆく。ここで“R”および“A”はランダム変数を表し、“r”および“a”はこれらのランダム変数がとることのできる一定の整数値を表す。
【0051】
RがインクリメントされるイベントとしてEを定義することができる。すると、確率(E)=Pr(E)=p、そして確率(notE)=Pr(/E)=1−pであり、“r”=“a”回のトライアルでEが発生する回数=下記の二項分布により与えられる確率密度関数f(r|a)を有するランダム変数である。
Pr(R=r|A=a)=f(r|a)=(a!/(r!(a−r)!))pr (1−p)(a−r)
{Rの平均値}=Exp(R)=a・p、そして
{Rの標準偏差}=SD(R)=√[a・p・(1−p)]
上記式は二項分布においてよく知られている。このホットカウント方式の目的のために、Rの何らかの既知の値が与えられたときのAの期待値と、Rの何らかの既知の値が与えられたときのAの標準偏差とを知らなければならない。その理由は、何時でもRの値だけが蓄積されていて検索されることができ、Aの正確な値についての知識は全く保持されていないことである。
【0052】
Exp(A|R=r)=r/pと書いてもいいように思われる。確かにこれは正しいかも知れないが、Pr(R=r|A=a)=f(a|r)についての式を引き出すためにベイズの定理を用いる必要がある。この時、この確率密度関数を用いてExp(A|R=r)とSD(A|R)とを計算することができる。ベイズの定理は次のように述べている。
上の方程式の右辺の分母は、下記の恒等式を用いて書き直すことができる。
ここで、実際のカウントAは表示Rより決して小さくはないことが分かっており(従って、合計はrから始まる)、そして実際のカウントAが何らかの大きな数M(例えば、M=1000000またはM=10000000)より決して大きくはならないことを仮定する。従って、{A=r,A=r+1,A=r+2,…,A=M}はパーティションを形成する。また、条件付き確率の定義により、
である。このような場合にはランダム変数Aは一様に分布すると仮定しても差し支えないと述べている“ベイズの見積もりについての一様分布の許容性(The Admissibility of Uniform Distribution for Bayesian Estimates)”と呼ばれる統計の理論がある。換言すると、もし実際のカウントがMより決して大きくならず、表示Rの値が分からなければ、何らかのランダムな時点でAの値は0からMまでのどの様な整数である可能性もあり、各整数値は他のどれとも同じ可能性を有する。従って、Pr(A=s)=定数=(1/(M+1))であり、この定数を下記の合計、
から引き出すことができ、そして、Aは一様に分布しているのでsの任意の値およびaの任意の値についてPr(A=s)=Pr(A=a)であることが分かり、
である。上記式から明らかなように、p=一定であるこの簡単な例でも、計算にはコンピュータ・プログラムが必要である。しかし、ウォルドの等式(ジョン・ワイリー&サンズからのシェルドン M.ロス(Sheldon M. Ross, John Wiley & Sons)による書籍「確率的過程」(STOCHASTIC PROCESSES)(1983年)第59ページを参照)を用いて次式、Exp(A|R=r)=Exp(R|A=a)/p=r/pに容易に到達することができる。従って、p=1/4096の場合には、Exp(A|R=r)=4095・rである。
【0053】
Rの何らかの値=rが与えられたときにAの期待値および標準偏差の両方を計算するもう一つの方法は、モンテカルロ・シミュレーションを実行することによる。これらのシミュレーションは、次のセクションで論じられる“r依存p値アルゴリズム”などのもっと複雑なアルゴリズムが採用されるときに特に有益である。どの様な乱数発生方式でも実際は完全に一様ではないかも知れない分布で擬似乱数を発生するので、モンテカルロ・シミュレーションを実行するための最良の場は、生産が始まるであろう同じプロセッサおよびファームウェアからなる。この様にして、乱数発生方式の欠陥も該シミュレーションに取り込まれることになる。
【0054】
この簡単な場合についてのモンテカルロ・シミュレーションは2段階から成る。第1段階は2つのループから成り、一方のループは他方のループに組み重ねられている。内側のループは各パス毎に実際のカウント“a”を1だけインクリメントする。また、整数“a”がインクリメントされる毎に、12ビットのランダム2進整数bが作られ、この整数が101111010001に等しくなったときに限って、表示“r”がインクリメントされる。上で論じられているように、その様な一致の確率は4096に1つである。外側ループの中で、且つ内側ループの外側では、“a”および“r”は共にゼロにセットされることに注意されたい。このことは、全てのトライアルがa=0で且つr=0からスタートすることを可能にする。内側ループはr<256である限り反復される。平均して内側ループは百万回実行される。内側ループは、1つのセクタがおよそ百万回サイクルされるとき(rが25510=111111112 で飽和するまで)に該セクタのホットカウントに起こることをシミュレートする。これは単一のトライアルと称されてよい。一方、外側ループは多数のトライアルをシミュレートする。外側ループは、多数のトライアルの統計的に重要なサンプルを作るために10000回実行されることができる。第1段階中に蓄積されなければならないデータを最小限度にするためには、“r”のインクリメントに対応する“a”の値を記録するだけでよい。“r”の固定されている各値に1つのファイルを専用とすることができる。そこで、例えば、r123.outという名称のファイルは、10000回のトライアルにわたって“r”がちょうど123になったときの“a”の値である10000個の整数を含む。255個の出力ファイルを作る。段階2では、“r”の255個のゼロでない値の各々について平均値と標準偏差とを得るためにその255個の出力ファイルの各々が処理される。
【0055】
インクリメントの可変確率値を使用するもっと複雑なアプローチ
(R=rが与えられたときのAの期待値)に対する(R=rが与えられたときのAの標準偏差)の比を“r”の種々の値について大体一定に保つために、もっと複雑なアルゴリズムを採用することができる。これは、“r”の値についての知識に基づいて“a”の値の相対的不確定性を制限するので、有益である。この新しい方式では、“r”がインクリメントされる確率“p”は、“r”の現在の値に関連する。
0≦r<16 ならば、 p=1/20 =1.0
16≦r<32 ならば、 p=1/21 =1/2=0.5
32≦r<48 ならば、 p=1/22 =1/4=0.25
48≦r<64 ならば、 p=1/23 =1/8=0.125
…
…
…
240≦r<256 ならば、 p=1/215=1/32768
=0.0000305
“r”は2進形式で00000000から11111111までの単純なカウントとして表されることができ、十進法の同等物は0から255までである。ヘックスでは、“r”の値は00hからFFhまでにわたることができる。“r”の256の異なる値の各々についてAの平均値とAの標準偏差とを与えるテーブルがホットカウント“r”のどのユーザにも提供される。代わりに、後述されるように、“r”は4ビットの仮数および4ビットの指数の形で表されることができる。しかし、この後者の表示は、いくら良く見ても扱いにくい。
【0056】
この方式のためのモンテカルロ・シミュレーションは上述された簡単な方式に非常に良く似ているが、上述されたように、今は“p”の値は“r”の現在の値によるという点が違っている。
【0057】
特定のメモリのための新しいホットカウントおよびカウンタ方式
各ページ(64セクタ)は、そのページ自体の外で、他のページ内のテーブルに蓄積される単一の1バイトの長さのホットカウントを有する。該ホットカウントは、該カウントがインクリメントされる必要があると決定される毎にコントローラRAMで更新される。ページが消去される毎に、対応するホットカウントをインクリメントするかしないかが決定される。この方式では、ホットカウントをインクリメントする機会は該カウントの現在の値におよそ逆比例する。
【0058】
ホットカウントを包含するテーブルは、約5000ページのホットカウントを包含するために約5000バイトを持たなければならないであろう。230=1Gbitであると仮定すると、4096ページは1Gbitのユーザ容量を有する必要がある。わずか10個のセクタから成るテーブルがチップ全体のホットカウントを包含することができよう。このテーブルのその後の各バイトは次の物理的ページのホットカウントに対応する。数ページが書かれるとき、パーティション境界に遭遇するまで該RAMでホットカウントが更新されることができ、そのポイントで該パーティションに対応するホットカウントテーブルを包含するセクタが1発で更新される。その各々が同じパーティションに属する単一のページのホットカウントである64個のバイトから成るものとしてホットカウントテーブルを定義することができる。1つのホットカウントテーブルが2つのセクタにまたがって分割されることはない(即ち、各“ホットカウントテーブル・セクタ”は8個の“ホットカウントテーブル”全体を包含する)。
【0059】
読出しまたは書込みの動作がパーティション境界を横切る毎に、1つのホットカウントテーブル・セクタが更新され、そして損耗平等化、スクラビング、および退去活動が実行され得るように全てのホットカウントテーブル・セクタが読出されて処理される。ホットカウントバイトの論理的順序は対応するページの物理的順序を表す。また、ホットカウントテーブルの論理的順序は対応するパーティションの物理的順序を表す。
【0060】
ホットカウントセクタの更新は普通は消去さえ必要とはしないが、その理由は、他のどのセクタの場合とも同じく、セクタの更新は該セクタ・データを前もって消去されている新しいセクタに書込み、そして該データの最新のバージョンが存する場所を反映するようにマップを更新することだけを必要とするに過ぎないことである。1つのパーティションは64ページから成るので、パーティションに対応するホットカウントはわずか64バイトである。この方式では、各ページの1バイト・ホットカウントは百万サイクルの間にわずか256回インクリメントされるだけである。そこで、たとえ各ページのホットカウントが更新され次第直ぐにインクリメントされ、512ページのホットカウントを包含するセクタがあちこちに移されないとしても、ホットカウントテーブル・セクタは512*256=131072回更新されることになる。このことは、これら512ページのうちのどのページも百万回サイクルされているということを仮定している。もしユーザセクタが百万サイクルに耐えられるならば、ホットカウントセクタも131000サイクルに耐えることができる。
【0061】
ホットカウント方式
各ページに対応する8ビットのカウントは4ビットの仮数Mおよび4ビットの指数Eから成る。そこで、ホットカウントが01010010であれば、M=01012 =510であり、E=00102 =210である。この例では指数は210であるので、有効仮数Nを作るために補正項A=11002 を仮数に加えなければならず、ここで、N=N(E)、およびA=A(E)はEの関数である。実際のホットカウントは基底10で、N(E)10 *210 **E10=[M+A(E)]*(2**E)である。或いは、ホットカウントは基底2で、N(E)*(10)**Eである。0から15までのカウントでは、ページの全ての消去がホットカウントを100%の確かさでインクリメントする。16から46までのカウントでは、全ての消去がホットカウントをインクリメントする50%の見込みを有する。
【0062】
一般にインクリメントする確率pは、p=1/(2**E)により与えられるEの関数である。
下記はA(E)の値である。
A(0000)=0000,
A(0001)=1000,
A(0010)=1100,
A(0011)=1110,
A(0100)=1111,
A(0101)=1111,
A(0110)=1111,
A(0111)=1111,
…
A(1111)=1111
可能な最大の数Lは、M=1111、およびE=1111により与えられる。
L=(1111+1111)*((10)**(1111)=101579210最小のpは1/32768である。
【0063】
カウンタの活動のカウントにもこの同じ方法を応用することができる。この方式の詳細については添付されているエクセル・ワークシートを参照されたい。サイクルされるセルは、多数回サイクルされているときには寿命の始めの頃と比べてゆっくりと老化するので、この比例ホットカウントは損耗平等化および退去目的の両方のために充分な分解能を有するであろう。
【図面の簡単な説明】
【図1】
本発明のイベント監視を取り入れたメモリ・システムの略ブロック図である。
【図2】
その中で発生するイベントの圧縮されているカウントを維持する図1のメモリシステムの動作を概念的に説明するブロック図である。
【図3】
図2に示されている手法に従うイベントの圧縮されているカウントの図1のメモリシステム内での不揮発性蓄積の1つの形を説明する。
【図4】
図2に示されている手法に従うイベントの圧縮されているカウントの図1のメモリシステム内での不揮発性蓄積のもう1つの形を説明する。
【図5】
図2に従う図1のメモリ・システムの動作の特定の例のフローチャートである。
【図6】
図5の動作例と共に使用されるテーブルである。
【図7】
図5の例で使用される2つの2進数の比較を示す。
【図8】
図5の例で使用されるもう1つのテーブルである。
【発明の属する技術分野】
本発明は、一般に、イベント計数技術に関し、特に、半導体メモリシステムへの、特に不揮発性フラッシュ型の電気的に消去可能でプログラマ可能なリード・オンリー・メモリ(EEPROM)への該技術の応用に関する。
【0002】
【従来の技術】
フラッシュEEPROMシステムは、特に、ホストシステムと取り外し可能に結合される密閉カードに封入されているとき、多様なアプリケーションで使用される。現在の商用メモリカード・フォーマットは、パーソナルコンピュータ・メモリカード国際協会(PCMCIA)、コンパクトフラッシュ(CompactFlash(CF))、マルチメディアカード(MultiMediaCard(MMC))およびセキュアディジタル(SD)のそれを含んでいる。これらのカードの一サプライヤーは、本願の譲受人であるサンディスク コーポレーションである。その様なカードと共に用いられるホストシステムは、パーソナルコンピュータ、ノートブック型コンピュータ、手持ち式計算装置、カメラ、オーディオ再生装置等を含む。フラッシュEEPROMシステムは、ホストシステムにはめ込まれるバルク大容量記憶装置としても利用される。
【0003】
その様な不揮発性メモリシステムは、メモリセルのアレイ、周辺操作回路およびシステムコントローラを含む。該コントローラは、ホストシステムとの通信と、ユーザデータを蓄積したり検索したりする該メモリセルアレイの操作とを管理する。メモリセルはセルのブロックに分けられ、セルのブロックは同時に消去可能なセルの最小グルーピングである。セルの1以上のブロックにデータを書込む前に、セルのこれらのブロックは消去される。ユーザデータは、一般に、ホストとメモリアレイとの間でセクタとして転送される。1セクタのユーザデータは取り扱いやすい任意の量であって良く、好ましくは、メモリ・ブロックの容量より少ないかまたは等しく、しばしば標準ディスクドライバ・セクタサイズに等しく、それは512バイトである。
【0004】
1つの商業的アーキテクチャでは、メモリシステム・ブロックは1セクタのユーザデータとオーバヘッドデータとを蓄積するサイズとされ、該オーバヘッドデータは、該ブロックに蓄積されているユーザデータについての誤り訂正符号(ECC)、該ブロックが消去され再プログラミングされた回数のカウント、該メモリセル・ブロックの欠陥およびその他の物理的情報、および該ブロックにかけられるべきプログラミングおよび/または消去電圧などの情報を含む。この種の不揮発性メモリシステムの種々の実施形態が次の米国特許および係属中の特許出願に記載されており、その各々の全体が上記参照によりここに取り入れられている。それらは、特許第5,172,338号、第5,602,987号、第5,315,541号、第5,200,959号、第5,270,979号、第5,428,621号、第5,663,901号、第5,532,962号、第5,430,859号、第5,712,180号、および1997年8月7日に出願された特許出願第08/910,947号および1999年6月30日に出願された特許出願第09/343,328号である。もう一つの商業的アーキテクチャでは、ユーザデータを蓄積している多数のブロックについてのオーバヘッドデータは他のブロック中のテーブルに一緒に蓄積される。このオーバヘッドデータは、個々のユーザデータ・ブロックが消去され再プログラミングされた回数のカウントを含む。その様なシステムの例が、2000年2月17日に出願された米国特許出願第09/505,555号に記載されている。もう一つのタイプの不揮発性メモリシステムは、ユーザデータの多数のセクタを蓄積するもっと大きなメモリセル・ブロック・サイズを利用する。
【0005】
個々のメモリ・ブロックが経験した消去/再プログラミング・サイクルの数(それらの“経験カウント”)がしばしば1つまたは幾つかの理由からフラッシュ・メモリシステム内に維持される。1つの理由は、過度の使用から故障する前にシステムからマッピングすることによって他のブロックと置き換えるために、ブロックがその寿命の終わりに達しかかっているときを判定することである。これは、例えば、米国特許第5,043,940号に記載されており、この特許は上記参照によりここに取り入れられている。現在の商用フローティングゲート・メモリセルは数十万から100万消去/再プログラミング・サイクルの寿命を有し、これはしばしばメモリの実用寿命の間殆どのアプリケーションでどのブロックが循環されるよりも大きい。しかし、他のもっと再プログラミングの集中的なアプリケーションはその様な大きな数に達することがある。ブロック経験カウントを追跡するもう一つの理由は、メモリシステムの寿命を延ばす一つの方法として、それらが寿命の終わりに達する前にそれらの損耗を一様にするために種々のブロックへのデータのマッピングを変更できるようにすることである。この様な損耗平等化技術の例が米国特許第6,081,447号に記載されており、この特許は、その全体が上記参照によりここに取り入れられている。ブロック経験カウントを維持するもう一つの理由は、消去/再プログラミング・サイクルの数が増えるに連れて生じるメモリセルの特性の変化を考慮に入れるためにプログラミングおよびその他の動作電圧を調整できるようにすることである。
【0006】
(発明の開示)
重要な点は、1つ1つのイベントの発生を追跡するのではなくて、各回だけでもイベントが大量に発生しているということである。1つの利点は、発生したイベントAの数を表す圧縮されているカウントRが、各イベントが数えられる場合よりは希に更新されるだけでよいということである。もう一つの利点は、2進計数方式では多数のイベントAを表すカウントRを維持するために、より少数のビットが必要とされるということである。圧縮されているカウントRを維持するための好ましい手法は、監視されるイベントが発生する毎に圧縮されているカウントRが更新される確率Pを確立することを含む。その結果として、圧縮されているカウントRは、平均で、1/P回の実際のイベント当たり1回の割合で更新される。この確率は、好ましくは、イベントが発生するシステムの動作から実際的であるくらい独立しているように選択されるので、圧縮されているカウントRを更新する頻度に対するシステム動作の影響が最小限となる。
【0007】
ここに記載される特定の例では、電子システムを操作する動作の一部分として発生する反復イベントの数を監視するためにこの手法が利用される。乱数発生器はイベントの数の圧縮されているカウントRが更新されるときを決定するために用いるのに好ましく、実際には擬似乱数発生器が普通使用される。イベントが発生するとき、好ましくはイベントが発生する毎に、乱数が発生される。該乱数のうちの1つは、好ましくは、次の順番の数にインクリメントさせるなどにより、圧縮されているカウントRを更新させるトリガとして選定される。これは、平均で、N回のイベント当たり1回の割合で発生するが、ここで、Nは、時間がたつに連れて乱数発生器により発生される別個の乱数の可能な総数である。イベントの各発生が数えられるのではなくて、圧縮されているカウントRは平均でN個のイベント当たり1回の割合で更新され、そのカウントは、平均で、発生したイベントの数の1/Nを表す。或いは、別の言い方をすれば、イベントのいずれか1つの発生が圧縮されているカウントRを更新させるという結果をもたらす確率は1/Nである。RとNとの積は、1/Pに比例するありそうな誤差の限界内で、もし必要ならば、実際のイベントの数Aを与え、それは、P=1/Nなので、Nが大きくなるに連れてありそうな誤差が大きくなることを言っている。
【0008】
これらの手法は、特にディジタル・メモリシステムに応用される。上述された従来の技術の欄に記載されている不揮発性フラッシュメモリ・システムの例では、消去/再プログラミング・イベント等のイベントの圧縮されているカウントRを更新する動作は比較的に希に行われればよいので、メモリの他の動作からより少しの時間を減じる。これは、ユーザデータ・プログラミング等の、その様な他の動作がより高速に行われるという結果をもたらす。また、各ブロックについてのカウントを蓄積するのに必要なビット数も顕著に少なくなる。さらに、イベントの各々の発生を数えなくても良いときはメモリシステムの動作の複雑さも減少する。
【0009】
フラッシュメモリで発生する消去および再プログラミング・サイクルの数の経験カウント(時には“ホット”カウントと呼ばれる)を維持するためのこの手法の応用では、数NはMの小部分であるように選択され、ここで、Mは、動作の能率が非常に悪かったり完全な故障の危険が生じたりする前にメモリセルが無事に経験し得る消去/再プログラミング・サイクルの最大数で表したメモリの予想寿命である。結果として生じる圧縮されているカウントRは、発生したイベントの数Aを正確に知ることを可能にしないけれども、その相対的正確さは、イベントの数Aが大きくなるに連れて、特にメモリ・ブロックの寿命の終わりMに近づくときに、高くなる。メモリの寿命にわたる最大の圧縮されているカウントRは、全ての消去イベントが数えられる場合のMではなくてM÷Nであるので、経験カウントに必要な記憶空間のバイト数は顕著に減少されることができる。圧縮されているカウントの更新は多数の消去イベントについて1回だけなので、メモリの全体としての性能が改善される。さらに、フラッシュ・メモリシステムは維持しデバッグしやすい。
【0010】
その様なイベントのうちの特定の1つが圧縮されているカウントを更新させる確率Pはメモリまたは他の電子システムのイベントが数えられる時間全体にわたって同じに保たれる必要はなくて、例えば、監視されているイベントの数Aの関数として変更されても良い。具体的には、実際のカウントの値Aが小さいときにフラッシュメモリの消去/再プログラミング・イベントのより正確な圧縮されているカウントRを維持したい場合には、確率Pは動作の始めには高く維持され、そしてメモリの寿命中に実際のカウントAが大きくなるに連れて小さくされる。特別の例として、圧縮されているカウントRが特定のブロックのメモリセルにそのプログラミングおよび/または消去中にかけられる電圧を制御するためにシステムにより使用されるときにはこれは特に有益であり、その理由は、それらの電圧が実際の経験カウントAのレベルが低いときにしばしば変更されることである。この能力は、個々のブロックについての圧縮されているカウントRを蓄積するためにより多くのビットを専用する必要を伴うことなく提供される。
【0011】
本発明の付加的な局面、特徴および利点は特定の代表的な実施形態についての以下の記述に包含されており、その記述は添付図面と関連して考慮されるべきである。
【0012】
【発明の実施の形態】
図1は、典型的な不揮発性メモリシステムの主要な構成要素のうちの幾つかの概略図である。コントローラ11は、ライン13を介してホスト・システムと通信する。コントローラ11は、それ自身の集積回路チップを占めることがあり、ライン15を介して1つ以上の不揮発性メモリと並列に通信し、1つのメモリ17が示されている。メモリ17は、メモリセルアレイおよび付随する周辺回路37を包含し、それらは、コントローラ・インタフェース39と共に、独立した集積回路チップ上に形成されることができる。
【0013】
ユーザデータは、この例ではライン15を介してコントローラ11とメモリ17との間で転送される。メモリ17は、該コントローラによりアドレス指定される。具体的には、ライン15内のデータバスは1バイト幅であって良い。図1に示されているメモリシステムは、ホストシステムの一部として埋め込まれるか、或いは上述したカード規格のうちの1つに従うカードなどのカードに入れられることができる。カードの場合、ライン13は、ホストシステム内の補足的ソケットと噛み合う該カード上の外部端子で終端する。1つのコントローラチップと複数のメモリチップとの使用が一般的であるけれども、もちろん、それらの回路を組み合わせることによりその様なシステムのためにより少数の別々のチップを使用するのが趨勢である。64メガバイトのデータ容量を有する不揮発性メモリシステムを形成するために、図示されているメモリ17の容量例は256Mbitであり、従ってその様なメモリチップを2つとコントローラチップとを必要とする。単一のより小さな容量のメモリチップを使用すると、より小容量のメモリシステムとなる。8メガバイト・システムが市場向きの例である。逆に、システムにおいてより高いビット蓄積密度および/またはより多数のメモリアレイ・チップを用いると、より大容量のメモリとなる。1.3ギガバイト以上に及ぶその様なメモリシステムが実際的である。
【0014】
コントローラ11は、コントローラ・インタフェース論理25を通して内部メモリと外部コンポーネントとのインタフェースとに接続されているマイクロプロセッサまたはマイクロコントローラ23を包含する。プログラムメモリ27は、接続されているメモリアレイからデータを読出してそのデータをホストに送り、データをホストからメモリアレイに書込み、そして他の多数の監視および制御機能を実行するようにメモリシステムの動作を制御するためにマイクロコントローラ23によりアクセスされるファームウェアおよびソフトウェアを蓄積する。メモリ27は、何らかの形の不揮発性メモリからのデータにより初期化される揮発性の再プログラミング可能なランダムアクセスメモリ(RAM)、再プログラミング可能ではない不揮発性メモリ(ROM)、ワンタイム・プログラマブル・メモリ(OTP)または再プログラミング可能なフラッシュEEPROMシステムであって良い。もしメモリ27が再プログラミング可能ならば、コントローラはホスト・システムがそれをプログラミングすることを可能にするように構成されることができる。ランダムアクセスメモリ(RAM)29は、とりわけ、読出しおよび書込み動作の間にアクセスされる不揮発性メモリから読出されるテーブルからのデータを蓄積するために使用される。
【0015】
論理回路31はホスト通信ライン13とインタフェースし、もう1つの論理回路33はライン15を介してメモリ・アレイとインタフェースする。もう1つのメモリ35は、ホスト・システムとメモリ17との間で転送されるユーザデータを一時的に蓄積するバッファとして使用される。コントローラ内のメモリは、オペレーティング・ファームウェアを蓄積するものを除いて、普通は揮発性であり、その理由は、高速アクセスおよび効率的コントローラ動作のために望ましい他の特性を有するメモリはその特性を有することである。数個の揮発性メモリは物理的に単一のメモリに便利にまとめられても良い。
【0016】
メモリ17の論理回路39は、ライン15を通してコントローラとインタフェースする。論理回路39の目的は、別々のバスおよび制御ラインを介して転送されるメモリセルアレイ37のための信号を作ることである。種々の制御信号がライン41で供給される。データバス45は不揮発性メモリにプログラミングされ或いは不揮発性メモリから読出されるユーザデータを伝え、アドレスバス47は、ユーザデータを読出し、ユーザデータを書込み或いはメモリセルのブロックを消去するためにアクセスされるメモリの部分のアドレスを伝える。電力制御回路43は、回路41に存する制御信号に応答して、ライン49を通してメモリセル・アレイ37を操作するために必要とされる種々の電圧および電流を供給する。ライン47に存するアドレスにより示されるセルのうちのいくつかをプログラミングし、読出し或いは消去するために適するメモリセルアレイ37のビットラインおよびゲートへの電圧が含まれる。
【0017】
1つの典型的なフラッシュメモリの実施形態では、該アレイのメモリセルは幾つかのブロックに分けられ、その各ブロックはメモリセルの最小の消去可能な単位であり、個々のブロック内の全てのセルが同時に消去可能である。一般に、数個のブロックが同時に消去され、メモリアレイへのデータのプログラミングは、始めに消去されたブロックで行われる。ありふれた例では、各ブロックは、512バイトのユーザデータに加えて、そのユーザデータに付随し且つ/または該オーバヘッドデータが蓄積されているメモリセルのブロックに付随する数バイトのオーバヘッドデータを保持する。その様なブロックは、1つの特定の現行の実施形態では、2列のメモリセルから形成される。もう1つの例では、各ブロックは、32768(64×512)バイトのユーザデータに加えてオーバヘッドデータを保持する。ユーザデータと同じブロックにオーバヘッドデータを蓄積する代わりとして、オーバヘッドデータの一部または全部を、その目的に専用される他のブロックに蓄積することができる。
【0018】
幾つかのフラッシュEEPROMシステムにおける現行のフラッシュメモリの各ブロックに付随するオーバーヘッド情報のアイテムのうちの1つは、そのブロックが経験した消去/再プログラミング・サイクルの数である。このブロック経験カウントは多くの目的のために役立ち、そのうちの主要なものが上述されている。該ブロックの消去または再プログラミングのうずれかのイベントを書き留めておくためにブロック経験カウントが更新されるとき、そのブロックについて不揮発性メモリに蓄積されている現行の経験カウントが最初に読出されて、一時メモリに普通はコントローラ内の不揮発性メモリに蓄積される。この読出されたカウントは、その後、カウントを1だけインクリメントするなどにより、後のイベントの発生を表すために更新され、そしてその更新されたカウントが次に不揮発性メモリブロックに書き戻される。これは、時間がかかり、従ってメモリシステムの性能に強い悪影響を及ぼすかなりの数の動作を必要とする。
【0019】
本発明の主要な実施形態では、経験カウントは、関連するブロックが消去され再プログラミングされる毎には更新されない。むしろ、圧縮されているカウントは、数えられている消去/再プログラミング・イベントの率と比例定数により関連させられる平均の率で比較的希に更新される。例えば、フラッシュメモリが約1,000,000消去/再プログラミング・サイクルの寿命を有し、圧縮されているカウントが約4000サイクルに1回だけ更新されるならば、更新プロセスは多数のサイクルの発生にわたってわずか1/4000の頻度で行われるに過ぎない。メモリの動作中に圧縮されている経験カウントを更新するために使用される時間の量は、経験カウントが各々のイベントにより更新されるときよりは顕著に少ない。さらに、維持されているカウントを蓄積するのに必要なビットの数は実際のカウントを維持するのに必要なそれよりは顕著に少ないので、カウントを維持するために不揮発性メモリにおいて占められるスペースは顕著に少ない。例えば、1,000,000サイクルの実際のカウントが維持されるならば、1から1,000,000までの各々の数を数えるために全てのブロックについて約3バイトが必要である。一方、平均して4000個当たり1つの割合でイベントが数えられるだけならば、最大カウントは約250であり、これは1バイトで維持されることができる。従って、この例では、オーバーヘッド記憶スペースの節約は1ブロック当たり2バイトである。
【0020】
ブロックが経験したイベントの実際の数の表示は、維持されているカウントにこの例では4000を乗じることによって常に利用可能であるが、コントローラメモリ27に蓄積されているメモリシステムのオペレーティング・ファームウェアは好ましくは圧縮されているカウントを個々のブロックの使用の表示として直接用いて動作する。不揮発性メモリ内でのまたは他の何らかの電子システムでの他の何らかのイベントの発生のカウントの監視を更新する頻度を減らすことにより、性能が改善したり記憶スペースの要件が減少したりするという利点が同じく得られる。
【0021】
圧縮されているカウントを維持する好ましい手法は一連の乱数を生成する動作を含み、その場合、新しい数は新しいイベントの各々に応答して発生され、圧縮されているカウントは、発生された乱数がそれらの数のうちの所定の選択された1つに等しいときに更新される。例えば、1〜4000までの乱数の発生器が使用され、イベントが発生する毎に新しい数が発生され、特定の数(例えば、2750)が、その数が発生したときに維持されているカウントを更新するように選択されるならば、圧縮されているカウントは乱数発生器の出力が2750に等しくなる毎に更新される。平均で、これは4000個のイベントにつき1回発生する。発生したイベントの数と圧縮されているカウントとの間には精密な関係はないけれども、特に多数のイベントが発生した後は、密接な相関関係がある。記述されている例の目的のためには、特に数十万のイベントが発生した後に、圧縮されているカウントの精度が充分であることが見出されている。メモリの個々のブロックが交換されなければならないときを決定するために、記述されているアプリケーションの例では、これは経験カウント情報が極めて有益となるときである。
【0022】
図2は、例として、図1の不揮発性メモリシステムで実施されるこのプロセスを概念的に示している。乱数発生器51は、インクリメント・パルスがライン53で加えられる毎に新しい乱数をライン52に出力する。該インクリメント・パルスは、ライン41に存するコマンドが消去動作を示しているときにライン49における電圧パルスの開始点で発生する。信号のこの結合はANDゲート54により特定されるように図示されている。ライン47におけるアドレスにより指示されるメモリ37の1つ以上のメモリセル・ブロック38が同時に消去されるのは、この様な消去電圧パルスの間である。1つの特定の実施形態では、16個のブロックが同時に消去される。一般に、単一の消去電圧パルスが加えられる。
【0023】
乱数発生器と関連する数の集合に包含される1つの数が、55により示されているようにシステム内の所定の場所に不揮発性に蓄積される。乱数発生器51により発生されたライン52に存する各々の新しい数は、比較器57により、メモリ55に蓄積されているのと比較される。その2つの数が一致すると、ライン59の信号は、現在消去されるブロックの各々について圧縮されているカウントRを更新させる。その比較が否定であれば(即ち、その2つの数が一致しないのであれば)、殆どの時間にそうであるけれども、その様な更新は行われない。この比較は、速度要件、柔軟性の必要およびコスト考慮事項により、論理ゲートを用いて、或いはソフトウェアで、或いはファームウェアで実施されることができる。
【0024】
一実施形態では、数個のユーザデータ・ブロックについて、指定ブロック61などの多数の指定されているブロックのうちの1つにおいてカウントが維持される。その様な指定ブロックについてのデータ構造の概要が図3に示されている。ユーザデータを蓄積する他の多数のブロックの各々について数バイトのオーバヘッド・データがその様なブロックで維持され、その数は種々のブロックの容量による。例えば、メモリセル・ブロック2についてのオーバヘッド(“OH”)データは、乱数発生器出力52と蓄積されている数55との一致が生じたときに更新される圧縮されているカウントのバイト63を包含する。
【0025】
もう一つの実施形態では、カウントは、独立の指定ブロック61で維持されるのではなくて、そのために該カウントが維持されているところのブロックの一部として蓄積される。例えば、図4を参照すると、圧縮されているカウントのバイト65はメモリセル・ブロック1についてのオーバヘッドデータ67の一部として蓄積され、該ブロック内のセルの大半はユーザデータを蓄積する。従って、数個のブロックが一緒に消去されるとき、各ブロックの圧縮されているカウントは、乱数52が消去動作のときに55のところに蓄積されているそれと一致するときに更新される。そのとき消去されない他のブロックの圧縮されているカウントに関しては何も行われない。
【0026】
さらに、もう一つの実施形態では、もっぱらカウントを蓄積し、他の種類のオーバヘッドデータを一切蓄積しないブロックにカウントは蓄積される。
【0027】
乱数発生器51は、多数の公知のハードウェアおよび/またはソフトウェア手法のうちのいずれかに従って実現されてもよい。しかし、特定の実施形態では、乱数発生器51の機能はメモリコントローラ11(図1)のマイクロコントローラ23によって実行される。マイクロコントローラ23は、一般的に消去パルスの持続時間中はアイドルであるので、その様なパルスの間は新しい乱数52を発生してその数を所定の数55と比較して一致が存在するか否かを判定する機能を実行するために使用されることができる。標準的なシフトおよび排他的ORアルゴリズムが使用され、そのアルゴリズムでは32ビット値がコントローラRAM29に蓄積され、12ビット乱(実際にはこの手法では擬似乱)数が各消去コマンドに応答してそれからライン52に生成される。12ビット乱数は4096個の異なる可能な結合を提供する。メモリの寿命が約百万サイクルであるならば、イベントの実際の数を表す圧縮されているカウントを1バイトが蓄積することになる。各消去イベントの発生時に、発生された乱数52が55に蓄積されている数と一致する確率Pは4096に1つである。
【0028】
より詳細には、乱数発生器は、コントローラRAM29(図1)に形成されている32ビットのシフトレジスタを使用する。全ての新しい乱数は、該シフトレジスタの第2および第3の最下位ビットに対して排他的OR演算を繰り返し実行し、その結果としてのビットを該シフトレジスタの32ビットの全てのシフト動作中に該シフトレジスタの最上位ビットに送ることによって、発生される。新しい16ビット乱数を発生するためには、この操作は16回繰り返される。そのとき、該シフトレジスタの16個の最下位ビットのうちの4個の最上位ビットは、該シフトレジスタの16個の最下位ビットと16進数0FFFh(2進形式では0000 1111 1111 1111)とのAND演算を実行することによってマスクされる。そこで該シフトレジスタの12個の最下位ビットが000h(2進形式では0000 0000 0000)になる毎に該論理AND演算の出力は1となり、その様なときには圧縮されているカウントRがインクリメントされるという意味でヒット(一致)がある。該シフトレジスタの32ビットの全てが全く同じにゼロになったならば、それ以降に発生される後の乱数も全てゼロになる。そこで、もしそうなったならば、乱数発生器は再シード(re−seed) される。
【0029】
上で具体的に記述された乱数発生器51以外の何らかの手段で確率Pを作ることができることが注目されよう。例として、システム雑音、シングル・エレクトロン装置におけるトンネル事象、一定時間内の放射性崩壊、および何らかのハードウェア、ファームウェアまたはソフトウェア装置でランダムに発生する他のイベントを使用することが含まれる。乱数発生器51を初期化するシードを発達させるのに使用される他の適当な乱数発生手法が以下に追加的に記述される。
【0030】
メモリシステムが無給電状態からパワーアップされた結果として初期化されると、乱数発生器51はプロセスを開始するために初期値にセットされなければならない。これは、ライン75の初期化信号によってトリガされて、初期値シード73を乱数発生器51に供給するシードソース71により実行される。
【0031】
使用することのできる代わりのシードソースは多数ある。1つは、初期化前のメモリシステム動作中の乱数発生器51の最後の値52を不揮発性に蓄積することである。乱数発生器51はその後、その蓄積された数から開始させられる。けれどもシードとして乱数または相関性のない数のソースを用いてもうまくゆく。タイムレコーダを含むシステムでは、作られる時間は数の疑似ランダムな系列であり、初期化時に存在する数は乱数発生器51のためのシードとして使用される。代わりに、乱数発生器51と同じまたは異なる設計の第2の乱数発生器を使用してシードを選択してもよい。上で具体的に記述された乱数発生器については、再シード(re−seeding)はシフトレジスタの32ビットを全て初期化する動作を含む。
【0032】
シードを発生するためのもう一つの代わりの手法は、通常の方法で読むことのできるメモリのブロックのユーザデータを読出すことを伴う。しかし、高度のランダム性を確実にするために、そのデータが初期化と初期化との間で変化しないならば、その読出しは、特定の一実施形態では、データを読出すために通常使用される量を遙かに上回る量だけ離れている限界しきい値レベルで実行される。これは、読み取り値が限界に近い結果として、そのデータを読出すときに多数のエラーが発生して、好ましくは同じデータのうちの少なくとも一部が異なるときに別様に読まれることを確実にすることを意図している。シードのランダム性をさらに高めるために、この意図的に間違って読出されたデータから第2のブロックのアドレスを作ることができ、その第2ブロックのデータは該データを同じく間違って読出しそうな方法で読出される。ランダム性をさらに確実にしたいならば、これをもう幾つかのサイクルにわたって継続することができる。
【0033】
上述したように、一致が発生する確率Pがメモリ・システムの寿命の全体にわたって同じままであるということが仮定されている。しかし、変化する何らかの関連条件または発生する関連イベントに応答するなど、何らかの方法で確率Pを変更することが望まれるアプリケーションもあり得る。発生器51からの乱数52の各々と比較される記憶装置55内の所定の数の個数を変更することによって、その確率を希望に応じて変更することができる。記憶装置55内の1個、2個、或いはもっと多くの所定の数のいずれかと発生した乱数との一致が発生する毎に、圧縮されているカウントが更新される。発生器51の乱数出力と比較されるために利用可能にされる記憶装置55内の所定の数の個数が変更されるに連れて、任意の与えられた乱数について一致が発生する確率Pが変更される。
【0034】
確率を変更するために比較される蓄積されている所定の数の個数を変更する代わりに、ディジタルシステムでは、記憶装置55内の単一の数と、個々の乱数との比較されるビットの数を変更することができる。例えば、乱数発生器51の乱数出力52が12ビットで、55に蓄積されている所定の数も12ビットであれば、一致の最低の確率(4096に1つ)は12ビット全ての明確な比較が必要であるときに生じる。しかし、もう一つの例として、各々の数の同じ箇所に存する2つのビットだけが比較されるならば、各々の比較の結果として一致が生じる確率は遙かに大きくなる(4つに1つ)。このことは、実際上、乱数発生器により発生され得るいろいろな乱数の総数を変化させ、そしてその様にして、どれか1つの乱数が所定の数と一致する確率を変化させる。比較される2つの数のビットの数は、従って、可能な乱数の総数は、ユーザの選択に応じてファームウェアまたはソフトウェアの制御下で容易に変更され、或いはメモリシステムの他の何らかの条件またはイベントにおいて変化が検出されたことに応答して自動的に変更される。
【0035】
フラッシュメモリシステムにおいて一致が発生する確率を変更する1つの具体的なアプリケーションについて、図5のフローチャートに関連して説明する。この操作方法は、実際のカウントAの比較的に低い数に普通は対応するRの低い数で、比較的に高い数の場合よりは頻繁に、圧縮されているカウントRをインクリメントし、その結果として比較的に低い数において圧縮されているカウントRは実際のカウントAをより精密に表す。この様にして低い数での圧縮されているカウントRの解像度が改善される。最初はRの低い値においてPの高い値を使用し、そしてRの高い値でPの低い値(これは1/4096より低くなることができ、実際には1/32768の低さになることができる)へと進むことによって、圧縮されているカウントRを蓄積するのに必要なビット数を増やすことなく、これを達成することができる。このアプローチを使用することにより、0から255までの整数Rが高いカウント範囲では百万の高さのカウントを表し、低いカウント範囲では1桁の低さの数を表すことができる。ここに記載されている特定のフラッシュEEPROMシステムの例では、同じビット数の予め指定された数と比較される2進形式の乱数の総数は、消去される各ブロックの圧縮されているカウントRの値の関数であるように指定されることができる。
【0036】
この特徴を例証する図5〜8に関して記述される具体的な例では、発生器51(図2)により発生される乱数52と蓄積されている所定の数55との両方が各々長さ16ビットである。圧縮されているカウントRの値により、各々の異なる数のビットが比較器57によって比較される。圧縮されているカウントRの値が比較的に低いときには、比較的に高い(その場合、一致が発生する確率が比較的に低い)ときよりも少ない数のビットが比較される(従って、一致が発生する確率が比較的に高い)。圧縮されているカウントRは1バイトで蓄積され、0〜255の範囲を有する。
【0037】
図5を参照すると、プロセスの概要における第1ステップ71は、消去動作が実行されるときを決定する。これが起こったとき、ステップ73において、乱数発生器51は乱数52(図7も参照)を発生させられる。次のステップ75で、消去されるべく現在のアドレス指定されているブロックについての圧縮されているカウントRがその不揮発性記録61から読出される。このことは、図2に示されてはいないけれども、好ましくは上述されているように図2に示されている処理も実行するマイクロコントローラ23(図1)により実行されると理解されよう。図6に示されているようなテーブルが、次のステップ77で使用されるべく該コントローラの不揮発性メモリに蓄積されている。このテーブルにより表される論理は、ハードウェア、ファームウェア、またはソフトウェアで実現されることができる。
【0038】
比較されるべき数52および55のビットの個数(図7)は、図6のテーブルの左側コラムで消去される各々のブロックについて読出された圧縮されているカウントRを探し、その中央コラムで比較されるべきビットの個数を読出すことによって決定される。図6の右側コラムは、この説明のための情報として、比較された数52および55のビット間で一致が生じる確率Pを与えている。Rの最低値0〜15についてはどのビットも比較されないことに注意するべきであり、その理由は、それらがAの実際のカウント値0〜15のそれぞれに等しいことである。従って、そのRが15以下であるブロックについて消去イベントが発生する毎に、そのRは1だけインクリメントされる。しかし、Rが16〜31の中にある次の範囲の中では、数52および55の各々の同じビット位置にあるビット79および81などの各数の1ビットが比較される。従って、各々の場合に一致が生じる0.5の確率がある。Rの次の範囲32〜47では、数52のビット79および83と数55のビット81および85などの2ビットが比較され、その結果として、いずれの場合にも一致が発生する確率は0.25となる。圧縮されているカウントRがその最高の範囲240〜255まで増えてゆくとき、16ビットのうちの15個が比較され、その結果として、任意の1つの比較から16ビットのうちの15個の一致が生じる非常に低い確率(32768に1つ)がもたらされる。
【0039】
数52および55のビットの数が図6のテーブルで調べられ、次に比較がステップ87(図5)で行われる。次のステップ89は、個別ブロック・ベースで一致があるかないかを決定する。もしそうならば、ステップ75で読出されたアドレス指定されているブロックの中でその一致を満たしたそれらの個々のブロックのみの圧縮されているカウントRがステップ91で1だけインクリメントされる。消去されるブロックのグループのうちのどのブロックも一致を生じさせなければ、消去されるそのブロックに関しては該プロセスは終了し、ステップ71は他の消去コマンドの受領を待つ。
【0040】
記述されている例は種々の数のインクリメントを含んでいるけれども、代わりに1つ以上を高い値から低い値へとデクリメントしてもよい。必要なときに意味のある値を読出せるようにRが更新される限りは、数52および55の間の肯定的比較という事実を記録するために圧縮されているカウントRをどの様に更新するか、例えば、その度に1以上インクリメントすることにより、その度に1以上デクリメントすることにより、或いは他の何らかの手法により更新するかは、普通は重要ではない。
【0041】
図8に示されているそのようなテーブルも、Aの見積もりを知らなければならない場合に圧縮されているカウントRを実際のカウントAに関連させるために故障解析エンジニアにより使用されるソフトウェア・パッケージの一部として随意に包含される。(殆どの場合に、カウントAとそれとの関係は既知であるので、メモリシステム・ファームウェアはカウントR自体から動作することができる。)左側コラムの圧縮されているカウントRの値の第1のグループ93については、中央のコラムに示されている実際のカウントAと同じである。右側コラムに呈示されているRとAとの間のエラーの統計的標準偏差は、このグループについてはゼロである。図6のテーブルの第2行に対応する図8のテーブルの次のグループ95では、Rの値はAの値と等しくない。むしろ、このグループの各RカウントはAの各2回の発生につき約1回インクリメントされるので、Aの値は、おおよそ、第1のグループ93の一番上の値である15に左側コラムのカウントRの15を超過している数の2倍を加えたものである。同様に、図6のテーブルの第3行に対応する次のグループ97内の任意の与えられたRの値についてのAの値は、最後のグループ95内のRの一番上の値31についてのAの値に前のグループ95の一番上のカウント31を超過しているRのカウントのおおよそ4倍を加えたものである。この関係はカウントRの可能な値の全てを通じて存続する。
【0042】
前のグループ93,95,97等により表されるRの異なる範囲で確率値が異なっていることの効果の組み合わせの寄与がますます増加するので、特にRの値が大きくなるとき、カウントRとAとの関係は普通は上記で概略的に決定されている関係ではない。その結果として、図8のテーブルの中央のコラムは余分の未知項xを含んでいる。x項を含む数学的モデルによりRとAとの関係を近似することはできるけれども、普通は図8のテーブルの中央コラムに存する各々の与えられたRについてAの期待値(即ち、平均値)を経験的に作るのが好ましい。このプロセスが実行されるメモリシステムは、ゼロからそのタイプのメモリが経験すると期待される最大数にまでわたる、実際のまたはシミュレートされた数個の消去イベントに少なくとも1グループのブロックをさらすことによって最も良く操作される。消去サイクルのシステムにより維持される圧縮されているカウントRと実際のカウントAとの両方が該試験の間監視される。後者は図8の中央コラムの値を与える。実際のメモリシステムを使用して圧縮されているカウントRに対応する実際のカウントAを作ることにより、システムおよびプロセスの乱数発生器51および他の部分の種々の欠点が考慮される。その様な要素を全て正確に数学的にモデリングすることは困難である。
【0043】
図8の右側コラムのエラー数も、それを含むことが望まれるときには、その様な経験的手法により最も良く決定される。カウントRおよびAは数個のメモリ・ブロックの多数のサイクルの間維持され、異なるブロック間の差は、その様な差の母集団の標準偏差によるなどの何らかの方法で統計的に表される。このコラムは、所望の精度と、該カウントを蓄積しておくのに必要な所要記憶スペースとの間の種々のかね合いと、該メモリシステムのユーザによる診断とを査定する目的のために有益であり得るけれども、システムの動作中、普通はコントローラ11によって使用されない。
【0044】
ここに記載されている例は、フラッシュEEPROMシステムのブロックが経験する消去/書き直しサイクルの数のカウントを維持するためのものであるけれども、特にメモリセルの各々のブロックまたはブロックのグループについて一つのイベントの独立のカウントが維持されるときには、これらの手法はその様なシステムで他のイベントを数えるのに同様の利点を持って応用されることもできる。一例は、個々のブロックが限界走査データ復元手法にさらされる回数を、それらのブロックに伴う問題の指標として数えることである。もう一つの例は、他の読むことのできないセクタのユーザデータを復元するために誤り訂正符号(ECC)が実際に行われた回数を数えることである。もう一つは、時間の経過と共に発生した障害を補償するために、ブロック中のデータをスクラビングによって適切なマージンレベルまでリフレッシュさせる必要が発生した回数を追跡することである。これらのおよびその他の状況において、ブロック、サブブロック(セクタ)、またはブロックのグループで生じるその様なイベントの数が大きいと、それらに何らかの問題があることを意味する。この情報は、該ブロック、サブブロック、または問題のあるブロックのグループを取り替え、或いは他の何らかの修正処置をとるためにメモリコントローラによって使用されることができる。
【0045】
さらに、上述した計数手法は、フラッシュEEPROMまたは他の不揮発性メモリシステムに対する使用に限定されない。これらの手法は、動作の過程で或いはシステムの使用により発生する1つ以上のイベントを数え続けることが必要であるかまたは望ましい任意の電子システムに応用される。
【0046】
本発明の種々の局面は特定の代表的な実施形態に関して説明してきたけれども、本発明が添付されている請求項の最大の範囲内で保護を受ける権利が与えられることが理解されよう。
【0047】
以下に記載するのは、付属の説明書である。
【0048】
付属の説明書
新しい圧縮確率的整数イベントカウンタ方式
このアイデアは一定のイベントが発生した回数の記録を取っておかなければならないどの様な状況にも応用可能である。イベントが発生した回数を追跡する普通の方法は、イベントが発生する毎にインクリメントされるカウンタを工夫することである。イベントが発生し得る最大の回数がM回であるならば、この情報を蓄積するために該カウンタはN=log2 Mビットを必要とする。そこで、例を挙げると、百万までのイベントを追跡したいならば、このカウントの蓄積のために20ビット≒3バイトを専用せざるを得ない。20ビット=2.5バイト=20ビットであり、220=1048576であることに注意されたい。今、その様なイベントカウンタが多数必要であるならば、全てのカウンタを蓄積するのに必要なメモリの全体は相当になり得る。セクタ当たり1つのカウンタを基礎としてフラッシュメモリでホットカウントを実施することになるときは、正にそうである。また、セクタがプログラミングまたは消去される毎に各セクタのホットカウントを更新することは、メモリの動作速度と、各セクタのホットカウントの頻繁な更新により生じる損耗との両方に関して重荷になり得る。ホットカウントを包含している各々の512バイトのセクタは、そのセクタがサイクル(プログラミングおよび消去)された回数を蓄積するために3バイトを余分に必要としている。
【0049】
一定のインクリメント確率を用いる簡単なアプローチ
この新しいアイデアは、セクタ当たりホットカウント3バイトをセクタ当たりホットカウント1バイトに圧縮することを可能にする。正確さを諦めることを厭わないのであれば、新しいホットカウント方式は、その最も簡単な形では、次の通りである。12ビット擬似乱数発生器を用いて、確率p(この場合は、p=1/4096=0.0002441)を作ることができる。この確率を発生する1つの方法は、セクタがプログラミングまたは消去される毎にランダム12ビット2進整数を作ることによる。この12ビットの整数が特定の12ビットの整数(例えば、101111010001)と一致した場合に限って、書かれかけているセクタに対応するカウンタがインクリメントされる。212=4096であることに注意されたい。セクタがプログラミングされる毎に、そのセクタのカウンタが整数値1だけインクリメントされる確率Pがある。平均で、どの4096個のプログラミング・イベントも皆、カウンタを1回インクリメントする。
【0050】
与えられたセクタがプログラミングされた実際の回数である実際のカウントAと、このカウントの、Aよりおよそ4096倍小さい表示Rとを区別しなければならない。記録して追跡するのはR=rである。与えられた任意の時におけるRの値はAの値=aを正確には決定しないが、Aの値の概算の見積もりを与える。Rが小さいときにはRはAの非常にまずい指標であるが、Rが大きくなるに連れてRは相対的な意味でAの正確な指標となってゆく。ここで“R”および“A”はランダム変数を表し、“r”および“a”はこれらのランダム変数がとることのできる一定の整数値を表す。
【0051】
RがインクリメントされるイベントとしてEを定義することができる。すると、確率(E)=Pr(E)=p、そして確率(notE)=Pr(/E)=1−pであり、“r”=“a”回のトライアルでEが発生する回数=下記の二項分布により与えられる確率密度関数f(r|a)を有するランダム変数である。
Pr(R=r|A=a)=f(r|a)=(a!/(r!(a−r)!))pr (1−p)(a−r)
{Rの平均値}=Exp(R)=a・p、そして
{Rの標準偏差}=SD(R)=√[a・p・(1−p)]
上記式は二項分布においてよく知られている。このホットカウント方式の目的のために、Rの何らかの既知の値が与えられたときのAの期待値と、Rの何らかの既知の値が与えられたときのAの標準偏差とを知らなければならない。その理由は、何時でもRの値だけが蓄積されていて検索されることができ、Aの正確な値についての知識は全く保持されていないことである。
【0052】
Exp(A|R=r)=r/pと書いてもいいように思われる。確かにこれは正しいかも知れないが、Pr(R=r|A=a)=f(a|r)についての式を引き出すためにベイズの定理を用いる必要がある。この時、この確率密度関数を用いてExp(A|R=r)とSD(A|R)とを計算することができる。ベイズの定理は次のように述べている。
上の方程式の右辺の分母は、下記の恒等式を用いて書き直すことができる。
ここで、実際のカウントAは表示Rより決して小さくはないことが分かっており(従って、合計はrから始まる)、そして実際のカウントAが何らかの大きな数M(例えば、M=1000000またはM=10000000)より決して大きくはならないことを仮定する。従って、{A=r,A=r+1,A=r+2,…,A=M}はパーティションを形成する。また、条件付き確率の定義により、
である。このような場合にはランダム変数Aは一様に分布すると仮定しても差し支えないと述べている“ベイズの見積もりについての一様分布の許容性(The Admissibility of Uniform Distribution for Bayesian Estimates)”と呼ばれる統計の理論がある。換言すると、もし実際のカウントがMより決して大きくならず、表示Rの値が分からなければ、何らかのランダムな時点でAの値は0からMまでのどの様な整数である可能性もあり、各整数値は他のどれとも同じ可能性を有する。従って、Pr(A=s)=定数=(1/(M+1))であり、この定数を下記の合計、
から引き出すことができ、そして、Aは一様に分布しているのでsの任意の値およびaの任意の値についてPr(A=s)=Pr(A=a)であることが分かり、
である。上記式から明らかなように、p=一定であるこの簡単な例でも、計算にはコンピュータ・プログラムが必要である。しかし、ウォルドの等式(ジョン・ワイリー&サンズからのシェルドン M.ロス(Sheldon M. Ross, John Wiley & Sons)による書籍「確率的過程」(STOCHASTIC PROCESSES)(1983年)第59ページを参照)を用いて次式、Exp(A|R=r)=Exp(R|A=a)/p=r/pに容易に到達することができる。従って、p=1/4096の場合には、Exp(A|R=r)=4095・rである。
【0053】
Rの何らかの値=rが与えられたときにAの期待値および標準偏差の両方を計算するもう一つの方法は、モンテカルロ・シミュレーションを実行することによる。これらのシミュレーションは、次のセクションで論じられる“r依存p値アルゴリズム”などのもっと複雑なアルゴリズムが採用されるときに特に有益である。どの様な乱数発生方式でも実際は完全に一様ではないかも知れない分布で擬似乱数を発生するので、モンテカルロ・シミュレーションを実行するための最良の場は、生産が始まるであろう同じプロセッサおよびファームウェアからなる。この様にして、乱数発生方式の欠陥も該シミュレーションに取り込まれることになる。
【0054】
この簡単な場合についてのモンテカルロ・シミュレーションは2段階から成る。第1段階は2つのループから成り、一方のループは他方のループに組み重ねられている。内側のループは各パス毎に実際のカウント“a”を1だけインクリメントする。また、整数“a”がインクリメントされる毎に、12ビットのランダム2進整数bが作られ、この整数が101111010001に等しくなったときに限って、表示“r”がインクリメントされる。上で論じられているように、その様な一致の確率は4096に1つである。外側ループの中で、且つ内側ループの外側では、“a”および“r”は共にゼロにセットされることに注意されたい。このことは、全てのトライアルがa=0で且つr=0からスタートすることを可能にする。内側ループはr<256である限り反復される。平均して内側ループは百万回実行される。内側ループは、1つのセクタがおよそ百万回サイクルされるとき(rが25510=111111112 で飽和するまで)に該セクタのホットカウントに起こることをシミュレートする。これは単一のトライアルと称されてよい。一方、外側ループは多数のトライアルをシミュレートする。外側ループは、多数のトライアルの統計的に重要なサンプルを作るために10000回実行されることができる。第1段階中に蓄積されなければならないデータを最小限度にするためには、“r”のインクリメントに対応する“a”の値を記録するだけでよい。“r”の固定されている各値に1つのファイルを専用とすることができる。そこで、例えば、r123.outという名称のファイルは、10000回のトライアルにわたって“r”がちょうど123になったときの“a”の値である10000個の整数を含む。255個の出力ファイルを作る。段階2では、“r”の255個のゼロでない値の各々について平均値と標準偏差とを得るためにその255個の出力ファイルの各々が処理される。
【0055】
インクリメントの可変確率値を使用するもっと複雑なアプローチ
(R=rが与えられたときのAの期待値)に対する(R=rが与えられたときのAの標準偏差)の比を“r”の種々の値について大体一定に保つために、もっと複雑なアルゴリズムを採用することができる。これは、“r”の値についての知識に基づいて“a”の値の相対的不確定性を制限するので、有益である。この新しい方式では、“r”がインクリメントされる確率“p”は、“r”の現在の値に関連する。
0≦r<16 ならば、 p=1/20 =1.0
16≦r<32 ならば、 p=1/21 =1/2=0.5
32≦r<48 ならば、 p=1/22 =1/4=0.25
48≦r<64 ならば、 p=1/23 =1/8=0.125
…
…
…
240≦r<256 ならば、 p=1/215=1/32768
=0.0000305
“r”は2進形式で00000000から11111111までの単純なカウントとして表されることができ、十進法の同等物は0から255までである。ヘックスでは、“r”の値は00hからFFhまでにわたることができる。“r”の256の異なる値の各々についてAの平均値とAの標準偏差とを与えるテーブルがホットカウント“r”のどのユーザにも提供される。代わりに、後述されるように、“r”は4ビットの仮数および4ビットの指数の形で表されることができる。しかし、この後者の表示は、いくら良く見ても扱いにくい。
【0056】
この方式のためのモンテカルロ・シミュレーションは上述された簡単な方式に非常に良く似ているが、上述されたように、今は“p”の値は“r”の現在の値によるという点が違っている。
【0057】
特定のメモリのための新しいホットカウントおよびカウンタ方式
各ページ(64セクタ)は、そのページ自体の外で、他のページ内のテーブルに蓄積される単一の1バイトの長さのホットカウントを有する。該ホットカウントは、該カウントがインクリメントされる必要があると決定される毎にコントローラRAMで更新される。ページが消去される毎に、対応するホットカウントをインクリメントするかしないかが決定される。この方式では、ホットカウントをインクリメントする機会は該カウントの現在の値におよそ逆比例する。
【0058】
ホットカウントを包含するテーブルは、約5000ページのホットカウントを包含するために約5000バイトを持たなければならないであろう。230=1Gbitであると仮定すると、4096ページは1Gbitのユーザ容量を有する必要がある。わずか10個のセクタから成るテーブルがチップ全体のホットカウントを包含することができよう。このテーブルのその後の各バイトは次の物理的ページのホットカウントに対応する。数ページが書かれるとき、パーティション境界に遭遇するまで該RAMでホットカウントが更新されることができ、そのポイントで該パーティションに対応するホットカウントテーブルを包含するセクタが1発で更新される。その各々が同じパーティションに属する単一のページのホットカウントである64個のバイトから成るものとしてホットカウントテーブルを定義することができる。1つのホットカウントテーブルが2つのセクタにまたがって分割されることはない(即ち、各“ホットカウントテーブル・セクタ”は8個の“ホットカウントテーブル”全体を包含する)。
【0059】
読出しまたは書込みの動作がパーティション境界を横切る毎に、1つのホットカウントテーブル・セクタが更新され、そして損耗平等化、スクラビング、および退去活動が実行され得るように全てのホットカウントテーブル・セクタが読出されて処理される。ホットカウントバイトの論理的順序は対応するページの物理的順序を表す。また、ホットカウントテーブルの論理的順序は対応するパーティションの物理的順序を表す。
【0060】
ホットカウントセクタの更新は普通は消去さえ必要とはしないが、その理由は、他のどのセクタの場合とも同じく、セクタの更新は該セクタ・データを前もって消去されている新しいセクタに書込み、そして該データの最新のバージョンが存する場所を反映するようにマップを更新することだけを必要とするに過ぎないことである。1つのパーティションは64ページから成るので、パーティションに対応するホットカウントはわずか64バイトである。この方式では、各ページの1バイト・ホットカウントは百万サイクルの間にわずか256回インクリメントされるだけである。そこで、たとえ各ページのホットカウントが更新され次第直ぐにインクリメントされ、512ページのホットカウントを包含するセクタがあちこちに移されないとしても、ホットカウントテーブル・セクタは512*256=131072回更新されることになる。このことは、これら512ページのうちのどのページも百万回サイクルされているということを仮定している。もしユーザセクタが百万サイクルに耐えられるならば、ホットカウントセクタも131000サイクルに耐えることができる。
【0061】
ホットカウント方式
各ページに対応する8ビットのカウントは4ビットの仮数Mおよび4ビットの指数Eから成る。そこで、ホットカウントが01010010であれば、M=01012 =510であり、E=00102 =210である。この例では指数は210であるので、有効仮数Nを作るために補正項A=11002 を仮数に加えなければならず、ここで、N=N(E)、およびA=A(E)はEの関数である。実際のホットカウントは基底10で、N(E)10 *210 **E10=[M+A(E)]*(2**E)である。或いは、ホットカウントは基底2で、N(E)*(10)**Eである。0から15までのカウントでは、ページの全ての消去がホットカウントを100%の確かさでインクリメントする。16から46までのカウントでは、全ての消去がホットカウントをインクリメントする50%の見込みを有する。
【0062】
一般にインクリメントする確率pは、p=1/(2**E)により与えられるEの関数である。
下記はA(E)の値である。
A(0000)=0000,
A(0001)=1000,
A(0010)=1100,
A(0011)=1110,
A(0100)=1111,
A(0101)=1111,
A(0110)=1111,
A(0111)=1111,
…
A(1111)=1111
可能な最大の数Lは、M=1111、およびE=1111により与えられる。
L=(1111+1111)*((10)**(1111)=101579210最小のpは1/32768である。
【0063】
カウンタの活動のカウントにもこの同じ方法を応用することができる。この方式の詳細については添付されているエクセル・ワークシートを参照されたい。サイクルされるセルは、多数回サイクルされているときには寿命の始めの頃と比べてゆっくりと老化するので、この比例ホットカウントは損耗平等化および退去目的の両方のために充分な分解能を有するであろう。
【図面の簡単な説明】
【図1】
本発明のイベント監視を取り入れたメモリ・システムの略ブロック図である。
【図2】
その中で発生するイベントの圧縮されているカウントを維持する図1のメモリシステムの動作を概念的に説明するブロック図である。
【図3】
図2に示されている手法に従うイベントの圧縮されているカウントの図1のメモリシステム内での不揮発性蓄積の1つの形を説明する。
【図4】
図2に示されている手法に従うイベントの圧縮されているカウントの図1のメモリシステム内での不揮発性蓄積のもう1つの形を説明する。
【図5】
図2に従う図1のメモリ・システムの動作の特定の例のフローチャートである。
【図6】
図5の動作例と共に使用されるテーブルである。
【図7】
図5の例で使用される2つの2進数の比較を示す。
【図8】
図5の例で使用されるもう1つのテーブルである。
Claims (9)
- 電子システムの動作中に繰り返されるイベントの発生の数の圧縮されているカウントを維持する方法であって、
前記システムイベントの個々の発生に応答して、発生するランダムなまたは擬似ランダムな確率Pを有するもう一つのイベントが発生したか否か判定し、
ランダムにまたは擬似ランダムに発生する該イベントが発生した場合に前記システムイベントの発生の数の圧縮されているカウントを更新すること、
を含む方法。 - 電子システムの動作中に繰り返されるイベントの発生の数の圧縮されているカウントを維持する方法であって、
該イベントの個々の発生時に乱数を作り、
作られた乱数が少なくとも1つの所定値と一致するときを判定し、
作られた乱数が前記少なくとも1つの所定値と一致することに応答して、該電子システム内での該イベントの発生の数の圧縮されているカウントを更新すること、
を含む方法。 - 前記少なくとも1つの所定値は、作られる可能性のある乱数のN個の別々の値のうちの1つであり、該電子システムにおいて最大の期待数Mのイベントが発生することが許容され、該圧縮されているカウントは少なくともM÷Nに等しい数まで維持可能であることを特徴とする請求項2記載の方法。
- 該電子システムの初期化の時に、第2乱数発生器により作られた数で乱数発生器をシーディングすることをさらに含む請求項2記載のの方法。
- 作られた乱数が前記少なくとも1つの所定値と一致するときを判定することは、前記イベントの累積数が大きくなるに連れて作られた個々の乱数について一致が発生する確率を減少させるために、累積的に発生した前記イベントの数を考慮に入れること特徴とする請求項2記載の方法。
- 該方法は不揮発性フラッシュメモリを含む電子システムで実行され、繰り返される該イベントは該フラッシュメモリのアドレス指定された部分の消去を含む請求項2〜5のいずれか記載の方法。
- 該乱数を作ること、およびその作られた乱数が前記少なくとも1つの所定値と等しいときを判定することとは、両方とも、該フラッシュメモリシステムの前記アドレス指定された部分に個々の消去電圧パルスが加えられている間に行われること特徴とする請求項6記載の方法。
- フラッシュEEPROMシステムであって、該システムは、不揮発性メモリセルの複数のブロックであって、その個々のブロック内のセルは同時に消去可能である複数のブロックと、
メモリセルのアドレス指定されたブロックへのデータのプログラミングと、メモリセルのアドレス指定されたブロックからのデータの読出しと、メモリセルのアドレス指定されたブロックのうちの1つ以上からのデータの同時消去とを制御するマイクロプロセッサとを含むコントローラと、
個々の該メモリセル・ブロックと関連するカウントを維持するメモリセルの該複数のブロックの中に設けられた記憶装置と、
アドレス指定されたブロックのうちの1つ以上が消去されたことに応答して数をランダムに発生する数発生器と、
乱数発生器により作られる可能な数のうちの所定の少なくとも1つと作られた乱数とが一致するときに、消去される1つ以上のアドレス指定されたブロックと関連するカウントのうちの少なくとも1つを更新させる比較器と、
を含むシステム。 - その数発生器は、制御された総数の可能な異なる乱数のうちの1つを発生することを特徴としており、可能な異なる乱数の前記総数は、消去される1つ以上のアドレス指定されたブロックと関連するカウントのうちの前記少なくとも1つにより制御されることを特徴とする請求項8記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/662,032 US6345001B1 (en) | 2000-09-14 | 2000-09-14 | Compressed event counting technique and application to a flash memory system |
PCT/US2001/027703 WO2002023552A2 (en) | 2000-09-14 | 2001-09-06 | Compressed event counting technique and application to a flash memory system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004509404A true JP2004509404A (ja) | 2004-03-25 |
Family
ID=24656097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002527511A Pending JP2004509404A (ja) | 2000-09-14 | 2001-09-06 | 圧縮イベント計数手法およびフラッシュメモリシステムへの応用 |
Country Status (9)
Country | Link |
---|---|
US (3) | US6345001B1 (ja) |
EP (1) | EP1317756B1 (ja) |
JP (1) | JP2004509404A (ja) |
KR (1) | KR100782297B1 (ja) |
CN (1) | CN100580800C (ja) |
AU (1) | AU2001288844A1 (ja) |
DE (1) | DE60131549T2 (ja) |
TW (1) | TW525177B (ja) |
WO (1) | WO2002023552A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010186477A (ja) * | 2009-02-10 | 2010-08-26 | Samsung Electronics Co Ltd | メモリシステム及びその磨耗度管理方法 |
JP2012522328A (ja) * | 2009-12-16 | 2012-09-20 | インテル コーポレイション | アンチヒューズ型プログラマブルメモリアレイ |
Families Citing this family (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5657332A (en) * | 1992-05-20 | 1997-08-12 | Sandisk Corporation | Soft errors handling in EEPROM devices |
US6426893B1 (en) | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US7113432B2 (en) * | 2000-09-14 | 2006-09-26 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
US6851000B2 (en) * | 2000-10-03 | 2005-02-01 | Broadcom Corporation | Switch having flow control management |
US6957202B2 (en) * | 2001-05-26 | 2005-10-18 | Hewlett-Packard Development Company L.P. | Model selection for decision support systems |
US6732221B2 (en) * | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
US6717847B2 (en) * | 2001-09-17 | 2004-04-06 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
US7554842B2 (en) * | 2001-09-17 | 2009-06-30 | Sandisk Corporation | Multi-purpose non-volatile memory card |
US7246268B2 (en) * | 2002-01-16 | 2007-07-17 | Sandisk Corporation | Method and apparatus for dynamic degradation detection |
JP3833970B2 (ja) | 2002-06-07 | 2006-10-18 | 株式会社東芝 | 不揮発性半導体メモリ |
US6944063B2 (en) * | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
FR2851074B1 (fr) * | 2003-02-10 | 2005-04-22 | St Microelectronics Sa | Memoire flash sectorisee comprenant des moyens de controle et de rafraichissement de cellules memoire |
JP4289026B2 (ja) * | 2003-05-28 | 2009-07-01 | 日本電気株式会社 | 半導体記憶装置 |
US7012835B2 (en) * | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US7173852B2 (en) * | 2003-10-03 | 2007-02-06 | Sandisk Corporation | Corrected data storage and handling methods |
TWM264642U (en) * | 2004-08-27 | 2005-05-11 | Incomm Technologies Co Ltd | Flash memory device having plural communication protocols |
JP4261462B2 (ja) * | 2004-11-05 | 2009-04-30 | 株式会社東芝 | 不揮発性メモリシステム |
US7441067B2 (en) | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
US7315916B2 (en) * | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
US7395404B2 (en) | 2004-12-16 | 2008-07-01 | Sandisk Corporation | Cluster auto-alignment for storing addressable data packets in a non-volatile memory array |
US7386655B2 (en) * | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
US7366826B2 (en) * | 2004-12-16 | 2008-04-29 | Sandisk Corporation | Non-volatile memory and method with multi-stream update tracking |
US7412560B2 (en) * | 2004-12-16 | 2008-08-12 | Sandisk Corporation | Non-volatile memory and method with multi-stream updating |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US20060161724A1 (en) * | 2005-01-20 | 2006-07-20 | Bennett Alan D | Scheduling of housekeeping operations in flash memory systems |
US7283395B2 (en) * | 2005-06-24 | 2007-10-16 | Infineon Technologies Flash Gmbh & Co. Kg | Memory device and method for operating the memory device |
US7451264B2 (en) * | 2006-04-13 | 2008-11-11 | Sandisk Corporation | Cycle count storage methods |
US7467253B2 (en) * | 2006-04-13 | 2008-12-16 | Sandisk Corporation | Cycle count storage systems |
US7495966B2 (en) | 2006-05-01 | 2009-02-24 | Micron Technology, Inc. | Memory voltage cycle adjustment |
US7778077B2 (en) * | 2006-05-15 | 2010-08-17 | Sandisk Corporation | Non-volatile memory system with end of life calculation |
US7474560B2 (en) * | 2006-08-21 | 2009-01-06 | Micron Technology, Inc. | Non-volatile memory with both single and multiple level cells |
US7886204B2 (en) * | 2006-09-27 | 2011-02-08 | Sandisk Corporation | Methods of cell population distribution assisted read margining |
US7716538B2 (en) | 2006-09-27 | 2010-05-11 | Sandisk Corporation | Memory with cell population distribution assisted read margining |
WO2008038260A1 (en) * | 2006-09-27 | 2008-04-03 | Nds Limited | Counter in memory |
US20080091901A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Method for non-volatile memory with worst-case control data management |
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control data management |
KR100817204B1 (ko) * | 2006-12-22 | 2008-03-27 | 재단법인서울대학교산학협력재단 | 플래시 메모리의 매핑 방법 및 장치 |
KR100929155B1 (ko) * | 2007-01-25 | 2009-12-01 | 삼성전자주식회사 | 반도체 메모리 장치 및 그것의 메모리 셀 억세스 방법 |
US7929372B2 (en) * | 2007-01-25 | 2011-04-19 | Samsung Electronics Co., Ltd. | Decoder, memory system, and physical position converting method thereof |
US7573773B2 (en) * | 2007-03-28 | 2009-08-11 | Sandisk Corporation | Flash memory with data refresh triggered by controlled scrub data reads |
US7477547B2 (en) * | 2007-03-28 | 2009-01-13 | Sandisk Corporation | Flash memory refresh techniques triggered by controlled scrub data reads |
US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
CN101377958B (zh) * | 2007-08-31 | 2010-12-15 | 上海华虹Nec电子有限公司 | 监控闪存擦写性能的方法 |
US7916543B2 (en) * | 2007-10-22 | 2011-03-29 | Micron Technology, Inc. | Memory cell operation |
US8296498B2 (en) * | 2007-11-13 | 2012-10-23 | Sandisk Technologies Inc. | Method and system for virtual fast access non-volatile RAM |
KR101517185B1 (ko) * | 2008-04-15 | 2015-05-04 | 삼성전자주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US7924623B2 (en) | 2008-05-27 | 2011-04-12 | Micron Technology, Inc. | Method for memory cell erasure with a programming monitor of reference cells |
CN101645309B (zh) * | 2008-08-05 | 2013-05-22 | 威刚科技(苏州)有限公司 | 非挥发性存储装置及其控制方法 |
KR101033465B1 (ko) * | 2008-12-30 | 2011-05-09 | 주식회사 하이닉스반도체 | 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법 |
US8040744B2 (en) * | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8244960B2 (en) | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8806144B2 (en) * | 2009-05-12 | 2014-08-12 | Stec, Inc. | Flash storage device with read cache |
JP5813380B2 (ja) * | 2011-06-03 | 2015-11-17 | 株式会社東芝 | 半導体記憶装置 |
CN102253894B (zh) * | 2011-06-14 | 2013-09-04 | 沈阳建筑大学 | 一种闪存存储器等概率连续空间存储文件的方法 |
US20130031431A1 (en) * | 2011-07-28 | 2013-01-31 | Eran Sharon | Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats |
US8726104B2 (en) | 2011-07-28 | 2014-05-13 | Sandisk Technologies Inc. | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US8750042B2 (en) | 2011-07-28 | 2014-06-10 | Sandisk Technologies Inc. | Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures |
US8694754B2 (en) * | 2011-09-09 | 2014-04-08 | Ocz Technology Group, Inc. | Non-volatile memory-based mass storage devices and methods for writing data thereto |
US9026592B1 (en) | 2011-10-07 | 2015-05-05 | Google Inc. | Promoting user interaction based on user activity in social networking services |
US9183259B1 (en) | 2012-01-13 | 2015-11-10 | Google Inc. | Selecting content based on social significance |
US8843491B1 (en) | 2012-01-24 | 2014-09-23 | Google Inc. | Ranking and ordering items in stream |
US9177065B1 (en) * | 2012-02-09 | 2015-11-03 | Google Inc. | Quality score for posts in social networking services |
TWI454916B (zh) * | 2012-05-08 | 2014-10-01 | Phison Electronics Corp | 儲存單元管理方法、記憶體控制器與記憶體儲存裝置 |
US8750045B2 (en) | 2012-07-27 | 2014-06-10 | Sandisk Technologies Inc. | Experience count dependent program algorithm for flash memory |
US9454519B1 (en) | 2012-08-15 | 2016-09-27 | Google Inc. | Promotion and demotion of posts in social networking services |
US9213601B2 (en) | 2013-12-03 | 2015-12-15 | Sandisk Technologies Inc. | Adaptive data re-compaction after post-write read verification operations |
US9230689B2 (en) | 2014-03-17 | 2016-01-05 | Sandisk Technologies Inc. | Finding read disturbs on non-volatile memories |
US9529570B2 (en) | 2014-03-19 | 2016-12-27 | Seagate Technology Llc | Random number generation using pulsed programming parameters |
WO2015172352A1 (en) | 2014-05-15 | 2015-11-19 | Seagate Technology Llc | Storage device tampering detection |
US9728278B2 (en) | 2014-10-24 | 2017-08-08 | Micron Technology, Inc. | Threshold voltage margin analysis |
US9552171B2 (en) | 2014-10-29 | 2017-01-24 | Sandisk Technologies Llc | Read scrub with adaptive counter management |
US9978456B2 (en) | 2014-11-17 | 2018-05-22 | Sandisk Technologies Llc | Techniques for reducing read disturb in partially written blocks of non-volatile memory |
US9349479B1 (en) | 2014-11-18 | 2016-05-24 | Sandisk Technologies Inc. | Boundary word line operation in nonvolatile memory |
US9449700B2 (en) | 2015-02-13 | 2016-09-20 | Sandisk Technologies Llc | Boundary word line search and open block read methods with reduced read disturb |
US10445251B2 (en) | 2015-07-14 | 2019-10-15 | Western Digital Technologies, Inc. | Wear leveling in non-volatile memories |
US10452533B2 (en) | 2015-07-14 | 2019-10-22 | Western Digital Technologies, Inc. | Access network for address mapping in non-volatile memories |
US10452560B2 (en) | 2015-07-14 | 2019-10-22 | Western Digital Technologies, Inc. | Wear leveling in non-volatile memories |
US9921969B2 (en) | 2015-07-14 | 2018-03-20 | Western Digital Technologies, Inc. | Generation of random address mapping in non-volatile memories using local and global interleaving |
US10445232B2 (en) | 2015-07-14 | 2019-10-15 | Western Digital Technologies, Inc. | Determining control states for address mapping in non-volatile memories |
US9653154B2 (en) | 2015-09-21 | 2017-05-16 | Sandisk Technologies Llc | Write abort detection for multi-state memories |
US20210124853A1 (en) * | 2016-04-05 | 2021-04-29 | Hewlett Packard Enterprise Development Lp | Simulation based on precomputed results of the simulation |
US10536266B2 (en) | 2017-05-02 | 2020-01-14 | Seagate Technology Llc | Cryptographically securing entropy for later use |
US10978156B2 (en) | 2018-06-29 | 2021-04-13 | Sandisk Technologies Llc | Concurrent programming of multiple cells for non-volatile memory devices |
US11545221B2 (en) | 2018-06-29 | 2023-01-03 | Sandisk Technologies Llc | Concurrent programming of multiple cells for non-volatile memory devices |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61100565A (ja) | 1984-10-22 | 1986-05-19 | Green Cross Corp:The | インド−ル酢酸誘導体 |
US5043940A (en) | 1988-06-08 | 1991-08-27 | Eliyahou Harari | Flash EEPROM memory systems having multistate storage cells |
US5172338B1 (en) | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
DE69033262T2 (de) | 1989-04-13 | 2000-02-24 | Sandisk Corp | EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher |
US5200959A (en) | 1989-10-17 | 1993-04-06 | Sundisk Corporation | Device and method for defect handling in semi-conductor memory |
US5270979A (en) | 1991-03-15 | 1993-12-14 | Sundisk Corporation | Method for optimum erasing of EEPROM |
US5663901A (en) | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
US5430859A (en) | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5712180A (en) | 1992-01-14 | 1998-01-27 | Sundisk Corporation | EEPROM with split gate source side injection |
US5532962A (en) | 1992-05-20 | 1996-07-02 | Sandisk Corporation | Soft errors handling in EEPROM devices |
US5315541A (en) | 1992-07-24 | 1994-05-24 | Sundisk Corporation | Segmented column memory array |
US5428621A (en) | 1992-09-21 | 1995-06-27 | Sundisk Corporation | Latent defect handling in EEPROM devices |
JP3641280B2 (ja) | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
FR2700040B1 (fr) | 1992-12-31 | 1995-02-17 | Gemplus Card Int | Carte à puce avec données et programmes protégés contre le vieillissement. |
US5353256A (en) | 1993-06-30 | 1994-10-04 | Intel Corporation | Block specific status information in a memory device |
US5568423A (en) * | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
EP1114363B1 (en) * | 1998-09-14 | 2005-11-16 | Igt | Random number generator seeding method and apparatus |
US6388259B1 (en) | 2000-06-08 | 2002-05-14 | The Boeing Company | Radiation detection method and apparatus |
US6307779B1 (en) * | 2000-07-28 | 2001-10-23 | Micron Technology, Inc. | Method and circuitry for bank tracking in write command sequence |
-
2000
- 2000-09-14 US US09/662,032 patent/US6345001B1/en not_active Expired - Fee Related
-
2001
- 2001-09-06 AU AU2001288844A patent/AU2001288844A1/en not_active Abandoned
- 2001-09-06 KR KR1020037003770A patent/KR100782297B1/ko not_active IP Right Cessation
- 2001-09-06 JP JP2002527511A patent/JP2004509404A/ja active Pending
- 2001-09-06 CN CN01817411A patent/CN100580800C/zh not_active Expired - Fee Related
- 2001-09-06 EP EP01968605A patent/EP1317756B1/en not_active Expired - Lifetime
- 2001-09-06 WO PCT/US2001/027703 patent/WO2002023552A2/en active IP Right Grant
- 2001-09-06 DE DE60131549T patent/DE60131549T2/de not_active Expired - Lifetime
- 2001-09-10 TW TW090122352A patent/TW525177B/zh not_active IP Right Cessation
- 2001-12-27 US US10/033,222 patent/US6643187B2/en not_active Expired - Fee Related
-
2003
- 2003-09-04 US US10/656,658 patent/US20040080995A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8395923B2 (en) | 2008-12-30 | 2013-03-12 | Intel Corporation | Antifuse programmable memory array |
JP2010186477A (ja) * | 2009-02-10 | 2010-08-26 | Samsung Electronics Co Ltd | メモリシステム及びその磨耗度管理方法 |
JP2012522328A (ja) * | 2009-12-16 | 2012-09-20 | インテル コーポレイション | アンチヒューズ型プログラマブルメモリアレイ |
Also Published As
Publication number | Publication date |
---|---|
DE60131549T2 (de) | 2008-10-23 |
KR100782297B1 (ko) | 2007-12-06 |
US6643187B2 (en) | 2003-11-04 |
EP1317756B1 (en) | 2007-11-21 |
US20040080995A1 (en) | 2004-04-29 |
EP1317756A2 (en) | 2003-06-11 |
DE60131549D1 (de) | 2008-01-03 |
CN1470058A (zh) | 2004-01-21 |
WO2002023552A3 (en) | 2003-01-30 |
TW525177B (en) | 2003-03-21 |
US6345001B1 (en) | 2002-02-05 |
KR20030051650A (ko) | 2003-06-25 |
US20020075728A1 (en) | 2002-06-20 |
CN100580800C (zh) | 2010-01-13 |
AU2001288844A1 (en) | 2002-03-26 |
WO2002023552A2 (en) | 2002-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004509404A (ja) | 圧縮イベント計数手法およびフラッシュメモリシステムへの応用 | |
US7397707B2 (en) | Compressed event counting technique and application to a flash memory system | |
US10552311B2 (en) | Recovery for non-volatile memory after power loss | |
US6601211B1 (en) | Write reduction in flash memory systems through ECC usage | |
JP5016027B2 (ja) | 最終期を計算する不揮発性メモリシステム | |
JP5035636B2 (ja) | フラッシュメモリ内のブロックにおける移動セクタ | |
US6760255B2 (en) | Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks | |
US10102146B2 (en) | Memory system and operating method for improving rebuild efficiency | |
US10642731B2 (en) | Memory management method and storage controller | |
KR20110060493A (ko) | 메모리 장치의 소거 카운트 관리 방법 및 장치 | |
TWI803203B (zh) | 儲存裝置、控制器以及操作方法 | |
US10635583B2 (en) | Memory management method and storage controller | |
CN115857797A (zh) | 存储器控制器和存储设备 | |
US11609844B2 (en) | Memory system with hierarchical tables | |
CN116126210A (zh) | 数据存取方法、存储器存储装置及存储器控制器 | |
CN117290199A (zh) | 寿命预警方法,存储器存储装置及存储器控制电路单元 |