JP2004164634A - 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装 - Google Patents

不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装 Download PDF

Info

Publication number
JP2004164634A
JP2004164634A JP2003366725A JP2003366725A JP2004164634A JP 2004164634 A JP2004164634 A JP 2004164634A JP 2003366725 A JP2003366725 A JP 2003366725A JP 2003366725 A JP2003366725 A JP 2003366725A JP 2004164634 A JP2004164634 A JP 2004164634A
Authority
JP
Japan
Prior art keywords
algorithm
block
data
encoded
indicator
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.)
Granted
Application number
JP2003366725A
Other languages
English (en)
Other versions
JP4429685B2 (ja
JP2004164634A5 (ja
Inventor
Robert C Chang
シー. チャン ロバート
Bahman Qawami
クァワミ バーマン
Farshid Sabet-Sharghi
サベット−シャーギ ファーシッド
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.)
SanDisk Corp
Original Assignee
SanDisk 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32825088&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2004164634(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2004164634A publication Critical patent/JP2004164634A/ja
Publication of JP2004164634A5 publication Critical patent/JP2004164634A5/ja
Application granted granted Critical
Publication of JP4429685B2 publication Critical patent/JP4429685B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】不揮発性メモリ内ブロックのコンテンツを符号化および復号化するために、異なるエラー訂正コードアルゴリズムを利用するための方法および装置が開示される。
【解決手段】本発明の1つの局面によると、不揮発性メモリ内にデータを格納するための方法は、データが格納されるべき第1のブロックを識別するステップと、第1のブロックに関連するインディケータを入手するステップとを包含する。次に、インディケータが、データが第1のアルゴリズムを利用して符号化されるべきことを示すかどうかに関して、判断がなされ得る。データが第1のアルゴリズムを用いて符号化されるべきであると判断される場合に、データは、第1のアルゴリズムを用いて符号化される。その後、第1のアルゴリズムを利用して符号化されたデータは、第1のブロックに書き込まれる。
【選択図】図2a

Description

(本発明の背景)
(1.発明の分野)
本発明は一般的に、大容量デジタルデータストレージシステムに関する。より詳細には、本発明は、不揮発性メモリのブロックへ書き込まれ得るデータを符号化するために利用されるアルゴリズムを動的にスイッチ可能にするためのシステムおよび方法に関する。
(2.関連技術の説明)
フラッシュメモリストレージシステム等の不揮発性メモリシステムの利用は、そのようなメモリシステムの物理サイズがコンパクトであり、かつ、不揮発性メモリは繰り返し再プログラムされ得るために、増加している。フラッシュメモリストレージシステムの物理サイズのコンパクトさが、ますます普及しつつあるデバイスにおいて、そのようなストレージシステムの利用を促進させる。フラッシュメモリストレージシステムを利用するデバイスは、デジタルカメラ、デジタルカムコーダー、デジタル音楽プレイヤー、ハンドヘルドパーソナルコンピューター、および、グローバルポジショニングデバイスを含むが、それらに制限されない。フラッシュメモリストレージシステムに含まれる不揮発性メモリを繰り返し再プログラムできるという能力により、フラッシュメモリストレージシステムは、利用および再利用が可能になる。
一般的に、フラッシュメモリストレージシステムは、フラッシュメモリカードおよびフラッシュメモリチップセットを含む。フラッシュメモリチップセットは、一般的に、フラッシュメモリコンポーネントおよびコントローラーコンポーネントを含む。典型的には、フラッシュメモリチップセットは、組み込みシステムへ組み立てられるように構成され得る。そのような組み立て品またはホストシステムの製造は、典型的には、コンポーネント形式のフラッシュメモリ、および、他のコンポーネントを確保し、その後、フラッシュメモリおよび他のコンポーネントをホストシステムに組み立てる。
多くの場合、フラッシュメモリの物理ブロック内に格納されるデータの正確さを確実にするために、エラー訂正コード(ECC)アルゴリズム、または、エラー検査かつ訂正コードアルゴリズムは、記憶のためにデータを符号化し、格納されたデータを復号化するために利用され得る。典型的には、ECCアルゴリズムは、データを符号化し、かつ、復号化するための専用の回路またはソフトウェアを利用する。多くのECCアルゴリズムまたは方法は、格納されたデータに関連するエラーの検知かつ訂正の両方のために利用され得る1つまたは複数のパリティビットを加える。
記憶のためにデータを符号化し復号化するために利用されるいくつかのECCアルゴリズムは、1−ビットECCアルゴリズムおよび2−ビットECCアルゴリズムとして知られる。1−ビットECCアルゴリズムにより、表現の1ビットが不正確である(例えば、反転する)場合は、その符号が訂正され、2ビットが不正確である(例えば、反転する)場合も、その符号が正しく識別され得るように、符号のセットを表現することが可能になる。2−ビットECCアルゴリズムにより、表現の2ビットが反転されるかそうでなければ不正確である場合に、その2ビットが訂正され、2ビットより多いビットが反転する場合も、その符号が正確に識別され得るように、符号のセットを表現することが可能になる。
一般的に、1−ビットECCアルゴリズムは2つの不良なビットを検知し得、1ビットを訂正し得る一方で、2−ビットECCアルゴリズムは2つより多い不良なビットを検知し、かつ、2ビットを訂正することができるために、2−ビットECCアルゴリズムの利用が、1−ビットECCアルゴリズムよりも好まれ得る。しかし、2−ビットECCアルゴリズムの実装は、格納されたデータに対する増強されたエラー訂正能力を提供する一方で、一般的に、1−ビットECCアルゴリズムの実装よりもより多くの計算、つまり、より多くの計算上のオーバーヘッドを伴う。より多くの計算上のオーバーヘッドが必要とされる場合、より多くの電力(例えば、バッテリー電力)が、不揮発性メモリによって消費され得る。結果として、特に、相対的に少ない回数で消去されたブロックに格納されるデータのインテグリティは、一般的に、相対的に高くなるので、メモリシステムの全体性能は妥協され得る。
2−ビットECCアルゴリズムの実装に関連する計算および電力所要量を低減するために、いくらかのシステムは、データを符号化しかつ復号化するために、1−ビットECCアルゴリズムを利用してもよい。しかし、多くの場合、1−ビットECCアルゴリズムは、2−ビットECCアルゴリズムよりも正確ではない。さらに、データが格納されるブロックは、そのブロックの耐用年数の終わりに近づいているときは、そのようなブロックに格納されるデータは、エラーをより含みやすい。従って、1−ビットECCアルゴリズムが、相対的に多い回数で消去されたブロックに格納されたデータを符号化し、かつ、そのようなデータを復号化するために利用される場合、データのインテグリティは妥協され得、かつ、ブロックに関連する性能は不利な影響を受け得る。
従って、必要とされるのは、相対的に多い回数で消去されたブロックの性能を向上することができる方法および装置である。向上される際には、相対的に少ない回数で消去されたブロックに格納されるデータを符号化し、かつ、復号化するために、相対的に高い計算オーバーヘッドおよび性能ペナルティを要求しない。すなわち、望まれるのは、ブロックが消去される回数に基づいて選択され得る異なるECCアルゴリズムを利用して、ブロックのコンテンツを符号化することを可能にする方法および装置である。
(本発明の要旨)
本発明は、不揮発性メモリ内ブロックのコンテンツを符号化および復号化するために、異なるエラー訂正コードアルゴリズムを利用するためのシステムおよび方法に関する。本発明の1つの局面によると、不揮発性メモリ内にデータを格納するための方法は、データが格納されるべき第1のブロックを識別するステップと、第1のブロックに関連するインディケータを入手するステップとを含む。次に、インディケータが、データが第1のアルゴリズムを利用して符号化されるべきことを示すかどうかに関して、判断がなされ得る。データが第1のアルゴリズムを用いて符号化されるべきであると判断される場合に、データは、第1のアルゴリズムを用いて符号化される。その後、第1のアルゴリズムを利用して符号化されたデータは、第1のブロックに書き込まれる。
1つの実施形態では、本方法はまた、データが第1のアルゴリズムを利用して符号化されるべきでないと判断される場合、第2のアルゴリズムを利用しデータを符号化するステップと、第2のアルゴリズムを利用して符号化されたデータを第1のブロックへ書き込むステップとを含む。そのような実施形態では、第1のアルゴリズムは、1−ビットエラー訂正コード(ECC)であってもよく、第2のアルゴリズムは、2−ビットECCであってもよい。
不揮発性メモリシステムのブロックに格納されるデータを、ブロック毎を基本に異なるECCアルゴリズムを利用して符号化できるようにすることによって、メモリシステム内のいくらかのブロックは、1−ビットECCアルゴリズムを利用して符号化され得る一方で、他のブロックは、2−ビットECCアルゴリズムを用いて符号化され得る。1−ビットECCアルゴリズム、もしくは、より計算力が強度でないアルゴリズムは、相対的に大きい消去操作回数を経ていないブロックへ格納されるべきデータを符号化するために利用される一方、2−ビットECCアルゴリズム、もしくは、より計算力が強度なアルゴリズムは、相対的に大きい消去操作回数を経ているブロックへ格納されるべきデータを符号化するために利用される。2−ビットECCアルゴリズムは、一般的に、1−ビットECCアルゴリズムよりも正確にデータを符号化および復号化することができるので、それらの利用可能性の終わりに近づいたブロックに格納されるべきデータを符号化するために2−ビットECCアルゴリズムを利用することによって、ブロックに関連する性能を向上させることができる。1−ビットECCアルゴリズムが、ブロックがその利用可能性の終わりに近づいていないときに利用されない場合は、そのようなブロックに格納しかつそのようなブロックから読み出すのに必要となる計算回数は、低減され得、それにより、読み出しおよび書き込みプロセスの速度全体を向上させることができ、かつ、メモリシステムに関連する電力所要量を低減する。
本発明の別の局面によると、メモリシステムの不揮発性メモリ内のデータを読み出すための方法は、データが読み出されるべき第1のブロックを識別するステップと、第1のブロックに関連するインディケータを入手するステップと、インディケータが、第1のブロックに格納されるデータが第1のアルゴリズムを利用して符号化されたことを示す場合を判断するステップとを含む。本方法はまた、データが第1のアルゴリズムを利用して符号化されたと判断される場合に、第1のアルゴリズムを利用してデータを復号化するステップを含む。1つの実施形態では、本方法は、データが第1のアルゴリズムを利用して符号化されていないと判断される場合に、第2のアルゴリズムを利用してデータを復号化するステップをさらに含む。
別の実施形態では、インディケータは、ブロックが再要求されたブロックである場合を示すように構成される。ブロックが再要求されたブロックである場合、インディケータは、データが第2のアルゴリズムを利用して符号化されたことを示すようにさらに構成される。さらに別の実施形態では、インディケータは、ブロックが消去された回数を示すように構成される。そのような実施形態では、インディケータが、データが第1のアルゴリズムを利用して符号化されたことを示す場合を判断するステップは、インディケータが許容限界値よりも小さい場合を判断するステップを含む。インディケータが許容限界値よりも小さい場合、データは第1のアルゴリズムを利用して符号化されたことが暗示される。
本発明のさらに別の実施形態によると、メモリシステムは、第1のブロックおよび第2のブロックを含む不揮発性メモリシステムを含む。第1のブロックは、第1のアルゴリズムを利用して符号化された第1のコンテンツのセットを含み、第2のブロックは、第2のアルゴリズムを利用して符号化された第2のコンテンツのセットを含む。不揮発性メモリはまた、データ構造、例えば、消去カウントブロックを含み、データ構造は、第1のコンテンツのセットは、第1のアルゴリズムを利用して符号化され、かつ、第2のコンテンツのセットは、第2のアルゴリズムを利用して符号化されることを示すように構成される。メモリシステムは、データ構造にアクセスするためのコードデバイスをさらに含む。そのようなコードデバイスは、第1のコンテンツのセットが第1のアルゴリズム利用して符号化されることを判断するためのコードデバイスと、第2のコンテンツのセットが第2のアルゴリズムを利用して符号化されたことを判断するためのコードデバイスとを含む。
本発明によるメモリシステムの不揮発性メモリ内にデータを格納するための方法は、該データが格納されるべき第1のブロックを識別するステップと、該第1のブロックに関連するインディケータを入手するステップと、該インディケータが、該データが第1のアルゴリズムを利用して符号化されるべきことを示す場合を判断するステップと、該データが該第1のアルゴリズムを利用して符号化されるべきであることが判断される場合に、該第1のアルゴリズムを利用して該データを符号化するステップと、該第1のアルゴリズムを利用して符号化された該データを該第1のブロックへ書き込むステップとを包含し、それにより上記目的が達成される。
前記第1のアルゴリズムを利用して前記データが符号化されるべきでないと判断される場合に、第2のアルゴリズムを利用して該データを符号化するステップと、該第2のアルゴリズムを利用して符号化された該データを前記第1のブロックへ書き込むステップと
をさらに包含してもよい。
前記第1のアルゴリズムは、1−ビットエラー訂正コード(ECC)アルゴリズムであり、前記第2のアルゴリズムは、2−ビットエラー訂正コード(ECC)アルゴリズムであってもよい。
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されるべきことを示すようにさらに構成されてもよい。
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
前記インディケータが、前記データが前記第1のアルゴリズムを利用して符号化されるべきことを示す場合を前記判断するステップは、該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第1のアルゴリズム利用して符号化されるべきである、ステップを包含してもよい。
前記インディケータは、前記不揮発性メモリ内のブロックが消去されたおよその平均回数を示すように構成してもよい。
前記インディケータは、データ構造に格納され、該データ構造は、前記第1のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含してもよい。
前記不揮発性メモリはフラッシュメモリであってもよい。
前記フラッシュメモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方であってもよい。
本発明によるメモリシステムの不揮発性メモリ内のデータを読み出すための方法は、データが読み出されるべき第1のブロックを識別するステップと、該第1のブロックに関連するインディケータを入手するステップと、該インディケータが、該第1のブロックに格納された該データが第1のアルゴリズムを利用して符号化されたことを示す場合を判断するステップと、該データが該第1のアルゴリズムを利用して符号化されたと判断される場合に、該第1のアルゴリズムを利用して該データを復号化するステップとを包含し、それにより上記目的が達成される。
前記データが前記第1のアルゴリズムを利用して符号化されていないと判断される場合に、第2のアルゴリズムを利用して該データを復号化するステップをさらに包含してもよい。
前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムであってもよい。
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されたことを示すようにさらに構成されてもよい。
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
前記インディケータが、前記データが前記第1のアルゴリズムを利用して符号化されたことを示す場合を判断するステップは、該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが該許容限界値よりも小さい場合に、該データは該第1のアルゴリズムを利用して符号化されたものである、ステップを包含してもよい。
前記インディケータは、前記不揮発性メモリの物理ブロックが消去されたおよその平均回数を示すように構成されてもよい。
前記インディケータは、データ構造に格納され、該データ構造は、前記第1のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含してもよい。
前記不揮発性メモリはフラッシュメモリであってもよい。
前記フラッシュメモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方であってもよい。
本発明によるメモリシステムは、複数のブロックを含む不揮発性メモリであって、該複数のブロックは第1のブロックを含む、不揮発性メモリと、データが格納されるべき該第1のブロックを識別するためのコードデバイスと、該第1のブロックと関連するインディケータを入手するためのコードデイバスと、該インディケータは、該データが第1のアルゴリズムを利用して符号化されるべきであることを示す場合を判断するためのコードデバイスと、該データが該第1のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第1のアルゴリズムを利用して該データを符号化するためのコードデバイスと、該第1のアルゴリズムを利用して符号化された該データを、該第1のブロックへ書き込むためのコードデバイスと、該コードデバイスが格納されるメモリ領域とを備え、それにより上記目的が達成される。
前記データが前記第1のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第2のアルゴリズムを利用して該データを符号化するためのコードデバイスと、該第2のアルゴリズムを利用して符号化される該データを、該第1のブロックへ書き込むためのコードデバイスとをさらに備えてもよい。
前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムであってもよい。
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されるべきであることを示すようにさらに構成されてもよい。
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
前記インディケータは、前記データが前記第1のアルゴリズムを利用して符号化されるべきことを示す場合を判断するためのコードデバイスは、該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第1のアルゴリズム利用して符号化されるべきである、コードデバイスを備えてもよい。
前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方であってもよい。
本発明によるメモリシステムは、複数のブロックを含む不揮発性メモリであって、該複数のブロックは第1のブロックを含み、該第1のブロックはデータを含む、不揮発性メモリと、該第1のブロックを識別するためのコードデバイスと、該第1のブロックに関連するインディケータを入手するためのコードデバイスと、該インディケータが、該データが第1のアルゴリズムを利用して符号化されたことを示す場合を決定するためのコードデバイスと、該データが該第1のアルゴリズムを利用して符号化されたと判断される場合に、該第1のアルゴリズムを利用して該データを復号化するためのコードデバイスと、該コードデバイスを格納するメモリ領域とを備え、それにより上記目的が達成される。
該データが該第1のアルゴリズムを利用して符号化されていないと判断される場合に、第2のアルゴリズムを利用してデータを復号化するためのコードデバイスをさらに備えてもよい。
前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムであってもよい。
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されたことを示すようにさらに構成されてもよい。
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
前記インディケータは、前記データが前記第1のアルゴリズムを利用して符号化されたことを示す場合を判断するための前記コードデバイスは、該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第1のアルゴリズム利用して符号化されたものである、コードデバイスを備えてもよい。
前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方であってもよい。
本発明によるメモリシステムは、複数のブロックを含む不揮発性メモリであって、該ブロックは、第1のブロックおよび第2のブロックを含み、該第1のブロックは、第1のアルゴリズムを利用して符号化される第1のコンテンツのセットを含み、該第2のブロックは、該第2のアルゴリズムを利用して符号化される第2のコンテンツのセットを含み、該不揮発性メモリは、該第1のコンテンツのセットが該第1のアルゴリズムを利用して符号化されることと、該第2のコンテンツのセットが該第2のアルゴリズムを利用して符号化されることとを示すように構成されるデータ構造をさらに含む、不揮発性メモリと、該データ構造にアクセスするためのコードデバイスであって、該データ構造にアクセスするための該コードデバイスは、該第1のコンテンツのセットが該第1のアルゴリズムを利用して符号化されることを判断するためのコードデバイスと、該第2のコンテンツのセットが該第2のアルゴリズムを利用して符号化されることを判断するためのコードデバイスとを含む、コードデバイスと、該コードデバイスを格納するメモリ領域とを備え、それにより上記目的が達成される。
前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムであってもよい。
前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方であってもよい。
本発明によるメモリシステムは、データが格納されるべき第1のブロックを含む不揮発性メモリと、該第1のブロックを識別する手段と、該第1のブロックと関連するインディケータを入手する手段と、該インディケータが、該データが第1のアルゴリズムを利用して符号化されるべきであることを示す場合を判断する手段と、該データが該第1のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第1のアルゴリズムを利用して該データを符号化する手段とを備え、それにより上記目的が達成される。
前記データが前記第1のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第2のアルゴリズムを利用して該データを符号化する手段と、前記第2のアルゴリズムを利用して符号化されたデータを、該第1のブロックへ書き込む手段とをさらに備えてもよい。
前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムであってもよい。
前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方であってもよい。
本発明によるメモリシステムは、データが読み出されるべき第1のブロックを含む不揮発性メモリシステムと、該第1のブロックを識別する手段と、該第1のブロックと関連するインディケータを入手する手段と、該インディケータが、該第1のブロックに格納される該データが第1のアルゴリズムを利用して符号化されたことを示す場合を判断する手段と、該データが該第1のアルゴリズムを利用して符号化されたと判断される場合に、該第1のアルゴリズムを利用して該データを復号化する手段とを備え、それにより上記目的が達成される。
前記データが前記第1のアルゴリズムを利用して符号化されていないと判断される場合に、第2のアルゴリズムを利用して該データを復号化する手段
をさらに備えてもよい。
前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムであってもよい。
前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方であってもよい。
これらおよびその他の本発明の利点は、以下の詳細な説明を読み、図面の様々な図を調べることによって明らかになる。
本発明は、付属の図面に関連する以下の説明を参照することによって最も理解され得る。
不揮発性メモリシステムのブロックに格納されるデータを、ブロック毎を基本に異なるECCアルゴリズムを利用して符号化できるようにすることによって、メモリシステム内のいくらかのブロックは、1−ビットECCアルゴリズムを利用して符号化され得る一方で、他のブロックは、2−ビットECCアルゴリズムを用いて符号化され得る。1−ビットECCアルゴリズム、もしくは、より計算力が強度でないアルゴリズムは、相対的に大きい消去操作回数を経ていないブロックへ格納されるべきデータを符号化するために利用される一方、2−ビットECCアルゴリズム、もしくは、より計算力が強度なアルゴリズムは、相対的に大きい消去操作回数を経ているブロックへ格納されるべきデータを符号化するために利用される。2−ビットECCアルゴリズムは、一般的に、1−ビットECCアルゴリズムよりも正確にデータを符号化および復号化することができるので、それらの利用可能性の終わりに近づいたブロックに格納されるべきデータを符号化するために2−ビットECCアルゴリズムを利用することによって、ブロックに関連する性能を向上させることができる。1−ビットECCアルゴリズムが、ブロックがその利用可能性の終わりに近づいていないときに利用されない場合は、そのようなブロックに格納しかつそのようなブロックから読み出すのに必要となる計算回数は、低減され得、それにより、読み出しおよび書き込みプロセスの速度全体を向上させることができ、かつ、メモリシステムに関連する電力所要量を低減する。
本発明は、2002年10月28日に出願され、その全体を本明細書中で参照として援用する米国仮特許出願第60/421,911号の優先権を主張する。
(関連出願の相互参照)
本発明は、同時係属中の米国特許出願第10/281,739号、第10/281,823号、第10/281,670号、第10/281,824,第10/281,631号、第10/281,855号、第10/281,762号、第10/281,696号、第10/281,626号、第10/281,804号、および、同時係属中の米国仮特許出願第60/421,910号、第60/421,725号、第60/421,965号、第60/422,166号、第60/421,746号に関連し、それぞれ2002年10月28日に出願され、それぞれその全体を本明細書中で参照として援用する。
(実施形態の詳細な説明)
1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらか等の誤り訂正コード(ECC)アルゴリズムは、多くの場合、不揮発性メモリの物理ブロックに格納されるデータを符号化し、かつ格納されたデータを復号化するために利用される。ECCアルゴリズムの利用により、一般的に、物理ブロック内に格納されるデータの正確さが向上し得る。さらに計算力の強度な(more calculation−intensive)2−ビットECCアルゴリズムの利用は、2−ビットECCアルゴリズムが1−ビットECCアルゴリズムを利用して訂正され得るよりも多くの誤りのあるビットを訂正することができるために、より計算力が強度でない(less calculation−intensive)1−ビットECCアルゴリズムより好まれ得る。しかし、2−ビットECCアルゴリズムの実装は、増強されたエラー訂正能力を提供する一方、計算量および電力所要量の点で、1−ビットECCアルゴリズムよりもより高価である。
多くの場合、データが格納されるブロックが比較的新しく、従って、相対的に多数の消去サイクルを受けてこなかった場合、1−ビットECCアルゴリズムは、多量のデータのインテグリティを保証するために充分であり得る。従って、2−ビットECCアルゴリズムの実装を、必要としなくてもよい。しかし、ブロックがより古くなり、相対的に多数の消去サイクルを受けた場合は、1−ビットECCアルゴリズムは、所望のレベルのデータインテグリティを保証するのに十分となり得ない。2−ビットECCアルゴリズムの利用により、データのインテグリティを有意に改善し得る。
ハイブリッドECC実装により、データを符号化しかつ復号化するためのECCアルゴリズムを動的にスイッチすることが可能になる。具体的には、1つの実施形態において、相対的に少数の消去サイクルを経てきたブロックに格納されたデータは、より計算力が強度でなくかつより正確でないアルゴリズム(例えば、1−ビットECCアルゴリズム)を利用して符号化され得る一方で、相対的に多数の消去サイクルを経てきたブロックは、より計算力が強度でありかつより正確なアルゴリズム(例えば、2−ビットECCアルゴリズム)を利用して符号化され得る。「デフォルト」アルゴリズム(例えば、1−ビットECCアルゴリズム等のより正確でないアルゴリズム)の代わりに、データが2−ビットECCアルゴリズム等のより正確なアルゴリズムを利用して符号化されるべきときを動的に判断することによって、特定のブロックに格納されるデータを符号化するために選択されるアルゴリズムは、特定のブロックの特性に依存して選択され得、さらに、より正確なアルゴリズムが、実質的な利点を提供し得る場合に効果的に利用され得る。例えば、あるブロックが予測される耐用年数の終わりに近い場合は、そのブロックに格納されるべきデータを符号化する2−ビットECCアルゴリズムを利用することによって、ブロックに格納されるデータの正確さまたはインテグリティを向上させ得、また、そのブロックの耐用年数を潜在的に拡張させ得る。さらに、耐用年数の終わりに近づいていないブロックに格納されるべきデータを符号化するために、より計算力が強度でないアルゴリズムを利用することによって、メモリシステム全体の電力所要量は低減され得、従って、メモリシステム全体の耐性は改善される。
1つの実施形態において、許容限界消去カウントまたは許容限界消去サイクル数は、ブロック内に書き込まれるべきデータを符号化するために、より計算力が強度でなくかつ正確でないECCアルゴリズム、または、より計算力が強度でありかつ正確なECCアルゴリズムのどちらを利用するべきかのインディケータとして利用され得る。ブロックが経験した消去サイクル数を許容限界数との比較により、ブロックが許容限界数よりも多くの消去サイクルを経ていることが示される場合、そのブロックは耐用年数の終端に近いとみなされ得るので、より正確なECCアルゴリズムが利用され得る。
フラッシュメモリシステム、または、より一般的には不揮発性メモリデバイスは、システム内のブロックを異なるECCアルゴリズムを利用して符号化させることができるハイブリッドECC実装を利用し得る。フラッシュメモリシステム、または、より一般的には不揮発性メモリデバイスは、一般的に、NANDまたはMLC NAND等のフラッシュメモリ、カード、および、チップセットを含む。典型的には、フラッシュメモリシステムはホストシステムと連携して利用されることにより、ホストシステムは、フラッシュメモリシステムへデータを書き込む、または、フラッシュメモリシステムからデータを読み出し得る。しかし、いくらかのフラッシュメモリシステムは、図1cに関連して以下で説明されるように、組み込みフラッシュメモリと、その組み込みフラッシュメモリに対するコントローラーとして実質的に動作するホスト上で実行するソフトウェアとを含む。図1aを参照して、CompactFlashメモリカード等の不揮発性メモリデバイスを含む一般的なホストシステムが説明される。ホストまたはコンピュータシステム100は、一般的に、マイクロプロセッサ108、ランダムアクセスメモリ(RAM)112、および、入力/出力回路116を通信させ得るシステムバス104を含む。理解されるべきことは、ホストシステム100は、一般的に、説明の目的に対して示されないディスプレイデバイスおよびネットワーキングデバイスなどの他のコンポーネントを含み得る。
一般的に、ホストシステム100は、静止画像、オーディオ情報、および、ビデオイメージ情報を含む情報をキャプチャ可能であってもよい。そのような情報は、リアルタイムでキャプチャされ得、ワイヤレスの態様でホストシステム100に伝送され得る。ホストシステム100は実質的に任意のシステムであってもよいが、ホストシステム100は、典型的には、デジタルカメラ、ビデオカメラ、携帯電話通信デバイス、オーディオプレイヤー、または、ビデオプレイヤー等のシステムである。しかし、理解されるべきことは、ホストシステム100は、一般的に、データまたは情報を格納し、かつ、データまたは情報を取り出す任意のシステムで実質的にあってよい。
ホストシステム100はまた、データをキャプチャするのみ、または、データを取り出すのみのどちらかのシステムであってもよい。すなわち、ホストシステム100は、1つの実施形態では、データを格納する専用のシステムであってもよく、あるいは、ホストシステム100は、データを読み出す専用のシステムであってもよい。一例として、ホストシステム100は、データを書き込むまたは保存するためだけに構成されるメモリライターであってもよい。もしくは、ホストシステム100は、データをキャプチャするためではなく、データを読み出すまたは取り出すために典型的に構成されるMP3プレイヤーなどのデバイスであってもよい。
1つの実施形態では、取り外し可能な不揮発性メモリデバイスである、不揮発性メモリデバイス120は、情報を格納するためにシステムバス104とインターフェイスするように構成される。選択的インターフェイスブロック130は、不揮発性メモリデバイス120を、バス104と間接的にインターフェイスさせ得る。存在する場合は、入力/出力回路ブロック116は、当業者に理解されるように、バス104上の負荷を低減するのに役立つ。不揮発性メモリデバイス120は、不揮発性メモリ124および選択的メモリ制御システム128を含む。1つの実施形態では、不揮発性メモリデバイス120は、単一のチップまたはダイ上に実装され得る。もしくは、不揮発性メモリデバイス120は、マルチチップモジュール、または、チップセットを形成しかつ不揮発性メモリデバイス120として一緒に利用され得る複数のディスクリートなコンポーネント上で実装され得る。不揮発性メモリデバイス120の1つの実施形態は、図1bに関連して以下のより詳細が説明される。
NANDフラッシュメモリまたはMLC NANDフラッシュメモリ等の不揮発性メモリ124は、必要とされるときにデータにアクセスし読み出し得るように、データを格納するように構成される。不揮発性メモリ124に格納されたデータはまた、適切に消去され得るが、不揮発性メモリ124におけるいくらかのデータが消去され得ないことが理解されるべきである。データを格納するステップ、データを読み出すステップ、および、データを消去するステップのプロセスは、一般的に、メモリ制御システム128によって制御され、あるいはメモリ制御システム128が存在しない場合は、マイクロプロセッサ108によって実行されるソフトウェアによって制御される。本質的に不揮発性メモリ124のセクションを実質的に等しく消耗させることによって、不揮発性メモリ124の耐用年数が実質的に最大化されるように、不揮発性メモリ124の動作は管理され得る。
不揮発性メモリデバイス120は、選択的メモリ制御システム128(すなわち、コントローラー)を含むというように一般的に説明された。多くの場合、不揮発性メモリデバイス120は、不揮発性メモリ124およびメモリ制御システム128(すなわち、コントローラー)機能に対して別個のチップを含んでもよい。一例として、制限されないがPCカード、CompactFlashカード、MultiMediaカード、および、安全なデジタルカードを含む不揮発性メモリデバイスが、別個のチップ上で実装され得るコントローラーを含む一方で、他の不揮発性メモリデバイスは、別個のチップ上で実装されるコントローラーを含まなくてもよい。不揮発性メモリデバイス120が別個のメモリおよびコントローラーチップを含まない実施形態では、当業者に理解されるように、メモリおよびコントローラー機能は、単一のチップに集積され得る。もしくは、例えば、上述のように不揮発性メモリデバイス120がメモリコントローラー128を含まない実施形態のように、メモリ制御システム128の機能性は、マイクロプロセッサ108によって提供され得る。
図1bを参照して、不揮発性メモリデバイス120は、本発明の実施形態に沿ってより詳細に説明される。上述されたように、不揮発性メモリデバイス120は、不揮発性メモリ124を含み、かつ、メモリ制御システム128を含み得る。メモリ124、および、制御システム128またはコントローラーは、不揮発性メモリデバイス120の主要なコンポーネントであり得るが、メモリ124が組み込みMLC NANDメモリ等の組み込みNANDデバイスである場合、例えば、不揮発性メモリデバイス120は、制御システム128を含まなくてもよい。メモリ124は、半導体基板上に形成されるメモリセルの配列であってもよい。ここで、メモリセルの記憶素子上に2以上のレベルの電荷を格納することによって、1以上のデータビットは、個々のメモリセルに格納される。不揮発性フラッシュの電気的に消去可能プログラム可能リードオンリーメモリ(EEPROM)は、そのようなシステムに対するメモリの共通タイプの例である。
存在する場合は、制御システム128は、バス15を介してホストコンピューター、または、データを格納するためのメモリシステムを利用する他のシステムと通信する。バス15は、一般的に、図1aのバス104の一部である。制御システム128はまた、メモリセル配列11を含み得る、メモリ124の動作を制御して、ホストによって提供されるデータを書き込み、ホストによって要求されるデータを読み出し、動作中のメモリ124の様々なハウスキーピング機能を実行する。制御システム128は、一般的に、汎用性のマルチプロセッサを含み、これは、関連する不揮発性ソフトウェアメモリ、様々な論理回路等を有する。特定のルーティンの性能を制御するために、多くの場合、1つ以上の状態マシンも含まれる。
メモリセル配列11は、典型的には、アドレスデコーダ17を介して制御システム128またはマイクロプロセッサ108によってアドレス指定される。デコーダ17は、制御システム128によってアドレス指定されるメモリセルのグループに対してデータをプログラムするか、データを読み出すか、または、メモリセルのグループを消去するために、配列11のゲートおよびビットラインに、適切な電圧を印加する。さらなる回路19は、アドレス指定されたセルのグループへプログラムされるデータに依存する配列のエレメントに印加される電圧を制御するプログラミングドライバを含む。回路19はまた、センス増幅器と、アドレス指定されたグループのメモリセルからデータを読み出すのに必要な他の回路とを含む。配列11にプログラムされるべきデータ、または、配列11から最近に読み出されたデータは、典型的には、制御システム128内のバッファメモリ21に格納される。制御システム128はまた、通常、コマンドおよびステータスデータ等を一時的に格納するための様々なレジスタを含む。
配列11は、複数のBLOCK0−Nメモリセルに分割される。フラッシュEEPROMシステムに共通なように、ブロックは、典型的には、消去の最小単位である。すなわち、各ブロックは、一緒に消去される最小の数のメモリセルを含む。各ブロックは、典型的には、複数のページに分けられる。当業者に理解されるように、ページは、プログラミングの最小単位であり得る。すなわち、基本のプログラミング操作は、最小のメモリセルの1ページにデータを書き込み、最小のメモリセルの1ページからデータを読み出す。図2bに示されるように、1つ以上のデータのセクタは、典型的に、各ページ内に格納される。オーバーヘッドデータは、典型的には、セクタのユーザデータから計算されたECCを含む。制御システム128の一部分23は、データが配列11へプログラムされるときにECCを計算し、また、データが配列11から読み出されるときにECCをチェックする。もしくは、ECCは、ECCが関連するユーザデータとは異なるページ、または、異なるブロックに格納される。
ユーザデータのセクタは、典型的には、512バイトであり、磁気ディスクドライブにおけるセクタのサイズに対応する。オーバーヘッドデータ、または、冗長なデータは、典型的には、付加的な16バイトである。最もよくある場合では、データの1つのセクタが各ページに含まれるが、そうではなく2つ以上のセクタがページを形成してもよい。任意の数のページが、一般的にブロックを形成し得る。一例としては、ブロックは、8ページから512、1024またはそれより多いページまでから形成される。ブロックの数は、メモリシステムに所望のデータ記憶容量を提供するために選択される。配列11は、典型的には、少数のサブ配列(示されない)へ分割され、各サブ配列は、ブロックのある割合を含み、ブロックは、互いに独立していくらか動作することにより、様々なメモリ操作の実行における並行度を増加させる。多重サブ配列を利用する例としては、その全体を本明細書中で参照として援用する、米国特許第5,890,192号内に記載される。
1つの実施形態では、MLC NANDメモリ等の不揮発性メモリは、システム、例えば、ホストシステムに組み込まれる。図1cは、組み込み不揮発性メモリを含むホストシステムの図式表示である。ホストまたはコンピュータシステム150は、一般的に、ホストシステム150の他のコンポーネント(示されない)の間で、マイクロプロセッサ158、RAM162、および、入力/出力回路166を通信させるシステムバス154を含む。不揮発性メモリ174、例えば、フラッシュメモリは、情報をホストシステム150内に格納させることを可能にする。インターフェイス180は、不揮発性メモリ174と、不揮発性メモリ174からの読み出しおよび不揮発性メモリ174へ書き込みを可能にするバス154と間に提供され得る。
不揮発性メモリ174は、不揮発性メモリ174を制御するように構成されたソフトウェアとファームウェアのどちらかまたは両方を効果的に実行するマイクロプロセッサ158によって、管理され得る。すなわち、マイクロプロセッサ158は、コードデバイス、すなわち、ソフトウェアコードデイバスまたはファームウェアコードデバイスを実行するコントローラーとして、役立ち得る。コードデバイスは、不揮発性メモリ174を制御することを可能にする。以下に説明されるそのようなコードデバイスは、不揮発性メモリ174内の物理ブロックが、アドレス指定されるのを可能にし得、情報の物理ブロックへ格納、物理ブロックからの読み出し、物理ブロックからの消去を可能にする。
ハイブリッドECC実装を利用するメモリシステム内では、データがブロックに書き込まれ得る前に、ブロックに書き込まれるべきデータを符号化するために利用する適切なECCアルゴリズムを決定するために、典型的には、ブロックに関連する情報が調達され、かつ、調べられる。図2aを参照して、1−ビットまたは2−ビットECCのどちらかを利用してユーザデータをブロックに書き込むステップが、本発明の実施形態に沿って説明される。データを書き込むプロセス200は、書き込まれるべきブロックが識別されるステップ204から開始する。このブロックは、使用されていないブロック、例えば、スペアブロックのプールから調達されたブロックであり得、あるいは、ブロックは、現在使用中であり、かつ、追加のコンテンツを受取るように構成されているブロックであり得る。一旦、ブロックが識別されると、ブロックに対する消去カウントは、ステップ208において消去カウントブロックから読み出される。消去カウントブロックは、同時係属中の米国特許出願第10/281,626号に記載されるように、不揮発性メモリに格納され、不揮発性メモリ内の実質的に全ての利用可能なブロックと関連する消去カウントを含むデータ構造である。消去カウントは、一般的に、所与のブロックが消去された回数を示し、従って、ブロックの寿命のインディケーションを提供する。
ブロックの消去カウントが読み出された後に、消去カウントが許容限界消去カウントよりも小さいかどうかが、ステップ212において判断される。許容限界消去カウントは、不揮発性メモリシステムのユーザによって特定される消去カウントであり得、あるいは、許容限界消去カウントは、システムパラメーターであり得る。許容限界消去カウントの値は、広範囲に変化し得る。一例として、ブロックが約10,000回消去された後はブロックがもはや利用できない可能性が高くなる実施形態において、許容限界消去カウントは、約9,500から9,800の間の値に設定され得る。より一般的には、許容限界消去カウントは、ブロックの寿命を決定するために考慮される消去カウントよりも2パーセントから5パーセントの間の小さい値に設定され得る。
ステップ212おいて、ブロックの消去カウントが許容限界消去カウントよりも小さいと判断される場合、ブロックに格納されるべきコンテンツ(例えば、ユーザデータ)が1−ビットECCアルゴリズムを利用して符号化されるべきであることが示される。従って、ステップ224では、ブロックに格納されるべきコンテンツが1−ビットECCアルゴリズムを用いて符号化される。一旦、コンテンツが符号化されると、符号化されたコンテンツは、ステップ228においてブロックに書き込まれ、ブロックにコンテンツを書き込むプロセスは完了する。
ステップ212に戻ると、消去カウントが許容限界消去カウントよりも小さくないことが判断される場合、そのブロックが耐用年数の終わりに近づいていることが示唆される。従って、ブロックに格納されるべきコンテンツは、2−ビットECCアルゴリズムを用いて、ステップ216で符号化される。ブロックコンテンツが符号化された後、次にステップ220では、符号化されたコンテンツがブロック内に書き込まれ、コンテンツをブロックに書き込むプロセスは完了する。
メモリシステム内のブロックのコンテンツ(すなわち、物理ブロック)が、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを用いて符号化され得る場合は、コンテンツが正確に復号化され得る前に、どちらのECCアルゴリズムがコンテンツを符号化するために利用されたかに関する判断がなされる。言い換えると、ブロックのコンテンツを読み出すプロセスは一般的に、コンテンツが1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムを利用して符号化されたかどうかを識別するステップを含む。図2bは、本発明の実施形態に従った、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを利用してコンテンツが符号化され得るシステム内で、ブロックからコンテンツを読み出す1つの方法に関連するステップを示すプロセスフロー図である。ブロックのコンテンツを読み出すプロセス240は、読み出されるべきブロックが識別されるステップ244から開始する。一般に、ブロックは、現在使用中、すなわち、情報を格納するために現在使用されているブロックのプールから調達され得る。ブロックが識別された後、そのブロックに対応するエントリは、ステップ248において消去カウントブロックで識別される。典型的には、消去カウントブロックにおけるブロックに対するエントリは、ブロックに対する消去カウントを含む。
ステップ252では、ブロックの消去カウントが消去カウント許容限界か、もしくは、ブロックのコンテンツが1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムを用いて何時符号化されるべきであるかを実質的に判断する許容限界以下であるかどうかが、判断される。ブロックの消去カウントが許容限界以下であると判断される場合、ブロックのデータは、ステップ256において、1−ビットECCアルゴリズムを用いて復号化される。一旦、データが1−ビットECCアルゴリズムを用いて復号化されると、ブロックからコンテンツを読み出すプロセスは完了する。もしくは、消去カウントが許容限界以下でないとステップ252において判断された場合、データは2−ビットECCアルゴリズムを用いて符号化されたと示される。従って、ステップ260では、ブロックのデータは、2−ビットECCアルゴリズムを用いて復号化される。データが復号化された後、ブロックからデータを読み出すプロセスは完了する。
メモリシステムの動作の過程の間は、メモリシステムの不揮発性メモリの寿命を延長させるために、静的なブロック、あるいは、希にしかアップデートまたは消去されないブロックが識別され得る。そのような静的なブロックは、アップデートされる可能性が低いものとして識別され得、従って、そのような静的なブロックコンテンツは、相対的に大きい消去カウントを有するブロックにコピーされ得る。静的なブロックのコンテンツを相対的に大きい消去カウントを有するブロックにコピーすることによって、静的なブロックは、効果的に利用のためにリサイクルされ得る。さらに、静的なブロックのコンテンツを相対的に大きい消去カウントを有するブロックへ格納するステップは、コンテンツはアップデートおよび消去される可能性が高くないので、従って、相対的に大きい消去カウントを有するブロックの寿命を延長し、相対的に大きい消去カウントを有するブロックの効果的な利用となり得る。静的なブロックを相対的に大きい消去カウントを有するブロックとスワッピングするステップは、同時係属中の米国特許出願第10/281,739に記載される。
多くの場合、静的なブロックを相対的に大きな消去カウントを有するブロックでスワッピングするステップは、メモリシステムが初期化されるとき、例えば、メモリシステムが電源切断後に電源投入されるときに、実行され得る。図3を参照して、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを利用してブロックのコンテンツが符号化されるメモリシステムに対する1つの初期化プロセスは、本発明の実施形態に従って説明される。メモリシステムを初期化するプロセス300は、ステップ304において静的なブロックを識別するステップを含む。静的なブロック識別するステップは、一般的に、効果的に活発に使用されていないブロックを識別するステップを含む。一旦、静的なシステムが識別されると、相対的に大きな消去カウントを有する使用されていないブロックが、ステップ308において識別される。典型的には、相対的に大きな消去カウントを有する使用されていないブロックを識別するステップは、メモリシステムの不揮発性メモリに関連する全ての使用されていないブロックのうち、最も大きい消去カウントを有する使用されていないブロックのセットを識別するステップを含む。
相対的に大きな消去カウントを有する使用されていないブロックが識別された後、ステップ312において、不揮発性メモリのブロックと関連する平均消去カウントが消去カウント許容限界よりも大きいかどうかが判断される。平均消去カウントは、不揮発性メモリ内の利用可能なブロックが消去された平均回数を示し、このことは、同時係属中の米国特許出願第10/281,823号に記載される。平均消去カウントは、消去カウント許容限界よりも多くないと判断される場合、静的ブロックのコンテンツが、1−ビットECCアルゴリズムを利用して、相対的に大きい消去カウントを有する使用されていないブロックへ、記憶のために符号化され得ることが示される。従って、プロセスフローは、静的なブロックのコンテンツが復号化されるステップ328へ進む。理解されるべきことは、静的なブロックからの復号化および読み出しに関連するステップは、図2bに関連して上述されたステップであり得ることである。
静的なブロックのコンテンツを復号化する際に、復号化されたコンテンツは、ステップ332おいて、1−ビットECCアルゴリズムを利用して符号化される。次に、符号化されたコンテンツは、ステップ336において、相対的に大きい消去カウントを有する使用されていないブロックへ、コピーされるか、そうでなければ、格納され、メモリシステムを初期化するプロセスは完了する。
ステップ312に戻ると、平均消去カウントが消去カウント許容限界よりも大きいと判断される場合は、相対的に大きい消去カウントを有する使用されていないブロックが、消去カウント許容限界よりも大きい消去カウントを有する可能性が全く高いことを示す。従って、プロセスフローは、ステップ312から、静的なブロックのコンテンツが1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを利用して必要に応じて復号化されるステップ316へ進む。一旦、静的なブロックのコンテンツが復号化されると、コンテンツは、ステップ320において、2−ビットECCアルゴリズムを利用して符号化される。コンテンツが符号化された後、そのコンテンツは、ステップ324において、相対的に大きい消去カウントを有するブロックへコピーされるかまたは格納され、メモリシステムを初期化するプロセスは完了する。
本発明の1つの実施形態では、再要求されたブロックが使用され得る。すなわち、以前に使用不可能なブロックであるとみなされたブロックは、特に、スペアの、利用可能なブロックのプールが不十分な場合には、厳密なテストするプロセスの後に利用するために再要求される。利用不可能であると識別されたブロックを管理するステップと、利用不可能であると識別されたブロックを再要求するステップは、同時継続中の米国仮特許出願第60/421,965号に記載される。厳密なテストをするプロセスは、増大する欠損を有すると識別されたブロック、例えば、以前に利用可能であったがもはや利用可能であるとみなせないブロックを、テストコンテンツを2−ビットECCアルゴリズムを用いてブロックに書き込み、かつ、テストコンテンツを2−ビットECCアルゴリズムを用いてブロックから読み出すことによって、テストするステップを含み得る。増大する欠損を有するとして識別されたブロックが厳密なテストプロセスに合格すると、このブロックは、もう一度利用可能であるとみなされ得る。しかし、利用される場合は、そのようなブロックは、一般的に、ブロックに格納されるコンテンツのインテグリティを向上させるために、2−ビットECCアルゴリズムを利用して書き込まれ、かつ、読み出される。
図4aは、本発明の実施形態に従った、利用不可能なブロックを再要求するプロセスの図のブロック図式表示である。利用不可能であると識別されたブロック406のグループまたはプール402は、少なくともいくらかの利用不可能なブロック406を再要求するための試みがなされる際に、テスター410を利用してテストされる。利用不可能なブロック406は、消去カウントブロックにおいて、利用不可能であるとして識別され得る。典型的には、ブロック406cなどの工場欠損(factory defects)を有するブロックは、そのようなブロックは一般的に再要求可能でないので、可能な再要求にためにテストされない。そのようなブロック(例えば、ブロック406c)は、多くの場合、製造者によって利用不可能であると識別され、以前に再要求プロセスに失敗したブロックをも含み得る。
ブロック406a、406b等の増大する欠損を有するブロックは、少なくともいくらかのそのようなブロックが利用可能であり得るかどうかを判断するために、テスター410によるテストを受けることになり得る。示されるように、ブロック406aは、ブロック406a’として再要求される。ブロック406aをブロック406a’として再要求することによって、説明される実施形態では、2−ビットECCアルゴリズムを利用して、ブロック406a’が符号化および復号化するテストに合格したことが示される。
一旦、ブロックが再要求されると、そのブロックは、消去カウントブロックにおいて再要求されたとして識別され得る。図4bは、本発明の実施形態に沿った、消去カウントブロックの一部の図式表示である。消去カウント図式ブロック440は、不揮発性メモリ内の異なる物理ブロックに対応するエントリ442、444、446を含む。説明される実施形態では、各エントリ442、444、446におけるバイトの数は約3であるが、各エントリ442、444、446に関連するバイトの数は変化し得る。
示されるように、エントリ442に関連する最上位ビットは、ブロック442が利用可能であることを示すために「0」に設定される。エントリ442に関する最下位または複数のビットは、エントリ442に関連するブロックに対する消去カウントである。つまり、エントリ442に関連するブロックは、利用可能であるとして識別され、200の消去カウントを有する。典型的には、HEX値は、消去カウントを示すために利用され得るが、議論を簡単にするために消去カウントは英数字として示される。理解されるべきことは、エントリ442内のビットは、一般的に、様々な異なる態様で組織化され得、すなわち、最上位ビット以外のビットは、エントリ442に関連するブロックが利用可能であることを示すように設定され、最下位ビット以外のビットは、ブロックの消去カウントに設定され得ることである。
エントリ444における最上位ビットは、エントリ444に対応するブロックが再要求されたと識別する。エントリ444の最下位1つまたは複数のビットは、対応するブロックが9870の消去カウントを有すると識別する。
既に述べられたように、再要求されたブロックがデータを格納するために利用される場合に、再要求されたブロックに格納されるデータは、一般的に、再要求されたブロックの消去カウントが上述の消去カウント許容限界であるかどうかに関係なく、データのインテグリティを確実にするために、2−ビットECCアルゴリズムを利用して符号化される。従って、再要求されたブロックが存在し得るシステム内で、ブロックが書き込まれ、または、読み出される際に、再要求されたブロックが識別される。次に図5aを参照して、再要求されたブロックが存在し得、かつ、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを利用してデータが符号化され得るシステム内で、ブロックに書き込む1つの方法は、本発明の実施形態に沿って説明される。データを書き込むプロセス500は、書き込まれるべきブロックが識別されるステップ504から開始する。ブロックに対応するエントリは、ステップ508において、消去カウントブロックから読み出される。典型的には、エントリは、このブロックに対する消去カウントと、ブロックが再要求されたかどうかのインディケーションを含む。
一旦、ステップ508においてブロックに対応するエントリが読み出されると、ステップ512において、そのブロックが再要求されたブロックであるかどうかが判断される。ブロックが再要求されたブロックであると判断される場合は、ブロックに書き込まれる、または、格納されるコンテンツは、ステップ516において、2−ビットECCアルゴリズムを利用して符号化される。コンテンツが符号化された後に、ステップ520において、符号化されたコンテンツがブロックに書き込まれ、コンテンツをブロックに書き込むプロセスは完了する。
ステップ512に戻ると、ブロックが再要求されたブロックでないと判断される場合は、プロセスフローは、ステップ508において消去カウントブロックから読み出され得るブロックに対する消去カウントが、許容限界消去カウントより小さいかどうかが判断されるステップ524に移動する。ブロックに対する消去カウントが許容限界消去カウントよりも小さくないと判断される場合、ステップ504において識別されるブロックに格納されるべきコンテンツを符号化するために、2−ビットECCアルゴリズムが利用されるべきであることが示される。従って、プロセスフローは、ステップ524から、2−ビットECCアルゴリズムを利用してコンテンツが符号化されるステップ516に移動する。
もしくは、ステップ524において、消去カウントが許容限界消去カウントよりも小さくないと判断される場合、識別されたブロックに書き込まれるべきコンテンツは、ステップ528において、1−ビットECCアルゴリズムを利用して符号化される。次に、符号化されたコンテンツは、ステップ532において、ブロックへ格納される、または、書き込まれ、ブロックへコンテンツを書き込むプロセスは完了する。
図5bは、本発明の実施形態に従った、再要求されたブロックであり得、かつ、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを利用して符号化されるコンテンツを有し得るブロックからコンテンツを読み出す1つの方法を示すプロセスフロー図である。読み出しプロセス550は、読み出されるべきコンテンツを有するブロックが識別されるステップ554から開始する。次に、ブロックに対応するエントリは、ステップ558において消去カウントブロックで識別される。エントリは、一般的に、そのブロックが再要求されたブロックであるかどうかのインディケーションと、ブロックに対する消去カウントとを含む。
ブロックに対応するエントリが識別された後、ステップ562において、ブロックが再要求されたブロックであるかどうかに関する判断がなされる。典型的には、ステップ558において、消去カウントブロックから識別される、または、読み出されるエントリを調べることによって、そのような判断がなされ得る。ブロックが再要求されたブロックであると判断される場合は、ブロックに格納されるコンテンツは、ステップ574において、2−ビットECCアルゴリズムを利用して復号化される。一旦、コンテンツが復号化されると、ブロックからデータまたはコンテンツを読み出すプロセスが完了する。
もしくは、ステップ562において、ブロックが再要求されたブロックでないと判断される場合、ステップ566において、ブロックの消去カウントが許容限界消去カウント以下であるかどうかが判断される。ブロックの消去カウントが許容限界以下でないと判断される場合、そのコンテンツは2−ビットECCアルゴリズムを利用して符号化されたことが示される。従って、ステップ574において、データは、2−ビットECCアルゴリズムを利用して復号化される。一方、ブロックの消去カウントが許容限界以下であると判断される場合、ステップ570において、データは1−ビットECCアルゴリズムを利用して復号化される。データが復号化された後、ブロックからデータまたはコンテンツを読み出すプロセスは完了する。
一般的に、静的なブロックをスワッピングさせることができ、かつ、再要求され得るブロックを含むシステムに対するシステム初期化プロセスは、静的なブロックをスワッピングさせることができるが、再要求されたブロックとならないシステムに対するシステム初期化プロセスとは異なる。図6を参照して、再要求されたブロックを含むハイブリッドECC実装を有するメモリシステムを初期化する1つの方法は、本発明の実施形態に従って説明される。初期化プロセス600は、静的ブロックが識別されるステップ604から開始する。一旦、静的ブロックが識別されると、相対的に大きい消去カウントを有する使用されていないブロックが、ステップ608において識別される。相対的に大きい消去カウントを有する使用されていないブロックは、一般的に、静的なブロックとスワップされるように構成されることにより、静的なブロックのコンテンツが、相対的に大きい消去カウントを有する使用されていないブロックへ格納される一方で、静的なブロックは、リサイクルされ得るか、そうでなければ再利用され得る。
ステップ612において、メモリシステムと関連する平均消去カウント(消去カウントブロックから入手され得る)が消去カウント許容限界よりも大きいかどうかに関して、判断がなされる。平均消去カウントが許容限界消去カウントよりも大きいと判断される場合は、ステップ616において、再要求されたブロックである任意の静的なブロックが識別される。静的なブロックに関連する冗長な領域を調べるか、または、消去カウントブロック内の関連するエントリを調べるかのどちらかによって、そのような識別がなされ得る。
再要求された静的なブロックが識別された後、再要求された静的なブロックのコンテンツは、ステップ620において、2−ビットECCアルゴリズムを利用して復号化される。次に、ステップ624において、残りの静的なブロックのコンテンツが、必要に応じて復号化される。すなわち、許容限界消去カウントよりも小さい消去カウントを有する残りの静的なブロックのコンテンツは、1−ビットECCアルゴリズムを利用して復号化されるが、許容限界消去カウントよりも大きい消去カウントを有する残りの静的なブロックのコンテンツは、2−ビットECCアルゴリズムを用いて復号化される。一旦、静的なブロックの全てのコンテンツが復号化されると、ステップ628において、2−ビットECCアルゴリズムを利用してコンテンツが符号化され、ステップ632において、相対的に大きい消去カウントを有するブロックに、符号化されたコンテンツが格納されるか、または、コピーされる。符号化されたコンテンツをブロックにコピーすると同時に、システム初期化プロセスは完了する。
ステップ612に戻り、平均消去カウントが許容限界消去カウントよりも大きいかどうかが判断される。平均消去カウントが許容限界消去カウントよりも大きくないと判断される場合は、相対的に大きい消去カウントを有する使用されていないブロックは、許容限界消去カウントよりも小さい消去カウントを有する可能性が高いことが示される。従って、プロセスフローは、ステップ612から、再要求されたブロックである使用されていないブロックが識別されるステップ636に移動する。すなわち、以前に再要求された相対的に大きい消去カウントを有する使用されていないブロックが、識別される。一旦、以前に再要求された相対的に大きい消去カウントを有する使用されていないブロックが識別されると、再要求されたブロックである任意の静的なブロックが、ステップ640において識別される。
ステップ640から、プロセスフローは、再要求された静的なブロックのコンテンツが2−ビットECCアルゴリズムを利用して復号化されるステップ644に進む。再要求された静的なブロックのコンテンツが復号化された後、残りの静的なブロックのコンテンツは、ステップ648において必要に応じて復号化される。典型的には、いくらかの静的なブロックは、1−ビットECCアルゴリズムを利用して復号化され得るが、他の静的なブロックは、2−ビットECCアルゴリズムを利用して復号化され得る。残りの静的なブロックのコンテンツを復号化すると直ぐに、再要求された使用されていないブロックに格納されるべき任意のコンテンツは、ステップ652において、2−ビットECCアルゴリズムを利用して符号化される。ステップ656において、以前に再要求されていない使用されていないブロックに格納されるべきコンテンツは、1−ビットECCアルゴリズムを利用して符号化される。一旦、実質的に全てのコンテンツが符号化されると、符号化されたコンテンツは、ステップ660において、相対的に大きい消去カウントを有すると意図される使用されていないブロックにコピーされ、初期化プロセスは完了する。
ハイブリッドECC実装を実装するステップと関連する機能性は、ソフトウェア(例えば、プログラムコードデバイス、または、不揮発性メモリもしくは不揮発性メモリコンポーネントを含むホストシステムに対するファームウェア)に提供される。ホストシステムに対して提供されるソフトウェアまたはファームウェアと関連する適切なシステムアーキテクチャの1つの実施形態が、図7に示される。システムアーキテクチャ700は、一般的に、アプリケーションインターフェイスモジュール704、システムマネージャモジュール708、データマネージャモジュール712、データインテグリティマネージャ716、および、デバイスマネージャおよびインターフェイスモジュール720を含み得るが、それらに制限されない様々なモジュールを含む。一般的に、システムアーキテクチャ700は、プロセッサ(例えば、図1aのプロセッサ108)によってアクセスされ得るソフトウェアコードデバイスまたはファームウェアを利用して実装され得る。
一般的に、アプリケーションインターフェイスモジュール704は、要求の初期化、または、システムフォーマッティングの過程の間にメディアを初期化するために、フラッシュメモリ(示されない)などの不揮発性メモリ(より一般的には、メディア)と通信するように構成され得る。アプリケーションインターフェイスモジュール704はまた、メディアと関連するセクタ、クラスター、または、ページから読み出し、かつ、メディアと関連するセクタ、クラスター、または、ページへ書き込み得る。典型的には、メディアと通信するステップに加えて、アプリケーションインターフェイスモジュール704はまた、システムマネージャモジュール708およびデータマネージャモジュール712と通信する。
システムマネージャモジュール708は、システム初期化サブモジュール724、消去カウントブロック管理サブモジュール726、および、電力管理ブロックサブモジュール730を含む。システム初期化サブモジュール724は、一般的に、初期化要求を処理可能にするように構成され、典型的には、消去カウントブロック管理サブモジュール726と通信する。システム初期化モジュール724はまた、1対多の論理対物理ブロックの割り当てを分割するように構成される。
消去カウントブロック管理サブモジュール726は、ブロックの消去カウントを格納させる機能性と、個別の消去カウントを利用して、平均消去カウントを計算させ、アップデートさせる機能性とを含む。言い換えると、消去カウントブロック管理サブモジュール726により、効果的に消去カウントをカタログ化することができ、平均消去カウントを保持することができる。さらに、1つの実施形態では、消去カウントブロック管理サブモジュール726はまた、システム全体の初期化要求の間に、消去カウントブロックの実質的に全てのブロックの消去カウントを、実質的に同期させる。消去カウントブロック管理サブモジュール726が、平均消去カウントを消去カウントブロック内に格納させるように構成され得る一方、電力管理ブロックサブモジュール730が、その平均消去カウントを格納可能にするために代わりに利用され得ることが、理解されるべきである。
アプリケーションインターフェイスモジュール704との通信に加えて、システムマネージャモジュール708はまた、データマネージャモジュール712、および、デバイスマネージャおよびインターフェイスモジュール720と通信する。システムマネージャモジュール708およびアプリケーションインターフェイスモジュール704の両方と通信するデータマネージャモジュール712は、論理セクタを物理セクタへ効果的に変換するセクタマッピングを提供する機能を含み得る。すなわち、データマネージャモジュール712は、論理ブロックを物理ブロックへマップするように構成される。データマネージャモジュールはまた、その全体を本明細書中で参照として援用する同時係属中の米国特許出願第10/281,855号に記載されるように、オペレーティングシステムおよびファイルシステムインターフェイス層と関連する機能を含み得、ブロック内のグループを管理可能にする。1つの実施形態では、データマネージャモジュール712は、実質的にアウトオブシーケンス(out−of−sequence)書き込みプロセスが発生可能なように構成され得る。
システムマネージャモジュール708、データマネージャ712、およびデータインテグリティマネージャ716と通信するデバイスマネージャおよびインターフェイスモジュール720は、典型的には、フラッシュメモリインターフェイスを提供し、ハードウェア抽象化と関連する機能(例えばI/Oインターフェイス)を含む。データインテグリティマネージャモジュール716は、他にも機能はあるが、ECC処理を提供する。
本発明の2、3の実施形態のみが説明されたが、理解されるべきことは、本発明は、本発明の意図または範囲を逸脱することなしに、多くの他の特定の形式で具現化され得ることである。一例として、1−ビットECCアルゴリズムは、消去カウント許容限界よりも小さい消去カウントを有するブロックのコンテンツを符号化するために利用するのに適しているとして説明されたが、2−ビットECCアルゴリズムは、消去カウント許容限界よりも大きい消去カウントを有するブロックのコンテンツを符号化するために利用するのに適しているとして説明された。しかし、理解されるべきは、いくつかの実施形態において、2−ビットECCアルゴリズムは、消去カウント許容限界よりも小さい消去カウントを有するブロックのコンテンツを符号化するために利用され得、2−ビットECCアルゴリズムよりもさらに高度な正確さを有するアルゴリズム、例えば、3−ビットECCアルゴリズムは、消去カウント許容限界よりも大きい消去カウントを有するブロックのコンテンツを符号化するために利用され得る。
さらに、ECCアルゴリズムは、一般的に、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムとして説明されたが、ECCアルゴリズムは、それぞれ、1−符号ECCアルゴリズムまたは2−符号ECCアルゴリズムに代替され得る。さらに、利用される実際のECCアルゴリズムは、広範囲に変化し得る。適切なECCアルゴリズムは、Reed−Solomonアルゴリズム、Hammingコードアルゴリズム、およびバイナリHammingコードアルゴリズムを含み得るが、それらに制限されない。例えば、1つの実施形態では、適切な1−ビットECCアルゴリズムは、Hammingコードアルゴリズムであってもよく、一方、適切な2−ビットECCアルゴリズムは、Reed−Solomonアルゴリズムであってもよい。
不揮発性メモリ内ブロックのコンテンツを符号化および復号化するために、異なるエラー訂正コードアルゴリズムを利用するための方法および装置が開示される。
本発明の1つの局面によると、不揮発性メモリ内にデータを格納するための方法は、データが格納されるべき第1のブロックを識別するステップと、第1のブロックに関連するインディケータを入手するステップとを包含する。次に、インディケータが、データが第1のアルゴリズムを利用して符号化されるべきことを示すかどうかに関して、判断がなされ得る。データが第1のアルゴリズムを用いて符号化されるべきであると判断される場合に、データは、第1のアルゴリズムを用いて符号化される。その後、第1のアルゴリズムを利用して符号化されたデータは、第1のブロックに書き込まれる。
本発明の様々な方法に関連するステップは広範囲に利用され得る。一般的に、本発明の意図および範囲から逸脱することなく、ステップは付加され、取り除かれ、順序変更が行われ、かつ、変更される。例えば、ハイブリッドECC実装を含むメモリシステムを初期化するプロセスは、静的なブロックを消去するステップを含み得る。さらに、再要求されたブロックをデータを格納するために利用し得る実施形態に対しては、ブロックが再要求されたかどうかを判断する前に、最初に、該当のブロックに対する消去カウントが消去カウント許容限界を超えているかどうかが判断され得る。従って、本例は、例であるが制限されないものとしてみなされる。本発明は、本明細書中に与えられた詳細に制限されないが、付属の特許請求の範囲内で改変され得る。
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
図1aは、不揮発性メモリを含む一般的なホストシステムの図式表示である。 図1bは、メモリデバイス、例えば、図1aのメモリデバイス120の図式表示である。 図1cは、組み込み不揮発性メモリを含むホストシステムの図式表示である。 図2aは、本発明の実施形態に従った、1−ビットまたは2−ビットECCのどちらかを利用してユーザデータをブロックへ書き込む方法を示すプロセスフロー図である。 図2bは、本発明の実施形態に従った、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを利用してコンテンツが符号化され得るシステム内で、ブロックからコンテンツを読み出す1つの方法を示すプロセスフロー図である。 図3は、本発明の実施形態に従った、ブロックのコンテンツがハイブリッドECC実装を利用して符号化され得るメモリシステムを初期化するための1つの方法を示すプロセスフロー図である。 図4aは、本発明の実施形態に従った、利用不可能なブロックを再要求するプロセスのブロック図式表示である。 図4bは、本発明の実施形態に従った、消去カウントブロックの一部分の図式表示である。 図5aは、本発明の実施形態に従った、再要求されたブロックが存在し得、かつ、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムを利用してデータが符号化され得るシステム内のブロックに書き込む1つの方法を示すプロセスフロー図である。 図5bは、本発明の実施形態に従った、再要求されたブロックであり得、かつ、1−ビットECCアルゴリズムまたは2−ビットECCアルゴリズムのどちらかを利用して符号化されるコンテンツを有し得るブロックからコンテンツを読み出す1つの方法を示すプロセスフロー図である。 図6は、本発明の実施形態に従った、再要求されたブロックを含むハイブリッドECC実装を有するメモリシステムを初期化する1つの方法を示すプロセスフロー図である。 図7は、本発明の実施形態に従った、システムアーキテクチャのブロック図表示である。
符号の説明
11 メモリセル配列
15 バス
17 アドレスデコーダ
19 回路
21 バッファメモリ
23 制御システムの一部分
100 ホストシステム
104 システムバス
108 マイクロプロセッサ
112 ランダムアクセスメモリ(RAM)
116 入力/出力回路
120 不揮発性メモリデバイス
124 不揮発性メモリ
128 メモリ制御システム
154 システムバス
158 マイクロプロセッサ
162 RAM
166 入力/出力回路
174 不揮発性メモリ
180 インターフェイス
704 アプリケーションインターフェイスモジュール
708 システムマネージャモジュール
712 データマネージャモジュール
716 データインテグリティマネージャ
720 デバイスマネージャおよびインターフェイスモジュール
724 システム初期化サブモジュール
726 消去カウントブロック管理サブモジュール
730 電力管理ブロックサブモジュール

Claims (45)

  1. メモリシステムの不揮発性メモリ内にデータを格納するための方法であって、該方法は、
    該データが格納されるべき第1のブロックを識別するステップと、
    該第1のブロックに関連するインディケータを入手するステップと、
    該インディケータが、該データが第1のアルゴリズムを利用して符号化されるべきことを示す場合を判断するステップと、
    該データが該第1のアルゴリズムを利用して符号化されるべきであることが判断される場合に、該第1のアルゴリズムを利用して該データを符号化するステップと、
    該第1のアルゴリズムを利用して符号化された該データを該第1のブロックへ書き込むステップと
    を包含する、方法。
  2. 前記第1のアルゴリズムを利用して前記データが符号化されるべきでないと判断される場合に、第2のアルゴリズムを利用して該データを符号化するステップと、
    該第2のアルゴリズムを利用して符号化された該データを前記第1のブロックへ書き込むステップと
    をさらに包含する、請求項1に記載の方法。
  3. 前記第1のアルゴリズムは、1−ビットエラー訂正コード(ECC)アルゴリズムであり、前記第2のアルゴリズムは、2−ビットエラー訂正コード(ECC)アルゴリズムである、請求項2に記載の方法。
  4. 前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されるべきことを示すようにさらに構成される、請求項2に記載の方法。
  5. 前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項2に記載の方法。
  6. 前記インディケータが、前記データが前記第1のアルゴリズムを利用して符号化されるべきことを示す場合を前記判断するステップは、
    該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第1のアルゴリズム利用して符号化されるべきである、ステップ
    を包含する、請求項5に記載の方法。
  7. 前記インディケータは、前記不揮発性メモリ内のブロックが消去されたおよその平均回数を示すように構成される、請求項2に記載の方法。
  8. 前記インディケータは、データ構造に格納され、該データ構造は、前記第1のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含する、請求項2に記載の方法。
  9. 前記不揮発性メモリはフラッシュメモリである、請求項1に記載の方法。
  10. 前記フラッシュメモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方である、請求項9に記載の方法。
  11. メモリシステムの不揮発性メモリ内のデータを読み出すための方法であって、該方法は、
    データが読み出されるべき第1のブロックを識別するステップと、
    該第1のブロックに関連するインディケータを入手するステップと、
    該インディケータが、該第1のブロックに格納された該データが第1のアルゴリズムを利用して符号化されたことを示す場合を判断するステップと、
    該データが該第1のアルゴリズムを利用して符号化されたと判断される場合に、該第1のアルゴリズムを利用して該データを復号化するステップと
    を包含する、方法。
  12. 前記データが前記第1のアルゴリズムを利用して符号化されていないと判断される場合に、第2のアルゴリズムを利用して該データを復号化するステップ
    をさらに包含する、請求項11に記載の方法。
  13. 前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムである、請求項12に記載の方法。
  14. 前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されたことを示すようにさらに構成される、請求項12に記載の方法。
  15. 前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項12に記載の方法。
  16. 前記インディケータが、前記データが前記第1のアルゴリズムを利用して符号化されたことを示す場合を判断するステップは、
    該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが該許容限界値よりも小さい場合に、該データは該第1のアルゴリズムを利用して符号化されたものである、ステップ
    を包含する、請求項15に記載の方法。
  17. 前記インディケータは、前記不揮発性メモリの物理ブロックが消去されたおよその平均回数を示すように構成される、請求項12に記載の方法。
  18. 前記インディケータは、データ構造に格納され、該データ構造は、前記第1のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含する、請求項12に記載の方法。
  19. 前記不揮発性メモリはフラッシュメモリである、請求項11に記載の方法。
  20. 前記フラッシュメモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方である、請求項19に記載の方法。
  21. 複数のブロックを含む不揮発性メモリであって、該複数のブロックは第1のブロックを含む、不揮発性メモリと、
    データが格納されるべき該第1のブロックを識別するためのコードデバイスと、
    該第1のブロックと関連するインディケータを入手するためのコードデイバスと、
    該インディケータは、該データが第1のアルゴリズムを利用して符号化されるべきであることを示す場合を判断するためのコードデバイスと、
    該データが該第1のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第1のアルゴリズムを利用して該データを符号化するためのコードデバイスと、
    該第1のアルゴリズムを利用して符号化された該データを、該第1のブロックへ書き込むためのコードデバイスと、
    該コードデバイスが格納されるメモリ領域と
    を備える、メモリシステム。
  22. 前記データが前記第1のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第2のアルゴリズムを利用して該データを符号化するためのコードデバイスと、
    該第2のアルゴリズムを利用して符号化される該データを、該第1のブロックへ書き込むためのコードデバイスと
    をさらに備える、請求項21に記載のメモリシステム。
  23. 前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムである、請求項22に記載のメモリシステム。
  24. 前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されるべきであることを示すようにさらに構成される、請求項22に記載のメモリシステム。
  25. 前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項22に記載のメモリシステム。
  26. 前記インディケータは、前記データが前記第1のアルゴリズムを利用して符号化されるべきことを示す場合を判断するためのコードデバイスは、
    該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第1のアルゴリズム利用して符号化されるべきである、コードデバイス
    を備える、請求項25に記載のメモリシステム。
  27. 前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方である、請求項21に記載のメモリシステム。
  28. 複数のブロックを含む不揮発性メモリであって、該複数のブロックは第1のブロックを含み、該第1のブロックはデータを含む、不揮発性メモリと、
    該第1のブロックを識別するためのコードデバイスと、
    該第1のブロックに関連するインディケータを入手するためのコードデバイスと、
    該インディケータが、該データが第1のアルゴリズムを利用して符号化されたことを示す場合を決定するためのコードデバイスと、
    該データが該第1のアルゴリズムを利用して符号化されたと判断される場合に、該第1のアルゴリズムを利用して該データを復号化するためのコードデバイスと、
    該コードデバイスを格納するメモリ領域と
    を備える、メモリシステム。
  29. 該データが該第1のアルゴリズムを利用して符号化されていないと判断される場合に、第2のアルゴリズムを利用してデータを復号化するためのコードデバイス
    をさらに備える、請求項28に記載のメモリシステム。
  30. 前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムである、請求項29に記載のメモリシステム。
  31. 前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第2のアルゴリズムを利用して符号化されたことを示すようにさらに構成される、請求項29に記載のメモリシステム。
  32. 前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項29に記載のメモリシステム。
  33. 前記インディケータは、前記データが前記第1のアルゴリズムを利用して符号化されたことを示す場合を判断するための前記コードデバイスは、
    該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第1のアルゴリズム利用して符号化されたものである、コードデバイス
    を備える、請求項32に記載のメモリシステム。
  34. 前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方である、請求項28に記載のメモリシステム。
  35. 複数のブロックを含む不揮発性メモリであって、該ブロックは、第1のブロックおよび第2のブロックを含み、該第1のブロックは、第1のアルゴリズムを利用して符号化される第1のコンテンツのセットを含み、該第2のブロックは、該第2のアルゴリズムを利用して符号化される第2のコンテンツのセットを含み、該不揮発性メモリは、該第1のコンテンツのセットが該第1のアルゴリズムを利用して符号化されることと、該第2のコンテンツのセットが該第2のアルゴリズムを利用して符号化されることとを示すように構成されるデータ構造をさらに含む、不揮発性メモリと、
    該データ構造にアクセスするためのコードデバイスであって、該データ構造にアクセスするための該コードデバイスは、該第1のコンテンツのセットが該第1のアルゴリズムを利用して符号化されることを判断するためのコードデバイスと、該第2のコンテンツのセットが該第2のアルゴリズムを利用して符号化されることを判断するためのコードデバイスとを含む、コードデバイスと、
    該コードデバイスを格納するメモリ領域と
    を備える、メモリシステム。
  36. 前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムである、請求項35に記載のメモリシステム。
  37. 前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方である、請求項36に記載のメモリシステム。
  38. データが格納されるべき第1のブロックを含む不揮発性メモリと、
    該第1のブロックを識別する手段と、
    該第1のブロックと関連するインディケータを入手する手段と、
    該インディケータが、該データが第1のアルゴリズムを利用して符号化されるべきであることを示す場合を判断する手段と、
    該データが該第1のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第1のアルゴリズムを利用して該データを符号化する手段と
    を備える、メモリシステム。
  39. 前記データが前記第1のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第2のアルゴリズムを利用して該データを符号化する手段と、
    前記第2のアルゴリズムを利用して符号化されたデータを、該第1のブロックへ書き込む手段と
    をさらに備える、請求項38に記載のメモリシステム。
  40. 前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムである、請求項39に記載のメモリシステム。
  41. 前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方である、請求項38に記載のメモリシステム。
  42. データが読み出されるべき第1のブロックを含む不揮発性メモリシステムと、
    該第1のブロックを識別する手段と、
    該第1のブロックと関連するインディケータを入手する手段と、
    該インディケータが、該第1のブロックに格納される該データが第1のアルゴリズムを利用して符号化されたことを示す場合を判断する手段と、
    該データが該第1のアルゴリズムを利用して符号化されたと判断される場合に、該第1のアルゴリズムを利用して該データを復号化する手段と
    を備える、メモリシステム。
  43. 前記データが前記第1のアルゴリズムを利用して符号化されていないと判断される場合に、第2のアルゴリズムを利用して該データを復号化する手段
    をさらに備える、請求項42に記載のメモリシステム。
  44. 前記第1のアルゴリズムは、1−ビットECCアルゴリズムであり、前記第2のアルゴリズムは、2−ビットECCアルゴリズムである、請求項43に記載のメモリシステム。
  45. 前記不揮発性メモリは、NANDフラッシュメモリおよびMLC NANDフラッシュメモリの一方である、請求項42に記載のメモリシステム。
JP2003366725A 2002-10-28 2003-10-27 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装 Expired - Fee Related JP4429685B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US42191102P 2002-10-28 2002-10-28

Publications (3)

Publication Number Publication Date
JP2004164634A true JP2004164634A (ja) 2004-06-10
JP2004164634A5 JP2004164634A5 (ja) 2006-11-30
JP4429685B2 JP4429685B2 (ja) 2010-03-10

Family

ID=32825088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003366725A Expired - Fee Related JP4429685B2 (ja) 2002-10-28 2003-10-27 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装

Country Status (7)

Country Link
US (1) US8412879B2 (ja)
EP (1) EP1424631B1 (ja)
JP (1) JP4429685B2 (ja)
KR (1) KR101017443B1 (ja)
CN (1) CN1499532B (ja)
AT (1) ATE320041T1 (ja)
DE (1) DE60303895T2 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007305267A (ja) * 2006-05-15 2007-11-22 Toshiba Corp 半導体記憶装置
JP2008009635A (ja) * 2006-06-28 2008-01-17 Hitachi Ltd ストレージシステム及びそのデータ保護方法
JP2008508632A (ja) * 2004-08-02 2008-03-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ記憶及び再生装置
JP2008192054A (ja) * 2007-02-07 2008-08-21 Megachips Lsi Solutions Inc 半導体メモリシステム
CN101258471A (zh) * 2005-07-15 2008-09-03 Gsip有限责任公司 闪存纠错
JP2008217811A (ja) * 2008-04-03 2008-09-18 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
JP2009048758A (ja) * 2007-08-16 2009-03-05 Samsung Electronics Co Ltd 高速プログラムが可能な不揮発性半導体メモリシステム及びその読み出し方法
WO2009064791A2 (en) * 2007-11-13 2009-05-22 Mcm Portfolio Llc Method and apparatus of automatically selecting error correction algorithms
JP2011525655A (ja) * 2008-06-24 2011-09-22 サンディスク アイエル リミテッド ソリッドステートメモリの消去カウントにしたがってエラー修正をする方法および装置
JP2011233207A (ja) * 2010-04-28 2011-11-17 Univ Of Tokyo データ入出力制御装置および半導体記憶装置システム
JP2012118839A (ja) * 2010-12-02 2012-06-21 Fujitsu Ltd アクセス制御装置、誤り訂正制御方法およびストレージ装置
JP2013542533A (ja) * 2010-10-27 2013-11-21 エルエスアイ コーポレーション フラッシュメモリベースのデータ記憶のための順応ecc技術
JP2014063503A (ja) * 2013-11-07 2014-04-10 Univ Of Tokyo データ入出力制御装置および半導体記憶装置システム
JP2017027440A (ja) * 2015-07-24 2017-02-02 ソニー株式会社 符号化装置、メモリシステム、通信システムおよび符号化方法

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
EP1758027B1 (en) * 2003-12-30 2010-07-14 SanDisk Corporation Non-volatile memory and method with control data management
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP4182928B2 (ja) 2004-07-07 2008-11-19 セイコーエプソン株式会社 情報処理装置、メモリ管理プログラムおよびメモリ管理方法
US8341371B2 (en) * 2005-01-31 2012-12-25 Sandisk Il Ltd Method of managing copy operations in flash memories
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
CN101405810B (zh) * 2006-01-20 2012-01-25 马维尔国际贸易有限公司 在闪存中用于纠错的方法和系统
US7697326B2 (en) * 2006-05-12 2010-04-13 Anobit Technologies Ltd. Reducing programming error in memory devices
WO2007132457A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US8239735B2 (en) * 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US7971071B2 (en) * 2006-05-24 2011-06-28 Walkoe Wilbur J Integrated delivery and protection device for digital objects
US7533328B2 (en) * 2006-07-04 2009-05-12 Sandisk Il, Ltd. Method of error correction in a multi-bit-per-cell flash memory
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7545681B2 (en) * 2006-11-27 2009-06-09 Sandisk Corporation Segmented bitscan for verification of programming
US7440319B2 (en) * 2006-11-27 2008-10-21 Sandisk Corporation Apparatus with segmented bitscan for verification of programming
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) * 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US20080140918A1 (en) * 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US7593263B2 (en) * 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US7900102B2 (en) * 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
KR100842680B1 (ko) 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
WO2008111058A2 (en) * 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) * 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) * 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US7747903B2 (en) * 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
KR101413736B1 (ko) 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
US8174905B2 (en) * 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8068360B2 (en) * 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
KR101509836B1 (ko) * 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) * 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) * 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) * 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) * 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) * 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8059457B2 (en) * 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US20090287969A1 (en) * 2008-05-13 2009-11-19 Bpm Microsystems Electronic apparatus and bit error rate tolerance method for programming non-volatile memory devices
US8498151B1 (en) 2008-08-05 2013-07-30 Apple Inc. Data storage in analog memory cells using modified pass voltages
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8213229B2 (en) * 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8248831B2 (en) * 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US20130047056A1 (en) * 2009-05-05 2013-02-21 Lite-On It Corporation Flash memory device with rectifiable redundancy and method of controlling the same
CN101794623B (zh) * 2009-06-01 2013-11-06 深圳市朗科科技股份有限公司 存储设备的纠错装置及方法
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8566689B2 (en) * 2009-10-22 2013-10-22 Microsoft Corporation Data integrity units in nonvolatile memory
US8301987B2 (en) * 2009-10-29 2012-10-30 Sandisk Il Ltd. System and method of decoding data with reduced power consumption
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8799747B2 (en) 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
FR2961613B1 (fr) * 2010-06-18 2012-07-27 Commissariat Energie Atomique Procede de protection memoire configurable contre les erreurs permanentes et transitoires et dispositif apparente
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
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
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
WO2012020278A1 (en) 2010-08-13 2012-02-16 Sandisk Il Ltd. Data coding using divisions of memory cell states
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
CN103221928B (zh) 2010-10-29 2016-01-20 英派尔科技开发有限公司 用于固态驱动器的擦除次数减少的高级数据编码
KR20120064462A (ko) 2010-12-09 2012-06-19 삼성전자주식회사 메모리 컨트롤러, 이의 오류정정 방법, 및 이를 포함하는 메모리 시스템
CN102142282B (zh) * 2011-02-21 2012-10-24 北京理工大学 一种NANDFlash存储芯片ECC校验算法的识别方法
US8661221B2 (en) * 2011-03-16 2014-02-25 International Business Machines Corporation Leasing fragmented storage between processes
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10838646B2 (en) 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition
KR102049281B1 (ko) 2012-10-23 2019-11-27 삼성전자주식회사 불휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템, 그리고 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
CN103077096A (zh) * 2012-12-31 2013-05-01 记忆科技(深圳)有限公司 数据纠错系统、固态硬盘及数据纠错方法
KR101741346B1 (ko) 2013-01-11 2017-06-15 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 플래시 메모리들에 대한 페이지 할당
KR101742462B1 (ko) 2013-02-27 2017-06-01 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 메모리 디바이스들을 위한 선형 프로그래밍 기반 디코딩
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
CN104111893A (zh) * 2013-06-21 2014-10-22 芜湖美的厨卫电器制造有限公司 数据的存储方法
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US9859925B2 (en) 2013-12-13 2018-01-02 Empire Technology Development Llc Low-complexity flash memory data-encoding techniques using simplified belief propagation
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
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
CN105988887A (zh) * 2015-01-31 2016-10-05 深圳市硅格半导体有限公司 存储卡数据处理系统及方法
US9401216B1 (en) * 2015-09-22 2016-07-26 Sandisk Technologies Llc Adaptive operation of 3D NAND memory
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11762735B2 (en) 2021-10-01 2023-09-19 Western Digital Technologies, Inc. Interleaved ECC coding for key-value data storage devices
US11934264B2 (en) 2021-11-22 2024-03-19 Western Digital Technologies, Inc. ECC parity biasing for Key-Value data storage devices
CN117762819A (zh) * 2022-09-19 2024-03-26 慧荣科技股份有限公司 存取快闪存储器模块的方法与相关的快闪存储器控制器及记忆装置

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4785452A (en) * 1986-04-25 1988-11-15 International Business Machines Corporation Error detection using variable field parity checking
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5228046A (en) * 1989-03-10 1993-07-13 International Business Machines Fault tolerant computer memory systems and components employing dual level error correction and detection with disablement feature
EP0618535B1 (en) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US5222109A (en) * 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
US5438573A (en) * 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JPH06187248A (ja) 1992-12-16 1994-07-08 Nec Corp データエラー検出訂正制御回路
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5907856A (en) * 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5835935A (en) * 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US6125435A (en) * 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US5754565A (en) * 1996-10-15 1998-05-19 Quantum Corporation Reconstruction of syndromes for bi-level on-the-fly error correction in disk drive systems
US5905858A (en) * 1996-11-01 1999-05-18 Micron Electronics, Inc. System for method memory error handling
US6311290B1 (en) * 1997-02-14 2001-10-30 Intel Corporation Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US5961660A (en) * 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5956743A (en) * 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
JPH1173797A (ja) 1997-08-27 1999-03-16 Sony Corp 記憶装置
JP3998307B2 (ja) * 1997-12-25 2007-10-24 富士通株式会社 磁気ディスク装置及び磁気ディスク装置のエラー訂正方法
US6182239B1 (en) * 1998-02-06 2001-01-30 Stmicroelectronics, Inc. Fault-tolerant codes for multi-level memories
KR100297986B1 (ko) * 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
JP3421581B2 (ja) 1998-06-29 2003-06-30 株式会社日立製作所 不揮発性半導体メモリを用いた記憶装置
US6260156B1 (en) * 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
AU7313600A (en) 1999-09-17 2001-04-24 Hitachi Limited Storage where the number of error corrections is recorded
US6487685B1 (en) * 1999-09-30 2002-11-26 Silicon Graphics, Inc. System and method for minimizing error correction code bits in variable sized data formats
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6747827B1 (en) * 2000-03-27 2004-06-08 Texas Instruments Incorporated Error correction codes applied variably by disk zone, track, sector, or content
US20010042230A1 (en) * 2000-05-10 2001-11-15 Seagate Technology Llc Sector validation for use in ECC engine validation
JP2002091831A (ja) 2000-09-12 2002-03-29 Hitachi Ltd データ処理システム及びデータ処理方法
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US7113432B2 (en) * 2000-09-14 2006-09-26 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6834331B1 (en) * 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
US6970890B1 (en) * 2000-12-20 2005-11-29 Bitmicro Networks, Inc. Method and apparatus for data recovery
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508632A (ja) * 2004-08-02 2008-03-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ記憶及び再生装置
US8402325B2 (en) 2004-08-02 2013-03-19 St-Ericsson Sa Data storage and replay apparatus
CN101258471A (zh) * 2005-07-15 2008-09-03 Gsip有限责任公司 闪存纠错
US8140939B2 (en) 2005-07-15 2012-03-20 Gs Ip Limited Liability Company Flash error correction
JP2009501380A (ja) * 2005-07-15 2009-01-15 ジーエス・アイピー・リミテッド・ライアビリティ・カンパニー フラッシュエラー訂正
JP2007305267A (ja) * 2006-05-15 2007-11-22 Toshiba Corp 半導体記憶装置
JP2008009635A (ja) * 2006-06-28 2008-01-17 Hitachi Ltd ストレージシステム及びそのデータ保護方法
JP2008192054A (ja) * 2007-02-07 2008-08-21 Megachips Lsi Solutions Inc 半導体メモリシステム
JP2009048758A (ja) * 2007-08-16 2009-03-05 Samsung Electronics Co Ltd 高速プログラムが可能な不揮発性半導体メモリシステム及びその読み出し方法
US8898543B2 (en) 2007-08-16 2014-11-25 Samsung Electronics Co., Ltd. Nonvolatile memory device, system, and method providing fast program and read operations
WO2009064791A2 (en) * 2007-11-13 2009-05-22 Mcm Portfolio Llc Method and apparatus of automatically selecting error correction algorithms
WO2009064791A3 (en) * 2007-11-13 2009-08-27 Mcm Portfolio Llc Method and apparatus of automatically selecting error correction algorithms
JP2008217811A (ja) * 2008-04-03 2008-09-18 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
JP2011525655A (ja) * 2008-06-24 2011-09-22 サンディスク アイエル リミテッド ソリッドステートメモリの消去カウントにしたがってエラー修正をする方法および装置
US8677217B2 (en) 2010-04-28 2014-03-18 The University Of Tokyo Data input / output control device and semiconductor memory device system
JP2011233207A (ja) * 2010-04-28 2011-11-17 Univ Of Tokyo データ入出力制御装置および半導体記憶装置システム
JP2013542533A (ja) * 2010-10-27 2013-11-21 エルエスアイ コーポレーション フラッシュメモリベースのデータ記憶のための順応ecc技術
JP2012118839A (ja) * 2010-12-02 2012-06-21 Fujitsu Ltd アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8839072B2 (en) 2010-12-02 2014-09-16 Fujitsu Limited Access control apparatus, storage apparatus, and method
JP2014063503A (ja) * 2013-11-07 2014-04-10 Univ Of Tokyo データ入出力制御装置および半導体記憶装置システム
JP2017027440A (ja) * 2015-07-24 2017-02-02 ソニー株式会社 符号化装置、メモリシステム、通信システムおよび符号化方法
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

Also Published As

Publication number Publication date
EP1424631B1 (en) 2006-03-08
ATE320041T1 (de) 2006-03-15
CN1499532A (zh) 2004-05-26
JP4429685B2 (ja) 2010-03-10
EP1424631A1 (en) 2004-06-02
CN1499532B (zh) 2011-05-18
KR20040038711A (ko) 2004-05-08
DE60303895T2 (de) 2006-10-05
DE60303895D1 (de) 2006-05-04
US8412879B2 (en) 2013-04-02
KR101017443B1 (ko) 2011-02-25
US20040083333A1 (en) 2004-04-29

Similar Documents

Publication Publication Date Title
JP4429685B2 (ja) 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装
US7559004B1 (en) Dynamic redundant area configuration in a non-volatile memory system
TWI527037B (zh) 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
US7702880B2 (en) Hybrid mapping implementation within a non-volatile memory system
US7032087B1 (en) Erase count differential table within a non-volatile memory system
US20040083334A1 (en) Method and apparatus for managing the integrity of data in non-volatile memory system
US11138080B2 (en) Apparatus and method for reducing cell disturb in an open block of a memory system during a recovery procedure
US11544157B2 (en) Apparatus and method for storing data in an MLC area of a memory system
CN111435321B (zh) 处理存储器系统的易失性存储器中的错误的设备和方法
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
TWI616807B (zh) 資料寫入方法以及儲存控制器
US10997067B2 (en) Data storing method, memory controlling circuit unit and memory storage device
KR20050062638A (ko) 공통의 논리적 블록과 연관된 물리적 블록들을 결정하기위한 방법 및 장치
CN114822664B (zh) 基于数据优先级的风险评估方法、存储装置及控制电路
CN111755061A (zh) 检查存储器系统中的存储器装置的操作状态的设备及方法
US12014074B2 (en) System and method for storing dump data
US11687444B2 (en) Data managing method. memory controlling circuit unit and memory storage device
CN111858389B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
KR20190084488A (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061016

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090513

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090806

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090811

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090911

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091013

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091216

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4429685

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121225

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131225

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees