(57)【要約】【課題】非消去ページが含まれる論理ブロックで、最終プログラムページを効率的に検索することができるメモリシステムを提供する。【解決手段】実施形態によれば、メモリコントローラは、不揮発性メモリから、論理ブロック内で最後にデータが書き込まれた物理ページの候補である最終ページ候補を特定する。メモリコントローラは、最終ページ候補から第２の順序とは逆順に存在する第１の範囲数の物理ページのうち、プログラムされた物理ページの数が第１基準値以上であるかを判定する上方向チェック処理を実行する。メモリコントローラは、最終ページ候補から第２の順序と同じ順に存在する第２の範囲数の物理ページのうち、プログラムされた物理ページの数が第２基準値以下であるかを判定する下方向チェック処理を実行し、上方向チェック処理および下方向チェック処理の結果から論理ブロック内で最後にデータが書き込まれた物理ページを特定する。【選択図】図１
2020009370.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリへのデータのアクセスを制御するメモリコントローラと、
を備え、
前記不揮発性メモリ内にはデータの消去の単位である物理ブロックが複数存在し、
前記物理ブロック内にはデータの読み書きの単位である物理ページが複数存在し、
前記メモリコントローラは、
複数の前記物理ブロックをまとめて論理ブロックとし、
複数の前記物理ページのうち、前記物理ブロック内における相対的な位置が同じものをまとめて論理ページとし、
複数の前記論理ページに対して予め定められた第１の順序でデータが配置され、かつ、前記論理ページ内の複数の前記物理ページに対して予め定められた第２の順序でデータが配置されるように前記不揮発性メモリにデータ書き込みを指示し、
前記不揮発性メモリから、前記論理ブロック内で最後にデータが書き込まれた物理ページの候補である最終ページ候補を特定し、
前記最終ページ候補から前記第２の順序とは逆順に存在する第１の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第１基準値以上であるかを判定する上方向チェック処理を実行し、
前記最終ページ候補から前記第２の順序と同じ順に存在する第２の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第２基準値以下であるかを判定する下方向チェック処理を実行し、
前記上方向チェック処理および前記下方向チェック処理の結果から前記論理ブロック内で最後にデータが書き込まれた物理ページを特定する、
メモリシステム。
【請求項２】
前記メモリコントローラは、前記上方向チェック処理でプログラムされた物理ページの数が前記第１基準値以上であり、かつ前記下方向チェック処理でプログラムされた前記物理ページの数が前記第２基準値以下である場合に、前記最終ページ候補から前記第１の範囲数の前記物理ページのうち、最も前記第２の順序と同じ順に存在するプログラムされた物理ページを最後にデータが書き込まれた前記物理ページであると特定する請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、前記上方向チェック処理でプログラムされた前記物理ページの数が前記第１基準値未満である場合には、前記最終ページ候補の探索範囲を補正して、新たな前記最終ページ候補を取得する請求項１に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、前記下方向チェック処理でプログラムされた前記物理ページの数が前記第２基準値より大きい場合には、前記最終ページ候補の探索範囲を補正して、新たな前記最終ページ候補を取得する請求項１または３に記載のメモリシステム。
【請求項５】
前記メモリコントローラは、Ｎ分探索（Ｎは２以上の自然数）によって前記最終ページ候補を取得する請求項１から４のいずれか１つに記載のメモリシステム。
【請求項６】
前記メモリコントローラは、前記論理ブロックに書き込むデータに対して訂正符号を生成し、前記データに前記訂正符号を付して前記論理ブロックに書き込み、
前記第１基準値および前記第２基準値は、前記訂正符号の誤り訂正能力によって訂正可能な範囲の物理ページ数に設定される請求項１から５のいずれか１つに記載のメモリシステム。
【請求項７】
前記第１基準値は、３ページであり、
前記第２基準値は、２ページである請求項６に記載のメモリシステム。
【請求項８】
前記第１の範囲数は、１論理ページに含まれる前記物理ページの数であり、
前記第２の範囲数は、１論理ページに含まれる前記物理ページの数である請求項１から７のいずれか１つに記載のメモリシステム。
【請求項９】
前記不揮発性メモリは、ＮＡＮＤ型フラッシュメモリである請求項１に記載のメモリシステム。
【請求項１０】
不揮発性メモリ内に複数存在する、データの消去の単位である物理ブロックを複数まとめて論理ブロックとし、
前記物理ブロック内に複数存在する、データの読み書きの単位である物理ページのうち、前記物理ブロック内における相対的な位置が同じものをまとめて論理ページとし、
複数の前記論理ページに対して予め定められた第１の順序でデータが配置され、かつ、前記論理ページ内の複数の前記物理ページに対して予め定められた第２の順序でデータが配置されるように前記不揮発性メモリにデータ書き込みを命令し、
前記不揮発性メモリから、前記論理ブロック内で最後にデータが書き込まれた物理ページの候補である最終ページ候補を特定し、
前記最終ページ候補から前記第２の順序とは逆順に存在する第１の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第１基準値以上であるかを判定する上方向チェック処理を実行し、
前記最終ページ候補から前記第２の順序と同じ順に存在する第２の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第２基準値以下であるかを判定する下方向チェック処理を実行し、
前記上方向チェック処理および前記下方向チェック処理の結果から前記論理ブロック内で最後にデータが書き込まれた物理ページを特定する、メモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよびその制御方法に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリを記憶媒体とするメモリシステムにおいて、最後に書き込まれた物理ページ（以下、最終有効ページという）を検索する際に、２分探索が用いられている。
【０００３】
最終有効ページ以降の物理ページに、不良物理ページまたは消し損じの物理ページ（以下、両者をまとめて表現する場合には、非消去ページという）が存在する場合、非消去ページはプログラム状態であると誤判定されることがあった。このため、起動処理に要する時間の最大値が大きかった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４５２４３０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、起動処理に要する時間の最大値を抑えることができるメモリシステムおよびその制御方法を提供することを課題とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、メモリシステムは、不揮発性メモリと、不揮発性メモリへのデータのアクセスを制御するメモリコントローラと、を備える。不揮発性メモリ内にはデータの消去の単位である物理ブロックが複数存在し、物理ブロック内にはデータの読み書きの単位である物理ページが複数存在する。メモリコントローラは、複数の物理ブロックをまとめて論理ブロックとし、複数の物理ページのうち、物理ブロック内における相対的な位置が同じものをまとめて論理ページとする。メモリコントローラは、複数の論理ページに対して予め定められた第１の順序でデータが配置され、かつ、論理ページ内の複数の物理ページに対して予め定められた第２の順序でデータが配置されるように不揮発性メモリにデータ書き込みを指示する。メモリコントローラは、不揮発性メモリから、論理ブロック内で最後にデータが書き込まれた物理ページの候補である最終ページ候補を特定する。メモリコントローラは、最終ページ候補から前記第２の順序とは逆順に存在する第１の範囲数の物理ページのうち、プログラムされた物理ページの数が第１基準値以上であるかを判定する上方向チェック処理を実行する。メモリコントローラは、最終ページ候補から第２の順序と同じ順に存在する第２の範囲数の物理ページのうち、プログラムされた物理ページの数が第２基準値以下であるかを判定する下方向チェック処理を実行する。メモリコントローラは、上方向チェック処理および下方向チェック処理の結果から論理ブロック内で最後にデータが書き込まれた物理ページを特定する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態によるメモリシステムの構成の一例を模式的に示すブロック図である。
【図２】図２は、物理ブロックと論理ブロックとの関係を模式的に示す図である。
【図３】図３は、フレームの構成の一例を示す図である。
【図４】図４は、実施形態による上方向チェック処理の概要を模式的に示す図である。
【図５】図５は、実施形態による下方向チェック処理の概要を模式的に示す図である。
【図６】図６は、実施形態によるメモリシステムの起動時の処理手順の一例を示すフローチャートである。
【図７】図７は、実施形態による境界探索処理の手順の一例を示すフローチャートである。
【図８】図８は、実施形態による境界探索処理で決定される最終プログラムページの一例の場合を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびその制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００９】
図１は、実施形態によるメモリシステムの構成の一例を模式的に示すブロック図である。メモリシステム１０は、メモリコントローラ２０と、不揮発性メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）３０と、を備える。メモリシステム１０は、ホスト４０と接続可能である。図１には、ホスト４０と接続された状態のメモリシステム１０が示されている。ホスト４０は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【００１０】
ＮＡＮＤメモリ３０は、電源が供給されない状態でも、書き込まれたデータを保持することができる半導体メモリである。ＮＡＮＤメモリ３０は、ホスト４０から送信されるユーザデータ、およびメモリシステム１０内でのデータの保存位置の管理などに使用される管理情報などを記憶する。
【００１１】
ＮＡＮＤメモリ３０は、メモリセルアレイを有する１以上のＮＡＮＤチップによって構成される。メモリセルアレイは、複数のメモリセルがマトリクス状に配列されて構成される。個々のメモリセルアレイは、消去の単位である物理ブロックを複数配列して構成される。各物理ブロックは、メモリセルアレイに対する読み出しおよび書き込みの単位であるページを複数備える。
【００１２】
メモリコントローラ２０は、ホスト４０からの書き込みコマンド（書き込みの要求）に基づいてＮＡＮＤメモリ３０を制御してデータを書き込ませる。また、ホスト４０からの読み出しコマンド（読み出しの要求）に基づいてＮＡＮＤメモリ３０を制御してデータを読み出させる。メモリコントローラ２０は、ホストＩ／Ｆ（ホストインタフェース）２１、制御部２２、データバッファ２３、符号化部／復号部（Encoder/Decoder）２４およびメモリＩ／Ｆ（メモリインタフェース）２５を備える。ホストＩ／Ｆ２１、制御部２２、データバッファ２３、符号化部／復号部２４およびメモリＩ／Ｆ２５は、内部バス２９で接続されている。
【００１３】
ホストＩ／Ｆ２１は、ホスト４０との間のインタフェース規格に沿った処理を実施し、ホスト４０から受信した命令、ユーザデータなどを内部バス２９に出力する。また、ホストＩ／Ｆ２１は、ＮＡＮＤメモリ３０から読み出されたユーザデータ、制御部２２からの応答などをホスト４０へ送信する。なお、本実施の形態では、ホスト４０からの書き込みの要求によりＮＡＮＤメモリ３０へ書き込むデータをユーザデータと呼ぶ。
【００１４】
制御部２２は、メモリコントローラ２０の各構成要素を統括的に制御する機能部である。制御部２２は、ホスト４０からホストＩ／Ｆ２１経由で命令（コマンド、要求）を受けた場合に、その命令に基づいて、メモリコントローラ２０の各構成要素の制御を行う。
【００１５】
制御部２２は、ＮＡＮＤメモリ３０内の複数の物理ブロックをまとめて論理ブロックとし、複数の物理ページのうち、物理ブロック内における相対的な位置が同じものをまとめて論理ページとして管理する。図２は、物理ブロックと論理ブロックとの関係を模式的に示す図である。図２に示されるように、メモリシステム１０では、物理ブロック２１０が複数まとめられて仮想的なブロックである論理ブロック２００が構築される。論理ブロック２００は、消去、書き込み、読み出しなどの管理単位として用いられる。論理ブロック２００を構成する各物理ブロック２１０は、例えばそれぞれ異なるＮＡＮＤチップに属する。また、論理ブロック２００は、複数の論理ページ２２０で構成される。論理ページ２２０は、論理ブロック２００内での書き込みおよび読み出しの単位であり、論理ブロック２２０を構成する各物理ブロック２１０の同じ位置の物理ページ２３０をまとめたものである。図に示されるように、論理ページ２２０は、論理ブロック２００を構成する各物理ブロック２１０の相対的な位置が同じ物理ページ２３０をまとめたものである。
【００１６】
例えば、制御部２２は、ホスト４０からの命令（書き込みコマンド）に基づいてメモリＩ／Ｆ２５を制御し、データの書き込みをＮＡＮＤメモリ３０へ指示する。具体的には、制御部２２は、複数の論理ページに対して予め定められた第１の順序でデータが配置され、かつ、論理ページ内の複数の物理ページに対して予め定められた第２の順序でデータが配置されるようにメモリＩ／Ｆ２５を介してＮＡＮＤメモリ３０にデータ書き込みを指示する。図２には、論理ブロック２００におけるデータの配置の順序の一例が示されている。データは、例えば論理ブロック２００内に割り当てられたアドレス値の若い方から順に配置される。図２の例では、矢印Ａ１，Ａ２に示されるように、１論理ページ２２０内では、左から右にデータが順に配置される。また、１論理ブロック内では、矢印Ａ３に示されるように、上の論理ページから下の論理ページに向かってデータが順に配置される。
【００１７】
この明細書では、論理ブロック２００中の基準となる物理ページ（以下、基準物理ページという）２３１から上方向とは、プログラムの順序である第２の順序に対して逆順のことをいう。基準物理ページ２３１から下方向とは、第２の順序のことをいう。
【００１８】
また、ｍを自然数とし、基準物理ページ２３１を基準にして上方向にｍ物理ページ分とは、基準物理ページ２３１の上方向に隣接する物理ページからｍ物理ページ分の対象物理ページ２３３のことをいう。また、ｎを自然数とし、基準物理ページ２３１を基準にして下方向にｎ論理ページ分とは、基準物理ページ２３１の下方向に隣接する物理ページからｎ論理ページ分の対象論理ページ２３４のことをいう。
【００１９】
また、制御部２２は、ホスト４０からの命令（読み出しコマンド）に基づいてメモリＩ／Ｆ２５を制御し、データの読み出しをＮＡＮＤメモリ３０へ指示する。
【００２０】
制御部２２は、ホスト４０から書き込みの要求を受信した場合、データバッファ２３に蓄積されたユーザデータに対して、ＮＡＮＤメモリ３０上の格納領域（メモリ領域）を決定する。すなわち、制御部２２は、ユーザデータの書き込み先を管理する。ホスト４０から受信したユーザデータの論理アドレスと該ユーザデータが格納されるＮＡＮＤメモリ３０上の格納領域を示す物理アドレスとの対応関係の一覧は管理情報の一例であるアドレス変換テーブルとして格納される。
【００２１】
また、制御部２２は、ホスト４０から読み出しの要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリＩ／Ｆ２５へ指示する。
【００２２】
さらに、制御部２２は、所定のタイミングであるいは所定のイベントが発生したときに、メモリＩ／Ｆ２５を制御し、管理情報を管理情報保存用の論理ブロックに書き込むようにＮＡＮＤメモリ３０に指示する。また、制御部２２は、例えばメモリシステム１０の起動時にメモリＩ／Ｆ２５を制御し、管理情報保存用の論理ブロックからの管理情報の読み出しをＮＡＮＤメモリ３０に指示する。
【００２３】
データバッファ２３は、メモリコントローラ２０がホスト４０から受信したユーザデータを、それがＮＡＮＤメモリ３０へ記憶されるまで一時的に格納する。また、データバッファ２３は、ＮＡＮＤメモリ３０から読み出されたユーザデータを、それがホストＩ／Ｆ２１を介してホスト４０へ送信されるまで一時的に格納する。データバッファ２３は、例えば、ＳＲＡＭ（Static  Random  Access  Memory）またはＤＲＡＭ（Dynamic  Random  Access  Memory）などの汎用メモリである。
【００２４】
ホスト４０からメモリコントローラ２０へ送信されるユーザデータは、ホストＩ／Ｆ２１を介して内部バス２９に出力され、さらにデータバッファ２３に格納される。符号化部／復号部２４は、ＮＡＮＤメモリ３０に格納されるデータを符号化して符号語を生成する。符号化部／復号部２４は、符号化部（Encoder）２６および復号部（Decoder）２７を備える。符号化部２６は、記憶するデータについて、ＢＣＨ（Bose-Chaudhurl-Hocquenghem）符号などのパリティ（誤り訂正符号）を生成する。メモリシステムの使用目的に応じて、誤り訂正符号の訂正能力を変えてもよい。復号部２７は、パリティを用いて読み出したデータの誤りを検出し、訂正する。
【００２５】
メモリＩ／Ｆ２５は、制御部２２による制御の下、ＮＡＮＤメモリ３０にデータ書き込みを指示する。また、メモリＩ／Ｆ２５は、制御部２２による制御の下、ＮＡＮＤメモリ３０にデータの読み出しを指示する。
【００２６】
ＮＡＮＤメモリ３０に対するデータ書き込みは、ユーザデータを含むフレームを単位として指示される。図３は、フレームの構成の一例を示す図である。フレーム３００は、ユーザデータを含むデータ部３１０と、フレーム３００に関する情報を示すシグネチャ３２０と、データ部３１０に対して生成されるパリティ３３０と、を含む。シグネチャ３２０は、フレーム区切り情報と、前回フレーム指示情報と、を含む。フレーム区切り情報は、データの区切りであることを示す固定のビット列である。前回フレーム指示情報は、今回のフレーム３００の前に同じ論理ブロック内でプログラムされたフレーム３００のシグネチャ３２０の書き込み位置を示す情報である。一例では、シグネチャ３２０は１物理ページ分の大きさを有し、パリティ３３０は２物理ページ分の大きさを有する。パリティ３３０の大きさは、訂正アルゴリズムの種類によって変更可能である。また、パリティ３３０は、データ部３１０とシグネチャ３２０とに対して生成されてもよい。
【００２７】
制御部２２は、データバッファ２３に蓄積されたユーザデータに対して、シグネチャ３２０と、符号化部２６で生成されたパリティ３３０とを付したフレーム３００を生成する。また、制御部２２は、このフレーム３００を先頭から物理ページ２３０の大きさに分割する。そして、制御部２２は、メモリＩ／Ｆ２５を制御し、分割されたフレーム３００を各物理ブロック２１０に並列に書き込む（プログラムする）ようにＮＡＮＤメモリ３０に指示する。なお、上述した、分割されたフレーム３００の書き込みの指示は、論理ブロック２００を構成する各物理ブロック２１０に対して同時に出されるが、各物理ブロック２１０での書き込み処理の状況によって、すべての物理ブロック２１０でフレーム３００を構成するデータが同時に書き込まれるとは限らない。すなわち、ある物理ブロック２１０で、フレーム３００を構成するデータが既に書き込まれている状態でも、別の物理ブロック２１０では、フレーム３００を構成するデータがまだ書き込まれていなかったり、書き込み中の状態であったりする。
【００２８】
メモリシステム１０は、メモリコントローラ２０とＮＡＮＤメモリ３０とが１つのパッケージとして構成されるメモリカード等であってもよいし、ＳＳＤ（Solid  State  Drive）等であってもよい。
【００２９】
メモリシステム１０では、起動時に、ＮＡＮＤメモリ３０内の所定の物理ブロックに書き込まれた管理情報が読み込まれる。上記したように、ＮＡＮＤメモリ３０では、物理ブロックの先頭物理ページから順にデータが書き込まれる（プログラムされる）。そのため、ＮＡＮＤメモリ３０では、起動時に、管理情報が読み込むために、最終プログラムページを探す処理が行われる。ここで、最終プログラムページは、論理ブロック内で先頭ページから最も離れたアドレス値を有する非消去ページである。この処理は、プログラムされた物理ページ（以下、プログラムページという）と消去状態の物理ページ（以下、消去ページという）との境界（以下、プログラム／消去境界ともいう）を探索するものであるので、以下では、境界探索処理という。境界探索処理では、ある物理ページがプログラム状態か消去状態かを判別する機能が使用される。これによって、論理ブロック内での最終プログラムページが特定される。
【００３０】
物理ページへの書き込み途中で、不正電源遮断が発生する場合もある。不正電源遮断は、ホスト４０からの正式な電源断の指示に依らない不意に生じる電源遮断である。不正電源遮断として、例えば、瞬間的にメモリシステム１０への電源の供給が切れる瞬断などがある。不正電源遮断が発生すると、ある論理ページでは、書き込み完了状態、書き込み途中状態および未書き込み状態の物理ページが順不同で並ぶ可能性がある。このような場合、論理ブロックでの最終プログラムページが曖昧になってしまう。
【００３１】
そこで、本実施形態では、制御部２２は、境界探索処理を行う際に、メモリＩ／Ｆ２５を制御し、論理ブロック内の最終ページ候補を見つける探索処理、最終ページ候補からの上方向チェック処理、最終ページ候補からの下方向チェック処理、の３種類に分類される処理を行うようにＮＡＮＤメモリ３０に指示を出す。ここで、最終ページ候補は、最終プログラムページの候補のことである。
【００３２】
探索処理では、例えば２分探索で最終ページ候補が取得される。上方向チェック処理では、最終ページ候補から上方向に存在する第１の範囲数の物理ページのうち、プログラムページの数が第１基準値以上であるかが判定される。第１の範囲数は、例えば１論理ページに含まれる物理ページの数とすることができる。また、第１基準値は、Ｘを自然数として、Ｘ＋１ページ以上とすることができる。
【００３３】
図４は、実施形態による上方向チェック処理の概要を模式的に示す図である。この図に示される例では、最終ページ候補２５１が決定された後、最終ページ候補２５１から上方向に第１の範囲数の物理ページ２５３を対象として、上方向チェック処理が実行される。第１の範囲数は、例えば１論理ページ分の物理ページの数である。上方向チェック処理では、制御部２２は、第１の範囲数の物理ページ２５３のうち、プログラムページの数が第１基準値以上存在するかを判定する。制御部２２は、第１の範囲数の物理ページ２５３のうち、プログラムページの数が第１基準値以上存在する場合には、最終ページ候補２５１から上方向はプログラム状態であるとみなす。また、制御部２２は、第１の範囲数の物理ページ２５３のうち、プログラムページの数が第１基準値未満存在する場合には、最終ページ候補２５１から上方向は消去状態であるとみなし、最終ページ候補２５１は最終プログラムページではないと判定し、つぎの探索処理の範囲を補正する。
【００３４】
上方向チェック処理でプログラムページの数が第１基準値以上であると判定された場合に、下方向チェック処理が実行される。下方向チェック処理では、最終候補ページから下方向に存在する第２の範囲数の物理ページのうち、プログラムページの数が第２基準値以下であるかが判定される。第２の範囲数は、例えば１論理ページに含まれる物理ページの数とすることができる。また、第２基準値は、たとえば、Ｘを自然数として、Ｘとすることができる。
【００３５】
図５は、実施形態による下方向チェック処理の概要を模式的に示す図である。この図に示される例では、最終ページ候補２５１から下方向に第２の範囲数の物理ページ２５４を対象として、下方向チェック処理が実行される。第２の範囲数は、例えば１論理ページ分の物理ページの数である。下方向チェック処理では、制御部２２は、第２の範囲数の物理ページ２５４のうち、プログラムページの数が第２基準値以下存在するかを判定する。制御部２２は、第２の範囲数の物理ページ２５３のうち、プログラムページの数が第２基準値以下存在する場合には、最終ページ候補２５１から下方向に最終プログラムページが存在するものと判定する。このとき、第２の範囲数の物理ページ２５４内のプログラム状態と判別された物理ページのうち、最終ページ候補２５１から最も離れたアドレス値を有する物理ページが最終プログラムページとされる。また、制御部２２は、第２の範囲数の物理ページ２５３のうち、プログラムページの数が第２基準値より多く存在する場合には、最終ページ候補２５１から下方向の物理ページはプログラム状態であるとみなす。つまり、制御部２２は、第２の範囲数の物理ページ２５４の中には最終ページはないと判定し、つぎの探索処理の範囲を補正する。このようにして、制御部２２は、上方向チェック処理と下方向チェック処理の結果から論理ブロック内の最終プログラムページを特定する。
【００３６】
なお、上記の判定で、プログラムページの数が、最終ページ候補から連続して第１基準値以上あるいは第２基準値以下とはしていない。これは、上記したように管理情報の書き込みの最中での不正電源遮断の発生によって、書き込み完了状態、書き込途中状態および未書き込み状態の物理ページが順不同で並ぶ場合を想定しているためである。
【００３７】
また、上方向チェック処理の第１基準値および下方向チェック処理の第２基準値は、パリティで訂正可能な最大の物理ページ数以下とすることができる。
【００３８】
さらに、下方向チェック処理でプログラムページの数が訂正可能な最大の物理ページ数よりも多い場合、すなわち、訂正能力を超える場合には、データを読み出すことができない。このような場合には、最終ページ候補から下方向に、実際の最終プログラムページが存在する可能性がある。そこで、このような場合には、つぎに行われる探索処理の探索範囲が、現在の最終ページ候補から状態を巻き戻らせない方向となるように、補正される。
【００３９】
図６は、実施形態によるメモリシステムの起動時の処理手順の一例を示すフローチャートであり、図７は、実施形態による境界探索処理の手順の一例を示すフローチャートである。メモリシステム１０が起動されると、制御部２２による制御の下、メモリＩ／Ｆ２５は、ＮＡＮＤメモリ３０に境界探索処理を実行させる（ステップＳ１１）。境界探索処理は、プログラム／消去境界を探索する処理、すなわち、論理ブロック内での最終プログラムページを特定する処理である。
【００４０】
境界探索処理によって最終プログラムページが特定されると、つぎにメモリＩ／Ｆ２５は、制御部２２による制御の下、ＮＡＮＤメモリ３０に最終有効ページ特定処理を実行させる（ステップＳ１２）。最終有効ページ特定処理では、制御部２２は、最終プログラムページを、正常にフレームが書き込まれたと仮定した場合に論理ブロックの先頭ページから最も離れたアドレス値を有する物理ページであると仮定している。制御部２２は、最終プログラムページからシグネチャを取得し、このシグネチャを有するフレームのデータ部を読み出す。そして、制御部２２は、データ部を読み出せない場合には、パリティを用いて訂正を施す。データ部を読み出せた場合またはパリティを用いてデータ部を訂正できた場合には、制御部２２は、境界探索処理によって特定されていた最終プログラムページを最終有効ページと特定する。また、シグネチャを取得できなかった場合、あるいはパリティを用いてもデータ部を訂正できない場合には、制御部２２は、論理ブロック内で、このフレームのつぎに先頭ページから離れたアドレス値を有するフレームのシグネチャについて、同様の処理を行う。制御部２２は、最終有効ページを特定するまで上記の処理を繰り返す。制御部２２は、最終有効ページ特定処理においては、リニアサーチによって、シグネチャを含む物理ページを検索する。
【００４１】
その後、制御部２２は、特定された最終有効ページを含むフレームを読み出し、メモリコントローラ２０によるメモリシステム１０の起動処理が行われる（ステップＳ１３）。以上で、処理が終了する。
【００４２】
つぎに、ステップＳ１１の境界探索処理の詳細について、図７のフローチャートを参照しながら説明する。メモリＩ／Ｆ２５は、２分探索を用いてデータを読み出す論理ブロック内の最終ページ候補を取得する（ステップＳ３１）。ついで、メモリＩ／Ｆ２５は、最終ページ候補から上方向に存在する第１の範囲数の物理ページを上方向チェック処理の範囲と決定する（ステップＳ３２）。第１範囲数として、例えば１論理ページ分の物理ページの数とすることができる。その後、メモリＩ／Ｆ２５は、上方向チェック処理の範囲内に存在するプログラムページの数が第１基準値以上であるかを判定する（ステップＳ３３）。例えば、第１基準値は、Ｘ＋１とされる。
【００４３】
上方向チェック処理の範囲内に存在するプログラムページの数が第１基準値以上である場合（ステップＳ３３でＹｅｓの場合）には、メモリＩ／Ｆ２５は、最終ページ候補から下方向に存在する第２の範囲数の物理ページを下方向チェック処理の範囲とする（ステップＳ３４）。第２の範囲数として、例えば１論理ページ分の物理ページの数とすることができる。その後、メモリＩ／Ｆ２５は、下方向チェック処理の範囲内に存在するプログラムページの数が第２基準値以下であるかを判定する（ステップＳ３５）。
【００４４】
下方向チェック処理の範囲内に存在するプログラムページの数が第２基準値以下である場合（ステップＳ３５でＹｅｓの場合）には、メモリＩ／Ｆ２５は、下方向チェック処理の範囲内に最終プログラムページが存在するものと判定する。そして、メモリＩ／Ｆ２５は、下方向チェック処理の範囲内で最終ページ候補から最も離れたアドレス値を有するプログラム状態にあると判別された物理ページを最終プログラムページと特定する（ステップＳ３６）。そして、処理が図６のフローチャートへと戻る。
【００４５】
一方、ステップＳ３３で第１の範囲数の物理ページのうち、プログラムページの数が第１基準値未満である場合（ステップＳ３３でＮｏの場合）には、メモリＩ／Ｆ２５は、第１の範囲は消去状態であると判定する。つまり、メモリＩ／Ｆ２５は、最終ページ候補は最終プログラムページではないと判定し（ステップＳ３７）、２分探索の探索範囲を補正する（ステップＳ３８）。そして、処理はステップＳ３１に戻る。
【００４６】
また、ステップＳ３５で下方向チェック処理の範囲内に存在するプログラムページの数が第２基準値よりも大きい場合（ステップＳ３５でＮｏの場合）には、メモリＩ／Ｆ２５は、下方向チェック処理の範囲はプログラム状態であると判定する。この場合にも、ステップＳ３７へと処理が移る。
【００４７】
図８は、実施形態による境界探索処理で決定される最終プログラムページの一例の場合を示す図である。図に示される例では、論理ブロック２００には、プログラムページ２６１と、消去ページ２６６と、不良物理ブロック２１１，２１２と、が含まれている。また、ここでは、Ｘを２とする。つまり、第１基準値は３、第２基準値は２とする。さらに、この図では、パリティの図示が省略されている。
【００４８】
図８（ａ）に示される例では、図７のステップＳ３１の探索処理によって、不良物理ブロック２１２中の不良物理ページが最終ページ候補２７１として取得されている。なお、この最終ページ候補２７１のアドレス値と実際の最終プログラムページ２７５のアドレス値との差は、１論理ページ分のアドレス値である。
【００４９】
この最終ページ候補２７１について、上方向チェック処理が実行されるとする。図８（ｂ）に示される例では、上方向チェック処理の範囲２８１は、例えば最終ページ候補２７１から上方向に１論理ページ分である。この上方向チェック処理の範囲２８１には、３ページ分のプログラムページ２６１ａと、２ページ分の不良物理ページ２１１ａ，２１２ｂが存在する。この上方向チェック処理の結果、プログラムページは５ページであり、第１基準値である３ページ以上のとなる。この時、制御部２２は、最終ページ候補２７１について、さらに下方向チェック処理を実行する。
【００５０】
図８（ｃ）に示される例では、下方向チェック処理の範囲２８２は、例えば最終ページ候補２７１から下方向に１論理ページ分である。この下方向チェック処理の範囲２８２には、２ページ分の不良物理ページ２１１ｂ，２１２ｂが存在する。この下方向チェック処理の結果、プログラム状態であるとされる物理ページは２ページであり、第２基準値（＝２）以下となる。この時、制御部２２は、下方向チェック処理の範囲２８２に最終プログラムページが存在するものと判定する。そして、制御部２２は、下方向チェック処理の範囲２８２中で最終ページ候補２７１から最も離れたアドレス値を有するプログラム状態と判別された物理ページ、すなわち誤判定された不良物理ページ２１２ｂを最終プログラムページであると特定する。すなわち、メモリＩ／Ｆ２５は、不良物理ページ２１２ｂと隣接する消去ページ２６６ａとの間がプログラム／消去境界２９１であると特定する。
【００５１】
この場合、図８（ｃ）に示されるように、特定された最終プログラムページ２１２ｂは、実際のプログラム／消去境界２７５とは異なっている。しかし、実際のプログラム／消去境界２７５は、特定された最終プログラムページ２１２ｂを含む論理ページから３論理ページ以内に存在している。つまり、本実施形態により、最終有効ページ特定処理におけるリニアサーチの検索範囲を狭めることができ、起動処理に要する時間の最大値を抑えることができる。
【００５２】
なお、上述した説明では、境界探索で２分探索を用いているが、２分探索の代わりとして、例えば、８分探索などのＮ分探索（Ｎは２以上の自然数）が用いられてもよい。
【００５３】
以上のように、実施形態では、論理ページ内で最終ページ候補を取得した後、最終ページ候補から上方向に存在する第１の範囲数の物理ページのうち、プログラムページが第１基準値以上あるかを判定する上方向チェック処理を行う。上方向チェック処理で第１条件を満たす場合に、最終ページ候補から下方向に存在する第２の範囲数の物理ページのうち、プログラムページが第２基準値以下であるかを判定する下方向チェック処理を行う。下方向チェック処理で第２条件を満たす場合に、第２の範囲数の物理ページのうちで最終ページ候補２５１から最も離れたアドレス値を有するプログラムページを最終プログラムページとする。このように、最終ページ候補についての最終チェックに冗長性を持たせることで、最終ページ候補が不良物理ページとなった場合でも、一定の精度で最終プログラムページを特定することができる。その結果、非消去ページが含まれる論理ブロックで、最終プログラムページを効率的に検索することができるという効果を有する。
【００５４】
また、論理ブロック内に不良物理ページが含まれている場合であっても、境界探索処理で、実際の最終プログラムページから３論理ページの範囲内に最終プログラムページを確定させることができる。つまり、確定された最終プログラムページから３論理ページの範囲内に実際の最終プログラムページが存在する。そのため、最終有効ページ特定処理でのリニアサーチの検索範囲を狭めることができ、起動処理に要する時間の最大値を抑えることができる。
【００５５】
さらに、実施形態による境界探索処理によって、不良物理ページが含まれない通常のケースでの検索時間を大きく変えずに、最終プログラムページの探索を行うことができる。
【００５６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５７】
１０…メモリシステム、２０…メモリコントローラ、２１…ホストＩ／Ｆ、２２…制御部、２３…データバッファ、２４…符号化部／復号部、２５…メモリＩ／Ｆ、２６…符号化部、２７…復号部、２９…内部バス、３０…ＮＡＮＤメモリ、４０…ホスト。
【図１】
2020009370.tif 000003
【図２】
2020009370.tif 000004
【図３】
2020009370.tif 000005
【図４】
2020009370.tif 000006
【図５】
2020009370.tif 000007
【図６】
2020009370.tif 000008
【図７】
2020009370.tif 000009
【図８】
2020009370.tif 000010