(57)【要約】  本開示は、同一メモリ空間に関る複数ページの読み出し、消去、または書き込みを並行して処理する不揮発性メモリデバイスを提供する。デバイスは、各々の読み出しまたは書込み要求に各々動的に割り当てられているクロスバーおよびページバッファの組に依存する。デバイスはまた、外部データバスを介してバッファの内外へデータを転送すべくバッファが使用されている間にマルチサイクル状態変更動作を実行できるように、ＩＯ制御からメモリアレイ制御を分離する。この構造を用いて、メモリデバイスは、ページが直ちにバッファにロードされ、次いで書き込みデータレジスタまたは外部バスのいずれかに適宜転送すべく「パイプライン化」できる複数の処理を受理することができる。不揮発性メモリデバイス、特にフラッシュデバイスのプログラムおよび消去に関連付けられた長い「使用中時間」を大幅に短縮することにより、本開示はそのようなデバイスの潜在的な用途を大幅に拡大する。【選択図】  図１
2012511789.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶ユニットを有し、各ユニットが、一括的にプログラムする必要がある記憶空間の最小量を表すメモリ記憶空間と、
マルチサイクル状態変更動作と関連して、前記ユニットの少なくとも１個のプログラミングに使用すべくデータを保持する書き込みデータレジスタと、
前記ユニットのいずれかからデータを読み出すセンスアンプ装置と、
入出力（ＩＯ）インターフェースと、
（ｉ）前記センスアンプ装置を前記書き込みデータレジスタに結合して、前記マルチサイクル状態変更動作に使用すべく前記ユニットの内容をフィードバックし、
（ｉｉ）前記マルチサイクル状態変更動作と同時に、前記ユニットの１個からの読み出しデータを前記ＩＯインターフェースに結合する内部ルーティングとを含む不揮発性メモリデバイス。
【請求項２】
前記デバイスが、（ｉ）前記センスアンプ装置と前記ＩＯインターフェースの間、および（ｉｉ）前記書き込みデータレジスタと前記ＩＯインターフェースの間にも動作可能に配置される少なくとも１個のデータバッファを更に含み、
前記内部ルーティングが、前記少なくとも１個のバッファからプログラムデータを前記書き込みデータレジスタにルーティングし、且つ前記センスアンプ装置からの読み出しデータを前記少なくとも１個のバッファにルーティングすべく適合されている、請求項１に記載のメモリデバイス。
【請求項３】
前記メモリデバイスが、前記センスアンプ装置と前記ＩＯインターフェースの間に動作可能に配置されていて、各々が少なくともメモリページを保持するサイズである少なくとも２個のバッファを更に含み、
前記内部ルーティングが、マルチサイクル状態変更動作が進行中である間、前記センスアンプ装置からデータを（ｉ）前記マルチサイクル状態変更動作と関連して前記書き込みデータレジスタと（ｉｉ）前記バッファの動的に割り当てられた１個とへ交互にルーティングして、前記マルチサイクル状態変更動作と同時に、前記センスアンプ装置からの読み出しデータを前記バッファの動的に割り当てられた１個に転送すべく適合されたスイッチング機構を含む、請求項１に記載のメモリデバイス。
【請求項４】
前記状態変更動作が書込み動作を含み、書込み動作が進行中である間、前記スイッチング機構が前記バッファの動的に割り当てられた１個から前記読み出しデータを前記出力インターフェースに転送する、請求項３に記載のメモリデバイス。
【請求項５】
前記内部ルーティングが、前記プログラムデータに対応するページを、書込み動作に関連付けられた第２の動的に割り当てられたバッファにロードすべく適合されていて、前記第２の動的に割り当てられたバッファから前記書込み動作に関連付けられたデータを読み出すことにより、前記書込み動作の対象である前記メモリ記憶空間のユニットが遷移状態にあるにも拘わらず、前記書込み動作の対象である前記記憶空間の前記ユニットを、前記書込み動作と同時に読み出すことができる、請求項３に記載のメモリデバイス。
【請求項６】
前記内部ルーティングが、前記ページサイズに少なくとも等しい幅を有するクロスバーを含み、前記クロスバーが（ｉ）前記書き込みデータレジスタまたは前記センスアレイのいずれかと（ｉｉ）前記少なくとも２個のバッファのいずれか１個との間でデータをルーティングすべく適合されている、請求項３に記載のメモリデバイス。
【請求項７】
前記少なくとも２個のバッファの各々が前記ＩＯインターフェースを介して外部的にアドレス指定可能であって、外部デバイスが前記少なくとも２個のバッファの任意の特定の１個にあるデータのロードを選択的に生起させることができる、請求項６に記載のメモリデバイス。
【請求項８】
前記マルチサイクル状態変更動作の複数のサイクルの各々が、前記メモリ記憶空間の一ユニットの内容を前記書き込みデータレジスタの内容と比較する検証動作を含み、
前記内部ルーティングが、検証動作の間、前記動的に割り当てられたバッファの１個への前記読み出しデータの転送を禁止すべく構成されている、請求項３に記載のメモリデバイス。
【請求項９】
前記バッファの１個が、前記状態変更動作の最中に参照用に前記書き込みデータレジスタに当初保存されていたデータのコピーを保存すべく、且つ前記書き込みデータレジスタ当初保存されていた前記データの、前記マルチサイクル状態変更動作と同時の読み出しを許可すべく適合されていて、
前記メモリデバイスが、同時状態変更の対象ではない各ユニットを前記メモリ記憶空間から読み出すことにより、且つ前記バッファの１個から前記書き込みデータレジスタに当初保存されていた前記データを読み出すことにより、状態変更動作と同時に前記メモリ記憶空間の前記複数のユニットの任意の１個に関連付けられたデータの読み出しを許可すべく適合されている、請求項３に記載のメモリデバイス。
【請求項１０】
動的な割り当てが、前記メモリデバイス上に常駐している割り当て論理により実行される、請求項３に記載のメモリデバイス。
【請求項１１】
消去動作が進行中である間、前記スイッチング機構が、前記読み出しデータを前記センスアンプ装置から前記動的に割り当てられたバッファに転送すべく適合されている、請求項１に記載のメモリデバイス。
【請求項１２】
前記メモリデバイスが、各々が少なくともメモリページを保持するサイズである少なくとも３個のバッファを更に含み、
前記内部ルーティングが、（ｉ）前記読み出しデータのコピーを動的に割り当てられた第１個目のバッファに保存する、且つ（ｉｉ）前記状態変更動作が進行中である間、前記読み出しデータを前記第１個目のバッファから前記ＩＯインターフェースへ転送する動作の両方を行なうべく構成されていて、
前記内部ルーティングが、プログラムデータを動的に割り当てられた第２個目のバッファにロードして、前記状態変更動作と同時に前記第２個目のバッファからの前記プログラムデータの読み出しを許可すべく適合されていて、
前記メモリデバイスが、同時状態変更の対象ではない各ユニットを前記メモリ記憶空間から読み出すことにより、且つ前記バッファの１個から前記プログラムデータを読み出すことにより、状態変更動作と同時に前記複数の記憶ユニットの任意のものに関連付けられたデータの読み出しを許可すべく適合されている、請求項１に記載のメモリデバイス。
【請求項１３】
前記状態変更動作がマルチサイクルプログラム検証動作を含む、請求項１２に記載のメモリデバイス。
【請求項１４】
前記内部ルーティングが、（ａ）センスアンプ装置と少なくとも３個のバッファの任意の１個の間でデータを転送し、（ｂ）前記センスアンプ装置と前記書き込みデータレジスタの間でデータを転送する、請求項１２に記載のメモリデバイス。
【請求項１５】
前記メモリデバイスが、状態変更動作のサイクル間でメモリ読み出し動作をインターリーブすべく適合された制御論理を更に含み、前記制御論理が、少なくとも前記状態変更動作のサイクルの１個の検証フェーズの間に前記メモリ読み出し動作を待ち行列に入れて、（ａ）少なくとも状態変更動作のサイクル間に実行すべく適合されている、請求項１４に記載のメモリデバイス。
【請求項１６】
フラッシュメモリデバイスとして実装されている、請求項１に記載のメモリデバイス。
【請求項１７】
前記内部ルーティングが、単一のプログラム検証サイクル内で、（ｉ）前記センスアンプ装置を前記書き込みデータレジスタに結合して、前記マルチサイクル状態変更動作で使用するために記憶ユニットの内容をフィードバックし、且つ（ｉｉ）前記ユニットの１個からの読み出しデータを前記ＩＯインターフェースに結合すべく適合されている、請求項１に記載のメモリデバイス。
【請求項１８】
記憶領域の複数のユニットと、
前記ユニットの任意のものからデータ値を読み出すセンス機構と、
前記ユニットの任意のものへデータ値をプログラミングすべく使用されるレジスタと、
複数のバッファと
（ｉ）前記複数のバッファの各々と（ｉｉ）前記書き込みデータレジスタまたは前記センス機構の選択された１個を結合するクロスバーと、
前記複数のバッファの各々を前記外部バスに動作可能に結合すべく適合されている入出力（ＩＯ）インターフェースを含む不揮発性メモリデバイス。
【請求項１９】
フラッシュメモリデバイスとして実装されている、請求項１８に記載のデバイス。
【請求項２０】
各々のユニットが、（ｉ）別々にプログラム可能な最小量のメモリ空間、または（ｉｉ）別々に消去可能な最小量のメモリ空間の少なくとも一方を表す、請求項１８に記載のデバイス。
【請求項２１】
前記デバイスが、マルチサイクルプログラム検証動作により前記ユニットを個別にプログラムすべく適合されていて、
前記デバイスが、特定のデータの読み出しを、前記特定のデータの未完了であるマルチサイクルプログラム検証動作と同時に許可する手段を更に含む、請求項１８に記載のデバイス。
【請求項２２】
前記デバイスが、マルチサイクルプログラム検証動作により前記ユニットを個別にプログラムすべく適合されていて、
前記デバイスが、前記プログラム検証動作に関連付けられたサイクル間で読み出し動作をインターリーブすべく適合されている制御論理を更に含む、請求項１８に記載のデバイス。
【請求項２３】
前記デバイスが、マルチサイクル消去動作により前記ユニットを個別にプログラムすべく適合されていて、
前記デバイスが、前記消去動作関連に付けられたサイクル間で読み出し動作をインターリーブすべく適合されている制御論理を更に含む、請求項１８に記載のデバイス。
【請求項２４】
前記デバイスが、前記ＩＯインターフェースを介して前記複数のバッファの第１個目から前記記憶領域の前記複数のユニットのデータを読み出すことを許可すべく、且つ前記クロスバーを介して前記記憶ユニットの１個の後続する読み出し動作に関連付けられたデータを前記複数のバッファの第２個目に同時に転送すべく適合されている、請求項１８に記載のデバイス。
【請求項２５】
前記デバイスが、（ｉ）前記レジスタを用いて第１のデータを前記記憶領域の前記複数のユニットの１個にプログラミングすることを許可し、（ｉｉ）前記複数の記憶ユニットの１個の後続するプログラム動作に関連付けられた第２のデータを前記複数のバッファの１個の待ち行列に入れて、（ｉｉｉ）前記第１のデータのプログラミングの完了に続いて、前記複数のバッファの１個から前記クロスバーを介して前記第２のデータを前記レジスタに転送すべく適合されている制御論理を更に含む、請求項１８に記載のデバイス。
【請求項２６】
さらに、前記デバイスが、前記複数のバッファの第２個目からの前記第１のデータの読み出しを許可すべく適合され、且つ前記複数のバッファの第１個目からの前記第２のデータの読み出しを許可すべく適合されていて、その各々が、前記記憶領域の前記複数のユニットの１個のプログラミングが前記メモリデバイスにより同時に実行されているにも拘わらず可能である、請求項２５に記載のデバイス。
【請求項２７】
不揮発性メモリデバイスであって、
前記デバイス内の複数のバッファの各１個の使用状況を追跡する手段と、
第１のメモリ動作と関連して、前記バッファの第１個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第１のデータを前記バッファの第１個目にロードする手段と、
第２のメモリ動作と関連して、前記バッファの第２個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第２のデータを前記バッファの第２個目にロードする手段と、
前記第１のメモリ動作および前記第２のデータのロードを並行して実行する手段と、
前記追跡に応答して、前記複数のバッファの任意の１個が、先行トランザクションに関する利用可能性に応じて前記第１のメモリ動作または前記第２のメモリ動作のいずれかに用いられるように、前記バッファの第１個目の識別および前記バッファの第２個目の識別を動的に実行する手段とを含む不揮発性メモリデバイス。
【請求項２８】
不揮発性メモリデバイスを動作させる方法であって、
前記デバイス内の複数のバッファの各々の使用状況を追跡するステップと、
第１のメモリ動作と関連して、前記バッファの第１個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第１のデータを前記バッファの第１個目にロードするステップと、
第２のメモリ動作と関連して、前記バッファの第２個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第２のデータを前記バッファの第２個目にロードするステップと、
前記第１のメモリ動作および前記第２のデータのロードを並行して実行するステップと、
前記追跡に応答して、前記複数のバッファの任意の１個が、先行トランザクションに関する利用可能性に応じて前記第１のメモリ動作または前記第２のメモリ動作のいずれかに用いられるように、前記バッファの第１個目の識別および前記バッファの第２個目の識別を動的に実行するステップとを含む方法。
【請求項２９】
前記追跡ステップが、フラッシュメモリコントローラ内の複数のバッファの各々を追跡するステップを含む、請求項２８に記載の方法。
【請求項３０】
前記第１のメモリ動作が、マルチサイクルプログラム検証動作を含む、請求項２８に記載の方法。
【請求項３１】
前記マルチサイクルプログラム検証動作の各サイクルが、プログラムフェーズおよび検証フェーズを含んでいて、並行的実行が、前記プログラムフェーズ最中に前記第２のデータをロードするステップと、前記検証フェーズの最中に前記第２のデータのロードを禁止するステップとを含む、請求項３０に記載の方法。
【請求項３２】
前記第１のメモリ動作の各々が読み出し動作を含む、請求項２８に記載の方法。
【請求項３３】
前記第１のメモリ動作および第２のメモリ動作の各々がプログラム動作を含み、前記方法が書き込みデータレジスタに前記バッファの第１個目から前記第１のデータのコピーをロードするステップと、前記第１のデータをプログラミングするステップと、前記第１のデータの前記プログラミングの完了に続いて、前記書き込みデータレジスタに前記バッファの第２個目から前記第２のデータのコピーをロードするステップを更に含む、請求項２８に記載の方法。
【請求項３４】
機械可読記憶媒体に保存された命令を含む装置であって、各々がメモリ動作の最中にデータを保持すべく使用される複数のバッファを有する少なくとも１個の不揮発性メモリデバイスの制御に使用すべく適合されていて、前記少なくとも１個の不揮発性メモリデバイスが前記複数のバッファの異なるものを用いて第１のメモリ動作および第２のメモリ動作の各々を並行して実行すべく適合されていて、前記命令が実行された場合は機械に、
前記不揮発性メモリデバイス内の複数のバッファ常駐の各１個の使用状況を追跡させ、
前記第１のメモリ動作と関連して、前記バッファの第１個目を現在使われていないものとして識別させ、これに応答して前記デバイスのメモリの少なくとも１ページに関連付けられた第１のデータを前記バッファの第１個目にロードさせ、
前記第２のメモリ動作と関連して、前記バッファの第２個目を現在使われていないものとして識別させ、これに応答して前記デバイスのメモリの少なくとも１ページに関連付けられた第２のデータを前記バッファの第２個目にロードさせ
前記追跡に応答して、前記複数のバッファの任意の１個が、先行トランザクションに関する利用可能性に応じて前記第１のメモリ動作または前記第２のメモリ動作のいずれかに用いられるように、前記バッファの第１個目の識別および前記バッファの第２個目の識別を動的に実行させるべく適合されている装置。
【請求項３５】
メモリコントローラによる使用に適合されていて、前記命令がファームウェアを含んでいて、前記機械可読記憶媒体が読み出し専用メモリデバイスを含む、請求項３４に記載の装置。
【請求項３６】
各バッファがシステムデータバスを介してインターフェースに結合されている複数のバッファによるサービスを受ける不揮発性メモリストレージアレイで使用される装置であって、
前記複数のバッファ各１個の使用を追跡する状態機械と、
コントローラ常駐のコマンド生成器、すなわち前記状態機械に結合されていて、前記状態機械の内容に応答してバッファ固有のコマンドを生成するコマンド生成器とを含む装置。
【請求項３７】
前記状態機械が、前記不揮発性メモリストレージアレイおよび前記複数のバッファと共に不揮発性メモリデバイス内に常駐している、請求項３６に記載の装置。
【請求項３８】
前記状態機械がコントローラ−常駐である、請求項３６に記載の装置。
【請求項３９】
前記バッファ固有のコマンドが、
特定のバッファにセンスアンプ装置からデータを転送するコマンド、
特定のバッファから前記システムデータバスにデータを転送するコマンド、
特定のバッファにプログラムデータを書き込むコマンド、
特定のバッファからプログラム制御の対象であるデータを読み出すコマンド、
特定のバッファから前記書き込みデータレジスタにデータをコピーするコマンド、または
特定のバッファから前記書き込みデータレジスタに非破壊的にデータをコピーするコマンド
の少なくとも１個を含む、請求項３６に記載の装置。
【請求項４０】
前記バッファ固有のコマンドがバッファアドレスフィールドを含む、請求項３６に記載の装置。
【請求項４１】
複数の記憶ユニットを有し、各記憶ユニットが一括的にプログラムする必要がある記憶空間の最小量を表すメモリ記憶空間と、
マルチサイクル状態変更動作と関連して、前記記憶ユニットの少なくとも１個のプログラミングに使用すべくデータを保持する書き込みデータレジスタであって、自身が保持するデータが前記マルチサイクル状態変更動作の最中に変更される書き込みデータレジスタと、
前記書き込みデータレジスタにロードされた前記データのコピーを保持するバッファであって、前記データが前記マルチサイクル状態変更動作の最中に変更されないバッファと、
前記マルチサイクル状態変更動作の最中に、前記記憶ユニットの少なくとも１個においてプログラミングを受けている前記データに対する前記バッファからの読み出し要求を実行する制御論理とを含む不揮発性メモリデバイス。
【請求項４２】
前記データの真のコピーを保持する、前記バッファまたは前記メモリ記憶空間を含む記憶場所を識別する状態機械を更に含む、請求項４１に記載のデバイス。
【請求項４３】
複数のバッファを更に含み、前記制御論理が、前記書き込みデータレジスタへの書き込みデータのコピーのロード、および前記マルチサイクル状態変更動作の最中に前記データに宛てられた読み出し要求と関連して、前記データのコピーの実行の両方に用いるべく前記複数のバッファの各々をアドホックに割り当てる、請求項４２に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００８年１２月９日に出願された発明者Ian Shaefferおよび Brent Steven Hauknessによる米国仮特許出願第６１／１２１，０８３号「並行およびパイプライン化されたメモリ動作用の不揮発性メモリデバイス（Non-Volatile Memory Device for Concurrent And Pipelined Memory Operations）」を優先権主張するものであり、本明細書において当該先出願の全文を引用している。
【背景技術】
【０００２】
ある種の不揮発性メモリデバイスは、メモリ空間の複数部分を１個の記憶ユニットとして、典型的には「ページ」または「ブロック」として、まとめて書き込みまたは消去する必要があるものとして設計されている。これらの設計において各メモリセルが可変性であるため、セルのデータ状態を順次変える動作（例：プログラムまたは消去）は往々にして反復サイクルに基づいている。これらの反復サイクルは「プログラム検証」サイクルと呼ばれ、この用語で「プログラム」という表現を用いているが、ブロックの書き込みまたは消去が実行されるか否かの基本動作を指している点を理解されたい。各サイクルにおいて、メモリデバイスまたはコントローラは、（ｉ）特定の電圧を用いて記憶ユニットの状態変更を試みて、（ｉｉ）どのセルが正しく状態を変更されなかったかを調べる。当該サイクルは次いで、未だ状態が正しく変更されていないセルについて僅かに高い電圧を用いて、当該セルが正しい状態になるかまたはエラーが発生する（その場合は通常、当該ユニットは「不良」であるとマーク付けされる）まで必要なだけ繰り返される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
この方法論の不具合な副作用は、状態変更動作が完了するまで相当の時間を要する場合がある点である。例えば、書き込みトランザクションはＮＡＮＤフラッシュメモリにおける読み出しトランザクションよりも１０倍、ＮＯＲフラッシュメモリにおける読み出しトランザクションよりも１０００倍以上長い時間を要する。この問題に対処する試みは大抵、複数の不揮発性デバイスの使用、またはメモリ空間を事実上複数バンクに分割することに注力しており、各々の場合に各バンクまたはデバイスを独立に読み出し可能にする補助回路を有する。しかし一般には、大多数の構造は依然として単一のセンスアレイがサービスする同一の基本「バンク」に対する並行処理に対応しておらず、補助書き込み回路、すなわち後続する読み出し、消去、書き込み、または他のトランザクションは通常、対象とする当該ブロックまたはページに対する先行動作の反復サイクルが完全に終了するまで、待ち行列に入れる必要がある。
【課題を解決するための手段】
【０００４】
必要とされているのは、先行プログラムまたは消去動作進行中であるか否かに拘わらず、読み出しプログラムまたは消去動作の開始を可能にすることにより、上述の問題を緩和する、理想的には可能であればボトルネックを完全に取り除く方法である。本発明は、このニーズに対処するものであり、更に関連した効果を提供する。
【図面の簡単な説明】
【０００５】
【図１】不揮発性ストレージアレイ１０３に対する読み出しおよび書き込みデータレジスタに対するセンスアンプ装置のフィードバックを含むマルチサイクル状態変更動作の両方のためにセンスアンプ装置１１７のインターリーブ化された使用に対応可能な内部ルーティングを有するメモリデバイスの機能図である。
【図２】第２のメモリデバイスの機能図である。図１に示すデバイスとは異なり、図２に示す実施形態は、バッファ（２１３、２１５および２１７）のアレイ２１１およびクロスバー２２５を用いて、（１）バッファの任意の１個を当該アレイに接続し、各バッファが読み出しデータの一時的な宛先として（例：後で読み出しデータのページをコントローラに送るキャッシュとして）機能し、且つ（２）バッファの任意の１個を書き込み回路２２３に接続する（例：書き込み回路内で既に進行中の動作が完了するまで、予定されている消去および書き込みトランザクションを待ち行列に入れるべく当該バッファを利用するように）。
【図３】メモリシステム３０１の一部として更に別のメモリデバイスを示す機能図であって、メモリシステムがフラッシュコントローラ３０３を含んでいる。図３は、本システムが実質的に２個のクロスバーを提供し、１個がバッファと各メモリデバイスのフラッシュストレージアレイ３０７の間に、１個がバッファとフラッシュコントローラの間にあることを示す。垂直な破線３１５は、当該デバイスの入出力（「ＩＯ」）制御をメモリアレイ制御とは独立に管理できるように各クロスバーに対して別々の制御論理を用いてよいことを示す。すなわち、ＩＯの制御論理は、コントローラと各種バッファ３１３の間でのデータの流れを、バッファとフラッシュストレージアレイ３０７の間でのデータの流れとは独立に管理することができる。
【図４】マルチバッファ実施形態におけるバッファ使用を追跡する方法４０１のフロー図である。破線の機能ブロックで示すように、別のメモリ動作用のデータが並行してバッファ内外に転送される間に、方法４０１は１個のメモリ動作を実行する。
【図５】ＩＯ制御論理が、コントローラから新たに受信したメモリ要求を処理すべく使用する方法５０１のフロー図である。図５に示すように、方法５０１は、複数のバッファの各々の使用および状態を追跡する状態レジスタ５１７の管理を必要とする。すなわち「Ｂ１」、「Ｂ２」、および「Ｂ３」とラベル付けられた３個のバッファをレジスタにより追跡する。レジスタは、バッファを新規のメモリ要求への割り当てを許可するが、現在状態変更動作の最中であるデータの読み出しも許可する。アドレスフィールドを用いてバッファに索引を付けることにより、デバイスセンスアレイおよび書き込みデータレジスタがビジー状態である間に、これらのバッファを集合的にデータキャッシュとして用いることができる。オプションの「マスター」フィールドに示すように、状態レジスタは、複数のマスター実装方式に対応すべく構成されていてよい。
【図６】読み出し要求がコントローラから受信した際にこれらを管理する方法６０１を示すフロー図である。方法６０１は、バッファと外部データバスの間の主として「一方」のバッファにおける通信フローを管理するＩＯ制御論理により実装できる。
【図７】メモリアレイ制御論理（すなわち、バッファとメモリアレイの間の「もう一方」のバッファにおける通信フローの管理に用いてもよい）に関連付けられた一般的なメモリアレイ管理タスクを示す方法７０１のフロー図である。後述するように（且つ図６の機能と同様に）、これらの機能は、メモリコントローラまたはハードウェアあるいは各メモリデバイスに常駐する命令論理により管理されていてよい。
【図８】プログラムタスク（すなわち、メモリアレイ用の書き込み回路が関わるタスク）に関連付けられた方法８０１のフロー図である。図８に示すように、割り当てられたバッファからデータを書き込みデータレジスタ（「ＷＤＲ」）にコピーすることにより、割り当てられたバッファにデータを保持して、書き込みデータレジスタ（「ＷＤＲ」）の内容（および、アレイ内の関連メモリ空間の内容）自体がプログラミングの間、遷移状態であっても、状態変更動作の最中に読み出すことができる。
【図９】プログラムまたは消去コマンドの各プログラム検証サイクルに関連付けられた方法９０１のフロー図である。これらのサイクルは、（１）メモリ内の関連付けられた空間の状態が正しく変更されている（その場合、プログラムデータのキャッシュに使用すべく割り当てられたバッファは解放される）か、または（２）サイクルの最大数に達する（図９で変数「ｋ」のキャップとして表す）まで必要に応じて繰り返される。
【図１０】読み出し動作（すなわち、メモリアレイからデータのページを読み出して、当該データをバッファに転送するステップ）を処理するメモリアレイ制御論理が使用する方法１００１のフロー図である。図１０に示すように、本方法は、センスアンプ装置からデータを割り当てられたバッファにルーティングすべくクロスバーを構成するステップと、ロードされている処理の間、データがバッファから読み出されないようにバッファ状態レジスタフラグを変更するステップを含んでいる。
【発明を実施するための形態】
【０００６】
列挙された請求項により定義される主題について、添付図面の精査と合わせて以下の詳細説明を参照することにより理解が深まろう。請求項に開示する技術の各種実装の構築および使用を可能にすべく以下に述べる１個以上の特定の実施形態は、列挙された請求項を限定することは意図しておらず、特定の方法およびデバイスへのそれらの適用を例示することのみを目的としている。以下に開示する記述は、（ｉ）複数の動作を並列に処理すべく用いてよい不揮発性メモリデバイス、（ｉｉ）新たなルーティングを有する不揮発性メモリデバイス、および（ｉｉｉ）そのような不揮発性メモリデバイスの管理に関連付けられた制御方法を例示する。これら特例の例を提示しているが、本明細書に記述する原理は他の方法およびデバイスに同様に適用できる。
【０００７】
１．概要
本開示は、多様な方法で、（ａ）他のメモリ動作が待ち行列にある間、１個のメモリ動作の実行を許可する、（ｂ）（メモリの複数バンクだけでなく、単一「バンク」で）１個の記憶ユニットのほぼ並列な読み出しを、他のものが状態変更動作の対象である間（例えば書き込み動作の最中に）許可する、（ｃ）記憶ユニットのほぼ並列な状態変更および新規のもの（すなわち、当該記憶ユニットに置かれているデータの書き込みまたは消去）の並行読み出しを許可する、および（ｄ）システム内のメモリデバイスを制御する方法を提供するかまたは別途これらの機能の１個を実現する不揮発性メモリデバイスのいくつかの実施形態を提供する。特に、不揮発性メモリ内（例：フラッシュメモリデバイス内）の記憶ユニットのプログラムまたは消去に必要な長いリードタイムの影響を緩和することにより、本明細書に述べる実施形態は、特定の不揮発性デバイスの利用可能性を大幅に向上させる。すなわち、本開示が提供する技術により、不揮発性メモリ、特にフラッシュメモリを従来よりも極めて幅広い範囲の用途に利用できるようになり、潜在的にこれらの適用能力を拡張して新規の用途が可能になる。
【０００８】
第１のメモリデバイスの実施形態は、図１に１０１とラベル付けされた不揮発性記憶デバイスを提供する。この不揮発性記憶デバイスは、状態変更動作が同時に進行中であっても特定のストレージアレイ１０３の読み出しを許可する。従来のように、当該アレイは、各々が一括的にプログラムまたは一緒に消去する必要があるメモリセルの最小グループ化を表す多数の記憶ユニット１０５に分割されている。［この点に関して、特定の従来型フラッシュデバイスは、高密度且つ極めて低コストの設計原理を反映しており、そのためコストおよび密度のためにアクセスの粒度を犠牲にしている。特定の設計はそれらの構造が「ページ」単位でプログラムし、「ブロック」単位で消去する必要があるようになされており、従来のフラッシュ方式、例えばＮＡＮＤフラッシュにおいて、「ページ」は約４，０００バイトのデータを含んでいて「ブロック」は数千ページを含んでいてよい。］本明細書で用いる用語「ページ」は、１個のユニットとしてプログラムまたは消去可能な最小の構造または単位と少なくとも同程度に大きいメモリユニットを指している。
【０００９】
これらのデバイスにおいて状態変更を行なう従来の方法は、当該デバイスの入出力（「ＩＯ」）インターフェース１０７が外部データバス１０９から送られて来たデータを受信するものである。［消去動作の場合、実際のデータは内部生成された「個体」の一塊のブロックからなり、記憶ユニットの消去済み状態への変更を検証するために用いられる。］データは、書き込みデータレジスタ（「ＷＤＲ」）１１１へ送られ、デバイス１０１の回路１１３が最小限の電圧を用いて、図１の参照番号１１５で示すユニット等の特定記憶ユニットの状態変更動作を試みる。個々のメモリセル（設計に応じて単一レベルセルすなわち「ＳＬＣ」または多レベルセルすなわち「ＭＬＣ」のいずれか）は、動作のアーチファクトとして、または使用を通じて出現した異なるレベルの欠陥を有している可能性があり、各セルは所望の論理状態に変更できるようになる前に異なる電圧を必要とする場合がある。従って、電圧の印加に続いて（すなわち、「プログラムフェーズ」に続いて）、デバイス１０１は次いで、センスアレイ（または「センスアンプ装置」）１１７を用いて検証動作を実行し、書き込み回路１１３を用いて記憶ユニット１１５の内容を書き込みデータレジスタ１１１の内容と比較する（すなわち「検証フェーズ」）。内容が合致しなければ、デバイス制御論理１１９の支援の下で、より高い電圧で別の反復サイクルを起動する。そのような「サイクル」の各々は、特定の記憶ユニット１１５内の全てのセルが正しい状態になるまで、サイクルの最大回数まで必要に応じて繰り返される。動作が完了したならば、制御論理１１９はコントローラに通知するかまたは、代替的に、サイクルの最大数に達した場合はエラー値をアサートする（通常はコントローラに記憶ユニットが「不良」である旨のマークを付けさせる）。特に、消去動作はプログラム動作とは電圧を印加する方法において異なるが、基本的な動作フローは実質的に同じである。通常、各々のデータ書き込みに先立って消去動作が実行され、対象とする記憶ユニットのメモリセル（またはそのようなセルを含むブロック）を実質的に「リセット」する。メモリセル（またはメモリセルレベル）への値の書き込みを試み、次いで書き込みが成功した旨の検証を試みる各々の反復シーケンスを「プログラム検証」または「ＰＶ」サイクルと呼ぶ。
【００１０】
図１に示す実施形態は、実質的には図１に参照番号１２１で示すスイッチング機構である新たな内部ルーティングを用いて状態変更動作の最中における特定のストレージアレイ１０３の読み出しを許可する。ルーティングには、書き込みデータレジスタ１１１をセンスアンプ装置１１７と実質的に結合する第１の経路１２３、ＩＯインターフェース１０７を書き込みデータレジスタ１１１と実質的に結合する第２の経路１２５、およびセンスアンプ装置をＩＯインターフェースと実質的に結合する第３の経路１２７を含む３個の実質的な経路を含んでいる。第３の経路は、データ読み出し中に、メモリ空間（センスアンプ装置により検知される）からバッファ１２９にデータをロードしてその後メモリコントローラへ出力すべく用いられる。図１に示す実施形態において、書き込みおよび読み出しが並行に生起するのは、センスアンプ装置からのデータ出力がマルチサイクル状態変更動作の最中に書き込みデータレジスタ（第１の経路１２３を介して）またはバッファへ（第３の経路１２７を介して）のいずれかの間で再ルーティングできるためである。この動作はまた、制御論理１１９支援の下で実行される。
【００１１】
特に、図１に示す構造および動作は、単に複数バンクを用いるのとは異なる、待ち時間問題へのアプローチを表す。複数バンク構造において、各々のバンクまたはデバイスは自身の書き込みデータレジスタを有しているため、第２のバンク（またはデバイス）において状態変更動作が進行中であるのと同時に１個のバンク（または異なるデバイス）の読み出しが可能である。対照的に、図１に示す実施形態は、当該レジスタを縛るマルチサイクル状態変更動作の最中に、当該書き込みデータレジスタがサービスする同一メモリ記憶空間の読み出しを許可する。特に、後述するように、本開示に示すいくつかの実施形態は、同一不揮発性ストレージアレイのデータの同時読み出しを許可するが、図１の実施形態がこの能力を有している必要が無い点を理解されたい。
【００１２】
図２に、プログラムされるかまたは別途メモリに書き込まれるデータ（「プログラムデータ」）に対する現在の読み出し能力を提供すべく構成できる第２の実施形態を示す。特に、図２は図１との関連で上述したものと同様のいくつかの要素を有する第２のメモリデバイス２０１を示す。当該メモリデバイスは、記憶空間が多数の記憶ユニット２０５に分割されている不揮発性ストレージアレイ２０３、ＩＯインターフェース２０７、およびＩＯインターフェースを外部バス２０９と接続するピン（図示せず）を含んでいる。図２のメモリデバイス２０１はまた、データバッファのアレイまたは組２１１を含んでいて、各々のバッファが記憶ユニットサイズ（例：ＮＡＮＤフラッシュメモリデバイスの場合はページサイズ）に少なくとも対応する大きさに設定されている。この第２の実施形態のアレイは、各々が内部バス２１９を介してＩＯインターフェースに結合されている各々２１３、２１５および２１７と番号付けられた少なくとも３個のバッファを有するものと見られる。これらのバッファの各々を用いて、並行動作が並列に処理されるように、送られて来た書き込みデータのページを保存することができる。上記の一般性を限定することなく、図２に示す実施形態は以下を許可する。
（ａ）複数の読み出し動作の処理、例えば、別のバッファ（バッファ２１５等）が自身の内容を外部バスに送る間、１個のバッファ（バッファ２１３等）をセンスアンプ装置２２１から転送されたデータで満たすことができる
（ｂ）複数の状態変更動作の処理、例えば、別のバッファ（バッファ２１３等）が自身の内容を書き込み回路２２３（および図２に別途示さない書き込みデータレジスタへ）送る間、１個のバッファ（バッファ２１５等）を外部バス２０９からのデータで満たすことができる
（ｃ）読み出し動作および状態変更動作のほぼ同時処理、例えば、別のバッファ（バッファ２１３等）がＩＯインターフェース２０７からのデータで満たされている間、またはセンスアンプ装置および書き込み回路がマルチサイクル書き込みまたは消去動作を実行する間、１個のバッファ（バッファ２１７等）をセンスアンプ装置２２１から転送されたデータで満たすことができる、および
（ｄ）動作が進行中である（すなわち、センスアンプ装置がデータを書き込み回路にフィードバックしている）間、ストレージアレイ２０３に書き込まれるデータをバッファ（２１３、２１５または２１７）のうち１個にコピーとして保存することができ、動作の最中に、データをストレージアレイ２０３からではなくバッファアレイ２１１から読み出すことができる。
他の組合せおよび他の可能な動作はまた当業者に想起されよう。
【００１３】
バッファアレイ２１１は、クロスバー装置（図２にラベル「ＸＢＡＲ」および参照番号２２５で示す）により、一方でセンスアンプ装置２２１に結合されており、他方で書き込み回路２２３に結合されている。本明細書で用いる用語「クロスバー」は単に、２方向スイッチングを実行するスイッチング機構の形式を指す。すなわち、センスアンプ装置は任意のバッファに接続されて、そのうちどれにでもデータをルーティングすることができ、任意のバッファがセンスアンプ装置または書き込み回路に接続されていてもよい。図２の特定の実施形態に示す特定のクロスバー２２５はまた、この２方向スイッチングを、（ａ）マルチサイクル状態変更動作（すなわち、マルチサイクル動作の各サイクルにおける参照用に書き込みデータレジスタの内容を修正すべくデータをフィードバックできるように）で用いるためにセンスアンプ装置から書き込み回路へ、および（ｂ）データ読み出しに用いるべく、センスアンプ装置からバッファへ、選択的にデータを送ることができる意味で実行する。図２に示す実施形態において、このスイッチングは少なくとも１ページ幅単位で実行される。例えば、ページサイズが４キロバイトの場合、クロスバーが上で示唆した転送を実行するために各原点について４ｋＢの同時スイッチングを実行する。上述の第１の実施形態で述べたように、内部ルーティング内でこのスイッチングを実行するために、例えば、図２の実施形態のクロスバーを制御するために、制御論理を提供することができる（必要ならばオンボードで）。枠２２１と２２３を接続する破線に示すように、状態変更動作で使用すべくセンスアレイから書き込み回路にデータをフィードバックすることが通常は望ましい。この動作は、これらの２個の要素間の直接接続により、または代替的にこのルーティングを実行する能力を有するクロスバー２２５を提供することにより実装できる。この点に関して、書き込みデータレジスタ（図２で別途示していない）は通常、変更データを保存すべく、すなわちこれまでどのセルが正しく変更されなかったかを識別して、各サイクルで依然として必要とされる状態変化を示すべく各サイクル毎に修正される「作業用バッファ」である。また、代替的な実装方式において書き込みデータレジスタを従来型バッファとして構成することも可能である。
【００１４】
図２に、メモリデバイスへの外部からのアドレス指定をサポートするオプションのアドレス指定および制御機能を表す破線枠２２７を示す。特に、以下で各種の制御オプションについて述べるが、図２の一つの可能な実装方式は、コントローラにより個別にアドレス指定可能な複数のバッファを有するメモリデバイスとして実装するものである。例えば、バッファ２１３、２１５および２１７（アレイ内の他の任意のバッファも同様）を、外部デバイスがプログラムデータを直接これらのバッファに書き込むかまたはこれらのバッファから読み出しデータを取得する（対応するページがバッファアレイにリレーされていれば）ことができるように実装できる。この点に関して、（例：読み出し動作の場合）メモリアレイおよびセンスアンプ装置からデータを取得するのに有限な時間を要するため、バッファにロードされたデータをメモリデバイスが検知し、且つデータを提供可能であればいつでも、当該アドレス指定および制御機能はコントローラに対して動作を開始し、次いで読み出しデータを取り出す許可を与えることができる。これらの能力および付随する機能は、動作方法を扱う段落に関連して後述する。
【００１５】
図３に、本開示が提供する原理の更に別の実装方式を示す。特に、図３はフラッシュコントローラ３０３および１個以上のフラッシュデバイスを含むシステム３０１を示すが、図３では１個の例示的なフラッシュデバイス３０５だけを示す。各フラッシュデバイスは、図２の実施形態に関連して上で述べたように、フラッシュストレージアレイ３０７および書き込み回路３１１（書き込みデータレジスタを含む）と共に外部データバス３０９に接続する手段、センスアンプ装置３１３およびバッファアレイ３１４を含む。しかし図３は、各々参照番号３１７および３１９で示すメモリアレイ制御とＩＯ制御を区別すべく用いる垂直線３１５を更に含んでいる。図３の実施形態において、ＩＯ制御論理はバッファアレイ３１４と外部バス３０９の間でのデータ転送を統括し、一方、メモリアレイ制御論理はバッファアレイ３１４とフラッシュストレージアレイの間での通信を統括する。メモリアレイ制御論理およびＩＯ制御論理機能の各々は、バッファを新規データで満たすことができて、他の箇所のバッファの１個からデータのコピーをアンロード（すなわち転送）することができる。実装方式に応じて、データが外に転送されたならばこれらのバッファをクリア（すなわち解放）することができ、あるいは特定のイベント（特定のプログラミングまたは状態変更ステップの完了）が生起するまでデータを保持させることができる。図３に示す実施形態において、センスアレイまたはフラッシュメモリコントローラのいずれか（または、例えば後述する特定の実施形態に従えば複数のコントローラでもよい）について、任意のバッファへデータを送信するか、またはそこからデータを取り出すことができることを示すために、各々が交差する太線で示された２個のスイッチング機構（例：クロスバー）を実質的に表している。バッファの割当ては動的であってよく（例：先行動作が完了した場合にバッファは新規の動作に再割り当てされる）、この「動的な割り当て」は以下で更に述べるように、メモリデバイスにより、またはメモリコントローラ（フラッシュメモリコントローラ３０３等）の支援の下で実行される。
【００１６】
ＩＩ．動作方法
上に挙げた実施形態の大多数は、メモリセンス機構（例：センスアレイ部）から実質的にデータを、書き込みデータレジスタ（当該レジスタのデータを修正して、追加的なサイクルを介して必要に応じて動作を続けるためにマルチサイクル状態変更動作で用いる）またはメモリページの読み出しに関して外部バスのいずれかにルーティングすべく内部ルーティングおよびスイッチング機構（クロスバー等）に依存する。上に示す構造により、メモリ空間に関る所与のマルチサイクル状態変更動作におけるこれらの動作の両方を可能にする。
【００１７】
この動作を実装可能ないくつかの方法があり、そのうち恐らく最も簡単なものは、対象とするメモリデバイス（群）内の各状態変更ステップまたはサイクルに至るきめ細かい制御が可能なリモートメモリコントローラ（例：フラッシュコントローラ）をメモリデバイス動作に提供することである。例えば、メモリデバイスが多数のコマンドを（例えば機械言語を用いて）実行すべく設計されている場合、コントローラは、（ａ）バッファから内容を書き込みデータレジスタに移動させる、（ｂ）動作が実行される特定のアドレスにおいて記憶ユニット（例：メモリページ）または記憶ユニットグループ（例：記憶ブロック）の内容をリセットする１個以上の消去サイクルを実行する、（ｃ）１個の記憶ユニットからバッファへ内容をコピーする、（ｄ）第１の電圧「Ｖ１」を用いて書き込みデータレジスタの内容を有するメモリ部（特定のアドレスを有する）のプログラムまたは消去を試みる、（ｅ）記憶ユニットの内容を書き込みデータレジスタの内容と比較して、レジスタの内容を差異のアトム（基本要素）単位に更新する、（ｆ）後続するデータ読み出しを任意の記憶ユニット場所（状態変更を受けるものとは別のもの、または現在記憶ユニット場所に書き込まれているデータを保持しているバッファに）に向ける、または（ｇ）将来の状態変更および検証／比較の反復をより高い電圧に向ける、連続した個別のコマンドを発行することができる。あるいは、メモリデバイス自身（例：フラッシュデバイス）がこれらの動作の多くをサポートすべく内部構造および論理を有するように設計することが望ましいであろう。これらの設計および各種の変形に関する検討について、いくつかの異なるマスター（例：いくつかの異なるコントローラまたはＣＰＵ）と対話すべく適合されたメモリデバイスの設計に関する設計上の検討事項と合わせて以下に述べる。
【００１８】
図４に、例えば図２、３の構造により例示する複数のバッファを有するフラッシュデバイスの複数のパイプライン化されたメモリ動作を管理するべく使用できる制御方法４０１のフロー図を示す。参照番号４０３および関連付けられた機能ブロックに示すように、Ｎ個のバッファを有するシステムにおいて、本制御方法は一般に、バッファが空いているかまたは使用中か否か判定すべく各バッファの使用状況を追跡して、未使用バッファを新規のメモリトランザクションに動的に割り当てる。この点に関して、いくらかのメモリトランザクション（例：状態変更動作と混在する読み出し）が完了するまでの時間が異なる場合がある点に注意されたい。例えば、後で開始されたメモリページの読み出しが完了した後でも先行する状態変更動作が依然として進行している場合がある。このような状況では、読み出し動作に後で割り当てられたバッファが解放されて、状態変更動作に使用するバッファよりも早い時間で再利用に供することができる。従って、参照番号４０５で示すように、新規のトランザクションが到着したならば、新規の動作「ｉ」を第１個目の利用可能なバッファに割り当てることができ、その際にバッファ割り当てはラウンドロビンまたは絶対順序ベースで行われる。重要なのは、図５に関しての以下で紹介するように、状態レジスタを制御目的で用いることができ、各々の利用可能なバッファおよびフラグ「Ｆｌ」への入力により特定のバッファが空いている、使用中である、またはロード処理の途中であることを示す。コントローラが当該処理を管理する場合、状態をコントローラにローカルに保存することができ、その際にコントローラは１個以上のバッファが利用可能か否かを「知っている」。メモリデバイスが当該処理を管理する実施形態において、全てのバッファが使用中であって動作「ｉ」を待ち行列に入れることができない場合、メモリデバイスは動的なバッファ割り当てを実行してコントローラにエラー信号を送ることができる。参照番号４０７に示すように、メモリデバイスの準備ができていれば、状態変更動作（書き込みまたは消去動作）、読み出し、または他の何らかのトランザクションのいずれにせよ、メモリ動作［ｉ］を実行する。
【００１９】
図４に２個の破線で囲む機能ブロック４０９、４１１により、２個の動作が同時に提示された場合の並行処理動作を示す。この点に関して、この議論の目的のために、第１のメモリ動作「ｉ］が完了する前に第２のメモリ動作「ｉ＋１」を受信するものと仮定すべきである。
【００２０】
実装方式によるが、大多数の動作には複数のステップまたは機能が関わっており、これら各々の機能の管理がコントローラまたはメモリデバイスのいずれかにより実行されている。例えば、今述べたように、メモリデバイスが機械コマンドをサポートするか、または代替的に、メモリデバイス内の制御論理がコントローラからの要求（例：読み出しコマンド、プログラムコマンド、または消去コマンド）を個々のステップに分解してそれらの管理を制御する実装方式において、コントローラ自身がこの処理を管理してもよい。読み出し動作の場合、通常は実行することが必要なステップには、センス回路の帯電、メモリページの読み出し制御、および内容の転送制御が含まれる。この動作の実行は時間を要することがあるため、コントローラには（処理内で各ステップを管理しない実装方式において）ページが読まれていてアップロードに利用可能であることを通知する必要があり、従ってメモリデバイスは、コントローラに読まれる状態レジスタを設定するか、または空き／使用中ピンへ信号を送ることにより、コントローラに対し読み出しデータが利用可能である旨の信号を送ることが必要な場合もある。消去要求および書込み要求に関連付けられたステップは、複数の電圧パルスを反復（「サイクル）において印加できる点で互いに極めて良く類似していてよく、各サイクルは比較または「検証」ステップで終わり、当該サイクルが対象とするメモリセルをどの程度うまくプログラムまたは消去したかを判定する。各サイクルは、回路に特定の電圧を持たせるべく帯電させる、特定の回路に電圧をゲートさせる（例：カラム線または各メモリセルゲートに選択的に電圧を印加する制御トランジスタに）、セルの内容を検知する、「排他的論理和」を実行させる等のコマンドを含んでいてよい。各プログラムコマンドは、プログラミングに用いられる１個以上のブロックを解放するために、コマンドの対象とするメモリ記憶ユニットの消去の後に続いてよい（これは特にフラッシュメモリにおいて真である）。各動作種類に関連付けられた各ステップは、連続するコマンドまたはハードウェア論理により実行することができ、本開示に提供する構造および関連教示によりコントローラまたはデバイス制御論理が複数のステップをインターレース可能にする。
【００２１】
このように、状態変更と読み出し動作をインターレースすることにより、本開示構造において複数のメモリ動作を同時に実行することができる。
【００２２】
並行読み出し動作の場合、複数ページの読み出しをパイプライン化することができ、各ページの内容は別々のバッファ（マルチバッファが利用可能な場合）に保存される。単一セルに基づくメモリの場合、検知機構（例：センスアンプ装置）を適用して、当該検知機構を異なるページに適用する前に、１ページの検知を完了すると共にこれに関連してページをバッファに転送することが望ましい。一般に、異なる回路、電圧、および電圧経路を用いてコマンドの読み出し、書き込み、消去を行なうことができ、次の読み出しへ移る前にこれらの動作（例：ページ全体の）の各々の反復またはサイクルを停止することが望ましいであろう。
【００２３】
並行状態変更動作の場合、書き込みデータレジスタおよび検知機構に対するその関連付けは通常、並行動作を制約するが、これは状態変更動作を集合的に構成する反復サイクルの間で動作が最も中断され易いことを意味する。各サイクルのプログラミングと検証フェーズの間にアレイの検知機構を再適用することも可能であるが、通常は同一カラムおよび補助回路が各フェーズに用いられるため、最も実際的な動作は、状態変更動作を構成する個々のサイクル間で他の動作をインターレースすることであろう。［特定の実装方式に必要ならば、単一のサイクルのプログラムと検証フェーズの間に他の動作にインターリーブすることは確かに可能である。］状態変更動作が進行中である間、プログラミングの対象を読み出すことは、すなわち書き込みデータレジスタに当初転送された書き込みデータのコピーを動的に割り当てられたバッファに残すことにより、可能であって、当該バッファはメモリページのアドレスに関連付けられているだけでよい。この動作が望ましい理由は、上で示唆したように、従来のプログラム動作の場合、書き込みデータレジスタが作業用バッファとして用いられ、ＰＶサイクル間で変更データだけを保存することが多い。従って、プログラミングが開始されたならば、プログラム最中であるデータに対応するメモリデバイス内にデータの正確なインスタンスが存在しないことがある。上述の教示により提供されるバッファを用いて、プログラムデータの「余分な」コピーは保持することができ、当該データの読み出し要求を傍受して当該データが一時的に保持されているバッファから直接充填することができる。
【００２４】
上述のように、バッファおよびデバイスのＩＯ側（すなわち、ＩＯインターフェースおよびバッファと、関連付けられたレジスタ制御の間）およびデバイスのメモリアレイ側（すなわち、メモリ記憶空間とバッファの間）の通信の分離された制御を特徴とする実施形態において、以下に詳述する方法で、各々の側にほぼ独立して並行動作を実行することができる。
【００２５】
上で述べた方法および構造（例：複数すなわち「Ｎ」個のバッファを有する）は例示的に過ぎないことを強調しておく。例えば、１〜２個のバッファだけを用いる上述の実施形態がある。上述の例示的な方法は、これらおよび他の構造を備えた実施形態での利用に適合されていてよい。
【００２６】
Ａ．ＩＯ側制御
上述のように、ＩＯインターフェースとバッファのアレイの間での通信は、メモリアレイ制御機能とは独立に制御することができ、メモリコントローラにより、またはデバイス内のオンボード制御論理により実現することができる。一般に、このＩＯ制御論理に関連付けられた機能は、バッファの可用性を監視し、外部バスからデータをバッファにロードし、バッファ制御に用いる状態レジスタを更新し、消去／プログラム／読み出しコマンドを多数の構成ステップに分解して適切な制御論理となるようこれらのステップを待ち行列に入れ、読み出しデータの準備ができている旨をコントローラ（実施形態に必要ならば）に通知するか、または別途読み出しデータをアップストリーム送信のためにバスに送り出すことを含んでいる。これらの機能を、ＩＯ制御論理の方法５０１を示す図５に示している。
【００２７】
図５に見られるように、本方法は、処理開始ブロック５０３に示すように、新規のメモリ動作を受信したときに開始される。この枠は、当該動作が特定のアドレスに対する読み出しコマンド、または書き込みや消去コマンド等の状態変更動作を含んでいることを示す頭字語「Ｒ／Ｐｇ（ｗ／ｅ）」がラベル付けされている。最初に、決定ブロック５０５により示すように、メモリデバイスがトランザクションを開始する容量を有するか否かを判定する必要がある。利用可能なバッファが少なくとも１個存在する場合、メモリデバイスは直ちにコマンドを受信することができ、実施形態が対応している場合、即時バッファ割り当てが必要でなくても依然としてデバイスはコマンドを受信して待ち行列に入れることができる。例えば、メモリデバイスが動的バッファ割り当てを実行するような実装方式である場合、メモリデバイスは、任意の数の読み出しコマンドおよび関連付けられたメモリアドレス（キャッシュ限度まで）を受信して待ち行列に入れるべく設計することができ、新規の読み出し動作をサポートする帯域幅を有しているため単にバッファを割り当てることができる。状態変更動作の場合、所望の動作を処理するために即座に利用できるバッファが存在しなければ、デバイスはエラーフラグ（処理停止ブロック５０７が示すように）を立てることが望ましいであろう（ここでもまた、デバイスがバッファ割り当てにより帯電されていれば）。例えば、当該実装方式が３個のメモリバッファだけで特徴付けられていて、その１個がメモリに書き込まれているページのコピーを保持すべく使用され、他の２個が異なるページの読み出しに関して既に使用中である場合、メモリデバイスはエラー検出ピンの論理レベルを切り換えて、メモリがそれを処理する準備ができるまで追加トランザクションを待ち行列に入れるべきである旨をコントローラに通知すべく構成されていてよい。あるいは、メモリデバイスは、単に内部空き／使用中状態レジスタフラグを設定することにより新規動作を命令する前にコントローラに読み出しを実行させることができるように構成されていてよい。また、コントローラがメモリデバイス内の個々のステップを命令する実施形態において、コントローラ自身がバッファ割り当てを辿ることにより、新規のメモリ動作が開始される時点で「知る」ことができる。
【００２８】
１．新規トランザクション要求の扱い
方法５０１は次いで、要求された動作がプログラム動作かまたは読み出しコマンドであるかの判定へ進み、読み出し要求は、実装方式に応じて、即時バッファ割り当てを行なうことなく処理のために待ち行列に入れることができる。プログラム要求は通常、即時バッファ割り当ておよび外部バスからのデータのロードを推奨する。例えば、コントローラは、プログラムされるデータの新規ページをプログラムコマンドと共に、またはその直後に、メモリに送信し始めることができ、従ってバッファはデバイスが当該データを受信すべく素早く割り当てられなければならない。読み出し動作の場合、方法５０１は読み出し要求および関連付けられたメモリアドレスを、処理される読み出し要求スタックに先入れ先出し方式で追加し、本方法は次いで終了することができる（参照番号５１１、５１３に示す）。［特に、後述する少なくとも１個の実施形態において、読み出しステップおよび状態変更ステップはインターリーブされていて、プログラム要求が同一ページに対する読み出し要求のすぐ後に続く場合、データ同期問題を回避するために、ＩＯ制御論理を用いてバッファを新規の読み出し要求に直ちに割り当てる（すなわち、コントローラから受信した時点で）ことが望ましいであろう。］当該動作がプログラム動作である場合、本方法は、バッファを割り当て、割り当てられたバッファにプログラムデータを転送し、状態レジスタを更新し、（バッファがロードされていれば）プログラム動作スタックに適切なコマンドを追加するステップを実行することができ、これら全てを参照番号５１５により示す。
【００２９】
図５に、バッファ割り当に関して制御される例示的な状態レジスタ（または状態機械）５１７を示す。当該レジスタは、（１）各バッファ（各々「Ｂ１」、「Ｂ２」および「Ｂ３」とラベル付けされていて、必要に応じてより多くのバッファを提供できる旨を連続する矢印で示す）の識別フィールド、（２）特定のレジスタが（ａ）空いているかまたはトランザクションに使用されているか、（ｂ）ロードのため使用中であるかまたは安定しているかを示すフラグ（「Ｆ１」）の組、（３）バッファの内容に関連付けられるメモリ記憶空間のアドレス、および（４）複数のマスターをサポートする実装方式において特定のマスターに関連付けられた属性を含む多数のフィールドを有している。上述の方法で新規のコマンドが処理されてバッファが割り当てられた状態で、参照番号５１９に示すように、外部デバイス（例：メモリコントローラ）から新規のコマンドが受信されるまで本処理は停止されてよい。いくつかの実施形態において、この状態レジスタまたは状態機械は、各メモリデバイスに常駐的に保存されていてよく、一方、他の実施形態ではフラッシュコントローラ（例：図３のコントローラ３０３等）が各メモリデバイスの状態レジスタを保持することができる。この場合、コントローラから発行された個々のコマンドはバッファ属性または命令コードフィールドを含んでおり、これも参照番号５１７に関連付けられたバッファ属性により表される。
【００３０】
２．動的バッファ割り当ておよびバッファ追跡
上述のいくつかの構造の利点の一つは、不揮発性メモリ内の記憶ユニットが、当該ユニット（または書き込みデータレジスタ内のデータ）が遷移状態であるにも拘わらず、実質的に可読され得る点である。これは、データが書き込みデータレジスタにコピーされた後で、当該データ（プログラムデータ）のコピーをバッファに残し、状態レジスタ（例えば図５に関して上で述べたように）を送られて来たメモリ読み出し結果の参照として使用することにより実質的に実現できる。このような動作を、例えばプログラム最中であるデータを読み出す制御方法６０１を示す図６に示している。
【００３１】
特に、図６に参照番号６０３、６０５で示すように、ＩＯ制御論理が送られて来た読み出し要求を検知した際に、要求が表すアドレスを状態レジスタ入力（例：図５のレジスタ５１７）の内容と比較する。論理は、直近に割り当てられたバッファの順にバッファのエントリを実質的に比較して、最初に合致したならば中止することができる（先行する消去要求を、関連付けられたメモリ空間に対する読み出し用のキャッシュとして扱わないことを保証するため）。他のオプションも存在する。読み出しアドレスがバッファのエントリに合致する場合、求めていたデータのコピーが既にバッファの１個に保存されていることが合致から分かり、次いで状態レジスタ内の関連付けられたエントリのフラグを調べて、関連付けられたデータが現在もバッファにロードされている最中ではない（すなわち、バッファ内で表現されているデータは正確である）ことを保証することができる。この機能を可能にすることは、（図５と関連して上で示唆したように）設計者がメモリからのページ内容の検知と同時になるようにバッファの割り当てを遅延するのではなく、新規のトランザクションに直ちにバッファを割り当てたい理由の一つである。すなわち、コントローラ要求の受信時に直ちにバッファを割り当てる（遅延されたバッファ割り当てと共にコマンドを待ち行列に入れるのではなく）ことで、同一ページに対する次の読み出しが必然的に図６の方法を用いてマッチングを起動させることを保証する。依然としてデータがバッファにロードされている場合、ロードが終わるまでＩＯ制御論理は待つことができるが、データロードが終了したならば、コントローラはデータが読み出しの準備ができている旨の通知を受けることができる。先に述べたように、この通知を実行するために使用できる多数の機構があり、「空き／使用中」ピンの切り換え、コントローラが周期的に調べる状態レジスタの設定、コントローラへのコマンド送信その他いくつかの機構が含まれる。コントローラが通知を受けたならば、コントローラおよびメモリデバイスは、例えば、他のコントローラから発行された読み出しコマンド（または異なるコマンド、例えば、最初にバッファへのデータロードを起動し、続いて対象バッファに宛てられた読み出しコマンド）を用いて、バッファから外部バスへのデータ転送を起動することができる。これらの機能は、図６において参照番号６０７、６０９、６１１および６１３により多様に示されている。バッファ内で「ヒット」が見つからなかった場合、ＩＯ制御論理は、要求されたメモリページがローカルバッファ内で見つからなかったものと判定して、図６に参照番号６１５で示すように、対象コマンド（および関連付けられた記憶ユニットアドレス）をメモリアレイ制御論理の読み出されたスタックに追加する。方法は次いで、参照番号６１７で示すように終了することができる。今述べたように、当該動作を命令することに関連して、空きバッファを新規の読み出しコマンドに直ちに割り当てる（同一ページに対する任意の後続する読み出しによりローカルバッファ内で「ヒット」が生じ、従って当該バッファのコピーの読み出しへ向けられるように）ことが望ましいであろう。参照番号６１９で示す、キャッシュ準備を容易にするこの方法は、すなわち、後続するメモリ要求が受信された時点で、関連付けられた記憶ユニットがロード途中であってもよいため、ストレージアレイに対する読み出しよりも高速且つ潜在的にはより正確であるものと期待される。
【００３２】
これらの例が示すように、いくつかの実装方式において、バッファ使用状況を追跡して、例えば各バッファが空いているかまたは使用中か、および各バッファがロードされている途中か否かのインジケータを提供することは重要であろう。実質的には、レジスタ内の状態フラグを用いて以下のバッファ状態を示すことができる。
（ａ）バッファは未使用で新規トランザクションに動的に割り当てることができる
（ｂ）バッファは使用中で現在安定、すなわちロード途中でビジー状態ではなく、プログラム動作（すなわち書き込みまたは消去）が進行中であるかないかに拘らず、特定のメモリアドレスに関連付けられた現在の内容を、メモリアレイ制御論理またはメモリ記憶空間が関与せずともＩＯ制御論理によりバッファから直接に読み出すことができる
（ｃ）バッファは使用中で現在ロードの最中である。この状態では、バッファの内容は不正確（例：部分的に有効、部分的に無効なデータ）であり、従ってメモリ動作（ステップ、またはメモリアレイ制御論理により管理されたコマンドあるいはＩＯ制御論理により管理されたＩＯ動作）を待ち行列に入れて、ロードが終了した旨を示すべく関連付けられたフラグが変更されるまで実質的に「待つ」必要がある。
この状態データ（例：レジスタフラグにより表されたデータ）をバッファ属性およびバッファ内容に対応するページアドレスと結合することにより、本開示で考察するメモリ動作の大部分を実行することができる。例えば、これらのバッファを基本的にメモリデバイス内のローカルキャッシュ形式で用いて、バッファから直接データを送ることによりプログラム動作の最中に並列動作処理を実行することができる。
【００３３】
３．完了の信号通知およびバッファリソースの解放
メモリアレイ制御論理と共にＩＯ制御論理により実行される特定のステップを用いて、各メモリ動作が完了した際に新たに使用すべくバッファを解放することができる。マルチサイクルプログラムコマンドが進行中である間に当該データを読み出せるように、プログラムデータのコピーをバッファに保持することをサポートする実施形態の場合、プログラミングが完全に正確である（例：書き込みデータレジスタとプログラム最中の記憶ユニットとの間の比較により、プログラムすべき対象が何も残っていないことを示す）と検証されたならば、関連付けられたバッファを解放することができる。この解放を実行するために、メモリアレイ制御論理は単にレジスタ状態ビット（例：関連バッファの最初の「Ｆｌ」フィールド）を変更して、ＩＯ制御論理がここで対象とするバッファを新規トランザクション適用できる（すなわち、たった今プログラムされたデータがメモリ記憶空間から確実に取得できるため）ことを示せばよい。ＩＯ制御論理に関して、読み出し動作が完了したならば（例：コントローラが読み出しデータを取り出さなければならない実装方式ではコントローラにより、またはメモリが肯定的にデータを転送しなければならない実装方式ではＩＯ制御論理により）、バッファは同様に再利用可能である。逆に、プログラミング動作が正常に完了しない場合、無期限にデータを保持するためにバッファを用いてもよい。例えば、所定の数（例：２０）のプログラミングサイクルが特定の装置（例：ページまたはブロック）を正しく「リセット」またはプログラムしない場合、エラー信号をコントローラに上げることができ、コントローラが対象とする記憶ユニットを「不良」であるとマーク付けしてデータを他のメモリ空間（同一デバイスまたは異なる不揮発性メモリデバイスのいずれか）に再設定するまで、データを保持しているバッファを一時ストレージとして用いることができる。
【００３４】
再び、上で示唆したように、各々の新規メモリ要求が受信された際に、当該メモリデバイスは自身の状態レジスタをポーリングして最初に利用可能なバッファを選択して割り当てることができる。対応する要求が満たされたならば直ちにバッファ状態を「空き」に変更することにより、制御論理は、デバイスが直ちに解放されたバッファを再適用して、新規メモリ要求が提示されたならば直ちに受理できることを保証することを支援する。
【００３５】
バッファの使用状況の追跡および動的割り当てに関して与えた記述は例示的に過ぎず、デジタル設計に精通した当業者には明らかになるため、メモリデバイスまたはコントローラ（または他のマスター）のいずれかにおいてこれらの機能を管理きる他の方法が存在する。
【００３６】
４．機能のコントローラ対デバイス管理
上述のように、本開示で紹介した構造を実装および制御する最も直接的な方法は、コントローラに不揮発性メモリデバイス（群）内の個々のステップおよび動作、例えば各バッファ内外へのデータの移動、および個々の状態変更サイクルに関わる動作を管理させることであろう。この設計の直接的な性質の理由は、上述の管理機能がコントローラ管理環境において、コントローラ命令論理を介して比較的容易に実装することができ、且つ必要とされるデバイスハードウェアの観点から簡素化されたコマンドのサポートが比較的「安価」であって、実装が直接的であるからである。上述のように、バッファの使用状況および内容を記述する状態レジスタまたは状態機械は、各メモリデバイス用のコントローラに保持することができる。この構造を用いれば、例えば、コントローラにとって各バッファ内外へのデータの移動、および無論、状態の監視にも関連付けられたコマンドを構築することが比較的容易になる。例えば、これらの原理に従い設計されたコントローラは、以下のコマンドを生成するコマンド生成論理に依存していてよい。
データをセンスアンプ装置から特定のバッファに転送する、
データを特定のバッファからシステムデータバスに転送する、
プログラムデータを特定のバッファに書き込む、
プログラム制御の対象とするデータを特定のバッファから読み出す、
データを特定のバッファから書き込みデータレジスタにコピーする、あるいは
データを特定のバッファから書き込みデータレジスタに非破壊的にコピーする。
コントローラにより生成されたコマンドはこのとき、適宜、上で示唆したように命令コードを用いて通常は特定の宛先バッファを特定する。デジタルシステム設計の技術を有する当業者に想起されるように他のコマンドも無論可能である。
【００３７】
しかし、不揮発性メモリデバイスにおける管理機能のいくつかまたは大部分を含めようとする設計者の動機もまた存在する。一例として、上で要求される管理論理および構造を実装するメモリデバイスは、既存のメモリコントローラおよびオペレーティングシステムと互換性を持つように設計することができる。このように設計されたメモリデバイスはまた、複数のマスター環境（例：複数のマイクロプロセッサを有するネットワークまたはシステムの構成要素として）に比較的容易に適合させることができる。この場合は当然ながら、コントローラまたは他の「マスター」が発行する個々のコマンドは、図５に更に参照番号５１７で示すように、マスター識別フィールドまたは命令コードを含んでいてよい。更に、各コントローラは一般に、管理を要求される多くのタスクを有し、少なくともいくつかのアプリケーションにおいて、且つ全体的な速度に影響を及ぼすことなく各メモリデバイスに機能をオフロードできる程度に、システム全体の効率を向上させることができる。
【００３８】
Ｂ．メモリアレイ制御論理
メモリアレイ制御論理は、バッファの組とメモリ記憶空間の間での情報の流れを管理するよう求められ、これにはメモリページのプログラムに使用したデータを書き込みデータレジスタへの充填、検証データのセンスアレイ（センスアンプ装置）から書き込みデータキャッシュへの転送、読み出しデータのセンスアレイから割り当てられたバッファへの移動が含まれる。上述のように、プログラム動作に関連付けられたデータはバッファに保持することができ、先行するマルチサイクル状態変更動作が完了するまで、後続するプログラム動作用のデータを別のバッファに保存して待ち行列に入れることができる。メモリの新規ページに動作が行なわれた際に、メモリアレイ制御論理機能は、関連バッファからデータを書き込みデータレジスタに転送する。
【００３９】
送られて来たメモリコマンドに関連して上で述べたように、メモリアレイ制御論理は、実質的にプログラムおよび読み出し動作を２個の異なるスタック内で待ち行列に入れて、状態変更動作ステップと読み出し動作ステップの制御を分離するように設計することができる。この違いは、以下で分かるように、読み出しおよび状態変更動作がメモリ動作にさほど影響を及ぼすことなく、自動的にインターリーブできるようにデバイス動作を構築する一つの可能な方法提示する。
【００４０】
１．コマンドスタックの処理および状態レジスタの更新
図７に、状態変更および読み出し動作をインターリーブできる方法７０１を示す論理フロー図を提示する。今述べたように、読み出しおよび状態変更ステップを別々の機能スタックまたは待ち行列に分離することができる。メモリアレイ制御論理機能は、いずれの待ち行列も未実行のメモリ動作を要求しない間、待ちモードで動作する。いずれかの待ち行列でステップが提示されたならば、機能的参照７０３、７０５および７０７に示すように、方法７０１は最初に状態変更ステップの実行へ進み、次いで第２に読み出しステップを実行する。実行のこの順序に従い、本方法は開始ブロック７０３に戻って、再び同じサイクルで動作する。すなわち、各々が各々の待ち行列で提示される程度に、待ち行列に入れられた任意の状態変更ステップに続いて待ち行列に入れられた任意の読み出し動作ステップを実行する。
【００４１】
各ステップを実行した結果、影響を受ける各バッファに対する状態レジスタの更新と同様に、実質的に各々の機能的な待ち行列に追加ステップが挿入される場合がある。例えば、上述のように、状態変更動作が終了したならば（例：記憶ユニットが正しくプログラム最中である）、不揮発性メモリから完全且つ有効なデータを読み出すことができ、もはやバッファが必要とされないため、関連付けられたバッファを解放することができる。換言すれば、各ステップは、マルチサイクル状態変更動作（すなわち、プログラムまたは消去）の単一「サイクル」、または読み出しの場合、単一メモリページのバッファへの転送を表すことができる。各プログラム検証サイクルの検証フェーズの一部として、データが正しく変更状態されていると判定された場合、動作が終了してバッファを解放することができる。書き込みデータレジスタを更新した後で更なるサイクルが必要な場合、検証フェーズは新たなコマンド（すなわち新たなサイクル）を、実質的にプログラム待ち行列の最上位に挿入することができる。従って、メモリの１ページをバッファに転送することにより読み出し動作（存在すれば）を実行した後で、図７の方法７０１は、実質的に別のサイクルを実行すべくループバックされる。このように、状態変更および読み出しステップ（並行に存在するならば）を自動的にインターリーブして、マルチサイクル状態変更動作の各サイクルの間で読み出し（または必要に応じて複数の読み出し動作）を生起させることができる。
【００４２】
２．状態変更動作
図８に、今述べた当該論理フローを表すために用いる方法８０１を示すが、プログラム動作に関連付けられたステップに焦点を当てている。新規のプログラム（または書き込み）要求をコントローラから受信したならば、ＩＯ制御論理は、特定のメモリアドレス（例：メモリのブロックまたはページ）をプログラムする一連のプログラムステップを待ち行列に入れる。いずれかの特定のメモリページが書かれる場合に参照番号８０３に示すように、メモリセルの解放に用いるデータのブロックのリセットに対応して、通常は対象とする装置の消去が最初に生起する。消去動作は、対象とするブロックに関連付けられた全てのメモリセルの「リセット」を保証するために必要なサイクルだけ実行される（参照番号８０３で示すように）。参照番号８０５で示すように、次いでプログラム動作が生起し、同様に機能ブロック８０９に示すように、マルチサイクルを用いた関連データのバッファから書き込み回路への転送および当該データの記憶ユニット（例：メモリのページ）へのプログラミングから開始される。このように、マルチサイクルプログラミング動作の各サイクルを単一の処理またはステップと見なすことができる。上述のように、複数ステップ処理全体を、保留された読み出しがあればインターリーブ方式で消去サイクルの間に挿入するように管理することができる。
【００４３】
図９に、状態変更動作の各サイクルに関連付けられた動作の詳細なフロー図を示す。図９は、プログラムスタック論理が特定のページについて保留されたプログラム動作を信号通知した際に実質的に開始され、図９に参照番号９０３で集合的に表すように、アドレスおよび関連データ（すなわちプログラム動作の場合の特定のデータ）が書き込み回路に送られる方法９０１を表す。本方法は次いで、参照番号９０５により識別されるプログラムフェーズを起動し、当該フェーズの間に書き込み回路は必要に応じてメモリ記憶空間を帯電させて、「ゼロ」（すなわち、この値を用いて影響を受けるメモリセルに関連付けられたコントロールゲートを「オン」にする）であるページ値に対応する各メモリセルをプログラムしようと試みる。このような最初のプログラム動作は、書き込み回路により設定された既定電圧値を用いて最小プログラミング電圧を表す。特に、本動作はプログラムおよび消去動作に類似しているが、セルをセット（すなわち、「プログラムされる」）またはリセットする（すなわち、「消去される」）場合、セルをプログラムする特定の方法は異なる。例えばフラッシュメモリの場合、設計に応じて、基板に量子トンネル効果が生じていれば基板を帯電させて基本的に除去することにより、ブロックに対して消去を適用することができるのに対し、「セット」は通常、トランジスタをオンにすることによりメモリセルに関連付けられたフローティングゲートを帯電させる電圧をコントロールゲートに印加することにより実行される。他の種類のメモリ（例：ＲＲＡＭ）の場合、「セット」および「リセット」動作には異なる電圧が関与する場合がある。［電荷を調整して送る特定の方法は、データが最初にバッファから書き込み回路および書き込みデータレジスタ転送された際に確定された設定に応じて書き込み回路により定義される。］消去動作の場合、適切な消去は、ブロック内のいずれかのメモリセルが正しくリセットされなかったか否かを検知することにより実行することができる。いずれかのセルが正しくリセットされなかった場合、再び消去が適用され、すなわち基本的にＰＶサイクルを用いて、全てのビットが論理値「１」にリセットされるまで当該動作を繰り返す。プログラム動作の場合、本方法は次いで検証するフェーズを起動し、記憶ユニット（すなわち、プログラム最中であるメモリ空間）と書き込みデータレジスタの間で排他的論理和を実行してその結果を反転させる。これらの結果において表現された「ゼロ」が存在しない場合、当該ページは正しくプログラム（または消去）されていて、関連付けられたバッファがあれば解放しながらプログラム動作を終了することができる。これらの動作を図９において参照番号９０７、９０９、９１１、および９１３により集合的に表す。あるいは、結果において少なくとも１個の「ゼロ」が存在する場合、完全な結果を用いて書き込みデータレジスタを上書きする。書き込みデータレジスタは次いで、先行する状態変更の試みが失敗した各メモリページ位置において（すなわち、記憶空間内の各セルについて）「ゼロ」となり、特定のサイクル（プログラムおよび検証フェーズ）が完了する。別のサイクルを実行する必要があるため、「Ｖ」を増大させる（すなわち、より高い電圧を次の状態変更の試みで使用するように書き込み回路が使用する既定電圧を増やす）し、且つ同一メモリページに対する別の状態変更動作を処理待ち行列の最上位に追加してステップが終了する。本動作はまた、対象とする記憶ユニットに対して既に実行された反復的ＰＶサイクルの数を表す値「ｋ」を増やす。上述のように、この値を用いて「不良」メモリブロックを検知する。すなわち、何らかの所定の制限（「２０サイクル」等）に達したならば、この場合のメモリデバイスはコントローラにエラーの信号を送って、対象とするデータに対する更なる命令を待つ。これらの機能を図９に参照番号９１５、９１７、９１９および９２１で一般的に示す。
【００４４】
３．読み出し動作
図１０に、上述の方法、構造、および論理に関連して読み出し動作を達成できる一方法１００１を示す。特に、各々の読み出しは、クロスバー（例えば図２、３に示す実施形態のようにクロスバーに依存する実施形態が用いる場合）の設定から開始することができる。参照番号１００３、１００５により示すように、この設定機能は、センスアンプ装置からページ内容の一時的な宛先として機能する割り当てられたバッファへデータをルーティングする役割を果たす。クロスバーの設定に続いて、割り当てられたバッファ用のバッファ状態フラグが変更されて、割り当てられたバッファが「使用中」であって、この時点で読み出された場合、そのデータが遷移状態にあって正確ではない恐れがあることを示す。記憶空間に関連付けられた回路には、読み出される特定のユニット（例：データの特定のページ）のアドレスデータも与えられており、読み出しデータは次いで、参照番号１００７、１００９に示すように、割り当てられたバッファに転送される。読み出しが完了したならば、再び状態レジスタがアクセスされて（番号１０１１を参照）、バッファがもはや「使用中」ではない（すなわち、データをロードしておらず、従って自身の内容がデータの有効なページを表す）ことを示すために再びバッファ状態フラグを変更される。本方法は次いで、参照番号１０１３に示すように終了する。
【００４５】
読み出し動作は一般に、上述の状態変更動作よりも単純である。これらの動作もまた複数のステップを必要とするが、検知動作のために生じる帯電および電圧印加は通常、今述べた状態変更動作とは異なる。一般に、読み出し、プログラム、および消去動作のために潜在的に異なる信号経路で異なる特定の電圧を切替える必要があるため、一般に、メモリアレイ制御の設定を変えないように、読み出し動作「内」に別のコマンドをインターリーブする前に各サイクル（例：各々の書き込みまたは消去サイクル、あるいはページ全体の各々の読み出し）を完了させることが好適であるが、再び、所望のアプリケーションに応じて相反する動機があるかもしれない
【００４６】
これまで述べてきたメモリ構造を実装する各種のフレームワークおよび設計オプションを前提として、本開示は次に、上述の構造および方法を用いて実行可能な動作の具体例を挙げる。
【００４７】
ＩＩＩ．特定のトランザクション例
１．複数の読み出し要求の同一メモリ記憶空間へのパイプライン化
先に述べたように、本開示で提案する構造は、複数の動作をメモリデバイスへ送って、先行動作の完了を待たなくても少なくとも部分的に開始できるため、より高速な不揮発性メモリ動作を容易にする。この並行動作は、同一メモリ空間に適用することができる。すなわち、単一書き込みデータレジスタ（またはそのようなレジスタの並列グループ）および単一センスアレイにより共通的にサービスを受けるセルへの複数のメモリ動作による並行アクセスを可能にする。
【００４８】
実行可能な並行動作の一つは、複数の読み出し要求の処理に関る。上述のように、ＩＯ制御論理は、第１の動作の完了を待つことなく複数の動作をスタックすることができる。この点に関して、プログラム制御論理はセンスアレイ（センスアンプ装置）と１個のバッファの間でデータを転送することができるのに対し、ＩＯ制御論理はコントローラへ送信すべく異なるバッファからメモリの第２のページを外部データバスに転送する。クロスバーを使用することで、プログラム制御論理が任意のバッファをセンスアレイにスイッチング可能に接続することができるため、任意のバッファを読み出しデータの一時宛先として動的に割り当てることができる。読み出し要求に関連付けられたバッファの充填は、従って高速実行のためにパイプライン化することができる。通常は要求の起動および要求されたメモリの各ページに対するセンスアレイからのデータ転送毎に伴う時間を待つ必要なしに、フラッシュデバイスからメモリの複数のページを連続的に素早く読み出すことができる。
【００４９】
２．複数の書き込み／消去要求のパイプライン化
上述の構造もまた、今述べたのとほぼ同じ方法で複数の書き込み／消去要求をパイプライン化することができる。ＩＯ制御論理は、不揮発性メモリに書き込まれるデータの複数のページを連続的に素早く異なるバッファにロードできるように、状態変更動作を起動して書き込み（プログラム）要求にバッファを割り当てることができる。メモリデバイスが１個の状態変更動作に使用中である間、当該メモリ空間に関連付けられた書き込み回路およびセンスアレイが使用中であるにも拘わらず、後続する書込み動作用のデータのページを待ち行列に入れることができる。すなわち、上で紹介したメモリデバイスは一般に、状態変更動作（および、関連する「使用中」状態のコントローラへの提示）が完全に完了するのを待つ必要がなく、たとえマルチサイクル動作が進行中であっても、メモリの追加的なページまたはブロックに対する新たな状態変更要求の受理に進むことができる。
【００５０】
３．プログラム／消去サイクルまたはフェーズ間における読み出し要求のインターリービング
今述べた動作はまた、同時読み出し動作および書き込み（プログラム）または消去動作に拡張することができる。具体的には、メモリの１ページがプログラムされている間、デバイスを「使用中」のままにするのではなく、（既にデータバッファにロードされている）データを外部バスを介してコントローラへストリーミングすることにより、書き込み回路およびを検知回路が「使用中」であるにも拘わらず、メモリの１ページ以上を読み出すことができる。これらの動作はマルチサイクルを要するため、上述の論理は、書き込み回路設定または書き込みデータレジスタの内容を一切阻害することなく、マルチサイクル書き込みまたは消去動作を中断して、プログラム制御論理がデータのページを割り当てられたバッファへ素早く転送し、次いで状態変更動作を再開できるように読み出し動作のインターリーブ可能にする。次いで書き込み回路が自身の動作を続けるにつれて、ＩＯ制御論理はメモリの当該ページを外部バスを介してコントローラ読み出し要求を満たすべく外へ転送する。いくつかの実施形態において、単一の状態変更サイクル（すなわち、プログラミングサイクルの検証フェーズの前に読み出しを実行する）内でフェーズを中断することが可能である。しかし、標準のフラッシュアレイ実装の場合、セルがプログラムされる際にセルの内容が検知することが相対的に容易であるため、この設計選択は準最適であるかもしれない。上で述べた読み出しと状態変更を並行させる利点を拡張して、複数の読み出しおよび複数の状態変更動作をメモリデバイスが同時に受信して、効率的な動作のためにパイプライン化（個々のステップがインターリーブされて）することができる。メモリデバイスは、適切に設計されていれば、単一のマスター（例：単一のコントローラ）のスレーブとして、または複数の装置（すなわち、各メモリデバイスが各々の読み出しを要求しているマスターを識別して、要求されたデータの準備ができたならば当該マスターに通知可能にする構造を提供することにより）向けに構成することができる。所与のメモリ実装方式に設計されたバッファの個数に応じて任意の程度の並行性をサポートすることができる。
【００５１】
ＩＶ．結論
本開示は、不揮発性デバイスおよび関連する動作システムおよび方法の実施形態を提示してきた。より具体的には、書き込みデータレジスタへのロードに関連付けられた経路を分離し、センスアンプ装置から読み出しデータを出力し、センスアンプ装置からデータを送って書き込みデータレジスタ更新するデバイスを用いて、同一メモリ組織内（例えば同一メモリバンク内）で並行処理を並列に実行することができる。いくつかの実施形態において、複数のバッファの各々を読み出しまたはプログラム対象であるメモリページに動的に割り当てることにより、トランザクションの並列処理を行なって現在プログラム動作の最中であるデータの読み出しを可能にする。これらの構造および方法の他の実施形態、応用、および代替方式が存在する。
【００５２】
上述の議論から明らかなように、これらの構造は潜在的に、不揮発性デバイスのより広範囲にわたる利用を可能にする。これらのデバイスの待ち時間を短縮することにより、上述の実施形態は潜在的にこれらのデバイスを高速化できるため、速度が問題になる用途においてより実際的な選択肢となる。いくつかの用途はプログラムおよびアクセス速度の懸念と同様に電力の制約を受ける恐れがあるため、これらの教示は、例えば携帯および移動機器におけるより高速な不揮発性読み出し、プログラミング、および消去を許可することにより、以前は非現実的であると思われていた用途を可能にすることができる。
【００５３】
いくつかの設計において、特定の機能をフラッシュその他の不揮発性コントローラ等のメモリシステムコントローラにより追跡することができる。例えば、コントローラは、待ち行列からの読み出し要求に対応してデータを取得すべく読み出しデータを待機する、または状態レジスタおよび関連付けられたバッファを「ピングする」役割を与えられている場合がある。他の設計において、これらの機能のいくつかは、代わりにメモリデバイスに常駐している場合がある。例えば、特に１個のメモリデバイスが複数のプロセッサと対話可能な実施形態の場合、メモリデバイスに特定のバッファを特定のトランザクション（例：読み出し動作）に動的に割り当てさせ、割り当てられたバッファを関連付けられたコントローラに通知させることが望ましいであろう。更に他の場合において、バッファの割り当てをコントローラに対して透過的に行なうことができ、その場合個々のメモリ要求と関連付けられたバッファとの間の相互参照は純粋にメモリデバイス内だけで行なわれる。これらの原理の他の変形例もまた当業者には想起されよう。
【００５４】
また、上述の構造を、これらの原理の一つの可能な実施形態としてフラッシュメモリに特化して提示していたが、他のアプリケーションも存在する。すなわち、本明細書で述べた原理は、比較的長いプログラミング、書き込み、または消去リードタイムを要する、またはこれらの動作が複数のサイクルおよび／または検証ステップを要する任意の形式のメモリに適用可能である。これらの原理を制約することなく、これらの原理の適用可能ないくつかの特定のメモリ形式（具体的な設計に依存する）には、抵抗変化ＲＡＭ、相変化ＲＡＭ、磁気ＲＡＭ、およびデジタル情報を保存するために物理状態が変化する他の形式のメモリが含まれる。
【００５５】
上述のデバイスはまた、少なくとも部分的に命令論理の観点で記述しているが、上で参照した各々の機能を、動作がハードウェア（すなわち論理回路）により、あるいは命令論理（すなわちソフトウェアまたはファームウェア）完全にまたはほぼ完全に管理されるように設計することも可能である。
【００５６】
従って、上述の議論は例示目的に過ぎず、他の設計、用途、代替、変更、および改良もまた当業者に想起されるにもかかわらず、それらは本開示の趣旨および範囲に含まれるものであり、添付の請求項および等価物によってのみ限定および定義される。
【図１】
2012511789.tif 000003
【図２】
2012511789.tif 000004
【図３】
2012511789.tif 000005
【図４】
2012511789.tif 000006
【図５】
2012511789.tif 000007
【図６】
2012511789.tif 000008
【図７】
2012511789.tif 000009
【図８】
2012511789.tif 000010
【図９】
2012511789.tif 000011
【図１０】
2012511789.tif 000012
【手続補正書】
【提出日】平成23年6月22日(2011.6.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の記憶ユニットを有し、各ユニットが、一括的にプログラムする必要がある記憶空間の最小量を表すメモリ記憶空間と、
マルチサイクル状態変更動作と関連して、前記ユニットの少なくとも１個のプログラミングに使用すべくデータを保持する書き込みデータレジスタと、
前記ユニットのいずれかからデータを読み出すセンスアンプ装置と、
入出力（ＩＯ）インターフェースと、
（ｉ）前記センスアンプ装置を前記書き込みデータレジスタに結合して、前記マルチサイクル状態変更動作に使用すべく前記ユニットの内容をフィードバックし、
（ｉｉ）前記マルチサイクル状態変更動作と同時に、前記ユニットの１個からの読み出しデータを前記ＩＯインターフェースに結合する内部ルーティングとを含むメモリデバイス。
【請求項２】
前記デバイスが、（ｉ）前記センスアンプ装置と前記ＩＯインターフェースの間、および（ｉｉ）前記書き込みデータレジスタと前記ＩＯインターフェースの間にも動作可能に配置される少なくとも１個のデータバッファを更に含み、
前記内部ルーティングが、前記少なくとも１個のバッファからプログラムデータを前記書き込みデータレジスタにルーティングし、且つ前記センスアンプ装置からの読み出しデータを前記少なくとも１個のバッファにルーティングすべく適合されている、請求項１に記載のメモリデバイス。
【請求項３】
前記メモリデバイスが、前記センスアンプ装置と前記ＩＯインターフェースの間に動作可能に配置されていて、各々が少なくともメモリページを保持するサイズである少なくとも２個のバッファを更に含み、
前記内部ルーティングが、マルチサイクル状態変更動作が進行中である間、前記センスアンプ装置からデータを（ｉ）前記マルチサイクル状態変更動作と関連して前記書き込みデータレジスタと（ｉｉ）前記バッファの動的に割り当てられた１個とへ交互にルーティングして、前記マルチサイクル状態変更動作と同時に、前記センスアンプ装置からの読み出しデータを前記バッファの動的に割り当てられた１個に転送すべく適合されたスイッチング機構を含む、請求項１に記載のメモリデバイス。
【請求項４】
前記状態変更動作が書込み動作を含み、書込み動作が進行中である間、前記スイッチング機構が前記バッファの動的に割り当てられた１個から前記読み出しデータを前記出力インターフェースに転送する、請求項３に記載のメモリデバイス。
【請求項５】
前記内部ルーティングが、前記プログラムデータに対応するページを、書込み動作に関連付けられた第２の動的に割り当てられたバッファにロードすべく適合されていて、前記第２の動的に割り当てられたバッファから前記書込み動作に関連付けられたデータを読み出すことにより、前記書込み動作の対象である前記メモリ記憶空間のユニットが遷移状態にあるにも拘わらず、前記書込み動作の対象である前記記憶空間の前記ユニットを、前記書込み動作と同時に読み出すことができる、請求項３に記載のメモリデバイス。
【請求項６】
前記内部ルーティングが、前記ページサイズに少なくとも等しい幅を有するクロスバーを含み、前記クロスバーが（ｉ）前記書き込みデータレジスタまたは前記センスアレイのいずれかと（ｉｉ）前記少なくとも２個のバッファのいずれか１個との間でデータをルーティングすべく適合されている、請求項３に記載のメモリデバイス。
【請求項７】
前記少なくとも２個のバッファの各々が前記ＩＯインターフェースを介して外部的にアドレス指定可能であって、外部デバイスが前記少なくとも２個のバッファの任意の特定の１個にあるデータのロードを選択的に生起させることができる、請求項６に記載のメモリデバイス。
【請求項８】
前記マルチサイクル状態変更動作の複数のサイクルの各々が、前記メモリ記憶空間の一ユニットの内容を前記書き込みデータレジスタの内容と比較する検証動作を含み、
前記内部ルーティングが、検証動作の間、前記動的に割り当てられたバッファの１個への前記読み出しデータの転送を禁止すべく構成されている、請求項３に記載のメモリデバイス。
【請求項９】
前記バッファの１個が、前記状態変更動作の最中に参照用に前記書き込みデータレジスタに当初保存されていたデータのコピーを保存すべく、且つ前記書き込みデータレジスタ当初保存されていた前記データの、前記マルチサイクル状態変更動作と同時の読み出しを許可すべく適合されていて、
前記メモリデバイスが、同時状態変更の対象ではない各ユニットを前記メモリ記憶空間から読み出すことにより、且つ前記バッファの１個から前記書き込みデータレジスタに当初保存されていた前記データを読み出すことにより、状態変更動作と同時に前記メモリ記憶空間の前記複数のユニットの任意の１個に関連付けられたデータの読み出しを許可すべく適合されている、請求項３に記載のメモリデバイス。
【請求項１０】
動的な割り当てが、前記メモリデバイス上に常駐している割り当て論理により実行される、請求項３に記載のメモリデバイス。
【請求項１１】
消去動作が進行中である間、前記スイッチング機構が、前記読み出しデータを前記センスアンプ装置から前記動的に割り当てられたバッファに転送すべく適合されている、請求項１に記載のメモリデバイス。
【請求項１２】
前記メモリデバイスが、各々が少なくともメモリページを保持するサイズである少なくとも３個のバッファを更に含み、
前記内部ルーティングが、（ｉ）前記読み出しデータのコピーを動的に割り当てられた第１個目のバッファに保存する、且つ（ｉｉ）前記状態変更動作が進行中である間、前記読み出しデータを前記第１個目のバッファから前記ＩＯインターフェースへ転送する動作の両方を行なうべく構成されていて、
前記内部ルーティングが、プログラムデータを動的に割り当てられた第２個目のバッファにロードして、前記状態変更動作と同時に前記第２個目のバッファからの前記プログラムデータの読み出しを許可すべく適合されていて、
前記メモリデバイスが、同時状態変更の対象ではない各ユニットを前記メモリ記憶空間から読み出すことにより、且つ前記バッファの１個から前記プログラムデータを読み出すことにより、状態変更動作と同時に前記複数の記憶ユニットの任意のものに関連付けられたデータの読み出しを許可すべく適合されている、請求項１に記載のメモリデバイス。
【請求項１３】
前記状態変更動作がマルチサイクルプログラム検証動作を含む、請求項１２に記載のメモリデバイス。
【請求項１４】
前記内部ルーティングが、（ａ）センスアンプ装置と少なくとも３個のバッファの任意の１個の間でデータを転送し、（ｂ）前記センスアンプ装置と前記書き込みデータレジスタの間でデータを転送する、請求項１２に記載のメモリデバイス。
【請求項１５】
前記メモリデバイスが、状態変更動作のサイクル間でメモリ読み出し動作をインターリーブすべく適合された制御論理を更に含み、前記制御論理が、少なくとも前記状態変更動作のサイクルの１個の検証フェーズの間に前記メモリ読み出し動作を待ち行列に入れて、（ａ）少なくとも状態変更動作のサイクル間に実行すべく適合されている、請求項１４に記載のメモリデバイス。
【請求項１６】
フラッシュメモリデバイスとして実装されている、請求項１に記載のメモリデバイス。
【請求項１７】
前記内部ルーティングが、単一のプログラム検証サイクル内で、（ｉ）前記センスアンプ装置を前記書き込みデータレジスタに結合して、前記マルチサイクル状態変更動作で使用するために記憶ユニットの内容をフィードバックし、且つ（ｉｉ）前記ユニットの１個からの読み出しデータを前記ＩＯインターフェースに結合すべく適合されている、請求項１に記載のメモリデバイス。
【請求項１８】
記憶領域の複数のユニットと、
前記ユニットの任意のものからデータ値を読み出すセンス機構と、
前記ユニットの任意のものへデータ値をプログラミングすべく使用されるレジスタと、
複数のバッファと
（ｉ）前記複数のバッファの各々と（ｉｉ）前記書き込みデータレジスタまたは前記センス機構の選択された１個を結合するクロスバーと、
前記複数のバッファの各々を前記外部バスに動作可能に結合すべく適合されている入出力（ＩＯ）インターフェースを含むメモリデバイス。
【請求項１９】
フラッシュメモリデバイスとして実装されている、請求項１８に記載のデバイス。
【請求項２０】
各々のユニットが、（ｉ）別々にプログラム可能な最小量のメモリ空間、または（ｉｉ）別々に消去可能な最小量のメモリ空間の少なくとも一方を表す、請求項１８に記載のデバイス。
【請求項２１】
前記デバイスが、マルチサイクルプログラム検証動作により前記ユニットを個別にプログラムすべく適合されていて、
前記デバイスが、特定のデータの読み出しを、前記特定のデータの未完了であるマルチサイクルプログラム検証動作と同時に許可する手段を更に含む、請求項１８に記載のデバイス。
【請求項２２】
前記デバイスが、マルチサイクルプログラム検証動作により前記ユニットを個別にプログラムすべく適合されていて、
前記デバイスが、前記プログラム検証動作に関連付けられたサイクル間で読み出し動作をインターリーブすべく適合されている制御論理を更に含む、請求項１８に記載のデバイス。
【請求項２３】
前記デバイスが、マルチサイクル消去動作により前記ユニットを個別にプログラムすべく適合されていて、
前記デバイスが、前記消去動作関連に付けられたサイクル間で読み出し動作をインターリーブすべく適合されている制御論理を更に含む、請求項１８に記載のデバイス。
【請求項２４】
前記デバイスが、前記ＩＯインターフェースを介して前記複数のバッファの第１個目から前記記憶領域の前記複数のユニットのデータを読み出すことを許可すべく、且つ前記クロスバーを介して前記記憶ユニットの１個の後続する読み出し動作に関連付けられたデータを前記複数のバッファの第２個目に同時に転送すべく適合されている、請求項１８に記載のデバイス。
【請求項２５】
前記デバイスが、（ｉ）前記レジスタを用いて第１のデータを前記記憶領域の前記複数のユニットの１個にプログラミングすることを許可し、（ｉｉ）前記複数の記憶ユニットの１個の後続するプログラム動作に関連付けられた第２のデータを前記複数のバッファの１個の待ち行列に入れて、（ｉｉｉ）前記第１のデータのプログラミングの完了に続いて、前記複数のバッファの１個から前記クロスバーを介して前記第２のデータを前記レジスタに転送すべく適合されている制御論理を更に含む、請求項１８に記載のデバイス。
【請求項２６】
さらに、前記デバイスが、前記複数のバッファの第２個目からの前記第１のデータの読み出しを許可すべく適合され、且つ前記複数のバッファの第１個目からの前記第２のデータの読み出しを許可すべく適合されていて、その各々が、前記記憶領域の前記複数のユニットの１個のプログラミングが前記メモリデバイスにより同時に実行されているにも拘わらず可能である、請求項２５に記載のデバイス。
【請求項２７】
メモリデバイスであって、
前記デバイス内の複数のバッファの各１個の使用状況を追跡する手段と、
第１のメモリ動作と関連して、前記バッファの第１個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第１のデータを前記バッファの第１個目にロードする手段と、
第２のメモリ動作と関連して、前記バッファの第２個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第２のデータを前記バッファの第２個目にロードする手段と、
前記第１のメモリ動作および前記第２のデータのロードを並行して実行する手段と、
前記追跡に応答して、前記複数のバッファの任意の１個が、先行トランザクションに関する利用可能性に応じて前記第１のメモリ動作または前記第２のメモリ動作のいずれかに用いられるように、前記バッファの第１個目の識別および前記バッファの第２個目の識別を動的に実行する手段とを含むメモリデバイス。
【請求項２８】
メモリデバイスを動作させる方法であって、
前記デバイス内の複数のバッファの各々の使用状況を追跡するステップと、
第１のメモリ動作と関連して、前記バッファの第１個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第１のデータを前記バッファの第１個目にロードするステップと、
第２のメモリ動作と関連して、前記バッファの第２個目を現在使われていないものとして識別し、これに応答して前記デバイス内のメモリの少なくとも１ページに関連付けられた第２のデータを前記バッファの第２個目にロードするステップと、
前記第１のメモリ動作および前記第２のデータのロードを並行して実行するステップと、
前記追跡に応答して、前記複数のバッファの任意の１個が、先行トランザクションに関する利用可能性に応じて前記第１のメモリ動作または前記第２のメモリ動作のいずれかに用いられるように、前記バッファの第１個目の識別および前記バッファの第２個目の識別を動的に実行するステップとを含む方法。
【請求項２９】
前記追跡ステップが、フラッシュメモリコントローラ内の複数のバッファの各々を追跡するステップを含む、請求項２８に記載の方法。
【請求項３０】
前記第１のメモリ動作が、マルチサイクルプログラム検証動作を含む、請求項２８に記載の方法。
【請求項３１】
前記マルチサイクルプログラム検証動作の各サイクルが、プログラムフェーズおよび検証フェーズを含んでいて、並行的実行が、前記プログラムフェーズ最中に前記第２のデータをロードするステップと、前記検証フェーズの最中に前記第２のデータのロードを禁止するステップとを含む、請求項３０に記載の方法。
【請求項３２】
前記第１のメモリ動作の各々が読み出し動作を含む、請求項２８に記載の方法。
【請求項３３】
前記第１のメモリ動作および第２のメモリ動作の各々がプログラム動作を含み、前記方法が書き込みデータレジスタに前記バッファの第１個目から前記第１のデータのコピーをロードするステップと、前記第１のデータをプログラミングするステップと、前記第１のデータの前記プログラミングの完了に続いて、前記書き込みデータレジスタに前記バッファの第２個目から前記第２のデータのコピーをロードするステップを更に含む、請求項２８に記載の方法。
【請求項３４】
機械可読記憶媒体に保存された命令を含む装置であって、各々がメモリ動作の最中にデータを保持すべく使用される複数のバッファを有する少なくとも１個のメモリデバイスの制御に使用すべく適合されていて、前記少なくとも１個のメモリデバイスが前記複数のバッファの異なるものを用いて第１のメモリ動作および第２のメモリ動作の各々を並行して実行すべく適合されていて、前記命令が実行された場合は機械に、
前記メモリデバイス内の複数のバッファ常駐の各１個の使用状況を追跡させ、
前記第１のメモリ動作と関連して、前記バッファの第１個目を現在使われていないものとして識別させ、これに応答して前記デバイスのメモリの少なくとも１ページに関連付けられた第１のデータを前記バッファの第１個目にロードさせ、
前記第２のメモリ動作と関連して、前記バッファの第２個目を現在使われていないものとして識別させ、これに応答して前記デバイスのメモリの少なくとも１ページに関連付けられた第２のデータを前記バッファの第２個目にロードさせ
前記追跡に応答して、前記複数のバッファの任意の１個が、先行トランザクションに関する利用可能性に応じて前記第１のメモリ動作または前記第２のメモリ動作のいずれかに用いられるように、前記バッファの第１個目の識別および前記バッファの第２個目の識別を動的に実行させるべく適合されている装置。
【請求項３５】
メモリコントローラによる使用に適合されていて、前記命令がファームウェアを含んでいて、前記機械可読記憶媒体が読み出し専用メモリデバイスを含む、請求項３４に記載の装置。
【請求項３６】
各バッファがシステムデータバスを介してインターフェースに結合されている複数のバッファによるサービスを受けるメモリストレージアレイで使用される装置であって、
前記複数のバッファ各１個の使用を追跡する状態機械と、
コントローラ常駐のコマンド生成器、すなわち前記状態機械に結合されていて、前記状態機械の内容に応答してバッファ固有のコマンドを生成するコマンド生成器とを含む装置。
【請求項３７】
前記状態機械が、前記メモリストレージアレイおよび前記複数のバッファと共にメモリデバイス内に常駐している、請求項３６に記載の装置。
【請求項３８】
前記状態機械がコントローラ−常駐である、請求項３６に記載の装置。
【請求項３９】
前記バッファ固有のコマンドが、
特定のバッファにセンスアンプ装置からデータを転送するコマンド、
特定のバッファから前記システムデータバスにデータを転送するコマンド、
特定のバッファにプログラムデータを書き込むコマンド、
特定のバッファからプログラム制御の対象であるデータを読み出すコマンド、
特定のバッファから前記書き込みデータレジスタにデータをコピーするコマンド、または
特定のバッファから前記書き込みデータレジスタに非破壊的にデータをコピーするコマンド
の少なくとも１個を含む、請求項３６に記載の装置。
【請求項４０】
前記バッファ固有のコマンドがバッファアドレスフィールドを含む、請求項３６に記載の装置。
【請求項４１】
複数の記憶ユニットを有し、各記憶ユニットが一括的にプログラムする必要がある記憶空間の最小量を表すメモリ記憶空間と、
マルチサイクル状態変更動作と関連して、前記記憶ユニットの少なくとも１個のプログラミングに使用すべくデータを保持する書き込みデータレジスタであって、自身が保持するデータが前記マルチサイクル状態変更動作の最中に変更される書き込みデータレジスタと、
前記書き込みデータレジスタにロードされた前記データのコピーを保持するバッファであって、前記データが前記マルチサイクル状態変更動作の最中に変更されないバッファと、
前記マルチサイクル状態変更動作の最中に、前記記憶ユニットの少なくとも１個においてプログラミングを受けている前記データに対する前記バッファからの読み出し要求を実行する制御論理とを含むメモリデバイス。
【請求項４２】
前記データの真のコピーを保持する、前記バッファまたは前記メモリ記憶空間を含む記憶場所を識別する状態機械を更に含む、請求項４１に記載のデバイス。
【請求項４３】
複数のバッファを更に含み、前記制御論理が、前記書き込みデータレジスタへの書き込みデータのコピーのロード、および前記マルチサイクル状態変更動作の最中に前記データに宛てられた読み出し要求と関連して、前記データのコピーの実行の両方に用いるべく前記複数のバッファの各々をアドホックに割り当てる、請求項４２に記載のデバイス。
【国際調査報告】
2012511789.tif 000013
2012511789.tif 000014
2012511789.tif 000015
2012511789.tif 000016
2012511789.tif 000017