JP5776107B2 - メモリコントローラ及び方法におけるデータ完全性 - Google Patents

メモリコントローラ及び方法におけるデータ完全性 Download PDF

Info

Publication number
JP5776107B2
JP5776107B2 JP2011550132A JP2011550132A JP5776107B2 JP 5776107 B2 JP5776107 B2 JP 5776107B2 JP 2011550132 A JP2011550132 A JP 2011550132A JP 2011550132 A JP2011550132 A JP 2011550132A JP 5776107 B2 JP5776107 B2 JP 5776107B2
Authority
JP
Japan
Prior art keywords
data
memory
error detection
crc
memory controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011550132A
Other languages
English (en)
Other versions
JP2012518224A (ja
Inventor
アスナアシャリ,メディー
ヤマダ,ロナルド
ネマジー,シアマック
ヤン,レイ
Original Assignee
ラウンド ロック リサーチ、エルエルシー
ラウンド ロック リサーチ、エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ラウンド ロック リサーチ、エルエルシー, ラウンド ロック リサーチ、エルエルシー filed Critical ラウンド ロック リサーチ、エルエルシー
Publication of JP2012518224A publication Critical patent/JP2012518224A/ja
Application granted granted Critical
Publication of JP5776107B2 publication Critical patent/JP5776107B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、概して半導体メモリデバイス、方法、およびシステムに関し、より詳細にはデータ完全性に関する。
メモリデバイスは、通常、コンピュータ又は他の電子装置内に、内部回路、半導体回路、集積回路として提供される。揮発性メモリ及び不揮発メモリを含む多くの異なるタイプのメモリがある。揮発性メモリは、そのデータを維持するために電力を必要とする可能性があり、数ある中でも、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び同期ダイナミックランダムアクセスメモリ(SDRAM)を含むことができる。不揮発性メモリは、電力が供給されないときに記憶されている情報を保持することによって永続データを提供することができ、数ある中でも、NANDフラッシュメモリ、NORフラッシュメモリ、読み取り専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、消去可能プログラマブルROM(EPROM)、及び相変化ランダムアクセスメモリ(PCRAM)を含むことができる。
メモリデバイスは、ソリッドステートドライブ(SSD)を形成するために互いに組み合わせることができる。SSDは、NANDフラッシュメモリ及びNORフラッシュメモリ等の不揮発性メモリを含むことができ、且つ/又は、多様な他のタイプの不揮発性メモリ及び揮発性メモリの中でも、例えば、DRAM及びSRAM等の揮発性メモリを含むことができる。
SSDは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費の点でハードドライブに優る利点を有することができるので、コンピュータ用のメインストレージデバイスとしてハードディスクドライブを置き換えるために使用することができる。例えば、SSDは、可動部品が存在しないために、磁気ディスクドライブと比較して優れた性能を有する可能性があり、これにより磁気ディスクドライブに関連するシークタイム、待ち時間、及び他の電子機械遅延を回避できる。SSD製造メーカは不揮発性フラッシュメモリを使用して、内部バッテリ電源を使用せず、したがってドライブをより万能でコンパクトにすることができるフラッシュSSDを作成できる。
SSDは、1つ又は複数のメモリチップ等の1つ又は複数のメモリデバイスを含むことができる。当業者が理解するように、メモリチップは、1つ又は複数のダイを含むことができる。各ダイは、1つ又は複数のメモリアレイ及びその上に周辺回路を含むことができる。メモリアレイは1つ又は複数のプレーンを含む可能性があり、各プレーンは、メモリセルの1つ又は複数の物理ブロックを含む。各物理ブロックは、データの1つ又は複数のセクタを記憶できる1つ又は複数のページのメモリセルを含むことができる。
SSDは、特にユニバーサルシリアルバス(USB)、シリアルアドバンストテクノロジーアタッチメント(SATA)、又はペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)等のシリアルインタフェースでホストシステムとインタフェース接続することができる。USB、SATA、及びPCIe等のシリアルインタフェースは、それぞれのインタフェースのアーキテクチャのリンク層又はトランスポート層に内蔵されるサイクリックリダンダンシーチェック(CRC)等のエラー検出機構を有することがある。CRCは、送信機から受信機へのデータの伝送中にノイズ又は他の障害によって引き起こされるエラーの存在を検出する能力を含んでもよい。CRCのデータ生成は、特定のインタフェースによってサポートされるフレーム構造に基づくことがある。
例えば、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バイト)を含むことがある。ただし、ペイロードはより少ないデータを含むことがある。
当業者が理解するように、論理ブロックアドレッシングは、ホストが、情報のセクタを識別するために使用できる方式である。例えば、各セクタは、一意の論理ブロックアドレス(LBA)に相当することができる。セクタは、記憶量の最小アドレッシング可能部分であってよい。一例として、データのセクタは、例えば512バイト等のデータのある数のバイトである場合がある。例えばSATAインタフェース等のシリアルホストインタフェースでの各ペイロードは必ずしも同数のバイトを含まないため、及び大量記憶装置のシリアルホストインタフェースでのペイロードは異なる単位である場合があるため、CRCデータは、ホストインタフェース、例えばホストインタフェースのリンク層又はトランスポート層を越えて伝搬することはできないことがある。
本開示の1つ又は複数の実施形態によるメモリシステムを含むコンピュータシステムの機能ブロック図である。 本開示の1つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。 本開示の1つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。 本開示の1つ又は複数の実施形態によるメモリコントローラを含むシステムの機能ブロック図である。
本開示は、メモリコントローラ内のデータ完全性のための方法、装置及びシステムを含む。1つのメモリコントローラ実施態様は、ホストインタフェース、及びそのホストインタフェースに結合される第1のエラー検出回路を含む。メモリコントローラは、メモリインタフェース、及びそのメモリインタフェースに結合される第2のエラー検出回路を含むことができる。第1のエラー検出回路は、ホストインタフェースから受信されるデータに対してエラー検出データを計算し、ホストインタフェースに送信されるデータの完全性をチェックするように構成することができる。第2のエラー検出回路は、メモリインタフェースに送信されるデータ及び第1エラー訂正データに対してエラー訂正データを計算し、メモリインタフェースから受信されるデータ及び第1のエラー訂正データの完全性をチェックするように構成することができる。
本開示の以下の発明を実施するための形態では、本明細書の一部を形成し、本開示の1つ又は複数の実施形態がどのように実践されることがあるのかが例示によって示される添付図面が参照される。これらの実施形態は、当業者が本開示の実施形態を実践できるようにするほど十分に詳細に説明され、他の実施形態が活用されてよいこと、及びプロセス変更、電気的な変更、及び構造上の変更が本開示の範囲から逸脱することなく行われてよいことを理解される。本明細書に使用される場合、特に図面中の参照数字に関して指示詞Nは、このように指示される特定の特長の数が本開示の1つ又は複数の実施形態に含まれることができることを示す。指示詞は、同数又は異なる数の特定の特長を表すことができる。
本明細書の図は、1つ又は複数の最初の桁が図面の図面番号に相当し、残りの桁が図面中の要素又は構成要素を識別する番号付け方式に従う。異なる図の間の類似する要素又は構成要素は、類似する数字を使用することによって識別されることがある。例えば、110は図1の要素「10」を参照し、類似する要素は図2では210として参照されてもよい。理解されるように、本明細書の多様な実施形態に示される要素は、本開示の多くの追加の実施形態を提供するように追加、交換、及び/又は排除できる。さらに、理解されるように、図中に提供される要素の割合及び相対的な尺度は、本開示の実施形態を示すことを目的としており、制限的な意味で解釈されるべきではない。
図1は、本開示の1つ又は複数の実施形態によるメモリシステム120を含むコンピューティングシステム100の機能ブロック図である。図1に示される実施形態では、例えば、ソリッドステートドライブ(SSD)等のメモリシステム120が、メモリコントローラ101、物理インタフェース103、及び、例えばNANDフラッシュデバイス等の1つ又は複数のソリッドステートメモリデバイス130−1、…、130−Nを含むことができる。図1に示されるように、メモリコントローラ101は、物理インタフェース103に、及びソリッドステートメモリデバイス130−1、...、130−Nに結合できる。
物理インタフェース103は、メモリシステム120と、ホストシステム102等の別の装置の間で情報を通信するために使用できる。ホストシステム102は、プロセッサ等、メモリアクセスデバイスを含むことができる。当業者は、「プロセッサ」が、並列処理システム、多くのコプロセッサ等の1台又は複数台のプロセッサを意図する可能性があることを理解するだろう。ホストシステムの例は、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル記録装置及び再生装置、携帯電話、PDA、メモリカードリーダ、インタフェースハブ等を含む。1つ又は複数の実施形態の場合、物理インタフェース103は、標準化された物理インタフェースの形をとることができる。例えば、メモリシステム120が、コンピューティングシステム100でのデータ記憶に使用されるとき、物理インタフェース103は、他の物理インタフェースの中でも、シリアルアドバンストテクノロジーアタッチメント(SATA)、ペリフェラルコンポーネントインターコネクタエクスプレス(PCIe)、又はユニバーサルシリアルバス(USB)とすることができる。しかしながら、一般的には、物理インタフェース103は、図2のホストインタフェース210等、メモリシステム120のコントローラ101のホストインタフェースと、物理インタフェース103用に互換性のある受容器を有するホストシステム102の間で、コントロール、アドレス、データ、及び他の信号を渡すための物理的な接続を提供できる。
メモリコントローラ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への所望されるアクセスを達成できる。
図1の実施形態は、本開示の実施形態を分かりにくくしないように示されていない追加の回路を含むことができる。例えば、メモリシステム120は、I/O回路を通してI/O接続上で提供されるアドレス信号をラッチするためにアドレス回路を含むことができる。アドレス信号は、ソリッドステートメモリデバイス130−1、...、130−Nにアクセスするために、受信され、行デコーダ及び列デコーダによって復号できる。アドレス入力接続の数が、ソリッドステートメモリデバイス130−1、...、130−Nの密度及びアーキテクチャに依存する可能性があることが、当業者によって理解されるだろう。
図2は、本開示の1つ又は複数の実施形態によるメモリコントローラ201を含むシステム200の機能ブロック図である。コントローラ201は、図1に示されるコントローラ101に類似する場合がある。1つ又は複数の実施形態では、コントローラ201は、SSD等のメモリシステムの構成要素である場合がある。図2に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解を容易にするために図2のコントローラの詳細が少なくされていることが、当業者によって理解されるであろう。
図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を、フロントエンド構成要素とすることができる。
図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には図示されていない。
ホストインタフェース210は、DMAモジュール214と、サイクリックリダンダンシーチェック(CRC)エンジン212等のフロントエンドエラー検出回路と結合できる。「CRCエンジン」212として示されているが、エラー検出回路は、サイクリックリダンダンシーチェック以外の機能性を提供することができる。例えば、エラー検出回路は、数ある中でも、反復方式、パリティ方式、チェックサム、ハミング距離に基づくチェック、ハッシュ関数、水平リダンダンシーチェック及び垂直リダンダンシーチェック、極性方式、並びに/又はECC等のエラー訂正方式を含むことができる。1つ又は複数の実施形態では、ホストインタフェース210は、フロントエンドCRCエンジン212と直接結合でき、且つDMAモジュール214と直接結合できる。
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データを計算し、チェックすることができる。
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つの構成要素として含まれる実施形態を除外しない。
バックエンド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」と題する同一出願人による米国特許出願番号第 号に記載されている。
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データのエラーを訂正するように構成できる。実施形態は、これらの特定の場所でのエラーの訂正に制限されていない。
1つ又は複数の実施形態では、メモリコントローラ201は、書き込み動作のために、例えばソリッドステートメモリデバイス230に、ECCエンジン/メモリI/F222上で、ある数のデータのセクタ、対応する計算されたCRCデータ、及び対応するECCデータ、又はそのさまざまな組み合わせを転送するように構成できる。つまり、コントローラは、ソリッドステートメモリデバイス230内の場所に、データのセクタ、対応するCRCデータ、及び対応するECCデータを記憶するように構成できる。
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データを記憶することができる。
前記に示すように、CRCデータは、他のCRC計算方法の中でも、dword(32ビット)量で、フレーム情報構造(FIS)のコンテンツに関して計算できる。しかしながら、ホストシステム202から受信されるデータペイロードは、例えば512バイト部分等、データペイロードのある数のセクタを含むことがある。いくつかの以前の手法に従って、CRCデータは、データペイロードに含まれるデータの各セクタごとではなく、全体としてのデータペイロードに対して計算されることがある。すなわち、CRCデータがリンク層207又はトランスポート層209を越えて伝搬しても、データは、少なくとも部分的には、それが、例えば、図1のメモリデバイス130−1等の、メモリデバイスに書き込まれ、且つ/又はメモリデバイスから読み取られる量とは異なる量で、例えば、図1のメモリシステム120等の、メモリシステムへ、又はメモリシステムから転送されるため、CRCデータは、データの特定のセクタにとって有用ではない場合がある。したがって、同じデータに対してであっても、読み取り及び/又は書き込み動作に関連するデータのセクタ数に対してと同じCRCデータをデータペイロードに対して使用しても、ある数のデータのセクタにデータの完全性は提供されない場合がある。
対照的に、本開示の1つ又は複数の実施形態に従って、CRCデータは、各セクタに対して、データの各セクタごとに計算される。例えば、一意のCRCデータは、データの各セクタごとに計算される。例えば、データペイロードが2048バイトを含む場合、CRCデータはデータの4個の512バイトセクタのそれぞれに対して計算できる。データ完全性は、それが、例えば、ホストインタフェース210における等の、フロントエンド204におけるホストシステム202からコントローラ201によって受信される点から、それがバックエンド206からソリッドステートメモリデバイス230に転送される点までのその数のセクタに対して提供できる。データ完全性を提供することは、ホストインタフェース210からECCエンジン/メモリI/F222まで、及び/又はソリッドステートメモリデバイス230までのデータのセクタに対して、同じCRCデータを維持することを含むことができる。
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に並行して転送できる。
前述された読み取り動作等の本開示の1つ又は複数の実施形態によると、データ完全性は、その数のデータのセクタに対して提供できる。すなわち、データ完全性は、その数のセクタが、例えば、ECCエンジン/メモリI/F222における等の、ソリッドステートメモリデバイス230からコントローラ201のバックエンド206によって受信される点から、その数のセクタが、例えば、フロントエンド204からホストシステム202へ等の、ホストインタフェース210上で転送される点までのその数のデータのセクタに対して提供できる。データ完全性を提供することは、ソリッドステートメモリデバイス230からホストインタフェース10まで同じCRCデータを維持することを含むことができる。
図3は、本開示の1つ又は複数の実施形態によるメモリコントローラ301を含むシステム300の機能ブロック図である。コントローラ301は、図1に示されるコントローラ101に類似する可能性がある。1つ又は複数の実施形態では、コントローラ301は、SSSD等のメモリシステムの構成要素とすることができる。図3に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解をさらに容易にするために図3のコントローラの詳細が少なくされていることが、当業者によって理解されるであろう。
図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バッファに結合できる。
図3に示されるように、AESエンジン326は、ある数のデータのセクタ、例えばコントローラ301によって受信されるある数のデータパケットから引き出されるデータストリーム等のデータペイロード(DMA)ペイロードを受信するように構成されてもよい。暗号化の前、その数のデータのセクタはプレーンテキスト(P.T.)である可能性がある。AESエンジン326は、暗号文(C.T.)等、暗号化された出力をDMAモジュール14に提供するために任意選択でその数のデータのセクタを処理するように配置及び構成されてもよい。1つ又は複数の実施形態では、AESエンジン326は、任意選択でその数のデータのセクタを処理することができ、AESエンジンがプレーンテキストから暗号文にその数のデータのセクタを暗号化できる、又はAESエンジン326が、暗号化せずに、例えばプレーンテキストで、その数のデータのセクタをDMAモジュール314に転送できることを意味する。
1つ又は複数の実施形態では、ホストインタフェース310を介してホストシステムから受信されるある数のデータのセクタは、フロントエンドCRCエンジン312、及び図示されているようなFIFO324等、フロントエンドホストバッファ324から並行して受信できる。その数のデータのセクタはホストバッファ324から、その数のデータのセクタをプレーンテキストから暗号文に暗号化できるAESエンジン326に転送することができる。暗号化後、その数のデータのセクタは、さらなる処理のためにAESエンジン326からDMAモジュール314に転送できる。暗号化エンジンの動作の追加の例は、少なくとも一人の共通発明者を有する、「Parallel Encryption/Decryption」と題する、同一出願人による米国特許出願番号第12/333,822号にさらに詳細に説明されている。
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号にさらに詳細に説明されている。
コントローラ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に対応することができる。
図4は、本開示の1つ又は複数の実施形態によるメモリコントローラ401を含むシステム400の機能ブロック図である。コントローラ401は、図1に示されるコントローラ101に類似している可能性がある。1つ又は複数の実施形態では、コントローラ401は、SSD等のメモリシステムの構成要素である場合がある。図4に示されているものを越えて、追加の回路及び構成要素を設けることができ、図解をさらに容易にするために図4のコントローラ401の詳細が少なくされていることが、当業者によって理解される。
図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に結合できる。
しかしながら、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に関して示されるような、単一のバックエンドチャネル付きのメモリコントローラを含むことができる。
バックエンド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にデータのセクタを記憶しないことがある。
1つ又は複数の実施形態は、書き込み動作と連動して等、ホストインタフェース410のリンク層407及び/又はトランスポート層409から、フロントエンドCRCエンジン412−Fを用いてある数のデータのセクタを受信することを含むことができる。フロントエンドCRCエンジン412−Fは、データの各セクタごとに第1のCRCデータを計算するように構成できる。したがって、書き込み動作の場合、CRCデータが、その数のデータのセクタに対する他の動作の実行の前に、又はその数のデータのセクタに対する他の動作の実行とは別にその数のデータのセクタに対して計算されるために、その数のデータのセクタのデータ完全性は、少なくとも部分的にコントローラ401のフロントエンド404で維持できる。第1のCRCデータは、DMAモジュール414に転送できる。
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に並行して転送できる。
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内に記憶されている情報の量の削減のため、有利であることがある。
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で維持できる。
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上で転送できる。
したがって、読み取り動作の場合、ある数のデータのセクタのデータ完全性は、少なくとも部分的には、その数のデータのセクタがECCエンジン/メモリI/F422−1、...、422−Nに転送された後に、その数のデータのセクタのそれぞれに対してCRCデータを計算するため、コントローラ401のバックエンド406からフロントエンド404に維持できる。さらに、データの特定のセクタに対する、新規に計算されたCRCデータとの比較のために、コントローラ401のフロントエンド404に以前に計算されたCRCデータを転送することは、データの特定のセクタの完全性が維持されていることを検証するのに役立つ可能性がある。したがって、本開示の1つ又は複数の実施形態は、コントローラ401でのその数のデータのセクタにデータ完全性を与えることができる。
(結論)
本開示は、メモリコントローラ内のデータ完全性のための方法、装置、及びシステムを含む。1つのメモリコントローラ実施形態は、ホストインタフェース、及びホストインタフェースに結合される第1のエラー検出回路を含む。メモリコントローラは、メモリインタフェース、及びメモリインタフェースに結合される第2のエラー検出回路を含むことができる。第1のエラー検出回路は、ホストインタフェースから受信されるデータに対してエラー検出データを計算し、ホストインタフェースに伝送されるデータの完全性をチェックするように構成できる。第2のエラー検出回路は、メモリインタフェースに送信されるデータ及び第1のエラー訂正データに対してエラー訂正データを計算し、メモリインタフェースから受信されるデータ及び第1のエラー訂正データの完全性をチェックするように構成できる。
ある要素が、別の要素「の上にある」、「に接続される」、又は「と結合される」と参照されるとき、その要素は直接的に他の要素の上にある、直接的に他の要素に接続される、又は直接的に他の要素と結合されるか、もしくは介入する要素が存在することがあると理解される。対照的に、ある要素が、別の要素「の上に直接的にある」、「に直接的に接続される」又は「と直接的に結合される」と参照されるとき、介入する要素又は層は存在しない。本明細書に使用される場合、用語「及び/又は」は、関連付けられた一覧される品目の1つ又は複数のありとあらゆる組み合わせを含む。
第1の、第2の等の用語は、多様な要素を説明するために本明細書中で使用されてよく、これらの要素はこれらの用語によって制限されるべきではないことが理解される。これらの用語はある要素を別の要素から区別するためにだけ使用される。したがって、第1の要素は、本開示の教示から逸脱することなく、第2の要素と称することができる可能性がある。
特定の実施形態が、本明細書に図解され、説明されてきたが、当業者は、同じ結果を達成するために計算された構成が、示されている特定の実施形態に代わることができることを理解するだろう。この開示は、本開示の1つ又は複数の実施形態の改作物又は変形物を網羅することを目的とする。前記説明が、制限的ではなく、例示的に行われたことが理解されるべきである。上記実施形態、及び本書に特に説明されていない他の実施形態の組み合わせは、前記説明を検討すれば当業者に明らかであろう。本開示の1つ又は複数の実施形態の範囲は、前記構造及び方法が使用される他の応用例も含む。したがって、本開示の1つ又は複数の実施形態の範囲は、添付特許請求の範囲、並びにかかる特許請求の範囲が認められている同等物の全範囲を参照して決定されるべきである。
前述の発明を実施するための形態では、開示を合理化する目的でいくつかの特長がグループ化されて単一の実施形態にまとめられている。この開示方法は、本開示の開示された実施形態が、各請求項に明示的に記載されるより多くの特長を使用しなければならないという意図を反映するとして解釈されてはならない。むしろ、以下の特許請求の範囲が反映するように、発明の内容は、単一の開示された実施形態の全ての特長よりも少ない状態にある。したがって、以下の特許請求の範囲は、これによって発明を実施するための形態に組み込まれ、各請求項はそれ自体別個の実施形態となる。

Claims (14)

  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に記載のメモリコントローラ。
JP2011550132A 2009-02-18 2010-02-12 メモリコントローラ及び方法におけるデータ完全性 Expired - Fee Related JP5776107B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/388,305 2009-02-18
US12/388,305 US8468417B2 (en) 2009-02-18 2009-02-18 Data integrity in memory controllers and methods
PCT/US2010/000412 WO2010096153A2 (en) 2009-02-18 2010-02-12 Data integrity in memory controllers and methods

Publications (2)

Publication Number Publication Date
JP2012518224A JP2012518224A (ja) 2012-08-09
JP5776107B2 true JP5776107B2 (ja) 2015-09-09

Family

ID=42560933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011550132A Expired - Fee Related JP5776107B2 (ja) 2009-02-18 2010-02-12 メモリコントローラ及び方法におけるデータ完全性

Country Status (7)

Country Link
US (3) US8468417B2 (ja)
EP (1) EP2399194A4 (ja)
JP (1) JP5776107B2 (ja)
KR (2) KR101351754B1 (ja)
CN (1) CN102317919B (ja)
TW (2) TWI451434B (ja)
WO (1) WO2010096153A2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods
JP2010262715A (ja) * 2009-05-11 2010-11-18 Renesas Electronics Corp メモリ検査システム及びメモリ検査方法
JP5017407B2 (ja) 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP5605238B2 (ja) * 2011-01-25 2014-10-15 ソニー株式会社 メモリシステムおよびその動作方法
US8745294B2 (en) * 2011-04-01 2014-06-03 Taejin Info Tech Co., Ltd. Dynamic random access memory for a semiconductor storage device-based system
JP5346978B2 (ja) * 2011-04-15 2013-11-20 シャープ株式会社 インターフェイス装置、配線基板、及び情報処理装置
JP5346979B2 (ja) * 2011-04-18 2013-11-20 シャープ株式会社 インターフェイス装置、配線基板、及び情報処理装置
CN102203740B (zh) * 2011-05-27 2013-06-05 华为技术有限公司 数据处理方法、装置及系统
US8589761B2 (en) 2011-05-31 2013-11-19 Micron Technology, Inc. Apparatus and methods for providing data integrity
JP2013029882A (ja) * 2011-07-26 2013-02-07 Toshiba Corp メモリコントローラ、半導体記憶装置および復号方法
US20130067157A1 (en) * 2011-09-12 2013-03-14 Byungcheol Cho Semiconductor storage device having multiple host interface units for increased bandwidith
US8775713B2 (en) 2011-12-27 2014-07-08 Intel Corporation Multi-protocol tunneling over an I/O interconnect
US8953644B2 (en) 2011-12-27 2015-02-10 Intel Corporation Multi-protocol I/O interconnect time synchronization
JP2013137708A (ja) 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、データ記憶装置およびメモリ制御方法
US8782321B2 (en) 2012-02-08 2014-07-15 Intel Corporation PCI express tunneling over a multi-protocol I/O interconnect
US8880923B2 (en) 2012-03-29 2014-11-04 Intel Corporation Link power management in an I/O interconnect
KR102002925B1 (ko) * 2012-11-01 2019-07-23 삼성전자주식회사 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
KR102009437B1 (ko) * 2013-01-18 2019-08-13 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
KR102083374B1 (ko) * 2013-06-17 2020-04-14 에스케이하이닉스 주식회사 반도체 장치 및 그의 제어 방법
US9256551B2 (en) 2013-08-09 2016-02-09 Apple Inc. Embedded encryption/secure memory management unit for peripheral interface controller
CN103533045B (zh) * 2013-10-12 2017-12-29 丁贤根 一种用于pcie数据链路层高性能容错的方法
KR102058495B1 (ko) * 2013-11-29 2020-02-07 에스케이하이닉스 주식회사 오류 검출 회로 및 이를 이용하는 반도체 집적회로
KR102214556B1 (ko) * 2014-08-19 2021-02-09 삼성전자주식회사 메모리 장치 및 모듈
US9697140B2 (en) * 2014-09-23 2017-07-04 Intel Corporation Encryption integrity check with CRC encryption in memory using a word count- and address-derived nonce
WO2016137464A1 (en) * 2015-02-26 2016-09-01 Hewlett Packard Enterprise Development Lp Checksum requests of files
JP6594712B2 (ja) * 2015-09-14 2019-10-23 ラピスセミコンダクタ株式会社 半導体メモリ及び半導体メモリのベリファイ方法
US10198313B2 (en) 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
KR102678314B1 (ko) * 2018-08-03 2024-06-25 삼성전자주식회사 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법
EP3953937A4 (en) * 2019-04-09 2022-12-14 Sunrise Memory Corporation QUASI-VOLATILE STORAGE DEVICE WITH BACK CHANNEL USE
US10891184B2 (en) * 2019-05-22 2021-01-12 Macronix International Co., Ltd. Configurable data integrity mode, and memory device including same
US11080132B2 (en) * 2019-07-12 2021-08-03 Micron Technology, Inc. Generating error checking data for error detection during modification of data in a memory sub-system
JP7327029B2 (ja) * 2019-09-19 2023-08-16 京セラドキュメントソリューションズ株式会社 画像形成装置、データ通信方法
JP7419715B2 (ja) * 2019-09-19 2024-01-23 京セラドキュメントソリューションズ株式会社 画像形成装置、データ整合性判定方法
US11693732B2 (en) * 2019-12-31 2023-07-04 Micron Technology, Inc. Cryptographic data integrity protection
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US20210279128A1 (en) * 2021-05-21 2021-09-09 Intel Corporation Buffer that supports burst transfers having parallel crc and data transmissions
US11726666B2 (en) * 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US11687273B2 (en) 2021-09-29 2023-06-27 Micron Technology, Inc. Memory controller for managing data and error information
US11775387B2 (en) * 2022-01-21 2023-10-03 Micron Technology, Inc. Cyclic redundancy check (CRC) retry for memory systems in compute express link (CXL) devices
US12093566B2 (en) 2022-03-01 2024-09-17 Micron Technology, Inc. Memory controller for managing raid information
US11940872B2 (en) 2022-04-21 2024-03-26 Analog Devices International Unlimited Company Error correction code validation
US12117948B2 (en) 2022-10-31 2024-10-15 Mellanox Technologies, Ltd. Data processing unit with transparent root complex
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257391A (en) 1991-08-16 1993-10-26 Ncr Corporation Disk controller having host interface and bus switches for selecting buffer and drive busses respectively based on configuration control signals
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5631741A (en) 1995-12-29 1997-05-20 Intel Corporation Electronic carbon paper
US7020835B2 (en) 2000-10-19 2006-03-28 Oracle International Corporation Enhancements to data integrity verification mechanism
US7900057B2 (en) 2000-11-03 2011-03-01 Enova Technology Corporation Cryptographic serial ATA apparatus and method
US6691205B2 (en) 2001-03-05 2004-02-10 M-Systems Flash Disk Pioneers Ltd. Method for using RAM buffers with simultaneous accesses in flash based storage systems
KR100487539B1 (ko) 2002-09-02 2005-05-03 삼성전자주식회사 직렬 에이티에이 케이블과 연결되는 불휘발성 반도체메모리 장치
JP2005093038A (ja) 2003-09-19 2005-04-07 Fujitsu Ltd 記録再生装置および記録再生回路
TWI269968B (en) 2004-04-22 2007-01-01 Mediatek Inc Method for processing the noise in the SATA
US7398449B1 (en) 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
US7936881B2 (en) * 2004-08-31 2011-05-03 Nortel Networks Limited Method and system for transmitting signaling information over a data transport network
JP2006134064A (ja) 2004-11-05 2006-05-25 Hitachi Ltd 記憶メディアへの書込みエラーを検出する記憶制御装置及び方法
US20060136619A1 (en) 2004-12-16 2006-06-22 Intel Corporation Data integrity processing and protection techniques
US20060294299A1 (en) 2005-06-28 2006-12-28 Intel Corporation Techniques to verify storage of information
JP2007034829A (ja) * 2005-07-28 2007-02-08 Toshiba Corp 情報処理方法および情報処理装置
JP4953648B2 (ja) * 2006-02-03 2012-06-13 パナソニック株式会社 不揮発性記憶装置およびメモリコントローラ
KR100856129B1 (ko) * 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
KR100810358B1 (ko) 2007-01-30 2008-03-04 삼성전자주식회사 컨테이너의 무결성을 확인하는 방법 및 그 dvb―h 단말
KR100921748B1 (ko) * 2007-06-04 2009-10-15 삼성전자주식회사 Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법
KR100753174B1 (ko) * 2007-06-12 2007-08-30 엠진 (주) 플래시 메모리 기반의 대용량 저장장치
US8001444B2 (en) * 2007-08-08 2011-08-16 Intel Corporation ECC functional block placement in a multi-channel mass storage device
US8140936B2 (en) * 2008-01-24 2012-03-20 International Business Machines Corporation System for a combined error correction code and cyclic redundancy check code for a memory channel
JP5174603B2 (ja) * 2008-09-30 2013-04-03 株式会社日立製作所 メモリの誤り訂正方法,誤り検出方法、及びそれを用いたコントローラ
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods

Also Published As

Publication number Publication date
KR101457518B1 (ko) 2014-11-10
US20100211834A1 (en) 2010-08-19
EP2399194A4 (en) 2012-10-31
KR20130124989A (ko) 2013-11-15
WO2010096153A2 (en) 2010-08-26
US8468417B2 (en) 2013-06-18
EP2399194A2 (en) 2011-12-28
TWI451434B (zh) 2014-09-01
CN102317919A (zh) 2012-01-11
WO2010096153A3 (en) 2010-11-25
JP2012518224A (ja) 2012-08-09
CN102317919B (zh) 2015-03-11
KR101351754B1 (ko) 2014-01-14
US20150220386A1 (en) 2015-08-06
KR20110118168A (ko) 2011-10-28
US9015553B2 (en) 2015-04-21
TW201434051A (zh) 2014-09-01
TW201035987A (en) 2010-10-01
US20130283124A1 (en) 2013-10-24

Similar Documents

Publication Publication Date Title
JP5776107B2 (ja) メモリコントローラ及び方法におけるデータ完全性
US8726140B2 (en) Dummy data padding and error code correcting memory controller, data processing method thereof, and memory system including the same
US8650463B2 (en) Solid state drive and method of controlling an error thereof
US8250403B2 (en) Solid state disk device and related data storing and reading methods
CN108073357B (zh) 以raid方式存储数据的存储装置
JP6345210B2 (ja) 軟判定復号のための物理アドレスの相互関連付け
US8504898B2 (en) Storage apparatus, controller and data accessing method thereof
US8812942B2 (en) Interleaving apparatuses and memory controllers having the same
US20200241956A1 (en) Memory system and operating method thereof
US20150026509A1 (en) Storage device having a data stream converter
KR20200079134A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
US10572189B2 (en) Method and decoder to adjust an error locator polynomial based on an error parity
US11101822B1 (en) Data writing method, memory control circuit unit and memory storage apparatus
JP6491482B2 (ja) 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置
US8423878B2 (en) Memory controller and memory system including the same having interface controllers generating parity bits
US20200244289A1 (en) Data writing method, memory control circuit unit and memory storage device
US20160211024A1 (en) Decoding data using a reserved word line
US20240241648A1 (en) Storage device including nonvolatile memory device and controller
US11893248B2 (en) Secure metadata protection
US20240028524A1 (en) Accelerated Encryption During Power Loss
US11422888B2 (en) Data integrity check for writing data in memory
EP4404064A1 (en) Storage device including nonvolatile memory device and controller
US20240094919A1 (en) Toggle mode interface for data integrity protection
CN114077515A (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140128

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140930

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140930

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141030

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141030

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141210

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150617

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150617

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150618

R150 Certificate of patent or registration of utility model

Ref document number: 5776107

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees