JP2009501380A - フラッシュエラー訂正 - Google Patents

フラッシュエラー訂正 Download PDF

Info

Publication number
JP2009501380A
JP2009501380A JP2008520940A JP2008520940A JP2009501380A JP 2009501380 A JP2009501380 A JP 2009501380A JP 2008520940 A JP2008520940 A JP 2008520940A JP 2008520940 A JP2008520940 A JP 2008520940A JP 2009501380 A JP2009501380 A JP 2009501380A
Authority
JP
Japan
Prior art keywords
data
memory
error
error correction
read
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
JP2008520940A
Other languages
English (en)
Other versions
JP4988731B2 (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.)
Cufer Asset Ltd LLC
Original Assignee
GS IP LLC
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 GS IP LLC filed Critical GS IP LLC
Publication of JP2009501380A publication Critical patent/JP2009501380A/ja
Application granted granted Critical
Publication of JP4988731B2 publication Critical patent/JP4988731B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials

Landscapes

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

Abstract

【課題】書き換え可能メモリに書き込まれるデータおよびこのメモリから読み出されるデータにエラー訂正アルゴリズムを適用するデータ処理装置を開示する。
【解決手段】前記データ処理装置はハードウェアで実現されたコーディングユニットを備え、このコーディングユニットはコーディング動作を実行でき、このコーディングユニット動作において、コーディングユニットはメモリに書き込まれる第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、第2データセットを出力してメモリに書き込む。前記データ処理装置はさらにソフトウェアで実現されたエラー訂正ユニットを備える。
【選択図】図1

Description

本発明は、書き換え可能メモリに書き込まれるデータおよび書き換え可能メモリから読み出されるデータにエラー訂正アルゴリズムを適用するデータ処理装置に関する。
フラッシュメモリは、電気的に消去および再プログラムすることができる不揮発性メモリの一形態である。フラッシュメモリは、デジタルオーディオプレーヤ、デジタルカメラおよび携帯電話などの広範囲の消費者製品に組み込まれている。しかし、全てのフラッシュメモリは、限定された回数の消去サイクルにしか耐えられないという欠点を免れていない。フラッシュメモリのダイ領域(半導体チップ上の面積)が絶えず大きくなっているため、メモリ内の任意のビットが破壊される統計的確率も増加している。
大容量記憶用途に対しては、NORフラッシュに比べて、高いデータ密度を理由として、NANDフラッシュが一般的に選択される。NANDフラッシュを使用することに関する主な欠点は、バイトの個々のビットにランダムにアクセスできないことである。代わりに、装置はハードディスクドライブのように、512バイトのセクタに構成される。フラッシュICが製造されて試験されるとき、これらセクタのいくつかはそのプロセスにおいて破壊されると予測されるので、追加のセクタを利用可能にしてこれらの損失を一般的な半導体歩留まりの問題に置き換える。多くの場合、このプロセスを外部から見えなくする複雑なコントローラが存在し、典型的には、このために2%の追加セクタが利用可能とされる。典型的なNANDフラッシュセクタは、約10000回再プログラム可能である。
フラッシュメモリに固有の耐久限度のために、多くの製造者は何らかの簡単なエラー訂正をメモリに組み込んでいる。典型的には、製造者はハミングコードを使用し、セクタサイズをさらに16バイト増加して、エラー訂正オーバーヘッドに対応しているが、このデータ空間は外部システムからは利用できない。これら技術の全ては、エラー訂正機能を実行するのに、フラッシュ装置上に追加のダイ領域を必要とする。
エラー訂正を用いると、フラッシュメモリは1つのセクタ内の1ビットのみを訂正でき(4096ビット中の1ビット)、セクタ当たり2ビットのエラーを検出できる。フラッシュ製造者は、この程度の訂正によって大部分の目的は満足されていると主張するが、ファイリングシステムによっては、特定のセクタが受ける破壊のレベルが大幅に増加する可能性があり、極めて短期間で製品故障を発生させる。
FAT16およびFAT32などのファイリングシステムは、全てのデータが装置上において格納されている場所をホストプロセッサに通知するのに使用されるテーブルの2つのコピーを保存する。大容量メモリの任意の部分が変更されるたびに、ファイリングシステムによってこの必須のデータは書き換えられる。NANDフラッシュメモリでは、単一位置すなわち単一バイトを独立に消去できないので、ブロック全体(いくつかのセクタを包含している)をフォーマットして、大容量メモリが変更さるたびに書き直す必要がある。これはUSBメモリのような多くの装置に初期故障を発生させる。
この問題に対する1つの解決策は、特定の頻繁にアクセスされるデータ項目が、フラッシュメモリの同一領域にライトバック(書戻し)されずに、そのフラッシュメモリのまわりに散りばめて装置全体にわたって「疲労」を分散させることを保証することである。
明らかに、製造者は、フラッシュドライブに組み込まれる複雑性が絶え間なく増加していくことを望まない。この理由は、このような複雑性の増加はユーザに認知される利点を必ずしも与えることなくコストを増加させるからである。フラッシュ製造者はまた、製品の固有の信頼性欠如に関して大きな問題を発生させることを望まない。
民生オーディオ製造者が直面する1つの問題は、コストがコモディティメモリ市場価格にますます大きく関連してきていることである。デジタルメディアの人気が増大するに伴い、この傾向は大きくなる。しかし、最終消費者は、PC市場と同様に、オーディオ供給者がこのメモリ価格変動を消費者の購入価格に組み込むことを許さない。したがって、オーディオ供給者は、メモリ市場の変わりやすく気まぐれな傾向に曝されることになる。
民生オーディオ産業はこれを克服する方法を探求してきており、メモリのリサイクルが一般化してきている。別のコモディティメモリ製品であるDRAMは、古いSIMMSから頻繁に回収されて、多くの場合周囲の市場価格の何分の1かである。リサイクルの構えができているオーディオ電子機器産業からのNANDフラッシュ需要の改革によって、この種のメモリ製品も部品リサイクル企業のターゲットになるように思われる。
リサイクルされたフラッシュメモリは多くの要因、すなわち(i)古い技術および(ii)欠陥セクタの高い確率、によって特徴付けられる。市場に参入するフラッシュコントローラは全て、リサイクルされたフラッシュメモリを使用可能にするように、これらの欠点を処理する必要がある。
したがって、リサイクルされたメモリに書き込まれるデータおよび/または読み出されるデータを処理する改良されたデータ処理装置が必要とされる。
本発明の第1構成によれば、書き換え可能メモリに書き込まれるデータおよびこのメモリから読み出されるデータにエラー訂正アルゴリズムを適用するデータ処理装置が提供される。このデータ処理装置は、ハードウェアに実装されたコーディングユニットと、ソフトウェアに実装されたエラー訂正ユニットとを備える。
前記コーディングユニットは、コーディング動作を実行でき、このコーディングユニット動作において、メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、メモリへの書込み用に第2データセットを出力する。前記コーディングユニットは、さらにエラー検出動作を実行でき、このエラー検出動作では、メモリから読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する。
前記エラー訂正ユニットは、エラーを含む読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して前記エラーを訂正し、これにより訂正されたデータを生成し、この訂正されたデータを出力する。
好ましくは、コーディングユニットは、メモリから読み出されたデータがエラーを含まないと判別すると、メモリから読み出されたデータを出力する。
コーディングユニットは、コーディング動作中に第1データセットに実行する処理と同一の処理を、エラー検出動作中にメモリから読み出されたデータのエラー検出処理に実行してもよい。
コーディングユニットは、エラー検出動作中に、メモリから読み出されたデータをコーディング動作に合わせて第1データセットとみなし、このデータをエラー訂正アルゴリズムに従って処理して第2データセットを生成してもよい。
好ましくは、コーディングユニットは、第1データセットが既に書き込まれたメモリ内の第1位置から読み出される情報データと、第2データセットが既に書き込まれたメモリ内の第2位置から読み出される、情報データについてのパリティデータとを受け取る。第2データセットは、コーディング動作中に前記第1データセットから既に生成されたものである。
コーディングユニットは、エラー訂正アルゴリズムに従って情報データを処理して第2データセットを生成し、この第2データセットをパリティデータと比較して、第2データセットがパリティデータと一致しない場合にその情報データがエラーを含むと判別することによって、メモリから読み出されたデータがエラーを含むか否かを判別してもよい。
コーディングユニットは、第1データセットを受け取り、このデータに生成多項式を乗算し、この乗算の結果を第2データセットとして出力する符号語生成器を備えてもよい。
コーディングユニットは、メモリから読み出されたデータを受け取り、この読み出されたデータに含まれる情報データに生成多項式を乗算し、この乗算の結果を読み出されたデータに含まれるパリティデータと比較する符号語生成器を備えてもよい。
コーディングユニットは、メモリから読み出されたデータを受け取り、読み出されたデータに含まれる情報データとパリティデータとを連結し(concatenate)、生成多項式の根を連結されたデータに代入し、その結果の値を加算するシンドローム生成器を備えてもよい。好ましくは、コーディングユニットは、その結果の値の総和(加算値)がゼロでない場合、情報データがエラーを含むと判別する。
シンドローム生成器は、生成多項式の複数の根を連結されたデータにそれぞれ代入し、各代入から得た値を加算してもよい。各代入から得た値の結果は、情報データ内のエラーの場所を表す。
好ましくは、コーディングユニットは、メモリから読み出されたデータがエラーを含むと判別すると、その情報データをエラー訂正ユニットに出力する。
エラー訂正ユニットは、メモリに書き込まれるデータをインターリーブし、メモリから読み出されたデータをデインターリーブしてもよい。
好ましくは、コーディングユニットは、メモリから読み出される256バイトごとに2つ以上のビットエラーを検出できる。
好ましくは、エラー訂正ユニットは、メモリから読み出される512バイトごとに2つ以上のビットエラーを訂正できる。
エラー訂正アルゴリズムはリードソロモン・コード(Reed-Solomon code)であってもよい。好ましくは、エラー訂正アルゴリズムはクロスインターリーブ・リードソロモン・コード(CIRC)である。
好ましくは、エラー訂正ユニットはデジタルプロセッサである。
本発明の第2構成によれば、データ記憶装置が提供され、このデータ記憶装置は、書き換え可能メモリと、ハードウェアに実装されたコーディングユニットと、ソフトウェアに実装されたエラー訂正ユニットとを備える。
前記コーディングユニットは、コーディング動作を実行でき、このコーディングユニット動作において、メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、メモリへの書込み用に第2データセットを出力する。前記コーディングユニットは、さらにエラー検出動作を実行でき、このエラー検出動作では、メモリから読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する。
前記エラー訂正ユニットは、エラーを含む読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して前記エラーを訂正し、これにより訂正されたデータを生成し、その訂正されたデータを出力する。
プロセッサによってデータを読出しおよび/または書込みするのに用いられるメモリの少なくとも1つのセクタは、512バイト当たり1ビットよりも大きいエラー率を有してもよい。
メモリはリサイクルされた集積メモリであってもよい。
メモリは従来の許容できる製造標準を超えるエラー率を有してもよい。
好ましくは、メモリはフラッシュメモリである。メモリは、さらに好ましくは、NANDフラッシュメモリである。
メモリは、そのビットが単独でアクセスされないものであってもよい。
本発明の第3構成によれば、書き換え可能メモリに書き込まれるデータおよびこのメモリから読み出されるデータを処理する方法が提供される。この方法は、ハードウェアでコーディング動作を実行し、ハードウェアでエラー検出動作を実行し、ソフトウェアでエラー訂正動作を実行する。
前記コーディング動作は、メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、メモリへの書込み用に第2データセットを出力する。
前記エラー検出動作は、メモリから読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する。
前記エラー訂正動作は、エラーを含む読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して前記エラーを訂正し、訂正されたデータを出力する。
本発明の第4構成によれば、書き換え可能メモリをリサイクルする方法であって、メモリが機能している装置からそのメモリを取り除いて、このメモリを別の装置内に設置する。この別の装置はデータ処理装置を有し、このデータ処理装置は、ハードウェアに実装されたコーディングユニットと、ソフトウェアに実装されたエラー訂正ユニットとを備える。
前記コーディングユニットは、コーディング動作を実行でき、このコーディングユニット動作において、メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、メモリへの書込み用に第2データセットを出力する。前記コーディングユニットは、さらにエラー検出動作を実行でき、このエラー検出動作では、メモリから読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する。
前記エラー訂正ユニットは、エラーを含む読み出されたデータを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して前記エラーを訂正し、これにより訂正されたデータを生成し、その訂正されたデータを出力する。
本発明を添付図面に関連する例を用いて説明する。
本発明の各実施形態は、書き換え可能メモリにおいて使用するためのデータ処理装置を提供する。この装置は特に、多数の破壊されたセクタを含むリサイクルメモリ、または正常装置として販売されるにはエラー率が高すぎる製造メモリにおいて使用するのに適する。このデータ処理装置は、エラー訂正コードに従って、メモリに書き込まれるデータおよび/またはこのメモリから読み出されるデータを処理するように構成されている。有利なことには、このデータ処理装置はコーディングと訂正機能をハードウェアとソフトウェアとに分けて、これにより、読出し時間および書込み時間に大きなオーバーヘッドを付加させることなく、またプロセッサに要求される処理能力を増大させることなく、極めて有効なエラー訂正コード(破壊されたメモリセクタによって生じるデータエラーを処理するのに必要である)を実現できる。この点が、メモリに書き込まれるデータおよびメモリから読み出されるデータ全てをソフトウェアで処理する多くの既存のメモリコントローラとは異なる。
図1に、本発明の一実施形態にかかるデータ処理装置を示す。データ処理装置は全体を101で示され、メモリ102に結合されている。データ処理装置101は、ハードウェアで実現されたコーディングユニット103とソフトウェアで実現されたエラー訂正ユニット104とを備える。エラー訂正ユニット104にはデジタルプロセッサが適する。
コーディングユニット103はメモリ102に書き込まれるデータを受け取るように構成されている。コーディングユニット103は、メモリに書き込まれるデータをコード化し、このコード化データを出力する。コーディングユニット103は、また、コード化データをメモリに書き込むことができる。好ましくは、コーディングユニット103は組織コード(システマティックコード(systematic code))を実現する。このユニット103では、コーディングプロセスがメモリへの書込み対象のデータから、データ自体を変更するのではなく、追加のコード化データ(すなわち、パリティデータ)を生成する。
コーディングユニット103は、メモリ102に書き込まれるコード化データのみを出力してもよく、またはコード化データおよびメモリ102への書込み用に実際のデータの両方を出力してもよい。その後、コード化データおよび実際のデータは異なるメモリ位置に記憶されてもよい。すなわち、実際のデータはそのデータについてのパリティデータの近く記憶される必要はない。
コーディングユニット103はまた、メモリ102から読み出されたデータを受け取るように構成されている。このデータには、オリジナルデータが書き込まれたメモリ位置から読み出された情報データと、その情報データについてのパリティデータ、すなわちオリジナルデータから生成されたコード化データが書き込まれたメモリ位置から読み出されたデータとが含まれる。コーディングユニット103は、メモリ102から読み出されたデータを処理して、そのデータがエラーを含むか否かを検出する。この処理にはパリティデータおよび情報データの両方、またはパリティデータのみを含んでもよい。メモリ102から読み出されたデータ内において1つまたは複数のエラーをコーディングユニット103が検出すると、コーディングユニット103はエラーのあるデータをエラー訂正ユニット104に送る。コーディングユニット103がエラーを検出しない場合、コーディングユニットはその情報データを出力する。代わりに、コーディングユニット103は、メモリに結合されているコントローラのような別の構成要素に信号を送ってもよく、この構成要素によって情報データは安全に出力される。
上述のエラーコーディングおよび検出動作に加えて、コーディングユニット103はまた、エラー訂正動作の間において、エラー訂正ユニット104にハードウェアサポートを提供する。リードソロモン・コードのようなエラー訂正アルゴリズムによって必要とされるデータ処理動作のいくつかは、特にハードウェアでの実現に適している。コーディングユニット103にこの処理の一部を実行する能力を備えることによって、エラー訂正プロセスを加速できる。この追加の処理には、例えばシンドロームの算出および処理を含むことができ、これに関しては以下に詳細に説明される。このような追加の処理は、メモリ102から読み出されたデータがエラーを含むことをコーディングユニット103が判別すると直ぐに、コーディングユニット103によって実行され、この処理から生成される追加データ(例えば、シンドローム)全てが、エラーのあるデータと共にエラー訂正ユニット104に送られる。代わりに、コーディングユニット103がこのような追加の処理をエラー訂正ユニット104の制御の下で実行してもよい。すなわち、エラー訂正ユニット104によって処理されるのに適切なデータが送出される場合、コーディングユニット103は、エラーのあるデータ全てを直ちにエラー訂正ユニット104に送り、追加処理のみを実行してもよい。
コーディングユニット103は、メモリに書き込まれるデータおよび/またはメモリから読み出されるデータを処理するために、様々な専用ハードウェアブロックと協働してもよい。例えば、コーディングユニット103は、上述のコーディングおよびエラー検出動作を実行するのに、同一ハードウェアブロックを使用してもよい。代わりに、コーディングユニットは2つのハードウェアブロック、すなわち、メモリに書き込まれるデータのコーディング用の1つのブロック、およびメモリから読み出されるデータにおけるエラー検出用の1つのブロックを備えてもよい。コーディングユニット103は、任意の追加処理を実行するためにさらに専用ハードウェアを備えてもよい。コーディングユニット103は、様々な専用ハードウェアブロックを備えることにより、エラー訂正ユニット104のソフトウェアによって実行される、様々なエラー訂正アルゴリズムに対してハードウェアサポートを提供してもよい。
コーディングユニット103において追加のデータ処理を実行する代わりとして、任意のエラー訂正処理のために別個のハードウェアユニットをエラー訂正ユニット104に結合してもよい。この任意のエラー訂正処理は、ハードウェアで効率的に実行され、これによりエラー訂正動作を加速できる。
エラー訂正ユニット104は、コーディングユニット103からのデータを受け取り、その情報データ内に含まれるエラーを訂正するように構成されている。エラー訂正ユニット104によって受け取られるデータは、情報データ、パリティデータ、およびコーディングユニット103によって算出された随意の何らかのさらなるデータ(例えばシンドロームデータ)を含んでもよい。
これを実現する(エラー検出はハードウェアで実行されるが、エラー訂正はソフトウェアで実行される)ことによって提供される利点の1つは、ハードウェアのコーディングユニット103が追加の複雑性に注意を払うことなく、プロセッサによって、複雑な追加層をエラー訂正コーディング方式内に導入できることである。例えば、プロセッサは、メモリに書き込まれるデータおよびメモリから読み出されるデータにインターリーブおよびデインターリーブを実行してもよい。インターリーブ/デインターリーブされたデータは、プロセッサによって必要に応じてコーディングユニット103に送られる。この際にコーディングユニット103によって実行されるコーディングおよびエラー検出動作は、追加機能が付加される前のままである。
本発明の実施形態によるデータ処理装置の別の利点は、プロセッサによって用いられるアルゴリズムを変更することによって広範囲のエラー訂正方式を実現するのに、このデータ処理装置が用いられることである。コーディングユニット103によって実行される基本のコーディングおよびエラー検出機能は変更されない。また、エラー検出機能がハードウェアで実行されるため、プロセッサによって実現されるアルゴリズムを変更することに起因して読込み動作に付加されるオーバーヘッドの増加の影響を最小にできる。この理由は、任意の追加オーバーヘッドが全ての読込み動作内に存在するのではなく、エラーが検出される読込み動作に限定されるからである。
本発明の各実施形態によるデータ処理装置の全体動作が、図2Aおよび2Bに示されている。図2Aは書込み動作を示す。この動作では、データ処理装置が、書込みデータをステップS202で受け取り、ステップS204でこのデータを処理し、ステップS206でコード化データを出力する。図2Bは読出し動作を示す。この動作では、メモリから読み出されたデータはステップS208で受け取られ、データがエラーを含むか否かを判別するためにステップS210で処理される。データがエラーを含むと判別されると、ステップS212でそのエラーを訂正するようにデータが処理され、訂正されたデータはステップS214で出力される。メモリから読み出されたデータがステップS210でエラーを含まないと判別されると、メモリから読み出されたデータはステップS216で出力される。上述のとおり、メモリから読み出されたデータは、データ処理装置自体によって出力されてもよく、あるいはメモリに結合されている別の装置によって出力されてもよい。この別の装置には、データ処理装置が信号を出して、メモリから読み出されたデータがこのままの形で出力可能であること指示する。
コード化データを生成し、メモリから読み出されたデータのエラーを検出し、これらのエラーを訂正する上述の各ステップは、エラー訂正コードを用いて実行される。上述のように、既存メモリのなかには、何らかの簡単なエラー訂正を組み込むために、ハミングコードを用いるものもある。しかし、このハミングコードによるエラー訂正レベルは、リサイクルメモリまたは正常装置として販売されるには過大なエラー率を有するメモリ内に存在する多数の破壊されたセクタを処理するのに不十分である。フラッシュメモリは一般に、使用不可能ブロックの最大は2%(すなわち、2048中の最大40ブロック)で販売される。一般に、使用不可能ブロックの割合が2%を超えるメモリは全て除外される。
古いリサイクルされたフラッシュメモリの使用を可能にするために、拡張エラー訂正方式を適用することが2つの理由のために必要である。これら理由は、(i)古いタイプのメモリが内部に簡単なハミングコードエラー訂正さえも含まないこと、および(ii)ハミングコードの能力をすでに超えており(これがそもそもリサイクルされる理由である)、フラッシュメモリはすでに「破壊されている」と考えられること、である。
デジタルデータストリームに対してエラー訂正を実行する方法は多数存在し、これらの全ては計算およびメモリオーバーヘッドを含み、さらにそのうちのいくつかは他に比べてより煩わしい処理である。全ての順方向エラー訂正(FFC)の訂正システムは複雑で高度であり、一般に、開発にかなりの時間と労力を要する。
本発明の各実施形態によるデータ処理装置によって用いられるいくつかのエラー訂正方式は以下に説明される。これは単に例示のためであり、本発明は特定のいずれかのコーディング方式に限定されないことが理解されるべきである。上述のとおり、本発明の各実施形態によるデータ処理装置を用いて、広範囲のエラー訂正方式を実現できる。また、後述するように、プロセッサは、メモリに書き込まれるデータおよび/またはメモリから読み出されるデータに追加レベルのエラー訂正コーディングを適用するように構成されてもよい。
本発明の各実施形態によるデータ処理装置によって用いられる適切なエラー訂正方式は、リードソロモンエラー訂正コードを含む。一般に、これらのコードはデータフレームにパリティバイトを追加することを含む。エラーが存在していることを判別するのが可能であるばかりでなく、いかなるエラーであり、いずれの位置にそのエラーが存在するかを判別するように、パリティバイトが算出される。ある一定の制限内で、1つのフレーム内のいくつかのエラーを訂正することができる。この基本エラー訂正能力は、クロスインターリーブ・リードソロモン・コーディング(CIRC)として知られているクロスインターリービングによって拡張される。一般的なリードソロモン・コードおよびCIRCコードは、ガロアフィールド(Galois field)演算の説明と共に以下で詳細に説明される。このガロアフィールド演算は、直接ハードウェアデコーダを作り出すのに有効に利用できる。
リードソロモン・コードは、ディジタルデータのブロックに冗長パリティビットを追加することを含むエラー訂正コードである(図3に示されるとおり)。各リードソロモン・コードはsビットのシンボルのRS(n,k)として定義される。これは、それぞれsビットのkデータシンボルを処理して、冗長パリティビットを得ることを意味し、このパリティビットがデータシンボルに加えられると、nシンボル符号語を生成する。リードソロモン・デコーダは、1つの符号語において最大2t個のエラーを検出でき、1つの符号語において最大t個のエラーを訂正できる。ここで、2t=n−kである(すなわち、パリティビットの数である)。エラーを有するシンボルの位置が分かる場合、このエラーを有するシンボルは消失と呼ばれる。リードソロモン・デコーダは、1つの符号語において最大2t個の消失を訂正できる。
リードソロモン符号語は、生成多項式として知られる特殊多項式によって生成される。全ての有効な符号語は生成多項式によって割り切れる。生成多項式の一般形は以下の式で与えられる。
Figure 2009501380
符号語は以下の式で構成される。
Figure 2009501380
ここでg(x)は生成多項式であり、i(x)は情報ブロックであり、c(x)は有効な符号語であり、αは原始元として知られている。
1つの例として、6個のパリティビットを生成するリードソロモン・コードに対して、式(1)は以下のように書くことができる。
Figure 2009501380
組織リードソロモン符号語における2t個のパリティシンボルは以下の式で与えられる。
Figure 2009501380
リードソロモン・エンコーダのアーキテクチャの1つの例が、図4に示されている。この図に示された各レジスタは、1つのシンボルを保持し、算術演算子が完全シンボル(complete symbol)に加算または乗算を実行する。
本発明の各実施形態によるデータ処理装置では、メモリ102に書き込まれる各情報ブロックに対するパリティビットの算出は、コーディングユニット103内の専用ハードウェアによって実行される。ソフトウェア実装を用いずにハードウェア実装においてパリティビットを算出することによって、パリティシンボルはより高速に算出される。これにより、各書込み動作に付加されるオーバーヘッドを低減することができる。
データがメモリ102から読み出される際に、パリティシンボルの書込みと同一の算出がデータコーディングユニット103内のこの専用ハードウェアによって実行されてもよい。例えば、コーディングユニット103はメモリ102から読み出された符号語を受け取り、この符号語を情報データとパリティデータとに分離してもよい。メモリから読み出された情報データに生成多項式で書込みと同一の乗算を実行することによって、パリティシンボルの新しいセットを生成できる。次に、この新しいパリティシンボルをメモリ102から読み出されたパリティシンボルと比較して、符号語がエラーを含むか否かを判別できる。新しく算出されたパリティシンボルがメモリから読み出されたパリティシンボルに一致しない場合に、メモリから読み出された符号語におけるエラーが検出される。これは、メモリ102から読み出されたパリティシンボルから新しく生成されたパリティシンボルを減算することによって直接得られてもよい。減算の結果がゼロでない場合、メモリから読み出された符号語はエラーを含むと判別される。
上述のとおり、パリティシンボルと、特定の符号語を含むデータシンボルとは、メモリ内において隣接データとして格納される必要はない。したがって、特定の情報ブロックについてのパリティデータが記憶されているメモリ102内の位置は情報ブロックの位置と共に記録され、これにより、その情報ブロックがメモリ102から読み出されるとき、その情報についてのパリティデータもまた読み出される。このようにして、完全符号語(complete codeword)がエラー検出のためにコーディングユニット103に渡される。
メモリから読み出されたデータについてのコーディングユニット103によって実行される処理が、符号語内にエラーが存在することを示すと、この符号語はすぐにエラー訂正ユニット104に渡され、ソフトウェアで処理される。符号語内の任意のエラーを訂正するタスクは、エラーを検出するタスクに比べて煩わしことより、このタスクはエラー訂正ユニット104によってソフトウェアで有利に実行される。いくつかの実装においては、コーディングユニット103はエラーが存在する符号語の何らかの追加処理を実行することによって、ソフトウェア処理を加速してもよい。例えば、有利には、メモリ102から読み出された符号語から「シンドローム」を生成してもよい。シンドロームは以下にさらに詳細に説明される。
「シンドローム」は、生成多項式の根をメモリ102から読み出された符号語に代入することによって生成される。各代入(すなわち、生成多項式の各根に対して)によって生成されたシンボルを加算することにより、シンドロームを生成する。訂正された符号語に対するシンドロームのそれぞれはゼロである。シンドロームがゼロでない場合、これは符号語がエラーを含むことを意味する。生成多項式の2t個の根が存在するので、1つの符号語に対して2t個のシンドロームが存在する。各シンドロームは各符号語におけるエラーにのみ依存する。これらシンドロームは、符号語内のエラーの検出およびエラー位置の判別の両方に用いられることができる。
シンドロームはエラーの検出および訂正の両方に用いられることができるため、本発明のいくつかの実施形態においては、有利には、コーディングユニット103が、パリティデータを算出する代わりに、メモリ102から読み出された符号語からシンドロームを算出するように構成されてもよい。次に、コーディングユニット103は、そのデータから2t個のシンドロームを算出し、これらシンドロームのうちにゼロでないものがあるか否かを判別することによって、メモリ102から読み出された符号語がエラーを含むことを検出できる。エラーが検出されると、エラーが存在する符号語およびその符号語から算出されたシンドロームは、コーディングユニット103によってエラー訂正ユニット104に渡される。これは本発明の特に有効な実施形態である。その理由は、エラーを検出するためにコーディングユニット103によって算出されるシンドロームデータが、任意の検出エラーを訂正するためにエラー訂正ユニット103によって用いられるからである。本発明のこのような実施形態によるコーディングユニットは、別々のハードウェアブロックに設けられてもよい。すなわち、1つのハードウェアブロックは、コーディング動作の間にパリティデータを算出するものであり、別の1つのハードウェアブロックは、エラー検出動作の間にシンドロームを算出するものである。図5には、シンドロームデータを算出するのに適した一般的なアーキテクチャが示されている。一般に、コーディングユニット103には、2t個のこれらアーキテクチャが設けられている。1つのアーキテクチャが、符号語の1つのシンドロームを算出するものである。これにより、特定の符号語の各シンドロームを並列に算出できる。
上記の式(3)からわかるように、生成多項式の各根が原始元αの累乗の違いを有するので、シンドロームもそれぞれも原始元αの累乗の違いを有する(これはまた、以下の式(7)からも明らかである)。したがって、エラーの位置は、シンドロームを除算し、対数を取ることによって判別できる。このような計算は、ガロアフィールド演算を利用できる、簡略化可能なハードウェア実装に好適である。
ガロアフィールド演算では、バイトの各ビットは原始元の累乗のモジュロ2の係数と考えられる。上述のシンドロームを処理するとき、この原始元は生成多項式の原始元αである。
データのこの処理の実際の利点は、データを加算、減算、乗算、除算でき、その結果は常にフィールド内、すなわちバイト幅内に収まることである。これは、データバイトの演算組合せであるエラー検出コードまたはエラー訂正コードが実際のデータに関係なく常にバイト幅である、ということを意味する。
ガロアフィールドの要素は、疑似乱数発生器と類似のフィードバックを有するシフトレジスタによって生成されることができる。CDにおいては、シフトレジスタはLSBからMSBにシフトし、実行されると、値1D(16進)はXOR(排他的論理和)演算されてバイトに格納される。したがってガロアフィールドの第1要素は、16進数で以下のようになる。
1,2,4,8,10,20,40,80,1D,3A,74、E8,CD…
255回シフト後にこのサイクルが繰り返される。数学的には、各シフトはαの乗算と考えられるため、フィールドの各要素はαの累乗と考えることができる。ゼロはフィールドの要素ではないことに注意されるべきである。これは2つの理由から当然のことである。第1に、シフトレジスタ内のゼロは、シフト回数に関係なく常にゼロとなるからである。第2に、αの累乗はゼロでありえないからである。ゼロの場合には、特殊事例として扱われる必要がある。
フィールド内の2つの要素の加算および減算は同一である。これらの結果は単に、2バイトのXOR(排他的論理和)である。これは、各ビットがモジュロ2係数であるからである。
乗算および除算は多少複雑である。各要素はαの累乗と考えることができるため、任意の要素の対数を取ることができる。対数は単に、上述のシーケンス内の位置、すなわち、シフトの数つまりαの指数である。したがって、1の対数は0であり、3Aの対数は9である。2バイトを乗算または除算するために、最初に各要素の対数を取り、次にその対数を加算または減算し、次にαをこの指数で累乗して結果を得る。
フィールド内には255個の要素のみしか存在しないので、乗算および除算はさらに複雑になる。これは、対数を加算または減算するとき、モジュロ255をとらなければならないことを意味する。
上述のリードソロモン・コードのエラー訂正能力は、インターリービングを使用することによってさらに向上できる。クロスインターリーブ・リードソロモン・コード(CIRC)におけるこの結果は、極めて強力なエラー訂正アルゴリズムである。
リードソロモン・コードの基本エラー訂正能力は、クロスインターリービングによって拡張される。これは、データを2次元配列に配置し、行および列に対してそれぞれのパリティバイトを計算することを実質的に意味する。これは、メモリの欠陥セクタから一次元における多数の隣接バイトに影響を与えると予測されるバーストエラーが、他の次元においてはフレーム当たり1バイトまたは2バイトのみに影響を与えることを意味する。このような配列は図6に示されている。
「垂直」すなわち列の方向のフレームはC1で表され、32バイトを含み、このうちの4バイトはパリティである。「水平」すなわち行の方向のフレームはC2で表され、28バイトを含み、このうちの4バイトはパリティである。C1およびC2を処理した後、24データバイトが残る。これらは6個のステレオサンプルと等価である。
C1およびC2の両方に対するパリティバイトはほぼ同一の方法で算出される。C1のパリティは、以下の式が成立するようにして算出される。
Figure 2009501380
シンボルd0〜d31はフレーム内のバイトである。C2は28バイトのみ存在するので、わずかに異なり、そのためαの指数は小さい。
データはシンドローム生成ロジックを用いて容易にチェックされる。このロジックは4個のアキュムレータを含む。バイトにシンドロームロジックが書き込まれる場合、各アキュムレータの以前の値には、それぞれ、1、α、αおよびαが乗算され、その後、新しいバイトに加算される。これにより、フレームのサイズに関係なく、上記計算は効率的に実行される。
データが正しい場合、アキュムレータにおけるシンドロームとして知られている値は全てゼロになる。シンドロームがゼロでない場合、シンドロームを用いて、3つの方法の内の1つ、すなわち単一エラー訂正、2重エラー訂正および4−消失訂正のいずれかでエラーを訂正できる。
メモリ102から読み出されたデータからパリティデータの新しいセットを算出して、そのデータがエラーを含むか否かを決定するよりもむしろ、コーディングユニット103は、受け取った符号語のシンドロームを算出するように構成されてもよい。シンドロームがゼロでなければ、エラーが検出される。
<単一エラー訂正>
1つのみのエラー、例えばd5のみエラーが存在する場合、4つのシンドロームバイトは以下で与えられる。
Figure 2009501380
ここで、eはd5の訂正値と受け取った値との差である。
エラーがs0で与えられるのは明らかである。エラーの位置は、s1をs0で割算することによって、かつ、対数を取ってαの累乗を算出することによって、判別できる。複数のエラーを単一エラーに見せかけることは常に可能である。s2およびs3を用いて再度位置を算出することによって、信頼性を高めることができる。これらの位置は一致しており、0〜31の範囲である。このとき、訂正失敗の確率はわずかに524,288分の1である。
<2重エラー訂正>
シンドロームバイト内には、2つのエラーの値および位置を特定するのに十分な情報が存在する。このアルゴリズムは比較的複雑である。Peterson-Berlekampアルゴリズムを用いて位置多項式と呼ばれる式を見出すことができる。位置多項式の値が求められると、多項式の根を見出すことができる。これはChien検索法を用いて達成してもよい。位置多項式はまた、ユークリッド・アルゴリズムを用いて見出すこともできる。このアルゴリズムは通常、Peterson-Berlekampアルゴリズムよりも効率は低いが、ハードウェアでの解決法にはより適している。
2重エラーの訂正失敗の確率は32分の1である。しかし、C1における2回のエラー訂正によって提供される低い信頼性は、C2において提供される2重チェックによって向上する。
1つの符号語内に2つのエラーが存在する場合、最初の2つのシンドロームは以下の式になる。
Figure 2009501380
ここで、L0およびL1は既知のエラー位置である。この式はe0およびe1について以下のように解くことができる。
Figure 2009501380
減算はこれらの式を解く場合は加算と等価であることに注意すべきである。
<4−消失訂正>
上述のとおり、消失は、エラーの位置が既知であるがエラーの値が未知である場合のフレーム内のエラーに付けられている名称である。これが発生するのは、データの列がC1ステージにおいて不具合のフラグを立てるときであって、その後、そのデータがC2ステージで処理されるとき、単一バイトのみが不具合とマークされる。フラグを立てられた列はエラー位置に移る。C2は最大4つの消失を訂正できるので、4つの隣接する列にエラーがあってもよい。別々の4つの列から連続行データが生じるように、データをずらす(スキューする)ことによって、この能力はさらに4倍に向上する。このようにして、16の連続するエラーのあるフレームを訂正できる。
4つのエラーを有するフレームに対するシンドロームは以下の式で与えられる。
Figure 2009501380
0、L、L2およびL3の値はC1からのフラグによって与えられる。
したがって、4つの未知数のe0、e1、e2およびe3を有する4つの一次方程式が存在し、多数の方法で解くことができる。1つの方法は4つの式をマトリクスと考える方法である。
Figure 2009501380
行を乗除算し、1つの行を別の行から減算することによって、マトリクスは恒等行列に変換できる。
Figure 2009501380
このとき、エラーは、変更されたシンドロームバイトに等しくなる。コードは速度向上のために特定のショートカットを用いる。係数がその最終値に達すると、係数は必要とされなくなるので、その値を計算して記憶する必要はなくなる。
4つよりも少ないエラーしか存在しない場合、フレーム外のダミー位置を生成して、4つのエラーにまでする。1、2および3の消失に対応する専用コードを設けることで、個々のフレームを高速化してもよい。しかし、システムは連続する4つの消失を扱う必要があるため、一般に、システムにはこのような専用コードを設ける利点はない。訂正されたフレームについてシンドロームの最終チェックが実行される。
エラー訂正の第2ステージのみが用いられる場合、デインターリーブするバッファを伴うこのステージは、エラーのあるデータの単一ビットさえもホストCPUによって発見されることなく、エラー内の最大4096個の連続ビットを訂正できる。これは現在のエラー訂正に比べて4096倍の性能向上であり、略式検査で予測される大きなオーバーヘッドもない。
メモリ供給者によって用いられる典型的なメモリエラー訂正アルゴリズムにおいては、冗長度は512バイトごとに16バイトである。したがって、フラッシュメモリに記憶されるデータの3.1%がエラー訂正オーバーヘッドであり、CIRCに基づくシステムでは、この冗長度レベルは12.5%になる(C2のみを用いる場合)。しかし、上述の方法の場合、エラー訂正能力が4096:1となる。CIRCエラー訂正はまた、現在使用されていないハミングコードシステムから利用可能な追加空間を再利用して、データ冗長度をわずか9.4%にまで下げることができる。
エラー訂正能力をさらに向上させる方法として、複数セクタの訂正を可能とするために、データをさらにインターリーブすることができる。例えば、4つのセクタにわたってインターリーブされたデータを用いてメモリ装置にデータが書き込まれた場合、エラー訂正システムは、完全に破壊された4つの連続セクタからデータを完全に回復できる。この追加のインターリーブは、データ処理に必要とされる追加メモリのコストを伴うが、CPU内に十分なワーキングメモリがあれば、訂正可能データの最大長さを任意の長さにまで拡張できることは明らかである。
図7は、典型的なNANDフラッシュメモリの4つの512バイトセクタにわたって動作するときの、さらなるインターリービング構造を示す。図7では、bnはビット数であり、wnはワード数である。この場合においては、ワードは8ビット長さである。
完全なエンコードおよびデコーダのための処理オーバーヘッドは、データ内で見つかるエラーのレベルに応じて典型的な128kbpsのMP3ファイルについては1〜4MIPSよりも小さくするべきであり、全体メモリ使用量は約1.5Kbyteとする。
本発明の各実施形態によるデータ処理装置のプロセッサは、CDデータデコーダ内に存在する既存の命令を使用してもよい。これは、データ訂正プロセスを加速するのに役立つ。
エラー訂正の目的:リサイクルされたフラッシュメモリを再使用可能にすることがこのシステムが提供する唯一の利点でなく、フラッシュメモリ装置の搭載シリコンにコストがかかるという問題の解決を必要とせずに、フラッシュ製品の寿命も大幅に長くすることである。
本発明の各実施形態によるデータ処理装置は、リサイクルメモリ、または正常に販売されるにはエラー率が高すぎる製造メモリであって、正常に販売されない場合は製品から除去される製造メモリなどの、多数の破壊されたセクタを含むメモリと共に使用されるのが、特に有利である。しかし、このデータ処理装置は、このような破壊されたメモリに結合された実装に限定されない。このデータ処理装置は、ソフトウェアのみでこのようなエラー訂正コードを実現する場合に一般に必然的に伴う読出しおよび書込みオーバーヘッドを増加させずに、任意の実装において有利に利用できる。
本発明の各実施形態によるデータ処理装置は特にフラッシュメモリに関して上述した。しかし、この技術はDRAMまたは任意の別の種類の固体メモリ装置にも同様に適用できる。
有利には、本発明によるデータ処理装置は、CDプレーヤ、デジタルオーディオプレーヤ、デジタルカメラ、携帯電話などの広範囲の消費者電気製品に組み込まれてもよい。
本件出願人は、本明細書において個々の形態をそれぞれ単独で開示している。これら形態の2つ以上の組み合わせは、このような形態または組み合わせが本明細書全体の記載に基づき、当業者の一般的知識に照らして実施が可能であれば、ここに開示の諸問題を解決するかどうかにかかわらず、実施可能であるが、これらが請求項の範囲を限定するものではない。本件出願人は、本発明の態様が、これら各形態のいずれかあるいはこれら形態の任意の組み合わせから構成できることを指摘しておく。以上の説明に照らし、当業者には、本発明の範囲内で各種の変更が可能であることは明らかであろう。
本発明の一実施形態によるデータ処理装置を示す図である。 本発明の一実施形態によるデータ処理装置の動作のうち、書込み動作を示すフローチャートである。 本発明の一実施形態によるデータ処理装置の動作のうち、読出し動作を示すフローチャートである。 データおよびパリティビットを有する、リードソロモン・コードによって生成された符号語を示す図である。 組織エンコーダの全体アーキテクチャを示す図である。 シンドローム計算器の全体アーキテクチャを示す図である。 クロスインターリーブ・リードソロモン・コードに従って構成されるデータビットおよびパリティビットを示す図である。 複数セクタを訂正可能にするインターリーブ・データを示す図である。
符号の説明
102 メモリ
103 コーディングユニット
104 エラー訂正ユニット

Claims (31)

  1. 書き換え可能メモリに書き込まれるデータおよびこのメモリから読み出されるデータにエラー訂正アルゴリズムを適用するデータ処理装置であって、
    ハードウェアに実装されたコーディングユニットであって、コーディング動作を実行でき、このコーディング動作において、前記メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、前記メモリへの書込み用にこの第2データセットを出力し、さらにエラー検出動作を実行でき、このエラー検出動作では、前記メモリから読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する、コーディングユニットと、
    ソフトウェアに実装されたエラー訂正ユニットであって、エラーを含む読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理してエラーを訂正し、これにより訂正されたデータを生成し、この訂正されたデータを出力する、エラー訂正ユニットとを備えたデータ処理装置。
  2. 請求項1において、前記コーディングユニットは、メモリから読み出されたデータがエラーを含まないと判別すると、メモリから読み出されたデータを出力する、データ処理装置。
  3. 請求項1または2において、前記コーディングユニットは、前記コーディング動作中に第1データセットに実行する処理と同一の処理を、前記エラー検出動作中にメモリから読み出されたデータのエラー検出処理に実行する、データ処理装置。
  4. 請求項3において、前記コーディングユニットは、エラー検出動作中に、メモリから読み出されたデータをコーディング動作に合わせて第1データセットとみなし、このデータを前記エラー訂正アルゴリズムに従って処理して第2データセットを生成する、データ処理装置。
  5. 請求項1から4のいずれか一項において、前記コーディングユニットは、第1データセットが既に書き込まれた前記メモリ内の第1位置から読み出される情報データと、第2データセットが既に書き込まれた前記メモリ内の第2位置から読み出される情報データについてのパリティデータとを受け取るように構成されており、前記第2データセットはコーディング動作中に前記第1データセットから既に生成されたものである、データ処理装置。
  6. 請求項4に従属する請求項5において、前記コーディングユニットは、前記エラー訂正アルゴリズムに従って前記情報データを処理して第2データセットを生成し、この第2データセットを前記パリティデータと比較して、前記第2データセットが前記パリティデータと一致しない場合にその情報データがエラーを含むと判別することによって、メモリから読み出されたデータがエラーを含むか否かを判別する、データ処理装置。
  7. 請求項1から6のいずれか一項において、前記コーディングユニットは、第1データセットを受け取り、このデータに生成多項式を乗算し、この乗算の結果を第2データセットとして出力する符号語生成器を備えた、データ処理装置。
  8. 請求項5から7のいずれか一項において、前記コーディングユニットは、前記メモリから読み出されたデータを受け取り、この読み出されたデータに含まれる前記情報データに生成多項式を乗算し、この乗算の結果を、読み出されたデータに含まれる前記パリティデータと比較する符号語生成器を備えた、データ処理装置。
  9. 請求項5から8のいずれか一項において、前記コーディングユニットは、前記メモリから読み出された前記データを受け取り、この読み出されたデータに含まれる前記情報データとパリティデータとを連結し、前記生成多項式の根を前記連結されたデータに代入し、その結果の値を加算するシンドローム生成器を備えた、データ処理装置。
  10. 請求項9において、前記コーディングユニットは、前記結果の値の総和がゼロでない場合、前記情報データがエラーを含むと判別する、データ処理装置。
  11. 請求項10において、前記シンドローム生成器は、前記生成多項式の複数の根を前記連結されたデータにそれぞれ代入し、各代入から得た値を加算するように構成されており、加算の結果は、情報データ内のエラーの場所を表すものである、データ処理装置。
  12. 請求項1から11のいずれか一項において、前記コーディングユニットは、メモリから読み出された前記データがエラーを含むと判別すると、その情報データを前記エラー訂正ユニットに出力する、データ処理装置。
  13. 請求項1から12のいずれか一項において、前記エラー訂正ユニットは、前記メモリに書き込まれるデータをインターリーブし、前記メモリから読み出されたデータをデインターリーブする、データ処理装置。
  14. 請求項1から13のいずれか一項において、前記コーディングユニットは、メモリから読み出される256バイトごとに2つ以上のビットエラーを検出できる、データ処理装置。
  15. 請求項1から14のいずれか一項において、前記エラー訂正ユニットは、メモリから読み出される512バイトごとに2つ以上のビットエラーを訂正できる、データ処理装置。
  16. 請求項の1から15いずれか一項において、前記エラー訂正アルゴリズムはリードソロモン・コードである、データ処理装置。
  17. 請求項1から16のいずれか一項において、前記エラー訂正アルゴリズムはクロスインターリーブ・リードソロモン・コードである、データ処理装置。
  18. 請求項1から17のいずれか一項において、前記エラー訂正ユニットはデジタルプロセッサである、データ処理装置。
  19. 書き換え可能メモリと、
    ハードウェアに実装されたコーディングユニットであって、コーディング動作を実行でき、このコーディング動作において、前記メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、前記メモリへの書込み用にこの第2データセットを出力し、さらにエラー検出動作を実行でき、このエラー検出動作では、前記メモリから読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する、コーディングユニットと、
    ソフトウェアに実装されたエラー訂正ユニットであって、エラーを含む読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理して前記エラーを訂正し、これにより訂正されたデータを生成し、この訂正されたデータを出力する、エラー訂正ユニットとを備えたデータ記憶装置。
  20. 請求項19において、前記プロセッサによるデータ読出しとデータ書込みの両方または一方に用いられる前記メモリの少なくとも1つのセクタは、512バイト当たり1ビットよりも大きいエラー率を有する、データ記憶装置。
  21. 請求項19または20において、前記メモリはリサイクルされた集積メモリである、データ記憶装置。
  22. 請求項19または20において、前記メモリは従来の許容できる製造標準を超えるエラー率を有する、データ記憶装置。
  23. 請求項19から22のいずれか一項において、前記メモリはフラッシュメモリである、データ記憶装置。
  24. 請求項19から23のいずれか一項において、前記メモリはNANDフラッシュメモリである、データ記憶装置。
  25. 請求項19から24のいずれか一項において、前記メモリは、そのビットが単独でアクセスされないものである、データ記憶装置。
  26. 書き換え可能メモリに書き込まれるデータおよびこのメモリから読み出されるデータを処理する方法であって、
    ハードウェアでコーディング動作を実行する工程であって、このコーディング動作は、前記メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、前記メモリへの書込み用に第2データセットを出力する工程と、
    ハードウェアでエラー検出動作を実行する工程であって、このエラー検出動作は、前記メモリから読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する工程と、
    ソフトウェアでエラー訂正動作を実行する工程であって、このエラー訂正動作は、エラーを含む読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理してエラーを訂正し、この訂正されたデータを出力する工程とを備えた、データ処理方法。
  27. メモリが機能している装置からこのメモリを取り除いて、このメモリを別の装置内に設置する工程を備えた、書き換え可能メモリをリサイクルする方法であって、
    前記別の装置はデータ処理装置を有し、このデータ処理装置は、
    ハードウェアに実装されたコーディングユニットであって、コーディング動作を実行でき、このコーディング動作において、前記メモリへの書込み対象である第1データセットを受け取り、エラー訂正アルゴリズムに従ってそのデータを処理して第2データセットを生成し、前記メモリへの書込み用にこの第2データセットを出力し、さらにエラー検出動作を実行でき、このエラー検出動作では、前記メモリから読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理して読み出されたデータがエラーを含むか否かを判別する、コーディングユニットと、
    ソフトウェアに実装されたエラー訂正ユニットであって、エラーを含む読み出されたデータを受け取り、前記エラー訂正アルゴリズムに従ってそのデータを処理してエラーを訂正し、これにより訂正されたデータを生成し、この訂正されたデータを出力する、エラー訂正ユニットとを備えた、メモリのリサイクル方法。
  28. 添付図面に関して本明細書において記載された内容に実質的に一致する、データ処理装置。
  29. 添付図面に関して本明細書において記載された内容に実質的に一致する、データ記憶装置。
  30. 添付図面に関して本明細書において記載された内容に実質的に一致する、データを処理する方法。
  31. 添付図面に関して本明細書において記載された内容に実質的に一致する、書き換え可能メモリをリサイクルする方法。
JP2008520940A 2005-07-15 2006-07-06 フラッシュエラー訂正 Active JP4988731B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0514610A GB2428496A (en) 2005-07-15 2005-07-15 Error correction for flash memory
GB0514610.5 2005-07-15
PCT/GB2006/002507 WO2007010189A2 (en) 2005-07-15 2006-07-06 Flash memory error correction

Publications (2)

Publication Number Publication Date
JP2009501380A true JP2009501380A (ja) 2009-01-15
JP4988731B2 JP4988731B2 (ja) 2012-08-01

Family

ID=34897323

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008520940A Active JP4988731B2 (ja) 2005-07-15 2006-07-06 フラッシュエラー訂正

Country Status (8)

Country Link
US (1) US8140939B2 (ja)
EP (1) EP1907933B1 (ja)
JP (1) JP4988731B2 (ja)
KR (1) KR100989532B1 (ja)
CN (1) CN101258471A (ja)
DE (1) DE602006009273D1 (ja)
GB (1) GB2428496A (ja)
WO (1) WO2007010189A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092459A (ja) * 2008-07-17 2010-04-22 Marvell World Trade Ltd 固体メモリデバイスにおけるデータ復帰
JP2010097600A (ja) * 2008-09-22 2010-04-30 Panasonic Corp 半導体記録装置
KR20110033659A (ko) * 2009-09-25 2011-03-31 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8713410B2 (en) 2011-01-26 2014-04-29 Kabushiki Kaisha Toshiba Data storage apparatus, memory control apparatus and method for controlling flash memories
US9201725B2 (en) 2012-11-01 2015-12-01 Samsung Electronics Co., Ltd. Memory module, memory system having the same, and methods of reading therefrom and writing thereto

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101504337B1 (ko) * 2008-06-26 2015-03-25 삼성전자주식회사 메모리 시스템 및 그 구동방법
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7979666B2 (en) * 2006-12-08 2011-07-12 William Marsh Rice University System and method for context-independent codes for off-chip interconnects
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US20090070655A1 (en) * 2007-09-11 2009-03-12 Silicon Motion, Inc. Method for Generating an ECC Code for a Memory Device
KR101403314B1 (ko) 2008-05-23 2014-06-05 삼성전자주식회사 메모리 장치 및 데이터 비트 저장 방법
JP5422974B2 (ja) * 2008-11-18 2014-02-19 富士通株式会社 誤り判定回路及び共有メモリシステム
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20110040924A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US8862973B2 (en) * 2009-12-09 2014-10-14 Intel Corporation Method and system for error management in a memory device
US11869584B2 (en) 2010-04-19 2024-01-09 Silicon Motion, Inc. Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
TW201508759A (zh) 2010-04-19 2015-03-01 Silicon Motion Inc 用來進行記憶體存取管理之方法以及記憶裝置及其控制器
US8572457B2 (en) 2010-05-28 2013-10-29 Seagate Technology Llc Outer code protection for solid state memory devices
US8769374B2 (en) * 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
TWI459396B (zh) * 2010-12-30 2014-11-01 Phison Electronics Corp 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置
GB201114831D0 (en) * 2011-08-26 2011-10-12 Univ Oxford Brookes Circuit with error correction
FR2992504A1 (fr) * 2012-06-26 2013-12-27 Commissariat Energie Atomique Dispositif et procede pour la correction d'erreurs dans un mot de code
CN104035833A (zh) * 2013-03-07 2014-09-10 联发科技股份有限公司 校验机器可读代码完整性的方法及系统
EP2863566B1 (en) 2013-10-18 2020-09-02 Université de Nantes Method and apparatus for reconstructing a data block
TWI541819B (zh) * 2013-12-30 2016-07-11 慧榮科技股份有限公司 用來進行錯誤更正之方法、記憶裝置、與控制器
US9720607B2 (en) * 2014-09-25 2017-08-01 Dropbox, Inc. Append-only storage system supporting open and closed extents
US9690823B2 (en) 2014-09-25 2017-06-27 Dropbox, Inc. Synchronizing copies of an extent in an append-only storage system
US9772783B2 (en) 2014-09-25 2017-09-26 Dropbox, Inc. Constructing an index to facilitate accessing a closed extent in an append-only storage system
CN105653391B (zh) * 2014-11-13 2018-11-02 群联电子股份有限公司 数据存取方法、存储器控制电路单元及存储器储存装置
CN104932951B (zh) * 2015-07-12 2017-09-05 符方晓 一种nand闪存出现ecc无法纠错时的数据恢复方法
US10049007B2 (en) * 2015-10-28 2018-08-14 Via Technologies, Inc. Non-volatile memory device and read method thereof
CN105607974A (zh) * 2015-12-18 2016-05-25 西安电子科技大学 高可靠性多核处理系统
CN106601305A (zh) * 2016-11-18 2017-04-26 华中科技大学 一种使用检错码和纠错码相结合的固态盘纠错方法
CN107239358A (zh) * 2017-06-01 2017-10-10 捷开通讯(深圳)有限公司 安卓系统的启动方法、移动终端及具有存储功能的装置
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US11256778B2 (en) 2019-02-14 2022-02-22 Micron Technology, Inc. Methods and apparatus for checking the results of characterized memory searches
US11327551B2 (en) * 2019-02-14 2022-05-10 Micron Technology, Inc. Methods and apparatus for characterizing memory devices
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US10922012B1 (en) 2019-09-03 2021-02-16 Dropbox, Inc. Fair data scrubbing in a data storage system
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
CN111966524B (zh) * 2020-08-24 2021-07-13 深圳三地一芯电子有限责任公司 一种Flash数据写入方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS647816A (en) * 1987-06-30 1989-01-11 Matsushita Electric Ind Co Ltd Galois field arithmetic unit
JPH07146825A (ja) * 1993-11-22 1995-06-06 Okuma Mach Works Ltd メモリシステム
JPH08139615A (ja) * 1994-11-10 1996-05-31 Kenwood Corp エンコード装置
JPH10207786A (ja) * 1997-01-22 1998-08-07 Kanebo Ltd メモリシステム
JPH11272568A (ja) * 1998-01-07 1999-10-08 Hitachi Ltd 記憶再生装置、誤り訂正方法及びこれらを用いた携帯情報端末ならびにディジタルカメラ
JP2004055098A (ja) * 2002-07-24 2004-02-19 Renesas Technology Corp 不揮発性メモリの記憶システム
JP2004164634A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2606862B2 (ja) * 1987-12-28 1997-05-07 株式会社東芝 単−エラー検出・訂正方式
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5778009A (en) * 1995-06-14 1998-07-07 Quantum Corporation Dedicated ALU architecture for 10-bit Reed-Solomon error correction module
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US6360346B1 (en) * 1997-08-27 2002-03-19 Sony Corporation Storage unit, method of checking storage unit, reading and writing method
CN1256005A (zh) * 1998-01-21 2000-06-07 索尼株式会社 编码方法和存储装置
JP3975245B2 (ja) * 1999-12-16 2007-09-12 株式会社ルネサステクノロジ 記録再生装置および半導体メモリ
JP4072424B2 (ja) * 2002-12-02 2008-04-09 エルピーダメモリ株式会社 メモリシステム及びその制御方法
US7231585B2 (en) * 2002-12-11 2007-06-12 Nvidia Corporation Error correction for flash memory
JP2004234545A (ja) * 2003-01-31 2004-08-19 Toshiba Corp 制御回路及びメモリコントローラ
US7426676B2 (en) * 2004-01-14 2008-09-16 Broadcom Corporation Data retrieval from a storage device using a combined error correction and detection approach
US7389465B2 (en) * 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
JP4595342B2 (ja) * 2004-02-19 2010-12-08 日本電気株式会社 記憶装置のデータ書き込み、読み出し方法およびデータ記憶システム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS647816A (en) * 1987-06-30 1989-01-11 Matsushita Electric Ind Co Ltd Galois field arithmetic unit
JPH07146825A (ja) * 1993-11-22 1995-06-06 Okuma Mach Works Ltd メモリシステム
JPH08139615A (ja) * 1994-11-10 1996-05-31 Kenwood Corp エンコード装置
JPH10207786A (ja) * 1997-01-22 1998-08-07 Kanebo Ltd メモリシステム
JPH11272568A (ja) * 1998-01-07 1999-10-08 Hitachi Ltd 記憶再生装置、誤り訂正方法及びこれらを用いた携帯情報端末ならびにディジタルカメラ
JP2004055098A (ja) * 2002-07-24 2004-02-19 Renesas Technology Corp 不揮発性メモリの記憶システム
JP2004164634A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092459A (ja) * 2008-07-17 2010-04-22 Marvell World Trade Ltd 固体メモリデバイスにおけるデータ復帰
JP2010097600A (ja) * 2008-09-22 2010-04-30 Panasonic Corp 半導体記録装置
KR20110033659A (ko) * 2009-09-25 2011-03-31 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
KR101616100B1 (ko) 2009-09-25 2016-04-28 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8713410B2 (en) 2011-01-26 2014-04-29 Kabushiki Kaisha Toshiba Data storage apparatus, memory control apparatus and method for controlling flash memories
US9201725B2 (en) 2012-11-01 2015-12-01 Samsung Electronics Co., Ltd. Memory module, memory system having the same, and methods of reading therefrom and writing thereto
US9483348B2 (en) 2012-11-01 2016-11-01 Samsung Electronics Co., Ltd. Memory module, memory system having the same, and methods of reading therefrom and writing thereto

Also Published As

Publication number Publication date
KR100989532B1 (ko) 2010-10-25
EP1907933B1 (en) 2009-09-16
JP4988731B2 (ja) 2012-08-01
US8140939B2 (en) 2012-03-20
DE602006009273D1 (de) 2009-10-29
WO2007010189A3 (en) 2007-07-12
US20080235560A1 (en) 2008-09-25
CN101258471A (zh) 2008-09-03
EP1907933A2 (en) 2008-04-09
WO2007010189A2 (en) 2007-01-25
GB0514610D0 (en) 2005-08-24
GB2428496A (en) 2007-01-31
KR20080045676A (ko) 2008-05-23

Similar Documents

Publication Publication Date Title
JP4988731B2 (ja) フラッシュエラー訂正
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
KR100573356B1 (ko) 코드워드데이터를저장하기위한데이터버퍼와에러신드롬을저장하기위한신드롬버퍼를사용하는ecc시스템
US9088300B1 (en) Cyclic redundancy check for out-of-order codewords
KR101588605B1 (ko) 레이트 호환성 펑처링된 코드를 지원하는 메모리 컨트롤러
US9075745B1 (en) System and method for adding a drive to a storage system having multiple drives
US10635528B2 (en) Memory controller and method of controlling memory controller
JP2008165808A (ja) 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US20080320369A1 (en) Data retrieval from a storage device using a combined error correction and detection approach
JP2008300020A (ja) 再生装置
US20140325320A1 (en) Syndrome tables for decoding turbo-product codes
JP4790790B2 (ja) 誤り検出訂正回路及び半導体メモリ
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
JP6657634B2 (ja) 符号化装置、メモリシステム、通信システムおよび符号化方法
US7340663B2 (en) Method and apparatus for embedding an additional layer of error correction into an error correcting code
JP2007299393A (ja) 回転する記憶媒体の複数の層にデータを読み書きする方法、プログラム及びデータ記憶装置
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
US20160364293A1 (en) Apparatuses and methods for encoding using error protection codes
JP2004362758A (ja) 記憶媒体から検索されたデータの誤りを訂正するシステムおよび方法、ならびにコンピュータにこれらの誤りを訂正させるためのコンピュータ実行可能な命令を含むコンピュータ読取可能な記憶媒体
US8819331B2 (en) Memory system and memory controller
JP2005011386A (ja) 誤り訂正装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100507

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100507

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111005

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4988731

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

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

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