(57)【要約】      （修正有）【課題】複数メモリの状態に応じて、全体的なメモリ操作を効率化するメモリシステムコントローラを含む装置を提供する。【解決手段】装置は、複数の第１の論理ユニット２５０と、前記複数の第１の論理ユニットにそれぞれ対応する複数の第１の論理ユニットコマンドキュー２４６と、前記複数の第１の論理ユニットに対する複数のコマンドを第１の順序で受け、そのそれぞれを前記第１の順序で前記複数の第１の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第１の順序とは異なる第２の順序で前記複数の第１の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第１の論理ユニット要求キュー２４４と、を備える。【選択図】図２
2016053983.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１の論理ユニットと、
前記複数の第１の論理ユニットにそれぞれ対応して設けられた複数の第１の論理ユニットコマンドキューと、
前記複数の第１の論理ユニットに対する複数のコマンドを第１の順序で受け、前記複数のコマンドのそれぞれを前記第１の順序で前記複数の第１の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第１の順序とは異なる第２の順序で前記複数の第１の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第１の論理ユニット要求キューと、
を備える装置。
【請求項２】
前記複数の第１の論理ユニットコマンドキュー及び前記第１の論理ユニット要求キューは第１のチャネル制御回路内に設けられるものであって、
前記装置は、
複数の第２の論理ユニットと、
前記複数の第２の論理ユニットにそれぞれ対応して設けられた複数の第２の論理ユニットコマンドキューと、前記複数の第２の論理ユニットに対する複数のコマンドを第３の順序で受け、前記複数のコマンドのそれぞれを前記第３の順序で前記複数の第２の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第３の順序とは異なる第４の順序で前記複数の第２の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第２の論理ユニット要求キューと、を備える第２のチャネル制御回路と、
前記第１および第２のチャネル制御回路内の前記第１及び第２の論理ユニット要求キューにコマンドを中継するように構成されるチャネル要求キューと、
をさらに備える請求項１に記載の装置。
【請求項３】
前記チャネル要求キューは正の整数値の深さＣを備え、前記第１および第２の論理ユニット要求キューはそれぞれ正の整数値の深さＬを備え、前記複数の第１および第２の論理ユニットコマンドキューはそれぞれ正の整数値の深さＱを備え、ＬはＱよりも大きく、ＣはＬよりも大きい、請求項２に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的に、半導体メモリデバイス、システム、およびコントローラ等の装置に関し、より具体的には、例えば、メモリシステムコントローラに関する。
【背景技術】
【０００２】
メモリデバイスは、典型的に、コンピュータまたは他の電子デバイスの中に、内部半導体集積回路として提供される。揮発性および不揮発性メモリを含む、多くの異なる種類のメモリがある。揮発性メモリは、その情報、例えばデータを維持するために電力を必要とする可能性があり、数ある中でも、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、およびスタティックランダムアクセスメモリ（ＳＲＡＭ）が挙げられる。不揮発性メモリは、給電されていないときに、記憶された情報を保持することによって持続的な情報を提供することができ、数ある中でも、ＮＡＮＤ型フラッシュメモリ、ＮＯＲ型フラッシュメモリ、リードオンリーメモリ（ＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）が挙げられる。
【０００３】
メモリデバイスは、互いに組み合わせて、ソリッドステートドライブ（ＳＳＤ）を形成することができる。ソリッドステートドライブとしては、数ある他の種類の不揮発性および揮発性メモリの中でも、不揮発性メモリ、例えばＮＡＮＤ型フラッシュメモリおよびＮＯＲ型フラッシュメモリが挙げられ、および／または揮発性メモリ、例えばＤＲＡＭおよびＳＲＡＭが挙げられる。窒化物層の電荷トラップに情報を記憶する、半導体−酸化物−窒化物−酸化物−半導体および金属−酸化物−窒化物−酸化物−半導体コンデンサ構造を使用した、フローティングゲートフラッシュデバイスおよび電荷トラップフラッシュ（ＣＴＦ）デバイスを含む、フラッシュメモリデバイスは、広範囲にわたる電子的用途のための不揮発性メモリとして利用され得る。フラッシュメモリデバイスは、典型的に、高メモリ密度、高信頼性、および低消費電力を可能にする、１トランジスタメモリセルを使用する。
【０００４】
ソリッドステートドライブは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費に関してハードドライブに勝る利点を有することができるので、ＳＳＤは、コンピュータシステムの主記憶デバイスとして、ハードディスクドライブと置き換えるために使用することができる。例えば、ＳＳＤは、可動部品がないため、磁気ディスクドライブと比較して、優れた性能を有することができ、磁気ディスクドライブと関連するシーク時間、待ち時間、および他の電気機械的な遅延を回避し得る。ＳＳＤの製造業者は、内部バッテリ供給を使用しなくてもよく、したがって、ドライブをより多用途かつコンパクトにすることが可能である、フラッシュＳＳＤを作成するために、不揮発性フラッシュメモリを使用することができる。
【０００５】
ＳＳＤは、１以上のメモリデバイス、例えば、１以上のメモリチップを含むことができる（本明細書で使用される「１以上の」ものとは、そのようなものの１つ以上を指すことができ、例えば、１以上のメモリデバイスは、１つ以上のメモリデバイスを指すことができる）。当業者が認識するように、メモリチップは、１以上のダイおよび／または論理ユニット（ＬＵＮ）を含むことができ、例えば、ＬＵＮは、１以上のダイとすることができる。各ダイは、その上に１以上のメモリアレイおよび周辺回路を含むことができる。メモリアレイは、１以上の物理ページに組織される１以上のメモリセルを含むことができ、物理ページは、１以上のブロックに組織することができる。フラッシュメモリセルのアレイは、１度に１ページをプログラムすること、および１度に１ブロックを消去することができる。ＳＳＤコントローラは、メモリの管理および割り当てを行うために、組み込みプロセッサを使用し得る。
【０００６】
なお、従来のメモリコントローラの一例が、特許文献１及び２に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００９／０６４７９３号
【特許文献２】米国特許出願公開第２０１１／００８２９６３号明細書
【発明の概要】
【課題を解決するための手段】
【０００８】
本発明の装置は、複数の第１の論理ユニットと、前記複数の第１の論理ユニットにそれぞれ対応して設けられた複数の第１の論理ユニットコマンドキューと、前記複数の第１の論理ユニットに対する複数のコマンドを第１の順序で受け、前記複数のコマンドのそれぞれを前記第１の順序で前記複数の第１の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたり、前記第１の順序とは異なる第２の順序で前記複数の第１の論理ユニットコマンドキューの中の対応する論理ユニットコマンドキューに中継させたりする第１の論理ユニット要求キューと、を備えることを特徴とする。
【図面の簡単な説明】
【０００９】
【図１】本開示の１以上の実施形態に従う、少なくとも１つのメモリシステムを含むコンピュータシステムの機能ブロック図である。
【図２】本開示の１以上の実施形態に従う、メモリシステムの機能ブロック図である。
【図３Ａ】本開示の１以上の実施形態に従う、ホストバスアダプタ（ＨＢＡ）とシリアルアタッチメント（ＳＡ）プログラミング準拠デバイスとの間のトランスポート層インターフェースの機能ブロック図である。
【図３Ｂ】本開示の１以上の実施形態に従う、ＨＢＡおよびＳＡプログラミング準拠デバイスの機能ブロック図である。
【図４】本開示の１以上の実施形態に従う、ブロック管理デバイスの機能ブロック図である。
【発明を実施するための形態】
【００１０】
本開示は、メモリシステムコントローラを含む。メモリシステムコントローラは、スイッチと、スイッチに連結される不揮発性メモリ制御回路とを含むことができる。不揮発性メモリ制御回路は、論理ユニットに連結されるチャネル制御回路を含むことができる。チャネル制御回路は、消去コマンドを複数の論理ユニットのうちの第１の論理ユニットに中継し、消去コマンドが複数の論理ユニットのうちの第１の論理ユニットで実行されている間に、特定のコマンドをスイッチから複数の論理ユニットのうちの第２の論理ユニットに中継するように構成される。
【００１１】
本開示の以下の発明を実施するための形態では、本明細書の一部を形成し、本開示の１以上の実施形態がどのように実践される場合があるかをその中で例として示す、添付の図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実践することを可能にするように十分な詳細が説明され、他の実施形態が利用されてもよいこと、および本開示の範囲を逸脱することなく、プロセス、電気的、および／または構造的変更が行われてもよいことが理解される。本明細書に使用される場合、指示子「Ｎ」は、特に図面の参照番号に関して、そのように指定されるいくつかの特定の特徴を、本開示の１以上の実施形態とともに含むことができることを示す。
【００１２】
本明細書中の図面は、上位の桁は、図面の図番号に対応し、残りの桁は、図面の中の要素または構成要素を識別するという、番号規則に従う。異なる図面間の同様な要素または構成要素は、同様な数字の使用によって識別される場合がある。例えば、１０８は、図１の要素「０８」を参照し得、同様な要素は、図２の２０８のように参照され得る。理解されるように、本明細書の多様な実施形態に示される要素は、本開示のいくつかの追加の実施形態を提供するように、追加、交換、および／または削除することができる。加えて、理解されるように、図面の中に提供される要素の比率および相対尺度は、本発明の実施形態を図示することを意図しており、限定の意味で解釈されてはならない。
【００１３】
図１は、本開示の１以上の実施形態に従う、少なくとも１つのメモリシステム１０４を含む、コンピュータシステム１００の機能ブロック図である。図１で示される実施形態において、メモリシステム１０４、例えばソリッドステートドライブ（ＳＳＤ）は、物理ホストインターフェース１０６と、メモリシステムコントローラ１０８、例えばＳＳＤコントローラと、１以上のソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎとを含むことができる。ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎは、メモリシステムのための記憶ボリュームを提供することができる。１以上の実施形態において、ソリッドステートメモリシステムコントローラ１０８は、特定用途向け集積回路（ＡＳＩＣ）とすることができ、ここで、コントローラ１０８は、例えばＡＳＩＣの形態で、物理インターフェース１０６およびソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎを含むプリント回路基板に連結される。
【００１４】
図１で図示されるように、メモリシステムコントローラ１０８、例えばソリッドステートメモリシステムコントローラは、物理ホストインターフェース１０６およびソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎに連結することができる。物理ホストインターフェース１０６は、メモリシステム１０４とホスト１０２等の別のデバイスとの間で情報を通信するために使用することができる。ホスト１０２は、メモリアクセスデバイス、例えばプロセッサを含むことができる。当業者は、「プロセッサ」が、並列処理システム、１以上のコプロセッサ等の１以上のプロセッサを意図し得ることを理解するであろう。ホストの例としては、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル録音および再生デバイス、携帯電話、ＰＤＡ、メモリカードリーダ、インターフェースハブ等が挙げられる。１以上の実施形態について、物理ホストインターフェース１０６は、標準物理インターフェースの形態とすることができる。例えば、メモリシステム１０４がコンピュータシステム１００の中で情報記憶に使用されるときに、物理ホストインターフェース１０６は、数あるインターフェースの中でも、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）物理インターフェース、周辺機器相互接続エクスプレス（ＰＣＩｅ）物理インターフェース、小型コンピュータシステムインターフェース（ＳＣＳＩ）インターフェース、シリアルアタッチメントＳＣＳＩ（ＳＡＳ）インターフェース、またはユニバーサルシリアルバス（ＵＳＢ）物理インターフェースとすることができる。しかしながら、一般に、物理ホストインターフェース１０６は、メモリシステム１０４と、物理ホストインターフェース１０６のための互換レセプタを有するホスト１０２との間で、制御、アドレス、情報、例えばデータ、および他の信号を伝達するためのインターフェースを提供することができる。
【００１５】
ソリッドステートメモリシステムコントローラ１０８は、数ある操作の中でも、ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎと通信して、情報を読み出すこと、書き込むこと、および消去することができる。ソリッドステートメモリシステムコントローラ１０８は、ファームウェアおよび／または１以上の集積回路または離散した構成要素であり得る回路を有することができる。１以上の実施形態について、ソリッドステートメモリシステムコントローラ１０８の中の回路は、ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎにわたってアクセスを制御するための制御回路と、ホスト１０２とメモリシステム１０４との間の変換層を提供するための回路とを含み得る。したがって、メモリコントローラは、ソリッドステートメモリデバイス１１０−１、・・・、１１０−ＮのＩ／Ｏ接続部（図１では示さず）を選択的に連結して、適切な時間に適切なＩ／Ｏ接続で適切な信号を受け取ることができる。同様に、ホスト１０２とメモリシステム１０４との間の通信プロトコルは、ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎのアクセスに必要とされるものと異なり得る。ソリッドステートメモリシステムコントローラ１０８は、次いで、ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎへの所望のアクセスを達成するために、ホスト１０２から受け取ったコマンドを適切なコマンドに変換することができる。
【００１６】
ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎは、メモリセル、例えば不揮発性メモリセルの１以上のアレイを含むことができる。アレイは、例えば、ＮＡＮＤ構造を伴うフラッシュアレイとすることができる。ＮＡＮＤ構造では、「行」のメモリセルの制御ゲートをアクセス線、例えばワード線と連結することができる一方で、メモリセルは、セレクトゲートソーストランジスタとセレクトゲートドレイントランジスタとの間の「ストリング」内で、ソースとドレインとを直列に連結することができる。ストリングは、セレクトゲートドレイントランジスタによって、データ線、例えばビット線に接続することができる。「行」および「ストリング」という用語の使用は、メモリセルの線形配設も直交配設も意味するものではない。当業者には明らかなように、ビット線およびソース線に対するメモリセルの接続の手法は、アレイがＮＡＮＤ構造であるか、ＮＯＲ構造であるか、またはいくつかの他のメモリアレイ構造であるかどうかに依存する。
【００１７】
ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎは、グループ化することができる、１以上のメモリセルを含むことができる。本明細書で使用される場合、グループは、ページ、ブロック、プレーン、ダイ、アレイ全体、またはメモリセルの他のグループ等の、１以上のメモリセルを含むことができる。例えば、いくつかのメモリアレイは、メモリセルのブロックを形成する、１以上のメモリセルのページを含むことができる。１以上のブロックは、メモリセルのプレーンに含めることができる。１以上のメモリセルのプレーンは、１つのダイに含めることができる。一例として、１２８ＧＢのメモリデバイスは、１ページあたり４３２０バイトの情報、１ブロックあたり１２８ページ、１プレーンあたり２０４８ブロック、および１デバイスあたり１６プレーンを含むことができる。
【００１８】
メモリシステム１０４は、ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎのウェアレートを制御するために、ウェアレベリング、例えばガーベージコレクションおよび／または再利用を実装することができる。ソリッドステートメモリアレイは、１以上のプログラムおよび／または消去サイクルの後に、誤り、例えば失敗を経験する可能性がある。ウェアレベリングは、アレイ全体を通じてより均一にサイクルを展開することによって、特定のグループに行われるプログラムおよび／または消去サイクルの数を低減させることができる。ウェアレベリングは、ブロックを再利用するために移動させる有効なブロックの量を最小化するために、動的ウェアレベリングを含むことができる。動的ウェアレベリングは、ガーベージコレクションと呼ばれる手法を含むことができる。ガーベージコレクションは、例えば「貪欲アルゴリズム」によって、最も無効なページを有するブロックを再利用すること、例えば消去して書き込むために利用できるようにすることを含むことができる。あるいは、ガーベージコレクションは、閾値量を超える無効なページを伴うブロックを再利用することを含むことができる。書き込み操作のための十分なフリーブロックが存在する場合は、ガーベージコレクション操作が起こり得ない。無効なページは、例えば、異なるページに更新された情報のページであり得る。静的ウェアレベリングは、ブロックの寿命を延ばすために、高い消去回数を有するブロックに静的情報を書き込むことを含む。
【００１９】
書き込み増幅は、情報をソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎに書き込むときに起こり得るプロセスである。情報がメモリアレイの中にランダムに書き込まれるときに、ソリッドステートメモリシステムコントローラ１０８は、アレイの中の利用可能空間をスキャンする。メモリアレイの中の利用可能空間は、情報を記憶していないおよび／または消去された、メモリセルの個々のセル、ページ、および／またはブロックであり得る。選択された場所に情報を書き込むのに十分な利用可能空間がある場合、情報は、メモリアレイの選択された場所に書き込まれる。選択された場所に十分な利用可能空間がない場合、メモリアレイの中の情報は、選択された場所に既に存在する情報を読み出し、コピーし、移動させ、または別様には再書き込み、および消去することによって、新しい場所に再配置され、選択された場所に書き込まれる新しい情報のための利用可能空間を残す。メモリアレイの中の旧情報を再配置することは、メモリデバイスによって行われる書き込みの量が、選択された場所に十分な利用可能空間があった場合に起こる書き込みの量を超えて増幅されるので、書き込み増幅と呼ばれる。
【００２０】
図１で示されるコンピュータシステム１００は、図示されるものの他に、付加的な回路を含むことができる。図１で示されるコンピュータシステム１００の詳細は、本開示の実施形態を不明確にしないために削減されている。例えば、メモリシステム１０４は、Ｉ／Ｏ回路を通したＩ／Ｏ接続を通じて提供されるアドレス信号をラッチするための、アドレス回路を含むことができる。アドレス信号は、ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎにアクセスするために、行デコーダおよび列デコーダによって受け取って、復号化することができる。当業者には、アドレス入力接続部の数が、ソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎの密度および構造に依存し得ることが理解されるであろう。
【００２１】
図２は、本開示の１以上の実施形態に従う、メモリシステム２０４の機能ブロック図である。メモリシステム２０４は、ソリッドステートメモリシステムコントローラ２０８を含むことができる。ソリッドステートメモリシステムコントローラ２０８は、１以上のソリッドステートメモリデバイス、例えば図１で示されるソリッドステートメモリデバイス１１０−１、・・・、１１０−Ｎに連結することができる。図２で示される実施例において、１以上のメモリデバイスは、１以上の論理ユニット（ＬＵＮ）２５０を含む不揮発性メモリを含み、コントローラ２０８は、揮発性メモリ２１２を含む。ＬＵＮ２５０は、独立に制御可能であり得る不揮発性メモリの一部分とすることができる。メモリシステム２０４およびソリッドステートメモリシステムコントローラ２０８は、それぞれ、図１で示されるメモリシステム１０４およびソリッドステートメモリシステムコントローラ１０８に類似し得る。
【００２２】
ソリッドステートメモリシステムコントローラ２０８は、物理ホストインターフェース２０６を介して、ホスト、例えば図１で示されるホスト１０２とのインターフェースをとるための、ホストインターフェース（Ｉ／Ｆ）回路２１４を含むことができる。ソリッドステートメモリシステムコントローラ２０８は、ホスト−メモリ変換回路２１６、メモリ管理回路２１８、スイッチ２２０、不揮発性メモリ制御回路２２２、および／または揮発性メモリ制御回路２２４を含むことができる。本明細書で説明されるように、ソリッドステートメモリシステムコントローラ２０８は、ＡＳＩＣの形態で提供することができるが、実施形態は、そのように限定されない。
【００２３】
ホストＩ／Ｆ回路２１４は、ホスト−メモリ変換回路２１６に連結することができる。ホストＩ／Ｆ回路２１４は、物理インターフェース２０６等の、ホストに対する物理インターフェースに連結する、および／またはそれに組み込むことができる。ホストＩ／Ｆ回路２１４は、ホスト、例えば図１のホスト１０２とインターフェースをとることができる。ホストＩ／Ｆ回路２１４は、物理層、リンク層、およびトランスポート層またはトランザクション層インターフェースを提供する、周辺機器相互接続エクスプレス（ＰＣＩｅ）回路２３０を含むことができ、例えば、ここで、例えばホストは、ＰＣＩｅ規格に従って情報を伝送するように構成される。シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）規格および／またはシリアルアタッチメントＳＣＳＩ（ＳＡＳ）規格に従うトランスポート層は、ＰＣＩｅ規格に従うトランザクション層に類似し得る。ＰＣＩｅ回路２３０は、ホストバスアダプタ（ＨＢＡ）２３４、例えばアドバンストホストコントローラインターフェース（ＡＨＣＩ）互換のＨＢＡに連結することができる。ＨＢＡ２３４は、ＳＡ準拠デバイス２３６に連結することができ、これは、ホスト−メモリ変換回路２１６に連結することができる。
【００２４】
一般に、ホストＩ／Ｆ回路２１４は、ホストから、例えばＰＣＩｅバスから受け取ったコマンドパケットを、ホスト−メモリ変換回路２１６に対するコマンド命令に変換する役割を果たし、また、ホスト−メモリの変換応答を要求ホストに伝送するためのホストコマンドに変換する役割を果たす。例えば、ホストＩ／Ｆ回路２１４は、ＰＣＩｅに基づくトランザクション層パケットから、ＳＡコマンドパケットを構築することができる。ＨＢＡ２３４およびＳＡ準拠デバイス２３６は、下で図３Ａ−３Ｂに関してさらに詳細に説明される。
【００２５】
ホスト−メモリ変換回路２１６は、ホストＩ／Ｆ回路２１４、メモリ管理回路２１８、および／またはスイッチ２２０に連結することができる。ホスト−メモリ変換回路２１６は、ホストアドレスを、メモリアドレス、例えば読み出しおよび／または書き込みコマンド等の受け取ったコマンドと関連付けられるアドレスに変換するように構成することができる。例えば、そのような変換は、ＳＡＴＡ−メモリ回路２３８によって行われ得る。「ＳＡＴＡ−メモリ」回路２３８として識別されているが、該回路は、本明細書で説明されるように、ＳＡＳ等の他のシリアルアタッチメント用に設定することができる。ホスト−メモリ変換回路２１６は、例えば、ホストセクタの読み出しおよび書き込み操作を、特定のＬＵＮ２５０に向けられるコマンドに変換し得る。ホスト−メモリ変換回路２１６は、ＲＡＩＤ排他的論理和（ＸＯＲ）回路２２６等の、誤り検出／修正回路を含むことができる。ＲＡＩＤのＸＯＲ回路２２６は、ホストＩ／Ｆ回路２１４から受け取った情報に基づいて、パリティ情報を計算することができる。
【００２６】
メモリ管理回路２１８は、ホスト−メモリ変換回路２１６およびスイッチ２２０に連結することができる。メモリ管理回路２１８は、初期化、ウェアレベリング、例えばガーベージコレクションおよび／または再利用、ならびに／または誤り検出／修正が挙げられるが、それらに限定されない、１以上のメモリ操作を制御することができる。メモリ管理回路２１８は、プロセッサ２２８を含むことができるが、本開示の１以上の実施形態は、プロセッサ２２８によって、命令、例えばソフトウェアおよび／またはファームウェアの実行に依存することなく、回路、例えばハードウェアにおけるメモリ操作の制御を提供する。そのような実施形態は、メモリ操作を制御するためにプロセッサにより大きく依存するいくつかの以前の手法と比較して、より高速なメモリ操作を提供することができる。メモリ管理回路２１８は、ブロック管理回路２４０を含むことができるが、これは、図４に関してさらに詳細に説明される。
【００２７】
スイッチ２２０は、ホスト−メモリ変換回路２１６、メモリ管理回路２１８、不揮発性メモリ制御回路２２２、および／または揮発性メモリ制御回路２２４に連結することができる。スイッチ２２０は、クロスバースイッチとすることができ、１以上のバッファを含む、および／またはそれに連結することができる。例えば、スイッチ２２０は、内部スタティックランダムアクセスメモリ（ＳＲＡＭ）バッファ（ＩＳＢ）２２５を含むことができる。スイッチは、揮発性メモリ２１２に含まれる複数のダイナミックランダムアクセスメモリ（ＤＲＡＭ）バッファ２２７に連結することができる。スイッチは、バッファ割り当て管理（ＢＡＭ）回路２２１を含むことができるが、これは、バッファタグプール２２３を含むことができる。スイッチ２２０は、ソリッドステートメモリシステムコントローラ２０８の種々の構成要素間のインターフェースを提供することができる。スイッチ２２０は、構成要素間に一貫したアクセスおよび実装を提供するために、ソリッドステートメモリシステムコントローラ２０８の異なる構成要素と関連付けられ得る、定義済みのシグナリングプロトコルの変動を補償することができる。１以上の実施形態において、スイッチ２２０は、ダイレクトメモリアクセス（ＤＭＡ）モジュールとすることができる。
【００２８】
ＢＡＭ回路２２１の中のバッファタグプール２２３の中の複数のタグは、それぞれが複数のＤＲＡＭバッファ２２７または複数のＩＳＢ２２５のそれぞれ１つを識別することができる。特定のタグがＤＲＡＭバッファ２２７を指すときに、揮発性メモリ２１２のアドレスに記入するために、プログラム可能な「ＢＡＲ」アドレスをバッファタグに添付することができる。ＢＡＭ回路２２１は、１以上のハードウェアマスタのうちの１つからの割り当て要求に応じて、タグを１以上のハードウェアマスタのうちの１つに割り当てるように構成することができる。ハードウェアマスタは、メモリにアクセスすることができる、ハードウェア構成要素を含むことができる。
【００２９】
ＢＡＭ回路２２１は、複数のＤＲＡＭバッファ２２７のうちの１つを識別するタグよりも、複数のＩＳＢ２２５のうちの１つを識別するタグの割り当てを優先させるように構成することができる。ＩＳＢ２２５は、ＤＲＡＭバッファ２２７よりも高速かつ低電力であり得、したがって、それに好ましい。したがって、ＢＡＭ回路２２１は、ＩＳＢ２２５を識別する全てのタグが割り当てられた後にだけ、複数のＤＲＡＭバッファ２２７のうちの１つを識別するタグが割り当てられるように、タグの割り当てを優先させるように構成することができる。１以上の実施形態において、ソリッドステートメモリシステムコントローラ２０８は、合計１０２４個のバッファについて、７６８個のＤＲＡＭバッファ２２７および２５６個のＩＳＢ２２５を含むことができる。そのような実施形態において、バッファタグは、１０２４個のバッファのうちの１つを識別する、１０ビットのタグとすることができる。バッファタグは、ハードウェアマスタに対していかなる特定の意味も有し得ないが、正しいバッファが参照されることを可能にするために、コマンド、例えば読み出しおよび／または書き込みコマンドの処理中に、ハードウェアマスタによって伝達される。１以上のハードウェアマスタは、複数のＩＳＢ２２５のうちの１つまたは複数のＤＲＡＭバッファ２２７のうちの１つに特有のタグの割り当てを要求することなく、全体的にタグの割り当てを要求するように構成することができる。１以上の実施形態において、ＤＲＡＭバッファ２２７およびＩＳＢ２２５のそれぞれは、最大のサポートされたメモリページのサイズ、例えば４ＫＢに等しいサイズとすることができる。
【００３０】
ＢＡＭ回路２２１は、非機能（機能していない）バッファと関連付けられるタグをバッファプール２２３から除去するように構成される。プロセッサ２２８は、ＢＡＭ回路２２１にアクセスし、非機能バッファと関連付けられるタグをバッファプール２２３から除去するように構成することができる。そのような実施形態は、１つ以上のＩＳＢ２２５が故障した場合であっても、ソリッドステートメモリシステムコントローラ２０８が適切に機能するのを補助することができる。いくつかの実施形態において、「不良な」バッファを除去する、例えば「マップアウトする」能力は、製造中にＩＳＢ２２５を試験する代わりに使用することができる。１以上のＩＳＢ２２５を失うことが、ソリッドステートメモリシステムコントローラ２０８の操作に著しく影響を及ぼさないように、スイッチ２２０には、ＩＳＢ２２５を「オーバープロビジョニング（多めに搭載）」し得る。
【００３１】
１以上のハードウェアマスタは、読み出しコマンドまたは書き込みコマンドと併せてＢＡＭ回路２２１からのタグの割り当てを要求し、読み出しコマンドまたは書き込みコマンドの完了と併せてＢＡＭ回路２２１からの割り当てられたタグの割り当て解除を要求するように構成することができる。ハードウェアマスタは、複数のコマンドについて同じタグを使用せず、したがって、各コマンドについて新しいタグを要求しない。ハードウェアマスタは、例えば、十分なバッファ、特にＩＳＢ２２５が、複数のハードウェアマスタから複数のコマンドが利用可能であることを確実にするのを補助するために、割り当て要求よりも割り当て解除要求を優先させるように構成することができる。
【００３２】
バッファタグの使用は、読み出し操作を容易にすることができる。ハードウェアマスタは、割り当てられたタグとともに、読み出しコマンドを不揮発性メモリ制御回路２２２に送るように構成することができる。不揮発性メモリ制御回路２２２は、読み出しコマンドに対応する情報を、割り当てられたタグによって識別されるバッファに記憶し、読み出しコマンドを送った特定のハードウェアマスタに、情報の準備ができていることを通知するように構成することができる。
【００３３】
バッファタグの使用は、書き込み操作を容易にすることができる。ハードウェアマスタは、割り当てられたタグとともに、書き込みコマンドを不揮発性メモリ制御回路２２２に送り、書き込みコマンドに対応する情報を、割り当てられたタグによって識別されるバッファに記憶するように構成することができる。不揮発性メモリ制御回路２２２は、割り当てられたタグによって識別されるバッファから情報を取り出し、該情報を不揮発性メモリ、例えば適切なＬＵＮ２５０に書き込み、そして、書き込みコマンドを送ったハードウェアマスタに、情報が書き込まれたことを通知するように構成することができる。
【００３４】
メモリ管理回路２１８の中のプロセッサ２２８は、ハードウェアマスタとすることができる。プロセッサ２２８は、不揮発性メモリ制御回路２２２と、複数のタグに関係なく揮発性メモリ２１２の空間全体が利用可能な揮発性メモリ制御回路２２４との間のダイレクトメモリアクセス（ＤＭＡ）操作を有効にするように構成することができる。他のハードウェアマスタは、ＤＭＡ機能を有効にし得ず、したがって、メモリ空間に直接アクセスするのではなく、バッファにアクセスするためのタグに依存し得る。プロセッサ２２８は、メモリ空間にアクセスするためのバッファの必要性を回避するコマンドパイプラインを通して送られるコマンドと併せて使用されるフィールドの情報を介して、ＤＭＡ操作を有効にすることができる。例えば、情報「ＤＭＡ＿Ｅｎ  ＢＡＲＳＥＬ」は、あるコマンドとともに使用されるフィールドに含めることができ、ここで、「ＤＭＡ＿Ｅｎ」は、ＤＭＡ操作が有効になっていることを受信機に示し、またここで、「ＢＡＲＳＥＬ」は、本明細書で説明されるように、バッファタグの代わりにＤＲＡＭのためにアドレスを含めるべきであることを示す。したがって、プロセッサ２２８は、他のハードウェアマスタのためのバッファに基づくアクセスと同じ論理を使用して、揮発性メモリ２１２とＬＵＮ２５０との間で情報を移動させることができる。「ＤＭＡ＿Ｅｎ」は、ＬＵＮ２５０にアクセスするときに、チャネル制御回路２４８によってスイッチ２２０にエコーすることができる。チャネル制御回路２４８の観点から、ＤＭＡアクセスは、バッファに基づくアクセスと実質的に同一である。「ＤＭＡ＿Ｅｎ」がアサートされる場合、スイッチ２２０は、揮発性メモリ２１２に要求を強制することができる。「ＢＡＲＳＥＬ」は、バッファタグがＤＲＡＭバッファ２２７を指すときに、該バッファタグに添付される「ＢＡＲ」アドレスに類似する一意の「ＢＡＲ」をスワップするために、スイッチ２２０によって使用される。例えば、「ＢＡＲ」アドレスは、４つの場所のうちの１つを指す２ビットのアドレスとすることができるが、実施形態は、そのように限定されない。「ＢＡＲ」アドレスの使用は、異なる同時のＤＭＡを可能にすることができる。
【００３５】
不揮発性メモリ制御回路２２２は、スイッチ２２０に連結することができる。不揮発性メモリ制御回路２２２は、不揮発性メモリデバイスに連結することができる。図２は、１以上のＬＵＮ２５０を含む、不揮発性メモリデバイスを示す。１以上のＬＵＮ２５０は、１以上のチャネルによって不揮発性メモリ制御回路２２２に連結することができる。いくつかの実施形態において、１以上のチャネルは、不揮発性メモリ制御回路２２２によって集合的に制御することができる。１以上の実施形態において、各メモリチャネルは、図２で図示されるように、別々のチャネル制御回路２４８に連結される。特定のチャネル制御回路２４８は、単一のチャネルによって２つ以上のＬＵＮ２５０を制御し、それに連結することができる。１以上の実施形態において、チャネル制御回路２４８は、オープンＮＡＮＤフラッシュインターフェース（ＯＮＦＩ）準拠のバスによって複数のＬＵＮ２５０に連結することができる。
【００３６】
不揮発性メモリ制御回路２２２は、チャネル制御回路２４８によって実行されるのを待機する間にコマンドが存在する、コマンドパイプラインの少なくとも一部分を含む。ＬＵＮ２５０に対する要求を開始する全てのハードウェアマスタは、スイッチ２２０を通して同じコマンドパイプラインを共有することができる。ホストからの読み出しコマンド（ホストが読み出す）について、ホストは、１つ以上のＬＵＮ２５０に記憶される特定の情報を必要とするので、ＬＵＮ２５０にアクセスするいかなる制御もない。同様に、ホストトラフィックの量を超えるいかなる制御もない。本明細書で説明されるコマンドパイプラインは、ＬＵＮ２５０間でのプログラム時間、読み出し時間、および消去時間の競合を隠す際の柔軟性を提供することができる。例えば、消去時間は、プログラム時間または読み出し時間よりも長くなり得る。各チャネル制御回路２４８は、複数のチャネルによって複数のＬＵＮ２５０に連結することができる。したがって、特定のＬＵＮについて特定のチャネル制御回路２４８によって消去コマンドが実行されている間、特定のチャネル制御回路２４８は、同じチャネル上の異なるＬＵＮ２５０について別のコマンドを実行し得る。
【００３７】
不揮発性メモリ制御回路２２２は、チャネル制御回路２４８のそれぞれに連結される、チャネル要求キュー（ＣＲＱ）２４２を含むことができる。各チャネル制御回路２４８は、複数のＬＵＮコマンドキュー（ＬＣＱ）２４６に連結される、ＬＵＮ要求キュー（ＬＲＱ）２４４を含むことができる。ＬＲＱ２４４は、深さＬのキュー回路とすることができ、ここで、Ｌは、１つのチャネル制御回路２４８あたりのＬＵＮ２５０の数に等しい。ＣＲＱ２４２は、深さＣのキュー回路とすることができ、ここで、Ｃは、例えば、ｘ＊（複数のチャネル制御回路２４８）に等しく、ここで、ｘは、正の整数値、例えば４である。例えば、不揮発性メモリ制御回路２２２は、１チャネルあたり１６個のＬＵＮを伴う３２個のチャネルと、チャネル間で共有されるコマンド記憶用の最高で１２８個のエントリを記憶するように構成される、１つの深さ１２８のＣＲＱ２４２と、特定のチャネル上のＬＵＮ２５０間で最高で１６個のコマンドを記憶するように構成される、１チャネルあたり１つの深さ１６のＬＲＱ２４４と、１チャネルあたり１つの深さ２のＬＣＱ２４６とを含むことができ、ここで、ＬＣＱ２４６は、先入れ先出し（ＦＩＦＯ）回路である。例えば、深さ２のＦＩＦＯは、現在のコマンド、および現在のコマンドに続いて実行される次のコマンドをキューに入れるように構成することができる。そのような実施形態は、１０２４個のエントリ（５１２個のＬＵＮ×深さ２のＬＣＱ）と、５１２個のエントリ（１チャネルあたり１つの深さ１６のＬＲＱ×３２個のチャネル）と、（１つの深さ１２８のＣＲＱ）との合計（１０２４＋５１２＋１２８）、すなわち１６６４個のコマンド記憶エントリを提供する。本明細書で説明されるように、そのようなコマンドパイプライン構造は、５２４，２８８個のコマンド記憶エントリ（１チャネルあたり３２個のＬＵＮ×１６個のチャネル×ＬＵＮ１つあたり深さ１０２４のＦＩＦＯ＝５２４，２８８）と同じ性能を、その何分の一かのサイズで提供することができる。
【００３８】
ＣＲＱ２４２は、スイッチ２２０からコマンドを受け取り、該コマンドをＬＲＱ２４４のうちの１つ、例えばコマンドが対象とする特定のＬＵＮ２５０と関連付けられるチャネルと関連付けられるＬＲＱ２４４に中継するように構成することができる。ＬＲＱ２４４は、特定のＬＵＮ２５０に対する第１の複数のコマンドを、ＬＲＱ２４４によって第１の複数のコマンドが受け取られた順序で、特定のＬＵＮ２５０と関連付けられるＬＣＱ２４６に中継するように構成することができる。コマンドパイプラインは、同じＬＵＮ２５０に対するコマンドが、ある順序で、例えばＬＲＱ２４４によってコマンドが受け取られた順序で移動するように構造化される。ＬＲＱ２４４は、特定のＬＵＮ２５０と関連付けられるＬＣＱ２４６が満杯であることに応じて、特定のＬＵＮ２５０に対するコマンドをキューに入れるように構成することができ、ＣＲＱ２４２は、特定のＬＲＱ２４４が満杯であることに応じて、特定のＬＲＱ２４４に対するコマンドをキューに入れるように構成することができる。
【００３９】
ＬＲＱ２４４は、異なるＬＵＮ２５０に対する第２の複数のコマンドを、異なるＬＵＮ２５０の状態に応じた順序で、異なるＬＵＮ２５０と関連付けられるＬＣＱ２４６に中継するように構成することができる。例えば、異なるＬＵＮ２５０の状態は、レディ／ビジー状態とすることができる。コマンドパイプラインは、異なるＬＵＮ２５０間でコマンドを、異なる順序で、例えば、その時点で何が全体的なメモリ操作に効率的であるかに従って、ＬＲＱ２４４によってコマンドが受け取られた順序とは異なる順序で移動させることができるように構造化される。例えば、ＬＲＱ２４４は、第２のＬＣＱ２４６に関連付けられる異なるＬＵＮ２５０の状態がビジーであることに応じて、第２の複数のコマンドのうちの第２のコマンドを第２のＬＣＱ２４６に中継する前に、第２の複数のコマンドのうちの第１のコマンドを第１のＬＣＱ２４６に中継するように構成することができ、ここで、第２の複数のコマンドのうちの第１のコマンドは、第２の複数のコマンドのうちの第２のコマンドよりも時間的に後に受け取られる。ＬＲＱ２４４は、第２のＬＣＱ２４６と関連付けられるＬＵＮ２５０の状態がレディであることに応じて、例えば第２の複数のコマンドのうちの第１のコマンドを中継した後で、第２の複数のコマンドのうちの第２のコマンドを第２のＬＣＱ２４６に中継するように構成することができる。
【００４０】
各チャネルについて別々の不揮発性メモリチャネル制御回路を含む、１以上の実施形態は、各チャネル制御回路２４８に連結される、別々の誤り検出／修正回路２３２、例えば誤り訂正コード（ＥＣＣ）回路、および／または２つ以上のチャネルで使用することができる１以上の誤り検出／訂正回路２３２を含むことができる。誤り検出／修正回路２３２は、ＬＵＮ２５０に記憶される情報と関連付けられる誤りを検出および／または訂正するために、当業者によって理解されるように、ＢＣＨ誤り訂正等の誤り訂正を適用するように構成することができる。例えば、誤り検出／修正回路は、１０８０ビットの符号語を通じて２９ビットの誤り訂正を提供することができる。誤り検出／修正回路２３２は、シングルおよび／またはマルチレベルセル（ＳＬＣ／ＭＬＣ）操作のための異なる誤り修正方式を提供するように構成することができる。
【００４１】
揮発性メモリ制御回路２２４は、スイッチ２２０、および揮発性メモリ２１２、例えば１以上の揮発性メモリデバイスに連結することができる。数ある情報の中でも、１以上の揮発性メモリデバイスは、図４に関してさらに詳細に説明するように、ＬＢＡテーブルおよび／またはブロックテーブルを記憶することができる。
【００４２】
図３Ａは、本開示の１以上の実施形態に従う、ホストバスアダプタ（ＨＢＡ）３３４とシリアルアタッチメント（ＳＡ）プログラミング準拠デバイス３３６との間のトランスポート層インターフェースの機能ブロック図である。ＨＢＡ３３４は、図２で示されるＨＢＡ２３４に類似し得る。ＳＡプログラミング準拠デバイス３３６は、図２で示されるＳＡプログラミング準拠デバイス２３６に類似し得る。１以上の実施形態において、ＳＡプログラミング準拠デバイス３３６は、シリアルアドバンストテクノロジー（ＳＡＴＡ）プログラミング準拠デバイスとすることができる。１以上の実施形態において、ＳＡプログラミング準拠デバイス３３６は、シリアルアタッチメントＳＣＳＩ（ＳＡＳ）プログラミング準拠デバイスとすることができる。
【００４３】
ＳＡプロトコルは、層を使用して、概念的に定義される。低位から高位への順序で、ＳＡＴＡの場合、これらは、物理層、リンク層、トランスポート層、およびコマンド層を含む。低位から高位への順序で、ＳＡＳの場合、これらは、物理層、ＰＨＹ層、リンク層、ポート層、トランスポート層、およびアプリケーション層を含む。コマンド層および／またはアプリケーション層情報は、コマンドをフレーム情報構造（ＦＩＳ）に分割することによって、トランスポート層上で通信することができる。いくつかの以前の手法によれば、ＦＩＳは、プリミティブを使用してリンク層上で通信を使用して通信されていた。プリミティブは、符号語を使用して物理層上で通信され、８ｂ１０ｂ符号化を使用して、ＳＡＴＡまたはＳＡＳケーブル上で伝送されていた。ＳＡＴＡまたはＳＡＳケーブル上の通信は、ホストの観点から送信（Ｔｘ）および受信（Ｒｘ）として参照される２つの差動対のワイヤで構成される。これらのワイヤは、コマンドまたは情報のいずれかを伝送することができ、制御のためにアービトレートされていた。この方式の１つの制限は、通信がケーブル上でアービトレートされると、それが、生じる唯一の通信であるということである。すなわち、ＳＡＴＡまたはＳＡＳは、単に所与の時間に単一のＦＩＳを伝送することだけしかできない。
【００４４】
ＨＢＡ３３４とＳＡプログラミング準拠デバイス３３６とのインターフェースが、例えば図２で示されるソリッドステートメモリシステムコントローラ２０８の場合のように、完全にコントローラ内にある場合、情報の流れは、ケーブル接続されたＳＡ物理層の制約から解放される。本開示の１以上の実施形態は、コマンド層３５２およびトランスポート層３５４によってサポートされるＦＩＳおよびコマンドの使用量を維持しながら、物理層およびリンク層の使用を放棄する。並行処理は、４組の入力／出力、例えば、コマンド（Ｃｍｄ）、応答（Ｒｓｐ）、書き込みデータ（ＷｒＤａｔａ）、および読み出しデータ（ＲｄＤａｔａ）として、物理通信を定義することによって達成することができる。したがって、特定機能相互接続を利用することによって、コマンドと、応答と、情報送達との間には、競合がもはや存在しない。それらは、パイプライン化され、並行して操作することができる。すなわち、特定機能相互接続は、ＨＢＡ３３４と、ＳＡプログラミング準拠デバイス３３６との間で、コマンド、応答、および情報を同時に転送するように構成することができる。特定機能相互接続は、ＳＡプログラミング準拠デバイス３３６上のＣｍｄ入力に連結されるＨＢＡ３３４上のＣｍｄ出力、ＨＢＡ３３４上のＲｓｐ入力に連結されるＳＡプログラミング準拠デバイス３３６上のＲｓｐ出力、ＳＡプログラミング準拠デバイス３３６上のＷｒＤａｔａ入力に連結されるＨＢＡ３３４上のＷｒＤａｔａ出力、およびＨＢＡ３３４上のＲｄＤａｔａ入力に連結されるＳＡプログラミング準拠デバイス３３６上のＲｄＤａｔａ出力を含むことができる。１以上の実施形態において、Ｃｍｄ、Ｒｓｐ、ＷｒＤａｔａ、およびＲｄＤａｔａの入力／出力対のそれぞれは、一方向性とすることができ、８ｂ１０ｂ符号化もプリミティブも利用しない。
【００４５】
特定機能相互接続は、数ある中でも、第１のコマンドプロトコル、例えば、ネイティブコマンドキューイング（ＮＣＱ）および／またはタグ付きコマンドキューイング（ＴＣＱ）に応じて、コマンドインターフェース（ＨＢＡ３３４上のＣｍｄ出力およびＳＡプログラミング準拠デバイス３３６上のＣｍｄ入力）、応答インターフェース（ＨＢＡ３３４上のＲｓｐ入力およびＳＡプログラミング準拠デバイス３３６上のＲｓｐ出力）、および情報インターフェース（ＨＢＡ３３４上のＷｒＤａｔａ出力およびＳＡプログラミング準拠デバイス３３６上のＷｒＤａｔａ入力、ならびに／またはＨＢＡ３３４上のＲｄＤａｔａ入力およびＳＡプログラミング準拠デバイス３３６上のＲｄＤａｔａ出力）を並行して操作するように構成することができる。特定機能相互接続は、数ある中でも、第２のコマンドプロトコル、例えばＮｏｎＤａｔａ、プログラム式入力／出力（ＰＩＯ）、および／または直接メモリアクセス（ＤＭＡ）に応じて、コマンドインターフェース、応答インターフェース、および情報インターフェースをアトミックに操作するように構成することができる。
【００４６】
コマンドインターフェースは、ホスト−デバイス（ＨＤ）ＦＩＳをＨＢＡ３３４からＳＡプログラミング準拠デバイス３３６に送達するために使用することができる。ＨＢＡ３３４上のＷｒＤａｔａ出力は、情報をＳＡプログラミング準拠デバイス３３６上のＷｒＤａｔａ入力に送達するために使用することができる。ＳＡプログラミング準拠デバイス３３６上のＲｄＤａｔａ出力は、情報をＨＢＡ３３４上のＲｄＤａｔａ入力に送達するために使用することができる。応答インターフェースは、情報送達、例えばＰＩＯＳｅｔｕｐｓ、ＤＭＡＡｃｔｉｖａｔｅｓ、ＤＭＡＳｅｔｕｐｓ等を使用するもの、および通信完了、例えば、デバイス−ホスト（ＤＨ）および／またはセットデバイスビット（ＳＤＢ）等を制限するために使用することができる。情報送達を制限することは、情報が送達される順序を定義することを含むことができる。バッファリングの使用は、対応する応答ＦＩＳの前に情報の移動を開始することを可能にすることができる。
【００４７】
図３Ｂは、本開示の１以上の実施形態に従う、ＨＢＡ３３４およびＳＡプログラミング準拠デバイス３３６の機能ブロック図である。ＨＢＡ３３４は、図３Ａで示されるＨＢＡ２３４に類似し得、より詳細に示される。ＳＡプログラミング準拠デバイス３３６は、図３Ａで示されるＳＡプログラミング準拠デバイス２３６に類似し得、より詳細に示される。
【００４８】
ＨＢＡ３３４は、Ｃｍｄ出力をＳＡプログラミング準拠デバイス３３６に提供する、コマンドフェッチャ３５６を含むことができる。ＨＢＡ３３４は、ＳＡプログラミング準拠デバイス３３６からＲｓｐ入力を受け取る、応答受信機３５８を含むことができる。ＨＢＡ３３４は、ＳＡプログラミング準拠デバイス３３６にＷｒＤａｔａ出力を提供する、下流側ＤＭＡデバイス３６０を含むことができる。ＨＢＡ３３４は、ＳＡプログラミング準拠デバイス３３６からＲｄＤａｔａ入力を受け取る、上流側ＤＭＡデバイス３６２を含むことができる。Ｃｍｄフェッチャ３５６、Ｒｓｐ受信機３５８、下流側ＤＭＡ３６０、および上流側ＤＭＡ３６２のそれぞれは、互いに独立に操作することができるが、１以上の実施形態では、ＨＢＡ  ＦＳＭ３７２、例えばＡＨＣＩプロトコルを実施することができるようなアドバンストホストコントローラインターフェース（ＡＨＣＩ）状態機械との操作を同期させることができる、ハードウェア構成要素とすることができる。
【００４９】
下流側ＤＭＡデバイス３６０およびＣｍｄフェッチャ３５６は、下流側書き込みおよび／または上流側読み出しのためバスインターフェース（Ｉ／Ｆ）３６４に連結することができる。バスＩ／Ｆ３６４は、Ｃｍｄフェッチャ３５６から要求を受け取り、該要求をＰＣＩｅＩ／Ｆ、例えば図２で示されるＰＣＩｅ回路２３０とのインターフェースに伝達し、そして適切なときに、返信をＣｍｄフェッチャ３５６に返すように構成することができる。バスＩ／Ｆ３６４はまた、ＰＣＩｅＩ／Ｆから情報を受け取り、例えば書き込み情報をフェッチする要求を、それに送るように構成することもできる。下流側ＤＭＡデバイス３６０は、書き込み情報を受け取るのに十分なバッファリングが存在するときに、ＢｕｓＩ／Ｆ３６４を介して、複数のＰＣＩｅ読み出し要求をパイプラインで送るように構成することができる。ＢｕｓＩ／Ｆ３６４を介してＰＣＩｅＩ／Ｆに送られる各要求は、ＰＣＩｅＩ／Ｆからそれぞれの書き込みバッファに情報を向ける回転バッファタグの割り当てを生じさせることができる。情報は、次いで、ＳＡプログラミング準拠デバイス３３６に送信されるように、回転様式で書き込みバッファから除去することができる。Ｒｓｐ受信機３５８および上流側ＤＭＡデバイス３６２は、下流側読み出しおよび／または上流側書き込みのためのバスＩ／Ｆ３６６に連結することができる。バスＩ／Ｆ３６６は、ＰＣＩｅＩ／Ｆを介して、情報および／または要求を伝送するように構成することができる。
【００５０】
ＨＢＡ３３４の構造は、単一のＡＨＣＩポートをホストデバイスドライバソフトウェアに提示することができるが、ポート内のコマンドスロットの数を、例えば２５６まで拡張することができる。独自のホストデバイスドライバは、制御レジスタ３７０、例えば８つの３２ビットコマンド発行レジスタによって、スロットにアクセスすることができる。制御レジスタ３７０は、書き込み制御情報の入力および読み出し制御情報の出力のための制御インターフェース３６８を介して、ＰＣＩｅＩ／Ｆに接続することができる。１以上の実施形態において、Ｃｍｄフェッチャ３５６は、コマンドが発行された順序で、コマンドを取り出し、それをＳＡプログラミング準拠デバイス３３６に転送することができる。１以上のコマンド、例えば３２個のコマンドを、制御レジスタ３７０内で同時に受け取り、Ｃｍｄフェッチャ３５６に対してエンキューすることができる。
【００５１】
１以上のコマンドスロットは、コマンドスロットグループにグループ化し、それらに割り当てられるメッセージ信号割り込み（ＭＳＩ）ベクタ、例えばＭＳＩ−Ｘベクタを有することができる。そのような実施形態は、複数のポートに対するコマンドのための３２ビットＡＨＣＩレジスタを含むいくつかの以前の手法に対して有益であり得る。本開示の１以上の実施形態は、コマンドのための２５６ビットレジスタを伴う１つのポートを含むが、これは、ホスト、例えば図１で示されるホスト１０２において、割り込み性能を最適化することができる可能性を高める等のために、ＭＳＩベクタを伴うコマンドのグループ化を好都合なものにすることができる。
【００５２】
ＨＢＡ３３４は、ＮＣＱの読み出しをインターリーブ様式で返すように、コンテキストアレイを使用することができる。特定の読み出しコマンド内の情報は順番に処理するが、複数の未処理の読み出しコマンドの部分が、互いにインターリーブされ得る。読み出しコンテキストが、ＳＡプログラミング準拠デバイス３３６によって開始されるときに、ＨＢＡ３３４は、コンテキストアレイから読み出しコマンドの現在の状態の記録を取り出し、最後に中断された位置から継続することができる。読み出しコンテキストが完了したときに、ＨＢＡ３３４は、更新されたコマンド進捗値をコンテキストアレイに記憶することができる。コンテキストアレイの場所は、各可能な未処理の読み出しコマンド、例えば２５６個の未処理の読み出しコマンドについて存在し得る。書き込みには、類似したコンテキストアレイが使用され得る。
【００５３】
ＳＡプログラミング準拠デバイス３３６は、ＨＢＡ３３４、例えばＨＢＡ３３４のコマンドフェッチャ３５６からのＣｍｄ入力を受け取る、コマンド有限状態機械（ＦＳＭ）３７４を含むことができる。ＳＡプログラミング準拠デバイス３３６は、ＨＢＡ３３４、例えばＨＢＡ３３４の応答受信機３５８へのＲｓｐ出力を提供する、デバイス−ホストアービタ（ＤＨ  ＡＲＢ）３７６を含むことができる。ＳＡプログラミング準拠デバイス３３６は、ＨＢＡ３３４、例えばＨＢＡ３３４の下流側ＤＭＡ３６０からのＷｒＤａｔａ入力を受け取る、書き込みＦＳＭ３７８を含むことができる。ＳＡプログラミング準拠デバイス３３６は、ＨＢＡ３３４、例えばＨＢＡ３３４の上流側ＤＭＡ３６２へのＲｄＤａｔａ出力を提供する、読み出しＦＳＭ３８０を含むことができる。例えば図２で示されるホスト−メモリ変換回路２１６を介して、ＷｒＦＳＭ３７８は、メモリへの出力を提供することができ、また、ＲｄＦＳＭ３８０は、メモリからの入力を提供することができる。
【００５４】
ＤＨ  ＡＲＢ３７６は、例えばＤＨ、ＳＤＢ等の通信のための、ＣｍｄＦＳＭ３７４からの入力を有することができる。ＤＨ  ＡＲＢ３７６は、例えば書き込みＤＭＡＳｅｔｕｐｓのための、ＷｒＦＳＭ３７８からの入力を含むことができる。ＤＨ  ＡＲＢ３７６は、例えば読み出しＤＭＡＳｅｔｕｐのための、ＲｄＦＳＭ３８０からの入力を含むことができる。ＤＨ  ＡＲＢ３７６は、ＣｍｄＦＳＭ３７４、ＷｒＦＳＭ３７８、およびＲｄＦＳＭ３８０からの入力に基づいて、ＨＢＡ３３４に対する情報送達の順序および通信完了を制限するように構成することができる。ＷｒＦＳＭ３７８は、ＤＨ  ＡＲＢ３７６が書き込み情報送達の順序を制限する前に、書き込み情報をバッファリングするように構成される、書き込みバッファを含むことができる。ＲｄＦＳＭ３８０は、ＤＨ  ＡＲＢ３７６が読み出し情報送達の順序を制限する前に、読み出し情報をバッファリングするように構成される、書き込みバッファを含むことができる。
【００５５】
１以上の実施形態において、ＣｍｄＦＳＭ３７４は、デフォルトで並行して操作するように構成することができる。ＣｍｄＦＳＭ３７４は、ＰＩＯまたはＤＭＡ等の単一コンテキストのコマンドプロトコルの検出に応じて、アトミックに、例えば「ＣｕｒｒｅｎｃｙＤｉｓａｂｌｅｄ」モードで操作するように構成することができる。アトミックに操作するときに、ＣｍｄＦＳＭ３７４は、１つがＷｒＦＳＭ３７８に対し、１つがＲｄＦＳＭ３８０に対する２つの「ＰａｓｓＣｏｎｔｒｏｌ」信号のうちの１つをアサートするように構成することができる。その後に、ＣｍｄＦＳＭ３７４は、リセットコマンドが受け取られるまで、またはＷｒＦＳＭ３７８またはＲｄＦＳＭ３８０のいずれかから「ＲｅｔｒｕｎＣｏｎｔｒｏｌ」信号がアサートされるまで、「ＷａｉｔＦｏｒＣｔｌ」状態に入ることができる。検出プロトコルがＮｏｎＤａｔａである場合、どちらのＰａｓｓＣｏｎｔｒｏｌ信号もアサートされない。ＣｍｄＦＳＭ３７４は、コマンド自体を使用可能にし、完了時にアイドル状態に戻ることができる。論理が、コマンドタグを放棄する準備ができたことを示す場合、ＣｍｄＦＳＭは、適切なＳＤＢ  ＦＩＳを生成し、アイドル状態に戻ることができる。
【００５６】
１以上の実施形態において、ＷｒＦＳＭ３７８およびＲｄＦＳＭ３８０は、デフォルトで並行して操作するように構成することができる。ＷｒＦＳＭ３７８およびＲｄＦＳＭ３８０は、ＣｍｄＦＳＭ３７４からのＰａｓｓＣｏｎｔｒｏｌ信号の受け取り時に、および／またはＰＩＯもしくはＤＭＡ等の単一コンテキストのコマンドプロトコルの検出時に、アトミックに操作するように構成することができる。ＷｒＦＳＭ３７８および／またはＲｄＦＳＭ３８０は、コマンドカウントが完了する、または誤り条件が満たされる、のいずれかまで、ＳＡプロトコル、例えばＳＡＴＡプロトコルまたはＳＡＳプロトコルに従って、アトミックに操作することができ、その場合、それぞれのＦＳＭは、そのＲｔｎＣｔｌ信号をアサートすることができ、これは、そのＷａｉｔＦｏｒＣｔｌ状態からＣｍｄＦＳＭ３７４を発行することができる。これとは逆に、並行操作は、各ＦＳＭが、独立に情報を移動させることを可能にする。
【００５７】
図４は、本開示の１以上の実施形態に従う、ブロック管理デバイス４４０の機能ブロック図を示す。ブロック管理デバイス４４０は、図２で示されるブロック管理デバイス２４０に類似し得、メモリ管理回路に含めることができる。ブロック管理デバイス４４０は、図２で示される揮発性メモリ２１２に類似し得る揮発性メモリ４１２、例えばＤＲＡＭと通信することができる。したがって、例えば、ブロック管理デバイス４４０は、スイッチおよび揮発性メモリ制御回路を介して、揮発性メモリ４１２と通信することができる。揮発性メモリ４１２は、数ある情報の中でも、論理ブロックアドレス（ＬＢＡ）テーブル４８２、ブロックテーブル４８４、および／またはトランザクションログ４８６を記憶することができる。
【００５８】
ＬＢＡテーブル４８２は、ＬＵＮ、例えば図２で示されるＬＵＮ２５０のページの物理ページアドレスを記憶し、かつ、それに対応する論理アドレスを含むことができる。すなわち、ＬＢＡテーブル４８２は、論理−物理および／または物理−論理アドレス変換を記憶することができる。したがって、ＬＢＡテーブル４８２は、対応する情報を記憶することができる、論理ブロックアドレスに対応する物理ページアドレスをルックアップするために使用することができる。ＬＢＡテーブル４８２は、関連するＳＡコマンドに含まれるＬＢＡによってインデックスを付けることができる。ブロックテーブル４８４は、１以上のＬＵＮの消去可能なブロックのための情報を記憶することができる。ブロックテーブル４８４に記憶される情報は、有効なページ情報、消去カウント、ならびに他の健全性および／または状態情報を含むことができる。ブロックテーブル４８４からアクセスされる情報は、物理ブロックアドレスによってインデックスを付けることができる。トランザクションログ４８６は、ＬＵＮで起こる書き込みに関する情報を記録するために使用することができる。１以上の実施形態において、トランザクションログ４８６は、ＬＵＮへの書き込みと同時に更新することができる。トランザクションログ４８６は、例えば、突然の停電または不揮発性メモリに対するＬＢＡテーブル４８２の更新間の他の誤りのため失い得る、ＬＢＡテーブル４８２の一部分の再現を容易にするために、ＬＢＡテーブル４８２が不揮発性メモリに最後に保存されて以来起こった、ＬＵＮへの書き込みに関する情報を含むことができる。
【００５９】
ブロック管理デバイス４４０内で表されるオブジェクトのいくつかは、ブロック管理デバイス４４０によって提供される機能を示す。ＬＢＡテーブルルックアップ機能４９０は、論理−物理アドレス変換を行うために、揮発性メモリ４１２の中のＬＢＡテーブル４８２を参照することができる。ＬＢＡテーブルルックアップ機能４９０は、論理アドレスと関連付けられる情報が更新されるときに、論理アドレスに対応する新しい物理アドレスを伴うＬＢＡテーブル４８２を更新することができる。ブロックテーブルルックアップ機能４９１は、例えば、再利用および／またはガーベージコレクション等のウェアレベリングの候補を決定するために、揮発性メモリ４１２の中のブロックテーブル４８４を参照することができる。再利用は、ブロックが消去される前に、消去されるブロックから新しい場所に全ての有効なページを移動させることを含むことができる。ブロック再利用機能４９３は、揮発性メモリ４１２の中のトランザクションログ４８６を参照することができる。
【００６０】
メモリ管理回路、例えばブロック管理デバイス４４０のローカルメモリに記憶されるブロックアレイ４９２は、例えばＬＢＡテーブルルックアップ機能４９０および／またはブロックテーブルルックアップ機能４９１によってブロックアレイ４９２が参照されるときに、再利用ページ候補４９４、消去ブロック候補４９５、再利用書き込みブロック候補４９６、および／またはホスト書き込みブロック候補４９７を追跡することができる。そのような候補は、揮発性メモリの速度で、揮発性メモリ４１２、例えばＤＲＡＭから読み出す、またはそれに書き込むときに、各ブロックの健全性および／または状態情報を分析するために、専用のハードウェアを使用して、システムの中の各ＬＵＮについて選択することができる。各ＬＵＮの現在の候補は、ブロックアレイ４９２に記憶することができる。ブロックテーブル４８４がアクセスされる度に、パイプライン化された構造は、ブロックアレイ４９２から現在の最良の候補を取り出し、それを新しいブロックテーブル４８４アクセスと比較することができる。新しいブロックテーブル４８４アクセスが、例えば、書き込み、消去、または誤りイベントの結果として、ブロックアレイ４９２に記憶された現在の候補よりも良い候補を示した場合、新しいブロックを、ブロックアレイ４９２の中のその候補と置き換えることができる。候補選択は、揮発性メモリ４１２へのアクセスを遅れさせることなく生じさせることができ、これは、プロセスが、パイプライン化された構造を使用して揮発性メモリ４１２の速度で進行することを可能にする。
【００６１】
ブロック管理デバイス４４０は、揮発性メモリ４１２の中のブロックテーブル４８４に複数のブロックのそれぞれについて、健全性および状態情報を記憶するように構成することができる。ブロック管理デバイス４４０は、候補ブロックテーブル、例えば再利用ページ候補４９４、消去ブロック候補４９５、再利用書き込みブロック候補４９６、および／またはホスト書き込みブロック候補４９７を含むブロックアレイ４９２を、ローカルメモリに記憶するように構成することができる。候補ブロックテーブルは、特定の操作の１以上の基準に基づいて、特定の操作、例えばホスト書き込み、再利用読み出し、再利用書き込み、および／または消去のための候補ブロックを識別することができる。ブロック管理デバイス４４０は、例えば特定のブロックの書き込み、消去、または誤りイベントに応じて、ブロックテーブル４８４の中の特定のブロックについて、健全性および状態情報を更新するように構成することができる。ブロック管理デバイス４４０は、１以上の基準に従って、特定のブロックの更新された健全性および状態情報を、候補ブロックと比較するように構成することができる。ブロック管理デバイス４４０は、例えばその間に揮発性メモリ４１２において特定のブロックの健全性および状態情報が更新される同じクロックサイクル上で、特定のブロックが１以上の基準をより良く満たすことを示す比較に少なくとも部分的に応じて、特定のブロックを識別するために、候補ブロックテーブルを更新するように構成することができる。
【００６２】
例えば、上で説明される候補選択プロセスは、書き込み、消去、または誤りイベントの結果として、新しいブロックテーブル４８４アクセスに依存しない、テーブルウォーキングプロセスで補うことができる。テーブルウォーキングプロセスは、ブロック管理デバイス４４０の中のブロックアレイ４９２にローカルに記憶されていないブロック情報の履歴を復元することができる。テーブルウォーキングは、書き込み、消去、または誤りイベントの結果として、ブロックテーブル４８４アクセスと比較してより遅いバックグラウンドプロセスとすることができる。ブロックテーブル４８４全体がウォーキングされると、例えば揮発性メモリ４１２の電力消費を低減させるために、テーブルウォーキングプロセスは中断され得る。いくつかの事例において、新しいブロックテーブル４８４アクセスは、テーブルウォーキングプロセスを再開することができる。したがって、ブロック管理デバイス４４０は、複数のブロックのいずれかの書き込み、消去、または誤りイベントから独立した１以上の基準に従って、揮発性メモリ４１２の中のブロックテーブル４８４の複数のブロックのそれぞれについて、更新された健全性および状態情報を、候補ブロックと比較するように構成することができる。ブロックの比較は、複数のブロックのそれぞれが比較された後に中断することができる。
【００６３】
本開示の１以上の実施形態において、ホスト操作は、ＬＢＡテーブル４８２を更新するためのコヒーレンシー点の使用に従う再利用プロセス中にストールしない。再利用プロセス中に、例えば再利用ページ候補４９４からの、再利用ページ候補が、第１の場所から読み出され、第２の場所に書き込まれる。この読み出しおよび書き込み中に、ホストは、新しい情報を、現在再利用のために処理され、新しい物理アドレスでＬＢＡテーブル４８２が更新されている、ＬＢＡに書き込んでしまっている場合がある。再利用がページの読み出しおよび書き込みを終了したときに、ＬＢＡテーブル４８２は、再利用下にあるＬＢＡのＬＢＡテーブル４８２エントリが、第１の場所から読み出された情報と同じ物理アドレスを有する場合にだけ、例えばホストがＬＢＡテーブル４８２の中のエントリを更新していない場合に、新しい物理アドレスで更新することができる。再利用読み出しに対応するページは、ブロックテーブル４８４において、無効である、例えば失効情報を記憶している、としてマークすることができる。物理アドレスが再利用読み出しに対応するアドレスとは異なる場合は、ホストが更新を行ったことを示し、ＬＢＡテーブルは、再利用書き込みを通じて新しい物理アドレスで更新されない。再利用書き込みは、再利用書き込みに対応する物理的場所が無効な情報を記憶していることを示すように、ブロックテーブル４８４において無効にすることができる。
【００６４】
メモリ管理回路、例えばブロック管理デバイス４４０は、特定のブロックに対する再利用操作中に、特定のブロックから情報が読み込まれる前に、ブロックテーブル４８４から特定のブロックの論理アドレスに対応する第１の物理アドレスを取り出すように構成することができる。ブロック管理デバイス４４０は、再利用操作中に情報が異なるブロックに書き込まれた後に、ＬＢＡテーブル４８２から論理アドレスに対応する第２の物理アドレスを取り出すように構成することができる。ブロック管理デバイス４４０は、第２の物理アドレスが第１の物理アドレスに等しいことに少なくとも部分的に応じて、異なるブロックに対応する第３の物理アドレスでＬＢＡテーブル４８２を更新するように構成することができる。ブロック管理デバイス４４０は、第２の物理アドレスが第１の物理アドレスと異なることに少なくとも部分的に応じて、再利用操作を無効にするように構成することができる。
【００６５】
ブロック管理デバイス４４０は、ホストコマンドキュー４９８とメモリコマンドキュー４９９との間に連結することができる。ホストコマンドキュー４９８は、図１で示されるホスト１０２等のホスト、図２で示されるようなメモリ回路２３８へのＳＡ、および／または図２で示されるホストインターフェース２１４の１以上の構成要素と関連付けることができる。メモリコマンドキュー４９９は、図２で示されるＣＲＱ２４２、ＬＲＱ２４４、およびＬＣＱ２４６、ならびに／または他の構成要素のうちの１つ以上に類似し得る。
【００６６】
メモリ管理回路、例えばブロック管理デバイス４４０は、スイッチ、例えば図２で示されるスイッチ２２０を介して、不揮発性メモリ制御回路、例えば図２で示される不揮発性メモリ制御回路２２２に連結することができる。メモリ管理回路は、ホストバスの情報の幅およびホストバスのプロトコルに基づいて、ホスト書き込みのための書き込みブロッククラスタを割り当てるように構成することができる。書き込みブロッククラスタは、１以上のＬＵＮ２５０から１以上のブロックを含むことができる。ホストバスは、ホスト、例えば図１で示されるホスト１０２の一部とすることができる。例えば、ホストバスは、数ある中でも、ｘ１、ｘ２、ｘ４、ｘ８、ｘ１６、ｘ３２等のバス幅および第１〜３世代のＰＣＩｅプロトコルを伴うＰＣＩｅバスとすることができる。書き込みブロッククラスタは、不揮発性メモリ制御回路の中の複数のチャネル制御回路に連結される全てよりも少ないＬＵＮから、１つのブロックを含むことができる。１以上の実施形態において、メモリ管理回路は、書き込みブロッククラスタのサイズを、ホストバスの情報の幅およびホストバスのプロトコルに応じて、最大ホストバス帯域幅をサポートするために使用されるＬＵＮの最小数に制限するように構成することができる。
【００６７】
メモリシステムコントローラの書き込み帯域幅は、ホストバスによってサポートされる最大帯域幅、システムの中のメモリチャネルの数、および１チャネルあたりのＬＵＮの数の関数とすることができる。ホストバスがサポートできるよりも多くのＬＵＮを割り当てることは、別の場合であれば再利用操作に使用され得るリソースの浪費になり得る。したがって、本開示の１以上の実施形態によれば、ホスト書き込みブロッククラスタのサイズは、メモリシステムの中のＬＵＮの総数よりもいくらか少ない数に制限され得る。
【００６８】
ＬＵＮからのブロックの残り、例えば書き込みブロッククラスタに割り当てられないものは、再利用操作に割り当てることができる。メモリ管理回路は、再利用操作による１以上の割り当てられたＬＵＮの割り当てを一時的に解除するように構成することができる。書き込みブロッククラスタは、書き込みブロッククラスタのブロックがＬＵＮの特定のシーケンスにおいて書き込まれるように、ホスト書き込みのために割り当てることができる。再利用帯域幅は、近い将来に書き込みのために使用され得るＬＵＮに対する再利用操作を一時停止することによって、メモリシステムコントローラの書き込み帯域幅を改善するために制限され得る。割り当てられたＬＵＮのうちの少なくとも１つは、ＬＵＮの特定のシーケンスが、ホスト書き込みのためのＬＵＮの特定のシーケンスにおいて、次のＬＵＮがＬＵＮの閾値数の範囲内であることを示すことに少なくとも部分的に応じて、再利用操作による割り当てを解除することができる。閾値数は、再利用読み出し操作、再利用書き込み操作、および再利用消去操作のそれぞれについて異なり得る。閾値数は、書き込み操作の前にいかなる再利用操作も起こり得ない１以上のＬＵＮである、「除外ゾーン」を表すことができる。
【００６９】
１チャネルあたり複数のＬＵＮを使用することは、例えば図２でＣＲＱ２４２、ＬＲＱ２４４、およびＬＣＱ２４６に関して説明したように、特定のチャネルが扱うことができるよりも多くのコマンドが発行される状況に至る可能性があり、結果として、メモリチャネルに対してコマンドがキューに入れられることになる。メモリ管理回路は、閾値の範囲内である特定のＬＵＮと関連付けられるキューの数が満杯になることに少なくとも部分的に応じて、特定のＬＵＮに対する再利用操作に対して発行されるコマンドの数を制限するように構成することができる。１チャネルあたりのコマンドの最大数はまた、所要のパワーエンベロープの範囲内に留まるように制限され得る。再利用操作に対して発行されるコマンドの数は、メモリシステムコントローラによって使用される電力量が電力量の閾値を超えることに少なくとも部分的に応じて、制限することができる。１チャネルあたりのコマンドの最大数はまた、例えば、同じチャネルに対する連続のコマンドおよび／またはＬＵＮが効率的な操作のために十分に離間されることを確実にすることを補助するために、制限され得る。メモリ管理回路は、再利用操作のための第１のコマンドの発行と第２のコマンドの発行との間に、少なくとも最短時間、例えばクロック数を実施するように構成することができる。最短時間は、例えば、消去されたブロックの数が減少するにつれて再利用帯域幅が増加し得るので、ＬＵＮの中の消去されたブロックの総数に基づくことができる。
【００７０】
利用可能な消去されたブロックの十分な供給源がある場合は、最大ホスト書き込み帯域幅を短期間維持することができる。消去されたブロックの供給源がほぼ消費されると、増加した再利用操作のため、書き込み帯域幅が減少し得る。メモリ管理回路は、例えばブロックテーブル４８４を参照して、ＬＵＮの到達について１以上の消去されたブロックを追跡するように構成することができる。メモリ管理回路は、特定のＬＵＮの中の消去されたブロックの数が再利用閾値数を超えること、例えば閾値数未満になることに少なくとも部分的に応じて、特定のＬＵＮに対する再利用操作に従事するように構成することができる。メモリ管理回路は、特定のＬＵＮの中の消去されたブロックの数が再利用閾値数を超えること、例えば閾値数を超えることに少なくとも部分的に応じて、特定のＬＵＮに対する再利用操作を一時停止するように構成することができる。ホスト書き込みは、特定のＬＵＮの中の消去されたブロックの数がホスト書き込み閾値数未満になることに少なくとも部分的に応じて、特定のＬＵＮに対して一時停止することができる。メモリ管理回路は、特定のＬＵＮの中の消去されたブロックの数が書き込み閾値数を超えること、例えば閾値数未満になることに少なくとも部分的に応じて、特定のＬＵＮに対する書き込みを一時中断するように構成することができる。メモリ管理回路は、特定のＬＵＮの中の消去されたブロックの数が再利用閾値数を超えること、例えば閾値数を超えることに少なくとも部分的に応じて、特定のＬＵＮに対する書き込みに再従事するように構成することができる。そのような実施形態は、再利用操作と書き込み操作との間に釣り合い、例えばダイナミックロードバランシングを提供するのを補助することができる。
【００７１】
いくつかのメモリ操作は、長い所要時間を費やす。チャネル制御回路、例えば図２で示されるチャネル制御回路２４８は、ＬＵＮに対する状態読み出しを発行するように、例えばいつ特定のメモリ操作を完了させるのかを決定するように構成される、ポーリング論理を含むことができる。いくつかの事例において、そのようなポーリングは、ポーリングされているＬＵＮと同じチャネルを使用する他のコマンドに干渉する可能性がある。本開示の１以上の実施形態によれば、ポーリング論理は、ＬＵＮに対して発行されるコマンドによって示される操作のタイプに応じて、特定の時間にわたってアイドリングさせることができる。アイドル時間は、例えば、数ある中でも、読み出し操作、書き込み操作、および／または削除操作等の、特定の操作が行われると予想される時間に応じて、特定の操作に対して設定することができる。
【００７２】
＜結論＞  本開示は、メモリシステムコントローラを含む種々の装置の実施例を含む。１つのそのようなメモリシステムコントローラは、スイッチと、スイッチに連結される不揮発性メモリ制御回路を含むことができる。不揮発性メモリ制御回路は、論理ユニットに連結されるチャネル制御回路を含むことができる。チャネル制御回路は、消去コマンドを複数の論理ユニットのうちの第１の論理ユニットに中継し、消去コマンドが複数の論理ユニットのうちの第１の論理ユニットで実行されている間に、特定のコマンドをスイッチから複数の論理ユニットのうちの第２の論理ユニットに中継するように構成される。
【００７３】
要素が、別の要素の「〜上にある」、別の要素に「接続される」、または別の要素に「連結される」ものとして言及されるとき、他の要素の直接的に上にある、他の要素に直接的に接続される、または他の要素に直接的に連結される可能性があるか、または介在要素が存在する場合があることが理解されるであろう。対照的に、要素が、別の要素に対して「直接的に上にある」、「直接的に接続される」、または「直接的に連結される」ものとして言及されるときは、いかなる介在要素または層も存在しない。本明細書で使用される場合、「および／または」という用語は、１以上の関連する列記された品目うちの任意および全ての組み合わせを含む。
【００７４】
本明細書で使用される場合、「および／または」という用語は、１以上の関連する列記された品目うちの任意および全ての組み合わせを含む。本明細書で使用される場合、「または」という用語は、別途注記されない限り、論理的に、包含的な「または」を意味する。すなわち、「ＡまたはＢ」は、（Ａだけ）、（Ｂだけ）、または（ＡおよびＢの両方）を含むことができる。換言すれば、「ＡまたはＢ」は、「Ａおよび／またはＢ」または「ＡおよびＢのうちの１つ以上」を意味することができる。
【００７５】
第１、第２、第３等の用語は、本明細書では、種々の要素を表すために使用されている場合があり、これらの用語によってこれらの要素を限定すべきではないことを理解されるであろう。これらの用語は、ある要素を別の要素と区別するために使用されているに過ぎない。したがって、第１の要素は、本開示の教示を逸脱しない範囲で第２の要素と称される可能性がある。
【００７６】
本明細書には具体的な実施形態が図示および記述されているが、当業者は、同じ結果を達成するように考案された配設を、示された具体的な実施形態に代えることができることを理解するであろう。本開示は、本開示の１以上の実施形態の適応または変形を包含することを意図する。上記の説明は、制限の様式ではなく、図説の様式において行われたものであることが理解されるであろう。上記の実施形態、および本明細書に具体的に説明されない他の実施形態の組み合わせは、上記の説明を検討することによって、当業者には明らかであろう。本開示の１以上の実施形態の範囲は、上記の構造および方法が使用される他の用途を含む。したがって、本開示の１以上の実施形態の範囲は、添付の特許請求の範囲に加えて、このような特許請求の範囲が権利を与えられる均等物の完全な範囲を参照して決定されなければならない。
【００７７】
前述の発明を実施するための形態では、開示を簡素化するために、いくつかの特徴が単一の実施形態にまとめられている。この開示方法は、本開示の開示される実施形態が、各請求項に明記されるよりも多くの特徴を用いなければならないという意図を反映するものとして解釈されるべきではない。そうではなく、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示される実施形態の全ての特徴に満たない中に存する。したがって、以下の特許請求の範囲が本明細書により発明を実施するための形態に組み入れられ、各特許請求の範囲は個別の実施形態として独立する。
【符号の説明】
【００７８】
１００  コンピュータシステム
１０２  ホスト
１０４  メモリシステム
１０６  物理ホストインターフェース
１０８  メモリシステムコントローラ
１１０−１〜１１０−Ｎ  ソリッドステートメモリデバイス
２０４  メモリシステム
２０６  物理インターフェース
２０８  ソリッドステートメモリシステムコントローラ
２１２  揮発性メモリ
２１４  ホストインターフェース（Ｉ／Ｆ）回路
２１６  ホスト−メモリ変換回路
２１８  メモリ管理回路
２２０  スイッチ
２２１  バッファ割り当て管理（ＢＡＭ）回路
２２２  不揮発性メモリ制御回路
２２３  バッファタグプール
２２４  揮発性メモリ制御回路
２２５  内部スタティックランダムアクセスメモリ（ＳＲＡＭ）バッファ（ＩＳＢ）
２２６  ＲＡＩＤ排他的論理和（ＸＯＲ）回路
２２７  ダイナミックランダムアクセスメモリ（ＤＲＡＭ）バッファ
２２８  プロセッサ
２３０  ＰＣＩｅ回路
２３４  ホストバスアダプタ（ＨＢＡ）
２３６  ＳＡ準拠デバイス
２４２  チャネル要求キュー（ＣＲＱ）
２４４  論理ユニット（ＬＵＮ）要求キュー（ＬＲＱ）
２４６  論理ユニット（ＬＵＮ）コマンドキュー（ＬＣＱ）
２４８  チャネル制御回路
２５０  論理ユニット（ＬＵＮ）
３３４  ホストバスアダプタ（ＨＢＡ）
３３６  シリアルアタッチメント（ＳＡ）プログラミング準拠デバイス
３５２  コマンド層
３５４  トランスポート層
３５６  コマンドフェッチャ
３５８  応答受信機
３６０  下流側ＤＭＡデバイス
３６２  上流側ＤＭＡデバイス
３６４  バスインターフェース（Ｉ／Ｆ）
３６６  バスインターフェース（Ｉ／Ｆ）
３６８  制御インターフェース
３７０  制御レジスタ
３７２  ＨＢＡ  ＦＳＭ
３７４  コマンド有限状態機械（ＦＳＭ）
３７６  デバイス−ホストアービタ（ＤＨ  ＡＲＢ）
３７８  書き込みＦＳＭ
３８０  読み出しＦＳＭ
４１２  揮発性メモリ
４４０  ブロック管理デバイス
４８２  論理ブロックアドレス（ＬＢＡ）テーブル
４８４  ブロックテーブル
４８６  トランザクションログ
４９０  ＬＢＡテーブルルックアップ機能
４９１  ブロックテーブルルックアップ機能
４９２  ブロックアレイ
４９３  ブロック再利用機能
４９４  再利用ページ候補
４９５  消去ブロック候補
４９６  再利用書き込みブロック候補
４９７  ホスト書き込みブロック候補
４９８  ホストコマンドキュー
４９９  メモリコマンドキュー
【図１】
2016053983.tif 000003
【図２】
2016053983.tif 000004
【図３Ａ】
2016053983.tif 000005
【図３Ｂ】
2016053983.tif 000006
【図４】
2016053983.tif 000007