(57)【特許請求の範囲】
【請求項１】
不揮発性メモリと、前記不揮発性メモリの動作を制御するメモリコントローラとを有する不揮発性記憶装置であって、
前記メモリコントローラは、所定のプロトコルに従って前記不揮発性記憶装置の外部とインタフェースするインタフェース部と、演算処理部とを有し、
前記演算処理部は、
前記不揮発性記憶装置の外部からのアクセス指示に応答するメモリ制御に際して、前記不揮発性記憶装置の外部から前記不揮発性メモリへ書込むデータにエラー訂正コードを付加し、又は前記不揮発性メモリから前記不揮発性記憶装置の外部へ読み出すデータに対し前記エラー訂正コードを用いてエラー検出・訂正を行う第１処理と、
前記不揮発性記憶装置の外部からのアクセス指示に応答する処理とは別に前記不揮発性メモリの記憶情報に対し前記エラー訂正コードを用いてエラー検出・訂正を行う第２処理と、
前記第２処理において、エラー発生回数が所定回数を超えたとき、エラー訂正された記憶情報を書き戻す前記不揮発性メモリ内の記憶領域を変更する第３処理と、
前記第２処理を所定時間毎に実行させる第４処理と、を行い、
前記不揮発性メモリは、情報記憶領域として、前記所定回数の情報が記憶されたパラメータ領域を有し、
前記演算処理部は、前記パラメータ領域から前記所定回数の情報を取得し、この取得した情報と前記エラー発生回数とを比較して、前記エラー発生回数が前記所定回数を超えたか否かを判定することを特徴とする不揮発性記憶装置。
【請求項２】
前記不揮発性メモリは、情報記憶領域として、データ領域、前記データ領域の不良部分を代替する代替領域、及びパラメータ領域を有し、
前記演算処理部は、前記代替領域を前記エラー訂正された記憶情報の記憶領域変更先とすることを特徴とする請求項１記載の不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを搭載したメモリカード、不揮発性のメモリカードに適用されるメモリコントローラに関し、例えばハードディスク互換のフラッシュメモリ搭載メモリカードに適用してその記憶情報の信頼性向上に有効な技術に関する。
【背景技術】
【０００２】
フラッシュメモリ等の電気的に消去及び書き込み可能な不揮発性メモリを用いたメモリカードでは、メモリコントローラにＥＣＣ回路を搭載し、不揮発性メモリへのデータ書き込みに際してエラー訂正コードを生成し、不揮発性メモリからのデータ読み出しに際してエラー訂正コードを用いたエラー検出・訂正が行われる。このように、従来のフラッシュメモリを用いた記憶装置では、ホストコンピュータがフラッシュメモリに書き込んだデータに対するデータエラー発生の検証は、ホストコンピュータがそのデータを読み出すときに行われるだけである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このため、従来のメモリカードでは，フラッシュメモリのリテンション等によるデータエラーに対して、ホストコンピュータがデータを読み出すまで、エラー訂正を行うことができない。フラッシュメモリなどの不揮発性メモリセルはトランジスタの閾値電圧の相異として情報を記憶する。この不揮発性メモリセルの特性は経時的に劣化し、紫外線等の外的要因によって劣化する虞もある。したがって、ホストコンピュータがフラッシュメモリからデータを読み出したときは最早訂正可能なビット数を超えてデータエラーが進行している場合もある。本発明者は、フラッシュメモリに格納された全データに対する検証を能動的に行い、訂正データの書き戻しを有効に行うことが、記憶情報の信頼性向上の為に望ましいことを見出した。
【０００４】
本発明の目的は、ホスト装置がメモリカードの不揮発性メモリから記憶情報を読み出さなくても不揮発性メモリのデータ保持に対する信頼性を向上させることができるメモリカードを提供することにある。
【０００５】
本発明の別の目的は、メモリカードにおける不揮発性メモリのデータ保持に対する信頼性向上をホスト装置に負担をかけずに実現できるメモリコントローラを提供することにある。
【０００６】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００８】
〔１〕本発明に係るメモリカードは、不揮発性メモリ（２）と、前記不揮発性メモリの動作を制御するメモリコントローラ（４）とを有する。前記メモリコントローラは、所定のプロトコルに従って外部とインタフェース可能であり、外部からのアクセス指示に応答するメモリ制御に際して外部から前記不揮発性メモリへ書込むデータにエラー訂正コードを付加する処理又は前記不揮発性メモリから外部へ読み出すデータに対し前記エラー訂正コードを用いてエラー検出・訂正を行う処理を制御し、また、前記外部からのアクセス指示に応答する処理とは別に前記不揮発性メモリの記憶情報に対し前記エラー訂正コードを用いてエラー検出・訂正を行う処理を制御する。要するに、メモリコントローラは、外部からのアクセス要求に従って記憶情報を外部に読み出すのとは別に、記憶情報のエラー検出・訂正を行う。したがって、ホスト装置がメモリカードの不揮発性メモリから記憶情報を読み出さなくても不揮発性メモリのデータ保持に対する信頼性を向上させることができる。
【０００９】
前記外部からのアクセス指示に応答する処理とは別のエラー検出・訂正の処理については、メモリコントローラの演算制御手段が所定時間毎に、或はメモリカードへの電源投入に応答して実行させてよい。前者は演算制御手段のタイマ・カウンタ手段などを用いて行えばよい。後者は電源投入時の初期化動作の一環として行えばよい。
【００１０】
上記エラー検出・訂正処理において訂正回数すなわちエラー発生回数が多ければ何れ訂正不能なエラー発生の虞が強くなる。訂正不能になる前に対処するには、前記エラー検出・訂正の処理において、エラー発生回数が所定回数を超えたとき、エラー訂正された記憶情報の記憶領域を変更する演算制御手段を採用すればよい。同様の観点より、演算制御手段には、エラー発生ビット数が所定ビット数を超えたとき、エラー訂正された記憶情報の記憶領域を変更させてもよい。
【００１１】
前記不揮発性メモリは、ハードディスク互換のファイルメモリシステム等に利用され、例えば、情報記憶領域として、データ領域、前記データ領域の不良部分を代替する代替領域、前記データ領域と代替領域との関係を対応付ける代替管理領域、及びパラメータ領域を有する。このとき、前記演算制御手段は前記所定回数の情報又は所定ビット数の情報を前記不揮発性メモリのパラメータ領域から取得する。要するに、エラー検出・訂正処理に利用する前記所定回数の情報等をパラメータ領域に不揮発的に保持し、電源遮断によってもその情報が失われないようになる。
【００１２】
また、前記演算制御手段は、エラー検出・訂正処理で発生したエラー発生回数を前記不揮発性メモリの対応するデータ領域に記録しておけば、セクタ単位のような所定記憶領域毎のエラー発生回数の情報管理を容易化できる。
【００１３】
前記演算制御手段は、プログラム制御されるデータプロセッサ等により構成するのが簡単である。
【００１４】
〔２〕本発明に係るメモリコントローラは、所定のプロトコルにしたがって入出力動作可能なホストインタフェース回路（１０）と、不揮発性メモリ（２）に接続可能なメモリインタフェース回路（１２）と、前記ホストインタフェース回路及びメモリインタフェース回路に接続された制御回路（１１，１３，１４）とを有する。前記制御回路は、前記ホストインタフェース回路から入力される書込みデータにエラー訂正コードを付加したデータをメモリインタフェース回路から書き込み制御情報と共に出力する第１処理と、メモリインタフェース回路から出力される読み出し制御情報に従ってメモリインタフェース回路に入力される読み出しデータのエラー検出・訂正を行ったデータを前記ホストインタフェース回路から出力する第２処理と、メモリインタフェース回路から出力される読み出し制御情報に従ってメモリインタフェース回路に入力される読み出しデータに対してエラー検出・訂正を行ったデータをメモリインタフェース回路から書き込み制御情報と共に出力する第３処理とを制御可能である。このメモリコントローラはメモリインタフェース回路に不揮発性メモリが接続されて回路基板に実装され、ホストインタフェース回路を介してホスト装置に接続される。このメモリコントローラによれば、ホストインタフェース回路からのアクセス要求に従ってメモリインタフェース回路から読み込んだ記憶情報をホストインタフェースに出力する読み出し制御動作とは別に、不揮発性メモリの記憶情報に対するエラー検出・訂正を行うことができる。したがって、ホスト装置が不揮発性メモリから記憶情報を読み出さなくても不揮発性メモリのデータ保持に対する信頼性を向上させることが可能になる。
【００１５】
前記第３処理については、前記制御回路に演算制御手段（１１）が所定時間毎に、或はメモリコントローラへの電源投入に応答して、実行させてよい。
【００１６】
前記演算制御手段は、前記第３処理において、エラー発生回数が所定回数を超えたとき、エラー訂正された読み出しデータの記憶領域を変更する書き込み制御情報を出力させればよい。同様の観点より、エラー発生ビット数が所定ビット数を超えたとき、エラー訂正された読み出しデータの記憶領域を変更する書き込み制御情報を出力させてもよい。
【００１７】
前記演算制御手段は、前記メモリインタフェース回路が読み出しデータを入力するとき前記所定回数の情報をメモリインタフェース回路から入力すればよい。同様に、前記演算制御手段は、前記メモリインタフェース回路が読み出しデータを入力するとき前記所定ビット数の情報をメモリインタフェース回路から入力してよい。エラー検出・訂正に利用される前記所定回数の情報などはメモリインタフェース回路に接続される不揮発性メモリに格納されることになるから、メモリコントローラの電源遮断によってもその所定回数の情報などは失われない。また、前記演算制御手段は、前記第２処理及び第３処理におけるエラー検出・訂正で発生したエラー発生回数を前記メモリインタフェース回路から前記書き込み制御情報と共に出力させればよい。エラー検出・訂正処理で発生したエラー発生回数は前記不揮発性メモリの対応するデータ領域に記録されることになるから、セクタ単位のような所定記憶領域毎のエラー発生回数の情報管理を容易化できる。
【００１８】
前記制御回路は、前記エラー訂正コードの生成とエラー検出・訂正に利用されるＥＣＣ回路（１４）を有してよい。
【００１９】
〔３〕本発明の更に具体的な態様によると、メモリカードは、不揮発性メモリ例えば複数のフラッシュメモリと、ホストコンピュータとのインタフェース回路と、フラッシュメモリのインタフェース回路と、ホストコンピュータとフラッシュメモリ間のデータ転送の制御やエラー検出・訂正の制御を行うコントローラと、データ転送に使用されるデータバッファとを有する。コントローラは，ホストコンピュータがフラッシュメモリに対してアクセスを行っていない時間（アイドル時間）を計測し、ある特定時間を超えたときに、フラッシュメモリに格納されている全データをセクタ（所定バイト数のデータ領域）単位にデータバッファに読み出し、エラーチェックを行う。また、電源投入時やホストコンピュータがコマンドによりデータの検証を行うように指示した場合にも、同様にフラッシュメモリ内のデータに対してエラーチェックを行う。読み出したデータにエラーが発生した場合には、エラー訂正を行い、フラッシュメモリに書き戻す。このとき，フラッシュメモリへ書き戻す態様として、以下の態様がある。(a)以前に発生したエラー回数をカウントしておき、ある特定の回数以下の場合には同一の場所に、ある特定の回数を超えた場合には別の場所に書き戻す。(b)発生したエラーの度合いによって、同一場所か別の場所に書き戻す（エラーの発生した個所が３箇所以上なら別の場所に書き戻す、など）。(c)常に同一の場所に書き戻す。(d)常に別の場所に書き戻す。以上の４種類の書き戻し態様は、それぞれ単独または組み合わせて処理可能である。
【００２０】
フラッシュメモリ内に格納されているデータ検証を（ホストコンピュータの動作と係わりなく）行うことで、時間的経過によって発生するフラッシュメモリ内のデータ変化（リテンションエラーなど）を検出し、そのエラーを訂正してフラッシュメモリに書き戻すことで、データの信頼性を保持することができる。また、このデータ検証を定期的に行うことで、時間的経過により発生するデータ変化を常に正常なデータに保つことが可能なので、データ信頼性の確保が可能である。時間的経過によるデータ変化が著しいフラッシュメモリを用いた場合でも、定期的にフラッシュメモリのデータを検証することで、データの信頼性を確保することができる。
【発明の効果】
【００２１】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００２２】
すなわち、不揮発性メモリ内に格納されているデータ検証を（ホストコンピュータの動作と係わりなく）行うことで、時間的経過によって発生する不揮発性メモリ内のデータ変化を検出し、そのエラーを訂正して不揮発性メモリに書き戻すことで、データの信頼性を保持することができる。また、このデータ検証を定期的に行うことで、時間的経過により発生するデータ変化を常に正常なデータに保つことが可能なので、データ信頼性の確保が可能である。時間的経過によるデータ変化が著しい不揮発性メモリを用いた場合でも、定期的に不揮発性メモリのデータを検証することで、データの信頼性を確保することができる。
【００２３】
ホスト装置がメモリカードの不揮発性メモリから記憶情報を読み出さなくても不揮発性メモリのデータ保持に対する信頼性を向上させることができる。
【００２４】
メモリカードにおける不揮発性メモリのデータ保持に対する信頼性向上をホスト装置に負担をかけずに実現することができる。
【発明を実施するための最良の形態】
【００２５】
図１には本発明に係るメモリカードの一例が示される。メモリカード１は不揮発性メモリ例えばフラッシュメモリ２と、ＤＲＡＭ（Dynamic Random Access memory）又はＳＲＡＭ（Static Random Access Memory）等から成るデータバッファ３と、前記フラッシュメモリ２及びデータバッファ３のメモリ動作を制御するメモリコントローラ（フラッシュメモリコントローラとも記す）４とを、実装基板に備えて成る。フラッシュメモリ２は例えばメモリカードに必要な記憶容量に従って複数個のフラッシュメモリチップとして用意される。
【００２６】
前記フラッシュメモリ２は、電気的に消去及び書き込み可能な不揮発性のメモリセルトランジスタを多数有する。メモリセルトランジスタ（フラッシュメモリセルとも記す）は、特に制限されないが、半導体基板若しくはウェル内に形成されたソース及びドレイン、前記ソースとドレインとの間のチャンネル領域にトンネル酸化膜を介して形成されたフローティングゲート、そしてフローティングゲートに層間絶縁膜を介して重ねられたコントロールゲートによって構成される。コントロールゲートはワード線に、ドレインはビット線に、ソースはソース線に接続される。前記メモリセルトランジスタは、前記フローティングゲートに電子が注入されると閾値電圧が上昇し、また、前記フローティングゲートから電子を引き抜くと閾値電圧が低下する。前記メモリセルトランジスタは、データ読み出しのためのワード線電圧（コントロールゲート印加電圧）に対する閾値電圧の高低に応じた情報を記憶することになる。特に制限されないが、本明細書においてメモリセルトランジスタの閾値電圧が低い状態を消去状態、高い状態を書き込み状態と称する。書き込みや消去を行なうときはベリファイ動作を行ない、閾値電圧が消去状態又は書き込み状態に到達したか否かの検証を行なう。上記消去状態、書き込み状態は、前記ワード線、ソース線、ビット線、基板への電圧印加状態によって制御される。その制御手法は公知であるから詳細な説明は省略する。
【００２７】
フラッシュメモリコントローラ４は、例えばＩＤＥディスクインタフェース仕様などに従ってフラッシュメモリ２をアクセスするアクセス制御機能を有する。このアクセス制御機能にしたがってフラッシュメモリ２をアクセスするときＥＣＣ機能によりライトデータに対してエラーコードの付加、リードデータに対してエラー検出・訂正を行なう。アクセス制御機能にしたがってフラッシュメモリ２へデータ書き込みを行なうとき、書き込みベリファイ動作で書き込み不良が発生した場合には、当該不良領域を代替領域に代替させる代替制御機能を備える。更に、フラッシュメモリコントローラ４は、アクセス制御機能によるリード時とは別にフラッシュメモリ２の記憶情報に対してエラー検出・訂正処理を行なって記憶情報の信頼性を向上させる記憶情報検証機能を備える。この記憶情報検証機能は、ディスク領域に対してコンピュータのＯＳ（Operating System）が行なうディスクスキャンによるエラー訂正機能をメモリカード１自体で実現可能にする機能として位置付けることができる。
【００２８】
前記フラッシュメモリコントローラ４は、ホストインタフェース回路１０、演算制御手段としてのマイクロプロセッサ（ＭＰＵ）１１、メモリインタフェース回路としてのフラッシュインタフェース回路１２、バッファコントローラ１３、及びＥＣＣ回路１４を備える。前記ＭＰＵ１１、バッファコントローラ１３、及びＥＣＣ回路１４はフラッシュメモリコントローラ４の制御回路を構成する。
【００２９】
ＭＰＵ１１は、ＣＰＵ（Central Processing Unit）２７、モードレジスタ２５、タイマ２６及び図示を省略するプログラムメモリなどを有し、フラッシュメモリコントローラ４を全体的に制御する。プログラムメモリはＣＰＵ２７の動作プログラムなどを保有する。
【００３０】
前記ホストインタフェース回路１０は、ＡＴＡ（ATAttachment）、ＩＤＥ（Integrated Device Electronics）、ＳＣＳＩ（Small Computer System Interface）等の所定のプロトコルに従って、パーソナルコンピュータ又はワークステーションなどのホストコンピュータ１６とインタフェースを行う回路である。ホストインタフェース動作の制御はアクセスバス２０を介してＭＰＵ１１が行う。上記プロトコルは公知であるから詳細な説明を省略する。
【００３１】
前記バッファコントローラ１３はアクセスバス２１を介してＭＰＵ１１から与えられるアクセス指示に従って、データバッファ３のメモリアクセス動作を制御する。データバッファ３にはホストコンピュータ１６からホストインタフェース回路１０に入力されたデータ、又はホストインタフェース回路１０からホストコンピュータ１６に出力するデータが一時的に保持される。また、データバッファ３には、フラッシュメモリ２から読み出されたデータ又はフラッシュメモリ２に書き込まれるデータが一時的に保持される。
【００３２】
フラッシュインタフェース回路１２はアクセスバス２２を介してＭＰＵ１１から与えられるアクセス指示に従って、フラッシュメモリ２に対する、読み出し動作、消去動作及び書き込み動作を制御する。フラッシュインタフェース回路１２は、読み出し動作において読み出しコマンドコードや読み出しアドレス情報等の読み出し制御情報をフラッシュメモリ２に出力し、書き込み動作において書き込みコマンドコード及び書き込みアドレス情報などの書き込み制御情報をフラッシュメモリ２に出力し、消去動作において消去コマンド等の消去制御情報をフラッシュメモリ２に出力する。
【００３３】
ＥＣＣ回路１４は、前記アクセス制御機能の一環として、アクセスバス２３を介してＭＰＵ１１から与えられる指示に従って、フラッシュメモリ２に書き込むデータに対してエラー訂正符号（エラー訂正コード）を生成して、書き込みデータに付加するために、フラッシュインタフェース回路１２に出力する。また、フラッシュメモリ２から読み出された読み出しデータを当該読み出しデータに付加されているエラー訂正符号を用いてエラー検出・訂正処理を行い、そのエラー訂正能力範囲のエラー発生に対してエラー訂正を行う。更にＥＣＣ回路１４は、記憶情報検証機能の一環として、ホストコンピュータ１６からのアクセス指示に応答する処理とは別に、フラッシュメモリから読み出したデータに対してエラー検出・訂正処理を行い、エラー訂正されたデータをフラッシュメモリ２に書き戻すときのエラー訂正コードを生成する。書き戻しに際しては、前記代替制御機能と同様に、代替領域を用いることも可能とされる。以下、前記記憶情報検証機能について詳細に説明する。
【００３４】
図２にはフラッシュメモリ２の記憶領域が例示される。フラッシュメモリ２の記憶領域は、データ領域３０、代替領域３１、パラメータ領域としてのパラメータセクタ３２、代替管理領域としての代替領域管理テーブル３３に大別される。各領域３０〜３３は、特に制限されないが、５１２バイトのセクタデータＳｎ、セクタデータＳｎに対する複数バイトのＥＣＣコード（エラー訂正符号）、当該セクタの管理情報Ｍｎ、及び管理情報Ｍｎに対するＥＣＣコードを有するフォーマットの領域を単位領域ＢＬＫとして有する。尚、各単位領域ＢＬＫに対してはフラッシュメモリ２のデバイスプロセス段階で発生する欠陥救済のための冗長の一部とされる冗長救済用の記憶領域が設けてあり、冗長救済が行なわれた場合には救済されるべきアドレスにマッピングされ、救済に用いなければアドレスマッピングは行なわれない。
【００３５】
前記データ領域３０は例えばユーザに開放されるデータ領域とされる。経時的にデータ領域３０等で書込みエラーを生じたとき、エラーを生じたデータ領域３０等の単位領域ＢＬＫを代替するのに前記代替領域３１が用いられる。代替の単位は単位領域ＢＬＫを最小単位とする。
【００３６】
前記管理情報Ｍｎは、当該セクタアドレスが不良であるかを示す不良フラグ、ＥＣＣによるエラー発生回数を示すデータ（エラー発生回数データ）、及びホストが指定する論理アドレスとの対応情報などが格納される。
【００３７】
代替領域管理テーブル３３は、特に制限されないが、データ領域の単位領域ＢＬＫに対応する不良登録データを有し、ここの不良登録データは代替先の単位領域のアドレスを特定する代替先アドレス情報とされ、代替領域先頭アドレスからのオフセットアドレスとして与えられている。不良登録データと単位領域ＢＬＫとの対応は一対一対応とされる。したがって、単位領域ＢＬＫの物理アドレスに基づいてアドレス演算を行うことにより、対応する不良登録データを得ることができる。例えばセクタアドレス“ｋ”が不良のとき、不良アドレス“ｋ”の代替先がセクタアドレス“ｘ”であるとすれば、当該セクタアドレス“ｋ”に対応される不良登録データとして、代替セクタ“ｘ”のオフセットアドレスが設定される。
【００３８】
パラメータセクタ３２には記憶情報検証機能で用いるパラメータデータを保持する。パラメータデータは、特に制限されないが、電源投入時に記憶情報検証処理を実行するか否かを指示する第１イネーブルビット、一定時間毎に記憶情報検証処理を実行するかか否かを指示する第２イネーブルビット、上記一定時間（記憶情報検証処理間隔）を規定する時間データ、記憶情報検証処理におけるエラー発生時の書き戻し処理で同一セクタアドレスへの書き戻しを許容する最大のエラー発生回数を規定するエラー回数データ、記憶情報検証処理におけるエラー発生時の書き戻し処理で同一セクタアドレスへの書き戻しを許容する最大エラービット数を示すビット数データとされる。パラメータセクタ３２に保持されたパラメータデータはフラッシュメモリコントローラ４のパワーオンリセット時などにおける初期化動作に呼応してＭＰＵ１１のモードレジスタ２５にイニシャルロードされる。
【００３９】
図１に基づいて前記記憶情報検証処理動作について全体的に説明する。記憶情報検証処理動作の開始が指示されると、ＭＰＵ１１は、フラッシュインタフェース回路１２を介してフラッシュメモリ２に読み出し制御情報を供給させ、フラッシュメモリ２から所定の単位領域ＢＬＫのセクタデータＳｎと管理情報Ｍｎをリードしてデータバッファ３へ格納する。これと共に、ＭＰＵ１１はＥＣＣ回路１４に、前記リードしたセクタデータＭｎに対して、対応するＥＣＣコードに基づくエラーチェックを実行させる（図１の経路（１）参照）。
【００４０】
次にＭＰＵ１１は、ＥＣＣ回路１４からエラーチェック結果を読み取る（図１の経路（２）参照）。ＥＣＣ回路１４でエラーが検出された場合には、ＭＰＵ１１はリードしたセクタデータに対応する管理情報Ｍｎに含まれるエラー発生回数を基に今回までに発生したエラー回数が、モードレジスタ２５が保有する所定回数を超えたか否かを判定する。所定回数とは、例えば前記パラメータ領域３２が保持する回数データが示す回数であって、その回数データはフラッシュメモリコントローラ４の初期化動作でモードレジスタ２５にイニシャルロードされる。或はＭＰＵ１１は、ＥＣＣ回路１４で検出したエラービット数がモードレジスタ２５が保有する所定ビット数を超えたか否かを判定する。所定ビット数とは、例えば前記パラメータ領域３２が保持するビット数データが示す数であって、そのビット数データはフラッシュメモリコントローラ４の初期化動作でモードレジスタ２５にイニシャルロードされる。当然、このビット数データが示すエラービット数はＥＣＣ回路１４で訂正可能なエラービット数の最大値以下である。ＭＰＵ１１が、データバッファ３に格納されているデータに対し、エラー訂正を行った後、エラー発生回数又はエラービット数がモードレジスタのイニシャルロード値以下の場合には同一場所に書き戻す（図１の経路（３））。エラー発生回数またはエラービット数がモードレジスタのイニシャルロード値を超えた場合には代替先へ書き戻す（図１の経路（４））。データの書き戻しに際してフラッシュインタフェース回路１２は書き込み制御情報をフラッシュメモリ２に与える。
【００４１】
図３には前記記憶情報検証処理の起動手順を例示する。電源投入時、フラッシュメモリコントローラ４が初期化される（Ｓ１）。初期化動作では、例えば、フラッシュメモリ２のパラメータセクタ３２に保持されているパラメータが前記モードレジスタ２５にイニシャルロードされる。次に電源投入時に記憶情報検証処理を行なう否かを前記モードレジスタ２５の第１イネーブルビットの値に基づいて判定する（Ｓ２）。
【００４２】
電源投入時に記憶情報検証処理を行なわない場合には、ホストコンピュータからメモリカードアクセスの為のホストコマンドが発行されているか否かを判定し（Ｓ３）、発行されていればそのコマンドを処理して（Ｓ４）、再びステップＳ３に戻る。
【００４３】
ステップＳ３においてホストコマンド発行されていなければ、一定時間毎に記憶情報検証処理を行なうか否かを第２イネーブルビットの値に基づいて判定する（Ｓ５）。一定時間毎に記憶情報検証処理を行なう場合には、アイドル時間に累計を計測する（Ｓ６）。即ち、ＭＰＵ１１のタイマ２６を用いて、ＭＰＵ１１がホストコマンドを実行していない時間を計測する。累積したアイドル時間が設定時間、即ちモードレジスタ２５にイニシャルロードされた時間情報が示す時間を超えたか否かを判定し（Ｓ７）、超えたとき、タイマで累積されたアイドル時間をクリアした後（Ｓ８）、記憶情報検証処理を行なう（Ｓ９）。前記ステップＳ２で第１イネーブルビットがイネーブルのときは、先ず最初に記憶情報検証処理が行われる（Ｓ９）。
【００４４】
図４には前記記憶情報検証処理の別の起動手順が例示される。図３との相違点は、記憶情報検証処理の指示をホストコンピュータからのコマンドによっても開始可能になっていることである。即ち、ステップＳ３の次に、ステップＳ１０で記憶情報開始コマンドの発行を検出する。これを検出すると、記憶情報検証処理（Ｓ９）を行なう。
【００４５】
図５には前記記憶情報検証処理Ｓ９のフローチャートが例示される。先ず、例えばＣＰＵ２７の一つの汎用レジスタをフラッシュメモリのセクタアドレスカウンタＳＡとし、これを初期化する（Ｓ１１）。フラッシュメモリのセクタアドレスは、フラッシュメモリに格納されているデータを示すアドレス（物理アドレス）である。このセクタアドレスはホストコンピュータが指定する論理アドレスと対応している。次に、セクタアドレスカウンタＳＡの値に基づいて対応するセクタデータをデータバッファ３にリードする。同時にそのセクタデータに応ずるＥＣＣコードを用いてＥＣＣ回路１４にセクタデータに対するエラー検出を実行させる（１２）。ＣＰＵ２７はその結果に対してエラーの有無を判定し、エラーが発生していれば、ＥＣＣ回路１４にエラー訂正を実行させ（Ｓ１４）、訂正されたデータをフラッシュメモリに書き戻す処理を実行させる（Ｓ１５）。エラー訂正処理はＢＣＨ（Bose-Chaudhuri-Hocqenghen）符号、リードソロモン符号などの符号に対する公知の訂正方法を利用すればよい。セクタアドレスカウンタＳＡの値が最大値になっていなければ（Ｓ１６）、セクタアドレスカウンタＳＡの値を＋１とし（Ｓ１７）、ホストコマンド発行の有無を調べ（Ｓ１８）、なければステップＳ１２に戻って同様の処理を繰返す。ホストコマンドの発行があれば、それが記憶情報検証コマンドならステップＳ１２に戻って同様の処理を繰返し、その他のコマンドなら当該その他のコマンド処理を許容して（Ｓ２０）、記憶情報検証処理中にホストコンピュータがコマンドを発行したとき、そのコマンドの処理を優先するようになっている。前記ステップＳ１６でセクタアドレスカウンタＳＡの値が最後まで(最大値)に到達したときは、フラッシュメモリ２に対して記憶情報検証処理を一巡できたことになるから、記憶情報検証処理Ｓ９を終了する。
【００４６】
図６には前記書き戻し処理Ｓ１５のフローチャートが例示される。同図に例示される処理はエラー発生回数によって書き戻し場所を切換える例である。先ずデータバッファ３に格納されているセクタデータのエラー個所を訂正する（Ｓ２１）。このとき、今回のエラー発生により当該セクタのエラー発生回数がモードレジスタの最大値（例えば４回）以上になっているかを判定する（Ｓ２２）。３回以下であれば、エラー発生回数を＋１して（Ｓ２３）、エラー訂正を行なったセクタデータをセクタアドレスカウンタＳＡのセクタに書き戻す（Ｓ２４）。当該セクタ対応の管理情報のエラー発生回数も更新される。エラー発生回数が４回以上であれば、代替セクタアドレスを算出し（Ｓ２５）、エラー訂正を行なったセクタデータを代替セクタアドレスに書き戻す（Ｓ２６）。このとき、当該代替セクタの管理情報のエラー発生回数はゼロにされる。代替セクタアドレスの算出は、代替領域の空きセクタを検出し、最初に見つかった空きセクタを代替先とする。
【００４７】
図７には前記書き戻し処理Ｓ１５の別のフローチャートが例示される。同図に例示される処理はエラービット数に応じて書き戻し場所を切換える例である。先ずデータバッファ３に格納されているセクタデータのエラー個所を訂正する（Ｓ３１）。このとき、今回のエラー発生により当該セクタのエラー発生ビット数がモードレジスタの最大値（例えば２ビット）以上になっているかを判定する（Ｓ３２）。１ビット以下であれば、エラー訂正を行なったセクタデータをセクタアドレスカウンタＳＡのセクタに書き戻す（Ｓ３３）。エラー発生ビット数が２ビット以上であれば、代替セクタアドレスを算出し（Ｓ３４）、エラー訂正を行なったセクタデータを代替セクタアドレスに書き戻す（Ｓ３５）。代替セクタアドレスの算出は、代替領域の空きセクタを検出し、最初に見つかった空きセクタを代替先とする。
【００４８】
図８には前記書き戻し処理Ｓ１５の更に別のフローチャートが例示される。同図に例示される処理は常に読み出しセクタと同じセクタに書き戻す例である。データバッファ３に格納されているセクタデータのエラー個所を訂正する（Ｓ４１）。その後エラー訂正を行なったセクタデータをセクタアドレスカウンタＳＡのセクタに書き戻す（Ｓ４２）。
【００４９】
図９には前記書き戻し処理Ｓ１５の更に別のフローチャートが例示される。同図に例示される処理は常に読み出しセクタとは異なる代替セクタに書き戻す例である。データバッファ３に格納されているセクタデータのエラー個所を訂正する（Ｓ４３）。次に代替セクタアドレスを算出し（Ｓ４４）、エラー訂正を行なったセクタデータを代替セクタアドレスに書き戻す（Ｓ４５）。
【００５０】
図１０には前記書き戻し処理Ｓ１５の更に別のフローチャートが例示される。同図に例示される処理はエラー発生回数及びエラー発生ビット数の双方に基づいて書き戻し場所を切換える例である。先ずデータバッファ３に格納されているセクタデータのエラー個所を訂正する（Ｓ５１）。このとき、今回のエラー発生により当該セクタのエラー発生回数がモードレジスタの最大値（例えば４回）以上になっているかを判定する（Ｓ５２）。３回以下であれば、今度は、今回のエラー発生により当該セクタのエラー発生ビット数がモードレジスタの最大値（例えば２ビット）以上になっているかを判定する（Ｓ５３）。１ビット以下であれば、エラー発生回数を＋１して（Ｓ５４）、エラー訂正を行なったセクタデータをセクタアドレスカウンタＳＡのセクタに書き戻す（Ｓ５５）。当該セクタ対応の管理情報のエラー発生回数も更新される。エラー発生ビット数が２ビット以上であれば、代替セクタアドレスを算出し（Ｓ５６）、エラー訂正を行なったセクタデータを代替セクタアドレスに書き戻す（Ｓ５７）。このとき、当該代替セクタの管理情報のエラー発生回数はゼロにされる。
【００５１】
以上より、フラッシュメモリコントローラ４は、外部からのアクセス要求に従って記憶情報を外部に読み出すのとは別に、記憶情報のエラー検出・訂正を行う。したがって、ホストコンピュータ１６がメモリカード１のフラッシュメモリ２から記憶情報を読み出さなくてもフラッシュメモリ２のデータ保持に対する信頼性を向上させることができる。このデータ検証を定期的に行うことで、時間的経過により発生するデータ変化を常に正常なデータに保つことが可能なので、データ信頼性の確保が可能である。時間的経過によるデータ変化が著しいフラッシュメモリ２を用いた場合でも、定期的にフラッシュメモリ２のデータを検証することで、データの信頼性を確保することができる。
【００５２】
上記エラー検出・訂正処理において訂正回数すなわちエラー発生回数が多ければ何れ訂正不能なエラー発生の虞が強くなる。エラー発生回数やエラービット数がある程度進んだところで、エラー訂正されたセクタデータを書き戻すセクタを代替領域のセクタに変更するから、訂正不能になる前に対処することができる。
【００５３】
エラー検出・訂正処理に利用する前記所定回数の情報等のパラメータをパラメータセクタに不揮発的に保持するころにより、電源遮断によってもその情報が失われないようになる。
【００５４】
また、前記ＭＰＵ１１は、エラー検出・訂正処理で発生したエラー発生回数を前記フラッシュメモリ２の対応するデータ領域に記録していおけば、セクタ単位のような所定記憶領域毎のエラー発生回数の情報管理を容易化できる。
【００５５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５６】
例えば、フラッシュメモリの単位領域ＢＬＫ中のセクタデータは１セクタ分に限定されず、４セクタ分等のように適宜のサイズとすることが可能である。不揮発性メモリはフラッシュメモリに限定されず強誘電体メモリなどであってもよい。また、フラッシュメモリコントローラは１チップであってもマルチチップであってもよい。エラー検出・訂正処理はＭＰＵとは別のＥＣＣ回路で行なう場合に限定されない。ＣＰＵとそのソフトウェア（動作プログラム）で実行させてもよい。また、記憶情報検証処理の開始は、電源投入時、一定期間毎、及びホストコマンドの指示毎の組み合わせに限定されず、その他の適宜の組み合わせとし、或は何れか一つとし、また別の事象を開始のトリガとすることも可能である。
【図面の簡単な説明】
【００５７】
【図１】本発明に係るメモリカードの一例を示すブロック図である。
【図２】フラッシュメモリの記憶領域を例示する説明図である。
【図３】記憶情報検証処理の起動手順を例示するフローチャートである。
【図４】記憶情報検証処理の別の起動手順を例示するフローチャートである。
【図５】記憶情報検証処理を例示するフローチャートである。
【図６】書き戻し処理の一例としてエラー発生回数によって書き戻し場所を切換える場合のフローチャートである。
【図７】書き戻し処理の別の例としてエラービット数に応じて書き戻し場所を切換える場合のフローチャートである。
【図８】書き戻し処理の更に別の例として常に読み出しセクタと同じセクタに書き戻す場合のフローチャートである。
【図９】書き戻し処理の更に別の例として常に読み出しセクタとは異なる代替セクタに書き戻す場合のフローチャートである。
【図１０】書き戻し処理の更に別の例としてエラー発生回数及びエラー発生ビット数の双方に基づいて書き戻し場所を切換える場合のフローチャートである。
【符号の説明】
【００５８】
１  メモリカード
２  フラッシュメモリ（不揮発性メモリ）
３  データバッファ
４  フラッシュメモリコントローラ（メモリコントローラ）
１０  ホストインタフェース回路
１１  マイクロプロセッサ
１２  フラッシュインタフェース回路（メモリインタフェース回路）
１３  バッファコントローラ
１４  ＥＣＣ回路
１６  ホストコンピュータ
２５  モードレジスタ
２６  タイマ
２７  ＣＰＵ
３０  データ領域
Ｓｎ  セクタデータ
Ｍｎ  管理情報
３１  代替領域
３２  パラメータセクタ
３３  代替領域管理テーブル
【図１】
0004775969.tif 000002
【図２】
0004775969.tif 000003
【図３】
0004775969.tif 000004
【図４】
0004775969.tif 000005
【図５】
0004775969.tif 000006
【図６】
0004775969.tif 000007
【図７】
0004775969.tif 000008
【図８】
0004775969.tif 000009
【図９】
0004775969.tif 000010
【図１０】
0004775969.tif 000011