JP5567378B2 - 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム - Google Patents

不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム Download PDF

Info

Publication number
JP5567378B2
JP5567378B2 JP2010097570A JP2010097570A JP5567378B2 JP 5567378 B2 JP5567378 B2 JP 5567378B2 JP 2010097570 A JP2010097570 A JP 2010097570A JP 2010097570 A JP2010097570 A JP 2010097570A JP 5567378 B2 JP5567378 B2 JP 5567378B2
Authority
JP
Japan
Prior art keywords
codeword
data
code
metadata
ecc
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
JP2010097570A
Other languages
English (en)
Other versions
JP2010262640A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010262640A publication Critical patent/JP2010262640A/ja
Application granted granted Critical
Publication of JP5567378B2 publication Critical patent/JP5567378B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Description

本発明は一般にコンピュータ・メモリに関するものであり、より詳細には不揮発性メモリの適応型エンデュランス・コーディング(adaptive endurancecoding)に関するものである。
相変化メモリ(Phase-Change Memory : PCM)及びフラッシュ・メモリは、エンデュランス(endurance)が限られた(「寿命が限られた」とも言われる)不揮発性メモリの例である。このようなメモリは、メモリ・セルが複数回の書き込みサイクル(PCMではRESETサイクル、フラッシュ・メモリではプログラム/消去サイクル)を経ることで損耗し、情報を信頼性のある形で記憶することができなくなる点で、エンデュランスが限られている。
メモリへのパターンの書き込みがセルの損耗を低減するように行われるエンデュランス・コーディングと呼ばれる技法を利用することにより、寿命が限られたメモリの寿命を延長することができる。現行のエンデュランス・コーディング方式の欠点は、データの肥大化を招く点、及びエンデュランス・コーディングのパラメータをデータ圧縮率及びメモリ・ページ長に適合させる機構を備えていない点である。このことは、データ・ワード毎に異なるページ長を使用すること、あるいはエンデュランスの向上を犠牲にすることが必要となることを意味する。
他の関連する実装環境としては、メモリ書き込み毎、又はメモリの寿命期間中、あるいはその両方におけるデータ記憶量を増加させることが可能な追記型(write-once)メモリ及び書き込み効率の良い(write-efficient)メモリの書き込み方法が挙げられる。これらの方法にも、エンデュランス・コードを様々なデータに応じて適応的に選択することができないという欠点がある。
例示的な一実施形態は、書き込みデータ及び書き込みアドレスを受信するステップを含むデータ記憶方法である。圧縮アルゴリズムが前記書き込みデータに適用され、それによって圧縮データが生成される。エンデュランス・コードが前記圧縮データに適用され、それによってコードワードが生成される。前記エンデュランス・コードは、前記圧縮を前記書き込みデータに適用することによって節約されたスペースの量に応じて選択され適用される。前記コードワードは、前記書き込みアドレスに書き込まれる。
別の実施形態は、書き込みデータ及び書き込みアドレスを受信する受信器を含むシステムである。前記システムは、圧縮アルゴリズムを前記書き込みデータに適用して圧縮データを生成するデータ圧縮プログラム(data compressor)も含む。前記システムは更に、前記圧縮を前記書き込みデータに適用することによって節約されたスペースの量に応じて選択され適用されるエンデュランス・コードを前記圧縮データに適用するエンデュランス・エンコーダを含む。前記エンデュランス・エンコーダからの出力は、コードワードである。前記システムは更に、前記コードワードを前記書き込みアドレスに書き込むメモリ書き込み装置(memory writer)を含む。
別の例示的な実施形態は、コードワードをメモリ・アドレスから検索するステップを含むメモリ・アクセス方法である。前記コードワードとメタデータ行列との乗算を実行して、前記コードワードに関するメタデータが復元される。前記メタデータは、データ位置指定を含む。前記メタデータに応じて前記コードワード内のデータが識別され、前記データは、読み取りデータとして出力される。
他の例示的な実施形態は、コードワードをメモリ・アドレスから検索するメモリ読み取り装置(memory reader)を含むシステムである。前記システムは、前記コードワードとメタデータ行列との乗算を実行して、データ位置指定を含む前記コードワードに関するメタデータを復元するメタデータ・コンピュータも含む。前記システムは更に、前記メタデータに応じて前記コードワード内のデータを識別するメタデータ・インタープリタと、前記データを読み取りデータとして出力する送信器と、を含む。
本発明の実施形態に係る各技法を利用すれば追加的な特徴及び利点が理解されるだろう。本明細書では他の実施形態及び態様についても説明するが、これらも添付の特許請求範囲に記載される発明の一部と見なされる。本発明の利点及び特徴は、以下の説明及び添付図面を参照すればより良く理解されるだろう。
本発明と見なされる主題は、特許請求範囲の各請求項に個別具体的に記載されている。本発明の上記及び他の特徴及び利点は、以下の詳細な説明を添付図面と併せて読めば明らかとなるだろう。
例示的な一実施形態によって実施され得るデータ書き込みプロセスを示す図である。 例示的な一実施形態によって実施され得るデータ書き込み用メモリ・コントローラのブロック図である。 例示的な一実施形態によって実施され得るエラー訂正エンコーダのブロック図である。 例示的な一実施形態によって実施され得るデータ読み取りプロセスを示す図である。 例示的な一実施形態によって実施され得るデータ読み取り用メモリ・コントローラのブロック図である。 ECCの検査位置をアドレス書き込み毎に変更するように実施され得る例示的な一実施形態を示す図である。 例示的な一実施形態によって実施され得るデータ書き込みシステムのブロック図である。 例示的な一実施形態によって実施され得るエンコーダを示す図である。 例示的な一実施形態によって実施され得るデータ読み取りシステムのブロック図である。 例示的な一実施形態によって実施され得る読み取りプロセスを示す図である。 例示的な一実施形態によって実施され得る共同(joint)圧縮/展開を実行するプロセスを示す図である。 例示的な一実施形態によって実施され得る共同圧縮/エンデュランス・コーディングを示す図である。
本発明の例示的な一実施形態は、メモリに書き込まれるデータが、メモリ・セルの損耗を低減することによってメモリ寿命を延長する形に変換される、寿命が限られたメモリ向けの適応型エンデュランス・コーディング・システム及び方法を含む。例示的な一実施形態において、書き込みデータはエラー耐性を備える(即ち、記憶後の記憶情報にエラーが生じた場合もデータが復元可能となる)。
例示的な一実施形態は、エンデュランスが改善されたデータを不揮発性メモリ・デバイス上に書き込むシステム及び方法を含む。エンデュランス・コーディング及びエラー耐性と共に無損失データ圧縮を利用して、エンデュランス・コーディング・パラメータがデータの特性及びメモリ・ページ・サイズのようなメモリ・パラメータに適合される。それ故、書き込まれるデータの圧縮率が非常に高い場合には、高いエンデュランス利得が達成される可能性がある。一方、データの圧縮率がそれほど高くない場合には、エンデュランス・コードは、符号化データがメモリ・ページ内に確実に収まるように選択される。そのため、例示的な一実施形態を用いると、生成されるデータが常に所与のメモリ・ページ内に収まることを保証しながらエンデュランス・コーディングの最大限の利益を得ることが可能となる。これによりメモリ・ブックキーピングが大幅に簡略化され、そのためメモリ・アクセス性能が改善される。更に、例示的な一実施形態は、データがメモリから正しく復元され得ることを保証しながらエンデュランス利得が保持されるようなエラー耐性を備える。
図1は、例示的な一実施形態によって実施され得る適応型エンデュランス・コーディングを使用したデータ書き込みプロセスを示す。ブロック102で、書き込みデータ及び書き込みアドレスが(例えばメモリ・コントローラにおいて)受信される。例示的な一実施形態において、書き込みアドレスはページ・アドレスであり、書き込みデータはページ・データ(例えば4Kビット)である。ブロック104で、書き込みデータが圧縮されて圧縮データが生成される。次にブロック106で、エンデュランス・コードが圧縮データに適用されて圧縮エンデュランス符号化データ(compressed endurancecoded data)が生成される。適用されるエンデュランス・コードは、圧縮データ及びターゲット・メモリ・デバイス(単数又は複数)の特性に基づいて選択される。ブロック108で、書き込みデータ、圧縮データ、及び圧縮エンデュランス符号化データのうちの1つが選択され、ブロック110で、選択されたデータがECC符号化されてコードワードが生成される。ブロック112で、コードワードは、メモリの書き込みアドレスに書き込まれる。
図2は、例示的な一実施形態によって実施され得るデータ書き込み用メモリ・コントローラのブロック図である。図2に示されるメモリ・コントローラ202は、不揮発性メモリへの書き込みをメモリ・エンデュランスが改善される形で行うために、データ圧縮とエンデュランス・コーディングとを組み合わせる。図2に示される例示的なメモリ・コントローラ202は、本明細書ではRAMコード・テーブル204と呼ばれるコード・テーブルをランダム・アクセス・メモリ(RAM)内に含み、RAMコード・テーブル204には、不揮発性メモリ206(例えばメモリ・デバイス上)に記憶されるデータ単位毎のエンデュランス・コード/圧縮ステータス情報が格納される。図2に示される例示的なRAMコード・テーブル204内のステータス情報は、(1)ページ・ステータスが「非符号化(un‐coded)」(「U」)、「圧縮(compressed)」(「C」)、「圧縮エンデュランス符号化(compressed andendurance coded)」(「E」)のうちのどれに該当するかを示すインジケーションと、(2)現在のページ・データが使用可能なエラー修正コード・セットのうちのどれを使用して符号化されたかを示すECCコード索引(ECC code index)と、(3)該当する場合は、ページ・データがどのエンデュランス・コードを使用して符号化されたかを示すエンデュランス・コード索引(endurance code index)と、を含む。RAMコード・テーブル204に格納される情報は、本明細書では「メタデータ」と呼ばれる。
図2に示されるメモリ・コントローラ202に対する入力は、書き込まれるページのアドレスと、そのページに書き込まれるデータとを含む。例示的な一実施形態において、これらの入力は、メモリ・コントローラ202上(又は他の位置)に配置された受信器を介して受信される。この受信器は、各入力又は各入力が配置される記憶位置(例えばレジスタ)あるいはその両方を受信するハードウェアを含めた様々な形で実装することができる。ページ・アドレスは、エンデュランス・コーディング・ステータス情報を検索するためにRAMコード・テーブル204の索引付けを行うのに使用される。ページ・データ(本明細書では「書き込みデータ」とも呼ばれる)は、データ圧縮プログラム208に入力され、データ圧縮プログラム208は、無損失データ圧縮アルゴリズムを適用して書き込みデータを圧縮する。実装可能な無損失データ圧縮アルゴリズムの例としては、必ずしもそれだけに限定されるわけではないが、算術符号化、ハフマン(Huffman)符号化、レンペル・ジフ(Lempel-Ziv)符号化、及びBWT符号化が挙げられる。また、書き込みデータの特性(統計値等)が既知のアプリオリ(a-priori)である又は予測可能である場合は、その知識をデータ圧縮効率の向上に利用するように特殊化された任意の無損失符号化アルゴリズムを適用することができる。
データ圧縮プログラム208から出力される圧縮ワードは、エンデュランス・エンコーダ210に入力される。エンデュランス・エンコーダ210は、複数のエンデュランス・コードのうちの1つを選択するために、圧縮ワードの特定の特性と共に、場合によっては使用されるエラー修正コード(error correction code :ECC)及び以前のページ・コンテンツに関する情報も使用する。例示的な一実施形態において、不揮発性メモリ206は、バイナリNANDフラッシュのような「追記型」メモリであり、エンデュランス・エンコーダ210は、2レベルのワンショット型有界重みバイナリ・コーダ(one-shot boundedweight binary coder)である。即ち、エンデュランス・エンコーダ210は、書き込みが消去ページに対して行われると仮定し、固定数未満の非消去シンボルを有する出力ワードを生成する。この場合、エンデュランス・エンコーダ210は、エンデュランス符号化ワードが不揮発性メモリ206の固定ページ長に収まることを保証しながら、最大限のエンデュランス利得を得るために、圧縮データ・ワードの長さに基づいて有界重み制約(bounded weightconstraint)を選択する。それ故、オリジナル・データの圧縮率が非常に高く、且つ圧縮ワード長が小さい場合には、小さい有界重み制約が得られる可能性があり、それによって高いエンデュランス利得を得ることが可能となる。一方、ページの圧縮率がそれほど高くない場合には、大きい有界重み制約を使用してエンデュランス符号化ワードがメモリ・ページ内に確実に収まるようにすることが可能となる。更に、エンデュランス・エンコーダ210は、ECCコード・レートの知識を利用しながら強制すべき有界重みを選択することができ、これを使用して、例えば不揮発性メモリ206に書き込まれるエラー符号化ワードが所与の重み制約を満足することを保証することができる。
一代替実施形態において、不揮発性メモリ206は、マルチ・レベル相変化メモリのような「再書き込み可能(rewritable)」メモリであり、エンデュランス・エンコーダ210は、マルチ・レベル・ウォーターフォール・コードを使用する。エンデュランス・エンコーダによって選択されるウォーターフォール・コードは、データ圧縮プログラム208の出力によって示されるデータ圧縮率の関数である。エンデュランス・エンコーダは、複数のコードのうちの1つがデータ圧縮プログラム208の出力に基づいてエンデュランス・コーディング用に選択される追記型メモリ及び書き込み効率の良いメモリ向けのコード等、当業界で知られる他のコードを利用することもできる。
エンデュランス・コードが選択されると、そのコードを使用して、データ圧縮プログラム208によって生成された圧縮ワードに対応する出力コードワードが生成される。別の例示的な実施形態において、不揮発性メモリ206は、追記型又は再書き込み可能メモリ(PCM等)であり、エンデュランス・エンコーダ210は、エンデュランス・コードの選択ならびに出力コードワードの生成のために、追加的に不揮発性メモリ206の以前のページ・コンテンツの知識も使用する。この以前のコンテンツは、メモリ読み取りプロセス218によって読み取られ、エンデュランス・エンコーダは、エンデュランス符号化コードワードを生成するためにプロセス218の出力を使用する。使用されるエンデュランス・コードの索引は、RAMコード・テーブル204に入力される。
図2に示されるように、エンデュランス・エンコーダ210の出力、データ圧縮プログラム208の出力、及びオリジナル書き込みデータは、データ・セレクタ(data selector)212に入力される。データ・セレクタ212は、これらの3つのうちのどれを不揮発性メモリ206に書き込むべきかを、例えばワード長や圧縮及びエンデュランス・コーディングによって得られる利得等に基づいて決定する。例示的な一代替実施形態において、この決定は、データ圧縮プログラム208及びエンデュランス・エンコーダ210によって順次行われ、データ・セレクタ212は必要とされない。例えば、データ圧縮プログラム208の出力の長さが入力ワードの長さ以上である場合には、データ圧縮プログラム208は単純に、入力ワードをエンデュランス・エンコーダ210に出力する。同様に、エンデュランス・エンコーダ210によって生成されたワードがページ内に収まらないほど長い場合、又は他の望ましくない特性を有する場合には、エンデュランス・エンコーダ210は単純に、圧縮/オリジナル書き込みデータ・ワードをエラー訂正エンコーダ214に直接出力する。上記のいずれの実施形態でも、当該ページのコーディング・ステータスは、格納のためにRAMコード・テーブル204に送られる。その後、データ・セレクタ212の出力は、エラー訂正エンコーダ214に送られ、エラー訂正エンコーダ214は、複数のECCのうちの1つを選択してデータを符号化する。
図3は、例示的な一実施形態によって実施され得るエラー訂正エンコーダ214のブロック図である。図3に示されるように、入力データはまず、システマティック(systematic)ECCエンコーダ302を使用したシステマティック・コードを使用して符号化される。次に、システマティックECCエンコーダ302の出力が索引付きパーミュータ(indexed permuter)304に入力されて、複数の所定の順列のうちの1つを使用して符号化データが順序変更(permute)される。選択される順列は、RAMコード・テーブル204に格納されたECCコード索引に基づくものである。例示的な諸代替実施形態では、入力データが生成されたコードワードに収容され、パリティ・シンボル位置がコード索引に応じて異なるような複数のシステマティック・コードを使用することができる。これらの例示的な諸実施形態のいずれかを使用する利点は、パリティ・ビットに起因する損耗がセル位置全体に拡散され、それによって損耗が均一化され、メモリ・エンデュランスが改善されることである。使用されるECCコードの索引は、格納のためにRAMコード・テーブル204に送られ、コードワードは、不揮発性メモリ206(例えばメモリ・デバイス)への書き込みのためにメモリ書き込みプロセスに送られる。
例示的な一実施形態において、エラー訂正エンコーダ214によって使用されるECCのレートは、データ圧縮プログラム208の出力によって示されるデータ圧縮率に依存する。例示的な一実施形態では、常に最小限の(又はデフォルトの)エラー訂正能力(例えばECCパリティ・ビット数で測定される)が使用される。圧縮データの長さが事前定義された閾値を下回る場合は、エラー訂正能力を高めるためにECCパリティ・ビット数が増加される。それ故、本実施形態では、エンデュランス・コードの選択とECCコードの選択は、いずれもデータ圧縮率に基づいて行われる。前述のとおり、エンデュランス・エンコーダ210によるエンデュランス・コードの選択は、使用されるECCコードの知識を利用して行われる。これにより、エラー訂正エンコーダ214によって生成されるコードワードがメモリに書き込まれる正しい長さとなることが保証される。一代替実施形態では、複数のECC保護レベル(無保護を含む)が可能であり、適切なレベルは、圧縮データ長と複数の閾値との比較に基づいて選択される。
再び図2を参照すると、エラー訂正エンコーダ214によって生成されたコードワードは、不揮発性メモリ206への書き込みのためにメモリ書き込みプロセス216に送られる。例示的な一実施形態において、不揮発性メモリ206は、メモリ書き込みプロセス216が書き込み速度、書き込み電力、書き込み損耗のような属性を変更することが可能となる1つ又は複数のプログラム可能なパラメータを有するようなメモリである。例えば、不揮発性メモリ206は、セル書き込み毎に複数の反復を使用し、反復数がプログラム可能なPCMとすることができる。この場合、使用される反復数が大きくなるほど書き込みプロセスの精度が高まるが、電力消費及び書き込みレイテンシも高まることになる。別の例として、不揮発性メモリ206は、浮遊ゲートの電圧レベル配置がプログラム可能なフラッシュ・メモリとすることができる。この場合、書き込み速度、書き込み電力、及び書き込み損耗は、各レベル間の間隔を狭めることによって低減することができるが、その代償として浮遊ゲートの電荷摂動によるエラー確率が増加する可能性がある。本実施形態において、エラー訂正能力は、データ圧縮プログラム208の出力によって示されるデータ圧縮率に基づいてエラー訂正エンコーダ214によって選択され、書き込みプロセスのパラメータは、利用されるエラー訂正能力に基づいて選択される。それ故、例えばデータの圧縮率が高い場合は、書き込み電力の低減、書き込みレイテンシの短縮、又は書き込み損耗の低減、あるいはそれらのすべてが書き込み精度を犠牲にして実現されるような書き込みパラメータの選択が可能となる、高いエラー訂正能力を利用することができる。この高いエラー訂正能力により、低い書き込み精度でも十分に信頼性のあるデータ記憶が保証される。
図2に示されるRAMコード・テーブル204を用いると、エンデュランス・コーディングを機能させるのに必要な情報への迅速なアクセスが可能となる。RAMコード・テーブル204内の情報が(例えば停電等によって)失われないことを保証するために、RAMコード・テーブル204は、不揮発性メモリ206(又は他のメモリ)に定期的に再書き込みされる。このプロセス中に、RAMコード・テーブル204内の情報は、エラー訂正エンコーダ/デコーダ222による保護のためにECC符号化され、その後書き込みプロセス220によって不揮発性メモリ206に書き込まれる。電力が失われた場合、RAMコード・テーブル204は、読み取りプロセス220及びエラー訂正デコーダ222によってメモリからリロードされ得る。例示的な一代替実施形態において、RAMコード・テーブル204は、ステータス情報のキャッシュとして働き、任意の所与の時点では、不揮発性メモリ・ページの一部分のみに関する情報がRAMコード・テーブル204に格納される。ページ・アクセスが行われると、それらの情報はRAMコード・テーブル204内にシフトされ、あるページが所与の期間にわたって使用されない場合は、情報がRAMコード・テーブル204外にシフトされる。例示的な諸実施形態では、当業界で知られる他のキャッシュ技法を使用して情報をRAMコード・テーブル204の内外にシフトすることができる。別の実施形態において、RAMコード・テーブル204(キャッシュとして使用されることも使用されないこともある)は、データが記憶される不揮発性メモリ・デバイスよりもエンデュランスが高い第2の不揮発性メモリ・デバイス上に記憶される。
圧縮データ・ワードの特性に基づくエンデュランス・コードの選択は、それによってエンデュランス利得がページ圧縮に適合可能となり、エンデュランス・コーディングの最大限の利益を得ることが保証され得る点で有利であることに留意していただきたい。同時に、生成されるデータがメモリ・ページ長の変更を必要とせずに常に所与のメモリ・ページ内に収まることを保証することにより、メモリ・ブックキーピングが大幅に簡略化され、そのためメモリ・アクセス性能が改善される。
図4は、例示的な一実施形態によって実施され得る適応型エンデュランス・コーディングを使用したデータ読み取りプロセスを示す。ブロック402で、読み取りアドレスが(例えばメモリ・コントローラにおいて)受信され、ブロック404で、その読み取りアドレスに記憶されるコードワードが不揮発性メモリ206から検索される。ブロック406で、ECCデコーダが当該コードワードに適用される。ブロック408で、読み取りアドレスによって参照されるページ(又は他のメモリ単位)に対応するメタデータの検索又は導出あるいはその両方が行われる。メタデータは、メモリ・ページに記憶されるデータのステータスを記述する。例示的な一実施形態において、ステータスは、「非符号化(un-coded)」、「圧縮(compressed)」、又は「圧縮エンデュランス符号化(compressed andendurance coded)」である。また、メタデータは、メモリ・ページ内のデータに関して使用されるエンデュランス・コーディング及びECCコーディングを記述することもできる。ページ・ステータスが「非符号化」である場合には、ECC復号化データは、ブロック410で読み取りデータとして出力される。ページ・ステータスが「圧縮」である場合には、ECC復号化データは、ブロック410で解凍され、読み取りデータとして出力される。ページ・ステータスが「圧縮エンデュランス符号化」である場合には、ECC復号化データは、ブロック410でエンデュランス・コード・デコーダを介して送出され、その後解凍され、読み取りデータとして出力される。
図5は、例示的な一実施形態によって実施され得るデータ読み取り用メモリ・コントローラのブロック図である。読み取りアドレスが与えられた場合は、必要に応じて適切なページ・ステータス情報(例えばメタデータ)がRAMコード・テーブル204にロードされる。例示的な一実施形態において、この処理は、読み取りプロセス514及びエラー訂正デコーダ512によって実行される。その後、データは、メモリ読み取りプロセス504によって不揮発性メモリ206から読み取られる。不揮発性メモリ206から読み取られたコードワードは、RAMコード・テーブル204内のページ・アドレス(即ち読み取りアドレス)に対応したECCコード索引に対応する復号化プロセスを使用するエラー訂正デコーダ506に入力される。エラー訂正デコーダ506の出力は、ページ・ステータス(E/C/U)に応じて適切に経路指定される。ステータスが「U」(非符号化)である場合には、エラー訂正デコーダ506の出力は、メモリ・コントローラ502から直接読み取りデータとして出力される。ページ・ステータスが「C」(圧縮)である場合には、エラー訂正デコーダ506の出力は、データ解凍プログラム(data de‐compressor)508に経路指定され、そこで解凍された出力は、メモリ・コントローラ502から読み取りデータとして出力される。最後に、ページの読み取りステータスが「E」(エンデュランス符号化)である場合には、データは、エンデュランス・デコーダ510を経てデータ解凍プログラム508に経路指定され、最終的にメモリ・コントローラ502から読み取りデータとして出力される。例示的な一実施形態において、出力は、メモリ・コントローラ502上(又は他の位置)に配置された送信器によって実行される。送信器は、各出力、又は各出力が記憶される記憶位置若しくはレジスタ、あるいはその両方を送信するハードウェアを含めた様々な形で実装することができる。
図2及び図5に示される要素の一部又は全部を別の物理位置、例えば、必ずしもそれだけに限定されるわけではないがメモリ・モジュールやメモリ・ハブのような別のメモリ要素に配置することもできることに留意していただきたい。
上述の例示的な実施形態では、ページ・ステータス(E/C/U)、及びページから読み取られる情報の正しい変換処理に必要となる他の情報を記述するメモリ・コントローラからアクセス可能なテーブル、即ちRAMコード・テーブル204が利用される。この情報及びこのタスクに利用され得る他の情報はすべて、本明細書では「メタデータ」と呼ばれる。場合によっては、上記のコントローラ・テーブルを必ずしも使用せず、その代わりにメタデータをデータと共に直接不揮発性メモリ206に記憶する一実施形態を実施することが望ましい。その理由は、コントローラ・テーブルは実装コストが高くなる場合があるからである。この概念の容易な実装を妨げる主な障害は、メタデータを記憶する物理メモリが一般に残りのデータ位置と同じ損耗及びエラー・メカニズムの影響を受け、したがってメタデータを不揮発性メモリ206の固定位置に逐語的に記憶することができなくなることである。原理上、エンデュランス・コーディングとエラー訂正コーディングは共にメタデータについても必要とされ、したがって循環論的な問題が生じる。
以下、例示的な一実施形態によって実現され得るこの問題の解決策について説明する。メタデータをベクトルmで示し、メモリに書き込まれるコードワードをベクトルvで示す。読み取りプロセス及び書き込みプロセスで共用される事前指定された2つの行列をH及びMと定義する。ここで、Hは、システマティック・エラー修正コード及びM(本明細書では「メタデータ行列」とも呼ばれる)のパリティ検査行列(本明細書では「パリティ行列」とも呼ばれる)である。基本的な概念は、メタデータmを事前指定された位置に記憶する代わりに、行列Mとベクトルvとの乗算からメタデータが復元可能となるようなコードワードvを計算することである。システマティックECCは、vがメモリから正しく復元され得ることを保証する。例示的な一実施形態は、特定のアドレスが複数回書き込まれたときにシステマティックECCの検査位置(「追加ビット」とも呼ばれる)が循環するという追加的な要件を有し、これによって異なるメモリ・セルの均一な損耗が保証される。
図6は、ECCの検査位置をアドレス(例えばページ)書き込み毎に変更するように実施され得る例示的な一実施形態を示す。図6に示されるように、あるアドレスに対する第1の書き込み602に関するコードワード内のECCビット(又は検査位置)は、コードワードの最初の3ビットに配置される。このアドレスに対する第2の書き込み604に関するコードワード内のECCビットは、コードワードの第2ビットから第4ビットに配置され、このアドレスに対する第3の書き込み606に関するコードワード内のECCビットは、コードワードの最後の3ビットに配置される。それ故、コードワード内のECCビットの位置は変化する。
図7は、メタデータを記憶する上でコード・テーブルを使用しない、例示的な一実施形態によって実施され得るデータ書き込みシステムのブロック図である。非圧縮データが圧縮プログラム(compressor)702に供給され、圧縮プログラム702は、圧縮データと、データの圧縮/展開の有無及びその程度を示す圧縮パラメータと、を生成する。圧縮データ及びパラメータは、エンデュランス・コード・エンコーダ704に渡され、エンデュランス・コード・エンコーダ704は、選択されたメモリに書き込まれるパターンを使用した場合にコストが最小となるような圧縮データの符号化手法を選択する。このステップは任意選択で、ターゲット・メモリ・アドレスに現在書き込まれているデータに依存する。換言すると、コストは、書き込まれるデータ・パターンにのみ依存することも、書き込まれるデータ・パターンと現在書き込まれているデータ・パターンの両方に依存することもある。
次に、データ・セレクタ706を使用して、データを非圧縮で記憶するのか、圧縮して記憶するのか、それとも圧縮エンデュランス符号化して記憶するのかが決定される。更に、この決定と共にエンデュランス・コーディングが利用された場合はそのタイプも記述するメタデータが計算される。このステップの結果、処理対象データ・シンボルは、メタデータと共にメモリに記憶される。
メタデータ及び処理対象データ・シンボルは、ECCエンコーダ708に渡され、ECCエンコーダ708は、ECC関数に外部的に渡される所与の位置集合に関する検査シンボルを生成する。特定のメモリ・アドレスに関する所与の位置集合は、先述のとおりアドレスへの書き込みが行われる度に循環する。ECCエンコーダ708による検査シンボルの生成は、各検査シンボルが、行列Mとの乗算によって求められたコードワードvから所望のメタデータmが得られるように選択されることを保証する。ECCエンコーディングの結果、即ちコードワードvは、メモリに出力される。
図8は、例示的な一実施形態によって実施され得るECCエンコーダ708を示す。行列H及びMは事前に固定され、行列Hは、システマティックECCのパリティ検査行列である。最初の式802は、ECCエンコーダ708からの一般的な期待値を定義するものであり、ここでは、Hv=0、即ちvがパリティ検査行列Hによって定義される線形コードのコードワードとなり、且つMv=m、即ちメタデータmが乗算Mvによってvから復元可能となるようなコードワード・ベクトルvを計算する必要がある。ECCエンコーダ708の他の要件は、コードワードvにおいて、ベクトルcで示される検査シンボルが外部指定されたシンボル位置に配置され、そのため、ベクトルdで示される所与の処理対象データ・シンボルが残りの位置に配置されることである。一例において、この位置集合は、開始位置が選択可能とされ得るコードワード内の連続するシンボル集合である。
図8に示されるように、処理対象データ・シンボルdと検査シンボルcとがアセンブルされてコードワードvが形成される。このアセンブルは、検査シンボルの所望の位置に依存する。図8のブロック806では3つの例が与えられている。1つ目の例では、検査シンボルがコードワードの先頭に置かれ、2つ目の例では、検査シンボルがコードワードの2番目のシンボルから開始され、3つ目の例では、検査シンボルがコードワードの末尾に置かれる。
上記の図8には、エンコーダがその式を利用して検査シンボルを計算することが可能となる式804も含まれる。上記の各式は、行列B,B,...,B、所望のメタデータm、及び所望の処理対象データ・シンボルdに依存する。かかる行列は、各検査のすべての可能な位置毎に1つずつ存在する。
行列B,B,...,Bは、事前指定された行列H及びMを処理することによって発見することができる。例示的な一実施形態において、この処理は以下のとおりとなる:次式のような行列Aを発見する。
Figure 0005567378

上式で、Iは単位行列を示す。事前乗算の結果の他のセクションはB、即ち、検査シンボルがコードワードvの始点に配置される場合に望ましい行列となる。同様の手順を経て、B(図示)、B(図示せず)等が得られる。一般に、各Bは、以下のような行列A、即ち、当該行列に行列
Figure 0005567378

を乗じ、その結果得られる行列が所望のデータ・シンボル位置に対応する列内に単位行列を含むような行列Aを判定することによって計算することができる。実際の一実装環境では、B,B,B,...の必ずしもすべての行列について専用の回路を有することが必要とされるわけではないことに留意していただきたい。例えば、Hが巡回コードのパリティ検査行列である場合、Bは、Bに対角行列を事前に乗じることによってBから計算することができる。Hで定義されるエラー修正コードの各シンボルは、GF(2)(ただし、pは任意の所望の拡大体の次数)を含む任意のガロア体に由来するものであってよい。
が計算されると、検査ビットが次式のように計算される。
Figure 0005567378

また、コードワードvは、検査ビット及びデータ・シンボルが図8の式806で示されるような所望の位置にくるように、ベクトルc及びdをアセンブルすることによって計算される。コードワードvは、式802が所望の形で成り立つ特性を有する。
図9は、例示的な一実施形態によって実施され得るデータ読み取りシステムのブロック図である。メモリに書き込まれるオリジナル・コードワードは、ベクトルvで示されるが、本例ではエラー・ベクトルeによって破損されており、その結果、読み取り時に受け取られるワードはv+eとなる。このワードがECCデコーダ902に入力される。ECCデコーダ902は、H(v+e)=Heとなるようなエラー・パターンeの発見を試行する。試行が成功(誤訂正がないと仮定)した場合、ECCデコーダ902は、v+e及びeからvを計算し発見する。ECCデコーダ902は、訂正不可能なエラー・ステータスや訂正可能なエラー・ステータス等を記述するエラー修正コード・フラグも生成する。デコードの結果であるvは、メタデータ計算ブロック904に渡され、メタデータ計算ブロック904は、メタデータ・ベクトルm=Hvを計算する。メタデータの計算結果であるmは、メタデータ・インタープリタ・ブロック906に渡され、メタデータ・インタープリタ・ブロック906は、エンデュランス・コード及び圧縮パラメータならびに処理対象データ・シンボルの位置が復元されるように当該メタデータを変換処理する。例示的な一実施形態において、エンデュランス・コード・パラメータは、該当する場合は、データの符号化に使用されたエンデュランス・コードの記述を含む。例示的な一実施形態において、圧縮パラメータは、データの圧縮の有無に関する記述を含む。処理対象データ・シンボルは、処理対象データ・シンボルの位置に関する情報と共にvから復元される。次に、その結果は、エンデュランス・コード・デコーダ908に供給され、その後解凍プログラム(de-compressor)910に供給され、その結果所望のデータが得られる。
メタデータを記憶する上でコード・テーブルを使用しない、エラーを含まないメモリに対して書き込みを行うシステムの例示的な一実施形態において、書き込みエンコーダに対する入力は、メモリに記憶されるデータと、メモリに書き込まれるコードワード内のデータの所望の位置(メタデータに含めることができ、本明細書では「データ位置指定(data locationspecification)」と呼ばれる)と、圧縮エンデュランス・コード・パラメータ(compression andendurance code parameter)を含む追加的なメタデータと、を含む。書き込みエンコーダの出力は、データ位置指定と矛盾しないように配置されたデータ及び追加的なシンボルから構成されるコードワード・ベクトル、即ち、データ・シンボルが所望のシンボル位置に配置されるコードワードである。書き込みエンコーダは、データ位置指定を満足するコードワードであって、そのコードワードに事前指定された行列Mを乗じたときにメタデータが得られるようなコードワードを発見する。
先述の書き込みエンコーダの実施形態によって書き込まれたデータを読み取るシステムの例示的な一実施形態において、読み取りデコーダに対する入力は、メモリから受け取られるコードワードを含む。読み取りデコーダの出力は、メモリに記憶されるデータであり、任意選択でメタデータとなる。読み取りデコーダは、行列Mに受け取られたコードワードを乗じてメタデータを復元し、そのメタデータからデータの位置及びコードワード内の追加的なビットを復元する。読み取りデコーダは、データと共に必要に応じてメタデータも返す(又は出力する)。
メタデータを記憶する上でコード・テーブルを使用しない、エラーを含むメモリに対して書き込みを行うシステムの例示的な一実施形態において、書き込みエンコーダに対する入力は、メモリに記憶されるデータと、メモリに書き込まれるコードワード内のデータの所望の位置と、圧縮エンデュランス・コード・パラメータを含む追加的なメタデータと、を含む。書き込みエンコーダの出力は、データ位置指定と矛盾しないように配置されたデータ及び追加的なシンボルを含むコードワード・ベクトル、即ち、データ・シンボルが所望のシンボル位置に配置され、追加的なビットが事前指定されたECCのパリティ・ビットを含むコードワードである。書き込みエンコーダは、データ位置指定を満足するコードワードであって、そのコードワードに事前指定された行列Mを乗じたときにメタデータが得られ、ECCのパリティ検査行列Hを乗じたときに既知の値、例えばゼロが得られるようなコードワードを発見する。
先述の書き込みエンコーダの実施形態によって書き込まれたデータを読み取るシステムの例示的な一実施形態において、読み取りデコーダに対する入力は、メモリから受け取られるエラー・コードワードを含む。読み取りデコーダの出力は、メモリに記憶されるデータとされ、任意選択でメタデータとされる。読み取りデコーダは、パリティ検査行列Hで事前に固定されたECCを適用して、受け取られたコードワードのエラーを訂正する。訂正が成功した場合、読み取りデコーダは、行列Mに訂正したコードワードを乗じてメタデータを復元し、そのメタデータからデータの位置及びコードワード内の追加的なビットを復元する。読み取りデコーダは、データと共に必要に応じてメタデータも返す(又は出力する)。
メタデータを記憶する上でコード・テーブルを使用しない、エラーを含むメモリに対して書き込みを行うシステムの例示的な一実施形態において、書き込みエンコーダに対する入力は、メモリに記憶されるデータと、メモリに書き込まれるコードワード内のデータの所望の位置(メタデータに含めることができる)と、使用すべき可変数のECCシンボル(又はビット)(ECCシンボルの数は複数の選択肢から選択される)と、圧縮エンデュランス・コード・パラメータを含む追加的なメタデータと、を含む。書き込みエンコーダの出力は、データ位置指定と矛盾しないように配置されたデータ及び追加的なシンボルから構成されるコードワード・ベクトル、即ち、データ・シンボルが所望のシンボル位置に配置され、追加的なビットが必要なECCビット数に基づいて選択されたECCに由来するパリティ・ビットを含むコードワードである。書き込みエンコーダは、データ位置指定を満足するコードワードであって、そのコードワードに事前指定された行列Mを乗じたときにメタデータが得られ、選択されたECCのパリティ検査行列Hを乗じたときに既知の値、例えばゼロが得られるようなコードワードを発見する。
先述の書き込みエンコーダの実施形態によって書き込まれたデータを読み取るシステムの例示的な一実施形態において、読み取りデコーダに対する入力は、メモリから受け取られるエラー・コードワードを含む。読み取りデコーダの出力は、メモリに記憶されるデータとされ、任意選択でメタデータとされる。可変ECCビットの可能な数のそれぞれについて、読み取りデコーダは、対応するパリティ検査行列を適用してエラー訂正を試行する。訂正に成功したパリティ検査行列が1つでもあれば、読み取りデコーダは、行列Mに訂正したコードワードを乗じてメタデータを復元し、そのメタデータからデータの位置及びコードワード内の追加的なビットを復元する。読み取りデコーダは、データと共に必要に応じてメタデータも返す(又は出力する)。
例示的な一代替実施形態は、記憶コンテンツに適用されるエンデュランス・コーディング及び圧縮技法を記述する拡張メタデータの追加を必要とせずに同様の結果を得る方法を含む。図10に示される実施形態において、使用される特定のエンデュランス・コードは、記憶コンテンツを分析することによって得られる。書き込み手順1000は、以下のとおりである。Nビットのデータ・シーケンス1002が、K≧N個のセルに書き込まれる。データが圧縮され、それによってC個の情報シンボルから成る圧縮シーケンス1004が得られる。2つの閾値1006及び1008、即ちc1及びc2は、それぞれc1<c2<Nで固定される。C>c2の場合には、データはそのまま書き込まれ、K−N個のセルが「1」でパディング(padding)されてK個の拡張ビットから成るシーケンス1010が形成される。このシーケンスは、任意選択でスクランブルされる。例示的な諸実施形態において、コンテンツが符号化せずに書き込まれる場合には、オプショナル・フラグ・ビット1012が書き込まれる。C≦c1の場合には、第1のコード、即ちコード1を使用してエンデュランス・コーディングが実行される。例示的な諸実施形態において、コード1は、コードワード長Kの有界重みコード(bounded weight code)であり、それ自体のゼロの数は、z00〜z01の範囲であり、z00及びz01は、可能な有界重みコードワードの総数が2c1以上となるように選択される。例示的な諸実施形態において、コード1は、コードワード長Kの一定重みコード(constant weight code)であり、それ自体のゼロの数z0は、可能な一定重みコードワードの総数が2c1以上となるような数である。例示的な一実施形態において、c1<C≦c2である場合には、第2のコード、即ちコード2を使用してエンデュランス・コーディングが実行される。例示的な諸実施形態において、コード2は、コードワード長Kの有界重みコードであり、それ自体のゼロの数は、z10〜z11の範囲に含まれ、z10及びz11は、可能な有界重みコードワードの総数が2c2以上となるような数である。例示的な諸実施形態において、コード2は、コードワード長Kの一定重みコードであり、それ自体のゼロの数z1は、可能な一定重みコードワードの総数が2c2以上となるような数である。
図10では、読み取り手順1020の例示的な一実施形態が示されている。メモリ・コンテンツの属するエンデュランス・コードを識別するために、メモリ・コンテンツの読み取り及び分析が行われる。例示的な諸実施形態において、この分析は、メモリ・コンテンツのゼロの数をカウントするステップと、カウントされたゼロの数と一致する一意のエンデュランス・コードを選択するステップと、を含む。コードワードが可能な所与のコード・ファミリー内のどのエンデュランス・コードとも一致しない場合には、非符号化コンテンツ(スクランブルされている可能性もある)が仮定される。いずれにせよ、非符号化コンテンツの存在を知らせる追加的なフラグが存在し設定されている場合には、非符号化コンテンツが仮定される。この分析によってコードが識別され、非符号化フラグが設定されていない場合には、識別されたコードを使用してコンテンツが復号化される。本発明は、一定重みコード又は有界重みコードに限定されるものではなく、同様の実施形態は、使用可能なエンデュランス・コーディング・コード・ファミリーから選択される様々な数の可能なコードを使用することができ、その場合も各コードはコードワードを検査することによって一意に識別され得ることが当業者には理解されるだろう。例示的な一実施形態では、K=Nである。
図11に示される別の例示的な実施形態は、共同圧縮/展開を以下の基準に従って実行して、N個のデータ・ビットをK個のセルに効率的に符号化するステップを含む。ブロック1102で、すべてのデータ・ビット・シーケンスがリストされ、確率の降順にソートされる。ブロック1104で、長さKのすべてのコードワードがコストの昇順にソートされる。コードワードのコストは、コードワードの書き込みに関連するエンデュランスへの影響に正比例する。ブロック1106で、ソートされたデータ・シーケンス・リストの1番目の要素(即ち、確率が最も高いNデータ・ビット・シーケンス)と、ソートされたコードワード・リストの1番目の要素(即ち、エンデュランスへの影響が最も小さいコードワード)とを関連付け、その後2番目の要素同士を関連付け、以下同様に関連付けを行うことにより、データ・ビット・シーケンスとコードワードとの間の単射関係を表すテーブルが作成される。対応する符号化プロセスでは、記憶対象の情報シーケンスが受け取られると、書き込み対象の対応するコードワードを発見するためにテーブルの照会が行われる。対応する復号化プロセスでは、コードワードがメモリから検索され、コードワードが発見されるまでテーブルがスキャンされる。復号化される出力は、受け取られるコードワードに関係する情報データである。例示的な一実施形態において、一般的な基準は、確率が最も高いシーケンスと、コストが最も小さいコードワードとを関連付けることである。
図12は、例示的な一実施形態によって実施され得る一例を示す。図12に示されるように、a、b、c、dは、それぞれデータ・メッセージであり(N=2とすれば、a=00、b=01、c=10、d=11)、それぞれの確率が同じ行に示されている。「0」の書き込みコストが1と等しく、「1」の書き込みコストがゼロと等しいと仮定して、それぞれK=2及びK=3の2つのコードが作成される。これらのメッセージは、確率の降順に順序付けされ、対応するコードワードは、コストの昇順に順序付けされる(K=2では0,1,1,2、K=3では0,1,1,1)。K=2のコードの平均コストは0.3125(セル単位)、K=3の平均コストは0.1667(セル単位)である。マッピングa=00、b=01、c=10、d=11を直接書き込む場合、関連コストは0.6785(セル単位)となる。
本明細書に記載の諸実施形態は、1つの不揮発性メモリ・デバイスのページ内の符号化された情報だけでなく、単一の外部要求に応じてデータを配信する単一の論理エンティティとして働く、複数の不揮発性メモリ・デバイスの各ページ内の符号化された情報にも適用される。データを配信するデバイスが1つ存在するのか複数存在するのかに関わらず、データは、ページ・サブセクションにアクセスするだけで取得可能となる。複数のデバイスが存在する場合、各デバイスは、共通のページ・アドレスを有する共通のページ・サブセクションにアクセスする。
技術的効果及び利益としては、適応型エンデュランス・コーディングを実行する能力が挙げられる。本明細書に記載されるように、メモリに書き込まれるデータは、メモリ・セルの損耗を低減することによってメモリ寿命を延長する形に変換される。また、本明細書に記載される形で書き込まれるデータは、エラー耐性が高まる可能性がある(例えば、記憶情報にエラーが生じた場合もデータが復元可能となる)。
本明細書で使用される用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することは本出願人の意図するところではない。本明細書で使用される「a」、「an」、及び「the」といった単数形の表現は、特に明記しない限り複数形の概念も含むことが意図されている。更に、本明細書で使用される「備える」又は「含む」(「comprises」又は「comprising」)あるいはその両方の用語は、本明細書で言及される特徴、整数、ステップ、動作、要素、又は構成要素、あるいはそれらのすべての存在を示すものであって、それらの用語の使用により、1つ又は複数の他の特徴、整数、ステップ、動作、要素、構成要素、又はそれらから成る群、あるいはそれらのすべての存在又は追加が排除されるわけではないことを理解していただきたい。
添付の特許請求範囲に記載される請求項中のすべてのミーンズ・プラス・ファンクション要素又はステップ・プラス・ファンクション要素の対応する構造、材料、作用、及び等価物は、請求項に具体的に記載される他の要素と組み合わせて機能を発揮する任意の構造、材料、又は作用を含むことが意図されている。本発明の記載は例示及び説明のために提示しているものであって、本発明の実施形態を余すところのないものとし、又は開示の形態に限定することは、本出願人の意図するところではない。当業者には本発明の範囲及び趣旨から逸脱しない多くの修正、変更が可能なことは明白であろう。上記の実施形態は、本発明の諸原理及び実際の応用例が最良の形で説明されるように、また、想定される特定の使用に適するように様々な修正が施された様々な実施形態について当業者が本発明を理解することが可能となるように選択され説明されている。
本明細書に示される各フロー図は、単なる一例にすぎない。各図面又は各図面に記載されるステップ(又は動作)には、本発明の趣旨から逸脱しない限り様々な変更を施すことができる。例えば、各ステップを異なる順序で実行することも、ステップの追加、削除、あるいは修正を行うことも可能である。これらの変形形態はすべて各請求項に記載される発明の一部と見なされる。
上述のとおり、本発明の諸実施形態は、コンピュータ実装プロセス及びそれらのプロセスを実行する装置の形で実施することができる。本発明の諸実施形態は、フレキシブル・ディスク、CD‐ROM、ハード・ドライブ、他の任意のコンピュータ読み取り可能な記憶媒体等、有形の媒体内で実行される命令を含むコンピュータ・プログラム・コードであって、それらがコンピュータにロードされ、コンピュータによって実行されたときに当該コンピュータが本発明を実施する装置となる、コンピュータ・プログラム・コードの形で実施することもできる。本発明は、例えばストレージ・メディアに記憶されるものであれ、コンピュータへのロード又はコンピュータによる実行あるいはその両方が行われるものであれ、電気配線又は電気ケーブル、光ファイバ、電磁放射等、何らかの伝送媒体を介して伝送されるものであれ、それらがコンピュータにロードされ、コンピュータによって実行されたときに当該コンピュータが本発明を実施する装置となる、コンピュータ・プログラム・コードの形で実施することもできる。当該コンピュータ・プログラム・コードが汎用マイクロプロセッサに実装された場合、その汎用マイクロプロセッサは、当該コンピュータ・プログラム・コードの各セグメントによって特定の論理回路を形成するように構成される。
以上、本発明の好ましい実施形態について説明したが、当業者なら現在及び将来にわたって各請求項の範囲に含まれる様々な改良及び機能拡張を施すことができることが理解されるだろう。各請求項は、当初の記載の発明の適切な保護を維持するものと解釈すべきである。
202、502 メモリ・コントローラ
204 RAMコード・テーブル
206 不揮発性メモリ・デバイス
208 データ圧縮プログラム
210 エンデュランス・エンコーダ
212 データ・セレクタ
214 エラー訂正エンコーダ
216 メモリ書き込みプロセス
218、504 メモリ読み取りプロセス
220、514 メモリ書き込み/読み取りプロセス
222、512 エラー訂正エンコーダ/デコーダ
302 システマティックECCエンコーダ
304 索引付きパーミュータ
506 エラー訂正デコーダ
508 データ解凍プログラム
510 エンデュランス・デコーダ
702 圧縮プログラム
704 エンデュランス・コード・エンコーダ
708 ECCエンコーダ
902 ECCデコーダ
908 エンデュランス・コード・デコーダ
910 解凍プログラム

Claims (20)

  1. データ記憶方法であって、
    書き込みデータ及び書き込みアドレスを受信するステップと、
    圧縮アルゴリズムを前記書き込みデータに適用して圧縮データを生成するステップと、
    前記圧縮アルゴリズムを前記書き込みデータに適用することによって節約されたスペースの量に応じて選択されエンデュランス・コードを前記圧縮データに適用して、符号化された前記圧縮データを含むコードワードを得るステップと、
    前記コードワードを前記書き込みアドレスに書き込むステップと、
    を含む方法。
  2. 前記コードワードを書き込むステップの前に、エラー修正コード(ECC)ビットを前記コードワードに追加するステップを更に含む、請求項1に記載の方法。
  3. 前記コードワードに追加される前記ECCビットの数は、前記圧縮アルゴリズムを前記書き込みデータに適用することによって節約されたスペースの量に対応する、請求項2に記載の方法。
  4. 前記コードワードに追加される前記ECCビットの数は、前記圧縮アルゴリズムを前記書き込みデータに適用することによって節約されたスペースの量に応じて、デフォルト数のECCビット及び可変数のECCビットを含む、請求項2に記載の方法。
  5. 前記コードワード内の前記ECCビットの位置は、書き込み毎に変更される、請求項2〜4のいずれか1項に記載の方法。
  6. 前記書き込みは、前記コードワードが前記書き込みアドレスに書き込まれたときに、書き込み速度の増加、電力レベルの低下、及び損耗レベルの低下のうちの少なくとも1つが達成されるように、前記コードワードに追加されるECCビットの数に応じてプログラムされる、請求項2〜5のいずれか1項に記載の方法。
  7. 前記書き込みアドレスに関するメタデータを生成するステップを更に含み、前記メタデータは、前記書き込みアドレスに書き込まれる前記コードワードを復号化する読み取り動作で利用される、請求項1〜6のいずれか1項に記載の方法。
  8. 前記メタデータをテーブルに格納するステップを更に含む、請求項7に記載の方法。
  9. 前記コードワードを読み取るステップと、
    前記コードワードの分析を実行するステップと、
    前記分析に応じて前記エンデュランス・コードを識別するステップと、
    識別された前記エンデュランス・コードに関するデコーダを使用して前記コードワードを復号化するステップと、
    復号化された前記コードワードを解凍して前記書き込みデータを生成するステップと、
    を更に含む、請求項1〜8のいずれか1項に記載の方法。
  10. 前記圧縮アルゴリズムを適用するステップと、前記エンデュランス・コードを適用するステップとは、データ・ビット・シーケンスとコードワードとの間の単射関係を表すテーブルを使用して併せて実行される、請求項1〜9のいずれか1項に記載の方法。
  11. システムであって、
    書き込みデータ及び書き込みアドレスを受信する受信器と、
    圧縮アルゴリズムを前記書き込みデータに適用して圧縮データを生成するデータ圧縮プログラムと、
    前記圧縮アルゴリズムを前記書き込みデータに適用することによって節約されたスペースの量に応じて選択されたエンデュランス・コードを前記圧縮データに適用して、符号化された前記圧縮データを含むコードワードを得るエンデュランス・エンコーダと、
    前記コードワードを前記書き込みアドレスに書き込むメモリ書き込み装置と、
    を備えるシステム。
  12. 前記コードワードが前記メモリ書き込み装置によって書き込まれる前に、エラー修正コード(ECC)ビットを前記コードワードに追加するエラー訂正エンコーダを更に備える、請求項11に記載のシステム。
  13. 前記コードワード内の前記ECCビットの位置は、書き込み毎に変更される、請求項12に記載のシステム。
  14. メモリ・アクセス方法であって、
    コードワードをメモリ・アドレスから検索するステップと、
    前記コードワードとメタデータ行列との乗算を実行して、データ位置指定を含む前記コードワードに関するメタデータを復元するステップと、
    前記メタデータに基づいて、適用されたエンデュランス・コードを識別するステップと、
    識別された前記エンデュランス・コードに関するデコーダを使用して前記コードワードを復号化するステップと、
    復号化された前記コードワードを解凍して前記データを生成するステップと、
    解凍された前記データを読み取りデータとして出力するステップと、
    を含み、前記エンデュランス・コードは、書き込み時に圧縮アルゴリズムを書き込むデータに適用することによって節約されたスペースの量に応じて選択されて圧縮されたデータに適用されたものである、方法。
  15. 前記コードワードは、ECCビットを更に含み、前記方法は、前記メタデータを復元するステップの前に、前記コードワード内のECCビットの数に対応するパリティ行列で指定されるECCコードを実施するように設計されたECCデコーダを前記コードワードに適用するステップを更に含む、請求項14に記載の方法。
  16. 前記コードワード内の前記ECCビットの数は可変である、請求項15に記載の方法。
  17. 前記コードワードは、可変数のECCビット及び未知数のECCビットを更に含み、前記方法は、1つ又は複数のECCデコーダを前記コードワードに適用して、前記コードワード内のECCビットの数に対応するECCデコーダを配置するステップを更に含む、請求項14〜16のいずれか1項に記載の方法。
  18. 前記コードワードを生成するステップを更に含み、前記コードワードを生成するステップは、
    前記データ及び前記メタデータを受信するステップと、
    前記メタデータ内の前記データ位置指定に従って、前記メタデータ行列と前記コードワードとの積が前記メタデータと等しくなるように、前記データを前記コードワード内に配置するステップと、
    前記コードワードを前記メモリ・アドレスに書き込むステップと、
    を含む、請求項14〜17のいずれか1項に記載の方法。
  19. システムであって、
    コードワードをメモリ・アドレスから検索するメモリ読み取り装置と、
    前記コードワードとメタデータ行列との乗算を実行して、データ位置指定を含む前記コードワードに関するメタデータを復元するメタデータ・コンピュータと、
    前記メタデータに基づいて、適用されたエンデュランス・コードを識別するメタデータ・インタープリタと、
    識別された前記エンデュランス・コードに関するデコーダを使用して前記コードワードを復号化するエンデュランス・コード・デコーダと、
    復号化された前記コードワードを解凍して前記データを生成する解凍プログラムと、
    解凍された前記データを読み取りデータとして出力する送信器と、
    を備え、前記エンデュランス・コードは、書き込み時に圧縮アルゴリズムを書き込むデータに適用することによって節約されたスペースの量に応じて選択されて圧縮されたデータに適用されたものである、システム。
  20. 前記コードワードは、ECCビットを更に含み、前記システムは、前記乗算を実行する前に、前記コードワード内のECCビットの数に対応するパリティ行列で指定されるECCコードを実施するように設計されたECCコードを前記コードワードに適用するECCデコーダを更に備える、請求項19に記載のシステム。
JP2010097570A 2009-04-30 2010-04-21 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム Expired - Fee Related JP5567378B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/433669 2009-04-30
US12/433,669 US8341501B2 (en) 2009-04-30 2009-04-30 Adaptive endurance coding of non-volatile memories

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014092635A Division JP5764235B2 (ja) 2009-04-30 2014-04-28 メモリ・アクセス方法およびシステム

Publications (2)

Publication Number Publication Date
JP2010262640A JP2010262640A (ja) 2010-11-18
JP5567378B2 true JP5567378B2 (ja) 2014-08-06

Family

ID=43019506

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010097570A Expired - Fee Related JP5567378B2 (ja) 2009-04-30 2010-04-21 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム
JP2014092635A Expired - Fee Related JP5764235B2 (ja) 2009-04-30 2014-04-28 メモリ・アクセス方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014092635A Expired - Fee Related JP5764235B2 (ja) 2009-04-30 2014-04-28 メモリ・アクセス方法およびシステム

Country Status (4)

Country Link
US (2) US8341501B2 (ja)
JP (2) JP5567378B2 (ja)
KR (1) KR20100119492A (ja)
CN (1) CN101876947B (ja)

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560918B1 (en) 2009-04-21 2013-10-15 Marvell International Ltd. Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8122190B1 (en) * 2009-05-29 2012-02-21 Itt Manufacturing Enterprises, Inc. Method and system for reconfigurable memory-based permutation implementation
US8453040B2 (en) * 2009-11-05 2013-05-28 International Business Machines Corporation Obscuring information in messages using compression with site-specific prebuilt dictionary
US8539224B2 (en) * 2009-11-05 2013-09-17 International Business Machines Corporation Obscuring form data through obfuscation
US8176234B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US8176235B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8495464B2 (en) * 2010-06-28 2013-07-23 Intel Corporation Reliability support in memory systems without error correcting code support
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
US8407560B2 (en) * 2010-07-14 2013-03-26 Hewlett-Packard Development Company, L.P. Systems and methods for encoding information for storage in an electronic memory and for decoding encoded information retrieved from an electronic memory
US9135107B2 (en) 2010-09-06 2015-09-15 Mitsubishi Electric Corporation Memory control device and memory control method
US9063663B2 (en) * 2010-09-21 2015-06-23 Hitachi, Ltd. Semiconductor storage device and data control method thereof
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
US8892809B2 (en) 2010-10-25 2014-11-18 Marvell World Trade Ltd. Data compression and encoding in a memory system
US9563501B2 (en) * 2010-11-30 2017-02-07 Micron Technology, Inc. Preserving data integrity in a memory system
TWI459396B (zh) * 2010-12-30 2014-11-01 Phison Electronics Corp 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置
CN102591737B (zh) * 2011-01-13 2015-04-22 群联电子股份有限公司 数据写入与读取方法、存储器控制器与存储器储存装置
EP2498187A1 (en) * 2011-03-04 2012-09-12 Nxp B.V. A multiprocessor arrangement having shared memory, and a method of communication between processors in a multiprocessor arrangement
US8732538B2 (en) * 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
US9176670B2 (en) * 2011-04-26 2015-11-03 Taejin Info Tech Co., Ltd. System architecture based on asymmetric raid storage
WO2012148812A2 (en) * 2011-04-29 2012-11-01 Lsi Corporation Encrypted transport solid-state disk controller
WO2012168960A1 (en) 2011-06-07 2012-12-13 Hitachi, Ltd. Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
TWI467590B (zh) * 2011-07-11 2015-01-01 Phison Electronics Corp 資料處理方法、記憶體控制器及記憶體儲存裝置
CN102890969B (zh) * 2011-07-20 2015-06-10 群联电子股份有限公司 数据处理方法、存储器控制器及存储器储存装置
US8495285B2 (en) * 2011-08-31 2013-07-23 Micron Technology, Inc. Apparatuses and methods of operating for memory endurance
US8666068B2 (en) 2011-10-20 2014-03-04 Sandisk Technologies Inc. Method for scrambling shaped data
US8799559B2 (en) 2011-10-24 2014-08-05 Sandisk Technologies Inc. Endurance enhancement coding of compressible data in flash memories
JP5728370B2 (ja) * 2011-11-21 2015-06-03 株式会社東芝 半導体記憶装置およびその駆動方法
US9037779B2 (en) * 2011-12-19 2015-05-19 Sandisk Technologies Inc. Systems and methods for performing variable flash wear leveling
US9146855B2 (en) * 2012-01-09 2015-09-29 Dell Products Lp Systems and methods for tracking and managing non-volatile memory wear
KR101888074B1 (ko) * 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US9246511B2 (en) * 2012-03-20 2016-01-26 Sandisk Technologies Inc. Method and apparatus to process data based upon estimated compressibility of the data
WO2013147819A1 (en) * 2012-03-29 2013-10-03 Intel Corporation Compression-enabled blending of data in non-volatile memory
US8694862B2 (en) * 2012-04-20 2014-04-08 Arm Limited Data processing apparatus using implicit data storage data storage and method of implicit data storage
JP2013242694A (ja) * 2012-05-21 2013-12-05 Renesas Mobile Corp 半導体装置、電子装置、電子システム及び電子装置の制御方法
US9032159B2 (en) * 2012-06-27 2015-05-12 Via Technologies, Inc. Data prefetcher with complex stride predictor
US9176902B1 (en) * 2012-06-27 2015-11-03 Emc Corporation Data migration techniques
WO2014010763A1 (ko) * 2012-07-11 2014-01-16 한양대학교 산학협력단 쓰기 데이터 패턴 인식에 의한 플래시 메모리 관리 장치 및 방법
US9064575B2 (en) * 2012-08-03 2015-06-23 Micron Technology, Inc. Determining whether a memory cell state is in a valley between adjacent data states
TWI521528B (zh) * 2012-08-08 2016-02-11 群聯電子股份有限公司 記憶體儲存裝置、其記憶體控制器與資料處理方法
CN102915261A (zh) * 2012-09-04 2013-02-06 邹粤林 提高闪存芯片存储单元利用率的方法、装置和系统
US8898539B2 (en) * 2012-09-12 2014-11-25 Lsi Corporation Correcting errors in miscorrected codewords using list decoding
US20140089761A1 (en) * 2012-09-24 2014-03-27 Zion Kwok Method, apparatus and system for providing error correction information
US9071269B2 (en) * 2012-10-01 2015-06-30 Sandisk Technologies Inc. Encoding data for storage in a data storage device
KR102081980B1 (ko) * 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US8972826B2 (en) * 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
TW201416849A (zh) * 2012-10-30 2014-05-01 Jmicron Technology Corp 錯誤檢查及校正方法以及相關錯誤檢查及校正電路
CN103810054A (zh) * 2012-11-14 2014-05-21 智微科技股份有限公司 错误检查及校正方法以及相关错误检查及校正电路
US9098666B2 (en) * 2012-11-28 2015-08-04 Qualcomm Incorporated Clock distribution network for 3D integrated circuit
US9047975B2 (en) * 2012-11-28 2015-06-02 Adesto Technologies Corporation Coding techniques for reducing write cycles for memory
KR101361670B1 (ko) 2012-12-11 2014-02-12 충남대학교산학협력단 프로그램 정적 분석을 통한 플래시 메모리의 랜덤 쓰기 연산의 속도 향상 방법
US8854079B2 (en) * 2013-01-30 2014-10-07 Texas Instruments Incorporated Error detection in nonvolatile logic arrays using parity
US9201662B2 (en) * 2013-03-29 2015-12-01 Dell Products, Lp System and method for pre-operating system memory map management to minimize operating system failures
JP6129635B2 (ja) * 2013-04-30 2017-05-17 サイプレス セミコンダクター コーポレーション 制御方法、制御プログラム、および制御装置
US9229640B2 (en) 2013-11-15 2016-01-05 Microsoft Technology Licensing, Llc Inexpensive solid-state storage by throttling write speed in accordance with empirically derived write policy table
KR102078853B1 (ko) * 2013-11-27 2020-02-18 삼성전자 주식회사 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법
US9998149B2 (en) 2014-01-31 2018-06-12 Hewlett Packard Enterprise Development Lp Constant hamming weight coding
US9391646B2 (en) * 2014-03-25 2016-07-12 Samsung Electronics Co., Ltd. Joint source-channel encoding and decoding for compressed and uncompressed data
US20150281743A1 (en) * 2014-04-01 2015-10-01 Silicon Image, Inc. Orthogonal Data Organization for Error Detection and Correction in Serial Video Interfaces
US10503661B2 (en) * 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US9710326B2 (en) * 2014-07-28 2017-07-18 SK Hynix Inc. Encoder by-pass with scrambler
CN105653391B (zh) * 2014-11-13 2018-11-02 群联电子股份有限公司 数据存取方法、存储器控制电路单元及存储器储存装置
CN105808151B (zh) * 2014-12-29 2019-09-27 华为技术有限公司 固态硬盘存储设备和固态硬盘存储设备的数据存取方法
CN106156169B (zh) * 2015-04-16 2019-12-06 深圳市腾讯计算机系统有限公司 离散数据的处理方法和装置
CN106201325B (zh) * 2015-04-29 2019-04-23 群联电子股份有限公司 数据存取方法、存储器控制电路单元与存储器存储装置
US9792053B2 (en) * 2015-04-30 2017-10-17 Toshiba Memory Corporation Controller for nonvolatile semiconductor memory
US9344114B1 (en) * 2015-05-11 2016-05-17 Qualcomm Incorporated Compressed caching in a virtual memory system
US9690517B2 (en) * 2015-05-22 2017-06-27 Texas Instruments Incorporated Dual-mode error-correction code/write-once memory codec
JP6346123B2 (ja) * 2015-05-25 2018-06-20 東芝メモリ株式会社 コントローラ、制御方法
US10705909B2 (en) * 2015-06-25 2020-07-07 International Business Machines Corporation File level defined de-clustered redundant array of independent storage devices solution
CN105095014A (zh) * 2015-07-01 2015-11-25 清华大学 基于错误纠正编码数据结构的数据隐藏方法
JP2017027388A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US9865338B2 (en) 2015-09-02 2018-01-09 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory by converting write data written to a page
US10033411B2 (en) * 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
US10089241B2 (en) 2016-03-10 2018-10-02 Toshiba Memory Corporation Memory system
US10216575B2 (en) 2016-03-17 2019-02-26 Sandisk Technologies Llc Data coding
KR20180086816A (ko) * 2017-01-23 2018-08-01 에스케이하이닉스 주식회사 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
DE102017201506A1 (de) * 2017-01-31 2018-08-02 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur verlustfreien Kompression eines Datenstromes
US10289330B2 (en) * 2017-03-30 2019-05-14 Western Digital Technologies, Inc. Allocating shared memory among multiple tasks in a multiprocessor environment
JP2019079113A (ja) * 2017-10-20 2019-05-23 株式会社日立製作所 ストレージ装置、データ管理方法、及びデータ管理プログラム
JP2021506024A (ja) * 2017-12-12 2021-02-18 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ストレージクラスメモリシステムのウェアレベリングスキーム及び実装
US10789130B1 (en) 2018-03-09 2020-09-29 Toshiba Memory Corporation Capacitor energy management for unexpected power loss in datacenter SSD devices
JP6960877B2 (ja) 2018-03-22 2021-11-05 キオクシア株式会社 メモリシステム
US11030149B2 (en) * 2018-09-06 2021-06-08 Sap Se File format for accessing data quickly and efficiently
KR20200034312A (ko) * 2018-09-21 2020-03-31 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
DE102018124296A1 (de) 2018-10-02 2020-04-02 Infineon Technologies Ag Kompensation von lesefehlern
JP6649452B2 (ja) * 2018-10-22 2020-02-19 キオクシア株式会社 メモリシステムおよび不揮発性メモリの制御方法
DE102018132503B4 (de) 2018-12-17 2020-09-17 Infineon Technologies Ag Detektion von Codewörtern
US11029872B2 (en) 2018-12-18 2021-06-08 Western Digital Technologies, Inc. Non-volatile storage system with data shaping memory partitions
US10963342B2 (en) * 2019-02-01 2021-03-30 Micron Technology, Inc. Metadata-assisted encoding and decoding for a memory sub-system
DE102019107139A1 (de) * 2019-03-20 2020-09-24 Infineon Technologies Ag Transformation von aus einem speicher gelesenen binären signalen
US11288009B2 (en) * 2019-07-10 2022-03-29 Micron Technology, Inc. Read sample offset bit determination using most probably decoder logic in a memory sub-system
KR20210013397A (ko) * 2019-07-24 2021-02-04 삼성전자주식회사 스토리지 장치
DE102020100541A1 (de) 2020-01-13 2021-07-15 Infineon Technologies Ag Bestimmung eines resultierenden datenworts beim zugriff auf einen speicher
US11580315B2 (en) 2020-02-10 2023-02-14 Nxp B.V. Agile time-continuous memory operation for a radio frequency identification transponder
US11321167B2 (en) 2020-05-09 2022-05-03 Western Digital Technologies, Inc. Adaptive folding for integrated memory assembly
US11301321B2 (en) 2020-05-28 2022-04-12 Western Digital Technologies, Inc. Data shaping for integrated memory assembly
US11170870B1 (en) 2020-05-28 2021-11-09 Western Digital Technologies, Inc. On-chip-copy for integrated memory assembly
CN111638994B (zh) * 2020-06-01 2021-05-04 长江存储科技有限责任公司 一种闪存存储器及其错误比特计数检测方法和系统
US11488682B2 (en) 2020-06-24 2022-11-01 Sandisk Technologies Llc Calibration for integrated memory assembly
US11392327B2 (en) 2020-09-09 2022-07-19 Western Digital Technologies, Inc. Local data compaction for integrated memory assembly
CN112118246B (zh) * 2020-09-11 2022-04-19 北京微密科技发展有限公司 基于融合内存的区块链可信存储执行硬件环境
DE102020211842A1 (de) 2020-09-22 2022-03-24 Infineon Technologies Ag Speichervorrichtungen und Verfahren zum Betreiben derselben
US11650932B2 (en) 2020-10-25 2023-05-16 Western Digital Technologies, Inc. Integrated non-volatile memory assembly with address translation
US11481154B2 (en) 2021-01-15 2022-10-25 Sandisk Technologies Llc Non-volatile memory with memory array between circuits
JP2022147380A (ja) 2021-03-23 2022-10-06 キオクシア株式会社 メモリコントローラおよびメモリシステム

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US747909A (en) * 1903-02-24 1903-12-22 Henry Ford Motor-vehicle.
WO1983003912A1 (en) 1982-04-30 1983-11-10 Massachusetts Institute Of Technology Method and apparatus for reusing non-erasable memory media
JPH0745085A (ja) * 1993-07-30 1995-02-14 Tec Corp データ書込装置及びデータ読取装置
JPH07287668A (ja) * 1994-04-19 1995-10-31 Hitachi Ltd データ処理装置
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
WO1997017652A1 (fr) 1995-11-10 1997-05-15 Sony Corporation Appareil et procede de traitement d'informations
US5784698A (en) * 1995-12-05 1998-07-21 International Business Machines Corporation Dynamic memory allocation that enalbes efficient use of buffer pool memory segments
JPH113594A (ja) * 1997-06-12 1999-01-06 Hitachi Ltd 不揮発性メモリおよびデータ書込み、読出し方法
JPH11283396A (ja) * 1998-03-27 1999-10-15 Sony Corp メモリ装置
US6157570A (en) * 1999-02-04 2000-12-05 Tower Semiconductor Ltd. Program/erase endurance of EEPROM memory cells
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6532121B1 (en) * 1999-10-25 2003-03-11 Hewlett-Packard Company Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints
US20080256352A1 (en) * 2000-01-06 2008-10-16 Super Talent Electronics, Inc. Methods and systems of booting of an intelligent non-volatile memory microcontroller from various sources
US6662263B1 (en) * 2000-03-03 2003-12-09 Multi Level Memory Technology Sectorless flash memory architecture
AU2001238166A1 (en) * 2000-05-10 2001-11-20 Seagate Technology Llc Compression and storage of written-in error compensation tables in an embedded servo disc drive
US6640319B1 (en) * 2000-08-29 2003-10-28 Maxtor Corporation Mis-synchronization detection system
JP2002091831A (ja) * 2000-09-12 2002-03-29 Hitachi Ltd データ処理システム及びデータ処理方法
DE60112795T2 (de) 2000-12-15 2006-06-22 Koninklijke Philips Electronics N.V. Datenverarbeitungseinrichtung mit einer speicherstelle, in der daten gemäss einem wom-code gespeichert werden
US7062602B1 (en) 2001-04-09 2006-06-13 Matrix Semiconductor, Inc. Method for reading data in a write-once memory device using a write-many file system
US6996660B1 (en) 2001-04-09 2006-02-07 Matrix Semiconductor, Inc. Memory device and method for storing and reading data in a write-once memory array
US6584034B1 (en) * 2001-04-23 2003-06-24 Aplus Flash Technology Inc. Flash memory array structure suitable for multiple simultaneous operations
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
TW543037B (en) * 2001-08-15 2003-07-21 Numa Technology Inc Embedded memory structure and its accessing method
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US6970969B2 (en) * 2002-08-29 2005-11-29 Micron Technology, Inc. Multiple segment data object management
US7039788B1 (en) * 2002-10-28 2006-05-02 Sandisk Corporation Method and apparatus for splitting a logical block
US6794997B2 (en) * 2003-02-18 2004-09-21 Sun Microsystems, Inc. Extending non-volatile memory endurance using data encoding
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
JPWO2005001700A1 (ja) 2003-06-27 2006-08-10 富士通株式会社 ストレージ容量管理方法、そのサーバ、記録媒体
JP4220319B2 (ja) * 2003-07-04 2009-02-04 株式会社東芝 不揮発性半導体記憶装置およびそのサブブロック消去方法
JP2005100527A (ja) * 2003-09-25 2005-04-14 Matsushita Electric Ind Co Ltd 半導体不揮発性記憶装置
JP2005190288A (ja) * 2003-12-26 2005-07-14 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US7457909B2 (en) 2005-01-14 2008-11-25 Angelo Di Sena Controlling operation of flash memories
US20060282610A1 (en) * 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
GB2428496A (en) 2005-07-15 2007-01-31 Global Silicon Ltd Error correction for flash memory
DE602005012625D1 (de) * 2005-07-22 2009-03-19 Hynix Semiconductor Inc Verfahren zum Zugreifen auf eine nichtflüchtige Mehrpegelspeichervorrichtung vom Typ FLASH NAND
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7409524B2 (en) * 2005-08-17 2008-08-05 Hewlett-Packard Development Company, L.P. System and method for responding to TLB misses
JP2007094639A (ja) * 2005-09-28 2007-04-12 Tdk Corp メモリコントローラ及びフラッシュメモリシステム
EP1788575B1 (en) * 2005-11-18 2010-01-20 STMicroelectronics S.r.l. Method for accessing in reading, writing and programming to a NAND non-volatile memory electronic device monolithically integrated on semiconductor
US7245556B1 (en) * 2005-12-28 2007-07-17 Sandisk Corporation Methods for writing non-volatile memories for increased endurance
US20070150644A1 (en) * 2005-12-28 2007-06-28 Yosi Pinto System for writing non-volatile memories for increased endurance
US7594087B2 (en) * 2006-01-19 2009-09-22 Sigmatel, Inc. System and method for writing data to and erasing data from non-volatile memory
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7694102B2 (en) * 2006-03-30 2010-04-06 International Business Machines Corporation Systems and methods for self-tuning memory
JP5214587B2 (ja) * 2006-03-31 2013-06-19 モスエイド テクノロジーズ インコーポレイテッド フラッシュメモリシステムコントロールスキーム
KR101185617B1 (ko) * 2006-04-04 2012-09-24 삼성전자주식회사 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
CN103258572B (zh) * 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
US7511646B2 (en) * 2006-05-15 2009-03-31 Apple Inc. Use of 8-bit or higher A/D for NAND cell value
US7809994B2 (en) 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
KR100764052B1 (ko) * 2006-08-03 2007-10-08 삼성전자주식회사 유동적 어드레스 바운더리를 갖는 플래시 메모리 장치 및그것의 프로그램 방법
CN101523504B (zh) * 2006-08-05 2014-01-29 本霍夫有限公司 固态存储元件及方法
JP2007104708A (ja) * 2006-11-27 2007-04-19 Renesas Technology Corp データ処理方法
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
CN100468576C (zh) * 2007-05-30 2009-03-11 忆正存储技术(深圳)有限公司 闪存数据读写处理方法
US8125619B2 (en) * 2007-07-25 2012-02-28 Eminent Electronic Technology Corp. Integrated ambient light sensor and distance sensor
US20090055605A1 (en) * 2007-08-20 2009-02-26 Zining Wu Method and system for object-oriented data storage
US7697325B2 (en) * 2007-09-24 2010-04-13 Sandisk Corporation Non-volatile memory cell endurance using data encoding
US20090150595A1 (en) * 2007-10-24 2009-06-11 Avi Lavan Balanced programming rate for memory cells
JP5142685B2 (ja) * 2007-11-29 2013-02-13 株式会社東芝 メモリシステム
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101102505B1 (ko) * 2008-07-23 2012-01-04 주식회사 하이닉스반도체 비휘발성 메모리 장치의 프로그램 방법
US8347023B2 (en) * 2008-10-06 2013-01-01 Marvell World Trade Ltd. Compression based wear leveling for non-volatile memory
US9461763B2 (en) * 2008-11-28 2016-10-04 Computer Performance, Inc. Method and apparatus for reformatting and retiming digital telecommunications data for reliable retransmission via USB
US20110238903A1 (en) 2008-12-10 2011-09-29 Amir Ban Method and device of managing a reduced wear memory
WO2010092536A1 (en) * 2009-02-12 2010-08-19 Ramot At Tel Aviv University Ltd. Apparatus and method for enhancing flash endurance by encoding data
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8307261B2 (en) 2009-05-04 2012-11-06 National Tsing Hua University Non-volatile memory management method
US8874825B2 (en) * 2009-06-30 2014-10-28 Sandisk Technologies Inc. Storage device and method using parameters based on physical memory block location
US8176234B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US8176235B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
WO2011128867A1 (en) 2010-04-15 2011-10-20 Ramot At Tel Aviv University Ltd. Multiple programming of flash memory without erase
US8392807B2 (en) 2010-07-23 2013-03-05 Sandisk Technologies Inc. System and method of distributive ECC processing
US8769374B2 (en) * 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories

Also Published As

Publication number Publication date
CN101876947B (zh) 2012-05-23
US20120290898A1 (en) 2012-11-15
CN101876947A (zh) 2010-11-03
KR20100119492A (ko) 2010-11-09
US8341501B2 (en) 2012-12-25
JP5764235B2 (ja) 2015-08-19
JP2014170578A (ja) 2014-09-18
US20100281340A1 (en) 2010-11-04
JP2010262640A (ja) 2010-11-18
US8499221B2 (en) 2013-07-30

Similar Documents

Publication Publication Date Title
JP5764235B2 (ja) メモリ・アクセス方法およびシステム
US8769374B2 (en) Multi-write endurance and error control coding of non-volatile memories
JP5698260B2 (ja) メモリ装置における制御データの誤り訂正システムおよび方法
KR101264476B1 (ko) 증가된 용량의 이종의 스토리지 엘리먼트들
US9985651B2 (en) Read threshold calibration for LDPC
KR101398200B1 (ko) 메모리 장치 및 인코딩/디코딩 방법
JP5345201B2 (ja) 符号化および/または復号化メモリ装置および方法
US8463985B2 (en) Constrained coding to reduce floating gate coupling in non-volatile memories
KR20130029080A (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
US9654147B2 (en) Concatenated error correction device
JP6847796B2 (ja) メモリシステム
KR20160150036A (ko) 부분 페이지 압축을 위한 메모리 시스템
JP2021047712A (ja) メモリシステム
US9639421B2 (en) Operating method of flash memory system
KR102414620B1 (ko) 메모리 장치의 동작 방법 및 메모리 장치를 동작시키는 메모리 컨트롤러
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
US8819331B2 (en) Memory system and memory controller
KR101357544B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US10673465B2 (en) Memory controller, memory system, and control method
KR20150060019A (ko) 메모리 시스템에서 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치
KR20140006447A (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140428

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: 20140527

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20140527

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140619

R150 Certificate of patent or registration of utility model

Ref document number: 5567378

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees