(57)【要約】【課題】実施形態は、データを適正に復元することを目的とする。【解決手段】実施形態によれば、メモリシステムにおいて、コントローラは、第１のメモリ領域の複数のチップに跨って書き込まれるべきライトデータのうち第１データを第１のメモリ領域の一部に書き込みライトデータのうち第２データを第１のメモリ領域に書き込む前に電源断が検出されたことに応じて、第２データが記憶されていた記憶位置に関する第１の情報と第２データとを第２のメモリ領域へ書き込む。コントローラは、電源復帰が検出されたことに応じて、第１のメモリ領域の一部から第１データを読み出し、第２のメモリ領域から第１の情報を読み出す。コントローラは、第１の情報に基づいて、第２データへアクセスするための参照位置に関する第２の情報を生成する。コントローラは、第２のメモリ領域から第２データを読み出して、第２データを第２の情報に基づいて記憶する。【選択図】図１
2019114031.tif 000002
【特許請求の範囲】
【請求項１】
複数のチップを含む第１のメモリ領域と第２のメモリ領域とを有する不揮発性メモリと、
前記第１のメモリ領域の前記複数のチップに跨って書き込まれるべきライトデータのうち第１データを前記第１のメモリ領域の一部に書き込み前記ライトデータのうち第２データを前記第１のメモリ領域に書き込む前に電源断が検出されたことに応じて、前記第２データが記憶されていた記憶位置に関する第１の情報と前記第２データとを前記第２のメモリ領域へ書き込み、電源復帰が検出されたことに応じて、前記第１のメモリ領域の一部から前記第１データを読み出し、前記第２のメモリ領域から前記第１の情報を読み出し、
前記読み出した第１の情報に基づいて前記第２データへアクセスするための参照位置に関する第２の情報を生成し、前記第２のメモリ領域から前記第２データを読み出して前記読み出した第２データを前記生成した第２の情報に基づいて記憶し、前記読み出した第１データと前記記憶した第２データとを前記第１のメモリ領域の他の一部に書き込むコントローラと、
を備えたメモリシステム。
【請求項２】
前記コントローラは、前記電源断が検出されたことに応じて、前記ライトデータに基づいて生成される誤り訂正符号を前記第２のメモリ領域へ書き込み、前記電源復帰が検出されたことに応じて、前記誤り訂正符号を前記第２のメモリ領域から読み出し、前記読み出した第１データ又は前記記憶した第２データの一部の誤りが訂正できない場合、前記読み出した誤り訂正符号に基づいて誤り訂正復号処理を行う
請求項１に記載のメモリシステム。
【請求項３】
前記第１の情報は、前記第１のメモリ領域における前記誤り訂正符号に対応したデータ群における前記未書き込みデータのデータ位置と前記退避されるべき位置に関連したアドレスとを含む
請求項２に記載のメモリシステム。
【請求項４】
ライトバッファを有する揮発性メモリをさらに備え、
前記退避されるべき位置に関連したアドレスは、前記第２のメモリ領域における前記未書き込みデータが記憶されるアドレスに対応した前記ライトバッファ内のアドレスを含む
請求項３に記載のメモリシステム。
【請求項５】
前記第２の情報は、前記誤り訂正符号に対応した識別情報とアドレス情報とが前記データ群に含まれる複数のデータについて対応付けられており、
前記書き込み済みデータの前記アドレス情報は、前記第１のメモリ領域内のアドレスを含み、
前記未書き込みデータの前記アドレス情報は、前記ライトバッファ内のアドレスを含む
請求項４に記載のメモリシステム。
【請求項６】
前記ライトバッファは、第１のバッファ領域と前記第１のバッファ領域に記憶されるべき情報を一時的に保持する第２のバッファ領域とを含み、
前記未書き込みデータに対する前記アドレス情報は、前記第２のバッファ領域内のアドレスを含み、
前記コントローラは、前記第２の情報に基づいて、前記書き込み済みデータ及び前記未書き込みデータを前記第２のバッファ領域に読み出して誤り訂正復号処理を行い、誤り訂正復号処理後のデータを前記第１のバッファ領域に記憶し他のデータを充当してデータサイズを調整し、調整後のデータを他の第１のメモリ領域に書き込む
請求項５に記載のメモリシステム。
【請求項７】
前記不揮発性メモリは、複数の前記第１のメモリ領域を有し、
前記コントローラは、複数のチャネルを介して前記第１のメモリ領域内の複数の領域に並行して書き込みを行うことを前記複数の第１のメモリ領域に対して順次に行うマルチライト処理を行う場合、前記第１の情報に応じて前記第１のメモリ領域における書き込み状況を示す第３の情報を生成し、前記第１の情報と前記第３の情報とに応じて前記第２の情報を生成する
請求項１から６のいずれか１項に記載のメモリシステム。
【請求項８】
前記第３の情報は、前記第１のメモリ領域におけるデータ位置とデータの書き込み状況とが複数のデータ位置について対応付けられている
請求項７に記載のメモリシステム。
【請求項９】
前記書き込み状況は、前記第１のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
請求項８に記載のメモリシステム。
【請求項１０】
前記書き込み状況は、チャネルを識別する情報と前記第１のメモリ領域を他の第１のメモリ領域から識別する情報と前記第１のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
請求項９に記載のメモリシステム。
【請求項１１】
複数のチップを含む第１のメモリ領域と第２のメモリ領域とを有する不揮発性メモリを有するメモリシステムの制御方法であって、
前記第１のメモリ領域の前記複数のチップに跨って書き込まれるべきライトデータのうち第１データを前記第１のメモリ領域の一部に書き込み前記ライトデータのうち第２データを前記第１のメモリ領域に書き込む前に電源断が検出されたことに応じて、前記第２データが記憶されていた記憶位置に関する第１の情報と前記第２データとを前記第２のメモリ領域へ書き込むことと、
電源復帰が検出されたことに応じて、前記第１のメモリ領域の一部から前記第１データを読み出し、前記第２のメモリ領域から前記第１の情報を読み出すことと、
前記読み出した第１の情報に基づいて前記第２データへアクセスするための参照位置に関する第２の情報を生成することと、
前記第２のメモリ領域から前記第２データを読み出して前記読み出した第２データを前記生成した第２の情報に基づいて記憶することと、
前記読み出した第１データと前記記憶した第２データとを前記第１のメモリ領域の他の一部に書き込むことと、
を備えた制御方法。
【請求項１２】
前記電源断が検出されたことに応じて、前記ライトデータに基づいて生成される誤り訂正符号を前記第２のメモリ領域へ書き込むことと、
前記電源復帰が検出されたことに応じて、前記誤り訂正符号を前記第２のメモリ領域から読み出すことと、
前記読み出した第１データ又は前記記憶した第２データの一部の誤りが訂正できない場合、前記読み出した誤り訂正符号に基づいて誤り訂正復号処理を行うことと、
をさらに備えた
請求項１１に記載の制御方法。
【請求項１３】
前記第１の情報は、前記第１のメモリ領域における前記誤り訂正符号に対応したデータ群における前記未書き込みデータのデータ位置と前記退避されるべき位置に関連したアドレスとを含む
請求項１２に記載の制御方法。
【請求項１４】
前記メモリシステムは、ライトバッファを有する揮発性メモリをさらに有し、
前記退避されるべき位置に関連したアドレスは、前記第２のメモリ領域における前記未書き込みデータが記憶されるアドレスに対応した前記ライトバッファ内のアドレスを含む
請求項１３に記載の制御方法。
【請求項１５】
前記第２の情報は、前記誤り訂正符号に対応した識別情報とアドレス情報とが前記データ群に含まれる複数のデータについて対応付けられており、
前記書き込み済みデータの前記アドレス情報は、前記第１のメモリ領域内のアドレスを含み、
前記未書き込みデータの前記アドレス情報は、前記ライトバッファ内のアドレスを含む
請求項１４に記載の制御方法。
【請求項１６】
前記ライトバッファは、第１のバッファ領域と前記第１のバッファ領域に記憶されるべき情報を一時的に保持する第２のバッファ領域とを含み、
前記未書き込みデータに対する前記アドレス情報は、前記第２のバッファ領域内のアドレスを含み、
前記誤り訂正復号処理を行うことは、
前記第２の情報に基づいて、前記書き込み済みデータ及び前記未書き込みデータを前記第２のバッファ領域に読み出して誤り訂正復号処理を行うことを含み、
前記制御方法は、
誤り訂正復号処理後のデータを前記第１のバッファ領域に記憶し他のデータを充当してデータサイズを調整し、調整後のデータを他の第１のメモリ領域に書き込むことをさらに備えた
請求項１５に記載の制御方法。
【請求項１７】
前記不揮発性メモリは、複数の前記第１のメモリ領域を有し、
前記第２の情報を生成することは、
複数のチャネルを介して前記第１のメモリ領域内の複数の領域に並行して書き込みが行われることが前記複数の第１のメモリ領域に対して順次に行われるマルチライト処理が行われる場合、前記第１の情報に応じて前記第１のメモリ領域における書き込み状況を示す第３の情報を生成することと、
前記第１の情報と前記第３の情報とに応じて前記第２の情報を生成することと、
を含む
請求項１１から１６のいずれか１項に記載の制御方法。
【請求項１８】
前記第３の情報は、前記第１のメモリ領域におけるデータ位置とデータの書き込み状況とが複数のデータ位置について対応付けられている
請求項１７に記載の制御方法。
【請求項１９】
前記書き込み状況は、前記第１のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
請求項１８に記載の制御方法。
【請求項２０】
前記書き込み状況は、チャネルを識別する情報と前記第１のメモリ領域を他の第１のメモリ領域から識別する情報と前記第１のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
請求項１９に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステム及び制御方法に関する。
【背景技術】
【０００２】
ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのメモリシステムにおいては、書き込み要求に応じたデータが、そのデータに関する誤り訂正符号とともに不揮発性メモリに記憶され、その後、読み出し要求に応じて、データと誤り訂正符号が不揮発性メモリから読み出され、誤り訂正符号を用いた誤り訂正復号処理により復元される。このとき、データを適正に復元することが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１７／００７０２４１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、データを適正に復元できるメモリシステム及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、不揮発性メモリとコントローラとを有するメモリシステムが提供される。不揮発性メモリは、第１のメモリ領域と第２のメモリ領域とを有する。第１のメモリ領域は、複数のチップを含む。コントローラは、第１のメモリ領域の複数のチップに跨って書き込まれるべきライトデータのうち第１データを第１のメモリ領域の一部に書き込みライトデータのうち第２データを第１のメモリ領域に書き込む前に電源断が検出されたことに応じて、第１の情報と第２データとを第２のメモリ領域へ書き込む。第１の情報は、第２データが記憶されていた記憶位置に関する情報である。コントローラは、電源復帰が検出されたことに応じて、第１のメモリ領域の一部から第１データを読み出し、第２のメモリ領域から第１の情報を読み出す。コントローラは、読み出した第１の情報に基づいて、第２の情報を生成する。第２の情報は、第２データへアクセスするための参照位置に関する情報である。コントローラは、第２のメモリ領域から第２データを読み出して、読み出した第２データを生成した第２の情報に基づいて記憶する。コントローラは、読み出した第１データと記憶した第２データとを第１のメモリ領域の他の一部に書き込む。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態に係るメモリシステムの構成を示す図である。
【図２】図２は、実施形態における論理ブロックの構成を示す図である。
【図３】図３は、実施形態における論理ページの構成を示す図である。
【図４】図４は、実施形態における物理ブロックの構成を示す図である。
【図５】図５は、実施形態に係るメモリシステムの電源断時の動作を示すフローチャートである。
【図６】図６は、実施形態における破棄ホストライト情報のデータ構造を示す図である。
【図７】図７は、実施形態に係るメモリシステムの電源復帰時の動作を示すフローチャートである。
【図８】図８は、実施形態における書き込み状況情報（書き込み状況マップ）を示す図である。
【図９】図９は、実施形態におけるアドレス変換情報（論物変換テーブル）を示す図である。
【図１０】図１０は、実施形態におけるシンボルリード情報（シンボルリードテーブル）を示す図である。
【図１１】図１１は、実施形態の変形例におけるブロック管理情報（論理ブロック管理テーブル）を示す図である。
【図１２】図１２は、実施形態の変形例における欠陥つぶし処理を示す図である。
【図１３】図１３は、実施形態の変形例における欠陥つぶし処理が行われる場合のシンボルリード情報（シンボルリードテーブル）を示す図である。
【図１４】図１４は、実施形態の他の変形例における穴埋めリード処理を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのメモリシステムにおいては、書き込み要求に応じたデータが、そのデータに関する誤り訂正符号とともに不揮発性メモリに記憶され、その後、読み出し要求に応じて、データと誤り訂正符号が不揮発性メモリから読み出され、誤り訂正符号を用いた誤り訂正復号処理により復元される。例えば、メモリシステム１は、図１に示すように構成される。図１は、メモリシステム１の構成を示す図である。
【０００９】
メモリシステム１は、通信媒体を介してホスト２の外部に接続され、ホスト２に対する外部記憶媒体として機能する。ホスト２は、例えば、パーソナルコンピュータ又はＣＰＵコアを含む。メモリシステム１は、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【００１０】
メモリシステム１は、コントローラ５、電源回路６、及び不揮発性メモリ７を有する。コントローラ５は、フロントエンド回路（ＦＥ）１０及びバックエンド回路（ＢＥ）２０を有する。ＦＥ１０は、ホストインターフェース（ホストＩ／Ｆ）１１を有する。ＢＥ２０は、中央処理演算部（ＣＰＵ）２１、揮発性メモリ２２、誤り訂正（ＥＣＣ）回路２３、及びメモリインターフェース（メモリＩ／Ｆ）２４を有する。電源回路６は、外部電源４に接続され、バックアップ電池４０を有する。メモリＩ／Ｆ２４と不揮発性メモリ７とは、複数のチャネル（例えば、図１の場合、１６個のチャネルＣＨ０〜ＣＨ１５）を介して接続されている。
【００１１】
メモリシステム１では、不揮発性メモリ７を用いてデータを不揮発に記憶する。不揮発性メモリ７は、ＮＡＮＤ型フラッシュメモリ、３次元構造フラッシュメモリ、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、相変化型メモリ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ：ＰＣＭ）、磁気抵抗メモリ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＭＲＡＭ）などを含む。図１では、不揮発性メモリ７がＮＡＮＤ型フラッシュメモリである場合について例示している。
【００１２】
不揮発性メモリ７は、複数の論理ブロックを有する。複数の論理ブロックのうち一部の論理ブロックが緊急退避領域３０に割り当てられ、残りの（大部分の）論理ブロックがストレージ領域３１に割り当てられる。各論理ブロックは、複数の論理ページを含む。ストレージ領域３１は、ホスト２から書き込み要求されたデータやメモリシステム１内の管理データが記憶される領域であり、緊急退避領域３０は、電源回路６に対する電源断が発生したときに退避すべきデータが緊急的に退避される領域である。
【００１３】
例えば、論理ブロックＢＬ０は、図２に示すように、複数の論理ページＰＧ−０〜ＰＧ−（Ｎ＋３）（各論理ページを特に区別しない場合は、ＰＧで示すことにする）を含む。図２は、論理ブロックＢＬ０の構成を示す図である。Ｎは、任意の１以上の整数を表す。各論理ページＰＧは、バンクインターリーブが可能な複数のバンクを含む。図２では、チャネルＣＨ０〜ＣＨ１５ごとに２個のバンクＢＫ０，ＢＫ１についてバンクインターリーブが可能なことを２つの矢印で示している。各矢印の先端は、バンクインターリーブによる処理の進行度合いを示している。各バンクは、複数のメモリチップを含む。各メモリチップ内は、並列にアクセスが可能な複数のプレーンを含み得る。
【００１４】
例えば、論理ページＰＧ−（Ｎ＋２）は、図３に示すように、２個のバンクＢＫ０，ＢＫ１を含む。図３は、論理ページＰＧ−（Ｎ＋２）の構成を例示する図であり、他の論理ページＰＧ−０〜ＰＧ−（Ｎ＋１），ＰＧ−（Ｎ＋３）の構成も論理ページＰＧ−（Ｎ＋２）の構成と同様である。
【００１５】
複数のバンクＢＫ０，ＢＫ１は、バンクインターリーブによる並列動作が可能に構成されている。バンクＢＫ０は、メモリチップＣＰ０，ＣＰ２，ＣＰ４，ＣＰ６，ＣＰ８，ＣＰ１０，ＣＰ１２，ＣＰ１４，ＣＰ１６，ＣＰ１８，ＣＰ２０，ＣＰ２２，ＣＰ２４，ＣＰ２６，ＣＰ２８，ＣＰ３０（以下、ＣＰ０〜ＣＰ３０とする）を含む。バンクＢＫ０内の各メモリチップＣＰ０〜ＣＰ３０へは、複数のチャネルＣＨ０〜ＣＨ１５を介してメモリＩ／Ｆ２４から並列にアクセスが可能である。バンクＢＫ１は、メモリチップＣＰ１，ＣＰ３，ＣＰ５，ＣＰ７，ＣＰ９，ＣＰ１１，ＣＰ１３，ＣＰ１５，ＣＰ１７，ＣＰ１９，ＣＰ２１，ＣＰ２３，ＣＰ２５，ＣＰ２７，ＣＰ２９，ＣＰ３１（以下、ＣＰ１〜ＣＰ３１とする）を含む。バンクＢＫ１内の各メモリチップＣＰ１〜ＣＰ３１へは、複数のチャネルＣＨ０〜ＣＨ１５を介してメモリＩ／Ｆ２４から並列にアクセスが可能である。各メモリチップＣＰ０〜ＣＰ３１は、各メモリチップＣＰ０〜ＣＰ３１内で並列動作可能である複数のプレーンＰｌａｎｅ０，Ｐｌａｎｅ１を含み得る。各メモリチップＣＰ０〜ＣＰ３１は、複数のメモリセルアレイを含み、このうち幾つかのメモリセルアレイが、１又は複数の物理ブロックを構成する。
【００１６】
各メモリチップＣＰ０〜ＣＰ３１のメモリセルアレイにおける各物理ブロックは、例えば、図４に示すように構成される。図４は、物理ブロックの構成を示す図である。
【００１７】
各物理ブロックは、Ｘ方向に沿って順に配列された（ｐ＋１）個のＮＡＮＤストリングを備えている（ｐ≧０）。（ｐ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１８】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｆｉｅｌｄ  Ｅｆｆｅｃｔ  Ｔｒａｎｓｉｓｔｏｒ）から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成されたフローティングゲート、及びフローティングゲート上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。フローティングゲートに蓄えられる電子の数に応じてしきい値電圧が変化する。メモリセルトランジスタＭＴは、しきい値電圧の違いに応じてデータを記憶する。すなわち、メモリセルトランジスタＭＴは、フローティングゲートに、データに応じた量の電荷を保持する。
【００１９】
各ＮＡＮＤストリングにおいて、（ｑ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている（ｑ≧０）。そして、最も選択トランジスタＳＴ１側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２０】
ワード線ＷＬ０〜ＷＬｑ（各ワード線を区別しない場合には、ＷＬで示すことにする）は、物理ブロック内の各ＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、物理ブロック内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。すなわち、物理ブロックは複数のワード線ＷＬに対応した複数のメモリセルグループＭＧを含み、各メモリセルグループＭＧは同一のワード線ＷＬに接続される（ｐ＋１）個のメモリセルトランジスタＭＴを含む。各メモリセルトランジスタＭＴに１ビットの値を保持可能に構成される場合（シングルレベルセル（ＳＬＣ）モードで動作する場合）には、同一のワード線ＷＬに接続される（ｐ＋１）個のメモリセルトランジスタＭＴ（すなわち、メモリグループＭＧ）は１つの物理ページとして取り扱われ、この物理ページごとにデータのプログラム及びデータのリードが行われる。
【００２１】
各メモリセルトランジスタＭＴに複数ビットの値を保持可能に構成される場合がある。例えば、各メモリセルトランジスタＭＴがｎ（ｎ≧２）ビットの値を記憶可能な場合、ワード線ＷＬ当たりの記憶容量はｎ個の物理ページ分のサイズに等しくなる。すなわち、各メモリグループＭＧは、ｎ個の物理ページとして取り扱われる。例えば、各メモリセルトランジスタＭＴが２ビットの値の記憶を行うマルチレベルセル（ＭＬＣ）モードでは、各ワード線ＷＬに２個の物理ページ分のデータが保持される。あるいは、各メモリセルトランジスタＭＴが３ビットの値の記憶を行うトリプルレベルセル（ＴＬＣ）モードでは、各ワード線ＷＬに３個の物理ページ分のデータが保持される。
【００２２】
図１に戻って、不揮発性メモリ７内の緊急退避領域３０は、電源回路６に対する突然の電源断があった場合に、バックアップ電池４０の電力を用いて、揮発性メモリ２２（少なくともライトバッファ２２ａ）内のデータが書き込まれるための領域である。緊急退避領域３０は、高速な書き込み動作が要求されるため、ＳＬＣモードで動作するように構成され得る。ストレージ領域３１は、データが記憶されるための領域である。ストレージ領域３１は、データの記憶容量を確保することが要求されるため、ＭＬＣモード又はＴＬＣモードで動作するように構成され得る。
【００２３】
コントローラ５は、例えば、ＬＳＩ（Ｌａｒｇｅ−Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）などの半導体チップ（ＳｏＣ：Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）で構成されている。コントローラ５は、ホスト２と不揮発性メモリ７との間のデータ転送などを制御する。
【００２４】
コントローラ５において、ＦＥ１０のホストＩ／Ｆ１１は、書き込み要求および書き込み要求データをホスト２から受信すると、書き込み要求およびデータをＢＥ２０に転送する。ＢＥ２０において、ＣＰＵ２１は、ライトコントローラ２１ａ、ブロック管理部２１ｂ、ガベージコレクション（ＧＣ）マネージャ２１ｃを有する。
【００２５】
ライトコントローラ２１ａは、データに対してＥＣＣ回路２３を用いて誤り訂正符号処理を行わせ、データに対応したデータ部分と誤り訂正符号とを含むシンボルを生成して揮発性メモリ２２に一時的に記憶させる。
【００２６】
このとき、ＥＣＣ回路２３は、例えば、第１のＥＣＣ符号（Ｌ１の誤り訂正符号処理による符号、又はＬ１符号）、第２のＥＣＣ符号（Ｌ２の誤り訂正符号処理による符号、又はＬ２符号）、第３のＥＣＣ符号（Ｌ３の誤り訂正符号処理による符号、又はＬ３符号）、第４のＥＣＣ符号（Ｌ４の誤り訂正符号処理による符号、又はＬ４符号）の４段階の誤り訂正符号処理を行うことができる。Ｌ１符号、Ｌ２符号、Ｌ３符号、Ｌ４符号の順に、符号化処理の分散度合いが高くなる。Ｌ１符号及びＬ２符号の符号化対象のデータは、１つのメモリチップ内のデータであるのに対して、Ｌ３符号及びＬ４符号の符号化対象のデータは、複数のメモリチップに跨ったデータである。
【００２７】
ライトコントローラ２１ａは、揮発性メモリ２２に一時記憶させたシンボルをメモリＩ／Ｆ２４経由で不揮発性メモリ７に書き込む。
【００２８】
揮発性メモリ２２は、不揮発性メモリ７よりも高速アクセスが可能な揮発性の半導体メモリであり、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が用いられる。図１では、揮発性メモリ２２がＤＲＡＭである場合が例示されている。
【００２９】
揮発性メモリ２２は、ライトバッファ２２ａ及びガベージコレクション（ＧＣ）バッファ２２ｂを有する。ライトバッファ２２ａは、ホスト２から書き込み要求があったライトデータが一時記憶される領域である。ＧＣバッファ２２ｂは、メモリシステム１内でＧＣを実行する際に、ＧＣ対象となるデータが一時的に記憶されるバッファである。
【００３０】
ＧＣマネージャ２１ｃは、ＧＣバッファ２２ｂを用いながらＧＣに伴う各部の動作を制御する。ＧＣは、論理ブロック内の不使用の論理ページを整理する処理である。ＧＣが実行されることによって、離散化した使用中の論理ページが１つの論理ブロックにまとめられてフリーブロックが確保される。
【００３１】
例えばＧＣマネージャ２１ｃによるＧＣに伴う制御のもとで、メモリＩ／Ｆ２４は、不揮発性メモリ７からシンボル（＝データ部分＋誤り訂正符号）を読み出し、ＥＣＣ回路２３は、読み出されたシンボルのデータ部分に対して誤り訂正符号を用いた誤り訂正復号処理を行い元のデータを復元する。
【００３２】
このとき、ＥＣＣ回路２３は、例えば、Ｌ１の誤り訂正復号処理を行い、Ｌ１エラーが発生したらＬ２の誤り訂正復号処理を行い、Ｌ２エラーが発生したらＬ３の誤り訂正復号処理を行い、Ｌ３エラーが発生したらＬ４の誤り訂正復号処理を行う。このように、ＥＣＣ回路２３は、誤り訂正復号処理に成功するまで、Ｌ１→Ｌ２→Ｌ３→Ｌ４の順に、段階的に規模を大きくしながら、誤り訂正復号処理を行うことができる。
【００３３】
ブロック管理部２１ｂは、不揮発性メモリ７内の各論理ブロックを管理する。ブロック管理部２１ｂは、例えば、複数の論理ブロックのうち一部の論理ブロックを緊急退避領域３０に割り当て、残りの（大部分の）論理ブロックをストレージ領域３１に割り当てる。また、ブロック管理部２１ｂは、データ書込み可能な論理ブロックであるフリーブロックの数や論理ブロック内の有効データ率などを管理している。ブロック管理部２１ｂは、フリーブロックの数が不足するとＧＣをＧＣマネージャ２１ｃに実行させることによって、フリーブロックの数を増やす。
【００３４】
メモリＩ／Ｆ２４は、不揮発性メモリ７の動作を制御する。メモリＩ／Ｆ２４は、ホスト２からの書き込み要求に応じてライトコマンドを発行し、ライトコマンド及びデータを不揮発性メモリ７へ提供（出力）する。不揮発性メモリ７は、ライトコマンドに従ってデータをメモリセルに書き込む。また、メモリＩ／Ｆ２４は、ホスト２からの読み出し要求に応じてリードコマンドを発行し、リードコマンドを不揮発性メモリ７へ提供（出力）する。不揮発性メモリ７は、リードコマンドに従ってデータをメモリセルから読み出しメモリＩ／Ｆ２４へ供給する。
【００３５】
揮発性メモリ２２は、アドレス変換情報２２ｃ及びブロック管理情報２２ｄを記憶する。ホストＩ／Ｆ１１で受信されるホスト２からの書き込み要求には、書き込み先を指定する論理アドレス（ＬＢＡ）が含まれている。また、ホストＩ／Ｆ１１で受信されるホスト２からの読み出し要求には、読み出し先を指定する論理アドレス（ＬＢＡ）が含まれている。
【００３６】
例えば、メモリシステム１では、コントローラ５による内部的なデータ管理がクラスタ単位で行われ、ホスト２からのデータの更新がセクタ単位で行われる。図３に示されるような論理ページＰＧは、複数のクラスタをひとまとめにした単位であるとし、クラスタは、複数のセクタをひとまとめにした単位であるとする。セクタは、ホスト２からのデータの最小アクセス単位である。セクタは、例えば、５１２Ｂのサイズを有し、クラスタは、例えば、４ＫＢのサイズを有する。ホスト２は、セクタ単位のＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）によってアクセスするデータを指定できる。
【００３７】
図１に戻って、アドレス変換情報２２ｃは、ホスト２から指定された論理アドレスと不揮発性メモリ７内での物理アドレスとの間のアドレス変換を行う際に用いられる情報である。アドレス変換情報２２ｃは、例えば、テーブル形式で（論物変換テーブルとして）構成され得る。アドレス変換情報２２ｃでは、論理アドレスと物理アドレスとが対応付けされている。ライトコントローラ２１ａは、揮発性メモリ２２に一時記憶させたシンボルをメモリＩ／Ｆ２４経由で不揮発性メモリ７に書き込む際に、シンボルに対応した論理アドレスを不揮発性メモリ７内の物理アドレスに対応付けてアドレス変換情報２２ｃを更新することができる。
【００３８】
ブロック管理情報２２ｄは、不揮発性メモリ７内の各論理ブロックを管理する際に用いられる情報であり、ブロック管理部２１ｂにより必要に応じて更新され得る。ブロック管理情報２２ｄは、例えば、テーブル形式で（論理ブロック管理テーブルとして）構成され得る。ブロック管理情報２２ｄは、欠陥と看做されたメモリセルを含むメモリチップ（欠陥メモリチップ）を含む論理ブロック（バッドブロック）に関する情報を含むことができる。すなわち、ブロック管理部２１ｂは、ＥＣＣ回路２３から誤り訂正復号処理の結果を受け、誤り訂正復号処理で（Ｌ１→Ｌ２→Ｌ３→Ｌ４と誤り訂正の規模を大きくしていっても）エラー訂正できなかったメモリチップを欠陥メモリチップとし、欠陥メモリチップを含む論理ブロックをブロック管理情報２２ｄに登録する。これにより、ブロック管理情報２２ｄが更新され得る。欠陥は、メモリチップ内における物理ブロック、物理ページ毎に管理されてもよい。
【００３９】
電源回路６は、外部電源４から送られてくる電力をコントローラ５および不揮発性メモリ７に供給する。また、電源回路６は、外部電源４から送られてくる電力をバックアップ電池４０に供給してバックアップ電池４０を充電する。バックアップ電池４０は、例えば、電気二重層キャパシタ、電解コンデンサ、セラミックコンデンサ、２次電池などである。
【００４０】
バックアップ電池４０は、外部電源４から送られてくる電力を蓄えておく。バックアップ電池４０は外部電源４から送られてくる電力が突然停止した際（突然の電源断があった場合）に、貯めておいた電力をコントローラ５および不揮発性メモリ７に供給する。突然の電源断があった場合とは、例えば、外部電源４から電源回路６へ送られてくる電力が、ユーザの意図しないタイミングで遮断される場合などである。
【００４１】
電源回路６は、外部電源４から電源回路６へ送られてくる電力を監視し、その電力が所定の閾値レベル以上であれば、正常に電力が供給されていると判断して、外部電源４からの電力を各部へ供給できる。電源回路６は、外部電源４からの電力が所定の閾値レベル未満になると、電源断が発生したと判断し、バックアップ電池４０による駆動に切り替え、バックアップ電池４０からの電力を各部へ供給できる。
【００４２】
メモリシステム１は、書き込み要求に応じたデータの保護機能であるパワーロスプロテクション（ＰＬＰ）機能を有している。ＰＬＰ機能は、突然の電源断があった場合であっても、ホスト２に書き込み完了レスポンスを行なったデータの永続性を保証する機能である。換言すると、ＰＬＰ機能は、突然の電源断があった場合であっても、ホスト２から見て一旦書き込んだはずのデータが消失しないよう、データを記憶しておく機能である。
【００４３】
次に、ホスト２のマルチストリーム機能に対応したメモリシステム１の機能（マルチライト処理機能）について説明する。
【００４４】
メモリシステム１では、ホスト２のマルチストリーム機能に対応したライト動作をサポートするために、ストリーム本数分の論理ページを同時に開く必要が生じ得る。例えば、図２に示すように、チャネル数×バンク数＝１６×２＝３２によりストリーム本数（３２本）分の並列動作（マルチライト動作処理）が可能である。マルチライト動作処理では、複数のチャネルＣＨ０〜ＣＨ１５を介して論理ページＰＧ内の複数の領域に並行して書き込みを行うことを複数の論理ページＰＧ−０〜ＰＧ−（Ｎ＋３）に対して順次に（ページ番号順に）行う。
【００４５】
これにより、同時に書き込み途中となり得る論理ページＰＧの数が多数（例えば、最大で３２個）に増加し得る。図２では、書き込み途中の論理ページＰＧが論理ページＰＧ−Ｎ，ＰＧ−（Ｎ＋１），ＰＧ−（Ｎ＋２）の３つである場合が例示されている。書き込み途中の先頭ページ（＝「一番書き込みが進んでいる論理ページ」＝「書き込み途中の論理ページＰＧのうちページ番号が最大の論理ページ」）ＰＧ−（Ｎ＋２）では、図３に斜線のハッチングで示すように、例えば、メモリチップＣＰ１，ＣＰ７，ＣＰ１５，ＣＰ２９，ＣＰ３１が書き込み途中である。
【００４６】
図３に示すように、論理ページＰＧ−（Ｎ＋２）では、一点鎖線で囲ったデータ群ＤＧ１がＬ３の誤り訂正符号に対応したデータ群（Ｌ３誤り訂正グループとも呼ぶ）である。データ群ＤＧ１は、各メモリチップＣＰ０〜ＣＰ３１の各プレーンＰｌａｎｅ０，Ｐｌａｎｅ１における先頭のクラスタデータを含む。データ群ＤＧ１における各クラスタには、Ｌ３番号（データ群ＤＧ１に属する各クラスタデータを互いに識別する番号）として０〜６３がそれぞれ割り振られている。Ｌ３の誤り訂正符号処理では、Ｌ３番号０〜６１のクラスタのデータに対する第３のＥＣＣ符号（Ｌ３符号）が生成され得る。Ｌ３の誤り訂正符号処理において、揮発性メモリ２２には、Ｌ３番号０〜６１のクラスタデータとしてシンボルのデータ部分が記憶され、Ｌ３番号６２，６３のクラスタデータとしてＬ３符号が記憶される。Ｌ３符号は、Ｌ３番号０〜６１のクラスタデータのストレージ領域３１への書き込み途中の段階において、書き込み済みデータと現在の書き込み対象のデータと未書き込みのデータ（ダーティデータ）とに対して逐次的に更新されて生成されるが、データ群（Ｌ３誤り訂正グループ）ＤＧ１内の全クラスタデータの書き込みが終了するまで揮発性メモリ２２に保持される。Ｌ３符号は、データ群（Ｌ３誤り訂正グループ）ＤＧ１内の全データのストレージ領域３１への書き込み完了後に、ストレージ領域３１に書き込まれる。
【００４７】
突発的な電源断が発生した時、書き込み途中の論理ページＰＧをストレージ領域３１に書ききろうとすると、書ききるべき論理ページＰＧの数が多数に増加し得るので、バックアップ電池４０の電力を用いて書き込み途中の論理ページＰＧを書ききることが困難になり得る。
【００４８】
メモリシステム１に搭載すべきバックアップ電池４０の容量（例えば、キャパシタの数）を増やして対応すると、部品コストが増加し得るためにメモリシステム１の製造コストが増大する可能性があるとともに、バックアップ電池（例えば、キャパシタ）４０の充電のための起動時間が増加し得るためにメモリシステム１のパフォーマンスが低下する可能性がある。
【００４９】
それに対して、バックアップ電池４０の容量増加を抑制するため、突発的な電源断が発生した時に、書き込み途中の論理ページＰＧをストレージ領域３１へ書ききっていない状態で誤り訂正符号を生成して緊急退避領域３０に退避させ、電源復帰後に、書き込み済みのデータをストレージ領域３１から読み出すとともに誤り訂正符号を緊急退避領域３０から読み出し、書き込み途中の論理ページＰＧにおける不足分をダミーの値（例えば、ビット値“０”）で埋めてシンボルを生成することが考えられる。この場合、動作中に書き込み途中であった論理ページＰＧのデータの誤り訂正復号処理を行った際にＬ１／Ｌ２エラーが発生するとＬ３／Ｌ４の誤り訂正復号を行うことになるが、Ｌ３／Ｌ４の誤り訂正復号で用いられるシンボルが誤り訂正符号処理時と異なる。すなわち、誤り訂正符号処理時には、書き込み途中の論理ページＰＧにおける書き込み済みデータと未書き込みデータとの両方を用いて誤り訂正符号を生成しているのに対し、誤り訂正復号処理時には、書き込み途中の論理ページＰＧにおける書き込み済みデータとダミーの値とに対して誤り訂正符号を用いた誤り訂正復号処理を行うことになる。これにより、Ｌ３／Ｌ４の誤り訂正復号処理で適正にデータを復元できない可能性がある。
【００５０】
そこで、本実施形態にかかるメモリシステム１は、電源断時に未書き込みデータとその退避位置に関連した情報とを緊急退避領域３０に退避し、電源復帰時にそれらを読み出し、誤り訂正符号生成に用いた論理ページＰＧのシンボルを未書き込みの部分も含めて再生して誤り訂正復号処理を行う。これにより、本実施形態にかかるメモリシステム１によれば、バックアップ電池４０の容量増加の抑制とＬ３／Ｌ４の誤り訂正処理の精度向上との両立を図ることができる。
【００５１】
具体的には、電源断発生時に関して、メモリシステム１は、図５に示すような動作を行う。図５は、メモリシステム１の電源断時の動作を示すフローチャートである。
【００５２】
メモリシステム１は、電源断の発生を検出するまで（Ｓ１でＮｏ）通常の動作を行い、電源断の発生を検出すると（Ｓ１でＹｅｓ）、ホスト２からの書き込み要求の受付を停止する（Ｓ２）。メモリシステム１は、不揮発性メモリ７のストレージ領域３１への書き込みを停止する（Ｓ３）。すなわち、メモリシステム１は、メモリＩ／Ｆ２４によるストレージ領域３１へのライトコマンドを破棄させ、メモリＩ／Ｆ２４自体も停止させる。メモリシステム１は、未書き込みデータ（ホストから要求された書き込みデータであって揮発性メモリ２２におけるライトバッファ２２ａに保持されたデータ）と、未書き込みであるログのクラスタデータ及びＬ３符号のクラスタデータとを緊急退避領域３０に退避させ不揮発化する（Ｓ４）。ログは、不揮発性メモリ７内の管理情報のあるエントリに変更を加えた際におけるそのエントリの更新情報（差分）であり、例えば、アドレス変換情報２２ｃの更新差分である。
【００５３】
メモリシステム１は、書き込み途中の先頭ページ番号（＝「一番書き込みが進んでいる論理ページの番号」）を特定し、先頭ページ情報２２ｆを生成し揮発性メモリ２２に保持させる（Ｓ５）。図２に示す場合、メモリシステム１は、先頭ページ番号としてＰＧ−（Ｎ＋２）を特定し、先頭ページ番号ＰＧ−（Ｎ＋２）を示す先頭ページ情報２２ｆを生成する。
【００５４】
メモリシステム１は、メモリＩ／Ｆ２４において破棄されたライトコマンドを抽出し、破棄ホストライト情報２２ｅを生成し揮発性メモリ２２に保持させる（Ｓ６）。このとき、メモリシステム１は、各論理ページＰＧの各メモリチップについて破棄されたライトコマンドを抽出し、図２の場合、書き込み途中の論理ページＰＧ−Ｎ〜ＰＧ−（Ｎ＋２）における書き込み途中のメモリチップごとに破棄ホストライト情報２２ｅを生成する。
【００５５】
破棄ホストライト情報２２ｅは、例えば、図６に示すようなデータ構造を有する。図６は、破棄ホストライト情報２２ｅのデータ構造を示す図である。
【００５６】
破棄されたライトコマンドがホスト２からのデータの書き込みを指示するコマンドである場合、図６（ａ）に示すように、破棄ホストライト情報２２ｅは、データの記憶位置（例えば、論理ブロック番号ＢＬ０／論理ページ番号ＰＧ−（Ｎ＋１）／チャネル番号ＣＨ３／バンク番号ＢＫ１）と情報の種別（Ｄａｔａ）と揮発性メモリ２２上のアドレス（例えば、ＶＡＤＤ−３５）とを含む。
【００５７】
破棄されたライトコマンドが空の書き込み又は無効な書き込みを指示するコマンドである場合、図６（ｂ）に示すように、破棄ホストライト情報２２ｅは、データの記憶位置（例えば、論理ブロック番号ＢＬ０／論理ページ番号ＰＧ−（Ｎ＋３）／チャネル番号ＣＨ０／バンク番号ＢＫ０）と情報の種別（Ｎｕｌｌ）とを含む。
【００５８】
例えば、ライトコマンドのコマンドシーケンスがライト命令（Ｃｍｄ８０ｈ−Ａｄｒ−ＤａｔａＩｎ−Ｃｍｄ１０ｈ）、アクセス処理（ｔＰｒｏｇ）、ステータスリード命令（Ｃｍｄ７０−ＳｔａｔｕｓＯｕｔ）を含む場合、ライトコマンドが空の書き込みであるとは、ライト命令におけるデータ指定部分「ＤａｔａＩｎ」で指定されたデータが空である（指定がない）ことを指す。ライトコマンドが無効な書き込みであるとは、ライト命令におけるアドレス指定部分「Ａｄｒ」で指定された書き込み先がストレージ領域３１における欠陥メモリチップを含む論理ブロック（バッドブロック）でありコマンド実行した際にライトエラーになることを指す。
【００５９】
破棄されたライトコマンドがログの書き込みを指示するコマンドである場合、図６（ｃ）に示すように、破棄ホストライト情報２２ｅは、データの記憶位置（例えば、論理ブロック番号ＢＬ０／論理ページ番号ＰＧ−（Ｎ＋３）／チャネル番号ＣＨ７／バンク番号ＢＫ１）と情報の種別（Ｌｏｇ）と揮発性メモリ２２上のアドレス（例えば、ＶＡＤＤ−４６）とを含む。
【００６０】
破棄されたライトコマンドがＬ３符号の書き込みを指示するコマンドである場合、図６（ｄ）に示すように、破棄ホストライト情報２２ｅは、データの記憶位置（例えば、論理ブロック番号ＢＬ０／論理ページ番号ＰＧ−（Ｎ＋２）／チャネル番号ＣＨ１４／バンク番号ＢＫ１）と情報の種別（Ｌ３）と揮発性メモリ２２上のアドレス（例えば、ＶＡＤＤ−６２）とを含む。
【００６１】
なお、破棄ホストライト情報２２ｅは、論理ブロック単位でもよいし、全てが一体となったテーブル形式でもよいし、データ種類毎に纏められてもよい。
【００６２】
図５に戻り、メモリシステム１は、ライトバッファ２２ａに保持された未書き込みデータ（ＷＢダーティ）、Ｓ５で生成された先頭ページ情報２２ｆ、Ｓ６で生成された破棄ホストライト情報２２ｅ、及びその他の復元用管理データを緊急退避領域３０に退避させ不揮発化する（Ｓ７）。ＷＢダーティ（未書き込みデータ）とは、ホスト２からの書き込み要求で指定された書き込み要求データであり、ライトバッファ２２ａに一時的に記憶されているデータである。
【００６３】
また、電源復帰時に関して、メモリシステム１は、図７に示すような動作を行う。図７は、メモリシステム１の電源復帰時の動作を示すフローチャートである。
【００６４】
メモリシステム１は、電源復帰を検出するまで（Ｓ１１でＮｏ）待機し、電源復帰を検出すると（Ｓ１１でＹｅｓ）、図５のＳ４，Ｓ７で不揮発性メモリ７の緊急退避領域３０に退避されたログ、Ｌ３符号、ＷＢダーティ（未書き込みデータ）、先頭ページ情報２２ｆ、破棄ホストライト情報２２ｅを揮発性メモリ２２にロードする（Ｓ１２）。このとき、ログ、Ｌ３符号、ＷＢダーティ（データ）は、破棄ホストライト情報２２ｅで示される揮発性メモリ２２上のアドレス位置（図６参照）にロードされる。
【００６５】
メモリシステム１は、ロードされた先頭ページ情報２２ｆ及び破棄ホストライト情報２２ｅに基づいて、論理ブロックの書き込み状況を示す書き込み状況情報２２ｇを生成して揮発性メモリ２２に記憶する（Ｓ１３）。破棄ホストライト情報２２ｅは、書き込み途中の論理ページＰＧ−Ｎ〜ＰＧ−（Ｎ＋２）における書き込み途中のメモリチップごとに生成されている。これにより、メモリシステム１は、書き込み途中の論理ページＰＧを含む論理ブロックについて書き込み途中の論理ページＰＧを含む論理ブロックの書き込み状況を示す書き込み状況情報２２ｇを生成できる。
【００６６】
メモリシステム１は、書き込み状況情報２２ｇを、例えば図８に示すようなマップ形式で（書き込み状況マップとして）生成できる。図８は、論理ブロックＢＬ０の書き込み状況情報（書き込み状況マップ）２２ｇを示す図である。
【００６７】
図８では、論理ブロックＢＬ０を構成する複数のメモリチップのインデックスとして、スロットという用語を用いる。スロットは、この実施形態では、チャネル番号とバンク番号との組み合わせに対応する。すなわち、スロットＳＬ０は、チャネルＣＨ０及びバンクＢＫ０に対応し、スロットＳＬ１は、チャネルＣＨ１及びバンクＢＫ０に対応し、…、スロットＳＬ３１は、チャネルＣＨ１５及びバンクＢＫ１に対応する。同一チャネルのバンク０，１は同一のメモリチップであってもよい。
【００６８】
書き込み状況情報２２ｇでは、各論理ページＰＧの各メモリチップについて、「書き込み済み」か「破棄」のいずれかが区別可能に示されている。「破棄」が示された箇所には、図６（ａ）〜図６（ｄ）に示すような破棄ホストライト情報２２ｅが関連付けられ得る。例えば、書き込み状況情報２２ｇは、「破棄」が示された箇所を指定すると、その対応する破棄ホストライト情報２２ｅが参照可能に構成される。
【００６９】
図８に示した書き込み状況情報２２ｇを参照すると、論理ページＰＧ−０〜ＰＧ−（Ｎ−１）のそれぞれでは、全スロットＳＬ０〜ＳＬ３１でストレージ領域３１への書き込みが完了しているが、論理ページＰＧ−Ｎ〜ＰＧ−（Ｎ＋２）が書き込み途中であることが分かる。論理ページＰＧ−Ｎ〜ＰＧ−（Ｎ＋２）のそれぞれには、ライトコマンドが破棄されたスロットが存在する。論理ページＰＧ−Ｎでは、スロットＳＬ１６，ＳＬ３０，ＳＬ３１に対応するメモリチップでライトコマンドが破棄されている。論理ページＰＧ−（Ｎ＋１）では、スロットＳＬ１６，ＳＬ１９，ＳＬ３０，ＳＬ３１に対応するメモリチップでライトコマンドが破棄されている。論理ページＰＧ−（Ｎ＋２）では、スロットＳＬ１６，ＳＬ１９，ＳＬ２３，ＳＬ３０，ＳＬ３１に対応するメモリチップでライトコマンドが破棄されている。
【００７０】
図８に示した書き込み状況情報２２ｇを参照すると、斜線のハッチングで示された領域は、未使用（未書き込み）のメモリチップであり、不揮発性メモリ７がＮＡＮＤ型フラッシュメモリである場合、上書きできない可能性がある。論理ページにおける各メモリチップのデータをストレージ領域３１における連続したアドレス領域に記憶させるために、データの引っ越し処理（書き込み途中の論理ページのデータを新たな論理ブロック（フリーブロック）に書き込む処理）が利用可能である。図８では、論理ページＰＧ−（Ｎ＋３）は、全スロットＳＬ０〜ＳＬ３１に対するライトコマンドに応じた不揮発性メモリ７への書き込み動作が破棄されており、実質的に書き込みが行われていない論理ページであると言える。このため、書き込み状況情報２２ｇを参照することで、論理ページＰＧ−Ｎ〜ＰＧ−（Ｎ＋２）が引っ越し対象ページ範囲（データの引っ越し処理が必要な範囲）であると把握できる。
【００７１】
図７に戻って、メモリシステム１は、書き込み途中の論理ページＰＧ−Ｎ〜ＰＧ−（Ｎ＋２）の書き込み済みデータをストレージ領域３１から読み出して揮発性メモリ２２に保持させる（Ｓ１４）。
【００７２】
メモリシステム１は、揮発性メモリ２２に保持させたデータに対してＬ１／Ｌ２の誤り訂正復号処理を行い、Ｌ１／Ｌ２エラーが発生しなければ（Ｓ１５でＮｏ）、誤り訂正復号処理で復元されたデータを不揮発性メモリ７に記憶する（Ｓ２０）。
【００７３】
一方、メモリシステム１は、揮発性メモリ２２に保持させたデータに対してＬ１／Ｌ２の誤り訂正復号処理を行い、Ｌ１／Ｌ２エラーが発生したら（Ｓ１５でＹｅｓ）、破棄ホストライト情報２２ｅに基づいてシンボルリード情報２２ｈを生成して揮発性メモリ２２に記憶する（Ｓ１６）。
【００７４】
例えば、図８に示す書き込み状況情報２２ｇにおいて「破棄」が示された箇所を指定すると、その対応する破棄ホストライト情報２２ｅが参照され、データタイプが「Ｄａｔａ」、「Ｌｏｇ」又は「Ｌ３」である場合、揮発性メモリ２２上の参照位置（アドレス）が取得され得る（図６（ａ）、図６（ｃ）、図６（ｄ）参照）。
【００７５】
これにより、メモリシステム１は、図３に示す論理ページＰＧ−（Ｎ＋２）について、図１０に示すようなシンボルリード情報２２ｈを生成できる。シンボルリード情報２２ｈは、例えば図１０に示すようなテーブル形式で（シンボルリードテーブルとして）生成することができる。図１０は、シンボルリード情報（シンボルリードテーブル）２２ｈを示す図である。シンボルリード情報２２ｈでは、Ｌ３番号２２ｈ１と位置情報２２ｈ２とが複数のＬ３番号について対応付けられている。例えば、Ｌ３番号「０」は「書き込み済み」である（図８参照）ので、ストレージ領域３１上の参照位置（物理アドレスＮＶＡＤＤ−０）が記録されている。Ｌ３番号「３５」はライトコマンドが「破棄」されたログクラスタ（図８参照）であるので、揮発性メモリ２２上の参照位置（アドレスＶＡＤＤ−３５）が記録されている（図６（ｃ）参照）。Ｌ３番号「３９」は空の情報（Ｎｕｌｌ）が「書き込み済み」であるクラスタであるので、無効であることを示す値（ＡＬＬ  ＦＦ：全ビットが１であるビットパターン）が記録されている（図６（ｂ）参照）。Ｌ３番号「６２」はライトコマンドが「破棄」されたＬ３クラスタ（図８参照）であるので、揮発性メモリ２２上の参照位置（アドレスＶＡＤＤ−６２）が記録されている（図６（ｄ）参照）。同様に、Ｌ３番号「６３」はライトコマンドが「破棄」されたＬ３クラスタ（図８参照）であるので、揮発性メモリ２２上の参照位置（アドレスＶＡＤＤ−６３）が記録されている。すなわち、シンボルリード情報２２ｈを参照することで、誤り訂正符号に対応したデータ群（Ｌ３誤り訂正グループ）における各クラスタの参照位置を特定できる。
【００７６】
図７に戻って、メモリシステム１は、Ｌ３の誤り訂正符号とＳ１６で生成したシンボルリード情報２２ｈとに基づいて誤り訂正復号処理を行う。すなわち、メモリシステム１は、書き込み済みデータをシンボルリード情報２２ｈに示されたストレージ領域３１上の参照位置（アドレス）から読み出し、未書き込みデータをシンボルリード情報２２ｈに示された揮発性メモリ２２上の参照位置（アドレス）から読み出し（Ｓ１７）、ＧＣバッファ２２ｂ上でＬ３訂正用のデータ群（Ｌ３誤り訂正グループ）のシンボルとして再構成する。メモリシステム１は、再構成されたシンボルにおけるデータ部分（図１０の場合、Ｌ３番号「０」〜「６１」の部分）に対してＬ３符号（図１０の場合、Ｌ３番号「６２」「６３」の部分）を用いた誤り訂正復号処理を行う（Ｓ１８）。
【００７７】
メモリシステム１は、Ｌ３エラーが発生しなければ（Ｓ１９でＮｏ）、誤り訂正復号処理で復元されたデータを不揮発性メモリ７に記憶する（Ｓ２０）。
【００７８】
一方、Ｌ３エラーが発生すると（Ｓ１９でＹｅｓ）、メモリシステム１は、Ｌ３エラーが発生した旨をホスト２に通知して処理を終了する。
【００７９】
以上のように、実施形態にかかるメモリシステム１は、電源断時に未書き込みデータとその退避位置に関連した破棄ホストライト情報２２ｅとを緊急退避領域３０に退避し、電源復帰時にそれらを読み出し、誤り訂正符号生成に用いた論理ページＰＧのシンボルをストレージ領域３１へ未書き込みの部分も含めて再生して複数メモリチップ間に跨った誤り訂正復号処理（例えば、Ｌ３の誤り訂正復号処理）を行う。これにより、電源断時において、複数メモリチップ間に跨った誤り訂正に必要な情報をバックアップ電池４０で供給可能な電力の範囲内で緊急退避領域３０に退避できるとともに、電源復帰後において、複数メモリチップ間に跨った誤り訂正復号処理で用いるシンボルを電源断直前の複数メモリチップ間に跨った誤り訂正符号処理時に用いられたシンボルと略一致させることができる。この結果、バックアップ電池４０の容量増加を抑制しながら複数メモリチップ間に跨った誤り訂正処理の精度を向上できデータを適正に復元できる。したがって、メモリシステム１の製造コストの増加を抑制できるとともに、メモリシステム１のデータの信頼性を向上できる。
【００８０】
なお、本実施形態の考え方は、メモリシステム１がホスト２のマルチストリーム機能をサポートする機能（マルチライト処理機能）を有する場合に限定されず、メモリシステム１がマルチライト処理機能を有しない又は使用しない場合であっても電源断時に書き込み途中の論理ページＰＧを書ききらないでパワーロスプロテクション（ＰＬＰ）を行う動作に適用可能である。
【００８１】
あるいは、シンボルリード情報２２ｈを用いてＬ３の誤り訂正復号処理を行うこと（図７のＳ１５〜Ｓ１８）は、電源投入時だけでなく通常時（例えば、ホスト２からのリード要求に応じたリード動作時など）に行われてもよい。
【００８２】
あるいは、実施形態では、書き込み途中の論理ページＰＧが、欠陥メモリチップを含まない場合について例示しているが、Ｌ３符号のクラスタデータ、ログのクラスタデータ（ページ内に必要な、訂正情報と管理情報）に割り当てられた物理アドレス位置が欠陥メモリチップに対応する場合、欠陥つぶし処理を行ってもよい。欠陥つぶし処理とは、欠陥メモリチップに対応する位置としてブロック管理部２１ｂにより登録された記憶位置がライトコントローラ２１ａによりアクセスされないようにする（使用不可にする）処理である。欠損メモリチップは、先天的に存在するが未使用であるために顕在化していない場合と後天的に劣化により発生する場合とがある。いずれの場合でも、欠陥つぶし処理では、Ｌ３符号に対応したデータ群（Ｌ３誤り訂正グループ）内のＬ３のクラスタデータやログのクラスタデータを書き込み予定の記憶位置に欠陥があることが判明したことに応じて、コントローラ５（ＣＰＵ２１）が、この記憶位置に代えて、Ｌ３誤り訂正グループであるデータ群内（例えば、図３に示すデータ群ＤＧ１内における）他のクラスタデータの記憶位置（例えば、同じ訂正グループ内の１つ前のクラスタ）に割り当てることができる。ライトコントーラ２１ａは、この割り当てに従ってライトコマンドを発行するようにメモリＩ／Ｆ２４を制御できる。なお、コントローラ５（ＣＰＵ２１）は、この処理で割り当て先に割り当てられていたクラスタデータの記憶位置を新たに別の論理ページに含めるように記憶位置の変更を行うことができる。
【００８３】
例えば、メモリシステム１は、図１１に示すようなブロック管理情報２２ｄを参照し、論理ブロックＢＬ０の論理ページＰＧ−（Ｎ＋２）におけるスロットＳＬ２９，ＳＬ３１に欠陥メモリチップが含まれることを把握したとする。図１１は、ブロック管理情報（論理ブロック管理テーブル）２２ｄを示す図である。このとき、メモリシステム１は、図１２に示すように、論理ページＰＧ−（Ｎ＋２）において、メモリチップＣＰ２９のＰｌａｎｅ１の先頭クラスタ（あるＬ３誤り訂正グループ内のＬ３番号「６２」のクラスタ）とメモリチップＣＰ３１のＰｌａｎｅ１の先頭クラスタ（同グループ内のＬ３番号「６３」のクラスタ）とが使用不可であると把握する。図１２は、欠陥つぶし処理を示す図である。メモリシステム１は、Ｌ３番号「６２」、「６３」のクラスタに書き込み予定だったＬ３符号の書き込み先をＬ３番号「６０」、「６１」のクラスタに変更するとともにＬ３番号「６２」、「６３」のクラスタを不使用とすることをブロック管理情報２２ｄに登録する。このとき、Ｌ３番号「６０」、「６１」のクラスタに書き込み予定だったクラスタデータは追い出して別の論理ページＰＧのクラスタデータとして割り当てることができる。
【００８４】
この場合、メモリシステム１は、図７に示すＳ１６において、書き込み状況情報２２ｇに加えてブロック管理情報２２ｄを参照し、図１３に示すようなシンボルリード情報２２ｈを作成できる。例えば、図１０に示すシンボルリード情報２２ｈと比較すると、Ｌ３のクラスタデータに対する揮発性メモリ２２上の参照位置（アドレスＶＡＤＤ−６２、アドレスＶＡＤＤ−６３）に対応するＬ３番号が「６２」、「６３」から「６０」、「６１」に変更されている。また、Ｌ３番号「６２」、「６３」は無効な欠陥メモリチップの記憶位置（Ｎｕｌｌ）として、無効であることを示す値（ＡＬＬ  ＦＦ：全ビットが１であるビットパターン）が記録されている（図６（ｂ）参照）。これにより、メモリシステム１は、図７に示すＳ１７において、欠陥メモリチップに含まれる記憶位置を避けながらＬ３符号に対応したデータ群におけるデータ部分に対して適正に誤り訂正復号処理を行うことができる。なお、図１３の場合、Ｌ３訂正グループ内のクラスタ数は減るが、コントローラ５（ＣＰＵ２１）は、例えば、Ｌ３番号「６０」、「６１」のクラスタに書き込み予定だったクラスタデータを追い出して別の論理ページＰＧのクラスタデータとして割り当てることができる。
【００８５】
あるいは、ライトバッファ２２ａは、穴埋めリード処理を考慮して構成されていてもよい。例えば、不揮発性メモリ７でのデータの管理単位であるクラスタは、ホスト２からの書き込み要求で指定されるデータの管理単位であるセクタより大きい。このため、不揮発性メモリ７にデータを書き込む際に、書き込み要求に応じた書き込み対象のセクタデータと同一クラスタアドレスのセクタデータ（他のセクタデータ）が不揮発性メモリ７中に存在する場合、メモリシステム１は、書き込み対象のセクタデータにマージしたクラスタ単位のデータ（クラスタデータ）を生成するために、他のセクタデータを不揮発性メモリ７から読み出す穴埋めリード処理を行う。この穴埋めリード処理の途中で又は実行前に突然の電源断が発生すると、メモリシステム１は、他のセクタデータに関する穴埋めリード処理を完了できず、他のセクタデータの替わりに揮発性メモリ（ＤＲＡＭ）２２上に存在する未保証データ（例えば、“０”と“１”とが混在したデータ）がマージされたクラスタデータを用いてＬ３の誤り訂正符号処理を行ってＬ３符号を生成する。そしてメモリシステム１は、書き込み対象のセクタデータと未保証データを含むクラスタデータと、このクラスタデータに基づいて生成されたＬ３符号とを、不揮発性メモリ７（緊急退避領域３０）に退避する。そして、電源が復帰すると、退避したクラスタデータ（書き込み対象のセクタデータ＋未保証データ）とＬ３の訂正符号とが緊急退避領域３０から揮発性メモリ２２（ライトバッファ２２ａ）に復元され、復元されたクラスタデータに対する穴埋めリード処理が実施される。これにより未保証データが値の保証されたデータ（正しい他のセクタデータ）に置換される。穴埋めされたクラスタデータがＬ１の誤り訂正復号処理で訂正できなかった場合、復元されたＬ３の訂正符号を使って誤り訂正復号処理が行われるが、符号化時と復号化時とでクラスタデータの内容が異なるので訂正に失敗する（訂正できない）。そのため、Ｌ３の誤り訂正復号処理時もＬ３の訂正符号が生成されたときの未保証データが必要になる。しかし、復元されたクラスタデータの穴埋めリード処理を行うと、クラスタデータのうち書き込み対象のセクタデータ以外のセクタデータを正しい他のセクタデータで埋めてＬ３の誤り訂正復号処理を行ってしまう。すなわち、穴埋めリードにより未保証データが値の補償されたデータで上書きされて消えてしまう。
【００８６】
そのため、メモリシステム１は、Ｌ３の誤り訂正復号処理に必要な未保証データが上書きされずにＬ３の誤り訂正復号処理時までに揮発性メモリ２２上に確実に残存するように、ライトバッファ２２ａ内に、テンポラリバッファ領域２２ａ１及びメインバッファ領域２２ａ２を有する。テンポラリバッファ領域２２ａ１は、メインバッファ領域２２ａ２に記憶すべきデータが一時的に保持される領域であり、例えば、Ｌ３の誤り訂正復号処理における演算に必要なデータが保持される。メインバッファ領域２２ａ２は、不揮発性メモリ７に記憶すべきデータが一時的に保持される領域であり、例えば、Ｌ３の誤り訂正復号処理が行われたデータの一部が保持される。
【００８７】
例えば、メモリシステム１は、図７のＳ１２において、図１４に実線の矢印で示すように、所定の論理ページＰＧにおける未書き込みデータ（ＷＢダーティ）を緊急退避領域３０からテンポラリバッファ領域２２ａ１へ読み出す。メモリシステム１は、図７のＳ１４において、図１４に実線の矢印で示すように、所定の論理ページＰＧにおける書き込み済みデータをストレージ領域３１からテンポラリバッファ領域２２ａ１へ読み出す。これにより、書き込み済みデータと未書き込みデータ（ＷＢダーティ）とを含む所定の論理ページＰＧのデータがテンポラリバッファ領域２２ａ１上で再構成されＬ３の誤り訂正復号処理が適正に行われ得る。
【００８８】
メモリシステム１は、図７のＳ１６〜Ｓ１８を行いＬ３エラーが発生しなかった場合（Ｓ１９でＮｏ）、図１４に破線の矢印で示すように、所定の論理ページＰＧにおける少なくとも有効部分（図１４に斜線で示す部分）のデータを選択的にテンポラリバッファ領域２２ａ１からメインバッファ領域２２ａ２へ転送（コピー又は移動）する。
【００８９】
メインバッファ領域２２ａ２へ転送された各クラスタデータのサイズは、不揮発性メモリ７への書き込み単位のデータサイズ（例えば、４ＫＢ）に比べて小さいことがある。そのため、メモリシステム１は、図７のＳ２０において、穴埋めリード処理を行う。例えば、メモリシステム１は、図１４に一点鎖線の矢印で示すように、不足分に相当するサイズの他のデータ（同一クラスタアドレスの他のセクタデータ）をストレージ領域３１からメインバッファ領域２２ａ２へ読み出して、テンポラリバッファ領域２２ａ１から転送されたデータに充当する。これにより、不揮発性メモリ７への書き込み単位のデータサイズの各クラスタデータが構成され得るので、メモリシステム１は、図１４に二点鎖線の矢印で示すように、穴埋めリード処理で構成された例えば１論理ページ分のデータをストレージ領域３１における他の論理ブロックにおける１つの論理ページに相当する領域に記憶する。
【００９０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９１】
１  メモリシステム、５  コントローラ、７  不揮発性メモリ。
【図１】
2019114031.tif 000003
【図２】
2019114031.tif 000004
【図３】
2019114031.tif 000005
【図４】
2019114031.tif 000006
【図５】
2019114031.tif 000007
【図６】
2019114031.tif 000008
【図７】
2019114031.tif 000009
【図８】
2019114031.tif 000010
【図９】
2019114031.tif 000011
【図１０】
2019114031.tif 000012
【図１１】
2019114031.tif 000013
【図１２】
2019114031.tif 000014
【図１３】
2019114031.tif 000015
【図１４】
2019114031.tif 000016