(57)【要約】【課題】エラー訂正能力を確保しつつ、高速に処理が可能なエラー訂正処理を実行する不揮発性記憶システムを実現する。【解決手段】不揮発性記憶装置では、硬判定復号処理により１回目に読み出したデータによるエラー訂正復号処理が失敗した場合に、同一ページのデータを再度読み出し、同一ページについて、１回目に読み出したデータと、２回目に読み出したデータとに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。【選択図】図１
2020181317.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備え、
（１）前記メモリインターフェース部により前記不揮発性メモリの第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力し、
（２）前記メモリインターフェース部により前記不揮発性メモリの前記第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第１アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第１アドレスから１回目に読み出したデータと、前記第１アドレスから２回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する、
不揮発性記憶装置。
【請求項２】
前記第１アドレスから１回目に読み出したデータと、前記第１アドレスから２回目に読み出したデータとを用いて前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、
前記メモリインターフェース部は、さらに、前記不揮発性メモリの前記第１アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に前記不揮発性メモリの前記第１アドレスから読み出したデータとに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力し、前記エラー訂正符号復号処理によるエラー訂正符号の復号に失敗した場合、さらに、前記不揮発性メモリの前記第１アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に前記不揮発性メモリの前記第１アドレスから読み出したデータとに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行すること繰り返す、
請求項１に記載の不揮発性記憶装置。
【請求項３】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合
前記メモリインターフェース部は、前記不揮発性メモリからデータを読み出すときのしきい値電圧を調整して、前記不揮発性メモリからデータを読み出す、
請求項１または２に記載の不揮発性記憶装置。
【請求項４】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、前記第１アドレスの前記不揮発性メモリのメモリセルについて、データリテンションの影響が大きいと判定された場合、
前記メモリインターフェース部は、前記不揮発性メモリからデータを読み出すときのしきい値電圧が、前記不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも低くなるように調整して、前記不揮発性メモリからデータを読み出す、
請求項３に記載の不揮発性記憶装置。
【請求項５】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、前記第１アドレスの前記不揮発性メモリのメモリセルについて、リードディスターブの影響が大きいと判定された場合、
前記メモリインターフェース部は、前記不揮発性メモリからデータを読み出すときのしきい値電圧が、前記不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも高くなるように調整して、前記不揮発性メモリからデータを読み出す、
請求項３に記載の不揮発性記憶装置。
【請求項６】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、
前記メモリインターフェース部は、所定の時間経過後に、前記不揮発性メモリの前記第１アドレスからデータを読み出す、
請求項１から５のいずれかに記載の不揮発性記憶装置。
【請求項７】
不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備え、
（１）前記メモリインターフェース部により前記不揮発性メモリの第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力し、
（２）前記メモリインターフェース部により前記不揮発性メモリの前記第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第１アドレスに記憶されているデータと同一のデータが記憶されている前記第１アドレスとは異なる第２アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第１アドレスから読み出したデータと、前記第２アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する、
不揮発性記憶装置。
【請求項８】
不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備える不揮発性記憶装置に用いられるデータ読み出し方法であって、
（１）前記メモリインターフェース部により前記不揮発性メモリの第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力する第１ステップと、
（２）前記メモリインターフェース部により前記不揮発性メモリの前記第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第１アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第１アドレスから１回目に読み出したデータと、前記第１アドレスから２回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する第２ステップと、
を備えるデータ読み出し方法。
【請求項９】
不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備える不揮発性記憶装置に用いられるデータ読み出し方法であって、
（１）前記メモリインターフェース部により前記不揮発性メモリの第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力する第１ステップと、
（２）前記メモリインターフェース部により前記不揮発性メモリの前記第１アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第１アドレスに記憶されているデータと同一のデータが記憶されている前記第１アドレスとは異なる第２アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第１アドレスから読み出したデータと、前記第２アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する第２ステップと、
を備えるデータ読み出し方法。
【請求項１０】
請求項８または９に記載のデータ読み出し方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶システム、不揮発性記憶装置の制御方法に関する。
【背景技術】
【０００２】
半導体不揮発性メモリであるＮＡＮＤフラッシュメモリ等において、セルの微細化技術、多値化技術の進展に伴い、書き込みデータの信頼性が低下しており、誤り訂正符号への要求が高くなってきている。ＮＡＮＤフラッシュメモリにおいて、誤り訂正符号として、従来採用されていたＢＣＨ符号（Ｂｏｓｅ-Ｃｈａｕｄｈｕｒｉ-Ｈｏｃｑｕｅｎｇｈｅｍ  ｃｏｄｅｓ）の代わりに、誤り訂正能力の高いＬＤＰＣ符号（Ｌｏｗ−ｄｅｎｓｉｔｙ  ｐａｒｉｔｙ−ｃｈｅｃｋ  ｃｏｄｅ）を採用すべく、ＬＤＰＣ符号の実用化に向けた多くの研究、開発がなされている。
【０００３】
ＮＡＮＤフラッシュメモリのデータ読み出しにおいて、誤り訂正符号復号を行うことにより読み出しデータの信頼性を向上させることができる。ＮＡＮＤフラッシュメモリでは、通常、読み出しデータのデジタル値のみを用いて誤り訂正符号の復号処理を行う硬判定復号処理（ハードデシジョン復号処理）が実行される。この硬判定復号処理は、読み出しデータのデジタル値のみを用いて誤り訂正符号の復号処理を行うため、処理速度の速いが、この方法では十分な誤り訂正が行えない場合がある。このような場合に対処するために、軟判定復号処理（ソフトデシジョン復号処理）による誤り訂正処理を行う技術が開発されている。例えば、特許文献１には、軟判定復号処理（ソフトデシジョン復号処理）による誤り訂正処理を行い、ＮＡＮＤフラッシュメモリにおけるエラー訂正能力を向上させ、読み出しデータの信頼性を向上させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１６０９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の軟判定復号処理（ソフトデシジョン復号処理）による誤り訂正処理を行うと最低でも３回の読み出しが必要なので、処理時間が長くなってしまう。これは、軟判定復号処理（ソフトデシジョン復号処理）では、データの確からしさを表す対数尤度比（ＬＬＲ：ｌｏｇ−ｌｉｋｅｌｉｈｏｏｄ  ｒａｔｉｏ）と呼ばれる情報の生成が必要で、その生成には複数回の読み出しデータが必要となるためである。
【０００６】
対数尤度比ＬＬＲとは、各シンボル（ビット）の値が「０」である確率と「１」である確率とを対数比で表した情報である。具体的には、対数尤度比ＬＬＲは、ＮＡＮＤフラッシュメモリにおいて、（１）メモリセル毎にデータを読み出すときの電圧（しきい値電圧）の値が範囲ａに含まれるという条件の下で、当該メモリセルに書き込んだビットｘが論理「０」である条件付確率Ｐ（ｘ＝０｜ａ）と、（２）メモリセル毎にデータを読み出すときの電圧（しきい値電圧）の値が範囲ａに含まれるという条件の下で、当該メモリセルに書き込んだビットｘが論理「１」である条件付確率Ｐ（ｘ＝１｜ａ）との比の対数をとった値である。すなわち、
対数尤度比ＬＬＲは、
ＬＬＲ＝ｌｏｇ（Ｐ（ｘ＝０｜ａ）／Ｐ（ｘ＝１｜ａ））
と表される。なお、ｌｏｇは自然対数である。
【０００７】
軟判定復号処理（ソフトデシジョン復号処理）による誤り訂正処理では、誤り訂正能力を向上させるために、対数尤度比ＬＬＲの精度を上げる必要がある。対数尤度比ＬＬＲの精度を上げるためには、メモリセル毎にデータを読み出すときの電圧（しきい値電圧）の値を細かく変更しながら、メモリセル毎にデータを読み出す処理を複数回行う必要がある。このため、軟判定復号処理（ソフトデシジョン復号処理）による誤り訂正処理では、処理時間が長くなってしまう（レーテンシー（ｌａｔｅｎｃｙ）が長くなってしまう）。
【０００８】
本発明は、上記問題点に鑑み、エラー訂正能力を確保しつつ、高速に処理が可能な（高スループットを実現する）エラー訂正処理を実行する不揮発性記憶システム、不揮発性記憶装置、データ読み出し方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、第１の発明は、メモリインターフェース部と、エラー訂正処理部と、を備える不揮発性記憶装置である。
【００１０】
メモリインターフェース部は、不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行う。
【００１１】
エラー訂正処理部は、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行する。
（１）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
（２）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、メモリインターフェース部は、不揮発性メモリの第１アドレスからデータを再度読み出する。また、この場合、エラー訂正処理部は、第１アドレスから１回目に読み出したデータと、第１アドレスから２回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【００１２】
この不揮発性記憶装置では、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、この不揮発性記憶装置では、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、この不揮発性記憶装置では、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合に実行される軟判定復号処理（ソフトデシジョン復号処理）と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【００１３】
また、この不揮発性記憶装置では、１回目に読み出したデータによるエラー訂正復号処理（ＥＣＣ復号化処理）が失敗した場合に、同一ページのデータを再度読み出し（２回目のデータ読み出し処理を実行し）、同一ページについて、１回目に読み出したデータと、２回目に読み出したデータとに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。ダイバーシティ合成処理後のデータに対するＥＣＣ復号化処理は成功する可能性が高くなるので、この不揮発性記憶装置では、上記のように処理することで、エラー訂正能力を向上させることができる。つまり、例えば、ＮＡＮＤフラッシュメモリの同一ページから複数回読み出したデータには、エラービットの数とエラーが発生しているビット位置とが変動するというダイバーシティがあるので、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータは、より多くのデータ情報が得られるため、ＥＣＣ復号化処理を行ったときに、エラー訂正処理が成功する可能性が高くなる。したがって、この不揮発性記憶装置では、１回目に読み出したデータによるＥＣＣ復号化処理が失敗した場合に、新しく読み出しデータとダイバーシティ合成処理を行った後のデータに対するＥＣＣ復号化処理を行うことで、エラー訂正能力を向上させることができる。
【００１４】
このように、この不揮発性記憶装置では、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【００１５】
第２の発明は、第１の発明であって、第１アドレスから１回目に読み出したデータと、第１アドレスから２回目に読み出したデータとを用いてダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、メモリインターフェース部は、以下の処理を行う。
【００１６】
メモリインターフェース部は、さらに、不揮発性メモリの第１アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に不揮発性メモリの第１アドレスから読み出したデータ（例えば、当該最新読み出しデータを読み出す前までに不揮発性メモリの第１アドレスから読み出したすべてのデータ）とに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行する。そして、メモリインターフェース部は、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。一方、エラー訂正符号復号処理によるエラー訂正符号の復号に失敗した場合、メモリインターフェース部は、さらに、不揮発性メモリの第１アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に不揮発性メモリの第１アドレスから読み出したデータ（例えば、当該最新読み出しデータを読み出す前までに不揮発性メモリの第１アドレスから読み出したすべてのデータ）とに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行すること繰り返す。
【００１７】
この不揮発性記憶装置では、復号処理が成功するまで、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータを用いてＥＣＣ復号化処理を行い、毎回読み出したデータごとに新しい情報が加えられるので、エラー訂正能力を向上させることができる。したがって、この不揮発性記憶装置では、読み出し回数が１回ずつ増えることで、徐々にエラー訂正能力を高めていくことができる。
【００１８】
第３の発明は、第１または第２の発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合メモリインターフェース部は、不揮発性メモリからデータを読み出すときのしきい値電圧を調整して、不揮発性メモリからデータを読み出す。
【００１９】
この不揮発性記憶装置では、エラー訂正処理が成功しない場合、ダイバーシティ性を増やすために、データ読み出し時のしきい値電圧を（例えば、所定の範囲内でランダムに）変更して取得した読み出しデータを用いて、ダイバーシティ合成処理を行うことで、不揮発性メモリについての影響（例えば、データリテンションの影響、リードディスターブの影響等）を低減させた読み出しデータを取得することができ、当該読み出しデータに対して、誤り訂正処理を行うことで、より高精度に、読み出しデータに対する誤り訂正処理を行うことができる。
【００２０】
第４の発明は、第３の発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、第１アドレスの不揮発性メモリのメモリセルについて、データリテンションの影響が大きいと判定された場合、メモリインターフェース部は、不揮発性メモリからデータを読み出すときのしきい値電圧が、不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも低くなるように調整して、不揮発性メモリからデータを読み出す。
【００２１】
これにより、この不揮発性記憶装置において、データリテンションの影響が大きいと判定された場合、正しいデータを読み出す可能性が高くなり、その結果、高精度なエラー訂正処理を実現することができる。
【００２２】
第５の発明は、第３の発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、第１アドレスの不揮発性メモリのメモリセルについて、リードディスターブの影響が大きいと判定された場合、メモリインターフェース部は、不揮発性メモリからデータを読み出すときのしきい値電圧が、不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも高くなるように調整して、不揮発性メモリからデータを読み出す。
【００２３】
これにより、この不揮発性記憶装置において、リードディスターブの影響が大きいと判定された場合、正しいデータを読み出す可能性が高くなり、その結果、高精度なエラー訂正処理を実現することができる。
【００２４】
第６の発明は、第１から第５のいずれかの発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、メモリインターフェース部は、所定の時間経過後に、不揮発性メモリの第１アドレスからデータを読み出す。
【００２５】
これにより、この不揮発性記憶装置では、ｉ回目（ｉ：自然数）の読み出しデータとｉ＋１回目の読み出しデータのダイバーシティ度合いを高め、エラー訂正処理の精度を向上させることができる。例えば、ｉ回目のデータ読み出し処理と、ｉ＋１回目のデータ読み出し処理との間の時間は、所定の規格（例えば、ＳＤ規格）により規定されているデータ読み出し時間を遵守できる時間内のできる限り長い時間に設定することが好ましい。また、ｉ回目のデータ読み出し処理と、ｉ＋１回目のデータ読み出し処理との間の時間は、固定の時間であってもよいし、可変の時間であってもよい。
【００２６】
第７の発明は、メモリインターフェース部と、エラー訂正処理部と、を備える不揮発性記憶装置である。
【００２７】
メモリインターフェース部は、不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行う。
【００２８】
エラー訂正処理部は、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行する。
（１）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
（２）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、メモリインターフェース部は、不揮発性メモリの第１アドレスに記憶されているデータと同一のデータが記憶されている第１アドレスとは異なる第２アドレスからデータを再度読み出す。また、この場合、エラー訂正処理部は、第１アドレスから読み出したデータと、第２アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【００２９】
この不揮発性記憶装置では、１回目に読み出したデータ（第１アドレスから読み出したデータ）によるＥＣＣ復号化処理が失敗した場合に、同一データが記憶されている第２アドレスからデータを再度読み出し、同一データが記憶されている異なるアドレスから読み出した２つのデータに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。異なるアドレスにおいてエラー発生状況は異なるので、ダイバーシティ合成処理後のデータに対するＥＣＣ復号化処理は成功する可能性が高くなる。したがって、この不揮発性記憶装置では、上記のように処理することで、エラー訂正能力を向上させることができる。
【００３０】
このように、この不揮発性記憶装置では、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【００３１】
なお、「第１アドレス」は、例えば、第１物理ブロック内のアドレスであり、「第２アドレス」は、例えば、第１物理ブロックとは異なる物理ブロックである第２物理ブロック内のアドレスである。つまり、第１物理ブロックの「第１アドレス」、および、第２物理ブロックの「第２アドレス」に同一データが書き込まれている場合、第１物理ブロックの「第１アドレス」から読み出したデータと、第２物理ブロックの「第２アドレス」から読み出しデータを用いて、上記のように処理を行うことで、エラー訂正能力を向上させることができる。
【００３２】
また、同一データを異なるアドレスに書き込み冗長化を行う場合、同一データを書き込む単位は、以下のようにしてもよい。
（１）複数の不揮発性メモリを備える場合、ブロック単位、または、ページ単位。
（２）単独の不揮発性メモリを備える場合であって、複数のプレーンを備える場合、ブロック単位、または、ページ単位。なお、この場合、同一データを書き込むブロック（または、ページ）は、互いに異なるプレーンに含まれるブロック（または、ページ）であることが好ましい。
【００３３】
第８の発明は、不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行うメモリインターフェース部と、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、を備える不揮発性記憶装置に用いられるデータ読み出し方法である。データ読み出し方法は、第１ステップと、第２ステップとを備える。
【００３４】
第１ステップにおいて、（１）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
【００３５】
第２ステップにおいて、（２）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、メモリインターフェース部は、不揮発性メモリの第１アドレスからデータを再度読み出す。また、エラー訂正処理部は、第１アドレスから１回目に読み出したデータと、第１アドレスから２回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【００３６】
これにより、第１の発明と同様の効果を奏するデータ読み出し方法を実現することができる。
【００３７】
第９の発明は、不揮発性メモリに対して、データの書き込み処理、および／または、データの読み出し処理を行うメモリインターフェース部と、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、を備える不揮発性記憶装置に用いられるデータ読み出し方法である。データ読み出し方法は、第１ステップと、第２ステップとを備える。
【００３８】
第１ステップにおいて、（１）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
【００３９】
第２ステップにおいて、（２）メモリインターフェース部により不揮発性メモリの第１アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
メモリインターフェース部は、不揮発性メモリの第１アドレスに記憶されているデータと同一のデータが記憶されている第１アドレスとは異なる第２アドレスからデータを再度読み出す。また、エラー訂正処理部は、第１アドレスから読み出したデータと、第２アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【００４０】
これにより、第７の発明と同様の効果を奏するデータ読み出し方法を実現することができる。
【００４１】
第１０の発明は、第８または第９の発明であるデータ読み出し方法をコンピュータに実行させるためのプログラムである。
【００４２】
これにより、第８または第９の発明と同様の効果を奏するデータ読み出し方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【００４３】
本発明によれば、エラー訂正能力を確保しつつ、高速に処理が可能な（高スループットを実現する）エラー訂正処理を実行する不揮発性記憶システム、不揮発性記憶装置、データ読み出し方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【００４４】
【図１】第１実施形態に係る不揮発性記憶システム１０００の概略構成図。
【図２】第１実施形態のデータ読み出し処理のフローチャート。
【図３】第１実施形態の第１変形例のデータ読み出し処理のフローチャート。
【図４】第１実施形態の第２変形例に係る不揮発性記憶システム１０００Ａの概略構成図。
【図５】第１実施形態の第２変形例に係る不揮発性記憶システム１０００Ａにおけるデータ読み出し処理のフローチャートである。
【図６】不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフ。
【図７】第１実施形態の第３変形例に係る不揮発性記憶システム１０００Ｂの概略構成図。
【図８】第１実施形態の第３変形例に係る不揮発性記憶システム１０００Ｂにおけるデータ読み出し処理のフローチャート。
【図９】ＣＰＵバス構成を示す図。
【発明を実施するための形態】
【００４５】
［第１実施形態］
第１実施形態について、図面を参照しながら、以下、説明する。
【００４６】
＜１．１：不揮発性記憶システムの構成＞
図１は、第１実施形態に係る不揮発性記憶システム１０００の概略構成図である。
【００４７】
不揮発性記憶システム１０００は、図１に示すように、ホスト装置１と、不揮発性記憶装置２と、備える。ホスト装置１と不揮発性記憶装置２とは、例えば、バスで接続されている。
【００４８】
不揮発性記憶装置２は、図１に示すように、メモリコントローラＭＣと、不揮発性メモリＭＥＭ１と、を備える。
【００４９】
メモリコントローラＭＣは、図１に示すように、ホストインターフェース部ＩＦ２１と、メモリインターフェース部ＩＦ２２と、コマンド制御部２１と、アドレス変換部２２と、ＥＣＣ符号化部２３と、ダイバーシティ合成処理部２４と、データ保持部２５と、ＥＣＣ復号化部２６と、制御部２７と、を備える。
【００５０】
ホスト装置１は、バス（クロック信号、データ、コマンド等を送受信するための通信路）を介して、不揮発性記憶装置２と電気的に接続することが可能である。ホスト装置１は、不揮発性記憶装置２に対して、コマンド、データ等を送信し、および／または、不揮発性記憶装置２から、ステータス信号やデータ等を受信する。
【００５１】
不揮発性記憶装置２は、データを記憶することができる不揮発性メモリＭＥＭ１と、不揮発性メモリＭＥＭ１を制御するメモリコントローラＭＣとを備える。不揮発性記憶装置２は、バス（クロック信号、データ、コマンド等を送受信するための通信路）を介して、ホスト装置１と電気的に接続することが可能である。不揮発性記憶装置２は、ホスト装置１から、コマンド、データ等を受信し、および／または、ホスト装置１へ、ステータス信号やデータ等を送信する。
【００５２】
不揮発性メモリＭＥＭは、例えば、ＮＡＮＤフラッシュメモリ（例えば、１つのメモリセルに多値データを記憶できるＮＡＮＤフラッシュメモリ）であり、メモリコントローラＭＣの制御に従い、データの書き込みおよび／または読み出しを行うことができるメモリである。
【００５３】
メモリコントローラＭＣは、不揮発性メモリＭＥＭ１のデータの書き込み処理および／または読み出し処理の制御を行う。メモリコントローラＭＣは、図１に示すように、ホストインターフェース部ＩＦ２１と、メモリインターフェース部ＩＦ２２と、コマンド制御部２１と、アドレス変換部２２と、ＥＣＣ符号化部２３と、ダイバーシティ合成処理部２４と、データ保持部２５と、ＥＣＣ復号化部２６と、制御部２７と、を備える。
【００５４】
ホストインターフェース部ＩＦ２１は、ホスト装置１とのインターフェース部である。ホストインターフェース部ＩＦ２１は、例えば、バスにより、ホスト装置１と接続され、バスを介して、ホスト装置１から、データ、コマンド等を受信する（ホスト装置１から不揮発性記憶装置２に送信されるデータ、コマンド等を含む送信データをデータＤＨ１とする）。また、ホストインターフェース部ＩＦ２１は、バスを介して、ホスト装置１へ、ステータス信号、データ等を送信する（不揮発性記憶装置２からホスト装置１へ送信されるステータス信号、データ等を含む送信データをデータＤＳ１とする）。
【００５５】
ホストインターフェース部ＩＦ２１は、ホスト装置１から受信したコマンドを、コマンド制御部２１および制御部２７に、コマンドＣｍｄとして出力する。また、ホストインターフェース部ＩＦ２１は、ホスト装置１から受信したコマンドが書き込みコマンドである場合、当該書き込みコマンドに付随する書き込みデータをデータＤ１＿ｗとしてＥＣＣ符号化部２３に出力する。
【００５６】
また、ホストインターフェース部ＩＦ２１は、ＥＣＣ復号化部２６から出力される読み出しデータ（データＤ４＿ｒ）を入力する。そして、ホストインターフェース部ＩＦ２１は、入力された読み出しデータ（データＤ４＿ｒ）を、バスを介して、ホスト装置１へ、データＤＳ１として、送信する。
【００５７】
コマンド制御部２１は、ホストインターフェース部ＩＦ２１から出力されるコマンドＣｍｄを入力とする。コマンド制御部２１は、ホストインターフェース部ＩＦ２１から出力されるコマンドＣｍｄをデコードし、当該コマンドで指定されている論理アドレスを取得する。そして、コマンド制御部２１は、取得した論理アドレスに関する情報を含むデータをデータＤ１＿ａｄｒとしてアドレス変換部２２に出力する。
【００５８】
アドレス変換部２２は、コマンド制御部２１から出力される論理アドレスに関する情報を含むデータＤ１＿ａｄｒを入力する。また、アドレス変換部２２は、論理アドレス／物理アドレス変換テーブルを有している。アドレス変換部２２は、論理アドレス／物理アドレス変換テーブルに基づいて、コマンド制御部２１から入力されたデータＤ１＿ａｄｒに含まれる論理アドレスを物理アドレスに変換する。そして、アドレス変換部２２は、当該物理アドレスに関する情報を含むデータを、データＤ２＿ａｄｒとして、メモリインターフェース部ＩＦ２２に出力する。
【００５９】
ＥＣＣ符号化部２３は、ホストインターフェース部ＩＦ２１から出力される書き込みデータＤ１＿ｗを入力する。ＥＣＣ符号化部２３は、入力された書き込みデータＤ１＿ｗに対して、例えば、ＬＤＰＣ符号化処理を実行し、ＬＤＰＣ符号化処理により取得されたデータをデータＤ２＿ｗとしてメモリインターフェース部ＩＦ２２に出力する。
【００６０】
メモリインターフェース部ＩＦ２２は、不揮発性メモリＭＥＭ１に対してデータを書き込む処理、および／または、不揮発性メモリＭＥＭ１からデータを読み出す処理の制御を行うインターフェース部である。メモリインターフェース部ＩＦ２２は、アドレス変換部２２から出力されるデータＤ２＿ａｄｒと、ＥＣＣ符号化部２３から出力されるデータＤ２＿ｗと、制御部２７から出力される制御信号Ｃｔｌ１とを入力する。
【００６１】
不揮発性メモリＭＥＭ１に対してデータを書き込む処理を行う場合、メモリインターフェース部ＩＦ２２は、アドレス変換部２２から出力される物理アドレス（書き込みアドレス）を含むデータＤ２＿ａｄｒと、ＥＣＣ符号化部２３から出力される書き込みデータＤ１＿ｗとを入力する。そして、メモリインターフェース部ＩＦ２２は、制御部２７からの制御信号Ｃｔｌ１に従い、不揮発性メモリＭＥＭ１において、データＤ２＿ａｄｒに含まれる当該物理アドレス（書き込みアドレス）に、ＥＣＣ符号化部２３から出力される書き込みデータＤ１＿ｗが書き込まれるように、不揮発性メモリＭＥＭ１に対して、データ書き込み制御を行う。
【００６２】
不揮発性メモリＭＥＭ１からデータを読み出す処理を行う場合、メモリインターフェース部ＩＦ２２は、アドレス変換部２２から出力される物理アドレス（読み出しアドレス）を含むデータＤ２＿ａｄｒを入力する。そして、メモリインターフェース部ＩＦ２２は、不揮発性メモリＭＥＭ１において、データＤ２＿ａｄｒに含まれる当該物理アドレス（読み出しアドレス）に、記憶されているデータを読み出すように、不揮発性メモリＭＥＭ１に対して、データ読み出し制御を行う。そして、メモリインターフェース部ＩＦ２２は、読み出したデータをデータＤ２＿ｒとして、ダイバーシティ合成処理部２４およびデータ保持部２５に出力する。
【００６３】
ダイバーシティ合成処理部２４は、メモリインターフェース部ＩＦ２２から出力されるデータＤ２＿ｒと、データ保持部２５から出力されるデータＤ２ｈ＿ｒと、制御部２７から出力される制御信号Ｃｔｌ３とを入力する。
（１）制御信号Ｃｔｌ３がダイバーシティ合成処理の実行を指示している信号値である場合、ダイバーシティ合成処理部２４は、データＤ２＿４とデータＤ２ｈ＿４とを用いて、ダイバーシティ合成処理を実行し、当該処理後のデータを、データＤ３＿ｒとして、ＥＣＣ復号化部２６に出力する。
（２）制御信号Ｃｔｌ３がダイバーシティ合成処理の実行を指示していない信号値である場合、ダイバーシティ合成処理部２４は、データＤ２＿４をデータＤ３＿ｒとして、ＥＣＣ復号化部２６に出力する。
【００６４】
データ保持部２５は、メモリインターフェース部ＩＦ２２から出力されるデータＤ２＿ｒと、制御部２７から出力される制御信号Ｃｔｌ２とを入力する。データ保持部２５は、データＤ２＿ｒを記憶保持する。また、データ保持部２５は、制御部２７からの制御信号Ｃｔｌ２に従い、記憶保持しているデータをデータＤ２ｈ＿ｒとして、ダイバーシティ合成処理部２４に出力する。
【００６５】
ＥＣＣ復号化部２６は、ダイバーシティ合成処理部２４から出力されるデータＤ３＿ｒと、制御部２７から出力される制御信号Ｃｔｌ４とを入力する。ＥＣＣ復号化部２６は、制御信号Ｃｔｌ４に従い、データＤ３＿ｒに対して、ＬＤＰＣ復号化処理を実行し、ＬＤＰＣ復号化処理により取得されたデータをデータＤ４＿ｒとしてホストインターフェース部ＩＦ２１に出力する。
【００６６】
制御部２７は、ホストインターフェース部ＩＦ２１から出力されるコマンドＣｍｄを入力する。制御部２７は、コマンドＣｍｄに基づいて（コマンドＣｍｄにより決定されるモード（データ読み出しモード／データ書き込みモード）に基づいて）、メモリインターフェース部ＩＦ２２を制御するための制御信号Ｃｔｌ１、データ保持部２５を制御するための制御信号Ｃｔｌ２、ダイバーシティ合成処理部２４を制御するための制御信号Ｃｔｌ３、および、ＥＣＣ復号化部２６を制御するための制御信号Ｃｔｌ４を生成し、生成した制御信号を、それぞれ、所定のタイミングで、メモリインターフェース部ＩＦ２２、データ保持部２５、ダイバーシティ合成処理部２４、および、ＥＣＣ復号化部２６に出力する。また、制御部２７は、タイマー２７１を備えており、所定の時刻から、所定の時間経過後に、制御信号を出力することができる。
【００６７】
なお、「エラー訂正処理部」は、ダイバーシティ合成処理部２４と、データ保持部２５と、ＥＣＣ復号化部２６とにより、その機能が実現される。
【００６８】
＜１．２：不揮発性記憶システムの動作＞
以上のように構成された不揮発性記憶システム１０００の動作について、図面を参照しながら、説明する。なお、以下では、データ書き込み処理と、データ読み出し処理とに分けて、説明する。
【００６９】
（１．２．１：データ書き込み処理）
まず、データ書き込み処理について、説明する。
【００７０】
ホスト装置１は、メモリコントローラＭＣに対して、書き込みコマンドと書き込みデータを送信する。
【００７１】
ホストインターフェース部ＩＦ２１は、書き込みコマンドを取得し、取得した書き込みコマンド（コマンドＣｍｄ）をコマンド制御部２１および制御部２７に出力する。
【００７２】
コマンド制御部２１は、書き込みコマンド（コマンドＣｍｄ）をデコードし、書き込み論理アドレスを取得する。そして、コマンド制御部２１は、取得した書き込み論理アドレスに関する情報を含むデータをデータＤ１＿ａｄｒとして、アドレス変換部２２に出力する。
【００７３】
アドレス変換部２２は、論理アドレス／物理アドレス変換テーブルに基づいて、入力された書き込み論理アドレス（データＤ１＿ａｄｒに含まれる書き込み論理アドレス）を物理アドレスに変換する。そして、アドレス変換部２２は、当該物理アドレスを含むデータをデータＤ２＿ａｄｒとして、メモリインターフェース部ＩＦ２２に出力する。
【００７４】
ホストインターフェース部ＩＦ２１は、書き込みコマンドに付随する書き込みデータ（これをＤ１＿ｗと表記する。）を、ＥＣＣ符号化部２３に出力する。
【００７５】
ＥＣＣ符号化部２３は、ホストインターフェース部ＩＦ２１から出力される書き込みデータＤ１＿ｗに対して、ＬＤＰＣ符号化処理を実行し、ＬＤＰＣ符号化処理後のデータをデータＤ２＿ｗとして取得する。そして、ＥＣＣ符号化部２３は、取得したデータＤ２＿ｗをメモリインターフェース部ＩＦ２２に出力する。なお、ＬＤＰＣ符号化処理は、不揮発性メモリＭＥＭ１のデータ読み出し単位であるページに対応するビット数を単位として、処理されることが好ましい。例えば、不揮発性メモリＭＥＭ１の１ページに書き込むデータがＮビット（Ｎ：自然数）である場合、ＬＤＰＣ符号化処理により生成されるＬＤＰＣ符号語は、Ｎビットのデータである。
【００７６】
メモリインターフェース部ＩＦ２２は、制御信号Ｃｔｌ１に従い、アドレス変換部２２から出力されるデータＤ２＿ａｄｒに含まれる書き込みアドレスと、ＥＣＣ符号化部２３から出力される書き込みデータ(符号データ)Ｄ２＿ｗとを不揮発性メモリＭＥＭ１に出力する。そして、不揮発性メモリＭＥＭ１において、メモリインターフェース部ＩＦ２２により指定された書き込みアドレスに、当該書き込みデータが、書き込まれる。なお、不揮発性メモリＭＥＭ１には、不揮発性メモリについて規定される最低書き込み単位で、データが書き込まれる。例えば、不揮発性メモリがＴＬＣ  ＮＡＮＤフラッシュメモリ（ＴＬＣ：Ｔｒｉｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）である場合、最低書き込み単位は、３ページ（ページ３個分）である。なお、「不揮発性メモリについて規定される最低書き込み単位」は、上記に限定されない。
【００７７】
（１．２．２：データ読み出し処理）
次に、データ読み出し処理について、説明する。
【００７８】
図２は、データ読み出し処理のフローチャートである。以下では、図２のフローチャートを参照しながら、データ読み出し処理について、説明する。
【００７９】
（ステップＳ１０１）：
ステップＳ１０１では、１回目のデータ読み出し処理が実行される。
【００８０】
ホスト装置１は、メモリコントローラＭＣに対して、読み出しコマンドを送信する。
【００８１】
ホストインターフェース部ＩＦ２１は、読み出しコマンド（コマンドＣｍｄ）を取得し、取得した読み出しコマンドを、コマンド制御部２１および制御部２７に出力する。
【００８２】
コマンド制御部２１は、読み出しコマンド（コマンドＣｍｄ）をデコードし、読み出し論理アドレスを取得する。ここでは、読み出し論理アドレスが論理アドレスＬＡｄｒ１であるものとする。そして、コマンド制御部２１は、取得した読み出し論理アドレスＬＡｄｒ１に関する情報を含むデータをデータＤ１＿ａｄｒとして、アドレス変換部２２に出力する。
【００８３】
アドレス変換部２２は、論理アドレス／物理アドレス変換テーブルに基づいて、入力されたデータＤ１＿ａｄｒに含まれる読み出し論理アドレスＬＡｄｒ１を物理アドレスＰＡｄｒ１に変換する。そして、アドレス変換部２２は、当該物理アドレスＰＡｄｒ１に関する情報を含むデータを、データＤ２＿ａｄｒとして、メモリインターフェース部ＩＦ２２に出力する。
【００８４】
メモリインターフェース部ＩＦ２２は、アドレス変換部２２から出力されるデータＤ２＿ａｄｒに含まれる読み出しアドレスＰＡｄｒ１を不揮発性メモリＭＥＭ１に出力する。
【００８５】
そして、不揮発性メモリＭＥＭ１において、メモリインターフェース部ＩＦ２２により指定された読み出しアドレスＰＡｄｒ１から、データが読み出される。なお、データは、ページ単位で読み出される。
【００８６】
不揮発性メモリＭＥＭ１は、データ読み出し処理を開始し、読み出しデータ（符号データ）Ｄ１＿ｒをメモリインターフェース部ＩＦ２２に出力する。
【００８７】
メモリインターフェース部ＩＦ２２は、不揮発性メモリＭＥＭ１からの読み出しデータＤ１＿ｒを取得し、取得した読み出しデータＤ１＿ｒを、データＤ２＿ｒとして、ダイバーシティ合成処理部２４およびデータ保持部２５に出力する。データ保持部２５は、データＤ２＿ｒを記憶保持する。なお、データＤ１＿ｒ、Ｄ２＿ｒは、１ページ分のデータであるものとする。
【００８８】
（ステップＳ１０２、Ｓ１０３）：
ステップＳ１０２では、ＥＣＣ復号化処理（ＬＤＰＣ復号化処理）が実行される。
【００８９】
制御部２７は、第１回目の読み出し処理であることを把握し、ダイバーシティ合成処理部２４に対して、入力された読み出しデータＤ２＿ｒをそのままデータＤ３＿ｒとして、ＥＣＣ復号化部２６に出力するよう指示する制御信号Ｃｔｌ３を生成し、当該制御信号Ｃｔｒ３をダイバーシティ合成処理部２４に出力する。
【００９０】
ダイバーシティ合成処理部２４は、制御信号Ｃｔｌ３に従い、入力された読み出しデータＤ２＿ｒをそのままデータＤ３＿ｒとして、ＥＣＣ復号化部２６に出力する。
【００９１】
ＥＣＣ復号化部２６は、ダイバーシティ合成処理部２４から出力されるデータＤ３＿ｒに対して、ＬＤＰＣ復号化処理を実行する。そして、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化が成功したか否かの判定を行う（ステップＳ１０３）。具体的には、ＥＣＣ復号化部２６は、データＤ３＿ｒの各ビットのデータ（２値データ）に対して、ＬＤＰＣ復号化処理を繰り返し実行し、（１）所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定し、（２）一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定する。
【００９２】
そして、ＥＣＣ復号化部２６は、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定した場合、処理をステップＳ１０９に進め、一方、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定した場合、処理をステップＳ１０４、Ｓ１０５に進める。
【００９３】
（ステップＳ１０４）：
ステップＳ１０４において、２回目のデータ読み出し処理が実行される。
【００９４】
制御部２７は、１回目のデータ読み出し処理と同じページのデータを読み出すための制御信号Ｃｔｌ１を生成し、当該制御信号Ｃｔｌ１をメモリインターフェース部ＩＦ２２に出力する。
【００９５】
メモリインターフェース部ＩＦ２２は、制御信号Ｃｔｌ１に従い、１回目のデータ読み出し処理と同じページのデータを読み出す。すなわち、メモリインターフェース部ＩＦ２２は、１回目のデータ読み出し処理と同じページの物理アドレスＰＡｄｒ１から、データを読み出す。
【００９６】
なお、制御部２７は、タイマー２７１の時間情報を参照し、１回目のデータ読み出し処理が実行された時刻から、所定の時間経過後（例えば、１５０ｍｓ経過後）に、２回目のデータ読み出し処理が実行されるように、制御信号Ｃｔｌ１を生成し、当該制御信号Ｃｔｌ１をメモリインターフェース部ＩＦ２２に出力するようにしてもよい。これにより、不揮発性記憶装置２では、１回目のデータ読み出し処理が実行された時刻から、所定の時間経過後に、２回目のデータ読み出し処理を実行することができる。
【００９７】
不揮発性メモリＭＥＭ１は、データ読み出し処理を開始し、読み出しデータ（符号データ）Ｄ１＿ｒをメモリインターフェース部ＩＦ２２に出力する。
【００９８】
メモリインターフェース部ＩＦ２２は、不揮発性メモリＭＥＭ１からの読み出しデータＤ１＿ｒを取得し、取得した読み出しデータＤ１＿ｒを、データＤ２＿ｒとして、ダイバーシティ合成処理部２４およびデータ保持部２５に出力する。
【００９９】
（ステップＳ１０５）：
ステップＳ１０５では、１回目の読み出しデータの取得処理が行われる。具体的には、データ保持部２５は、記憶保持している１回目の読み出しデータを読み出し、読み出したデータをデータＤ２ｈ＿ｒとして、ダイバーシティ合成処理部２４に出力する。
【０１００】
（ステップＳ１０６）：
ステップＳ１０６では、データ保持部２５から出力された１回目の読み出しデータＤ２ｈ＿ｒと、２回目の読み出しデータＤ２＿ｒとを用いて、ダイバーシティ合成処理が実行される。つまり、不揮発性メモリＭＥＭ１の同一ページから１回目と２回目に読み出されたデータを用いて、ダイバーシティ合成処理が実行される。
【０１０１】
具体的には、ダイバーシティ合成処理部２４は、以下のように処理することで、ダイバーシティ合成処理を実行する。
【０１０２】
読み出しデータがＮビット（Ｎ：自然数）のデータであり、各ビットの値は、「０」または「１」であるものとし、ｉ回目に読み出されたデータの第ｊビット目（ｊ：整数、１≦ｊ≦Ｎ）のデータをｄｉ，ｊとすると、ダイバーシティ合成処理部２４は、下記数式に相当する処理を実行し、読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊを取得する。なお、本実施形態において、読み出し回数は２回であるので、ｍ＝２である。
【数１】
2020181317.tif 000003
ｄｉ，ｊ＝｛０，１｝
Ｋ：正の係数（ゲイン）
ｃ：正の係数（オフセット）
そして、ダイバーシティ合成処理部２４は、（１）上記処理により取得した読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊがＬＬＲｊ≧０を満たす場合、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「１」とし、（２）上記処理により取得した読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊがＬＬＲｊ＜０を満たす場合、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「０」とすることで、ダイバーシティ合成処理後のデータ（Ｎビットのデータ）を取得する。
【０１０３】
例えば、Ｋ＝１、ｃ＝１とした場合、ダイバーシティ合成処理部２４は、以下のようにして、ダイバーシティ合成処理後のデータを取得する。
（１）１回目に読み出したデータと２回目に読み出したデータの第ｊビット目のデータがともに「１」である場合、
ＬＬＲｊ＝（Ｋ／２）×２−Ｋ／２＋ｃ＝Ｋ／２＋ｃ＝０．５＋１＝１．５
となり、１．５＞０なので、ダイバーシティ合成処理部２４は、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「１」とする。
（２）１回目に読み出したデータの第ｊビット目のデータが「０」であり、２回目に読み出したデータの第ｊビット目のデータがともに「１」である場合、
ＬＬＲｊ＝（Ｋ／２）×１−Ｋ／２＋ｃ＝０＋ｃ＝１
となり、１＞０なので、ダイバーシティ合成処理部２４は、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「１」とする。
（３）Ｋ＝１、ｃ＝１とした場合、１回目に読み出したデータと２回目に読み出したデータの第ｊビット目のデータがともに「０」である場合、
ＬＬＲｊ＝（Ｋ／２）×０−Ｋ／２−ｃ＝−Ｋ／２−ｃ＝―０．５−１＝−１．５
となり、−１．５＜０なので、ダイバーシティ合成処理部２４は、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「０」とする。
【０１０４】
上記のように処理することで、ダイバーシティ合成処理部２４は、データ保持部２５から出力された１回目の読み出しデータＤ２ｈ＿ｒと、２回目の読み出しデータＤ２＿ｒとから、ダイバーシティ合成処理後の読み出しデータを取得する。
【０１０５】
なお、不揮発性記憶装置２において、このようにダイバーシティ合成処理を実行する理由は、以下の通りである。
【０１０６】
ＮＡＮＤフラッシュメモリでは同じページでも、読み出すときに発生するエラービットの数と位置が読み出しごとに異なることが分かっている。特に、読み出しの間隔時間が相対的に長い場合、この現象が顕著に表れる。例えば、１回目にあるページのデータを読み出した後、所定の期間（例えば、１５０ｍｓ）を待って当該ページからもう一度データを読み出した場合において、ＮＡＮＤフラッシュメモリの同一ページから、１回目に読み出したデータと２回目に読み出したデータとを比較すると、エラービットの数とエラーが発生しているビット位置とがかなり異なる。この現象から、ＮＡＮＤフラッシュメモリの同一ページから複数回読み出したデータにはダイバーシティがあることが分かる。このダイバーシティを利用することで、エラー訂正強度を向上させることができる。つまり、ＮＡＮＤフラッシュメモリの同一ページから複数回読み出したデータをダイバーシティ合成による得られたＬＬＲを使って、ダイバーシティ合成語のデータを取得し、取得したダイバーシティ合成語のデータに対して、ＥＣＣ復号化処理を行うことで、読み出しデータのエラー訂正強度を向上させることができる。
【０１０７】
上記のようにして取得されたダイバーシティ合成処理後の読み出しデータは、データＤ３＿ｒとして、ダイバーシティ合成処理部２４からＥＣＣ復号化部２６に出力される。
【０１０８】
（ステップＳ１０７、Ｓ１０８）：
ステップＳ１０７では、ＥＣＣ復号化処理（ＬＤＰＣ復号化処理）が実行される。
【０１０９】
ＥＣＣ復号化部２６は、ダイバーシティ合成処理部２４から出力されるデータＤ３＿ｒに対して、ＬＤＰＣ復号化処理を実行する。そして、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化が成功したか否かの判定を行う（ステップＳ１０８）。具体的には、ＥＣＣ復号化部２６は、データＤ３＿ｒの各ビットのデータ（２値データ）に対して、ＬＤＰＣ復号化処理を繰り返し実行し、（１）所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定し、（２）一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定する。
【０１１０】
そして、ＥＣＣ復号化部２６は、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定した場合、処理をステップＳ１０９に進め、一方、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定した場合、処理をステップＳ１１０に進める。
【０１１１】
（ステップＳ１０９）：
ステップＳ１０９において、ホストインターフェース部ＩＦ２１は、ＥＣＣ復号化部２６から出力されるデータＤ４＿ｒ（ＬＤＰＣ復号化処理が成功した判定されたデータ）を入力し、当該データＤ４＿ｒを含めたデータＤＳ１を生成し、当該データＤＳ１をホスト装置１に出力する。
【０１１２】
ホスト装置１は、ホストインターフェース部ＩＦ２１から出力されるデータＤＳ１を受信することで、エラー訂正強度の高い読み出しデータを取得することができる。
【０１１３】
（ステップＳ１１０）：
ステップＳ１１０において、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化処理が失敗したことを示すデータ（例えば、復号化の失敗を示すフラグ）を生成し、当該データ（ＬＤＰＣ復号化処理が失敗したことを示すデータ）をデータＤ４＿ｒとして、ホストインターフェース部ＩＦ２１に出力する。
【０１１４】
ホストインターフェース部ＩＦ２１は、ＥＣＣ復号化部２６から出力されるデータＤ４＿ｒ（ＬＤＰＣ復号化処理が失敗したことを示すデータ）を入力し、当該データＤ４＿ｒを含めたデータＤＳ１を生成し、当該データＤＳ１をホスト装置１に出力する。
【０１１５】
ホスト装置１は、ホストインターフェース部ＩＦ２１から出力されるデータＤＳ１を受信することで、要求したアドレスのデータの読み出しに失敗したことを把握する。
【０１１６】
以上のように、不揮発性記憶システム１０００では、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、不揮発性記憶システム１０００では、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、不揮発性記憶システム１０００では、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合に実行される軟判定復号処理（ソフトデシジョン復号処理）と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【０１１７】
また、不揮発性記憶システム１０００では、１回目に読み出したデータによるＥＣＣ復号化処理が失敗した場合に、同一ページのデータを再度読み出し（２回目のデータ読み出し処理を実行し）、同一ページについて、１回目に読み出したデータと、２回目に読み出したデータとに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。ダイバーシティ合成処理後のデータに対するＥＣＣ復号化処理は成功する可能性が高くなるので、不揮発性記憶システム１０００では、上記のように処理することで、エラー訂正能力を向上させることができる。つまり、ＮＡＮＤフラッシュメモリの同一ページから複数回読み出したデータには、エラービットの数とエラーが発生しているビット位置とが変動するというダイバーシティがあるので、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータは、ＥＣＣ復号化処理を行ったときに、エラー訂正処理が成功する可能性が高くなる。したがって、不揮発性記憶システム１０００では、１回目に読み出したデータによるＥＣＣ復号化処理が失敗した場合に、ダイバーシティ合成処理後のデータに対するＥＣＣ復号化処理を行うことで、エラー訂正能力を向上させることができる。
【０１１８】
このように、不揮発性記憶システム１０００では、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【０１１９】
なお、同一ページに対する、１回目のデータ読み出し処理と、２回目のデータ読み出し処理との間の時間は、所定の規格（例えば、ＳＤ規格）により規定されているデータ読み出し時間を遵守できる時間内のできる限り長い時間に設定することが好ましい。
【０１２０】
≪第１変形例≫
次に、第１実施形態の第１変形例について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【０１２１】
第１実施形態では、同一ページからのデータ読み出し回数は２回であったが、本変形例では、同一ページからのデータ読み出し処理が、ＥＣＣ復号化処理が成功するまで繰り返す実行される。この点が、本変形例と第１実施形態とでは相違する。
【０１２２】
図３は、第１変形例のデータ読み出し処理のフローチャートである。以下では、図３のフローチャートを参照しながら、データ読み出し処理について、説明する。
【０１２３】
（ステップ２０１〜Ｓ２０４）：
ステップＳ２０１、Ｓ２０２、Ｓ２０４では、それぞれ、第１実施形態のステップＳ１０１、Ｓ１０２、Ｓ１０３と同様の処理が実行される。
【０１２４】
ステップＳ２０３では、変数ｉが「２」にセットされる。
【０１２５】
（ステップ２０５〜Ｓ２１０）：
≪２回目の読み出しデータに対する処理≫
ステップＳ２０５〜Ｓ２０８では、２回目の読み出しデータに対する処理が実行される。つまり、ステップＳ２０５〜Ｓ２０８では、それぞれ、第１実施形態のステップＳ１０４〜Ｓ１０７と同様の処理が実行される。また、ステップＳ２０９において、変数ｉが１だけインクリメントされる。
【０１２６】
ステップＳ２０８では、ＥＣＣ復号化処理（ＬＤＰＣ復号化処理）が実行される。
【０１２７】
ＥＣＣ復号化部２６は、ダイバーシティ合成処理部２４から出力されるデータＤ３＿ｒに対して、ＬＤＰＣ復号化処理を実行する。そして、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化が成功したか否かの判定を行う（ステップＳ２１０）。具体的には、ＥＣＣ復号化部２６は、データＤ３＿ｒの各ビットのデータ（２値データ）に対して、ＬＤＰＣ復号化処理を繰り返し実行し、（１）所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定し、（２）一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定する。
【０１２８】
そして、ＥＣＣ復号化部２６は、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定した場合、処理をステップＳ２１１に進め、一方、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定した場合、処理をステップＳ２０５、Ｓ２０６に戻す。
【０１２９】
≪３回目の読み出しデータに対する処理≫
ステップＳ２１０にて、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定された場合、３回目（ｉ＝３）の読み出しデータに対する処理が実行される。
【０１３０】
３回目（ｉ＝３）の読み出しデータに対する処理では、ステップＳ２０５において、制御部２７は、１回目、２回目のデータ読み出し処理と同じページのデータを読み出すための制御信号Ｃｔｌ１を生成し、当該制御信号Ｃｔｌ１をメモリインターフェース部ＩＦ２２に出力する。
【０１３１】
メモリインターフェース部ＩＦ２２は、制御信号Ｃｔｌ１に従い、１回目、２回目のデータ読み出し処理と同じページのデータを読み出す。すなわち、メモリインターフェース部ＩＦ２２は、１回目のデータ読み出し処理と同じページの物理アドレスＰＡｄｒ１から、データを読み出す。
【０１３２】
なお、制御部２７は、タイマー２７１の時間情報を参照し、２回目のデータ読み出し処理が実行された時刻から、所定の時間経過後（例えば、１５０ｍｓ経過後）に、３回目のデータ読み出し処理が実行されるように、制御信号Ｃｔｌ１を生成し、当該制御信号Ｃｔｌ１をメモリインターフェース部ＩＦ２２に出力するようにしてもよい。これにより、不揮発性記憶装置２では、２回目のデータ読み出し処理が実行された時刻から、所定の時間経過後に、３回目のデータ読み出し処理を実行することができる。
【０１３３】
不揮発性メモリＭＥＭ１は、データ読み出し処理を開始し、読み出しデータ（符号データ）Ｄ１＿ｒをメモリインターフェース部ＩＦ２２に出力する。
【０１３４】
メモリインターフェース部ＩＦ２２は、不揮発性メモリＭＥＭ１からの読み出しデータＤ１＿ｒを取得し、取得した読み出しデータＤ１＿ｒを、データＤ２＿ｒとして、ダイバーシティ合成処理部２４およびデータ保持部２５に出力する。
【０１３５】
ステップＳ２０６では、２回目までの読み出しデータ（１回目の読み出しデータおよび２回目の読み出しデータ）の取得処理が行われる。具体的には、データ保持部２５は、記憶保持している１回目の読み出しデータ、および、２回目の読み出しデータを読み出し、読み出したデータをデータＤ２ｈ＿ｒ（２回分の読み出しデータ）として、ダイバーシティ合成処理部２４に出力する。
【０１３６】
ステップＳ２０７では、データ保持部２５から出力された１回目、２回目の読み出しデータ（データＤ２ｈ＿ｒ）と、３回目の読み出しデータＤ２＿ｒとを用いて、ダイバーシティ合成処理が実行される。つまり、不揮発性メモリＭＥＭ１の同一ページから１〜３回目に読み出された３つの読み出しデータを用いて、ダイバーシティ合成処理が実行される。
【０１３７】
具体的には、ダイバーシティ合成処理部２４は、以下のように処理することで、ダイバーシティ合成処理を実行する。
【０１３８】
読み出しデータがＮビット（Ｎ：自然数）のデータであり、各ビットの値は、「０」または「１」であるものとし、ｉ回目に読み出されたデータの第ｊビット目（ｊ：整数、１≦ｊ≦Ｎ）のデータをｄｉ，ｊとすると、ダイバーシティ合成処理部２４は、下記数式に相当する処理を実行し、読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊを取得する。なお、本実施形態において、読み出し回数は３回であるので、ｍ＝３である。
【数２】
2020181317.tif 000004
ｄｉ，ｊ＝｛０，１｝
Ｋ：正の係数（ゲイン）
ｃ：正の係数（オフセット）
そして、ダイバーシティ合成処理部２４は、（１）上記処理により取得した読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊがＬＬＲｊ≧０を満たす場合、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「１」とし、（２）上記処理により取得した読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊがＬＬＲｊ＜０を満たす場合、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「０」とすることで、ダイバーシティ合成処理後のデータ（Ｎビットのデータ）を取得する。
【０１３９】
上記のようにして取得されたダイバーシティ合成処理後の読み出しデータは、データＤ３＿ｒとして、ダイバーシティ合成処理部２４からＥＣＣ復号化部２６に出力される。
【０１４０】
ステップＳ２０８では、ＥＣＣ復号化処理（ＬＤＰＣ復号化処理）が実行される。
【０１４１】
ＥＣＣ復号化部２６は、ダイバーシティ合成処理部２４から出力されるデータＤ３＿ｒに対して、ＬＤＰＣ復号化処理を実行する。そして、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化が成功したか否かの判定を行う（ステップＳ２１０）。具体的には、ＥＣＣ復号化部２６は、データＤ３＿ｒの各ビットのデータ（２値データ）に対して、ＬＤＰＣ復号化処理を繰り返し実行し、（１）所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定し、（２）一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定する。
【０１４２】
そして、ＥＣＣ復号化部２６は、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定した場合、処理をステップＳ２１１に進め、一方、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定した場合、変数ｉを＋１だけインクリメントし、処理をステップＳ２０５、Ｓ２０６に戻す。そして、この場合、上記と同様にして、４回目（ｉ＝４）の読み出しデータに対する処理が実行される。
【０１４３】
このように、不揮発性記憶装置２では、復号化処理が成功するまで、同一ページからのデータ読み出し処理を繰り返し行う。
【０１４４】
（ステップＳ２１１）：
ステップＳ２１１において、ホストインターフェース部ＩＦ２１は、ＥＣＣ復号化部２６から出力されるデータＤ４＿ｒ（ＬＤＰＣ復号化処理が成功した判定されたデータ）を入力し、当該データＤ４＿ｒを含めたデータＤＳ１を生成し、当該データＤＳ１をホスト装置１に出力する。
【０１４５】
ホスト装置１は、ホストインターフェース部ＩＦ２１から出力されるデータＤＳ１を受信することで、エラー訂正強度の高い読み出しデータを取得することができる。
【０１４６】
以上のように、本変形例の不揮発性記憶システムでは、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、本変形例の不揮発性記憶システムでは、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、本変形例の不揮発性記憶システムでは、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合に実行される軟判定復号処理（ソフトデシジョン復号処理）と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【０１４７】
また、本変形例の不揮発性記憶システムでは、復号処理が成功するまで、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータを用いてＥＣＣ復号化処理を行うので、エラー訂正能力を向上させることができる。
【０１４８】
このように、本変形例の不揮発性記憶システムでは、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【０１４９】
なお、同一ページに対する、ｉ回目のデータ読み出し処理と、ｉ＋１回目のデータ読み出し処理との間の時間は、所定の規格（例えば、ＳＤ規格）により規定されているデータ読み出し時間を遵守できる時間内のできる限り長い時間に設定することが好ましい。また、ｉ回目のデータ読み出し処理と、ｉ＋１回目のデータ読み出し処理との間の時間は、固定の時間であってもよいし、可変の時間であってもよい。
【０１５０】
≪第２変形例≫
次に、第１実施形態の第２変形例について、説明する。なお、上記実施形態、変形例と同様の部分については、同一符号を付し、詳細な説明を省略する。
【０１５１】
図４は、第１実施形態の第２変形例に係る不揮発性記憶システム１０００Ａの概略構成図である。
【０１５２】
図５は、第１実施形態の第２変形例に係る不揮発性記憶システム１０００Ａにおけるデータ読み出し処理のフローチャートである。
【０１５３】
本変形例の不揮発性記憶システム１０００Ａは、第１実施形態の不揮発性記憶システム１０００において、不揮発性記憶装置２を不揮発性記憶装置２Ａに置換した構成を有する。不揮発性記憶装置２Ａは、第１実施形態の不揮発性記憶装置２において、メモリコントローラＭＣをメモリコントローラＭＣａに置換し、メモリインターフェース部ＩＦ２２をメモリインターフェース部ＩＦ２２Ａに置換した構成を有する。それ以外について、本変形例の不揮発性記憶システム１０００Ａは、第１実施形態の不揮発性記憶システム１０００と同様である。
【０１５４】
メモリインターフェース部ＩＦ２２Ａは、メモリインターフェース部ＩＦ２２と同様の機能に追加して、データ読み出し時のしきい値電圧を変更することが可能である。つまり、メモリインターフェース部ＩＦ２２Ａにより、不揮発性メモリＭＥＭ１において、メモリセル毎にデータを読み出すときの電圧（しきい値電圧）を変化することができる。具体的には、メモリインターフェース部ＩＦ２２Ａから、不揮発性メモリＭＥＭ１に対して、しきい値電圧Ｖ＿ｒ＿ｔｈを出力することで、不揮発性メモリＭＥＭ１では、当該しきい値電圧Ｖ＿ｒ＿ｔｈにより、各メモリセルからデータが読み出される。
【０１５５】
以上のように構成された不揮発性記憶システム１０００Ａのデータ読み出し処理について、図５のフローチャートを参照しながら、説明する。
【０１５６】
本変形例の不揮発性記憶システム１０００Ａのデータ読み出し処理では、第１実施形態の第１変形例の不揮発性記憶システムにおけるデータ読み出し処理において、ｉ回目のデータ読み出し処理の前に、データ読み出し処理のしきい値電圧を調整する処理（ステップＳ３０５）が追加されている。この点が、本変形例の不揮発性記憶システム１０００Ａのデータ読み出し処理と、第１実施形態の第１変形例の不揮発性記憶システムにおけるデータ読み出し処理との相違点であり、他については、本変形例の不揮発性記憶システム１０００Ａのデータ読み出し処理は、第１実施形態の第１変形例の不揮発性記憶システムにおけるデータ読み出し処理と同様である。以下では、この相違点について、説明する。
【０１５７】
（ステップＳ３０５）：
ステップＳ３０５において、制御部２７は、不揮発性メモリＭＥＭ１において、メモリセル毎にデータを読み出すときの電圧（しきい値電圧）をしきい値電圧Ｖ＿ｒ＿ｔｈに設定することを指示する制御信号Ｃｔｌ１を生成し、生成した制御信号Ｃｔｌ１をメモリインターフェース部ＩＦ２２Ａに出力する。
【０１５８】
メモリインターフェース部ＩＦ２２Ａは、制御信号Ｃｔｌ１に従い、しきい値電圧をＶ＿ｒ＿ｔｈに設定する。そして、メモリインターフェース部ＩＦ２２Ａから、不揮発性メモリＭＥＭ１に対して、しきい値電圧Ｖ＿ｒ＿ｔｈを出力することで、不揮発性メモリＭＥＭ１では、当該しきい値電圧Ｖ＿ｒ＿ｔｈにより、各メモリセルからデータが読み出される。
【０１５９】
ここで、不揮発性メモリＭＥＭ１の各メモリセルからデータを読み出すときのしきい値電圧を変更する理由について、図６を用いて、説明する。
【０１６０】
図６は、不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。
【０１６１】
図６（ａ）は、通常状態（リードディスターブの影響もデータリテンションの影響もない場合）の不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。なお、図６（ａ）において、曲線Ｃｕｒｖｅ＿１は、各メモリセルに記憶されているデータの値が「１」である確率密度を示す曲線であり、曲線Ｃｕｒｖｅ＿０は、各メモリセルに記憶されているデータの値が「０」である確率密度を示す曲線である。
【０１６２】
図６（ｂ）は、データリテンションの影響が大きい場合の不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。なお、図６（ｂ）において、曲線ＣｕｒｖｅＡ＿１は、データリテンションの影響が大きい場合の各メモリセルに記憶されているデータの値が「１」である確率密度を示す曲線であり、曲線ＣｕｒｖｅＡ＿０は、データリテンションの影響が大きい場合の各メモリセルに記憶されているデータの値が「０」である確率密度を示す曲線である。
【０１６３】
図６（ｃ）は、リードディスターブの影響が大きい場合の不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。なお、図６（ｃ）において、曲線ＣｕｒｖｅＢ＿１は、リードディスターブの影響が大きい場合の各メモリセルに記憶されているデータの値が「１」である確率密度を示す曲線であり、曲線ＣｕｒｖｅＢ＿０は、リードディスターブの影響が大きい場合の各メモリセルに記憶されているデータの値が「０」である確率密度を示す曲線である。
【０１６４】
不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）において、通常の状態であれば、図６（ａ）に示すように、データ読み出し時のしきい値電圧をＶｔｈ０とすれば、正しくデータを読み取れる可能性が高くなることが分かる。
【０１６５】
一方、不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）において、データリテンションの影響が大きい場合、図６（ｂ）に示すように、データ読み出し時のしきい値電圧をＶｔｈ０とすると、正しくデータを読み取れる可能性が低下することが分かる。一般的に、データリテンションの影響が大きい状態とは、不揮発性メモリＭＥＭ１に対するデータ書き込み／読み出し処理が長期間実行されず、各メモリセルにおいて、トンネル酸化膜から保持されるべき電荷が流出する傾向にある状態である。したがって、この場合、各メモリセルに記憶されているデータの値が「１」である確率密度を示す曲線、各メモリセルに記憶されているデータの値が「０」である確率密度を示す曲線は、ともに、電圧が低い方向にシフトする特性を示す傾向にある。そのため、不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）がデータリテンションの影響が大きい状態である場合、図６（ｂ）に示すように、データ読み出し時のしきい値電圧をＶｔｈ１にする方が、しきい値電圧Ｖｔｈ０にした場合よりも、正しくデータを読み取れる可能性が高くなる。
【０１６６】
また、不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）において、リードディスターブの影響が大きい場合、図６（ｃ）に示すように、データ読み出し時のしきい値電圧をＶｔｈ０とすると、正しくデータを読み取れる可能性が低下することが分かる。一般的に、リードディスターブの影響が大きい状態とは、不揮発性メモリＭＥＭ１において、特定のメモリセルからのデータ読み出し回数が多く、当該メモリセルで保持すべき電荷の状態が適切ではなくなる状態である。つまり、リードディスターブの影響が大きい場合、当該メモリセルに対しては、弱書き込みの特性と同様になり、当該メモリセルに保持すべき電荷よりも多い電荷が保持される傾向にある。したがって、この場合、各メモリセルに記憶されているデータの値が「１」である確率密度を示す曲線、各メモリセルに記憶されているデータの値が「０」である確率密度を示す曲線は、ともに、電圧が高い方向にシフトする特性を示す傾向にある。そのため、不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）がリードディスターブの影響が大きい状態である場合、図６（ｃ）に示すように、データ読み出し時のしきい値電圧をＶｔｈ２にする方が、しきい値電圧Ｖｔｈ０にした場合よりも、正しくデータを読み取れる可能性が高くなる。
【０１６７】
このように、不揮発性メモリＭＥＭ１（ＮＡＮＤフラッシュメモリ）の特性を考慮すると、読み出しデータを正しく復号できない場合、不揮発性メモリＭＥＭ１のデータ読み出し時のしきい値電圧を調整することで、正しいデータが取得される可能性が高くなる。
【０１６８】
そこで、本変形例の不揮発性記憶システム１０００Ａでは、ｉ回目のデータ読み出し処理を実行する前に、データ読み出しのしきい値電圧を調整する（ステップＳ３０５）。
【０１６９】
なお、不揮発性記憶装置２Ａにおいて、例えば、不揮発性メモリＭＥＭ１に対するデータ読み出し処理／書き込み処理が長期間にわたり実行されておらず、データリテンションの影響が大きい状態である判断できる場合、ステップＳ３０５において、データ読み出しのしきい値電圧Ｖ＿ｒ＿ｔｈが、通常状態のデータ読み出し時のしきい値電圧Ｖｔｈ０よりも低い電圧となるように調整することが好ましい。
【０１７０】
また、不揮発性記憶装置２Ａにおいて、例えば、各メモリセルからデータ読み出し回数についてのデータが分かる場合であって、当該データから、データ読み出し処理の対象となっているメモリセルの状態が、リードディスターブの影響が大きい状態であることが分かる場合、ステップＳ３０５において、データ読み出しのしきい値電圧Ｖ＿ｒ＿ｔｈが、通常状態のデータ読み出し時のしきい値電圧Ｖｔｈ０よりも高い電圧となるように調整することが好ましい。
【０１７１】
なお、不揮発性記憶装置２Ａにおいて、不揮発性メモリＭＥＭ１について、（１）データリテンションの影響が大きい状態であるか否かについての情報、（２）リードディスターブの影響が大きい状態であるか否かについての情報が取得できない場合であっても、本変形例の不揮発性記憶システム１０００Ａにおいて、データ読み出し時のしきい値電圧Ｖ＿ｒ＿ｔｈを（例えば、所定の範囲内でランダムに）変更して取得した読み出しデータを用いて、ダイバーシティ合成処理を行い、エラー訂正処理を行うことで、高精度にエラー訂正処理を実行することができる。つまり、不揮発性記憶システム１０００Ａでは、エラー訂正処理が成功しない場合、データ読み出し時のしきい値電圧Ｖ＿ｒ＿ｔｈを（例えば、所定の範囲内でランダムに）変更して取得した読み出しデータを用いて、ダイバーシティ合成処理を行うことで、不揮発性メモリＭＥＭ１についての影響（データリテンションの影響、リードディスターブの影響等）を低減させた読み出しデータを取得することができ、当該読み出しデータに対して、誤り訂正処理を行うことで、より高精度に、読み出しデータに対する誤り訂正処理を行うことができる。
【０１７２】
これにより、例えば、ゲームのＲＯＭ用途で使用される不揮発性記憶装置において、（１）データ読み出し回数（リードディスターブ）や、（２）放置時間（データリテンション）が不明なデバイスに対しても、高エラー訂正能力、高速処理（高スループット）が可能となる。
【０１７３】
≪第３変形例≫
次に、第１実施形態の第３変形例について、説明する。なお、上記実施形態、変形例と同様の部分については、同一符号を付し、詳細な説明を省略する。
【０１７４】
図７は、第１実施形態の第３変形例に係る不揮発性記憶システム１０００Ｂの概略構成図である。
【０１７５】
図８は、第１実施形態の第３変形例に係る不揮発性記憶システム１０００Ｂにおけるデータ読み出し処理のフローチャートである。
【０１７６】
本変形例の不揮発性記憶システム１０００Ｂは、第１実施形態の不揮発性記憶システム１０００において、不揮発性記憶装置２を不揮発性記憶装置２Ａに置換した構成を有する。不揮発性記憶装置２Ａは、第１実施形態の不揮発性記憶装置２において、メモリコントローラＭＣをメモリコントローラＭＣｂに置換し、メモリインターフェース部ＩＦ２２をメモリインターフェース部ＩＦ２２Ｂに置換した構成を有する。それ以外について、本変形例の不揮発性記憶システム１０００Ｂは、第１実施形態の不揮発性記憶システム１０００と同様である。
【０１７７】
メモリインターフェース部ＩＦ２２Ｂは、メモリインターフェース部ＩＦ２２と同様の機能に追加して、同一データが、不揮発性メモリＭＥＭ１の異なる物理ブロックに書き込まれている場合、当該同一データの不揮発性メモリＭＥＭ１の異なる物理ブロック（この物理アドレスをＡｄｒ２ａ、Ａｄｒ２ｂとする）から、データを読み出す機能を有する。
【０１７８】
以上のように構成された不揮発性記憶システム１０００Ｂのデータ読み出し処理について、図８のフローチャートを参照しながら、説明する。なお、説明便宜のために、同一データが、第１物理ブロックの物理アドレスがＡｄｒ２ａであるページと、第１物理ブロックの物理アドレスがＡｄｒ２ｂであるページとに記憶されているものとする。第１物理ブロックは、第２物理ブロックと異なる物理ブロックであるものとする。
【０１７９】
（ステップＳ４０１）：
ステップＳ４０１では、第１物理ブロックの物理アドレスがＡｄｒ２ｂであるページからのデータ読み出し処理が実行される。
【０１８０】
ホスト装置１は、メモリコントローラＭＣに対して、読み出しコマンドを送信する。
【０１８１】
ホストインターフェース部ＩＦ２１は、読み出しコマンド（コマンドＣｍｄ）を取得し、取得した読み出しコマンドを、コマンド制御部２１および制御部２７に出力する。
【０１８２】
コマンド制御部２１は、読み出しコマンド（コマンドＣｍｄ）をデコードし、読み出し論理アドレスを取得する。ここでは、読み出し論理アドレスが論理アドレスＬＡｄｒ１であるものとする。そして、コマンド制御部２１は、取得した読み出し論理アドレスＬＡｄｒ１に関する情報を含むデータをデータＤ１＿ａｄｒとして、アドレス変換部２２に出力する。
【０１８３】
アドレス変換部２２は、論理アドレス／物理アドレス変換テーブルに基づいて、入力されたデータＤ１＿ａｄｒに含まれる読み出し論理アドレスＬＡｄｒ１を物理アドレスＰＡｄｒ１（＝Ａｄｒ２ａ）に変換する。そして、アドレス変換部２２は、当該物理アドレスＰＡｄｒ１（＝Ａｄｒ２ａ）に関する情報を含むデータを、データＤ２＿ａｄｒとして、メモリインターフェース部ＩＦ２２に出力する。
【０１８４】
メモリインターフェース部ＩＦ２２は、アドレス変換部２２から出力されるデータＤ２＿ａｄｒに含まれる読み出しアドレスＰＡｄｒ１（＝Ａｄｒ２ａ）を不揮発性メモリＭＥＭ１に出力する。
【０１８５】
そして、不揮発性メモリＭＥＭ１において、メモリインターフェース部ＩＦ２２により指定された読み出しアドレスＰＡｄｒ１（＝Ａｄｒ２ａ）から、データが読み出される。なお、データは、ページ単位で読み出される。
【０１８６】
不揮発性メモリＭＥＭ１は、データ読み出し処理を開始し、読み出しデータ（符号データ）Ｄ１＿ｒをメモリインターフェース部ＩＦ２２に出力する。
【０１８７】
メモリインターフェース部ＩＦ２２は、不揮発性メモリＭＥＭ１からの読み出しデータＤ１＿ｒを取得し、取得した読み出しデータＤ１＿ｒを、データＤ２＿ｒとして、ダイバーシティ合成処理部２４およびデータ保持部２５に出力する。データ保持部２５は、データＤ２＿ｒを記憶保持する。なお、データＤ１＿ｒ、Ｄ２＿ｒは、１ページ分のデータであるものとする。
【０１８８】
（ステップＳ４０２、Ｓ４０３）：
ステップＳ４０２では、ＥＣＣ復号化処理（ＬＤＰＣ復号化処理）が実行される。
【０１８９】
制御部２７は、第１物理ブロックの物理アドレスがＡｄｒ２ａであるページから読み出したデータに対する第１回目の読み出し処理であることを把握し、ダイバーシティ合成処理部２４に対して、入力された読み出しデータＤ２＿ｒをそのままデータＤ３＿ｒとして、ＥＣＣ復号化部２６に出力するよう指示する制御信号Ｃｔｌ３を生成し、当該制御信号Ｃｔｒ３をダイバーシティ合成処理部２４に出力する。
【０１９０】
ダイバーシティ合成処理部２４は、制御信号Ｃｔｌ３に従い、入力された読み出しデータＤ２＿ｒをそのままデータＤ３＿ｒとして、ＥＣＣ復号化部２６に出力する。
【０１９１】
ＥＣＣ復号化部２６は、ダイバーシティ合成処理部２４から出力されるデータＤ３＿ｒに対して、ＬＤＰＣ復号化処理を実行する。そして、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化が成功したか否かの判定を行う（ステップＳ４０３）。
【０１９２】
そして、ＥＣＣ復号化部２６は、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定した場合、処理をステップＳ４０９に進め、一方、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定した場合、処理をステップＳ４０４、Ｓ４０５に進める。
【０１９３】
（ステップＳ４０４）：
ステップＳ４０４において、第２物理ブロックの物理アドレスがＡｄｒ２ｂであるページからのデータ読み出し処理が実行される。
【０１９４】
制御部２７は、物理アドレスがＡｄｒ２ｂであるページのデータを読み出すための制御信号Ｃｔｌ１を生成し、当該制御信号Ｃｔｌ１をメモリインターフェース部ＩＦ２２に出力する。
【０１９５】
メモリインターフェース部ＩＦ２２は、制御信号Ｃｔｌ１に従い、第２物理ブロックの物理アドレスがＡｄｒ２ｂであるページからデータを読み出す。
【０１９６】
不揮発性メモリＭＥＭ１は、データ読み出し処理を開始し、読み出しデータ（符号データ）Ｄ１＿ｒをメモリインターフェース部ＩＦ２２に出力する。
【０１９７】
メモリインターフェース部ＩＦ２２は、不揮発性メモリＭＥＭ１からの読み出しデータＤ１＿ｒを取得し、取得した読み出しデータＤ１＿ｒを、データＤ２＿ｒとして、ダイバーシティ合成処理部２４およびデータ保持部２５に出力する。
【０１９８】
（ステップＳ４０５）：
ステップＳ４０５において、データ保持部２５は、記憶保持している第１物理ブロックの物理アドレスがＡｄｒ２ａであるページから読み出したデータを取得し、取得したデータをデータＤ２ｈ＿ｒとして、ダイバーシティ合成処理部２４に出力する。
【０１９９】
（ステップＳ４０６）：
ステップＳ４０６では、データ保持部２５から出力されたデータＤ２ｈ＿ｒ（第１物理ブロックの物理アドレスがＡｄｒ２ａであるページから読み出したデータ）と、データＤ２＿ｒ（第２物理ブロックの物理アドレスがＡｄｒ２ｂであるページから読み出したデータ）とを用いて、ダイバーシティ合成処理が実行される。
【０２００】
具体的には、ダイバーシティ合成処理部２４は、以下のように処理することで、ダイバーシティ合成処理を実行する。
【０２０１】
読み出しデータがＮビット（Ｎ：自然数）のデータであり、各ビットの値は、「０」または「１」であるものとし、第ｉ物理ブロックから読み出されたデータの第ｊビット目（ｊ：整数、１≦ｊ≦Ｎ）のデータをｄｉ，ｊとすると、ダイバーシティ合成処理部２４は、下記数式に相当する処理を実行し、読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊを取得する。なお、本実施形態において、読み出した物理ブロックは２つであるので、ｍ＝２である。
【数３】
2020181317.tif 000005
ｄｉ，ｊ＝｛０，１｝
Ｋ：正の係数（ゲイン）
ｃ：正の係数（オフセット）
そして、ダイバーシティ合成処理部２４は、（１）上記処理により取得した読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊがＬＬＲｊ≧０を満たす場合、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「１」とし、（２）上記処理により取得した読み出しデータの第ｊビット目に対応するＬＬＲ値ＬＬＲｊがＬＬＲｊ＜０を満たす場合、ダイバーシティ合成後の読み出しデータの第ｊビット目の値を「０」とすることで、ダイバーシティ合成処理後のデータ（Ｎビットのデータ）を取得する。
【０２０２】
上記のように処理することで、ダイバーシティ合成処理部２４は、データＤ２ｈ＿ｒ（第１物理ブロックの物理アドレスがＡｄｒ２ａであるページから読み出したデータ）と、データＤ２＿ｒ（第２物理ブロックの物理アドレスがＡｄｒ２ｂであるページから読み出したデータ）とから、ダイバーシティ合成処理後の読み出しデータを取得する。
【０２０３】
上記のようにして取得されたダイバーシティ合成処理後の読み出しデータは、データＤ３＿ｒとして、ダイバーシティ合成処理部２４からＥＣＣ復号化部２６に出力される。
【０２０４】
（ステップＳ４０７、Ｓ４０８）：
ステップＳ４０７では、ＥＣＣ復号化処理（ＬＤＰＣ復号化処理）が実行される。
【０２０５】
ＥＣＣ復号化部２６は、ダイバーシティ合成処理部２４から出力されるデータＤ３＿ｒに対して、ＬＤＰＣ復号化処理を実行する。そして、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化が成功したか否かの判定を行う（ステップＳ４０８）。具体的には、ＥＣＣ復号化部２６は、データＤ３＿ｒの各ビットのデータ（２値データ）に対して、ＬＤＰＣ復号化処理を繰り返し実行し、（１）所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定し、（２）一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定する。
【０２０６】
そして、ＥＣＣ復号化部２６は、データＤ３＿ｒについてのＬＤＰＣ復号化処理が成功したと判定した場合、処理をステップＳ４０９に進め、一方、データＤ３＿ｒについてのＬＤＰＣ復号化処理が失敗したと判定した場合、処理をステップＳ４１０に進める。
【０２０７】
（ステップＳ４０９）：
ステップＳ４０９において、ホストインターフェース部ＩＦ２１は、ＥＣＣ復号化部２６から出力されるデータＤ４＿ｒ（ＬＤＰＣ復号化処理が成功した判定されたデータ）を入力し、当該データＤ４＿ｒを含めたデータＤＳ１を生成し、当該データＤＳ１をホスト装置１に出力する。
【０２０８】
ホスト装置１は、ホストインターフェース部ＩＦ２１から出力されるデータＤＳ１を受信することで、エラー訂正強度の高い読み出しデータを取得することができる。
【０２０９】
（ステップＳ４１０）：
ステップＳ４１０において、ＥＣＣ復号化部２６は、ＬＤＰＣ復号化処理が失敗したことを示すデータ（例えば、復号化の失敗を示すフラグ）を生成し、当該データ（ＬＤＰＣ復号化処理が失敗したことを示すデータ）をデータＤ４＿ｒとして、ホストインターフェース部ＩＦ２１に出力する。
【０２１０】
ホストインターフェース部ＩＦ２１は、ＥＣＣ復号化部２６から出力されるデータＤ４＿ｒ（ＬＤＰＣ復号化処理が失敗したことを示すデータ）を入力し、当該データＤ４＿ｒを含めたデータＤＳ１を生成し、当該データＤＳ１をホスト装置１に出力する。
【０２１１】
ホスト装置１は、ホストインターフェース部ＩＦ２１から出力されるデータＤＳ１を受信することで、要求したアドレスのデータの読み出しに失敗したことを把握する。
【０２１２】
以上のように、不揮発性記憶システム１０００Ｂでは、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、不揮発性記憶システム１０００Ｂでは、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、不揮発性記憶システム１０００Ｂでは、従来技術の硬判定復号処理（ハードデシジョン復号処理）で復号に失敗した場合に実行される軟判定復号処理（ソフトデシジョン復号処理）と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【０２１３】
また、不揮発性記憶システム１０００Ｂでは、１回目に読み出したデータ（第１物理ブロックから読み出したデータ）によるＥＣＣ復号化処理が失敗した場合に、同一データが記憶されている第２物理ブロックからデータを再度読み出し、同一データが記憶されている異なる物理ブロックから読み出した２つのデータに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。異なる物理ブロックにおいてエラー発生状況は異なるので、ダイバーシティ合成処理後のデータに対するＥＣＣ復号化処理は成功する可能性が高くなる。したがって、不揮発性記憶システム１０００Ｂでは、上記のように処理することで、エラー訂正能力を向上させることができる。
【０２１４】
このように、不揮発性記憶システム１０００Ｂでは、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【０２１５】
なお、上記では、同一データが異なる物理ブロックに書き込まれている場合について、説明したが、これに限定されることはなく、同一データは、例えば、異なるアドレス（異なるページ）に書き込まれるものであってもよい。つまり、不揮発性記憶システム１０００Ｂにおいて、同一データを異なるアドレスに書き込み冗長化を行ってもよい。
【０２１６】
同一データを異なるアドレスに書き込み冗長化を行う場合、同一データを書き込む単位は、以下のようにしてもよい。
（１）複数の不揮発性メモリを備える場合、ブロック単位、または、ページ単位。
（２）単独の不揮発性メモリを備える場合であって、複数のプレーンを備える場合、ブロック単位、または、ページ単位。なお、この場合、同一データを書き込むブロック（または、ページ）は、互いに異なるプレーンに含まれるブロック（または、ページ）であることが好ましい。
【０２１７】
上記のように、同一データを異なるアドレスに書き込んだ場合においても、上記と同様に処理することで、不揮発性記憶システム１０００Ｂでは、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【０２１８】
［他の実施形態］
上記実施形態、変形例の一部または全部を組み合わせて、不揮発性記憶システム、不揮発性記憶装置等を構成するようにしてもよい。
【０２１９】
なお、上記実施形態（変形例を含む）では、不揮発性メモリがＴＬＣ  ＮＡＮＤフラッシュメモリ（ＴＬＣ：Ｔｒｉｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）である場合を一例として想定しているが、これに限定されることはなく、不揮発性メモリは、例えば、ＭＬＣ  ＮＡＮＤフラッシュメモリ（ＭＬＣ：Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）、あるいは、ＱＬＣ  ＮＡＮＤフラッシュメモリ（ＱＬＣ：Ｑｕａｄｒｕｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）であってもよい。
【０２２０】
また、上記実施形態の不揮発性記憶システム、不揮発性記憶装置の一部または全部は、集積回路（例えば、ＬＳＩ、システムＬＳＩ等）として実現されるものであってもよい。
【０２２１】
上記実施形態で説明した不揮発性記憶システム、不揮発性記憶装置の各ブロック（各機能部）は、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。また、上記実施形態で説明した不揮発性記憶システム、不揮発性記憶装置の各ブロック（各機能部）は、複数のＬＳＩなどの半導体装置により実現されるものであってもよい。
【０２２２】
なお、ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０２２３】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０２２４】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置（ＣＰＵ）により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ＲＯＭなどの記憶装置に格納されており、ＲＯＭにおいて、あるいはＲＡＭに読み出されて実行される。
【０２２５】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【０２２６】
例えば、上記実施形態（変形例を含む）の各機能部を、ソフトウェアにより実現する場合、図９に示したハードウェア構成（例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ、入力部、出力部等をバスＢｕｓにより接続したハードウェア構成）を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【０２２７】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０２２８】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、大容量ＤＶＤ、次世代ＤＶＤ、半導体メモリを挙げることができる。
【０２２９】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【０２３０】
また、文言「部」は、「サーキトリー（ｃｉｒｃｕｉｔｒｙ）」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【０２３１】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【０２３２】
１０００、１０００Ａ、１０００Ｂ  不揮発性記憶システム
２、２Ａ、２Ｂ  不揮発性記憶装置
ＩＢ２２Ｂ  メモリインターフェース部
２４  ダイバーシティ合成処理部
２５  データ保持部
２６  ＥＣＣ復号化部
ＭＥＭ１  不揮発性メモリ
【図１】
2020181317.tif 000006
【図２】
2020181317.tif 000007
【図３】
2020181317.tif 000008
【図４】
2020181317.tif 000009
【図５】
2020181317.tif 000010
【図６】
2020181317.tif 000011
【図７】
2020181317.tif 000012
【図８】
2020181317.tif 000013
【図９】
2020181317.tif 000014