(57)【要約】【課題】書換え処理中に電源遮断が発生しても、正常な記憶情報が全て破損されるような事態を回避する。【解決手段】メモリカード（１）は、フラッシュメモリ（２）と、フラッシュメモリに対する制御及び外部とのインタフェース制御を行うカードコントローラ（３）とを有する。フラッシュメモリは、カードコントローラのための制御プログラムであるファームデータを格納するファームデータ領域を有する。サブブロック（２３〜２５）には、多重化されデータ記憶領域に分散されたファームデータ領域と、ユーザーデータ領域とが混在している。カードコントローラは、電源投入時に、ＥＣＣ回路（１４）により、複数のファームデータ領域が保有する情報に対するエラー検出及び必要な訂正処理を行う。さらに、カードコントローラは、エラーが検出されなかった又はエラーが訂正された情報を用いて、少なくともエラー訂正不能なファームデータ領域に対する書換えを行う。【選択図】図１
2007122640.tif 000002
【特許請求の範囲】
【請求項１】
電気的に書換え可能な不揮発性メモリと、前記不揮発性メモリに対する制御及び外部とのインタフェース制御を行うコントローラとを有し、
前記不揮発性メモリは、複数の不揮発性物理アドレス領域の一部として、前記コントローラの動作プログラムを多重化して保有するためにプログラム格納用物理アドレス領域を複数個有し、
前記コントローラは、所定のタイミングで前記プログラム格納用物理アドレス領域が保有する情報を再生するための再生制御を行い、
前記再生制御として、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、エラーが検出されなかった又はエラーが訂正された情報を用いて、少なくともエラー訂正不能な前記プログラム格納用物理アドレス領域に対する書換えを行う記憶装置。
【請求項２】
前記再生制御として、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、エラーが検出されなかった又はエラーが訂正された情報を用いて、エラー訂正不能な前記プログラム格納用物理アドレス領域、エラーが訂正された前記プログラム格納用物理アドレス領域の順に、前記プログラム格納用物理アドレス領域に対する書換えを行う請求項１記載の記憶装置。
【請求項３】
前記再生制御として、残りの前記プログラム格納用物理アドレス領域に対する書換えを行う請求項２記載の記憶装置。
【請求項４】
前記再生制御として、電源投入時に、前記プログラム格納用物理アドレス領域を順次検索し、検索された当該プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、
エラーが訂正された前記プログラム格納用物理アドレス領域と、エラー訂正不能な前記プログラム格納用物理アドレス領域とのアドレス情報を登録し、少なくともエラーが検出されなかったプログラム格納用物理アドレス領域が２個ある場合に、前記検索を中断する請求項３記載の記憶装置。
【請求項５】
前記再生制御として、コマンド応答時に、前記アドレス情報で特定される前記プログラム格納用物理アドレス領域に、前記エラーが検出されなかった又はエラーが訂正されたプログラム格納用物理アドレス領域の情報を用いて書換えを行い、さらに、残りの前記プログラム格納用物理アドレス領域に対する書換えを行う請求項４記載の記憶装置。
【請求項６】
前記再生制御として、エラーが検出されなかった又はエラーが訂正された前記プログラム格納用物理アドレス領域が少なくとも１つなければ、失敗を示すステータス情報を外部に出力する請求項５記載の記憶装置。
【請求項７】
前記コントローラは、前記再生制御を行うための再生制御プログラムが格納されたＲＯＭを有する請求項１記載の記憶装置。
【請求項８】
前記不揮発性メモリは、複数の不揮発性メモリセルの選択端子にワード線が接続され、データ端子にサブビット線が接続されたメモリブロックを複数有し、前記複数のメモリブロックのサブビット線が、ストリングスイッチを介してメインビット線に共通接続されたメモリアレイを有し、
前記不揮発性物理アドレス領域は、同一ワード線に接続された複数の不揮発性メモリセルに対応する記憶領域とされ、
前記プログラム格納用物理アドレス領域は、前記複数のメモリブロックに割り当てられている請求項１記載の記憶装置。
【請求項９】
前記複数のプログラム格納用物理アドレス領域以外の他の不揮発性物理アドレス領域は、書換え可能なデータ領域である請求項１記載の記憶装置。
【請求項１０】
電気的に書換え可能な不揮発性メモリと、前記不揮発性メモリに対する制御及び外部とのインタフェース制御を行うコントローラとを有し、
前記不揮発性メモリは、複数の不揮発性物理アドレス領域の一部として、前記コントローラの動作プログラムを多重化して保有するためにプログラム格納用物理アドレス領域を複数個有し、
前記コントローラは、所定のタイミングで前記プログラム格納用物理アドレス領域が保有する情報を再生するための再生制御を行い、
前記プログラム格納用物理アドレス領域は、世代情報を格納する領域を有し、
前記再生制御として、前記世代情報の古い方を優先して、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、エラーが検出されなかった又はエラーが訂正された情報を用いて、少なくともエラー訂正不能なプログラム格納用物理アドレス領域に対する書換えを行うと共に、当該プログラム格納用物理アドレス領域の世代情報を更新する記憶装置。
【請求項１１】
前記再生制御として、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、エラーが検出されなかった又はエラーが訂正された情報を用いて、エラー訂正不能な前記プログラム格納用物理アドレス領域、エラーが訂正された前記プログラム格納用物理アドレス領域の順に、前記プログラム格納用物理アドレス領域に対する書換えを行う請求項１０記載の記憶装置。
【請求項１２】
前記再生制御として、電源投入時に、前記プログラム格納用物理アドレス領域を検索し、検索された当該プログラム格納用物理アドレス領域の前記世代情報を登録し、
前記世代情報の古い方を優先して順次プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、
エラーが訂正された前記プログラム格納用物理アドレス領域と、エラー訂正不能な前記プログラム格納用物理アドレス領域とのアドレス情報を登録し、少なくともエラーが検出されなかったプログラム格納用物理アドレス領域が２個ある場合に、前記検索を中断する請求項１０記載の記憶装置。
【請求項１３】
前記再生制御として、コマンド応答時に、前記アドレス情報で特定される前記プログラム格納用物理アドレス領域に、前記エラーが検出されなかった又はエラーが訂正されたプログラム格納用物理アドレス領域の情報を用いて書換えを行う請求項１２記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的に書換え可能な不揮発性メモリとコントローラを有する記憶装置に関し、例えばメモリカードに適用して有効な技術に関する。
【背景技術】
【０００２】
メモリカードは、フラッシュメモリと共にカードコントローラを搭載している。カードコントローラは、メモリカードのホスト装置とのインタフェース制御及びフラッシュメモリに対するアクセス制御を行う。カードコントローラがこれらの制御を行うための制御プログラムは、カードコントローラ内のマスクＲＯＭだけでなく、例えば機能変更や機能拡張がされた部分がフラッシュメモリに格納される場合がある。この場合には、ファイルメモリとして機能するフラッシュメモリの一部の領域は、この制御プログラムの格納領域（以下、プログラム領域とも記す）に割り当てられる。
【０００３】
フラッシュメモリは、高電圧印加による消去や書込み動作によって、その閾値電圧を変更することにより、記憶情報の書換えを行うことができる。消去や書込み動作時にワード線などに印加される高電圧は、選択ワード線や選択データ線につながる非選択メモリセルにも影響を与える。この影響により、非選択メモリセルの閾値電圧が経年変化して、不揮発性メモリセルの閾値電圧が不所望に変動する虞がある。このような現象は、ディスターブと称される。
【０００４】
プログラム領域は、例えばユーザーデータのように頻繁に書換えられることもなく、さらに、物理アドレスが固定であれば、選択ワード線などにつながる書換え対象の不揮発性メモリセルに印加される高電圧の影響を強く受けることが懸念される。要するに、プログラム領域に格納された制御プログラムは、ディスターブの影響を強く受けることが予想される。また、制御プログラムに限らず、救済や制御用のパラメータデータも同様の影響があると考えられる。特許文献１は、メモリカードにおけるデータ保持の信頼性を向上させるために、電源投入時の所定タイミングで、記憶情報のエラー検出・訂正を行う技術を開示している。
【０００５】
【特許文献１】特開２００３−５８４３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明者は、メモリカード等のフラッシュメモリに格納された制御プログラムに対する情報保持性能について検討した。その結果、特許文献１の技術では、確かにエラーに対する自己修復機能は実現されているものの、自己修復のための処理時間の短縮や、修復時における電源遮断等に対する考慮はされていない。
【０００７】
本発明の目的は、書換え処理中に電源遮断が発生しても、正常な記憶情報が全て破損されるような事態を回避できる記憶装置を提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
〔１〕本発明に係る記憶装置は、電気的に書換え可能な不揮発性メモリ（２）と、前記不揮発性メモリに対する制御及び外部とのインタフェース制御を行うコントローラ（３）とを有する。前記不揮発性メモリは、複数の不揮発性物理アドレス領域の一部として、前記コントローラの動作プログラムを多重化して保有するためにプログラム格納用物理アドレス領域（２６，２７，２８）を複数個有する。前記コントローラは、所定のタイミングで前記プログラム格納用物理アドレス領域が保有する情報を再生するための再生制御を行う。前記再生制御として、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、エラーが検出されなかった又はエラーが訂正された情報を用いて、少なくともエラー訂正不能な前記プログラム格納用物理アドレス領域に対する書換えを行う。
【００１１】
上記より、複数のプログラム格納用物理アドレス領域は、動作プログラムを多重化して記憶し、多重化された動作プログラムを保持するプログラム格納用物理アドレス領域に対してエラー検出及び必要な訂正処理を行った後に、正常データ、即ち、エラーが訂正された又はもともとエラーがないプログラム格納用物理アドレス領域のデータに基づいて、エラー訂正不能なデータを書換えることができる。従って、書換え処理中に電源遮断があっても、既に正常データがプログラム格納用物理アドレス領域に残っているから、全てのプログラム格納用物理アドレス領域の情報が破壊されるような事態の発生を未然に防止できる。また、少なくとももともと壊れている領域、即ち、エラー検出がされたプログラム格納用物理アドレス領域を修復するから、書換え処理中に不所望な電源遮断があっても、正常データが破壊されることを防止できる。
【００１２】
本発明の具体的な一つの形態として、前記再生制御として、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行う。再生制御として、エラーが検出されなかった又はエラーが訂正された情報を用いて、エラー訂正不能な前記プログラム格納用物理アドレス領域、エラーが訂正された前記プログラム格納用物理アドレス領域の順に、前記プログラム格納用物理アドレス領域に対する書換えを行う。上記より、修復の必要性が高いプログラム格納用物理アドレス領域から順に書換えを行うから、プログラム格納用物理アドレス領域の信頼性をより高めることができる。
【００１３】
本発明の具体的な一つの形態として、前記再生制御として、残りの前記プログラム格納用物理アドレス領域に対する書換えを行う。上記より、もともとエラーがないプログラム格納用物理アドレス領域についても書換えを行うから、全てのプログラム格納用物理アドレス領域に対する信頼性を高めることができる。
【００１４】
本発明の具体的な一つの形態として、前記再生制御として、電源投入時に、前記プログラム格納用物理アドレス領域を順次検索し、検索された当該プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行う。再生制御として、エラーが訂正された前記プログラム格納用物理アドレス領域と、エラー訂正不能な前記プログラム格納用物理アドレス領域とのアドレス情報を登録し、少なくともエラーが検出されなかったプログラム格納用物理アドレス領域が２個ある場合に、前記検索を中断する。もともとエラーがないプログラム格納用物理アドレス領域が少なくとも２個あれば、それらが一度に破壊されることもないと考えられるので、検索を中断し、これによって、検索に伴う時間を短縮することができる。
【００１５】
本発明の具体的な一つの形態として、前記再生制御として、コマンド応答時に、前記アドレス情報で特定される前記プログラム格納用物理アドレス領域に、前記エラーが検出されなかった又はエラーが訂正されたプログラム格納用物理アドレス領域の情報を用いて書換えを行い、さらに、残りの前記プログラム格納用物理アドレス領域に対する書換えを行う。上記より、アドレス情報で特定されるプログラム格納用物理アドレス領域は、ディスターブの影響が大きい領域であることが予想されるから、残りのプログラム格納用物理アドレス領域よりも先に書換えを行うことにより、プログラム格納用物理アドレス領域に対する全体としての情報記憶の信頼性を高めるのに資することができる。
【００１６】
本発明の具体的な一つの形態として、前記再生制御として、エラーが検出されなかった又はエラーが訂正された前記プログラム格納用物理アドレス領域が少なくとも１つなければ、失敗を示すステータス情報を外部に出力する。上記より、全てのプログラム格納用物理アドレス領域がエラー訂正不能であったときや、プログラム格納用物理アドレス領域が存在しなかったときに、再生制御が失敗したことを外部に認識させることができる。
【００１７】
本発明の具体的な一つの形態として、前記コントローラは、前記再生制御を行うための再生制御プログラムが格納されたＲＯＭ（１５）を有する。外部より、再生制御プログラムをロードすることを要しない。
【００１８】
本発明の具体的な一つの形態として、前記不揮発性メモリは、複数の不揮発性メモリセル（２０）の選択端子にワード線が接続され、データ端子にサブビット線が接続されたメモリブロック（２３，２４，２５）を複数有する。不揮発性メモリは、前記複数のメモリブロックのサブビット線が、ストリングスイッチ（２２）を介してメインビット線に共通接続されたメモリアレイ（２１）を有する。前記不揮発性物理アドレス領域は、同一ワード線に接続された複数の不揮発性メモリセルに対応する記憶領域とされる。前記プログラム格納用物理アドレス領域は、前記複数のメモリブロックに割り当てられている。上記より、ストリングスイッチで分離可能な一つのメモリブロックに、プログラム格納用物理アドレス領域を全て集約し、それ以外の用途に用いないという構成を採用しない。ストリングスイッチで分離可能な一つのメモリブロックには、通常２５６又は５１２個の多くの不揮発性物理アドレス領域が配置されることを考慮すると、ユーザーデータ等に開放可能な不揮発性物理アドレス領域が無駄に制限される事態を極力排除することができる。従って、一つのメモリブロックには、プログラム格納用物理アドレス領域と、書換え可能なユーザーデータ等に開放された不揮発性物理アドレス領域とが混在されることになる。
【００１９】
〔２〕本発明に係る記憶装置は、電気的に書換え可能な不揮発性メモリと、前記不揮発性メモリに対する制御及び外部とのインタフェース制御を行うコントローラとを有する。前記不揮発性メモリは、複数の不揮発性物理アドレス領域の一部として、前記コントローラの動作プログラムを多重化して保有するためにプログラム格納用物理アドレス領域を複数個有する。前記コントローラは、所定のタイミングで前記プログラム格納用物理アドレス領域が保有する情報を再生するための再生制御を行う。前記プログラム格納用物理アドレス領域は、世代情報（３０）を格納する領域を有する。前記再生制御として、前記世代情報の古い方を優先して、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行い、エラーが検出されなかった又はエラーが訂正された情報を用いて、少なくともエラー訂正不能なプログラム格納用物理アドレス領域に対する書換えを行うと共に、当該プログラム格納用物理アドレス領域の世代情報を更新する。
【００２０】
上記より、複数のプログラム格納用物理アドレス領域は、動作プログラムを多重化して記憶し、多重化された動作プログラムを保持するプログラム格納用物理アドレス領域に対してエラー検出及び必要な訂正処理を行った後に、正常データ、即ち、エラーが訂正された又はもともとエラーがないプログラム格納用物理アドレス領域のデータに基づいて、エラー訂正不能なデータを書換えることができる。従って、書換え処理中に電源遮断があっても、既に正常データが所定の物理アドレス領域に残っているから、全てのプログラム格納用物理アドレス領域の情報が破壊されるような事態の発生を未然に防止できる。また、少なくとももともと壊れている領域、即ち、エラー検出がされたプログラム格納用物理アドレス領域を修復するから、書換え処理中に不所望な電源遮断があっても、正常データが破壊されることを防止できる。さらに、エラー検出及び必要な訂正処理は、複数のプログラム格納用物理アドレス領域に対して常に同じ順で行われるのではなく、更新される前の世代情報が古い方のプログラム格納用物理アドレス領域を優先して処理対象とするから、プログラム格納用物理アドレス領域の全てに対して片寄りなく書換えを行うことが可能になる。
【００２１】
本発明の具体的な一つの形態として、前記再生制御として、前記プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行う。再生制御として、エラーが検出されなかった又はエラーが訂正された情報を用いて、エラー訂正不能な前記プログラム格納用物理アドレス領域、エラーが訂正された前記プログラム格納用物理アドレス領域の順に、前記プログラム格納用物理アドレス領域に対する書換えを行う。上記より、修復の必要性が高いプログラム格納用物理アドレス領域から順に書換えを行うから、プログラム格納用物理アドレス領域の信頼性をより高めることができる。
【００２２】
本発明の具体的な一つの形態として、前記再生制御として、電源投入時に、前記プログラム格納用物理アドレス領域を検索し、検索された当該プログラム格納用物理アドレス領域の前記世代情報を登録する。再生制御として、前記世代情報の古い方を優先して順次プログラム格納用物理アドレス領域が保有する情報に対するエラー検出及び必要な訂正処理を行う。再生制御として、エラーが訂正された前記プログラム格納用物理アドレス領域と、エラー訂正不能な前記プログラム格納用物理アドレス領域とのアドレス情報を登録し、少なくともエラーが検出されなかったプログラム格納用物理アドレス領域が２個ある場合に、前記検索を中断する。もともとエラーがないプログラム格納用物理アドレス領域が少なくとも２個あれば、それらが一度に破壊されることもないと考えられるので、検索を中断し、これによって、検索に伴う時間を短縮することができる。
【００２３】
本発明の具体的な一つの形態として、前記再生制御として、コマンド応答時に、前記アドレス情報で特定される前記プログラム格納用物理アドレス領域に、前記エラーが検出されなかった又はエラーが訂正されたプログラム格納用物理アドレス領域の情報を用いて書換えを行う。上記より、アドレス情報で特定されるプログラム格納用物理アドレス領域は、ディスターブの影響が大きい領域であることが予想されるから、このプログラム格納用物理アドレス領域を正常データによって書換えを行うことにより、当該プログラム格納用物理アドレス領域に対する情報記憶の信頼性を高めるのに資することができる。
【発明の効果】
【００２４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００２５】
即ち、書換え処理中に電源遮断が発生しても、正常な記憶情報が全て破損されるような事態を回避できる。
【発明を実施するための最良の形態】
【００２６】
《メモリカードの全体構成》
図１には、本発明を適用したメモリカードの一例が示される。メモリカード１は、カード基板に、電気的に書換え可能な不揮発性メモリであるフラッシュメモリ２と共に、カードコントローラ３を搭載している。カードコントローラ３は、メモリカード１のホスト装置（ＨＯＳＴ）４との間のインタフェース制御及びフラッシュメモリ２に対するアクセス制御を行う。
【００２７】
カードコントローラ３は、フラッシュメモリインタフェース回路（ＦＩＦ）５を介してフラッシュメモリ２に接続され、ホストインタフェース回路（ＨＩＦ）６を介してホスト装置４に接続される。
【００２８】
ホストインタフェース回路６は、当該メモリカード１のカード仕様に準拠したインタフェース機能を備える。ホスト装置４からメモリカードコマンドがホストインタフェース回路６に与えられると、ホストインタフェース回路６は、そのメモリカードコマンドを解読し、解読結果に応じた処理を例えば割り込みによってＣＰＵ７に与える。ＣＰＵ７は、その割り込み要求に応答する割り込み処理プログラムを実行することによって、カードコントローラ３の内部を制御する。カードコントローラ３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）によって構成されるデータ格納領域として、ワークＲＡＭ（ＷＲＡＭ）８、インストラクションＲＡＭ（ＩＲＡＭ）９、リードバッファＲＡＭ（ＲＢＲＡＭ）１０、及びライトバッファＲＡＭ（ＷＢＲＡＭ）１１を備える。これらのＲＡＭは、ＲＡＭセレクタ（ＲＳＥＬ）１２によってホストインタフェース回路６、ＣＰＵ７及びＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１３に接続される。
【００２９】
ＤＭＡＣ１３は、ホストインタフェース回路６からＷＢＲＡＭ１１への書込みデータのデータ転送制御、フラッシュメモリインタフェース回路５からＲＢＲＡＭ１０への読出しデータのデータ転送制御等に利用される。ＷＲＡＭ８は、ＣＰＵ７の作業領域である。また、エラーチェックアンドコレクト（ＥＣＣ）による情報記憶の信頼性を向上させるときは、ＥＣＣ回路１４を用いて、エラー検出及び必要な訂正を行う。ＥＣＣ回路１４は、例えば書込みデータに基づいてＥＣＣコードを生成し、また、読出しデータに付随するＥＣＣコードを用いて読み出しデータに対するエラー検出と必要な訂正を行う。
【００３０】
メモリカード１は、ハードディスク互換のファイルメモリとして機能されるものである。また、メモリカード１は、所定の入出力プロトコルに基づきデータの入出力を行うことができるものであれば、挿抜可能とされるもの、又はプリント基板（ＰＣＢ）に半田により固着されるものであってもよい。ＣＰＵ７は、ファイルのセクタを規定する論理アドレスとフラッシュメモリ２の物理アドレスとを対応させる論理アドレス・物理アドレス変換テーブル（論物変換テーブル）を用いて、フラッシュメモリ２に対するアクセス制御を行う。フラッシュメモリ２に対するデータの読出しや書込みに際して、ＣＰＵ７は、フラッシュアクセスコマンドを発行してその動作を制御する。フラッシュメモリ２は、一括消去単位の記憶領域（物理セクタ）毎に物理アドレスが割り当てられている。この物理セクタが物理アドレス領域とされる。
【００３１】
ＣＰＵ７の動作プログラムは、マスクＲＯＭ１５が保有する。その他に、機能の拡張又は変更に応じた一部の動作プログラムがフラッシュメモリ２に格納される。マスクＲＯＭ１５を修正するには、そのマスクパターンを変更しなければならなくなり、カードコントローラ３を再度製造し直す必要があるからである。フラッシュメモリ２に格納されるＣＰＵ７の動作プログラムを、以下単にファームデータとも称する。ファームデータを格納するプログラム格納用物理アドレス領域（ファームデータ領域）は、メモリカード１の製造段階若しくは当該メモリカード１用のフラッシュメモリ２の製造段階で固定的に決定される。上記したファームデータ領域は、複数の物理セクタに多重化され、フラッシュメモリ２の不揮発性記憶領域（データ記憶領域）中に分散されている。それ故に、ファームデータ領域は、ビット線を共有する他の物理セクタに対する消去動作や書込み動作において、ディスターブの影響を受けることになる。カードコントローラ３は、そのようなディスターブによるファームデータの不所望な変化を抑制するためにファームデータに対するリフレッシュ動作を行う。
【００３２】
図２には、フラッシュメモリ２のメモリアレイが例示される。フラッシュメモリ２は、２値又は多値で情報記憶が可能であり、特に制限されないが、単結晶シリコン等の１個の半導体基板に、相補型ＭＯＳ集積回路製造技術によって形成されている。
【００３３】
このフラッシュメモリ２は、多数の不揮発性メモリセル２０をマトリクス状に配置したメモリアレイ（ＭＡＲＹ）２１を有する。不揮発性メモリセル２０は、特に制限されないが、２層ゲート構造の絶縁ゲート型のｎチャンネル電界効果トランジスタにより構成されている。この不揮発性メモリセル２０は、例えばＰ型シリコン基板上に設けたＰ型ウエル領域ＰＷと、Ｐ型ウエル領域ＰＷに形成されたソースＳＣ及びドレインＤＲと、フローティングゲートＦＧと、コントロールゲートＣＧとを有する。フローティングゲートＦＧは、ソースＳＣとドレインＤＲ間のチャネル形成領域の上に、トンネル絶縁膜としての薄いゲート酸化膜を介して配置されている。コントロールゲートＣＧは、フローティングゲートＦＧの上に、絶縁膜を介して配置されている。
【００３４】
不揮発性メモリセル２０のドレインＤＲは、データ端子であって、列毎にサブビット線（ＳＢＬ）に接続される。サブビット線は、ストリングスイッチ２２を介してメインビット線（ＭＢＬ）に共通接続されている。また、不揮発性メモリセル２０のコントロールゲートＣＧは、選択端子であって、行単位でワード線（ＷＬ）に接続される。さらに、不揮発性メモリセル２０のソースＳＣは、共通のソース線（ＳＬ）に接続される。
【００３５】
次に、この不揮発性メモリセル２０に対する情報のプログラム動作（書込み動作）、消去動作及び読出し動作について説明する。書込み動作は、特に制限されないが、ドレインＤＲからソースＳＣに電流を流し、ソースＳＣ端のシリコン基板表面でホットエレクトロンを発生させ、これをコントロールゲートＣＧとフローティングゲートＦＧの高電圧による電界でフローティングゲートＦＧに注入することで閾値電圧を高くする動作とされる。尚、書込み動作は、フローティングゲートＦＧとＰ型ウェル領域ＰＷ間に高電圧を印加し、ＦＮトンネル現象により電子を注入するのであってもよい。
【００３６】
一方、消去動作は、特に制限されないが、ソースＳＣ、ドレインＤＲ及びＰ型ウエル領域ＰＷに回路の接地電圧を印加し、コントロールゲートＣＧとフローティングゲートＦＧに負の高電圧を印加して、ＦＮトンネル現象によりフローティングゲートＦＧの電子を放出させる方向に移動させることで閾値電圧を低くする動作とされる。尚、消去動作は、シリコン基板表面で発生させたホットホールをフローティングゲートＦＧに注入することで、フローティングゲートＦＧ内の電子を中和し、閾値電圧を低くするのであってもよい。
また、読出し動作は、ビット線を予めプリチャージしておき、所定の読出し判定レベルをワード線選択レベルとして不揮発性メモリセル２０を選択して、ビット線に流れる電流変化若しくはビット線に現れる電圧レベル変化によって記憶情報を検出可能にする動作とされる。
【００３７】
メモリアレイ２１は、複数の不揮発性メモリセル２０とストリングスイッチ２２からなるサブブロックを複数有する。同図では３つのサブブロック２３，２４，２５を示しているが、実際にはメモリアレイ２１の規模に応じて多数配置可能である。これらのサブブロック２３，２４，２５は、図示のように、ストリングスイッチ２２で分離可能なメモリブロックとされる。また、フラッシュメモリ２のデータ記憶領域において、物理アドレスが割り当てられた物理セクタは、同一ワード線に接続された複数の不揮発性メモリセル２０に対応する記憶領域とされる。要するに、それぞれのサブブロックは、サブブロック内に配置されたワード線の数、即ち行数分の物理セクタを有している。
【００３８】
次に、メモリアレイ２１におけるディスターブについて説明する。書込み動作において書込み選択される不揮発性メモリセル２０には、メインビット線から選択されたストリングスイッチ２２を介してサブビット線にドレイン電流が流れる。このときのメインビット線電圧は、オフ状態のストリングスイッチ２２に接続するサブビット線には印加されない。従って、相違するワード線に接続されていても、同一サブブロックに含まれる不揮発性メモリセル２０は、書込み非選択であっても、ドレイン電圧を受けることによってディスターブを受ける。このことから、明らかなように、殆ど書換えを行う必要のないプログラムや定数データを、１つのサブブロックに集めて格納すれば、頻繁に書換えられるユーザーデータ等の書換え動作によるディスターブを殆ど受けなくてよい。
【００３９】
図３には、フラッシュメモリ２による物理セクタのブロック配置が例示される。それぞれの物理セクタは、その記憶領域の一部に管理領域（ＡＤＭＦＤ）が割り当てられている。図中、点線で囲んだ領域がそれぞれサブブロック２３，２４，２５に対応しており、サブブロック２３，２４，２５内の実線で囲んだ領域が物理セクタに対応する。サブブロック２３，２４，２５は、その物理セクタを、ファームデータ領域と、例えば頻繁に書換えを行うユーザーデータ等に開放された領域（以下、ユーザーデータ領域とも記す）とに割り当てている。このファームデータ領域は、同図では、オリジナルのファームデータを格納した物理セクタ２６と、例えばミラーリングによる同一ファームデータを格納した物理セクタ２７，２８とに、多重化されている。言換えると、ファームデータ領域は、フラッシュメモリ２のデータ記憶領域中に分散されている。従って、それぞれのサブブロック２３，２４，２５には、ファームデータ領域とユーザーデータ領域とが混在されることになる。
【００４０】
このようなブロック配置によれば、ストリングスイッチ２２で分離可能なサブブロック２３，２４，２５には、通常２５６又は５１２個の多くの物理セクタが配置されることを考慮すると、ユーザーデータ等に開放可能な物理セクタが無駄に制限される事態を極力排除することができる。但し、このブロック配置では、前述のディスターブを受けることになる。
【００４１】
図４には、比較例としての物理セクタのブロック配置が例示される。同図に示すサブブロック２３Ａ，２４Ａ，２５Ａは、それぞれの物理セクタを特定の用途だけに用いるような割り当てとなっている。具体的には、サブブロック２３Ａの物理セクタは、ユーザーデータには開放されず、ファームデータ領域と、システムデータを格納する領域とに割り当てている。また、サブブロック２４Ａ，２５Ａは、その物理セクタをユーザーデータ領域だけに割り当てている。
【００４２】
このブロック配置によれば、ファームデータ領域とユーザーデータ領域を、ストリングスイッチ２２により分離可能なサブブロックに分けて配置できるから、ディスターブの影響を低減できる。しかしながら、同図に示すブロック配置では、サブブロック２３Ａには使用されていない物理セクタが存在するにもかかわらず、この物理セクタをユーザーデータに開放できない。従って、ファームデータが、ユーザーデータに比べて容量が極めて小さい場合には、ファームデータのためだけに１つのサブブロックの物理セクタを開放してしまうと、本来であれば活用できる多数の物理セクタを無駄にしてしまうことになり、フラッシュメモリ２に記憶可能なユーザーデータの容量が小さくなってしまう。
【００４３】
図５には、カードコントローラ３の全体的な制御シーケンスが例示される。メモリカード１に動作電源が投入されると、ＣＰＵ７は、内部の初期化処理を行った後、ファームロード処理Ｓ１を行う。ファームロード処理Ｓ１は、フラッシュメモリ２のファームデータ領域に予め格納されているファームデータをＩＲＡＭ９にロードする処理であるが、ロードする際には、ＥＣＣ回路１４を用いてファームデータのエラー検出と必要な訂正を行う。さらに、ファームロード処理Ｓ１は、エラー訂正が行われたファームデータ領域のセクタアドレスと、エラー訂正不能なファームデータ領域のセクタアドレスとを区別可能にして登録する処理等を行う。このファームロード処理Ｓ１は、３重に多重化されたファームデータのうち、全てのファームデータ領域のファームデータがエラー訂正不能でなければ、その一つをＩＲＡＭ９にロードすることになる。
【００４４】
ファームロード処理Ｓ１に対しては、ファームロードに失敗があったかを判別する（Ｓ２）。失敗とは、全てのファームデータ領域がＥＣＣ回路１４によるエラー訂正が不能な場合である。結果として、正常なファームデータをＩＲＡＭ９にロードすることができないので、その旨をホスト装置４に通知する（Ｓ３）。ファームロード処理Ｓ１が失敗でないときとは、ＥＣＣ回路１４により検出されたエラーが訂正され、或いは全くエラーがなかったときである。ここでは、最初にエラーが訂正され、或いはエラーがないと判定されたファームデータをＩＲＡＭ９にロードする。
【００４５】
ファームロード処理Ｓ１に失敗しなかったときは、テーブル作成処理Ｓ４を行う。テーブル作成処理Ｓ４は、フラッシュメモリ２の各セクタ領域から管理データを取得し、そこに含まれるデータ領域の物理アドレス情報と論理アドレス情報から前述した論物変換テーブルを作成する処理を基本とする。ここでは更に、ファームロード処理Ｓ１において検索されたファームデータ領域の物理アドレスと、その物理アドレス領域がＥＣＣ回路１４によるエラー訂正されたものか、或いはエラー訂正不能なものであるかを区別する情報とを含む、ファームデータのアドレステーブルを作成する。
【００４６】
テーブル作成処理Ｓ４を終了すると、ＣＰＵ７がスタンバイ状態になり(Ｓ５)、メモリカードコマンドの投入を待つ。メモリカードコマンドが投入されると（Ｓ６）、そのコマンドの指示に従った処理を行うことになる。ファームリフレッシュコマンドが投入されたときは、ファームリフレッシュ処理Ｓ７が行われる。ファームリフレッシュ処理Ｓ７は、ファームロード処理Ｓ１でＩＲＡＭ９にロードされたファームデータを用いて、ファームデータ領域を書換える処理（以下、リフレッシュとも記す）とされる。リフレッシュ対象は、上記したファームデータのアドレステーブルを用いて特定し、リフレッシュは所定の順序で行われる。
【００４７】
《ファームロード処理》
図６には、ファームロード処理Ｓ１のフローチャートが例示されている。まず、フラッシュメモリ２のファームデータの数（以下、Ｎとする）をカウントする図示を省略するカウンタがリセットされ、Ｎ＝０とされる（Ｓ１１）。次に、図示を省略するアドレスカウンタがリセットされ、カウント値がＡ＝０に初期化される（Ｓ１２）。そして、カウント値Ａ＝０に応じる物理セクタが検索され、その管理領域の情報から当該物理セクタがファームデータ領域であるか否かが判定される（Ｓ１３）。ファームデータ領域でなければ、カウント値Ａが最終値ＭＡＸよりも小さいときは、そのカウント値Ａが＋１インクリメントされ（Ｓ２２）、前記ステップＳ１３の処理が繰り返される。ステップＳ１３において、ファームデータ領域であることが判別されると、次に、当該ファームデータ領域の管理情報にセット状態の消去・書込みフラグが残っているかが判定される（Ｓ１４）。消去・書込みフラグは、消去・書込み動作の開始によってセットされ、その動作の完了によってクリアされるから、動作電源の供給が停止される等によって消去・書込み動作が停止されたときは消去・書込みフラグがセット状態のままでパワーオンされることになる。
【００４８】
ステップＳ１４においてフラグがセット状態であれば、電源遮断によって当該ファームデータ領域のデータが破壊されている可能性が高い。この場合には、ファームリフレッシュ登録を行う（Ｓ１９）。ファームリフレッシュ登録は、登録すべきファームデータ領域の物理セクタアドレスと登録要因を登録する処理である。ステップＳ１４の処理において、消去・書込み途中で電源遮断がなかったことが判定されると、そのファームデータ領域のファームデータに対してＥＣＣ回路１４でエラー検出及び必要な訂正を行う。ＥＣＣ回路１４による訂正を必要としなかったとき又はＥＣＣ回路１４によって必要な訂正が行われたとき、何れかの正常データをＩＲＡＭ９に格納する（Ｓ１５）。
【００４９】
次に、ＥＣＣ回路１４によるエラー訂正が不能であったか否かが判別され（Ｓ１６）、エラー訂正不能であったときは、そのファームデータの物理セクタアドレスとエラー訂正不能という要因の登録が行われる（Ｓ１９）。ステップＳ１６において、エラー訂正不能でなければ、Ｎが＋１インクリメントされる（Ｓ１７）。更に、前記ＥＣＣ回路１４によるエラー訂正が行われたかが判別され（Ｓ１８）、エラー訂正が行われていれば、そのファームデータの物理セクタアドレスとエラー訂正という要因の登録が行われる（Ｓ１９）。また、ステップＳ１８でエラー訂正が行われていないと判別された後、また、ステップＳ１９の処理の後、Ｎが１よりも大きいかが判別される（Ｓ２０）。Ｎが１以下であれば、ステップＳ２２によりＡ＝ＭＡＸになるまで前記ステップＳ１３の処理に戻って上記した処理が繰り返される。前述のようにその途中のステップＳ２０においてＮが１よりも大きければ、ファームデータの正常性と言う意味で、ファームロード処理を成功として終了する（Ｓ２１）。即ち、ファームデータがもともと正常であり、ＥＣＣ回路１４によるエラー訂正を必要としない場合、或いはエラーはあってもＥＣＣ回路１４によるエラー訂正によって正常になったとき、前記Ｎは＋１インクリメントされる。従って、少なくとも２個の物理セクタ上で、ＥＣＣ回路１４によるエラー訂正不能でないファームデータがあれば、Ｎ＞１となる。つまり、少なくとも２個の物理セクタ上に、ＥＣＣ回路１４によるエラー訂正不能でないファームデータがあれば、当該２個のファームデータが一緒に破壊される虞は皆無と考えられるので、成功として、それ以上の処理を行わない。
【００５０】
ステップＳ２２において、Ａ＝ＭＡＸまで処理をした後、Ｎ＝０であるかが判定される（Ｓ２３）。Ａ＝ＭＡＸまで処理をした結果、Ｎ＝０のままであれば、３重に割り当てたファームデータの全てが破壊されていることになるので、失敗として、ファームロード処理を終了する（Ｓ２４）。また、Ａ＝ＭＡＸまで処理をした結果、Ｎ＝１であれば、１個のファームデータ領域には、ＥＣＣ回路１４によりエラー訂正可能なファームデータ又はエラーのないファームデータが存在することになり、半分成功として、ファームロード処理を終了する（Ｓ２５）。
【００５１】
《ファームリフレッシュ処理》
図７には、ファームリフレッシュ処理Ｓ７のフローチャートが例示されている。前述したステップＳ１９によるファームリフレッシュ登録がされたファームデータ領域があるかが判定される（Ｓ３１）。該当するファームデータ領域がないときは、全てのファームデータがもともとエラーのない正常データであることを意味しているから、リフレッシュを行う必要がなく、ファームリフレッシュ処理は正常終了とされる。
【００５２】
一方、該当するファームデータ領域があるときには、前述のテーブル作成処理Ｓ４で作成された論物変換テーブルとファームデータのアドレステーブルが参照され、リフレッシュ対象とされるファームデータ領域に対して消去用高電圧が印加され、ファームデータが消去される（Ｓ３２）。次に、前述のファームロード処理Ｓ１においてＩＲＡＭ９に格納された正常データを用いて、ステップＳ３２でファームデータが消去されたファームデータ領域に書込み用高電圧が印加され、正常データが書込まれる（Ｓ３３）。このステップＳ３２、Ｓ３３によるリフレッシュでは、ファームデータのアドレステーブルに登録されたアドレス情報と登録された要因とが参照され、この要因に基づく優先順位に従って行われる。この要因は、消去・書込みフラグがセット状態のままであったか、エラー訂正されたか、エラー訂正不能であったかを区別する情報である。このリフレッシュを行う優先順位は、高い方から順に、エラー訂正不能なファームデータ、エラーが訂正されたファームデータとされる。これは、エラー訂正不能なファームデータは、ＥＣＣ回路１４でも訂正不能であるからである。また、消去・書込みフラグがセット状態であるファームデータの優先順位は、エラー訂正されたファームデータの前であれば、適宜順位を変更してもよい。
【００５３】
次に、リフレッシュ対象となる全てのファームデータ領域に対するリフレッシュが完了されたかが判定され（Ｓ３４）、完了していなければ、再びステップＳ３２に戻り、上記した優先順位に従い、前記ステップＳ３２〜Ｓ３４の処理が繰り返される。次に、ステップＳ３４でリフレッシュが完了されると、ファームリフレッシュ登録されていないファームデータ領域があるかが判定される（Ｓ３５）。
【００５４】
リフレッシュ登録されていないファームデータ領域があれば、このファームデータ領域のファームデータは、ステップＳ３２と同様に消去され（Ｓ３６）、さらに、ステップＳ３３と同様に正常データが書込まれる（Ｓ３７）。次に、ファームリフレッシュ登録されていない全てのファームデータ領域のリフレッシュが完了されたかが判定され（Ｓ３８）、完了していなければ、再びステップＳ３６に戻り、上記ステップＳ３６〜Ｓ３８の処理が繰り返され、完了すると正常終了とされる。
【００５５】
このように、ファームリフレッシュ処理では、ステップＳ３２〜Ｓ３４においてファームリフレッシュ登録されたファームデータ領域に対してリフレッシュを行った後に、残りのファームデータ領域に対してリフレッシュを行っている。これは、ファームリフレッシュ登録されたファームデータ領域があるということは、残りのファームデータ領域にもディスターブの影響があると考えられるからである。即ち、残りのファームデータ領域は、現時点でＥＣＣ回路１４によるエラー検出が行われていなくても、経年変化によりエラーが生じ易い状態になっている可能性がある。そこで、残りのファームデータ領域に対してもリフレッシュを行うことにより、ファームデータ領域に対する全体としての情報記憶の信頼性が高まることになる。
【００５６】
《世代情報を用いたファームロード処理》
図８には、世代情報を用いたファームロード処理Ｓ１のフローチャートが例示されている。まず、図示を省略するアドレスカウンタがリセットされ、カウント値がＡ＝０に初期化される（Ｓ４１）。そして、カウント値Ａ＝０に応じる物理セクタが検索され、その管理領域の情報から当該物理セクタがファームデータ領域であるか否かが判定される（Ｓ４２）。ファームデータ領域でなければ、カウント値Ａが最終値ＭＡＸよりも小さいときは、そのカウント値Ａが＋１インクリメントされ（Ｓ４６）、前記ステップＳ４２の処理が繰り返される。ステップＳ４２において、ファームデータ領域であることが判別されると、次に、当該ファームデータ領域の管理情報にセット状態の前述の消去・書込みフラグが残っているかが判定される（Ｓ４３）。ステップＳ４３においてフラグがセット状態であれば、電源遮断によって当該ファームデータ領域のデータが破壊されている可能性が高いから、ファームリフレッシュ登録を行う（Ｓ４４）。このファームリフレッシュ登録により、登録すべきファームデータ領域の物理セクタアドレスと、登録要因、即ち、フラグがセット状態であることが登録される。
【００５７】
ステップＳ４３の処理において、消去・書込み途中で電源遮断がなかったことが判定されると、そのファームデータ領域の世代情報とアドレス情報とが例えばＷＲＡＭ８に登録される（Ｓ４５）。世代情報は、ファームデータ領域の管理領域に格納されており、ファームデータ領域に対する書換えの世代を示し、世代が進む程、初期値０から値が大きくなる。その後、前記ステップＳ４６により、カウント値＝ＭＡＸとなるまで、ステップＳ４２〜４６の処理が繰り返される。そして、フラッシュメモリ２のファームデータの数（Ｎ）をカウントする図示を省略するカウンタがリセットされ、Ｎ＝０とされる（Ｓ４７）。
【００５８】
次に、前記ステップＳ４５で登録したファームデータ領域のアドレスとその世代情報を参照し、世代情報の古いファームデータ領域を検索する。同一世代のファームデータ領域が複数ある場合には、ステップＳ４５での登録順に検索すればよい。検索したファームデータは、ＥＣＣ回路１４に供給され、エラー検出と必要な訂正が行われ、何れかの正常データがＩＲＡＭ９に格納される（Ｓ４８）。これにより、多重化されたファームデータ領域に対する検索の順番は、世代情報の値に応じて可変になる。
【００５９】
次に、ＥＣＣ回路１４によるエラー訂正が不能であったか否かが判別され（Ｓ４９）、エラー訂正不能であったときは、そのファームデータの物理セクタアドレスとエラー訂正不能という要因の登録が行われる（Ｓ５１）。ステップＳ４９において、エラー訂正不能でなければ、Ｎが＋１インクリメントされ、前記ＥＣＣ回路１４によるエラー訂正が行われたかが判別される（Ｓ５０）。エラー訂正が行われていれば、そのファームデータの物理セクタアドレスとエラー訂正という要因の登録が行われる（Ｓ５１）。ステップＳ５０においてエラー訂正が行われていないと判別された後、また、ステップＳ５１の処理が行われた後に、Ｎが１よりも大きいかが判別される（Ｓ５２）。
【００６０】
Ｎが１以下であれば、ステップＳ５４により全ファームデータ領域を読み出すまで前記ステップＳ４８の処理に戻って上記したステップＳ４８〜５４の処理が繰り返される。前述のようにその途中のステップＳ５２においてＮが１よりも大きければ、ファームデータの正常性と言う意味で、ファームロード処理を成功として終了する（Ｓ５３）。つまり、前述のステップＳ２１と同様に、少なくとも２個の物理セクタ上に、ＥＣＣ回路１４によるエラー訂正不能でないファームデータがあれば、当該２個のファームデータが一緒に破壊される虞は皆無と考えられるので、成功として、それ以上の処理を行わない。
【００６１】
ステップＳ５４において、全ファームデータ領域を読み出す処理をした後、Ｎ＝０であるかが判定される（Ｓ５５）。全ファームデータ領域を読み出した結果、Ｎ＝０のままであれば、３重に割り当てたファームデータの全てが破壊されていることになるので、失敗として、ファームロード処理を終了する（Ｓ５６）。また、全ファームデータ領域を読み出した結果、Ｎ＝１であれば、１個のファームデータ領域には、ＥＣＣ回路１４によりエラー訂正可能なファームデータ又はエラーのないファームデータが存在することになり、半分成功として、ファームロード処理を終了する（Ｓ５７）。
【００６２】
《世代情報を用いたファームリフレッシュ処理》
図９には、世代情報を用いたファームリフレッシュ処理Ｓ７のフローチャートが例示されている。まず、ファームリフレッシュ登録されたファームデータ領域があるかが判定される（Ｓ６１）。該当するファームデータ領域がないときは、リフレッシュを行う必要がなく、ファームリフレッシュ処理が正常終了とされる。
【００６３】
該当するファームデータ領域があるときには、前述のテーブル作成処理Ｓ４で作成された論物変換テーブルとファームデータのアドレステーブルが参照され、リフレッシュ対象とされるファームデータ領域に対して消去動作が行われる（Ｓ６２）。次に、前述のステップＳ４８においてＩＲＡＭ９に格納された正常データを用いて、消去動作が行われたファームデータ領域に対する書込み動作が行われる（Ｓ６３）。このステップＳ６２、Ｓ６３によるリフレッシュでは、ファームデータのアドレステーブルに登録されたアドレス情報と登録された要因とが参照され、この要因に基づく優先順位に従って行われる。この優先順位については前述の図７に示したステップＳ３２、Ｓ３３と同様である。また、ステップＳ６３の書込み動作では、ファームデータ領域の世代情報が更新されて、当該ファームデータ領域の世代が一つ進められる。ステップＳ４８による検索は、古い世代を優先させるから、次のファームロード処理では、今回世代が更新されたファームデータとは別のファームデータ領域のファームデータが最初に検索されて、ＥＣＣ回路１４による処理対象にされる確率が高くなる。これにより、ＥＣＣ回路１４によるエラー検出及び必要な訂正は、常に同じ順番で行われないことになる。このようにすれば、特定のファームデータ領域に対してエラー検出及び必要な訂正が長期間行われないといった事態が回避され、全てのファームデータ領域に対して片寄りなくエラー検出及び必要な訂正が行われることになる。その結果として、リフレッシュ対象とされるファームデータ領域も片寄らないから、ファームリフレッシュ登録されたファームデータ領域に対する情報記憶の信頼性をさらに高めるのに資することができる。
【００６４】
その後、リフレッシュ対象となる全てのファームデータ領域に対するリフレッシュが完了されたかが判定され（Ｓ６４）、完了していなければ、再びステップＳ６２に戻り、上記したステップＳ６２〜Ｓ６４の処理が繰り返される。ステップＳ６４で全てのリフレッシュ対象へのリフレッシュが完了されると、ファームリフレッシュ処理が正常終了とされる。ここで、今回、リフレッシュされたファームデータ領域は世代が進むことになるから、リフレッシュ対象とされず世代情報が更新されていない残りのファームデータ領域が次回のリフレッシュ対象とされる確率が高くなる。また、今回、残りのファームデータ領域に対してリフレッシュを行わないことにより、ファームリフレッシュ処理に要する時間が短縮されることになる。
【００６５】
図１０には、世代情報を用いたファームロード処理及びファームリフレッシュ処理が概略的に例示される。ここでは一例として、世代情報を格納する管理領域を有するファームデータ領域を、図３に示したファームデータが格納された物理セクタ２６，２７，２８に対応させている。まず、物理セクタ２６，２７，２８の世代情報３０が全て同じ値０である状態を、初期状態とする。この初期状態では、世代情報が全て同じであるから、例えばステップＳ４５での登録順に従い、物理セクタ２６，２７のファームデータに対して、前述のファームロード処理Ｓ１におけるステップＳ４８のＥＣＣ回路１４によるエラー検出及び必要な訂正等を行う。ここでは、物理セクタ２６のファームデータがエラー訂正されたものとされる。よって、ステップＳ５１では、物理セクタ２６がファームリフレッシュ登録されている。
【００６６】
次に、ファームリフレッシュ登録された物理セクタ２６のファームデータに対してリフレッシュが行われる。このとき、物理セクタ２６の世代情報は、その値が＋１インクリメントされ、値１となる。この後、再び、パワーオンされたときは、ステップＳ４８でのＥＣＣ回路１４によるエラー訂正及び必要な訂正については、世代情報の古い方、即ち値０の物理セクタ２７，２８が優先されることになる。
【００６７】
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００６８】
例えば、上記した制御シーケンスは、電源投入時に開始されるようにしたが、これに限られず、ホスト装置４やＣＰＵ７から所定コマンドが投入されたとき等、所定のタイミングで行うようにしてもよい。また、カードコントローラ３は、フラッシュメモリ２に格納されたファームデータをリフレッシュ対象とするようにしたが、これに限られず、ファームデータと同様にディスターブの影響を受けると考えられる救済や制御用のパラメータデータをリフレッシュ対象とするようにしてもよい。
【００６９】
さらに、図９に示したファームリフレッシュ処理では、必要に応じて、残りのファームデータ領域に対してもリフレッシュを行うようにしてもよい。また、本発明は、メモリカードに限らず、同一パッケージ内に不揮発性メモリとコントローラを搭載したマルチチップモジュールのような半導体記憶装置にも適用できる。また、それ以外にセキュリティ用のＳＲＡＭ、ＳＤＲＡＭ等が別チップとして搭載されていてもよい。
【図面の簡単な説明】
【００７０】
【図１】本発明を適用したメモリカードを例示するブロック図である。
【図２】フラッシュメモリ２のメモリアレイの詳細を示す説明図である。
【図３】フラッシュメモリ２による物理セクタのブロック配置を例示する説明図である。
【図４】比較例としての物理セクタのブロック配置を例示する説明図である。
【図５】カードコントローラ３の全体的な制御シーケンスを例示するフローチャートである。
【図６】ファームロード処理Ｓ１を例示するフローチャートである。
【図７】ファームリフレッシュ処理Ｓ７を例示するフローチャートである。
【図８】世代情報を用いたファームロード処理Ｓ１を例示するフローチャートである。
【図９】世代情報を用いたファームリフレッシュ処理Ｓ７を例示するフローチャートである。
【図１０】世代情報を用いたファームロード処理及びファームリフレッシュ処理を概略的に例示する説明図である。
【符号の説明】
【００７１】
１  メモリカード
２  フラッシュメモリ（ＦＬＡＳＨ）
３  カードコントローラ
４  ホスト装置（ＨＯＳＴ）
５  フラッシュメモリインタフェース回路（ＦＩＦ）
６  ホストインタフェース回路（ＨＩＦ）
７  ＣＰＵ
８  ワークＲＡＭ（ＷＲＡＭ）
９  インストラクションＲＡＭ（ＩＲＡＭ）
１０  リードバッファＲＡＭ（ＲＢＲＡＭ）
１１  ライトバッファＲＡＭ（ＷＢＲＡＭ）
１２  ＲＡＭセレクタ（ＲＳＥＬ）
１３  ＤＭＡＣ
１４  ＥＣＣ回路
１５  ＲＯＭ
２０  不揮発性メモリセル
２１  メモリアレイ
２２  ストリングスイッチ
２３〜２５  サブブロック
２６〜２８  物理セクタ
３０  世代情報
【図１】
2007122640.tif 000003
【図２】
2007122640.tif 000004
【図３】
2007122640.tif 000005
【図４】
2007122640.tif 000006
【図５】
2007122640.tif 000007
【図６】
2007122640.tif 000008
【図７】
2007122640.tif 000009
【図８】
2007122640.tif 000010
【図９】
2007122640.tif 000011
【図１０】
2007122640.tif 000012