(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024041466
(43)【公開日】2024-03-27
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
H03M 13/37 20060101AFI20240319BHJP
G06F 11/10 20060101ALI20240319BHJP
【FI】
H03M13/37
G06F11/10 604
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2022146299
(22)【出願日】2022-09-14
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】久保田 貴大
(72)【発明者】
【氏名】内川 浩典
【テーマコード(参考)】
5J065
【Fターム(参考)】
5J065AB01
5J065AC03
5J065AD03
5J065AD07
5J065AD11
5J065AE03
5J065AE06
5J065AG05
(57)【要約】
【課題】より高精度に誤り訂正を実行する。
【解決手段】メモリシステムは、不揮発性メモリと、データを誤り訂正符号で符号化し、符号化されたデータを不揮発性メモリに記憶するメモリコントローラとを備える。メモリコントローラは、不揮発性メモリから読み出される読出し情報を用いた第1復号処理の少なくとも一部である第1処理を実行し、第1処理の処理結果の統計情報を用いて、読出し情報におけるビットエラーのうち、ハードエラーの割合を示す第1指標を推定し、第1指標に応じて、第1処理よりレイテンシが大きい第2復号処理のパラメタを決定し、決定したパラメタと、読出し情報と、を用いて第2復号処理を実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
データを誤り訂正符号で符号化し、符号化されたデータを前記不揮発性メモリに記憶するメモリコントローラと、を備え、
前記メモリコントローラは、
前記不揮発性メモリから読み出される読出し情報を用いた第1復号処理の少なくとも一部である第1処理を実行し、
前記第1処理の処理結果の統計情報を用いて、前記読出し情報におけるビットエラーのうち、ハードエラーの割合を示す第1指標を推定し、
前記第1指標に応じて、第2復号処理のパラメタを決定し、
決定した前記パラメタと、前記読出し情報と、を用いて前記第2復号処理を実行する、
メモリコントローラと、
を備えるメモリシステム。
【請求項2】
前記符号化されたデータは、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号であり、
前記メモリコントローラは、
前記N個の成分符号群に含まれる成分符号のうち、エラーの個数が前記第2復号処理による訂正可能数未満である前記成分符号に対する前記統計情報を用いて前記第1指標を推定する、
請求項1に記載のメモリシステム。
【請求項3】
前記符号化されたデータは、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号であり、
前記メモリコントローラは、
前記N個の成分符号群に含まれる成分符号に対する前記第2復号処理の復号結果が誤訂正であるか否かを判定し、前記誤訂正である前記復号結果を差し戻すロールバックを実行する、
請求項1に記載のメモリシステム。
【請求項4】
前記符号化されたデータは、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号であり、
前記第1処理は、前記読出し情報を用いた復号の信頼度を出力する処理を含み、
前記メモリコントローラは、
前記信頼度が閾値以上である成分符号に対する前記統計情報を用いて前記第1指標を推定する、
請求項1に記載のメモリシステム。
【請求項5】
前記符号化されたデータは、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号であり、
前記統計情報は、前記N個の成分符号群に含まれる成分符号のうち、エラーが訂正できたと判定された成分符号の個数である、
請求項1に記載のメモリシステム。
【請求項6】
前記符号化されたデータは、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号であり、
前記統計情報は、前記N個の成分符号群に含まれる成分符号それぞれの復号時に発見された1個以上のエラーの個数の総和である、
請求項1に記載のメモリシステム。
【請求項7】
前記符号化されたデータは、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によってそれぞれ保護されているN次元の誤り訂正符号であり、
前記統計情報は、前記N個の成分符号群に含まれる成分符号それぞれの復号時に発見された1個以上のエラーの位置における信頼度の総和である、
請求項1に記載のメモリシステム。
【請求項8】
前記信頼度は、前記不揮発性メモリから読み出される読出し情報に含まれる各ビットの尤度情報である、
請求項7に記載のメモリシステム。
【請求項9】
前記パラメタは、前記第1指標が閾値以上であるときに実行する第1復号アルゴリズムと、前記第1指標が前記閾値より小さいときに実行する第2復号アルゴリズムと、を指定するパラメタである、
請求項1に記載のメモリシステム。
【請求項10】
前記第1復号アルゴリズムは、Chase復号である、
請求項9に記載のメモリシステム。
【請求項11】
前記第2復号アルゴリズムは、Chase復号とOSD(Ordered Statistics Decoding)とを混合したアルゴリズムである、
請求項9に記載のメモリシステム。
【請求項12】
前記メモリコントローラは、
前記第1指標と、前記ビットエラーの割合を示す第2指標と、に応じて、前記第2復号処理のパラメタを決定する、
請求項1に記載のメモリシステム。
【請求項13】
前記パラメタは、前記第2復号処理の実行をスキップするか否かを示し、
前記メモリコントローラは、前記第2復号処理の実行をスキップすることを示す前記パラメタが設定された場合、前記読出し情報を用いた第3復号処理を実行する、
請求項1に記載のメモリシステム。
【請求項14】
前記メモリコントローラは、
前記第1指標を出力する、
請求項1に記載のメモリシステム。
【請求項15】
前記第1復号処理は、ハードビット復号であり、
前記第1処理は、前記ハードビット復号のうち、前記第1指標の推定に必要な情報を得られる一部の処理である、
請求項1に記載のメモリシステム。
【請求項16】
前記メモリコントローラは、
前記統計情報と、前記読出し情報に基づく尤度情報と、を用いて、前記第1指標を算出する、
請求項15に記載のメモリシステム。
【請求項17】
前記第2復号処理は、前記第1処理よりレイテンシが大きい、
請求項1に記載のメモリシステム。
【請求項18】
メモリシステムで実行される不揮発性メモリの制御方法であって、
データを誤り訂正符号で符号化し、符号化されたデータを前記不揮発性メモリに記憶し、
前記不揮発性メモリから読み出される読出し情報を用いた第1復号処理の少なくとも一部である第1処理を実行し、
前記第1処理の処理結果の統計情報を用いて、前記読出し情報におけるビットエラーのうち、ハードエラーの割合を示す第1指標を推定し、
前記第1指標に応じて、第2復号処理のパラメタを決定し、
決定した前記パラメタと、前記読出し情報と、を用いて前記第2復号処理を実行する、
ことを含む制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび制御方法に関する。
【背景技術】
【0002】
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2022/0156142号明細書
【特許文献2】米国特許出願公開第2021/0328597号明細書
【特許文献3】米国特許出願公開第2022/0083261号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の実施形態は、より高精度に誤り訂正(復号)を実行することができるメモリシステムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、不揮発性メモリと、データを誤り訂正符号で符号化し、符号化されたデータを不揮発性メモリに記憶するメモリコントローラとを備える。メモリコントローラは、不揮発性メモリから読み出される読出し情報を用いた第1復号処理の少なくとも一部である第1処理を実行し、第1処理の処理結果の統計情報を用いて、読出し情報におけるビットエラーのうち、ハードエラーの割合を示す第1指標を推定し、第1指標に応じて、第1処理よりレイテンシが大きい第2復号処理のパラメタを決定し、決定したパラメタと、読出し情報と、を用いて第2復号処理を実行する。
【図面の簡単な説明】
【0006】
【
図1】実施形態に係るメモリシステムのブロック図。
【
図4】エラーベクタ発見数と、BERとの関係の例を示す図。
【
図5】実施形態のメモリシステムによる復号処理のフローチャート。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態に係るメモリシステムおよびメモリ制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【0008】
図1は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。
図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、
図1ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【0009】
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【0010】
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
【0011】
メモリコントローラ10は、例えばSoC(System-On-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
【0012】
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、メモリコントローラ10は、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14、および、データバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14、および、データバッファ12は、内部バス16で相互に接続されている。
【0013】
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した要求、書込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読み出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
【0014】
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
【0015】
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時記憶する。また、データバッファ12は、不揮発性メモリ20から読み出したユーザデータをホスト30へ送信するまでに一時記憶する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
【0016】
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からの要求をホストI/F15経由で受け付けた場合に、その要求に応じた制御を行う。例えば、制御部11は、ホスト30からの書込み要求に応じて、不揮発性メモリ20へのユーザデータおよびパリティの書き込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの読出し要求に応じて、不揮発性メモリ20からのユーザデータおよびパリティの読み出しをメモリI/F13へ指示する。
【0017】
また、制御部11は、ホスト30からユーザデータの書込み要求を受信した場合、データバッファ12に蓄積されるユーザデータに対して、不揮発性メモリ20上の記憶領域(メモリ領域)を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが記憶された不揮発性メモリ20上の記憶領域を示す物理アドレスとの対応は、アドレス変換テーブルとして例えばデータバッファ12に記憶される。
【0018】
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
【0019】
ここで、NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ページよりも大きい所定のデータ単位で消去が行われる。本実施形態では、同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。メモリセルは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。メモリセルは、電荷蓄積層に蓄えられた電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じたデータを記憶する。
【0020】
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦記憶される。符号化/復号部14は、不揮発性メモリ20に記憶されるユーザデータを誤り訂正符号で符号化して符号化データ(符号語)を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された符号化データ(読出し情報又は受信語ともいう)を復号してユーザデータを復元する。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
【0021】
以上のような構成を備えるメモリシステム1における書込み処理では、制御部11は、不揮発性メモリ20への書込み時に、ユーザデータの符号化を符号化/復号部14に指示する。その際、制御部11は、不揮発性メモリ20における符号語の記憶場所(記憶アドレス)を決定し、決定した記憶場所もメモリI/F13へ指示する。符号化/復号部14は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを誤り訂正符号で符号化して符号語を生成する。符号化方式としては、例えば、LDPC(Low-Density Parity-Check)符号やBCH(Bose-Chaudhuri-Hocquenghem)符号やRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。メモリI/F13は、制御部11からの指示に基づいて符号語を不揮発性メモリ20に書き込む。
【0022】
一方、読出し処理では、制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、符号化/復号部14へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスに対する読み出しを実行し、この読み出しにより得られた読出し情報を符号化/復号部14に入力する。そして、符号化/復号部14は、入力された読出し情報を復号する。
【0023】
符号化/復号部14は、例えば、多次元の誤り訂正符号の各成分符号の符号化部/復号部として用いることもできる。多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。その際、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、又は、二元体以外の有限体(finite field)などのアルファベットの元で構成される。以下は、1シンボルを1ビットの元とする例を主に説明する。
【0024】
ここで、多次元の誤り訂正符号の例として、
図2に積符号の構成例を示す。
図2に示す積符号200は、3ビットを訂正可能なBCH符号を、行方向の成分符号および列方向の成分符号とする積符号の例である。また積符号200は、行方向に7個のシンボル(ビット)、および、列方向に8個のシンボル(ビット)を含む積符号の例である。
【0025】
なお行方向および列方向のシンボル数は
図2の例に限られるものではない。また、成分符号はBCH以外のどのような符号を用いてもよい。例えば、リードソロモン符号を、行方向および列方向の少なくとも一方の成分符号として用いてもよい。
【0026】
図2のような積符号の復号では、例えば符号化/復号部14は、まず積符号を構成する行方向の成分符号を順次復号する。符号化/復号部14は、例えば限界距離復号により成分符号を復号する。行方向の成分符号のうち復号に成功しない成分符号があった場合、符号化/復号部14は、行方向の成分符号の復号において訂正できた誤りを訂正し、列方向の成分符号を復号する。列方向の成分符号のうち復号に成功しない成分符号があった場合、符号化/復号部14は、列方向の成分符号の復号において訂正できた誤りを訂正し、再度、行方向の成分符号を復号する。以上のように、行方向の成分符号の復号と列方向の成分符号の復号とが、終了条件を満たすまで繰り返し実行される。以下では、このように繰り返される復号を反復復号処理という場合がある。積符号は、訂正能力が高く計算量の小さい符号化方式を実現するために使用される。
【0027】
なお、多次元の誤り訂正符号としては、
図2に例示する積符号200に限定されず、例えば一般化LDPC符号(Generalized Low Density Parity Check Code)などであってもよい。一般化LDPC符号を含む一般の多次元の誤り訂正符号では、シンボルごとに保護の多重度が異なっていてもよい。また、一般の多次元の誤り訂正符号では成分符号を行方向と列方向でグループ分けすることができない場合があるが、このような符号構造を有する多次元の誤り訂正符号に対しても本技術は適用することが可能である。以下では、多次元の誤り訂正符号として積符号を用いた場合を例に説明する。
【0028】
以下では、簡単のため、次元1と次元2にグループ分けできる2個の成分符号によって各シンボルが保護されている2次元の誤り訂正符号を用いる例を説明する。各次元の成分符号それぞれは、次元ごとに定められる1個以上の成分符号を含む。以下では、1個以上の成分符号を含む、各次元に対応する成分符号を成分符号群という場合がある。例えば次元1の成分符号群および次元2の成分符号群は、それぞれ、n1個の成分符号およびn2個の成分符号を含む。適用可能な誤り訂正符号はこれに限られず、符号を構成するシンボルのうち少なくとも1つのシンボルがN個(Nは2以上の整数)の成分符号群によって保護されているN次元の誤り訂正符号であってもよい。各成分符号群に含まれる成分符号の個数で表す場合、N次元の誤り訂正符号は、M個(Mは、ni(1≦i≦N)の総和、Nは2以上の整数、niは、第i次元の成分符号の個数)の成分符号によって保護される。
【0029】
図2内の記号「×」は、エラーとなったシンボルを表す。各成分符号にエラーがあるか否かは、例えばシンドロームが0であるか(エラーなし)そうでないか(エラーあり)により判定することができる。行方向の成分符号201は、2個(2ビット)のエラーを含む。列方向の成分符号202は、4個(4ビット)のエラーを含む。3ビットを訂正可能なBCH符号を用いる場合、符号化/復号部14は、行方向の成分符号201を訂正できる。この結果、列方向の成分符号202に含まれるエラーは3個に減少する。従って、符号化/復号部14は、列方向の成分符号202を訂正可能となる。
【0030】
ここで、不揮発性メモリ20からのデータの読出し処理、および、読み出したデータの復号処理の例について説明する。
【0031】
不揮発性メモリ20からのデータの読出し処理では、硬判定読出し(ハードビット(HB)リードともいう)と、軟判定読出し(ソフトビット(SB)リードともいう)とが実行される。
【0032】
硬判定読出しでは、読み出したビット値が(0,1)で切り替わる読出し電圧(以下、HBリードレベルという)を読み出し対象のメモリセルに接続されたワード線に印加することで、2値のデータである硬判定値のデータ(ハードビット(HB)データともいう)が読み出される。軟判定読出しでは、HBリードレベルから電圧値を一定値分だけ低い値および一定値分だけ高い値にシフトした複数のリードレベル(以下、SBリードレベルという)を各メモリセルに印加することで、軟判定値のデータ(ソフトビット(SB)データともいう)がさらに読み出される。
【0033】
SBリードにより各メモリセルから読み出されたSBデータは、各メモリセルの閾値電圧が想定される(0,1)の状態(閾値電圧分布)からどの程度ずれているかを示している。このSBデータは、各メモリセルから読み出したビット値の信頼性(値の正しさ)を表現する対数尤度比(Log Likelihood Ratio:LLR)に変換することができる。例えば、HBデータおよびSBデータの組み合わせごとにそれぞれ異なる値のLLRを定めたテーブル(LLRテーブル)を用いることにより、読み出されたHBデータおよびSBデータから、LLRの値が求められる。
【0034】
誤り訂正符号の復号技術として、ハードビット復号(硬判定復号)とソフトビット復号(軟判定復号)とがある。ハードビット復号では、入力される値は、0または1の1ビット(HBデータ)である。これに対してソフトビット復号では、入力される値は、0または1の確からしさを表す対数尤度比などの尤度情報である。
【0035】
LLRは、例えば以下のように定義される。まず、書き込み値がb(bは0または1)のとき、受信語がrである確率をp(r|b)と表す。この確率p(r|b)を、「受信語がrのときの、書き込み値bの尤度(likelihood)」という。本実施形態では、受信語がrのときの書き込み値bの対数尤度比LLRを、以下の式で表す。
LLR=log_e(p(r|0)/p(r|1))
【0036】
例えば、LLRが正であれば、受信語がrのとき、書き込み値が0であることの方が、1であることよりも尤もらしいことを意味する。また、LLRの絶対値が大きいほど、尤もらしさの度合いが大きいことになる。
【0037】
例えば、-9,-3,-1,1,3,9の6種類の値を取るLLRが使われる場合がある。以下では、エラーが発生しているビットに対応するLLRの絶対値が、他のエラーより大きいエラーを、ハードエラーという。LLRの絶対値が他のエラーより大きいという条件は、例えば、絶対値が最大という条件、絶対値が閾値より大きいという条件、または、絶対値が上位m個(mは2以上の整数)に含まれるという条件である。
【0038】
例えば上記の6種類の値を取るLLRの場合、絶対値が最大である-9および9であるLLRに対応するビットが、ハードエラーが発生したビットとなる。ハードエラーは、LLRの絶対値が最大である(尤もらしさの度合いが大きい)にもかかわらず、エラーが生じていることを意味すると解釈することもできる。
【0039】
復号処理では、ハードエラー率(HER:Hard Error Rate)に応じて、誤り訂正成功が期待できるビット誤り率(BER:Bit Error Rate)が数十パーセントの規模で異なる場合がある。また、HERに応じて、訂正能力が高くなるような復号処理のパラメタの設定が異なる場合がある。HERは、例えば、(ハードエラーが発生しているビットの個数)/(エラーが発生しているビットの個数)により算出される。HERは、ハードエラーの割合を示す第1指標の一例である。BERは、例えば、(エラーが発生しているビットの個数)/(符号語のビット長)により算出される。BERは、ビットエラーの割合を示す第2指標の一例である。
【0040】
本実施形態では、復号処理の前に、HERおよびBERを推定し、推定したHERおよびBERの少なくとも一方に応じて、復号処理のパラメタの設定を決定(修正)する。以下、このような復号を行う符号化/復号部14の詳細について説明する。
【0041】
図3は、符号化/復号部14の機能構成の一例を示すブロック図である。
図3は、
図2に示すような2次元の積符号の符号化/復号を行う場合の例を示す。以下では主に2次元の誤り訂正符号を例に説明するが、N次元(Nは2以上の整数)の誤り訂正符号について同様の手法を適用できる。
【0042】
図3に示すように、符号化/復号部14は、HB(ハードビット)復号器310と、SB(ソフトビット)復号器320と、パラメタ決定部301と、を備えている。
【0043】
HB復号器310は、ハードビット復号を実行する。本実施形態では、HB復号器310は、HERを推定するためにハードビット復号(第1復号処理の一例)を実行する。なお、HB復号器310は、ハードビット復号のうち、HERおよびBERの推定に必要な情報(例えば、エラーベクタの発見数)を得られる一部の処理(第1処理)を実行するように構成されてもよい。すなわち、HB復号器310は、ハードビット復号による復号結果を得る必要はない。受信語の復号結果は、SB復号器320によるソフトビット復号(第2復号処理の一例)で得られる。
【0044】
以下では、HERおよびBERの推定のために実行される処理(ハードビット復号の少なくとも一部)を、推定処理という場合がある。
【0045】
推定処理は、SB復号器320によるソフトビット復号よりレイテンシが小さい処理であればよい。例えば、ソフトビット復号のレイテンシは、100μs~800μsとなる場合がある。ハードビット復号(推定処理)は、ソフトビット復号より簡易な構成とすることができ、例えば、3μsのレイテンシとすることができる。なお、SB復号器320によるソフトビット復号よりレイテンシが小さければ、例えば、SB復号器320によるソフトビット復号とは異なる方式のソフトビット復号が、推定処理としても用いられてもよい。すなわち、ソフトビット復号は、推定処理よりレイテンシが大きい処理となるように構成されればよい。
【0046】
以下、推定処理の例について説明する。HB復号器310は、まず、複数の成分符号それぞれに対して、シンドロームを算出する。HB復号器310は、算出したシンドロームを入力として、各成分符号の復号を行う。HB復号器310は、復号の際、「エラーが訂正できた」と判定された成分符号の個数を算出する。「エラーが訂正できた」と判定された成分符号の個数は、例えば、エラーベクタの発見数により求めることができる。以下では、この個数を「エラーベクタ発見数」と定義する。
【0047】
なお、エラーベクタは、「エラーがある」と判定されたビットの位置に“1”を設定し、その他の要素を0で表現した、要素数が成分符号長と同じベクタである。例えば、誤り訂正符号化処理されたデータが(1,1,0,0,1)であり、HB復号器310が「第1ビットおよび第5ビットにエラーがある」と判定していたとき、エラーベクタは(1,0,0,0,1)である。
【0048】
HB復号器310は、エラーベクタ発見数と、BERと、を対応づけた対応情報(テーブルなど)を用いて、算出したエラーベクタ発見数に対応するBERを推定する。
図4は、エラーベクタ発見数と、BERとの関係の例を示す図である。
図4に示すような関係は、例えば、実験またはシミュレーションにより求めることができる。対応情報は、このような関係に基づいて予め求めることができる。
【0049】
HB復号器310は、エラーベクタを用いて、エラーがあると判定されたビット(エラービット)のうち、LLRの絶対値が他のエラービットより大きいエラービット(例えば、LLRの絶対値が最大であるエラービット)の割合をHERとして推定する。
【0050】
以下では、HB復号器310により推定されたBERおよびHERを、それぞれ推定BERおよび推定HERという場合がある。
【0051】
エラーベクタ発見数は、推定処理の処理結果の統計情報の一例である。統計情報は、これに限られず、以下のような情報であってもよい。
・N個の成分符号群に含まれる成分符号それぞれの復号時に発見された1個以上のエラーの個数の総和。
・N個の成分符号群に含まれる成分符号それぞれの復号時に発見された1個以上のエラーの位置における信頼度の総和。信頼度は、例えば対数尤度比(LLR)などの尤度情報である。
【0052】
図3に戻り、SB復号器320は、ソフトビット復号を実行する。SB復号器320は、Chase復号器321と、OSD(Ordered Statistics Decoding)復号器322と、を含む。
【0053】
Chase復号器321は、Chase復号を実行する。Chase復号は、低信頼ビット位置n箇所中、k箇所をフリップした上で、BCH符号の復号(決まった個数のエラーを見つける復号)を試行する方法である。例えば、n=30、k=1の指定、または、n=10、k=3の指定に従ってChase復号が実行される。
【0054】
OSD復号器322は、OSDを実行する。OSDは、低信頼ビット位置m箇所に対する消失訂正に類似する復号方法である。例えば、m=32の指定に従いOSDが実行される。
【0055】
SB復号器320は、Chase復号器321によるChase復号と、OSD復号器322によるOSDと、を混合(ハイブリッド)したアルゴリズムALG_A(第2復号アルゴリズム)に従い、ソフトビット復号を実行する。
【0056】
以下、アルゴリズムALG_Aの例について説明する。
(例1)Chase復号とOSDとをそれぞれ実行し、訂正数が少ない方の復号結果を採用する。
(例2)Chase復号とOSDとをそれぞれ実行し、信頼度が高い方の復号結果を採用する。両者の復号結果が一致する場合、信頼度を上げてもよい。
【0057】
OSDは、最大訂正能力が高いが、成分符号にハードエラーがあると訂正が困難となる場合がある。すなわち、OSDの訂正能力はHERに依存する。また、Chase復号は、OSDより2~3倍高速に動作する場合がある。従って、例えばHERが大きい場合には、OSDを実行せず、Chase復号を実行することで、より高精度な復号結果が得られる場合がある。
【0058】
そこで本実施形態では、ソフトビット復号の復号パラメタとして、OSDを実行するか否か(ONまたはOFF)を指定する復号パラメタを使用可能とする。例えばHERが閾値以上である場合、OSDは実行しない(OFFとする)ように、この復号パラメタの設定値が設定される。
【0059】
この復号パラメタは、HERが閾値以上であるときに実行するアルゴリズムALG_B(第1復号アルゴリズム)と、HERが閾値より小さいときに実行するアルゴリズムALG_Aと、を指定するパラメタと言い換えることができる。アルゴリズムALG_Bは、OSDは実行せず、Chase復号を実行するアルゴリズムである。SB復号器320は、OSDは実行しないことを示す設定値が設定された場合、アルゴリズムALG_B(Chase復号)を実行して復号結果を出力する。
【0060】
なお、復号パラメタは上記に限られず、設定値に応じて訂正能力を向上させることができるパラメタであれば、どのようなパラメタであってもよい。また、アルゴリズムALG_A、アルゴリズムALG_Bで実行する復号は、Chase復号およびOSDに限られず、一方または両方を他の復号方式で置き換えてもよい。
【0061】
パラメタ決定部301は、推定処理による推定結果を用いて、SB復号器320によるソフトビット復号の復号パラメタを決定する。復号パラメタは、少なくとも上記のような、OSDを実行するか否かを指定する復号パラメタを含む。復号パラメタは、その他のパラメタ(例えば、ソフトビット復号の反復回数)を含んでもよい。
【0062】
例えばパラメタ決定部301は、OSDを実行するか否かを指定する復号パラメタの設定値を、推定BERが予め定められた閾値THA以下であり、かつ、推定HERが予め定められた閾値THB以上の場合に、OSDを実行しないことを示す設定値(例えばOFF)に決定し、それ以外の場合に、OSDを実行することを示す設定値(例えばON)に決定する。
【0063】
なお、パラメタ決定部301は、推定BERおよび推定HERのうちいずれか一方のみを用いて、OSDを実行するか否かを指定する復号パラメタの設定値を決定してもよい。例えば、パラメタ決定部301は、OSDを実行するか否かを指定する復号パラメタの設定値を、推定HERが予め定められた閾値THB以上の場合に、OSDを実行しないことを示す設定値(例えばOFF)に決定し、それ以外の場合に、OSDを実行することを示す設定値(例えばON)に決定してもよい。
【0064】
符号化/復号部14は、各種のデータをデータバッファ12に記憶しながら、符号化および復号を実行する。符号化/復号部14は、復号後のデータを、復号結果としてデータバッファ12から読み出して出力する。符号化/復号部14は、復号結果に関する各種統計結果を出力してもよい。統計結果は、例えば、BERおよびHERの推定結果(推定BER、推定HER)を含んでもよい。例えば、推定BERの大きさに応じて不揮発性メモリ20内のデータを書き直すか否かを判断するときに、出力された推定結果が参照される。
【0065】
図5は、本実施形態のメモリシステムによる復号処理の一例を示すフローチャートである。
図5は、2次元の誤り訂正符号に対する復号処理の例を示す。
【0066】
パラメタ決定部301は、ソフトビット復号の復号パラメタの設定値を決定し、決定した設定値を設定する(ステップS101)。例えばパラメタ決定部301は、予め指定された値(デフォルト値など)を、各復号パラメタの設定値として設定する。
【0067】
制御部11は、不揮発性メモリ20から、軟判定読出しにより誤り訂正符号を読み出し、読出し情報を得る(ステップS102)。
【0068】
符号化/復号部14は、以下のステップS103~ステップS109で、次元1(例えば行方向)および次元2(例えば列方向)の2次元の成分符号に対する反復復号処理を実行する。
【0069】
符号化/復号部14は、処理対象とする次元の成分符号群に含まれる成分符号ごとに、BERおよびHERを推定する(ステップS103)。
【0070】
パラメタ決定部301は、推定されたBERおよび推定されたHERを用いて、ソフトビット復号の復号パラメタを決定する(ステップS104)。例えばパラメタ決定部301は、推定BERが予め定められた閾値THA以下であり、かつ、推定HERが予め定められた閾値THB以上の場合に、OSDを実行するか否かを指定する復号パラメタの設定値を、OSDを実行しないことを示す設定値(例えばOFF)に決定する。
【0071】
ステップS101で既に設定値が設定されている場合は、パラメタ決定部301は、ステップS104で決定した値により、設定済の設定値を修正する。ステップS101で既に設定値が設定されていない場合は、パラメタ決定部301は、ステップS104で決定した設定値を設定する。すべての復号パラメタの設定値をステップS104で決定する場合は、ステップS101は実行されなくてもよい。
【0072】
SB復号器320は、設定された復号パラメタを用いて、ソフトビット復号を実行する(ステップS105)。例えばOSDを実行しないことを示す設定値が設定された場合、SB復号器320は、アルゴリズムALG_Bを実行する。すなわち、SB復号器320は、OSDは実行せず、Chase復号を実行し、ソフトビット復号の復号結果を出力する。OSDを実行することを示す設定値が設定された場合、SB復号器320は、アルゴリズムALG_Aを実行する。すなわち、SB復号器320は、OSDおよびChase復号の両方を実行し、上記の(例1)および(例2)のいずれかに従い、ソフトビット復号の復号結果を出力する。
【0073】
次に、符号化/復号部14は、復号に成功したか否かを判定する(ステップS106)。復号に成功したとは、例えば正しいと判断できる復号語が発見されたことなどであってよい。
【0074】
復号に成功していない場合(ステップS106:No)、符号化/復号部14は、反復復号処理の反復回数が予め設定しておいた規定値に達しているか否かを判定する(ステップS107)。規定値に達していない場合(ステップS107:No)、符号化/復号部14は、反復回数を1増やし、ステップS103へ戻って、次の次元について処理を繰り返す。反復回数が規定値に達していた場合(ステップS107:Yes)、符号化/復号部14は、外部の制御部等に復号の失敗を通知し(ステップS109)、復号処理を終了する。なお、反復回数とは、例えばステップS103~S105の動作を繰り返した回数等であってよい。
【0075】
復号に成功した場合(ステップS106:Yes)、符号化/復号部14は、外部の制御部等に復号の成功とともに復号語を通知し(ステップS108)、復号処理を終了する。
【0076】
このように、本実施形態のメモリシステムは、ソフトビット復号よりレイテンシの小さい推定処理(ハードビット復号など)により推定したBERおよびHERの少なくとも一方を用いて、ソフトビット復号のパラメタを決定し、決定したパラメタに従いソフトビット復号を実行する。BERおよびHERに応じて、訂正能力を向上させるようにパラメタを決定できるため、より高精度に誤り訂正(復号)を実行することが可能となる。また、BERおよびHERの推定は、ソフトビット復号より低レイテンシとすることができる。従って、レイテンシを増大させることなく、より高精度な誤り訂正を実現可能となる。
【0077】
(変形例1)
変形例1では、推定処理の推定結果に応じて決定する復号パラメタの他の例を説明する。本変形例では、SB復号器320によるソフトビット復号の実行をスキップするか否かを設定する復号パラメタが用いられる。
【0078】
例えば、パラメタ決定部301は、この復号パラメタの設定値を、推定BERが予め定められた閾値THA以下であり、かつ、推定HERが予め定められた閾値THB以上の場合に、ソフトビット復号をスキップすることを示す設定値に決定し、それ以外の場合に、ソフトビット復号をスキップしないことを示す設定値に決定する。
【0079】
本変形例では、ソフトビット復号の実行をスキップすることを示す復号パラメタが設定された場合、例えば符号化/復号部14は、SB復号器320によるソフトビット復号とは異なる復号処理DC(第3復号処理)を実行するように構成される。復号処理DCは、どのような方式の復号処理であってもよいが、例えば、BERまたはHERが大きい場合であっても成功する可能性がある復号処理である。例えば、復号処理DCは、ソフトビット復号の対象である読出し情報(符号語)を成分符号とする、上位層の積符号の復号処理である。
【0080】
本変形例のようにソフトビット復号をスキップ可能とすることにより、復号処理のレイテンシを削減できる場合がある。
【0081】
(変形例2)
BERまたはHERの推定結果に応じてソフトビット復号の復号パラメタが決定されるため、推定処理の精度は、ソフトビット復号の精度に影響する可能性がある。変形例2では、BERまたはHERの推定処理の精度を向上させる機能について説明する。推定処理では、「誤訂正による誤ったサンプルの収集」が抑制されること、および、より多くのサンプルが収集されること、が望ましい。本変形例では、HB復号器310は、以下の機能1~機能3のいずれかを実行する。
【0082】
機能1:各成分符号の復号において、訂正可能数をtとしたとき、t未満の重みのエラーベクタのみを採用し、エラーベクタ発見数を求める。t未満の重みのエラーベクタとは、“1”が設定された要素(「エラーがある」と判定されたビットに対応する要素)の個数がt未満のエラーベクタを表す。例えば成分符号としてBCH符号を用いる場合、訂正可能数tは決定されており、t個以下のエラーは必ず訂正できる。また、誤り訂正時に訂正する(書き換える)個数が多いほど、誤訂正確率が高い。成分符号はBCH符号に限られず、「閾値以下のエラー数のみを訂正」とする復号処理の対象となる他のどのような符号であってもよい。
【0083】
機能1については、以下のように、反復復号処理の進行に応じて、採用するエラーベクタを切り替えるように構成してもよい。
・反復の前半(例えば、反復回数が特定値まで)では、t未満の重みのエラーベクタのみを採用し、反復の後半(例えば、反復回数が特定値以上)では、すべてのエラーベクタを採用する。
【0084】
機能2:積符号の復号においてロールバックを行う。ロールバックとは、積符号を構成する各成分符号を順に復号していくとき、ある成分符号において誤訂正が疑われる場合、その成分符号の復号結果を差し戻す処理を意味する。差し戻す処理は、例えば、復号を実行する前の値に戻す処理である。「誤訂正が疑われる」の判断基準の例としては、「ある次元(例えば行方向)の成分符号CAの、あるビット位置xを訂正した後で、ビット位置xのビットを保護する他の次元(例えば列方向)の成分符号CBの訂正が進まない」という基準がある。この判断基準は、正しく訂正される場合は、ビット位置xのビットを訂正して成分符号CAのエラーが減り、成分符号CBについてもエラーを訂正しやすくなるはずである、という考えに基づく。
【0085】
機能3:HBデータに対して、復号の信頼度(正訂正確率推定値など)を出力する処理を含む推定処理(例えばターボ復号)を行い、信頼度が閾値以上である成分符号の訂正結果のみを採用し、エラーベクタ発見数を求める。
【0086】
以上説明したとおり、本実施形態によれば、より高精度に誤り訂正(復号)を実行することができる。
【0087】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0088】
1 メモリシステム
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
20 不揮発性メモリ
30 ホスト
200 積符号
301 パラメタ決定部
310 HB復号器
320 SB復号器
321 Chase復号器
322 OSD復号器