(57)【要約】  フラッシュメモリデバイス内のＳＬＣ−ＭＬＣ消耗バランシング方法およびシステムを開示する。フラッシュメモリデバイスは、シングルレベルセル（ＳＬＣ）部分（１００２）とマルチレベルセル（ＭＬＣ）部分（１００４）とを含む。ＳＬＣ部分およびＭＬＣ部分の経年数は異なる場合があり、潜在的に、一方の部分が他方の前に消耗し尽くす結果を招く。これを回避するために、コントローラが、ＳＬＣ部分およびＭＬＣ部分の一方または双方からの経年数インジケータを受け取り、経年数インジケータに基づき、ＳＬＣ部分および／またはＭＬＣ部分の操作を変更するべきかどうかを決定し、操作を変更すると決定したことに応答して、ＳＬＣ部分またはＭＬＣ部分の少なくとも一方の操作を変更するように構成される。操作の変更はかくしてＳＬＣ部分とＭＬＣ部分との間の消耗をバランスさせてよく、それにより、フラッシュメモリデバイスの寿命を潜在的に延ばす。
2015503798.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュ記憶デバイス内のシングルレベルセル（ＳＬＣ）部分およびマルチレベルセル（ＭＬＣ）部分の使用を管理する方法であって、
コントローラと、前記コントローラと通信し、前記ＳＬＣ部分および前記ＭＬＣ部分を含むメモリとを有する前記フラッシュ記憶デバイスにおいて、
前記フラッシュ記憶デバイスについての経年数インジケータにアクセスするステップと、
前記経年数インジケータに基づき、前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定するステップと、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更すると決定したことに応答して、前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記フラッシュ記憶デバイスについての経年数インジケータが、前記ＳＬＣ部分または前記ＭＬＣ部分の一部または全てについての経年数インジケータを含む方法。
【請求項３】
請求項１記載の方法において、
前記フラッシュ記憶デバイスについての経年数インジケータにアクセスするステップが、
前記ＳＬＣ部分の少なくとも一部の経年数を指示するＳＬＣ経年数インジケータにアクセスすることと、
前記ＭＬＣ部分の少なくとも一部の経年数を指示するＭＬＣ経年数インジケータにアクセスすることと、を含み、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定するステップが、前記ＳＬＣ経年数インジケータおよび前記ＭＬＣ経年数インジケータの双方に基づく方法。
【請求項４】
請求項１記載の方法において、
前記経年数インジケータが、
個々のまたは区分（論理またはＳＬＣ／ＭＬＣ）毎の平均の、Ｐ／Ｅブロックカウント、
残存総ブロック数、
残存予備数／故障ブロック数、
ＥＣＣベースのビット誤り率（ＢＥＲ）、
プログラム／消去時間、
ＣＶＤ、状態変化レベルのうちの１つ以上を含む方法。
【請求項５】
請求項１記載の方法において、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定するステップが、
前記経年数インジケータを、ＭＬＣ消耗に対する好ましいＳＬＣ消耗を指示するデータ構成体と比較することと、
前記比較に基づき操作を変更すると決定することと、
を含む方法。
【請求項６】
請求項５記載の方法において、
前記ＭＬＣ消耗に対する好ましいＳＬＣ消耗を指示するデータ構成体が、前記フラッシュ記憶デバイスの寿命末期において、前記ＳＬＣ部分および前記ＭＬＣ部分が最大数のＰ／Ｅサイクルに達するように消耗を指示するデータを含む方法。
【請求項７】
請求項１記載の方法において、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作は、パラメータに基づき、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するステップが、前記パラメータの値を変化させることを含む方法。
【請求項８】
請求項７記載の方法において、
前記パラメータが、前記ＳＬＣ部分から前記ＭＬＣ部分へのコールドデータ追い出しのためのしきい値を含む方法。
【請求項９】
請求項７記載の方法において、
前記パラメータが、ホストデータを前記ＭＬＣ部分内に書き込むべきか、それとも前記ＳＬＣ部分内に書き込むべきかを決定するための１つ以上のしきい値を含む方法。
【請求項１０】
請求項１記載の方法において、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作は、複数のパラメータに基づき、
前記方法は、変更するべき複数のパラメータのうちの１つ以上を決定するステップをさらに含み、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するステップが、前記決定された１つ以上の複数のパラメータを変更することを含む方法。
【請求項１１】
請求項１０記載の方法において、
前記フラッシュ記憶デバイスについての経年数インジケータが、前記ＳＬＣ部分または前記ＭＬＣ部分の一部または全てについての経年数インジケータを含み、
前記変更するべき複数のパラメータのうちの１つ以上を決定するステップが、前記ＳＬＣ経年数インジケータおよび前記ＭＬＣ経年数インジケータに基づく方法。
【請求項１２】
請求項１０記載の方法において、
前記決定された１つ以上の複数のパラメータのために１つ以上の値を選択するステップをさらに含み、
前記決定された１つ以上の複数のパラメータを変更することが、前記決定された１つ以上の複数のパラメータを変更するために、前記選択された１つ以上の値を用いることを含む方法。
【請求項１３】
記憶デバイスであって、
シングルレベルセル（ＳＬＣ）部分およびマルチレベルセル（ＭＬＣ）部分を含むメモリと、
前記メモリと通信するコントローラであって、
前記フラッシュ記憶デバイスについての経年数インジケータにアクセスし、
前記経年数インジケータに基づき、前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定し、かつ
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更すると決定したことに応答して、前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するように構成される、コントローラと、
を備える記憶デバイス。
【請求項１４】
請求項１３記載の記憶デバイスにおいて、
前記フラッシュ記憶デバイスについての経年数インジケータが、前記ＳＬＣ部分または前記ＭＬＣ部分の一部または全てについての経年数インジケータを含む記憶デバイス。
【請求項１５】
請求項１３記載の記憶デバイスにおいて、
前記コントローラが、
前記ＳＬＣ部分の少なくとも一部の経年数を指示するＳＬＣ経年数インジケータにアクセスし、かつ前記ＭＬＣ部分の少なくとも一部の経年数を指示するＭＬＣ経年数インジケータにアクセスすることによって、前記フラッシュ記憶デバイスについての経年数インジケータにアクセスするように構成され、
前記ＳＬＣ経年数インジケータおよび前記ＭＬＣ経年数インジケータの双方に基づき前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定するように構成される記憶デバイス。
【請求項１６】
請求項１３記載の記憶デバイスにおいて、
前記経年数インジケータが、
個々のまたは区分（論理またはＳＬＣ／ＭＬＣ）毎の平均の、Ｐ／Ｅブロックカウント、
残存総ブロック数、
残存予備数／故障ブロック数、
ＥＣＣベースのビット誤り率（ＢＥＲ）、
プログラム／消去時間、
ＣＶＤ、状態変化レベルのうちの１つ以上を含む記憶デバイス。
【請求項１７】
請求項１３記載の記憶デバイスにおいて、
前記コントローラが、前記経年数インジケータに基づき、前記経年数インジケータをＭＬＣ消耗に対する好ましいＳＬＣ消耗を指示するデータ構成体と比較し、かつ前記比較に基づき操作を変更すると決定したことによって、前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定するように構成される記憶デバイス。
【請求項１８】
請求項１７記載の記憶デバイスにおいて、
前記ＭＬＣ消耗に対する好ましいＳＬＣ消耗を指示するデータ構成体が、前記記憶デバイスの寿命末期において、前記ＳＬＣ部分および前記ＭＬＣ部分が最大数のＰ／Ｅサイクルに達するように消耗を指示するデータを含む記憶デバイス。
【請求項１９】
請求項１３記載の記憶デバイスにおいて、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作は、パラメータに基づき、
前記コントローラが、前記パラメータの値を変化させることによって前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するように構成される記憶デバイス。
【請求項２０】
請求項１９記載の記憶デバイスにおいて、
前記パラメータが、前記ＳＬＣ部分から前記ＭＬＣ部分へのコールドデータ追い出しのためのしきい値を含む記憶デバイス。
【請求項２１】
請求項１９記載の記憶デバイスにおいて、
前記パラメータが、ホストデータを前記ＭＬＣ部分内に書き込むべきか、それとも前記ＳＬＣ部分内に書き込むべきかを決定するための１つ以上のしきい値を含む記憶デバイス。
【請求項２２】
請求項１３記載の記憶デバイスにおいて、
前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作は、複数のパラメータに基づき、
前記コントローラが、
変更するべき複数のパラメータのうちの１つ以上を決定するように構成され、
前記決定された１つ以上の複数のパラメータを変更することによって前記ＳＬＣ部分または前記ＭＬＣ部分の少なくとも一方の操作を変更するように構成される記憶デバイス。
【請求項２３】
請求項２２記載の記憶デバイスにおいて、
前記フラッシュ記憶デバイスについての経年数インジケータが、前記ＳＬＣ部分または前記ＭＬＣ部分の一部または全てについての経年数インジケータを含み、
前記コントローラが、変更するべき複数のパラメータのうちの１つ以上を、前記ＳＬＣ経年数インジケータおよび前記ＭＬＣ経年数インジケータに基づいて決定するように構成される記憶デバイス。
【請求項２４】
請求項２２記載の記憶デバイスにおいて、
前記コントローラが、
１つ以上の複数のパラメータを決定するために１つ以上の値を選択するように構成され、
前記決定された１つ以上の複数のパラメータを変更するように構成され、前記決定された１つ以上の複数のパラメータを変更するために、前記選択された１つ以上の値を用いることを含む記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してメモリシステムにおけるデータの管理に関する。より詳細には、本発明は、シングルレベルセルメモリとマルチレベルセルメモリとの間の消耗のバランシングに関する。
【０００２】
関連出願への相互参照
本願は、その全体が本願明細書において参照により援用されている、２０１１年１２月２９日に出願された米国特許出願第１３／３４０，４４６号（特許文献１）に対する優先権を主張する。
【背景技術】
【０００３】
フラッシュメモリデバイスなどの不揮発性メモリシステムは、消費者製品に使用するために広く採用されている。フラッシュメモリデバイスは種々の形態のものがあってよく、例えば、ホストデバイス間で持ち運びができるポータブルメモリカードの形態のもの、またはホストデバイス内に組み込まれるソリッドステートディスク（ＳＳＤ）としてのものがあってよい。従来のフラッシュメモリデバイスにデータを書き込む場合には、ホストは通例、メモリシステムの論理アドレス空間内のアドレスにデータを書き込んだり、データを読み出したりする。
【０００４】
フラッシュメモリデバイスはフローティングゲートメモリセルのアレイを含む。メモリセルは、各電荷蓄積素子または領域内に２つを超える検出可能なレベルの電荷を蓄積し、それにより、各々の内部に１つを超えるビットのデータを格納するように操作されてもよい。この構成はマルチレベルセル（ＭＬＣ）メモリと呼ばれる。代替的に、メモリセルは、各セル内に単一のビットのデータを格納するように、２つのレベルの電荷を蓄積するように操作されてもよい。これは通例、バイナリまたはシングルレベルセル（ＳＬＣ）メモリと呼ばれる。
【０００５】
ＳＬＣおよびＭＬＣ型のメモリセルの双方がメモリデバイスで用いられてもよく、それにより、メモリデバイスはＳＬＣ部分およびＭＬＣ部分を含んでもよい。理想的には、ＳＬＣ部分およびＭＬＣ部分は同時に消耗し尽くすことになる。しかし、時として、ＳＬＣ部分は、ＭＬＣ部分とは異なる時に消耗し尽くす。これを是正するために、ＭＬＣ部分内のセルは、ＳＬＣ部分の一部となるように再割り当てすることができ、これにより、ＳＬＣ部分およびＭＬＣ部分の異なる消耗時間を相殺することができる。しかし、ＳＬＣ部分内のセルをＭＬＣ部分の一部となるように再割り当てすることは困難となり得る。このように、ＳＬＣ部分およびＭＬＣ部分の消耗をバランスさせることは困難である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願第１３／３４０，４４６号
【特許文献２】米国仮特許出願第６１／４８７，２３４号
【特許文献３】米国公開特許出願第２０１１−０１５３９１２号
【発明の概要】
【０００７】
本願明細書には、フラッシュメモリデバイス内のＳＬＣ部分とＭＬＣ部分との間の消耗をバランスさせる方法およびシステムが開示されている。
一態様によれば、フラッシュ記憶デバイス内のＳＬＣ部分およびＭＬＣ部分の使用を管理する方法が開示される。この方法は、コントローラと、このコントローラと通信し、ＳＬＣ部分およびＭＬＣ部分を含むメモリとを有するフラッシュ記憶デバイスにおいて、このフラッシュ記憶デバイスについての経年数インジケータにアクセスすることと、経年数インジケータに基づき、ＳＬＣ部分またはＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定することと、ＳＬＣ部分またはＭＬＣ部分の少なくとも一方の操作を変更すると決定したことに応答して、ＳＬＣ部分またはＭＬＣ部分の少なくとも一方の操作を変更することと、を含む。経年数インジケータは、フラッシュメモリデバイス内のそれぞれの部分の暦上の経年数、消耗、信頼性、または同様のものの指示を含んでもよい。システムコントローラは、種々のパラメータおよび規則を用いてＳＬＣ部分およびＭＬＣ部分内の操作を制御する。経年数インジケータ（単数または複数）に基づき、システムコントローラは、ＳＬＣ部分および／またはＭＬＣ部分の操作を制御するパラメータおよび／または規則を変更してもよく、それにより、ＳＬＣ部分および／またはＭＬＣ部分の経年化を変更する。
【０００８】
第２の態様によれば、記憶デバイスが開示される。記憶デバイスはメモリとコントローラとを備える。メモリはＳＬＣ部分およびＭＬＣ部分を含む。コントローラはメモリと通信し、フラッシュ記憶デバイスについての経年数インジケータにアクセスし、経年数インジケータに基づき、ＳＬＣ部分またはＭＬＣ部分の少なくとも一方の操作を変更するべきかどうかを決定し、かつＳＬＣ部分またはＭＬＣ部分の少なくとも一方の操作を変更すると決定したことに応答して、ＳＬＣ部分またはＭＬＣ部分の少なくとも一方の操作を変更するように構成される。
【０００９】
添付の図面、詳細な説明および特許請求の範囲を考慮すれば、その他の特徴および利点が明らかになるはずである。加えて、その他の実施形態も開示され、これら実施形態は各々、単独で、または互いに組み合わせて用いることができる。添付の図面を参照して、これら実施形態を説明する。
【図面の簡単な説明】
【００１０】
【図１】複数のダイを包含するマルチバンク不揮発性メモリを有するメモリシステムに接続されたホストを示す図である。
【図２】図１の複数のダイの不揮発性メモリに使用するためのフラッシュメモリシステムコントローラの例のブロック図の例である。
【図３】図１に示される不揮発性メモリバンクの１つとして好適な一フラッシュメモリバンクの例の図である。
【図４】図３のメモリバンクにおいて用いられてもよいメモリセルアレイの代表的な回路図である。
【図５】図３のメモリバンクの物理メモリ編成の例を示す図である。
【図６】図５の物理メモリの一部分の拡大図を示す。
【図７】ＳＬＣ部分およびＭＬＣ部分を含む物理メモリアーキテクチャの例を示す図である。
【図８】２層データ格納システム内のＳＬＣ部分とＭＬＣ部分との間のデータ経路を概略的に示す図である。
【図９】図８に示されるＳＬＣ層をより詳細に示す図である。
【図１０】ＳＬＣ部分およびＭＬＣ部分にわたってブロックおよびページを管理するためのシステムアーキテクチャを示す図である。
【図１１】ＳＬＣ−ＭＬＣ消耗バランシングのフローチャートを示す。
【図１２】ＳＬＣ−ＭＬＣ消耗バランシングの別のフローチャートを示す。
【発明を実施するための形態】
【００１１】
図１〜１０には、本発明の態様を実装するために使用するのに好適なフラッシュメモリデバイスが示されている。図１のホストシステム１００は、メモリデバイス１０２にデータを格納し、そこからデータを取り出す。メモリデバイスは、パーソナルコンピュータ内に設置されたソリッドステートディスク（ＳＳＤ）ドライブなどの形態の、ホスト内に組み込まれたフラッシュメモリであってもよい。代替的に、メモリデバイス１０２は、図１に示されているような機械的および電気的なコネクタの嵌合部品１０４および１０６を通じてホストに取り外し可能に接続されるカードの形態のものであってもよい。内部または組み込みＳＳＤドライブとして使用するように構成されるフラッシュメモリは、図１の概略図と似ていてもよいが、主な相違は、メモリデバイス１０２の位置がホストの内部にあることである。ＳＳＤドライブは、回転磁気ディスクドライブの当座の代替である個別のモジュールの形態のものであってもよい。
【００１２】
図１のホストシステム１００は、メモリデバイス１０２に関する限りにおいて、回路機構およびソフトウェアの組み合わせで構成された２つの主要部品を有すると見なされてよい。それらは、アプリケーション部分１０８、およびメモリデバイス１０２とインターフェイスをとるドライバ部分１１０である。パーソナルコンピュータでは、例えば、アプリケーション部分１０８は、文書処理、グラフィックス、制御またはその他の一般のアプリケーションソフトウェアを走らせるプロセッサ１１２、ならびにホストシステム１００上のデータを管理するためのファイルシステム１１４を含み得る。カメラ、携帯電話、または単一の機能のセットの遂行を専ら主たる目的としたその他のホストシステムでは、アプリケーション部分１０８は、写真を撮影したり、格納するためにカメラを動作させ、電話をかけたり、受けたりするために携帯電話を動作させるなどを行うソフトウェアを含む。
【００１３】
図１のメモリデバイス１０２は、フラッシュメモリ１１６などの不揮発性メモリと、データを前後に渡すためにメモリデバイス１０２が接続されたホストシステム１００とインターフェイスもとり、メモリ１１６も制御するシステムコントローラ１１８とを含んでもよい。システムコントローラ１１８は、マイクロコントローラ、プロセッサ、または本願明細書に記載されている機能性および論理（図１１〜１２に記載されている論理など）を実施するための任意のその他の種類のデバイスを含んでよい。システムコントローラ１１８は、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理アレイ、論理デジタル回路、またはその他の現在知られているかもしくは将来開発される論理処理機能などの、単一の集積回路チップ上に実装されてもよい。
【００１４】
システムコントローラ１１８は、ホストシステム１００によって用いられるデータの論理アドレスとデータプログラミングおよび読み出し中のフラッシュメモリ１１６の物理アドレスとの間の変換を行ってもよい。フラッシュメモリ１１６は任意の数のメモリダイ１２０を含んでよく、図１には、２つのメモリダイが単なる実例として示されている。機能的には、システムコントローラ１１８は、ホストシステム１００とインターフェイスをとるフロントエンド１２２、ガーベッジコレクションなどの内部メモリ管理操作のためのメモリ１１６の操作を調整するためのコントローラファームウェア１２４、およびシステムコントローラ１１８とフラッシュメモリ１１６との間の通信インターフェイスを提供するための１つ以上のフラッシュインターフェイスモジュール（ＦＩＭ）１２６を含んでよい。
【００１５】
システムコントローラ１１８のプロセッサ２０６は、フラッシュメモリ１１６内のそれぞれのバンク１２０の各々のためのＩ／Ｏポートを有するメモリインターフェイス２０４を介してそれぞれのメモリバンク１２０の各々と別々に通信する能力を有するマルチスレッドプロセッサとして構成されてもよい。システムコントローラ１１８は内部クロック２１８を含んでもよい。プロセッサ２０６は、内部データバス２０２を介して誤り訂正符号（ＥＣＣ）モジュール２１４、ＲＡＭバッファ２１２、ホストインターフェイス２１６、およびブートコードＲＯＭ２１０と通信する。
【００１６】
フラッシュメモリ１１６内の各ダイ１２０は、複数のプレーンに編成されるメモリセルのアレイを包含してもよい。図３は、簡略化するために、このようなプレーン３１０および３１２の２つを示しているが、４つまたは８つのプレーンなどの、より多くのプレーンが代わりに用いられてもよい。代替的に、メモリバンクのメモリセルアレイはプレーンに分割されなくてもよい。しかし、そのように分割される場合には、各プレーンは、互いに独立して動作可能であるそれ自身の列制御回路３１４および３１６を有する。回路３１４および３１６はシステムバス３０２のアドレス部分３０６からそれらのそれぞれのメモリセルアレイのアドレスを受け取り、それらをデコードし、それぞれのビット線３１８および３２０のうちの特定の１つ以上をアドレス指定する。ワード線３２２は、アドレスバス１９上に受け取られたアドレスに応答して行制御回路３２４を通じてアドレス指定される。電源電圧制御回路３２６および３２８も、ｐウェル電圧制御回路３３０および３３２と同様に、それぞれのプレーンに接続される。バンク３００が、単一のメモリセルのアレイを有するメモリチップであり、このようなチップがシステム内に２つ以上存在する場合には、データは、システムバス３０２のデータ部分３０４に接続されたそれぞれのデータ入出力回路３３４および３３６を通じて、プレーン３１０および３１２の内部および外部へ転送される。回路３３４および３３６は、それぞれの列制御回路３１４および３１６を通じてプレーンに接続された線３３８および３４０を通じて、それらのそれぞれのプレーンのメモリセル内へのデータのプログラミングおよびメモリセルからのデータの読み出しの両方を提供する。
【００１７】
システムコントローラ１１８内のプロセッサ２０６は、データのプログラム、データの読み出し、消去、および種々のハウスキーピング事項への対応のために、各バンク１２０内のメモリチップの操作を制御するが、各メモリチップも、このような機能を遂行するためにコントローラ１１８からのコマンドを実行する何らかの制御回路機構を包含する。インターフェイス回路３４２がシステムバス３０２の制御およびステータス部分３０８に接続されている。コントローラ１１８からのコマンドは状態マシン３４４に提供され、次に、状態マシン３４４は、これらのコマンドを実行するために、他の回路の特定の制御を提供する。図３に示されているように、制御線３４６〜３５４が状態マシン３４４をこのような他の回路に接続している。状態マシン３４４からのステータス情報が、バス部分３０８を通じたコントローラ１１８への伝送のために、線３５６を通じてインターフェイス３４２に伝達される。
【００１８】
メモリセルアレイ３１０および３１２のＮＡＮＤアーキテクチャが以下に説明される。ただし、ＮＯＲなどの、その他のアーキテクチャを代わりに用いることもできる。図３のメモリバンク３００のメモリセルアレイ３１０の一部分である図４の回路図によって、ＮＡＮＤアレイの例が示されている。多数のグローバルビット線が設けられているが、説明を簡略化するために、図４には、このような４本の線４０２〜４０８のみが示されている。これらのビット線のうちの１本と基準電位との間には、多くの直列接続されたメモリセルストリング４１０〜４２４が接続されている。メモリセルストリング４１４を代表として用いると、複数の電荷蓄積メモリセル４２６〜４３２がストリングの両端における選択トランジスタ４３４および４３６と直列に接続されている。ストリングの選択トランジスタが導通状態にされると、ストリングはそのビット線と基準電位との間に接続される。次に、そのストリング内の１つのメモリセルが一度にプログラムされるかまたは読み出される。
【００１９】
図４のワード線４３８〜４４４は、メモリセルの多くのストリングの各々の内部の１つのメモリセルの電荷蓄積素子を横切って個々に延び、ゲート４４６および４５０がストリングの各端部における選択トランジスタの状態を制御する。共通ワード線およびコントロールゲート線４３８〜４５０を共有するメモリセルストリングは、まとめて消去されるメモリセルのブロック４５２を形成するように作られている。このセルのブロックは、一度に物理的に消去可能である最小数のセルを包含する。１行のメモリセル（ワード線４３８〜４４４のうちの１本に沿ったもの）が一度にプログラムされる。通例、ＮＡＮＤアレイの行は規定の順序でプログラムされ、この場合には、接地または別の共通電位に接続されたストリングの端部に最も近いワード線４４４に沿った行から始まる。ワード線４４２に沿った行のメモリセルが次にプログラムされ、ブロック４５２全体にわたって以下同様にプログラムされる。ワード線４３８に沿った行が最後にプログラムされる。
【００２０】
第２のブロック４５４は同様のものであり、そのメモリセルのストリングは第１のブロック４５２内のストリングと同じグローバルビット線に接続されているが、異なるワード線およびコントロールゲート線のセットを有する。ワード線およびコントロールゲート線は行制御回路３２４によってそれらの適切な動作電圧へ駆動される。図３のプレーン１および２などの、１つを超えるプレーンがシステム内に存在する場合には、１つのメモリアーキテクチャは、それらの間に延在する共通ワード線を用いる。代替的に、共通ワード線を共有する２つを超えるプレーンが存在し得る。他のメモリアーキテクチャでは、個々のプレーンのワード線は別々に駆動される。
【００２１】
メモリセルは、各セル内に単一のビットのデータが格納されるように、２つのレベルの電荷を蓄積するように操作されてもよい。これは通例、バイナリまたはシングルレベルセル（ＳＬＣ）メモリと呼ばれる。代替的に、メモリセルは、各電荷蓄積素子または領域内に２つを超える検出可能なレベルの電荷を蓄積し、それにより、各々の内部に１つを超えるビットのデータを格納するように操作されてもよい。この後者の構成はマルチレベルセル（ＭＬＣ）メモリと呼ばれる。両方の種類のメモリセルがメモリ内で用いられてもよく、例えば、データをキャッシュするためにはバイナリフラッシュメモリが用いられてもよく、より長期間の格納のためにはＭＬＣメモリが用いられてもよい。メモリセルの電荷蓄積素子は最も一般的には導電性のフローティングゲートであるが、代替的に、非導電性の誘電体電荷トラップ材料であってもよい。
【００２２】
図５は、複数のプレーンの配列を概念的に示し、メモリセルの４つプレーン５０２〜５０８を示している。これらのプレーン５０２〜５０８は単一のダイ上にあってもよく、２つのダイ上にあってもよく（各ダイ上にプレーンのうちの２つ）、または４つの別個のダイ上にあってもよい。無論、１つ、２つ、８つ、１６個またはそれより多数などの、その他の数のプレーンがシステムの各ダイ内に存在してもよい。プレーンは、図５において四角形によって示される、ブロック５１０、５１２、５１４および５１６などの、それぞれのプレーン５０２〜５０８内に配置されるメモリセルのブロックに個々に分割される。各プレーン内には、数十個または数百個のブロックが存在し得る。
【００２３】
前述したように、メモリセルのブロックは消去の単位であり、物理的にまとめて消去可能である最小数のメモリセルである。しかし、並列性を高めるために、ブロックは、より大きなメタブロック単位で操作される。各プレーンの中からの１つのブロックが互いに論理的にリンクされ、メタブロックを形成する。４つのブロック５１０〜５１６は、１つのメタブロック５１８を形成するように示されている。メタブロック内のセルは通例全てまとめて消去される。ブロック５２２〜５２８で構成される第２のメタブロック５２０において示されているように、メタブロックを形成するために使われるブロックはそれらのそれぞれのプレーン内の同じ相対位置に制限される必要はない。メタブロックをプレーンの全てにわたって広げることが通常は好ましいが、高いシステム性能を得るために、メモリデバイスは、異なるプレーン内の１つ、２つまたは３つのブロックのうちのいずれかまたは全てのメタブロックを動的に形成する能力を有して操作され得る。これによって、メタブロックのサイズは、１回のプログラミング操作における格納に利用可能なデータの量により厳密に一致させることが可能になる。
【００２４】
図６に示されているように、個々のブロックは、今度は、操作上の目的のためにメモリセルのページに分割される。ブロック５１０〜５１６の各々のメモリセルは、例えば、各々８つのページＰ０〜Ｐ７に分割される。代替的に、３２個、６４個またはそれよりも多数のメモリセルのページが各ブロック内に存在してもよい。ページは、一度にプログラムされるかまたは読み出される最小量のデータを包含する、ブロック内のデータプログラミングおよび読み出しの単位である。図３のＮＡＮＤアーキテクチャでは、ページはブロック内のワード線に沿ったメモリセルで形成される。しかし、メモリデバイスの操作の並列性を高めるために、２つ以上のブロック内のこのようなページは論理的にリンクされ、メタページになされてもよい。図６には、４つのブロック５１０〜５１６の各々の中からの１つの物理ページで形成されたメタページ６０２が示されている。メタページ６０２は、例えば、４つのブロックの各々の内部にページＰ２を含むが、メタページのページは必ずしもブロックの各々の内部の同じ相対位置を有する必要はない。ダイ内において、メタページはプログラミングの最大単位である。
【００２５】
図７は、物理メモリアーキテクチャの一例を示す。物理メモリアーキテクチャは、その全体が本願明細書において参照により援用されている、米国仮特許出願第６１／４８７，２３４号（特許文献２）で説明されている。メモリセルのアレイ（例えば、図３における３１０、３１２参照）は第１の部分７１０および第２の部分７２０に区分される。第２の部分７２０は、各セルが複数のビットのデータを格納する高密度記憶として構成されるメモリセルを有する。第１の部分７１０は、各セルが、第２の部分のものよりも少数のビットを格納する、より低密度の記憶として構成されるメモリセルを有する。例えば、第１の部分７１０内のメモリセルは、１ビットのデータを各々格納するためのＳＬＣメモリとして構成される。一例として、第２の部分７２０内のメモリセルは、２ビットのデータを各々格納するためのＭＬＣメモリとして構成される。セル毎に１ビットのデータを格納する第１の部分はＤ１とも呼ばれ、セル毎に２ビットのデータを格納する第２の部分はＤ２とも呼ばれることになる。第１の部分７１０は通例、第２の部分のものに比較して、より速い速度、より広い誤差限界およびより高い耐久性を有して動作する。代替的に、第２の部分７２０内のメモリセルは，２を超えるビット（３ビットなど）を各々格納するためのＭＬＣメモリとして構成される。その全体が本願明細書において参照により援用されている、２００９年１２月１８日に出願された米国特許出願第１２／６４２，５８４号（米国公開特許出願第２０１１−０１５３９１２号として公開）（特許文献３）には、Ｄ１（１ビット）部分およびＤ３（３ビット）部分などの、２つの部分に区分されるメモリが開示されている。
【００２６】
図８に関してより詳細に説明するように、ＳＬＣ部分およびＭＬＣ部分は種々の操作のために用いられてよい。ＳＬＣ部分およびＭＬＣ部分の使用はそれぞれの部分を経年化させてよい。部分についての経年数は、それぞれの部分の暦上の経年数、消耗、信頼性、または同様のものとして特徴付けられてもよい。１つのインジケータはプログラム／消去（ｐｒｏｇｒａｍ／ｅｒａｓｅ、Ｐ／Ｅ）サイクルである。通例、ＳＬＣ部分またはＭＬＣ部分内のブロックは消去され、次に、ブロックのセル内にデータを書き込むことによって、プログラムされる。ブロックがＰ／Ｅサイクルを経験する度に、カウンタがインクリメントされてよい。それゆえ、カウンタの数はブロックの経年数の１つのインジケータを提供してもよい。前述したように、ＳＬＣ部分およびＭＬＣ部分の各々は複数のブロックを含んでもよい。Ｐ／Ｅサイクルは、ＳＬＣ部分およびＭＬＣ部分内のブロックの各々について監視されてもよい。代替的に、Ｐ／Ｅサイクルは、ＳＬＣ部分内の単一のブロックおよびＭＬＣ部分内の単一のブロックについて監視されてもよい。消耗の均一化のおかげで、単一のブロックについてのＰ／Ｅサイクルはおそらくそれぞれの部分内の他のブロックについてのＰ／Ｅサイクルであろうと仮定されてもよい。消耗の均一化は、ＳＬＣ部分および／またはＭＬＣ部分内の消去および書き換えがブロック間で均等に分配されるように、データを配置する。このように、それぞれの部分内のブロックは通例、同じ（またはほぼ同じ）数のＰ／Ｅサイクルを有する。
【００２７】
代替的に、Ｐ／Ｅサイクルは、（前述した、メタブロックについてのＰ／Ｅサイクルを監視することなど）ブロックの各論理グループについて監視されてもよい。別の代替として、ＳＬＣ部分およびＭＬＣ部分内のブロックの一部または全てについてのＰ／Ｅサイクルが平均されてもよい。例えば、それぞれの部分内のブロックの各々についてのＰ／Ｅサイクルの平均が、それぞれの部分の経年数インジケータを生成するために用いられてもよい。
【００２８】
その他の経年数のインジケータには、
・総残存ブロック数（ＳＬＣ部分内の故障していないブロック数またはＭＬＣ部分内の故障していないブロック数など）
・残存予備数／故障ブロック数（ＳＬＣ部分内の故障したブロック数またはＭＬＣ部分内の故障したブロック数など）
・ＥＣＣベースのビット誤り率（ＢＥＲ）
・プログラム／消去時間
・ＣＶＤ、状態変化レベルがある。経年数のインジケータは単なる例示を目的としたものにすぎない。その他のインジケータも企図されている。
【００２９】
図８は、２層データ格納システム内のＳＬＣ部分とＭＬＣ部分との間のデータ経路を概略的に示す。第１の層は受信データのためのメイン入力バッファであり、ＭＬＣ部分に比較してより高速／より高耐久性／より高コストのメモリであるＮＡＮＤメモリのＳＬＣ部分上で動作する。第２の層はメインデータアーカイブ記憶であり、より低速／より低耐久性／より低コストのメモリであるＭＬＣ部分上で動作する。
【００３０】
このようなシステムにおける操作例が、図８に以下のように標識されている。
１．ＳＬＣ部分へのホストデータまたは制御データの書き込み
２．部分的に廃止したＳＬＣブロックを再生利用するためのＳＬＣ部分内のデータのコピー（「コンパクション」としても知られている。）
３．長いシーケンシャル書き込みのために通常用いられるＭＬＣ部分へのホストデータの直接書き込み
４．ＳＬＣからＭＬＣ部分へのデータ移動（「折り畳み」としても知られている。）
５．ＭＬＣブロック再生利用のためのＭＬＣ部分内のデータのコピー（「ＭＬＣコンパクション」としても知られている。）
【００３１】
操作は、ＳＬＣ部分およびＭＬＣ部分の使用、ならびにその結果として、それぞれの部分の経年数に影響を与える。以下においてより詳細に説明するように、これらの操作の各々は１つ以上のパラメータによって制御されてもよい。したがって、１つ以上のパラメータの変更はかくして操作を変更してよく、その結果として、ＳＬＣ部分および／またはＭＬＣ部分の経年化、または経年化プロセスの進行を変更し、それにより、ＳＬＣ部分とＭＬＣ部分との間の消耗バランスを変更する。列挙されている操作は単なる例示を目的としたものにすぎない。異なるメモリシステムは、（列挙されている操作の一部または全てならびに／あるいは異なる操作などの）異なる操作を有してもよい。さらに、その他の操作も企図されている。
【００３２】
図９は、図８に示されているＳＬＣ層をより詳細に示す。ＳＬＣ層の典型的な構造は複数のブロックを用い、通常、ブロック再生利用時にコピーされるデータのために、１つの書き込み更新ブロックデータおよび１つの再配置／コンパクションブロックを用いる（または、それらは組み合わせることができる）。前述したように、１つ以上のパラメータがＳＬＣ部分および／またはＭＬＣ部分内の種々の操作を決定づけてもよい。１つのこうした操作は再配置／コンパクションを含み、これは以下の規則によって制御されてもよい。
１．ブロックが、それらをプログラムした順序に従って、チェーン内でリンクされる。
２．プログラミング後、最長時間経過したブロックがＳＬＣ移動／折り畳みブロックとして選択され、このＳＬＣ移動／折り畳みブロックからデータをＭＬＣ書き込みブロックへ移動してもよい／折り畳んでもよい。
３．最も少量の有効データを有するブロックがＳＬＣ再生利用ブロックとして選択され、このＳＬＣ再生利用ブロックから有効データを、チェーンの先頭に接続するＳＬＣ再配置ブロックへ再配置する。
４．データ移動／折り畳みまたはブロック再生利用操作が完了すると、ＳＬＣ移動ブロックまたはＳＬＣ再配置ブロックがＳＬＣ空きブロックリストに追加される。
【００３３】
それに加えて、ＲＡＭまたは第３の種類の不揮発性メモリなどの、より多くの種類のメモリが存在する場合には、２層構造は実際上、２つを超える層になり得る。さらに、各「メモリ」層内には、異なるデータ処理を用い、同じく「層」と呼ばれる複数のサブシステムが存在してもよい。
【００３４】
ＮＡＮＤメモリに基づくシステムは通常、以下の記憶階層を有する。ＳＬＣ区分は、バイナリキャッシュおよびバイナリ更新ブロックを実装するためのＳＬＣブロックを有する。バイナリキャッシュは一部または全てのデータのために用いられる。データは１または８（４ＫＢ）セクタの細かい粒度でバイナリキャッシュ内に格納される。通例、バイナリキャッシュは、ページの小さい不規則な断片をキャッシュするために用いられる。その後、それはバイナリ更新ブロックへ追い出されてよい。
【００３５】
バイナリ更新ブロックはデータの大部分を論理グループの単位にマップする。各論理グループは、ＳＬＣブロックに対応するサイズを有する。したがって、１つのバイナリブロックは、ページが論理アドレス順になっている最大１つの論理グループを格納することができる。この層はクラスタベースのシステムには存在しない。なぜなら、それらのシステムでは、全てのバイナリブロックはバイナリキャッシュとして用いられるからである。
【００３６】
ＭＬＣ区分は、ＳＬＣブロックよりも高密度でデータを格納するためのＭＬＣブロックを有する。通例、データはＭＬＣブロック単位で格納される。それゆえ、例えば、Ｄ１区分（ＳＬＣ内に１データビット）およびＤ３区分（ＭＬＣ内に３データビット）を有するメモリでは、３つのＳＬＣブロックが１つのＭＬＣブロックに折り畳まれる（再配置される）。
【００３７】
バイナリキャッシュからＳＬＣ更新ブロックおよびＭＬＣブロックへのデータの追い出しは、１つ以上の基準（書き込み後、最長時間経過しているといった基準など）に基づいてよい。全てのシステムにおける問題は、データの大部分（バイナリキャッシュ内にある間に更新されるデータを除く）は、まずＳＬＣブロックへ行くことになり、そのため、ＳＬＣブロックはほとんどＦＩＦＯバッファとして機能することである。その後、全てのデータはＭＬＣブロックへ行く。ＳＬＣ部分およびＭＬＣ部分のどちらにおいても、（完全なアドレス指定単位を作るための）パディングのゆえに、またはブロックを圧縮し、廃止した空間を再生利用するために、データは何度もコピーされ得る。ストレスファクタ（書き込み増幅としても知られる）は高く、ＳＬＣ区分およびＭＬＣブロック区分の双方に関連する。ＳＬＣ内のデータはＭＬＣ内にも割り当てられ（二重割り当て）、このせいで、二重バジェット化のためにシステム内の必要なブロック数は増加する。
【００３８】
図１０は、異なるメモリ区分にわたって（例えば、バイナリブロック１００２およびＭＬＣブロック１００４にわたって）ブロックおよびページを管理するためのシステムアーキテクチャを示す。メモリアレイ内のブロックおよびページは、システムコントローラ１１８内のコントローラファームウェア１２４として常駐する、ブロック管理システムによって管理される（図１参照）。ホストデータの量および／またはホストデータの種類によって、ホストデータがＳＬＣ部分内に格納されるのか、それともＭＬＣ部分内に格納されるのか、あるいはホストデータがＳＬＣ部分内のどこに格納されるのかを決定してもよい。特に、データの量によって、ホストデータがバイナリキャッシュ内に格納されるのか（より少量のホストデータの場合）、バイナリブロック内の更新ブロック内に格納されるのか（中程度の量のホストデータの場合）、それともＭＬＣ内に格納されるのか（より大量のシーケンシャルホストデータの場合）を決定してもよい。さらに、後述するように、データの種類（ファイルシステムデータなど）は、ホストデータがバイナリブロック内のどこに格納されるのかを決定してもよい。
【００３９】
バイナリブロック１００２は２つの層に分割されてよい。第１の層は、ホストからのデータを最初に格納し、各論理グループをＳＬＣ部分の第２の層内に再配置する前に論理グループ単位でメタページをステージするためのものである。第１の層は、２つの構造（常駐バイナリゾーンおよびバイナリキャッシュ）を含む。システムコントローラ１１８は、メタページ未満の小さな断片などの所定の量未満のデータをバイナリキャッシュ１００６へ送ってよい。このように、バイナリキャッシュ１００６は、主に、細かいアドレス指定単位（セクタ）を有する短い断片のための記憶であり、ここで、データをＳＬＣブロックまたはＭＬＣブロックへ移動する／追い出すことができる。バイナリキャッシュ１００６は、古いデータをクリーンアップするために定期的に圧縮されることになる（１００８）。バイナリキャッシュ１００６がいっぱいになると、論理グループが追い出し（１０１０）のために選択されることになる。バイナリキャッシュ追い出しの内部ハウスキーピング機能は論理グループを更新ブロック１０１２にコピーし、後述するように、それをＭＬＣ更新ブロック１０１６への折り畳みのためにスケジュールする。常駐バイナリゾーン１０１８は、既知の、短い更新を用いて頻繁に更新されるエリア、あるいは頻繁な更新またはより高速な書き込み性能を必要とするその他の論理領域、典型的には、ＮＴＦＳ、ＦＡＴデータまたはその他のファイルシステムテーブルデータのために確保されている。
【００４０】
第２の層はデータを論理グループ単位でＳＬＣ更新／記憶ブロックのプール内に格納する。このプールへの書き込みは、ホスト書き込みまたはガーベッジコレクションによる書き換えから生じる。ホストデータが主に短い断片のものである場合には、第１の層から第２の層へ追い出される前に、まず第１の層内にキャッシュされてもよい。ホストデータがあまり断片化しておらず（中程度のサイズ）、完全な論理グループが有され得る場合には、第２の層へ直接書き込まれてもよい。
【００４１】
本質的に、第２の層は、断片化され、中程度のサイズのホスト書き込みが行き着く高速なＳＬＣ記憶エリアを提供する。このように、第２の層は、ユーザデータのワーキングセットを高速なＳＬＣ記憶エリア内に維持する。それゆえ、ＳＬＣ更新／記憶ブロックのプールが満たされていくにつれ、ユーザは高性能の書き込みを経験してよい。プールがいっぱいになると、システムコントローラ１１８は、場所を空けるために、いくつかの論理グループをＭＬＣブロック１００４へ移動させてもよい。
【００４２】
図１１は、ＳＬＣ−ＭＬＣ消耗バランシングのフローチャート１１００を示す。１１０２において、システムコントローラ１１８はＳＬＣ部分および／またはＭＬＣ部分についての１つ以上の経年数インジケータにアクセスしてよい。経年数インジケータは、システムコントローラ１１８に関連付けられる不揮発性メモリ（例えば、ＲＡＭバッファ２１２参照）内などの、フラッシュメモリデバイス内の１つ以上の場所に格納されていてよい。前述したように、Ｐ／Ｅサイクル、残存総ブロック数、残存予備数／故障ブロック数、ＥＣＣベースのビット誤り率（ＢＥＲ）、プログラム／消去時間、ＣＶＤ、状態変化レベルを含む種々の経年数インジケータが用いられてよい。
【００４３】
１１０４において、システムコントローラ１１８は、１つ以上の経年数インジケータに基づき、ＳＬＣ部分および／またはＭＬＣ部分の操作を変更するべきかどうか決定する。インジケータは、ＭＬＣ消耗に対するＳＬＣ消耗の好ましい関係または最適の関係のデータ構成体と比較され、その比較に応じて、ＳＬＣ部分および／またはＭＬＣ部分の操作を変更するべきかどうかを決定してよい。
【００４４】
データ構成体は、テーブル、グラフ、または同様のものを含んでもよい。総じて、データ構成体は、メモリデバイスの操作のあらゆる段階におけるＭＬＣ部分とのＳＬＣ部分の消耗の好ましいバランスを指示してよい。例えば、データ構成体は、ＳＬＣブロックおよびＭＬＣブロックの双方が所定の状態（メモリデバイスのための寿命末期において最大数のＰ／Ｅサイクルなど）を達成するように、消耗の最善のバランス曲線を予測してもよい。こうして、メモリデバイスは、改善された耐久性レベルを達成してもよい。データ構成体は、システムコントローラ１１８に関連付けられる不揮発性メモリ（例えば、ＲＡＭバッファ２１２参照）などの、フラッシュメモリデバイス内の１つ以上の場所に同様に格納されていてよい。
【００４５】
一実施形態では、データ構成体は、「消耗バランシング」（以下においてより詳細に説明する）がＳＬＣ部分についての消耗をＭＬＣ部分とバランスさせようと試みるようにするデータを含んでもよい。例えば、ＳＬＣ部分とＭＬＣ部分との間の消耗の好ましい比を指示するデータ構成体は、所定の一定値であってもよい。別の例として、データ構成体が、ＳＬＣ消耗が一方の軸上にあり、ＭＬＣ消耗が他方の軸上にあるグラフである場合には、データ構成体は直線を含んでもよく、それにより、メモリデバイスの操作の全期間中にわたってＳＬＣ部分の消耗をＭＬＣ部分とバランスさせようと試みる。代替の実施形態では、データ構成体は、バランスされないＳＬＣ部分およびＭＬＣ部分についての消耗を含んでもよい。例えば、データ構成体は、どちらかといえば最適消耗駆動を含んでよい、曲線または区分線形関数を含むことができる。曲線は、ブロックの大きなプールから始まり、ブロックの小さなプールで終わるメモリデバイスを説明することができる。特に、デバイスが経年化するにつれてＭＬＣ予備ブロックの数は通例少なくなり、それにより、ＭＬＣ部分のストレスを増大させる。したがって、最適曲線は、メモリデバイスの寿命の開始時において、現在のＳＬＣ対ＭＬＣの消耗の比をバランスさせるために必要とされるよりも多くＳＬＣ部分に過度のストレスを与えることを含んでもよい（これはより優れた性能も提供し得る）。このように、メモリデバイスの初期の動作の最中には、ＭＬＣ部分はより低いストレスにおいて動作し、動作のために余分のマージンを有する。メモリデバイスがその寿命末期（ＥＯＬ）に向かって進むにつれ、ＭＬＣ部分の書き込み増幅が増大すると、ＳＬＣ部分およびＭＬＣ部分のどちらにおける消耗もＥＯＬ点付近に収斂することになる。
【００４６】
前述したように、システムコントローラ１１８はインジケータをデータ構成体と比較する。データ構成体とのインジケータの比較は、いくつかの形態の１つによるのものであってよい。一例として、比較の前に、ＭＬＣインジケータに対するＳＬＣ経年数インジケータの比を作成するなど、インジケータは組み合わせられてもよい。次に、作成された比はデータ構成体と比較されてもよい。特に、データ構成体が所定の比である場合には、ＭＬＣ経年数インジケータに対するＳＬＣ経年数インジケータの比を所定の比と比較し、ＭＬＣ経年数インジケータに対するＳＬＣ経年数インジケータの比の所定の比からのずれの量を判定してもよい。代替的に、１つのインジケータがデータ構成体へ入力されてもよく、次に、データ構成体は他のインジケータの好ましい値を出力してもよい。例えば、ＳＬＣ経年数インジケータがデータ構成体へ入力されてもよく、次にデータ構成体は好ましいＭＬＣ経年数インジケータを出力してもよい。好ましい経年数インジケータは、データ構成体へ入力されたＳＬＣ経年数インジケータに対するＭＬＣ部分の理想的な経年数を表す。次に、両者の差を判定するために、好ましいＭＬＣ経年数インジケータは実際のＭＬＣ経年数インジケータと比較されてもよい。経年数インジケータに対するデータ構成体の比較の例は、単なる例示を目的としたものである。その他の比較も企図されている。
【００４７】
前述したように、システムコントローラ１１８は、比較に応じてＳＬＣ部分および／またはＭＬＣ部分の操作を変更すると決定してもよい。システムコントローラ１１８は、メモリデバイスによって遂行される、ＳＬＣ部分のみに影響を与える操作を変更してもよく（およびかくしてＳＬＣ部分の消耗を変更してもよく）、メモリデバイスによって遂行される、ＭＬＣ部分のみに影響を与える操作を変更してもよく（およびかくしてＭＬＣ部分の消耗を変更してもよく）、あるいはメモリデバイスによって遂行される、ＳＬＣ部分およびＭＬＣ部分の双方に影響を与える操作を変更してもよい（およびかくしてＳＬＣ部分およびＭＬＣ部分の双方の消耗を変更してもよい）。操作の変更は部分の一方または双方の性能にも同様に影響を与え得る。
【００４８】
特に、操作の変更はメモリデバイスの性能にマイナスの影響を与える場合がある。例えば、以下においてより詳細に説明するように、システムコントローラは、データをＳＬＣ部分からＭＬＣ部分へ早期に折り畳み、それにより、ＳＬＣ部分内のコンパクションの量を低減する（およびＳＬＣ部分内の消耗を低減する）と決定してもよい。しかし、変更はシステム性能を低下させてしまう場合がある。
【００４９】
例えば、システムコントローラ１１８は、好ましいＳＬＣ−ＭＬＣ消耗バランスと実際のＳＬＣ−ＭＬＣ消耗バランスとの判定された差に基づき、操作を変更するべきかどうかを決定してもよい。ＭＬＣ経年数インジケータに対するＳＬＣ経年数インジケータの比を所定の比と比較し、ＭＬＣ経年数インジケータに対するＳＬＣ経年数インジケータの比の所定の比からのずれの量を判定する前述した例では、ずれの量は所定のしきい値と比較されてもよい。ずれの量が所定のしきい値よりも大きい場合には、以下においてより詳細に説明するように、システムコントローラ１１８がＳＬＣ部分および／またはＭＬＣ部分の操作を変更してもよい。このように、変更は、消耗バランスが好ましい消耗バランスにより近づくように、ＳＬＣ部分とＭＬＣ部分との間の消耗バランスを変化させてもよい。好ましいＭＬＣ経年数インジケータを実際のＭＬＣ経年数インジケータと比較し、両者の差を判定する前述した例では、差は所定の量と比較されてもよい。差が所定の量よりも大きい場合には、システムコントローラ１１８がＳＬＣ部分および／またはＭＬＣ部分の操作を変更してもよい。
【００５０】
システムコントローラ１１８がＳＬＣ部分および／またはＭＬＣ部分の操作を変更すると決定した場合には、システムコントローラ１１８は１つ以上のパラメータを変更してもよい。システムコントローラ１１８は、いくつかの方法の１つで１つ以上のパラメータのうちのどれを変更するべきかを決定してもよい。一実施形態では、システムコントローラ１１８は、変更するべき１つの所定のパラメータ（または所定のパラメータのセット）を有する。例えば、コントローラファームウェア１２４はその内部に、変更するべきパラメータ（単数または複数）を格納していてもよい。代替の実施形態では、システムコントローラは、図１２に関してより詳細に説明するように、どのパラメータ（単数または複数）を変更するべきであるかを動的に決定してもよい。パラメータの値は、システムコントローラ１１８に関連付けられる不揮発性メモリ（例えば、ＲＡＭバッファ２１２参照）などの、フラッシュメモリデバイス内の１つ以上の場所に格納されていてもよい。同様に、変更されたパラメータの値は、システムコントローラ１１８に関連付けられる不揮発性メモリ内に格納されてもよい。その後、変更されたパラメータの値は、ＳＬＣ部分および／またはＭＬＣ部分内の将来の操作を制御するために用いられてよい。
【００５１】
１１０６において、システムコントローラ１１８は、ＳＬＣ部分および／またはＭＬＣ部分のための前述した操作に影響を与えるパラメータ（単数または複数）を変更してよい。その後、システムコントローラ１１８は１１０２へ戻り、反復してもよい。さらに、パラメータの変更後、システムコントローラ１１８は、ＳＬＣ部分およびＭＬＣ部分の操作を制御するパラメータにアクセスし、パラメータに基づき、部分の操作を制御してよい。一例として、システムコントローラ１１８は、図３に関して前述したように、ＳＬＣ部分およびＭＬＣ部分の操作を実施するために、メモリダイ（単数または複数）１２０上の種々の操作を制御するコマンドを発行してもよい。一例として、システムコントローラ１１８は、しきい値を増加または減少させるか、あるいは操作を遂行するための規則を変えるなど、操作を遂行するためのしきい値または規則を変更してもよい。しきい値または規則を変更した効果として、システムコントローラは、メモリダイ（単数または複数）１２０上のＳＬＣ部分およびＭＬＣ部分の操作に影響を与える異なるコマンドをメモリダイ（単数または複数）１２０へ発行してもよい。
【００５２】
しきい値の変更の一例は、常駐バイナリゾーン１０１８、バイナリキャッシュ１００６、バイナリブロック内の更新ブロック、およびＭＬＣブロック内の更新ブロック１０１６に書き込むためのしきい値などの、ホストデータをどこに書き込むべきかを決定するためのしきい値である。特に、システムコントローラ１１８は、図１０に示されているように、「短い書き込み」、「中程度の書き込み」または「長いシーケンシャル書き込み」を定義するしきい値を変更してもよい。このように、システムコントローラ１１８は、ＭＬＣ部分への長いシーケンシャル書き込みの直接書き込みへの切り替えを管理する無制限書き込みおよびシーケンシャルバイパス／直接ＭＬＣ書き込みしきい値を変更してもよい。
【００５３】
別の例は、ＭＬＣ部分上の消耗対ＳＬＣ部分上の消耗に基づき、コールドデータ追い出ししきい値を変更することである。ＳＬＣ部分が所望よりも多く消耗されつつある場合には、コールドデータ追い出ししきい値は、より多くのコールドデータがＭＬＣ部分へより早く追い出されるように変更されてもよく、それにより、ＳＬＣ部分上の消耗を低減し、ＭＬＣ部分上の消耗を増大させる。同様に、ＭＬＣ部分が所望よりも多く消耗されつつある場合には、このとき、ＳＬＣ部分内に維持されるコールドデータの量を増加するようにコールドデータ追い出ししきい値を変更してもよく、それにより、ＳＬＣ部分に対する消耗を増大させ、ＭＬＣ部分に対する消耗を低減する。
【００５４】
さらに別の例は、システムコントローラ１１８が自由に使えるブロックの数である、バイナリワーキングセット満杯しきい値を変更することである。ブロックの数は調整可能であり、それにより、それぞれの部分の操作に影響を与える。同様に、折り畳み操作をトリガするためのしきい値（図１０参照）が、ＳＬＣ部分およびＭＬＣ部分の使用に影響を与えるように調整されてもよい。
【００５５】
システムコントローラ１１８を変更するさらに他の例として、
・ホット／コールドデータソーティング、および／またはホット／コールドデータとコンパクションストリームとの間のデータフローを管理するしきい値および／または規則、
・ホット／コールドデータソーティング、および／または常駐バイナリゾーン１０１８へ／からのデータフローを管理するためのしきい値および／または規則、
・バイナリキャッシュと更新ブロックとの間でデータフローを分配するバイナリキャッシュ書き込みしきい値、
・バイナリキャッシュ追い出ししきい値、
・ＢＣサイズ対ＵＢ／ＢＷＳプールサイズ、
・バイナリキャッシュの、ＭＬＣへの追い出し対ＳＬＣへの追い出し、ならびに
・アイドル時間プリエンプティブガーベッジコレクション操作の深さがある。
変更するべき例は単なる例示を目的としたものである。ＳＬＣ部分および／またはＭＬＣ部分の操作を変更するその他の方法も企図されている。
【００５６】
図１２は、ＳＬＣ−ＭＬＣ消耗バランシングの別のフローチャート１２００を示す。１２０２において、システムコントローラ１１８は、ＳＬＣ部分についての経年数インジケータおよびＭＬＣ部分についての経年数インジケータの双方にアクセスする。１２０４において、システムコントローラ１１８は、ＳＬＣ部分およびＭＬＣ部分についての経年数インジケータ、ならびにＳＬＣ部分とＭＬＣ部分との間の理想的消耗バランスのデータ構成体を用い、ＳＬＣ部分および／またはＭＬＣ部分の操作を変更するべきかどうかを決定する。前述したように、インジケータは、ＭＬＣ消耗に対するＳＬＣ消耗の好ましい関係または最適の関係のデータ構成体と比較され、その比較に応じて、ＳＬＣ部分および／またはＭＬＣ部分の操作を変更すると決定してもよい。
【００５７】
ＳＬＣ部分および／またはＭＬＣ部分の操作を変更すると決定された場合には、１２０６において、システムコントローラ１１８は、変更するべき１つ以上のパラメータを選択する。前述したように、特定のメモリデバイスは、ＳＬＣ部分および／またはＭＬＣ部分のために遂行される操作を有する。操作はパラメータによって制御されてよい。システムコントローラ１１８は、変化させるべき１つ以上のパラメータを選択してよい。変更するべき１つ以上のパラメータの選択は、ＳＬＣ部分および／またはＭＬＣ部分の経年数インジケータとは無関係であるなど、静的であってもよい。例えば、システムコントローラ１１８が操作を変更すると決定した後、システムコントローラ１１８は、前述したように、変更されるべく前もってプログラムされている１つ以上のパラメータにアクセスしてもよい。代替的に、変更するべき１つ以上のパラメータの選択は動的であってもよい。例えば、変更するべき１つ以上のパラメータの選択は、ＳＬＣ部分および／またはＭＬＣ部分の経年数インジケータに基づいてもよい。
【００５８】
１２０８において、次に、システムコントローラ１１８は、選択された１つ以上のパラメータをどのように変更するのかを決定する。選択された１つ以上のパラメータの各々は、それに関連付けられるさまざまな潜在的変更を有していてよい。選択されたパラメータをどのように変更するのかについての決定は、現在のＳＬＣ−ＭＬＣ消耗バランス、または現在のＳＬＣ−ＭＬＣ消耗バランスの理想的ＳＬＣ−ＭＬＣ消耗バランスからのずれなどの１つ以上の因子に基づいてよい。１２１０において、システムコントローラ１１８は、選択されたパラメータの決定された変更を用いてＳＬＣ部分および／またはＭＬＣ部分の操作を変更する。
【００５９】
したがって、このような方法およびシステムは、ハードウェア、ソフトウェア、あるいはハードウェアおよびソフトウェアの組み合わせの形で実現されてもよい。このような方法およびシステムは、少なくとも１つの電子デバイスにおける集中式の方法で実現されてもよく（図１におけるフラッシュメモリデバイス１０２に示されているものなど）、またはいくつかの相互接続されたコンピュータシステムにわたって異なる要素が分布した分散式の方法で実現されてもよい。本願明細書に記載した方法を実行するように適合された任意の種類のコンピュータシステムまたはその他の装置が適する。ハードウェアおよびソフトウェアの典型的な組み合わせは、コンピュータプログラムを有する汎用コンピュータシステムであってもよく、コンピュータプログラムは、ロードされ、実行されると、コンピュータシステムを制御し、それにより、本願明細書に記載した方法を実行するようにする。このようにプログラムされたコンピュータは専用コンピュータと見なされてもよい。
【００６０】
このような方法およびシステムは、本願明細書に記載した操作の実施を可能にする全ての特徴を含み、コンピュータシステム内にロードされると、これらの操作を実行することができるコンピュータプログラム製品内に組み込まれてもよい。本願明細書での文脈におけるコンピュータプログラムとは、情報処理機能を有するシステムに特定の機能を直接遂行させるか、あるいはａ）別の言語、コードもしくは表記法への変換、ｂ）異なる材料形態での復元のいずれかまたは両方の後に遂行させるように意図された命令のセットのあらゆる言語、コードまたは表記法によるあらゆる表現を意味する。
【００６１】
前に開示した主題は、限定ではなく、例示と見なされるべきであり、添付の特許請求の範囲は、この開示の真の趣旨および範囲内に入る、全てのこうした変更、拡張、およびその他の実施形態を包括することが意図されている。それゆえ、法律で許されている最大限、本願明細書に記載した実施形態の範囲を、添付の特許請求の範囲およびそれらの等価物の最も広い許容可能な解釈によって決定すべきであり、前述した詳細な説明によって制限または限定されてはならない。種々の実施形態について説明してきたが、さらに多くの実施形態および実施例が前述した詳細な説明の範囲内であり得ることは当業者には明らかである。したがって、これら実施形態は、添付の特許請求の範囲およびそれらの等価物に照らし合わせる以外、限定されてはならない。
【図１】
2015503798.tif 000003
【図２】
2015503798.tif 000004
【図３】
2015503798.tif 000005
【図４】
2015503798.tif 000006
【図５】
2015503798.tif 000007
【図６】
2015503798.tif 000008
【図７】
2015503798.tif 000009
【図８】
2015503798.tif 000010
【図９】
2015503798.tif 000011
【図１０】
2015503798.tif 000012
【図１１】
2015503798.tif 000013
【図１２】
2015503798.tif 000014
【国際調査報告】
2015503798.tif 000015
2015503798.tif 000016