(57)【要約】【解決手段】  フラッシュメモリシステムのアーキテクチャは、データの高速プログラムを達成するため直列に接続されたフラッシュメモリ装置を有する。データの高速プログラムは、データの種々のページが異なるメモリ装置に格納されるように、システム内のメモリ装置にプログラムされるべきデータのページをインターリーブすることによって行われる。メモリコントローラは、各メモリ装置にプログラム命令を発する。各メモリ装置は、プログラム命令を受け取るとき、プログラム動作を開始するか命令を次のメモリ装置へ渡す。それ故、フラッシュシステムのメモリ装置は、次から次にデータのページを連続的にプログラムし、これにより、フラッシュメモリシステムにデータの各ページをプログラムする遅延をできるだけ小さくする。メモリコントローラは、各メモリ装置の耐久性を最大限にし、あるいはあらゆるサイズのデータのプログラム性能と耐久性を最適化する損耗レベルアルゴリズムを実行することができる。【選択図】  図４
2009531747.tif 000002
【特許請求の範囲】
【請求項１】
チャンネルに接続された第１および第２のフラッシュメモリ装置を制御する方法であって、
ａ）第１の命令に応答して第１のフラッシュメモリ装置において第１の動作を実行し、
ｂ）第１のフラッシュメモリ装置が第１の動作を実行している間に、第２の命令に応答して第２のフラッシュメモリ装置において第２の動作を開始する、
方法。
【請求項２】
第１のフラッシュメモリ装置および第２のフラッシュメモリ装置は、互いに直列に接続され、第２の命令は、前記開始するステップの前に第１のフラッシュメモリ装置を介して第２のフラッシュメモリ装置に渡される、請求項１に記載の方法。
【請求項３】
前記第１の動作の実行は、第１のフラッシュメモリ装置にデータファイルの少なくとも１ページをプログラムすることを含む、請求項１に記載の方法。
【請求項４】
前記第２の動作の開始は、第２のフラッシュメモリ装置にデータファイルの少なくとも１つの他のページのプログラムの開始を含む、請求項３に記載の方法。
【請求項５】
方法はさらに、第３の命令に応答して第１のフラッシュメモリ装置において第３の動作を開始することを含む、請求項４に記載の方法。
【請求項６】
前記第２の動作の開始は、第２のフラッシュメモリ装置のデータの読出し動作の開始を含む、請求項３に記載の方法。
【請求項７】
前記第２の動作の開始は、第２のフラッシュメモリ装置の消去動作の開始を含む、請求項３に記載の方法。
【請求項８】
前記第１の動作の実行は、第１のフラッシュメモリ装置の読出し動作および消去動作の１つを含む、請求項１に記載の方法。
【請求項９】
複数のフラッシュメモリ装置を有するフラッシュメモリシステムを高速損耗レベルプログラムする方法であって、
ｉ  ｋページを有するデータファイルを受け取り、ｋページは０よりも大きい整数であり、
ｉｉ  フラッシュメモリシステムの構成パラメータとｋサイズに対応するプログラムプロファイルを選択し、
ｉｉｉ  選択されたプログラムプロファイルに従い、データファイルのｋページの少なくとも１つを複数のフラッシュメモリ装置の少なくとも２つの各々にプログラムする、
方法
【請求項１０】
前記構成パラメータは、ｊフラッシュメモリ装置を含み、ｊフラッシュメモリ装置の各々はブロックにつきｉページを有し、ｊとｉは０よりも大きい整数である、請求項９に記載の方法。
【請求項１１】
前記選択するステップは、ｚの天井関数の計算を含み、ｚ＝ｋ／ｊである、請求項１０に記載の方法。
【請求項１２】
前記プロファイルのプログラムは、ｚがｊ以下であるとき、ｊフラッシュメモリ装置のｚのデータファイルのｋページを格納するため単一のファイル構造を含む、請求項１１に記載の方法。
【請求項１３】
プログラムするステップは、ｋページをプログラムするためｚフラッシュメモリ装置の各々にプログラム命令を連続的に提供し、各プログラム命令は、ｋページの少なくとも１つをプログラムする、請求項１２に記載の方法。
【請求項１４】
プログラムプロファイルは、ｚがｊより大きいとき、多重ファイル構造を含む、請求項１１に記載の方法。
【請求項１５】
多重ファイル構造は、ｊフラッシュメモリ装置のデータファイルのｊ＊ｉページのｍユニットを格納すること、ｚがｊ以下のときｊフラッシュメモリ装置のｚのデータファイルのｋ−（ｍ＊（ｊ＊ｉ））ページを格納することを含み、ｍは０より大きい整数である、請求項１４に記載の方法。
【請求項１６】
プログラムするステップは、データファイルのｊ＊ｉページをプログラムするためｊフラッシュメモリ装置の各々にプログラム命令を連続的に提供し、各プログラム命令がｋページの少なくとも１つをプログラムする、請求項１５に記載の方法。
【請求項１７】
プログラムするステップは、ｋ−（ｍ＊（ｊ＊ｉ））ページをプログラムするためｚフラッシュメモリ装置の各々に連続的にプログラム命令を提供し、各プログラム命令は、ｋページの少なくとも１つをプログラムする、請求項１６に記載の方法。
【請求項１８】
同じチャンネルに接続された少なくとも２つのメモリ装置を有するメモリシステムのデータファイル構造であって、
少なくとも２つのメモリ装置の２つに格納されるデータファイルの部分を有する、データファイル構造。
【請求項１９】
前記部分は、実質的に互いにサイズが等しい、請求項１８に記載のデータファイル構造。
【請求項２０】
前記部分は、メモリシステムの少なくとも２つのメモリ装置の各々に格納される、請求項１８に記載のデータファイル構造。
【請求項２１】
ｊフラッシュメモリ装置を有するフラッシュメモリシステムの高速損耗レベルプログラム方法であって、ｊフラッシュメモリ装置の各々はブロックにつきｉページを有し、ｊとｉは０より大きい整数である、前記方法は、
ａ）ｋページを有するデータファイルを受け取り、ｋは、０よりも大きい整数であり、
ｂ）ｚ＝ｋ／ｉの天井関数がｊ以下であるならば、ｊメモリ装置のｚ以内のｋページをプログラムする命令を提供し、
ｃ）ｚ＝ｋ／ｉの天井関数がｊよりも大きいならば、ｊメモリ装置内のｊ＊ｉページをプログラムする命令を提供し、
ｄ）ｋ＝ｋ−（ｊ＊ｉ）によってｋを更新し、
ｅ）ステップｂを繰り返す、
方法。
【請求項２２】
フラッシュメモリシステムであって、
第１の命令および第２の命令を提供するチャンネルを有するコントローラと、
チャンネルに結合され、第１の命令に応答して第１の動作を実行する第１のフラッシュメモリ装置と、
チャンネルに結合され、第１のフラッシュメモリ装置が第１の動作を実行している間に、第２の命令に応答して第２の動作を開始する第２のフラッシュメモリ装置と、
を有するフラッシュメモリシステム。
【請求項２３】
第１のフラッシュメモリ装置および第２のフラッシュメモリ装置は互いに直列に接続され、第２の命令は、第１のフラッシュメモリ装置を介して第２のフラッシュメモリ装置へ渡される、請求項２２に記載の方法。
【請求項２４】
第１の動作は、プログラム動作を含み、第１のフラッシュメモリ装置はデータファイルの少なくとも１ページをプログラムする、請求項２２に記載の方法。
【請求項２５】
第２の動作は、別のプログラム動作を含み、第２のフラッシュメモリ装置は、データファイルの少なくとも１つの他のページをプログラムする、請求項２４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２００６年３月３１日に提出された仮特許出願番号６０／７８８０８３号の優先権の利益を主張し、この出願は、引用することによってその全体がここに包含される。
【０００２】
本発明は、概してフラッシュメモリに関する。特に、本発明は、大容量記憶向けのマルチデバイスフラッシュメモリシステムに関する。
【背景技術】
【０００３】
フラッシュメモリは、ディジタルカメラやポータブルディジタル音楽プレイヤなどの民生電子装置の大容量記憶としての広汎の不揮発性メモリタイプに広く使用されている。現在利用可能なフラッシュメモリチップの集積度は、３２Ｇビット（４Ｇバイト）まで可能であるが、これは、フラッシュチップのサイズが小さいので、流行しているＵＳＢフラッシュ装置の使用に適している。
【０００４】
８メガ（８００万）画素のディジタルカメラや音楽やビデオ機能があるポータブルディジタルエンターテイメント装置の出現は、大容量データを蓄積するための超高容量の要求を促しているが、これは、単一のフラッシュメモリ装置によって応じることができない。それ故、多数のフラッシュメモリ装置が共にメモリシステムに組み込まれ、利用可能な蓄積容量を効果的に増加させる。例えば、２０ＧＢのフラッシュメモリの蓄積密度がこのようなアプリケーションに要求される。
【０００５】
図１は、ホストシステム１２に結合される従来のフラッシュメモリシステム１０のブロック図である。フラッシュメモリシステム１０は、ホストシステム１２と通信するフラッシュメモリコントローラ１４と、多数の不揮発性メモリ装置１６とを含む。ホストシステムは、マイクロコントローラ、マイクロプロセッサ、またはコンピュータシステムのような処理装置を含む。図１のフラッシュメモリシステム１０は、１つのチャンネル２０を含むように構成され、メモリ装置１６は、チャンネル２０に並列に接続される。当業者であれば、メモリシステム１０がチャンネルに接続された多数のメモリ装置を有することを理解するであろう。
【０００６】
チャンネル２０は、１組の共通のバスを含み、バスは、全ての対応するメモリ装置に接続されるデータとコントロールのラインを含む。ここには図示しないが、各メモリ装置は、フラッシュメモリコントローラ１４によって提供される各チップ選択信号でイネーブル／ディスエーブルされる。フラッシュメモリコントローラ１４は、ホストシステム１２の動作に基づき、チャンネルを介して命令とデータを、選択されたメモリ装置へ発する責任を有する。メモリ装置から読み出されたデータは、チャンネルを介してフラッシュメモリコントローラ１４およびホストシステム１２へ転送される。フラッシュメモリシステム１０は、概してマルチ−ドロップ(multi-drop)構成として参照され、そのメモリ装置１６は、チャンネル２０に対して並列に接続される。
【０００７】
フラッシュメモリシステム１０において、不揮発性メモリ装置１６は、互いに同一であり、かつ典型的にＮＡＮＤフラッシュメモリ装置として実行される。当業者であれば、フラッシュメモリが複数のバンクに構成され、各バンクが、ブロック消去を容易にするために複数のブロックに構成されることを理解するであろう。大部分の商業的に入手可能なＮＡＮＤフラッシュメモリ装置は、２つのバンクメモリを持つように構成される。フラッシュメモリシステム１０の動作の説明の前に、単一のＮＡＮＤフラッシュメモリ装置のコアの概要を説明する。
【０００８】
図２は、公知のＮＡＮＤフラッシュメモリの１つのバンクの一般的なブロック図である。バンク３０は、ｋ＋１のブロックに構成される。各ブロックは、互いに直列に接続されたｉ＋１までのフラッシュメモリセルを有するＮＡＮＤメモリセルストリングから構成される。従って、ワードラインＷＬ０からＷＬｉがメモリセルストリングの各フラッシュメモリセルのゲートに接続される。信号ＳＳＬ（ストリング選択ライン）に接続されたストリング選択装置は、メモリセルストリングをビットラインに選択的に接続し、他方、信号ＧＳＬ（グランド選択ライン）に接続されたグランド選択装置は、メモリセルストリングをソースライン、例えばＶＳＳに選択的に接続する。ストリング選択装置とグランド選択装置はｎチャンネルトランジスタである。バンク３０の全てのブロックに共通のｊ＋１のビットラインがあり、各ビットラインは、ブロック［０］から［ｋ］の各々の１つのＮＡＮＤメモリセルストリングに接続される。それぞれのワードライン（ＷＬ０からＷＬｉ）、ＳＳＬ、およびＧＳＬは、ブロックの各ＮＡＮＤメモリセルストリングの同一の対応するトランジスタに接続される。当業者であれば、１つのワードラインに沿うフラッシュメモリセルに蓄積されたデータは、ページデータとして言及されることを知っているであろう。
【０００９】
バンク３０の外側で各ビットラインに接続されているのは、フラッシュメモリセルの１ページにプログラムされるべき１ページの書込みデータを蓄積するデータレジスタ３２である。データレジスタ３２はまた、フラッシュメモリセルの１ページから読み出されたデータを感知するセンス回路を含む。プログラムの動作中、データレジスタは、選択されたワードラインに接続されたフラッシュメモリセルにデータが正しくプログラムされたことを保証するためにプログラムベリファイ動作を実行する。ブロックへのプログラムは、典型的に、ＷＬ０に対応するページで始まり、現在のブロックを満たすようにＷＬｉまで連続的に進む。それから、新しいブロックのワードラインＷＬ０で継続する。装置内で、ブロックは順番にプログラムされる。
【００１０】
図１のフラッシュメモリシステムに戻ると、システムの性能に悪い影響を与える特有の問題がある。あるものは物理的な問題であり、他のものはアーキテクチャ状の問題である。
【００１１】
フラッシュメモリシステム１０の構成は、物理的な性能の限界を強いている。システム間を走る多数の並列信号で、信号が搬送する信号のインテグリティ（完全さ）は、クロストーク、信号スキュー、および同時スイッチングノイズ（ＳＳＮ）により悪化される。このような構成における電力消費は、フラッシュコントローラとフラッシュメモリ装置間の各信号トラックが頻繁に変化しかつ信号送信（signaling）のため放電されるので、問題となる。システムクロック周波数の増加で、電力消費も同様に増加する。
【００１２】
アーキテクチャル状の観点から、プログラム動作は、時間がかかりすぎる。フラッシュコントローラ１４の本来の機能は、システムにおけるメモリ装置へのデータの書込みを管理することである。フラッシュメモリでは、データの書込みは、データをプログラムすることとしてより広く言及されている。フラッシュのプログラムに関する２つの重要な問題がある。第１に、フラッシュのプログラムは、ＤＲＡＭやＳＲＡＮのような揮発性メモリや、ハードディスクドライブのような他の不揮発性メモリに対して遅い。フラッシュメモリセルにプログラムするデータは、高い電圧を必要とし、かつプログラムされる厳しいしきい値電圧の分配を得るための段階的なプログラムシーケンスとを必要とする。２つのバンクメモリを有するＮＡＮＤフラッシュメモリ装置では、２ページのデータは同時にプログラムされ、各バンクにつき１ページである。バンクにつき１つのデータレジスタしかないので、さらなるプログラム動作は、現在のページが首尾よくプログラムされるまで待たなければならない。それ故、フラッシュメモリ装置１６に多くの量のデータをプログラムすることは、多くの時間を必要と得る。
【００１３】
従来のフラッシュメモリシステム１０の第２の問題は、プログラムデータの線形ファイル構造である。図３は、４つのメモリ装置を有するフラッシュメモリシステム５０の従来のファイル構造の例示である。図３において、各メモリ装置５２、５４、５６および５８は、多数のブロックに分割される、全体でｎの物理的なページの蓄積空間を有している。ここに示された例では、ｎページが２つのバンク間で等しく分割されていると仮定する。大部分のフラッシュメモリシステムは、１つのメモリ装置内に線形に、多数のデータページからなるデータファイルを蓄積する。例えば、データファイルの最初のページは、装置５２のページ０に蓄積され、連続するデータページは、次のページに漸次蓄積される。装置５２が一杯になると、さらなるデータファイルは、装置５４のページ０で始まるシステム５０内に蓄積され、先に進む。矢印６０は、フラッシュメモリシステム５０にデータが書き込まれる蓄積パターンを示している。
【００１４】
メモリ装置毎のデータファイルのページにつき比較的長いプログラム時間に結合された線形のフィル構造は、データを記憶するためにかなりの時間を要するフラッシュメモリシステムとなる。線形ファイル構造に関連する別の問題は、装置の信頼性であり、より具体的には、システム内の他のメモリ装置に対する１のメモリ装置のプログラム／消去の消耗または損耗(wearing)である。プログラム／消去の消耗は、蓄積したプログラムと消去動作によるフラッシュメモリセルの進行する劣化に言及される。このような蓄積したプログラムおよび消去の動作の影響は、最適なパラメータを超えたメモリセルのプログラムおよび消去の特性の変更である。メモリセルが劣化されると、メモリセルをプログラムまたは消去するために、望まれるしきい値電圧に対してより高いプログラムおよび消去の電圧が必要とされる。最終的に、メモリセルは、適切に機能することができなくなる。フラッシュメモリが消去−プログラムサイクルに限られた数、例えば１０，０００と１００，０００間の数にランク付けされているのは、これが理由である。
【００１５】
例えば、もし、図３の第１のメモリ装置５２が他のメモリ装置よりも、多くのプログラムおよび消去サイクルに耐えるならば、メモリ装置５２は、他のものよりも前に故障が生じ得る。メモリ装置５２が故障したとき、メモリ装置が一緒にパッケージ化されているので、全体のシステム５０はもはや使用することができないし、１つのメモリ装置の取り替えは非現実的である。システムに残っているメモリ装置が未だ使用でき、多くの寿命が残されている場合には、これはメモリ装置の不運な無駄である。
【００１６】
大部分のフラッシュメモリの固有の技術的なアーキテクチャは、消去することができるメモリの一番小さな単位がメモリブロックである、ということである。これは、もし、ブロック内の１ページが変更される場合であっても、全体のブロックが新しいページで再度プログラムされなければならないことを意味する。これは、かなりのプログラム時間を必要とするブロック再プログラムとして言及され、それ故、システムの性能に否定的な影響を与える。
【００１７】
それ故、現在知られているフラッシュメモリシステムは、プログラムするデータについて遅い処理能力をゆうしており、かつ、装置間の均一でないプログラムおよび消去の損耗により、全体のシステムは、故障する最初の装置に制限された寿命をもつ。
【００１８】
それ故、システムの寿命を最大にするスキームをもつ高速のフラッシュメモリシステムアーキテクチャを提供することが望まれる。
【発明の概要】
【００１９】
本発明の目的は、フラッシュメモリシステムについて従前のコントロールスキームの少なくとも１つの短所を未然に防止しあるいは緩和することである。特に、本発明の目的は、システムのフラッシュメモリ装置のプログラム動作をインターリーブすることによりフラッシュメモリシステムのプログラム処理能力を改善することである。
【００２０】
第１の態様において、本発明は、チャンネルに接続された第１および第２のフラッシュメモリ装置を制御する方法を提供する。
【００２１】
第１の態様では、本発明は、チャンネルに接続された第１および第２のフラッシュメモリ装置を制御する方法を提供する。この方法は、第１の命令に応答して第１のフラッシュメモリ装置の第１の動作を実行すること、および第１のフラッシュメモリ装置が第１の動作を実行している間に、第２の命令に応答して第２のフラッシュメモリ装置の第２の動作を開始することを含む。
【００２２】
本態様の実施例では、第１のフラッシュメモリ装置および第２のフラッシュメモリ装置は互いに直列に接続され、第２の命令は、開始するステップの前に第１のフラッシュメモリ装置を介して第２のフラッシュメモリ装置に渡される。更なる実施例では、第１の動作を実行するステップは、第１のフラッシュメモリ装置のデータファイルの少なくとも１つのページをプログラムすることを含む。第２の動作は、第２のフラッシュメモリ装置のデータファイルの少なくとも１つの他のページのプログラムの開始を含み、他方、方法はさらに第３の命令に応答して第１のフラッシュメモリ装置の第３の動作を開始することを含む。第２の動作は、第２のメモリ装置のデータの読み出し動作を開始すること、または第２のメモリ装置の消去動作の開始することを含む。更なる他の実施例では、第１の動作を実行することは、第１のメモリ装置の読み出し動作と消去動作の１つを含む。
【００２３】
第２の態様では、本発明は、複数のフラッシュメモリ装置を有するフラッシュメモリシステムの高速損耗レベルプログラムの方法を提供する。この方法は、ｋページを有するデータファイルを受け取り、ｋは０より大きい整数であり、；サイズｋとフラッシュメモリシステムの構成パラメータに対応するプログラムプロファイルを選択し；選択されたプログラムプロファイルに従い、データファイルのｋページの少なくとも１つを複数のフラッシュメモリ装置の少なくとも２つの各々にプログラムする。
【００２４】
本態様の実施例によれば、構成（コンフィギュレーション）パラメータは、ｊのフラッシュメモリ装置を含み、ｊのフラッシュメモリ装置の各々は、ブロックにつきｉページを有し、ここで、ｊとｉは０よりも大きい整数の値である。選択するステップは、ｚの天井関数を計算し、ここで、ｚ＝ｋ／ｉであり、そして、ｚがｊ以下のとき、プログラムプロファイルは、ｊフラッシュメモリ装置のｚのデータファイルのｋページを格納する単一のファイル構造を含む。プログラムするステップは、ｋページをプログラムするためｚフラッシュメモリ装置の各々にプログラム命令を連続的に提供することを含み、各プログラム命令は、ｋページの少なくとも１つをプログラムする(書き込む)。
【００２５】
本態様の他の実施例では、プログラムプロファイルは、ｚがｊよりも大きいとき、多重のファイル構造を含む。多重のファイル構造は、ｊフラッシュメモリ装置のデータファイルのｊ＊ｉページのユニットを格納することを含み、さらに、ｚがｊ以下であるとき、ｊフラッシュメモリ装置のｚのデータファイルのｋ−（ｍ＊（ｊ＊ｉ））を格納することを含み、ここで、ｍは０よりも大きい整数の値である。プログラムするステップは、データファイルのｊ＊ｉページをプログラムするためｊフラッシュメモリ装置の各々にプログラム命令を連続的に提供することを含み、ここで、各プログラム命令は、ｋページの少なくとも１つをプログラムする。プログラムするステップはさらに、ｋ−（ｍ＊（ｊ＊ｉ））ページをプログラムするためｚフラッシュメモリ装置の各々にプログラム命令を連続的に提供することを含み、各プログラム命令は、ｋページの少なくとも１つをプログラムする。
【００２６】
第３の態様では、本発明は、同じチャンネルに接続された少なくとも２つのメモリ装置を有するメモリシステムのデータファイル格納アーキテクチャを提供する。データファイル格納アーキテクチャは、少なくとも２つのメモリ装置に格納されるデータファイルの部分を含む。本態様の実施例によれば、この部分は、互いに実質的に等しいサイズであり、この部分は、メモリシステムの少なくとも２つのメモリ装置の各々に格納される。
【００２７】
第４の態様では、本発明は、ｊフラッシュメモリ装置を有するフラッシュメモリシステムの高速損耗（wear）レベルプログラム方法を提供し、ここで、ｊフラッシュメモリ装置の各々は、ブロックにつきｉページを有し、ｊとｉは０よりも大きい整数の値である。この方法は、ｋページを有するデータファイルを受け取り、ｋは０よりも大きな整数であり；もし、ｚ＝ｋ／ｉの天井関数がｊ以下ならば、ｊメモリ装置のｚ以内のｋページをプログラムする命令を提供し、；もし、ｚ＝ｋ／ｉの天井関数がｊよりも大きいならば、ｊメモリ装置内のｊ＊ｉページをプログラムする命令を提供し、ｋ＝ｋ−（ｊ＊ｉ）をセットすることによりｋを更新し、；更新されたｋページをプログラムするステップを繰返す。
【００２８】
第５の態様では、本発明は、フラッシュメモリシステムを提供する。フラッシュメモリシステムは、コントローラ、第１のフラッシュメモリ装置、および第２のフラッシュメモリ装置を含む。コントローラは、第１の命令と第２の命令を提供するチャンネルを有する。第１のフラッシュメモリ装置は、第１の命令に応答して第１の動作を実行するためチャンネルに結合される。第２のフラッシュメモリ装置は、第１のフラッシュメモリ装置が第１の動作を実行している間に、第２の命令に応答して第２の動作を開始するためにチャンネルに結合される。
【００２９】
本態様の実施例によれば、第１のフラッシュメモリ装置および第２のフラッシュメモリ装置は、互いに直列に接続され、第２の命令は、第１のフラッシュメモリ装置を介して第２のフラッシュメモリ装置へ渡される。第１の動作は、プログラム動作を含み、第１のフラッシュメモリ装置は、データファイルの少なくとも１ページをプログラムする。第２の動作は、他のプログラム動作を含み、第２のフラッシュメモリ装置は、データファイルの少なくとも１つの他のページをプログラムする。
【００３０】
本発明の他の態様および特徴は、図面を伴う本発明の具体的な実施例の以下の説明の検討後に当業者に明らかになるであろう。
【発明を実施するための最良の形態】
【００３１】
本発明の実施例は、添付する図面を参照し例示することで説明される。フラッシュメモリシステムのアーキテクチャは、直列に接続されたフラッシュメモリ装置を有し、データの高速プログラムを実現する。データの高速プログラムは、データの種々のページが種々のメモリ装置に格納されるように、システム内のメモリ装置のデータのページをインテーリーブすることによって実現される。メモリコントローラは、１つ若しくはそれ以上の信号ラインを有するビットストリームにおいて各メモリ装置に対してプログラム命令を発する。各メモリ装置はプログラム命令を受け取るとき、プログラム動作を開始するか、あるいは当該命令を次のメモリ装置へ渡す。それ故、フラッシュシステムのメモリ装置は、次から次へと連続的にデータのページをプログラムし、これにより、フラッシュメモリシステムにデータページをプログラムする遅延をできるだけ小さくする。メモリコントローラは、損耗レベル(wear level)制御プログラムを実行し、あらゆるデータサイズのプログラム性能と耐久性（endurance）を最適化する。
【００３２】
図４は、本発明の実施例による、損耗レベル制御を有する高速データプログラム動作を実行するメモリ装置に直列に接続されたフラッシュメモリシステムのブロック図である。フラッシュメモリシステム１００は、ホストシステム１０４と通信するフラッシュメモリコントローラ１０２と、４つの直列に接続されたフラッシュメモリ装置１０６、１０８、１１０、１１２とを含む。４つのメモリ装置が本発明の実施例で示されているが、本発明の実施例は、少なくとも２つのメモリ装置を有するメモリシステムに有効である。４つのフラッシュメモリ装置の各々は、メモリ装置間で直列の動作を容易にするため、直列入力／出力インターフェース回路を有する。このようなフラッシュメモリ装置の例は、共有で所有される２００５年１２月３０日に提出された米国特許出願番号第１１／３２４，０２３号、および２００６年７月３１日に提出された米国特許出願番号第１１／３２４，０２３号に説明され、これらの内容は、参照することによってここに包含される。米国特許出願１１／３２４，０１２３のフラッシュメモリ装置は、多重独立シリアルリンク装置（multiple independent serial link device(ＭＩＳＬ)）として参照される。図１に示すメモリシステムのように、ホストシステムは、マイクロコントローラ、マイクロプロセッサ、あるいはコンピュータシステムのような処理装置を含む。
【００３３】
フラッシュメモリ装置１０６は、チェーンの最初の装置であり、読出し（リード）、プログラム、および消去（イレース）のような命令を、フラッシュメモリコントローラ１０２から受け取る。米国特許出願番号第１１／３２４，０２３号のＭＩＳＬフラッシュメモリ装置において、全ての命令、データおよびアドレス情報は、直列のビットストリームとして受け取られる。命令は、データ情報、アドレス情報、および特定の動作を実行するためにメモリ装置によって要求される他の情報を含む。各フラッシュメモリ装置は、貫通（flow-through）論理回路を含むべきであるので、特定の装置のために意図されていない受け取られた命令は、次のフラッシュメモリ装置に渡され、これは、意図されたフラッシュメモリ装置によって動作されるまで進められる。チェーンの最後のフラッシュメモリ装置１１２は、フラッシュメモリコントローラ１０２に接続される出力を有し、読出し命令に応答して読み出されたデータを提供する。図４に示された実施例は、フラッシュメモリ装置のチェーンからデータを受け取りかつデータを送信するための１つのチャンネルを有する。当業者であれば、フラッシュメモリコントローラ１０２は、任意に、フラッシュメモリ装置のチェーンの対応する数に適応する多数のチャンネルを有することを理解するであろう。各フラッシュメモリ装置は、好ましくは他の装置に近接して配置されるため、フラッシュメモリ装置を互いに相互接続する導電ワイヤができるだけ小さくされる。それ故、図１のフラッシュメモリシステム１０のように、バスラインの長さに関連された物理的な性能の限界はない。
【００３４】
上記したように、フラッシュメモリコントローラ１０２は、プログラム命令を各フラッシュメモリ装置に発する責任がある。本発明の実施例によるデータの高速プログラムにとって、データファイルのページは、種々のメモリ装置にプログラムされる。これは、直列に次から次へとプログラム命令を発することによって行われ、高速の連続で各フラッシュメモリ装置においてプログラム動作が開始される。図５および図６は、このような高速プログラムがどのようにして実現されるのかの例を補うものである。
【００３５】
図５は、フラッシュメモリコントローラ１０２によるプログラム命令の発行を例示するタイミング図であり、本発明の実施例によるフラッシュメモリシステム１００の全体のプログラム速度を最大化する。ここに示された例では、１つのデータファイルをプログラムするために、４つのプログラム命令Data[0]、Data[1]、Data[2]、Data[3]がフラッシュメモリコントローラ１０２によって各時間期間ｔ１からｔ４に直列に発せられる。各プログラム命令の四角い区分内の識別番号は、プログラム命令がフラッシュメモリコントローラ１０２から発生された連続的な順序を示す。各プログラム命令は、限定されるものではないが、特定のメモリ装置の命令２００と少なくとも１つのデータページ２０２を含む。命令２００は、データページがプログラムされるべきアドレスと、プログラム命令を特定のメモリ装置にマッチングするための装置識別子とを含む。
フラッシュメモリ装置１０６、１０８、１１０、１１２は、それぞれプログラム命令Data[0]、Data[1]、Data[2]、Data[3]に応答する。フラッシュメモリ装置は、直列に接続され、プログラム命令が直列に発せされるので、各フラッシュメモリ装置のコアのプログラム動作は、次のフラッシュメモリ装置の動作と重複するが、プログラム命令を受け取る最後のフラッシュメモリ装置は除かれる。
【００３６】
各プログラム命令が、メモリ装置へ転送するために約８５マイクロ秒（時間ｔ１）を必要とするならば、４つのプログラム命令の転送のための全体のシーケンスは、４×８５マイクロ秒＝３４０マイクロ秒を必要とする。メモリ装置につきデータの少なくとも１ページをプログラムするのに要求される時間は一定であり、約２００マイクロ秒であると想定される。それ故、フラッシュメモリシステム１００にデータのすべてをプログラムするための全体の経過時間は、約３４０マイクロ秒＋２００マイクロ秒＝５４０マイクロ秒である。２００マイクロ秒のプログラム時間は、プログラム命令を受け取る最後のメモリ装置によって寄与される。対照的に、同一のメモリ装置に４ページをプログラムするには、１１４０マイクロ秒かかる。フラッシュメモリ装置の重複するプログラム動作は、図６の拡張されたタイミング図により明らかに示される。
【００３７】
図６は、各プログラム命令Data[0]、Data[1]、Data[2]、Data[3]に応答したフラッシュメモリ装置１０６、１０８、１１０、１１２の動作を示す拡大されたタイミングである。時間期間ｔ１ないしｔ４は、図５に示された同じ時間期間に対応する。図６のプログラムシーケンスを図７のフローチャートを参照して説明する。図７に記載されたフラッシュシステムのプログラム制御の実施例は、高速インターリーブプログラム方法として参照され、それによって、プログラム動作は、種々のメモリ装置間でインターリーブされる。方法は、ステップ３００で始まり、少なくとも２つのプログラム命令がシステムの第１のメモリ装置１０６に直列に提供される。第１のプログラム命令は、プログラム命令Data[0]に対応し、２番目のプログラム命令はプログラム命令Data[1]に対応する。ステップ３０２で、メモリ装置１０６は、第１の時間期間ｔ１中にプログラム命令Data[0]を受け取り、これは、ステップ３０４でプログラム動作に引き継がれる。時間期間ｔ１において、プログラム命令Data[0]は、メモリ装置１０６に転送され、他方、メモリ装置１０８、１１０、１１２は、動作をしない状態（ＮＯＰ）にとどまる。
【００３８】
プログラム命令Data[0]がメモリ装置１０６に転送されるやいなや、第２のプログラム命令Data[1]がステップ３０６で第２の時間期間ｔ２中にメモリ装置１０８によって受け取られる。プログラム動作は、ステップ３０８に続き、メモリ装置１０６についてのプログラム動作が時間期間ｔ１の終わりで既に開始されるため、双方のメモリ装置１０６と１０８が同じ時間でプログラム動作を実行する時間期間が存在する。この処理は、次のプログラム命令およびメモリ装置について同じ方法で繰り返される。この例では、メモリ装置１０６と１０８におけるプログラム動作は、時間期間ｔ４の終わりまでに完了されるであろう。メモリ装置１１０のプログラム動作は、メモリ装置１１２のプログラム動作が継続するときに完了される。
【００３９】
上記の例は、命令を受け取る最初のメモリ装置は１０６であるシナリオを提示している。代わりに、システム内のいずれか１つのメモリ装置が、最初のプログラム命令を受け取る最初のメモリ装置になり得る。５番目のプログラム命令は、時間期間ｔ４の後にメモリ装置１０６に発せられ、装置１０６はプログラム動作を完了している。当業者は、種々のフラッシュメモリ装置が異なるプログラム時間を有することを理解するであろう。図６に示された例では、メモリ装置１０６は、時間期間ｔ４の開始時にデータのプログラムを終了し、それ故、メモリ装置１１２がプログラム命令Data[3]の受取を終了するやいなや、次のプログラム命令Data[4]を受け取る状態にある。もし、フラッシュメモリ装置が非常に長いコアプログラム時間を有するならば、フラッシュメモリコントローラは、Data[4]のプログラム命令を発する前にメモリ装置１０６がプログラム動作を完了するまで待つ必要がある。フラッシュメモリ装置は、典型的に、フラッシュメモリコントローラにレディ状態の信号を提供し、プログラム動作がいつ完了したかを示す。
【００４０】
図８は、図６および図７に記載された高速プログラムシーケンスがプログラム命令Data[0]、Data[1]、Data[2]、Data[3],Data[4]を実行した後のフラッシュメモリ装置１０６、１０８、１１０および１１２のグラフィカルなファイル構造の例示である。図８に示すファイル構造は、装置１０６、１０８、１１２のメモリブロックがプログラム前に空であることを前提としている。これは、これらの装置の物理ページ０にページがプログラムされるためである。他方、メモリ装置１１０では、メモリブロックは、物理ページ０と１の中に他のデータを有することができる。それ故、Data[2]は、ブロックの次の利用可能なページにプログラムされ、これは物理ページ２である。図８に示すように、メモリ装置１０６の物理ページ１は、ここに示された高速プログラムシーケンスでプログラムされるべき最後のページである。次のプログラムシーケンスは、メモリ装置１０８の物理ページ１でデータのプログラムを開始し、図６に示したプログラムシーケンスで説明したときと同様の方法で続行される。それ故、フラッシュメモリシステム１００の最大のプログラム速度は、連続的な直列に接続されたメモリ装置にプログラム命令が直列に発せられたときに得られる。言い換えれば、直列に相互接続されたフラッシュメモリシステムの最大の数のメモリ装置にデータが分配されるファイル構造は、最も高速なデータファイルのプログラムとなる。データは、必ずしも全てのメモリ装置において同じ物理ページ番号にプログラムされる必要はないことに留意すべきである。
【００４１】
高速プログラムは、フラッシュメモリシステム１００を用いたシステムにとって利点であるが、あるシステムは、フラッシュメモリ装置１００の最大の耐久性を必要とするかもしれない。図８に示すファイル構造は、主にフラッシュメモリ装置のブロック消去のアーキテクチャにより、全てのメモリ装置のプログラム／消去の耐久(wear)を最大にするものでない。例えば、もし、２０ページのデータファイルが各メモリ装置の１つのブロックにインターリーブされてプログラムされるならば、すべての４つのメモリ装置は、データファイルを更新する前にブロック消去を実行する必要がある。対照的に、もし、すべての２０ページが１つのメモリ装置の１つのブロックに蓄積されるならば、、そのブロックが消去される必要があるだけである。
【００４２】
それ故、本発明の他の実施例によれば、上記した高速プログラム制御方法は、プログラム／消去の損耗をできるだけ小さくするように適応され、あるいはプログラム性能およびプログラム／消去の損耗を最適化するように適応される。より具体的には、図４のフラッシュコントローラ１１２は、所定の基準に基づきプログラム性能とプログラム／消去の損耗を最適化するプログラム制御アルゴリズムを実行する。この所定の基準は、プログラムされるべきデータの特性やフラッシュメモリシステムのメモリ装置の特性を含む。データ特性は、プログラムされるべきデータのページ数を含み、メモリ装置の特性は、１つのブロックについてのページ数を含む。
【００４３】
図９は、高速および損耗レベル制御を有するフラッシュメモリシステムの多重フラッシュメモリ装置をプログラムする例を示すフローチャートである。このプログラム制御の実施例は、高速損耗レベルプログラム方法として参照される。損耗レベルは、フラッシュメモリシステムの寿命を延長するためのスキームを参照する。ここに記載した実施例は、種々のプログラムプロファイルを用いることにより、プログラムされるべきあらゆるデータファイルの性能と損耗レベルを最適化する。プログラムプロファイルは、概して特定のファイル格納構造を有するデータファイルのページを格納するためのプログラムシーケンスに対応する。最終的に、プログラムプロファイルは、フラッシュメモリシステムのフラッシュメモリ装置間にデータファイルのページを分配する。ここに開示した方法は、直列に接続されたメモリ装置のシステム内の、図４のフラッシュメモリコントローラ１０２のようなメモリコントローラによって実行可能である。
【００４４】
高速損耗レベルプログラム方法は、ステップ４００で開始し、ここで、変数ｉは、フラッシュメモリシステムの各メモリ装置のブロック当たりのページ数にセットされ、変数ｊは、フラッシュメモリシステムのメモリ装置の数にセットされる。フラッシュメモリシステムのすべてのメモリ装置は、互いに同一であり、同じブロックサイズをもつと仮定する。この情報は、メモリコントローラにプログラムされる。ステップ４０２で、ページｋの数からなるデータファイルがプログラムのためにメモリコントローラによって受け取られる。ステップ４０４へ続き、ｋがｉより小さいかあるいは等しいかいなか（ｋがｉ以下か否か）を決定するために計算が成される。もし、ｋがｉより小さいか等しいならば、データファイルは、メモリ装置の格納空間の１つのブロックより小さいかそれに等しいことを意味し、それから、ステップ４０６で１つのメモリ装置の１つのブロックにデータファイルの全てのｋページがプログラムされる。これは、単一のファイル構造を有するプログラムプロファイルの例である。メモリコントローラは、１つもしくはそれ以上の選択パラメータに従いデータファイルがプログラムされる特定のメモリ装置を選択する。例えば、１つの選択パラメータは、残存するプログラム／消去サイクルの最高の数を有するメモリ装置であり、他の選択パラメータは、プログラムされるべき最後のメモリ装置を含む。
【００４５】
他方、もし、ｋがｉよりも大きいならば、データファイルは、メモリ装置の格納空間の１つのブロックよりも大きなページを含むことを意味し、次に、方法はステップ４０８へ進む。ステップ４０８で、ｋ／ｉがｊより小さいかまたはこれに等しいか否か（ｋ／ｉがｊ以下か否か）を決定するために計算が成される。ｋ／ｉの計算は、整数のみを算出することに留意すべきである。本方法は、ｋデータを格納するために必要な最小のブロック数を決定し、整数と小数部を有する非整数の結果（すなわち、実数）は、整数より１つ大きなブロックが必要であることを示している。これは、公知の数学的な関数、例えば天井関数(ceiling function)によって成される。当業者は、天井関数が実数より小さくない一番小さい整数を戻すことを理解するであろう。他方、ｋ／ｉからの直接的な整数の結果は、さらなる数学的な処理を必要としない。この観点から、ｋ／ｉの結果への参照は、天井関数が適用されたものと仮定する。
【００４６】
もし、ｋ／ｉの整数値が、ｊ、フラッシュメモリシステムのメモリ装置の数よりも小さいならば、ステップ４１０において、データファイルのｋページは、ｋ／ｉメモリ装置間でインターリーブプログラムされる。これは、単一のファイル構造を有するプログラムプロファイルの別の例である。インターリーブプログラムは、図７の方法で前に記載したように進められる。現実的な例では、もし、ｉ＝３２、ｊ＝４およびｋ＝６１ならば、ｋ／ｉ＝１．９０である。ｋ／ｉは実数なので、１．９０に適合された天井関数は、整数２を生じる。それ故、ステップ４１０において、すべてのｋ＝６１ページが２つのメモリ装置間でインターリーブプログラムされる。メモリコントローラは、フラッシュメモリシステムの中からいずれか２つのメモリ装置を選択し、それらは直接的に共に接続されているか、あるいは間接的に共に接続されている。２つの間接的に接続されたメモリ装置は、それらの装置間に接続された少なくとも１つのインターリーブするメモリ装置を有することができる。データファイルは２つのメモリ装置内にプログラムされるため、ページの約半分が１つのメモリ装置にプログラムされ、残りが他のメモリ装置に格納される。
【００４７】
もし、ｋ／ｉが少なくともｊであるシステム内のメモリ装置の数ならば、異なる最適化プログラムシーケンスが、データファイルの異なるサイズのグループをプログラムするために用いられる。具体的には、非常に大きなデータファイルは、より小さなデータファイルの多数のユニットとして取り扱われ、これらが上記したプログラムシーケンスのいずれか１つによりプログラムされる。ステップ４１２へ続き、各メモリ装置の１つのブロック内の全てのページ位置は、ステップ４１０のインターリーブされるプログラムシーケンスにより、データファイルのｋページのｊ＊ｉページでプログラムされる。ステップ４１４に続き、ｋページの数がそれをｋ−（ｊ＊ｉ）に等しくセットすることにより更新される。それ故、プログラムされるべき残りのページ数が計算される。本方法は、ステップ４０４に戻り、更新された値ｋに基づき、決定ツリー処理およびプログラムシーケンスを繰り返す。概略すれば、本方法は、ｊ＊ｉページの各ユニットについて同じファイル構造を用いるデータファイルのｊ＊ｉページの多重ユニットを反復してプログラムし、そして、異なるファイル構造を用いる残りのｋ−（ｊ＊ｉ）ページをプログラムする。それ故、本方法は、データファイルについて多重ファイル構造からなるプログラムプロファイルを有する。
【００４８】
実用的な例は、この実施例を例示して用いられる。もし、ｉ＝３２、ｊ＝４、ｋ＝１９２ならば、最初の１２８ページがステップ４１２に述べたようにすべてのメモリ装置間にプログラムされる。ステップ４１４で、ｋが１９２−（１２８）＝６４に更新される。それから、残りの６４ページは、ステップ４１０に述べたように、２つのメモリ装置間にプログラムされる。上記したように、いずれか２つのメモリ装置が残りの６４ページをプログラムするために選択される。ここに説明された実施例は、プログラムすることがｋの再計算によって引き継がれる方法を例示するが、全体のシーケンスは、プログラム動作が上記計算を用いることにより開始する前に、前もってフラッシュコントローラにより決定することができる。プログラムされるべきデータファイルの最初のページがｊ＊ｉページと仮定されるが、プログラムされるべき最初のページは、代わりにｋ−（ｊ＊ｉ）ページであることができ、これは、ｊ＊ｉページの多重のユニットによって引き継がれる。
【００４９】
ここに説明された高速損耗レベルプログラム方法は、図４に示された実施例のような、単一のチャンネルを有するフラッシュメモリシステムについて説明した。前に説明した本発明の実施例は、２つ若しくはそれ以上のチャンネルを有するフラッシュメモリシステムにおいて実行される。このような代わりの実施例において、少なくとも２つのデータファイルが同時にプログラムされ、第１のデータファイルが一方のチャンネル、第２のデータファイルが他方のチャンネルを介してである。
【００５０】
さらに、本実施例は、単一のメモリバンクを有するメモリ装置での動作で説明をしてきが、勿論、２つ若しくはそれ以上のメモリバンクを有するメモリ装置を使用することができる。２つのメモリバンクでは、データの２ページを格納するための２つの利用可能なページバッファがある。多重バンクの装置構成において、幾つかのプログラムオプションが利用可能で有る。第１のオプションでは、１つのメモリ装置にプログラムされるべきデータのすべてのページは、メモリ装置の１つのバンク内の１つのブロックにプログラムされる。動作は、たった１つのメモリバンクを有するメモリ装置に類似している。２つ目のオプションでは、データファイルの２ページが１つのメモリ装置に同時にロードされ、すなわち、単一のプログラム命令である。これは、各メモリ装置が２ページを同時にプログラムするので、プログラムの処理能力を効果的に向上させる。第３のオプションでは、プログラム動作は、複数のメモリ装置のバンク間でインターリーブされる。例えば、２つのメモリ装置にプログラムするページは、次のシーケンスで開始する；装置１[バンク１]、装置２［バンク１］、装置１［バンク２］、および装置２［バンク２］。プログラムシーケンスは、２バンクより多いバンクをもつメモリ装置にとっても明らかであろう。
【００５１】
さらに、上記した高速損耗レベルプログラム方法は、直列接続された、あるいはディジーチェーンのメモリ装置を有するフラッシュメモリシステムについて説明したが、本実施例は、図１に示されたように、マルチドロップ構成のフラッシュシステムに適用することができる。これは、適切なメモリ装置をイネーブルし、かつ対応する命令データを異なる時間で共通バスに提供することによって行われる。
【００５２】
本発明の上記の実施例は、図４のフラッシュメモリシステムのプログラム動作がインターリーブされる例を示す。本発明の他の実施例によれば、インターリーブされるプログラム(書込み)および読み出し動作は、図４のフラッシュメモリシステムにより実行される。
【００５３】
図１０は、図４のフラッシュメモリシステムについて高速インターリーブされる読み出しおよびプログラム動作を例示するタイミング図である。この例では、メモリ装置１０６、１１２がデータをプログラムされ、他方、メモリ装置１０８、１１０が読み出されたデータを提供する。時間期間ｔ１の間、メモリ装置１０６は、プログラム命令Data[0]を受け取り、それから即座にデータをプログラムするためのコア内部シーケンスを開始する。時間期間ｔ２の開始で、読み出し命令がメモリ装置１０８によって受け取られ、そして、内部のデータ転送動作（ｘｆｅｒ）が開始される。内部のデータ転送動作は、データを読み出しかつデータレジスタをロードするために、例えば、２０マイクロ秒かかり、その時間の後に、フラッシュコントローラは、時間期間ｔ３の開始時にメモリ装置１１０に読み出し命令を発する。内部ＮＯＰ期間５００がメモリ装置１０８によって突入され、これにより、データレジスタからデータを出力する前に命令の貫通が下流のメモリ装置へなされる。
【００５４】
メモリ装置１１０は、読み出し命令を受け取った後に内部のデータ転送動作を開始する。しかしながら、メモリ装置１０８と１１０間の信号線が使用されない以上は、上流のメモリ装置１０８は、データレジスタのデータをメモリ装置１１０へ出力することを開始し、メモリ装置１１２を介してデータを通過させる。これは、例えば、シーケンシャルな方法で行われる。時間期間ｔ３の終わりに、メモリ装置１０８は、すべての読み出したデータの出力を完了し、これにより、メモリ装置１１０が時間期間ｔ４の開始時に読み出したデータの出力を開始することを可能にする。メモリ装置１１０は、メモリ装置１０８がデータの出力を完了するまでデータを出力することができないので、内部ＮＯＰ期間５０２がなる。時間期間ｔ４の終わりに、メモリ装置１１０と１１２間の信号線は、メモリ装置１１０からのすべてのデータがメモリ装置１１２を介して出力されたので、使用されない。それ故、時間期間ｔ５の始まりに、メモリ装置１１２は、プログラム命令Data[1]を受け取る。
【００５５】
インターリーブされた読み出しおよびプログラム動作を例示したが、インテーリーブされる読み出し、プログラム、消去の動作は、どのような組合せであっても実行することができる。
【００５６】
上記した高速インテーリーブプログラム方法は、直列に接続されたメモリ装置を有するフラッシュメモリシステムのプログラム性能を最大にするために用いられる。高速インターリーブプログラムは、あらゆるサイズのデータファイルにも適用される。しかしながら、すべてのメモリ装置の耐久性を改善するため、高速損耗レベルプログラム方法は、データファイルのサイズに基づくファイル構造を有するデータファイルのページを分配するために使用される。実施例は、フラッシュメモリ装置を対象としたが、本発明の実施例は、データファイルのページが少なくとも２つのメモリ装置にプログラムされあるいは書き込まれる他のメモリ装置に適用可能である。
【００５７】
上記記載は説明のために、本発明の実施例の完全な理解を提供するように多数の詳細なことを設定した。しかしながら、これらの具体的な詳細なことは本発明を実施するために要求されるものではないことは当業者には明らかであろう。他の例では、公知の電気的な構造や回路が本発明の障害とならないようにブロック図の形態で示された。ここに説明された本発明の実施例がソフトウエアルーチン、ハードウエア回路、ファームウエア、あるいはそれらの組合せとして実行されるか否かに関して、具体的な詳細は条件とされない。
【００５８】
本発明の実施例は、機械が読み取り可能な媒体（コンピュータが読み取り可能な媒体、プロセッサが読み取り可能な媒体、あるいはコンピュータが読み取り可能である埋め込まれたプログラムコードを有するコンピュータが利用可能である媒体）に格納されたソフトウエア製品として表されることができる。機械が読み取り可能な媒体は、ディスケット、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、メモリ装置（揮発性または不揮発性）、あるいは同様の格納メカニズムを含む磁気、光学、あるいは電気的な格納媒体を含む、適切な実体のある媒体であることができる。機械が読み取り可能な媒体は、実行されるとき、プロセッサが本発明の実施例による方法のステップを実行する、種々の命令セット、コードシーケンス、コンフィギュレーション情報、あるいは他のデータを含むことができる。当業者は、ここに説明された発明を実行するための他の命令や動作もまた機械が読み取り可能な媒体に格納され得ることを理解しよう。機械が読み取り可能な媒体から実行するソフトウエアは、説明されたタスクを実行するために回路とインターフェースすることができる。
【００５９】
本発明の上記した実施例は、例としてのみ意図されたものである。代替、変更、変形は、ここに添付された特許請求の範囲によって唯一規定される、発明の範囲から逸脱することなく当業者によってもたらされる。
【図面の簡単な説明】
【００６０】
【図１】従来のフラッシュメモリシステムのブロック図である。
【図２】従来のＮＡＮＤフラッシュメモリコアの概略図である。
【図３】フラッシュメモリシステムの一般的なファイル構造の例示である。
【図４】本発明の実施例によるフラッシュメモリシステムのブロック図である。
【図５】本発明の実施例による図４のフラッシュコントローラにより発せられたプログラム命令のタイミング図である。
【図６】図４のフラッシュメモリシステムの各メモリ装置により受け取られたプログラム命令を示すタイミング図である。
【図７】本発明の実施例による高速インターリーブプログラム方法を例示するフローチャートである。
【図８】図７の高速インターリーブプログラム方法から生じる図４のフラッシュメモリシステムのファイル構造の図式の例示である。
【図９】本発明の実施例による高速損耗レベルプログラム方法を例示するフローチャートである。
【図１０】インターリーブプログラムと読出し動作を示すタイミング図である。
【図１】
2009531747.tif 000003
【図２】
2009531747.tif 000004
【図３】
2009531747.tif 000005
【図４】
2009531747.tif 000006
【図５】
2009531747.tif 000007
【図６】
2009531747.tif 000008
【図７】
2009531747.tif 000009
【図８】
2009531747.tif 000010
【図９】
2009531747.tif 000011
【図１０】
2009531747.tif 000012
【国際調査報告】
2009531747.tif 000013
2009531747.tif 000014
2009531747.tif 000015