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