(58)【調査した分野】(Int.Cl.,DB名)
符号を構成するシンボルのうち少なくとも1つのシンボルが少なくとも第1の成分符号と前記第1の成分符号とは異なる第2の成分符号とによって保護されている多次元の誤り訂正符号を記録する不揮発性メモリと、
前記不揮発性メモリに記録された前記多次元の誤り訂正符号を読出し情報として読み出すメモリインタフェースと、
前記読出し情報に対して復号を実行することで各シンボルの硬判定復号情報を出力する第1復号器と、
軟判定入力値を用いて前記読出し情報に対する成分符号単位の軟判定復号を実行することで各シンボルの軟判定復号情報を出力する第2復号器と、
前記第2復号器の出力する各シンボルの前記軟判定復号情報を保持する軟判定復号情報メモリと、
前記読出し情報と、前記硬判定復号情報又は前記軟判定復号情報とを用いて、各シンボルの前記軟判定入力値を求める軟判定入力値特定部と、
を備え、
前記軟判定入力値特定部は、前記読出し情報と前記硬判定復号情報とを用いて前記軟判定入力値の初期値を求め、
前記軟判定復号の結果として得られた出力復号語が正しいと判断された場合、前記出力復号語を出力する
メモリシステム。
前記硬判定復号情報は、前記第1復号器が前記読出し情報に対して前記復号を実行することで得られた各シンボルの復号後硬判定値を含む請求項1に記載のメモリシステム。
前記軟判定入力値特定部は、前記読出し情報及び前記復号後硬判定値に加え、前記成分符号ごとのシンドロームを用いて前記軟判定入力値の前記初期値を求める請求項3に記載のメモリシステム。
前記軟判定入力値特定部は、前記第1復号器による前記復号の前後でシンボルの硬判定値が一致しているか否かに基づいて前記初期値を変える請求項1に記載のメモリシステム。
前記軟判定入力値特定部は、前記硬判定復号情報から求まる成分符号ごとのシンドロームが0でない成分符号に属するシンボルの前記軟判定入力値を、前記読出し情報と等しく設定する
請求項1に記載のメモリシステム。
前記軟判定入力値特定部は、前記読出し情報及び前記硬判定復号情報の組合せと前記初期値との対応関係を保持するテーブルを用いて前記初期値を特定する請求項1に記載のメモリシステム。
前記第2復号器は、前記成分符号単位の前記軟判定復号を復号に成功するまで繰り返し実行し、前記軟判定復号の繰返し回数が所定回数に達した場合、前記軟判定復号に失敗したと判定する請求項1に記載のメモリシステム。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【0008】
近年、NAND型フラッシュメモリなどの不揮発性メモリを利用したメモリシステムは、その高速性という特長を生かし、様々な場所で用いられている。しかしながら、不揮発性メモリから読み出したデータには、不揮発性メモリに記録されてからの時間経過や読み出し・書き込みの際に生じるノイズ等に起因するエラーが含まれる可能性がある。そのため、一般には、不揮発性メモリに記録するデータに対して誤り訂正符号を用いた符号化処理が実行され、読出し時にはその誤り訂正符号を用いた復号処理が実行されることで、読み出したデータに含まれているエラーが除去される。
【0009】
図1は、データを誤り訂正符号で保護する動作の一般的な流れを説明するための図である。なお、本説明におけるユーザとは、例えばパーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等の情報処理装置であってよい。
【0010】
ユーザ931は、書込み対象のデータ(以下、ユーザデータという)をメモリシステム900に対して送信する。メモリシステム900は、ユーザ931から受け取ったユーザデータを符号化器917で符号化し、これにより生成された符号化データ(符号語)を不揮発性メモリ920に書き込む。したがって、不揮発性メモリ920に書き込まれる符号化データには、基本的にはエラーが含まれていない。
【0011】
不揮発性メモリ920に格納されている符号化データは、例えばユーザ932からの読出し要求に応じて読み出される。ただし、読み出された符号化データにはエラーが含まれている可能性がある。そこで、読み出された符号化データに含まれるエラーを復号器918で除去しつつ復号を実行することで、オリジナルの符号化データが復元される。その後、オリジナルの符号化データもしくは復元された符号化前のユーザデータがユーザ932へ送信される。なお、読出し要求を発行したユーザ932は、書込み要求を発行したユーザ931と同一のユーザであってもよいし、別のユーザであってもよい。
【0012】
ここで、符号化器917がユーザデータを‘0’又は‘1’で表現された二値情報(ビット)から構成される符号化データに符号化し、その符号化データが二値情報として不揮発性メモリ920に記録された場合を想定する。なお、本説明及び後述する説明において、不揮発性メモリからのデータ読出しの際に、記録されたデータを‘0’であるか‘1’であるかを示す二値情報として読み出して復号器に入力する場合、その入力情報を硬判定入力(Hard-Input)と称する。それに対し、記録されたデータを‘0’であった確率又は‘1’であった確率の情報として読み出して復号器に入力する場合、その確率情報を軟判定入力(Soft-Input)と称する。また、復号器が出力する復号結果が、オリジナルのユーザデータが‘0’であったか‘1’であったかの二値情報から構成されている場合、その出力情報を硬判定出力(Hard-Output)と称する。それに対し、復号器が出力する復号結果にオリジナルのユーザデータの各ビット値(又はシンボル値)が‘0’であったか‘1’であったかの確率情報が含まれる場合、その出力情報を軟判定出力(Soft-Output)と称する。
【0013】
復号器918への入力として軟判定入力を用いたSISO(Soft-Input Soft-Output)復号は、硬判定入力を用いたHIHO(Hard-Input Hard-Output)復号と比較して、より多くの情報を用いた復号が可能となる。そのため、読み出された符号化データにエラーが多く含まれる場合には、SISO復号の方が、HIHO復号よりも、正しいユーザデータを復号できる確率を高めることができる。
【0014】
軟判定入力値および軟判定出力値としては、不揮発性メモリ920に書き込まれた符号化データが例えば情報を‘0’か‘1’かのビットで表現する二元符号(Binary Code)である場合、しばしばビットが‘0’である確率と‘1’である確率との比の自然対数である対数尤度比(Log-Likelihood-Ratio:LLR)表現が用いられる。LLRが負(−)の値である場合、元々の書込み値は‘1’であったと推定される。一方、LLRが正(+)の値である場合、元々の書込み値は‘0’であったと推定される。また、LLRの絶対値の大きさは、元々の書込み値がLLRの正負の符号で推定される値である可能性と関係している。例えば、LLRが‘+9’である場合、LLRが‘+1’である場合と比較して、元々の書込み値が‘0’であった可能性が高い。同様に、LLRが‘−9’である場合、LLRが‘−1’である場合と比較して、元々の書込み値が‘1’であった可能性が高い。
【0015】
また、二元符号の符号化データは、ビット値のベクトルとして表現できる。そのため、二元符号の軟判定入力値および軟判定出力値は、LLR(実数値)のベクトルとして表現することができる。以降の実施形態では、説明の簡略化のため、軟判定入力値および軟判定出力値の確率情報がLLRのベクトルとして表現されている場合を例示するが、このような場合に限定されず、種々変形することが可能である。
【0016】
(第1の実施形態)
図2は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
図2に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、
図2ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【0017】
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【0018】
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
【0019】
メモリコントローラ10は、例えばSoC(System-On-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
【0020】
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14およびデータバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14およびデータバッファ12は、内部バス16で相互に接続されている。
【0021】
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した要求、書込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読み出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
【0022】
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
【0023】
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からの要求をホストI/F15経由で受け付けた場合に、その要求に応じた制御を行う。例えば、制御部11は、ホスト30からの書込み要求に応じて、不揮発性メモリ20へのユーザデータおよびパリティの書き込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの読出し要求に応じて、不揮発性メモリ20からのユーザデータおよびパリティの読み出しをメモリI/F13へ指示する。
【0024】
また、制御部11は、ホスト30から書込み要求を受信した場合、データバッファ12に蓄積されるユーザデータに対して、不揮発性メモリ20上の格納領域(メモリ領域)を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ20上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
【0025】
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
【0026】
ここで、NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。したがって、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【0027】
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時格納する。また、データバッファ12は、不揮発性メモリ20から読み出したユーザデータをホスト30へ送信するまでに一時格納する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
【0028】
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦格納される。符号化/復号部14は、不揮発性メモリ20に格納されるユーザデータを符号化して符号化データ(符号語)を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された符号化データ(読出し情報又は受信語ともいう)を復号してユーザデータを復元する。そこで符号化/復号部14は、符号化器(Encoder)17と復号器(Decoder)18を備える。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
【0029】
以上のような構成を備えるメモリシステム1における書込み処理では、制御部11は、不揮発性メモリ20への書込み時に、ユーザデータの符号化を符号化器17に指示する。その際、制御部11は、不揮発性メモリ20における符号語の格納場所(格納アドレス)を決定し、決定した格納場所もメモリI/F13へ指示する。符号化器17は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、LDPC(Low-Density Parity-Check)符号やBCH(Bose-Chaudhuri-Hocquenghem)符号やRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。
【0030】
一方、読出し処理では、制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、復号器18へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスに対する読み出しを実行し、この読み出しにより得られた読出し情報を復号器18に入力する。そして、復号器18は、入力された読出し情報を復号する。
【0031】
ここで、上述したように、復号器18への入力として軟判定入力を用いたSISO復号は、硬判定入力を用いたHIHO復号と比較して、正しいユーザデータを復号できる確率を高めることができる。ただし、一般に、SISO復号は、HIHO復号より誤り訂正能力は高いが処理時間が長いという特徴を持つ。そこで本実施形態では、
図3に示すように、復号器18が、硬判定値を入力として復号を実行し、その結果として硬判定値を出力するHIHO復号器181と、軟判定値を入力として復号を実行し、その結果として軟判定値を出力するSISO復号器182とを備える。復号器18では、まず、HIHO復号器181が、不揮発性メモリ20から硬判定値として読み出された受信語をHIHO復号する。このHIHO復号に失敗した場合、不揮発性メモリ20から軟判定値の受信語が読み出される。そして、SISO復号器182が、軟判定値として読み出された受信語をSISO復号する。ただし、このような構成に限られず、HIHO復号を省略して全ての受信語にSISO復号を実行する構成など、種々変形することが可能である。また、BCH符号やRS符号等にHIHO復号が適用され、LDPC等にSISO復号が適用されてもよいが、これらに限定されるものではない。
【0032】
SISO復号器182は、例えば、多次元の誤り訂正符号の成分符号復号器として用いることもできる。多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。その際、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、又は、二元体以外の有限体(finite field)などのアルファベットの元で構成される。
【0033】
ここで、多次元の誤り訂正符号の例として、
図4に積符号を示す。
図4に示す積符号500は、構成単位である各情報ビット(シンボルであってもよい)d
0〜d
3が、行方向(図面中横方向)と列方向(図面中縦方向)とのそれぞれで、情報長2ビットで且つパリティ長3ビットのハミング符号511〜515及び521〜525で保護された構造を備える。このような積符号500では、全ての情報ビットd
0〜d
3およびパリティビットp
0〜p
20が行方向(次元1とも称する)のハミング符号と列方向(次元2とも称する)のハミング符号とで2重に保護されている。
【0034】
なお、多次元の誤り訂正符号としては、
図4に例示する積符号500に限定されず、例えば一般化LDPC符号(Generalized Low Density Parity Check Code)などであってもよい。一般化LDPC符号を含む一般の多次元の誤り訂正符号では、シンボルごとに保護の多重度が異なっていてもよい。また、一般の多次元の誤り訂正符号では成分符号を次元1と次元2のようにグループ分けすることができないが、このような符号構造を有する多次元の誤り訂正符号に対しても本技術は適用することが可能である。
【0035】
また、上述のような多次元の誤り訂正符号に対しては、ターボ復号を行うことができる。
図5は、二次元の誤り訂正符号に対してターボ復号を実行するSISO復号器の一例を示すブロック図である。また、
図6は、
図5に示すSISO復号器が実行するターボ復号動作の一例を示すフローチャートである。
【0036】
図5に示すように、二次元の誤り訂正符号に対してターボ復号を実行するSISO復号器182は、次元1加算器(軟判定入力値特定部)111と、次元1SISO復号器112と、次元1外部値メモリ113と、次元2加算器(軟判定入力値特定部)121と、次元2SISO復号器122と、次元2外部値メモリ123とを備える。また、SISO復号器182の入力段には、メモリI/F13によって不揮発性メモリ20から読み出された読出し情報(受信語)を保持する読出し情報メモリ101が設けられている。
【0037】
このようなSISO復号器182が実行するターボ復号動作では、
図6に示すように、読出し情報メモリ101内の読出し情報と、次元2外部値メモリ123内の次元2外部値(次元2軟判定復号情報ともいう)とが次元1加算器111により加算され、これにより、次元1軟判定入力値(=読出し情報+次元2外部値)が計算される(ステップS121)。
【0038】
つづいて、次元1加算器111で計算された次元1軟判定入力値が、成分符号ごとに次元1SISO復号器112に入力される。次元1SISO復号器112は、入力された次元1軟判定入力値に対して次元1の軟判定復号を実行することで、次元1外部値(次元1軟判定復号情報ともいう)を計算する(ステップS122)。計算された次元1外部値は、次元1外部値メモリ113へ転送されて保持される(ステップS123)。
【0039】
つぎに、読出し情報メモリ101内の読出し情報と、次元1外部値メモリ113内の次元1外部値とが次元2加算器121により加算され、これにより、次元2軟判定入力値(=読出し情報+次元1外部値)が計算される(ステップS124)。
【0040】
つづいて、次元2加算器121で計算された次元2軟判定入力値が、成分符号ごとに次元2SISO復号器122に入力される。次元2SISO復号器122は、入力された次元2軟判定入力値に対して次元2の軟判定復号を実行することで、次元2外部値を計算する(ステップS125)。計算された次元2外部値は、次元2外部値メモリ123へ転送されて保持される(ステップS126)。
【0041】
つぎに、復号に成功したか否かが判定される(ステップS127)。復号に成功したとは、例えば正しいと判断できる復号語が発見されたことなどであってよい。復号に成功した場合(ステップS127のYES)、例えば、外部の制御部11等に復号の成功とともに発見された復号語が通知される。一方、復号に成功していない場合(ステップS127のNO)、本動作の反復回数が予め設定しておいた規定値に達しているか否かが判定され(ステップS128)、規定値に達していない場合(ステップS128のNO)、ステップS121へリターンして、以降の動作が実行される。一方、規定値に達していた場合(ステップS128のYES)、例えば、外部の制御部11等に復号の失敗が通知される。なお、反復回数とは、例えば
図6のステップS121〜S126の動作を繰り返した回数等であってよい。
【0042】
なお、
図5に示す構成における次元1SISO復号器112及び次元2SISO復号器122には、例えば、外部値を計算する復号アルゴリズムが採用されたMax-log-MAP(Maximum A Posteriori)復号器を用いることができる。Max-log-MAP復号器は、MAP復号語及び各ビットの対抗復号語から、ビットごとの事後確率値を計算する復号器である。なお、説明の簡略化のため、以降では、事後確率に比例する量(quantity)およびその近似値のことも事後確率と呼ぶこととする。例えば、全ての符号語の事前確率が等しいと仮定した場合、復号語の尤度は、復号語の事後確率値に比例する量となっている。
【0043】
ここで、MAP復号語c
*とは、全ての符号語c∈Cの内で、軟判定入力値Sから計算された事後確率Pが最も高い符号語c
*=argmax
cP(c|S)を指す。また、i番目のビットの対抗復号語とは、全ての符号語c∈Cの内で、i番目のビットでMAP復号語c
*と異なる値を持つ符号語のうち、最も軟判定入力値Sから計算された事後確率Pの高い符号語c
p,i=argmax
cP(c|S,c
i≠c
*i)を指す。従って、Max-log-MAP復号器において復号の途中で算出される中間の硬判定値には、MAP復号語c
*及び全ての対抗符号語c
p,iが含まれる。
【0044】
なお、全ての符号語の集合Cの代わりに、事後確率が比較的高い符号語の集合C’⊂Cが用いられてもよい。その場合、近似的なMAP復号語およびi番目のビットの近似的な対抗復号語が求められる。このような符号語の部分集合C’を用いたMax-log-MAP復号は、全ての符号語の集合Cを用いたMax-log-MAP復号と比べて訂正能力が劣るものの、計算量が削減されるため、高速に復号を行うことができるという特徴を備える。説明の簡略化のため、以降では、近似的なMAP復号語を用いている場合も含めて、MAP復号語と呼称する。
【0045】
符号語の部分集合C’を用いたMax-log-MAP復号では、i番目のビットの対数事後確率比Rが、MAP復号語c
*と対抗復号語c
p,iの事後確率比とから、以下の式(1)を用いて近似的に計算される。
【数1】
【0046】
各次元の外部値は、式(1)で求められた対数事後確率比Rから各次元の軟判定入力値S
iを引くことで求めることができる。なお、本説明では、復号の途中で算出される中間の硬判定値から外部値を計算する復号アルゴリズムの例としてMax-log-MAP復号を挙げたが、それ以外にも種々の復号アルゴリズムを用いることができる。
【0047】
また、SISO復号器182が出力し、次元1外部値メモリ113及び次元2外部値メモリ123に記録される値には、次元1外部値及び次元2外部値そのものの代わりに、それぞれの外部値の計算に必要な情報、例えば最尤復号語及びその尤度情報などを用いることも可能である。なお、最尤復号語とは、発見された復号語のうち最も尤もらしい復号語を指す。その場合、
図6のステップS121では、次元2外部値メモリ123から読み出された情報(最尤復号語及びその尤度情報等)から次元1外部値が計算され、この計算された次元1外部値と読出し情報とを加算することで、次元1軟判定入力値が計算される。同様に、
図6のステップS124では、次元1外部値メモリ113から読み出された情報(最尤復号語及びその尤度情報等)から次元2外部値が計算され、この計算された次元2外部値と読出し情報とを加算することで、次元2軟判定入力値が計算される。
【0048】
以上のような
図6に示すターボ復号アルゴリズムにおいては、次元1外部値及び次元2外部値又はそれら外部値の計算に必要な情報(以下、簡略化のため、これらをまとめて次元1外部値情報及び次元2外部値情報という)の初期値が、一般には、受信語を構成するビット又はシンボルそれぞれに対するLLRを‘0’とする値に設定される。すなわち、
図6に示すターボ復号動作を実行するにあたって、次元1外部値メモリ113内の次元1外部値情報及び次元2外部値メモリ123内の次元2外部値情報が、受信語を構成するビット又はシンボルそれぞれに対するLLRを‘0’にする値に設定される。
【0049】
なお、「LLRが‘0’である」とは、「書込みビットが‘0’である確率と‘1’である確率とが等しい」ことを意味している。そのため、次元1外部値情報及び次元2外部値情報が初期値の状態では、書込みビットの元の値が‘0’であるか‘1’であるかを判断するための情報を一切持っていないこととなる。これは、SISO復号器182が復号処理を一度も行っていない時点では、書込みビットの元の値が‘0’であるか‘1’であるかを判断するための情報が存在しないと考えられるという事実を反映している。
【0050】
その後、
図6に示すターボ復号動作を反復する過程で、次元1外部値情報及び次元2外部値情報が変化する。すなわち、
図6に示すターボ復号動作を実行することで、書込みビットの元の値が‘0’であるか‘1’であるかを判断するための情報(外部値情報)が更新され、この実行を繰り返すことで、外部値情報の信頼性が向上する。その結果、書込みビットの元の値が‘0’であるか‘1’であるかを精度よく判断することが可能となる。
【0051】
ただし、外部値情報の信頼性を高めてターボ復号の誤り訂正能力を向上するためには、ある程度の反復回数が必要である。そのため、復号処理に要する時間が増大してしまう場合がある。
【0052】
そこで本実施形態では、復号処理に要する時間を短縮するために、次元1外部値情報及び次元2外部値情報の初期値として、SISO復号器182以外の復号器から出力された情報から計算された値を用いることとする。SISO復号器182以外の復号器から出力された情報には、例えば、HIHO復号器181から出力された硬判定出力値を用いることができる。ただし、HIHO復号器181から出力された硬判定出力値に限定されず、書込みビットの元の値が‘0’であるか‘1’であるかを判断することが可能な情報であれば、種々の値を次元1外部値情報及び次元2外部値情報の初期値を計算するのに用いることができる。例えば、HIHO復号器181の代わりに復号結果として軟判定出力値を出力する復号器を用いた場合には、この軟判定出力値から求められた硬判定値を、次元1外部値情報及び次元2外部値情報の初期値を計算するのに用いることも可能である。なお、本実施形態では、明確化のため、HIHO復号器181から出力された硬判定出力値を、次元1外部値情報及び次元2外部値情報の初期値を計算するのに用いる場合を例に挙げる。
【0053】
図7は、本実施形態に係る復号器の動作を説明するための図である。
図8は、本実施形態に係る全体的な復号動作の一例を示すフローチャートである。
図7に示すように、復号器18は、第1の復号器であるHIHO復号器181と、第2の復号器であるSISO復号器182と、読出し情報メモリ101とを備える。
【0054】
読出し情報メモリ101は、上述したように、メモリI/F13によって不揮発性メモリ20から読み出された読出し情報(受信語)を保持する。
【0055】
HIHO復号器181は、例えば、硬判定値を入力として復号を実行し、その結果として硬判定値を出力する。硬判定とは、読出し情報から、最も尤もらしい元のビット又はシンボルを推定する処理である。例えば、符号化データが二元符号である場合、硬判定は、「元のデータが‘0’であった確率が高いなら‘0’を、‘1’であった確率が高いなら‘1’を出力する」処理に相当する。ただし、これに限定されず、例えば軟判定値を入力として復号を実行し、その結果として硬判定値を出力する復号器など、復号結果から硬判定値を得ることが可能な復号器であれば、種々変形することが可能である。
【0056】
SISO復号器182は、例えば
図5に例示した構成と同様の構成を備えており、軟判定値を入力として復号を実行し、その結果として軟判定値を出力する。
【0057】
このような復号器18が実行する復号動作では、
図8に示すように、まず、メモリI/F13によって不揮発性メモリ20から読み出されて符号化/復号部14に入力された符号化データの読出し情報が、復号器18の読出し情報メモリ101に格納される(ステップS101)。なお、読出し情報メモリ101内の読出し情報は、例えば軟判定値の符号化データ(受信語)であってよい。
【0058】
次に、読出し情報メモリ101内の読出し情報がHIHO復号器181に入力され、読出し情報に対するHIHO復号が実行される(ステップS102)。なお、読出し情報メモリ101内の読出し情報が軟判定値である場合、HIHO復号器181には、軟判定値を硬判定することで得られた硬判定値の読出し情報が入力される。
【0059】
次に、HIHO復号に成功したか否かが判定され(ステップS103)、成功していた場合(ステップS103のYES)、例えば制御部11へ復号成功が通知されると共に、HIHO復号により得られた復号語又は復号語から復元されたユーザデータがデータバッファ12に転送され(ステップS108)、本動作が終了する。なお、データバッファ12に転送されたユーザデータは、例えば制御部11の制御に従い、ホストI/F15を介してホスト30へ転送される。
【0060】
一方、HIHO復号に失敗していた場合(ステップS103のNO)、HIHO復号の結果に基づいて、SISO復号器182の次元1外部値情報及び次元2外部値情報が初期化される(ステップS104)。この初期化では、例えば、HIHO復号の結果として得られた硬判定値(以下、復号後硬判定値という)及び/又は復号後硬判定値で構成された各成分符号のシンドローム(以下、復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドロームを硬判定復号情報と呼ぶ)から、所定の計算式を用いて次元1外部値情報及び次元2外部値情報の初期値が計算される。なお、計算された初期値は、必ずしも次元1外部値メモリ113及び次元2外部値メモリ123に格納される必要はなく、必要な分だけ都度計算されて次元1加算器111又は次元2加算器121に入力されてもよい。
【0061】
次に、読出し情報メモリ101内の読出し情報がSISO復号器182に入力され、読出し情報に対するSISO復号が実行される(ステップS105)。その際、次元1外部値情報及び次元2外部値情報の初期値として、ステップS104で設定された初期値が使用される。それにより、次元1外部値情報及び次元2外部値情報が‘0’ではない状態からSISO復号を開始することが可能となるため、復号処理に要する時間を短縮することが可能となる。なお、SISO復号の流れは、
図6を用いて説明したターボ復号動作の流れと同様であってよい。
【0062】
次に、SISO復号に成功したか否かが判定され(ステップS106)、成功していた場合(ステップS106のYES)、例えば制御部11へ復号成功が通知されると共に、SISO復号により得られた復号語又は復号語から復元されたユーザデータがデータバッファ12に転送され(ステップS108)、本動作が終了する。
【0063】
一方、SISO復号に失敗していた場合(ステップS106のNO)、例えば制御部11へ復号失敗が通知され(ステップS107)、本動作が終了する。なお、この場合、ホスト30へは、例えば読出しエラーが通知される。
【0064】
つづいて、本実施形態に係る次元1外部値情報及び次元2外部値情報の初期値の計算方法について、図面を用いて詳細に説明する。ただし、以下で説明する計算方法は、単なる一例であり、他の計算方法を排除するものではない。すなわち、次元1外部値情報及び次元2外部値情報の初期値の計算方法は、受信語を構成するビット又はシンボルそれぞれに対するLLRを‘0’とする値に制限されずに次元1外部値情報及び次元2外部値情報の初期値を計算することが可能であれば、種々変形することができる。また、以降の説明では、多次元の誤り訂正符号を構成する各成分符号が線形符号である場合を例示するが、このような場合に限定されず、種々の多次元の誤り訂正符号に対して本実施形態を適用することが可能である。
【0065】
図9は、本実施形態に係るHIHO復号の入出力情報の一例を示す図である。
図10は、
図9(b)に示す復号後硬判定値から計算されたシンドロームを示す図である。なお、
図9(a)は、HIHO復号前の硬判定値の誤り訂正符号(以下、復号前硬判定値という)の一例を示す図であり、
図9(b)は、HIHO復号後の硬判定値の誤り訂正符号(以下、復号後硬判定値という)の一例を示す図である。したがって、
図9(a)に示す復号前硬判定値は、不揮発性メモリ20から読み出された復号前の読出し情報であって、HIHO復号器181への入力情報(硬判定入力値)であり、
図9(b)に示す復号後硬判定値は、HIHO復号器181からの出力情報(硬判定出力値)である。また、本説明では、簡略化のため、不揮発性メモリ20へ書き込まれる符号化データ(符号語)が全て‘0’のビットで構成されたオールゼロデータであるとする。さらに、
図9において、行は、例えば
図4に示す積符号500における次元1に対応し、列は、積符号500における次元2に対応している。
【0066】
不揮発性メモリ20から読み出された復号前の読出し情報には、
図9(a)における‘1’で示されているように、一部のビットにエラーが含まれている。そして、
図9(a)に示す復号前硬判定値をHIHO復号器181でHIHO復号することにより、
図9(b)に示すように、一部のビットの値が‘1’から‘0’に又は‘0’から‘1’に書き換えられる。なお、
図9(b)では、値の書換えがなされたビットが斜線でハッチングされている。
【0067】
図9(b)に示す復号後硬判定値に対してシンドロームを計算した場合、
図10に示すように、エラービットを含まない成分符号(例えば行番号が#1,#3及び#5の成分符号並びに列番号が#1,#4及び#5の成分符号)のシンドロームは‘0’になり、エラーがある成分符号(例えば行番号が#2及び#4の成分符号並びに列番号が#2及び#3の成分符号)のシンドロームはほとんどの場合に0でない値(非ゼロ)になる。
【0068】
このことから、シンドロームが‘0’になっている成分符号に属する各ビットの値は正しい値である確率が高いことが期待される。例えば、
図9(b)及び
図10に示す例では、行番号が#1,#3及び#5の成分符号並びに列番号が#1,#4及び#5の成分符号のシンドロームが‘0’であることから、これらの成分符号に属する各ビットの値は正しい値である確率が高いと期待される。
【0069】
そこで本実施形態では、正しい値である確率が高いと期待されるビットに対しては、「復号後硬判定値が正しい確率が高い」ことを意味する外部値情報を設定する。例えば、行方向のシンドロームが‘0’である行番号=#1,#3及び#5の成分符号に対しては、「復号後硬判定値が正しい確率が高い」ことを意味する次元1外部値情報を設定する。同様に、列方向のシンドロームが‘0’である列番号=#1,#4及び#5の成分符号に対しては、「復号後硬判定値が正しい確率が高い」ことを意味する次元2外部値情報を設定する。
【0070】
具体的には、LLRの正負が元々の書込み値に対応し、且つ、LLRの絶対値の大きさが元々の書込み値がLLRの正負に基づいて推定される値である可能性と関係しているというLLRの定義に基づき、復号後硬判定値が‘0’の場合は正のLLRを、復号後硬判定値が‘1’の場合は負のLLRを、次元1外部値及び次元2外部値としてセットすることで、正しい値である確率が高いと期待されるビットに対しては「復号後硬判定値が正しい確率が高い」ことを意味する外部値情報を設定することが可能である。
【0071】
これを、
図9及び
図10に示した具体例を用いて説明する。
図9に示す例では、1行目1列目(i=#1,j=#1)のビット(1,1)の復号前硬判定値と復号後硬判定値との両方が‘0’である。すなわち、ビット(1,1)については、読出し処理の結果とHIHO復号の結果との両方でビットのLLRが「‘0’である確率が高い」と推定される正のLLRとなっている。また、
図10に示すように、行番号i=#1の次元1の成分符号のシンドロームは‘0’である。そのような場合、ビット(1,1)の次元1外部値の初期値のLLRは、正のLLRの正負を反転させない正の値であるべきだが、HIHO復号前とHIHO復号後とで硬判定値が変化していないため、絶対値の大きさは小さくて構わない。
【0072】
一方、
図9に示す例において、1行目3列目(i=#1,j=#3)のビット(1,3)については、復号前硬判定値が‘1’であるのに対し、復号後硬判定値が‘0’である。すなわち、ビット(1,3)については、読出し処理の結果ではビットのLLRが「‘1’である確率が高い」と推定される負のLLRであったものが、HIHO復号の結果では「‘0’である確率が高い」と推定される正のLLRに変化している。ただし、
図10に示すように、行番号i=#1の次元1の成分符号のシンドロームは‘0’である。そのような場合、ビット(1,3)の次元1外部値の初期値のLLRは、読出し処理の結果である‘1’に対応する負のLLRの正負を反転させる程度に大きな正の値とする必要がある。
【0073】
そこで本実施形態では、例えば以下の式(2)を用いて次元1外部値の初期値を計算する。なお、次元2外部値の初期値については、以下の式(3)に示すように、式(2)におけるS
1,iをS
2,jに入れ換えることで計算することができる。
【数2】
【数3】
【0074】
式(2)及び式(3)において、S
1,iは、i行目の成分符号の復号後シンドローム値であり、d
ijは、i行目j列目の復号後硬判定値のビット値であり、b
ijは、i行目j列目の復号前硬判定値のビット値であり、X及びYは、パラメータとして与えられる正の実数である。ここで、X及びYは、例えば、0<X≦Yの関係が成立している。XよりYの方が大きい値をとるのは、上述したように、読出し処理の結果とHIHO復号の結果とで硬判定値が異なる場合、より大きな値の外部値をその初期値として設定する必要があるためである。
【0075】
上記したような式(2)及び式(3)を用いることで、シンドロームが‘0’である行方向又は列方向の成分符号に属するビットに対して、HIHO復号前とHIHO復号後とで硬判定値が変化していない場合には絶対値の小さいLLRが初期値として計算され、HIHO復号前とHIHO復号後とで硬判定値が変化している場合にはビットのLLRの正負を反転させる程度に絶対値の大きいLLRが外部値の初期値として計算される。また、シンドロームが‘非ゼロ’である行方向又は列方向の成分符号に属するビットに対しては、ビットの値が「‘0’である確率が高い」か「‘1’である確率が高い」かの判断材料を含まないLLR(=0)が外部値の初期値として計算される。
【0076】
なお、次元1外部値及び次元2外部値の計算方法は、上述の例に限定されない。例えば、b
ij,d
ij,S
1,i及びS
2,jの入力に対応して予め対応付けておいた値を出力するテーブルなどを用いて次元1外部値及び次元2外部値の初期値を求めることも可能である。
【0077】
また、HIHO復号前とHIHO復号後とで硬判定値が変化している場合であったとしても、例えば、成分符号のシンドローム計算結果の信頼性があまり高くない場合など、読出し結果の方をより信用したい場合には、外部値の初期値の絶対値がビットのLLRの正負を反転させない程度の大きさとされてもよい。
【0078】
図11は、
図9(a)に示す復号前硬判定値と、
図9(b)に示す復号後硬判定値と、
図10に示すHIHO復号後の成分符号から計算されたシンドロームから式(2)及び式(3)を用いて計算された次元1外部値の初期値の一例を示す図である。
図12は、同じく
図9(a)に示す復号前硬判定値と、
図9(b)に示す復号後硬判定値と、
図10に示すHIHO復号後の成分符号から計算されたシンドロームから式(2)及び式(3)を用いて計算された次元2外部値の初期値の一例を示す図である。なお、
図11及び
図12に示す初期値の計算では、式(2)及び式(3)におけるXを5とし、Yを10とした。
【0079】
図11に示す次元1外部値の初期値の計算では、行方向のシンドロームS
1,iが‘非ゼロ’である行番号i=#2及び#4の成分符号に属するビットに対しては、上述の式(2)における上段の式を用いることで、次元1外部値の初期値のLLRとして‘0’が求められる。一方、行方向のシンドロームS
1,iが‘0’である行番号i=#1,#3及び#5の成分符号に属するビットのうち、HIHO復号前(
図9(a)参照)とHIHO復号後(
図9(b)参照)とで硬判定値の値が変化していないビットに対しては、上述の式(2)における中段の式を用いることで、次元1外部値の初期値のLLRとして‘5’が求められる。ただし、HIHO復号前(
図9(a)参照)とHIHO復号後(
図9(b)参照)とで硬判定値の値が変化しているビットに対しては、上述の式(2)における下段の式を用いることで、次元1外部値の初期値のLLRとして‘10’が求められる。
【0080】
同様に、
図12に示す次元2外部値の初期値の計算では、列方向のシンドロームS
2,jが‘非ゼロ’である列番号j=#2及び#3の成分符号に属するビットに対しては、次元2外部値の初期値のLLRとして‘0’が求められる。一方、列方向のシンドロームS
2,jが‘0’である列番号j=#1,#4及び#5の成分符号に属するビットのうち、HIHO復号前(
図9(a)参照)とHIHO復号後(
図9(b)参照)とで硬判定値の値が変化していないビットに対しては、次元2外部値の初期値のLLRとして‘5’が求められ、HIHO復号前(
図9(a)参照)とHIHO復号後(
図9(b)参照)とで硬判定値の値が変化しているビットに対しては、次元2外部値の初期値のLLRとして‘10’が求められる。
【0081】
以上のように、本実施形態では、外部値の初期値として、硬判定復号の結果が反映された値が用いられる。これにより、本実施形態によれば、ターボ復号の外部値が真の復号語に近い値を持つまでに必要な反復回数を減らすことが可能になる。その結果、復号に要する時間を短縮して迅速な読出し処理を実現することが可能となる。
【0082】
また、硬判定復号は、軟判定復号と比べ、相対的に計算量が小さく、高速に処理を完了することが可能である。そのため、本実施形態によれば、復号処理全体の時間をより短縮することが可能であるというメリットも得られる。
【0083】
(第2の実施形態)
次に、第2の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。第1の実施形態に係るSISO復号器182は、確率情報である外部値(軟判定復号情報)を外部値メモリに記録しておかなければならないため、復号に必要なメモリ量が増大してしまう可能性がある。そこで第2の実施形態では、復号に必要なメモリ量を削減することが可能なメモリシステムについて、例を挙げて説明する。なお、以下の説明において、第1の実施形態と同様の構成については、同一の符号を付し、その重複する説明を省略する。また、本実施形態では、説明の明確化のため、多次元の誤り訂正符号として、
図4を用いて説明した積符号500のような、二次元の誤り訂正符号を用いることとする。
【0084】
本実施形態に係るメモリシステムの概略構成は、第1の実施形態において
図2、
図3、
図5及び
図7を用いて説明した構成と同様であってよい。また、本実施形態に係る復号器18の全体的な復号動作は、第1の実施形態において
図8を用いて説明した復号動作と同様であってよい。ただし、本実施形態では、SISO復号器182が以下で説明するようなSISO復号器(近似的ターボ復号器ともいう)282に置き換えられる。
【0085】
図13は、本実施形態に係るSISO復号器の概略構成例を示すブロック図である。また、
図14は、
図13に示すSISO復号器が実行するターボ復号動作の一例を示すフローチャートである。
【0086】
図13に示すように、本実施形態に係るSISO復号器282は、中間値メモリ201と、次元1軟判定入力値計算部(軟判定入力値特定部)211と、次元1成分符号SISO復号器212と、次元2軟判定入力値計算部(軟判定入力値特定部)221と、次元2成分符号SISO復号器222とを備え、入力段に読出し情報メモリ101が設けられた構成を備える。
【0087】
次元1軟判定入力値計算部211及び次元2軟判定入力値計算部221は、読出し情報メモリ101に保持された軟判定値の読出し情報と、中間値メモリ201に保持された次元1の中間値(次元1中間値)及び次元2の中間値(次元2中間値)とから、各次元の軟判定入力値を成分符号ごとに計算する。
【0088】
なお、中間値(軟判定復号情報ともいう)とは、復号の途中で算出される各成分符号の中間の硬判定値と、この中間の硬判定値の信頼度情報とからなる情報であり、次元1の外部値(次元1外部値)及び次元2の外部値(次元2外部値)の近似計算に必要な情報である。ある中間の硬判定値(成分符号語)cの信頼度情報とは、軟判定入力値(=確率情報)から計算された、成分符号語cがオリジナルの成分符号語である確率が高いか低いかを示すメトリックである。二元符号における信頼度情報としては、例えば、成分符号語cの軟判定入力値Sから計算した事後確率Pなどを用いることができる。ただし、これに限定されず、成分符号語cが正しい確率を示す値や、成分符号語cと軟判定入力値との距離関数の値や、それらの値に対して対数関数などを適用した後の値など、様々な情報を信頼度情報として用いることが可能である。
【0089】
次元1成分符号SISO復号器212及び次元2成分符号SISO復号器222は、入力された各次元の軟判定入力値に対して成分符号ごとにSISO復号を実行することで、各次元の中間値を計算する。
【0090】
図13に示すSISO復号器282によるターボ復号動作では、
図14に示すように、読出し情報メモリ101内の読出し情報と、中間値メモリ201内の次元1中間値及び次元2中間値とが次元1軟判定入力値計算部211に入力されて、次元1軟判定入力値が計算される(ステップS221)。ただし、最初の次元1軟判定入力値の計算では、中間値メモリ201内に次元1中間値及び次元2中間値が格納されていない。そこで本実施形態では、次元1中間値及び次元2中間値の初期値として、HIHO復号器181(
図7参照)によるHIHO復号の結果として得られた硬判定値(復号後硬判定値)及び/又は復号後硬判定値で構成された各成分符号のシンドローム値が用いられる。すなわち、本実施形態では、
図8のステップS104において、HIHO復号結果として得られた復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値が、中間値メモリ201の初期値として設定される。なお、この初期値は、必ずしも中間値メモリ201に格納される必要はなく、必要な分だけ都度計算されて次元1軟判定入力値計算部211又は次元2軟判定入力値計算部221に入力されてもよい。
【0091】
つぎに、次元1軟判定入力値計算部211で計算された次元1軟判定入力値が次元1の成分符号ごとに次元1成分符号SISO復号器212に入力されて、次元1中間値が計算される(ステップS222)。計算された次元1中間値は、中間値メモリ201に転送されて保持される(ステップS223)。
【0092】
つぎに、読出し情報メモリ101内の読出し情報と、中間値メモリ201内の次元1中間値及び次元2中間値とが次元2軟判定入力値計算部221に入力されて、次元2軟判定入力値が計算される(ステップS224)。その際、ステップS221と同様に、最初の次元2軟判定入力値の計算では、次元2中間値の初期値として、HIHO復号結果として得られた復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値から求められた値が用いられる。
【0093】
つぎに、次元2軟判定入力値計算部221で計算された次元2軟判定入力値が次元2の成分符号ごとに次元2成分符号SISO復号器222に入力されて、次元2中間値が計算される(ステップS225)。計算された次元2中間値は、中間値メモリ201に転送されて保持される(ステップS226)。
【0094】
つぎに、復号に成功したか否かが判定される(ステップS227)。復号に成功したとは、例えば正しいと判断できる復号語が発見されたことであってよい。また、発見された復号語が正しいか否かの判断は、例えば符号化/復号部14内の不図示の制御部が実行してもよい。復号に成功した場合(ステップS227のYES)、
図8に示す動作へリターンして復号成功と判断され(
図8のステップS106のYES)、その後、外部の制御部11等に復号の成功とともに発見された復号語が通知されて(
図8のステップS108)、本動作が終了する。一方、復号に成功していない場合(
図14のステップS227のNO)、本動作の反復回数が予め設定しておいた規定値に達しているか否かが判定され(ステップS228)、規定値に達していない場合(ステップS228のNO)、ステップS221へリターンして、以降の動作を実行する。また、規定値に達していた場合(ステップS228のYES)、
図8に示す動作へリターンして復号失敗と判断され(
図8のステップS106のNO)、その後、外部の制御部11等に復号の失敗が通知されて(
図8のステップS107)、本動作が終了する。なお、反復回数とは、例えば
図14のステップS221〜S226の動作を繰り返した回数等であってよい。
【0095】
つづいて、
図13に示す次元1成分符号SISO復号器212及び次元2成分符号SISO復号器222それぞれに用いられる成分符号SISO復号器の構成例について、図面を参照して詳細に説明する。
図15は、本実施形態に係る成分符号SISO復号器の概略構成例を示すブロック図である。
【0096】
次元1成分符号SISO復号器212及び次元2成分符号SISO復号器222それぞれは、上述のMax-log-MAP復号アルゴリズムに従う場合、各成分符号語に関し、MAP復号語、MAP復号語の事後確率及び各ビットにおける対抗復号語の事後確率の三種類の値を記憶しておくことで、対数事後確率比を計算することができる。そこで、本実施形態に係る成分符号SISO復号器230は、
図15に示すように、軟判定入力値受信部231と、中間値計算部232と、信頼度情報計算部233とを備える。
【0097】
軟判定入力値受信部231は、次元1軟判定入力値計算部211/次元2軟判定入力値計算部221で計算された次元1軟判定入力値/次元2軟判定入力値を受信し、受信した軟判定入力値を中間値計算部232及び信頼度情報計算部233それぞれへ出力する。
【0098】
中間値計算部232は、入力された次元1軟判定入力値/次元2軟判定入力値に対して、Chase復号やOrdered Statistics復号などの復号処理を実行することで、復号対象の成分符号に対して、中間の硬判定値に相当するMAP復号語を計算し、計算されたMAP復号語を信頼度情報計算部233及び中間値メモリ201それぞれへ出力する。
【0099】
信頼度情報計算部233は、復号対象の成分符号に関し、軟判定入力値受信部231から入力された次元1軟判定入力値/次元2軟判定入力値と、中間値計算部232から入力されたMAP復号語とから、MAP復号語の事後確率及び各ビットにおける対抗復号語の事後確率を計算し、計算されたMAP復号語の事後確率及び各ビットにおける対抗復号語の事後確率を信頼度情報として中間値メモリ201へ出力する。
【0100】
これにより、復号対象の成分符号に関し、復号の途中の中間の硬判定値であるMAP復号語と、信頼度情報であるMAP復号語の事後確率及び各ビットにおける対抗復号語の事後確率とが中間値メモリ201に格納される。
【0101】
つづいて、
図14のステップS221及びS224において、
図13における次元1軟判定入力値計算部211及び次元2軟判定入力値計算部221が次元1軟判定入力値及び次元2軟判定入力値を計算する際の動作フローを、図面を参照して詳細に説明する。
図16は、本実施形態に係る次元1軟判定入力値計算部の動作フローの一例を示すフローチャートである。なお、
図16には、次元1軟判定入力値計算部211の動作を示すが、同様の動作を次元2軟判定入力値計算部221に適用することが可能である。
【0102】
図16に示すように、次元1軟判定入力値計算部211は、次元1軟判定入力値を計算するにあたり、まず、読出し情報メモリ101から読出し情報を入力するとともに、中間値メモリ201から次元1中間値及び次元2中間値を入力する(ステップS241)。ただし、最初の次元1軟判定入力値の計算では、上述したように、HIHO復号結果として得られた復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値から求めた値を中間値の初期値として用いる。例えば、HIHO復号結果として得られた復号後硬判定値を計算されたMAP復号語として用い、各成分符号のシンドローム値が0の時は計算されたMAP復号語の事後確率を0.9、そうでなければ0.1として計算する。また、各ビットにおける対抗復号語の事後確率を0.1として計算する。ただし、このような算出方法に限定されず、種々変形することが可能である。
【0103】
つぎに、次元1軟判定入力値計算部211は、入力した読出し情報と次元1中間値及び次元2中間値(又は復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値)とから次元2外部値の近似値を計算する。具体的には、次元1軟判定入力値計算部211は、次元2中間値(又は次元2の復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値)における次元2のMAP復号語、次元2のMAP復号語の事後確率、及び次元2のビットごとの対抗復号語の事後確率から、次元2の対数事後確率比を計算する(ステップS242)。
【0104】
つづいて、通常のMax-log-MAP復号であれば、次元2の対数事後確率比から次元2軟判定入力値を引くことで次元2外部値を求めることが可能であるが、本実施形態では、現時点で次元2軟判定入力値が未知である。そこで本実施形態では、読出し情報を次元2軟判定入力値の近似値として代用し、次元2の対数事後確率比から読出し情報を引くことで、次元2外部値(近似値)を近似的に計算する(ステップS243)。
【0105】
つぎに、ステップS243で計算された次元2外部値の近似値と読出し情報とを加算することで、次元1軟判定入力値を計算する(ステップS244)。その後、計算された次元1軟判定入力値を次元1の成分符号ごとに次元1成分符号SISO復号器212へ出力し(ステップS245)、
図14に示す動作へリターンする。
【0106】
以上のように、読出し情報を軟判定入力値の近似値として代用した場合でも、最終的に算出される軟判定入力値は、本来のターボ復号において計算されるべき軟判定入力値に対して、よい近似となっている。これは、本実施形態によれば、例えば
図5に例示した構成における次元1外部値メモリ113及び次元2外部値メモリ123を、より容量の小さい中間値メモリ201で代用することができることを示唆している。
【0107】
具体的には、通常のMax-log-MAP復号では、チャネル値、入力外部値情報、硬判定値及び信頼度の各情報を含む外部値を次元ごとに保持しておくメモリが必要であったが、本実施形態では、外部値として硬判定値(MAP復号語に相当)及び信頼度情報を保持しておけばよく、また、全ての次元に対して1つのメモリを共有することが可能となる。その結果、本実施形態によれば、復号に必要なメモリ量を削減することが可能である。
【0108】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【0109】
(第3の実施形態)
つぎに、第3の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。本実施形態における符号化/復号部を含むメモリシステムの構成は、上述した実施形態において
図2、
図3、
図7、
図13及び
図15を用いて例示したメモリシステムと同様であってよいため、ここでは重複する説明を省略する。また、本実施形態に係る近似的ターボ復号器の処理フローも第2の実施形態において
図14を用いて説明した処理フローと同様であってよいため、ここでは重複する説明を省略する。ただし、本実施形態では、次元1軟判定入力値計算部211及び次元2軟判定入力値計算部221の動作フロー(
図14のステップS221及びS224)が、第2の実施形態において
図16を用いて例示した動作フローとは異なる。
【0110】
図17は、本実施形態に係る次元1軟判定入力値計算部の動作フローの一例を示すフローチャートである。なお、
図17には、次元1軟判定入力値計算部211の動作を示すが、同様の動作を次元2軟判定入力値計算部221に適用することが可能である。また、
図17に示す動作において、
図16に示す動作と同様の動作については、同一の符号を付し、詳細な説明を省略する。
【0111】
図17に示すように、次元1軟判定入力値計算部211は、まず、
図16におけるステップS241と同様にして、読出し情報と次元1中間値及び次元2中間値(又は復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値)とを入力し(ステップS341)、入力した読出し情報と次元1中間値及び次元2中間値(又は復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値)とから次元2外部値の近似値を計算する。ただし、本実施形態では、次元1軟判定入力値計算部211は、次元1中間値における次元1のMAP復号語、次元1のMAP復号語の事後確率、及び次元1のビットごとの対抗復号語の事後確率(又は次元1の復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値)から、次元1の対数事後確率比を計算する(ステップS342)。つづいて、次元1軟判定入力値計算部211は、次元2中間値における次元2のMAP復号語、次元2のMAP復号語の事後確率、及び次元2のビットごとの対抗復号語の事後確率(又は次元2の復号後硬判定値及び/又は復号後硬判定値で構成された各成分符号のシンドローム値)から、次元2の対数事後確率比を計算する(ステップS343)。
【0112】
つづいて、通常のMax-log-MAP復号であれば、次元2の対数事後確率比から次元2軟判定入力値を引くことで次元2外部値を求めることが可能であるが、本実施形態では、第2の実施形態と同様に、現時点で次元2軟判定入力値が未知である。そこで本実施形態では、次元1の対数事後確率比を次元2軟判定入力値の近似値として代用し、次元2の対数事後確率比から次元1の対数事後確率比を引くことで、次元2外部値(近似値)を近似的に計算する(ステップS344)。
【0113】
その後、次元1軟判定入力値計算部211は、
図16のステップS244〜S245で説明した動作と同様の動作を実行することで、次元2外部値の近似値と読出し情報とを加算して次元1軟判定入力値を計算し(ステップS345)、計算された次元1軟判定入力値を次元1の成分符号ごとに次元1成分符号SISO復号器212へ出力して(ステップS346)、
図14に示す動作へリターンする。
【0114】
以上のように、一方の次元の対数事後確率比を他方の次元の軟判定入力値の近似値として代用した場合でも、最終的に算出される軟判定入力値は、本来のターボ復号において計算されるべき軟判定入力値に対して、よい近似となっている。これにより、第2の実施形態と同様に、例えば
図5に例示した構成における次元1外部値メモリ113及び次元2外部値メモリ123を、より容量の小さい中間値メモリ201で代用することが可能となり、復号に必要なメモリ量を削減することが可能である。
【0115】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【0116】
(第4の実施形態)
つぎに、第4の実施形態に係るメモリシステムについて説明する。第2の実施形態において
図16を用いて例示した次元1軟判定入力値計算部211/次元2軟判定入力値計算部221の動作フローと、第3の実施形態において
図17を用いて例示した次元1軟判定入力値計算部211/次元2軟判定入力値計算部221の動作フローとは、特定の条件で選択的に切り替えて使い分けることが可能である。例えば、次元1又は次元2のMAP復号語の事後確率が予め定めておいた閾値より高い場合には、
図17に示した動作フローを用いて次元1軟判定入力値又は次元2軟判定入力値を求め、それ以外の場合には、
図16に示した動作フローを用いて次元1軟判定入力値又は次元2軟判定入力値を求めるというように、MAP復号語の事後確率に基づいて実行する動作フローを切り替えるように構成することも可能である。
【0117】
そのような構成においても、上述した実施形態と同様に、例えば
図5に例示した構成における次元1外部値メモリ113及び次元2外部値メモリ123を、より容量の小さい中間値メモリ201で代用することが可能となり、復号に必要なメモリ量を削減することが可能である。
【0118】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【0119】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。