(57)【特許請求の範囲】
【請求項１】
ホストインタフェースと、
前記ホストインタフェースに結合される第１のエラー検出回路と、
メモリインタフェースと、
前記メモリインタフェースに結合されるエラー訂正コード（ＥＣＣ）エンジンと、
前記ＥＣＣエンジンに結合される第２のエラー検出回路と、
を備えるメモリコントローラであって、
前記第１のエラー検出回路が、
前記ホストインタフェースから受信されるデータに対して第１のエラー検出データを計算し、
前記ホストインタフェースに送信されるデータの完全性をチェックするように構成され、
前記ＥＣＣエンジンが、
前記メモリインタフェースに送信されるデータ及び前記第１のエラー検出データに対して、エラー訂正データを計算し、
前記メモリインタフェースから受信されるデータ及び前記第１のエラー検出データの完全性をチェックするように構成され、
前記第２のエラー検出回路は、
前記メモリインタフェースに送信されるためにデータに対して第２のエラー検出データを計算し、
前記メモリインタフェースに送信されるために前記データの完全性をチェックするために、前記第２のエラー検出データを、前記第１のエラー検出データと比較するように構成される、メモリコントローラ。
【請求項２】
前記メモリコントローラが、前記ホストインタフェースから受信される前記データ及び前記エラー訂正データを、前記メモリインタフェース上で転送するように構成される、請求項１に記載のメモリコントローラ。
【請求項３】
前記第１のエラー検出回路が、データの受信されたセクタごとにエラー検出データを計算するように構成される、請求項２に記載のメモリコントローラ。
【請求項４】
前記ホストインタフェースから受信される前記データが、ある数のデータのセクタを含むデータペイロードを含み、
前記ホストインタフェースから受信される前記データがストリーミングデータを含む、請求項３に記載のメモリコントローラ。
【請求項５】
前記第１のエラー検出回路が、リンク層及び／又はトランスポート層によって前記ホストインタフェースに結合されるサイクリックリダンダンシーチェック（ＣＲＣ）エンジンを備える、
請求項１に記載のメモリコントローラ。
【請求項６】
前記メモリコントローラが、
前記ホストインタフェース、並びに前記第１のエラー検出回路及び前記第２のエラー検出回路に結合されるデータ転送回路と、
前記データ転送回路に結合されるエラー検出メモリと、
を含み、
前記エラー検出メモリが、前記第１のエラー検出データを記憶するように構成される、
請求項１に記載のメモリコントローラ。
【請求項７】
前記メモリコントローラが、
前記データ転送回路、及び前記第２のエラー検出回路に結合されるデータバッファを含み、
前記データバッファが、前記第２のエラー検出回路のためにデータをバッファリングするように構成される、
請求項６に記載のメモリコントローラ。
【請求項８】
前記ＥＣＣエンジンが、前記メモリインタフェースから受信される前記データの１つ又は複数のエラーを訂正するように構成される、請求項１に記載のメモリコントローラ。
【請求項９】
前記メモリコントローラが、
前記メモリインタフェース、並びに前記第１のエラー検出回路及び前記第２のエラー検出回路に結合されるデータ転送回路を含み、
前記データ転送回路が、前記第２のエラー検出回路に、前記データ及び前記第１のエラー検出データを転送するように構成される、
請求項１に記載のメモリコントローラ。
【請求項１０】
前記第２のエラー検出回路が、
前記データ転送回路から受信される前記データに対してエラー検出データを計算し、
前記データ転送回路から受信される前記データに対して前記計算されたエラー検出データを、前記データ転送回路から受信される対応するエラー検出データと比較するように構成される、
請求項９に記載のメモリコントローラ。
【請求項１１】
前記メモリコントローラが、
２つ以上のチャネルと、
前記データ転送回路に結合されるチャネルデータ転送回路と、
前記チャネルデータ転送回路及び前記第２のエラー検出回路に結合されるデータバッファと、
前記メモリインタフェースに結合されるエラー検出メモリと、
を含む、請求項９に記載のメモリコントローラ。
【請求項１２】
前記メモリコントローラが、
２つ以上のチャネルと、
チャネルプロセッサ及びチャネルメモリと、
を含む、請求項９に記載のメモリコントローラ。
【請求項１３】
前記メモリコントローラが、
前記ホストインタフェースに結合されるホストバッファと、
前記ホストバッファに結合される暗号化回路と、
を含み、
前記暗号化回路が、暗号化された出力を提供するために任意選択で前記データを処理するように構成される、
請求項１に記載のメモリコントローラ。
【請求項１４】
前記暗号化回路が、高度暗号化規格（ＡＥＳ）エンジンを備える、請求項１３に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して半導体メモリデバイス、方法、およびシステムに関し、より詳細にはデータ完全性に関する。
【背景技術】
【０００２】
メモリデバイスは、通常、コンピュータ又は他の電子装置内に、内部回路、半導体回路、集積回路として提供される。揮発性メモリ及び不揮発メモリを含む多くの異なるタイプのメモリがある。揮発性メモリは、そのデータを維持するために電力を必要とする可能性があり、数ある中でも、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、及び同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）を含むことができる。不揮発性メモリは、電力が供給されないときに記憶されている情報を保持することによって永続データを提供することができ、数ある中でも、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、読み取り専用メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、及び相変化ランダムアクセスメモリ（ＰＣＲＡＭ）を含むことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
メモリデバイスは、ソリッドステートドライブ（ＳＳＤ）を形成するために互いに組み合わせることができる。ＳＳＤは、ＮＡＮＤフラッシュメモリ及びＮＯＲフラッシュメモリ等の不揮発性メモリを含むことができ、且つ／又は、多様な他のタイプの不揮発性メモリ及び揮発性メモリの中でも、例えば、ＤＲＡＭ及びＳＲＡＭ等の揮発性メモリを含むことができる。
【課題を解決するための手段】
【０００４】
ＳＳＤは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費の点でハードドライブに優る利点を有することができるので、コンピュータ用のメインストレージデバイスとしてハードディスクドライブを置き換えるために使用することができる。例えば、ＳＳＤは、可動部品が存在しないために、磁気ディスクドライブと比較して優れた性能を有する可能性があり、これにより磁気ディスクドライブに関連するシークタイム、待ち時間、及び他の電子機械遅延を回避できる。ＳＳＤ製造メーカは不揮発性フラッシュメモリを使用して、内部バッテリ電源を使用せず、したがってドライブをより万能でコンパクトにすることができるフラッシュＳＳＤを作成できる。
【０００５】
ＳＳＤは、１つ又は複数のメモリチップ等の1つ又は複数のメモリデバイスを含むことができる。当業者が理解するように、メモリチップは、１つ又は複数のダイを含むことができる。各ダイは、1つ又は複数のメモリアレイ及びその上に周辺回路を含むことができる。メモリアレイは1つ又は複数のプレーンを含む可能性があり、各プレーンは、メモリセルの1つ又は複数の物理ブロックを含む。各物理ブロックは、データの１つ又は複数のセクタを記憶できる1つ又は複数のページのメモリセルを含むことができる。
【０００６】
ＳＳＤは、特にユニバーサルシリアルバス（ＵＳＢ）、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、又はペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）等のシリアルインタフェースでホストシステムとインタフェース接続することができる。ＵＳＢ、ＳＡＴＡ、及びＰＣＩｅ等のシリアルインタフェースは、それぞれのインタフェースのアーキテクチャのリンク層又はトランスポート層に内蔵されるサイクリックリダンダンシーチェック（ＣＲＣ）等のエラー検出機構を有することがある。ＣＲＣは、送信機から受信機へのデータの伝送中にノイズ又は他の障害によって引き起こされるエラーの存在を検出する能力を含んでもよい。ＣＲＣのデータ生成は、特定のインタフェースによってサポートされるフレーム構造に基づくことがある。
【０００７】
例えば、ＳＡＴＡフレーム構造は、フレームの開始（ＳＯＦ）の後に、フレーム情報構造（ＦＩＳ）、その後にＣＲＣデータ、その後にフレームの終わり（ＥＯＦ）を含むことがある。ＳＡＴＡは、ＦＩＳのコンテンツにわたって計算されるＣＲＣデータの３２ビットを使用してもよい。ＣＲＣデータの計算で使用される３２ビットのＣＲＣ多項式の一例は以下の通りである。すなわち、X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1である。ＦＩＳが奇数のワード、例えば、１６のビットセグメントを含む場合、完全なダブルワード（ｄｗｏｒｄ）、例えば３２ビットを形成するために、ＦＩＳの最後のワードはゼロで当て物をされることがある。ＳＡＴＡフレームは、ＦＩＳ及びＣＲＣデータを含む２０６４のｄｗｏｒｄｓを含むことがあり、ＦＩＳのペイロードは２０４８のｄｗｏｒｄｓ（８１９２バイト）を含むことがある。ただし、ペイロードはより少ないデータを含むことがある。
【０００８】
当業者が理解するように、論理ブロックアドレッシングは、ホストが、情報のセクタを識別するために使用できる方式である。例えば、各セクタは、一意の論理ブロックアドレス（ＬＢＡ）に相当することができる。セクタは、記憶量の最小アドレッシング可能部分であってよい。一例として、データのセクタは、例えば５１２バイト等のデータのある数のバイトである場合がある。例えばＳＡＴＡインタフェース等のシリアルホストインタフェースでの各ペイロードは必ずしも同数のバイトを含まないため、及び大量記憶装置のシリアルホストインタフェースでのペイロードは異なる単位である場合があるため、ＣＲＣデータは、ホストインタフェース、例えばホストインタフェースのリンク層又はトランスポート層を越えて伝搬することはできないことがある。
【図面の簡単な説明】
【０００９】
【図１】本開示の１つ又は複数の実施形態によるメモリシステムを含むコンピュータシステムの機能ブロック図である。
【図２】本開示の１つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。
【図３】本開示の１つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。
【図４】本開示の１つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。
【発明を実施するための形態】
【００１０】
本開示は、メモリコントローラ内のデータ完全性のための方法、装置及びシステムを含む。１つのメモリコントローラ実施態様は、ホストインタフェース、及びそのホストインタフェースに結合される第１のエラー検出回路を含む。メモリコントローラは、メモリインタフェース、及びそのメモリインタフェースに結合される第２のエラー検出回路を含むことができる。第１のエラー検出回路は、ホストインタフェースから受信されるデータに対してエラー検出データを計算し、ホストインタフェースに送信されるデータの完全性をチェックするように構成することができる。第２のエラー検出回路は、メモリインタフェースに送信されるデータ及び第１エラー訂正データに対してエラー訂正データを計算し、メモリインタフェースから受信されるデータ及び第１のエラー訂正データの完全性をチェックするように構成することができる。
【００１１】
本開示の以下の発明を実施するための形態では、本明細書の一部を形成し、本開示の１つ又は複数の実施形態がどのように実践されることがあるのかが例示によって示される添付図面が参照される。これらの実施形態は、当業者が本開示の実施形態を実践できるようにするほど十分に詳細に説明され、他の実施形態が活用されてよいこと、及びプロセス変更、電気的な変更、及び構造上の変更が本開示の範囲から逸脱することなく行われてよいことを理解される。本明細書に使用される場合、特に図面中の参照数字に関して指示詞Ｎは、このように指示される特定の特長の数が本開示の１つ又は複数の実施形態に含まれることができることを示す。指示詞は、同数又は異なる数の特定の特長を表すことができる。
【００１２】
本明細書の図は、１つ又は複数の最初の桁が図面の図面番号に相当し、残りの桁が図面中の要素又は構成要素を識別する番号付け方式に従う。異なる図の間の類似する要素又は構成要素は、類似する数字を使用することによって識別されることがある。例えば、１１０は図１の要素「１０」を参照し、類似する要素は図２では２１０として参照されてもよい。理解されるように、本明細書の多様な実施形態に示される要素は、本開示の多くの追加の実施形態を提供するように追加、交換、及び／又は排除できる。さらに、理解されるように、図中に提供される要素の割合及び相対的な尺度は、本開示の実施形態を示すことを目的としており、制限的な意味で解釈されるべきではない。
【００１３】
図１は、本開示の１つ又は複数の実施形態によるメモリシステム１２０を含むコンピューティングシステム１００の機能ブロック図である。図１に示される実施形態では、例えば、ソリッドステートドライブ（ＳＳＤ）等のメモリシステム１２０が、メモリコントローラ１０１、物理インタフェース１０３、及び、例えばＮＡＮＤフラッシュデバイス等の１つ又は複数のソリッドステートメモリデバイス１３０−１、…、１３０−Ｎを含むことができる。図１に示されるように、メモリコントローラ１０１は、物理インタフェース１０３に、及びソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎに結合できる。
【００１４】
物理インタフェース１０３は、メモリシステム１２０と、ホストシステム１０２等の別の装置の間で情報を通信するために使用できる。ホストシステム１０２は、プロセッサ等、メモリアクセスデバイスを含むことができる。当業者は、「プロセッサ」が、並列処理システム、多くのコプロセッサ等の１台又は複数台のプロセッサを意図する可能性があることを理解するだろう。ホストシステムの例は、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル記録装置及び再生装置、携帯電話、ＰＤＡ、メモリカードリーダ、インタフェースハブ等を含む。１つ又は複数の実施形態の場合、物理インタフェース１０３は、標準化された物理インタフェースの形をとることができる。例えば、メモリシステム１２０が、コンピューティングシステム１００でのデータ記憶に使用されるとき、物理インタフェース１０３は、他の物理インタフェースの中でも、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、ペリフェラルコンポーネントインターコネクタエクスプレス（ＰＣＩｅ）、又はユニバーサルシリアルバス（ＵＳＢ）とすることができる。しかしながら、一般的には、物理インタフェース１０３は、図２のホストインタフェース２１０等、メモリシステム１２０のコントローラ１０１のホストインタフェースと、物理インタフェース１０３用に互換性のある受容器を有するホストシステム１０２の間で、コントロール、アドレス、データ、及び他の信号を渡すための物理的な接続を提供できる。
【００１５】
メモリコントローラ１０１は、他の動作の中でも、データを読み取り、書き込み、消去するためにソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎと通信できる。メモリコントローラ１０１は、１つ又は複数の集積回路、及び／又は個別部品である場合がある回路を有することができる。１つ又は複数の実施形態の場合、メモリコントローラ１０１内の回路は、ソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎにわたってアクセスを制御するための制御回路、及びホストシステム１０２とメモリシステム１２０の間にトランスレーション層を提供するための回路を含んでよい。したがって、メモリコントローラは、適切なときに適切なＩ／Ｏ接続で適切な信号を受信するために、ソリッドステートメモリデバイス１３０−１、．．．、１３０−ＮのＩ／Ｏ接続（図１では不図示）を選択的に結合できる可能性がある。同様に、ホストシステム１０２とメモリシステム１２０の間の通信プロトコルは、ソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎのアクセスに必要とされるものとは異なることがある。その場合、メモリコントローラ１０１は、ホストから受信されたコマンドを適切なコマンドに変換し、ソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎへの所望されるアクセスを達成できる。
【００１６】
図１の実施形態は、本開示の実施形態を分かりにくくしないように示されていない追加の回路を含むことができる。例えば、メモリシステム１２０は、Ｉ／Ｏ回路を通してＩ／Ｏ接続上で提供されるアドレス信号をラッチするためにアドレス回路を含むことができる。アドレス信号は、ソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎにアクセスするために、受信され、行デコーダ及び列デコーダによって復号できる。アドレス入力接続の数が、ソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎの密度及びアーキテクチャに依存する可能性があることが、当業者によって理解されるだろう。
【００１７】
図２は、本開示の１つ又は複数の実施形態によるメモリコントローラ２０１を含むシステム２００の機能ブロック図である。コントローラ２０１は、図１に示されるコントローラ１０１に類似する場合がある。１つ又は複数の実施形態では、コントローラ２０１は、ＳＳＤ等のメモリシステムの構成要素である場合がある。図２に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解を容易にするために図２のコントローラの詳細が少なくされていることが、当業者によって理解されるであろう。
【００１８】
図２に示されるように、メモリコントローラ２０１は、１つ又は複数のソリッドステートメモリデバイス２３０と結合できる。ソリッドステートメモリデバイス２３０は、図１に示されるソリッドステートメモリデバイス１３０−１、．．．、１３０−Ｎに類似するようにできる。コントローラ２０１は、フロントエンド部２０４及びバックエンド部２０６を含むことができる。メモリコントローラは、ダイレクトメモリアクセス（ＤＭＡ）モジュール２１４等、ホストインタフェース２１０とデータ転送回路との間で結合される多くのフロントエンド構成要素を含むことができる。また、メモリコントローラは、ＤＭＡモジュール２１４と、エラー検出回路／メモリインタフェース（Ｉ／Ｆ）２２２のメモリインタフェース構成要素等、メモリインタフェースとの間で結合される多くのバックエンド構成要素も含むことができる。１つ又は複数の実施形態では、エラー検出回路／メモリＩ／Ｆ２２２のエラー検出回路構成要素を、エラー訂正コード（ＥＣＣ）エンジンとすることができる。一般に、メモリコントローラ２０１は、図１のホストシステム１０２等、ホストシステム２０２から受信される、又はホストシステム２０２に転送されるコマンド及びデータを、フロントエンド２０４を用いて処理することができる。一般に、メモリコントローラ２０１は、他の動作の中でも、ソリッドステートメモリデバイス２３０上でデータを読み取り、書き込み、消去するために、バックエンド２０６を用いてソリッドステートメモリデバイス２３０との通信を管理できる。しかしながら、コマンド処理及びメモリ通信管理の特定の態様は、フロントエンド２０４とバックエンド２０６のどちらかで、又はフロントエンド２０４とバックエンド２０６の両方で、コントローラ２０１によって処理することができる。図２に示されるように、ホストインタフェース２１０及びＤＭＡモジュール２１４を、フロントエンド構成要素とすることができる。
【００１９】
図２に示されるように、フロントエンド部２０４は、図１のホストシステム１０２等、ホストシステム２０２に結合できるホストインタフェース２１０を含むことができる。ホストインタフェース２１０は、ホストシステムからデータを受信するように構成できる。ホストインタフェースから受信されるデータは、ある数のデータのセクタを含むデータペイロードである場合がある。１つ又は複数の実施形態では、ホストインタフェースから受信されるデータはストリーミングデータである場合がある。ホストインタフェース２１０は、物理層２０５、リンク層２０７、及びトランスポート層２０９を含む多くの層を通してホストシステム２０２とインタフェース接続することができる。当業者は、ある特定のホストインタフェースのための層の数を、ＳＡＴＡ、ＰＣＩｅ、ＵＳＢ等のインタフェース規格によって定めることができることを理解するだろう。本明細書で使用される場合、トランスポート層は、ＳＡＴＡ規格の一部としての少なくとも１つのトランスポート層、又はＰＣＩｅ規格の一部としてのトランザクション層を示すことができる。当業者は、ＳＡＴＡ規格によるトランスポート層が、ＰＣＩｅ規格によるトランザクション層に類似していることを理解するだろう。ホストインタフェース２１０は、ホストシステム２０２と通信するために、ＳＳＤ等のメモリシステム上で、図１に示されている物理インタフェース１０３等の物理インタフェースに結合できる。かかる詳細は、図解を容易にするために図２には図示されていない。
【００２０】
ホストインタフェース２１０は、ＤＭＡモジュール２１４と、サイクリックリダンダンシーチェック(ＣＲＣ)エンジン２１２等のフロントエンドエラー検出回路と結合できる。「ＣＲＣエンジン」２１２として示されているが、エラー検出回路は、サイクリックリダンダンシーチェック以外の機能性を提供することができる。例えば、エラー検出回路は、数ある中でも、反復方式、パリティ方式、チェックサム、ハミング距離に基づくチェック、ハッシュ関数、水平リダンダンシーチェック及び垂直リダンダンシーチェック、極性方式、並びに／又はＥＣＣ等のエラー訂正方式を含むことができる。１つ又は複数の実施形態では、ホストインタフェース２１０は、フロントエンドＣＲＣエンジン２１２と直接結合でき、且つＤＭＡモジュール２１４と直接結合できる。
【００２１】
１つの又は複数の実施形態では、フロントエンドＣＲＣエンジン２１２は、リンク層２０７及び／又はトランスポート層２０９によって、ホストインタフェース２１０に、したがってホストシステムに結合できる。ＣＲＣエンジン２１２等、フロントエンドエラー検出回路は、例えばデータが、図１のメモリシステム１２０等のメモリシステム内にある間にデータのエラーを検出するように構成できる。例えば、フロントエンドＣＲＣエンジン２１２は、例えば書き込み動作の一部として、リンク層２０７及び／又はトランスポート層２０９から受信されるＤＭＡペイロード等のデータペイロードのセクタ等、データに対応して、ＣＲＣデータ等、エラー訂正データを計算できる。１つ又は複数の実施形態では、フロントエンドＣＲＣエンジン２１２は、セクタごとにＣＲＣデータを計算できる。１つ又は複数の実施形態では、フロントエンドＣＲＣエンジン２１２は、リンク層２０７及び／又はトランスポート層２０９によってホストインタフェース２１０に結合することができ、リンク層２０７及び／又はトランスポート層２０９から、ＤＭＡペイロード等、ある数のデータのセクタを受信できる。１つ又は複数の実施形態では、フロントエンドＣＲＣエンジン２１２は、リンク層２０７からだけ、又はトランスポート層２０９からだけ、その数のデータのセクタを受信できる。しかしながら、実施形態はそのように制限されている。メモリコントローラ２０１に転送されるデータのためにホストシステム２０２によって生成された場合があるＣＲＣデータは、ＰＣＩｅタイプのインタフェースの場合トランスポート層２０９で、又はＳＡＴＡタイプのインタフェースの場合リンク層２０７で、データから取り去られることがある。しかしながら、本開示の１つ又は複数の実施形態に従って、フロントエンドＣＲＣエンジン２１２は、それが結合できるホストインタフェース２１０から受信されるデータの１セクタあたりのＣＲＣデータを計算し、チェックすることができる。
【００２２】
ＤＭＡモジュール２１４は、バックエンドデータバッファ２１８、及びＣＲＣメモリ２１６等、バックエンドエラー検出メモリに結合できる。バックエンドデータバッファ２１８は、ＥＣＣエンジン／メモリＩ／Ｆ２２２に結合できる。バックエンドデータバッファ２１８は、例えばある数のデータのセクタ等、書き込み動作中にＥＣＣエンジン／メモリＩ／Ｆ２２２のためにＤＭＡモジュール２１４から受信されるＤＭＡペイロードの少なくとも一部をバッファリングするように構成できる。バックエンドデータバッファ２１８は、読み取り動作中に、ＥＣＣエンジン／メモリＩ／Ｆ２２２から受信されるある数のデータのセクタをバッファリングするように構成できる。バックエンドデータバッファ２１８及びバックエンドＣＲＣメモリ２１６は、ＥＣＣエンジン及びメモリインタフェース等、エラー検出回路に結合できる。１つ又は複数の実施形態におけるように、及び図２の実施形態に示されるように、ＥＣＣエンジン及びメモリインタフェースは、「ＥＣＣエンジン／メモリＩ／Ｆ」２２２等、１つの構成要素としてともに結合できる。本書でのＥＣＣエンジン／メモリＩ／Ｆに対する集合的な参照は、エラー検出回路及びメモリインタフェースを別々の構成要素として有する実施形態を除外しない。同様に、本明細書での構成要素に対する個別的な参照は、エラー検出回路及びメモリインタフェースが１つの構成要素として含まれる実施形態を除外しない。
【００２３】
バックエンドＣＲＣメモリ２１６は、フロントエンドＣＲＣエンジン２１２によって計算されたＣＲＣデータを記憶するように構成できる。バックエンドＣＲＣメモリ２１６は、ＥＣＣエンジン／メモリＩ／Ｆ２２２に結合することができ、ソリッドステートメモリデバイス２３０に以前に記憶されていたＣＲＣデータ等、ＥＣＣエンジン／メモリＩ／Ｆ２２２のメモリインタフェース部からのＣＲＣデータを受信し、記憶するように構成できる。バックエンドデータバッファ２１８は、フロントエンドＣＲＣエンジン２１２に、ＤＭＡモジュール２１４上でＥＣＣエンジン／メモリＩ／Ｆ２２２から受信されたある数のデータのセクタを転送するように構成できる。フロントエンドＣＲＣエンジン２１２は、例えばＤＭＡモジュール２１４を介して、ＥＣＣエンジン／メモリＩ／Ｆ２２２のエラー検出回路部に結合できる。バックエンドＣＲＣメモリ２１６は、フロントエンドＣＲＣエンジン２１２に、ＤＭＡモジュール２１４上でＥＣＣエンジン／メモリＩ／Ｆ２２２から受信されるその数のデータのセクタに対応するＣＲＣデータを転送するように構成できる。かかる例では、フロントエンドＣＲＣエンジン２１２は、例えばＤＭＡモジュール２１４から受信されるデータの、それぞれのセクタのためにＣＲＣデータを計算するように構成できる。次に、フロントエンドＣＲＣエンジンは、例えば、データのセクタがホストインタフェース２１０上でホストシステムに転送される前に、ＤＭＡモジュール２１４から受信されたデータのセクタの完全性を検証するために、ＤＭＡモジュール２１４から受信されたデータのセクタに対して計算されたＣＲＣデータを、ＤＭＡモジュール２１４を介してバックエンドＣＲＣメモリ２１６から受信されたＣＲＣデータと比較できる。ＤＭＡモジュールの動作に関する追加の詳細は、少なくとも一人の共通発明者を有し、代理人整理番号第１００２．０３９０００１号を有する、「Memory Controller」と題する同一出願人による米国特許出願番号第 号に記載されている。
【００２４】
ＥＣＣエンジン／メモリＩ／Ｆ２２２は、ソリッドステートメモリデバイス２３０に結合できる。１つ又は複数の実施形態では、ＥＣＣエンジン／メモリＩ／Ｆ２２２は、バックエンドＣＲＣメモリ２１６から受信されるＣＲＣデータ等のＣＲＣデータを、データの対応するセクタにアペンドするように構成できる。ＥＣＣエンジン／メモリＩ／Ｆ２２２のデータエンジン部は、例えばデータのセクタ内で等、データ内でエラーを検出するように構成できる。１つ又は複数の実施形態では、ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部は、データが図１のメモリシステム１２０等のメモリシステム内にある間に、データのエラーを検出、及び／又は訂正するように構成できる。例えば、ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部は、データ単独のために、及び／又はデータと、ＣＲＣ等、アペンドされたエラー検出データに対して、ＥＣＣデータ等、エラー訂正データを計算できる。１つ又は複数の実施形態では、ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部は、セクタごとにＥＣＣデータを計算するように構成できる。ＥＣＣエンジン／メモリＩ／Ｆ２２２は、ＥＣＣデータを、データの対応するセクタにアペンドするように構成できる。１つ又は複数の実施形態では、ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部が、フロントエンドＣＲＣエンジン２１２によって計算されたＣＲＣデータ等、アペンドされたＣＲＣデータとともに、データの対応するセクタに対してＥＣＣデータを計算するように構成できる。読み取り動作中、ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部は、ある数のデータのセクタがバックエンドデータバッファ２１８内にある間に、その数のデータのセクタのエラーを訂正するように構成できる。ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部は、ＣＲＣデータがバックエンドＣＲＣメモリ２１６内にある間にＣＲＣデータのエラーを訂正するように構成できる。実施形態は、これらの特定の場所でのエラーの訂正に制限されていない。
【００２５】
１つ又は複数の実施形態では、メモリコントローラ２０１は、書き込み動作のために、例えばソリッドステートメモリデバイス２３０に、ＥＣＣエンジン／メモリＩ／Ｆ２２２上で、ある数のデータのセクタ、対応する計算されたＣＲＣデータ、及び対応するＥＣＣデータ、又はそのさまざまな組み合わせを転送するように構成できる。つまり、コントローラは、ソリッドステートメモリデバイス２３０内の場所に、データのセクタ、対応するＣＲＣデータ、及び対応するＥＣＣデータを記憶するように構成できる。
【００２６】
１つ又は複数の実施形態は、コントローラ２０１が、例えば書き込み動作と連動して、ホストインタフェース２１０のリンク層２０７及び／又はトランスポート層２０９を用いて、ホストシステム２０２からある数のデータのセクタを受信することを含むことができる。その数のデータのセクタは、ホストインタフェース２１０を通して、フロントエンドＣＲＣエンジン２１２及びＤＭＡモジュール２１４に転送できる。１つ又は複数の実施形態では、その数のデータのセクタは、フロントエンドＣＲＣエンジン２１２及びＤＭＡモジュール２１４と並行して受信できる。フロントエンドＣＲＣエンジン２１２は、その数のデータのセクタのそれぞれに対応するＣＲＣデータを計算できる。例えば、データの各セクタは一意のＣＲＣデータに対応する可能性がある。ＤＭＡモジュール２１４は、ＣＲＣエンジン２１２からバックエンドＣＲＣメモリ２１６にＣＲＣデータを転送できる。フロントエンドＣＲＣエンジン２１２は、例えばＤＭＡモジュール２１４を介して、バックエンドＣＲＣメモリ２１６に結合できる。１つ又は複数の実施形態では、バックエンドＣＲＣメモリ２１６は、ＣＲＣデータを記憶できる。バックエンドＣＲＣメモリ２１６は、それぞれの一意のＣＲＣデータがデータのある特定のセクタに相当する可能性がある２つ以上の一意のＣＲＣデータを記憶できる。ＤＭＡモジュール２１４は、その数のデータのセクタをバックエンドデータバッファ２１８に転送できる。ＥＣＣエンジン／メモリＩ／Ｆ２２２は、バックエンドデータバッファ２１８からその数のデータのセクタ、及びバックエンドＣＲＣメモリ２１６から対応するＣＲＣデータを転送し、その数のデータのセクタ及び対応するＣＲＣデータのそれぞれに対して一意のＥＣＣデータを計算し、そのＥＣＣデータをデータの対応するセクタにアペンドし、１つ又は複数のソリッドステートメモリデバイス２３０に、データのセクタ、ＣＲＣデータ、及びＥＣＣデータを記憶することができる。
【００２７】
前記に示すように、ＣＲＣデータは、他のＣＲＣ計算方法の中でも、ｄｗｏｒｄ（３２ビット）量で、フレーム情報構造（ＦＩＳ）のコンテンツに関して計算できる。しかしながら、ホストシステム２０２から受信されるデータペイロードは、例えば５１２バイト部分等、データペイロードのある数のセクタを含むことがある。いくつかの以前の手法に従って、ＣＲＣデータは、データペイロードに含まれるデータの各セクタごとではなく、全体としてのデータペイロードに対して計算されることがある。すなわち、ＣＲＣデータがリンク層２０７又はトランスポート層２０９を越えて伝搬しても、データは、少なくとも部分的には、それが、例えば、図１のメモリデバイス１３０−１等の、メモリデバイスに書き込まれ、且つ／又はメモリデバイスから読み取られる量とは異なる量で、例えば、図１のメモリシステム１２０等の、メモリシステムへ、又はメモリシステムから転送されるため、ＣＲＣデータは、データの特定のセクタにとって有用ではない場合がある。したがって、同じデータに対してであっても、読み取り及び／又は書き込み動作に関連するデータのセクタ数に対してと同じＣＲＣデータをデータペイロードに対して使用しても、ある数のデータのセクタにデータの完全性は提供されない場合がある。
【００２８】
対照的に、本開示の１つ又は複数の実施形態に従って、ＣＲＣデータは、各セクタに対して、データの各セクタごとに計算される。例えば、一意のＣＲＣデータは、データの各セクタごとに計算される。例えば、データペイロードが２０４８バイトを含む場合、ＣＲＣデータはデータの４個の５１２バイトセクタのそれぞれに対して計算できる。データ完全性は、それが、例えば、ホストインタフェース２１０における等の、フロントエンド２０４におけるホストシステム２０２からコントローラ２０１によって受信される点から、それがバックエンド２０６からソリッドステートメモリデバイス２３０に転送される点までのその数のセクタに対して提供できる。データ完全性を提供することは、ホストインタフェース２１０からＥＣＣエンジン／メモリＩ／Ｆ２２２まで、及び／又はソリッドステートメモリデバイス２３０までのデータのセクタに対して、同じＣＲＣデータを維持することを含むことができる。
【００２９】
１つ又は複数の実施形態では、ＥＣＣエンジン／メモリＩ／Ｆ２２２は、例えば読み取り動作と連動して、１つ又は複数のソリッドステートメモリデバイス２３０から、ある数のデータのセクタ、その対応する第１のＣＲＣデータ、及びＥＣＣデータを受信することができる。ＥＣＣエンジン／メモリＩ／Ｆ２２２は、バックエンドデータバッファ２１８にその数のデータのセクタを記憶し、バックエンドＣＲＣメモリ２１６にそれらに対応するＣＲＣデータを記憶できる。その数のデータのセクタ、並びにその対応する第１のＣＲＣデータ、及びＥＣＣデータは、ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部を用いてエラーチェックできる。ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部によって識別される、ＣＲＣデータの１つ又は複数のエラーは、ＣＲＣデータがバックエンドＣＲＣメモリ２１６に記憶されている間に訂正できる。ＥＣＣエンジン／メモリＩ／Ｆ２２２のＥＣＣエンジン部によって識別される、その数のデータのセクタの１つ又は複数のエラーは、その数のデータのセクタがバックエンドデータバッファ２１８内にバッファリングされている間に訂正できる。エラー訂正後、ＤＭＡモジュール２１４は、その数のデータのセクタ及びその対応するＣＲＣデータを受信し、フロントエンドＣＲＣエンジン２１２に転送できる。フロントエンドＣＲＣエンジン２１２は、転送されたその数のデータのセクタに対して第２のＣＲＣデータを計算し、その数のデータのセクタの完全性を検証するために、第１のＣＲＣデータを対応する第２のＣＲＣデータと比較できる。第１のＣＲＣデータを第２のＣＲＣデータと比較した後で、その数のデータのセクタは、ホストインタフェース２１０のトランスポート層２０９上で、例えばその数のデータの読み取られたセクタ等を、例えばデータを要求したホストシステム２０２に転送できる。１つ又は複数の実施形態では、その数のデータのセクタは、第１のＣＲＣデータ又は第２のＣＲＣデータのどちらかがなくても、ホストインタフェース２１０上で転送できる。１つ又は複数の実施形態では、ＥＣＣエンジン／メモリＩ／Ｆ２２２が、その数のデータのセクタからＥＣＣデータを削除し、その数のデータのセクタ及び第１のＣＲＣデータを、フロントエンドＣＲＣエンジン２１２に並行して転送できる。
【００３０】
前述された読み取り動作等の本開示の１つ又は複数の実施形態によると、データ完全性は、その数のデータのセクタに対して提供できる。すなわち、データ完全性は、その数のセクタが、例えば、ＥＣＣエンジン／メモリＩ／Ｆ２２２における等の、ソリッドステートメモリデバイス２３０からコントローラ２０１のバックエンド２０６によって受信される点から、その数のセクタが、例えば、フロントエンド２０４からホストシステム２０２へ等の、ホストインタフェース２１０上で転送される点までのその数のデータのセクタに対して提供できる。データ完全性を提供することは、ソリッドステートメモリデバイス２３０からホストインタフェース１０まで同じＣＲＣデータを維持することを含むことができる。
【００３１】
図３は、本開示の１つ又は複数の実施形態によるメモリコントローラ３０１を含むシステム３００の機能ブロック図である。コントローラ３０１は、図１に示されるコントローラ１０１に類似する可能性がある。１つ又は複数の実施形態では、コントローラ３０１は、ＳＳＳＤ等のメモリシステムの構成要素とすることができる。図３に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解をさらに容易にするために図３のコントローラの詳細が少なくされていることが、当業者によって理解されるであろう。
【００３２】
図３に示される実施形態は、例えば、ＣＲＣエンジン３１２等の、フロントエンドエラー検出回路、及び、例えば、ＤＭＡモジュール３１４等の、データ転送回路だけではなく物理層３０５、、リンク層３０７、及びトランスポート層３０９を備えるホストインタフェース３１０を含む図２に示される構成要素に類似する可能性がある構成要素を含む。しかしながら、１つ又は複数の実施形態では、ホストインタフェース３１０は、図示されているＦＩＦＯ３２４等、フロントエンドホストバッファ３２４、及び高度暗号化規格（ＡＥＳ）エンジン３２６等、暗号化回路を介してＤＭＡモジュールに結合できる。「ＡＥＳエンジン」３２６として示されているが、他の形の暗号化が、本開示の１つ又は複数の実施形態とともに使用されてよい。ＦＩＦＯ３２４は、ホストインタフェース３１０とＡＥＳエンジン３２６の間のＤＭＡペイロードをバッファリングするように構成できる。図３には示されていないが、ＡＥＳエンジン３２６は、ＦＩＦＯ３２４と分離したＡＥＳバッファを含むことができる、又はＦＩＦＯ３２４と分離したＡＥＳバッファに結合できる。
【００３３】
図３に示されるように、ＡＥＳエンジン３２６は、ある数のデータのセクタ、例えばコントローラ３０１によって受信されるある数のデータパケットから引き出されるデータストリーム等のデータペイロード（ＤＭＡ）ペイロードを受信するように構成されてもよい。暗号化の前、その数のデータのセクタはプレーンテキスト（Ｐ．Ｔ．）である可能性がある。ＡＥＳエンジン３２６は、暗号文（Ｃ．Ｔ．）等、暗号化された出力をＤＭＡモジュール１４に提供するために任意選択でその数のデータのセクタを処理するように配置及び構成されてもよい。１つ又は複数の実施形態では、ＡＥＳエンジン３２６は、任意選択でその数のデータのセクタを処理することができ、ＡＥＳエンジンがプレーンテキストから暗号文にその数のデータのセクタを暗号化できる、又はＡＥＳエンジン３２６が、暗号化せずに、例えばプレーンテキストで、その数のデータのセクタをＤＭＡモジュール３１４に転送できることを意味する。
【００３４】
１つ又は複数の実施形態では、ホストインタフェース３１０を介してホストシステムから受信されるある数のデータのセクタは、フロントエンドＣＲＣエンジン３１２、及び図示されているようなＦＩＦＯ３２４等、フロントエンドホストバッファ３２４から並行して受信できる。その数のデータのセクタはホストバッファ３２４から、その数のデータのセクタをプレーンテキストから暗号文に暗号化できるＡＥＳエンジン３２６に転送することができる。暗号化後、その数のデータのセクタは、さらなる処理のためにＡＥＳエンジン３２６からＤＭＡモジュール３１４に転送できる。暗号化エンジンの動作の追加の例は、少なくとも一人の共通発明者を有する、「Parallel Encryption/Decryption」と題する、同一出願人による米国特許出願番号第１２／３３３，８２２号にさらに詳細に説明されている。
【００３５】
ＤＭＡモジュール３１４は、フロントエンド３０４回路をバックエンド３０６回路に効果的に結合する。１つ又は複数の実施形態では、コントローラ３０１のバックエンド部３０６は、２つ以上のバックエンドチャネルを含むことができる。図３に示される実施形態では、コントローラ３０１はある数のバックエンドチャネル３１９−１、．．．、３１９−Ｎを含む。各バックエンドチャネル３１９−１、．．．、３１９−Ｎは、チャネルプロセッサ、３３２−１、．．．、３３２−Ｎ、及びチャネルメモリ、３３４−１、…３３４−Ｎを含むことができる。バックエンドチャネルプロセッサ３３２−１、…、３３２−Ｎ及びメモリ３３４−１、．．．、３３４−Ｎは、ＤＭＡモジュール３１４に、及びバックエンドチャネルＤＭＡモジュール３２８−１、．．．、３２８−Ｎに結合できる。各バックエンドチャネル３１９−１、．．．、３１９−Ｎは、ＤＭＡモジュール３１４に結合できるチャネルＤＭＡモジュール３２８−１等、バックエンドチャネルデータ転送回路を含むことができる。ＤＭＡモジュール３１４は、ＤＭＡペイロードに関連するコマンドを、バックエンドチャネルプロセッサ３３２−１等、各バックエンドチャネルプロセッサに向け、ＤＭＡペイロードに関連するデータを、バックエンドチャネルＤＭＡモジュール３２８−１等、各バックエンドチャネルＤＭＡモジュールに向けるように構成できる。チャネルプロセッサの例示的な動作は、少なくとも一人の共通発明者を有する、「Modifying Commands」と題する、同一出願人による米国特許出願番号第１２／３５１，２０６号にさらに詳細に説明されている。
【００３６】
コントローラ３０１のバックエンド部は、図２に示される構成要素に類似した構成要素を含むことができる。例えば、各バックエンドチャネル３１９−１、．．．、３１９−Ｎは、バックエンドデータバッファ３１８−１、．．．、３１８−Ｎ、例えばＣＲＣメモリ３１６−１、．．．、３１６−Ｎ等の、バックエンドエラー検出メモリ、及びＥＣＣエンジン／メモリインタフェース３２２−１、．．．、３２２−Ｎを含むことができる。１つ又は複数の実施形態で、及び図３の実施形態に示されるように、ＥＣＣエンジン及びメモリインタフェースは、例えば、「ＥＣＣエンジン／メモリＩ／Ｆ」３２２等の、１つの構成要素としてともに結合できる。１つ又は複数の実施形態では、ＥＣＣエンジン及びメモリインタフェースは別々の構成要素とすることができる。図３に示されるように、バックエンドデータバッファ３１８−１、．．．、３１８−Ｎは、バックエンドチャネルＤＭＡモジュール３２８−１、．．．、３２８−Ｎと、ＥＣＣエンジン／メモリインタフェース３２２−１、．．．、３２２−Ｎとの間に結合できる。さらに、バックエンドＣＲＣメモリ３１６−１、．．．、３１６−Ｎは、ＤＭＡモジュール３１４とＥＣＣエンジン／メモリインタフェース３２２−１、．．．、３２２−Ｎとの間に結合できる。図３に示されるように、特定のメモリデバイス、チップ、アレイ等は、特定のチャネルに対応することができる。例えば、ソリッドステートメモリデバイス（複数の場合がある）３３０−１は、チャネル３１９−１に対応することができる。
【００３７】
図４は、本開示の１つ又は複数の実施形態によるメモリコントローラ４０１を含むシステム４００の機能ブロック図である。コントローラ４０１は、図１に示されるコントローラ１０１に類似している可能性がある。１つ又は複数の実施形態では、コントローラ４０１は、ＳＳＤ等のメモリシステムの構成要素である場合がある。図４に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解をさらに容易にするために図４のコントローラ４０１の詳細が少なくされていることが、当業者によって理解される。
【００３８】
図４に示される実施形態は、例えばＣＲＣエンジン４１２−Ｆ等の、フロントエンドエラー検出回路、及び例えばＤＭＡモジュール４１４等の、データ転送回路だけではなく、物理層４０５、リンク層４０７、及びトランスポート層４０９を含むホストインタフェース４１０等のコントローラ４０１のフロントエンド４０４構成要素を含む図３に示される構成要素に類似する可能性がある構成要素を含む。また、コントローラ４０１は、バックエンドチャネルプロセッサ４３２−１、．．．、４３２−Ｎ及びメモリ４３４−１、．．．、４３４−Ｎ、例えばチャネルＤＭＡモジュール４２８−１、．．．、４２８−Ｎ等の、バックエンドチャネルデータ転送回路、バックエンドデータバッファ４１８−１、．．．、４１８−Ｎ、例えばＥＣＣエンジン／メモリインタフェース４２２−１、．．．、４２２−Ｎ等の、エラー検出回路、並びに例えばＣＲＣメモリ４１６−１、．．．、４１６−Ｎ等の、バックエンドエラー検出メモリを含む、バックエンドチャネル４１９−１、．．．、４１９Ｎ等の図３に示される構成要素に類似する可能性がある、ある数のバックエンド４０６構成要素も含む。１つ又は複数の実施形態で、及び図４に示されるように、ＥＣＣエンジン及びメモリインタフェースは、例えば、「ＥＣＣエンジン／メモリＩ／Ｆ  」４２２等、１つの構成要素としてともに結合できる。１つ又は複数の実施形態では、ＥＣＣエンジン及びメモリインタフェースは別々の構成要素とすることができる。図４に示されるように、各チャネル４１９−１、．．．、４１９−Ｎは、ＥＣＣエンジン／メモリインタフェース４２２−１、．．．、４２２−Ｎによって１つ又は複数のソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに結合できる。
【００３９】
しかしながら、１つ又は複数の実施形態では、バックエンドチャネル４１９−１、．．．、４１９−Ｎは、バックエンドＣＲＣメモリ４１６−１、．．．、４１６−Ｎに結合される、例えばバックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮ等の、バックエンドエラー検出回路を含むことができる。バックエンドＣＲＣエンジン４１２-Ｂ１、．．．、４１２−ＢＮは、例えばデータの対応するセクタ等の、対応するデータに対して、例えば「第２の」ＣＲＣデータ等の、エラー検出データを計算するように構成できる。１つ又は複数の実施形態では、この対応するデータは、ＤＭＡペイロードの少なくとも一部分である場合がある。フロントエンドＣＲＣエンジン４１２−Ｆは、データのセクタに対して「第１の」ＣＲＣデータを計算できる。バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮは、データのセクタの完全性をチェックし、且つ／又は検証するために第１のＣＲＣデータを第２のＣＲＣデータと比較するように構成できる。例えば、ＤＭＡモジュール４１４は、フロントエンドＣＲＣエンジン４１２−Ｆに、及びバックエンドＣＲＣメモリ４１６−１、．．．、４１６−Ｎに結合できる。ＤＭＡモジュール４１４は、第１のＣＲＣデータを、バックエンドＣＲＣメモリ４１６−１、．．．、４１６−Ｎに転送するように構成できる。次に、バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮは、バックエンドＣＲＣメモリ４１６−１、．．．、４１６−Ｎから受信される第１のＣＲＣデータを、計算された第２のＣＲＣデータと比較できる。バンクエンドＣＲＣエンジン４１２-Ｂ１、．．．、４１２−ＢＮは、複数のバックエンドチャネル４１９−１、．．．、４１９−Ｎを含むコントローラ４０１を示す図４に関して開示されているが、実施形態はそのように制限されていない。例えば、本開示の１つ又は複数の実施形態は、バックエンドＣＲＣエンジンを含む、例えば図２のバックエンド２０６に関して示されるような、単一のバックエンドチャネル付きのメモリコントローラを含むことができる。
【００４０】
バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮは、ＥＣＣエンジン／メモリインタフェース４２２−１、．．．、４２２−Ｎに結合できる。１つ又は複数の実施形態では、バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮは、ＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−Ｎに直接結合できる。ＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−ＮのＥＣＣエンジン部は、例えばバックエンドデータバッファ４１８−１、．．．、４１８−Ｎから受信されるＤＭＡペイロードの一部等の、データのセクタに対して、ＥＣＣデータを計算するように構成できる。１つ又は複数の実施形態では、コントローラ４０１は、第１の又は第２の対応するＣＲＣデータなしに、ＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−Ｎ上でデータのセクタ及び対応するＥＣＣデータを転送するように構成できる。すなわち、１つ又は複数の実施形態では、データのセクタ及び対応するＥＣＣデータは、ソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに対応するＣＲＣデータを記憶することなく、ソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに記憶できる。１つ又は複数の実施形態では、コントローラ４０１は、バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮがデータのセクタの完全性を検証するときに、ソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎ内の場所に対応するＣＲＣデータなしで、データのセクタ及び対応するＥＣＣデータを記憶するように構成できる。すなわち、バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮが、データのセクタの完全性を検証しない場合、次にコントローラ４０１は、１つ又は複数の実施形態でソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎにデータのセクタを記憶しないことがある。
【００４１】
１つ又は複数の実施形態は、書き込み動作と連動して等、ホストインタフェース４１０のリンク層４０７及び／又はトランスポート層４０９から、フロントエンドＣＲＣエンジン４１２−Ｆを用いてある数のデータのセクタを受信することを含むことができる。フロントエンドＣＲＣエンジン４１２−Ｆは、データの各セクタごとに第１のＣＲＣデータを計算するように構成できる。したがって、書き込み動作の場合、ＣＲＣデータが、その数のデータのセクタに対する他の動作の実行の前に、又はその数のデータのセクタに対する他の動作の実行とは別にその数のデータのセクタに対して計算されるために、その数のデータのセクタのデータ完全性は、少なくとも部分的にコントローラ４０１のフロントエンド４０４で維持できる。第１のＣＲＣデータは、ＤＭＡモジュール４１４に転送できる。
【００４２】
ＤＭＡモジュール４１４は、バックエンドチャネルＤＭＡモジュール４２８−１、．．．、４２８−Ｎにデータのセクタ数を転送できる。１つ又は複数の実施形態では、ＤＭＡモジュール４１４は、例えば、メモリアドレスに対応するソリッドステートメモリデバイスに結合されるチャネル等の、その数のデータのセクタに関連付けられたメモリアドレスに対応するバックエンドチャネル４１９−１、．．．、４１９−Ｎにその数のデータのセクタを転送できる。例えば、その数のデータのセクタに関連付けられたメモリアドレスが、例えば４３０−１等の、特定のソリッドステートメモリデバイスに対応するとき、ＤＭＡモジュールは、チャネル４１９−１上のバックエンドチャネルＤＭＡモジュール４２８−１に、その数のデータのセクタを転送できる。その数のデータのセクタは、バックエンドチャネルＤＭＡモジュール４２８−１、．．．、４２８−Ｎからバックエンドデータバッファ４１８−１、．．．、４１８−Ｎに転送できる。バックエンドデータバッファ４１８−１、．．．、４１８−Ｎは、その数のデータのセクタが、ＥＣＣエンジン／メモリインタフェース４２２−１、．．．、４２２−Ｎ、及び／又はバックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮに転送される前に、書き込み動作中に、バックエンドチャネルＤＭＡモジュール４２８−１、…、４２８−Ｎから受信されたデータのセクタをバッファリングできる。１つ又は複数の実施形態では、その数のデータのセクタは、バックエンドデータバッファ４１８−１、．．．、４１８−ＮからバックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮ、及びＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−Ｎに並行して転送できる。
【００４３】
ＤＭＡモジュール４１４は、バックエンドＣＲＣメモリ４１６−１、．．．、４１６−Ｎに第１のＣＲＣデータを転送できる。１つ又は複数の実施形態では、ＤＭＡモジュール４１４は、第１のＣＲＣデータを、第１のＣＲＣデータが計算されるデータのセクタと関連付けられたメモリアドレスに対応するバックエンドチャネルに転送できる。第１のＣＲＣデータは、バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮが第２のＣＲＣデータを計算する前に、バックエンドＣＲＣメモリ４１６−１、．．．、４１６−Ｎに記憶できる。バックエンドＣＲＣエンジン４１２−Ｂ１、，，，、４１２−ＢＮは、データのセクタに対して第２のＣＲＣデータを計算し、第１のＣＲＣデータを第２のＣＲＣデータと比較できる。比較に続き、データのセクタは、１つ又は複数のソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに記憶できる。１つ又は複数の実施形態では、ＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−ＮのＥＣＣエンジン部分は、第１のＣＲＣデータの第２のＣＲＣデータとの比較の後であるが、データのセクタがソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに記憶される前に、データのセクタに対してＥＣＣデータを計算できる。ＥＣＣデータは、それがソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに記憶される前にデータのセクタにアペンドでき、したがってデータのセクタ及びＥＣＣデータは記憶されるが、第１のＣＲＣデータも第２のＣＲＣデータもソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに記憶されない。かかる実施形態は、例えば、ＣＲＣデータがその中に記憶されないとき等、少なくとも部分的にはソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎ内に記憶されている情報の量の削減のため、有利であることがある。
【００４４】
１つ又は複数の実施形態では、例えば、第１のＣＲＣデータが第２のＣＲＣデータに一致する場合等、バックエンドＣＲＣエンジン４１２−Ｂ１，．．．、４１２−ＢＮがその数のデータのセクタの完全性を検証する場合、その数のデータのセクタは、ＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２０Ｎからソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎに転送されるに過ぎない。したがって、書き込み動作の場合、少なくとも部分的には、第２のＣＲＣデータが、ＤＭＡモジュール４１４及びバックエンドチャネルＤＭＡモジュール４２８−１、．．．、４２８−Ｎによる処理後に、その数のデータのセクタに対して計算され、その数のデータのセクタに対する他の動作の実行の前に、又はその数のデータのセクタに対する他の動作の実行とは別に計算された第１のＣＲＣデータに比較されるために、その数のデータのセクタのデータ完全性は、コントローラ４０１のバックエンド４０６で維持できる。
【００４５】
１つ又は複数のメモリシステム動作の実施形態は、１つ又は複数のソリッドステートメモリデバイス４３０−１、．．．、４３０−Ｎから、ある数のデータのセクタ及び対応するＥＣＣデータを読み取ることを含む、読み取り動作を含む。その数のデータのセクタは、ＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−ＮのＥＣＣエンジン部でエラーチェックできる。ＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−ＮのＥＣＣエンジン部でエラーチェック後、ＥＣＣデータはその数のデータのセクタから削除できる。バックエンドＣＲＣエンジン４１２−Ｂ１、．．．、４１２−ＢＮは、その数のデータのセクタのそれぞれに対してＣＲＣデータを計算できる。その数のデータのセクタ及びＣＲＣデータは、例えば、それぞれホストバッファ４２４及びＤＭＡモジュール４１４からフロントエンドＣＲＣエンジン４１２−Ｆへ等、並行して転送できる。フロントエンドＣＲＣエンジン４１２−Ｆは、その数のデータのセクタの完全性をチェックするために、その数のデータのセクタのそれぞれに対してＣＲＣデータを計算し、それを、バックエンドＣＲＣエンジンによって計算されるＣＲＣデータと比較できる。その数のデータのセクタは、比較後に、ホストインタフェース４１０のトランスポート層４０９上で転送できる。
【００４６】
したがって、読み取り動作の場合、ある数のデータのセクタのデータ完全性は、少なくとも部分的には、その数のデータのセクタがＥＣＣエンジン／メモリＩ／Ｆ４２２−１、．．．、４２２−Ｎに転送された後に、その数のデータのセクタのそれぞれに対してＣＲＣデータを計算するため、コントローラ４０１のバックエンド４０６からフロントエンド４０４に維持できる。さらに、データの特定のセクタに対する、新規に計算されたＣＲＣデータとの比較のために、コントローラ４０１のフロントエンド４０４に以前に計算されたＣＲＣデータを転送することは、データの特定のセクタの完全性が維持されていることを検証するのに役立つ可能性がある。したがって、本開示の１つ又は複数の実施形態は、コントローラ４０１でのその数のデータのセクタにデータ完全性を与えることができる。
（結論）
【００４７】
本開示は、メモリコントローラ内のデータ完全性のための方法、装置、及びシステムを含む。１つのメモリコントローラ実施形態は、ホストインタフェース、及びホストインタフェースに結合される第１のエラー検出回路を含む。メモリコントローラは、メモリインタフェース、及びメモリインタフェースに結合される第２のエラー検出回路を含むことができる。第１のエラー検出回路は、ホストインタフェースから受信されるデータに対してエラー検出データを計算し、ホストインタフェースに伝送されるデータの完全性をチェックするように構成できる。第２のエラー検出回路は、メモリインタフェースに送信されるデータ及び第１のエラー訂正データに対してエラー訂正データを計算し、メモリインタフェースから受信されるデータ及び第１のエラー訂正データの完全性をチェックするように構成できる。
【００４８】
ある要素が、別の要素「の上にある」、「に接続される」、又は「と結合される」と参照されるとき、その要素は直接的に他の要素の上にある、直接的に他の要素に接続される、又は直接的に他の要素と結合されるか、もしくは介入する要素が存在することがあると理解される。対照的に、ある要素が、別の要素「の上に直接的にある」、「に直接的に接続される」又は「と直接的に結合される」と参照されるとき、介入する要素又は層は存在しない。本明細書に使用される場合、用語「及び／又は」は、関連付けられた一覧される品目の１つ又は複数のありとあらゆる組み合わせを含む。
【００４９】
第１の、第２の等の用語は、多様な要素を説明するために本明細書中で使用されてよく、これらの要素はこれらの用語によって制限されるべきではないことが理解される。これらの用語はある要素を別の要素から区別するためにだけ使用される。したがって、第１の要素は、本開示の教示から逸脱することなく、第２の要素と称することができる可能性がある。
【００５０】
特定の実施形態が、本明細書に図解され、説明されてきたが、当業者は、同じ結果を達成するために計算された構成が、示されている特定の実施形態に代わることができることを理解するだろう。この開示は、本開示の１つ又は複数の実施形態の改作物又は変形物を網羅することを目的とする。前記説明が、制限的ではなく、例示的に行われたことが理解されるべきである。上記実施形態、及び本書に特に説明されていない他の実施形態の組み合わせは、前記説明を検討すれば当業者に明らかであろう。本開示の１つ又は複数の実施形態の範囲は、前記構造及び方法が使用される他の応用例も含む。したがって、本開示の１つ又は複数の実施形態の範囲は、添付特許請求の範囲、並びにかかる特許請求の範囲が認められている同等物の全範囲を参照して決定されるべきである。
【００５１】
前述の発明を実施するための形態では、開示を合理化する目的でいくつかの特長がグループ化されて単一の実施形態にまとめられている。この開示方法は、本開示の開示された実施形態が、各請求項に明示的に記載されるより多くの特長を使用しなければならないという意図を反映するとして解釈されてはならない。むしろ、以下の特許請求の範囲が反映するように、発明の内容は、単一の開示された実施形態の全ての特長よりも少ない状態にある。したがって、以下の特許請求の範囲は、これによって発明を実施するための形態に組み込まれ、各請求項はそれ自体別個の実施形態となる。
【図１】
0005776107.tif 000002
【図２】
0005776107.tif 000003
【図３】
0005776107.tif 000004
【図４】
0005776107.tif 000005