(57)【要約】【課題】読み出し電圧をより高精度に推定可能とする。【解決手段】メモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、複数のメモリセルを備える。メモリコントローラは、第１符号化方式により符号化された第１データを不揮発性メモリから読み出し、閾値電圧ごとのメモリセル数を示す第１ヒストグラムを生成する。メモリコントローラは、第１符号化方式のパラメータと第２符号化方式のパラメータとに基づいて補正した第１ヒストグラム、または、第１符号化方式のパラメータと第２符号化方式のパラメータに基づいて補正した、第２符号化方式により符号化された第２データの読み出しに用いる読み出し電圧を推定するための推定関数を用いて、第１データの読み出しに用いる読み出し電圧を推定する。【選択図】図１
2020042884.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルを備える不揮発性メモリと、
複数の誤り抑制符号化方式に含まれる第１符号化方式により符号化された第１データを前記不揮発性メモリから読み出し、閾値電圧ごとのメモリセル数を示す第１ヒストグラムを生成し、
前記第１符号化方式のパラメータと複数の前記誤り抑制符号化方式に含まれる第２符号化方式のパラメータとに基づいて前記第１ヒストグラムを補正した補正後の前記第１ヒストグラム、および、前記第２符号化方式により符号化された第２データの読み出しに用いる読み出し電圧を推定するための推定関数、
または、
補正前の前記第１ヒストグラム、および、前記第１符号化方式のパラメータと前記第２符号化方式のパラメータに基づいて前記推定関数を補正した補正後の前記推定関数、
または、
前記第１ヒストグラムの一部を補正した補正後の前記第１ヒストグラム、および、前記第１符号化方式のパラメータと前記第２符号化方式のパラメータに基づいて前記推定関数の一部を補正した補正後の前記推定関数、
を用いて、前記第１データの読み出しに用いる前記読み出し電圧を推定する、
メモリコントローラと、
を備えるメモリシステム。
【請求項２】
前記推定関数は、前記第２データに基づいて生成される第２ヒストグラムを用いて算出される、
請求項１に記載のメモリシステム。
【請求項３】
前記第１ヒストグラムは、参照用の読み出し電圧を用いて読み出された前記第１データに基づいて生成され、
前記第２ヒストグラムは、前記参照用の読み出し電圧を用いて読み出された前記第２データに基づいて生成される、
請求項２に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、補正しない前記第２ヒストグラム、および、補正前の前記推定関数を用いて、前記第２データの読み出しに用いる前記読み出し電圧を推定する、
請求項２に記載のメモリシステム。
【請求項５】
前記第２符号化方式は、誤り抑制符号化を行わずに前記不揮発性メモリにデータを書き込む方式である、
請求項１に記載のメモリシステム。
【請求項６】
前記メモリコントローラは、前記第１ヒストグラムと前記推定関数とのうち少なくとも一方を、前記第１符号化方式のパラメータに基づいて算出される、複数の書き込みレベルの第１生起確率と、前記第２符号化方式のパラメータに基づいて算出される、複数の書き込みレベルの第２生起確率と、に基づいて補正する、
請求項１に記載のメモリシステム。
【請求項７】
前記推定関数は、前記第１ヒストグラムの各書き込みレベルに対応する各ビンの度数を要素とするベクトルとの乗算により前記読み出し電圧を推定する行列であり、
前記メモリコントローラは、各書き込みレベルの前記第２生起確率に対する前記第１生起確率の割合により、前記第１ヒストグラムの各書き込みレベルに対応する前記行列の各要素の値を除算することにより、前記推定関数を補正する、
請求項６に記載のメモリシステム。
【請求項８】
前記メモリコントローラは、各書き込みレベルの前記第２生起確率に対する前記第１生起確率の割合により、前記第１ヒストグラムの各書き込みレベルに対応する各ビンの度数を除算することにより、前記第１ヒストグラムを補正する、
請求項６に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）を記憶媒体に用いるメモリシステムでは、例えばデータリテンションおよびリードディスターブ等によってメモリセルの閾値電圧が変化し、ＮＡＮＤメモリから読み出したデータのビットエラーレートが悪化して、メモリシステムの信頼性が低下する場合がある。このような信頼性低下への対策として、読み出し時に用いる電圧（読み出し電圧）を、閾値電圧の変化等を考慮して推定する技術が提案されている。
【０００３】
例えば、参照用の読み出し電圧（参照読み出し電圧）を用いて測定した閾値電圧の分布を利用して、実際の読み出しに用いる読み出し電圧を推定する技術が提案されている。この技術では、例えば７個程度の参照読み出し電圧を用いた測定を行うことで読み出し電圧を推定できるため、処理時間が短縮可能となる。なお、このような技術では、実機（ＮＡＮＤメモリなど）を用いて閾値電圧を測定し、読み出し電圧の推定に用いる情報（推定関数）を最適化（学習）する必要がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９，０６９，６５９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、読み出し電圧をより高精度に推定可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態によれば、メモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、複数のメモリセルを備える。メモリコントローラは、第１符号化方式により符号化された第１データを不揮発性メモリから読み出し、閾値電圧ごとのメモリセル数を示す第１ヒストグラムを生成する。メモリコントローラは、第１符号化方式のパラメータと第２符号化方式のパラメータとに基づいて補正した第１ヒストグラム、または、第１符号化方式のパラメータと第２符号化方式のパラメータに基づいて補正した、第２符号化方式により符号化された第２データの読み出しに用いる読み出し電圧を推定するための推定関数を用いて、第１データの読み出しに用いる読み出し電圧を推定する。
【図面の簡単な説明】
【０００７】
【図１】図１は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、本実施形態に係る制御部の機能構成の一例を示すブロック図である。
【図３】図３は、メモリセルがＴＬＣである場合の誤り抑制符号の処理例を示す図である。
【図４】図４は、生起確率期待値の例を示す図である。
【図５】図５は、本実施形態における推定関数の算出処理の一例を示すフローチャートである。
【図６】図６は、推定関数の算出処理を模式的に示す図である。
【図７】図７は、本実施形態における補正処理の一例を示すフローチャートである。
【図８】図８は、本実施形態における読み出し処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００９】
まず、本実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図１は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。図１に示すように、メモリシステム１は、メモリコントローラ１０と不揮発性メモリ２０とを備える。メモリシステム１は、ホスト３０と接続可能であり、図１ではホスト３０と接続された状態が示されている。ホスト３０は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【００１０】
不揮発性メモリ２０は、データを不揮発に記憶する不揮発性メモリであり、例えば、ＮＡＮＤ型フラッシュメモリ（以下、単にＮＡＮＤメモリという）である。以下の説明では、不揮発性メモリ２０としてＮＡＮＤメモリが用いられた場合を例示するが、不揮発性メモリ２０として３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistive  Random  Access  Memory）、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）等のＮＡＮＤメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ２０が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【００１１】
メモリシステム１は、いわゆるＳＳＤ（Solid  State  Drive）や、メモリコントローラ１０と不揮発性メモリ２０とが１つのパッケージとして構成されるメモリカード等、不揮発性メモリ２０を備える種々のメモリシステムであってよい。
【００１２】
メモリコントローラ１０は、ホスト３０からの書き込み要求に従って不揮発性メモリ２０への書き込みを制御する。また、ホスト３０からの読み出し要求に従って不揮発性メモリ２０からの読み出しを制御する。メモリコントローラ１０は、例えばＳｏＣ（System  On  a  Chip）として構成される半導体集積回路である。メモリコントローラ１０は、ホストＩ／Ｆ（ホストインタフェース）１５、メモリＩ／Ｆ（メモリインタフェース）１３、制御部１１、ＥＣＣ（Error  Correcting  Codes）部（コーデック）１４、誤り抑制符号化／復号部１６およびデータバッファ１２を備える。ホストＩ／Ｆ１５、メモリＩ／Ｆ１３、制御部１１、ＥＣＣ部１４およびデータバッファ１２は、内部バス１９で相互に接続されている。以下で説明するメモリコントローラ１０の各構成要素の動作の一部または全部は、ＣＰＵ（Central  Processing  Unit）がファームウェアを実行することによって実現されてもよいし、ハードウェアで実現されてもよい。
【００１３】
ホストＩ／Ｆ１５は、ホスト３０との間のインタフェース規格に従った処理を実施し、ホスト３０から受信した命令、書き込み対象のユーザデータなどを内部バス１９に出力する。また、ホストＩ／Ｆ１５は、不揮発性メモリ２０から読み出されて復元されたユーザデータ、制御部１１からの応答などをホスト３０へ送信する。
【００１４】
メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、不揮発性メモリ２０への書き込み処理を行う。また、メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、不揮発性メモリ２０からの読み出し処理を行う。
【００１５】
データバッファ１２は、メモリコントローラ１０がホスト３０から受信したユーザデータを不揮発性メモリ２０へ記憶するまでに一時格納する。また、データバッファ１２は、不揮発性メモリ２０から読み出したユーザデータをホスト３０へ送信するまでに一時格納する。データバッファ１２には、例えば、ＳＲＡＭ（Static  Random  Access  Memory）やＤＲＡＭ（Dynamic  Random  Access  Memory）などの汎用メモリを用いることができる。なお、データバッファ１２は、メモリコントローラ１０に内蔵されずに、メモリコントローラ１０の外部に搭載されてもよい。
【００１６】
制御部１１は、メモリシステム１の各構成要素を統括的に制御する。制御部１１は、ホスト３０からホストＩ／Ｆ１５経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部１１は、ホスト３０からの命令に従って、不揮発性メモリ２０へのユーザデータおよびパリティの書き込みをメモリＩ／Ｆ１３へ指示する。また、制御部１１は、ホスト３０からの命令に従って、不揮発性メモリ２０からのユーザデータおよびパリティの読み出しをメモリＩ／Ｆ１３へ指示する。
【００１７】
また、制御部１１は、ホスト３０からユーザデータの書き込み要求を受信した場合、データバッファ１２に蓄積されるユーザデータに対して、不揮発性メモリ２０上の格納領域（メモリ領域）を決定する。すなわち、制御部１１は、ユーザデータの書き込み先を管理する。ホスト３０から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ２０上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
【００１８】
また、制御部１１は、ホスト３０から読み出し要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリＩ／Ｆ１３へ指示する。
【００１９】
ＮＡＮＤメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、この同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル（ＳＬＣ：Single  Level  Cell）である場合は、１つのメモリセルグループが１ページに対応する。メモリセルがマルチレベルセル（ＭＬＣ：Multiple  Level  Cell）である場合は、１つのメモリセルグループが複数ページに対応する。なお、本説明において、ＭＬＣには、１つのメモリセルに３ビットを記憶するＴＬＣ（Triple  Level  Cell）や１つのメモリセルに４ビットを記憶するＱＬＣ（Quad  Level  Cell）等が含まれる。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【００２０】
ホスト３０から送信されるユーザデータは、内部バス１９に転送されてデータバッファ１２に一旦格納される。
【００２１】
誤り抑制符号化／復号部１６は、例えば制御部１１から指定された誤り抑制符号化方式により、不揮発性メモリ２０に格納されるユーザデータに対する誤り抑制符号化を行う。また、誤り抑制符号化／復号部１６は、不揮発性メモリ２０から読み出されてＥＣＣ部１４により復元されたユーザデータに対して誤り抑制復号を行う。誤り抑制符号化を適用する単位は、メモリセル全体であってもよいし、ワード線であってもよい。
【００２２】
誤り抑制符号化は、書込み対象のデータを変換することによりメモリセルの閾値電圧に偏りを持たせる処理である。これにより、セル疲弊およびビットエラーレート（ＢＥＲ）に関して特性の悪い閾値電圧へプログラムされるセルを削減し、特性の良い閾値電圧へプログラムされるセルを増加させることができる。セル疲弊とは、セル間干渉効果、および、書込み・消去によるメモリセルの疲弊を意味する。
【００２３】
例えば、セル疲弊およびＢＥＲ特性は、閾値電圧が高いほど悪い傾向となる場合がある。このような場合、誤り抑制符号化／復号部１６は、高い閾値電圧のメモリセルの出現確率Ｐ（Ｖｔｈ）を低く、低い閾値電圧のメモリセルの出現確率Ｐ（Ｖｔｈ）を高くするように誤り抑制符号化を行う。
【００２４】
誤り抑制符号は、エラー・ミチゲーション・コード（Error  Mitigation  Code）と呼ばれることもあり、アシンメトリック・コーディング（Asymmetric  Coding）などが知られている。
【００２５】
ＥＣＣ部１４は、不揮発性メモリ２０に格納されるユーザデータを符号化して符号語を生成する。誤り抑制符号化が実行された場合は、ＥＣＣ部１４は、誤り抑制符号化後のユーザデータを符号化して符号語を生成する。また、ＥＣＣ部１４は、不揮発性メモリ２０から読み出された受信語を復号してユーザデータを復元する。そこでＥＣＣ部１４は、ＥＣＣ符号化部（Encoder）１７とＥＣＣ復号部（Decoder）１８を備える。ＥＣＣ部１４による符号化および復号は、ユーザデータの誤り訂正符号の符号化および復号である。なお、ＥＣＣ部１４により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ１０内部で用いる制御データ等が含まれてもよい。
【００２６】
次に、本実施形態の書き込み処理について説明する。制御部１１は、不揮発性メモリ２０への書き込み時に、ユーザデータの符号化をＥＣＣ符号化部１７に指示する。その際、制御部１１は、不揮発性メモリ２０における符号語の格納場所（格納アドレス）を決定し、決定した格納場所もメモリＩ／Ｆ１３へ指示する。
【００２７】
誤り抑制符号化を実行する場合、制御部１１は、ユーザデータの誤り抑制符号化を、誤り抑制符号化／復号部１６に指示する。誤り抑制符号化／復号部１６は、制御部１１からの指示に基づいて、データバッファ１２上のユーザデータを誤り抑制符号化する。
【００２８】
ＥＣＣ符号化部１７は、制御部１１からの指示に基づいて、データバッファ１２上のユーザデータを符号化して符号語を生成する。誤り抑制符号化を実行する場合、ＥＣＣ符号化部１７は、誤り抑制符号化後のユーザデータをデータバッファ１２から読み出し、読み出したユーザデータを符号化して符号語を生成する。誤り訂正符号の符号化方式としては、後述するように、例えば、ＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号やＲＳ（Reed-Solomon）符号のような代数的符号を用いた符号化方式や、ＬＤＰＣ（Low-Density  Parity-Check）符号のような疎グラフに基づく符号を用いた符号化方式を採用することができる。メモリＩ／Ｆ１３は、制御部１１から指示された不揮発性メモリ２０上の格納場所へ符号語を格納する制御を行う。
【００２９】
次に、本実施形態の不揮発性メモリ２０からの読み出し時の処理について説明する。制御部１１は、不揮発性メモリ２０からの読み出し時に、不揮発性メモリ２０上のアドレスを指定してメモリＩ／Ｆ１３へ読み出しを指示する。また、制御部１１は、ＥＣＣ復号部１８へ復号の開始を指示する。メモリＩ／Ｆ１３は、制御部１１の指示に従って、不揮発性メモリ２０の指定されたアドレスから受信語を読み出し、読み出した受信語をＥＣＣ復号部１８に入力する。ＥＣＣ復号部１８は、この不揮発性メモリ２０から読み出された受信語を復号する。誤り抑制復号を実行する場合、制御部１１は、ＥＣＣ復号部１８により復号された受信語の誤り抑制復号を、誤り抑制符号化／復号部１６に指示する。
【００３０】
制御部１１は、例えば、まずＥＣＣ復号部１８に硬判定復号を実行させ、この硬判定復号により復号できなかった場合に、ＥＣＣ復号部１８に軟判定復号を実行させるように構成することもできる。
【００３１】
なお、不揮発性メモリ２０がＮＡＮＤメモリの場合、データの書き込み時に、書き込み値ｘに応じて、フローティングゲートの電子数（電荷量）が複数の分布（閾値分布）のいずれかに対応するように電子が注入される。ここでは、説明を簡略化するため、１つのメモリセルが１ビットを記憶するシングルレベルセル（ＳＬＣ）の例について説明する。ＳＬＣの場合、２つの分布のうちいずれか一方が０に対応し、他方が１に対応する。メモリセルに電圧を印加した場合、該メモリセルの電荷量に応じた電圧値以上の電圧を印加すると電流が流れ、該電圧値未満の電圧を印加すると電流が流れない。従って、この境目となる電圧はメモリセルごとに該メモリセルの電荷量に応じて決まる。このメモリセルの電荷量に応じて決まる電圧値を、ここでは閾値電圧とよぶ。初期状態で、２つの閾値電圧分布のいずれかに対応するように電荷が注入される。読み出し時には、２つの閾値電圧分布を区切る読み出し電圧（リードレベルともいう）をメモリセルに印加することにより、このメモリセルに記憶されているデータが１であるか０であるかを判定することができる。
【００３２】
次に、制御部１１の機能構成例について説明する。図２は、制御部１１の機能構成の一例を示すブロック図である。図２に示すように、制御部１１は、最適化部１０１と、生成部１０２と、確率算出部１０３と、補正部１０４と、推定部１０５と、を備えている。
【００３３】
図２は、読み出し電圧の推定に用いられる機能を実行する各部の例を示している。制御部１１は、上述のように、これらの各部以外の機能を備えていてもよい。また、図２に示す各部の一部または全部は、制御部１１以外に備えられてもよい。例えば、データバッファ１２内に備えられていてもよいし、内部バス１９に接続された他のハードウェア回路内に備えられていてもよい。
【００３４】
最適化部１０１は、参照読み出し電圧および推定関数を最適化処理により求める。参照読み出し電圧は、閾値電圧の分布（ヒストグラム）を生成するために用いられる読み出し電圧である。推定関数は、ヒストグラムから実際の読み出しに用いる読み出し電圧を推定するための関数である。最適化部１０１は、どのような方法で参照読み出し電圧および推定関数を求めてもよい。
【００３５】
推定関数は、線形関数、多項式関数、および、最小二乗平均誤差の推定関数などの、どのような関数であってもよい。推定関数は、例えば、ヒストグラムの各書き込みレベルに対応する度数を要素とするベクトルとの積により、読み出し電圧の推定値を算出する行列（係数行列）の形式としてもよい。例えばメモリセルがＴＬＣであり、書き込みレベルが８個（Ｅｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ）となる場合、８個の書き込みレベルに対応する８個の度数を要素とするベクトルから、７個の読み出し電圧を推定するための８行×７列の係数行列を、推定関数として用いることができる。
【００３６】
例えば最適化部１０１は、参照読み出し電圧と、参照読み出し電圧を印加したときの読み出し値が例えば１となるメモリセルの個数と、を使用した所定の誤差関数を最小化するような参照読み出し電圧を求める。また、最適化部１０１は、読み出し電圧と、読み出し値が例えば１となるメモリセルの個数と、を使用した所定の誤差関数を最小化するような推定関数を求める。
【００３７】
参照読み出し電圧および推定関数は、ある誤り抑制符号の符号化方式Ｅｎｃ１（第２符号化方式）が決定されれば、この符号化方式Ｅｎｃ１を適用した不揮発性メモリ２０について例えばベンダー（メモリシステム１のベンダー、メモリコントローラ１０のベンダー、または、不揮発性メモリ２０のベンダーなど）が製品を出荷する前に算出することができる。すなわち、出荷前に算出した参照読み出し電圧および推定関数を示す情報を、例えば不揮発性メモリ２０に記憶して利用することができる。このような場合は、最適化部１０１を備えないように構成してもよい。なお、符号化方式Ｅｎｃ１は、誤り抑制符号化を行わずに不揮発性メモリ２０にデータを書き込む方式、および、誤り抑制符号化を行って不揮発性メモリ２０にデータを書き込む方式のいずれであってもよい。
【００３８】
生成部１０２は、参照読み出し電圧を用いて測定した閾値電圧の分布（ヒストグラム）を生成する。例えば生成部１０２は、符号化方式Ｅｎｃ１が適用されたデータＤ１（第２データ）を不揮発性メモリ２０から読み出し、閾値電圧ごとのメモリセル数を示すヒストグラムＨｉｓｔ１（第２ヒストグラム）を生成する。
【００３９】
ヒストグラムＨｉｓｔ１が、最適化部１０１による推定関数の最適化処理に用いられる。生成部１０２は、符号化方式Ｅｎｃ１以外の誤り抑制符号の符号化方式Ｅｎｃ２（第１符号化方式）が適用されたデータＤ２（第１データ）についてもヒストグラムＨｉｓｔ２（第１ヒストグラム）を生成する。ヒストグラムＨｉｓｔ２は、推定部１０５による読み出し電圧の推定処理に用いられる。
【００４０】
本実施形態では、最適化部１０１による推定関数の算出は、符号化方式Ｅｎｃ１が適用されたデータに対してのみ実行されればよい。他の符号化方式Ｅｎｃ２が適用されたデータについては、符号化方式Ｅｎｃ２が適用されたデータから生成されるヒストグラムおよび符号化方式Ｅｎｃ１に対して算出された推定関数のうち少なくとも一方が補正部１０４により補正され、推定部１０５による読み出し電圧の推定に用いられる。
【００４１】
確率算出部１０３は、符号化方式の符号化パラメータに基づいて、複数の書き込みレベルの生起確率を算出する。符号化パラメータは、いずれの書き込みレベルに対応する閾値電圧に偏りを持たせるかなどの、誤り抑制符号化の動作を定めるパラメータである。誤り抑制符号では、符号化パラメータが決まれば、言い換えると、どのように閾値電圧に偏りを持たせるかが決定されれば、各書き込みレベルの生起確率の期待値（生起確率期待値）が算出できる。誤り抑制符号化を行わない符号化方式の場合、確率算出部１０３は、閾値電圧に偏りを持たせない符号化パラメータが指定されていると解釈して、生起確率を算出することができる。
【００４２】
確率算出部１０３は、符号化方式Ｅｎｃ１の符号化パラメータに基づいて、複数の書き込みレベルの生起確率（第２生起確率）を算出する。確率算出部１０３は、符号化方式Ｅｎｃ２の符号化パラメータに基づいて、複数の書き込みレベルの生起確率（第１生起確率）を算出する。
【００４３】
各符号化方式の符号化パラメータが製品出荷前に決定されている場合は、各符号化方式の生起確率も製品出荷前に算出することができる。このような場合は、製品出荷前に算出された生起確率を、例えば不揮発性メモリ２０などの記憶媒体に記憶して利用することができるため、確率算出部１０３を備えないように構成してもよい。
【００４４】
図３は、メモリセルがＴＬＣである場合の誤り抑制符号化の前後の書き込みレベルの例を示す図である。メモリセルがＴＬＣの場合、例えば書き込みレベルは、Ｅｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇの８個のレベルとなる。誤り抑制符号化を行わない符号化方式の場合、各書き込みレベルの生起確率期待値は同じとなるため、それぞれ０．１２５（＝１／８）と算出できる。誤り抑制符号化を行う符号化方式の場合、例えば確率算出部１０３は、書き込みレベルＥｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇに対して、それぞれ０．１１、０．１１、０．１２５、０．１４、０．１２５、０．１２５、０．１４、０．１２５のように、相互に異なりうる生起確率期待値を算出する。図４は、このように算出された生起確率期待値の例を示す図である。なお本実施形態の手法は、ＴＬＣのみでなく、ＳＬＣ、および、ＱＬＣなどの他のＭＬＣにも適用できる。
【００４５】
図２に戻り、補正部１０４は、符号化方式Ｅｎｃ２が適用されたデータＤ２に対して生成されたヒストグラムＨｉｓｔ２、および、最適化部１０１により算出された推定関数のうち少なくとも一方を、符号化方式Ｅｎｃ２のパラメータおよび符号化方式Ｅｎｃ１のパラメータに基づいて補正する。例えば補正部１０４は、符号化方式Ｅｎｃ１の生起確率（第２生起確率）の期待値に対する、符号化方式Ｅｎｃ２の生起確率期待値の割合を、各書き込みレベルで求める。補正部１０４は、ヒストグラムの各書き込みレベルに対応する値（度数）それぞれを、対応する書き込みレベルに対して求めた割合で除算することにより補正する。
【００４６】
例えば符号化方式Ｅｎｃ１として誤り抑制符号化を行わない方式を用いたとすると、生起確率期待値は、上記のように各書き込みレベルについて０．１２５となる。また、符号化方式Ｅｎｃ２の生起確率期待値が上記の例と同様に、書き込みレベルＥｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇに対して、それぞれ０．１１、０．１１、０．１２５、０．１４、０．１２５、０．１２５、０．１４、０．１２５であるとする。この場合、補正部１０４は、例えば書き込みレベルＥｒに対応するヒストグラムの度数を、０．１１／０．１２５で除算する。
【００４７】
誤り抑制符号化を行う符号化方式について推定関数を算出した場合も、この符号化方式の生起確率期待値と、実際に読み出すデータの符号化方式の生起確率期待値と用いて、ヒストグラムおよび推定関数を補正することができる。
【００４８】
上述のように、推定関数として係数行列を用いる場合、ヒストグラムの各書き込みレベルに対応する度数を要素とするベクトルと、係数行列との積により、読み出し電圧の推定値が算出される。従って、度数を補正する代わりに、当該度数との積が算出される行列の要素を補正しても、同じ推定値を算出することができる。すなわち、補正部１０４は、係数行列を生起確率により補正してもよい。係数行列および生起確率が製品出荷前に求められる場合は、補正した係数行列も製品出荷前に求めることが可能となる。
【００４９】
補正した推定関数を製品出荷前に求められる場合は、求めた推定関数を示す情報を、例えば不揮発性メモリ２０などの記憶媒体に記憶して利用することができるため、補正部１０４を備えないように構成してもよい。
【００５０】
ヒストグラムの各度数のうち一部を補正し、補正しない度数については、対応する行列の要素を補正してもよい。すなわち、補正部１０４は、ヒストグラムおよび推定関数のうち少なくとも一方を補正すればよい。
【００５１】
推定部１０５は、不揮発性メモリ２０からのデータの読み出しに用いる読み出し電圧を、ヒストグラムおよび推定関数から推定する。例えば補正部１０４によりヒストグラムＨｉｓｔ２が補正された場合は、推定部１０５は、補正後のヒストグラムＨｉｓｔ２、および、（補正されていない）推定関数を用いて、データＤ２の読み出しに用いる読み出し電圧を推定する。補正部１０４により推定関数が補正された場合は、推定部１０５は、（補正されていない）ヒストグラムＨｉｓｔ２、および、補正後の推定関数を用いて、データＤ２の読み出しに用いる読み出し電圧を推定する。
【００５２】
符号化方式Ｅｎｃ１が適用されたデータＤ１は、推定関数の算出に用いられたデータであるため、データＤ１を読み出す場合に推定関数を補正する必要はない。従って、データＤ１を読み出す場合は、推定部１０５は、ヒストグラムＨｉｓｔ１および（補正されていない）推定関数を用いて、データＤ１の読み出しに用いる読み出し電圧を推定する。
【００５３】
次に、本実施形態にかかるメモリシステムによる推定関数の算出処理の流れについて説明する。図５は、本実施形態における推定関数の算出処理の一例を示すフローチャートである。
【００５４】
まず最適化部１０１は、最適化処理により参照読み出し電圧の最適値を算出する（ステップＳ１０１）。
【００５５】
生成部１０２は、誤り抑制符号化を行わずにデータが書き込まれた不揮発性メモリ２０を対象として参照読み出し電圧を用いた読み出しを行い、ヒストグラムＨｉｓｔ１を生成する（ステップＳ１０２）。例えば生成部１０２は、ステップＳ１０１で求められた複数の参照読み出し電圧を用いて、不揮発性メモリ２０の各メモリセルの閾値電圧を測定し、測定した閾値電圧の分布を示すヒストグラムを生成する。
【００５６】
次に最適化部１０１は、生成されたヒストグラムを用いて、読み出し電圧を推定するための推定関数を算出する（ステップＳ１０３）。
【００５７】
上記のように、適用する誤り抑制符号の符号化方式が決定されれば、製品出荷前に本フローチャートと同様の手順で参照読み出し電圧および推定関数を示す情報を算出することができる。製品出荷前に算出した参照読み出し電圧および推定関数を示す情報を、例えば不揮発性メモリ２０に記憶し、製品出荷後の処理時に参照するように構成してもよい。この場合は、メモリシステムは最適化部１０１を備える必要はなく、また、本フローチャートの処理を実行する必要はない。
【００５８】
図６は、算出された推定関数を用いて読み出し電圧を推定する処理を模式的に示す図である。図６は、生成部１０２が、７個の参照読み出し電圧６０１〜６０７を用いて８個のビンを有するヒストグラムを生成した例を示す。また図６は、推定関数として係数行列を用いる例を示す。ヒストグラムの８個のビンに対応する度数を要素とするベクトルと、８行×７列の係数行列との積により、７個の読み出し電圧が推定される。なお参照読み出し電圧の個数は７個である必要はない。例えば８個以上の参照読み出し電圧を用いることにより、より高精度にヒストグラムを生成できる。また７個未満の参照読み出し電圧を用いることにより、処理をより高速化することができる。
【００５９】
誤り抑制符号化を行わずに書き込まれたデータを推定関数の算出に用いる場合は、誤り抑制符号の符号化パラメータを最適化する必要がない。従って、符号化パラメータの最適化処理などの前処理を行わずに、推定関数の算出処理を開始することができる。これにより、例えば、メモリシステムを用いる製品の提供までの期間を短くすることが可能となる。
【００６０】
誤り抑制符号化を行って書き込まれたデータを推定関数の算出に用いる場合であっても、推定関数の算出処理は、ある１つの誤り符号化方式に対して１回実施すればよい。すなわち、複数の符号化方式を適用する場合に、複数の符号化方式ごとに推定関数の算出処理を実行する必要がない。従って、例えばメモリシステムのサンプルを入手してから製品出荷までのスケジュールを短縮可能となる。
【００６１】
次に、本実施形態にかかるメモリシステムによる補正処理の流れについて説明する。図７は、本実施形態における補正処理の一例を示すフローチャートである。なお図７は、推定関数を補正する場合の例を示す。
【００６２】
確率算出部１０３は、適用する誤り抑制符号の符号化方式（符号化方式Ｅｎｃ２）に応じて、各書き込みレベルの生起確率を算出する（ステップＳ２０１）。補正部１０４は、算出された生起確率により、推定関数を補正する（ステップＳ２０２）。補正対象とする推定関数は、例えば図５に示す手順に従い、符号化方式Ｅｎｃ１が適用されたデータを用いて製品出荷前に算出された推定関数である。推定関数として係数行列を用いる場合、補正部１０４は、符号化方式Ｅｎｃ１の生起確率期待値に対する、符号化方式Ｅｎｃ２の生起確率期待値の割合を、各書き込みレベルで求める。補正部１０４は、製品出荷前に算出された係数行列の各列の値を、対応する書き込みレベルに対して求められた割合で除算することにより補正する。
【００６３】
推定関数を補正する場合は、適用する誤り抑制符号の符号化方式が決定されれば、生起確率を算出し、推定関数を補正することができる。すなわち、不揮発性メモリ２０からデータを読み出してヒストグラムを生成する必要がない。このため、製品出荷前に補正した推定関数を求めることが可能となる。補正した推定関数を示す情報は、例えば不揮発性メモリ２０に保存し、実際の読み出し処理時に参照可能としてもよい。
【００６４】
ヒストグラムを補正する場合、補正部１０４は、生成部１０２により生成されたヒストグラムを補正対象として、生起確率による補正を行えばよい。
【００６５】
次に、本実施形態にかかるメモリシステムによる読み出し処理の流れについて説明する。図８は、本実施形態における読み出し処理の一例を示すフローチャートである。図８の読み出し処理は、例えば符号化方式Ｅｎｃ２が適用されたデータを不揮発性メモリ２０から読み出す場合の処理である。
【００６６】
生成部１０２は、符号化方式Ｅｎｃ２による誤り抑制符号が適用されてデータが書き込まれた不揮発性メモリ２０を対象として参照読み出し電圧を用いた読み出しを行い、ヒストグラムＨｉｓｔ２を生成する（ステップＳ３０１）。生成部１０２は、複数の参照読み出し電圧（例えば７個の参照読み出し電圧）を用いて、不揮発性メモリ２０の各メモリセルの閾値電圧の分布を示すヒストグラムを生成する。この場合に用いる参照読み出し電圧は、推定関数の推定時に用いられた参照読み出し電圧、すなわち、符号化方式Ｅｎｃ１に対して用いられた参照読み出し電圧と同じである。
【００６７】
推定部１０５は、ヒストグラムＨｉｓｔ２と、例えば図７の手順により補正された推定関数との積により、読み出し電圧を推定する（ステップＳ３０２）。製品出荷前に補正された推定関数を用いる場合は、推定部１０５は、適用された符号化方式（この例では符号化方式Ｅｎｃ２）に対応する推定関数の情報を不揮発性メモリ２０などから読み出して利用してもよい。複数の符号化方式が適用されうる場合は、推定部１０５は、適用されている符号化方式を設定情報などから特定し、特定した符号化方式に対応する推定関数を用いればよい。設定情報は、適用されている符号化方式を特定可能な情報であり、例えば不揮発性メモリ２０に記憶される。
【００６８】
この後、制御部１１は、算出された読み出し電圧を用いて、不揮発性メモリ２０からデータを読み出す（ステップＳ３０３）。硬判定復号を行う場合、例えば制御部１１は、算出された読み出し電圧それぞれを用いて、メモリセルに書き込まれた閾値電圧がいずれの書き込みレベルに相当するかを特定する。軟判定復号を行う場合、例えば制御部１１は、算出された読み出し電圧を基準とし、低電圧側および高電圧側に予め定められた値だけシフトされた読み出し電圧を用いて読み出しを行う。
【００６９】
読み出し処理では、ある符号化方式に対して求められた参照読み出し電圧を、他の符号化方式に対しても用いることができる。すなわち、本実施形態では、誤り抑制符号の符号化方式ごとに参照読み出し電圧を最適化する必要がない。従って、例えば参照読み出し電圧を示す情報を記憶する記憶領域を削減することができる。さらに、推定部１０５は、適用された符号化方式に対応する参照読み出し電圧を示す情報を、不揮発性メモリ２０などから読み出す必要がないため、読み出し処理全体として処理時間を削減することができる。
【００７０】
誤り抑制符号化は、書き込みデータのレベル（書き込みレベル）の生起確率（生起頻度）を変更するため、閾値電圧の分布に影響を与える。すなわち、誤り抑制符号は、閾値電圧の分布を利用して読み出し電圧を推定する処理に影響を与える可能性がある。従って両者を併用する場合は、このような影響に対処する必要がある。
【００７１】
１つの対処方法として、まず誤り抑制符号の符号化パラメータを最適化し、その後に誤り抑制符号で符号化した符号化データを用いて推定関数を最適化する、という逐次的な方法が考えられる。しかし、このような方法では、例えば複数の誤り抑制符号の方式ごとに、符号化パラメータの最適化および推定関数の最適化が必要になる。また、デバイスのサンプルを入手してから製品出荷までのスケジュールが長くなる。
【００７２】
そこで本実施形態のメモリシステムは、ある１つの符号化方式が適用されたデータを用いて、参照読み出し電圧、および、実際の読み出し電圧を推定するための情報（推定関数）を求める。そして、他の符号化方式が適用されたデータに対しては、これらのデータから生成される閾値電圧の分布（ヒストグラム）または推定関数を、当該符号化方式の符号化パラメータに基づいて補正し、読み出し電圧の推定に用いる。これにより、符号化パラメータの最適化および推定関数の最適化は、ある１つの符号化方式に対して実施すれば十分となる。
【００７３】
また、推定関数を求める符号化方式として、符号化を行わない方式（例えば誤り抑制符号を適用しない方式）を用いれば、符号化パラメータの最適化を待たずに、推定関数を最適化する工程に着手可能となる。すなわち、製品出荷までの期間をさらに短縮可能となる。
【００７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
１  メモリシステム
１０  メモリコントローラ
１１  制御部
１２  データバッファ
１３  メモリＩ／Ｆ
１４  ＥＣＣ部
１５  ホストＩ／Ｆ
１６  誤り抑制符号化／復号部
１７  ＥＣＣ符号化部
１８  ＥＣＣ復号部
１９  内部バス
２０  不揮発性メモリ
３０  ホスト
１０１  最適化部
１０２  生成部
１０３  確率算出部
１０４  補正部
１０５  推定部
【図１】
2020042884.tif 000003
【図２】
2020042884.tif 000004
【図３】
2020042884.tif 000005
【図４】
2020042884.tif 000006
【図５】
2020042884.tif 000007
【図６】
2020042884.tif 000008
【図７】
2020042884.tif 000009
【図８】
2020042884.tif 000010