説明

メモリ装置のためのECCコード生成方法

【課題】フラッシュメモリ装置のためにECCコードを生成する方法を提供する。
【解決手段】単一レベルセル(SLC)フラッシュメモリ等の低レベルECC技術を備えたフラッシュメモリだけをサポートするフラッシュメモリ装置は、ECCエンジンを備えた本発明のコントローラにより、多値(MLC)フラッシュメモリ等の高レベルECC技術を備えたフラッシュメモリからデータを読み出した時、直ちに正しいECCコードを生成することができる。従って、このフラッシュメモリ装置は、高レベルECC技術を備えたフラッシュメモリもサポートすることができるとともに、データ読み出し時間を短縮できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ装置のためのECCコード生成方法、より具体的には低レベルECC技術のみをサポートするメモリ装置のためのECCコード生成方法に関する。
【背景技術】
【0002】
誤り訂正コード(ECC)は数十年の間使用されてきており、幾つかの用途において優れた実績がある。例えば、単一レベルセル(SLC)技術を備えたフラッシュメモリは、1ビット誤り訂正を行うハミング(HM)ECCを使用する。フラッシュメモリを制御するホストは、フラッシュメモリからホストへ送信されたデータがハミングECCコードを含んでいることを要求する。これにより、ホストは、必要な場合は、ハミングECCコードに依ってデータを訂正することができる。しかし、高レベルでより複雑な技術、例えば、各フラッシュメモリセルが2ビット以上のデータを記憶する多値(MLC)技術を備えたフラッシュメモリの場合、ハミングECC等の低レベルECC技術は、記録追跡機能を実行し、必要な場合に、データを訂正するのに十分な情報を提供できない。従って、リード・ソロモン(RS)ECC等の高レベルECC技術が、高度なフラッシュ技術に8ビット誤り訂正能力を提供するために徐々に使用されるようになってきている。
【0003】
幾つかのフラッシュメモリカード規格、例えばMMC2.0及びSD2.0の場合、高レベルECCに対応したフラッシュメモリ装置は、データをホストへ送信する前にそのデータを訂正することができる。従って、ホストへ送信されるデータはECCコードを必要としない。しかし、ECCコードを含むデータを期待するホストの要求を満たすために、高レベルECC対応のフラッシュメモリ装置はECCコードを生成しなければならず、幾つかの問題が発生する場合がある。
【0004】
例えば、ホストがフラッシュメモリ装置からデータを読み出す時、ホストは読み出したデータを訂正するためのECCコードを要求し、フラッシュメモリ装置はECCコードを提供しなければならない。
【0005】
図1において、データ10はフラッシュメモリからのデータであり、主データ11、予備データ12、及びRS−ECCコード13を含む。データ10は、フラッシュメモリ装置のコントローラ20に送信され、コントローラ20はデータ10を処理し、処理されたデータ30をホストへ出力する。データ30は主データ31、予備データ32、及びHM−ECCコード33を含む。
【0006】
コントローラ20は、バッファ21と、予備レジスタ22と、ECCエンジン23と、HM−ECC符号器24とを備える。主データ11はバッファ21とECCエンジン23とに送信され、予備データ12は予備レジスタ22とECCエンジン23とに送信される。RS−ECCコード13はECCエンジン23に送信される。ECCエンジン23は、主データ11と予備データ12とRS−ECCコード13とを受信した後、更新メッセージ104を生成し、主データ11と予備データ12とをそれぞれ訂正するために、バッファ21と予備レジスタ22とに出力する。
【0007】
ホストはHM−ECCコードを要求するので、HM−ECC符号器24はバッファ21からの更新された主データと、予備レジスタ22からの更新された予備データとに応じたHM−ECCコード33を生成する。コントローラ20は、この更新された主データを更新された主データ31として出力し、この更新された予備データを更新された予備データ32として出力する。ホストは、更新された主データ31と更新された予備データ32とHM−ECCコード33とを受信する。2つの誤り訂正アルゴリズムの動作を必要とし、処理時間がかかる。
【0008】
従って、低レベルECC技術のみをサポートするメモリ装置のために、1回を超えてデータを読み出しより多くの時間を費やすことなく、正しいECCコード生成することが求められている。
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明の主な目的は、メモリ装置のために高レベルECCコードに応じて低レベルECCコードを生成する方法を提供することである。
【課題を解決するための手段】
【0010】
高レベルECC技術を使用するECCエンジンを備えたコントローラにより、メモリ装置は、メモリからデータを読み出した時、直ちに正しいECCコードを生成することができる。また、本コントローラは高レベルECCコードに応じて低レベルECCコードを生成する。従って、このメモリ装置は、高レベルECC技術を備えたメモリもサポートすることができるとともに、データ読み出し時間を短縮できる。
【発明を実施するための最良の形態】
【0011】
本発明の詳細な技術及び好適な実施形態を、当業者が本発明の特徴をよく理解できるように添付の図面を参照しながら以下に説明する。
【実施例】
【0012】
以下の説明において、高レベルECCコードに応じて低レベルECCコードを生成する実施形態を参照しながら本発明を説明する。しかし、本発明の実施形態はいかなる特定の環境、用途、又は実施形態にも限定されない。従って、以下の実施形態の説明は、例示のためであり、限定のためではない。
【0013】
図2は、本発明のコントローラを経由するメモリ装置からホストへのデータの処理、即ち、読み出しステップを示すブロック図である。フラッシュメモリ装置を例にとって説明するが、本発明を限定する意図はない。本発明は低レベルECCコードを要求するメモリ装置に適用することができる。このフラッシュメモリ装置はxD(eXtreme Digital Picture)カード、スマートメディアカード、又はメモリースティック(登録商標)カードであってもよい。このフラッシュメモリ装置は高レベル誤り訂正アルゴリズム、本実施形態ではリード・ソロモン(RS)アルゴリズムを適用して、RS−ECCコードと、低レベルECCコード、本実施形態ではハミング(HM)ECCコードとを生成する。他の実施形態では、高レベル誤り訂正アルゴリズムは、ボース・チョーンドリ・オッカンガム(BCH)アルゴリズム、又は他の適当なアルゴリズムであってよい。
【0014】
コントローラ50はフラッシュメモリ装置からデータ40を受信し、このデータ40を処理してホストへ送信するための更新されたデータ60を生成する。データ40は主データ41と、予備データ42と、RS−ECCコード43とを含む。コントローラ50は、バッファ51と、予備レジスタ52と、ECCエンジン53とを備える。更新されたデータ60は、更新された主データ61と、更新された予備データ62と、HM−ECCコード63とを含む。
【0015】
ECCエンジン53はRS−ECC復号器532と、HM−ECC符号器533と、RS−ECC符号器531とを備える。RS−ECC復号器532とHM−ECC符号器533は読み出しステップで使用され、RS−ECC符号器531は書き込みステップで使用される。バッファ51とRS−ECC復号器532の両方が主データ41を受信し、予備レジスタ52とRS−ECC復号器532の両方が予備データ42を受信し、RS−ECC復号器532はRS−ECCコード43も受信する。RS−ECC復号器532は、主データ41と予備データ42をRS−ECCコード43を用いてRSアルゴリズムに従って復号し、更新メッセージ504を生成しバッファ51と予備レジスタ52とHM−ECC符号器533とに出力し、主データ41と予備データ42とを更新するとともに、HM−ECCコード63を生成する。更新された主データ61と更新された予備データ62とHM−ECCコード63とを生成する方法の詳細を下記に説明する。
【0016】
RS−ECC復号器532は、RS−ECCコード43を用いて対応する復号アルゴリズム、本実施形態ではRSアルゴリズムに従って主データ41と予備データ42との誤りアドレスを検出し、主データ41と予備データ42との全ての誤りアドレスを記録した更新メッセージ504を生成する。次に、RS−ECC復号器532は、更新メッセージ504をバッファ51と予備レジスタ52とにデータを訂正させるために、また、HM−ECC符号器533に正しいHM−ECCコードを生成させるために出力する。
【0017】
次に、更新された主データが主データ61として出力され、更新された予備データが予備データ62として出力される。主データ41と予備データ42の両方が、RS−ECC復号器532によって生成された更新メッセージ504に基づいて更新され、更新メッセージ504は、図1の更新メッセージ104より多くの誤り訂正情報を提供することができるので、更新された主データ61と更新された予備データ62の両方ともデータ誤りを含んでいない。一方、HM−ECCコード63は更新メッセージ504に応じて生成される。従って、HM−ECCコード63は更新された主データ61と更新された予備データ62に誤りがないことを示す。
【0018】
HM−ECCコード63はカラムパリティ(CP)とラインパリティ(LP)とから成る。以下では、ラインパリティを例にとって、更新メッセージ504に応じてHM−ECCコード63を生成する方法を説明する。下の表1を参照すると、各バイトのビットのXOR演算によってラインパリティが生成される。例えば、バイト0の8ビットのXOR演算の出力値は0に等しく、バイト1の8ビットのXOR演算の出力値は0に等しく、バイト2の8ビットのXOR演算の出力値は1に等しく、バイト3の8ビットのXOR演算の出力値は0に等しい。同様に、バイト255の8ビットのXOR演算の出力値は1に等しい。その他同様。
【0019】
【表1】

【0020】
1つのバイトデータに誤りがあると、バイト群のグループ値も誤りとなる。下の表2を参照すると、グループ値LP1はバイト1、3、5、7、・・・、255のラインパリティのXOR演算の出力値であり、LP1’はバイト0、2、4、6、8、・・・、254のラインパリティのXOR演算の出力値であり、LP2はバイト0、1、4、5、8、9、・・・、252、253のラインパリティのXOR演算の出力値であり、LP2’はバイト2、3、6、7、10、11、・・・、254、255のラインパリティのXOR演算の出力値である。同様に、グループ値LP128はバイト128、129、130、・・・、255のラインパリティのXOR演算の出力値であり、LP128’はバイト0、1、2、3、・・・、127のラインパリティのXOR演算の出力値である。その他同様。なお、上記各LPのXOR演算値に誤りがある場合がある。XOR演算値の訂正について下記に説明する。
【0021】
【表2】

【0022】
表3を参照すると、更新メッセージ504がバイト1のデータに誤りがあることを示し、そのXOR演算値が1である場合は、バイト1を含む全てのグループ(LP1、LP2、LP128’等)の値は、1は0に、0は1に変わっているはずである。一方、更新メッセージ504がバイト1のデータに誤りがあることを示し、そのXOR演算値が0である場合は、バイト1を含む全てのグループの値は、表2と同じである。従って、2つ以上のビットに誤りがある場合は、ラインパリティに依って誤りを検出することはできない。このため、HM−ECCコード63は2つ以上のビットの誤りを検出することはできない。
【0023】
【表3】

【0024】
HM−ECCコード63、更新された主データ61、及び更新された予備データ62は更新メッセージ504に基づいて生成されるので、HM−ECCコード63は更新された主データ61と更新された予備データ62とに対応することができる。従って、ホストが、規格の要求に従って、更新された主データ61と更新された予備データ62とをHM−ECCコード63に基づいて訂正したとしても、これらはすでに正しいデータであるのでその出力は正しいであろう。コントローラ50は、高レベルECCコードであるRS−ECCコード43を、低レベルECCコードであるHM−ECCコード63に正しく変換できる。
【0025】
コントローラ50は、更新メッセージ504に応じてHM−ECCコード63を生成でき、HM−ECCコード63を生成するために更新された主データ61と更新された予備データ62とを読む必要がない。従来技術と比較して、本発明では、更新された主データ61と更新された予備データ62とを読む追加のステップなしにHM−ECCコード63を生成することができる。従って、読み出しステップはより効率的になる。
【0026】
図3は、本発明のコントローラを経由するホストからフラッシュメモリ装置へのデータの処理、即ち、書き込みステップを示すブロック図である。
【0027】
図3は、本発明に係るホストからフラッシュメモリへのデータ書き込み時のブロック図である。コントローラ80はバッファ81と、予備レジスタ82と、ECCエンジン83とを備える。ECCエンジン83はRS−ECC符号器831と、RS−ECC復号器832と、HM−ECC符号器833とを備える。ホストがフラッシュメモリへのデータ書き込みを開始する時、主データ91と予備データ92はバッファ81と予備レジスタ82に一時的に格納される。同時に、主データ91と予備データ92はまた、HM−ECCコード93とともにRS−ECC符号器831に送信される。
【0028】
バッファ81は、主データ91と予備データ92をそのまま主データ71と予備データ72としてフラッシュメモリへ書き込む。同時に、RS−ECC符号器831は主データ91と予備データ92からRS符号化アルゴリズムに従ってRS−ECCコード73を生成し、RS−ECCコード73をフラッシュメモリへ書き込む。
【0029】
本発明を適用することで、メモリのコントローラは、RS−ECCコード等の高レベルECCコードに応じてハミングECCコード等の低レベルECCコードを生成することができる。本コントローラは、高レベルECCコードを読むことで、更新されたデータを読むことなく直ちに低レベルECCコードを生成することができ、処理時間とコストを節約できる。
【0030】
上記の実施形態は、本発明の詳細な技術的内容と進歩的な特徴を開示する。当業者は本発明の開示に基づいて本発明の範囲を逸脱することなく様々な変更及び置換えを想到する可能性がある。
【図面の簡単な説明】
【0031】
【図1】従来技術のデータ読み出し時のブロック図である。
【図2】本発明に係るデータ読み出し時のブロック図である。
【図3】本発明に係るデータ書き込み時のブロック図である。
【符号の説明】
【0032】
40 データ
41 主データ
42 予備データ
43 RS−ECCコード
50 コントローラ
51 バッファ
52 予備レジスタ
53 ECCエンジン
531 RS−ECC符号器
532 RS−ECC復号器
533 HM−ECC符号器
60 更新されたデータ
61 更新された主データ
62 更新された予備データ
63 HM−ECCコード

【特許請求の範囲】
【請求項1】
メモリ装置のために低レベルECCコード(誤り訂正コード)を生成する方法であって、
該メモリ装置から主データ、予備データ、及び高レベルECCコードを含むデータを受信するステップと、
該高レベルECCコードを用いて復号アルゴリズムに従って該主データと予備データとの誤りアドレスを検出するステップと、
該誤りアドレスに対応した更新メッセージを生成するステップと、
該更新メッセージに応じて該低レベルECCコードを生成するステップと
を備える方法。
【請求項2】
前記メモリ装置はフラッシュメモリ装置である請求項1に記載の方法。
【請求項3】
前記メモリ装置はxD(eXtreme Digital Picture)カード、スマートメディアカード、及びメモリースティック(登録商標)カードのうちの1つである請求項1に記載の方法。
【請求項4】
前記低レベルECCコードはハミングECCコードである請求項1に記載の方法。
【請求項5】
前記高レベルECCコードはリード・ソロモンECCコードであり、前記復号アルゴリズムはリード・ソロモンアルゴリズムである請求項1に記載の方法。
【請求項6】
前記主データと前記予備データを前記更新メッセージに基づいて更新するステップを更に備える請求項1に記載の方法。
【請求項7】
前記更新された主データと前記更新された予備データはデータ誤りを含んでいない請求項6に記載の方法。
【請求項8】
前記低レベルECCコードは前記更新された主データと前記更新された予備データにデータ誤りがないことを示す請求項7に記載の方法。
【請求項9】
メモリ装置のために低レベルECCコードを生成するコントローラであって、
該メモリ装置から主データを受信するバッファと、
該メモリ装置から予備データを受信する予備レジスタと、
ECCコードを生成するECCエンジンと
を備え、
該ECCエンジンは、
該メモリ装置から該主データ、該予備データ、及び高レベルECCコードを受信し、該高レベルECCコードを用いて復号アルゴリズムに従って該主データと該予備データとの誤りアドレスを検出し、該誤りアドレスに対応した更新メッセージを生成するECC復号器と、
該更新メッセージに応じて該低レベルECCコードを生成するECC符号器と
を備えるコントローラ。
【請求項10】
前記メモリ装置はフラッシュメモリ装置である請求項9に記載のコントローラ。
【請求項11】
前記メモリ装置はxD(eXtreme Digital Picture)カード、スマートメディアカード、又はメモリースティックカードである請求項9に記載のコントローラ。
【請求項12】
前記低レベルECCコードはハミングECCコードである請求項9に記載のコントローラ。
【請求項13】
前記高レベルECCコードはリード・ソロモンECCコードであり、前記復号アルゴリズムはリード・ソロモンアルゴリズムである請求項9に記載のコントローラ。
【請求項14】
前記ECC復号器は更に前記更新メッセージを前記バッファと前記予備レジスタとに送信し、それぞれ前記主データと前記予備データとを更新する請求項9に記載のコントローラ。
【請求項15】
前記更新された主データと前記更新された予備データはデータ誤りを含んでいない請求項14に記載のコントローラ。
【請求項16】
前記低レベルECCコードは前記更新された主データと前記更新された予備データとに対応する請求項15に記載のコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2009−70362(P2009−70362A)
【公開日】平成21年4月2日(2009.4.2)
【国際特許分類】
【出願番号】特願2008−137738(P2008−137738)
【出願日】平成20年5月27日(2008.5.27)
【出願人】(508157130)慧榮科技股▲分▼有限公司 (1)
【Fターム(参考)】