(57)【要約】いくつかの実施形態では、不揮発性メモリの１つのレジスタを、読み出し動作のために使用することができ、不揮発性メモリの別のレジスタを、プログラミング動作のために使用することができる。たとえば、ＮＡＮＤフラッシュメモリのキャッシュレジスタを、読み出し動作に関連して使用することができ、ＮＡＮＤフラッシュメモリのデータレジスタを、プログラミング動作に関連して使用することができる。いくつかの実施形態によると、ＮＡＮＤフラッシュメモリデバイスなどの複数の不揮発性メモリデバイスのデータレジスタは、分散揮発性キャッシュ（ＤＶＣ）アーキテクチャを、マネージドメモリデバイス内に実装することができる。特定の実施形態によると、データをレジスタ間で移動させて、及び／または交換して、他の動作を実行している間に、特定の動作を、不揮発性メモリデバイス内で、記憶されているデータを失うことなく、実行することができる。【選択図】図４
2016536732.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリデバイスを備える装置であって、前記不揮発性メモリデバイスが、
データを記憶するように構成された不揮発性メモリセルのアレイと、
第１のレジスタと、
第２のレジスタと、
を備え、
前記不揮発性メモリデバイスが、第１のデータを前記第１のレジスタにロードすることと、
前記第１のデータを、前記第１のレジスタから前記第２のレジスタに移動させることと、
第２のデータを、前記第２のレジスタが前記第１のデータを保持している間に、前記第１のレジスタと前記アレイとの間で転送することと、
前記第１のデータを、前記第１のレジスタに、前記第２のレジスタから移動させることと、
前記第１のデータを、前記第２のデータを前記第１のレジスタと前記アレイとの間で転送した後、前記アレイにプログラムすることと、
を行うように構成されている、前記装置。
【請求項２】
前記不揮発性メモリデバイスが、前記第２のデータを、前記アレイから前記第１のレジスタにロードすることを少なくとも部分的にすることによって、前記第２のデータを、前記第１のレジスタと前記アレイとの間で転送するように構成されている、請求項１に記載の装置。
【請求項３】
前記不揮発性メモリデバイスが、前記第２のデータを、前記第２のレジスタが前記第１のデータを保持している間に、出力部に提供するように構成されている、請求項２に記載の装置。
【請求項４】
前記不揮発性メモリデバイスが、前記第２のデータを前記第１のレジスタにロードすることと、その後に、前記第２のデータを、前記アレイへのプログラミングのために、前記アレイに提供することとを少なくとも部分的にすることによって、前記第２のデータを、前記第１のレジスタと前記アレイとの間で転送するように構成されている、請求項１に記載の装置。
【請求項５】
前記第１のデータが、完全な１ページより少ないデータであり、前記不揮発性メモリが、完全な１ページのデータを、前記第１のデータを含む前記アレイにプログラムするように構成されている、請求項１に記載の装置。
【請求項６】
前記不揮発性メモリが、データを、前記第１のレジスタに、一度に１セグメントずつ、徐々にロードすることを少なくとも部分的にすることによって、前記第１のデータを、前記第１のレジスタにロードするように構成され、１ページのデータが、複数のセグメントを備える、請求項１に記載の装置。
【請求項７】
前記装置が、組込みマルチメディアカードを備え、前記組込みマルチメディアカードが、前記不揮発性メモリデバイスを備える、請求項１に記載の装置。
【請求項８】
第１の不揮発性メモリデバイスと通信しているコントローラであって、前記第１の不揮発性メモリデバイスが、データを記憶するように構成された不揮発性メモリセルの第１のアレイと、揮発性メモリを備える第１のレジスタと、揮発性メモリを備える第２のレジスタとを備え、コマンドを生成して、前記第１の不揮発性メモリに、
不揮発性メモリセルの前記第１のアレイにプログラムされるデータを、前記第１のレジスタにロードすることと、
不揮発性メモリセルの前記第１のアレイから読み出したデータを、前記第２のレジスタにロードすることと、
前記第２のレジスタからのデータを、前記第１のレジスタが不揮発性メモリセルの前記第１のアレイにプログラムされる前記データを保持している間に、前記コントローラに提供することと、
を行わせるように構成された、コントローラ、
を備える、装置。
【請求項９】
前記第１の不揮発性メモリデバイスが、ＮＡＮＤフラッシュメモリデバイスを備える、請求項８に記載の装置。
【請求項１０】
前記第１のレジスタが、キャッシュレジスタまたはデータレジスタのうちの１つを備え、前記第２のレジスタが、前記キャッシュレジスタまたは前記データレジスタのうちの他方を備える、請求項９に記載の装置。
【請求項１１】
前記コントローラが、第２の不揮発性メモリデバイスと通信しており、前記第２の不揮発性メモリデバイスが、データを記憶するように構成された不揮発性メモリセルアレイの第２のアレイと、揮発性メモリを備える第３のレジスタと、揮発性メモリを備える第４のレジスタとを備え、前記コントローラが、コマンドを生成して、前記第２の不揮発性メモリに、
不揮発性メモリセルの前記第２のアレイにプログラムされるデータを、前記第３のレジスタにロードすることと、
不揮発性メモリセルの前記第２のアレイから読み出したデータを、前記第４のレジスタにロードすることと、
前記第４のレジスタからのデータを、前記第３のレジスタが不揮発性メモリセルの前記第２のアレイにプログラムされる前記データを保持している間に、前記コントローラに提供することと、
を行わせるように構成されている、請求項８に記載の装置。
【請求項１２】
前記コントローラが、第２の不揮発性メモリデバイスと通信しており、前記第２の不揮発性メモリデバイスが、データを記憶するように構成された不揮発性メモリセルの第２のアレイと、揮発性メモリを備える第３のレジスタと、揮発性メモリを備える第４のレジスタとを備え、前記コントローラが、コマンドを生成して、前記第２の不揮発性メモリに、
不揮発性メモリセルの前記第２のアレイにプログラムされるデータを、前記第３のレジスタにロードすることと、
前記第３のレジスタ内に記憶された、プログラムされる前記データを、プログラムされる前記データを不揮発性メモリセルの前記第２のアレイにプログラムする前に、前記コントローラに戻すことと、
を行わせるように構成されている、請求項８に記載の装置。
【請求項１３】
前記コントローラが、コマンドを生成して、前記第１の不揮発性メモリに、不揮発性メモリセルの前記第１のアレイにプログラムされる前記データを、前記第２のレジスタを使用することなく、前記第１のレジスタにロードすることを行わせるように構成されている、請求項８に記載の装置。
【請求項１４】
前記コントローラが、１つまたは複数のコマンドを生成して、前記第１の不揮発性メモリデバイスに、前記第１のレジスタ内に保持されている前記プログラムされるデータを、前記第２のレジスタに移動させることと、その後に、前記第１のアレイからのデータを、前記第１のレジスタにロードすることと、前記第２のレジスタ内の前記第１のアレイからの前記データを、前記コントローラに提供することと、前記プログラムされるデータを、前記第２のレジスタから前記第１のレジスタに移動させることと、を行わせるように構成されている、請求項８に記載の装置。
【請求項１５】
別々のレジスタを使用して、前記アレイから読み出されたデータと前記第１のアレイにプログラムされるデータとを保持するように、前記コントローラが、コマンドを、前記第１の不揮発性メモリに提供するように構成されている、請求項８に記載の装置。
【請求項１６】
前記コントローラが、データを前記第１のレジスタから取り出すことであって、前記取り出したデータを不揮発性メモリセルの前記第１のアレイにプログラムする前に、取り出すこと、を行うように構成されている、請求項８に記載の装置。
【請求項１７】
前記第１の不揮発性メモリデバイスをさらに備え、前記第１の不揮発性メモリデバイスが、前記コントローラから前記第１の不揮発性メモリデバイスに転送されたデータを、前記第１のレジスタに提供するように構成された第１の電気接続と、前記第１のアレイ内に記憶されたデータを、前記第２のレジスタに、前記第１のレジスタ内に記憶されたデータに干渉することなく提供するように構成された第２の電気接続と、を備える、請求項８に記載の装置。
【請求項１８】
不揮発性メモリデバイスにアクセスするための要求を変換する、電子的に実装された方法であって、
不揮発性メモリデバイスのコントローラによって実装された時に、
データを前記不揮発性メモリデバイスの不揮発性メモリセルのアレイにプログラムするための第１の要求を、データを、前記不揮発性メモリデバイスの第１のレジスタの揮発性メモリにロードさせ、その後に、不揮発性メモリセルの前記アレイにプログラムさせる、１つまたは複数のプログラミングコマンドに、変換することと、
データを前記不揮発性メモリデバイスから読み出すための第２の要求を、前記第１の要求に関連するデータを不揮発性メモリセルの前記アレイにプログラムする前に、受信することと、
データを前記不揮発性メモリデバイスから読み出すための前記第２の要求を、前記不揮発性メモリデバイスに、不揮発性メモリセルの前記アレイから読み出したデータにアクセスすることと、前記読み出したデータを、前記不揮発性メモリデバイスの第２のレジスタの揮発性メモリにロードすることとを行わせる、１つまたは複数の読み出しコマンドに変換して、前記第１のレジスタが、前記プログラミングデータを同時に保持することができ、前記第２の要求に関連するデータを、前記第１の要求に関連するデータを不揮発性メモリセルの前記アレイにプログラムする前に、前記不揮発性メモリデバイスから読み出すことができるようにすることと、
を備える、前記方法。
【請求項１９】
前記方法が、データを前記不揮発性メモリデバイスから読み出すための第３の要求を、前記アレイ内に記憶されておらず、前記第１のレジスタ内に保持されているデータを、前記不揮発性メモリデバイスから取り出す、１つまたは複数の、ロード中に読み出しコマンドに変換することをさらに備える、請求項１８に記載の方法。
【請求項２０】
前記方法が、データを前記不揮発性メモリの前記アレイにプログラムするための別の要求を、プログラミングデータの１セグメントを、前記不揮発性メモリデバイスの前記第１のレジスタの揮発性メモリにロードさせる、１つまたは複数の他のプログラミングコマンドに変換して、プログラミングデータの前記１セグメントを、前記第１の要求に関連する前記プログラミングデータを有する前記アレイに、シングルページプログラム動作で、プログラムできるようにすることをさらに備える、請求項１８に記載の方法。
【請求項２１】
前記不揮発性メモリデバイスが、ＮＡＮＤフラッシュメモリを備え、前記第１のレジスタが、キャッシュレジスタまたはデータレジスタのうちの１つを備え、前記第２のレジスタが、前記キャッシュレジスタまたは前記データレジスタのうちの他方を備える、請求項１８に記載の方法。
【請求項２２】
不揮発性メモリデバイスを備える装置であって、前記不揮発性メモリデバイスが、
データを記憶するように構成された不揮発性メモリセルのアレイと、
揮発性メモリを備える第１のレジスタであって、
セグメントになったプログラミングデータを受信することと、
前記受信したプログラミングデータのセグメントを保持することと、
複数の前記受信したプログラミングデータのセグメントを備える１ページのプログラミングデータを、前記第１のレジスタ内に保持した後、プログラミングデータの前記ページを、不揮発性メモリセルの前記アレイに提供することと、
を行うように構成された、第１のレジスタと、
前記第１のレジスタとは別の第２のレジスタであって、揮発性メモリを備え、
読み出されるデータを、前記第１のレジスタがプログラミングデータの１つまたは複数のセグメントを保持している時に、前記アレイから読み出すことと、
前記読み出されたデータを、前記第１のレジスタがプログラミングデータの１つまたは複数のセグメントを保持している間に、前記不揮発性メモリデバイスの出力として提供することと、
を行うように構成された、第２のレジスタと、
を備える、前記装置。
【請求項２３】
前記不揮発性メモリデバイスが、ＮＡＮＤフラッシュメモリデバイスを備える、請求項２２に記載の装置。
【請求項２４】
前記第１のレジスタと前記第２のレジスタとのうちの１つが、データレジスタであり、前記第１のレジスタと前記第２のレジスタとのうちの他方が、キャッシュレジスタである、請求項２３に記載の装置。
【請求項２５】
前記第１のレジスタが、前記読み出したデータを前記第１のレジスタ内に保持しており、前記アレイ内に記憶していない時に、前記読み出したデータを、前記不揮発性メモリの前記出力として提供するように構成されている、請求項２２に記載の装置。
【請求項２６】
前記第１のレジスタが、前記第２のレジスタが前記アレイから読み出したデータを保持している間に、前記アレイにプログラミングするためのデータを保持するように構成されている、請求項２２に記載の装置。
【請求項２７】
前記アレイが、シングルレベルセルとマルチレベルセルとを備え、前記シングルレベルセルが、一桁の情報を記憶するように構成され、前記マルチレベルセルが、一桁より多い情報を記憶するように構成されている、請求項２２に記載の装置。
【請求項２８】
前記不揮発性メモリデバイスが、前記不揮発性メモリデバイスの入力部と前記第１のデータレジスタとの間の第１の電気接続と、前記アレイと前記第２のレジスタとの間の第２の電気接続とを備え、前記第２の電気接続が、前記アレイからのデータを、前記第２のレジスタに、前記第１のレジスタ内のデータを干渉することなく、ロードすることを可能にする、請求項２２に記載の装置。
【請求項２９】
前記装置が、マネージドメモリデバイスを備え、前記マネージドメモリデバイスが、前記不揮発性メモリデバイスと、前記不揮発性メモリデバイスにアクセスするための要求を前記不揮発性メモリデバイスに対するコマンドに変換するように構成されたコントローラと、を備える、請求項２２に記載の装置。
【請求項３０】
不揮発性メモリデバイスを動作させる方法であって、
第１のデータを第１のレジスタにロードすることであって、前記第１のデータが完全な１ページよりも少ないデータを備える、ロードすることと、
前記第１のデータを第３のレジスタに移動させることと、
前記第３のレジスタが前記第１のデータを保持している間に、第２のデータを、前記第１のレジスタと不揮発性メモリのアレイとの間で、第２のレジスタを介して転送することと、
前記第１のデータを、前記第２のデータを転送した後に、前記第１のレジスタに戻すことと、
その後に、前記第１のデータを前記アレイにプログラミングすることと、
を備える、前記方法。
【請求項３１】
その後にプログラミングすることが、前記第１のデータを含む完全な１ページのデータを前記第１のレジスタにロードした後に、実行される、請求項３０に記載の方法。
【請求項３２】
第１のデータをロードすることが、データのセグメントを、前記第１のレジスタに、一度に１セグメントずつ、徐々にロードすることを備え、不揮発性メモリの前記アレイ内の１ページのデータが、複数の前記セグメントを備える、請求項３０に記載の方法。
【請求項３３】
転送することが、前記第２のデータを、前記アレイから前記第２のレジスタにロードすることと、その後に、前記第２のデータを、前記第２のレジスタから前記第１のレジスタに移動させることとを備え、前記第２のデータが、前記不揮発性メモリアレイからの完全な１ページのデータを備え、前記第２のデータを、前記不揮発性メモリデバイスの出力部から出力することをさらに備える、請求項３０に記載の方法。
【請求項３４】
転送することが、前記第２のデータを、前記第１のレジスタから前記第２のレジスタに移動させることと、その後に、前記第２のデータを、前記第２のレジスタから不揮発性メモリの前記アレイに提供することとを備え、前記第２のデータが、完全な１ページのデータを備え、前記第２のデータを、不揮発性メモリの前記アレイにプログラムすることをさらに備える、請求項３０に記載の方法。
【請求項３５】
第３のデータを、前記第３のレジスタが前記第１のデータを保持している間に、前記第１のレジスタと不揮発性メモリの前記アレイとの間で、前記第２のレジスタを介して転送することをさらに備える、請求項３０に記載の方法。
【請求項３６】
前記不揮発性メモリデバイスが、複数プレーンの不揮発性メモリを有するダイを備え、前記第１のデータを前記第３のレジスタに移動させること、及び前記第１のデータを前記第１のレジスタに戻すことが、一度に前記複数プレーンのうちの１つの選択されたプレーン上のみで、実行される、請求項３０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、電子機器に関し、特に、不揮発性メモリデバイス及び／または関連コントローラに関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリデバイスなどの不揮発性メモリデバイスを、マネージドメモリデバイス内に一体化することができる。マネージドメモリデバイスの組込みコントローラ及びその関連ファームウェアは、ホストプラットフォームからの読み出し要求及び／またはプログラミング要求を、確立されているプロトコルに基づいて、不揮発性メモリデバイスに対する一連のコマンドに変換することができる。たとえば、組込みコントローラは、ホストからの要求を、Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）プロトコルに従って、ＮＡＮＤフラッシュメモリデバイスに対するコマンドに変換することができる。マネージドメモリデバイスのコントローラの、スタティックランダムアクセスメモリ（ＳＲＡＭ）などの揮発性メモリは、ますます多くのエリアを消耗し、そのようなコントローラをより高価なものにしている。
【０００３】
組込みマルチメディアカード（ｅＭＭＣ）デバイスは、マネージドメモリデバイスの実施例である。ｅＭＭＣデバイスのファームウェアは、ブロック書き込み要求を、ＮＡＮＤフラッシュメモリデバイスに対する、一連の読み出しコマンド及び／またはプログラミングコマンドに変換することができる。いくつかの場合では、ユーザデータの実際のプログラミングは、ＮＡＮＤページプログラミングコマンドという手段で起こり得る。ＮＡＮＤフラッシュメモリデバイスの、プロトコルと、データレジスタやキャッシュレジスタなどのレジスタのアーキテクチャと、の現在の定義は、マネージドメモリデバイスの性能を制限することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、マネージドメモリデバイスの性能を向上させることに対する必要性が存在する。マネージドメモリデバイスのコントローラの揮発性メモリの量を削減することに対する必要性も、存在する。
【課題を解決するための手段】
【０００５】
本明細書のこれらの図面及び関連説明は、本発明の具体的な実施形態を例示するために提供され、それらは、限定することを意図しない。
【図面の簡単な説明】
【０００６】
【図１】例示的なＮＡＮＤフラッシュメモリデバイスのブロック図である。
【図２】データをＮＡＮＤフラッシュメモリアレイにプログラミングする従来方法を示した、マネージドメモリデバイスの図である。
【図３】一実施形態による、ＮＡＮＤフラッシュメモリデバイスのプログラミング動作を示した、マネージドメモリデバイスの図である。
【図４】一実施形態による、読み出しコマンドとプログラミングコマンドとのために、ＮＡＮＤフラッシュデバイスの別々のレジスタを使用することを示した、マネージドメモリデバイスの図である。
【図５】一実施形態による、レジスタ内に記憶されており、ＮＡＮＤフラッシュメモリアレイにはまだプログラムされていない、データを読み出すことを示した、マネージドメモリデバイスの図である。
【図６】一実施形態による、ＮＡＮＤフラッシュメモリデバイスのページプログラミング動作を示した、マネージドメモリデバイスの図である。
【図７】一実施形態による、キャッシュレジスタからのデータをデータレジスタに転送する、ＮＡＮＤフラッシュメモリアレイからのインターリーブ読み出しを示した、マネージドメモリデバイスの図である。
【図８】一実施形態による、分散揮発性キャッシュを実装する複数のＮＡＮＤフラッシュメモリデバイスを含む、マネージドメモリデバイスの図である。
【図９】別の実施形態による、例示的なＮＡＮＤフラッシュメモリデバイスの図である。
【図１０Ａ】データを、マルチプレーン型ＮＡＮＤフラッシュメモリデバイスのレジスタ間で交換する実施形態を示した図である。
【図１０Ｂ】データを、マルチプレーン型ＮＡＮＤフラッシュメモリデバイスのレジスタ間で交換する実施形態を示した図である。
【図１１Ａ】一実施形態による、第２のデータを読み出すインターリーブキャッシュ読み出し動作を用いて、第１のデータをレジスタに一時的にロードするプロセスを示した図である。
【図１１Ｂ】一実施形態による、第２のデータを読み出すインターリーブキャッシュ読み出し動作を用いて、第１のデータをレジスタに一時的にロードするプロセスを示した図である。
【図１１Ｃ】一実施形態による、第２のデータを読み出すインターリーブキャッシュ読み出し動作を用いて、第１のデータをレジスタに一時的にロードするプロセスを示した図である。
【図１２Ａ】一実施形態による、第２のデータをアレイにプログラムするインターリーブキャッシュプログラミング動作を用いて、第１のデータをレジスタに一時的にロードするプロセスを示した図である。
【図１２Ｂ】一実施形態による、第２のデータをアレイにプログラムするインターリーブキャッシュプログラミング動作を用いて、第１のデータをレジスタに一時的にロードするプロセスを示した図である。
【図１２Ｃ】一実施形態による、第２のデータをアレイにプログラムするインターリーブキャッシュプログラミング動作を用いて、第１のデータをレジスタに一時的にロードするプロセスを示した図である。
【発明を実施するための形態】
【０００７】
説明の重複を避けるために、同一または類似の機能を有する構成要素は、同一の参照番号によって参照され得る。
【０００８】
特定の実施形態を本明細書で説明するが、本明細書に記載する利点と特徴とのすべてを提供しない実施形態を含む他の実施形態は、当業者にとって明白である。
【０００９】
上記で説明した通り、ＮＡＮＤフラッシュメモリデバイスの、プロトコル及び／またはデータレジスタやキャッシュレジスタなどのレジスタのアーキテクチャの現在の定義は、マネージドメモリデバイスの性能を制限することがある。たとえば、データレジスタとキャッシュレジスタとを、ＮＡＮＤフラッシュメモリの読み出しコマンドと書き込みコマンドとの両方で使用すると規定することは、マネージドメモリデバイスの性能を制限することがある。性能は、ランダム書き込み動作とも呼ばれ得る、ランダムプログラミング動作によって制限され得る。
【００１０】
マネージドメモリデバイスにおけるランダムプログラミング性能に対処する一方法は、ソリッドステートディスク（ＳＳＤ）またはｅＭＭＣデバイス内に、揮発性キャッシュを実装することである。揮発性キャッシュを用いると、比較的高速なプログラミング動作を実行することができる。そのような性能は、ＮＡＮＤフラッシュメモリ及び／または他の不揮発性メモリの、毎秒入力／出力動作（ＩＯＰＳ）を向上させることができる。同時に、揮発性キャッシュは、コントローラの大きさを著しく増加させ得る。コントローラの大きさの増加は、より高い費用に繋がることがある。
【００１１】
一般的に説明すると、本開示の態様は、不揮発性メモリデバイスの比較的良いランダムプログラミング性能を達成する一方で、比較的制限された量の揮発性メモリを、不揮発性メモリに関連するコントローラ上で使用すること、に関する。ＮＡＮＤフラッシュメモリデバイスのレジスタアーキテクチャを、以下に説明する。別々のレジスタを、読み出し動作とプログラミング動作とに使用することができる。したがって、特定の実施形態によると、ＮＡＮＤフラッシュメモリデバイスの１つのレジスタを、プログラミング動作のために使用することができ、ＮＡＮＤフラッシュメモリデバイスの別のレジスタを、読み出し動作のために、同時に使用することができる。たとえば、キャッシュレジスタを、読み出し動作のために使用することができ、データレジスタを、プログラミング動作のために使用することができる。本明細書で説明するいくつかのレジスタアーキテクチャは、レジスタ間でのデータの交換を可能にすることができる。したがって、メモリアレイにプログラムされる第１のデータを、レジスタにロードすることができ、レジスタにロードした第１のデータを保ちながら、インターリーブ読み出し動作及び／またはインターリーブプログラミング動作を実行することができる。たとえば、メモリアレイにプログラムされる第１のデータを、キャッシュレジスタとデータレジスタとの間で交換して、第１のデータを保ちながら、１つまたは複数の他の読み出し動作及び／またはプログラミング動作を実行することを可能にすることができる。別の実施例として、１つまたは複数の読み出し動作及び／またはプログラミング動作を実行する間に、メモリアレイにプログラムされる第１のデータを、キャッシュレジスタから、データレジスタ及びキャッシュレジスタとは別の仮想キャッシュレジスタに移動させることができる。その後、メモリアレイにプログラムされる第１のデータを、キャッシュレジスタに、仮想キャッシュレジスタから戻すことができる。特定の実施形態では、ＮＡＮＤフラッシュメモリデバイスのレジスタは、分散仮想キャッシュを、マネージドメモリデバイス内に実装することができる。これは、ランダムプログラミング動作の性能を、ランダム読み出し動作の性能にほとんどまたはまったく影響を与えずに、強化することができる。いくつかの実施形態では、１つまたは複数のデータレジスタは、分散仮想キャッシュを実装することができる。いくつかの実施例を、例示の目的のためのＮＡＮＤフラッシュメモリデバイスを参照して、本明細書で説明したが、本明細書で説明する原理と利点とを、任意の適切な不揮発性メモリデバイスに関連して実装することができる、ということが理解される。たとえば、本明細書で説明する原理と利点とを、相変化メモリ（ＰＣＭ）に関連して実装することができる。
【００１２】
図１は、例示的なＮＡＮＤフラッシュメモリデバイス１００のブロック図である。例示の通り、ＮＡＮＤフラッシュメモリデバイス１００は、キャッシュレジスタ１１０と、データレジスタ１２０と、不揮発性メモリのアレイ１３０とを含む。特定の実施形態によると、本明細書で説明するレジスタのうちの任意のものを、ページバッファまたはラッチと呼ぶことができる。データレジスタ１２０を、ページレジスタと呼ぶこともできる。キャッシュレジスタ１１０及びデータレジスタ１２０は、それぞれ、揮発性メモリを備える。書き込み動作中、ホストからのデータは、キャッシュレジスタ１１０にロードされる。キャッシュレジスタ１１０とデータレジスタ１２０とを使用して、データをアレイ１３０のページにプログラムする前に、及び／またはデータをアレイ１３０から読み出した後に、データを保持することができる。通常、プログラムされるデータは、キャッシュレジスタ１１０内に、連続的に、クロック入力される。プログラムされるデータを、その後、キャッシュレジスタ１１０からデータレジスタ１２０に、通常並列的に、移動させる。これにより、キャッシュレジスタ１１０を、他のページのプログラミングまたは読み出しのためのデータを受信するために、解放する。読み出されるデータを、アレイ１３０から取り出し、データレジスタ１２０にロードする。データを、その後、データレジスタ１２０からキャッシュレジスタ１１０に移動させ、キャッシュレジスタ１１０から、データを、ホストに、クロック出力する。キャッシュレジスタ１１０及び／またはデータレジスタ１２０は、少なくとも１ページのデータを保持することができる。アレイ１３０は、シングルレベルセル１３２とマルチレベルセル１３４とを含むことができる。シングルレベルセル１３２は、１ビットの情報などの、一桁の情報を記憶するように構成されている。マルチレベルセル１３４は、複数ビットの情報などの、一桁よりも多い情報を記憶するように構成されている。
【００１３】
図２は、データをＮＡＮＤフラッシュメモリアレイにプログラミングする従来方法を示した、マネージドメモリデバイス２００の図である。マネージドメモリデバイス２００は、コントローラ２１０と、チャネルＣＨ０とチャネルＣＨ１とを介してコントローラ２１０と通信している、複数のＮＡＮＤフラッシュメモリデバイス１００と、を含むことができる。例示した通り、複数のＮＡＮＤフラッシュメモリデバイス１００は、第１のＮＡＮＤフラッシュメモリデバイス１００ａと、第２のＮＡＮＤフラッシュメモリデバイス１００ｂとを含む。マネージドメモリデバイス２００は、たとえば、ｅＭＭＣデバイスまたはＳＳＤであってよい。第１のＮＡＮＤフラッシュメモリデバイス１００ａと第２のＮＡＮＤフラッシュメモリデバイス１００ｂとを、２つのチャネルＣＨ０とＣＨ１とをそれぞれ通してコントローラ２１０に接続された、異なるダイによって実装することができる。第１のＮＡＮＤフラッシュメモリデバイス１００ａ及び第２のＮＡＮＤフラッシュメモリデバイス１００ｂは、外部接続以外は、互いに実質的に同じであってよい。
【００１４】
コントローラ２１０は、組込みコントローラであってよい。コントローラ２１０は、データを、ホストから、ホストハブＨＢを介して受信することができる。コントローラ２１０は、第１のＮＡＮＤフラッシュメモリデバイス１００ａ及び／または第２のＮＡＮＤフラッシュメモリデバイス１００ｂにアクセスするための要求を、ホストハブＨＢを介して受信することができる。コントローラ２１０は、また、ユーザデータのセグメントを、ホストハブＨＢを介して受信することができる。ソリッドステートドライブ及びフラッシュドライブなどのマスストレージデバイスは、データを、「ブロック」と呼ばれるデータの単位で転送することができる。コントローラ２１０によって受信されるユーザデータのセグメントは、フラッシュメモリにおける、メモリの最小消去可能単位を表すブロックとは異なる。ユーザデータを、セグメントで、ホストからコントローラ２１０に送信することができる。フラッシュメモリアレイ１３０ａ及び／またはフラッシュメモリアレイ１３０ｂのページは、複数のセグメントを備える。１つの非限定的な実施例として、１セグメントのユーザデータは、図２に示す通り、４キロバイト（ＫＢ）のデータであってよい。他の大きさのセグメントも適用可能である。図２に示す実施例では、コントローラ２１０は、第１のＮＡＮＤフラッシュメモリデバイス１００ａにアクセスするための要求ＣＭＤ２５と、その後に、１セグメントのユーザデータＤＡＴＡ  ４ＫＢと、その後に、ビジー要求ＢＵＳＹと、を受信することができる。
【００１５】
コントローラ２１０は、要求を、第１のＮＡＮＤフラッシュメモリデバイス１００ａに対するコマンドに変換することができる。ホストから受信した要求に基づいて、コントローラ２１０によって生成される、１つのＮＡＮＤフラッシュメモリデバイス上のページプログラム動作におけるブロック書き込み動作のための例示的なコマンドを、図２に示す。これらのコマンドを、第１のＮＡＮＤフラッシュメモリデバイス１００ａに、コントローラ２１０と第１のＮＡＮＤフラッシュメモリデバイス１００ａとの間のチャネルＣＨ０を介して、提供することができる。
【００１６】
第１のＮＡＮＤフラッシュメモリデバイス１００ａによって受信されたコマンドは、ユーザデータのセグメントをキャッシュレジスタ１１０ａにロードすることを引き起こし、その後、ユーザデータのセグメントを不揮発性メモリのアレイ１３０ａにプログラムすることを引き起こす。したがって、第１のＮＡＮＤフラッシュメモリデバイス１００ａは、一度に、１セグメントのデータを、アレイ１３０ａにプログラムする。それぞれがデータの１つまたは複数のセグメントに関連する、複数のプログラミング動作は、１ページのユーザデータを、アレイ１３０ａにプログラムすることができる。
【００１７】
現在のＯＮＦＩ規格に従って動作しているＮＡＮＤフラッシュメモリデバイス１００では、キャッシュレジスタ１１０及び／またはデータレジスタ１２０を、ページ読み出し動作とページキャッシュ読み出し動作とページプログラム動作とページキャッシュプログラミング動作とに関連するコマンド中に、使用する。たとえば、ページプログラム動作（８０ｈ〜１０ｈ）は、ホストが、データをキャッシュレジスタ１１０にロードし、その後、キャッシュレジスタ１１０の内容を、フラッシュメモリのアレイ１３０内の指定のブロックとページアドレスとにプログラムすることを可能にする。別の実施例として、ページキャッシュプログラム動作（８０ｈ〜１５ｈ）は、ホストが、データをキャッシュレジスタ１１０にロードし、受信データを、キャッシュレジスタ１１０からデータレジスタ１２０に移動させ、その後、キャッシュレジスタ１１０が、１つまたは複数の追加のページキャッシュプログラム動作（８０ｈ〜１５ｈ）及び／またはページプログラム動作（８０ｈ〜１０ｈ）のために利用可能である間に、データレジスタ１２０の内容を、ＮＡＮＤフラッシュメモリのアレイ１３０内の指定のブロックとページアドレスとにプログラムすることを可能にする。したがって、ページキャッシュプログラム動作（及びページキャッシュ読み出し動作）などのいくつかの動作では、キャッシュレジスタ１１０とデータレジスタ１２０との両方を使用し、ページプログラム（及びページ読み出し）動作などのいくつかの他の動作では、これらのレジスタのうちの１つのレジスタのみを使用する。
【００１８】
ホストからのランダムブロックプログラムの場合では、マネージドメモリの性能は、ＮＡＮＤページプログラムタイムによって動かされ得る。しかしながら、ＮＡＮＤメモリアレイのページサイズは、通常、ホストによってコントローラ２１０にホストハブＨＢを介して提供される、ユーザデータのセグメントのサイズよりも大きい。ＮＡＮＤページサイズは、徐々に増加してきている。ランダムプログラム性能を向上させるために、組込みＳＲＡＭを、いくつかの組込みコントローラ内に含み、プログラミング動作のためのバッファとして使用することができる。このＳＲＡＭを使用して、データの１つまたは複数のセグメントに関連する多くのプログラム要求を集めた、ページまたはページストライプを作成することができる。ページストライプは、１プレーンの不揮発性メモリがある時、１ページのデータに対応することができる。複数プレーンの不揮発性メモリがある時、ページストライプは、複数プレーンの各々の中の、完全な１ページに対応することができる。たとえば、図８の各ＮＡＮＤフラッシュメモリデバイス３２０ａ〜３２０ｄ内のページストライプは、２つのページを含む。本明細書でページを参照して説明する原理と利点とのうちの任意のものを、ページストライプが複数ページに対応する時には、ページストライプに適用することができる。したがって、アレイにプログラムされるデータの完全な１ページまたはページストライプの準備が整っている時は、それを、ＳＲＡＭからＮＡＮＤフラッシュメモリのレジスタに転送することができる。
【００１９】
マネージドメモリデバイスのランダムプログラム性能を、本明細書で開示する、レジスタアーキテクチャ、及び／またはホスト要求の不揮発性メモリに対するコマンドへの変換によって、向上させることができる。図３から図８のマネージドメモリデバイス３００は、ホスト要求を、不揮発性メモリに対する新しいコマンドに変換することができる、コントローラ３１０を含む。コントローラ３１０は、また、ホスト要求を、図９から図１２Ｃのメモリのうちの任意のものに対する新しいコマンドに変換することができる。コントローラ３１０は、例示する通り、組込みコントローラであってよい。コントローラ３１０は、ホストコマンドを、ハードウェア、ファームウェア、またはそれらの組み合わせを使用して変換することができる。これらのマネージドメモリデバイス３００は、新しいコマンドに関連する新しい機能を実行することができる、ＮＡＮＤフラッシュメモリデバイス３２０ａとＮＡＮＤフラッシュメモリデバイス３２０ｂとを含むことができる。新しいコマンドを実行するために、ＮＡＮＤフラッシュメモリデバイス３２０ａ及びＮＡＮＤフラッシュメモリデバイス３２０ｂは、従来のコマンドを実行するように構成されたＮＡＮＤフラッシュメモリデバイス１００ａとＮＡＮＤフラッシュメモリデバイス１００ｂとに比較して、異なる物理的ハードウェアを含むことができる。たとえば、ＮＡＮＤフラッシュメモリデバイス３２０ａ及びＮＡＮＤフラッシュメモリデバイス３２０ｂは、新しいコマンドをコントローラ３１０から受信した時に、新しいコマンドを復号するように構成されたデコーダを含むことができる。別の実施例として、ＮＡＮＤフラッシュメモリデバイス３２０ａ及びＮＡＮＤフラッシュメモリデバイス３２０ｂは、従来のコマンドを実行するように構成されたＮＡＮＤフラッシュメモリデバイス１００ａとＮＡＮＤフラッシュメモリデバイス１００ｂとに比較して、キャッシュレジスタ１１０及び／またはデータレジスタ１２０への異なる接続を含むことができる。新しいコマンドをサポートする回路を、また、ＮＡＮＤフラッシュメモリデバイス３２０ａとＮＡＮＤフラッシュメモリデバイス３２０ｂとの中に含むこともできる。ＮＡＮＤフラッシュメモリデバイス３２０ａとＮＡＮＤフラッシュメモリデバイス３２０ｂとの、キャッシュレジスタ１１０、データレジスタ１２０、及び／またはアレイ１３０の内部機能は、ＮＡＮＤフラッシュメモリデバイス１００ａとＮＡＮＤフラッシュメモリデバイス１００ｂとに、それぞれ、実質的に同じであってよい。
【００２０】
いくつかの他の実施形態では、不揮発性メモリのレジスタを、読み出し動作のために使用することができ、不揮発性メモリの異なるレジスタを、書き込み動作のために使用することができる。たとえば、ＮＡＮＤフラッシュメモリのキャッシュレジスタを、読み出し動作に関連して使用することができ、ＮＡＮＤフラッシュメモリのデータレジスタを、プログラミング動作に関連して使用することができる。いくつかの実施形態によると、複数のＮＡＮＤフラッシュメモリデバイスのデータレジスタは、全体で、分散揮発性キャッシュ（ＤＶＣ）アーキテクチャを、マネージドメモリデバイス内に実装することができる。ＤＶＣは、データを、ＮＡＮＤフラッシュメモリデバイスの入力部から、ＮＡＮＤフラッシュメモリデバイスのレジスタ内に記憶された、ＮＡＮＤフラッシュメモリセルのアレイから読み出されたデータに干渉することなく、受信することができる。ＤＶＣは、ユーザデータのセグメントを、それらが、ＮＡＮＤフラッシュメモリセルにプログラムされる１ページのデータに集約されている時に、ＮＡＮＤフラッシュメモリデバイス上に記憶することができる。たとえば、ユーザデータがデータの異なるページに関連付する時は、ユーザデータのセグメントを、複数の異なる不揮発性メモリデバイスの揮発性メモリによって、記憶することができる。ユーザデータが不揮発性メモリセルのアレイ内に記憶されていない時でさえも、ユーザデータのセグメントに、不揮発性メモリの外部のコントローラによって、アクセスすることができる。ＤＶＣは、コントローラ内のＲＡＭまたは他の揮発性メモリの必要性を減少させることができる。
【００２１】
図３は、一実施形態による、ＮＡＮＤフラッシュメモリデバイス３２０ａのページプログラミング動作を示した、マネージドメモリデバイス３００の図である。マネージドメモリデバイス３００では、ホストから受信した、１セグメントのデータに関連する、多くのプログラミングコマンドＣＭＤ２５を、コントローラ３１０によって、たとえば、図３に示すＮＡＮＤフラッシュメモリ１００ａ上のシングルページプログラム動作と他の関連管理動作とに、変換することができる。コントローラ３１０によって、シングルページプログラム動作に集約されるプログラミングコマンドＣＭＤ２５の数は、ＮＡＮＤフラッシュメモリのページサイズ及び／またはプレーン数、及びチャネル数などの、ＮＡＮＤフラッシュメモリの物理特性に基づくことができる。例示の実施例では、１２ＫＢのページサイズでは、それぞれが、１セグメント４ＫＢのデータに関連する３つのプログラムコマンドＣＭＤ２５を、コントローラ３１０によって、１つのページプログラム動作に集約することができる。特定の実施形態では、組込みコントローラ３１０のファームウェアが、このような集約を実行することができる。いくつかの他の実施形態では、組込みコントローラ３１０のハードウェアが、このような集約を実行することができる。
【００２２】
コントローラ３１０は、ホストからのプログラミングコマンドＣＭＤ２５をＮＡＮＤフラッシュメモリデバイス３２０ａにおけるシングルページプログラム動作に集約することに関連する、新しい、データレジスタを通したページプログラムＮＥＷ  Ｃｍｄコマンドを、ＮＡＮＤフラッシュメモリデバイス３２０ａに提供することができる。データレジスタを通したページプログラムコマンドＮＥＷ  Ｃｍｄは、コントローラ３１０が、データをデータレジスタ１２０ａにロードし、キャッシュレジスタ１１０ａ内に保持されているデータに干渉することなく、データレジスタ１２０ａからのデータを、ＮＡＮＤフラッシュメモリデバイス３２０ａのアレイ１３０ａ内の指定アドレスにプログラムすることを可能にする。ＮＡＮＤフラッシュメモリデバイス３２０ａは、ＮＡＮＤフラッシュメモリデバイス１００（図２）と異なり、ユーザデータをキャッシュレジスタ１１０ａにロードすることなく、ユーザデータをデータレジスタ１２０ａに提供するように構成された回路を有することができる。図３に示す通り、データレジスタを通したページプログラムコマンドＮＥＷ  Ｃｍｄ及び他の関連コマンドとは、ＮＡＮＤフラッシュメモリデバイス３２０ａに、コントローラ３１０からチャネルＣＨ０を介して受信したユーザデータを、データレジスタ１２０ａに、セグメントずつ、徐々にロードさせることができる。その後、完全な１ページのユーザデータをデータレジスタ１２０ａにロードすると、そのページのユーザデータをアレイ１３０ａに、シングルページプログラム動作を介してプログラムすることができる。
【００２３】
図４は、一実施形態による、読み出しコマンドのためと、プログラミングコマンドのためとに、ＮＡＮＤフラッシュデバイスの別々のレジスタを使用することを示した、マネージドメモリデバイス３００の図である。読み出しコマンドのためと、プログラミングコマンドのためとに、別々のレジスタを使用することは、レジスタ使用における競合を回避することができる。たとえば、ホストから受信した読み出しコマンドを、図４に例示したデータレジスタ１２０ａなどの、ＮＡＮＤフラッシュメモリデバイス３２０ａのレジスタ内で１ページのユーザデータに集約されているユーザデータのセグメントを破壊することなく、使用することができる。別々のレジスタを使用することは、また、アレイ１３０にプログラムされるデータを、第２のレジスタを使用することなく、その後、アレイ１３０から読み出されたものをロードすることなく、第１のレジスタにロードすることを可能にする。その後、第２のレジスタからのデータを、第１のレジスタがアレイ１３０にプログラムされるデータを保持している間に、コントローラ１３０に提供することができる。ホスト側の１つまたは複数のセグメントに関連する読み出し動作を、コントローラ３１０によって、ＮＡＮＤフラッシュメモリデバイス３２０ａに対するページ読み出し動作に変換することができる。ページ読み出し動作は、ＮＡＮＤフラッシュメモリデバイス３２０ａのキャッシュレジスタ１１０ａを使用することができる。
【００２４】
ＮＡＮＤフラッシュメモリデバイス３２０ａでは、キャッシュレジスタ１１０ａを、アレイ１３０に関連する読み出し回路に接続することができ、データレジスタ１２０ａを、アレイ１３０に関連する書き込み回路に接続することができる。したがって、アレイ１３０ａにプログラムされるデータ及びアレイ１３０ａから読み出されるデータは、異なるレジスタに接続された別々の信号線上を伝播することができる。ＮＡＮＤフラッシュメモリデバイス３２０ａでは、キャッシュレジスタ１１０ａを、アレイ１３０に関連する読み出し回路に接続することができ、データレジスタ１２０ａを、アレイ１３０に関連する書き込み回路に接続することができる。
【００２５】
たとえば、第１のアレイ信号線は、アレイ１３０ａとデータレジスタ１２０ａとを電気的に接続することができ、第２のアレイ信号線は、アレイ１３０ａとキャッシュレジスタ１１０ａとを電気的に接続することができる。データレジスタ１２０ａは、ＮＡＮＤフラッシュメモリデバイス３２０ａの入力部においてコントローラ３１０から受信したユーザデータを、ユーザデータをキャッシュレジスタ１１０ａに提供することなく、受信することができる。ＮＡＮＤフラッシュメモリデバイス３２０ａは、入力接点／出力接点と、キャッシュレジスタ１１０ａ及びデータレジスタ１２０ａとの間に、異なる電気接続を含むことができる。
【００２６】
図４のマネージドメモリデバイス３００は、ＮＡＮＤフラッシュメモリデバイス３２０ａにおける、ロード中読み出し機構をサポートすることができる。コントローラ３１０は、ＮＡＮＤフラッシュメモリデバイス３２０ａを読み出すための要求とＮＡＮＤフラッシュメモリデバイス３２０ａをプログラムするための要求とを、データレジスタを通したページプログラムコマンドＮＥＷ  Ｃｍｄと、キャッシュレジスタを通したページ読み出しコマンドＮＥＷ  Ｃｍｄ＃２とに変換することができる。データレジスタを通したページプログラムコマンドＮＥＷ  Ｃｍｄとキャッシュレジスタを通したページ読み出しコマンドＮＥＷ  Ｃｍｄ＃２とを、ＮＡＮＤフラッシュメモリデバイス３２０ａに、チャネルＣＨ０を介して提供することができる。キャッシュレジスタを通したページ読み出しコマンドＮＥＷ  Ｃｍｄ＃２は、１セグメントのデータをアレイ１３０ａから取り出し、そのセグメントのデータを、キャッシュレジスタ１１０ａに記憶することができる。これは、ＮＡＮＤフラッシュメモリデバイス３２０ａが、データをアレイ１３０ａから、データレジスタ１２０ａに記憶されているデータを干渉することなく、取り出すことを可能にすることができる。したがって、１ページのデータがデータレジスタ１２０ａに集約されている間、データレジスタ１２０ａ内で作成中のページまたはページストライプを破壊することなく、データを、アレイ１３０ａから読み出し、コントローラ３１０に提供することができる。（例示しない）別の実施形態では、キャッシュレジスタを通したページ読み出しコマンドＮＥＷ  Ｃｍｄ＃２は、データの２つ以上のセグメント（たとえば、１ページのデータ）を、アレイ１３０ａから取り出し、データの２つ以上のセグメントを、キャッシュレジスタ１１０ａにロードすることができる。
【００２７】
読み出し動作とプログラミング動作とのために別々のレジスタを使用することは、別々のレジスタの両方を、読み出し動作に関連するコマンドと、プログラミング動作に関連するコマンドとのために、同時に使用することを可能にすることができる。たとえば、図４に示す通り、プログラミングコマンドは、コントローラ３１０が、データを、データレジスタ１２０ａに、チャネルＣＨ０を介してロードし、データレジスタ１２０ａからのデータを、ＮＡＮＤフラッシュメモリデバイス３２０ａのアレイ１３０ａ内の指定アドレスにプログラムすることを可能にすることができる。また、図４に示す通り、読み出しコマンドは、データレジスタ１２０ａがアレイ１３０ａにプログラミングするためのデータを保持している間に、データを、ＮＡＮＤフラッシュメモリデバイス３２０ａのアレイ１３０ａのページから取り出し、取り出したデータを、キャッシュレジスタ１１０ａにロードすることができる。取り出されたデータを、ＮＡＮＤフラッシュメモリデバイス３２０ａの外部のキャッシュレジスタ１１０ａから提供することができる。
【００２８】
マネージドメモリデバイス３００は、ＮＡＮＤフラッシュメモリデバイス３２０ａにおける読み出し中ロード機構をサポートすることができる。マネージドメモリデバイス３００が読み出し動作を実行している間、ＮＡＮＤフラッシュメモリデバイス３２０ａのアレイ１３０ａにプログラムされるデータを、ＮＡＮＤフラッシュメモリデバイスのレジスタにロードすることができる。たとえば、図３を参照して説明する動作を、アレイ１３０ａから取り出されたデータが読み出し動作に関連するキャッシュレジスタ１１０ａ内に保持されている間に、実行することができる。
【００２９】
コントローラ３１０は、データが、キャッシュレジスタ１１０ａまたはデータレジスタ１２０ａによって保持されているために、アレイ１３０ａにプログラムされるデータの位置を追跡することができ、コントローラ３１０が、データを適切に移動させて、データをアレイ１３０ａにプログラムする動作を完了させること、及び／または、キャッシュレジスタ１１０ａまたはデータレジスタ１２０ａ内に保持されたデータを、そのようなデータをアレイ１３０ａにまだプログラムしていない時に、ホストに戻すこと、ができるようにしている。加えて、コントローラ３１０は、データの位置を追跡するために、データをアレイ１３０ａにプログラムしたというインジケーションを受信することができる。コントローラ３１０の１つまたは複数のレジスタ及び／またはファームウェアは、データの位置をＮＡＮＤフラッシュメモリデバイス３２０ａ上で追跡する、追跡情報を記憶することができる。
【００３０】
いくつかの場合では、ホストは、ＮＡＮＤフラッシュメモリデバイス３２０ａにプログラミングのために最近提供されたデータを読み出すための要求を、送信することができる。要求をホストから受信した時、要求に関連するデータは、ＮＡＮＤフラッシュメモリデバイス３２０ａのレジスタ内にまだ保持されているかもしれず、アレイ１３０ａにまだプログラムされていないかもしれない。コントローラ３１０は、データをＮＡＮＤフラッシュメモリデバイス３２０ａのレジスタから読み出すことを、ホストによって受信された要求を、代わりに、要求されたデータを保持するレジスタからデータを読み出すためのコマンドに変換することによって、サポートすることができる。
【００３１】
図５は、一実施形態による、データレジスタ１２０ａ内に保持されており、ＮＡＮＤフラッシュメモリアレイ１３０ａにまだプログラムされていない、データを読み出すことを示した、マネージドメモリデバイス３００の図である。図５に示す通り、コントローラ３１０は、ＮＡＮＤフラッシュメモリデバイス３２０ａに、データレジスタを通したページプログラムコマンドＮＥＷ  Ｃｍｄを提供することができる。コントローラ３１０は、データレジスタ１２０ａ内に保持されており、ＮＡＮＤフラッシュメモリアレイ１３０ａにまだプログラムされていないデータがあるかどうかを、判断することができる。たとえば、コントローラ３１０は、要求されたデータが、データレジスタ１２０ａ内に保持されたデータに対応するかどうかを、コントローラ３１０によって記憶された追跡情報を確認することによって、確認することができる。ユーザデータのセグメントがデータレジスタ１２０ａ内で１ページのデータに集約されている間、コントローラは、データをＮＡＮＤフラッシュメモリデバイス３２０ａから読み出すための要求を、データの要求されたセグメントをデータレジスタ１２０ａから返すコマンドＤＡＴＡに、変換することができる。したがって、ＮＡＮＤフラッシュメモリデバイス３２０ａの揮発性メモリ内に保持されたデータを、データがアレイ１３０ａ内に記憶されていない時に、取り出すことができる。ＮＡＮＤフラッシュメモリデバイス３２０ａは、ユーザデータのセグメントを集約することを、１ページのデータをデータレジスタ１２０ａ内に記憶するまで、継続することができる。その後、そのページのデータを、アレイ１３０ａに、コマンド１０ｈを完了させるページプログラム動作中に、プログラムすることができる。
【００３２】
特定の実装形態では、キャッシュレジスタ１１０ａを、ＮＡＮＤフラッシュメモリデバイス３２０ａの読み出し動作と、ＮＡＮＤフラッシュメモリデバイス３２０ａのプログラミング動作との両方のために使用することができる。このような実装形態では、専用コマンドを使用して、分散仮想キャッシュの機能を実装するために、データを、キャッシュレジスタ１１０ａとデータレジスタ１２０ａとの間で交換することができる。図６及び図７は、キャッシュレジスタ１１０ａを、ＮＡＮＤフラッシュメモリデバイス３２０ａの読み出し動作とプログラミング動作との両方のために使用する実施形態に関連する。
【００３３】
図６は、一実施形態による、ＮＡＮＤフラッシュメモリデバイス３２０ａのページプログラミング動作を示した、マネージドメモリデバイス３００の図である。図２の実施形態と対照的に、完全な１ページのユーザデータを、キャッシュレジスタ１１０ａに、一度に１セグメントずつ、ロードすることができ、その後、その完全な１ページを、アレイ１３０ａにプログラムすることができる。図６の実施形態は、ユーザデータをデータレジスタ１２０ａの代わりにキャッシュレジスタ１１０ａにロードすることを除き、図３の実施形態と同様である。したがって、図６の実施形態は、読み出し動作とプログラミング動作とのための、別々のレジスタを使用することができる。特に、キャッシュレジスタ１１０ａを読み出し動作のために使用することができ、データレジスタ１２０ａをプログラミング動作のために使用することができる。ユーザデータを、データレジスタ１２０ａの代わりにキャッシュレジスタ１１０ａにロードすることは、既存のＯＮＦＩ規格を使用することなどの、データをＮＡＮＤフラッシュメモリのアレイ１３０ａにプログラミングするいくつかの既存の方法に、あまり変化をもたらさないことがある。
【００３４】
図７は、一実施形態による、キャッシュレジスタ１１０ａからのデータをデータレジスタ１２０ａに転送する、アレイ１３０ａからのインターリーブ読み出しを示した、マネージドメモリデバイス３００の図である。データをキャッシュレジスタ１１０ａとデータレジスタ１２０ａとの間で交換することに関連する原理と利点とを、任意の適切な読み出し動作及び／またはプログラム動作に関連する第１のデータに関連して実装することができ、その動作では、第１のデータをキャッシュレジスタ１１０ａにロードし、他の動作中に第１のデータを保存する必要性がある。
【００３５】
データをアレイ１３０ａから取り出すための要求を変換する前に、コントローラ３１０は、キャッシュレジスタ１１０ａ内に保持されており、アレイ１３０ａにまだプログラムされていないデータがあるかどうかを、判断することができる。たとえば、コントローラ３１０は、要求されたデータがキャッシュレジスタ１１０ａ内に保持されたデータに対応するかどうかを、コントローラ３１０によって記憶された追跡情報に基づいて、確認することができる。キャッシュレジスタ１１０ａによって保持された、ＮＡＮＤフラッシュメモリアレイ１３０ａにプログラムされる、１ページより少ないデータがある時、コントローラは、ＮＡＮＤフラッシュメモリデバイス３２０ａに、キャッシュレジスタ１１０ａによって保持されているデータを移動させて、データを失わない方法での読み出し動作のために、キャッシュレジスタ１１０ａを解放させることができる。コントローラ３１０は、ホスト要求を交換コマンドＮｅｗ  Ｓｗａｐ  Ｃｍｄに変換して、データを、キャッシュレジスタ１１０ａからデータレジスタ１２０ａに移動させることができる。これにより、データを、ＮＡＮＤフラッシュメモリデバイス３２０ａとＮＡＮＤフラッシュメモリデバイス３２０ｂとの、データレジスタ１２０ａとデータレジスタ１２０ｂとによって実装された、分散仮想キャッシュ内に維持することができる。たとえば、ユーザデータがキャッシュレジスタ１１０ａ内に集約されており、１ページより少ないユーザデータがキャッシュレジスタ１１０ａによって保持されている時、ユーザデータをデータレジスタ１２０ａに移動させることができる。その後、取り出したデータをＮＡＮＤフラッシュメモリデバイス３２０ａの出力部に提供した後、ユーザデータをキャッシュレジスタ１１０ａに戻すことができる。
【００３６】
図７は、キャッシュレジスタ１１０ａ内のデータをデータレジスタ１２０ａに移動させる、インターリーブ読み出しを示している。一実施形態では、ＮＡＮＤフラッシュメモリデバイス３２０ａは、第１のデータをキャッシュレジスタ１１０ａに、一度に１セグメントずつ、ロードすることができる。第２のデータをアレイ１３０ａから読み出すための要求を、キャッシュレジスタ１１０ａが第１のデータを保持している間に、ホストから受信することができる。第１のデータは、完全な１ページより少ないデータを備えることができる。第２のデータは、アレイ１３０ａ内に記憶されたデータの１つまたは複数のセグメントを備えることができる。いくつかの場合では、第２のデータは、１ページのデータを備える。キャッシュレジスタ１１０ａによって保持されている第１のデータを、データレジスタ１２０ａに移動させることができる。その後、データレジスタ１２０ａが第１のデータを保持している間に、第２のデータをアレイ１３０ａから取り出し、キャッシュレジスタ１１０ａにロードすることができる。第２のデータを、その後、ＮＡＮＤフラッシュメモリデバイス３２０ａの出力部に提供することができる。データレジスタ１２０ａが第１のデータを保持している間、追加のデータをアレイ１３０から取り出し、キャッシュレジスタ１１０ａにロードし、ＮＡＮＤフラッシュメモリデバイス３２０ａから出力することができる。データレジスタ１２０ａが第１のデータを保持している間、ページキャッシュプログラム動作などのプログラミング動作を、インターリーブ読み出し動作の代替として、またはインターリーブ読み出し動作に加えて、実行することができる。そのようなプログラミング動作では、データレジスタ１２０ａが第１のデータを保持している間に、データをキャッシュレジスタ１１０ａにロードし、その後、アレイ１３０にプログラムすることができる。読み出し動作及び／または書き込み動作が完了すると、第１のデータを、データレジスタ１２０ａからキャッシュレジスタ１１０ａに移動させることができる。第１のデータを、次に、アレイ１３０にプログラムすることができる。たとえば、一旦完全な１ページのデータがキャッシュレジスタ１１０ａによって保持されると、キャッシュレジスタ１１０ａの内容を、アレイ１３０ａにプログラムすることができる。
【００３７】
図８は、一実施形態による、分散散揮発性キャッシュ（ＤＶＣ）８００を実装する、複数のＮＡＮＤフラッシュメモリデバイス３２０ａ、３２０ｂ、３２０ｃ、及び３２０ｄを含む、マネージドメモリデバイス３００のブロック図である。本明細書で説明する原理と利点とを、２つ以上のＮＡＮＤフラッシュメモリデバイス及び／または２つ以上のプレーンのレジスタとアレイとを含むＮＡＮＤフラッシュメモリデバイスを含む、マネージドメモリデバイス３００に適用することができる。複数のＮＡＮＤフラッシュメモリデバイス３２０ａ〜ＮＡＮＤフラッシュメモリデバイス３２０ｄのデータレジスタ１２０ａ１〜データレジスタ１２０ｄ２は、全体で、ＤＶＣ８００を実装することができる。ＤＶＣ８００は、揮発性メモリを備える、ＮＡＮＤフラッシュメモリデバイス３２０ａ〜ＮＡＮＤフラッシュメモリデバイス３２０ｄのレジスタを使用して、データを、ＮＡＮＤフラッシュメモリデバイス３２０ａ〜ＮＡＮＤフラッシュメモリデバイス３２０ｄ上に、一時的に保持することができる。そのようなＤＶＣ８００を、たとえば、組込みマルチメディアカードアプリケーションで実装することができる。ＤＶＣ８００は、たとえば、ホストからの複数のプログラミング要求からのユーザデータを、ページプログラム動作に集約している間に、データを、ＮＡＮＤフラッシュメモリデバイス３２０ａ〜ＮＡＮＤフラッシュメモリデバイス３２０ｄによって、保持することを可能にすることができる。たとえば、図７を参照して説明した通り、データをキャッシュレジスタ１１０からデータレジスタ１２０に移動させることは、ＤＶＣ８００の機能を実装することができる。いくつかの実施形態では、ＮＡＮＤフラッシュメモリデバイス３２０ａ、ＮＡＮＤフラッシュメモリデバイス３２０ｂ、ＮＡＮＤフラッシュメモリデバイス３２０ｃ、及びＮＡＮＤフラッシュメモリデバイス３２０ｄは、ＤＶＣモードを、選択的に有効及び／または無効にすることができる。たとえば、トリム設定は、ＤＶＣモードを、選択的に有効及び／または無効にすることができる。
【００３８】
ＤＶＣ８００は、マネージドメモリデバイス３００のランダムプログラム性能を、コントローラ３１０上の揮発性メモリを増加させることなく強化することができる。代替的に、ＤＶＣ８００は、実質的に同じランダムプログラム性能を、コントローラ３１０上のより少ない揮発性メモリを用いて達成することができる。したがって、ＤＶＣ８００は、マネージドメモリデバイスのランダム書き込み性能を向上させ、及び／またはマネージドメモリデバイスのコントローラの費用を削減することができる。
【００３９】
ＤＶＣ８００は、ＤＶＣ８００によって記憶され得るデータのセグメント数に近い、読み出し／プログラムＩＯＰＳの増加という、性能的な利点を生じることができる。たとえば、１６ＫＢの１ページのデータを記憶するようにそれぞれが構成された２つのデータレジスタを、それぞれ有する４つのダイからＤＶＣ８００を作成し、データセグメントを、ダイに、４ＫＢセグメントで送信する時、ＤＶＣ８００は、４×２×１６ＫＢ＝１２８ＫＢのデータを記憶することができる。本実施例では、各セグメントが４ＫＢのデータであるため、ランダムプログラムＩＯＰＳの３２倍近い増加を達成することができる。別の実施例では、１６ＫＢの１ページのデータを記憶するようにそれぞれが構成された２つのデータレジスタを有する、１つのダイからＤＶＣ８００を作成し、データセグメントをダイに、４ＫＢセグメントで送信する時、ランダムプログラムＩＯＰＳの８倍近い増加を達成することができる。
【００４０】
ＤＶＣ８００を、本明細書で説明する特徴の適切な組み合わせに従って実装することができる。特定の実施形態では、ＤＶＣ８００を、図３〜図５の実施形態に従って実装することができる。いくつかの他の実装形態によると、ＤＶＣ８００を、図６〜図７の実施形態に従って実装することができる。例示のＤＶＣ８００は、データレジスタ１２０ａ〜データレジスタ１２０ｄを備えるが、いくつかの他の実施形態では、不揮発性メモリデバイス上の、キャッシュレジスタ１１０ａ〜キャッシュレジスタ１１０ｄ及び／または他の揮発性メモリが、ＤＶＣを実装することができる、ということが理解される。たとえば、図１０Ａと図１０Ｂとの実施形態では、別々の仮想キャッシュレジスタ４１０ａ及び仮想キャッシュレジスタ４１０ｂは、ＤＶＣを実装することができる。
【００４１】
本明細書で説明するレジスタアーキテクチャは、マネージドメモリデバイス３００のガベージコレクション機能とウェアレベリング機能と、互換性を有することができる。コントローラ３１０のファームウェア及び／またはハードウェアは、ガベージコレクション及び／またはウェアレベリングを実行することができる。特定の実施形態では、ガベージコレクションとウェアレベリングとを、プログラミング動作が完了するまで、保留することができる。代替的に、または加えて、プログラミング動作を、完全な１ページのデータでデータレジスタなどのレジスタを完全に満たす前に、強制することができる。
【００４２】
現在のＯＮＦＩ規格におけるＮＡＮＤフラッシュメモリデバイスのレジスタアーキテクチャは、メモリアレイにプログラムされる第１のデータを、ＮＡＮＤフラッシュメモリデバイスのレジスタに、セグメントずつロードしている間に、第１のデータを失わずに、ページキャッシュ読み出し動作を実行することを、可能にしない。しかし、ページキャッシュ読み出し動作を使用して、連続的な読み出し性能を強化し、現在と将来とのマネージドメモリ規格を満たすことができる。加えて、現在のＯＮＦＩ規格は、メモリアレイにプログラムされる第１のデータを、ＮＡＮＤフラッシュメモリデバイスのレジスタに、セグメントずつロードしている間に、第１のデータを失わずに、ページプログラム動作またはページキャッシュプログラム動作を実行することを可能にしない。しかしながら、異なるデータを用いた、ページプログラム動作及びページキャッシュプログラム動作は、たとえば、論理ポインタから物理ポインタへの変換テーブルを更新する際に、及び／またはガベージコレクション活動中に、マネージドメモリのファームウェア（及び／またはハードウェア）を補助することができる。したがって、ＮＡＮＤフラッシュメモリデバイスの性能を向上させることに対する必要性が存在する。
【００４３】
図９から図１２Ｃに例示した実施形態は、第１のデータをレジスタに一時的にロードし、第１のデータを維持しながら、第２のデータに関連する、インターリーブページキャッシュ読み出し動作、ページ読み出し動作、またはページキャッシュプログラム動作を実行することができる、ＮＡＮＤフラッシュメモリデバイスのレジスタアーキテクチャの実施例である。この新しいレジスタアーキテクチャは、３つの別々のレジスタを、ＮＡＮＤフラッシュメモリデバイス上に含む。加えて、ＮＡＮＤフラッシュメモリデバイスは、新しい移動コマンド及び／または交換コマンドを実行して、データを、キャッシュレジスタ１１０から、仮想キャッシュレジスタ４１０に／から移動させることができる。図９から図１２Ｃの、ＮＡＮＤフラッシュメモリデバイス４００、ＮＡＮＤフラッシュメモリデバイス４００ａ、及び／またはＮＡＮＤフラッシュメモリデバイス４００ｂを、図３から図８のマネージドメモリデバイス３００のうちの任意のものの、図３から図８のＮＡＮＤデバイス３２０ａ〜ＮＡＮＤデバイス３２０ｄのうちの任意のものの代わりに、実装することができる。そのようなマネージドメモリデバイス３００のコントローラ３１０は、新しい移動コマンド及び／または交換コマンドを生成して、データを、キャッシュレジスタ１１０から、仮想キャッシュレジスタ４１０に／から移動させることができる。
【００４４】
図９は、一実施形態による、例示的なＮＡＮＤフラッシュメモリデバイス４００の図である。ＮＡＮＤフラッシュメモリデバイス４００は、ＮＡＮＤフラッシュメモリデバイス３２０ａ〜ＮＡＮＤフラッシュメモリデバイス３２０ｄの特徴の任意の組み合わせを実装することができる。ＮＡＮＤフラッシュメモリデバイス４００は、また、追加的な移動機能及び／または交換機能を、仮想キャッシュを実装するための追加的なレジスタを用いて、実装することができる。ＮＡＮＤフラッシュメモリデバイス４００を、マネージドメモリデバイス３００のコントローラ３１０を用いて実装することができる。
【００４５】
例示のＮＡＮＤフラッシュメモリデバイス４００は、キャッシュレジスタ１１０と、データレジスタ１２０と、仮想キャッシュレジスタ４１０と、アレイ１３０とを含む。キャッシュレジスタ１１０及びデータレジスタ１２０は、現在のＯＮＦＩ規格によって規定された動作を実行することができる。一実施形態では、仮想キャッシュレジスタ４１０は、キャッシュレジスタ１１０と同じ量のデータと、データレジスタ１２０と同じ量のデータとを保持することができる。したがって、仮想キャッシュレジスタ４１０は、１ページ分のデータを保持することができる。いくつかの他の実施形態では、仮想キャッシュレジスタ４１０は、それが１ページ未満のデータを保持している時は、一杯である。たとえば、いくつかの実施形態では、仮想キャッシュレジスタ４１０は、完全な１ページよりも１セグメント少ないデータを保持するような大きさにされる。仮想キャッシュレジスタ４１０は、キャッシュレジスタ１１０内に以前ロードしたデータを、キャッシュレジスタ１１０が他の動作を実行するために使用される間に、保持することができる。したがって、仮想キャッシュレジスタ４１０は、キャッシュレジスタ１１０内に以前にロードしたデータを、キャッシュレジスタ１１０とデータレジスタ１２０との両方を使用してアレイ１３０にアクセスする動作中に、保持することができる。たとえば、仮想キャッシュレジスタ４１０は、キャッシュレジスタ１１０内に以前に記憶したデータを、ページ読み出し動作、ページキャッシュ読み出し動作、ページキャッシュプログラム動作、またはそれらの任意の組み合わせ中に、保持することができる。
【００４６】
仮想キャッシュレジスタ４１０が第１のデータを保持している間に、第２のデータを、キャッシュレジスタ１１０とアレイ１３０との間で、データレジスタ１２０を介して、転送することができる。たとえば、アレイ１３０からの第２のデータを、データレジスタ１２０にロードすることができる。その後、第２のデータを、データレジスタ１２０からキャッシュレジスタ１１０に移動させることができる。第２のデータを、キャッシュレジスタ１１０からＮＡＮＤフラッシュメモリデバイス４００の出力部に、出力することができる。別の実施例として、第２のデータを、キャッシュレジスタ１１０にロードし、データレジスタ１２０に移動させることができる。その後、第２のデータを、アレイ１３０に、データレジスタ１２０から提供し、アレイ１３０にプログラムすることができる。
【００４７】
コントローラ３１０は、新しい、Ｖキャッシュへ移動コマンドを生成して、データを、キャッシュレジスタ１１０から仮想キャッシュレジスタ４１０に移動させることができる。コントローラ３１０は、また、新しい、Ｖキャッシュから移動コマンドを生成して、データを、仮想キャッシュレジスタ４１０からキャッシュレジスタ１１０に移動させることができる。代替的に、コントローラ３１０は、新しい、Ｖキャッシュ交換コマンドを生成して、キャッシュレジスタ１１０の内容を、仮想キャッシュレジスタ４１０の内容と交換することができる。
【００４８】
図１０Ａ及び図１０Ｂは、データを、マルチプレーン型ＮＡＮＤフラッシュメモリデバイス４２０のレジスタ間で交換する実施形態を示した図である。図１０Ａに示す通り、シングルプレーンコマンドを実行することによって、データを、マルチプレーン型ＮＡＮＤフラッシュメモリデバイス４２０の選択プレーン４００ａ内の、キャッシュレジスタ１１０ａと仮想キャッシュレジスタ４１０ａとの間で、移動させることができる。シングルプレーン交換コマンド及び／またはシングルプレーン移動コマンドは、選択プレーン上のみで動作することができ、一方で、他のプレーン内のデータは、非選択プレーンのキャッシュレジスタ１１０ｂと仮想キャッシュレジスタ４１０ｂとの間で、交換及び／または移動されない。代替的に、または加えて、図１０Ｂに示す通り、マルチプレーンコマンドを実行することによって、データを、マルチプレーン型ＮＡＮＤフラッシュメモリデバイス４２０の複数のプレーン４００ａと４００ｂとの中の、キャッシュレジスタ１１０ａ及びキャッシュレジスタ１１０ｂと、仮想キャッシュレジスタ４１０ａと仮想キャッシュレジスタ４１０ｂとの間で、移動させることができる。マルチプレーン交換コマンド及び／またはマルチプレーン移動コマンドは、すべての指定プレーン上で同時に動作することができる。ＮＡＮＤフラッシュメモリデバイス４２０は、シングルプレーン及び／またはマルチプレーンの、交換コマンド及び／または移動コマンドを実装することができる。図１０Ａと図１０Ｂとで、マルチプレーン型ＮＡＮＤフラッシュメモリデバイス４２０を、２つのプレーンを有するものとして示したが、本明細書で説明する原理と利点とを、２つ以上のプレーンを有する実装形態に適用することができる。
【００４９】
ＮＡＮＤフラッシュメモリページまたはその一部をバッファする３つの別々のレジスタを用いて、データを、キャッシュレジスタ１１０に、一度に１セグメントずつ、一時的にロードすることができ、インターリーブページキャッシュ読み出し動作を実行することができる。図１１Ａ、図１１Ｂ、及び図１１Ｃは、一実施形態による、インターリーブ読み出し動作を用いて、プログラムされるデータを、レジスタ内のアレイに、一時的にロードするプロセスを示した図である。
【００５０】
図１１Ａを参照すると、データを、キャッシュレジスタ１１０に、一度に１セグメントずつ、ロードすることができる。キャッシュレジスタ１１０は、アレイ１３０にプログラムされる第１のデータを、コントローラ３１０から、チャネルを介して受信することができる。キャッシュレジスタ１１０が完全な１ページのデータを保持している時、その完全な１ページのデータを、キャッシュレジスタ１１０からアレイ１３０に提供し、アレイ１３０にプログラムすることができる。キャッシュレジスタ１１０が完全な１ページより少ないデータを保持している間、コントローラ３１０は、データをＮＡＮＤフラッシュメモリデバイス４００のアレイ１３０から読み出すために、ページキャッシュ読み出し要求またはページ読み出し要求などの読み出し要求を、ホストから受信することができる。コントローラ３１０の１つまたは複数のレジスタまたはファームウェア内の追跡情報に基づいて、コントローラ３１０は、完全な１ページより少ない、アレイにプログラムされるデータが、キャッシュレジスタ１１０によって保持されていることを検出することができる。その後、コントローラ３１０は、Ｖキャッシュに移動コマンドを生成することができる。ＮＡＮＤフラッシュメモリデバイス４００は、Ｖキャッシュに移動コマンドを実行して、キャッシュレジスタ１１０によって保持されている第１のデータを、仮想キャッシュレジスタ４１０に移動させることができる。
【００５１】
図１１Ｂに示す通り、アレイ１３０からの第２のデータを、第１のデータが仮想キャッシュレジスタ４１０によって保持されている間に、データレジスタ１２０にロードすることができる。第２のデータは、いくつかの場合では、完全な１ページのデータを含むことができる。第２のデータを、その後、データレジスタ１２０からキャッシュレジスタ１１０に移動させる。第２のデータをキャッシュレジスタ１１０にロードすると、データレジスタ１２０は、新しいデータをアレイ１３０から受信する準備が整う。第２のデータを、キャッシュレジスタ１１０からＮＡＮＤフラッシュメモリデバイス４００の接点に提供することができる。これにより、第２のデータを、ＮＡＮＤフラッシュメモリデバイス４００からコントローラ３１０に出力することができる。第２のデータを、キャッシュレジスタ１１０からＮＡＮＤフラッシュメモリデバイス４００の出力部に提供している間に、データの新しいページなどのアレイ１３０からの追加的なデータを、データレジスタ１２０にロードすることができる。コントローラ３１０は、仮想キャッシュレジスタ４１０が第１のデータを保持している間に、コマンドを生成して、ＮＡＮＤフラッシュメモリデバイス４００に、図１１Ｂに示す動作を、何回でも望むだけ繰り返させることができる。コントローラ３１０は、仮想キャッシュレジスタ４１０が第１のデータを保持している間に、コマンドを生成して、ＮＡＮＤフラッシュメモリデバイス４００に、他の読み出し動作及び／またはプログラム動作を、何回でも望むだけ実行させることができる。
【００５２】
読み出し動作及び／またはプログラミング動作が完了したと検出したことに応答して、コントローラ３１０は、Ｖキャッシュから移動コマンドを生成し、このコマンドをＮＡＮＤフラッシュメモリデバイス４００に提供することができる。ここで図１１Ｃを参照すると、ページキャッシュ読み出し動作が完了した後、仮想キャッシュレジスタ４１０によって保持されている第１のデータを、キャッシュレジスタ１１０に移動させることができる。アレイ１３０にプログラムされるデータのセグメントを、その後、キャッシュレジスタ１１０にロードすることができる。完全な１ページのデータをキャッシュレジスタ１１０にロードすると、ＮＡＮＤフラッシュメモリデバイス４００は、その完全な１ページのデータを、キャッシュレジスタ１１０からアレイ１３０に提供し、このデータをアレイ１３０にプログラムすることができる。
【００５３】
ＮＡＮＤフラッシュメモリページをバッファするために、３つの別々のレジスタをＮＡＮＤフラッシュメモリデバイス上に有するレジスタアーキテクチャは、また、データをキャッシュレジスタ１１０に、一度に１セグメントずつ、一時的にロードし、インターリーブページキャッシュプログラム動作を実行して、異なるデータをアレイ１３０にプログラムすることができる。図１２Ａ、図１２Ｂ、及び図１２Ｃは、一実施形態による、第２のデータをアレイにプログラムするインターリーブプログラミング動作を用いて、レジスタ内のアレイにプログラムされる第１のデータを、一時的にロードするプロセスを示した図である。
【００５４】
図１２Ａを参照すると、データを、キャッシュレジスタ１１０に、一度に１セグメントずつ、ロードすることができる。キャッシュレジスタ１１０は、アレイ１３０にプログラムされる第１のデータを、コントローラ３１０から、チャネルを介して受信することができる。キャッシュレジスタ１１０が完全な１ページのデータを保持している時、その完全な１ページのデータを、キャッシュレジスタ１１０からアレイ１３０に提供することができる。キャッシュレジスタ１１０が完全な１ページより少ないデータを保持している間、コントローラ３１０は、１ページのデータをＮＡＮＤフラッシュメモリデバイス４００のアレイ１３０にプログラムするために、ページキャッシュプログラム要求をホストから受信することができる。コントローラ３１０の１つまたは複数のレジスタまたはファームウェア内の追跡情報に基づいて、コントローラ３１０は、１ページより少ない、アレイ１３０にプログラムされるデータが、キャッシュレジスタ１１０によって保持されていることを検出することができる。その後、コントローラ３１０は、Ｖキャッシュに移動コマンドを生成することができる。ＮＡＮＤフラッシュメモリデバイス４００は、Ｖキャッシュに移動コマンドを実行して、キャッシュレジスタ１１０によって保持されている第１のデータを、仮想キャッシュレジスタ４１０に移動させることができる。
【００５５】
図１２Ｂに示す通り、１ページの、アレイ１３０にプログラムされるデータを含む第２のデータを、第１のデータが仮想キャッシュレジスタ４１０によって保持されている間に、キャッシュレジスタ１１０にロードすることができる。第２のデータを、その後、キャッシュレジスタ１１０からデータレジスタ１２０に、移動させることができる。第２のデータをデータレジスタ１２０に移動させると、キャッシュレジスタ１１０は、新しいデータをコントローラ３１０から受信する準備が整う。第２のデータを、データレジスタ１２０からアレイ１３０に提供することができる。その後、第２のデータを、アレイ１３０にプログラムすることができる。第２のデータをデータレジスタ１２０からアレイ１３０に提供している間に、ＮＡＮＤフラッシュメモリデバイス４００から受信した別のページのデータを、キャッシュレジスタ１１０にロードすることができる。コントローラ３１０は、仮想キャッシュレジスタ４１０が第１のデータを保持している間に、コマンドを生成して、ＮＡＮＤフラッシュメモリデバイス４００に、図１２Ｂに示した動作を、何回でも望むだけ繰り返させることができる。コントローラ３１０は、仮想キャッシュレジスタ４１０が第１のデータを保持している間に、コマンドを生成して、ＮＡＮＤフラッシュメモリデバイス４００に、他のプログラム動作及び／または読み出し動作を、何回でも望むだけ繰り返させることができる。
【００５６】
キャッシュ ページプログラム動作が完了したと検出したことに応答して、コントローラ３１０は、Ｖキャッシュから移動コマンドを生成して、このコマンドを、ＮＡＮＤフラッシュメモリデバイス４００に提供することができる。ここで図１２Ｃを参照すると、ページキャッシュプログラム動作が完了した後、仮想キャッシュレジスタ４１０によって保持されている第１のデータを、キャッシュレジスタ１１０に移動させることができる。アレイ１３０にプログラムされるデータのセグメントを、その後、キャッシュレジスタ１１０にロードすることができる。完全な１ページのデータをキャッシュレジスタ１１０にロードすると、ＮＡＮＤフラッシュメモリデバイス４００は、完全な１ページのデータを、キャッシュレジスタ１１０からアレイ１３０に提供し、これらのデータをアレイ１３０にプログラムすることができる。
【００５７】
図９から図１２Ｃのうちの任意の１つを参照して説明した特徴の任意の組み合わせを、必要に応じて、互いに組み合わせることができる。さらに、図９から図１２Ｃを参照して説明した、レジスタアーキテクチャに関連する原理と利点とを、アレイ１３０にアクセスする１つまたは複数の他の動作を実行する間、レジスタ内に保持されたデータを保存する必要がある任意の動作に関連して、実装することができる。
【００５８】
上記で説明した実施形態では、不揮発性メモリ及び／またはコントローラは、データを記憶する不揮発性メモリに対する必要性を有する任意の電子デバイスで実装される。したがって、本明細書で説明した、不揮発性メモリ及び／またはコントローラと関連する方法とを、さまざまな電子デバイスに組み込むことができる。電子デバイスの実施例は、家電製品、電子回路、電子回路部品、家電製品部品、電子試験装置、などを含むことができるが、これらに限定されない。家電製品の実施例は、携帯電話（たとえば、スマートフォン）、電話、テレビ、コンピュータモニタ、コンピュータ、携帯型コンピュータ、ノートパソコン、タブレットコンピュータ、情報携帯端末（ＰＤＡ）、電子レンジ、冷蔵庫、ステレオシステム、カセットレコーダまたはプレーヤ、ＤＶＤプレーヤ、ＣＤプレーヤ、ＶＣＲ、ＭＰ３プレーヤ、ラジオ、カムコーダ、光学カメラ、デジタルカメラ、携帯型メモリチップ、洗濯機、乾燥機、洗濯／乾燥機、コピー機、ファクシミリ機、スキャナ、多機能周辺デバイス、腕時計、時計、などを含むが、これらに限定されない。さらに、電子デバイスは、未完成製品を含むことができる。開示の手法は、精神的なステップには適用されず、人間の精神内で、または人間によって紙に書いて、実行されるものではない。
【００５９】
文脈が明確に別段の要求をしない限り、本明細書と特許請求の範囲とを通して、「備える（comprise）」、「備える（comprising）」、「含む（include）」、「含む（including）」などの言葉は、排他的または排他的な意味ではなく、包括的な意味で解釈されるものであり、換言すると、「含むが、限定されない」という意味である。前述の説明及び特許請求の範囲は、一緒に「接続」または「連結」されている要素または特徴を指すことができる。本明細書で使用する通り、反対のことを明確に述べない限り、「接続された」は、１つの要素／特徴が、他の要素／特徴に、直接または間接的に、必ずしも機械的でなく、接続されていることを意味する。同様に、反対のことを明確に述べない限り、「連結された」は、１つの要素／特徴が、他の要素／特徴に、直接または間接的に、必ずしも機械的でなく、連結されていることを意味する。したがって、図面は、要素と構成要素との配置のさまざまな実施例を示しているが、実際の実施形態では、追加的な、介在する、要素、デバイス、特徴、または構成要素が、存在することができる。加えて、「本明細書で」、「上記で」、「以下に」という言葉及び同様の意味の言葉は、本出願で使用された時は、本出願を、本出願の特定の部分でなく、全体として、指すものである。文脈が許す場合、上記の発明を実施するための形態内で、単数形または複数形の数を使用した言葉は、また、複数形または単数形の数をそれぞれ含むことができる。２つ以上の項目から成る一覧を参照した「または」という言葉は、この言葉の以下の解釈のうちのすべてを含み、それらは、一覧中の項目のうちの任意のもの、一覧中の項目の全部、及び一覧中の項目の任意の組み合わせ、である。
【００６０】
本明細書で説明した方法の特徴の任意の組み合わせを、非一時的コンピュータ可読媒体上に記憶されたコードに具体化することができる。実行されると、非一時的なコンピュータ可読媒体上の記憶されたコードは、本明細書で説明した方法のうちの任意のものの一部または全部を実行することができる。本明細書で説明した方法のうちのいずれかが、より多くまたはより少ない動作を含むことができ、動作を、必要に応じて、任意の順番で実行することができる、ということが理解される。たとえば、プロセスまたはブロックを所定の順番で表したが、代替的な実施形態は、異なる順番のステップを有するルーチンを実行し、または異なる順番のブロックを有するシステムを採用することができ、いくつかのプロセスまたはブロックを、削除、移動、追加、分割、統合、及び／または変更することができる。これらのプロセスまたはブロックの各々を、さまざまな異なる方法で実装することができる。また、プロセスまたはブロックを、時には、順番に実行されるものとして示したが、これらのプロセスまたはブロックを、代わりに、並列に実行することができ、または異なる時間に実行することができる。さらに、本明細書で説明した方法を、少なくとも部分的に物理的回路によって、実行することができる、ということが理解される。したがって、特許請求の範囲は、純粋な金属加工または抽象的概念を含むことを意図していない。
【００６１】
さまざまな実施形態を上記で説明した。これらの具体的な実施形態を参照して説明したが、説明は、例示することを意図し、限定することを意図しない。さまざまな変更及び応用が、当業者に起こってよい。
【図９】
2016536732.tif 000003
【図１０Ａ】
2016536732.tif 000004
【図１０Ｂ】
2016536732.tif 000005
【図１１Ａ】
2016536732.tif 000006
【図１１Ｂ】
2016536732.tif 000007
【図１１Ｃ】
2016536732.tif 000008
【図１２Ａ】
2016536732.tif 000009
【図１２Ｂ】
2016536732.tif 000010
【図１２Ｃ】
2016536732.tif 000011
【図１】
2016536732.tif 000012
【図２】
2016536732.tif 000013
【図３】
2016536732.tif 000014
【図４】
2016536732.tif 000015
【図５】
2016536732.tif 000016
【図６】
2016536732.tif 000017
【図７】
2016536732.tif 000018
【図８】
2016536732.tif 000019
【手続補正書】
【提出日】平成28年3月25日(2016.3.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラと、
第１の不揮発性メモリデバイスと、
前記コントローラと前記第１の不揮発性メモリデバイスとの間のインターフェースと、
を備え、
前記第１の不揮発性メモリデバイスが、
データを記憶するように構成された、不揮発性メモリセルの第１のアレイと、
その上に揮発性メモリを備える第１のレジスタと、
その上に揮発性メモリを備える第２のレジスタと、
を備え、
前記コントローラが、コマンドを生成して、前記第１の不揮発性メモリに、
不揮発性メモリセルの前記第１のアレイにプログラムされるプログラミングデータを、前記第１のレジスタにロードすることと、
不揮発性メモリセルの前記第１のアレイから読み出した読み出しデータを、前記第２のレジスタにロードすることと、
前記第２のレジスタからの前記読み出しデータを、前記コントローラに、前記第１のレジスタが、不揮発性メモリセルの前記第１のアレイにプログラムされる前記プログラミングデータを保持している間に、提供することと、
を行わせるように構成されている、
装置。
【請求項２】
前記コントローラが、第２の不揮発性メモリデバイスと通信しており、前記第２の不揮発性メモリデバイスが、データを記憶するように構成された、不揮発性メモリセルの第２のアレイと、揮発性メモリを備える第３のレジスタと、揮発性メモリを備える第４のレジスタとを備え、前記コントローラが、コマンドを生成して、前記第２の不揮発性メモリに、
不揮発性メモリセルの前記第２のアレイにプログラムされる第２のプログラミングデータを、前記第３のレジスタにロードすることと、
不揮発性メモリセルの前記第２のアレイから読み出された第２の読み出しデータを、前記第４のレジスタにロードすることと、
前記第２の読み出しデータを、前記第４のレジスタから前記コントローラに、前記第３のレジスタが、不揮発性メモリセルの前記第２のアレイにプログラムされる前記第２のプログラミングデータを保持している間に、提供することと、
を行わせるように構成されている、請求項１に記載の装置。
【請求項３】
前記コントローラが、第２の不揮発性メモリデバイスと通信しており、前記第２の不揮発性メモリデバイスが、データを記憶するように構成された、不揮発性メモリセルの第２のアレイと、揮発性メモリを備える第３のレジスタと、揮発性メモリを備える第４のレジスタとを備え、前記コントローラが、コマンドを生成して、前記第２の不揮発性メモリに、
不揮発性メモリセルの前記第２のアレイにプログラムされる第２のプログラミングデータを、前記第３のレジスタにロードすることと、
前記第３のレジスタ内に記憶された、プログラムされる前記第２のプログラミングデータを、プログラムされる前記データを不揮発性メモリセルの前記第２のアレイにプログラムする前に、前記コントローラに戻すことと、
を行わせるように構成されている、請求項１から２のいずれか一項に記載の装置。
【請求項４】
前記コントローラが、コマンドを生成して、前記第１の不揮発性メモリに、不揮発性メモリセルの前記第１のアレイにプログラムされる前記プログラミングデータを、前記第１のレジスタに、前記第２のレジスタを使用することなく、ロードすることを行わせるように構成されている、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記コントローラが、１つまたは複数のコマンドを生成して、前記第１の不揮発性メモリデバイスに、前記第１のレジスタ内に保持されている、プログラムされる前記プログラミングデータを、前記第２のレジスタに移動させることと、その後に、前記第１のアレイからの第２の読み出しデータを、前記第１のレジスタにロードすることと、前記第２のレジスタ内の前記第１のアレイからの前記第２の読み出しデータを、前記コントローラに提供することと、プログラムされる前記プログラミングデータを、前記第２のレジスタから前記第１のレジスタに移動させることと、を行わせるように構成されている、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記コントローラが、コマンドを、前記第１の不揮発性メモリに提供して、別々のレジスタを使用して、前記第１のアレイから読み出されたデータと前記第１のアレイにプログラムされるデータとを保持するように構成されている、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記コントローラが、データを前記第１のレジスタから取り出すことであって、前記取り出したデータを不揮発性メモリセルの前記第１のアレイにプログラムする前に、取り出すこと、を行うように構成されている、請求項１から６のいずれか一項に記載の装置。
【請求項８】
コントローラと、
不揮発性メモリデバイスと、
前記コントローラと前記不揮発性メモリデバイスとの間のインターフェースと、
を備え、
前記不揮発性メモリデバイスが、
データを記憶するように構成された、不揮発性メモリセルのアレイと、
揮発性メモリを備える第１のレジスタであって、
セグメントになったプログラミングデータを受信することと、
プログラミングデータの前記受信したセグメントを保持することと、
複数の、プログラミングデータの前記受信したセグメントを備える１ページのプログラミングデータを、前記第１のレジスタ内に保持した後、プログラミングデータの前記ページを、不揮発性メモリセルの前記アレイに提供することと、
を行うように構成された、第１のレジスタと、
前記第１のレジスタとは別の第２のレジスタであって、揮発性メモリを備え、
読み出しデータを、前記アレイから、前記第１のレジスタがプログラミングデータの１つまたは複数のセグメントを保持している時に、取り出すことと、
前記読み出しデータを、前記不揮発性メモリデバイスの出力として、前記第１のレジスタがプログラミングデータの１つまたは複数のセグメントを保持している間に、提供することと、
を行うように構成された、第２のレジスタと、
を含む、装置。
【請求項９】
前記第１のレジスタが、前記読み出しデータを、前記不揮発性メモリの前記出力として、前記読み出しデータを前記第１のレジスタ内に保持しており、前記アレイ内に記憶していない時に、提供するように構成されている、請求項８に記載の装置。
【請求項１０】
前記第１のレジスタが、前記アレイにプログラミングするためのデータを、前記第２のレジスタが前記アレイから読み出したデータを保持している間、保持するように構成されている、請求項８から９のいずれか一項に記載の装置。
【請求項１１】
前記不揮発性メモリデバイスが、前記不揮発性メモリデバイスの入力部と前記第１のデータレジスタとの間の第１の電気接続と、前記アレイと前記第２のレジスタとの間の第２の電気接続とを備え、前記第２の電気接続が、前記アレイからのデータを、前記第２のレジスタに、前記第１のレジスタ内のデータに干渉することなく、ロードすることを可能にする、請求項８から１０のいずれか一項に記載の装置。
【請求項１２】
コントローラと、
不揮発性メモリデバイスと、
前記コントローラと前記不揮発性メモリデバイスとの間のインターフェースと、
を備え、
前記不揮発性メモリデバイスが、
データを記憶するように構成された、不揮発性メモリセルのアレイと、
第１のレジスタと、
第２のレジスタと、
を含み、
前記不揮発性メモリデバイスが、
第１のデータを、前記第１のレジスタにロードすることと、
前記第１のデータを、前記第１のレジスタから前記第２のレジスタに移動させることと、
第２のデータを、前記第１のレジスタと前記アレイとの間で、前記第２のレジスタが前記第１のデータを保持している間に、転送することと、
前記第１のデータを、前記第１のレジスタに、前記第２のレジスタから戻すことと、
前記第１のデータを、前記アレイに、前記第２のデータを前記第１のレジスタと前記アレイとの間で転送した後に、プログラムすることと、
を行うように構成されている、装置。
【請求項１３】
前記不揮発性メモリデバイスが、前記第２のデータを、前記第１のレジスタと前記アレイとの間で、前記アレイからの前記第２のデータを前記第１のレジスタにロードすることを少なくとも部分的にすることによって、転送するように構成されている、請求項１２に記載の装置。
【請求項１４】
前記不揮発性メモリが、前記第１のデータを、前記第１のレジスタに、データを前記第１のレジスタに一度に１セグメントずつ徐々にロードすることを少なくとも部分的にすることによって、ロードするように構成され、１ページのデータが、複数のセグメントを備える、請求項１２から１３のいずれか一項に記載の装置。
【請求項１５】
前記装置が、組込みマルチメディアカードを備え、前記組込みマルチメディアカードが、前記不揮発性メモリデバイスを備える、請求項１２から１４のいずれか一項に記載の装置。
【請求項１６】
不揮発性メモリデバイスにアクセスするための要求を変換する、電子的に実装された方法であって、
不揮発性メモリデバイスのコントローラであって、前記不揮発性メモリからインターフェースによって分離されている、コントローラによって実行された時に、
プログラミングデータを前記不揮発性メモリデバイスの不揮発性メモリセルのアレイにプログラムするための第１の要求を、前記プログラミングデータが、前記不揮発性メモリデバイスの第１のレジスタの揮発性メモリにロードされ、その後に、不揮発性メモリセルの前記アレイにプログラムされるようにする、１つまたは複数のプログラミングコマンドに変換することと、
前記不揮発性メモリデバイスからの読み出しデータにアクセスするための第２の要求を、前記第１の要求に関連する前記プログラミングデータを不揮発性メモリセルの前記アレイにプログラムする前に、受信することと、
前記不揮発性メモリデバイスからの前記読み出しデータにアクセスするための前記第２の要求を、前記不揮発性メモリデバイスに、不揮発性メモリセルの前記アレイからの前記読み出しデータにアクセスすることと、前記読み出しデータを、前記不揮発性メモリデバイスの第２のレジスタの揮発性メモリにロードすることとを行わせる、１つまたは複数の読み出しコマンドに変換して、前記第１のレジスタが、前記プログラミングデータの少なくとも一部を同時に保持することができ、前記第２の要求に関連する前記読み出しデータを、前記不揮発性メモリデバイスから、前記第１の要求に関連する前記プログラミングデータを不揮発性メモリセルの前記アレイにプログラムする前に、読み出すことができるようにすることと、
を備え、
不揮発性メモリセルの前記第１のレジスタ、前記第２のレジスタ、及び前記第３のレジスタが、前記コントローラから、インターフェースによって分離されている、
前記方法。
【請求項１７】
前記方法が、前記不揮発性メモリデバイスからの前記プログラミングデータの少なくとも一部にアクセスするための第３の要求を、前記アレイ内に記憶されていない、前記第１のレジスタ内に保持されている前記プログラミングデータのデータが、前記不揮発性メモリデバイスから取り出されるようにする、１つまたは複数のロード中に読み出しコマンドに変換することをさらに備える、請求項１６に記載の方法。
【請求項１８】
前記方法が、データを、前記不揮発性メモリの前記アレイにプログラムするための別の要求を、プログラミングデータの１セグメントが、前記不揮発性メモリデバイスの前記第１のレジスタの揮発性メモリにロードされるようにする、１つまたは複数の他のプログラミングコマンドに変換して、プログラミングデータの前記１セグメントを、前記アレイに、前記第１の要求に関連する前記プログラミングデータと共に、シングルページプログラム操作で、プログラムすることができるようにすることをさらに備える、請求項１６から１７のいずれか一項に記載の方法。
【国際調査報告】
2016536732.tif 000020
2016536732.tif 000021