(57)【要約】【課題】一つの例では、論理的にアドレス指定可能なメモリ部分が、本来の実メモリの倍数に等しい有効耐久度を持つように構成する。【解決手段】不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するように構成するための、不揮発性メモリ・デバイス、システム、方法、そしてコンピュータで読み込み可能なコードを開示する。いくつかの実施例によれば、不揮発性メモリの少なくとも一部分に対して、実メモリの量を決定して割り当てる。いくつかの実施例によれば、構成実メモリの所定量に対して、より大きな有効耐久度を要求することは、論理的にアドレス指定可能なメモリの減量となる。いくつかの実施例によれば、論理的にアドレス指定可能なメモリの所定量に対して、より大きな有効耐久度を要求することは、実メモリの量を増加させる構成となる。いくつかの実施例においては、コントローラが、不揮発性メモリの少なくとも一部分を構成するように作動可能である。択一的に、あるいは追加的に、不揮発性メモリ・デバイスに接続したホスト・デバイス上には、ドライバ・コードが存在する。オプションとして、要求耐久度の値は、不揮発性メモリ・デバイスへ発せられるコマンドで指定する。いくつかの実施例によれば、コマンドは、不揮発性メモリ・デバイスの製造時に、および／あるいは実行時に発せられてもよい。構成可能な、模範的な不揮発性メモリは、限定せずに、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリおよびＥＥＰＲＯＭメモリを含む。【選択図】図１Ａ
2009503629.tif 000002
【特許請求の範囲】
【請求項１】
ａ）不揮発性メモリ、そして
ｂ）前記不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するように構成するよう作動可能なコントローラからなる、不揮発性メモリ・デバイス。
【請求項２】
前記有効耐久度が、前記不揮発性メモリの前記少なくとも一部分の物理的な耐久度を超過する、請求項１の不揮発性メモリ・デバイス。
【請求項３】
記有効耐久度の増加を提供する前記構成にすると、論理的にアドレス指定可能なメモリの総量が減少する、請求項１の不揮発性メモリ・デバイス。
【請求項４】
前記コントローラによる前記少なくとも一部分の前記構成が、
ｉ）前記少なくとも一部分のために確保すべき実不揮発性メモリの量を決定すること、なお、この決定量は前記少なくとも一部分の論理サイズを超過する、そして
ii）実メモリの前記決定量を割り当てることを含む、請求項１の不揮発性メモリ・デバイス。
【請求項５】
構成した前記実メモリの所定量に対して、より大きな有効耐久度を要求することが、論理的にアドレス指定可能なメモリの量を減少させる、請求項４の不揮発性メモリ・デバイス。
【請求項６】
論理的にアドレス指定可能なメモリの所定量に対して、より大きな有効耐久度を要求することが、前記実不揮発性メモリの量を増加させる、請求項４の不揮発性メモリ・デバイス。
【請求項７】
前記量が、前記要求有効耐久度の特定な値に応じて決定される、請求項４の不揮発性メモリ・デバイス。
【請求項８】
前記コントローラが、前記割り当て実メモリへデータを書き込むよう作動可能であり、少なくとも一つの前記書き込みが、前記割り当て実メモリへ、所定のデータを一度だけ書き込むことを含む、請求項４の不揮発性メモリ・デバイス。
【請求項９】
前記コントローラが、前記有効耐久度を、複数の値の一つに設定するよう作動可能である、請求項１の不揮発性メモリ・デバイス。
【請求項１０】
さらに、
ｃ）前記要求有効耐久度の値を受信するためのインターフェイスからなる、請求項１の不揮発性メモリ・デバイス。
【請求項１１】
前記不揮発性メモリがＮＡＮＤフラッシュメモリを含む、請求項１の不揮発性メモリ・デバイス。
【請求項１２】
前記不揮発性メモリがＮＯＲフラッシュメモリを含む、請求項１の不揮発性メモリ・デバイス。
【請求項１３】
前記不揮発性メモリがＥＥＰＲＯＭメモリを含む、請求項１の不揮発性メモリ・デバイス。
【請求項１４】
前記デバイスが、ＥＥＰＲＯＭメモリをエミュレートするように作動可能である、請求項１の不揮発性メモリ・デバイス。
【請求項１５】
前記コントローラが、前記不揮発性メモリのすべてを、前記要求有効耐久度を提供するよう構成するように作動可能である、請求項１の不揮発性メモリ・デバイス。
【請求項１６】
前記コントローラが、前記有効耐久度を、前記不揮発性メモリの第一の前記一部分に対して第一の値へ設定するよう作動可能であり、そして前記有効耐久度を、前記不揮発性メモリの第二の前記一部分に対して、前記第一の値と異なる第二の値へ設定するよう作動可能である、請求項１の不揮発性メモリ・デバイス。
【請求項１７】
前記コントローラが、受信した外部コマンドに応じて前記不揮発性メモリを構成するよう作動可能である、請求項１の不揮発性メモリ・デバイス。
【請求項１８】
前記コントローラが、組み込みソフトウェアを含み、そして前記構成が、前記組み込みソフトウェアによって少なくとも部分的に実行される、請求項１の不揮発性メモリ・デバイス。
【請求項１９】
ａ）不揮発性メモリを含む不揮発性メモリ・デバイス、
ｂ）前記不揮発性メモリ・デバイスに接続したホスト・デバイス、そして
ｃ）前記ホスト・デバイス上に存在するドライバ・コードからなり、前記ドライバ・コードが、前記不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するよう構成するように作動可能である、データ記憶のためのシステム。
【請求項２０】
有効なメモリ耐久度を設定するための方法であって、
ａ）不揮発性メモリを含む不揮発性メモリ・デバイスの有効耐久度を設定するためのコマンドを発すること、そして
ｂ）前記不揮発性メモリの少なくとも一部分を、前記要求有効耐久度を提供するように構成することからなる、方法。
【請求項２１】
前記コマンドが、前記不揮発性メモリ・デバイスに接続したホスト・デバイスによって発せられる外部コマンドである、請求項２０の方法。
【請求項２２】
前記有効耐久度が、前記不揮発性メモリの前記少なくとも一部分の物理的な耐久度を超過する、請求項２０の方法。
【請求項２３】
前記構成が、前記不揮発性メモリ・デバイスの、論理的にアドレス指定可能なメモリの総量を減少させることを含む、請求項２０の方法。
【請求項２４】
前記少なくとも一部分の前記構成が、
ｉ）前記少なくとも一部分のために確保する実不揮発性メモリの量を決定するステップ、なお、前記決定量は前記少なくとも一部分の論理サイズを超過する、そして
ii）実メモリの前記決定量を割り当てるステップを含む、請求項２０の方法。
【請求項２５】
論理的にアドレス指定可能なメモリの所定量に対して、より大きな前記有効耐久度を要求することが、前記実不揮発性メモリのより大きな量を割り当てる、請求項２４の方法。
【請求項２６】
前記実不揮発性メモリの所定量に対して、より大きな前記有効耐久度を要求することが、論理的にアドレス指定可能なメモリの減量となる、請求項２４の方法。
【請求項２７】
前記量が、前記要求有効耐久度の特定な値に応じて決定される、請求項２４の方法。
【請求項２８】
さらに、
ｃ）前記割り当て実メモリへデータを書き込むことからなり、前記書き込みが、前記割り当て実メモリへ所定のデータを一度だけ書き込むことを含む、請求項２４の方法。
【請求項２９】
前記有効耐久度が、前記不揮発性メモリ・デバイスの製造の時点で設定される、請求項２０の方法。
【請求項３０】
前記有効耐久度が、前記不揮発性メモリ・デバイスの実行時に設定される、請求項２０の方法。
【請求項３１】
前記有効耐久度の前記設定が、前記不揮発性メモリ・デバイス内に組み込まれたソフトウェアによって少なくとも部分的に実行される、請求項２０の方法。
【請求項３２】
前記有効耐久度の前記設定が、前記不揮発性メモリ・デバイスに接続したホスト・コンピュータ上に存在するソフトウェアによって少なくとも部分的に実行される、請求項２０の方法。
【請求項３３】
前記不揮発性メモリ・デバイスがＮＡＮＤフラッシュメモリを含む、請求項２０の方法。
【請求項３４】
前記不揮発性メモリ・デバイスがＮＯＲフラッシュメモリを含む、請求項２０の方法。
【請求項３５】
前記不揮発性メモリ・デバイスがＥＥＰＲＯＭメモリを含む、請求項２０の方法。
【請求項３６】
前記不揮発性メモリ・デバイスが、ＥＥＰＲＯＭメモリをエミュレートするよう作動可能である、請求項２０の方法。
【請求項３７】
コンピュータで読み込み可能なコードを持つ、コンピュータで読み込み可能な記憶メディアであって、前記コードが前記記憶メディア内に具現化され、前記コードが、不揮発性メモリ・デバイスの不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するように構成するためのインストラクションからなる、コンピュータで読み込み可能な記憶メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ・デバイス等の、不揮発性メモリ・デバイスに関する。
【背景技術】
【０００２】
＜不揮発性メモリ＞
不揮発性メモリは、電源なしで、その記憶データを維持可能なメモリの一種であり、不揮発性メモリには数種類のものがある。それらは、読み込み、書き込みおよび消去機能、アクセス時間、データ保持力、そしてデータ耐久サイクル数によって区別されている。電気的消去再書込み可能な読出し専用メモリ（ＥＥＰＲＯＭ）は、バイト毎のレベルで読み書きオペレーションを実行可能である。すなわち、各メモリ・ロケーションは個々に読み書きができる。
【０００３】
フラッシュタイプ・フローティングゲート・トランジスタからなるフラッシュメモリは、機能および性能の点で、ＥＥＰＲＯＭメモリに同様な不揮発性メモリであり、フラッシュメモリは、特定な制限の下で作動するが、比較的安価であるという長所を持つ。フラッシュメモリ上の、以前に書き込んだロケーションへの再書込みは、まず全てのメモリ・セクションを消去せずには不可能である。すなわち、再プログラム可能にするには、フラッシュ・セルを消去しなければならない（例えば、「１」へプログラムする）。フラッシュメモリは、（現在市販のデバイスに対しては典型的に１６〜１２８ＫＢのサイズの）通常消去ブロックと呼ぶ、比較的大きなグループのセルのみを消去可能である。したがって、単一バイトのコンテンツ、あるいはさらに１ＫＢのチャンクのコンテンツを更新するには、ハウスキーピング・オペレーションが必要である。すなわち、消去ブロックの更新されない部分を、まず他の箇所へ移動し、消去オペレーション中に維持し、それから、アップデート後にきちんと戻す必要がある。
【０００４】
電気的に消去可能な不揮発性メモリは、書き込みおよび消去オペレーションを繰り返すと、損耗を被る。各メモリ・ロケーションには、書き込みあるいは消去に対する耐性サイクル限度数がある。指定回数を超えて書き込んだフラッシュの領域は、信頼できない。また、酷使したロケーションから読み込んだデータは、誤りがある可能性がある。信頼性を失う前の、不揮発性メモリ領域が耐え得る書き込みオペレーション数を、耐久度と呼ぶ。典型的な耐久度レベルは、１００，０００書き込みあるいは消去サイクルである。耐久度レベルは、デバイス製造業者が保証する、最悪の場合の数であり、実際には、フラッシュメモリ内に含まれる大部分のセルは、より大きな書き込みあるいは消去サイクル数に耐える可能性が高い。
【０００５】
フラッシュメモリは、さらに、採用したメモリ・セル相互結合アーキテクチャのタイプに基づいて、ＮＯＲおよびＮＡＮＤフラッシュへ分類される。ＮＡＮＤフラッシュのビット単位コストは、ＮＯＲフラッシュのそれよりも低い。しかしながら、書き込みロケーションが消去される（すなわち、それがすべて「１」を含む）という条件で、バイト・レベルの読み込みオペレーション、そしておそらく書き込みオペレーションが可能なＮＯＲフラッシュメモリに比べ、ＮＡＮＤフラッシュメモリは、ブロック読み込みおよび書き込みオペレーションに制限される。さらに、典型的なＮＡＮＤフラッシュメモリは、不良ブロックの小さな部分を含む。この部分は、信頼性がなく、データを記憶するのに用いるべきではない。不良ブロックは、製造業者が、最初にフラッシュメモリをテストするときに検証する、または現場で使用中にソフトウェアによって、ブロックの損傷を検出する。
【０００６】
ＮＡＮＤフラッシュメモリのこれらの限界を乗り越えるために、フラッシュファイル・システム（ＦＦＳ）が開発された。フラッシュメモリを含んで磁気ディスク上でのデータ記憶をエミュレートするデバイスに対して、ＦＦＳは、データ記憶および操作のためのシステムを提供する。そのようなＦＦＳは、米国特許第５，９３７，４２５号に開示されており、参照によって本文に完全に記述したものとみなす。不揮発性メモリの全３タイプ（ＥＥＰＲＯＭ、ＮＯＲフラッシュおよびＮＡＮＤフラッシュ）は、現在使用されており、その特殊型式は、アプリケーションによって決定する。ＮＡＮＤフラッシュメモリは、主に大容量記憶域が必要な場合に用いるが、そのブロック・アクセス特性に起因して、ソフトウェア・アプリケーションを、ＮＡＮＤフラッシュから直接的に実行することはできない。ソフトウェア・アプリケーションをメモリ・デバイスから直接的に実行しなければならない場合は、ＮＯＲフラッシュメモリを用いるべきである。ＥＥＰＲＯＭは、比較的小さなメモリ容量が必要な場合に用い、データはバイト・レベルで書き込まれる。
【０００７】
なお、メモリ・ブロック・デバイスは、磁気ディスク・パーティションと同様、複数のパーティションへ論理的に分割してもよい。この場合、各パーティションは、別個の論理ユニットまたはディスクとして機能する。ＦＦＳを実行するフラッシュコントローラは、通常、デバイス分割を管理することにも責任を負う。
【０００８】
いくつかのアプリケーションでは、ＮＯＲフラッシュメモリを用いて、ＥＥＰＲＯＭデバイスをエミュレートしてもよい。この場合、エミュレートＥＥＰＲＯＭは、ＮＯＲメモリへの単一バイトの書き込みを可能にし、そして必要に応じて、ＮＯＲメモリ・ブロックの消去をも可能にする。エミュレートＥＥＰＲＯＭは、ハードウェア、ファームウェア、あるいはそれら二つの組み合わせによって実現してもよい。
【０００９】
いくつかのアプリケーションでは、フラッシュメモリの耐久度の限界が、例えば、仮想メモリとしてブロック・デバイスを用いるオペレーティングシステムに問題となる可能性がある。アプリケーションに対して利用可能なランダムアクセス・メモリ（ＲＡＭ）の量を増加させるために、オペレーティングシステムは、ディスク・スワッピングを実行してもよい。ディスク・スワッピングでは、オペレーティングシステムは、ＲＡＭのいくつかのセクションを大容量記憶デバイスへ保存し、アプリケーションがアクセスする必要があるとすぐにＲＡＭデータを再ロードする。スワップ領域として用いる大容量記憶領域は、コードまたは静的データを記憶するのに用いる大容量記憶デバイスの他のセクションに比べ、集中的な読み込み、消去、書き込みサイクルあるいは消去サイクルに耐えなければならず、比較的激しい損耗に到る可能性がある。もう一つの例は、ファイル（システム）アロケーション・テーブル（ＦＡＴ）である。ＦＡＴ（ＦＡＴ）は、非常に頻繁に更新されるもので、新しいファイルを作成した、または既存ファイルのサイズを変更したときはいつも更新される。
【００１０】
＜不揮発性メモリ・デバイスの延命＞
ＮＡＮＤフラッシュを含むほとんどのシステムは、損耗平準化アルゴリズムを実行する。損耗平準化アルゴリズムは、各フラッシュ・メモリ・ブロック上に実行可能な書き込みオペレーションの回数を最適化する。このアルゴリズムによれば、各フラッシュ・メモリ・ブロックは、ほぼ等しい回数で書き込まれる。このため、論理ブロックを物理ブロックへ変換する場合は、同じ論理ブロックが、異なる物理ロケーションへ書き込まれる可能性がある。したがって、損耗平準化アルゴリズムは、多くの状況下で、デバイス上に利用可能な、論理的にアドレス指定可能なメモリ量を付随的に減少させることなく、フラッシュメモリ・デバイスの寿命を延ばすのに有用である。
【００１１】
ＵＳ５，３６７，４８４には、「高い耐久度」を提供するように選択ブロックを指定できる、多数のデータ記憶ブロックを持つＥＥＰＲＯＭデバイスが開示されている。この選択ブロックは、切り換えユニットを用いて、類似の冗長ブロックに並列に配置され、これら二つのブロックへ、同一データが同時に書き込まれる。ＵＳ５，３６７，４８４の開示によれば、選択ブロックおよび冗長ブロックのいずれか一つが破損したとしても、対応する論理領域へデータを書き込むことは依然として可能であるため、この冗長性は、選択ブロックの耐久度を増加させる。ＵＳ５，７９３，６８４には、その後、高い信頼性および冗長性が要求されないなら、第一のメモリ・アレイのアドレス・ロケーションを、冗長な第二のメモリ・アレイの対応するアドレス・ロケーションから分離するよう、切り換えユニットへ信号を送信し、メモリ・デバイスのアドレス・ロケーション量を増加させてもよいことが開示されている。ＥＥＰＲＯＭ以外のメモリの耐久度レベルを増加させることに関する開示あるいは提案はない。さらに、前記の特許は、「高い」耐久度レベルが、どれほどの追加の耐久度を提供するのかを開示していないし、要求された耐久度を提供するための、不揮発性メモリの構成に関する開示あるいは教示も全くない。
【００１２】
米国特許出願第２００３/００２８７３３号には、ホストからのデータを記憶するための揮発性メモリ、揮発性メモリ内に記憶されたデータを記憶すること、そしてそのデータを電気的に消去することが可能な不揮発性メモリ、そして揮発性メモリと不揮発性メモリとの間のデータ転送を制御するための制御回路からなるメモリ装置が開示されている。開示のメモリ・デバイスは、揮発性メモリ・デバイスであり、例えば、揮発性メモリのデータ記憶領域の容量は、不揮発性メモリのデータ記憶領域のそれよりも大きい。開示のデバイスは、比較的小さな不揮発性メモリ・バックアップを持つ揮発性メモリ・デバイスであり、本文で理解できるような不揮発性メモリ・デバイスに関する開示は全くない。
【００１３】
したがって、改善型の不揮発性デバイスに対する、そして、改善したメモリ耐久度を提供するように不揮発性メモリ・デバイスを構成するための方法に対する必要性が引き続き存在している。なお、メモリ部分あるいは不揮発性メモリ全体が、およそ何サイクルの書き込みまたは消去に対して信頼性を維持できるのかに関する従来の知識は、デバイス利用の適当な計画を可能にする。したがって、特定な要求メモリ耐久度を提供できるよう構成可能なデバイスに対する必要性が現存する。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
前記の必要性は、本発明のいくつかの局面によって満たされる。
【００１５】
さて、不揮発性メモリと、不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するよう構成するように作動可能なコントローラとを含む不揮発性メモリ・デバイスが、初めて開示される。いくつかの実施例によれば、要求有効耐久度は、不揮発性メモリの少なくとも一部分の本来の物理的な耐久度を超過する。
【００１６】
いくつかの実施例によれば、コントローラによる少なくとも一部分の構成は、少なくとも一部分に対して確保するための、実不揮発性メモリの量を決定するステップ、そして実メモリの決定量を割り当てるステップを含む。この場合、決定量は、少なくとも一部分の論理サイズを超過する。
【００１７】
かくして、一つの例では、論理的にアドレス指定可能なメモリ部分（例えば、２０ＭＢのメモリ）が、本来の実メモリの倍数（例えば「耐久倍数」）に等しい有効耐久度（例えば、３）を持つように構成することが要求される。この特定な例によれば、要求有効耐久度を提供するために、不揮発性メモリ（例えば、６０ＭＢの実メモリ）の物理領域を確保し、この物理領域を、耐久乗数に等しい物理部分領域の数（例えば、３）へ再分割する。この特定な例では、各部分領域のサイズは、論理的にアドレス指定可能なメモリ部分のサイズと同一である（例えば、２０ＭＢのメモリ）。
【００１８】
この例によれば、特定な論理アドレスへデータを書き込むための第一の要求は、第一の部分領域内の適当なロケーションへデータを書き込むことによって処理する。同様に、同じ特定な論理アドレスへデータを書き込むための第二および第三の要求は、第二および第三の部分領域内の各々のロケーションへデータを書き込むことによって処理する。その特定な論理アドレスへデータを書き込むための第四の要求は、もう一度、第一の部分領域へデータを書き込むように処理できる。したがって、この例では、毎回異なる物理ロケーションへデータを書き込むことによって、どの物理ロケーションも、書き込みオペレーション数の数分の一（例えば、１を耐久乗数で割った数、すなわち三分の一）を負う。したがって、実メモリの確保領域と、論理的にアドレス指定可能なメモリ部分が付随して、要求有効耐久度を提供する。
【００１９】
したがって、いくつかの実施例によれば、任意の論理メモリ・アドレスへの複数の書き込みオペレーションの各々は、メモリ内の異なる物理ロケーションへデータを書き込むように作動可能である。
【００２０】
さらに、先の例によれば、本来の実耐久度を超過する有効耐久度（例えば、実耐久度の３倍）を要求することによって、２０ＭＢの論理記憶に６０ＭＢの実メモリが確保されることが分かっている。したがって、注目すべきことは、この例によれば、メモリ構成によって、論理的にアドレス指定可能なメモリの総量が（例えば、６０ＭＢと２０ＭＢあるいは４０ＭＢとの相違によって）減少することである。
【００２１】
いくつかの実施例によれば、非ランダムアクセス・フラッシュメモリ・デバイスにおけるパーティション毎の拡張記憶の割り当てと、各パーティションの管理は、典型的に、ＦＦＳの一部として実行するが、外部アプリケーションによって実行してもよいし、および／あるいは、ハードウェアでサポートしてもよい。実メモリの所望の量を割り当てた後、各パーティションは、本発明なしで管理するやり方に類似の方法で管理する。
【００２２】
したがって、いくつかの実施例によれば、有効耐久度を増加させるように構成後、論理的にアドレス指定可能なメモリの総量は減少する。
【００２３】
いくつかの実施例によれば、構成した実メモリの所定量に対して、より大きな有効耐久度を要求することは、論理的にアドレス指定可能なメモリの減量となる。
【００２４】
択一的に、あるいは追加的に、論理的にアドレス指定可能なメモリの所定量に対して、より大きな有効耐久度を要求することは、実不揮発性メモリの増量となる構成である。
【００２５】
いくつかの実施例によれば、量は、要求有効耐久度の特定な値に応じて決定する。
【００２６】
本発明のいくつかの実施例によれば、不揮発性メモリの耐久度を種々のレベルにプログラムすることが可能である。この場合、所望の耐久度は、論理メモリ・サイズと追加の耐久度との間のトレードオフであるため、最小所望耐久度レベルが提供される、または保証される。
【００２７】
いくつかの実施例によれば、コントローラは、有効耐久度を、複数の値の一つへ設定するように作動可能である。
【００２８】
有効耐久度がどのように要求されるかについては、制限はない。いくつかの実施例によれば、コントローラは、外部コマンド（例えば、フォーマット・コマンド）とともに提供される受信パラメータに応じて不揮発性メモリを構成するように作動可能である。
【００２９】
いくつかの実施例によれば、デバイスは、さらに、要求有効耐久度の値を受信するためのインターフェイスを含む。特に、いくつかの実施例によれば、フラッシュメモリを初期化するためのユーザ・インターフェイスは、改良されて、各区画パーティション毎に所望の耐久度レベルを指定するためのエントリを含む。
【００３０】
本発明の実施例によって構成される不揮発性メモリのタイプには制限がなく、有効耐久度を提供するためのランダムアクセス・メモリの構成と非ランダムアクセス・メモリの構成との両方は、本発明の範囲内にあることに注目すべきである。適当な不揮発性メモリは、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリおよびＥＥＰＲＯＭメモリを含むが、これらに限定されるものではない。にもかかわらず、注目すべきことは、種々の実施例において、有効耐久度を提供するように構成するのに用いる特殊アルゴリズムを、不揮発性メモリのタイプに応じて変化させてもよいことである。
【００３１】
いくつかの実施例によれば、デバイスは、ＥＥＰＲＯＭメモリをエミュレートするように作動可能である。
【００３２】
いくつかの実施例によれば、コントローラは、不揮発性メモリのすべてを、要求有効耐久度を提供するように構成するよう作動可能である。
【００３３】
いくつかの実施例によれば、コントローラは、割り当て実メモリへデータを書き込むよう作動可能であり、少なくとも一回の書き込みが、割り当て実メモリへ、所定のデータを一度だけ書き込むことを含む。
【００３４】
いくつかの実施例によれば、コントローラは、不揮発性メモリの第一の部分に対して、有効耐久度を第一の値へ設定するように作動可能であり、そして不揮発性メモリの第二の部分に対して、有効耐久度を、第一の値と異なる第二の値へ設定するように作動可能である。
【００３５】
いくつかの実施例によれば、コントローラは、組み込みソフトウェアを含み、この組み込みソフトウェアによって、前記構成を少なくとも部分的に実行する。
【００３６】
不揮発性メモリを、要求有効耐久度を提供するように構成するメモリ・デバイス・コントローラに関して、本発明の特定の実施例を説明したが、これは、本発明の限定ではない。メモリ構成は、単数のデバイスまたは複数のデバイス上に存在するハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせによって実行できる。メモリ構成は、制御ファームウェアを改良することによって、既製のメモリ・デバイスへ、あるいはデバイスを演算処理ユニットまたはバスに接続するグルー・ロジックへ適用できる。
【００３７】
さて、不揮発性メモリを含む不揮発性メモリ・デバイス、不揮発性メモリ・デバイスに接続したホスト・デバイス、そしてホスト・デバイス上に存在するドライバ・コードを含むデータ記憶のためのシステムを、初めて開示する。この場合、ドライバ・コードは、不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するように構成するよう作動可能である。
【００３８】
さて、有効なメモリ耐久度を設定するための方法を、初めて開示する。今回開示する方法は、不揮発性メモリを含む不揮発性メモリ・デバイスの有効耐久度を設定するためのコマンドを発すること、そして不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するように構成することを含む。
【００３９】
いくつかの実施例によれば、コマンドは、不揮発性メモリ・デバイスに接続したホスト・デバイスによって発せられる外部コマンドである。
【００４０】
いくつかの実施例によれば、有効耐久度は、不揮発性メモリの少なくとも一部分の実耐久度を超過する。
【００４１】
いくつかの実施例によれば、構成は、不揮発性メモリ・デバイスの、論理的にアドレス指定可能なメモリの総量を減少させることを含む。
【００４２】
いくつかの実施例によれば、有効耐久度は、不揮発性メモリ・デバイスの製造時に、またはフォーマッティングの時点で設定する。
【００４３】
いくつかの実施例によれば、有効耐久度は、不揮発性メモリ・デバイスの実行時に設定する。
【００４４】
いくつかの実施例によれば、有効耐久度の設定は、不揮発性メモリ・デバイス内に組み込んだソフトウェアによって、少なくとも部分的に実行する。
【００４５】
いくつかの実施例によれば、有効耐久度の設定は、不揮発性メモリ・デバイスに接続したホスト・コンピュータ上に存在するソフトウェアによって、少なくとも部分的に実行する。
【００４６】
さて、コンピュータで読み込み可能な記憶メディア内に具現化したコンピュータで読み込み可能なコードを持つ、コンピュータで読み込み可能な記憶メディアを、初めて開示する。このコンピュータで読み込み可能なコードは、不揮発性メモリ・デバイスの不揮発性メモリの少なくとも一部分を、要求有効耐久度を提供するように構成するためのインストラクションからなる。
【００４７】
これらの、そして他の実施例は、次の詳細な説明および実施例から明白になる。
【発明を実施するための最良の形態】
【００４８】
さて、特定な実施例を例示して、本発明を説明する。理解すべきことは、発明が、開示の実施例に限定されないことである。また、要求された有効耐久度を提供するようメモリを構成するように作動可能な不揮発性メモリ・デバイス、データ記憶のためのシステム、有効なメモリ耐久度を設定するための方法、そして説明のコンピュータで読み込み可能なコードのすべての特徴が、添付の「特許請求の範囲」の、どの請求項に記載の発明を実行するのに必要である、ということではないことも理解するべきである。デバイスの種々の要素および特徴の説明は、発明を完全に可能なものとするためである。また、この開示を通して、プロセスまたは方法を示す、あるいは説明する箇所では、一つのステップが、まずもう一つのステップが実行されることに依存することが、文脈から明白である場合を除き、方法のステップは、どの順序ででも、または同時にでも実行できることも理解すべきである。
【００４９】
図１Ａは、本発明の模範的な実施例による、模範的な不揮発性メモリ・デバイス（１００）のブロック図である。  図１Ａによれば、データおよびコマンドは、外部インターフェイス（１１２）を介して、ホスト・デバイス（図示せず）から受信される。中央処理ユニット（１１０）は、デバイスの不揮発性メモリ（例えば、フラッシュメモリ（１０６））内にデータを記憶する。ＣＰＵ（１１０）は、デバイスを管理するのに、ＲＯＭおよび揮発性メモリ（例えば、ＲＡＭ（１０４））を利用する。揮発性メモリは、主にデバイス管理のために用いられ、データ記憶のために用いられることはないため、揮発性メモリのサイズは、典型的に、不揮発性メモリのサイズよりも（例えば、少なくとも一桁のレベルで）非常に小さい。
【００５０】
この開示を通して、「不揮発性メモリ・デバイス」は、デバイス内に設けたメモリの大部分が不揮発性メモリであるデバイスに言及する。不揮発性メモリ・デバイスの例は、スマートカード・デバイス、メモリ・カード、マルチメディアカード等を含む。いくつかの実施例においては、「不揮発性メモリ・デバイス」は、揮発性メモリおよび不揮発性メモリの両方を含み、不揮発性メモリのサイズと揮発性メモリのサイズとの比率は、例えば少なくとも１０、あるいは例えば少なくとも１００である。
【００５１】
図１Ｂは、有効耐久度を提供するために、ＮＡＮＤフラッシュ等の非ランダムアクセス・メモリを構成するためのルーチンの模範的な実施例を図解する。この例によれば、メモリは三つの部分へ分割する。第一のパーティション（１）は、主に静的データを記憶するために用いる。このメモリ・パーティションは、耐久度を高める必要がないため、レガシー手段を用いて管理する。第二のパーティション（２）は、より動的なデータ記憶（例えば、データベース記憶）に用いるため、その所望の耐久度は、本来のメモリ耐久度よりも高く、この例では２００%である。より高い耐久度を保証するために、このパーティションに割り当てる実メモリ・サイズは、論理サイズの２倍である。このパーティションには、予約領域（３）を付加している。予約領域サイズが、必要領域のサイズと同じであるため、最小耐久度レベル２００%が達成される（下記の、最小耐久度の計算の説明を参照）。
【００５２】
第三のメモリ・パーティション（４）は、直前のパーティション（２）と類似のやり方で定義するが、この第三のパーティションに対する要求耐久度は、公称耐久度の５倍であり、実メモリ・サイズは論理領域の５倍であり、そして予約領域（５）は必要容量の４倍である。フラッシュ管理アプリケーションが、毎回、異なるロケーションへ書き込むため、このパーティションの耐久度は、最小である本来のデバイス耐久度の、少なくとも５倍であることが保証される。
【００５３】
図２は、不揮発性メモリの少なくとも一部分を、特定な耐久度を提供するように構成する、模範的なルーチンのフロー・チャートである。図２の例によれば、（例えば、ユーザが、メモリ・デバイスに接続したホスト・デバイスを操作するによって、）論理的にアドレス指定可能なメモリの特定な（９１０）目標領域に対して有効耐久度を特定する（９００）。なお、有効耐久度は、多数の方法で特定できる（９００）。一つの非限定的な例では、要求耐久度と本来の耐久度との間の比率を示す「耐久乗数」を特定する。
【００５４】
これは、論理的にアドレス指定可能なメモリの目標領域（９１０）内のアドレスへ、少なくとも有効耐久度（９００）によって特定した回数だけ確実に書き込むことが可能なようにデバイスを構成することを意図している。この目的のために、（例えば、不揮発性メモリ・デバイスのファームウェアによって）論理的にアドレス指定可能なメモリの目標領域に対して、どれだけの実メモリを割り当てる必要があるかを判定する（９０２）。この判定（９０２）をどのように行うかに関する制限はない。本発明のこれらの実施例に対しては、本技術において既知であるどの技術も適当である（例えば、ルックアップテーブル等を用いて、特定な有効耐久度と、論理的にアドレス指定可能なメモリの目標領域のサイズとから、この数を計算してもよい）。
【００５５】
十分な実メモリが利用可能である（９０４）なら、デバイス・コントローラは、特定耐久度（９０６）を提供するために実メモリを割り当てる（９０６）。この場合、例えば、実メモリ・サイズは、論理サイズに所望の耐久度（９００）の比率を掛け、デバイス本来の耐久度で割ったものである。
【００５６】
利用可能な実メモリが不十分である（９０４）ならば、オプションとしてエラー・メッセージ（９０６）を生成し、例えば、ホスト・デバイスへ送信する。いくつかの実施例によれば、システムがデバイスへ書き込むとすぐに、デバイス・コントロールは、次の空き領域を捜し、論理ブロックまたはメモリ・ロケーションを、データを記憶する物理ロケーションへマップする。論理から物理へのマップは、マッピング・テーブル内に保持する。このマッピング・テーブルは、ハードウェアに基づくメモリ・マップであってもよいし、あるいはファームウェアによって実行してもよい。マッピング・テーブルは、不揮発性メモリの特別なセクション内にバックアップし、電源オン時に再ロードする。
【００５７】
以下段落は、主要な各タイプの不揮発性メモリに適用可能な方法の、詳細な説明である。
【００５８】
図３は、模範的なフラッシュメモリ管理アルゴリズムの簡略フローチャートである。このシンプルなフローは、耐久度の向上を提供することを図解するために用いる。実際には、米国特許第５，９３７，４２５号に説明があるような、より高度なアルゴリズムを実行してもよい。書き込みブロック・コマンド（１０）は、論理ブロック番号Ｘを、フラッシュメモリへ書き込むように指定する。このブロックを書き込むために、フラッシュ管理ロジックは、空きブロックのプールから一つの空きブロックを割り当てる。この空きブロック番号は、物理アドレスＹを持つ（１１）。もし空きブロックのリストが空である（１２）ならば、フラッシュ管理は、メモリを捜して不使用ブロックを見つけ、それを消去し、それを空きブロック（１３）のリストへ付加する。いくつかのフラッシュ管理の実施例では、複数の空きブロックが同時に消去されてもよいし、また、他の実施例では、消去が、バックグラウンド処理として実行されてもよい。フラッシュ管理は、物理ブロックへ既にマップされているかどうかを意味するところの、論理ブロックＸが既に書き込まれているかどうかを検証する（１５）。ＹＥＳの場合は、その古い物理ブロックを「不使用」（１４）と標識し、消去してすぐに空きブロックのリストに付加する。最後に、論理ブロックＸを物理ロケーションＹへ書き込み、論理ブロックＸがＹを指すようにマッピング・テーブルを更新する（１６）。
【００５９】
もし、パーティションに割り当てた実メモリの量がｙであり、そして論理パーティション・サイズがｘならば、フラッシュメモリへｎ回書き込むことによって、各ロケーションは、平均で、ｎ×（ｘ÷ｙ）回書き込まれることになる。空きブロックが利用可能な限り、これらのブロックを、新しいデータを記憶するために使用する。その結果、フラッシュメモリ耐久度が、ｅ書き込みあるいは消去サイクルである場合、最小新耐久度レベルは、ｅｌ＝ｅ÷（ｘ÷ｙ）とになる。例えば、ｙ＝２０、そしてｘ＝１０と仮定する。最初は、すべてのブロックが空いているので、論理ブロック０―９への書き込みは、ＦＦＳが物理ブロック０―９へ書き込むことを引き起こす。もし、再びデータが論理ブロック０―９へ書き込まれるならば、ＦＦＳは、データを物理ブロック１０―１９へ書き込むことになる。ここまでは、各論理ブロックが二度書き込まれたのに、各物理ブロックは一度だけ書き込まれた。このプロセスを何度も繰り返すならば、論理メモリの損耗は、実メモリ本来の損耗の二倍になる、すなわち、耐久度が二倍である、と言える。ｅ＝１０，０００と仮定し、平均論理耐久度を計算するための上記公式を用いると、１０，０００÷（１０÷２０）＝２０，０００となる。これは、本来の実メモリ耐久度の２倍である。実用的には、ブロックが消耗するとすぐに（不良ブロックと標識されて）脇へ除かれてもはや使用されないことを考慮すると、実際の耐久度は、最小計算耐久度よりも非常に高いことになる。多くの冗長ブロックがあるので、フラッシュメモリは、物理メモリ容量が論理メモリ・サイズよりも大きい限り、使用可能である。実メモリの量が特定のレベル以下に減少するとすぐに、メモリ・デバイスを置換する必要があるとユーザに警告する警告メッセージを発生させてもよい。不良ブロック検出に起因して得られる追加の耐久度は、フラッシュメモリを使用するアプリケーションの性質と、デバイスの特徴に、高度に依存する。典型的なデバイスにおいては、実メモリ・サイズが論理サイズの単に二倍である場合、この追加の耐久度は、本来のデバイス耐久度の最高１０倍にもなることがある。
【００６０】
ＮＯＲフラッシュに対して類似の方法を実行できる。ＮＡＮＤフラッシュと違って、ＮＯＲフラッシュ読み出しは、ランダムアクセスリードオンリーメモリに類似している。模範的な実施例における、ＮＯＲフラッシュメモリに対する可変耐久度の実施は、読み出し／書き込み要求を受信し、物理的な読み出し／書き込みオペレーションを実行するためのソフトウェア層を含む。ハードウェアでロジックのいくつかを実行すれば、メモリ・デバイスから直接的に読み込み、ＮＯＲフラッシュメモリから直接的にアプリケーションを実行することが可能である。
【００６１】
図４は、有効耐久度を提供するようにＮＯＲフラッシュを構成するためのルーチンの模範的な実施例を図解する。部分図（１００）、（１１０）、（１２０）、（１３０）、（１４０）および（１５０）は、ＮＯＲフラッシュメモリ・コンテンツの異なる状態を図解し、部分図（２００）、（２１０）、（２２０）、（２３０）、（２４０）および（２５０）は、対応するアドレス・マッピングテーブルの状態を示す。高い耐久度レベルを必要とするＮＯＲフラッシュメモリ（１０１）のセクションは、４つのセクションに分割されて、０、１、２および３と付番されている。４つのセクションの各々のサイズは、論理メモリの所望のサイズに等しく設定されている。この例における実メモリの大きさは、論理メモリのサイズの４倍である。最初に、すべてのブロックを消去する。この例では、新しいデータを論理メモリ・ロケーション１０へ書き込みたい。メモリ・ブロック０は消去されるので、データをブロック０へ書き込み（１０１）、マッピング・テーブル（２００）内のロケーション１０にも０を記録する（２０１）。このことは、論理ロケーション１０をブロック０へマップすることを意味する。最初は、他の全てのマッピング・テーブル・ロケーションが、―１へ設定されている（２０２）、（２０３）。このことは、これらのエントリを使用していないことを示す。新しいロケーション（１１１）への書き込みを同様に実行し、マッピング・テーブル（２１１）を、それに応じて更新する。論理アドレス１０を再び書き込む必要があるとすぐに、次の物理ブロック（１２１）へそれを書き込み、マッピング・テーブルを、それに応じて更新する（２２１）。以前に書き込まれていない新しいロケーションへデータを書き込む場合は、ブロック０を用いる（１３１）。ロケーション１０を再び書き込むことによって、このアドレスのブロック番号は２へセットされる（１４１）、（２４１）。ロケーション１０を最初の３ブロックへ書き込んだ後、アドレス１０を次に書き込むときに（１５０）すべての以前に書き込んだロケーションからのすべてのデータを第四のブロックへコピーする（１０２）。そして新しいデータに対する空きを作るために最初の３ブロックを消去する（１５１）、（１５２）、（１５３）。それに応じてマッピング・テーブルを更新する（２５１）、（２５２）、（２５３）。この時点までは、ブロック３は最後で、ブロック０は最初だった。データをコピーした後、ブロック３が最初で、ブロック２が最後になる（１５４）よう、ブロック順序を３、０、１、２と再編成する。
【００６２】
メモリ読み込みオペレーションを実行すると、メモリーマップが最初に読み込まれ、所望のロケーションに関係するブロック番号が抽出される。そして、マッピング・テーブルが指すブロック番号からデータが読み込まれる。
【００６３】
図５は、本発明の模範的な実施例による、ランダムアクセス・デバイスへの書き込みオペレーションを説明するフローチャートである。書き込みプロセスは、ＦＦＳが、関連メモリ・ロケーションを読み込んで（４０）、このロケーションが書き込み可能かどうかを調べる（４１）ことから開始する。メモリ・ロケーションは、新しいデータが、ビットを「０」から「１」へ設定することを要求しなければ、書き込み可能である。例えば、メモリの消去領域がすべて１を含む場合は、常に書き込みが可能である。ヘックスＦ０で書き込まれたメモリ・バイトは、００へ変換してもよいが、ＦＦへは変換できない。データが書き込み可能であるならば、その新しいデータを所望のロケーションへ書き込む（４３）。そうでない場合は、ＦＦＳは、現在のブロック番号（４１）を前進させて、それが最後のブロック（４２）であるかどうかをチェックする。それが最後のブロックでないならば、マッピング・テーブルを更新し（４４）、それから、ＦＦＳはデータをメモリへ書き込む。新しいブロックを消去しているので、次のブロック内のこの論理ロケーションは書き込み可能である。これが最後のブロックである場合は、すべての他のブロックからの以前に書き込んだすべてのデータを最後のブロックへコピーし、最後のブロック以外のすべてのメモリ・ブロックを消去し、そして、すべての論理アドレスが最後のメモリ・ブロック（４５）を指すよう、マッピング・テーブルを更新する。
【００６４】
図６は、模範的な読み込みプロセスを説明する。  図６に図解した実施例によれば、メモリ・ロケーションを読み込むために、ＦＦＳは、まず、マッピング・テーブルを読み込み、関連ブロック番号（３０）を得る。それから、論理アドレスをブロック番号（３１）と組み合わせることによって、実メモリ・アドレスを計算する。この計算の後、所望のデータを読み込む（３２）。
【００６５】
図７は、マッピング・テーブルの、模範的なハードウェア実施例を図解する。マッピングＲＡＭ（２１）は、メモリ・ロケーション毎にブロック番号を記憶するために用いる。論理アドレス（２０）がマッピングＲＡＭアドレス・バスへ適用され、マッピングＲＡＭのデータ・バスは、不揮発性メモリ（２３）へ、高アドレス・ビット（２２）としてブロック番号を提供する。マッピングＲＡＭのハードウェア実施例は、高速読み込みアクセス・タイムを提供するとともに、メモリから直接的にコードを実行するＮＯＲフラッシュ特性を維持する。
【００６６】
マッピング・テーブルのサイズを縮小するために、複数のメモリ・アドレスをグループ化してもよい。例えば、３２の連続メモリ・アドレス毎にグループ化すれば、マッピング・テーブル・サイズを１／３２に減少させることができる。この場合、（マッピングＲＡＭに５最下位アドレスビットを適用しない）５アドレス・ビット少ないマッピングＲＡＭが可能である。前述のアルゴリズムは、ブロック番号が変わるたびに、同じグループに属するすべての有効なメモリ・ロケーションが、次のブロックへコピーされねばならないということ以外は、ほぼ同じ方法で作用する。例えば、グループ・サイズが３２バイトである場合、二度目をメモリ・ロケーション３５へ書き込む際に、メモリ・ロケーション３２―３４および３６―６３（同じグループに属するすべて）を次のブロックへコピーする必要がある。
【００６７】
ＥＥＰＲＯＭにも同じ方法が適用できる。しかし、書き込みの前に消去を実行する必要はない。したがって、同じ論理メモリ・ロケーションが更新されるたびに、データは次のメモリ・ブロックへ書き込まれる。
【００６８】
ランダムアクセス・デバイスに対する新しい耐久度の計算は、非ランダムアクセス・デバイスに対して先に説明したものと同じである。非ランダムアクセス・デバイスと同様、最小保証耐久度は、実メモリ・サイズと論理メモリ・サイズとの比率に正比例する。
【００６９】
本出願の説明および請求項における動詞「なる」、「含む」および「持つ」の各々、そしてその同根語は、動詞の単数あるいは複数の目的語が、必ずしも、動詞の単数あるいは複数の主語である部材、コンポーネント、要素またはパーツを完全にリストするわけではない、ということを示すために用いている。
【００７０】
実施例の詳細な説明を用いて本発明を説明したが、それらの実施例は、例として提供したものであり、発明の範囲を限定することを意図していない。説明の実施例は、異なる特徴を持つが、それらの特徴が、本発明のすべての実施例に必要なものではない。本発明のいくつかの実施例は、僅かにいくつかの特徴を、あるいは特徴の可能な組み合わせを利用している。説明した本発明の実施例、そして説明の実施例において注目した特徴の異なる組み合わせからなる本発明の実施例の異形が、同業者には思い浮かぶであろう。しかしながら、本発明の範囲は、以下の請求項のみによって限定される。
【図面の簡単な説明】
【００７１】
【図１Ａ】は、本発明の模範的な実施例による、模範的な不揮発性メモリ・デバイスのブロック図である。
【図１Ｂ】有効耐久度を提供するための、ＮＡＮＤフラッシュ等の非ランダムアクセス・メモリのデバイス・パーティショニング・ルーチンの模範的な実施例を図解する。
【図２】模範的なルーチンのフロー・チャートである。この場合、不揮発性メモリの少なくとも一部分が、特定な耐久度を提供するように構成される。
【図３】模範的なフラッシュメモリ管理アルゴリズムの簡略フローチャートである。
【図４】有効耐久度を提供するために、非ＮＯＲフラッシュを構成するためのルーチンの模範的な実施例を図解する。
【図５】本発明の模範的な実施例によるランダムアクセスデバイスへの書き込みオペレーションを表すフローチャートである。
【図６】模範的な読み込みプロセスを示す。
【図７】マッピング・テーブルの、模範的なハードウェア実施例を図解する。
【図１Ａ】
2009503629.tif 000003
【図１Ｂ】
2009503629.tif 000004
【図２】
2009503629.tif 000005
【図３】
2009503629.tif 000006
【図４】
2009503629.tif 000007
【図５】
2009503629.tif 000008
【図６】
2009503629.tif 000009
【図７】
2009503629.tif 000010