(57)【特許請求の範囲】
【請求項１】
規定最大プログラム時間と規定標準プログラム時間とを有し、プログラム・サイクルが完了したか否かを示す１つ以上の信号を供給するフラッシュ・メモリへの書込み方法であって、
前記規定標準プログラム時間より長く前記規定最大プログラム時間より短い実効プログラム時間を規定するステップと、
前記フラッシュ・メモリに第１のデータを書込むステップと、
規定された前記実効プログラム時間後に、プログラム・サイクルが完了したか否かを示す前記１つ以上の信号を評価するステップと、
前記プログラム・サイクルが完了した場合、第２のデータを前記フラッシュ・メモリに書込むステップと、
前記プログラム・サイクルが完了していない場合であり、前記第１のデータが処理中の場合、少なくとも前記第２のデータをバッファ・メモリに書込み、前記バッファ・メモリ内の前記少なくとも第２のデータが上書きされないように該少なくとも第２のデータにマークを付けるステップと、
更なるデータを記憶しようとする場合、前記第１のデータを書込む前記ステップから始まる前記各ステップと同様の各ステップを繰り返すステップと、
フラッシュ・メモリ内の空き領域を特定するステップと、
少なくとも第２のデータを前記バッファ・メモリからフラッシュ・メモリ内の前記空き領域へコピーするステップと、
を含み、前記バッファ・メモリからデータを消去できる、方法。
【請求項２】
前記フラッシュ・メモリはＮＡＮＤ型フラッシュ・メモリである、請求項１記載の方法。
【請求項３】
前記バッファ・メモリのサイズは、前記フラッシュ・メモリのプログラム処理が前記実効プログラム時間を越えると予測されるデータの総量に等しいか、或いは、それより大きい、請求項１または請求項２記載の方法。
【請求項４】
前記バッファ・メモリは、前記フラッシュ・メモリのプログラム処理が正常に行われなかったデータの格納にも使用される、請求項１または請求項２記載の方法。
【請求項５】
前記バッファ・メモリのサイズは、前記フラッシュ・メモリのプログラム処理が前記実効プログラム時間を越えると予測されるデータの総量と、前記フラッシュ・メモリのプログラム処理が正常に行われないデータの予測量との和に等しいか、或いは、それより大きい、請求項１または請求項２記載の方法。
【請求項６】
前記実効プログラム時間は実質的に前記規定最大プログラム時間の５０％である、請求項１記載の方法。
【請求項７】
規定最大プログラム時間と規定標準プログラム時間とを有し、プログラム・サイクルが完了したか否かを示す１つ以上の信号を供給するフラッシュ・メモリへの書込み装置であって、
前記規定標準プログラム時間より長く前記規定最大プログラム時間より短い実効プログラム時間を規定する手段と、
前記フラッシュ・メモリ内の第１の領域に第１のデータを書込む手段と、
規定された前記実効プログラム時間後に、プログラム・サイクルが完了したか否かを示す前記１つ以上の信号を評価する手段と、
前のプログラム・サイクルが完了した場合のみに、第２のデータを前記フラッシュ・メモリ内の第２の領域に書込む手段と、
バッファ・メモリと、
少なくとも前記第２のデータを前記バッファ・メモリに書込む手段と、
前記前のプログラム・サイクルが完了していない場合であり、前記第１のデータが処理中の場合、前記バッファ・メモリ内の前記少なくとも第２のデータを上書きしてはいけないことを通知する手段と、
フラッシュ・メモリ内の空き領域を特定する手段と、
前記少なくとも第２のデータを、前記バッファ・メモリからフラッシュ・メモリ内の前記空き領域へコピーする手段と、
を含み、前記バッファ・メモリからデータを消去できる、前記装置。
【請求項８】
前記バッファ・メモリのサイズは、前記フラッシュ・メモリのプログラム処理が前記実効プログラム時間を越えると予測されるデータの総量に等しいか、或いは、それより大きい、請求項７記載の装置。
【請求項９】
前記バッファ・メモリは、前記フラッシュ・メモリのプログラム処理が正常に行われなかったデータの格納にも使用される、請求項７または請求項８記載の装置。
【請求項１０】
前記実効プログラム時間は実質的に前記フラッシュ・メモリの前記規定最大プログラム時間の５０％である、請求項７、請求項８及び請求項９の何れかに記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュ・メモリへの書込み方法及び書込み装置に関する。
【背景技術】
【０００２】
フラッシュ・メモリ技術は、例えば、メモリカード、ＵＳＢドライブ、ＭＰ３プレーヤ、及び、デジタル・スチル・カメラ用画像ストレージ等に広く利用されている。フラッシュ・メモリは、通常、ＮＡＮＤ構造またはＮＯＲ構造に基づいている。ＮＡＮＤ構造は、大容量のデータを記憶する必要のあるフラッシュ・デバイスに最適である。ＮＡＮＤ型フラッシュ・デバイスには、通常、例えばデータが実際に各フラッシュ・メモリ・セルに書込まれるいわゆる「プログラム処理」時にデータを保持するデータ・レジスタが備えられている。
【０００３】
ＮＡＮＤ型フラッシュ・デバイスには、通常、不良により情報を記憶しないことがある１つ以上のビットを含み、従って、使用不可であるページ、いわゆる不良ページ（Ｂａｄ  Ｐａｇｅ）または不良ブロック（Ｂａｄ  Ｂｌｏｃｋ）が含まれている。更に、ＮＡＮＤ型フラッシュ・メモリは、磨耗しやすく、従って、不良になるブロックが徐々に増えていくことになる。このような理由及びその他の理由で、各ブロックでは、データの記憶が必ずしも正常に行われないこともあり得る。一般的なＮＡＮＤ型フラッシュ・デバイスでは、プログラム時間について２つの規定限度、即ち、「標準プログラム時間」と「最大プログラム時間」とがデータ・シートに定義されている。標準プログラム時間は、全てのページのうち５０％を上回るページが（規定の電圧レベルと規定の温度で）プログラムされる時間であると定義されている。従って、全てのページ・プログラム処理のうち５０％を上回る処理が、標準プログラム時間を上限とする時間で、行われることになる。残りのページについては、最大プログラム時間が上限となる。例えば、現在のマイクロン（Ｍｉｃｒｏｎ）社製のＮＡＮＤ型フラッシュ・デバイスでは、標準プログラム時間が３００マイクロ秒であり、最大プログラム時間が７００マイクロ秒と規定されている。
【０００４】
上述のような不良ブロックを常時監視するのは、ＮＡＮＤ型フラッシュ・デバイスを利用する各アプリケーションの役割であるが、良好なブロックは一般的に１０万回から１００万回以上消去して再プログラムできる。デバイスのプログラム時間は書込み・消去サイクル数が増大するに従って僅かに減少し、デバイスの寿命は、通常、プログラム・エラー（プログラムが正常に行われないこと）以外の不良によって決まる。
【０００５】
上述の標準プログラム時間と最大プログラム時間が異なるのは、使用するプログラム・ベリファイ方法に起因している。即ち、データ・ビットをプログラムする試みが何回も行われてベリファイされて初めて、プログラム処理が正常に行われるか、或いは、タイムアウトになる。このプログラム・ベリファイ処理は、内部制御論理回路によって自動的に実行される。
【０００６】
ＮＡＮＤ型フラッシュ・メモリは、１ページをデータ・レジスタからＮＡＮＤ型フラッシュ・メモリ・セル・アレーにプログラムするのに要するプログラム時間に起因する固有の無視できないレイテンシーを有する。しかし、正常なページ・プログラム処理についてのプログラム時間は、十分に確定的なものではなく、最大プログラム時間を上限とする範囲内に分散している。従って、データを連続的に記憶する必要のある各アプリケーションでは、最大プログラム時間によって、達成可能な実効データ・レートが決まる。
【０００７】
ＮＡＮＤ型フラッシュ・メモリ技術についての更に詳しい情報は、「ＮＡＮＤ  Ｆｌａｓｈ  Ｄｅｓｉｇｎ  Ｇｕｉｄｅ  ｂｙ  Ｔｏｓｈｉｂａ」（www.data-io.com/pdf/NAND/Toshiba/NandDesignGuide.pdf.pdf）から入手可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題の１つは、フラッシュ・デバイスの実効プログラム時間を低減する方法及びその構成を提供することである。
【０００９】
もう１つの課題は、達成すべきデータ・レートが、使用するフラッシュ・デバイスの最大プログラム時間からもたらされるデータ・レートよりも高く、且つ、当該フラッシュ・デバイス内に於けるプログラム・ベリファイ処理を妨げない態様で、連続するデータ・ストリームを当該フラッシュ・デバイスに記憶する方法及びその構成を提供することである。
【特許文献１】特開２００４−２２７７４８号公報
【課題を解決するための手段】
【００１０】
本発明は、規定された最大プログラム時間を実際に必要とするメモリ・ブロックの数がほんの僅かだけであることを利用して、記憶すべきデータを失うことなく上述の各課題を解決するものである。本発明に従えば、当該データは、バッファ・メモリに格納され、その後、バッファ・メモリからフラッシュ・メモリ・デバイスにコピーされる。ここでは、記憶すべきデータについて十分なフラッシュ・メモリ・スペースが利用可能であると仮定する。特に、標準プログラム時間よりも明らかに（例えば１０％）長いが、最大プログラム時間よりも標準プログラム時間に近い実効プログラム時間を選択すると、プログラムが正常に行われない確率、即ち、プログラム・エラーの確率は十分に低くなるので、プログラム処理が正常に行われなかったデータをバッファ・メモリに保持して、その後、バッファ・メモリからフラッシュ・メモリにコピーできる。
【００１１】
本発明の一態様に従えば、規定最大プログラム時間と規定標準プログラム時間とを有し、プログラム・サイクルが完了したか否かを示す１つ以上の信号を供給するフラッシュ・メモリへの書込み方法が、規定標準プログラム時間より長く規定最大プログラム時間より短い実効プログラム時間を規定するステップと、フラッシュ・メモリ内の第１の領域に第１のデータを書込むステップと、規定された実効プログラム時間後に、プログラム・サイクルが完了したか否かを示す１つ以上の信号を評価するステップと、プログラム・サイクルが完了した場合、第２のデータをフラッシュ・メモリ内の第２の領域に書込むステップと、プログラム・サイクルが完了していない場合、少なくとも第２のデータをバッファ・メモリに書込み、バッファ・メモリ内の該少なくとも第２のデータが上書きされないように該少なくとも第２のデータにマーク（標識）を付けるステップと、更なるデータを記憶しようとする場合、第１のデータを書込む上記ステップから始まる上記各ステップと同様の各ステップを繰り返すステップと、フラッシュ・メモリ内の空き領域を特定するステップと、少なくとも第２のデータをバッファ・メモリからフラッシュ・メモリ内の空き領域へコピーするステップと、を含み、バッファ・メモリからデータを消去できる。
【００１２】
本発明の一態様に従えば、規定最大プログラム時間と規定標準プログラム時間とを有し、プログラム・サイクルが完了したか否かを示す１つ以上の信号（例えば「状態読み取り」信号、「ビジー」信号）を供給するフラッシュ・メモリへの書込み装置が、規定標準プログラム時間より長く規定最大プログラム時間より短い実効プログラム時間を規定する手段と、フラッシュ・メモリ内の第１の領域に第１のデータを書込む手段と、規定された実効プログラム時間後に、プログラム・サイクルが完了したか否かを示す１つ以上の信号を評価する手段と、前のプログラム・サイクルが完了した場合のみに、第２のデータをフラッシュ・メモリ内の第２の領域に書込む手段と、バッファ・メモリ（例えば、複数のページに対して十分なサイズのページ・バッファ）と、少なくとも第２のデータをバッファ・メモリに書込む手段と、前のプログラム・サイクルが完了していない場合、バッファ・メモリ内の少なくとも第２のデータが上書きされないように該少なくとも第２のデータにマーク（標識）を付ける手段と、フラッシュ・メモリ内の空き領域を特定する手段（これは、例えば各予備ブロックを示すテーブルでもよい）と、少なくとも第２のデータをバッファ・メモリからフラッシュ・メモリ内の空き領域へコピーする手段と、を含み、バッファ・メモリからデータを消去できる。
【００１３】
本発明の一実施例では、更なる記憶すべきデータが無いことを確認する手段を使用してもよい。
【００１４】
一推奨実施例では、フラッシュ・メモリは、ＮＡＮＤ型フラッシュ・メモリである。
【００１５】
一実施例では、バッファ・メモリのサイズは、フラッシュ・メモリのプログラム処理が実効プログラム時間を越えると予測されるデータの総量に等しいか、或いは、それより大きい。更に、一実施例では、バッファ・メモリのサイズは、フラッシュ・メモリのプログラム処理が実効プログラム時間を越えると予測されるデータの総量と、フラッシュ・メモリのプログラム処理が（フラッシュ・メモリの通常の動作に照らして）正常に行われないデータの予測量との和に等しいか、或いは、それより大きい。
【００１６】
一実施例では、バッファ・メモリは、フラッシュ・メモリのプログラム処理が正常に行われなかったデータの格納にも使用される。
【００１７】
一例として、実効プログラム時間は実質的に規定最大プログラム時間の５０％である。
【００１８】
本発明は、過度に高速にアクセスされたフラッシュ・デバイスに於けるプログラム時間エラーに対処する方法及び装置として理解することも出来る。
【００１９】
本発明の有効な各実施例は、特許請求の範囲の各従属請求項、以下の説明、及び、添付図面に於いて開示する。
【発明を実施するための最良の形態】
【００２０】
図１には、連続するリアルタイムの各データ・ストリームの記憶に使用できる、Ｎ個のＮＡＮＤ型フラッシュ・デバイスとページ・バッファとを有する回路の構成が示されている。例えば各フラッシュ・デバイスの個別のチップ・イネーブル用に共通Ｉ／Ｏアドレス／データ・バスＢ及び制御信号Ｃが使用されて、データがページ毎に（更に各ページがバイト単位で）各フラッシュ・デバイスに順次書込まれる。当該データは、各フラッシュ・デバイスに（論理的に）並列に接続されたページ・バッファにも書込まれることがある。各フラッシュ・デバイスは規定の最大プログラム時間より短いプログラム時間で動作させられるが、不定期的にプログラム時間超過が生じる。本発明に従えば、少なくとも、このようなプログラム時間超過になったデータがページ・バッファに格納され、その後フラッシュ・メモリの残りの空いた領域にコピーされる。
【００２１】
図１以降の各図は、並列接続について簡略化されている。当業者であれば、各フラッシュ・デバイスが単純に並列接続されているのではなく、また、バッファ・メモリについても同様であることが分かる筈である。従って、図示された各構成は、論理構成として理解されるべきである。
【００２２】
本発明の一実施例では、通常動作時に各フラッシュ・メモリに書込まれる全てのデータがページ・バッファにも書込まれる。プログラム処理が正常に完了すると、ページ・バッファ内のこれらのデータは、上書きされるか、或いは、削除される。
【００２３】
本発明の別の一実施例では、フラッシュ・メモリに記憶されなかったデータのみがページ・バッファに書込まれる。即ち、フラッシュ・メモリが規定の実効プログラム時間（各フラッシュ・デバイスの規定の最大プログラム時間よりも短い時間）内で内部プログラム・ベリファイ処理を完了できなかったデータ以降のデータのみがページ・バッファに書込まれる。
【００２４】
図２には、特定数のフラッシュ・デバイスについて、データ・ストリームの順次連続書込み例が簡略的且つ論理的に示されている。ここで、各フラッシュ・デバイスは、書込み時間ｔＷｒｉｔｅとプログラム時間を必要とする。このアーキテクチャによれば、１個のフラッシュ・デバイスの論理データ・ワード幅、即ち、「バンド幅」は、少なくとも、書込み時間（この例では６３．５マイクロ秒）中に記憶する必要のあるデータ量であると仮定されている。フラッシュ・デバイス内に在るデータ・レジスタにデータ・ブロックを格納する書込み時間ｔＷｒｉｔｅは同型の全てのデバイスについて一定で等しいが、データをデータ・レジスタからフラッシュ・メモリ・セルに記憶するプログラム時間は、デバイスＦｌａｓｈ＃１から＃１３について、それぞれ異なる。更に、各個別のデバイスについて、プログラム時間は、各（書込み）アクセスについて不確定的に、即ち、予測不可能に異なる。例えば、Ｆｌａｓｈ＃１のある書込みアクセスについてのプログラム時間は、図示の如く最大許容プログラム時間ｔＰＲＯＧ．ｍａｘ（例えば、７００マイクロ秒）に達するが、次の書込みアクセスは（かなり高い確率で）これより遥かに短い時間で行われる場合がある。これは、遥かに短い標準プログラム時間（例えば、３００マイクロ秒）が、デバイス製造業者によって保証されているからである。
【００２５】
従来の連続データ記憶用システムは、個別のフラッシュ・デバイスについて、連続する書込みアクセス相互間が規定の最大プログラム時間ｔＰＲＯＧ．ｍａｘ以上であるように設計されている。従って、図２に示される例（正確な尺度ではない）では、１３個のフラッシュ・デバイスが必要である（即ち、フラッシュ・デバイスの各々１個と、その最大プログラム時間をブリッジする１２個のデバイスとが必要である：７００÷６３．５＝１１．０２）。
【００２６】
本発明では、例えば４００マイクロ秒の短縮されたプログラム時間（ここでは、実効プログラム時間ｔＰＲＯＧ．ｅｆｆと呼ぶ）を使用する。任意のデバイスが実効プログラム時間より長く最大プログラム時間以下の時間を必要とする場合もあるが、この場合の確率は十分低いので、記憶すべきデータ・ストリームの記憶が完了するまで全ての当該ページがページ・バッファ（通常の製品化されたデバイスのサイズを有する）に格納され、次にそのバッファリングされたデータがフラッシュ・メモリ・アレーの残りの領域に転送されると考えてよい。
【００２７】
図３には、３００マイクロ秒の標準プログラム時間と７００マイクロ秒の最大プログラム時間とが規定されたマイクロン社製フラッシュ・デバイス１個のプログラム時間の分布例（対数目盛）が示されている。この図から判るように、３００マイクロ秒の標準プログラム時間を越えるプログラム処理は、ほんの僅か（２〜３％）である。これは、ランダムなサンプルであることに基づく共通統計結果である一方、全てのデバイス及び広範囲な動作パラメータについて規定される。しかし、不意に、非常にほんの僅かなプログラム処理（０．００２％未満）が３５０マイクロ秒のプログラム時間を越え、更に極僅かなプログラム処理が４２５マイクロ秒のプログラム時間を越えることが観測されている。この挙動は、その他の製造業者製も含めて全ての種類のＮＡＮＤ型フラッシュ・デバイスに原則的に当て嵌まる。尚、プログラム時間がｔＰＲＯＧ．ｍａｘになることも有り得る。
【００２８】
更に多くのサンプルを考察した結果、図４に示すような分布が得られた。これは、上記１個のデバイスの動作と基本的に対応している。１ページが３５０マイクロ秒（最大プログラム時間の僅か半分）のプログラム時間を越える割合は、ほんの１．３×１０−３％または１．３×１０−５％程度である。このように、記憶されないデータの量は、非常に低いので、各フラッシュ・デバイスに（論理的に）並列接続されたページ・バッファに格納することが出来る。例えば、１ＧＢのデータ・ストリームでは、ページ・バッファに格納すべきデータの量は１３ＫＢになる。
【００２９】
図５のタイミング図は、本発明に従うフラッシュ・デバイス及びページ・バッファへのアクセスを、簡略化した論理的形態で、示している。任意の時点ｔ０に於いて、データ・ページｉを、現在のデータとして、記憶しようとする。あるフラッシュ・デバイスが選択されイネーブルされてこれらのデータｉを記憶しようとする（尚、実際、データが連続的に供給される訳ではない）。当該フラッシュ・デバイスは、簡略化した論理的形態で与えられる状態信号として、「高／真」と「低／偽」の値を取り得る「ビジー」信号、及び、「ＯＫ」と非「ＯＫ」の値を取り得る「状態読み取り」信号を発生する。時点ｔ０に於いて、フラッシュ・デバイスは、その状態信号によって、現在のデータｉを記憶中であり、従って、ビジーであることを示す。実際、フラッシュ・デバイスは、前述の如く２つのステップでこの記憶を行う。即ち、先ずデータをデータ・レジスタに格納し、次に実際のフラッシュ・メモリ・セル内に記憶する。このことは、詳しく図示されていない。同時に、データｉは、「バッファ・データ」としてページ・バッファにも格納される。
【００３０】
本発明の別の実施例では、この時点ｔ０に於けるデータのバッファリングは行われない。最大プログラム時間ｔＰＲＯＧ．ｍａｘより短い実効プログラム時間ｔＰＲＯＧ．ｅｆｆが、各フラッシュ・デバイスについて規定されており、この時間（＋データ・レジスタ書込み時間）が時点ｔ１に於いて経過すると、次のデータｉ＋１が到来して、その記憶処理を行う必要がある。通常、前の記憶処理（即ち、前のプログラム処理）がこの時点ｔ１で完了し、フラッシュ・デバイスは新たなデータｉ＋１の記憶を継続的に行える。しかし、図５には、フラッシュ・デバイスが実効プログラム時間より長い時間を必要とするクリティカルな場合が示されている。これに従えば、フラッシュ・デバイスは、次のデータが到来する時点ｔ１に於いて、依然としてビジーである。しかし、本発明に従えば、新たなデータｉ＋１は、フラッシュ・メモリよりも遥かに高速なページ・バッファに書込まれる。基本的に、ページ・バッファへの書込みは、フラッシュ・デバイス内のデータ・レジスタへの書込みよりも長い時間を要しない。尚、書込み時間ｔＷｒｉｔｅは、フラッシュ・デバイスについて通常規定されている書込みサイクル時間ｔＷｒｉｔｅＣｙｃとは異なる（即ち、ｔＷｒｉｔｅ＝ｎ×ｔＷｒｉｔｅＣｙｃであり、ここでｎは約２Ｋバイト）。
【００３１】
この時点ｔ１に於いて、ページ・バッファに書込まれた新たなデータｉ＋１が直ぐにフラッシュ・メモリに記憶されないことは明らかである。従って、当該データには、ページ・バッファからフラッシュ・メモリにコピーされるのに十分な時間が出来るまで、ページ・バッファに格納しておく必要があることを示すマーク（標識）が付けられる。これは、同一のフラッシュ・メモリの場合もあるし別のフラッシュ・メモリの場合もある。このマークは、フラッシュ・プログラムが正常に行えなかった各バッファリング済みページについてのシーケンス情報、位置情報または時間情報から成る。この情報は、各フラッシュ・デバイス及びページ・バッファへのアクセスを制御するコントローラに格納されていることが望ましく、ページ・バッファ内にも格納されていてもよい。
【００３２】
現在説明している実施例では、新たなデータ・ページｉ＋１をｔＰＲＯＧ．ｅｆｆの現在のサイクル中に記憶しようとしない。当該ページがバッファリングされた後、コントローラは、これをフラッシュ・メモリに記憶する更なる試みをスキップする。現在のサイクル中（ｔＰＲＯＧ．ｅｆｆ≧ｔＰＲＯＧ．ｍａｘ／２であると仮定する）、フラッシュ・メモリの各状態信号は、時点ｔ１２に於いて、前のデータ・ページが正常に記憶されたことを示す。
【００３３】
更に別の一実施例では、バッファリング済みデータ・ページｉ＋１を続けて記憶することも可能である。しかし、これは、Ｉ／Ｏバスがその他のデバイス向けのデータについてビジーであるので、難しい。
【００３４】
次のデータ・ページｉ＋２を当該フラッシュ・デバイスに時点ｔ２に於いて記憶する際は、前述の如く記憶できる。これは、その前に記憶されたデータ・ページｉの最大プログラム時間が終了しているためである（ｔＰＲＯＧ．ｅｆｆ≧ｔＰＲＯＧ．ｍａｘ／２と仮定する）。仮に、より短い実効プログラム時間を使用したとすると、最大プログラム時間は、時点ｔ２に於いて、まだ終了しておらず、従って、次のデータ・ページｉ＋２は、前のデータ・ページｉ＋１と同じように処理する必要がある。即ち、バッファリングする必要がある。
【００３５】
一実施例に於いて、ページ・バッファは、フラッシュ・プログラムがｔＰＲＯＧ．ｅｆｆを越えたデータ・ページを基本的に次のように格納する。
【表１】
0005248803.tif 000002
【００３６】
表１は、ページ・バッファの単純な使用例を示している。各行は、ｔＷｒｉｔｅ＋ｔＰＲＯＧ．ｅｆｆの時間後のページ・バッファの状態を表している。第１のバッファ・ページ（バッファ・ページ＃０）は、現在のデータ・ページ、即ち、フラッシュ・メモリにも現在記憶中であるデータ・ページをバッファリングするのに使用される。フラッシュ・プログラム処理が、次のデータ・ページ（表１のページｊ＋２）を記憶する必要がある時点で、正常に行われなかった場合、このデータ・ページを、次の上位のバッファ・ページ（バッファ・ページ＃１）にバッファリングする。ｔＰＲＯＧ．ｅｆｆ≧ｔＰＲＯＧ．ｍａｘ／２と仮定すると、最大プログラム時間は、次のデータ・ページ（ｊ＋３）を記憶する必要がある時点で、既に経過しており、従って、上記次のデータ・ページ（ｊ＋３）は、第１のバッファ・ページ（バッファ・ページ＃０）を再利用できる。これに続く各データ・ページも、次のエラーが生じる時点まで、この第１のバッファ・ページ（バッファ・ページ＃０）に格納される。
【００３７】
表１に於いて、データ・ページｊ＋５は、次のデータ・ページｊ＋６が到来した時点で、フラッシュ・メモリに正常に記憶されておらず、従って、フラッシュ・メモリは、前のデータ・ページｊ＋５についてまだビジーであることを各状態信号によって示す。この時、バッファ・コントローラは、次のデータ・ページｊ＋６が次の空いたバッファ・ページ（この例では、バッファ・ページ＃２）にバッファリングされるように制御する。更に続く各データ・ページは、上述の如く、第１のバッファ・ページ（ページ＃０）に再び格納される。
【００３８】
最終的に、最後のデータ・ページＭ−１がフラッシュ・メモリに記憶された時点で、ページ・バッファは、「現在のデータ」用のバッファ・ページに後続する各バッファ・ページ上に、フラッシュ・メモリにまだ記憶されていない全てのデータ・ページを格納している。これは、それぞれの前のデータ・ページが実効プログラム時間を越えていた為である。次に、これらのデータ・ページは、フラッシュ・メモリにコピーできる。これらのデータ・ページの前述の位置情報、シーケンス情報または時間情報は、当該データ・ストリームを復元するために必要であり、従って、フラッシュ・メモリに記憶されていてもよい。
【００３９】
上述の一連の工程は、フラッシュ・メモリの記憶処理が、完全に不良ブロックが原因で、正常に行われなかったデータ・ページを考慮していない。これらのデータ・ページも、ページ・バッファに格納してもよく、その格納処理も上述の処理に追加すればよい。その場合、例えば、現在のバッファ・ページは、プログラム・エラー後に（即ちプログラムが正常に行われなかった後に）上書きされず、ページ・バッファは、最終的に、それぞれの理由でフラッシュ・メモリに記憶されなかった全てデータ・ページを格納する。
【００４０】
前述の如く、一実施例では、ページ・バッファは、フラッシュ・メモリに書込めなかったデータ・ページのみを保持する。別の実施例では、ページ・バッファは、更に現在の１つ以上のページも保持できる。その際の現在のページの数は、ｔＰＲＯＧ．ｍａｘ／ｔＰＲＯＧ．ｅｆｆの比率で決まる。図５は、ｔＰＲＯＧ．ｍａｘ／２≦ｔＰＲＯＧ．ｅｆｆ＜ｔＰＲＯＧ．ｍａｘの場合を示している。例えば、ｔＰＲＯＧ．ｍａｘ／３≦ｔＰＲＯＧ．ｅｆｆ＜ｔＰＲＯＧ．ｍａｘ／２の場合、１つのデータ・ページだけではなく、少なくとも２つの連続するデータ・ページを格納する必要がある。同様に、ｔＰＲＯＧ．ｍａｘ／４≦ｔＰＲＯＧ．ｅｆｆ＜ｔＰＲＯＧ．ｍａｘ／３の場合、少なくとも３つの連続するデータ・ページを格納する必要がある。しかし、これより高い比率の場合、現行のフラッシュ・デバイス及びページ・バッファのサイズを前提とすると、プログラム処理エラーの確率（即ちプログラム処理が正常に行われない確率）が余りにも高くなる。従って、現時点では、本実施例について有効な構成は、ページ・バッファが、ｔＰＲＯＧ．ｅｆｆを越えるページ毎に、１〜３ページをバッファリングする構成である。
【００４１】
本発明は、リアルタイムの制約があるアプリケーションについても、ＮＡＮＤ型フラッシュ・デバイスのプログラム時間の効果的な低減を促進する。これにより、ＮＡＮＤ型フラッシュ・デバイス１個についての保証データ・レートが向上する。データ・レートのスケーリングに関して、より少ないＮＡＮＤ型フラッシュ・デバイスで、ある一定の保証データ・レートを実現することが要求される。
【００４２】
データ・レートのスケーリングに関して、本発明は、従来技術よりも少ないＮＡＮＤ型フラッシュ・デバイスで保証入力データ・レートを実現できる。即ち、所定数のＮＡＮＤ型フラッシュ・デバイスで、従来技術に比べて高い保証データ・レートを実現できる。
【００４３】
測定により、現行のＮＡＮＤ型フラッシュ・デバイスの性能を数値化し、プログラム時間の実際の分布を算定した。この測定結果によれば、例えばマイクロン社製ＮＡＮＤ型フラッシュ・デバイス（標準プログラム時間／最大プログラム時間が３００マイクロ秒／７００マイクロ秒）について、最大プログラム時間の半分に過ぎない３５０マイクロ秒のプログラム時間を越えるページ・プログラムは、全体の僅か１．３×１０−３％である。この測定結果から、実効プログラム時間を効果的に低減することは妥当で技術的に実行可能であり、最大プログラム時間の半分にまでさえも低減可能であると結論づけられる。
【００４４】
以下、本発明を、７００マイクロ秒の最大プログラム時間が３５０マイクロ秒の実効プログラム時間まで低減される場合について、説明する。尚、本発明は、この特定の割合に限定されるものではない。この割合で、例えばマイクロン社製フラッシュ・デバイスについて、データ・レートを約８０％増大できる。更に、以下の説明では、ページ・バッファは、フラッシュ・メモリの記憶処理が、完全に不良ブロックが原因で、正常に行われなかったデータ・ページの格納にも使用されるものとする。
【００４５】
保証データ・レートが必要なアプリケーション（例えば、リアルタイムのデータ・ストリームの記憶）の場合、一般的に、各データ・ページをＮＡＮＤ型フラッシュ・デバイスに一定の時間で記憶することが必要である。再度同一ＮＡＮＤ型フラッシュ・メモリに新たな（次の）ページを記憶し始めるまでの時間は、プログラム時間と、セットアップ及びアドレスに要する時間と、１ページをデータ・レジスタに入力するのに要する時間とで決まる。「状態読み取り」動作によって、ページ・プログラム動作がまだ継続中であるか、或いは、正常に完了したかを確認できる。（例えば新たな不良ブロックが原因で）正常に行われないページ・プログラムの対処法の１つでは、現在選択されているＮＡＮＤ型フラッシュ・メモリのデータ・レジスタに入力されるページをページ・バッファにも同時に格納する。「状態読み取り」によってページ・プログラムが正常に行われたことが確認されると、当該ページは、ページ・バッファから削除、或いは、別のページに上書きされる。ページ・プログラムが正常に行われなかった場合、当該ページは、ストリームの記憶が完了するまでページ・バッファに保持され、その後、空き記憶容量を有するＮＡＮＤ型フラッシュ・デバイスに記憶される。各ページの正確な順序を維持するために、後続ページのアドレス位置を記憶する必要がある。これは、別個の装置内、或いは、異なるフラッシュ・デバイスへのアクセスをも制御するコントローラ装置内で行うことが出来る。
【００４６】
最大プログラム時間を実効プログラム時間にまで低減することに関して、プログラム時間を越える各場合については、それぞれ異なる処理が必要である。これに関して、正常に行われなかったページ・プログラムの対処用のページ・バッファを使用できる。即ち、実効プログラム時間を越える場合の処理行程は、正常に行われなかったページ・プログラムの場合の処理行程と組み合わせることが出来る。尚、１つの大きな違いは、ページ・プログラム動作が実効プログラム時間（この例では３５０マイクロ秒）を越える場合、バッファリングが必要なのは次のページである。更に、依然としてビジーであるＮＡＮＤ型フラッシュ・デバイスのデータ・レジスタへの次のページの入力は、抜かす必要がある。従って、当該ページはページ・バッファのみに格納される。一方、プログラムが正常に行われない場合では、バッファリングが必要なのは現在のページである。
【００４７】
次に、１つの例を説明する。ＮＡＮＤ型フラッシュ・デバイスｋに記憶すべきｉ番目のページが３５０マイクロ秒の実効プログラム時間を越えると、同一ＮＡＮＤ型フラッシュ・デバイスｋに記憶すべき（ｉ＋１）番目のページは、ページ・バッファのみに格納され、ＮＡＮＤ型フラッシュ・デバイスｋのデータ・レジスタへの入力は抜かす必要がある。（ｉ＋２）番目のページは、現時点で７００マイクロ秒の元々の最大ページ・プログラム時間が過ぎているので、再度このＮＡＮＤ型フラッシュ・デバイスｋに記憶できる。現時点でこの最大ページ・プログラム時間が過ぎていることは、ｉ番目のページが、現時点でデバイスｋのフラッシュ・アレーに記憶されているか、或いは、その「状態読み取り」信号が、ページ・プログラム処理が正常に行われなかったことを示すことを意味する。若し、「状態読み取り」信号によって、ページ・プログラム動作が実効プログラム時間の終了後も依然として継続中であることが示される場合、そのページ・プログラム動作は実効プログラム時間を越えていることになる。ストリームの記憶が完了すると、ページ・バッファ内の全ての残りのページは、空き記憶容量を有する各ＮＡＮＤ型フラッシュ・デバイスに記憶される。尚、これらのデバイスは、実際の記憶データ量が一様でなく、従って、測定によって特定する必要がある場合もあるし、或いは、１つ以上のフラッシュ・デバイス内の予備記憶スペースを使用しても良い。
【００４８】
プログラム時間を越える場合の処理には、対応する各ページを格納するのに十分な大きさのページ・バッファが必要である。前述の測定結果及び算定結果によれば、ページ・バッファにバッファリングすべきデータの予測量は、データ・ページのサイズと、記憶すべきデータの最大量（即ち、データ・ストリーム長）と、使用するフラッシュ・デバイスが選択された実効プログラム時間を越える確率（これは選択された実効プログラム時間により決まる）とに従って推定できる。前述のその他の実施例では、使用するフラッシュ・デバイスの記憶が正常に行われない確率も考慮に入れる必要がある。前述の如く、実効プログラム時間は、システムがデータの損失を防止する一方でページ・バッファが妥当なサイズを有するように、選択できる。しかし、本発明に従えば、実効プログラム時間は、それぞれのフラッシュ・デバイスについて規定された標準プログラム時間と最大プログラム時間との間にあるように（通常、最大プログラム時間よりも標準プログラム時間に近いように）選択される。
【００４９】
本発明は、リアルタイムの制約、即ち、保証データ・レートを考慮する必要がある場合、例えば、連続するリアルタイムのデータ・ストリームを記憶する場合に特に有効である。実効プログラム時間を低減することによって、必要なデータ・レートで記憶を行わなければならないＮＡＮＤ型フラッシュ・デバイスの最低限の数を低減できる一方、データの損失も、ここに開示する構成とメカニズムによって、防止できる。
【００５０】
特に、保証データ・レートが要求される場合、例えば、リアルタイム制約が有るアプリケーションの場合、最大プログラム時間を考慮する必要がある。従って、ストレージ構造をより高いデータ・レートにスケーリングする場合、最大プログラム時間によって、具体的な保証データ・レートを達成するのに必要なフラッシュ・デバイスの最低限の数が決まる。保証データ・レートは、形状が小さく制限されるストレージ・システムにとって、特に制約事項になっている。これは、ストレージ・システムが一般的に内蔵できるフラッシュ・デバイスの数に上限が有る為である。更に、フラッシュ・デバイスの数を増やすことは、システムの記憶容量を増大することを意味するが、コストもその分増大することになる。
【００５１】
本発明は、必ずしもＮＡＮＤ型フラッシュ・デバイスに限定されるものではなく、同様のプログラム時間分布を有するその他のストレージ装置やメモリ装置にも利用できる。
【図面の簡単な説明】
【００５２】
【図１】ページ・バッファを追加したＮＡＮＤ型フラッシュ・アレーの構成を示す図である。
【図２】各フラッシュ・デバイスへの論理アクセス・パターンを簡略化して示す図である。
【図３】マイクロン社製フラッシュ・デバイス１個のプログラム時間の分布例を示す図である。
【図４】同一タイプのマイクロン社製の任意のフラッシュ・デバイスのグループのプログラム時間の分布例を示す図である。
【図５】フラッシュ・デバイスへのアクセス及びバッファへのアクセスを示すタイミング図である。
【図１】
0005248803.tif 000003
【図２】
0005248803.tif 000004
【図３】
0005248803.tif 000005
【図４】
0005248803.tif 000006
【図５】
0005248803.tif 000007