特開2020-181317(P2020-181317A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社メガチップスの特許一覧

特開2020-181317不揮発性記憶装置、データ読み出し方法、および、プログラム
<>
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000006
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000007
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000008
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000009
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000010
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000011
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000012
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000013
  • 特開2020181317-不揮発性記憶装置、データ読み出し方法、および、プログラム 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2020-181317(P2020-181317A)
(43)【公開日】2020年11月5日
(54)【発明の名称】不揮発性記憶装置、データ読み出し方法、および、プログラム
(51)【国際特許分類】
   G06F 11/10 20060101AFI20201009BHJP
【FI】
   G06F11/10 662
【審査請求】未請求
【請求項の数】10
【出願形態】OL
【全頁数】36
(21)【出願番号】特願2019-83040(P2019-83040)
(22)【出願日】2019年4月24日
(71)【出願人】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100148275
【弁理士】
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100142745
【弁理士】
【氏名又は名称】伊藤 世子
(72)【発明者】
【氏名】陳 寒達
(72)【発明者】
【氏名】川村 敦史
【テーマコード(参考)】
5B001
【Fターム(参考)】
5B001AB01
5B001AB02
5B001AB05
5B001AD03
(57)【要約】
【課題】エラー訂正能力を確保しつつ、高速に処理が可能なエラー訂正処理を実行する不揮発性記憶システムを実現する。
【解決手段】不揮発性記憶装置では、硬判定復号処理により1回目に読み出したデータによるエラー訂正復号処理が失敗した場合に、同一ページのデータを再度読み出し、同一ページについて、1回目に読み出したデータと、2回目に読み出したデータとに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。
【選択図】図1
【特許請求の範囲】
【請求項1】
不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備え、
(1)前記メモリインターフェース部により前記不揮発性メモリの第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力し、
(2)前記メモリインターフェース部により前記不揮発性メモリの前記第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第1アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第1アドレスから1回目に読み出したデータと、前記第1アドレスから2回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する、
不揮発性記憶装置。
【請求項2】
前記第1アドレスから1回目に読み出したデータと、前記第1アドレスから2回目に読み出したデータとを用いて前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、
前記メモリインターフェース部は、さらに、前記不揮発性メモリの前記第1アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に前記不揮発性メモリの前記第1アドレスから読み出したデータとに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力し、前記エラー訂正符号復号処理によるエラー訂正符号の復号に失敗した場合、さらに、前記不揮発性メモリの前記第1アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に前記不揮発性メモリの前記第1アドレスから読み出したデータとに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行すること繰り返す、
請求項1に記載の不揮発性記憶装置。
【請求項3】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合
前記メモリインターフェース部は、前記不揮発性メモリからデータを読み出すときのしきい値電圧を調整して、前記不揮発性メモリからデータを読み出す、
請求項1または2に記載の不揮発性記憶装置。
【請求項4】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、前記第1アドレスの前記不揮発性メモリのメモリセルについて、データリテンションの影響が大きいと判定された場合、
前記メモリインターフェース部は、前記不揮発性メモリからデータを読み出すときのしきい値電圧が、前記不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも低くなるように調整して、前記不揮発性メモリからデータを読み出す、
請求項3に記載の不揮発性記憶装置。
【請求項5】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、前記第1アドレスの前記不揮発性メモリのメモリセルについて、リードディスターブの影響が大きいと判定された場合、
前記メモリインターフェース部は、前記不揮発性メモリからデータを読み出すときのしきい値電圧が、前記不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも高くなるように調整して、前記不揮発性メモリからデータを読み出す、
請求項3に記載の不揮発性記憶装置。
【請求項6】
前記ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、
前記メモリインターフェース部は、所定の時間経過後に、前記不揮発性メモリの前記第1アドレスからデータを読み出す、
請求項1から5のいずれかに記載の不揮発性記憶装置。
【請求項7】
不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備え、
(1)前記メモリインターフェース部により前記不揮発性メモリの第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力し、
(2)前記メモリインターフェース部により前記不揮発性メモリの前記第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第1アドレスに記憶されているデータと同一のデータが記憶されている前記第1アドレスとは異なる第2アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第1アドレスから読み出したデータと、前記第2アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する、
不揮発性記憶装置。
【請求項8】
不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備える不揮発性記憶装置に用いられるデータ読み出し方法であって、
(1)前記メモリインターフェース部により前記不揮発性メモリの第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力する第1ステップと、
(2)前記メモリインターフェース部により前記不揮発性メモリの前記第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第1アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第1アドレスから1回目に読み出したデータと、前記第1アドレスから2回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する第2ステップと、
を備えるデータ読み出し方法。
【請求項9】
不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行うメモリインターフェース部と、
前記メモリインターフェース部により、前記不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、
を備える不揮発性記憶装置に用いられるデータ読み出し方法であって、
(1)前記メモリインターフェース部により前記不揮発性メモリの第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、
前記エラー訂正処理部は、前記エラー訂正符号復号処理により取得されたデータを出力する第1ステップと、
(2)前記メモリインターフェース部により前記不揮発性メモリの前記第1アドレスから読み出されたデータに対して前記エラー訂正符号復号処理を実行した場合において、前記エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
前記メモリインターフェース部は、前記不揮発性メモリの前記第1アドレスに記憶されているデータと同一のデータが記憶されている前記第1アドレスとは異なる第2アドレスからデータを再度読み出し、
前記エラー訂正処理部は、前記第1アドレスから読み出したデータと、前記第2アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、前記ダイバーシティ合成処理により取得されたデータに対して、前記エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する第2ステップと、
を備えるデータ読み出し方法。
【請求項10】
請求項8または9に記載のデータ読み出し方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性記憶システム、不揮発性記憶装置の制御方法に関する。
【背景技術】
【0002】
半導体不揮発性メモリであるNANDフラッシュメモリ等において、セルの微細化技術、多値化技術の進展に伴い、書き込みデータの信頼性が低下しており、誤り訂正符号への要求が高くなってきている。NANDフラッシュメモリにおいて、誤り訂正符号として、従来採用されていたBCH符号(Bose-Chaudhuri-Hocquenghem codes)の代わりに、誤り訂正能力の高いLDPC符号(Low−density parity−check code)を採用すべく、LDPC符号の実用化に向けた多くの研究、開発がなされている。
【0003】
NANDフラッシュメモリのデータ読み出しにおいて、誤り訂正符号復号を行うことにより読み出しデータの信頼性を向上させることができる。NANDフラッシュメモリでは、通常、読み出しデータのデジタル値のみを用いて誤り訂正符号の復号処理を行う硬判定復号処理(ハードデシジョン復号処理)が実行される。この硬判定復号処理は、読み出しデータのデジタル値のみを用いて誤り訂正符号の復号処理を行うため、処理速度の速いが、この方法では十分な誤り訂正が行えない場合がある。このような場合に対処するために、軟判定復号処理(ソフトデシジョン復号処理)による誤り訂正処理を行う技術が開発されている。例えば、特許文献1には、軟判定復号処理(ソフトデシジョン復号処理)による誤り訂正処理を行い、NANDフラッシュメモリにおけるエラー訂正能力を向上させ、読み出しデータの信頼性を向上させる技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−16092号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の軟判定復号処理(ソフトデシジョン復号処理)による誤り訂正処理を行うと最低でも3回の読み出しが必要なので、処理時間が長くなってしまう。これは、軟判定復号処理(ソフトデシジョン復号処理)では、データの確からしさを表す対数尤度比(LLR:log−likelihood ratio)と呼ばれる情報の生成が必要で、その生成には複数回の読み出しデータが必要となるためである。
【0006】
対数尤度比LLRとは、各シンボル(ビット)の値が「0」である確率と「1」である確率とを対数比で表した情報である。具体的には、対数尤度比LLRは、NANDフラッシュメモリにおいて、(1)メモリセル毎にデータを読み出すときの電圧(しきい値電圧)の値が範囲aに含まれるという条件の下で、当該メモリセルに書き込んだビットxが論理「0」である条件付確率P(x=0|a)と、(2)メモリセル毎にデータを読み出すときの電圧(しきい値電圧)の値が範囲aに含まれるという条件の下で、当該メモリセルに書き込んだビットxが論理「1」である条件付確率P(x=1|a)との比の対数をとった値である。すなわち、
対数尤度比LLRは、
LLR=log(P(x=0|a)/P(x=1|a))
と表される。なお、logは自然対数である。
【0007】
軟判定復号処理(ソフトデシジョン復号処理)による誤り訂正処理では、誤り訂正能力を向上させるために、対数尤度比LLRの精度を上げる必要がある。対数尤度比LLRの精度を上げるためには、メモリセル毎にデータを読み出すときの電圧(しきい値電圧)の値を細かく変更しながら、メモリセル毎にデータを読み出す処理を複数回行う必要がある。このため、軟判定復号処理(ソフトデシジョン復号処理)による誤り訂正処理では、処理時間が長くなってしまう(レーテンシー(latency)が長くなってしまう)。
【0008】
本発明は、上記問題点に鑑み、エラー訂正能力を確保しつつ、高速に処理が可能な(高スループットを実現する)エラー訂正処理を実行する不揮発性記憶システム、不揮発性記憶装置、データ読み出し方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために、第1の発明は、メモリインターフェース部と、エラー訂正処理部と、を備える不揮発性記憶装置である。
【0010】
メモリインターフェース部は、不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行う。
【0011】
エラー訂正処理部は、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行する。
(1)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
(2)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、メモリインターフェース部は、不揮発性メモリの第1アドレスからデータを再度読み出する。また、この場合、エラー訂正処理部は、第1アドレスから1回目に読み出したデータと、第1アドレスから2回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【0012】
この不揮発性記憶装置では、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、この不揮発性記憶装置では、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、この不揮発性記憶装置では、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合に実行される軟判定復号処理(ソフトデシジョン復号処理)と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【0013】
また、この不揮発性記憶装置では、1回目に読み出したデータによるエラー訂正復号処理(ECC復号化処理)が失敗した場合に、同一ページのデータを再度読み出し(2回目のデータ読み出し処理を実行し)、同一ページについて、1回目に読み出したデータと、2回目に読み出したデータとに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。ダイバーシティ合成処理後のデータに対するECC復号化処理は成功する可能性が高くなるので、この不揮発性記憶装置では、上記のように処理することで、エラー訂正能力を向上させることができる。つまり、例えば、NANDフラッシュメモリの同一ページから複数回読み出したデータには、エラービットの数とエラーが発生しているビット位置とが変動するというダイバーシティがあるので、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータは、より多くのデータ情報が得られるため、ECC復号化処理を行ったときに、エラー訂正処理が成功する可能性が高くなる。したがって、この不揮発性記憶装置では、1回目に読み出したデータによるECC復号化処理が失敗した場合に、新しく読み出しデータとダイバーシティ合成処理を行った後のデータに対するECC復号化処理を行うことで、エラー訂正能力を向上させることができる。
【0014】
このように、この不揮発性記憶装置では、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【0015】
第2の発明は、第1の発明であって、第1アドレスから1回目に読み出したデータと、第1アドレスから2回目に読み出したデータとを用いてダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、メモリインターフェース部は、以下の処理を行う。
【0016】
メモリインターフェース部は、さらに、不揮発性メモリの第1アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に不揮発性メモリの第1アドレスから読み出したデータ(例えば、当該最新読み出しデータを読み出す前までに不揮発性メモリの第1アドレスから読み出したすべてのデータ)とに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行する。そして、メモリインターフェース部は、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。一方、エラー訂正符号復号処理によるエラー訂正符号の復号に失敗した場合、メモリインターフェース部は、さらに、不揮発性メモリの第1アドレスからデータを読み出し、当該読み出したデータである最新読み出しデータと、当該最新読み出しデータを読み出す前に不揮発性メモリの第1アドレスから読み出したデータ(例えば、当該最新読み出しデータを読み出す前までに不揮発性メモリの第1アドレスから読み出したすべてのデータ)とに対してダイバーシティ合成処理を実行し、当該ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行すること繰り返す。
【0017】
この不揮発性記憶装置では、復号処理が成功するまで、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータを用いてECC復号化処理を行い、毎回読み出したデータごとに新しい情報が加えられるので、エラー訂正能力を向上させることができる。したがって、この不揮発性記憶装置では、読み出し回数が1回ずつ増えることで、徐々にエラー訂正能力を高めていくことができる。
【0018】
第3の発明は、第1または第2の発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合メモリインターフェース部は、不揮発性メモリからデータを読み出すときのしきい値電圧を調整して、不揮発性メモリからデータを読み出す。
【0019】
この不揮発性記憶装置では、エラー訂正処理が成功しない場合、ダイバーシティ性を増やすために、データ読み出し時のしきい値電圧を(例えば、所定の範囲内でランダムに)変更して取得した読み出しデータを用いて、ダイバーシティ合成処理を行うことで、不揮発性メモリについての影響(例えば、データリテンションの影響、リードディスターブの影響等)を低減させた読み出しデータを取得することができ、当該読み出しデータに対して、誤り訂正処理を行うことで、より高精度に、読み出しデータに対する誤り訂正処理を行うことができる。
【0020】
第4の発明は、第3の発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、第1アドレスの不揮発性メモリのメモリセルについて、データリテンションの影響が大きいと判定された場合、メモリインターフェース部は、不揮発性メモリからデータを読み出すときのしきい値電圧が、不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも低くなるように調整して、不揮発性メモリからデータを読み出す。
【0021】
これにより、この不揮発性記憶装置において、データリテンションの影響が大きいと判定された場合、正しいデータを読み出す可能性が高くなり、その結果、高精度なエラー訂正処理を実現することができる。
【0022】
第5の発明は、第3の発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合であって、第1アドレスの不揮発性メモリのメモリセルについて、リードディスターブの影響が大きいと判定された場合、メモリインターフェース部は、不揮発性メモリからデータを読み出すときのしきい値電圧が、不揮発性メモリのデータ読み出し時の基準のしきい値電圧よりも高くなるように調整して、不揮発性メモリからデータを読み出す。
【0023】
これにより、この不揮発性記憶装置において、リードディスターブの影響が大きいと判定された場合、正しいデータを読み出す可能性が高くなり、その結果、高精度なエラー訂正処理を実現することができる。
【0024】
第6の発明は、第1から第5のいずれかの発明であって、ダイバーシティ合成処理を実行して取得したデータに対するエラー訂正符号の復号に失敗したと判定された場合、メモリインターフェース部は、所定の時間経過後に、不揮発性メモリの第1アドレスからデータを読み出す。
【0025】
これにより、この不揮発性記憶装置では、i回目(i:自然数)の読み出しデータとi+1回目の読み出しデータのダイバーシティ度合いを高め、エラー訂正処理の精度を向上させることができる。例えば、i回目のデータ読み出し処理と、i+1回目のデータ読み出し処理との間の時間は、所定の規格(例えば、SD規格)により規定されているデータ読み出し時間を遵守できる時間内のできる限り長い時間に設定することが好ましい。また、i回目のデータ読み出し処理と、i+1回目のデータ読み出し処理との間の時間は、固定の時間であってもよいし、可変の時間であってもよい。
【0026】
第7の発明は、メモリインターフェース部と、エラー訂正処理部と、を備える不揮発性記憶装置である。
【0027】
メモリインターフェース部は、不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行う。
【0028】
エラー訂正処理部は、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行する。
(1)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
(2)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、メモリインターフェース部は、不揮発性メモリの第1アドレスに記憶されているデータと同一のデータが記憶されている第1アドレスとは異なる第2アドレスからデータを再度読み出す。また、この場合、エラー訂正処理部は、第1アドレスから読み出したデータと、第2アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【0029】
この不揮発性記憶装置では、1回目に読み出したデータ(第1アドレスから読み出したデータ)によるECC復号化処理が失敗した場合に、同一データが記憶されている第2アドレスからデータを再度読み出し、同一データが記憶されている異なるアドレスから読み出した2つのデータに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。異なるアドレスにおいてエラー発生状況は異なるので、ダイバーシティ合成処理後のデータに対するECC復号化処理は成功する可能性が高くなる。したがって、この不揮発性記憶装置では、上記のように処理することで、エラー訂正能力を向上させることができる。
【0030】
このように、この不揮発性記憶装置では、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【0031】
なお、「第1アドレス」は、例えば、第1物理ブロック内のアドレスであり、「第2アドレス」は、例えば、第1物理ブロックとは異なる物理ブロックである第2物理ブロック内のアドレスである。つまり、第1物理ブロックの「第1アドレス」、および、第2物理ブロックの「第2アドレス」に同一データが書き込まれている場合、第1物理ブロックの「第1アドレス」から読み出したデータと、第2物理ブロックの「第2アドレス」から読み出しデータを用いて、上記のように処理を行うことで、エラー訂正能力を向上させることができる。
【0032】
また、同一データを異なるアドレスに書き込み冗長化を行う場合、同一データを書き込む単位は、以下のようにしてもよい。
(1)複数の不揮発性メモリを備える場合、ブロック単位、または、ページ単位。
(2)単独の不揮発性メモリを備える場合であって、複数のプレーンを備える場合、ブロック単位、または、ページ単位。なお、この場合、同一データを書き込むブロック(または、ページ)は、互いに異なるプレーンに含まれるブロック(または、ページ)であることが好ましい。
【0033】
第8の発明は、不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行うメモリインターフェース部と、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、を備える不揮発性記憶装置に用いられるデータ読み出し方法である。データ読み出し方法は、第1ステップと、第2ステップとを備える。
【0034】
第1ステップにおいて、(1)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
【0035】
第2ステップにおいて、(2)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、メモリインターフェース部は、不揮発性メモリの第1アドレスからデータを再度読み出す。また、エラー訂正処理部は、第1アドレスから1回目に読み出したデータと、第1アドレスから2回目に読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【0036】
これにより、第1の発明と同様の効果を奏するデータ読み出し方法を実現することができる。
【0037】
第9の発明は、不揮発性メモリに対して、データの書き込み処理、および/または、データの読み出し処理を行うメモリインターフェース部と、メモリインターフェース部により、不揮発性メモリから読み出されたデータに対して、エラー訂正符号復号処理を実行するエラー訂正処理部と、を備える不揮発性記憶装置に用いられるデータ読み出し方法である。データ読み出し方法は、第1ステップと、第2ステップとを備える。
【0038】
第1ステップにおいて、(1)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部がエラー訂正符号の復号に成功したと判定した場合、エラー訂正処理部は、エラー訂正符号復号処理により取得されたデータを出力する。
【0039】
第2ステップにおいて、(2)メモリインターフェース部により不揮発性メモリの第1アドレスから読み出されたデータに対してエラー訂正符号復号処理を実行した場合において、エラー訂正処理部が当該エラー訂正符号の復号に失敗したと判定した場合、
メモリインターフェース部は、不揮発性メモリの第1アドレスに記憶されているデータと同一のデータが記憶されている第1アドレスとは異なる第2アドレスからデータを再度読み出す。また、エラー訂正処理部は、第1アドレスから読み出したデータと、第2アドレスから読み出したデータとを合成する処理であるダイバーシティ合成処理を実行し、ダイバーシティ合成処理により取得されたデータに対して、エラー訂正符号復号処理を実行し、当該エラー訂正符号復号処理によるエラー訂正符号の復号に成功した場合、当該エラー訂正符号復号処理により取得されたデータを出力する。
【0040】
これにより、第7の発明と同様の効果を奏するデータ読み出し方法を実現することができる。
【0041】
第10の発明は、第8または第9の発明であるデータ読み出し方法をコンピュータに実行させるためのプログラムである。
【0042】
これにより、第8または第9の発明と同様の効果を奏するデータ読み出し方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【0043】
本発明によれば、エラー訂正能力を確保しつつ、高速に処理が可能な(高スループットを実現する)エラー訂正処理を実行する不揮発性記憶システム、不揮発性記憶装置、データ読み出し方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【0044】
図1】第1実施形態に係る不揮発性記憶システム1000の概略構成図。
図2】第1実施形態のデータ読み出し処理のフローチャート。
図3】第1実施形態の第1変形例のデータ読み出し処理のフローチャート。
図4】第1実施形態の第2変形例に係る不揮発性記憶システム1000Aの概略構成図。
図5】第1実施形態の第2変形例に係る不揮発性記憶システム1000Aにおけるデータ読み出し処理のフローチャートである。
図6】不揮発性メモリMEM1(NANDフラッシュメモリ)の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフ。
図7】第1実施形態の第3変形例に係る不揮発性記憶システム1000Bの概略構成図。
図8】第1実施形態の第3変形例に係る不揮発性記憶システム1000Bにおけるデータ読み出し処理のフローチャート。
図9】CPUバス構成を示す図。
【発明を実施するための形態】
【0045】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0046】
<1.1:不揮発性記憶システムの構成>
図1は、第1実施形態に係る不揮発性記憶システム1000の概略構成図である。
【0047】
不揮発性記憶システム1000は、図1に示すように、ホスト装置1と、不揮発性記憶装置2と、備える。ホスト装置1と不揮発性記憶装置2とは、例えば、バスで接続されている。
【0048】
不揮発性記憶装置2は、図1に示すように、メモリコントローラMCと、不揮発性メモリMEM1と、を備える。
【0049】
メモリコントローラMCは、図1に示すように、ホストインターフェース部IF21と、メモリインターフェース部IF22と、コマンド制御部21と、アドレス変換部22と、ECC符号化部23と、ダイバーシティ合成処理部24と、データ保持部25と、ECC復号化部26と、制御部27と、を備える。
【0050】
ホスト装置1は、バス(クロック信号、データ、コマンド等を送受信するための通信路)を介して、不揮発性記憶装置2と電気的に接続することが可能である。ホスト装置1は、不揮発性記憶装置2に対して、コマンド、データ等を送信し、および/または、不揮発性記憶装置2から、ステータス信号やデータ等を受信する。
【0051】
不揮発性記憶装置2は、データを記憶することができる不揮発性メモリMEM1と、不揮発性メモリMEM1を制御するメモリコントローラMCとを備える。不揮発性記憶装置2は、バス(クロック信号、データ、コマンド等を送受信するための通信路)を介して、ホスト装置1と電気的に接続することが可能である。不揮発性記憶装置2は、ホスト装置1から、コマンド、データ等を受信し、および/または、ホスト装置1へ、ステータス信号やデータ等を送信する。
【0052】
不揮発性メモリMEMは、例えば、NANDフラッシュメモリ(例えば、1つのメモリセルに多値データを記憶できるNANDフラッシュメモリ)であり、メモリコントローラMCの制御に従い、データの書き込みおよび/または読み出しを行うことができるメモリである。
【0053】
メモリコントローラMCは、不揮発性メモリMEM1のデータの書き込み処理および/または読み出し処理の制御を行う。メモリコントローラMCは、図1に示すように、ホストインターフェース部IF21と、メモリインターフェース部IF22と、コマンド制御部21と、アドレス変換部22と、ECC符号化部23と、ダイバーシティ合成処理部24と、データ保持部25と、ECC復号化部26と、制御部27と、を備える。
【0054】
ホストインターフェース部IF21は、ホスト装置1とのインターフェース部である。ホストインターフェース部IF21は、例えば、バスにより、ホスト装置1と接続され、バスを介して、ホスト装置1から、データ、コマンド等を受信する(ホスト装置1から不揮発性記憶装置2に送信されるデータ、コマンド等を含む送信データをデータDH1とする)。また、ホストインターフェース部IF21は、バスを介して、ホスト装置1へ、ステータス信号、データ等を送信する(不揮発性記憶装置2からホスト装置1へ送信されるステータス信号、データ等を含む送信データをデータDS1とする)。
【0055】
ホストインターフェース部IF21は、ホスト装置1から受信したコマンドを、コマンド制御部21および制御部27に、コマンドCmdとして出力する。また、ホストインターフェース部IF21は、ホスト装置1から受信したコマンドが書き込みコマンドである場合、当該書き込みコマンドに付随する書き込みデータをデータD1_wとしてECC符号化部23に出力する。
【0056】
また、ホストインターフェース部IF21は、ECC復号化部26から出力される読み出しデータ(データD4_r)を入力する。そして、ホストインターフェース部IF21は、入力された読み出しデータ(データD4_r)を、バスを介して、ホスト装置1へ、データDS1として、送信する。
【0057】
コマンド制御部21は、ホストインターフェース部IF21から出力されるコマンドCmdを入力とする。コマンド制御部21は、ホストインターフェース部IF21から出力されるコマンドCmdをデコードし、当該コマンドで指定されている論理アドレスを取得する。そして、コマンド制御部21は、取得した論理アドレスに関する情報を含むデータをデータD1_adrとしてアドレス変換部22に出力する。
【0058】
アドレス変換部22は、コマンド制御部21から出力される論理アドレスに関する情報を含むデータD1_adrを入力する。また、アドレス変換部22は、論理アドレス/物理アドレス変換テーブルを有している。アドレス変換部22は、論理アドレス/物理アドレス変換テーブルに基づいて、コマンド制御部21から入力されたデータD1_adrに含まれる論理アドレスを物理アドレスに変換する。そして、アドレス変換部22は、当該物理アドレスに関する情報を含むデータを、データD2_adrとして、メモリインターフェース部IF22に出力する。
【0059】
ECC符号化部23は、ホストインターフェース部IF21から出力される書き込みデータD1_wを入力する。ECC符号化部23は、入力された書き込みデータD1_wに対して、例えば、LDPC符号化処理を実行し、LDPC符号化処理により取得されたデータをデータD2_wとしてメモリインターフェース部IF22に出力する。
【0060】
メモリインターフェース部IF22は、不揮発性メモリMEM1に対してデータを書き込む処理、および/または、不揮発性メモリMEM1からデータを読み出す処理の制御を行うインターフェース部である。メモリインターフェース部IF22は、アドレス変換部22から出力されるデータD2_adrと、ECC符号化部23から出力されるデータD2_wと、制御部27から出力される制御信号Ctl1とを入力する。
【0061】
不揮発性メモリMEM1に対してデータを書き込む処理を行う場合、メモリインターフェース部IF22は、アドレス変換部22から出力される物理アドレス(書き込みアドレス)を含むデータD2_adrと、ECC符号化部23から出力される書き込みデータD1_wとを入力する。そして、メモリインターフェース部IF22は、制御部27からの制御信号Ctl1に従い、不揮発性メモリMEM1において、データD2_adrに含まれる当該物理アドレス(書き込みアドレス)に、ECC符号化部23から出力される書き込みデータD1_wが書き込まれるように、不揮発性メモリMEM1に対して、データ書き込み制御を行う。
【0062】
不揮発性メモリMEM1からデータを読み出す処理を行う場合、メモリインターフェース部IF22は、アドレス変換部22から出力される物理アドレス(読み出しアドレス)を含むデータD2_adrを入力する。そして、メモリインターフェース部IF22は、不揮発性メモリMEM1において、データD2_adrに含まれる当該物理アドレス(読み出しアドレス)に、記憶されているデータを読み出すように、不揮発性メモリMEM1に対して、データ読み出し制御を行う。そして、メモリインターフェース部IF22は、読み出したデータをデータD2_rとして、ダイバーシティ合成処理部24およびデータ保持部25に出力する。
【0063】
ダイバーシティ合成処理部24は、メモリインターフェース部IF22から出力されるデータD2_rと、データ保持部25から出力されるデータD2h_rと、制御部27から出力される制御信号Ctl3とを入力する。
(1)制御信号Ctl3がダイバーシティ合成処理の実行を指示している信号値である場合、ダイバーシティ合成処理部24は、データD2_4とデータD2h_4とを用いて、ダイバーシティ合成処理を実行し、当該処理後のデータを、データD3_rとして、ECC復号化部26に出力する。
(2)制御信号Ctl3がダイバーシティ合成処理の実行を指示していない信号値である場合、ダイバーシティ合成処理部24は、データD2_4をデータD3_rとして、ECC復号化部26に出力する。
【0064】
データ保持部25は、メモリインターフェース部IF22から出力されるデータD2_rと、制御部27から出力される制御信号Ctl2とを入力する。データ保持部25は、データD2_rを記憶保持する。また、データ保持部25は、制御部27からの制御信号Ctl2に従い、記憶保持しているデータをデータD2h_rとして、ダイバーシティ合成処理部24に出力する。
【0065】
ECC復号化部26は、ダイバーシティ合成処理部24から出力されるデータD3_rと、制御部27から出力される制御信号Ctl4とを入力する。ECC復号化部26は、制御信号Ctl4に従い、データD3_rに対して、LDPC復号化処理を実行し、LDPC復号化処理により取得されたデータをデータD4_rとしてホストインターフェース部IF21に出力する。
【0066】
制御部27は、ホストインターフェース部IF21から出力されるコマンドCmdを入力する。制御部27は、コマンドCmdに基づいて(コマンドCmdにより決定されるモード(データ読み出しモード/データ書き込みモード)に基づいて)、メモリインターフェース部IF22を制御するための制御信号Ctl1、データ保持部25を制御するための制御信号Ctl2、ダイバーシティ合成処理部24を制御するための制御信号Ctl3、および、ECC復号化部26を制御するための制御信号Ctl4を生成し、生成した制御信号を、それぞれ、所定のタイミングで、メモリインターフェース部IF22、データ保持部25、ダイバーシティ合成処理部24、および、ECC復号化部26に出力する。また、制御部27は、タイマー271を備えており、所定の時刻から、所定の時間経過後に、制御信号を出力することができる。
【0067】
なお、「エラー訂正処理部」は、ダイバーシティ合成処理部24と、データ保持部25と、ECC復号化部26とにより、その機能が実現される。
【0068】
<1.2:不揮発性記憶システムの動作>
以上のように構成された不揮発性記憶システム1000の動作について、図面を参照しながら、説明する。なお、以下では、データ書き込み処理と、データ読み出し処理とに分けて、説明する。
【0069】
(1.2.1:データ書き込み処理)
まず、データ書き込み処理について、説明する。
【0070】
ホスト装置1は、メモリコントローラMCに対して、書き込みコマンドと書き込みデータを送信する。
【0071】
ホストインターフェース部IF21は、書き込みコマンドを取得し、取得した書き込みコマンド(コマンドCmd)をコマンド制御部21および制御部27に出力する。
【0072】
コマンド制御部21は、書き込みコマンド(コマンドCmd)をデコードし、書き込み論理アドレスを取得する。そして、コマンド制御部21は、取得した書き込み論理アドレスに関する情報を含むデータをデータD1_adrとして、アドレス変換部22に出力する。
【0073】
アドレス変換部22は、論理アドレス/物理アドレス変換テーブルに基づいて、入力された書き込み論理アドレス(データD1_adrに含まれる書き込み論理アドレス)を物理アドレスに変換する。そして、アドレス変換部22は、当該物理アドレスを含むデータをデータD2_adrとして、メモリインターフェース部IF22に出力する。
【0074】
ホストインターフェース部IF21は、書き込みコマンドに付随する書き込みデータ(これをD1_wと表記する。)を、ECC符号化部23に出力する。
【0075】
ECC符号化部23は、ホストインターフェース部IF21から出力される書き込みデータD1_wに対して、LDPC符号化処理を実行し、LDPC符号化処理後のデータをデータD2_wとして取得する。そして、ECC符号化部23は、取得したデータD2_wをメモリインターフェース部IF22に出力する。なお、LDPC符号化処理は、不揮発性メモリMEM1のデータ読み出し単位であるページに対応するビット数を単位として、処理されることが好ましい。例えば、不揮発性メモリMEM1の1ページに書き込むデータがNビット(N:自然数)である場合、LDPC符号化処理により生成されるLDPC符号語は、Nビットのデータである。
【0076】
メモリインターフェース部IF22は、制御信号Ctl1に従い、アドレス変換部22から出力されるデータD2_adrに含まれる書き込みアドレスと、ECC符号化部23から出力される書き込みデータ(符号データ)D2_wとを不揮発性メモリMEM1に出力する。そして、不揮発性メモリMEM1において、メモリインターフェース部IF22により指定された書き込みアドレスに、当該書き込みデータが、書き込まれる。なお、不揮発性メモリMEM1には、不揮発性メモリについて規定される最低書き込み単位で、データが書き込まれる。例えば、不揮発性メモリがTLC NANDフラッシュメモリ(TLC:Triple Level Cell)である場合、最低書き込み単位は、3ページ(ページ3個分)である。なお、「不揮発性メモリについて規定される最低書き込み単位」は、上記に限定されない。
【0077】
(1.2.2:データ読み出し処理)
次に、データ読み出し処理について、説明する。
【0078】
図2は、データ読み出し処理のフローチャートである。以下では、図2のフローチャートを参照しながら、データ読み出し処理について、説明する。
【0079】
(ステップS101):
ステップS101では、1回目のデータ読み出し処理が実行される。
【0080】
ホスト装置1は、メモリコントローラMCに対して、読み出しコマンドを送信する。
【0081】
ホストインターフェース部IF21は、読み出しコマンド(コマンドCmd)を取得し、取得した読み出しコマンドを、コマンド制御部21および制御部27に出力する。
【0082】
コマンド制御部21は、読み出しコマンド(コマンドCmd)をデコードし、読み出し論理アドレスを取得する。ここでは、読み出し論理アドレスが論理アドレスLAdr1であるものとする。そして、コマンド制御部21は、取得した読み出し論理アドレスLAdr1に関する情報を含むデータをデータD1_adrとして、アドレス変換部22に出力する。
【0083】
アドレス変換部22は、論理アドレス/物理アドレス変換テーブルに基づいて、入力されたデータD1_adrに含まれる読み出し論理アドレスLAdr1を物理アドレスPAdr1に変換する。そして、アドレス変換部22は、当該物理アドレスPAdr1に関する情報を含むデータを、データD2_adrとして、メモリインターフェース部IF22に出力する。
【0084】
メモリインターフェース部IF22は、アドレス変換部22から出力されるデータD2_adrに含まれる読み出しアドレスPAdr1を不揮発性メモリMEM1に出力する。
【0085】
そして、不揮発性メモリMEM1において、メモリインターフェース部IF22により指定された読み出しアドレスPAdr1から、データが読み出される。なお、データは、ページ単位で読み出される。
【0086】
不揮発性メモリMEM1は、データ読み出し処理を開始し、読み出しデータ(符号データ)D1_rをメモリインターフェース部IF22に出力する。
【0087】
メモリインターフェース部IF22は、不揮発性メモリMEM1からの読み出しデータD1_rを取得し、取得した読み出しデータD1_rを、データD2_rとして、ダイバーシティ合成処理部24およびデータ保持部25に出力する。データ保持部25は、データD2_rを記憶保持する。なお、データD1_r、D2_rは、1ページ分のデータであるものとする。
【0088】
(ステップS102、S103):
ステップS102では、ECC復号化処理(LDPC復号化処理)が実行される。
【0089】
制御部27は、第1回目の読み出し処理であることを把握し、ダイバーシティ合成処理部24に対して、入力された読み出しデータD2_rをそのままデータD3_rとして、ECC復号化部26に出力するよう指示する制御信号Ctl3を生成し、当該制御信号Ctr3をダイバーシティ合成処理部24に出力する。
【0090】
ダイバーシティ合成処理部24は、制御信号Ctl3に従い、入力された読み出しデータD2_rをそのままデータD3_rとして、ECC復号化部26に出力する。
【0091】
ECC復号化部26は、ダイバーシティ合成処理部24から出力されるデータD3_rに対して、LDPC復号化処理を実行する。そして、ECC復号化部26は、LDPC復号化が成功したか否かの判定を行う(ステップS103)。具体的には、ECC復号化部26は、データD3_rの各ビットのデータ(2値データ)に対して、LDPC復号化処理を繰り返し実行し、(1)所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データD3_rについてのLDPC復号化処理が成功したと判定し、(2)一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データD3_rについてのLDPC復号化処理が失敗したと判定する。
【0092】
そして、ECC復号化部26は、データD3_rについてのLDPC復号化処理が成功したと判定した場合、処理をステップS109に進め、一方、データD3_rについてのLDPC復号化処理が失敗したと判定した場合、処理をステップS104、S105に進める。
【0093】
(ステップS104):
ステップS104において、2回目のデータ読み出し処理が実行される。
【0094】
制御部27は、1回目のデータ読み出し処理と同じページのデータを読み出すための制御信号Ctl1を生成し、当該制御信号Ctl1をメモリインターフェース部IF22に出力する。
【0095】
メモリインターフェース部IF22は、制御信号Ctl1に従い、1回目のデータ読み出し処理と同じページのデータを読み出す。すなわち、メモリインターフェース部IF22は、1回目のデータ読み出し処理と同じページの物理アドレスPAdr1から、データを読み出す。
【0096】
なお、制御部27は、タイマー271の時間情報を参照し、1回目のデータ読み出し処理が実行された時刻から、所定の時間経過後(例えば、150ms経過後)に、2回目のデータ読み出し処理が実行されるように、制御信号Ctl1を生成し、当該制御信号Ctl1をメモリインターフェース部IF22に出力するようにしてもよい。これにより、不揮発性記憶装置2では、1回目のデータ読み出し処理が実行された時刻から、所定の時間経過後に、2回目のデータ読み出し処理を実行することができる。
【0097】
不揮発性メモリMEM1は、データ読み出し処理を開始し、読み出しデータ(符号データ)D1_rをメモリインターフェース部IF22に出力する。
【0098】
メモリインターフェース部IF22は、不揮発性メモリMEM1からの読み出しデータD1_rを取得し、取得した読み出しデータD1_rを、データD2_rとして、ダイバーシティ合成処理部24およびデータ保持部25に出力する。
【0099】
(ステップS105):
ステップS105では、1回目の読み出しデータの取得処理が行われる。具体的には、データ保持部25は、記憶保持している1回目の読み出しデータを読み出し、読み出したデータをデータD2h_rとして、ダイバーシティ合成処理部24に出力する。
【0100】
(ステップS106):
ステップS106では、データ保持部25から出力された1回目の読み出しデータD2h_rと、2回目の読み出しデータD2_rとを用いて、ダイバーシティ合成処理が実行される。つまり、不揮発性メモリMEM1の同一ページから1回目と2回目に読み出されたデータを用いて、ダイバーシティ合成処理が実行される。
【0101】
具体的には、ダイバーシティ合成処理部24は、以下のように処理することで、ダイバーシティ合成処理を実行する。
【0102】
読み出しデータがNビット(N:自然数)のデータであり、各ビットの値は、「0」または「1」であるものとし、i回目に読み出されたデータの第jビット目(j:整数、1≦j≦N)のデータをdi,jとすると、ダイバーシティ合成処理部24は、下記数式に相当する処理を実行し、読み出しデータの第jビット目に対応するLLR値LLRを取得する。なお、本実施形態において、読み出し回数は2回であるので、m=2である。
【数1】

i,j={0,1}
K:正の係数(ゲイン)
c:正の係数(オフセット)
そして、ダイバーシティ合成処理部24は、(1)上記処理により取得した読み出しデータの第jビット目に対応するLLR値LLRがLLR≧0を満たす場合、ダイバーシティ合成後の読み出しデータの第jビット目の値を「1」とし、(2)上記処理により取得した読み出しデータの第jビット目に対応するLLR値LLRがLLR<0を満たす場合、ダイバーシティ合成後の読み出しデータの第jビット目の値を「0」とすることで、ダイバーシティ合成処理後のデータ(Nビットのデータ)を取得する。
【0103】
例えば、K=1、c=1とした場合、ダイバーシティ合成処理部24は、以下のようにして、ダイバーシティ合成処理後のデータを取得する。
(1)1回目に読み出したデータと2回目に読み出したデータの第jビット目のデータがともに「1」である場合、
LLR=(K/2)×2−K/2+c=K/2+c=0.5+1=1.5
となり、1.5>0なので、ダイバーシティ合成処理部24は、ダイバーシティ合成後の読み出しデータの第jビット目の値を「1」とする。
(2)1回目に読み出したデータの第jビット目のデータが「0」であり、2回目に読み出したデータの第jビット目のデータがともに「1」である場合、
LLR=(K/2)×1−K/2+c=0+c=1
となり、1>0なので、ダイバーシティ合成処理部24は、ダイバーシティ合成後の読み出しデータの第jビット目の値を「1」とする。
(3)K=1、c=1とした場合、1回目に読み出したデータと2回目に読み出したデータの第jビット目のデータがともに「0」である場合、
LLR=(K/2)×0−K/2−c=−K/2−c=―0.5−1=−1.5
となり、−1.5<0なので、ダイバーシティ合成処理部24は、ダイバーシティ合成後の読み出しデータの第jビット目の値を「0」とする。
【0104】
上記のように処理することで、ダイバーシティ合成処理部24は、データ保持部25から出力された1回目の読み出しデータD2h_rと、2回目の読み出しデータD2_rとから、ダイバーシティ合成処理後の読み出しデータを取得する。
【0105】
なお、不揮発性記憶装置2において、このようにダイバーシティ合成処理を実行する理由は、以下の通りである。
【0106】
NANDフラッシュメモリでは同じページでも、読み出すときに発生するエラービットの数と位置が読み出しごとに異なることが分かっている。特に、読み出しの間隔時間が相対的に長い場合、この現象が顕著に表れる。例えば、1回目にあるページのデータを読み出した後、所定の期間(例えば、150ms)を待って当該ページからもう一度データを読み出した場合において、NANDフラッシュメモリの同一ページから、1回目に読み出したデータと2回目に読み出したデータとを比較すると、エラービットの数とエラーが発生しているビット位置とがかなり異なる。この現象から、NANDフラッシュメモリの同一ページから複数回読み出したデータにはダイバーシティがあることが分かる。このダイバーシティを利用することで、エラー訂正強度を向上させることができる。つまり、NANDフラッシュメモリの同一ページから複数回読み出したデータをダイバーシティ合成による得られたLLRを使って、ダイバーシティ合成語のデータを取得し、取得したダイバーシティ合成語のデータに対して、ECC復号化処理を行うことで、読み出しデータのエラー訂正強度を向上させることができる。
【0107】
上記のようにして取得されたダイバーシティ合成処理後の読み出しデータは、データD3_rとして、ダイバーシティ合成処理部24からECC復号化部26に出力される。
【0108】
(ステップS107、S108):
ステップS107では、ECC復号化処理(LDPC復号化処理)が実行される。
【0109】
ECC復号化部26は、ダイバーシティ合成処理部24から出力されるデータD3_rに対して、LDPC復号化処理を実行する。そして、ECC復号化部26は、LDPC復号化が成功したか否かの判定を行う(ステップS108)。具体的には、ECC復号化部26は、データD3_rの各ビットのデータ(2値データ)に対して、LDPC復号化処理を繰り返し実行し、(1)所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データD3_rについてのLDPC復号化処理が成功したと判定し、(2)一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データD3_rについてのLDPC復号化処理が失敗したと判定する。
【0110】
そして、ECC復号化部26は、データD3_rについてのLDPC復号化処理が成功したと判定した場合、処理をステップS109に進め、一方、データD3_rについてのLDPC復号化処理が失敗したと判定した場合、処理をステップS110に進める。
【0111】
(ステップS109):
ステップS109において、ホストインターフェース部IF21は、ECC復号化部26から出力されるデータD4_r(LDPC復号化処理が成功した判定されたデータ)を入力し、当該データD4_rを含めたデータDS1を生成し、当該データDS1をホスト装置1に出力する。
【0112】
ホスト装置1は、ホストインターフェース部IF21から出力されるデータDS1を受信することで、エラー訂正強度の高い読み出しデータを取得することができる。
【0113】
(ステップS110):
ステップS110において、ECC復号化部26は、LDPC復号化処理が失敗したことを示すデータ(例えば、復号化の失敗を示すフラグ)を生成し、当該データ(LDPC復号化処理が失敗したことを示すデータ)をデータD4_rとして、ホストインターフェース部IF21に出力する。
【0114】
ホストインターフェース部IF21は、ECC復号化部26から出力されるデータD4_r(LDPC復号化処理が失敗したことを示すデータ)を入力し、当該データD4_rを含めたデータDS1を生成し、当該データDS1をホスト装置1に出力する。
【0115】
ホスト装置1は、ホストインターフェース部IF21から出力されるデータDS1を受信することで、要求したアドレスのデータの読み出しに失敗したことを把握する。
【0116】
以上のように、不揮発性記憶システム1000では、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、不揮発性記憶システム1000では、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、不揮発性記憶システム1000では、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合に実行される軟判定復号処理(ソフトデシジョン復号処理)と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【0117】
また、不揮発性記憶システム1000では、1回目に読み出したデータによるECC復号化処理が失敗した場合に、同一ページのデータを再度読み出し(2回目のデータ読み出し処理を実行し)、同一ページについて、1回目に読み出したデータと、2回目に読み出したデータとに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。ダイバーシティ合成処理後のデータに対するECC復号化処理は成功する可能性が高くなるので、不揮発性記憶システム1000では、上記のように処理することで、エラー訂正能力を向上させることができる。つまり、NANDフラッシュメモリの同一ページから複数回読み出したデータには、エラービットの数とエラーが発生しているビット位置とが変動するというダイバーシティがあるので、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータは、ECC復号化処理を行ったときに、エラー訂正処理が成功する可能性が高くなる。したがって、不揮発性記憶システム1000では、1回目に読み出したデータによるECC復号化処理が失敗した場合に、ダイバーシティ合成処理後のデータに対するECC復号化処理を行うことで、エラー訂正能力を向上させることができる。
【0118】
このように、不揮発性記憶システム1000では、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【0119】
なお、同一ページに対する、1回目のデータ読み出し処理と、2回目のデータ読み出し処理との間の時間は、所定の規格(例えば、SD規格)により規定されているデータ読み出し時間を遵守できる時間内のできる限り長い時間に設定することが好ましい。
【0120】
≪第1変形例≫
次に、第1実施形態の第1変形例について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0121】
第1実施形態では、同一ページからのデータ読み出し回数は2回であったが、本変形例では、同一ページからのデータ読み出し処理が、ECC復号化処理が成功するまで繰り返す実行される。この点が、本変形例と第1実施形態とでは相違する。
【0122】
図3は、第1変形例のデータ読み出し処理のフローチャートである。以下では、図3のフローチャートを参照しながら、データ読み出し処理について、説明する。
【0123】
(ステップ201〜S204):
ステップS201、S202、S204では、それぞれ、第1実施形態のステップS101、S102、S103と同様の処理が実行される。
【0124】
ステップS203では、変数iが「2」にセットされる。
【0125】
(ステップ205〜S210):
≪2回目の読み出しデータに対する処理≫
ステップS205〜S208では、2回目の読み出しデータに対する処理が実行される。つまり、ステップS205〜S208では、それぞれ、第1実施形態のステップS104〜S107と同様の処理が実行される。また、ステップS209において、変数iが1だけインクリメントされる。
【0126】
ステップS208では、ECC復号化処理(LDPC復号化処理)が実行される。
【0127】
ECC復号化部26は、ダイバーシティ合成処理部24から出力されるデータD3_rに対して、LDPC復号化処理を実行する。そして、ECC復号化部26は、LDPC復号化が成功したか否かの判定を行う(ステップS210)。具体的には、ECC復号化部26は、データD3_rの各ビットのデータ(2値データ)に対して、LDPC復号化処理を繰り返し実行し、(1)所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データD3_rについてのLDPC復号化処理が成功したと判定し、(2)一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データD3_rについてのLDPC復号化処理が失敗したと判定する。
【0128】
そして、ECC復号化部26は、データD3_rについてのLDPC復号化処理が成功したと判定した場合、処理をステップS211に進め、一方、データD3_rについてのLDPC復号化処理が失敗したと判定した場合、処理をステップS205、S206に戻す。
【0129】
≪3回目の読み出しデータに対する処理≫
ステップS210にて、データD3_rについてのLDPC復号化処理が失敗したと判定された場合、3回目(i=3)の読み出しデータに対する処理が実行される。
【0130】
3回目(i=3)の読み出しデータに対する処理では、ステップS205において、制御部27は、1回目、2回目のデータ読み出し処理と同じページのデータを読み出すための制御信号Ctl1を生成し、当該制御信号Ctl1をメモリインターフェース部IF22に出力する。
【0131】
メモリインターフェース部IF22は、制御信号Ctl1に従い、1回目、2回目のデータ読み出し処理と同じページのデータを読み出す。すなわち、メモリインターフェース部IF22は、1回目のデータ読み出し処理と同じページの物理アドレスPAdr1から、データを読み出す。
【0132】
なお、制御部27は、タイマー271の時間情報を参照し、2回目のデータ読み出し処理が実行された時刻から、所定の時間経過後(例えば、150ms経過後)に、3回目のデータ読み出し処理が実行されるように、制御信号Ctl1を生成し、当該制御信号Ctl1をメモリインターフェース部IF22に出力するようにしてもよい。これにより、不揮発性記憶装置2では、2回目のデータ読み出し処理が実行された時刻から、所定の時間経過後に、3回目のデータ読み出し処理を実行することができる。
【0133】
不揮発性メモリMEM1は、データ読み出し処理を開始し、読み出しデータ(符号データ)D1_rをメモリインターフェース部IF22に出力する。
【0134】
メモリインターフェース部IF22は、不揮発性メモリMEM1からの読み出しデータD1_rを取得し、取得した読み出しデータD1_rを、データD2_rとして、ダイバーシティ合成処理部24およびデータ保持部25に出力する。
【0135】
ステップS206では、2回目までの読み出しデータ(1回目の読み出しデータおよび2回目の読み出しデータ)の取得処理が行われる。具体的には、データ保持部25は、記憶保持している1回目の読み出しデータ、および、2回目の読み出しデータを読み出し、読み出したデータをデータD2h_r(2回分の読み出しデータ)として、ダイバーシティ合成処理部24に出力する。
【0136】
ステップS207では、データ保持部25から出力された1回目、2回目の読み出しデータ(データD2h_r)と、3回目の読み出しデータD2_rとを用いて、ダイバーシティ合成処理が実行される。つまり、不揮発性メモリMEM1の同一ページから1〜3回目に読み出された3つの読み出しデータを用いて、ダイバーシティ合成処理が実行される。
【0137】
具体的には、ダイバーシティ合成処理部24は、以下のように処理することで、ダイバーシティ合成処理を実行する。
【0138】
読み出しデータがNビット(N:自然数)のデータであり、各ビットの値は、「0」または「1」であるものとし、i回目に読み出されたデータの第jビット目(j:整数、1≦j≦N)のデータをdi,jとすると、ダイバーシティ合成処理部24は、下記数式に相当する処理を実行し、読み出しデータの第jビット目に対応するLLR値LLRを取得する。なお、本実施形態において、読み出し回数は3回であるので、m=3である。
【数2】

i,j={0,1}
K:正の係数(ゲイン)
c:正の係数(オフセット)
そして、ダイバーシティ合成処理部24は、(1)上記処理により取得した読み出しデータの第jビット目に対応するLLR値LLRがLLR≧0を満たす場合、ダイバーシティ合成後の読み出しデータの第jビット目の値を「1」とし、(2)上記処理により取得した読み出しデータの第jビット目に対応するLLR値LLRがLLR<0を満たす場合、ダイバーシティ合成後の読み出しデータの第jビット目の値を「0」とすることで、ダイバーシティ合成処理後のデータ(Nビットのデータ)を取得する。
【0139】
上記のようにして取得されたダイバーシティ合成処理後の読み出しデータは、データD3_rとして、ダイバーシティ合成処理部24からECC復号化部26に出力される。
【0140】
ステップS208では、ECC復号化処理(LDPC復号化処理)が実行される。
【0141】
ECC復号化部26は、ダイバーシティ合成処理部24から出力されるデータD3_rに対して、LDPC復号化処理を実行する。そして、ECC復号化部26は、LDPC復号化が成功したか否かの判定を行う(ステップS210)。具体的には、ECC復号化部26は、データD3_rの各ビットのデータ(2値データ)に対して、LDPC復号化処理を繰り返し実行し、(1)所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データD3_rについてのLDPC復号化処理が成功したと判定し、(2)一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データD3_rについてのLDPC復号化処理が失敗したと判定する。
【0142】
そして、ECC復号化部26は、データD3_rについてのLDPC復号化処理が成功したと判定した場合、処理をステップS211に進め、一方、データD3_rについてのLDPC復号化処理が失敗したと判定した場合、変数iを+1だけインクリメントし、処理をステップS205、S206に戻す。そして、この場合、上記と同様にして、4回目(i=4)の読み出しデータに対する処理が実行される。
【0143】
このように、不揮発性記憶装置2では、復号化処理が成功するまで、同一ページからのデータ読み出し処理を繰り返し行う。
【0144】
(ステップS211):
ステップS211において、ホストインターフェース部IF21は、ECC復号化部26から出力されるデータD4_r(LDPC復号化処理が成功した判定されたデータ)を入力し、当該データD4_rを含めたデータDS1を生成し、当該データDS1をホスト装置1に出力する。
【0145】
ホスト装置1は、ホストインターフェース部IF21から出力されるデータDS1を受信することで、エラー訂正強度の高い読み出しデータを取得することができる。
【0146】
以上のように、本変形例の不揮発性記憶システムでは、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、本変形例の不揮発性記憶システムでは、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、本変形例の不揮発性記憶システムでは、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合に実行される軟判定復号処理(ソフトデシジョン復号処理)と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【0147】
また、本変形例の不揮発性記憶システムでは、復号処理が成功するまで、同一ページから複数回読み出したデータをダイバーシティ合成処理して取得したデータを用いてECC復号化処理を行うので、エラー訂正能力を向上させることができる。
【0148】
このように、本変形例の不揮発性記憶システムでは、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【0149】
なお、同一ページに対する、i回目のデータ読み出し処理と、i+1回目のデータ読み出し処理との間の時間は、所定の規格(例えば、SD規格)により規定されているデータ読み出し時間を遵守できる時間内のできる限り長い時間に設定することが好ましい。また、i回目のデータ読み出し処理と、i+1回目のデータ読み出し処理との間の時間は、固定の時間であってもよいし、可変の時間であってもよい。
【0150】
≪第2変形例≫
次に、第1実施形態の第2変形例について、説明する。なお、上記実施形態、変形例と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0151】
図4は、第1実施形態の第2変形例に係る不揮発性記憶システム1000Aの概略構成図である。
【0152】
図5は、第1実施形態の第2変形例に係る不揮発性記憶システム1000Aにおけるデータ読み出し処理のフローチャートである。
【0153】
本変形例の不揮発性記憶システム1000Aは、第1実施形態の不揮発性記憶システム1000において、不揮発性記憶装置2を不揮発性記憶装置2Aに置換した構成を有する。不揮発性記憶装置2Aは、第1実施形態の不揮発性記憶装置2において、メモリコントローラMCをメモリコントローラMCaに置換し、メモリインターフェース部IF22をメモリインターフェース部IF22Aに置換した構成を有する。それ以外について、本変形例の不揮発性記憶システム1000Aは、第1実施形態の不揮発性記憶システム1000と同様である。
【0154】
メモリインターフェース部IF22Aは、メモリインターフェース部IF22と同様の機能に追加して、データ読み出し時のしきい値電圧を変更することが可能である。つまり、メモリインターフェース部IF22Aにより、不揮発性メモリMEM1において、メモリセル毎にデータを読み出すときの電圧(しきい値電圧)を変化することができる。具体的には、メモリインターフェース部IF22Aから、不揮発性メモリMEM1に対して、しきい値電圧V_r_thを出力することで、不揮発性メモリMEM1では、当該しきい値電圧V_r_thにより、各メモリセルからデータが読み出される。
【0155】
以上のように構成された不揮発性記憶システム1000Aのデータ読み出し処理について、図5のフローチャートを参照しながら、説明する。
【0156】
本変形例の不揮発性記憶システム1000Aのデータ読み出し処理では、第1実施形態の第1変形例の不揮発性記憶システムにおけるデータ読み出し処理において、i回目のデータ読み出し処理の前に、データ読み出し処理のしきい値電圧を調整する処理(ステップS305)が追加されている。この点が、本変形例の不揮発性記憶システム1000Aのデータ読み出し処理と、第1実施形態の第1変形例の不揮発性記憶システムにおけるデータ読み出し処理との相違点であり、他については、本変形例の不揮発性記憶システム1000Aのデータ読み出し処理は、第1実施形態の第1変形例の不揮発性記憶システムにおけるデータ読み出し処理と同様である。以下では、この相違点について、説明する。
【0157】
(ステップS305):
ステップS305において、制御部27は、不揮発性メモリMEM1において、メモリセル毎にデータを読み出すときの電圧(しきい値電圧)をしきい値電圧V_r_thに設定することを指示する制御信号Ctl1を生成し、生成した制御信号Ctl1をメモリインターフェース部IF22Aに出力する。
【0158】
メモリインターフェース部IF22Aは、制御信号Ctl1に従い、しきい値電圧をV_r_thに設定する。そして、メモリインターフェース部IF22Aから、不揮発性メモリMEM1に対して、しきい値電圧V_r_thを出力することで、不揮発性メモリMEM1では、当該しきい値電圧V_r_thにより、各メモリセルからデータが読み出される。
【0159】
ここで、不揮発性メモリMEM1の各メモリセルからデータを読み出すときのしきい値電圧を変更する理由について、図6を用いて、説明する。
【0160】
図6は、不揮発性メモリMEM1(NANDフラッシュメモリ)の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。
【0161】
図6(a)は、通常状態(リードディスターブの影響もデータリテンションの影響もない場合)の不揮発性メモリMEM1(NANDフラッシュメモリ)の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。なお、図6(a)において、曲線Curve_1は、各メモリセルに記憶されているデータの値が「1」である確率密度を示す曲線であり、曲線Curve_0は、各メモリセルに記憶されているデータの値が「0」である確率密度を示す曲線である。
【0162】
図6(b)は、データリテンションの影響が大きい場合の不揮発性メモリMEM1(NANDフラッシュメモリ)の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。なお、図6(b)において、曲線CurveA_1は、データリテンションの影響が大きい場合の各メモリセルに記憶されているデータの値が「1」である確率密度を示す曲線であり、曲線CurveA_0は、データリテンションの影響が大きい場合の各メモリセルに記憶されているデータの値が「0」である確率密度を示す曲線である。
【0163】
図6(c)は、リードディスターブの影響が大きい場合の不揮発性メモリMEM1(NANDフラッシュメモリ)の各セルにおいて、データ読み出し時にかける電圧と、確率密度との関係を示したグラフである。なお、図6(c)において、曲線CurveB_1は、リードディスターブの影響が大きい場合の各メモリセルに記憶されているデータの値が「1」である確率密度を示す曲線であり、曲線CurveB_0は、リードディスターブの影響が大きい場合の各メモリセルに記憶されているデータの値が「0」である確率密度を示す曲線である。
【0164】
不揮発性メモリMEM1(NANDフラッシュメモリ)において、通常の状態であれば、図6(a)に示すように、データ読み出し時のしきい値電圧をVth0とすれば、正しくデータを読み取れる可能性が高くなることが分かる。
【0165】
一方、不揮発性メモリMEM1(NANDフラッシュメモリ)において、データリテンションの影響が大きい場合、図6(b)に示すように、データ読み出し時のしきい値電圧をVth0とすると、正しくデータを読み取れる可能性が低下することが分かる。一般的に、データリテンションの影響が大きい状態とは、不揮発性メモリMEM1に対するデータ書き込み/読み出し処理が長期間実行されず、各メモリセルにおいて、トンネル酸化膜から保持されるべき電荷が流出する傾向にある状態である。したがって、この場合、各メモリセルに記憶されているデータの値が「1」である確率密度を示す曲線、各メモリセルに記憶されているデータの値が「0」である確率密度を示す曲線は、ともに、電圧が低い方向にシフトする特性を示す傾向にある。そのため、不揮発性メモリMEM1(NANDフラッシュメモリ)がデータリテンションの影響が大きい状態である場合、図6(b)に示すように、データ読み出し時のしきい値電圧をVth1にする方が、しきい値電圧Vth0にした場合よりも、正しくデータを読み取れる可能性が高くなる。
【0166】
また、不揮発性メモリMEM1(NANDフラッシュメモリ)において、リードディスターブの影響が大きい場合、図6(c)に示すように、データ読み出し時のしきい値電圧をVth0とすると、正しくデータを読み取れる可能性が低下することが分かる。一般的に、リードディスターブの影響が大きい状態とは、不揮発性メモリMEM1において、特定のメモリセルからのデータ読み出し回数が多く、当該メモリセルで保持すべき電荷の状態が適切ではなくなる状態である。つまり、リードディスターブの影響が大きい場合、当該メモリセルに対しては、弱書き込みの特性と同様になり、当該メモリセルに保持すべき電荷よりも多い電荷が保持される傾向にある。したがって、この場合、各メモリセルに記憶されているデータの値が「1」である確率密度を示す曲線、各メモリセルに記憶されているデータの値が「0」である確率密度を示す曲線は、ともに、電圧が高い方向にシフトする特性を示す傾向にある。そのため、不揮発性メモリMEM1(NANDフラッシュメモリ)がリードディスターブの影響が大きい状態である場合、図6(c)に示すように、データ読み出し時のしきい値電圧をVth2にする方が、しきい値電圧Vth0にした場合よりも、正しくデータを読み取れる可能性が高くなる。
【0167】
このように、不揮発性メモリMEM1(NANDフラッシュメモリ)の特性を考慮すると、読み出しデータを正しく復号できない場合、不揮発性メモリMEM1のデータ読み出し時のしきい値電圧を調整することで、正しいデータが取得される可能性が高くなる。
【0168】
そこで、本変形例の不揮発性記憶システム1000Aでは、i回目のデータ読み出し処理を実行する前に、データ読み出しのしきい値電圧を調整する(ステップS305)。
【0169】
なお、不揮発性記憶装置2Aにおいて、例えば、不揮発性メモリMEM1に対するデータ読み出し処理/書き込み処理が長期間にわたり実行されておらず、データリテンションの影響が大きい状態である判断できる場合、ステップS305において、データ読み出しのしきい値電圧V_r_thが、通常状態のデータ読み出し時のしきい値電圧Vth0よりも低い電圧となるように調整することが好ましい。
【0170】
また、不揮発性記憶装置2Aにおいて、例えば、各メモリセルからデータ読み出し回数についてのデータが分かる場合であって、当該データから、データ読み出し処理の対象となっているメモリセルの状態が、リードディスターブの影響が大きい状態であることが分かる場合、ステップS305において、データ読み出しのしきい値電圧V_r_thが、通常状態のデータ読み出し時のしきい値電圧Vth0よりも高い電圧となるように調整することが好ましい。
【0171】
なお、不揮発性記憶装置2Aにおいて、不揮発性メモリMEM1について、(1)データリテンションの影響が大きい状態であるか否かについての情報、(2)リードディスターブの影響が大きい状態であるか否かについての情報が取得できない場合であっても、本変形例の不揮発性記憶システム1000Aにおいて、データ読み出し時のしきい値電圧V_r_thを(例えば、所定の範囲内でランダムに)変更して取得した読み出しデータを用いて、ダイバーシティ合成処理を行い、エラー訂正処理を行うことで、高精度にエラー訂正処理を実行することができる。つまり、不揮発性記憶システム1000Aでは、エラー訂正処理が成功しない場合、データ読み出し時のしきい値電圧V_r_thを(例えば、所定の範囲内でランダムに)変更して取得した読み出しデータを用いて、ダイバーシティ合成処理を行うことで、不揮発性メモリMEM1についての影響(データリテンションの影響、リードディスターブの影響等)を低減させた読み出しデータを取得することができ、当該読み出しデータに対して、誤り訂正処理を行うことで、より高精度に、読み出しデータに対する誤り訂正処理を行うことができる。
【0172】
これにより、例えば、ゲームのROM用途で使用される不揮発性記憶装置において、(1)データ読み出し回数(リードディスターブ)や、(2)放置時間(データリテンション)が不明なデバイスに対しても、高エラー訂正能力、高速処理(高スループット)が可能となる。
【0173】
≪第3変形例≫
次に、第1実施形態の第3変形例について、説明する。なお、上記実施形態、変形例と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0174】
図7は、第1実施形態の第3変形例に係る不揮発性記憶システム1000Bの概略構成図である。
【0175】
図8は、第1実施形態の第3変形例に係る不揮発性記憶システム1000Bにおけるデータ読み出し処理のフローチャートである。
【0176】
本変形例の不揮発性記憶システム1000Bは、第1実施形態の不揮発性記憶システム1000において、不揮発性記憶装置2を不揮発性記憶装置2Aに置換した構成を有する。不揮発性記憶装置2Aは、第1実施形態の不揮発性記憶装置2において、メモリコントローラMCをメモリコントローラMCbに置換し、メモリインターフェース部IF22をメモリインターフェース部IF22Bに置換した構成を有する。それ以外について、本変形例の不揮発性記憶システム1000Bは、第1実施形態の不揮発性記憶システム1000と同様である。
【0177】
メモリインターフェース部IF22Bは、メモリインターフェース部IF22と同様の機能に追加して、同一データが、不揮発性メモリMEM1の異なる物理ブロックに書き込まれている場合、当該同一データの不揮発性メモリMEM1の異なる物理ブロック(この物理アドレスをAdr2a、Adr2bとする)から、データを読み出す機能を有する。
【0178】
以上のように構成された不揮発性記憶システム1000Bのデータ読み出し処理について、図8のフローチャートを参照しながら、説明する。なお、説明便宜のために、同一データが、第1物理ブロックの物理アドレスがAdr2aであるページと、第1物理ブロックの物理アドレスがAdr2bであるページとに記憶されているものとする。第1物理ブロックは、第2物理ブロックと異なる物理ブロックであるものとする。
【0179】
(ステップS401):
ステップS401では、第1物理ブロックの物理アドレスがAdr2bであるページからのデータ読み出し処理が実行される。
【0180】
ホスト装置1は、メモリコントローラMCに対して、読み出しコマンドを送信する。
【0181】
ホストインターフェース部IF21は、読み出しコマンド(コマンドCmd)を取得し、取得した読み出しコマンドを、コマンド制御部21および制御部27に出力する。
【0182】
コマンド制御部21は、読み出しコマンド(コマンドCmd)をデコードし、読み出し論理アドレスを取得する。ここでは、読み出し論理アドレスが論理アドレスLAdr1であるものとする。そして、コマンド制御部21は、取得した読み出し論理アドレスLAdr1に関する情報を含むデータをデータD1_adrとして、アドレス変換部22に出力する。
【0183】
アドレス変換部22は、論理アドレス/物理アドレス変換テーブルに基づいて、入力されたデータD1_adrに含まれる読み出し論理アドレスLAdr1を物理アドレスPAdr1(=Adr2a)に変換する。そして、アドレス変換部22は、当該物理アドレスPAdr1(=Adr2a)に関する情報を含むデータを、データD2_adrとして、メモリインターフェース部IF22に出力する。
【0184】
メモリインターフェース部IF22は、アドレス変換部22から出力されるデータD2_adrに含まれる読み出しアドレスPAdr1(=Adr2a)を不揮発性メモリMEM1に出力する。
【0185】
そして、不揮発性メモリMEM1において、メモリインターフェース部IF22により指定された読み出しアドレスPAdr1(=Adr2a)から、データが読み出される。なお、データは、ページ単位で読み出される。
【0186】
不揮発性メモリMEM1は、データ読み出し処理を開始し、読み出しデータ(符号データ)D1_rをメモリインターフェース部IF22に出力する。
【0187】
メモリインターフェース部IF22は、不揮発性メモリMEM1からの読み出しデータD1_rを取得し、取得した読み出しデータD1_rを、データD2_rとして、ダイバーシティ合成処理部24およびデータ保持部25に出力する。データ保持部25は、データD2_rを記憶保持する。なお、データD1_r、D2_rは、1ページ分のデータであるものとする。
【0188】
(ステップS402、S403):
ステップS402では、ECC復号化処理(LDPC復号化処理)が実行される。
【0189】
制御部27は、第1物理ブロックの物理アドレスがAdr2aであるページから読み出したデータに対する第1回目の読み出し処理であることを把握し、ダイバーシティ合成処理部24に対して、入力された読み出しデータD2_rをそのままデータD3_rとして、ECC復号化部26に出力するよう指示する制御信号Ctl3を生成し、当該制御信号Ctr3をダイバーシティ合成処理部24に出力する。
【0190】
ダイバーシティ合成処理部24は、制御信号Ctl3に従い、入力された読み出しデータD2_rをそのままデータD3_rとして、ECC復号化部26に出力する。
【0191】
ECC復号化部26は、ダイバーシティ合成処理部24から出力されるデータD3_rに対して、LDPC復号化処理を実行する。そして、ECC復号化部26は、LDPC復号化が成功したか否かの判定を行う(ステップS403)。
【0192】
そして、ECC復号化部26は、データD3_rについてのLDPC復号化処理が成功したと判定した場合、処理をステップS409に進め、一方、データD3_rについてのLDPC復号化処理が失敗したと判定した場合、処理をステップS404、S405に進める。
【0193】
(ステップS404):
ステップS404において、第2物理ブロックの物理アドレスがAdr2bであるページからのデータ読み出し処理が実行される。
【0194】
制御部27は、物理アドレスがAdr2bであるページのデータを読み出すための制御信号Ctl1を生成し、当該制御信号Ctl1をメモリインターフェース部IF22に出力する。
【0195】
メモリインターフェース部IF22は、制御信号Ctl1に従い、第2物理ブロックの物理アドレスがAdr2bであるページからデータを読み出す。
【0196】
不揮発性メモリMEM1は、データ読み出し処理を開始し、読み出しデータ(符号データ)D1_rをメモリインターフェース部IF22に出力する。
【0197】
メモリインターフェース部IF22は、不揮発性メモリMEM1からの読み出しデータD1_rを取得し、取得した読み出しデータD1_rを、データD2_rとして、ダイバーシティ合成処理部24およびデータ保持部25に出力する。
【0198】
(ステップS405):
ステップS405において、データ保持部25は、記憶保持している第1物理ブロックの物理アドレスがAdr2aであるページから読み出したデータを取得し、取得したデータをデータD2h_rとして、ダイバーシティ合成処理部24に出力する。
【0199】
(ステップS406):
ステップS406では、データ保持部25から出力されたデータD2h_r(第1物理ブロックの物理アドレスがAdr2aであるページから読み出したデータ)と、データD2_r(第2物理ブロックの物理アドレスがAdr2bであるページから読み出したデータ)とを用いて、ダイバーシティ合成処理が実行される。
【0200】
具体的には、ダイバーシティ合成処理部24は、以下のように処理することで、ダイバーシティ合成処理を実行する。
【0201】
読み出しデータがNビット(N:自然数)のデータであり、各ビットの値は、「0」または「1」であるものとし、第i物理ブロックから読み出されたデータの第jビット目(j:整数、1≦j≦N)のデータをdi,jとすると、ダイバーシティ合成処理部24は、下記数式に相当する処理を実行し、読み出しデータの第jビット目に対応するLLR値LLRを取得する。なお、本実施形態において、読み出した物理ブロックは2つであるので、m=2である。
【数3】

i,j={0,1}
K:正の係数(ゲイン)
c:正の係数(オフセット)
そして、ダイバーシティ合成処理部24は、(1)上記処理により取得した読み出しデータの第jビット目に対応するLLR値LLRがLLR≧0を満たす場合、ダイバーシティ合成後の読み出しデータの第jビット目の値を「1」とし、(2)上記処理により取得した読み出しデータの第jビット目に対応するLLR値LLRがLLR<0を満たす場合、ダイバーシティ合成後の読み出しデータの第jビット目の値を「0」とすることで、ダイバーシティ合成処理後のデータ(Nビットのデータ)を取得する。
【0202】
上記のように処理することで、ダイバーシティ合成処理部24は、データD2h_r(第1物理ブロックの物理アドレスがAdr2aであるページから読み出したデータ)と、データD2_r(第2物理ブロックの物理アドレスがAdr2bであるページから読み出したデータ)とから、ダイバーシティ合成処理後の読み出しデータを取得する。
【0203】
上記のようにして取得されたダイバーシティ合成処理後の読み出しデータは、データD3_rとして、ダイバーシティ合成処理部24からECC復号化部26に出力される。
【0204】
(ステップS407、S408):
ステップS407では、ECC復号化処理(LDPC復号化処理)が実行される。
【0205】
ECC復号化部26は、ダイバーシティ合成処理部24から出力されるデータD3_rに対して、LDPC復号化処理を実行する。そして、ECC復号化部26は、LDPC復号化が成功したか否かの判定を行う(ステップS408)。具体的には、ECC復号化部26は、データD3_rの各ビットのデータ(2値データ)に対して、LDPC復号化処理を繰り返し実行し、(1)所定の繰り返し回数内に、十分に尤もらしい復号語が得られた場合、データD3_rについてのLDPC復号化処理が成功したと判定し、(2)一方、所定の繰り返し回数内に、十分に尤もらしい復号語が得られなかった場合、データD3_rについてのLDPC復号化処理が失敗したと判定する。
【0206】
そして、ECC復号化部26は、データD3_rについてのLDPC復号化処理が成功したと判定した場合、処理をステップS409に進め、一方、データD3_rについてのLDPC復号化処理が失敗したと判定した場合、処理をステップS410に進める。
【0207】
(ステップS409):
ステップS409において、ホストインターフェース部IF21は、ECC復号化部26から出力されるデータD4_r(LDPC復号化処理が成功した判定されたデータ)を入力し、当該データD4_rを含めたデータDS1を生成し、当該データDS1をホスト装置1に出力する。
【0208】
ホスト装置1は、ホストインターフェース部IF21から出力されるデータDS1を受信することで、エラー訂正強度の高い読み出しデータを取得することができる。
【0209】
(ステップS410):
ステップS410において、ECC復号化部26は、LDPC復号化処理が失敗したことを示すデータ(例えば、復号化の失敗を示すフラグ)を生成し、当該データ(LDPC復号化処理が失敗したことを示すデータ)をデータD4_rとして、ホストインターフェース部IF21に出力する。
【0210】
ホストインターフェース部IF21は、ECC復号化部26から出力されるデータD4_r(LDPC復号化処理が失敗したことを示すデータ)を入力し、当該データD4_rを含めたデータDS1を生成し、当該データDS1をホスト装置1に出力する。
【0211】
ホスト装置1は、ホストインターフェース部IF21から出力されるデータDS1を受信することで、要求したアドレスのデータの読み出しに失敗したことを把握する。
【0212】
以上のように、不揮発性記憶システム1000Bでは、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成処理により取得されたデータに対してエラー訂正符号復号処理を実行する。つまり、不揮発性記憶システム1000Bでは、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合にのみ、ダイバーシティ合成データによる軟判定処理を実行することで、必要とされる処理速度と訂正能力の両方を実現させることができる。すなわち、不揮発性記憶システム1000Bでは、従来技術の硬判定復号処理(ハードデシジョン復号処理)で復号に失敗した場合に実行される軟判定復号処理(ソフトデシジョン復号処理)と比べて、必要とされる訂正能力と処理速度に応じて、データの読み出し回数を細かく必要最小限に設定することが可能なため、効率よく高速にデータ読み出し処理を行うことができる。
【0213】
また、不揮発性記憶システム1000Bでは、1回目に読み出したデータ(第1物理ブロックから読み出したデータ)によるECC復号化処理が失敗した場合に、同一データが記憶されている第2物理ブロックからデータを再度読み出し、同一データが記憶されている異なる物理ブロックから読み出した2つのデータに対して、ダイバーシティ合成処理を実行し、ダイバーシティ合成処理後のデータにより、誤り訂正処理を実行する。異なる物理ブロックにおいてエラー発生状況は異なるので、ダイバーシティ合成処理後のデータに対するECC復号化処理は成功する可能性が高くなる。したがって、不揮発性記憶システム1000Bでは、上記のように処理することで、エラー訂正能力を向上させることができる。
【0214】
このように、不揮発性記憶システム1000Bでは、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【0215】
なお、上記では、同一データが異なる物理ブロックに書き込まれている場合について、説明したが、これに限定されることはなく、同一データは、例えば、異なるアドレス(異なるページ)に書き込まれるものであってもよい。つまり、不揮発性記憶システム1000Bにおいて、同一データを異なるアドレスに書き込み冗長化を行ってもよい。
【0216】
同一データを異なるアドレスに書き込み冗長化を行う場合、同一データを書き込む単位は、以下のようにしてもよい。
(1)複数の不揮発性メモリを備える場合、ブロック単位、または、ページ単位。
(2)単独の不揮発性メモリを備える場合であって、複数のプレーンを備える場合、ブロック単位、または、ページ単位。なお、この場合、同一データを書き込むブロック(または、ページ)は、互いに異なるプレーンに含まれるブロック(または、ページ)であることが好ましい。
【0217】
上記のように、同一データを異なるアドレスに書き込んだ場合においても、上記と同様に処理することで、不揮発性記憶システム1000Bでは、高いエラー訂正能力を確保しつつ、高速なデータ読み出し処理を行うことができる。
【0218】
[他の実施形態]
上記実施形態、変形例の一部または全部を組み合わせて、不揮発性記憶システム、不揮発性記憶装置等を構成するようにしてもよい。
【0219】
なお、上記実施形態(変形例を含む)では、不揮発性メモリがTLC NANDフラッシュメモリ(TLC:Triple Level Cell)である場合を一例として想定しているが、これに限定されることはなく、不揮発性メモリは、例えば、MLC NANDフラッシュメモリ(MLC:Multi Level Cell)、あるいは、QLC NANDフラッシュメモリ(QLC:Quadruple Level Cell)であってもよい。
【0220】
また、上記実施形態の不揮発性記憶システム、不揮発性記憶装置の一部または全部は、集積回路(例えば、LSI、システムLSI等)として実現されるものであってもよい。
【0221】
上記実施形態で説明した不揮発性記憶システム、不揮発性記憶装置の各ブロック(各機能部)は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。また、上記実施形態で説明した不揮発性記憶システム、不揮発性記憶装置の各ブロック(各機能部)は、複数のLSIなどの半導体装置により実現されるものであってもよい。
【0222】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0223】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0224】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0225】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0226】
例えば、上記実施形態(変形例を含む)の各機能部を、ソフトウェアにより実現する場合、図9に示したハードウェア構成(例えば、CPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0227】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【0228】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0229】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0230】
また、文言「部」は、「サーキトリー(circuitry)」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【0231】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0232】
1000、1000A、1000B 不揮発性記憶システム
2、2A、2B 不揮発性記憶装置
IB22B メモリインターフェース部
24 ダイバーシティ合成処理部
25 データ保持部
26 ECC復号化部
MEM1 不揮発性メモリ
図1
図2
図3
図4
図5
図6
図7
図8
図9