(57)【要約】【課題】書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞を未然に防止する。【解決手段】メモリ装置は、消去及び書き込み可能な不揮発性メモリ（２）と、制御回路（５）とを有し、前記制御回路は所定のタイミングでメモリ領域の置き換え処理が可能とされる。前記置き換え処理は、相対的に書き換え回数の少ない第１のメモリ領域の記憶データを未使用の第２のメモリ領域に書き込み、書き込みされた第２のメモリ領域を前記第１のメモリ領域に代えて使用領域とする。上記より、書き換え回数の少ないメモリ領域を他のメモリ領域との置き換え対象にするから、書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞は未然に防止される。【選択図】        図１
2004310650.tif 000002
【特許請求の範囲】
【請求項１】
消去及び書き込み可能な不揮発性メモリと、制御回路とを有し、
前記制御回路は所定のタイミングでメモリ領域の置き換え処理が可能とされ、
前記置き換え処理は、相対的に書き換え回数の少ない第１のメモリ領域の記憶データを未使用の第２のメモリ領域に書き込み、書き込みされた第２のメモリ領域を前記第１のメモリ領域に代えて使用領域とすることを特徴とするメモリ装置。
【請求項２】
前記メモリ領域は書き換え回数データを保有し、
前記制御回路は、一群のメモリ領域から夫々得られる書き換え回数データを参照し、その中から前記第１のメモリ領域を検索することを特徴とする請求項１記載のメモリ装置。
【請求項３】
前記不揮発性メモリは、そのメモリ領域毎に未使用領域か否かを示す識別フラグの格納領域を備え、
前記制御回路は、前記識別フラグを参照して前記未使用の第２のメモリ領域を検索することを特徴とする請求項１記載のメモリ装置。
【請求項４】
前記メモリ領域は書き換え回数データを保有し、
前記制御回路は、書き換え回数データを参照して前記第１メモリ領域の書き換え回数よりも書き換え回数の多いメモリ領域を検索して前記第２のメモリ領域とすることを特徴とする請求項１記載のメモリ装置。
【請求項５】
前記制御回路は、特定のコマンドに応答して前記置き換え処理を行うことを特徴とする請求項１記載のメモリ装置。
【請求項６】
前記制御回路は、特定のコマンド処理の終了に応答して前記置き換え処理を行うことを特徴とする請求項１記載のメモリ装置。
【請求項７】
前記置き換え処理の開始後に別のコマンドによる指示があったときは置き換え処理を打ち切って、当該別のコマンドの処理を優先させることを特徴とする請求項６記載のメモリ装置。
【請求項８】
前記制御回路は、不揮発性メモリに対する書き換え処理回数が所定回数に到達するのに応答して前記置き換え処理を行うことを特徴とする請求項１記載のメモリ装置。
【請求項９】
消去及び書き込み可能な不揮発性メモリと、制御回路とを有し、
前記制御回路は所定のタイミングでメモリ領域の置き換え処理が可能とされ、
前記置き換え処理は、所定の未使用メモリ領域をこれよりも書き換え回数の少ない所定の使用中メモリ領域と入れ替える処理であることを特徴とするメモリ装置。
【請求項１０】
消去及び書き込み可能な不揮発性メモリと、制御回路とを有し、
前記制御回路は所定のタイミングでメモリ領域の置き換え処理が可能とされ、
前記置き換え処理は、所定のメモリ領域をこれよりも書き換え回数の少ない別のメモリ領域と入れ替え、入れ替え後の前記所定のメモリ領域を使用中、前記別のメモリ領域を未使用とすることを特徴とするメモリ装置。
【請求項１１】
消去及び書き込み可能な不揮発性メモリと、制御回路とを有し、
前記不揮発性メモリは、メモリ領域が未使用領域か否かを示す識別フラグを格納するための未使用領域識別テーブルを有し、
前記制御回路は、書き込み処理において前記識別フラグが示す未使用領域の一つのメモリ領域をデータ書き込み先とし、前記識別フラグが示す使用領域のメモリ領域に対し所定のタイミングでメモリ領域の置き換え処理が可能とされ、
前記置き換え処理は、相対的に書き換え回数の少ない使用領域である第１のメモリ領域の記憶データを未使用領域である第２のメモリ領域に書き込み、書き込みされた第２のメモリ領域を前記第１のメモリ領域に代えて使用領域とすることを特徴とするメモリ装置。
【請求項１２】
前記不揮発性メモリは、使用領域とされるメモリ領域の物理アドレスを論理アドレスに対応して登録するための使用アドレス登録テーブルを有し、
前記制御回路は、識別フラグを未使用領域に変更する場合には当該識別フラグに割当てられているメモリ領域と物理アドレスとの対応を無効化し、識別フラグを使用領域に変更する場合には当該識別フラグに割当てられているメモリ領域を所定の物理アドレスと対応させることを特徴とする請求項１１記載のメモリ装置。
【請求項１３】
前記制御回路は、一つのメモリ領域を別のメモリ領域に代えて使用領域に変更するとき、その変更に係る論理アドレスと物理アドレスの対応を前記不揮発性メモリ上の使用アドレス登録テーブルに反映する前に、未使用領域から使用領域に変更される前記一つのメモリ領域の識別フラグを前記不揮発性メモリ上の未使用領域識別テーブルに反映する処理を行い、前記使用アドレス登録テーブルに反映した後に、使用領域から未使用領域に変更される前記別のメモリ領域の識別フラグを前記不揮発性メモリ上の未使用領域識別テーブルに反映する処理を行うことを特徴とする請求項１２記載のメモリ装置。
【請求項１４】
前記メモリ領域は書き換え回数データを保有し、
前記制御回路は、一群のメモリ領域から夫々得られる書き換え回数データを参照し、その中から前記第１のメモリ領域を検索することを特徴とする請求項１２記載のメモリ装置。
【請求項１５】
前記制御回路は、前記識別フラグを参照して前記未使用の第２のメモリ領域を検索することを特徴とする請求項１２記載のメモリ装置。
【請求項１６】
前記制御回路は、書き換え回数データを参照して前記第１のメモリ領域の書き換え回数よりも書き換え回数の多いメモリ領域を検索して前記第２のメモリ領域とすることを特徴とする請求項１２記載のメモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性のメモリ装置に関し、例えばフラッシュメモリカード及びハードディスク互換のフラッシュディスクなどに適用して有効な技術に関する。
【０００２】
【従来の技術】
フラッシュメモリに代表される電気的に書換え可能な不揮発性メモリに対する記憶情報の書き換えではメモリセルに電気的なストレスがかり、書き換え回数が増すに従ってメモリセルの特性が劣化する。局所的に書き込みが集中すると一部のデータブロックだけ特性劣化が著しくなるので、ある一定の書き換え回数に至ると、自動的に他の領域との間でデータとアドレスの入れ替えを行って、不揮発性メモリの書き換え回数寿命を延ばすようにした技術がある。例えば書き込み回数が規定値を超えるとデータブロックのアドレス割り当てを変更する（特許文献１参照）。またＥＣＣエラー回数が規定値を超えるとデータブロックのアドレス割り当てを変更する（特許文献２参照）。
【０００３】
【特許文献１】
特開平０４−５０３７２０
【特許文献２】
特開平０２−１１８９９７
【０００４】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、殆ど書き換えを行なわないメモリ領域は書き換え回数が増加しないため他のメモリ領域との入れ換えがなかなか発生しない。入れ替えの発生しないメモリ領域では累積的にワード線ディスターブやビット線ディスターブによる影響を受け、最終的に閾値電圧の変化が無視し得ないほど大きくなって記憶情報が不所望に反転（データ化け）する虞がある。
【０００５】
また、本発明者は未だ公知ではない先の本出（特願２００２−２９４０６０号）により、消去及び書き込み処理中に動作電源が遮断されても記憶情報が不所望に消失しないメモリカードを提案している。即ち、メモリカードの記憶管理にそのメモリ領域毎に空き情報フラグを対応付けた消去テーブルを用意し、メモリカードの書き込みでは、消去テーブルの空き情報フラグを参照して書き換えデータを書き込むメモリ領域を決定し、書き換え前のメモリ領域とは異なるメモリ領域にデータの書き込みを行うようにすることにより、書き換え後であっても書き換え前のデータは元のメモリ領域に残るようになる。消去途中などで不所望な電源遮断を生じても、元のメモリ領域に残っているデータを利用すれば、データの回復が可能になる。
【０００６】
このようなテーブル方式の書き込みでは、新しいセクタへデータを書き込み、旧データの消去は行なわず消去テーブルのみ更新することによって旧データを残すことができる。しかしながら、書き込みによって新たに用いられる空き領域は未使用のメモリ領域であるから、書き換えが発生しないメモリ領域では未使用のメモリ領域との置き換えは全く発生しない。この場合も上記同様に、書き換えが発生しないメモリ領域では累積的にワード線ディスターブやビット線ディスターブによる影響を受け、データ化けの虞がある。
【０００７】
本発明の目的は、書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞を未然に防止することができるメモリ装置を提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【０００９】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
〔１〕本発明に係るメモリ装置は、消去及び書き込み可能な不揮発性メモリと、制御回路とを有し、前記制御回路は所定のタイミングでメモリ領域の置き換え処理が可能とされる。前記置き換え処理は、相対的に書き換え回数の少ない第１のメモリ領域の記憶データを未使用の第２のメモリ領域に書き込み、書き込みされた第２のメモリ領域を前記第１のメモリ領域に代えて使用領域とする。上記より、書き換え回数の少ないメモリ領域を他のメモリ領域との置き換え対象にするから、書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞は未然に防止される。
【００１１】
置き換え元の選定に関しては、前記メモリ領域が書き換え回数データを保有するとき、前記制御回路は、一群のメモリ領域から夫々得られる書き換え回数データを参照し、その中から前記第１のメモリ領域を検索すればよい。
【００１２】
置き換え先の選定に関しては、前記不揮発性メモリがそのメモリ領域の例えば消去単位毎に未使用領域か否かを示す識別フラグの格納領域を備えるとき、前記制御回路は、前記識別フラグを参照して前記未使用の第２のメモリ領域を検索すればよい。
【００１３】
置き換え先の選定に関する別の形態は、前記メモリ領域が書き換え回数データを保有するとき、前記制御回路は、書き換え回数データを参照して前記第１のメモリ領域の書き換え回数よりも書き換え回数の多いメモリ領域を検索して前記第２のメモリ領域とすればよい。
【００１４】
前記置き換え処理へ移行するトリガとして例えば以下の形態がある。第１は、特定のコマンドに応答して前記置き換え処理を行う。第２は、特定のコマンド処理の終了に応答して前記置き換え処理を行う。前記置き換え処理の開始後に別のコマンドによる指示があったときは置き換え処理を打ち切って、当該別のコマンドの処理を優先させる。読み出しなどの優先度の高い処理が遅れないようにするためである。
【００１５】
〔２〕本発明の別の観点によるメモリ装置は、消去及び書き込み可能な不揮発性メモリと、制御回路とを有し、前記制御回路は所定のタイミングでメモリ領域の置き換え処理が可能とされ、前記置き換え処理は、所定の未使用メモリ領域をこれよりも書き換え回数の少ない所定の使用中メモリ領域と入れ替える処理である。書き換え回数の少ない使用中メモリ領域が未使用メモリ領域と入れ替えられるから、書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞は未然に防止される。
【００１６】
本発明の更に別の観点によるメモリ装置における置き換え処理は、所定のメモリ領域をこれよりも書き換え回数の少ない別のメモリ領域と入れ替え、入れ替え後の前記所定のメモリ領域を未使用から使用中、前記別のメモリ領域を使用中から未使用に変更する処理である。これも、書き換え回数の少ないメモリ領域を他のメモリ領域との置き換え対象にするから、書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞は未然に防止される。
【００１７】
〔３〕本発明の更に別の観点によるメモリ装置は、消去及び書き込み可能な不揮発性メモリと、制御回路とを有する。前記不揮発性メモリは、メモリ領域が未使用領域か否かを示す識別フラグを格納するための未使用領域識別テーブルを有する。前記制御回路は、書き込み処理において前記識別フラグが示す未使用領域の一つのメモリ領域をデータ書き込み先とし、前記識別フラグが示す使用領域のメモリ領域に対し所定のタイミングでメモリ領域の置き換え処理が可能とされる。前記置き換え処理は、相対的に書き換え回数の少ない使用領域である第１のメモリ領域の記憶データを未使用領域である第２のメモリ領域に書き込み、書き込みされた第２のメモリ領域を前記第１のメモリ領域に代えて使用領域とする処理である。
【００１８】
上記より、書き込み処理において前記識別フラグが示す未使用領域の一つのメモリ領域をデータ書き込み先とすることにより、書き込みが有れば実質的にメモリ領域の入れ替えを生ずるのでこの限りにおいてメモリ領域に対する書き込み回数の平準化に資する。更に、データの書き換えなどに際し、書き込み元のメモリ領域と異なるメモリ領域を新たな書き込み領域とするから、書き込み途中などで不所望な電源遮断等が発生しても、その直後には元のデータは書き込み元のメモリ領域に残るので、消失したデータの復元が可能である。
【００１９】
上記置き換え処理では、書き換え回数の少ないメモリ領域を他のメモリ領域との置き換え対象にするから、書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞は未然に防止される。
【００２０】
本発明の具体的な形態では、前記不揮発性メモリは、使用領域とされるメモリ領域の物理アドレスを論理アドレスに対応して登録するための使用アドレス登録テーブルを有する。このとき、前記制御回路は、識別フラグを未使用領域に変更する場合には当該識別フラグに割当てられているメモリ領域と物理アドレスとの対応を無効化し、識別フラグを使用領域に変更する場合には当該識別フラグに割当てられているメモリ領域を所定の物理アドレスと対応させる。
【００２１】
本発明の更に具体的な形態では、前記制御回路は、一つのメモリ領域を別のメモリ領域に代えて使用領域に変更するとき、その変更に係る論理アドレスと物理アドレスの対応を前記不揮発性メモリ上の使用アドレス登録テーブルに反映する前に、未使用領域から使用領域に変更される前記一つのメモリ領域の識別フラグを前記不揮発性メモリ上の未使用領域識別テーブルに反映する処理を行い、前記使用アドレス登録テーブルに反映した後に、使用領域から未使用領域に変更される前記別のメモリ領域の識別フラグを前記不揮発性メモリ上の未使用領域識別テーブルに反映する処理を行う。これにより、データ回復のために元のメモリ領域を検索可能にすることを保証することができる。
【００２２】
【発明の実施の形態】
《メモリカード》
図１には本発明に係るメモリ装置の一例であるフラッシュメモリカードが示される。フラッシュメモリカード１は消去及び書き込み可能な不揮発性メモリ例えばフラッシュメモリ２と、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  ｍｅｍｏｒｙ）又はＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から成るバッファメモリ４と、メモリ制御及び外部インタフェース制御を行うカードコントローラ（制御回路）５とを、実装基板に備えて成る。
【００２３】
前記バッファメモリ４及びフラッシュメモリ２はカードコントローラ５のアクセス制御を受ける。前記フラッシュメモリ２は、特に図示はしないが、電気的に消去及び書き込み可能な不揮発性メモリセルトランジスタが多数マトリクス配置されたメモリアレイＡＲＹを有する。メモリセルトランジスタ（フラッシュメモリセルとも記す）は、特に図示はしないが、半導体基板若しくはウェル内に形成されたソース及びドレイン、前記ソースとドレインとの間のチャンネル領域にトンネル酸化膜を介して形成されたフローティングゲート、そしてフローティングゲートに層間絶縁膜を介して重ねられたコントロールゲートによって構成される。コントロールゲートは対応するワード線に、ドレインは対応するビット線に、ソースはソース線に接続される。前記メモリセルトランジスタは、前記フローティングゲートに電子が注入されると閾値電圧が上昇し、また、前記フローティングゲートから電子を引き抜くと閾値電圧が低下する。前記メモリセルトランジスタは、データ読み出しのためのワード線電圧（コントロールゲート印加電圧）に対する閾値電圧の高低に応じた情報を記憶することになる。特に制限されないが、本明細書においてメモリセルトランジスタの閾値電圧が低い状態を消去状態、高い状態を書き込み状態と称する。
【００２４】
図１において、前記カードコントローラ５は、例えばホストコンピュータ（ホスト装置）６との間でＩＤＥディスクインタフェース仕様などに従った外部インタフェース制御を行う。カードコントローラ５は、ホストコンピュータ６からの指示に従って、フラッシュメモリ２をアクセスするアクセス制御機能を有する。このアクセス制御機能はハードディスク互換の制御機能であり、例えばホストコンピュータ６がセクタデータの集合をファイルデータとして管理するとき、カードコントローラ５は論理アドレスとしてのセクタアドレスと物理メモリアドレスとを対応させてフラッシュメモリ２のアクセス制御を行う。図１に従えば、前記カードコントローラ５は、ホストインタフェース回路１０、演算制御手段としてのマイクロプロセッサ（ＭＰＵ）１１、フラッシュコントローラ１２、及びバッファコントローラ１３から成る。前記フラッシュコントローラ１２は図示を省略するＥＣＣ回路を備える。
【００２５】
前記ＭＰＵ１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５、プログラムメモリ（ＰＧＭ）１６及びワークＲＡＭ（ＷＲＡＭ）１７などを有し、カードコントローラ５を全体的に制御する。プログラムメモリ１６はＣＰＵ１５の動作プログラムなどを保有する。
【００２６】
前記ホストインタフェース回路１０は、ＡＴＡ（ＡＴＡｔｔａｃｈｍｅｎｔ）、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｅｖｉｃｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＭＭＣ（ＭｕｌｔｉＭｅｄｉａＣａｒｄ：登録商標）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）等の所定のプロトコルに従って、パーソナルコンピュータ又はワークステーションなどのホストコンピュータ６とインタフェースを行う回路である。ホストインタフェース動作の制御はＭＰＵ１１が行う。
【００２７】
前記バッファコントローラ１３はＭＰＵ１１から与えられるアクセス指示に従って、バッファメモリ４のメモリアクセス動作を制御する。バッファメモリ４にはホストインタフェース１０に入力されたデータ、又はホストインタフェース１０から出力するデータが一時的に保持される。また、バッファメモリ４には、フラッシュメモリ２から読み出されたデータ又はフラッシュッメモリ２に書き込まれるデータが一時的に保持される。
【００２８】
フラッシュコントローラ１２はＭＰＵ１１から与えられるアクセス指示に従って、フラッシュメモリ２に対する、読み出し動作、消去動作及び書き込み動作を制御する。フラッシュコントローラ１２は、読み出し動作において読み出しコマンドコードや読み出しアドレス情報等の読み出し制御情報を出力し、書き込み動作において書き込みコマンドコード及び書き込みアドレス情報などの書き込み制御情報を出力し、消去動作において消去コマンド等の消去制御情報を出力する。図示を省略するＥＣＣ回路は、ＭＰＵ１１から与えられる指示に従って、フラッシュメモリ２に書き込むデータに対してエラー訂正符号（エラー訂正コード）を生成して、書き込みデータに付加する。また、フラッシュメモリ２から読み出された読み出しデータを当該読み出しデータに付加されているエラー訂正符号を用いてエラー検出・訂正処理を行い、そのエラー訂正能力範囲のエラー発生に対してエラー訂正を行う。
【００２９】
フラッシュメモリ２はそのメモリアレイＡＲＹの一部に未使用領域識別テーブル部２０及び使用アドレス登録テーブル部２１を有する。
【００３０】
図２にはフラッシュメモリ２の記憶領域が例示される。フラッシュッメモリ２の記憶領域（メモリアレイＡＲＹ）は、前記未使用領域識別テーブル部２０、使用アドレス登録テーブル部２１及びユーザエリア２２、未使用領域識別テーブル部と使用アドレス登録テーブル部を更新するときに必要となる空きブロック領域２３に大別される。各領域はメモリブロック（メモリセクタ）単位で物理アドレスとしてのブロックアドレスが与えられる。前記メモリブロックを単にブロックとも記す。特に制限されないが１ブロックは約２ＫＢ（キロバイト）の記憶容量を有し、その１ブロックに含まれるメモリセルアレイは１本のワード線又は１種類のワード線選択信号で選択され、消去処理及び書き込み処理の単位とされる。即ち、ここでは消去処理や書き込み処理で必要な高電圧がワード線単位で印加される。この１ブロックはＨＤＤなどのストレージにおける書き換え単位とされるセクタ（ストレージセクタ）の容量５１２Ｂ（バイト）よりも大きい。例えば１ブロックは４ストレージセクタ分にＥＣＣコード及び管理領域を合わせた記憶容量を有する。
【００３１】
前記未使用領域識別テーブル部２０と使用アドレス登録テーブル部２１のそれぞれは、特に制限されないが、１ブロック単位で分割配置され、各分割単位はその１ブロック内で多重化される。例えば未使用領域識別テーブル部２０はブロックアドレス０ｘ００００〜０ｘ０００Ｆに配置され、０ｘ００００のように１ブロックを一単位としてブロック毎に分割される。使用アドレス登録テーブル部２１はブロックアドレス０ｘ００１０〜０ｘ０１０Ｆに配置され、０ｘ００１０のように１ブロックを一単位としてブロック毎に分割される。
【００３２】
《使用アドレス登録テーブル》
図３には使用アドレス登録テーブル部２１の一部、例えばブロックアドレスＢＡ５５に配置された使用アドレス登録テーブルブロックの詳細が例示される。ＡＴＴで示されるものが分割された一つの使用アドレス登録テーブルであり、図では“消去済”と記載された領域を併せて４重に多重化されている。多重化された４個の使用アドレス登録テーブルはその内の１個が順番に有効とされる。分割された使用アドレス登録テーブルＡＴＴは、４個のストレージセクタに相当する論理アドレス毎に、対応するメモリセクタの物理アドレス即ち１個のブロックアドレスを対応付けた情報を保有する。例えば、使用アドレス登録テーブルＡＴＴの先頭から順番に、論理アドレスＬＢＡ０〜３にはブロックアドレスＢＡｍが対応付けられ、論理アドレスＬＢＡ４〜７にはブロックアドレスＢＡｎが対応付けられる、というような形式で、論理アドレスにメモリブロックの物理アドレスを対応付けた情報が格納される。使用アドレス登録テーブルにおける論理アドレス情報は例えば昇順で配置される。降順であってもよい。図３において、ブロックアドレスＢＡｍ，ＢＡｎ等のメモリブロックアドレスは、連続した論理アドレス４セクタに対応されるメモリブロックのアドレスを意味し、例えば１５ビットを有する。ここでは、メモリブロックのアドレス毎に１ビットのライトプロテクトビットＷＰが付加されている。ホストコンピュータ６からフラッシュメモリカード１に対するアクセス指示にはアクセス対象セクタのアドレス（論理セクタアドレス又は論理アドレスとも称する）が指定されており、この論理セクタアドレスを検索キーとして、対応するブロックアドレスを使用アドレス登録テーブルを用いて検索する。
【００３３】
《未使用領域識別テーブル》
図４には未使用領域識別テーブル部２０の一部、例えばブロックアドレスＢＡ０に配置された未使用領域識別テーブルブロックの詳細が例示される。ＥＴで示されるものが分割された一つの未使用領域識別テーブルであり、図では“消去済”と記載された領域を併せて４重に多重化されている。多重化された４個の未使用領域識別テーブルＥＴはその内の１個が順番に有効とされる。分割された未使用領域識別テーブルＥＴは、メモリ領域の物理アドレス即ちブロックアドレス毎に未使用識別フラグＦＬＧが対応付けられている。要するに、未使用領域識別テーブルＥＴの先頭から順番に１ビット単位で、先頭ブロック（ブロックアドレスＢＡ０）の未使用識別フラグＦＬＧ、次ブロック（ブロックアドレスＢＡ１）の未使用識別フラグＦＬＧというように、順次フラグＦＬＧのビットで埋められている。未使用識別フラグＦＬＧは１ビットで消去単位の対応メモリブロックが未使用領域か否かを示す。“１”は未使用メモリブロック、“０”は使用メモリブロックであることを意味する。未使用領域識別テーブルにおける未使用識別フラグＦＬＧの配列はブロックアドレス（物理アドレス）の昇順で配置される。降順であってもよい。
【００３４】
夫々が４重化されたテーブル（未使用領域識別テーブルＥＴ、使用アドレス登録テーブルＡＴＴ）の内の１個を順番に有効とする制御手法について説明する。多重化された有効なテーブルは各ブロックの管理領域に割当てられた更新フラグによって識別する。更新フラグは分割テーブルに対応させて各メモリブロックに４ビットあり、対応分割テーブルが有効にされたとき“１“にされ、消去されるまでその状態を維持する。メモリブロックで多重化された分割テーブルは順次選択される。選択方向先頭で更新フラグが”１“と”０“の境界になっている地点が検索されることにより、当該”１“の更新フラグに対応する分割テーブルが有効になる。有効な分割テーブルの位置を変更するのはテーブル内容を更新するときに行う。テーブル更新は追加書き込みによって行う。要するに、消去を行わず、新たにデータを追加する部分以外をマスクして（書き込み非選択として）書き込みを行う。一つのメモリブロックの４ビットの更新フラグが全部”１“にされている状態からテーブルを更新するときは、空きブロック領域２３にあるブロックに書き換えを行い、当該テーブルを新しく作成し、元のテーブルは空きブロックとして再利用する。この処理により、テーブル上の同じ不揮発性メモリセルが繰り返し書き換えに供される頻度を低減している。
【００３５】
《書き込み動作》
図５には前記未使用領域識別テーブル２０及び使用アドレス登録テーブル２１を利用したメモリカードの書き込み動作の処理フローが例示される。図６及び図７には図５の処理における主なデータの流れ等が図示される。
【００３６】
ホストコンピュータ６からバッファメモリ４に例えば５１２バイトの書き込みデータが供給される（Ｓ１）。その書き込みデータに対するライトアクセスの指示があると、カードコントローラ５は書き込み対象の論理アドレスＬＢＡ（論理セクタアドレス）に対応するブロックアドレスが格納されている使用アドレス登録テーブルＡＴＴをフラッシュメモリ２からバッファメモリ４の使用アドレス登録テーブルバッファに格納する（Ｓ２）。即ち、使用アドレス登録テーブル部２１をインデックスする論理アドレス情報は昇順配置だから、論理アドレスＬＢＡに従って、所要の使用アドレス登録テーブルが配置されるメモリブロックを選ぶ。選んだメモリブロックに対しその管理領域を先ずリードして、多重化されている中から有効な使用アドレス登録テーブルＡＴＴの所在を把握し、これに基づいて使用アドレス登録テーブルＡＴＴをリードする。リードした使用アドレス登録テーブルを検索することによりライト対象の論理アドレスに現在対応するブロックアドレス（原ブロックアドレスと称する）ＰＡ４を取得する。
【００３７】
カードコントローラ５は、原ブロックアドレスＰＡ４に格納されているデータの内から書換えないデータを読み出してバッファメモリ４のデータバッファに格納し、ホストコンピュータ６からのライトデータと組合わせる（Ｓ３）。例えばライトデータが１ストレージセクタ分のデータＳＤｍであるなら、原ブロックアドレスＯＢＡからは３ストレージセクタ分のデータＳＤｉ，ＳＤｊ，ＳＤｋをリードし、合わせて４ストレージセクタ分のデータを書き換えデータとする。
【００３８】
次にカードコントローラ５は、原ブロックアドレスＰＡ４に対応する未使用領域識別テーブル（以下原未使用領域識別テーブルと称する）ＥＴをバッファメモリ４の原未使用領域識別テーブルバッファにリードする（Ｓ４）。リードされる未使用領域識別テーブルは一つの未使用領域識別テーブルブロック内で多重化されている４個の未使用領域識別テーブルの内の有効な一つである。ここでは、前述の通り、分割配置された一つの未使用領域識別テーブルは多重化されており、前記管理領域内の更新フラグの状態を参照して多重化されている中の一つの未使用領域識別テーブルをリードする。更にマイクロプロセッサ１１はデータ書き換え後に使用する未使用領域識別テーブル（新未使用領域識別テーブル）をバッファメモリ４に格納する制御を行う（Ｓ４）。例えば、マイクロプロセッサ１１はプログラムＲＯＭ１６内の擬似乱数発生プログラムを実行して、書き込みデータの書き込み先となるブロックアドレス（新ブロックアドレス）を取得するための検索開始ブロックアドレスを求める。カードコントローラ５は、このようにして得られた検索開始ブロックアドレスに対応した新未使用領域識別テーブルをバッファメモリ４に格納する。この場合も上記同様に、未使用領域識別テーブルブロック内で多重化されている一つの有効な未使用領域識別テーブルをバッファメモリ４に格納する。
【００３９】
そして、メモリコントローラ５はバッファメモリ４に格納した新未使用領域識別テーブルから使用可能な新ブロックアドレス（未使用アドレス）ＰＡ３を検索する（Ｓ５）。即ち、メモリバッファ４にリードした新未使用領域識別テーブルＥＴの疑似乱数発生プログラムを実行して取得した検索開始ブロックアドレスから昇順又は降順に未使用識別フラグＦＬＧを調べ、フラグＦＬＧが値“１”となる最初の位置に応ずるブロックアドレスを新ブロックアドレスＰＡ３とする。新ブロックアドレスＰＡ３のメモリブロックに対しては消去処理が行なわれる（Ｓ６）。
【００４０】
消去処理が行われた未使用アドレスＰＡ３のメモリブロックに対して、前記ステップＳ３で生成された書き換えデータによって書き込み処理が行なわれる（Ｓ７）。書き込み処理に対して書き込み成功か否かが判定される。書き込み不成功であれば、そのときのバッファメモリ４にリードされている新未使用領域識別テーブル上で、当該書き込みエラーに係る新ブロックアドレスに対応するフラグＦＬＧを使用状態“０”に変更し、前記ステップＳ５に戻って、前記新未使用領域識別テーブルから使用可能な別のブロックアドレスを検索して、途中から処理をやり直す。
【００４１】
ステップＳ７の書き込みが成功と判別されたときは、先ず、バッファメモリ４にリードされている新未使用領域識別テーブル上で、新ブロックアドレスＰＡ３に対応する未使用識別フラグＦＬＧを使用状態に設定変更し、変更した新未使用領域識別テーブルのデータを書き換えデータとして、フラッシュメモリ２上の当該新未使用領域識別テーブルのメモリブロックに書き込む（Ｓ８）。これによって新ブロックアドレスＰＡ３は使用アドレスとされる。次に、バッファメモリ４にリードされている前記使用アドレス登録テーブルＡＴＴ上で、今回のアクセス対象論理アドレスに対応するブロックアドレスを、原ブロックアドレスＰＡ４から新ブロックアドレスＰＡ３に変更し、変更した使用アドレス登録テーブルのデータを書き換えデータとして、フラッシュメモリ２上の当該使用アドレス登録テーブルのメモリブロックに書き込む（Ｓ９）。これによって原ブロックアドレスＰＡ４は使用アドレス登録テーブルエントリから外され、代わりに新ブロックアドレスＰＡ３がエントリとして登録される。最後に、バッファメモリ４にリードされている原未使用領域識別テーブル上で、原ブロックアドレスに対応する未使用識別フラグＦＬＧを未使用状態に設定変更し、変更した原未使用領域識別テーブルのデータを書き換えデータとして、フラッシュメモリ２上の当該原未使用領域識別テーブルのメモリブロックに書き込む（Ｓ１０）。これによって原ブロックアドレスＰＡ４は使用アドレスから未使用アドレスに変更される。
【００４２】
ここで、図６では原ブロックアドレスのブロックデータにセクタデータＳＤｈ，ＳＤｉ，ＳＤｊ，ＳＤｋが含まれ、新ブロックアドレスＰＡ３上では、その内のセクタデータＳＤｈがホストコンピュータ６からライトアクセスによりセクタデータＳＤｍに書き換えられる。
【００４３】
図６及び図７からも明らかなように、ステップＳ７にて新ブロックアドレスＰＡ３のメモリブロックに書き換えデータＳＤｍ，ＳＤｉ，ＳＤｊ，ＳＤｋを書き込んでも、原ブロックアドレスＰＡ４のメモリブロックには書き換え前のデータＳＤｈ，ＳＤｉ，ＳＤｊ，ＳＤｋがそのまま残っている。フラッシュメモリ２上では原未使用領域識別テーブル及び使用アドレス登録テーブルもそのままである。したがって、ステップＳ７の書き込みが完了する前にフラッシュメモリカード１がカードスロットから引き抜かれたりして動作電源が遮断されても、前のデータはそのまま残る。書き換えデータが書き込まれるメモリブロックは、書き換えられる元のデータのメモリブロックとは相違されるからである。更にステップＳ７の書き換えデータの書き込みが終わった後、先ず、新ブロックアドレスＰＡ３を使用状態に設定変更した新未使用領域識別テーブルをフラッシュメモリ２に書き戻す（Ｓ８）。ステップＳ８の処理完了により、新ブロックアドレスＰＡ３に書き込まれたデータの不所望な消去防止が保証される。使用状態を示すフラグＦＬＧに対応するメモリブロックは消去不可として扱われるからである。次に原ブロックアドレスＰＡ４が新ブロックアドレスＰＡ３に変更された使用アドレス登録テーブルがフラッシュメモリ２に書き戻される（Ｓ９）。これによって新ブロックアドレスへのアクセスが可能にされる。設定変更された原未使用領域識別テーブルの書き戻しは最後に行われ（Ｓ１０）、これが完了されることにより、原ブロックアドレスＰＡ４のメモリブロックデータは消去許可になって、最早不要になる。電源遮断によってステップＳ１０の処理が中断しても、単に原ブロックアドレスのメモリブロックが再利用不可能になるだけであり、必要なデータアクセスに支障は生じない。
【００４４】
上記より明らかなように前記ステップＳ８，Ｓ９，Ｓ１０の処理順は不所望な電源遮断によるデータ消失の防止を徹底させ、且つ記憶情報管理の論理整合を採り易くする意味において重要である。即ち、先ず、新ブロックアドレスのデータを消去不許可にして保護する処理（Ｓ８）を行った後に、原ブロックアドレスに残っているデータを容易に取り出せなくする処理（Ｓ９）、そして原ブロックアドレスに残っているデータを消去許可とする処理（Ｓ１０）を行う。例えばＳ８の処理とＳ１０の処理の順番を入れ替えて、先にＳ１０の処理を完了すると、新ブロックアドレスと原ブロックアドレスの双方に対して消去を許容する状態が発生し、このまま電源の遮断が発生すれば、その後に前記双方に対する消去許容態が維持され、必要なデータが不所望に消去される虞を生ずる。
【００４５】
《置き換え処理》
前記カードコントローラ５は所定のタイミングでメモリブロックの置き換え処理を行う。置き換え処理とは、相対的に書き換え回数の少ないメモリブロックの記憶データを未使用のメモリブロックへ書き込み、書き込みされたメモリブロックを元の書き換え回数の少ないメモリブロックに代えて使用領域とする処理である。
【００４６】
図８には置き換え処理動作の一例が示される。ここでは置き換え元のブロックアドレスをＰＡ１、置き換え先のブロックアドレスをＰＡ２とする。図８の説明では適宜図６及び図７を参照する。図８の置き換え処理は、例えば、特定コマンドに応答して、或は書き込み等の所定のコマンド処理の終了に応答して開始する。
【００４７】
置き換え処理が開始されると、マイクロプロセッサ１１は先ず、例えば一つの使用アドレス登録テーブルＡＴＴを選んでフラッシュメモリ２からバッファメモリ４の使用アドレス登録テーブルバッファに格納する（Ｓ２０）。どれを選ぶかは特に制限されず、ランダムであっても、或はその直前に利用していたテーブルＡＴＴであっても、更にはカードコントローラ５の内部で所定のアルゴリズムに従って選んだものでも、また、ホストコンピュータ６から指示された論理アドレスに対応するものであってもよい。そして、バッファメモリ４に読み込んだ使用アドレス登録テーブルにエントリとして含むブロックアドレスについて少なくとも定義されている未使用領域識別テーブル（原未使用領域識別テーブル）と、移動先メモリブロックの検索に利用する未使用領域識別テーブル（新未使用領域識別テーブル）とをバッファメモリ４に格納する（Ｓ２１）。新未使用領域識別テーブルとしてどれを選ぶかは任意である。次にマイクロプロセッサ１１は、例えばプログラムＲＯＭ１６内の擬似乱数発生プログラムを実行して、新未使用領域識別テーブルから移動先となる未使用ブロックアドレスを検索し、これを置き換え先ブロックアドレスＰＡ２とする（Ｓ２２）。
【００４８】
この段階でホストコンピュータ６からアクセスコマンド等による新たな動作要求があるか否かを判別する（Ｓ２３）。有れば、ホストコンピュータ６からの要求動作を実行する（Ｓ２４）。要求がなければ置き換え処理を継続する。即ち、ステップＳ２０で読み込んだ使用アドレス登録テーブルを利用して書き込み回数の少ないブロックアドレスを検索し、これを置き換え元ブロックアドレスＰＡ１とする（Ｓ２５）。書き込み回数の少ないブロックアドレスを検索するには、例えば各メモリブロックの管理領域に書き換え回数データを保有させ、一群のメモリブロックから夫々得られる書き換え回数データを参照し、その中から書き換え回数の少ないメモリブロックを検索すればよい。
【００４９】
そして、マイクロプロセッサ１１は前記置き換え元ブロックアドレスＰＡ１のメモリブロックが保有するデータを読み出し、バッファメモリ４へ退避させ前記置き換え先ブロックアドレスＰＡ２のメモリブロックを消去して、ここにバッファ４へ退避させているデータを書き込む（Ｓ２６）。
【００５０】
その後は、前記書き込み処理のステップＳ８，Ｓ９，Ｓ１０と同様の処理Ｓ２７，Ｓ２８，Ｓ２９を行う。即ち、バッファメモリ４にリードされている新未使用領域識別テーブル上で、置き換え先ブロックアドレスＰＡ２に対応する未使用識別フラグＦＬＧを使用状態に設定変更し、変更した新未使用領域識別テーブルのデータを書き換えデータとして、フラッシュメモリ２上の当該新未使用領域識別テーブルのメモリブロックに書き込み、これによって置き換え先ブロックアドレスＰＡ２は使用アドレスとされる（Ｓ２７）。次に、バッファメモリ４にリードされている前記使用アドレス登録テーブルＡＴＴ上で、今回の置き換え元ブロックアドレスＰＡ１と論理アドレスとの対応を、置き換え先ブロックアドレスＰＡ２とその論理アドレスとの対応に変更し、変更した使用アドレス登録テーブルのデータを書き換えデータとして、フラッシュメモリ２上の当該使用アドレス登録テーブルのメモリブロックに書き込む（Ｓ２８）。これによって置き換え元ブロックアドレスＰＡ１は使用アドレス登録テーブルエントリから外され、代わりに置き換え先ブロックアドレスＰＡ２がエントリとして登録される。最後に、バッファメモリ４にリードされている原未使用領域識別テーブル上で、置き換え元ブロックアドレスＰＡ１に対応する未使用識別フラグＦＬＧを未使用状態に設定変更し、変更した原未使用領域識別テーブルのデータを書き換えデータとして、フラッシュメモリ２上の当該原未使用領域識別テーブルのメモリブロックに書き込む（Ｓ２９）。これによって置き換え元ブロックアドレスＰＡ１は使用アドレスから未使用アドレスに変更される。処理Ｓ２７，Ｓ２８，Ｓ２９の順番は前記書き込み処理のステップＳ８，Ｓ９，Ｓ１０の順番と同じ意義を有する。
【００５１】
図９には書き込み回数の少ないブロックアドレスを検索する手順が例示される。検索回数カウンタｉに初期値１を設定し（Ｓ３０）、ステップＳ２０で読み込んだ使用アドレス登録テーブルの中から、擬似乱数発生プログラムを使用して一つのブロックアドレスを抽出し、そのブロックアドレスをアドレスレジスタＡに、また、そのブロックアドレスのメモリブロックに対する書き込み回数を書き込み回数初期値として書き込み回数カウンタＷにセットする（Ｓ３１）。そして、ｉの回数が最大検索回数ｍを超えるまで、以下の操作を繰返す（Ｓ３２）。即ち、Ａの初期アドレスによってプリセットされて＋１インクリメントされたアドレスカウンタＡの計数値Ａｉを用いてメモリブロックから書き換え回数データＷｉを取得し（Ｓ３３）、Ｗ＞Ｗｉを判別し（Ｓ３４）、Ｗ＞ＷｉであればＷにＷｉを代入し（Ｓ３５）、ＡにＡｉを代入し（Ｓ３６）、ｉにｉ＋１を代入する（Ｓ３７）。Ｗ＞Ｗｉでなければｉにｉ＋１を代入する（Ｓ３７）。ｍ＜ｉになって処理を終了すると、Ｗには検索範囲で書き換え回数最小の回数が残り、Ａにはそのブロックアドレスが保持される。
【００５２】
図１０には図５で説明した置き換え処理によるデータ移動の様子と図８で説明した書き込み処理によるデータの流れの様子が模式的に示される。初期状態では例えばブロックアドレスＰＡ１は論理アドレスＬＡｉに対応され、ブロックアドレスＰＡ４は論理アドレスＬＡｊに対応され、ブロックアドレスＰＡ２，ＰＡ３は未使用とされている。例えば論理アドレスＬＡｊに対する書き込みでは、ブロックアドレスＰＡ４のデータＤｎ＋Ｄｍ（５１２バイト×３）が、未使用のブロックアドレスＰＡ３のメモリブロックに書き込まれ、ブロックアドレスＰＡ３が論理アドレスＬＡｊに対応され、元のブロックアドレスＰＡ４のメモリブロックは未使用にされる。このように通常の書き込み処理でもメモリブロックの割り当てが変更されてメモリブロックに対する書き換え回数の平準化が行なわれるが、書き換えが全く起こらない使用メモリブロックはそのままでは他のメモリブロックと置き換えを生じない。前記置き換え処理は、その様な、書き換えが起こらない使用メモリブロック、即ち、書き換え回数の少ない使用メモリブロックを置き換え対象とする。図９においてＰＡ１は書き換え回数の少ないブロックアドレスであり、このブロックアドレスＰＡ１のデータを別のブロックアドレスＰＡ２に移動し、ＰＡ１に割り当てられていた論理アドレスＬＡｉを移動先のブロックアドレスＰＡ２に対応させ、ＰＡ１を未使用とする。これにより、ホストコンピュータ６からアドレスが指定された書き込みアクセスによる書き込みを全く生じないメモリブロックのデータに対しても、メモリブロックの入れ換えが可能にされる。したがって、書き換えが発生しないメモリブロックが累積的にワード線ディスターブやビット線ディスターブを受けることによってデータ化けを生ずる虞を未然に防止することができる。書き換え回数の平準化のために、書き換え回数の少ないメモリブロックは平均的な書き換え回数を持つアドレスへ移動を行ない、書き換え回数が多いメモリブロックへ行なわないようにする。書き換え回数の多いメモリブロックへ移動を行なうと、再び書き替えが起こらなくなる事が予想され、書き換え回数が多いメモリセルはメモリセルの特性劣化が生じている可能性もありディスターブ発生の可能性がある。上記平均的な書き換え回数とは、置き換え処理の置き換え元になるメモリブロックの書き換え回数よりも多い書き換え回数を持つものと把握してもよい。上記平均的な書き換え回数を持つメモリブロックを選択する方法については、特に図示はしないが、例えば、任意のアドレスから順次複数のブロックアドレスの範囲で書き換え回数の平均値を求め、その範囲で最も平均値に近く且つ置き換え元メモリブロックの書き換え回数よりも多い書き換え回数のメモリブロックを選択すればよい。
【００５３】
図１１には前記置き換え処理をパワーオン動作の一貫として行う場合のフローチャートが例示される。フラッシュメモリカード１に電源が投入されると、ＣＰＵ１５内のレジスタ初期化（Ｓ４０）と、ホストインタフェース回路１０，フラッシュコントローラ１２、及びバッファコントローラ１３に対するレジスタ初期化（Ｓ４１）を行う。そしてフラッシュメモリカード１に実装されているフラッシュメモリ２を確認し（Ｓ４２）、フラッシュメモリ２からシステム情報をリードする（Ｓ４３）。次に、フラッシュメモリ２上における使用アドレス登録テーブルの格納先頭アドレスを取得してワークＲＡＭ１７に格納する（Ｓ４４）。同様にフラッシュメモリ２上における前記未使用領域識別テーブルの格納先頭アドレスを取得してワークＲＡＭ１７に格納する（Ｓ４５）。その後のタイミングで、カードコントローラ５は書き換え回数の少ないメモリブロックに対する前記置き換え処理を行う（Ｓ４６）。
【００５４】
図１２には専用コマンドＣＭＤＸに応答して前記置き換え処理を行うときの動作タイミングチャーチが例示される。ホストコンピュータ６から書き込みコマンドＣＭＤ２４が発行されると、そのコマンドに応答してカードコントローラ５はフラッシュメモリ２に対する書き込みを行う（フラッシュ・ライト）。ホストコンピュータ６はコマンドに対する応答を待つ（レスポンス）。カードコントローラ５は書き込みに続いて移動アドレス検索処理を行う。移動アドレス検索処理は、例えば図９の処理により書き換え回数の少ないブロックアドレスと書き換え回数を取得し、書き換え回数が規定値より少なければ移動アドレスが存在すると判定する。ホストコンピュータ６は移動アドレス検索処理の時間が経過したところで、ステータスリードコマンドＣＭＤ１３をカードコントローラ５に発行する。カードコントローラ５は移動アドレス有無の判定結果を出力し、ホストコンピュータ６はこれをレスポンスとして受取る。例えば、移動すべきアドレスが多い、というチェック結果を受取った場合、ホストコンピュータ６がカードコントローラ５へ置き換え処理コマンドＣＭＤＸを発行する。例えば、移動すべきメモリブロックが多いというチェック結果を受け取った場合、カードコントローラ５がホストコンピュータ６へ置き換え処理コマンドＣＭＤＸの発行を要求する。この置き換え処理コマンドＣＭＤＸは専用コマンドであり、書き込みアドレスを指定して行う単なる書き込みコマンドとは相違される。置き換え処理コマンドＣＭＤＸは書き込み対象アドレスの指定を伴わない。
【００５５】
カードコントローラ５は書き込み処理コマンドに応答して、移動アドレス検索処理で先に検索された置き換え先のブロックアドレスに対して、更に、書き換え回数の少ない置き換え元のブロックアドレスを取得して、書き替え処理を行なう。その処理手順は図８などで説明した手順となる。置き換え処理中にホストコンピュータ６からアクセスコマンド等（例えばリードコマンドＣＭＤ１７）が発行されると、カードコントローラ５は置き換え処理を中止し、当該アクセスコマンドに応答する処理に移行する。ホストコンピュータ６からリードやライトのアクセス要求を待たせないようにするためである。
【００５６】
図１３乃至図１５にはフラッシュメモリ全体としての書き換え回数に応じて前記置き換え処理を行う場合の動作例が示される。ここでは、ホストコンピュータからの書き込みアクセスに応答する処理の一貫として置き換え処理を行う場合を一例としている。フラッシュメモリ全体としての書き換え回数を保持する不揮発性記憶領域としてフラッシュメモリの使用アドレス登録テーブルの所定の記憶領域が割当てられる。全体書き換え回数データは必要に応じてフラッシュメモリからバッファメモリ４に読み出されて利用される。バッファメモリ４に読み出された全体書き換え回数データは例えば書き込み動作毎にインクリメントされ、一定計数値（例えば５０００）毎にリセットされて初期値から計数を繰返すリングカウンタ形式で計数動作される。変更された全体書き換え回数データはワークＲＡＭ１７からフラッシュメモリ２に待避される。
【００５７】
図１３乃至図１５に示される処理のステップ番号は図５、図８と同じ処理には同じステップ番号を付してその詳細な説明を省略する。図１３において図５と相違する点は、ステップＳ２の処理の後、カードコントローラはフラッシュメモリ２の使用アドレス登録テーブルから全体書き換え回数データを取得し（Ｓ５０）、全体書き換え回数が設定値例えば５０００回に到達しているかを判定する（Ｓ５１）。到達していれば、先に、続きの書き込み処理Ｓ３〜Ｓ１０を行い、その後、全体書き換え回数を＋１インクリメントしてから（Ｓ５３）、前記ステップＳ２０〜Ｓ２２、Ｓ２５〜Ｓ２９によって置き換え処理を行う。到達していなければ、前記ステップＳ３〜Ｓ１０によって書き込み処理を行い、その途中で、全体書き換え回数を＋１インクリメントし、その値をフラッシュメモリ上の対応する使用アドレス登録テーブルへ格納する（Ｓ５２）。
【００５８】
《読み出し動作》
図１６には使用アドレス登録テーブル部２１を利用したメモリカードの読み出し動作の処理フローが例示される。ホストコンピュータ６からリードコマンドが発行されると、カードコントローラ５は論理アドレスＬＢＡ（論理セクタアドレス）に対応するブロックアドレスが格納されている使用アドレス登録テーブルＡＴＴをバッファメモリ４の使用アドレス登録テーブルバッファにリードする（Ｓ６０）。このときに、使用アドレス登録テーブル部２１においてそれをインデックスする論理アドレス情報は昇順配置だから、先ずそれに従って、使用アドレス登録テーブルが配置されるメモリブロックを選べばよい。選んだブロックに対し管理領域を先ずリードして、多重化されている中から有効な使用アドレス登録テーブルＡＴＴの所在を把握し、これに基づいて使用アドレス登録テーブルＡＴＴをリードすることになる。そして、リードした使用アドレス登録テーブルを検索することによりリード対象の論理アドレスに現在対応するメモリブロックアドレス（ＢＡ）を取得する（Ｓ６０）。
【００５９】
カードコントローラ５は、メモリブロックアドレスＢＡに格納されているデータをリードする（Ｓ６１）。リードデータに対してＥＣＣエラーの判定を行い（Ｓ６２）、エラーがあればＥＣＣ訂正処理を行い（Ｓ６３）、リードデータをホストコンピュータ６に向けて出力する。
【００６０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００６１】
例えば、未使用領域識別テーブル、使用アドレス登録テーブルの多重化数は４に限定されず、異なるメモリブロックを用いて多重化数を２倍の８としてもよい。この時、多重化された複数のテーブルの中で有効とするテーブルの順序は、毎回メモリブロックを相違させるように選択するのがよい。テーブルの書き換えに際し、原メモリブロックに対して新メモリブロックは相違されることになり、テーブルの書き換え中に電源遮断を生じても、原テーブルの内容は消失させずに残す事ができる。
【００６２】
また、相対的に書き換え回数の少ないメモリブロックを検索する方法は図９で接したような方法に限定されない。例えば書き換え回数データは１０００回単位で回数を表すデータであってもよい。或は規定値に到達したか否かを示す１ビットのデータもしくはフラグであってもよい。書き換えは書き込み処理と消去処理によって行なわれる。書き換え回数は消去回数若しくは書き込み回数と表現しても同じである。
【００６３】
また、消去処理や書き込み処理は必ずしもワード線単位で無くてもよい。フラッシュメモリは１個のメモリセルで２値データを記憶する構成だけでなく、４値以上の多値情報を記憶する構成であってもよい。不揮発性メモリはフラッシュメモリに限定されず、高誘電体メモリなど、他の記憶形式のメモリであってよいことは言うまでもない。また、カードコントローラのような制御回路はＩＤＥなどのホストインタフェース回路を備えなくてもよく、その機能をホストコンピュータに負担させるように規格化されたメモリカードにも適用可能である。
【００６４】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００６５】
すなわち、本発明に係るメモリ装置は、置き換え処理により、書き換え回数の少ないメモリ領域を他のメモリ領域との置き換え対象にするから、書き換えが発生しないメモリ領域で累積的にディスターブによる影響を受けてデータ化けを生ずる虞を未然に防止することができる。また、本発明に係るメモリ装置は、データを書き換えるとき、置き換え処理を行うとき、原ブロックアドレスと異なるブロックアドレスを書き込み先若しくは置き換え先とするように未使用領域識別テーブルで書き込みブロックアドレスの管理を行うから、消去途中若しくは置き換え途中で不所望な電源遮断を生じてもデータの回復が可能である。
【図面の簡単な説明】
【図１】本発明の一例に係るフラッシュメモリカードのブロック図である。
【図２】フラッシュメモリの記憶領域を例示する説明図である。
【図３】使用アドレス登録テーブル部の一部例えばブロックアドレスに配置された使用アドレス登録テーブルブロックの詳細を例示する説明図である。
【図４】未使用領域識別テーブル部の一部例えばブロックアドレスに配置された未使用領域識別テーブルブロックの詳細を例示する説明図である。
【図５】未使用領域識別テーブル及び使用アドレス登録テーブルを利用したメモリカードの書き込み動作の処理を例示するフローチャートである。
【図６】図５の処理における主なデータの流れ等を示す説明図である。
【図７】図５の処理における主なデータの流れ等を示す説明図である。
【図８】置き換え処理動作を例示するフローチャートである。
【図９】書き込み回数の少ないブロックアドレスを検索する手順を例示するフローチャートである。
【図１０】図５で説明した置き換え処理によるデータ移動の様子と図８で説明した書き込み処理によるデータの流れの様子を模式的に示す説明図である。
【図１１】置き換え処理をパワーオン動作の一貫として行う場合のフローチャートである。
【図１２】専用コマンドに応答して置き換え処理を行うときの動作タイミングチャートである。
【図１３】フラッシュメモリ全体としての書き込み回数に応じて置き換え処理を行う場合の動作を示すフローチャートである。
【図１４】フラッシュメモリ全体としての書き込み回数に応じて置き換え処理を行う場合の動作を示すフローチャートである。
【図１５】フラッシュメモリ全体としての書き込み回数に応じて置き換え処理を行う場合の動作を示すフローチャートである。
【図１６】使用アドレス登録テーブル部を利用したメモリカードの読み出し動作のフローチャートである。
【符号の説明】
１  メモリカード
２  フラッシュメモリ
４  バッファメモリ
５  カードコントローラ
６  ホストコンピュータ
１０  ホストインタフェース回路
１１  マイクロプロセッサ
１２  フラッシュコントローラ
１３  バッファコントローラ
１５  ＣＰＵ
１６  プログラムメモリ
１７  ワークＲＡＭ
２０  未使用領域識別テーブル部
２１  使用アドレス登録テーブル部
２２  ユーザエリア
２３  空きブロック領域
ＡＴＴ  使用アドレス登録テーブル
ＥＴ  未使用領域識別テーブル
ＦＬＧ  未使用識別フラグ
【図１】
2004310650.tif 000003
【図２】
2004310650.tif 000004
【図３】
2004310650.tif 000005
【図４】
2004310650.tif 000006
【図５】
2004310650.tif 000007
【図６】
2004310650.tif 000008
【図７】
2004310650.tif 000009
【図８】
2004310650.tif 000010
【図９】
2004310650.tif 000011
【図１０】
2004310650.tif 000012
【図１１】
2004310650.tif 000013
【図１２】
2004310650.tif 000014
【図１３】
2004310650.tif 000015
【図１４】
2004310650.tif 000016
【図１５】
2004310650.tif 000017
【図１６】
2004310650.tif 000018