(57)【特許請求の範囲】
【請求項１】
メモリ装置のために低レベルＥＣＣコード（誤り訂正コード）を生成する方法であって、
該メモリ装置から主データ、予備データ、及び高レベルＥＣＣコードを含むデータを受信するステップと、
該高レベルＥＣＣコードを用いて復号アルゴリズムに従って該主データと予備データとの誤りアドレスを検出するステップと、
該誤りアドレスに対応した更新メッセージを生成するステップと、
該更新メッセージに基づく一連の論理演算によって該低レベルＥＣＣコードを生成するステップと
を備え、
該低レベルＥＣＣは該メモリ装置を制御するホストによって使用され、該高レベルＥＣＣは該メモリ装置によって使用されることを特徴とする方法。
【請求項２】
前記メモリ装置はフラッシュメモリ装置である請求項１に記載の方法。
【請求項３】
前記メモリ装置はｘＤ（eXtreme Digital Picture)カード、スマートメディアカード、及びメモリースティック（登録商標）カードのうちの１つである請求項１に記載の方法。
【請求項４】
前記低レベルＥＣＣコードはハミングＥＣＣコードである請求項１に記載の方法。
【請求項５】
前記高レベルＥＣＣコードはリード・ソロモンＥＣＣコードであり、前記復号アルゴリズムはリード・ソロモンアルゴリズムである請求項１に記載の方法。
【請求項６】
前記主データと前記予備データを前記更新メッセージに基づいて更新するステップを更に備える請求項１に記載の方法。
【請求項７】
前記更新された主データと前記更新された予備データはデータ誤りを含んでいない請求項６に記載の方法。
【請求項８】
前記低レベルＥＣＣコードは前記更新された主データと前記更新された予備データにデータ誤りがないことを示す請求項７に記載の方法。
【請求項９】
メモリ装置のために低レベルＥＣＣコードを生成するコントローラであって、
該メモリ装置から主データを受信するバッファと、
該メモリ装置から予備データを受信する予備レジスタと、
ＥＣＣコードを生成するＥＣＣエンジンと
を備え、
該ＥＣＣエンジンは、
該メモリ装置から該主データ、該予備データ、及び高レベルＥＣＣコードを受信し、該高レベルＥＣＣコードを用いて復号アルゴリズムに従って該主データと該予備データとの誤りアドレスを検出し、該誤りアドレスに対応した更新メッセージを生成するＥＣＣ復号器と、
該更新メッセージに基づく一連の論理演算によって該低レベルＥＣＣコードを生成するＥＣＣ符号器と
を備え、
該低レベルＥＣＣは該メモリ装置を制御するホストによって使用され、該高レベルＥＣＣは該メモリ装置によって使用されることを特徴とするコントローラ。
【請求項１０】
前記メモリ装置はフラッシュメモリ装置である請求項９に記載のコントローラ。
【請求項１１】
前記メモリ装置はｘＤ（eXtreme Digital Picture)カード、スマートメディアカード、又はメモリースティックカードである請求項９に記載のコントローラ。
【請求項１２】
前記低レベルＥＣＣコードはハミングＥＣＣコードである請求項９に記載のコントローラ。
【請求項１３】
前記高レベルＥＣＣコードはリード・ソロモンＥＣＣコードであり、前記復号アルゴリズムはリード・ソロモンアルゴリズムである請求項９に記載のコントローラ。
【請求項１４】
前記ＥＣＣ復号器は更に前記更新メッセージを前記バッファと前記予備レジスタとに送信し、それぞれ前記主データと前記予備データとを更新する請求項９に記載のコントローラ。
【請求項１５】
前記更新された主データと前記更新された予備データはデータ誤りを含んでいない請求項１４に記載のコントローラ。
【請求項１６】
前記低レベルＥＣＣコードは前記更新された主データと前記更新された予備データとに対応する請求項１５に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置のためのＥＣＣコード生成方法、より具体的には低レベルＥＣＣ技術のみをサポートするメモリ装置のためのＥＣＣコード生成方法に関する。
【背景技術】
【０００２】
誤り訂正コード（ＥＣＣ）は数十年の間使用されてきており、幾つかの用途において優れた実績がある。例えば、単一レベルセル（ＳＬＣ）技術を備えたフラッシュメモリは、１ビット誤り訂正を行うハミング（ＨＭ）ＥＣＣを使用する。フラッシュメモリを制御するホストは、フラッシュメモリからホストへ送信されたデータがハミングＥＣＣコードを含んでいることを要求する。これにより、ホストは、必要な場合は、ハミングＥＣＣコードに依ってデータを訂正することができる。しかし、高レベルでより複雑な技術、例えば、各フラッシュメモリセルが２ビット以上のデータを記憶する多値（ＭＬＣ）技術を備えたフラッシュメモリの場合、ハミングＥＣＣ等の低レベルＥＣＣ技術は、記録追跡機能を実行し、必要な場合に、データを訂正するのに十分な情報を提供できない。従って、リード・ソロモン（ＲＳ）ＥＣＣ等の高レベルＥＣＣ技術が、高度なフラッシュ技術に８ビット誤り訂正能力を提供するために徐々に使用されるようになってきている。
【０００３】
幾つかのフラッシュメモリカード規格、例えばＭＭＣ２.０及びＳＤ２.０の場合、高レベルＥＣＣに対応したフラッシュメモリ装置は、データをホストへ送信する前にそのデータを訂正することができる。従って、ホストへ送信されるデータはＥＣＣコードを必要としない。しかし、ＥＣＣコードを含むデータを期待するホストの要求を満たすために、高レベルＥＣＣ対応のフラッシュメモリ装置はＥＣＣコードを生成しなければならず、幾つかの問題が発生する場合がある。
【０００４】
例えば、ホストがフラッシュメモリ装置からデータを読み出す時、ホストは読み出したデータを訂正するためのＥＣＣコードを要求し、フラッシュメモリ装置はＥＣＣコードを提供しなければならない。
【０００５】
図１において、データ１０はフラッシュメモリからのデータであり、主データ１１、予備データ１２、及びＲＳ−ＥＣＣコード１３を含む。データ１０は、フラッシュメモリ装置のコントローラ２０に送信され、コントローラ２０はデータ１０を処理し、処理されたデータ３０をホストへ出力する。データ３０は主データ３１、予備データ３２、及びＨＭ−ＥＣＣコード３３を含む。
【０００６】
コントローラ２０は、バッファ２１と、予備レジスタ２２と、ＥＣＣエンジン２３と、ＨＭ−ＥＣＣ符号器２４とを備える。主データ１１はバッファ２１とＥＣＣエンジン２３とに送信され、予備データ１２は予備レジスタ２２とＥＣＣエンジン２３とに送信される。ＲＳ−ＥＣＣコード１３はＥＣＣエンジン２３に送信される。ＥＣＣエンジン２３は、主データ１１と予備データ１２とＲＳ−ＥＣＣコード１３とを受信した後、更新メッセージ１０４を生成し、主データ１１と予備データ１２とをそれぞれ訂正するために、バッファ２１と予備レジスタ２２とに出力する。
【０００７】
ホストはＨＭ−ＥＣＣコードを要求するので、ＨＭ−ＥＣＣ符号器２４はバッファ２１からの更新された主データと、予備レジスタ２２からの更新された予備データとに応じたＨＭ−ＥＣＣコード３３を生成する。コントローラ２０は、この更新された主データを更新された主データ３１として出力し、この更新された予備データを更新された予備データ３２として出力する。ホストは、更新された主データ３１と更新された予備データ３２とＨＭ−ＥＣＣコード３３とを受信する。２つの誤り訂正アルゴリズムの動作を必要とし、処理時間がかかる。
【０００８】
従って、低レベルＥＣＣ技術のみをサポートするメモリ装置のために、１回を超えてデータを読み出しより多くの時間を費やすことなく、正しいＥＣＣコード生成することが求められている。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の主な目的は、メモリ装置のために高レベルＥＣＣコードに応じて低レベルＥＣＣコードを生成する方法を提供することである。
【課題を解決するための手段】
【００１０】
高レベルＥＣＣ技術を使用するＥＣＣエンジンを備えたコントローラにより、メモリ装置は、メモリからデータを読み出した時、直ちに正しいＥＣＣコードを生成することができる。また、本コントローラは高レベルＥＣＣコードに応じて低レベルＥＣＣコードを生成する。従って、このメモリ装置は、高レベルＥＣＣ技術を備えたメモリもサポートすることができるとともに、データ読み出し時間を短縮できる。
【発明を実施するための最良の形態】
【００１１】
本発明の詳細な技術及び好適な実施形態を、当業者が本発明の特徴をよく理解できるように添付の図面を参照しながら以下に説明する。
【実施例】
【００１２】
以下の説明において、高レベルＥＣＣコードに応じて低レベルＥＣＣコードを生成する実施形態を参照しながら本発明を説明する。しかし、本発明の実施形態はいかなる特定の環境、用途、又は実施形態にも限定されない。従って、以下の実施形態の説明は、例示のためであり、限定のためではない。
【００１３】
図２は、本発明のコントローラを経由するメモリ装置からホストへのデータの処理、即ち、読み出しステップを示すブロック図である。フラッシュメモリ装置を例にとって説明するが、本発明を限定する意図はない。本発明は低レベルＥＣＣコードを要求するメモリ装置に適用することができる。このフラッシュメモリ装置はｘＤ（eXtreme Digital Picture)カード、スマートメディアカード、又はメモリースティック（登録商標）カードであってもよい。このフラッシュメモリ装置は高レベル誤り訂正アルゴリズム、本実施形態ではリード・ソロモン（ＲＳ）アルゴリズムを適用して、ＲＳ−ＥＣＣコードと、低レベルＥＣＣコード、本実施形態ではハミング（ＨＭ）ＥＣＣコードとを生成する。他の実施形態では、高レベル誤り訂正アルゴリズムは、ボース・チョーンドリ・オッカンガム（ＢＣＨ）アルゴリズム、又は他の適当なアルゴリズムであってよい。
【００１４】
コントローラ５０はフラッシュメモリ装置からデータ４０を受信し、このデータ４０を処理してホストへ送信するための更新されたデータ６０を生成する。データ４０は主データ４１と、予備データ４２と、ＲＳ−ＥＣＣコード４３とを含む。コントローラ５０は、バッファ５１と、予備レジスタ５２と、ＥＣＣエンジン５３とを備える。更新されたデータ６０は、更新された主データ６１と、更新された予備データ６２と、ＨＭ−ＥＣＣコード６３とを含む。
【００１５】
ＥＣＣエンジン５３はＲＳ−ＥＣＣ復号器５３２と、ＨＭ−ＥＣＣ符号器５３３と、ＲＳ−ＥＣＣ符号器５３１とを備える。ＲＳ−ＥＣＣ復号器５３２とＨＭ−ＥＣＣ符号器５３３は読み出しステップで使用され、ＲＳ−ＥＣＣ符号器５３１は書き込みステップで使用される。バッファ５１とＲＳ−ＥＣＣ復号器５３２の両方が主データ４１を受信し、予備レジスタ５２とＲＳ−ＥＣＣ復号器５３２の両方が予備データ４２を受信し、ＲＳ−ＥＣＣ復号器５３２はＲＳ−ＥＣＣコード４３も受信する。ＲＳ−ＥＣＣ復号器５３２は、主データ４１と予備データ４２をＲＳ−ＥＣＣコード４３を用いてＲＳアルゴリズムに従って復号し、更新メッセージ５０４を生成しバッファ５１と予備レジスタ５２とＨＭ−ＥＣＣ符号器５３３とに出力し、主データ４１と予備データ４２とを更新するとともに、ＨＭ−ＥＣＣコード６３を生成する。更新された主データ６１と更新された予備データ６２とＨＭ−ＥＣＣコード６３とを生成する方法の詳細を下記に説明する。
【００１６】
ＲＳ−ＥＣＣ復号器５３２は、ＲＳ−ＥＣＣコード４３を用いて対応する復号アルゴリズム、本実施形態ではＲＳアルゴリズムに従って主データ４１と予備データ４２との誤りアドレスを検出し、主データ４１と予備データ４２との全ての誤りアドレスを記録した更新メッセージ５０４を生成する。次に、ＲＳ−ＥＣＣ復号器５３２は、更新メッセージ５０４をバッファ５１と予備レジスタ５２とにデータを訂正させるために、また、ＨＭ−ＥＣＣ符号器５３３に正しいＨＭ−ＥＣＣコードを生成させるために出力する。
【００１７】
次に、更新された主データが主データ６１として出力され、更新された予備データが予備データ６２として出力される。主データ４１と予備データ４２の両方が、ＲＳ−ＥＣＣ復号器５３２によって生成された更新メッセージ５０４に基づいて更新され、更新メッセージ５０４は、図１の更新メッセージ１０４より多くの誤り訂正情報を提供することができるので、更新された主データ６１と更新された予備データ６２の両方ともデータ誤りを含んでいない。一方、ＨＭ−ＥＣＣコード６３は更新メッセージ５０４に応じて生成される。従って、ＨＭ−ＥＣＣコード６３は更新された主データ６１と更新された予備データ６２に誤りがないことを示す。
【００１８】
ＨＭ−ＥＣＣコード６３はカラムパリティ（ＣＰ）とラインパリティ（ＬＰ）とから成る。以下では、ラインパリティを例にとって、更新メッセージ５０４に応じてＨＭ−ＥＣＣコード６３を生成する方法を説明する。下の表１を参照すると、各バイトのビットのＸＯＲ演算によってラインパリティが生成される。例えば、バイト０の８ビットのＸＯＲ演算の出力値は０に等しく、バイト１の８ビットのＸＯＲ演算の出力値は０に等しく、バイト２の８ビットのＸＯＲ演算の出力値は１に等しく、バイト３の８ビットのＸＯＲ演算の出力値は０に等しい。同様に、バイト２５５の８ビットのＸＯＲ演算の出力値は１に等しい。その他同様。
【００１９】
【表１】
0004819843.tif 000002
【００２０】
１つのバイトデータに誤りがあると、バイト群のグループ値も誤りとなる。下の表２を参照すると、グループ値ＬＰ１はバイト１、３、５、７、・・・、２５５のラインパリティのＸＯＲ演算の出力値であり、ＬＰ１’はバイト０、２、４、６、８、・・・、２５４のラインパリティのＸＯＲ演算の出力値であり、ＬＰ２はバイト０、１、４、５、８、９、・・・、２５２、２５３のラインパリティのＸＯＲ演算の出力値であり、ＬＰ２’はバイト２、３、６、７、１０、１１、・・・、２５４、２５５のラインパリティのＸＯＲ演算の出力値である。同様に、グループ値ＬＰ１２８はバイト１２８、１２９、１３０、・・・、２５５のラインパリティのＸＯＲ演算の出力値であり、ＬＰ１２８’はバイト０、１、２、３、・・・、１２７のラインパリティのＸＯＲ演算の出力値である。その他同様。なお、上記各ＬＰのＸＯＲ演算値に誤りがある場合がある。ＸＯＲ演算値の訂正について下記に説明する。
【００２１】
【表２】
0004819843.tif 000003
【００２２】
表３を参照すると、更新メッセージ５０４がバイト１のデータに誤りがあることを示し、そのＸＯＲ演算値が１である場合は、バイト１を含む全てのグループ（ＬＰ１、ＬＰ２、ＬＰ１２８’等）の値は、１は０に、０は１に変わっているはずである。一方、更新メッセージ５０４がバイト１のデータに誤りがあることを示し、そのＸＯＲ演算値が０である場合は、バイト１を含む全てのグループの値は、表２と同じである。従って、２つ以上のビットに誤りがある場合は、ラインパリティに依って誤りを検出することはできない。このため、ＨＭ−ＥＣＣコード６３は２つ以上のビットの誤りを検出することはできない。
【００２３】
【表３】
0004819843.tif 000004
【００２４】
ＨＭ−ＥＣＣコード６３、更新された主データ６１、及び更新された予備データ６２は更新メッセージ５０４に基づいて生成されるので、ＨＭ−ＥＣＣコード６３は更新された主データ６１と更新された予備データ６２とに対応することができる。従って、ホストが、規格の要求に従って、更新された主データ６１と更新された予備データ６２とをＨＭ−ＥＣＣコード６３に基づいて訂正したとしても、これらはすでに正しいデータであるのでその出力は正しいであろう。コントローラ５０は、高レベルＥＣＣコードであるＲＳ−ＥＣＣコード４３を、低レベルＥＣＣコードであるＨＭ−ＥＣＣコード６３に正しく変換できる。
【００２５】
コントローラ５０は、更新メッセージ５０４に応じてＨＭ−ＥＣＣコード６３を生成でき、ＨＭ−ＥＣＣコード６３を生成するために更新された主データ６１と更新された予備データ６２とを読む必要がない。従来技術と比較して、本発明では、更新された主データ６１と更新された予備データ６２とを読む追加のステップなしにＨＭ−ＥＣＣコード６３を生成することができる。従って、読み出しステップはより効率的になる。
【００２６】
図３は、本発明のコントローラを経由するホストからフラッシュメモリ装置へのデータの処理、即ち、書き込みステップを示すブロック図である。
【００２７】
図３は、本発明に係るホストからフラッシュメモリへのデータ書き込み時のブロック図である。コントローラ８０はバッファ８１と、予備レジスタ８２と、ＥＣＣエンジン８３とを備える。ＥＣＣエンジン８３はＲＳ−ＥＣＣ符号器８３１と、ＲＳ−ＥＣＣ復号器８３２と、ＨＭ−ＥＣＣ符号器８３３とを備える。ホストがフラッシュメモリへのデータ書き込みを開始する時、主データ９１と予備データ９２はバッファ８１と予備レジスタ８２に一時的に格納される。同時に、主データ９１と予備データ９２はまた、ＨＭ−ＥＣＣコード９３とともにＲＳ−ＥＣＣ符号器８３１に送信される。
【００２８】
バッファ８１は、主データ９１と予備データ９２をそのまま主データ７１と予備データ７２としてフラッシュメモリへ書き込む。同時に、ＲＳ−ＥＣＣ符号器８３１は主データ９１と予備データ９２からＲＳ符号化アルゴリズムに従ってＲＳ−ＥＣＣコード７３を生成し、ＲＳ−ＥＣＣコード７３をフラッシュメモリへ書き込む。
【００２９】
本発明を適用することで、メモリのコントローラは、ＲＳ−ＥＣＣコード等の高レベルＥＣＣコードに応じてハミングＥＣＣコード等の低レベルＥＣＣコードを生成することができる。本コントローラは、高レベルＥＣＣコードを読むことで、更新されたデータを読むことなく直ちに低レベルＥＣＣコードを生成することができ、処理時間とコストを節約できる。
【００３０】
上記の実施形態は、本発明の詳細な技術的内容と進歩的な特徴を開示する。当業者は本発明の開示に基づいて本発明の範囲を逸脱することなく様々な変更及び置換えを想到する可能性がある。
【図面の簡単な説明】
【００３１】
【図１】従来技術のデータ読み出し時のブロック図である。
【図２】本発明に係るデータ読み出し時のブロック図である。
【図３】本発明に係るデータ書き込み時のブロック図である。
【符号の説明】
【００３２】
４０    データ
４１    主データ
４２    予備データ
４３    ＲＳ−ＥＣＣコード
５０    コントローラ
５１    バッファ
５２    予備レジスタ
５３    ＥＣＣエンジン
５３１  ＲＳ−ＥＣＣ符号器
５３２  ＲＳ−ＥＣＣ復号器
５３３  ＨＭ−ＥＣＣ符号器
６０    更新されたデータ
６１    更新された主データ
６２    更新された予備データ
６３    ＨＭ−ＥＣＣコード
【図１】
0004819843.tif 000005
【図２】
0004819843.tif 000006
【図３】
0004819843.tif 000007