(57)【要約】      （修正有）【課題】ＯＰ率の低減を抑制しつつ訂正効率を向上する。【解決手段】メモリコントローラ１０は、ＮＡＮＤメモリに書き込まれている符号語をハードビット情報、第１ソフトビット情報および第２ソフトビット情報のうちのいずれかとして読み出すメモリＩ／Ｆと、第１ソフトビット情報からＨＳＢ軟判定値の符号語を生成し、第２ソフトビット情報からＦＳＢ軟判定値の符号語を生成する符号語処理部と、ハードビット情報で構成された硬判定値の符号語に硬判定復号を実行する硬判定復号器と、ＨＳＢ軟判定値の符号語に第１の軟判定復号を実行する第１の軟判定復号器とを有するＮＡＤコントローラと、ＦＳＢ軟判定値の符号語に第２の軟判定復号を実行する第２の軟判定復号器とを備える。第１ソフトビット情報は、ハードビット情報のビット数よりも多いビット数の情報を含み、第２ソフトビット情報は、第１ソフトビット情報のビット数よりも多いビット数の情報を含む。【選択図】図１
2018147231.tif 000002
【特許請求の範囲】
【請求項１】
１以上の不揮発性メモリに接続されるメモリコントローラであって、
前記１以上の不揮発性メモリのいずれかに書き込まれている符号語をハードビット情報、第１ソフトビット情報および第２ソフトビット情報のうちのいずれかとして読み出すメモリインタフェースと、
前記第１ソフトビット情報から第１の軟判定値の符号語を生成し、前記第２ソフトビット情報から第２の軟判定値の符号語を生成する符号語処理部と、
前記ハードビット情報で構成された硬判定値の符号語に硬判定復号を実行する第１の復号器と、
前記第１の軟判定値の符号語に第１の軟判定復号を実行する第２の復号器と、
前記第２の軟判定値の符号語に第２の軟判定復号を実行する第３の復号器と、
を備え、
前記第１ソフトビット情報は、前記ハードビット情報のビット数よりも多い第１ビット数の情報を含み、
前記第２ソフトビット情報は、前記第１ビット数よりも多い第２ビット数の情報を含む
メモリコントローラ。
【請求項２】
前記メモリインタフェースが前記１つ以上の不揮発性メモリのいずれかから前記ハードビット情報を読み出すこと、
前記第１の復号器が前記硬判定値の符号語に対して前記硬判定復号を実行すること、前記硬判定復号に失敗したと判断したことに応じて、前記メモリインタフェースが前記不揮発性メモリから前記第１ソフトビット情報を読み出すこと、
前記第２の復号器が前記第１の軟判定値の符号語に対して前記第１の軟判定復号を実行すること、前記第１の軟判定復号に失敗したと判断したことに応じて、前記メモリインタフェースが前記不揮発性メモリから前記第２ソフトビット情報を読み出すこと、および、
前記第３の復号器が前記第２の軟判定値の符号語に対して前記第２の軟判定復号を実行すること、
を指示する制御部をさらに備える請求項１に記載のメモリコントローラ。
【請求項３】
前記第１の復号器は、前記ハードビット情報として読み出された前記硬判定値の符号語にオンザフライで前記硬判定復号を実行し、
前記第２の復号器は、前記第１ソフトビット情報から生成された前記第１の軟判定値の符号語に前記オンザフライで前記第１の軟判定復号を実行する
請求項１に記載のメモリコントローラ。
【請求項４】
それぞれ独立して前記１つ以上の不揮発性メモリのいずれかに接続され得る複数のチャネルをさらに備え、
前記第１の復号器および前記第２の復号器のうち少なくとも１つは、前記複数のチャネルそれぞれに個別に設けられている
請求項１に記載のメモリコントローラ。
【請求項５】
前記第１の軟判定値の前記第１ビット数は、２〜５であり、
前記第２の軟判定値の前記第２ビット数は、６以上である
請求項１に記載のメモリコントローラ。
【請求項６】
前記不揮発性メモリへの書込み対象であるデータをＬＤＰＣ（Low-Density Parity-Check）符号を用いた符号化方式で符号化する符号化器をさらに備え、
前記メモリインタフェースは、前記符号化器で符号化された符号語を前記不揮発性メモリへ出力する
請求項１に記載のメモリコントローラ。
【請求項７】
前記メモリコントローラは、ＳｏＣ（System on Chip）で構築された半導体装置である請求項１に記載のメモリコントローラ。
【請求項８】
１つ以上の不揮発性メモリと、
前記１つ以上の不揮発性メモリに接続されたメモリコントローラと、
を備え、
前記メモリコントローラは、
前記１つ以上の不揮発性メモリのいずれかに書き込まれている符号語をハードビット情報、第１ソフトビット情報および第２ソフトビット情報のうちのいずれかとして読み出すメモリインタフェースと、
前記第１ソフトビット情報から第１の軟判定値の符号語を生成し、前記第２ソフトビット情報から第２の軟判定値の符号語を生成する符号語処理部と、
前記ハードビット情報で構成された硬判定値の符号語に硬判定復号を実行する第１の復号器と、
前記第１の軟判定値の符号語に第１の軟判定復号を実行する第２の復号器と、
前記第２の軟判定値の符号語に第２の軟判定復号を実行する第３の復号器と、
を備え、
前記第１ソフトビット情報は、前記ハードビット情報のビット数よりも多い第１ビット数の情報を含み、
前記第２ソフトビット情報は、前記第１ビット数よりも多い第２ビット数の情報を含む
メモリシステム。
【請求項９】
前記メモリコントローラは、
前記メモリインタフェースが前記１つ以上の不揮発性メモリのいずれかから前記ハードビット情報を読み出すこと、
前記第１の復号器が前記硬判定値の符号語に対して前記硬判定復号を実行すること、前記硬判定復号に失敗したと判断したことに応じて、前記メモリインタフェースが前記不揮発性メモリから前記第１ソフトビット情報を読み出すこと、
前記第２の復号器が前記第１の軟判定値の符号語に対して前記第１の軟判定復号を実行すること、前記第１の軟判定復号に失敗したと判断したことに応じて、前記メモリインタフェースが前記不揮発性メモリから前記第２ソフトビット情報を読み出すこと、および、
前記第３の復号器が前記第２の軟判定値の符号語に対して前記第２の軟判定復号を実行すること、
を指示する制御部をさらに備える請求項８に記載のメモリシステム。
【請求項１０】
前記第１の復号器は、前記ハードビット情報として読み出された前記硬判定値の符号語にオンザフライで前記硬判定復号を実行し、
前記第２の復号器は、前記第１ソフトビット情報から生成された前記第１の軟判定値の符号語に前記オンザフライで前記第１の軟判定復号を実行する
請求項８に記載のメモリシステム。
【請求項１１】
前記メモリコントローラは、それぞれ独立して前記１つ以上の不揮発性メモリのいずれかに接続され得る１つ以上のチャネルをさらに備え、
前記第１の復号器および前記第２の復号器のうち少なくとも１つは、前記１つ以上のチャネルそれぞれに個別に設けられている
請求項８に記載のメモリシステム。
【請求項１２】
前記符号語処理部が前記第２ソフトビット情報から生成した前記第２の軟判定値の符号語を蓄積するデータバッファをさらに備え、
前記第３の復号器は、前記データバッファに蓄積された前記第２の軟判定値の符号語に対して前記第２の軟判定復号を実行する
請求項８に記載のメモリシステム。
【請求項１３】
前記データバッファは、ＳＲＡＭ（Static Random Access Memory）またはＤＲＡＭ（Dynamic Random Access Memory）である請求項１２に記載のメモリシステム。
【請求項１４】
前記第１の軟判定値の前記第１ビット数は、２〜５であり、
前記第２の軟判定値の前記第２ビット数は、６以上である
請求項８に記載のメモリシステム。
【請求項１５】
前記不揮発性メモリへの書込み対象であるデータをＬＤＰＣ（Low-Density Parity-Check）符号を用いた符号化方式で符号化する符号化器をさらに備え、
前記メモリインタフェースは、前記符号化器で符号化された符号語を前記不揮発性メモリへ出力する
請求項８に記載のメモリシステム。
【請求項１６】
前記メモリコントローラは、ＳｏＣ（System On Chip）で構築された半導体装置である請求項８に記載のメモリシステム。
【請求項１７】
前記不揮発性メモリは、ＮＡＮＤ型フラッシュメモリである請求項８に記載のメモリシステム。
【請求項１８】
１つ以上の不揮発性メモリと、前記１つ以上の不揮発性メモリに接続されたメモリコントローラと、を備えるメモリシステムの制御方法であって、
前記メモリコントローラは、
前記１つ以上の不揮発性メモリのいずれかに書き込まれている符号語をハードビット情報、第１ソフトビット情報および第２ソフトビット情報のうちのいずれかとして読み出し、
前記第１ソフトビット情報から第１の軟判定値の符号語を生成し、
前記第２ソフトビット情報から第２の軟判定値の符号語を生成し、
前記ハードビット情報で構成された硬判定値の符号語に硬判定復号を実行し、
前記第１の軟判定値の符号語に第１の軟判定復号を実行し、
前記第２の軟判定値の符号語に第２の軟判定復号を実行し、
前記第１ソフトビット情報は、前記ハードビット情報のビット数よりも多い第１ビット数の情報を含み、
前記第２ソフトビット情報は、前記第１ビット数よりも多い第２ビット数の情報を含む
メモリシステムの制御方法。
【請求項１９】
前記メモリコントローラは、
前記１つ以上の不揮発性メモリのいずれかから前記ハードビット情報を読み出し、
前記硬判定値の符号語に対して前記硬判定復号を実行し、
前記硬判定復号に失敗したと判断したことに応じて、前記不揮発性メモリから前記第１ソフトビット情報を読み出し、
前記第１ソフトビット情報から前記第１の軟判定値の符号語を生成し、
前記第１の軟判定値の符号語に対して前記第１の軟判定復号を実行し、
前記第１の軟判定復号に失敗したと判断したことに応じて、前記不揮発性メモリから前記第２ソフトビット情報を読み出し、
前記第２ソフトビット情報から前記第２の軟判定値の符号語を生成し、
前記第２の軟判定値の符号語に対して前記第２の軟判定復号を実行する
請求項１８に記載のメモリシステムの制御方法。
【請求項２０】
前記メモリコントローラは、
前記ハードビット情報として読み出された前記硬判定値の符号語にオンザフライで前記硬判定復号を実行し、
前記第１ソフトビット情報から生成された前記第１の軟判定値の符号語に前記オンザフライで前記第１の軟判定復号を実行する
請求項１８に記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、メモリコントローラ、メモリシステムおよびメモリシステムの制御方法に関する。
【背景技術】
【０００２】
記憶装置では、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、記憶装置に記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５８８７５８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、Over Provisioning（以下、ＯＰと略す）率（余裕率ともいう）の低減を抑制しつつ訂正効率を向上することが可能なメモリコントローラ、メモリシステムおよびメモリシステムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、メモリコントローラは、不揮発性メモリに書き込まれている符号語を硬判定値、第１の軟判定値および第２の軟判定値のうちのいずれかとして読み出すメモリインタフェースと、前記硬判定値として読み出された符号語に硬判定復号を実行する第１の復号器と、前記第１の軟判定値として読み出された符号語に第１の軟判定復号を実行する第２の復号器と、前記第２の軟判定値として読み出された符号語に第２の軟判定復号を実行する第３の復号器と、を備え、前記第１の軟判定値は、前記硬判定値のビット数よりも多い第１ビット数の情報を含み、前記第２の軟判定値は、前記第１ビット数よりも多い第２ビット数の情報を含む。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態にかかるメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、実施形態にかかる各ＮＡＮＤコントローラのより詳細な構成例を示すブロック図である。
【図３】図３は、実施形態におけるメモリセルに対する読出し動作で使用する読出し電圧（リードレベル）の例を示す模式図である。
【図４】図４は、実施形態にかかる第１の軟判定復号で使用されるＬＬＲテーブルの一例を示す図である。
【図５】図５は、実施形態にかかる第２の軟判定復号で使用されるＬＬＲテーブルの一例を示す図である。
【図６】図６は、実施形態にかかる読出し動作の一例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るメモリコントローラ、メモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
図１は、実施形態にかかるメモリシステム（半導体記憶装置）の概略構成例を示すブロック図である。なお、図１には、実施形態にかかるメモリシステム１としてＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリともいう）を用いたフラッシュＳＳＤ（Solid State Drive）が例示されているが、この構成に限定されず、メモリコントローラと不揮発性メモリとが１つのパッケージとして構成されるメモリカード等、種々のメモリシステムに対しても以下の実施形態を適用することが可能である。
【０００９】
図１に示すように、メモリシステム１は、ＳＡＳ（Serial Attached SCSI）やＳＡＴＡ（Serial ATA）やＰＣＩｅ（PCI Express）などの所定の通信インタフェースを介してホスト２に接続することができる。ホスト２は、たとえばパーソナルコンピュータやモバイル端末などの情報処理装置などであってよい。そのような場合、メモリシステム１は、ホスト２の外部記憶装置として動作し得る。
【００１０】
メモリシステム１は、メモリコントローラ１０と、ＤＲＡＭ（Dynamic Random Access Memory）１９と、ｎ個（ｎは１以上の整数）のＮＡＮＤメモリ２０１〜２０ｎとを備える。ｎは、たとえば１８などの数であってよい。その場合、図１に示す例では、メモリシステム１は、＃１〜＃１８の合計１８個のＮＡＮＤメモリ２０を備えている。なお、以下の説明において、個々のＮＡＮＤメモリ２０１〜２０ｎを区別しない場合、その符号を２０とする。また、ＤＲＡＭ１９には、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの同期式のＤＲＡＭや非同期式のＤＲＡＭなど、種々のメモリを用いることが可能である。
【００１１】
各ＮＡＮＤメモリ２０は、データを不揮発に記憶する不揮発性メモリである。ただし、これに限定されず、３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistance Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）等、種々の記憶装置を用いることが可能である。また、ＮＡＮＤメモリ２０のような半導体メモリに限られず、半導体メモリ以外の種々の記憶媒体を用いることも可能である。
【００１２】
ＮＡＮＤメモリ２０では、一般に、ページと呼ばれるデータ単位で、書込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルが２値データを記憶するＳＬＣ（Single Level Cell）である場合は、１つのメモリセルグループが１ページに対応する。メモリセルが４値以上の多値データを記憶するＭＬＣ（Multiple Level Cell）やＴＬＣ（Triple Level Cell）などである場合は、１つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。したがって、個々のメモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【００１３】
メモリコントローラ１０は、たとえばＳｏＣ（System on Chip）などの設計手法で構築された半導体装置であってもよい。このメモリコントローラ１０には、ホスト２からアクセス要求（read要求、write要求等）が入力される。ホスト２からのアクセス要求には、論理アドレス空間上のデータの位置を指定する論理アドレスが含まれ得る。メモリコントローラ１０は、ホスト２からのwrite要求に従ってＮＡＮＤメモリ２０へのデータの書込みを制御する。また、メモリコントローラ１０は、ホスト２からのRead要求に従ってＮＡＮＤメモリ２０からのデータの読出しを制御する。
【００１４】
メモリコントローラ１０は、ＮＡＮＤメモリ２０の数と同数もしくはそれ以下の数のチャネルを備える。たとえば図１に示す例では、ＮＡＮＤメモリ２０の数と同数、すなわちｎ個のチャネルが設けられている。各チャネルには、１つまたは複数のＮＡＮＤメモリ２０が接続される。それぞれのチャネルは、制御信号線、Ｉ／Ｏ信号線、ＣＥ（チップイネーブル）信号線、ＲＹ／ＢＹ信号線を含んで構成される。Ｉ／Ｏ信号線は、データ、アドレスおよびコマンドを送受信するための信号線である。制御信号線は、ＷＥ（ライトイネーブル）信号線、ＲＥ（リードイネーブル）信号線、ＣＬＥ（コマンドラッチイネーブル）信号線、ＡＬＥ（アドレスラッチイネーブル）信号線、ＷＰ（ライトプロテクト）信号線等を総称するものである。メモリコントローラ１０は、各チャネルの信号線群が互いに独立していることを利用して、１つのチャネルに接続された１つ以上のＮＡＮＤメモリ２０を他のチャネルに接続されたＮＡＮＤメモリ２０から独立して制御することができる。
【００１５】
メモリコントローラ１０は、ＣＰＵ（制御部）１１と、ＤＤＲコントローラ１２と、チャネルの数と同数のＮＡＮＤコントローラ１３１〜１３ｎと、ホストＩ／Ｆ（ホストインタフェース）１５と、ＳＲＡＭ（Static Random Access Memory）１６と、第２の軟判定復号器１７とを備える。ＣＰＵ１１、ＤＤＲコントローラ１２、ＮＡＮＤコントローラ１３１〜１３ｎ、ホストＩ／Ｆ１５、ＳＲＡＭ１６および第２の軟判定復号器１７は、内部バス１８を介して相互に接続されている。ｎ個のＮＡＮＤコントローラ１３１〜１３ｎは、夫々異なるチャネルの一部を構成する。以下の説明において、個々のＮＡＮＤコントローラ１３１〜１３ｎを区別しない場合、その符号を１３とする。
【００１６】
ホストＩ／Ｆ１５は、ホスト２との間のインタフェース規格に従った処理を実施し、ホスト２から受信した命令、ユーザデータなどを内部バス１８に出力する。また、ホストＩ／Ｆ１５は、ＮＡＮＤメモリ２０から読み出された符号語（受信語ともいう）を復号することで復元されたユーザデータやＣＰＵ１１からの応答などをホスト２へ送信する。
【００１７】
ＳＲＡＭ１６は、メモリコントローラ１０がホスト２から受信したユーザデータを一時的に格納する。また、ＳＲＡＭ１６は、ＮＡＮＤメモリ２０から読み出された受信語や受信語に対する復号により復元されたユーザデータを一時的に格納する。このように、ＳＲＡＭ１６は、書込み／読出しの際にユーザデータや受信語等を一時的に格納するデータバッファとしての役割を持つ。なお、ユーザデータや受信語等の一時的な格納場所には、ＳＲＡＭ１６の代わりにＤＲＡＭ１９が使用されてもよい。その場合、ＤＲＡＭ１９に対するデータ等の出し入れは、ＤＤＲコントローラ１２によって制御される。
【００１８】
ＤＲＡＭ１９は、アドレス変換テーブルや、起動時等にＮＡＮＤメモリ２０の特定の領域から読み出されて展開されるマスタテーブル（スナップショット）などの各種管理テーブルや、各種管理テーブルの変更差分であるログ情報などを記憶するワーキングメモリとして使用することができるメモリである。また、ＤＲＡＭ１９は、ホスト２とＮＡＮＤメモリ２０との間でデータ転送をする際のキャッシュメモリとしても用いられることが可能である。
【００１９】
ＣＰＵ１１は、メモリシステム１の各構成要素を統括的に制御する。ＣＰＵ１１は、ホスト２からホストＩ／Ｆ１５経由で命令を受け付けると、その命令に従った制御を実行する。たとえばＣＰＵ１１は、ホスト２からwrite要求を受信した場合、このwrite要求により指定された論理アドレスを不図示のアドレス変換テーブルを用いて物理アドレスに変換し、この物理アドレスに対応するＮＡＮＤコントローラ１３に対して、ユーザデータの符号化およびこの符号化により得られた符号語のＮＡＮＤメモリ２０への書込みを指示する。また、ＣＰＵ１１は、ホスト２からread要求を受信した場合、このread要求により指定された論理アドレスを不図示のアドレス変換テーブルを用いて物理アドレスに変換し、この物理アドレスに対応するＮＡＮＤコントローラ１３に対して、ＮＡＮＤメモリ２０からの符号語の読出しおよび読み出した符号語（受信語）の復号を指示する。
【００２０】
なお、論理アドレスと物理アドレスとの対応関係は、ＣＰＵ１１によって管理され、アドレス変換テーブルに登録される。すなわち、ＣＰＵ１１は、アドレス変換テーブルを用いてユーザデータ（実際には符号語）の書込み先を管理する。たとえばＣＰＵ１１は、ホスト２からwrite要求を受信した場合、このwrite要求に対応する書込み対象のユーザデータをＳＲＡＭ１６に一時的に蓄積するとともに、ＳＲＡＭ１６に蓄積されたユーザデータに対して、ＮＡＮＤメモリ２０上の格納領域（物理アドレス空間上のデータの格納位置）を決定し、決定した格納領域とwrite要求に含まれている論理アドレスとの対応をアドレス変換テーブルに登録する。アドレス変換テーブルは、たとえばＳＲＡＭ１６またはＤＲＡＭ１９に保持される。
【００２１】
各ＮＡＮＤコントローラ１３は、書込み／読出し対象のデータに対する符号化／復号を実行するＥＣＣ部１４を備える。ＥＣＣ部１４は、ＳＲＡＭ１６に一時的に蓄積された書込み対象のユーザデータを符号化して符号語を生成する。また、ＥＣＣ部１４は、ＮＡＮＤメモリ２０から読み出された受信語に対し、必要に応じてオンザフライで復号を実行してユーザデータを復元する。なお、ＥＣＣ部１４により符号化／復号される対象データには、ユーザデータ以外にも、メモリコントローラ１０内部で用いる制御データ等が含まれ得る。また、本説明における“オンザフライ”とは、たとえばメモリＩ／Ｆ１３２（図２を参照）によって読み出された受信語に対し、ＳＲＡＭ１６やＤＲＡＭ１９などのＮＡＮＤコントローラ１３の外部に設けられた記憶領域へ一旦蓄積することなく、直接復号を実行することを意味している。
【００２２】
図２に、各ＮＡＮＤコントローラ１３のより詳細な構成例を示す。図２に示すように、ＮＡＮＤコントローラ１３は、ＥＣＣ部１４に加え、アクセスコントローラ１３１と、メモリインタフェース（メモリＩ／Ｆ）１３２とを備える。
【００２３】
アクセスコントローラ１３１は、ＮＡＮＤコントローラ１３の外部からのＮＡＮＤメモリ２０へのアクセスを制御する。また、アクセスコントローラ１３１は、ＮＡＮＤメモリ２０から読み出された受信語の伝達経路をＥＣＣ部１４に備えられたセレクタ１４４に選択させるための選択信号を出力する。
【００２４】
メモリＩ／Ｆ１３２は、ＮＡＮＤメモリ２０に対する書込み／読出しを実行する。本実施形態において、メモリＩ／Ｆ１３２が実行する読出し動作としては、ＮＡＮＤメモリ２０の各メモリセルから２値データ（以下、ハードビット情報という）を読み出す硬判定読出し（ＨＢ（Hard-Bit）リードともいう）と、ＮＡＮＤメモリ２０の各メモリセルから第１のページ数（２ページ以上）分の２値データ（以下、ソフトビット情報という）を読み出す第１の軟判定読出し（ＨＳＢ（Half-Soft-Bit）リードともいう）と、ＮＡＮＤメモリ２０の各メモリセルから第１のページ数よりも大きい第２のページ数分の２値データ（ソフトビット情報）を読み出す第２の軟判定読出し（ＦＳＢ（Full-Soft-Bit）リードともいう）とが例示される。メモリＩ／Ｆ１３２は、たとえばＣＰＵ１１またはアクセスコントローラ１３１からの指示に従い、ＨＢリード、ＨＳＢリード、およびＦＳＢリードのうちのいずれかの読出し動作を実行し、これにより読み出されたハードビット情報またはソフトビット情報をＥＣＣ部１４へ入力する。
【００２５】
ここで、ハードビット情報は、たとえば１ページ分の情報であり、いわゆる硬判定値と同じ値であってよい。なお、ページとは、たとえばTLCにおける、LOWERページ、MIDDLEページ、UPPERページなどのことを指している。また、ソフトビット情報とは、後述する軟判定値（対数尤度比（Log Likelihood Ratio：ＬＬＲ）に相当）を生成するための情報である。ソフトビット情報を用いた軟判定値（ＬＬＲ）の生成については、後述において図面を参照して説明する。
【００２６】
ＥＣＣ部１４は、符号化器１４１と、硬判定復号器１４２と、第１の軟判定復号器１４３と、セレクタ１４４と、符号語処理部１４５とを含む。符号化器１４１は、ＬＤＰＣ（Low-Density Parity-Check）符号を用いた符号化方式を採用した符号化器である。ＬＤＰＣ符号化方式が採用された符号化器１４１を用いることで、生成される符号語の符号長を長くすることなく、誤り訂正能力を高めることが可能となる。その結果、ＯＰ（Over Provisioning）率を低下させることなく、ＢＥＲ（Bit Error Rate）が低減された信頼性の高いメモリシステムを構築することが可能となる。
【００２７】
符号化器１４１は、たとえばＣＰＵ１１からの指示に基づき、ＳＲＡＭ１６上のユーザデータを符号化して符号語を生成する。生成された符号語は、メモリＩ／Ｆ１３２によって、ＮＡＮＤメモリ２０における指定された物理アドレスに書き込まれる。なお、物理アドレスの指定は、たとえばＣＰＵ１１から書込み指示を受けたアクセスコントローラ１３１によってメモリＩ／Ｆ１３２に入力される。
【００２８】
符号語処理部１４５は、たとえばビタビ・アルゴリズムを用いた復号を実行するＳＯＶＡ（Soft Output Viterbi Algorithm）復号器である。この符号語処理部１４５は、ＮＡＮＤメモリ２０からメモリＩ／Ｆ１３２によって読み出されたソフトビット情報から、読み出し対象の符号語を構成する各シンボルの軟判定値（ＬＬＲ）を生成し、これにより生成された軟判定値（ＬＬＲ）の受信語をセレクタ１４４へ出力する。軟判定値（ＬＬＲ）の生成には、後述するＬＬＲテーブル等を用いることが可能である。なお、符号処理部１４５は、軟判定値（ＬＬＲ）を生成する必要のないハードビット情報については、これをそのまま硬判定値の受信語としてセレクタ１４４へ出力する。
【００２９】
セレクタ１４４は、たとえばアクセスコントローラ１３１からの選択信号にしたがって、符号語処理部１４５から出力された硬判定値または軟判定値（ＬＬＲ）の受信語の伝達経路（出力先）を、硬判定復号器１４２、第１の軟判定復号器１４３およびアクセスコントローラ１３１の中から選択する。
【００３０】
硬判定復号器１４２は、硬判定値の受信語に対して硬判定復号を実行する第１の復号器である。硬判定復号器１４２は、ＮＡＮＤメモリ２０に対する硬判定読出し（ＨＢリード）で取得された硬判定値の受信語がセレクタ１４４を介して入力されると、この入力された受信語に対してオンザフライで硬判定復号を実行する。
【００３１】
第１の軟判定復号器１４３は、たとえば第１のページ数分のソフトビット情報より生成された軟判定値（ＬＬＲ）の受信語（以下、ＨＳＢ軟判定値の受信語ともいう）に対して軟判定復号（第１の軟判定復号という）を実行する第２の復号器である。第１の軟判定復号器１４３は、ＮＡＮＤメモリ２０に対する第１の軟判定読出し（ＨＳＢリード）で取得されたＨＳＢ軟判定値の受信語がセレクタ１４４を介して入力されると、この入力された受信語に対してオンザフライで第１の軟判定復号を実行する。
【００３２】
一方、セレクタ１４４によって硬判定復号器１４２および第１の軟判定復号器１４３を介さずに直接アクセスコントローラ１３１に入力された受信語は、たとえば図１に示すＳＲＡＭ１６に蓄積される。ＳＲＡＭ１６に蓄積された受信語は、第２の軟判定復号器１７（図１参照）によって復号される。第２の軟判定復号器１７は、たとえば第２のページ数分のソフトビット情報より生成された軟判定値（ＬＬＲ）の受信語（以下、ＦＳＢ軟判定値の受信語ともいう）に対して軟判定復号（第２の軟判定復号という）を実行する第３の復号器である。第２の軟判定復号器１７は、ＮＡＮＤメモリ２０に対する第２の軟判定読出し（ＦＳＢリード）で取得されたＦＳＢ軟判定値の受信語がＳＲＡＭ１６に蓄積されると、たとえばＣＰＵ１１からの指示に従い、ＳＲＡＭ１６に蓄積されている受信語に対して第２の軟判定復号を実行する。
【００３３】
なお、硬判定復号とは、硬判定値を入力として復号を実行し、その結果として硬判定値を出力する復号処理である。一方、軟判定復号（第１の軟判定復号および第２の軟判定復号）とは、軟判定値（ＬＬＲ）を入力として復号を実行し、その結果として軟判定値（ＬＬＲ）を出力する復号処理である。通常、軟判定復号（第１の軟判定復号および第２の軟判定復号）は、硬判定復号より誤り訂正能力は高いが処理時間が長いという特徴を持つ。また、本実施形態においては、第２の軟判定復号は、第１の軟判定復号よりさらに誤り訂正能力は高いが処理時間がより長いという特徴を持つ。そこで本実施形態では、まず、ＮＡＮＤメモリ２０から符号語を硬判定値として読み出して硬判定復号し、硬判定復号により復号できなかった符号語をＨＳＢ軟判定値として読み出す。そして、ＨＳＢ軟判定値として読み出された符号語を第１の軟判定復号し、第１の軟判定復号により復号できなかった場合には今度はＦＳＢ軟判定値として符号語を読み出す。そして、ＦＳＢ軟判定値として読み出された符号語を第２の軟判定復号するように構成される。
【００３４】
このように、復号の成功／失敗に応じて符号語（受信語）の情報量を段階的に増加させて誤り訂正能力が段階的に増加する復号を順次実行する構成とすることで、たとえばリードディスターブ（ＲＤ）やデータリテンション（ＤＲ）などに起因してＢＥＲが悪化した場合でも、状況等に応じて段階的に誤り訂正能力を増加させることが可能となる。その結果、効率的かつ効果的にビットエラーを訂正することが可能となる。ただし、このような構成に限られず、硬判定復号を省略して第１の軟判定復号または第２の軟判定復号から実行される構成など、種々変形することが可能である。
【００３５】
硬判定復号、第１の軟判定復号および第２の軟判定復号それぞれの復号手法としては、例えば限界距離復号等を適用することができる。ただし、限界距離復号に限定されず、種々の復号手法が適用されてよい。
【００３６】
ここで、本実施形態にかかるＨＢリード、ＨＳＢリードおよびＦＳＢリードによる情報の読出しからソフトビット情報を用いた軟判定値の生成までの流れについて、図３〜図５を用いて詳細に説明する。図３は、本実施形態におけるメモリセルに対する読出し動作で使用する読出し電圧（以下、リードレベルともいう）の例を示す模式図である。図４は、本実施形態にかかる第１の軟判定復号で使用されるＬＬＲテーブルの一例を示す図である。図５は、本実施形態にかかる第２の軟判定復号で使用されるＬＬＲテーブルの一例を示す図である。なお、図３において、横軸はメモリセルに書き込まれたデータのしきい値電圧を示し、縦軸は出現頻度を表す。また、図３では、１つのメモリセルが１ビットを記憶するシングルレベルセル（ＳＬＣ）が例示されており、左側のＥｒ（Erase）分布がデータ値‘１’に対応するしきい値電圧の出現頻度分布（しきい値分布ともいう）を示し、右側のＡ分布がデータ値‘０’に対応するしきい値分布を示している。さらに、本説明では、ＨＢリードで使用するリードレベルをＨＢリードレベルまたは基準リードレベルといい、ＨＳＢリードで使用する複数のリードレベルをＨＳＢリードレベルといい、ＦＳＢリードで使用する複数のリードレベルをＦＳＢリードレベルという。
【００３７】
一般的に、ＮＡＮＤメモリでは、データの書込み時に、データ値に応じて、メモリセルにおけるフローティングゲートの電子数（電荷量）が複数のしきい値分布のいずれかに対応するように電子が注入される。メモリセルに対する読出し動作では、該メモリセルの電荷量に応じた電圧値以上の読出し電圧を印加すると電流が流れ、該電圧値未満の読出し電圧を印加すると電流が流れない。電流が流れると流れないとの境目となる電圧は、メモリセルそれぞれの電荷量に応じてメモリセル毎に定まる。このメモリセルの電荷量に応じて定まる境界の電圧を、本説明では“しきい値電圧”と称している。そこで、メモリセルに対する書込み動作では、上述したように、各メモリセルのしきい値電圧が２つのしきい値分布のうちの一方の範囲内に含まれるように、各メモリセルに電荷が注入される。一方、メモリセルからの読出し動作では、２つのしきい値分布の境界となる電圧レベル付近の電圧（リードレベル）がメモリセルに印加され、それにより電流が流れたか否かに基づいて、このメモリセルに保持されている値（ハードビット情報またはソフトビット情報）が判定される。
【００３８】
本実施形態にかかるＨＢリードは、メモリセルに１つのリードレベル（ＨＢリードレベル）を印加して、メモリセルに記憶されているデータが‘１’であるか‘０’であるかを判定し、判定した結果を出力する読出し動作である。したがって、ＮＡＮＤメモリ２０に対するＨＢリードで読み出された受信語における各シンボル（ビットに相当）は、‘０’か‘１’のいずれかの値を取る１ビットのハードビット情報を持つこととなる。
【００３９】
一般的には、読み出されたデータのビットエラーレート（ＢＥＲ）を低減するために、図３に示すように、ＳＬＣに対するＨＢリードレベルは、Ｅｒ分布のピークに対応するしきい値電圧とＡ分布のピークに対応するしきい値電圧との略中間の電圧レベル（これを基準リードレベルＶｒ４とする）に設定される。なお、ＨＢリードでは、基準リードレベルＶｒ４から電圧値がシフトされたリードレベルが使用される場合もあるが、本実施形態はこれを除外するものではない。また、このシフトされたＨＢリードレベルを用いた読出しは、シフトリードと称されることもある。
【００４０】
一方、本実施形態に係るＨＳＢリードおよびＦＳＢリードなどの軟判定読出し（以下、ＳＢリードともいう）は、各メモリセルに保持されている値を複数ページのソフトビット情報として読み出す読み出し動作であり、読み出したソフトビット情報から受信語における各シンボル（ビットに相当）の軟判定値（ＬＬＲ）が生成される。
【００４１】
ここで対数尤度比（Log Likelihood Ratio：ＬＬＲ）とは、各シンボル（ビット）の値が‘０’である確率と‘１’である確率とを対数比で表現した情報である。より具体的には、ＬＬＲとは、ＮＡＮＤメモリ２０のしきい値電圧の値が範囲ａに含まれる条件下でメモリセルへの書き込みビットｘが論理‘０’である条件付確率Ｐ（ｘ＝０｜ａ）と、しきい値電圧の値が範囲ａに含まれる条件下でメモリセルへの書き込みビットｘが論理‘１’である条件付確率Ｐ（ｘ＝１｜ａ）との比の対数をとったものと定義される。これを式で表すと、ＬＬＲは、ｌｎ（Ｐ（ｘ＝０｜ａ）／Ｐ（ｘ＝１｜ａ））と表される。なお、ｌｎは自然対数である。
【００４２】
このＬＬＲは、ビットの値が‘０’である確率が高ければ高いほど大きな値をとり、‘１’である確率が高ければ高いほど小さな値をとる。ビットの値が‘０’である確率と‘１’である確率とが等しい場合には、ＬＬＲはゼロとなる。
【００４３】
本実施形態において、ＳＢリードで読み出された複数ページのソフトビット情報は、各シンボルの値がＬＬＲ形式で表現された軟判定値の受信語に変換される。したがって、ＳＢリードにより取得される受信語は、書込み／読出し対象の符号語を構成する複数のシンボルそれぞれに対応する複数のＬＬＲ（通信路値ともいう）の列で構成される。なお、符号語（受信語）を構成するシンボルは、基本的には、ＮＡＮＤメモリ２０におけるメモリセルと一対一で対応している。
【００４４】
そこで、本実施形態において、第１のページ数分のソフトビット情報を読み出す際に使用するＨＳＢリードレベルは、ＨＢリードで用いる基準リードレベルＶｒ４に加え、基準リードレベルＶｒ４の両側それぞれに１以上ずつ設定されたリードレベルを含む。たとえば図３に示す例では、基準リードレベルＶｒ４と、基準リードレベルＶｒ４の両側それぞれに所定間隔ΔＲ隔てて１つずつ設定されたリードレベルＶｒ３およびＶｒ５とを含む合計３つのリードレベルＶｒ３〜Ｖｒ５が、ＨＳＢリードレベルとして使用される。その場合、ＨＳＢリードで読み出された受信語を構成する各シンボルは、基準リードレベルＶｒ４（ＨＢリードレベル）を使用して読み出された１ビットの情報（ハードビット）に加えて、２つのＨＳＢリードレベルＶｒ３およびＶｒ５それぞれを使用して読み出された２ビットのソフトビット情報を持つこととなる。
【００４５】
また、第１のページ数よりも多い第２のページ数分のソフトビット情報を読み出す際に使用するＦＳＢリードレベルは、ＨＢリードで用いる基準リードレベルＶｒ４に加え、基準リードレベルＶｒ４の両側それぞれにＨＳＢリードレベルのそれよりも多い数（たとえば３つずつ）のリードレベルが設定される。たとえば図３に示す例では、基準リードレベルＶｒ４と、基準リードレベルＶｒ４の両側それぞれに所定間隔ΔＲずつ隔てて３つずつ設定されたリードレベルＶｒ１〜Ｖｒ３およびＶｒ５〜Ｖｒ７とを含む合計７つのリードレベルＶｒ１〜Ｖｒ７が、ＦＳＢリードレベルとして使用される。その場合、ＦＳＢリードで読み出された受信語を構成する各シンボルは、ＨＢリードレベルを使用して読み出された１ビットの情報（ハードビット）に加え、６つのＦＳＢリードレベルＶｒ１〜Ｖｒ３およびＶｒ５〜Ｖｒ７それぞれを使用して読み出された６ビットのソフトビット情報を持つこととなる。
【００４６】
なお、ＨＳＢリードレベルおよびＦＳＢリードレベルの数は、それぞれ図３に例示された３つおよび７つに限定されず、種々変形することが可能である。その場合、ＳＢリードで読み出された受信語を構成する各シンボルは、ＨＢリードレベル以外に設けられたリードレベルの数と同数のビットのソフトビット情報を持つこととなる。たとえば、ＨＳＢリードにより読み出されるソフトビット情報のビット数を２〜５ビットとし、ＦＳＢリードにより読み出されるソフトビット情報のビット数を６ビット以上とした場合、トレードオフの関係にある処理速度と訂正能力とを良好なバランスとすることが可能である。また、各リードレベルの間隔ΔＲについても、１つの固定値に限定されず、基準リードレベルＶｒ４からの順番に依存して変更するなど、種々変形することが可能である。
【００４７】
以上のようなリードレベルを用いて読み出された受信語における各シンボルのＬＬＲは、該当するメモリセルのしきい値電圧が各リードレベル以上であるか否かの判定結果（ハードビット情報およびソフトビット情報の値）に基づき、図４または図５に示すＬＬＲテーブルを用いて求めることができる。
【００４８】
たとえば図４に示すように、ＨＳＢリードの結果、メモリセルのしきい値電圧がＶｒ３未満と判定された場合、このメモリセルに対応するシンボルのＬＬＲは‘−９’と特定される。また、メモリセルのしきい値電圧がＶｒ３以上でありＶｒ４未満であると判定された場合、このメモリセルに対応するシンボルのＬＬＲは‘−３’と特定される。同様に、メモリセルのしきい値電圧がＶｒ４以上でありＶｒ５未満であると判定された場合、このメモリセルに対応するシンボルのＬＬＲは‘３’と特定され、メモリセルのしきい値電圧がＶｒ５以上と判定された場合、このメモリセルに対応するシンボルのＬＬＲは‘９’と特定される。ＦＳＢリードの場合も同様に、ＦＳＢリードの結果として判定されたメモリセルのしきい値電圧に基づいて、このメモリセルに対応するシンボルのＬＬＲが図５に示すＬＬＲテーブルから特定される。
【００４９】
なお、図４および図５は単なる例であって、ＬＬＲテーブルの構成を限定するものではない。また、ＬＬＲテーブルの代わりに所定の算出式を用いてシンボルのＬＬＲを求めることも可能である。
【００５０】
メモリセルごとのしきい値電圧が各リードレベル以上であるか否かの判定結果（ハードビット情報およびソフトビット情報の値）に基づいてＬＬＲを求める動作は、たとえば図２に示すＥＣＣ部１４内の符号語処理部１４５によって実行される。そこで符号語制御部１４５は、たとえばＨＳＢリードである場合、メモリセルのしきい値電圧がＶｒ３未満、Ｖｒ３以上Ｖｒ４未満、Ｖｒ４以上Ｖｒ５未満、Ｖｒ５以上の４つの範囲のうちどの範囲に属しているかを判定結果（ハードビット情報およびソフトビット情報の値）に基づいて特定し、特定した範囲に対応するＬＬＲをたとえば図４に例示されたＬＬＲテーブルから取得し、取得したＬＬＲをセレクタ１４４へ出力する。一方、ＦＳＢリードである場合、符号語処理部１４５は、メモリセルのしきい値電圧がＶｒ１未満、Ｖｒ１以上Ｖｒ２未満、Ｖｒ２以上Ｖｒ３未満、Ｖｒ３以上Ｖｒ４未満、Ｖｒ４以上Ｖｒ５未満、Ｖｒ５以上Ｖｒ６未満、Ｖｒ６以上Ｖｒ７未満、Ｖｒ７以上の８つの範囲のうちどの範囲に属しているかを判定結果（ハードビット情報およびソフトビット情報の値）に基づいて特定し、特定した範囲に対応するＬＬＲをたとえば図５に例示されたＬＬＲテーブルから取得し、取得したＬＬＲをセレクタ１４４へ出力する。
【００５１】
ただし、メモリセルごとのしきい値電圧が各リードレベル以上であるか否かの判定結果（ハードビット情報およびソフトビット情報の値）に基づいてＬＬＲを求める動作は、ＮＡＮＤコントローラ１３内のＥＣＣ部１４に限られず、ＮＡＮＤメモリ２０側で実行されてもよい。ＮＡＮＤメモリ２０側で実行される場合、ＮＡＮＤメモリ２０は、メモリセルごとにしきい値電圧がどの範囲に属しているかの情報（ハードビット情報およびソフトビット情報の値）から、上述した符号語処理部１４５と同様の動作により、各シンボルのＬＬＲを取得すればよい。
【００５２】
なお、図３〜図５では、１ビット／セルを記憶するＳＬＣの場合を例に挙げて説明したが、マルチレベルセル（ＭＬＣ）の場合もＳＬＣの場合と同様に、しきい値分布の境界ごとに複数のリードレベルを用いて読出しが実施される。そして、複数のリードレベルを用いた読出しの結果に基づいてＬＬＲが特定される。
【００５３】
次に、再び図１、図２を参照して、本実施形態にかかるＮＡＮＤメモリ２０への書込み動作について説明する。ＣＰＵ１１は、ホスト２からホストＩ／Ｆ１５経由でwrite要求を受け付けると、このwrite要求に含まれるユーザデータをＳＲＡＭ１６に一時的に格納するとともに、write要求により指定された論理アドレスを不図示のアドレス変換テーブルを用いて物理アドレスに変換し、この物理アドレスに対応するＮＡＮＤコントローラ１３に対して、ＳＲＡＭ１６に格納されているユーザデータの符号化およびこの符号化により得られた符号語のＮＡＮＤメモリ２０への書込みを指示する。
【００５４】
ＮＡＮＤコントローラ１３のアクセスコントローラ１３１は、ＣＰＵ１１からの指示に基づいて、ＳＲＡＭ１６から対象のユーザデータを取得し、取得したユーザデータを符号化器１４１に入力する。符号化器１４１は、入力されたユーザデータに対してＬＤＰＣ符号化を実行して符号語を生成し、生成した符号語をメモリＩ／Ｆ１３２に入力する。符号語が入力されたメモリＩ／Ｆ１３２は、ＣＰＵ１１またはアクセスコントローラ１３１から指示されたＮＡＮＤメモリ２０上の格納場所へ符号語を格納する書込み動作を実行する。
【００５５】
次に、本実施形態にかかるＮＡＮＤメモリ２０からの読出し動作について説明する。図６は、本実施形態にかかる読出し動作の一例を示すフローチャートである。図６に示すように、ＣＰＵ１１がホスト２からのread要求をホストＩ／Ｆ１５経由で受け付けると、まず、read要求において指定されている論理アドレスからＮＡＮＤメモリの物理アドレスが特定され、特定された物理アドレス（ＮＡＮＤメモリ２０）に対応するＮＡＮＤコントローラ１３がＨＢリードを実行する（Ｓ１０１）。より詳細には、ＣＰＵ１１が、read要求により指定された論理アドレスを不図示のアドレス変換テーブルを用いて物理アドレスに変換し、この物理アドレスに対応するＮＡＮＤコントローラ１３に対して、ＮＡＮＤメモリ２０に対するＨＢリードによる符号語の読出しを指示する。その際、ＣＰＵ１１は、ＮＡＮＤメモリ２０から読み出された符号語（受信語）の硬判定復号もＮＡＮＤコントローラ１３へ指示する。指示されたＮＡＮＤコントローラ１３のアクセスコントローラ１３１は、ＮＡＮＤメモリ２０における指定されたアドレスに対してＨＢリードを実行するようにメモリＩ／Ｆ１３２に指示する。これに対し、メモリＩ／Ｆ１３２は、ＮＡＮＤメモリ２０における指定されたアドレスに対するＨＢリードを実行し、これにより読み出されたハードビット情報（硬判定値の符号語に相当）をＥＣＣ部１４に入力する。
【００５６】
次に、読み出されたハードビット情報が入力されたＥＣＣ部１４において、このハードビット情報（硬判定値の受信語）に対する硬判定復号がオンザフライで実行される（Ｓ１０２）。より詳細には、Ｓ１０１でＣＰＵ１１からの指示が入力されたアクセスコントローラ１３１は、符号語処理部１４５に対し、ＬＬＲの生成が不要である指示を入力するとともに、ＥＣＣ部１４のセレクタ１４４に対し、入力された受信語を硬判定復号器１４２に入力する選択信号を入力する。したがって、メモリＩ／Ｆ１３２によってＮＡＮＤメモリ２０から読み出されたハードビット情報（硬判定値の受信語）は、符号語処理部１４５を通過してセレクタ１４４に入力され、つづいてセレクタ１４４を介して硬判定復号器１４２へ入力される。硬判定復号器１４２は、入力された受信語に対してオンザフライで硬判定復号を実行する。その後、硬判定復号の終了条件（打ち切り条件ともいう）が達成されて硬判定復号が終了すると、この硬判定復号により得られた復号語がアクセスコントローラ１３１を介してＳＲＡＭ１６に格納される（Ｓ１０３）とともに、ＣＰＵ１１へ硬判定復号の終了が通知される。なお、終了条件（打ち切り条件）とは、たとえば十分に尤もらしい復号語が得られたことや硬判定復号の繰返し回数が予め定めておいた所定回数に達したことなどとすることができる。
【００５７】
次に、ＣＰＵ１１において、ＳＲＡＭ１６に格納されている復号語から、硬判定復号に成功したか否かが判定される（Ｓ１０４）。硬判定復号に成功していた場合（Ｓ１０４；ＹＥＳ）、本動作がＳ１１３へスキップする。一方、硬判定復号に失敗していた場合（Ｓ１０４；ＮＯ）、今度はＨＳＢリードが実行される（Ｓ１０５）。具体的には、硬判定復号に失敗したと判断したＣＰＵ１１が、read要求において指定されている論理アドレスから特定される物理アドレス（ＮＡＮＤメモリ２０）に対応するＮＡＮＤコントローラ１３に対して、ＮＡＮＤメモリ２０に対するＨＳＢリードによる符号語の読出しを指示する。その際、ＣＰＵ１１は、ＮＡＮＤメモリ２０から読み出された符号語（受信語）の第１の軟判定復号もＮＡＮＤコントローラ１３へ指示する。指示されたＮＡＮＤコントローラ１３のアクセスコントローラ１３１は、ＮＡＮＤメモリ２０における指定されたアドレスに対してＨＳＢリードを実行するようにメモリＩ／Ｆ１３２に指示する。これに対し、メモリＩ／Ｆ１３２は、ＮＡＮＤメモリ２０における指定されたアドレスに対するＨＳＢリードを実行し、これにより読み出されたソフトビット情報をＥＣＣ部１４に入力する。なお、ＨＳＢリードの読出し先となる物理アドレスの指定は、ＣＰＵ１１からＮＡＮＤコントローラ１３へ再度通知されてもよいし、ＨＢリードの際にＮＡＮＤコントローラ１３側で保持しておいた物理アドレスが使用されてもよい。
【００５８】
次に、読み出されたソフトビット情報が入力されたＥＣＣ部１４において、ＨＳＢ軟判定値の生成と生成したＨＳＢ軟判定値の受信語に対する第１の軟判定復号がオンザフライで実行される（Ｓ１０６）。より詳細には、アクセスコントローラ１３１は、Ｓ１０５においてメモリＩ／Ｆ１３２へＨＳＢリードの実行を指示する際に、符号語処理部１４５に対し、たとえば図４に例示するＬＬＲテーブルを用いてＬＬＲを生成する指示を入力するとともに、ＥＣＣ部１４のセレクタ１４４に対して、入力された受信語を第１の軟判定復号器１４３に入力する選択信号を入力する。したがって、メモリＩ／Ｆ１３２によってＮＡＮＤメモリ２０から読み出されたソフトビット情報が入力された符号語処理部１４５は、入力されたソフトビット情報からたとえば図４に例示されたＬＬＲテーブルを用いてＬＬＲを生成することでＨＳＢ軟判定値の受信語を生成する。生成されたＨＳＢ軟判定値の受信語は、セレクタ１４４を介して第１の軟判定復号器１４３へ入力される。第１の軟判定復号器１４３は、入力された受信語に対してオンザフライで第１の軟判定復号を実行する。その後、第１の軟判定復号の終了条件（打ち切り条件）が達成されて第１の軟判定復号が終了すると、この第１の軟判定復号により得られた復号語がアクセスコントローラ１３１を介してＳＲＡＭ１６に格納される（Ｓ１０７）とともに、ＣＰＵ１１へ第１の軟判定復号の終了が通知される。なお、Ｓ１０６における第１の軟判定復号の終了条件（打ち切り条件）も、Ｓ１０２における硬判定復号の終了条件（打ち切り条件）と同様に、たとえば十分に尤もらしい復号語が得られたことや第１の軟判定復号の繰返し回数が予め定めておいた所定回数に達したことなどとすることができる。
【００５９】
次に、ＣＰＵ１１において、ＳＲＡＭ１６に格納されている復号語から、第１の軟判定復号に成功したか否かが判定される（Ｓ１０８）。第１の軟判定復号に成功していた場合（Ｓ１０８；ＹＥＳ）、本動作がＳ１１３へスキップする。一方、第１の軟判定復号に失敗していた場合（Ｓ１０８；ＮＯ）、今度はＦＳＢリードが実行される（Ｓ１０９）。具体的には、第１の軟判定復号に失敗したと判断したＣＰＵ１１が、read要求において指定されている論理アドレスから特定される物理アドレス（ＮＡＮＤメモリ２０）に対応するＮＡＮＤコントローラ１３に対して、ＮＡＮＤメモリ２０に対するＦＳＢリードによる符号語の読出しを指示する。指示されたＮＡＮＤコントローラ１３のアクセスコントローラ１３１は、ＮＡＮＤメモリ２０における指定されたアドレスに対してＦＳＢリードを実行するようにメモリＩ／Ｆ１３２に指示する。これに対し、メモリＩ／Ｆ１３２は、ＮＡＮＤメモリ２０における指定されたアドレスに対するＦＳＢリードを実行し、これにより読み出されたソフトビット情報をＥＣＣ部１４に入力する。なお、ＦＳＢリードの読出し先となる物理アドレスの指定は、ＣＰＵ１１からＮＡＮＤコントローラ１３へ再度通知されてもよいし、ＨＢリードまたはＨＳＢリードの際にＮＡＮＤコントローラ１３側で保持しておいた物理アドレスが使用されてもよい。
【００６０】
Ｓ１０９では、アクセスコントローラ１３１は、符号語処理部１４５に対し、たとえば図５に例示するＬＬＲテーブルを用いてＬＬＲを生成する指示を入力するとともに、ＥＣＣ部１４のセレクタ１４４に対し、入力された受信語を直接アクセスコントローラ１３１へ入力する選択信号を入力する。したがって、Ｓ１０９で読み出されたソフトビット情報が入力された符号語処理部１４５は、入力されたソフトビット情報からたとえば図５に例示されたＬＬＲテーブルを用いてＬＬＲを生成することでＦＳＢ軟判定値の受信語を生成する。生成されたＦＳＢ軟判定値の受信語は、セレクタ１４４を介してアクセスコントローラ１３１へ入力される。アクセスコントローラ１３１は、入力された受信語を順次、ＳＲＡＭ１６に蓄積する（Ｓ１１０）。
【００６１】
つづいて、ＳＲＡＭ１６に蓄積されたＦＳＢ軟判定値の受信語に対する第２の軟判定復号の実行が、ＣＰＵ１１から第２の軟判定復号器１７へ指示される。これに対し、第２の軟判定復号器１７は、ＳＲＡＭ１６に蓄積されているＦＳＢ軟判定値の受信語に対する第２の軟判定復号を実行する（Ｓ１１１）。
【００６２】
その後、第２の軟判定復号の終了条件（打ち切り条件）が達成されて第２の軟判定復号が終了すると、次にＣＰＵ１１において、第２の軟判定復号に成功したか否かが判定される（Ｓ１１２）。なお、Ｓ１１１における第２の軟判定復号の終了条件（打ち切り条件）も、上述した終了条件（打ち切り条件）と同様に、たとえば十分に尤もらしい復号語が得られたことや第２の軟判定復号の繰返し回数が予め定めておいた所定回数に達したことなどとすることができる。第２の軟判定復号に成功していた場合（Ｓ１１２；ＹＥＳ）、本動作がＳ１１３へ進む。一方、本実施形態において最終的な復号である第２の軟判定復号に失敗したと判断された場合（Ｓ１１２；ＮＯ）、ＣＰＵ１１は、read要求を発行したホスト２へデータの読出しエラーを返す（Ｓ１１４）。その後、本動作は終了する。
【００６３】
Ｓ１１３では、ＣＰＵ１１による指示の下、ＳＲＡＭ１６に格納されている復元されたユーザデータが、read要求を発行したホスト２へホストＩ／Ｆ１５を介して出力される。その後、本動作は終了する。
【００６４】
以上で説明したように、本実施形態によれば、誤り訂正能力が段階的に異なる復号の成功／失敗に応じて符号語（受信語）の情報量を段階的に増加させる。具体的には、まず、硬判定値の受信語に対して硬判定復号を実行し、この硬判定復号に失敗した場合には硬判定値の受信語よりも情報量が多いＨＳＢ軟判定値の受信語を読み出して第１の軟判定復号を実行し、この第１の軟判定復号に失敗した場合にはＨＳＢ軟判定値の受信語よりもさらに情報量が多いＦＳＢ軟判定値の受信語を読み出して第２の軟判定復号を実行する。上述したように、硬判定復号、第１の軟判定復号、および第２の軟判定復号のなかでは、硬判定復号の誤り訂正能力が最も低く、第２の軟判定復号の誤り訂正能力が最も高い。このような構成を備えることで、たとえばリードディスターブ（ＲＤ）やデータリテンション（ＤＲ）などに起因してＢＥＲが悪化した場合でも、状況等に応じて段階的に誤り訂正能力を増加させることが可能となる。その結果、効率的かつ効果的にビットエラーを訂正することが可能となる。
【００６５】
また、本実施形態では、符号化方式として、生成される符号語の符号長を長くすることなく誤り訂正能力を高めることが可能なＬＤＰＣ符号化方式が採用される。ＬＤＰＣ符号化方式は、たとえば同一の符号長では誤り訂正能力が固定であるＢＣＨ符号等のように、誤り訂正能力を増加させるために符号語の符号量（符号長）を増加させることを必要としない。そのため、上述した実施形態にかかるメモリシステム１の符号化方式としてＬＤＰＣ符号化方式を採用することで、ＯＰ率を低下させることなく、ＢＥＲが低減された信頼性の高いメモリシステムを構築することが可能となる。
【００６６】
さらに、本実施形態では、誤り訂正能力が段階的に異なる復号（硬判定復号、第１の軟判定復号および第２の軟判定復号）それぞれに対し、個別の復号器（硬判定復号器１４２、第１の軟判定復号器１４３および第２の軟判定復号器１７）が設けられている。このような構成とすることで、回路規模と動作速度と誤り訂正能力とのバランスが最適化されたメモリシステム１を実現することが可能となる。たとえば処理量が比較的少なくかつ必要な回路規模が比較的小さい硬判定復号や第１の軟判定復号については、個々のチャネル上に復号器（硬判定復号器１４２／第１の軟判定復号器１４３）を設けてオンザフライで復号が実行される構成とすることで、回路規模に与える影響を抑えつつ迅速な復号処理が可能となる。また、処理量が比較的多くかつ必要な回路規模が比較的大きい第２の軟判定復号については、複数のチャネルで共用の復号器（第２の軟判定復号器１７）とすることで、回路規模の増大を抑えつつ高い誤り訂正能力を実現することが可能となる。
【００６７】
なお、本実施形態では、硬判定復号器１４２と第１の軟判定復号器１４３とを各チャネルに個別に設け、第２の軟判定復号器１７を全てのチャネルで共用とした場合を例示したが、この構成に限られるものではない。たとえば全チャネルの数以下の複数のチャネルで共用する１つの硬判定復号器１４２および／または１つの第１の軟判定復号器１４３を内部バス１８に接続した構成とすることも可能である。
【００６８】
また、本実施形態では、誤り訂正能力が段階的に異なる復号（硬判定復号、第１の軟判定復号、および第２の軟判定復号）それぞれに対して個別の復号器（硬判定復号器１４２、第１の軟判定復号器１４３、および第２の軟判定復号器１７）を設けた場合を例示したが、この構成に限定されるものではない。たとえば硬判定復号器１４２と第１の軟判定復号器１４３とを硬判定復号と第１の軟判定復号とで共用される１つの復号器（たとえば第１の軟判定復号器１４３）とすることも可能である。また、第１の軟判定復号器１４３と第２の軟判定復号器１７とを第１の軟判定復号と第２の軟判定復号とで共用される１つの復号器（たとえば第２の軟判定復号器１７）とすることも可能である。
【００６９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７０】
１…メモリシステム、２…ホスト、１０…メモリコントローラ、１１…ＣＰＵ、１２…ＤＤＲコントローラ、１３，１３１〜１３ｎ…ＮＡＮＤコントローラ、１３１…アクセスコントローラ、１３２…メモリＩ／Ｆ、１４…ＥＣＣ部、１４１…符号化器、１４２…硬判定復号器、１４３…第１の軟判定復号器、１４４…セレクタ、１５…ホストＩ／Ｆ、１６…ＳＲＡＭ、１７…第２の軟判定復号器、１８…内部バス、１９…ＤＲＡＭ、２０，２０１〜２０ｎ…ＮＡＮＤメモリ
【図１】
2018147231.tif 000003
【図２】
2018147231.tif 000004
【図３】
2018147231.tif 000005
【図４】
2018147231.tif 000006
【図５】
2018147231.tif 000007
【図６】
2018147231.tif 000008