(57)【要約】【課題】  エラー訂正符号格納領域を有するフラッシュメモリにおいて、ブロック消去の回数を削減し、製品寿命を延ばす。【解決手段】  データ格納領域とエラー訂正符号格納領域とを含むフラッシュメモリにデータを書き込むデータ書き込み方法において、初期値をデータ格納領域に書き込み、書き込みフラグに基づいて書き込みが正常に行われたか否かを判定し、書き込みが正常に行われたときはデータ格納領域にデータを書き込み、書き込みが正常に行われていないときはデータ格納領域を含むブロックを消去する。データの書き込みを行う前に初期値をデータ格納領域に書き込むことで、エラー訂正符号格納領域が初期値か否かを確認できる。ブロックの消去動作を、エラー訂正符号格納領域が初期値でないときのみ実施することで、ブロックの消去の回数を削減でき、製品寿命を延ばすことができる。【選択図】    図５
2011227659.tif 000002
【特許請求の範囲】
【請求項１】
データ格納領域とエラー訂正符号格納領域とを含むフラッシュメモリにデータを書き込むデータ書き込み方法において、
初期値をデータ格納領域に書き込み、
書き込みフラグに基づいて前記書き込みが正常に行われたか否かを判定し、
前記書き込みが正常に行われたときは前記データ格納領域にデータを書き込み、
前記書き込みが正常に行われていないときは前記データ格納領域を含むブロックを消去すること
を特徴とするデータ書き込み方法。
【請求項２】
前記フラッシュメモリにはＮビット幅（Ｎは正の整数）でデータが書き込まれ、
２Ｎビット幅の前記データ格納領域に対して一のアドレスが付与されること
を特徴とする請求項１に記載のデータ書き込み方法。
【請求項３】
前記２Ｎビット幅のデータ格納領域に格納されるデータに基づいて、前記データ格納領域に対応する前記エラー訂正符号領域に格納されるエラー訂正符号が計算されること
を特徴とする請求項２に記載のデータ書き込み方法。
【請求項４】
前記フラッシュメモリにはＮビット幅（Ｎは正の整数）でデータが書き込まれ、
前記初期値はＮビットであること
を特徴とする請求項１に記載のデータ書き込み方法。
【請求項５】
前記Ｎは１６であり、前記初期値は１６進数のＦＦＦＦであること
を特徴とする請求項４に記載のデータ書き込み方法。
【請求項６】
ＣＰＵと、
データ格納領域とエラー訂正符号格納領域とを含むフラッシュメモリと、
前記ＣＰＵからの指示に基づいて前記フラッシュメモリを制御するフラッシュメモリ制御回路と、
を含み、
前記フラッシュメモリ制御回路は、
初期値を前記データ格納領域に書き込み、
書き込みフラグに基づいて前記書き込みが正常に行われたか否かを判定し、
前記書き込みが正常に行われたときは前記データ格納領域にデータを書き込み、
前記書き込みが正常に行われていないときは前記データ格納領域を含むブロックを消去すること
を特徴とするシステム。
【請求項７】
前記フラッシュメモリと前記フラッシュメモリ制御回路との間に接続されるＮビット幅のデータバス（Ｎは正の整数）を含み、
前記フラッシュメモリ制御回路は、前記データバスを介して一のアドレスに対応するデータ格納領域に複数回データを書き込むこと
を特徴とする請求項６に記載のシステム。
【請求項８】
前記フラッシュメモリ制御回路は、前記２Ｎビット幅の前記データ格納領域に格納されるデータに基づいて、前記データ格納領域に対応する前記エラー訂正符号領域に格納されるエラー訂正符号を計算すること
を特徴とする請求項７に記載のシステム。
【請求項９】
前記フラッシュメモリと前記フラッシュメモリ制御回路との間に接続されるＮビットの幅データバス（Ｎは正の整数）を含み、
Ｎビットである前記初期値が前記データ格納領域に書き込まれること
を特徴とする請求項６に記載のシステム。
【請求項１０】
前記Ｎは１６であり、前記初期値は１６進数のＦＦＦＦであること
を特徴とする請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリへのデータ書き込み方法およびフラッシュメモリを有するシステムに関する。
【背景技術】
【０００２】
フラッシュメモリ等の不揮発性半導体メモリでは、データとともにエラー訂正符号を記憶することで、データの信頼性は向上する。データの信頼性は、エラーが訂正されたブロックのデータを他のブロックに書き換えることで、さらに向上する（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１０８７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
エラー訂正符号は、書き込みデータに基づいてメモリ制御回路等により自動的に生成される。このため、フラッシュメモリにデータを書き込むデータ処理装置は、エラー訂正符号を直接読み出すことはできない。一般に、フラッシュメモリでは、書き込み状態を示す論理０から消去状態を示す論理１への書き換えは実施できない。このため、例えば、データ格納領域が消去されている状態で、エラー訂正符号格納領域に論理０のビットが存在するとき、書き込みデータに基づいて生成されるエラー訂正符号は、エラー訂正符号格納領域に正しく書き込めない 。このとき、フラッシュメモリの製品寿命による問題なのか、エラー訂正符号格納領域が消去されていないことによる問題なのか判断できない。この問題を防止するためには、消去単位であるブロック毎に最初にデータを書き込む前に、消去動作を毎回実施する必要がある。これにより、消去回数が増加し、製品寿命が短くなってしまう。
【０００５】
本発明の目的は、エラー訂正符号格納領域を有するフラッシュメモリにおいて、ブロック消去の回数を削減し、製品寿命を延ばすことである。
【課題を解決するための手段】
【０００６】
本発明のデータ書き込み方法の一形態では、データ格納領域とエラー訂正符号格納領域とを含むフラッシュメモリにデータを書き込むデータ書き込み方法において、初期値をデータ格納領域に書き込み、書き込みフラグに基づいて書き込みが正常に行われたか否かを判定し、書き込みが正常に行われたときはデータ格納領域にデータを書き込み、書き込みが正常に行われていないときはデータ格納領域を含むブロックを消去することを特徴とする。
【発明の効果】
【０００７】
データの書き込みを行う前に初期値をデータ格納領域に書き込むことで、エラー訂正符号格納領域が初期値か否かを確認できる。ブロックの消去動作を、エラー訂正符号格納領域が初期値でないときのみ実施することで、ブロックの消去の回数を削減でき、製品寿命を延ばすことができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態におけるシステムの例を示している。
【図２】別の実施形態におけるシステムの例を示している。
【図３】図２に示したフラッシュメモリのブロックのデータ構造の例を示している。
【図４】図２に示したフラッシュメモリへのデータの書き込み動作の例を示している。
【図５】図４に示した書き込み動作において、フラッシュメモリ制御回路により実施される処理の例を示している。
【発明を実施するための形態】
【０００９】
以下、実施形態を図面を用いて説明する。
【００１０】
図１は、一実施形態におけるシステムＳＹＳの例を示している。システムＳＹＳ（ユーザシステム）は、例えば、携帯機器等のマイクロコンピュータシステムの少なくとも一部を構成する。
【００１１】
例えば、システムＳＹＳは、ＣＰＵ（Central Processing Unit）、フラッシュメモリ制御回路ＭＣＮＴおよびフラッシュメモリＦＬＡＳＨ等の不揮発性半導体メモリを有している。ＣＰＵは、例えば、ＣＰＵに内蔵されるＲＯＭに格納されるプログラムを実行することにより動作し、フラッシュメモリＦＬＡＳＨにデータを読み書きし、あるいはフラッシュメモリＦＬＡＳＨに保持されているデータを消去するために、フラッシュメモリ制御回路ＭＣＮＴを制御する。フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵからの指示に基づいて、フラッシュメモリＦＬＡＳＨの読み出し動作、書き込み動作および消去動作を実行するためにフラッシュメモリＦＬＡＳＨを制御する。
【００１２】
フラッシュメモリＦＬＡＳＨは、データ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡを含む少なくとも１つのブロックＢＬＫと、書き込みフラグＷＦＬＧを有している。例えば、書き込みフラグＷＦＬＧは、ラッチ回路により形成される。データ格納領域ＤＡＴＡＡは、ＣＰＵから供給されるデータＤＡＴＡを保持する。エラー訂正符号格納領域ＥＣＣＡは、データ格納領域ＤＡＴＡＡに書き込まれるデータをエラー訂正するためのエラー訂正符号ＥＣＣを保持する。エラー訂正符号ＥＣＣは、ＣＰＵから供給されるデータＤＡＴＡに基づいてフラッシュメモリ制御回路ＭＣＮＴにより生成される。なお、複数組のデータ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡが、ブロックＢＬＫ内に形成されてもよい。また、複数のブロックＢＬＫが形成されてもよい。例えば、ブロックＢＬＫは、消去動作を実行する単位である。書き込みフラグＷＦＬＧは、書き込み動作において、データＤＡＴＡおよびエラー訂正符号ＥＣＣがデータ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡに正常に書き込まれたか否かの情報を保持する。
【００１３】
例えば、データ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡは、それぞれ３２ビットおよび７ビットである。なお、エラー訂正符号格納領域ＥＣＣＡを１ビットの未使用領域を含む８ビットで形成し、データＤＡＴＡおよびエラー訂正符号ＥＣＣを４０ビット（５バイト）を使用して記憶してもよい。例えば、データ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡは、フローティングゲートを含むメモリトランジスタを有する複数のメモリセルにより形成される。このため、データ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡに書き込まれたデータＤＡＴＡおよびエラー訂正符号ＥＣＣは、フラッシュメモリＦＬＡＳＨに電源が供給されていないときにも、失われることなく保持される。
【００１４】
例えば、データ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡは、消去状態で論理１を示し、書き込み動作により論理０に変更される。論理０に設定されたデータ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡをビット単位で論理１に変更することはできない。このとき、データ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡに保持されているデータは、一括してブロックＢＬＫ単位で論理１に消去する必要がある。
【００１５】
フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから書き込み動作の指示を受けたとき、書き込みデータＤＡＴＡに対応するエラー訂正符号ＥＣＣを生成し、書き込みデータＤＡＴＡおよびエラー訂正符号ＥＣＣをフラッシュメモリＦＬＡＳＨに書き込む。書き込み動作は、データ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡの所定のビットを論理１から論理０に変更する動作である。 フラッシュメモリＦＬＡＳＨは、書き込みデータＤＡＴＡおよびエラー訂正符号ＥＣＣをデータ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡに正常に書き込めたとき、正常を示す値に書き込みフラグＷＦＬＧを設定する。フラッシュメモリＦＬＡＳＨは、書き込みデータＤＡＴＡおよびエラー訂正符号ＥＣＣをデータ格納領域ＤＡＴＡＡまたはエラー訂正符号格納領域ＥＣＣＡに書き込めなかったとき、異常を示す値に書き込みフラグＷＦＬＧを設定する。
【００１６】
書き込み動作が正常に実施できたか否かは、例えば、書き込み動作時にフラッシュメモリＦＬＡＳＨ内で自動的に実施されるベリファイ動作により判定される。書き込み動作では、メモリセルを論理０にプログラムするプログラム動作と、メモリセルが論理０に設定されたことを確認するベリファイ動作が順に実施される。プログラム動作とベリファイ動作が所定回数（少なくとも１回）実施された後、最後のベリファイ動作で論理０が確認できないとき、書き込み異常が検出される。例えば、書き込み異常は、データ格納領域ＤＡＴＡＡまたはエラー訂正符号格納領域ＥＣＣＡにおいて、論理０に設定されているビットに論理１を書き込むときに発生する。このとき、書き込みフラグＷＦＬＧは異常を示す値に設定される。
【００１７】
フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから読み出し動作の指示を受けたとき、データ格納領域ＤＡＴＡＡからデータＤＡＴＡを読み出し、読み出したデータＤＡＴＡをＣＰＵに出力する。フラッシュメモリ制御回路ＭＣＮＴは、読み出したデータＤＡＴＡにエラーがあることを検出したとき、データＤＡＴＡとともに読み出したエラー訂正符号ＥＣＣを用いてエラーを訂正し、訂正したデータＤＡＴＡをＣＰＵに出力する。なお、ＣＰＵは、エラー訂正符号格納領域ＥＣＣＡにアクセスすることができず、エラー訂正符号ＥＣＣを読み出すことができない。
【００１８】
フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから消去動作の指示を受けたとき、フラッシュメモリＦＬＡＳＨに消去動作を実行させる。消去動作では、消去が指示されたブロックＢＬＫ内のデータ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡに保持されている全ての値が論理１に設定される。
【００１９】
フラッシュメモリ制御回路ＭＣＮＴは、消去動作後にＣＰＵから最初の書き込み動作の指示を受けたとき、データＤＡＴＡを書き込む前に初期値をデータ格納領域ＤＡＴＡＡに書き込む。例えば、初期値はデータ格納領域ＤＡＴＡＡの全ビットが論理１を示す値（消去状態）である。このため、消去状態のデータ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡに保持されているデータは、論理１の書き込みにより変化することはない。
【００２０】
フラッシュメモリＦＬＡＳＨは、書き込み動作において初期値を受けたとき、データ格納領域ＤＡＴＡＡに保持されているデータＤＡＴＡおよびエラー訂正符号格納領域ＥＣＣＡに保持されているエラー訂正符号ＥＣＣの全ビットが論理１であることを確認する。そして、フラッシュメモリＦＬＡＳＨは、正常を示す値に書き込みフラグＷＦＬＧを設定する。換言すれば、書き込みフラグＷＦＬＧが正常を示すとき、エラー訂正符号格納領域ＥＣＣＡの消去状態が正常であることが確認される。フラッシュメモリ制御回路ＭＣＮＴは、書き込みフラグＷＦＬＧの値を読むことで、初期値の書き込み結果が正常であることを認識し、ＣＰＵから受けたデータＤＡＴＡをフラッシュメモリＦＬＡＳＨに書き込む。
【００２１】
一方、フラッシュメモリＦＬＡＳＨは、書き込み動作において初期値を受け、データＤＡＴＡおよびエラー訂正符号ＥＣＣの少なくとも１ビットが論理０であることを確認したとき、異常を示す値に書き込みフラグＷＦＬＧを設定する。例えば、消去動作中にフラッシュメモリＦＬＡＳＨに供給される電源が遮断されたとき、エラー訂正符号格納領域ＥＣＣＡの一部のビットが論理１に設定されない可能性がある。エラー訂正符号ＥＣＣが、論理０を含むエラー訂正符号格納領域ＥＣＣＡに書き込まれると、正しいエラー訂正符号ＥＣＣが書き込まれないおそれがある。
【００２２】
例えば、２進数で”１１１  １１１０”が設定されているエラー訂正符号格納領域ＥＣＣＡに”１０１  ０１０１”が書き込まれると、論理０の７ビット目（右端のビット）に論理１が書き込まれようとする。 このとき、書き込みの異常により、書き込みフラグＷＦＬＧに異常を示す値が書き込まれる。しかし、フラッシュメモリ制御回路ＭＣＮＴは、異常が、正しく消去されていないことによるものなのか、フラッシュメモリＦＬＡＳＨの寿命によるものなのかを判断できない。ここで、フラッシュメモリＦＬＡＳＨの寿命は、消去回数が上限値を超えたときに発生するハードウエア故障である。
【００２３】
フラッシュメモリ制御回路ＭＣＮＴは、初期値の書き込み後に書き込みフラグＷＦＬＧを読むことで、初期値の書き込み結果が異常であることを認識できる。これにより、エラー訂正符号格納領域ＥＣＣＡが消去状態でないことが確認できる。換言すれば、異常の原因が製品寿命でないことを識別できる。この後、フラッシュメモリ制御回路ＭＣＮＴは、エラー訂正符号格納領域ＥＣＣＡを消去状態に設定するために、初期値の書き込みが指示されたブロックＢＬＫの消去動作を実行する。消去動作後に、フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから受けたデータＤＡＴＡをブロックＢＬＫに書き込む。
【００２４】
以上、この実施形態では、データＤＡＴＡの書き込みを行う前に初期値をデータ格納領域ＤＡＴＡＡに書き込むことで、エラー訂正符号格納領域ＥＣＣＡが初期値か否かを確認できる。ブロックＢＬＫの消去動作を、エラー訂正符号格納領域ＥＣＣＡが初期値でないときのみ実施することで、ブロックＢＬＫの消去の回数を削減でき、製品寿命を延ばすことができる。
【００２５】
なお、図１では、書き込みフラグＷＦＬＧをフラッシュメモリＦＬＡＳＨ内に形成する例を示したが、書き込みフラグＷＦＬＧをフラッシュメモリ制御回路ＭＣＮＴ内に形成してもよい。このとき、書き込み動作において、フラッシュメモリ制御回路ＭＣＮＴがエラー訂正符号格納領域ＥＣＣＡに保持されているエラー訂正符号ＥＣＣを読み出す。そして、フラッシュメモリ制御回路ＭＣＮＴは、書き込み動作が正常に完了したか否かを判定する。
【００２６】
また、フラッシュメモリ制御回路ＭＣＮＴの機能をＣＰＵに持たせてもよい。このとき、フラッシュメモリＦＬＡＳＨへの初期値の書き込み、書き込みフラグＷＦＬＧの確認および初期値の書き込み後の消去動作の指示は、ＣＰＵにより実施される。
【００２７】
図２は、別の実施形態におけるシステムＳＹＳの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。システムＳＹＳ（ユーザシステム）は、例えば、携帯機器等のマイクロコンピュータシステムの少なくとも一部を構成する。システムＳＹＳは、シリコン基板上に複数のマクロが集積されて形成されてもよく、パッケージ基板上に複数のチップを搭載して形成されてもよい。
【００２８】
例えば、システムＳＹＳは、ＣＰＵ、ＲＯＭ、ＲＡＭ、フラッシュメモリ制御回路ＭＣＮＴおよびフラッシュメモリＦＬＡＳＨを有している。ＣＰＵ、ＲＯＭ、ＲＡＭおよびフラッシュメモリ制御回路ＭＣＮＴは、システムバスＳＢＵＳにより互いに接続されている。フラッシュメモリ制御回路ＭＣＮＴとフラッシュメモリＦＬＡＳＨは専用バスにより互いに接続されている。例えば、専用バスのデータのビット幅Ｎは、１６ビットである。フラッシュメモリ制御回路ＭＣＮＴは、フラッシュメモリＦＬＡＳＨから読み出されるデータのエラーを訂正するためのエラー訂正符号ＥＣＣを書き込みデータに基づいて計算するエラー訂正符号生成回路ＥＣＣＧを有している。なお、フラッシュメモリ制御回路ＭＣＮＴの機能をＣＰＵに持たせて、フラッシュメモリ制御回路ＭＣＮＴを介することなくＣＰＵによりフラッシュメモリＦＬＡＳＨ上のデータを直接アクセスしてもよい。 
【００２９】
ＣＰＵは、ＲＯＭ、ＲＡＭにアクセスするとともに、フラッシュメモリ制御回路ＭＣＮＴを介してフラッシュメモリＦＬＡＳＨにアクセスし、システム全体の動作を制御する。フラッシュメモリＦＬＡＳＨは、ＣＰＵからの指示により動作するフラッシュメモリ制御回路ＭＣＮＴからのアクセス要求に応じて、書き込み動作、読み出し動作および消去動作を実行する。特に限定されないが、フラッシュメモリＦＬＡＳＨは、複数のブロックＢＬＫ（ＢＬＫ０、ＢＬＫ１、...、ＢＬＫｎ）を有している。例えば、ＲＯＭは、ＣＰＵが実行するプログラムＰＧＭおよびプログラムＰＧＭで使用するデータが格納されている。例えば、ＲＡＭは、プログラムＰＧＭで使用するデータなどが一時的に格納される。ブロックＢＬＫの例は図３に示す。
【００３０】
図３は、図２に示したフラッシュメモリＦＬＡＳＨのブロックＢＬＫ０−ＢＬＫｎのデータ構造の例を示している。各ブロックＢＬＫ０−ＢＬＫｎのデータ構造は同じため、ブロックＢＬＫ０について説明する。
【００３１】
ブロックＢＬＫ０は、複数のデータ格納領域ＤＡＴＡＡおよびデータ格納領域ＤＡＴＡＡにそれぞれ対応する複数のエラー訂正符号格納領域ＥＣＣＡを有している。各データ格納領域ＤＡＴＡＡは、１６ビット幅のデータ領域ＤＡＴＡＤおよび１６ビット幅のＤＡＴＡＵを有している。すなわち、データ格納領域ＤＡＴＡＡのビット幅は３２ビットである。以下の説明では、データ領域ＤＡＴＡＤ、ＤＡＴＡＵに格納されるデータＤＡＴＡを、ＤＡＴＡＤ、ＤＡＴＡＵとも称する。
【００３２】
この例では、ＣＰＵからフラッシュメモリＦＬＡＳＨに書き込まれるデータおよびフラッシュメモリＦＬＡＳＨからＣＰＵに読み出されるデータは、例えば１６ビットである 。すなわち、ＣＰＵは、１回の書き込み動作または１回の読み出し動作により、データＤＡＴＡＤまたはデータＤＡＴＡＵを入出力する。なお、ＣＰＵは、メモリコントローラＭＣＮＴを介して、８ビット、１６ビットまたは３２ビットのデータをフラッシュメモリＦＬＡＳＨから読み出してもよい。データ格納領域ＤＡＴＡＡのアドレスＡＤは、１バイト（８ビット）毎に割り当てられている。一方、３２ビット幅のデータ格納領域ＤＡＴＡＡを単位とするアドレスＤＴＡＤは、４バイト毎に割り当てられている。すなわち、３２ビット幅のデータ格納領域ＤＡＴＡＡに対して、１つのアドレスＤＴＡＤが付与されている。データ領域ＤＡＴＡＤ、ＤＡＴＡＵの後ろに付けている数字は、アドレスＤＴＡＤを示す。
【００３３】
エラー訂正符号格納領域ＥＣＣＡは、一対のデータ領域ＤＡＴＡＤ、ＤＡＴＡＵに対応して形成されている。各エラー訂正符号格納領域ＥＣＣＡは、対応するデータ領域ＤＡＴＡＤ、ＤＡＴＡＵに書き込まれる３２ビットのデータＤＡＴＡＤ、ＤＡＴＡＵのエラー訂正符号ＥＣＣ（ＥＣＣ０、ＥＣＣ１、...ＥＣＣｍ）を保持する。図１と同様に、エラー訂正符号ＥＣＣは、ＣＰＵによってはアクセスできず、フラッシュメモリ制御回路ＭＣＮＴによってのみアクセスされる。
【００３４】
例えば、各エラー訂正符号格納領域ＥＣＣＡは、データ格納領域ＤＡＴＡＡと異なるアドレスＡＤに割り当てられている。なお、各エラー訂正符号格納領域ＥＣＣＡは、データ格納領域ＤＡＴＡＡと同じアドレスＡＤに割り当てられてもよい。
【００３５】
図４は、図２に示したフラッシュメモリＦＬＡＳＨへのデータの書き込み動作の例を示している。図４は、フラッシュメモリＦＬＡＳＨのデータを書き込むブロックＢＬＫのデータ格納領域ＤＡＴＡＡおよびエラー訂正符号格納領域ＥＣＣＡが全て論理１に消去されていることが分かっているときの動作である。ＣＰＵは、３２ビットのデータＤＡＴＡＤ０、ＤＡＴＡＵ０をフラッシュメモリＦＬＡＳＨに書き込むために、データＤＡＴＡＤ０、ＤＡＴＡＵ０を順次フラッシュメモリ制御回路ＭＣＮＴに出力する（図４（ａ、ｂ））。
【００３６】
フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから供給される最初の１６ビットのデータＤＡＴＡＤ０をフラッシュメモリＦＬＡＳＨのデータ領域ＤＡＴＡＤ０に書き込む（図４（ｃ））。次に、フラッシュメモリ制御回路ＭＣＮＴは、データ領域ＤＡＴＡＤ０に対応するエラー訂正符号格納領域ＥＣＣＡに１６進数の”ＦＦ”を書き込む（図４（ｄ））。次に、フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから供給される次の１６ビットのデータＤＡＴＡＵ０をフラッシュメモリＦＬＡＳＨのデータ領域ＤＡＴＡＵ０に書き込む（図４（ｅ））。
【００３７】
この後、フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから供給された３２ビットのデータＤＡＴＡＤ０、ＤＡＴＡＵ０のエラー訂正符号ＥＣＣを計算する（図４（ｆ））。次に、フラッシュメモリ制御回路ＭＣＮＴは、計算したエラー訂正符号ＥＣＣをデータ領域ＤＡＴＡＤ０に対応するエラー訂正符号格納領域ＥＣＣＡに書き込む（図４（ｇ））。これにより、３２ビットのデータＤＡＴＡＤ０、ＤＡＴＡＵ０およびエラー訂正符号ＥＣＣのフラッシュメモリＦＬＡＳＨへの書き込みが完了する。
【００３８】
なお、フラッシュメモリ制御回路ＭＣＮＴは、フラッシュメモリＦＬＡＳＨにデータＤＡＴＡＤ（またはＤＡＴＡＵ）を書き込むとき、データＤＡＴＡＤ（またはＤＡＴＡＵ）の書き込みに続いて、エラー訂正符号格納領域ＥＣＣＡに対する書き込み動作も実施する。このため、エラー訂正符号ＥＣＣが計算できない最初のデータＤＡＴＡＤの書き込みでは、ダミー（１６進数”ＦＦ”）のエラー訂正符号ＥＣＣがエラー訂正符号格納領域ＥＣＣＡに書き込まれる。このようにフラッシュメモリＦＬＡＳＨへの書き込み制御をパターン化することで、フラッシュメモリ制御回路ＭＣＮＴの回路および動作を簡易にできる。
【００３９】
図５は、図４に示した書き込み動作において、フラッシュメモリ制御回路ＭＣＮＴにより実施される処理の例を示している。図５の処理は、フラッシュメモリ制御回路ＭＣＮＴに形成されたハードウエアにより実現されてよく、フラッシュメモリ制御回路ＭＣＮＴが実行するプログラムにより実現されてもよい。
【００４０】
まず、ステップＳ１００において、フラッシュメモリ制御回路ＭＣＮＴは、ＣＰＵから書き込みデータＤＡＴＡＤを受ける。次に、ステップＳ１０２において、フラッシュメモリ制御回路ＭＣＮＴは、書き込みデータＤＡＴＡＤが、対応するブロックＢＬＫの消去動作後に初めて書き込まれるか否かを判断する。ブロックＢＬＫの消去動作後にデータ領域ＤＡＴＡＤへ初めて書き込み動作を実施するとき、処理はステップＳ１０４に移行する。ブロックＢＬＫの消去動作後に書き込み動作を既に実施しているとき、処理はステップＳ１１２に移行する。
【００４１】
例えば、書き込み動作の有無は、ブロックＢＬＫ毎に設けられた消去確認フラグの値を読み出すことで判断される。消去確認フラグは、対応するブロックＢＬＫの消去動作後に論理１に設定され、そのブロックＢＬＫの消去動作後に初めて書き込み動作を実施したときに論理０に設定される。消去確認フラグは、フラッシュメモリ制御回路ＭＣＮＴ内に形成してもよく、フラッシュメモリＦＬＡＳＨ内に形成してもよい。消去確認フラグは、フラッシュメモリＦＬＡＳＨ内に形成されるとき、各ブロックＢＬＫ内のメモリセルの１つを利用してもよい。
【００４２】
ステップＳ１０４において、フラッシュメモリ制御回路ＭＣＮＴは、フラッシュメモリＦＬＡＳＨのデータ領域ＤＡＴＡＤに、初期値として”０ｘＦＦＦＦ”を書き込む。ここで、”０ｘ”は１６進数を示している。すなわち、データ領域ＤＡＴＡＤには、１６進数で”ＦＦＦＦ”（１６ビット）が書き込まれる。フラッシュメモリＦＬＡＳＨは、フラッシュメモリ制御回路ＭＣＮＴからの指示を受け、データ領域ＤＡＴＡＤに”ＦＦＦＦ”を書き込む書き込み動作を実施する。この際、フラッシュメモリＦＬＡＳＨは、ベリファイ動作により、データ領域ＤＡＴＡＤおよびエラー訂正符号格納領域ＥＣＣＡに”ＦＦＦＦ”および”ＦＦ”がそれぞれ設定されていることを確認する。
【００４３】
データ領域ＤＡＴＡＤおよびエラー訂正符号格納領域ＥＣＣＡの値がそれぞれ”ＦＦＦＦ”および”ＦＦ”のとき、フラッシュメモリＦＬＡＳＨは、正常を示す値に書き込みフラグＷＦＬＧを設定する。データ領域ＤＡＴＡＤの値が”ＦＦＦＦ”でないとき、またはエラー訂正符号格納領域ＥＣＣＡの値が”ＦＦ”でないとき、フラッシュメモリＦＬＡＳＨは、異常を示す値に書き込みフラグＷＦＬＧを設定する。なお、データＤＡＴＡＤ、ＤＡＴＡＵが、図３に示した複数のデータ格納領域ＤＡＴＡＡに格納されるとき、使用する全てのデータ領域ＤＡＴＡＤに初期値”０ｘＦＦＦＦ”が書き込まれる。
【００４４】
次に、ステップＳ１０６において、フラッシュメモリ制御回路ＭＣＮＴは、書き込みフラグＷＦＬＧの値を読み出す。ステップＳ１０８において、フラッシュメモリ制御回路ＭＣＮＴは、書き込みフラグＷＦＬＧが正常な値を示すとき、初期値”ＦＦＦＦ”の書き込みが成功したと判断し、ステップＳ１１２の処理を行う。フラッシュメモリ制御回路ＭＣＮＴは、書き込みフラグＷＦＬＧが異常な値を示すとき、初期値”ＦＦＦＦ”の書き込みが失敗したと判断し、ステップＳ１１０の処理を行った後に、ステップＳ１１２の処理を行う。
【００４５】
ステップＳ１１０において、フラッシュメモリ制御回路ＭＣＮＴは、初期値”ＦＦＦＦ”を書き込んだデータ領域ＤＡＴＡＤを含むブロックＢＬＫに消去動作を実施させる。消去動作により、ブロックＢＬＫ内の全てのデータ格納領域ＤＡＴＡＡおよび全てのエラー訂正符号格納領域ＥＣＣＡは、論理１に設定される。
【００４６】
ステップＳ１１２において、フラッシュメモリ制御回路ＭＣＮＴは、図４に示した書き込み動作の処理を実施する。上述したように、消去動作中にフラッシュメモリＦＬＡＳＨに供給される電源が遮断されたとき、エラー訂正符号格納領域ＥＣＣＡの一部のビットが論理１に設定されない可能性がある。ステップＳ１０４において初期値”０ｘＦＦＦＦ”をデータ領域ＤＡＴＡＤに書き込むことで、エラー訂正符号格納領域ＥＣＣＡの全てのビットが論理１に設定されていることを容易に確認できる。これにより、ブロックＢＬＫの消去動作を、エラー訂正符号格納領域ＥＣＣＡが正常でないときのみ実施できる。この結果、ブロックＢＬＫの消去の回数を削減でき、製品寿命を延ばすことができる。
【００４７】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。なお、ＣＰＵがフラッシュメモリ制御回路ＭＣＮＴの機能を含むとき、図５に示した処理は、ＣＰＵにより実施されてもよい。
【００４８】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００４９】
ＡＤ‥アドレス；ＢＬＫ‥ブロック；ＤＡＴＡ‥データ；ＤＡＴＡＡ‥データ格納領域；ＤＡＴＡＤ、ＤＡＴＡＵ‥データ領域；ＤＴＡＤ‥アドレス；ＥＣＣ‥エラー訂正符号；ＥＣＣＡ‥エラー訂正符号格納領域；ＦＬＡＳＨ‥フラッシュメモリ；ＭＣＮＴ‥フラッシュメモリ制御回路；ＳＹＳ‥システム；ＷＦＬＧ‥書き込みフラグ
【図１】
2011227659.tif 000003
【図２】
2011227659.tif 000004
【図３】
2011227659.tif 000005
【図４】
2011227659.tif 000006
【図５】
2011227659.tif 000007