(57)【要約】  本発明は、超低遅延で高速の不揮発性ストレージアクセスを提供するためのシステム、装置、および方法を提供する。前記方法は、不揮発性ストレージデバイスの複数のチャネルからデータピースを受信するステップと、前記データピースを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立てるステップと、および前記コードワードが組み立てられた場合、ＥＣＣエンジンをトリガーしてコードワードをデコードし、デコードされたデータをホストに返すステップとを含むことができる。各コードワードは、異なるチャネルから読み取られたデータピースを有する。したがって、１つまたは複数のＥＣＣコードワードを含むデータユニットは、不揮発性ストレージデバイスの複数のチャネルに拡張されることができ、複数のチャネルに並行してアクセスすることでアクセス遅延を改善することができる。ＥＣＣコードワードの平均化効果が得られ、ＥＣＣ失敗を低減することができる。本明細書で開示される技術を実現する高速ＮＡＮＤは、超高速のアクセスと応答時間を実現することができ、同時に高スループットを維持することができる。【選択図】図１２
2021500693.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性ストレージデバイスからデータを読み取る方法であって、
不揮発性ストレージデバイスの複数のチャネルからデータピースを受信するステップと、
前記データピースを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立て、各コードワードは、異なるチャネルから読み取られたデータピースを有するステップと、および
前記コードワードが組み立てられた場合、ＥＣＣエンジンをトリガーしてコードワードをデコードし、デコードされたデータを生成し、前記デコードされたデータをホストに返すステップとを含む、前記不揮発性ストレージデバイスからデータを読み取る方法。
【請求項２】
帯域幅が組み立てられた前記複数のチャネルの帯域幅に等しいスーパーチャネルでデータユニットのデータピースを送信するステップをさらに含み、前記データユニットは、それぞれのチャネルを介して送信される複数のデータピースを含むことを特徴とする
請求項１に記載の不揮発性ストレージデバイスからデータを読み取る方法。
【請求項３】
前記不揮発性ストレージデバイスの各チャネルは、複数のダイを含み、ＥＣＣコードワードは、異なるチャネルに位置する複数のダイの間で拡張されることを特徴とする
請求項１に記載の不揮発性ストレージデバイスからデータを読み取る方法。
【請求項４】
前記ＥＣＣコードワードは、インターリーブ方式で前記複数のダイの間で拡張されることを特徴とする
請求項３に記載の不揮発性ストレージデバイスからデータを読み取る方法。
【請求項５】
前記データピースは、１つまたは複数のデータユニットに組み立てられ、各データユニットは、１つまたは複数のＥＣＣコードワードを含み、データユニットの前記データピースは、データユニットでの前記データピースの元の位置に従って組み立てられることを特徴とする
請求項１に記載の不揮発性ストレージデバイスからデータを読み取る方法。
【請求項６】
前記不揮発性ストレージデバイスは、ＮＡＮＤフラッシュストレージ、ＮＯＲフラッシュストレージ、磁気抵抗ランダムアクセスストレージ（ＭＲＡＭ）、抵抗ランダムアクセスストレージ（ＲＲＡＭ）、相変化ストレージ（ＰＣＲＡＭ）およびＮａｎｏ−ＲＡＭのうちの１つであることを特徴とする
請求項１に記載の不揮発性ストレージデバイスからデータを読み取る方法。
【請求項７】
書き込みコマンドから受信したデータを複数のコードワードにエンコードするステップと、
前記複数のコードワードによって形成された複数のデータユニットをバッファに保存するステップと、
前記複数のデータユニット中のそれぞれを複数のデータピースに分割して、各コードワードを複数のピースに分割するステップと、
１つのデータユニットの複数のデータピース中のそれぞれを、前記複数のチャネル中の１つにマッピングし、１つのコードワードのデータピースを複数のチャネルに拡張するステップと、および
前記データユニットの前記複数のデータピース中のそれぞれを、前記複数のチャネル中の１つに送信して、対応するチャネルのダイに保存されるようにするステップとをさらに含むことを特徴とする
請求項１に記載の不揮発性ストレージデバイスからデータを読み取る方法。
【請求項８】
前記複数のチャネル上のデータトラフィックを監視および同期するステップと、および
前記書き込みコマンドから受信したデータを保存するために、前記複数のチャネルで第１のスーパーページを定位するステップとをさらに含むことを特徴とする
請求項７に記載の不揮発性ストレージデバイスからデータを読み取る方法。
【請求項９】
コントローラーであって、
データをコードワードにエンコードし、前記コードワードをデコードするように構成されるエラー訂正コード（ＥＣＣ）エンジンと、
前記コードワードによって構成されるデータユニットを保存するためのバッファと、
書き込み操作のためにデータユニット（ＤＵ）の複数のピースを不揮発性ストレージデバイスの複数のチャネルに配布し、読み取り操作のために前記複数のチャネルから受信した前記複数のピースを組み立て、前記データユニットの前記複数のピースの中のそれぞれは、前記複数のチャネル中の異なるチャネルの別個のダイに保存されるクロスチャネルブリッジと、および
異なるチャネルから読み取られたデータユニットピースのバランスを取り、ＥＣＣコードワードを受信したときに前記ＥＣＣエンジンをトリガーするチャネルシンクロナイザーとを含むことを特徴とする、前記コントローラー。
【請求項１０】
各データユニットは、１つのＥＣＣコードワードを含むことを特徴とする
請求項９に記載のコントローラー。
【請求項１１】
各データユニットは、２つまたはそれ以上のＥＣＣコードワードを含むことを特徴とする
請求項９に記載のコントローラー。
【請求項１２】
前記ＥＣＣエンジンは、マルチコアＥＣＣエンジンであることを特徴とする
請求項９に記載のコントローラー。
【請求項１３】
論理チャネルドメイン操作を物理チャネルドメイン操作にマッピングするように構成される回路をさらに含むことを特徴とする
請求項９に記載のコントローラー。
【請求項１４】
前記バッファは、高スループットを有するストレージバンクであることを特徴とする
請求項９に記載のコントローラー。
【請求項１５】
情報を有する非一時的な機械可読媒体であって、
ハードウェアプロセッサシステムによって読み取られる場合、前記情報は、前記ハードウェアプロセッサシステムを、
不揮発性ストレージデバイスの複数のチャネルからデータピースを受信することと、
前記データピースを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立て、各コードワードは、異なるチャネルから読み取られたデータピースを有することと、および
前記コードワードが組み立てられた場合、ＥＣＣエンジンをトリガーしてコードワードをデコードし、デコードされたデータを生成し、前記デコードされたデータをホストに返すことを実行させることを特徴とする、前記情報を有する非一時的な機械可読媒体。
【請求項１６】
前記ハードウェアプロセッサシステムによって読み取られる場合、前記情報はさらに、前記ハードウェアプロセッサシステムを帯域幅が組み立てられた前記複数のチャネルの帯域幅に等しいスーパーチャネルでデータユニットのデータピースを送信することを実行させ、前記データユニットは、それぞれのチャネルを介して送信される複数のデータピースを含むことを特徴とする
請求項１５に記載の非一時的な機械可読媒体。
【請求項１７】
前記不揮発性ストレージデバイスの各チャネルは、複数のダイを含み、ＥＣＣコードワードは、異なるチャネルに位置する複数のダイの間に分布されることを特徴とする
請求項１５に記載の非一時的な機械可読媒体。
【請求項１８】
前記データピースは、１つまたは複数のデータユニットに組み立てられ、各データユニットは、１つまたは複数のＥＣＣコードワードを含み、データユニットの前記データピースは、データユニットでの前記データピースの元の位置に従って組み立てられることを特徴とする
請求項１５に記載の非一時的な機械可読媒体。
【請求項１９】
前記ハードウェアプロセッサシステムによって読み取られる場合、前記情報はさらに、前記ハードウェアプロセッサシステムを、
書き込みコマンドから受信したデータを複数のコードワードにエンコードすることと、
複数のデータユニットをバッファに保存することと、
前記複数のデータユニット中のそれぞれを複数のデータピースに分割することと、
コードワードの前記複数のデータピース中のそれぞれを複数のチャネルにマッピングすることと、および
前記データユニットの前記複数のデータピースのそれぞれを前記複数のチャネル中の１つに転送して、対応するチャネルのダイに保存されるようにすることとを実行させることを特徴とする
請求項１５に記載の非一時的な機械可読媒体。
【請求項２０】
前記ハードウェアプロセッサシステムによって読み取られる場合、前記情報はさらに、前記ハードウェアプロセッサシステムを、
前記複数のチャネル上のデータトラフィックを監視および同期することと、および
前記書き込みコマンドから受信したデータを保存するために、前記複数のチャネルで第１のスーパーページを定位することとを実行させることを特徴とする
請求項１９に記載の非一時的な機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連アプリケーション分野
本出願は、２０１７年１０月２５日に提出された「超低遅延を有する高速ＮＡＮＤアクセス」と題する米国仮出願第６２／５７７００８号の優先権を主張し、その内容を参照によりその実体に組み込まれる。
【０００２】
本開示は不揮発性ストレージに関し、特に超低遅延を有する高速ＮＡＮＤアクセスに関する。
【背景技術】
【０００３】
従来、コンピューティングシステムは、フロッピー（登録商標）ディスク、ハードドライブ、磁気テープ、光ディスクなどの様々な不揮発性ストレージデバイスを使用してデータと命令を維持および保存してきた。最近、不揮発性ＮＡＮＤストレージデバイスは、ストレージカード、ＵＳＢフラッシュドライブ、およびソリッドステートドライブ（ＳＳＤ）で広く使用されている。ＮＡＮＤデバイスは、従来の不揮発性ストレージデバイスと比較して、従来のチャネルレベルの並列処理、ダイレベルの並列処理、またはプレーンレベルの並列処理により高いスループットを提供できるが、アクセス遅延は依然として存在し、改善できる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示の主題は、遅延を短縮することにより不揮発性ストレージデバイスへの高速読み取り／書き込みアクセスを提供するシステム、方法、および装置に関する。本発明の様々な態様によれば、提供される技術は、データユニットを不揮発性ストレージデバイスの複数のチャネルに拡散し、複数のチャネルを介して複数のデータユニットに並列にアクセスすることにより遅延を改善することができる。さらに、提供される技術は、ＥＣＣコードワードを複数の不揮発性ストレージダイに拡散して、平均化効果を実現し、ＥＣＣ失敗を低減することができる。
【課題を解決するための手段】
【０００５】
一例示的な実施例において、不揮発性ストレージデバイスからデータを読み取る方法を提供する。前記方法は、不揮発性ストレージデバイスの複数のチャネルからデータピースを受信するステップと、前記データピースを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立てるステップと、および前記コードワードが組み立てられた場合、ＥＣＣエンジンをトリガーしてコードワードをデコードし、デコードされたデータをホストに返すステップとを含むことができる。各コードワードは、異なるチャネルから読み取られたデータピースを有することができる。
【０００６】
別の例示的な実施例において、データを不揮発性ストレージデバイスにプログラミングして書き込む方法を提供する。前記方法は、書き込みコマンドから受信したデータを複数のコードワードにエンコードするステップと、前記複数のコードワードによって形成された複数のデータユニットをバッファに保存するステップと、前記複数のデータユニット中のそれぞれを複数のデータピースに分割して、各コードワードを複数のピースに分割するステップと、１つのデータユニットの複数のデータピース中のそれぞれを、前記複数のチャネルの１つにマッピングし、１つのコードワードのデータピースを複数のチャネルに拡張するステップと、および前記データユニットの前記複数のデータピース中のそれぞれを前記複数のチャネル中の１つに送信して、対応するチャネルのダイに保存されるようにするステップと、を含むことができる。
【０００７】
さらに別の例示的な実施例において、データをコードワードにエンコードし、前記コードワードをデコードするように構成されるエラー訂正コード（ＥＣＣ）エンジンと、前記コードワードによって構成されるデータユニットを保存するためのバッファと、および書き込み操作のためにデータユニット（ＤＵ）の複数のピースを不揮発性ストレージデバイスの複数のチャネルに配布し、読み取り操作のために前記複数のチャネルから受信した前記複数のピースを組み立てるクロスチャネルブリッジとを含む。前記データユニットの前記複数のピース中のそれぞれは、前記複数のチャネル中の異なるチャネルの別個のダイに保存される。前記コントローラーは、異なるチャネルから読み取られたデータユニットピースのバランスを取り、ＥＣＣコードワードを受信したときに前記ＥＣＣエンジンをトリガーするチャネルシンクロナイザーとをさらに含む。
【０００８】
さらに別の例示的な実施例において、情報を有する非一時的な機械可読媒体を提供し、ここで、ハードウェアプロセッサシステムによって読み取られる場合、前記情報は、前記ハードウェアプロセッサシステムを不揮発性ストレージデバイスの複数のチャネルからデータピースを受信することと、前記データピースを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立て、各コードワードは、異なるチャネルから読み取られたデータピースを有することと、および前記コードワードが組み立てられた場合、ＥＣＣエンジンをトリガーしてコードワードをデコードし、デコードされたデータを生成し、前記デコードされたデータをホストに返すことを実行させる。
【図面の簡単な説明】
【０００９】
【図１】本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスを概略的に示す。
【図２】本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスに保存された複数のデータユニットを概略的に示す。
【図３Ａ】本開示に係る一実施例の異なるチャネルの複数のダイに保存された複数のデータユニットを概略的に示す。
【図３Ｂ】本開示に係る別の実施例の異なるチャネルの複数のダイに保存された複数のデータユニットを概略的に示す。
【図４】本開示に係る一実施例のＮＡＮＤストレージシステムを概略的に示す。
【図５】本開示に係る一実施例のＮＡＮＤストレージシステムの遅延を概略的に示す。
【図６】本開示に係る別の実施例のマルチチャネルＮＡＮＤストレージデバイスを概略的に示す。
【図７】本開示に係る一実施例のストレージコントローラーを概略的に示す。
【図８】本開示に係る一実施例の論理チャネルドメインと物理チャネルドメインとの間のマッピングを実現するストレージコントローラーを概略的に示す。
【図９】本開示に係る別の実施例の論理チャネルドメインと物理チャネルドメインとの間のマッピングを実現するストレージコントローラーを概略的に示す。
【図１０】本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスからのランダム読み出しを概略的に示す。
【図１１】本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスに対してプログラミング書き込むためのプロセスのフローチャートである。
【図１２】本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスからデータを読み取るためのプロセスのフローチャートである。
【発明を実施するための形態】
【００１０】
ここで、本出願による具体的な実施例を、添付の図面を参照して詳細に説明する。様々な図における同様の要素は、一貫性のために同様の参照番号で示されている。
【００１１】
本開示は、超低遅延で不揮発性ストレージデバイスに高速にアクセスするためのシステムおよび方法を提供する。本明細書で使用する場合、不揮発性ストレージデバイスは、電源を切った後も保存された情報を維持でき、且つ保存された情報は電源を切って入れ直した（電源オフと再起動）後にも読み取れるコンピュータストレージデバイスである。不揮発性ストレージデバイスは、フロッピーディスク、ハードドライブ、磁気テープ、光ディスク、ＮＡＮＤフラッシュストレージ、ＮＯＲフラッシュストレージ、磁気抵抗ランダムアクセスストレージ（ＭＲＡＭ）、抵抗ランダムアクセスストレージ（ＲＲＡＭ（登録商標））、相変化ストレージ（ＰＣＲＡＭ）、Ｎａｎｏ−ＲＡＭなどを含むことができる。本明細書の説明では、ＮＡＮＤフラッシュストレージを例として高速アクセス技術を紹介する。しかしながら、本開示による様々な実施例は、他のタイプの不揮発性ストレージデバイスを用いて当該技術を実現することができる。
【００１２】
本開示の一実施例は、不揮発性ストレージデバイスのチャネルの数に依存する要因によって不揮発性ストレージデバイスのために超低アクセス時間を提供し、向上された応答時間を提供することができる。例えば、Ｍ−チャネル不揮発性ストレージデバイスの場合、応答時間はＭ倍向上されることができる。バッファ（例えば、高帯域幅の有するストレージバンク）を使用して、ストレージ効率を向上させることができ、さらに全体的なハードウェアコストを下げることができる。クロスチャネルブリッジは、不揮発性ストレージデバイスのバッファとダイとの間に設置されることができる。クロスチャネルブリッジは、データユニット（ＤＵ）のピース（データユニットピースまたはデータピースと呼ばれることもある）を書き込み操作のためのチャネルに配布することができ、読み取り操作のためにチャネルから受信したピースを組み立てることができる。ＤＵ中のそれぞれのピースは、それのＤＵ中の元の位置に従って組み立てられる。例えば、ＤＵの第１のピースを第１のチャネルに書き込んだ場合、第１のチャネルから読み取られた第１のピースデータをＤＵの第１のピースとして組み立てることができる。さらに、データシンクロナイザー（チャネルシンクロナイザーとも呼ばれる）は、異なるチャネルから読み取れたデータユニットピースのバランスを取って、１つのＥＣＣコードワードを受信するたびにエラー訂正コード（ＥＣＣ）エンジンをトリガーすることができ、別のＥＣＣコードワードのデータピースを引き続き受信することができる。一実施例において、ＥＣＣエンジンは、各データユニットの処理時間を短縮するマルチコアＥＣＣエンジンであることができる。
【００１３】
本開示による実施例は、ＥＣＣコードワードを複数のＮＡＮＤダイに拡張して平均化効果と実現し、したがってＥＣＣ失敗を低減することができる。本明細書で開示される技術を実現する高速ＮＡＮＤは、超高速のアクセスおよび応答時間を実現することができ、同時に高スループットを維持することができる。
【００１４】
図１は、一実施例に係るマルチチャネルＮＡＮＤストレージデバイス１００を概略的に示する。ＮＡＮＤストレージデバイス１００は、複数のチャネルＣＨ０、ＣＨ１、ＣＨ２およびＣＨ３を含むことができる。各チャネルは、複数のダイ（ＤＩＥ）を含むことができる。例えば、チャネルＣＨ０は、１０２.１、１０２.２、１０２.３、１０３.４から１０２.ＮまでのＮ個のダイを含むことができ、チャネルＣＨ１は、１０４.１、１０４.２、１０４.３、１０４.４から１０４.ＮまでのＮ個のダイを含むことができ、チャネルＣＨ２は、１０６.１、１０６.２、１０６.３、１０６.４から１０６.ＮまでのＮ個のダイを含むことができ、チャネルＣＨ３は、１０８.１、１０８.２、１０８.３、１０８.４から１０８.ＮまでのＮ個のダイを含むことができる。数字Ｎは、一チャネル中のダイの総数を表すことができる。一実施例において、数字Ｎは、２、４、６、８またはそれ以上の数字であることができ、必ずしも偶数である必要はない。４チャネルＮＡＮＤデバイス１００は、より一般的なＭチャネル実施例の単なる例示であることに留意されたい。ここで、Ｍは、２、４、６、８、１０、１２などであることができる。いくつかの実施例において、Ｍは、３、５、７、９などの偶数でないこともできる。さらに、図１は、各チャネルの帯域幅が８ビットであることを示している。これは一例であり、本開示の実施例は、Ｌビットの帯域幅を有することができ、ここでＬは２、４、８、１６または他の適切な数字であることができる。
【００１５】
図２は、本開示に係る一実施例の複数のデータユニットを有するストレージシステム２００を概略的に示し、前記複数のデータユニットは、マルチチャネルＮＡＮＤストレージデバイスに保存される。ストレージシステム２００は、図１に示されたＮＡＮＤストレージデバイス１００などのＮＡＮＤストレージデバイスを含むことができる。ＮＡＮＤストレージデバイスは、帯域幅がＭ×Ｌビットであるスーパーチャネル（スーパーバスとも呼ばれる）を介してストレージシステムコントローラー（図示せず）にカップリングされることができ、ここで、Ｍは、ＮＡＮＤストレージデバイスのチャネルの数であることができ、Ｌは、各チャネルの帯域幅であることができる。プログラム操作（書き込み操作とも呼ばれる）中に、スーパーチャネル（例えば、図２の例に示された３２ビット）を介して複数のデータユニット２０２.１、２０４.１、２０６.１および２０８.１を受信することができる。データユニット２０２.１、２０４.１、２０６.１および２０８.１中のそれぞれは分割されて、Ｍ個のチャネル（例えば、４つの８ビットチャネル）に拡張されることができ、したがって、各データユニットは、Ｍ個のダイをわたって異なるチャネルに保存されることができる。例えば、データユニット２０２.１は、データユニット２０２.２としてＮＡＮＤストレージデバイスに保存されることができ、ここで第１のピースは、チャネルＣＨ０のダイ１０２.ｉに保存され、第２のピースは、チャネルＣＨ１のダイ１０４.ｉに保存され、第３のピースは、チャネルＣＨ２のダイ１０６.ｉに保存され、第４のピースは、チャネルＣＨ３のダイ１０８.ｉに保存される。小文字の「ｉ」は、チャネルのＮ個のダイ中の１つを表すことができる。類似的に、データユニット２０４.１は、データユニット２０４.２として保存されることができ、４つの異なるチャネルのダイ１０２.ｉ、１０４.ｉ、１０６.ｉおよび１０８.ｉにおいて４つのピースに拡張され、データユニット２０６.１は、データユニット２０６.２として保存されることができ、４つの異なるチャネルのダイ１０２.ｉ、１０４.ｉ、１０６.ｉおよび１０８.ｉにおいて４つのピースに拡張され、データユニット２０８.１は、データユニット２０８.２として保存されることができ、４つの異なるチャネルのダイ１０２.ｉ、１０４.ｉ、１０６.ｉおよび１０８.ｉにおいて４つのピースに拡張される。
【００１６】
図示されていないが、ＮＡＮＤストレージデバイスの各ダイは、１つまたは複数のプレーンに配列された複数のページを含むことができる。いくつかの実施例において、ＮＡＮＤストレージデバイスののプログラミングはページベースであってもよい。すなわち、１ページずつ物理ストレージ（例えば、Ｍ個のチャネルのダイ）にデータプログラムにより書き込み、そのうち１ページはデータプログラムにより書き込む最も小さいユニットである。一実施例において、操作を一時停止モードを提供して、コントローラーでデータがバッファされるようにして、ＮＡＮＤストレージデバイスのコントローラーは、Ｍページのデータ（例えば、Ｍ個のチャネルのＭ個の異なるダイ中のＭ個の別個ページを満たすのに十分なデータ）が一回のプログラム書き込み操作でＮＡＮＤストレージデバイスにプログラミングされるようにし、異なるチャネルの中１つのダイを各ページのデータにプログラミングする。別の実施例において、ＮＡＮＤストレージのコントローラーは、一時停止モード（例えば、無効または実装されていない）を提供しなくてもよく、データ充填の方法を使用して、データがＭページを充填しなくてもデータプログラムをＮＡＮＤストレージデバイス（例えば、ページの未充填のストレージユニットに充填を使用する）に書き込むことができるようにする。
【００１７】
いくつかの実施例において、ＮＡＮＤストレージデバイスに保存されたデータは、エラー訂正コード（ＥＣＣ）エンコードコードワードであることができる。一実施例において、１つのコードワードが複数のチャネルに分割される限り、データユニット（例えば、２０２.１、２０４.１、２０６.１および２０８.１）は、１つまたは複数のコードワードであることができる。例えば、一実施例において、データユニット（例えば、２０２.１、２０４.１、２０６.１および２０８.１）は、１つのＥＣＣコードワードであることができ、このようなＥＣＣコードワードは分割されて、４つの異なるチャネルの４つの異なるダイに保存されることができる。別の実施例において、データユニット（例えば、２０２.１、２０４.１、２０６.１および２０８.１）は、２つのＥＣＣコードワードを含むことができ、各ＥＣＣコードワードは分割されて、２つの異なるチャネル中の２つの異なるダイに保存されることができる。様々な実施例において、複数のＮＡＮＤダイを介してＥＣＣコードワードを拡張して、平均化効果を実現することができ、したがってＥＣＣ失敗を低減することができる。
【００１８】
図３Ａは、本開示に係る一実施例の異なるチャネルの複数のダイに保存された複数のデータユニットを概略的に示した。データユニットは、Ｍ個のピースに分割されることができ、ここで第１のピースは、データユニットの１番目の１／Ｍ部分を含み、第２のピースは、データユニットの２番目の１／Ｍ部分を含み、これにより類推することができる。図３Ａに示したように、４つのチャネル３０２、３０４、３０６および３０８は、それぞれデータユニット３１０、３１２、３１４および３１６の４分の１を保存することができる（例えば、データユニットサイズ（ＤＵ＿ＳＺ）をＭで除算＝４）。データユニットの各４分の１は、１つのデータユニットのＤＵ＿ＳＺ／Ｍ個の連続ビットを含むことができる。一実施例において、１つのデータユニットをＭ個のチャネルに分割する手段は、「タイプ０」ストレージと呼ばれることができる。
【００１９】
図３Ｂは、本開示に係る別の実施例の異なるチャネルの複数のダイに保存された複数のデータユニットを概略的に示す。この実施例において、データユニットは、Ｍ個のインターリーブされたピースに分割されることができる。例えば、１つのピースは、１番目のビット、（Ｍ＋１）番目のビット、（２Ｍ＋１）番目のビット、これにより類推するビットを含むことができ、別のピースは、２番目のビット、（Ｍ＋２）番目のビット、（２Ｍ＋２）番目のビット、これにより類推するビットを含むことができ、最後のピースは、Ｍ番目のビット、２Ｍ番目のビット、これにより類推することができるビットを含むことができる。図３Ｂに示したように、４つのチャネル３１８、３２０、３２２、３２４は、それぞれ４分の１のデータユニット３２６、３２８、３２０および３２２を保存することができる。図３Ａと異なるところは、データユニット３２６の４分の１は、１つのデータユニットのＤＵ＿ＳＺ／Ｍ個のインターリーブビットを含むことができる。一実施例において、１つのデータユニットをＭ個のチャネルに分割する手段は、「タイプ１」ストレージと呼ばれることができる。
【００２０】
図４は、本開示に係る一実施例のＮＡＮＤストレージシステム４００を概略的に示す。ストレージシステム４００は、ストレージコントローラー４０４およびＮＡＮＤストレージデバイス４０６を含むことができる。ストレージコントローラー４０４は、インターフェース４１６を介してホスト４０２にカップリングされることができる。インターフェース４１６は、シリアルＡＴアタッチメント（ＳＡＴＡ）、パラレルＡＴＡ（ＰＡＴＡ）、ＰＣＩエクスプレス（ＰＣＩ−Ｅ）、セキュアデジタル（ＳＤ）などを含むが、これらに限定されない現在使用されている、またはまだ開発中の多くのインターフェースのうちの１つであってもよい。例えば、図４に示された実施例において、ＮＡＮＤストレージデバイス４０６は、複数のタイプ０手段でダイをわたって異なるチャネルに保存されるデータユニット４２０.１、４２０.２、４２０.３および４２０.４を有する４チャネルＮＡＮＤデバイスであってもよい。様々な実施例において、ストレージシステム４００は、ホスト４０２に不揮発性ストレージを提供するために、メモリカード、ＵＳＢフラッシュドライブ、およびソリッドステートドライブに実装されてもよい。
【００２１】
ストレージコントローラー４０４はさらに、チャネルシンクロナイザーおよびクロスチャネルブリッジ４１８を介してＮＡＮＤストレージデバイス４０６にカップリングされることができ、クロスチャネルブリッジ４１８は、クロスチャネルブリッジおよびチャネルシンクロナイザーを含むことができる。クロスチャネルブリッジは、書き込み操作のためにＤＵのピースをチャネルに配布することができ、読み取り操作のためにチャネルから読み取れたピースを組み立てることができる。一実施例において、ＤＵ中の元の位置に従ってチャネルから読み取れたピースを組み立てることができる。例えば、第１のピースを第１のチャネルに書き込む場合、第１のチャネルから読み取れた第１のピースを第１のピースとして組み立てられる。
【００２２】
チャネルシンクロナイザーは、異なるチャネルから読み取れたデータユニットピースのバランスを取って、１つのＥＣＣコードワードを受信するたびにＥＣＣエンジン４０８をトリガーすることができ、別のＥＣＣコードワードのデータピースを引き続き受信することができる。ＤＵが複数のＥＣＣコードワードを含みえる実施例において、いくつかのチャネルは、他のチャネルよりも早くデータユニットを受信することができる。例えば、１つのデータユニットは、２つのＥＣＣコードワードを含むことができ、ここで各ＥＣＣコードワードは、２つのチャネルに拡張される。読み取り操作中に、第１のＥＣＣコードワードのすべてのピースは、第２のＥＣＣコードワードの少なくとも１つのピースより受信を完成することができ、第１のＥＣＣコードワードをデコードするために、ＥＣＣエンジン４０８をトリガーすることができ、第２のＥＣＣコードワードの少なくとも１つのピースはまだ受信中である。例えば、チャネルＣＨ０およびＣＨ１は、チャネルＣＨ２およびＣＨ３よりも早くデータユニットを受信することができる。データユニットは、チャネルＣＨ０およびＣＨ１に保存された第１のＥＣＣコードワードと、およびチャネルＣＨ２およびＣＨ３に保存された第２のＥＣＣコードワードを含むことができる。したがって、ＥＣＣエンジン４０８は、第１のＥＣＣコードワードをデコードし始めることができ、同時に第２のＥＣＣコードワードのすべてのピースを完全に受信できていない。
【００２３】
いくつかの実施例において、チャネルシンクロナイザーはさらに、Ｍ個のチャネル上のデータトラフィックを監視および同期するように設計されることができ、ＭｘＱ個のデータページを保存するためにＭ個のチャネルをわたる第１のセットの整列ページを見つけることができ、ここで、Ｑは、ホストからの未解決の論理コマンドの数であることができる。一実施例において、Ｑは、ホストからのページ読み取りまたは書き込みコマンドの数に対応することができる。このシンクロナイザーを使用する利点は、膨大なストレージバンク使用率を削減し、いずれか１つの不完全なＥＣＣコードワードＮＡＮＤページバッファに保存することができる。
【００２４】
インターフェース４１６およびチャネルシンクロナイザーとクロスチャネルブリッジ４１８以外に、コントローラー４０４は、ＥＣＣエンジン４０８およびストレージバッファ４１０をさらに含むことができる。ＥＣＣエンジン４０８は、ホスト４０２からのデータをＮＡＮＤストレージデバイス４０６に保存されたＥＣＣコードワードにエンコードし、ＮＡＮＤストレージデバイス４０６から読み取ったＥＣＣコードワードをホスト４０２のデータにデコードするように構成されることができる。一実施例において、ＥＣＣエンジン４０８は、マルチコアＥＣＣエンジンであることができ、Ｍ個のチャネルデータトラフィックを処理するために高帯域幅を有することができ、潜在的な出力データを順不同で処理するためにタスクキュー（ｔａｓｋ  ｑｕｅｕｅ）に基づいて制御されることができる。
【００２５】
いくつかの実施例において、ストレージバッファ４１０は、高帯域幅を有するストレージバンクであることができる。一実施例において、物理チャネルがＰＲＯＧまたはＲＥＡＤデータトラフィックに占有される可能性があるという事実のために、ストレージバッファ４１０は、書き込み（「ＰＲＯＧ」）経路およびＲＥＡＤ経路と共有することができる。プログラム操作中で、これらのコードワードを４つのチャネルに送信し、４つのチャネルでデータユニット４２０.１、４２０.２、４２０.３および４２０.４に保存される前に、ストレージバッファ４１０は、ＥＣＣコードワード４１２.１、４１２.２、４１２.３および４１２.４などのエンコードされたデータを一時的に保存することができる。読み取り操作中で、ストレージバッファ４１０は、チャネルから読み取り、ＥＣＣコードワードに組み立てられるデータユニットのピースを一時的に保存することができる。
【００２６】
図５は、本開示に係る一実施例のＮＡＮＤストレージシステムが読み取り操作を実行する際の遅延を概略的に示す。ＣＭＤ  ５０２.１ないしＣＭＤ  ５０２.ＭなどのＭ個のチャネルＣＨ０ないしＣＨＭ−１でそれぞれ読み取りコマンドを転送することができる。各チャネルは、データを転送する準備が整うまでにｔＲの時間がかかることができる。データユニットをコントローラーに転送するために期間ｔ＿ＸＦＥＲを必要とする場合がある従来のシステムとは対照的に、複数のチャネルＣＨ  ０ないしＣＨ  Ｍ−１の各チャネルは、時間ｔ＿ＸＦＥＲ／Ｍを必要としてＲＤ＿ＤＡＴＡ＿ＸＦＥＲ  ５０４.１ないしＲＤ＿ＤＡＴＡ＿ＸＦＥＲ５０４.Ｍを操作して対応するデータユニットをコントローラーに転送することができる。一旦データユニットのＭ個のピースを受信すると、コントローラーは、ＥＣＣエンジンを呼び出すことができ、期間ｔ＿ＥＣＣ後、ＥＣＣエンジンは、ＥＣＣ出力５０６を生成することができる。したがって、遅延ｔ＿Ｌａｔｅｎｃｙ＝ｔＲ＋ｔ＿ＸＦＥＲ／Ｍ＋ｔ＿ＥＣＣ後に、最終データ出力５０８を生成することができる。対照的に、従来のＮＡＮＤストレージシステムは、ｔＲ  ＋  ｔ＿ＸＦＥＲ  ＋  ｔ＿ＥＣＣの遅延の後に出力を生成することができる。
【００２７】
したがって、実施例は、スーパーチャネル上で各データユニット（ＤＵ）を転送することにより、ＮＡＮＤストレージシステムの応答時間を改善することができ、このスーパーチャネルは、チャネル幅のＭ倍であることができる。例えば、８ビットのチャネルビット幅と４つのチャネルの場合、スーパーチャネルの幅は、４×８＝３２ビットであることができる。したがって、転送時間を著しく減少させることができ（例えば、ｔ＿ＸＦＥＲ／Ｍ、ここでＭはＮＡＮＤチャネルの数である）、これは応答時間（例えば、ＲＥＡＤ応答時間、特にｔＲが非常に短い場合）を改善することができる。一実施例によるＮＡＮＤストレージシステムの全体的な帯域幅は、同じサイズのＮＡＮＤストレージデバイスを有する従来のＮＡＮＤストレージシステムと同じであり、追加のコスト（ピン数やバス幅など）はない。
【００２８】
図６は、本開示に係る別の実施例のマルチチャネルＮＡＮＤストレージデバイス６００を概略的に示す。マルチチャネルＮＡＮＤストレージデバイス６００は、ＮＡＮＤストレージデバイス１００の実施例であることができ、示される例ではＭが４であるＭ個のチャネルを含むことができる。各チャネルはＮ個のダイを含むことができ、Ｎは１より大きい整数である。例示的なダイ６０２.ｉは、チャネルＣＨ０のｉ番目のダイを表すことができ、例示的なダイ６０４.ｉは、チャネルＣＨ１のｉ番目のダイを表すことができ、例示的なダイ６０６.ｉは、チャネルＣＨ２のｉ番目のダイを表すことができ、例示的なダイ６０８.ｉは、チャネルＣＨ３のｉ番目のダイを表すことができる。各ダイは、複数のページを含むことができる。異なるチャネルの異なるダイの同じ位置に位置されるページは、まとめて整列ページのセットまたはスーパーページと呼ばれることができる。例えば、ダイ６０２.ｉのページ６１０.１、ダイ６０４.ｉのページ６１０.２、ダイ６０６.ｉのページ６１０.３およびダイ６０８.ｉのページ６１０.４は、異なるチャネルの異なるダイの同じ位置に位置されることができる。いくつかの実施例において、ページ６１０.１ないし６１０.４（または、より一般的に、ＭチャネルＮＡＮＤストレージデバイスに対しては６１０.１ないし６１０.Ｍ）は、１つのスーパーページを形成することができる。スーパーページのサイズは、物理ページのサイズかけるＭ（例えば、ｐｈｙｓｉｃａｌ＿ｐａｇｅ＿ｓｉｚｅ  ｘ  Ｍ）である。１つのスーパーページは、１つの最も小さいユニットとしてプログラムされることができる。例えば、チャネルシンクロナイザーおよびクロスチャネルブリッジ４１８中のチャネルシンクロナイザーは、Ｍ個のチャネルからのデータトラフィックを監視および同期することができ、ＭｘＱのＭ個のチャネルで第１の利用可能なスーパーページを見つけ、ここで、Ｑは、ホストからの未完成の論理コマンドの数である。
【００２９】
図７は、本開示に係る一実施例のストレージコントローラー７００を概略的に示す。コントローラー７００は、コントローラー４０４の実施例であることができる。コントローラーシステム７００は、ホストインターフェース７０２、マルチコアＥＣＣエンジン７０４、バッファ７０６およびチャネルシンクロナイザーとブリッジ７０８を含むことができる。ホストインターフェース７０２は、インターフェース４１６の例であることができる。マルチコアＥＣＣエンジンは、ＥＣＣ  ４０８の例であることができる。バッファ７０６は、ストレージバッファ４１０の例であることができ、チャネルシンクロナイザーおよびブリッジ７０８は、チャネルシンクロナイザーおよびクロスチャネルブリッジ４１８の例であることができる。コントローラー７００は、ＮＡＮＤストレージデバイス７１０にカップリングされることができ、複数のチャネルＣＨ０、ＣＨ１、ＣＨ２およびＣＨ３を含むことができる。様々な実施例において、ストレージコントローラー７００およびＮＡＮＤストレージデバイス７１０は、メモリカード、ＵＳＢフラッシュドライブ、ソリッドステートドライブ（ＳＳＤ）などの不揮発性ストレージにパッケージ化されることができる。
【００３０】
図８は、本開示に係る一実施例の論理チャネルドメイン８０２と物理チャネルドメイン８０６との間のマッピングを実現するストレージコントローラー８００を概略的に示す。ストレージコントローラー８００は、コントローラー４０４または７００の実施例であることができる。論理チャネルドメイン８０２は、ホストコマンドプロセッサ８０４を含むことができる。物理チャネルドメイン８０６は、ＮＡＮＤデバイスコントローラーユニット８０８を含むことができる。論理から物理へのコマンドマッピングモジュール８１０は、論理チャネルドメイン８０２と物理チャネルドメイン８０６との間に位置されて、論理から物理への変換を実行することができる。一実施例において、ホストは、コントローラー８００を有する例示的なＭチャネルＮＡＮＤストレージシステムを仮想シングルチャネルデバイスとして扱うことができ、そのスーパーページサイズ＝ｐｈｙｓｉｃａｌ＿ｐａｇｅ＿ｓｉｚｅ×Ｍ。ホストは、ホスト読み取りまたは書き込みコマンドをコントローラー８００に発行することができる。論理チャネルドメイン中のホストコマンドプロセッサ８０４は、ホストコマンドを処理して論理チャネルドメインに対応するパラメータを生成し、論理ページＲＥＡＤまたはＷＲＩＴＥコマンドを発行する役割を担うことができる。例えば、論理チャネルドメインのパラメータは、デバイス識別子（ＤＥＶ＿ＩＤ）、行アドレス（ＲＯＷ＿ＡＤＤＲ）、列アドレス（ＣＯＬ＿ＡＤＤＲ）、転送カウント（ＸＦＣＮＴ）などを含むことができる。
【００３１】
ホストＲＥＡＤコマンドを実行するために、論理ページＲＥＡＤコマンドを発行すると、論理から物理へのコマンドマッピングモジュール８１０は、ＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ、ＸＦＣＮＴなどの論理情報を解析することができ、物理情報を介して単一の論理ＲＥＡＤ操作をＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ／Ｍ、ＸＦＣＮＴ／ＭなどのＭ個の物理チャネルでＭ個のサブ読み取り操作に分割することができる。Ｍ個のサブ読み取り操作は、物理チャネルドメイン８０６中のＮＡＮＤデバイスコントローラーユニット８０８によって実行されることができる。コントローラー８００は、各物理チャネルからのデータ可用性をチェックすることができ、論理チャネル情報を使用してデータ転送を実行するようにホストに要求することができる。一旦要求が確認されると、コントローラー８００は、Ｍ−チャネルデータ並列転送でデータ転送状態に入ることができる。一実施例において、同期ブリッジ（例えば、チャネルシンクロナイザーとクロスチャネルブリッジ４１８または７０８）およびストレージバンク（例えば、ストレージバッファ４１０または７０６）は、Ｍ個の部分データピースを１つの完全なＤＵに整列および組み立てることができる。一旦ＤＵが完全に受信されると、高性能ＥＣＣエンジンをアクティブしてＥＣＣデコードを実行できる。
【００３２】
一例において、各物理ページのサイズが１６  ＫＢ、Ｍ  ＝  ４であると仮定すると、スーパーページは６４  ＫＢで、各スーパーページは１６個のＤＵを含むことができる（４ＫＢ  ＤＵ＿ＳＺと仮定）。論理チャネルドメインにおいて、２５６  ＫＢの連続したデータを読み取るために、ホストはそれぞれ２つのダイ（例えば、ＤＩＥ０およびＤＩＥ１）を読み取った２つのスーパーページマルチプレーン（２つのプレーン）を発行して、２つのダイから連続したデータユニットを読み取ることができる。各スーパーページの読み取りは、１２８  ＫＢ（６４  ＫＢ  ＊  ２）のシーケンシャルデータにアクセスすることができる。物理チャネルドメインにおいて、４つのＮＡＮＤマルチプレーン読み取りコマンドを同時に発行して４つのチャネルで各ダイ（ＤＩＥ）にアクセスし、合計８つのＮＡＮＤ読み取りコマンドを発行して読み取り操作を完了することができる。
【００３３】
ホストＷＲＩＴＥコマンドを実行するために、論理ページプログラムデータがホストＳＲＡＭまたは他のストレージユニットで準備ができている場合、論理から物理へのコマンドマッピングモジュール８１０は、ＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ、ＸＦＣＮＴなどの論理情報を解析して、物理情報で単一の論理プログラム操作をＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ／Ｍ、ＸＦＣＮＴ／ＭなどのＭ個のサブプログラム操作に分割することができる。様々な実施例において、コントローラー８００は、１つのスーパーページをＭ個のチャネルに配信する任意の形式を選択することができる。一実施例において、プログラムデータが１つのスーパーページを満たすのに十分でない場合、プログラムデータイン一時停止を有効にして、他のダイでの操作を可能にすることができる。別の実施例において、プログラム書き込みデータが１つのスーパーページを満たすのに十分でない場合、パディングを有効にしてスーパーページを満たすことができる。一時停止またはパディングを使用するかどうかに関係なく、すべての構成物理ページが各物理チャネルで正常にプログラムされたら、スーパーページプログラムは完成されることができる。いくつかの実施例において、各物理チャネル上でプログラム操作が完成されるのを待っている間に、対応するチャネルがアイドルであるときに他の操作を発行することが許可され得る。
【００３４】
図９は、本開示に係る別の実施例の論理チャネルドメイン９０２と物理チャネルドメイン９０６との間のマッピングを実現するストレージコントローラー９００を概略的に示す。ストレージコントローラー９００は、コントローラー４０４または７００の別の実施例、およびストレージコントローラー８００の代替実施例であることができる。論理チャネルドメイン９０２は、ホストコマンドプロセッサ９０４を含むことができる。物理チャネルドメイン９０６は、ＮＡＮＤデバイスコントローラーユニット９０８を含むことができる。論理から物理へのコマンドマッピングモジュール９１０は、論理から物理への変換を実行するために論理チャネルドメイン９０２と物理チャネルドメイン９０６との間に位置されることができる。一実施例において、ホストは、コントローラー９００を有する例示的なＭチャネルＮＡＮＤストレージシステムを仮想ｐチャネルデバイスとして扱い、ｐはＭ以下であり、スーパーページサイズはｐｈｙｓｉｃａｌ＿ｐａｇｅ＿ｓｉｚｅ掛けるＭまたｐで割ったものである（例えば、ｐｈｙｓｉｃａｌ＿ｐａｇｅ＿ｓｉｚｅ  ｘ  Ｍ／ｐ）。対応的に、一実施例において、Ｍ個の物理チャネルを編成して、ｐ個のスーパーチャネルとして利用することができる。図９に示した例において、ｐは２に等しく、したがって論理チャネルドメイン９０２は２つの仮想チャネル９１２.１および９１２.２を含むことができ、４つの物理チャネルは２つのスーパーチャネルにグループ化することができる。ホストは、コントローラー９００にホスト読み取りまたは書き込みコマンドを発行することができる。論理チャネルドメイン中のホストコマンドプロセッサ９０４は、ホストコマンドを処理して、論理チャネルドメインに対応するパラメータを生成し、論理ページＲＥＡＤまたはＷＲＩＴＥコマンドを発行する。例えば、論理チャネルドメインのパラメータは、チャネル識別子（ＣＨ＿ＩＤ）、デバイス識別子（ＤＥＶ＿ＩＤ）、行アドレス（ＲＯＷ＿ＡＤＤＲ）、列アドレス（ＣＯＬ＿ＡＤＤＲ）、転送カウント（ＸＦＣＮＴ）などを含むことができる。
【００３５】
ホストＲＥＡＤコマンドを実行するには、論理ページのＲＥＡＤコマンドが発行されると、論理から物理へのコマンドマッピングモジュール９１０は、ＣＨ＿ＩＤ、ＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ、ＸＦＣＮＴなどの論理情報を解析することができ、物理情報を介してＭ／ｐ物理チャネル上で１つの論理ＲＥＡＤ操作をＣＨ＿ＩＤ、ＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ／Ｍ、ＸＦＣＮＴ／ＭなどのＭ／ｐサブ読み取り操作に分割することができる。一実施例において、物理ＣＨ＿ＩＤは、論理ＣＨ＿ＩＤと異なることができる。Ｍ／ｐサブ読み取り操作は、Ｍ／ｐチャネル上の物理チャネルドメイン９０６中のＮＡＮＤデバイスコントローラーユニット９０８によって実行されることができる。例えば、ｐ ＝ ２およびＭ ＝ ４の実施例において、スーパーページは２つの異なるチャネルの２つのダイで２つのページを含み、論理読み取り操作は４つのチャネルの代わりに２つの物理チャネルで実行されることができる。
【００３６】
コントローラー９００は、各物理チャネルからのデータ可用性をチェックすることができ、論理チャネル情報を使用してデータ転送を実行するようにホストに要求することができる。一旦要求が確認されると、コントローラー９００は、Ｍ−チャネルデータ並列転送でデータ転送状態に入ることができる。一実施例において、同期ブリッジ（例えば、チャネルシンクロナイザーとクロスチャネルブリッジ４１８または７０８）およびストレージバンク（例えば、ストレージバッファ４１０または７０６）は、Ｍ／ｐ個の部分データピースを１つの完全なＤＵに整列および組み立てることができる。一旦ＤＵが完全に受信されると、高性能ＥＣＣエンジンをアクティブしてＥＣＣデコードを実行できる。
【００３７】
ホストＷＲＩＴＥコマンドを実行するために、論理ページプログラムデータがホストＳＲＡＭまたは他のストレージユニットで準備ができている場合、論理から物理へのコマンドマッピングモジュール９１０は、ＣＨ＿ＩＤ、ＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ、ＸＦＣＮＴなどの論理情報を解析して、物理情報でｐ論理プログラム操作をＣＨ＿ＩＤ、ＤＥＶ＿ＩＤ、ＲＯＷ＿ＡＤＤＲ、ＣＯＬ＿ＡＤＤＲ／Ｍ、ＸＦＣＮＴ／ＭなどのＭ／ｐサブプログラム操作に分割することができる。様々な実施例において、コントローラー９００は、１つのスーパーページをＭ／ｐチャネルに配信する任意の形式を選択することができる。一実施例において、プログラムデータが１つのスーパーページを満たすのに十分でない場合、プログラムデータイン一時停止を有効にして、他のダイでの操作を可能にすることができる。別の実施例において、プログラム書き込みデータが１つのスーパーページを満たすのに十分でない場合、パディングを有効にしてスーパーページを満たすことができる。一時停止またはパディングを使用するかどうかに関係なく、すべての構成物理ページが各物理チャネルで正常にプログラムされたら、スーパーページプログラムは完成されることができる。さらに、いくつかの実施例において、各物理チャネル上でプログラム操作が完成されるのを待っている間に、対応するチャネルがアイドルであるときに他の操作を発行することが許可され得る。
【００３８】
１つまたは複数の実施例において、仮想論理チャネルの数ｐは、実際の実装およびストレージリソースに基づいて選択されることができる。一般的に、ホストはｐが何であるかを気にしない。スーパーチャネルが１つのみ（例えば、ｐ  ＝  １）の実施例が最速になる場合がある。ただし、１つのスーパーページにアクセスするためにすべてのチャネルが関与する場合があり、１つのスーパーページにアクセスしている間は他に何の操作もできない。したがって、１よりも大きい数ｐを有するストレージコントローラーの実施例は、複数のＩ／Ｏストリームのサポートを提供し、並行して操作を行うことができる。
【００３９】
図１０は、本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスからのランダム読み出しを概略的に示す。例示的なＮＡＮＤストレージデバイス１００は、データユニット１００２.１、１００４.１、１００６.１、および１００８.１を有することができる。データユニット１００２.１は、４つのピースに分割され、各ピースはそれぞれダイ１０２.１、１０４.１、１０６.１および１０８.１に保存されることができる。データユニット１００４.１は、４つのピースに分割され、各ピースはそれぞれダイ１０２.２、１０４.２、１０６.２および１０８.２に保存されることができる。データユニット１００６.１は、４つのピースに分割され、各ピースは、それぞれダイ１０２.１、１０４.１、１０６.１、および１０８.１に保存されることができる。データユニット１００８.１は、４つのピースに分割され、各ピースは、それぞれダイ１０２.３、１０４.３、１０６.３および１０８.３に保存されることができる。
【００４０】
例において、各物理ページのサイズが１６  ＫＢで、スーパーページのサイズが６４  ＫＢで、１６個のＤＵを含むことができる（４ ＫＢ  ＤＵ＿ＳＺと仮定）。ホストは４  ＫＢの読み取りを発行して、データユニット１００２.１、１００４.１、１００６.１、および１００８.１に含まれるデータを読み取ることができる。論理チャネルドメインにおいて、ホストはランダムな４ Ｋページ読み取りを発行することができる。物理チャネルドメインにおいて、４つのＮＡＮＤ読み取りコマンドを同時に発行して、４つのチャネルのそれぞれから１  ＫＢデータにアクセスでき、データユニット１００２.１、１００４.１、１００６.１、および１００８.１は、スーパーチャネルで１００２.２、１００４.２、１００６.２、および１００８.２として読み取られることができる。一実施例において、４つのチャネルから読み取られたデータピースは、デコード可能な１つまたは複数のＥＣＣコードワードに組み立てられることができる。
【００４１】
図１１は、本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスに対してプログラミング書き込むための方法１１００のフローチャートである。ブロック１１０２において、書き込みコマンドから受信したデータを複数のコードワードにエンコードすることができる。例えば、不揮発性ストレージシステムは、不揮発性ストレージデバイス（例えば、ＮＡＮＤデバイス）を含むことができる。不揮発性ストレージシステムは、ホストデバイス（例えば、コンピューティングシステム）のデータを保存するために使用でき、ホストデバイスからの書き込みコマンドで受信したデータをストレージ用のＥＣＣコードワードにエンコードすることができる。ブロック１１０４において、複数のコードワードによって形成される複数のデータユニットはバッファに保存されることができる。例えば、ストレージコントローラーのデータバッファ４１０またはデータバッファ７０２は、これらのデータユニットがストレージデバイスに保存される前に、データユニットを一時的に保存するために使用されることができる。このバッファは、高帯域幅を有するストレージバンクで実装されることができる。一実施例において、各データユニットは、１つのＥＣＣコードワードを含むことができる。別の実施例において、各データユニットは、複数のＥＣＣコードワードを含むことができる。
【００４２】
ブロック１１０６において、複数のデータユニット中のそれぞれは、複数のデータピースに分割されることができる。様々な実施例において、各コードワードは、複数のピースに分割されることができる。一実施例において、コードワードを連続部分に分割することにより、ピースを生成することができる。別の実施例において、これらのピースは、インターリーブされた方法でインターリーブされたピースに生成されることができる。ブロック１１０８において、データユニットの複数のデータピース中のそれぞれは、複数のチャネル中の１つにマッピングされることができる。様々な実施例において、１つのコードワードのデータピースは、複数のチャネルに拡張されることができる。ブロック１１１０において、データユニットの複数のデータピース中のそれぞれは、１つの対応されるチャネルのダイに保存されるために、複数のチャネル中の１つに送信されることができる。様々な実施例において、複数の不揮発デバイス（例えば、ＮＡＮＤデバイス）ダイを通じてＥＣＣコードワードを拡張することができ、平均化効果を実現することができ、したがって、ＥＣＣ失敗を低減することができる。
【００４３】
図１２は、本開示に係る一実施例のマルチチャネルＮＡＮＤストレージデバイスからデータを読み取るための方法１２００のフローチャートである。ブロック１２０２において、不揮発性ストレージデバイスのチャネルからデータピースを受信することができる。例えば、ホストからの読み取りコマンドは、複数の読み取り操作に変換されることができ、不揮発性ストレージデバイス（例えば、マルチチャネルＮＡＮＤストレージデバイス）の複数のチャネルで複数の読み取り操作を並行して実行することができる。不揮発性ストレージデバイスの複数のチャネルから１つまたは複数のデータユニットのデータピースを受信することができる。一実施例において、複数のチャネルをスーパーチャネルと呼ぶことができる。ブロック１２０４において、受信されたデータピースを１つまたは複数のＥＣＣコードワードに組み立てることができる。例えば、例示的なコントローラーは、ＮＡＮＤデバイスのダイに保存されたデータを受信すし、それを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立てることができる。各コードワードは、異なるチャネルから読み取られた２つまたはさらに多いデータピースを有することができる。ブロック１２０６において、前記コードワードが組み立てられると、コードワードをデコードするために、ＥＣＣエンジンをトリガーすることができる。一実施例において、例示的なストレージコントローラーは、ＥＣＣコードワードをデコードし、ホストに返すためのデコードデータを生成するように構成されることができる。
【００４４】
方法１１００および１２００は、ソフトウェア（例えば、実行可能なコンピュータプロセッサ（ＣＰＵ、ＧＰＵ、または両方））、ハードウェア（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向けＩＣ（ＡＳＩＣ））、ファームウェア、または３つの適切な組み合わせによって実装されることができる。一実施例において、例えば、ストレージコントローラーのコンポーネント（例えば、ホストコマンドプロセッサ８０４または９０４および論理から物理へのコマンドマッピングモジュール８１０または９１０）は、ハードウェア回路で実装されることができる。さらに、方法１１００および１２００は、ハードウェアで実行されることができる。一実施例において、例えば、ストレージコントローラーのコンポーネント（例えば、ホストコマンドプロセッサ８０４または９０４および論理から物理へのコマンドマッピングモジュール８１０または９１０）は、ハードウェア回路で実装されることができる。方法１１００および１２００は、コンピュータプロセッサ実行可能命令でプログラムされ、実行可能命令を実行するコンピュータプロセッサ（例えば、マイクロプロセッサまたはマイクロコントローラー）によって実行されることができる。
【００４５】
一例示的な実施例において、不揮発性ストレージデバイスからデータを読み取る方法を提供する。この方法は、不揮発性ストレージデバイスの複数のチャネルからデータピースを受信するステップと、前記データピースを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立て、各コードワードは、異なるチャネルから読み取られたデータピースを有するステップと、および前記コードワードが組み立てられた場合、ＥＣＣエンジンをトリガーしてコードワードをデコードし、デコードされたデータを生成し、前記デコードされたデータをホストに返すステップとを含むことができる。各コードワードは、異なるチャネルから読み取られたデータピースを有することができる。
【００４６】
一実施例において、この方法は、帯域幅が組み立てられた前記複数のチャネルの帯域幅に等しいスーパーチャネルでデータユニットのデータピースを送信するステップをさらに含むことができ、前記データユニットは、それぞれのチャネルを介して送信される複数のデータピースを含む。
【００４７】
一実施例において、前記不揮発性ストレージデバイスの各チャネルは、複数のダイを含むことができ、ＥＣＣコードワードは、異なるチャネルに位置する複数のダイの間で拡張される。
【００４８】
一実施例において、前記ＥＣＣコードワードは、インターリーブ方式で前記複数のダイの間で拡張されることができる。
【００４９】
一実施例において、データピースは、１つまたは複数のデータユニットに組み立てられることができ、各データユニットは、１つのＥＣＣコードワードであり、データユニットの前記データピースは、データユニットの前記データピースの元の位置に従って組み立てられることができる。
【００５０】
一実施例において、前記データピースは、１つまたは複数のデータユニットに組み立てられることができ、各データユニットは、１つまたは複数のＥＣＣコードワードを含み、データユニットの前記データピースは、データユニットでの前記データピースの元の位置に従って組み立てられることができる。
【００５１】
一実施例において、この方法は、書き込みコマンドから受信したデータを複数のコードワードにエンコードするステップと、前記複数のコードワードによって形成された複数のデータユニットをバッファに保存するステップと、前記複数のデータユニット中のそれぞれを複数のデータピースに分割して、各コードワードを複数のピースに分割するステップと、１つのデータユニットの複数のデータピース中のそれぞれを、前記複数のチャネルの１つにマッピングし、１つのコードワードのデータピースを複数のチャネルに拡張するステップと、および前記データユニットの前記複数のデータピース中のそれぞれを前記複数のチャネル中の１つに送信して、対応するチャネルのダイに保存されるようにするステップとをさらに含むことができる。
【００５２】
一実施例において、この方法は、前記複数のチャネル上のデータトラフィックを監視および同期するステップと、および前記書き込みコマンドから受信したデータを保存するために、前記複数のチャネルで第１のスーパーページを定位するステップとをさらに含むことができる。
【００５３】
別の例示的な実施例において、コントローラーを提供し、このコントローラーは、データをコードワードにエンコードし、前記コードワードをデコードするように構成されるエラー訂正コード（ＥＣＣ）エンジンと、前記コードワードによって構成されるデータユニットを保存するためのバッファと、および書き込み操作のためにデータユニット（ＤＵ）の複数のピースを不揮発性ストレージデバイスの複数のチャネルに配布し、読み取り操作のために前記複数のチャネルから受信した前記複数のピースを組み立て、前記データユニットの前記複数のピースの中のそれぞれは、前記複数のチャネル中の異なるチャネルの別個のダイに保存されるクロスチャネルブリッジとを含む。前記コントローラーは、異なるチャネルから読み取られたデータユニットピースのバランスを取り、ＥＣＣコードワードを受信したときに前記ＥＣＣエンジンをトリガーするチャネルシンクロナイザーをさらに含むことができる。
【００５４】
一実施例において、各データユニットは、１つのＥＣＣコードワードを含むことができる。
【００５５】
一実施例において、各データユニットは、２つまたはそれ以上のＥＣＣコードワードを含むことができる。
【００５６】
一実施例において、前記ＥＣＣは、マルチコアＥＣＣエンジンであることができる。
【００５７】
一実施例において、前記コントローラーは、論理チャネルドメイン操作を物理チャネルドメイン操作にマッピングするように構成される回路をさらに含むことができる。
【００５８】
一実施例において、前記バッファは、高スループットを有するストレージバンクであることができる。
【００５９】
別の例示的な実施例において、情報を有する非一時的な機械可読媒体を提供し、ここで、ハードウェアプロセッサシステムによって読み取られる場合、前記情報は、前記ハードウェアプロセッサシステムを、不揮発性ストレージデバイスの複数のチャネルからデータピースを受信することと、前記データピースを１つまたは複数のエラー訂正コード（ＥＣＣ）エンコードコードワードに組み立て、各コードワードは、異なるチャネルから読み取られたデータピースを有することと、および前記コードワードが組み立てられた場合、ＥＣＣエンジンをトリガーしてコードワードをデコードし、デコードされたデータを生成し、前記デコードされたデータをホストに返すことを実行させることができる。
【００６０】
一実施例において、前記不揮発性ストレージデバイスの各チャネルは、複数のダイを含むことができ、ＥＣＣコードワードは、異なるチャネルが位置される複数のダイの間で拡張されることができる。
【００６１】
一実施例において、前記データピースは、１つまたは複数のデータユニットに組み立てることができ、各データユニットは、１つまたは複数のＥＣＣコードワードを含み、データユニットの前記データピースは、データユニットでの前記データピースの元の位置に従ってを組み立てられることができる。
【００６２】
一実施例において、ハードウェアプロセッサシステムによって読み取られる場合、前記情報はさらに、前記ハードウェアプロセッサシステムを、書き込みコマンドから受信したデータを複数のコードワードにエンコードすることと、複数のデータユニットをバッファに保存することと、前記複数のデータユニット中のそれぞれを複数のデータピースに分割することと、コードワードの前記複数のデータピース中のそれぞれを複数のチャネルにマッピングすることと、および前記データユニットの前記複数のデータピースのそれぞれを前記複数のチャネル中の１つに転送して、対応するチャネルのダイに保存されるようにすることとを実行させることができる。
【００６３】
一実施例において、ハードウェアプロセッサシステムによって読み取られる場合、前記情報はさらに、前記ハードウェアプロセッサシステムを、前記複数のチャネル上のデータトラフィックを監視および同期することと、および前記書き込みコマンドから受信したデータを保存するために、前記複数のチャネルで第１のスーパーページを定位することとを実行させることができる。
【００６４】
開示される方法および操作のいずれも、１つまたは複数のコンピュータ可読記憶媒体（例えば、非一時的なコンピュータ可読媒体、例えば、１つまたは複数の光学メディアディスク、揮発性メモリコンポーネント（例えば、ＤＲＡＭまたはＳＲＡＭ））または不揮発性メモリコンポーネント（例えば、ハードドライブ）およびデバイスコントローラー（例えば、ＡＳＩＣによって実行されるファームウェア）で実行されるコンピュータ実行可能命令（例えば、本明細書で説明する操作のソフトウェアコード）として実装されることができる。開示された技術を実装するためのコンピュータ実行可能命令のいずれか、ならびに開示された実施例の実装中に作成および使用されるデータは、１つまたは複数のコンピュータ可読媒体（例えば、非一時的コンピュータ可読媒体）に保存されることができる。
【００６５】
本明細書では様々な態様および実施例が開示されたが、他の態様および実施例は当業者には明らかであろう。本明細書で開示される様々な態様および実施例は、例示を目的とするものであり、限定することを意図するものではなく、真の範囲および精神は添付の特許請求の範囲によって示される。
【図１】
2021500693.tif 000003
【図２】
2021500693.tif 000004
【図３Ａ】
2021500693.tif 000005
【図３Ｂ】
2021500693.tif 000006
【図４】
2021500693.tif 000007
【図５】
2021500693.tif 000008
【図６】
2021500693.tif 000009
【図７】
2021500693.tif 000010
【図８】
2021500693.tif 000011
【図９】
2021500693.tif 000012
【図１０】
2021500693.tif 000013
【図１１】
2021500693.tif 000014
【図１２】
2021500693.tif 000015
【国際調査報告】
2021500693.tif 000016