JP2013542533A - フラッシュメモリベースのデータ記憶のための順応ecc技術 - Google Patents

フラッシュメモリベースのデータ記憶のための順応ecc技術 Download PDF

Info

Publication number
JP2013542533A
JP2013542533A JP2013536786A JP2013536786A JP2013542533A JP 2013542533 A JP2013542533 A JP 2013542533A JP 2013536786 A JP2013536786 A JP 2013536786A JP 2013536786 A JP2013536786 A JP 2013536786A JP 2013542533 A JP2013542533 A JP 2013542533A
Authority
JP
Japan
Prior art keywords
error correction
encoding
correction code
error
code
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.)
Pending
Application number
JP2013536786A
Other languages
English (en)
Other versions
JP2013542533A5 (ja
Inventor
リ、ヤン
チョン、ハオ
ダニラク、ラドスラヴ
ティー コーエン、アール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Logic Corp
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 LSI Logic Corp filed Critical LSI Logic Corp
Publication of JP2013542533A publication Critical patent/JP2013542533A/ja
Publication of JP2013542533A5 publication Critical patent/JP2013542533A5/ja
Pending legal-status Critical Current

Links

Images

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
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • 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
    • H03M13/2906Coding, 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 using block codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【解決手段】 フラッシュメモリとともに使用される順応ECC技術は、フラッシュメモリ寿命、信頼性、性能、および/または記憶容量の改善を可能にする。本技術は、様々な符号化率および/または様々な符号長を備えるECCスキーム(異なる誤り訂正能力を提供する)、ならびに(専用ハードウェア論理ブロックなどを通じた)誤り統計収集または追跡のセットを含む。本技術は、さらに、1若しくはそれ以上のECCスキームにしたがった符号化または復号、ならびに少なくとも部分的に誤り統計収集または追跡からの(専用誤り統計収集または追跡ハードウェア論理ブロックからの入力を受け付けるハードウェア論理順応コーデックを通じてなど)情報に基づいて、1若しくはそれ以上の前記ECCスキームの間で符号化または復号の動的な切り替えを行うことを含む。本技術はさらに、経時的に様々な動作モードで(たとえば、MLCページまたはSLCページとして)前記フラッシュメモリの一部分(たとえばページまたはブロック)を選択的に動作させることを含む。
【選択図】 図1

Description

本願に基づく優先権の利益は、添付の出願データシート、願書、または送付状(該当する場合)にて主張されている。本願の種別により許可される範囲内で、本願はあらゆる目的のため、発明がなされた時点で全て本願とともに所有されていた以下のものを、参照により本明細書に組み込むものとする。
2010年10月27日付で出願され、第一発明者をYan Liとし、フラッシュメモリベースのデータ記憶のための順応ECC技術と題される、米国仮特許出願(整理番号SF−10−03および米国特許出願第61/407,178号)。
性能、効率、および使いやすさを改善するために、フラッシュメモリ記憶技術の進歩が必要とされている。
文脈、定義、または比較目的のものを含め、本明細書で説明される技術および概念は、公知または周知であるとの明示的な断りがない限り、このような技術および概念がこれまでに公知であり、または先行技術の一部であったと認めるように解釈されるべきではない。特許、特許出願、および刊行物を含む本明細書における全ての参照は(もしあれば)、具体的に組み込まれているか否かに関わらず、全ての目的のために、参照によりその全体が本明細書に組み込まれる。
本発明は多数の方法で実現でき、工程、製造品、機器、システム、組成物、その他コンピュータ可読記憶媒体(たとえば、ディスクなどの光および/または磁気による大容量記憶装置における媒体、あるいはフラッシュストレージ等の不揮発性記憶装置を有する集積回路)、あるいは光または電子通信リンク経由でプログラム命令が送信されるコンピュータネットワークなどとして、実施可能である。本明細書では、これらの実施態様、または本発明が取りうる他のいかなる形態も、技術と称されてよい。詳細な説明では、上記で特定された分野において性能、効率、および実用性の改善を可能にする本発明の1若しくはそれ以上の実施形態について、解説している。詳細な説明は、当該詳細な説明の残部のより迅速な理解を促すため、序論を含めている。序論は、本明細書で説明する概念に基づいたシステム、方法、製造品、およびコンピュータ可読媒体のうちの1若しくはそれ以上の実施形態例を含む。結論において詳述されるように、本発明は、請求項の範囲内で可能な全ての変更形態および変形形態を包含する。
図1は、フラッシュメモリベースのデータ記憶のための順応ECC技術を用いるシステムの実施形態の、選択された詳細を示す図である。 図2Aは、フラッシュメモリベースのデータ記憶のための順応ECC技術を用いるSSDコントローラを含むSSDの実施形態の、選択された詳細を示す図である。 図2Bは、図2AのSSDを含むシステムの実施形態の、選択された詳細を示す図である。 図2Cは、図2AのSSDを含むシステムの別の実施形態の、選択された詳細を示す図である。
本発明の1若しくはそれ以上の実施形態の詳細な説明が、本発明の選択された詳細を示す添付図面とともに以下に示される。本発明は、実施形態に関連付けて記載される。本明細書の実施形態は単に例示的であると理解され、本発明は明らかに本明細書の実施形態に限定されるものではなく、またはそのいずれかまたは全てによって限定されるものでもなく、本発明は、多くの代替形態、変更形態、変形形態、および同等物を包含する。説明の単調さを回避するために、多様な単語ラベル(これらに限定されるものではないが、第1の、最後の、特定の(certain)、様々な、さらなる、別の、特定の(particular)、選択された、いくつかの、および特筆すべき、を含む)が、別個の実施形態セットに適用されてもよい。本明細書において、このようなラベルは、品質、または何らかの形態の嗜好性または偏見を伝えることではなく、別個のセットの間で都合よく区別することを、明確に意味している。開示された工程のいくつかの操作の順序は、本発明の範囲内で変更可能である。工程、方法、および/またはプログラム命令の特徴の変形形態を説明するのに多数の実施形態が役立っている場合は、所定の基準、または動的に決定される基準にしたがって、前記多数の実施形態のうちの複数にそれぞれ対応する複数の動作モードのうちの1つの静的または動的な選択を実行する、その他の実施形態が考えられる。本発明の完全な理解を提供するために、多数の具体的詳細が以下の説明に記載される。詳細は例示目的で提供され、本発明は、詳細の一部または全てがなくとも、請求項にしたがって実施されることが可能である。明瞭性のため、本発明が不必要に曖昧にならないよう、本発明に関する技術分野において周知の技術事項は、詳述されていない。
序論
本序論は、詳細な説明のより迅速な理解を促すために含めたものである。序論のいずれの段落も、必然的に当該主題全体を概説するものであり、完全なまたは限定的な説明を意図するものではないので、本発明は、序論に示される概念(もしあれば明確な例を含む)に限定されるものではない。たとえば、以下の序論は、紙面と構成により特定の実施形態のみに限定された概略情報を提供する。最終的に請求項と整合するものも含め、本明細書の残部を通じてその他多くの実施形態が論じられている。
頭字語
本明細書の他の部分では、様々な略称または頭字語が、特定の要素を指す。頭字語の少なくともいくつかの説明は、以下のとおりである。
Figure 2013542533
Figure 2013542533
NAND型フラッシュメモリは、情報を格納するためにフローティング・ゲート・トランジスタのアレイを使用する。SLC技術においては、各ビットセル(たとえばフローティング・ゲート・トランジスタ)は、1ビットの情報を格納できる。MLC技術では、各ビットセルは、多ビットの情報を格納できる。製造技術(たとえばCMOS技術)が微細化するにつれて、各フローティングゲートに格納される電子の数が減少する。さらに、記憶容量および密度が増加するにつれて、各ビットセルはより多くのビットを格納するようになる。したがって、ビットセルに格納された値は、より低い電圧範囲で表されるようになる。セルに格納された電子数の検出および/または経時変化の不確実性は、データが誤って格納または読み出しされる可能性を増加させる。1若しくはそれ以上のECC技術の使用により、通常であれば破損しているデータの正しい修正を可能にする。
いくつかのSSDは、不揮発性記憶装置を提供するために、フラッシュメモリを提供する(たとえば、電力を印加せずに情報が保持される)。いくつかのSSDは、HDD、CDドライブ、およびDVDドライブなど、磁気および/または光による不揮発性記憶装置によって使用されるフォームファクタ、電気的インターフェース、および/またはプロトコルと互換性がある。様々な実施形態において、前記SSDは、0若しくはそれ以上のRS符号、0若しくはそれ以上のBCH符号、0若しくはそれ以上のビタビまたはその他のトレリス符号の、様々な組み合わせを用いる。
生BERの一例は、ECCの恩恵を受けずにフラッシュメモリから読み出されたデータのBERである。いくつかの要因が生BER(書き込み誤り、記憶誤り、およびリードディスターブエラーなど)に貢献し、生BERは経時的に変化可能である。フラッシュメモリへのデータの格納は、2部工程である。まず前記フラッシュメモリのブロックが消去され、その後に前記ブロックが書き込まれる。2部工程は、PEサイクルの一例である。様々な使用シナリオおよび/または実施形態において、フラッシュメモリの誤りの全てまたは1若しくはそれ以上の部分は、前記フラッシュメモリにおける特定のブロックがいくつのPEサイクルを受けたかの関数である。いくつかの使用シナリオおよび/または実施形態において、特定ブロックはPEサイクルを受けているので(たとえば消去されてから書き込まれているので)、特定ブロックの生BERが増加する。
いくつかの手法において、フラッシュメモリの全寿命にわたって、固定ECCが使用される。たとえばフラッシュメモリが最初に動作されたときから前記フラッシュメモリが最後に動作されるときまで単一のECCスキームが使用される。前記単一のECCスキームは、フラッシュメモリのライフサイクルにわたって可能性のある最悪な生BERを訂正するのに十分な誤り訂正能力を有するように、設計されている(たとえば、前記フラッシュメモリの寿命の後期の間に訂正可能となっている)。誤り訂正能力は、前記フラッシュメモリの寿命の初期および中期の間に比較的低い生BERから生じる誤りを訂正するのに十分すぎるほどであり、こうして有効な記憶容量を減少させる(誤りを訂正するのに必要なECCに、より多くの記憶容量が割り当てられる)。
様々な実施形態および/または使用シナリオにおいて、フラッシュメモリとともに使用するための順応ECC技術は、フラッシュメモリ寿命、信頼性、性能、および/または記憶容量の改善を可能にする。本技術は、様々な符号種別、符号化率、および/または符号長を備えるECCスキーム(異なる誤り訂正能力を提供する)、ならびに誤り統計収集または追跡(専用ハードウェア論理ブロックを通じてなど)のセットを含む。本技術は、1若しくはそれ以上のECCスキームによる符号化または復号、ならびに少なくとも部分的に誤り統計収集または追跡からの(専用誤り統計収集または追跡ハードウェア論理ブロックからの入力を受け付けるハードウェア論理順応コーデックを通じてなど)情報に基づくそれぞれの1若しくはそれ以上のECCスキームの間でのフラッシュメモリの全てまたはいずれかの部分の符号化または復号の動的な切り替えを、さらに含む。本技術は、経時的に様々な動作モードで(たとえば、MLCページまたはSLCページとして)前記フラッシュメモリの一部分(たとえばページまたはブロック)を選択的に動作させることを、さらに含む。たとえば、フラッシュメモリ寿命の初期においては長さの短い符号が使用され、寿命におけるそれ以降の部分では、長さの長い符号が使用される。別の例としては、前記フラッシュメモリのページの動作期間の間、ページはMLCページとして動作させられ、その後の動作期間の間は、ページはSLCページとして動作させられる。寿命または動作期間は、たとえば電力が印加される時間、プログラムサイクルまたは消去サイクルの数、読み出しサイクルの数、測定および/または予測BER、プログラム時間、消去時間、読み出し時間、温度、および/またはフラッシュメモリの記憶セルの閾値電圧などに基づいて、測定可能である。
例示的な実施形態
詳細な説明の序論の結びとして、少なくとも「EC」(Example Combinations、組み合わせ例)として明示的に列挙されたいくつかを含む実施形態例集を以下に示し、本明細書に記載される概念にしたがって様々な実施形態タイプのさらなる説明を提供する。これらの例は、相互に排他的、網羅的、または限定的となるように意図されるものではなく、本発明はこれらの実施形態例に限定されず、むしろ特許請求の範囲内で可能な全ての変更形態および変形形態を包含する。
EC1)システムであって、
フラッシュメモリの一部分へのアクセスにおける生ビット誤り率(BER)を決定する誤り統計収集または追跡ハードウェア論理ブロックと、
複数の誤り訂正符号の中から選択された1つにしたがって符号化を行い、さらに少なくとも部分的に前記生BERに基づいて前記選択された誤り訂正符号を動的に決定する順応エンコーダハードウェアブロックと、
を有するシステム。
EC2)EC1記載のシステムにおいて、前記誤り訂正符号の1つによる符号化の結果、別の誤り訂正符号による符号化よりも少ない数の誤り訂正ビットが前記部分に格納されるものであるシステム。
EC3)EC1記載のシステムにおいて、前記誤り訂正符号の1つによる符号化の結果、別の誤り訂正符号による符号化よりも多い数の誤り訂正ビットが前記部分に格納されるものであるシステム。
EC4)EC1記載のシステムにおいて、前記選択された誤り訂正符号が第1の誤り訂正符号である場合、第2の誤り訂正符号よりも比較的多くのデータ情報および比較的少ない誤り訂正情報が順応エンコーダによって出力されるものであるシステム。
EC5)EC4記載のシステムにおいて、前記選択された誤り訂正符号が前記第1誤り訂正符号であるときのデータ情報の量は、前記選択された誤り訂正符号が前記第2の誤り訂正符号であるときのデータ情報の量よりも大きいものであるシステム。
EC6)EC4記載のシステムにおいて、前記選択された誤り訂正符号が前記第2の誤り訂正符号であるときのデータ情報の量は、2のべき乗であるシステム。
EC7)EC4記載のシステムにおいて、前記選択された誤り訂正符号が前記第2の誤り訂正符号であるときのデータ情報の量は2のべき乗であり、前記選択された誤り訂正符号が前記第1誤り訂正符号であるときのデータ情報の量は、前記選択された誤り訂正符号が前記第2の誤り訂正符号であるときのデータ情報の量よりも大きいものであるシステム。
EC8)EC1記載のシステムにおいて、さらに
前記誤り訂正符号のいずれかにしたがって復号する順応デコーダを有するものであるシステム。
EC9)EC1記載のシステムにおいて、前記誤り訂正符号はリードソロモン(RS)符号のみを有するものであるシステム。
EC10)EC1記載のシステムにおいて、前記誤り訂正符号はBose Chaudhuri Hocquenghem(BCH)符号のみを有するものであるシステム。
EC11)EC1記載のシステムにおいて、前記誤り訂正符号は低密度パリティ検査(LDPC)符号のみを有するものであるシステム。
EC12)EC1記載のシステムにおいて、前記誤り訂正符号は少なくとも2種類の誤り訂正符号を有し、誤り訂正符号の種類はリードソロモン(RS)型符号、Bose Chaudhuri Hocquenghem(BCH)型符号、および低密度パリティ検査(LDPC)型符号を含むものであるシステム。
EC13)EC1記載のシステムにおいて、前記誤り訂正符号のうちの少なくとも2つは異なる符号化率であるシステム。
EC14)EC1記載のシステムにおいて、前記誤り訂正符号のうちの少なくとも2つは異なる符号長であるシステム。
EC15)EC1記載のシステムにおいて、前記部分は前記フラッシュメモリの1若しくはそれ以上のブロックであり、前記ブロックの各々は個別に消去可能であるシステム。
EC16)EC1記載のシステムにおいて、前記部分は前記フラッシュメモリの1若しくはそれ以上のページであり、前記ページの各々は個別に書き込み可能であるシステム。
EC17)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは、さらに、前記フラッシュメモリのそれぞれの部分へのアクセスにおけるそれぞれの生BERを決定するものであるシステム。
EC18)EC1記載のシステムにおいて、前記フラッシュメモリは1若しくはそれ以上のフラッシュメモリダイを有するものであるシステム。
EC19)EC1記載のシステムにおいて、前記生BERは予測される生BERであるシステム。
EC20)EC19記載のシステムにおいて、前記予測される生BERは少なくとも部分的に、前記部分上でプログラムサイクルまたは消去サイクルが実行される数を計測することによって決定されるシステム。
EC21)EC19記載のシステムにおいて、前記予測される生BERは少なくとも部分的に、前記部分上で読み出しサイクルが実行される数を計測することによって決定されるシステム。
EC22)EC19記載のシステムにおいて、前記予測される生BERは少なくとも部分的に、前記部分の少なくとも1つのセルに関連付けられた閾値電圧を決定することによって決定されるシステム。
EC23)EC19記載のシステムにおいて、前記予測される生BERは少なくとも部分的に、1若しくはそれ以上の所定閾値に基づいて決定されるシステム。
EC24)EC19記載のシステムにおいて、前記予測される生BERは、少なくとも部分的に1若しくはそれ以上の統計モデルに基づいて決定されるシステム。
EC25)EC1記載のシステムにおいて、前記生BERは測定された生BERであるシステム。
EC26)EC25記載のシステムにおいて、前記測定された生BERは定期的に決定されるものであるシステム。
EC27)EC25記載のシステムにおいて、前記測定された生BERは少なくとも部分的に、前記部分に所定パターンを書き込むこと、および引き続き前記部分を読み出すことによって決定されるシステム。
EC28)EC25記載のシステムにおいて、前記測定された生BERは少なくとも部分的に、前記部分の少なくとも一部の読み出しに関連付けられたBERを監視することによって決定されるシステム。
EC29)EC25記載のシステムにおいて、前記測定された生BERは少なくとも部分的に、前記フラッシュメモリからの生読み出しデータを前記生読み出しデータの誤り訂正済みバージョンと比較することによって決定されるものであるシステム。
EC30)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは独立したハードウェア論理ブロックであるシステム。
EC31)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは専用ハードウェア論理ブロックであるシステム。
EC32)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは分散型ハードウェア論理ブロックであるシステム。
EC33)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記誤り訂正符号のいずれかにしたがって復号する順応デコーダハードウェア論理ブロック内に実装されるものであるシステム。
EC34)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリからの生読み出しデータを、前記生読み出しデータの誤り訂正済みバージョンと比較して、少なくとも部分的に前記生BERを決定する順応デコーダハードウェア論理ブロック内に実装されるものであるシステム。
EC35)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリと互換性があり、前記部分上でプログラムサイクルまたは消去サイクルが実行される数を計測するフラッシュメモリインターフェースハードウェア論理ブロック内に実装され、前記順応エンコーダは、さらに、少なくとも部分的に前記計測に基づいて前記選択された誤り訂正符号を動的に決定するものであるシステム。
EC36)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリと互換性があり、前記部分上で読み出しサイクルが実行される数を計測するフラッシュメモリインターフェースハードウェア論理ブロック内に実装され、前記順応エンコーダは、さらに、少なくとも部分的に前記計測に基づいて前記選択された誤り訂正符号を動的に決定するものであるシステム。
EC37)EC1記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリと互換性があり、前記部分の少なくとも1つのセルに関連付けられた閾値電圧を決定するフラッシュメモリインターフェースハードウェア論理ブロック内に実装され、前記順応エンコーダは、さらに、少なくとも部分的に前記閾値電圧に基づいて前記選択された誤り訂正符号を動的に決定するものであるシステム。
EC38)EC1記載のシステムにおいて、前記部分は複数のサブ部分(sub−portion)を有し、前記順応デコーダは、さらに、誤り訂正情報が1若しくはそれ以上の前記サブ部分に格納可能となり、データ情報が1つのサブ部分のみに格納可能となるように復号するものであるシステム。
EC39)EC1記載のシステムにおいて、前記ハードウェアブロックはソリッドステートディスク(SSD)コントローラに含まれるものであるシステム。
EC40)EC1記載のシステムにおいて、前記ハードウェアブロックはソリッドステートディスク(SSD)に含まれるものであるシステム。
EC41)EC1記載のシステムにおいて、前記ハードウェアブロックは不揮発性記憶構成要素コントローラを有するものであるシステム。
EC42)EC1記載のシステムにおいて、前記ハードウェアブロックは不揮発性記憶構成要素に含まれるものであるシステム。
EC43)EC42記載のシステムにおいて、前記不揮発性記憶構成要素は、ユニバーサルシリアルバス(USB)記憶構成要素、コンパクトフラッシュ(CF)(登録商標)記憶構成要素、マルチメディアカード(MMC)記憶構成要素、セキュアデジタル(SD)記憶構成要素、メモリスティック記憶構成要素、およびxD記憶構成要素のうちの1若しくはそれ以上を有するものであるシステム。
EC44)システムであって、
フラッシュメモリの一部分へのアクセスにおける生ビット誤り率(BER)を決定する誤り統計収集または追跡ハードウェア論理ブロックと、
順応エンコーダおよび順応デコーダを有する順応コーデックであって、
前記順応エンコーダは複数の誤り訂正符号の中から第1に選択された誤り訂正符号にしたがって符号化を行い、
前記順応デコーダは前記誤り訂正符号の中から第2に選択された1つにしたがって復号を行うものであり、
前記順応コーデックは、さらに、少なくとも部分的に前記誤り統計収集および追跡ハードウェア論理ブロックから受信した情報に基づいて、前記誤り訂正符号の中から第1に選択された誤り訂正符号を決定する前記制御ハードウェア論理ブロックと
を有するものである、前記順応コーデックと、
を有するシステム。
EC45)EC44記載のシステムにおいて、前記順応コーデックは、さらに、前記誤り訂正符号の各々を記述できる符号ライブラリを有するものであるシステム。
EC46)EC44記載のシステムにおいて、前記順応エンコーダは、前記誤り訂正符号のいずれかにしたがって符号化できるユニバーサルエンコーダであるシステム。
EC47)EC44記載のシステムにおいて、前記順応デコーダは、前記誤り訂正符号のいずれかにしたがって復号できるユニバーサルデコーダであるシステム。
EC48)システムであって、
フラッシュメモリの複数の部分の各々に関連付けられた符号化率を決定する符号化率選択ブロックと、
前記決定された各符号化率にしたがって動作可能なエンコーダと、
前記決定された各符号化率にしたがって動作可能なデコーダと
を有し、
前記決定された各符号化率の特定の1つにしたがって前記エンコーダによって符号化されたデータが前記フラッシュメモリの前記部分の特定の1つに書き込まれ、次に前記特定部分から読み出されて前記デコーダによって復号されるものであるシステム。
EC49)EC48記載のシステムにおいて、前記符号化率選択ブロックはハードウェア論理回路を有するものであるシステム。
EC50)EC48記載のシステムにおいて、前記符号化率選択ブロックは、1若しくはそれ以上の部分ごとに1若しくはそれ以上のパラメータ、あるいは1若しくはそれ以上のパラメータの1若しくはそれ以上の履歴に基づいて、前記各符号化率を決定するものであり、前記パラメータは、
訂正された誤りの数と、
検出された誤りの数と、
プログラムサイクルまたは消去サイクルの数と、
読み出しサイクルの数と、
プログラム時間、
消去時間と、
読み出し時間と、
温度と、
閾値電圧と
を含むものであるシステム。
システムおよび動作
図1は、フラッシュメモリベースのデータ記憶のための順応ECC技術を用いるシステム100の実施形態の選択された詳細を示す。書き込み記憶データパス110は、様々なハードウェアブロックを含む。ユニバーサルエンコーダ120は制御/インターフェース130に接続され、これは同様に(たとえば1若しくはそれ以上のフラッシュメモリダイを有する)フラッシュユニット140に接続されている。読み出し記憶データパス150は様々なハードウェアブロックを含む。フラッシュユニットおよび制御/インターフェースはユニバーサルデコーダ160に接続されている。符号ライブラリ170ハードウェアブロックは、ユニバーサルエンコーダおよびユニバーサルデコーダのハードウェアブロックに接続されている。誤り統計収集または追跡180ハードウェアブロックは、ユニバーサルエンコーダ、符号ライブラリ、ユニバーサルデコーダ、および制御/インターフェースのハードウェアブロックに接続されている。
動作中、記憶データとして書き込む「ホストからのユーザデータ」がユニバーサルエンコーダによって受信され、誤り訂正符号にしたがって符号化される。誤り訂正符号は、符号ライブラリからの情報によって記述され、少なくとも部分的に誤り統計収集または追跡ブロックによって提供される情報などに基づいて選択される。次にユニバーサルエンコーダは、フラッシュユニットに情報を書き込む制御/インターフェースに、データ情報および誤り訂正情報を提供する。
制御/インターフェースがフラッシュユニットの1若しくはそれ以上の部分(たとえばページまたはブロック)から生情報を読み出すことによって記憶情報の読み出しが開始し、ユニバーサルデコーダに生情報を提供する。次に前記ユニバーサルデコーダは、前記生情報に含まれる誤り訂正情報を用いて、誤り訂正符号にしたがって前記生情報(誤り訂正を含む)をデータ情報に復号する。前記誤り訂正符号は、符号ライブラリからの情報によって記述され、少なくとも部分的に誤り統計収集または追跡ブロックおよび/または生情報の1若しくはそれ以上の部分によって提供される情報などに基づいて選択される。次に前記データ情報はホストに渡される。様々な代替実施形態において、処理は1若しくはそれ以上の代替順序で実施される。たとえばいくつかの実施形態において、記憶データの読み出しは符号ライブラリの読み出しによって開始され、続いて制御/インターフェースが生情報を読み出す。
符号化(および復号)に使用される誤り訂正符号は、誤り訂正符号のセットから選択される。様々な実施形態において、セットはRS符号のみ、BCH符号のみ、トレリス符号のみ、またはLDPC符号のみを含む。様々な実施形態において、セットはRS、BCH、トレリス、および/またはLDPC符号種別の様々な組み合わせなど、1より多くの種類を含み、符号種別の各々はそれぞれの種別の1若しくはそれ以上の特定の符号を含む。様々な実施形態において、セットは様々な速度および/または長さの符号を含む。さらなる実施形態において、1つの符号種別(BCH符号種別など)の符号が高速符号に使用され、別の符号種別(LDPC符号種別など)の符号が低速符号に使用される。
誤り統計収集または追跡ハードウェアブロックは、独立した機能ハードウェアブロックとして、あるいは1若しくはそれ以上のハードウェアブロック中に分散する機能ブロックとして実装される。たとえば誤り統計収集または追跡ハードウェアブロックは、部分的にユニバーサルデコーダ・ハードウェアブロック内に実装され、フラッシュユニットから読み出された生情報を、生情報を復号することによって生成された誤り訂正済みデータ情報と比較することによって、測定された生BERを計算できる。別の例として、誤り統計収集または追跡ハードウェアブロックは、部分的に制御/インターフェース・ハードウェアブロック内に実装され、(たとえば、フラッシュストレージのページまたはブロックなどのストレージユニットあたりの)PEサイクルおよび/または読み出しサイクルの数を計測し、所定の統計モデル用のパラメータとしてその数を使用することによって、予測される生BERを計算することができ、次に当該所定の統計モデルが予測される生BERを提供する。さらに別の例としては、誤り統計収集または追跡ハードウェアブロックは、部分的に制御/インターフェース・ハードウェアブロック内に実装され、フラッシュストレージの一部分(フラッシュストレージのページまたはブロックなど)から読み出された1若しくはそれ以上のセルのための閾値電圧(またはその代用物)を取得し、所定の統計モデル用のパラメータとして電圧を使用することによって、予測される生BERを計算することができ、次に当該所定の統計モデルが予測される生BERを提供する。さらに別の例としては、誤り統計収集または追跡ハードウェアブロックは、(ユニバーサルエンコーダを迂回することなどによって)フラッシュストレージに書き込まれる1若しくはそれ以上の所定パターンを提供し、さらに(ユニバーサルデコーダを迂回することなどによって)フラッシュストレージから戻される生ビット誤りの数を検証して測定された生BERを決定する。所定パターンは、全0パターン、全1パターン、または1若しくはそれ以上のPRBSパターンを含む。さらに別の例として、誤り統計収集または追跡ハードウェアブロックは、たとえば所定パターンのうちの1若しくはそれ以上を提供および検証することを通じて、フラッシュストレージの1若しくはそれ以上の部分の現在の生(測定された)BERを定期的に(100PEサイクルごとなど)決定できる。さらなる利点として、上述の例のいずれか1若しくはそれ以上が様々な組み合わせにおいて実現される。
様々な実施形態において、上述の誤り統計収集または追跡ハードウェアブロックによって実行される1若しくはそれ以上の機能は、1若しくはそれ以上のソフトウェア技術を通じて、全体としてまたは部分的に実現される。たとえば、プログラマブルハードウェアタイマは、プロセッサへの割り込みを提供する。これに応答して、プロセッサは、ユニバーサルデコーダ・ハードウェアブロックの一部分に1若しくはそれ以上の測定された生BER値をプロセッサに対して提供するように命令するソフトウェア割り込みハンドラルーチンを実行する。プロセッサは前記値を移動平均として蓄積する。移動平均は、少なくとも部分的に、誤り訂正符号を選択できるソフトウェア機能への入力を通じて、あるいは誤り訂正符号を選択できるハードウェアユニットへの入力として、選択された誤り訂正符号を決定するために使用される。別の例として、プロセッサは、ストレージユニットあたりのPEおよび/または読み出しサイクルを計測するために、1若しくはそれ以上のソフトウェアルーチンを実行する。計測は、プロセッサによってアドレス可能なメモリから以前のカウンタ値を読み出し、カウンタ値をインクリメントし、インクリメントされたカウンタ値をメモリに格納し直すルーチンを通じて、行われる。ハードウェアおよびソフトウェアの様々な組み合わせにおいて実行される様々な誤り統計収集および追跡機能を有するその他の実施形態も考えられる。
いくつかの実施形態において、誤り統計収集または追跡ブロックは、経時的な情報の履歴を保持し、履歴の観点から履歴を意識した生BERを計算することが可能である。たとえば、誤り統計収集または追跡ブロックは、(アクセスごとまたは動作時間ごとなどに対し、ブロックごとまたはページごとに)測定(または予測)された生BERの履歴を保持し、履歴を意識した測定(または予測)生BERを履歴から決定することが可能である。
符号化のために選択される誤り訂正符号は、様々な基準、使用シナリオ、および実施形態にしたがって、動的に決定される。たとえば、測定(または予測)された生BERは、符号化のためにどの誤り訂正符号が選択されるかに対して動的に影響を及ぼす。別の例として、履歴を意識した測定された(または予測される)生BERは、符号化のためにどの誤り訂正符号が選択されるかに対して影響を及ぼす。フラッシュストレージの特定部分の複合のために選択される誤り訂正符号は、特定部分を最後に書き込んだときに使用された符号化と一致するように動的に決定される。
様々な実施形態は、(測定または予測された)生BERの明確な計算を伴わない符号化のための誤り訂正符号の選択を実行し、むしろ1若しくはそれ以上のパラメータまたは1若しくはそれ以上のパラメータの履歴に基づいて誤り訂正符号を直接動的に選択する。前記パラメータは、訂正および/または検出された誤りの数、PEサイクルの数、読み出しサイクルの数、プログラム時間、消去時間、読み出し時間、温度、および閾値電圧を含む。様々な実施形態において、前記パラメータ(および/またはその履歴)は、フラッシュストレージ部分による(フラッシュストレージのページごとまたはブロックごとなど)。
いくつかの実施形態において、フラッシュメモリ(フラッシュユニットに含まれるものなど)は(ページまたはブロックなどの)部分として構成され、各部分は、(2Kまたは4Kバイトの情報などの)所定量の情報を格納できる。前記情報は、データ情報および誤り訂正情報を含む。いくつかの実施形態において、いずれの部分も同じ特定バイト数を誤り訂正情報として格納することができ、別の実施形態では、いくつかの部分が異なるバイト数の誤り訂正情報を格納できる。様々な誤り訂正符号(符号ライブラリによって記述されるものなど)が、異なるバイト(またはビット)数の誤り訂正情報を生成する。
たとえば、(フラッシュメモリの寿命において比較的早い時期に使用されるように)第1の誤り訂正符号を通じて符号化することで、(寿命の後期に使用されるような)第2の誤り訂正符号と比較して、比較的少ないバイト数の誤り訂正情報(たとえば誤り訂正のための冗長情報など)を生成する。いくつかの実施形態において、フラッシュメモリ(および/またはその使用)は、各部分における第2の誤り訂正符号を通じての符号化に十分な誤り訂正情報を格納することができるようになっており、第1の誤り訂正符号が使用されるときに誤り訂正情報記憶を使用しないままにしておく。別の実施形態において、フラッシュメモリ(および/またはその使用)は、各部分における第1の誤り訂正符号を通じての符号化に十分な誤り訂正情報を格納することができるが、第2の誤り訂正符号を通じての符号化に十分な誤り訂正情報を(各部分に)格納することはできない。その他の実施形態のいくつかは、部分ごとの誤り訂正情報記憶と組み合わせて、第2の誤り訂正符号を通じて符号化された誤り訂正情報を格納するのに十分な、追加フラッシュメモリストレージ(追加誤り訂正情報の格納に特化されたフラッシュメモリの領域など)を含む。
いくつかの実施形態において、フラッシュメモリは部分(ページまたはブロックまたはその重複など)として動作し、各部分はデータサブ部分(sub−portion)、およびそれぞれの対応する誤り訂正サブ部分として構成される。フラッシュメモリ(および/またはその使用)は、複数の誤り訂正符号のうちの動的に選択された特定の1つにしたがって特定量の記憶データを符号化することができ、特定量の記憶データに対応する誤り訂正情報を生成する。記憶データは、誤り訂正情報と組み合わせられて、データサブ部分の特定の1つおよび誤り訂正サブ部分の対応する特定の1つの組み合わせとして格納される。前記部分は全て同じサイズであるか、あるいは異なるサイズであってもよい。
たとえば、フラッシュメモリ(および/またはその使用)は、比較的小さい誤り訂正符号を通じて符号化するのに十分な大きさの誤り訂正情報を、誤り訂正サブ部分に完全に格納することができ、これにより対応するデータサブ部分の全てを(誤り訂正情報が生成される)記憶データの格納に利用することが可能になる。しかしながら、前記誤り訂正サブ部分は、比較的大きい誤り訂正符号を通じて符号化された誤り訂正情報を格納するのに十分な大きさではない。むしろ、データ記憶サブ部分は、誤り訂正サブ部分に適合しない誤り訂正情報の残部を格納するために「借りられる」ものであり、それによりデータ記憶サブ部分に記憶データを格納するために利用可能なスペースが(借りた量の分だけ)減少する。このため、データ記憶サブ部分の比較的小さい部分が利用可能となるため、比較的小さい誤り訂正符号を使用するときの記憶データの量と比較して、比較的大きい誤り訂正符号を使用する場合は記憶データの量が少なくなる。したがって、比較的大きい誤り訂正符号を使用するときには、フラッシュメモリ(および/またはその使用)によって、比較的少ない総利用可能スペースが提供される。
別の例として、フラッシュメモリ(および/または)は、比較的大きい誤り訂正符号を通じて符号化するのに十分な大きさの誤り訂正情報を、誤り訂正サブ部分に完全に格納することができ、対応するデータサブ部分の全てを(誤り訂正情報がそこから生成される)記憶データの格納に利用可能なままにしておく。前記誤り訂正サブ部分は、比較的小さい誤り訂正符号を通じて符号化された誤り訂正情報を格納するには十分すぎる大きさである。比較的小さい誤り訂正符号を通じて符号化された誤り訂正情報を構成した後に誤り訂正サブ部分に残っている全てのスペースを含み、これを最大限とする誤り訂正サブ部分の量は、追加記憶データを格納するために「借りられる」ものである。このため、データ記憶サブ部分の比較的大きい部分が利用可能なので、比較的大きい誤り訂正符号を使用するときの記憶データの量と比較して、比較的小さい誤り訂正符号を使用するときの方が記憶データの量が多い。したがって、比較的小さい誤り訂正符号を使用するときには、フラッシュメモリ(および/またはその使用)によって、比較的大きい総利用可能スペースが提供される。
様々な実施形態および/または使用シナリオにおいて、フラッシュメモリのいくつかの部分は、(たとえば誤り訂正サブ部分を「オーバーフローさせる」誤り訂正符号にしたがって符号化するときに必要な)上述のようなデータサブ部分からの借用にしたがって動作し、その一方でフラッシュメモリの別の部分は、(たとえばデータサブ部分に利用可能なスペースを残す誤り訂正符号にしたがって符号化するときに可能となる)上述のような誤り訂正サブ部分からの借用にしたがって動作する。様々な実施形態および/またはその使用シナリオにおいて、フラッシュメモリのいくつかの部分は、(たとえば符号化に使用される誤り訂正符号に応じて必要となる)データまたは誤り訂正サブ部分からの借用によって動作させられる。これらの部分は同じサイズまたは様々なサイズであってもよく、これらの部分はデータ(または誤り訂正)サブ部分が同じように割り当てられて、または異なる割当てによって、構成される(たとえば、全てのデータサブ部分が特定のサイズであり、あるいは全てのデータサブ部分が複数のサイズのいずれかである)。
様々な実施形態において、フラッシュメモリの一部分の使用モードは、生BERおよび/またはデータ情報を符号化するために誤り訂正符号を動的に選択するために使用される上記パラメータのうちの1若しくはそれ以上に基づいて変更される。たとえば、生BERが閾値を超えたとき、以前MLCページとして動作していたフラッシュメモリの部分(ページなど)はその後、(「lower only」のページとして当該ページを動作させることなどによって)SLCページとして動作する。別の例として、フラッシュメモリの部分の寿命の初期の間、当該部分はMLC部分として動作し、寿命におけるそれ以降の間は、当該部分はSLC部分として動作する。データを格納するために利用可能なスペースは、当該部分がSLC部分として動作しているときには(MLC部分と比較して)減少するが、しかし利用可能なスペースは、寿命の後期に利用不可能であるとマークされた場合よりも大きくなる。
様々な実施形態において、符号化のための誤り訂正符号の動的選択は、フラッシュ部分動作モードの動的選択と併せて使用される。たとえば、フラッシュメモリのページの初期動作期間の間、ページはMLCページとして動作し、第1の短符号長ECCを用いて符号化される。これに続く動作期間の間、ページはまだMLCページとして動作されているが、しかし第1の長符号長ECCにしたがって符号化される。さらに続く動作期間の間、ページはSLCページとして動作し、第2の短符号長ECCを用いて符号化される。さらに続く動作期間の間、ページはまだSLCページとして動作させられているが、しかし第2の長符号長ECCにしたがって符号化される。(ページが第1の短符号長ECCを用いて、次に第1の長符号長ECCを用いて符号化され、その後第2の短符号長ECCを用いて、次に第2の長符号長ECCを用いてSLCページとして動作させられるため)データを格納するために利用可能なスペースは動作期間にわたって減少するが、利用可能なスペースは、ページが利用不可能であるとマークされた場合よりも大きい。
あるいは、フラッシュメモリのページの生BERが第1の閾値よりも小さい間、ページはMLCページとして動作し、第1の短符号長ECCを用いて符号化される。前記生BERが第1の閾値を超えた(しかし第2の閾値未満のままである)場合またはそのようなときには、(まだMLCページとして動作したままで)ページは第1の比較的長符号長ECCを用いて符号化される。前記生BERが第2の閾値を超えた(しかし第3の閾値未満のままである)場合またはそのようなときには、ページはさらに長い符号長のECCを用いて符号化される。前記生BERが第3の閾値を超える(しかし第4の閾値未満のままである)場合またはそのようなときには、ページはSLCページとして動作させられ、第2の短符号長ECCを用いて符号化される。前記生BERが第4の閾値を超えた場合またはそのようなときには、ページはSLCページとして動作し続け、第2の比較的長符号長ECCを用いて符号化される。
いくつかの実施形態において、ページは第1の動作モード(MLCページなど)で動作し、ページ用にデータを符号化するために使用される誤り訂正符号は、(上述のパラメータのいずれかにしたがうなどして)動的に選択される。動的に選択された誤り訂正符号にしたがって使用される誤り訂正符号情報が閾値を超えた場合には、ページは第2の動作モード(SLCページなど)に入る。
様々な実施形態および/または使用シナリオにおいて、特定の状況下で、ページは誤り訂正符号選択とは無関係に、SLCページとして動作する。特定状況の例は、頻繁にアクセス可能なデータ、頻繁に書き込まれるデータ、および/またはより速いスループットの恩恵を受けるデータにページが使用されることを含む。
様々な実施形態および/または使用シナリオにおいて、フラッシュメモリの部分(たとえばページ、ブロック、またはその重複など)は、寿命の後期の長い誤り訂正符号と比較して、フラッシュメモリの寿命の初期にはより短い誤り訂正符号を用いて動作する。このため、より多くの有効量のフラッシュメモリがユーザデータに利用可能となり、したがってフラッシュメモリの寿命はその有効なオーバープロビジョンによって延長される。たとえば、フラッシュメモリ装置は、8936(744+213)バイトなど、2のべき乗よりもわずかに大きいページサイズを有する。ユーザデータのために保存されるページの比率を、フラッシュメモリ装置寿命の初期において2のべき乗よりも大きくし、寿命の後期において2のべき乗よりも小さくするように変更することで、その寿命にわたって同じ比率を使用する場合と比較して、寿命が延びる。
SSDコントローラ実装
図2Aは、フラッシュメモリベースのデータ記憶のための順応ECC技術を用いるSSDコントローラを含むSSDの実施形態の、選択された詳細を図示する。SSDコントローラ200は、1若しくはそれ以上の外部インターフェース210を経由して、ホスト(図示せず)と通信可能に接続されている。様々な実施形態によれば、外部インターフェース210は、SATAインターフェース、SASインターフェース、PCIeインターフェース、ファイバーチャネルインターフェース、イーサネット(登録商標)インターフェース(10ギガビットイーサネット(登録商標)など)、上記インターフェースの非標準バージョン、カスタムインターフェース、あるいは記憶および/または通信および/または計算装置を相互接続するために使用されるその他いずれかのタイプのインターフェース、のうちの1若しくはそれ以上である。
SSDコントローラ200は、1若しくはそれ以上の装置インターフェース290を経由して、フラッシュ装置292などの1若しくはそれ以上の記憶装置を含む不揮発性メモリ299にさらに通信可能に接続されている。様々な実施形態によれば、装置インターフェース290は、非同期インターフェース、同期インターフェース、DDR同期インターフェース、ONFI2.2互換インターフェースなどのONFI互換インターフェース、トグルモード互換フラッシュ・インターフェース、上記インターフェースの非標準バージョン、カスタムインターフェース、あるいは記憶装置に接続するために使用されるその他いずれかの種類のインターフェース、のうちの1若しくはそれ以上である。
フラッシュ装置292は、いくつかの実施形態において、1若しくはそれ以上の個々のフラッシュダイ294を有する。フラッシュ装置292のうちの特定の1つの種類に応じて、特定のフラッシュ装置292の複数のフラッシュダイ294は、並行して任意におよび/または選択的にアクセス可能である。フラッシュ装置292は、単にSSDコントローラ200と通信可能に接続されることが可能な1種類を表すに過ぎない。様々な実施形態において、SLC NAND型フラッシュメモリ、MLC NAND型フラッシュメモリ、NORフラッシュメモリ、読み出し専用メモリ、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、あるいはその他いずれかのタイプのメモリ装置または記憶媒体など、いずれの種類の記憶装置も使用可能である。
様々な実施形態によれば、装置インターフェース290は、バスごとに1若しくはそれ以上のフラッシュ装置292を備える1若しくはそれ以上のバス、バスごとに1若しくはそれ以上のフラッシュ装置292を備えるバスの1若しくはそれ以上の群であって、群に含まれるバスが全般的に並行してアクセス可能であるもの、または装置インターフェース290上へのフラッシュ装置292のその他いずれかの構成として、構成される。
引き続き図2Aにおいて、SSDコントローラ200は、ホストインターフェース211、データ処理221、バッファ231、マップ241、リサイクラ251、ECC261、装置インターフェース論理291、およびCPU271などの、1若しくはそれ以上のモジュールを有する。図2Aに示される特定のモジュールおよび相互接続は、単に一実施形態を示すに過ぎず、図示されない追加モジュールも含め、モジュールのいくつかまたは全ての多くの配置および相互接続が考えられる。第1の例において、デュアルポーティングを提供するために、2若しくはそれ以上のホストインターフェース211がある。第2の例では、いくつかの実施形態において、データ処理221および/またはECC261がバッファ231と組み合わせられる。第3の例では、いくつかの実施形態において、ホストインターフェース211はバッファ231に直接接続されており、データ処理221は任意におよび/または選択的に、バッファ231に格納されたデータ上で動作する。第4の例では、いくつかの実施形態において、装置インターフェース論理291はバッファ231に直接接続されており、ECC261は任意におよび/または選択的に、バッファ231に格納されたデータ上で動作する。
ホストインターフェース211は、外部インターフェース210を経由してコマンドおよび/またはデータを送受信し、いくつかの実施形態において、タグ追跡213を通じて個々のコマンドの進捗状況を追跡する。たとえば、コマンドは、アドレス(LBAなど)および読み出されるデータ量(たとえばセクタなどのLBA量など)を指定する読み出しコマンドを含む。これに応えてSSDは、読み出しステータスおよび/または読み出しデータを提供する。別の例として、コマンドは、アドレス(LBAなど)および書き込まれるデータ量(たとえばセクタなどのLBA量など)を指定する書き込みコマンドを含む。これに応えてSSDは、書き込みステータスを提供し、および/または書き込みデータを要求し、場合により引き続き書き込みステータスを提供する。さらに別の例として、コマンドは、もはや割り当てられる必要のないアドレス(LBAなど)を指定する割当て解除コマンドを含む。これに応えてSSDは相応にマップを変更し、場合により割当て解除ステータスを提供する。さらに別の例として、コマンドは、超コンデンサテストコマンドまたはデータハードニング成功クエリを含む。これに応えて、SSDは適切なステータスを提供する。いくつかの実施形態において、ホストインターフェース211はSATAプロトコルと互換性があり、NCQコマンドを用いて最高32までの保留コマンドを有することができ、その各々は0から31の数字で表される固有のタグを有する。いくつかの実施形態において、タグ追跡213は、外部インターフェース210経由で受信されたコマンドの外部タグを、SSDコントローラ200による処理の間、コマンドを追跡するために使用される内部タグに関連付けることができる。
様々な実施形態によれば、データ処理221は任意におよび/または選択的に、バッファ231と外部インターフェース210との間で送信されるデータの一部または全てを処理し、および/またはデータ処理221は任意におよび/または選択的にバッファ231に格納されたデータを処理する。いくつかの実施形態において、データ処理221は、フォーマット、リフォーマット、トランスコード、およびその他いずれかのデータ処理および/または操作タスクのうちの1若しくはそれ以上を実行するために、1若しくはそれ以上のエンジン223を使用する。
バッファ231は、外部インターフェース210と装置インターフェース論理291との間で送受信されるデータを格納する。いくつかの実施形態において、バッファ231は付加的に、フラッシュ装置292を管理するためにSSDコントローラ200によって使用される、一部または全てのマップテーブルなどのシステムデータを格納する。様々な実施形態において、バッファ231は、データの一次記憶に使用されるメモリ237、バッファ231に出入りするデータの移動を制御するために使用されるDMA233、およびその他のデータ移動および/または操作機能のうち、1若しくはそれ以上を有する。
様々な実施形態によれば、ECC261は任意におよび/または選択的に、バッファ231と装置インターフェース論理291との間で送信されるデータを処理し、および/またはECC261は任意におよび/または選択的に、バッファ231に格納されたデータを処理する。
装置インターフェース論理291は、装置インターフェース290を通じてフラッシュ装置292を制御する。装置インターフェース論理291は、フラッシュ装置292のプロトコルにしたがって、フラッシュ装置292とデータを送受信できる。装置インターフェース論理291は、装置インターフェース290を通じてフラッシュ装置292の制御を選択的に順序づけするためのスケジューリング293を含む。たとえば、いくつかの実施形態において、スケジューリング293は、フラッシュ装置292に対する処理をキューイングことができ、個々のフラッシュ装置292(またはフラッシュダイ294)が利用可能であれば、フラッシュ装置292(またはフラッシュダイ294)の各々に対する処理を選択的に送信することができる。
マップ241は、外部データアドレスを不揮発性メモリ299内の場所にマッピングするためのテーブル243を用いて、外部インターフェース210上で使用されるデータアドレス指定と装置インターフェース290上で使用されるデータアドレス指定との間で変換を行う。たとえば、いくつかの実施形態において、マップ241は、外部インターフェース210上で使用されるLBAを、テーブル243によって提供されるマッピングを通じて、1若しくはそれ以上のフラッシュダイ294を対象とするブロックおよび/またはページアドレスに変換する。ドライブ製造または割当て解除以来書き込まれていないLBAについては、LBAが読み出された場合に戻るべきデフォルト値を指定する。たとえば、割当て解除コマンドを処理するとき、マップは、割当て解除されたLBAに対応する入力がデフォルト値の1つを指定するように変更される。様々な実施形態には、各々が対応するポインタを有する、複数のデフォルト値がある。複数のデフォルト値は、別の割当て解除されたLBA(第2の範囲のものなど)を別のデフォルト値として読み出しながら、いくつかの割当て解除されたLBA(第1の範囲のものなど)をあるデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態において、フラッシュメモリ、ハードウェア、ファームウェア、コマンドまたはプリミティブ引数またはパラメータ、プログラマブルレジスタ、またはこれらの様々な組み合わせによって定義される。
いくつかの実施形態において、リサイクラ251はガーベジコレクションを行う。たとえばいくつかの実施形態において、フラッシュ装置292は、ブロックが書き換え可能となる前に消去されるべきブロックを含む。リサイクラ251は、マップ241によって保持されているマップを走査することによって、(たとえば割当て解除ではなく割り当てられて)フラッシュ装置292のどの部分が活発に使用されているかを判断することができ、フラッシュ装置292の未使用の(たとえば割当て解除された)部分を消去することによって、書き込み可能とすることができる。さらなる実施形態において、リサイクラ251は、フラッシュ装置292のより大きな連続部分を書き込みのために利用可能とするため、フラッシュ装置292内に格納されたデータを移動することができる。
CPU271は、SSDコントローラ200の様々な部分を制御する。CPU271はCPUコア281を含む。CPUコア281は、様々な実施形態によれば、1若しくはそれ以上のシングルコアまたはマルチコアプロセッサである。CPUコア281内の個々のプロセッサコアは、いくつかの実施形態において、マルチスレッドである。CPUコア281は、命令および/またはデータキャッシュおよび/またはメモリを含む。たとえば前記命令メモリは、CPUコア281がソフトウェア(場合によりファームウェアと呼ばれる)を実行してSSDコントローラ200を制御できるようにする命令を含む。いくつかの実施形態において、CPUコア281によって実行されるファームウェアの一部または全ては、フラッシュ装置292に格納される。
様々な実施形態において、CPU271はさらに、外部インターフェース210を経由して受信されたコマンドを、当該コマンドの進行中に追跡および制御するためのコマンド管理273と、バッファ231の割当ておよび使用を制御するためのバッファ管理275と、マップ241を制御するための変換管理277と、データアドレス指定の一貫性を制御し、外部データアクセスとリサイクルデータアクセスとの間などのデータ競合を回避するための、コヒーレンシ管理279と、装置インターフェース論理291を管理するための装置管理282と、場合によりその他の管理ユニットとを含む。様々な実施形態によれば、CPU271によって実行される管理機能のいずれかまたは全てが、ハードウェアによって、ソフトウェア(CPUコア281上でまたは外部インターフェース210経由で接続されたホスト上で実行されるソフトウェアなど)によって、またはこれらのいずれかの組み合わせによって、制御および/または管理され、あるいは管理機能のいずれもこれらによって制御および/または管理されない。
いくつかの実施形態において、CPU271は、他の管理タスク、たとえば性能統計を収集および/または報告することと、SMARTを実行する工程と、電源シーケンスを制御し、消費電力を管理および/または監視および/または調整することと、電源障害に対応することと、クロック速度を制御および/または監視および/または調整することと、その他の管理タスクとのうちの1若しくはそれ以上を、実行することができる。
様々な実施形態は、SSDコントローラ200と類似であって、ホストインターフェース211および/または外部インターフェース210の適合などによって様々なコンピューティングホストとの動作互換性がある、コンピューティングホスト・フラッシュメモリ・コントローラを含む。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、PDA、メディアプレーヤ、メディアレコーダ、デジタルカメラ、携帯電話ハンドセット、コードレス電話ハンドセット、および電子ゲーム機のうちの1つ若しくはいずれかの組み合わせを含む。
様々な実施形態において、SSDコントローラ(またはコンピューティングホスト・フラッシュメモリ・コントローラ)の全てまたはいずれかの部分は、単一のIC、マルチダイICの単一のダイ、マルチダイICの複数のダイ、または複数のICにおいて実現される。たとえば、バッファ231はSSDコントローラ200の別の要素と同じダイで実現される。別の例では、バッファ231はSSDコントローラ200の別の要素とは異なるダイで実現される。
様々な実施形態において、SSDコントローラ200の要素は、全体としてまたは部分的に、図1の様々なハードウェアブロック(または前記ハードウェアブロックによって実行される機能)を実現する。たとえば、ECC261は、図1の誤り統計収集または追跡、ユニバーサルエンコーダ、ユニバーサルデコーダ、および/または符号ライブラリ・ハードウェアブロックによって実行される1若しくはそれ以上の機能を実現する。別の例として、装置インターフェース論理291は図1の制御/インターフェース・ハードウェアブロックによって実行される1若しくはそれ以上の機能を実現し、不揮発性メモリ299は図1のフラッシュユニットを実現する。
図2Bは、図2AのSSDを含むシステムの別の実施形態の選択された詳細を示す。SSD201は、装置インターフェース290を経由して不揮発性メモリ299に接続されたSSDコントローラ200を含む。SSDは、外部インターフェース210を経由してホスト202に接続される。いくつかの実施形態において、SSD201(またはその変更例)は、ホスト202として動作するイニシエータに接続されているSASドライブまたはSATAドライブに対応する。
図2Cは、図2AのSSDを含むシステムの別の実施形態の選択された詳細を示す。図2Bのように、SSD201は、装置インターフェース290を経由して不揮発性メモリ299に接続されたSSDコントローラ200を含む。SSDは外部インターフェース210を通じてホスト202に接続され、前記外部インターフェース210は中間コントローラ203に、そして中間インターフェース204を通じてホスト202に接続される。様々な実施形態において、SSDコントローラ200は、RAIDコントローラなど、中間レベルの別のコントローラの1若しくはそれ以上を経由して、前記ホストに接続される。いくつかの実施形態において、SSD201(またはその変更例)はSASドライブまたはSATAドライブに対応し、中間コントローラ203はその後イニシエータに接続されるエキスパンダに対応するか、あるいは中間コントローラ203はエキスパンダを経由してイニシエータに間接的に接続されるブリッジに対応する。
様々な実施形態において、SSDコントローラおよび/またはコンピューティングホスト・フラッシュメモリ・コントローラは、1若しくはそれ以上の不揮発性メモリと組み合わせて、USB記憶構成要素、CF記憶構成要素、MMC記憶構成要素、SD記憶構成要素、メモリスティック記憶構成要素、およびxDピクチャカード記憶構成要素などの不揮発性記憶構成要素として実現される。
様々な実施形態において、SSDコントローラ(またはコンピューティングホスト・フラッシュメモリ・コントローラ)、またはその機能は、コントローラが接続されたホストにおいて実現される(たとえば図2Cのホスト202など)。様々な実施形態において、SSDコントローラ(またはコンピューティングホスト・フラッシュメモリ・コントローラ)の全てまたはいずれかの部分、あるいはその機能は、ハードウェア(たとえば論理回路)、ソフトウェア(たとえばドライバプログラム)、またはこれらのいずれかの組み合わせを通じて実現される。たとえば、ECCユニット(図2AのECC261と類似のものなど)の機能性、またはこれに関連付けられた機能性は、SSDコントローラ内で、部分的にソフトウェアを通じて、また部分的にハードウェアを通じて、実現される。別の例として、リサイクラユニット(図2Aのリサイクラ251と類似のものなど)の機能性、またはこれに関連付けられた機能性は、コンピューティングホスト・フラッシュメモリ・コントローラ内で、部分的にソフトウェアを通じて、また部分的にハードウェアを通じて、実現される。
実施技術例
いくつかの実施形態において、たとえば図1のハードウェアブロック、コンピューティングホスト・フラッシュメモリ・コントローラおよび/またはSSDコントローラ(図2AのSSDコントローラ200など)、など、システムが実現するするフラッシュメモリベースのデータ記憶のための順応ECC技術によって実行される動作の全てまたは一部、およびプロセッサ、マイクロプロセッサ、システムオンチップ、特定用途向け集積回路、ハードウェアアクセラレータ、または上記動作の全てまたは一部を提供するその他の回路の様々な組み合わせは、コンピュータシステムによる処理と互換性のある仕様によって指定される。前記仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述など、様々な記述に準拠している。記述の例は、Verilog、VHDL、SPICE、SPICE、PSpiceなどのSPICEの変更例、IBIS、LEF、DEF、GDS−II、OASIS、またはその他の記述を含む。様々な実施形態において、前記処理は、1若しくはそれ以上の集積回路への搭載に適した論理および/または回路を生成、検証、または指定するための解釈、コンパイル、シミュレーション、および合成の、いずれかの組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技術にしたがって設計可能および/または製造可能である。前記技術は、プログラマブル技術(フィールドまたはマスク・プログラマブル・ゲートアレイ集積回路など)、セミカスタム技術(完全または部分的セルベース集積回路など)、およびフルカスタム技術(実質的に特化された集積回路など)、これらのいずれかの組み合わせ、あるいは集積回路の設計および/または製造と互換性のあるその他いずれかの技術を含む。
いくつかの実施形態において、命令セットを格納しているコンピュータ可読媒体によって記述されるような動作の全てまたは一部の様々な組み合わせは、1若しくはそれ以上のプログラム命令の実行および/または解釈によって、1若しくはそれ以上のソースおよび/またはスクリプト言語の解釈および/またはコンパイルによって、あるいは言語ステートメントのプログラミングおよび/または記述において表現される情報をコンパイル、翻訳、および/または解釈することによって生成されるバイナリ命令の実行によって、実行される。ステートメントは、いずれの標準的なプログラミングまたは記述言語とも互換性がある(C、C++、Fortran、Pascal、Ada、Java(登録商標)、VBscript、およびShellなど)。前記プログラム命令、前記言語ステートメント、または前記バイナリ命令のうちの1若しくはそれ以上は、任意に1若しくはそれ以上のコンピュータ可読媒体要素に格納される。様々な実施形態において、前記プログラム命令のいくつか、全て、または様々な部分は、1若しくはそれ以上の機能、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはその部分として、実現される。
結論
本文および図面を作成する利便性のみのため、本明細書において特定の選択がなされてきたが、別途指示のない限り、前記選択は本質的に、記載される実施形態の構造または動作に関する付加的な情報を伝達するものとして解釈されるべきではない。前記選択の例は、図の参照番号に使用される指定の具体的な構成または割当て、および実施形態の特徴および要素を識別および参照するために使用される要素識別子(付記また参照番号など)の具体的な構成または割当てを含む。
「含む」または「含んでいる」という語は、非限定的な範囲の論理セットを記述する抽象概念として科解釈されるように特に意図されており、明確に「内に(within)」という語が続くのでない限り、物理的な包含を伝えるように意図されるものではない。
上記の実施形態は、記述および理解の明確さを目的としてある程度詳細に記載されてきたが、本発明は記載された詳細に限定されるものではない。本発明には多くの実施形態がある。開示された実施形態は例示的であって、限定的ではない。
構造、構成、および使用については前記説明と一致する多くの変更例が可能であり、本発明の特許請求の範囲に含まれることは、理解されるだろう。たとえば、相互接続および機能単位のビット幅、クロック速度、および使用される技術の種類は、各構成要素ブロックにおける様々な実施形態に応じて異なる。相互接続および論理に付与される名称は単なる例示に過ぎず、記載される概念を限定するものとして解釈されるべきではない。フローチャートおよびフロー図の工程、アクション、および機能要素の順序および構成は、様々な実施形態に応じて異なる。また、別途具体的に明記されない限り、指定された値の範囲、使用される最大値および最小値、またはその他特定の仕様(フラッシュメモリ技術の種類、ならびにレジスタおよびバッファの入力または段の数など)は、単に記載される実施形態のものに過ぎず、実施技術における改良および変化をたどると期待され、限定として解釈されるべきではない。
様々な構成要素、サブシステム、動作、機能、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはその部分を実行するために記載された技術の代わりに、当該技術分野において周知の、機能的に同等の技術が採用されてもよい。また、実施形態の多くの機能態様は、実施形態に応じた設計上の制約と、処理の高速化(以前はハードウェアに含まれていた機能のソフトウェアへの移行を促進する)および集積密度の向上(以前はソフトウェアに含まれていた機能のハードウェアへの移行を促進する)の技術トレンドとに応じて、ハードウェア(すなわち一般的には専用回路)またはソフトウェア(すなわち、プログラムされたコントローラまたはプロセッサの何らかの様式による)のいずれかにおいて、選択的に実現可能であることは理解されるべきである。様々な実施形態における具体的な変更例は、これに限定されるものではないが、パーティショニングの違い、異なるフォームファクタおよび構成、異なるオペレーティングシステムおよび別のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通林リンクの使用、ならびに特定用途の固有のエンジニアリングおよびビジネス上の制約にしたがって本明細書に記載される概念を実現する際に予想されるその他の変更例を含む。
以上の実施形態は、記載される実施形態の多くの態様の最小限の実現に必要とされるものをはるかに超えた、詳細および環境的文脈とともに記載されてきた。いくつかの実施形態は、残りの要素間での基本的な連係を変更することなく、開示された構成要素または特徴を省略していることを、当業者は認識するだろう。したがって、開示された詳細の多くは、記載された実施形態の様々な態様を実現するために必要とされるものではないことが理解される。残りの要素が先行技術のものと識別可能である限り、省略された構成要素および特徴は、本明細書に記載される概念に対して限定するものではない。
設計におけるこのような変更例の全ては、記載された実施形態によって伝えられる教示に対する実質的な変更とはならない。また、本明細書に記載された実施形態は、他のコンピューティングおよびネットワーキング用途への幅広い適用性を有しており、記載された実施形態の特定の用途または業界に限定されるものではないことも、理解される。したがって本発明は、本発明の特許請求の範囲に含まれる全ての可能な変更形態および変形形態を含むと解釈されるべきである。
100...システム
110...書き込み記憶データパス
120...ユニバーサルエンコーダ
130...制御/インターフェース
140...フラッシュユニット
150...読み出し記憶データパス
160...ユニバーサルデコーダ
170...符号ライブラリ
180...誤り統計収集または追跡
200...SSDコントローラ
201...SSD
202...ホスト
203...中間コントローラ
204...中間インターフェース
210...外部インターフェース
211...ホストインターフェース
213...タグ追跡
221...データ処理
223...エンジン
231...バッファ
233...DMA
237...メモリ
241...マップ
243...テーブル
251...リサイクラ
261...ECC
271...CPU
273...コマンド管理
275...バッファ管理
277...変換管理
279...コヒーレンシ管理
281...CPUコア
282...装置管理
290...装置インターフェース
291...装置インターフェース論理
292...フラッシュ装置
293...スケジューリング
294...フラッシュダイ
299...不揮発性メモリ

Claims (19)

  1. システムであって、
    フラッシュメモリの一部分へのアクセスにおける生ビット誤り率(BER)を動的に決定する誤り統計収集および追跡手段と、
    複数の誤り訂正符号の中から選択された1つにしたがって符号化を行い、さらに少なくとも部分的に前記生BERに基づいて前記動的に選択された誤り訂正符号を動的に決定する順応(adaptive)符号化手段と、
    を有するシステム。
  2. 請求項1記載のシステムにおいて、前記誤り訂正符号のうちの第1の誤り訂正符号による符号化の結果、前記誤り訂正符号のうちの第2の誤り訂正符号による符号化よりも少ない数の誤り訂正ビットが前記部分に格納されるものであるシステム。
  3. 請求項2記載のシステムにおいて、前記第1の誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数が、最大で、前記第2の誤り訂正符号によって使用される誤り訂正ビットの数から前記第1の誤り訂正符号によって使用される誤り訂正ビットの数を引いた差分だけ増加するものであるシステム。
  4. 請求項2記載のシステムにおいて、前記第2の誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数が、最大で、前記第2の誤り訂正符号によって使用される誤り訂正ビットの数から前記第1の誤り訂正符号によって使用される誤り訂正ビットの数を引いた差分だけ減少するものであるシステム。
  5. 請求項2記載のシステムにおいて、前記順応符号化手段は、さらに、前記部分の寿命の第1の時期の間は前記第1の誤り訂正符号を選択し、前記寿命の第2の時期の間は前記第2の誤り訂正符号を選択するものであり、前記第2の時期は前記第1の時期より後であるシステム。
  6. 請求項2記載のシステムにおいて、前記誤り統計収集および追跡手段および前記順応符号化手段のうちの1若しくはそれ以上は少なくとも部分的に、ハードウェア論理回路および/または1若しくはそれ以上のソフトウェアルーチンを通じて実現されるものであるシステム。
  7. システムであって、
    フラッシュメモリの一部分へのアクセスにおける生ビット誤り率(BER)を決定する誤り統計収集および追跡手段と、
    順応符号化手段および順応復号手段を有する順応符号化または復号手段であって、
    前記順応符号化手段は、複数の誤り訂正符号の中から第1に選択された誤り訂正符号にしたがって符号化を行い、
    前記順応復号手段は、前記誤り訂正符号の中から第2に選択された誤り訂正符号したがって復号を行うものであり、
    前記順応符号化または復号手段は、さらに、少なくとも部分的に前記誤り統計収集および追跡手段から受信した情報に基づいて、前記第1に選択された誤り訂正符号を決定するものである、
    前記順応符号化または復号手段と
    を有するシステム。
  8. 請求項7記載のシステムにおいて、前記順応符号化手段は、前記誤り訂正符号のいずれかにしたがって符号化を行うユニバーサル符号化手段であるシステム。
  9. 請求項7記載のシステムにおいて、前記順応復号手段は、前記誤り訂正符号のいずれかにしたがって復号を行うユニバーサル復号手段であるシステム。
  10. 請求項7記載のシステムにおいて、前記第1に選択された誤り訂正符号による符号化の結果、前記第2に選択された誤り訂正符号による符号化よりも少ない数の誤り訂正ビットが前記部分に格納されるものであるシステム。
  11. 請求項10記載のシステムにおいて、前記第1に選択された誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数は、最大で、前記第2に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数から前記第1に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数を引いた差分だけ増加するものであるシステム。
  12. 請求項10記載のシステムにおいて、前記第2に選択された誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数は、最大で、前記第2に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数から前記第1に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数を引いた差分だけ減少するものであるシステム。
  13. 請求項10記載のシステムにおいて、前記順応符号化手段は、さらに、前記部分の寿命の第1の時期の間は前記第1に選択された誤り訂正符号を選択し、前記寿命の第2の時期の間は前記第2に選択された誤り訂正符号を選択するものであり、前記第2の時期は前記第1の時期より後であるシステム。
  14. 請求項7記載のシステムにおいて、前記誤り統計収集および追跡手段および前記順応符号化手段のうちの1若しくはそれ以上は少なくとも部分的に、ハードウェア論理回路および/または1若しくはそれ以上のソフトウェアルーチンを通じて実現されるものであるシステム。
  15. システムであって、
    フラッシュメモリの複数の部分の各々に関連付けられた符号化率を動的に決定する動的符号化率選択手段と、
    前記決定された各符号化率にしたがって動作可能な符号化手段と、
    前記決定された各符号化率にしたがって動作可能な復号手段と
    を有し、
    前記決定された各符号化率の特定の1つにしたがって前記符号化手段によって符号化されたデータが前記部分のうちの特定の1つに書き込まれ、次に、前記特定部分から読み出されて前記復号手段によって復号されるものであるシステム。
  16. 請求項15記載のシステムにおいて、前記動的符号化率選択手段は、少なくとも部分的に、前記部分のうちの1若しくはそれ以上ごとに1若しくはそれ以上のパラメータに基づいて、または前記パラメータのうちの1若しくはそれ以上の1若しくはそれ以上の履歴に基づいて、前記各符号化率を動的に決定するものであり、前記パラメータは、
    訂正された誤りの数と、
    検出された誤りの数と、
    プログラムサイクルまたは消去サイクルの数と、
    読み出しサイクルの数と、
    プログラム時間と、
    消去時間と、
    読み出し時間と、
    温度と、
    閾値電圧と
    を含むものであるシステム。
  17. 請求項15記載のシステムにおいて、前記動的決定は、
    前記部分のうちの第1の部分に当該第1の部分の寿命の比較的初期において関連付けられる比較的低い符号化率の決定と、
    前記第1の部分に前記寿命の比較的後期に関連付けられる比較的高い符号化率の決定とを有するものであるシステム。
  18. 請求項17記載のシステムにおいて、前記比較的低い符号化率にしたがって符号化する場合、ユーザデータとして使用される前記第1の部分のビット数は、前記比較的高い符号化率にしたがって符号化するときよりも大きいものであるシステム。
  19. 請求項15記載のシステムにおいて、前記動的符号化率選択手段、前記符号化手段、および前記復号手段のうちの1若しくはそれ以上は少なくとも部分的に、ハードウェア論理回路および/または1若しくはそれ以上のソフトウェアルーチンを通じて実現されるものであるシステム。
JP2013536786A 2010-10-27 2011-10-26 フラッシュメモリベースのデータ記憶のための順応ecc技術 Pending JP2013542533A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US40717810P 2010-10-27 2010-10-27
US61/407,178 2010-10-27
PCT/US2011/057914 WO2012058328A1 (en) 2010-10-27 2011-10-26 Adaptive ecc techniques for flash memory based data storage

Publications (2)

Publication Number Publication Date
JP2013542533A true JP2013542533A (ja) 2013-11-21
JP2013542533A5 JP2013542533A5 (ja) 2014-12-11

Family

ID=45994376

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013536786A Pending JP2013542533A (ja) 2010-10-27 2011-10-26 フラッシュメモリベースのデータ記憶のための順応ecc技術

Country Status (7)

Country Link
US (2) US20140136927A1 (ja)
EP (1) EP2633409A4 (ja)
JP (1) JP2013542533A (ja)
KR (1) KR101606718B1 (ja)
CN (1) CN103329103B (ja)
TW (1) TWI512452B (ja)
WO (1) WO2012058328A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015138498A (ja) * 2014-01-24 2015-07-30 三菱電機株式会社 フラッシュメモリの誤り訂正符号化装置および方法
JP2016085671A (ja) * 2014-10-28 2016-05-19 株式会社メガチップス エラー訂正装置
JP2016161990A (ja) * 2015-02-26 2016-09-05 ファナック株式会社 誤り訂正機能による寿命予測を有する制御装置
WO2017018008A1 (ja) * 2015-07-24 2017-02-02 ソニー株式会社 符号化装置、メモリコントローラ、通信システムおよび符号化方法
JP2018507462A (ja) * 2015-01-20 2018-03-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 分散ストレージのための多重イレージャーコード
US10261857B2 (en) 2016-09-14 2019-04-16 Toshiba Memory Corporation Memory system and method for controlling code rate for data to be stored

Families Citing this family (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775717B2 (en) 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
US8241425B2 (en) * 2009-01-23 2012-08-14 Axcelis Technologies, Inc. Non-condensing thermos chuck
WO2011080768A1 (en) * 2009-12-29 2011-07-07 Ferdinando Bedeschi Memory devices comprising partitions with particular ecc attributes
EP2545554A4 (en) 2010-03-12 2015-03-11 Lsi Corp LDPC CLEARANCE DECODING FOR FLASH MEMORY
EP2646922A4 (en) 2010-12-01 2015-11-25 Lsi Corp DYNAMIC MANAGEMENT OF HIGHER LEVEL REDUNDANCY MODE WITH INDEPENDENT SILICON ELEMENTS
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
CN103415844B (zh) 2011-01-18 2016-04-20 希捷科技有限公司 用于高级冗余信息计算的系统和方法
US9130596B2 (en) * 2011-06-29 2015-09-08 Seagate Technology Llc Multiuse data channel
US9189329B1 (en) 2011-10-13 2015-11-17 Marvell International Ltd. Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level
US8793543B2 (en) 2011-11-07 2014-07-29 Sandisk Enterprise Ip Llc Adaptive read comparison signal generation for memory systems
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
JP2014035673A (ja) * 2012-08-09 2014-02-24 Renesas Electronics Corp 半導体記憶装置及び方法
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US8972826B2 (en) * 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US10318365B2 (en) 2012-11-02 2019-06-11 Hewlett Packard Enterprise Development Lp Selective error correcting code and memory access granularity switching
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9257203B2 (en) 2012-12-06 2016-02-09 Micron Technology, Inc. Setting a default read signal based on error correction
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9208018B1 (en) * 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
KR102102171B1 (ko) * 2013-04-05 2020-05-29 삼성전자 주식회사 멀티 레벨 셀 메모리 시스템
CN103269230B (zh) * 2013-05-28 2017-02-22 中国科学院自动化研究所 一种自适应调整纠错码的容错系统及方法
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9152488B2 (en) * 2013-06-25 2015-10-06 Sandisk Technologies Inc. Storage module and low-complexity methods for assessing the health of a flash memory device
WO2015005903A1 (en) * 2013-07-09 2015-01-15 Hewlett-Packard Development Company, L.P. Write flow control for memory modules that include or interface with non-compliant memory technologies
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US20150058697A1 (en) * 2013-08-22 2015-02-26 Kabushiki Kaisha Toshiba Storage device, controller and memory controlling method
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US10102060B2 (en) * 2013-08-30 2018-10-16 Hitachi, Ltd. Storage apparatus and data control method of storing data with an error correction code
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9280419B2 (en) 2013-12-16 2016-03-08 International Business Machines Corporation Dynamic adjustment of data protection schemes in flash storage systems based on temperature, power off duration and flash age
US9645924B2 (en) * 2013-12-16 2017-05-09 International Business Machines Corporation Garbage collection scaling
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9417960B2 (en) * 2013-12-20 2016-08-16 Seagate Technology Llc Preventing programming errors from occurring when programming flash memory cells
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9419655B2 (en) * 2014-04-04 2016-08-16 Seagate Technology Llc Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes
TWI545581B (zh) * 2014-04-15 2016-08-11 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元
CN105005450B (zh) * 2014-04-25 2018-11-02 群联电子股份有限公司 数据写入方法、存储器存储装置及存储器控制电路单元
US9244764B2 (en) 2014-05-08 2016-01-26 Sandisk Technologies Inc. Error correcting code techniques for a memory having a three-dimensional memory configuration
US9257186B2 (en) 2014-05-08 2016-02-09 Sandisk Technologies Inc. Memory access techniques for a memory having a three-dimensional memory configuration
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US10116336B2 (en) 2014-06-13 2018-10-30 Sandisk Technologies Llc Error correcting code adjustment for a data storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) * 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
GB2529670A (en) * 2014-08-28 2016-03-02 Ibm Storage system
GB2529669B8 (en) 2014-08-28 2017-03-15 Ibm Storage system
TWI550615B (zh) * 2014-08-28 2016-09-21 群聯電子股份有限公司 資料存取方法、記憶體儲存裝置及記憶體控制電路單元
US9652153B2 (en) 2014-09-02 2017-05-16 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9519427B2 (en) 2014-09-02 2016-12-13 Sandisk Technologies Llc Triggering, at a host system, a process to reduce declared capacity of a storage device
US9563362B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Host system and process to reduce declared capacity of a storage device by trimming
US9582202B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by moving data
US9582212B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device
US9524112B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by trimming
US9524105B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9563370B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device
US9158681B1 (en) * 2014-09-02 2015-10-13 Sandisk Technologies Inc. Process and apparatus to reduce declared capacity of a storage device by conditionally trimming
US9665311B2 (en) 2014-09-02 2017-05-30 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9582193B2 (en) * 2014-09-02 2017-02-28 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9582203B2 (en) * 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9552166B2 (en) 2014-09-02 2017-01-24 Sandisk Technologies Llc. Process and apparatus to reduce declared capacity of a storage device by deleting data
US9582220B2 (en) * 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9690655B2 (en) * 2014-09-30 2017-06-27 EMC IP Holding Company LLC Method and system for improving flash storage utilization by predicting bad m-pages
US10365859B2 (en) * 2014-10-21 2019-07-30 International Business Machines Corporation Storage array management employing a merged background management process
CN105528178B (zh) * 2014-10-21 2018-09-21 华为技术有限公司 数据存储方法及固态硬盘
TWI520140B (zh) * 2014-11-03 2016-02-01 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
US10691531B2 (en) 2014-12-04 2020-06-23 Western Digital Technologies, Inc. Systems and methods for multi-zone data tiering for endurance extension in solid state drives
US10067823B2 (en) * 2014-12-04 2018-09-04 Western Digital Technologies, Inc. Systems and methods for adaptive error corrective code mechanisms
CN106415502B (zh) * 2014-12-12 2019-07-12 华为技术有限公司 数据存储的方法和装置
US10430112B2 (en) * 2014-12-22 2019-10-01 Sandisk Technologies Llc Memory block cycling based on memory wear or data retention
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
TWI555028B (zh) * 2015-02-12 2016-10-21 慧榮科技股份有限公司 資料儲存裝置以及錯誤校正方法
US9768808B2 (en) 2015-04-08 2017-09-19 Sandisk Technologies Llc Method for modifying device-specific variable error correction settings
US9792053B2 (en) 2015-04-30 2017-10-17 Toshiba Memory Corporation Controller for nonvolatile semiconductor memory
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US10439650B2 (en) * 2015-05-27 2019-10-08 Quantum Corporation Cloud-based solid state device (SSD) with dynamically variable error correcting code (ECC) system
KR102324769B1 (ko) * 2015-06-29 2021-11-10 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US9727416B2 (en) * 2015-07-01 2017-08-08 Xilinx, Inc. Variable code rate solid-state drive
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
FR3040523B1 (fr) 2015-08-28 2018-07-13 Continental Automotive France Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur
US20170126249A1 (en) * 2015-10-30 2017-05-04 Intel Corporation Temperature dependent multiple mode error correction
US10013179B2 (en) 2015-12-03 2018-07-03 Sandisk Technologies Llc Reading logical groups of data from physical locations in memory using headers
US9946473B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive
US9946483B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning
US9830084B2 (en) 2015-12-03 2017-11-28 Sandisk Technologies Llc Writing logical groups of data to physical locations in memory using headers
CN106970852A (zh) * 2016-01-14 2017-07-21 钰创科技股份有限公司 闪存错误控制电路及其方法
JP6605359B2 (ja) * 2016-03-02 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法
US9761325B1 (en) * 2016-03-14 2017-09-12 Toshiba Memory Corporation Memory system
US10055159B2 (en) * 2016-06-20 2018-08-21 Samsung Electronics Co., Ltd. Morphic storage device
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
CN108255633B (zh) * 2016-12-28 2021-07-30 旺宏电子股份有限公司 存储控制方法、存储装置
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
KR20180086816A (ko) 2017-01-23 2018-08-01 에스케이하이닉스 주식회사 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
US10908988B2 (en) 2017-04-03 2021-02-02 Hitachi, Ltd. Storage apparatus
US10346232B2 (en) 2017-08-16 2019-07-09 Western Digital Technologies, Inc. Non-volatile storage with failure prediction
CN107656831A (zh) * 2017-08-21 2018-02-02 深圳市致存微电子企业(有限合伙) 闪存纠错方法以及纠错装置
US20190196726A1 (en) * 2017-12-26 2019-06-27 Nanya Technology Corporation Dynamic random access memory and method of operating the same
US10949113B2 (en) * 2018-01-10 2021-03-16 SK Hynix Inc. Retention aware block mapping in flash-based solid state drives
US10644727B2 (en) 2018-01-11 2020-05-05 Western Digital Technologies, Inc. Code rate switching mechanism for flash memory
JP6482690B1 (ja) * 2018-01-11 2019-03-13 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
CN108287794A (zh) * 2018-01-26 2018-07-17 国科美国研究实验室 Nand闪存的动态管理方法
CN108363639B (zh) * 2018-02-07 2022-04-05 置富科技(深圳)股份有限公司 一种参数可配置的动态bch纠错方法及装置
US10656847B2 (en) * 2018-05-10 2020-05-19 International Business Machines Corporation Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation
US10747613B2 (en) * 2018-09-07 2020-08-18 Toshiba Memory Corporation Pooled frontline ECC decoders in memory systems
KR20200034420A (ko) * 2018-09-21 2020-03-31 삼성전자주식회사 복수의 에러 정정 기능을 갖는 메모리 장치 및 메모리 시스템과 그 동작 방법
US11163886B2 (en) 2018-09-28 2021-11-02 Dell Products L.P. Information handling system firmware bit error detection and correction
US10783024B2 (en) 2018-10-12 2020-09-22 International Business Machines Corporation Reducing block calibration overhead using read error triage
TWI673613B (zh) * 2018-10-17 2019-10-01 財團法人工業技術研究院 伺服器及其資源調控方法
TWI668699B (zh) * 2018-10-25 2019-08-11 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置
KR102076624B1 (ko) 2018-12-06 2020-02-12 한국외국어대학교 연구산학협력단 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법
CN109872764B (zh) * 2019-01-18 2021-01-08 南京大学 一种多级存储单元闪存的ecc多码率编解码系统及方法
US11137910B2 (en) * 2019-03-04 2021-10-05 Advantest Corporation Fast address to sector number/offset translation to support odd sector size testing
KR102601152B1 (ko) * 2019-05-10 2023-11-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN110310692A (zh) * 2019-06-28 2019-10-08 上海华虹集成电路有限责任公司 一种增强使用寿命的非易失性存储器擦除控制方法
US11088711B2 (en) 2019-07-08 2021-08-10 Winbond Electronics Corp. Memory apparatus and data accessing method thereof
KR20210025249A (ko) * 2019-08-27 2021-03-09 삼성전자주식회사 메모리 시스템 및 그 동작 방법
US10963336B2 (en) 2019-08-29 2021-03-30 Micron Technology, Inc. Semiconductor device with user defined operations and associated methods and systems
US11200118B2 (en) 2019-08-29 2021-12-14 Micron Technology, Inc. Semiconductor device with modified command and associated methods and systems
US11042436B2 (en) 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
TWI723515B (zh) * 2019-08-29 2021-04-01 華邦電子股份有限公司 記憶體裝置及其資料存取方法
KR20210085284A (ko) 2019-12-30 2021-07-08 삼성전자주식회사 Pim 메모리 디바이스, pim 메모리 디바이스를 포함하는 컴퓨팅 시스템 및 pim 메모리 디바이스의 동작 방법
JP2021141369A (ja) * 2020-03-02 2021-09-16 キオクシア株式会社 メモリシステム
KR20210147686A (ko) 2020-05-29 2021-12-07 에스케이하이닉스 주식회사 오류 정정 회로 및 오류 정정 인코딩 방법
CN111638994B (zh) * 2020-06-01 2021-05-04 长江存储科技有限责任公司 一种闪存存储器及其错误比特计数检测方法和系统
CN111863080A (zh) * 2020-07-08 2020-10-30 上海威固信息技术股份有限公司 一种基于层间差异的3d闪存读性能优化方法
CN113094296B (zh) * 2021-04-29 2023-10-10 深圳忆联信息系统有限公司 Ssd读加速的实现方法、装置、计算机设备及存储介质
WO2023047149A1 (en) * 2021-09-23 2023-03-30 Micron Technology, Inc. Improved ecc configuration in memories
US11704027B2 (en) * 2021-11-12 2023-07-18 Western Digital Technologies, Inc. Optimizing recovery of recurrent blocks using bloom filter
US11853607B2 (en) 2021-12-22 2023-12-26 Western Digital Technologies, Inc. Optimizing flash memory utilization for NVMe KV pair storage
US11817883B2 (en) 2021-12-27 2023-11-14 Western Digital Technologies, Inc. Variable length ECC code according to value length in NVMe key value pair devices
US11733876B2 (en) 2022-01-05 2023-08-22 Western Digital Technologies, Inc. Content aware decoding in KV devices
CN114637712B (zh) * 2022-03-18 2023-03-10 无锡众星微系统技术有限公司 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置
US20230393932A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Managing data integrity using a change in a number of data errors and an amount of time in which the change occurred
TWI836610B (zh) * 2022-09-19 2024-03-21 慧榮科技股份有限公司 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003131954A (ja) * 2001-08-16 2003-05-09 Hewlett Packard Co <Hp> 動的可変長誤り訂正符号
JP2004164634A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装
JP2005216301A (ja) * 2004-01-29 2005-08-11 Hewlett-Packard Development Co Lp 誤り訂正符号を有する固体記憶装置を構成するシステムおよび方法
JP2007316779A (ja) * 2006-05-23 2007-12-06 Sharp Corp 不揮発性メモリシステム
JP2008508632A (ja) * 2004-08-02 2008-03-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ記憶及び再生装置
JP2009080651A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 半導体記憶装置、及びその制御方法
JP2010092574A (ja) * 2008-10-12 2010-04-22 Kyoto Software Research Inc フラッシュファイルシステムの誤り訂正機能
JP2010518523A (ja) * 2007-03-08 2010-05-27 インテル・コーポレーション 動的ecc符号化率調節方法、装置、およびシステム

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1235189A (en) * 1985-01-14 1988-04-12 Haruhiko Akiyama Error correction encoding system
US5644312A (en) * 1994-11-30 1997-07-01 Analog Devices, Inc. Rom encoder circuit for flash ADC'S with transistor sizing to prevent sparkle errors
US5699365A (en) * 1996-03-27 1997-12-16 Motorola, Inc. Apparatus and method for adaptive forward error correction in data communications
GB2329805B (en) * 1996-05-15 2000-09-20 Seagate Technology Read error recovery utilizing ECC and read channel quality indicators
US6477669B1 (en) * 1997-07-15 2002-11-05 Comsat Corporation Method and apparatus for adaptive control of forward error correction codes
US6931009B1 (en) * 1997-07-15 2005-08-16 Viasat, Inc. Frame format and frame assembling/disassembling method for the frame format
US6182264B1 (en) * 1998-05-22 2001-01-30 Vlsi Technology, Inc. Smart dynamic selection of error correction methods for DECT based data services
US6957379B1 (en) * 1999-01-04 2005-10-18 Maxtor Corporation Method and apparatus for selecting storage capacity of data storage media
JP3699863B2 (ja) * 1999-07-12 2005-09-28 株式会社日立コミュニケーションテクノロジー エラー訂正符号装置、エラー訂正符号復号装置および伝送装置
CA2324574A1 (en) * 2000-10-26 2002-04-26 Bin Li An optimal bit allocation algorithm for reed-solomon coded data for adsl
US7290184B2 (en) * 2001-08-23 2007-10-30 Seagate Technology Llc Emulation system for evaluating digital data channel configurations
JP4459960B2 (ja) * 2003-09-15 2010-04-28 インテル・コーポレーション 高スループットの空間−周波数ブロック・コードを使用するマルチアンテナ・システムおよび方法
KR100732628B1 (ko) * 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
US7526715B2 (en) * 2005-10-17 2009-04-28 Ramot At Tel Aviv University Ltd. Probabilistic error correction in multi-bit-per-cell flash memory
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8171380B2 (en) * 2006-10-10 2012-05-01 Marvell World Trade Ltd. Adaptive systems and methods for storing and retrieving data to and from memory cells
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
CN100458718C (zh) * 2006-12-29 2009-02-04 福昭科技(深圳)有限公司 一种闪存存储装置及其数据读取和写入方法
US7984360B2 (en) * 2006-12-31 2011-07-19 Ramot At Tel Aviv University Ltd. Avoiding errors in a flash memory by using substitution transformations
CN101256521B (zh) * 2007-03-01 2010-12-01 创惟科技股份有限公司 提高闪存资料存取可靠性的方法
EP2188898A4 (en) * 2007-09-14 2011-11-02 Agency Science Tech & Res METHOD FOR ENCODING BIT SEQUENCE AND ENCODING CIRCUIT
US8429492B2 (en) * 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
WO2009072103A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
WO2009078006A2 (en) * 2007-12-18 2009-06-25 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
KR101398212B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8442398B2 (en) * 2008-10-21 2013-05-14 Broadcom Corporation Performance monitoring in passive optical networks
US8407400B2 (en) * 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
KR101059673B1 (ko) * 2008-12-26 2011-08-25 서울대학교산학협력단 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법
US8370702B2 (en) * 2009-06-10 2013-02-05 Micron Technology, Inc. Error correcting codes for increased storage capacity in multilevel memory devices
US8495467B1 (en) * 2009-06-30 2013-07-23 Micron Technology, Inc. Switchable on-die memory error correcting engine
CN102098130A (zh) * 2009-12-15 2011-06-15 意法半导体研发(深圳)有限公司 具有高速度和高可靠性的高效动态传输
WO2011080768A1 (en) * 2009-12-29 2011-07-07 Ferdinando Bedeschi Memory devices comprising partitions with particular ecc attributes
US8327226B2 (en) * 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8656256B2 (en) * 2010-07-07 2014-02-18 Stec, Inc. Apparatus and method for multi-mode operation of a flash memory device
US8832507B2 (en) * 2010-08-23 2014-09-09 Apple Inc. Systems and methods for generating dynamic super blocks
US8560922B2 (en) * 2011-03-04 2013-10-15 International Business Machines Corporation Bad block management for flash memory
KR101991911B1 (ko) * 2012-05-22 2019-06-24 삼성전자주식회사 비트 상태 맵핑 동작을 수행하는 코드 변조 인코더와 코드 변조 디코더를 포함하는 메모리 컨트롤러, 그것을 포함하는 데이터 저장 장치 및 플래시 메모리 시스템
US8898549B2 (en) * 2013-02-12 2014-11-25 Seagate Technology Llc Statistical adaptive error correction for a flash memory
US9026867B1 (en) * 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003131954A (ja) * 2001-08-16 2003-05-09 Hewlett Packard Co <Hp> 動的可変長誤り訂正符号
JP2004164634A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装
JP2005216301A (ja) * 2004-01-29 2005-08-11 Hewlett-Packard Development Co Lp 誤り訂正符号を有する固体記憶装置を構成するシステムおよび方法
JP2008508632A (ja) * 2004-08-02 2008-03-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ記憶及び再生装置
JP2007316779A (ja) * 2006-05-23 2007-12-06 Sharp Corp 不揮発性メモリシステム
JP2010518523A (ja) * 2007-03-08 2010-05-27 インテル・コーポレーション 動的ecc符号化率調節方法、装置、およびシステム
JP2009080651A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 半導体記憶装置、及びその制御方法
JP2010092574A (ja) * 2008-10-12 2010-04-22 Kyoto Software Research Inc フラッシュファイルシステムの誤り訂正機能

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015138498A (ja) * 2014-01-24 2015-07-30 三菱電機株式会社 フラッシュメモリの誤り訂正符号化装置および方法
JP2016085671A (ja) * 2014-10-28 2016-05-19 株式会社メガチップス エラー訂正装置
JP2018507462A (ja) * 2015-01-20 2018-03-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 分散ストレージのための多重イレージャーコード
JP2016161990A (ja) * 2015-02-26 2016-09-05 ファナック株式会社 誤り訂正機能による寿命予測を有する制御装置
US9906242B2 (en) 2015-02-26 2018-02-27 Fanuc Corporation Control device performing lifetime prediction by error correction function
WO2017018008A1 (ja) * 2015-07-24 2017-02-02 ソニー株式会社 符号化装置、メモリコントローラ、通信システムおよび符号化方法
US10481971B2 (en) 2015-07-24 2019-11-19 Sony Corporation Encoding device, memory controller, communication system, and encoding method
US10261857B2 (en) 2016-09-14 2019-04-16 Toshiba Memory Corporation Memory system and method for controlling code rate for data to be stored
US10789125B2 (en) 2016-09-14 2020-09-29 Toshiba Memory Corporation Memory system and method

Also Published As

Publication number Publication date
CN103329103A (zh) 2013-09-25
US20160188405A1 (en) 2016-06-30
EP2633409A1 (en) 2013-09-04
KR101606718B1 (ko) 2016-03-28
TW201234170A (en) 2012-08-16
KR20130096753A (ko) 2013-08-30
TWI512452B (zh) 2015-12-11
EP2633409A4 (en) 2014-07-23
US20140136927A1 (en) 2014-05-15
CN103329103B (zh) 2017-04-05
WO2012058328A1 (en) 2012-05-03

Similar Documents

Publication Publication Date Title
TWI512452B (zh) 資料儲存系統
US10365920B2 (en) Management of device firmware update effects as seen by a host
US9971547B2 (en) Storage system with application to NVM address, span, and length
TWI579854B (zh) 用於快閃記憶體之低密度同位檢查抹除解碼
JP6452278B2 (ja) 不揮発性メモリの耐久性平準化のためのセル損傷の測定
KR101467941B1 (ko) 비휘발성 저장부에 대한 가변 오버­프로비저닝
US9461904B2 (en) Selective enablement of operating modes or features via host transfer rate detection
US9396104B1 (en) Accessing compressed data of varying-sized quanta in non-volatile memory
CN114708898A (zh) 表格管理方法、存储器存储装置及存储器控制电路单元

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141024

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160229

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20160427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160610

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160809