JP2015507409A - 代数符号を用いるマルチフェーズecc符号化 - Google Patents
代数符号を用いるマルチフェーズecc符号化 Download PDFInfo
- Publication number
- JP2015507409A JP2015507409A JP2014548877A JP2014548877A JP2015507409A JP 2015507409 A JP2015507409 A JP 2015507409A JP 2014548877 A JP2014548877 A JP 2014548877A JP 2014548877 A JP2014548877 A JP 2014548877A JP 2015507409 A JP2015507409 A JP 2015507409A
- Authority
- JP
- Japan
- Prior art keywords
- bits
- parity
- joint
- information bits
- code
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
Abstract
本発明の方法には、情報ビットの第1のセットに対応する第1のパリティビットの第1のセットおよび情報ビットの第2のセットに対応する第1のパリティビットの第2のセットを生成する第1の代数エラー訂正符号と関連付けられた第1の符号化動作が含まれる。第2の代数エラー訂正符号と関連付けられた第2の符号化動作は、情報ビットの第1のセットに対応する第2のパリティビットの第1のセットおよび情報ビットの第2のセットに対応する第2のパリティビットの第2のセットを生成する。第3の符号化動作は、ジョイントパリティビットのセットを生成する。情報ビットの第1のセット、情報ビットの第2のセット、第1のパリティビットの第1のセット、第1のパリティビットの第2のセットおよびジョイントパリティビットは、単一の符号語としてデータストレージデバイスに格納され得る。
Description
本発明は、一般的に、エラー訂正符号(ECC)データの復号化に関する。
ユニバーサルシリアルバス(USB)フラッシュメモリデバイスあるいは取り外し可能なストレージカードなどの不揮発性データストレージデバイスは、データおよびソフトウェアアプリケーションの可搬性の向上を可能にしている。フラッシュメモリデバイスは、各フラッシュメモリセルに複数のビットを格納することによってデータストレージ密度を高めることができる。例えば、マルチレベルセル(MLC)フラッシュメモリデバイスは、セルあたりに3ビット、セルあたりに4ビット、あるいはそれ以上を格納することによって大きくされたストレージ密度を提供する。セルあたりのビット数を大きくし、かつデバイスフィーチャ寸法を小さくすることによってメモリデバイスのストレージ密度を大きくすることはできるけれども、メモリデバイスに格納されたデータのビットエラー率も大きくなることがある。
エラー訂正符号(ECC)は、メモリデバイスからのデータ読み出し時に発生するエラーを訂正するためによく使われる。格納される前に、データは、データとともに格納され得る冗長情報(例えば、「パリティビット」)を生成するためにECCエンコーダによって符号化され得る。例えば、ECCは、ハミング符号化方式、リードソロモン(RS)符号化方式、ボーズ−チャウドゥリ−ホッケンゲム(BCH)符号化方式などの代数符号に基づくことができ、あるいはターボ符号の符号化方式または低密度パリティチェック(LDPC)符号化方式などの反復符号化方式に基づくことができる。
ECC方式の効率は、種々の態様に基づいて測られ得る。例えば、その効率は、所与の量の冗長性で補正され得るエラーの量、あるいは特定のエラー率に起因するエラーが生じるデータの訂正のための冗長性の量などの、冗長性と比べてのエラー訂正能力に基づいて測られ得る。代わりにあるいはこのことに加えて、その効率は、ECCエンジンの複雑さ(例えば、ECCコアのサイズまたはコスト)、ECCエンジンのパワー消費量、あるいは復号化スループットおよび待ち時間に少なくとも部分的に基づいて測られ得る。例えば、ランダム読み出し性能は、モバイルデバイスアプリケーションのためのソリッドステートドライブ(SSD)およびメモリカードなどで、スループットが大きくなり待ち時間が減少すると、向上する。
マルチフェーズECC方式において代数符号が使用される。データは情報ビットの複数のセットとして符号化され得る。情報ビットの各セットについて、パリティビットの第1のセットを生成するために第1の符号が使用され、パリティビットの第2のセットを生成するために第2の符号が使用され得る。情報ビットの複数のセットの各々についてのパリティビットの第2のセットは、データのジョイントパリティビットとして機能するパリティビットの第3のセットを生成するために第3の符号を使用して処理され符号化され得る。ジョイントパリティビットは、ジョイントパリティ保護ビットとして機能するパリティビットの第4のセットを生成するために第4の符号を使用して符号化され得る。情報ビット、第1のパリティビット、ジョイントパリティビットおよびジョイントパリティ保護ビットのセットはメモリに格納され得る。
第1の復号化フェーズの間にメモリから情報ビットのセットが読み出される場合に、対応する第1のパリティビットを第1の符号に基づく復号化試行に使用する。第1の復号化フェーズの間に情報ビットのセットについての復号化が失敗したならば、データの情報セットの全てが、第1のフェーズにおいて復号化に失敗した情報のセットについてのパリティビットの第2のセットを生成するためにジョイントパリティビットと関連して第2の復号化フェーズの間に第1の符号に基づいて復号化され、処理され得る。パリティビットの第2のセットを使用する復号化は、第1の符号と比べて改善されたエラー訂正能力を有する第2の符号を使用して実行され得る。
代数符号を使用すれば、ジョイントパリティビットのセットを通して互いに結合された数個のより短いサブ符号(例えば、BCHサブ符号)の連結としてエラー訂正符号を構築することが可能となる。エラー訂正符号は、長いLDPC符号を構築するために連結された低密度パリティチェック(LDPC)サブ符号を用いる実施例などの、比較的に高い複雑度の反復デコーダに基づく実施例と比べて、比較的に低い複雑度の復号化エンジンを用いているのに、高いエラー訂正能力を有する。
図1を参照すると、代数符号に基づくマルチフェーズECC復号化を用いるように構成されたデータストレージデバイス102を含むシステム100の特定の例示的な実施形態が描かれている。システム100は、ホストデバイス130に結合されたデータストレージデバイス102を含む。データストレージデバイス102は、コントローラ106に結合されたメモリ104を含む。コントローラ106は、代数符号に基づくマルチフェーズECC復号化を可能にするためにメモリ104に格納されるべきデータを符号化するように構成されている。コントローラ106は、代数符号に基づくマルチフェーズECC復号化を用いてメモリ104から読み出されたデータを復号化するようにも構成されている。
ホストデバイス130は、メモリ104に格納されるべきデータを提供するか、あるいはデータをメモリ104から読み出すことを要求するように構成され得る。例えば、ホストデバイス130は、携帯電話機、音楽もしくはビデオプレーヤ、ゲームコンソール、電子ブックリーダ、個人用携帯情報端末(PDA)、ラップトップコンピュータ、ノートブックコンピュータ、もしくはタブレットなどのコンピュータ、他の任意の電子装置、またはそれらの任意の組み合わせを含み得る。
データストレージデバイス102は、Secure Digital(登録商標)(SD)カード、microSD(登録商標)カード、miniSD(登録商標)カード(デラウェア州ウィルミントンのSD−3C LLCの商標)、MultiMediaCard(登録商標)(MMC(登録商標)カード(バージニア州アーリントンのJEDEC Solid State Technology Associationの商標)、またはCompactFlash(登録商標)(CF)カード(カリフォルニア州ミルピタスのサンディスク コーポレーションの商標)などのメモリカードであり得る。他の例として、データストレージデバイス102は、実例として、eMMC(登録商標)(バージニア州アーリントンのJEDEC Solid State Technology Associationの商標)メモリおよびeSDメモリなどの、ホストデバイス130内のソリッドステートドライブ(SSD)または埋め込みメモリであり得る。
メモリ104はフラッシュメモリを含み得る。例えば、メモリ104は、NANDフラッシュデバイス、NORフラッシュデバイス、または他の任意のタイプのフラッシュデバイスなどの、フラッシュデバイスの不揮発性メモリであり得る。メモリ104は、マルチレベルセル(MLC)メモリのメモリセルなどの、複数の記憶素子を含む。
コントローラ106は、データストレージデバイス102がホストデバイス130に動作可能に結合されている間、ホストデバイス130からメモリアクセス要求を受け取るように構成され得る。例えば、コントローラ106は、ホストデバイス130からデータ140を受け取り、データ140を符号化して符号語149を生成し、符号語149をメモリ104に格納するように構成され得る。コントローラ106は、データ140を取り出す要求をホストデバイス130から受け取るようにも構成され得る。これに応答して、コントローラ106は、メモリ104から符号語159を読み出し、符号語159の要求された1つ以上の部分を、符号語159の要求された部分に生じているかも知れないビットエラーを訂正するために、復号化し、復号化済みデータ170をホストデバイス130に提供するように構成され得る。符号語159は符号語149の1つの表現であり得る。すなわち、符号語159は、メモリ104での格納中に生じたかもしれない1つ以上のビットエラーに起因して符号語149とは異なり得る。
コントローラ106は、代数符号に基づくマルチフェーズECC復号化を可能にするためにデータを符号化するように構成されたマルチフェーズECC符号化エンジン110を含む。マルチフェーズECC符号化エンジン110は、第1のECCエンコーダ112、第2のECCエンコーダ114、第3のECCエンコーダ116、および第4のECCエンコーダ118を含み得る。コントローラ106は、代数符号に基づくマルチフェーズECC復号化に従ってデータを復号化するように構成されたマルチフェーズECC復号化エンジン120を含む。ECC復号化エンジン120は、第1のECCデコーダ122、第2のECCデコーダ124、第3のECCデコーダ126、および第4のECCデコーダ128を含み得る。
第1のECCエンコーダ112は、第1の代数符号に従ってデータを符号化してパリティビットの第1のセットを生成するように構成される。例えば、第1の代数符号はハミング符号、リードソロモン(RS)符号、あるいはボーズ−チャウドリ−ホッケンゲム(BCH)符号であり得る。本願明細書で用いられる「代数符号」は、生成多項式により定義される任意の巡回(または非巡回)符号を含むことができ、ターボ符号および低密度パリティチェック(LDPC)などの反復符号化方式を除外する。特別な例として、第1のECCエンコーダ112は、次数m1 の多項式生成関数g1 (x)を入力データに適用してm1 個の第1のパリティビットのセットを生成することができる。パリティビットの第1のセットは、メモリ104から取り出されたデータの第1の復号化フェーズの間に用いられ得る。
第2のECCエンコーダ114は、データを第2の代数符号に従って符号化してパリティビットの第2のセットを生成するように構成される。第2の代数符号は第1の代数符号より強力であり得る(すなわち、より強いエラー訂正能力を提供し得る)。例えば、第2のECCエンコーダ114は、次数m1 +m2 の多項式生成関数g(x)を適用してm1 +m2 個の第2のパリティビットを生成することができる。第2のECCエンコーダ114は次数m1 +m2 の多項式生成関数g(x)=g1(x)・g2(x)を適用することができ、ここでg1(x)は(次数m1 を有する)第1の代数符号の多項式生成関数であり、g2(x)は追加のm2 個のパリティビットを生成する次数m2 の多項式生成関数である。パリティビットの第2のセットは、メモリ104から取り出されたデータの第2の復号化フェーズの間に用いられ得る。
第3のECCエンコーダ116は、データを第3の代数符号に従って符号化してパリティビットの第3のセットを生成するように構成される。図2〜4に関して以下でさらに詳しく記述するように、第3の代数符号は、ジョイントパリティビットを生成するために(第2のECCエンコーダ114の出力に基づいて)ジョイント情報ビットの複数のセットの部分に適用され得る。
第4のECCエンコーダ118は、データを第4の代数符号に従って符号化してパリティビットの第4のセットを生成するように構成される。第4の代数符号は、ジョイントパリティ保護ビットを形成するためにジョイントパリティビットに適用され得る。
マルチフェーズECC符号化エンジン110は、データ140などのデータを情報ビットの複数のセット(i1 141,・・・ir 142)として第1のECCエンコーダ112に提供して情報ビットの各セットのためにパリティビット(p)の第1のセット(すなわち、パリティビットの第1のセットp1 143,・・・pr 144、ここでセットpi の各々はm1 個のパリティビットをそれぞれ含む)を生成することによって符号語149を生成するように構成される。マルチフェーズECC符号化エンジン110は、情報ビットの各セットのためにパリティビットの第2のセット(p(2) )(すなわち、それぞれ、パリティビットの第2のセットp1 (2) 145,・・・pr (2) 146、ここでpi (2) の各々はm1 +m2 個のパリティビットを含む)を生成するために情報ビットの各セットと第1のパリティビットの対応するセットとを第2のECCエンコーダ114に提供するように構成される。マルチフェーズECC符号化エンジン110は、第3のECCエンコーダ116において、符号語の第3のセットを生成するように構成されるが、第3の符号語の情報ビットは第2の符号語に基づくものとし(例えば、第2の符号語のパリティビットp(2) の部分からなどの、第2の符号語のパリティビットに基づくものとし)、さらにデータ140のためにジョイントパリティビット(pJ )147を生成するように構成され得る。マルチフェーズECC符号化エンジン110は、データ140のためにジョイントパリティ保護ビット(pJP)148を生成するためにジョイントパリティビット147を第4のECCエンコーダ118に提供するように構成され得る。
マルチフェーズECC符号化エンジン110は、情報ビットの複数のセット141〜142、第1のパリティビットの複数のセット143〜144、ジョイントパリティビット147、およびジョイントパリティ保護ビット148を含む符号語149を生成するように構成され得る。p(2) パリティビットのセット145〜146は、メモリ104に格納されずに廃棄されてもよい。
第1のECCデコーダ122は、第1のECCエンコーダ112により使用された第1の代数符号に従ってデータを復号化するように構成される。第1のECCデコーダ122は、情報ビットのセットおよびパリティビットの対応する第1のセットを受け取ってECC復号化動作を行うように構成される。情報ビットおよび第1のパリティビットのビットエラーの数が第1の代数符号のエラー訂正能力を超えなければ、第1のECCデコーダ112は情報ビットの復号化されたセット(すなわち、情報ビットのセットのエラー訂正済みバージョン)を生成する。そうでなければ、情報ビットおよび第1のパリティビットのエラーの数が第1の代数符号のエラー訂正能力を超えていることに応答して、第1のECCデコーダ112は復号化失敗インジケータを生成する。
第2のECCデコーダ124は、第2のECCエンコーダ114により使用された第2の代数符号に従ってデータを復号化するように構成される。第2のECCデコーダ124は、情報ビットのセットおよびパリティビットの対応する第2のセットを受け取り、ECC復号化動作を行って情報ビットのセットのエラー訂正済みバージョンを生成するように構成される。
第3のECCデコーダ126は、第3のECCエンコーダ126により使用された第3の代数符号に従ってデータを復号化するように構成される。図2〜4に関してさらに詳しく記述するように、第3の代数符号は、第3の符号語のセットの中のエラーあるいは消去を訂正して第3の符号語のセットのエラー訂正済みバージョンを生成するために第3の符号語のセットの部分に適用され得る。
第4のECCデコーダ128は、第4のECCエンコーダ128により使用された第4の代数符号に従ってデータを復号化するように構成される。第4のECCデコーダ128は、ジョイントパリティビットおよびジョイントパリティ保護ビットを受け取って、ジョイントパリティビットのエラーを訂正してジョイントパリティビットのエラー訂正済みバージョンを生成するためにECC復号化動作を行う。
マルチフェーズECC復号化エンジン120は、取り出された符号語159からの情報ビットの1つ以上の要求されたセットおよび対応する第1のパリティビット(例えば、i1 151およびp1 153)を第1のECCデコーダ122に提供することによってECC復号化の第1のフェーズを実行するように構成される。取り出された符号語159からの情報ビットの要求された全セット151〜152が第1のECCデコーダ122によって首尾よく復号化されたならば、取り出された符号語159の復号化処理を終わることができ、また要求された復号化済みデータを復号化済みデータ170としてホストデバイス130に提供することができる。
そうでなければ、取り出された符号語159からの情報ビットの少なくとも1つの要求されたセットが第1のECCデコーダ122によって首尾よく復号化されなかったときには、マルチフェーズ復号化エンジン120は、取り出された符号語159の情報ビットの全てのセット151〜152の復号化処理を開始するように構成される。従って、取り出された符号語159の情報ビットの全てのセット151〜152が、対応する第1のパリティビット153〜154を用いて復号化を試みるために第1のECCデコーダ122に提供される。
マルチフェーズ復号化エンジン120は、第1のECCデコーダ122により首尾よく復号化された情報ビットおよび第1のパリティビットのセット(例えば、i1 141)を第2のECCエンコーダ114に提供して、情報ビットの各々の首尾よく復号化されたセットについてp(2) パリティビット(例えば、p1 (2) 145)を生成することによって復号化処理の第2のフェーズを開始するように構成され得る。
マルチフェーズ復号化エンジン120は、ジョイントパリティビット157およびジョイントパリティ保護ビット158を第4のECCデコーダ128に提供して復号化済みジョイントパリティビット147を生成するように構成され得る。首尾よく復号化された情報ビットの各セットについての復号化済みジョイントパリティビット147およびp(2) パリティビットの生成されたセット171は、第3の符号語のセットからの符号語を復号化するために第3のECCデコーダ116に提供され得る。マルチフェーズ復号化エンジン120は、復号化済みの第3の符号語172を処理して、情報ビットの各々の未復号化セットについてのp(2) パリティビットを生成するように構成され得る。情報ビットの未復号化セットと関連付けられている復号化済みの第3の符号語ビット(例えば、W1 (x))は、図2に関して記述するように、第1の生成多項式で除された第2のパリティビットの第2のセットであるものとして、情報ビットの未復号化セット(例えば、p1 (2) )についての第2のパリティビットのセットに対応し得る(例えば、W1 (x)=p1 (2) (x)/g1 (x))。生成されたp(2) パリティビットは、第2の、より強力な代数符号を用いて復号化を行って復号化済み情報ビット175を生成するために、未復号化情報ビット174とともに第2のECCデコーダ124に提供され得る。
動作中、データストレージデバイス102がホストデバイス130に動作可能に結合されている間にデータストレージデバイス102はホストデバイス130からデータ140を受け取ることができる。コントローラ106は、データ140をマルチフェーズECC符号化エンジン110に提供して第1のECCエンコーダ112において第1のパリティビットのセット143〜144を生成することができる。マルチフェーズECC符号化エンジン110は、第2のECCエンコーダ114において第2のパリティビットのセット145〜146を生成するために情報ビットのセット141〜142および第1のパリティビットのセット143〜144を提供することができる。マルチフェーズECC符号化エンジン110は、第2のパリティビットのセット145〜146を第3のECCエンコーダ116に提供してジョイントパリティビットのセット147を生成することができる。マルチフェーズECC符号化エンジン110は、ジョイントパリティビットのセット147を第4のECCエンコーダ118に提供してジョイントパリティ保護ビット148を生成することができる。コントローラ106は、符号語149を格納するためにメモリ104に送ることができる。
符号化プロセスにより生成されたビットの全てが保存されるわけではない。具体的に説明すると、第2のエンコーダにより生成されたr・m2 個のパリティビット(例えば、r個の符号語の1つずつについてそれぞれm2 個のパリティビット)が符号語149の部分として格納されなくてもよく、代わりに第3のエンコーダのジョイントパリティビット147が格納され、これにより高価な記憶空間を節約する。廃棄されたビットは、必要ならば復号化の間に再構築され得る。
データストレージデバイス102は、データストレージデバイス102がホストデバイス130に動作可能に結合されている間に、データ140の1つ以上の部分を求める要求をホストデバイス130から受け取り得る。コントローラ106は、メモリから符号語159を取り出し、情報ビットの要求されたセット151〜152の第1のフェーズ復号化を第1のパリティビットの対応するセット153〜154を用いて開始することができる。情報ビットの要求されたセット151〜152の全てが第1のフェーズで首尾よく復号化されたならば、その復号化されたデータがホストデバイス130に提供される。
要求された情報ビットの1つ以上のセットが第1の復号化フェーズの間に正しく復号化され得なかったならば、マルチフェーズECC復号化エンジン120は、ジョイントパリティビットのセット147のエラー訂正済みバージョンを生成するためにジョイントパリティ保護ビット158およびジョイントパリティビットのセット157を第4のECCエンコーダ128に提供することを含む第2の復号化フェーズを開始することができる。第1のフェーズでまだ処理されていない符号語159の情報ビットの全てのセットが第1のECCデコーダ122に提供され、結果として生じた情報ビットのセットのエラー訂正済みバージョンは、第2のパリティビットのセットを生成するために第2のECCエンコーダ114により符号化される。
第2のパリティビットのセットおよびジョイントパリティビット147は、復号化済みの第3の符号語を生成するために第3のECCデコーダ126に提供される。復号化済みの第3の符号語は、情報ビットの復号化済みセットを生成するために第2のECCデコーダ124に提供される第2のパリティビットのセットを生成するために処理され得る。情報ビットの要求されたセットは、復号化済みデータ170としてホストデバイス130に提供され得る。
マルチフェーズECC符号化エンジン110が第4のECCエンコーダ118を含むものとして説明し、マルチフェーズECC復号化エンジン120が第4のECCデコーダ128を含むものとして説明してきたけれども、他の実施形態では第4のECCエンコーダ118および第4のECCデコーダ128は含まれないかもしれない。例えば、ジョイントパリティビット147は、フラッシュメモリのシングルレベルセル(SLC)部分などの、割合に少ないエラー発生と関連するメモリ104の部分に格納され得る。他の1つの例として、情報ビットの各セットについてジョイント情報ビット172が(第2のパリティビットの多項式除算剰余ではなくて)第2のパリティビットと同じである場合、ジョイントパリティビットに発生することのある個々のエラーの影響は軽減される。結果として、ジョイントパリティ保護ビット148を使用せずにエラー訂正の高い確率が達成され得る。
従って、図1は、短いサブ符号に基づく低複雑度の復号化エンジンを用いて、大きなエラー訂正能力を有する長いECC符号を構築するためにジョイントパリティビットのセットを通してBCHサブ符号などの数個の短いサブ符号が互いに結合され得るシステムの例を提供する。さらに、マルチフェーズ復号化方式は、ランダムな読み出しサポートおよび短い復号化待ち時間を考慮して用いられている。各々のサブ符号を別々に復号化するために第1の試行が行われ得る。メモリ104から読み出されるデータの予測エラー率に基づいて、短いサブ符号は、復号化成功という割合に高い確率を提供するように設計され得る。結果として、データはメモリ104から読み出され、コントローラ106に転送され、短いサブ符号が復号化され得る(例えば、i1 141およびp1 143が第1のECCデコーダ122で復号化される)。第1の復号化試行が失敗するという割合に低い確率のイベントにおいて、同じECCブロックに(例えば、符号語159に)属する他のサブ符号もメモリ104から読み出され、コントローラ106に転送され、復号化される。他のサブ符号が首尾よく復号化されたならば、ジョイントパリティビットと、他のサブ符号の復号化の結果とに基づいて、失敗したサブ符号について第2の復号化試行が行われる。第2の復号化試行は、第1の試行より大きなエラー訂正能力を(従って、より低い失敗確立を)有する代数符号を用いる。
マルチフェーズECCエンコーダは、k個の情報ビットのr個のベクトル(1サブ符号あたりに1ベクトル)i 1 ,i 2 ,・・・,i r を受け取ることができ、出力としてm1 個のパリティビットのr個のベクトル(1サブ符号あたりに1ベクトル)p 1 ,p 2 ,・・・,p r を生成することができる。マルチフェーズECCエンコーダは、さらに全サブ符号についてm3 ×m2 個のジョイントパリティビットのベクトルwを生成することができ、ジョイントパリティビットを保護するためのm4 個のパリティビットのベクトルvを生成することができる。
符号化は、マルチフェーズECCエンコーダにおいて、サブ符号あたりにパリティビット(p 1 ,p 2 ,・・・,p r )を計算するとともにジョイントパリティビット(w)を計算することによって実行され得る。サブ符号あたりのパリティビット(p 1 ,p 2 ,・・・,p r )は、各j=1,2,・・・,rについて、多項式除算の商結果Q(x)、
を計算することによって生成され得る。
を計算することによって生成され得る。
第1のパリティpj (x)(次数m1 −1の多項式)あるいはベクトルp j は、
として計算され得る。
第2のパリティビットpj (2)(x)および/またはジョイント情報ビットWj (x)(次数m2 −1の多項式、Wjと等価である)は多項式除算の商結果U(x)、
に従って
として計算され得る。Wj (x)は、
としても計算され得ることに留意するべきである。
代わりに、Wj (x)は、
としても計算され得る。
として計算され得る。
第2のパリティビットpj (2)(x)および/またはジョイント情報ビットWj (x)(次数m2 −1の多項式、Wjと等価である)は多項式除算の商結果U(x)、
に従って
として計算され得る。Wj (x)は、
としても計算され得ることに留意するべきである。
代わりに、Wj (x)は、
としても計算され得る。
ジョイントパリティビット(w)の計算は、ベクトルW j (j=1、2、・・・、r)からm3 ×m2 個のジョイントパリティビット(w)を計算するために符号C3 を用いて実行され得る。図2に示されているように、W j ベクトルをマトリクスの行として配列することができ、符号C3 を用いてマトリクス中のr個のシンボルの各列についてm3 個のパリティシンボルが計算され得る。
図2は、代数符号に基づくマルチフェーズECC復号化に用いられるジョイントパリティビットを生成する特定の実施形態を示す。ジョイント情報ビットのセット202はr個の行(W 1 203、W 2 204、・・・W r 205)を含むマトリクスとして配列されている。前述したように、各行W j は、生成多項式g2 (x)で除されたパリティビットの第2のセットpj (2) に対応し得る(ここで、パリティビットの第2のセットp(2) は生成多項式g(x)=g1 (x)・g2 (x)に基づいている)。代わりの実施形態では、各行W j はパリティビットの第2のセットpj (2)であり得る。代表的なC3 符号語210は、ジョイント情報ビットのセット202の各行からの1ビットと、ジョイントパリティビット(w)147の各行からの1パリティビットとを含む。C3 符号をジョイント情報ビットのセット202の各列に適用することにより(例えば、図1の第3のECCエンコーダ116においてジョイント情報ビットを符号化することにより)、ジョイントパリティビットの各列(w)147に対応するパリティビットが生成される。
図3は、代数符号に基づくマルチフェーズECC復号化に用いられるジョイントパリティビットを生成する特定の実施形態を示し、ここで符号C3 は、単一の消去を訂正し得るシングルパリティ検査符号などのバイナリ符号である(すなわち、GF(2)で除されたC3 (r+1,r,1))。ジョイント情報ビットのセット202はr個の行(W 1 203,W 2 204,・・・W r 205)を含むマトリクスとして配列される。ジョイント情報ビットのセット202の各列のビットにC3 符号を適用すると(排他的論理和(XOR)演算310)、ジョイントパリティビットの対応するパリティビット(w)147が生成される。XOR演算310を使用すれば、割合に複雑度の低いハードウェアを用いてジョイントパリティビット(w)147を生成することが可能となり、列あたりに単一の消去を訂正することが可能となる。結果として、r個の行のうちの1つを除いて他の全てが生成されたならば、その欠けている行はジョイントパリティビット(w)147を用いて復元され得る。
図4は、符号語410の各々の非バイナリシンボルがジョイント情報ビットのセット202の単一の行のビットから形成されることを示しているけれども、他の実施形態では、符号語410のシンボルはジョイント情報ビットのセット202の複数の行にわたり得る。具体的に説明すると、単一のシンボルが、1つの列に存する行W 1 203からの1ビットと、他の列に存する行W 2 204からの他の1ビットとを含み得る。第2のフェーズの復号化に関してさらに詳しく記述するように、ジョイント情報ビットのセット202の複数の行にわたるマルチビットシンボルを用いることにより、第1のフェーズの復号化失敗に対する付加的な耐性が提供され得る。
ジョイントパリティビットを保護するためのパリティビット(v)(例えば、図1のジョイントパリティ保護ビット148)の計算は、m3 ×m2 個のジョイントパリティビットwを保護するためのm4 個のパリティビット(v)を計算するために符号C4 (n4 =m3 ×m2 +m4 ,k4 =m3 ×m2 ,t4 )を用いて行われ得る。例えば、図1の第4のECCエンコーダ118は、ジョイントパリティ保護ビット148を生成するためにジョイントパリティビット147を符号化することができる。
メモリに格納されるビットの総数は、i 1 ,i 2 ,・・・,i r ,p 1 ,p 2 ,・・・,p r ,w,およびvの格納(例えば、i1 ・・・ir 141〜142,p1 ・・・pr 143〜144,pJ 147,およびpJP148を含む図1の符号語149の格納)に対応するr×k+r×m1 +m2 ×m3 +m4 であり得る。具体的に説明すると、k個の情報ビットのr個のセット(i)を格納することはr×kビットを格納する結果をもたらす。第1のパリティビットのr個のセット(p)を格納すれば、第1のパリティビットの各セットがm1 個のビットを含み、r×m1 ビットが格納されるという結果がもたらされる。ジョイントパリティビットのm3 個の行(w)を格納すれば、各行がm2 ビットを有し、m2 ×m3 ビットが格納されるという結果がもたらされる。ジョイントパリティ保護ビット(v)を格納すれば、m4 ビットが格納されるという結果がもたらされる。
第1のフェーズ復号化において首尾よく復号化された各サブ符号jについて、
を計算するためにi j およびp j が使用され得る。
サブ符号jの第3の符号語C3 への寄与は、
として生成され得る。
代わりに、Wj (x)が、
として生成され得る。符号の定義は既知であると仮定されているので、g1 (x)およびg2 (x)はデコーダにおいて既知であり得るということに留意するべきである。さらに、特定の実施例の場合では、Wj (x)の計算は、
を、次に
を計算することにより実行され得るということにも留意するべきである。
を計算するためにi j およびp j が使用され得る。
サブ符号jの第3の符号語C3 への寄与は、
として生成され得る。
代わりに、Wj (x)が、
として生成され得る。符号の定義は既知であると仮定されているので、g1 (x)およびg2 (x)はデコーダにおいて既知であり得るということに留意するべきである。さらに、特定の実施例の場合では、Wj (x)の計算は、
を、次に
を計算することにより実行され得るということにも留意するべきである。
代数符号を用いるマルチフェーズ復号化は、在来のECC符号化と比べて所与の量の冗長性についてほぼ同じエラー訂正能力を維持すると同時に複雑度および復号化待ち時間を著しく低減することができる。幾つかの例が表1に示されている。表1の例では、マルチフェーズ符号語(例えば、図1の符号語149)は、932Bにはまり込み、8KBブロックあたりに<10-10 のブロックエラー率を提供する。基準として、在来の122b/2KB BCHが用いられ得る。
表1
・基準:在来のBCH:kref =2KB、tref =122
・例1:r=8、k=1KB、t1 =64、t2 =79、t3 =1、t4 =8
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
・例2:r=4、k=1KB、t1 =62、t2 =76、t3 =1、t4 =7
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
・例3:r=2、k=1KB、t1 =56、t2 =72、t3 =1、t4 =8
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
・例4:r=8、k=0.5KB、t1 =31、t2 =46、t3 =2、t4 =11
(C1 、C2 、C4 はBCH符号であり、C3 はGF(16)で除されたRS符号である。)
・例5:r=8、k=0.5KB、t1 =34、t2 =45、t3 =1、t4 =6
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
・基準:在来のBCH:kref =2KB、tref =122
・例1:r=8、k=1KB、t1 =64、t2 =79、t3 =1、t4 =8
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
・例2:r=4、k=1KB、t1 =62、t2 =76、t3 =1、t4 =7
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
・例3:r=2、k=1KB、t1 =56、t2 =72、t3 =1、t4 =8
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
・例4:r=8、k=0.5KB、t1 =31、t2 =46、t3 =2、t4 =11
(C1 、C2 、C4 はBCH符号であり、C3 はGF(16)で除されたRS符号である。)
・例5:r=8、k=0.5KB、t1 =34、t2 =45、t3 =1、t4 =6
(C1 、C2 、C4 はBCH符号であり、C3 はシングルパリティ検査符号である。)
長さがnref で訂正能力がtref である在来のBCH符号化方式と比べて、符号C1 、C2 およびC4 がBCH符号であり符号C3 がシングルパリティ検査符号またはRS符号であるときの、代数符号を用いるマルチフェーズECCの複雑度改善は、
により与えられ得る。
長さnref の在来のBCH符号化方式と比べて、代数符号を用いるマルチフェーズECCの待ち時間の改善は、待ち時間比=n1 /nref により与えられ得る。
第1の復号化フェーズの間にサブ符号が失敗する確率は小さいかもしれないので(例えば、10-5未満なので)、待ち時間比は第1の復号化段階により主として決まる復号化待ち時間に基づくことができる。
により与えられ得る。
長さnref の在来のBCH符号化方式と比べて、代数符号を用いるマルチフェーズECCの待ち時間の改善は、待ち時間比=n1 /nref により与えられ得る。
第1の復号化フェーズの間にサブ符号が失敗する確率は小さいかもしれないので(例えば、10-5未満なので)、待ち時間比は第1の復号化段階により主として決まる復号化待ち時間に基づくことができる。
図5を参照すると、データを符号化する方法500の特定の実施形態のフローチャートが描かれている。方法500は、図1のデータストレージデバイス102などのデータストレージデバイスで実行され得る。502で、情報ビットの第1のセットに対応する第1のパリティビットの第1のセットを生成するとともに情報ビットの第2のセットに対応する第1のパリティビットの第2のセットを生成するために、第1のエラー訂正符号と関連する第1の符号化動作が開始され得る。第1のエラー訂正符号は代数符号である。例えば、第1の符号化動作は、図1の第1のECCエンコーダ112において、情報ビットの第1のセットを第1のECCエンコーダ112の符号化入力に提供し、第1のECCエンコーダ112の制御入力に信号を送って第1のECCエンコーダに符号化入力に存する情報ビットの第1のセットを読ませ、情報ビットの第1のセットに対して第1の符号化動作を実行させることによって、開始され得る。
504で、情報ビットの第1のセットに対応する第2のパリティビットの第1のセットを生成するとともに情報ビットの第2のセットに対応する第2のパリティビットの第2のセットを生成するために、第2のエラー訂正符号と関連する第2の符号化動作が開始される。第2のエラー訂正符号は、第1のエラー訂正符号より大きなエラー訂正能力を有する他の1つの代数符号である。例えば、第2の符号化動作は、図1の第2のECCエンコーダ114において、情報ビットの第1のセットを第2のECCエンコーダ114の符号化入力に提供し、第2のECCエンコーダ114の制御入力に信号を送って第2のECCエンコーダ114に符号化入力に存する情報ビットの第1のセットを読ませ、情報ビットの第1のセットに対して第2の符号化動作を実行させることによって、開始され得る。
506で、ジョイント情報ビットのセットに対応するジョイントパリティビットのセットを生成するために第3の符号化動作が開始される。ジョイント情報ビットのセットは、情報ビットの第1のセットおよび情報ビットの第2のセットと関連付けられている。例えば、第1のエラー訂正符号は第1の生成多項式g1 (x)に対応することができ、ジョイント情報ビットのセットは、第1の生成多項式で除された第2のパリティビットの第1のセットを含むことができる(例えば、W1 (x)=p(2) (x)/g1 (x))とともに第1の生成多項式で除された第2のパリティビットの第2のセットを含むことができる(W2 (x)=p2 (2) (x)/g1 (x))。第3の符号化動作は、ジョイント情報ビットのセットを生成し、ジョイント情報ビットのセットを第3のECCエンコーダ116の符号化入力に提供し、第3のECCエンコーダ116の制御入力に信号を送って、第3のECCエンコーダ116に符号化入力に存するジョイント情報ビットのセットを読ませ、ジョイント情報ビットのセットに対して第3の符号化動作を実行させることによって、図1の第3のECCエンコーダ116において開始され得る。一例として、ジョイント情報ビットのセットは図2〜4に示されているようにマトリクスに配列され、マトリクスの列のシーケンス(あるいは列のセット)として符号化入力に提供され得る。例えば、第3の符号化動作は、図3に関して記述したように、単一の消去を訂正し得るシングルパリティ検査符号を含み得る。他の一例として、第3の符号化動作は、図4に関して記述したように、非バイナリ代数符号を含み得る。
方法500は、508で、情報ビットの第1のセット、情報ビットの第2のセット、第1のパリティビットの第1のセット、第1のパリティビットの第2のセット、およびジョイントパリティビットをデータストレージデバイスのメモリに単一の符号語として格納することも含む。
例えば、その単一の符号語は、図1の符号語149であり得る。
例えば、その単一の符号語は、図1の符号語149であり得る。
方法500は、図1の第4のECCエンコーダ128によるなどして、ジョイントパリティビットに対応するジョイントパリティ保護ビットのセットを生成するために第4の符号化動作を開始することも含み得る。単一の符号語は、ジョイントパリティ保護ビットのセットをさらに含み得る。第4の符号化動作は、ジョイントパリティビットのセットを第4のECCエンコーダ118の符号化入力に提供し、第4のECCエンコーダ118の制御入力に信号を送って第4のECCエンコーダ118に符号化入力に存するジョイントパリティビットのセットを読ませ、ジョイントパリティビットのセットに対して第4の符号化動作を実行させることによって、開始され得る。
代数符号に基づくマルチフェーズECC復号化を可能にするために情報を符号化することにより、マルチフェーズECC復号化方式と同等のエラー訂正能力を有するBCH符号と比べて短縮された待ち時間で短いサブ符号を復号化する第1の復号化フェーズが実行され得る。第2の復号化フェーズは、同等のエラー訂正能力を有するBCH符号と比べて縮減されたメモリストレージ要件を有するより長い符号に基づくより強力なECC保護を提供し得る。代数符号を用いるECCは、ターボ符号またはLDPCなどの反復復号化方式と比べてデコーダ複雑度および復号化待ち時間を低減することができる。
図6を参照すると、データを復号化する方法600の特定の実施形態のフローチャートが描かれている。方法600は、図1のデータストレージデバイス102などのデータストレージデバイスで実行され得る。
復号化の第1のフェーズの間に、602で、第1のエラー訂正符号と関連する第1の復号化動作が開始される。第1の復号化動作は、符号語の情報ビットの第1のセットおよび第1のパリティビットの第1のセットを用いる。第1のエラー訂正符号は代数符号である。例えば、第1の復号化動作は、図1の第1のECCデコーダ122において、情報ビットの第1のセットおよびパリティビットの第1のセットを第1のECCデコーダ122の復号化入力に提供し、第1のECCデコーダ122の制御入力に信号を送って第1のECCデコーダ122に復号化入力に存する情報ビットの第1のセットおよびパリティビットの第1のセットを読ませ、第1の復号化動作を実行させることによって、開始され得る。図1の符号語159などの符号語は、情報ビットの第2のセット、第1のパリティビットの第2のセット、およびジョイントパリティビットのセットをさらに含む。
復号化の第2のフェーズは、604で、第1の復号化動作での復号化失敗に応答して開始される。第2のフェーズは、606で、情報ビットの第2のセットおよびパリティビットの第2のセットを用いる第2の復号化動作を開始することを含む。第2の復号化動作は、第1のエラー訂正符号と関連付けられる。例えば、第2の復号化動作は、図1の第1のECCデコーダ122において、情報ビットの第2のセットおよびパリティビットの第2のセットを第1のECCデコーダ122の復号化入力に提供し、第1のECCデコーダ122の制御入力に信号を送って第1のECCデコーダ122に復号化入力に存する情報ビットの第2のセットおよびパリティビットの第2のセットを読ませ、第2の復号化動作を実行させることによって、開始され得る。
第2のフェーズは、606で、情報ビットの第2のセットに対応する第2のパリティビットの第2のセットを生成するために第2のエラー訂正符号と関連付けられた符号化動作を開始することを含む。第2のエラー訂正符号は、第1のエラー訂正符号より大きなエラー訂正能力を有する他の1つの代数符号である。例えば、符号化動作は、情報ビットの第2のセットを第2のECCエンコーダ114の符号化入力に提供し、第2のECCエンコーダ114の制御入力に信号を送って第2のECCエンコーダ114に符号化入力に存する情報ビットの第2のセットを読ませ、情報ビットの第2のセットに対して符号化動作を実行させることによって、図1の第2のECCエンコーダ114において開始され得る。
第2のフェーズは、608で、第2のパリティビットの第2のセットに対応するジョイントパリティビットおよびジョイント情報ビットのセットを用いて第2のパリティビットの第1のセットに対応するジョイント情報ビットを生成する第3の復号化動作を開始することを含む。第2のパリティビットの第1のセットは第1の情報ビットと関連付けられている。例えば、第1のエラー訂正符号は、g1 (x)などの第1の生成多項式に対応し得る。第2のパリティビットの第2のセットに対応するジョイント情報ビット(例えば、W2 (x))は、第1の生成多項式で除された第2のパリティビットの第2のセットを含み得る(例えば、p(2) (x)/g1 (x))。一例として、第3の復号化動作は、パリティビットの第2のセットに対応するジョイント情報ビットを含む(ただし、情報ビットの第1のセットに対応するジョイント情報ビットを除く)ジョイント情報ビットのセットを生成し、ジョイント情報ビットのセットおよびジョイントパリティビットを第3のECCデコーダ126の復号化入力に提供し、第3のECCデコーダ126の制御入力に信号を送って、第3のECCデコーダ126に復号化入力に存するジョイント情報ビットのセットおよびジョイントパリティビットのセットを読ませ、ジョイント情報ビットのセットおよびジョイントパリティビットのセットに対して第3の復号化動作を実行させることによって、図1の第3のECCデコーダ126において開始され得る。
第2のフェーズは、610で、情報ビットの第1のセットおよび第2のパリティビットの第1のセットを用いて第4の復号化動作を開始することも含む。第4の復号化動作は、第2のエラー訂正符号と関連付けられる。例えば、第4の復号化動作は、情報ビットの第1のセットおよび第2のパリティビットの第1のセットを第2のECCデコーダ124の復号化入力に提供し、第2のECCデコーダ124の制御入力に信号を送って第2のECCデコーダ124に復号化入力に存する情報ビットの第1のセットおよび第2のパリティビットの第1のセットを読ませ、第4の復号化動作を実行させることによって、図1の第2のECCデコーダ124において開始され得る。
或る実施形態では、符号語はジョイントパリティ保護ビットのセットをさらに含み、第2のフェーズは、ジョイントパリティビットのセットおよびジョイントパリティ保護ビットのセットを用いて、第3の復号化動作を開始する前にジョイントパリティビットのセットの中のエラーを訂正するジョイントパリティ復号化動作を開始することを含む。例えば、ジョイントパリティ復号化動作は図1の第4のECCデコーダ128で実行され得る。一例として、ジョイントパリティ復号化動作は、図3に関して記述したように単一の消去を訂正できるシングルパリティ検査符号に基づくことができる。他の例として、ジョイントパリティ復号化動作は、図4に関して記述したように非バイナリ代数符号に基づくことができる。
代数符号に基づくマルチフェーズECC復号化を用いて復号化を行うことにより、マルチフェーズECC復号化方式と同等のエラー訂正能力を有するBCH符号と比べて縮減された待ち時間および複雑度を有する短いサブ符号を復号化する第1の復号化フェーズが実行され得る。第2の復号化フェーズは、同等のエラー訂正能力を有するBCH符号と比べて縮減されたメモリストレージ要件を有するより長い符号に基づくより強力なECC保護を提供し得る。代数符号を用いるECCは、ターボ符号またはLDPCなどの反復復号化方式と比べてデコーダ複雑度および復号化待ち時間を低減することができる。
本願明細書において述べられている種々のコンポーネントをブロックコンポーネントとして図に示して一般的用語で記述しているけれども、そのようなコンポーネントは、図1のデータストレージデバイス102などのデータストレージデバイスがそのようなコンポーネントに備わっている特定の機能またはその組み合わせを実行することを可能にするように構成された1つ以上のマイクロプロセッサ、状態マシン、または他の回路を含むことができる。例えば、図1のマルチフェーズECC符号化エンジン110およびマルチフェーズECC復号化エンジン120の一方または両方は、代数符号を用いるマルチフェーズECC方式に従ってデータの符号化および復号化を可能にするプロセッサ、状態マシン、論理回路、または他の構造などの物理的コンポーネントを代表することができる。
図1のマルチフェーズECC符号化エンジン110およびマルチフェーズECC復号化エンジン120の一方または両方は、マイクロプロセッサまたはマイクロコントローラを用いて実装され得る。特定の一実施形態では、マルチフェーズECC復号化エンジン120は、メモリ104に格納されている命令を実行するプロセッサを含む。代わりに、あるいはこのことに加えて、実行可能な命令は、読み出し専用メモリ(ROM)など、メモリ104の一部ではない別の記憶場所に格納され得る。
特定の一実施形態では、データストレージデバイス102は、1つ以上の外部デバイスに選択的に結合されるように構成された携帯可能なデバイスであり得る。例えば、データストレージデバイス102は、ユニバーサルシリアルバス(USB)フラッシュドライブまたは取り外し可能なメモリカードなどの取り外し可能なデバイスであり得る。しかし、他の実施形態では、データストレージデバイス102を、携帯可能な通信装置のハウジングの中など、1つ以上のホストデバイスに取り付けるかあるいは埋め込むことができる。例えば、データストレージデバイス102は、内部不揮発性メモリを用いる無線電話機、個人用携帯情報端末(PDA)、ゲームデバイスもしくはコンソール、携帯ナビゲーションデバイス、コンピュータ、または他のデバイスなどのパッケージ装置の中に存在し得る。特定の一実施形態では、データストレージデバイス102は、フラッシュメモリ(例えば、NAND、NOR、マルチレベルセル(MLC)、ディバイデッドビットラインNOR(DINOR)、AND、ハイキャパシティブカップリングレシオ(HiCR)、非対称コンタクトレストランジスタ(ACT)、あるいは他のフラッシュメモリ)、消去可能でプログラム可能な読み出し専用メモリ(EPROM)、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、読み出し専用メモリ(ROM)、ワンタイムプログラマブルメモリ(OTP)、あるいは他の任意のタイプのメモリなどの、不揮発性メモリを含む。
本願明細書に記載した実施形態についての説明は、種々の実施形態の全般的理解を提供するように意図されている。本願明細書で開示した範囲から逸脱せずに構造的および論理的置換および変更が行われ得るように、他の実施形態が利用され、このような開示から引き出され得る。この開示は、種々の実施形態のありとあらゆる爾後適合あるいはバリエーションを包含するように意図されている。
前に開示された主題は実例を示すものであって、限定をするものではないと見なされなければならず、添付されている特許請求の範囲は、本願明細書で開示した範囲に属するようなすべての改変、向上、および他の実施形態を包含するように意図されている。従って、法により許される最大限度まで、本発明の範囲は、添付されている特許請求の範囲およびそれらの同等物の最大限に広い許容可能な解釈により決定されるべきであり、前述した詳細な記述により制限あるいは限定されてはならない。
Claims (22)
- データを符号化する方法であって、
データストレージデバイスにおいて、
情報ビットの第1のセットに対応する第1のパリティビットの第1のセットを生成するとともに情報ビットの第2のセットに対応する第1のパリティビットの第2のセットを生成するために、代数符号である第1のエラー訂正符号と関連付けられた第1の符号化動作を開始するステップと、
情報ビットの第1のセットに対応する第2のパリティビットの第1のセットを生成するとともに情報ビットの第2のセットに対応する第2のパリティビットの第2のセットを生成するために、第1のエラー訂正符号より大きなエラー訂正能力を有する他の代数符号である第2のエラー訂正符号と関連付けられた第2の符号化動作を開始するステップと、
情報ビットの第1のセットおよび情報ビットの第2のセットと関連付けられるジョイント情報ビットのセットに対応するジョイントパリティビットのセットを生成するために、第3の符号化動作を開始するステップと、
情報ビットの第1のセット、情報ビットの第2のセット、第1のパリティビットの第1のセット、第1のパリティビットの第2のセットおよびジョイントパリティビットを単一の符号語として前記データストレージデバイスのメモリに格納するステップと、
を実行することを含む方法。 - 請求項1記載の方法において、
ジョイントパリティビットに対応するジョイントパリティ保護ビットのセットを生成するために、第4の符号化動作を開始するステップをさらに含み、
単一の符号語は、ジョイントパリティ保護ビットのセットをさらに含む方法。 - 請求項1記載の方法において、
第3の符号化動作は、単一の消去を訂正し得るシングルパリティ検査符号を含む方法。 - 請求項1記載の方法において、
第3の符号化動作は、非バイナリ代数符号を含む方法。 - 請求項1記載の方法において、
第1のエラー訂正符号は、第1の生成多項式に対応し、
ジョイント情報ビットのセットは、第1の生成多項式で除された第2のパリティビットの第1のセットを含むとともに第1の生成多項式で除された第2のパリティビットの第2のセットを含む方法。 - データを復号化する方法であって、
データストレージデバイスにおいて、
復号化の第1のフェーズの間に、第1のエラー訂正符号と関連付けられた第1の復号化動作を開始するステップと、
第1の復号化動作での復号化失敗に応答して復号化の第2のフェーズを開始するステップと、を実行することを含み、
第1の復号化動作は、符号語の情報ビットの第1のセットおよび第1のパリティビットの第1のセットを用い、
第1のエラー訂正符号は、代数符号であり、
符号語は、情報ビットの第2のセット、第1のパリティビットの第2のセットおよびジョイントパリティビットのセットをさらに含み、
前記第2のフェーズには、
情報ビットの第2のセットおよびパリティビットの第2のセットを用いて、第1のエラー訂正符号と関連付けられる第2の復号化動作を開始し、
情報ビットの第2のセットに対応する第2のパリティビットの第2のセットを生成するために、第1のエラー訂正符号より大きなエラー訂正能力を有する他の代数符号である第2のエラー訂正符号と関連付けられた符号化動作を開始し、
第1の情報ビットと関連付けられる第2のパリティビットの第1のセットに対応するジョイント情報ビットを生成するために、第2のパリティビットの第2のセットに対応するジョイントパリティビットおよびジョイント情報ビットのセットを用いて第3の復号化動作を開始し、かつ
情報ビットの第1のセットおよび第2のパリティビットの第1のセットを用いて、第2のエラー訂正符号と関連付けられる第4の復号化動作を開始することが含まれる方法。 - 請求項6記載の方法において、
符号語は、ジョイントパリティ保護ビットのセットをさらに含み、
前記方法は、第3の復号化動作を開始する前にジョイントパリティビットのセットの中のエラーを訂正するためにジョイントパリティビットのセットおよびジョイントパリティ保護ビットのセットを用いるジョイントパリティ復号化動作を開始するステップをさらに含む方法。 - 請求項7記載の方法において、
ジョイントパリティ復号化動作は、単一の消去を訂正し得るシングルパリティ検査符号に基づく方法。 - 請求項7記載の方法において、
ジョイントパリティ復号化動作は、非バイナリ代数符号に基づく方法。 - 請求項6記載の方法において、
第1のエラー訂正符号は、第1の生成多項式に対応し、
第2のパリティビットの第2のセットに対応するジョイント情報ビットは、第1の生成多項式で除された第2のパリティビットの第2のセットを含む方法。 - データストレージデバイスであって、
メモリと、
マルチフェーズエラー訂正符号(ECC)エンコーダと、を備え、
前記マルチフェーズECCエンコーダは、
代数符号である第1のエラー訂正符号と関連付けられ、情報ビットの第1のセットに対応する第1のパリティビットの第1のセットを生成するとともに情報ビットの第2のセットに対応する第1のパリティビットの第2のセットを生成するように構成された第1のエンコーダと、
第1のエラー訂正符号より大きなエラー訂正能力を有する他の代数符号である第2のエラー訂正符号と関連付けられ、情報ビットの第1のセットに対応する第2のパリティビットの第1のセットを生成するとともに情報ビットの第2のセットに対応する第2のパリティビットの第2のセットを生成するように構成された第2のエンコーダと、
情報ビットの第1のセットおよび情報ビットの第2のセットと関連付けられるジョイント情報ビットのセットに対応するジョイントパリティビットのセットを生成するように構成された第3のエンコーダと、を備え、かつ
前記メモリに格納されるべき情報ビットの第1のセット、情報ビットの第2のセット、第1のパリティビットの第1のセット、第1のパリティビットの第2のセットおよびジョイントパリティビットを含む符号語を生成するように構成されるデータストレージデバイス。 - 請求項11記載のデータストレージデバイスにおいて、
前記マルチフェーズECCエンコーダは、
ジョイントパリティビットに対応するジョイントパリティ保護ビットのセットを生成するように構成された第4のECCエンコーダをさらに備え、かつ
ジョイントパリティ保護ビットのセットを符号語に含めるように構成されるデータストレージデバイス。 - 請求項11記載のデータストレージデバイスにおいて、
前記第3のエンコーダは、符号語あたりに単一の消去を訂正し得るシングルパリティ検査符号を用いるように構成されるデータストレージデバイス。 - 請求項11記載のデータストレージデバイスにおいて、
前記第3のエンコーダは、非バイナリ代数符号を用いるように構成されるデータストレージデバイス。 - 請求項11記載のデータストレージデバイスにおいて、
第1のエラー訂正符号は、第1の生成多項式に対応し、
ジョイント情報ビットのセットは、第1の生成多項式で除された第2のパリティビットの第1のセットを含むとともに第1の生成多項式で除された第2のパリティビットの第2のセットを含むデータストレージデバイス。 - データストレージデバイスであって、
メモリと、
マルチフェーズエラー訂正符号(ECC)デコーダと、を備え、
前記マルチフェーズECCデコーダは、
第1の代数符号である第1のエラー訂正符号と関連付けられ、前記メモリに格納されている符号語の情報ビットの第1のセットおよび第1のパリティビットの第1のセットを受け取るように構成された第1のデコーダであって、前記符号語は情報ビットの第2のセット、第1のパリティビットの第2のセットおよびジョイントパリティビットのセットをさらに含む、第1のデコーダと、
第1のエラー訂正符号より大きなエラー訂正能力を有する他の代数符号である第2のエラー訂正符号と関連付けられ、情報ビットの第1のセットおよび第2のパリティビットの第1のセットを受け取るとともに情報ビットの第1のセットのエラー訂正済みバージョンを生成するように構成された第2のデコーダと、
ジョイントパリティビットのセットおよびジョイント情報ビットのセットを受け取ってジョイント情報ビットのセットのエラー訂正済みバージョンを生成するように構成された第3のデコーダであって、ジョイント情報ビットのセットは情報ビットの第1のセットおよび情報ビットの第2のセットと関連付けられる、第3のデコーダと、を備え、かつ
前記第1のデコーダを用いる情報ビットの第1のセットの第1のフェーズ復号化を実行するとともに、第1のフェーズ復号化中の復号化失敗に応答して、第2のフェーズ復号化を実行するように構成され、
前記第2のフェーズ復号化には、
前記第1のデコーダを用いて情報ビットの第2のセットを復号化し、
情報ビットの第2のセットに対応する第2のパリティビットの第2のセットを生成し、
前記第3のデコーダを用いて情報ビットの第1のセットに対応するジョイント情報ビットを復号化し、かつ
前記第2のデコーダを用いて情報ビットの第1のセットを復号化することが含まれ、
前記第2のデコーダに提供される第2のパリティビットの第1のセットは、情報ビットの第1のセットに対応する復号化済みジョイント情報ビットに対応するデータストレージデバイス。 - 請求項16記載のデータストレージデバイスにおいて、
符号語は、ジョイントパリティ保護ビットのセットをさらに含み、
前記マルチフェーズECCデコーダは、ジョイントパリティビットのセットおよびジョイントパリティ保護ビットのセットを用いてジョイントパリティビットのセットのエラー訂正済みバージョンを生成するために、ジョイントパリティ復号化動作を実行するように構成された第4のデコーダをさらに備えるデータストレージデバイス。 - 請求項17記載のデータストレージデバイスにおいて、
ジョイントパリティ復号化動作は、符号語あたりに単一の消去を訂正し得るシングルパリティ検査符号に基づくデータストレージデバイス。 - 請求項17記載のデータストレージデバイスにおいて、
ジョイントパリティ復号化動作は、非バイナリ代数符号に基づくデータストレージデバイス。 - 請求項16記載のデータストレージデバイスにおいて、
第1のエラー訂正符号は、第1の生成多項式に対応し、
情報ビットの第1のセットに対応するジョイント情報ビットは、第1の生成多項式で除された第2のパリティビットの第1のセットを含むデータストレージデバイス。 - 請求項1記載の方法において、
第2のエラー訂正符号の符号語のビットのサブセットは、第1のエラー訂正符号の符号語を構成する方法。 - 請求項6記載の方法において、
第2のエラー訂正符号の符号語のビットのサブセットは、第1のエラー訂正符号の符号語を構成する方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/335,534 US8645789B2 (en) | 2011-12-22 | 2011-12-22 | Multi-phase ECC encoding using algebraic codes |
US13/335,534 | 2011-12-22 | ||
PCT/US2012/070869 WO2013096581A1 (en) | 2011-12-22 | 2012-12-20 | Multi-phase ecc encoding using algebraic codes |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015507409A true JP2015507409A (ja) | 2015-03-05 |
Family
ID=47628426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014548877A Pending JP2015507409A (ja) | 2011-12-22 | 2012-12-20 | 代数符号を用いるマルチフェーズecc符号化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8645789B2 (ja) |
JP (1) | JP2015507409A (ja) |
CN (1) | CN104115126A (ja) |
WO (1) | WO2013096581A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018520410A (ja) * | 2015-05-04 | 2018-07-26 | 日本テキサス・インスツルメンツ株式会社 | ライトワンスメモリコードのエラー訂正コード管理 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874958B2 (en) * | 2010-11-09 | 2014-10-28 | International Business Machines Corporation | Error detection in a mirrored data storage system |
CN102567134B (zh) * | 2012-01-06 | 2015-01-07 | 威盛电子股份有限公司 | 存储器模块的错误检查与校正系统以及方法 |
JP5768022B2 (ja) | 2012-03-19 | 2015-08-26 | 株式会社東芝 | メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法 |
TW201346922A (zh) * | 2012-05-14 | 2013-11-16 | Toshiba Kk | 記憶體控制器、記憶裝置及錯誤修正方法 |
US20140006897A1 (en) * | 2012-06-29 | 2014-01-02 | International Business Machines Corporation | Correction of structured burst errors in data |
US9577673B2 (en) * | 2012-11-08 | 2017-02-21 | Micron Technology, Inc. | Error correction methods and apparatuses using first and second decoders |
US20140245101A1 (en) * | 2013-02-28 | 2014-08-28 | Kabushiki Kaisha Toshiba | Semiconductor memory |
US9344117B2 (en) * | 2013-03-15 | 2016-05-17 | Mellanox Technologies, Ltd. | Methods and systems for error-correction decoding |
KR20150006616A (ko) * | 2013-07-09 | 2015-01-19 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그것의 동작 방법 |
US20150074496A1 (en) * | 2013-09-10 | 2015-03-12 | Kabushiki Kaisha Toshiba | Memory controller, storage device, and memory control method |
US10073731B2 (en) * | 2013-11-27 | 2018-09-11 | Intel Corporation | Error correction in memory |
KR20150084560A (ko) * | 2014-01-14 | 2015-07-22 | 에스케이하이닉스 주식회사 | 인코딩 장치, 디코딩 장치 및 그 동작 방법 |
US20150256204A1 (en) * | 2014-03-07 | 2015-09-10 | Kabushiki Kaisha Toshiba | Memory controller, storage device and memory control method |
US9513987B2 (en) | 2014-11-07 | 2016-12-06 | International Business Machines Corporation | Using error correcting codes for parity purposes |
US9673840B2 (en) * | 2014-12-08 | 2017-06-06 | SK Hynix Inc. | Turbo product codes for NAND flash |
TWI557747B (zh) * | 2015-02-13 | 2016-11-11 | 瑞昱半導體股份有限公司 | 記憶體控制模組與方法以及錯誤更正碼編/解碼電路與方法 |
KR102305095B1 (ko) | 2015-04-13 | 2021-09-24 | 삼성전자주식회사 | 비휘발성 메모리 컨트롤러의 동작 방법 |
US10432363B2 (en) * | 2016-08-12 | 2019-10-01 | SK Hynix Inc. | Page health prediction using product codes decoder in NAND flash storage |
US9836350B2 (en) * | 2015-09-30 | 2017-12-05 | Western Digital Technologies, Inc. | Joint decoding of rewriting NVM error sectors |
US9734009B2 (en) * | 2015-10-08 | 2017-08-15 | Sandisk Technologies Llc | Data encoding techniques for a device |
US10180874B2 (en) | 2015-10-28 | 2019-01-15 | Western Digital Technologies, Inc. | Storage device operations based on bit error rate (BER) estimate |
US9886342B2 (en) * | 2015-10-28 | 2018-02-06 | Sandisk Technologies Llc | Storage device operations based on bit error rate (BER) estimate |
US9978462B2 (en) | 2015-10-29 | 2018-05-22 | Sandisk Technologies Llc | Partial soft bit read |
US9984771B2 (en) * | 2016-01-11 | 2018-05-29 | Sandisk Technologies Llc | Multi-level raid-type encoding with random correction capability |
US10367528B2 (en) | 2016-03-04 | 2019-07-30 | Sandisk Technologies Llc | Convolutional low-density parity-check coding |
US10389389B2 (en) | 2016-03-04 | 2019-08-20 | Western Digital Technologies, Inc. | Method and data storage device using convolutional low-density parity-check coding with a long page write and a short page read granularity |
US10063258B2 (en) | 2016-03-04 | 2018-08-28 | Sandisk Technologies Llc | Method and data storage device to estimate a number of errors using convolutional low-density parity-check coding |
US10656996B2 (en) * | 2016-12-21 | 2020-05-19 | PhazrIO Inc. | Integrated security and data redundancy |
TWI634561B (zh) * | 2017-03-24 | 2018-09-01 | 群聯電子股份有限公司 | 資料保護方法、記憶體儲存裝置及記憶體控制電路單元 |
US10083754B1 (en) * | 2017-06-05 | 2018-09-25 | Western Digital Technologies, Inc. | Dynamic selection of soft decoding information |
US10379952B2 (en) * | 2017-06-16 | 2019-08-13 | Western Digital Technologies, Inc. | Data recovery and regeneration using parity code |
CN108021467B (zh) * | 2017-11-10 | 2021-07-16 | 深圳先进技术研究院 | 一种存储器容错保护方法、装置、设备及存储介质 |
US10372539B2 (en) | 2017-11-20 | 2019-08-06 | Western Digital Technologies, Inc. | Variable length CLDPC encoder and method of operation in an autonomous vehicle |
US10855314B2 (en) * | 2018-02-09 | 2020-12-01 | Micron Technology, Inc. | Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords |
US10606694B2 (en) * | 2018-04-20 | 2020-03-31 | Micron Technology, Inc. | Error correction using hierarchical decoders |
US11216443B2 (en) * | 2018-06-20 | 2022-01-04 | EMC IP Holding Company LLC | Processing device configured for data integrity testing utilizing signature-based multi-phase write operations |
US10691532B2 (en) * | 2018-06-29 | 2020-06-23 | Alibaba Group Holding Limited | Storage drive error-correcting code-assisted scrubbing for dynamic random-access memory retention time handling |
KR20200042360A (ko) * | 2018-10-15 | 2020-04-23 | 에스케이하이닉스 주식회사 | 에러 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템 |
US11164652B2 (en) | 2019-06-21 | 2021-11-02 | Micron Technology, Inc. | Two-layer code with low parity cost for memory sub-systems |
CN110909001A (zh) * | 2019-11-20 | 2020-03-24 | 成都比特信安科技有限公司 | 一种数据种子植入及溯源追踪的方法 |
US11152958B2 (en) * | 2019-12-09 | 2021-10-19 | Western Digital Technologies, Inc. | Very low complexity SECDED codes |
US11296729B2 (en) | 2020-07-23 | 2022-04-05 | Micron Technology, Inc. | Data reliability for extreme temperature usage conditions in data storage |
WO2022139848A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Dynamic hardware integrity and/or replay protection |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3668673B2 (ja) * | 2000-06-09 | 2005-07-06 | 株式会社日立コミュニケーションテクノロジー | エラー訂正符号の構成方法、復号方法、伝送装置、ネットワーク |
JP4707803B2 (ja) * | 2000-07-10 | 2011-06-22 | エルピーダメモリ株式会社 | エラーレート判定方法と半導体集積回路装置 |
US7079826B2 (en) * | 2001-03-16 | 2006-07-18 | Texas Instruments Incorporated | Digitally controlled analog RF filtering in subsampling communication receiver architecture |
JP3993035B2 (ja) * | 2001-07-19 | 2007-10-17 | 松下電器産業株式会社 | データ記録方法、記録媒体、および再生装置 |
JP2003346432A (ja) * | 2002-05-22 | 2003-12-05 | Internatl Business Mach Corp <Ibm> | データ記憶装置およびデータ処理方法 |
US7844877B2 (en) | 2005-11-15 | 2010-11-30 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
US7823043B2 (en) | 2006-05-10 | 2010-10-26 | Sandisk Il Ltd. | Corruption-resistant data porting with multiple error correction schemes |
JP4564520B2 (ja) | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
JP4538034B2 (ja) | 2007-09-26 | 2010-09-08 | 株式会社東芝 | 半導体記憶装置、及びその制御方法 |
US8832518B2 (en) | 2008-02-21 | 2014-09-09 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
JP5166074B2 (ja) | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
JP4672743B2 (ja) * | 2008-03-01 | 2011-04-20 | 株式会社東芝 | 誤り訂正装置および誤り訂正方法 |
KR101526317B1 (ko) * | 2008-05-09 | 2015-06-11 | 삼성전자주식회사 | 계층적 디코딩 장치 |
US8365049B2 (en) * | 2008-12-15 | 2013-01-29 | Lsi Corporation | Soft-error detection for electronic-circuit registers |
CN102034552A (zh) * | 2009-09-25 | 2011-04-27 | 威刚科技(苏州)有限公司 | 存储装置与其资料处理方法 |
-
2011
- 2011-12-22 US US13/335,534 patent/US8645789B2/en active Active
-
2012
- 2012-12-20 JP JP2014548877A patent/JP2015507409A/ja active Pending
- 2012-12-20 WO PCT/US2012/070869 patent/WO2013096581A1/en active Application Filing
- 2012-12-20 CN CN201280069744.8A patent/CN104115126A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018520410A (ja) * | 2015-05-04 | 2018-07-26 | 日本テキサス・インスツルメンツ株式会社 | ライトワンスメモリコードのエラー訂正コード管理 |
Also Published As
Publication number | Publication date |
---|---|
US20130166988A1 (en) | 2013-06-27 |
US8645789B2 (en) | 2014-02-04 |
WO2013096581A1 (en) | 2013-06-27 |
CN104115126A (zh) | 2014-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015507409A (ja) | 代数符号を用いるマルチフェーズecc符号化 | |
US8719677B2 (en) | Using ECC encoding to verify an ECC decode operation | |
KR100845529B1 (ko) | 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템 | |
US8713411B2 (en) | Encoding and/or decoding memory devices and methods thereof | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
KR101686980B1 (ko) | 비휘발성 메모리 내의 데이터 저장 방법 | |
US9195539B2 (en) | Method for reading data from block of flash memory and associated memory device | |
KR20120137354A (ko) | 슬라이딩-윈도우 에러 정정 | |
TW201133501A (en) | System and method of error correction of control data at a memory device | |
KR20160090054A (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
US11632135B2 (en) | Apparatuses and methods for interleaved BCH codes | |
JP2019057752A (ja) | メモリシステム | |
CN111696615A (zh) | 存储器系统和操作存储器系统的方法 | |
US10855314B2 (en) | Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords | |
JP2021047712A (ja) | メモリシステム | |
JP2020155861A (ja) | メモリシステム | |
US8627183B1 (en) | Systems and methods for storing variable rate product codes | |
JP2020046823A (ja) | メモリシステム | |
US10404282B2 (en) | Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding | |
US10951238B1 (en) | Memory system and method for controlling non-volatile memory | |
TW200839502A (en) | Flash memory system and method for controlling the same | |
CN108170554B (zh) | 一种nand的数据编码方法和装置 | |
US9160371B2 (en) | Memory controller, storage device and memory control method | |
US10114569B2 (en) | Computing system with shift expandable coding mechanism and method of operation thereof |