(57)【要約】【課題】  ブロック間のプログラム／消去のサイクル数の平滑化を図ることができる半導体記憶装置を提供する。【解決手段】  本発明のフラッシュメモリ１００は、ＮＡＮＤ型のメモリセルアレイ１１０と、論理アドレス情報を物理アドレス情報との関係を規定するアドレス変換テーブルと、消去すべきブロックを識別するための物理アドレス情報を管理する無効ブロックテーブルと、消去済みの使用可能なブロックを識別するための物理アドレス情報を管理するフリーブロックテーブルと、ブロックを消去する消去手段と、コントローラ１４０とを有する。コントローラ１４０は、外部から消去コマンドおよび論理アドレス情報を受け取ったとき、プログラム／消去回数に基づき無効ブロックテーブルの中から選択された物理アドレス情報のブロックを消去させ、プログラム／消去回数に基づきフリーブロックテーブルの中から選択された物理アドレス情報を外部からの論理アドレス情報に対応するようにアドレス変換テーブルを書き換える。【選択図】  図２
2020160871.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを含むＮＡＮＤ型のメモリセルアレイと、
論理アドレス情報を物理アドレス情報に変換するための変換情報を保持する第１の保持手段と、
消去すべきブロックを識別するための物理アドレス情報を保持する第２の保持手段と、
プログラム／消去回数に基づき選択された消去済みの使用可能なブロックを識別するための物理アドレス情報を保持する第３の保持手段と、
前記メモリセルアレイのブロックを消去する消去手段と、
制御手段とを有し、
前記制御手段は、
外部から消去コマンドおよび論理アドレス情報を受け取ったとき、前記変換情報に基づき前記論理アドレスを第１の物理アドレス情報に変換し、
前記第２の保持手段で保持された第２の物理アドレス情報が第１の物理アドレス情報に一致しない場合には、第２の物理アドレス情報に該当するブロックを前記消去手段に消去させ、
さらに前記第３の保持手段で保持された第３の物理アドレス情報が前記論理アドレス情報に対応するように前記第１の保持手段の変換情報を更新する、半導体記憶装置。
【請求項２】
前記制御手段は、第１の物理アドレス情報を前記第２の保持手段に追加し、第３の物理アドレス情報を前記第３の保持手段から削除する、請求項１に記載の半導体記憶装置。
【請求項３】
半導体記憶装置はさらに、前記メモリセルアレイの選択ページにデータをプログラムするためのプログラム手段を含み、
前記制御手段は、前記プログラム手段に、第３の物理アドレス情報に該当するブロックの選択されたページのスペア領域に前記論理アドレス情報と当該ブロックが使用中になったことを示すステータスとをプログラムさせる、請求項１に記載の半導体記憶装置。
【請求項４】
前記制御手段は、前記プログラム手段に、第１の物理アドレス情報に該当するブロックの選択されたページのスペア領域に当該ブロックが消去すべきブロックになったことを示すステータスをプログラムさせる、請求項３に記載の半導体記憶装置。
【請求項５】
メモリセルアレイの決められた領域にブロックのステータスに関する情報がプログラムされ、
前記制御手段は、前記ステータスに関する情報に基づき前記第１、第２、第３の保持手段で保持される情報を生成する、請求項１ないし４いずれか１つに記載の半導体記憶装置。
【請求項６】
前記制御手段は、電源投入時に前記メモリセルアレイから前記ステータスに関する情報を読み出す、請求項５に記載の半導体記憶装置。
【請求項７】
半導体記憶装置はさらに、消去動作時に各ブロックのステータスに関する情報を保持する第４の保持手段を含み、
前記制御手段は、プログラム動作時に、前記第４の保持手段に保持されたステータスに関する情報をメモリセルアレイの該当するスペア領域にプログラムさせる、請求項１ないし６いずれか１つに記載の半導体記憶装置。
【請求項８】
前記第４の保持手段は、不揮発性メモリにステータスに関する情報を保持する、請求項７に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関し、特に、ＮＡＮＤ型フラッシュメモリのブロック間のプログラム／消去回数を平滑化するためのウエアレベリング（wear leveling）に関する。
【背景技術】
【０００２】
通常、ＮＡＮＤ型フラッシュメモリは、パッケージ内に、メモリチップと当該メモリチップを制御するためのメモリコントローラとを含んで構成される。メモリコントローラに、メモリチップのエラー訂正やバッドブロックの管理等の一定の負荷を負わせることで、ホスト側のコンピュータの負荷を軽減させることができる。
【０００３】
例えば、特許文献１のフラッシュメモリシステムは、図１に示すように、フラッシュメモリ１０と、ホストデバイス４０とを含み、フラッシュメモリ１０は、メモリコントローラ２０とメモリチップ３０とを含む。メモリコントローラ２０は、ホストデバイス４０との間でデータの転送を行うホストインターフェース２２、メモリチップ３０との間でデータの転送を行うメモリインターフェース２４、データ転送やメモリチップの動作を制御するＭＰＵ、プログラムやデータを記憶するＲＯＭ、ＲＡＭなどを備えている。メモリチップ３０は、例えばＮＡＮＤ型フラッシュメモリのチップである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１７５８７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＮＡＮＤ型のフラッシュメモリでは、読出しおよびプログラムはページ単位で行われ、消去はブロック単位で行われる。ホストデバイスは、これらの動作を指示するとき、読み出し、プログラム、消去のための論理アドレスをメモリコントローラに出力する。メモリコントローラは、受け取った論理アドレスを、ＳＲＡＭに保持された変換テーブルを参照して物理アドレスに変換し、メモリセルアレイへのプログラム等を行う。変換テーブルは、電源投入時に、メモリセルアレイに用意された領域からＳＲＡＭにロードされる。
【０００６】
また、フラッシュメモリでは、プログラム／消去のサイクル数が増加すると、エンデュランス特性やデータ保持特性の劣化が顕著になることが知られている。これは、プログラム／消去のサイクル数が増加するにつれ、ゲート酸化膜に電子がトラップされたり、電子のトンネリングによりゲート酸化膜そのものが劣化することが原因と考えられている。特定のブロックへのプログラム／消去のサイクル数が増加してしまうと、最終的に使用できなブロックが発生してしまい、メモリセルアレイの利用効率が低下してしまう。それ故、メモリセルアレイの各ブロック間のプログラム／消去のサイクル数は、できるだけ均一化されることが望ましい。
【０００７】
さらにフラッシュメモリでは、現在のブロックのステータスを表す情報や上記した論理アドレス／物理アドレスの変換テーブル等をＳＲＡＭに保持しているが、突然の電源ダウンに対処するため、これらのバックアップ情報をメモリセルアレイの決められた領域、例えば、スペア領域に格納している。そして、電源が再投入されたとき、スペア領域から読み出した情報に基づき変換テーブル等をＳＲＡＭに再構築している。しかしながら、スペア領域へのプログラムは、プログラム数を増加させることであり、同時に、同一ページ上のレギュラー領域がプログラム電圧の印加によりディスターブされるおそれがある。このディスターブは、プログラムゲートディスターブ（ＰＧＤ）と呼ばれている。プログラム数の増加やＰＧＤは、最悪の場合、レギュラー領域のデータが劣化されてしまう。
【０００８】
本発明は、上記したような従来の課題を解決するものであり、ブロック間でプログラム／消去のサイクル数の平滑化を図ることができる半導体記憶装置を提供することを目的とする。
さらに本発明は、プログラム数を抑制しつつスペア領域を有効に利用することができる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る半導体記憶装置は、複数のブロックを含むＮＡＮＤ型のメモリセルアレイと、論理アドレス情報を物理アドレス情報に変換するための変換情報を保持する第１の保持手段と、消去すべきブロックを識別するための物理アドレス情報を保持する第２の保持手段と、プログラム／消去回数に基づき選択された消去済みの使用可能なブロックを識別するための物理アドレス情報を保持する第３の保持手段と、前記メモリセルアレイのブロックを消去する消去手段と、制御手段とを有し、前記制御手段は、外部から消去コマンドおよび論理アドレス情報を受け取ったとき、前記変換情報に基づき前記論理アドレスを第１の物理アドレス情報に変換し、前記第２の保持手段で保持された第２の物理アドレス情報が第１の物理アドレス情報に一致しない場合には、第２の物理アドレス情報に該当するブロックを前記消去手段に消去させ、さらに前記第３の保持手段で保持された第３の物理アドレス情報が前記論理アドレス情報に対応するように前記第１の保持手段の変換情報を更新する。
【００１０】
ある実施態様では前記制御手段は、第１の物理アドレス情報を前記第２の保持手段に追加し、第３の物理アドレス情報を前記第３の保持手段から削除する。ある実施態様では半導体記憶装置はさらに、前記メモリセルアレイの選択ページにデータをプログラムするためのプログラム手段を含み、前記制御手段は、前記プログラム手段に、第３の物理アドレス情報に該当するブロックの選択されたページのスペア領域に前記論理アドレス情報と当該ブロックが使用中になったことを示すステータスとをプログラムさせる。ある実施態様では前記制御手段は、前記プログラム手段に、第１の物理アドレス情報に該当するブロックの選択されたページのスペア領域に当該ブロックが消去すべきブロックになったことを示すステータスをプログラムさせる。ある実施態様ではメモリセルアレイの決められた領域にブロックのステータスに関する情報がプログラムされ、前記制御手段は、前記ステータスに関する情報に基づき前記第１、第２、第３の保持手段で保持される情報を生成する。ある実施態様では前記制御手段は、電源投入時に前記メモリセルアレイから前記ステータスに関する情報を読み出す。ある実施態様では半導体記憶装置はさらに、消去動作時に各ブロックのステータスに関する情報を保持する第４の保持手段を含み、前記制御手段は、プログラム動作時に、前記第４の保持手段に保持されたステータスに関する情報をメモリセルアレイの該当するスペア領域にプログラムさせる。ある実施態様では前記第４の保持手段は、不揮発性メモリにステータスに関する情報を保持する。
【発明の効果】
【００１１】
本発明によれば、メモリセルアレイのブロックのプログラム／消去回数の平滑化を図り、メモリセルアレイの利用効率を改善することができる。さらに本発明によれば、スペア領域にステータスに関する情報をプログラムする場合にプログラム回数の削減を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】従来の半導体メモリの一例を示す図である。
【図２】本発明の実施例に係るフラッシュメモリの全体構成を示す図である。
【図３】本発明の実施例に係るメモリセルアレイのブロックの内部構成を示す図である。
【図４】本実施例のフラッシュメモリのブロック内の構成を示す図である。
【図５】図５（Ａ）は、ＳＲＡＭに保持されるアドレス変換テーブルの一例を示し、図５（Ｂ）は、ＳＲＡＭに保持されるカレント参照テーブルの一例を示す。
【図６】メモリセルアレイの各ブロックのステータスを模式的に示す図である。
【図７】ホストデバイスから入力された論理アドレスを物理アドレスに変換する動作を説明する図である。
【図８】本発明の実施例に係るフリーブロックテーブル、無効ブロックテーブル、ステータスブロックテーブルを示す図である。
【図９】本発明の実施例に係る消去動作のフローを示す図である。
【図１０】本発明の実施例に係る消去動作のフローを示す図である。
【図１１】消去動作時に書換えられたアドレス変換テーブルとカレント参照テーブルを示す図である。
【図１２】消去動作時のメモリセルアレイの各ブロックのステータスを模式的に示す図である。
【図１３】消去動作時に書換えられたフリーブロックテーブル、無効ブロックテーブル、ステータスブロックテーブルを示す図である。
【発明を実施するための形態】
【００１３】
次に、本発明の実施の形態について図面を参照して詳細に説明する。本発明のフラッシュメモリは、ＮＡＮＤ型ストリングのメモリセルを有するメモリ装置と、メモリ装置を制御するコントローラとを含んで構成される。コントローラは、メモリ装置を形成するチップと同一のチップ上に形成されてもよいし、異なるチップ上に形成されてもよい。また、フラッシュメモリが複数のチップから構成されるとき、複数のチップは積層されるように構成されてもよい。
【実施例】
【００１４】
図２は、本発明の実施例に係るフラッシュメモリ１００の内部構成を示す図である。本実施例のフラッシュメモリ１００は、ホストデバイスから各種制御信号（コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥなど）、データ、コマンド等を受け取り、これらの信号等に基づき読出し、プログラム（書込み）、消去等を行う。また、フラッシュメモリ１００は、メモリの動作状態を示すＲｅａｄｙ信号やＢｕｓｙ信号をホストデバイスに出力する。
【００１５】
フラッシュメモリ１００は、複数のメモリセルが行列状に配列されたメモリアレイ１１０と、外部入出力端子Ｉ／Ｏに接続された入出力バッファ１２０と、入出力バッファ１２０からアドレスデータを受け取るアドレスレジスタ１３０と、入出力バッファ１２０からコマンドデータ等を受け取り、各部を制御するコントローラ１４０と、アドレスレジスタ１３０から行アドレス情報Ａｘを受け取り、行アドレス情報Ａｘをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１５０と、ワード線選択回路１５０によって選択されたページから読み出されたデータを保持したり、選択されたページにプログラムすべき入力データを保持するページバッファ／センス回路１６０と、アドレスレジスタ１３０から列アドレス情報Ａｙを受け取り、列アドレス情報Ａｙをデコードし、当該デコード結果に基づきページバッファ／センス回路１６０内の列アドレスのデータを選択する列選択回路１７０と、データの読出し、プログラムおよび消去等のために必要な種々の電圧（書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど）を生成する内部電圧発生回路１８０とを含んで構成される。
【００１６】
メモリアレイ１１０は、列方向にｍ個のブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。１つのブロックには、図３に示すように、複数のメモリセルを直列に接続したＮＡＮＤストリングが行方向にｎ個配列されている。１つの行方向のメモリセルは、１ページ（例えば、２ＫＢ）を構成する。１つのＮＡＮＤストリングＮＵは、直列に接続された複数のメモリセルMCi(i=１、２、３・・・、６４)と、一方の端部であるメモリセルMC64のドレイン側に接続されたビット線側選択トランジスタTdと、メモリセルMC0のソース側に接続されたソース線側選択トランジスタTsとを含む。ビット線側選択トランジスタTdのドレインは、対応する１つのビット線BLに接続され、ソース線側選択トランジスタTsのソースは、共通のソース線SLに接続される。メモリセルは、１ビットのデータを記憶するもの、あるいはビットのデータを記憶するものいずれであってもよい。さらにメモリセルアレイは、基板上に２次元的に形成されるもの、あるいは基板上に３次元的に形成されるものいずれであってもよい。
【００１７】
メモリセルアレイ１１０の各ブロック、つまりブロックを構成する各ページには、ユーザーが使用するレギュラー領域と、種々の管理情報などを記憶するために使用するスペア領域とが割り当てられている。例えば、メモリセルアレイ１１０の１つのページは、図４に示すように、セクタ０〜セクタ７の８つのセクタを含むレギュラー領域２００と、スペア０、スペア１、スペア２、スペア３の４つのセクタを含むスペア領域２１０とを有する。例えば、レギュラー領域２００の１つのセクタが２５６バイト（全体で２Ｋバイト）、スペア領域２１０の１つのセクタが１６バイトである（全体で６４バイト）。
【００１８】
スペア領域には、不良メモリ素子を含むバッドブロックを識別する情報２１２、当該ブロックの物理ブロックアドレスＰＢＡが対応する論理ブロックアドレスＬＢＡを識別する情報２１４、当該ブロックのステータスに関する情報２１６、レギュラー領域の誤り訂正符号（パリティビット）２１８などが記憶される。ステータスに関する情報は、後述するように、例えば、消去済みのブロック（Ｅ）、使用中の有効なブロック（Ｖ）、消去すべき無効なブロック（Ｉ）、プログラム／消去の回数ＥＷなどを含む。
【００１９】
コントローラ１４０は、例えば、マイクロプロセッサ（ＭＰＵ）やＲＯＭなどを含み、ＲＯＭに格納されたソフトウエアプログラムを実行することで、フラッシュメモリ１００の読出し、プログラムおよび消去等の動作を制御する。さらに本実施例のコントローラ１４０は、ＳＲＡＭ１４２およびＲＲＡＭ（抵抗変化型メモリ）１４４を含み、ＳＲＡＭ１４２およびＲＲＡＭ１４４の読み書き制御等を行う。
【００２０】
ここでのＳＲＡＭ１４２は、複数のレジスタ等を含む高速で読出し書込みが可能な揮発性メモリの総称である。ＳＲＡＭ１４２は、電源投入時にコントローラ１４０によってパワーオンシーケンスが実行されたとき、メモリセルアレイ１１０の特定ブロックの特定ページ、あるいは予め決められたスペア領域等からロードされたデータを保持する。コントローラ１４０は、ＳＲＡＭ１４２にロードされたデータに基づき各種テーブルを作成することができ、作成したテーブルをＳＲＡＭ１４２に保持させ、また必要に応じてテーブルを書換えることができる。テーブルは、例えば、論理ブロックアドレスＬＢＡと物理アドレスアドレスＰＢＡとの関係を規定する変換テーブル、メモリセルアレイ１１０の各ブロックのステータスに関する情報を示すテーブルなどである。
【００２１】
ＳＲＡＭ１４２は揮発性メモリであるため、電源がダウンした場合には、ＳＲＡＭ１４２に保持されたテーブル等のデータは喪失されてしまう。これに対処するため、ＳＲＡＭ１４２に保持されたデータが書き換えられた場合には、メモリセルアレイのスペア領域にそのバックアップデータがプログラムされる。そして、電源再投入時に、スペア領域から読み出されたデータによってＳＲＡＭ１４２のテーブル等が再構築される。
【００２２】
ＲＲＡＭ１４４は、可逆的かつ不揮発性の可変抵抗素子にデータを記憶することができる可変抵抗型ランダムアクセスメモリである。ＲＲＡＭ１４４は、ＳＲＡＭ１４２と同様に高速でデータの読み書きが可能であり、かつ電源が喪失してもデータを保持することができる不揮発性のメモリである。
【００２３】
ＲＲＡＭ１４４は、ＳＲＡＭ１４２にバックアップとして機能することができる。ＲＲＡＭ１４４は、ＳＲＡＭ１４２に保持されたデータの一部を記憶し、ＳＲＡＭ１４２のテーブル等に変更があったとき、その変更内容を記憶し、メモリセルアレイのスペア領域へのプログラムを延期させることができる。コントローラ１４０は、適切なタイミングで、ＲＲＡＭ１４４に記憶されたデータをメモリセルアレイのスペア領域にプログラムすることができる。ある実施態様では、レギュラー領域にデータをプログラムするとき、ＲＲＡＭ１４４のデータをスペア領域に同時にプログラムする。これにより、プログラム数を削減することができ、スペア領域にのみプログラムするときに生じ得るレギュラー領域へのプログラムゲートディスターブ（ＰＧＤ）を抑制する。
【００２４】
フラッシュメモリの読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧（例えば０Ｖ）を印加し、非選択ワード線にパス電圧（例えば４．５Ｖ）を印加し、選択ゲート線SGD、SGSに正の電圧（例えば４．５Ｖ）を印加し、ビット線側選択トランジスタTd、ソース線側選択トランジスタTsをオンし、共通ソース線SLを０Ｖにする。プログラム動作では、選択されたワード線に高電圧のプログラム電圧（例えば、１５〜２０Ｖ）を印加し、非選択のワード線に中間電位（例えば１０Ｖ）を印加し、ビット線側選択トランジスタTdをオンさせ、ソース線側選択トランジスタTsをオフさせ、データ「０」または「１」に応じた電位をビット線BLに供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２５】
次に、本実施例のフラッシュメモリ１００の動作について説明する。フラッシュメモリ１００に電源が投入されると、コントローラ１４０がパワーオンシーケンスを実行し、図６に示すようなメモリセルアレイ１１０の先頭ブロックの特定ページに格納されたデータや各ブロックのスペア領域に格納された論理ブロックアドレスＬＢＡやステータスに関するデータがＳＲＡＭ１４２にロードされる。コントローラ１４０は、ロードされた情報に基づき、図５（Ａ）に示すようなアドレス変換テーブル３００、図５（Ｂ）に示すようなカレント参照テーブル３１０を作成し、これをＳＲＡＭ１４２に保持させる。
【００２６】
ここで、図５（Ｂ）や図６のステータスで使用されるシンボル「Ｓ」は、システムが使用するブロックを表し、「Ｅ」は消去済みであり使用可能なブロックを表し、「Ｖ」は使用中の有効なブロックを表し、「Ｉ」は消去すべき無効なブロックを表し、「ＢＢ」は使用することができないバッドブロックを表す。
【００２７】
１つのブロック内に（Ｖ）と（Ｉ）の２つのステータスが含まれる場合、（１）のステータスが優先され、（Ｖ）と（Ｅ）が含まれる場合には、（Ｖ）が優先される。（ＢＢ）と（Ｅ）が含まれる場合には、（ＢＢ）が優先される。例えば、図６に示すメモリセルアレイの物理ブロックアドレスＰＢＡ（０３ｈ）では、ページ（００ｈ）に「Ｖ」がプログラムされ、ページ（０３ｈ）に「Ｉ」がプログラムされているが、「１」が優先されるため、このブロックは消去すべき無効なブロックと識別される。それ故、スペア領域の論理ブロックアドレスＬＢＡ（０１ｈ）は、有効なものとして使用されず、つまり、図５（Ａ）の変換テーブルには反映されないし、図５（Ｂ）のカレント参照テーブルでは「Ｉ」が反映される。また、図６の物理ブロックアドレスＰＢＡ（０２ｈ）では、ステータスが「ＢＢ」がプログラムされているため、カレント参照テーブルには「ＢＢ」が反映される。
【００２８】
コントローラ１４０は、図５（Ａ）に示すアドレス変換テーブルを参照して、ホストデバイスから入力された論理アドレスＬＡＤを物理アドレスＰＡＤに変換する。論理アドレスＬＡＤは、図７に示すように、論理ブロックアドレスＬＢＡ、論理ページアドレスＬＰＡおよび論理カラムアドレスＬＣＡを含んで構成される。例えば、フラッシュメモリ１００をアクセスするための行アドレスは１８ビットであり、列アドレスは１２ビットである。行アドレスの上位１２ビットがブロックを指定するアドレスであり、下位６ビットがページを指定するアドレスである。論理ページアドレスＬＰＡおよび論理列アドレスＬＡＣは、変換されることなくそのまま物理アドレスを構成する。こうして、論理アドレスＬＡＤが、フラッシュメモリをアクセスするための物理アドレスＰＤＡ（＝ＰＢＡ＋ＬＡＰ＋ＬＣＡ）に変換される。
【００２９】
コントローラ１４０は、図５（Ｂ）に示すカレント参照テーブルを用いて各ブロックのプログラム／消去のサイクル数の平滑化を管理することは可能であるが、本実施例では、ブロックのサーチ時間を短縮しその処理速度を高めるために、図８（Ａ）、（Ｂ）、（Ｃ）に示すような３つのテーブルを生成する。
【００３０】
図８（Ａ）に示すフリーブロックテーブル（ＦＢＴ）は、消去済みのブロックであって、次に使用できるブロックを管理するテーブルである。ＦＢＴは、図５（Ｂ）のカレント参照テーブルにおいて、ステータスが「Ｅ」のブロックとそのプログラム／消去回数ＥＷに基づき生成される。ＦＢＴは、例えば、先に書込まれた物理ブロックアドレスＰＢＡから順に読み出されるＦＩＦＯタイプのレジスタに格納され、ここでは、プログラム／消去回数ＥＷが少ないブロックから先に書込まれる。プログラム／消去回数ＥＷは、１つのブロック内の各ページにおいて必ずしも同一にはならない。消去はブロック単位であるため各ページに均一に反映されるが、プログラムはページ単位であるため各ページ間でプログラム数は異なる。本実施例のプログラム／消去回数ＥＷは、ブロック単位であり、つまり、ブロック内の１つのページがプログラムされた場合であっても、プログラム／消去回数ＥＷは1つ加算される。
【００３１】
図８（Ｂ）に示す無効ブロックテーブル（ＩＢＴ）は、次に消去すべきブロックを管理するテーブルである。ＩＢＴは、図５（Ｂ）のカレント参照テーブルにおいて、ステータスが「Ｉ」であるブロックとそのプログラム／消去回数ＥＷに基づき生成される。ＩＢＴもまた、ＦＩＦＯタイプのレジスタに格納され、プログラム／消去回数ＥＷが少ないページから先に書込まれる。
【００３２】
図８（Ｃ）に示すステータブロックステーブル（ＳＢＴ）は、図５（Ｂ）に示すカレント参照テーブルのステータスを記憶する。ＳＢＴは、図５（Ｂ）のカレント参照テーブルにおいて、全てのブロックのステータスを利用して生成される。ＳＢＴは、ＲＲＡＭ１４４に格納され、仮に動作中にブロックの状態の変更が生じた際、その変更を保存する。
【００３３】
次に、フラッシュメモリ１００においてブロックを消去するときの動作を図９、図１０のフローを参照して説明する。メモリセルアレイ１１０は、図６に示すステータスを有するものとする。外部のホストデバイスが消去コマンドおよび消去すべきブロックを示す論理ブロックアドレスＬＢＡ（０１ｈ）を出力し、フラッシュメモリ１００がこれを受け取る（Ｓ１０１）。
【００３４】
コントローラ１４０は、図５（Ａ）に示す変換テーブルを参照し、論理ブロックアドレスＬＢＡ（０１ｈ）を物理ブロックアドレスＰＢＡ（０７ｈ）に変換する（Ｓ１０２）。次に、コントローラ１４０は、プログラム／消去回数の少ない次に消去すべきブロックを決定するため、図８（Ｂ）に示すＩＢＴの先頭の物理ブロックアドレスＰＢＡ（０１ｈ）を読み出す（Ｓ１０３）。
【００３５】
次に、コントローラ１４０は、ＩＢＴから読み出された物理ブロックアドレスＰＢＡ（０１ｈ）で特定されるブロックの消去を実行する（Ｓ１０４）。ここでは、ホストデバイスから指示された論理アドレスブロック（００１ｈ）に対応する物理ブロックアドレス（００７ｈ）は、ＩＢＴから読み出された物理ブロックアドレスＰＢＡ（００１ｈ）に一致しないので、物理ブロックアドレスＰＢＡ（００７）のブロックは消去されず、このブロックは消去すべき無効なブロック（ステータス「Ｉ」）として管理される。コントローラ１４０の指示に応答して、ワード線選択回路１５０がＰＢＡ（０１ｈ）の選択ブロックの全ワードに０Ｖを印加し、また、Ｐウエルには消去電圧が印加される。このときのＰＢＡ（０１ｈ）のブロックの状態を図１２に示す。ＰＢＡ（０１ｈ）のスペア領域は、消去済の使用可能な状態Ｅになる。
【００３６】
次に、メモリセルアレイ１２０のＰＢＡ（０１ｈ）のステータスを反映させるべく、コントローラ１４０は、図５（Ｂ）に示すカレント参照テーブルのＰＢＡ（０１ｈ）のステータスを「Ｉ」から「Ｅ」に書換え、かつプログラム／消去回路ＥＷに１を加算し「２」に書換える（Ｓ１０５）。書換え後のカレント参照テーブルを図１１（Ｂ）に示す。書き換えられた部分を破線で示す。
【００３７】
次に、コントローラ１４０は、メモリセルアレイ１１０の物理ブロックアドレスＰＢＡ（０７ｈ）のページ（０３ｈ）のステータスを「Ｉ」にプログラムする（Ｓ１０６）。先頭ページのスペア領域のステータスには既に「Ｖ」がプログラムされているため、この領域を使用することができない。このため、未使用であるページ（０３ｈ）のスペア領域が使用される。
【００３８】
次に、コントローラ１４０は、メモリセルアレイ１１０の物理ブロックアドレスＰＢＡ（０７ｈ）のステータスをカレント参照テーブルに反映させるべく、カレント参照テーブルの物理ブロックアドレスＰＢＡ（０７ｈ）のステータスを「Ｉ」に書換える（Ｓ１０７）。この様子を図１１（Ｂ）に示す（破線部分）。
【００３９】
次に、コントローラ１４０は、ＩＢＴに物理ブロックアドレスＰＢＡ（０７ｈ）を書込む（Ｓ１０８）。ＩＢＴは、ＦＩＦＯであるため、図１３（Ｂ）に示すように、物理ブロックアドレスＰＢＡ（０３ｈ）が先頭のエントリ＃０に移動し、物理ブロックアドレスＰＢＡ（０７ｈ）が最後のエントリ＃１に追加される。
【００４０】
こうして、ホストデバイスからの消去命令に対応する消去動作を完了させた後、次に、コントローラ１４０は、論理ブロックアドレスＬＢＡ（０１ｈ）に割り当てるべき物理ブロックアドレスをＦＢＴからサーチする。つまり、コントローラ１４０は、図８（Ａ）に示すＦＢＴの先頭のエントリ＃０の物理ブロックアドレスＰＢＡ（０８ｈ）を読出す（Ｓ１０９）。
【００４１】
次に、コントローラ１４０は、ＦＢＴから読み出した物理ブロックアドレスＰＢＡ（０８ｈ）に従い、メモリセルアレイのＰＢＡ（０８ｈ）のページ（００ｈ）のスペア領域の論理ブロックアドレスＬＢＡに（００１）をステータスに「Ｖ」をプログラムする（Ｓ１１０）。
【００４２】
次に、コントローラ１４０は、メモリセルアレイの物理ブロックアドレスＰＢＡ（０８ｈ）において、当該ブロックを使用中の有効なブロックに割り当てたことに伴い、カレント参照テーブルの内容を書き換える。つまり、カレント参照テーブルの物理ブロックアドレスＰＢＡ（０８ｈ）の論理ブロックアドレスＬＢＡを（０１ｈ）に書換え、かつステータスを「Ｅ」から「Ｖ」に書換える（Ｓ１１１）。この様子を図１１（Ｂ）に示す（破線部分）。
【００４３】
次に、コントローラ１４０は、図５（Ａ）の変換テーブルの論理ブロックアドレスＬＢＡ（０１ｈ）が物理ブロックアドレス（０８ｈ）に対応するように、変換テーブルを書き換える（Ｓ１１２）。この様子を図１１（Ａ）に示す（破線部分）。
【００４４】
次に、コントローラ１４０は、ＦＢＴに物理ブロックアドレスを追加するため、カレント参照テーブルの中からプログラム／消去回数ＥＷが小さくかつステータスが「Ｅ」であり、しかもＦＢＩに登録されていない物理ブロックアドレスをサーチする（Ｓ１１３）。本例では、物理ブロックアドレスＰＢＡ（０１ｈ）がサーチされている。
【００４５】
次に、コントローラ１４０は、サーチされた物理ブロックアドレスＰＢＡ（０１ｈ）をＦＢＴに追加すべく書込みをする（Ｓ１１４）。この様子を図１３（Ａ）に示す（破線部分）。こうして、論理ブロックアドレスＰＢＡ（０１ｈ）に、プログラム／消去回数が少ない新しい物理ブロックアドレス（０８ｈ）が割り当てられ、かつＦＢＴにプログラム／消去回数が少ない物理ブロックアドレス（０１ｈ）が追加される。
【００４６】
本実施例によれば、消去動作時に上記のようなアルゴリズムによりブロックの消去やブロックの使用を行うことで、メモリセルアレイ内のブロックのプログラム／消去回数を平滑化し、ブロック間のウエアレベリングを行うことができる。その結果として、フラッシュメモリの利用効率の改善を図ることができる。
【００４７】
次に本発明の第２の実施例について説明する。上記の消去動作時のフローのステップＳ１１０において、コントローラ１４０がメモリセルアレイの物理ブロックアドレスＰＢＡ（０８ｈ）のページ（０１ｈ）のスペア領域に、論理ブロックアドレスＬＢＡ（０１ｈ）とステータス「Ｖ」をプログラムしたが、このプログラムにより同一ページに許容される最大プログラム回数が１回消費されてしまう。本実施例では、この無駄をなくすため、図８（Ｃ）に示すような、消去状態のブロックのステータスを管理するためのステータスブロックテーブルＳＢＴを不揮発性メモリ１４４に格納し、これを活用する。
【００４８】
ＳＢＴは、図８（Ｃ）に示すように、カレント参照ブロックのステータスを抽出したものであり、各物理ブロックアドレスＰＢＡのステータスが示されている。コントローラ１４０は、消去動作中にブロックのステータスが変化した場合、図１３（Ｃ）に示すようにＳＢＴを書換える（破線部分）。すなわち、物理ブロックアドレスＰＢＡ（０１ｈ）は、消去すべき無効なブロック「Ｉ」から消去済みのブロック「Ｅ」に書換えられ、物理ブロックアドレスＰＢＡ（０７ｈ）は、使用中の有効なブロック「Ｖ」から消去すべき無効なブロック「Ｉ」に書換えられ、物理ブロックアドレスＰＢＡ（０８ｈ）は、消去済みのブロック「Ｅ」から使用中の有効なブロック「Ｖ」に書換えられる。
【００４９】
コントローラ１４０は、ステータスが「Ｅ」から「Ｖ」に変更された物理ブロックアドレスＰＢＡ（０８ｈ）に関しては、消去動作中にプログラムを行わず、ホストデバイスから、物理ブロックアドレスＰＢＡ（０８ｈ）のページ（００ｈ）へのプログラム命令を受け取ったとき、同時スペア領域に、論理ブロックアドレスＬＢＡ（０１ｈ）とステータス「Ｖ」をプログラムする。これにより、物理ブロックアドレスＰＢＡ（０８ｈ）のページ（００ｈ）のプログラム回数の消費を１回減らす。このプログラムが完了するまでの間、不揮発性メモリ１４４のＳＢＴを代用し、その後、ＳＴＢを消去する。なお、ブロックのステータスを「Ｖ」に変更した場合には、論理ブロックアドレスが新たに対応付けられることになるため、ＳＢＴには、論理ブロックアドレスＬＢＡも一緒に記憶され、論理ブロックアドレスＬＢＡも同時にスペア領域にプログラムされる。
【００５０】
なお、上記実施例では、不揮発性メモリとしてＲＲＡＭを使用したが、ＮＡＮＤ型メモリよりも高速にデータを書込むことができるものであれば、ＲＲＡＭ以外にもＭＲＡＭ（磁性体メモリ）を使用することも可能である。
【００５１】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５２】
１００：フラッシュメモリ
１１０：メモリセルアレイ
１２０：入力バッファ
１３０：アドレスレジスタ
１４０：コントローラ
１４２：ＳＲＡＭ
１４４：ＲＲＡＭ
１５０：ワード線選択回路
１６０：ページバッファ／センス回路
１７０：列選択回路
２００：レギュラー領域
２１０：スペア領域
【図１】
2020160871.tif 000003
【図２】
2020160871.tif 000004
【図３】
2020160871.tif 000005
【図４】
2020160871.tif 000006
【図５】
2020160871.tif 000007
【図６】
2020160871.tif 000008
【図７】
2020160871.tif 000009
【図８】
2020160871.tif 000010
【図９】
2020160871.tif 000011
【図１０】
2020160871.tif 000012
【図１１】
2020160871.tif 000013
【図１２】
2020160871.tif 000014
【図１３】
2020160871.tif 000015