(57)【要約】【課題】復号時間を短縮する。【解決手段】メモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、直列接続された第１〜第３メモリセルを含む複数のメモリセルと、複数のメモリセルに電気的に直列接続された選択トランジスタと、を含むメモリストリングと、メモリストリングの第１〜第３メモリセルのゲートにそれぞれ電気的に接続される第１〜第３ワード線と、を含む。メモリコントローラは、第１〜第３ワード線にそれぞれ第１〜第３読み出し電圧を印加させることでそれぞれ第１〜第３メモリセルのデータを読み出すように構成され、第２読み出し電圧による第１データを復号する処理と並行して、第２ワード線に第２読み出し電圧から変化させた第４読み出し電圧を印加させることで第２データを読み出し、第１データと、第２データと、第３データおよび第４データの少なくとも一方に基づいて尤度情報を求め、尤度情報に基づいて第２メモリセルから読み出したデータを復号する。【選択図】図１
2020047312.tif 000002
【特許請求の範囲】
【請求項１】
各々が、直列接続された第１メモリセル、第２メモリセルおよび第３メモリセルを含む複数のメモリセルと、前記複数のメモリセルに電気的に直列接続された選択トランジスタと、を含むメモリストリングと、
前記メモリストリングに接続されるビット線と、
前記メモリストリングの前記第１メモリセルのゲートに電気的に接続される第１ワード線と、
前記メモリストリングの前記第２メモリセルのゲートに電気的に接続される第２ワード線と、
前記メモリストリングの前記第３メモリセルのゲートに電気的に接続される第３ワード線と、
を含む不揮発性メモリと、
前記不揮発性メモリに前記第１ワード線に第１読み出し電圧を印加させることで前記第１メモリセルのデータを読み出し、前記不揮発性メモリに前記第２ワード線に第２読み出し電圧を印加させることで前記第２メモリセルのデータを読み出し、前記不揮発性メモリに前記第３ワード線に第３読み出し電圧を印加させることで前記第３メモリセルのデータを読み出すように構成され、
前記第２読み出し電圧による読み出しデータである第１データを復号する処理と並行して、前記不揮発性メモリに前記第２ワード線に前記第２読み出し電圧から変化させた第４読み出し電圧を印加させることで前記第２メモリセルのデータを読み出し、
前記第１データと、前記第４読み出し電圧による読み出しデータである第２データと、前記第１読み出し電圧による読み出しデータである第３データおよび前記第３読み出し電圧による読み出しデータである第４データの少なくとも一方のデータと、に基づいて尤度情報を求め、前記尤度情報に基づいて前記第２メモリセルから読み出したデータを復号する
メモリコントローラと、
を備えるメモリシステム。
【請求項２】
前記メモリコントローラは、
前記第２メモリセルの閾値電圧の大きさを判別するために定められた第５読み出し電圧を用いて前記第２メモリセルのデータを読み出し、
前記第１データと、前記第２データと、前記第３データおよび前記第４データの少なくとも一方のデータと、前記第５読み出し電圧による読み出しデータである第５データと、を用いて前記尤度情報を求める、
請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、
前記第１データと、前記第２データと、前記第３データおよび前記第４データの少なくとも一方のデータと、に対する前記尤度情報を定めたテーブルを用いて、前記尤度情報を求める、
請求項１に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、
前記第１データと、前記第２データと、前記第３データおよび前記第４データの少なくとも一方のデータと、に対して相互に異なる前記尤度情報を定めた複数のテーブルから選択されたテーブルを用いて前記尤度情報を求める、
請求項３に記載のメモリシステム。
【請求項５】
前記メモリコントローラは、
複数の前記テーブルのうち第１テーブルを用いて前記尤度情報を求め、求めた前記尤度情報を用いて前記第２メモリセルから読み出したデータを復号し、復号に失敗した場合に、複数の前記テーブルのうち前記第１テーブルと異なる第２テーブルを用いて前記尤度情報をさらに求める、
請求項４に記載のメモリシステム。
【請求項６】
前記メモリコントローラは、
前記第１データと、前記第２データと、前記第３データおよび前記第４データの少なくとも一方のデータと、に対して相互に異なる前記尤度情報を定めた複数のテーブルのうちいずれかを用いて前記尤度情報を求め、求めた前記尤度情報を用いて前記第２メモリセルから読み出したデータを復号する、複数の復号部を備える、
請求項１に記載のメモリシステム。
【請求項７】
前記メモリコントローラは、
前記第１データと前記第２データを用いて前記第２メモリセルから読み出したデータを復号し、復号に失敗した場合に、前記第１データと、前記第２データと、前記第３データおよび前記第４データの少なくとも一方のデータと、を用いて前記尤度情報を求め、求めた前記尤度情報を用いて前記第２メモリセルから読み出したデータを復号する、
請求項１に記載のメモリシステム。
【請求項８】
前記メモリコントローラは、
前記第１読み出し電圧との差が第１差分値である１以上の読み出し電圧、および、前記第１読み出し電圧との差が第２差分値である１以上の読み出し電圧を含む、複数の前記第２読み出し電圧を用いて、前記第２メモリセルから複数の前記第２データを読み出す、
請求項１に記載のメモリシステム。
【請求項９】
前記メモリコントローラは、
前記第１メモリセルから２以上の前記第１読み出し電圧を用いて２以上の前記第３データを読み出し、
前記第３メモリセルから２以上の前記第３読み出し電圧を用いて２以上の前記第４データを読み出す、
請求項１に記載のメモリシステム。
【請求項１０】
前記第３データは、前記第１メモリセルの閾値電圧が前記第１読み出し電圧より大きいか小さいかを示す情報であり、前記第４データは、前記第３メモリセルの閾値電圧が前記第３読み出し電圧より大きいか小さいかを示す情報である、
請求項１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
メモリシステムでは、一般に、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１６／００１１９７０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、復号に要する時間を短縮することが可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、直列接続された第１〜第３メモリセルを含む複数のメモリセルと、複数のメモリセルに電気的に直列接続された選択トランジスタと、を含むメモリストリングと、メモリストリングの第１〜第３メモリセルのゲートにそれぞれ電気的に接続される第１〜第３ワード線と、を含む。メモリコントローラは、第１〜第３ワード線にそれぞれ第１〜第３読み出し電圧を印加させることでそれぞれ第１〜第３メモリセルのデータを読み出すように構成され、第２読み出し電圧による第１データを復号する処理と並行して、第２ワード線に第２読み出し電圧から変化させた第４読み出し電圧を印加させることで第２データを読み出し、第１データと、第２データと、第３データおよび第４データの少なくとも一方に基づいて尤度情報を求め、尤度情報に基づいて第２メモリセルから読み出したデータを復号する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、ブロックの構成例を示す図である。
【図３】図３は、ページリードの具体例を説明するための図である。
【図４】図４は、シフトリードを説明するための図である。
【図５】図５は、ステートの一例を示す図である。
【図６】図６は、符号化／復号部の機能構成の一例を示すブロック図である。
【図７】図７は、ＬＬＲテーブルの一例を示す図である。
【図８】図８は、第１の実施形態における復号処理の一例を示すフローチャートである。
【図９】図９は、ＱＬＣにおけるステートとデータコーディングとの対応の一例を示す図である。
【図１０】図１０は、ＱＬＣでのシフトリードの概念を説明する図である。
【図１１】図１１は、左右に２回のシフトリードを実行する場合に用いるＬＬＲテーブルの例を示す図である。
【図１２】図１２は、ステートの分け方の一例を示す図である。
【図１３】図１３は、変形例２で用いられるＬＬＲテーブルの例を示す図である。
【図１４】図１４は、第２の実施形態の符号化／復号部の機能構成の一例を示すブロック図である。
【図１５】図１５は、本実施形態で用いる複数のＬＬＲテーブルの例を示す図である。
【図１６】図１６は、第２の実施形態における復号処理の一例を示すフローチャートである。
【図１７】図１７は、ソフトビット復号を並行して実行する場合の復号部の構成例を示す図である。
【図１８】図１８は、第３の実施形態の符号化／復号部の機能構成の一例を示すブロック図である。
【図１９】図１９は、第３の実施形態における復号処理の一例を示すフローチャートである。
【図２０】図２０は、第４の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図２１】図２１は、第４の実施形態における復号処理の一例を示すフローチャートである。
【図２２】図２２は、第５の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図２３】図２３は、読み出し処理の読み出し位置を説明するための図である。
【図２４】図２４は、第５の実施形態の符号化／復号部の機能構成の一例を示すブロック図である。
【図２５】図２５は、第５の実施形態で用いるＬＬＲテーブルの例を示す図である。
【図２６】図２６は、第５の実施形態における復号処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
まず、第１の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図１は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図１に示すように、メモリシステム１は、メモリコントローラ１０と不揮発性メモリ２０とを備える。メモリシステム１は、ホスト３０と接続可能であり、図１ではホスト３０と接続された状態が示されている。ホスト３０は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【０００９】
不揮発性メモリ２０は、データを不揮発に記憶する不揮発性メモリであり、例えば、ＮＡＮＤ型フラッシュメモリ（以下、単にＮＡＮＤメモリという）である。以下の説明では、不揮発性メモリ２０としてＮＡＮＤメモリが用いられた場合を例示するが、不揮発性メモリ２０として３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistive  Random  Access  Memory）、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）等のＮＡＮＤメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ２０が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【００１０】
メモリシステム１は、いわゆるＳＳＤ（Solid  State  Drive）や、メモリコントローラ１０と不揮発性メモリ２０とが１つのパッケージとして構成されるメモリカード等、不揮発性メモリ２０を備える種々のメモリシステムであってよい。
【００１１】
メモリコントローラ１０は、ホスト３０からの書き込み要求に従って不揮発性メモリ２０への書き込みを制御する。また、ホスト３０からの読み出し要求に従って不揮発性メモリ２０からの読み出しを制御する。メモリコントローラ１０は、例えばＳｏＣ（System  On  a  Chip）として構成される半導体集積回路である。メモリコントローラ１０は、ホストＩ／Ｆ（ホストインタフェース）１５、メモリＩ／Ｆ（メモリインタフェース）１３、制御部１１、符号化／復号部（コーデック）１４およびデータバッファ１２を備える。ホストＩ／Ｆ１５、メモリＩ／Ｆ１３、制御部１１、符号化／復号部１４およびデータバッファ１２は、内部バス１６で相互に接続されている。以下で説明するメモリコントローラ１０の各構成要素の動作の一部または全部は、ＣＰＵ（Central  Processing  Unit）がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
【００１２】
ホストＩ／Ｆ１５は、ホスト３０との間のインタフェース規格に従った処理を実施し、ホスト３０から受信した命令、書き込み対象のユーザデータなどを内部バス１６に出力する。また、ホストＩ／Ｆ１５は、不揮発性メモリ２０から読み出されて復元されたユーザデータ、制御部１１からの応答などをホスト３０へ送信する。
【００１３】
メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、不揮発性メモリ２０への書き込み処理を行う。また、メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、不揮発性メモリ２０からの読み出し処理を行う。
【００１４】
データバッファ１２は、メモリコントローラ１０がホスト３０から受信したユーザデータを不揮発性メモリ２０へ記憶するまでに一時記憶する。また、データバッファ１２は、不揮発性メモリ２０から読み出したユーザデータをホスト３０へ送信するまでに一時記憶する。データバッファ１２には、例えば、ＳＲＡＭ（Static  Random  Access  Memory）やＤＲＡＭ（Dynamic  Random  Access  Memory）などの汎用メモリを用いることができる。なお、データバッファ１２は、メモリコントローラ１０に内蔵されずに、メモリコントローラ１０の外部に搭載されてもよい。
【００１５】
制御部１１は、メモリシステム１の各構成要素を統括的に制御する。制御部１１は、ホスト３０からホストＩ／Ｆ１５経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部１１は、ホスト３０からの命令に従って、不揮発性メモリ２０へのユーザデータおよびパリティの書き込みをメモリＩ／Ｆ１３へ指示する。また、制御部１１は、ホスト３０からの命令に従って、不揮発性メモリ２０からのユーザデータおよびパリティの読み出しをメモリＩ／Ｆ１３へ指示する。
【００１６】
また、制御部１１は、ホスト３０からユーザデータの書き込み要求を受信した場合、データバッファ１２に蓄積されるユーザデータに対して、不揮発性メモリ２０上の記憶領域（メモリ領域）を決定する。すなわち、制御部１１は、ユーザデータの書き込み先を管理する。ホスト３０から受信したユーザデータの論理アドレスと該ユーザデータが記憶された不揮発性メモリ２０上の記憶領域を示す物理アドレスとの対応はアドレス変換テーブルとして記憶される。
【００１７】
また、制御部１１は、ホスト３０から読み出し要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリＩ／Ｆ１３へ指示する。
【００１８】
ＮＡＮＤメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。
【００１９】
図２は、ブロックの構成例を示す図である。各ブロックは、所定の第１方向に沿って順に配列された（ｍ＋１）個のＮＡＮＤストリングＮＳを備えている（ｍは、０以上の整数）。ＮＡＮＤストリングは、メモリストリングとも称される。（ｍ＋１）個のＮＡＮＤストリングＮＳにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｍに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００２０】
各ＮＡＮＤストリングＮＳにおいて、（ｎ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が所定の第２方向に沿って電気的に直列接続されるように配置されている（ｎは、０以上の整数）。
【００２１】
最もソース側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｎにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴ０のソースは選択トランジスタＳＴ２のドレインに接続され、ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴｎのドレインは選択トランジスタＳＴ１のソースに接続されている。
【００２２】
ワード線ＷＬ０〜ＷＬｎは、ブロック内のＮＡＮＤストリングＮＳ間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内のＮＡＮＤストリングＮＳ間において所定の第１方向に沿って隣接するメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される（ｍ＋１）個のメモリセルトランジスタＭＴはメモリセルグループと呼ぶ。なお、メモリセルトランジスタＭＴはメモリセルとも称される。
【００２３】
メモリセルがシングルレベルセル（ＳＬＣ：Single  Level  Cell）である場合は、１つのメモリセルグループが１ページに対応する。メモリセルがマルチレベルセル（ＭＬＣ：Multiple  Level  Cell）である場合は、１つのメモリセルグループが複数ページに対応する。なお、本説明において、ＭＬＣには、１つのメモリセルに３ビットを記憶するＴＬＣ（Triple  Level  Cell）や１つのメモリセルに４ビットを記憶するＱＬＣ（Quad  Level  Cell）等が含まれる。また各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【００２４】
不揮発性メモリ２０からのデータの読み出し時には、読み出し対象となるデータが書き込まれたメモリセルが接続されるワード線に読み出し電圧が印加され、読み出し対象となるデータが書き込まれたメモリセルが接続されるワード線以外のワード線については所定の電圧（ＶＲＥＡＤ）が印加される。ＶＲＥＡＤは、メモリセルが記憶するデータに関わらずメモリセルがオン状態になるような電圧である。
【００２５】
ホスト３０から送信されるユーザデータは、内部バス１６に転送されてデータバッファ１２に一旦記憶される。符号化／復号部１４は、不揮発性メモリ２０に記憶されるユーザデータを符号化して符号語を生成する。また、符号化／復号部１４は、不揮発性メモリ２０から読み出された符号語（受信語ともいう）を復号してユーザデータを復元する。なお、符号化／復号部１４により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ１０内部で用いる制御データ等が含まれてもよい。
【００２６】
次に、符号語の復号処理の詳細について説明する。誤り訂正符号の復号技術として、ハードビット復号（硬判定復号）とソフトビット復号（軟判定復号）がある。ハードビット復号では、入力の値は、０または１の１ビット（ハードビット）である。これに対してソフトビット復号では、入力の値は、０または１の確からしさを表す対数尤度比（Log  Likelihood  Ratio：ＬＬＲ）などの尤度情報である。ＬＬＲは、例えば−１２７（０である確率が高い）から１２７（１である確率が高い）の範囲の数値で表される。
【００２７】
次に、不揮発性メモリ２０からのデータの読み出しについてさらに説明する。上記のように、不揮発性メモリ２０の各メモリセルは、１ページ（ＳＬＣの場合）、または、複数ページ（ＭＬＣの場合）に相当するデータを記憶することができる。以下では、各メモリセルから、各ページのデータを読み出すことをページリードという。ページリードでは、読み出し対象のページのデータが０であるか１であるかを示す処理結果（リードデータ）が得られる。
【００２８】
図３は、ページリードの具体例を説明するための図である。図３は、ＱＬＣにおけるデータコーディングとページリードの例を示す。ＱＬＣでは、１つのメモリセルに記憶される４ビットのデータは、例えば、トップビット、アッパービット、ミドルビット、および、ロワービットと呼ばれる。
【００２９】
同一のワード線に接続される全てのメモリセルのトップビットの集合を、トップページと呼ぶ。同一のワード線に接続される全てのメモリセルのアッパービットの集合を、アッパーページと呼ぶ。同一のワード線に接続される全てのメモリセルのミドルビットの集合を、ミドルページと呼ぶ。同一のワード線に接続される全てのメモリセルのロアービットの集合を、ロアーページと呼ぶ。
【００３０】
ＱＬＣの場合、図３に示すように、閾値電圧の取り得る範囲は、１６個に区分される。１６個の区分を、閾値電圧が小さいほうから順に、“Ｓ０”ステート、“Ｓ１”ステート、“Ｓ２”ステート、“Ｓ３”ステート、“Ｓ４”ステート、“Ｓ５”ステート、“Ｓ６”ステート、“Ｓ７”ステート、“Ｓ８”ステート、“Ｓ９”ステート、“Ｓ１０”ステート、“Ｓ１１”ステート、“Ｓ１２”ステート、“Ｓ１３”ステート、“Ｓ１４”ステート、および、“Ｓ１５”ステートと呼ぶ。ステートは、閾値電圧の大きさを表す情報に相当する。
【００３１】
ページリードでは、ページごとに定められた複数の読み出し電圧を用いて読み出しが行われ、複数の読み出し電圧による読み出し結果から、各ページのデータが０であるか１であるかが特定される。図３の例では、ロワーページを対象とするページリード（ロワーページリード）の場合、Ｖ１、Ｖ４、Ｖ６、および、Ｖ１１の４つの読み出し電圧が用いられる。
【００３２】
各読み出し電圧による読み出しでは、メモリセルの閾値電圧が、読み出し電圧より大きいか否かを示す１ビットの読み出し結果（リードデータ）が得られる。例えば閾値電圧が読み出し電圧より大きい場合、０を示すリードデータが得られる。また、閾値電圧が読み出し電圧より小さい場合、１を示すリードデータが得られる。以下では、このように１つの読み出し電圧に対する閾値電圧の大小を示すリードデータを取得する処理を、シングルステートリードという。
【００３３】
ページリードでは、複数回のシングルステートリードにより得られるリードデータから、各ページのデータが０であるか１であるかが特定される。図３のＳ１Ｒ〜Ｓ１５Ｒは、読み出し電圧Ｖ１〜Ｖ１５を用いたシングルステートリードを表す。図３の例で、ロワーページをＶ１、Ｖ４、Ｖ６、および、Ｖ１１の４つの読み出し電圧で読み出した結果が、それぞれ０、０、１、および、１であったとする。この場合、メモリセルの閾値電圧は、Ｖ４より大きく、Ｖ６より小さいこと、すなわち、ロワーページのデータは１であることが特定できる。
【００３４】
同様にして、ミドルページ、アッパーページ、および、トップページのデータが０であるか１であるかが特定される。４ページのリードデータから、メモリセルがいずれのステートに相当するかが特定できる。
【００３５】
ページリードは、さらに、ハードビットリード、シフトリード、および、ソフトビットリードに分けられる。ハードビットリードは、メモリセルのデータを０または１のビット値（ハードビット）として読み出す方式である。ハードビットリードでは、予め定められた基準読み出し電圧が用いられる。
【００３６】
シフトリードは、基準読み出し電圧から左右にΔＲずらした電圧を読み出し電圧として用いて、メモリセルのデータを０または１のビット値（ハードビット）として読み出す方式である。
【００３７】
図４は、ハードビットリードおよびシフトリードを説明するための図である。ハードビット（ＨＢ）は、予め定められた基準読み出し電圧で読み出した値を表す。各メモリセルは、例えば、基準読み出し電圧と、各メモリセルが記憶している閾値電圧とを比較し、比較結果を示す読み出し結果を出力する。読み出し結果は、例えば、“０”または“１”、もしくは、“Ｈｉｇｈ”または“Ｌｏｗ”のように表される。このように、読み出し結果は、メモリセルの閾値電圧が読み出し電圧より大きいか小さいかを示す情報である。シフトリードでは、基準読み出し電圧から左右にΔＲずらした読み出し電圧が用いられる。
【００３８】
ソフトビットリードは、ソフトビットをリードデータとして読み出す方式である。ソフトビットは、例えば、２回のシフトリードによる２つの読み出し結果をＸＮＯＲで演算して得られる１ビットの値である。なお、ＬＬＲは、このようにして算出されるソフトビットを用いて算出することが可能である。例えば、ハードビット１ビットとソフトビット１ビットによる４パターンの組み合わせ（「０、１」、「０、０」、「１、０」、「１、１」）に対して、それぞれ異なる値のＬＬＲが定められる。ＬＬＲの値は、例えば各パターンに対するＬＬＲの値を定めたＬＬＲテーブルを用いて算出される。ＬＬＲの取り得る範囲は、どのように決定してもよい。
【００３９】
次に、復号処理に影響する要因について説明する。ＮＡＮＤメモリでは、隣接するメモリセル（隣接セル）との閾値電圧の差分に応じて、メモリセルに蓄積された電荷が隣接セルへと移動する現象（電荷の横抜けと呼ぶ）が知られている。電荷の横抜けは、ビット化けの原因となりうる。以下では、隣接セルは、対象セルが接続されるワード線の上下に隣接するワード線に接続される複数のメモリセルのうち、対象セルと同じビット線に接続されるメモリセルのことを指す。
【００４０】
上記のように、閾値電圧の大きさを表す情報はステートと呼ばれる。図５は、ステートの一例を示す図である。図５は、ＴＬＣが記憶する３ビットのデータ値に対応する８個のステート（Ｅｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ）の例を示す。各ステートは、例えばステートＣ以下であるかＤ以上であるかにより、小さいステート（ステート小）、および、大きいステート（ステート大）に分けられる。
【００４１】
例えば、復号の対象となる対象セル（第２メモリセル）の隣接セル（第１メモリセル、第３メモリセル）が“ステート大”であった場合、隣接セルから電荷が流れ込むことにより、対象セルの閾値電圧は上がる可能性がある。逆に、隣接セルが“ステート小”であった場合、対象セルから隣接セルへ電荷が流れ出すことにより、対象セルの閾値電圧は下がる可能性がある。このように、隣接セルのステートにより対象セルの閾値電圧が変化する可能性がある。
【００４２】
隣接セル間で発生する電荷の横抜け対策として、隣接セルの閾値電圧の大小によって対象セルごとに読み出し電圧を変化させる技術がある。例えば隣接セルの閾値電圧が大きければ読み出し電圧を基準読み出し電圧よりも高くし、隣接セルの閾値電圧が小さければ読み出し電圧を基準読み出し電圧よりも低くする。このような技術では、復号の性能を向上させるため読み出し回数を増やす場合があるが、この場合、処理時間が増大する。
【００４３】
本実施形態では、シフトリードで求められる読み出し結果を演算（ＸＮＯＲなど）したソフトビットではなく、シフトリードの読み出し結果自体を用いて、ＬＬＲを求める。また、本実施形態では、隣接セルのステートの大小を示す値もＬＬＲを求めることに用いる。ステートの大小を示す値は、隣接セルに対してシングルステートリードを行うことにより得ることができる。ステートの大小を示す値は、上記のようにステートが大きいか小さいか（ステート大、または、ステート小）を示す２値の情報に限られない。例えば、各ステートのいずれであるかを示す情報（図５の例では８値の情報）であってもよい。
【００４４】
図６は、符号化／復号部１４の機能構成の一例を示すブロック図である。図６に示すように、符号化／復号部１４は、符号化部１０１と、尤度算出部１０２と、復号部１０３と、を備えている。
【００４５】
符号化部１０１は、ユーザデータを符号化して符号語を生成する。尤度算出部１０２は、各メモリセルに記憶されたビットのＬＬＲを計算する。復号部１０３は、ＬＬＲを用いて符号語を復号（ソフトビット復号）する。復号部１０３は、さらにハードビット復号を実行する機能を備えていてもよい。以下、書き込み処理および読み出し処理に分けて、各部の機能をさらに説明する。
【００４６】
まず不揮発性メモリ２０に対する書き込み処理について説明する。制御部１１は、不揮発性メモリ２０への書き込み時に、ユーザデータの符号化を符号化部１０１に指示する。その際、制御部１１は、不揮発性メモリ２０における符号語の記憶場所（記憶アドレス）を決定し、決定した記憶場所もメモリＩ／Ｆ１３へ指示する。
【００４７】
符号化部１０１は、制御部１１からの指示に基づいて、データバッファ１２上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、ＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号およびＲＳ（Reed-Solomon）符号のような代数的符号を用いた符号化方式、並びに、ＬＤＰＣ（Low-Density  Parity-Check）符号のような疎グラフに基づく符号を用いた符号化方式を採用することができる。メモリＩ／Ｆ１３は、制御部１１から指示された不揮発性メモリ２０上の記憶場所へ符号語を記憶する制御を行う。
【００４８】
次に不揮発性メモリ２０からの読み出し処理について説明する。制御部１１は、不揮発性メモリ２０からの読み出し時に、不揮発性メモリ２０上のアドレスを指定してメモリＩ／Ｆ１３へ読み出しを指示する。メモリＩ／Ｆ１３は、制御部１１から入力されるアドレスに基づき、読み出し処理の命令を不揮発性メモリ２０に入力する。
【００４９】
不揮発性メモリ２０内のメモリセルの各々は、メモリＩ／Ｆ１３から入力される命令に従って読み出し処理を実行し、処理結果であるリードデータを返す。読み出し処理の命令（コマンド）は、ハードビットリード、ソフトビットリード、シフトリード、および、シングルステートリードのうち、いずれを実行するかを示す情報を含む。各メモリセルは、この情報に応じて、ハードビットリード、ソフトビットリード、シフトリード、および、シングルステートリードのいずれかを実行する。
【００５０】
例えばハードビットリードが指定された場合、メモリセルは、基準読み出し電圧（第２読み出し電圧）で読み出した結果（ＨＢ）をリードデータとして返す。メモリセルは、例えば、読み出すページに対して定められた複数の基準読み出し電圧を用いた複数回のシングルステートリードを実行し、複数回のシングルステートリードの読み出し結果により特定されるリードデータ（ハードビット）を返す。
【００５１】
ソフトビットリードが指定された場合、メモリセルは、読み出すページに対して定められた複数の基準読み出し電圧から指定されたシフト量（上記ΔＲに相当）だけ変化させた読み出し電圧（第４読み出し電圧）を用いて読み出した結果を、例えば内部バッファに記憶する。各メモリセルは、内部バッファに記憶した複数の読み出し結果を用いて演算（ＸＮＯＲなど）を行い、演算結果（ＳＢ）をリードデータとして返す。シフト量は、ソフトビットリードを指定する命令で指定されてもよいし、この命令と異なる命令で指定されてもよい。
【００５２】
シフトリードが指定された場合、メモリセルは、基準読み出し電圧から指定されたシフト量（上記ΔＲに相当）だけ変化させた読み出し電圧を用いて読み出した結果をリードデータとして返す。メモリセルは、例えば、読み出すページに対して定められた複数の基準読み出し電圧をシフト量だけ変化させた読み出し電圧を用いた複数回のシングルステートリードを実行し、複数回のシングルステートリードの読み出し結果により特定されるリードデータ（ハードビット）を返す。シフト量は、シフトリードを指定する命令で指定されてもよいし、この命令と異なる命令で指定されてもよい。
【００５３】
シングルステートリードが指定された場合、メモリセルは、指定された読み出し電圧を用いて読み出した結果をリードデータとして返す。使用する読み出し電圧は、シングルステートリードの読み出しを指定する命令で指定されてもよいし、この命令と異なる命令で指定されてもよい。
【００５４】
メモリＩ／Ｆ１３は、読み出し処理の命令に対して不揮発性メモリ２０が返したリードデータを、尤度算出部１０２へ出力する。
【００５５】
尤度算出部１０２は、メモリＩ／Ｆ１３から入力されるリードデータに基づいて、各メモリセルに記憶されたビットのＬＬＲを算出する。尤度算出部１０２は、算出したＬＬＲを復号部１０３へ出力する。
【００５６】
本実施形態では、尤度算出部１０２は、対象セルのハードビットリードの読み出し結果（第１データ）、対象セルのシフトリードの読み出し結果（第２データ）、および、隣接セルのステート（第３データ、第４データ）を用いて、ＬＬＲを算出する。
【００５７】
隣接セルのステートは、例えば、メモリセルの閾値電圧が大きいか小さいかを判別する境界となる閾値電圧に相当する読み出し電圧（第１読み出し電圧、第３読み出し電圧）を用いたシングルステートリードにより決定される。図５の例では、ステートＣおよびＤの境界に相当する読み出し電圧がシングルステートリードに用いられる。
【００５８】
尤度算出部１０２は、例えば、対象セルのハードビットリードの読み出し結果、対象セルのシフトリードの読み出し結果、および、隣接セルのステートに応じたＬＬＲの値を定めたＬＬＲテーブルにより、ＬＬＲの値を算出する。
【００５９】
図７は、ＬＬＲテーブルの一例を示す図である。図７は、ハードビットリードの読み出し結果（ＨＢ）、左右のシフトリードの読み出し結果（左シフト、右シフト）、および、隣接セルのステート（ステート（上）、ステート（下））の５ビットの組み合わせ（３２通り）に応じて、ＬＬＲの値を定めたＬＬＲテーブルの例である。以下では、ＬＬＲの値を定めるための情報（図７の例では５ビットの値）を、ＬＬＲテーブルの入力値という場合がある。
【００６０】
尤度の算出方法は、ＬＬＲテーブルを用いた方法に限られるものではない。例えば、尤度算出部１０２は、入力値を入力してＬＬＲの値を算出する演算処理により、ＬＬＲを算出してもよい。
【００６１】
復号部１０３は、尤度算出部１０２から入力されたＬＬＲを用いてソフトビット復号による誤り訂正処理を行い、読み出し対象のユーザデータを復元する。復元されたユーザデータは、例えば制御部１１へ入力され、ホストＩ／Ｆ１５を介してホスト３０へ送信される。
【００６２】
次に、このように構成された第１の実施形態にかかるメモリシステム１による復号処理について説明する。図８は、第１の実施形態における復号処理の一例を示すフローチャートである。
【００６３】
制御部１１は、対象セルのハードビットリードを実行する（ステップＳ１０１）。制御部１１は、対象セルのシフトリードを実行する（ステップＳ１０２）。制御部１１は、対象セルに隣接する隣接セルのステートを取得する（ステップＳ１０３）。制御部１１は、例えば、隣接セルに対して予め定められた読み出し電圧を用いたシングルステートリードの実行を指示する。
【００６４】
尤度算出部１０２は、ステップＳ１０１〜ステップＳ１０３までの各処理によるリードデータをメモリＩ／Ｆ１３から取得する。尤度算出部１０２は、取得したリードデータを用いて、ＬＬＲを算出する（ステップＳ１０４）。例えば尤度算出部１０２は、対象セルのハードビットリードの読み出し結果、左右のシフトリードの読み出し結果（左シフト、右シフト）、および、隣接セルのステート（ステート（上）、ステート（下））、に対応するＬＬＲを、図７に示すようなＬＬＲテーブルを用いて算出する。
【００６５】
復号部１０３は、算出されたＬＬＲを用いたソフトビット復号を実行する（ステップＳ１０５）。
【００６６】
次に、算出されるＬＬＲの具体例について説明する。図９は、ＱＬＣにおけるステートとデータコーディングとの対応の一例を示す図である。ＱＬＣの場合、Ｓ０〜Ｓ１５の１６個のステートそれぞれに４ビットの値が割り当てられる。また、各ステートに割り当てられる４ビットのうち同じ桁のビットの集合が、４ページのうちいずれかのページに対応づけられる。図９は、４ページに含まれる、あるページＸに対応づけられるデータの例を示している。
【００６７】
図１０は、図９のようなデータコーディングを有するＱＬＣでのシフトリードの概念を説明する図である。ＨＢは、ハードビットリードによる読み出し結果を表す。左シフトおよび右シフトは、それぞれ、ハードビットリードで用いた基準読み出し電圧を左右にΔＲずらした読み出し電圧を用いたシフトリードによる読み出し結果を表す。
【００６８】
図９のようなデータコーディングの場合、各ステートのビット値は、Ｓ０からＳ１に向けて、“１”（Ｓ０）、“０”（Ｓ１〜Ｓ３）、“１”（Ｓ４〜Ｓ５）、“０”（Ｓ６〜Ｓ１０）、“１”（Ｓ１１〜Ｓ１５）のように変化する。図１０は、このように変化するビット値を模式的に表している。
【００６９】
図９の例では、ビット値が変化する４か所の読み出し位置Ｐ１〜Ｐ４で読み出し処理が行われる。図１０の枠８０１および８０２は、それぞれ図９のＰ２およびＰ４に相当する読み出し位置を示している。これらの読み出し位置では、ＨＢ、左シフト、および、右シフトの値は、例えばそれぞれ“０”、“１”、および、“０”となる。
【００７０】
隣接セルのステートの大小を示す値は、例えば、ステートがＳ７以下のとき“１”、Ｓ８以上のとき“０”とすることができる。隣接セルのステートが共に“０”（Ｓ８以上）であったとすると、枠８０１、８０２の読み出し位置での、図７に示す５ビットの値は“０１０００”となる。隣接セルのステートが“０”（ステート大）であるため、対象セルの電圧は上昇傾向となる。従って、左シフトの値“１”、右シフトの値“０”のうち、右シフトの値“０”が“１”にビット化けする可能性が高くなる。そのため、入力値“０１０００”に対応するＬＬＲの値は−１２７に近い値とする。図７の例では、ＬＬＲ＝“−５０”としている。
【００７１】
隣接セルのステートが共に“１”（Ｓ７以下）であったとすると、枠８０１、８０２の読み出し位置での、図７に示す５ビットの値は“０１０１１”となる。隣接セルのステートが“１”（ステート小）であるため、対象セルの電圧は下降傾向となる。従って、左シフトの値“１”、右シフトの値“０”のうち、左シフトの値“１”が“０”にビット化けする可能性が高くなる。そのため、入力値“０１０１１”に対応するＬＬＲの値は１２７に近い値とする。図７の例では、ＬＬＲ＝“−１０”としている。
【００７２】
このように、本実施形態では、シフトリードの読み出し結果と、隣接セルの影響量（隣接セルのステート）を例えば３２通りのパターンに分けてＬＬＲを算出する。これにより、読み出し回数を増やすことなく、ソフトビット復号の性能を向上させることができる。
【００７３】
（変形例１）
上記例では、左右それぞれ１回のシフトリードを実行した。シフトリードの回数はこれに限られるものではなく、例えば左右にそれぞれ２回以上のシフトリードを実行してもよい。図１１は、左右に２回のシフトリードを実行する場合に用いるＬＬＲテーブルの例を示す図である。尤度算出部１０２は、左右に５ΔＲ（ΔＲの５倍）、左右に３ΔＲ（ΔＲの３倍）の４つのシフト量によるシフトリードで求まる４つの値と、ＨＢと、隣接セルのステートとに応じてＬＬＲを算出する。このように、尤度算出部１０２は、基準読み出し電圧との差が相互に異なる複数のシフト量（第１差分値、第２差分値）を用いたシフトリードによる読み出し結果を用いてＬＬＲを算出してもよい。図１１の例では、１２８通りの場合に対してＬＬＲの値を算出することができる。すなわち、より高精度にＬＬＲを算出することが可能となる。
【００７４】
（変形例２）
ステートの大小を示す値は、上記のようにステートが大きいか小さいか（ステート大、または、ステート小）を示す２値の情報でなくてもよい。例えば、ステート小、ステート中、および、ステート大の３つを区別可能な情報であってもよい。図１２は、ステートの分け方の一例を示す図である。図１２は、ステート小およびステート中を区別するための情報であるステートＳＴ１、および、ステート中およびステート大を区別するための情報であるステートＳＴ２の組み合わせにより、ステート小、ステート中、および、ステート大の３つを区別する例を示す。
【００７５】
図１２の例では、ステートＳＴ１は、ステートＢ以下の場合に“１”となり、ステートＣ以上の場合に“０”となる１ビットの値である。また、ステートＳＴ２は、ステートＤ以下の場合に“１”となり、ステートＥ以上の場合に“０”となる１ビットの値である。ステートＳＴ１およびステートＳＴ２の値は、それぞれ異なる読み出し電圧を用いたシングルステートリードにより求めることができる。これらの２ビットの値により、ステート小、ステート中、および、ステート大のいずれかに相当するか判断可能となる。
【００７６】
図１３は、変形例２で用いられるＬＬＲテーブルの例を示す図である。図１３は、ハードビットリードの読み出し結果（ＨＢ）、左右のシフトリードの読み出し結果（左シフト、右シフト）、隣接セルのステートＳＴ１（ステートＳＴ１（上）、ステートＳＴ１（下））、および、隣接セルのステートＳＴ２（ステートＳＴ２（上）、ステートＳＴ２（下））の７ビットの組み合わせ（１２８通り）に応じて、ＬＬＲの値を定めたＬＬＲテーブルの例である。このようなＬＬＲテーブルを用いることにより、隣接セルからの影響をＬＬＲの算出へより細かく反映することができる。
【００７７】
（変形例３）
隣接セルのうち一方の隣接セルのステートのみを考慮してＬＬＲを算出してもよい。例えばビット線の端部のメモリセルであるため、上のワード線に隣接する隣接セル、または、下のワード線に隣接する隣接セルしか存在しない場合がある。このような場合も、片側に隣接する隣接セルのステートのみを考慮してＬＬＲを算出する。
【００７８】
なお、上記変形例１〜３は、以下の各実施形態にも適用することができる。
【００７９】
（第２の実施形態）
第２の実施形態にかかるメモリシステムは、複数のＬＬＲテーブルを用いて復号を行う。図１４は、第２の実施形態の符号化／復号部１４−２の機能構成の一例を示すブロック図である。なお、符号化／復号部１４−２以外の各部は第１の実施形態の図１と同様であるため説明を省略する。
【００８０】
図１４に示すように、符号化／復号部１４−２は、符号化部１０１と、尤度算出部１０２−２と、復号部１０３−２と、を備えている。
【００８１】
第２の実施形態では、尤度算出部１０２−２および復号部１０３−２の機能が第１の実施形態と異なっている。符号化部１０１は、第１の実施形態にかかる符号化／復号部１４のブロック図である図６と同様であるので、同一符号を付し、ここでの説明は省略する。
【００８２】
尤度算出部１０２−２は、複数のＬＬＲテーブルのうち、選択されたＬＬＲテーブルを用いてＬＬＲを算出する。図１５は、本実施形態で用いる複数のＬＬＲテーブルの例を示す図である。図１５に示すように、ＬＬＲテーブルＴ１、Ｔ２、Ｔ３は、少なくとも一部の入力値に対して、相互に異なるＬＬＲの値が対応づけられる。なお、各ＬＬＲテーブル内でのＬＬＲの大小関係は維持される。複数のＬＬＲテーブルを用いることで、一度データを読み出せば、複数通りのソフトビット復号を実行することができる。
【００８３】
尤度算出部１０２−２は、例えば予め定められた順で複数のＬＬＲテーブルから１つのＬＬＲテーブルを選択し、選択したＬＬＲテーブルを用いてＬＬＲを算出する。算出したＬＬＲによる復号が失敗した場合、尤度算出部１０２−２は、次のＬＬＲテーブルを選択して処理を繰り返す。
【００８４】
ＬＬＲテーブルの選択方法はこれに限られず、どのような選択方法を用いてもよい。例えば尤度算出部１０２−２は、書き込み処理を行ってからの経過時間に応じてＬＬＲテーブルを選択してもよい。経過時間が大きい場合、電荷の抜けが発生する可能性が高くなる。従って、経過時間に応じた閾値電圧の変化を考慮したＬＬＲテーブルを準備しておけば、尤度算出部１０２−２は、経過時間に対応するＬＬＲテーブルを選択することができる。
【００８５】
メモリシステム内の温度の履歴を記憶しておき、尤度算出部１０２−２が、温度の履歴に応じてＬＬＲを選択してもよい。例えば温度が高い状態が続くと、電荷の抜けなどが発生する可能性が高くなる。すなわち、時間が経過することと同等の影響がある。従って、温度に応じた閾値電圧の変化を考慮したＬＬＲテーブルを準備しておけば、尤度算出部１０２−２は、温度の履歴に対応するＬＬＲテーブルを選択することができる。
【００８６】
図１４に戻り、復号部１０３−２は、選択されたＬＬＲテーブルにより算出されたＬＬＲを用いて符号語を復号する。また復号部１０３−２は、復号に失敗した場合、次に選択されたＬＬＲテーブルにより算出されたＬＬＲを用いて符号語をさらに復号する。
【００８７】
次に、このように構成された第２の実施形態にかかるメモリシステムによる復号処理について図１６を用いて説明する。図１６は、第２の実施形態における復号処理の一例を示すフローチャートである。
【００８８】
ステップＳ２０１からステップＳ２０３までは、第１の実施形態の復号処理におけるステップＳ１０１からステップＳ１０３までと同様の処理なので、その説明を省略する。
【００８９】
尤度算出部１０２−２は、複数のＬＬＲテーブルから、１つのＬＬＲテーブルを選択する（ステップＳ２０４）。尤度算出部１０２−２は、リードデータと、選択したＬＬＲテーブルとを用いて、ＬＬＲを算出する（ステップＳ２０５）。復号部１０３−２は、算出されたＬＬＲを用いたソフトビット復号を実行する（ステップＳ２０６）。
【００９０】
復号部１０３−２は、ソフトビット復号が成功したか否かを判定する（ステップＳ２０７）。失敗した場合（ステップＳ２０７：Ｎｏ）、尤度算出部１０２−２は、次のＬＬＲテーブルを選択して処理を繰り返す（ステップＳ２０４）。成功した場合（ステップＳ２０７：Ｙｅｓ）、復号処理は終了する。
【００９１】
尤度算出部１０２−２は、複数のＬＬＲテーブルから選択した２以上のＬＬＲテーブルそれぞれを用いてＬＬＲを並行して算出してもよい。また復号部１０３−２は、並行して算出された２以上のＬＬＲを用いたソフトビット復号を並行して実行してもよい。これにより、復号処理をより高速化することが可能となる。
【００９２】
図１７は、ソフトビット復号を並行して実行する場合の復号部１０３−２の構成例を示す図である。図１４に示すように、メモリシステムは、それぞれソフトビット復号を実行する複数の復号部１０３−２ａ、１０３−２ｂ、１０３−２ｃを備えてもよい。復号部１０３−２ａ、１０３−２ｂ、１０３−２ｃは、それぞれ相互に異なるＬＬＲテーブルを用いて算出されたＬＬＲを用いて符号語を復号する。このような構成により、複数のＬＬＲテーブルから求めたＬＬＲを一度に入力とすることができ、ソフトビット復号の復号結果を一度に得ることができる。
【００９３】
このように、第２の実施形態にかかるメモリシステムでは、複数のＬＬＲテーブルを用いることにより読み出し回数を増やすことなく誤り訂正の精度を上げることができる。
【００９４】
（第３の実施形態）
第３の実施形態にかかるメモリシステムは、隣接セルのステートを用いずにソフトビット復号を実行し、このソフトビット復号が失敗した場合、隣接セルのステートを用いたソフトビット復号を実行する。
【００９５】
図１８は、第３の実施形態の符号化／復号部１４−３の機能構成の一例を示すブロック図である。なお、符号化／復号部１４−３以外の各部は第１の実施形態の図１と同様であるため説明を省略する。
【００９６】
図１８に示すように、符号化／復号部１４−３は、符号化部１０１と、尤度算出部１０２−３と、復号部１０３−３と、を備えている。
【００９７】
第３の実施形態では、尤度算出部１０２−３および復号部１０３−３の機能が第１の実施形態と異なっている。符号化部１０１は、第１の実施形態にかかる符号化／復号部１４のブロック図である図６と同様であるので、同一符号を付し、ここでの説明は省略する。
【００９８】
尤度算出部１０２−３は、まず、隣接セルのステートを用いずにＬＬＲを算出する。尤度算出部１０２−３は、例えば、図７のＬＬＲテーブルからステート（上）およびステート（下）の列を除いたＬＬＲテーブル（以下、簡易ＬＬＲテーブルという）を用いて、ハードビットリードの読み出し結果（ＨＢ）、および、左右のシフトリードの読み出し結果（左シフト、右シフト）に対応するＬＬＲを算出する。このようにして算出したＬＬＲによる復号が失敗した場合、尤度算出部１０２−３は、隣接セルのステートを用いてＬＬＲを算出する。尤度算出部１０２−３は、例えば、図７のＬＬＲテーブルを用いて、５ビットの入力値に対応するＬＬＲを算出する。
【００９９】
復号部１０３−３は、まず、隣接セルのステートを用いずに算出されたＬＬＲを用いてソフトビット復号を実行する。このソフトビット復号に成功した場合は、復号部１０３−３は、復号処理を終了する。このソフトビット復号に失敗した場合、復号部１０３−３は、隣接セルのステートを用いて尤度算出部１０２−３により算出されたＬＬＲを用いてソフトビット復号をさらに実行する。
【０１００】
次に、このように構成された第３の実施形態にかかるメモリシステムによる復号処理について図１９を用いて説明する。図１９は、第３の実施形態における復号処理の一例を示すフローチャートである。
【０１０１】
ステップＳ３０１からステップＳ３０２までは、第１の実施形態の復号処理におけるステップＳ１０１からステップＳ１０２までと同様の処理なので、その説明を省略する。
【０１０２】
尤度算出部１０２−３は、ステップＳ３０１〜ステップＳ３０２までの各処理によるリードデータをメモリＩ／Ｆ１３から取得する。尤度算出部１０２−３は、取得したリードデータを用いて、ＬＬＲを算出する（ステップＳ３０３）。例えば尤度算出部１０２−３は、対象セルのハードビットリードの読み出し結果、および、左右のシフトリードの読み出し結果（左シフト、右シフト）に対応するＬＬＲを、簡易ＬＬＲテーブルを用いて算出する。
【０１０３】
復号部１０３−３は、ステップＳ３０３で算出されたＬＬＲを用いたソフトビット復号を実行する（ステップＳ３０４）。復号部１０３−３は、ソフトビット復号が成功したか否かを判定する（ステップＳ３０５）。成功した場合（ステップＳ３０５：Ｙｅｓ）、復号処理は終了する。
【０１０４】
失敗した場合（ステップＳ３０５：Ｎｏ）、制御部１１は、隣接セルに対して予め定められた読み出し電圧を用いたシングルステートリードの実行を指示し、対象セルに隣接する隣接セルのステートを取得する（ステップＳ３０６）。
【０１０５】
尤度算出部１０２−３は、ステップＳ３０１、ステップＳ３０２によるリードデータに加えて、ステップＳ３０６によるリードデータをメモリＩ／Ｆ１３から取得する。尤度算出部１０２−３は、取得したリードデータと、例えば図７に示すようなＬＬＲテーブルとを用いて、ＬＬＲを算出する（ステップＳ３０７）。復号部１０３−３は、算出されたＬＬＲを用いたソフトビット復号をさらに実行する（ステップＳ３０８）。
【０１０６】
このように、第３の実施形態にかかるメモリシステムでは、隣接セルのステートを用いずにソフトビット復号を実行し、このソフトビット復号に失敗した場合に、隣接セルのステートを用いたソフトビット復号を実行する。これにより、復号処理の処理時間をより短くすることが可能となる。
【０１０７】
（第４の実施形態）
第４の実施形態にかかるメモリシステムは、ハードビット復号と、基準読み出し電圧からずらす値を段階的に変化させた複数回のソフトビット復号と、を順に実行する。このとき、少なくとも一部の処理を並行に実行することで、処理時間をより短くする。例えば、ハードビット復号の実行と並行して、ソフトビット復号を行うときに用いる、シフトリードの読み出し結果および隣接セルのステートを求める処理を実行する。
【０１０８】
図２０は、第４の実施形態に係るメモリシステム１−４の概略構成例を示すブロック図である。第４の実施形態では、制御部１１−４の機能が第１の実施形態と異なっている。他の機能部は、第１の実施形態にかかるメモリシステム１のブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１０９】
制御部１１−４は、ハードビット復号およびソフトビット復号の少なくとも一部の処理を並行して実行するように、読み出し処理を制御する。
【０１１０】
次に、このように構成された第４の実施形態にかかるメモリシステム１−４による復号処理について図２１を用いて説明する。図２１は、第４の実施形態における復号処理の一例を示すフローチャートである。
【０１１１】
制御部１１−４は、対象セルのハードビットリードを実行する（ステップＳ４０１）。復号部１０３は、ハードビットリードの読み出し結果を用いたハードビット復号を実行する（ステップＳ４０２）。
【０１１２】
制御部１１−４は、ハードビットリードの実行を指示した後、復号部１０３によるハードビット復号と並行して、対象セルのシフトリードの実行（ステップＳ４０３）、および、対象セルに隣接する隣接セルのステートの取得を指示する（ステップＳ４０４）。
【０１１３】
尤度算出部１０２は、ステップＳ４０１、Ｓ４０３、および、Ｓ４０４の各処理によるリードデータをメモリＩ／Ｆ１３から取得し、取得したリードデータを用いて、ＬＬＲを算出する（ステップＳ４０５）。復号部１０３は、算出されたＬＬＲを用いたソフトビット復号を実行する（ステップＳ４０６）。
【０１１４】
制御部１１−４は、ステップＳ４０３およびＳ４０４の実行を指示した後、復号部１０３によるソフトビット復号と並行して、さらに、対象セルのシフトリードの実行（ステップＳ４０７）、および、対象セルに隣接する隣接セルのステートの取得を指示する（ステップＳ４０８）。ステップＳ４０７のシフトリードは、ステップＳ４０４のシフトリードとは異なるシフト量で実行される。例えば制御部１１−４は、ステップＳ４０４では図１１で説明した左右に３ΔＲのシフト量によるシフトリードを実行し、ステップＳ４０７のシフトリードでは図１１で説明した５ΔＲのシフト量によるシフトリードを実行する。
【０１１５】
ステップＳ４０８からステップＳ４１０までは、ステップＳ４０４からステップＳ４０６までと同様の処理なので、その説明を省略する。なお、シフトリードを１回のみ実行する場合は、ステップＳ４０７〜ステップＳ４１０は実行する必要はない。また、ステップＳ４０２とステップＳ４０３との間で、ソフトビットリードを実行し、ソフトビットリードにより得られるソフトビットを用いたソフトビット復号を実行してもよい。
【０１１６】
このように、第４の実施形態にかかるメモリシステムでは、復号処理に含まれる各処理のうち一部を並行して実行する。これにより、復号に要する時間をさらに短縮することが可能となる。
【０１１７】
（第５の実施形態）
どのようにデータコーディングするかによって、ビット値が変化する位置が変動する。例えば図９の例では、読み出し位置Ｐ１〜Ｐ４の４か所でビット値が変化する。このうち読み出し位置Ｐ２およびＰ４は、ビット値が“０”から“１”に変化する読み出し位置に相当する。同様に、読み出し位置Ｐ１およびＰ３は、ビット値が“１”から“０”に変化する読み出し位置に相当する。
【０１１８】
上記実施形態では、ビット値が同じように変化する複数の読み出し位置を区別せずに、同じＬＬＲの値を算出するＬＬＲテーブルを用いていた。第５の実施形態では、ビット値が同じように変化する複数の読み出し位置を区別し、各読み出し位置で異なるＬＬＲの値を算出可能とする。
【０１１９】
図２２は、第５の実施形態に係るメモリシステム１−５の概略構成例を示すブロック図である。第５の実施形態では、制御部１１−５および符号化／復号部１４−５の機能が第１の実施形態と異なっている。他の機能部は、第１の実施形態にかかるメモリシステム１のブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１２０】
制御部１１−５は、読み出し位置を区別するための読み出し処理をさらに実行する。図２３は、このときの読み出し処理の読み出し位置を説明するための図である。図２３の例では、制御部１１−５は、読み出し位置Ｐ５に相当する読み出し電圧での読み出し処理を実行する。例えば制御部１１−５は、対象セルに対して、読み出し位置Ｐ５に相当する読み出し電圧（第５読み出し電圧）を用いたシングルステートリードを実行する。このシングルステートリードは、対象セルのステートの大小（対象セルの閾値電圧の大きさ）を判別するためのビットの読み出し処理とも解釈できる。以下では、このシングルステートリードの読み出し結果であるビット（第５データ）を、判別ビットという場合がある。
【０１２１】
図２３の例では、判別ビットにより、同じようにビット値が変化する読み出し位置Ｐ２およびＰ４のいずれかであるかを区別可能となる。また、同じようにビット値が変化する読み出し位置Ｐ１およびＰ３のいずれかであるかを区別可能となる。
【０１２２】
図２４は、第５の実施形態の符号化／復号部１４−５の機能構成の一例を示すブロック図である。図２４に示すように、符号化／復号部１４−５は、符号化部１０１と、尤度算出部１０２−５と、復号部１０３と、を備えている。
【０１２３】
第５の実施形態では、尤度算出部１０２−５の機能が第１の実施形態と異なっている。符号化部１０１および復号部１０３は、第１の実施形態にかかる符号化／復号部１４のブロック図である図６と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１２４】
尤度算出部１０２−５は、対象セルのハードビットリードの読み出し結果、対象セルのシフトリードの読み出し結果、および、隣接セルのステートに加えて、判別ビットを用いて、ＬＬＲを算出する。図２５は、第５の実施形態で用いるＬＬＲテーブルの例を示す図である。図２５に示すように、本実施形態のＬＬＲテーブルは、ＨＢ、左右のシフトリードの読み出し結果、判別ビット、および、隣接セルのステートの６ビットの組み合わせに応じて、ＬＬＲの値を定めている。
【０１２５】
次に、このように構成された第５の実施形態にかかるメモリシステム１−５による復号処理について図２６を用いて説明する。図２６は、第５の実施形態における復号処理の一例を示すフローチャートである。
【０１２６】
ステップＳ５０１からステップＳ５０３までは、第１の実施形態にかかるメモリシステム１におけるステップＳ１０１からステップＳ１０３までと同様の処理なので、その説明を省略する。
【０１２７】
制御部１１−５は、判別ビットを取得する（ステップＳ５０４）。制御部１１−５は、例えば、対象セルに対して、読み出し位置を区別するために定められた読み出し電圧を用いたシングルステートリードの実行を指示する。
【０１２８】
尤度算出部１０２−５は、ステップＳ５０１〜ステップＳ５０４までの各処理によるリードデータをメモリＩ／Ｆ１３から取得する。尤度算出部１０２−５は、取得したリードデータを用いて、ＬＬＲを算出する（ステップＳ５０５）。例えば尤度算出部１０２−５は、対象セルのハードビットリードの読み出し結果、左右のシフトリードの読み出し結果（左シフト、右シフト）、判別ビット、および、隣接セルのステート（ステート（上）、ステート（下））、に対応するＬＬＲを、図２５に示すようなＬＬＲテーブルを用いて算出する。
【０１２９】
復号部１０３は、算出されたＬＬＲを用いたソフトビット復号を実行する（ステップＳ５０６）。
【０１３０】
シフトリードで求められる読み出し結果を演算（ＸＮＯＲなど）したソフトビットを用いてＬＬＲを算出する方法では、本実施形態のように読み出し結果そのものを用いる構成より、不揮発性メモリ２０からメモリコントローラに送信するデータ量を低減することができる。本実施形態によれば、判別ビットを読み出す処理を実行するため、読み出し位置を区別可能となる。すなわち、全ページを読み出す必要がない。このため、全ページを読み出す場合と比較して、復号処理の時間が増大することを抑制可能となる。
【０１３１】
以上説明したとおり、第１から第５の実施形態によれば、復号に要する時間を短縮することが可能となる。
【０１３２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３３】
１、１−４、１−５  メモリシステム
１０  メモリコントローラ
１１、１１−４、１１−５  制御部
１２  データバッファ
１３  メモリＩ／Ｆ
１４、１４−２、１４−３、１４−５  符号化／復号部
１５  ホストＩ／Ｆ
１６  内部バス
２０  不揮発性メモリ
３０  ホスト
１０１  符号化部
１０２、１０２−２、１０２−３、１０２−５  尤度算出部
１０３、１０３−２、１０３−３  復号部
【図１】
2020047312.tif 000003
【図２】
2020047312.tif 000004
【図３】
2020047312.tif 000005
【図４】
2020047312.tif 000006
【図５】
2020047312.tif 000007
【図６】
2020047312.tif 000008
【図７】
2020047312.tif 000009
【図８】
2020047312.tif 000010
【図９】
2020047312.tif 000011
【図１０】
2020047312.tif 000012
【図１１】
2020047312.tif 000013
【図１２】
2020047312.tif 000014
【図１３】
2020047312.tif 000015
【図１４】
2020047312.tif 000016
【図１５】
2020047312.tif 000017
【図１６】
2020047312.tif 000018
【図１７】
2020047312.tif 000019
【図１８】
2020047312.tif 000020
【図１９】
2020047312.tif 000021
【図２０】
2020047312.tif 000022
【図２１】
2020047312.tif 000023
【図２２】
2020047312.tif 000024
【図２３】
2020047312.tif 000025
【図２４】
2020047312.tif 000026
【図２５】
2020047312.tif 000027
【図２６】
2020047312.tif 000028