(57)【要約】【課題】  ディジタル機器システムのシステム性能を改善すること【解決手段】  本発明のディジタル機器システムは、セクタ情報を有するファイルを書込むためのランダム書込み命令を送信するホストと、その命令に応答してＦＳＩｎｆｏセクタ情報を書込み、更新するコントローラとを含む。そのコントローラは、複数のブロックに区分された不揮発性メモリシステム（不揮発性メモリの例は当業者にとって公知であるフラッシュメモリである）を制御し、各ブロックはセクタ情報を格納するための複数のセクタを含み、特定の空きブロックがＦＳＩｎｆｏセクタ情報を格納するように指定される。ＦＳＩｎｆｏセクタが更新されると、更新されたＦＳＩｎｆｏセクタ情報は、専用のブロックの次の空のセクタに書込まれ、それによって特定のブロックのセクタを他のブロックに移すことを回避し、その結果システム性能を改善する。【選択図】  図２
2005182793.tif 000002
【特許請求の範囲】
【請求項１】
ａ．セクタ情報を有するファイルを書込む書込み命令を送信するホストと、
ｂ．該命令に応答するコントロール装置であって、ＦＳＩｎｆｏセクタ情報を書込み更新するコントロール装置と
を備え、
該コントロール装置は、
複数のブロックに区分された不揮発性メモリシステムであって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含み、特定の空きブロックがＦＳＩｎｆｏセクタ情報を格納するために指定される、不揮発性メモリシステムを含み、
該ＦＳＩｎｆｏセクタが更新されると、該更新されたＦＳＩｎｆｏセクタ情報が該専用のブロックの次の空きセクタに書き込まれ、これにより、該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良する、ディジタル機器システム。
【請求項２】
前記特定のブロックは、該特定のブロックの前記セクタ位置のそれぞれへの書込みを該ブロックが満杯になるまで続けることによって前記ＦＳＩｎｆｏセクタ情報で満たされる、請求項１に記載のディジタル機器システム。
【請求項３】
前記特定のブロックは、それが満杯になった後に消去される、請求項２に記載のディジタル機器システム。
【請求項４】
前記特定のブロック以外の空いているか利用可能なブロックが、該特定のブロックが満杯である場合にＦＳＩｎｆｏセクタ情報の更新を格納するために指定される、請求項２に記載のディジタル機器システム。
【請求項５】
前記空きブロックが指定されると、更新されたＦＳＩｎｆｏセクタ情報は、前記特定のブロック以外の前記空いているか利用可能なブロックのセクタ位置に書込まれ続ける、請求項４に記載のディジタル機器システム。
【請求項６】
前記ＦＳＩｎｆｏセクタ情報が最初に書込まれる際は、前記特定のブロックの第１の位置に書込まれる、請求項１に記載のディジタルの機器システム。
【請求項７】
複数のブロックに区分された複数の不揮発性メモリ格納位置であって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含み、特定の空きブロックがＦＳＩｎｆｏセクタ情報を格納するために指定される、複数の不揮発性メモリ格納位置
を備え、
該ＦＳＩｎｆｏセクタが更新されると、該更新されたＦＳＩｎｆｏセクタ情報が該専用のブロックの次の空きセクタに書き込まれ、これにより、該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良する、不揮発性メモリシステム。
【請求項８】
前記特定のブロックは、該特定のブロックの前記セクタ位置のそれぞれへの書込みを該ブロックが満杯になるまで続けることによって前記ＦＳＩｎｆｏセクタ情報で満たされる、請求項７に記載の不揮発性メモリシステム。
【請求項９】
前記特定のブロックは、それが満杯になった後に消去される、請求項８に記載の不揮発性メモリシステム。
【請求項１０】
前記特定のブロック以外の空いているか利用可能なブロックが、該特定のブロックが満杯である場合にＦＳＩｎｆｏセクタ情報の更新を格納するために専用化される、請求項８に記載の不揮発性メモリシステム。
【請求項１１】
前記特定のブロックが満杯であると、更新されたＦＳＩｎｆｏセクタ情報は、前記特定のブロック以外の前記空いているか利用可能なブロックに格納され続ける、請求項１０に記載の不揮発性メモリシステム
【請求項１２】
前記ＦＳＩｎｆｏセクタ情報が最初に書込まれる際は、前記特定のブロックの第１の位置に書込まれる、請求項７に記載のディジタルの機器システム。
【請求項１３】
複数の不揮発性メモリ格納位置を含む不揮発性メモリシステムに対する書込み動作の速度を増加させる方法であって、該方法は、
該複数の不揮発性メモリ格納位置を複数のブロックに区分することであって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含む、ことと、
ＦＳＩｎｆｏセクタ情報を格納するための複数のセクタ位置を有する特定の空きブロックを指定することと、
該特定のブロックの該複数セクタ位置の該セクタ位置のうちの１つにＦＳＩｎｆｏセクタ情報を書込むことと、
更新されたＦＳＩｎｆｏセクタ情報を受け取ることと、
該特定のブロックの次の空いているセクタ位置に該更新されたＦＳＩｎｆｏセクタ情報を書込むことによって該ＦＳＩｎｆｏセクタ情報を更新することと、
該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良することと
を包含する、方法。
【請求項１４】
請求項１３の前記書込みステップは、前記特定のブロックの第１の位置に対して実行される、請求項１３に記載の書込み動作の速度を増加させる方法。
【請求項１５】
複数のブロックに区分された複数の不揮発性メモリ格納位置であって、仮想論理ブロックアドレス（ＶＬＢＡ）によって識別される各ブロックがセクタ情報を格納するための複数のセクタ位置を含み、各セクタ位置が物理ブロックアドレス（ＰＢＡ）によって識別され、第１のＬＢＡによって識別され、かつ、Ｎ  ＰＢＡによって識別されるＮ個のセクタ位置を有する特定の空きブロックが特定のタイプのセクタ情報を格納するために指定され、該特定のタイプのセクタ情報が他のセクタ情報と比較して頻繁にアクセスされたかまたは更新されたとして検出される特定のタイプのセクタ情報である、複数の不揮発性メモリ格納位置
を備え、
該特定のタイプのセクタ情報が更新されると、該更新された特定のタイプのセクタ情報が、該第１のＬＢＡによって識別される該専用のブロックの次の空セクタに書込まれ、これにより、該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良する、不揮発性メモリシステム。
【請求項１６】
前記特定のタイプのセクタ情報が更新されるたびに、それが前記Ｎ個の位置の全てが書込まれるまで前記専用ブロックの前記Ｎ個の位置のうちの１つに書込まれ、その後に、前記特定のタイプのセクタ情報が、第２のＬＢＡによって識別されるブロックに書込まれ、その後に、毎回、前記特定のタイプのセクタ情報に対する前記更新が、後者が満杯になるまで該第２のＬＢＡによって識別される前記ブロックに書込まれる、請求項１５に記載の不揮発性メモリシステム。
【請求項１７】
前記特定のタイプのセクタ情報は、どのセクタが他のセクタより多くアクセスされたか決定するためにしきい値を用いて識別され、セクタがアクセスされた回数がしきい値を超えた場合に、そのセクタを前記の特定タイプのセクタ情報として指定する、請求項１５に記載の不揮発性メモリシステム。
【請求項１８】
ファームウェアが、前記不揮発性メモリシステムを管理するように実行され、前記しきい値が該ファームウェアの中にプログラムされている、請求項１７に記載の不揮発性メモリシステム。
【請求項１９】
前記特定のタイプのセクタ情報が、ＦＳＩｎｆｏセクタ情報である、請求項１５に記載の不揮発性メモリシステム。
【請求項２０】
前記特定のタイプのセクタ情報が更新されるたびに、異なる専用ブロックに書込まれる、請求項１５に記載の不揮発性メモリシステム。
【請求項２１】
前記特定のタイプのセクタ情報が、オーバーヘッド部分を含み、アクセスカウンタ値が、前記特定のセクタがアクセスされた回数を保持するために用いられ、該アクセスカウンタ値は該オーバーヘッド部分に格納されている、請求項１５に記載の不揮発性メモリシステム。
【請求項２２】
複数の不揮発性メモリ格納位置を含む不揮発性メモリシステムに対する書込み動作の速度を増加させる方法であって、該方法は、
該複数の不揮発性メモリ格納位置を複数のブロックに区分することであって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含む、ことと、
頻繁にアクセスされたセクタ情報を格納するための複数のセクタ位置を有する特定の空きブロックを指定することと、
該特定のブロックの該複数セクタ位置の該セクタ位置のうちの１つに該頻繁にアクセスされたセクタ情報を書込むことと、
更新された頻繁にアクセスされたセクタ情報を受け取ることと、
該特定のブロックの次の空きセクタ位置に該更新された頻繁にアクセスされたセクタ情報を書込むことによって該頻繁にアクセスされたセクタ情報を更新することと、
該特定のブロックの該セクタを他のブロックに移動させることを回避し、それによって、システム性能を改良することと
を包含する、方法。
【請求項２３】
前記頻繁にアクセスされたセクタ情報は、ＦＳＩｎｆｏセクタ情報である、請求項２２に記載の不揮発性メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に不揮発性メモリを利用しているシステムの書込み動作の速度を減少させる方法および装置に関し、特に、ランダム書込み動作を実行しているときに、この種のシステムの書込み動作速度を減少させることに関する。
【背景技術】
【０００２】
（関連出願の参照）
本出願は、米国特許出願第０９／６２０，５４４号、「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  Ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  Ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」の名称で、２０００年７月２１日に出願された私の先の米国特許出願の一部継続出願であり、それは、米国特許出願第０９／２６４，３４０号、「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  Ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  Ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」の名称で、１９９９年３月８日に出願された特許出願の継続出願であり、それは、米国特許出願第０８／８３１，２６６号、「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  Ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  Ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」の名称で、１９９７年３月３１日に出願された洗願特許出願の継続出願であり、それは、米国特許出願第０８／５０９，７０６号、「Ｄｉｒｅｃｔ  Ｌｏｇｉｃ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」の名称で、１９９５年７月３１
日に出願された特許出願の一部継続出願である。出願番号第０８／８３１，２６６号および同第０８／５０９、７０６号は、本願明細書に援用されている。
（従来技術の説明）
ディジタル情報革命の出現とともに、不揮発性メモリ（またはＦＬＡＳＨメモリまたはＥＥＰＲＯＭメモリ）は１０年もたたない期間内で相当な人気を享受した。これは主に、当業者にとって公知である不揮発性メモリの特定の特性（例えば、電源が遮断されるかまたは接続を外されたときでも情報を維持すること）に起因するものと考えられる。
【０００３】
不揮発性メモリは、広く多様な用途を有している。その用途は、デジタルカメラとパーソナルコンピュータ（ＰＣ）とを含む。デジタルカメラでは、不揮発性メモリは、後の編集またはどこかにロードするためにデジタル形式で写真を格納するために用いられる。パーソナルコンピュータ（ＰＣ）では、不揮発性メモリは、様々なタイプのデジタル情報を格納するために用いられる。
【０００４】
不揮発性メモリを使用することに興味がある者に対して恒常的なチャレンジを提起している問題のうちの１つは、読出しおよび書込み動作の速度であることが知られている。論理的な１つの状態にまだあるセルのみの状態を変えることを伴う各書込み動作の後に、同じ位置に対する次の書込み動作を行う前に消去動作が必要であるので、書込み動作の速度に対するいかなる改善も、全体的なシステム性能に対する印象的な改善になることは明らかである。
【０００５】
不揮発性メモリの内で情報が編成される方法の簡単なバックグラウンドとして、１つ以上の集積回路であり得る（典型的には１個より多い集積回路であるメモリは、複数のブロックに予め区分されている。各ブロックは、所定数のセクタを含み。各セクタは、所定数のバイトを含む。セクタは、論理ブロックアドレス（ＬＢＡ）によってシステムによって識別されるが、不揮発性メモリに書込まれたり、もしくは、不揮発性メモリから読み出される場合には、セクタは物理ブロックアドレス（ＰＢＡ）によって識別される。一般に、ＬＢＡとＰＢＡとの間には公知の対応関係があり、それはランダムアクセスメモリ（ＲＡＭ）において保持され得る。
【０００６】
個々のブロックまたは個々のセクタは、ユーザに依存して消去可能なユニットとして定義され得る。例えば、セクタは、５１２バイトのデータと１６バイトのオーバーヘッド情報とを含むことができ（典型的にはそれらを含み）、与えられたアプリケーションにおいて、消去動作の間、多くのセルを含む全体のセクタが消去され得る。実際、多くのセクタは一度に消去され得る。この場合、ユーザはおそらく１以上のブロックが一緒に消去されるようにシステムを設計している。
【０００７】
不揮発性メモリを用いる既存のシステムでは、２つのタイプのデータが格納される。１つのタイプは、ファイルシステムデータであり、もう１つのタイプはユーザシステムデータである。ファイルシステムデータは、オペレーティングシステムにユーザデータを含むファイルの在る位置に関する情報を提供する。ユーザシステムデータはファイルの内容である。各ファイルは、一般に、シーケンシャルな書込み動作を典型的に必要とする大きなデータブロックを含む。シーケンシャルな書込み動作において、ＬＢＡはシーケンシャルな順序で出現する。すなわち、シーケンシャルなセクタはそこに書込まれる。
【０００８】
書込み動作は、一般に、メモリに対する情報の入出力を管理するコントローラと相互作用するホストによって開始される。ホストによって識別されたセクタは、メモリに書込まれる。大容量格納アプリケーションにおいて、ホストは２種類の書込み動作を始め得る、１つは前述のシーケンシャルな書込み動作であり、もう１つはランダム書込み動作である。ランダム書込み動作の１つの方法は、一般に、ファイルシステムデータを更新する場合に実行される。
【０００９】
大部分のＰＣおよびワークステーションに使われているより最近のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムでは、「ＦＡＴ３２」（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ  ３２）と呼ばれる新規なファイルシステムが利用されている。それは、２ギガバイトより大きいサイズのファイルシステムを可能にする。ＦＡＴ３２を用いて可能になる利点は、ディジタルカメラのような種々のアップリケーションに使用するカードをフォーマットすることを含み、従来のファイルシステムにより可能であったより更に大きい容量を有することである。
【００１０】
ＦＡＴ３２タイプのファイルシステムでは、「ＦＳＩｎｆｏ」（Ｆｉｌｅ  Ｓｙｓｔｅｍ  Ｉｎｆｏｒｍａｔｉｏｎ）と呼ばれる特別なセクタが使用される。ＦＳＩｎｆｏセクタは、次の空クラスターの位置に関する情報によって継続的に更新される。実際、このことは、時間の掛かる作業である可能性のある、空クラスターの位置を求めてＦＡＴを検索しなければならないことからファイルシステムソフトウェア（オペレーティングシステム）を救う。一般に、ＦＳＩｎｆｏセクタのみならずあるタイプのセクタも同様にセクタのタイプより更に頻繁に書込み又は再書込みされる。
【００１１】
しかしながら、他より頻繁に書込まれるこれらのあるのセクタに継続的に書込みまたは更新することは、システム性能を減速する副作用を有し、一般には、それによって同時に不揮発性メモリスペースをより多く使用することとなり、不揮発性メモリを使用する際の非効率性の原因となる。
【００１２】
上述したように、不揮発性メモリは複数のセクタに区分されており、いくつかのセクタのグループがブロックを構成する。セクタは、典型的には、５１２バイトのユーザデータと１６バイトのオーバーヘッド情報とを含み、ブロックは２５６のセクタを含み得るが、セクタは異なる数のバイトを有し得るし、ブロックは異なる数のセクタを有し得る。
【００１３】
既存の不揮発性メモリシステムでは、セクタが書込まれる場合に、空き（ｆｒｅｅ）ブロックの位置が最初に決定される。論理ブロックアドレス（ＬＢＡ）値は、不揮発性メモリ中の空きか利用可能な（ａｖａｉｌａｂｌｅ）ブロックをアドレス指定する新規な物理ブロックアドレス（ＰＢＡ）に関連付けられている。この点で、空きであると判ったブロックは「オープン（ｏｐｅｎ）」もしくは「ペンディング（ｐｅｎｄｉｎｇ）」であると考えられる、すなわち、セクタ情報による書込みを受ける。議論の目的のために、「オープン」もしくは「ペンディング」状態を有している空きであると判ったブロックをブロック０と呼ぶこととし、ＶＬＢＡ  ０によって識別されるものとする。
【００１４】
次に、その書込まれた次のセクタが調べられ、仮に、次のセクタがシーケンシャルであるかもしくは関連付けられているＶＬＢＡブロックに属している、すなわちブロック０（ＰＢＡ  ０である）、と判明した場合には、セクタ情報は同じブロックのセクタ位置に書込まれる。関連付けられているＶＬＢＡブロック、すなわちブロック０、に属している情報の後続するセクタは、ブロック０がもはや空でなく、どんな空の位置も有さなくなるまで書込まれ続ける。その場合には、異なる空きブロック、例えば、ＶＬＢＡ  １０（ＰＢＡ  １０）によって識別されたブロック１０が書込まれるために指定される。さて、仮にブロック０の既に書込まれたブロック０の更なる書込みまたは更新がある場合には、それらはブロック１０に書込まれるかまたは格納される。この場合には、更新されなかったセクタ情報の全ては、ブロック０からブロック１０に移動され、ブロック０は「閉じられ（ｃｌｏｓｅｄ）」消去を保留する。
【００１５】
前述の実施例において、ブロック０がもはや空でなくなった後に、新規の書込み命令がセクタ情報を有し、それが同じＶＬＢＡブロック（すなわち、ブロック０）に属し、現在更新されつつあると仮定する。この場合には、異なる空きブロック（例えば、ＶＬＢＡ  ０とＶＰＢＡ  １０とによって識別されるブロック１０）がそこに書込まれるように指定され、更新されたセクタ情報を格納するように使用される。この点で、ブロック０およびブロック１０は「ペンディング」もしくは「オープン」である。もし、ブロック０に属せず、ＶＬＢＡ  ０以外のＬＢＡに対応するセクタ情報の更新を指令する更にもう１つの書込み命令が受け取られた場合には、更にもう１つの空きブロック（すなわち、ＶＬＢＡ  １とＶＰＢＡ  ２０とによって識別されたブロック２０）が、このような更新を格納するために使用される。同じＶＬＢＡブロックに属さないセクタ情報の例は、ブロック０またはブロック１０に格納されているそれらのセクタに対して非シーケンシャルなセクタである。この例では、もし、ブロック０および、したがってブロック１０の各々がセクタ０〜２５５（ＬＢＡ  ０〜ＬＢＡ  ２５５）を格納するように指定された場合には、セクタ６１４（ＬＢＡ  ６１４）に対する書込みがブロック０またはブロック１０と同じＶＬＢＡブロックに属さないセクタに対する書込みと考えられる。しかしながら、更新されなかったセクタ情報の全ては、ブロック０からブロック１０に移される。この場合には、ブロック１０および２０は「オープン」もしくは「ペンディング」になり、ブロック０は「クローズ（ｃｌｏｓｅｄ）」になる。「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒ  Ｗｉｔｈｉｎ  Ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎ  Ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題し、２０００年７月２１日出願の米国特許出願第０９／６２０５４４号、および「Ｄｉｒｅｃｔ  Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題し、１９９８年１２月１日に出願した米国特許第５，８４５，３１３号において述べた通りである。
【００１６】
上述したのと同じ実施例を使用しながら、更にもう１つのシナリオは次の場合である。ブロック０の空スペースがなくなる前でさえ、すなわち、空きまたは利用可能なセクタ位置が残っている間に、もし、新規な書込み命令が既に１度更新されたセクタに対する書込み動作である場合には、再度、他のブロック、例えばブロック１０は、既に一度更新されたセクター情報の第２の更新を格納するように使用される。続きのセクターは、それらがシーケンシャルな順序の範囲および／またはブロック０と同じＬＢＡグループに属する限り、ブロック１０の対応するセクタ位置に書込まれる。ブロック０の更新されなかったセクタはその結果ブロック１０に移され、ブロック０は「クローズ」となり。ブロック１０は「オープン」もしくは「ペンディング」のままである。
【００１７】
このために、１ブロックが、例えば、２５６セクタを含む場合には、最大で２５５のセクタ情報の移動動作が実行されなければならず、それは全く時間が掛かり、システム性能を劣化させるものである。
【００１８】
このことは、ハイレベルブロックダイアグラムの形式で図１で示されている。図１では、不揮発性メモリシステム１０は、セクタ情報を格納するブロック１２を含むように示されている。もしこれらのセクタがシーケンシャルである（これらのセクタがシーケンシャルである範囲で）、ブロック１２は最初は空であり、続いてセクタ情報で満たされる。一旦非シーケンシャルなセクタが書込まれると、最近または「良好な（ｇｏｏｄ）」情報を含むセクタはブロック１２と共に、矢印１６で示すようにブロック１４に移される。それは、２５５の移動動作（古いか過去のブロックからの２５５セクタの読込み動作、および新規のブロックに対する同数の書込み動作）の可能性がある。前ブロックの良いまたは非更新セクターの新規ブロックへの移動動作は、不揮発性メモリシステムのシステム性能を５０％低速にすることが知られている。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
このように、不揮発性メモリのファイルシステム領域において、非シーケンシャルなセクタの書込み動作を実行するために必要な時間を最小にするためのシステムと方法が必要とされる。
【課題を解決するための手段】
【００２０】
簡潔にいうと、本発明の実施形態は、セクタ情報を有するファイルを書込むためのランダム書込み命令を送信するホストと、その命令に応答してＦＳＩｎｆｏセクタ情報を書込み、更新するコントローラとを有するディジタル機器システムを含む。そのコントローラは、複数のブロックに区分された不揮発性メモリシステム（不揮発性メモリの例は当業者にとって公知であるフラッシュメモリである）を制御し、各ブロックはセクタ情報を格納するための複数のセクタを含み、特定の空きブロックがＦＳＩｎｆｏセクタ情報を格納するように指定される。ＦＳＩｎｆｏセクタが更新されると、更新されたＦＳＩｎｆｏセクタ情報は、専用のブロックの次の空のセクタに書込まれ、それによって特定のブロックのセクタを他のブロックに移すことを回避し、その結果システム性能を改善する。
【００２１】
本発明のディジタル機器システムは、ａ．セクタ情報を有するファイルを書込む書込み命令を送信するホストと、ｂ．該命令に応答するコントロール装置であって、ＦＳＩｎｆｏセクタ情報を書込み更新するコントロール装置とを備え、該コントロール装置は、複数のブロックに区分された不揮発性メモリシステムであって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含み、特定の空きブロックがＦＳＩｎｆｏセクタ情報を格納するために指定される、不揮発性メモリシステムを含み、該ＦＳＩｎｆｏセクタが更新されると、該更新されたＦＳＩｎｆｏセクタ情報が該専用のブロックの次の空きセクタに書き込まれ、これにより、該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良する。
【００２２】
前記特定のブロックは、該特定のブロックの前記セクタ位置のそれぞれへの書込みを該ブロックが満杯になるまで続けることによって前記ＦＳＩｎｆｏセクタ情報で満たされてもよい。
【００２３】
前記特定のブロックは、それが満杯になった後に消去されてもよい。
【００２４】
前記特定のブロック以外の空いているか利用可能なブロックが、該特定のブロックが満杯である場合にＦＳＩｎｆｏセクタ情報の更新を格納するために指定されてもよい。
【００２５】
前記空きブロックが指定されると、更新されたＦＳＩｎｆｏセクタ情報は、前記特定のブロック以外の前記空いているか利用可能なブロックのセクタ位置に書込まれ続けてもよい。
【００２６】
前記ＦＳＩｎｆｏセクタ情報が最初に書込まれる際は、前記特定のブロックの第１の位置に書込まれてもよい。
【００２７】
本発明の不揮発性メモリシステムは、複数のブロックに区分された複数の不揮発性メモリ格納位置であって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含み、特定の空きブロックがＦＳＩｎｆｏセクタ情報を格納するために指定される、複数の不揮発性メモリ格納位置を備え、該ＦＳＩｎｆｏセクタが更新されると、該更新されたＦＳＩｎｆｏセクタ情報が該専用のブロックの次の空きセクタに書き込まれ、これにより、該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良する。
【００２８】
前記特定のブロックは、該特定のブロックの前記セクタ位置のそれぞれへの書込みを該ブロックが満杯になるまで続けることによって前記ＦＳＩｎｆｏセクタ情報で満たされてもよい。
【００２９】
前記特定のブロックは、それが満杯になった後に消去されてもよい。
【００３０】
前記特定のブロック以外の空いているか利用可能なブロックが、該特定のブロックが満杯である場合にＦＳＩｎｆｏセクタ情報の更新を格納するために専用化されてもよい。
【００３１】
前記特定のブロックが満杯であると、更新されたＦＳＩｎｆｏセクタ情報は、前記特定のブロック以外の前記空いているか利用可能なブロックに格納され続けてもよい。
【００３２】
前記ＦＳＩｎｆｏセクタ情報が最初に書込まれる際は、前記特定のブロックの第１の位置に書込まれてもよい。
【００３３】
本発明の方法は、複数の不揮発性メモリ格納位置を含む不揮発性メモリシステムに対する書込み動作の速度を増加させる方法であって、該方法は、該複数の不揮発性メモリ格納位置を複数のブロックに区分することであって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含む、ことと、ＦＳＩｎｆｏセクタ情報を格納するための複数のセクタ位置を有する特定の空きブロックを指定することと、該特定のブロックの該複数セクタ位置の該セクタ位置のうちの１つにＦＳＩｎｆｏセクタ情報を書込むことと、更新されたＦＳＩｎｆｏセクタ情報を受け取ることと、該特定のブロックの次の空いているセクタ位置に該更新されたＦＳＩｎｆｏセクタ情報を書込むことによって該ＦＳＩｎｆｏセクタ情報を更新することと、該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良することとを包含する。
【００３４】
前記書込みステップは、前記特定のブロックの第１の位置に対して実行されてもよい。
【００３５】
本発明の不揮発性メモリシステムは、複数のブロックに区分された複数の不揮発性メモリ格納位置であって、仮想論理ブロックアドレス（ＶＬＢＡ）によって識別される各ブロックがセクタ情報を格納するための複数のセクタ位置を含み、各セクタ位置が物理ブロックアドレス（ＰＢＡ）によって識別され、第１のＬＢＡによって識別され、かつ、Ｎ  ＰＢＡによって識別されるＮ個のセクタ位置を有する特定の空きブロックが特定のタイプのセクタ情報を格納するために指定され、該特定のタイプのセクタ情報が他のセクタ情報と比較して頻繁にアクセスされたかまたは更新されたとして検出される特定のタイプのセクタ情報である、複数の不揮発性メモリ格納位置を備え、該特定のタイプのセクタ情報が更新されると、該更新された特定のタイプのセクタ情報が、該第１のＬＢＡによって識別される該専用のブロックの次の空セクタに書込まれ、これにより、該特定のブロックの該セクタを他のブロックに移動させることを回避し、その結果、システム性能を改良する。
【００３６】
前記特定のタイプのセクタ情報が更新されるたびに、それが前記Ｎ個の位置の全てが書込まれるまで前記専用ブロックの前記Ｎ個の位置のうちの１つに書込まれ、その後に、前記特定のタイプのセクタ情報が、第２のＬＢＡによって識別されるブロックに書込まれ、その後に、毎回、前記特定のタイプのセクタ情報に対する前記更新が、後者が満杯になるまで該第２のＬＢＡによって識別される前記ブロックに書込まれてもよい。
【００３７】
前記特定のタイプのセクタ情報は、どのセクタが他のセクタより多くアクセスされたか決定するためにしきい値を用いて識別され、セクタがアクセスされた回数がしきい値を超えた場合に、そのセクタを前記の特定タイプのセクタ情報として指定してもよい。
【００３８】
ファームウェアが、前記不揮発性メモリシステムを管理するように実行され、前記しきい値が該ファームウェアの中にプログラムされていてもよい。
【００３９】
前記特定のタイプのセクタ情報が、ＦＳＩｎｆｏセクタ情報であってもよい。
【００４０】
前記特定のタイプのセクタ情報が更新されるたびに、異なる専用ブロックに書込まれてもよい。
【００４１】
前記特定のタイプのセクタ情報が、オーバーヘッド部分を含み、アクセスカウンタ値が、前記特定のセクタがアクセスされた回数を保持するために用いられ、該アクセスカウンタ値は該オーバーヘッド部分に格納されていてもよい。
【００４２】
本発明の方法は、複数の不揮発性メモリ格納位置を含む不揮発性メモリシステムに対する書込み動作の速度を増加させる方法であって、該方法は、該複数の不揮発性メモリ格納位置を複数のブロックに区分することであって、各ブロックがセクタ情報を格納するための複数のセクタ位置を含む、ことと、頻繁にアクセスされたセクタ情報を格納するための複数のセクタ位置を有する特定の空きブロックを指定することと、該特定のブロックの該複数セクタ位置の該セクタ位置のうちの１つに該頻繁にアクセスされたセクタ情報を書込むことと、更新された頻繁にアクセスされたセクタ情報を受け取ることと、該特定のブロックの次の空きセクタ位置に該更新された頻繁にアクセスされたセクタ情報を書込むことによって該頻繁にアクセスされたセクタ情報を更新することと、該特定のブロックの該セクタを他のブロックに移動させることを回避し、それによって、システム性能を改良することとを包含する。
【００４３】
前記頻繁にアクセスされたセクタ情報は、ＦＳＩｎｆｏセクタ情報であってもよい。
【００４４】
本発明の前述および他の目的、特徴および利点は以下の添付図面中の図を参照した好ましい実施形態の詳細な説明から明らかである。
【発明を実施するための最良の形態】
【００４５】
（好ましい実施形態の詳細な説明）
図２を参照して、本発明の実施形態に従って、不揮発性メモリシステム２０は、前ブロック２２と空きブロック２４とを含むように示されている。不揮発性メモリシステム２０は、複数のブロックに区分された複数の不揮発性メモリ格納位置を含む。各ブロックは、セクタ情報を格納するための複数のセクタ位置からなるグループを含む。セクタ情報は、一般に、ユーザデータとオーバーヘッドデータとを含む。ユーザデータは、写真、音楽などのようなユーザによって格納されることを意図したデータである。オーバーヘッドデータは、ユーザデータに関連する情報（例えば、その位置および／またはエラー情報など）である。さまざまなタイプのセクタ情報は、当業者にとって公知であり、そのうちの１つがＦＳＩｎｆｏセクタである。
【００４６】
前ブロック２２は、特定のタイプのセクタ、すなわち、他より頻繁にアクセスされるセクタを格納することに専門化されている。このタイプのセクタは、セクタがアクセスされる回数の所定のしきい値を使用して検出され、セクタがアクセスされる回数がしきい値を上回る場合には、以下に議論されるように、それは異なって処理される。しきい値は、固定値としてプログラムされており、コントローラの中で、不揮発性メモリシステムの動作を指示しているファームウェアまたはソフトウェアによって使用される。本発明の１つの実施形態において、アクセスカウンタはセクタがアクセスされた回数のトラックを保持するために用いられる。
【００４７】
図２において、ブロック２２の第１セクタのオーバーヘッド部分２５中に、アクセスカウンタ値２１の例が示されている。このセクタはまた、ユーザデータ部２３を含むように示されている。アクセスカウンタは不揮発性メモリを制御するコントローラの中に物理的に位置し、その実施例は、図３で示されるフラッシュコントローラブロック５３２に結合されるアクセスカウンタ５２１で示される。あるいは、アクセスカウンタはコントローラの外に配置され得る。
【００４８】
これらのタイプのセクタを識別する他の方法は、各々と関連してアクセスされた回数の比較による方法であり、セクタがそのように他に比較して多くアクセスされたカテゴリであると検出された場合は、セクタは下記のように特別に処理される。これらの方法の両方において、カウンタ（すなわち、アクセスカウンタ）は、セクタがアクセスされる度ごとに回数を計数するために用いられる。１つの実施形態では、各セクタのカウンタ値は、不揮発性メモリのセクタ情報のオーバーヘッド部分に一般的に格納される。
【００４９】
本発明の１つの実施形態において、例えばＦＡＴ  ３２の例のように、システムトラフィック（ｓｙｓｔｅｍ  ｔｒａｆｆｉｃ）は分析され、ＦＳＩｎｆｏセクタのように他のセクタに比べより頻繁にアクセスされたセクタは、頻繁にアクセスされたセクタとして、またはそのセクタがＶＬＢＡブロックに属しているか否かを検出され、ファイルを書込む間に繰り返しアクセスされる。ＦＳＩｎｆｏセクタは、このタイプのセクタの１つの例である。以下の議論は大部分がＦＳＩｎｆｏセクタに関係している一方、本発明は、いかなるタイプのセクタが他より頻繁にアクセスされようとも適用され、それはＦＳＩｎｆｏセクタに限られていない点、ならびに後者は本発明の単になる例示の実施形態にすぎない点に留意する必要がある。ＦＳＩｎｆｏセクタに関する議論が先に記載されるているが、そのうちの一部分（すなわち、ＦＳＩｎｆｏセクタの機能）については以下に繰り返し記載される。
【００５０】
ＦＡＴ３２タイプのファイルシステムでは、「ＦＳＩｎｆｏ」と称される特別なセクタが使用される。ＦＳＩｎｆｏセクタは、最新の空きクラスタの位置に関する情報によって継続的に更新される。実際に、このことは、時間の掛かる作業であり得る空きクラスタの位置を求めてＦＡＴを検索しなければならないことからファイルシステムソフトウェア（オペレーティングシステム）を救う。
【００５１】
上述したように、ＦＳＩｎｆｏセクタは、頻繁にアクセスされるセクタの単なる一例である。本発明は、他のセクタより頻繁にアクセスされると検出されるか知られているいかなるタイプのセクタにも適用され、データの全てが更新されておらず同じＶＬＢＡブロックに属する場合に不必要な移動の原因となり得るいかなるタイプのセクタにも適用される。与えられたいかなる時間においても、ブロック２２の位置の１つは、ＦＳＩｎｆｏセクタの現在のバージョンを格納する。例えば、ＦＳＩｎｆｏセクタの第１バージョンはブロック２２の位置２６に格納され得、ＦＳＩｎｆｏセクタが更新されるときに、更新されたバージョンは位置２８に格納され得、ブロック２２の全ての位置が、例えば、ブロック当たり２５６セクタあるケースの２５６のように整数である「ｎ」を有するブロック２２の位置「ｎ」で格納されている最新バージョンを有するＦＳＩｎｆｏセクタのさまざまなバージョンによってそれに対して書込まれるまで、依然としてＦＳＩｎｆｏセクタの次のバージョンはブロック２２の位置３０等々に格納されることがあり得る。このように、ＦＳＩｎｆｏセクタが更新されるたびに、それはブロック２２中の新しい（または、次の位置である必要はないが次の）セクタ位置に書込まれ、前のセクタ位置は「古い（ｏｌｄ）」と指定される。読込み動作に際し、この指示により、ＦＳＩｎｆｏセクタの最新バージョンが容易に識別し得る。すなわち、ＦＳＩｎｆｏセクタの最新バージョンを含むセクタ位置は、「古い」以外の指示を有する一方、ＦＳＩｎｆｏセクタの前バージョンを含む全てのセクタ位置は、「古い」の指示を有する。ＦＳＩｎｆｏセクタの最新バージョンを識別する他の方法がある。一つの方法は、ＦＳＩｎｆｏセクタの最新バージョンを含むセクタ位置を識別するＬＢＡ値を見逃さないことである。
【００５２】
一旦ブロック２２がになると、すなわち、そのセクタ位置の全てがＦＳＩｎｆｏセクタの種々のバージョンによって、それに対し書込みされると、ブロック２４がそれに書込みされ、ブロック２２は消去される準備が整い、同じ「古い」の指示が行われる。再び、ブロック２４に関して、ブロック２２と同様に、ＦＳＩｎｆｏセクタが更新される度に、ＦＳＩｎｆｏセクタがそれのセクタ位置に書込まれる。前述のように、従来の技術のＦＳＩｎｆｏセクタのアップデーティングである繰返し（ｒｅｉｔｅｒａｔｅ）は、前のブロックの「良い」セクタを他のブロックに移すこと（すなわち読込み及び書込み）を必要とし、時間の掛かる動作、すなわち多くの読出しおよび書込み動作、になっていたが、この繰返し動作は本発明においては行う必要がない。
【００５３】
本発明において、ＦＳＩｎｆｏセクタが更新される場合には、１ブロックの「良い」セクタの全てを他のブロックに移すことはなく、従って、従来技術のシステムでは存在していたような、例えばセクタ２５５をブロック２２からブロック２４に移すような必要がない。
【００５４】
図２の実施形態において、新規のブロック内のセクタよりむしろ、同じブロック２２内の次の空いているセクタ位置が、ＦＳＩｎｆｏセクタの更新されたかまたはごく最近のバージョンを格納するために使用される。
【００５５】
本発明において、ＦＳＩｎｆｏセクタが更新されるたびに、書込み動作が発生する。本発明において、ブロック２２のセクタをブロック２４に移す、すなわち、読込み及び書込みを行う必要がない。ブロック２２は、ＦＳＩｎｆｏセクタ以外のいかなる他のタイプのセクタをも格納せず、ＦＳＩｎｆｏセクタのみを格納することに専任する。ブロック２２のセクタ位置の全てに対する書込みが完了し、かつ、ＦＳＩｎｆｏセクタの次の更新を受信し、それを新規のブロックに格納すると、ブロック２２は消去される。
【００５６】
本発明の他の実施形態において、１つ以上のセクタが異なるように扱われる。すなわち、他よりもより頻繁にアクセスされ、常に１ブロックを専用にする１タイプ以上のセクタがある。これは、おそらく実施例を用いることにより最も良く理解される。
【００５７】
ＬＢＡ  ０およびＬＢＡ  ５０によって識別されるそのセクタが他に比べより頻繁にアクセスされる場合には、ＬＢＡ  ０が書込まれる度に、それは不揮発性メモリ内の特定のブロックに書込まれ、それに続きＬＢＡ  ５０が書込まれる場合に、それがまた特定のブロックに書込まれて、また再度ＬＢＡ  ０が再書込みされるときに、従来の技術によって実行されるように異なるブロックに書込まれるよりはむしろ、特定のブロック（最初の２つの位置がＬＢＡ  ０およびＬＢＡ  ５０への最初の書込みによって占有されているので、おそらく、第３の位置に）に書込まれる。次に、セクタ５０の再書込みにより、それも、特定のブロックのすべてのセクタがそこに書込まれるまでは、特定のブロック等などに書込まれる。その後、異なるブロックは、ＬＢＡ  ０およびＬＢＡ  ５０の次の再書込みが実行され、特定のブロックが消去されることに専任する。
【００５８】
本発明の別の実施形態は、他のセクタより頻繁にアクセスされたと認められる特定のセクタを、それが書込まれる度に、同じ専用のブロックに対するのとは反対に、異なるブロックに書込むことを包含する。
【００５９】
この種の実施形態の実施例を、図２ａに示す。図２ａでは、ブロック４４、４６および４８は、他より頻繁にアクセスを受ける特別なセクタとして指定されている。この場合において、例えば、ＬＢＡ  ０によって識別されるセクタ情報は頻繁にアクセスされ、書込まれるたびに、それは異なるブロックに書込まれる。それが最初に書込まれるときは、ブロック４４のセクタ位置５０に書込まれ、２回目に書込まれるときは、例えばブロック４８の位置５４に対する情報他の書込みのようにブロック４６の位置５２などに書込まれる。これは、いかなる移動動作を回避し、それによってシステム性能を増加させる。欠点は、多くのブロックを処理する場合には、すなわち、ＬＡＢ  ０セクタ情報が書込まれる４４、４６および４８のようなブロック数が非常に多い場合には、多くのブロックは、「空」のままかまたはそれに対して書込まれていて、このように、ある時点でそれらが「閉鎖（ｃｌｏｓｅｄ）」されるか、または、更なる使用をしないことを宣言し、再び使用される前に消去されるまで、他のタイプの情報を書込むために用いることができない。
【００６０】
図２ｂは、不揮発性メモリシステム２０によって頻繁にアクセスされたセクタの処理を示す。図２ｂで、システム２０はブロック０、ブロック１およびブロックＭを含むことを示しており、多くのブロックが使用され得る。ブロック０、１およびＭが説明の便宜上図示してある。
【００６１】
各ブロックは、セクタ情報（すなわち、ユーザデータおよびオーバーヘッド情報）を格納するための所定数（例えば、１６）のセクタ格納位置を含む。ブロック０は、ＶＰＢＡ  ０によって識別されるかまたはアドレス指定され、ブロック１は、ＶＰＢＡ  １によって識別され、ブロックＭは、例えば、ＶＰＢＡ  １７によって識別される。セクタ格納位置のそれぞれは、特定のＰＢＡによって識別される。例えば、ブロック０の最初のセクタ格納位置６０は、ＰＢＡ  ０によって識別され、ブロック０の最後のセクタ格納位置６２はＰＢＡ  １５によって識別されるかまたはアドレス指定される。図示されていないが、図２ｂの残りのブロックは、それぞれのセクタ格納位置の類似なＰＢＡアドレス指定を包含する。
【００６２】
図２ｂの実施例において、ＬＢＡ  １５は、ホストによってそれについて頻繁にアクセスするために選択され、このようにこの議論の主なる目標である。前述で議論したように、他のいかなるセクタも、頻繁にアクセスされたセクタに指定されることがあり得る点に留意する必要がある。セクタ１５として、時々引用されるブロックＭは、ＬＢＡ  １５によって識別されるセクタに対する更新を格納するための専用のブロックとして機能する。
【００６３】
まず、セクタは、ブロック０のセクタ格納位置に書込まれる。これらのセクタが再書込みされる際、それらは、セクタ１５以外のブロック１のセクタ、またはＬＢＡ  １５によって識別されるセクタに書込まれる。すなわち、セクタ１５をブロック１に書込むよりも、セクタ１５に対する次の更新として専用ブロック、この場合にはブロックＭ、に書込まれる。このように、セクタ１５が、セクタの連続番号の一部、すなわちセクタ０〜１５としてか、さもなくば、ランダム書込み動作のように更新されるたびに、ブロックＭ内の未使用または使用可能なセクタ位置に書込まれる。最初に更新されると、セクタ位置６６に書込まれ得、次に更新されるとき、それがセクタ位置６８に書込まれ得る等々それはセクタ位置７０に書込まれるまで続く。その後で、他の利用可能なブロックは、セクタ１５の更新を含むように割り当てられる。
【００６４】
図３は、本発明の実施形態を使用する、例えば、ディジタルカメラ、パーソナルコンピュータ等のディジタルシステム５００を表す。ディジタルシステム５００は、ディジタルシステムで一般に使用されているいかなる汎型のパーソナルコンピュータ（ＰＣ）もしくは単なるプロセッサであり得るホスト５０２を含むように図示されており、不揮発性メモリ装置５０８に格納し、不揮発性メモリユニット５０８からの情報を取出すコントローラ回路５０６に接続されている。本発明の１つの実施形態において、メモリユニット５０８は、図２の不揮発性メモリシステム２０を含み、前述の先行図に関して記載されているのと同様に管理される。
【００６５】
コントローラ回路５０６は、半導体（さもなければ「集積回路」または「チップ」と呼ばれる）またはさまざまな電子部品の任意選択の組合せであり得る。好ましい実施形態において、コントローラ回路はシングルチップデバイスとして描かれている。不揮発性メモリ装置５０８は１つ以上のメモリ装置で構成され、それは各々フラッシュまたはＥＥＰＲＯＭタイプのメモリであり得る。図３の好ましい実施形態において、メモリ装置５０８は複数のフラッシュメモリ装置５１０〜５１２を含み、各々のフラッシュ装置は、情報を格納する個々にアドレス指定可能な位置を包含する。図３の実施形態の好ましい応用において、このような情報は、複数のブロックに区分される。各ブロックは、１つ以上のセクタのデータを有する。そのデータに加えて、格納されている情報は、フラグフィールド（ｆｌａｇ  ｆｉｅｌｄ）、アドレス情報などのデータブロックに関するステータス情報を更に含み得る。
【００６６】
ホスト５０２は、コントローラ回路５０６にホスト情報信号５０４を通じて結合されている。ホスト情報信号は、コントローラ回路５０６に対する命令、データおよび他のタイプの情報を通信するためのアドレスおよびデータバスとコントロール信号を含み、フラシュアドレスバス５１２、フラシュデータバス５１４、フラシュ信号５１６およびフラシュステータス信号５１８（５０８および５１２〜５１６は集合的に信号５３８と呼ばれる）を通じて交互にその種の情報をメモリ装置５０８に格納する。信号５３８は、コントローラ５０６と格納装置５０８との間の命令、データおよびステータス情報を提供し得る。
【００６７】
コントローラ５０６は、高水準機能ブロック、例えば、ホストインタフェースブロック５２０と、バッファーＲＡＭブロック５２２と、フラッシュコントローラブロック５３２と、マイクロプロセッサブロック５２４と、マイクロプロセッサコントローラブロック５２８と、マイクロプロセッサメモリ装置ブロック５３０と、マイクロプロセッサＲＯＭブロック５３４と、ＥＣＣロジックブロック５４０と、スペース管理者ブロック５４４とを含むように示される。ホストインタフェースブロック５２０は、ホスト情報信号５０４を通じ、バッファーＲＡＭブロック５２２とマイクロプロセッサブロック５２４とからホスト５０２にデータおよびステータス情報を提供するホスト情報信号５０４を受信する。ホストインタフェースブロック５２０は、アドレスバスと、データバスと、制御信号とを含むマイクロプロセッサ情報信号５２６を介してマイクロプロセッサブロック５２４に結合されている。
【００６８】
マイクロプロセッサブロック５２４は、図示のようにマイクロプロセッサコントローラブロック５２８と、マイクロプロセッサメモリ装置ブロック５３０と、マイクロプロセッサＲＯＭブロック５３４とに結合されており、マイクロプロセッサメモリブロック５３０およびマイクロプロセッサＲＯＭブロック５３４に格納されているプログラム命令を実行することによってコントローラ５０６の中で図３で示される種々の機能ブロックの動作を指示する役目をする。マイクロプロセッサ５２４は、時々、不揮発性メモリ領域であるマイクロプロセッサＲＯＭブロック５３４からのプログラム命令（またはコード）を実行することがあり得る。他方、マイクロプロセッサの格納ブロック５３０は、揮発性（すなわち、読み書きメモリ（ＲＡＭ）のタイプ）、もしくは、不揮発性（すなわち、ＥＥＰＲＯＭという格納メモリのタイプ）のいずれかであり得る。集合的にプログラムコードと呼ばれるマイクロプロセッサブロック５２４によって実行される命令は、本発明システムの動作を開始する前のある時に格納ブロック５３０に格納される。初めに、マイクロプロセッサ格納位置５３０からのプログラムコードの実行の前に、プログラムコードは、メモリ装置５０８に格納され得、その後、信号５３８を通じてメモリブロック５３０にダウンロードされ得る。この初期化の間、マイクロプロセッサブロック５２４は、ＲＯＭブロック５３４からの命令を実行することができる。
【００６９】
コントローラ５０６は、マイクロプロセッサの指示のもとにメモリユニットから及びメモリユニットへ情報を提供し受信するために、マイクロプロセッサ情報信号５２６を通じマイクロプロセッサブロック５２４に結合されるフラッシュコントローラブロック５３２を更に包含する。データのような情報は、マイクロプロセッサ信号５２６を通じてフラッシュコントローラブロック５３２からそこに格納する（単なる一時格納であり得る）ために、バッファーＲＡＭブロック５２２に提供され得る。同様に、マイクロプロセッサ信号５２６を通じ、データはフラッシュコントローラブロック５３２によってバッファーＲＡＭブロック５２２から取出される得る。
【００７０】
ＥＣＣロジックブロック５４０は、信号５４２を通じてバッファーＲＡＭブロック５２２に接続されおり、更に、マイクロプロセッサ信号５２６を通じてマイクロプロセッサブロック５２４に接続されている。ＥＣＣロジックブロック５４０は、一般に実行しているエラーコーディング（ｅｒｒｏｒ  ｃｏｄｉｎｇ）および訂正機能のための回路（ｃｉｒｃｕｉｔｒｙ）を包含する。さまざまなＥＣＣ装置およびアルゴリズムは、商業的に入手可能で、ＥＣＣロジックブロック５４０の中で必要とされる機能を実行するために使用され得ることを当業者によってよく理解されなければならない。簡潔にいうと、これらの機能は、多項式から伝送されているデータまで全ての強い目的のために独自に生成されるコードを追加すること（ａｐｐｅｎｄｉｎｇ）を含み、データが受信された場合には、データを壊したかも知れない所定のエラー回数を検出し、潜在的に矯正するために受信データから他のコードを生成するために同じ多項式を使用することを含む。ＥＣＣロジックブロック５４０は、格納装置５０８に格納されているデータまたはホスト５０２から受信しているデータにつきエラー検出および／または訂正動作を実行する。
【００７１】
スペース管理者ブロック５４４は、他の図を参照して本願明細書において更に説明するように、１群の情報を格納するフラッシュメモリ装置のうちの１つの中で次の未使用の（または空いている）格納ブロックを見つけるため好ましい装置およびアルゴリズムを使用する。前に検討したように、フラッシュメモリ装置の１台中のブロックのアドレスは、ＶＰＢＡと呼ばれ、それはホストから受け取るＬＢＡの翻訳を実行することによってスペース管理者により決定される。種々の装置および方法は、この翻訳を達成するために使用され得る。この種の計画の実施例は米国特許第５，８４５，３１３号において、「Ｄｉｒｅｃｔ  Ｌｏｇｉｃ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」という題名で開示され、その明細書はここに援用されている。他のＬＢＡからＰＢＡへの翻訳方法および装置は、本発明の範囲および趣旨から逸脱することなく同様に使用し得る。
【００７２】
スペース管理者ブロック５４４はＳＰＭ  ＲＡＭブロック５４８およびＳＰＭ制御ブロック５４６を含み、後者の２つのブロックは一つに結合されている。ＳＰＭ  ＲＡＭブロック５４８は、ＳＰＭ制御ブロック５４６の制御のもとでＬＢＡ‐ＰＢＡマッピング情報（本願明細書において他には翻訳テーブル、マッピングテーブル、マッピング情報またはテーブルと呼ばれている）を格納する。このマッピングは、また、不揮発性メモリにおいても保持することができる。または、ＳＰＭ  ＲＡＭブロック５４８は、ＲＡＭアレー（ａｒｒａｙ）１００に関して図３に示すようにコントローラの外側に位置することがあり得る。
【００７３】
ＲＡＭメモリは、ホストによって提供されたＬＢＡと同じアドレスによってアドレス指定可能に配置さてれいる。ＲＡＭのこの種の各々のアドレス可能位置は、ホストによって予想される不揮発性大容量格納のデータの実アドレスを保持するフィールドを包含する。
【００７４】
最終的に、ブロックが不揮発性メモリでアドレス指定を受ける方法は、各々のブロック毎に変更を加えられたＬＢＡである仮想論理ブロックアドレス（ＶＬＢＡ）によってである。セクタが各々のブロックでアドレス指定を受ける方法は、仮想物理ブロックアドレス（ＶＰＢＡ）の使用によってである。ＶＰＢＡ位置は、一般に特定のＬＢＡ値に対応するＰＢＡ値を示す情報を格納するためのものである。
【００７５】
動作において、例えば、コントローラ５０６を介し読込み動作または書込み動作の行為中に、ホスト５０２がメモリ装置５０８から及びメモリ装置５０８に情報を書込みを行い、読込みを行う。それによって、ホスト５０２はホスト信号５０４を通じコントローラ５０６にＬＢＡを供給する。ＬＢＡは、ホストインターフェースブロック５２０によって受信される。マイクロプロセッサブロック５２４の指示によって、ＬＢＡはＰＢＡに対する翻訳およびその格納のためにスペース管理者ブロック５４４へ最終的に供給される。本件は以下でもっと詳細に議論される。
【００７６】
マイクロプロセッサブロック５２４の指示によって、データおよび他の情報は、ＰＢＡによって識別されフラッシュコントローラブロック５３２を介してフラシュメモリ装置５１０〜５１２の１つの範囲の格納域に書込まれるかまたはその格納域から読み込まれる。フラッシュメモリ装置内に格納される情報は、前述において議論したよう、先に消去されなければ新しい情報で上書きされ得ない。他方、１ブロックの情報の消去は（常に書込まれる以前の）、時間と力を非常に消費する手段である。これは、時々書込み前消去動作と呼ばれる。好ましい実施形態では、この種の動作を連続的で、しかも効率的に１セクタ（または複数セクタ）の情報をブロック内で移すことにより避けている、すなわち、これはメモリ装置５０８内で、フラッシュメモリ内のＰＢＡ位置から未使用ＰＢＡ位置へ再書込みされることであり、それによって頻繁な消去動作を避けている。１ブロックの情報は、１６または３２セクタのような１以上のセクタから構成されることがあり得る。１ブロックの情報は、個々に消去可能な情報のユニットであるために更に定義される。過去において、従来技術システムは、前に書込まれていたフラッシュメモリ装置に格納されたブロックをフラシュメモリ装置の空いている（または未使用の）位置に移していた。しかし、そのようなシステムは、そのブロック内のたった１つのセクタの情報が再書込されるときでさえも全てのブロックを移行していた。換言すれば、ブロック内の全数より少ないセクタが再書込みされる際、フラッシュメモリ内でブロック全体の内容を移すことによる両格納容量の無駄があり、同じく時間の無駄もあった。本願明細書において議論されるように、本発明の好ましい実施形態は、１ブロック未満の情報の「移動」を可能にし、それによって事前に書込まれたセクタの移行動作の数を減少させ、結果として、消去動作の数を減少させている。
【００７７】
本発明が特有の実施形態に関して記載されていたにもかかわらず、本発明の変更および修正が間違いなく当業者にとって明らかになることを期待している。それ故、本願の請求の範囲は、そのようなすべての変更および修正を包含し、それらは本発明の真の精神および範囲に含まれる。
【図面の簡単な説明】
【００７８】
【図１】従来技術である不揮発性メモリシステム１０を示す図
【図２】本発明の実施形態に従ったディジタル機器システム５０を示す図
【図２ａ】本発明の他の実施形態を示す図
【図２ｂ】不揮発性メモリシステム２０によって頻繁にアクセスされたセクタの処理を示す図
【図３】本発明の実施形態に従い、ディジタルカメラのように図２の不揮発性メモリシステム２０を使用するディジタルシステム５００のハイレベルのブロック図
【図１】
2005182793.tif 000003
【図２】
2005182793.tif 000004
【図２ａ】
2005182793.tif 000005
【図２ｂ】
2005182793.tif 000006
【図３】
2005182793.tif 000007