(57)【特許請求の範囲】
【請求項１】
複数のページを含むフラッシュメモリデバイスを利用する方法であって、
前記複数のページのうちの少なくとも１つのページについてトランザクション時間を特徴付けるステップを含み、
前記特徴付けるステップは、
メモリ動作を前記少なくとも１つのページ内のメモリセルに対して実行するステップであって、前記メモリ動作は、前記メモリセルがプログラムされた状態または消去された状態のうちの一方になるまで、一連のプログラム検証サイクルを実行することを含む、ステップと、
前記一連のプログラム検証サイクルに関連する時間遅延を測定するステップと、
前記少なくとも１つのページの前記トランザクション時間に対応する、前記測定された時間遅延に基づくリミットを記憶するステップと
を含み、
前記方法は、さらに、
メモリ動作が前記少なくとも１つのページに向けられた前のメモリ動作に関連する前記リミットの終了に先行することがないように、前記リミットに基づいて、前記少なくとも１つのページに向けられたメモリトランザクションをスケジューリングするステップと
を含み、
前記測定するステップは、前記メモリセルのうちの任意のメモリセルによる前記メモリ動作が完了する前記プログラム検証サイクルの最大数に基づいて、前記時間遅延を測定するものであり、
前記少なくとも１つのページは、第１の数のページのうちの１つであり、
前記方法は、
前記第１の数のページよりも大きな第２の数のページの第２のトランザクション時間を特徴付けるステップであって、前記第２の数のページのうちの少なくとも１つのページは、前記第１の数のページのうちの１つである、ステップと、
前記第２のトランザクション時間に基づいて、最初に述べた前記リミットよりも長い第２のリミットを記憶するステップと、
アプリケーションがメモリ容量よりも性能を必要とするか否かに基づいて、前記最初に述べたリミットまたは第２のリミットのうちの一方を選択するステップと、
後続するトランザクションが、前記第１または第２の数のページのうちの特定のページで実行されるべき場合、それに応答して、前記後続するトランザクションが前記選択されるリミット以内に完了しなければ、前記特定のページをマークするステップと
をさらに含む、方法。
【請求項２】
前記少なくとも１つのページの前記トランザクション時間を定期的に再び特徴付け、それにより、前記リミットを再決定するステップと、
前記再決定されたリミットに基づいて、前記少なくとも１つのページが関わる後続するメモリトランザクションをスケジューリングするステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記定期的に再び特徴付けるステップは、（ｉ）デジタルシステム電源投入、（ｉｉ）所定の較正間隔、（ｉｉｉ）プログラミングトランザクション実行、および（ｉｖ）消去トランザクション実行のうちの少なくとも１つの間に実行される、請求項２に記載の方法。
【請求項４】
前記複数のページの異なるページについて異なるリミットを記憶するステップと、
後続するメモリトランザクションが、前記複数のページのうちの特定の１つのページに対して実行されるべき場合、前記関連するリミットを検索し、それに応答して、前記後続するトランザクションが前記関連するリミット以内に前記複数のページのうちの前記特定の１つのページに関して完了しない場合、前記複数のページのうちの前記特定の１つのページをマークするステップと
をさらに含む、請求項１に記載の方法。
【請求項５】
前記少なくとも１つのページの前記トランザクション時間を定期的に再び特徴付けるステップであって、それにより、前記リミットを再決定するステップをさらに含み、
前記定期的に再び特徴付けるステップは、コンピュータのオペレーティングシステムにより実行される、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、フラッシュメモリのタイミング最適化に関する。より詳細には、本開示は、フラッシュメモリトランザクションを事前に特徴付ける方法を提供する。
【背景技術】
【０００２】
近代の形態のメインメモリは、慣習的にダイナミックランダムアクセス（「ＤＲＡＭ」）技術に基づいている。ＤＲＡＭは、他の種類のメモリに勝る多くの利点を提供する一方で、そのコスト、フォームファクタ、電力要件、および熱的特徴は、特定の種類のデバイス、特に特定のポータブルデバイス又は低コストデバイスには許容不可能であり得る。コスト、フォームファクタ、電力要件、および熱的特徴が問題であり得るデバイスの例としては、携帯電話、個人情報端末（ＰＤＡ）、および他の多くの形態のポータブルシステムまたは専用システムが挙げられる。より安価であり、より高い携帯性を有し、または電池の長寿命化を促進するメモリ設計の代替を有することが望まれる。
【０００３】
フラッシュメモリは、これら基準を満たすメモリの一形態であるが、慣習的に、その用途を限定してきたいくつかの制限がある。このような一制限は、フラッシュメモリが通常、それぞれが複数のメモリセルからなる「ブロック」または「ページ」単位で消去またはプログラムされることである。個々のメモリセルの消去時間およびプログラム時間のばらつきにより、このようなデバイスは、メモリロケーション毎にばらつく不定の消去遅延およびプログラム遅延を受けることが多い。メモリ単位での大量プログラミングまたは大量消去が必要なため、プログラミングまたは消去の完了時間を予測することが難しくなり、これにより、慣習的に、フラッシュメモリをいくつかの用途で使用することが妨げられてきた。例えば、データおよび命令のターンオーバーが高くなり得るメインメモリ用途では、メモリトランザクションに関連する時間遅延は、難しいスケジューリング問題を生じさせる恐れがある。特に、これら制限により、フラッシュメモリをいくつかの用途で広範囲に使用することが妨げられてきた。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
必要とされるのは、フラッシュメモリに関連する不定の遅延および関連するスケジューリング問題に対処する方法である。理想的には、メモリトランザクション時間を予測可能なように管理できれば、フラッシュメモリをはるかに広い範囲の用途に適用することが可能になり、それにより、ことによると、多くの種類のデジタルデバイスの電力特性を向上させると共に、価格決定を改良することが可能である。一例を提供すると、これら遅延のばらつきをよりよく管理できれば、潜在的に、メインメモリ用途へのフラッシュメモリの広範囲の適用に役立つことができ、それにより、より低コストでより小型かつ携帯性のより高い汎用計算プラットフォームに役立つことができる。
【図面の簡単な説明】
【０００５】
【図１】メモリトランザクションに関連する測定時間を示すブロック図を提供する。最初の破線ブロックで示すように、この方法をオプションとして利用して、既存のデフォルトリミット（プロセッサタイムアウト等）を更新することができ、２番目の破線ブロックで示すように、この方法を利用して、同じメモリが関わる後続のトランザクションを管理することもできる。
【図２】フラッシュメモリシステムのブロック図を提供する。より詳細には、図２は、バッファまたはレジスタが、フラッシュメモリタイミングに対応する少なくとも１つのリミットを記憶するシステムを示す。リミットは、どのメモリ単位（デバイス、ブロック、ページ等）が１つまたは複数のメモリ使用モードで使用可能かを示すテーブルを生成するために適用することができる。
【図３】測定された時間を使用してメモリを管理する方法の図である。特に、図３中の破線ブロックは、図３の破線ブロック３０９、３１１、および３１３によりそれぞれ示されるように、コントローラが（１）関連する制限時間内に前のトランザクションの完了に成功したと単純に仮定し、（２）トランザクション終了時に検証機能を実行して、制限時間に基づいて成功を検証し、または（３）次のトランザクションに進み、例外処理（例えば、割り込み処理）に頼って、前のトランザクションに伴う問題を識別することができる実施形態を紹介するために使用される。
【図４】命令の一部として制限時間をメモリデバイス４０５に適用するように構成されたメモリシステム４０１のブロック図である。
【図５】プログラム検証サイクルカウントを記憶するオンボードレジスタ設定を含むフラッシュメモリデバイスの図である。比較器が使用されて、レジスタ設定によりテーブルされる任意の特定のメモリモードの場合に、メモリを「不良」とマークし得るか否かが評価される。
【図６】個々のメモリ単位のメモリトランザクション最長時間を測定する方法のブロック図である。図６では、予約メモリ領域６０５内のレジスタ設定を使用して、任意の測定値または任意のデバイス６０３を記憶することができる。
【図７】実行中に、メモリトランザクションの成功をより効率的に検証し、トランザクションを制限時間以内に成功したと検証できない場合に単位をマークするために、測定された制限時間をどのように使用し得るかを示すブロック図である。
【図８】制限時間をメモリの各ブロックまたはページ等のメモリ単位毎に定義し記憶することができるシステムを示す。図８では、テーブル８０７を使用して、メモリ単位８０４のトランザクション最長リミットにそれぞれ対応する時間（例えば、クロックサイクル、プログラム検証サイクル、または他の測定単位）を記憶することができる。破線ブロック８１７で示すように、このテーブルは、オプションとして、メモリコントローラ８１３（例えば、オンボードコントローラメモリ）により保持してもよい。一実施形態では、このテーブルは、各メモリデバイス内に不揮発的に保持されて、実際の使用時に、コントローラにコピーされるか、またはオペレーティングシステムにより監視されてもよい。
【図９】各メモリモードに１つまたは複数のリミットが利用される状態で、所望のシステム性能に基づいてメモリモードを選択し、選択されたモードに応じてメモリを構造化するために、マスタシステム、メモリサブシステム、またはアプリケーションソフトウェアが使用し得る方法を示す。例えば、高速のシステム性能が望まれる場合、比較的短い制限時間を選択し得、メモリ単位は、モードに基づいて選択された制限時間を使用して処理される。
【図１０】選択されたモードに基づいて使用テーブルを構築する、コントローラに実装される方法を示す。特に、電源投入または較正間隔中、コントローラは、可能な各モードの特徴を識別し（１００７、１００９、および１０１１）、対応するモードと併せて実行中に使用する、対応するメモリ使用テーブルを構築し（１０１７、１０１８、および１０１９）得る。
【図１１】予想されるトランザクション最長時間に応じてメモリ単位に優先順位付けすることができるシステムに関する。
【図１２】例示的な優先順位付けテーブルを示す。
【図１３】例えば、電源投入中、較正間隔時、またはメモリ単位を別の（非性能）メモリモードで利用できるか否かを決定する特別なプロセスと併せて、使用制限付きと前にマークされたメモリ単位を後に再評価することができる方法を示す。
【発明を実施するための形態】
【０００６】
詳細な説明
本明細書において考察する原理の様々な実施態様を構築し使用できるようにするために後述する１つまたは複数の特定の実施形態についてのこの説明は、列挙された請求項の限定を意図せず、特定の方法およびデバイスへの適用を例示することを意図する。後述の説明は、メモリトランザクションの管理に使用するために記憶された測定トランザクションを使用して較正できるフラッシュデバイスへの適用を例示する。次に、このデバイスは、メモリ単位（メモリのブロックまたはページ等）をより効率的に「不良」とマークすること、コントローラもしくはソフトウェアにより選択できる複数の使用モードにメモリを構成するため、またはフラッシュメモリ使用を優先順位付けるためを含むいくつかの方法で管理することができる。しかし、本明細書において考察する原理は、他の方法およびデバイスにも同様に適用することが可能である。
【０００７】
Ｉ．原理部分の紹介
本明細書において考察する原理は、消去トランザクション、プログラミングトランザクション、または読み出しトランザクション等のフラッシュメモリトランザクションに関連する予想最長時間を実験的に測定する方法において具現することができる。特定の各フラッシュメモリデバイス（またはフラッシュメモリデバイス群）が、所定のメモリトランザクションを実行し、完了の成功に必要な時間を実験的に測定することにより事前に特徴付けられる。このテストは、例えば、製造時、機械が電源投入される都度、所定の較正間隔で、メモリトランザクションが発生したときに単純にそのメモリトランザクションを観察し、較正パラメータを更新することにより、またはこれら組み合わせにより、実行される。較正は、デバイス、チップ、ブロック、ページ、または他の何等かのレベルを含め、メモリの任意の下位区画または「単位」で実行し得る。
【０００８】
事前特徴付けは、従来の方式を使用して得られるよりも大きな粒度でのメモリ管理を得ることを目的として、予想最長トランザクション時間（例えば、プログラミングまたは消去）を測定するために実行し得る。
【０００９】
これら機能を実行するために、所定のトランザクションは、任意の同様のトランザクションのうち、最長の時間がかかると予想されるトランザクションとして選択し得る。例えば、考慮中のメモリの最長消去時間を測定することが望まれる場合、考慮中のメモリのすべてのビットを反転させて、そのメモリ（例えば、チップ、ブロック、ページ、またはメモリの他の下位区画単位）を消去するトランザクションを選択することができ、同様に、特にＮＡＮＤベースのフラッシュメモリの最大プログラミング時間を決定することが望まれる場合、適した一較正トランザクションは、考慮中のメモリのすべてのビットを反転させて、これらビットを（例えば、消去された状態から）プログラムする。これらのみが選択可能なトランザクションであるわけではなく、例えば、最大値を選択するために、データ書き込みおよびデータ消去のパターンまたはパターンの組み合わせを使用することも可能である。例えば、場合によっては、０−１パターンをプログラムし、次に、そのパターンを反転させ、１−０パターンをプログラムし、最大値をとり得る。当業者は、多くの他の可能性にも想定するであろう。トランザクション時間は、プログラムまたは消去できるメモリセル毎に変化するため、すべてのビットの変更に必要な最長時間、ひいてはすべてのメモリセルのすべての特徴を効率的に測定することにより、必然的にトランザクションにより影響を受ける最も遅いメンバセルのプログラミングまたは消去も含め、メモリトランザクションにかかると予想し得る最長時間の測定値を得ることが可能である。この最長時間は、本発明を使用しない場合には「一律」にフラッシュメモリに適用され得る汎用タイムアウトまたは最大プログラム検証サイクルカウントよりも小さく正確であると予想される。時間は、クロックサイクル、プログラム検証サイクルを単位として、または他の何等かの適した尺度を使用して測定することができ、オーバープログラミングを回避するために、制御電圧が定期的に逓増逓減されるシステムに印加される最大電圧を単位として測定することもできる。
【００１０】
事前特徴付け（または較正）は、測定データに基づくため、メモリの「遅い」単位、すなわち、従来では「不良」とマークされるメモリのブロックまたはページを、それにも拘わらず依然として潜在的に使用することができる。メモリを較正することにより（特に、複数の制限時間が使用される場合）、本明細書に開示される実施形態では、複数のトランザクションモードが可能であり、おそらく、「遅い」単位も依然として、時間性能が重要ではないモード（オペレーティングシステムまたは特定用途要件により決まり得るような）で使用することができる。
【００１１】
フラッシュメモリのプログラミング時間または消去時間のばらつきの問題および長いタイムアウトがメモリコントローラにより使用される理由は、フラッシュメモリの設計ならびにフラッシュメモリのプログラムおよび消去に通常使用されるステップによるアーチファクトである。これに関して、フラッシュメモリが一般にチャンクでプログラムまたは消去されることを上述したが、ＮＯＲベースのフラッシュメモリは通常、「ブロック」単位で消去され、複数バイトの増分単位でプログラムされる一方、通常、ＮＡＮＤベースのフラッシュメモリは、ＮＯＲベースのフラッシュメモリと同じくブロック単位で消去されるが、「ページ」単位でプログラムされ、各ページはブロックのさらなる下位区画である。これらトランザクションは通常、制御電圧を印加して、電荷に電極と浮動ゲートとの間を突き抜けさせることにより実行される。オーバープログラミングとして知られる状態を回避するために、セルは通常、繰り返しプログラミング検証サイクル（すなわち、複数回の繰り返し）で処理され、最初は、比較的小さな電圧が制御ゲートに印加され、正確な消去またはプログラミングがセル毎に検証され、成功が確認されなかったセルの場合、制御電圧が増大され、このプロセスが、前の任意のサイクル中に正確に消去またはプログラムしなかったセルに対して、すべての所要ビットがプログラムされるまで、繰り返される。最大電圧に達し、いくつかのセルが正確にプログラムされなかった場合、そのメモリ単位（例えば、ブロックまたはページ）は「不良」とマークされ、迂回されることがある。所要繰り返し回数（すなわち、プログラム検証サイクル数）および所要プログラミング時間は、メモリセル毎、ひいてはページ毎、ブロック毎、およびデバイス毎に変化し、このばらつきは、各セルの許容差およびトランザクションが任意の所与のデバイス内で異なり、設計がモデルおよび製造業者に従って変化するため、発生する。
【００１２】
動作に際して、トランザクションの時間のばらつきは通常、トランザクションが完了したため、または最大トランザクションサイクル数に達したため、トランザクションが完了したときに、メモリデバイスに「読み出し／ビジー」ピンの値またはレジスタ値を変更させることにより対処され、多くの場合、メモリデバイスは別の特定のレジスタビットも、メモリトランザクションの成功の検証を示すように設定し得る。これら値はメモリコントローラにより監視され、メモリコントローラは次に、問題の検出に応答して、考慮中のメモリ単位を「不良」とマークし得る。［単位を「不良」とマークすることは、その単位が機能不全であることを必ずしも意味せず、単純に、コントローラがその単位を迂回すべきであるか、または特別に処理すべきであることを意味する］。デバイスおよび特定のメモリ下位区画を個々に互いよりも高速化することができ、結果として、適宜管理された場合、はるかに効率的な動作が可能であり得るフラッシュメモリになる。
【００１３】
しかし、メモリの既知の記憶されている較正済みの統計を使用して、コントローラは、消去トランザクションまたはプログラミングトランザクション（または読み出しトランザクション等の別のメモリトランザクション）の完了に成功する時間のはるかに正確な推定を得ることができ、それにより、フラッシュメモリのより効率的なスケジューリングおよび使用が可能になる。
【００１４】
図１に見られるように、一実施形態は、フラッシュメモリデバイスを較正する方法を提供する。方法１０１は、少なくとも、メモリチップ等の個々の各メモリデバイスに対して実行され、デバイスの製造時、システムの電源投入時、所定の較正間隔で、消去トランザクションもしくはプログラミングトランザクション等のランタイムメモリトランザクションの実行中に場当たり的に、実行することができる。理想的には、較正に使用されるメモリトランザクションは、考慮中のメモリに関連する各ビットの値を変更する（単一レベルセル形態であれ、またはマルチレベルセルの形態であれ）消去トランザクションまたはプログラミングトランザクション等の特定の所定のトランザクションである。上述したように、考慮中のメモリに関連するすべてのビットを変更することは、おそらく、任意の同様のトランザクション（例えば、すべてまたはすべてに満たないメモリセルが影響を受けるページまたはブロックの任意の他のプログラミングトランザクション）に関連する最長時間および最大数のプログラム検証サイクルを含む。図１のブロック１０３に示すように、トランザクションが開始され、図１の機能ブロック１０５、１０７、および１０９に示すように、タイマが、トランザクションの実行の検証に成功するために必要な期間を測定する。テストが完了すると、方法１０１は、参照番号１１１および１１３に示すように、測定された期間に基づいて制限時間を記憶し、同じメモリに関わる後続するトランザクションにおいてこの制限時間を利用する。本明細書において使用する「制限時間」は、プログラミングトランザクション、消去トランザクション、または他のメモリトランザクション（読み出しトランザクション等）等のメモリトランザクションの動作を測定または制限する任意のメカニズムを指すことができる。
【００１５】
所望であれば、図１のオプションのブロック１０５に示すように、フラッシュメモリデバイスに、例えば、読み出し専用領域または制御動作用に予約された他の領域にデフォルト制限時間を事前にプログラムすることができ、例えば、このような値は、デバイス製造業者により供給し得る。このような値にデバイスが提供される場合、方法１０１は、適宜その値に対して動作し置換してもよく、または値を他のメモリ（例えば、揮発性メモリ）にコピーし、コピーに対してのみ動作し、後で（例えば、次の電源投入時に）使用するために元の値を保持してもよい。一実施形態では、別個の制限時間が各種類のメモリトランザクションに提供され、例えば、プログラミングトランザクションの制限時間、消去トランザクションの制限時間、および読み出しまたは他のトランザクションの制限時間が提供され、各リミットは、本明細書において考察される原理に従って更新され調整される。後述する実施形態のうちのいくつかでは、理解を容易にするために、１つのみのこのようなリミットがプログラミング動作または消去動作のいずれかに対して働いているものと仮定すべきであるが、本明細書において考察する原理はそのように限定されない。
【００１６】
図２は、フラッシュメモリのトランザクション時間を測定するシステム２０１を示す。より詳細には、フラッシュメモリ領域２０３は、参照番号２０４で表されるいくつかの下位区画単位、例えば、ブロック、ページ、または他の単位を含み得る。トランザクションタイマ２０５が、領域に動作可能に結合されて、メモリ領域に関わる少なくとも１種類のトランザクションの時間を測定する。比較器２０９を使用して、このタイマにより計算される値を、関連するメモリ領域のバッファまたはレジスタ２０７に保持されている値と比較することができる。一実施形態では、レジスタは、各メモリ単位２０４に専用の値を保持し、これらトランザクションは個々の各メモリ単位で実行される。
【００１７】
図２は、使用可能なメモリ単位を識別するテーブル２１１も示し、これに関して、万が一、任意のトランザクションのタイミングが所定の制限時間を超えた場合、任意の関連するメモリ下位区画単位２０４を使用制限付きとマークすることができるため、テーブル中では実際上、使用可能なメモリとして識別されない。図２は、図２の要素の多くを単一のデバイスまたはチップ内に集積できることを表す破線ブロック２１３を示す。すなわち、図２では、メモリチップが単純にフラッシュメモリ領域２０３を含み、他の要素は、コントローラおよびオフチップメモリ等の他のどこかに実装されてもよく、またはオプションとして、参照番号２１３に示すように、要素のうちのいくつかまたはすべてを単一のチップ内に収容してもよい。このような実施形態では、メモリコントローラ（図２には示されていない）がブロック２１３と対話して、チップに記憶されている任意の時間値を検索し、コントローラのメモリにコピーして、使用可能なメモリ単位を識別するオフチップテーブルを定義してもよい。これら機能のうちの多くをコンピュータオペレーティングシステムで実行することを含め、図２に見られる要素の他のレイアウトも可能である。
【００１８】
図３は、測定された時間を使用してメモリを管理する方法を紹介するために使用される図である。特に、図３は、参照番号３０３および３０５に示すように、コントローラが制限時間を検索し、メモリトランザクションを開始することができる方法３０１を示す。図３に関連する特定の実施形態では、コントローラは、その観点から、測定された時間を利用して、メモリトランザクションのスケジューリングを強化し、その結果、参照番号３０７に従い、コントローラは、制限時間以内にトランザクションを完了するためにトランザクションにより影響を受けるメモリデバイスを予想する。この機能は、いくつかの方法で実現顕在化することができ、例えば、破線ブロック３０９、３１１、および３１３が図３において使用され、コントローラが、（１）単純に前のトランザクションが関連する制限時間以内での完了に成功すると仮定し、（２）トランザクション終了時に検証機能を実行して、制限時間に基づいて成功を検証し、または（３）次のトランザクションに進み、例外処理（例えば、割り込み処理）に頼って、前のトランザクションに伴う問題を識別し得る実施形態を紹介するために使用される。オプションの（破線）機能ブロック３１５および３１７にも示されるように、メモリトランザクションは、デバイスでのトランザクション時間の能動的な管理を通して、またはメモリ命令を介して、メモリデバイスが適用すべき特定の制限時間を指定することにより、監視することもでき、このような実施形態では、コントローラは、メモリデバイスに頼り、トランザクションを関連する制限時間以内に処理することができ、コントローラは、処理の成功を能動的に確認してもよく、またはメモリデバイスに頼り、例外処理手続きを通して、例えば、ブロック３１３に従う処理を介して問題を報告してもよい。
【００１９】
図４は、コントローラ４０１が、命令の一部として、所定のトランザクション制限時間をメモリデバイス４０５に提供できるように構成されたメモリシステム４０１のブロック図である。１つのみのメモリデバイス４０５が図４に示されるが、コントローラがいくつかのメモリデバイスを管理可能なことを理解されたい。特に、図４は、異なる制限時間がそれぞれ関連付けられた異なるメモリ命令、またはおそらくはよりよく言えば、複数の代替の命令を通して通信される特定のメモリトランザクションを概念的にそれぞれ表すいくつかの信号線４０７を示し、例えば、図４のコントローラは、メモリ命令の一部として、メモリデバイスに対するプログラム検証サイクル数を指定し得る。これら異なる命令を処理するために、メモリデバイス４０５は、メモリデバイスに動作を対応するプログラム検証サイクル数に制限させるオンボード命令論理を有し得る。上述したように、メモリデバイスは、「レディ／ビジー」ピンの出力を変更することにより、完了の成功を報告してもよく、またはコントローラもしくは例外処理回路により監視し得る値４１５を特に記憶するようにレジスタ４１３を変更してもよい。図４は、デバイスが制限時間を記憶するために使用し得るテーブル４１７も示す。例えば、他の実施形態の考察と併せて上述したように、制限時間は、不揮発的にメモリデバイス４０５に記憶し、コントローラ４０３またはオペレーティングシステムにより能動的な管理のために検索されてもよい。他の動作も可能である。例えば、一度計算された制限時間を任意の数のメモリロケーションに記憶し、実装に応じて、メモリデバイス、コントローラ、オペレーティングシステム（またはアプリケーション）が制限時間を使用してもよい。
【００２０】
図５は、フラッシュメモリデバイス（例えば、フラッシュメモリチップ）５０３が、実行中にメモリトランザクションを監視し、測定されたパラメータを使用してオンボードタイムアウト機能を実施することができるシステム５０１を示す。１つのみのフラッシュメモリデバイスが図５に示されるが、実際には、このようなシステムがいくつかの同様のデバイス（デバイス５０３と同一）およびこれらデバイスのメモリトランザクションを管理し制御するフラッシュメモリコントローラ５１３を含むことに留意されたい。特に、図５の実施形態は、ＮＡＮＤベースのフラッシュメモリのプログラム検証サイクル数を単位として時間を監視することが分かる。各デバイス５０３は、フラッシュメモリ領域５０５、制限時間を記憶するレジスタ５０７、トランザクションタイマ５０９、および比較器５１１を含み得る。フラッシュメモリ領域は、フラッシュメモリコントローラ５１３の監視下で命令またはデータを記憶するために使用されるメモリページ５０６に編成することができる。ページサイズは設計上の選択であるが、従来、４ｋバイト程度の単位にメモリを編成するために使用され、それにより、１ギガバイトのメモリデバイスは通常、数１０万ページ程度を有する。コントローラにより要求されるトランザクション毎に（または特定の種類のトランザクション、例えば、ＮＡＮＤフラッシュメモリのページのプログラミングの場合）、トランザクションタイマ５０９は、考慮中のページに必要なプログラム検証サイクル数を監視し、その出力を比較器５１１に提供する。比較器により、プログラム検証サイクルが、レジスタ５０７からの設定により提供される実験的に決定された制限時間を超えると決定された場合、比較器は、コントローラ５１３に通知するエラー状況５１２をアサートする。コントローラは、この信号に応答して、適切な値をメモリ使用テーブル５１５に書き込むことにより、または特別な処理（さらに後述）が必要であるとフラグを立てることにより、その特定のページを「不良」とマークすることもできる。
【００２１】
レジスタ５０７に記憶された制限時間の比較について、図６を参照して説明する。特に、図６は、フラッシュメモリをテストし、将来使用するために制限時間を計算する方法６０１を示す。図６の左側に見られるフラッシュメモリデバイス６０３は、いくつかのメモリ単位６０４を含むと共に、計算された制限時間の記憶に使用されるレジスタ６０５を含むこともできる。メモリ単位６０４毎に、メモリコントローラは、関連する単位の各ビットを反転させる所定のメモリトランザクション（または一連のトランザクション）を開始する。例えば、コントローラはまず、メモリを消去し、次に、関連するメモリ単位のあらゆるセルのあらゆるビットをプログラムするトランザクションを開始する。トランザクションが開始される都度、参照番号６０７、６０９、および６１１に示されるように、トランザクションタイマ（図６には示されない）は、プログラム検証サイクル数を記憶し、完了の成功を監視する。このパターンが、所定の最大値（例えば、製造業者により指定される汎用タイムアウト値）まで続けられ、トランザクションをこの最大値以内に実行することができない場合、図６の機能ブロック６１３に示すように、特定のメモリ単位を「不良」とマークすることができ、システムは次の単位に進むことができ、メモリの特定の要素を正確にプログラムできなかった場合、機能ブロック６１５および６１６に示すように、関連するセルへの制御電圧を増大させ、プログラミングトランザクションを再び試みることができる。しかし、トランザクションが示された最大値以内に成功した場合、システムは、機能ブロック６１７により図６に示すように、メモリ単位に関連して新たな値を記憶し、その新たな値をメモリ単位のリミットとして使用すべきか否かを決定する（図６の実施形態では）。例えば、単一の制限時間がメモリデバイスに対して計算される実施形態では、システムは、測定された時間が「不良」とマークされていない単位の中で最長の時間を表すか否かを判断することができ、システムがすべてのメモリ単位を処理した場合、ブロック６１９に示すように、この値を新たなレジスタ設定として記憶することができる。較正すべき他のメモリ単位が残っている場合、参照番号６２１に示すように、システムは次の単位に進む。システム制約に基づく他のより洗練された制限時間計算アルゴリズムも可能であり、オプションとして、すべてのメモリ単位が事前特徴付けされた後に実行してもよい。例えば、フラッシュメモリシステムは、所定の最大値まで、範囲内の制限時間を選択することができるアルゴリズムを使用するようにプログラムし得る。あるいは、システムは、統計的手法を利用（デバイスの実験的に測定された時間の平均よりも大きな標準偏差として制限時間を選択）するようにプログラムすることができる。破線機能６１７および６１９に示すように、時間値はオプションとして、メモリデバイスの近傍にあるか、またはメモリデバイス内のレジスタではなく、メモリコントローラに記憶してもよい。
【００２２】
図７は、実行時に単一の制限時間を適用する一方法を示す。特に、方法７０１は、メモリトランザクションに使用される実験的に測定された制限時間を計算し、この制限時間は、メモリ製造業者またはシステム統合者により供給される汎用タイミング情報よりも正確である。実行中、機能ブロック７０３に示すように、新たな各メモリトランザクション（例えば、ＮＡＮＤページのプログラムまたはブロックの消去）の時間が測定される。このシステムでは、各フラッシュメモリデバイス７０５は、ブロックまたはページ７０９に対して実行されるランタイムトランザクションに必要な任意の時間値を記憶する予約領域７０７を含む。番号７１０および７１１に示すように、適切な制限時間、例えば、前に決定された制限時間を比較機能に提供して、監視下にあるトランザクションの時間と比較することができる。トランザクションタイマが制限時間を超えた場合、ブロック７１３、７１５、および７１９に示すように、監視下にあるページまたはブロックを、特定のモードに対して「不良」であるとマークすることができ、コントローラ（図７には示されない）は、適切であれば、新たなブロックを試みることができる。あるいは、制限時間を超えなかったが、トランザクションが成功しなかった場合、ブロック７１７に示すように、次のプログラム検証サイクルを開始することができる。本明細書において使用される「使用制限」は、メモリまたはメモリ単位が「不良」とマークされている（すなわち、すべてに対して、または所与の動作モードに対して）ため、またはメモリが１つのメモリモードでの使用から除外されている（が、別のモード、例えば、非実行モードまたは低優先度メモリトランザクションでは使用可能であり得る）ため、メモリが少なくともいくつかのメモリトランザクションに使用されないことを意味する。
【００２３】
図８に示す別の実施形態では、個々の各メモリ単位８０４に特定の制限時間を選択し、実行粒度をさらに大きくしてもよい。図８は、図５に示すものと同様であるが、いくつかの制限時間８０８を記憶するバッファまたはレジスタ８０７を特徴とするシステム８０１を示す。各制限時間は、メモリ８０３内の単位８０４に対応し、プログラム検証サイクル数または他の何等かの時間尺度で表すことができる。図５と併せて上述した構造と同様に、トランザクションタイマまたは同等のメカニズム８０９を使用して、所与のメモリ単位８０４に関わる各メモリトランザクションの関連する時間以内の完了を効率的に監視することができる。次に、タイマの出力８１０は、比較器８１１に提供することができ、比較器８１１は、メモリ単位のランタイムトランザクションが所定の制限時間以内に首尾良く完了しなかったことをコントローラ８１３に信号または他の様式で通知し、例えば、比較器は、エラー信号８１２を生成することができ、それにより、フラッシュメモリコントローラ８１３にメモリ使用テーブル８１５内で特定の単位をマークさせる。図８の破線ブロック８０３は、これら機能の多くを単一のフラッシュメモリデバイス、例えば、メモリチップに統合してもよく、あるいは、メモリ使用テーブル８１５等の機能をシステムの他のどこか、例えば、コントローラ８１３専用のメモリ内、予約ページの領域内、拡張ページ領域内、ＳＰＤモジュール内、ハードディスク上、ソフトウェアバッファ内、または他の何等かのメカニズムを介して記憶してもよいことを表す。
【００２４】
ランタイムモードで使用される単位毎の制限時間の計算についても図６を参照して説明する。特に、図６は、ブロック６１７において、各時間値をバッファまたはレジスタ設定６０５に記憶することができることを示し、単位毎の制限時間の比較が望まれる場合、破線機能ブロック６１９は、機能ブロック６１７の機能と結合され、最大値決定スレッドは利用されない。すなわち、所定の「テスト」トランザクションの結果として計算される各時間値が単純に、対応するメモリ単位の制限時間として使用される。
【００２５】
上述したように、メモリ較正はいくつかの方法で使用することができる。
【００２６】
第１に、図７と併せて上述したように、フラッシュメモリデバイスに対する単一のリミットを計算し、実行中に、メモリトランザクションの時間が長すぎるか否かを決定するために使用してもよく、あるいは、図３および図４を参照して上述したように、コントローラは、任意のトランザクションが関連するリミット以内に完了したと効率的に仮定して、測定された時間をメモリ動作のスケジューリングに使用してもよい。図８を参照して今しがた上述したように、いくつかの異なるメモリ下位区画のそれぞれに固有の複数の制限時間を計算してもよい。上述した用途では、これら各実施形態は、メモリトランザクションをより一貫してスケジュールし、メモリトランザクションが予想期間以内に完了したことの信用を獲得し、トランザクションが予想され実験的に決定されたリミット以内に完了しない場合、単位をマークするために適用することができる。いくつかの実施形態では、マークされた単位は、特定の動作モードに対して「不良」であるとみなしてもよく、または単純に、例えば、関連する制限時間を単純に増分させることにより特別に処理してもよい。しかし、較正メモリの他の使用も可能であり、このために、いくつかの実施形態を図および以下の説明において提示する。
【００２７】
図９および図１０に示す一実施形態では、複数のリミットを計算することができ、オペレーティングシステムまたはアプリケーションが、関連するリミットをそれぞれ有する複数のメモリモードからモードを選択し得る。これに関して、上述したいくつかの実施形態は、実験的に決定されたリミットに基づいて各メモリ単位を使用可能または「不良」と判断するが、メモリ単位をソートまたは優先順位付けるために、実験的に測定されたパラメータを使用してもよい。図９および図１０の実施形態では、２つ以上のリミットを、例えば、統計的パラメータに基づいて計算することができる。仮定的な一実施態様では、１つのリミットを、メモリ単位のうちの少なくとも７０％によるトランザクション処理の成功に関連する予想処理時間を表すものとして選択し、第２の制限時間を、少なくとも９０％の単位による予想トランザクション処理成功を選択するために選び得る。次に、メモリ単位の特定のサブセットを、選択された特定のメモリモードに応じて使用可能として定義し得る。例えば、性能が、長いプログラミング時間に対する許容さが低い要因である場合、メモリテーブル（図２のテーブル２１１等）は、全体のメモリのうちの最高速から７０％までのメモリ単位のみを識別し得る（そして、その他のより遅いメモリ単位を使用制限付きに予約したものとして、すなわち、性能モードに関しては「不良」であるが、別のモードでは恐らく不良ではないものとして識別する）。あるいは、オペレーティングシステムまたはソフトウェアが、性能があまり重要ではないモードを利用する場合、メモリ単位を使用可能または「不良」として判断するために、より大きな制限時間を適用することができ、メモリテーブルはより多数のブロックを使用可能なものとして識別する。
【００２８】
図１１および図１２に示すさらに別の実施形態では、最大トランザクションリミットをメモリ単位毎に計算し、次に、各メモリ単位の選択を優先順位付けることができる。例えば、いくつかのメモリ単位が、特に良好な性能を有すると測定された場合、これら単位は、システム全体の性能を向上させるために高頻度のトランザクションを必要とすると予想されるメモリに使用し得る一方で、より遅いメモリ単位を低頻度のトランザクションに使用して、システム全体の性能に対する影響も最小に抑えるように、性能に対する影響を最小に抑えることができる。
【００２９】
最後に、メモリの較正は繰り返し可能なものであり、ある動作モードでは無視されるページまたはブロックを、異なる動作モードでは潜在的に許容可能なものとして再定義するために使用される。図１３を使用して、前に「不良」とマークされたメモリ単位を再較正する方法を示す。
【００３０】
こうして提示された原理部分を使用して、上述した方法およびデバイスのいくつかのさらなる使用法をこれより紹介する。
【００３１】
ＩＩ．複数のフラッシュメモリモードの使用
実際には、少数のみのメモリ単位が上述したようにマークされることが予想される。それにも関わらず、フラッシュメモリスケジューリングのために、特にメインメモリ等の高ターンオーバーアプリケーションのために、メモリトランザクションスケジューリングのために最大量の一貫性および予測可能性を有することが望まれる。このために、比較的小量のばらつきであっても、フラッシュメモリの使用に障害を生み出す恐れがある。上述した実施形態は、フラッシュメモリ実施形態でのメモリトランザクションのより効率的な使用およびスケジューリングを提供するが、それ自体はフラッシュメモリの使用でのばらつきを完全にはなくさない。
【００３２】
したがって、一実施形態は、上述した構造および方法を利用して、複数のメモリモードを可能にする。例えば、上述した事前特徴付け方法を使用して、メモリをトランザクション時間に従って編成することが可能である。あるモードでは、性能を強調することができ、メモリトランザクション時間のばらつきに対する許容差が殆どない。例えば、上述した較正方法およびメモリ単位毎の測定（例えば、ページ毎またはブロック毎の最大トランザクション時間）を使用して、「最高速の」メモリ単位を識別し、処理をそれら単位のみに制限し、残りの単位を、その特定の動作モードに対しては「不良」とマークすることが可能である。［上述したように、単位をある動作モードに対して「不良」とマークすることは、単位を他のモードまたは特別な目的では使用可能であり得ることを暗示する、単位をマークする言葉「最大限でも使用制限付き」により包含される］。逆に、性能が重要ではない場合、例えば、フラッシュメモリが補助記憶デバイスとしてのみ使用される場合、トランザクション時間の広範囲のばらつきを許容することが可能である。本明細書において説明する較正方法は、フラッシュメモリの異なる仕様モードの使用に役立ち、それにより、フラッシュメモリの潜在的な市場および用途を広げる。任意の数のモードまたはモードを区別する基準は、所望の実装に合うように熟練した設計者により選択し得る。
【００３３】
図９は、複数モードシステムでのランタイム方法９０１のブロック図を示す。特に、参照番号９０３に従って、動作モードがまず、メモリコントローラ、アプリケーション、オペレーティングシステム、または他の何等かの制御メカニズムにより選択される。図９では、「Ｎ」個の異なるモードが参照番号９０５、９０６、および９０７により識別される。理解を容易にするために、以下の説明では、高性能モード（短い制限時間が定義され、許容されるメモリトランザクション時間のばらつきは低く、そのため、スケジューリングでの予測可能性が高い）および大容量記憶モードを含む厳密に２つの異なるモードが利用されるものと仮定すべきであり、大容量記憶モードでは、ばらつきはあまり重要ではなく、単純に、コントローラのオーバーヘッドを最小に押されるようにブロックまたはページを「不良」と方便的にマークすることが望まれる。選択されたモードに応じて、機能ブロック９０９に示すように、適切な制限時間が選択される。上述した様式と同様に、各制限時間は、所望であれば、メモリデバイス９１１の保護部分またはレジスタ９１０に記憶することができ、メモリコントローラは、モードに該当するフラッシュメモリデバイスを見分ける必要があるだけである。あるいは、フラッシュメモリコントローラ（図９に示されない）は、制限時間を計算して記憶し、各メモリデバイス９１１内のレジスタ設定に関連する制限時間をプログラムしてもよい。上述した様式と同じように、機能ブロック９１７に示すように、タイマ９１３または同等のメカニズムを使用して、各メモリトランザクション中のメモリトランザクション時間を測定することができ、トランザクション時間は、関連する制限時間と突き合わせて測定される。性能モードが選択される場合、制限時間はより小さく、記憶モードが選択される場合、より緩い制限時間が選択される。前にも述べたように、時間は、プログラム検証サイクル数、クロックサイクル数、または所要制御電圧等の他の何等かの尺度の使用を含め、任意の適した単位を使用して測定することができる。機能ブロック９１９および９２１に示すように、メモリトランザクションが、実験的に決定された「性能モード」制限時間に関して時間切れした場合、関連する単位は「不良」とマークされ、コントローラは、異なるブロックまたはページを試みる。所望であれば、破線のオプションブロック９２３に示すように、「不良」とマークされた単位９１５は、より低順位のモードでは使用可能であるとの目印を付けることができ、例えば、システムは、特定のメモリ単位を性能モードメモリ使用テーブルでは「不良」とマークし、同様に、その特定のメモリ単位を次位のメモリ使用テーブル（例えば、２つのモードが使用される場合、記憶モードのメモリ使用テーブル）では使用可能とマークすることができる。しかし、メモリトランザクションの性能が首尾良く検証される場合、ブロック９２５および９２７に示すように、システムは、そのメモリトランザクションを終了し、キュー内の次のメモリトランザクションに進む。
【００３４】
上記説明から理解されるように、複数モードの使用により、プログラマまたはシステム設計者は、フラッシュメモリの管理においてトレードオフを考慮し、そのメモリに動的に適応することができる。個々のメモリ単位の性能を実験的に測定し、事前に特徴付けることにより、これら単位を異なる動作モードに割り当て、それにより、単純に汎用処理タイムアウトに頼るだけでは得られないように、効率的なスケジューリングおよびシステム管理が促進される。
【００３５】
図１０は、複数モードで使用されるようにフラッシュメモリを構成するコントローラに実装される方法１００１を示す。特に、１つまたは複数のフラッシュデバイス（図１０には示されない）に関連する各メモリ単位は、参照ブロック１００３に示すように、上述したように較正され特徴付けられる。すなわち、各単位が、（ｉ）単位が、従来の汎用タイムアウトに違反するため「不良」であるか否かを決定し、（ｉｉ）最初は「不良」とマークされていなかった単位がより高速に動作可能であるか否かをさらに決定する所定のトランザクションを経験する。この方法は、図６と併せて説明したように、各単位の最大トランザクション時間を実験的に測定する。これら時間が得られると、方法は次に、機能ブロック１０１１に示すように、各モードを一意に特徴付ける特徴を識別する。例えば、各モードは、関連する基準セットを有して図１０に示され、第１のモード１００５は「５０％」と記され、「速いほう」から半分のメモリ単位のみがこの「性能モード」に選択されることを示す。同様に、第２のモード１００７は７０％と記され、「速いほう」の７０％の単位をこのモードに選択すべきであることを示し、同様に、Ｎ番目のモードはｎｉと記され、ｎｉ基準がこのモードを特徴付けるために適用されることを示す。［特に、これら値は、説明のために使用される単なる仮定であり、実際には、メモリ単位は正規分布のプログラミング時間を有さず、そのため、割合に基づく手法は最適に満たない恐れがあり、広範囲の統計的手法を含む他の手法が、効率的なフラッシュメモリ適用にはより適切である可能性があり、デジタル設計の当業者により設計目的に従って容易に選択可能なことを理解されたい。］
【００３６】
モード毎に、方法１００１は次に、参照番号１０１３〜１０２３に示すように、モード特徴を適用して、メモリ使用テーブルを構築する。このテーブルは、特定のモードと併せて使用し得るメモリ単位および逆に、どのメモリ単位が特定のモードに対して「不良」とマークされているかを示す。各メモリモードのテーブルが作成されると、例えば、図９に示す方法に従い、システムを実行時動作で使用することができる。
【００３７】
ＩＩＩ．較正を使用してのフラッシュ内の優先順位付け
事前較正されたフラッシュメモリモードに加えて、本明細書において考察する方法およびデバイスは、メモリ使用を優先順位付けるために利用することもできる。今しがた示したように、通常の実施では、大半のフラッシュメモリ単位が比較的高速に実行し、遅い、すなわち「不良」の単位が極めて少数であると予想することができる。したがって、メモリを選択可能なモードに従って編成するのではなく、優先順位に関してメモリをランク付けすることも可能である。例えば、多数のメモリ単位がすべて、プログラミングに特定の比較的小さいプログラム検証サイクル数を必要とすることを特徴とする場合、これら単位を「最高速」メモリとしてランク付けし、メモリトランザクションをこれら単位に偏向させる。例えば、「高速」単位に、比較的頻繁菜ターンオーバーを含むメモリトランザクションに充て、それにより、全体時間を最小に抑えることができ、これら単位は、より重要なデータの記憶に充てることもできる。優先順位に従ってフラッシュを編成することは、上述した法補と同様であり、これについて図１１および図１２を参照して説明する。
【００３８】
図１１は、上述した方法を使用してフラッシュメモリデバイス１１０３の最大トランザクション時間を測定する方法１１０１を示す。特に、メモリの下位区画１１０４を、機能ブロック１１０５に示すように、所定のメモリトランザクションを使用して較正し得る。［所望であれば、この方法は、個々のフラッシュメモリデバイスをメモリ単位として使用して、例えば、この方法を複数モード用途と結合して、利用することもでき、あるフラッシュメモリデバイスに別のフラッシュメモリデバイスよりも高い優先順位を与えることができ、複数のフラッシュ使用モードをフラッシュデバイスのサブセットまたは特定の優先順位レベルを有するフラッシュメモリのみに対して実施することができる。］上述した方法と同様に、所定のメモリトランザクションは、理想的には、メモリ単位に関連するすべてのビットを消去状態からプログラム状態（消去動作の場合、プログラム状態から消去状態）に変更するトランザクション等の、可能な限り多数のセルのプログラミングまたは消去を必要とするものが選択される。方法は次に、プログラム検証を前に決定されたリミット（例えば、前の較正中に計算された単位固有の制限時間）、汎用タイムアウト、またはこれら両方と比較し得る。該当する場合（すなわち、単位を最大時間以内に検証できない場合）、応答のよくないメモリ単位は「不良」とマークされる。これら機能は、参照番号１１０７、１１０９、１１１１、および１１１３に示される。参照番号１１１５および１１１６に示すように、検証されたトランザクションが、ブロック１１１１に示される最大タイムアウト期間を超えない場合、新たに較正されたリミットをデバイスメモリの予約部分に記憶し得る。次に、方法１１０１は、機能ブロック１１１７および１１１８に示すように、考慮下のすべてのフラッシュメモリ単位が処理されるまで続けられる。
【００３９】
メモリの較正が完了すると、システムは、機能ブロック１１１９および１１２１のそれぞれに示すように、較正されたフラッシュメモリの優先順位付けおよび適切なメモリ使用テーブルの構築に進む。設計環境に適切な所望の略あらゆる優先順位付け方式を実装し得る。例えば、フラッシュメモリの「最高速」のいくつかの各群が、各自の優先順位を受けてもよく、または他の何等かの方式を利用してもよい。
【００４０】
図１２は、仮定的な優先順位付け方式１２０１を示す。特に、各テーブルは、優先順位インジケータおよび一致する優先順位を有するメモリ単位を示すテーブルからなり得る。図１２では、３つのレベルの優先順位１２０３、１２０５、および１２０７が示され、各優先順位は、「Ｎ」個のメモリ単位が配分された照合テーブル１２０３、１２０５、および１２０７を有する。図１２に示す優先順位は、少数の単位のみを参照して示されるが、実際には、「Ｎ」の値が何千または何百万でさえあり得、例えば、メモリデバイス内に何千ものページが潜在的にあることが観察されるはずである。上述したように、メモリを定期的に再較正することができ、結果として、メモリ単位の優先順位が再び割り当てられ、結果として、単位の優先順位が変更されることになる。実行中、オペレーティングシステムまたはアプリケーションソフトウェアは、優先順位に従ってメモリをブッキングしてもよく、またはメモリトランザクションに使用されるべき最高または最低の優先順位を指定してもよい。
【００４１】
ＩＶ．前にマークされた単位の再較正
特に、複数のフラッシュメモリモードに頼るシステム、またはフラッシュメモリ単位が優先順位付けられるシステムでは、マークされた（例えば、あるモードでは「不良」と）メモリ単位を異なるモードで使用可能であり得ることが可能である。図１３は、前にマークされたメモリ単位を再較正し、潜在的に有利なように利用できるようにする方法を説明するために使用される。
【００４２】
図１３のブロック１３０３に示すように、再較正方法１３０１は、１つまたは複数のコントローラ使用テーブルにアクセスして、前にマークされたブロックを識別する。単位が、性能がちょっと悪かっただけでマークされたため、関連するメモリ単位がまだ、より大きなリミット以内では信頼可能に動作可能であることがあり得る。したがって、方法１３０１は、参照番号１３０５に示すように、任意の該当する制限時間を最大の汎用タイムアウトに設定する。本方法は次に、所定のトランザクションを識別された各メモリ領域に対して実行し、利用される特定のトランザクションは、ここでも、上述したように、かつ番号１３０７に示すように、任意のメモリ単位プログラミングトランザクションまたは消去トランザクションに関連する最大時間を理想的に測定するトランザクションである。トランザクションが時間切れした場合、ブロック１３０９および１３１１に従い、システムはここでも、特定の単位を「不良」とマークし、次に、再較正する次の単位に続くことができ、トランザクションが時間切れしない場合、方法は、周知の方法を使用してトランザクションの実行の成功の検証に進むことができ（すなわち、ブロック１３１３により暗示されるように、トランザクションの成功を検証できない場合、方法は次のプログラム検証サイクルに続く）。トランザクションに成功すると、機能ブロック１３１７に示すように、方法は、実験的に測定された時間を、フラッシュメモリ１３１５に記憶された任意の前の値と比較し、処理中の各単位は、先のある動作においてマークされており、そのため、このような任意のマーク（および任意の前に決定された値）は、新たに実験的に測定された値で置換される。参照番号１３１９に示すように、方法はこのようにして進み、再較正が望まれる各単位を処理し、メモリ使用テーブルを適宜変更する。すべてのメモリ単位が処理されると、再較正は完了したと考えることができる。
【００４３】
前に使用制限付きとマークされたメモリ単位を効率的に再考するメカニズムを提供することにより、方法１３０１は、フラッシュメモリの使用を広げ、低順位モードで、または他の制限付きの目的のために、劣化したメモリを使用できるようにする方法を提供する。方法１３０１の結果として、必ずしも再較正された単位が特に特定のモードに割り当てられる必要はない。例えば、例えば、再較正された単位が、例えば、予約メモリとしての使用または他の使用等の専用アプリケーションに再割り当てすることも可能であり得る。メモリ動作を完了しなかった単位を必ずしも「不良」とマークする必要はない。例えば、関連する制限時間を増分することにより（例えば、１だけ、そして該当する場合、メモリを再び較正することにより）、例えば、別の形態の特別な処理をこれら単位に提供することも可能である。しかし、明白であるはずのように、説明される方法は、フラッシュメモリの使用を強化すると共に、フラッシュメモリの潜在的な用途を広げる柔軟性を提供する。
【００４４】
Ｖ．結び
フラッシュメモリに関連する予想トランザクション時間を実験的に測定する方法を提供することにより、本明細書において説明される方法およびシステムは潜在的に、フラッシュメモリを適用できる用途を広げる。例えば、フラッシュメモリが魅力的なコスト、フォームファクタ、電力特徴、および熱的特徴を示すが、フラッシュメモリの固有のリミットにより、フラッシュメモリをいくつかの用途に使用することが妨げられていることを上述した。実験的に測定したデータの使用を通してフラッシュメモリのより確実なスケジューリングに役立つことにより、かつフラッシュメモリ再較正および複数のメモリ動作モードおよび優先順位付け方式での使用を可能にする方法を提示することにより、上述した実施形態は潜在的に、潜在的にメインメモリまたはフラッシュメモリにとって従来なかった市場を表す他の用途を含め、より大きな規模でのフラッシュメモリの使用を促進する。
【００４５】
こうしていくつかの例示的な実施態様を説明したが、当業者が様々な代替、変更、および改良を容易に思い付くことが明白であろう。当業者は、フラッシュメモリシステム以外のシステムへの本明細書において説明した原理の適用を容易に思い付くであろう。上述したように、熟練した設計者は、例えば、デバイス尺度、ブロック、ページ、または他の尺度を含め、任意のレベルの粒度を使用して上述した方法およびシステムを実装することもできる。同様に、プログラミングトランザクションは、較正可能な唯一のトランザクションではなく、特定の種類のメモリトランザクションのみのリミットの計算に限定もされず、上述した方法は、トランザクションタイプ（例えば、消去トランザクションｖｓ読み出しトランザクションｖｓプログラミングトランザクションｖｓ他のトランザクション）の時間の計算に適用することもでき、あるいは、すべての目的で使用される制限時間を１つのみの、比較的時間のかかるトランザクション（例えば、プログラミング動作）に基づかせることもできる。セルのプログラムに使用される制御電圧が段階的に増大されるシステムでも同様に、クロックまたはプログラム検証サイクルに代えてプログラム電圧を監視することにより、許容時間を最小に抑えることができる。上に明示的に提示した用途以外にも、フラッシュメモリ較正の他の潜在的な用途があり得る。上記説明では、フラッシュデバイス自体のレジスタ内に記憶されるテーブルを参照したが、これらテーブルおよび関連する値が、フラッシュアレイ、フラッシュコントローラ、オペレーティングシステム、または他の任意の形態のメモリ（ＤＲＡＭまたはハードディスク等）に記憶されてよいことも理解されたい。このような代替、変更、および改良は、はっきりと上述されていないが、それにも関わらず、本開示の趣旨および範囲内にあることを意図され、そのように暗示される。
【００４６】
したがって、上記考察は単なる例示を意図し、メモリシステムを構成する特定の１つの方法およびシステムの例を提供することを意図し、当業者は、他の設計、使用、代替、変更、および改良も思い付くであろう。それにも関わらず、それらは本開示の趣旨および範囲内にあり、本開示の趣旨および範囲は、以下の特許請求の範囲およびその均等物によってのみ限定され規定される。
【図１】
0005603778.tif 000002
【図２】
0005603778.tif 000003
【図３】
0005603778.tif 000004
【図４】
0005603778.tif 000005
【図５】
0005603778.tif 000006
【図６】
0005603778.tif 000007
【図７】
0005603778.tif 000008
【図８】
0005603778.tif 000009
【図９】
0005603778.tif 000010
【図１０】
0005603778.tif 000011
【図１１】
0005603778.tif 000012
【図１２】
0005603778.tif 000013
【図１３】
0005603778.tif 000014