(57)【要約】      （修正有）【課題】読み出しコマンドと読み出しアドレスとに応答する不揮発性メモリアレーの通常の読み出し動作を実行する一方、不揮発性メモリアレーの特定のアドレスからデータの自動読み出しの動作を実行できるような不揮発性半導体記憶装置を提供する。【解決手段】不揮発性半導体記憶装置は、不揮発性メモリアレイ１２１と、制御回路１２０とを具備する。外部からの読み出しコマンドと読み出しアドレスとに応答して、制御回路１２０は不揮発性メモリアレイ１２１からデータの通常の読み出し動作を実行して、通常読み出しデータを外部へ出力する。電源投入時に外部から供給される特定信号ＰＲＥに応答して、制御回路１２０は不揮発性メモリアレイの特定のアドレス(アドレス０番地)からデータの自動読み出しの動作を実行して、この特定のアドレスからの自動読み出しデータを外部へ出力するようにした。【選択図】図１
2008251154.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリアレイアレーと、制御回路とを具備してなり、
前記不揮発性メモリアレーは、記憶情報を電気的に書き込み、消去可能であってしきい値電圧に対応して情報を記憶する複数の不揮発性記憶素子を含み、所定の単位で書き込みおよび消去を行うように構成され、
外部に接続される外部制御装置からの読み出しコマンドと読み出しアドレスとに応答して、前記制御回路は前記不揮発性メモリアレーからデータの通常の読み出し動作を実行して、当該通常読み出しデータを前記外部制御装置へ出力するものであり、
電源投入時に前記外部制御装置から供給される特定信号に応答して、前記制御回路は前記不揮発性メモリアレーの特定のアドレスからデータの自動読み出しの動作を実行して、当該自動読み出しデータを前記外部制御装置へ出力するものである不揮発性半導体記憶装置。
【請求項２】
前記不揮発性メモリアレーと接続された第１のバッファメモリと第２のバッファメモリとを更に具備してなり、
前記通常の読み出し動作では、前記制御回路は前記第１のバッファメモリと前記第２のバッファメモリとの両者を利用して前記不揮発性メモリアレーからの読み出しと前記外部制御装置への出力とを実行するものであり、
前記自動読み出しの動作では、前記制御回路は前記第１のバッファメモリと前記第２のバッファメモリとの一方を利用しては前記不揮発性メモリアレーの前記特定のアドレスからの読み出しと前記外部制御装置への出力とを実行するものである請求項１に記載の不揮発性半導体記憶装置。
【請求項３】
前記不揮発性メモリアレーは書き込みの単位としての所定数の不揮発性記憶素子からなる複数のセクターを含み、前記複数のセクターのそれぞれのセクターはエラー訂正コードを含むように構成され、
前記通常の読み出し動作で、前記第１のバッファメモリに保持された第１のデータに関してエラー検出訂正処理が実行され、その後、前記第２のバッファメモリに保持された第２のデータに関してエラー検出訂正処理が実行されるものであり、
前記自動読み出しの動作で、前記第１のバッファメモリと前記第２のバッファメモリとの前記一方に保持された前記特定のアドレスからの前記データに関してエラー検出訂正処理が実行されるものである請求項２に記載の不揮発性半導体記憶装置。
【請求項４】
前記制御回路は前記外部制御装置から前記電源投入時に供給される前記特定信号が有効レベルにアサートされているか否かを判別するものであり、
前記電源投入時に供給される前記特定信号が前記有効レベルにアサートされていることに応答して、前記制御回路は前記不揮発性メモリアレーの前記特定のアドレスからの前記自動読み出しの動作を実行するものであり、
前記電源投入時に供給される前記特定信号が前記有効レベルにアサートされていないことに応答して、前記制御回路は外部からのコマンド入力を待つスタンバイ状態に移行するものである請求項１乃至請求項３のいずれかに記載の不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶情報を電気的に書込み、消去可能な不揮発性半導体記憶装置に関し、例えばメモリアレイ内の不良領域の代替機能を備え不良アドレスを管理する管理テーブル情報を記憶する領域を有するフラッシュメモリに利用して有効な技術に関するものである。
【背景技術】
【０００２】
フラッシュメモリは、コントロールゲートおよびフローティングゲートを有する２重ゲート構造のＭＯＳＦＥＴからなる不揮発性記憶素子をメモリセルに使用しており、フローティングゲートの蓄積電荷量を変えることでＭＯＳＦＥＴのしきい値電圧を変化させ情報を記憶するようにしている。
【０００３】
フラッシュメモリは、メモリセルへの書込み・消去動作の際にしきい値電圧を変化させるが、現在の製造技術では同一条件で書込み消去を行なってもメモリセルの特性バラツキによってしきい値電圧の変化の仕方にばらつきが生じ、場合によってはしきい値電圧が充分に変化しない不良メモリセルが発生することがある。
【０００４】
従来の一般的なフラッシュメモリにおいては、このようにしきい値電圧が充分に変化しない不良メモリセルが発生した時に、不良メモリセルを含む所定の記憶領域を他の正常な記憶領域に置き換える代替機能を備えるとともに、不良アドレスを管理する管理テーブル情報を記憶する領域がメモリアレイ内に設けられることが多い。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のフラッシュメモリは、一般に、不良アドレスを管理する管理テーブル情報の書替え等を外部のコントローラによって行なうようになっている。また、フラッシュメモリは、メモリセルのしきい値電圧のばらつきや経年変化によって読出しデータの信頼性がマスクＲＯＭやＲＡＭなどに比べて低いため、フラッシュメモリを使用したシステムを構成する際にＥＣＣと呼ばれるエラーのチェックと訂正機能を外部のコントローラに持たせてデータの信頼性を向上させることが行なわれる。そのため、従来のフラッシュメモリは、新たにフラッシュメモリを使用したシステムを開発する際のシステム開発者の負担が大きいという課題があった。
【０００６】
また、従来のフラッシュメモリは、不良メモリセルを含む記憶領域が、メモリ上のファイルの位置を管理するテーブルデータやフォーマット情報、アドレス変換情報などシステムにとって重要なデータを記憶するシステム領域として使用されていた場合には、メモリの認識ができなくなったりシステムの正常動作が不能になるおそれがある。
【０００７】
この発明の目的は、フラッシュメモリのような電気的に書込み、消去可能な不揮発性半導体記憶装置において、システム開発者の負担を軽減できるようにすることにある。
【０００８】
この発明の他の目的は、フラッシュメモリのような電気的に書込み、消去可能な不揮発性半導体記憶装置において、管理テーブルデータやアドレス変換情報などシステムにとって重要なデータが破損してもシステムが動作しなくなるような異常な状態を回避できるようにすることにある。
【０００９】
この発明の前記ならびにほかの目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記のとおりである。
【００１１】
すなわち、本願の第１の発明は、フラッシュメモリのような電気的に書込み、消去可能な不揮発性半導体記憶装置に、正常な書込みまたは消去が不能な不良メモリセルを含むメモリセル群と不良メモリセルを含まないメモリセル群と置き換える代替処理機能と、各メモリセル群に対するデータ書換え回数を把握して複数のメモリセル群間で書換え回数に極端に大きな差が生じないようにメモリセル群と置き換える書換え回数平均化処理機能と、上記メモリアレイに記憶されたデータの誤りを検出し訂正するエラー訂正機能とを持たせ、上記代替処理機能による第１のアドレス変換情報および上記書換え回数平均化処理機能による第２のアドレス変換情報をそれぞれ上記メモリアレイの所定の領域に記憶し、同一のメモリセル群に関する上記第１のアドレス変換情報および第２のアドレス変換情報を時系列的に複数個記憶するように構成したものである。
【００１２】
上記した手段によれば、不揮発性半導体記憶装置が代替処理機能やエラー訂正機能を備えているため外部のコントローラによって代替処理やエラー訂正処理を行なう必要がなくなり、システム開発者の負担が軽減されるとともに、アドレス変換情報が複数個記憶されているため、いずれかのアドレス変換情報が失われても他のアドレス変換情報を代用することでシステムが動作しなくなるような異常な状態を回避できるようになる。
【００１３】
また、望ましくは、上記メモリアレイはいずれかのメモリセル群への書込みまたは消去動作の途中で電源が遮断されたときに互いに影響を与え合うことがない領域を２つ以上設け、上記複数個の第１のアドレス変換情報および第２のアドレス変換情報は、２つ以上の領域に順繰りに記憶させるように構成する。これにより、アドレス変換情報を記憶するいずれかの領域のデータが書込みまたは消去動作によって失われても他の領域に記憶されているアドレス変換情報は失われることがなく、システムが動作しなくなるような異常な状態を確実に回避できるようになる。
【発明の効果】
【００１４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、本発明に従うと、不揮発性半導体記憶装置が代替処理機能やエラー訂正機能を備えているため外部のコントローラによって代替処理やエラー訂正処理を行なう必要がなくなり、システム開発者の負担が軽減されるとともに、アドレス変換情報が複数個記憶されているため、いずれかのアドレス変換情報が失われても他のアドレス変換情報を代用することでシステムが動作しなくなるような異常な状態を回避できるようになる。
【００１６】
また、複数のアドレス変換情報が２つ以上の領域に順繰りに記憶されるため、アドレス変換情報を記憶するいずれかの領域のデータが書込みまたは消去動作によって失われても他の領域に記憶されているアドレス変換情報は失われることがなく、システムが動作しなくなるような異常な状態を確実に回避できるようになる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の一実施例を、図面を用いて説明する。
【００１８】
図１は、本発明を適用して有効な不揮発性半導体記憶装置の一例としてのフラッシュメモリの実施例のブロック図を示す。この実施例のフラッシュメモリは、外部のホストＣＰＵのようなコントローラとの間の信号の入出力を行なうホストインタフェース部１０１と、該ホストインタフェース部１０１を制御するインタフェース制御部１１０と、複数の不揮発性記憶素子（メモリセル）がマトリックス状に配置されたフラッシュ・メモリアレイ１２１とその周辺回路からなる記憶部１２０と、不良アドレスの管理などを行なう管理部１３０とから構成され、これらが単結晶シリコンのような１個の半導体チップ上に形成されている。
【００１９】
既存のフラッシュメモリには、外部端子の仕様が異なる複数種類のチップがあり、本実施例のフラッシュメモリは、このうちＮＡＮＤ型と呼ばれる仕様のチップと、ＡＮＤ型と呼ばれる仕様のチップと、ＳＡＮＤ（ＳｕｐｅｒＡＮＤ）型と呼ばれる仕様のチップのいずれのチップとしても見かけ上動作できるように構成されており、いずれのチップとして動作するかはボンディングオプションすなわちホストインタフェース部１０１に接続されている所定のボンディングパッドＢ．Ｏの設定状態に応じて決定されるようになっている。仕様が異なると外部端子の種類や配置が異なる。
【００２０】
特に制限されるものでないが、本実施例では記憶部１１０のフラッシュ・メモリアレイ１２１は複数のメモリセルがビット線とソース線との間に並列に接続されたＡＮＤ型で構成されており、上記ボンディングオプションによる設定でインタフェース部１１０が「ＡＮＤ」に設定されているときは、インタフェース部１１０へ入力された外部からのコマンドをそのまま記憶部１１０へ供給する。
【００２１】
インタフェース制御部１１０は、上記ボンディングオプションによる設定に応じて、インタフェース部１１０が「ＮＡＮＤ」に設定されているときはＮＡＮＤ仕様のコマンドをＡＮＤ仕様のコマンドに変換し記憶部へ供給するＮＡＮＤ／ＡＮＤインタフェース１１１と、インタフェース部１１０がＳＡＮＤに設定されているときはＳＡＮＤ仕様のコマンドを解析して記憶部１１０と管理部１３０に対する制御信号を生成するＳＡＮＤ／ＡＮＤインタフェース１１２と、これらのインタフェース１１１または１１２を介した信号と管理部１３０からの信号の記憶部１２０への選択を行なうインタフェース選択回路１１３とから構成されている。
【００２２】
記憶部１２０は、不揮発性記憶素子を含むフラッシュ・メモリアレイ部１２１と、該メモリアレイ部１２１に対するデータの書込み、消去に必要な電圧を発生する電源回路１２２と、フラッシュ・メモリアレイ部１２１に供給されるライトアドレスとライトデータおよびリードアドレスとフラッシュ・メモリアレイ部１２１から読み出されたリードデータを一時的に保持する２つのバッファメモリ１２３Ａ，１２３Ｂと、不良メモリセルを含む領域を所定の単位（例えば１２８セクタからなるセグメント）で正常な領域と代替した場合にアドレスの変換を行なう救済回路１２４と、上記電源回路１２２に対する起動信号を生成したり上記ホストインタフェース部１０１を介して入力されたアドレスを救済回路１２４に供給したりリードデータやライトデータの変換等を行なうＡＮＤ制御回路１２５とから構成されている。
【００２３】
フラッシュ・メモリアレイ部１２１には、メモリアレイの他、アドレスをデコードしてワード線を選択するデコーダやビット線の信号を増幅するセンスアンプなどが含まれる。メモリアレイ１２１を構成するメモリセルは、フローティングゲートとコントロールゲートを有するＭＯＳＦＥＴからなり、フローティングゲートに注入される電荷の量に応じてしきい値電圧が変化されることにより情報を記憶するようにされる。また、特に制限されるものでないが、バッファメモリ１２３Ａ，１２３ＢはＳＲＡＭにより構成されている。救済回路１２４によるセグメント単位の代替を行なうか否かはウェハテストの結果に基づいて決定される。
【００２４】
管理部１３０は、インタフェース制御部１１０と管理部１３０との間の信号のやり取りを行なう回路ブロック間インタフェース１３１と、チップ内部の動作を制御するＣＰＵのようなプログラム制御方式のコントローラからなるシーケンサ１３２と、該シーケンサの動作を制御コードからなるマイクロプログラムのような形式で記憶するシーケンス用ＲＯＭ１３３と、シーケンサが使用するレジスタ１３４と、アドレス変換テーブルを展開したりシーケンサ１３２の作業領域を提供するワークＲＡＭ１３５と、エラーのチェック及び訂正を行なうＥＣＣ回路１３６と、記憶部１２０とワークＲＡＭ１３５またはＥＣＣ回路１３６との間のデータ転送を制御するＤＭＡ転送制御回路１３７とから構成されている。
【００２５】
本実施例のフラッシュメモリにおいては、メモリアレイ１２１は１本のワード線に接続された２１１２バイトからなるメモリセル群（以下、セクタと称する）を単位として書込みを行なうように構成されている。また、メモリアレイ１２１は、通常領域と該通常領域内の不良メモリセルを含むセクタを代替する予備領域とに分けて管理するようにされている。そして、この通常領域内のセクタと予備領域内のセクタとを対応付ける不良アドレス管理テーブルが管理部１３０によって生成されてフラッシュ・メモリアレイ１２１内に記憶される。また、不良アドレス管理テーブルは通常動作時はワークＲＡＭ１３５に展開されて参照される。外部から入力されたアドレスが不良メモリセルを含むセクタを指定している場合は、この不良アドレス管理テーブルを参照して予備領域内の代替セクタを指定するアドレスに変換され、この変換アドレスによってフラッシュ・メモリアレイ１２１がアクセスされる。これにより、不良セクタの代替が行なわれる。
【００２６】
さらに、本実施例のフラッシュメモリにおいては、２種類の方式で代替処理が行なわれる。図２には、第１方式の代替処理の概念が示されている。この第１方式の代替処理では、フラッシュ・メモリアレイ１２１は、通常領域と該通常領域内の不良メモリセルを含むセクタを代替する予備領域とに分けられている。各セクタは、本来のデータ（ユーザデータ）を記憶するデータ領域と、当該セクタが不良メモリセルを含んでいるか否かを示すＭＧＭコードやエラー訂正コード等を記憶するセクタ管理情報領域とに分けられている。また、通常領域は各々ｎ個（例えばｎ＝１２８）のセクタを単位とするＮ個（例えばＮ＝６４）のセグメントにより構成されている。予備領域も通常領域のＮ個のセグメントに対応してＮ個のセグメント（ただしセクタ数は可変）により構成され、通常領域内のセグメントは予備領域内のセグメントと１：１で対応されている。
【００２７】
管理テーブルのセクタ管理情報は、代替元の不良セクタの位置を示す情報欄ＡＤＬと、代替セクタが良セクタまたは不良セクタであるかを示すフラグＦＬＧとからなるエントリＥＮＴにより構成される。例えば図２の代替セクタＮｎ＋２が不良であった場合には、対応するエントリのフラグに「１」がセットされる。管理テーブルの各エントリには、不良セクタの位置を示す情報が各セグメントの先頭アドレスからのオフセット値ＯＦＳとして登録される。また、管理テーブルのセクタ管理情報の各エントリは、予備領域の各セクタと１：１で対応されている。
【００２８】
管理部１３０は、書込み動作の結果、例えば図２の物理アドレス「２」のセクタが不良セクタであったときは、当該セクタが属する通常領域のセグメント０に対応する代替領域のセグメント０の代替セクタ（例えばＮｎ＋１）にデータを格納する。データが無事に格納できると、このセクタに対応する管理テーブルのエントリに、代替元のセクタのオフセット値「０００２ｈ」を格納するとともに、フラグを「０」にする。また、管理部１３０は、通常領域のセグメント０内のセクタをアクセスするときは、当該セクタのアドレスからオフセット値を計算し、管理テーブルのセグメント０のエントリを順に参照して不良セクタであるか否かを判定して、不良セクタとして登録されているときは当該エントリに対応する予備領域内のセクタをアクセスする。このとき、アドレス変換が行なわれる。
【００２９】
この代替方式は、通常領域をセグメントに分けて管理するため不良アドレス管理テーブルに登録するセクタ位置情報として物理アドレスの代わりにオフセット値とすることができるためテーブルのデータ量すなわちワークＲＡＭ１３５の記憶容量を少なくすることができる。また、管理テーブルの検索時間も短縮することができる。
【００３０】
図３には、第２方式の代替処理の概念が示されている。第１方式の代替処理ではフラッシュ・メモリアレイを通常領域と代替領域をそれぞれセグメントに分けているのに対し、第２の代替処理ではセグメントによる分割を行なわずに通常領域全体で生じた不良セクタを１つの代替領域内のいずれかのセクタで代替させるようにしている。この方式では、管理テーブルに登録する不良セクタ位置情報として物理アドレスを使用する必要があるため、テーブルのデータ量すなわちワークＲＡＭ１３５の記憶容量が多くなり、管理テーブルの検索時間も長くなるが、代替領域を効率良く利用できオフセット等の計算も不要であり、代替処理が簡単になるという利点がある。具体的には、第１の方式ではあるセグメントに不良セクタが後から集中して発生したような場合、予備領域のセグメントのサイズの変更が必要になるが、第２の方式ではそのような変更が不要である。
【００３１】
なお、上記第１の代替処理と第２の代替処理のいずれかを選択して適用するのではなく、テストの段階で検出された不良セクタの代替処理には第１の代替処理方式を適用し、出荷後の通常使用状態で生じた不良セクタの代替処理には第２の代替処理方式を適用するようにしてもよい。また、図４に示すように、代替領域に最大代替セクタ数可変の代替セグメント領域と最大代替セクタ数固定の代替セグメント領域と予備の代替領域とを設け、テストの段階で検出された不良セクタの代替処理には最大代替セクタ数可変の代替セグメント領域を用いた第１の代替処理方式を適用し、出荷後の通常使用状態で生じる不良セクタの代替処理には途中の段階まで最大代替セクタ数固定の代替セグメント領域を用いた第１の代替処理方式を適用し、代替セグメントのセクタを全て使用し終えたセグメントが発生した場合には予備の代替領域を用いた第２の代替処理方式を適用するようにしてもよい。
【００３２】
図５には、通常使用状態で生じる不良セクタの代替処理には途中の段階まで最大代替セクタ数固定の代替セグメント領域を用いた第１の代替処理方式を適用し、代替セグメントのセクタを全て使用し終えたセグメントが発生した場合には予備の代替領域を用いた第２の代替処理方式を適用したフラッシュメモリを用いたシステムにおける管理部の処理手順が示されている。ホストＣＰＵのような外部のコントロールデバイス（以下、外部デバイスと称する）がフラッシュメモリにコマンドとアドレスを送信するとフラッシュメモリがこれを受信して先ず受信した論理アドレスに基づいて対応するセグメントとオフセットを計算する（ステップＳ１，Ｓ２）。
【００３３】
次に、不良管理テーブルのセグメント管理情報を参照してアクセスしようとするセクタが不良セクタか否か判定する（ステップＳ３，Ｓ４）。不良セクタであったときはアドレス変換を行なってエントリに対応した代替セグメント内の代替セクタを指定する（ステップＳ５）。一方、ステップＳ４の判定で不良セクタでなかったときは、不良管理テーブルの予備代替領域管理情報を参照してアクセスしようとするセクタが不良セクタか否か判定する（ステップＳ６，Ｓ７）。そして、不良セクタであったときはアドレス変換を行なって予備代替領域内の対応する代替セクタを指定する（ステップＳ８）。
【００３４】
一方、ステップＳ４及びステップＳ７の判定で不良セクタでなかったときは、そのまま通常領域の対応するセクタを指定する（ステップＳ９）。その後、指定されたセクタをアクセスしてデータの読出し又は書込みを行なう（ステップＳ１０）。それから、受信コマンドがリードコマンドの時は読み出されたデータを、また受信コマンドがライトコマンドの時は書込み終了を示す信号もしくはステータスを外部デバイスへ送信して終了する（ステップＳ１１）。
【００３５】
図６には、通常領域と代替領域の各セクタの構成例が示されている。セクタは、例えば２０９６バイトのデータ領域と１６バイトのセクタ管理領域とに分けられており、このうちデータ領域の構成が図６（Ａ）に、またフラッシュメモリがＡＮＤまたはＮＡＮＤ仕様に設定された場合のセクタ管理領域の構成が図６（Ｂ）に示されている。図６（Ｃ）はフラッシュメモリがＳＡＮＤ仕様に設定された場合のセクタ管理領域の構成である。
【００３６】
各セクタのデータ領域は、図６（Ａ）に示されているように、各々５１２バイトの４つのページ領域Ｐａｇｅ０〜Ｐａｇｅ３と各ページ領域に対応されて管理情報を記憶する８バイトの管理領域と、１６バイトのエラー訂正コードＥＣＣ０，ＥＣＣ１を記憶する領域とから構成される。この実施例のフラッシュメモリにはデータ領域変更コマンドが用意されており、読出しコマンドのみが入力されると５１２バイトのページ領域Ｐａｇｅ０〜Ｐａｇｅ３のデータがチップ外部に読み出される。また、データ領域変更コマンドが入力された後、読出しコマンドが入力されると５１２バイトのページ領域Ｐａｇｅ０〜Ｐａｇｅ３および次の８バイトのデータを含む５２０バイトのデータがチップ外部に読み出されるようにされている。コマンド用いてデータ単位を替える代わりに、複数のコマンドを用意したり、ボンディングオプションで設定されたモードに応じて読出しのデータ単位が替わるように構成しても良い。また、各ページ領域の後の管理領域には対応するページ領域のデータのＥＣＣコードを格納するために使用するようにしても良い。
【００３７】
セクタ管理領域は、図６（Ｂ）に示されているように、当該セクタが良セクタか否かを示すＭＧＭコードを記憶する領域と、セクタの識別コードを記憶する領域と、管理領域の履歴を管理する管理ヘッダを記憶する領域と、書換え回数平均化処理（ＷＬ処理）用の管理情報（配列、消去回数）を記憶する領域と、エラー訂正コードＣＥＣＣ０，ＣＥＣＣ１，ＨＥＣＣを記憶する領域とから構成される。ＳＡＮＤ仕様に設定された場合のセクタ管理領域は、図６（Ｃ）に示されているように、書換え回数平均化処理用の管理情報を記憶する領域がＮＡＮＤやＡＮＤの場合よりも小さくされ、設定回数が記憶される一方、管理ヘッダを記憶する領域が大きくされている。
【００３８】
図７および図８には、管理テーブル領域の各セクタの構成例が示されている。このうち図７はセクタの全体構成、図８（Ａ）〜（Ｄ）は図７に示されている各領域の詳細構成を示す。管理テーブル領域の各セクタは、図７に示されているように、管理テーブルの領域を示す情報を記憶する領域設定領域と、セグメント単位で置き換えを行なう情報を記憶するスワップ管理領域と、代替セグメントの管理情報を記憶する領域と、予備代替領域の管理情報を記憶する領域と、書換え回数平均化処理用の管理情報を記憶する領域とに分けられている。図７には示されていないが、エラー訂正コードを記憶する領域も最後に設けられている。図８（Ａ）はスワップ管理領域の構成、図８（Ｂ）は代替セグメント管理領域の構成、図８（Ｃ）は予備代替領域管理領域の構成、図８（Ｄ）は書換え回数平均化処理管理領域の構成をそれぞれ示す。
【００３９】
次に、書換え回数平均化処理について説明する。
【００４０】
従来のフラッシュメモリにおける書換え回数平均化処理は、あるセクタの書換え回数が所定の回数に達したならば書換え回数の最も少ないセクタを探してアドレスの入れ替えを行なうものである。これに対し、本実施例のフラッシュメモリにおける書換え回数平均化処理は、図９に示されているように、フラッシュ・メモリアレイを例えば１０２４セクタを１つのブロックとするブロック単位で、あるセクタの書換え回数が所定の回数に達したならばそのセクタのデータを隣接するブロックの同一のオフセット位置のセクタに格納するようにアドレスを順次１ブロックずつローテーションさせる処理とされている。
【００４１】
具体的には、図９において、例えばブロック０のオフセット１のセクタの所定の書換え回数が、（Ａ）→（Ｂ）のようにｍ（例えばｍ＝１０００）に達したならば、（Ｃ）に示されているように、ブロック０のオフセット１のセクタのデータＢをブロック１のオフセット１のセクタに移して書き込み、ブロック１のオフセット１のセクタのデータＧをブロック２のオフセット１のセクタに移して書き込み、ブロック２のオフセット１のセクタのデータＪをブロック３のオフセット１のセクタに移して書き込むというように、ブロック間で順次シフトしてデータと書換え回数を格納する。また、上記データ書込み領域のシフトに連動して書換え回数平均化処理管理領域には、各オフセットごとにシフトした回数を書き込んで記憶するようにしている。
【００４２】
あるセクタの書換え回数が所定の回数に達したならば書換え回数の最も少ないセクタを探してアドレスの入れ替えを行なうという従来の書換え回数平均化処理は、書換え回数の最も少ないセクタを見つけるまでにかなり時間がかかるとともにアドレス変換テーブルのサイズが大きくなるという欠点がある。これに対し、本実施例のシフト方式の書換え回数平均化処理によれば、データを移すセクタを決定する処理が簡単で短時間に終了するとともに、移転先のアドレスは演算で得ることができるためアドレス変換テーブルが不要になるという利点がある。シフト回数を記憶する書換え回数平均化処理管理領域には数ビットのシフト回数を記憶するだけでよいので、アドレスを記憶する場合よりも記憶領域をはるかに小さくすることができる。
【００４３】
次に、ワークＲＡＭ１３５について説明する。
【００４４】
本実施例のフラッシュメモリにおいては、電源投入時にメモリアレイ１２１の管理テーブル領域に格納されているテーブルデータをワークＲＡＭ１３５に読み出して展開し、電源オン中はテーブルデータの更新があってもメモリアレイ１２１の書換えはせず、電源遮断時にワークＲＡＭ１３５内のデータをメモリアレイ１２１の管理テーブル領域に格納するように構成されている。しかも、本実施例においては、図１０に示されているように、メモリアレイに用意された２つの管理テーブル領域を交互に使用してテーブルデータを格納するとともに、各管理テーブル領域をさらに複数の領域（例えば８個）に分けて、順番に格納するように構成されている。なお、電源オン中にテーブルデータの更新があった場合にはワークＲＡＭ上の管理テーブルのデータを書き換えるとともにメモリアレイ１２１の対応する管理テーブル領域のテーブルデータを書き換えるようにしてもよい。
【００４５】
上記のように、フラッシュ・メモリアレイ１２１の管理テーブル領域に格納されているテーブルデータをワークＲＡＭ１３５に読み出して展開することにより、アクセスアドレスが不良セクタのアドレスか否かの判定および代替セクタのアドレスの取得を短時間に行なうことができる。また、２つの管理テーブル領域に交互にテーブルデータを格納するように構成することにより、書換え中の電源遮断等によって一方の管理テーブル領域のデータがすべて失われても一世代の前の管理テーブルのデータを再現することができる。また、各管理テーブル領域を複数の領域に分けて順番に格納するように構成することにより、管理テーブル領域内での書換え平均化処理が実現され、書換え回数が書換え耐数以上になってデータの信頼性が低下するのを回避することができる。
【００４６】
なお、本実施例の場合、テーブルデータは２０９６バイトの記憶容量を有する１セクタのデータ領域に収まるデータ量であるため、１つの管理テーブル格納領域は１つのセクタに対応され、管理テーブル領域０と１はそれぞれ１ブロックに対応して設けられている。また、図１０において、管理ヘッダは各領域に格納されている管理テーブルの時間的な順番を示している。つまり、最も大きな管理ヘッダがついている領域に格納されている管理テーブルが最新のテーブルで、最も小さな管理ヘッダがついている領域に格納されている管理テーブルが最も古いテーブルであることを意味している。従って、シーケンサ１３２は、フラッシュ・メモリアレイ１２１内の管理テーブル領域のすべての管理ヘッダを参照してそのうち最も値が大きなテーブルデータを読み出せばそれが最新の管理テーブルとなる。
【００４７】
図１０には、管理テーブル領域（１）の管理ヘッダ「１５」の領域に格納されている管理テーブルをワークＲＡＭ１３５に読み出してフラッシュ・メモリアレイへの書込みに応じて更新し、管理テーブル領域（０）の管理ヘッダ「０」の領域に格納する様子が示されている。ワークＲＡＭに読み出した直後の管理テーブルの管理ヘッダには「１５」が記述され、メインアドレス欄には当該テーブルが格納されていたセクタアドレス「２００７ｈ」が記述され、予備テーブルアドレス欄には一つの前に管理テーブルが格納されていたセクタアドレス「２１７Ｆｈ」（管理ヘッダ＝「１４」）が記述されている。
【００４８】
そして、このＲＡＭ上にロードされた管理テーブルは更新されて、管理テーブルの管理ヘッダは「１５」から「１６」に変更され、メインテーブルアドレス欄には当該テーブルが次に格納される管理テーブル領域（０）の最も管理ヘッダの値が小さな領域（図１０では管理ヘッダ＝「０」）のセクタアドレス「２１７８ｈ」が記述され、予備テーブルアドレス欄には読み出されたときに格納されていたセクタアドレス「２００７ｈ」（管理ヘッダ＝「１５」）が記述される。電源遮断時には、更新後のメインテーブルアドレス欄のセクタアドレスに従ってＲＡＭ上の管理テーブルデータが格納される。
【００４９】
ここで、予備テーブルなる語を使用しているのは、本実施例の管理テーブル格納方式に従うと、何らかの原因で現在つまり最新の管理テーブルデータが失われたり損傷したりした場合には、１つの前の管理テーブルを読み出して利用することができるためである。１つ前の管理テーブルデータに異常があれば、さらにその１つ前の管理テーブルデータを利用することができる。これによって、システムにとって重要なデータを修復することができ、メモリを認識できなくなったりシステムが起動しなくなったりするような異常な事態が発生するのを極力回避することができるようになる。
【００５０】
図１１には、ワークＲＡＭ１３５の構成例が示されている。図１１に示されているように、ワークＲＡＭ１３５は良セクタコード格納領域ＧＣＡ、識別コード格納領域ＤＣＡ、管理ヘッダ格納領域ＭＨＡ、書換え回数平均化処理の設定格納領域ＲＮＡ、不良管理テーブル格納領域ＩＭＡ、書換え回数平均化処理管理テーブル格納領域ＲＭＡ、シーケンサのワーク領域ＷＫＡ、読出し時の管理テーブルが格納されていたアドレスを示すメインテーブルアドレス格納領域ＭＡＡ、前回の読出し時の管理テーブルが格納されていたアドレスを示す予備テーブルアドレス格納領域ＲＡＡからなる。
【００５１】
ワーク領域ＷＫＡ以外のデータは電源投入時にフラッシュ・メモリアレイ１２１から読み出されてワークＲＡＭ１３５の各領域に展開される。動作中に不良セクタが新たに検出された場合における代替処理に伴う不良管理テーブルの更新や、書換え回数が所定の回数に達したセクタが発生した場合における書換え回数平均化処理に伴う管理テーブルの更新は、ワークＲＡＭ１３５上にて行なわれる。メインテーブルアドレスと予備テーブルアドレスの更新は、ワークＲＡＭ１３５のデータをフラッシュ・メモリアレイ１２１に格納する際に行なわれる。
【００５２】
図１２には、電源投入時にフラッシュ・メモリアレイ１２１からワークＲＡＭ１３５へ管理テーブル領域のデータを読み出す処理の手順が示されている。
【００５３】
シーケンサ１３２は、先ずフラッシュ・メモリアレイの管理テーブル領域（０）を検索する（ステップＳ２１）。そして、識別コードを調べて有効な管理テーブルデータがあるか否か判定する（ステップＳ２２）。ここで、管理テーブル領域（０）内に有効な管理テーブルデータがないときは、ステップＳ３３へ移行して管理テーブル領域（１）を検索して、識別コードを調べて有効な管理テーブルデータがあるか否か判定する（ステップＳ３４）。ここで、管理テーブル領域（１）内に有効な管理テーブルデータがないときはエラーとして処理を終了する。
【００５４】
一方、ステップＳ３４で管理テーブル領域（１）内に有効な管理テーブルがあったときは、管理ヘッダを参照して管理テーブル領域（１）内で管理ヘッダが最大値であるテーブルのデータをワークＲＡＭへロードし、当該テーブルのアドレスをメインテーブルアドレスとして登録する（ステップＳ３５）。それから、当該テーブルデータを管理テーブル領域（０）に複写するテーブルコピー処理（ステップＳ４０）へ移行する。一方の管理テーブル領域のデータが破壊されてしまったような場合に他方の管理テーブル領域のデータを複写することにより、両方の管理テーブル領域に有効なテーブルデータがなくなってしまう事態を回避するためである。
【００５５】
上記ステップＳ２２で、識別コードを調べて管理テーブル領域（０）内に有効な管理テーブルデータがあると判定したときは、ステップＳ２３へ移行して管理テーブル領域（０）の全セクタから管理ヘッダを読み出し、管理ヘッダが最大値であるテーブルのデータをワークＲＡＭへロードし、当該テーブルのアドレスをメインテーブルアドレスとして登録する（ステップＳ２４）。次に、管理テーブル領域（１）を検索する（ステップＳ２５）。そして、識別コードを調べて有効な管理テーブルデータがあるか否か判定する（ステップＳ２６）。ここで、管理テーブル領域（１）内に有効な管理テーブルデータがないときは、ステップＳ４０のテーブルコピー処理へ移行して管理テーブル領域（１）に管理テーブル領域（０）から読み出したデータをコピーする。
【００５６】
ステップＳ２６で管理テーブル領域（１）内に有効な管理テーブルがあると判定するとステップＳ２７へ移行して、管理テーブル領域（１）の全セクタから管理ヘッダを読み出し、管理テーブル領域（１）の管理ヘッダのうち最大値のものと管理テーブル領域（０）の管理ヘッダのうち最大値のものとを比較する（ステップＳ２８）。そして、管理テーブル領域（１）の管理ヘッダの最大値の方が大きい時はステップＳ２９からステップＳ３０へ移行して管理テーブル領域（１）内の管理ヘッダが最大値であるセクタのテーブルデータをワークＲＡＭへロードし、当該テーブルのアドレスをメインテーブルアドレスとして登録するとともに、管理テーブル領域（０）内の管理ヘッダが最大値であるセクタのテーブルのアドレスを予備テーブルアドレスとして登録する（ステップＳ３１）。一方、ステップＳ２９で管理テーブル領域（０）の管理ヘッダの最大値の方が管理テーブル領域（１）の管理ヘッダの最大値よりも大きいと判定したときは、ステップＳ３２へ移行して管理テーブル領域（１）内の管理ヘッダが最大値であるセクタのテーブルのアドレスを予備テーブルアドレスとして登録する。
【００５７】
図１３には、図１２のフローチャートのステップＳ４０におけるテーブルコピー処理の詳細な手順が示されている。
【００５８】
このテーブルコピー処理では、先ず発見したテーブルが管理テーブル領域（０）にあるか判定する（ステップＳ４１）。そして、発見したテーブルが管理テーブル領域（０）にあるときはステップＳ４２で領域設定情報の管理テーブル領域（１）の先頭アドレスをフラッシュ・メモリアレイ内のテーブル格納先頭アドレスとする。また、発見したテーブルが管理テーブル領域（１）にあるときはステップＳ４３で領域設定情報の管理テーブル領域（０）の先頭アドレスをフラッシュ・メモリアレイ内のテーブル格納先頭アドレスとする。それから、既にワークＲＡＭにロードされているテーブルデータを上記格納先頭アドレスからフラッシュ・メモリアレイに書き込む（ステップＳ４４）。
【００５９】
そして、正常に書込みが終了したか否か判定し、正常に書込みが終了したときは当該先頭アドレスを予備テーブルアドレスとしてワークＲＡＭの予備テーブルアドレス欄に登録する（ステップＳ４５，Ｓ４６）。また、ステップＳ４４で正常に書込みが終了しなかったときは、ステップＳ４７で同一管理テーブル領域内における次のセクタをテーブルデータを格納するアドレスとし、ステップＳ４４へ戻ってワークＲＡＭにロードされているテーブルデータを書き込む。そして、管理テーブル領域内の全セクタに対して書込みをトライしても正常にテーブルデータを書き込めなかったときは書込みエラーとして処理を終了する（ステップＳ４８）。
【００６０】
図１４には、ワークＲＡＭ１３５からフラッシュ・メモリアレイ１２１へ管理テーブル領域のデータを格納する処理の手順が示されている。
【００６１】
このテーブル格納処理では、先ずワークＲＡＭ上のテーブル管理ヘッダをインクリメント（＋１）する（ステップＳ５１）。次に、予備テーブルアドレスの次のアドレスをフラッシュ・メモリアレイ内のテーブル格納先アドレスとする（ステップＳ５２）。それから、ワークＲＡＭ上にあるテーブルデータをフラッシュ・メモリアレイの上記格納先アドレスに書き込む（ステップＳ５３）。
【００６２】
そして、正常に書込みが終了したか否か判定し、正常に書込みが終了したときはテーブルアドレスを入れ替える。つまり、メインテーブルアドレスを予備テーブルアドレスとしてワークＲＡＭの予備テーブルアドレス欄に登録し、フラッシュ・メモリアレイの最新テーブルアドレスをメインテーブルアドレスとしてワークＲＡＭの予備テーブルアドレス欄に登録する（ステップＳ５４，Ｓ５５）。また、ステップＳ５４で正常に書込みが終了しなかったときは、ステップＳ５６で同一管理テーブル領域内における次のセクタをテーブルデータを格納するアドレスとし、ステップＳ５３へ戻ってワークＲＡＭに記憶されているテーブルデータをフラッシュ・メモリアレイに書き込む。そして、管理テーブル領域内の全セクタに対して書込みをトライしても正常にテーブルデータを書き込めなかったときは書込みエラーとして処理を終了する（ステップＳ５７）。なお、電源遮断時に上記テーブル格納処理を実行するときはステップＳ５５のテーブルアドレスの入替えは不要である。
【００６３】
図１５には、本実施例のフラッシュメモリにおけるアドレス変換処理の手順が示されている。該アドレス変換処理は、アクセスアドレスを伴うデータの読出し、書込みまたは消去コマンドが入力されると実行される。
【００６４】
アドレス変換処理では、先ず書換え回数平均化処理の管理情報をワークＲＡＭから読み出ししてアクセスアドレスに対応するブロックシフト数を選択する（ステップＳ６１）。次に、選択したブロックシフト数に従って前記アクセスアドレスを変換する（ステップＳ６２）。それから、変換後のアドレスに基づいてオフセット値を計算しそのオフセット値を用いて不良管理テーブル上の対応セグメントの管理情報を選択する（ステップＳ６３）。そして、管理テーブルを検索して当該アドレスのセクタが不良セクタとして登録されているか判定する（ステップＳ６４）。ここで、アクセスしようとするセクタが不良セクタとして登録されていれば、対応する代替セグメントの代替セクタアドレスを得る代替アドレス変換を行なう（ステップＳ６５）。一方、ステップＳ６４でアクセスしようとするセクタが不良セクタとして登録されていないときは、代替アドレス変換をせずに最終アドレスとする（ステップＳ６６）。
【００６５】
次に、本実施例のフラッシュメモリの電源投入時の動作について、図１６を用いて説明する。この実施例のフラッシュメモリには、特に制限されないが、電源電圧のレベルを検出する電源電圧検出回路がホストインタフェース部１０１に設けられており、この電源電圧検出回路による電源電圧の立ち上がり検出信号がインタフェース制御部１１０に供給され、内部回路が起動される（ステップＳ７１）。インタフェース制御部１１０が立ち上がり検出信号を受けると管理部１３０に対して起動コマンドを発行する（ステップＳ７２）。
【００６６】
すると、管理部１３０では、シーケンサ１３２が初期化され、フラッシュ部１２０からワークＲＡＭ１３５へ管理テーブルデータをロードする処理を実行する（ステップＳ７３，Ｓ７４）。管理テーブルデータのロードが終了すると、管理部１３０からインタフェース制御部１１０に対して終了信号が送られ、インタフェース制御部１１０は外部デバイスから入力されているＰＲＥ（プリロードイネーブル）信号が有効レベル（例えばハイレベル）にアサートされているか否かを判定し、ＰＲＥ信号がアサートされていないときは外部からのコマンド入力を待つスタンバイ状態に移行する（ステップＳ７５，Ｓ７６）。
【００６７】
一方、ＰＲＥ信号がアサートされているときはフラッシュ・メモリアレイ１２１のアドレス０番地のセクタのデータをバッファメモリ１２３Ａを介して外部へ出力可能な自動読出し状態へ移行する（ステップＳ７７）。なお、ステップＳ７６のスタンバイ状態または自動読出し状態に移行すると、所定の外部端子から出力される本動作のレディまたはビジーを示す信号／ＭＲＥＳがレディ状態を示すハイレベル（もしくはロウレベル）に変化されるように構成されている。
【００６８】
図１７には、パワーオン時に自動読出しを行なう場合のタイミングが示されている。この自動読み出しは、電源投入時に外部デバイスがＰＲＥ信号をハイレベルにアサートしておくことにより実行される。
【００６９】
電源投入時にＰＲＥ信号がハイレベルにアサートされた状態でフラッシュメモリが起動されると、管理部１３０へ起動コマンドが送られて管理部が初期化された後、管理テーブルのロードが行なわれ、ロード完了後にインタフェース制御部１１０から管理部１３０に対して自動読出しコマンドと０番地を示すアドレスが供給される。すると、シーケンサ１３２はこの管理テーブルを参照して必要があるときはアドレス変換を行なって変換後のアドレスとリードコマンドとをフラッシュ部１２０へ供給する。これによって、フラッシュ・メモリアレイ１２１の０番地のセクタのデータが読み出されてバッファメモリ１２３Ａに格納される。
【００７０】
次に、シーケンサ１３２は読み出されたデータをＥＣＣ回路１３６へ送ってエラーチェックと訂正を行なわせ、ＥＣＣ処理が終了すると管理部１３０からインタフェース制御部１１０に対して転送可能を示す信号が送られ、インタフェース制御部１１０はホストインタフェース部１０１から出力される本動作のレディまたはビジーを示す信号／ＭＲＥＳをハイレベルに変化させる。外部デバイスが、この信号／ＭＲＥＳの変化を検出してリードクロックＲＣＫをフラッシュメモリに入力すると、上記バッファメモリ１１３Ａに保持されているデータがホストインタフェース部１０１を介して外部デバイスへ転送される。
【００７１】
図１８には、書込み処理で書込み異常が発生した場合の手順が示されている。なお、この明細書においては、１セクタのデータ領域の全メモリセルに対してデータを書き込む場合を書込みと称し、１セクタのデータ領域の一部のメモリセルに対してデータを書き込む場合を書換えと称し、書込みと書換えを区別して扱う。
【００７２】
外部デバイスからの書込みコマンドに応じて書込み動作（ステップＳ８１）が終了し、ベリファイ動作によって書込み異常が検出されると記憶部１２０から管理部１３０に対して異常終了を知らせる信号が送られる（ステップＳ８２）。すると、管理部は、当該書込みアドレスを不良アドレスとしてワークＲＡＭ１３５内の管理テーブルに登録する（ステップＳ８３）。そして、代替領域の正常セクタと置き換えるアドレス変換を行ない、変換後のアドレスを書込みアドレスとして、記憶部１２０へ書込みコマンドとアドレスを送る（ステップＳ８４）。すると、記憶部では、代替されたセクタに対して書込みを実行する（ステップＳ８５）。そして、書込みが正常に終了すると記憶部から管理部に対して正常終了を知らせる信号が送られる。
【００７３】
次に、管理部は、消去エラーフラグが立っているかチェックし、フラグが立っている時はワークＲＡＭにある管理テーブルをフラッシュ・メモリアレイに格納する（ステップＳ８６，Ｓ８７）。消去エラーフラグが立っていないときまたは管理テーブルをフラッシュ・メモリアレイに格納後、管理テーブルの書換えを行なったセクタの書換え回数をチェックして所定回数に達していないときはインタフェース制御部に終了信号を送り、インタフェース制御部はホストインタフェース部を制御してチップ外部へ終了信号を出力する（ステップＳ８８）。書換え回数が所定回数以上になっていたときは、書換え回数平均化処理によってブロックシフトを行なってからインタフェース制御部に終了信号を送り、インタフェース制御部はホストインタフェース部を制御してチップ外部へ終了信号を出力する（ステップＳ８９）。
【００７４】
なお、消去フラグに関しては、ステップＳ８１の書込み動作で先ず書込み対象のセクタのデータ消去を行なうので、そのデータ消去の際に異常が発生すると消去フラグが立てられるとともに代替処理が行なわれてワークＲＡＭ内の管理テーブルが更新される。そこで、この実施例では、書込み終了後に消去エラーフラグが立っているかチェックし、消去フラグが立っている時はワークＲＡＭにある管理テーブルをフラッシュ・メモリアレイに格納するようにしている。
【００７５】
図１９には、本実施例のフラッシュメモリにおけるデータ消去処理で消去異常が発生した場合の手順が示されている。なお、この消去処理には、外部デバイスからの消去コマンドと書込みコマンドによる書込み前の一旦消去が含まれる。
【００７６】
外部デバイスからの消去コマンドまたは書込みコマンドに応じて指定されたセクタのデータ消去動作（ステップＳ９１）が終了し、ベリファイ動作によって消去異常が検出されると記憶部１２０から管理部１３０に対して異常終了を知らせる信号が送られる（ステップＳ９２）。すると、管理部は、当該消去アドレスまたは書込みアドレスを不良アドレスとしてワークＲＡＭ内の管理テーブルに登録する（ステップＳ９３）。そして、代替領域の正常セクタと置き換えるアドレス変換を行ない、変換後のアドレスを消去アドレスとして、記憶部へ消去コマンドとアドレスを送る（ステップＳ９４）。すると、記憶部では、代替されたセクタに対して消去を実行する（ステップＳ９５）。そして、消去が正常に終了すると記憶部から管理部に対して正常終了を知らせる信号が送られる。特に制限されないが、管理部はステップＳ９２で異常終了を知らせる信号が送られてきた場合、当該消去動作を行ったセクタのメモリセルのしきい値電圧を高くする処理を行い、しきい値電圧が０ｖ以下（デプリート状態）になっているメモリセルのしきい値電圧を０ｖ以上にするようにしても良い。
【００７７】
次に、管理部は、消去エラーフラグを立ててから、インタフェース制御部に終了信号を送り、インタフェース制御部はホストインタフェース部を制御してチップ外部へ終了信号を出力する（ステップＳ９６）。なお、書込みコマンドに応じて消去を行なったときは、終了信号を出力せずに図１８の書込み処理へ移行する。
【００７８】
図２０には、本実施例のフラッシュメモリにおける通常のデータ読出し動作の流れが示されている。この通常データ読出しは、外部デバイスからフラッシュメモリに対して読出しコマンドと読出しアドレスが入力されることにより開始される。読出しアドレスはセクタアドレスＳＡとセクタ内の任意のバイトデータを指定するカラムアドレスＣＡとからなる。
【００７９】
入力された読出しコマンドはインタフェース制御部を制御して管理部へ送られ、管理部では管理テーブルを用いてアドレス変換を行なう。このアドレス変換には書換え回数平均化処理でブロックシフトされたアドレスと不良アドレス代替処理で代替されたアドレスとが含まれる。アドレス変換後、管理部から記憶部に対して読出しコマンドと変換後のアドレスＳＡ’，ＣＡが送られる。すると、記憶部ではフラッシュ・メモリアレイ１２１の指定されたセクタのデータとその次のセクタのデータが読み出されてバッファメモリ１２３Ａと１２３Ｂにそれぞれ保持される。
【００８０】
バッファメモリへのデータの読出しが完了すると完了を知らせる信号が記憶部から管理部へ送られ、この信号に応じて管理部はＤＭＡ制御回路１３７とＥＣＣ回路１３６を制御して先ずバッファメモリ１２３Ａのデータに関してエラー検出訂正処理を行ない、該ＥＣＣ処理が終了するとインタフェース制御部に対して転送可能を知らせ、インタフェース制御部はレディ／ビジーを示す信号／ＲＢを用いてレディ状態になったことを外部デバイスへ知らせる。
【００８１】
すると、外部デバイスからのクロックの入力に応じてバッファメモリ１２３Ａ内のデータがチップ外部へ出力され、外部デバイスへ転送される。また、上記データ転送と並行してバッファメモリ１２３Ｂのデータに関してエラー検出訂正処理が実行される。このＥＣＣ処理が終了するとインタフェース制御部に対してバッファメモリ１２３Ｂのデータの転送可能が知らされ、バッファメモリ１２３Ａのデータの転送完了が終了すると、外部デバイスからの要求に応じてバッファメモリ１２３Ｂのデータの転送が開始される。
【００８２】
図２１には、本実施例のフラッシュメモリにおけるシーケンシャル読出し動作の流れが示されている。このシーケンシャル読出しは、外部デバイスからフラッシュメモリに対してシーケンシャル読出しコマンドと読出しアドレスが入力されることにより開始され、外部デバイスがクロックを入力し続ける限り読出しアドレス以降のすべてのデータを読み出せるようにした機能である。シーケンシャル読出しは図２０の通常読出しと類似した手順で行なわれる。
【００８３】
図２０の通常読出しとの違いは、図２０の通常読出しでは最初に第１のバッファメモリ１２３Ａと第２のバッファメモリ１２３Ｂにデータを読み出して一方のバッファメモリ１２３Ａのデータを外部へ転送している間に他方のバッファメモリ１２３Ｂのデータに対するエラー訂正処理を行なうのに対し、シーケンシャル読出しでは、一方のバッファメモリ１２３Ａへのデータ読出しとエラー訂正を行ない外部デバイスへ転送可能を知らせている間に他方のバッファメモリ１２３Ｂへのデータ読出しを行なうとともに、一方のバッファメモリ１２３Ａのデータを外部へ転送している間に他方のバッファメモリ１２３Ｂのデータに対するエラー訂正処理を行なう点と、シーケンシャル読出しでは、一方のバッファメモリのデータ転送終了後にインタフェース制御部から管理部に対してその都度シーケンシャル読出しコマンドを送る点にある。
【００８４】
図２２には、本実施例のフラッシュメモリにおけるデータの書換え動作の流れが示されている。データの書換えは、外部デバイスからフラッシュメモリに対して書換えコマンドと書換えアドレスおよび書換えデータが入力されることにより開始される。書込みアドレスはセクタを指定するセクタアドレスＳＡのみであるが、書換えアドレスはセクタアドレスＳＡとセクタ内の任意のバイトデータを指定するカラムアドレスＣＡとからなる。入力された書換えデータは第１のバッファメモリ１２３Ａに一旦格納される。インタフェース制御部は、書換えコマンドを受けると管理部に対して読出しコマンドを発行するとともに、入力される書換えデータのバイト数を計数して管理部に対して転送データサイズを知らせる。
【００８５】
すると、管理部は管理テーブルを用いてアドレス変換を行ない、読出しコマンドと変換後のアドレスＳＡ’，ＣＡを記憶部へ送る。記憶部ではフラッシュ・メモリアレイ１２１の指定されたセクタのデータ領域のデータ（２０９６バイト）とセクタ管理領域の管理データ（１６バイト）が読み出されて第２のバッファメモリ１２３Ｂに保持される。バッファメモリ１２３Ｂへのデータの読出しが完了すると完了を知らせる信号が記憶部から管理部へ送られ、この信号に応じて管理部はＤＭＡ制御回路１３７とＥＣＣ回路１３６を制御してバッファメモリ１２３Ｂのデータに関してエラー検出訂正処理を行なう。
【００８６】
そして、該ＥＣＣ処理が終了すると管理部はＤＭＡ制御回路１３７を制御して第１のバッファメモリ１２３Ａに保持されている書換えデータを第２のバッファメモリ１２３Ｂへ転送してデータを合成する。具体的には、フラッシュ・メモリアレイから読み出された１セクタの２１１６２バイトのデータのうち外部デバイスがカラムアドレスＣＡで指定した位置のデータを、第１のバッファメモリ１２３Ａに保持されている書換えデータに置き換える。それから、管理部はＤＭＡ制御回路１３７とＥＣＣ回路１３６を制御して、書換え後の第２のバッファメモリ１２３Ｂ内のデータに対してＥＣＣコードの生成を行なう。
【００８７】
その後、記憶部に対して消去コマンドとアドレスを送って書換え対象のセクタのデータ消去を行なわせる。消去が終了すると記憶部から管理部へ終了信号が出力されるので、管理部は記憶部に対して書込みコマンドとアドレスを送って書換え対象のセクタにバッファメモリ１２３Ｂのデータを書き込ませる。書込みが終了すると記憶部から管理部へ終了信号が出力されるので、管理部はインタフェース制御部に終了信号を送り、インタフェース制御部はホストインタフェース部を制御して外部デバイスへ終了信号を出力する。
【００８８】
図２３には、本実施例のフラッシュメモリにおけるデータの消去動作の流れが示されている。データの消去は、外部デバイスからフラッシュメモリに対して消去コマンドと消去アドレスが入力されることにより開始される。なお、この実施例では、消去はセクタ単位で行なわれる。
【００８９】
消去コマンドが入力されると、インタフェース制御部１１０から第１のバッファメモリ１２３Ａに対してクリア信号を送って全データをクリアさせるとともに、管理部１２に対して読出しコマンドとアドレスを送る。このアドレスは消去対象のセクタを指定するアドレスである。読出しコマンドを送るのは、図６に示されているように、各セクタには本来のデータを記憶するデータ領域の他にセクタ管理情報を記憶する管理領域が設けられており、セクタ単位で消去を実行すると、この管理情報も消去されてしまうので、予めバッファメモリに退避させておくためである。
【００９０】
読出しコマンドを受けると管理部は管理テーブルを用いてアドレス変換を行ない、読出しコマンドと変換後のアドレスＳＡ’，ＣＡを記憶部へ送る。記憶部ではフラッシュ・メモリアレイ１２１の指定されたセクタのデータ領域のデータ（２０９６バイト）とセクタ管理領域の管理データ（１６バイト）が読み出されて第２のバッファメモリ１２３Ｂに保持される。バッファメモリ１２３Ｂへのデータの読出しが完了すると完了を知らせる信号が記憶部から管理部へ送られ、この信号に応じて管理部はＤＭＡ制御回路１３７とＥＣＣ回路１３６を制御してバッファメモリ１２３Ｂのデータに関してエラー検出訂正処理を行なう。
【００９１】
そして、該ＥＣＣ処理が終了すると管理部はＤＭＡ制御回路１３７を制御して第１のバッファメモリ１２３Ａに保持されているクリアデータ（メモリセルの消去状態に対応したデータ）を第２のバッファメモリ１２３Ｂへ転送してデータを合成する。具体的には、フラッシュ・メモリアレイから読み出された１セクタの２１１６２バイトのデータのうちセクタ管理領域に記憶されている１６バイトのセクタ管理情報を除く２０９６バイトのデータを、第１のバッファメモリ１２３Ａに保持されているクリアデータに置き換える。それから、管理部はＤＭＡ制御回路１３７とＥＣＣ回路１３６を制御して、書換え後の第２のバッファメモリ１２３Ｂ内のデータに対してＥＣＣコードの生成を行なう。
【００９２】
その後、記憶部に対して消去コマンドとアドレスを送って消去対象のセクタのデータ消去を行なわせる。消去が終了すると記憶部から管理部へ終了信号が出力されるので、管理部は記憶部に対して書込みコマンドとアドレスを送って書換え対象のセクタにバッファメモリ１２３Ｂのデータを書き込ませる。これによって、指定されたセクタにはＥＣＣコードと第２のバッファメモリ１２３Ｂに退避されていたセクタ管理情報が書き込まれる。書込みが終了すると記憶部から管理部へ終了信号が出力されるので、管理部はインタフェース制御部に終了信号を送り、インタフェース制御部はホストインタフェース部を制御して外部デバイスへ終了信号を出力する。
【００９３】
図２４には、本実施例のフラッシュメモリにおけるディープスタンバイモードへの移行とディープスタンバイモードから通常動作モードへの復帰動作の流れが示されている。
【００９４】
本実施例のフラッシュメモリには、記憶部１２０の電源回路１２２内の昇圧用チャージポンプを完全にオフ状態にさせるディープスタンバイモードと、チップを該ディープスタンバイモードへ移行させるためのコマンドとディープスタンバイモードから復帰させるためのコマンドが用意されている。外部デバイスからフラッシュメモリに対してディープスタンバイ移行コマンドが入力されると、インタフェース制御部から記憶部へディープスタンバイモードへの移行を指令するディープスタンバイ信号がアサートされる。
【００９５】
すると、記憶部は電源回路１２２内の昇圧用チャージポンプへ供給されるクロックを遮断もしくはクロック生成回路の動作を停止させてチャージポンプをオフ状態にさせる。これにより、フラッシュメモリは、消費電力が非常に少ない状態にされる。また、外部デバイスからフラッシュメモリに対してディープスタンバイからの復帰コマンドが入力されると、インタフェース制御部から記憶部へ供給されるディープスタンバイ信号がネゲートされる。すると、記憶部は電源回路１２２内の昇圧用チャージポンプへのクロックの供給を再開もしくはクロック生成回路を起動させてチャージポンプをオン状態にさせる。これにより、メモリアレイへの書込みや消去に必要な高電圧が発生されるようになる。
【００９６】
図２５には、本実施例のフラッシュメモリにおけるいわゆるホットリスタートと呼ばれる電源投入時に行なわれる動作（図１７参照）と類似の動作の流れが示されている。
【００９７】
図１７のパワーオン時の自動読出しでは、管理テーブルのロード完了後にインタフェース制御部１１０から管理部１３０に対して読出しコマンドとメモリアレイ１２１の０番地を示すアドレスが供給されてメモリアレイの先頭番地のデータが読み出されて外部へ出力されるのに対し、図２５のホットリスタートでは、フラッシュメモリの所定の外部端子に入力されるＰＲＥ信号がロウレベルに変化されると、本動作のレディまたはビジーを示す信号／ＭＲＥＳをビジー状態を示すロウレベルに変化させた後、管理テーブルをロードせずに管理部に対してリードコマンドとメモリアレイの０番地を示すアドレスが送られてメモリアレイの先頭番地のデータが読み出されて外部へ出力される。管理テーブルをロードしないのは、ホットリスタートは電源投入中に行なわれる動作であり、電源投入時にロードされた管理テーブルがすでにワークＲＡＭに保持されているためである。
【００９８】
ＰＲＥ信号はホストＣＰＵのような外部デバイスがロウレベルに変化させるようにしてもよいが、図２６に示すように、フラッシュメモリ１００のＰＲＥ信号が入力される外部端子にリセットスイッチＲ−ＳＷを接続し、フラッシュメモリ１００から出力されるレディまたはビジーを示す信号／ＭＲＥＳをホストＣＰＵ２００のリセット端子に入力させるようにシステムを構成するとともに、フラッシュメモリのメモリアレイの先頭（０番地）にシステムの起動時に最初に実行するプログラムを格納しておくことにより、フラッシュメモリをブートデバイスとして機能させることができる。
【００９９】
例えばリセットスイッチＲ−ＳＷを図２６のように電源電圧端子Ｖｃｃ側に設定した状態で図示しないパワースイッチをオンさせてシステムの電源を立ち上げると、図２７（Ａ）のように電源電圧Ｖｃｃの上昇とともにＰＲＥ信号がハイレベルに立ち上がる。そのため、このときフラッシュメモリは、図１７の動作に従ってメモリアレイの０番地のデータを自動的に読み出し、チップ外部へ出力可能な状態になるとレディまたはビジーを示す信号／ＭＲＥＳをレディ状態を示すハイレベルに変化させる。図２６のシステムでは、この信号がホストＣＰＵのリセット端子に入力されるため、ＣＰＵのリセットが解除されてＣＰＵがフラッシュメモリからデータを読み出すブート動作を開始することができる。
【０１００】
また、電源オン中に、リセットスイッチＲ−ＳＷをグランド側に切り換えると、図２７（Ｂ）のようにＰＲＥ信号がロウレベルに立ち下がるため、このときフラッシュメモリは、図２５のホットリスタートの動作に従って先ず信号／ＭＲＥＳをロウレベルに変化させてから、メモリアレイの０番地のデータを自動的に読み出する。そして、読み出したチップ外部へ出力可能な状態になると、信号／ＭＲＥＳをハイレベルに変化させる。図２６のシステムでは、この信号がホストＣＰＵのリセット端子に入力されるため、ＣＰＵのリセットが解除されてＣＰＵがフラッシュメモリからデータを読み出すブート動作を開始することができる。
【０１０１】
次に、本実施例のフラッシュメモリに設けられている他の機能について説明する。
【０１０２】
本実施例のフラッシュメモリは、複数のテスト用コマンドを備えている。図２８には、そのうち２つのテスト用コマンドが入力されたときの動作の手順が示されている。第１のテスト用コマンドが入力されると、図２８（Ａ）のように、管理部１３０がフラッシュ・メモリアレイ１２１内の管理テーブルの予備代替領域管理情報（図７（Ｃ））を参照してエントリ数を加算することにより代替セクタの合計数を算出（ステップＳ１０１）し、代替領域のうち使用済みの代替セクタ数をフラッシュ・メモリアレイの通常領域に書き込む（ステップＳ１０２）。従って、製品選別の際にこの使用済みの代替セクタ数を読み出すことにより、未使用の代替セクタ数が所定数以下の製品は不良品と判定することにより、通常使用状態で発生する不良セクタを代替できる数をある値以上保証して製品の信頼性を向上させることができる。
【０１０３】
また、第２のテスト用コマンドが入力されると、図２８（Ｂ）のように、管理部１３０がフラッシュ・メモリアレイ１２１内の管理テーブルの予備代替領域管理情報（図７（Ｃ））を参照してエントリ数を加算することにより代替セクタの合計数を算出する（ステップＳ１１１）とともに、第１のテスト用コマンドの入力でメモリアレイに書き込まれた使用済みの代替セクタ数を読み出して（ステップＳ１１２）、使用済みの代替セクタ数が増加したか否か判定（ステップＳ１１３）し、増加した時はフラグをセット（ステップＳ１１４）し、増加していないときはフラグをセットせずに終了する。このフラグは、例えばエージング試験を行なう場合に、試験前に第１のテスト用コマンドを入力し、試験後に第２のテスト用コマンドを入力してフラグを確定させ、その後の選別の際にフラグを参照しフラグが立っている製品は不良品と判定することにより、短時間で不良セクタが増加するような製品が良品として出荷されるのを防止することができる。
【０１０４】
なお、図２８（Ａ）のステップＳ１０２で、使用済みの代替セクタ数をフラッシュ・メモリアレイに書き込む代わりにワークＲＡＭ１３５に書き込むようにしてもよい。また、図２８（Ｂ）のステップＳ１１４でセットするフラグも、フラッシュ・メモリアレイ１２１に設けても良いし、ワークＲＡＭ１３５に設けても良い。また、図２８（Ｂ）のステップＳ１１３で行なう使用済みの代替セクタ数が増加したか否かの判定は、単に増加したか否かの判定でもよいが、所定個数以上増加したか否かを判定するようにしても良い。
【０１０５】
次に、本発明のフラッシュメモリの他の実施例を説明する。この実施例は、電源立上がり時にフラッシュ・メモリアレイからワークＲＡＭにロードする管理テーブルが正常に読み出せなかった場合にはメモリアレイへのアクセスを拒否するようにしたものである。これを実現するための手段としては、例えば管理テーブルが正常に読み出せたか否かを判定して正常に読み出せたときにフラグをセットする処理と、図２９に示されているように、フラッシュ・メモリアレイへのアクセスコマンドが入力（ステップＳ１２１）されたときに管理テーブルロード済みフラグを参照（ステップＳ１２２）して正常にロードされているか判定（ステップＳ１２３）し、正常にロードされている場合にのみフラッシュ・メモリアレイへのアクセスを許可（ステップＳ１２４）し、正常にロードされていない場合にはフラッシュ・メモリアレイへのアクセスを拒否してテーブルエラーを示す信号を出力（ステップＳ１２５）またはステータスレジスタの所定のビットをセットする処理とを管理部が実行できるように構成する方法が考えられる。
【０１０６】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、実施例においては、１つの記憶素子（メモリセル）に１ビットのデータを記憶可能な２値のフラッシュメモリについて説明したが、本発明は１つの記憶素子に２ビット以上のデータを記憶する多値のフラッシュメモリに対しても適用することができる。
【０１０７】
さらに、前記実施例においては、メモリアレイの具体的な構成については説明を省略したが、本発明は複数の記憶素子がビット線とソース線との間に並列に接続されたいわゆるＡＮＤ型もしくはＮＯＲ型のフラッシュメモリはもちろん、記憶素子が直列に接続されたいわゆるＮＡＮＤ型のフラッシュメモリに対しても適用することができる。更にはフローティングゲートとコントロールゲートを有する２層ゲート型のメモリセルに限られず、コントロールゲートとチャネルの間に窒化膜からなる電荷蓄積層を有するＭＯＮＯＳ型のメモリセルであっても良い。この場合電荷蓄積層全体に電荷を蓄積し１ビット情報を格納するものであっても、電荷蓄積層の部分的に電荷を蓄積し２ビット以上の情報を格納するものであっても良い。
【０１０８】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるフラッシュメモリに適用した場合について説明したが、この発明はそれに限定されるものでなく、本発明は、電圧を印加してしきい値電圧を変化させて情報の記憶を行なう不揮発性記憶素子を有する半導体メモリに広く利用する
ことができる。
【図面の簡単な説明】
【０１０９】
【図１】本発明を適用して有効な不揮発性半導体記憶装置の一例としてのフラッシュメモリの実施例を示すブロック図である。
【図２】実施例のフラッシュメモリにおける第１方式の代替処理の概念を示す説明図である。
【図３】実施例のフラッシュメモリにおける第２方式の代替処理の概念を示す説明図である。
【図４】実施例のフラッシュメモリの全体の構成を示す説明図である。
【図５】実施例のフラッシュメモリにおける管理部の処理手順を示すフローチャートである。
【図６】実施例のフラッシュメモリにおける通常領域と代替領域の各セクタの構成例を示すもので、（Ａ）はデータ領域の構成、（Ｂ）はフラッシュメモリがＡＮＤまたはＮＡＮＤ仕様に設定された場合のセクタ管理領域の構成、（Ｃ）はフラッシュメモリがＳＡＮＤ仕様に設定された場合のセクタ管理領域の構成をそれぞれ示す説明図である。
【図７】実施例のフラッシュメモリにおける管理テーブルの概略構成例を示す説明図である。
【図８】実施例のフラッシュメモリにおける管理テーブルを構成する各領域の詳細な構成例を示す説明図である。
【図９】実施例のフラッシュメモリにおける書換え回数平均化処理の概念を示す説明図である。
【図１０】実施例のフラッシュメモリにおける管理テーブルの履歴管理の仕方を示す説明図である。
【図１１】実施例のフラッシュメモリにおけるワークＲＡＭの構成例を示す説明図である。
【図１２】実施例のフラッシュメモリにおける電源投入時におけるフラッシュ・メモリアレイからワークＲＡＭへ管理テーブル領域のデータを読み出す処理の手順を示すフローチャートである。
【図１３】図１２のフローチャートにおけるテーブルコピー処理の詳細な手順を示すフローチャートである。
【図１４】実施例のフラッシュメモリにおけるワークＲＡＭからフラッシュ・メモリアレイへ管理テーブル領域のデータを格納する処理の手順を示すフローチャートである。
【図１５】本実施例のフラッシュメモリにおけるアドレス変換処理の手順を示すフローチャートである。
【図１６】本実施例のフラッシュメモリにおける電源投入時の処理の手順を示すフローチャートである。
【図１７】パワーオン時に自動読出しを行なう場合のタイミングを示すタイミングチャートである。
【図１８】本実施例のフラッシュメモリにおける書込み処理で書込み異常が発生した場合の手順を示すフローチャートである。
【図１９】本実施例のフラッシュメモリにおけるデータ消去処理で消去異常が発生した場合の手順を示すフローチャートである。
【図２０】本実施例のフラッシュメモリにおける通常のデータ読出し動作の流れを示すタイミングチャートである。
【図２１】本実施例のフラッシュメモリにおけるシーケンシャル読出し動作の流れを示すタイミングチャートである。
【図２２】本実施例のフラッシュメモリにおけるデータの書換え動作の流れを示すタイミングチャートである。
【図２３】本実施例のフラッシュメモリにおけるデータの消去動作の流れを示すタイミングチャートである。
【図２４】本実施例のフラッシュメモリにおけるディープスタンバイモードへの移行とディープスタンバイモードから通常動作モードへの復帰動作の流れを示すタイミングチャートである。
【図２５】本実施例のフラッシュメモリにおけるホットリスタートと呼ばれる電源投入時に行なわれる動作の流れを示すタイミングチャートである。
【図２６】本実施例のフラッシュメモリを用いたシステムの構成例を示すシステム構成図である。
【図２７】図２６のシステムにおけるＣＰＵとフラッシュメモリ間の信号のタイミングを示すタイミングチャートである。
【図２８】本実施例のフラッシュメモリにおけるテスト用コマンドが入力されたときの動作の手順を示すフローチャートである。
【図２９】本発明のフラッシュメモリの他の実施例における電源立上がり時の処理の手順を示すフローチャートである。
【符号の説明】
【０１１０】
１０１  ホストインタフェース部
１１０  インタフェース制御部
１２０  記憶部
１２１  フラッシュ・メモリアレイ
１２２  電源回路
１２３  バッファメモリ
１３０  管理部
１３２  シーケンサ
１３６  エラー検出訂正回路
【図１】
2008251154.tif 000003
【図２】
2008251154.tif 000004
【図３】
2008251154.tif 000005
【図４】
2008251154.tif 000006
【図５】
2008251154.tif 000007
【図６】
2008251154.tif 000008
【図７】
2008251154.tif 000009
【図８】
2008251154.tif 000010
【図９】
2008251154.tif 000011
【図１０】
2008251154.tif 000012
【図１１】
2008251154.tif 000013
【図１２】
2008251154.tif 000014
【図１３】
2008251154.tif 000015
【図１４】
2008251154.tif 000016
【図１５】
2008251154.tif 000017
【図１６】
2008251154.tif 000018
【図１７】
2008251154.tif 000019
【図１８】
2008251154.tif 000020
【図１９】
2008251154.tif 000021
【図２０】
2008251154.tif 000022
【図２１】
2008251154.tif 000023
【図２２】
2008251154.tif 000024
【図２３】
2008251154.tif 000025
【図２４】
2008251154.tif 000026
【図２５】
2008251154.tif 000027
【図２６】
2008251154.tif 000028
【図２７】
2008251154.tif 000029
【図２８】
2008251154.tif 000030
【図２９】
2008251154.tif 000031