(57)【要約】【課題】  従来のバッドブロック管理方法の課題を解決したフラッシュメモリを提供する。【解決手段】  本発明のフラッシュメモリは、複数のブロックを含むメモリアレイ１１０と、メモリアレイ１１０へのプログラムおよび消去が行われたときのステータスを記憶する管理メモリ１５４と、ステータスに基づきメモリアレイ内にバッドブロックが存在するか否かを判定する第１の判定手段と、バッドブロックが存在すると判定されたとき、バッドブロック内の一部がバッドページであるか否かを判定する第２の判定手段と、バッドブロック内の一部がバッドページと判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を記憶するルックアップテーブル１５２とを有する。【選択図】  図４
2015103093.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリのバッドブロック管理方法であって、
メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、
バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップと、
を有するバッドブロック管理方法。
【請求項２】
前記設定するステップは、バッドページを含む第１のページをスペアブロック内の対応するページに変換するためのアドレス変換情報を設定し、かつバッドページを含まない第２のページがバッドブロックをアクセスされるようにアドレス変換情報を設定する、請求項１に記載のバッドブロック管理方法。
【請求項３】
前記設定するステップは、バッドページを境界にバッドブロックを２つのページグループに分割し、かつバッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、請求項１または２に記載のバッドブロック管理方法。
【請求項４】
前記設定するステップは、書換え可能な不揮発性記憶部にアドレス変換情報を記憶する、請求項１ないし３いずれか１つに記載のバッドブロック管理方法。
【請求項５】
バッドブロック管理方法はさらに、バッドブロックとスペアブロックとを１つのブロックに統合するステップを含む、請求項１ないし４いずれか１つに記載のバッドブロック管理方法。
【請求項６】
前記統合するステップは、バッドブロックの消去が行われたことに応答して実行される、請求項５に記載のバッドブロック管理方法。
【請求項７】
前記統合するステップは、コマンドを実行することにより実行される、請求項５に記載のバッドブロック管理方法。
【請求項８】
ＮＡＮＤ型フラッシュメモリが実行するバッドブロック管理プログラムであって、
メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、
バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップと、
を有するバッドブロック管理プログラム。
【請求項９】
前記設定するステップは、バッドページを境界にバッドブロックを２つのページグループに分割し、バッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、請求項８に記載のバッドブロック管理プログラム。
【請求項１０】
複数のブロックを含むメモリアレイと、
前記メモリアレイへのプログラムおよび消去が行われたときのステータスを記憶する記憶手段と、
前記ステータスに基づきメモリアレイ内にバッドブロックが存在するか否かを判定する第１の判定手段と、
バッドブロックが存在すると判定されたとき、前記ステータスに基づきバッドブロック内の一部にバッドページがあるか否かを判定する第２の判定手段と、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定する設定手段と、
を有するＮＡＮＤ型のフラッシュメモリ。
【請求項１１】
前記設定手段は、バッドページを含む第１のページをスペアブロック内の対応するページに変換するためのアドレス変換情報を設定し、かつバッドページを含まない第２のページがバッドブロックをアクセスされるようにアドレス変換情報を設定する、請求項１０に記載のフラッシュメモリ。
【請求項１２】
前記第２の記憶手段は、バッドページを境界にバッドブロックを２つのページグループに分割し、バッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、請求項１０または１１に記載のフラッシュメモリ。
【請求項１３】
フラッシュメモリはさらに、アドレス情報を入力する入力手段と、前記入力手段からのアドレス情報がバッドブロックに一致するか否かを判定する第３の判定手段と、バッドブロックに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する変換手段とを有する、請求項１０ないし１２いずれか１つに記載のフラッシュメモリ。
【請求項１４】
フラッシュメモリはさらに、前記入力手段からのアドレス情報がバッドページに該当するか否かを判定する第４の判定手段とを有し、前記変換手段は、バッドページに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する、請求項１３に記載のフラッシュメモリ。
【請求項１５】
前記変換手段は、第４の判定手段によってアドレス情報がバッドページに該当しないと判定されたとき、前記変換手段は、前記アドレス情報を前記アドレス変換情報に従いアドレス変換しない、請求項１３または１４に記載のフラッシュメモリ。
【請求項１６】
フラッシュメモリはさらに、バッドブロックとスペアブロックとを１つのブロックに統合する統合手段を含む、請求項１０ないし１５いずれか１つに記載のフラッシュメモリ。
【請求項１７】
前記統合手段は、バッドブロックの消去が行われたことに応答して実行される、請求項１５に記載のフラッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤ型フラッシュメモリに関し、特にバッドブロックの管理方法に関する。
【背景技術】
【０００２】
フラッシュメモリの製造段階で発生した欠陥素子は、冗長スキームによって冗長領域のメモリ素子に置換することで救済される。他方、出荷段階では正常と判定されたメモリ素子であっても、プログラムや消去が繰り返されることで不良になるものもある。つまり、一定回数のプログラムパルスが印加されても、そのしきい値が所望の分布幅内に収まらず、また一定回数の消去パルスが印加されても、そのしきい値が所望の分布幅内に収まらないメモリ素子が発生する。フラッシュメモリには、このような不良のメモリ素子を含むブロックをバッドブロックと認定し、バッドブロックを他の正常なブロックにブロック単位で置換する、いわゆるバッドブロック管理が採用されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１４５５４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図１に、従来のバッドブロック管理の動作フローを示す。フラッシュメモリにおいて、ページプログラムが行われるとき、選択ページのワードラインにプログラムパルスが印加され、次いでメモリセルのしきい値を判定すべくベリファイが行われ、プログラムが不十分であれば、前よりもΔＶｐｇｍだけ高いプログラムパルスが印加される。また、選択ブロックの消去が行われるとき、ウエルまたは基板に消去パルスが印加され、次いでベリファイが行われ、消去が不十分であれば、前よりもΔＶｅｒｓだけ高い消去パルスが印加される（Ｓ１０）。このようなプログラムは、ISPP(incremental Step Pulse Program)方式、消去は、ISPE（Incremental Step Pulse Erase）方式として知られている。
【０００５】
フラッシュメモリには、プログラムや消去が行われたときのステータスが管理メモリに保持される（Ｓ１２）。ステータスには、例えば、所定回数のプログラムパルスの印加によって選択ページのベリファイが不合格であったことや、所定回数の消去パルスの印加によって選択ブロックのベリファイが不合格であったこと、あるいはベリファイの最終的結果が不合格であったこと等が記憶される。
【０００６】
管理メモリに記憶されたステータスは、バッドブロックの有無の判定に利用される（Ｓ１４）。バッドブロックの有無の判定は、例えば、外部コントローラがフラッシュメモリにコマンドを送信することによって実行され、あるいはフラッシュメモリ自身に搭載されたプログラムによって実行される。バッドブロックがあると判定されると、バッドブロック管理部は、バッドブロックへのアクセスが正常なスペアブロックへのアクセスとなるようにアドレス変換を行う（Ｓ１６）。
【０００７】
図２は、従来のバッドブロック管理の詳細を説明する図である。フラッシュメモリは、バッドブロックの管理を行うバッドブロック管理部１０と、バッドブロックを正常なスペアブロックにアドレス変換するためのアドレス変換情報を記憶したルックアップテーブル２０と、行アドレス情報に基づきブロックの選択およびページの選択を行うワード線選択回路３０と、複数のブロックを含むメモリアレイ４０とを含んでいる。メモリアレイ４０のＭ１は、ユーザー使用のために割り当てられたメモリ領域であり、ＳＢは、バッドブロックを置換するために用意されたスペア領域である。
【０００８】
バッドブロック管理部１０は、外部からのコマンドまたは自身が搭載するプログラムに応じて、図１のステップＳ１４で説明したようなバッドブロックの有無を判定する。例えば、図２（Ｂ）に示すように、ブロック５のページＰｉのプログラム（書込み）が行われたが、最終的にベリファイで不合格になったとする。このページＰｉのプログラム不良のステータスは、図示しない管理メモリに記憶される。
【０００９】
バッドブロック管理部１０は、管理メモリを参照し、ブロック５が不良ページＰｉを含むのでバッドブロックと判定すると、ブロック５をスペア領域ＳＢ内の空き状態のブロック、例えばブロック１００４に割り当てる。このとき、バッドブロック管理部１０は、バッドブロック５へのアクセスをスペアブロック１００４にアドレス変換するためのアドレス変換情報をルックアップテーブル２０に書込む。図３は、ルックアップテーブルの一例を示す図である。ルックアップテーブルには、バッドブロック５のアドレスと、これを置換するスペアブロック１００４のアドレスとが関連付けして記憶される。通常、外部コントローラからフラッシュメモリには論理アドレスが提供されるので、ルックアップテーブルには、バッドブロック５とスペアブロック１００４の論理アドレスが記憶される。
【００１０】
読出し、プログラム（書込み）あるいは消去時に、ワード線選択回路３０は、ルックアップテーブルを参照し、入力された行アドレスがバッドブロックのアドレスに一致するか否かを判定し、一致する場合には、入力された行アドレスをスペアブロックのアドレスに変換し、これを物理アドレスに変換し、ブロック１００４を選択するためのブロック選択信号BSELを出力する。さらに読出しやプログラム（書込み）動作であれば、選択されたブロック１００４内のページを選択する。
【００１１】
しかしながら、従来のバッドブロックの管理方法には、次のような課題がある。図２（Ｂ）に示すように、ページＰｉの不良（例えば、プログラム動作のベリファイで不合格）が原因でブロック５がバッドブロックと判定され、ブロック５へのアクセスがブロック１００４へ変換されてしまうと、ブロック５のページＰ０〜Ｐｉ−１、Ｐｉ＋１〜Ｐｎに既に書き込まれたデータを利用できなくなってしまう。仮に、このようなデータを利用するには、バットブロック管理方法とは別のファイル管理システムを実行させ、ブロック５のページＰ０〜Ｐｉ−１、Ｐｉ＋１〜Ｐｎをブロック１００４へコピーをしなければならず、煩雑な処理を必要としていた。
【００１２】
本発明は、従来のバッドブロック管理方法の課題を解決したフラッシュメモリ、バッドブロックの管理方法および管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るＮＡＮＤ型フラッシュメモリのバッドブロック管理方法は、メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップとを有する。
【００１４】
好ましくは前記設定するステップは、バッドページを含む第１のページをスペアブロック内の対応するページに変換するためのアドレス変換情報を設定し、かつバッドページを含まない第２のページがバッドブロックをアクセスされるようにアドレス変換情報を設定する。好ましくは前記設定するステップは、バッドページを境界にバッドブロックを２つのページグループに分割し、かつバッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する。好ましくは前記設定するステップは、書換え可能な不揮発性記憶部にアドレス変換情報を記憶する。好ましくはバッドブロック管理方法はさらに、バッドブロックとスペアブロックとを１つのブロックに統合するステップを含む。好ましくは前記統合するステップは、バッドブロックの消去が行われたことに応答して実行される。好ましくは前記統合するステップは、コマンドを実行することにより実行される。
【００１５】
本発明に係るバッドブロック管理プログラムは、ＮＡＮＤ型フラッシュメモリが実行するものであって、メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップとを有する
【００１６】
本発明に係るＮＡＮＤ型フラッシュメモリは、複数のブロックを含むメモリアレイと、前記メモリアレイへのプログラムおよび消去が行われたときのステータスを記憶する記憶手段と、前記ステータスに基づきメモリアレイ内にバッドブロックが存在するか否かを判定する第１の判定手段と、バッドブロックが存在すると判定されたとき、前記ステータスに基づきバッドブロック内の一部にバッドページがあるか否かを判定する第２の判定手段と、バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定する設定手段とを有する。
【００１７】
好ましくはフラッシュメモリはさらに、アドレス情報を入力する入力手段と、前記入力手段からのアドレス情報がバッドブロックに一致するか否かを判定する第３の判定手段と、バッドブロックに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する変換手段とを有する。好ましくはフラッシュメモリはさらに、前記入力手段からのアドレス情報がバッドページに該当するか否かを判定する第４の判定手段とを有し、前記変換手段は、バッドページに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する。好ましくは前記変換手段は、第４の判定手段によってアドレス情報がバッドページに該当しないと判定されたとき、前記変換手段は、前記アドレス情報を前記アドレス変換情報に従いアドレス変換しない。
【発明の効果】
【００１８】
本発明によれば、バッドブロック内の一部がバッドページであると判定された場合に、バッドブロック内のページを変換するためのアドレス変換情報を設定するようにしたので、バッドブロック内のバッドページでないページのデータを継続して利用することができる。
【図面の簡単な説明】
【００１９】
【図１】従来のフラッシュメモリのバッドブロック管理の動作フローを示す図である。
【図２】従来のバッドブロック管理を説明する図である。
【図３】従来のバッドブロック管理に用いられるルックアップテーブルの一例を示す図である。
【図４】本発明の実施例に係るフラッシュメモリの一構成例を示すブロック図である。
【図５】本発明の実施例に係るメモリセルアレイのＮＡＮＤストリングの構成を示す回路図である。
【図６】本実施例に係るフラッシュメモリのプログラム時に各部に印加される電圧の一例を示す図である。
【図７】本実施例に係るフラッシュメモリのバッドブロック管理におけるＬＵＴの作成動作を説明するフローチャートである。
【図８】本実施例のＬＵＴの一例を示す図である。
【図９】本実施例に係るフラッシュメモリの動作を説明するフローチャートである。
【図１０】本実施例に係るデフラグメンテーションの動作を説明するフローチャートである。
【図１１】本実施例に係るデフラグメンテーションおよびＬＵＴの更新の例を説明する図である。
【発明を実施するための形態】
【００２０】
次に、本発明の実施の形態について図面を参照して詳細に説明する。本発明の好ましい形態では、ＮＡＮＤ型のフラッシュメモリを例示する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは異なることに留意すべきである。
【実施例】
【００２１】
図４は、本発明の実施例に係るフラッシュメモリの構成を示すブロック図である。但し、ここに示すフラッシュメモリの構成は、例示であって、本発明は、必ずしもこのような構成に限定されるものではない。
【００２２】
本実施例のフラッシュメモリ１００は、行列状に配列された複数のメモリセルが形成されたメモリアレイ１１０と、外部入出力端子Ｉ／Ｏに接続され入出力データを保持する入出力バッファ１２０と、入出力バッファ１２０からのアドレスデータを受け取るアドレスレジスタ１３０と、入出力されるデータを保持するデータレジスタ１４０、入出力バッファ１２０からのコマンドデータおよび外部制御信号（図示されないチップイネーブルやアドレスラッチイネーブル等）に基づき各部を制御する制御信号Ｃ１、Ｃ２、Ｃ３等を供給するコントローラ１５０と、バッドブロックを正常なスペアブロックに置換するために必要なアドレス情報を記憶したルックアップテーブル（ＬＵＴ）１５２と、プログラム（書込み）および消去したときのメモリセルのステータス等を記憶する管理メモリ１５４と、アドレスレジスタ１３０からの行アドレス情報Ａｘまたはルックアップテーブルのアドレス変換されたアドレス情報をデコードしデコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１６０と、ワード線選択回路１６０によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ／センス回路１７０と、アドレスレジスタ１３０からの列アドレス情報Ａｙをデコードし当該デコード結果に基づきページバッファ１７０内の列データを選択する列選択回路１８０と、データの読出し、プログラムおよび消去等のために必要な電圧（プログラム電圧Vpgm、パス電圧Vpass、読出し電圧Vread、消去電圧Versなど）を生成する内部電圧発生回路１９０とを含んで構成される。
【００２３】
コントローラ１５０は、後述するようにバッドブロックを管理するための機能を備えており、外部コントローラからのコマンドに応答して、あるいは自身が搭載する制御シーケンスまたは制御プログラムに応答してバッドブロックの管理を実行する。コントローラ１５０は、プログラム（書込み）や消去動作が行われたとき、そのステータスを管理メモリ１５４に書込み、またバッドブロックおよび／またはバッドブロック内のページを変換するためのアドレス変換情報をＬＵＴ１５２に書込む。好ましい態様では、ＬＵＴ１５２および管理メモリ１５４は、書換え可能な不揮発性メモリまたは不揮発性レジスタから構成される。
【００２４】
メモリアレイ１１０は、列方向に配置された複数のブロックBLK(0)、BLK(1)、・・・、BLK(m)を有する。ブロックの一方の端部には、ページバッファ／センス回路１７０が配置される。但し、ページバッファ／センス回路１７０は、ブロックの他方の端部、あるいは両側の端部に配置されるものであってもよい。さらにメモリアレイ１１０は、ワード線選択回路１６０の両側に配されるものであってもよい。
【００２５】
１つのメモリブロックには、図５に示すように、複数のメモリセルを直列に接続したＮＡＮＤストリングユニットＮＵが複数形成され、１つのメモリブロック内にｎ＋１個のストリングユニットＮＵが行方向に配列されている。セルユニットＮＵは、直列に接続された複数のメモリセルMCi(i=０、１、・・・、３１)と、一方の端部であるメモリセルMC31のドレイン側に接続された選択トランジスタTDと、他方の端部であるメモリセルMC0のソース側に接続された選択トランジスタTSとを含み、選択トランジスタTDのドレインは、対応する１つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【００２６】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路１６０は、行アドレスＡｘまたは変換されたアドレスに基づきブロックを選択するとき、ブロックの選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動する。なお、図５は、典型的なセルユニットの構成を示しているが、セルユニットは、ＮＡＮＤストリング内に１つまたは複数のダミーセルを包含するものであってもよい。
【００２７】
メモリセルは、典型的に、Ｐウエル内に形成されたＮ型の拡散領域であるソース／ドレインと、ソース／ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート（電荷蓄積層）と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むＭＯＳ構造を有する。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「１」が書込まれているとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。フローティングゲートに電子が蓄積されたとき、つまりデータ「０」が書込まれているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。
【００２８】
図６は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧（例えば０Ｖ）を印加し、非選択ワード線にパス電圧Ｖｐａｓｓ（例えば４．５Ｖ）を印加し、選択ゲート線SGD、SGSに正の電圧（例えば４．５Ｖ）を印加し、ビット線選択トランジスタTD、ソース線選択トランジスタTSをオンし、共通ソース線に０Ｖを印加する。プログラム（書込み）動作では、選択されたワード線に高電圧のプログラム電圧Vprog（１５〜２０Ｖ）を印加し、非選択のワード線に中間電位（例えば１０Ｖ）を印加し、ビット線選択トランジスタTDをオンさせ、ソース線選択トランジスタTSをオフさせ、「０」または「１」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２９】
次に、本実施例のバッドブロック管理方法におけるＬＵＴの作成動作について図７のフローチャートを参照して説明する。コントローラ１５０は、外部コントローラからのコマンドに応答して、あるいは自身が搭載する制御シーケンスまたは制御プログラムに応答してバッドブロックの管理を開始する（Ｓ１００）。
【００３０】
バッドブロックの管理が実行されると、コントローラ１５０は、管理メモリ１５４からステータスを読出し、プログラムまたは消去のベリファイ結果をチェックする。上記したように、ＩＳＰＰ方式またはＩＳＰＥ方式によるプログラム（書込み）または消去が実行されたときベリファイが行われ、そのベリファイ結果等が管理メモリ１５４に記憶される。例えば、所定回数のプログラムパルスの印加によって選択ページのベリファイが不合格または合格であったこと、所定回数の消去パルスの印加によって選択ブロックのベリファイが不合格または合格であったこと、あるいはベリファイの最終的結果が不合格であったこと等がステータスとして記憶される。
【００３１】
ステータスのチェック結果に基づきバッドブロックの有無が判定される（Ｓ１０４）。バッドブロックか否かの判定は、コントローラ１５０が行うものであってもよいし、あるいは外部コントローラからのコマンドに応答してステータスのチェック結果を外部コントローラへ提供し、そこでの判定結果を受け取るようにしてもよい。従って、バッドブロックか否かの判定のためのアルゴリズムは、コントローラ１５０あるいは外部コントローラに予め準備されていることになる。どのようなブロックをバッドブロックにするかの判定基準は任意に決定することができる。例えば、最終的なベリファイ結果が不合格とされた場合、あるいは最終的なベリファイ結果が合格であったとしても一定回数以上のプログラムパルスまたは消去パルスの印加を必要とした場合にバッドブロックとすることができる。
【００３２】
バッドブロックがあると判定されると（Ｓ１０４）、さらにバッドブロック内の一部がバッドページであるか否かが判定される（Ｓ１０６）。バッドブロック内の一部がバッドページであるということは、バッドブロック内にバッドページと正常なページが存在することを意味する。バッドページか否かの判定は、バッドブロックか否かの判定と同様に、コントローラ１５０が行うものでもよいし、外部コントローラが行うものでもよい。どのようなページがバッドページになるのかの判定基準は任意に決定することができる。例えば、プログラムの最終的なベリファイ結果が不合格であったり、あるいは予期されたプログラムパルスの回数を越えたようなとき、そのページをバッドページすなわち不良ページとすることができる。例えば、図２（Ｂ）に示すように、ブロック５のページＰｉがバッドページと判定される。
【００３３】
コントローラ１５０は、バッドブロックがあって、かつバッドページが含まれると判定された場合、バッドブロックおよびバッドブロック内のページを変換するためのアドレス変換情報をＬＵＴ１５２に書込む（Ｓ１０８）。一方、バッドブロックはあるがバッドページがないと判定された場合、コントローラ１５０は、バッドブロックを変換するためのアドレス変換情報をＬＵＴ１５２に書込む（Ｓ１１０）。
【００３４】
図８は、ＬＵＴ１５２のアドレス変換情報を説明する図である。図８（Ａ）において、ページＰｉが不良ページ（バッドページ）であり、ブロック５がバッドブロックと判定されたと仮定する。この場合、ブロック５のページＰｉ以外のページは正常であり、ページＰｉ以外のページに書込まれているデータの継続的な利用が望まれる。１つの態様では、ページＰ０〜Ｐｉ−１へのアクセスは、そのまま有効とし、つまりブロック５へのアクセスを継続され、ページＰｉ〜Ｐｎへのアクセスは、スペアブロック１００４の対応するページＰｉ〜Ｐｎへ変換されるようにする。
【００３５】
図８（Ｂ）は、ルックアップテーブルのアドレス変換情報の一例を示している。ルックアップテーブルは、ブロック変換テーブルを有し、ブロック変換テーブルには、バッドブロック５をスペアブロック１００４へ変換するためのアドレス情報が規定される。さらにブロック変換テーブルには、追加情報としてフラグ情報が規定される。フラグ情報は、バッドブロックがバッドページと正常なページとを含むか否かを識別するものである。もし、バッドブロックがバッドページと正常なページを含むならば、フラグが「１」に設定され、ページ変換テーブルが作成される。バッドブロックの全てのページがバッドページであるとき、あるいはバッドブロックがバッドページが含むと判定されなかったとき、フラグが「０」に設定される。図８（Ａ）の例では、バッドブロック５がバッドページＰｉとそれ以外の正常なページを含むためフラグが「１」に設定され、バッドブロック５にはさらにページ変換テーブルが追加される。
【００３６】
ページ変換テーブルは、バッドブロック内のバッドページを含むページを変換するためのアドレス変換情報と、バッドページを含まないページを変換するためのアドレス変換情報とを規定する。図８（Ａ）の例では、ブロック５が、バッドページＰｉを境界に正常なページＰ０〜Ｐｉ−１のページグループＡと、バッドページを含むページＰｉ〜ＰｎのページグループＢに分割される。そして、ページグループＡへのアクセスがブロック５をそのままアクセスするように、つまり、ページグループＡへのアドレスは変換されない。一方、ページグループＢへのアクセスは、ブロック１００４の対応するページがアクセスされるようにアドレス変換情報が規定される。
【００３７】
ブロック５の不良ページを含むものと、不良ページを含まないものとをどのように分割するかは任意である。例えば、不良ページＰｉのみがブロック１００４のページＰｉに変換されるようにし、それ以外の正常なページＰ０〜Ｐｉ−１、Ｐｉ＋１〜Ｐｎがブロック５を継続してアクセスされるようにしてもよい。但し、図８（Ｂ）の例ように、不良ページＰｉを含む連続的なページをスペアブロックに変換した方が同一ブロックへのアクセス頻度が多くなる可能性があり、アクセス時間の短縮には有利である。
【００３８】
次に、バッドブロック管理が実行された後の読出し、プログラムおよび消去動作を図９のフローチャートを参照して説明する。外部コントローラからフラッシュメモリ１００に対して、読出し、プログラム（書込み）、消去などのコマンドが送信されると、コントローラ１５０は、受信したコマンドを解読し、その動作を判別する（Ｓ２００）。コントローラ１５０は、読出しおよびプログラム動作であるとき、入力された行アドレスのブロックアドレスがバッドブロックアドレスに一致するか否かを判定する（Ｓ２０２）。この判定には、ＬＵＴ１５２が参照される。
【００３９】
バッドブロックに一致するとき、コントローラ１５０は、バッドブロックがその一部にバッドページを含むか否かを判定する（Ｓ２０４）。この判定には、ＬＵＴのフラグが「１」が参照される。一部にバッドページを含むと判定されたとき、コントローラ１５０は、バッドブロックのページ変換テーブルを参照し、入力されたページアドレスの変換を行う（Ｓ２０６）。例えば、図８の例であれば、入力されたページアドレスがブロック５のＰ０〜Ｐｉ−１に該当すれば、ページ変換テーブルに従いブロック５のページグループＡをアクセスするようにアドレスが変換され、ページＰｉ〜Ｐｎに該当すれば、ブロック１００４のページグループＢをアクセスするようにアドレスが変換される。
【００４０】
バッドブロックがバッドページを含まないと判定された場合、つまり、フラグが「０」の場合、入力されたブロックアドレスがブロック変換テーブルに従いスペアブロックのアドレスに変換される（Ｓ２０８）。入力されたブロックアドレスがバッドブロックアドレスに一致しない場合（Ｓ２０２）、入力されたブロックアドレスが変換されることなくそのまま使用される（Ｓ２１０）。入力されたアドレスまたは変換されたアドレスは、ワード線選択回路１６０へ提供され、ワード線選択回路１６０は、ブロックおよびページを選択する（Ｓ２２０）。これにより、バッドブロック内の正常なページに記憶されたデータを継続して利用することができる。
【００４１】
一方、消去動作であるとき（Ｓ２００）、コントローラ１５０は、入力されたブロックアドレスがバッドブロックアドレスに一致するか否かを判定し（Ｓ２１２）、バッドブロックアドレスに該当する場合には、ブロック変換テーブルに従いブロックアドレスがスペアブロックのアドレスに変換される（Ｓ２１４）。図８の例では、入力されたブロックアドレスがブロック５であれば、ブロック１００４のアドレスに変換される。
【００４２】
入力されたブロックアドレスがバッドブロックアドレスに該当しなければ（Ｓ２１２）、入力されたブロックアドレスがそのまま使用される。そして、ワード線選択回路１６０は、入力されたブロックアドレスまたは変換されたブロックアドレスに従いブロックを選択する（Ｓ２２０）。入力されたブロックアドレスがバッドブロックに該当するとき、少なくともスペアブロックが消去されるが、これと同時に、バッドブロックも消去するようにしてもよい。
【００４３】
次に、本実施例のデフラグメンテーションおよびＬＵＴの更新について図１０のフローチャートを参照して説明する。外部コントローラから送信されたコマンド、あるいは自身が搭載する制御シーケンスまたは制御プログラムに応答して、デフラグメンテーションのコマンドが判別されると（Ｓ３００）、コントローラ１５０は、デフラグメンテーションを実行する（Ｓ３０２）。図８に示したように、バッドブロックにバッドページと正常なページが含まれているとき、ページグループＡを含むブロック５とページグループＢを含むブロック１００４の２つのブロックが存在する。デフラグメンテーションは、このような２つのブロックに断片化されたページデータを１つのブロックに統合または集約させる。
【００４４】
コントローラ１５０は、図１１（Ａ）に示すように、ブロック５のページグループＡとブロック１００４のページグループＢをフリーなスペアブロック、例えばブロック１００６に統合する。ブロック５のページグループＡのデータがブロック１００６の対応する各ページにプログラムされ、ブロック１００４のページグループＢのデータがブロック１００６の対応する各ページにプログラムされる。これにより、２つのブロック５および１００４が１つのブロック１００６に統合される。好ましくは、デフラグメンテーションが実行された後に、ブロック１００４が消去され、ブロック１００４をフリーな状態にされる。
【００４５】
次に、コントローラ１５０は、ＬＵＴ１５２の内容を更新する（Ｓ３０８）。すなわち、コントローラ１５０は、デフラグメンテーションの結果が反映されるようにＬＵＴのアドレス変換情報を更新する。具体的には、図１１（Ｂ）に示すように、バッドブロック５のアドレスがスペアブロック１００６のアドレスに変換されるようにアドレス変換情報が書換えられ、同時に、フラグが「０」に設定される。これに伴い、バッドブロック５のページ変換テーブルが消去される。
【００４６】
また、コントローラ１５０は、消去動作が実行されたとき（Ｓ３０４）、選択されたブロックがバッドブロックであるか否かを判定する（Ｓ３０６）。バッドブロックの消去は、バッドブロックの正常なページに記憶されたデータが不要であることを意味する。例えば、図８（Ａ）に示すブロック５のページグループＡとブロック１００４のページグループＢのデータが不要ということであり、ページ読出しまたはページプログラムのときにページグループＡおよびＢをアクセスする必要がなくなる。従って、コントローラ１５０は、バッドブロック５にフラグ「１」が設定されている場合には、フラグを「０」に書換え、かつブロック５のページ変換テーブルを消去するようにＬＵＴ１５２を更新する（Ｓ３０８）。
【００４７】
このようにデフラグメンテーションを実行することで、ブロック間に跨るアクセスを減らし、アクセス速度を向上させることができる。さらにスペアメモリ領域の空きブロックを増加させることで、バッドブロック管理の効率を向上させることができる。
【００４８】
上記実施例では、メモリセルが２値データを記憶するフラッシュメモリを例示したが、本発明は、メモリセルが多値データを記憶するフラッシュメモリにも適用することができる。さらに上記実施例では、コントローラ１５０がバッドブロックの管理を行う例を示したが、これはワード線選択回路１６０が行うものであってもよいし、コントローラ１５０とは別にバッドブロック管理部を設けるようにしてもよい。さらにＬＵＴ１５２や管理メモリ１５４は、メモリアレイ１１０の一部のメモリ領域を利用することも可能であるし、コントローラ１５０がその内部にＬＵＴおよび管理メモリを含むものであってもよい。
【００４９】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５０】
１００：フラッシュメモリ
１１０：メモリアレイ
１２０：入出力バッファ
１３０：アドレスレジスタ
１４０：データレジスタ
１５０：コントローラ
１５２：ルックアップテーブル
１５４：管理メモリ
１６０：ワード線選択回路
１７０：ページバッファ／センス回路
１８０：列選択回路
【図１】
2015103093.tif 000003
【図２】
2015103093.tif 000004
【図３】
2015103093.tif 000005
【図４】
2015103093.tif 000006
【図５】
2015103093.tif 000007
【図６】
2015103093.tif 000008
【図７】
2015103093.tif 000009
【図８】
2015103093.tif 000010
【図９】
2015103093.tif 000011
【図１０】
2015103093.tif 000012
【図１１】
2015103093.tif 000013
【手続補正書】
【提出日】平成26年9月16日(2014.9.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリのバッドブロック管理方法であって、
メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、
バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップとを有し、
前記設定するステップは、バッドページを境界にバッドブロックを２つのページグループに分割し、かつバッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、バッドブロック管理方法。
【請求項２】
前記設定するステップは、バッドページを含まないページグループがバッドブロックをアクセスされるようにアドレス変換情報を設定する、請求項１に記載のバッドブロック管理方法。
【請求項３】
前記設定するステップは、書換え可能な不揮発性記憶部にアドレス変換情報を記憶する、請求項１または２に記載のバッドブロック管理方法。
【請求項４】
バッドブロック管理方法はさらに、バッドブロックとスペアブロックとを１つのブロックに統合するステップを含む、請求項１ないし３いずれか１つに記載のバッドブロック管理方法。
【請求項５】
前記統合するステップは、バッドブロックの消去が行われたことに応答して実行される、請求項４に記載のバッドブロック管理方法。
【請求項６】
前記統合するステップは、コマンドを実行することにより実行される、請求項４に記載のバッドブロック管理方法。
【請求項７】
ＮＡＮＤ型フラッシュメモリが実行するバッドブロック管理プログラムであって、
メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、
バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップとを有し、
前記設定するステップは、バッドページを境界にバッドブロックを２つのページグループに分割し、バッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、バッドブロック管理プログラム。
【請求項８】
複数のブロックを含むメモリアレイと、
前記メモリアレイへのプログラムおよび消去が行われたときのステータスを記憶する記憶手段と、
前記ステータスに基づきメモリアレイ内にバッドブロックが存在するか否かを判定する第１の判定手段と、
バッドブロックが存在すると判定されたとき、前記ステータスに基づきバッドブロック内の一部にバッドページがあるか否かを判定する第２の判定手段と、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定する設定手段とを有し、
前記設定手段は、バッドページを境界にバッドブロックを２つのページグループに分割し、バッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、ＮＡＮＤ型のフラッシュメモリ。
【請求項９】
前記設定手段は、バッドページを含まないページグループがバッドブロックをアクセスされるようにアドレス変換情報を設定する、請求項８に記載のフラッシュメモリ。
【請求項１０】
フラッシュメモリはさらに、アドレス情報を入力する入力手段と、前記入力手段からのアドレス情報がバッドブロックに一致するか否かを判定する第３の判定手段と、バッドブロックに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する変換手段とを有する、請求項８または９に記載のフラッシュメモリ。
【請求項１１】
フラッシュメモリはさらに、前記入力手段からのアドレス情報がバッドページに該当するか否かを判定する第４の判定手段とを有し、前記変換手段は、バッドページに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する、請求項１０に記載のフラッシュメモリ。
【請求項１２】
前記変換手段は、第４の判定手段によってアドレス情報がバッドページに該当しないと判定されたとき、前記変換手段は、前記アドレス情報を前記アドレス変換情報に従いアドレス変換しない、請求項１０または１１に記載のフラッシュメモリ。
【請求項１３】
フラッシュメモリはさらに、バッドブロックとスペアブロックとを１つのブロックに統合する統合手段を含む、請求項７ないし１２いずれか１つに記載のフラッシュメモリ。
【請求項１４】
前記統合手段による統合は、バッドブロックの消去が行われたことに応答して実行される、請求項１３に記載のフラッシュメモリ。
【手続補正書】
【提出日】平成27年2月24日(2015.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリのバッドブロック管理方法であって、
メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、
バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップとを有し、
前記設定するステップは、バッドページを境界にバッドブロックを２つのページグループに分割し、かつバッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、バッドブロック管理方法。
【請求項２】
前記設定するステップは、バッドページを含まないページグループがバッドブロックをアクセスされるようにアドレス変換情報を設定する、請求項１に記載のバッドブロック管理方法。
【請求項３】
前記設定するステップは、書換え可能な不揮発性記憶部にアドレス変換情報を記憶する、請求項１または２に記載のバッドブロック管理方法。
【請求項４】
バッドブロック管理方法はさらに、バッドブロックとスペアブロックとを１つのブロックに統合するステップを含む、請求項１ないし３いずれか１つに記載のバッドブロック管理方法。
【請求項５】
前記統合するステップは、バッドブロックの消去が行われたことに応答して実行される、請求項４に記載のバッドブロック管理方法。
【請求項６】
前記統合するステップは、コマンドを実行することにより実行される、請求項４に記載のバッドブロック管理方法。
【請求項７】
ＮＡＮＤ型フラッシュメモリが実行するバッドブロック管理プログラムであって、
メモリアレイ内にバッドブロックが存在するか否かを判定するステップと、
バッドブロックが存在すると判定されたとき、バッドブロック内の一部にバッドページがあるか否かを判定するステップと、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定するステップとを有し、
前記設定するステップは、バッドページを境界にバッドブロックを２つのページグループに分割し、バッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、バッドブロック管理プログラム。
【請求項８】
複数のブロックを含むメモリアレイと、
前記メモリアレイへのプログラムおよび消去が行われたときのステータスを記憶する記憶手段と、
前記ステータスに基づきメモリアレイ内にバッドブロックが存在するか否かを判定する第１の判定手段と、
バッドブロックが存在すると判定されたとき、前記ステータスに基づきバッドブロック内の一部にバッドページがあるか否かを判定する第２の判定手段と、
バッドブロック内の一部にバッドページがあると判定されたとき、バッドブロックとバッドブロック内のページを変換するためのアドレス変換情報を設定する設定手段とを有し、
前記設定手段は、バッドページを境界にバッドブロックを２つのページグループに分割し、バッドページを含むページグループをスペアブロックの対応するページに変換するためのアドレス変換情報を設定する、ＮＡＮＤ型のフラッシュメモリ。
【請求項９】
前記設定手段は、バッドページを含まないページグループがバッドブロックをアクセスされるようにアドレス変換情報を設定する、請求項８に記載のフラッシュメモリ。
【請求項１０】
フラッシュメモリはさらに、アドレス情報を入力する入力手段と、前記入力手段からのアドレス情報がバッドブロックに一致するか否かを判定する第３の判定手段と、バッドブロックに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する変換手段とを有する、請求項８または９に記載のフラッシュメモリ。
【請求項１１】
フラッシュメモリはさらに、前記入力手段からのアドレス情報がバッドページに該当するか否かを判定する第４の判定手段とを有し、前記変換手段は、バッドページに一致すると判定されたとき、前記アドレス情報を前記アドレス変換情報に従い変換する、請求項１０に記載のフラッシュメモリ。
【請求項１２】
前記変換手段は、第４の判定手段によってアドレス情報がバッドページに該当しないと判定されたとき、前記変換手段は、前記アドレス情報を前記アドレス変換情報に従いアドレス変換しない、請求項１０または１１に記載のフラッシュメモリ。
【請求項１３】
フラッシュメモリはさらに、バッドブロックとスペアブロックとを１つのブロックに統合する統合手段を含む、請求項８ないし１２いずれか１つに記載のフラッシュメモリ。
【請求項１４】
前記統合手段による統合は、バッドブロックの消去が行われたことに応答して実行される、請求項１３に記載のフラッシュメモリ。