(57)【要約】【課題】メモリシステムの信頼性を向上させること。【解決手段】実施形態によれば、メモリコントローラ２は、ユーザデータを符号化してパリティを生成するエンコーダ２７１と、ユーザデータを格納する情報部３１とパリティを格納するパリティ部３２とよりなるＥＣＣフレーム３０をランダマイズするランダマイザ２７３および２７４と、ランダマイズされたＥＣＣフレーム３０を不揮発性メモリ３に書き込むプログラムＩ／Ｆ２５１と、前記不揮発性メモリ３に書き込まれたＥＣＣフレーム３０を読み出すリードＩ／Ｆ２５２と、読み出したＥＣＣフレーム３０を対数尤度比の列に変換するＬＬＲ変換器２８１と、対数尤度比の列に変換されたＥＣＣフレーム３０を復号するデコーダ２８３とを備える。【選択図】図３
2018160064.tif 000002
【特許請求の範囲】
【請求項１】
ユーザデータを符号化してパリティを生成するエンコーダと、
乱数を発生する第１の乱数発生器と、
前記ユーザデータを格納する情報部と前記パリティを格納するパリティ部とよりなる符号語を前記第１の乱数発生器が発生した前記乱数を用いてランダマイズするランダマイザと、
前記ランダマイズされた符号語を不揮発性メモリに書き込むプログラムインタフェースと、
前記不揮発性メモリより前記ランダマイズされた符号語を受信語として読み出すリードインタフェースと、
前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて、前記受信語を対数尤度比の列に変換する変換部と、
前記変換部で前記対数尤度比の列に変換された受信語を復号するデコーダと、
を備えるメモリコントローラ。
【請求項２】
前記変換部は、
シンボルの値と乱数値との組み合わせに対して対数尤度比を対応付ける変換テーブルを備え、
前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて前記変換テーブルを参照することで、前記受信語を前記対数尤度比の列に変換する
請求項１に記載のメモリコントローラ。
【請求項３】
前記乱数を生成する第２の乱数発生器をさらに備え、
前記乱数は、擬似乱数であり、
前記第１および第２の乱数発生器は、入力されたシード値に応じて固定的に求まる擬似乱数を発生する疑似乱数発生器であり、
前記第２の乱数発生器には、前記符号語をランダマイズする際に前記第１の乱数発生器に与えたシード値と同一のシード値が与えられ、
前記変換部は、前記第２の乱数発生器が発生した前記乱数の各乱数値と、前記受信語の各シンボルの値との組み合わせに基づいて、前記受信語を前記対数尤度比の列に変換する
請求項１に記載のメモリコントローラ。
【請求項４】
前記ランダマイザは、
前記第１の乱数発生器が発生した前記乱数を用いて前記情報部をランダマイズする第１のランダマイザと、
前記第１の乱数発生器が発生した前記乱数を用いて前記パリティ部をランダマイズする第２のランダマイザと、
を含み、
前記プログラムインタフェースは、前記第１のランダマイザによりランダマイズされた前記情報部と、前記第２のランダマイザによりランダマイズされた前記パリティ部とを連接して前記ランダマイズされた符号語として前記不揮発性メモリに書き込む
請求項１に記載のメモリコントローラ。
【請求項５】
前記変換部は、
シンボルの値と乱数値との組み合わせに対して異なる対数尤度比がそれぞれ対応付けられた複数の前記変換テーブルを備え、
前記複数の変換テーブルのうちから使用する変換テーブルを選択し、前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて前記選択した変換テーブルを参照することで、前記受信語を前記対数尤度比の列に変換する
請求項２に記載のメモリコントローラ。
【請求項６】
前記符号語は、ＬＤＰＣ（Low-Density Parity-Check）符号である請求項１に記載のメモリコントローラ。
【請求項７】
前記第１の乱数発生器は、線形帰還シフトレジスタを含む請求項１に記載のメモリコントローラ。
【請求項８】
前記ランダマイザは、前記符号語の各データ値と前記乱数の各乱数値との排他的論理和を求める排他的論理和回路である請求項１に記載のメモリコントローラ。
【請求項９】
不揮発性メモリと、
請求項１に記載のメモリコントローラと、
を備えるメモリシステム。
【請求項１０】
不揮発性メモリに対するデータの書込み／読出しを制御するメモリコントローラの制御方法であって、
ユーザデータを符号化してパリティを生成し、
乱数を発生し、
前記ユーザデータを格納する情報部と前記パリティを格納するパリティ部とよりなる符号語を前記乱数を用いてランダマイズし、
前記ランダマイズされた符号語を不揮発性メモリに書き込み、
前記不揮発性メモリより前記ランダマイズされた符号語を受信語として読み出し、
前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて、前記受信語を対数尤度比の列に変換し、
前記変換部で前記対数尤度比の列に変換された受信語を復号する
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、メモリコントローラ、メモリシステムおよび制御方法に関する。
【背景技術】
【０００２】
従来、データ値に応じた量の電荷を保持するメモリセルを備える半導体記憶装置が広く知られている。このような半導体記憶装置では、メモリセルに保持された電荷の量に応じたしきい値電圧と予め設定された読み出し電圧との大小関係に基づいて、そのメモリセルが記憶するデータ値が判定される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２１４６１号公報
【特許文献２】特開２００９−１５７８３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、信頼性をより向上することが可能なメモリコントローラ、メモリシステムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリコントローラは、ユーザデータを符号化してパリティを生成するエンコーダと、乱数を発生する第１の乱数発生器と、前記ユーザデータを格納する情報部と前記パリティを格納するパリティ部とよりなる符号語を前記第１の乱数発生器が発生した前記乱数を用いてランダマイズするランダマイザと、前記ランダマイズされた符号語を不揮発性メモリに書き込むプログラムインタフェースと、前記不揮発性メモリより前記ランダマイズされた符号語を受信語として読み出すリードインタフェースと、前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて、前記受信語を対数尤度比の列に変換する変換部と、前記変換部で前記対数尤度比の列に変換された受信語を復号するデコーダと、を備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態にかかるメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、第１の実施形態にかかるＥＣＣフレームの一例を示す図である。
【図３】図３は、第１の実施形態にかかるメモリシステムにおけるＥＣＣ部およびその周辺のより詳細な構成例を示すブロック図である。
【図４】図４は、第１の実施形態にかかる符号化処理の一例を示すフローチャートである。
【図５】図５は、第１の実施形態にかかる復号処理の一例を示すフローチャートである。
【図６】図６は、第１の実施形態にかかるＬＬＲ変換器に設けられたＬＬＲ変換テーブルの一例を示す図である。
【図７】図７は、第２の実施形態にかかるハードビットリードとソフトビットリードとを説明するための図である。
【図８】図８に、第２の実施形態にかかるＬＬＲ変換テーブルの一例を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、メモリシステムおよび制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
一般にＮＡＮＤセル型フラッシュメモリ（以下、ＮＡＮＤメモリという）では、メモリセルを構成する酸化膜などの素子デバイスが使用により経年劣化するため、読出し時にビットエラーが生じる。そこで通常では、ＮＡＮＤセル型フラッシュメモリに対する信頼性を高めるために、誤り訂正符号が用いられる。
【０００９】
誤り訂正符号の訂正処理（以後、訂正処理を復号と呼ぶ）は、復号時に使用する情報によって大きく２つに分類される。本説明では、その１つを硬判定復号と呼び、他の１つを軟判定復号と呼ぶ。硬判定復号では復号器への入力データがバイナリデータであるのに対し、軟判定復号ではビットの“０”らしさと“１”らしさとの比を表す尤度値が復号器に入力される。
【００１０】
尤度値としては、一般に次式（１）で示される対数尤度比（Log Likelihood Ratio：ＬＬＲ）が用いられる。式（１）において、ｘｉはｉ番目の書込みビットを表し、ｙｉはｉ番目の読出しビットを表す。また、Ｌｉはｉ番目のビットに対する対数尤度比である。Ｐ（ｘ｜ｙ）は条件付き確率であり、たとえばＮＡＮＤセル型フラッシュメモリの閾値電圧分布や誤り率によって計算することができる値である。
【数１】
2018160064.tif 000003
【００１１】
このようなＮＡＮＤメモリの制御システムでは、ＮＡＮＤフラッシュメモリの信頼性を高めることを目的として、書込み時に書込み対象のデータ（以下、ライトデータという）のランダマイズを行なう場合がある。ライトデータのランダマイズでは、たとえば線形帰還シフトレジスタ（Linear Feedback Shift Register：ＬＦＳＲ）などの擬似乱数発生器から出力されたランダムデータとライトデータとの排他的論理和（ＥＸＯＲ）が実行される。読出し時には、ライトデータに対して施されたランダマイズが書込み時と同じランダムデータを使用して解除される。
【００１２】
ただし、ＬＤＰＣ（Low-Density Parity-Check：ＬＤＰＣ）符号などの軟判定方式の誤り訂正機能を搭載するシステムに対しては、ライトデータ全体をランダマイズする構成を組み込むことが困難であった。これは、ランダマイズされたデータを誤り訂正するには誤り訂正前にランダマイズを解除する必要があるが、ランダマイズを解除することによって、ＮＡＮＤメモリ内でのデータの配列とランダマイズが解除された状態のデータの配列とが一致しないこととなり、その結果、軟判定方式の誤り訂正において意図した誤り訂正が行なわれない可能性が存在するためである。
【００１３】
このような課題に対しては、たとえばライトデータを構成する情報部とパリティ部とのうち、パリティ部をランダマイズの対象外として情報部のみをランダマイズした状態でＮＡＮＤメモリに書き込む方法が考えられる。この方法では、読み出したデータ（以下、リードデータという）の誤り訂正後に情報部のランダマイズを解除すればよい。ただし、このような方法では、パリティ部がランダマイズの対象外とされているため、理想的なランダマイズ性能を得ることができず、それにより、信頼性が低下してしまう可能性が存在する。
【００１４】
そこで以下の実施形態では、情報部に加えてパリティ部もランダマイズの対象とすることで、信頼性をより向上することが可能なメモリコントローラ、メモリシステムおよび制御方法について、その具体例を挙げて説明する。
【００１５】
（第１の実施形態）
図１は、第１の実施形態にかかるメモリシステムの概略構成例を示すブロック図である。図１に示すように、本実施形態にかかるメモリシステム１は、メモリコントローラ２と不揮発性メモリ３を備える。メモリシステム１は、ホスト４と接続可能であり、図１ではホスト４と接続された状態が示されている。ホスト４は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【００１６】
不揮発性メモリ３は、データを不揮発に記憶する不揮発性メモリである。本実施形態では、不揮発性メモリ３としてＮＡＮＤメモリを例示する。ただし、ＮＡＮＤメモリに限られず、種々の不揮発性メモリを採用することが可能である。不揮発性メモリ３への書込み（プログラム）および読出しは、ページと呼ばれるデータ単位で実施される。また、不揮発性メモリ３に対する消去は、複数のページを１つの単位としたブロック単位で実施される。不揮発性メモリ３は、互いに離間して交差する複数のワード線および複数のビット線と、ワード線とビット線との各交差部分に設けられた複数のメモリセルとを備える。
【００１７】
本説明では、１つのワード線に接続された複数のメモリセルをメモリセルグループと定義する。各メモリセルがシングルレベルセル（ＳＬＣ）である場合は、メモリセルグループは１ページに対応する。各メモリセルがマルチレベルセル（ＭＬＣ）である場合は、メモリセルグループは複数ページに対応する。例えば、それぞれが２ビットの情報を記憶できるＭＬＣを用いる場合、メモリセルグループは２ページに対応する。また、それぞれが３ビットのデータを記憶できるＭＬＣ（これをトリプルレベルセル（ＴＬＣ）ともいう）を用いる場合、メモリセルグループは３ページに対応する。
【００１８】
メモリコントローラ２は、ホスト４からの書込み要求に従って不揮発性メモリ３への書込みを制御する。また、メモリコントローラ２は、ホスト４からの読出し要求に従って不揮発性メモリ３からの読出しを制御する。メモリコントローラ２は、ホストインタフェース（Ｉ／Ｆ）２１、メモリインタフェース（Ｉ／Ｆ）２５、制御部２３およびＥＣＣ（Error Check and Correct）部（符号処理部）２６およびバッファメモリ２２を備える。ホストＩ／Ｆ２１、メモリＩ／Ｆ２５、制御部２３、ＲＡＭ２４、バッファメモリ２２およびＥＣＣ部２６は、内部バス２０を介して相互に接続される。
【００１９】
ホストＩ／Ｆ２１は、ホスト４から受信した書込み要求および読出し要求やユーザデータなどを内部バス２０に出力する。また、ホストＩ／Ｆ２１は、不揮発性メモリ３から読み出されて復元されたユーザデータや制御部２３からの応答などをホスト４へ送信する。
【００２０】
メモリＩ／Ｆ２５は、制御部２３の指示に基づいて、データ等を不揮発性メモリ３へ書き込む書込み処理および不揮発性メモリ３からデータ等を読み出す読出し処理を実行する。
【００２１】
ＥＣＣ部２６は、ユーザデータを符号化することで誤り訂正用のパリティを生成するとともに、符号化されたユーザデータ（以下、情報部という）と符号化されたパリティ（以下、パリティ部という）とよりなる符号語を生成する。ここで、本実施形態においてＥＣＣ部２６が生成する符号語は、乱数または擬似乱数を用いてランダマイズされている。また、ＥＣＣ部２６は、不揮発性メモリ３から読み出された符号語（受信語）を復号してユーザデータを復元する。
【００２２】
本説明では、符号語を構成する所定サイズのデータをＥＣＣ（Error Correcting Codes）フレームとよぶ。図２は、本実施形態にかかるＥＣＣフレームの一例を示す図である。図２に示すように、ＥＣＣフレーム３０は、ユーザデータの一部または全部を格納する情報部３１と、この情報部３１内のデータを誤り訂正するためのパリティを格納するパリティ部３２とから構成される。なお、上述したように、本実施形態における符号語がランダマイズされていることから、情報部３１に格納されているデータおよびパリティ部３２に格納されているパリティもそれぞれランダマイズされている。
【００２３】
１つのＥＣＣフレーム３０は、不揮発性メモリ３の１ページまたは複数ページに格納される。本実施形態において、ＥＣＣ部２６の符号化方式には、たとえばＬＤＰＣ符号化方式が採用される。ただし、符号化方式は、ＬＤＰＣ符号化方式に限定されず、ＬＤＰＣ符号のような、尤度情報を用いて復号を行うことが可能な方式であれば、種々の符号化方式を採用することができる。
【００２４】
制御部２３は、メモリシステム１を統括的に制御する。制御部２３は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）等で構成される。制御部２３は、ホスト４からホストＩ／Ｆ２１経由でコマンドが入力されると、そのコマンドに従った制御を行う。例えば、制御部２３は、ホスト４からの書込み要求が入力された場合、書込み対象のユーザデータの符号化を符号化部２７（図３参照）へ指示するとともに、符号化部２７により生成された符号語の不揮発性メモリ３への書き込みをメモリＩ／Ｆ２５へ指示する。一方、制御部２３は、ホスト４からの読出し要求が入力された場合、不揮発性メモリ３からの符号語の読み出しをメモリＩ／Ｆ２５へ指示するとともに、不揮発性メモリ３から読み出された符号語の復号を復号部２８（図３参照）へ指示する。制御部２３は、ホスト４からの書込み／読出しの対象とされたユーザデータ（符号語）の不揮発性メモリ３上の格納領域（不揮発性メモリ３上の物理アドレス）を、たとえばアドレス変換テーブル等を用いて管理する。
【００２５】
ＲＡＭ（Random Access Memory）２４は、例えばＤＲＡＭ（Dynamic RAM）等の半導体メモリであり、ＣＰＵ２３が処理を実行する際のワーキングメモリとして使用される。ＲＡＭ２４には、ＮＡＮＤメモリ１０を管理するためのファームウェアやアドレス変換テーブルなどの各種管理テーブル等が必要に応じてロードされる。
【００２６】
バッファメモリ２２は、ユーザデータ、ライトデータ、リードデータ等を一時的に保持するメモリ領域として機能する。このバッファメモリ２２は、たとえばＤＲＡＭ（ＳＤＲＡＭ（Synchronous DRAM）を含む）やＳＲＡＭ（Static Random Access Memory）等によって構成することができる。
【００２７】
なお、図１では、メモリコントローラ２がＥＣＣ部２６とメモリＩ／Ｆ２５を別々に備える構成を例示したが、この構成に限定されるものではない。たとえば、ＥＣＣ部２６がメモリＩ／Ｆ２５に内蔵されていてもよい。その場合、ＥＣＣ部２６とメモリＩ／Ｆ２５に対する符号化および書込みの指示／読出しおよび復号の指示は、単一の指示（たとえば書込み指示／読出し指示）にまとめられてもよい。
【００２８】
つづいて、図１に示すＥＣＣ部２６のより詳細な構成および動作について、図面を用いて説明する。図３は、本実施形態にかかるメモリシステムにおけるＥＣＣ部およびその周辺のより詳細な構成例を示すブロック図である。また、図４は、本実施形態にかかる符号化処理の一例を示すフローチャートであり、図５は、本実施形態にかかる復号処理の一例を示すフローチャートである。
【００２９】
図３に示すように、ＥＣＣ部２６は、符号化部２７と、復号部２８とを備える。符号化部２７は、エンコーダ２７１と、乱数発生器２７２と、２つのランダマイザ２７３および２７４とを備える。エンコーダ２７１は、入力されたユーザデータを符号化することで、誤り訂正用のパリティを生成する。乱数発生器２７２は、たとえばＬＦＳＲなどで構成された擬似乱数生成器であり、入力されたシード値に応じた擬似乱数列を出力する。ランダマイザ２７３および２７４は、それぞれ排他的論理和を求めるＥＸＯＲ回路よりなり、それぞれ入力された２つの値の排他的論理和をとり、その結果を出力する。
【００３０】
一方、復号部２８は、ＬＬＲ変換器２８１と、乱数発生器２８２と、デコーダ２８３とを備える。乱数発生器２８２は、符号化部２７の乱数発生器２７２と同様に、たとえばＬＦＳＲなどで構成された擬似乱数生成器であり、入力されたシード値に応じた擬似乱数列を出力する。なお、復号部２８内の乱数発生器２８２の代わりに、符号化部２７内の乱数発生器２７２が用いられてもよい。ＬＬＲ変換器２８１は、不揮発性メモリ３から読み出されたリードデータの個々のデータ値（シンボル値）と乱数発生器２８２から入力された擬似乱数列の個々の乱数値との組合せに基づいて、符号語であるＥＣＣフレーム３０の各シンボルのＬＬＲを求める。デコーダ２８３は、ＬＬＲ変換器２８１でＬＬＲ列に変換された符号語を復号する。デコーダ２８３による復号手法には、限界距離復号や制限繰り返し復号など、種々の復号手法を用いることが可能である。
【００３１】
なお、本説明において、シード値とは、擬似乱数列を生成する乱数発生器２７２／２８２の初期状態を設定するための値である。乱数発生器２７２／２８２は、同一のシードが与えられることで同じ擬似乱数を出力することが可能である。また、シードテーブルとは、乱数発生器２７２／２８２に与えるシード値と、シードを特定するためのインデックスとを対応付けるテーブルである。このシードテーブルは、たとえばメモリシステム１の起動時にＲＡＭ２４またはバッファメモリ２２にロードされ、必要に応じて制御部２３に参照される。
【００３２】
つぎに、符号化部２７が実行する符号化処理を、図３および図４を用いて詳細に説明する。なお、図４では、制御部２３の動作に着目する。
【００３３】
図４に示すように、本実施形態にかかる符号化処理では、まず、制御部２３は、ホスト４から受信した書込み要求を解析し、この要求に含まれる論理アドレスに対応付けられた物理アドレスをたとえばアドレス変換テーブルから特定する（ステップ１０１）。この物理アドレスは、たとえば書込み対象のユーザデータの不揮発性メモリ３における格納先となるページの先頭アドレス等であってよい。
【００３４】
つぎに制御部２３は、不図示のシードテーブルから擬似乱数の生成に使用するシード値を１つ選択する（ステップＳ１０２）。つづいて制御部２３は、同一のユーザデータに対する書込みおよび読出しにおいて、書込み時のランダマイズに使用した擬似乱数列と同じ擬似乱数列が読出し時のランダマイズ用に生成されるように、書込み時に使用したシード値を特定するためのインデックスを、たとえば書込み要求に含まれる論理アドレスまたはステップＳ１０１で特定した物理アドレスと対応付けてＲＡＭ２４またはバッファメモリ２２内の所定の領域に保持しておく（ステップＳ１０３）。
【００３５】
つぎに制御部２３は、ＥＣＣ部２６にユーザデータの符号化を指示するとともに、この符号化により生成されたＥＣＣフレーム３０の不揮発性メモリ３への書込みをメモリＩ／Ｆ２５に指示し（ステップＳ１０４）、その後、本動作を終了する。なお、ステップＳ１０４では、制御部２３は、バッファメモリ２２に格納されている書込み対象のユーザデータの一部または全部を符号化部２７に転送するとともに、ステップＳ１０２で選択したシード値を符号化部２７に入力する。
【００３６】
符号化部２７に転送されたユーザデータは、図３に示すように、エンコーダ２７１とランダマイザ２７３とにそれぞれ入力され、また、符号化部２７に入力されたシード値は、乱数発生器２７２に入力される。エンコーダ２７１は、入力されたユーザデータを符号化することでパリティを生成し、生成したパリティを別のランダマイザ２７４に入力する。一方、乱数発生器２７２は、入力されたシード値に基づいてこのシード値から固定的に求められる擬似乱数列を生成し、生成した擬似乱数列を２つのランダマイザ２７３および２７４それぞれに入力する。
【００３７】
ユーザデータおよび擬似乱数列が入力されたランダマイザ２７３は、ユーザデータの個々のビット値（以下、単にデータという）と擬似乱数列の個々の乱数値との排他的論理和を順次演算する。これにより、ユーザデータがランダマイズされる。また、ランダマイザ２７３は、排他的論理和の結果として得られたデータをＥＣＣフレーム３０の情報部３１として出力する。
【００３８】
一方、パリティおよび擬似乱数が入力されたランダマイザ２７４は、パリティの個々のビット値と擬似乱数列の個々の乱数値との排他的論理和を順次演算することで、パリティをランダマイズする。また、ランダマイザ２７４は、排他的論理和の結果として得られたデータをＥＣＣフレーム３０のパリティ部３２として出力する。
【００３９】
ランダマイザ２７３および２７４から出力された情報部３１とパリティ部３２とは、メモリＩ／Ｆ２５におけるプログラムインタフェース（Ｉ／Ｆ）２５１に入力される。プログラムＩ／Ｆ２５１は、入力された情報部３１とパリティ部３２とを連接し、これにより得られたＥＣＣフレーム３０（図２参照）を不揮発性メモリ３の指定された格納領域（物理アドレスにより指定されるページ）に書き込む。
【００４０】
つづいて、復号部２８による復号処理を、図５、図６および図３を用いて詳細に説明する。なお、図５では、制御部２３の動作に着目する。
【００４１】
図５に示すように、本実施形態にかかる復号処理では、まず、制御部２３は、ホスト４から受信した読出し要求を解析し、この要求に含まれる論理アドレスに対応付けられた物理アドレスをたとえばアドレス変換テーブルから特定する（ステップＳ１１１）。
【００４２】
つぎに制御部２３は、たとえばＲＡＭ２４またはバッファメモリ２２内の所定の領域に物理アドレス（または論理アドレス）と対応付けて保持されたインデックスを特定し（ステップＳ１１２）、この特定したインデックスに対応付けられたシード値をシードテーブルから取得する（ステップＳ１１３）。
【００４３】
つぎに制御部２３は、メモリＩ／Ｆ２５に目的のユーザデータ（ＥＣＣフレーム３０）の読出しを指示するとともに、読み出されたＥＣＣフレーム３０の復号をＥＣＣ部２６に指示する（ステップＳ１１４）。その際、制御部２３は、ステップＳ１１３で取得したシード値をＥＣＣ部２６に入力する。
【００４４】
ここで図３に示すように、図５のステップＳ１１３で取得されたシード値は、復号部２８における乱数発生器２８２に入力される。このシード値は、図５のステップＳ１１２に示す動作からも明らかなように、読出し対象のユーザデータをランダマイズする際に使用したシード値と同じシード値である。そのため、乱数発生器２８２からは、読出し対象のユーザデータのランダマイズに使用した擬似乱数列と同じ擬似乱数列が出力される。
【００４５】
乱数発生器２８２によって生成された擬似乱数列は、ＬＬＲ変換器２８１に入力される。ＬＬＲ変換器２８１には、メモリＩ／Ｆ２５のリードＩ／Ｆ２５２によって不揮発性メモリ３から読み出されたＥＣＣフレーム３０も入力される。ここで、図６に示すように、ＬＬＲ変換器２８１には、ＥＣＣフレーム３０の各データ値（シンボル値）と擬似乱数列の各乱数値との組合せに対してＬＬＲを対応付けるＬＬＲ変換テーブル２８４が設けられている。ＬＬＲ変換器２８１は、入力されたＥＣＣフレーム３０の個々のデータ値と擬似乱数列の個々の乱数値との組合せに対応付けられたＬＬＲをＬＬＲ変換テーブル２８４から特定し、特定したＬＬＲを順次出力することで、ＥＣＣフレーム３０をＬＬＲ列の符号語に変換する。なお、ＥＣＣフレーム３０に対して施されたランダマイズは、このＬＬＲ変換によって解除される。
【００４６】
ＬＬＲ変換器２８１によってＬＬＲ列に変換された符号語は、デコーダ２８３に入力される。デコーダ２８３は、入力されたＬＬＲ列の符号語に対して軟判定復号を実行し、その結果を制御部２３に返す。たとえば、デコーダ２８３による復号に成功した場合、復号に成功した旨が制御部２３に通知されるとともに、この復号により復元されたユーザデータがバッファメモリ２２内に格納される。一方、復号に失敗した場合、復号に失敗した旨が制御部２３に通知される。
【００４７】
このように、ＥＣＣフレーム３０の個々のデータ値と擬似乱数列の個々の乱数値との組合せからＬＬＲを求める構成とすることで、ＥＣＣフレーム３０のＬＬＲ変換と、ＥＣＣフレーム３０に施されたランダマイズの解除とが同時に行なわれるため、デコーダ２８３による誤り訂正を意図した誤り訂正とすることが可能となる。
【００４８】
図５に戻り説明する。制御部２３は、ＥＣＣ部２６から通知された復号結果に基づいて、復号に成功したか否かを判定し（ステップＳ１１５）、復号に成功していた場合（ステップＳ１１５；ＹＥＳ）、バッファメモリ２２に格納されている復元されたユーザデータをホスト４へ出力し（ステップＳ１１６）、その後、本動作を終了する。一方、復号に失敗していた場合（ステップＳ１１５；ＮＯ）、制御部２３は、リードエラーをホスト４へ返し（ステップＳ１１７）、その後、本動作を終了する。
【００４９】
以上で説明したように、本実施形態によれば、情報部３１に加えてパリティ部３２もランダマイズの対象とすることが可能となるため、信頼性がより向上されたメモリコントローラ、メモリシステムおよび制御方法を実現することが可能となる。
【００５０】
なお、上述した実施形態では、不揮発性メモリ３から読み出されたＥＣＣフレーム３０の各データ値と擬似乱数列の各乱数値との組合せに対してＬＬＲを対応付ける構成を例示したが、このような構成に限定されない。たとえばＥＣＣフレーム３０の各データ値に対応するＬＬＲの絶対値を予め決めておき、乱数値をそのＬＬＲの正負を決定する情報として用いるように構成することも可能である。具体例を挙げると、データ値“１”に対してはＬＬＲの絶対値として“３”を、データ値“０”に対してはＬＬＲの絶対値として“１”をそれぞれ対応付けておき、乱数値が“０”である場合には書込み時にデータ値が反転されていないとしてＬＬＲの絶対値に正（＋）の符号を与え、乱数値が“１”である場合には書込み時にデータ値が反転されているとしてＬＬＲの絶対値に負（−）の符号を与えるように構成することも可能である。
【００５１】
このような構成によっても、ＥＣＣフレーム３０のＬＬＲ変換と、ＥＣＣフレーム３０に施されたランダマイズの解除とが同時に行なわれるため、デコーダ２８３による誤り訂正を意図した誤り訂正とすることが可能となる。
【００５２】
また、本実施形態において、ＬＬＲ変換器２８１が備えるＬＬＲ変換テーブル２８４の個数は１つに限定されない。すなわち、本実施形態におけるＬＬＲ変換器２８１は、データ値と乱数値との組み合わせに対して異なるＬＬＲが対応付けられた複数のＬＬＲ変換テーブルを備えていてもよい。その場合、デコーダ２８３による復号失敗の頻度や不揮発性メモリ３の各ブロックに対する累積読出し回数等に応じて、ＬＬＲ変換器２８１が適宜、使用するＬＬＲ変換テーブルを変更できるように構成されるとよい。
【００５３】
さらに、図３に示す構成では、情報部３１をランダマイズするためのランダマイザ２７３と、パリティ部３２をランダマイズするためのランダマイザ２７４とを別々に設けた場合を例示したが、それぞれのランダマイザ２７３および２７４を共通の１つのランダマイザに置き換えることも可能である。その場合、ランダマイザへの入力を情報部３１とパリティ部３２とのいずれかから選択するセレクタを設ければよい。このような構成により、回路規模を削減することが可能となる。
【００５４】
さらにまた、上述した実施形態では、書込み時と読出し時とで同一のシード値を用いることで同一の擬似乱数を生成したが、このような構成に限定されるものではない。たとえば、書込み時に制御部２３または符号化部２７内の乱数発生器２７２で生成した乱数または擬似乱数をＲＡＭ２４やバッファメモリ２２等に保持しておき、読出し時にこの保持しておいた乱数または擬似乱数を用いるように構成することも可能である。これにより、少なくとも復号部２８内の乱数発生器２８２を省略することができるため、回路規模を削減することが可能となる。
【００５５】
（第２の実施形態）
上述した実施形態では、不揮発性メモリ３内のＥＣＣフレーム３０を硬判定読出し（ハードビットリードともいう）により読み出す場合を例示したが、これに限定されるものではない。そこで第２の実施形態では、不揮発性メモリ３から軟判定読出し（ソフトビットリードともいう）によりＥＣＣフレーム３０が読み出される場合について、例を挙げて説明する。
【００５６】
まず、ハードビットリードとソフトビットリードとについて、それぞれの読出し動作で使用される電圧レベル（以下、リードレベルという）に触れつつ説明する。図７は、実施形態にかかるハードビットリードとソフトビットリードとを説明するための図である。なお、図７では、説明の簡略化のため、メモリセルがＳＬＣである場合を例示するが、ＭＬＣやＴＬＣ等に対しても同様に適用することが可能である。
【００５７】
図７に示すように、１つのメモリセルに１ビットのデータを書き込むモード（以下、ＳＬＣモードという）では、各メモリセルの閾値電圧が低電圧側の分布（これをＥｒ分布という）と高電圧側の分布（これをＡ分布という）とのいずれかに属することとなる。Ｅｒ分布とＡ分布とは、それぞれ閾値電圧の出現頻度（確率）を表すガウス分布であり得る。Ｅｒ分布はたとえばビット値“１”に対応し、Ａ分布はたとえばビット値“０”に対応している。
【００５８】
この２つの分布からできるだけ低いビットエラー率で“１”と“０”とを読み分けるためには、たとえばこの２つの分布の裾が重なることで形成される谷の最底点に相当する電圧にリードレベルを設定する必要がある。そこで図７に示すように、各メモリセルから１ページ分のデータ（１ビット）を読み出すハードビットリードでは、この最底点に相当する電圧付近にリードレベルＶｔｈ＿ＨＢが設定される。
【００５９】
一方、各メモリセルから複数ページ分のデータ（複数ビット）を読み出すソフトビットリードでは、ハードビットリードで用いるリードレベルＶｔｈ＿ＨＢを基準とし、これよりも高い電圧側および／または低い電圧側に１つ以上のリードレベルが設定される。図７に示す例では、リードレベルＶｔｈ＿ＨＢを基準とし、これよりも低い電圧側に所定の刻み幅ΔＲで３つのリードレベルＶｔｈ＿ＳＢ１、Ｖｔｈ＿ＳＢ３およびＶｔｈ＿ＳＢ４が設定され、高い電圧側に所定の刻み幅ΔＲで３つのリードレベルＶｔｈ＿ＳＢ２、Ｖｔｈ＿ＳＢ５およびＶｔｈ＿ＳＢ６が設定されている。
【００６０】
ソフトビットリードでは、まず、リードレベルＶｔｈ＿ＨＢを用いたハードビットリードが実行された後、低い電圧側のリードレベルＶｔｈ＿ＳＢ１を用いた読出し（以下、単一のリードレベルを用いた読出しをシングルレベルリードともいう）と、高い電圧側のリードレベルＶｔｈ＿ＳＢ２を用いたシングルレベルリードとが順次実行され（１回目のソフトビットリード）、その後、さらにリードレベルＶｔｈ＿ＳＢ３〜Ｖｔｈ＿ＳＢ６をそれぞれ用いたシングルレベルリードが順次実行される（２回目のソフトビットリード）。
【００６１】
１回目のソフトビットリードと２回目のソフトビットリードとでは、それぞれのシングルレベルリード（ハードビットリードも含む）で得られたビット値が論理和演算または論理積演算される。それにより、図７に示す例では、ハードビットに加えて、２ページ分（２ビット）のソフトビット（ソフトビット１（ＳＢ１）およびソフトビット２（ＳＢ２））が取得される。
【００６２】
つづいて、本実施形態にかかるメモリシステムについて説明する。本実施形態にかかるメモリシステムは、たとえば第１の実施形態で例示したメモリシステム１（図１〜図６参照）と同様の構成であってよい。ただし、本実施形態では、リードＩ／Ｆ２５２によって不揮発性メモリ３から読み出されるＥＣＣフレーム３０がソフトビットを含んでいる。すなわち、ＥＣＣフレーム３０の個々のシンボル値（データ値）が２ビット以上のデータである。そのため、本実施形態では、ＬＬＲ変換器２８１が備えるＬＬＲ変換テーブル２８４が、ＥＣＣフレーム３０の個々のデータ値（シンボル値）のビット数に対応したテーブル構造のＬＬＲ変換テーブルに置き換えられる。
【００６３】
図８に、本実施形態にかかるＬＬＲ変換テーブルの一例を示す。なお、図８には、ＥＣＣフレーム３０の個々のデータ値のビット数が３ビットである場合のＬＬＲ変換テーブルの一例が示されている。
【００６４】
図８に示すように、本実施形態にかかるＬＬＲ変換テーブルは、３ビットのデータ値それぞれに対して乱数値が組み合わされ、また、３ビットのデータ値と乱数値との組合せそれぞれに対してＬＬＲが対応付けられている。ＬＬＲ変換器２８１は、入力されたＥＣＣフレーム３０の個々の３ビットのデータ値と擬似乱数列の個々の乱数値との組合せに対応付けられたＬＬＲを図８に例示するＬＬＲ変換テーブルから特定し、特定したＬＬＲを順次出力することで、ＥＣＣフレーム３０をＬＬＲ列の符号語に変換する。
【００６５】
以上のような構成によっても、上述した第１の実施形態と同様に、情報部３１に加えてパリティ部３２もランダマイズの対象とすることが可能となるため、信頼性をより向上することが可能となる。また、不揮発性メモリ３に対してソフトビットリードを実行することで、ＥＣＣフレーム３０の各シンボルに関する情報量を増加することが可能となるため、より信頼性の高いメモリシステムを実現することが可能となる。
【００６６】
その他の構成、動作および効果は、上述した第１の実施形態と同様であるため、ここでは詳細な説明を省略する。
【００６７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１…メモリシステム、２…メモリコントローラ、３…不揮発性メモリ、４…ホスト、２１…ホストＩ／Ｆ、２２…バッファメモリ、２３…制御部、２４…ＲＡＭ、２５…メモリＩ／Ｆ、２５１…プログラムＩ／Ｆ、２５２…リードＩ／Ｆ、２６…ＥＣＣ部、２７…符号化部、２７１…エンコーダ、２７２…乱数発生器、２７３，２７４…ランダマイザ、２８…復号部、２８１…ＬＬＲ変換器、２８２…乱数発生器、２８３…デコーダ、２８４…ＬＬＲ変換テーブル、３０…ＥＣＣフレーム、３１…情報部、３２…パリティ部
【図１】
2018160064.tif 000004
【図２】
2018160064.tif 000005
【図３】
2018160064.tif 000006
【図４】
2018160064.tif 000007
【図５】
2018160064.tif 000008
【図６】
2018160064.tif 000009
【図７】
2018160064.tif 000010
【図８】
2018160064.tif 000011