(57)【特許請求の範囲】
【請求項１】
メモリ管理方法において、
不揮発性メモリへ書き込みを行い若しくは消去を行う命令を受け取るまで、不揮発性メモリの命令を実行する段階と、
不揮発性メモリへ書き込みを行い若しくは消去を行う命令を受け取ったときに、揮発性メモリにおける命令の実行と不揮発性メモリにおける書き込み若しくは消去命令の実行を開始する段階と、
インタラプト信号を受け取ったときに、前記不揮発性メモリが書き込み若しくは消去動作を受けているかどうかを判断し、それに応じてインタラプトに応じる段階と、
前記インタラプトに応じたとき、適当ならば、前記書き込み若しくは消去動作を再開する段階と、
前記書き込み若しくは消去が一旦完了したら、前記不揮発性メモリにおける命令の実行を再び開始する段階と、を備え、
前記方法は、更に、書き込み命令を受け取ったときに、前記不揮発性メモリへの電子信号の書き込みのために書き込みの特性を判断し、該書き込みの特性にしたがって前記インタラプトに応じるのを遅らせることを特徴とする方法。
【請求項２】
請求項１記載の方法において、前記書き込みの特性は、前記不揮発性メモリへの前記電子信号の書き込みのための期間であり、前記方法は、該期間が所定期間よりも短い場合には、前記期間の間、前記インタラプトに応じるのを遅らせる方法。
【請求項３】
請求項１記載の方法において、前記書き込みの特性は、前記書き込みにおける休止であり、前記方法は、更に、
前記書き込み中に休止が存在するのを検出する段階と、
前記休止の発生に関して前記インタラプトに応じるのを遅らせる段階と、
前記休止中前記書き込みを禁止する段階と、
前記書き込みが禁止されている間に前記インタラプトに応じる段階と、
を備える方法。
【請求項４】
請求項３記載の方法において、前記書き込みは、第１と第２グループの電子信号を表わす複数のデータの書き込みを備え、前記休止は前記第１グループの書き込みと前記第２グループの書き込みとの間に生じる方法。
【請求項５】
請求項４記載の方法において、前記電子信号のグループはデジタルワードを表わす方法。
【請求項６】
請求項１記載の方法において、前記不揮発性メモリ手段の消去動作中に、前記方法は更に、前記消去動作を禁止して該消去動作の禁止中に前記インタラプトに応じることを備える方法。
【請求項７】
電子装置において、
揮発性メモリ、不揮発性メモリ、制御回路とを備え、
前記制御回路は、不揮発性メモリへ書き込みを行い消去を行う命令を受け取るまで、該不揮発性メモリの命令を実行するようにされており、
不揮発性メモリへ書き込みを行い若しくは消去を行う命令を受け取ったときに、前記制御回路は、揮発性メモリにおける命令を実行させ、且つ、不揮発性メモリにおける書き込み若しくは消去命令を実行させるようにされており、
インタラプト信号を受け取ったときに、前記制御回路は、前記不揮発性メモリが書き込み若しくは消去動作を受けているかどうかを判断し、これに従ってインタラプトに応じるようにされており、
前記インタラプトに応じたとき、適当ならば、前記制御回路は、前記不揮発性メモリ手段による前記書き込み若しくは消去動作を再開させるようになっており、
前記書き込み若しくは消去が一旦完了したら、前記制御回路は、前記不揮発性メモリにおける命令の実行を再び開始させるようになっており、
前記制御回路は、更に、書き込み命令を受け取ったときに、前記不揮発性メモリへの電子信号の書き込みのために書き込みの特性を判断し、該書き込みの特性にしたがって前記インタラプトに応じるのを遅らせる装置。
【請求項８】
請求項１記載の方法に従って動作するようにプログラムされたコンピュータプロセッサによるメモリ管理のための電子装置。
【請求項９】
請求項１記載の方法に従って動作するプログラムを記録した、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリ装置及びその装置の動作方法に関する。限定するわけではないが、特に、本発明はフラッシュメモリとして知られるメモリ装置に関する。
【０００２】
【従来の技術】
半導体もしくは固体メモリ装置は電子信号もしくは電荷を備えており、それらの電子信号もしくは電荷は、メモリ装置に記憶される必要があるデータを表すように配置されている。電子信号を維持するのに電力を供給しなければならない（時にはリフレッシュすると称す）メモリ装置は、揮発性メモリとして知られている。電子信号を維持するのに電力を必要としないメモリ装置は不揮発性メモリとして知られている。不揮発性メモリの初期のタイプは読み出し専用メモリ（ＲＯＭ）として知られており、ＲＯＭにはデータを表す電子信号もしくは電荷がＲＯＭを製造する時点でつくられ、その後、装置が作動した時に電子信号によって表されるデータが読み出された。ユーザがＲＯＭにプログラムしたりＲＯＭに記憶されたデータを電気的に消去して他のデータに置き換える機能は電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）を用いれば可能である。
【０００３】
データの入出力及びアドレス指定がシリアル形式なのでＥＥＰＲＯＭのプログラム作成には比較的時間がかかる。加えてＥＥＰＲＯＭのプログラム作成時は特別に「高い」電圧が必要となる。しかしながら、携帯電子装置の使用中にユーザもしくはシステムパラメータが変更され、その携帯電子装置が動作する次回の使用のために携帯電子装置が電源を切られる時にパラメータが保存されている必要がある携帯電子装置にＥＥＰＲＯＭは特に有益である。このような携帯電子装置は例えば無線電話で、そのパラメータは例えば通話回数／時間、最新通話スタック、ユーザインターフェース用のユーザ設定そしてユーザ名とユーザ番号のメモリのためのパラメータである。このような使用は「１回書き込み／多数回読み出し」タイプのアプリケーションと呼ばれており、使用時に比較的時間を要し、また再プログラミング時に高電力を消費することは携帯電池式装置へのＥＥＰＲＯＭの使用に不都合ではない。
【０００４】
しかしながら、一般的にＥＥＰＲＯＭは８キロバイトもしくは１６キロバイトといった比較的小さなメモリサイズでのみ使用可能であり、それ以上のサイズになると非常に高価になってしまう。ますます多くの低電力消費で携帯電子装置用の不揮発性メモリ領域が必要とされるにつれて、ＥＥＰＲＯＭの代案が必要とされる。このような代案はいわゆるフラッシュメモリで、高記憶密度で使用可能であり、例えば１６や３２メガビット装置が商用的に使用可能である。
並列のアドレス指定及びデータフォーマットを用いているので、フラッシュメモリはＥＥＰＲＯＭよりも早い。加えて、フラッシュメモリはＥＥＰＲＯＭよりも待機電力消費が小さい。フラッシュメモリは、通常４キロ、８キロ、１６キロ等の倍数のバイト単位であるブロック単位に消去する。一度に１ブロックを消去することによりフラッシュメモリの再プログラミングはＥＥＰＲＯＭの再プログラミングよりも早くなり、それが「フラッシュ」の語源になっている。それでもやはり、１ブロック消去には比較的時間がかかり、一般的に８キロバイトの１ブロックには０．５秒かかる。
【０００５】
ブロック専用消去機能は「リンクリスト」データ構造を記憶するために用いられているフラッシュメモリである。このような構造はインテル社のスマートヴォルテージブートブロックフラッシュメモリファミリー用の「インテルコーポレーションアプリケーリョンノート  ＡＰ−６０４  」に記述されている。これらのフラッシュメモリ装置には変わるデータを記憶するための２  つのいわゆるパラメータブロックが与えられる。いずれの場合もある一時にはパラメータブロックの一方だけが使用される。各データレコードはパラメータ値及びそのパラメータの次のレコードへのポインターを備える。もしあるレコードのパラメータが最新の値ならばそのポインターは「空」であるかもしくはそのパラメータのさらなるデータはないということを示すＦＦＨのような値を与えられる。パラメータ値が更新されると先の最新値のポインターは「空」から新しいパラメータ値が記憶されるレコードのアドレスに変更される。新しいレコードはそのレコード中に記憶される新しい値と「空」ポインターを持つ。
【０００６】
最新パラメータブロックが一杯になるまでパラメータ値はリンクリスト構造に記憶される。この段階に達すると、各パラメータの最新値は第２のパラメータブロック（現時点では最新パラメータブロックである）に記憶され、リンクリスト構造は新しい最新ブロックに続く。その後、元の最新パラメータブロックは消去される。
【０００７】
【発明が解決しようとする課題】
しかしながら、フラッシュメモリはＥＥＰＲＯＭ及び同種のものに関連するいくつかの問題や欠点の解決を提示しているけれども、フラッシュメモリにはそれ自身の欠点もある。消去サイクル中はそのブロックが消去されているかどうかに関わらずどのブロックからも読み出すことができない。このことはＥＥＰＲＯＭ以上の深刻な欠点である。ＥＥＰＲＯＭではどの個々のバイトについてもデータを読み書きできる。加えて、性能低下が起こる前のフラッシュメモリの消去サイクル数は約１００、０００消去サイクルが限界であり、それはＥＥＰＲＯＭの限界よりも非常に少ない。
本発明の目的はフラッシュメモリに関して起こる問題もしくは欠点の少なくとも一つを改善することである。
【０００８】
【課題を解決するための手段】
本発明の第１の特徴の実施例はメモリ管理方法であり、メモリ手段を使用する要求を認知する段階と、記憶している電子信号の変更を受けているメモリ手段を検出する段階と、メモリ手段に記憶された電子信号の変更の種類に応じて前記の要求に応じる段階とを備える。
本発明の実施例の有利な点は、何らかのインタラプトが対応を要求しているかどうかを調べ、定期的にメモリ動作を停止してしまうのを取り除くことである。中央演算装置（ＣＰＵ）を制御回路として使用する実施例については、これによりＣＰＵ時間が節約され、ＣＰＵの使用が改善される。
前記の変更はメモリ手段への電子信号の書き込みであり、メモリ管理方法は更にこの電子信号の書き込み期間を決定するのが好ましい。
【０００９】
一般的にメモリ管理方法は更に所定期間よりも短い前記書き込み期間、前記の要求に対応するのを遅らせる。
前記方法は更に前記書き込み中に休止が存在するのを検出する段階と、その休止の発生まで前記の要求への対応を遅らせる段階と、その休止中前記書き込みを禁止する段階と、前記書き込みが禁止されている間に前記の要求に対応する段階とを備えるのが適切である。
任意で、前記の書き込みは、第１と第２のグループの電子信号を含む複数の電子信号の書き込み段階を含み、そして休止は第１のグループの書き込みと第２のグループの書き込みとの間で生じ、前記電子信号のグループはデジタル・ワードを表している。
【００１０】
このような休止は普通のもしくは当然の休止か、もしくはメモリへのワード書き込みとワード書き込みの間のすき間である。
有利なことに、電子信号の前記の変更はメモリ手段の消去動作を含んでおり、メモリ管理方法は消去動作を禁止する段階と、消去動作を禁止している間に要求に応じ、メモリの動作停止を避け、他の装置にメモリを使用する要求があるかどうかを問い合わせる段階とを備える。
一般的に前記の要求はインタラプト要求である。
本発明の第２の特徴はメモリ手段と制御回路とを備える電子装置であり、制御回路はメモリ手段に記憶された電子信号の変更を検出し、その変更の種類に応じてメモリ手段を使用する要求に応ずるように適応される。
【００１１】
本発明の第３の特徴は前記のいずれかの方法に従ってプログラムされたコンピュータプロセッサによるメモリ管理のための電子装置である。
本発明の第４の特徴は前記の全ての方法に従う器械による読解可能な命令を記憶するための記憶媒体である。
【００１２】
【発明の実施例】
１９９５年１１月に発行されたアプリケーション・ノートＡＰ−６０４にインテル・コーポレーションの４メガビット、スマートヴォルテージブートブロックフラッシュメモリが説明されている。このインテルの４メガビットフラッシュメモリを図１に示す。インテルの４メガビットフラッシュメモリ１００はブロックに分けられており、各ブロックは固定アドレス・レンジを有している。ブロック１０２、１０４そして１０６はいずれもアドレス０００００Ｈと３００００Ｈとの間に広がっている１２８キロバイトのブロックである。更に、９６キロバイトのブロック１０８があって、これはアドレス３００００Ｈと３ＢＦＦＦＨとの間に広がっている。フラッシュメモリブロック１０２、１０４、１０６、１０８はメインメモリブロックを構成し、フラッシュメモリ１００の使用中変更することのないもしくは変更されそうにないデータもしくは情報を記憶するのに使用するのが典型である。そのようなデータもしくは情報とはごくたまにソフトウェアのアップグレードもしくは更新が必要となる装置の操作プログラムやアプリケーションソフトウエアである。インテルの４メガバイトフラッシュメモリは８キロバイトのパラメータブロック１１０と１１２も含んでいる。パラメータブロックＩ（１１０）はアドレス３Ｃ０００Ｈと３ＣＦＦＦＨとの間に広がっており、そしてパラメータブロックＩＩ（１１２）はアドレス３Ｄ０００Ｈと３ＤＦＦＦＨとの間に広がっている。パラメータブロックＩとＩＩは、フラッシュメモリ１００の作動中更新されるのが当然であるデータを記憶するために割り当てられているフラッシュメモリのブロックである。例えば、それらのデータは、フラッシュメモリ１００を設置した電子装置の作動に関連するパラメータである。もしその電子装置が例えば携帯無線電話であると、その情報とはユーザーのインターフエースのセットアップ、ユーザー個人の電話帳もしくは使用中変わる無線電話のパラメータに関連しており、無線電話の電源を切っている間、保持されなければならない。最終のメモリブロック１１４はコードブロックであり、例えば電子装置のオペレーティングシステムを初期化し、そしてアプリケーションコードの破局的な故障の際システムを回復させるのに必要なソフトウエアを記憶するのに適切に割り当てている。更に、コードブロック１１４は通常フラッシュメモリをプログラムし、そして消去するのに必要なコードを記憶する。コードブロック１１４はブートブロックとしばしば称され、そしてアドレスが３Ｅ０００Ｈから３ＦＦＦＦＨまでのメモリの最高領域を占めている。
【００１３】
他の半導体メモリと同じように、フラッシュメモリは電子信号としてデータを記憶する。データはバイナリ情報として記憶され、すなわちその情報もしくは記憶されたデータは「１」もしくは「０」のどちらかを表している。フラッシュメモリの特性は、「１」を「０」に変えることによりフラッシュメモリに情報を書き込む（もしくはプログラムする）ことができるだけであるということである。従ってすべてのメモリ位置を「１」で埋めることにより書き込み（もしくは、プログラミング）ができるようフラッシュメモリを初期化する。フラッシュメモリを消すときは「０」を「１」に変える。更に、フラッシュメモリの特徴は、消去プロセスがブロック単位で実施されることにある。図１を参照する。消去プロセスもしくはサイクルは１０２〜１１４のブロック内の一つで生じることとなろう。ブロック内で情報を選択的に消去することはできない。そのブロック内の総ての情報を消さなければならないからである。ブロック消去はその一ブロック内の情報を消去するだけであって、他の総てのブロックは影響を受けることはない。消去サイクルの典型的な定義は、消去操作の後に書き込みもしくはプログラミング操作が続く、もしくは書き込みもしくはプログラミング操作の後に消去操作が続くである。最初、データを読み出そうとする場所をアドレス指定し、それからそのデータを読み出すという比較的普通の方法でフラッシュメモリからの読み出し操作は実施される。インテルの４メガバイト、スマートヴォルテージブートブロックフラッシュメモリの特徴として、５ボルト電源で作動しているとき標準温度範囲では１００、０００消去サイクルにわたって作動し、広い温度範囲ではわずか１０、０００消去サイクルにわたってだけ作動することとなっている。規定サイクル数のこの上限はある形式の電子装置にこのフラッシュメモリを使用したときの限界である。
【００１４】
図２を参照する。このブロック図に示すマイクロ・コントローラ２００は複数の集合搭載機能ユニットを有する。マイクロ・コントローラ２００はＣＰＵ２０２、フラッシュメモリ２０４、ランダムアクセスメモリ（ＲＡＭ）２０６、入出力ドライバー２０８、そしてデジタル信号プロセッサ（ＤＳＰ）２１０を備える。ＣＰＵ２０２は、そのようなプロセッサに関連した通常の機能を有する普通のプロセッサユニットであり、マイクロ・コントローラ２００の他の機能ユニットと相互的に作動し、そしてマイクロ・コントローラ２００と組み合わされた電子装置からマイクロ・コントローラ２００へ加えられる信号で作動する。入出力ドライバー２０８は、マイクロ・コントローラ２００に搭載の個別の機能ユニット間でのデータの転送を扱い、そしてマイクロ・コントローラ２００のユニットと外部電子装置との間でのデータの流れを扱う。集合が大きくなるにつれて、マイクロ・コントローラに搭載の機能ユニットは精緻なものとなっていくのが普通であり、例えばＤＳＰ２１０は無線電話におけるボコーディング機能を果たすよう適切にプログラムされている。一般的にマイクロ・コントローラ２００はまた様々な形式のメモリを搭載している。フラッシュメモリ２０４は不揮発性メモリ手段であって、ＥＥＰＲＯＭの代わりとしてしばしば使用され、ＥＥＰＲＯＭに匹敵する。ＲＡＭ２０６は揮発性メモリ手段であって、通常スクラッチパッドメモリのような機能を果たすか、もしくはＣＰＵで作動しているソフトウエアと関連して使用する。
【００１５】
一般的にフラッシュメモリ２０４は、ＣＰＵ２０２がフラッシュメモリ２０４の書き込みと消去とを行うための命令をメモリブロック１１４に記憶している。しかしながら、フラッシュメモリの一つの場所からの読み出しは、そのフラッシュメモリの中の別の場所への書き込みを行っているときにはできないので、フラッシュメモリへの書き込み命令は全てＲＡＭ２０６に先ず一時的に記憶されてから、そのコードを実行させて書き込みプロセスを遂行しなければならない。消去プロセスは「０」を「１」に変えるプロセス、すなわち「書き込み」の形であるので、消去サイクル命令も一時的にＲＡＭにダウンロードしてから消去サイクルが始まるようにしなければならない。
本発明の好ましい実施例ではＲＡＭ２０６は、フラッシュメモリのパラメータブロック１１０、１１２の一つに記憶されるパラメータもしくは変数を暫定的に記憶するための８キロバイトブロック（以下、８キロＲＡＭキャッシュと称す）を構成している。フラッシュメモリマネージャー（ＦＭＭ）として知られている器械による読解可能な一組の命令に従ってＣＰＵ２０２を条件づけてフラッシュメモリの効果的な利用を管理する。ＦＭＭ−ＲＡＭキャッシュルーチンとして知られている器械による読解可能な一組の命令が与えられて、ＲＡＭキャッシュ２１２とパラメータブロック１１０、１１２とにおける、そしてそれらの間でのパラメータの記憶を制御する。一般的にＦＭＭ−ＲＡＭキャッシュルーチンのようなＦＭＭ命令がフラッシュメモリ２００のメインメモリブロック１０２から１０８に記憶されており、そしてもしＦＭＭ命令がフラッシュメモリのブロック、具体的にはパラメータブロック１１０、１１２の一方もしくは他方のブロックの書き込みもしくは消去を構成するのであればＦＭＭ命令はＲＡＭ２０６にダウンロードされる。
【００１６】
図３を参照する。ＦＭＭ−ＲＡＭキャッシュルーチン命令に従って条件づけられたＣＰＵ２０２の動作のための本発明の流れ図である。今生きているフラッシュメモリ１００のフラッシュパラメータブロック、例えばブロック１１０に記憶されたパラメータを変えるもしくは更新するとき、ＦＭＭ３００は状態３０２に入り、この状態ではＲＡＭキャッシュ２１２に記憶された対応パラメータは新しいパラメータ値に更新される。それからＦＭＭ３００は状態３０４に進み、この状態では今生きているフラッシュパラメータブロック１１０への書き込み中にＲＡＭキャッシュ２１２の更新が生じたか、否かを決定する。もしＲＡＭキャッシュの更新がフラッシュ書き込み中に生じていると、そのときはＦＭＭ３００は状態３０６に入り、この状態では今生きているフラッシュパラメータブロック１１０にＲＡＭキャッシュ２１２の内容が書き込まれ、今生きているフラッシュパラメータブロック１１０をＲＡＭキャッシュ２１２の内容に更新している。このことは、今生きているフラッシュパラメータブロック１１０に一部古いデータを、そして一部新しいデータを記憶させることになるかもしれないフラッシュ書き込み中のＲＡＭキャッシュ２１２への書き込みによって、ＲＡＭキャッシュ２１２に記憶されたパラメータ値と今生きているフラッシュパラメータブロック１１０に記憶されているパラメータ値との間で発生する不一致を考慮してのことである。もし状態３０４がノーであると、ＦＭＭ３００は状態３０８に入り、この状態ではＲＡＭ内でいま更新されたパラメータの優先レベルを決める。本発明に従ってパラメータは、フラッシュメモリもしくはマイクロ・コントローラが存在する電子装置の作動に対するそれらの重要性如何によって「至急」パラメータもしくは「緩慢」パラメータのどちらかとすることに注目されたい。どのパラメータが「至急」で、そしてどのパラメータが「緩慢」であるのか、そしてそのような優先レベルが電子装置のための様々なパラメータの中にどのように分配されるかは本発明にとって関心事ではない。ただ注意さるべきこととしては、これら２つの優先レベルを有するパラメータがシステム内に存在しており、そしてそのような優先レベルを有するものとして認識されているということである。いかなるシステムにおいても２つ以上の優先レベルがあってもよいことは明らかであり、そしてそのときはＦＭＭ３００を他の優先レベルを許容するよう適当に変更する。もし今のパラメータが「緩慢」優先レベルを有するのであれば、ＦＭＭ３００は状態３１０に入り、そしてもし今のパラメータが「至急」優先レベルを有するのであれば、ＦＭＭ３００は状態３１２に入る。状態３１０の間で、もし最後のフラッシュバックアップ以来５つよりも多くの「緩慢」パラメータがＲＡＭキャッシュ２１２に書き込まれているか、もしくは最後の「緩慢」パラメータがＲＡＭキャッシュ２１２へ書き込まれてから一分以上経っていて、そしてその間にフラッシュバックアップがないならば、ＦＭＭ３００は状態３０６に入り、この状態では今生きているフラッシュパラメータブロック１１０にはＲＡＭキャッシュ２１２の内容が書き込まれて、ＲＡＭキャッシュ２１２をバックアップする。もし状態３１０がノーであると、ＦＭＭ３００は状態３０２に入り、この状態では次のパラメータがＲＡＭキャッシュ２１２に書き込まれるのを待っている。状態３１２において、もし最後のフラッシュバックアップ以来一つよりも多い至急パラメータがＲＡＭキャッシュ２１２に書き込まれているか、もしくは最後の至急パラメータがＲＡＭキャッシュ２１２へ書き込まれてから２秒経っており、そしてフラッシュへの暫定的なバックアップがなかったならば、ＦＭＭ３００は状態３０６に入り、この状態ではＲＡＭキャッシュ２１２の内容が今生きているフラッシュメモリのパラメータブロック１１０にバックアップされる。もし状態３１２がノーであると、ＦＭＭ３００は状態３０２に入り、この状態では次のパラメータがＲＡＭキャッシュ２１２に書き込まれるのをプロセスは待っている。
【００１７】
それぞれの状態３１０、３１２における基準を詳述する必要のないことは当業者なら理解されよう。その基準は特定の電子装置のパラメータの種類と優先レベルとを考慮して変えられるものである。
図３の流れ図から明かなように、生きているフラッシュメモリのパラメータブロック１１０への書き込みを必要とする状態と、そのような書き込みを必要としない状態とをＦＭＭ３００は有している。従って、ＣＰＵ２０２がＦＭＭ３００に従って作動するよう条件づけられようとするとき、ＦＭＭ３００に関係する命令の総てをフラッシュメモリからＲＡＭ２０６にダウンロードしなければならないということではなく、フラッシュメモリのパラメータブロック１１０への「書き込み」を開始するその部分のＦＭＭ３００の命令だけをダウンロードすれば足りる。
【００１８】
フラッシュメモリは個別に消去されることはできないので、ＲＡＭキャッシュ２１２の内容の各々の順次のバック・アップは今生きているフラッシュメモリのパラメータブロック１１０内の次に利用できるアドレスに書き込まれる。前に説明したリンクリストのデータ構造がこの目的に特に適している。いつかは、今生きているフラッシュメモリのパラメータブロック１１０は一杯になる。その時は今生きているフラッシュメモリのパラメータブロック１１０に記憶されているパラメータの最近の値が第２のフラッシュメモリのパラメータのメモリブロック１１２に記憶される。今はこの第２のフラッシュメモリのパラメータブロックが、今生きているパラメータブロックとなり、そしてＲＡＭキャッシュ２１２の内容はＦＭＭ３００の制御下で新しい今生きているパラメータブロック１１２へ書き込まれる。電子装置の作動中都合のよいときに元の生きていたパラメータブロック１１０を消去する、すなわちすべてのメモリ領域を１で満たして、今生きているパラメータブロック２１２が一杯になった時にパラメータの更新値を受けれるようにする。
【００１９】
ＦＭＭ−ＲＡＭキャッシュ・ルーチンにより管理されているフラッシュメモリは長く有効に使用できる。パラメータ値が変化する毎にフラッシュメモリを必ずしも更新する必要はなく、ある回数のパラメータの更新があったときだけ、もしくはパラメータが非常に重要であってフラッシュメモリに直ぐにも保存されなければならないときだけフラッシュメモリを更新すれば足りるからである。こうして、従来の仕方で管理されているフラッシュメモリで可能となるよりももっと多くのパラメータの更新が可能となる。
ＣＰＵ２０２のようなセントラルプロセッサユニットが制御している電子装置の作動中、フラッシュメモリ２０４とＲＡＭ２０６のようなメモリデバイスから情報を読み出さなければならない。しかしながら、上に説明したように、フラッシュメモリのブロックへの書き込み中もしくは消去中にフラッシュメモリ２０４から読み出すことはできない。従ってもし書き込み中もしくは消去中にフラッシュメモリ２０４からデータを読むことをＣＰＵが要求するならば、その要求は無視される。そのような要求は以下にインタラプトと称する。
【００２０】
電子装置の種類とそれの状態とによって異なるが、もしインタラプトもしくは少なくともある種類のインタラプトに迅速に応じないのであれば、その電子装置は正しく機能するのを停止する。消去についてはその遅延は８キロブロックで２秒までであり、普通この遅延はインタラプトに応じるまでの遅延としては長過ぎる遅延である。
図４を参照する。本発明の好ましい実施例に従うフラッシュメモリマネージャー（ＦＭＭ）インタラプトハンドラールーチン４００の流れ図を示す。ＣＰＵ２０２はＦＭＭインタラプトハンドラールーチン４００に従って動作するよう条件づけられている。フラッシュメモリ２０４へのアクセスを要求するインタラプトが発生するとＦＭＭインタラプトハンドラー４００が発動される。フラッシュメモリ２０４が現在書き込みもしくは消去動作中かどうかを状態４０２でＦＭＭインタラプトハンドラーが決定する。もしそのような動作中でなければ本システムの標準インタラプトハンドラールーチンが開始される状態４０４に入る。標準インタラプトハンドリングルーチンは当業者には良く知られていて、詳細な説明は不要である。標準インタラプトハンドラーは通常の方法でイタラプト要求に応じ、必要なデータ場所であればどこからでも読み出す。もし書き込みもしくは消去中で、もしフラッシュメモリ２０４へ「短い」書き込み中ならばＦＭＭインタラプトハンドラー４００は状態４０６に入り、もし「長い」書き込み、例えば１ワードの書き込み中ならば状態４０８に入り、そしてもし消去中ならば状態４１０に入る。
【００２１】
状態４０６でフラッシュメモリ２０４への短い書き込みのために、インタラプトハンドラー４００は状態４１２に入る。そこではインタラプトは不可能である。「短い」書き込みが終わったら、インタラプトハンドラー４００は状態４１４に入る。そこではフラッシュメモリ２０４のブロック読み出し状態が可能である。その後、インタラプトハンドラーは状態４０４に入る。そこでは標準インタラプトハンドラーが発動される。一般的に「短い」書き込みとみなされる書き込みの最長時間はＣＰＵ２０２上で動く命令によって制御される電子装置の性質によって変わり、当業者によって適切に決定される。一般的に６マシンサイクルよりも少ない書き込みもしくは１命令が「短い」書き込みとみなされている。
もし例えば多くの「ワード」から成るような「長い」書き込み中ならば、インタラプトハンドラー４００は状態４０８に入り、そして１ワード（一般的に８もしくは１６ビット）を現在フラッシュメモリ２０４に書き込み中かどうかを判断する。もし書き込み中でないならインタラプトハンドラー４００は状態４１４に入る。そこではフラッシュメモリ２０４はブロック読み出しモードになり、そしてその後状態４０４に入る。そこでは標準インタラプトハンドラーが発動される。もし１ワードを現在フラッシュメモリ２０４に書き込み中ならば状態４１２に入り、ワードの書き込みが終わるまでインタラプトは不可能となる。その後、状態４１４に入り、ブロック読み出しモードが可能となり、そして状態４０４で標準インタラプトハンドラーが発動される。任意に、ワード書き込みとワード書き込みの間でインタラプトが可能である。一般的に、ワード書き込みとワード書き込みの間には、新しいワードをデータバッファに置いたりもしくは新しいワードの書き込み用アドレスをロードするための休止があるからである。このようにして、もしこのような可能な期間中にインタラプトが発生したらＦＭＭインタラプトハンドラーはフラッシュメモリ２０４を読み出しモードにして、インタラプトに応じる。ＦＭＭインタラプトハンドラーは「長い」書き込みがワード書き込みとワード書き込みとの間にあるのを検出し、その後フラッシュメモリ２０４を読み出しモードにする。「長い」書き込みがワード書き込みとワード書き込みの間に入ってきそうな時も認識する。
【００２２】
もしＦＭＭインタラプトハンドラー４００が消去中であることが検出されている状態４１０に入ると消去処理は中止されて、状態４１４でブロック読み出しモードが可能となる。標準インタラプトハンドラーが状態４０４で発動される。
状態４０４からＦＭＭインタラプトハンドラー４００は状態４１６に入る。そこではインタラプトハンドラーの発動に先立って実施されていた動作が継続される。例えばもし消去中であったならばインタラプトに応じて中止したところから状態４１６で消去を続ける。同様に、もし「長い」書き込み中にインタラプトされたなら次のワード書き込みが状態４１６で実施される。
ＦＭＭインタラプトハンドラー４００はフラッシュメモリ２０４に記憶されているが、フラッシュ消去もしくは書き込み操作が実施されなければならない場合は一時的にＲＡＭ２０６に移される。任意で、インタラプトハンドラー４００はＲＡＭ２０６に記憶されるのが好ましい。単に一時的にもしくは好ましくに関わらずＲＡＭに記憶されたならば、インタラプト要求はＦＭＭインタラプトハンドラー４００を含むＲＡＭアドレスに指示されなければならない。
【００２３】
前記したようにフラッシュメモリ２０４にはフラッシュメモリの性能の低下前に実施できる消去サイクル数に限界がある。フラッシュメモリマネージャーはＣＰＵ２０２にＦＭＭブロックリ・ユースポリシーとして知られる器械による読解可能な一組の命令を与えて、フラッシュメモリブロックを均等に再使用する手段を与え、全ブロックが丁度各ブロック同じ消耗になるようにする。
図５を参照する。ＦＭＭブロックリ・ユースポリシーを表している図を示す。ＣＰＵ２０２はＦＭＭブロックリ・ユースポリシーに従って動作するよう条件づけられている。ブロックリ・ユースポリシーは一組のサブルーチンを備え、消去−カウント（ｅｒａｓｅ  ＿ｃｏｕｎｔ  ）５０２、消去−開始（ｅｒａｓｅ  ＿ｉｎｉｔｉａｔｅ）５０４、コピー−開始（ｃｏｐｙ＿ｉｎｉｔｉａｔｅ）５０６、コピー−フロム（ｃｏｐｙ＿ｆｒｏｍ）５０８、コピー−トゥ（ｃｏｐｙ＿ｔｏ）５１０そしてコピー−消耗均一化用（ｃｏｐｙ＿ｆｏｒ  ＿ｗｅａｒ＿ｌｅｖｅｌｌｉｎｇ  ）５１２に分類されている。
【００２４】
消去−カウントサブルーチン５０２は何回ブロックが消去されたかの記録を保持する。ブロックが消去された回数はブロック消耗カウントとして知られている。ブロック消耗カウントはフラッシュメモリが使用される最初の回数を０として開始される。すなわちフラッシュメモリマネージャーがフラッシュメモリ２０４が備わっている電子装置で動く最初の回数である。フラッシュメモリの各ブロックに対してブロック消耗カウントがあり、ブロック消耗カウントは対応するブロックが消去される度に増す。一般的にあるブロックを消去して、そこに他のブロックをコピーする。従ってコピー先のブロックが消去されている間、消去されているブロック消去のブロック消耗カウントはコピー元のブロックに記憶される。消去−開始サブルーチン５０４はフラッシュメモリ２０４内で消去処理の動作を制御する。一般的に消去可能なブロックは消去される。このような消去は、ＣＰＵ２０２からのインタラプト要求に応じる必要性からフラッシュメモリマネージャーがインタラプションを要求する時にだけインタラプトされる。
【００２５】
コピーの開始はコピー−開始サブルーチン５０６に従って器械による読解可能な命令により制御される。殆ど一杯のブロックから未使用のブロックへブロックコピーを開始する規準は以下の通りである。「少なくとも１ブロックが８０％以上一杯で、そのブロック中に少なくとも２０％の使用済み領域がある。かつ同じサイズの空きブロックが使用可能である場合。」
コピー開始サブルーチン５０６を特定の電子装置もしくはマイクロ・コントローラ／命令セットアーキテクチャーに適応する当業者によって他の条件もしくは規準は決められる。コピー開始サブルーチン５０６で規準を満たす条件になるとコピー−フロムサブルーチン５０８及びコピー−トゥサブルーチン５１０が発動される。コピー−フロムサブルーチン５０８により最大の使用済み領域をもつブロックの内容がコピーされる。一般的にコピー−フロムサブルーチン５０８が発動する時、通常１つよりも多くのコピー元の候補となるブロックがある。例えば、もし８つの８キロバイトのブロックがあり、その内６ブロックが以下の通り一杯であるとする。
【００２６】
「１つは９０％の使用済み領域があり、消耗カウントは３０である。１つは８０％の使用済み領域があり、消耗カウントは２０である。１つは５０％の使用済み領域があり、消耗カウントは９である。１つは４５％の使用済み領域があり、消耗カウントは３である。１つは３０％の使用済み領域があり、消耗カウントは２である。そして最後の１つは１０％の使用済み領域がある。消去されているブロックと最後のブロックの中から１つが消去される。」
コピー−フロムサブルーチン５０８の規準に従ってコピー元となる候補は９０％の使用済み領域があるブロックとなる。しかしながら、このブロックは最も消耗カウント数が多い。消耗カウントと使用済み領域の割合とのいずれかを優先させるのは任意である。例えば、使用済み領域の割合が高くなると、最大の領域が解放されるため、メモリ資源の使用が良くなり、次のブロックコピーまでの時間が増大する。もし最大の使用済み領域を持つブロックが選ばれないと、次のコピーが早く発生し、従ってブロックコピー要求が早く出され、それ故消耗が早くなってしまうというように連鎖する。「使用済み領域」という言葉は既に更新されてしまった値を記憶しているメモリ領域のことを称しており、従って更新した値は異なるメモリ領域にあるということを注意しておく。各フラッシュブロックは１００、０００回消去及び再書き込みできるので、コピー元となるブロックの決定において消耗カウントは小さい要因である。従って、特定の実施例においてはコピー−フロムサブルーチン５０８は消耗カウントを無視し、コピー元となるブロックは最大の使用済み領域をもつブロックであるという単純な規準を使っている。特定の環境内でフラッシュメモリ装置の使用を最適にしようとして当業者が消耗カウントと使用済み領域の割合とのいずれかを優先させるのをいけないと言っているわけではない。
【００２７】
コピー−トゥポリシー５１０が発動される時、一般的にコピー先のメモリブロックの候補は１つよりも多い。例えば、８つの内４つが一杯である８キロバイトブロックを取り上げる。１つは他のブロックに既にコピーされているデータをもち、一つは消去中であり、そして２つは既に消去されているので、この２つだけがすぐに使用可能である。正確には既に消去されている２つのメモリブロックである。これら２つのブロックの各々がブロック消耗カウントをもつ。コピー−トゥサブルーチン５１０の規準はコピー先となる最初のブロックは最小の消耗カウントをもつブロックである。
ある型のアプリケーションにおいてはフラッシュメモリブロックのいくつかは決してもしくは殆ど消去されない。例えば、あるアプリケーションは２つの大きなレコードをメモリブロックに保存し、決してそれらを消去したり、書き込んだりしない。このような状態では、この特定ブロックは決して消耗しないが、フラッシュメモリ中の他のブロックは消耗してしまう。フラッシュメモリ内のブロックの消耗値間の何らかの大きな差異を認識するためにコピー−消耗均一化専用サブルーチン５１２が適応され、比較的消耗していないブロックから最も消耗しているブロックへブロックコピーさせたり、又、最も消耗しているブロックから比較的消耗していないブロックへブロックコピーさせたりする。このようにして殆ど消耗していないブロックは何度も使用されるようになり、非常に消耗したブロックの消耗は実質的に減少する。最も使用されていないブロックの消耗レベルと最も使用されているブロックの消耗レベルの差が所定の値を超えると強制コピーが発生する。この値はフラッシュメモリを使用しているアプリケーションに依存するが、一般的に１から４０％の範囲内である。フラッシュメモリへの書き込み／消去頻度に応じてこの範囲を変更するようにする。高頻度の書き込み／消去の使用によって強制コピーがより頻繁に発生するからである。加えて、ブロックの消耗カウントが増大するにつれて強制コピーが頻繁に発生する。１ブロック単位についてであっても、強制コピーは前述した規準を考慮するよう適応される。
【００２８】
前記の観点から本発明の範囲内で様々な変更を加えることが可能であることは当業者にとって明らかである。例えば、先に述べたように２つよりも多いパラメータの優先レベルがあり、ＲＡＭキャッシュ２１２がフラッシュメモリ１００にバックアップされるかどうかを決定する基準がマイクロ・コントローラ２００とフラッシュメモリ１００が備わっている電子装置に合うように適応される。例えば、さらに先の状態がＦＭＭ３００には存在し、ＦＭＭ３００は携帯電子装置の電源停止の始まりを検出して、電源停止の前にＲＡＭキャッシュ２１２を今生きているフラッシュメモリパラメータブロックにバックアップする。
本発明は、本文中で明記した、もしくは示唆したいかなる新規な特徴又はそのような特徴の組み合わせをも含む。又は本発明の請求項に関するかどうか、或いは取り上げた問題のいずれか又は全てを改善するかどうかに関わらず、本発明は一般化したどのような特徴をも含む。本件ならびに本件の分割審査中に新しい請求項を提出することがあることを注記しておく。
【図面の簡単な説明】
【図１】一般的なフラッシュメモリの図を示す。
【図２】ＶＬＳＩマイクロ・コントローラのブロック図を示す。
【図３】フラッシュメモリマネージャーＲＡＭキャッシュルーチンの流れ図を示す。
【図４】本発明の好ましい実施例に従うフラッシュメモリマネージャーインタラプト
ハンドリングルーチンの流れ図を示す。
【図５】フラッシュメモリマネージャーブロックコピーポリシーの図式表現を示す。
【符号の説明】
１００  フラッシュメモリ
１０２、１０４、１０６  １２８キロバイトのブロック
１０８  ９６キロバイトのブロック
１１０、１１２  ８キロバイトのパラメータブロック
１１４  １６キロバイトのコードブロック
２００  マイクロ・コントローラ
２０２  ＣＰＵ
２０４  フラッシュメモリ
２０６  ランダムアクセスメモリ（ＲＡＭ）
２０８  入出力装置
２１０  デジタル信号プロセッサー（ＤＳＰ）
２１２  ＲＡＭキャッシュ
２１４  無線電話
５０２  消去−カウントサブルーチン
５０４  消去−開始サブルーチン
５０６  コピー−開始５０６サブルーチン
５０８  コピー−フロムサブルーチン
５１０  コピー−トゥサブルーチン
５１２  コピー−消耗均一化用サブルーチン
【図１】
0003544610.tif 000002
【図２】
0003544610.tif 000003
【図３】
0003544610.tif 000004
【図４】
0003544610.tif 000005
【図５】
0003544610.tif 000006