JP5603778B2 - フラッシュメモリタイミングの事前特徴付け - Google Patents

フラッシュメモリタイミングの事前特徴付け Download PDF

Info

Publication number
JP5603778B2
JP5603778B2 JP2010539944A JP2010539944A JP5603778B2 JP 5603778 B2 JP5603778 B2 JP 5603778B2 JP 2010539944 A JP2010539944 A JP 2010539944A JP 2010539944 A JP2010539944 A JP 2010539944A JP 5603778 B2 JP5603778 B2 JP 5603778B2
Authority
JP
Japan
Prior art keywords
memory
transaction
limit
page
pages
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.)
Active
Application number
JP2010539944A
Other languages
English (en)
Other versions
JP2012513652A (ja
Inventor
ハウクネス,ブレント,エス.
シャエファー,イアン
Original Assignee
ラムバス・インコーポレーテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ラムバス・インコーポレーテッド filed Critical ラムバス・インコーポレーテッド
Publication of JP2012513652A publication Critical patent/JP2012513652A/ja
Application granted granted Critical
Publication of JP5603778B2 publication Critical patent/JP5603778B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/107Programming all cells in an array, sector or block to the same state prior to flash erasing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50012Marginal testing, e.g. race, voltage or current testing of timing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

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)

Description

本開示は、フラッシュメモリのタイミング最適化に関する。より詳細には、本開示は、フラッシュメモリトランザクションを事前に特徴付ける方法を提供する。
近代の形態のメインメモリは、慣習的にダイナミックランダムアクセス(「DRAM」)技術に基づいている。DRAMは、他の種類のメモリに勝る多くの利点を提供する一方で、そのコスト、フォームファクタ、電力要件、および熱的特徴は、特定の種類のデバイス、特に特定のポータブルデバイス又は低コストデバイスには許容不可能であり得る。コスト、フォームファクタ、電力要件、および熱的特徴が問題であり得るデバイスの例としては、携帯電話、個人情報端末(PDA)、および他の多くの形態のポータブルシステムまたは専用システムが挙げられる。より安価であり、より高い携帯性を有し、または電池の長寿命化を促進するメモリ設計の代替を有することが望まれる。
フラッシュメモリは、これら基準を満たすメモリの一形態であるが、慣習的に、その用途を限定してきたいくつかの制限がある。このような一制限は、フラッシュメモリが通常、それぞれが複数のメモリセルからなる「ブロック」または「ページ」単位で消去またはプログラムされることである。個々のメモリセルの消去時間およびプログラム時間のばらつきにより、このようなデバイスは、メモリロケーション毎にばらつく不定の消去遅延およびプログラム遅延を受けることが多い。メモリ単位での大量プログラミングまたは大量消去が必要なため、プログラミングまたは消去の完了時間を予測することが難しくなり、これにより、慣習的に、フラッシュメモリをいくつかの用途で使用することが妨げられてきた。例えば、データおよび命令のターンオーバーが高くなり得るメインメモリ用途では、メモリトランザクションに関連する時間遅延は、難しいスケジューリング問題を生じさせる恐れがある。特に、これら制限により、フラッシュメモリをいくつかの用途で広範囲に使用することが妨げられてきた。
必要とされるのは、フラッシュメモリに関連する不定の遅延および関連するスケジューリング問題に対処する方法である。理想的には、メモリトランザクション時間を予測可能なように管理できれば、フラッシュメモリをはるかに広い範囲の用途に適用することが可能になり、それにより、ことによると、多くの種類のデジタルデバイスの電力特性を向上させると共に、価格決定を改良することが可能である。一例を提供すると、これら遅延のばらつきをよりよく管理できれば、潜在的に、メインメモリ用途へのフラッシュメモリの広範囲の適用に役立つことができ、それにより、より低コストでより小型かつ携帯性のより高い汎用計算プラットフォームに役立つことができる。
メモリトランザクションに関連する測定時間を示すブロック図を提供する。最初の破線ブロックで示すように、この方法をオプションとして利用して、既存のデフォルトリミット(プロセッサタイムアウト等)を更新することができ、2番目の破線ブロックで示すように、この方法を利用して、同じメモリが関わる後続のトランザクションを管理することもできる。 フラッシュメモリシステムのブロック図を提供する。より詳細には、図2は、バッファまたはレジスタが、フラッシュメモリタイミングに対応する少なくとも1つのリミットを記憶するシステムを示す。リミットは、どのメモリ単位(デバイス、ブロック、ページ等)が1つまたは複数のメモリ使用モードで使用可能かを示すテーブルを生成するために適用することができる。 測定された時間を使用してメモリを管理する方法の図である。特に、図3中の破線ブロックは、図3の破線ブロック309、311、および313によりそれぞれ示されるように、コントローラが(1)関連する制限時間内に前のトランザクションの完了に成功したと単純に仮定し、(2)トランザクション終了時に検証機能を実行して、制限時間に基づいて成功を検証し、または(3)次のトランザクションに進み、例外処理(例えば、割り込み処理)に頼って、前のトランザクションに伴う問題を識別することができる実施形態を紹介するために使用される。 命令の一部として制限時間をメモリデバイス405に適用するように構成されたメモリシステム401のブロック図である。 プログラム検証サイクルカウントを記憶するオンボードレジスタ設定を含むフラッシュメモリデバイスの図である。比較器が使用されて、レジスタ設定によりテーブルされる任意の特定のメモリモードの場合に、メモリを「不良」とマークし得るか否かが評価される。 個々のメモリ単位のメモリトランザクション最長時間を測定する方法のブロック図である。図6では、予約メモリ領域605内のレジスタ設定を使用して、任意の測定値または任意のデバイス603を記憶することができる。 実行中に、メモリトランザクションの成功をより効率的に検証し、トランザクションを制限時間以内に成功したと検証できない場合に単位をマークするために、測定された制限時間をどのように使用し得るかを示すブロック図である。 制限時間をメモリの各ブロックまたはページ等のメモリ単位毎に定義し記憶することができるシステムを示す。図8では、テーブル807を使用して、メモリ単位804のトランザクション最長リミットにそれぞれ対応する時間(例えば、クロックサイクル、プログラム検証サイクル、または他の測定単位)を記憶することができる。破線ブロック817で示すように、このテーブルは、オプションとして、メモリコントローラ813(例えば、オンボードコントローラメモリ)により保持してもよい。一実施形態では、このテーブルは、各メモリデバイス内に不揮発的に保持されて、実際の使用時に、コントローラにコピーされるか、またはオペレーティングシステムにより監視されてもよい。 各メモリモードに1つまたは複数のリミットが利用される状態で、所望のシステム性能に基づいてメモリモードを選択し、選択されたモードに応じてメモリを構造化するために、マスタシステム、メモリサブシステム、またはアプリケーションソフトウェアが使用し得る方法を示す。例えば、高速のシステム性能が望まれる場合、比較的短い制限時間を選択し得、メモリ単位は、モードに基づいて選択された制限時間を使用して処理される。 選択されたモードに基づいて使用テーブルを構築する、コントローラに実装される方法を示す。特に、電源投入または較正間隔中、コントローラは、可能な各モードの特徴を識別し(1007、1009、および1011)、対応するモードと併せて実行中に使用する、対応するメモリ使用テーブルを構築し(1017、1018、および1019)得る。 予想されるトランザクション最長時間に応じてメモリ単位に優先順位付けすることができるシステムに関する。 例示的な優先順位付けテーブルを示す。 例えば、電源投入中、較正間隔時、またはメモリ単位を別の(非性能)メモリモードで利用できるか否かを決定する特別なプロセスと併せて、使用制限付きと前にマークされたメモリ単位を後に再評価することができる方法を示す。
詳細な説明
本明細書において考察する原理の様々な実施態様を構築し使用できるようにするために後述する1つまたは複数の特定の実施形態についてのこの説明は、列挙された請求項の限定を意図せず、特定の方法およびデバイスへの適用を例示することを意図する。後述の説明は、メモリトランザクションの管理に使用するために記憶された測定トランザクションを使用して較正できるフラッシュデバイスへの適用を例示する。次に、このデバイスは、メモリ単位(メモリのブロックまたはページ等)をより効率的に「不良」とマークすること、コントローラもしくはソフトウェアにより選択できる複数の使用モードにメモリを構成するため、またはフラッシュメモリ使用を優先順位付けるためを含むいくつかの方法で管理することができる。しかし、本明細書において考察する原理は、他の方法およびデバイスにも同様に適用することが可能である。
I.原理部分の紹介
本明細書において考察する原理は、消去トランザクション、プログラミングトランザクション、または読み出しトランザクション等のフラッシュメモリトランザクションに関連する予想最長時間を実験的に測定する方法において具現することができる。特定の各フラッシュメモリデバイス(またはフラッシュメモリデバイス群)が、所定のメモリトランザクションを実行し、完了の成功に必要な時間を実験的に測定することにより事前に特徴付けられる。このテストは、例えば、製造時、機械が電源投入される都度、所定の較正間隔で、メモリトランザクションが発生したときに単純にそのメモリトランザクションを観察し、較正パラメータを更新することにより、またはこれら組み合わせにより、実行される。較正は、デバイス、チップ、ブロック、ページ、または他の何等かのレベルを含め、メモリの任意の下位区画または「単位」で実行し得る。
事前特徴付けは、従来の方式を使用して得られるよりも大きな粒度でのメモリ管理を得ることを目的として、予想最長トランザクション時間(例えば、プログラミングまたは消去)を測定するために実行し得る。
これら機能を実行するために、所定のトランザクションは、任意の同様のトランザクションのうち、最長の時間がかかると予想されるトランザクションとして選択し得る。例えば、考慮中のメモリの最長消去時間を測定することが望まれる場合、考慮中のメモリのすべてのビットを反転させて、そのメモリ(例えば、チップ、ブロック、ページ、またはメモリの他の下位区画単位)を消去するトランザクションを選択することができ、同様に、特にNANDベースのフラッシュメモリの最大プログラミング時間を決定することが望まれる場合、適した一較正トランザクションは、考慮中のメモリのすべてのビットを反転させて、これらビットを(例えば、消去された状態から)プログラムする。これらのみが選択可能なトランザクションであるわけではなく、例えば、最大値を選択するために、データ書き込みおよびデータ消去のパターンまたはパターンの組み合わせを使用することも可能である。例えば、場合によっては、0−1パターンをプログラムし、次に、そのパターンを反転させ、1−0パターンをプログラムし、最大値をとり得る。当業者は、多くの他の可能性にも想定するであろう。トランザクション時間は、プログラムまたは消去できるメモリセル毎に変化するため、すべてのビットの変更に必要な最長時間、ひいてはすべてのメモリセルのすべての特徴を効率的に測定することにより、必然的にトランザクションにより影響を受ける最も遅いメンバセルのプログラミングまたは消去も含め、メモリトランザクションにかかると予想し得る最長時間の測定値を得ることが可能である。この最長時間は、本発明を使用しない場合には「一律」にフラッシュメモリに適用され得る汎用タイムアウトまたは最大プログラム検証サイクルカウントよりも小さく正確であると予想される。時間は、クロックサイクル、プログラム検証サイクルを単位として、または他の何等かの適した尺度を使用して測定することができ、オーバープログラミングを回避するために、制御電圧が定期的に逓増逓減されるシステムに印加される最大電圧を単位として測定することもできる。
事前特徴付け(または較正)は、測定データに基づくため、メモリの「遅い」単位、すなわち、従来では「不良」とマークされるメモリのブロックまたはページを、それにも拘わらず依然として潜在的に使用することができる。メモリを較正することにより(特に、複数の制限時間が使用される場合)、本明細書に開示される実施形態では、複数のトランザクションモードが可能であり、おそらく、「遅い」単位も依然として、時間性能が重要ではないモード(オペレーティングシステムまたは特定用途要件により決まり得るような)で使用することができる。
フラッシュメモリのプログラミング時間または消去時間のばらつきの問題および長いタイムアウトがメモリコントローラにより使用される理由は、フラッシュメモリの設計ならびにフラッシュメモリのプログラムおよび消去に通常使用されるステップによるアーチファクトである。これに関して、フラッシュメモリが一般にチャンクでプログラムまたは消去されることを上述したが、NORベースのフラッシュメモリは通常、「ブロック」単位で消去され、複数バイトの増分単位でプログラムされる一方、通常、NANDベースのフラッシュメモリは、NORベースのフラッシュメモリと同じくブロック単位で消去されるが、「ページ」単位でプログラムされ、各ページはブロックのさらなる下位区画である。これらトランザクションは通常、制御電圧を印加して、電荷に電極と浮動ゲートとの間を突き抜けさせることにより実行される。オーバープログラミングとして知られる状態を回避するために、セルは通常、繰り返しプログラミング検証サイクル(すなわち、複数回の繰り返し)で処理され、最初は、比較的小さな電圧が制御ゲートに印加され、正確な消去またはプログラミングがセル毎に検証され、成功が確認されなかったセルの場合、制御電圧が増大され、このプロセスが、前の任意のサイクル中に正確に消去またはプログラムしなかったセルに対して、すべての所要ビットがプログラムされるまで、繰り返される。最大電圧に達し、いくつかのセルが正確にプログラムされなかった場合、そのメモリ単位(例えば、ブロックまたはページ)は「不良」とマークされ、迂回されることがある。所要繰り返し回数(すなわち、プログラム検証サイクル数)および所要プログラミング時間は、メモリセル毎、ひいてはページ毎、ブロック毎、およびデバイス毎に変化し、このばらつきは、各セルの許容差およびトランザクションが任意の所与のデバイス内で異なり、設計がモデルおよび製造業者に従って変化するため、発生する。
動作に際して、トランザクションの時間のばらつきは通常、トランザクションが完了したため、または最大トランザクションサイクル数に達したため、トランザクションが完了したときに、メモリデバイスに「読み出し/ビジー」ピンの値またはレジスタ値を変更させることにより対処され、多くの場合、メモリデバイスは別の特定のレジスタビットも、メモリトランザクションの成功の検証を示すように設定し得る。これら値はメモリコントローラにより監視され、メモリコントローラは次に、問題の検出に応答して、考慮中のメモリ単位を「不良」とマークし得る。[単位を「不良」とマークすることは、その単位が機能不全であることを必ずしも意味せず、単純に、コントローラがその単位を迂回すべきであるか、または特別に処理すべきであることを意味する]。デバイスおよび特定のメモリ下位区画を個々に互いよりも高速化することができ、結果として、適宜管理された場合、はるかに効率的な動作が可能であり得るフラッシュメモリになる。
しかし、メモリの既知の記憶されている較正済みの統計を使用して、コントローラは、消去トランザクションまたはプログラミングトランザクション(または読み出しトランザクション等の別のメモリトランザクション)の完了に成功する時間のはるかに正確な推定を得ることができ、それにより、フラッシュメモリのより効率的なスケジューリングおよび使用が可能になる。
図1に見られるように、一実施形態は、フラッシュメモリデバイスを較正する方法を提供する。方法101は、少なくとも、メモリチップ等の個々の各メモリデバイスに対して実行され、デバイスの製造時、システムの電源投入時、所定の較正間隔で、消去トランザクションもしくはプログラミングトランザクション等のランタイムメモリトランザクションの実行中に場当たり的に、実行することができる。理想的には、較正に使用されるメモリトランザクションは、考慮中のメモリに関連する各ビットの値を変更する(単一レベルセル形態であれ、またはマルチレベルセルの形態であれ)消去トランザクションまたはプログラミングトランザクション等の特定の所定のトランザクションである。上述したように、考慮中のメモリに関連するすべてのビットを変更することは、おそらく、任意の同様のトランザクション(例えば、すべてまたはすべてに満たないメモリセルが影響を受けるページまたはブロックの任意の他のプログラミングトランザクション)に関連する最長時間および最大数のプログラム検証サイクルを含む。図1のブロック103に示すように、トランザクションが開始され、図1の機能ブロック105、107、および109に示すように、タイマが、トランザクションの実行の検証に成功するために必要な期間を測定する。テストが完了すると、方法101は、参照番号111および113に示すように、測定された期間に基づいて制限時間を記憶し、同じメモリに関わる後続するトランザクションにおいてこの制限時間を利用する。本明細書において使用する「制限時間」は、プログラミングトランザクション、消去トランザクション、または他のメモリトランザクション(読み出しトランザクション等)等のメモリトランザクションの動作を測定または制限する任意のメカニズムを指すことができる。
所望であれば、図1のオプションのブロック105に示すように、フラッシュメモリデバイスに、例えば、読み出し専用領域または制御動作用に予約された他の領域にデフォルト制限時間を事前にプログラムすることができ、例えば、このような値は、デバイス製造業者により供給し得る。このような値にデバイスが提供される場合、方法101は、適宜その値に対して動作し置換してもよく、または値を他のメモリ(例えば、揮発性メモリ)にコピーし、コピーに対してのみ動作し、後で(例えば、次の電源投入時に)使用するために元の値を保持してもよい。一実施形態では、別個の制限時間が各種類のメモリトランザクションに提供され、例えば、プログラミングトランザクションの制限時間、消去トランザクションの制限時間、および読み出しまたは他のトランザクションの制限時間が提供され、各リミットは、本明細書において考察される原理に従って更新され調整される。後述する実施形態のうちのいくつかでは、理解を容易にするために、1つのみのこのようなリミットがプログラミング動作または消去動作のいずれかに対して働いているものと仮定すべきであるが、本明細書において考察する原理はそのように限定されない。
図2は、フラッシュメモリのトランザクション時間を測定するシステム201を示す。より詳細には、フラッシュメモリ領域203は、参照番号204で表されるいくつかの下位区画単位、例えば、ブロック、ページ、または他の単位を含み得る。トランザクションタイマ205が、領域に動作可能に結合されて、メモリ領域に関わる少なくとも1種類のトランザクションの時間を測定する。比較器209を使用して、このタイマにより計算される値を、関連するメモリ領域のバッファまたはレジスタ207に保持されている値と比較することができる。一実施形態では、レジスタは、各メモリ単位204に専用の値を保持し、これらトランザクションは個々の各メモリ単位で実行される。
図2は、使用可能なメモリ単位を識別するテーブル211も示し、これに関して、万が一、任意のトランザクションのタイミングが所定の制限時間を超えた場合、任意の関連するメモリ下位区画単位204を使用制限付きとマークすることができるため、テーブル中では実際上、使用可能なメモリとして識別されない。図2は、図2の要素の多くを単一のデバイスまたはチップ内に集積できることを表す破線ブロック213を示す。すなわち、図2では、メモリチップが単純にフラッシュメモリ領域203を含み、他の要素は、コントローラおよびオフチップメモリ等の他のどこかに実装されてもよく、またはオプションとして、参照番号213に示すように、要素のうちのいくつかまたはすべてを単一のチップ内に収容してもよい。このような実施形態では、メモリコントローラ(図2には示されていない)がブロック213と対話して、チップに記憶されている任意の時間値を検索し、コントローラのメモリにコピーして、使用可能なメモリ単位を識別するオフチップテーブルを定義してもよい。これら機能のうちの多くをコンピュータオペレーティングシステムで実行することを含め、図2に見られる要素の他のレイアウトも可能である。
図3は、測定された時間を使用してメモリを管理する方法を紹介するために使用される図である。特に、図3は、参照番号303および305に示すように、コントローラが制限時間を検索し、メモリトランザクションを開始することができる方法301を示す。図3に関連する特定の実施形態では、コントローラは、その観点から、測定された時間を利用して、メモリトランザクションのスケジューリングを強化し、その結果、参照番号307に従い、コントローラは、制限時間以内にトランザクションを完了するためにトランザクションにより影響を受けるメモリデバイスを予想する。この機能は、いくつかの方法で実現顕在化することができ、例えば、破線ブロック309、311、および313が図3において使用され、コントローラが、(1)単純に前のトランザクションが関連する制限時間以内での完了に成功すると仮定し、(2)トランザクション終了時に検証機能を実行して、制限時間に基づいて成功を検証し、または(3)次のトランザクションに進み、例外処理(例えば、割り込み処理)に頼って、前のトランザクションに伴う問題を識別し得る実施形態を紹介するために使用される。オプションの(破線)機能ブロック315および317にも示されるように、メモリトランザクションは、デバイスでのトランザクション時間の能動的な管理を通して、またはメモリ命令を介して、メモリデバイスが適用すべき特定の制限時間を指定することにより、監視することもでき、このような実施形態では、コントローラは、メモリデバイスに頼り、トランザクションを関連する制限時間以内に処理することができ、コントローラは、処理の成功を能動的に確認してもよく、またはメモリデバイスに頼り、例外処理手続きを通して、例えば、ブロック313に従う処理を介して問題を報告してもよい。
図4は、コントローラ401が、命令の一部として、所定のトランザクション制限時間をメモリデバイス405に提供できるように構成されたメモリシステム401のブロック図である。1つのみのメモリデバイス405が図4に示されるが、コントローラがいくつかのメモリデバイスを管理可能なことを理解されたい。特に、図4は、異なる制限時間がそれぞれ関連付けられた異なるメモリ命令、またはおそらくはよりよく言えば、複数の代替の命令を通して通信される特定のメモリトランザクションを概念的にそれぞれ表すいくつかの信号線407を示し、例えば、図4のコントローラは、メモリ命令の一部として、メモリデバイスに対するプログラム検証サイクル数を指定し得る。これら異なる命令を処理するために、メモリデバイス405は、メモリデバイスに動作を対応するプログラム検証サイクル数に制限させるオンボード命令論理を有し得る。上述したように、メモリデバイスは、「レディ/ビジー」ピンの出力を変更することにより、完了の成功を報告してもよく、またはコントローラもしくは例外処理回路により監視し得る値415を特に記憶するようにレジスタ413を変更してもよい。図4は、デバイスが制限時間を記憶するために使用し得るテーブル417も示す。例えば、他の実施形態の考察と併せて上述したように、制限時間は、不揮発的にメモリデバイス405に記憶し、コントローラ403またはオペレーティングシステムにより能動的な管理のために検索されてもよい。他の動作も可能である。例えば、一度計算された制限時間を任意の数のメモリロケーションに記憶し、実装に応じて、メモリデバイス、コントローラ、オペレーティングシステム(またはアプリケーション)が制限時間を使用してもよい。
図5は、フラッシュメモリデバイス(例えば、フラッシュメモリチップ)503が、実行中にメモリトランザクションを監視し、測定されたパラメータを使用してオンボードタイムアウト機能を実施することができるシステム501を示す。1つのみのフラッシュメモリデバイスが図5に示されるが、実際には、このようなシステムがいくつかの同様のデバイス(デバイス503と同一)およびこれらデバイスのメモリトランザクションを管理し制御するフラッシュメモリコントローラ513を含むことに留意されたい。特に、図5の実施形態は、NANDベースのフラッシュメモリのプログラム検証サイクル数を単位として時間を監視することが分かる。各デバイス503は、フラッシュメモリ領域505、制限時間を記憶するレジスタ507、トランザクションタイマ509、および比較器511を含み得る。フラッシュメモリ領域は、フラッシュメモリコントローラ513の監視下で命令またはデータを記憶するために使用されるメモリページ506に編成することができる。ページサイズは設計上の選択であるが、従来、4kバイト程度の単位にメモリを編成するために使用され、それにより、1ギガバイトのメモリデバイスは通常、数10万ページ程度を有する。コントローラにより要求されるトランザクション毎に(または特定の種類のトランザクション、例えば、NANDフラッシュメモリのページのプログラミングの場合)、トランザクションタイマ509は、考慮中のページに必要なプログラム検証サイクル数を監視し、その出力を比較器511に提供する。比較器により、プログラム検証サイクルが、レジスタ507からの設定により提供される実験的に決定された制限時間を超えると決定された場合、比較器は、コントローラ513に通知するエラー状況512をアサートする。コントローラは、この信号に応答して、適切な値をメモリ使用テーブル515に書き込むことにより、または特別な処理(さらに後述)が必要であるとフラグを立てることにより、その特定のページを「不良」とマークすることもできる。
レジスタ507に記憶された制限時間の比較について、図6を参照して説明する。特に、図6は、フラッシュメモリをテストし、将来使用するために制限時間を計算する方法601を示す。図6の左側に見られるフラッシュメモリデバイス603は、いくつかのメモリ単位604を含むと共に、計算された制限時間の記憶に使用されるレジスタ605を含むこともできる。メモリ単位604毎に、メモリコントローラは、関連する単位の各ビットを反転させる所定のメモリトランザクション(または一連のトランザクション)を開始する。例えば、コントローラはまず、メモリを消去し、次に、関連するメモリ単位のあらゆるセルのあらゆるビットをプログラムするトランザクションを開始する。トランザクションが開始される都度、参照番号607、609、および611に示されるように、トランザクションタイマ(図6には示されない)は、プログラム検証サイクル数を記憶し、完了の成功を監視する。このパターンが、所定の最大値(例えば、製造業者により指定される汎用タイムアウト値)まで続けられ、トランザクションをこの最大値以内に実行することができない場合、図6の機能ブロック613に示すように、特定のメモリ単位を「不良」とマークすることができ、システムは次の単位に進むことができ、メモリの特定の要素を正確にプログラムできなかった場合、機能ブロック615および616に示すように、関連するセルへの制御電圧を増大させ、プログラミングトランザクションを再び試みることができる。しかし、トランザクションが示された最大値以内に成功した場合、システムは、機能ブロック617により図6に示すように、メモリ単位に関連して新たな値を記憶し、その新たな値をメモリ単位のリミットとして使用すべきか否かを決定する(図6の実施形態では)。例えば、単一の制限時間がメモリデバイスに対して計算される実施形態では、システムは、測定された時間が「不良」とマークされていない単位の中で最長の時間を表すか否かを判断することができ、システムがすべてのメモリ単位を処理した場合、ブロック619に示すように、この値を新たなレジスタ設定として記憶することができる。較正すべき他のメモリ単位が残っている場合、参照番号621に示すように、システムは次の単位に進む。システム制約に基づく他のより洗練された制限時間計算アルゴリズムも可能であり、オプションとして、すべてのメモリ単位が事前特徴付けされた後に実行してもよい。例えば、フラッシュメモリシステムは、所定の最大値まで、範囲内の制限時間を選択することができるアルゴリズムを使用するようにプログラムし得る。あるいは、システムは、統計的手法を利用(デバイスの実験的に測定された時間の平均よりも大きな標準偏差として制限時間を選択)するようにプログラムすることができる。破線機能617および619に示すように、時間値はオプションとして、メモリデバイスの近傍にあるか、またはメモリデバイス内のレジスタではなく、メモリコントローラに記憶してもよい。
図7は、実行時に単一の制限時間を適用する一方法を示す。特に、方法701は、メモリトランザクションに使用される実験的に測定された制限時間を計算し、この制限時間は、メモリ製造業者またはシステム統合者により供給される汎用タイミング情報よりも正確である。実行中、機能ブロック703に示すように、新たな各メモリトランザクション(例えば、NANDページのプログラムまたはブロックの消去)の時間が測定される。このシステムでは、各フラッシュメモリデバイス705は、ブロックまたはページ709に対して実行されるランタイムトランザクションに必要な任意の時間値を記憶する予約領域707を含む。番号710および711に示すように、適切な制限時間、例えば、前に決定された制限時間を比較機能に提供して、監視下にあるトランザクションの時間と比較することができる。トランザクションタイマが制限時間を超えた場合、ブロック713、715、および719に示すように、監視下にあるページまたはブロックを、特定のモードに対して「不良」であるとマークすることができ、コントローラ(図7には示されない)は、適切であれば、新たなブロックを試みることができる。あるいは、制限時間を超えなかったが、トランザクションが成功しなかった場合、ブロック717に示すように、次のプログラム検証サイクルを開始することができる。本明細書において使用される「使用制限」は、メモリまたはメモリ単位が「不良」とマークされている(すなわち、すべてに対して、または所与の動作モードに対して)ため、またはメモリが1つのメモリモードでの使用から除外されている(が、別のモード、例えば、非実行モードまたは低優先度メモリトランザクションでは使用可能であり得る)ため、メモリが少なくともいくつかのメモリトランザクションに使用されないことを意味する。
図8に示す別の実施形態では、個々の各メモリ単位804に特定の制限時間を選択し、実行粒度をさらに大きくしてもよい。図8は、図5に示すものと同様であるが、いくつかの制限時間808を記憶するバッファまたはレジスタ807を特徴とするシステム801を示す。各制限時間は、メモリ803内の単位804に対応し、プログラム検証サイクル数または他の何等かの時間尺度で表すことができる。図5と併せて上述した構造と同様に、トランザクションタイマまたは同等のメカニズム809を使用して、所与のメモリ単位804に関わる各メモリトランザクションの関連する時間以内の完了を効率的に監視することができる。次に、タイマの出力810は、比較器811に提供することができ、比較器811は、メモリ単位のランタイムトランザクションが所定の制限時間以内に首尾良く完了しなかったことをコントローラ813に信号または他の様式で通知し、例えば、比較器は、エラー信号812を生成することができ、それにより、フラッシュメモリコントローラ813にメモリ使用テーブル815内で特定の単位をマークさせる。図8の破線ブロック803は、これら機能の多くを単一のフラッシュメモリデバイス、例えば、メモリチップに統合してもよく、あるいは、メモリ使用テーブル815等の機能をシステムの他のどこか、例えば、コントローラ813専用のメモリ内、予約ページの領域内、拡張ページ領域内、SPDモジュール内、ハードディスク上、ソフトウェアバッファ内、または他の何等かのメカニズムを介して記憶してもよいことを表す。
ランタイムモードで使用される単位毎の制限時間の計算についても図6を参照して説明する。特に、図6は、ブロック617において、各時間値をバッファまたはレジスタ設定605に記憶することができることを示し、単位毎の制限時間の比較が望まれる場合、破線機能ブロック619は、機能ブロック617の機能と結合され、最大値決定スレッドは利用されない。すなわち、所定の「テスト」トランザクションの結果として計算される各時間値が単純に、対応するメモリ単位の制限時間として使用される。
上述したように、メモリ較正はいくつかの方法で使用することができる。
第1に、図7と併せて上述したように、フラッシュメモリデバイスに対する単一のリミットを計算し、実行中に、メモリトランザクションの時間が長すぎるか否かを決定するために使用してもよく、あるいは、図3および図4を参照して上述したように、コントローラは、任意のトランザクションが関連するリミット以内に完了したと効率的に仮定して、測定された時間をメモリ動作のスケジューリングに使用してもよい。図8を参照して今しがた上述したように、いくつかの異なるメモリ下位区画のそれぞれに固有の複数の制限時間を計算してもよい。上述した用途では、これら各実施形態は、メモリトランザクションをより一貫してスケジュールし、メモリトランザクションが予想期間以内に完了したことの信用を獲得し、トランザクションが予想され実験的に決定されたリミット以内に完了しない場合、単位をマークするために適用することができる。いくつかの実施形態では、マークされた単位は、特定の動作モードに対して「不良」であるとみなしてもよく、または単純に、例えば、関連する制限時間を単純に増分させることにより特別に処理してもよい。しかし、較正メモリの他の使用も可能であり、このために、いくつかの実施形態を図および以下の説明において提示する。
図9および図10に示す一実施形態では、複数のリミットを計算することができ、オペレーティングシステムまたはアプリケーションが、関連するリミットをそれぞれ有する複数のメモリモードからモードを選択し得る。これに関して、上述したいくつかの実施形態は、実験的に決定されたリミットに基づいて各メモリ単位を使用可能または「不良」と判断するが、メモリ単位をソートまたは優先順位付けるために、実験的に測定されたパラメータを使用してもよい。図9および図10の実施形態では、2つ以上のリミットを、例えば、統計的パラメータに基づいて計算することができる。仮定的な一実施態様では、1つのリミットを、メモリ単位のうちの少なくとも70%によるトランザクション処理の成功に関連する予想処理時間を表すものとして選択し、第2の制限時間を、少なくとも90%の単位による予想トランザクション処理成功を選択するために選び得る。次に、メモリ単位の特定のサブセットを、選択された特定のメモリモードに応じて使用可能として定義し得る。例えば、性能が、長いプログラミング時間に対する許容さが低い要因である場合、メモリテーブル(図2のテーブル211等)は、全体のメモリのうちの最高速から70%までのメモリ単位のみを識別し得る(そして、その他のより遅いメモリ単位を使用制限付きに予約したものとして、すなわち、性能モードに関しては「不良」であるが、別のモードでは恐らく不良ではないものとして識別する)。あるいは、オペレーティングシステムまたはソフトウェアが、性能があまり重要ではないモードを利用する場合、メモリ単位を使用可能または「不良」として判断するために、より大きな制限時間を適用することができ、メモリテーブルはより多数のブロックを使用可能なものとして識別する。
図11および図12に示すさらに別の実施形態では、最大トランザクションリミットをメモリ単位毎に計算し、次に、各メモリ単位の選択を優先順位付けることができる。例えば、いくつかのメモリ単位が、特に良好な性能を有すると測定された場合、これら単位は、システム全体の性能を向上させるために高頻度のトランザクションを必要とすると予想されるメモリに使用し得る一方で、より遅いメモリ単位を低頻度のトランザクションに使用して、システム全体の性能に対する影響も最小に抑えるように、性能に対する影響を最小に抑えることができる。
最後に、メモリの較正は繰り返し可能なものであり、ある動作モードでは無視されるページまたはブロックを、異なる動作モードでは潜在的に許容可能なものとして再定義するために使用される。図13を使用して、前に「不良」とマークされたメモリ単位を再較正する方法を示す。
こうして提示された原理部分を使用して、上述した方法およびデバイスのいくつかのさらなる使用法をこれより紹介する。
II.複数のフラッシュメモリモードの使用
実際には、少数のみのメモリ単位が上述したようにマークされることが予想される。それにも関わらず、フラッシュメモリスケジューリングのために、特にメインメモリ等の高ターンオーバーアプリケーションのために、メモリトランザクションスケジューリングのために最大量の一貫性および予測可能性を有することが望まれる。このために、比較的小量のばらつきであっても、フラッシュメモリの使用に障害を生み出す恐れがある。上述した実施形態は、フラッシュメモリ実施形態でのメモリトランザクションのより効率的な使用およびスケジューリングを提供するが、それ自体はフラッシュメモリの使用でのばらつきを完全にはなくさない。
したがって、一実施形態は、上述した構造および方法を利用して、複数のメモリモードを可能にする。例えば、上述した事前特徴付け方法を使用して、メモリをトランザクション時間に従って編成することが可能である。あるモードでは、性能を強調することができ、メモリトランザクション時間のばらつきに対する許容差が殆どない。例えば、上述した較正方法およびメモリ単位毎の測定(例えば、ページ毎またはブロック毎の最大トランザクション時間)を使用して、「最高速の」メモリ単位を識別し、処理をそれら単位のみに制限し、残りの単位を、その特定の動作モードに対しては「不良」とマークすることが可能である。[上述したように、単位をある動作モードに対して「不良」とマークすることは、単位を他のモードまたは特別な目的では使用可能であり得ることを暗示する、単位をマークする言葉「最大限でも使用制限付き」により包含される]。逆に、性能が重要ではない場合、例えば、フラッシュメモリが補助記憶デバイスとしてのみ使用される場合、トランザクション時間の広範囲のばらつきを許容することが可能である。本明細書において説明する較正方法は、フラッシュメモリの異なる仕様モードの使用に役立ち、それにより、フラッシュメモリの潜在的な市場および用途を広げる。任意の数のモードまたはモードを区別する基準は、所望の実装に合うように熟練した設計者により選択し得る。
図9は、複数モードシステムでのランタイム方法901のブロック図を示す。特に、参照番号903に従って、動作モードがまず、メモリコントローラ、アプリケーション、オペレーティングシステム、または他の何等かの制御メカニズムにより選択される。図9では、「N」個の異なるモードが参照番号905、906、および907により識別される。理解を容易にするために、以下の説明では、高性能モード(短い制限時間が定義され、許容されるメモリトランザクション時間のばらつきは低く、そのため、スケジューリングでの予測可能性が高い)および大容量記憶モードを含む厳密に2つの異なるモードが利用されるものと仮定すべきであり、大容量記憶モードでは、ばらつきはあまり重要ではなく、単純に、コントローラのオーバーヘッドを最小に押されるようにブロックまたはページを「不良」と方便的にマークすることが望まれる。選択されたモードに応じて、機能ブロック909に示すように、適切な制限時間が選択される。上述した様式と同様に、各制限時間は、所望であれば、メモリデバイス911の保護部分またはレジスタ910に記憶することができ、メモリコントローラは、モードに該当するフラッシュメモリデバイスを見分ける必要があるだけである。あるいは、フラッシュメモリコントローラ(図9に示されない)は、制限時間を計算して記憶し、各メモリデバイス911内のレジスタ設定に関連する制限時間をプログラムしてもよい。上述した様式と同じように、機能ブロック917に示すように、タイマ913または同等のメカニズムを使用して、各メモリトランザクション中のメモリトランザクション時間を測定することができ、トランザクション時間は、関連する制限時間と突き合わせて測定される。性能モードが選択される場合、制限時間はより小さく、記憶モードが選択される場合、より緩い制限時間が選択される。前にも述べたように、時間は、プログラム検証サイクル数、クロックサイクル数、または所要制御電圧等の他の何等かの尺度の使用を含め、任意の適した単位を使用して測定することができる。機能ブロック919および921に示すように、メモリトランザクションが、実験的に決定された「性能モード」制限時間に関して時間切れした場合、関連する単位は「不良」とマークされ、コントローラは、異なるブロックまたはページを試みる。所望であれば、破線のオプションブロック923に示すように、「不良」とマークされた単位915は、より低順位のモードでは使用可能であるとの目印を付けることができ、例えば、システムは、特定のメモリ単位を性能モードメモリ使用テーブルでは「不良」とマークし、同様に、その特定のメモリ単位を次位のメモリ使用テーブル(例えば、2つのモードが使用される場合、記憶モードのメモリ使用テーブル)では使用可能とマークすることができる。しかし、メモリトランザクションの性能が首尾良く検証される場合、ブロック925および927に示すように、システムは、そのメモリトランザクションを終了し、キュー内の次のメモリトランザクションに進む。
上記説明から理解されるように、複数モードの使用により、プログラマまたはシステム設計者は、フラッシュメモリの管理においてトレードオフを考慮し、そのメモリに動的に適応することができる。個々のメモリ単位の性能を実験的に測定し、事前に特徴付けることにより、これら単位を異なる動作モードに割り当て、それにより、単純に汎用処理タイムアウトに頼るだけでは得られないように、効率的なスケジューリングおよびシステム管理が促進される。
図10は、複数モードで使用されるようにフラッシュメモリを構成するコントローラに実装される方法1001を示す。特に、1つまたは複数のフラッシュデバイス(図10には示されない)に関連する各メモリ単位は、参照ブロック1003に示すように、上述したように較正され特徴付けられる。すなわち、各単位が、(i)単位が、従来の汎用タイムアウトに違反するため「不良」であるか否かを決定し、(ii)最初は「不良」とマークされていなかった単位がより高速に動作可能であるか否かをさらに決定する所定のトランザクションを経験する。この方法は、図6と併せて説明したように、各単位の最大トランザクション時間を実験的に測定する。これら時間が得られると、方法は次に、機能ブロック1011に示すように、各モードを一意に特徴付ける特徴を識別する。例えば、各モードは、関連する基準セットを有して図10に示され、第1のモード1005は「50%」と記され、「速いほう」から半分のメモリ単位のみがこの「性能モード」に選択されることを示す。同様に、第2のモード1007は70%と記され、「速いほう」の70%の単位をこのモードに選択すべきであることを示し、同様に、N番目のモードはnと記され、n基準がこのモードを特徴付けるために適用されることを示す。[特に、これら値は、説明のために使用される単なる仮定であり、実際には、メモリ単位は正規分布のプログラミング時間を有さず、そのため、割合に基づく手法は最適に満たない恐れがあり、広範囲の統計的手法を含む他の手法が、効率的なフラッシュメモリ適用にはより適切である可能性があり、デジタル設計の当業者により設計目的に従って容易に選択可能なことを理解されたい。]
モード毎に、方法1001は次に、参照番号1013〜1023に示すように、モード特徴を適用して、メモリ使用テーブルを構築する。このテーブルは、特定のモードと併せて使用し得るメモリ単位および逆に、どのメモリ単位が特定のモードに対して「不良」とマークされているかを示す。各メモリモードのテーブルが作成されると、例えば、図9に示す方法に従い、システムを実行時動作で使用することができる。
III.較正を使用してのフラッシュ内の優先順位付け
事前較正されたフラッシュメモリモードに加えて、本明細書において考察する方法およびデバイスは、メモリ使用を優先順位付けるために利用することもできる。今しがた示したように、通常の実施では、大半のフラッシュメモリ単位が比較的高速に実行し、遅い、すなわち「不良」の単位が極めて少数であると予想することができる。したがって、メモリを選択可能なモードに従って編成するのではなく、優先順位に関してメモリをランク付けすることも可能である。例えば、多数のメモリ単位がすべて、プログラミングに特定の比較的小さいプログラム検証サイクル数を必要とすることを特徴とする場合、これら単位を「最高速」メモリとしてランク付けし、メモリトランザクションをこれら単位に偏向させる。例えば、「高速」単位に、比較的頻繁菜ターンオーバーを含むメモリトランザクションに充て、それにより、全体時間を最小に抑えることができ、これら単位は、より重要なデータの記憶に充てることもできる。優先順位に従ってフラッシュを編成することは、上述した法補と同様であり、これについて図11および図12を参照して説明する。
図11は、上述した方法を使用してフラッシュメモリデバイス1103の最大トランザクション時間を測定する方法1101を示す。特に、メモリの下位区画1104を、機能ブロック1105に示すように、所定のメモリトランザクションを使用して較正し得る。[所望であれば、この方法は、個々のフラッシュメモリデバイスをメモリ単位として使用して、例えば、この方法を複数モード用途と結合して、利用することもでき、あるフラッシュメモリデバイスに別のフラッシュメモリデバイスよりも高い優先順位を与えることができ、複数のフラッシュ使用モードをフラッシュデバイスのサブセットまたは特定の優先順位レベルを有するフラッシュメモリのみに対して実施することができる。]上述した方法と同様に、所定のメモリトランザクションは、理想的には、メモリ単位に関連するすべてのビットを消去状態からプログラム状態(消去動作の場合、プログラム状態から消去状態)に変更するトランザクション等の、可能な限り多数のセルのプログラミングまたは消去を必要とするものが選択される。方法は次に、プログラム検証を前に決定されたリミット(例えば、前の較正中に計算された単位固有の制限時間)、汎用タイムアウト、またはこれら両方と比較し得る。該当する場合(すなわち、単位を最大時間以内に検証できない場合)、応答のよくないメモリ単位は「不良」とマークされる。これら機能は、参照番号1107、1109、1111、および1113に示される。参照番号1115および1116に示すように、検証されたトランザクションが、ブロック1111に示される最大タイムアウト期間を超えない場合、新たに較正されたリミットをデバイスメモリの予約部分に記憶し得る。次に、方法1101は、機能ブロック1117および1118に示すように、考慮下のすべてのフラッシュメモリ単位が処理されるまで続けられる。
メモリの較正が完了すると、システムは、機能ブロック1119および1121のそれぞれに示すように、較正されたフラッシュメモリの優先順位付けおよび適切なメモリ使用テーブルの構築に進む。設計環境に適切な所望の略あらゆる優先順位付け方式を実装し得る。例えば、フラッシュメモリの「最高速」のいくつかの各群が、各自の優先順位を受けてもよく、または他の何等かの方式を利用してもよい。
図12は、仮定的な優先順位付け方式1201を示す。特に、各テーブルは、優先順位インジケータおよび一致する優先順位を有するメモリ単位を示すテーブルからなり得る。図12では、3つのレベルの優先順位1203、1205、および1207が示され、各優先順位は、「N」個のメモリ単位が配分された照合テーブル1203、1205、および1207を有する。図12に示す優先順位は、少数の単位のみを参照して示されるが、実際には、「N」の値が何千または何百万でさえあり得、例えば、メモリデバイス内に何千ものページが潜在的にあることが観察されるはずである。上述したように、メモリを定期的に再較正することができ、結果として、メモリ単位の優先順位が再び割り当てられ、結果として、単位の優先順位が変更されることになる。実行中、オペレーティングシステムまたはアプリケーションソフトウェアは、優先順位に従ってメモリをブッキングしてもよく、またはメモリトランザクションに使用されるべき最高または最低の優先順位を指定してもよい。
IV.前にマークされた単位の再較正
特に、複数のフラッシュメモリモードに頼るシステム、またはフラッシュメモリ単位が優先順位付けられるシステムでは、マークされた(例えば、あるモードでは「不良」と)メモリ単位を異なるモードで使用可能であり得ることが可能である。図13は、前にマークされたメモリ単位を再較正し、潜在的に有利なように利用できるようにする方法を説明するために使用される。
図13のブロック1303に示すように、再較正方法1301は、1つまたは複数のコントローラ使用テーブルにアクセスして、前にマークされたブロックを識別する。単位が、性能がちょっと悪かっただけでマークされたため、関連するメモリ単位がまだ、より大きなリミット以内では信頼可能に動作可能であることがあり得る。したがって、方法1301は、参照番号1305に示すように、任意の該当する制限時間を最大の汎用タイムアウトに設定する。本方法は次に、所定のトランザクションを識別された各メモリ領域に対して実行し、利用される特定のトランザクションは、ここでも、上述したように、かつ番号1307に示すように、任意のメモリ単位プログラミングトランザクションまたは消去トランザクションに関連する最大時間を理想的に測定するトランザクションである。トランザクションが時間切れした場合、ブロック1309および1311に従い、システムはここでも、特定の単位を「不良」とマークし、次に、再較正する次の単位に続くことができ、トランザクションが時間切れしない場合、方法は、周知の方法を使用してトランザクションの実行の成功の検証に進むことができ(すなわち、ブロック1313により暗示されるように、トランザクションの成功を検証できない場合、方法は次のプログラム検証サイクルに続く)。トランザクションに成功すると、機能ブロック1317に示すように、方法は、実験的に測定された時間を、フラッシュメモリ1315に記憶された任意の前の値と比較し、処理中の各単位は、先のある動作においてマークされており、そのため、このような任意のマーク(および任意の前に決定された値)は、新たに実験的に測定された値で置換される。参照番号1319に示すように、方法はこのようにして進み、再較正が望まれる各単位を処理し、メモリ使用テーブルを適宜変更する。すべてのメモリ単位が処理されると、再較正は完了したと考えることができる。
前に使用制限付きとマークされたメモリ単位を効率的に再考するメカニズムを提供することにより、方法1301は、フラッシュメモリの使用を広げ、低順位モードで、または他の制限付きの目的のために、劣化したメモリを使用できるようにする方法を提供する。方法1301の結果として、必ずしも再較正された単位が特に特定のモードに割り当てられる必要はない。例えば、例えば、再較正された単位が、例えば、予約メモリとしての使用または他の使用等の専用アプリケーションに再割り当てすることも可能であり得る。メモリ動作を完了しなかった単位を必ずしも「不良」とマークする必要はない。例えば、関連する制限時間を増分することにより(例えば、1だけ、そして該当する場合、メモリを再び較正することにより)、例えば、別の形態の特別な処理をこれら単位に提供することも可能である。しかし、明白であるはずのように、説明される方法は、フラッシュメモリの使用を強化すると共に、フラッシュメモリの潜在的な用途を広げる柔軟性を提供する。
V.結び
フラッシュメモリに関連する予想トランザクション時間を実験的に測定する方法を提供することにより、本明細書において説明される方法およびシステムは潜在的に、フラッシュメモリを適用できる用途を広げる。例えば、フラッシュメモリが魅力的なコスト、フォームファクタ、電力特徴、および熱的特徴を示すが、フラッシュメモリの固有のリミットにより、フラッシュメモリをいくつかの用途に使用することが妨げられていることを上述した。実験的に測定したデータの使用を通してフラッシュメモリのより確実なスケジューリングに役立つことにより、かつフラッシュメモリ再較正および複数のメモリ動作モードおよび優先順位付け方式での使用を可能にする方法を提示することにより、上述した実施形態は潜在的に、潜在的にメインメモリまたはフラッシュメモリにとって従来なかった市場を表す他の用途を含め、より大きな規模でのフラッシュメモリの使用を促進する。
こうしていくつかの例示的な実施態様を説明したが、当業者が様々な代替、変更、および改良を容易に思い付くことが明白であろう。当業者は、フラッシュメモリシステム以外のシステムへの本明細書において説明した原理の適用を容易に思い付くであろう。上述したように、熟練した設計者は、例えば、デバイス尺度、ブロック、ページ、または他の尺度を含め、任意のレベルの粒度を使用して上述した方法およびシステムを実装することもできる。同様に、プログラミングトランザクションは、較正可能な唯一のトランザクションではなく、特定の種類のメモリトランザクションのみのリミットの計算に限定もされず、上述した方法は、トランザクションタイプ(例えば、消去トランザクションvs読み出しトランザクションvsプログラミングトランザクションvs他のトランザクション)の時間の計算に適用することもでき、あるいは、すべての目的で使用される制限時間を1つのみの、比較的時間のかかるトランザクション(例えば、プログラミング動作)に基づかせることもできる。セルのプログラムに使用される制御電圧が段階的に増大されるシステムでも同様に、クロックまたはプログラム検証サイクルに代えてプログラム電圧を監視することにより、許容時間を最小に抑えることができる。上に明示的に提示した用途以外にも、フラッシュメモリ較正の他の潜在的な用途があり得る。上記説明では、フラッシュデバイス自体のレジスタ内に記憶されるテーブルを参照したが、これらテーブルおよび関連する値が、フラッシュアレイ、フラッシュコントローラ、オペレーティングシステム、または他の任意の形態のメモリ(DRAMまたはハードディスク等)に記憶されてよいことも理解されたい。このような代替、変更、および改良は、はっきりと上述されていないが、それにも関わらず、本開示の趣旨および範囲内にあることを意図され、そのように暗示される。
したがって、上記考察は単なる例示を意図し、メモリシステムを構成する特定の1つの方法およびシステムの例を提供することを意図し、当業者は、他の設計、使用、代替、変更、および改良も思い付くであろう。それにも関わらず、それらは本開示の趣旨および範囲内にあり、本開示の趣旨および範囲は、以下の特許請求の範囲およびその均等物によってのみ限定され規定される。

Claims (5)

  1. 複数のページを含むフラッシュメモリデバイスを利用する方法であって、
    前記複数のページのうちの少なくとも1つのページについてトランザクション時間を特徴付けるステップを含み、
    前記特徴付けるステップは、
    メモリ動作を前記少なくとも1つのページ内のメモリセルに対して実行するステップであって、前記メモリ動作は、前記メモリセルがプログラムされた状態または消去された状態のうちの一方になるまで、一連のプログラム検証サイクルを実行することを含む、ステップと、
    前記一連のプログラム検証サイクルに関連する時間遅延を測定するステップと、
    前記少なくとも1つのページの前記トランザクション時間に対応する、前記測定された時間遅延に基づくリミットを記憶するステップと
    を含み、
    前記方法は、さらに、
    メモリ動作が前記少なくとも1つのページに向けられた前のメモリ動作に関連する前記リミットの終了に先行することがないように、前記リミットに基づいて、前記少なくとも1つのページに向けられたメモリトランザクションをスケジューリングするステップと
    を含み、
    前記測定するステップは、前記メモリセルのうちの任意のメモリセルによる前記メモリ動作が完了する前記プログラム検証サイクルの最大数に基づいて、前記時間遅延を測定するものであり、
    前記少なくとも1つのページは、第1の数のページのうちの1つであり、
    前記方法は、
    前記第1の数のページよりも大きな第2の数のページの第2のトランザクション時間を特徴付けるステップであって、前記第2の数のページのうちの少なくとも1つのページは、前記第1の数のページのうちの1つである、ステップと、
    前記第2のトランザクション時間に基づいて、最初に述べた前記リミットよりも長い第2のリミットを記憶するステップと、
    アプリケーションがメモリ容量よりも性能を必要とするか否かに基づいて、前記最初に述べたリミットまたは第2のリミットのうちの一方を選択するステップと、
    後続するトランザクションが、前記第1または第2の数のページのうちの特定のページで実行されるべき場合、それに応答して、前記後続するトランザクションが前記選択されるリミット以内に完了しなければ、前記特定のページをマークするステップと
    をさらに含む、方法。
  2. 前記少なくとも1つのページの前記トランザクション時間を定期的に再び特徴付け、それにより、前記リミットを再決定するステップと、
    前記再決定されたリミットに基づいて、前記少なくとも1つのページが関わる後続するメモリトランザクションをスケジューリングするステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記定期的に再び特徴付けるステップは、(i)デジタルシステム電源投入、(ii)所定の較正間隔、(iii)プログラミングトランザクション実行、および(iv)消去トランザクション実行のうちの少なくとも1つの間に実行される、請求項2に記載の方法。
  4. 前記複数のページの異なるページについて異なるリミットを記憶するステップと、
    後続するメモリトランザクションが、前記複数のページのうちの特定の1つのページに対して実行されるべき場合、前記関連するリミットを検索し、それに応答して、前記後続するトランザクションが前記関連するリミット以内に前記複数のページのうちの前記特定の1つのページに関して完了しない場合、前記複数のページのうちの前記特定の1つのページをマークするステップと
    をさらに含む、請求項に記載の方法。
  5. 前記少なくとも1つのページの前記トランザクション時間を定期的に再び特徴付けるステップであって、それにより、前記リミットを再決定するステップをさらに含み、
    前記定期的に再び特徴付けるステップは、コンピュータのオペレーティングシステムにより実行される、請求項1に記載の方法。
JP2010539944A 2007-12-21 2008-12-23 フラッシュメモリタイミングの事前特徴付け Active JP5603778B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US872407P 2007-12-21 2007-12-21
PCT/US2008/088223 WO2009086417A1 (en) 2007-12-21 2008-12-23 Flash memory timing pre-characterization for use in ormal operation

Publications (2)

Publication Number Publication Date
JP2012513652A JP2012513652A (ja) 2012-06-14
JP5603778B2 true JP5603778B2 (ja) 2014-10-08

Family

ID=40459781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010539944A Active JP5603778B2 (ja) 2007-12-21 2008-12-23 フラッシュメモリタイミングの事前特徴付け

Country Status (5)

Country Link
US (3) US8484407B2 (ja)
EP (1) EP2286412A1 (ja)
JP (1) JP5603778B2 (ja)
KR (1) KR101184953B1 (ja)
WO (1) WO2009086417A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2286412A1 (en) 2007-12-21 2011-02-23 Rambus Inc. Flash memory timing pre-characterization for use in ormal operation
US8825940B1 (en) 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
US9176859B2 (en) * 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US10079048B2 (en) * 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
TWI486966B (zh) * 2010-02-04 2015-06-01 Phison Electronics Corp 快閃記憶體儲存裝置、其控制器與寫入管理方法
JP2012027964A (ja) * 2010-07-20 2012-02-09 Panasonic Corp メモリ装置及びcpuの制御方法
US8499201B1 (en) * 2010-07-22 2013-07-30 Altera Corporation Methods and systems for measuring and presenting performance data of a memory controller system
US8806106B2 (en) * 2010-11-12 2014-08-12 Seagate Technology Llc Estimating wear of non-volatile, solid state memory
IT1403667B1 (it) * 2011-01-31 2013-10-31 St Microelectronics Srl Dispositivo di memoria con misurazione interna di parametri funzionali
US8659954B1 (en) * 2011-09-14 2014-02-25 Adesto Technologies Corporation CBRAM/ReRAM with improved program and erase algorithms
KR101949671B1 (ko) * 2012-06-28 2019-04-25 삼성전자 주식회사 라이프 싸이클을 증가시킬 수 있는 저장 장치 및 그 동작 방법
KR20140130309A (ko) * 2013-04-30 2014-11-10 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
US9442842B2 (en) 2013-08-19 2016-09-13 Sandisk Technologies Llc Memory system performance configuration
KR102187643B1 (ko) 2013-12-04 2020-12-08 삼성전자주식회사 메모리 시스템 및 그것을 포함하는 유저 장치
CN103678150B (zh) 2013-12-23 2017-06-09 华为技术有限公司 固态硬盘使用方法及装置
US9632775B2 (en) 2014-02-11 2017-04-25 Apple Inc. Completion time prediction for vector instructions
US9442734B2 (en) * 2014-02-11 2016-09-13 Apple Inc. Completion time determination for vector instructions
KR102192242B1 (ko) 2014-02-24 2020-12-17 삼성전자주식회사 메모리로 커맨드를 이슈하는 커맨드 이슈 방법 및 메모리의 커맨드 처리 방법
US9632706B2 (en) * 2015-01-04 2017-04-25 Apple Inc. Ordering of parallel data storage based on die programming durations
US10289327B2 (en) * 2015-06-05 2019-05-14 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US10146671B2 (en) * 2015-09-25 2018-12-04 International Business Machines Corporation Testing of software upgrade
JP2018041154A (ja) * 2016-09-05 2018-03-15 東芝メモリ株式会社 ストレージシステムおよび処理方法
JP6356837B1 (ja) * 2017-01-13 2018-07-11 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法
US10002649B1 (en) * 2017-02-23 2018-06-19 Sandisk Technologies Llc Preliminary ready indication for memory operations on non-volatile memory
JP6414297B1 (ja) * 2017-08-18 2018-10-31 富士通株式会社 メモリコントローラ、情報処理システム、及び不揮発性メモリの不良判断方法
US11307909B2 (en) * 2017-08-29 2022-04-19 SK Hynix Inc. System for slowdown status notification and operating method thereof
US10936205B2 (en) 2017-10-05 2021-03-02 International Business Machines Corporation Techniques for retention and read-disturb aware health binning
US10824352B2 (en) 2017-12-06 2020-11-03 International Business Machines Corporation Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded
US11029879B2 (en) 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
US10852968B2 (en) * 2018-05-07 2020-12-01 Apple Inc. Techniques for managing memory allocation within a storage device to improve operation of a camera application
US10453537B1 (en) 2018-05-10 2019-10-22 International Business Machines Corporation Techniques for reducing read voltage threshold calibration in non-volatile memory
US10699791B2 (en) 2018-08-24 2020-06-30 International Business Machines Corporation Adaptive read voltage threshold calibration in non-volatile memory
CN115552383A (zh) * 2020-08-03 2022-12-30 华为技术有限公司 闪存数据管理方法、存储设备控制器及存储设备

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3736882C2 (de) * 1987-10-30 1997-04-30 Gao Ges Automation Org Verfahren zur Echtheitsprüfung eines Datenträgers mit integriertem Schaltkreis
JP3135673B2 (ja) * 1992-05-08 2001-02-19 株式会社東芝 メモリのデータ書き込み装置
JPH0714392A (ja) * 1993-06-14 1995-01-17 Toshiba Corp 不揮発性半導体メモリおよびそれを使用した半導体ディスク装置
JPH08221993A (ja) * 1994-03-25 1996-08-30 Seiko Instr Inc 半導体集積回路装置、その製造方法及びその駆動方法
US5610906A (en) 1994-06-29 1997-03-11 Interdigital Technology Corporation Spread-spectrum changeable base station
JPH0969294A (ja) * 1995-08-31 1997-03-11 Sanyo Electric Co Ltd 不揮発性多値メモリ装置
EP0867887A3 (en) 1997-03-14 1998-11-25 Texas Instruments Incorporated Memory access time measurement circuit and method
JP3995768B2 (ja) * 1997-10-02 2007-10-24 株式会社ルネサステクノロジ 不良解析方法及びその装置
JPH11144481A (ja) * 1997-11-04 1999-05-28 Hitachi Ltd 半導体不揮発性メモリ
US6519716B1 (en) * 1999-09-22 2003-02-11 International Business Machines Corporation Electronic device initialization with dynamic selection of access time for non-volatile memory
US6205055B1 (en) 2000-02-25 2001-03-20 Advanced Micro Devices, Inc. Dynamic memory cell programming voltage
US6246611B1 (en) 2000-02-28 2001-06-12 Advanced Micro Devices, Inc. System for erasing a memory cell
JP4729179B2 (ja) * 2000-05-24 2011-07-20 株式会社アドバンテスト メモリ試験方法・メモリ試験装置
US6515909B1 (en) * 2001-10-05 2003-02-04 Micron Technology Inc. Flash memory device with a variable erase pulse
US6870770B2 (en) * 2001-12-12 2005-03-22 Micron Technology, Inc. Method and architecture to calibrate read operations in synchronous flash memory
JP2003233999A (ja) * 2002-02-07 2003-08-22 Hitachi Ltd 半導体集積回路及び半導体集積回路の製造方法
JP3866627B2 (ja) * 2002-07-12 2007-01-10 株式会社東芝 不揮発性半導体メモリ
TWI229343B (en) * 2002-11-27 2005-03-11 Univ Tsinghua Embedded memory access time measurement method and device
JP2004241045A (ja) * 2003-02-06 2004-08-26 Matsushita Electric Ind Co Ltd 不揮発性半導体記憶装置
US6940773B2 (en) 2003-04-02 2005-09-06 Infineon Technologies Ag Method and system for manufacturing DRAMs with reduced self-refresh current requirements
US7095669B2 (en) 2003-11-07 2006-08-22 Infineon Technologies Ag Refresh for dynamic cells with weak retention
KR100719380B1 (ko) * 2006-03-31 2007-05-18 삼성전자주식회사 향상된 신뢰성 특성을 갖는 다치 플래시 메모리 장치 및그것을 포함한 메모리 시스템
JP2005190604A (ja) * 2003-12-26 2005-07-14 Toshiba Corp 半導体不良解析装置及びそれを用いた不良モード分類方法
US7120888B2 (en) * 2004-07-12 2006-10-10 International Business Machines Corporation Method, system and storage medium for determining circuit placement
US7061804B2 (en) * 2004-11-18 2006-06-13 Qualcomm Incorporated Robust and high-speed memory access with adaptive interface timing
US7366013B2 (en) * 2005-12-09 2008-04-29 Micron Technology, Inc. Single level cell programming in a multiple level cell non-volatile memory device
US7567472B2 (en) * 2006-04-12 2009-07-28 Micron Technology, Inc. Memory block testing
JP2008146740A (ja) * 2006-12-08 2008-06-26 Sharp Corp 半導体記憶装置
EP2286412A1 (en) 2007-12-21 2011-02-23 Rambus Inc. Flash memory timing pre-characterization for use in ormal operation

Also Published As

Publication number Publication date
US20110191526A1 (en) 2011-08-04
US8484407B2 (en) 2013-07-09
KR20110043517A (ko) 2011-04-27
US9934866B2 (en) 2018-04-03
KR101184953B1 (ko) 2012-10-02
JP2012513652A (ja) 2012-06-14
WO2009086417A1 (en) 2009-07-09
US20150162092A1 (en) 2015-06-11
EP2286412A1 (en) 2011-02-23
US8990485B2 (en) 2015-03-24
US20140006691A1 (en) 2014-01-02

Similar Documents

Publication Publication Date Title
JP5603778B2 (ja) フラッシュメモリタイミングの事前特徴付け
US11216323B2 (en) Solid state memory system with low power error correction mechanism and method of operation thereof
EP3069348B1 (en) Data management with modular erase in a data storage system
US10592126B2 (en) Memory management method, memory storage device and memory control circuit unit
US10360987B2 (en) Managing refresh for flash memory
US9146850B2 (en) Data storage system with dynamic read threshold mechanism and method of operation thereof
US10241701B2 (en) Solid state memory system with power management mechanism and method of operation thereof
US20100199020A1 (en) Non-volatile memory subsystem and a memory controller therefor
KR20120116976A (ko) 전류 스파이크를 제한하기 위한 동작들의 제어 및 시차를 둔 실행
JP2011070346A (ja) メモリシステム
KR20090003239A (ko) 제어되는 프로그램/삭제를 갖는 비휘발성 메모리
US8902665B2 (en) Solid state storage system for uniformly using memory area and method controlling the same
US9361951B2 (en) Statistical peak-current management in non-volatile memory devices
US9817595B2 (en) Management of peak power consumed by multiple memory devices
US9952779B2 (en) Parallel scheduling of write commands to multiple memory devices
US11810625B2 (en) Solid-state memory with intelligent cell calibration

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130308

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130510

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130517

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130716

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130808

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130903

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140714

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140722

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140822

R150 Certificate of patent or registration of utility model

Ref document number: 5603778

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250