本発明は携帯用の小型情報処理機器の補助記憶装置にかかり、特にフラッシュメモリを用いた半導体ファイル記憶装置及びそれを搭載する情報機器に関する。
情報機器の補助記憶装置の従来技術としては磁気記憶装置が最も一般的であるが、磁気記憶装置では書き込むファイルをセクタと呼ぶ記憶単位に分割し、記憶媒体の物理的な位置に対応させて記憶する。すなわちあるファイルの書き換えにおいては基本的に同一位置に書き込みが行われ、書き込みデータが増えるとその分だけ新たなセクタへの書き込みを行う。これに対し別の補助記憶装置として光ディスク装置が挙げられる。現在一般的な光ディスクは、書き込みが一回だけ可能で消去は不可能である。従って一度書き込んだファイルの書き換え時は実際には書き換えを行わず、別の領域に書き込んで以前書き込んだデータは無効にして以後読み出さないようにする。つまり磁気ディスク装置と異なり、書き換えデータと記憶場所には全く関連性を持たせない、という方式で補助記憶装置の機能を果たしている。以上のようなディスクを回転させて大容量のデータを高速にアクセスし、補助記憶装置の機能を果たす記憶装置に対し、半導体メモリを用いて補助記憶装置とする半導体ファイル記憶装置が近年脚光を浴びている。特に電気的に書き換えが可能な不揮発性メモリ(以下EEPROMと記す)を用いたものが今後半導体ファイル記憶装置の主流になると考えられる。それを実現する一つの技術として特許文献1がある。これはEEPROMを用いた記憶装置であり、EEPROMの欠点である書き換え消去回数の制限を保護し、EEPROMを用いて実用的な記憶装置を実現する方式である。その概要を説明すると複数のメモリ素子を用意し、各素子の消去書き換え回数を記録して管理し、EEPROMの書き換え保証回数より小さなある規定回数に達したら用意してあったメモリ素子に切り替えて使用することにより、記憶データの保護を図るものである。
上記従来技術における光ディスク装置の方式ではファイルの書替えがあるたびに記憶領域をつぶしていくことになり、非常に大容量の記憶媒体がないと記憶領域の確保ができない、という点に問題がある。特にファイルの書替えが激しい情報機器の記憶装置とする場合は、実際の記憶容量がそれほど大きくなくても、記憶領域が大きくなってしまう。一方補助記憶装置として最も一般的な磁気ディスク装置の場合は、一度書き込んだファイルを書き替える場合、同じ領域に新しいデータを書き込む。しかしこれをEEPROMに応用すると、記憶しているファイルの一覧となるファイル(一般にはディレクトリファイルと呼ばれる)やファイルの記憶場所を参照するためのファイル(ファイルアロケーションテーブル)等はデータのライトアクセスがあるたびに書替えが起こり、書替えが局所に集中する。これは書込み消去回数に制限のあるEEPROMにおいては寿命を著しく短くすることになる。
また、フラッシュメモリは不揮発性のメモリであるため、当然のことながら本発明のシステムは非動作時には電源の供給を停止してもフラッシュメモリ内のデータが失われることはない。しかしながらいくらデータが保存されていても、テーブルの内容が失われると、どのセクタに何のデータが格納されているかがわからなくなり、フラッシュメモリ内のデータは正体不明の無意味なデータと化してしまう。そのためテーブルに格納されているデータも電源供給停止後に保存されている必要がある。ただしテーブル内の全てのデータを保存する必要はない。
その手段として、データの書き込みは光ディスクと同様に記憶データと記憶場所には関連性は持たせず、データの書き込みがあったらデータを書き加えていくこととし、既に書き込んであるファイルの書き換えが発生した場合は、古いファイルの記憶領域を無効として消去可能領域にする。つまり、処理装置からの書き込み要求が既にデータが書き込まれている論理セクタへの書き換え要求である場合に、処理装置からの書き込み要求がされた論理セクタに対応する物理セクタに対して予め定められた一定値(例えば、1)をインクリメントした別の物理セクタであって未だデータが書き込まれていない別の物理セクタに、処理装置からの書き込み要求に伴うデータを書き込む。
また、その手段として、不揮発性メモリ(例えば、フラッシュメモリ)が、物理セクタにマッピングされたデータの論理セクタ番号を参照するための情報(例えば、物理セクタテーブル)を格納し、そして、システムの起動の際に又は電源供給が開始される際に、不揮発性メモリに格納された物理セクタにマッピングされたデータの論理セクタ番号を参照するための情報を用いて、論理セクタ番号のデータが不揮発性メモリのどこの物理セクタに記憶されているかを参照するための情報を、揮発性メモリに作成し、処理装置からのアクセス要求に応答して、揮発性メモリに作成された前記論理セクタ番号のデータが不揮発性メモリのどこの物理セクタに記載されているかを参照するための情報を用いて、処理装置によって指定された論理セクタ番号に対応する不揮発性メモリの物理セクタを割り出し、割り出された不揮発性メモリの物理セクタをアクセスする。
本発明によれば、消去回数に限りがあるフラッシュメモリを用いた補助記憶装置のデータ管理方式において、特定の論理セクタアドレスの書換えが頻繁に起きても物理的には同一の記憶領域を使用しないため、システムとして寿命が延びる効果がある。
また、本発明によれば、電源の供給を停止しても、物理セクタにマッピングされたデータの論理セクタ番号を参照するための情報が失われることがなく、それ故、フラッシュメモリ内のデータが正体不明の無意味なデータと化すのを防ぐことができる効果がある。
光ディスク装置の方式ではファイルの書替えがあるたびに記憶領域をつぶしていくことになり、非常に大容量の記憶媒体がないと記憶領域の確保ができない、という点に問題がある。特にファイルの書替えが激しい情報機器の記憶装置とする場合は、実際の記憶容量がそれほど大きくなくても、記憶領域が大きくなってしまう。一方補助記憶装置として最も一般的な磁気ディスク装置の場合は、一度書き込んだファイルを書き替える場合、同じ領域に新しいデータを書き込む。しかしこれをEEPROMに応用すると、記憶しているファイルの一覧となるファイル(一般にはディレクトリファイルと呼ばれる)やファイルの記憶場所を参照するためのファイル(ファイルアロケーションテーブル)等はデータのライトアクセスがあるたびに書替えが起こり、書替えが局所に集中する。これは書込み消去回数に制限のあるEEPROMにおいては寿命を著しく短くすることになる。またEEPROMを適用した特開平3−25798においては、メモリ素子の劣化状態を消去回数により把握して壊れる前に代替のメモリに切り替えるという方式を発明しているが、この方式では実際の記憶容量の倍以上のメモリ容量を備える必要がある。すなわち代替のメモリは、最初に使用するメモリが壊れるまでは全く使用しないし、また壊れたメモリは壊れたあとは不必要になってしまう。これは物理的体積、重量に非常に無駄が大きくなる。しかも通常データの書き換えは全体的に起こる訳ではないため、部分的に劣化しているだけなのにメモリチップ全体を非使用状態にしてしまうのは経済的に無駄が大きいと言える。
フラッシュメモリは不揮発性のメモリであるため、当然のことながら本発明のシステムは非動作時には電源の供給を停止してもフラッシュメモリ内のデータが失われることはない。しかしながらいくらデータが保存されていても、テーブルの内容が失われると、どのセクタに何のデータが格納されているかがわからなくなり、フラッシュメモリ内のデータは正体不明の無意味なデータと化してしまう。そのためテーブルに格納されているデータも電源供給停止後に保存されている必要がある。ただしテーブル内の全てのデータを保存する必要はない。
EEPROMの一種であるフラッシュメモリはデータの電気的消去が可能であり、従って不揮発性メモリでありながらデータの書き換えが可能である。そして消去単位が一般のEEPROMと比較して大きなものであるため、セル構造が単純化され集積度を大きくすることができ、物理的にも経済的にも他のメモリ素子よりも大容量の補助記憶装置に適している。そこで欠点である消去回数の制限を保護すべく消去の回数が極力少なくなる方法でデータの記憶と書き換えを行うことにより他の補助記憶装置に置き換えて使用することが可能となる。その手段としてデータの書き込みは光ディスクと同様に記憶データと記憶場所には関連性は持たせず、データの書き込みがあったらデータを書き加えていくこととし、既に書き込んであるファイルの書き換えが発生した場合は、古いファイルの記憶領域を無効として消去可能領域にする。そしてあるタイミングをもって無効領域のデータを消去するガーベイジコレクションを行う。ガーベイジコレクションは、消去単位が大きく無効領域のデータとともに消去の必要がない有効領域のデータを消去しなければならない時には、有効領域のデータを別の記憶領域に移し、元の場所を消去して新たな書き込み可能領域にする。さらに消去回数を管理する消去回数管理テーブルを設け、ガーベイジコレクションを行うごとに回数をインクリメントする。そしてあるブロックが規定した消去回数に達したら消去回数の少ないブロックとのデータの交換を行う。
上記手段によれば光デイスク装置のようにデータの書替えが起こるたびに記憶領域をつぶしていくことはなく、不必要になったデータを消去して記憶領域とすることができ、また磁気ディスクのように書替えが局所に集中してフラッシュメモリの寿命を縮めることはない。たとえ書き込み領域が著しく小さくなり、さらに書き替えるデータも非常に限られたものとなって、消去ブロックが特定のブロックに集中しても、消去回数の多いブロックのデータと消去回数の少ないブロックのデータとを入れ替えることにより、頻繁に書替えが起こる領域を固定せず、また書替えがあまり起こらない領域を固定せずに全記憶領域を一律に使用する記憶方式を実現する。従ってメモリの劣化が鈍化し、代替メモリを備える必要がなくなる。
本発明によれば消去回数に限りがあるフラッシュメモリを用いた補助記憶装置のデータ管理方式において、特定の論理セクタアドレスの書換えが頻繁に起きても物理的には同一の記憶領域を使用しないため、また消去回数が多くなると消去回数の少ない領域のデータと入替えて消去回数の増加を平均化するため、システムとして寿命が延びる効果がある。またデータメモリ素子数は実際の記憶容量と一致する容量だけでよく冗長のメモリ素子を必要としない。さらにメモリ内にデータ領域だけでなく、情報を保持する領域や、データバッファ領域をもたせることにより、周辺回路の素子数を減らしシステム全体の小型化に大きく貢献する。なおこのフラッシュファイルシステムを搭載する情報機器はHDDを補助記憶装置として動作するのに、実際にはフラッシュメモリを用いた記憶装置である、という構成にすることにより、一般的な情報機器のハードウェアを変更することなしにフラッシュファイルシステムを補助記憶装置とすることができる。またフラッシュメモリの書き換え回数に限界があることにより、記憶装置としての寿命が信頼性に大きく関わるが、使用限界に達したことを認識しユーザに報告する機能を持たせ、記憶装置としての信頼性を向上させることができる。またフラッシュメモリの書き込み速度が遅いために、ホスト側が電源を落されてもフラッシュファイルシステムとしては処理が残っているときには、バックアップバッテリにより処理を継続したり、ホストの電源装置を適宜制御することにより、データの消失を防ぐことができる。またフラッシュメモリの劣化度を消去時間で診断し、劣化が激しくなったらあまり劣化していない領域の格納データを格納することにより、劣化の進行を抑えることができる。フラッシュメモリの劣化は消去時間の長短で認識できるため、正確な劣化の進行度を把握でき、また劣化の段階で記憶すれば劣化度の情報の記憶を比較的少ない記憶容量で行うことができる効果がある。また物理セクタテーブルや論理セクタテーブルを省略して、セクタ番号変換テーブルを備えることにより、システムに応じてテーブル領域を節約することができ、ファイルデータ以外の情報データの格納領域を小さくできる効果がある。またインジケータを補助記憶装置に設けることにより、ホストパソコンの表示画面上のプロンプトだけでは補助記憶装置の動作状態が不明であるため、先述のような電源制御を採用していないシステムの場合には補助記憶装置の動作中に誤って電源を落すのを未然に防ぐことができる。
まず第1の実施例を図1、図2、図3及び図4により説明する。図1は第1の実施例を実現するためのハードウエア構成であり、図2は本実施例に用いるフラッシュメモリチップの内部構成を示した図であり、図3は格納データ管理のメインルーチンのフローチャートであり、図4は消去管理ルーチンのフローチャートである。
最初に図2によりフラッシュメモリの動作について述べる。図中11はメモリチップ全体、12はデータ書き込み単位、13はデータ消去の最小単位で消去ブロックと呼ぶこととする。フラッシュメモリは電気的消去可能なEEPROMであり、一種のEEPROMであるが、ノーマルなEEPROMがデータの書き込み単位と消去(書換え)単位が同一であるのに対し、フラッシュメモリは書き込み単位より消去単位が極めて大きく、一度書き込んだデータを書き換えるためには他の多くのデータも同時に消去しなければならない。その代りの利点としてノーマルなEEPROMより集積度を高くでき、大容量の記憶装置に適している。図2においてメモリチップ全体11が一つ以上の消去ブロック13に分割されており、書き込み単位12が1ワード(メモリにおけるワードでありメモリ構成に従う)であるのに対し、消去ブロック13はそれより大きい領域となる。フラッシュメモリを補助記憶装置として用いる際には、磁気ディスク装置の仕様に合わせ、512バイトを消去単位とすると使いやすくなる。
次にこのメモリを用いた記憶装置の第1の実施例のシステム構成とその動作を図1及び図3、図4を用いて説明する。なお以下の説明ではファイルデータの記憶単位をセクタと呼ぶこととし、本実施例では1セクタが1消去ブロックと一致するものとする。図中、1はファイルデータの記憶をするフラッシュメモリチップ群、2はフラッシュメモリ1のアクセス信号を生成するアクセスコントローラ、3は記憶データやステータスデータを操作してフラッシュメモリによる外部記憶システムを構築するマイクロプロセッサ、4はプロセッサ3を動作させる制御プログラムを格納したプログラムメモリ、5はある論理アドレスで示されるセクタ(論理セクタ)のデータがフラッシュメモリ1上のどこにマッピングされているかを参照するための論理セクタテーブル、6はフラッシュメモリ1上の物理的なアドレスで示される物理セクタにマッピングされたファイルデータの論理セクタ番号を参照するための物理セクタテーブル、7は各物理セクタの消去回数の累計を記録する消去回数管理テーブル、8は各物理セクタのステータスを参照するステータステーブル、9はデータの書き込みを高速化するために書き込みデータを一時的に保存するライトバッファである。次に動作を説明する。本システムに対しデータのアクセス要求をするシステム(ホストシステム)よりデータのリードアクセス要求があると、プロセッサ3は論理セクタテーブル5を参照して該当する論理セクタが格納されている物理セクタを割り出し、その物理セクタをアクセスして要求されたデータをホストシステムに送出する。ホストシステムからのデータの書き込み要求に対しては、図3のフローチャートを用いて説明する。図3のフローチャートはプログラムメモリ4に格納されているプログラムのメインルーチンのフローチャートでありその流れを説明すると、まず、次のデータの書き込みをするセクタを示す書き込みポインタが設定されており、このポインタが示すセクタが書き込み可能な状態にあるかをステータステーブル8により判別する(a)。ステータステーブルでは消去回数が多くなり劣化して使いものにならなくなったことを示すフラグやすでにデータが書き込まれていることを示すフラグがあり、これらが立っていて書き込み不可能であれば次のセクタにポインタを移す(b)。そして書き込み可能であればそのセクタへのデータの書き込みを行う(c)。そして既に一度書き込んだことのある論理セクタの書き換えである場合は、前回書き込んだ当該論理セクタのデータはもはや不要であるため、論理セクタテーブルより不要になったデータが書き込まれている物理セクタを捜し出してこれを消去し、同時に前回の書き込みの際に書いた物理セクタテーブル6の内容を消去する(d)。セクタの消去が行われたら消去管理ルーチンへ飛ぶ。消去管理ルーチンについては後述する。そして論理セクタテーブル5に書き込みポインタの示す物理セクタ番号を、物理セクタテーブル6には書き込みポインタの示す場所に書き込んだ論理セクタ番号を書き込む(e)。なお(b)においてはデータが書き込まれているかの判断をステータステーブル8に書き込むことにしても良いし、物理セクタテーブル6により判断することもできる。物理セクタテーブル6は未書き込みセクタである場合には全ビットHにするかあるいはLにすれば判別が容易になる。次に先述の消去管理ルーチンについて図4を用いて説明する。まずデータを消去した物理セクタに対応する消去管理テーブルの消去回数カウンタを1インクリメントし(a)、消去回数が規定回数に達していなければメインルーチンに復帰し、規定回数に達していたら、データの入替えを行う(b)。データの入替えを行うためにはまず他の全セクタの消去管理テーブルを調べ、消去回数が最小でかつまだデータの入替えを行っていないセクタを捜しだす(c)。捜し当てた消去回数が最小のセクタに格納されているデータを、先程消去を行ったセクタに書き込む(d)。書き込みを行ったら両セクタのステータステーブルの入替えフラグを立てる(e)。この入替えフラグは、消去回数の少ない物理セクタが、本ルーチンにより消去が頻繁に起こるようになるのに、それを示す手段がないと再び消去回数が少ないセクタに選ばれてしまうことが考えられ、この時にデータを入れ替えた消去回数の多いセクタは、また消去が頻繁に起こるようになってしまう、ということが起こるのを防ぐものである。この入替えフラグを立てたら、該当する論理セクタテーブルの内容と物理セクタテーブルの内容を書き換える(f)。以上が終了したらメインルーチンに復帰する。なお消去回数が最小として選ばれたセクタは一度消去されることになるため、消去管理テーブルの消去回数カウンタをインクリメントする必要がある。また入替えフラグは全てのセクタのフラグが立ったらクリアされるか、あるいは論理の判断を反転する。つまり1のとき入替えが行われたと判断していたものを0になったら入替えが行われたことにする。また(b)の規定回数は、フラッシュメモリの書換え可能回数の保証値より小さな値の倍数とすべきで、例えば10000回の保証回数であれば、1000回の倍数回や、2000回、5000回の倍数回等が適当である。このルーチンにより、限られたブロックに消去が頻繁に起きたら消去回数の少ないブロックのデータと入替えをして、消去回数の多いブロックに消去があまり起きないセクタのデータを格納することにより、消去回数の平均化を図るものである。これは通常の補助記憶装置の格納データには大変効果があると考えられる。例えばオペレーションシステムプログラムを格納した領域ではデータの書換えは全く起きないが、アプリケーションプログラムのデータとなるグラフィックデータやテキストデータの領域では頻繁にデータの書換えが起きる。そのため消去回数の平均化を行わないと、システムプログラム領域のメモリはデータが変化しようがないため、消去回数の増加による劣化は全く起きないことになり、それ以外のデータ領域のメモリは限られたメモリ空間で頻繁に消去が行われ、消去回数を急増させることになる。つまり使用可能領域が少ない状態で特に大きな効果があるといえる。
以上が第1の実施例の動作の説明である。本実施例によればプロセッサを搭載したことによりプログラムメモリの内容に従った細かな制御ができるようになり、またライトバッファにより書き込みの高速化が図れ、ステータステーブルを備えたことにより各セクタの状態を記録するのに拡張性がある。そしてフラッシュメモリの寿命を延ばすために、消去回数を管理した最適なファイル管理が行える効果がある。
次に第2の実施例について図5、図6、図7、図8及び図9を用いて説明する。図5は第2の実施例におけるハードウエア構成であり、図6は本実施例におけるフラッシュメモリ内の記憶構成を示した図であり、図7はデータ書き込みのためのメインルーチンのフローチャート、図8は不必要なデータを格納したセクタを未書き込みセクタにするための整理ルーチンのフローチャート、図9は消去回数の管理をする消去管理ルーチンのフローチャートである。
まず図6により本実施例におけるフラッシュメモリのチップとその使用法を説明する。図中、52は第1の実施例で用いたセクタと呼ぶファイルデータを記憶する記憶領域の単位である。53はデータ消去の最小単位で消去ブロックと呼び、複数のセクタ52により構成される。すなわち第1の実施例とは異なり消去ブロック53とセクタ52の記憶容量は異なるものとする。54はメモリチップ全体であり、図では複数の消去ブロックにより構成されているが、1チップに1消去ブロックであることも考えられる。本実施例ではセクタ単位にファイルデータの格納を行うが、そのファイルデータの書換えの要求があって消去するためには他のセクタも同時に消去されてしまうようなメモリチップに適応するものである。図5は本実施例のハードウエア構成で、図中、41は書き込みデータの記憶領域であるフラッシュメモリで一つ一つはメモリチップ54である。42はフラッシュメモリ41をアクセスするアクセスコントローラ、43は記憶データやステータスデータを操作するプロセッサ、44はプロセッサ3を動かすための制御プログラムが格納されているプログラムメモリ、45はフラッシュメモリ41の物理セクタ51が記憶している論理セクタ番号を参照するための物理セクタテーブル、46は記憶してある論理セクタ番号のデータがフラッシュメモリ1のどこの物理セクタに記憶されているかを参照するために物理セクタ番号が記録されている論理セクタテーブル、47は各ブロックの消去回数を記録する消去管理テーブル、48は各ブロックのステータスを記憶するステータステーブル、49は既書き込みセクタ数を参照するための書き込みセクタ数テーブル、50は書き込みの高速化を図るため、書き込みデータを一時的に保持するライトバッファ、51は整理ルーチンを行う際に用いる整理バッファである。
次に動作を説明する。リードアクセス時は第1の実施例同様、論理セクタテーブル45と物理セクタテーブル46を参照して行う。一方ライトアクセスは、図7を用いて説明すると、まず書き込みポインタを設定し、その書き込みポインタで示されたブロックのステータステーブルを参照する(a)。すなわち本実施例における書き込みポインタはブロック単位のポインタである。そしてこわれていたら次のブロックにポインタを移す(b)。こわれていなければそのブロックの書き込みセクタ数テーブル49を参照する(c)。そして既にブロック内の全セクタが書き込み済であったら整理ルーチンに飛ぶ。整理ルーチンについては後述する。もし未書き込みセクタがあったらデータの書き込みを行い(d)、該当する書き込みセクタ数テーブルを1インクリメントする(e)。従って、例えば図6において一つ前の書き込みを第1ブロックの第3物理セクタに書き込んだ場合、次の書き込みは第1ブロックの第4物理セクタに書き込みを行うことになる。実際のライトアクセス制御はアクセスコントローラ2により行う。ここで書き込みを行ったブロックのセクタが全て書き込まれてしまったら整理ルーチンに飛ぶ(f)。そして書き込み後は物理セクタテーブルおよび論理セクタテーブルに書き込んだセクタ番号をそれぞれ記録する(g)。もし以前に書き込んでいる論理セクタの再書き込みであれば、以前物理セクタテーブルに書き込んだ論理セクタ番号を消去する。これはその物理セクタのデータは無効であることを示すための動作である。なお(f)の動作は整理時間短縮のために設けられておりフラッシュメモリの消去効率を高くするためには行うべきでない。次に整理ルーチンについて説明すると、整理ルーチンとは書き込みポインタの指し示すブロックがすでに全セクタ書き込まれており、書き込み不可能である時の動作ルーチンである。整理ルーチンが必要となる理由は、これまで説明した書き込み方法では同じファイルのデータの書き替えにおいて別の物理セクタへ書き込みを行う。すなわち書き換える前に書き込んだデータは不要となるがメモリ上には記憶されたままであり消去すべきデータである。しかし不要となるたびに消去していたのでは消去回数が有限であるフラッシュメモリにとっては寿命を短くすることになる。そこで整理ルーチンによって消去する。整理ルーチンはブロックが書き込みデータで一杯になったときに行う。整理の具体的な方法は、図8のフローチャートに従って行う。以下フローチャート内の各部の説明をする。整理ブロックの物理セクタテーブルを参照し、ブロック内に消去可能なセクタすなわち他の物理セクタに新たに書き換えられたため不必要となったセクタがないかをチェックする(a)。消去可能なセクタが一つもなかったらメインルーチンに復帰し、一つでもあったら整理を行う。まず整理するブロック内のデータを整理バッファ51に退避し(b)、整理するブロックの消去を行う(c)。消去を行ったら図9の消去管理ルーチンに飛ぶがこれについては後で説明する(d)。そして整理バッファの中で必要なセクタだけを整理するブロックに復帰させる(e)。復帰したときのセクタの位置は、元々の場所に復帰させれば論理セクタテーブル45や物理セクタテーブル46を書き換える必要がない。また復帰の際にはそのブロックの若いセクタ番号から埋めていく方法を取ると、次の新しいセクタの書き込みがし易くなるが、論理セクタテーブル45と物理セクタテーブル46を書き換える必要がある。いずれの場合も書き込みセクタ数テーブルは復帰したセクタ数に書き換えることになる(f)。次に消去管理ルーチンについて説明する。図9は消去管理ルーチンのフローチャートであり、基本的には第1の実施例で説明したものと同様であるが、消去の管理がセクタではなくブロック単位に行う点が異なる。まず消去が行われたブロックの消去回数が一定数に達したか、をチェックし(a)、もし達していなければこのルーチンを脱出。達していたら(b)全ブロックの消去回数を検索し、消去回数が最小のブロックを捜しだす(c)。整理を行ったブロックと消去回数が最小のブロックが一致していなければこの2つのブロックのデータを入れ替える(d)。入替えには図5の整理データバッファ51を利用する。そして入替えを行ったブロックの入替えフラグを立てる(e)。消去回数カウンタをインクリメントするとともに論理セクタテーブル及び物理セクタテーブルを書き換える(f)。以上が本実施例における消去管理ルーチンの動作である。第1の実施例同様このルーチンにより、限られたブロックに消去が頻繁に起きたら消去回数の少ないブロックのデータと入替えをして、消去回数の平均化を図るものである。
以上が第2の実施例の動作説明である。本実施例によれば、消去ブロックが書き込むセクタの単位としては大き過ぎるときに、消去ブロックを分割して効率良く使える効果がある。
次に第3の実施例を図10、図11及び図12を用いて説明する。本実施例においてはメモリチップは第1の実施例と同様の図2の消去ブロックとセクタの容量が一致するものとするが、使用時は図10に示す構成をとる。図中91は複数のセクタよりなるブロックである。本実施例ではセクタと消去ブロックの単位が同一であるため本実施例のブロック91は複数の消去ブロックで構成されることになる。既出の他の番号は図2あるいは図6と同様のものである。ハードウエア構成は図11に示したものであり図中101はブロック91ごとの消去回数を記録した消去管理テーブルであり、詳細は後述するが結果的にブロック91内の消去回数の累計を記憶することになる。他は図1、図5と同様のものである。図12は本実施例の消去管理ルーチンのフローチャートであり、メインルーチンは図3と同様である。メインルーチンの動作は第1の実施例の説明に従うとして、メインルーチンから消去管理ルーチンに飛んでからの動作を図12により説明する。まず消去を行ったセクタを含むブロックの消去管理テーブルの回数カウンタを1インクリメント(a)。消去回数が規定値に達したかを判別し(b)、達していたら前ブロックの消去回数を調べて回数が最小で、かつまだデータの入替えを行っていないブロックを割り出し(c)、2つのブロックのデータを入替える(d)。そして入替えフラグを立てるとともに(e)、各テーブルの内容を書き換える(f)。本実施例の特徴はセクタ単位の消去ができるメモリにおいて消去管理を複数のセクタで行うことにより、消去管理の簡便化を図って、大きなファイルの書換えにおける待ち時間の節約と、消去管理テーブルの削減ができるという効果が期待できる。従って大容量の記憶装置で、消去管理をセクタごとに行うことが困難な場合に適応する。
ところでこれまで説明した実施例で構成要素となっていた論理セクタテーブル、物理セクタテーブルなどのテーブルについて説明を加える。フラッシュメモリは不揮発性のメモリであるため、当然のことながら本発明のシステムは非動作時には電源の供給を停止してもフラッシュメモリ内のデータが失われることはない。しかしながらいくらデータが保存されていても、テーブルの内容が失われると、どのセクタに何のデータが格納されているかがわからなくなり、フラッシュメモリ内のデータは正体不明の無意味なデータと化してしまう。そのためテーブルに格納されているデータも電源供給停止後に保存されている必要がある。ただしテーブル内の全てのデータを保存する必要はない。例えば論理セクタテーブルのデータは物理セクタテーブルのデータから容易に作成可能である。逆もまた可能であるのでつまりどちらか一方のデータが保存されていれば良いことになる。そこで物理セクタテーブルを電気的消去可能で書き込み可能な不揮発性メモリ(EEPROM)に記憶し、論理セクタテーブルは電源供給を開始するシステムの起動時に物理セクタテーブルより作成することとする。こうすると論理セクタテーブルは揮発性のメモリを使用できる。またこれと同様に各ブロックの使用セクタ数テーブルも物理セクタテーブルより作成可能であるため、システムの起動時に揮発性メモリに作成する。これらのテーブルはメインシステムの主メモリ上に展開することも可能である。その他のテーブルについては、消去管理テーブル、ステータステーブルがあるが、これらは他のテーブルからの作成は不可能であり、消去管理テーブルはデータが失われるべきでないためEEPROMに記憶する。ステータステーブルはもう一度書き込みや消去をしたときに得られるが、二度手間になるためEEPROMに記憶すべきである。しかしメモリの節約のため揮発性メモリに記憶することもできる。これらテーブルの記憶媒体としては同じメモリに格納してチップ数を減らすこともできる。例えば物理セクタテーブルと消去回数テーブルはどちらも不揮発性メモリに格納すべきであるため、同じEEPROMチップに格納してEEPROMは1チップだけにすることができる。またプロセッサをワンチップマイコンとした場合は、使用セクタ数テーブルなどの比較的小さなテーブルはワンチップマイコンに内蔵されているRAMコアに格納する。これらをまとめた第4の実施例の構成図を図13に示した。図中、111はRAM、ROMを内蔵したワンチップマイコン、112はワンチップマイコン内のRAMコア、113はワンチップマイコン内のROMコア、114はEEPROMチップ、115はSRAMまたはDRAM、以下既出の番号は、前述と同様のものである。RAMコア112には使用セクタ数テーブルを格納し、ROMコア113にはマイコンの制御プログラムを格納し、EEPROM114には物理セクタテーブル及び消去管理テーブルを格納し、RAM115には論理セクタテーブルを格納する。またRAM115の空き領域では図9で示した整理ルーチンを行う際の整理データバッファ、及び書き込みの高速化を図るライトバッファとしても用いることとする。このように本実施例によれば記憶媒体の特徴にあわせ、テーブル、バッファ類をまとめてチップ数の削減を図ることができる。これに対し、図24はEEPROMを省略した構成となる実施例である。これは第4の実施例で説明した不揮発性のテーブルデータをフラッシュメモリ1に格納することにより実現する。図中、116はフラッシュメモリ1内に設けたテーブル格納領域である。ただしフラッシュメモリはテーブルデータのような小さい単位のデータの更新には適さないため、フラッシュメモリ1にテーブルのデータを格納するのは電源遮断の直前とし、通常の使用状態においては揮発性のDRAMやSRAM115に格納するものとする。つまり本発明のシステムの電源を遮断する際に、RAM115の内容のうち必要なデータをフラッシュメモリ1に転送してから電源を遮断し、次に電源を投入した時にフラッシュメモリ1からRAM115にデータをロードしてから通常の動作を開始する。従ってフラッシュメモリにはテーブル格納用の記憶領域116を常に確保しておく必要がある。ただしこの格納位置を固定とする必要はない。固定としなかった場合はあらかじめテーブルを格納するアドレスを示す領域を設けておき、テーブルを格納したアドレスを常に記録しておくことにより、電源立ち上げ時にテーブルの位置をサーチする必要がなくなる。
またさらにフラッシュメモリ自体の構成における実施例を図14、図15、図16及び図23に示した。図14はフラッシュメモリチップ内に消去ブロック単位にデータ領域と異なるテーブル用の記憶領域を持たせたものであり、これに各ブロックごとの物理セクタテーブルや消去回数を書き込むことによりEEPROMを省略できる。図中、131は消去ブロック、132は消去ブロック131ごとに付加されるテーブル用の記憶領域である。消去ブロック131に対応するテーブル132に格納されたデータは消去ブロック131と同一のアドレスでアクセス可能とし、信号線による選択やモードの選択によりファイルデータとテーブルのデータを出し分ける。このようにするとデータ領域とテーブル領域の寿命が一致し、データ領域131が使用可能なのに、テーブルがこわれて使用不能に陥るということがなくなる。データ領域とテーブル領域が接近していればその傾向がさらに強くなる。そして消去ブロックごとにテーブルを構成するためアドレスラインの共有化が簡単に実現する。テーブル用の記憶領域132の一例を図23(a)に示した。図中、133は消去単位1ブロック全体を表し、134はブロック内のファイルデータ領域、135はそのブロックの論理番号を格納する領域で8ビットの記憶容量を持つ。136はそのブロックの状態を示すステータステーブルで16ビットの容量である。ステータステーブル136の内容は、消去回数管理テーブル、使用不能フラグ、入替え済みフラグ、訂正フラグ等が挙げられる。このステータステーブル136で余ったビットをブロック番号格納に用いることもできる。図23(b)はさらにエラー訂正領域を持たせたテーブル領域132の一例であり、137はエラー訂正個所を示す領域である。これは訂正能力に応じて記憶容量を設定することとする。たとえば1ワード16ビットのワード構成で、消去ブロックが512Bの構成のメモリチップに対してエラー訂正領域が8ビットであれば、1ワード訂正能力を持つ。つまり不良ビットの存在するワード番号をここに書き込んでおき、訂正データを他の領域に書き込んでおけば、読み出しの際にそのワードのデータを置き換えてしまうことにより実現する。訂正データ領域をこのテーブル内に持たせてもよいし、他の記憶領域にまとめておく方法もある。前者ではデータ訂正をテーブル内で全てまかなうことができるが1ブロックごとに訂正データ領域を持つこととなるためチップ全体で冗長領域が大きくなってしまう。後者では訂正データが書き込まれている領域を示す手段が必要になり、また他の記憶領域をアクセスするためアクセス時間が大きくなってしまうが、訂正データ数に応じて冗長記憶領域を大きくも小さくも設定できる。なお訂正データが書き込まれている領域の指定はステータステーブル領域136の余りビットを使用すると良い。また訂正データ領域の一例として図15を用いて説明する。図15はデータの記憶領域とは別に1バイトや1ワード等の細かい単位で書き込み消去ができるEEPROMタイプの記憶領域138を持たせたものであり、この領域を訂正データテーブルとして、訂正データを書き込んでおき訂正すべき個所のデータの読み出しの際に指定された位置のデータを読み出して置き換えることによりデータ訂正が実現する。また図15は、テーブル領域の構成を、対応するデータ領域の消去ブロックの付近に構成せず、一まとめにして同様の効果を狙った実施例と考えることもできる。この場合図内の構成要素は図14と同様であり、メモリセルの構成がチップ内で一まとめになるため、図14のメモリセルの構成より簡略化される効果がある。
また図16は別の構成のフラッシュメモリチップである。データの記憶領域141とは別に、データを一時的に保持するバッファ領域142をメモリチップ内に持たせたものであり、この部分は揮発性のメモリでもよい。143はクロック入力によりカウントアップするアドレスカウンタである。ライトアクセス時はライトデータをバッファ領域142に書き込み、アドレスを入力することにより複数のデータを一気にデータ領域141に転送し書き込めるようにする。このようなメモリを用いれば書き込みの高速化を図る外付けのライトバッファを省略できる。またリード時にも逆にデータ領域141からアドレスを入力することにより複数のデータを一度にバッファ領域142に転送できれば、リードアクセスも簡略化される。この場合バッファはシリアルアクセスメモリとして連続アドレスの入力が必要でなく、内部にアドレスカウンタ143を備え、クロックを入力すれば内部のアドレスカウンタがカウントアップし、連続した領域をアクセスしてデータを出力できるようにすればさらに使い勝手が良くなる。なおバッファ領域はセクタを1単位として構成するのが最も効果的であり、1単位分に限らず複数単位分構成するとバッファ効果を向上させることができる。例えば1セクタが消去ブロック単位であった場合、1セクタのデータを格納するバッファが1つ備えられていれば、1セクタの書き込み読み出しが一度に行われるようになるが、複数備わっていれば複数のセクタのデータの書き込みを受け入れることができ、また読み出しデータを用意することができる。そしてこのバッファを利用すれば外付けの整理バッファも省略できる効果がある。
次にこれまでの実施例で説明してきたフラッシュメモリを用いた記憶装置を情報処理システムに応用する実施例について説明する。図17はフラッシュメモリを用いた記憶装置(以下、フラッシュファイルシステムと称す)を情報処理システム(以下ホストと称す)と接続するためのインタフェース回路を説明する図であり、図中201はホストの外部I/Oバスであり、標準的なバスとしてはISA、EISA、マイクロチャネル、SCSIなどのバスが挙げられる。202は標準バスを専用バスに変換するためのバスバッファあるいはバスコントローラであるが、これが省略されるシステムも考えられる。これらに接続されているのはホスト側が自システム内の主記憶装置あるいは拡張主記憶装置、表示記憶装置等の記憶装置に記憶しきれないデータや電源遮断後も保持したいデータなどを記憶するために設置している外部記憶装置あるいは補助記憶装置である。フロッピディスクドライブ203、ハードディスクドライブ204等が一般的であるが、それに加えフラッシュファイルシステム205が接続されている。なおこれら全ての補助記憶装置がホストシステムに接続される必要はなく、ユーザが適宜選択して接続するものである。フラッシュファイルシステム205にはインタフェース回路206が付加されており、207はインタフェースレジスタ群、208はインタフェースレジスタ群の中のレジスタの一つであるコマンドレジスタ、209はインタフェースレジスタ群のアドレスデコード回路、210はコマンド割込み信号である。以下既出の番号はこれまでの説明で述べてきたものと同様のものである。ただしプログラムメモリ4に格納されているプログラムはこれまでの説明で述べてきたファイルデータの制御、管理に加え、ホストからのアクセス要求を中心としたコマンドへの対応のプログラムが格納されている。ホストはホストバス201を通して補助記憶装置にコマンドを出す。これはインタフェース回路206内のインタフェースレジスタ群207の一つであるコマンドレジスタ208にコマンドコードを書き込むことによって行なわれる。インタフェースレジスタ群207は、ハードディスクドライブがインタフェースレジスタとして持つレジスタを全て備え、またレジスタの仕様も一致し、ホストからはハードディスクをアクセスするのと何ら変わらないようにしている。なおこのレジスタをフロッピディスクドライブや光ディスクドライブ等、他の補助記憶装置のインタフェースに合わせることも有効であると考える。あるいは複数の補助記憶装置のインタフェースを同時にサポートし、ホストからは別の補助記憶装置を利用しているようにみえるが、実際には1台のフラッシュファイルシステムでまかなうというのはスペース的に非常に有効である。さてコマンドレジスタ208はホストによりコマンドを書き込まれると割込み信号210をプロセッサ3に対して発し、これを受けたプロセッサ3は書き込まれたコマンドコードを解釈して、ホストのコマンド要求に応える。なおインタフェースレジスタ群207やコマンドは全てハードディスクドライブに対応するものであるが、記憶媒体が異なるものであるため、不必要なものや処理が異なるものもある。例えばフォーマットは磁気ディスク装置には不可欠のものであるが、半導体ディスクドライブでは不必要であるため、特に処理を行なわないようにしたり、単に規則的なデータに書き換えたりといった処理にする。以下、ファイルデータのリードライトに関してはこれまでの実施例で説明したものと同様の動作とする。なお図は第1の実施例を適用しているが、これまで説明したあるいはこの後説明する他の実施例にそのまま適用することも可能である。
図18はフラッシュファイルシステムを補助記憶装置とするパーソナルコンピュータの一例の構成図である。図中、221は本情報機器のCPU、222はコプロセッサ、223は本実施例の情報処理システム内部に構築した標準I/Oバス、224は標準I/Oバス223を構築するバスユニット、225は主メモリや拡張メモリなど高速メモリをアクセスするメモリ制御ユニット、226は主メモリ、227は基本制御プログラムが格納されたBIOS ROM、228はキーボードコントローラでこの先にはキーボードが接続されているものとする。229は表示アダプタでこの先には何らかの表示装置が接続されているものとする。230は拡張メモリ、231はプリンタなどを接続するパラレルポートI/F、232はマウスやRS232CなどのシリアルポートI/F、233はフロッピディスクドライブ、234は標準I/Oバス223より標準のHDDI/Fに変換するバッファコントローラ、235はフラッシュファイルシステムである。このフラッシュファイルシステム235の内部は、これまでの実施例で示したものにより構成されており、236はファイルアクセスを受け付けてデータの受渡しを行なうI/Fユニットであり、図17におけるインタフェースレジスタ群207及びアドレスデコード209にあたる。237はフラッシュファイルシステム235内部のデータ管理や制御を行なうコントロールユニットであり、図17におけるプロセッサ3及びプログラムメモリ4、アクセスコントローラ2、ライトバッファ9よりなる。238はファイルデータを格納するフラッシュメモリアレイ、239はデータ及びメモリ管理のための情報を記憶するインフォメーションテーブルであり、図17におけるテーブル5、6、7、8を全て含むものである。次に動作を説明する。電源が投入されて動作を開始するとまずCPU221はBIOS ROM227を標準I/Oバス223を通してアクセスし、初期診断、初期設定を行なう。そして補助記憶装置からシステムプログラムを主メモリ226にロードする。本実施例では補助記憶装置としてフラッシュファイルシステム235を採用している。ただしCPU221は標準I/Oバス223を通してHDDコントローラ234にHDDをアクセスするものとして動作する。従ってフラッシュファイルシステム235は内部のI/Fユニット236によってHDD完全互換のI/F機能をサポートしている。システムプログラムのロードが終了すると、ユーザの処理要求に従い、処理を進めていく。なおユーザは標準I/Oバス223上のKBDC228や表示アダプタ229により処理の入出力を行ないながら作業を進める。そして必要に応じてパラレルI/F231、シリアルI/F232に接続された入出力装置を活用する。また本体上の主メモリ226では主記憶容量が不足する場合は、拡張RAM230により主記憶を補う。ユーザがファイルを読み書きしたい場合にはユーザはHDDが補助記憶装置であるものとして補助記憶装置へのアクセスを要求し、フラッシュファイルシステム235はそれを受けてファイルデータのアクセスを行なう。本実施例によれば標準的なパーソナルコンピュータの標準的なI/Oバス上に、現在最も一般的な補助記憶装置であるHDDを搭載しているかのように、フラッシュファイルシステムを採用している。従って新しい記憶媒体としてフラッシュファイルシステムを採用してもBIOS ROMやシステムプログラムをHDDを搭載していたものに対し変更を加えなくてもそのまま使用できる。なお上記実施例は標準的なパーソナルコンピュータを例にしており、主メモリや拡張メモリが標準I/Oバス上にあったり、コプロセッサやパラレルI/F、シリアルI/Fが存在しない構成の情報機器も考えられこれらに関しても本発明の適用が可能である。
次にフラッシュメモリの不良発生に対処する実施例について図19を用いて説明する。フラッシュメモリは原理的に書き換え回数に限界があることはすでに述べているが、書き換えによる劣化が進むとデータ消去書き込みの消費時間が長くなり、またデータの保持信頼性に問題が出てくる。そこでメモリの劣化により使用すべきでない状態に達した、と判断されたときにはその記憶領域あるいはメモリチップの使用を中止すべきである。そしてそのような領域が増え、フラッシュファイルシステム全体の寿命が近づいたと判断されたときには、そのフラッシュファイルシステムの使用を中止すべきである。フラッシュメモリの劣化を検出する方法としては、消去を繰返し行っても規定回数以内で消去が完全にならない、あるいは消去時間がある規定時間以上かかってしまう、という消去不良から判断する方法。そして書き込みを繰返し行っても規定回数以内で書き込みが完全にならない、という書き込み不良から判断する方法。また消去回数を管理して規定回数以上に達してしまったことから判断する方法が考えられる。そして劣化して使用不能に陥った記憶容量がある規定値に達したところでフラッシュファイルシステムとしての寿命と判断する。図19はそれをユーザに警告するための手段を実現する一実施例であり、図中240はフラッシュファイルシステム235内のコントローラが自システムの使用限界を認識し、これをホストシステムに伝えるための割込み信号であり、241は使用限界に達したことを示すエラー報告レジスタである。ホストはHDDバッファ234を通して割込み信号240を受けるとフラッシュファイルシステム内のレジスタ241をアクセスして状況を把握し、適宜ユーザに報告する。図20はこの動作を実現するソフトウェアをフローチャートで示したものであり、(1)はフラッシュファイルシステム内でのチェックルーチンのフローチャート、(2)はホストシステムでのユーザへの警告プログラムのフローチャートである。図の説明を兼ねながら動作説明を行なう。フラッシュファイルシステムのコントローラは使用限界に達したと見られる記憶領域が検出できたらこのルーチンにジャンプしてくる。そして使用限界の記憶領域の容量を加算していく(a)。そしてある限界値に達した場合(b)には、自システム内のエラー報告レジスタにエラー内容として使用限界に達したことを示す値を書き込む(c)。そしてホストへの割込み信号を出力して(d)、本ルーチンを終了する。なお(a)の容量の加算値はフラッシュメモリ内あるいは他のメモリに保持しておく必要がある。また(b)の残り容量の限界値はシステムに応じて適宜設定するものとする。さて(d)による割込み信号を受けたホストシステムでは、区切りの良いところで処理を中断し(2)のフローチャートで示したルーチンに入り、まずフラッシュファイルシステム内のエラー報告レジスタをアクセスし割込みを受けた理由を判別し(e)、これがフラッシュファイルシステムの使用限界に達したための使用中止要求であったら(f)、それ以後のフラッシュファイルシステムのアクセスを禁止し(g)、ユーザに警告する(h)。警告の方法としては、情報機器の表示装置を利用したり警告インジケータを取り付けるなど視覚的に訴える方法と、警告音を発するなどの聴覚的に訴える方法が考えられる。また、書き込みアクセスだけを禁止しリードアクセスは許可するようにするとファイルデータのバックアップがとれるようになる。本実施例によればフラッシュファイルシステムが使用限界に達したらすぐにユーザに知らせることができ、データの信頼性を増すことができる。別の実施例として図18における割込み信号240は設けずに、ホストシステムがアクセスの度にエラー報告レジスタを読み出すこととして、図20(2)のルーチンを実行する。本実施例によればホストシステムのハードウェア構成を従来と全く変えずに、HDDをそのまま置き換えて、使用限界報告ができる。また別の実施例としては、定期的に保守プログラムをホストシステムで実行し、その際にエラー報告レジスタ241を読み出して、使用限界に達していないかをチェックすることにより、使用限界を認識する。本実施例によればホストシステムのBIOSプログラムやシステムプログラムに全く変更を加える必要がない。
次に電源遮断時の処理に対応する実施例を示す。本発明のフラッシュファイルシステムは基本的に補助記憶装置であり、ホストシステムより電源を供給される構成が一般的である。しかし動作的にはホストとは非同期であるため、ホストが非動作中にもフラッシュファイルシステムが動作している場合もある。しかしホストを扱うユーザがそれを認識していないとホストの電源を落してしまい、動作中のフラッシュファイルシステムへの電源供給が停止してしまう、ということが起こり得る。そこでこれに対応する発明の実施例を図21に示す。図21はホストからの電源供給が停止した後も、フラッシュファイルシステムが動作を続けられるようバッテリでバックアップ電源を供給する構成のシステムの図であり、図中、251はホストとなるパーソナルコンピュータ等の情報機器、252はフラッシュファイルシステム、253はバックアップ用のバッテリ、254はホスト251の電源が遮断されたときに、バッテリ253の電力がホスト251に逆流しないための逆流遮断回路である。255はホスト251からの電源供給が絶たれたことを検出する検出回路、256はその出力である検出信号、257はバッテリ253のフラッシュファイルシステム252への電力供給を遮断する遮断回路、258はフラッシュファイルシステム252が処理途中であった処理を終了し、電源供給を必要としなくなったため遮断回路257を動作させる遮断信号である。ホスト251から電源が供給されている間は、ホスト251の電源によりフラッシュファイルシステムが駆動される。これはバッテリ253の出力電圧とホスト251の供給電圧をうまく調整することによりバッテリ253にトリクル充電を施すことができる。ただしバッテリ253が2次電池でない場合には流入防止のダイオードなどを付加する必要がある。そしてホスト251の電源が落されてフラッシュファイルシステム252への電力供給が停止されると、バッテリ253から電源が供給されてフラッシュファイルは動作を続けることができる。そして電源遮断検出回路255が電源遮断を検出すると、検出信号256によりフラッシュファイルシステムがこれを認識し、処理中の作業を完了させ、その後電源遮断処理を行う。電源遮断処理では最後に遮断信号258によりバッテリ遮断回路257を遮断させて、フラッシュファイルシステムの動作を終了する。なお逆流遮断回路254は逆流防止用ダイオードを用いる方法が挙げられる。本実施例によればホスト251はフラッシュファイルシステムと信号上は完全に分離しているため、ホストのアクセス要求によるデータのやりとりだけとなり、ホストの動作停止はホスト内で閉じることができる。つまりホストはフラッシュファイルシステムを接続したことによるハード上の変更の必要がない。
図22はホストの電源遮断に対応する別の実施例である。ただし図22の例では実際にはホストの電源による供給を続ける方式である。図中、258はホスト251からフラッシュファイルシステム252に供給される電源ライン、259はフラッシュファイルシステム252が作業中であり、電源供給の必要があることを示す電源ビジー信号である。ホスト251の電源回路は電源スイッチがOFFになっても電源ビジー信号259がアクティブの間は電源供給を停止せずに、フラッシュファイルシステムの処理が全て終了して電源ビジー信号259がインアクティブになったら電源供給を停止する。つまりユーザにとってはホストの情報機器の電源スイッチを切り、電源を遮断してしまったものとした時でも実動作上は遮断されずに、フラッシュファイルシステム252の作業終了を待機する。本実施例によればフラッシュファイルシステムの動作終了をホストが認識して電源を制御することにより、バックアップ電源などが必要なくフラッシュファイルシステムの電源回路の構成がシンプルになる効果がある。
次に本発明の第5の実施例を述べる。図25は本発明を実現するためのハードウエア構成であり、図26は本発明のフラッシュメモリ内の記憶構成を示した図であり、図27はデータ書き込みのためのフローチャートである。便宜上図26より説明する。図中、311は512バイト(4キロビット)を単位とする記憶領域で、実際にデータを書き込むセクタであるため物理セクタと呼ぶ。これに対し記憶データの供給側は、論理セクタと呼ぶ仮想のセクタによりデータを管理することとする。全ての物理セクタ311および論理セクタにはそれぞれ相関性の全くない番号を付す。312はデータを一括消去する単位となる消去ブロックであり、その容量はメモリにより異なる。例えば消去ブロック単位が16キロバイトであれば32物理セクタが1ブロックとなる。313はメモリチップであり、消去単位16キロバイトで4メガビットのチップであれば32ブロック1024セクタに区分けされる。チップ単位でしか消去できないものは1チップ1ブロック、物理セクタごとに消去できるものはブロック数と物理セクタ数は同一である。フラッシュメモリは消去が行われたブロックに対しては、そのブロック内においてランダムライトアクセスが可能である。ただし一回書き込んだら次の消去を行わなければ書き込みはできない。従って複数セクタを1ブロックとするメモリにおいては、各セクタが全て書き込まれてから消去すべきである。以下の説明においてはフラッシュメモリは4メガビットのチップで、消去ブロックが16キロバイト(128キロビット)のものを使用することとする。図26はまさにその構成のメモリを図示している。図25はこのメモリチップ313を用いた場合のハードウエア構成で、図中301は書き込みデータの記憶領域であるフラッシュメモリ、302はフラッシュメモリ301をアクセスするアクセスコントローラ、303は記憶データやステータスデータを操作するプロセッサ、304は記憶してある論理セクタ番号のデータがフラッシュメモリ301のどこの物理セクタに記憶されているかを参照するために物理セクタ番号が記録されている論理セクタテーブル、305はフラッシュメモリ301の物理セクタ311が記憶している論理セクタ番号を参照するための物理セクタテーブル、306は各ブロックのステータスを記憶するブロックテーブルで、そのブロックが使用可能であるか、あるいはそのブロックには何セクタ書き込まれているか、などが記録される。307はフラッシュメモリは書き込み速度が読みだしに比べ非常に遅いため、書き込みデータを一時的に保持してデータの供給側に速くバス権を復帰させるためのライトバッファである。308は後述の整理ルーチンにおいて整理データを一時的に保持する整理データバッファである。図27は図25の構成において書き込みを行うための図25のプロセッサ303の動作を説明するフローチャートである。以下このフローチャートに従って動作を説明する。書き込むデータを記憶する際は1セクタ=512バイト単位により行う。すなわち512バイトに満たないデータも512バイトの記憶領域に格納される。その1セクタ単位のデータに番号を付し、これを論理セクタ番号とする。データの供給側はこの論理セクタ番号だけを意識すればよいものとする。今、データ供給側が1セクタの書き込みを要求したとすると、このデータに、ある論理セクタ番号を付し、以後このデータは書替えが起こっても先の論理セクタ番号で扱われる。一方データの記憶側ではこのデータの格納場所を決定する。格納場所は書き込みポインタに指し示されたブロックの未書き込みの最初のセクタである。つまり一つ前の書き込みをした物理セクタの次のセクタである。例えば図26において一つ前の書き込みを第1ブロックの第3物理セクタに書き込んだ場合、次の書き込みは第1ブロックの第4物理セクタに書き込みを行うものとする。この際のデータの格納場所の判断をプロセッサ303がブロックテーブルをアクセスして行う。この作業がフロチャート内の(a)である。(b)は書き込みに問題ない場合はそのブロックの書き込みセクタ数をインクリメントしてデータを書き込む。実際のライトアクセス制御はアクセスコントローラ302により行う。そして書き込み後は物理セクタテーブルおよび論理セクタテーブルに書き込んだセクタ番号をそれぞれ記録する。また以前に書き込んでいる論理セクタの再書き込みであれば、物理セクタテーブルに以前書き込んだ論理セクタ番号を消去する。これはその物理セクタのデータは無効であることを示すための動作である。(c)の整理ルーチンとは書き込みポインタの指し示すブロックがすでに全セクタ書き込まれており、書き込み不可能である時の動作ルーチンである。これは後述の図28のフローチャートにより説明する。(d)はブロックがこわれていたり、整理ルーチンに入った場合には書き込みが不可能であるため、そのブロックへの書き込みを中止し、次のブロックへの書き込みを行うための動作である。一方リードアクセスの際は必要なデータが格納されている論理セクタ番号で論理セクタテーブルを参照し、物理セクタ番号を割り出して必要なデータを読み出す。次に整理ルーチンについて説明する。整理ルーチンが必要となる理由は、これまで説明した書き込み方法では同じファイルのデータの書き替えにおいて別の物理セクタへ書き込みを行う。すなわち書き替える前に書き込んだデータは不要となるがメモリ上には記憶されたままであり消去すべきデータである。しかし不要となるたびに消去していたのでは消去回数が有限であるフラッシュメモリにとっては寿命を短くすることになる。そこで整理ルーチンによって消去する。整理ルーチンはブロックが書き込みデータで一杯になったときに行う。整理の具体的な方法は、図28のフローチャートに従って行う。以下フローチャート内の各部の説明をする。(a)整理するブロック内の全データを一度図25の整理データバッファ308に退避する。(b)退避し消去可能になったところでそのブロックを消去する。(c)整理データバッファにある各セクタの物理セクタテーブルを参照して、データが必要か不必要かを判断する。(d)必要なデータであれば再びそのブロックに書き込む。以上が本発明の一実施例の動作説明である。本実施例によればフラッシュメモリの各消去ブロックの消去が一部に集中せずに順番に行われるため、寿命が延びるという効果が期待できる。また書き込みにおいてフラッシュメモリの書き込み速度が遅いという欠点を補う効果がある。また不必要なデータを効率的に消去するため、半導体ディスクとして常に記憶容量を保っていられる効果がある。
次に他の実施例を説明する。図29はフラッシュメモリの劣化を判定する装置の1構成例であり、図中401はフラッシュメモリセル、402は消去制御の開始から終了するまでの時間を測定する消去時間測定タイマ、403はフラッシュメモリセル401に書き込まれているデータを消去するための制御を行う消去制御回路、404はフラッシュメモリセル401の劣化度を記憶する劣化度管理テーブル、405はこれらを統括制御するコントローラ、406は劣化管理コントローラ405が消去制御回路403に消去を開始させる際に消去時間測定タイマ402を同時に起動するための起動信号、407は消去制御回路403が消去処理の終了を消去時間測定タイマ402に知らせる終了信号、408は消去時間測定タイマが測定した測定データである。図30は図29のコントローラ405の動作を説明するフローチャートであり、フラッシュメモリの劣化の判定をこのフローチャートに従って行う。次に動作を図29、図30を用いて説明する。まずシステム全体の制御からあるメモリセル401に消去の動作が必要になったとき、コントローラ405が消去要求を受ける(図30a)。するとコントローラ405は消去制御回路403に消去箇所と消去動作の開始を指示する(図30b)。これを受けた消去制御回路403は該当するメモリセル401の消去動作を開始する(図30c)。これと同時にコントローラ405は消去時間測定タイマ402を起動する(図30d)。コントローラ405は消去終了まで待機し、メモリ制御回路403がメモリセル401の消去を完了すると、コントローラ405にそれを伝える(図30e)。コントローラ405は消去時間測定タイマ402を参照して消去に費やした時間を認識し、劣化の度合いを判別してそれに応じた番号をその記憶領域に付す。例えば劣化の度合いを8段階に分け、未使用状態と同様な消去時間であれば"0"、劣化が進んで使用不可能な状態を"7"としその間の段階を"1"から"6"の番号をあてる。そしてその記憶領域に付した番号を劣化度管理テーブル404に格納する(図30f)。劣化度を8段階にすることにより、一つの記憶領域を1バイトに割り当てられ、管理がし易くなる。各記憶領域の扱いは、この劣化度管理テーブルをもとにする。劣化度が一つ進んでしまった領域はその都度劣化の小さい領域のデータを転送して劣化の進行をとめ、全記憶領域の劣化の平均化を図る。また劣化が最終段階に達した領域は使用を禁止する。これは記憶システム全体を統括して制御するコントローラが行う処理である。この記憶システムのコントローラの動作フローを図31に示した。同図を追って順に説明すると、ホストシステムから記憶システムにライトアクセス要求があり、データの書き込みを行う際に記憶システムのコントローラが消去動作を必要とすると判断したら(図31a)、図29のコントローラ405に消去と劣化管理の要求を出す(図31b)。消去動作が終了すると、消去を行った記憶領域の劣化度を図29の劣化度管理テーブル404により参照し(図31b)、劣化が進んでいた場合は劣化が最も進んでおらず、かつ入替えをまだ行っていない領域を探し出して(図31c)、データを転送して入替えを行う(図31d)。この劣化が最も進んでおらず、かつ入替えをまだ行っていないという判断は、第1の実施例で説明した入換えフラグを利用した方が効率的である。これは一度上記入替え処理を行った領域は、格納されているデータが劣化の進まないデータ(書換えが起きにくいデータ)ではないため、劣化平均化の入換えに使用すべきではなく、入換えフラグを立てて明示する。なお本実施例では記憶システム全体の制御と劣化判定の装置における制御を分け、コントローラを別のものにしているが、コントローラ405を記憶システムのコントローラと共用しても良い。また消去時間測定タイマ402もハードウェアとして構成されているが、コントローラによるソフト制御による消去時間測定でもよい。記憶システムの部品点数削減を目指すならこれらはなすべきことである。本実施例によれば劣化管理のためのテーブルをこれまでの実施例で採用していた消去管理テーブルに変えることができ、使用する記憶領域を飛躍的に節約することができる。しかもメモリの劣化という判定においては消去回数よりも消去時間の方がより直接的な判定材料となるため、より正確な劣化度の把握と、劣化の平均化が図れる効果がある。
次に図24の実施例を利用した消去回数管理の別の実施例を図32により説明する。これまでの実施例における消去回数管理の方法は、消去が行われると1回ずつカウントアップして消去回数を細かく把握していたが、本実施例では消去回数管理テーブルの記憶容量削減のため下位のビットを切り捨ててしまう。図24の実施例では通常の使用状態においては消去回数をSRAMやDRAMなどの揮発性メモリに最下位ビットまで格納し、電源遮断時にフラッシュメモリに転送することとしていたが、この転送時に下位のビットから1ビット以上を切り捨てる(図32a)。あるいは桁上げして転送する(図32b)。なお捨ててしまう下位のビットは、消去回数の把握による劣化の認識が確度を失わない程度として、フラッシュメモリの消去回数の制限値により最適値を考えるべきであり、ビット切捨てにより切り捨てられてしまう消去回数の最大値がフラッシュメモリの消去回数の保証値の1%を越えない程度とする。つまり消去回数の保証値が1万回であれば、100回を越えない6ビット(最大値63)を切捨ての限度とする。本実施例によれば消去回数の把握が正確でなくなるが、誤差はフラッシュメモリの消去回数の保証値の1%以下としたため、もともと保証値の確度が一桁程度の幅があることから、消去が起きる傾向が強いデータか否かを判断するものであると考えれば、本質的な問題とはならない。これにより消去回数の管理に使用するフラッシュメモリの容量を削減することができる効果は大きい。
次にテーブル領域を削減するための他の実施例を説明する。図33はこれまでの実施例で説明している物理セクタテーブル及び論理セクタテーブルを省略した記憶システムの構成図である。ただしこれらの代わりになるアドレス変換テーブル411を備える。他の既出の番号はアドレス変換テーブル411は劣化度平均化のためのデータ入替えを行っていない記憶領域のアドレス入力に対しては変換を行わず、データ入替えを行っている記憶領域のアドレス入力に対しては、入れ替えた先のアドレスを出力するテーブルである。従って物理セクタテーブルや論理セクタテーブルを必要とせず、基本的にはシステムからアクセス要求のあったアドレスをそのままメモリ上の物理的なアドレスに対応してアクセスし、その領域の劣化が進んで劣化度の平均化のためのデータの入替えを行ったら、アドレス変換の対象となる。本実施例は第1に実施例のような、ファイルデータの記憶単位(セクタ)と消去単位が一致している場合にだけ適用できる。そしてアドレス変換テーブルの容量は変換可能にできる領域の容量に依存する。すなわちアドレス変換テーブルの容量を小さくすれば変換を行える記憶容量が小さくなり、大きな領域を確保すれば多くの領域のアドレスを変換できるようになる。これはシステムの寿命に直接関与する要因である。なお図33は第1の実施例に改良を加えた形となっているが、消去管理テーブル7の代わりに図29により説明した劣化度管理テーブルを備えた実施例にも適用できる。本実施例によれば、データ管理が簡素化され、またテーブル領域を大きく削減できる効果がある。
次に動作中を示すインジケータを設ける実施例を説明する。図34は本実施例を示した内部構成例を示した図であり、図17をもとにしており既出の番号は図17と同様のものである。その他図中421はライトバッファ9からフラッシュメモリ1へのデータの転送中を示すプロセッサ3の出力ポート信号、422は出力ポート信号421により転送中であることを発光により示すインジケータである。インジケータとしては発光ダイオードが適当である。図35は本実施例の外観図であり、(1)はカード形状の全体図、(2)は使用中の例を示した図である。図中423は本発明の補助記憶装置であるICカード、424はコネクタ、425は発光ダイオード、426はホストパソコンである。図34において標準IOバス201によりホストのパソコンが補助記憶装置205に書き込みアクセス処理の要求をして来ると、プロセッサ3はライトデータをライトバッファ9に格納するよう処理する。そしてそれが完了すると標準バス201に書き込み完了を示す信号を出力する。その後、プロセッサ3はライトバッファ9に格納されたデータをフラッシュメモリ1に転送、格納する。この処理を行っている間プロセッサ3は出力ポート信号421をアクティブにしてインジケータ422を発光させる。そしてライトバッファ9からフラッシュメモリ1への転送が終了したらプロセッサ3は出力ポート421をインアクティブにしてインジケータ425の発光を停止する。図35(1)はICカード形状で適用した例で、コネクタとは反対側の側面にインジケータ425を取付け、パソコン本体に取り付けた状態でインジケータ425の点灯が確認できるようにしている。(2)はノート型パソコンに実際に挿入した様子を示しており、ユーザはインジケータ425の点灯、非点灯を確認しながら作業ができる。ただしユーザが点灯を確認しなければならないのは基本的に電源を遮断するときだけである。本実施例によれば、回路構成が比較的単純であり、またインジケータの視認性が良くユーザの誤操作が防げる効果がある。
本発明における第1の実施例のハードウエア構成図。
本発明における第1の実施例のフラッシュメモリチップの記憶構成図。
本発明における第1の実施例の動作を示すメインルーチンのフローチャート
本発明における第1の実施例の消去管理動作を示す消去管理ルーチンのフローチャート
本発明における第2の実施例のハードウエア構成図。
本発明における第2の実施例のフラッシュメモリチップの記憶構成図。
本発明における第2の実施例の動作を示すメインルーチンのフローチャート
本発明における第2の実施例のセクタ整理動作を示す整理ルーチンのフローチャート
本発明における第2の実施例の消去管理動作を示す消去管理ルーチンのフローチャート
本発明における第3の実施例のハードウエア構成図。
本発明における第3の実施例のフラッシュメモリチップの記憶構成図。
本発明における第3の実施例の消去管理動作を示す消去管理ルーチンのフローチャート
本発明における第4の発明のハードウエア構成図
消去ブロックごとにテーブルを持たせたフラッシュメモリチップの構成図
データ領域とは別に情報を格納する領域を持たせたフラッシュメモリチップの構成図
データ領域とは別にバッファ領域をもたせたフラッシュメモリチップの構成図
本発明における第4の実施例のフラッシュファイルシステムのインターフェース部分のハードウエア構成図。
本発明における第4の実施例のフラッシュファイルシステムを補助記憶装置とする情報機器の構成図。
本発明における使用限界を報告する実施例の構成図
本発明における使用限界を報告する実施例のフローチャート
本発明におけるバックアップ電池を備えた実施例の構成図
本発明における電源制御信号を備えた実施例の構成図
データ領域とは別に情報格納領域をもたせたフラッシュメモリのデータ格納の実施例
図13に対しEEPROMを省略した実施例の構成図
本発明における第5の実施例のハードウエア構成図
本発明における第5の実施例のフラッシュメモリチップの記憶構成図
本発明における第5の実施例の動作を示すメインルーチンのフローチャート
本発明における第5の実施例のセクタ整理動作を示す整理ルーチンのフローチャート
時間による劣化の管理によりシステムの長寿命化を図る実施例の構成図
図29の実施例における劣化管理コントローラの動作フロー
図29の実施例における記憶システムコントローラの動作フロー
消去管理テーブルの記憶容量を節減する実施例の説明図
セクタの管理テーブルの記憶容量を節減するためにアドレス変換テーブルを採用した実施例の構成図
補助記憶装置の動作中を示すインジケータを設けた実施例の構成図
補助記憶装置の動作中を示すインジケータを設けた実施例の外観図
符号の説明
1 フラッシュメモリ
3 プロセッサ
5 論理セクタテーブル
6 物理セクタテーブル
7 消去回数管理テーブル
8 ステータステーブル
9 ライトバッファ
13 消去ブロック
49 書き込みセクタ数テーブル
51 整理バッファ
52 物理セクタ
111 ワンチップマイコン
112 RAMコア
113 ROMコア
114 EEPROM
115 DRAMまたはSRAM
116 テーブル領域
132 テーブル格納領域
142 バッファ領域
143 アドレスカウンタ
207 I/Fレジスタ群
227 BIOSROM
236 I/Fユニット
241 エラー報告レジスタ
253 バックアップバッテリ
259 電源ビジー信号
402 消去時間測定タイマ
404 劣化度管理テーブル
411 アドレス変換テーブル
421 出力ポート信号
422 インジケータ
425 インジケータ(外観)