JP2023137091A - メモリシステムおよびメモリ制御方法 - Google Patents
メモリシステムおよびメモリ制御方法 Download PDFInfo
- Publication number
- JP2023137091A JP2023137091A JP2022043111A JP2022043111A JP2023137091A JP 2023137091 A JP2023137091 A JP 2023137091A JP 2022043111 A JP2022043111 A JP 2022043111A JP 2022043111 A JP2022043111 A JP 2022043111A JP 2023137091 A JP2023137091 A JP 2023137091A
- Authority
- JP
- Japan
- Prior art keywords
- information
- memory
- reliability
- dimension
- component
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 496
- 238000000034 method Methods 0.000 title claims description 152
- 230000004048 modification Effects 0.000 claims description 193
- 238000012986 modification Methods 0.000 claims description 193
- 238000012937 correction Methods 0.000 claims description 179
- 208000011580 syndromic disease Diseases 0.000 claims description 145
- 230000008569 process Effects 0.000 claims description 77
- 238000012545 processing Methods 0.000 abstract description 57
- 238000004364 calculation method Methods 0.000 description 122
- 238000010586 diagram Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 22
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Abstract
【課題】復号に必要なメモリ量を削減する。【解決手段】メモリコントローラは、成分符号の個数に基づく値に応じて、M個の成分符号それぞれに対する第aの修正情報の修正情報数を決定し、修正情報数に基づいて、第aの修正情報の修正情報メモリ上のアドレスである修正情報アドレスを決定する。メモリコントローラは、第aの成分符号に対する第aの軟判定入力値を計算し、第aの軟判定入力値を入力して第aの成分符号の復号処理を実行して、第aの成分符号の復号語、第aの修正情報、および、第aの信頼度情報を計算し、第aの修正情報および、第j次元(j≠i、1≦j≦N)の第b(1≦b≦nj)の修正された位置を示す第bの修正情報を修正情報メモリの修正情報アドレスに記憶し、第aの信頼度情報を信頼度情報メモリに記憶し、読出し情報、および、各成分符号の信頼度情報から計算される出力復号語を出力する。【選択図】図5
Description
以下の実施形態は、メモリシステムおよびメモリ制御方法に関する。
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
本発明の一つの実施形態は、復号に必要なメモリ量を削減することが可能なメモリシステムを提供することを目的とする。
実施形態によれば、メモリコントローラは、成分符号の個数に基づく値に応じて、M個の成分符号それぞれに対する第aの修正情報の修正情報数を決定し、修正情報数に基づいて、第aの修正情報の修正情報メモリ上のアドレスである修正情報アドレスを決定する。メモリコントローラは、第aの成分符号に対する第aの軟判定入力値を計算し、第aの軟判定入力値を入力して第aの成分符号の復号処理を実行して、第aの成分符号の復号語、第aの修正情報、および、第aの信頼度情報を計算し、第aの修正情報および、第j次元(j≠i、1≦j≦N)の第b(1≦b≦nj)の修正された位置を示す第bの修正情報を修正情報メモリの修正情報アドレスに記憶し、第aの信頼度情報を信頼度情報メモリに記憶し、読出し情報、および、各成分符号の信頼度情報から計算される出力復号語を出力する。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
近年、NAND型フラッシュメモリ(以下、単にNANDメモリという)などの不揮発性メモリを利用したメモリシステムは、その高速性という特長を生かし、様々な場所で用いられている。しかしながら、不揮発性メモリから読み出したデータには、不揮発性メモリに記憶されてからの時間経過や読み出し・書き込みの際に生じるノイズ等に起因するエラーが含まれる可能性がある。そのため、一般には、不揮発性メモリに記憶するデータに対して誤り訂正符号を用いた符号化処理が実行され、読出し時にはその誤り訂正符号を用いた復号処理が実行されることで、読み出したデータに含まれているエラーが除去される。
図1は、比較例に係るメモリシステムにおけるデータを誤り訂正符号で保護する動作を説明するための図である。なお、ユーザ931とユーザ932は、それぞれ、例えばパーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等の情報処理装置であってよい。
ユーザ931は、書込み対象のデータ(以下、書込みデータという)をメモリシステム900に対して送信する。メモリシステム900は、ユーザ931から受け取った書込みデータを符号化器941を用いて符号化し、これにより生成された符号化データ(符号語)を不揮発性メモリ920に書き込む。従って、不揮発性メモリ920に書き込まれる符号化データには、基本的にはエラーが含まれていない。
不揮発性メモリ920に記憶されている符号化データは、例えばユーザ932からの読出し要求に応じて読み出される。ここで、読み出された符号化データにはエラーが含まれている可能性がある。そこで、読み出された符号化データに含まれるエラーを復号器942を用いて除去しつつ復号を実行することで、オリジナルの符号語が復元される。その後、オリジナルの符号語もしくは復元された符号化前の書込みデータがユーザ932へ送信される。なお、読出し要求を発行したユーザ932は、書込み要求を発行したユーザ931と同一のユーザであってもよいし、別のユーザであってもよい。
ここで、符号化器941が書込みデータを‘0’又は‘1’で表現された二値情報(ビット)から構成される符号語に符号化し、その符号語が二値情報として不揮発性メモリ920に記憶された場合を想定する。以下、不揮発性メモリ920からのデータ読出しの際、記憶されたデータを‘0’であるか‘1’であるかを示す二値情報として読み出して復号器942に入力する場合、その入力情報を硬判定入力(Hard-Input)と称する。それに対し、記憶されたデータを‘0’であった確率又は‘1’であった確率の情報として読み出して復号器942に入力する場合、その確率情報を軟判定入力(Soft-Input)と称する。
また、復号器942が出力する復号結果が、オリジナルの書込みデータが‘0’であったか‘1’であったかの二値情報である場合、その出力情報を硬判定出力(Hard-Output)と称する。それに対し、復号器942が出力する復号結果にオリジナルの書込みデータが‘0’であったか‘1’であったかの確率情報が含まれる場合、その出力情報を軟判定出力(Soft-Output)と称する。
このような軟判定入力を受け取り軟判定出力を行うSISO(Soft-Input Soft-Output)復号器は、例えば、多次元の誤り訂正符号の成分符号復号器として用いられる。
ここで、多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。また、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、又は、二元体以外の有限体(finite field)などのアルファベットの元で構成される。なお、説明を容易にするため、以下では1シンボルが1ビットで構成される二元体の誤り訂正符号を例に説明する。説明の中で、シンボルとビットが混在して出てくる箇所があるかもしれないが、どちらも同じ意味を表す。
多次元の誤り訂正符号の例として、図2に積符号を示す。図2に示す積符号500は、構成単位である各情報シンボルd0~d3が、行方向(図面中横方向)と列方向(図面中縦方向)とのそれぞれで、情報長2シンボルで且つパリティ長3シンボルのハミング符号511~515および521~525で保護された構造を備える。このような積符号500では、全ての情報シンボルd0~d3およびパリティシンボルp0~p20が行方向のハミング符号と列方向のハミング符号とで2重に保護されている。図2に示す積符号では、全てのシンボルが行方向(次元1と称される)および列方向(次元2と称される)の成分符号によって二重に保護されている。なお、多次元の誤り訂正符号としてはこれに限らず、例えば一般化LDPC符号(Generalized Low Density Parity Check Code)などであってもよい。一般化LDPC符号を含む一般の多次元の誤り訂正符号では、シンボルごとに保護の多重度が異なっていてもよく、また、成分符号を次元1と次元2のようにグループ分けすることができないが、このような符号構成に対しても本技術は適用することが可能である。
以下では、簡単のため、次元1と次元2にグループ分けできる2個の成分符号によって各シンボルが保護されている二次元の誤り訂正符号を用いる例を説明する。各次元の成分符号それぞれは、次元ごとに定められる1個以上の成分符号を含む。以下では、1個以上の成分符号を含む、各次元に対応する成分符号を成分符号群という場合がある。例えば次元1の成分符号群および次元2の成分符号群は、それぞれ、n1個の成分符号およびn2個の成分符号を含む。適用可能な誤り訂正符号はこれに限られず、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によって保護されているN次元の誤り訂正符号であってもよい。各成分符号群に含まれる成分符号の個数で表す場合、N次元の誤り訂正符号は、M個(Mは、ni(1≦i≦N)の総和、Nは2以上の整数、niは、第i次元の成分符号の個数)の成分符号によって保護される。
このような多次元の誤り訂正符号に対しては、ターボ復号を行うことができる。図3は、二次元の誤り訂正符号に対してターボ復号を実行する機能ブロックの一例を示す図である。また、図4は、図3に示す機能ブロックによる処理フローの一例を示すフローチャートである。
図3に示すように、二次元の誤り訂正符号に対してターボ復号を実行する機能ブロックには、読出し情報メモリ901と、次元1加算器911と、次元1SISO復号器912と、次元1外部値メモリ913と、次元2加算器921と、次元2SISO復号器922と、次元2外部値メモリ923とが含まれる。
このような機能ブロックによるターボ復号動作では、図4に示すように、まず、不揮発性メモリ920から誤り訂正符号が軟判定値で読み出される(ステップS901)。読み出された軟判定値の誤り訂正符号は、読出し情報として読出し情報メモリ901へ転送されて記憶される(ステップS902)。
次に、読出し情報メモリ901内の読出し情報と、次元2外部値メモリ923内の次元2外部値とが次元1加算器911により加算され、これにより、次元1軟判定入力値(=読出し情報+次元2外部値)が計算される(ステップS903)。なお、次元1外部値メモリ913および次元2外部値メモリ923はともに、本動作の起動時にリセット(ゼロクリア)されているものとする。
つづいて、次元1加算器911で計算された次元1軟判定入力値が、成分符号ごとに次元1SISO復号器912に入力される。次元1SISO復号器912は、入力された次元1軟判定入力値に対して次元1の軟判定復号を実行することで、次元1外部値を計算する(ステップS904)。計算された次元1外部値は、次元1外部値メモリ913へ転送されて記憶される(ステップS905)。
次に、読出し情報メモリ901内の読出し情報と、次元1外部値メモリ913内の次元1外部値とが次元2加算器921により加算され、これにより、次元2軟判定入力値(=読出し情報+次元1外部値)が計算される(ステップS906)。
つづいて、次元2加算器921で計算された次元2軟判定入力値が、成分符号ごとに次元2SISO復号器922に入力される。次元2SISO復号器922は、入力された次元2軟判定入力値に対して次元2の軟判定復号を実行することで、次元2外部値を計算する(ステップS907)。計算された次元2外部値は、次元2外部値メモリ923へ転送されて記憶される(ステップS908)。
次に、復号に成功したか否かが判定される(ステップS909)。復号に成功したとは、例えば正しいと判断できる復号語が発見されたことなどであってよい。復号に成功した場合(ステップS909のYES)、外部の制御部等に復号の成功とともに発見された復号語が通知され(ステップS910)、本動作が終了する。一方、復号に成功していない場合(ステップS909のNO)、本動作の反復回数が予め設定しておいた規定値に達しているか否かが判定され(ステップS911)、規定値に達していない場合(ステップS911のNO)、ステップS903へリターンして、以降の動作を実行する。また、規定値に達していた場合(ステップS911のYES)、外部の制御部等に復号の失敗が通知され(ステップS912)、本動作が終了する。なお、反復回数とは、例えば図4のステップS903~S908の動作を繰り返した回数等であってよい。
図3に示す構成における次元1SISO復号器912および次元2SISO復号器922には、外部値を計算する復号アルゴリズムが採用されたMax-log-MAP(Maximum A Posteriori)復号器を用いることができる。Max-log-MAP復号器は、MAP復号語および各ビットの対向復号語から、ビットごとの事後確率値を計算する復号器である。なお、説明の簡略化のため、以降では、事後確率に比例する量(quantity)およびその近似値のことも事後確率と呼ぶこととする。例えば、全ての符号語の事前確率が等しいと仮定した場合、復号語の尤度は、復号語の事後確率値に比例する量となっている。
ここで、MAP復号語c*とは、全ての符号語c∈Cの内で、軟判定入力値Sから計算された事後確率Pが最も高い符号語c*=argmaxcP(c|S)を指す。また、i番目のビットの対向復号語とは、全ての符号語c∈Cの内で、i番目のビットでMAP復号語c*と異なる値を持つ符号語のうち、軟判定入力値Sから計算された事後確率Pの最も高い符号語cp,i=argmaxcP(c|S,ci≠c*
i)を指す。従って、Max-log-MAP復号器において復号の途中で計算される中間の硬判定値には、MAP復号語c*および全ての対向符号語cp,iが含まれる。
なお、全ての符号語の集合Cの代わりに、事後確率が比較的高い符号語の集合C’⊂Cが用いられてもよい。その場合、近似的なMAP復号語およびi番目のビットの近似的な対向復号語が求められる。このような符号語の部分集合C’を用いたMax-log-MAP復号は、全ての符号語の集合Cを用いたMax-log-MAP復号と比べて訂正能力が劣るものの、計算量が削減されるため、高速に復号を行うことができるという特徴を備える。説明の簡略化のため、以降では、近似的なMAP復号語を用いている場合も含めて、MAP復号語と呼称する。
各次元の外部値は、式(1)で求められた対数事後確率比Rから各次元の軟判定入力値Siを引くことで求めることができる。なお、本説明では、復号の途中で計算される中間の硬判定値から外部値を計算する復号アルゴリズムの例としてMax-log-MAP復号を挙げたが、それ以外にも種々の復号アルゴリズムを用いることができる。
以上のような、SISO復号器を用いたターボ復号器は、確率情報である外部値を外部値メモリに記憶しておかなければならないため、復号に必要なメモリ量が増大してしまう可能性がある。また復号に必要なメモリ量が増大するということは、復号処理中にアクセスするメモリ量の増大を意味するため、復号速度の低下、および、消費電流の増大が引き起こされる。そのため、復号に必要なメモリ量を削減することが可能なメモリシステムの提供が望まれる。
(第1の実施形態)
図5は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図5に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図5ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
図5は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図5に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図5ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NANDメモリである。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、メモリコントローラ10は、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14およびデータバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14およびデータバッファ12は、内部バス16で相互に接続されている。
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した命令、書込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読み出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からホストI/F15経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20へのユーザデータおよびパリティの書き込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20からのユーザデータおよびパリティの読み出しをメモリI/F13へ指示する。
また、制御部11は、ホスト30からユーザデータの書込み要求を受信した場合、ユーザデータをデータバッファ12に蓄積し、ユーザデータの不揮発性メモリ20における記憶領域(メモリ領域)を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが記憶された不揮発性メモリ20上の記憶領域を示す物理アドレスとの対応はアドレス変換テーブルとして記憶される。
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、この同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時記憶する。また、データバッファ12は、不揮発性メモリ20から読み出したユーザデータをホスト30へ送信するまでに一時記憶する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦記憶される。符号化/復号部14は、ユーザデータを符号化して符号語を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された受信語を復号してユーザデータを復元する。そこで符号化/復号部14は、符号化器(Encoder)17と復号器(Decoder)18を備える。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
次に、本実施形態の書込み処理について説明する。制御部11は、不揮発性メモリ20へのユーザデータの書込み時に、ユーザデータの符号化を符号化器17に指示する。その際、制御部11は、不揮発性メモリ20における符号語の記憶場所(記憶アドレス)を決定し、決定した記憶場所もメモリI/F13へ指示する。
符号化器17は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、BCH(Bose-Chandhuri-Hocquenghem)符号やRS(リード・ソロモン)符号を用いた符号化方式を採用することができる。符号化器17により生成される符号語は、上述において図2を用いて例示した積符号500などの多次元の誤り訂正符号である。図2に例示した積符号500は、上述したように、構成単位である各情報ビット(シンボルであってもよい)d0~d3が、行方向(図面中横方向)と列方向(図面中縦方向)とのそれぞれで、情報長2ビットで且つパリティ長3ビットのハミング符号である成分符号511~515および521~525で保護された構造を備える。このような積符号500では、全ての情報ビットd0~d3およびパリティビットp0~p20が行方向の成分符号(ハミング符号)511~515と列方向の成分符号(ハミング符号)521~525とで2重に保護されている。メモリI/F13は、制御部11から指示された不揮発性メモリ20上の記憶場所へ符号語を記憶する制御を行う。
次に、本実施形態の不揮発性メモリ20からの読出し時の処理について説明する。制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、復号器18へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスから受信語を読み出し、読み出した受信語を復号器18に入力する。復号器18は、この不揮発性メモリ20から読み出された受信語を復号する。
復号器18は、不揮発性メモリ20から読み出された受信語を復号する。図6は、復号器18の概略構成例を示すブロック図である。復号器18は、硬判定値を入力として復号を実行し、その結果として硬判定値を出力するHIHO(hard-input hard-output)復号部181と、軟判定値を入力として復号を実行し、その結果として軟判定値を出力するSISO(soft-input soft-output)復号部182とを備える。
一般に、SISO復号は、HIHO復号より誤り訂正能力は高いが処理時間が長いという特徴を持つ。そこで本実施形態では、まず、HIHO復号部181が、不揮発性メモリ20から硬判定値として読み出された受信語をHIHO復号し、硬判定復号により復号できなかった受信語を軟判定値として読み出すように構成する。そして、SISO復号部182が、軟判定値として読み出された受信語をSISO復号するように構成する。ただし、このような構成に限られず、HIHO復号を省略して全ての受信語にSISO復号を実行する構成など、種々変形することが可能である。
次に、図6に示すSISO復号部182のより詳細な構成を、図面を参照して詳細に説明する。図7は、SISO復号部182の概略構成例を示すブロック図である。
本実施形態では、不揮発性メモリ20に記憶されるデータが二次元の誤り訂正符号により符号化されたデータである場合を例に説明する。不揮発性メモリ20に記憶されるデータは、二次元以外の多次元の誤り訂正符号により符号化されたデータであってもよい。
図7に示すように、SISO復号部182は、読出し情報メモリ201と、次元1シンドローム値計算部111と、次元1シンドローム値メモリ211と、次元1軟判定入力値計算部112と、次元1SISO復号部113と、次元1修正情報メモリ212と、次元2シンドローム値計算部121と、次元2シンドローム値メモリ221と、次元2軟判定入力値計算部122と、次元2SISO復号部123と、次元2修正情報メモリ222と、信頼度情報メモリ231と、決定部241と、を備えている。
読出し情報メモリ201は、不揮発性メモリ20から軟判定により読み出された読出し情報を記憶する。読出し情報のうち、各ビットが0か1かを定める二値情報である硬判定値に対応するデータを、ハードビットデータという場合がある。また、読出し情報のうちハードビットデータを除いた部分に対応するデータを、ソフトビットデータという場合がある。読出し情報メモリ201は、ハードビットデータを記憶するハードビットメモリ(HMEM)と、ソフトビットデータを記憶するソフトビットメモリ(CMEM)と、を含んでもよい。
ソフトビットデータの個数(X)はどのように設定されてもよいが、以下では、1個のソフトビットデータSB1(X=1)を用いる例を主に説明する。なお、CMEMは、ソフトビットデータだけでなく、ハードビットデータをさらに記憶してもよい。HMEMに記憶されたハードビットデータの値は復号処理中に更新されうる。一方でCMEMがソフトビットデータだけでなくハードビットデータを記憶する場合には、CMEMに記憶されたハードビットデータの値は復号処理中に更新されない。すなわち、CMEMに記憶されたハードビットデータは、読出し専用(Read Only)となる。
復号処理(例えば、軟判定入力値の計算)では、チャネル値と呼ばれるデータが必要となる場合がある。チャネル値は、ハードビットデータおよびソフトビットデータの組に対応する対数尤度比(LLR:Log-Likelihood Ratio)の値を示す。チャネル値は、チャネル値LLRと呼ばれる場合がある。チャネル値は、例えば、ハードビットデータおよびソフトビットデータの組と、チャネル値と、を対応づけたLLRテーブルにより決定される。
シンボルが二元体の元である本実施形態では、LLRは、あるビットが0であるか1であるかに関する確率情報を表す。以下では、LLRは、ビットが0である確率が高いときに正となり、ビットが1である確率が高いときに負となるものとする。また、本実施形態では、計算される軟判定入力値も、LLRで表現されるものとする。
LLRは、値の正負に応じて0または1の二値情報に縮約して表すことができる。以下では、このような二値情報をLLRの硬判定値という場合がある。また、以下では、LLRが正の場合は硬判定値を0とし、LLRが負の場合は硬判定値を1とし、LLRが0の場合は予め定められたルール(例えば硬判定値を0にする)に従い硬判定値の値を決定する。
「チャネル値の硬判定値」は、LLRで表されるチャネル値を、上記のように値の正負に応じて二値で表した情報に相当する。同様に、「軟判定入力値の硬判定値」は、LLRで表される軟判定入力値を、上記のように値の正負に応じて二値で表した情報に相当する。
上記のように、HMEMに記憶されたハードビットデータの値は復号処理中に更新されうる。一方、チャネル値は、HMEMにセットされた直後のハードビットデータ(更新前のハードビットデータ)に対応する値を意味する。例えば、復号処理中にHMEMのデータが更新される構成では、CMEMにハードビットデータを記憶しておけば(かつ復号処理中に更新しなければ)、復号処理中にチャネル値の符号を得ることが可能である。チャネル値の符号は、後述するように、例えばシンドローム値を修正するときに参照される。なおチャネル値の符号は、ハードビットデータの値が0であるか、1であるかに対応する。
チャネル値の絶対値が必要となる場合、例えば、対応するビットが低信頼ビットであるか否かに応じて定められる2つの値が用いられる。低信頼ビットは、信頼度が低いと判定されたビットを意味する。例えば、低信頼ビットであればLL、低信頼ビットでなければLHが、チャネル値の絶対値として用いられる。低信頼ビットであるか否かの判定方法については後述する。
本実施形態では、不揮発性メモリ20は、二次元の誤り訂正符号により符号化されたデータを記憶する。読出し情報メモリ201に記憶されるハードビットデータは、不揮発性メモリ20上で発生した誤りにより、二次元の誤り訂正符号により符号化されたデータの一部が別の値に変化したデータとなる場合がある。読出し情報メモリ201は、次元1シンドローム値計算部111および次元2シンドローム値計算部121へハードビットデータを出力する。
次元1シンドローム値計算部111は、次元1の成分符号(第1の成分符号の一例)のシンドローム値(次元1シンドローム値)を計算する。シンドローム値は、誤り訂正符号が誤り位置を計算するために用いるシンボル列であり、例えば、誤り訂正符号のパリティ検査行列とハードビットデータとを乗算することにより得られる。次元1シンドローム値計算部111は、誤り訂正符号の構造を利用して行列演算よりも簡易な計算でシンドローム値を得てもよい。次元1シンドローム値計算部111で得られた次元1シンドローム値は、次元1シンドローム値メモリ211へ出力される。
次元1シンドローム値メモリ211は、次元1シンドローム値計算部111で計算された次元1シンドローム値を記憶する。次元1シンドローム値メモリ211は、次元1軟判定入力値計算部112へ次元1シンドローム値を出力する。
次元1軟判定入力値計算部112は、次元1シンドローム値メモリ211から入力される次元1シンドローム値と、次元1修正情報メモリ212から入力される修正情報と、信頼度情報メモリ231から入力される信頼度情報を用いて、次元1軟判定入力値(第1の軟判定入力値の一例)を計算する。次元1軟判定入力値計算部112による次元1軟判定入力値の計算方法の詳細は後述する。次元1軟判定入力値計算部112は、次元1軟判定入力値を次元1SISO復号部113へ出力する。
なお、次元1修正情報メモリ212は、次元1の成分符号の修正情報(次元1修正情報、第1の修正情報の一例)を記憶するメモリである。同様に、次元2修正情報メモリ222は、次元2の成分符号(第2の成分符号の一例)の修正情報(次元2修正情報、第2の修正情報の一例)を記憶するメモリである。
修正情報は、復号処理により修正された位置(修正位置)を示す情報、および、値の差分を示す情報を含む。修正位置は、例えば、復号処理により発見された復号語と、読み出されたデータ(ハードビットデータ)との間で値が異なっている位置を示す。シンボルが二元体の元の場合は、値の差分を示す情報は省略することができる。二元体の場合は、「値が異なる」ことは「ビットが反転している」ということに限られるからである。二元体の場合、修正位置は、ビットを訂正した位置(訂正ビット位置)と解釈することもできる。
シンボルが二元体の元である本実施形態では、次元1修正情報は、次元1の成分符号に対する次元1の復号処理および次元2の復号処理で発見されたMAP復号語と、読出し情報メモリ201に記憶されているハードビットデータとで値が異なっている位置を示す。同様に、次元2修正情報は、次元2の成分符号に対する次元1の復号処理および次元2の復号処理で発見されたMAP復号語と、読出し情報メモリ201に記憶されているハードビットデータとで値が異なっている位置を示す。
次元1修正情報が位置を示すために用いるアドレス(次元1アドレス)の設定方法と、次元2修正情報が位置を示すために用いるアドレス(次元2アドレス)の設定方法と、は異なっていてもよい。例えば、次元1アドレスは、次元1軟判定入力値計算部112が、より高速に次元1修正情報を読み出せるように設定されてもよい。同様に、次元2アドレスは、次元2軟判定入力値計算部122が、より高速に次元2修正情報を読み出せるように設定されてもよい。次元1アドレスと次元2アドレスとを共通化したアドレスが用いられてもよい。この場合、次元1修正情報メモリ212および次元2修正情報メモリ222を共通化した1つの修正情報メモリが用いられてもよい。
次元1修正情報メモリ212に記憶する次元1修正情報のサイズはどのように設定されてもよい。本実施形態では、次元1修正情報のサイズは固定値(例えば15ビット)に設定される。成分符号ごとの次元1修正情報の個数(修正情報数)は、決定部241により、成分符号数などに応じて決定される。修正情報数の決定方法などの決定部241の機能の詳細は後述する。
各次元の修正情報は、さらに、エラーフラグ、および、他方次元エラーフラグを含んでもよい。エラーフラグは、当該修正情報に対応する次元で、当該修正情報に対応するビットがエラーであると判定しているか否かを示す情報である。他方次元エラーフラグは、当該修正情報に対応する次元以外の次元(他方次元)で、当該修正情報に対応するビットがエラーであると判定しているか否かを示す情報である。
例えば次元1修正情報は、次元1でエラーであると判定しているか否かを示すエラーフラグと、次元2でエラーであると判定しているか否かを示す他方次元エラーフラグと、を含んでもよい。
後述するように、次元1シンドローム値メモリ211は、「軟判定入力値の硬判定値から計算したシンドローム値」に相当するように修正されたシンドローム値が記憶されてもよい。このような構成の場合、修正情報は、さらに、反転フラグを含んでもよい。反転フラグは、当該修正情報に対応する次元で、軟判定入力値の符号が反転しているか否かを示す情報である。軟判定入力値の符号が反転しているか否かは、軟判定入力値の符号がチャネル値の符号と逆であるか否か、と言い換えることができる。
信頼度情報メモリ231は、信頼度情報を記憶するメモリである。信頼度情報は、各成分符号のSISO復号の確からしさ(復号信頼度)を表す情報である。信頼度情報メモリ231は、成分符号それぞれについての信頼度情報を記憶する。例えば信頼度情報メモリ231は、次元1の成分符号の信頼度情報(第1の信頼度情報の一例)、および、次元2の成分符号の信頼度情報(第2の信頼度情報の一例)を記憶する。
信頼度情報は、例えば、軟判定入力値(=確率情報)から計算された、符号語cがオリジナルの成分符号語である確率が高いか低いかを示すメトリックである。例えば、二元符号における信頼度情報としては、符号語cに対して、軟判定入力値Sから計算した尤度などを用いることができる。信頼度情報はこれに限らず、例えば以下のような情報を用いてもよい。
(I1)符号語cが正しい確率値
(I2)符号語cと軟判定入力値Sとの距離関数の値
(I3)上述の(I1)または(I2)に示す値に対して対数関数などを適用した値
(I1)符号語cが正しい確率値
(I2)符号語cと軟判定入力値Sとの距離関数の値
(I3)上述の(I1)または(I2)に示す値に対して対数関数などを適用した値
次元1SISO復号部113は、次元1軟判定入力値計算部112から入力される次元1軟判定入力値を用いてSISO復号を行い、修正情報(訂正ビット位置)およびSISO復号の信頼度情報を得る。次元1SISO復号部113は、修正情報(訂正ビット位置)を次元1修正情報メモリ212および次元2修正情報メモリ222へ出力し、信頼度情報を信頼度情報メモリ231へ出力する。
なお、次元1SISO復号部113は、次元1修正情報メモリ212および次元2修正情報メモリ222に出力する修正情報(訂正ビット位置)を、それぞれのメモリで用いられるアドレス(次元1アドレス、または、次元2アドレス)により表し、次元1修正情報メモリ212および次元2修正情報メモリ222のうちの対応するメモリに出力する。
次元1の成分符号についての処理は、上述のように、次元1シンドローム値計算部111、次元1シンドローム値メモリ211、次元1軟判定入力値計算部112、次元1SISO復号部113、次元1修正情報メモリ212、信頼度情報メモリ231、および、次元2修正情報メモリ222を用いて実現される。
次元2の成分符号についての処理は、「次元1」と「次元2」とを入れ替えれば、次元1の成分符号についての処理と同等であるため詳細な説明を省略する。例えば、次元1の成分符号についての処理で用いられる各部は、次元2の成分符号についての処理で用いられる各部と以下のように対応する。
・次元1シンドローム値計算部111:次元2シンドローム値計算部121
・次元1シンドローム値メモリ211:次元2シンドローム値メモリ221
・次元1軟判定入力値計算部112:次元2軟判定入力値計算部122
・次元1SISO復号部113:次元2SISO復号部123
・次元1修正情報メモリ212:次元2修正情報メモリ222
・次元1シンドローム値計算部111:次元2シンドローム値計算部121
・次元1シンドローム値メモリ211:次元2シンドローム値メモリ221
・次元1軟判定入力値計算部112:次元2軟判定入力値計算部122
・次元1SISO復号部113:次元2SISO復号部123
・次元1修正情報メモリ212:次元2修正情報メモリ222
なお、信頼度情報メモリ231は、次元1の成分符号についての処理、および、次元2の成分符号についての処理で共通に用いられる。
以下では、次元を区別しない場合、各メモリを以下のように表す場合がある。
・次元1シンドローム値メモリ211、次元2シンドローム値メモリ221:SMEM
・次元1修正情報メモリ212、次元2修正情報メモリ222:FMEM
・次元1シンドローム値メモリ211、次元2シンドローム値メモリ221:SMEM
・次元1修正情報メモリ212、次元2修正情報メモリ222:FMEM
次に、決定部241の機能の詳細について説明する。決定部241は、M個の成分符号それぞれに対する、FMEMに記憶する修正情報(次元1修正情報、次元2修正情報)の個数である修正情報数を決定する。決定部241は、M個の成分符号それぞれに対して、修正情報数分の修正情報を記憶するためのFMEMのメモリ領域を割り当てる。また決定部241は、修正情報数に基づいて、M個の成分符号それぞれに対する修正情報のFMEM上のアドレス(修正情報アドレス)を決定する。
1つの成分符号あたりの修正情報数を決定する方法としては、修正情報数を固定値とする方法がある。しかしこのような方法では、FMEMのメモリ領域を効率的に使用できない場合がある。
例えば、メモリシステム1は、誤り訂正符号として可変長符号を用いて、ビットエラーレートの経時的変化などに応じてパリティビット数を変更できるように構成される場合がある。パリティビット数が増加することは、例えば積符号では成分符号の個数(以下、成分符号数)が増加することに対応する。また、FMEMのメモリ領域の総容量は、例えば、以下のように決定される。
(最大の成分符号数)×(修正情報数:固定値)×(修正情報のサイズ:固定値)
(最大の成分符号数)×(修正情報数:固定値)×(修正情報のサイズ:固定値)
最大の成分符号数は、例えばパリティビット数を可変としたときに成分符号数が取りうる最大の値を表す。最大の成分符号数を500、修正情報数を10、修正情報のサイズを15ビットとした場合、FMEMのメモリ領域の総容量は、約9.4キロバイトとなる。
上記のような総容量の決定方法は、成分符号数が最大となった場合にも修正情報を記憶するメモリ領域に不足が生じないように総容量を決定する方法であるといえる。しかし、成分符号数が小さい場合には、総容量のうち未使用となるメモリ領域が発生しうる。例えば、最大の成分符号数を500としてFMEMの総容量を計算したが、成分符号数が100に設定された場合、80%のメモリ領域が未使用となる。このように、修正情報数を固定値とする方法では、FMEMのメモリ領域を効率的に使用できない場合がある。
そこで、決定部241は、成分符号数に基づく値に応じて、1つの成分符号に対して割り当てる修正情報数を決定する。本実施形態では、決定部241は、成分符号数に基づく値として成分符号数M(以下、成分符号数ともいう)を用いて、修正情報数を決定する。
以下では、成分符号数Mが100(成分符号数:小)および500(成分符号数:大)の2段階に設定可能な場合を例に説明する。なお、成分符号数Mの設定は、例えばレジスタなどに記憶され、決定部241により参照可能となっている。
決定部241は、Mの値が大きいほど、値が小さくなるように修正情報数を決定する。例えば決定部241は、成分符号数Mが500の場合、修正情報数を5とし、成分符号数Mが100の場合、修正情報数を10とする。
修正情報のサイズを固定値15ビットとすると、成分符号数Mが500の場合は、約4.7キロバイト(≒500×5×15ビット)のメモリ領域が必要となる。成分符号数Mが100の場合は、約1.9キロバイト(≒100×10×15ビット)のメモリ領域が必要となる。従って、修正情報数を12に固定する上記の例(約9.4キロバイト)と比較すると、FMEMに必要なメモリ領域の総容量を半分に低減することが可能となる。
例えば復号のレイテンシの制限値を大きくすると、復号にかける時間が増加し、発見される修正位置も多くなる場合がある。1つの成分符号に対して修正情報数より多くの修正位置が発見された場合、すべての修正位置について修正情報を記憶できず、復号が失敗する可能性がある。レイテンシの制限値などに応じて修正情報数を適切に設定すれば、復号が失敗する割合を低減することが可能である。なお、本実施形態では、成分符号数Mが100の場合、修正情報数は、固定値とする例と同じ12である。このため、この例と比較した復号性能の劣化は生じない。
なお、これまでの説明では、成分符号数が大(例えば500)の場合の修正情報数は、成分符号数が小(例えば100)の場合の修正情報数の半分とされた。修正情報数の決定方法はこれに限られず、成分符号数Mの値が大きいほど、値が小さくなるように修正情報数を決定する方法であればどのような方法であってもよい。
図8は、FMEMのメモリ領域の割り当ての例を説明するための図である。図中の「成分符号y」は、M個の成分符号のうちy番目の成分符号を表す。図8の例では、FMEMは、2つのバンクBK1、BK2により構成される。1つの矩形は、1つの成分符号に対して割り当てられるメモリ領域を表す。
図8の左部に示すように、成分符号数Mが500の場合、1つの成分符号に対して、2つのバンクBK1、BK2のうちいずれか一方のバンクが割り当てられる。1サイクルでアクセスするデータの単位をワードとすると、図8の例では、250ワード分のメモリ領域が必要となる。また、図8の右部に示すように、成分符号数Mが100の場合、1つの成分符号に対して、2つのバンクBK1、BK2が割り当てられる。
図8のようなメモリ領域が割り当てられる場合の、修正情報アドレスの計算例について説明する。例えば決定部241は、以下のようにして、成分符号数に応じて異なるアドレス変換方式により、y番目の成分符号のアドレスを計算することができる。
・成分符号数Mが100(成分符号数:小)の場合:y番目の成分符号の修正情報アドレスは、2(y-1)+1から2y
・成分符号数Mが500(成分符号数:大):y番目の成分符号の修正情報アドレスはy
・成分符号数Mが100(成分符号数:小)の場合:y番目の成分符号の修正情報アドレスは、2(y-1)+1から2y
・成分符号数Mが500(成分符号数:大):y番目の成分符号の修正情報アドレスはy
なお上記のFMEMの構成およびアドレス変換方式は一例であり、これに限られない。例えばFMEMは1つのバンクまたは3つ以上のバンクで構成されてもよい。アドレス変換方式は、バンク数、および、成分符号数ごとに決定される修正情報数に応じて、y番目の成分符号の修正情報アドレスを計算可能であればどのような方式であってもよい。
図9は、本実施形態のメモリシステムによる復号処理の一例を示すフローチャートである。図9は、二次元の誤り訂正符号に対する復号処理の例を示す。
制御部11は、不揮発性メモリ20から、誤り訂正符号を読み出し、読出し情報を得る(ステップS101)。制御部11は、読み出された読出し情報を読出し情報メモリ201へ転送して記憶する(ステップS102)。
次元1シンドローム値計算部111および次元2シンドローム値計算部121は、読出し情報(ハードビットデータ)から、それぞれ次元1シンドローム値および次元2シンドローム値を計算する(ステップS103)。例えば次元1シンドローム値計算部111は、読出し情報メモリ201に記憶されているハードビットデータを読み出し、読み出したハードビットデータを用いて次元1シンドローム値を計算し、次元1シンドローム値メモリ211に記憶する。次元2シンドローム値計算部121は、読出し情報メモリ201に記憶されているハードビットデータを読み出し、読み出したハードビットデータを用いて次元2シンドローム値を計算し、次元2シンドローム値メモリ221に記憶する。
次に、次元1の成分符号の復号処理が実行される。以下のステップS104、ステップS105は、複数の次元1の成分符号ごとに実行される。
まず、次元1軟判定入力値計算部112は、計算された次元1シンドローム値と、次元1修正情報メモリ212から入力される修正情報と、信頼度情報メモリ231から入力される信頼度情報と、を用いて次元1軟判定入力値を計算する(ステップS104)。なお次元1軟判定入力値計算部112は、上記のように決定部241により計算される修正情報アドレスを用いて、次元1修正情報メモリ212から修正情報を読み出すことができる。
以下に、軟判定入力値の計算方法の例を説明する。以下では、次元1の成分符号についての軟判定入力値(次元1軟判定入力値)の計算方法の例を説明するが、次元2の成分符号についての軟判定入力値(次元2軟判定入力値)の計算(ステップS106)に対しても同様の手順を適用できる。
次元1軟判定入力値計算部112は、次元1シンドローム値メモリ211から、次元1シンドローム値sを読み出し、変数xに次元1シンドローム値sを代入する。
次元1軟判定入力値計算部112は、次元1修正情報メモリ212から、修正情報を読み出す。読み出された修正情報のうち、他方の次元(次元2)で発見された修正情報をa1,a2,・・・,amとする。なお、a1,a2,・・・,amの値は、次元1の成分符号内のビット位置を示す。すなわち、修正情報は、修正情報が示す各位置でビットが反転されたことを示す。
次元1軟判定入力値計算部112は、信頼度情報メモリ231から、a1,a2,・・・,amに対応する信頼度情報pr1,pr2,・・・,prmを読み出す。
次元1軟判定入力値計算部112は、位置ai(i=1,2,・・・,m)に対して、以下の計算を行う:
(C1)priから外部値eiを求める。
(C2)σi=λi+eiを求める。λiσi<0iならば、変数xを、x+Hxiの値に書き換える。λiは読み出したハードビットデータの関数を示す。Hは、次元1の成分符号のパリティ検査行列を示す。xiは位置aiに対応する成分のみが1であり、他の成分は0であるベクトルを示す。
(C1)priから外部値eiを求める。
(C2)σi=λi+eiを求める。λiσi<0iならば、変数xを、x+Hxiの値に書き換える。λiは読み出したハードビットデータの関数を示す。Hは、次元1の成分符号のパリティ検査行列を示す。xiは位置aiに対応する成分のみが1であり、他の成分は0であるベクトルを示す。
次元1軟判定入力値計算部112は、最終的に得られた変数xの値(すなわち、次元1シンドローム値sから始めて、上述の(C2)の書き換えにより得られた値)をs’とする。次元1軟判定入力値計算部112は、s’,σ1,σ2,・・・,σm,a1,a2,・・・,amを、軟判定入力値として出力する。
上述の方法は、次元1シンドローム値メモリ211から読み出した次元1シンドローム値sを、次元1シンドローム値sを読み出した時に得られている情報a1,a2,・・・,am,pr1,pr2,・・・,prmを用いて更新することでs’を得る手順になっている。この方法の変形例として、a1,a2,・・・,am,pr1,pr2,・・・,prmが得られた時点(後述するステップS105)で次元1シンドローム値sを更新することでs’を得て、次元1シンドローム値メモリ211にs’を記憶しておく手順としてもよい。この場合、ステップS104では次元1シンドローム値メモリ211から読み出した値s’を更新する必要がない。
ステップS105について説明する。次元1SISO復号部113は、次元1のSISO復号を行い、訂正ビット位置を示す修正情報を次元1修正情報メモリ212および次元2修正情報メモリ222へ記憶するとともに、SISO復号の結果として得られた信頼度情報を信頼度情報メモリ231へ記憶する(ステップS105)。なお次元1SISO復号部113は、上記のように決定部241により計算される修正情報アドレスを用いて、次元1修正情報メモリ212に修正情報を記憶することができる。
以下に、SISO復号の例を説明する。以下の例は、上述の軟判定入力値の例を用いるSISO復号の例である。また、以下では、次元1の成分符号についてのSISO復号の例を説明するが、次元2の成分符号についても同様の手順を適用できる。
なお、次元1SISO復号部113は、以下に説明するSISO復号のうちいずれか1つを実行するように構成されてもよいし、複数種類のSISO復号を切り替えて実行するように構成されてもよい。例えば次元1SISO復号部113は、複数種類のSISO復号のうち、復号状況に応じて選択されたSISO復号を実行してもよい。
SISO復号の例1:限界距離復号
次元1SISO復号部113は、s’を用いた、以下の手順の復号により、訂正ビット位置および信頼度情報を求める。
(E1-1)s’を用いて次元1の成分符号の限界距離復号を行い、訂正ビット位置eを求める(この復号方法をシンドローム復号と呼ぶ)。
(E1-2)訂正ビット位置eと、信頼度情報メモリ231に記憶されている信頼度情報とから、次元1の成分符号の復号結果の信頼度情報prを求める。
(E1-3)訂正ビット位置e、信頼度情報prを出力する。
次元1SISO復号部113は、s’を用いた、以下の手順の復号により、訂正ビット位置および信頼度情報を求める。
(E1-1)s’を用いて次元1の成分符号の限界距離復号を行い、訂正ビット位置eを求める(この復号方法をシンドローム復号と呼ぶ)。
(E1-2)訂正ビット位置eと、信頼度情報メモリ231に記憶されている信頼度情報とから、次元1の成分符号の復号結果の信頼度情報prを求める。
(E1-3)訂正ビット位置e、信頼度情報prを出力する。
SISO復号の例2:Chase復号を応用した方法
次元1SISO復号部113は、s’,σ1,σ2,・・・,σm,a1,a2,・・・,amを用いた、以下の手順の復号により、訂正ビット位置および信頼度情報を求める。
(E2-1)σ1,σ2,・・・,σmを、絶対値が小さい順にソートする。a1,a2,・・・,amもσ1,σ2,・・・,σmと添字が対応するように並び替える。ソートは近似的に行ってもよい。以下、σ1,σ2,・・・,σm,a1,a2,・・・,amはソート処理後のものとする。
(E2-2)t,f(t≦mかつf≦t)を任意の定数として、a1,a2,・・・,atからf個を選択する。tCf通りの選択の組み合わせそれぞれについて、以下の処理(E2-2-1)を行う。
(E2-2-1)選択した位置のビットを反転させたシンドローム値s’’をs’から計算する(ステップS104の(C2)と同様の計算)。そして、s’’を用いてシンドローム復号を行い、訂正ビット位置eを求める。さらに、訂正ビット位置eとf個の反転位置と信頼度情報メモリ231に記憶されている信頼度情報とから、次元1の成分符号の信頼度情報prを求める。
(E2-3)tCf通りの選択の組み合わせそれぞれについて得られた訂正ビット位置および信頼度情報の組の中で、信頼度情報が最大である組を(e^,pr^)とする。
(E2-4)訂正ビット位置e^、信頼度情報pr^を出力する。
次元1SISO復号部113は、s’,σ1,σ2,・・・,σm,a1,a2,・・・,amを用いた、以下の手順の復号により、訂正ビット位置および信頼度情報を求める。
(E2-1)σ1,σ2,・・・,σmを、絶対値が小さい順にソートする。a1,a2,・・・,amもσ1,σ2,・・・,σmと添字が対応するように並び替える。ソートは近似的に行ってもよい。以下、σ1,σ2,・・・,σm,a1,a2,・・・,amはソート処理後のものとする。
(E2-2)t,f(t≦mかつf≦t)を任意の定数として、a1,a2,・・・,atからf個を選択する。tCf通りの選択の組み合わせそれぞれについて、以下の処理(E2-2-1)を行う。
(E2-2-1)選択した位置のビットを反転させたシンドローム値s’’をs’から計算する(ステップS104の(C2)と同様の計算)。そして、s’’を用いてシンドローム復号を行い、訂正ビット位置eを求める。さらに、訂正ビット位置eとf個の反転位置と信頼度情報メモリ231に記憶されている信頼度情報とから、次元1の成分符号の信頼度情報prを求める。
(E2-3)tCf通りの選択の組み合わせそれぞれについて得られた訂正ビット位置および信頼度情報の組の中で、信頼度情報が最大である組を(e^,pr^)とする。
(E2-4)訂正ビット位置e^、信頼度情報pr^を出力する。
図9のフローチャートの説明に戻る。次に、次元2の成分符号の復号処理が実行される。以下のステップS106、ステップS107は、複数の次元2の成分符号ごとに実行される。
まず、次元2軟判定入力値計算部122は、計算された次元2シンドローム値と、次元2修正情報メモリ222から入力される修正情報と、信頼度情報メモリ231から入力される信頼度情報と、を用いて次元2軟判定入力値(第2の軟判定入力値の一例)を計算する(ステップS106)。ステップS106は、ステップS104と同様の手順により実行することができる。
次元2軟判定入力値計算部122は、次元2のSISO復号を行い、訂正ビット位置を示す修正情報を次元1修正情報メモリ212および次元2修正情報メモリ222へ記憶するとともに、SISO復号の結果として得られた信頼度情報を信頼度情報メモリ231へ記憶する(ステップS107)。ステップS107は、ステップS105と同様の手順により実行することができる。
次に、復号器18は、復号に成功したか否かを判定する(ステップS108)。復号に成功したとは、例えば正しいと判断できる復号語が発見されたことなどであってよい。
一方、復号に成功していない場合(ステップS108のNO)、復号器18は、本動作の反復回数が予め設定しておいた規定値に達しているか否かを判定する(ステップS110)。規定値に達していない場合(ステップS110のNO)、復号器18は、反復回数を1増やし、ステップS104へリターンして、以降の動作を実行する。また、規定値に達していた場合(ステップS110のYES)、復号器18は、外部の制御部等に復号の失敗を通知し(ステップS111)、復号処理を終了する。なお、反復回数とは、例えばステップS104~S107の動作を繰り返した回数等であってよい。
復号に成功した場合(ステップS108のYES)、復号器18は、外部の制御部等に復号の成功とともに復号語を通知し(ステップS109)、復号処理を終了する。復号器18は、例えば、復号処理により得られた、信頼度情報メモリ231、次元1修正情報メモリ212、および、次元2修正情報メモリ222に記憶されている情報を用いて、読出し情報メモリ201に書き込まれているハードビットデータを修正する。復号器18は、修正後のハードビットデータを最終的な出力(出力復号語)とする。
例えば復号器18は、読出し情報メモリ201内のハードビットデータの各ビットについて、上述の式(1)を用いて対数事後確率比を計算する。復号器18は、計算した対数事後確率比の正負により、読出し情報メモリ201に記憶されている各ビットに対応するハードビットデータを修正するかどうかを決定する。復号器18は、決定したとおりにハードビットデータを修正し、出力復号語とする。
図9の例では、ステップS109で読出し情報メモリ201に記憶されているハードビットデータをまとめて修正している。ハードビットデータの修正方法はこれに限られず、例えば、各繰り返しのSISO復号の直後にハードビットデータを毎回修正する方法でもよい。この場合、ステップS109内での修正処理は不要であり、ステップS109に到達した時点での読出し情報メモリ201に記憶されているハードビットデータをそのまま最終的な出力(出力復号語)とすればよい。
これまでは、二次元の誤り訂正符号での復号処理の例を説明したが、上述のように、多次元(N次元)の誤り訂正符号に対しても同様の手順を適用できる。例えばN個の次元のうち第i(1≦i≦N)次元の第a(1≦a≦ni、niは第i次元の成分符号数)番目の成分符号を第aの成分符号とし、第aの成分符号に対する修正情報、信頼度情報、および、軟判定入力値を、それぞれ第aの修正情報、第aの信頼度情報、および、第aの軟判定入力値とする。
この場合、復号器18は、第aの修正情報、第aの信頼度情報、および、第aの成分符号のシンドローム値に基づいて、第iの成分符号に対する第aの軟判定入力値を計算する。復号器18は、第aの軟判定入力値を入力して第aの成分符号の復号処理を実行することにより、第aの成分符号の復号語、第aの修正情報、および、第aの信頼度情報を計算する。復号器18は、計算した第aの修正情報および第aの成分符号の復号処理によって修正された第b(j≠i、1≦j≦N、bは第j次元の成分符号のインデックス)の成分符号の修正された位置を示す第bの修正情報を修正情報メモリに記憶し、第aの信頼度情報を信頼度情報メモリに記憶する。
本実施形態のメモリシステムは、1つの成分符号あたりの修正情報数を固定値とするのではなく、成分符号数Mに応じて決定する。例えば修正情報数は、成分符号数Mが大きいほど、値が小さくなるように決定される。これにより、成分符号数が大きい場合でも必要なメモリの総容量を削減することができる。
(第2の実施形態)
成分符号数に応じて記憶する情報の個数を変更する対象となるメモリは、修正情報メモリ(FMEM)に限られない。第2の実施形態では、信頼度が低いと判定されたビット(低信頼ビット)の位置を示す低信頼位置情報を記憶するメモリ(低信頼位置情報メモリ)を対象とする例を説明する。
成分符号数に応じて記憶する情報の個数を変更する対象となるメモリは、修正情報メモリ(FMEM)に限られない。第2の実施形態では、信頼度が低いと判定されたビット(低信頼ビット)の位置を示す低信頼位置情報を記憶するメモリ(低信頼位置情報メモリ)を対象とする例を説明する。
第2の実施形態のメモリシステムは、SISO復号部の機能が、第1の実施形態と異なっている。以下では、第2の実施形態のSISO復号部182-2の機能について説明する。図10は、SISO復号部182-2の概略構成例を示すブロック図である。
図10に示すように、SISO復号部182-2は、読出し情報メモリ201と、次元1シンドローム値計算部111と、次元1低信頼位置情報計算部114-2と、次元1低信頼位置情報メモリ213-2と、次元1シンドローム値メモリ211と、次元1軟判定入力値計算部112-2と、次元1SISO復号部113と、次元1修正情報メモリ212と、次元2シンドローム値計算部121と、次元2シンドローム値メモリ221と、次元2低信頼位置情報計算部124-2と、次元2低信頼位置情報メモリ223-2と、次元2軟判定入力値計算部122-2と、次元2SISO復号部123と、次元2修正情報メモリ222と、信頼度情報メモリ231と、決定部241-2と、を備えている。なお、図10は符号のシンボルが二次元の場合の例を示すが、上記のように、SISO復号部182-2は、二次元以外の多次元に対応する構成であってもよい。
第2の実施形態では、次元1低信頼位置情報計算部114-2、次元1低信頼位置情報メモリ213-2、次元1軟判定入力値計算部112-2、次元2低信頼位置情報計算部124-2、次元2低信頼位置情報メモリ223-2、次元2軟判定入力値計算部122-2、および、決定部241-2の機能が、第1の実施形態と異なっている。その他の構成は第1の実施形態と同様であるため同一の符号を付し、説明を省略する。
次元1低信頼位置情報計算部114-2は、次元1の成分符号の低信頼位置情報(次元1低信頼位置情報、第1の低信頼位置情報の一例)を計算する。低信頼位置情報は、信頼度が低いと判定されたビット(低信頼ビット)の位置を示す情報である。
次元1低信頼位置情報メモリ213-2は、次元1低信頼位置情報計算部114-2で計算された次元1低信頼位置情報を記憶する。次元1低信頼位置情報メモリ213-2は、次元1軟判定入力値計算部112-2へ次元1低信頼位置情報を出力する。
図11は、低信頼位置情報の計算および記憶の一例を説明するための図である。図11では、符号長(成分符号数)が16である4行4列の積符号を用いる例を説明する。図11の左上のグラフは、閾値電圧分布と、ハードビットデータ(HB)およびソフトビットデータ(SB1)との関係を示す。図11の例では、ビット“1”に対応する分布と、ビット“0”に対応する分布と、が重なる領域に対応するSB1の値“0”が、このビットの信頼度が低いことを表す。
すなわち、次元1低信頼位置情報計算部114-2は、SB1の値が“0”である場合に、対応するビットが低信頼ビットであると判定し、SB1の値が“1”である場合に、対応するビットが低信頼ビットでないと判定する。
図11の右上の表は、16個の各ビットのHBおよびSB1の値の例を示す。インデックスは、16個の各ビットを識別する情報である。各インデックスについて、HBおよびSB1の2ビットの情報が得られる。
図11の右下の図は、右上の表のSB1を、積符号と同じ4行4列の形式で表した図を含む。なお、図11の例では、インデックスの値と行とは以下のように対応する。
・インデックス0~3 :行0
・インデックス4~7 :行1
・インデックス8~11 :行2
・インデックス12~15:行3
・インデックス0~3 :行0
・インデックス4~7 :行1
・インデックス8~11 :行2
・インデックス12~15:行3
次元1低信頼位置情報は、次元1(行方向)での低信頼ビットの位置を示す。次元1低信頼位置情報は、次元1の各成分符号の低信頼ビットの位置を示すアドレス(成分符号内アドレス)に相当すると解釈することもできる。
例えば、行0では、列2に対応するビットが低信頼ビット(SB1の値が0)である。従って、次元1低信頼位置情報計算部114-2は、行0に対する次元1低信頼位置情報を、列2の位置を示す成分符号内アドレスである「2」とする。同様にして、次元1低信頼位置情報計算部114-2は、行1~3についても次元1低信頼位置情報を計算する。計算された次元1低信頼位置情報は、図11に示すように、次元1低信頼位置情報メモリ213-2に記憶される。
次元1低信頼位置情報計算部114-2は、例えば、CMEMに記憶されたソフトビットデータ(SB1)を読み出し、読み出したSB1の値を用いて次元1低信頼位置情報を計算し、計算した次元1低信頼位置情報を次元1低信頼位置情報メモリ213-2に記憶する。この一連の作業を、次元1低信頼位置情報メモリ213-2の初期化という場合がある。
図11の例では、次元1低信頼位置情報メモリ213-2は、次元1低信頼位置情報を成分符号毎に4個分として、4成分符号分の計16個を記憶可能である。次元1低信頼位置情報の個数を固定値とすると、第1の実施形態と同様に、低信頼位置情報メモリ(次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2)のメモリ領域を効率的に使用できない場合がある。
そこで、決定部241-2は、成分符号数に基づく値に応じて、1つの成分符号に対して割り当てる低信頼位置情報の個数(低信頼位置情報数)を決定する。決定部241-2は、成分符号数に基づく値として成分符号数Mを用いて、低信頼位置情報数を決定する。また、決定部241-2は、M個の成分符号それぞれに対して、低信頼位置情報数分の低信頼位置情報を記憶するための低信頼位置情報メモリのメモリ領域を割り当てる。また決定部241-2は、低信頼位置情報数に基づいて、M個の成分符号それぞれに対する低信頼位置情報の低信頼位置情報メモリ上のアドレス(低信頼位置情報アドレス)を決定する。
低信頼位置情報数の決定方法は、第1の実施形態の決定部241による修正情報数の決定方法と同様である。すなわち、決定部241-2は、Mの値が大きいほど、値が小さくなるように低信頼位置情報数を決定する。例えば決定部241-2は、成分符号数Mが500の場合、低信頼位置情報数を15とし、成分符号数Mが100の場合、低信頼位置情報数を30とする。
また、決定部241-2は、第1の実施形態の決定部241と同様の機能をさらに備えてもよい。すなわち、決定部241-2は、修正情報数を決定する機能、および、低信頼位置情報数を決定する機能の両方をそなえるように構成されてもよい。
なお、復号処理中にあるビットが低信頼ビットであるか否かを判定する必要がある場合は、以下の(A1)、(A2)の2つの方法を用いることができる。本実施形態では、主に(A1)のように次元1低信頼位置情報メモリ213-2を用いる方法を適用する。
(A1)次元1低信頼位置情報メモリ213-2にアクセスして、該当ビットの位置を示す次元1低信頼位置情報(成分符号内アドレス)が存在すれば、該当ビットは低信頼ビットであると判定し、存在しなければ該当ビットは高信頼ビットであると判定する。
(A2)CMEMにアクセスして、該当ビットのSB1が0であれば該当ビットは低信頼であると判定し、SB1が1であれば該当ビットは高信頼ビットであると判定する。
(A1)次元1低信頼位置情報メモリ213-2にアクセスして、該当ビットの位置を示す次元1低信頼位置情報(成分符号内アドレス)が存在すれば、該当ビットは低信頼ビットであると判定し、存在しなければ該当ビットは高信頼ビットであると判定する。
(A2)CMEMにアクセスして、該当ビットのSB1が0であれば該当ビットは低信頼であると判定し、SB1が1であれば該当ビットは高信頼ビットであると判定する。
次元1軟判定入力値計算部112-2は、次元1シンドローム値メモリ211から入力される次元1シンドローム値と、次元1修正情報メモリ212から入力される修正情報と、信頼度情報メモリ231から入力される信頼度情報と、次元1低信頼位置情報メモリ213-2から入力される次元1低信頼位置情報と、を用いて、次元1軟判定入力値(第1の軟判定入力値の一例)を計算する。次元1軟判定入力値計算部112-2による次元1軟判定入力値の計算方法の詳細は後述する。次元1軟判定入力値計算部112-2は、次元1軟判定入力値を次元1SISO復号部113へ出力する。
次元1の成分符号についての処理は、次元1シンドローム値計算部111、次元1シンドローム値メモリ211、次元1低信頼位置情報計算部114-2、次元1低信頼位置情報メモリ213-2、次元1軟判定入力値計算部112-2、次元1SISO復号部113、次元1修正情報メモリ212、信頼度情報メモリ231、および、次元2修正情報メモリ222を用いて実現される。
次元2の成分符号についての処理は、「次元1」と「次元2」とを入れ替えれば、次元1の成分符号についての処理と同等であるため詳細な説明を省略する。例えば、次元1の成分符号についての処理で用いられる各部は、次元2の成分符号についての処理で用いられる各部と以下のように対応する。
・次元1シンドローム値計算部111:次元2シンドローム値計算部121
・次元1シンドローム値メモリ211:次元2シンドローム値メモリ221
・次元1低信頼位置情報計算部114-2:次元2低信頼位置情報計算部124-2
・次元1低信頼位置情報メモリ213-2:次元2低信頼位置情報メモリ223-2
・次元1軟判定入力値計算部112-2:次元2軟判定入力値計算部122-2
・次元1SISO復号部113:次元2SISO復号部123
・次元1修正情報メモリ212:次元2修正情報メモリ222
・次元1シンドローム値計算部111:次元2シンドローム値計算部121
・次元1シンドローム値メモリ211:次元2シンドローム値メモリ221
・次元1低信頼位置情報計算部114-2:次元2低信頼位置情報計算部124-2
・次元1低信頼位置情報メモリ213-2:次元2低信頼位置情報メモリ223-2
・次元1軟判定入力値計算部112-2:次元2軟判定入力値計算部122-2
・次元1SISO復号部113:次元2SISO復号部123
・次元1修正情報メモリ212:次元2修正情報メモリ222
以下では、次元を区別しない場合、各メモリを以下のように表す場合がある。
・次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2:LMEM
・次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2:LMEM
図12は、本実施形態のメモリシステムによる復号処理の一例を示すフローチャートである。図12は、二次元の誤り訂正符号に対する復号処理の例を示す。
制御部11は、不揮発性メモリ20から、誤り訂正符号を読み出し、読出し情報を得る(ステップS201)。制御部11は、読み出された読出し情報を読出し情報メモリ201へ転送して記憶する(ステップS202)。
SISO復号部182-2は、初期化処理を実行する(ステップS203)。初期化処理は、例えば以下のような処理を含む。
・制御部11から転送された読出し情報を読出し情報メモリ201(HMEM、CMEM)に記憶する。
・復号対象とする次元(復号対象次元:行または列)を設定する。
・HMEMに記憶されているハードビットデータから各成分符号のシンドローム値を計算し、SMEMに記憶する。
・FMEMのエントリを空にする。
・信頼度情報メモリ231を0に初期化する。
・LMEMを初期化する。
・制御部11から転送された読出し情報を読出し情報メモリ201(HMEM、CMEM)に記憶する。
・復号対象とする次元(復号対象次元:行または列)を設定する。
・HMEMに記憶されているハードビットデータから各成分符号のシンドローム値を計算し、SMEMに記憶する。
・FMEMのエントリを空にする。
・信頼度情報メモリ231を0に初期化する。
・LMEMを初期化する。
このように、ステップS203の初期化処理は、LMEMの初期化を含む。後述する変形例のように、LMEMの初期化はステップS203の初期化処理に含まれなくてもよい。
初期化処理の後、SISO復号部182-2は、設定した次元の成分符号の復号処理(成分符号復号処理)を実行する(ステップS204)。成分符号復号処理の詳細は後述する。
SISO復号部182-2は、復号に成功したか否かを判定する(ステップS205)。復号に成功したとは、例えば正しいと判断できる復号語が発見されたことなどであってよい。
復号に成功していない場合(ステップS205のNO)、SISO復号部182-2は、本動作の反復回数が予め設定しておいた規定値に達しているか否かを判定する(ステップS07)。規定値に達していない場合(ステップS207のNO)、SISO復号部182-2は、復号対象次元を他の次元に切り替えるとともに、反復回数を1増やし、ステップS204へリターンして、以降の動作を実行する。規定値に達していた場合(ステップS207のYES)、SISO復号部182-2は、外部の制御部等に復号の失敗を通知し(ステップS208)、復号処理を終了する。なお、反復回数とは、例えばステップS204の成分符号復号処理を繰り返した回数等であってよい。
復号に成功した場合(ステップS205のYES)、SISO復号部182-2は、外部の制御部等に復号の成功とともに復号語を通知し(ステップS206)、復号処理を終了する。SISO復号部182-2は、例えば、復号処理により得られた、信頼度情報メモリ231、次元1修正情報メモリ212、および、次元2修正情報メモリ222に記憶されている情報を用いて、読出し情報メモリ201に書き込まれているハードビットデータを修正する。SISO復号部182-2は、修正後のハードビットデータを最終的な出力(出力復号語)とする。
例えばSISO復号部182-2は、読出し情報メモリ201内のハードビットデータの各ビットについて、上記の式(1)を用いて対数事後確率比を計算する。SISO復号部182-2は、計算した対数事後確率比の正負により、読出し情報メモリ201に記憶されている各ビットに対応するハードビットデータを修正するかどうかを決定する。SISO復号部182-2は、決定したとおりにハードビットデータを修正し、出力復号語とする。
次に、ステップS204の成分符号復号処理の詳細について説明する。図13は、成分符号復号処理の一例を示すフローチャートである。
図13では、次元1(行)の成分符号を復号する場合を例に説明するが、他の次元(次元2:列)についても同様の手順を適用できる。また、以下では、エラーである確率が高いビットをフリップ(反転)してから限界距離復号を行うChase復号を用いる例を説明する。適用可能な復号方法はChase復号に限られず、どのような復号方法であってもよい。
SISO復号部182-2の次元1軟判定入力値計算部112-2は、各メモリから復号に用いるデータを読み出す(ステップS301)。例えば次元1軟判定入力値計算部112-2は、SMEMからシンドローム値(次元1シンドローム値)を読み出し、FMEMから修正情報(次元1修正情報)を読み出し、LMEMから低信頼位置情報(次元1低信頼位置情報)を読み出し、信頼度情報メモリ231から信頼度情報を読み出す。
次元1軟判定入力値計算部112-2は、読み出した各情報を用いて、軟判定入力値の硬判定値に対応するシンドローム値(軟判定入力値の硬判定値から計算したシンドローム値に相当する値)を計算する(ステップS302)。ステップS302の詳細は後述する。なお、軟判定入力値の硬判定値に対応するシンドローム値を、以下では修正シンドローム値という場合がある。
次元1SISO復号部113は、次元1修正情報および次元1低信頼位置情報などを用いて、Chase復号で用いるフリップ候補位置リストを作成する(ステップS303)。フリップ候補位置リストは、フリップさせるビットの位置を示すフリップ位置(反転位置)の候補を含む情報である。フリップ候補位置リストの作成方法の詳細は後述する。
次元1SISO復号部113は、ステップS302で得られた修正シンドローム値、および、ステップS303で得られたフリップ候補位置リストを用いてChase復号を実行する(ステップS304)。
次元1SISO復号部113は、Chase復号による訂正ビット位置を示す修正情報を次元1修正情報メモリ212および次元2修正情報メモリ222へ記憶するとともに、Chase復号の結果として得られた信頼度情報を信頼度情報メモリ231へ記憶する(ステップS305)。
次に、LMEMの初期化のタイミングを変更した変形例1、変形例2について説明する。
(変形例1)
変形例1は、図12のステップS203の初期化処理ではLMEMの初期化を実行せず、ステップS204の成分符号復号処理の中でLMEMの初期化を実行する。図14は、変形例1の成分符号復号処理のフローチャートである。以下では、次元1(行)の成分符号を復号する場合を例に説明するが、他の次元(次元2、列)についても同様の手順を適用できる。
変形例1は、図12のステップS203の初期化処理ではLMEMの初期化を実行せず、ステップS204の成分符号復号処理の中でLMEMの初期化を実行する。図14は、変形例1の成分符号復号処理のフローチャートである。以下では、次元1(行)の成分符号を復号する場合を例に説明するが、他の次元(次元2、列)についても同様の手順を適用できる。
次元1低信頼位置情報計算部114-2は、LMEM(次元1低信頼位置情報メモリ213-2)の初期化を実行するか否かを判定する(ステップS401)。例えば次元1低信頼位置情報計算部114-2は、図12に従って開始された復号処理の中で、復号対象として設定された成分符号に対して最初に成分符号復号処理を実行する場合、LMEMの初期化を実行すると判定する。それ以外の場合、次元1低信頼位置情報計算部114-2は、LMEMの初期化を実行しないと判定する。
LMEMの初期化を実行すると判定した場合(ステップS401のYES)、次元1低信頼位置情報計算部114-2は、LMEMのエントリのうち、復号対象として設定された成分符号のエントリを初期化する。例えば、図11の行0について最初に成分符号復号処理が実行される場合、次元1低信頼位置情報計算部114-2は、行0について次元1低信頼位置情報を計算し、計算した次元1低信頼位置情報を次元1低信頼位置情報メモリ213-2に記憶する。
本変形例では、各成分符号で必要なエントリのみを初期化の対象とするため、処理時間が短縮される。また、ある成分符号についてのLMEMの初期化を含む処理を、他の成分符号についての他の処理を並列化することが可能となる。これにより、復号処理全体に対して必要となる処理サイクル数を相対的に小さくすることができる。
LMEMの初期化を実行後、および、LMEMの初期化を実行すると判定しなかった場合(ステップS401のNO)、次元1低信頼位置情報計算部114-2は、以降のステップS403からステップS407を実行する。ステップS403からステップS407は、図13のステップS301からステップS305と同様であるため詳細な説明を省略する。
(変形例2)
上記実施形態および変形例1は、M個の成分符号それぞれについて低信頼位置情報を記憶する低信頼位置情報メモリ(次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2)を備える例である。例えば図11に示すように、4行4列の積符号の場合(M=8)、次元1低信頼位置情報メモリ213-2は、行方向の4個の成分符号それぞれについて次元1低信頼位置情報を記憶し、次元2低信頼位置情報メモリ223-2は、列方向の4個の成分符号それぞれについて次元2低信頼位置情報を記憶する。
上記実施形態および変形例1は、M個の成分符号それぞれについて低信頼位置情報を記憶する低信頼位置情報メモリ(次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2)を備える例である。例えば図11に示すように、4行4列の積符号の場合(M=8)、次元1低信頼位置情報メモリ213-2は、行方向の4個の成分符号それぞれについて次元1低信頼位置情報を記憶し、次元2低信頼位置情報メモリ223-2は、列方向の4個の成分符号それぞれについて次元2低信頼位置情報を記憶する。
変形例2では、M個より小さいQ個(Q<M)の成分符号についての低信頼位置情報を記憶する記憶領域を含む低信頼位置情報メモリを備える例を説明する。次元1低信頼位置情報メモリ213-2および次元2低信頼位置情報メモリ223-2が、合計でQ個の成分符号の低信頼位置情報を記憶するように構成されてもよいし、次元1低信頼位置情報メモリ213-2および次元2低信頼位置情報メモリ223-2を統合した1つの低信頼位置情報メモリがQ個の成分符号の低信頼位置情報を記憶するように構成されてもよい。前者の場合、例えば、次元1低信頼位置情報メモリ213-2および次元2低信頼位置情報メモリ223-2は、それぞれQ’個(Q’<(M/2))の成分符号の低信頼位置情報を記憶してもよい。
本変形例では、成分符号復号処理の中で、LMEMの初期化が毎回実行される。例えば、ある成分符号について成分符号復号処理が実行される場合、当該成分符号について低信頼位置情報が毎回計算され、Q個分の低信頼位置情報の記憶領域のうち、未使用の記憶領域に対して計算された低信頼位置情報が記憶される。当該成分符号の成分符号復号処理が終了したら、記憶した低信頼位置情報は削除される。
本変形例は、全成分符号の個数(M)より小さい個数(Q)の成分符号の低信頼位置情報を記憶可能な記憶領域を使いまわす構成であると解釈することができる。
Qは1以上M未満であればどのような値でもよいが、例えば、パイプライン処理などにより複数の成分符号に対する処理を並列に実行する構成の場合は、Qは、パイプライン処理のステージ数に相当する値とすればよい。
図15は、変形例2の成分符号復号処理のフローチャートである。以下では、次元1(行)の成分符号を復号する場合を例に説明するが、他の次元(次元2、列)についても同様の手順を適用できる。
次元1低信頼位置情報計算部114-2は、復号対象として設定された成分符号について、次元1低信頼位置情報メモリ213-2の初期化を行う(ステップS501)。例えば次元1低信頼位置情報計算部114-2は、当該成分符号について次元1低信頼位置情報を計算し、計算した次元1低信頼位置情報を次元1低信頼位置情報メモリ213-2の未使用の記憶領域に記憶する。
ステップS502からステップS506は、図13のステップS301からステップS305と同様であるため詳細な説明を省略する。
本変形例によれば、低信頼位置情報メモリのサイズをより小さくすることができる。このため、例えば、メモリシステム1の回路規模を小さくすることができる。
次に、ステップS302の修正シンドローム値の計算方法の詳細について説明する。修正シンドローム値の計算では、軟判定入力値の計算が実行される。
以下では、次元1の成分符号の成分符号復号処理で、次元1軟判定入力値計算部112-2が次元1軟判定入力値および次元1の修正シンドローム値を計算する場合を例に説明する。また、以下では、修正情報が、修正位置、エラーフラグ、および、他方次元エラーフラグを含み、FMEMのあるエントリ(修正情報)に対応する修正位置で軟判定入力値を計算する場合を説明する。さらに以下では、処理対象としている修正位置で交差する他方次元の成分符号を「他方次元で着目している成分符号」と呼ぶ。従って、この例では他方次元は次元2となる。次元2についても次元1と同様の手順を適用できる。
次元1軟判定入力値計算部112-2は、以下の入力情報を入力し、出力情報として軟判定入力値Linを出力する。
・入力情報:
L(チャネル値):低信頼ビットの場合はLL、低信頼ビットでない場合はLHとする(|LL|<|LH|)
f1:エラーフラグ(エラーと判定しているとき1、それ以外0)
f2:他方次元エラーフラグ(エラーと判定しているとき1、それ以外0)
Φ1:復号対象次元で着目している成分符号の復号信頼度(0以上1以下の確率値)
Φ2:他方次元で着目している成分符号の復号信頼度(0以上1以下の確率値)
・入力情報:
L(チャネル値):低信頼ビットの場合はLL、低信頼ビットでない場合はLHとする(|LL|<|LH|)
f1:エラーフラグ(エラーと判定しているとき1、それ以外0)
f2:他方次元エラーフラグ(エラーと判定しているとき1、それ以外0)
Φ1:復号対象次元で着目している成分符号の復号信頼度(0以上1以下の確率値)
Φ2:他方次元で着目している成分符号の復号信頼度(0以上1以下の確率値)
なお、信頼度情報メモリ231は、復号信頼度を示す確率値をそのまま(ある量子化ビット幅で)記憶してもよいし、復号信頼度に対応する離散値を記憶してもよい。後者の場合、次元1軟判定入力値計算部112-2は、軟判定入力値を計算するときに(テーブル引きなどで)記憶された離散値を確率値に変換すればよい。
Linは、上記の各式に従った計算を実行する回路で計算してもよいし、入力情報と出力情報とを対応づけたテーブルを用いて計算してもよい。また、以降の処理で、Linの絶対値、および、Linの符号が必要になる場合がある。このような場合、Linを求めた後に絶対値または符号のみを取り出す処理が行われてもよいし、入力情報とLinの絶対値とを対応づけたテーブル、および、入力情報とLinの符号とを対応づけたテーブルが用いられてもよい。
このように、本実施形態では、修正情報、信頼度情報、シンドローム値、および、低信頼位置情報に基づいて、軟判定入力値が計算される。この軟判定入力値は、近似的に求めた外部値により計算されると解釈することができる。すなわち、図3のようなMax-log-MAP復号などを用いる図3のターボ復号器と異なり、本実施形態では、外部値を外部値メモリに記憶する必要がない。従って、復号に必要なメモリ量が増大することを回避可能となる。また、低信頼位置情報を用いることにより、信頼度が低い位置とそれ以外の位置とでチャネル値を使い分けることができるため、より正確な軟判定入力値を計算し、訂正能力を向上させることが可能となる。
修正シンドローム値は、以下のような手順で計算される。
(B1)「FMEMに記憶され、かつ、他方次元でエラーと判定されているビット」のそれぞれに対し、軟判定入力値の符号(正負)を求める。
(B2)軟判定入力値の符号がチャネル値の符号と逆であるビット位置それぞれに対し、該当位置のビットの“フリップ”をSMEMから読み出したシンドローム値に反映させ、修正シンドローム値として出力する。
(B1)「FMEMに記憶され、かつ、他方次元でエラーと判定されているビット」のそれぞれに対し、軟判定入力値の符号(正負)を求める。
(B2)軟判定入力値の符号がチャネル値の符号と逆であるビット位置それぞれに対し、該当位置のビットの“フリップ”をSMEMから読み出したシンドローム値に反映させ、修正シンドローム値として出力する。
なお、修正情報が上記の反転フラグを含む場合、軟判定入力値の符号がチャネル値の符号と逆であるかは、この反転フラグを用いて判定することができる。
図16は、修正シンドローム値の計算例を示す図である。図16に示すように、SMEMから読み出したシンドローム値は「チャネル値の硬判定値から計算したシンドローム値」に対応する。このシンドローム値を、「軟判定入力値の硬判定値から計算したシンドローム値」となるように修正することが、修正シンドローム値の計算に相当する。
チャネル値と軟判定入力値とで符号が反転している可能性があるのは「FMEMに記憶され、かつ、他方次元でエラーと判定されているビット」のみである。このため、軟判定入力値は、該当する位置のみで計算すればよい。図16では、位置1301が、軟判定入力値を計算する位置に相当する。
次に、ステップS303のフリップ候補位置リストの作成方法の詳細について説明する。Chase復号ではエラーである確率が高いビットをフリップしてから限界距離復号が実行される。このため、その準備としてフリップするビットの位置の候補を定めたフリップ候補位置リストが作成される。
以下、フリップ候補位置リストの作成方法の3つの例(M1)、(M2)、(M3)について説明する。
(M1)作成方法1
以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:LMEMに記憶されたビット
・優先順位2:FMEMに記憶され、かつ、他方次元でエラーと判定されているビット
・優先順位3:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位4:パリティビット
以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:LMEMに記憶されたビット
・優先順位2:FMEMに記憶され、かつ、他方次元でエラーと判定されているビット
・優先順位3:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位4:パリティビット
(M2)作成方法2
作成方法1の優先順位1を以下に置き換える(優先順位2~4は作成方法1と同じ)。
・優先順位1:LMEMに記憶されたビットであり、かつ、軟判定入力値の絶対値が閾値Th以下のビット
作成方法1の優先順位1を以下に置き換える(優先順位2~4は作成方法1と同じ)。
・優先順位1:LMEMに記憶されたビットであり、かつ、軟判定入力値の絶対値が閾値Th以下のビット
(M3)作成方法3
(M3-1)「FMEMに記憶され、かつ、他方次元でエラーと判定されているビット」のそれぞれに対し、軟判定入力値の絶対値を求める。
(M3-2)(M3-1)で処理対象となったビットのそれぞれについて、軟判定入力値の絶対値を閾値ThL、ThH(ThL<ThH)と比較する。絶対値がThL以下であれば、該当ビットを集合SLに分類し、絶対値がThLより大きくThH以下であれば、該当ビットを集合SHに分類する。なお絶対値がThHより大きい場合は、該当ビットはいずれの集合にも分類せず、破棄する。ThLおよびThHは、例えば、それぞれ低信頼ビットおよび高信頼ビットのLLR絶対値に相当する値として定められる。
(M3-3)以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:集合SLに分類されたビット
・優先順位2:LMEMに記憶されたビット
・優先順位3:集合SHに分類されたビット
・優先順位4:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位5:パリティビット
(M3-1)「FMEMに記憶され、かつ、他方次元でエラーと判定されているビット」のそれぞれに対し、軟判定入力値の絶対値を求める。
(M3-2)(M3-1)で処理対象となったビットのそれぞれについて、軟判定入力値の絶対値を閾値ThL、ThH(ThL<ThH)と比較する。絶対値がThL以下であれば、該当ビットを集合SLに分類し、絶対値がThLより大きくThH以下であれば、該当ビットを集合SHに分類する。なお絶対値がThHより大きい場合は、該当ビットはいずれの集合にも分類せず、破棄する。ThLおよびThHは、例えば、それぞれ低信頼ビットおよび高信頼ビットのLLR絶対値に相当する値として定められる。
(M3-3)以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:集合SLに分類されたビット
・優先順位2:LMEMに記憶されたビット
・優先順位3:集合SHに分類されたビット
・優先順位4:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位5:パリティビット
フリップ位置を決定する方法としては、例えば、軟判定入力値を計算し、軟判定入力値を絶対値でソートし、軟判定入力値の絶対値が小さい順に一定数のビットの位置をフリップ位置として決定する方法も考えられる。これに対して本実施形態では、成分符号ごとに記憶された修正情報および低信頼位置情報を用いてフリップ位置が決定される。これにより、処理時間を短縮することができる。
なお、作成方法2は、作成方法1と比較して、優先順位1のビットの決定方法が異なる。すなわち、LMEMに記憶されたビットであるかが判定されるのみでなく、軟判定入力値の絶対値が閾値Th以下のビットであるかが判定される。これにより、復号中に低信頼でなくなったビットを排除することが可能となる。この結果、Chase復号で正しい復号語を見つける確率を上げること、および、フリップ候補位置リストのサイズを小さくし処理時間を短縮することが可能となる。また、軟判定入力値の絶対値の計算対象はLMEMに記憶されたビットのみであるため、処理時間の増加を抑制することができる。
本実施形態では、軟判定入力値の絶対値が相対的に小さい可能性があるビット位置は以下のいずれかであり、かつ、その数が成分符号長に比べて少ないことを利用している。
・読出し情報で低信頼と判定されたビットの位置
・外部値がチャネル値と逆符号となっている(他方次元でエラーと判定されている)ビットの位置
・読出し情報で低信頼と判定されたビットの位置
・外部値がチャネル値と逆符号となっている(他方次元でエラーと判定されている)ビットの位置
次にChase復号の手順の例について説明する。次元1SISO復号部113が次元1のSISO復号としてChase復号を実行する例を説明する。
次元1SISO復号部113は、修正シンドローム値s’およびフリップ候補位置リストを用いた、以下の手順の復号により、訂正ビット位置および信頼度情報を求める。
(E3-1)t,f(t≦mかつf≦t、mはフリップ候補位置リストのサイズ)を任意の定数として、フリップ候補位置リストに記憶されたフリップ位置の候補からf個を選択する。tCf通りの選択の組み合わせそれぞれについて、以下の処理(E3-1-1)を行う。
(E3-1-1)選択した位置のビットをフリップさせたシンドローム値s’’をs’から計算する。そして、s’’を用いてシンドローム復号を行い、訂正ビット位置eを求める。さらに、訂正ビット位置e、f個のフリップ位置、信頼度情報メモリ231に記憶されている信頼度情報、および、低信頼位置情報から、次元1の成分符号の信頼度情報prを求める。
(E3-2)tCf通りの選択の組み合わせそれぞれについて得られた訂正ビット位置および信頼度情報の組の中で、信頼度情報が最大である組を(e^,pr^)とする。
(E3-3)訂正ビット位置e^、信頼度情報pr^を出力する。
(E3-1)t,f(t≦mかつf≦t、mはフリップ候補位置リストのサイズ)を任意の定数として、フリップ候補位置リストに記憶されたフリップ位置の候補からf個を選択する。tCf通りの選択の組み合わせそれぞれについて、以下の処理(E3-1-1)を行う。
(E3-1-1)選択した位置のビットをフリップさせたシンドローム値s’’をs’から計算する。そして、s’’を用いてシンドローム復号を行い、訂正ビット位置eを求める。さらに、訂正ビット位置e、f個のフリップ位置、信頼度情報メモリ231に記憶されている信頼度情報、および、低信頼位置情報から、次元1の成分符号の信頼度情報prを求める。
(E3-2)tCf通りの選択の組み合わせそれぞれについて得られた訂正ビット位置および信頼度情報の組の中で、信頼度情報が最大である組を(e^,pr^)とする。
(E3-3)訂正ビット位置e^、信頼度情報pr^を出力する。
(変形例3)
変形例3では、計算した修正シンドローム値によりSMEMを更新する例を説明する。図17は、変形例3の成分符号復号処理の一例を示すフローチャートである。なお図17は、復号処理の中でLMEMの初期化を実行する上記実施形態(図12、図13など)に対する変形例を示すが、上記の変形例1および変形例2に対しても同様の手順を適用できる。
変形例3では、計算した修正シンドローム値によりSMEMを更新する例を説明する。図17は、変形例3の成分符号復号処理の一例を示すフローチャートである。なお図17は、復号処理の中でLMEMの初期化を実行する上記実施形態(図12、図13など)に対する変形例を示すが、上記の変形例1および変形例2に対しても同様の手順を適用できる。
本変形例では、例えば図13のステップS302に相当する、修正シンドローム値の計算処理は実行されない。代わりに、図13のステップS305に相当する各メモリのデータの更新処理(ステップS604)の中で、修正シンドローム値の計算処理、および、計算した修正シンドローム値によるSMEMの更新処理が実行される。
図17のステップS601、ステップS602、および、ステップS603は、図13のステップS301、ステップS303、および、ステップS304と同様である。
ステップS603のChase復号では、SMEMに記憶されたシンドローム値が、修正シンドローム値として用いられる。なお、例えば図12で複数回の成分符号復号処理(ステップS204)を実行する場合の最初の成分符号復号処理では、SMEMは修正シンドローム値で更新されていないが、SMEMから読み出したシンドローム値をそのまま使用すればよい。
ステップS604では、ステップS305と同様の処理に加え、以下のようなSMEMの更新処理が実行される。
(U1)復号対象次元に対応するSMEMの更新:復号対象次元のSMEMからシンドローム値を読み出し、各修正位置に対して以下の処理を実行した後、更新したシンドローム値を復号対象次元のSMEMに書き戻す。
(U1-1)該当位置の復号処理開始時の軟判定入力値の符号、および、該当成分符号でのChase復号後の軟判定入力値の符号を求める。
(U1-2)(U1-1)で求めた2つの符号を比較し、符号が異なるならば該当位置のビットの“フリップ”をシンドローム値に反映させる。符号が同じなら何もしない。
(U2)他方次元に対応するSMEMの更新:各修正位置に対して以下の処理を実行する。
(U2-1)他方次元について、該当位置の復号処理開始時の軟判定入力値の符号、および、該当成分符号でのChase復号後の軟判定入力値の符号を求める。
(U2-2)(U2-1)で求めた2つの符号を比較し、符号が異なるならば該当位置の他方次元の成分符号のSMEMからシンドローム値を読み出し、該当位置のビットの“フリップ”をシンドローム値に反映させ、SMEMに書き戻す。符号が同じなら何もしない。
(U1)復号対象次元に対応するSMEMの更新:復号対象次元のSMEMからシンドローム値を読み出し、各修正位置に対して以下の処理を実行した後、更新したシンドローム値を復号対象次元のSMEMに書き戻す。
(U1-1)該当位置の復号処理開始時の軟判定入力値の符号、および、該当成分符号でのChase復号後の軟判定入力値の符号を求める。
(U1-2)(U1-1)で求めた2つの符号を比較し、符号が異なるならば該当位置のビットの“フリップ”をシンドローム値に反映させる。符号が同じなら何もしない。
(U2)他方次元に対応するSMEMの更新:各修正位置に対して以下の処理を実行する。
(U2-1)他方次元について、該当位置の復号処理開始時の軟判定入力値の符号、および、該当成分符号でのChase復号後の軟判定入力値の符号を求める。
(U2-2)(U2-1)で求めた2つの符号を比較し、符号が異なるならば該当位置の他方次元の成分符号のSMEMからシンドローム値を読み出し、該当位置のビットの“フリップ”をシンドローム値に反映させ、SMEMに書き戻す。符号が同じなら何もしない。
復号処理開始時の軟判定入力値は、該当成分符号での復号処理開始時の修正情報、復号信頼度および低信頼位置情報を用いて、例えば上記の式(2)~式(4)により計算される。
該当成分符号でのChase復号後の軟判定入力値は、該当成分符号でのChase復号後(ステップS603)の修正情報、復号信頼度および低信頼位置情報を用いて、例えば上記の式(2)~式(4)により計算される。
復号対象次元と他方次元のSMEMの更新は、各修正位置に対して並列に実行されてもよい。処理の簡単化のため、復号処理開始時の軟判定入力値の符号を記憶しておき、上記処理((U1-1)、(U2-1))では記憶しておいた符号を使用するように構成されてもよい。
このように復号対象次元および他方次元の成分符号のSMEMを更新することにより、SMEMには「軟判定入力値の硬判定値から計算したシンドローム値」が記憶されることになる。
(変形例4)
上記実施形態および変形例では、次元ごとに1つの低信頼位置情報メモリ(次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2)が用いられていた。変形例4では、信頼度の低さの程度(低信頼レベル)がu個(uは2以上の整数)の値により表され、低信頼レベルにそれぞれ対応するu個の低信頼位置情報メモリが、次元ごとに用いられる例を説明する。
上記実施形態および変形例では、次元ごとに1つの低信頼位置情報メモリ(次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2)が用いられていた。変形例4では、信頼度の低さの程度(低信頼レベル)がu個(uは2以上の整数)の値により表され、低信頼レベルにそれぞれ対応するu個の低信頼位置情報メモリが、次元ごとに用いられる例を説明する。
例えば、複数のソフトビットデータSB1~SBX(X≧2)が用いられる場合は、ソフトビットデータの組み合わせに応じてu個の低信頼レベルが決定されてもよい。上記のように、ハードビットデータおよびソフトビットデータの組と、チャネル値と、を対応づけたLLRテーブルによりLLRの値が決定されるため、LLRの絶対値に応じてu個の低信頼レベルが決定されてもよい。
u個の低信頼位置情報メモリは、以下のように、フリップ候補位置リストを作成するときに参照される。u個の低信頼位置情報メモリを、低信頼レベルが低いほうから順にLMEM1、LMEM2、・・・LMEMuと表す。以下、u個の低信頼位置情報メモリを用いたフリップ候補位置リストの作成方法の3つの例(M4)、(M5)、(M6)について説明する。
(M4)作成方法4
以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:LMEM1に記憶されたビット
・優先順位2:LMEM2に記憶されたビット
(中略)
・優先順位u:LMEMuに記憶されたビット
・優先順位u+1:FMEMに記憶され、かつ、他方次元でエラーと判定されているビット
・優先順位u+2:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位u+3:パリティビット
以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:LMEM1に記憶されたビット
・優先順位2:LMEM2に記憶されたビット
(中略)
・優先順位u:LMEMuに記憶されたビット
・優先順位u+1:FMEMに記憶され、かつ、他方次元でエラーと判定されているビット
・優先順位u+2:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位u+3:パリティビット
(M5)作成方法5
以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。なお、u個の低信頼レベルにそれぞれ対応するLLR絶対値をTh1、Th2、・・・、Thuとする。
・優先順位1:LMEM1に記憶され、かつ、軟判定入力値の絶対値がTh1以下のビット
・優先順位2:LMEM2に記憶され、かつ、軟判定入力値の絶対値がTh2以下のビット
(中略)
・優先順位u:LMEMuに記憶され、かつ、軟判定入力値の絶対値がThu以下のビット
・優先順位u+1:FMEMに記憶され、かつ、他方次元でエラーと判定されているビット
・優先順位u+2:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位u+3:パリティビット
以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。なお、u個の低信頼レベルにそれぞれ対応するLLR絶対値をTh1、Th2、・・・、Thuとする。
・優先順位1:LMEM1に記憶され、かつ、軟判定入力値の絶対値がTh1以下のビット
・優先順位2:LMEM2に記憶され、かつ、軟判定入力値の絶対値がTh2以下のビット
(中略)
・優先順位u:LMEMuに記憶され、かつ、軟判定入力値の絶対値がThu以下のビット
・優先順位u+1:FMEMに記憶され、かつ、他方次元でエラーと判定されているビット
・優先順位u+2:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位u+3:パリティビット
(M6)作成方法6
(M6-1)u個の低信頼レベルにそれぞれ対応するLLR絶対値をTh1、Th2、・・・、Thuとする。さらに、高信頼度のLLR絶対値(複数存在する場合は最小値)をThu+1とする。
(M6-2)「FMEMに記憶され、かつ、他方次元でエラーと判定されているビット」のそれぞれに対し、軟判定入力値の絶対値を求める。
(M6-3)(M6-2)で処理対象となったビットのそれぞれについて、軟判定入力値の絶対値を(u+1)個の閾値Th1、・・・、Thu+1とそれぞれ比較する。対象ビットは、比較結果に応じて、集合Sk(k=1、・・・、u+1)に分類される、または、破棄される。例えば、軟判定入力値の絶対値を|Lin|と表すと、|Lin|<Th1のとき、対象ビットは集合S1に分類され、Thk≦|Lin|<Thk+1のとき、対象ビットは集合Sk+1に分類され、それ以外のとき、対象ビットは破棄される。
(M6-4)以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:集合S1に分類されたビット
・優先順位2:LMEM1に記憶されたビット
・優先順位3:集合S2に分類されたビット
・優先順位4:LMEM2に記憶されたビット
(中略)
・優先順位2u-1:集合Suに分類されたビット
・優先順位2u :LMEMuに記憶されたビット
・優先順位2u+1:集合Su+1に分類されたビット
・優先順位2u+2:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位2u+3:パリティビット
(M6-1)u個の低信頼レベルにそれぞれ対応するLLR絶対値をTh1、Th2、・・・、Thuとする。さらに、高信頼度のLLR絶対値(複数存在する場合は最小値)をThu+1とする。
(M6-2)「FMEMに記憶され、かつ、他方次元でエラーと判定されているビット」のそれぞれに対し、軟判定入力値の絶対値を求める。
(M6-3)(M6-2)で処理対象となったビットのそれぞれについて、軟判定入力値の絶対値を(u+1)個の閾値Th1、・・・、Thu+1とそれぞれ比較する。対象ビットは、比較結果に応じて、集合Sk(k=1、・・・、u+1)に分類される、または、破棄される。例えば、軟判定入力値の絶対値を|Lin|と表すと、|Lin|<Th1のとき、対象ビットは集合S1に分類され、Thk≦|Lin|<Thk+1のとき、対象ビットは集合Sk+1に分類され、それ以外のとき、対象ビットは破棄される。
(M6-4)以下の優先順位に従い、フリップの対象となるビットの成分符号内アドレスを最大でY個(Yは予め定めた最大値)取得し、取得したアドレスを示すフリップ候補位置リストを作成する。
・優先順位1:集合S1に分類されたビット
・優先順位2:LMEM1に記憶されたビット
・優先順位3:集合S2に分類されたビット
・優先順位4:LMEM2に記憶されたビット
(中略)
・優先順位2u-1:集合Suに分類されたビット
・優先順位2u :LMEMuに記憶されたビット
・優先順位2u+1:集合Su+1に分類されたビット
・優先順位2u+2:復号信頼度=0である他方次元の成分符号との交差ビット
・優先順位2u+3:パリティビット
なお、軟判定入力値を計算するときには、例えば、u個のうち予め定められた低信頼位置情報メモリに記憶された低信頼位置情報が用いられるように構成される。
(変形例5)
変形例5では、「修正情報のデータ量が、修正情報メモリに記憶できるデータ量を上回る」という状況が発生することを避けるため、修正情報メモリに記憶する情報量を削減する機能が備えられる。例えば、信頼度情報が十分高い場合、復号器18は、修正情報を修正情報メモリに記憶する代わりに、読出し情報メモリ201のHMEMに記憶されたハードビットデータを、修正情報に従って修正する。なお信頼度情報が十分高いとは、例えば、信頼度情報が閾値より大きい場合である。また復号器18は、シンドローム値メモリ(次元1シンドローム値メモリ211、次元2シンドローム値メモリ221)に記憶された各シンドローム値も、修正したハードビットデータと整合するように修正する。このようにして、修正情報メモリに修正情報を記憶せずに、検出した誤りの情報をハードビットデータに反映することができる。
変形例5では、「修正情報のデータ量が、修正情報メモリに記憶できるデータ量を上回る」という状況が発生することを避けるため、修正情報メモリに記憶する情報量を削減する機能が備えられる。例えば、信頼度情報が十分高い場合、復号器18は、修正情報を修正情報メモリに記憶する代わりに、読出し情報メモリ201のHMEMに記憶されたハードビットデータを、修正情報に従って修正する。なお信頼度情報が十分高いとは、例えば、信頼度情報が閾値より大きい場合である。また復号器18は、シンドローム値メモリ(次元1シンドローム値メモリ211、次元2シンドローム値メモリ221)に記憶された各シンドローム値も、修正したハードビットデータと整合するように修正する。このようにして、修正情報メモリに修正情報を記憶せずに、検出した誤りの情報をハードビットデータに反映することができる。
復号に必要なメモリ量を削減する方式としては、例えば、外部値自体を外部値メモリに記憶するのではなく、外部値の計算に必要な中間情報(例えばMAP復号語とその復号語の正しさを示す信頼度情報)を記憶し、外部値が必要になった時点で中間情報を用いて外部値を生成する方式が考えられる。しかしこのような方式では、MAP復号語のデータ量が符号長に依存するため、符号長が長い場合には、メモリ量の削減効果が低下する。
本実施形態では、符号長に依存しないシンドローム値、修正情報および低信頼位置情報を用いて外部値の計算を含む復号処理が実行される。これにより、復号に必要なメモリ量を削減することが可能となる。また、復号処理に用いる情報の読み書き時間が短縮されるため、復号処理の処理時間を短縮することができる。
以上のように、第2の実施形態では、低信頼位置情報を記憶するメモリ(低信頼位置情報メモリ)についても、必要なメモリ領域の総容量を削減することができる。
(第3の実施形態)
第1および第2の実施形態では、成分符号数Mが100(成分符号数:小)および500(成分符号数:大)の2段階に設定可能な例を説明した。第3の実施形態では、成分符号数Mが3段階以上に設定可能な場合の例を説明する。なお、本実施形態は、第1の実施形態と同様に修正情報数を決定する例を説明するが、第2の実施形態のように低信頼位置情報数を決定する場合も同様の手順を適用できる。
第1および第2の実施形態では、成分符号数Mが100(成分符号数:小)および500(成分符号数:大)の2段階に設定可能な例を説明した。第3の実施形態では、成分符号数Mが3段階以上に設定可能な場合の例を説明する。なお、本実施形態は、第1の実施形態と同様に修正情報数を決定する例を説明するが、第2の実施形態のように低信頼位置情報数を決定する場合も同様の手順を適用できる。
第3の実施形態のメモリシステムは、SISO復号部の機能が、第1の実施形態と異なっている。以下では、第3の実施形態のSISO復号部182-3の機能について説明する。図18は、SISO復号部182-3の概略構成例を示すブロック図である。
図18に示すように、SISO復号部182-3は、読出し情報メモリ201と、次元1シンドローム値計算部111と、次元1シンドローム値メモリ211と、次元1軟判定入力値計算部112と、次元1SISO復号部113と、次元1修正情報メモリ212と、次元2シンドローム値計算部121と、次元2シンドローム値メモリ221と、次元2軟判定入力値計算部122と、次元2SISO復号部123と、次元2修正情報メモリ222と、信頼度情報メモリ231と、決定部241-3と、を備えている。
第3の実施形態では、決定部241-3の機能が、第1の実施形態と異なっている。その他の構成は第1の実施形態と同様であるため同一の符号を付し、説明を省略する。
決定部241-3は、修正情報の総数の最大値S、成分符号数Mを用いて、修正情報数r=S/M(小数点以下は切り捨て)により修正情報数rを決定する。図19は、7段階の成分符号数Mについて計算される修正情報数の例を示す図である。
図19の例では、最大の成分符号数500に対して6個の修正情報を割り当てられるようにFMEMのメモリ領域の総容量が決定されているものとする。この場合、FMEMに記憶できる修正情報の総数の最大値Sは3000(=500×6)である。
また決定部241-3は、以下のようにして、y番目の成分符号のアドレスを計算することができる。
・y番目の成分符号の修正情報アドレスは、r(y-1)+1からry
・y番目の成分符号の修正情報アドレスは、r(y-1)+1からry
(第4の実施形態)
第4の実施形態は、復号処理の状態に応じて、メモリに記憶する情報の個数(修正情報数、低信頼位置情報数)を動的に変更する。なお、本実施形態は、第1の実施形態と同様に修正情報数を決定する例を説明するが、第2の実施形態のように低信頼位置情報数を決定する場合も同様の手順を適用できる。
第4の実施形態は、復号処理の状態に応じて、メモリに記憶する情報の個数(修正情報数、低信頼位置情報数)を動的に変更する。なお、本実施形態は、第1の実施形態と同様に修正情報数を決定する例を説明するが、第2の実施形態のように低信頼位置情報数を決定する場合も同様の手順を適用できる。
第4の実施形態のメモリシステムは、SISO復号部の機能が、第1の実施形態と異なっている。以下では、第4の実施形態のSISO復号部182-4の機能について説明する。図20は、SISO復号部182-4の概略構成例を示すブロック図である。
図20に示すように、SISO復号部182-4は、読出し情報メモリ201と、次元1シンドローム値計算部111と、次元1シンドローム値メモリ211と、次元1軟判定入力値計算部112と、次元1SISO復号部113と、次元1修正情報メモリ212と、次元2シンドローム値計算部121と、次元2シンドローム値メモリ221と、次元2軟判定入力値計算部122と、次元2SISO復号部123と、次元2修正情報メモリ222と、信頼度情報メモリ231と、決定部241-4と、を備えている。
第4の実施形態では、決定部241-4の機能が、第1の実施形態と異なっている。その他の構成は第1の実施形態と同様であるため同一の符号を付し、説明を省略する。
決定部241-4は、成分符号数に基づく値として、M個の成分符号のうち訂正されていない成分符号(未訂正成分符号)の個数(未訂正成分符号数)を用いて、修正情報数を決定する。未訂正成分符号の個数は、以下のように復号処理の状態に応じて変更されうる。このため、決定部241-4は、復号処理の状態に応じて動的に修正情報数を決定する。
例えば決定部241-4は、成分符号を正しく訂正した確率が高いと判断できる場合に、当該成分符号を訂正成功済とし、それ以外の成分符号を、未訂正成分符号とする。決定部241-4は、例えば、次元1(行)の復号と次元2(列)の復号とで、同じビットが訂正された場合、この成分符号を正しく訂正した確率が高いと判断する。決定部241-4は、上記の変形例5のように、信頼度情報が閾値より大きい場合に、成分符号を正しく訂正した確率が高いと判断してもよい。
決定部241-4は、正しく訂正した確率が高いと判断した成分符号に対しては、修正情報メモリ(FMEM)のメモリ領域を割り当てない。また決定部241-4は、成分符号数Mの代わりに、未訂正成分符号数(以下、M’とする)を用いて修正情報数を計算する。
例えば決定部241-4は、修正情報の総数の最大値S、未訂正成分符号数M’を用いて、修正情報数r’=S/M’(小数点以下は切り捨て)により修正情報数r’を決定する。図21は、7段階の未訂正成分符号数M’について計算される修正情報数の例を示す図である。
図21の例では、最大の成分符号数500に対して6個の修正情報を割り当てられるようにFMEMのメモリ領域の総容量が決定されているものとする。この場合、FMEMに記憶できる修正情報の総数の最大値Sは3000(=500×6)である。また、図21は、未訂正成分符号数M’が、成分符号数Mの約80%になったと想定した場合の修正情報数の例を示す。例えば成分符号数M=500に対して、未訂正成分符号数M’は400(≒500×0.8)と計算される。この場合、決定部241-4は、修正情報数r’は7(≒3000/400)と計算する。
また決定部241-4は、以下のようにして、y番目の成分符号のアドレスを計算することができる。
まず決定部241-4は、M個の成分符号と、未訂正成分符号との対応を示す対応情報を作成し、例えばFMEMなどの記憶領域に記憶しておく。図22は、対応情報の例を説明するための図である。図22では、例えば行方向の8個の成分符号のうち、5、6および8行目の成分符号が未訂正成分符号であり、残りの成分符号が訂正された成分符号である。対情情報は、例えば、成分符号の順序を表す番号(y番目)と、未訂正成分符号が訂正済みであることを示す情報「済」、または、未訂正成分符号の順序を表す番号(z番目)と、を対応づけた情報である。
なお図22は、成分符号の順序を表す番号を、次元1(行)と次元2(列)とで独立に付与する例が示されているが、これに限られない。例えば複数の次元をまとめて番号が付与されてもよい。
決定部241-4は、対応情報を参照して、y番目の成分符号に対応する未訂正成分符号の番号zを求める。決定部241-4は、求めたzを用いて、以下のようにして、y番目の成分符号のアドレスを計算することができる。
・y番目の成分符号の修正情報アドレスは、r’(z-1)+1からr’z
・y番目の成分符号の修正情報アドレスは、r’(z-1)+1からr’z
修正情報数を決定するタイミングは、復号処理中のどのタイミングでもよいが、例えば、反復回数が1個以上の特定値に達するタイミングとすることができる。
本実施形態では、対応情報を記憶するためのメモリ領域が必要となるが、FMEMのメモリ容量の削減量に対する影響は小さい。例えば、修正情報のサイズが固定値15ビット、成分符号数Mが500の場合は、約4.7キロバイトのメモリ領域の削減となる。成分符号ごとに9ビットの対応情報が必要であったとしても、対応情報のために増加するメモリ領域は、約562バイト(≒500×9ビット)である。
(第5の実施形態)
第5の実施形態では、低信頼であるか否かを示す情報をさらに含む修正情報を用いる例を説明する。
第5の実施形態では、低信頼であるか否かを示す情報をさらに含む修正情報を用いる例を説明する。
第5の実施形態のメモリシステムは、SISO復号部の機能が、第2の実施形態と異なっている。以下では、第5の実施形態のSISO復号部182-5の機能について説明する。図23は、SISO復号部182-5の概略構成例を示すブロック図である。
図23に示すように、SISO復号部182-5は、読出し情報メモリ201と、次元1シンドローム値計算部111と、次元1低信頼位置情報計算部114-2と、次元1低信頼位置情報メモリ213-2と、次元1シンドローム値メモリ211と、次元1軟判定入力値計算部112-5と、次元1SISO復号部113-5と、次元1修正情報メモリ212-5と、次元2シンドローム値計算部121と、次元2シンドローム値メモリ221と、次元2低信頼位置情報計算部124-2と、次元2低信頼位置情報メモリ223-2と、次元2軟判定入力値計算部122-5と、次元2SISO復号部123-5と、次元2修正情報メモリ222-5と、信頼度情報メモリ231と、決定部241-2と、を備えている。なお、図10は符号のシンボルが二次元の場合の例を示すが、上記のように、SISO復号部182-5は、二次元以外の多次元に対応する構成であってもよい。
第5の実施形態では、次元1軟判定入力値計算部112-5、次元1SISO復号部113-5、次元1修正情報メモリ212-5、次元2軟判定入力値計算部122-5、次元2SISO復号部123-5、および、次元2修正情報メモリ222-5の機能が、第2の実施形態と異なっている。その他の構成は第2の実施形態と同様であるため同一の符号を付し、説明を省略する。
次元1修正情報メモリ212-5および次元2修正情報メモリ222-5は、低信頼であるか否かを示す低信頼情報をさらに含む修正情報を記憶する点が、第2の実施形態の次元1修正情報メモリ212および次元2修正情報メモリ222と異なっている。
低信頼情報は、例えば、低信頼であることを示す値(例えば1)、または、低信頼でないことを示す値(例えば0)の2値が記憶されるフラグ(低信頼フラグ)である。例えば低信頼フラグは、低信頼位置情報メモリ(次元1低信頼位置情報メモリ213-2、次元2低信頼位置情報メモリ223-2)に低信頼位置情報が記憶されている修正位置に対して1が設定され、低信頼位置情報が記憶されていない修正位置に対して0が設定される。
次元1SISO復号部113-5および次元2SISO復号部123-5は、低信頼フラグを含む修正情報をFMEM(次元1修正情報メモリ212-5、次元2修正情報メモリ222-5)に記憶する。
次元1軟判定入力値計算部112-5および次元2軟判定入力値計算部122-5は、低信頼フラグをさらに用いて軟判定入力値を計算する。
以下、次元1の場合(次元1SISO復号部113-5、次元1軟判定入力値計算部112-5)について説明するが、次元2(次元2SISO復号部123-5、次元2軟判定入力値計算部122-5)についても同様の手順を適用できる。
次元1SISO復号部113-5は、修正情報を記憶する前に、次元1低信頼位置情報メモリ213-2を参照し、修正情報が示す修正位置が低信頼位置であるか否かを判定する。次元1SISO復号部113-5は、低信頼位置である修正位置については、値が1である低信頼フラグを含む修正情報を次元1修正情報メモリ212-5に記憶する。次元1SISO復号部113-5は、低信頼位置でない修正位置については、値が0である低信頼フラグを含む修正情報を次元1修正情報メモリ212-5に記憶する。
軟判定入力値を計算するときに、計算対象とするビットの修正情報が次元1修正情報メモリ212-5に記憶されている場合、次元1軟判定入力値計算部112-5は、記憶されている修正情報に含まれる低信頼フラグの値に応じてチャネル値を使い分けて軟判定入力値Linを計算する。例えば次元1軟判定入力値計算部112-5は、低信頼フラグ=1の場合にチャネル値L=LLとし、低信頼フラグ=0の場合にチャネル値L=LHとする。
計算対象とするビットの修正情報が次元1修正情報メモリ212-5に記憶されていない場合、次元1軟判定入力値計算部112-5は、次元1低信頼位置情報メモリ213-2を参照し、当該ビットの位置に相当する低信頼位置情報が記憶されていればチャネル値L=LLとし、記憶されていなければチャネル値L=LHとする。
なお、計算対象とするビットの修正情報が次元1修正情報メモリ212-5に記憶されていない場合とは、例えば、繰り返し実行される成分符号復号処理の中で、当該ビットに対して初めてエラーが発見された場合である。
決定したチャネル値Lを用いた軟判定入力値Linの計算は、第2の実施形態と同じ式(2)~式(4)を用いることができる。
このように、本実施形態では、LMEM(低信頼位置情報メモリ)に記憶されている低信頼位置情報より、FMEM(修正情報メモリ)に記憶されている低信頼フラグを優先して用いて、低信頼であるか否かが判定される。このような構成により、例えば、次元1(行)と次元2(列)とでLMEMを独立に初期化したときに発生し得る、低信頼位置の判定の不整合を回避することができ、訂正能力を向上させることができる。以下、このような不整合および回避の方法について説明する。
例えば、特定の成分符号に低信頼位置が集中し、記憶すべき低信頼位置情報の個数が、決定部241-2により決定された低信頼位置情報数より大きくなる場合がある。このような場合、低信頼位置情報数を超えた分の低信頼位置情報は、LMEMに記憶されない。このため、例えば次元1(行)と次元2(列)とでLMEMを独立に初期化するとき、一方の次元のLMEMにはエントリが存在するが、他方の次元のLMEMには該当エントリが存在しない、というケースが発生しうる。
図24は、このような状況の例を説明するための図である。図24は、成分符号ごとの低信頼位置情報数が3個である場合の例を示す。図24では、太い枠線で囲った位置(2行4列、および、4行3列)が、不一致が生じる位置を表す。
例えば2行目の成分符号については、1、2、3、4列目に相当する位置が低信頼位置であるが、低信頼位置情報数3を超えるため、4列目に相当する位置は、低信頼位置情報が記憶されない。このため、次元2(列)のLMEMの4列目の成分符号に相当する低信頼位置情報(2行目が低信頼であることを示す)との間で不一致が生じる。
独立に初期化されうる各次元のLMEMのみを参照して低信頼位置か否かを判定すると、同じ位置であるにも関わらず、ある次元の成分符号では低信頼と判定し、別の次元の成分符号では高信頼と判定する、という判定の不整合が生じうる。この結果、訂正能力の劣化を引き起こす可能性がある。
このような判定の不整合の発生を抑制するため、本実施形態では、例えば初めてエラーが発見された位置についてはLMEMにエントリが存在するか否かにより低信頼位置か否かが判定され、判定結果に相当する低信頼フラグが修正情報メモリに記憶される。以降は、記憶された低信頼フラグを用いて低信頼位置か否かが判定される。これにより、低信頼位置の判定の不整合を防ぐことができ、訂正能力の劣化を防ぐことができる。
LMEMのメモリ領域の総容量を削減するために、成分符号数などに応じて低信頼位置情報数を決定する構成では、上記のように低信頼位置情報数を超える低信頼位置が発生した場合に、次元間での低信頼位置情報の不一致が発生する可能性が高くなりうる。本実施形態によれば、このような不一致が発生する場合であっても、低信頼フラグを用いることにより判定の不整合の発生を抑制可能となる。
なお、本実施形態のように低信頼フラグを用いる機能は、成分符号数などに応じて低信頼位置情報数を決定しない構成、すなわち、決定部241-2を備えない構成に対しても適用しうる。
本実施形態では、低信頼フラグを記憶するためのメモリ領域が増加するが、修正情報メモリのメモリ容量の削減量に対する影響は小さい。例えば、増加するメモリ領域の容量は、(低信頼フラグの1ビット)×(成分符号数)×(成分符号ごとの修正情報数)に相当する容量のみとなる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
17 符号化器
18 復号器
20 不揮発性メモリ
30 ホスト
111 次元1シンドローム値計算部
112 次元1軟判定入力値計算部
113 次元1SISO復号部
114-2 次元1低信頼位置情報計算部
121 次元2シンドローム値計算部
122 次元2軟判定入力値計算部
123 次元2SISO復号部
124-2 次元2低信頼位置情報計算部
201 読出し情報メモリ
211 次元1シンドローム値メモリ
212 次元1修正情報メモリ
213-2 次元1低信頼位置情報メモリ
221 次元2シンドローム値メモリ
222 次元2修正情報メモリ
223-2 次元2低信頼位置情報メモリ
231 信頼度情報メモリ
241、241-2、241-3、241-4 決定部
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
17 符号化器
18 復号器
20 不揮発性メモリ
30 ホスト
111 次元1シンドローム値計算部
112 次元1軟判定入力値計算部
113 次元1SISO復号部
114-2 次元1低信頼位置情報計算部
121 次元2シンドローム値計算部
122 次元2軟判定入力値計算部
123 次元2SISO復号部
124-2 次元2低信頼位置情報計算部
201 読出し情報メモリ
211 次元1シンドローム値メモリ
212 次元1修正情報メモリ
213-2 次元1低信頼位置情報メモリ
221 次元2シンドローム値メモリ
222 次元2修正情報メモリ
223-2 次元2低信頼位置情報メモリ
231 信頼度情報メモリ
241、241-2、241-3、241-4 決定部
Claims (12)
- 符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号を記憶する不揮発性メモリと、
前記不揮発性メモリから読み出される読出し情報を記憶する読出し情報メモリと、
前記読出し情報メモリに記憶された読出し情報から計算されるM個(1≦i≦N、niを第i次元の成分符号群に含まれる成分符号の個数として、Mはniの総和)の前記成分符号それぞれに対応するシンドローム値を記憶するシンドローム値メモリと、
第i次元の成分符号群の第a(1≦a≦ni)の成分符号について、第aの前記成分符号の復号処理によって修正された位置を示す第aの修正情報を記憶する修正情報メモリと、
第aの前記成分符号の復号処理で得られる復号語の信頼度を表す第aの信頼度情報を記憶する信頼度情報メモリと、
前記第1乃至第N次元の成分符号群に含まれる成分符号の個数に基づく値に応じて、M個の前記成分符号それぞれに対する第aの前記修正情報の個数である修正情報数を決定し、
前記修正情報数に基づいて、M個の前記成分符号それぞれに対する第aの前記修正情報の前記修正情報メモリ上のアドレスである修正情報アドレスを決定し、
第aの前記修正情報、第aの前記信頼度情報、および、第aの前記成分符号のシンドローム値に基づいて、第aの前記成分符号に対する軟判定入力値である第aの軟判定入力値を計算し、
第aの前記軟判定入力値を入力して第aの前記成分符号の復号処理を実行することにより、第aの前記成分符号の復号語、第aの前記修正情報、および、第aの前記信頼度情報を計算し、計算した第aの前記修正情報および第iの前記成分符号の復号処理によって修正された第j次元(j≠i、1≦j≦N)の第b(1≦b≦nj)の前記成分符号の修正された位置を示す第bの前記修正情報を前記修正情報メモリの前記修正情報アドレスに記憶し、計算した第aの前記信頼度情報を前記信頼度情報メモリに記憶し、
前記読出し情報、前記修正情報および、M個の第aの前記信頼度情報から計算される出力復号語を出力する、
メモリコントローラと、
を備えるメモリシステム。 - M個の前記成分符号それぞれについて、前記読出し情報のうち信頼度が低いと判定された前記読出し情報の位置を示す第aの低信頼位置情報を記憶する低信頼位置情報メモリをさらに備え、
前記メモリコントローラは、
前記成分符号の個数に基づく値に応じて、M個の前記成分符号それぞれに対する第aの前記低信頼位置情報の個数である低信頼位置情報数を決定し、
前記低信頼位置情報数に基づいて、M個の前記成分符号それぞれに対する第aの前記低信頼位置情報の前記低信頼位置情報メモリ上のアドレスである低信頼位置情報アドレスを決定し、
第aの前記軟判定入力値を計算する前に、第aの前記低信頼位置情報を計算し、計算した第aの前記低信頼位置情報を前記低信頼位置情報メモリの前記低信頼位置情報アドレスに記憶し、
第aの前記修正情報、第aの前記信頼度情報、第aの前記成分符号のシンドローム値、および、第aの前記低信頼位置情報に基づいて、第aの前記軟判定入力値を計算する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記成分符号の個数に基づく値が大きいほど、値が小さい前記修正情報数を決定する、
請求項1に記載のメモリシステム。 - 前記成分符号の個数に基づく値は、Mの値である、
請求項1に記載のメモリシステム。 - 前記成分符号の個数に基づく値は、M個の前記成分符号のうち訂正されていない前記成分符号の個数である、
請求項1に記載のメモリシステム。 - 符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号を記憶する不揮発性メモリと、
前記不揮発性メモリから読み出される読出し情報を記憶する読出し情報メモリと、
前記読出し情報メモリに記憶された読出し情報から計算されるM個(1≦i≦N、niを第i次元の成分符号群に含まれる成分符号の個数として、Mはniの総和)の前記成分符号それぞれに対応するシンドローム値を記憶するシンドローム値メモリと、
第i次元の成分符号群の第a(1≦a≦ni)の成分符号について、第aの前記成分符号の復号処理によって修正された位置を示す第aの修正情報を記憶する修正情報メモリと、
第aの前記成分符号の復号処理で得られる復号語の信頼度を表す第aの信頼度情報を記憶する信頼度情報メモリと、
M個の前記成分符号それぞれについて、前記読出し情報のうち信頼度が低いと判定された前記読出し情報の位置を示す第aの低信頼位置情報を記憶する低信頼位置情報メモリをと、
前記第1乃至第N次元の成分符号群に含まれる成分符号の個数に基づく値に応じて、M個の前記成分符号それぞれに対する第aの前記低信頼位置情報の個数である低信頼位置情報数を決定し、
前記低信頼位置情報数に基づいて、M個の前記成分符号それぞれに対する第aの前記低信頼位置情報の前記低信頼位置情報メモリ上のアドレスである低信頼位置情報アドレスを決定し、
第aの前記成分符号に対する軟判定入力値である第aの軟判定入力値を計算する前に、第aの前記低信頼位置情報を計算し、計算した第aの前記低信頼位置情報を前記低信頼位置情報メモリの前記低信頼位置情報アドレスに記憶し、
第aの前記修正情報、第aの前記信頼度情報、第aの前記成分符号のシンドローム値、および、第aの前記低信頼位置情報に基づいて、第aの前記軟判定入力値を計算し、
第aの前記軟判定入力値を入力して第aの前記成分符号の復号処理を実行することにより、第aの前記成分符号の復号語、第aの前記修正情報、および、第aの前記信頼度情報を計算し、計算した第aの前記修正情報および第iの前記成分符号の復号処理によって修正された第j次元(j≠i、1≦j≦N)の第b(1≦b≦nj)の前記成分符号の修正された位置を示す第bの前記修正情報を前記修正情報メモリに記憶し、計算した第aの前記信頼度情報を前記信頼度情報メモリに記憶し、
前記読出し情報、前記修正情報および、M個の第aの前記信頼度情報から計算される出力復号語を出力する、
メモリコントローラと、
を備えるメモリシステム。 - 前記メモリコントローラは、
第aの前記修正情報が示す位置と同じ位置を示す第aの前記低信頼位置情報が前記低信頼位置情報メモリに記憶されている場合、修正の信頼度が低いか否かを示す低信頼情報を含む第aの前記修正情報を前記修正情報メモリに記憶し、
第aの前記修正情報の前記信頼度が低いことを示す前記低信頼情報を含む場合は、第aの前記低信頼位置情報の代わりに前記低信頼情報を用いて、第aの前記軟判定入力値を計算する、
請求項6に記載のメモリシステム。 - 前記メモリコントローラは、前記成分符号の個数に基づく値が大きいほど、値が小さい前記低信頼位置情報数を決定する、
請求項6に記載のメモリシステム。 - 前記成分符号の個数に基づく値は、Mの値である、
請求項6に記載のメモリシステム。 - 前記成分符号の個数に基づく値は、M個の前記成分符号のうち訂正されていない前記成分符号の個数である、
請求項6に記載のメモリシステム。 - 符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号を記憶する不揮発性メモリを制御するメモリコントローラによるメモリ制御方法であって、
前記不揮発性メモリから読み出される読出し情報を読出し情報メモリに記憶し、
前記読出し情報メモリに記憶された読出し情報から計算されるM個(1≦i≦N、niを第i次元の成分符号群に含まれる成分符号の個数として、Mはniの総和)の前記成分符号それぞれに対応するシンドローム値をシンドローム値メモリに記憶し、
第i次元の成分符号群の第a(1≦a≦ni)の成分符号について、第aの前記成分符号の復号処理によって修正された位置を示す第aの修正情報を修正情報メモリに記憶し、
第aの前記成分符号の復号処理で得られる復号語の信頼度を表す第aの信頼度情報を信頼度情報メモリに記憶し、
前記第1乃至第N次元の成分符号群に含まれる成分符号の個数に基づく値に応じて、M個の前記成分符号それぞれに対する第aの前記修正情報の個数である修正情報数を決定し、
前記修正情報数に基づいて、M個の前記成分符号それぞれに対する第aの前記修正情報の前記修正情報メモリ上のアドレスである修正情報アドレスを決定し、
第aの前記修正情報、第aの前記信頼度情報、および、第aの前記成分符号のシンドローム値に基づいて、第aの前記成分符号に対する軟判定入力値である第aの軟判定入力値を計算し、
第aの前記軟判定入力値を入力して第aの前記成分符号の復号処理を実行することにより、第aの前記成分符号の復号語、第aの前記修正情報、および、第aの前記信頼度情報を計算し、計算した第aの前記修正情報および第iの前記成分符号の復号処理によって修正された第j次元(j≠i、1≦j≦N)の第b(1≦b≦nj)の前記成分符号の修正された位置を示す第bの前記修正情報を前記修正情報メモリの前記修正情報アドレスに記憶し、計算した第aの前記信頼度情報を前記信頼度情報メモリに記憶し、
前記読出し情報、前記修正情報および、M個の第aの前記信頼度情報から計算される出力復号語を出力する、
ことを含むメモリ制御方法。 - 符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号を記憶する不揮発性メモリを制御するメモリコントローラによるメモリ制御方法であって、
前記不揮発性メモリから読み出される読出し情報を読出し情報メモリに記憶し、
前記読出し情報メモリに記憶された読出し情報から計算されるM個(1≦i≦N、niを第i次元の成分符号群に含まれる成分符号の個数として、Mはniの総和)の前記成分符号それぞれに対応するシンドローム値をシンドローム値メモリに記憶し、
第i次元の成分符号群の第a(1≦a≦ni)の成分符号について、第aの前記成分符号の復号処理によって修正された位置を示す第aの修正情報を修正情報メモリに記憶し、
第aの前記成分符号の復号処理で得られる復号語の信頼度を表す第aの信頼度情報を信頼度情報メモリに記憶し、
M個の前記成分符号それぞれについて、前記読出し情報のうち信頼度が低いと判定された前記読出し情報の位置を示す第aの低信頼位置情報を低信頼位置情報メモリに記憶し、
前記第1乃至第N次元の成分符号群に含まれる成分符号の個数に基づく値に応じて、M個の前記成分符号それぞれに対する第aの前記低信頼位置情報の個数である低信頼位置情報数を決定し、
前記低信頼位置情報数に基づいて、M個の前記成分符号それぞれに対する第aの前記低信頼位置情報の前記低信頼位置情報メモリ上のアドレスである低信頼位置情報アドレスを決定し、
第aの前記成分符号に対する軟判定入力値である第aの軟判定入力値を計算する前に、第aの前記低信頼位置情報を計算し、計算した第aの前記低信頼位置情報を前記低信頼位置情報メモリの前記低信頼位置情報アドレスに記憶し、
第aの前記修正情報、第aの前記信頼度情報、第aの前記成分符号のシンドローム値、および、第aの前記低信頼位置情報に基づいて、第aの前記軟判定入力値を計算し、
第aの前記軟判定入力値を入力して第aの前記成分符号の復号処理を実行することにより、第aの前記成分符号の復号語、第aの前記修正情報、および、第aの前記信頼度情報を計算し、計算した第aの前記修正情報および第iの前記成分符号の復号処理によって修正された第j次元(j≠i、1≦j≦N)の第b(1≦b≦nj)の前記成分符号の修正された位置を示す第bの前記修正情報を前記修正情報メモリに記憶し、計算した第aの前記信頼度情報を前記信頼度情報メモリに記憶し、
前記読出し情報、前記修正情報および、M個の第aの前記信頼度情報から計算される出力復号語を出力する、
ことを含むメモリ制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022043111A JP2023137091A (ja) | 2022-03-17 | 2022-03-17 | メモリシステムおよびメモリ制御方法 |
US17/887,873 US11886738B2 (en) | 2022-03-17 | 2022-08-15 | Memory system and memory control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022043111A JP2023137091A (ja) | 2022-03-17 | 2022-03-17 | メモリシステムおよびメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023137091A true JP2023137091A (ja) | 2023-09-29 |
Family
ID=88066906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022043111A Pending JP2023137091A (ja) | 2022-03-17 | 2022-03-17 | メモリシステムおよびメモリ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11886738B2 (ja) |
JP (1) | JP2023137091A (ja) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69918562D1 (de) | 1998-09-28 | 2004-08-12 | Comtech Telecomm Corp | Turbo produktkode decodierer |
US7162684B2 (en) | 2003-01-27 | 2007-01-09 | Texas Instruments Incorporated | Efficient encoder for low-density-parity-check codes |
US7725800B2 (en) * | 2005-08-05 | 2010-05-25 | Hitachi Global Stroage Technologies Netherlands, B.V. | Decoding techniques for correcting errors using soft information |
US7590920B2 (en) * | 2005-08-05 | 2009-09-15 | Hitachi Global Storage Technologies Netherlands, B.V. | Reduced complexity error correction encoding techniques |
US7840872B2 (en) * | 2006-10-10 | 2010-11-23 | O-Mass As | N-dimensional iterative ECC method and apparatus with combined erasure—error information and re-read |
US8621321B2 (en) * | 2010-07-01 | 2013-12-31 | Densbits Technologies Ltd. | System and method for multi-dimensional encoding and decoding |
US9058869B2 (en) * | 2013-02-07 | 2015-06-16 | Seagate Technology Llc | Applying a bias signal to memory cells to reverse a resistance shift of the memory cells |
US10230401B2 (en) * | 2015-03-10 | 2019-03-12 | Toshiba Memory Corporation | Memory controller for a non-volatile memory, memory system and method |
JP6847796B2 (ja) | 2017-09-20 | 2021-03-24 | キオクシア株式会社 | メモリシステム |
JP6957392B2 (ja) * | 2018-03-15 | 2021-11-02 | キオクシア株式会社 | メモリシステム |
US11016844B2 (en) * | 2019-03-15 | 2021-05-25 | Toshiba Memory Corporation | Error correction code structure |
JP2021111826A (ja) | 2020-01-07 | 2021-08-02 | キオクシア株式会社 | 復号装置及び復号方法 |
US11513894B2 (en) * | 2020-12-28 | 2022-11-29 | Kioxia Corporation | Hard decoding methods in data storage devices |
JP2022124682A (ja) | 2021-02-16 | 2022-08-26 | キオクシア株式会社 | メモリシステム |
JP2023040796A (ja) | 2021-09-10 | 2023-03-23 | キオクシア株式会社 | メモリシステム |
JP2023045450A (ja) * | 2021-09-22 | 2023-04-03 | キオクシア株式会社 | シンドローム計算回路、誤り訂正回路およびメモリシステム |
-
2022
- 2022-03-17 JP JP2022043111A patent/JP2023137091A/ja active Pending
- 2022-08-15 US US17/887,873 patent/US11886738B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230297273A1 (en) | 2023-09-21 |
US11886738B2 (en) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111200440B (zh) | Ldpc解码器、半导体存储器系统及其操作方法 | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US20120144272A1 (en) | Probabilistic multi-tier error correction in not-and (nand) flash memory | |
US10776019B2 (en) | Memory system and method of controlling nonvolatile memory | |
US20150293811A1 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
US10795761B2 (en) | Memory system and method of controlling non-volatile memory | |
US20210211142A1 (en) | Decoding device and decoding method | |
US10157097B2 (en) | Redundant bytes utilization in error correction code | |
CN112039532A (zh) | 错误校正解码器及具有错误校正解码器的存储器系统 | |
CN110415753B (zh) | 错误校正电路及操作该错误校正电路的方法 | |
US20190089384A1 (en) | Memory system | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US11025281B2 (en) | Memory system | |
US11455209B2 (en) | Memory system | |
CN111726121A (zh) | 错误校正解码器和具有该错误校正解码器的存储器系统 | |
US10908994B2 (en) | Memory system and method of controlling nonvolatile memory | |
US10778258B2 (en) | Memory system and decoding method | |
KR102355082B1 (ko) | 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 | |
US9268629B2 (en) | Dual mapping between program states and data patterns | |
US11664822B2 (en) | Multidimensional encoding and decoding in memory system | |
US11150813B2 (en) | Memory system | |
JP2023137091A (ja) | メモリシステムおよびメモリ制御方法 | |
US20160269046A1 (en) | Memory controller, memory system, and decoding method | |
US20240086280A1 (en) | Memory system and control method | |
US10673465B2 (en) | Memory controller, memory system, and control method |