(57)【要約】      （修正有）【課題】フラッシュメモリなどのメモリ内のデータを管理するための装置及び方法を提供する。【解決手段】メモリモジュールは、不揮発性メモリ（ＮＶＭ）と、メモリモジュール電子（ＭＭＥ）回路とを有する。制御部回路は、ＭＭＥ回路に第１のコマンドを伝達して、ＮＶＭの選択されたアドレスに対して選択された行為を実行する。可変遅延時間間隔の後、第２のコマンドは、第１のコマンドに関するステータス要求として制御部回路によってＭＭＥ回路に伝達される。可変遅延時間間隔は、選択されたアドレスについて最初のコマンドに先立って発行されたステータス要求の累積数に基づいて決定される。【選択図】図３
2018200689.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）及び前記ＮＶＭのソリッドステート不揮発性メモリセルにデータをプログラムし、前記ＮＶＭの前記ソリッドステート不揮発性メモリセルから前記データを読み取るように構成されたメモリモジュール電子（ＭＭＥ）回路を備える、メモリモジュールと、
前記ＮＶＭ内の選択されたアドレス及び前記選択されたアドレスに関して前記ＭＭＥ回路によって取られる選択された行為を含む第１のコマンドを前記メモリモジュールに伝達するように適合された制御部回路と、を備え、前記制御部回路が続いて、可変遅延時間間隔の終わりに、前記第１のコマンドの完了に関連するステータス要求を含む第２のコマンドを前記メモリモジュールに伝達するように更に適合され、前記可変遅延時間間隔が、前記第１のコマンドの伝達に先立って発行された、前記選択されたアドレスに関連する以前のコマンドについて前記制御部回路によって前記メモリモジュールに以前に伝達されたステータス要求の累積数に応答して選択される、装置。
【請求項２】
前記ＭＭＥ回路が、コマンド実行間隔にわたって前記第１のコマンドを実行するように構成され、前記ＭＭＥ回路が、前記コマンド実行間隔の終了前に前記第２のコマンドの前記ステータス要求を受信したことに応答して、前記制御部回路に「準備未完了（not ready）」ステータスを伝達するように更に構成され、前記ＭＭＥ回路が、前記コマンド実行間隔の終了後に前記第２のコマンドの前記ステータス要求を受信したことに応答して、前記制御部回路に準備完了（ready）ステータスを伝達するように更に構成されている、請求項１に記載の装置。
【請求項３】
可変遅延時間間隔が、第１の可変遅延時間間隔であり、前記制御部回路が、前記第２のコマンドの前記ステータス要求に応答して、前記ＭＭＥ回路から前記準備未完了ステータスを受信したことに応答して、第２の可変遅延時間間隔の終わりに、前記第１のコマンドの完了に関連する第２のステータス要求を含む第３のコマンドを前記メモリモジュールに伝達するように更に構成されている、請求項２に記載の装置。
【請求項４】
前記第１の可変遅延時間間隔及び前記第２の可変遅延時間間隔が、それぞれ同じ持続時間である、請求項３に記載の装置。
【請求項５】
前記第２の可変遅延時間間隔が、前記第１の可変遅延時間間隔よりも短い持続時間である、請求項３に記載の装置。
【請求項６】
前記制御部回路が、前記複数の異なるアドレスの各々に対するコマンドの伝達と前記コマンドの関連するステータス要求の伝達との間の経過時間の間、前記ＮＶＭ内の複数の異なるアドレスの各々について異なる可変遅延時間間隔を使用する、請求項１に記載の装置。
【請求項７】
前記可変遅延時間間隔が、第１の可変遅延時間間隔であり、前記選択された行為が、読み取り、書き込み又は消去動作のうちの選択された１つであり、前記制御部回路が、前記選択されたアドレスに関連する前記読み取り、書き込み又は消去動作のうちの残りの１つを実行するための第３のコマンドを前記メモリモジュールに伝達することと、前記第３のコマンドのステータスを決定するためにステータス要求を発行することとの間で、異なる第２の可変遅延時間間隔を使用する、請求項１に記載の装置。
【請求項８】
前記制御部回路が、前記選択されたアドレスに関連する前記メモリモジュールに伝達された複数の連続するコマンドについて、初期遅延時間間隔を使用して、前記複数の連続するコマンドの各々に関連する早期ステータス要求のそれぞれの数を累積することと、前記早期ステータス要求の集団分布に応答して前記可変遅延時間間隔に到達するように前記初期遅延時間間隔を調節することと、によって、前記遅延時間間隔を決定し、前記早期ステータス要求の各々が、前記関連するコマンドがまだ完了していないことを示す前記ＭＭＥ回路による指示を含む、請求項１に記載の装置。
【請求項９】
前記ＮＶＭが、複数のダイを含むＮＡＮＤフラッシュメモリアレイを備え、前記選択されたアドレスが、前記複数のダイから選択されたダイを含む、請求項１に記載の装置。
【請求項１０】
ローカルメモリにデータ構造として記憶される遅延テーブルを更に含み、前記遅延テーブルが、前記複数のダイの各々について異なる可変遅延時間間隔を前記制御部回路に提供する、請求項１に記載の装置。
【請求項１１】
前記選択されたアドレスが、少なくともデータの第１ページ及びデータの第２ページを記憶する前記ソリッドステート不揮発性メモリセルの選択されたグループを含むように、前記ＮＶＭの前記ソリッドステート不揮発性メモリセルが複数ビットセルとして構成され、前記可変遅延時間間隔が、前記選択されたアドレスにおけるデータの前記第１のページに関連する第１の可変遅延時間間隔であり、前記制御部回路が、前記選択されたアドレスにおけるデータの前記第２のページに関連する第３のコマンドを発行することと、前記第３のコマンドの完了に関するステータス要求として第４のコマンドを発行することとの間で、異なる第２の可変遅延時間間隔を更に使用する、請求項１に記載の装置。
【請求項１２】
前記第１のコマンドが、前記ＭＭＥ回路によって取られる前記選択された行為を示すマルチビット値としての第１の動作コード部分と、前記ＮＶＭにおける前記選択されたアドレスを識別するマルチビット値としてのアドレス部分とを含み、前記第２のコマンドが、前記第１のコマンドにおける前記第１の動作コード部分の完了に関するステータスを要求するマルチビット値としての第２の動作コード部分を含む、請求項１に記載の装置。
【請求項１３】
前記制御部回路によって前記第１のコマンドと前記第２のコマンドとの間に前記選択されたアドレスに対する介在コマンドが発行されないように、前記第２のコマンドが、前記第１のコマンドの後に前記選択されたアドレスに対して前記制御部回路によって発行された次の即時コマンドである、請求項１に記載の装置。
【請求項１４】
制御部回路からメモリモジュールのメモリモジュール電子（ＭＭＥ）回路に、前記メモリモジュールの不揮発性メモリ（ＮＶＭ）内の選択されたアドレス及び前記アドレスに関連して前記ＭＭＥ回路によって取られる選択された行為を含む第１のコマンドを伝達することと、
前記第１のコマンドの前記伝達に応答して可変遅延時間間隔を開始することと、
前記可変遅延時間間隔の終わりに、前記第１のコマンドの完了に関連するステータス要求を含む第２のコマンドを前記制御部回路から前記ＭＭＥ回路に伝達することと、を含み、前記可変遅延時間間隔が、前記第１のコマンドの前記伝達に先立つ前記選択されたアドレスについて前記制御部回路によって前記メモリモジュールに以前に伝達されたステータス要求の累積数に応答して選択される、方法。
【請求項１５】
前記可変遅延時間間隔が、第１の持続時間を有する第１の間隔であり、前記方法が、前記第２のコマンドの前記ステータス要求に応答した、前記選択された行為が完了していないことを示す前記ＭＭＥからの指示を受信したことに応答して、前記制御部回路によって前記可変遅延時間間隔を長い第２の持続時間を有する第２の間隔に増分させることを更に含む、請求項１４に記載の方法。
【請求項１６】
前記可変遅延時間間隔が、第１の可変遅延時間間隔であり、前記制御部回路が、前記第２のコマンドの前記ステータス要求に応答して、前記ＭＭＥ回路から準備未完了ステータスを受信したことに応答する第２の可変遅延時間間隔の終わりに、前記第１のコマンドの完了に関連する第２のステータス要求を含む第３のコマンドを前記メモリモジュールに伝達するように更に構成されている、請求項１４に記載の方法。
【請求項１７】
前記ＭＭＥ回路によって、コマンド実行間隔にわたって前記第１のコマンドを実行することと、
前記コマンド実行間隔の終了前に、前記第２のコマンドの前記ステータス要求を受信したことに応答して、準備未完了ステータスを前記ＭＭＥ回路によって前記制御部回路に伝達することと、を更に含む、請求項１４に記載の方法。
【請求項１８】
前記ＭＭＥ回路によって、コマンド実行間隔にわたって前記第１のコマンドを実行することと、
前記コマンド実行間隔の前記終了後に、前記第２のコマンドの前記ステータス要求を受信したことに応答して準備完了ステータスを前記ＭＭＥ回路によって前記制御部回路に伝達することと、
前記準備完了ステータスに応答して前記第１のコマンドに関連する第２の選択された行為を取るための第３のコマンドを前記制御部回路によって前記ＭＭＥ回路に伝達することと、を更に含む、請求項１４に記載の方法。
【請求項１９】
初期遅延時間間隔を使用して、前記選択されたアドレスに対する複数の連続コマンドの各々に関連する早期ステータス要求のそれぞれの数を累積することであって、前記早期ステータス要求の各々が、前記関連するコマンドがまだ完了していないことを示す前記ＭＭＥ回路による指示を含む、累積することと、
前記早期ステータス要求の集団分布に応答して前記可変遅延時間間隔に到達するように前記初期遅延時間間隔を調節することと、によって前記可変遅延時間間隔の規模を決定することを更に含む、請求項１４に記載の方法。
【請求項２０】
前記ＮＶＭが、複数のダイを含むＮＡＮＤフラッシュメモリアレイを備え、前記選択されたアドレスが、前記複数のダイから選択されたダイを含み、前記方法が、前記残りのダイの各々に対するコマンドの発行と後続のステータス要求との間で異なる可変遅延時間間隔を使用することを更に含む、請求項１４に記載の方法。
【発明の詳細な説明】
【発明の概要】
【課題を解決するための手段】
【０００１】
本開示の様々な実施形態は、一般に、これらに限定されないがフラッシュメモリなどのメモリ内のデータの管理に関する。
【０００２】
いくつかの実施形態によれば、装置は、メモリモジュール及び制御部回路を備える。メモリモジュールは、不揮発性メモリ（ＮＶＭ）と、ＮＶＭのソリッドステート不揮発性メモリセルにデータをプログラムし、ＮＶＭのソリッドステート不揮発性メモリセルからデータを読み取るように構成されたメモリモジュール電子（ＭＭＥ）回路と、を備える。制御部回路は、ＮＶＭ内の選択されたアドレスと、選択されたアドレスに関してＭＭＥ回路によって取られる選択された行為をと含む第１のコマンドをメモリモジュールに伝達するように構成されている。制御部回路は、可変遅延時間間隔の終わりに、第１のコマンドの完了に関連するステータス要求を含む第２のコマンドをメモリモジュールに伝達するように更に構成されている。可変遅延時間間隔は、第１のコマンドの伝達に先立って発行された、選択されたアドレスに関連する以前のコマンドについて制御部回路によってメモリモジュールに以前に伝達されたステータス要求の累積数に応答して選択される。
【０００３】
更なる実施形態では、方法は、制御部回路からメモリモジュールのメモリモジュール電子（ＭＭＥ）回路に、メモリモジュールの不揮発性メモリ（ＮＶＭ）内の選択されたアドレスと、アドレスに関してＭＭＥ回路によって取られる選択された行為とを含む第１のコマンドを伝達するステップを含む。可変遅延時間間隔は、第１のコマンドの伝達に応答して開始される。可変遅延時間間隔の終わりには、第２のコマンドが、第１のコマンドの完了に関連するステータス要求として制御部回路からＭＭＥ回路に伝達される。可変遅延時間間隔は、第１のコマンドの伝達に先立って選択されたアドレスについて制御部回路によってメモリモジュールに以前に伝達されたステータス要求の累積数に応答して選択される。
【０００４】
様々な実施形態を特徴付けることがある上記の特徴及び他の特徴は、以下の詳細な説明及び添付図面を考慮して理解することができる。
【図面の簡単な説明】
【０００５】
【図１】様々な実施形態によるデータストレージデバイスの機能ブロック表現を提供する。
【図２】いくつかの実施形態によるソリッドステートドライブ（ＳＳＤ）として特徴付けられる図１のデバイスの態様を示す。
【図３】いくつかの実施形態では、図２の制御部とメモリモジュール電子（ＭＭＥ）回路との間のデータ及びコマンドの流れを描写する。
【図４】制御部によってＭＭＥに対して発行されるコマンドの例示的なフォーマットである。
【図５】コマンド、ステータス要求及びデータを転送するために、制御部及びＭＭＥによって使用されるプルシステムを示すタイミング図である。
【図６】制御部がＮＶＭ内の異なる場所に対して可変遅延時間間隔を確立する様式を描写する。
【図７】図６の制御部の動作を示す処理フロー図である。
【図８】コマンドの母集団に対する早期ステータス要求の累積数を描写するバケット図である。
【図９】ＮＶＭ内の選択された場所に対する選択された遅延時間間隔に対する適応調整のグラフ表示である。
【図１０】ＮＶＭのソリッドステートメモリセルの異なる母集団を示す。
【図１１】ＮＶＭ内の異なる場所によって実行される同じコマンドに対する異なるコマンド実行間隔を示す。
【図１２】いくつかの実施形態に従って実行されるステップを示すデータ処理ルーチンのフローチャートである。
【発明を実施するための形態】
【０００６】
本開示は、一般に、これらに限定されないが、ソリッドステートドライブ（ＳＳＤ）のフラッシュメモリなどのメモリに記憶されたデータを管理することに関する。
【０００７】
幅広い種類のデータ記憶メモリが当該技術分野で知られている。いくつかのメモリは、フラッシュメモリなどのフローティングゲート構造上の累積された電荷量に関連してデータを記憶するソリッドステートメモリセルから形成される。所与のフラッシュメモリ場所に新しいデータが書き込まれ得る前には、消去操作が一般的に必要とされる。
【０００８】
いくつかのフラッシュメモリデバイスは、フラッシュメモリモジュール及び制御部を備える。制御部がメモリモジュールにコマンドを発行し、その後、要求されたコマンドが完了したかどうかを判定するために確認するプルシステムが使用される。これは、コマンド発行後にステータスが繰り返し確認される場合など、メモリモジュールにコマンドを発行する必要がある回数を増加させる傾向がある。
【０００９】
メモリモジュールの製造者が、読み取り、書き込み（プログラミング）及び消去動作などの様々なコマンドの特定のコマンド完了時間を指定することが一般的である。このような規格は、最良の値であり得、異なる場所及び異なる環境条件及び状態での実際のシステム動作を表し得ないことが判明している。
【００１０】
コマンド完了時間の変動は、制御部とメモリモジュールとの間のデータ転送性能に複数の方法で悪影響を与えることがある。コマンド完了時間が予想以上に有意に長くなった場合は、制御部から複数のステータス要求が発行され得、その各々に対して応答され、「準備未完了（not ready）」タイプのステータスが返される。このような早期ステータス要求のサービスは、制御部とメモリモジュールの両方の重要な処理リソースを消費する可能性がある。一方、コマンドが予想よりもかなり速い速度で完了した場合、制御部はコマンドの完了を待つ必要がなくてもよく、ステータス要求を発行し、コマンドの発行又は他のプロセスへのデータ転送などの後続のステップに進んでもよい。
【００１１】
したがって、本開示の様々な実施形態は、概して、これらに限定されないが、ソリッドステートドライブ（ＳＳＤ）におけるフラッシュメモリなどのメモリにおいてデータを管理するための装置及び方法に関する。以下に説明するように、いくつかの実施形態は、メモリモジュールに伝達するように構成された制御部回路を提供する。メモリモジュールは、メモリモジュール電子（ＭＭＥ）回路及び不揮発性メモリ（ＮＶＭ）を備える。ＮＶＭは、フラッシュメモリアレイなどの複数のソリッドステート不揮発性メモリセルから形成される。制御部回路は、アドレス情報を含む第１のコマンド及びアドレス情報に関連してメモリモジュールによって取られる第１の行為を識別する第１の動作コードをメモリモジュールに伝達するように構成される。
【００１２】
制御部回路は、第１のコマンドに関連するステータス要求を含む第２のコマンドをメモリモジュールに引き続き伝達するように更に構成される。第２のコマンドは、第１のコマンドのアドレス情報に関連付けられた履歴統計に基づいて制御回路によって決定された適応又は可変遅延時間間隔に応答して発行される。このようにして、制御部回路は、メモリモジュールの観測された挙動に基づいて遅延時間を適応的に調節して、モジュールの実際のコマンド完了時間性能に更に厳密に適合させる。
【００１３】
様々な実施形態のこれらの並びに他の特徴及び利点は、データ取扱いシステム１００を提供している図１を最初にレビューすることによって理解することができる。システム１００は、ホストデバイス１０２及びデータ記憶デバイス１０４を備える。データ記憶デバイス１０４は、制御部１０６及びメモリモジュール１０８を備える。制御部は、メモリモジュール１０８内の不揮発性メモリ（ＮＶＭ）ストレージへの、及びメモリモジュール１０８内の不揮発性メモリ（ＮＶＭ）ストレージからのデータ転送のための最上位の伝達及び制御機能を提供するプログラム可能なプロセッサ及び／又はハードウェアベースの回路である。ホストデバイスとデータ記憶デバイスとの間のデータ転送は、選択されたプロトコルを介して提供され得る。
【００１４】
図２は、図１のデバイス１０４に概して対応するデータ記憶デバイス１１０を示す。デバイス１１０は、図１の１０２などのホストデバイスと、１つ以上のＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ  Ｅｘｐｒｅｓｓ）ポート経由で伝達するソリッドステートドライブ（ＳＳＤ）として構成されるが、他の構成が使用されてもよい。
【００１５】
ＳＳＤ  １１０は、制御部回路１１２及びメモリモジュール１１４を備える。制御部回路１１２（以下、「制御部」）は、フロントエンド制御部１１４と、コア制御部１１６と、バックエンド制御部１１８と、を備える。フロントエンド制御部１１４は、ホストＩ／Ｆ機能を実行し、バックエンド制御部１１８は、メモリモジュール１１４とのデータ転送を指示し、コア制御部１１６は、デバイスの最上位制御を提供する。
【００１６】
各制御部１１４、１１６及び１１８は、適切なメモリ場所に関連のプログラミング（例えば、ファームウェア、ＦＷ）を備えた別個のプログラム可能なプロセッサ、並びに様々なハードウェア要素を含み、データ管理及び転送機能を実行する。これは一実施形態の例示的なものにすぎない。他の実施形態において、単一のプログラム可能なプロセッサ（又は３つより少ないプログラム可能なプロセッサ）を構成し、適切なメモリ位置の関連のＦＷを使用して、フロントエンド、コア及びバックエンド処理を各々実行することもできる。純粋なハードウェアベースの制御部構成も使用できる。様々な制御部は、単一のシステムオンチップ（ＳＯＣ）集積回路デバイスに統合されてもよく、又は必要に応じて様々な個別素子に分散されてもよい。
【００１７】
制御部メモリ１２０は、制御部１１２によってローカルメモリとして利用される様々な形態の揮発性及び不揮発性メモリ（例えば、ＳＲＡＭ、ＤＤＲ  ＤＲＡＭ、フラッシュなど）を表す。１つ以上のマップ構造１２２、マップデータ及び他の制御情報のための１つ以上のキャッシュ１２４、及びデータ転送中のホスト（ユーザ）データの一時記憶のための１つ以上のデータバッファ１２６など、種々のデータ構造及びデータセットは、メモリによって記憶されてもよい。非プロセッサベースのハードウェアアシスト回路１２８は、必要に応じて１つ以上の制御部による特定のメモリ管理タスクのオフロードを可能にすることができる。ハードウェア回路１１８は、プログラム可能なプロセッサを使用せず、代わりに特定アプリケーション向け集積回路（ＡＳＩＣ）、ゲート論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのハードワイヤード論理回路の様々な形態を使用する。
【００１８】
メモリモジュール１１４は、メモリモジュール電子回路１３０（以下、「ＭＭＥ」）及びフラッシュメモリアレイ１３２を備える。ＭＭＥ  １３０は、読み取り／書き込み／消去（Ｒ／Ｗ／Ｅ）回路及びフラッシュメモリ１３２にデータを書き込むためにメモリモジュール１１４に組み込まれた他の制御回路を備える。ＭＭＥは、メモリ内に関連するプログラミングを有する１つ以上のプログラム可能なプロセッサ回路、並びに／又は制御部１１２との様々なコマンド及びデータの転送を実行するように適合されたハードウェア回路から形成されてもよい。
【００１９】
フラッシュメモリ１３２は、いくつかのフラッシュダイ１３４（ダイ０からダイ３と称される）を備える。３つのダイのみが示されているが、任意の数を使用することができる。ＭＭＥ  １３０は、関連するダイ１３４を有する確立された各チャネル（レーン）に沿って並列データ転送動作を実行するように動作することができる。フラッシュメモリは、単一の記憶階層として、又は必要に応じて複数の階層として配列させることができる。
【００２０】
これに限定されるものではないが、現在の世代のＳＳＤ及び他のデータ記憶デバイスシステムは、そのようなデバイスの供給元から市販されている１１４などの統合メモリモジュールから形成することができることは当業者には理解されよう。メモリモジュールは、デバイス製造者によって、ＳＳＤに統合され得、制御部機能を供給し、メモリモジュールと共に動作するように制御部を調節する。したがって、制御部及びメモリモジュールは、１つ以上の定義されたデータ及びコマンドインタフェースにわたって伝達する別個の動作エンティティである。「プル」システムが一般的に使用され、そのシステムでは、制御部１１２がコマンドを発行し、その後、コマンドが完了したかどうかを判定するために、メモリモジュール１１４によるこれらのコマンドのステータスを繰り返し確認（ポーリング）する。
【００２１】
図３は、制御部１１２及びＭＭＥ  １３０の態様をより詳細に示す。ＭＭＥバッファメモリ１３６は、フラッシュメモリ１３２と制御部１１２のホストデータバッファ１３８との間で転送されるデータを一時的に記憶するために、ＭＭＥ  １３０に組み込まれているか、又はＭＭＥ  １３０によって利用される。このようなデータ転送を実行するために、制御部１１２は、読み取りコマンド、書き込みコマンド、消去コマンド、データ転送コマンド、及びステータスコマンド（ステータス要求とも称される）などの様々なコマンドをＭＭＥ  １３０に発行する。ＭＭＥ  １３０は、制御部コマンドのステータスの指示を提供するために、様々なコマンドステータス応答を提供する。
【００２２】
フラッシュメモリ１３２からデータを読み取るとき、制御部１１２は、ＳＳＤ  １１０に結合された外部ホストデバイス（例えば、図１のホスト１０２）へのその後の転送のために、メモリから制御部に戻される要求されたデータを識別するフォーマットで読み取りコマンドを発行する。ＭＭＥ  １３０は、読み取りコマンドをスケジューリングして実行し、検索したデータをローカルＭＭＥバッファ１３６に入れる。次に、制御部１１２は、読み取りステータス拡張（ＲＳＥ）コマンドなどの１つ以上のステータス要求を発行し、検索されたデータに関連するステータスを要求する。ＭＭＥ  １３０は、各ステータス要求に応答して、読み取りステータスを供給する。
【００２３】
ＭＭＥ  １３０がまだデータ読み取り動作を完了していない場合、ＭＭＥは、「コマンド保留状態」タイプの読み取りステータス（「準備未完了」応答とも称される）信号を送信することができる。一旦データ読み取り動作が完了すると、ＭＭＥは、「転送準備完了（ready to transfer）」（「準備完了（ready）」応答とも称される）読み取りステータス信号を送信し、検索されたデータがＭＭＥバッファ１３６に保留中であり、ホストバッファ１３８への転送の準備ができていることを示す。その後、制御部１１２は、ＭＭＥバッファ１１３６からホストバッファ１３８にデータを転送するための転送（ＸＦＥＲ）コマンドを発行し、その後、データが要求元のホストデバイスに転送される。
【００２４】
書き込み（プログラム）動作も同様の様式で行うことができる。制御部１１２は、ＭＭＥ  １３０に書き込みコマンドを発行し、フラッシュメモリ１０８への後続の処理及び書き込みのためにＭＭＥバッファ１３６への転送を保留しているホストバッファ１３８に書き込みデータを転送する。ＭＭＥ  １３０は、フラッシュメモリに正常にデータが書き込まれたことを示すために、制御部１１２にコマンド完了タイプの応答の信号を送る。
【００２５】
消去コマンドは、一度に消去され得る最小のメモリユニットを構成する特定の消去ブロックなど、フラッシュメモリ１３２内の選択されたメモリユニットを消去するために制御部１１２によって発行される。消失ブロックは、ガベージコレクションユニット（ＧＣＵ）と称されるより大きいマルチブロックセットにグループ化することができる。ＭＭＥ  １３０は、消去コマンドに応答して、影響を受けたブロック内の現在の（有効な）データが新しい場所にコピーされ、ブロックが消去され、その後、新しいデータのストレージのために後続の割り当てを保留する割り当てプールに配置されるガーベジコレクション動作をスケジュールする。理解されるように、ＮＡＮＤフラッシュなどの消去可能メモリは、典型的には、所与の場所が新しいデータで上書きされ得る前に消去動作を必要とする。
【００２６】
制御部１１２によってＭＭＥ  １３０に発行されるこれらのコマンド及び他の様々なコマンドは、図４に示すような一般的な形態を取ることができる。例示的なコマンド１４０は、オペコード１４２及びアドレス１４４を含む。オペコード１４２は、マルチビットシーケンスであり、ＭＭＥ  １３０のオペレーションデコーダ１４６によってデコードされ、ＭＭＥによって取られる所望の動作又は行為を表す。第１のマルチビットシーケンスは、読み取りコマンドを表すことができ、第２のマルチビットシーケンスは、プログラムコマンドなどを表すことができる。
【００２７】
アドレス１４４は、コマンドが実行される対応するメモリの場所を表す。アドレス１４４は、ＭＭＥ  １３０のアドレスバッファ１４８にロードされる。アドレスは様々な形式を取ることができ、特定のダイ、プレーン、ＧＣＵ（ガベージコレクションユニット）、消去ブロック、ページ、行、列オフセットなどを識別する値を含むことができる。行アドレス指定及び／又は列アドレス指定の両方を使用することができる。所望のとおり、ヘッダ、パリティビットなど、コマンドフォーマットに他の要素を組み込むことができるが、このようなものは、例解を簡略化するために省略している。
【００２８】
この時点で、所与のコマンドの特定のフォーマットは、制御部とＭＭＥとの間のＩ／Ｏ通信を制御するために確立された通信プロトコルに依存することに留意されたい。ステータス要求などのコマンドは、オペコード部分を含み得るが、対応するアドレス部分などは含まない。
【００２９】
図５は、制御部１１２とＭＭＥ  １３０との間の選択されたコマンドの処理中に実行される動作の一般的なシーケンスを例解するために、タイミング図１５０を提供する。図５では、コマンドは、ＭＭＥ内の選択された場所から選択された量のデータを読み取るための読み取りコマンドであることが企図される。制御部１１２によって、ＭＭＥ  １３０に、図４に示すフォーマットの読み取りコマンドが発行される。一旦受信されると、ＭＭＥは、フラッシュメモリ１３２からの要求されたデータの読み取りのスケジューリング及び実行を進める。
【００３０】
所定の待機時間（遅延時間）後、制御部は、第１の読み取りステータス要求を発行する。ＭＭＥは、コマンド（読み取りステータス要求）をデコードし、システムの状態を決定し（コマンドの実行はまだ進行中である）、応答（準備未完了）を発行する。後続の待機時間は制御部によって経験され、続いて第２の読み取りステータス要求がＭＭＥに対して発行される。第２の待機時間は、第１の待機時間と同じ持続時間であってもよいか、又は第２の間隔に対してより短い待機時間が用いられてもよい。第１のステータス要求と第２のステータス要求との間に介在する時間において、読み取りコマンドが完了し、データはＭＭＥバッファ１３６（図３）に移動される。
【００３１】
ＭＭＥは、第２の読み取りステータスを処理し、このとき、データが準備完了であることを示す。これに制御部からの転送コマンドが続き、データはＭＭＥバッファ１３６から要求元ホストへの転送が保留されているホストバッファ１３８（図３）に転送される。書き込みコマンド及び消去コマンドなどの他のコマンドも同様のシーケンスに従うことが理解されよう。最上レベルのコマンドが発行され、コマンドの進行を追跡する１つ以上のステータス要求が続き、その後、一旦コマンドが完了したものとして示されると、後続の処理が行われる。
【００３２】
システムの構成及び作業負荷に応じて、図５に示されたコマンドシーケンスと同様の数百又は数千のコマンドシーケンスがそれぞれの制御部及びＭＭＥによって同時に処理され得る。図５では、２つのステータス要求のみが発行されたが、任意の数の追加のステータス要求が、所与のコマンドの保留中に発行され得ることは理解されよう。したがって、保留中の多数のコマンドについて多くの失敗したステータス要求が発行されると、ホストデータのＩ／Ｏ転送中に制御部とＭＭＥとの両方に大きな負荷が付与されることがある。同時に、ステータス要求間の遅延を著しく長くして、これらの早期要求を取り除くことは、制御部がコマンドのステータスを要求するよりもかなり前にＭＭＥがコマンドを完了することがあり得るため、実効ホストデータのＩ／Ｏデータ転送速度を不必要に低下させる可能性がある。
【００３３】
制御部１１２は、様々なタイプのコマンドが遭遇する様々な遅延時間を適応的に調節して、ステータスコマンドの発行をより良く管理し、ＭＭＥ  １３０の実際の性能と一致させるように構成される。図６は、制御部に組み込まれているか、さもなければ制御部によって利用されている様々な動作回路と共に制御部１１２を示す。制御部と同様に、様々な回路は、所望のとおり、ハードウェア及び／又はファームウェア（プログラミング）で実現することができる。
【００３４】
回路は、タイマー回路１６０と、ローカルメモリ内のデータ構造として記憶された累積統計テーブル１６２と、学習アルゴリズム１６４と、平均化回路１６６と、ローカルメモリ内のデータ構造としても記憶された遅延テーブル１６８と、１つ以上の環境センサ１７０と、を備える。確率的（ブルーム）フィルタの使用を含む他の構成を使用することができる。制御部は、コマンドのタイプ、場所（例えば、異なるダイ、ページなど）及び環境条件（例えば、温度、コマンドキューの深さなど）の異なる組み合わせに対して、これらの様々な回路を利用して、適切な遅延時間又は経過時間の遅延間隔を確立する。その後、遅延時間は、様々な組み合わせについての以前の累積された統計値に対して、増分又は減分などによって連続的に調節される。
【００３５】
図７は、いくつかの実施形態において、図６の回路の動作を説明するための一般化されたプロセスフローを示す。具体的な例解を提供する目的で、図７のフローは、選択されたダイ１３４（例えば、ダイ０）などの特定の場所から以前に記憶されたデータを検索するために制御部１１２によって発行される読み取りコマンドの母集団を網羅することを企図するものとする。コマンド母集団は、すべての環境条件用であってもよいか、又は、デバイスが選択された周囲温度範囲内で動作している間に実行されるコマンドのサブセットであってもよい。これにより、制御部は、統計的に有意であることが判明している場合、他の温度範囲（又は他の環境条件）において、異なる遅延時間又は読み取りコマンドの時間を選択することが可能になる。
【００３６】
各読み取りコマンドは、ステップ１７２に示すように発行される。これに続いて、タイマーが開始され、１７４において以前に選択されたベースライン増分に対応する経過時間間隔を数える。ついでながら、Ｘマイクロ秒（ｍｓ）など、毎回同じ遅延間隔を使用することができるか、又は長い初期遅延時間Ｘｍｓを使用することができ、その後、各連続した読み取り要求について、短い遅延Ｙｍｓが続く（Ｘ＞Ｙ）。一例では、Ｘは約４０〜４５ｍｓオーダーであり得、使用される場合、Ｙは約５〜１０ｍｓオーダーであり得る。他の値を使用してもよい。
【００３７】
ステップ１７６に示すように、各遅延期間増分の終了時にステータス要求が発行され、ＭＭＥ  １３０は、「準備未完了」応答又は「準備完了」応答のいずれかで応答する（図５参照）。ステップ１７８では、早期ステータス要求、すなわち、ステップ１７８において、「準備未完了」表示を戻した要求の総数が累積される。
【００３８】
一旦十分な数の統計が累積されると、ステップ１８０において、Ｘ−Ａ又はＸ＋Ｂなどの新しいベースライン遅延値が割り当てられる。場合によっては、応答を得るために必要な時間の平均を、累積データから補間することができる。新しいベースライン遅延値は、ステップ１８２で記憶され、更なる読み取り要求に使用される。このようにして、システムは、不要な（早期の）ステータス要求及びコマンドが完了した後にステータスを提供する際の望ましくない遅延の両方を低減するために、ベースライン遅延を適応的に調節し続けることができる。場合によっては、累積数マスクビットを使用して、制御部が誤っていることが分かっている特定の数を除外することができる。これにより、より正確なランニングアベレージ又は他の累積統計値を決定することができる。
【００３９】
図８は、図７の動作から累積された早期ステータス要求の異なる数に対する様々なバー１８６（バケット）を示すバケット分析グラフ１８４である。図８の累積データは、０からＮ−１までの早期なステータス要求の異なる相対的なそれぞれの数を示す。テストされた組み合わせに関連するばらつきの量、並びに連続するステータス要求間で使用される増分が、全体の分布の形状に影響する傾向がある。
【００４０】
それにもかかわらず、時間の経過と共に得られる分布は、本質的に多少ガウス分布であり、平均的なコマンド完了時間の付近にピーク値又はその他の平均値を有することが企図される。図８に提示するようなデータは、統計的に有意な数のコマンドにわたって累算し、１つ以上の新しい適切なベースライン遅延値に到達することができる。場合によっては、１〜２の要求又は他の値などの少数の許容可能な早期ステータス要求が発行されるように、平均を設定することができる。
【００４１】
図９は、ある時間にわたる所与の組み合わせに対する遅延時間に適用され得る適応調節を示す曲線１８８を示す。遅延時間は、定常状態の値又は範囲に収束することが企図される。経時的に、温度、エージング、読み取り妨害効果、訂正不能エラーによる読み取り回復効果などの環境要因を、適切な遅延時間の適応調節に組み入れることもある。調節量は、システムにヒステリシスを追加し、閉ループ収束を確実に最適な遅延値にするために、最大の増分値又は減分値に制限され得る。平均化、ローリングウィンドウ、カーブフィット、回帰分析及び他の技術は、次の調節された遅延値（複数可）に達するように容易に適用することができる。関連する場所の以前の履歴データの好適な量をメモリ内に維持し（例えば、図６の累積統計ブロック１６２を参照）、新しい計算に使用することができる。
【００４２】
場合によっては、同じダイ又は他のメモリ構造内の異なる場所が、著しく異なる応答時間をもたらし得る。図１０は、マルチレベルセル（ＭＬＣ）としてプログラムされた異なるフラッシュメモリセルの一連の集団曲線１９０を示す。各ＭＬＣは、合計２ビットを記憶する。メモリセルの行（例えば、消去ブロック内の共通ワード線に結合される）は、データの下位ページとデータの上位ページを同時に記憶するＭＬＣとして構成されてもよい。下位ページは、プログラムされた状態の最上位ビット（ＭＳＢ）によって表され、上位ページは少なくとも最下位ビット（ＬＳＢ）によって表される。ＳＬＣ（単一レベルセル）、ＴＬＣ（３レベルセル）、ＱＬＣ（４レベルセル）などの他の記録方式を使用してもよい。
【００４３】
それぞれの集団のプログラムされた状態は、セルの制御ゲートに対して１つ以上の電圧閾値を適用することによって決定することができる。このような４つの電圧閾値は、Ｖ１〜Ｖ４に示す。一般に、電圧閾値の適用は、導通状態で閾値以下にセルを配置する（例えば、図１０の左側）傾向があり、通常の非導通状態で閾値を超えるセルを維持する傾向がある（例えば、図１０の右側）。
【００４４】
したがって、各状態のＭＳＢを識別し、それ故に、データの下位ページを回復させるために、単一の電圧閾値（例えば、Ｖ３）のみが適用される必要があるということに基づいて、データの下位ページはデータの上位ページより速く読み取られ得る。それぞれの状態のＬＳＢを識別し、データの上位ページを回復するために追加の閾値（例えば、Ｖ２、Ｖ４）を適用する必要がある。したがって、制御部１１２は、データのどのページが検索されているかに関するベースライン遅延を更に調節することができる。下位ページが要求されている場合、第１の遅延値が使用され得、上位（又はそれ以上）のページが要求されている場合は、長い第２の遅延値が使用されてもよい。場合によっては、ベースライン遅延値は、下位ページ（ＳＬＣデータ）の検索に基づいて決定され得、わずかな増分がベースライン遅延値に追加され、同じセルセットから上位又はより高いページデータを検索するために必要な追加時間となり得る。
【００４５】
コマンドのタイプが異なると、完了までに平均時間量が大幅に異なる必要がある傾向にある。例えば、読み取りコマンドにはＸｍｓ、書き込みコマンドにはＹｍｓ、消去コマンドにはＺｍｓ（Ｘ＜Ｙ＜Ｚ）が必要な場合がある。それにもかかわらず、選択された消去ブロック又は消去ブロックのグループからのすべてのページは、それぞれ、同様の読み取り時間性能、書き込み時間性能及び消去時間性能をもたらす傾向があり得る。このような場合には、必要に応じてページ場所を調節して、消去ブロックごとにコマンドの各タイプの平均値を計算することができる。しかし、異なるダイ１３４は、様々なコマンドされた動作を完了するために、有意に異なる遅延時間を示すことがある。これにより、１つのダイが平均読み取り／書き込み／消去時間（Ｘ、Ｙ、Ｚ）を提供し、別のダイが異なる平均読み取り／書き込み／消去時間（Ａ、Ｂ、Ｃ）を提供するようになる。
【００４６】
図１１は、フラッシュアレイ内の２つの異なる場所に関する２つの別個のコマンド実行間隔のグラフ表示を示す。第１のコマンド実行間隔は１９２で表されており、第１の選択されたダイＸ上の第１の選択されたページＷに向けられた選択されたコマンドの実行を完了するための時間Ｔ０から時間Ｔ１までの平均経過時間を表す。第２の更に長いコマンド実行間隔は、１９４で表されており、第２の選択されたダイＺ内の第２の選択されたページＹのための同じタイプのコマンドの実行を完了するための時間Ｔ０から時間Ｔ２に及ぶ平均経過時間を表す。
【００４７】
例示的な可変遅延時間間隔は、Ｔ０から時間Ｔ３までの経過時間として示される。上述のとおり、可変遅延時間間隔は、第１のコマンド（時間Ｔ０で選択された行為）から第２のコマンドの次の伝達（時間Ｔ３でのステータス要求）までの時間間隔を表す。時間Ｔ３でステータス要求を発行することは、両方の実行間隔に関して準最適な解決策であり得ることが分かり得る。遅延は、ダイＸ（ブロック１７２）については長く、ダイＺ（ブロック１７４）については短すぎると考えられ得る。したがって、別個の遅延を個々に調節することが、ドライブのスループット性能の向上をもたらし、速いダイＸには短い遅延間隔を使用することができ、遅いダイＺには長い遅延間隔を使用することができ、早期の及び不必要に遅延したステータス要求の数がいずれも削減されることになる。
【００４８】
上述したように、場合によっては、所与のタイプのコマンドについて所与の場所についての初期ベースライン遅延が計算され、次に、ページの場所、環境要因、データエージング、プログラム／消去数、読み取り妨害数などの他の要因を使用して、初期ベースライン遅延を増分又は減分させて、最終的な遅延値とすることができる。全体として、平均して比較的少数の早期ステータス要求をもたらすベースライン遅延を選択することが最適であることが想起されるであろう。上述の図７〜図８に論じたとおり、これらの統計値を継続して累積することで、制御部にフィードバックを提供して、既存の設定を増減させ得る。所定の設定は、早期ステータス要求の数の閾値限界（個々のコマンド又は平均コマンド数のいずれかに）に達するまで、継続して使用され得る。
【００４９】
図１２は、上記で論じた態様を要約するためのデータ処理ルーチン２００のフローチャートを示す。このルーチンは、ホストデバイス１０２によって発行された様々なデータ転送コマンドのサービス中での、制御部１１２による動作を表すことが企図されている。様々なステップは、１つ以上のプログラマブルプロセッサによって実行されるプログラミングに組み込まれたプログラム命令フローに対応することができる。このルーチンは単なる例示であり、本開示に従って必要に応じて変更され得る。
【００５０】
ステップ２０２において、データ転送コマンドが制御部１１２によって最初にＭＭＥ  １３０に発行される。これは、読み取りコマンド、書き込みコマンド又は消去コマンドなど、任意の数の適切な形態を取ることができる。ステップ２０４では、コマンドのアドレス（例えば、図４のコマンドのアドレス部分）に関連する遅延時間のベースライン値がメモリ（図６の遅延テーブル１６８など）から呼び出される。ベースライン値は、ベースライン値に対応する経過時間間隔を示すためにタイマー（図６のタイマー回路１６０など）を開始するために使用される（ステップ２０６）。
【００５１】
決定ステップ２０８は、経過時間間隔が完了したかどうかを決定するためにループを提供する。決定した場合、制御部１１２は、ステップ２１０において、第１のステータス要求コマンドをＭＭＥ  １３０に発行することに進む。ステップ２１２は、コマンド実行が完了したかどうか、すなわち、ＭＭＥが「準備未完了」又は「準備完了」ステータスを返すかどうかを示す。そうでなければ、ルーチンは第２の時間間隔の実行のためにブロック２０６に返る。上述したように、この第２の時間間隔は、第１の時間間隔と同じ持続時間であってもよいか、又は異なる時間間隔であってもよい。時間間隔はすべて同じであるか、又は後続の時間間隔が短くなることが企図されるが、これは必ずしも必要ではない。特定の状況下で長い時間間隔を提供することが有利になり得る場合には、異なる構成が企図される。
【００５２】
一旦コマンドがきちんと完了したことをＭＭＥが示すと、フローはステップ２１２からステップ２１４に移行し、図５で上述したとおりデータが検索される。この時点で、制御部１１２は、必要に応じて、他のステップを実行することに進み、ルーチンのサービスを完了させる。更に、制御部１１２は、ステップ２１６において、既存のベースライン遅延値を調節するかどうかを決定する。このような場合には、ステップ２１８において、上述したように、関連付けられた場所に関する累積統計が分析され、新しいベースライン値に到達し、その後、この値がステップ２０２のその後の動作中に記憶され使用される。
【００５３】
場合によっては、制御部１１２は、連続動作中に様々な遅延時間のリアルタイム調節を提供することができ、その結果、システムは、時間の経過と共に常に適応的に調節される。このアプローチの利点は、システムが、メモリモジュール１１４の進行中の性能を厳密に監視し、それに適合させることである。他の場合には、データは、図７及び図９に示されるように累積されてもよく、制御部１１２は、オフライン又はより低い需要間隔の間に較正ルーチンを実行して、適切な遅延間隔を確立してもよい。更に他の実施形態では、制御部１１２は、定期的に試験較正読み取りを実施してもよい（例えば、システム内の各ダイ／消去ブロックの組み合わせから少なくとも１ページを読み取って、現在の遅延値を評価し、必要に応じて調節を行う）。
【００５４】
様々な実施形態をフラッシュメモリの環境で記載してきたが、これは単なる例示である。様々な実施形態は、スピントルク転送ランダムアクセスメモリ（ＳＴＲＡＭ）、抵抗ランダムアクセスメモリ（ＲＲＡＭ（登録商標））、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）など、他の形態のソリッドステートメモリに容易に実装され得る。
【００５５】
本開示の様々な実施形態の多数の特徴及び利点が、様々な実施形態の構成及び機能の詳細と一体となって、前述の説明に記載されているとしても、この詳細な説明は一例にすぎず、変更が詳細に行われ、特に、本開示の原理の範囲内の部品の構成及び配置という点で特許請求の範囲に記載された用語の広い一般的な意味によって示唆された最大限の範囲まで行われることがある、と理解されるべきである。
【図１】
2018200689.tif 000003
【図２】
2018200689.tif 000004
【図３】
2018200689.tif 000005
【図４】
2018200689.tif 000006
【図５】
2018200689.tif 000007
【図６】
2018200689.tif 000008
【図７】
2018200689.tif 000009
【図８】
2018200689.tif 000010
【図９】
2018200689.tif 000011
【図１０】
2018200689.tif 000012
【図１１】
2018200689.tif 000013
【図１２】
2018200689.tif 000014
【外国語明細書】
2018200689000001.pdf