IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特許-メモリシステム 図1
  • 特許-メモリシステム 図2
  • 特許-メモリシステム 図3
  • 特許-メモリシステム 図4
  • 特許-メモリシステム 図5
  • 特許-メモリシステム 図6
  • 特許-メモリシステム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-12
(45)【発行日】2024-01-22
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   H03M 13/19 20060101AFI20240115BHJP
   H03M 13/47 20060101ALI20240115BHJP
   G06F 11/10 20060101ALI20240115BHJP
【FI】
H03M13/19
H03M13/47
G06F11/10 608
【請求項の数】 8
(21)【出願番号】P 2020037936
(22)【出願日】2020-03-05
(65)【公開番号】P2021141448
(43)【公開日】2021-09-16
【審査請求日】2022-09-12
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】吉永 悠真
(72)【発明者】
【氏名】児玉 知也
(72)【発明者】
【氏名】鳥井 修
(72)【発明者】
【氏名】古田 憲一郎
(72)【発明者】
【氏名】吉沢 竜太
【審査官】北村 智彦
(56)【参考文献】
【文献】特開2016-181738(JP,A)
【文献】米国特許出願公開第2019/0288878(US,A1)
【文献】Fei Liang et al.,An Iterative BP-CNN Architecture for Channel Decoding,IEEE Journal of Selected Topics in Signal Processing,2018年01月15日,Vol.12, No.1,pp.144-159
(58)【調査した分野】(Int.Cl.,DB名)
H03M 13/19
H03M 13/47
G06F 11/10
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリから受信語を読み出し、
読み出した前記受信語を確率伝播法により復号し、
前記確率伝播法による復号に失敗した場合に、前記受信語に含まれる雑音を推定する相互に異なる複数のモデルを用いて前記受信語に含まれる前記雑音を推定した複数の雑音推定値を求める第1処理を実行し
求められた前記複数の雑音推定値から1つの雑音推定値を選択する第2処理を実行し
選択された前記雑音推定値を、前記受信語から減算した値により前記受信語を更新する第3処理を実行し
更新された前記受信語を確率伝播法により復号する第4処理を実行し、
前記確率伝播法による復号に成功するまで、前記第1処理、前記第2処理、前記第3処理、および、前記第4処理を繰り返す、
メモリコントローラと、
を備えるメモリシステム。
【請求項2】
不揮発性メモリと、
前記不揮発性メモリから受信語を軟判定値として読み出し、
前記軟判定値と、前記軟判定値に基づいて算出される硬判定値と、に基づいて前記受信語に含まれる雑音を推定した複数の雑音推定値を求める第1処理を実行し
求められた前記複数の雑音推定値から1つの雑音推定値を選択する第2処理を実行し
選択された前記雑音推定値を、前記受信語から減算した値により前記受信語を更新する第3処理を実行し
更新された前記受信語を確率伝播法により復号する第4処理を実行し
更新された前記受信語に含まれる前記雑音を推定する相互に異なる複数のモデルを用いて前記更新された受信語に含まれる前記雑音を推定した複数の前記雑音推定値を求める第5処理を実行し、
前記確率伝播法による復号に成功するまで、前記第2処理、前記第3処理、前記第4処理、および、前記第5処理を繰り返す、
メモリコントローラと、
を備えるメモリシステム。
【請求項3】
前記メモリコントローラは、
複数の前記雑音推定値のうち、前記雑音推定値を読み出した前記受信語から減算した値と、最尤復号語と、の間の距離が他の前記雑音推定値より小さい1つの前記雑音推定値を選択する、
請求項1または2に記載のメモリシステム。
【請求項4】
前記メモリコントローラは、
複数の前記雑音推定値のうち、他の前記雑音推定値より値が小さい1つの前記雑音推定値を選択する、
請求項1または2に記載のメモリシステム。
【請求項5】
複数の前記モデルそれぞれは、CNN(Convolutional Neural Network)である、
請求項1または2に記載のメモリシステム。
【請求項6】
複数の前記モデルそれぞれは、前記不揮発性メモリの属性を示す相互に異なる属性情報を用いて学習される、
請求項1または2に記載のメモリシステム。
【請求項7】
前記属性情報は、前記不揮発性メモリのワード線数、ブロック数、および、ページ数の少なくとも1つを含む、
請求項6に記載のメモリシステム。
【請求項8】
複数の前記モデルそれぞれは、ハードエラーが生じたときの復号結果を用いて学習される、
請求項1または2に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
以下の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
【先行技術文献】
【非特許文献】
【0003】
【文献】Fei Liang et al. “An Iterative BP-CNN Architecture for Channel Decoding”, in arXiv: 1707.05697v1 18 Jul. 2017.
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の実施形態は、誤り訂正(復号)能力を向上させることができるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。メモリコントローラは、不揮発性メモリから受信語を読み出し、読み出した受信語を確率伝播法により復号し、確率伝播法による復号に失敗した場合に、受信語に含まれる雑音を推定する相互に異なる複数のモデルを用いて雑音を推定して複数の雑音推定値を求める第1処理を実行し、複数の雑音推定値から1つの雑音推定値を選択する第2処理を実行し、選択された雑音推定値を受信語から減算した値により受信語を更新する第3処理を実行し、更新された受信語を確率伝播法により復号するする第4処理を実行し、確率伝播法による復号に成功するまで、第1処理、第2処理、第3処理、および、第4処理を繰り返す
【図面の簡単な説明】
【0006】
図1図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
図2図2は、第1の実施形態に係る復号部の構成例を示すブロック図である。
図3図3は、確率伝播法で用いられるタナーグラフの一例を示す図である。
図4図4は、第1の実施形態に係るデータの読出し処理の一例を示すフローチャートである。
図5図5は、第2の実施形態に係る復号部の構成例を示すブロック図である。
図6図6は、第2の実施形態に係るデータの読出し処理の一例を示すフローチャートである。
図7図7は、第2の実施形態のBP復号の繰り返し回数の例を示す図である。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【0008】
(第1の実施形態)
まず、第1の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図1ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【0009】
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【0010】
メモリシステム1は、いわゆるSSD(Solid State Drive)や、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等、不揮発性メモリ20を備える種々のメモリシステムであってよい。
【0011】
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、メモリコントローラ10は、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、例えばSoC(System On a Chip)として構成される半導体集積回路である。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14およびデータバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14およびデータバッファ12は、内部バス16で相互に接続されている。以下で説明するメモリコントローラ10の各構成要素の動作の一部または全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
【0012】
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した命令、書込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読み出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
【0013】
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
【0014】
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からホストI/F15経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20へのユーザデータおよびパリティの書き込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20からのユーザデータおよびパリティの読み出しをメモリI/F13へ指示する。
【0015】
また、制御部11は、ホスト30から書込み要求を受信した場合、データバッファ12に蓄積されるユーザデータに対して、不揮発性メモリ20上の記憶領域(メモリ領域)を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが記憶された不揮発性メモリ20上の記憶領域を示す物理アドレスとの対応はアドレス変換テーブルとして記憶される。
【0016】
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
【0017】
NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、この同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC:Single Level Cell)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC:Multiple Level Cell)である場合は、1つのメモリセルグループが複数ページに対応する。なお、本説明において、MLCには、TLC(Triple Level Cell)やQLC(Quad Level Cell)等が含まれる。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【0018】
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時記憶する。また、データバッファ12は、不揮発性メモリ20から読み出したユーザデータをホスト30へ送信するまでに一時記憶する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。なお、データバッファ12は、メモリコントローラ10に内蔵されずに、メモリコントローラ10の外部に搭載されてもよい。
【0019】
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦記憶される。符号化/復号部14は、不揮発性メモリ20に記憶されるユーザデータを符号化して符号語を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された受信語を復号してユーザデータを復元する。そこで符号化/復号部14は、符号化部(Encoder)17と復号部(Decoder)18を備える。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
【0020】
次に、本実施形態の書込み処理について説明する。制御部11は、不揮発性メモリ20への書込み時に、ユーザデータの符号化を符号化部17に指示する。その際、制御部11は、不揮発性メモリ20における符号語の記憶場所(記憶アドレス)を決定し、決定した記憶場所もメモリI/F13へ指示する。
【0021】
符号化部17は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、BCH(Bose-Chaudhuri-Hocquenghem)符号、および、RS(Reed-Solomon)符号のような代数的符号を用いた符号化方式、これらの符号を行方向および列方向の成分符号として用いた符号化方式(積符号など)、並びに、LDPC(Low-Density Parity-Check)符号のような疎グラフに基づく符号を用いた符号化方式を採用することができる。メモリI/F13は、制御部11から指示された不揮発性メモリ20上の記憶場所へ符号語を記憶する制御を行う。
【0022】
次に、本実施形態の不揮発性メモリ20からの読出し時の処理について説明する。制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、復号部18へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスから受信語を読み出し、読み出した受信語を復号部18に入力する。復号部18は、この不揮発性メモリ20から読み出された受信語を復号する。
【0023】
復号部18は、不揮発性メモリ20から読み出された受信語を復号する。図2は、本実施形態に係る復号部の構成例を示すブロック図である。図2に示すように、復号部18は、BP復号部101と、推定部102~102(mは2以上の整数)と、選択部103と、を備えている。
【0024】
BP復号部101は、確率伝播法(BP:Belief-Propagation)により不揮発性メモリ20から読み出された受信語を復号する。
【0025】
以下、確率伝播法の概要について説明する。図3は、確率伝播法で用いられるタナーグラフの一例を示す図である。なお、適用可能なグラフはタナーグラフに限られるものではなく、因子グラフ(Factor Graph)などの他の2部グラフ(Bipartile Graph)を用いてもよい。タナーグラフは、復号の対象となる符号が満たすべきルール構造を表現したグラフであると解釈することができる。図3は、7ビットのハミング符号(符号語の一例)に対するタナーグラフの例である。
【0026】
変数ノード310~316は、7ビットの符号ビットC~Cに相当する。チェックノード321~323は、3つのルールR1、R2、R3に相当する。符号ビットは7ビットに限られるものではない。またルールの個数は3に限られるものではない。図3では、接続されている符号ビットをすべて加算すると値が0になる、というルールが用いられる。例えばルールR3は、対応するチェックノード323に接続される変数ノード310、311、312および314に対応する符号ビットC、C、C、および、Cの加算値が0になるというルールを示す。
【0027】
確率伝播法では、例えばタナーグラフを用いた軟判定復号が実行される。軟判定復号は、各符号ビットが0である確率を示す情報を入力とする復号方法である。例えば、符号ビットが0である尤度と1である尤度との比を対数で表した対数尤度比(LLR:Log-Likelihood Ratio)が、軟判定復号の入力として用いられる。
【0028】
タナーグラフ上での軟判定復号では、各変数ノードは、チェックノードを介して他の変数ノードとの間でLLRを受け渡す。そして、最終的に各変数ノードの符号ビットが0であるか、1であるかが判断される。なお、このようにして受け渡されるLLRが、確率伝播法で伝達されるメッセージの例である。
【0029】
例えば以下のような手順でタナーグラフ上での軟判定復号が実行される。
(S1)変数ノードは、入力されたLLR(チャネルLLR)を、接続されたチェックノードに送信する。
(S2)チェックノードは、各変数ノード(送信元)に対して、接続されている他の変数ノードのLLRおよび対応するルールに基づいて、送信元の変数ノードのLLRを決定して返送する。
(S3)変数ノードは、チェックノードから返送されたLLR、および、チャネルLLRに基づいて、自ノードのLLRを更新し、チェックノードに送信する。
【0030】
変数ノードは、(S2)および(S3)を繰り返した後に得られるLLRに基づいて、自ノードに対応する符号ビットが0であるか、1であるかを決定する。
【0031】
BP復号部101は、ソフトビットリードにより読み出された受信語y(軟判定値)を入力し、確率伝播法により受信語yを復号する。ソフトビットリードとは、読出し対象のデータを構成する各ビットが0であるか1であるかの確率に関する情報として受信語(軟判定値)を読出す方法である。上記のように確率伝播法では、LLRが入力として用いられる。このため、BP復号部101は、軟判定値である受信語yからLLRを算出し、上記のような軟判定復号の入力として用いる。例えばBP復号部101は、軟判定値とLLRとの対応を定めた情報(テーブル等)を参照して、受信語yからLLRを算出する。BP復号部101は、確率伝播法による復号結果を出力する。以下では“ハット(^)”を“s”の後に付した“s^”で復号結果を表す。
【0032】
推定部102~102は、受信語に含まれる雑音を推定する、それぞれ相互に異なるモデルを用いて雑音を推定して雑音推定値を求める。以下では“チルダ(~)”を“n”の後に付した“n~”で雑音推定値を表す。また数式内では、“チルダ(~)”を“n”の上に付して雑音推定値を表す。
【0033】
モデルは、例えば、CNN(Convolutional Neural Network)で表される。以下では、モデルとしてCNNを用いる例を主に説明する。CNNは、例えば、受信語yと復号結果s^との差分により得られる雑音を入力し、雑音推定値を出力するように学習される。入力する雑音n^は例えば以下の(1)式により表される。
n^=y-s^ ・・・(1)
【0034】
CNNは、雑音推定値の誤差(入力された雑音と、出力される雑音推定値との差分)が正規分布に従うように学習されてもよい。これにより、雑音間に相関があるときに雑音の推定精度をより向上させることができる。
【0035】
推定された雑音推定値は、受信語yの更新に用いられる。また、更新された受信語がさらにBP復号部101による復号に用いられる。このように更新された受信語を用いることにより、BP復号部101による復号の精度を向上させることが可能となる。
【0036】
雑音を推定するモデルは、学習に使用した学習データが想定する雑音に特化したモデルとなる場合がある。このため、学習データが想定する雑音と異なる性質を有する雑音が付加された受信語に対しては、雑音の推定精度が低下し、その結果、BP復号部101による復号の精度も低下する場合がある。
【0037】
そこで、本実施形態の復号部18は、相互に異なる複数のモデルを用いて、複数の雑音推定値を求める。そして復号部18は、求められた複数の雑音推定値から最適な雑音推定値を選択し、受信語yの更新に用いる。
【0038】
例えば、推定部102~102は、相互に異なる性質を有する雑音を想定した学習データを用いて学習した、相互に異なるCNNを用いて雑音推定値“n~”~“n~”をそれぞれ推定する。
【0039】
各CNNは、不揮発性メモリ20の属性を示す属性情報を用いて学習されてもよい。vは、例えば不揮発性メモリ20のワード線数、ブロック数、および、ページ数の少なくとも1つである。例えば各CNNは、雑音に加えて属性情報を入力し、雑音推定値を出力するように構成されてもよい。各CNNは、それぞれ相互に異なる属性情報が付加された雑音を学習データとして入力して学習される。属性情報が異なる学習データを用いて学習された複数のモデルを用いることにより、様々なストレス条件下でより高精度に雑音を推定可能となり、この結果、復号の成功率を向上させることができる。
【0040】
各CNNは、ハードエラーが生じたときの復号結果を学習データとして用いて学習されてもよい。このような学習データは、ハードエラーの発生をシミュレーションして得られた復号結果を含むデータであってもよい。これにより、ハードエラーが生じたときの雑音の推定精度を向上させることができる。
【0041】
推定時には、推定部102~102は、受信語yと復号結果s^との差分により得られる雑音とともに、受信語yを読み出した不揮発性メモリ20の属性情報を対応するモデルに入力し、雑音推定値を推定する。
【0042】
選択部103は、推定された雑音推定値“n~”~“n~”から1つの雑音推定値を選択する。例えば選択部103は、受信語yから雑音推定値を減算した値と、最尤復号語との距離(マンハッタン距離)が他の雑音推定値より小さくなる雑音推定値(例えば距離が最小となる雑音推定値)を選択する。以下の(2)式は、距離を算出する式の一例である。Nは、受信語に含まれるビット数を表す。yは、受信語yに含まれるビットのうちi番目のビットを表す。“nj,i~”は、j番目の雑音推定値“n~”(1≦j≦n)に含まれるビットのうちi番目のビットを表す。
【数1】
【0043】
(2)式は、最尤復号語“1”までの距離、および、最尤復号語“-1”までの距離のうちの最小値の和が最小となる雑音推定値“n~”を求める式に相当する。選択の基準はこれに限られるものではない。例えば選択部103は、他の雑音推定値より小さい値である雑音推定値を選択してもよい。
【0044】
BP復号部101は、選択された雑音推定値により更新した受信語を用いて、さらに確率伝播法による復号を実行する。例えばBP復号部101は、読み出された受信語yから、選択された雑音推定値“n~”を減算した値により、受信語を更新し、更新後の受信語を用いて、確率伝播法により復号を繰り返す。
【0045】
このような構成により、より高精度に推定された雑音を用いて更新した受信語を使用することができるため、確率伝播法による復号の精度を向上させることができる。
【0046】
図4は、第1の実施形態に係るデータの読出し処理の一例を示すフローチャートである。制御部11は、メモリI/F13に対して、読み出すアドレスを指定してソフトビットリードにより不揮発性メモリ20からデータを読み出すよう指示し、これに対し、メモリI/F13はソフトビットリードを実行する(ステップS101)。読み出された軟判定値の受信語yは、例えば、内部バス16を経由して符号化/復号部14の復号部18に入力される。
【0047】
復号部18内のBP復号部101は、入力された受信語yを用いて確率伝播法による復号(BP復号)を実行する(ステップS102)。ここでの復号は、例えば上記(S2)、(S3)の繰り返しのうち1回の処理に相当する。BP復号部101は、BP復号に成功したか否かを判定する(ステップS103)。例えばBP復号部101は、復号結果とパリティ検査行列とによりシンドロームを算出し、シンドロームの値がすべて0となった場合に、復号に成功したと判定する。
【0048】
復号に成功した場合(ステップS103:Yes)、復号部18は、例えば制御部11へ復号成功を通知する(ステップS109)。制御部11は、ホストI/F15を介して、復号結果をホスト30に出力する。
【0049】
復号に失敗した場合(ステップS103:No)、復号部18は、BP復号の繰り返し回数が上限値A(例えば25回)に達したか否かを判定する(ステップS104)。BP復号の繰り返し回数は、例えば上記(S2)、(S3)のような処理を繰り返す回数である。上限値Aに達していない場合(ステップS104:No)、ステップS102に戻り、さらにBP復号((S2)、(S3))が繰り返される。
【0050】
上限値Aに達した場合(ステップS104:Yes)、復号部18は、さらにBP復号の繰り返し回数が上限値Aより大きい上限値B(例えば50回)に達したか否かを判定する(ステップS105)。
【0051】
上限値Aは、BP復号の繰り返しを中断して、雑音の推定および推定した雑音による受信語の更新を行うために用いられる上限値に相当する。一方、上限値Bは、BP復号および受信語の更新を繰り返しても復号に成功しない場合に、復号失敗として処理を終了するために用いられる上限値に相当する。
【0052】
繰り返し回数が上限値Bに達したと判定された場合(ステップS105:Yes)、復号部18は、例えば制御部11へ復号失敗を通知する(ステップS110)。繰り返し回数が上限値Bに達していない場合(ステップS105:No)、複数の推定部102~102それぞれが、対応するモデルを用いて雑音を推定し、雑音推定値を出力する(ステップS106)。
【0053】
選択部103は、複数の推定部102~102それぞれから出力された複数の雑音推定値“n~”~“n~”から最適な雑音推定値を選択する(ステップS107)。例えば選択部103は、上記(2)式の距離が最小となる雑音推定値“n~”を選択する。
【0054】
BP復号部101は、選択された雑音推定値“n~”により受信語を更新する(ステップS108)。例えばBP復号部101は、以下の(3)式により更新した受信語y^を算出する。
y^=y-(n~) ・・・(3)
【0055】
この後、ステップS102に戻り、BP復号部101は、更新された受信語y^を用いて確率伝播法により復号を再度実行する。
【0056】
以上のように、本実施形態では、ストレス条件(不揮発性メモリの属性情報など)が異なる学習データを用いて学習された複数のモデルを用いて、より高精度に雑音を推定可能となる。また推定された雑音により更新された受信語を用いることにより、復号の成功率を向上させることができる。
【0057】
(第2の実施形態)
第1の実施形態では、最初に確率伝播法による復号が実行され、この復号が失敗した場合に、推定部による雑音の推定処理が実行された。第2の実施形態では、確率伝播法による復号の前に雑音の推定処理が実行される。そして、推定された雑音で更新された受信語を用いて、確率伝播法による復号が実行される。
【0058】
第2の実施形態のメモリシステムの概略構成は、第1の実施形態のメモリシステムの概略構成を示す図1と同様である。第2の実施形態では、復号部の機能が第1の実施形態と異なっている。以下では、第2の実施形態の復号部18-2の機能の詳細について説明する。
【0059】
図5は、本実施形態に係る復号部18-2の構成例を示すブロック図である。図5に示すように、復号部18-2は、推定部102-2~102-2と、選択部103と、BP復号部101-2と、を備えている。選択部103の機能は第1の実施形態と同様であるため同一の符号を付し、説明を省略する。
【0060】
推定部102-2~102-2は、BP復号部101-2によるBP復号の前に、硬判定値を用いて雑音を推定する点が、第1の実施形態の推定部102~102と異なっている。硬判定値は、各ビットが0または1のいずれであるかを示す値である。例えば102-2~102-2は、軟判定値の符号ビットが正(+)である場合に硬判定値を0と算出し、軟判定値の符号ビットが負(-)である場合に硬判定値を1と算出する。そして、推定部102-2~102-2は、軟判定値である受信語yと算出した硬判定値との差分により雑音を推定する。BP復号が実行された後は、推定部102-2~102-2は、第1の実施形態と同様に、CNNを用いて雑音を推定する。
【0061】
BP復号部101-2は、選択部103により選択された雑音推定値により更新した受信語を用いて、確率伝播法による復号を実行する。
【0062】
確率伝播法による復号が実行された後は、推定部102-2~102-2は、受信語yと復号結果s^との差分により得られる雑音をCNNに入力することにより雑音推定値を推定する。
【0063】
図6は、第2の実施形態に係るデータの読出し処理の一例を示すフローチャートである。ステップS201は、第1の実施形態の読み出し処理を示す図4のステップS101と同様である。
【0064】
本実施形態では、推定部102-2~102-2は、繰り返しの1回目のステップS202で、以下のように雑音を推定する。まず推定部102-2~102-2は、軟判定値である受信語yから、硬判定値を算出する。推定部102-2~102-2は、受信語yと硬判定値との差分により雑音を推定し、複数の雑音推定値を出力する(ステップS202)。
【0065】
ステップS203、S204は、図4のステップS106、S107と同様である。
【0066】
ステップS204で受信語が更新されると、BP復号部101-2は、更新された受信語を用いて確率伝播法により復号を実行する(ステップS205)。BP復号部101-2は、BP復号に成功したか否かを判定する(ステップS206)。復号に成功した場合(ステップS206:Yes)、復号部18-2は、例えば制御部11へ復号成功を通知する(ステップS209)。制御部11は、ホストI/F15を介して、復号結果をホスト30に出力する。
【0067】
復号に失敗した場合(ステップS206:No)、復号部18-2は、BP復号の繰り返し回数が上限値Aに達したか否かを判定する(ステップS207)。上限値に達していない場合(ステップS207:No)、ステップS205に戻り、さらにBP復号が繰り返される。
【0068】
上限値Aに達した場合(ステップS207:Yes)、復号部18-2は、BP復号の繰り返し回数が上限値Bに達したか否かを判定する(ステップS208)。繰り返し回数が上限値Bに達した場合(ステップS208:Yes)、復号部18-2は、例えば制御部11へ復号失敗を通知する(ステップS210)。
【0069】
繰り返し回数が上限値Bに達していない場合(ステップS208:No)、ステップS202に戻り、複数の推定部102-2~102-2それぞれが、対応するモデルを用いて雑音推定値を出力する処理をさらに実行する。2回目以降のステップS202では、第1の実施形態と同様に、受信語yと復号結果s^との差分により得られる雑音(上記(1)式)をモデルに入力することにより雑音推定値が算出される。
【0070】
図7は、第2の実施形態のBP復号の繰り返し回数の例を示す図である。横軸は、処理対象とする受信語の信号対雑音比(SNR)を表す。縦軸は、第2の実施形態による復号処理を複数回実行したときの、BP復号の繰り返し回数の平均値を表す。
【0071】
曲線701は、上記(S1)~(S3)の手順によりBP復号のみを、上限値を50回として実行した場合(雑音の推定、受信語の更新は実行しない)の復号成功までの繰り返し回数を表す。曲線702は、1回目のBP復号(上限値25回)を実行した後、1つの推定部により推定した雑音により更新した受信語を用いて2回目のBP復号(上限値25回)を実行した場合の復号成功までの繰り返し回数を表す。曲線703は、推定部の個数を2とした第2の実施形態(2つの推定部102-2、102-2を用いる構成、上限値A=25、上限値B=50)による復号成功までの繰り返し回数を表す。
【0072】
なお、2つの推定部102-2、102-2が使用するモデルは、それぞれ、隣接するノイズ間の相関係数η=0.8とする有色雑音に基づき学習したモデル、および、加算性白色ガウス雑音(Additive white Gaussian noise:AWGN)に基づき学習したモデルである。
【0073】
第2の実施形態によれば、復号性能を改善するのみでなく、図7に示すように、復号成功までのBP復号の繰り返し回数を減少させることができる。
【0074】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0075】
1 メモリシステム
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
17 符号化部
18、18-2 復号部
20 不揮発性メモリ
30 ホスト
101、101-2 BP復号部
102~102、102-2~102-2 推定部
103 選択部
図1
図2
図3
図4
図5
図6
図7