(57)【特許請求の範囲】
【請求項１】
複数の物理ユニットから構成されるメモリを管理する方法であって、
前記物理ユニットの各々は複数の物理ブロックから構成され、
前記物理ブロックの各々は、前記物理ユニット内でのそれぞれの物理ブロックオフセットを有しており、
前記物理ユニットは消去可能なメモリの最も小さい部分であり、
前記物理ブロックは書き込み可能なメモリの最も小さい部分であり、
（ａ）  複数の仮想ユニットであって、前記仮想ユニットの各々が複数の仮想ブロックを含み、前記仮想ブロックの各々が前記仮想ユニット内でのそれぞれの仮想ブロックオフセットを有する複数の仮想ユニットを提供するステップ；
（ｂ）  目的の仮想ブロックにデータを書き込む命令を受信するステップ；
（ｃ）  前記目的の仮想ブロックを含む前記仮想ユニットを突き止めるステップ；
（ｄ）  前記目的の仮想ブロックを含む前記仮想ユニットを、対応する第１の物理ユニットのチェーンにマッピングするステップ；
（ｅ）  前記第１の物理ユニット内での物理ブロックオフセットが、前記目的の仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい物理ブロックが、書き込まれた状態であり、
また、前記第１の物理ユニットが、少なくとも２つの物理ユニットからなるチェーンの第１番目の物理ユニットであって、
前記チェーンの全ての他の物理ユニットに対して、前記チェーンの前記他の物理ユニット内での物理ブロックオフセットが、前記仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい前記他の物理ユニットの物理ブロックも、書き込まれた状態であるときは：
前記データを書き込むための未書込みの物理ユニットを探すステップ；
（ｆ）  前記未書込みの物理ユニットを見つけられなかったときに：
物理ユニットのチェーンを、前記チェーンの最終物理ユニットにフォールディングするステップ
を含む方法。
【請求項２】
（ｇ）  前記未書込み物理ユニットを見つけたときに：
前記データを、前記未書込み物理ユニットに書き込むステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
（ｇ）  前記フォールディングに続いて：
前記チェーンの前記最終物理ユニットを除く前記チェーンの全ての物理ユニットを消去するステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記フォールディングが、前記未書込みの物理ユニットを見つけることができなかったときだけ実行されることを特徴とする請求項１に記載の方法。
【請求項５】
複数の物理ユニットから構成されるメモリを管理する方法であって、
前記物理ユニットの各々は複数の物理ブロックから構成され、
前記物理ブロックの各々は、前記物理ユニット内でのそれぞれの物理ブロックオフセットを有しており、
前記物理ユニットは消去可能なメモリの最も小さい部分であり、
前記物理ブロックは書き込み可能なメモリの最も小さい部分であり、
（ａ）  複数の仮想ユニットであって、前記仮想ユニットの各々が複数の仮想ブロックを含み、前記仮想ブロックの各々が前記仮想ユニット内でのそれぞれの仮想ブロックオフセットを有する複数の仮想ユニットを提供するステップ；
（ｂ）  目的の仮想ブロックにデータを書き込む命令を受信するステップ；
（ｃ）  前記目的の仮想ブロックを含む前記仮想ユニットを突き止めるステップ；
（ｄ）  前記目的の仮想ブロックを含む前記仮想ユニットを、対応する第１の物理ユニットにマッピングするステップ；
（ｅ）  前記第１の物理ユニット内での物理ブロックオフセットが、前記目的の仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい物理ブロックが未書込みの状態にあるときは：
前記第１の物理ユニット内での物理ブロックオフセットが、前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい前記物理ブロックに、前記データを書き込むステップ；
（ｆ）  さもなければ：
前記第１の物理ユニットが、置換物理ユニットと関連付けられていないときは：
（i）  前記第１の物理ユニットを一つの未書込み物理ユニットに関連付け、前記一つの未書込み物理ユニットを前記置換物理ユニットとし、そして、
（ii）  前記置換物理ユニット内での物理ブロックオフセットが、前記目的の仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい物理ブロックに、前記データを書き込むステップ；
（ｇ）  さもなければ：
（i）  前記置換物理ユニット内での物理ブロックオフセットが、前記目的の仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい物理ブロックが、未書込みの状態にあるときは：
前記置換物理ユニット内での物理ブロックオフセットが、前記目的の仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい前記物理ブロックに、前記データを書き込むステップ；
（ii）  さもなければ：
前記置換物理ユニットにおいて未書込み物理ブロックを探すステップ
を含む方法。
【請求項６】
（ｈ）  前記置換物理ユニットで前記未書込み物理ユニットを見つけたときに：
前記未書込み物理ブロックに前記データを書き込むステップ
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
（ｈ）  前記置換物理ユニットにおいて前記未書込み物理ユニットを見つけられないときに：
前記置換物理ユニットが単一置換ユニットであるときは：
前記第１の物理ユニットを前記置換物理ユニットにフォールディングするステップ
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項８】
（ｉ）  前記第１の物理ユニット内での物理ブロックオフセットが、前記目的の仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい前記第１の物理ユニットの前記物理ブロックに前記データを書き込むときに：
前記第１の物理ユニット内での物理ブロックオフセットが、前記目的の仮想ブロックを含む前記仮想ユニット内での前記目的の仮想ブロックの前記仮想ブロックオフセットと等しい前記第１の物理ユニットの前記物理ブロックを、前記目的の仮想ブロックと関連付けるステップ；
（ｊ）  前記置換物理ユニットの物理ブロックに前記データを書き込むときに：
以前に前記目的の仮想ブロックと関連付けられた物理ブロックに代えて、前記置換物理ユニットの前記物理ブロックを前記目的の仮想ブロックと関連付けるステップ；そして、
（ｋ）  前記置換物理ユニットにおいて前記未書込み物理ブロックを見つけられないときに：
前記置換物理ユニットが、複合置換物理ユニットであるときは：
仮想ブロックと関連付けられている前記第１の物理ユニットと前記置換物理ユニットの前記物理ブロックを、未書込み物理ユニットにコピーするステップ
をさらに含むことを特徴とする請求項６に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュデバイスのデータ格納の処理を行うシステムに関し、さらに詳細には、フラッシュディスクとして機能することができるページモードフラッシュデバイスで情報の格納および検索を行うシステムに関する。
【０００２】
【従来の技術】
フラッシュデバイスは、フラッシュ型浮遊ゲートトランジスタで形成される電気的消去可能プログラマブル読出し専用メモリ（ＥＥＰＲＯＭ）を含み、機能および性能に関してＥＰＲＯＭメモリと類似である不揮発性メモリであり、メモリのページを消去する回路内部においてプログラム可能な操作を実現することができる付加的な機能を備えている。フラッシュデバイスは、従来の磁気記憶ディスクに比べて、比較的廉価で、比較的電力が少なくて済むという利点を備えている。しかし、フラッシュデバイスにおいて、その領域の以前のページを消去せずに、以前に書込んだ領域に再書込みを行うことは実際的ではない。フラッシュデバイスにはこのような制限があるために代表的な既存のオペレーティングシステムプログラムと共存することはできない。データが以前に書込まれた領域を最初に消去しない限り、フラッシュデバイスの中にあるメモリの領域にデータを書込むことができないからである。
【０００３】
ソフトウェア製品が従来技術において提案してきたことは、オペレーティングシステムプログラムの修正を行うことなく、フラッシュデバイスを既存のコンピュータオペレーティングプログラムによって処理することができることであった。しかし、このような従来技術プログラムはすべて、欠点を持っている。たとえば、あるプログラムはフラッシュメモリを「追記型」装置として作動させる。この従来のソフトウェア製品は、以前に書込んだ記憶位置を再利用することができない。結局すべての位置が書込まれた場合には、特定の利用者の介在なしに、メモリをそれ以上使用することはできない。他の従来技術プログラムは、ＳａｎＤｉｓｋによって提案されたプログラムのように、新たなデータがページに書込まれることになるたびに、メモリページ全体を消去し、再書込みを行う。このようなシステムは複数の消去サイクルを必要とするという欠点があり、これらのサイクルは比較的遅い上、非効率的であり、物理的な媒体そのものの急速な劣化を引き起こす。
【０００４】
従来技術のこのような欠点を克服するために、フラッシュファイルシステム（ＦＦＳ）が米国特許第５，４０４，４８５号に開示され、参照として本願に包含される。ＦＦＳはフラッシュデバイスにデータ格納およびデータ操作のシステムを提供し、これらのデバイスに磁気ディスクを基にしたデータ格納をエミュレートすることができるようにした。上記のように、比較的廉価であると共に電力消費が少ないため、フラッシュデバイスはデータ格納、特にラップトップのポータブルコンピュータに好都合な選択となる。ＦＦＳは磁気ディスク記憶装置の代わりとして作用するフラッシュデバイスの能力を強化する。さらに言えば、ＦＦＳは、米国特許第５，４０４，４８５号に開示されたように、きわめて有用であることが判明したため、データ形式の仕様は、フラッシュ変換層（ＦＴＬ）と呼ばれる規格として、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）およびＪＥＩＤＡ（日本電子工業振興協会）の委員会によって採用された。
【０００５】
ＦＦＳは本来、フラッシュＥＥＰＲＯＭ装置のための仮想マッピングシステムを表している。仮想マップは、フラッシュデバイス内部の読取り／書込みブロックの物理アドレスをそのブロックの仮想アドレスと関連付ける表である。これらのブロックのそれぞれは比較的小さいため、５１２バイト、すなわち仮想マップ自体のサイズは相当大きい。ＦＦＳはまた、フラッシュＥＥＰＲＯＭ装置に仮想マップの容量に格納および維持し、仮想マップの格納に必要な他のメモリの量を最小限に抑える方法を含む。
【０００６】
上記のように、ＦＦＳは、フラッシュデバイスを磁気ディスク記憶装置のエミュレータに変形する場合に特にうまくいくことが判明し、産業規格として採用されたほどである。しかしながら、ＦＦＳは、さらに新たなフラッシュデバイス技術の要件をすべて満たすことはできない。特に、ＦＦＳはＮＡＮＤおよびＡＮＤフラッシュ技術の場合にはうまくいかない。
【０００７】
従来技術のフラッシュメモリアーキテクチャのある種の欠点、特に書込み前に消去するシステムの欠点を克服しようとする試みの別の例は、米国特許第５，４７９，６３８号に開示される。米国特許第５，４７９，６３８号のシステムにおいて、書込み済みのブロックに対してさらにプログラムの書込みがさらに必要である場合には、特定の読出し／書込みブロックの物理的な位置がシフトされる。しかし、このシステムは、一度に５１２バイトの単一の読出し／書込みブロックを消去することができるフラッシュデバイスを利用して操作されることができるにすぎないという欠点を持っている。このような要件はハードウェアレベルで実装されるため、このシステムはまた、さらに新たなＮＡＮＤおよびＡＮＤフラッシュ技術に対して使用されることはできない。
【０００８】
【発明が解決しようとする課題】
ＮＡＮＤおよびＡＮＤは多くの点に関して、以前のフラッシュデバイスと異なる。第一に、消去可能なユニットサイズは、以前のフラッシュデバイスの６４ＫＢとは対照的に、ＮＡＮＤおよびＡＮＤの場合には約８ＫＢと小さめである。第二に、単一バイトを消去するために必要な時間として測定された場合であっても、ＮＡＮＤおよびＡＮＤの場合、消去時間が相当速い。第三に、フラッシュメモリはＮＡＮＤおよびＡＮＤのために長さ２５６または５１２バイトのページに分割され、ハードウェアデバイス自体の不変の特性である。「ページ」および「ブロック」の特有の特性はある程度異なるが、ここで使用している「ページ」なる語は、以前のフラッシュ技術で使用される「ブロック」なる語と概ね同意義であることに留意すべきである。このような特徴は、ＮＡＮＤおよびＡＮＤ技術に基づくフラッシュデバイスの動作に非常に密接な関係がある。
【０００９】
第一に、ページモードメモリは、１ページまたは任意のページを書込むための固定オーバヘッドを備える。対照してみると、従来のフラッシュ技術における書込み動作のためのオーバヘッドは、書込まれたバイト数に比例した。第二に、各ページが特にアドレス呼出し可能である複数の予備バイトを有するように、ＮＡＮＤおよびＡＮＤにおけるフラッシュメモリは構成される。このような予備バイトは、フラッシュメモリシステムに関する情報の格納に好都合な位置にある。最後に、消去される前にページを書込むことができる回数に制限がある。事前の消去を行うことなくさらに書込む場合は信頼性に欠けることを考慮して、この制限は比較的低く、８または１０回である。したがって、ページモードメモリは、成功するデータの格納および検索に対して、重要な利点および新たな難題の両方を有する。
【００１０】
不幸なことに、上記のように、一般に利用可能な従来技術のデータ処理システム、すなわちＦＦＳは、ページモードにおけるフラッシュメモリの動作に関して、重大な欠点がある。特に、ページモードプログラミングによって課せられる制限のために、ＦＦＳはＮＡＮＤおよびＡＮＤなどのページモードフラッシュ技術では最適でない性能を例証する。さらに、ブロックごとの消去動作に必要な要件のために、米国特許第５，４７９，６３８号に開示されたシステムも、このようなフラッシュ技術に対して使用することができない。
【００１１】
したがって、以前の非ページモードフラッシュデバイスの上で未だ利用可能であるが、ページモードフラッシュ技術の性能を最適化するようなＮＡＮＤおよびＡＮＤフラッシュデバイスの上でデータ格納を処理するためのシステムが必要であり、そのようなシステムを備えることは大いに好都合であると思われる。
【００１２】
【課題を解決するための手段】
第１の本発明は、複数の物理ユニットから構成されるメモリを管理する方法であって、物理ユニットの各々は複数の物理ブロックから構成され、物理ブロックの各々は、物理ユニット内でのそれぞれの物理ブロックオフセットを有しており、物理ユニットは消去可能なメモリの最も小さい部分であり、物理ブロックは書き込み可能なメモリの最も小さい部分である。本方法は、（ａ）複数の仮想ユニットであって、仮想ユニットの各々が複数の仮想ブロックを含み、仮想ブロックの各々が仮想ユニット内でのそれぞれの仮想ブロックオフセットを有する複数の仮想ユニットを提供するステップ；（ｂ）目的の仮想ブロックにデータを書き込む命令を受信するステップ；（ｃ）目的の仮想ブロックを含む仮想ユニットを突き止めるステップ；（ｄ）目的の仮想ブロックを含む仮想ユニットを、対応する第１の物理ユニットのチェーンにマッピングするステップ；（ｅ）第１の物理ユニット内での物理ブロックオフセットが、目的の仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい物理ブロックが、書き込まれた状態であり、また、第１の物理ユニットが、少なくとも２つの物理ユニットからなるチェーンの第１番目の物理ユニットであって、チェーンの全ての他の物理ユニットに対して、チェーンの他の物理ユニット内での物理ブロックオフセットが、仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい他の物理ユニットの物理ブロックも、書き込まれた状態であるときは：データを書き込むための未書込みの物理ユニットを探すステップ；（ｆ）未書込みの物理ユニットを見つけられなかったときに：物理ユニットのチェーンを、チェーンの最終物理ユニットにフォールディングするステップ、を含む。
【００１３】
本方法はさらに、（ｇ）未書込み物理ユニットを見つけたときに：データを、未書込み物理ユニットに書き込むステップ、を含むことが好ましい。本方法はさらに、（ｇ）フォールディングに続いて：チェーンの最終物理ユニットを除くチェーンの全ての物理ユニットを消去するステップ、を含むことが好ましい。本方法はまた、フォールディングが、未書込みの物理ユニットを見つけることができなかったときだけ実行されるように構成されることが好ましい。
【００１４】
第２の本発明は、複数の物理ユニットから構成されるメモリを管理する方法であって、物理ユニットの各々は複数の物理ブロックから構成され、物理ブロックの各々は、物理ユニット内でのそれぞれの物理ブロックオフセットを有しており、物理ユニットは消去可能なメモリの最も小さい部分であり、物理ブロックは書き込み可能なメモリの最も小さい部分である。本方法は、（ａ）複数の仮想ユニットであって、仮想ユニットの各々が複数の仮想ブロックを含み、仮想ブロックの各々が仮想ユニット内でのそれぞれの仮想ブロックオフセットを有する複数の仮想ユニットを提供するステップ；（ｂ）目的の仮想ブロックにデータを書き込む命令を受信するステップ；（ｃ）目的の仮想ブロックを含む仮想ユニットを突き止めるステップ；（ｄ）目的の仮想ブロックを含む仮想ユニットを、対応する第１の物理ユニットにマッピングするステップ；（ｅ）第１の物理ユニット内での物理ブロックオフセットが、目的の仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい物理ブロックが未書込みの状態にあるときは：第１の物理ユニット内での物理ブロックオフセットが、仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい物理ブロックに、データを書き込むステップ；（ｆ）さもなければ：第１の物理ユニットが、置換物理ユニットと関連付けられていないときは：（i）第１の物理ユニットを一つの未書込み物理ユニットに関連付け、一つの未書込み物理ユニットを置換物理ユニットとし、そして、（ii）置換物理ユニット内での物理ブロックオフセットが、目的の仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい物理ブロックに、データを書き込むステップ；（ｇ）さもなければ：（i）置換物理ユニット内での物理ブロックオフセットが、目的の仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい物理ブロックが、未書込みの状態にあるときは：置換物理ユニット内での物理ブロックオフセットが、目的の仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい物理ブロックに、データを書き込むステップ；（ii）さもなければ：置換物理ユニットにおいて未書込み物理ブロックを探すステップ、を含む。
【００１５】
本方法はさらに、（ｈ）置換物理ユニットで未書込み物理ユニットを見つけたときに：未書込み物理ブロックにデータを書き込むステップ、を含むことが好ましい。本方法はさらに、（ｈ）置換物理ユニットにおいて未書込み物理ユニットを見つけられないときに：置換物理ユニットが単一置換ユニットであるときは：第１の物理ユニットを置換物理ユニットにフォールディングするステップ、を含むことが好ましい。
【００１６】
本発明はさらに、（ｉ）第１の物理ユニット内での物理ブロックオフセットが、目的の仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい第１の物理ユニットの物理ブロックにデータを書き込むときに：第１の物理ユニット内での物理ブロックオフセットが、目的の仮想ブロックを含む仮想ユニット内での目的の仮想ブロックの仮想ブロックオフセットと等しい第１の物理ユニットの物理ブロックを、目的の仮想ブロックと関連付けるステップ；（ｊ）置換物理ユニットの物理ブロックにデータを書き込むときに：以前に目的の仮想ブロックと関連付けられた物理ブロックに代えて、置換物理ユニットの物理ブロックを目的の仮想ブロックと関連付けるステップ；そして、（ｋ）置換物理ユニットにおいて未書込み物理ブロックを見つけられないときに：置換物理ユニットが、複合置換物理ユニットであるときは：仮想ブロックと関連付けられている第１の物理ユニットと置換物理ユニットの物理ブロックを、未書込み物理ユニットにコピーするステップ、を含むことが好ましい。
【００１９】
【発明の実施の形態】
本発明は、ブロックなどのデータの読出しおよび書込みのためのメモリ部分のサイズが、ユニットなどの消去のための最小部分のサイズと異なるようになっているフラッシュメモリを構成する方法に関する。本発明の方法によって構成されることができるフラッシュメモリの種類の例は、これに限定されるわけではないが、ＮＡＮＤおよびＡＮＤ技術によって例示されるページモードデバイスを含む。方法はまた、フラッシュメモリにデータの読出しおよび書込みを行うための方法および未書込みの物理ユニットがそれ以上利用可能でない場合には、フラッシュメモリを再構成する方法である。
【００２０】
以下、「物理ユニット」なる語は、消去されることができるメモリの最小部分またはその整数倍であるメモリの物理的な媒体またはハードウェアにあるユニットとして定義される。それは連続的な固定サイズの消去可能なメモリの部分である。「物理ブロック」なる語は、データの読出しまたは書込み用のメモリの部分として定義される。以下、「仮想ユニット」なる語は、物理ユニットと同一のサイズとして定義される。ＮＡＮＤおよびＡＮＤなどのページモードメモリ技術のために、消去することができるメモリの最小部分はページサイズより大きく、通常は約８ＫＢである。ここで使用されるように、「物理ブロック」なる語は、ページモードメモリ技術のための「ページ」なる語と同意義である。したがって、仮想ユニットは物理ユニットと同一の大きさである。
【００２１】
以下、「仮想マップ」なる語は、仮想ユニットを少なくとも１つの対応する物理ユニットに関連付ける表を表す。上記のように、各ユニット、すなわち仮想ユニットまたは物理ユニットは、複数のブロックで構成される。以下でさらに説明するように、ユニット内のブロックの正確な位置は、１つ以上の予め定められた規則に基づいて決定される。
【００２２】
各物理ユニットは物理ユニット番号によって表される。各物理ブロックの位置は、物理ブロックオフセットによって与えられる。同様に、各仮想ユニットは仮想ユニット番号によって表される。各仮想ブロックの位置は、仮想ブロックオフセットによって与えられる。各仮想ユニット番号は、１つ以上の物理ユニット番号に対応することができることを留意すべきである。したがって、仮想ユニットと物理ユニットとの間のマッピングは、１対１または１対多のいずれかであってもよい。
【００２３】
以下、「書込みデータ」なる語は、フラッシュメモリの上にデータを格納する行為を表す。「読出しデータ」なる語は、フラッシュメモリからデータを検索する行為を表す。以下、「未書込み」なる語は、データを書込ませることができる物理ブロックなどのメモリの一部分を示す。したがって、「未書込み」なる語は、これに限定されるわけではないが、ちょうど消去されたばかりのメモリの部分を含む。
【００２４】
本発明によって構成されるフラッシュメモリを有するコンピュータまたは他の電子デバイスにおいて、そのデバイスのオペレーティングシステムが、読出しおよび書込みデータのために仮想ユニットおよび仮想ブロックに相互作用を及ぼす。仮想媒体は仮想ユニットおよびブロックを含むため、フラッシュメモリデバイスに相互作用を及ぼすオペレーティングシステムのためのインターフェースとして作用する。たとえば、オペレーティングシステムは、仮想ブロックオフセットで仮想ブロックにデータを書込むための書込み命令を発する。次に、仮想ブロックを含む仮想ユニットが突き止められる。次いで、仮想マップが、データが実際に格納されるメモリの物理ユニット内部の対応する物理ブロックを突き止める。オペレーティングシステムは、仮想ユニットおよび仮想ブロックがフラッシュメモリの実際のハードウェアであるかのように、読出しおよび書込み命令を発するが、実は実際のハードウェアはフラッシュメモリの物理ユニットおよび物理ブロックに組み込まれている。したがって、オペレーティングシステムは、仮想ユニットおよびブロックを認識するのみであり、ハードウェア自体に直接相互作用を及ぼさない。
【００２５】
このようなインターフェースの利点は、仮想メモリを用いてオペレーティングシステムが相互作用を及ぼすことによって、さらに書込み可能となる前に消去しなければならないという要件などのフラッシュメモリに固有の欠点を、克服することができることである。さらに、電子デバイスのオペレーティングシステムにはフラッシュメモリのアドレスを構成する必要がない。さらに、１つのインターフェースがフラッシュメモリデバイスの多数の種類に使用されることができるため、オペレーティングシステムは、著しい修整の必要がなく、さまざまな異なるフラッシュメモリ技術に相互作用を及ぼすことができる。したがって、本発明の方法は、フラッシュメモリデバイスおよびそれらを使用する電子デバイスに最大の適応性を許容することができる。
【００２６】
【実施例】
本発明は、ＮＡＮＤまたはＡＮＤフラッシュデバイスなどのページモードフラッシュメモリデバイスを構成するためのシステムを提供する。このシステムは、フラッシュデバイスなどから読み出したり、フラッシュデバイスなどに書込んだりするための方法を含む。さらに、このシステムはまた、フラッシュデバイスが磁気ディスク記憶装置をうまくエミュレートすることができるようなインターフェースも提供する。パーソナルコンピュータまたはラップトップコンピュータなどさまざまなホストデバイスに、このようなフラッシュメモリデバイスを取付けることができる。
【００２７】
本発明は、フラッシュメモリに関して説明するが、その教えはまた、フラッシュメモリなどの同様の書込み、読出しおよびユニット消去の特性を備えたデータ記憶デバイスに応用可能であることを当業者は理解されたい。
【００２８】
本発明によるページモードフラッシュメモリデバイスを構成するためのシステムの原理および動作は、図面および添付する詳細を参照すれば、よりよく理解されるであろう。
【００２９】
ここで図面を参照すると、図１は、たとえば、ＮＡＮＤなどの技術による従来技術の物理的なページモードフラッシュメモリデバイスを模式的に示している。「物理的なデバイス」なる語は、以下、フラッシュメモリデバイスのための物理的な媒体を含む実際のハードウェア自体として定義される。このような物理的な媒体は一般に、フラッシュＥＥＰＲＯＭ装置から構成されるが、適切な不揮発性のプログラム可能なメモリデバイスのいずれで代用してもよい。「プログラム可能な」なる語は、以下、たとえば、データをメモリデバイスに書込ませることによってなど、変更可能であるとして定義される。
【００３０】
フラッシュメモリ物理デバイス１０は、少なくとも１つの物理ユニット１２を備えているように示される。物理ユニット１２は、消去可能な物理デバイス１０の最小のセグメントである。物理ユニット１２は整数倍のブロックを含み、個別にブロック１〜ｎとして表され、ここでｎは整数であり、集合的にはブロック１４として表される。ブロック１４は、連続した固定長のグループの物理的なバイトアドレスから構成され、ハードウェアの特徴である。具体的に言えば、ブロック１４のサイズは物理デバイス１０の特性である。ブロック１４の基本データ領域１６に、利用者データを格納することができる。各ブロック１４はまた、制御データ領域１８も有する。制御データ領域１８は、ブロック１４の主要部分から個別アルゴリズムによってアドレス呼出しを行うことができ、ブロック１４のサイズの計算には含まれない。以下でさらに説明するように、制御データ領域１８は、フラッシュファイリングシステム自体に関連する情報の格納に好都合である。各物理ユニット１２は、配分済みのユニットか未配分のユニットのいずれかである。未配分ユニットはそれぞれ、自由であり、利用データを含まず、配分および割当てが行われる用意がなされている。各配分済みのユニットは割当てされ、データを含む。
【００３１】
図２は、基本的なフラッシュメモリデバイスを構成するためのシステムを示している。システム２０は、仮想媒体２２および物理デバイス１０の両方を制御し、仮想マップ２４によって仮想媒体２２を物理デバイス１０に関連付ける。仮想媒体２２は複数の仮想ユニット２６を含む。各仮想ユニット２６は複数の仮想ブロック２８を含む。各仮想ユニット２６は仮想アドレスによって表される。仮想アドレスは、特定の仮想ユニット２６を表す仮想ユニット番号を含む。各仮想ブロック２８は仮想ブロックオフセットによって表される。同様に、各物理ユニット１２は物理アドレスを有する。物理アドレスは、特定の物理ユニット１２を表す物理ユニット番号を含む。各物理ブロック１４は物理ブロックオフセットを有する。
【００３２】
仮想マップ２４は、配分済みの仮想ユニットである仮想ユニット２６を配分済みの物理ユニットである少なくとも１つの物理ユニット１２にマッピングする。物理ユニットに関して、仮想ユニットが少なくとも１つの物理ユニットにマッピングされた場合には、それは配分済みの仮想ユニットである。しかし、１つの仮想ユニット２６は１つ以上の物理ユニット１２にマッピングされることができる。したがって、仮想ユニット２６と物理ユニット１２との対応は、１対１または１対多のいずれであってもよい。
【００３３】
システム２０は以下のように作動する。フラッシュメモリデバイス（図示せず）を含む電子デバイスのオペレーティングシステムは、読出し命令または書込み命令などの命令を特定の仮想ユニット２６内部の特定の仮想ブロック２８に送信する。次に、仮想マップ２４が物理ユニット１２内部の対応する物理ブロック１４を突き止める。
【００３４】
示されているように、厳密に１つの物理ユニット１２にマッピングされる各仮想ユニット２６に対して、マッピングの対応が１対１である場合には、状況は比較的単純であるように思える。しかし、上記のように、物理デバイス１０は、追加的なデータを書込むことができる前に、定期的な消去を実行するための要件を含め、読出しおよび書込みのための特定の物理的な制約条件がある。このような制約条件に対して、物理デバイス１０またはデバイスの一部で頻繁に繰り返される消去を伴わない可能な解決法は２通りである。
【００３５】
第１の解決法は図３Ａに示されており、仮想ユニット２６と物理ユニット１２との対応が１対多であるため、各仮想ユニット２６が複数の物理ユニット１２に対応する。仮想マップ２４は、このようなマッピングを実行するために必要な情報を保持しなければならない。仮想マップ２４の一部の例が図３Ａに挙げられており、本発明のＡＮＤシステムを適用することができる。
【００３６】
仮想マップ２４の部分は、物理ユニット１２内部の物理ブロック１４および仮想ユニット２６内部の仮想ブロック２８を示す。この例では、ある特定の仮想ユニット３０が２つの物理ユニット１２に対応する。第１の物理ユニット１２は基本ユニット３２である。第２の物理ユニット１２は置換ユニット３４である。各仮想ユニット２６の場合には、１つの基本ユニット３２のみであってもよい。しかし、各仮想ユニット２６に関連するゼロ以上の置換ユニット３４であってもよい。たとえば、仮想ユニット３６は基本ユニット３８にのみ対応し、置換ユニット３４には対応しないため、仮想ユニット３６は非置換型仮想ユニットの例である。
【００３７】
仮想ブロック２８の構成は、特定の仮想ユニット２６に対応する物理ブロック１４の数に依存する。仮想ユニット３０の場合には、複数の仮想ブロック２８が基本ユニット３２内部の物理ブロック１４に対応する一方、他の仮想ブロック２８が置換ユニット３４内部の物理ブロック１４に対応する。仮想ユニット３６の場合には、実質的にすべての仮想ブロック２８が基本ユニット３８内部の物理ブロック１４に対応する。
【００３８】
最も簡素な例において、仮想ユニットは非置換型ユニットであり、特定の物理ブロック１４を突き止めるための手順は以下の通りである。仮想ユニット３６は、仮想ユニット３６を表す仮想ユニット番号４４および仮想ブロック４２を表す仮想ブロックオフセット４６を有する。仮想ブロックオフセット４６も番号であることを留意されたい。物理ユニット番号５０は基本ユニット３８を表す。物理ブロックオフセット５２は基本ユニット３８内部の物理ブロック５４を表す。データの読出しまたは書込みを行うための物理ブロック５４を突き止めるために、第１の規則は、仮想ユニット番号４４を決定するために仮想ユニットごとのブロックの数によって、所望の仮想ブロックオフセット４６を割り振ることである。次に、仮想マップ２４は仮想ユニット番号４４を物理ユニット番号５０にマッピングする。第２の規則は、仮想ブロックオフセット４６と同一の番号でなければならない物理ブロックオフセット５２によって、所望の物理ブロック１４、この場合には物理ブロック５４を物理ユニット３８の内部で突き止めることができることである。したがって、仮想マップ２４は、仮想および物理ユニットに関する情報を含むだけであるが、適正なブロックオフセットを決定するために規則が使用される。
【００３９】
さらに複雑な場合には、各仮想ユニットは１つ以上の物理ユニットに対応する。この場合には、２つ以上の物理ユニットのグループが「チェーン」と呼ばれる。たとえば、仮想ユニット番号７２は仮想ユニット３０を表し、仮想ブロックオフセット７４が仮想ブロック７０を表す。物理ユニット番号７８は置換ユニット３４を表し、物理ブロックオフセット８０は置換ユニット３４内部の物理ブロック８２を表す。したがって、仮想ユニット３０の仮想ブロック７０は置換ユニット３４の物理ブロック８２に対応する。
【００４０】
データの読出しまたは書込みを行うための物理ブロック８２を突き止めるために、再び第１の規則は、仮想ユニット番号７２を決定するために仮想ユニットごとのブロックの数によって、所望の仮想ブロックオフセット７４を割り振ることである。次に、仮想マップ２４は仮想ユニット番号７２を物理ユニット番号７８にマッピングする。しかし、問題がある。前述したように、第２の規則は、仮想ブロックオフセットと同一の番号でなければならない物理ブロックオフセットによって、所望の物理ブロックが物理ユニットの中で突き止められることである。この場合には、チェーンに複数の物理ブロック１４がある。いずれの物理ブロック１４がデータを有するかを決定するために、第３の規則は、仮想ブロック７０と同一のブロックオフセットを有する各物理ブロック１４が、チェーンの各物理ユニット内部にあるかを調査することである。最終非自由物理ブロック１４、この場合には置換ユニット３４の物理ブロック８２が、読み出し用の所望のデータを含む。逆に、書込みデータの場合には、第１の自由物理ブロック１４が所望のブロックである。
【００４１】
物理ブロックは属するチェーンにおいて物理ユニットの順に書込まれるため、「最終非自由物理ブロック」なる語は、未だ自由ではないが、チェーンの中で最も遠い下にあるユニットの物理ブロックを呼ぶ。チェーンにはユニットがそれ以上存在しないか、またはチェーンにおける次のユニットに同一のブロックオフセットを有する物理ブロックが自由であるかのいずれかである。同様に、第１の自由物理ブロックを発見するために、所望のブロックオフセットを有する各物理ブロックがチェーンの各物理ユニットにあるかどうかを調査し、この調査は基本ユニットから始めて、今度は各置換ユニットを通じて下に続き、自由ブロックが発見されるまで続く。
【００４２】
ＦＭＡＸと対照してみると、ＦＭＡＸは同様の仮想マップおよびアドレス指定システムを使用するが、図３Ｂに示すように、各基本ユニットには１つの置換ユニットのみを備える。これを実現するために、ＦＭＡＸは単一および複合の置換（物理）ユニットを使用する。単一置換ユニットは、物理ユニットの物理ブロックオフセットの実質的にすべてが対応する仮想ユニットの仮想ブロックオフセットに直接的に相関されるユニットである。複合置換ユニットは、仮想ブロックオフセットと物理ブロックオフセットとのこのような直接の対応関係が必ずしも存在しないユニットである。代わりに、対応する物理ブロックオフセットを有する物理ブロックが書込みに利用可能でない場合には、異なる物理ブロックが選択される。次に、仮想ブロックと物理ブロックとの実際の対応関係を決定するために、制御情報が制御データ領域に書込まれる。
【００４３】
図３Ｂに示されるように、基本ユニット９７は、複数の物理ブロック１００を有し、それぞれのブロックが仮想ユニット１０４の仮想ブロック１０２に対応する単一置換ユニット９８を有する。各物理ブロックオフセットは、同一のオフセット番号である仮想ブロックオフセットに対応する。
【００４４】
しかしながら、必要とする物理ブロックオフセットを有する物理ブロックが利用可能でない場合には、同一の物理ユニットの異なる物理ブロックが書込まれなければならず、置換ユニットは複合置換ユニットになる。第２の基本ユニット１０９は、複数の物理ブロック１１２を有し、それぞれのブロックが仮想ユニット１１６の仮想ブロック１１４に対応する複合物理ユニット１１０を有する。しかし、１つの物理ブロックオフセットが同一のオフセット番号である仮想ブロックオフセットに対応することができる一方、第２の物理ブロックオフセットは同一のオフセット番号でない第２の仮想ブロックオフセットに対応してもよい。特定の物理ブロックを見つけるために、制御データ領域に書込まれた制御情報を調査しなければならない。以下にさらに説明するように、これは、データの書込みの場合および必要に応じてＦＭＡＸシステムを再構成する場合の両方の場合において、きわめて重要である。
【００４５】
図４Ａは図３Ａの仮想マップを操作するためのフローチャートを示し、図４Ｂは図３Ｂの仮想マップを操作するためのフローチャートを示す。最も簡素な場合、すなわちすべての置換ユニットが単一ユニットまたは１つのみの置換ユニットを備える基本ユニットである場合には、ＡＮＤおよびＦＭＡＸのいずれも同じステップを使用することができる。まず、突き止められる対象の仮想ブロックの数を、仮想ユニット番号を与える仮想ユニットごとのブロックの数で割ることによって、仮想ユニット番号および仮想ブロックオフセットが計算される。法または割算の剰余が仮想ブロックオフセットである。
【００４６】
次に、仮想マップが、仮想ユニットに対応する物理ユニットを発見するために調査される。仮想ユニットに対応する物理ユニットを発見することができない場合には、物理メモリの必要な部分はフラッシュデバイスに存在しない。上記のように、すべての置換ユニットが単一ユニットであるか、または基本ユニットが唯一の置換ユニットを有する場合にのみ、このような単一の方式が有効である。しかし、データが書込まれることになっている物理ブロックがすでにプログラムされているか、または他のデータで書込まれている場合には、この方式は作用しない。この場合には、データを書込むことができる別の物理ブロックを発見するタスクを処理することができるような置換方式が必要とされる。
【００４７】
２通りの異なるアルゴリズムが、図４Ａ（ＡＮＡＮＤ）および図４Ｂ（ＦＭＡＸ）に示されている。両方のアルゴリズムは同一の方式で始まる。ステップ１において、所望の物理ユニットが突き止められる。ステップ２において、特定のブロックオフセットに対応する物理ブロックが、その物理ユニットの内部で突き止められる。ステップ３において、ブロックが未書込みの場合には、データがブロックに書込まれる。所望の物理ブロックが利用可能でない場合には、本発明の２つのシステム、すなわちＡＮＤおよびＦＭＡＸは、各技術が所望の物理ブロックがすでに書込まれた状況に対処するような方法で分岐される。
【００４８】
図４Ａに示されるように、ＡＮＤシステムは、置換ユニットを見ることによってこの状況に対処する。ステップ４において、ｘ番目の置換物理ユニットが調査される。ここでｘは、最初は１に等しい整数である。その物理ユニットが所望の物理ブロックオフセットを備えた未書込みの物理ブロックを有する場合には、データが物理ブロックに書込まれる。ブロックが利用可能でない場合には、ステップ５に示されるように、ｘは１ずつ増分され、ステップ４が反復される。データがブロックに書込まれるか、またはチェーンの他の置換ユニットが発見されなくなるまで、ステップ４および５が反復される。ステップ６において、未配分の物理ユニットが置換ユニットとして配分され、データが所望のブロックオフセットを備えたブロックに書込まれる。
【００４９】
ＦＭＡＸシステムは、図４Ｂに示されるように、この状況に異なる方法で対処する。ステップ４において、置換ユニットにおける同一の物理ブロックオフセットを有する物理ブロックが突き止められる。その物理ブロックが未書込みの場合には、データがその物理ブロックに書込まれる。そうでない場合には、ステップ５のように、置換ユニットの中の異なる物理ブロックオフセットを備えた物理ブロックが突き止められる。未書込みの物理ブロックが突き止められるまで、ステップ５が反復される。今度は、仮想ブロックオフセットがもはや物理ブロックオフセットと同一でないため、置換ユニットが複合ユニットである。ステップ６において、マッピング方式が複合ユニット内部のいかなる物理ブロックの正確な位置も発見できるようにするために、制御情報が物理ユニットの制御データ領域に付加される。
【００５０】
しかしながら、これらの置換アルゴリズムも、フラッシュデバイスの異なる要求のすべてに対処するのに十分でないと思われる。ＡＮＤおよびＦＭＡＸシステムの両方とも、最後には物理ブロックが利用可能でないため、物理ユニット内部のブロックにさらなるデータを書込むことができない状況に達するであろう。
【００５１】
このような状況において、データを最も簡素な状態、すなわち非置換基本ユニットに再構築するために、仮想ユニットを再構成しなければならない。この再構成処理中、以前に仮想ユニット表示が属していた物理置換ユニットが解放され、それによって、割当てられていないまたは自由な物理ユニットとなる。ＡＮＤ置換ユニットおよび単一ＦＭＡＸ置換ユニットの両方に関して、この再構成処理は、フォールディングと呼ばれ、以下の図５Ａに図示される。
【００５２】
フォールディングは、置換ユニットにおいて基本ユニットにおいて書込まれたのと同一の物理ブロックオフセットで書込まれる対象の物理ブロックを必要とする。その理由については、処理が説明されるとさらに明らかになるであろう。フォールディングの第１のステップにおいて、チェーンの最終物理ユニットが物理ユニットｘと識別される。ここで、ｘは１からいくつかの予め決定された実装依存制限数までの整数である。ｘが１に等しい場合、置換ユニットが実際に基本ユニットであり、残りのアルゴリズムは実行されないことに留意されたい。また、ＦＭＡＸの場合には、ｘは１または２に等しいことにも留意されたい。
【００５３】
ステップ２において、ユニットｘのブロックｎが調査される。ここでｎは整数である。データがブロックｎに書込まれている場合には、ｎは１ずつ増分される。そうでない場合には、ステップ３においてｘが１ずつ減分される。ｘが０に等しいかまたは書込み済みのブロックｎが発見されるかのいずれかになるまで、ステップ２および３が反復される。書込み済みのブロックｎが発見された場合には、ステップ４において、データがチェーンの最終置換ユニットのブロックｎまで移動される。すべてのデータが次に基本ユニットとなる最終置換ユニットに移動されるまで、ステップ２〜４が反復される。次に、事前の基本ユニットを含めるにしてもチェーンの他のすべてのユニットが解放され、割当てに利用可能となる。今度は仮想ユニットが１つの物理ユニットに対応するという事実を反映するために、仮想マップも更新される。
【００５４】
残念なことに、置換ユニット内部のブロックが常に、仮想ブロックオフセットに等しい物理ブロックオフセットを持っているとは限らないため、フォールディングは、複合ＦＭＡＸ置換ユニットの場合には作用しない。再割当ての異なる処理が、図５Ｂの複合物理ユニットのために示されている。ステップ１において、  新たな未割当ての物理ユニットが、新たな基本物理ユニットと呼ばれる。ステップ２において、複合物理ユニットのブロックｎが調査される。データが複合物理ユニットのブロックｎに書込まれている場合には、ステップ３において、データが新たな基本ユニットにコピーされる。そうでない場合には、古い基本ユニットのブロックｎからデータが新たな基本ユニットに書込まれる。ステップ４において、ｎが１ずつ増分される。すべてのブロックがコピーされるまで、ステップ２〜４が反復される。一旦、ブロックのすべてがコピーされると、古い基本ユニットのほか以前の置換ユニットも解放され、割当てのために利用可能となる。以前の手順のように、今度は仮想ユニットが１つのみの物理ユニットに対応するという事実を反映するために、仮想マップが更新される。
【００５５】
再構成方式のきわめて簡略化した実施例も可能である。この簡略化した実施例において、置換ユニットが割当てられた直後に再構成の処理が行われる。したがって、置換ユニットはシステムの一時的な特徴にすぎず、静止状態、すなわち物理メモリが書込み処理を実行していない状態において、データは基本非置換ユニットにのみ存在する。置換ユニットは、書込み処理のためだけに存在する。処理の終了時に、情報のすべてが新たなユニットに移動されるため、置換ユニットは実質的に消失する。この方法は、実装の容易さおよびそれを管理するために必要とされる制御構造の簡便さという利点を備える。しかし、その欠点は、この方法が効率的ではないため、システムの書込み性能を低下させることにある。
【００５６】
本発明に含まれる方法のすべては、格納されるデータの状態を記述するために、物理的なフラッシュデバイス自体に制御情報を記録することが可能でなければならない。特に、ユニットおよびブロックの制御情報は格納されることが好ましいが、別法としてそのようなデータは他の種類のデータから再構築することもできる。ユニット制御情報は、物理ユニットに配分された物理ユニット番号、基本または置換ユニットとしての物理ユニット自体の状態および他のユニットに対するそのユニットの位置を表示する。ブロック制御情報は、物理ブロックが使用されているか、解放されているかまたは異なる物理ブロックに存在する情報によって取り替えられているかどうかを表示する。
【００５７】
これらの異なる種類の１つまたは両方の情報を物理デバイスの特別な部分に、記録することができる。図１で上記のように、好ましくは、ＡＮＤおよびＦＭＡＸシステムは各物理ユニット１２を物理的なフラッシュデバイスに記録される実際の利用者データを含む基本データ領域１６および制御情報を含む制御データ領域１８に分割する。このような領域は、ブロック１６の下位区分として示されるが、物理ユニット１２はまた、ブロックへの分割に実質的に独立である基本データ領域および制御データ領域に分割されてもよい。制御データ領域１８は基本データ領域１６のブロック探索方式の中に含まれず、物理的なフラッシュディスクの全体サイズを計算する場合にも含まれないことに留意すべきである。
【００５８】
ＮＡＮＤおよびＡＮＤフラッシュ技術は、メモリの各ブロックに空白領域を有するため、制御情報が通常、ブロックの空白領域に記録され、利用者データが基本ブロック領域に配置される。
【００５９】
空白領域が設けられていないフラッシュ技術の場合には、利用者データを格納するための主要領域および必要な制御情報を格納するためのオーバヘッド部分に、すべての物理ユニットを分割することができる。
【００６０】
上記の説明は例として使用することのみを目的とし、さまざまな他の実施例が本発明の精神および範囲の中で可能であることを認識されたい。
【図面の簡単な説明】
本発明は、添付図面に関して、例としてのみここには説明される。
【図１】  本発明による物理的なフラッシュメモリデバイスの概略図である。
【図２】  本発明によるフラッシュメモリデバイスを構成する基本システムの図である。
【図３Ａ】  本発明によるＡＮＤシステムを示す。
【図３Ｂ】  本発明によるＦＭＡＸシステムを示す。
【図４Ａ】  本発明によるＡＮＤシステムのための書込みアルゴリズムを示す。
【図４Ｂ】  本発明によるＦＭＡＸシステムのための書込みアルゴリズムを示す。
【図５Ａ】  本発明によるＡＮＤシステムのための再構成アルゴリズムを示す。
【図５Ｂ】  本発明によるＦＭＡＸシステムのための再構成アルゴリズムを示す。
【図１】
0003712231.tif 000002
【図２】
0003712231.tif 000003
【図３Ａ】
0003712231.tif 000004
【図３Ｂ】
0003712231.tif 000005
【図４Ａ】
0003712231.tif 000006
【図４Ｂ】
0003712231.tif 000007
【図５Ａ】
0003712231.tif 000008
【図５Ｂ】
0003712231.tif 000009