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