(57)【特許請求の範囲】
【請求項１】
各々が有効ブロックであるか否かを示すブロック状態情報を貯蔵し、メモリセルを有する複数のブロックに分割されたメモリセルアレーを具備した複数個の電気的にプログラム可能なメモリ装置をプログラムする方法において、
（ａ）前記の各メモリ装置から前記ブロック状態情報を読み出してデータ貯蔵ユニットに貯蔵する段階と、
（ｂ）前記の各メモリ装置の複数のブロックを前記貯蔵されたブロック状態情報に基づいて第１、第２及び第３貯蔵領域に分割し、前記の各メモリ装置の第２貯蔵領域の一番目の位置を指定する段階と、
（ｃ）前記指定された位置にある前記の各メモリ装置の第２貯蔵領域のブロックを選択する段階と、
（ｄ）前記選択されたブロックが有効ブロックであるメモリ装置を選択し、選択したメモリ装置の選択された有効ブロックを同時にプログラムする段階と、
（ｅ）前記選択されたブロックが各々の第２貯蔵領域の最後のブロックではない場合に前記の各メモリ装置の次の位置を指定する段階と、
（ｆ）前記選択されたブロックが各々の第２貯蔵領域の最後のブロックになるまで、前記段階（ｃ）〜（ｅ）を反復的に実行する段階と、
（ｇ）少なくとも一つの無効ブロックを有する複数のメモリ装置のうちの一つを選択する段階と、
（ｈ）前記選択されたメモリ装置の前記少なくとも一つの無効ブロックにプログラムする予定であったデータを第３貯蔵領域の少なくとも一つのブロックにプログラムする段階と、
（ｉ）前記選択されたメモリブロックについての前記貯蔵されたブロック状態情報を前記選択されたメモリブロックの第１貯蔵領域にプログラムする段階と、
（ｊ）前記選択されたメモリ装置が最後のメモリ装置ではない場合に次のメモリ装置を選択する段階と、
（ｋ）前記選択されたメモリ装置が最後のメモリ装置になるまで、前記段階（ｈ）〜（ｊ）を反復的に実行する段階とを含み、
前記第１貯蔵領域はブロック状態情報を書き込むべき領域であり、前記第２貯蔵領域は前記複数個のメモリ装置にプログラムすべきデータとして予め準備されたデータを書き込むべき領域であり、前記第３貯蔵領域は第２貯蔵領域の無効ブロックに書き込まれる予定であったデータを書き込むべき領域である、
ことを特徴にする方法。
【請求項２】
前記データ貯蔵ユニットは、ランダムアクセスメモリを含み、前記データ貯蔵ユニットは、前記複数のメモリ装置に対するプログラムを制御するシステムに搭載されていることを特徴にする請求項１に記載の方法。
【請求項３】
コントロールユニット、インターフェースユニット、ＲＡＭユニット、及びＲＯＭユニットを含むシステムの制御下において、各々が有効なブロックであるか否かを示すブロック状態情報を貯蔵し、メモリセルを有する複数のブロックに分割されたメモリセルアレーを具備し、データ及びアドレスバスを共有する複数個の電気的にプログラム可能なメモリ装置をプログラムする方法において、
（ａ）前記の各メモリ装置から前記ブロック状態情報を読み出して前記ＲＡＭユニットに貯蔵する段階と、
（ｂ）前記の各メモリ装置の複数のブロックを前記貯蔵されたブロック状態情報に基づいて第１、第２及び第３貯蔵領域に分割し、前記の各メモリ装置の第２貯蔵領域の一番目の位置を指定する段階と、
（ｃ）前記指定された位置にある前記各メモリ装置の第２貯蔵領域のブロックを選択する段階と、
（ｄ）前記選択されたブロックが有効ブロックであるメモリ装置を選択し、選択したメモリ装置の選択された有効ブロックを同時にプログラムする段階と、
（ｅ）前記選択されたブロックが各々の第２貯蔵領域の最後のブロックであるか否かを判断する段階と、
（ｆ）前記選択されたブロックが各々の第２貯蔵領域の最後のブロックではない場合に前記の各メモリ装置の次の位置を指定する段階と、
（ｇ）前記選択されたブロックが各々の第２貯蔵領域の最後のブロックになるまで、前記段階（ｃ）〜（ｆ）を反復的に実行する段階と、
（ｈ）少なくとも一つの無効ブロックを有するメモリ装置のうちの一つを選択する段階と、
（ｉ）前記選択されたメモリ装置の前記少なくとも一つの無効ブロックにプログラムする予定であったデータを第３貯蔵領域の少なくとも一つのブロックにプログラムする段階と、
（ｊ）前記選択されたメモリブロックの前記貯蔵されたブロック状態情報を前記選択されたメモリブロックの第１貯蔵領域にプログラムする段階と、
（ｋ）前記選択されたメモリ装置が最後のメモリ装置ではない場合に次のメモリ装置を選択する段階と、
（ｌ）前記選択されたメモリ装置が最後のメモリ装置になるまで、前記段階（ｉ）〜（ｋ）を反復的に実行する段階と含み、
前記第１貯蔵領域はブロック状態情報を書き込むべき領域であり、前記第２貯蔵領域は前記複数個のメモリ装置にプログラムすべきデータとして予め準備されたデータを書き込むべき領域であり、前記第３貯蔵領域は第２貯蔵領域の無効ブロックに書き込まれる予定であったデータを書き込むべき領域である、
ことを特徴にする方法。
【請求項４】
各々が有効ブロックであるか否かを示すブロック状態情報を貯蔵し、メモリセルを有する複数のブロックに分割されたメモリセルアレーを具備した複数個のフラッシュメモリ装置をプログラムする方法において、
（ａ）前記の各フラッシュメモリ装置から前記ブロック状態情報を読み出してデータ貯蔵ユニットに貯蔵する段階と、
（ｂ）前記の各フラッシュメモリ装置の複数のブロックを前記貯蔵されたブロック状態情報に基づいて第１、第２及び第３貯蔵領域に分割し、前記の各第２貯蔵領域の一番目の位置を指定する段階と、
（ｃ）前記指定された位置にある前記の各フラッシュメモリ装置の第２貯蔵領域のブロックを選択する段階と、
（ｄ）前記選択されたブロックが有効ブロックであるフラッシュメモリ装置を選択し、選択したフラッシュメモリ装置の選択された有効ブロックを同時にプログラムする段階と、
（ｅ）前記選択されたブロックが各々の第２貯蔵領域の最後のブロックであるか否かを判断する段階と、
（ｆ）前記選択されたブロックが各々の第２貯蔵領域の最後のブロックではない場合に前記の各フラッシュメモリ装置の次の位置を指定する段階と、
（ｇ）前記選択されたブロックの各々の第２貯蔵領域の最後のブロックになるまで、前記段階（ｃ）〜（ｆ）を反復的に実行する段階と、
（ｈ）少なくとも一つの無効ブロックを有するフラッシュメモリ装置の一つを選択する段階と、
（ｉ）前記選択されたフラッシュメモリ装置の前記少なくとも一つの無効ブロックにプログラムする予定であったデータを第３貯蔵領域の少なくとも一つのブロックにプログラムする段階と、
（ｊ）前記選択されたメモリブロックの前記貯蔵されたブロック状態情報を前記選択されたメモリブロックの第１貯蔵領域にプログラムする段階と、
（ｋ）前記選択されたフラッシュメモリ装置が最後のフラッシュメモリ装置であるかの否かを判断する段階と、
（ｌ）前記選択されたフラッシュメモリ装置が最後のフラッシュメモリ装置ではない場合に次のフラッシュメモリ装置を選択する段階と、
（ｍ）前記選択されたフラッシュメモリ装置が最後のフラッシュメモリ装置になるまで、前記段階（ｉ）〜（ｌ）を反復的に実行する段階とを含み、
前記第１貯蔵領域はブロック状態情報を書き込むべき領域であり、前記第２貯蔵領域は前記複数個のメモリ装置にプログラムすべきデータとして予め準備されたデータを書き込むべき領域であり、前記第３貯蔵領域は第２貯蔵領域の無効ブロックに書き込まれる予定であったデータを書き込むべき領域である、
ことを特徴にする方法。
【請求項５】
前記フラッシュメモリ装置はデータ及びアドレスバスを共有することを特徴にする請求項４に記載の方法。
【請求項６】
前記フラッシュメモリ装置をプログラムする方法は、コントロールユニット、ＲＡＭユニット、ＲＯＭユニット、及びインターフェースユニットを含むシステムの制御下で実行され、前記ブロック状態情報は前記システムのＲＡＭユニットに貯蔵されることを特徴にする請求項５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路メモリ装置をプログラムする方法に係り、例えば、少なくとも一つの無効ブロック（ｉｎｖａｌｉｄ  ｂｌｏｃｋ）を有する複数個のフラッシュメモリを同時にプログラムする方法に関する。
【０００２】
【従来の技術】
この分野に熟練された者によく知られたように、フラッシュメモリは複数のブロック（セクターともいう）に分かれたメモリセルアレーを含み、各ブロックは複数個のメモリセルを含む。このようなフラッシュメモリにおいて、消去はブロック単位でなされる。
【０００３】
フラッシュメモリは、例えば、最大２０個の無効ブロック（又はバッドブロック（ｂａｄ  ｂｌｏｃｋ））を含み得る。ここで、無効ブロックは、少なくとも１つの無効ビット（又はメモリセル）を含むブロックである。無効ブロックを有するフラッシュメモリは、全てが有効ブロック（又はグッドブロック（ｇｏｏｄｂｌｏｃｋｓ））であるフラッシュメモリと同一の品質及びＡＣ／ＤＣ特性を有する。無効ブロックは有効ブロックの性能に影響を及ぼさない。これは、ビットライン及び共通ソースライン（ｃｏｍｍｏｎ  ｓｏｕｒｃｅ  ｌｉｎｅ：ＣＳＬ）が選択トレンジスタによって電気的に絶縁されるからである。
【０００４】
フラッシュメモリの全てのブロックは出荷前に（ｆｆｈ）に初期化される。ただし、無効ブロックを有するフラッシュメモリは、無効ブロックの一番目のページ、二番目のページ、又は全てのページ内に、例えば、ｏｏｈデータ（以下、“ブロック状態情報”（ｂｌｏｃｋ  ｓｔａｔｕｓ  ｉｎｆｏｒｍａｔｉｏｎ）という）がプログラムされる。このようなページは無効メモリセルを含むことを意味する。即ち、ブロック状態情報は、無効メモリセルを含むブロック、換言すると、データ情報を貯蔵できないブロックを指標するために使用される。
【０００５】
図１は、システム（例えば、ＰＲＯＭライタ（ｗｒｉｔｅｒ））の構成及び該システムとフラッシュメモリとの間の信号の流れを示すブロック図である。ＰＲＯＭライタの一例が、米国特許第４，７８３，７３７号（「ＰＲＯＭ  ＷＲＩＴＥＲ  ＡＤＡＰＴＥＤ  ＴＯ  ＡＣＣＥＰＴ  ＮＥＷ  ＷＲＩＴＩＮＧ  ＡＬＧＯＲＩＴＨＭ」）に開示されている。この米国特許は、システムプログラムを変更することなく、メモリ内に貯蔵されたものと違う書き込みアルゴリズム（ｗｒｉｔｉｎｇ  ａｌｇｏｒｉｔｈｍ）によってＰＲＯＭデ―タを書き込むことができるＰＲＯＭライタを開示している。
【０００６】
図１に示されたシステム（１０）（以下では、ＰＲＯＭライタという）は、コントロールユニット（例えば、中央処理ユニト）（２０）、システムプログラムコードとメモリ制御プログラムコードを貯蔵するＲＯＭユニット（３０）、フラッシュメモリ（６０ａ）〜（６０ｄ）にプログラムされるデータを貯蔵するＲＡＭユニット（４０）、及びインターフェースユニット（５０）で構成される。コントロールユニト（２０）は、ＲＯＭユニット（３０）に貯蔵されたシステムプログラムコード及びメモリ制御プログラムコードを読み込んでこれらに従って、インターフェースユニット（５０）を通じてＲＡＭユニット（４０）に貯蔵されたデータをフラッシュメモリ（６０ａ）〜（６０ｄ）に書き込む。データ（Ｄ０）〜（Ｄｉ）を伝達するためのデータバスは、フラッシュメモリ（６０ａ）〜（６０ｄ）によって共有される。同様に、アドレス信号（Ａ０）〜（Ａｉ）を伝達するためのアドレスバスは、フラッシュメモリ（６０ａ）〜（６０ｄ）によって共有される。
【０００７】
図１に示したように、ＰＲＯＭライタ（１０）から供給される読み出しイネーブル信号（／ＲＥ）と書き込みイネーブル信号（／ＷＥ）は、４個のフラッシュメモリ（６０ａ）〜（６０ｄ）に共通に提供される。フラッシュメモリ（６０ａ）〜（６０ｄ）は、各々に対応するチップ選択信号（／ＣＳ０）、（／ＣＳ１）、（／ＣＳ２）、（／ＣＳ３）が活性化される時に、互いに独立的に選択される。
【０００８】
図２は、図１に図示されたＰＲＯＭライタ（１０）の制御の下で、複数のフラッシュメモリ（６０ａ）〜（６０ｄ）の各々に同一のデータを書き込む処理の従来技術の流れを示す図である。図３は、図１に示された各フラッシュメモリのメモリマップを示している。図３で、ＲＡＭユニット（４０）に貯蔵されたデータは、各フラッシュメモリ（６０ａ）〜（６０ｄ）の一番目及び二番目ブロック（ＢＬＫ１）及び（ＢＬＫ２）を除外した残りのブロック（ＢＬＫ３）〜（ＢＬＫｎ）に書き込まれる。
【０００９】
以下、従来技術によるプログラム工程を図１〜図３を参照しながら説明する。
【００１０】
段階（Ｓ１１）では、ＤＥＶＩＣＥ値を‘１’に設定することによって第１フラッシュメモリ（６０ａ）が選択される。即ち、ＰＲＯＭライタ（１０）からの第１チップ選択信号（／ＣＳ０）がロウになる。
【００１１】
段階（Ｓ１２）では、ＢＬＯＣＫ値を‘３’に設定することによって、選択されたフラッシュメモリ（６０ａ）の複数ブロック（ＢＬＫ３）〜（ＢＬＫｎ）の中の一つブロック（ＢＬＫ３）が選択される。続けて、選択されたフラッシュメモリ（６０ａ）の選択されたブロック（ＢＬＫ３）が有効であるか否かを判定するために、選択されたフラッシュメモリ（６０ａ）の選択されたブロック（ＢＬＫ３）からブロック状態情報が読出される（段階Ｓ１３）。
【００１２】
選択されたブロック（ＢＬＫ３）がＰＲＯＭライタ（１０）のコトロールユニット（２０）によって有効ブロックであると判定された場合は、選択されたフラッシュメモリ（６０ａ）の選択されたブロック（ＢＬＫ３）に対応するブロック状態情報は、ＰＲＯＭライタ（１０）、より具体的には、ＰＲＯＭライタ（１０）のＲＡＭユニット（４０）に貯蔵される（段階Ｓ１４）。次いで、ＲＡＭユニット（４０）に貯蔵されたデータが、インターフェースユニット（５０）を通じて、選択されたフラッシュメモリ（６０ａ）の選択されたブロック（ＢＬＫ３）にプログラムされる（段階Ｓ１５）。一方、選択されたブロック（ＢＬＫ３）がコトロールユニット（２０）によって無効ブロックであると判定された場合は、選択されたブロック（ＢＬＫ３）のブロック状態情報が貯蔵された後（段階Ｓ１７）に、選択されたブロック（ＢＬＫ３）がプログラムされることなく、処理は段階（Ｓ１６）に進む。即ち、無効な選択ブロック（ＢＬＫ３）に対するプログラム動作は省略される。
【００１３】
段階（Ｓ１６）で、ＰＲＯＭライタ（１０）のコトロールユニット（２０）は、選択されたブロック（ＢＬＫ３）がプログラムすべき最後のブロックであるか否かを判断する。当該ブロックが最後のブロックない場合は、処理は段階（Ｓ１８）に進み、段階（Ｓ１８）では、ＢＬＯＣＫ値が次ブロックを指定するようにＢＬＯＣＫ値に‘１’が加算される。段階（Ｓ１３）から段階（Ｓ１８）までの過程は、選択されたブロックがプログラムすべき最後のブロックであると判断されるまで反復される。
【００１４】
選択されたブロックが最後のブロックであると判断された場合は、ＲＡＭユニット（３０）に一時的に貯蔵されたブロック状態情報によるファイル割り当てテーブル（ｆｉｌｅ  ａｌｌｏｃａｔｉｏｎ  ｔａｂｌｅ：ＦＡＴ）データが、選択されたフラッシュメモリ（６０ａ）の一番目又は二番目のブロック（ＢＬＫ１）又は（ＢＬＫ２）にプログラムされる（段階Ｓ１９）。
【００１５】
“ファイル割り当てテーブル”と言う用語は “フラッシュファイルシステム（ｆｌａｓｈ  ｆｉｌｅ  ｓｙｓｔｅｍ）”と言う用語に代替されて使用され得る。フラッシュファイルシステムの適切な例が、米国特許第５，４０４，４８５号（「ＦＬＡＳＨ  ＦＩＬＥ  ＳＹＳＴＥＭ」）に開示されている。
【００１６】
段階（Ｓ１２）から段階（Ｓ１９）までの過程は、残りのフラッシュメモリ（６０ｂ）〜（６０ｄ）に、ＲＡＭユニット（３０）に貯蔵されたデータがプログラムされるまで、段階（Ｓ２０）及び（Ｓ２１）の過程を通じて反復される。
【００１７】
プログラム過程が終了すると、各フラッシュメモリ（６０ａ）〜（６０ｄ）のメモリマップは、例えば図４に示す状態となる。図４で分かるように、無効ブロックにプログラムすべきであったデ―タは次の有効ブロックに貯蔵される。
【００１８】
前述のように、少なくとも一つの無効ブロックを有する各フラッシュメモリ（６０ａ）〜（６０ｄ）はシリアルプログラム過程によってプログラムされる。その結果、従来技術によるプログラム過程は長時間を要する。
【００１９】
【発明が解決しようとする課題】
本発明は、上記の問題点に鑑みてなされたものであり、本発明の目的は、例えば、少なくとも一つの無効ブロックを有する複数のメモリ（例えば、フラッシュメモリ）を同時にプログラムすることで、プログラム過程に要する時間を短縮する点にある。
【００２０】
【課題を解決するための手段】
本発明の特徴によると、少なくとも一つの無効ブロックを有する複数のフラッシュメモリをプログラムする方法が提供される。各フラッシュメモリは複数のメモリセルのブロックに分割されたメモリセルアレーを含む。複数のブロックの各々は有効なブロックであるか否かを示すブロック状態情報を貯蔵している。本発明に係る方法は、フラッシュメモリに対するプログラムシステムの制御下で実行され、システムはコントロールユニット、フラッシュメモリに書き込まれるデータを貯蔵するためのＲＡＭユニット、システムプログラムとメモリ制御プログラムを貯蔵するためのＲＯＭユニット、及びインターフェースユニットを含む。
【００２１】
本発明に係るメモリ制御プログラムのアルゴリズムによると、まず、各メモリ装置からブロック状態情報が読み出され、ＲＡＭユニットに貯蔵される。各メモリ装置のブロックは貯蔵されたブロック状態情報に基づいて第１、第２及び第３貯蔵領域に分割される。各々のメモリ装置の第２貯蔵領域のブロックは、システムによって任意の位置が指定された後に選択される。選択されたブロックが有効なブロックであるメモリ装置が選択され、その選択されたメモリ装置の選択された有効なブロックが同時にプログラムされる。選択されたブロックが各々の第２貯蔵領域の最後のブロックではない場合は、各メモリ装置の次の位置がシステムによって指定される。以上の過程は、選択されたブロックが各々の第２貯蔵領域の最後のブロックになるまで反復される。
【００２２】
以後、少なくとも一つの無効ブロックを有するフラッシュメモリをプログラムする過程が実行される。この過程は、少なくとも一つの無効ブロックを有するメモリ装置のうちの一つを選択する段階と、選択されたメモリ装置の少なくとも一つの無効ブロックの代わりに第３貯蔵領域の少なくとも一つのブロックをプログラムする段階と、選択されたメモリブロックについての貯蔵されたブロック状態情報を選択されたメモリブロックの第１貯蔵領域にプログラムする段階と、選択されたメモリ装置が最後のメモリ装置ではない場合に次のメモリ装置を選択する段階と、選択されたメモリ装置が最後のメモリ装置になるまで、上記の段階を反復的に実行する段階を含む。
【００２３】
本発明のメモリ制御プログラムのアルゴリズムによると、まず、全てのフラッシュメモリの有効なブロックに対して並列プログラムが実行される。次に、無効ブロックを有するフラッシュメモリに対して直列プログラムが実行される。これによって、少なくとも一つの無効ブロックを有するフラッシュメモリをプログラムするために要する時間が短縮される。
【００２４】
【発明の実施の形態】
以下、添付図面を参照しながら本発明の好適な実施の形態を説明する。
【００２５】
この実施の形態のプログラム過程は、図１に示されたシステム（１０）、例えばＰＲＯＭライタの制御下で実行される。なお、重複説明を避けるために、システム（１０）の説明は省略するが、システム（１０）のＲＯＭユニット（３０）には、従来技術によるメモリ制御プログラムコードの代わりに本発明の好適な実施の形態に係るメモリ制御プログラムコードが貯蔵される。
【００２６】
従来技術と同様に、データ（ＤＯ）〜（Ｄｉ）を伝送するためのデータバスはフラッシュメモリ（６０ａ）〜（６０ｄ）によって共有され、アドレス信号（ＡＯ）〜（Ａｉ）を伝送するためのアドレスバスもまたフラッシュメモリ（６０ａ）〜（６０ｄ）によって共有される。また、図１のシステム（１０）から供給される読み出しイネーブル信号（／ＲＥ）と書き込みイネーブル信号（／ＷＥ）はフラッシュメモリ（６０ａ）〜（６０ｄ）に共通に提供される。フラッシュメモリ（６０ａ）〜（６０ｄ）は、各々対応するチップ選択信号（／ＣＳＯ）、（／ＣＳＩ）、（／ＣＳ２）、（／ＣＳ３）が個別的に活性化される時には個別的に選択され、対応するチップ選択信号（／ＣＳ０）、（／ＣＳ１）、（／ＣＳ２）、（／ＣＳ３）が同時に活性化される時には同時に選択される。
【００２７】
以下、本発明の好適な実施の形態に係るプログラム過程を図１、図５及び図６を参照しながら説明する。
【００２８】
まず、段階（Ｓ１０１）では、各フラッシュメモリ（６０ａ）〜（６０ｄ）の全てのブロック（ＢＬＫ０）〜（ＢＬＫｎ）からブロック状態情報が読出され、システム（１０）のＲＡＭユニット（４０）に貯蔵される。
【００２９】
段階（Ｓ１０２）では、各フラッシュメモリ（６０ａ）〜（６０ｄ）のブロック（ＢＬＫＯ）〜（ＢＬＫｎ）の全てが、ＲＡＭユニット（４０）に貯蔵されたブロック状態情報に従って、３個の貯蔵領域に分割される。具体的には、一番目の貯蔵領域はファイル割り当てテーブル（ＦＡＴ）情報を貯蔵するための領域に指定され、二番目の貯蔵領域は各フラッシュメモリ（６０ａ）〜（６０ｄ）に書かれるデータ情報、例えば、アプリケーションプログラムを貯蔵するための領域に指定され、三番目の貯蔵領域は余分の領域に指定される。二番目の貯蔵領域は、各々所定の位置が、ブロックを選択するためのコントロールユニット（２０）によって指定される（段階Ｓ１０２）。
【００３０】
例えば、各フラッシュメモリ（６０ａ）〜（６０ｄ）の一番目及び二番目ブロック（ＢＬＫ１）及び（ＢＬＫ２）は一番目の貯蔵領域に設定され、各フラッシュメモリ（６０ａ）〜（６０ｄ）の三番目ブロック（ＢＬＫ３）〜ブロック（ＢＬＫｍ）は二番目の貯蔵領域に設定され、各フラッシュメモリ（６０ａ）〜（６０ｄ）の残りのブロック（ＢＬＫ（ｍ＋１））〜（ＢＬＫｎ）（ｍ＜ｎ）は三番目の貯蔵領域に設定される。図７は、各フラッシュメモリの貯蔵領域の分割方法の一例を示している。図７に示す例では、各フラッシュメモリ（６０ａ）〜（６０ｄ）が同一のメモリ容量を有する条件下で、各フラッシュメモリ（６０ａ）〜（６０ｄ）の一番目、二番目及び三番目の貯蔵領域が同一の数のブロックを有するように分割されている。しかしながら、互いに異なるメモリ容量を有するフラッシュメモリを個々に任意の個数のブロックで構成される貯蔵領域に分割することもできる。
【００３１】
次いで、段階（Ｓ１０２）で指定された各フラッシュメモリ（６０ａ）〜（６０ｄ）の二番目の貯蔵領域のブロックは、システム（１０）からのチップ選択信号（／ＣＳ０）、（／ＣＳ１）、（／ＣＳ２）、（／ＣＳ４）を順次に活性化させることで選択される（段階（Ｓ１０３））。各フラッシュメモリ（６０ａ）〜（６０ｄ）の選択されたブロック（ＢＬＫ３）が有効なブロックであるか否かはＲＡＭユニット（４０）に貯蔵されたブロック状態情報に基づいてシステム（１０）のコントロールユニット（２０）によって判定される。
【００３２】
例えば、一番目のフラッシュメモリ（６０ａ）の選択されたブロック（ＢＬＫ３）が有効ブロックであると、該一番目のフラッシュメモリ（６０ａ）がプログラムされるデバイスに決定される。一方、一番目のフラッシュメモリ（６０ａ）の選択されたブロック（ＢＬＫ３）が無効ブロックであると、該一番目のフラッシュメモリ（６０ａ）はプログラムされないデバイスに決定される。プログラムされるデバイスを決定する過程は、残りの全てのフラッシュメモリ（６０ｂ）〜（６０ｄ）の選択されたブロック（ＢＬＫ３）が有効ブロックであるか否かが判定されるまで続けて行われる。
【００３３】
段階（Ｓ１０４）では、プログラムされるデバイスに決定されたフラッシュメモリ、即ち、選択された有効ブロック（ＢＬＫ３）を有するフラッシュメモリを選択した後、選択されたフラッシュメモリの選択された有効ブロックが同時にプログラムされる。具体的には、段階（Ｓ１０４）では、選択された有効ブロック（ＢＬＫ３）を有するフラッシュメモリ、例えば、フラッシュメモリ（６０ｂ）及び（６０ｃ）に対応するチップ選択信号（／ＣＳ１）そして（／ＣＳ２）が活性化される。一方、無効ブロック（ＢＬＫ３）を有するフラッシュメモリ、例えば、フラッシュメモリ（６０ａ）及び（６０ｄ）に対応するチップ選択信号（／ＣＳ０）及び（／ＣＳ３）は活性化されない。結果的に、ＲＡＭユニット（４０）に貯蔵されたデータは、システム（１０）の制御下で、二番目及び三番目のフラッシュメモリ（６０ｂ）及び（６０ｃ）の選択されたブロック（ＢＬＫ３）に同時にプログラムされる（並列プログラム）。一方、一番目及び三番目のフラッシュメモリ（６０ａ）及び（６０ｄ）の無効ブロックは、対応するチップ選択信号（／ＣＳ０）及び（／ＣＳ３）が活性化されないためプログラムされない。
【００３４】
段階（Ｓ１０５）では、ＰＲＯＭライタ（１０）は、選択されたブロックが二番目の貯蔵領域の各々の最後のブロックであるか否かを判断する。選択されたブロックが最後のブロックではない場合は、処理は段階（Ｓ１０６）に進み、段階（Ｓ１０６）では、次ブロックに対応する位置がコントロールユニット（２０）によって指定される。段階（Ｓ１０３）から段階（Ｓ１０６）までの過程は、選択されたブロックが二番目の貯蔵領域の最後のブロックであると判断されるまで反復される。図７には、有効ブロックに対するプログラム過程が終了した時点における各フラッシュメモリ（６０ａ）〜（６０ｄ）のメモリマップが示されている。
【００３５】
図７で分かるように、一番目及び四番目のフラッシュメモリ（６０ａ）及び（６０ｄ）のブロック（ＢＬＫ３）が無効ブロックであるため、二番目及び三番目のフラッシュメモリ（６０ｂ）及び（６０ｃ）のブロック（ＢＬＫ３）にはデータ（ＤＡＴＡ１）が同時にプログラムされる一方、一番目及び四番目のフラッシュメモリ（６０ａ）及び（６０ｄ）のブロック（ＢＬＫ３）にはデータがプログラムされない。同様に、二番目及び三番目フラッシュメモリ（６０ｂ）及び（６０ｃ）のブロック（ＢＬＫ５）が無効ブロックであるため、一番目及び四番目のフラッシュメモリ（６０ａ）及び（６０ｄ）のブロック（ＢＬＫ５）にはデータ（ＤＡＴＡ３）が同時にプログラムされる一方、二番目及び三番目フラッシュメモリ（６０ｂ）及び（６０ｃ）のブロック（ＢＬＫ５）にはデータがプログラムされない。また、フラッシュメモリ（６０ａ）〜（６０ｄ）のブロック（ＢＬＫ４）が有効ブロックであるため、フラッシュメモリ（６０ａ）〜（６０ｄ）のブロック（ＢＬＫ４）にはデータ（ＤＡＴＡ２）が同時にプログラムされる。
【００３６】
次に、図６を参照しながら、フラッシュメモリ（６０ａ）―（６０ｄ）の無効ブロックにプログラムすべきであったデータを他のブロック（有効ブロック）にプログラムする過程を説明する。
【００３７】
段階（Ｓ１０７）では、システム（１０）は、RAMユニット（４０）に貯蔵されたブロック状態情報に基づいて、少なくとも１つの無効ブロックを有する１つのフラッシュメモリをフラッシュメモリ（６０ａ）〜（６０ｄ）の中から選択する。無効ブロックに書き込まれる予定であったデータは、選択されたフラッシュメモリの三番目の貯蔵領域にプログラムされる（段階Ｓ１０８）。例えば、図７に示す例では、選択されたフラッシュメモリ（６０ａ）の無効ブロック（ＢＬＫ３）に書き込まれる予定であったデータ（ＤＡＴＡ１）は選択されたフラッシュメモリ（６０ａ）の（ｍ＋１）番目のブロック（ＢＬＫ（ｍ＋１）にプログラムされる。
【００３８】
段階（Ｓ１０９）では、ＲＡＭユニット（４０）に貯蔵されたブロック状態情報データが選択されたフラッシュメモリ（一番目のフラッシュメモリ）（６０ａ）の一番目の貯蔵領域にフアイル割り当てテーブル（ＦＡＴ）データとしてプログラムされる。
【００３９】
段階（Ｓ１１０）では、システム（１０）は、選択されたフラッシュメモリが最後のフラッシュメモリであるか否かを判断する。そして、選択されたフラッシュメモリが最後のフラッシュメモリではない場合は、処理は段階（Ｓ１１１）に進み、段階（Ｓ１１１）では次のフラッシュメモリが選択される。段階（Ｓ１０８）から段階（Ｓ１１１）までの過程は、少なくとも１つの無効ブロックを有するフラッシュメモリ（６０ａ）〜（６０ｄ）の全てが選択されるまで続けて行われる。
【００４０】
以上のように、フラッシュメモリ（６０ａ）〜（６０ｄ）の無効ブロックに書き込まれる予定であったデータは、図７に図示されたように、三番目の貯蔵領域のブロックに直列プログラム過程によってプログラムされる。
【００４１】
本発明の好適な実施の形態によると、まず、全てのフラッシュメモリ（６０ａ）〜（６０ｄ）の有効ブロックに対して並列プログラム過程によってプログラムが実行される。並列プログラム過程の実行に要する時間は、一つのフラッシュメモリをプログラムする過程に要する時間と同一である。その次に、少なくとも１つの無効ブロックを有する複数のフラッシュメモリが順次に選択され、選択されたフラッシュメモリの無効ブロックが直列プログラム過程によってプログラムされる。従って、本発明の好適な実施の形態によれば、無効ブロックを有する複数のフラッシュメモリをプログラムするために要する時間が短縮される。
【００４２】
【発明の効果】
本発明によれば、無効ブロックを有する複数のメモリに対するプログラムに要する時間を短縮することができる。
【図面の簡単な説明】
【図１】システムの構成及び該システムとフラッシュメモリとの間の信号流れを示す図である。
【図２】図１に示されたシステムの制御下で複数のフラッシュメモリの各々に同一のデータを書き込む処理の従来技術の流れを示す図である。
【図３】図１に図示された各フラッシュメモリのメモリマップを示す図である。
【図４】従来技術のプログラム過程が終了した時の各フラッシュメモリのメモリマップを示す図である。
【図５】本発明の好適な実施の形態に係るメモリ制御プログラム流れを示す図である。
【図６】本発明の好適な実施の形態に係るメモリ制御プログラム流れを示す図である。
【図７】本発明の好適な実施の形態に係るプログラム過程が終了した時の各フラッシュメモリのメモリマップを示す図である。
【符号の説明】
１０  システム
２０  コントロールユニット
３０  ＲＯＭユニット
４０  ＲＡＭユニット
５０  インターフェースユニット
６０ａ〜６０ｂ  フラッシュメモリ
【図１】
0003842519.tif 000002
【図２】
0003842519.tif 000003
【図３】
0003842519.tif 000004
【図４】
0003842519.tif 000005
【図５】
0003842519.tif 000006
【図６】
0003842519.tif 000007
【図７】
0003842519.tif 000008