(57)【要約】【課題】退避したデータと同じアドレスに読み出しが発生した場合には、退避した訂正済みデータを出力することが可能な不揮発性メモリおよびメモリシステムを提供する。【解決手段】メモリ領域２１０へのアクセスを制御する制御部２２０を有し、制御部２２０は、データ領域から読み出したデータの誤りを検出して訂正機能を有する誤り検出訂正機能と、指定されたアドレスのデータおよびＥＣＣをメモリ領域から読み出し、誤りを検出した場合には、そのアドレスと訂正済みデータを保持する退避領域２２７と、退避領域に保持しているアドレスと訂正済みデータが有効であるか無効であるかを示す有効無効提示部と、を含み、新たなアドレスと訂正済みデータが退避領域に登録された場合には、有効無効提示部を有効に設定し、退避領域に保持されているデータが不要になった場合には、有効無効提示部を無効に設定する。【選択図】図１
2011108306.tif 000002
【特許請求の範囲】
【請求項１】
データを保存するデータ領域と、エラー訂正コード（ＥＣＣ）を保存するためのＥＣＣ領域とを含むメモリ領域と、
上記メモリ領域へのアクセスを制御する制御部と、を有し、
上記制御部は、
上記データ領域から読み出したデータの誤りを検出して訂正機能を有する誤り検出訂正機能と、
指定されたアドレスのデータおよびＥＣＣを上記メモリ領域から読み出し、誤りを検出した場合には、当該アドレスと訂正済みデータを保持する少なくとも一つの退避領域と、
上記退避領域に保持しているアドレスと訂正済みデータが有効であるか無効であるかを示す有効無効提示部と、を含み、
新たなアドレスと訂正済みデータが上記退避領域に登録された場合には、上記有効無効提示部を有効に設定し、上記退避領域に保持されているデータが不要になった場合には、上記有効無効提示部を無効に設定する
不揮発性メモリ。
【請求項２】
上記制御部は、
上記メモリ領域にアクセスするように指定されたアドレスと上記退避領域に保持されている上記有効無効提示部が有効に設定されているすべてのアドレスを比較する比較機能を含み、
データ読み出し時に、上記比較機能がアドレスの一致を示した場合には、上記退避領域に保持する訂正済みデータを出力する
請求項１記載の不揮発性メモリ。
【請求項３】
上記制御部は、
上記比較機能がアドレスの不一致を示した場合には、上記データ領域からデータ、上記ＥＣＣ領域からＥＣＣを読み出し、上記誤り検出訂正機能でデータの誤りを確認し、訂正不要なデータはそのまま出力し、
誤りを検出した場合には、上記退避領域にアドレスと訂正済みデータを書き込み、上記有効無効提示部を有効に設定し、訂正済みデータを出力する
請求項２記載の不揮発性メモリ。
【請求項４】
上記制御部は、
上記退避領域にアドレスと訂正済みデータが新たに追加されたことを通知する機能を有する
請求項３記載の不揮発性メモリ。
【請求項５】
上記制御部は、
上記退避領域に空きがないことを通知する機能を有する
請求項４記載の不揮発性メモリ。
【請求項６】
上記制御部は、
データ書き込み時に、上記比較機能がアドレスの一致を示した場合には、当該アドレスを保持する上記退避領域の有効無効提示部を無効に設定する
請求項２から５のいずれか一に記載の不揮発性メモリ。
【請求項７】
上記制御部は、
上記退避領域において上記有効無効提示部が有効の設定であるデータを上記メモリ領域に書き戻す機能を有する
請求項６記載の不揮発性メモリ。
【請求項８】
上記制御部は、
書き戻す退避領域の最大個数を指定する機能を有し、
書き戻し処理にかかる時間を制限するために、前記最大個数を指定されることが可能である
請求項７記載の不揮発性メモリ。
【請求項９】
上記制御部は、
書き戻しコマンドにより書き戻し処理を開始し、処理を完了するときに上記有効無効提示部を無効に設定し、処理の完了を通知する機能を有する
請求項７または８記載の不揮発性メモリ。
【請求項１０】
上記制御部は、
書き戻し中断コマンドを受けて書き戻し処理を中断する機能を有し、
中断された書き戻し処理を、再度上記書き戻しコマンドを受けて再開する
請求項９記載の不揮発性メモリ。
【請求項１１】
上記制御部は、
退避処理の対象とするアドレス領域を設定する機能を有し、
退避処理対象アドレス領域設定コマンドにより、退避処理の対象とするアドレス領域が指示される。
請求項１０記載の不揮発性メモリ。
【請求項１２】
上記データ領域のＥＣＣ領域内に、以前に退避処理をしたアドレスであることを示す退避フラグを格納する領域を有し、
上記制御部は、
上記データ領域に退避領域の訂正済みデータを書き戻すときに、上記退避フラグをセットする
請求項１０または１１記載の不揮発性メモリ。
【請求項１３】
上記制御部は、
データ読み出し時に、上記データ領域のデータ、上記ＥＣＣ領域のＥＣＣと退避フラグを読み出し、読み出したデータに誤りが検出された場合、上記退避領域にアドレスと訂正済みデータが新たに追加されたことに加えて、退避フラグの状態を通知する機能を有する
請求項１２記載の不揮発性メモリ。
【請求項１４】
データを保存するデータ領域と、エラー訂正コード（ＥＣＣ）を保存するためのＥＣＣ領域とを含むメモリ領域と、
上記メモリ領域へのアクセスを制御する制御部と、
上記制御部に対して、少なくとも読み出しを指示する機能および書き込みを指示する機能を含むホスト装置と、を有し、
上記制御部は、
上記データ領域から読み出したデータの誤りを検出して訂正機能を有する誤り検出訂正機能と、
上記ホスト装置から指定されたアドレスのデータおよびＥＣＣを上記メモリ領域から読み出し、誤りを検出した場合には、当該アドレスと訂正済みデータを保持する少なくとも一つの退避領域と、
上記退避領域に保持しているアドレスと訂正済みデータが有効であるか無効であるかを示す有効無効提示部と、を含み、
新たなアドレスと訂正済みデータが上記退避領域に登録された場合には、上記有効無効提示部を有効に設定し、上記退避領域に保持されているデータが不要になった場合には、上記有効無効提示部を無効に設定する
メモリシステム。
【請求項１５】
上記制御部は、
上記メモリ領域にアクセスするように指定されたアドレスと上記退避領域に保持されている上記有効無効提示部が有効に設定されているすべてのアドレスを比較する比較機能を含み、
データ読み出し時に、上記比較機能がアドレスの一致を示した場合には、上記退避領域に保持する訂正済みデータを出力する
請求項１４記載のメモリシステム。
【請求項１６】
上記制御部は、
上記比較機能がアドレスの不一致を示した場合には、上記データ領域からデータ、上記ＥＣＣ領域からＥＣＣを読み出し、上記誤り検出訂正機能でデータの誤りを確認し、訂正不要なデータはそのまま出力し、
誤りを検出した場合には、上記退避領域にアドレスと訂正済みデータを書き込み、上記有効無効提示部を有効に設定し、訂正済みデータを出力する
請求項１５記載のメモリシステム。
【請求項１７】
上記制御部は、
上記退避領域にアドレスと訂正済みデータが新たに追加されたことを上記ホスト装置に通知する機能と、
上記退避領域に空きが無いことを上記ホスト装置に通知する機能と、を有する
請求項１６記載のメモリシステム。
【請求項１８】
上記制御部は、
データ書き込み時に、上記比較機能がアドレスの一致を示した場合には、当該アドレスを保持する上記退避領域の有効無効提示部を無効に設定する機能と、
上記退避領域において上記有効無効提示部が有効の設定であるデータを上記メモリ領域に書き戻す機能と、
書き戻す退避領域の最大個数を指定する機能と、を有し、
上記ホスト装置は、
書き戻し処理にかかる時間を制限するために、前記最大個数を指定することが可能である
請求項１７記載のメモリシステム。
【請求項１９】
上記制御部は、
上記ホスト装置による書き戻しコマンドを受けて書き戻し処理を開始し、処理を完了するときに上記有効無効提示部を無効に設定し、処理の完了を通知する機能と、
上記ホスト装置から書き戻し中断コマンドを受けて書き戻し処理を中断する機能と、を有し、
中断された書き戻し処理を、再度上記ホスト装置からの上記書き戻しコマンドを受けて再開する
請求項１８記載のメモリ装置。
【請求項２０】
上記データ領域のＥＣＣ領域内に、以前に退避処理をしたアドレスであることを示す退避フラグを格納する領域を有し、
上記制御部は、
上記ホスト装置からの退避処理対象アドレス領域設定コマンドにより、退避処理の対象とするアドレス領域が指示され、当該退避処理の対象とするアドレス領域を設定する機能を有し、
上記データ領域に退避領域の訂正済みデータを書き戻すときに、上記退避フラグをセットし、
データ読み出し時に、上記データ領域のデータ、上記ＥＣＣ領域のＥＣＣと退避フラグを読み出し、読み出したデータに誤りが検出された場合、上記退避領域にアドレスと訂正済みデータが新たに追加されたことに加えて、退避フラグの状態を上記ホスト装置に通知し、退避領域に空きが無い場合には、退避領域に空きが無いことを通知する機能を有する
請求項１９記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り訂正機能を有する不揮発性メモリおよびメモリシステムに関するものである。
【背景技術】
【０００２】
不揮発性メモリは電源を切っても記憶内容を保持することができることが特徴であり、保持するデータの信頼性が重要である。
多くの不揮発性メモリではデータの書き込み後、繰り返しのデータ読み出しや、保持期間が長くなるほど、保持しているデータが劣化し、ビット化けによって、正しいデータが読み出せなくなってしまう場合がある。
そのためにエラー訂正符号を付加してデータを書き込み、読み出し時にエラー検出と訂正を行うことによって、データの信頼性を改善している。
【０００３】
不揮発性メモリのエラーの発生確率の例として、非特許文献１に、ある８ＧｂｉｔのＮＡＮＤフラッシュメモリの２つのビットエラーレート（Bit Error Rate）が示されている。
また、データ保持期間に対するビットエラーレートと、読み出し回数に対するビットエラーレートが示されている。
【０００４】
一つ目は書換え回数の上限まで書換えを行ったメモリセルにおいて、２０００時間経過後に発生するビットエラーレートで、その値は1.0E-7程度である。
二つ目は同じく繰り返し回数の上限まで書換えを行ったメモリセルについて、１００００回の繰り返しの読み出し後に発生するビットエラーレートで、その値も1.0E-7程度であることが示されている。
【０００５】
上記のようなデータ化けを起こした不揮発性メモリのセルに再度データを書き戻すことで、データ保持期間がリセットされ、再び正しいデータの保持と読み出しが可能となる。
訂正済みデータを書き戻す処理は、データの保持期間を延ばすために有効な手段である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第３０６８００９号
【特許文献２】特開昭６３−２７１５５５号公報
【特許文献３】特開平５−６３１３号公報
【非特許文献】
【０００７】
【非特許文献１】N. Mielke, T. Marquart, N. Wu, J. Kessenich, H. Beigal, E. Schares, F. Trivedi, E. Goodness, and Leland R. Nevill, “Bit Error Rate in NAND Flash Memories” IEEE CFP08RPS-DCR 46th Annual International Reliability Physics Symp, 2008
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、ホスト装置から見ると、データの書き戻し処理はデータ読み出し時に予期せずに発生する処理であり、ホスト装置からメモリへのアクセスを妨げる要因となる。
特に一定のデータレートでメモリからデータの読み出しを要求するようなアプリケーションでは、このデータの書き戻し処理に対応することは難しい。
そのまま誤ったデータを保持するメモリセルの読み出しが繰り返されれば、データの劣化を更に進め、訂正不可能によるエラーが発生する確率を高めることになる。
【０００９】
特許文献１では、ソフトエラー対策としての技術が記載されている。
この技術では、訂正可能な誤りが発生した場合にはそのアドレスと、訂正済みデータをバッファに保持し、同じアドレスの読み出しデータに誤り訂正不可能のエラーが発生した時に初めて、バッファに保持した訂正済みデータを読み出す。
しかし、特許文献１に記載された技術では、データ誤りが発生しているメモリセルに訂正済みデータを書き戻すことができない。
【００１０】
特許文献２にも、ソフトエラー対策としての技術が記載されている。
この技術では、主記憶からキャッシュメモリにデータを読み出したときに、ＥＣＣで訂正が発生した場合には、訂正が発生したことを示す訂正ビットをセットしておく。そしてキャッシュからデータを追い出す際に、訂正ビットがセットされている場合には、主記憶のデータを訂正する。
しかし、特許文献２に記載された技術では、ＣＰＵのキャッシュメモリ上に読み出される主記憶のデータだけが訂正処理の対象であり、それ以外の主記憶上のデータを訂正することができない。
【００１１】
特許文献３では、メモリから読み出したデータに誤りがある場合に、訂正済みデータとそのアドレスをバッファに保持し、プロセッサからのアクセス終了後にデータを書き戻す技術が記載されている。
しかし、特許文献３に記載された技術では、データの読み出し時には、保持した訂正済みデータのアドレスにアクセスする場合でも、バッファ中の訂正済みデータではなく、必ずメモリセルからデータを読み出す。
したがって、メモリセルへのアクセスが繰り返され、データの劣化が進んだ場合、訂正不可能によるエラーが発生してしまう。この場合、システムは訂正不可能エラーによって、動作を継続できず一時停止し、書き戻し処理を行う必要がある。
【００１２】
本発明は、退避したデータと同じアドレスに読み出しが発生した場合には、退避した訂正済みデータを出力することが可能な不揮発性メモリおよびメモリシステムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の観点の不揮発性メモリは、データを保存するデータ領域と、エラー訂正コード（ＥＣＣ）を保存するためのＥＣＣ領域とを含むメモリ領域と、上記メモリ領域へのアクセスを制御する制御部と、を有し、上記制御部は、上記データ領域から読み出したデータの誤りを検出して訂正機能を有する誤り検出訂正機能と、指定されたアドレスのデータおよびＥＣＣを上記メモリ領域から読み出し、誤りを検出した場合には、当該アドレスと訂正済みデータを保持する少なくとも一つの退避領域と、上記退避領域に保持しているアドレスと訂正済みデータが有効であるか無効であるかを示す有効無効提示部と、を含み、新たなアドレスと訂正済みデータが上記退避領域に登録された場合には、上記有効無効提示部を有効に設定し、上記退避領域に保持されているデータが不要になった場合には、上記有効無効提示部を無効に設定する。
【００１４】
本発明の第１の観点のメモリシステムは、データを保存するデータ領域と、エラー訂正コード（ＥＣＣ）を保存するためのＥＣＣ領域とを含むメモリ領域と、上記メモリ領域へのアクセスを制御する制御部と、上記制御部に対して、少なくとも読み出しを指示する機能および書き込みを指示する機能を含むホスト装置と、を有し、上記制御部は、上記データ領域から読み出したデータの誤りを検出して訂正機能を有する誤り検出訂正機能と、指定されたアドレスのデータおよびＥＣＣを上記メモリ領域から読み出し、誤りを検出した場合には、当該アドレスと訂正済みデータを保持する少なくとも一つの退避領域と、上記退避領域に保持しているアドレスと訂正済みデータが有効であるか無効であるかを示す有効無効提示部と、を含み、新たなアドレスと訂正済みデータが上記退避領域に登録された場合には、上記有効無効提示部を有効に設定し、上記退避領域に保持されているデータが不要になった場合には、上記有効無効提示部を無効に設定する。
【発明の効果】
【００１５】
本発明によれば、退避したデータと同じアドレスに読み出しが発生した場合には、退避した訂正済みデータを出力することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る不揮発性メモリを採用したメモリシステムの構成を示す図である。
【図２】本実施形態に係るホスト装置が発行するコマンドの一例を示す図である。
【図３】本実施形態に係るＥＣＣ領域の形成例を示す図である。
【図４】本実施形態に係る不揮発性メモリにおけるリードコマンド受信時の退避データを上書きしない場合の動作を説明するためのフローチャートである。
【図５】本実施形態に係る不揮発性メモリにおけるリードコマンド受信時の退避データを上書きする場合の動作を説明するためのフローチャートである。
【図６】本実施形態に係る不揮発性メモリにおけるライトコマンド受信時の動作を説明するためのフローチャートである。
【図７】本実施形態に係る不揮発性メモリにおける退避処理対象アドレス設定コマンド(“Correct_address_set“)を受信したときの動作を示すフローチャートである。
【図８】本実施形態に係る不揮発性メモリにおいて訂正済みデータ書き戻し（“Correct_data“）コマンドを受信したときの動作を示すフローチャートである。
【図９】本実施形態に係るメモリシステムが、通常システムに比べてデータ保持特性の改善効果は下げずに、書き戻し処理によるシステムのパフォーマンスへの影響を最小限にすることができることを示す図である。
【図１０】書き戻し処理が中断できない場合と、本実施形態のように書き戻し処理の中断が可能な場合を比較して示す図である。
【図１１】全ての訂正データを書き戻す場合と、指定アドレスの訂正データのみを書き戻す場合を比較して示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態を図面に関連付けて説明する。
なお、説明は以下の順序で行う。
１．メモリシステムの全体構成
２．リードコマンド受信時の動作
３．ライトコマンド受信時の動作
４．退避処理対象アドレス設定コマンド受信時の動作
５．訂正済みデータ書き戻しコマンド受信時の動作
【００１８】
＜１．メモリシステムの全体構成＞
図１は、本発明の実施形態に係る不揮発性メモリを採用したメモリシステムの構成を示す図である。
【００１９】
本実施形態に係るメモリシステム１０は、ホスト装置１００、および不揮発性メモリ２００を含んで構成される。
【００２０】
ホスト装置１００は、不揮発性メモリ２００と接続され、不揮発性メモリ２００の書き込み、読み出しを制御する。
【００２１】
不揮発性メモリ２００は、メモリ領域２１０および制御部２２０により構成される。
メモリ領域２１０は、制御部２２０の制御の下、データ、ＥＣＣ、退避フラグＳＶＦＬＧを記録する。
制御部２２０は、ホスト装置１００からのコマンドＣＭＤを受信し、コマンドＣＭＤに応じて、メモリ領域２１０に対する書き込み、読み出しを実行する。
【００２２】
図２は、本実施形態に係るホスト装置が発行するコマンドの一例を示す図である。
【００２３】
ホスト装置１００のコマンドＣＭＤには、読み出し（リード(Read)）コマンドＲＤ、および書き込み（ライト(Write)）コマンドＷＲＴを含む。
コマンドＣＭＤには、退避処理対象アドレス設定（コレクトアドレスセット(Correct address set)）コマンドＣＡＳ、および退避処理対象アドレス設定解除（コレクトアドレスリセット(Correct address reset)）コマンドＣＡＲを含む。
コマンドＣＭＤには、訂正済みデータ書き戻し（コレクトデータ(Correct data)）コマンドＣＤ、および書き戻し中断（ストップコレクトデータ(Stop correct data)）コマンドＳＣＤを含む。
【００２４】
制御部２２０は、読み出しコマンドＲＤを受けると、メモリ領域２１０の読み出しを行う。
制御部２２０は、書き込みコマンドＷＲＴを受けると、メモリ領域２１０に対する書込みを行う。
制御部２２０は、退避処理対象アドレス設定コマンドＣＡＳを受けると、退避処理対象アドレスの設定を行う。
制御部２２０は、退避処理対象アドレス設定解除コマンドＣＡＲを受けると、退避処理対象アドレスの設置を解除する。
制御部２２０は、訂正済みデータ書き戻しコマンドＣＤを受けると、メモリ領域２１０に訂正済みデータの書き戻しを行う。
制御部２２０は、書き戻し中断コマンドＳＣＤを受けると、書き戻しコマンドの中断を行う。
【００２５】
メモリ領域２１０は、データ領域２１１とＥＣＣ領域２１２により形成される。
メモリ領域２１０は、書き込みデータはデータ領域２１１に書き込まれ、読み出し時には、データ領域２１１からデータが読み出される。
ＥＣＣ領域２１２には、データに対するＥＣＣと、退避フラグＳＶＦＬＧが記録される。
【００２６】
図３は、本実施形態に係るＥＣＣ領域の形成例を示す図である。
ＥＣＣ領域２１２は、図３に示すように、退避フラグＳＶＦＬＧが記録される退避フラグフィールド２１２１、およびＥＣＣが記録されるＥＣＣフィールド２１２２により形成される。
【００２７】
制御部２２０は、コマンドデコーダ２２１、アドレスラッチ２２２、アドレスデコーダ２２３、アドレス比較器２２４、退避処理対象アドレス領域記憶部２２５、退避領域制御部２２６、退避領域２２７、およびメモリ領域制御部２２８を有する。
制御部２２０は、誤り検出・訂正部２２９、読み出しデータバッファ２３０、書き込みデータバッファ２３１、ＥＣＣ生成部２３２、およびデータセレクタ２３３を有する。
【００２８】
コマンドデコーダ２２１は、ホスト装置１００からのコマンドＣＭＤをデコードして、メモリ領域制御部２２８と退避領域制御部２２６に制御信号ＣＴＬを送信する。
【００２９】
アドレスラッチ２２２は、入力されたアドレスを保持するレジスタであり、保持アドレスをアドレスデコーダ２２３およびアドレス比較器２２４に出力する。
【００３０】
アドレスデコーダ２２３は、アドレスラッチ２２２によるアドレスをデコードし、アクセスするメモリ領域２１０の場所をメモリ領域制御部２２８に指示する。
【００３１】
アドレス比較器２２４は、アクセスされるアドレスと、退避領域２２７に記録されている有効無効提示部としての有効フラグＶＬＦＬＧが有効に設定されているすべてのアドレスを比較し、比較結果を退避領域制御部２２６およびデータセレクタ２３３に出力する。
【００３２】
退避処理対象アドレス領域記憶部２２５は、データ訂正発生時に訂正済みデータを退避領域２２７に退避するという一連の処理を実施するアドレス範囲を保持する。
【００３３】
退避領域制御部２２６は、退避領域２２７へのデータの格納および読み出しを制御し、訂正済みデータとアドレスが新たに退避領域に追加されたことをホスト装置１００に通知し、退避領域に空きがことをホスト装置１００に通知する機能を持つ。
退避領域２２７は、訂正済みデータとそのアドレスを記録するエラーアドレスバッファ２２７１と訂正済みデータ格納バッファ２２７２、それらのデータが有効であるかを示す有効フラグ部２２７３により構成され、少なくとも一組以上のデータが記録される。
また、退避領域２２７に同時に記録するアドレス・訂正済みデータの数は、ホスト装置１００が書き戻し処理を開始するまでにアクセスするデータのサイズと、訂正可能エラーの発生率から決まる。
訂正可能エラーの確率は、ビットエラーレート（Bit Error Rate：ＢＥＲ）から訂正不可能エラーの確率を引いたものであり、訂正可能エラーに比べ、訂正不可能エラーが発生する確率は極わずかと考えると、訂正可能エラー＝ＢＥＲと見なすことができる。
先の引用文献の書き換え回数の上限まで書換えを行ったＮＡＮＤフラッシュメモリを例に考える。２０００時間経過後に発生するＢＥＲ（Bit Error Rate）は1.0E-7で、書き戻し処理を開始するまでにアクセスするデータのサイズをＸＭＢとすると、同時に記録する退避アドレス・訂正データの個数は（０．８＊Ｘ）個となる。
たとえば、デジタルスチールカメラで撮影した１枚の写真のデータは数ＭＢであり、一枚のデータの読み出し毎にデータの書き戻しを行えば、書換え寿命にまで使った場合を想定しても退避領域２２７に記録するアドレスと訂正済みデータの数は１０個程度で済む。
【００３４】
メモリ領域制御部２２８は、コマンドデコーダ２２１による制御信号ＣＴＬに応じてメモリ領域２１０に対する書き込み、読み出しを制御する。
【００３５】
誤り検出・訂正部２２９は、メモリ領域２１０から読み出したデータの誤り検出訂正を行う。
【００３６】
読み出しデータバッファ２３０には、誤り検出・訂正部２２９による訂正済みデータが入力される。
読み出しデータバッファ２３０は、退避領域２２７とデータセレクタ２３３にデータを出力する。
【００３７】
書き込みデータバッファ２３１は、外部Ｉ/Ｏから入力されたデータをバッファリングし、データ領域２１１とＥＣＣ生成部２３２に出力する。
【００３８】
ＥＣＣ生成部２３２は、書き込みデータバッファ２３１から入力されたデータから誤り訂正符号を生成し、ＥＣＣ領域２１２に出力する。
【００３９】
データセレクタ２３３は、アドレス比較器２２４がアドレスの一致を示す場合には、退避領域２２７の訂正済みデータ格納バッファ２２７２からのデータを出力し、一致しない場合には読み出しデータバッファ２３０からのデータを出力する。
【００４０】
次に、不揮発性メモリ２００におけるリードコマンド受信時の動作およびライトコマンド受信時の動作について説明する。
【００４１】
＜２．読み出しコマンド受信時の動作＞
図４は、本実施形態に係る不揮発性メモリにおけるリードコマンド受信時の退避データを上書きしない場合の動作を説明するためのフローチャートである。
【００４２】
［読み出し動作（退避データ上書きなし）］
不揮発性メモリ２００において、ホスト装置１００により発行された読み出しコマンドＲＤが制御部２２０にて受信される（ＳＴ１）。
受信した読み出しコマンドＲＤは、コマンドデコーダ２２１においてデコードされ、制御信号ＣＬＴとしてメモリ領域制御部２２８と退避領域制御部２２６に送信される。
また、アドレスラッチ２２２に読み出しアドレスが保持され、その読み出しアドレスはアドレスデコーダ２２３およびアドレス比較器２２４に供給される。
アドレスデコーダ２２３では、アドレスラッチ２２２によるアドレスがデコードされ、アクセスするメモリ領域２１０の場所がメモリ領域制御部２２８に指示される。
【００４３】
アドレス比較器２２４においては、アクセスされるアドレスと、退避領域２２７に記録されている有効フラグＶＬＦＬＧが有効に設定されているすべてのアドレスが比較される（ＳＴ２）。その比較結果は、退避領域制御部２２６およびデータセレクタ２３３に出力される。
そして、ステップＳＴ２において、読み出しアドレスが退避処理対象アドレス領域であるか否かが判断される。
【００４４】
ステップＳＴ２において、読み出しアドレスが退避処理対象外アドレスであると判断された場合には、メモリ領域制御部２２８によりアドレスデコーダ２２３で指示されたアドレスのデータ領域２１１のデータ、ＥＣＣが読み出される（ＳＴ３）。
読み出されたデータは、誤り検出・訂正部２２９で訂正された後に（ＳＴ４）、読み出しデータバッファ２３０に入力され、読み出しデータバッファ２３０からデータセレクタ２３３を通して外部Ｉ/Ｏに出力される（ＳＴ５）。
【００４５】
ステップＳＴ２において、読み出しアドレスが退避処理対象アドレスであると判断された場合、アドレス比較器２２４において、読み出しアドレスと退避領域のエラーアドレスバッファ２２７１に保持されている有効フラグＶＬＦＬＧが有効に設定されているすべてのアドレスが比較される。そして、有効であると設定されている有効フラグＶＬＦＬＧがあるか否かが判断される（ＳＴ６）
ステップＳＴ６において、一致するアドレスが存在すると判断された場合には、退避領域制御部２２６では一致したアドレスの訂正済みデータが退避領域２２７からデータセレクタ２３３に出力される。そして、データセレクタ２３３により退避領域２２７の訂正済みデータが外部Ｉ/Ｏに出力される（ＳＴ７）。
【００４６】
ステップＳＴ６において、一致するアドレスが存在しないと判断された場合には、メモリ領域制御部２２８の制御によりデータ領域２１１からデータ、ＥＣＣ領域２１２からＥＣＣと退避フラグＳＶＦＬが読み出される（ＳＴ８）。
読み出されたデータは、誤り検出・訂正部２２９を通して、読み出しデータバッファ２３０に入力される（ＳＴ９）。ここで、誤り検出・訂正部２２９において、誤りがないと処理されると、データセレクタ２３３を通して読み出しデータバッファ２３０のデータが外部Ｉ/Ｏに出力される（ＳＴ５）。
【００４７】
上記処理中に、読み出しデータに誤りが検出された場合には（ＳＴ９）、読み出しデータバッファ２３０の訂正済みデータとそのアドレスが退避領域２２７に格納されるが、このとき次の処理が行われる。
退避領域制御部２２６において、有効フラグＶＬＦＬＧが無効に設定されている退避領域２２７が存在するか否かが判断される（ＳＴ１０）。
ステップＳＴ１０において、有効フラグＶＬＦＬＧが無効に設定されている退避領域２２７が存在すると判断された場合、有効フラグＶＬＦＬＧが無効に設定されている退避領域２２７に訂正済みデータとそのアドレスが格納される。そして、その有効フラグＶＬＦＬＧが有効に設定され（ＳＴ１１）、退避領域２２７に新たな退避データが登録されたことと、退避フラグＳＶＦＬＧの状態がホスト装置１００に通知される（ＳＴ１２）。
【００４８】
ホスト装置１００は、退避フラグＳＶＦＬＧの状態から、新たに登録された退避データが、以前にも同じアドレスで発生したものであるかを判断することができる。
ホスト装置１００は、状況によって、このようなアドレスのメモリセルを不良セルと判断し、使わないようにすることができる。
【００４９】
訂正済みデータとアドレスを退避領域に格納前（ステップＳＴ１０）と、訂正済みデータとアドレスを退避領域に格納後(ステップＳＴ１３）において、有効フラグＶＬＦＬＧが無効に設定されている退避領域２２７が存在しないと判断された場合には、退避領域に空きが無い事がホスト装置１００に通知される（ＳＴ１４）
【００５０】
［読み出し動作（退避データ上書きあり）］
図５は、本実施形態に係る不揮発性メモリにおけるリードコマンド受信時の退避データを上書きする場合の動作を説明するためのフローチャートである。
【００５１】
図５の処理が図４の処理と異なる点は、ステップＳＴ１０において否定的判断後、ステップＳ１５の処理が行われ、ステップＳＴ１２の処理が行われる点にある。
ステップＳＴ１５においては、有効フラグＶＬＦＬＧが有効に設定されているいずれかの退避領域２２７に、訂正済みデータとそのアドレスが上書きされ、有効フラグＶＬＦＬＧが有効に設定される。その後、上記したステップＳＴ１２に処理に移行する。
【００５２】
＜３．ライトコマンド受信時の動作＞
図６は、本実施形態に係る不揮発性メモリにおけるライトコマンド受信時の動作を説明するためのフローチャートである。
【００５３】
不揮発性メモリ２００において、ホスト装置１００により発行された書き込みコマンドＷＲＴが制御部２２０にて受信される（ＳＴ２１）。
受信した書き込みコマンドＷＲＴは、コマンドデコーダ２２１においてデコードされ、制御信号ＣＬＴとしてメモリ領域制御部２２８と退避領域制御部２２６に送信される。
また、アドレスラッチ２２２に書き込みアドレスが保持され、その書き込みアドレスはアドレスデコーダ２２３およびアドレス比較器２２４に供給される。
アドレスデコーダ２２３では、アドレスラッチ２２２によるアドレスがデコードされ、アクセスするメモリ領域２１０の場所がメモリ領域制御部２２８に指示される。
また、書き込みデータは外部Ｉ/Ｏから書き込みデータバッファ２３１に入力され、ＥＣＣ生成部２３２でＥＣＣが生成される。
コマンドデコーダ２２１により書き込み指示を受けたメモリ領域制御部２２８の制御の下、アドレスデコーダ２２３で示されたアドレスにデータの書き込みが行われる（ＳＴ２２）。
アドレス比較器２２４においては、書き込みアドレスが退避領域２２７に保持されている有効フラグＶＬＦＬＧが有効に設定されているすべてのアドレスと一致するかが調べられる（ＳＴ２３）。
ステップＳＴ２３において、一致すると判断された場合に、退避領域制御部２２６によりそのアドレスの退避領域の有効フラグＶＬＦＬＧが無効に設定される（ＳＴ２４）。
【００５４】
＜４．退避処理対象アドレス設定コマンド受信時の動作＞
図７は、本実施形態に係る不揮発性メモリにおいて退避処理対象アドレス設定（“Correct_address_set”）コマンドを受信したときの動作を示すフローチャートである。
【００５５】
不揮発性メモリ２００において、ホスト装置１００により発行された退避処理対象アドレス設定(“Correct_address_set“)コマンドＣＡＳが制御部２２０にて受信される（ＳＴ３１）。
このコマンドＣＡＳと共に送られてくるデータは退避処理対象アドレスである。退避処理対象アドレスはアドレスラッチ２２２に保持され、退避処理対象アドレス領域記憶部２２５に設定される（ＳＴ３２）。
【００５６】
＜５．訂正済みデータ書き戻しコマンド受信時の動作＞
図８は、本実施形態に係る不揮発性メモリにおいて退訂正済みデータ書き戻し（“Correct_data”）コマンドを受信したときの動作を示すフローチャートである。
【００５７】
不揮発性メモリ２００において、ホスト装置１００により発行された退訂正済みデータ書き戻し（“Correct_data”）コマンドＣＤが制御部２２０にて受信される（ＳＴ４１）。
このコマンドを受信するとコマンドデコーダ２２１においてデコードされ、制御信号ＣＬＴとしてメモリ領域制御部２２８と退避領域制御部２２６に送信される。
退避領域制御部２２６では、有効フラグＶＬＦＬＧがセットされているかがチェックされ、有効な書き戻しデータが存在するか否かが判断される（ＳＴ４２）。
ステップＳＴ４２において、有効フラグＶＬＦＬＧがセットされていないと判断された場合には、処理を終了する。
有効フラグＶＬＦＬＧがセットされていると判断された場合には、コマンドで指定された個数の有効フラグＶＬＦＬが有効に設定されている訂正済みデータの書き戻しが実行されたかを判断する（ＳＴ４３）。
指定された個数が０の場合には、前記処理を有効フラグＶＬＦＬＧが有効に設定されているすべての訂正済みデータに対して書き戻しが行われる。
指定された個数のデータの書き戻しを実行した場合には、処理を終了する。
【００５８】
指定された個数のデータの書き戻しが完了する前に、書き戻し中断(“Stop_correct_data“)コマンドＳＣＤを受信した場合には（ＳＴ４４）、訂正処理を終了する。
ステップＳＴ４４において、書き戻し中断コマンドＳＣＤを受信していないと判断された場合には、次の処理が行われる。
すなわち、ＥＣＣ領域２１２の退避フラグＳＶＦＬＧが設定され、訂正済みデータがデータ領域２１１に書き戻される（ＳＴ４５）、書き戻し終了後、有効フラグＶＬＦＬＧが無効に設定され（ＳＴ４６）。再度有効フラグＶＬＦＬＧが有効に設定されている退避領域２２７が存在する場合には、上記処理が繰り返される。
【００５９】
以上説明したように、本実施形態によれば、以下の効果を得ることができる。
ホスト装置１００からの読み出し要求によって訂正が発生したメモリセルのアドレスやデータを退避領域に保存し、メモリ内で管理することで、ホスト装置１００は訂正が発生したメモリセルの情報を管理する機能を持つ必要がない。
ホスト装置１００からの読み出し要求のアドレスと、退避領域２２７に保存されたアドレスが一致した場合、退避領域からデータを読み出し、メモリセルへアクセスを行わないようにすることが可能である。
これにより、書き戻しよりを行う前に訂正不可能なエラーが発生する可能性を低くし、保持データの信頼性を高めることが可能となる。
書き戻し処理を行うことで、再び正しいデータの保持と読み出しが可能になると同時に、メモリセルの保持期間をリセットすることで、データの信頼性を高めることが可能となる。
【００６０】
図９（Ａ）および（Ｂ）は、本実施形態に係るメモリシステムが、通常システムに比べてデータ保持特性の改善効果は下げずに、書き戻し処理によるシステムのパフォーマンスへの影響を最小限にすることができることを示す図である。
図９（Ａ）は、通常システムの場合であって、訂正データの書き戻し処理によりメモリコントローラから読み出しが待たされることを示している。
これに対して、図９（Ｂ）は、本実施形態に係るシステムにおいて、メモリコントローラからの読み出しが待たされるのではなく、一定のレートでデータが出力可能であることを示している。
本実施形態によれば、ホスト装置１００が書き戻し処理を開始するタイミングを決定することができる。
たとえば、ホスト装置１００がメモリへアクセスしないときに、データの書き戻しを実行する。
【００６１】
図１０（Ａ）および（Ｂ）は、書き戻し処理が中断できない場合と、本実施形態のように書き戻し処理の中断が可能な場合を比較して示す図である。
本実施形態によれば、図１０（Ｂ）に示すように、書き戻し処理をしている最中でも、急にメモリへのアクセスが必要になった場合には、書き戻しを中断でき、アクセス終了後、再度再開することができる。
訂正が発生したメモリセルのアドレスやデータはメモリ内の退避領域で管理されるため、ホストはそれらの情報を管理する機能を持つ必要がない。
【００６２】
図１１（Ａ）および（Ｂ）は、全ての訂正データを書き戻す場合と、指定アドレスの訂正データのみを書き戻す場合を比較して示す図である。
書き戻し処理をするアドレス範囲を選択できるようにすることで、ホストが必要としない書き戻し処理の発生を防ぐことができる。
書き戻し処理を実行しても再び訂正可能エラーが発生するメモリセルはデータの保持特性が悪いメモリセルである可能性がある。
そこで、そのようなメモリセルを検出し、ホストに通知することで、ホストはそのメモリセルの使用を継続するか否かを判断する情報として利用することができ、データの信頼性を高めることにつながる。
【符号の説明】
【００６３】
１０・・・メモリシステム、１００・・・ホスト装置、２００・・・不揮発性メモリ、２１０・・・メモリ領域、２１１・・・データ領域、２１２・・・ＥＣＣ領域、２２０・・・制御部、２２１・・・コマンドデコーダ、２２２・・・アドレスラッチ、２２３・・・アドレスデコーダ、２２４・・・アドレス比較器、２２５・・・退避処理対象アドレス領域記憶部、２２６・・・退避領域制御部、２２７・・・退避領域、２２８・・・メモリ領域制御部、２２９・・・誤り検出・訂正部、２３０・・・読み出しデータバッファ、２３１・・・書き込みバッファ、２３２・・・ＥＣＣ生成部、２３３・・・データセレクタ。
【図１】
2011108306.tif 000003
【図２】
2011108306.tif 000004
【図３】
2011108306.tif 000005
【図４】
2011108306.tif 000006
【図５】
2011108306.tif 000007
【図６】
2011108306.tif 000008
【図７】
2011108306.tif 000009
【図８】
2011108306.tif 000010
【図９】
2011108306.tif 000011
【図１０】
2011108306.tif 000012
【図１１】
2011108306.tif 000013