(57)【要約】【課題】デバイスのコントローラに過大な負荷を掛ることのない、NAND型フラッシュメモリデバイスのリフレッシュ方法の提供。【解決手段】ホストが有する所定のインターフェースを介して指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、該論理ブロックアドレスに対応する物理ブロックに対してデータの書き込みや読み出しを実行するNAND型フラシュメモリデバイスに対し、前記ホストが、該ホストと前記NAND型フラッシュメモリデバイスとの間で定義されてなるリフレッシュコマンドを前記NAND型フラッシュメモリデバイスに発行し、前記NANDフラッシュメモリのコントローラに前記リフレッシュコマンドを解釈するコマンド解釈手段を設けておき、該コマンド解釈手段による解釈に基づき前記リフレッシュを実行する。【選択図】  図１
2010015191.tif 000002
【特許請求の範囲】
【請求項１】
ホストが有する所定のインターフェースを介して指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、該論理ブロックアドレスに対応する物理ブロックに対してデータの書き込みや読み出しを実行するNAND型フラシュメモリデバイスに対し、
前記ホストが、該ホストと前記NAND型フラッシュメモリデバイスとの間で定義されてなるリフレッシュコマンドを前記NAND型フラッシュメモリデバイスに発行し、前記NANDフラッシュメモリに対して前記ホストから指令されたデータの読み出しや書き込みを実行するコントローラに前記リフレッシュコマンドを解釈するコマンド解釈手段を設けておき、該コマンド解釈手段による解釈に基づき前記リフレッシュを実行することを特徴とするNAND型フラッシュメモリのリフレッシュ方法。
【請求項２】
ユーザがシステム電源ｏｎの動作をするたびに前記リフレッシュを実行することを特徴とする請求項１記載のNAND型フラッシュメモリのリフレッシュ方法。
【請求項３】
電池内蔵型のシステムにおいて、ユーザのシステム電源ｏｎ動作の有無に拘わらず、ホストICが有するタイマー機能により、一定時刻若しくは一定時間ごとに前記リフレッシュコマンドを発行して前記リフレッシュを実行することを特徴とする請求項１記載のNAND型フラッシュメモリのリフレッシュ方法。
【請求項４】
リフレッシュは、NANDフラッシュメモリの全論理ブロックアドレスを予め所定の大きさに分割・定義してなるリージョンを１単位として実行することを特徴とする請求項１乃至請求項３いずれか１項記載のNAND型フラッシュメモリのリフレッシュ方法。
【請求項５】
リフレッシュは、論理ブロックを１単位として実行することを特徴とする請求項１乃至請求項３いずれか１項記載のNAND型フラッシュメモリのリフレッシュ方法。
【請求項６】
リフレッシュは、NANDフラッシュメモリに記憶されているファイルを単位として実行することを特徴とする請求項１乃至請求項３いずれか１項記載のNAND型フラッシュメモリ。
【請求項７】
前記リフレッシュコマンドは、コマンドコードとリフレッシュを実行すべき前記リージョン番号からなり、該リフレッシュコマンドを前記ホストの前記インターフェースの端子を介して前記NANDフラッシュメモリのコントローラに送出し、該コントローラが該リージョンを構成する論理ブロックに対応する物理ブロックを、アドレス管理テーブルから割り出しリフレッシュを実行することを特徴とする請求項４記載のNAND型フラッシュメモリのリフレッシュ方法。
【請求項８】
前記リフレッシュコマンドは、コマンドコードとリフレッシュを開始すべき前記NANDフラッシュメモリの論理ブロック番号と論理ブロック数からなり、該リフレッシュコマンドを前記ホストの前記インターフェースの端子を介して前記NANDフラッシュメモリのコントローラに送出し、該コントローラが前記論理ブロック番号に対応する物理ブロック番号をアドレス管理テーブルから割り出しリフレッシュを実行することを特徴とする請求項５記載のNAND型フラッシュメモリのリフレッシュ方法。
【請求項９】
前記リフレッシュコマンドは、コマンドコードと前記ファイルデータを記憶している論理セクターアドレスとセクター長からなり、該リフレッシュコマンドを前記ホストの前記インターフェースの端子を介して前記NANDフラッシュメモリのコントローラに送出し、該コントローラが該論理セクターアドレスに対応する物理ブロックをアドレス管理テーブルから割り出しリフレッシュを実行することを特徴とする請求項６記載のNAND型フラッシュメモリのリフレッシュ方法。
【請求項１０】
前記リフレッシュコマンドは、コマンドコードと論理ページアドレスとページ長からなり、該リフレッシュコマンドを前記ホストの前記インターフェースの端子を介して前記NANDフラッシュメモリのコントローラに送出し、該コントローラが該論理ページアドレスに対応する物理ブロックをアドレス管理テーブルから割り出しリフレッシュを実行することを特徴とする請求項１乃至請求項３、若しくは請求項６のいずれか１項記載のNANDフラッシュメモリのリフレッシュ方法。
【請求項１１】
ホストからの要求に基づくメディアアクセス実行中にタイマーイベントが発生した場合であって、リフレッシュ対象物理ブロックが複数存在する場合、ファームウエアにより、リフレッシュを、物理ブロック単位で、一定の規則的（regular）なタイムインターバルで実行することを特徴とする請求項３記載のリフレッシュ方法。
【請求項１２】
前記インターフェースは、NANDインターフェース、IDEインターフェース、USBインターフェース若しくはメモリインターフェースのいずれかであることを特徴とする請求項１乃至請求項１１いずれか１項記載のリフレッシュ方法。
【請求項１３】
前記NANDフラッシュメモリと前記コントローラは、ワンパッケージICで構成されていることを特徴とする請求項1乃至請求項１２いずれか１項記載のリフレッシュ方法。
【請求項１４】
ホストICのNANDインターフェースを介して指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、該論理ブロックアドレスに対応する物理ブロックに対してデータの書き込みや読み出しを実行するNAND型フラシュメモリデバイスであって、
該NAND型フラッシュメモリデバイスは、NANDフラッシュメモリと、該NANDフラッシュメモリに対し前記ホストICからの指令に基づきデータの書き込みや読み出しを実行するコントローラを具備するワンパッケージICで構成されており、
前記ホストICからの指令に基づき、前記コントローラが、前記NANDフラッシュメモリに記憶されているデータをリフレッシュするように構成されていることを特徴とするNAND型フラシュメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、NANDフラッシュメモリのリフレッシュ方法及びNAND型フラッシュメモリデバイスに関する。
【背景技術】
【０００２】
NANDフラッシュメモリとそのコントローラをワンパッケージにしたNAND型フラッシュメモリデバイスが知られている。このデバイスは、ホストＩCが有する所定のインターフェースと電気的、機械的に接続されて使用される。インターフェースは、例えば、NANDインターフェース、IDEインターフェース、USBインターフェースなどである。このNANDフラッシュメモリデバイスは、ホストICのインターフェースから発行されるｗｒｉｔｅコマンドやｒｅａｄコマンドで指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、その論理ブロックアドレスに対応する物理ブロックアドレスをコントローラ内に存在する論理ブロック−物理ブロック管理テーブル（アドレス管理テーブル）を参照して割り出し、割り出された物理ブロックアドレスにデータを書き込んだり、データの読み出しを実行している。また、NANDフラッシュメモリ特有のエラー訂正回路もコントローラに具備されており、データ読み出したときに、データ書き込み時のエラーがあったことが判明した場合は、エラー訂正回路により訂正済みのデータがホストICに送出される。
【０００３】
コントローラをデバイスＩＣに同梱することにより、ホストＩＣに、論理ブロック−物理ブロック管理テーブルやエラー訂正回路が不要となり、様々な用途に使用されており、今後も多くの用途が期待されている。
【０００４】
例えば、メモリに音楽データを記録し、ホストＩＣが専らこのデータを読み出し再生する音楽プレーヤが市販されており、また各種業務用ゲーム機に使用できるが、NANDフラッシュメモリの場合、データの読み出しを頻繁に行うと、リードディスターブエラー(read disturb error)により、データの一部が変化してしまう場合がある。このリードディスターブエラーは、データの読み出し対象となった選択セルからデータが読み出される際、非選択セル（データ読み出し対象となっていないページのセル）の浮遊ゲートに電荷が注入されてしまい、これにより非選択セルが弱くプログラムされたのと同じ状態になるために生じるものであり、読み出し回数が増えるに従い、より多くのメモリセルが影響を受ける。さらには、書き込み時のエラーと異なり、エラー訂正回路によるデータエラーの訂正が効かないといった深刻な問題を生じ得る。
【０００５】
このリードディスターブエラーに対処するため、該エラーが生じない特別な回路を予め用意したり、電荷の減少したセル単体を個別に探し出して電荷を注入しエラーデータが読み出されないようにする方法などが提案されているが、回路や処理が複雑で高価となり、実用的ではない。
【特許文献１】特開１０−２２８７８３
【特許文献２】特開２００２−１５０７８３
【特許文献３】特開２００４−３２６８６７
【特許文献４】特許第３６４１０６６号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、NAND型フラッシュメモリデバイスのリードディスターブエラーを有効に防止し得るリフレッシュ方法を提供することにある。特に、デバイスのコントローラに過大な負荷を掛ることのないリフレッシュ方法を提供することを目的とする。その他の目的は、明細書、図面、特に特許請求の範囲から自ずと明らかとなろう。
【課題を解決するための手段】
【０００７】
上記課題解決のため、本発明は、請求項記載の解決手段を提供する。
【発明を実施するための最良の形態】
【０００８】
以下、本発明を実施するための最良の形態について図面を用いて説明するが、本発明は特許請求の範囲内において種々の形態を採ることができ、下記実施形態に限定されないことはいうまでもない。
【０００９】
図１は、NAND型フラッシュメモリデバイスの内部ブロックと、その使用環境（システム）例を表している。尚、本願で「NAND型フラッシュメモリデバイス」とは、NANDフラッシュメモリとコントローラを包含する概念であり、また「システム」とは、以下に述べるホストICと前記NAND型フラッシュメモリデバイスを包含し、所定の目的のために動作する構成をいう。
【００１０】
図示するように、NAND型フラッシュメモリデバイス１０（必要に応じてデバイス１０という）は、ホストIC２とNANDインターフェースで接続されて使用される。NAND型フラッシュメモリデバイス１０は、NANDフラッシュメモリ１１と、ホストIC２の指令に基づき該NANDフラッシュメモリ１１からデータの読み出しや書き込みを実行するコントローラ１２を具備する。NANDフラッシュメモリ１１とコントローラ１２は、それぞれのダイ（die）が基板上で結線され、ワンパッケージICとして構成されている。
【００１１】
NANDインターフェース１２３は、ホストIC２のNANDインターフェース（図示せず）と各種信号線で結合され、データの書き込み指令や読み出し指令を受け、また読み出したデータをホストIC２に送出する。バッファメモリ１２２はホストIC２から送出された書き込み用データをNANDフラッシュメモリ１１に書き込む際の緩衝手段である。ECC１２１はエラー訂正回路であり、書き込み時にエラー訂正符号を作出するエンコーダ（図示せず）とNANDフラッシュメモリ１１から読み出されたデータに含まれるエラー訂正符号をデコードするデコーダ（図示せず）を含む。データ書き込み時はエンコーダによりエラー訂正符号を作出する。書き込み指令を受けたデータはセクターのデータ部に、エラー訂正符号は冗長部に、NANDインターフェース１２４を介して書き込まれる。
【００１２】
一方、ホストIC２から指令を受けて読み出されたデータはNANDインターフェース１２４を介してECC１２１に送られ、ここで冗長部に記憶していたエラー訂正符号がデコードされ、エラーがあった場合は該エラー訂正符号を用いて訂正されて後、バッファメモリ１２２及びNANDインターフェース１２３を介してホストIC２に送出される。
【００１３】
尚、本NAND型フラッシュメモリデバイス１０は、ホストIC２からの書き込みコマンド（ｗｒｉｔｅコマンドという）、または読み出しコマンド（ｒｅａｄコマンドという）で指定されたアドレスを、NANDフラッシュメモリ１１の論理ブロックアドレスとして、その論理ブロックアドレスに対応する物理ブロックアドレスを、論理ブロックアドレスと物理ブロックアドレスの関係が記録されているアドレス管理テーブル（図示せず）から割り出して、該割り出された物理ブロックにデータを書き込み、或いはデータを読み出す。
【００１４】
尚、ｗｒｉｔｅコマンドやｒｅａｄコマンドは、システムの標準コマンドであり、該コマンドを表す所定のコマンドコードが、アドレスやデータととともに、NANDインターフェースの有するI／O端子からNAND型フラッシュメモリデバイス１０に送出される。
【００１５】
（リフレッシュコマンド）
ホストIC２とNAND型フラッシュメモリデバイス１０との間で、リフレッシュコマンドであることを示すコマンドコードとして、例えば５５ｈ（ｈは１６進法であることを表す）を定義する。コントラー１２の制御プログラム（ファームウエア）には、該コマンドを解釈するコマンド解釈手段と該解釈に基づきリフレッシュを実行するためのルーチンプログラムを組み込んでおく。
【００１６】
（ファームウエアによるリフレッシュ）
リフレッシュ対象はユーザデータ領域、即ち、論理ブロックと対応付けされる全ての論理ブロックとすることができる（ただし予備の空きブロックを除く）。本発明のリフレッシュは、専らホストIC２からの指令に基づくものとする。この指令は、システム（例えば音楽プレーヤ）の電源がｏｎされたときに実行することができる。一度に全部の論理ブロックアドレスを指定してもよいが、NANDフラッシュメモリの容量が大きいときは、予めユーザデータ領域を複数の領域（リージョン／region）に分割定義しておき、リージョンごとにリフレッシュを実行しても良い。例えば、ユーザデータ領域として、論理ブロック番号が０から７９９９までの８０００あったとする（この他前記予備ブロックが別に設けられているものとする）。論理ブロック番号０から９９９までを第１リージョン、続いて１０００から１９９９までを第２リージョン、２０００から２９９９までを第３リージョン、以降同じく、・・・７０００から７９９９までを第８リージョンとしたとき、電源がｏｎされるごとに、第１リージョンから第２リージョン、第３リージョンと順にリフレッシュしてもよい。
【００１７】
ホストIC２からリレッシュコマンドが発行されたとき、コントローラ１２は、指定された論理ブロック番号に対応する物理ブロック番号から、NANDインターフェース１２４を介してデータを読み出す。読み出したデータはエラー訂正回路（ECC１２１）で訂正した後一旦バッファメモリ１２２に待避させる。続いてNANDフラッシュメモリ１１の前記予備ブロックに、ECC１２１を介して１ページずつデータを転送し書き込む。１ブロック分のデータ転送が終了したら、データを書き写す前のブロック（当初データが書かれていたリフレッシュ対象となったブロック）のデータを消去し、アドレス管理テーブルを最新の対応関係に更新する。これを１リージョン分、そのリージョンを構成する全ブロックについて実行する。当該時点でリフラッシュを完了したリージョン番号を、コントローラ１２の所定の箇所またはNANDフラッシュメモリ１１の管理領域に不揮発的に記憶させておく。次回電源ｏｎ時は、このリージョン情報を元に、次のリージョンをリフレッシュし、以降これを繰り返し実行すればよい。  
【００１８】
上記で、１リージョンを１０００のブロックとしたが、これよりも小さくしてよいことは言うまでもない。リージョンごと大きさが異なっても良い。また、リフレッシュ対象となったブロックのデータを、コントローラ１２側に読み出すことなく、NANDフラッシュメモリ１１内のバッファ（図示せず）に一時待避させ、空きブロックに書き込んでもよい。また、電源をｏｎしたときではなく、ｏｆｆとしたときに実行しても良い。たとえば、ユーザがシステムの電源をｏｆｆとしたとき（たとえば電源ボタンをｏｆｆとする動作をしたとき）、電源ｏｎ時に点灯するLEDを消灯させるが、内部動作でリフレッシュを実行してからシステムを休止させてもよい。リフレッシュ実行時にユーザが再度電源をｏｎしたときは、リフレッシュを終了してからユーザの設定（例えばユーザの指定した曲の演奏）に従えばよい。このように設定しても、リフレッシュ時間が短ければユーザが支障を感じることはない。
【００１９】
また電池が内蔵されている音楽プレーヤなどのシステムにおいては、ユーザが電源ｏｎするか否かに拘わらず、ホストIC２が管理する内部タイマー（図示せず）の動作により、毎日一定時刻に、または一定時間間隔ごとにリフレッシュを実行するようシステムを構築してもよい。このときも、リフレッシュ実行中にユーザが電源をｏｎし、曲の演奏（プレイという）を指示したとしても、リフレッシュが有効に終了してからユーザの指示に従えばよい。
【００２０】
ホストIC２からの要求に基づくメディアアクセス（データ読み出し）実行中にタイマーイベントが発生した場合であって、リフレッシュ対象物理ブロックが複数存在する場合、ファームウエアにより、リフレッシュを、物理ブロック単位で、一定の規則的（regular）なタイムインターバルで実行することが好ましい。例えば、１物理ブロックあたりのリフレッシュ時間はせいぜい１００ｍｓ（ミリ秒）程度であるから、リフレッシュ間隔（一の物理ブロックのリフレッシュ開始から次の物理ブロックのリフレッシュ開始まで）を、例えば１秒に設定する。即ち、１秒おきに、メディアアクセスに割り込んで、物理ブロック単位で、リフレッシュを時分割処理する。このようにすれば、リフレッシュ対象ブロックが複数存在する場合でも、ホストIC２に対するデータ転送中にデータが途切れ、ユーザに不快感を与えたりするなど、プレイに支障が生じることがない。特に、NANDフラッシュメモリ１１に記憶されているデータが音楽や動画などのコンテンツであり、多数の物理ブロックがリフレッシュ対象であったとしても、物理ブロックごと時分割にリフレッシュを実行すれば、プレイ中のデータ転送レート一定に保持することができる。
【００２１】
また常時電源がｏｎされているようなシステムにおいては、システムが稼動しない時間帯を見計らって、毎日一定時刻にリフレッシュを実行するよう構成してもよい。
【００２２】
さらに、前記リージョンごとのホストIC２からのｒｅａｄ回数を、該ホストIC２がカウント・記憶しておき、予め設定した閾値を超えたリージョンのみ（実際にはそのリージョンを構成する物理ブロック）をリフレッシュしても良い。また、NANDフラッシュメモリ１１の論理ブロック番号（ユーザデータ領域）ごとのホストIC2からのｒｅａｄ回数を、該ホストIC2がカウント・記憶しておき、ｒｅａｄ回数が予め設定した閾値を超えた論理ブロックに対応する物理ブロックをリフレッシュしてもよい。この２例の場合、システム稼動上ｒｅａｄが頻繁に発生することが予め分かっている、一つ又は複数のリージョン若しくは論理ブロックのｒｅａｄ回数をカウント・記憶しておき、ｒｅａｄ回数が予め設定した閾値を超えたリージョンや論理ブロックに対応する物理ブロックをリフレッシュするのでもよい。
【００２３】
上記の例では、リフレッシュコマンドを、該コマンドを表す前記コマンドコードに続けて、リフレッシュすべきリージョン番号で指定し（便宜上、リージョンリフレッシュコマンドという）、或いは、リフレッシュを開始すべき論理ブロック番号とリフレッシュすべき論理ブロック数を指定することにより発行すること（便宜上、ブロックリフレシュコマンドという）が好ましいが、NAND型フラッシュメモリデバイス２で使用されているSector Readコマンドの例に倣い、リフレッシュコマンドコードに続けて、リフレッシュすべきNANDフラッシュメモリ１１の論理セクターアドレス（読み出し開始アドレス）とセクター長（読み出すべきセクター数）で指定してもよい（便宜上、論理セクターアドレス指定リフレッシュコマンドという）。尚ここでいう論理セクターアドレスは、そのセクターを含む論理ページアドレスと論理ブロック番号を含む。
【００２４】
たとえば、上記リージョンや論理ブロック以外に、一つ又は複数の適宜なデータオブジェクト（ファイル）に対するｒｅａｄ回数をホストIC2がカウント・記憶しておき、予め設定した閾値を超えたデータオブジェクトを記憶している論理ブロックに対応する物理ブロックをリフレッシュするようにしてもよい。この場合も、ｒｅａｄが頻繁に発生することが予め分かっている一つ又は複数のデータオブジェクトに対するｒｅａｄ回数をホストIC2がカウント・記憶しておき、予め設定した閾値を超えたデータオブジェクトを構成する論理ブロックに対応する物理ブロックをリフレッシュする。データオブジェクトの場合、そのデータは所定の論理ブロックの途中のセクターから記憶され、さらに他の論理ブロックの途中まで記憶されている場合がある。このようにリフレッシュを、論理セクターアドレスとセクター長で指定すれば、リフレッシュ対象をデータオブジェクトで指定する場合に好適である。しかしこの場合でも、リフレッシュは、そのオブジェクトデータを含む全ブロックが対象となることはいうまでもない。
【００２５】
上記の例の他、NANDフラッシュメモリ１１の論理ページアドレスとページ長で指定しても良い（便宜上、論理ページアドレス指定リフレッシュコマンドという）。
【００２６】
（変形例）
上記の実施例では、ホストIC２とデバイス１０をNANDインターフェースで接続しているが、コマンドコードとアドレスによりデータの読み出しや書き込みを実行するインターフェースであれば、IDEインターフェースやUSBインターフェース、その他どのようなインターフェースでも良い。
【００２７】
また、コントローラ２１とNANDフラッシュメモリ２２はそれぞれ独立に構成してもよい。例えば、NANDフラッシュメモリ２２をｍｉｃｒｏＳＤカードのように、その一つの辺に電極を配した薄板のカード状に構成し、コントローラ２１（IC）と接続されているソケットに、挿抜可能に構成しても良い。このようにすれば、該メモリ２２に故障が生じた場合、新しいものと差し替えて使用することができ、その後も当該システムを有効に活用することができる。
【００２８】
また、上述した４つのコマンドのコマンドコードは同一でも良いし、互いに異なるように定義してもよい。
【００２９】
さらには、ホストをパーソナルコンピュータ（PC）で構成し、NAND型フラッシュメモリデバイス１０とホストを、本願目的を達成する所定のインターフェースによって着脱式に接続してもよい。例えば、デバイス１０をUSBインターフェース準拠のEXPRESS CARDやメモリカードインターフェース準拠の各種メモリカードで構成してもよい。 但し、この場合リフレッシュ実行中にユーザが知らないでデバイス10をホストから抜き取るとメモリが破損する場合があるので、デバイス１０を使用中に実行することが望ましい。
【００３０】
（発明の効果）
以上述べたように、本発明によれば、システムの種類に臨機応変に対応してリフレッシュ可能なNAND型フラッシュメモリデバイス及びそのシステムを提供することができる。また、本発明により、データの読み出しが頻繁に実行されるシステムにおいて、従来の各種インターフェース準拠のNAND型フラッシュメモリデバイスのファームウエアを一部改良するのみで、複雑な回路を設けることなく、NANDフラッシュメモリのリフレッシュを効率よく実行することができ、リードディスターブエラーがなく、安全且つ適切なシステムの運用を図ることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明のNAND型フラッシュメモリデバイス内部ブロック例とシステムの概観例である。
【図２】リフレッシュを実行するNANDフラッシュメモリのリージョン例である。
【符号の説明】
【００３２】
２：ホストＩＣ、１０：NAND型フラッシュメモリデバイス、１１：NANDフラッシュメモリ、１２：コントローラ、
【図１】
2010015191.tif 000003
【図２】
2010015191.tif 000004
【手続補正書】
【提出日】平成20年7月3日(2008.7.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
例えば、メモリに音楽データを記録し、ホストＩＣが専らこのデータを読み出し再生する音楽プレーヤが市販されており、また各種業務用ゲーム機に使用できるが、NANDフラッシュメモリの場合、データの読み出しを頻繁に行うと、リードディスターブエラー(read disturb error)により、データの一部が変化してしまう場合がある。このリードディスターブエラーは、データの読み出し対象となった選択セルからデータが読み出される際、非選択セル（データ読み出し対象となっていないページのセル）の浮遊ゲートに電荷が注入されてしまい、これにより非選択セルが弱くプログラムされたのと同じ状態になるために生じるものであり、読み出し回数が増えるに従い、より多くのメモリセルが影響を受ける。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
（発明の効果）
以上述べたように、本発明によれば、システムの種類に臨機応変に対応可能な、NANDフラッシュメモリのリフレッシュ方法及び該方法を使用するNAND型フラッシュメモリデバイスを提供することができる。また、本発明により、データの読み出しが頻繁に実行されるシステムにおいて、従来の各種インターフェース準拠のNAND型フラッシュメモリデバイスのファームウエアを一部改良するのみで、複雑な回路を設けることなく、NANDフラッシュメモリのリフレッシュを効率よく実行することができ、リードディスターブエラーがなく、安全且つ適切なシステムの運用を図ることができる。
2010015191.tif 000005
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2010015191.tif 000006
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１８
【補正方法】変更
【補正の内容】
【図１８】
2010015191.tif 000007
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図１９
【補正方法】変更
【補正の内容】
【図１９】
2010015191.tif 000008
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
LRU番号は、最初にデータが記録された仮想セグメントに“０”が設定され、その後も最新にデータが記録された仮想セグメントに“０”が設定される。そして、それ以前にデータが記録された仮想セグメントのLRU番号は、新たにLRU番号“０”が設定されるごとに、原則として１つだけインクリメントされるが、グループLBAが同一の仮想セグメントが複数存在する場合は、それら全部に同一のLRU番号が設定される。そして、事後、最大LRU番号が設定された仮想セグメントの記録根拠である物理セグメントより、その記憶しているデータがフラッシュメモリに書き込まれる。
【手続補正書】
【提出日】平成20年7月3日(2008.7.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、NANDフラッシュメモリのリフレッシュ方法及びNAND型フラッシュメモリデバイスに関する。
【背景技術】
【０００２】
NANDフラッシュメモリとそのコントローラをワンパッケージにしたNAND型フラッシュメモリデバイスが知られている。このデバイスは、ホストＩCが有する所定のインターフェースと電気的、機械的に接続されて使用される。インターフェースは、例えば、NANDインターフェース、IDEインターフェース、USBインターフェースなどである。このNANDフラッシュメモリデバイスは、ホストICのインターフェースから発行されるｗｒｉｔｅコマンドやｒｅａｄコマンドで指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、その論理ブロックアドレスに対応する物理ブロックアドレスをコントローラ内に存在する論理ブロック−物理ブロック管理テーブル（アドレス管理テーブル）を参照して割り出し、割り出された物理ブロックアドレスにデータを書き込んだり、データの読み出しを実行している。また、NANDフラッシュメモリ特有のエラー訂正回路もコントローラに具備されており、データ読み出したときに、データ書き込み時のエラーがあったことが判明した場合は、エラー訂正回路により訂正済みのデータがホストICに送出される。
【０００３】
コントローラをデバイスＩＣに同梱することにより、ホストＩＣに、論理ブロック−物理ブロック管理テーブルやエラー訂正回路が不要となり、様々な用途に使用されており、今後も多くの用途が期待されている。
【０００４】
例えば、メモリに音楽データを記録し、ホストＩＣが専らこのデータを読み出し再生する音楽プレーヤが市販されており、また各種業務用ゲーム機に使用できるが、NANDフラッシュメモリの場合、データの読み出しを頻繁に行うと、リードディスターブエラー(read disturb error)により、データの一部が変化してしまう場合がある。このリードディスターブエラーは、データの読み出し対象となった選択セルからデータが読み出される際、非選択セル（データ読み出し対象となっていないページのセル）の浮遊ゲートに電荷が注入されてしまい、これにより非選択セルが弱くプログラムされたのと同じ状態になるために生じるものであり、読み出し回数が増えるに従い、より多くのメモリセルが影響を受ける。
【０００５】
このリードディスターブエラーに対処するため、該エラーが生じない特別な回路を予め用意したり、電荷の減少したセル単体を個別に探し出して電荷を注入しエラーデータが読み出されないようにする方法などが提案されているが、回路や処理が複雑で高価となり、実用的ではない。
【特許文献１】特開１０−２２８７８３
【特許文献２】特開２００２−１５０７８３
【特許文献３】特開２００４−３２６８６７
【特許文献４】特許第３６４１０６６号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、NAND型フラッシュメモリデバイスのリードディスターブエラーを有効に防止し得るリフレッシュ方法を提供することにある。特に、デバイスのコントローラに過大な負荷を掛ることのないリフレッシュ方法を提供することを目的とする。その他の目的は、明細書、図面、特に特許請求の範囲から自ずと明らかとなろう。
【課題を解決するための手段】
【０００７】
上記課題解決のため、本発明は、請求項記載の解決手段を提供する。
【発明を実施するための最良の形態】
【０００８】
以下、本発明を実施するための最良の形態について図面を用いて説明するが、本発明は特許請求の範囲内において種々の形態を採ることができ、下記実施形態に限定されないことはいうまでもない。
【０００９】
図１は、NAND型フラッシュメモリデバイスの内部ブロックと、その使用環境（システム）例を表している。尚、本願で「NAND型フラッシュメモリデバイス」とは、NANDフラッシュメモリとコントローラを包含する概念であり、また「システム」とは、以下に述べるホストICと前記NAND型フラッシュメモリデバイスを包含し、所定の目的のために動作する構成をいう。
【００１０】
図示するように、NAND型フラッシュメモリデバイス１０（必要に応じてデバイス１０という）は、ホストIC２とNANDインターフェースで接続されて使用される。NAND型フラッシュメモリデバイス１０は、NANDフラッシュメモリ１１と、ホストIC２の指令に基づき該NANDフラッシュメモリ１１からデータの読み出しや書き込みを実行するコントローラ１２を具備する。NANDフラッシュメモリ１１とコントローラ１２は、それぞれのダイ（die）が基板上で結線され、ワンパッケージICとして構成されている。
【００１１】
NANDインターフェース１２３は、ホストIC２のNANDインターフェース（図示せず）と各種信号線で結合され、データの書き込み指令や読み出し指令を受け、また読み出したデータをホストIC２に送出する。バッファメモリ１２２はホストIC２から送出された書き込み用データをNANDフラッシュメモリ１１に書き込む際の緩衝手段である。ECC１２１はエラー訂正回路であり、書き込み時にエラー訂正符号を作出するエンコーダ（図示せず）とNANDフラッシュメモリ１１から読み出されたデータに含まれるエラー訂正符号をデコードするデコーダ（図示せず）を含む。データ書き込み時はエンコーダによりエラー訂正符号を作出する。書き込み指令を受けたデータはセクターのデータ部に、エラー訂正符号は冗長部に、NANDインターフェース１２４を介して書き込まれる。
【００１２】
一方、ホストIC２から指令を受けて読み出されたデータはNANDインターフェース１２４を介してECC１２１に送られ、ここで冗長部に記憶していたエラー訂正符号がデコードされ、エラーがあった場合は該エラー訂正符号を用いて訂正されて後、バッファメモリ１２２及びNANDインターフェース１２３を介してホストIC２に送出される。
【００１３】
尚、本NAND型フラッシュメモリデバイス１０は、ホストIC２からの書き込みコマンド（ｗｒｉｔｅコマンドという）、または読み出しコマンド（ｒｅａｄコマンドという）で指定されたアドレスを、NANDフラッシュメモリ１１の論理ブロックアドレスとして、その論理ブロックアドレスに対応する物理ブロックアドレスを、論理ブロックアドレスと物理ブロックアドレスの関係が記録されているアドレス管理テーブル（図示せず）から割り出して、該割り出された物理ブロックにデータを書き込み、或いはデータを読み出す。
【００１４】
尚、ｗｒｉｔｅコマンドやｒｅａｄコマンドは、システムの標準コマンドであり、該コマンドを表す所定のコマンドコードが、アドレスやデータととともに、NANDインターフェースの有するI／O端子からNAND型フラッシュメモリデバイス１０に送出される。
【００１５】
（リフレッシュコマンド）
ホストIC２とNAND型フラッシュメモリデバイス１０との間で、リフレッシュコマンドであることを示すコマンドコードとして、例えば５５ｈ（ｈは１６進法であることを表す）を定義する。コントラー１２の制御プログラム（ファームウエア）には、該コマンドを解釈するコマンド解釈手段と該解釈に基づきリフレッシュを実行するためのルーチンプログラムを組み込んでおく。
【００１６】
（ファームウエアによるリフレッシュ）
リフレッシュ対象はユーザデータ領域、即ち、論理ブロックと対応付けされる全ての論理ブロックとすることができる（ただし予備の空きブロックを除く）。本発明のリフレッシュは、専らホストIC２からの指令に基づくものとする。この指令は、システム（例えば音楽プレーヤ）の電源がｏｎされたときに実行することができる。一度に全部の論理ブロックアドレスを指定してもよいが、NANDフラッシュメモリの容量が大きいときは、予めユーザデータ領域を複数の領域（リージョン／region）に分割定義しておき、リージョンごとにリフレッシュを実行しても良い。例えば、ユーザデータ領域として、論理ブロック番号が０から７９９９までの８０００あったとする（この他前記予備ブロックが別に設けられているものとする）。論理ブロック番号０から９９９までを第１リージョン、続いて１０００から１９９９までを第２リージョン、２０００から２９９９までを第３リージョン、以降同じく、・・・７０００から７９９９までを第８リージョンとしたとき、電源がｏｎされるごとに、第１リージョンから第２リージョン、第３リージョンと順にリフレッシュしてもよい。
【００１７】
ホストIC２からリレッシュコマンドが発行されたとき、コントローラ１２は、指定された論理ブロック番号に対応する物理ブロック番号から、NANDインターフェース１２４を介してデータを読み出す。読み出したデータはエラー訂正回路（ECC１２１）で訂正した後一旦バッファメモリ１２２に待避させる。続いてNANDフラッシュメモリ１１の前記予備ブロックに、ECC１２１を介して１ページずつデータを転送し書き込む。１ブロック分のデータ転送が終了したら、データを書き写す前のブロック（当初データが書かれていたリフレッシュ対象となったブロック）のデータを消去し、アドレス管理テーブルを最新の対応関係に更新する。これを１リージョン分、そのリージョンを構成する全ブロックについて実行する。当該時点でリフラッシュを完了したリージョン番号を、コントローラ１２の所定の箇所またはNANDフラッシュメモリ１１の管理領域に不揮発的に記憶させておく。次回電源ｏｎ時は、このリージョン情報を元に、次のリージョンをリフレッシュし、以降これを繰り返し実行すればよい。  
【００１８】
上記で、１リージョンを１０００のブロックとしたが、これよりも小さくしてよいことは言うまでもない。リージョンごと大きさが異なっても良い。また、リフレッシュ対象となったブロックのデータを、コントローラ１２側に読み出すことなく、NANDフラッシュメモリ１１内のバッファ（図示せず）に一時待避させ、空きブロックに書き込んでもよい。また、電源をｏｎしたときではなく、ｏｆｆとしたときに実行しても良い。たとえば、ユーザがシステムの電源をｏｆｆとしたとき（たとえば電源ボタンをｏｆｆとする動作をしたとき）、電源ｏｎ時に点灯するLEDを消灯させるが、内部動作でリフレッシュを実行してからシステムを休止させてもよい。リフレッシュ実行時にユーザが再度電源をｏｎしたときは、リフレッシュを終了してからユーザの設定（例えばユーザの指定した曲の演奏）に従えばよい。このように設定しても、リフレッシュ時間が短ければユーザが支障を感じることはない。
【００１９】
また電池が内蔵されている音楽プレーヤなどのシステムにおいては、ユーザが電源ｏｎするか否かに拘わらず、ホストIC２が管理する内部タイマー（図示せず）の動作により、毎日一定時刻に、または一定時間間隔ごとにリフレッシュを実行するようシステムを構築してもよい。このときも、リフレッシュ実行中にユーザが電源をｏｎし、曲の演奏（プレイという）を指示したとしても、リフレッシュが有効に終了してからユーザの指示に従えばよい。
【００２０】
ホストIC２からの要求に基づくメディアアクセス（データ読み出し）実行中にタイマーイベントが発生した場合であって、リフレッシュ対象物理ブロックが複数存在する場合、ファームウエアにより、リフレッシュを、物理ブロック単位で、一定の規則的（regular）なタイムインターバルで実行することが好ましい。例えば、１物理ブロックあたりのリフレッシュ時間はせいぜい１００ｍｓ（ミリ秒）程度であるから、リフレッシュ間隔（一の物理ブロックのリフレッシュ開始から次の物理ブロックのリフレッシュ開始まで）を、例えば１秒に設定する。即ち、１秒おきに、メディアアクセスに割り込んで、物理ブロック単位で、リフレッシュを時分割処理する。このようにすれば、リフレッシュ対象ブロックが複数存在する場合でも、ホストIC２に対するデータ転送中にデータが途切れ、ユーザに不快感を与えたりするなど、プレイに支障が生じることがない。特に、NANDフラッシュメモリ１１に記憶されているデータが音楽や動画などのコンテンツであり、多数の物理ブロックがリフレッシュ対象であったとしても、物理ブロックごと時分割にリフレッシュを実行すれば、プレイ中のデータ転送レート一定に保持することができる。
【００２１】
また常時電源がｏｎされているようなシステムにおいては、システムが稼動しない時間帯を見計らって、毎日一定時刻にリフレッシュを実行するよう構成してもよい。
【００２２】
さらに、前記リージョンごとのホストIC２からのｒｅａｄ回数を、該ホストIC２がカウント・記憶しておき、予め設定した閾値を超えたリージョンのみ（実際にはそのリージョンを構成する物理ブロック）をリフレッシュしても良い。また、NANDフラッシュメモリ１１の論理ブロック番号（ユーザデータ領域）ごとのホストIC2からのｒｅａｄ回数を、該ホストIC2がカウント・記憶しておき、ｒｅａｄ回数が予め設定した閾値を超えた論理ブロックに対応する物理ブロックをリフレッシュしてもよい。この２例の場合、システム稼動上ｒｅａｄが頻繁に発生することが予め分かっている、一つ又は複数のリージョン若しくは論理ブロックのｒｅａｄ回数をカウント・記憶しておき、ｒｅａｄ回数が予め設定した閾値を超えたリージョンや論理ブロックに対応する物理ブロックをリフレッシュするのでもよい。
【００２３】
上記の例では、リフレッシュコマンドを、該コマンドを表す前記コマンドコードに続けて、リフレッシュすべきリージョン番号で指定し（便宜上、リージョンリフレッシュコマンドという）、或いは、リフレッシュを開始すべき論理ブロック番号とリフレッシュすべき論理ブロック数を指定することにより発行すること（便宜上、ブロックリフレシュコマンドという）が好ましいが、NAND型フラッシュメモリデバイス２で使用されているSector Readコマンドの例に倣い、リフレッシュコマンドコードに続けて、リフレッシュすべきNANDフラッシュメモリ１１の論理セクターアドレス（読み出し開始アドレス）とセクター長（読み出すべきセクター数）で指定してもよい（便宜上、論理セクターアドレス指定リフレッシュコマンドという）。尚ここでいう論理セクターアドレスは、そのセクターを含む論理ページアドレスと論理ブロック番号を含む。
【００２４】
たとえば、上記リージョンや論理ブロック以外に、一つ又は複数の適宜なデータオブジェクト（ファイル）に対するｒｅａｄ回数をホストIC2がカウント・記憶しておき、予め設定した閾値を超えたデータオブジェクトを記憶している論理ブロックに対応する物理ブロックをリフレッシュするようにしてもよい。この場合も、ｒｅａｄが頻繁に発生することが予め分かっている一つ又は複数のデータオブジェクトに対するｒｅａｄ回数をホストIC2がカウント・記憶しておき、予め設定した閾値を超えたデータオブジェクトを構成する論理ブロックに対応する物理ブロックをリフレッシュする。データオブジェクトの場合、そのデータは所定の論理ブロックの途中のセクターから記憶され、さらに他の論理ブロックの途中まで記憶されている場合がある。このようにリフレッシュを、論理セクターアドレスとセクター長で指定すれば、リフレッシュ対象をデータオブジェクトで指定する場合に好適である。しかしこの場合でも、リフレッシュは、そのオブジェクトデータを含む全ブロックが対象となることはいうまでもない。
【００２５】
上記の例の他、NANDフラッシュメモリ１１の論理ページアドレスとページ長で指定しても良い（便宜上、論理ページアドレス指定リフレッシュコマンドという）。
【００２６】
（変形例）
上記の実施例では、ホストIC２とデバイス１０をNANDインターフェースで接続しているが、コマンドコードとアドレスによりデータの読み出しや書き込みを実行するインターフェースであれば、IDEインターフェースやUSBインターフェース、その他どのようなインターフェースでも良い。
【００２７】
また、コントローラ２１とNANDフラッシュメモリ２２はそれぞれ独立に構成してもよい。例えば、NANDフラッシュメモリ２２をｍｉｃｒｏＳＤカードのように、その一つの辺に電極を配した薄板のカード状に構成し、コントローラ２１（IC）と接続されているソケットに、挿抜可能に構成しても良い。このようにすれば、該メモリ２２に故障が生じた場合、新しいものと差し替えて使用することができ、その後も当該システムを有効に活用することができる。
【００２８】
また、上述した４つのコマンドのコマンドコードは同一でも良いし、互いに異なるように定義してもよい。
【００２９】
さらには、ホストをパーソナルコンピュータ（PC）で構成し、NAND型フラッシュメモリデバイス１０とホストを、本願目的を達成する所定のインターフェースによって着脱式に接続してもよい。例えば、デバイス１０をUSBインターフェース準拠のEXPRESS CARDやメモリカードインターフェース準拠の各種メモリカードで構成してもよい。 但し、この場合リフレッシュ実行中にユーザが知らないでデバイス10をホストから抜き取るとメモリが破損する場合があるので、デバイス１０を使用中に実行することが望ましい。
【００３０】
（発明の効果）
以上述べたように、本発明によれば、システムの種類に臨機応変に対応可能な、NANDフラッシュメモリのリフレッシュ方法及び該方法を使用するNAND型フラッシュメモリデバイスを提供することができる。また、本発明により、データの読み出しが頻繁に実行されるシステムにおいて、従来の各種インターフェース準拠のNAND型フラッシュメモリデバイスのファームウエアを一部改良するのみで、複雑な回路を設けることなく、NANDフラッシュメモリのリフレッシュを効率よく実行することができ、リードディスターブエラーがなく、安全且つ適切なシステムの運用を図ることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明のNAND型フラッシュメモリデバイス内部ブロック例とシステムの概観例である。
【図２】リフレッシュを実行するNANDフラッシュメモリのリージョン例である。
【符号の説明】
【００３２】
２：ホストＩＣ、１０：NAND型フラッシュメモリデバイス、１１：NANDフラッシュメモリ、１２：コントローラ、
【手続補正書】
【提出日】平成20年10月16日(2008.10.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＮＡＮＤフラッシュメモリとこれを制御するコントローラを有し、該コントローラが、ホストが有する所定のインターフェースを介して指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、該論理ブロックアドレスに対応する物理ブロックに対してデータの書き込みや読み出しを実行するNAND型フラシュメモリデバイスにおけるＮＡＮＤフラッシュメモリのリフレッシュ方法であって、
前記コントローラは、
ホストから発行される、コマンドコードと前記ＮＡＮＤフラシュメモリに記憶されている所定データオブジェクトの先頭論理セクターアドレスとセクター長からなるリフレッシュコマンドに基づき、当該データオブジェクトを記憶している全物理ブロックをアドレス管理テーブルから割り出して、その物理ブロックの全データを、NANDフラッシュメモリ内のバッファに一時待避させてから、予備ブロック若しくは空きブロックに書き込むことによりリフレッシュを実行することを特徴とするNANDフラッシュメモリのリフレッシュ方法。
【請求項２】
ホストは、データオブジェクトごとのｒｅａｄ回数を記憶し、ｒｅａｄ回数が予め設定した閾値を超えたデータオブジェクトに対してリフレッシュコマンドを発行することを特徴とする請求項１記載のNANDフラッシュメモリのリフレッシュ方法。
【請求項３】
ホストは、電源が投入されたときに前記コントローラにリフレッシュコマンドを発行してリフレッシュを実行させることを特徴とする請求項１又は２記載のNANDフラッシュメモリのリフレッシュ方法。
【請求項４】
ユーザがホストの電源OFFの動作をしたときから実際に電源を遮断するまでの間に、リフレッシュを実行することを特徴とする請求項１又は２記載のNANDフラッシュメモリのリフレッシュ方法。
【請求項５】
毎日一定時刻または一定時間間隔ごとに、ホストの有するタイマー機能に基づいて前記リフレッシュコマンドを発行することを特徴とする請求項２記載のＮＡＮＤフラッシュメモリのリフレッシュ方法。
【請求項６】
リフレッシュ実行中にユーザがホストに対してメディアアクセスの指示をしたときは、リフレッシュを終了してから当該ユーザの指示に従うことを特徴とする請求項３乃至５いずれか１項記載のNANDフラッシュメモリのリフレッシュ方法。
【請求項７】
メディアアクセス実行中にリフレッシュコマンドが発行された場合であって、リフレッシュ対象物理ブロックが複数存在する場合、物理ブロック単位で、一定のタイムインターバルでリフレッシュを実行することを特徴とする請求項５記載のNANDフラッシュメモリのリフレッシュ方法。
【請求項８】
リフレッシュコマンドは、NANDインターフェース、IDEインターフェース、USBインターフェース若しくはメモリインターフェースのいずれかの外部インターフェースから発行されるものであることを特徴とする請求項１乃至請求項７いずれか１項記載のNANDフラッシュメモリのリフレッシュ方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、NANDフラッシュメモリのリフレッシュ方法に関する。
【背景技術】
【０００２】
NANDフラッシュメモリとそのコントローラをワンパッケージにしたNAND型フラッシュメモリデバイスが知られている。このデバイスは、ホストＩCが有する所定のインターフェースと電気的、機械的に接続されて使用される。インターフェースは、例えば、NANDインターフェース、IDEインターフェース、USBインターフェースなどである。このNANDフラッシュメモリデバイスは、ホストICのインターフェースから発行されるｗｒｉｔｅコマンドやｒｅａｄコマンドで指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、その論理ブロックアドレスに対応する物理ブロックアドレスをコントローラ内に存在する論理ブロック−物理ブロック管理テーブル（アドレス管理テーブル）を参照して割り出し、割り出された物理ブロックアドレスにデータを書き込んだり、データの読み出しを実行している。また、NANDフラッシュメモリ特有のエラー訂正回路もコントローラに具備されており、データ読み出したときに、データ書き込み時のエラーがあったことが判明した場合は、エラー訂正回路により訂正済みのデータがホストICに送出される。
【０００３】
コントローラをデバイスＩＣに同梱することにより、ホストＩＣに、論理ブロック−物理ブロック管理テーブルやエラー訂正回路が不要となり、様々な用途に使用されており、今後も多くの用途が期待されている。
【０００４】
例えば、メモリに音楽データを記録し、ホストＩＣが専らこのデータを読み出し再生する音楽プレーヤが市販されており、また各種業務用ゲーム機に使用できるが、NANDフラッシュメモリの場合、データの読み出しを頻繁に行うと、リードディスターブエラー(read disturb error)により、データの一部が変化してしまう場合がある。このリードディスターブエラーは、データの読み出し対象となった選択セルからデータが読み出される際、非選択セル（データ読み出し対象となっていないページのセル）の浮遊ゲートに電荷が注入されてしまい、これにより非選択セルが弱くプログラムされたのと同じ状態になるために生じるものであり、読み出し回数が増えるに従い、より多くのメモリセルが影響を受ける。
【０００５】
このリードディスターブエラーに対処するため、該エラーが生じない特別な回路を予め用意したり、電荷の減少したセル単体を個別に探し出して電荷を補正しエラーデータが読み出されないようにする方法などが提案されているが、回路や処理が複雑で高価となり、実用的ではない。
【特許文献１】特開１０−２２８７８３
【特許文献２】特開２００２−１５０７８３
【特許文献３】特開２００４−３２６８６７
【特許文献４】特許第３６４１０６６号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、NAND型フラッシュメモリデバイスのリードディスターブエラーを有効に防止し得るリフレッシュ方法を提供することにある。特に、デバイスのコントローラに過大な負荷を掛ることのないリフレッシュ方法を提供することを目的とする。その他の目的は、明細書、図面、特に特許請求の範囲から自ずと明らかとなろう。
【課題を解決するための手段】
【０００７】
上記課題解決のため、本発明は、請求項記載の解決手段を提供する。
【発明を実施するための最良の形態】
【０００８】
以下、本発明を実施するための最良の形態について図面を用いて説明するが、本発明は特許請求の範囲内において種々の形態を採ることができ、下記実施形態に限定されないことはいうまでもない。
【０００９】
図１は、NAND型フラッシュメモリデバイスの内部ブロックと、その使用環境（システム）例を表している。尚、本願で「NAND型フラッシュメモリデバイス」とは、NANDフラッシュメモリとコントローラを包含する概念であり、また「システム」とは、以下に述べるホストICと前記NAND型フラッシュメモリデバイスを包含し、所定の目的のために動作する構成をいう。
【００１０】
図示するように、NAND型フラッシュメモリデバイス１０（必要に応じてデバイス１０という）は、ホストIC２とNANDインターフェースで接続されて使用される。NAND型フラッシュメモリデバイス１０は、NANDフラッシュメモリ１１と、ホストIC２の指令に基づき該NANDフラッシュメモリ１１からデータの読み出しや書き込みを実行するコントローラ１２を具備する。NANDフラッシュメモリ１１とコントローラ１２は、それぞれのダイ（die）が基板上で結線され、ワンパッケージICとして構成されている。
【００１１】
NANDインターフェース１２３は、ホストIC２のNANDインターフェース（図示せず）と各種信号線で結合され、データの書き込み指令や読み出し指令を受け、また読み出したデータをホストIC２に送出する。バッファメモリ１２２はホストIC２から送出された書き込み用データをNANDフラッシュメモリ１１に書き込む際の緩衝手段である。ECC１２１はエラー訂正回路であり、書き込み時にエラー訂正符号を作出するエンコーダ（図示せず）とNANDフラッシュメモリ１１から読み出されたデータに含まれるエラー訂正符号をデコードするデコーダ（図示せず）を含む。データ書き込み時はエンコーダによりエラー訂正符号を作出する。書き込み指令を受けたデータはセクターのデータ部に、エラー訂正符号は冗長部に、NANDインターフェース１２４を介して書き込まれる。
【００１２】
一方、ホストIC２から指令を受けて読み出されたデータはNANDインターフェース１２４を介してECC１２１に送られ、ここで冗長部に記憶していたエラー訂正符号がデコードされ、エラーがあった場合は該エラー訂正符号を用いて訂正されて後、バッファメモリ１２２及びNANDインターフェース１２３を介してホストIC２に送出される。
【００１３】
尚、本NAND型フラッシュメモリデバイス１０は、ホストIC２からの書き込みコマンド（ｗｒｉｔｅコマンドという）、または読み出しコマンド（ｒｅａｄコマンドという）で指定されたアドレスを、NANDフラッシュメモリ１１の論理ブロックアドレスとして、その論理ブロックアドレスに対応する物理ブロックアドレスを、論理ブロックアドレスと物理ブロックアドレスの関係が記録されているアドレス管理テーブル（図示せず）から割り出して、該割り出された物理ブロックにデータを書き込み、或いはデータを読み出す。
【００１４】
尚、ｗｒｉｔｅコマンドやｒｅａｄコマンドは、システムの標準コマンドであり、該コマンドを表す所定のコマンドコードが、アドレスやデータとともに、NANDインターフェースの有するI／O端子からNAND型フラッシュメモリデバイス１０に送出される。
【００１５】
（リフレッシュコマンド）
ホストIC２とNAND型フラッシュメモリデバイス１０との間で、リフレッシュコマンドであることを示すコマンドコードとして、例えば５５ｈ（ｈは１６進法であることを表す）を定義する。コントラー１２の制御プログラム（ファームウエア）には、該コマンドを解釈するコマンド解釈手段と該解釈に基づきリフレッシュを実行するためのルーチンプログラムを組み込んでおく。
【００１６】
（ファームウエアによるリフレッシュ）
リフレッシュ対象はユーザデータ領域、即ち、論理ブロックと対応付けされる全ての論理ブロックとすることができる（ただし、予備のブロックを除く）。本発明のリフレッシュは、専らホストIC２からの指令に基づくものとする。この指令は、システム（例えば音楽プレーヤ）の電源がｏｎされたときに実行することができる。一度に全部の論理ブロックアドレスを指定してもよいが、NANDフラッシュメモリの容量が大きいときは、予めユーザデータ領域を複数の領域（リージョン／region）に分割定義しておき、リージョンごとにリフレッシュを実行しても良い。例えば、図２に示すように、ユーザデータ領域として、論理ブロック番号が０から７９９９までの８０００あったとする（この他前記予備ブロックが別に設けられているものとする）。論理ブロック番号０から９９９までを第１リージョン、続いて１０００から１９９９までを第２リージョン、２０００から２９９９までを第３リージョン、以降同じく、・・・７０００から７９９９までを第８リージョンとしたとき、電源がｏｎされるごとに、第１リージョンから第２リージョン、第３リージョンと順にリフレッシュしてもよい。
【００１７】
ホストIC２からリレッシュコマンドが発行されたとき、コントローラ１２は、指定された論理ブロック番号に対応する物理ブロック番号から、NANDインターフェース１２４を介してデータを読み出す。読み出したデータはエラー訂正回路（ECC１２１）で訂正した後一旦バッファメモリ１２２に待避させる。続いてNANDフラッシュメモリ１１の前記予備ブロックに、ECC１２１を介して１ページずつデータを転送し書き込む。１ブロック分のデータ転送が終了したら、データを書き写す前のブロック（当初データが書かれていたリフレッシュ対象となったブロック）のデータを消去し、アドレス管理テーブルを最新の対応関係に更新する。これを１リージョン分、そのリージョンを構成する全ブロックについて実行する。当該時点でリフラッシュを完了したリージョン番号を、コントローラ１２の所定の箇所またはNANDフラッシュメモリ１１の管理領域に不揮発的に記憶させておく。次回電源ｏｎ時は、このリージョン情報を元に、次のリージョンをリフレッシュし、以降これを繰り返し実行すればよい。  
【００１８】
上記で、１リージョンを１０００のブロックとしたが、これよりも小さくしてよいことは言うまでもない。リージョンごと大きさが異なっても良い。また、リフレッシュ対象となったブロックのデータを、コントローラ１２側に読み出すことなく、NANDフラッシュメモリ１１内のバッファ（図示せず）に一時待避させ、空きブロックに書き込んでもよい。また、電源をｏｎしたときではなく、ｏｆｆとしたときに実行しても良い。たとえば、ユーザがシステムの電源をｏｆｆとしたとき（たとえば電源ボタンをｏｆｆとする動作をしたとき）、電源ｏｎ時に点灯するLEDを消灯させるが、内部動作でリフレッシュを実行してからシステムを休止させてもよい。リフレッシュ実行時にユーザが再度電源をｏｎしたときは、リフレッシュを終了してからユーザの設定（例えばユーザの指定した曲の演奏）に従えばよい。このように設定しても、リフレッシュ時間が短ければユーザが支障を感じることはない。
【００１９】
また電池が内蔵されている音楽プレーヤなどのシステムにおいては、ユーザが電源ｏｎするか否かに拘わらず、ホストIC２が管理する内部タイマー（図示せず）の動作により、毎日一定時刻に、または一定時間間隔ごとにリフレッシュを実行するようシステムを構築してもよい。このときも、リフレッシュ実行中にユーザが電源をｏｎし、曲の演奏（プレイという）を指示したとしても、リフレッシュが有効に終了してからユーザの指示に従えばよい。
【００２０】
ホストIC２からの要求に基づくメディアアクセス（データ読み出し）実行中にタイマーイベントが発生した場合であって、リフレッシュ対象物理ブロックが複数存在する場合、ファームウエアにより、リフレッシュを、物理ブロック単位で、一定の規則的（regular）なタイムインターバルで実行することが好ましい。例えば、１物理ブロックあたりのリフレッシュ時間はせいぜい１００ｍｓ（ミリ秒）程度であるから、リフレッシュ間隔（一の物理ブロックのリフレッシュ開始から次の物理ブロックのリフレッシュ開始まで）を、例えば１秒に設定する。即ち、１秒おきに、メディアアクセスに割り込んで、物理ブロック単位で、リフレッシュを時分割処理する。このようにすれば、リフレッシュ対象ブロックが複数存在する場合でも、ホストIC２に対するデータ転送中にデータが途切れ、ユーザに不快感を与えたりするなど、プレイに支障が生じることがない。特に、NANDフラッシュメモリ１１に記憶されているデータが音楽や動画などのコンテンツであり、多数の物理ブロックがリフレッシュ対象であったとしても、物理ブロックごと時分割にリフレッシュを実行すれば、プレイ中のデータ転送レート一定に保持することができる。
【００２１】
また常時電源がｏｎされているようなシステムにおいては、システムが稼動しない時間帯を見計らって、毎日一定時刻にリフレッシュを実行するよう構成してもよい。
【００２２】
さらに、前記リージョンごとのホストIC２からのｒｅａｄ回数を、該ホストIC２がカウント・記憶しておき、予め設定した閾値を超えたリージョンのみ（実際にはそのリージョンを構成する物理ブロック）をリフレッシュしても良い。また、NANDフラッシュメモリ１１の論理ブロック番号（ユーザデータ領域）ごとのホストIC２からのｒｅａｄ回数を、該ホストIC２がカウント・記憶しておき、ｒｅａｄ回数が予め設定した閾値を超えた論理ブロックに対応する物理ブロックをリフレッシュしてもよい。この２例の場合、システム稼動上ｒｅａｄが頻繁に発生することが予め分かっている、一つ又は複数のリージョン若しくは論理ブロックのｒｅａｄ回数をカウント・記憶しておき、ｒｅａｄ回数が予め設定した閾値を超えたリージョンや論理ブロックに対応する物理ブロックをリフレッシュするのでもよい。
【００２３】
上記の例では、リフレッシュコマンドを、該コマンドを表す前記コマンドコードに続けて、リフレッシュすべきリージョン番号で指定し（便宜上、リージョンリフレッシュコマンドという）、或いは、リフレッシュを開始すべき論理ブロック番号とリフレッシュすべき論理ブロック数を指定することにより発行すること（便宜上、ブロックリフレシュコマンドという）が好ましいが、NAND型フラッシュメモリデバイス２で使用されているSector Readコマンド？？の例に倣い、リフレッシュコマンドコードに続けて、リフレッシュすべきNANDフラッシュメモリ１１の論理セクターアドレス（読み出し開始アドレス）とセクター長（読み出すべきセクター数）で指定してもよい（便宜上、論理セクターアドレス指定リフレッシュコマンドという）。尚ここでいう論理セクターアドレスは、そのセクターを含む論理ページアドレスと論理ブロック番号を含む。
【００２４】
たとえば、上記リージョンや論理ブロック以外に、一つ又は複数の適宜なデータオブジェクト（ファイル）に対するｒｅａｄ回数をホストIC２がカウント・記憶しておき、予め設定した閾値を超えたデータオブジェクトを記憶している論理ブロックに対応する物理ブロックをリフレッシュするようにしてもよい。この場合も、ｒｅａｄが頻繁に発生することが予め分かっている一つ又は複数のデータオブジェクトに対するｒｅａｄ回数をホストIC２がカウント・記憶しておき、予め設定した閾値を超えたデータオブジェクトを構成する論理ブロックに対応する物理ブロックをリフレッシュする。データオブジェクトの場合、そのデータは所定の論理ブロックの途中のセクターから記憶され、さらに他の論理ブロックの途中まで記憶されている場合がある。このようにリフレッシュを、論理セクターアドレスとセクター長で指定すれば、リフレッシュ対象をデータオブジェクトで指定する場合に好適である。しかしこの場合でも、リフレッシュは、そのオブジェクトデータを含む全ブロックが対象となることはいうまでもない。
【００２５】
上記の例の他、NANDフラッシュメモリ１１の論理ページアドレスとページ長で指定しても良い（便宜上、論理ページアドレス指定リフレッシュコマンドという）。
【００２６】
（変形例）
上記の実施例では、ホストIC２とデバイス１０をNANDインターフェースで接続しているが、コマンドコードとアドレスによりデータの読み出しや書き込みを実行するインターフェースであれば、IDEインターフェースやUSBインターフェース、その他どのようなインターフェースでも良い。
【００２７】
また、コントローラ２１とNANDフラッシュメモリ２２はそれぞれ独立に構成してもよい。例えば、NANDフラッシュメモリ２２をｍｉｃｒｏＳＤカードのように、その一つの辺に電極を配した薄板のカード状に構成し、コントローラ２１（IC）と接続されているソケットに、挿抜可能に構成しても良い。このようにすれば、該メモリ２２に故障が生じた場合、新しいものと差し替えて使用することができ、その後も当該システムを有効に活用することができる。
【００２８】
また、上述した４つのコマンドのコマンドコードは同一でも良いし、互いに異なるように定義してもよい。
【００２９】
さらには、ホストをパーソナルコンピュータ（PC）で構成し、NAND型フラッシュメモリデバイス１０とホストを、本願目的を達成する所定のインターフェースによって着脱式に接続してもよい。例えば、デバイス１０をUSBインターフェース準拠のEXPRESS CARDやメモリカードインターフェース準拠の各種メモリカードで構成してもよい。 但し、この場合リフレッシュ実行中にユーザが知らないでデバイス１０をホストから抜き取るとメモリが破損する場合があるので、デバイス１０を使用中に実行することが望ましい。
【００３０】
（発明の効果）
以上述べたように、本発明によれば、音楽プレーヤなど、頻繁にデータの読み出しが行われるシステムに内蔵されたNANDフラッシュメモリのリードディスターブエラーを有効に防止することができる。また、NAND型フラッシュメモリデバイスのファームウエアを一部改良するのみで、複雑な回路を設けることなく、NANDフラッシュメモリのリフレッシュを効率よく実行することができ、リードディスターブエラーがなく、安全且つ適切なシステムの運用を図ることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明のNAND型フラッシュメモリデバイス内部ブロック例とシステムの概観例である。
【図２】リフレッシュを実行するNANDフラッシュメモリのリージョン例である。
【符号の説明】
【００３２】
２：ホストＩＣ、１０：NAND型フラッシュメモリデバイス、１１：NANDフラッシュメモリ、１２：コントローラ、
【手続補正書】
【提出日】平成20年12月2日(2008.12.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＮＡＮＤフラッシュメモリとこれを制御するコントローラを有し、該コントローラが、ホストが有する所定のインターフェースを介して指定されたアドレスをNANDフラッシュメモリの論理ブロックアドレスとして、該論理ブロックアドレスに対応する物理ブロックに対してデータの書き込みや読み出しを実行するNAND型フラシュメモリデバイスにおけるＮＡＮＤフラッシュメモリのリフレッシュ方法であって、
ホストは、
ＮＡＮＤフラッシュメモリに記憶されてなるデータオブジェクトごとのｒｅａｄ回数を記憶するとともに、電源が投入されたときに、コマンドコードとｒｅａｄ回数が予め設定した閾値を超えたデータオブジェクトの先頭論理セクターアドレスとセクター長からなるリフレッシュコマンドを、コントローラに発行し、
コントローラは、
ホストから発行された、前記リフレシュコマンドで指定されたリフレッシュ範囲を含む物理ブロックをアドレス管理テーブルから割り出して、その物理ブロックの全データを、NANDフラッシュメモリ内のバッファに一時待避させてから、１ページずつ予備ブロック若しくは空きブロックに書き込み、１ブロック分のデータ転送が終了したら、データを書き写す前のリフレッシュ対象となったブロックのデータを消去し、アドレス管理テーブルを最新の対応関係に更新することによりリフレッシュを実行することを特徴とするNANDフラッシュメモリのリフレッシュ方法。
【請求項２】
リフレッシュ実行中にユーザがホストに対してメディアアクセスの指示をしたときは、リフレッシュを終了してから当該ユーザの指示に従うことを特徴とする請求項１項記載のNANDフラッシュメモリのリフレッシュ方法。
【請求項３】
リフレッシュコマンドは、NANDインターフェース、IDEインターフェース、USBインターフェース若しくはメモリインターフェースのいずれかの外部インターフェースから発行されるものであることを特徴とする請求項１又は２記載のNANDフラッシュメモリのリフレッシュ方法。
【手続補正書】
【提出日】平成21年1月9日(2009.1.9)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010015191.tif 000009
【図２】
2010015191.tif 000010
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
このリードディスターブエラーに対処するため、該エラーが生じない特別な回路を予め用意したり、電荷の増加したセル単体を個別に探し出して電荷を補正しエラーデータが読み出されないようにする方法などが提案されているが、回路や処理が複雑で高価となり、実用的ではない。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
上記の例では、リフレッシュコマンドを、該コマンドを表す前記コマンドコードに続けて、リフレッシュすべきリージョン番号で指定し（便宜上、リージョンリフレッシュコマンドという）、或いは、リフレッシュを開始すべき論理ブロック番号とリフレッシュすべき論理ブロック数を指定することにより発行すること（便宜上、ブロックリフレシュコマンドという）が好ましいが、NAND型フラッシュメモリデバイス２で使用されているSector Readコマンドの例に倣い、リフレッシュコマンドコードに続けて、リフレッシュすべきNANDフラッシュメモリ１１の論理セクターアドレス（読み出し開始アドレス）とセクター長（読み出すべきセクター数）で指定してもよい（便宜上、論理セクターアドレス指定リフレッシュコマンドという）。尚ここでいう論理セクターアドレスは、そのセクターを含む論理ページアドレスと論理ブロック番号を含む。