(57)【要約】【課題】フラッシュメモリに不良が発生しても機能を縮退させながら確実に動作を継続する半導体集積回路装置およびメモリ制御方法を提供する。【解決手段】半導体集積回路装置は、フラッシュメモリと、フラッシュメモリに対する書き換え制御と読み出し制御とを行うフラッシュ制御部と、プロセッサ部とを具備する。プロセッサ部は、動作状態としてノーマルモードとフェイルセーフモードとを備える。ノーマルモードでは、フラッシュメモリにデータを書き込んだ後のベリファイ動作において不良を検出すると、以降のフラッシュメモリの使用は停止される。フェイルセーフモードでは、フラッシュメモリにデータを書き込んだ後のベリファイ動作において不良を検出すると、エラー訂正してフラッシュメモリの使用は継続される。動作状態は、通常ノーマルモードであり、ノーマルモードの消去動作後のベリファイ動作において不良が検出されると、フェイルセーフモードに移行する。【選択図】図８
2008293555.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリと、
前記フラッシュメモリに対する書き換え制御と、読み出し制御とを行うフラッシュ制御部と、
前記フラッシュメモリの書き換え動作の後にベリファイ動作を前記フラッシュ制御部に指示するプロセッサ部と
を具備し、
前記書き換え動作は前記フラッシュメモリの所定の領域を未書き込み状態にする消去動作を含み、
前記プロセッサ部は、動作状態として、
前記フラッシュメモリにデータを書き込んだ後の前記ベリファイ動作において不良を検出すると以降の前記フラッシュメモリの使用を停止するノーマルモードと、
前記フラッシュメモリにデータを書き込んだ後の前記ベリファイ動作において不良を検出するとエラー訂正して前記フラッシュメモリの使用を継続するフェイルセーフモードと
を備え、
前記ノーマルモードの前記消去動作後の前記ベリファイ動作において不良を検出すると、前記フェイルセーフモードに移行する
半導体集積回路装置。
【請求項２】
前記フラッシュ制御部は、
前記フラッシュメモリに書き込むデータに対する誤り訂正符号を生成するＥＣＣエンコーダと、
前記フラッシュメモリから読み出された読み出しデータに基づいてエラー訂正するＥＣＣデコーダと
を備え、
前記書き込むデータは、前記誤り訂正符号とともに前記フラッシュメモリに書き込まれ、前記ＥＣＣデコーダの機能を停止して前記ベリファイ動作を行ない、
前記ノーマルモードにおいて前記書き換え動作が所定の回数を超えてリトライされたとき、書き込み不良として以降の前記フラッシュメモリの使用を停止し、
前記フェイルセーフモードにおいて前記書き換え動作が所定の回数を超えてリトライされたとき、前記ＥＣＣデコーダの機能を有効にして前記ベリファイ動作が行われる
請求項１に記載の半導体集積回路装置。
【請求項３】
前記フラッシュメモリは、代替用ブロックを備え、
前記フラッシュ制御部は、前記消去動作後の前記ベリファイ動作において不良を検出すると、前記不良が検出された前記フラッシュメモリのブロックに代えて前記代替用ブロックを自動的にアクセスするように、前記フラッシュメモリのアクセスアドレスを変換する
請求項１または請求項２に記載の半導体集積回路装置。
【請求項４】
前記フラッシュメモリは、
前記不良が検出された前記フラッシュメモリのブロックを示すリダンダンシ情報を格納するエクストラ領域と、
前記リダンダンシ情報に基づいて前記アクセスアドレスを変更するアドレスレジスタと
を備える
請求項３に記載の半導体集積回路装置。
【請求項５】
前記フラッシュ制御部は、
前記リダンダンシ情報を格納するレジスタと、
前記プロセッサ部の初期設定が終了する前に前記エクストラ領域に格納されている前記リダンダンシ情報を読み出して前記レジスタに格納するリセットシーケンス制御部と
を備える
請求項４に記載の半導体集積回路装置。
【請求項６】
前記フラッシュメモリは、複数のセクションに分割されて管理され、
前記複数のセクションのうちの第１セクション内にデータを書き込める領域が所定の閾値以下になると、前記第１セクション内の有効データを第２セクションにコピーし、前記第１セクションのデータを消去して未書き込み状態にして循環的に使用される
請求項１から請求項５のいずれかに記載の半導体集積装置。
【請求項７】
前記複数のセクションの各々は、ヘッダ情報を備え、
ヘッダ情報に含まれる複数のフラグは、それぞれ異なるワード線で指示されるアドレス位置に格納される
請求項６に記載の半導体集積回路装置。
【請求項８】
フラッシュメモリと、前記フラッシュメモリに対する書き換え制御と、読み出し制御とを行うフラッシュ制御部と、前記フラッシュメモリの書き換え動作の後にベリファイ動作を前記フラッシュ制御部に指示するプロセッサ部とを具備する半導体集積回路装置のメモリ制御方法であって、
前記書き換え動作は前記フラッシュメモリの所定の領域を未書き込み状態にする消去動作を含み、
前記フラッシュメモリにデータを書き込んだ後の前記ベリファイ動作において不良を検出すると以降の前記フラッシュメモリの使用を停止するノーマルモード動作ステップと、
前記フラッシュメモリにデータを書き込んだ後の前記ベリファイ動作において不良を検出するとエラー訂正して前記フラッシュメモリの使用を継続するフェイルセーフモード動作ステップと、
前記ノーマルモード動作ステップの前記消去動作後の前記ベリファイ動作において不良を検出すると、前記フェイルセーフモードに移行する移行ステップと
を具備する
メモリ制御方法。
【請求項９】
前記書き換え動作は、
書き込むデータとともに前記書き込むデータに基づいて生成される誤り訂正符号とを前記フラッシュメモリに書き込むデータ書き込みステップと、
前記フラッシュメモリの所定の領域のデータを消去して未書き込みの状態にする消去ステップと
を備え、
前記ベリファイ動作は、
前記データ書き込みステップにより書き込まれたデータを前記誤り訂正符号に基づく誤り訂正を行わずにベリファイするデータ書き込みベリファイステップと、
前記データ書き込みステップにより書き込まれたデータを前記誤り訂正符号に基づいて誤り訂正を行ってベリファイするＥＣＣベリファイステップと、
前記消去ステップにより消去された領域の消去状態を確認する消去ベリファイステップと
を備え、
前記ノーマルモード動作ステップは、前記データ書き込みステップにより書き込まれたデータを前記データ書き込みベリファイステップによりベリファイするデータ書き込みを所定の回数まで再試行可能とし、前記データ書き込みの再試行が所定の回数を超えると、書き込み不良として以降の前記フラッシュメモリの使用を停止する書き込み再試行ステップを備え、
前記フェイルセーフモード動作ステップは、前記データ書き込みステップにより書き込まれたデータを前記データ書き込みベリファイステップによりベリファイするデータ書き込みを所定の回数まで再試行可能とし、前記データ書き込みの再試行が所定の回数を超えると、前記データ書き込みステップにより書き込まれたデータを前記ＥＣＣベリファイステップによりベリファイするデータ書き込みを所定の回数まで再試行可能とするＥＣＣ再試行ステップを備える
請求項８に記載のメモリ制御方法。
【請求項１０】
前記フラッシュメモリは、代替用ブロックを備え、
前記消去動作後の前記ベリファイ動作において不良を検出すると、前記不良が検出された前記フラッシュメモリのブロックに代えて前記代替用ブロックを自動的にアクセスするように、アクセスアドレスを変換するアドレス変換ステップを具備する
請求項８または請求項９に記載のメモリ制御方法。
【請求項１１】
前記フラッシュメモリは、所定の領域がエクストラ領域として確保され、
前記不良が検出されたときに前記フラッシュメモリのブロックを示すリダンダンシ情報を前記エクストラ領域に格納するリダンダンシ情報格納ステップと、
前記エクストラ領域から読み出した前記リダンダンシ情報に基づいて、前記アクセスアドレスを変換するステップと
をさらに具備する
請求項１０に記載のメモリ制御方法。
【請求項１２】
前記プロセッサ部の初期設定が終了する前に前記エクストラ領域に格納されている前記リダンダンシ情報を読み出してレジスタに格納するリセット制御ステップを備える
請求項１１に記載のメモリ制御方法。
【請求項１３】
前記フラッシュメモリに含まれる複数のセクションのうちの第１セクション内にデータを書き込める領域が所定の閾値以下になると、前記第１セクション内の有効データを前記複数のセクションのうちの第２セクションにコピーする有効データコピーステップと、
前記第１セクションのデータを消去して未書き込み状態にするセクション消去ステップと
を具備し、前記フラッシュメモリを循環的に使用する
請求項８から請求項１２のいずれかに記載のメモリ制御方法。
【請求項１４】
前記複数のセクションの各々は、ヘッダ情報を備え、
ヘッダ情報に含まれる複数のフラグは、それぞれ異なるワード線で指示されるアドレス位置に格納される
請求項１３に記載のメモリ制御方法。
【請求項１５】
フラッシュメモリと、前記フラッシュメモリに対する書き換え制御と、読み出し制御とを行うフラッシュ制御部と、前記フラッシュメモリの書き換え動作の後にベリファイ動作を前記フラッシュ制御部に指示するプロセッサ部とを具備する半導体集積回路装置のプロセッサ部に前記フラッシュメモリの制御を実行させるプログラムであって、
前記フラッシュメモリにデータを書き込む第１データ書き込み手順と、
前記フラッシュメモリに書き込まれたデータをベリファイする第１データベリファイ手順と、
前記フラッシュメモリの所定の領域を未書き込み状態にする第１データ消去手順と、
前記未書き込み状態をベリファイする第１消去ベリファイ手順と
を備え、
前記第１データベリファイ手順で不良を検出すると以降の前記フラッシュメモリの使用を停止するノーマルモード動作手順と、
前記フラッシュメモリにデータを書き込む第２データ書き込み手順と、
前記フラッシュメモリに書き込まれたデータをベリファイする第２データベリファイ手順と、
前記フラッシュメモリの所定の領域を未書き込み状態にする第２データ消去手順と、
前記未書き込み状態をベリファイする第２消去ベリファイ手順と
を備え、
前記第２データベリファイ手順で不良を検出するとエラー訂正して前記フラッシュメモリの使用を継続するフェイルセーフモード手順と
を具備し、
前記第１消去ベリファイ手順において不良を検出すると、前記フェイルセーフモード手順に移行する手順をプロセッサ部に実行させるためのメモリ制御プログラム。
【請求項１６】
前記第２データベリファイ手順は、誤り訂正符号に基づいて誤り訂正されたデータをベリファイする手順を備える
請求項１５に記載のメモリ制御プログラム。
【請求項１７】
前記フラッシュメモリは、代替用ブロックを備え、
前記第１および第２消去ベリファイ手順において不良を検出すると、前記不良が検出された前記フラッシュメモリのブロックに代えて前記代替用ブロックを自動的にアクセスするように、アクセスアドレスの変換を前記フラッシュ制御部に指示する手順をさらに具備する
請求項１５または請求項１６に記載のメモリ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを内蔵する半導体集積回路装置およびそのフラッシュメモリのアクセスを制御するメモリ制御方法に関する。
【背景技術】
【０００２】
近年、フラッシュ内蔵マイコンでは、外付けＥＥＰＲＯＭの代替として、フラッシュメモリに小容量データを追記していくＥＥＰＲＯＭエミュレーションの要求があり、この用途では、非常に多くの書き換え回数が要求されることから、書き換え回数に関する信頼性が必要とされている。
【０００３】
特開２００６−４８８９３号公報によれば、受信した管理アドレスと不良ブロックマッピング情報とにより、予備ブロックアドレスが物理アドレスとしてハードウェアで選択される技術が記載されている。フラッシュメモリは、メモリセルアレイ部と、不良ブロックマッピングレジスタ部と、アドレス選択部と、不良ブロック状態制御部とを含む。メモリセルアレイ部は、受信される物理的アドレスによってデータを貯蔵して、不良ブロックマッピング情報を貯蔵する。不良ブロックマッピングレジスタ部は、不良ブロックマッピング情報を貯蔵する。アドレス選択部は、外部から印加される論理的アドレス又は論理的アドレスに相応する予備ブロックアドレスを物理的アドレスとして選択して、不良ブロックアドレスを発生する。不良ブロック状態制御部は、アドレス選択部から不良ブロックアドレスを受信して、不良ブロックマッピングレジスタの不良ブロックマッピング情報を更新する。不良ブロック状態制御部は、不良ブロックマッピングレジスタ部に貯蔵された不良ブロックアドレスの数を計数して、アドレス選択部の選択動作を制御する。不良ブロック状態制御部は、不良ブロックマッピングレジスタに貯蔵された不良ブロックマッピング情報をメモリセルアレイ部に貯蔵する。
【０００４】
すなわち、フラッシュメモリのマッピング情報貯蔵ブロックから読み出された不良ブロック情報は、不良ブロックマッピングレジスタ部に格納される。アドレス選択部は、外部から受信された論理的アドレスおよび、不良ブロックマッピングテーブルの比較を行う。比較の結果、不良ブロックに対するアクセスであった場合、予備ブロックアドレスが、メモリセルアレイへと出力される。
【０００５】
このフラッシュメモリでは、１本のワード線及びビット線に複数のメモリセルが接続されている。フラッシュメモリの場合、ビット線は全ブロックで共有されていることが多いため、ある特定のビット線に関して固着などの不良が発生した場合、その不良は全ブロックに対する不良となる。
【０００６】
【特許文献１】特開２００６−４８８９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
メモリセルのワード線／ビット線が故障した場合に、メモリ全体にその影響が波及する場合があり、単純なブロック入れ替えでは不良を救済しきれない。
【０００８】
本発明は、フラッシュメモリに不良が発生しても機能を縮退させながら確実に動作を継続する半導体集積回路装置およびメモリ制御方法を提供する。
【課題を解決するための手段】
【０００９】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１０】
本発明の観点では、半導体集積回路装置は、フラッシュメモリ（１２）と、フラッシュ制御部（１４）と、プロセッサ部（２０）とを具備する。フラッシュ制御部（１４）は、フラッシュメモリ（１２）に対する書き換え制御と、読み出し制御とを行う。プロセッサ部（２０）は、フラッシュメモリ（１２）の書き換え動作の後にベリファイ動作をフラッシュ制御部（１４）に指示する。この書き換え動作は、フラッシュメモリ（１２）の所定の領域を未書き込み状態にする消去動作を含む。プロセッサ部（１４）は、動作状態として、ノーマルモードと、フェイルセーフモードとを備える。ノーマルモードでは、フラッシュメモリ（１２）にデータを書き込んだ後のベリファイ動作において不良を検出すると、以降のフラッシュメモリ（１２）の使用は停止される。フェイルセーフモードでは、フラッシュメモリ（１２）にデータを書き込んだ後のベリファイ動作において不良を検出すると、エラー訂正してフラッシュメモリ（１２）の使用は継続される。動作状態は、通常ノーマルモードであり、ノーマルモードの消去動作後のベリファイ動作において不良が検出されると、フェイルセーフモードに移行する。
【００１１】
本発明の他の観点では、メモリ制御方法は、フラッシュメモリ（１２）と、フラッシュメモリ（１２）に対する書き換え制御と、読み出し制御とを行うフラッシュ制御部（１４）と、フラッシュメモリの書き換え動作の後にベリファイ動作をフラッシュ制御部（１４）に指示するプロセッサ部（２０）とを具備する半導体集積回路装置のメモリ制御方法である。ここで、書き換え動作は、フラッシュメモリ（１２）の所定の領域を未書き込み状態にする消去動作を含んでいる。メモリ制御方法は、ノーマルモード動作ステップと、フェイルセーフモード動作ステップと、移行ステップとを具備する。
【００１２】
ノーマルモード動作ステップでは、フラッシュメモリ（１２）にデータを書き込んだ後のベリファイ動作において不良を検出すると、以降のフラッシュメモリ（１２）の使用が停止される。フェイルセーフモード動作ステップでは、フラッシュメモリにデータを書き込んだ後のベリファイ動作において不良が検出されても、エラー訂正してフラッシュメモリの使用が継続される。移行ステップでは、ノーマルモード動作ステップの消去動作後のベリファイ動作において不良を検出すると、ノーマルモードからフェイルセーフモードに移行する。
【００１３】
また、本発明の他の観点では、メモリ制御プログラムは、フラッシュメモリ（１２）と、フラッシュメモリ（１２）に対する書き換え制御と、読み出し制御とを行うフラッシュ制御部（１４）と、フラッシュメモリ（１２）の書き換え動作の後にベリファイ動作をフラッシュ制御部（１４）に指示するプロセッサ部（２０）とを具備する半導体集積回路装置のプロセッサ部（２０）にフラッシュメモリ（１２）の制御を実行させるプログラムである。メモリ制御プログラムは、ノーマルモード動作手順と、フェイルセーフモード手順とを具備する。
【００１４】
ノーマルモード動作手順は、第１データ書き込み手順と、第１データベリファイ手順と、第１データ消去手順と、第１消去ベリファイ手順とを備え、第１データベリファイ手順で不良を検出すると以降のフラッシュメモリの使用を停止する。第１データ書き込み手順では、フラッシュメモリ（１２）にデータが書き込まれる。第１データベリファイ手順では、フラッシュメモリ（１２）に書き込まれたデータがベリファイされる。第１データ消去手順では、フラッシュメモリ（１２）の所定の領域が未書き込み状態にされる。第１消去ベリファイ手順では、未書き込み状態になったか否かをベリファイされる。フェイルセーフモード手順は、第２データ書き込み手順と、第２データベリファイ手順と、第２データ消去手順と、第２消去ベリファイ手順とを備え、第２データベリファイ手順で不良を検出するとエラー訂正してフラッシュメモリ（１２）の使用が継続される。第２データ書き込み手順では、フラッシュメモリ（１２）にデータを書き込まれる。第２データベリファイ手順では、フラッシュメモリ（１２）に書き込まれたデータがベリファイされる。第２データ消去手順では、フラッシュメモリの所定の領域が未書き込み状態にされる。第２消去ベリファイ手順では、未書き込み状態になったか否かベリファイされる。第１消去ベリファイ手順において不良が検出されると、フェイルセーフモード手順に移行する手順がプロセッサ部（２０）により実行される。
【発明の効果】
【００１５】
本発明によれば、フラッシュメモリに不良が発生しても機能を縮退させながら動作を継続する半導体集積回路装置およびメモリ制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
図を参照して、本発明を実施するための最良の形態が説明される。図１に、本発明の実施の形態に係るマイクロプロセッサの構成を示す。マイクロプロセッサは、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）２０、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）３０、フラッシュ部１０とを具備する。ＣＰＵ２０は、バス２４を介してフラッシュ部１０から命令を読み出し、バス２２を介してＲＡＭ３０に格納されるデータを読み出したり処理したデータ等をＲＡＭ３０に書き込んだりする。また、フラッシュ部１０には、電源供給が停止されても保持すべきデータが格納されており、このデータを読み出して処理する。フラッシュ部１０は、データを保持するフラッシュメモリ１２と、フラッシュメモリ１２の書き換え制御、読み出し制御を行うフラッシュ制御部１４とを備える。フラッシュ部１０に格納されるデータは、周辺バス２６を介して書き込み、読み出しが可能である。
【００１７】
図２に、本発明の第１の実施の形態に係るフラッシュ部１０の構成が示される。第１の実施の形態では、ソフトウェアによるメモリ制御方法が示される。ＣＰＵ２０のフラッシュ部１０の制御は、通常の動作モードであるノーマルモードと、フラッシュ部１０に障害を検出したときのフェイルセーフモードとがある。フラッシュ部１０は、データを格納するフラッシュメモリ１２とそれを制御するフラッシュ制御部１４とを備える。フラッシュメモリ１２は、データを格納するメモリセルアレイ１２０とメモリセルアレイ１２０のアドレスをデコードするアドレスデコーダ１２６とを含む。
【００１８】
フラッシュ制御部１４は、書き換え制御シーケンサ４０、アドレスポインタ５２、ライトバッファ５４、リードバッファ５６、ＥＣＣエンコーダ６４、ＥＣＣデコーダ６６を備える。書き換え制御シーケンサ４０は、制御レジスタ４２を備え、ＣＰＵ２０から指示された制御情報を制御レジスタ４２に設定し、その制御情報に基づいてフラッシュ部１０の各部の動作を制御する。また、書き換え制御シーケンサ４０は、フラッシュメモリ１２に書き換えモードを指示し、フラッシュメモリ１２のメモリセルから読み出した信号の論理レベルを判定するための判定閾値を設定する。アドレスポインタ５２は、ＣＰＵ２０から指示されるフラッシュメモリ１２のアドレスを格納し、フラッシュメモリ１２に供給する。ライトバッファ５４は、フラッシュメモリ１２に書き込むデータを保持し、ＥＣＣエンコーダ６４を介してフラッシュメモリ１２に書き込みデータを供給する。リードバッファ５６は、フラッシュメモリ１２からＥＣＣデコーダ６６を介して読み出しデータを取り込んで保持し、ＣＰＵ２０に供給する。
【００１９】
ＥＣＣエンコーダ６４は、ライトバッファ５４に格納されるデータに対するＥＣＣ（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅ）を付加する。例えば、ライトバッファ５４に格納されるデータが３２ビットであるとすると、ＥＣＣエンコーダ６４は６ビットのＥＣＣを付加し、３８ビットのデータとしてフラッシュメモリ１２に供給する。ＥＣＣデコーダ６６は、フラッシュメモリ１２から読み出したＥＣＣを含むデータに基づいて、エラー訂正したデータをリードバッファ５６に供給する。また、ＥＣＣデコーダ６６は、エラー訂正の機能を停止して読み出したデータをそのままリードバッファ５６に供給することも可能である。エラー訂正機能のオン・オフは、書き換え制御シーケンサ４０により行われる。
【００２０】
さらに、フラッシュ制御部１４は、ライトバッファ５４に格納されているデータと、ＥＣＣデコーダ６６から出力されるフラッシュメモリ１２から読み出したままのデータとを比較して、比較結果をＣＰＵに通知する機能を有してもよい。
【００２１】
フラッシュメモリ１２のメモリセルアレイ１２０は、ここでは全領域がユーザ領域１２２として使用される。メモリセルアレイ１２０は、例えば、３２キロバイトの容量を有する場合、図３に示されるように、ワード線を１２８本、ビット線を２４３２本有する。メモリセルアレイ１２０は、１６ブロックに分割されて管理されている。したがって、各ブロックは８本のワード線を有する。このブロック単位にメモリ内容の消去が行われる。３２ビットのデータに対して６ビットのＥＣＣが付加され、３８ビット単位に書き込み／読み出しが行われる。図３に示されるメモリセルアレイの場合、この３８ビットのグループが６４グループあり、同一ワード線に対して６４ワード分のデータが格納されることになる。通常この６４ワードのアドレスは、連続している。図からも分かるように、ワード線に関する障害があった場合、連続しているアドレスのデータが不良となる。ビット線に関する障害があった場合、６４ワードおきのデータが不良となる。
【００２２】
メモリセルアレイ１２０は、図４に示されるように、４セクションに分割されて論理的に管理される。各セクションは、４ブロックを含み、セクションの状態を示す情報が格納されるヘッダ部とユーザデータが格納されるデータ部とを備える。ヘッダ部は、そのセクションがどのような状態にあるかを示す３ワードのフラグ情報を備える。各フラグ情報は、１ワードで構成され、同一ワード線上にない３アドレスにそれぞれ設定される。
【００２３】
第１のフラグ情報は、該当セクション内のデータが消去されていることを示す消去状態（ｅｒａｓｅｄ）、該当セクションが使用可能であることを示す有効状態（ａｃｔｉｖａｔｅｄ）、該当セクションの使用を停止する無効状態（ｃｏｎｓｕｍｅｄ）、該当セクションが使用できないことを示す不良状態（ｄａｍａｇｅｄ）の各状態を示す。フラッシュメモリセルは、データを消去されると“１”となるため、消去状態は、１６進数表記すると０ｘｆｆｆｆｆｆｆｆで示される。有効状態は、同じく０ｘ５５５５ｆｆｆｆで示され、無効状態は０ｘ５５５５５５５５で示される。また、不良状態は、０ｘ００００００００で示される。
【００２４】
第２のフラグ情報は、１６ビットのカウント値であり、そのセクションの消去回数を示す。このカウント値は、その１／０を反転させた値が付加され、３２ビットで格納される。したがって、カウント値とカウントの反転値とにより示される消去回数が一致しない場合、カウント値の書き込みに失敗したことが分かる。
【００２５】
第３のフラグ情報は、第１のフラグ情報の予備として使用され、第１のフラグ情報が書き込めない場合等に、不良状態を示す０ｘ００００００００が書き込まれる。したがって、第１または第３のフラグ情報のどちらか一方が不良状態（０ｘ００００００００）を示すとき、そのセクションは使用不可であることが分かる。
【００２６】
セクションは、図５に示されるように、（ａ）未書き込み状態、（ｂ）フォーマット済み状態、（ｃ）使用中状態、（ｄ）使用完了状態、（ｅ）（ｆ）使用禁止状態であることが各フラグ情報によって示される。まず、セクションは、格納されているデータが消去されて（ａ）未書き込み状態になる。消去回数が第２のフラグ情報として書き込まれると、そのセクションは（ｂ）フォーマット済み状態となる。第１のフラグ情報の上位１６ビットに０ｘ５５５５が書き込まれ、セクションは（ｃ）使用中状態となる。そのセクションのデータ部にデータが書き込まれ、使用される。データ部に新しいデータが書き込まれていき、データを書き込む領域がなくなると、セクションは（ｄ）使用完了状態となり、第１のフラグ情報の下位１６ビットに０ｘ５５５５が書き込まれる。通常使用時、その状態は、（ａ）から（ｄ）までを繰り返す。
【００２７】
そのセクションに障害が検出されると、（ｅ）使用禁止状態になる。第１のフラグ情報を書き込むことができなくなることもあり、その場合は、第３のフラグ情報に不良状態（０ｘ００００００００）を書き込み、（ｆ）使用禁止状態とする。これらのフラグ情報は、同一ワード線のアドレスに割り付けられていないため、いずれかのフラグ情報から異常状態であることを判定することができる。
【００２８】
したがって、ノーマルモードにおいては各セクションに対して、図６に示されるように、通常の書き込み、消去が順に行われる。すなわち、このフラッシュメモリを搭載するマイクロプロセッサの使用開始時は、図６（１）に示されるように、各セクションは（ａ）未書き込み状態になっている。ＣＰＵ２０は、各セクションのヘッダ部のフラグ情報に消去回数を設定し、（ｂ）フォーマット済み状態にする。ＣＰＵ２０は、セクション０のフラグ情報に有効状態を設定し、図６（２）に示されるように、（ｃ）使用中状態にしてセクション０の使用を開始する。（ｃ）使用中状態のセクション０にデータが追記される。また、データの書き換えは、新たな領域に書き込むことによって行われるため、図６（３）に示されるように、セクション０には書き込む領域がなくなる。
【００２９】
ＣＰＵ２０は、図６（４）に示されるように、セクション１を（ｃ）使用中状態にし、セクション０に格納されているデータのうちの有効なデータをセクション１にコピー（書き込み）する。コピーが完了したら、図６（５）に示されるように、セクション０のフラグ情報に（ｄ）使用完了状態が設定される。ユーザデータは、セクション１に書き込まれている間に、セクション０のデータは消去される。ヘッダ部も消去されるため、図６（６）に示されるように、セクション０は（ａ）未書き込み状態になる。セクション０のフラグ情報に消去回数が設定され、図６（７）に示されるように、セクション０は（ｂ）フォーマット済みになる。このように、各セクションが順に使用されていく。
【００３０】
図６（８）に示されるように、セクション３に書き込み領域がなくなると、次の使用セクションはセクション０となり、図６（９）に示されるように、セクション３の有効データがセクション０にコピーされる。コピーが完了すると、セクション３は、図６（１０）に示されるように、（ｄ）使用完了状態になる。その後、図６（１１）に示されるように、セクション０を使用中にセクション３は、消去されて（ａ）未書き込み状態になり、１回加算された消去回数がヘッダ部に設定され、図６（１２）に示されるように、（ｂ）フォーマット済み状態になる。
【００３１】
次に、セクション０において格納されているデータを消去するときに障害を検出してフェイルセーフモードに移行する場合について、図７を参照して説明する。図７（１）から図７（５）までの各セクションの状態は、図６（１）から図６（５）までと同じであり、セクション０の使用が進み、セクション０は（ｄ）使用完了状態になる。セクション０に格納されるデータを消去しようとした時、障害が検出される。セクション０のデータのうちの有効なデータは、すでにセクション１にコピーされているため、セクション０に残っているデータは無効であり、マイクロプロセッサの動作に悪影響を与えることはない。しかし、このセクション０は使用できないため、図７（６）に示されるように、（ｅ）使用禁止状態にされ、メモリ制御はフェイルセーフモードに切り替わる。セクション０が使用できないだけであり、セクション１には図７（７）に示されるように、通常と同じように使用される。順にセクションが使用され、図７（８）に示されるように、セクション３が満杯になると、図７（９）に示されるように、セクション１が次に使用される。セクション３の有効データは、セクション１にコピーされ（図７（９））、セクション３は（ｄ）使用完了状態になる（図７（１０））。その後、セクション３は、データが消去されて（ａ）未書き込み状態になり（図７（１１））、消去回数が設定されて（ｂ）フォーマット済み状態になる（図７（１２））。以降、セクション０を除いてセクション１〜３が使用され、マイクロプロセッサの動作は継続される。
【００３２】
図８にメモリ制御における状態遷移が示される。通常、ノーマルモードにおいてフラッシュメモリ１２にデータが書き込まれる。正常にデータが書き込まれたか書き込みベリファイ１において確認される。書き込みベリファイ１において書き込みデータが確認されると、正常終了して待機状態に戻る。書き込みが不良であればリトライが行われ、それでも書き込みが不良であれば致命的障害状態となる。
【００３３】
ノーマルモードでデータを書き込むうちに、書き込みセクションに書き込む領域がなくなると書き込みセクションは次のセクションに移行し、元の書き込みセクションは消去される。データ消去が消去ベリファイ１において確認される。消去が不十分であれば、消去のリトライが行われる。消去ベリファイ１において消去が確認されると、ノーマルモード１に戻る。リトライしても消去が不十分である場合、フェイルセーフモードに移行する。このとき、消去が不十分であったセクションは、使用禁止状態に設定される。
【００３４】
フェイルセーフモードでは、消去に関しては、ノーマルモードの場合と同じように、不十分であれば消去のリトライが行われ、正常に終了すると継続して動作する。リトライしても消去が不十分であれば、そのセクションも使用禁止状態に設定されるが、このとき不良セクションが２セクションとなるため、この状態は致命的障害状態とする。
【００３５】
フェイルセーフモードにおけるデータ書き込みは、ノーマルモードの場合と同じように、正常にデータが書き込まれたか書き込みベリファイ２において確認される。書き込みベリファイ２において書き込みデータが確認されると、フェイルセーフモードに戻る。書き込みが不良であればリトライを行い、それでも書き込みが不良であれば、ＥＣＣ機能を有効にしてベリファイが行われる（ＥＣＣベリファイ）。すなわち、メモリ上の１ワード３８ビットのうち、１ビットのエラーであれば３２ビットのユーザデータをエラー訂正して復元することができるため、ビット線に関する不良などを救済することが可能となる。ＥＣＣ機能を有効にした書き込みベリファイにおいても書き込みデータの一致が確認できない場合、致命的障害状態になる。
【００３６】
次に、図を参照してマイクロプロセッサのフラッシュメモリアクセス動作が説明される。図９は、ノーマルモードにおけるデータ書き込み処理の動作を示すフローチャートである。
【００３７】
フラッシュメモリ１２にデータを書き込むとき、ＣＰＵ２０は、初期設定として、リトライ回数をリセットし、書き込み開始アドレスをアドレスポインタ５２に設定し、書き込みデータをライトバッファ５４に設定する（ステップＳ１１０）。
【００３８】
続いて、ＣＰＵ２０は、書き換え制御シーケンサ４０の制御レジスタ４２に書き込み動作を指示する制御情報を設定し、書き換え制御シーケンサ４０にデータ書き込みを指示する（ステップＳ１１２）。書き換え制御シーケンサ４０は、ライトバッファ５４に設定されたデータをアドレスポインタ５２に設定されたアドレスに書き込み、ＣＰＵ２０は、データ書き込み終了を待つ（ステップＳ１１４）。このとき、ＥＣＣエンコーダは、ライトバッファ５４に設定されたデータにＥＣＣ付加情報を付けてメモリセルアレイ１２０に出力する。
【００３９】
データ書き込みが終了すると、ＣＰＵ２０は、制御レジスタ４２に書き込みベリファイ動作を指示する制御情報を設定し、書き換え制御シーケンサ４０に書き込みベリファイを指示する（ステップＳ１１６）。書き換え制御シーケンサ４０は、データを読み出してリードバッファ５６に設定し、書き込んだデータをベリファイする（ステップＳ１１８）。リードバッファ５６には、読み出したデータがエラー訂正されることなく設定される。このとき、書き換え制御シーケンサ４０は、メモリセルアレイ１２０から出力される読み出し信号の論理レベルを判定する閾値をベリファイ用の値に設定する。この閾値は、通常のデータ読み出しの閾値より厳しい値になっている。
【００４０】
ＣＰＵ２０は、ベリファイ結果を判定する（ステップＳ１２０）。ＥＣＣ付加情報を含めて比較する場合、フラッシュ制御部１４内で比較することが好ましい。ＣＰＵ２０が比較してもよい。このとき、ＥＣＣによるエラー訂正をせずに、単純に全ビットの比較が行われる。一致していれば（ステップＳ１２０−Ｙｅｓ）、ＣＰＵ２０は、書き込むデータが全て書き込まれたか判定する（ステップＳ１３４）。書き込むデータがあれば（ステップＳ１３４−Ｎｏ）、リトライ回数をリセットし、書き込みアドレスを更新してアドレスポインタ５２に設定し、書き込みデータをライトバッファ５４に設定して（ステップＳ１３６）、ステップＳ１１２から繰り返す。全てデータを書き込むと（ステップＳ１３４−Ｙｅｓ）、書き込み処理は正常に終了する。
【００４１】
ベリファイの結果、書き込みデータと読み出しデータが不一致の場合（ステップＳ１２０−Ｎｏ）、リトライ回数を更新し（ステップＳ１２２）、許容回数以下であれば（ステップＳ１２４−Ｙｅｓ）、再度ステップＳ１１２から繰り返す。リトライ回数が許容回数を超えると（ステップＳ１２４−Ｎｏ）、書き込みエラーとして異常終了する。書き込みエラーに対する処理の説明は、本発明に直接関係しないので省略される。
【００４２】
次にノーマルモードにおける消去処理が、図１０を参照して説明される。フラッシュメモリ１２のデータ消去は、セクション単位で行われる。ＣＰＵ２０は、リトライ回数をリセットし、消去すべき領域のアドレスをアドレスポインタ５２に設定する（ステップＳ１４０）。
【００４３】
続いて、ＣＰＵ２０は、制御レジスタ４２に消去動作を指示する制御情報を設定し、書き換え制御シーケンサ４０にデータ消去を指示する（ステップＳ１４２）。書き換え制御シーケンサ４０は、アドレスポインタ５２に設定されたアドレスに基づいてデータを消去し、ＣＰＵ２０は、データ消去終了を待つ（ステップＳ１４４）。
【００４４】
データ消去が終了すると、ＣＰＵ２０は制御レジスタ４２に消去ベリファイ動作を指示する制御情報を設定し、書き換え制御シーケンサ４０に消去ベリファイを指示する（ステップＳ１４６）。このとき、書き換え制御シーケンサ４０は、メモリセルアレイ１２０から出力される読み出し信号の論理レベルを判定する閾値を消去状態判定用の値に設定する。この閾値は、確実に消去状態になっていることを確認するために通常の読み出し時の閾値より厳しい値になっている。書き換え制御シーケンサ４０は、この閾値により読み出し信号のレベルを判定し、読み出したデータをリードバッファ５６に設定する。このリードバッファ５６に設定されたデータと、オール“１”データとを比較する（ステップＳ１４８）。なお、データは“１”の状態が消去状態である。ここでは、ＥＣＣ付加情報を含めて３８ビットの比較が行われる。
【００４５】
ＣＰＵ２０は、消去状態になっているか否かを判定する（ステップＳ１５０）。全てのビットが、消去状態のオール“１”になっていれば（ステップＳ１５０−Ｙｅｓ）、正常終了とする。１ビットでも完全な消去状態になっていなければ（ステップＳ１５０−Ｎｏ）、リトライ回数が更新される（ステップＳ１５２）。リトライ回数が許容回数以下であれば（ステップＳ１５４−Ｙｅｓ）、消去処理が繰り返される。リトライ回数が許容回数を超えると（ステップＳ１５４−Ｎｏ）、消去エラーとして異常終了する。この消去エラーとなった領域を含むセクションは、使用禁止状態が設定される。このとき、ノーマルモードからフェイルセーフモードに移行することになる。
【００４６】
図１１に、フェイルセーフモードにおける書き込み処理のフローチャートが示される。フェイルセーフモードにおける書き込み処理は、ノーマルモードにおける書き込み処理に比べると、ＥＣＣによるエラーの救済が行われることが異なる。
【００４７】
フェイルセーフモードにおいてフラッシュメモリ１２にデータを書き込むとき、ＣＰＵ２０は、リトライ回数をリセットし、書き込み開始アドレスをアドレスポインタ５２に設定し、書き込みデータをライトバッファ５４に設定する（ステップＳ２１０）。
【００４８】
続いて、ＣＰＵ２０は、書き換え制御シーケンサ４０の制御レジスタ４２に書き込み動作を指示する制御情報を設定し、書き換え制御シーケンサ４０にデータ書き込みを指示する（ステップＳ２１２）。書き換え制御シーケンサ４０は、ライトバッファ５４に設定されたデータをアドレスポインタ５２に設定されたアドレスに書き込み、ＣＰＵ２０は、データ書き込み終了を待つ（ステップＳ２１４）。このとき、ＥＣＣエンコーダは、ライトバッファ５４に設定されたデータにＥＣＣ付加情報を付けてメモリセルアレイ１２０に出力する。
【００４９】
データ書き込みが終了すると、ＣＰＵ２０は、制御レジスタ４２に書き込みベリファイ動作を指示する制御情報を設定し、書き換え制御シーケンサ４０に書き込みベリファイを指示する（ステップＳ２１６）。書き換え制御シーケンサ４０は、データを読み出してリードバッファ５６に設定し、書き込んだデータと比較する（ステップＳ２１８）。リードバッファ５６には、読み出したデータがエラー訂正されることなく設定される。このとき、書き換え制御シーケンサ４０は、メモリセルアレイ１２０から出力される読み出し信号の論理レベルを判定する閾値をベリファイ用の値に設定する。この閾値は、通常のデータ読み出しの閾値より厳しい値になっている。
【００５０】
ＣＰＵ２０は、書き込みデータと読み出しデータが一致しているか否かを判定する（ステップＳ２２０）。ＥＣＣ付加情報を含めて比較する場合、フラッシュ制御部１４内で比較することが好ましい。ＣＰＵ２０が比較してもよい。このとき、ＥＣＣによるエラー訂正をせずに、単純に全ビットの比較が行われる。一致していれば（ステップＳ２２０−Ｙｅｓ）、ＣＰＵ２０は、書き込むデータが全て書き込まれたか判定する（ステップＳ２３４）。書き込むデータがあれば（ステップＳ２３４−Ｎｏ）、リトライ回数をリセットし、書き込みアドレスを更新してアドレスポインタ５２に設定し、書き込みデータをライトバッファ５４に設定して（ステップＳ２３６）、ステップＳ２１２から繰り返す。全てデータを書き込むと（ステップＳ２３４−Ｙｅｓ）、書き込み処理は正常に終了する。
【００５１】
ベリファイの結果、書き込みデータと読み出しデータが不一致の場合（ステップＳ２２０−Ｎｏ）、リトライ回数を更新し（ステップＳ２２２）、許容回数以下であれば（ステップＳ２２４−Ｙｅｓ）、再度ステップＳ２１２から繰り返す。リトライ回数が許容回数を超えると（ステップＳ２２４−Ｎｏ）、該当アドレスのメモリセルの書き込みエラーを救済するように、ＥＣＣ機能を有効にする（ステップＳ２２６）。ＥＣＣ機能により、読み出されたデータ（３８ビット）は、付加情報に基づいて、データの本体部分（３２ビット）が復元される。このＥＣＣ機能で復元できるエラーは、１ビットのエラーであり、２ビット以上のエラーでは復元できない。１ビットのビット線に関連するエラーであれば、このＥＣＣ機能により救済することができることになる。このＥＣＣ機能を有効にした状態で再度書き込みデータのベリファイが行われる（ステップＳ２２８）。
【００５２】
ここで、書き込みデータ（３２ビット）と読み出しデータ（３２ビット）とが一致すると（ステップＳ２３０−Ｙｅｓ）、正常終了とする。不一致の場合（ステップＳ２３０−Ｎｏ）、ＥＣＣ機能を有効にしても救済ができないため、書き込みエラーとして異常終了する。
【００５３】
書き込み動作において、常時ＥＣＣ機能を有効にすると、書き込み特性のよくないメモリセルをＥＣＣ機能により救済することになって好ましくない。したがって、ＥＣＣ機能を無効にして書き込みリトライを行い、リトライが許容回数を超えたときにＥＣＣ機能を有効にしてエラー救済が行われる。なお、ファイルセーフモードにおける消去処理は、異常終了したときに、フェイルセーフモードではなく致命的障害状態になることが異なるだけで、ノーマルモードにおける消去処理の同じである。
【００５４】
図１２に、本発明の第２の実施の形態に係るフラッシュ部１０の構成が示される。第２の実施の形態では、ハードウェアによるメモリ制御方法が示される。ＣＰＵ２０のフラッシュ部１０の制御は、通常の動作モードであるノーマルモードと、フラッシュ部１０に障害を検出したときのフェイルセーフモードとがある。フラッシュ部１０は、データを格納するフラッシュメモリ１２とそれを制御するフラッシュ制御部１４とリセット時の動作を制御するリセットシーケンス制御部１１とを備える。
【００５５】
フラッシュメモリ１２は、データを格納するメモリセルアレイ１２０とメモリセルアレイ１２０のアドレスをデコードするアドレスデコーダ１２６とセレクタ１２８とを含む。メモリセルアレイ１２０は、ユーザデータが格納されるユーザ領域１２２と、リダンダンシ用ブロック１２３と、リダンダンシ情報を格納するエクストラ領域とを備える。セレクタ１２８は、リセット時にリダンダンシ情報を取り出すために、アドレスデコーダ１２６に供給するアドレスを切り替える。
【００５６】
フラッシュ制御部１４は、書き換え制御シーケンサ４０、アドレスポインタ５２、ライトバッファ５４、リードバッファ５６、ＥＣＣエンコーダ６４、ＥＣＣデコーダ６６、レジスタ６２を備える。書き換え制御シーケンサ４０は、制御レジスタ４２を備え、ＣＰＵ２０から指示された制御情報を制御レジスタ４２に設定し、その制御情報に基づいてフラッシュ部１０の各部の動作を制御する。また、書き換え制御シーケンサ４０は、フラッシュメモリ１２に書き換えモードを指示し、フラッシュメモリ１２のメモリセルから読み出した信号の論理レベルを判定するための判定閾値を設定する。アドレスポインタ５２は、ＣＰＵ２０から指示されるフラッシュメモリ１２のアドレスを格納し、フラッシュメモリ１２に供給する。ライトバッファ５４は、フラッシュメモリ１２に書き込むデータを保持し、ＥＣＣエンコーダ６４を介してフラッシュメモリ１２に書き込みデータを供給する。リードバッファ５６は、フラッシュメモリ１２からＥＣＣデコーダ６６を介して読み出しデータを取り込んで保持し、ＣＰＵ２０に供給する。
【００５７】
ＥＣＣエンコーダ６４は、ライトバッファ５４に格納されるデータにＥＣＣを付加する。例えば、ライトバッファ５４に格納されるデータが３２ビットであるとすると、６ビットのＥＣＣを付加し、３８ビットのデータとしてフラッシュメモリ１２に供給する。ＥＣＣデコーダ６６は、フラッシュメモリ１２から読み出したＥＣＣを含むデータに基づいて、エラー訂正したデータをリードバッファ５６に供給する。また、ＥＣＣデコーダ６６は、エラー訂正の機能を停止して読み出したデータをそのままリードバッファ５６に供給することも可能である。
【００５８】
レジスタ６２は、リセット時にメモリセルアレイ１２０のエクストラ領域１２４から読み出されたリダンダンシ情報を保持する。レジスタ６２は、そのリダンダンシ情報に基づいて、メモリセルアレイ１２２の領域を管理する。さらに、フラッシュ制御部１４は、ライトバッファ５４に格納されているデータと、ＥＣＣデコーダ６６から出力されるフラッシュメモリ１２から読み出したままのデータとを比較して、比較結果をＣＰＵに通知する機能を有してもよい。
【００５９】
リセットシーケンス制御部１１は、ＣＰＵ２０のリセット解除前に起動され、セレクタ１２８を制御してアドレスデコーダ１２６にエクストラ領域１２４のアドレスを供給する。リセットシーケンス制御部１１は、エクストラ領域１２４に格納されているリダンダンシ情報を読み出し、レジスタ６２に保持させる。
【００６０】
フラッシュメモリ１２のメモリセルアレイ１２０は、ユーザ領域１２２とリダンダンシ用ブロック１２３とエクストラ領域１２４とを備える。ユーザ領域１２２は、図３に示されるように、１６ブロックに分割されて管理される。このブロックが消去処理によってデータが１度に消去される単位であるが、ここでは説明を簡単にするために、４ブロックで構成される１セクション単位に消去されるものとする。リダンダンシ用ブロック１２３は、この１セクション分と同容量であり、４セクションのいずれかと置き換えが可能なように制御される。なお、リダンダンシ用ブロック１２３を本来の１ブロックと同容量とすると、セクション内の１ブロックをだけが置き換えられることになる。その場合、リダンダンシ用ブロック１２３として確保しなければならない領域が少なくてよく、効果的である。また、複数のリダンダンシ用ブロックを備えてもよい。
【００６１】
また、エクストラ領域１２４は、リダンダンシ用ブロック１２３とユーザ領域１２２の不良発生ブロックとを置き換えるための、不良発生アドレス等のリダンダンシ情報が格納される。不良が発生すると、リダンダンシ情報が生成されて、エクストラ領域に格納されるとともに、レジスタ６２に設定される。アドレスデコーダ１２６は、不良発生ブロックの代わりにリダンダンシ用ブロック１２３をアクセスするようにユーザ領域１２２のアドレスデコードを変更する。
【００６２】
ユーザ領域のセクション管理におけるフラグ情報は、第１の実施の形態において説明されているため、説明は省略される。また、ノーマルモードにおけるメモリセルアレイ１２０の運用は、第１の実施の形態において、図６を参照して説明されたように、書き込み、消去が順に行われ、ここではその詳細な説明は省略される。
【００６３】
本実施の形態において、セクション０において格納されているデータを消去するときに障害を検出してフェイルセーフモードに移行する場合について、図１３を参照して説明する。図１３（１）から図１３（５）までの各セクションの状態は、図６（１）から図６（５）までと同じであり、セクション０の使用が進み、セクション０は（ｄ）使用完了状態になる。セクション０に格納されるデータを消去しようとした時、障害が検出される。セクション０のデータのうちの有効なデータは、すでにセクション１にコピーされているため、セクション０に残っているデータは無効であり、マイクロプロセッサの動作に悪影響を与えることはない。しかし、このセクション０は使用できないため、図１３（６）に示されるように、セクション０は（ｅ）使用禁止状態にされ、メモリ制御はフェイルセーフモードに移行する。アドレスデコーダ１２６に対して不良発生アドレスが通知され、以降そのアドレスが指定されるとアドレスデコーダ１２６はリダンダンシ用ブロック１２３をアクセスするようにアドレスを変換する（図１３（７））。したがって、ユーザからは、このセクション０に代えてリダンダンシ用ブロック１２３が使用されていることは意識されず、セクション０をそのまま継続して使用しているようにみえる。図１３（８）以降は、リダンダンシ用ブロック１２３はセクション０として使用されるため、セクション３が満杯になると、図１３（９）に示されるように、セクション０（リダンダンシ用ブロック１２３）が次に使用され、セクション３の有効データは、セクション０（リダンダンシ用ブロック１２３）にコピーされる。セクション３は、図１３（１０）に示されるように、（ｄ）使用完了状態になり、その後、データが消去されて（ａ）未書き込み状態になり（図１３（１１））、消去回数が設定されて（ｂ）フォーマット済み状態になる（図１３（１２））。以降、リダンダンシ用ブロック１２３はセクション０として使用され、マイクロプロセッサの動作は継続される。
【００６４】
図１４にメモリ制御における状態遷移が示される。通常、ノーマルモードにおいてフラッシュメモリ１２にデータが書き込まれる。正常にデータが書き込まれたか書き込みベリファイ１において確認される。書き込みベリファイ１において書き込みデータが確認されると、正常終了して待機状態に戻る。書き込みが不良であればリトライが行われ、それでも書き込みが不良であれば致命的障害状態となる。
【００６５】
ノーマルモードでデータを書き込むうちに、書き込みセクションに書き込む領域がなくなると書き込みセクションは次のセクションに移行する。元の書き込みセクションは消去され、データ消去が消去ベリファイ１において確認される。消去が不十分であれば、消去のリトライが行われる。消去ベリファイ１において消去が確認されると、ノーマルモード１に戻る。リトライしても消去が不十分である場合、その不良アドレスなどの情報はリダンダンシ情報としてエクストラ領域１２４に書き込まれる。そのリダンダンシ情報の書き込みのベリファイを示す情報書き込みベリファイにおいて、リダンダンシ情報の書き込みをリトライしても正常に書き込まれたことが確認できなかった場合は、致命的障害状態となる。正常に書き込みができたときは、フェイルセーフモードに移行する。データ消去が不良であったためにフェイルセーフモードに移行したのであるから、フェイルセーフモードに移行した後は、リダンダンシ用ブロック１２３が、消去不良となったセクションの代わりに使用される。
【００６６】
フェイルセーフモードでは、消去に関しては、ノーマルモードの場合と同じように、不十分であれば消去のリトライが行われ、正常に終了すると継続して動作する。リトライしても消去が不十分であれば、そのセクションも使用禁止状態に設定されるが、このとき不良セクションが２セクションとなるため、この状態は致命的障害状態とする。
【００６７】
フェイルセーフモードにおけるデータ書き込みは、ノーマルモードの場合と同じように、正常にデータが書き込まれたか書き込みベリファイ２において確認される。書き込みベリファイ２において書き込みデータが確認されると、フェイルセーフモードに戻る。書き込みが不良であればリトライを行い、それでも書き込みが不良であれば、ＥＣＣ機能を有効にしてベリファイが行われる（ＥＣＣベリファイ）。すなわち、メモリ上の１ワード３８ビットのうち、１ビットのエラーであれば３２ビットのユーザデータをエラー訂正して復元することができるため、ビット線に関する不良などを救済することが可能となる。ＥＣＣ機能を有効にした書き込みベリファイにおいても書き込みデータの一致が確認できない場合、致命的障害状態になる。ＥＣＣベリファイにおいてエラー訂正してベリファイＯＫであれば、フェイルセーフモードに戻り、そのメモリの使用を継続する。
【００６８】
次に、図を参照してマイクロプロセッサのフラッシュメモリアクセス動作が説明される。ノーマルモードにおけるデータ書き込み処理、フェイルセーフモードにおけるデータ書き込み処理は、第１の実施の形態と同じであり、説明は省略される。
【００６９】
図１５は、ノーマルモードにおける消去処理の動作を示すフローチャートである。フラッシュメモリ１２のデータ消去は、所定の単位毎に行われる。ＣＰＵ２０は、リトライ回数をリセットし、消去すべき領域のアドレスをアドレスポインタ５２に設定する（ステップＳ１４０）。
【００７０】
続いて、ＣＰＵ２０は、制御レジスタ４２に消去動作を指示する制御情報を設定し、書き換え制御シーケンサ４０にデータ消去を指示する（ステップＳ１４２）。書き換え制御シーケンサ４０は、アドレスポインタ５２に設定されたアドレスに基づいてデータを消去し、ＣＰＵ２０は、データ消去終了を待つ（ステップＳ１４４）。
【００７１】
データ消去が終了すると、ＣＰＵ２０は制御レジスタ４２に消去ベリファイ動作を指示する制御情報を設定し、書き換え制御シーケンサ４０に消去ベリファイを指示する（ステップＳ１４６）。このとき、書き換え制御シーケンサ４０は、メモリセルアレイ１２０から出力される読み出し信号の論理レベルを判定する閾値を消去状態判定用の値に設定する。この閾値は、確実に消去状態になっていることを確認するために通常の読み出し時の閾値より厳しい値になっている。書き換え制御シーケンサ４０は、この閾値により読み出し信号のレベルを判定し、読み出したデータをリードバッファ５６に設定する。このリードバッファ５６に設定されたデータと、オール“１”データとを比較する（ステップＳ１４８）。なお、データは“１”の状態が消去状態である。ここでは、ＥＣＣ付加情報を含めて３８ビットの比較が行われる。
【００７２】
ＣＰＵ２０は、消去状態になっているか否かを判定する（ステップＳ１５０）。全てのビットが、消去状態のオール“１”になっていれば（ステップＳ１５０−Ｙｅｓ）、正常終了とする。１ビットでも完全な消去状態になっていなければ（ステップＳ１５０−Ｎｏ）、リトライ回数が更新される（ステップＳ１５２）。リトライ回数が許容回数以下であれば（ステップＳ１５４−Ｙｅｓ）、消去処理が繰り返される。リトライ回数が許容回数を超えると（ステップＳ１５４−Ｎｏ）、消去エラーを起こしたアドレス等のリダンダンシ情報を収集し、リダンダンシ情報書き込み処理を行い（ステップＳ３００）、フェイルセーフモードに移行する。
【００７３】
図１６に、リダンダンシ情報書き込み処理３００のフローチャートが示される。リダンダンシ情報書き込み処理３００では、リダンダンシ情報がエクストラ領域１２４に書き込まれる。ＣＰＵ２０は、リトライ回数をリセットし、書き込み開始アドレスをアドレスポインタ５２に設定し、書き込みデータをライトバッファ５４に設定する（ステップＳ３１０）。
【００７４】
続いて、ＣＰＵ２０は、書き換え制御シーケンサ４０の制御レジスタ４２に書き込み動作を指示する制御情報を設定し、書き換え制御シーケンサ４０にデータ書き込みを指示する（ステップＳ３１２）。書き換え制御シーケンサ４０は、ライトバッファ５４に設定されたデータをアドレスポインタ５２に設定されたアドレスに書き込み、ＣＰＵ２０は、データ書き込み終了を待つ（ステップＳ３１４）。このとき、ＥＣＣエンコーダは、ライトバッファ５４に設定されたデータにＥＣＣ付加情報を付けてメモリセルアレイ１２０に出力する。
【００７５】
データ書き込みが終了すると、ＣＰＵ２０は、制御レジスタ４２に書き込みベリファイ動作を指示する制御情報を設定し、書き換え制御シーケンサ４０に書き込みベリファイを指示する（ステップＳ３１６）。書き換え制御シーケンサ４０は、データを読み出してリードバッファ５６に設定し、書き込んだデータと比較する（ステップＳ３１８）。リードバッファ５６には、読み出したデータがエラー訂正されることなく設定される。このとき、書き換え制御シーケンサ４０は、メモリセルアレイ１２０から出力される読み出し信号の論理レベルを判定する閾値をベリファイ用の値に設定する。この閾値は、通常のデータ読み出しの閾値より厳しい値になっている。
【００７６】
ＣＰＵ２０は、書き込みデータと読み出しデータが一致しているか否かを判定する（ステップＳ３２０）。ＥＣＣ付加情報を含めて比較する場合、フラッシュ制御部１４内で比較することが好ましい。ＣＰＵ２０が比較してもよい。このとき、ＥＣＣによるエラー訂正をせずに、単純に全ビットの比較が行われる。一致していれば（ステップＳ３２０−Ｙｅｓ）、リダンダンシ情報の書き込み処理は正常に終了し、フェイルセーフモードに移行する。
【００７７】
ベリファイの結果、書き込みデータと読み出しデータが不一致の場合（ステップＳ３２０−Ｎｏ）、リトライ回数を更新し（ステップＳ３２２）、許容回数以下であれば（ステップＳ３２４−Ｙｅｓ）、再度ステップＳ３１２から繰り返す。リトライ回数が許容回数を超えると（ステップＳ３２４−Ｎｏ）、該当アドレスのメモリセルの書き込みエラーを救済するように、ＥＣＣ機能を有効にする（ステップＳ３２６）。ＥＣＣ機能により、読み出されたデータ（３８ビット）は、付加情報に基づいて、データの本体部分（３２ビット）が復元される。このＥＣＣ機能で復元できるエラーは、１ビットのエラーであり、２ビット以上のエラーでは復元できない。１ビットのビット線に関連するエラーであれば、このＥＣＣ機能により救済することができることになる。このＥＣＣ機能を有効にした状態で再度書き込みデータのベリファイが行われる（ステップＳ３２８）。
【００７８】
ここで、書き込みデータ（３２ビット）と読み出しデータ（３２ビット）とが一致すると（ステップＳ３３０−Ｙｅｓ）、正常終了としてフェイルセーフモードへ移行する。不一致の場合（ステップＳ３３０−Ｎｏ）、ＥＣＣ機能を有効にしても救済ができないため、書き込みエラーとして異常終了し、エラーが確定する。
【００７９】
書き込み動作において、常時ＥＣＣ機能を有効にすると、書き込み特性のよくないメモリセルをＥＣＣ機能により救済することになって好ましくない。したがって、ＥＣＣ機能を無効にして書き込みリトライを行い、リトライ回数が許容回数を超えたときにＥＣＣ機能を有効にしてエラー救済が行われる。なお、ＥＣＣ機能を有効にした書き込みデータのベリファイは、ノーマルモードの書き込み動作においてリトライ回数が許容回数を超えたときに行われてもよい。
【図面の簡単な説明】
【００８０】
【図１】本発明の実施の形態に係る半導体集積回路装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態に係るフラッシュ部の構成を示すブロック図である。
【図３】メモリセルアレイの構成を説明する図である。
【図４】メモリセルアレイのセクションを説明する図である。
【図５】各セクションの状態を説明する図である。
【図６】セクションの運用を説明する図である（正常時）。
【図７】セクションの運用を説明する図である（エラー時）。
【図８】プロセッサ部の動作の状態遷移を示す図である。
【図９】ノーマルモードにおける書き込み処理の動作を示すフロー図である。
【図１０】ノーマルモードにおける消去処理の動作を示すフロー図である。
【図１１】フェイルセーフモードにおける書き込み処理の動作を示すフロー図である。
【図１２】本発明の第２の実施の形態に係るフラッシュ部の構成を示すブロック図である。
【図１３】セクションの運用を説明する図である（エラー時）。
【図１４】プロセッサ部の動作の状態遷移を示す図である。
【図１５】ノーマルモードにおける消去処理の動作を示すフロー図である。
【図１６】リダンダンシ情報書き込み処理の動作を示すフロー図である。
【符号の説明】
【００８１】
１０  フラッシュ部
１１  リセットシーケンス制御部
１２  フラッシュメモリ
１２０  メモリセルアレイ
１２２  ユーザ領域
１２３  リダンダンシ用ブロック
１２４  エクストラ領域
１２６  アドレスデコーダ
１２８  セレクタ
１４  フラッシュ制御部
２０  ＣＰＵ
２２、２４  バス
２６  周辺バス
３０  ＲＡＭ
４０  書き換え制御シーケンサ
４２  制御レジスタ
５２  アドレスポインタ
５４  ライトバッファ
５６  リードバッファ
６２  レジスタ
６４  ＥＣＣエンコーダ
６６  ＥＣＣデコーダ
【図１】
2008293555.tif 000003
【図２】
2008293555.tif 000004
【図３】
2008293555.tif 000005
【図４】
2008293555.tif 000006
【図５】
2008293555.tif 000007
【図６】
2008293555.tif 000008
【図７】
2008293555.tif 000009
【図８】
2008293555.tif 000010
【図９】
2008293555.tif 000011
【図１０】
2008293555.tif 000012
【図１１】
2008293555.tif 000013
【図１２】
2008293555.tif 000014
【図１３】
2008293555.tif 000015
【図１４】
2008293555.tif 000016
【図１５】
2008293555.tif 000017
【図１６】
2008293555.tif 000018