特許第5776107号(P5776107)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ラウンド ロック リサーチ、エルエルシーの特許一覧

特許5776107メモリコントローラ及び方法におけるデータ完全性
<>
  • 特許5776107-メモリコントローラ及び方法におけるデータ完全性 図000002
  • 特許5776107-メモリコントローラ及び方法におけるデータ完全性 図000003
  • 特許5776107-メモリコントローラ及び方法におけるデータ完全性 図000004
  • 特許5776107-メモリコントローラ及び方法におけるデータ完全性 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5776107
(24)【登録日】2015年7月17日
(45)【発行日】2015年9月9日
(54)【発明の名称】メモリコントローラ及び方法におけるデータ完全性
(51)【国際特許分類】
   G06F 12/16 20060101AFI20150820BHJP
   G06F 11/10 20060101ALI20150820BHJP
【FI】
   G06F12/16 320A
   G06F11/10 330K
【請求項の数】14
【全頁数】22
(21)【出願番号】特願2011-550132(P2011-550132)
(86)(22)【出願日】2010年2月12日
(65)【公表番号】特表2012-518224(P2012-518224A)
(43)【公表日】2012年8月9日
(86)【国際出願番号】US2010000412
(87)【国際公開番号】WO2010096153
(87)【国際公開日】20100826
【審査請求日】2011年9月2日
(31)【優先権主張番号】12/388,305
(32)【優先日】2009年2月18日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】510127664
【氏名又は名称】ラウンド ロック リサーチ、エルエルシー
(74)【代理人】
【識別番号】100106851
【弁理士】
【氏名又は名称】野村 泰久
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】アスナアシャリ,メディー
(72)【発明者】
【氏名】ヤマダ,ロナルド
(72)【発明者】
【氏名】ネマジー,シアマック
(72)【発明者】
【氏名】ヤン,レイ
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 特開2008−165808(JP,A)
【文献】 米国特許出願公開第2008/0163033(US,A1)
【文献】 特開2007−207376(JP,A)
【文献】 特開2008−299855(JP,A)
【文献】 米国特許出願公開第2009/0024902(US,A1)
【文献】 米国特許出願公開第2007/0028140(US,A1)
【文献】 特開2007−034829(JP,A)
【文献】 特開2010−086120(JP,A)
【文献】 特開2005−093038(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/16
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
ホストインタフェースと、
前記ホストインタフェースに結合される第1のエラー検出回路と、
メモリインタフェースと、
前記メモリインタフェースに結合されるエラー訂正コード(ECC)エンジンと、
前記ECCエンジンに結合される第2のエラー検出回路と、
を備えるメモリコントローラであって、
前記第1のエラー検出回路が、
前記ホストインタフェースから受信されるデータに対して第1のエラー検出データを計算し、
前記ホストインタフェースに送信されるデータの完全性をチェックするように構成され、
前記ECCエンジンが、
前記メモリインタフェースに送信されるデータ及び前記第1のエラー検出データに対して、エラー訂正データを計算し、
前記メモリインタフェースから受信されるデータ及び前記第1のエラー検出データの完全性をチェックするように構成され、
前記第2のエラー検出回路は、
前記メモリインタフェースに送信されるためにデータに対して第2のエラー検出データを計算し、
前記メモリインタフェースに送信されるために前記データの完全性をチェックするために、前記第2のエラー検出データを、前記第1のエラー検出データと比較するように構成される、メモリコントローラ。
【請求項2】
前記メモリコントローラが、前記ホストインタフェースから受信される前記データ及び前記エラー訂正データを、前記メモリインタフェース上で転送するように構成される、請求項1に記載のメモリコントローラ。
【請求項3】
前記第1のエラー検出回路が、データの受信されたセクタごとにエラー検出データを計算するように構成される、請求項2に記載のメモリコントローラ。
【請求項4】
前記ホストインタフェースから受信される前記データが、ある数のデータのセクタを含むデータペイロードを含み、
前記ホストインタフェースから受信される前記データがストリーミングデータを含む、請求項3に記載のメモリコントローラ。
【請求項5】
前記第1のエラー検出回路が、リンク層及び/又はトランスポート層によって前記ホストインタフェースに結合されるサイクリックリダンダンシーチェック(CRC)エンジンを備える、
請求項1に記載のメモリコントローラ。
【請求項6】
前記メモリコントローラが、
前記ホストインタフェース、並びに前記第1のエラー検出回路及び前記第2のエラー検出回路に結合されるデータ転送回路と、
前記データ転送回路に結合されるエラー検出メモリと、
を含み、
前記エラー検出メモリが、前記第1のエラー検出データを記憶するように構成される、
請求項1に記載のメモリコントローラ。
【請求項7】
前記メモリコントローラが、
前記データ転送回路、及び前記第2のエラー検出回路に結合されるデータバッファを含み、
前記データバッファが、前記第2のエラー検出回路のためにデータをバッファリングするように構成される、
請求項6に記載のメモリコントローラ。
【請求項8】
前記ECCエンジンが、前記メモリインタフェースから受信される前記データの1つ又は複数のエラーを訂正するように構成される、請求項1に記載のメモリコントローラ。
【請求項9】
前記メモリコントローラが、
前記メモリインタフェース、並びに前記第1のエラー検出回路及び前記第2のエラー検出回路に結合されるデータ転送回路を含み、
前記データ転送回路が、前記第2のエラー検出回路に、前記データ及び前記第1のエラー検出データを転送するように構成される、
請求項1に記載のメモリコントローラ。
【請求項10】
前記第2のエラー検出回路が、
前記データ転送回路から受信される前記データに対してエラー検出データを計算し、
前記データ転送回路から受信される前記データに対して前記計算されたエラー検出データを、前記データ転送回路から受信され対応するエラー検出データと比較するように構成される、
請求項9に記載のメモリコントローラ。
【請求項11】
前記メモリコントローラが、
2つ以上のチャネルと、
前記データ転送回路に結合されるチャネルデータ転送回路と、
前記チャネルデータ転送回路及び前記第2のエラー検出回路に結合されるデータバッファと、
前記メモリインタフェースに結合されるエラー検出メモリと、
を含む、請求項9に記載のメモリコントローラ。
【請求項12】
前記メモリコントローラが、
2つ以上のチャネルと、
チャネルプロセッサ及びチャネルメモリと、
を含む、請求項9に記載のメモリコントローラ。
【請求項13】
前記メモリコントローラが、
前記ホストインタフェースに結合されるホストバッファと、
前記ホストバッファに結合される暗号化回路と、
を含み、
前記暗号化回路が、暗号化された出力を提供するために任意選択で前記データを処理するように構成される、
請求項1に記載のメモリコントローラ。
【請求項14】
前記暗号化回路が、高度暗号化規格(AES)エンジンを備える、請求項13に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して半導体メモリデバイス、方法、およびシステムに関し、より詳細にはデータ完全性に関する。
【背景技術】
【0002】
メモリデバイスは、通常、コンピュータ又は他の電子装置内に、内部回路、半導体回路、集積回路として提供される。揮発性メモリ及び不揮発メモリを含む多くの異なるタイプのメモリがある。揮発性メモリは、そのデータを維持するために電力を必要とする可能性があり、数ある中でも、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び同期ダイナミックランダムアクセスメモリ(SDRAM)を含むことができる。不揮発性メモリは、電力が供給されないときに記憶されている情報を保持することによって永続データを提供することができ、数ある中でも、NANDフラッシュメモリ、NORフラッシュメモリ、読み取り専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、消去可能プログラマブルROM(EPROM)、及び相変化ランダムアクセスメモリ(PCRAM)を含むことができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
メモリデバイスは、ソリッドステートドライブ(SSD)を形成するために互いに組み合わせることができる。SSDは、NANDフラッシュメモリ及びNORフラッシュメモリ等の不揮発性メモリを含むことができ、且つ/又は、多様な他のタイプの不揮発性メモリ及び揮発性メモリの中でも、例えば、DRAM及びSRAM等の揮発性メモリを含むことができる。
【課題を解決するための手段】
【0004】
SSDは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費の点でハードドライブに優る利点を有することができるので、コンピュータ用のメインストレージデバイスとしてハードディスクドライブを置き換えるために使用することができる。例えば、SSDは、可動部品が存在しないために、磁気ディスクドライブと比較して優れた性能を有する可能性があり、これにより磁気ディスクドライブに関連するシークタイム、待ち時間、及び他の電子機械遅延を回避できる。SSD製造メーカは不揮発性フラッシュメモリを使用して、内部バッテリ電源を使用せず、したがってドライブをより万能でコンパクトにすることができるフラッシュSSDを作成できる。
【0005】
SSDは、1つ又は複数のメモリチップ等の1つ又は複数のメモリデバイスを含むことができる。当業者が理解するように、メモリチップは、1つ又は複数のダイを含むことができる。各ダイは、1つ又は複数のメモリアレイ及びその上に周辺回路を含むことができる。メモリアレイは1つ又は複数のプレーンを含む可能性があり、各プレーンは、メモリセルの1つ又は複数の物理ブロックを含む。各物理ブロックは、データの1つ又は複数のセクタを記憶できる1つ又は複数のページのメモリセルを含むことができる。
【0006】
SSDは、特にユニバーサルシリアルバス(USB)、シリアルアドバンストテクノロジーアタッチメント(SATA)、又はペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)等のシリアルインタフェースでホストシステムとインタフェース接続することができる。USB、SATA、及びPCIe等のシリアルインタフェースは、それぞれのインタフェースのアーキテクチャのリンク層又はトランスポート層に内蔵されるサイクリックリダンダンシーチェック(CRC)等のエラー検出機構を有することがある。CRCは、送信機から受信機へのデータの伝送中にノイズ又は他の障害によって引き起こされるエラーの存在を検出する能力を含んでもよい。CRCのデータ生成は、特定のインタフェースによってサポートされるフレーム構造に基づくことがある。
【0007】
例えば、SATAフレーム構造は、フレームの開始(SOF)の後に、フレーム情報構造(FIS)、その後にCRCデータ、その後にフレームの終わり(EOF)を含むことがある。SATAは、FISのコンテンツにわたって計算されるCRCデータの32ビットを使用してもよい。CRCデータの計算で使用される32ビットのCRC多項式の一例は以下の通りである。すなわち、X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1である。FISが奇数のワード、例えば、16のビットセグメントを含む場合、完全なダブルワード(dword)、例えば32ビットを形成するために、FISの最後のワードはゼロで当て物をされることがある。SATAフレームは、FIS及びCRCデータを含む2064のdwordsを含むことがあり、FISのペイロードは2048のdwords(8192バイト)を含むことがある。ただし、ペイロードはより少ないデータを含むことがある。
【0008】
当業者が理解するように、論理ブロックアドレッシングは、ホストが、情報のセクタを識別するために使用できる方式である。例えば、各セクタは、一意の論理ブロックアドレス(LBA)に相当することができる。セクタは、記憶量の最小アドレッシング可能部分であってよい。一例として、データのセクタは、例えば512バイト等のデータのある数のバイトである場合がある。例えばSATAインタフェース等のシリアルホストインタフェースでの各ペイロードは必ずしも同数のバイトを含まないため、及び大量記憶装置のシリアルホストインタフェースでのペイロードは異なる単位である場合があるため、CRCデータは、ホストインタフェース、例えばホストインタフェースのリンク層又はトランスポート層を越えて伝搬することはできないことがある。
【図面の簡単な説明】
【0009】
図1】本開示の1つ又は複数の実施形態によるメモリシステムを含むコンピュータシステムの機能ブロック図である。
図2】本開示の1つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。
図3】本開示の1つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。
図4】本開示の1つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。
【発明を実施するための形態】
【0010】
本開示は、メモリコントローラ内のデータ完全性のための方法、装置及びシステムを含む。1つのメモリコントローラ実施態様は、ホストインタフェース、及びそのホストインタフェースに結合される第1のエラー検出回路を含む。メモリコントローラは、メモリインタフェース、及びそのメモリインタフェースに結合される第2のエラー検出回路を含むことができる。第1のエラー検出回路は、ホストインタフェースから受信されるデータに対してエラー検出データを計算し、ホストインタフェースに送信されるデータの完全性をチェックするように構成することができる。第2のエラー検出回路は、メモリインタフェースに送信されるデータ及び第1エラー訂正データに対してエラー訂正データを計算し、メモリインタフェースから受信されるデータ及び第1のエラー訂正データの完全性をチェックするように構成することができる。
【0011】
本開示の以下の発明を実施するための形態では、本明細書の一部を形成し、本開示の1つ又は複数の実施形態がどのように実践されることがあるのかが例示によって示される添付図面が参照される。これらの実施形態は、当業者が本開示の実施形態を実践できるようにするほど十分に詳細に説明され、他の実施形態が活用されてよいこと、及びプロセス変更、電気的な変更、及び構造上の変更が本開示の範囲から逸脱することなく行われてよいことを理解される。本明細書に使用される場合、特に図面中の参照数字に関して指示詞Nは、このように指示される特定の特長の数が本開示の1つ又は複数の実施形態に含まれることができることを示す。指示詞は、同数又は異なる数の特定の特長を表すことができる。
【0012】
本明細書の図は、1つ又は複数の最初の桁が図面の図面番号に相当し、残りの桁が図面中の要素又は構成要素を識別する番号付け方式に従う。異なる図の間の類似する要素又は構成要素は、類似する数字を使用することによって識別されることがある。例えば、110は図1の要素「10」を参照し、類似する要素は図2では210として参照されてもよい。理解されるように、本明細書の多様な実施形態に示される要素は、本開示の多くの追加の実施形態を提供するように追加、交換、及び/又は排除できる。さらに、理解されるように、図中に提供される要素の割合及び相対的な尺度は、本開示の実施形態を示すことを目的としており、制限的な意味で解釈されるべきではない。
【0013】
図1は、本開示の1つ又は複数の実施形態によるメモリシステム120を含むコンピューティングシステム100の機能ブロック図である。図1に示される実施形態では、例えば、ソリッドステートドライブ(SSD)等のメモリシステム120が、メモリコントローラ101、物理インタフェース103、及び、例えばNANDフラッシュデバイス等の1つ又は複数のソリッドステートメモリデバイス130−1、…、130−Nを含むことができる。図1に示されるように、メモリコントローラ101は、物理インタフェース103に、及びソリッドステートメモリデバイス130−1、...、130−Nに結合できる。
【0014】
物理インタフェース103は、メモリシステム120と、ホストシステム102等の別の装置の間で情報を通信するために使用できる。ホストシステム102は、プロセッサ等、メモリアクセスデバイスを含むことができる。当業者は、「プロセッサ」が、並列処理システム、多くのコプロセッサ等の1台又は複数台のプロセッサを意図する可能性があることを理解するだろう。ホストシステムの例は、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル記録装置及び再生装置、携帯電話、PDA、メモリカードリーダ、インタフェースハブ等を含む。1つ又は複数の実施形態の場合、物理インタフェース103は、標準化された物理インタフェースの形をとることができる。例えば、メモリシステム120が、コンピューティングシステム100でのデータ記憶に使用されるとき、物理インタフェース103は、他の物理インタフェースの中でも、シリアルアドバンストテクノロジーアタッチメント(SATA)、ペリフェラルコンポーネントインターコネクタエクスプレス(PCIe)、又はユニバーサルシリアルバス(USB)とすることができる。しかしながら、一般的には、物理インタフェース103は、図2のホストインタフェース210等、メモリシステム120のコントローラ101のホストインタフェースと、物理インタフェース103用に互換性のある受容器を有するホストシステム102の間で、コントロール、アドレス、データ、及び他の信号を渡すための物理的な接続を提供できる。
【0015】
メモリコントローラ101は、他の動作の中でも、データを読み取り、書き込み、消去するためにソリッドステートメモリデバイス130−1、...、130−Nと通信できる。メモリコントローラ101は、1つ又は複数の集積回路、及び/又は個別部品である場合がある回路を有することができる。1つ又は複数の実施形態の場合、メモリコントローラ101内の回路は、ソリッドステートメモリデバイス130−1、...、130−Nにわたってアクセスを制御するための制御回路、及びホストシステム102とメモリシステム120の間にトランスレーション層を提供するための回路を含んでよい。したがって、メモリコントローラは、適切なときに適切なI/O接続で適切な信号を受信するために、ソリッドステートメモリデバイス130−1、...、130−NのI/O接続(図1では不図示)を選択的に結合できる可能性がある。同様に、ホストシステム102とメモリシステム120の間の通信プロトコルは、ソリッドステートメモリデバイス130−1、...、130−Nのアクセスに必要とされるものとは異なることがある。その場合、メモリコントローラ101は、ホストから受信されたコマンドを適切なコマンドに変換し、ソリッドステートメモリデバイス130−1、...、130−Nへの所望されるアクセスを達成できる。
【0016】
図1の実施形態は、本開示の実施形態を分かりにくくしないように示されていない追加の回路を含むことができる。例えば、メモリシステム120は、I/O回路を通してI/O接続上で提供されるアドレス信号をラッチするためにアドレス回路を含むことができる。アドレス信号は、ソリッドステートメモリデバイス130−1、...、130−Nにアクセスするために、受信され、行デコーダ及び列デコーダによって復号できる。アドレス入力接続の数が、ソリッドステートメモリデバイス130−1、...、130−Nの密度及びアーキテクチャに依存する可能性があることが、当業者によって理解されるだろう。
【0017】
図2は、本開示の1つ又は複数の実施形態によるメモリコントローラ201を含むシステム200の機能ブロック図である。コントローラ201は、図1に示されるコントローラ101に類似する場合がある。1つ又は複数の実施形態では、コントローラ201は、SSD等のメモリシステムの構成要素である場合がある。図2に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解を容易にするために図2のコントローラの詳細が少なくされていることが、当業者によって理解されるであろう。
【0018】
図2に示されるように、メモリコントローラ201は、1つ又は複数のソリッドステートメモリデバイス230と結合できる。ソリッドステートメモリデバイス230は、図1に示されるソリッドステートメモリデバイス130−1、...、130−Nに類似するようにできる。コントローラ201は、フロントエンド部204及びバックエンド部206を含むことができる。メモリコントローラは、ダイレクトメモリアクセス(DMA)モジュール214等、ホストインタフェース210とデータ転送回路との間で結合される多くのフロントエンド構成要素を含むことができる。また、メモリコントローラは、DMAモジュール214と、エラー検出回路/メモリインタフェース(I/F)222のメモリインタフェース構成要素等、メモリインタフェースとの間で結合される多くのバックエンド構成要素も含むことができる。1つ又は複数の実施形態では、エラー検出回路/メモリI/F222のエラー検出回路構成要素を、エラー訂正コード(ECC)エンジンとすることができる。一般に、メモリコントローラ201は、図1のホストシステム102等、ホストシステム202から受信される、又はホストシステム202に転送されるコマンド及びデータを、フロントエンド204を用いて処理することができる。一般に、メモリコントローラ201は、他の動作の中でも、ソリッドステートメモリデバイス230上でデータを読み取り、書き込み、消去するために、バックエンド206を用いてソリッドステートメモリデバイス230との通信を管理できる。しかしながら、コマンド処理及びメモリ通信管理の特定の態様は、フロントエンド204とバックエンド206のどちらかで、又はフロントエンド204とバックエンド206の両方で、コントローラ201によって処理することができる。図2に示されるように、ホストインタフェース210及びDMAモジュール214を、フロントエンド構成要素とすることができる。
【0019】
図2に示されるように、フロントエンド部204は、図1のホストシステム102等、ホストシステム202に結合できるホストインタフェース210を含むことができる。ホストインタフェース210は、ホストシステムからデータを受信するように構成できる。ホストインタフェースから受信されるデータは、ある数のデータのセクタを含むデータペイロードである場合がある。1つ又は複数の実施形態では、ホストインタフェースから受信されるデータはストリーミングデータである場合がある。ホストインタフェース210は、物理層205、リンク層207、及びトランスポート層209を含む多くの層を通してホストシステム202とインタフェース接続することができる。当業者は、ある特定のホストインタフェースのための層の数を、SATA、PCIe、USB等のインタフェース規格によって定めることができることを理解するだろう。本明細書で使用される場合、トランスポート層は、SATA規格の一部としての少なくとも1つのトランスポート層、又はPCIe規格の一部としてのトランザクション層を示すことができる。当業者は、SATA規格によるトランスポート層が、PCIe規格によるトランザクション層に類似していることを理解するだろう。ホストインタフェース210は、ホストシステム202と通信するために、SSD等のメモリシステム上で、図1に示されている物理インタフェース103等の物理インタフェースに結合できる。かかる詳細は、図解を容易にするために図2には図示されていない。
【0020】
ホストインタフェース210は、DMAモジュール214と、サイクリックリダンダンシーチェック(CRC)エンジン212等のフロントエンドエラー検出回路と結合できる。「CRCエンジン」212として示されているが、エラー検出回路は、サイクリックリダンダンシーチェック以外の機能性を提供することができる。例えば、エラー検出回路は、数ある中でも、反復方式、パリティ方式、チェックサム、ハミング距離に基づくチェック、ハッシュ関数、水平リダンダンシーチェック及び垂直リダンダンシーチェック、極性方式、並びに/又はECC等のエラー訂正方式を含むことができる。1つ又は複数の実施形態では、ホストインタフェース210は、フロントエンドCRCエンジン212と直接結合でき、且つDMAモジュール214と直接結合できる。
【0021】
1つの又は複数の実施形態では、フロントエンドCRCエンジン212は、リンク層207及び/又はトランスポート層209によって、ホストインタフェース210に、したがってホストシステムに結合できる。CRCエンジン212等、フロントエンドエラー検出回路は、例えばデータが、図1のメモリシステム120等のメモリシステム内にある間にデータのエラーを検出するように構成できる。例えば、フロントエンドCRCエンジン212は、例えば書き込み動作の一部として、リンク層207及び/又はトランスポート層209から受信されるDMAペイロード等のデータペイロードのセクタ等、データに対応して、CRCデータ等、エラー訂正データを計算できる。1つ又は複数の実施形態では、フロントエンドCRCエンジン212は、セクタごとにCRCデータを計算できる。1つ又は複数の実施形態では、フロントエンドCRCエンジン212は、リンク層207及び/又はトランスポート層209によってホストインタフェース210に結合することができ、リンク層207及び/又はトランスポート層209から、DMAペイロード等、ある数のデータのセクタを受信できる。1つ又は複数の実施形態では、フロントエンドCRCエンジン212は、リンク層207からだけ、又はトランスポート層209からだけ、その数のデータのセクタを受信できる。しかしながら、実施形態はそのように制限されている。メモリコントローラ201に転送されるデータのためにホストシステム202によって生成された場合があるCRCデータは、PCIeタイプのインタフェースの場合トランスポート層209で、又はSATAタイプのインタフェースの場合リンク層207で、データから取り去られることがある。しかしながら、本開示の1つ又は複数の実施形態に従って、フロントエンドCRCエンジン212は、それが結合できるホストインタフェース210から受信されるデータの1セクタあたりのCRCデータを計算し、チェックすることができる。
【0022】
DMAモジュール214は、バックエンドデータバッファ218、及びCRCメモリ216等、バックエンドエラー検出メモリに結合できる。バックエンドデータバッファ218は、ECCエンジン/メモリI/F222に結合できる。バックエンドデータバッファ218は、例えばある数のデータのセクタ等、書き込み動作中にECCエンジン/メモリI/F222のためにDMAモジュール214から受信されるDMAペイロードの少なくとも一部をバッファリングするように構成できる。バックエンドデータバッファ218は、読み取り動作中に、ECCエンジン/メモリI/F222から受信されるある数のデータのセクタをバッファリングするように構成できる。バックエンドデータバッファ218及びバックエンドCRCメモリ216は、ECCエンジン及びメモリインタフェース等、エラー検出回路に結合できる。1つ又は複数の実施形態におけるように、及び図2の実施形態に示されるように、ECCエンジン及びメモリインタフェースは、「ECCエンジン/メモリI/F」222等、1つの構成要素としてともに結合できる。本書でのECCエンジン/メモリI/Fに対する集合的な参照は、エラー検出回路及びメモリインタフェースを別々の構成要素として有する実施形態を除外しない。同様に、本明細書での構成要素に対する個別的な参照は、エラー検出回路及びメモリインタフェースが1つの構成要素として含まれる実施形態を除外しない。
【0023】
バックエンドCRCメモリ216は、フロントエンドCRCエンジン212によって計算されたCRCデータを記憶するように構成できる。バックエンドCRCメモリ216は、ECCエンジン/メモリI/F222に結合することができ、ソリッドステートメモリデバイス230に以前に記憶されていたCRCデータ等、ECCエンジン/メモリI/F222のメモリインタフェース部からのCRCデータを受信し、記憶するように構成できる。バックエンドデータバッファ218は、フロントエンドCRCエンジン212に、DMAモジュール214上でECCエンジン/メモリI/F222から受信されたある数のデータのセクタを転送するように構成できる。フロントエンドCRCエンジン212は、例えばDMAモジュール214を介して、ECCエンジン/メモリI/F222のエラー検出回路部に結合できる。バックエンドCRCメモリ216は、フロントエンドCRCエンジン212に、DMAモジュール214上でECCエンジン/メモリI/F222から受信されるその数のデータのセクタに対応するCRCデータを転送するように構成できる。かかる例では、フロントエンドCRCエンジン212は、例えばDMAモジュール214から受信されるデータの、それぞれのセクタのためにCRCデータを計算するように構成できる。次に、フロントエンドCRCエンジンは、例えば、データのセクタがホストインタフェース210上でホストシステムに転送される前に、DMAモジュール214から受信されたデータのセクタの完全性を検証するために、DMAモジュール214から受信されたデータのセクタに対して計算されたCRCデータを、DMAモジュール214を介してバックエンドCRCメモリ216から受信されたCRCデータと比較できる。DMAモジュールの動作に関する追加の詳細は、少なくとも一人の共通発明者を有し、代理人整理番号第1002.0390001号を有する、「Memory Controller」と題する同一出願人による米国特許出願番号第 号に記載されている。
【0024】
ECCエンジン/メモリI/F222は、ソリッドステートメモリデバイス230に結合できる。1つ又は複数の実施形態では、ECCエンジン/メモリI/F222は、バックエンドCRCメモリ216から受信されるCRCデータ等のCRCデータを、データの対応するセクタにアペンドするように構成できる。ECCエンジン/メモリI/F222のデータエンジン部は、例えばデータのセクタ内で等、データ内でエラーを検出するように構成できる。1つ又は複数の実施形態では、ECCエンジン/メモリI/F222のECCエンジン部は、データが図1のメモリシステム120等のメモリシステム内にある間に、データのエラーを検出、及び/又は訂正するように構成できる。例えば、ECCエンジン/メモリI/F222のECCエンジン部は、データ単独のために、及び/又はデータと、CRC等、アペンドされたエラー検出データに対して、ECCデータ等、エラー訂正データを計算できる。1つ又は複数の実施形態では、ECCエンジン/メモリI/F222のECCエンジン部は、セクタごとにECCデータを計算するように構成できる。ECCエンジン/メモリI/F222は、ECCデータを、データの対応するセクタにアペンドするように構成できる。1つ又は複数の実施形態では、ECCエンジン/メモリI/F222のECCエンジン部が、フロントエンドCRCエンジン212によって計算されたCRCデータ等、アペンドされたCRCデータとともに、データの対応するセクタに対してECCデータを計算するように構成できる。読み取り動作中、ECCエンジン/メモリI/F222のECCエンジン部は、ある数のデータのセクタがバックエンドデータバッファ218内にある間に、その数のデータのセクタのエラーを訂正するように構成できる。ECCエンジン/メモリI/F222のECCエンジン部は、CRCデータがバックエンドCRCメモリ216内にある間にCRCデータのエラーを訂正するように構成できる。実施形態は、これらの特定の場所でのエラーの訂正に制限されていない。
【0025】
1つ又は複数の実施形態では、メモリコントローラ201は、書き込み動作のために、例えばソリッドステートメモリデバイス230に、ECCエンジン/メモリI/F222上で、ある数のデータのセクタ、対応する計算されたCRCデータ、及び対応するECCデータ、又はそのさまざまな組み合わせを転送するように構成できる。つまり、コントローラは、ソリッドステートメモリデバイス230内の場所に、データのセクタ、対応するCRCデータ、及び対応するECCデータを記憶するように構成できる。
【0026】
1つ又は複数の実施形態は、コントローラ201が、例えば書き込み動作と連動して、ホストインタフェース210のリンク層207及び/又はトランスポート層209を用いて、ホストシステム202からある数のデータのセクタを受信することを含むことができる。その数のデータのセクタは、ホストインタフェース210を通して、フロントエンドCRCエンジン212及びDMAモジュール214に転送できる。1つ又は複数の実施形態では、その数のデータのセクタは、フロントエンドCRCエンジン212及びDMAモジュール214と並行して受信できる。フロントエンドCRCエンジン212は、その数のデータのセクタのそれぞれに対応するCRCデータを計算できる。例えば、データの各セクタは一意のCRCデータに対応する可能性がある。DMAモジュール214は、CRCエンジン212からバックエンドCRCメモリ216にCRCデータを転送できる。フロントエンドCRCエンジン212は、例えばDMAモジュール214を介して、バックエンドCRCメモリ216に結合できる。1つ又は複数の実施形態では、バックエンドCRCメモリ216は、CRCデータを記憶できる。バックエンドCRCメモリ216は、それぞれの一意のCRCデータがデータのある特定のセクタに相当する可能性がある2つ以上の一意のCRCデータを記憶できる。DMAモジュール214は、その数のデータのセクタをバックエンドデータバッファ218に転送できる。ECCエンジン/メモリI/F222は、バックエンドデータバッファ218からその数のデータのセクタ、及びバックエンドCRCメモリ216から対応するCRCデータを転送し、その数のデータのセクタ及び対応するCRCデータのそれぞれに対して一意のECCデータを計算し、そのECCデータをデータの対応するセクタにアペンドし、1つ又は複数のソリッドステートメモリデバイス230に、データのセクタ、CRCデータ、及びECCデータを記憶することができる。
【0027】
前記に示すように、CRCデータは、他のCRC計算方法の中でも、dword(32ビット)量で、フレーム情報構造(FIS)のコンテンツに関して計算できる。しかしながら、ホストシステム202から受信されるデータペイロードは、例えば512バイト部分等、データペイロードのある数のセクタを含むことがある。いくつかの以前の手法に従って、CRCデータは、データペイロードに含まれるデータの各セクタごとではなく、全体としてのデータペイロードに対して計算されることがある。すなわち、CRCデータがリンク層207又はトランスポート層209を越えて伝搬しても、データは、少なくとも部分的には、それが、例えば、図1のメモリデバイス130−1等の、メモリデバイスに書き込まれ、且つ/又はメモリデバイスから読み取られる量とは異なる量で、例えば、図1のメモリシステム120等の、メモリシステムへ、又はメモリシステムから転送されるため、CRCデータは、データの特定のセクタにとって有用ではない場合がある。したがって、同じデータに対してであっても、読み取り及び/又は書き込み動作に関連するデータのセクタ数に対してと同じCRCデータをデータペイロードに対して使用しても、ある数のデータのセクタにデータの完全性は提供されない場合がある。
【0028】
対照的に、本開示の1つ又は複数の実施形態に従って、CRCデータは、各セクタに対して、データの各セクタごとに計算される。例えば、一意のCRCデータは、データの各セクタごとに計算される。例えば、データペイロードが2048バイトを含む場合、CRCデータはデータの4個の512バイトセクタのそれぞれに対して計算できる。データ完全性は、それが、例えば、ホストインタフェース210における等の、フロントエンド204におけるホストシステム202からコントローラ201によって受信される点から、それがバックエンド206からソリッドステートメモリデバイス230に転送される点までのその数のセクタに対して提供できる。データ完全性を提供することは、ホストインタフェース210からECCエンジン/メモリI/F222まで、及び/又はソリッドステートメモリデバイス230までのデータのセクタに対して、同じCRCデータを維持することを含むことができる。
【0029】
1つ又は複数の実施形態では、ECCエンジン/メモリI/F222は、例えば読み取り動作と連動して、1つ又は複数のソリッドステートメモリデバイス230から、ある数のデータのセクタ、その対応する第1のCRCデータ、及びECCデータを受信することができる。ECCエンジン/メモリI/F222は、バックエンドデータバッファ218にその数のデータのセクタを記憶し、バックエンドCRCメモリ216にそれらに対応するCRCデータを記憶できる。その数のデータのセクタ、並びにその対応する第1のCRCデータ、及びECCデータは、ECCエンジン/メモリI/F222のECCエンジン部を用いてエラーチェックできる。ECCエンジン/メモリI/F222のECCエンジン部によって識別される、CRCデータの1つ又は複数のエラーは、CRCデータがバックエンドCRCメモリ216に記憶されている間に訂正できる。ECCエンジン/メモリI/F222のECCエンジン部によって識別される、その数のデータのセクタの1つ又は複数のエラーは、その数のデータのセクタがバックエンドデータバッファ218内にバッファリングされている間に訂正できる。エラー訂正後、DMAモジュール214は、その数のデータのセクタ及びその対応するCRCデータを受信し、フロントエンドCRCエンジン212に転送できる。フロントエンドCRCエンジン212は、転送されたその数のデータのセクタに対して第2のCRCデータを計算し、その数のデータのセクタの完全性を検証するために、第1のCRCデータを対応する第2のCRCデータと比較できる。第1のCRCデータを第2のCRCデータと比較した後で、その数のデータのセクタは、ホストインタフェース210のトランスポート層209上で、例えばその数のデータの読み取られたセクタ等を、例えばデータを要求したホストシステム202に転送できる。1つ又は複数の実施形態では、その数のデータのセクタは、第1のCRCデータ又は第2のCRCデータのどちらかがなくても、ホストインタフェース210上で転送できる。1つ又は複数の実施形態では、ECCエンジン/メモリI/F222が、その数のデータのセクタからECCデータを削除し、その数のデータのセクタ及び第1のCRCデータを、フロントエンドCRCエンジン212に並行して転送できる。
【0030】
前述された読み取り動作等の本開示の1つ又は複数の実施形態によると、データ完全性は、その数のデータのセクタに対して提供できる。すなわち、データ完全性は、その数のセクタが、例えば、ECCエンジン/メモリI/F222における等の、ソリッドステートメモリデバイス230からコントローラ201のバックエンド206によって受信される点から、その数のセクタが、例えば、フロントエンド204からホストシステム202へ等の、ホストインタフェース210上で転送される点までのその数のデータのセクタに対して提供できる。データ完全性を提供することは、ソリッドステートメモリデバイス230からホストインタフェース10まで同じCRCデータを維持することを含むことができる。
【0031】
図3は、本開示の1つ又は複数の実施形態によるメモリコントローラ301を含むシステム300の機能ブロック図である。コントローラ301は、図1に示されるコントローラ101に類似する可能性がある。1つ又は複数の実施形態では、コントローラ301は、SSSD等のメモリシステムの構成要素とすることができる。図3に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解をさらに容易にするために図3のコントローラの詳細が少なくされていることが、当業者によって理解されるであろう。
【0032】
図3に示される実施形態は、例えば、CRCエンジン312等の、フロントエンドエラー検出回路、及び、例えば、DMAモジュール314等の、データ転送回路だけではなく物理層305、、リンク層307、及びトランスポート層309を備えるホストインタフェース310を含む図2に示される構成要素に類似する可能性がある構成要素を含む。しかしながら、1つ又は複数の実施形態では、ホストインタフェース310は、図示されているFIFO324等、フロントエンドホストバッファ324、及び高度暗号化規格(AES)エンジン326等、暗号化回路を介してDMAモジュールに結合できる。「AESエンジン」326として示されているが、他の形の暗号化が、本開示の1つ又は複数の実施形態とともに使用されてよい。FIFO324は、ホストインタフェース310とAESエンジン326の間のDMAペイロードをバッファリングするように構成できる。図3には示されていないが、AESエンジン326は、FIFO324と分離したAESバッファを含むことができる、又はFIFO324と分離したAESバッファに結合できる。
【0033】
図3に示されるように、AESエンジン326は、ある数のデータのセクタ、例えばコントローラ301によって受信されるある数のデータパケットから引き出されるデータストリーム等のデータペイロード(DMA)ペイロードを受信するように構成されてもよい。暗号化の前、その数のデータのセクタはプレーンテキスト(P.T.)である可能性がある。AESエンジン326は、暗号文(C.T.)等、暗号化された出力をDMAモジュール14に提供するために任意選択でその数のデータのセクタを処理するように配置及び構成されてもよい。1つ又は複数の実施形態では、AESエンジン326は、任意選択でその数のデータのセクタを処理することができ、AESエンジンがプレーンテキストから暗号文にその数のデータのセクタを暗号化できる、又はAESエンジン326が、暗号化せずに、例えばプレーンテキストで、その数のデータのセクタをDMAモジュール314に転送できることを意味する。
【0034】
1つ又は複数の実施形態では、ホストインタフェース310を介してホストシステムから受信されるある数のデータのセクタは、フロントエンドCRCエンジン312、及び図示されているようなFIFO324等、フロントエンドホストバッファ324から並行して受信できる。その数のデータのセクタはホストバッファ324から、その数のデータのセクタをプレーンテキストから暗号文に暗号化できるAESエンジン326に転送することができる。暗号化後、その数のデータのセクタは、さらなる処理のためにAESエンジン326からDMAモジュール314に転送できる。暗号化エンジンの動作の追加の例は、少なくとも一人の共通発明者を有する、「Parallel Encryption/Decryption」と題する、同一出願人による米国特許出願番号第12/333,822号にさらに詳細に説明されている。
【0035】
DMAモジュール314は、フロントエンド304回路をバックエンド306回路に効果的に結合する。1つ又は複数の実施形態では、コントローラ301のバックエンド部306は、2つ以上のバックエンドチャネルを含むことができる。図3に示される実施形態では、コントローラ301はある数のバックエンドチャネル319−1、...、319−Nを含む。各バックエンドチャネル319−1、...、319−Nは、チャネルプロセッサ、332−1、...、332−N、及びチャネルメモリ、334−1、…334−Nを含むことができる。バックエンドチャネルプロセッサ332−1、…、332−N及びメモリ334−1、...、334−Nは、DMAモジュール314に、及びバックエンドチャネルDMAモジュール328−1、...、328−Nに結合できる。各バックエンドチャネル319−1、...、319−Nは、DMAモジュール314に結合できるチャネルDMAモジュール328−1等、バックエンドチャネルデータ転送回路を含むことができる。DMAモジュール314は、DMAペイロードに関連するコマンドを、バックエンドチャネルプロセッサ332−1等、各バックエンドチャネルプロセッサに向け、DMAペイロードに関連するデータを、バックエンドチャネルDMAモジュール328−1等、各バックエンドチャネルDMAモジュールに向けるように構成できる。チャネルプロセッサの例示的な動作は、少なくとも一人の共通発明者を有する、「Modifying Commands」と題する、同一出願人による米国特許出願番号第12/351,206号にさらに詳細に説明されている。
【0036】
コントローラ301のバックエンド部は、図2に示される構成要素に類似した構成要素を含むことができる。例えば、各バックエンドチャネル319−1、...、319−Nは、バックエンドデータバッファ318−1、...、318−N、例えばCRCメモリ316−1、...、316−N等の、バックエンドエラー検出メモリ、及びECCエンジン/メモリインタフェース322−1、...、322−Nを含むことができる。1つ又は複数の実施形態で、及び図3の実施形態に示されるように、ECCエンジン及びメモリインタフェースは、例えば、「ECCエンジン/メモリI/F」322等の、1つの構成要素としてともに結合できる。1つ又は複数の実施形態では、ECCエンジン及びメモリインタフェースは別々の構成要素とすることができる。図3に示されるように、バックエンドデータバッファ318−1、...、318−Nは、バックエンドチャネルDMAモジュール328−1、...、328−Nと、ECCエンジン/メモリインタフェース322−1、...、322−Nとの間に結合できる。さらに、バックエンドCRCメモリ316−1、...、316−Nは、DMAモジュール314とECCエンジン/メモリインタフェース322−1、...、322−Nとの間に結合できる。図3に示されるように、特定のメモリデバイス、チップ、アレイ等は、特定のチャネルに対応することができる。例えば、ソリッドステートメモリデバイス(複数の場合がある)330−1は、チャネル319−1に対応することができる。
【0037】
図4は、本開示の1つ又は複数の実施形態によるメモリコントローラ401を含むシステム400の機能ブロック図である。コントローラ401は、図1に示されるコントローラ101に類似している可能性がある。1つ又は複数の実施形態では、コントローラ401は、SSD等のメモリシステムの構成要素である場合がある。図4に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解をさらに容易にするために図4のコントローラ401の詳細が少なくされていることが、当業者によって理解される。
【0038】
図4に示される実施形態は、例えばCRCエンジン412−F等の、フロントエンドエラー検出回路、及び例えばDMAモジュール414等の、データ転送回路だけではなく、物理層405、リンク層407、及びトランスポート層409を含むホストインタフェース410等のコントローラ401のフロントエンド404構成要素を含む図3に示される構成要素に類似する可能性がある構成要素を含む。また、コントローラ401は、バックエンドチャネルプロセッサ432−1、...、432−N及びメモリ434−1、...、434−N、例えばチャネルDMAモジュール428−1、...、428−N等の、バックエンドチャネルデータ転送回路、バックエンドデータバッファ418−1、...、418−N、例えばECCエンジン/メモリインタフェース422−1、...、422−N等の、エラー検出回路、並びに例えばCRCメモリ416−1、...、416−N等の、バックエンドエラー検出メモリを含む、バックエンドチャネル419−1、...、419N等の図3に示される構成要素に類似する可能性がある、ある数のバックエンド406構成要素も含む。1つ又は複数の実施形態で、及び図4に示されるように、ECCエンジン及びメモリインタフェースは、例えば、「ECCエンジン/メモリI/F 」422等、1つの構成要素としてともに結合できる。1つ又は複数の実施形態では、ECCエンジン及びメモリインタフェースは別々の構成要素とすることができる。図4に示されるように、各チャネル419−1、...、419−Nは、ECCエンジン/メモリインタフェース422−1、...、422−Nによって1つ又は複数のソリッドステートメモリデバイス430−1、...、430−Nに結合できる。
【0039】
しかしながら、1つ又は複数の実施形態では、バックエンドチャネル419−1、...、419−Nは、バックエンドCRCメモリ416−1、...、416−Nに結合される、例えばバックエンドCRCエンジン412−B1、...、412−BN等の、バックエンドエラー検出回路を含むことができる。バックエンドCRCエンジン412-B1、...、412−BNは、例えばデータの対応するセクタ等の、対応するデータに対して、例えば「第2の」CRCデータ等の、エラー検出データを計算するように構成できる。1つ又は複数の実施形態では、この対応するデータは、DMAペイロードの少なくとも一部分である場合がある。フロントエンドCRCエンジン412−Fは、データのセクタに対して「第1の」CRCデータを計算できる。バックエンドCRCエンジン412−B1、...、412−BNは、データのセクタの完全性をチェックし、且つ/又は検証するために第1のCRCデータを第2のCRCデータと比較するように構成できる。例えば、DMAモジュール414は、フロントエンドCRCエンジン412−Fに、及びバックエンドCRCメモリ416−1、...、416−Nに結合できる。DMAモジュール414は、第1のCRCデータを、バックエンドCRCメモリ416−1、...、416−Nに転送するように構成できる。次に、バックエンドCRCエンジン412−B1、...、412−BNは、バックエンドCRCメモリ416−1、...、416−Nから受信される第1のCRCデータを、計算された第2のCRCデータと比較できる。バンクエンドCRCエンジン412-B1、...、412−BNは、複数のバックエンドチャネル419−1、...、419−Nを含むコントローラ401を示す図4に関して開示されているが、実施形態はそのように制限されていない。例えば、本開示の1つ又は複数の実施形態は、バックエンドCRCエンジンを含む、例えば図2のバックエンド206に関して示されるような、単一のバックエンドチャネル付きのメモリコントローラを含むことができる。
【0040】
バックエンドCRCエンジン412−B1、...、412−BNは、ECCエンジン/メモリインタフェース422−1、...、422−Nに結合できる。1つ又は複数の実施形態では、バックエンドCRCエンジン412−B1、...、412−BNは、ECCエンジン/メモリI/F422−1、...、422−Nに直接結合できる。ECCエンジン/メモリI/F422−1、...、422−NのECCエンジン部は、例えばバックエンドデータバッファ418−1、...、418−Nから受信されるDMAペイロードの一部等の、データのセクタに対して、ECCデータを計算するように構成できる。1つ又は複数の実施形態では、コントローラ401は、第1の又は第2の対応するCRCデータなしに、ECCエンジン/メモリI/F422−1、...、422−N上でデータのセクタ及び対応するECCデータを転送するように構成できる。すなわち、1つ又は複数の実施形態では、データのセクタ及び対応するECCデータは、ソリッドステートメモリデバイス430−1、...、430−Nに対応するCRCデータを記憶することなく、ソリッドステートメモリデバイス430−1、...、430−Nに記憶できる。1つ又は複数の実施形態では、コントローラ401は、バックエンドCRCエンジン412−B1、...、412−BNがデータのセクタの完全性を検証するときに、ソリッドステートメモリデバイス430−1、...、430−N内の場所に対応するCRCデータなしで、データのセクタ及び対応するECCデータを記憶するように構成できる。すなわち、バックエンドCRCエンジン412−B1、...、412−BNが、データのセクタの完全性を検証しない場合、次にコントローラ401は、1つ又は複数の実施形態でソリッドステートメモリデバイス430−1、...、430−Nにデータのセクタを記憶しないことがある。
【0041】
1つ又は複数の実施形態は、書き込み動作と連動して等、ホストインタフェース410のリンク層407及び/又はトランスポート層409から、フロントエンドCRCエンジン412−Fを用いてある数のデータのセクタを受信することを含むことができる。フロントエンドCRCエンジン412−Fは、データの各セクタごとに第1のCRCデータを計算するように構成できる。したがって、書き込み動作の場合、CRCデータが、その数のデータのセクタに対する他の動作の実行の前に、又はその数のデータのセクタに対する他の動作の実行とは別にその数のデータのセクタに対して計算されるために、その数のデータのセクタのデータ完全性は、少なくとも部分的にコントローラ401のフロントエンド404で維持できる。第1のCRCデータは、DMAモジュール414に転送できる。
【0042】
DMAモジュール414は、バックエンドチャネルDMAモジュール428−1、...、428−Nにデータのセクタ数を転送できる。1つ又は複数の実施形態では、DMAモジュール414は、例えば、メモリアドレスに対応するソリッドステートメモリデバイスに結合されるチャネル等の、その数のデータのセクタに関連付けられたメモリアドレスに対応するバックエンドチャネル419−1、...、419−Nにその数のデータのセクタを転送できる。例えば、その数のデータのセクタに関連付けられたメモリアドレスが、例えば430−1等の、特定のソリッドステートメモリデバイスに対応するとき、DMAモジュールは、チャネル419−1上のバックエンドチャネルDMAモジュール428−1に、その数のデータのセクタを転送できる。その数のデータのセクタは、バックエンドチャネルDMAモジュール428−1、...、428−Nからバックエンドデータバッファ418−1、...、418−Nに転送できる。バックエンドデータバッファ418−1、...、418−Nは、その数のデータのセクタが、ECCエンジン/メモリインタフェース422−1、...、422−N、及び/又はバックエンドCRCエンジン412−B1、...、412−BNに転送される前に、書き込み動作中に、バックエンドチャネルDMAモジュール428−1、…、428−Nから受信されたデータのセクタをバッファリングできる。1つ又は複数の実施形態では、その数のデータのセクタは、バックエンドデータバッファ418−1、...、418−NからバックエンドCRCエンジン412−B1、...、412−BN、及びECCエンジン/メモリI/F422−1、...、422−Nに並行して転送できる。
【0043】
DMAモジュール414は、バックエンドCRCメモリ416−1、...、416−Nに第1のCRCデータを転送できる。1つ又は複数の実施形態では、DMAモジュール414は、第1のCRCデータを、第1のCRCデータが計算されるデータのセクタと関連付けられたメモリアドレスに対応するバックエンドチャネルに転送できる。第1のCRCデータは、バックエンドCRCエンジン412−B1、...、412−BNが第2のCRCデータを計算する前に、バックエンドCRCメモリ416−1、...、416−Nに記憶できる。バックエンドCRCエンジン412−B1、,,,、412−BNは、データのセクタに対して第2のCRCデータを計算し、第1のCRCデータを第2のCRCデータと比較できる。比較に続き、データのセクタは、1つ又は複数のソリッドステートメモリデバイス430−1、...、430−Nに記憶できる。1つ又は複数の実施形態では、ECCエンジン/メモリI/F422−1、...、422−NのECCエンジン部分は、第1のCRCデータの第2のCRCデータとの比較の後であるが、データのセクタがソリッドステートメモリデバイス430−1、...、430−Nに記憶される前に、データのセクタに対してECCデータを計算できる。ECCデータは、それがソリッドステートメモリデバイス430−1、...、430−Nに記憶される前にデータのセクタにアペンドでき、したがってデータのセクタ及びECCデータは記憶されるが、第1のCRCデータも第2のCRCデータもソリッドステートメモリデバイス430−1、...、430−Nに記憶されない。かかる実施形態は、例えば、CRCデータがその中に記憶されないとき等、少なくとも部分的にはソリッドステートメモリデバイス430−1、...、430−N内に記憶されている情報の量の削減のため、有利であることがある。
【0044】
1つ又は複数の実施形態では、例えば、第1のCRCデータが第2のCRCデータに一致する場合等、バックエンドCRCエンジン412−B1,...、412−BNがその数のデータのセクタの完全性を検証する場合、その数のデータのセクタは、ECCエンジン/メモリI/F422−1、...、4220Nからソリッドステートメモリデバイス430−1、...、430−Nに転送されるに過ぎない。したがって、書き込み動作の場合、少なくとも部分的には、第2のCRCデータが、DMAモジュール414及びバックエンドチャネルDMAモジュール428−1、...、428−Nによる処理後に、その数のデータのセクタに対して計算され、その数のデータのセクタに対する他の動作の実行の前に、又はその数のデータのセクタに対する他の動作の実行とは別に計算された第1のCRCデータに比較されるために、その数のデータのセクタのデータ完全性は、コントローラ401のバックエンド406で維持できる。
【0045】
1つ又は複数のメモリシステム動作の実施形態は、1つ又は複数のソリッドステートメモリデバイス430−1、...、430−Nから、ある数のデータのセクタ及び対応するECCデータを読み取ることを含む、読み取り動作を含む。その数のデータのセクタは、ECCエンジン/メモリI/F422−1、...、422−NのECCエンジン部でエラーチェックできる。ECCエンジン/メモリI/F422−1、...、422−NのECCエンジン部でエラーチェック後、ECCデータはその数のデータのセクタから削除できる。バックエンドCRCエンジン412−B1、...、412−BNは、その数のデータのセクタのそれぞれに対してCRCデータを計算できる。その数のデータのセクタ及びCRCデータは、例えば、それぞれホストバッファ424及びDMAモジュール414からフロントエンドCRCエンジン412−Fへ等、並行して転送できる。フロントエンドCRCエンジン412−Fは、その数のデータのセクタの完全性をチェックするために、その数のデータのセクタのそれぞれに対してCRCデータを計算し、それを、バックエンドCRCエンジンによって計算されるCRCデータと比較できる。その数のデータのセクタは、比較後に、ホストインタフェース410のトランスポート層409上で転送できる。
【0046】
したがって、読み取り動作の場合、ある数のデータのセクタのデータ完全性は、少なくとも部分的には、その数のデータのセクタがECCエンジン/メモリI/F422−1、...、422−Nに転送された後に、その数のデータのセクタのそれぞれに対してCRCデータを計算するため、コントローラ401のバックエンド406からフロントエンド404に維持できる。さらに、データの特定のセクタに対する、新規に計算されたCRCデータとの比較のために、コントローラ401のフロントエンド404に以前に計算されたCRCデータを転送することは、データの特定のセクタの完全性が維持されていることを検証するのに役立つ可能性がある。したがって、本開示の1つ又は複数の実施形態は、コントローラ401でのその数のデータのセクタにデータ完全性を与えることができる。
(結論)
【0047】
本開示は、メモリコントローラ内のデータ完全性のための方法、装置、及びシステムを含む。1つのメモリコントローラ実施形態は、ホストインタフェース、及びホストインタフェースに結合される第1のエラー検出回路を含む。メモリコントローラは、メモリインタフェース、及びメモリインタフェースに結合される第2のエラー検出回路を含むことができる。第1のエラー検出回路は、ホストインタフェースから受信されるデータに対してエラー検出データを計算し、ホストインタフェースに伝送されるデータの完全性をチェックするように構成できる。第2のエラー検出回路は、メモリインタフェースに送信されるデータ及び第1のエラー訂正データに対してエラー訂正データを計算し、メモリインタフェースから受信されるデータ及び第1のエラー訂正データの完全性をチェックするように構成できる。
【0048】
ある要素が、別の要素「の上にある」、「に接続される」、又は「と結合される」と参照されるとき、その要素は直接的に他の要素の上にある、直接的に他の要素に接続される、又は直接的に他の要素と結合されるか、もしくは介入する要素が存在することがあると理解される。対照的に、ある要素が、別の要素「の上に直接的にある」、「に直接的に接続される」又は「と直接的に結合される」と参照されるとき、介入する要素又は層は存在しない。本明細書に使用される場合、用語「及び/又は」は、関連付けられた一覧される品目の1つ又は複数のありとあらゆる組み合わせを含む。
【0049】
第1の、第2の等の用語は、多様な要素を説明するために本明細書中で使用されてよく、これらの要素はこれらの用語によって制限されるべきではないことが理解される。これらの用語はある要素を別の要素から区別するためにだけ使用される。したがって、第1の要素は、本開示の教示から逸脱することなく、第2の要素と称することができる可能性がある。
【0050】
特定の実施形態が、本明細書に図解され、説明されてきたが、当業者は、同じ結果を達成するために計算された構成が、示されている特定の実施形態に代わることができることを理解するだろう。この開示は、本開示の1つ又は複数の実施形態の改作物又は変形物を網羅することを目的とする。前記説明が、制限的ではなく、例示的に行われたことが理解されるべきである。上記実施形態、及び本書に特に説明されていない他の実施形態の組み合わせは、前記説明を検討すれば当業者に明らかであろう。本開示の1つ又は複数の実施形態の範囲は、前記構造及び方法が使用される他の応用例も含む。したがって、本開示の1つ又は複数の実施形態の範囲は、添付特許請求の範囲、並びにかかる特許請求の範囲が認められている同等物の全範囲を参照して決定されるべきである。
【0051】
前述の発明を実施するための形態では、開示を合理化する目的でいくつかの特長がグループ化されて単一の実施形態にまとめられている。この開示方法は、本開示の開示された実施形態が、各請求項に明示的に記載されるより多くの特長を使用しなければならないという意図を反映するとして解釈されてはならない。むしろ、以下の特許請求の範囲が反映するように、発明の内容は、単一の開示された実施形態の全ての特長よりも少ない状態にある。したがって、以下の特許請求の範囲は、これによって発明を実施するための形態に組み込まれ、各請求項はそれ自体別個の実施形態となる。
図1
図2
図3
図4