(57)【特許請求の範囲】
【請求項１】
メモリコントローラであって、
それぞれのバックエンドチャネルが異なるメモリデバイスと対応する、複数のバックエンドチャネルと、
前記複数のバックエンドチャネル、およびいくつかの読み出しコマンドを保持するように構成されるコマンドキューに通信可能に結合されるフロントエンドコマンドディスパッチャと、を備え、
前記コマンドディスパッチャは、前記いくつかの読み出しコマンドによって達成される、メモリからのネット読み出しを判定し、メモリからの同じネット読み出しを達成するためにより少ない数の読み出しコマンドが送信されるよう、また、前記複数のバックエンドチャネルの間に前記より少ない数の修正された読み出しコマンドが分配されるよう、前記いくつかの読み出しコマンドのうちの１つ以上を修正するように構成される、メモリコントローラ。
【請求項２】
前記フロントエンドコマンドディスパッチャは、前記複数のバックエンドチャネルの間の前記コマンドの分配を最適化するように、１つ以上のコマンドを修正するように構成されるコマンドプロセッサ部と、前記複数のバックエンドチャネルの間でコマンドを分配するように構成されるディスパッチャ部とを含む、請求項１に記載のメモリコントローラ。
【請求項３】
前記フロントエンドコマンドディスパッチャは、ハードウェアの中で所定の条件に対してコマンドを検証するホストコマンド整合性チェックを実行するように構成される、請求項２に記載のメモリコントローラ。
【請求項４】
前記複数のバックエンドチャネルに通信可能に結合されるフロントエンドプロセッサ（ＦＥＰ）を含み、
前記ＦＥＰは、前記いくつかの読み出しコマンドによって達成される、メモリからのネット読み出しを判定し、前記複数のバックエンドチャネルの間で前記いくつかの読み出しコマンドの分配を最適化するために、前記いくつかの読み出しコマンドのうちの１つ以上を修正するように構成される、請求項３に記載のメモリコントローラ。
【請求項５】
メモリコントローラであって、
それぞれのバックエンドチャネルが異なるメモリデバイスと対応する、複数のバックエンドチャネルと、
前記複数のバックエンドチャネル、およびいくつかの書き込みコマンドを保持するように構成されるコマンドキューに通信可能に結合されるフロントエンドコマンドディスパッチャと、を備え、
前記コマンドディスパッチャは、前記いくつかの書き込みコマンドによって達成される、メモリへのネット変更を判定し、メモリへの同じネット書き込みを達成するためにより少ない数の書き込みコマンドが送信されるよう、また、前記複数のバックエンドチャネルの間に前記より少ない数の修正された書き込みコマンドが分配されるよう、前記いくつかの書き込みコマンドのうちの１つ以上を修正するように構成される、メモリコントローラ。
【請求項６】
前記コマンドディスパッチャは、前記複数のバックエンドチャネルがビジーである時のみ、分配を最適化するために、前記いくつかの書き込みコマンドのうちの１つ以上を修正するように構成される、請求項５に記載のメモリコントローラ。
【請求項７】
前記コマンドディスパッチャは、前記いくつかの書き込みコマンドによって前記判定されるメモリへのネット変更を変更することなく、前記コマンドキューからの前記いくつかの書き込みコマンドのうちの１つを分配しないように構成される、請求項５に記載のメモリコントローラ。
【請求項８】
前記コマンドディスパッチャは、前記コマンドキュー内の第１の書き込みコマンドに関連するメモリ範囲を、前記コマンドキュー内の第２の書き込みコマンドの前記メモリ範囲の部分を含むように修正し、それ以降、前記いくつかの書き込みコマンドによって前記判定されるメモリへのネット変更を変更することなく、前記コマンドキューからの前記第２の書き込みコマンドを分配しないように構成される、請求項７に記載のメモリコントローラ。
【請求項９】
前記いくつかの書き込みコマンドは、最初の順序で前記コマンドキュー内に受信され、前記コマンドディスパッチャは、前記コマンドキュー内の前記いくつかの書き込みコマンドの順序を前記最初の順序から変更された順序に変更するように構成される、請求項５に記載のメモリコントローラ。
【請求項１０】
前記コマンドディスパッチャは、前記最初の順序ではなく、前記コマンドキュー内の前記いくつかの書き込みコマンドの前記変更された順序に従って、コマンドを分配するように構成される、請求項９に記載のメモリコントローラ。
【請求項１１】
前記コマンドディスパッチャは、重複するメモリ位置に対する書き込みコマンドを組み合わせることによって、前記コマンドキュー内の前記いくつかの書き込みコマンドのうちの少なくとも１つを修正するように構成される、請求項５に記載のメモリコントローラ。
【請求項１２】
前記コマンドディスパッチャは、前記いくつかの書き込みコマンドのうちの少なくとも１つが修正されることに応答して、前記コマンドキュー内の前記いくつかの書き込みコマンドの順序を変更された順序に変更するように構成される、請求項１１に記載のメモリコントローラ。
【請求項１３】
前記コマンドディスパッチャは、前記コマンドキュー内の次に実行される書き込みコマンドによって上書きされる、いくつかのメモリ位置に関与することが判定された書き込みコマンドを分配しないように構成される、請求項１１に記載のメモリコントローラ。
【請求項１４】
前記コマンドディスパッチャは、介在する読み出し動作が前記いくつかのメモリ位置に関与することがなく、次に実行される書き込みコマンドによって上書きされる、前記いくつかのメモリ位置に関与することが判定された書き込みコマンドを実行しないように構成される、請求項１１に記載のメモリコントローラ。
【請求項１５】
前記コマンドディスパッチャは、複数の書き込みコマンドを単一の書き込みコマンドにグループ化するように構成される、請求項１１に記載のメモリコントローラ。
【請求項１６】
前記コマンドディスパッチャは、少なくとも２つの書き込みコマンドが、論理的に隣接したメモリ位置に関与する同じ動作であると判定し、前記少なくとも２つの書き込みコマンドを、前記論理的に隣接したメモリ位置に関与する単一の書き込みコマンドに組み合わせるように構成される、請求項１５に記載のメモリコントローラ。
【請求項１７】
前記コマンドディスパッチャは、少なくとも２つの書き込みコマンドが、論理的に重複するメモリ位置に関与する同じ動作であると判定し、前記少なくとも２つの書き込みコマンドを、前記論理的に重複するメモリ位置に関与する単一の書き込みコマンドに組み合わせるように構成される、請求項１５に記載のメモリコントローラ。
【請求項１８】
特定の書き込みコマンドに関連するペイロードは、前記複数のバックエンドチャネルのうちの２つ以上の間で分配され、前記コマンドディスパッチャは、前記特定の書き込みコマンドを前記複数のバックエンドチャネルのうちの前記２つ以上の各々に分配するように構成される、請求項５に記載のメモリコントローラ。
【請求項１９】
前記コマンドディスパッチャは、前記複数のバックエンドチャネルのうちの前記２つ以上の各々に関連する前記ペイロードの部分に対して、関連論理ブロックアドレスおよびセクタカウントを決定し、前記ペイロードの前記関連部分に対して、前記論理ブロックアドレスおよびセクタカウントで、それぞれのバックエンドチャネルに分配される前記特定の書き込みコマンドを修正するように構成される、請求項１８に記載のメモリコントローラ。
【請求項２０】
前記コマンドディスパッチャが前記複数のバックエンドチャネルにコマンドを分配することを阻止される間、前記コマンドディスパッチャは、前記コマンドキュー内の書き込みコマンドを修正するように構成される、請求項５に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、半導体記憶装置、方法、およびシステムに関し、より具体的には、いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法に関する。
【背景技術】
【０００２】
記憶装置は、一般的に、コンピュータまたは他の電子装置の中の内部の、半導体の、集積回路として提供される。揮発性および不揮発性メモリを含む、多種多様なメモリが存在する。揮発性メモリは、そのデータを維持するために電源を要求する可能性があり、数ある中でも、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）が挙げられる。不揮発性メモリは、電源を供給されていない時に記憶された情報を保持することによって永続的データを提供することができ、数ある中でも、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、読み出し専用メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、および相変化ランダムアクセスメモリ（ＰＣＲＡＭ）を挙げることができる。
【０００３】
記憶装置は、ソリッドステートドライブ（ＳＳＤ）を形成するように一体化することができる。ＳＳＤは、多様な他のタイプの不揮発性および揮発性メモリの中でも、例えば、ＮＡＮＤフラッシュメモリおよびＮＯＲフラッシュメモリ等の不揮発性メモリを含むことができ、かつ／または、例えば、ＤＲＡＭおよびＳＲＡＭ等の揮発性メモリを含むことができる。
【０００４】
ＳＳＤは、性能、サイズ、重量、耐久性、動作温度範囲、電力消費の点においてハードドライブに優る利点を有することができるため、ＳＳＤは、ハードディスクドライブに代わって、コンピュータ用の主記憶装置として使用することができる。例えば、ＳＳＤは、稼動部がないことに起因して、磁気ディスクドライブに比較すると優れた性能を有することができ、磁気ディスクドライブに関連する、シーク時間、待ち時間、および他の電気機械的遅延を改善する場合がある。ＳＳＤ製造者は、内部のバッテリー電源を使用しない場合があるフラッシュＳＳＤを作成するために不揮発性フラッシュメモリを使用することができ、これによって、ドライブの多用途化および小型化を可能にする。
【０００５】
ＳＳＤは、いくつかの記憶装置、例えば、いくつかのメモリチップを含んでもよい（本明細書に使用される場合、「いくつかの」物とは１つ以上の該当物を参照することができ、例えば、いくつかの記憶装置は、１つ以上の記憶装置を参照することができる）。当業者が理解するであろうように、メモリチップはいくつかのダイを含んでもよい。各ダイは、いくつかのメモリアレイおよびその上の周辺回路を含んでもよい。メモリアレイは、いくつかのプレーンを含んでもよく、各プレーンには、メモリセルのいくつかの物理ブロックを含んでもよい。各物理ブロックは、データのいくつかのセクタを記憶することができる、いくつかのページを含んでもよい。
【０００６】
例えば、ＳＳＤ等のメモリシステムは、コンピューティングシステムに組み込まれる場合があり、メモリシステムは、ホストと、ハードディスクドライブ、光学式ドライブ、およびＳＳＤなどのような大型記憶装置との間のコマンドおよびデータの転送のために主に設計された、例えば、シリアルアドバンストテクノロジアタッチメント（ＳＡＴＡ）高速シリアルバス等の通信インターフェースによって、ホストに通信可能に結合することができる。
【０００７】
数ある他のコマンドの中でも、プログラムコマンド、読み出しコマンド、および消去コマンドなどのようなコマンドは、ＳＳＤの操作中に使用される場合がある。例えば、プログラムコマンド、例えば、書き込みコマンドは、ソリッドステートドライブ上のデータをプログラムするために使用される場合があり、読み出しコマンドは、ソリッドステートドライブ上のデータを読み出すために使用される場合があり、消去コマンドは、ソリッドステートドライブ上のデータを消去するために使用される場合がある。
【図面の簡単な説明】
【０００８】
【図１】本開示の１つ以上の実施形態に従う、コンピューティングシステムの機能ブロック図である。
【図２】本開示の１つ以上の実施形態に従う、少なくとも１つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。
【図３】本開示の１つ以上の実施形態に従う、いくつかの記憶装置に通信可能に結合されるメモリシステムコントローラの機能ブロック図である。
【図４】本開示の１つ以上の実施形態に従う、論理アドレスから物理アドレスへのマップを示す図である。
【図５】本開示の１つ以上の実施形態に従う、フロントエンドＤＭＡのコマンドキューの機能ブロック図である。
【図６Ａ】本開示の１つ以上の実施形態に従う、フロントエンドＤＭＡのコマンドキューの動作を示す図である。
【図６Ｂ】本開示の１つ以上の実施形態に従う、フロントエンドＤＭＡのコマンドキューの動作を示す図である。
【図７】本開示の１つ以上の実施形態に従い、いくつかのバックエンドチャネルの間でコマンドを分配するための流れ図である。
【図８】本開示の１つ以上の実施形態に従う、フロントエンドといくつかのチャネルとの間のインターフェースを示す機能ブロック図である。
【図９Ａ】本開示の１つ以上の実施形態に従って実装される、ダイレクトメモリアクセスモジュール（ＤＭＡ）ディスクリプタブロックの機能ブロック図である。
【図９Ｂ】本開示の１つ以上の実施形態に従って実装される、図９Ａに図示されるＤＭＡディスクリプタブロック（ＤＤＢ）内のエントリを示す図である。
【発明を実施するための形態】
【０００９】
本開示は、いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法を含む。１つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるコマンドキューと、を含む。コマンドキューは、ホストから受信されるホストコマンドを保持するように構成することができる。回路は、コマンドキュー内のいくつかのホストコマンドに少なくとも応答して、いくつかのバックエンドコマンドを生成し、いくつかのバックエンドコマンドを複数のバックエンドチャネルのうちのいくつかに分配するように構成される。
【００１０】
本開示はまた、メモリコントローラのための方法および装置も含む。１つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルおよびコマンドキューに通信可能に結合されるフロントエンドコマンドディスパッチャと、を含む。コマンドディスパッチャは、いくつかのコマンドによって達成される、メモリへのネット変更を判定し、複数のバックエンドチャネルの間のいくつかのコマンドの分配を最適化するために、いくつかのコマンドのうちの１つ以上を修正するように構成することができる。
【００１１】
本明細書中の図面は、上位の桁（単数または複数）が、図面の図番号に対応し、残りの桁（複数）は、図面の中の要素または構成要素を識別するという、番号規則に従う。異なる図面間の同様な要素または構成要素は、同様な数字の使用によって識別される場合がある。例えば、１０４によって、図１中の要素「１０」を参照する場合があり、類似要素が、図２中の２１０として参照される場合等がある。
【００１２】
図１は、本開示の１つ以上の実施形態に従う、コンピューティングシステムの機能ブロック図である。図１の実施形態は、コンピューティングシステム１００の一実施形態の構成要素およびアーキテクチャを示す。コンピューティングシステム１００は、数ある中でも、例えば、ＵＳＢ、ＰＣＩ、ＳＡＴＡ／１５０、ＳＡＴＡ／３００、またはＳＡＴＡ／６００インターフェース等のインターフェース１０６を通して、ホスト１０２のようなホストに通信可能に結合される、例えば、ソリッドステートドライブ（ＳＳＤ）等のメモリシステム１０４を含む。
【００１３】
ＳＡＴＡは、アドバンストテクノロジーアタッチメント（ＡＴＡ）規格の後継技術として考案され、しばしばパラレルＡＴＡ（ＰＡＴＡ）と呼ばれる。ＳＡＴＡ／１５０または非公式にはＳＡＴＡ１としても知られる、第１世代のＳＡＴＡインターフェースは、毎秒約１．５ギガビット（Ｇｂ／秒）または毎秒約１５０メガバイト（ＭＢ／秒）の速度で通信する。その後、３．０Ｇｂ／秒の信号レートが、物理層に追加され、例えば、上限データ処理能力を１５０ＭＢ／秒から３００ＭＢ／秒に、事実上、最高速度を２倍にした。３．０Ｇｂ／秒の仕様は、ＳＡＴＡ／３００あるいは非公式にはＳＡＴＡＩＩまたはＳＡＴＡ２としても知られる。ＳＡＴＡ３００の転送速度は、しばらくの間は、磁気ハードディスクドライブの処理能力要件を満たすかもしれないが、しかしながら、高速フラッシュの複数のチャネルを使用するソリッドステートドライブは、これよりはるかに高速のデータ転送速度をサポートすることができるため、例えば、フラッシュソリッドステートドライブの読み出し速度をサポートする際には、６Ｇｂ／秒の処理能力を有するＳＡＴＡ／６００等のこれよりさらに高速のＳＡＴＡ規格が実装されるかもしれない。
【００１４】
ホスト１０２は、いくつかの別個の集積回路を含むことができるか、あるいは、２つ以上の構成要素または機能を同じ集積回路上に存在させることができる。１つ以上の実施形態に従い、ホスト１０２は、少なくとも部分的に「マザーボード」として、コンピューティングシステム１００内に物理的に実装することができ、ＳＳＤ１０４は、別個のカード上に物理的に実装され、マザーボードおよびＳＳＤは、バスを通して通信可能に結合される。
【００１５】
ホスト１０２は、メモリおよびバスコントロール１０７に通信可能に結合される、例えば、パラレルプロセッサ、コプロセッサ、プロセッサコア等のいくつかのプロセッサ１０５を含むことができる。いくつかのプロセッサ１０５は、マイクロプロセッサ、または特定用途集積回路（ＡＳＩＣ）のようないずれかの他の数種の制御回路とすることができる。コンピューティングシステムの他の構成要素もプロセッサを有する場合がある。メモリおよびバスコントロール１０７は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１１１、グラフィックユーザインターフェース１１３、または、例えば、ディスプレイモニタ、キーボード、マウス等の他のユーザインターフェースに直接通信可能に結合される、メモリおよび他の構成要素を有することができる。
【００１６】
メモリおよびバスコントロール１０７はまた、そこに通信可能に結合される周辺およびバスコントロール１０９も有することができ、これはさらに、ユニバーサルシリアルバス（ＵＳＢ）インターフェースを使用するフラッシュドライブ１１５、不揮発性メモリホストコントロールインターフェース（ＮＶＭＨＣＩ）フラッシュメモリ１１７、またはＳＳＤ１０４等のいくつかの装置に接続することができる。読者が理解するであろうように、ＳＳＤ１０４は、いくつかの異なるコンピュータィングシステム内のハードディスクドライブ（ＨＤＤ）に加えて、またはこれの代わりに使用することができる。図１に図示されるコンピューティングシステム１００は、そのようなシステムの一例である。
【００１７】
図２は、本開示の１つ以上の実施形態に従う、少なくとも１つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。コンピューティングシステム２００は、ホスト２０２に通信可能に結合される、メモリシステム２０４、例えばＳＳＤを含む。ＳＳＤ２０４は、ＳＡＴＡインターフェースのような、例えば、ケーブル、バス等のインターフェース２０６を通して、ホスト２０２に通信可能に結合することができる。ＳＳＤ２０４は、図１のソリッドステートドライブ１０４に類似することができる。
【００１８】
図２は、コントローラ２１０と、例えばコネクタ等の物理的インターフェース２０８と、いくつかの記憶装置２１２−１、・・・、２１２−Ｎであって、コントローラ２１０のいくつかのチャネルに対応するいくつかの記憶装置（例えば、１つ以上の記憶装置は、特定のチャネルに対応する）と、を含む、ソリッドステートドライブ２０４の１つ以上の実施形態の構成要素を示す。したがって、記憶装置２１２−１、・・・、２１２−Ｎは、図面上で「チャネル何番メモリ」として示される。本明細書に使用される場合、記憶装置は、制御入力を共有する、例えば、ダイ、チップ、アレイ、または他のグループのような、いくつかのメモリセルを含むことができ、例えば、ＮＡＮＤフラッシュ等のいくつかのメモリタイプを使用して製造される場合がある。制御入力は概して、アドレスラッチイネーブル（ＡＬＥ）、チップイネーブル（ＣＥ）、読み出しイネーブル（ＲＥ）、読み出し／ビジー（Ｒ／Ｂ）、書き込み保護（ＷＰ）、およびピン、パッド等のような入力／出力（Ｉ／Ｏ）接続を含むことができる。１つ以上の実施形態において、ＳＳＤ２０４は、ＳＳＤ２０４を包囲するための筐体を含むことができるが、そのような筐体は不可欠ではなく、例えば、ホスト２０２およびＳＳＤ２０４はどちらも、コンピューティングシステムの筐体によって包囲される場合がある。
【００１９】
インターフェース２０６は、ＳＳＤ２０４と、ホスト２０２のような別の装置との間で情報を通信するために使用することができる。１つ以上の実施形態に従い、ＳＳＤ２０４は、コンピューティングシステム２００の中の記憶装置として使用することができる。１つ以上の実施形態に従い、ＳＳＤ２０４は、例えば、プラグイン接続性を備えて、コンピューティングシステム２００のための外付け、または携帯用のメモリシステムとして構成することができる。
【００２０】
コントローラ２１０は、記憶装置のメモリセルを、例えば、読み出す、プログラムする（すなわち、書き込む）、消去する等の操作するために、記憶装置２１２−１、・・・、２１２−Ｎと通信することができる。コントローラ２１０を、記憶装置２１２−１、・・・、２１２−Ｎとの通信、およびこれらの中に記憶されるデータを管理するために使用することができる。コントローラ２１０は、いくつかの集積回路であってもよい、回路を有することができる。コントローラ２１０はまた、いくつかの離散構成要素とすることができる、回路も有することができる。１つ以上の実施形態では、コントローラ２１０内の回路は、いくつかのチャネルにわたって、およびいくつかの記憶装置２１２−１、・・・、２１２−Ｎにわたって、アクセスを制御するための制御回路を含むことができる。メモリコントローラ２１０は、いくつかのチャネルを通して、対応する記憶装置に選択的に通信することができる。
【００２１】
ホスト２０２とＳＳＤ２０４との間の通信プロトコルは、記憶装置２１２−１、・・・、２１２−Ｎ等の記憶装置にアクセスするために必要なプロトコルとは異なる場合がある。メモリコントローラ２１０は、ホスト２０２から受信されるコマンドを適切なコマンドに変換して、いくつかの記憶装置２１２−１、・・・、２１２−Ｎにわたって意図した動作を達成するように構成される制御回路を含むことができる。メモリコントローラ２１０の回路は、ホスト２０２とＳＳＤ２０４との間の変換層を提供することができる。メモリコントローラ２１０はまた、例えば、データを記憶し、かつ取り出すために、ホストコマンドシーケンス、関連データ、および例えば信号等の他の情報を適切なチャネルコマンドシーケンスに処理することもできる。メモリコントローラ２１０は、コマンド、通信（例えば、受信、送信、伝送）関連データ、および他の情報を、適切なチャネルを通して適時に対応する記憶装置へ選択的に分配することができる。
【００２２】
本開示の１つ以上の実施形態に従い、各記憶装置２１２−１、・・・、２１２−Ｎは、いくつかのメモリセルを含むことができる。記憶装置２１２−１、・・・、２１２−Ｎは、数ある中でも、例えば、ＮＡＮＤフラッシュ、ＤＲＡＭ等の多種多様な種類の揮発性または不揮発性メモリアレイを使用して、形成することができる。本開示の１つ以上の実施形態に従い、記憶装置２１２−１、・・・、２１２−Ｎは、その全ては本開示の１つ以上の実施形態を実装する際に使用される場合がある、ＮＡＮＤアーキテクチャ、ＮＯＲアーキテクチャ、ＡＮＤアーキテクチャ、または何らかの他のメモリアレイアーキテクチャの中に構成される、いくつかのフラッシュメモリセルを含むことができる。
【００２３】
記憶装置２１２−１、・・・、２１２−Ｎは、ページ、ブロック、プレーン、アレイ、または他のグループのような、特定の物理的または論理的構成を提供するように構成することができる、いくつかのメモリセルを含むことができる。ページは、データのいくつかの物理セクタに応じて、データを記憶することができる。各物理セクタは、論理セクタに対応することができ、エラー修正コード（ＥＣＣ）情報、および論理ブロックアドレス（ＬＢＡ）情報のようなオーバーヘッド情報、ならびにユーザデータを含むことができる。当業者が理解するであろうように、論理ブロックアドレッシングは、情報の論理セクタを識別するために、ホストによってしばしば使用されるスキーマである。例として、論理セクタは、例えば、２５６バイト、５１２バイト、または１，０２４バイト等のデータのいくつかのバイトを表す情報を記憶することができる。本明細書に使用される場合、ページとは、まとめてまたは機能グループとしてプログラムおよび／または読み出すことができる、例えば、いくつかのセル、またはその上に記憶されるデータの部分等のプログラムおよび／または読み出しのユニットを言う。例えば、メモリアレイの中には、メモリセルの１ブロックを成す、いくつかのページを含むことができるものがあり、ブロックは、ユニットとしてまとめて消去することができるメモリセルを含み、例えば、各物理ブロック内のセルは、実質的に同時的に消去することができる。いくつかのブロックは、メモリセルの１プレーン内に含むことができる。メモリセルのいくつかのプレーンは、１つのダイ上に含むことができる。１つのアレイは、いくつかのダイを含むことができる。制限ではなく、例として、１２８Ｇｂの記憶装置は、ページあたり４３１４バイトのデータ、ブロックあたり１２８ページ、プレーンあたり２０４８ブロック、装置あたり１６プレーンを含むことができる。しかしながら、実施形態はこの例に限定されない。
【００２４】
各記憶装置２１２−１、・・・、２１２−Ｎは、数ある中でも、例えば、フラッシュおよびＤＲＡＭアレイ等の多種多様な揮発性または不揮発性メモリアレイを含むことができる。１つ以上の実施形態において、記憶装置２１２−１、・・・、２１２−Ｎは、ソリッドステートメモリアレイとすることができる。記憶装置２１２−１、・・・、２１２−Ｎは、複数のユニットにグループ化することができる、いくつかのメモリセルを含むことができる。本明細書に使用される場合、ユニットは、メモリセルのページ、物理ブロック、プレーン、アレイ全体、または他のグループなどのような、いくつかのメモリセルを含むことができる。例えば、記憶装置は、メモリアレイとすることができ、各プレーンがいくつかの物理ブロックを含む、いくつかのプレーンを含むことができる。各物理ブロック内のメモリセルは、ユニットとしてまとめて消去することができ、例えば、各物理ブロック内のセルは、実質的に同時的に消去することができる。例えば、各物理ブロック内のセルは、単一の操作でまとめて消去することができる。物理ブロックは、いくつかのページを含むことができる。各ページ内のメモリセルは、ユニットとしてまとめてプログラムすることができ、例えば、各ページ内のセルは、実質的に同時的にプログラムすることができる。各ページ内のメモリセルもまた、ユニットとしてまとめて読み出すことができる。
【００２５】
メモリシステムの物理セクタは、論理セクタに対応することができ、エラー修正コード（ＥＣＣ）情報、および論理ブロックアドレス（ＬＢＡ）情報などのようなオーバーヘッド情報、ならびにユーザデータを含むことができる。当業者が理解するであろうように、論理ブロックアドレッシングは、情報の論理セクタを識別するために、ホストによってしばしば使用されるスキーマである。例として、各論理セクタは、他のバイト数の中でも、例えば、２５６バイト、５１２バイト、または１，０２４バイト等、データのいくつかのバイトを表す情報を記憶することができる。しかしながら、本開示の実施形態は、物理セクタ内に記憶される、または論理セクタに関連するデータの特定の数のバイトに限定されない。
【００２６】
図３は、本開示の１つ以上の実施形態に従う、いくつかの記憶装置に通信可能に結合されたメモリシステムコントローラの機能ブロック図である。図３に示されるように、メモリコントローラ３１０は、いくつかの、例えば、８つの記憶装置、例えば、３１２−１、・・・、３１２−Ｎに通信可能に結合することができる。１つ以上の実施形態において、記憶装置は、図２の２１２−１、・・・、２１２−Ｎに示される記憶装置とすることができる。各記憶装置、例えば、３１２−１、・・・、３１２−Ｎは、コントローラ３１０のチャネル、例えば、３５０−１、・・・、３５０−Ｎに対応する。本明細書に使用される場合、記憶装置は、前述のように、制御入力を共有する、いくつかのメモリセルを含むことができる。１つ以上の実施形態において、メモリコントローラ３１０は、ＳＳＤコントローラとすることができる。１つ以上の実施形態において、メモリコントローラ３１０は、図２に示されるコントローラ２１０に類似のものとすることができる。
【００２７】
各記憶装置、例えば、３１２−１、・・・、３１２−Ｎは、記憶装置２１２−１、・・・、２１２−Ｎに関して前述したように体系化することができ、個別のダイ上に製造することができるか、または積層ダイ上に製造することができる。各ダイは、いくつかのアレイのメモリセルを含むことができる。メモリコントローラ３１０は、フロントエンド部分３４４と、バックエンド部分３４６とを含むことができる。コントローラ３１０は、例えば、バックエンド部分３４６上に伝送されるコマンドの量を削減すること等によって、複数のバックエンドチャネルの間のいくつかのコマンドの分配を最適化するように、フロントエンド３４４内のコマンドおよびデータを処理することができる。コントローラ３１０はさらに、特定のチャネルに関して、メモリ動作の追加の効率を達成するように、バックエンドチャネルの各々の中のコマンドおよびデータを処理することができる。この様式において、コントローラ３１０は、記憶装置３１２−１、・・・、３１２−Ｎとの通信を管理する。
【００２８】
図３に示されるように、フロントエンド部分３４４は、タスクファイル３１５に通信可能に結合されるホストインターフェース３１４と、アプリケーション層３２０のＦＩＦＯ等のホストバッファ３２２と、を含むことができる。例えば、ホストインターフェース３１４は、例えば、図２の２０８などの、ＳＳＤ上の物理インターフェース、および例えば、図２の２０６などの、ＳＡＴＡインターフェースを通して、図２のホスト、例えば、２０２とともに、データストリーム等の入力および出力情報を通信するように構成することができる。１つ以上の実施形態に従い、コマンド（コマンドパラメータを含む）、例えば、入力情報のコマンド部分は、タスクファイル３１５に向けることができ、関連のペイロード、例えば、入力情報のデータ部分は、ホストＦＩＦＯ３２２に向けることができる。
【００２９】
タスクファイル３１５は、１つの深いキューにすることができ、コマンドプロセッサおよびディスパッチャ３１８（以下、「コマンドディスパッチャ」と称する）を通して、フロントエンドダイレクトメモリアクセスモジュール（ＤＭＡ）３１６と通信状態にすることができる。コマンドディスパッチャ３１８は、ホストから到着時にタスクファイル３１５内のコマンドを所定の条件（例えば、整合性チェック）に対してチェックすることができ、条件に対して検証された後、到着するコマンドを受容することができ、これをタスクファイル３１５から、フロントエンドＤＭＡ３１６および適切なバックエンドチャネルへ分配することができるように、構成される（例えば、ハードウェアを含む）。整合性チェックに対する以前の手法は、ファームウェアを使用して実行されてきたが、しかしながら、ハードウェア内でホストコマンドの整合性チェックを実行することはより速く、結果として、コマンドディスパッチャ３１８によるホストコマンド処理速度を上げることになる。
【００３０】
ホストＦＩＦＯ３２２は、例えば、ＡＥＳアルゴリズムを実装する暗号化エンジン等、いくつかの暗号化エンジンを有する暗号化装置３２４に通信可能に結合することができる。暗号化装置３２４は、特定のコマンドに関連するペイロードを処理、すなわち、暗号化し、ペイロードをフロントエンドＤＭＡ３１６へ伝送するように構成される場合がある。暗号化装置３２４の動作に関するさらなる詳細は、少なくとも１人の共通発明人を有し、代理人整理番号１００２．０４００００１を有する、２００８年１２月１２日に出願された、同一出願人による米国特許出願第１２／３３３，８２２号「Ｐａｒａｌｌｅｌ  Ｅｎｃｒｙｐｔｉｏｎ／Ｄｅｃｒｙｐｔｉｏｎ」に見出すことができる。
【００３１】
フロントエンド部分３４４はまた、フロントエンドプロセッサ（ＦＥＰ）３２８と、ＲＡＭ、ＲＯＭ等のメモリ３３６と、ＤＭＡ３３２と、メインバッファ３３４と、を含むことができる、いくつかの他のプロセッサ３３０も有することができる。いくつかのプロセッサ３３０は、例えば、通信バスによって、フロントエンドＤＭＡ３１６に通信可能に結合することができる。
【００３２】
フロントエンドＤＭＡ３１６は、データのいくつかのワードを含有するために、関連レジスタを含む、ＤＭＡディスクリプタブロック（ＤＤＢ）およびレジスタ３４０を含むことができる。フロントエンドＤＭＡ３１６はまた、そこに通信可能に結合されるいくつかのチャネル間を調整するための、アービタ３４２も含むことができる。暗号化装置３２４はまた、ＦＥＰ３２８に通信可能に結合することができる。ＦＥＰ３２８はまた、ホストＦＩＦＯ３２２、およびフロントエンドＤＭＡ３１６にも通信可能に直接結合することができる。
【００３３】
フロントエンドＤＭＡ３１６は、コマンドディスパッチャ３１８に通信可能に結合することができる。コントローラ３１０は、いくつかの記憶装置、例えば、３１２−１、・・・、３１２−Ｎに対応する、いくつかのチャネル、例えば、１、・・・、Ｎを含むことができる。いくつかのチャネルといくつかの記憶装置との間の関係は、１対１の関係であるとして、本明細書に説明され、図面に示されるが、しかしながら、本開示の実施形態はそれに限定されず、他の構成が考えられる（例えば、複数の記憶装置が特定のチャネルに対応する、特定の記憶装置が複数のチャネルに対応する、またはこれらの組み合わせ）。フロントエンドＤＭＡ３１６およびコマンドディスパッチャ３１８は、例えば、バックエンドチャネル１（３５０−１）、・・・、バックエンドチャネルＮ（３５０−Ｎ）等、フロントエンド３４４回路をバックエンド回路３４６に有効に通信可能に結合する。本開示の１つ以上の実施形態に従い、コントローラ３１０は、８つのチャネル、例えば、１、・・・、８を含む。本開示の実施形態は、８つのチャネルを有するコントローラに限定されず、したがって、８つよりも多いまたは少ない数のチャネルを有するコントローラが実装されてもよい。
【００３４】
ここで、コントローラ３１０のバックエンド部３４６を参照すると、バックエンド部３４６は、いくつかのチャネル、例えば、３５０−１、・・・、３５０−Ｎを含む。各バックエンドチャネルは、チャネルプロセッサ、例えば、３５６−１、・・・、３５６−Ｎと、関連のチャネルＤＭＡ、例えば、３５４−１、・・・、３５４−Ｎとを含むことができ、これらの各々は、フロントエンドＤＭＡ３１６に通信可能に結合することができる。コマンドディスパッチャ３１８は、チャネルコマンドキュー、例えば、３５５−１、・・・、３５５−Ｎを通して、それぞれのチャネルプロセッサ、例えば、３５６−１、・・・、３５６−Ｎにコマンドを分配するように構成することができる。１つ以上の実施形態において、チャネルコマンドキュー、例えば、３５５−１、・・・、３５５−Ｎは、コマンドディスパッチャ３１８から受信されるいくつかのコマンドを保持することができる。
【００３５】
フロントエンドＤＭＡ３１６は、特定のコマンドに関連するデータを対応するチャネルＤＭＡ、例えば、３５４−１、・・・、３５４−Ｎに分配するように構成することができる。チャネルＤＭＡ、例えば、３５４−１、・・・、３５４−Ｎは、チャネルバッファ、例えば、３５８−１、・・・、３５８−Ｎに通信可能に結合することができ、これはさらに、エラー修正コード（ＥＣＣ）およびメモリインターフェースモジュール、例えば、３６０−１、・・・、３６０−Ｎに通信可能に結合することができる。チャネルプロセッサ、例えば、３５６−１、・・・、３５６−Ｎもまた、ＥＣＣ／メモリインターフェース、例えば、３６０−１、・・・、３６０−Ｎ、チャネルＤＭＡ、例えば、３５４−１、・・・、３５４−Ｎ、およびチャネルバッファ、例えば、３５８−１、・・・、３５８−Ｎに通信可能に結合することができる。
【００３６】
図３に示される実施形態は、各バックエンドチャネル３５０−１、・・・、３５０−Ｎをバックエンドチャネルプロセッサ、例えば、３５６−１、・・・、３５６−Ｎを含むものとして図説するが、本開示の実施形態はそれには限定されない。例えば、バックエンド部分３４６は、いくつかのバックエンドチャネル、例えば、３５０−１、・・・、３５０−Ｎ上で動作することができる、特定用途集積回路（ＡＳＩＣ）などのようなハードウェアロジックを含む、共有バックエンドプロセッサのような回路を含むことができる。したがって、共有バックエンドプロセッサは、専用チャネルプロセッサ、例えば、３５６−１、・・・、３５６−Ｎに対して説明された内容に類似して、コマンドディスパッチャ３１８およびフロントエンドＤＭＡ３１６と通信するように、通信可能に結合することができる。図３に示されるように、特定の記憶装置へのアクセスが対応するチャネルを通るように、特定の記憶装置、例えば、３１２−１、・・・、３１２−Ｎは、各チャネル、例えば、３５０−１、・・・、３５０−Ｎに対応する。
【００３７】
ホストインターフェース３１４は、コントローラ３１０とホストとの間の通信インターフェースとすることができる。１つ以上の実施形態において、ホストとコントローラとの間で通信される情報は、プログラム（例えば、書き込み）コマンド、読み出しコマンド、消去コマンド等のいくつかのコマンドを含むことができる。コマンドは、関連の記憶装置を操作するために使用することができる。
【００３８】
コマンドディスパッチャ３１８は、ホストインターフェース３１４およびアプリケーション層３２０を通して、ホスト、例えば、図２の２０２からいくつかのコマンドを受信することができる。コマンドディスパッチャ３１８は、受信したコマンドを保持することができ、例えば、３５０−１、・・・、３５０−Ｎなどのそれぞれのバックエンドチャネル、のうちのいくつかの、例えば、３５５−１、・・・、３５５−Ｎなどのそれぞれのチャネルコマンドキュー、およびフロントエンドＤＭＡ３１６にコマンドを分配することができる。
【００３９】
ペイロードは、コマンドに関連付けることができる。例えば、メモリに書き込むためのコマンドの場合、関連のペイロードは、書き込まれるデータにすることができる。特定のコマンドに関連するペイロードは、ホストＦＩＦＯ３２２およびＡＥＳ３２４を通して、フロントエンドＤＭＡ３１６で受信することができる。フロントエンドＤＭＡ３１６は、コマンドディスパッチャ３１８内の特定のコマンドに関連するデータを、チャネルＤＭＡ、例えば、３５４−１、・・・、３５４−Ｎに、または、対応するチャネルバッファ、例えば、３５８−１、・・・、３５８−Ｎに直接分配することができる。チャネルＤＭＡ、例えば、３５４−１、・・・、３５４−Ｎは、特定のコマンドに関連するデータを対応するチャネルバッファ、例えば、３５８−１、・・・、３５８−Ｎに分配することができる。１つ以上の実施形態において、チャネルバッファ、例えば、３５８−１、・・・、３５８−Ｎは、いくつかのコマンドに対応するデータを保持することができ、そのデータは、チャネルＤＭＡ、例えば、３５４−１、・・・、３５４−Ｎを通して、フロントエンドＤＭＡ３１６から受信される。
【００４０】
１つ以上の実施形態において、ホスト、例えば、図２の２０２から、コントローラ３１８のコマンドディスパッチャ３１８へ通信される情報は、数ある中でも、プログラムコマンド、読み出しコマンド、および消去コマンド等のいくつかのコマンドを含むことができる。プログラムコマンドは、メモリ、例えば、記憶装置３１２−１、・・・、３１２−Ｎにデータを書き込むために使用することができ、読み出しコマンドは、メモリからデータを読み出すために使用することができ、消去コマンドは、メモリの一部を消去するために使用される場合がある。コマンドは、例えば、プログラム、読み出し、消去等の操作の種類に加えて、メモリの操作に関与するメモリの開始位置、例えば、ＬＢＡ、および数量、例えば、論理セクタの数を示すことができる。
【００４１】
１つ以上の実施形態において、ＬＢＡは、ホストの論理セクタに関連付けることができ、例えば、ホストの各論理セクタは、特定のＬＢＡに関連付けることができる。例えば、ＬＢＡ１０００は、第１の論理セクタに関連付けることができ、ＬＢＡ１００１は、第２の論理セクタに関連付けることができ、ＬＢＡ１００２は、第３の論理セクタに関連付けることができる、等である。さらなる例として、ＬＢＡ１０００から開始するデータの１６の論理セクタに対応するアレイ内のメモリセルをプログラムするためのコマンドは、ＬＢＡ１０００から１０１５までに関連するメモリセルをプログラムすることができ、例えば、メモリセルは、ＬＢＡ１０００から１０１５までに関連するデータの論理セクタに対応する。このように、メモリアレイ内のデータの各論理セクタは、特定のＬＢＡによって参照することができる。ＬＢＡは、バックエンド３４６によって、メモリの特定のブロックに関連する物理アドレス、例えば、メモリの特定ブロックの開始アドレスにマッピングすることができるか、または、ＬＢＡは、メモリのブロック内の特定のセクタ、例えば、メモリの特定のセクタの開始アドレスに関連する物理アドレスにマッピングすることができる。
【００４２】
図４は、本開示の１つ以上の実施形態に従って実装される、論理アドレスから物理アドレスへのマップを示す図である。アドレスマップ４６１は、記憶装置、例えば、３１２−１、・・・、３１２−ＮのＬＢＡと物理ブロックアドレス（ＰＢＡ）との間の相関関係を示す。例えば、ＬＢＡ１（４６２−１）は、ＰＢＡ  Ａ（４６４−１）に対応し、ＬＢＡ２（４６２−２）は、ＰＢＡ  Ｂ（４６４−２）に対応し、ＬＢＡ３（４６２−３）は、ＰＢＡ  Ｃ（４６４−３）に対応し、ＬＢＡ４（４６２−４）は、ＰＢＡ  Ｄ（４６４−４）に対応し、・・・、ＬＢＡ  Ｍ（４６２−Ｍ）は、ＰＢＡ  Ｍ（４６４−Ｍ）に対応する。
【００４３】
［コマンドの受信］
本開示の１つ以上の実施形態に従い、フロントエンドＤＭＡ、例えば、図３の３１６は、コマンドキュー３８６を含むことができる。フロントエンドＤＭＡ、例えば、図３の３１６は、アプリケーション層３２０およびコマンドディスパッチャ３１８を通して、ホストから受信されるいくつかのコマンドを保持することができる。コマンドディスパッチャ３１８は、コマンドを処理し、コマンドをフロントエンドＤＭＡ３１６およびいくつかの適切なバックエンドチャネル、例えば、図３の３５０−１、・・・、３５０−Ｎに分配することができる。コマンドディスパッチャ、例えば、図３の３１８によって実行される操作は、ハードウェア、ソフトウェア、またはこれらの組み合わせに実装することができる。コマンドディスパッチャ、例えば、図３の３１８は、コマンドプロセッサ部と、ディスパッチャ部とを含むことができる。コマンドプロセッサ部およびディスパッチャ部は、ディスクリートハードウェアモジュールである場合がある、または、それぞれの機能が、制御回路によって統合様式で実装される場合がある。
【００４４】
ホストからのコマンド（以下、「ホストコマンド」と称する）を受信後、例えば、図３の３１８などの、コマンドディスパッチャのコマンドプロセッサ部は、ホストコマンドの整合性をチェックし、次いで、ホストコマンドをコマンドディスパッチャのディスパッチャ部に転送することができる。本開示の１つ以上の実施形態に従い、例えば、図３の３１８などの、コマンドディスパッチャのコマンドプロセッサ部は、他の整合性テストの中でも、受容可能なＬＢＡ範囲、および有効なタグに対してコマンドをチェックするように構成することができる。
【００４５】
ディスパッチャ部は、フロントエンドＤＭＡ３１６およびいくつかの適切なバックエンドチャネル、例えば、図３の３５０−１、・・・、３５０−Ｎにホストコマンドを分配し、アプリケーション層３２０にコマンドの完了ステータス、例えば、受容されて処理されたかどうかを示すことができ、これは、次のホストコマンドが送信される場合があることを示すためにホストに通信することができる。コマンドディスパッチャの機能性をハードウェアに実装すると、ホストコマンドの処理時間、例えば、ホストからのホストコマンドの受信後に、コマンドを処理し、コマンド完了ステータスのインジケータを通信（例えば、伝送または送信）するための時間を短縮することができる。ホストとメモリシステムとの間で通信されるホストコマンド間の処理時間を短縮することによって、メモリシステムの処理能力を上げることができる。
【００４６】
図５は、本開示の１つ以上の実施形態に従う、フロントエンドＤＭＡのコマンドキューの機能ブロック図である。コマンドキュー５８６は、Ｃ個のコマンドを保持する能力を有し、例えば、コマンドキューは、いくつかのコマンドスロットを有することができ、各コマンドスロットは、コマンドを保持することが可能である。図５に示されるように、コマンドキュー５８６は、いくつかのコマンドスロット、例えば、コマンドスロット１（５８７−１）、コマンドスロット２（５８７−２）、・・・、コマンドスロットＣ（５８７−Ｃ）を含む。例えば、１つ以上の実施形態において、フロントエンドＤＭＡ、例えば、図３の３１６は、３２のコマンドを記憶する能力を有するいくつかのコマンドキュー３８６を含むことができる。しかしながら、本開示の実施形態は、特定の数のコマンドスロット、コマンドキュー能力、またはコマンドディスパッチャによって同時に処理することが可能なコマンド数に限定されない。
【００４７】
１つ以上の実施形態において、フロントエンドＤＭＡ、例えば、図３の３１６は、最初の順序でホストからホストコマンドを受信することができる。いくつかのコマンドキュー３８６は、最初の順序、例えば、ホストから受信される順序で、いくつかのホストコマンドを保持することができる。コマンドキュー３８６は、１度に有限数のコマンドを保持することができる。したがって、コマンドキュー３８６がその容量に到達し、ホストからそれ以上ホストコマンドを受信することが一時的に不可能である時、コマンドディスパッチャは、ホストに信号を送信するように構成される。
【００４８】
１つ以上の実施形態において、コマンドディスパッチャ、例えば、図３の３１８は、タスクファイル３１５内に保持されるホストコマンドを処理することができ、フロントエンドＤＭＡ３１６内のコマンドキュー３８６にそれを分配することができる。コマンドディスパッチャ３１８は、次いで、コマンドキュー３８６からのホストコマンドを、例えば、ホストコマンドが実行される順序などのような、コマンドキュー３８６内で受信され、かつキューされる順序、ホストコマンドを分配できる順序、前述の順序の組み合わせ、または何らかの他の適切な順序スキームに従って、バックエンドチャネルに分配することができる。
【００４９】
１つ以上の実施形態において、コマンドディスパッチャのコマンドプロセッサ部は、コマンドキュー３８６内に保持されるコマンドが、例えば、複数のバックエンドチャネル間のいくつかのコマンドの分配を最適化するように、およびホストコマンドを個別にまたはグループとして修正するように、修正できるかどうかを判定するように構成される。分配を効率的に利用するようにコマンドを修正することは、書き込み動作のためにメモリへの同じネット変更を達成するために、または読み出し動作のためにメモリからの同じネット読み出しを達成するために、より少ない数のコマンドが送信され、それによって、数ある中でも、時間、処理するリソース、および／または通信帯域幅を節約するように、例えば、コマンドを隣接したメモリ位置に組み合わせること、ならびに／あるいは読み出されずに以降に上書きされたコマンドを削除することを含むことができる。本明細書に使用される場合、コマンドは、ホストコマンド、修正済みのホストコマンド、および他の種類のコマンドを含むことができる。コマンドプロセッサ部は、それぞれのチャネルにコマンドをより効率的に分配し、個々のコマンドをより効率的に作成し、メモリシステムの信頼性を向上し、メモリシステムの性能を向上し、メモリシステムのウェアを削減し、あるいはそれぞれのバックエンドチャネルの間でのコマンドの質、効率性、またはフローを向上するために、コマンドキュー３８６内のコマンドを分析し、修正することができる。例えば、コマンドプロセッサ部は、他のコマンド最適化技法の中でも、コマンドのグループ内のコマンドの順序を変更し、複数のコマンドを１つ以上のコマンドにグループ化することによってコマンドを組み合わせ（例えば、融合）、または特定のコマンドが実行されないことを判定すること（例えば、以降のコマンドが特定のメモリ位置のデータを修正すると判定することができる場合）ができる。１つ以上の実施形態において、フロントエンドプロセッサ（ＦＥＰ）３２８はまた、これらのタスクを実行し、これらの判定を行うこともできる。
【００５０】
図６Ａおよび図６Ｂは、本開示の１つ以上の実施形態に従う、フロントエンドＤＭＡのコマンドキューの動作を示す図である。１つ以上の実施形態に従い、コマンドディスパッチャ、例えば、図３の３１８、および／またはＦＥＰ、例えば、図３の３２８は、フロントエンドＤＭＡ、例えば、図３の３８６のコマンドキュー内に保持されるコマンドが、修正されるかどうかを判定することができ、コマンドディスパッチャは、コントローラ、例えば、図３の３４４のフロントエンドのコマンド処理能力を促進させることを目的とする様式において、コマンドを修正するように構成することができる。
【００５１】
コマンド処理能力を向上させるために、１つ以上の実施形態においては、コマンドディスパッチャ３１８またはＦＥＰ３２８は、バックエンドチャネルがビジーである時（例えば、関連のチャネルバッファに空きがない時）のみに処理能力を向上させるように、ホストコマンドを処理する。関連のチャネルバッファ（例えば、それぞれ３５８−１、・・・、３５８−Ｎ）に空きがない時等、バックエンドチャネルがビジーである時、コントローラのフロントエンド部は、バックエンドチャネルへコマンドを分配することを阻止される場合がある。いくつかのバックエンドチャネルが有効で、追加のコマンドを受容することができる範囲では、コマンドは、コマンドディスパッチャによる処理のさらなる最適化を達成するために遅延されてはならない、というのは、コマンドキュー６８６Ａ／Ｂを空にすることが遅延すると、コマンドキュー６８６Ａ／Ｂ内のホストコマンドの完了を遅延することになり、このために、ホストからの追加のコマンドの転送を遅延することになり、コマンドのさらなる最適化は、他のバックエンドチャネルへのコマンドの分配の際に遅延を発生させることなく、それぞれのチャネルコマンドキュー（おそらくさらに高い効率性で）発生する場合があるからである。バックエンドチャネルの動作に関する追加の詳細は、少なくとも１人の共通発明人を有し、代理人整理番号１００２．０４３０００１を有する、同一出願人による米国特許出願番号第１２／３５１，２０６号「Ｍｏｄｉｆｙｉｎｇ  Ｃｏｍｍａｎｄｓ」に見出すことができる。
【００５２】
１つ以上の実施形態において、コマンドキュー６８６Ａは、図３に関して検討されるコマンドキュー３８６に類似する可能性がある。コマンドキュー６８６Ａは、いくつか、例えば、Ｃ個の、コマンドスロット、例えば、６８７−１Ａ、６８７−２Ａ、６８７−３Ａ、６８７−４Ａ、６８７−５Ａ、６８７−６Ａ、６８７−７Ａ、６８７−８Ａ、・・・、６８７−ＣＡを含む。Ｃ個のコマンドスロットの各々は、ホストコマンド等のコマンドを一時的に記憶するように構成することができる。例えば、コマンドスロット６８７−１Ａは、第１のコマンドを記憶することができ、コマンドスロット６８７−２Ａは、第２のコマンドを記憶することができる、等である。
【００５３】
コマンドキュー６８６Ａ内のコマンドを処理するフロントエンドコマンドディスパッチャに関して以下に説明され、図６Ａに図説される例において、コマンドスロット１、例えば、６８７−１Ａ、内のコマンドは、ＬＢＡ１０００から開始する１６の論理セクタが関与する記憶装置内のメモリセルにデータをプログラムする、例えば、書き込む、ためのコマンドとすることができる。コマンドスロット２、例えば、６８７−２Ａ、内のコマンドは、ＬＢＡ２０００から開始する４つの論理セクタが関与する記憶装置内のメモリセルからデータを読み出すためのコマンドとすることができる。コマンドスロット３、例えば、６８７−３Ａ、内のコマンドは、ＬＢＡ１０００から開始するデータの４８の論理セクタが関与する記憶装置内のメモリセル内にデータをプログラムするためのコマンドとすることができる。コマンドスロット４、例えば、６８７−４Ａ、内のコマンドは、ＬＢＡ２００２から開始するデータの１０の論理セクタが関与する記憶装置内のメモリセル内のデータを読み出すためのコマンドとすることができる。コマンドスロット５、例えば、６８７−５Ａ、内のコマンドは、ＬＢＡ２０００から開始するデータの１６の論理セクタが関与する記憶装置内のメモリセルを読み出すためのコマンドとすることができる。コマンドスロット６、例えば、６８７−６Ａ、内のコマンドは、ＬＢＡ１０４０から開始するデータの１６の論理セクタが関与する記憶装置内のメモリセルをプログラムするためのコマンドとすることができる。コマンドスロット７、例えば、６８７−７Ａ、内のコマンドは、ＬＢＡ３０００から開始するデータの２つの論理セクタが関与する記憶装置内のメモリセルをプログラムするためのコマンドとすることができる。コマンドスロット８、例えば、６８７−８Ａ、内のコマンドは、ＬＢＡ３００２から開始するデータの２つの論理セクタが関与する記憶装置内のメモリセルをプログラムするためのコマンドとすることができる。
【００５４】
任意の特定の時間にコマンドキュー６８６Ａ内に保持されるコマンドは、例えば、全てが同じチャネルに対応するように、１つの記憶装置に関連する場合があり、または、例えば、複数のチャネルに対応するように、いくつかの異なる記憶装置に関連する場合がある。コマンドが関連する特定のチャネルは、論理アドレスから物理アドレスのマップ、例えば、図４のアドレスマップ４６１、によってマッピングされるように、各チャネルに関して物理メモリの量および区画に従って、ＬＢＡから決定することができる。例えば、物理ブロックアドレスは、チャネル識別情報を含む場合がある。
【００５５】
コマンドキュー６８６Ａ内に保持されるコマンドは、本開示の１つ以上の実施形態に従い修正することができる。例えば、コマンドスロット６８７−１、６８７−３、および６８７−６内のコマンドは、ＬＢＡ１０００から開始する５６の論理セクタが関与するメモリセルをプログラムするための単一のコマンドに組み合わされる場合がある。このように、コマンドディスパッチャは、少なくとも２つのコマンドが同じ動作、例えば、書き込み動作、のためであるが、論理的に隣接したメモリ位置が関与していると判定するように構成することができる。コマンドディスパッチャは、少なくとも２つのコマンドを、論理的に隣接したメモリ位置の組み合わせが関与する単一のコマンドに組み合わせることによって、バックエンドチャネルへのコマンドの分配を最適化することができる。組み合わされたコマンドは、論理的に隣接したメモリ位置が単一のチャネルに関連する場合に最も効率的である。
【００５６】
図６Ｂは、図６Ａに示されるコマンドが、本開示の１つ以上の実施形態に従い修正された後のチャネルコマンドキュー６８６Ｂの模式図を示す。図６Ｂに示されるように、チャネルコマンドスロット６８７−１Ｂ内に保持されるコマンド１は、ＬＢＡ１０００から開始するホストの５６の論理セクタに対応するアレイ内のメモリセルをプログラムするためのコマンドである。チャネルコマンドスロット６８７−２Ｂ内に保持されるコマンド２は、ＬＢＡ２０００から開始するホストの１６の論理セクタに対応するアレイ内のメモリセルを読み出すためのコマンドで、チャネルコマンドスロット６８７−３Ｂ内に保持されるコマンド３は、ＬＢＡ３０００から開始するホストの４つの論理セクタに対応するアレイ内のメモリセルをプログラムするためのコマンドである。
【００５７】
コマンドディスパッチャはまた、少なくとも２つのコマンドが同じ動作、例えば、書き込み動作、のためであるが、論理的に重複するメモリ位置、例えば、１つのコマンドに関与するメモリ位置、に関与することが、同じ種類の別のコマンドに関与するメモリ位置の少なくとも一部を含むことを判定するように構成することもできる。コマンドディスパッチャは、少なくとも２つのコマンドを、論理的に重複するメモリ位置の組み合わせが関与する単一のコマンドに組み合わせることによって、バックエンドチャネルへのコマンドの分配を最適化することができる。
【００５８】
他のコマンド修正が可能であってもよい。例えば、コマンドプロセッサ部が、特定のメモリ位置、例えば、ＬＢＡ、に関与するコマンドキュー６８６Ａ内の第１のコマンドが、特定のメモリ位置を上書きすることになる第２のコマンドの前に実行される場合があると判定することができる場合、その結果は一時的、例えば、第２のコマンドが実行される時まで、に過ぎないので、コマンドプロセッサ部は、第１のコマンドをその送信先チャネルに分配しない（例えば、消去する、無視する、実行しない）場合がある。
【００５９】
上述の例は、図６を参照するとさらに理解することができる。コマンドキュー６８６Ａの１番上により近いコマンド、例えば、コマンドスロット６８７−１、は、コマンドキュー６８６Ａの１番下により近いコマンド、例えば、コマンドスロット６８７−Ｃ、の前に実行されると想定する。コマンドスロット１、例えば、６８７−１Ａ、およびコマンドスロット３、例えば、６８７−３Ａ、内のコマンドのＬＢＡはどちらも１０００である。コマンド１およびコマンド３はどちらもプログラム動作である。コマンド３は、ＬＢＡ１０００から開始する４８のセクタをプログラムするので、コマンド３は、コマンド１の結果としてＬＢＡ１０００から開始する１６のセクタ内にプログラムされる内容が何であれ完全に上書きすることになる。介在する読み出し動作、例えば、コマンド２が存在するが、しかしながら、コマンド２は、ＬＢＡ１０００から開始する１６のセクタに関与しない。したがって、コマンド１は、分配される必要がなく（例えば、消去される、無視される、実行されない）、それによって、コマンド１をチャネルに転送する必要がないことによって時間を節約し、コマンドキュー６８６Ａから、およびコマンドの複数のバックエンドチャネル間の分配、ならびに、コマンドキュー６８６Ａが追加のホストコマンドを受容することができる速度を最適化する。その他、コマンドの順序を変更すること、組み合わせること、および削除することは、いくつかのバックエンドチャネルへのコマンドキュー６８６Ａ内に示されるコマンドの分配を最適化、例えば、効率的に利用すること、を可能にする場合がある。
【００６０】
コマンドディスパッチャは、このように、コマンドキュー６８６Ａ内のいくつかのコマンドによって達成される、メモリへのネット変更を判定し、この判定に基づいて、コマンドキュー６８６Ａ内に保持されるいくつかのコマンドを修正するように構成することができ、それによって、複数のバックエンドチャネル間のいくつかのコマンドの分配を最適化する。コマンドディスパッチャが、任意の所与の時間にコマンドキュー６８６Ａ内に保持されるコマンドから、それを実行しても、決定された、いくつかのコマンドによるメモリへのネット変更を変更しないと判定することができる時、コマンドディスパッチャは、コマンドキュー６８６Ａからのいくつかのコマンドのうちの１つを分配しない（例えば、削除する、無視する、実行しない）ように構成することができる。例えば、コマンドディスパッチャは、コマンドキュー６８６Ａ内の第１のコマンドに関連するメモリ範囲を修正して、コマンドキュー６８６Ａ内の第２のコマンドのメモリ範囲の一部を含み、その後、いくつかのコマンドによって達成されることが決定されたメモリへのネット変更を変更することなく、コマンドキュー６８６Ａからの第２のコマンドを削除するように、構成することができる。
【００６１】
上述のように、コマンドディスパッチャのディスパッチャ部は、例えば、ホストコマンド等のコマンドをいくつかの適切なチャネルに分配することができる。ディスパッチャ部は、例えば、特定のコマンドに関連するペイロードが単一のチャネルに関与する場合、特定のコマンドを適切なチャネルに分配することができる。複数のチャネルに関与するペイロードの場合、ディスパッチャ部は、コマンドに関連する特定の論理ブロックアドレスおよびセクタカウントに対応するそれぞれの記憶装置を動作させるためのそのチャネル特定のパラメータを含む、特定のコマンドを複数のチャネルに分配することによって、関連するコマンドの分配を管理することができる。コマンドに関連するペイロードは、次いで、解析することができ、その部分は、例えば、ラウンドロビン様式等、により、複数のチャネル間に分配される。読み出し動作の場合も同様に、読み出しコマンドに関連するペイロードは、複数のバックエンドチャネル間で分配される場合があり、対応する読み出しコマンドは、複数のチャネル間からデータを集めるために、関連するバックエンドチャネルに分配される場合がある。
【００６２】
各バックエンドチャネルは、例えば、Ｒ個の連続する論理ブロックアドレス（ＬＢＡ）を処理することができるが、ホストコマンド（すなわち、ホストから受信されるコマンド）は、比較的多数のセクタに関与することができる。コマンドディスパッチャは、ラウンドロビン様式でバックエンドコマンドをいくつかのバックエンドチャネル間に分配することができ、各バックエンドコマンドがＲ個の連続するＬＢＡに関与する点を除いては、各バックエンドコマンドはホストコマンドを模倣する。ラウンドロビン処理は、ホストコマンドのセクタの全てが、バックエンドチャネルの間でＲの大きさの「かたまり」で分配されるまで、継続する。
【００６３】
さらなる説明のために、以下の数値例を検討するが、ここでは、ホストコマンドは、１２８セクタのデータを書き込むためで、４つのバックエンドチャネルが存在し、各バックエンドチャネルは、８つの連続するＬＢＡを処理することができる。簡潔性のために、この例ではメモリ位置オフセットは無視される。１２８のセクタが関与するホスト書き込みコマンドを受信後、単一のホスト書き込みコマンドに応答して、複数のバックエンド書き込みコマンドが生成される。第１のバックエンド書き込みコマンドは、バックエンドチャネル１に向かう最初の８つのＬＢＡに関与することができ、その後第２のバックエンド書き込みコマンドは、バックエンドチャネル２に向かう次の８つのＬＢＡに関与することができ、第３のバックエンド書き込みコマンドは、バックエンドチャネル３に向かう次の８つのＬＢＡに関与することができ、第４のバックエンド書き込みコマンドは、バックエンドチャネル４に向かう次の８つのＬＢＡに関与することができる。このラウンドロビン処理は、第１のバックエンド書き込みコマンドがバックエンドチャネル１に向かう次の８つのＬＢＡにも関与することによって、全ての１２８のセクタが４つのチャネルの間で分配されるまで、継続する。
【００６４】
この結果、各チャネルは、ホスト書き込みコマンドに対応するペイロードの受信した３２のセクタを有することになるが、８つのＬＢＡ部分がまとめてつながれた集合体として組み立てられる。その後、それぞれの書き込みコマンドは、それぞれのバックエンドチャネルに分配されて、データの３２のセクタに書き込む。このように、単一のホストコマンドは、結果としてＮ個のバックエンドコマンドとすることができ（Ｎ個のバックエンドチャネルが存在する場合）、各々は、ホストコマンド動作を模倣するが、ホストコマンドに関連するペイロードの約Ｎ分の１が関与する。ホストコマンドに関連するペイロードのそれぞれの部分に加えて、チャネルあたり１つのコマンドだけが分配される。本開示の実施形態は、ここに説明される数値例の量に限定されず、書き込みコマンドにも限定されない。当業者は、他のコマンド（例えば、読み出しコマンド）が、単一のホストコマンドからの結果として、複数のチャネルの間で同様に並列に分配される（例えば、いくつかのバックエンドチャネルからデータを読み出すために）場合があることを理解するであろう。
【００６５】
１つ以上の実施形態において、コマンドキュー６８６Ａ内のコマンドは、部分的なページプログラム動作を削除する、または削減するように、いくつかのコマンドを単一のコマンドに込み合わせることによって、例えば、部分的なページをまとめて単一の動作に組み合わせることによって、修正することができる。部分的ページをプログラムすることに関与するウェアを削減することによって、メモリシステムの性能および信頼性を向上することに加えて、フロントエンドコマンドキュー６８６Ａ内のコマンドを組み合わせると、複数のプログラムコマンドをより少ない数のコマンド、例えば、単一のコマンド、に削減することができるので、いくつかのコマンドの複数のバックエンドチャネル間の分配を最適化する。
【００６６】
部分的ページプログラム動作は、空きがあるメモリセルの新しいブロックを検出し、古いブロックからのページをデータバッファに読み出し、新しいデータをデータバッファに結合し、ページ全体（結合したデータを含む）を新しいブロック内のメモリの新しいページに書き込み、古いブロックの他のページ全てを新しいブロックへ移動し、それが消去されるものであることを示すために古いブロックにマークを付けることによって、実施される。いくつかのコマンドの複数のバックエンドチャネル間の分配を最適化する、コマンドを組み合わせるために使用されるアルゴリズムを説明するために、数例が提供されてきたが、本開示の実施形態は、提供される例に限定されず、本開示は、複数のバックエンドチャネル間で分配されるコマンドの数を削減するために、フロントエンドでコマンドを削除、またはコマンドの順序を変更することが関与するような、他の最適化技法を意図する。
【００６７】
１つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるコマンドキュー、例えば、図３の３８６と、を含む。コマンドキュー、例えば、図３の３８６は、ホストから受信されるホストコマンドを保持するように構成することができる。回路は、コマンドキュー、例えば、図３の３８６、内のいくつかのホストコマンドに少なくとも応答していくつかのバックエンドコマンドを生成し、いくつかのバックエンドコマンドを複数のバックエンドチャネルのうちのいくつかに分配するように構成される。
【００６８】
バックエンドコマンドの数は、ホストコマンドの数よりも少なく、または多くできる。例えば、１つ以上の実施形態において、回路は、単一のホストコマンドに応答して、複数のバックエンドチャネルの各々に対応するバックエンドコマンドを生成するように構成することができる。回路はさらに、バックエンドコマンドが実質的に並列に処理されるように、対応するバックエンドコマンドをそのそれぞれのバックエンドチャネルに分配するように構成することができる。１つ以上の実施形態において、回路は、複数のホストコマンドが実質的に同時に実行されるように、異なる複数のバックエンドチャネルの間で複数のホストコマンドを分配するように構成することができる。
【００６９】
いくつかのバックエンドコマンドを生成することは、いくつかのホストコマンドのうちの少なくとも１つを修正することと、いくつかのホストコマンドのうちの少なくとも別の１つを消去することとの組み合わせを含むことができる。ダイレクトメモリアクセスモジュール（ＤＭＡ）は、生成されるいくつかのバックエンドコマンドに対応するホストコマンドに関連するデータを分配するように構成することができる。
【００７０】
それぞれのバックエンドコマンドの完了時、回路は、任意の他の複数のバックエンドコマンドの実行の完了に関係なく、複数のバックエンドコマンドのうちの特定の１つの完了時に、複数のバックエンドコマンドのうちの特定の１つの実行の結果をホストに通信するように構成することができる。
【００７１】
図７は、本開示の１つ以上の実施形態に従う、いくつかのバックエンドチャネルの間でコマンドを分配するための流れ図である。コマンド分配は、７６６で開始する。７６７で、分配されたコマンドの開始ＬＢＡは、コマンドＬＢＡとＬＢＡオフセットとの和に設定することができる。開始チャネルは、開始チャネルのセクタカウント、終了チャネル、終了チャネルのセクタカウント、残りのセクタカウント、およびチャネル開始ＬＢＡに加えて、決定、例えば、計算、することができる。７６８で、例えば、コマンドが最初に分配される、チャネル番号を開始チャネルに設定することができる。次いで７６９で、開始ＬＢＡおよびセクタカウントを、現在のチャネルに対して決定、すなわち、計算、することができ、ステータスビット、例えば、ｉｎｖｏｌｖｅｄ＿ｃｈ、に関与するチャネルは、特定のチャネルが特定のコマンドに関与することを示すように、特定の現在のチャネル番号に対してアサートすることができる。
【００７２】
次に７７０で、現在のチャネルの開始ＬＢＡおよびセクタカウントは、現在のチャネルのインボックスにロードされる（チャネルインボックスは以下にさらに説明される）。現在のチャネルがエンドチャネルであるかどうか（７６７を参照）は、７７１で判定することができる。現在のチャネルがエンドチャネルでない場合、分配プロセスは、７７３で次のチャネルに移動し、例えば、現在のチャネル番号はインクリメントすることができ、プロセスは、７６９に継続する（現在のチャネルの開始ＬＢＡおよびセクタカウントは現在のチャネルのインボックスにロードされる）。現在のチャネルがエンドチャネルである場合、７７２で、関与する開始チャネル、チャネルセクタカウントおよび関与するチャネルは、ＤＭＡディスクリプタブロック（ＤＤＢ、以下に詳細を説明）にロードされ、プロセスは、７６６で次のコマンド分配を開始するように戻る。
【００７３】
図８は、本開示の１つ以上の実施形態に従う、フロントエンドといくつかのチャネルとの間のインターフェースの一実施形態を示す機能ブロック図である。図８は、メモリコントローラのバックエンド部８４６に存在するいくつかのチャネル、例えば、８５０−１、・・・、８５０−Ｎを示し、これらは、図３に示されるチャネル３５０−１、・・・、３５０−Ｎに類似する場合があるが、しかしながら、追加の構造がより詳細に示されてもよいように、図３に示されるチャネル詳細のうちの一部は、図８では明確化のために省略される。図８はまた、メモリコントローラのフロントエンド部８４４に配置されるフロントエンドＤＭＡ８１６およびフロントエンドプロセッサ８２８（ＦＥＰ）を示す。フロントエンドＤＭＡ８１６は、図３のフロントエンドＤＭＡ３１６に類似する場合があり、ＦＥＰ８２８は、図３のＦＥＰ３２８に類似する場合がある。フロントエンドＤＭＡ８１６およびＦＥＰ８２８はそれぞれ、図８においては、以下にさらに詳細を説明する様式において、いくつかのチャネル、例えば、８５０−１、・・・、８５０−Ｎの各々に通信可能に結合されるとして示される。
【００７４】
各チャネルは、チャネルプロセッサ、例えば、８５６−１、・・・、８５６−Ｎ、チャネルインボックス、例えば、８７４−１、・・・、８７４−Ｎ、チャネルインレジスタ、例えば８７６−１、・・・、８７６−Ｎ、およびチャネルアウトレジスタ、例えば、８７８−１、・・・、８７８−Ｎを含む。チャネルアウトレジスタおよびインボックスの各々は、ＦＥＰ８２８に情報を提供するように、通信可能に結合される。チャネルインボックスおよびインレジスタの各々は、フロントエンドＤＭＡ８１６から情報を受信するように、通信可能に結合される。
【００７５】
［フロントエンドダイレクトメモリアクセス（ＤＭＡ）］
図９Ａは、本開示の１つ以上の実施形態に従って実装される、ダイレクトメモリアクセスモジュール（ＤＭＡ）ディスクリプタブロックの機能ブロック図である。ＤＤＢは、ホストとバックエンドチャネルとの間のデータフローを制御し、コマンドキュー、例えば、図３の３８６、から、多様なバックエンドチャネルへのコマンドの分配の効率を向上し、それによって、コマンドキュー、例えば、図３の３８６、を通してコマンドの速度を上げるために、例えば、コマンドキュー、例えば、図３の３８６、内に保持されるコマンドに関して行う知的意思決定を使用する等、システムの処理能力を最適化するように機能する。
【００７６】
対応するチャネルを通してアクセスされるいくつかの記憶装置を有するメモリシステム、例えば、ソリッドステートドライブ、の場合、書き込みコマンドに関連するペイロードは、いくつかのチャネルへプログラムすることができ、読み出しコマンドに関連するペイロードは、いくつかのチャネルから組み立てることができる。複数のチャネルが関与する特定のコマンドに関連するペイロードを管理する際、ＤＭＡは、適当なチャネルの間でデータを分配する。例えば、ＤＭＡは、書き込みコマンドに関連するペイロードをいくつかのチャネルへ分配することと、読み出しコマンドに関連するペイロードをいくつかのチャネルから組み立てることと、を管理する。ＤＭＡはまた、ホストとバックエンドチャネルとの間で複数のコマンドに関連するペイロードを管理することによって、並列を含む、複数のコマンド実行を促進する。
【００７７】
ＤＤＢ、例えば、図３の３４０は、コマンドが発行される時に、Ｎ個のチャネルへ、およびＮ個チャネルからのペイロードの分配を調整する。例えば、書き込みまたは読み出し動作の間、Ｎ個のチャネルのうちのいくつかを使用することができる。ＤＤＢは、ＤＤＢ  ＴＡＧを各ホストコマンドのアドレスとすることができる場合、コマンドディスパッチャ、例えば図３の３１８、またはフロントエンドプロセッサ（ＦＥＰ）、例えば図３の３２８、によって、最初に更新、例えば、ロード、することができる。ＤＤＢは、ＦＥＰまたはコマンドディスパッチャのいずれかによって、設定することができる。「エラーなし」状況の間、Ｉ／ＯプロセッサのＦＥＰによるさらなる管理は必要としない可能性がある。
【００７８】
図９Ａは、いくつかのＴＡＧアドレスエントリ、例えば、ＤＤＢ１、・・・、ＤＤＢ３２、を有するＤＤＢ９８８の内容を示す。各ＴＡＧアドレスエントリは、データ転送に関連するセットアップ９９０、ステータス９９２、およびコマンド情報９９４に関連するパラメータを含有する。本開示の１つ以上の実施形態に従い、ＴＡＧアドレッシングは、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）規格に従って実装されてもよい。このように、ＤＤＢエントリは、他の情報の中でも、アクセスするチャネル、特定のチャネルに対して転送するセクタの数、および関連するステータスを決定することができる。ＤＤＢは、例えば、複数のコマンドがＤＤＢで同時に管理される代わりに、１度に１つのレガシーコマンドだけがＤＤＢを通して処理される等、複数のコマンドキューをサポートしないレガシーコマンドに対してはＤＤＢ１だけを使用することによって、後方互換性を有することができる。
【００７９】
ＤＤＢ９８８内の各エントリは、割り当てまたは暗示のいずれかとすることができる、ＴＡＧを有する。１つ以上の実施形態において、ＴＡＧは、例えば、ＤＤＢ内のエントリの物理的位置等のエントリ番号と同じにすることができ、このために、実際のＴＡＧ番号フィールドは各エントリとともに記憶される必要がないように、ＤＤＢ内のエントリの物理的位置は、ＴＡＧを暗示する。コントローラがホストコマンドを受信し、かつホストコマンドに対応するＤＤＢに対して新しいエントリを追加すると、各エントリがＴＡＧに関連付けられ、かつ新しいエントリに関連するＴＡＧを出力する。コントローラは、前述のようにコマンドキュー、例えば図３の３８６、を維持し、新しいエントリに関連するＴＡＧを受信し、ＴＡＧに対応する新しいコマンドキューエントリを追加し、範囲動作リクエストを出力する。
【００８０】
図９Ｂは、本開示の１つ以上の実施形態に従って実装される、図９Ａに図示されるＤＭＡディスクリプタブロック（ＤＤＢ）の中のエントリを示す。図９Ｂは、タイプ別のＤＤＢエントリ（例えば、セットアップ、ステータス、情報）、記述、サイズ（例えば、ビット数）、エントリ内の位置（例えば、ビット位置）のデータフィールドを示す。
【００８１】
各ＤＤＢエントリの次のカウントデータフィールド９９０Ａ、例えば、ビット位置９３〜９６にある「ｎｅｘｔ＿ｃｎｔ」は、１つの所与のチャネルに対して転送するデータのセクタ数を表す。次のカウントは、開始チャネルの第１の転送カウントを指定するように、コマンドディスパッチャまたはＦＥＰによって初期化することができる。次のカウントは、その前のチャネルの転送カウントを指定するように、ハードウェアによって更新することができる。更新は、現在のチャネルがその転送を完了後であるが、転送全体が完了する前に、発生する。転送するセクタ全体の残りの数が、チャネルが転送可能なセクタの最大数よりも大きい場合、例えば、カウントがページあたりのセクタ数とプレーン数の積よりも大きい場合、次のカウントには、その最大数のセクタをロードすることができる。そうでなければ、次のカウントには、転送するセクタ全体の残りの数をロードすることができる。
【００８２】
カウントデータフィールド９９０Ｂ、例えば、ビット位置８０〜９５にある「ｃｎｔ」、は、特定のコマンドに対する全体的な転送カウントとすることができる。カウントは、コマンドディスパッチャまたはＦＥＰによって、合計転送カウントで初期化することができ、転送するセクタの残りの数を示すように、ハードウェアによって更新することができる。１つ以上の実施形態に従い、ビット位置７９は使用されず、例えば、今後の使用のために保留される。
【００８３】
転送完了データフィールド９９０Ｄ、例えば、位置７８にある「ＸＣ」ビットは、ＤＭＡ転送が完了したことを示す。すなわち、データ段階は完了されている場合があるが、コマンド完了ステータスのインジケータが送信されていない場合がある。このビットは、チャネルステータス（「ｃｈ＿ｓｔａｔｕｓ」）が特定の値に等しくなると、ホストコマンドが完了したことを示すように、ハードウェアによって設定することができる。ハードウェアは次いで、コマンド完了ステータスのインジケータの送信をスケジュールする。インジケータがホストへ問題なく送信されると、ハードウェアは、後述するように、別のホストコマンドを受信する可能性が生じる前に、有効なデータフィールド、例えば、「Ｖ」フラグ、をクリアするように動作する。
【００８４】
ホストエラーデータフィールド９９２Ａ、例えば、位置７７にある「ＨＥ」ビット、は、エラーが発生したことを示すために使用することができる。このビットは、ホスト転送中にエラーが発生した場合、Ｉ／Ｏプロセッサまたはホストインターフェース、例えば、図３の３１４によって設定することができる。フラッシュエラーデータフィールド９９２Ｂ、例えば、位置７６にある「ＦＥ」ビット、は、記憶装置、例えば、ＮＡＮＤフラッシュ、のエラーが発生したことを示すために使用することができる。
【００８５】
有効データフィールド９９２Ｃ、例えば、位置７５にある「Ｖ」ビットは、有効なエントリを示すために使用することができる。このビットは、コマンドディスパッチャまたはＦＥＰによって、ハードウェアがＤＤＢエントリへのアクセスを有することを示すために、例えば、Ｖ＝１に、設定することができ、コマンドディスパッチャまたはＦＥＰは、そのエントリを上書きしない場合がある。このビットは、ホストコマンドが完了し、インジケータのホストへの送信が成功した後に、ハードウェアによってクリアすることができるか、または、ＤＤＢ内のエントリは、ホストから新しいコマンドを受信するために使用可能であることを示すために、コマンド、例えば、Ｖ＝０、を処理中にエラーがある時にＦＥＰによってクリアすることができる。
【００８６】
次のチャネルデータフィールド９９２Ｄ、例えば、ビット位置７２〜７４にある「ｎｘｔ＿ｃｈ」、は、転送が発生するチャネルを参照する。このフィールドは、転送のための開始チャネルを指定するために、コマンドディスパッチャまたはＦＥＰによって初期化することができ、転送のための次のチャネルを指定するために、ハードウェアによって更新することができる。更新は、その前のチャネルが、チャネルが処理することができる連続したＬＢＡの全ての転送を終了すると、発生する。特定のコマンドに対するセクタカウントは、前述のように、ラウンドロビン分配の一部としてチャネルへの追加のラウンドを含む、特定のコマンドに対して転送するためのセクタが残っている場合があるので、ゼロに到達しない場合がある。１つのチャネルの場合、例えば、ペイロードが分配されるラウンドロビンシーケンスの最後のチャネル等、特定のコマンドに対して転送するためのセクタが残っていない時、特定のコマンドに対するセクタカウントはゼロに到達する。
【００８７】
アクティブチャネルデータフィールド９９２Ｅ，例えば、ビット位置６４〜７１にある「ａｃｔｉｖｅ＿ｃｈ」は、各ビットがそのそれぞれのチャネルの完了ステータスを表す場合、例えば、８チャネルに対応する８ビット等のＮビット信号にすることができる。転送が発生する前に、各関与チャネルに対応するビットを設定することができる。次いで、各ビットは、そのチャネルに対するコマンドが完了するとリセットすることができる。
【００８８】
コマンド情報データフィールド９９４、例えば、ビット位置０〜６３にある「ＣＭＤ＿ｉｎｆｏ」、は、コマンド、優先ビット、ＦＵＡビット、ＬＢＡ、およびセクタカウントを含む、フレーム情報構造（ＦＩＳ）レジスタからの４つのワードを備えることができる。
【００８９】
例えば、１ビット等の、特定のデータフィールドサイズおよびデータフィールド位置を上記の例で説明したが、本開示の実施形態は、それぞれのそのような説明されたフィールド、または特定のデータフィールドサイズまたは位置に限定されず、追加または代替のフィールドを含むことができる。コマンドディスパッチャがＤＤＢを更新する時、入力信号、例えば、「ｘｆｅｒ＿ＴＡＧ」、は、ＤＤＢのアドレスポインタになり、更新信号、例えば、「ｕｐｄａｔｅ＿ｄｄｂ＿ｅｎ」、は、書き込み可能になる。
【００９０】
アービタ、例えば、図３の３４２、は、特定の時間にアクセスすることができるチャネルを決定する、ラウンドロビンアービタとすることができる。アービタは、次に使用可能なチャネルを検索する。アービタは、チャネルをステップスルーし、選択された使用可能なチャネル番号を特定のＤＤＢエントリ内の次のチャネルに一致させようと試みる。使用可能なチャネルがＤＤＢエントリに一致しない場合、アービタは、選択された使用可能なチャネル番号と特定のＤＤＢエントリ内の次のチャネルとの間の一致を発見することができるまで、必要な場合はラウンドロビン様式で反復を継続する。一致が発見されると、アービタは、通信プロトコルを起動して、転送を開始する。転送の完了時、完了プロトコルの信号を送信することができ、ＤＤＢエントリ内のチャネル情報が更新され、アービタは次に使用可能なチャネルを検索する。
【００９１】
特定のＴＡＧエントリのＮビットのアクティブチャネルフィールド９９２Ｅの各々、例えば、レジスタ、は、それぞれＮ個のチャネルのうちの１つに対応する。チャネルが特定のホストコマンドに使用可能であると見做されると、そのチャネルに関連するビットを設定することができる。チャネルが所与のホストコマンドに対する特定のチャネルへの転送を完了すると、チャネルのコマンド完了ステータスを設定することができ、さらに、ＤＤＢエントリのアクティブチャネルフィールド内のそれぞれのビットをリセットすることができる。アクティブチャネルの全ビットがリセットされると、ホストコマンドの「完了」ステータスのインジケータをアプリケーション層に発行することができる。アプリケーション層は、次いで、ホストコマンドの「完了」ステータスのインジケータをホストへ送信することができる。エントリの有効ビットは、ホストコマンドが完了され、「完了」ステータスのインジケータが正常にホストへの送信された後に、ハードウェアによってクリアすることができるか（例えば、Ｖ＝０）、または、例えば、ＤＤＢ内のエントリが、ホストから新しいコマンドを受信するために利用可能であることを示すようにコマンドを処理中にエラーが存在する時、ＦＥＰによってクリアすることができる。
【００９２】
コマンド完了は、リクエストされた転送が完了したことを示すバックエンドチャネルに基づく。本開示の１つ以上の実施形態に従い、複数のコマンドに関連する読み出し動作が複数のチャネルにわたって同時に実行されている間、ＤＭＡは、コマンドがホストから受信された順序に関係なく、データが準備できしだい、任意のチャネルからのデータをホストへ伝送する。メモリシステムのデータ処理能力を、例えば、記憶装置から読み出されたデータをホストへ返信する等、コマンドが受信または起動された順序ではなく、コマンドが各バックエンドチャネルによって少なくとも部分的に完了された順序で、コマンドを実行することによって大幅に向上することができる。
【００９３】
例えば、第１の読み出しコマンドは、メモリシステムによってホストから受信することができ、メモリシステムによる実行を開始することができ、その後に、第２の読み出しコマンドがメモリシステムによってホストから受信され、メモリシステムによりその実行が開始される。しかしながら、第２の読み出しコマンドが最初に完了する可能性がある。１つ以上の実施形態に従って、そのデータを最初にホストへ返すことができるように、第１の読み出しコマンドの完了を待機するのではなく、第１の読み出しコマンドから得られるデータをホストに返すことができる前に、第２の読み出しコマンドから得られるデータをホストへ返すことができる。
【００９４】
別の例では、第１の読み出しコマンドは、メモリシステムによってホストから受信することができ、その後に、第２の読み出しコマンドが、メモリシステムによってホストから受信される。しかしながら、効率性のために、メモリシステムは、例えば、前述の様式で、コマンドの順序を変更し、第１の読み出しコマンドを実行する前に、第２の読み出しコマンドを実行することができ、結果として、第２の読み出しコマンドは、第１の読み出しコマンドの前に完了されるようになる。１つ以上の実施形態に従って、第１の読み出しコマンドの完了を待機するのではなく、第２の読み出しコマンドから得られるデータは、完了と同時にホストへ返すことができ、これは、第１の読み出しコマンドから得られるデータをホストへ返すことができる前にすることができる。
【００９５】
複数の記憶装置を操作する際、その一部がそれらを相互に関連させる一定の逐次的順序を有する、単一のコマンドに関連するペイロードは、例えば、ペイロードの第１の部分は第１の記憶装置に記憶される場合があり、ペイロードの第２の部分は第２の記憶装置に記憶される場合がある等、異なるチャネルにわたって分配することができる。したがって、例えば、読み出しコマンドからの結果等、データの部分は、逐次的順序から外れて、異なる記憶装置（および関連のチャネル）から、コントローラのフロントエンドへ返される場合があり、例えば、第１の部分が第１の記憶装置から取り出すことができる前に、第２の部分が第２の記憶装置から取り出される場合がある。１つ以上の実施形態に従い、ＤＭＢバッファオフセットをサポートすることができる時、該部分は、逐次的順序から外れて、該部分が関係する逐次的順序ではなく、コマンドがそれぞれのバックエンドチャネルによって完了される順序で、ホストへ返信することができる。
【００９６】
換言すれば、単一のコマンドに関連するペイロードのいくつかの部分は、ソリッドステートドライブのいくつかの記憶装置の間に記憶され、例えば、常駐する。ペイロードの部分は、ペイロードを形成する特定の順序によって相互に関係する。単一の読み出しコマンドは、いくつかの記憶装置の中からペイロードを組み立てるために使用することができ、読み出しコマンドは、特定のメモリ位置に関して適切にカスタマイズされ、いくつかの記憶装置の各々からペイロードのそれぞれの部分を受信するために、いくつかの記憶装置に対応するいくつかのチャネルの各々に分配される。１つ以上の実施形態に従い、該部分はメモリシステムコントローラによって受信され、ペイロードの部分はペイロードを形成する際の相互に関係する特定の順序とは異なる可能性がある順序で、受信されるにつれてホストへ送信される。換言すると、ペイロードの部分は、ホストへ送信される前にペイロードに再び組み立てられることはなく、その代わりに、ペイロードの部分は、いくつかの記憶装置の中からコントローラに受信されるにつれて送信される。
【００９７】
本開示の１つ以上の実施形態に従い、複数のコマンド、例えば、書き込みコマンド、が、複数のチャネルにわたって同時に実行される動作中、例えば、対応する複数の記憶装置に対して、ＤＭＡは、コマンドが完了すると、特定のコマンドに対するコマンド完了ステータスのインジケータをホストに送信することができ、これによって、ホストは次の保留中コマンドを送信することが可能になる。１つ以上の実施形態において、複数のチャネルは非同期チャネルであり、コマンド、例えば、ホストコマンド、の実行は、コマンドがホストから受信された順序（ホストから受信された他のコマンドに対して）と同じ順序で発生しない場合がある。
【００９８】
例えば、第１のコマンドは、メモリシステムによってホストから受信することができ、その実行はメモリシステムによって開始され、その後に、第２のコマンドがメモリシステムによってホストから受信され、その実行はメモリシステムによって開始される。しかしながら、第２の読み出しコマンドは、最初に、複数のバックエンドチャネルのうちのいくつかによって完了することができる。１つ以上の実施形態に従い、第２のコマンドの完了ステータスのインジケータがホストに送信できる前に、第１のコマンドの完了ステータスのインジケータがホストに送信できるように、第１のコマンドの完了を待機するのではなく、第１のコマンドの完了ステータスのインジケータがホストに送信される前に、第２のコマンドの完了ステータスのインジケータをホストに送信することができる。
【００９９】
別の例では、例えば、メモリシステムの、メモリコントローラは、ホストから第１のコマンドを受信した後に、ホストから第２のコマンドをメモリコントローラによって受信する。しかしながら、メモリシステムは、例えば、前述の様式で、コマンドの順序を変更し、第１のコマンドを実行する前に、第２のコマンドを実行し、その結果第２のコマンドは、第１のコマンドの前に完了されることになる。１つ以上の実施形態に従い、第２のコマンドの完了ステータスのインジケータがホストに送信できる前に、第１のコマンドの完了ステータスのインジケータがホストに送信できるように、第１のコマンドの完了を待機するのではなく、第１のコマンドの完了ステータスのインジケータがホストに送信される前に、第２のコマンドの完了ステータスのインジケータをホストに送信することができる。
【０１００】
［結論］
本開示は、いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法を含む。１つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるコマンドキュー、例えば、図３の３８６、と、を含む。コマンドキュー３８６は、ホストから受信されるホストコマンドを保持するように構成することができる。回路は、コマンドキュー３８６内のいくつかのホストコマンドに少なくとも応答して、いくつかのバックエンドコマンドを生成し、いくつかのバックエンドコマンドを複数のバックエンドチャネルのうちのいくつかに分配するように構成される。
【０１０１】
本開示はまた、メモリコントローラのための方法および装置も含む。１つ以上の実施形態において、メモリコントローラは、複数のバックエンドチャネルと、複数のバックエンドチャネルに通信可能に結合されるフロントエンドコマンドディスパッチャと、を含む。コマンドディスパッチャは、いくつかのコマンドをバッファするように構成される、コマンドキュー、例えば図３の３８６、に通信可能に結合される。コマンドディスパッチャは、いくつかのコマンドによって達成される、メモリへのネット変更を判定し、複数のバックエンドチャネルの間でいくつかのコマンドの分配を最適化するために、決定に基づいて、いくつかのコマンドのうちの少なくとも１つを修正するように構成することができる。
【０１０２】
本開示の発明を実施するための形態においては、本明細書の一部を形成し、その中で、本開示の１つ以上の実施形態がどのように実践されてもよいかを例として示す、添付の図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実践することを可能にするように十分な詳細が説明され、他の実施形態が利用されてもよいこと、および本開示の範囲から逸脱することなく、工程的、電気的、または構造的変更が行われてもよいことが理解される。
【０１０３】
本明細書に使用される場合、指示子「Ｎ」、「Ｍ」、および「Ｃ」は、特に図面の参照番号に関して、特定の特徴の数を示すので、指示は、本開示の１つ以上の実施形態に含むことができる。理解されるように、本明細書の多様な実施形態に示される要素は、本開示のいくつかの追加の実施形態を提供するように、追加、交換、または削除することができる。加えて、理解されるように、図面の中に提供される要素の比率および相対スケールは、本開示の実施形態を図示することを目的とし、限定の意味で解釈されてはならない。
【０１０４】
第１の要素が別の要素「に接続」または「と結合」されると言及される時、該要素は２つの要素のうちのそれに物理的に付設されることを意図することが理解される。対照的に、要素が「通信可能に結合」されると言及される時、ハードワイヤまたはワイヤレス信号経路によることを含むがこれらに限定されず、要素は相互に通信状態にある。
【０１０５】
要素が別の要素「の上にある」、「に接続される」、または「と結合される」と言及される時、それは、もう一方の要素、または層の直接その上にあることができる、それらに接続できる、またはそれらと結合できること、あるいは介在要素または層が存在する場合があることが理解される。対照的に、要素が別の要素または層「の直接その上に」「に直接接続される」または「と直接結合される」されると言及される場合、介在要素または層は存在しない。本明細書に使用される場合、用語「および／または」は、いくつかの関連列挙項目のうちのいずれかのおよび全ての組み合わせを含む。
【０１０６】
第１、第２、等の用語は、本明細書において、多様な要素、構成要素、領域、層、および区分を記述するために使用される場合があるが、これらの要素、構成要素、領域、配線、層、および区分はこれらの用語によって限定されないことが理解される。これらの用語は、１つの要素、構成要素、領域、配線、層、または区分を別の領域、層、または区分から区別するために使用されるに過ぎない。このため、以下の第１の要素、構成要素、領域、配線、層、または区分は、本開示の教示から逸脱することなく、第２の要素、構成要素、領域、配線、層、または区分と称することができる可能性がある。
【０１０７】
「下方に」、「下に」、「下部の」、「上に」、「上方に」等の空間的に相対的な用語は、本明細書において、空間内の絶対的配向ではなく、図面に示されるように、ある要素または特徴の別の要素または特徴に対する関係を説明するために、説明の容易化のために使用される場合がある。空間的に相対的な用語は、図面に表される配向に加えて、使用中または動作中の装置の異なる配向を包含することを意図することが理解される。例えば、図中の装置が反対向きである場合、他の要素または特徴の「下方に」または「下に」として説明される要素は、他の要素または特徴の「上方に」に配向されるようになる。このため、例の用語「下」は、上および下の配向両方に及ぶことができる。装置はそれ以外の配向（９０度回転または他の配向）であってもよく、本明細書に使用される空間的に相対的な説明はそのように解釈される場合がある。
【０１０８】
本明細書に使用される用語は、特定の実施形態を説明することのみを目的とし、本開示を限定することを意図しない。本明細書に使用される場合、単数形の「１つの（ａ）、（ａｎ）」および「その（ｔｈｅ）」は、文脈がそうでないことを明確に示さない限り、複数形も含むことを意図する。さらに、本明細書において使用される場合、「含む、備える（ｃｏｍｐｒｉｓｅｓ、ｃｏｍｐｒｉｓｉｎｇ）」という用語は、記載の特徴、個数、ステップ、動作、要素、または構成要素の存在を指定するが、いくつかの他の特徴、個数、ステップ、動作、要素、構成要素、またはこれらのグループの存在または追加を除外しない。
【０１０９】
別途定義されない限り、本明細書に使用される全ての用語（技術用語および科学用語を含む）は、本開示が属する技術分野の当業者によって一般的に理解されるものと同じ意味を有する。さらに、一般的に使用される辞書で定義されるような用語は、関連技術および本開示の文脈においてそれらの意味と一貫する意味を有するとして解釈されるべきであり、本明細書においてそのように明示的に定義されない限り、理想化されたまたは過度に正式な意味に解釈されてはならないことが理解される。
【０１１０】
本開示の実施形態は、本明細書において、本開示の理想的な実施形態の模式的説明である、機能ブロック図説を参照して説明される。このため、結果として、例えば、製造技法および許容範囲の図説の形状からの変形が予想される。このため、本開示の実施形態は、本明細書に図説される領域の特定の形状に限定されるものとして解釈されるべきではなく、例えば、製造に起因する、形状における偏差を含むものである。例えば、平坦であると図説または説明された領域は、一般的に、粗い、または非直線的特徴を有する場合がある。さらに、図説される鋭い角度は、丸みを帯びて表される場合がある。このため、図面に図説される領域は事実上模式図であり、それらの形状および相対的大きさ、厚さ等は、領域の正確な形状／大きさ／厚さを図説することを意図するものではなく、本開示の範囲を限定することを意図するものではない。
【０１１１】
本明細書には具体的な実施形態が図示および説明されているが、当業者は、同じ結果を達成するように考案された配設を、示された具体的な実施形態に代えることができることを理解するであろう。本開示は、本開示の１つ以上の実施形態の適応または変形を包含することを意図する。上記の説明は、制限の様式ではなく、図説の様式において行われたものである。上記の実施形態の組み合わせ、および本明細書に具体的に説明されない他の実施形態は、上記の説明を検討することによって、当業者には明らかとなるであろう。本開示の１つ以上の実施形態の範囲は、上記の構造および方法が使用される他の用途を含む。したがって、本開示の１つ以上の実施形態の範囲は、添付の特許請求の範囲に加えて、このような特許請求の範囲が権利を与えられる均等物の完全な範囲を参照して決定されなければならない。
【０１１２】
前述の発明を実施するための形態では、開示を簡素化するために、いくつかの特徴が単一の実施形態にまとめられている。この開示方法は、本開示の開示される実施形態が、各特許請求の範囲に明記されるよりも多くの特徴を有さねばならないという意図を反映するものとして解釈されるべきではない。そうではなく、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示される実施形態の全ての特徴に満たない中に存する。したがって、以下の特許請求の範囲は、本明細書において発明を実施するための形態に組み入れられ、各特許請求の範囲は個別の実施形態として独立する。
【図１】
0005729774.tif 000002
【図２】
0005729774.tif 000003
【図３】
0005729774.tif 000004
【図４】
0005729774.tif 000005
【図５】
0005729774.tif 000006
【図６Ａ】
0005729774.tif 000007
【図６Ｂ】
0005729774.tif 000008
【図７】
0005729774.tif 000009
【図８】
0005729774.tif 000010
【図９Ａ】
0005729774.tif 000011
【図９Ｂ】
0005729774.tif 000012