(57)【要約】【課題】管理情報の更新に伴う書き込みエラーに対する耐性の高いデータ記憶装置および管理情報更新方法を提供する。【解決手段】フラッシュメモリのアドレス管理情報であるＦＡＴ等のファイル管理情報をメモリの管理情報領域に格納するとともに、ＦＡＴ構成データの格納ブロックとして２つのブロックからなるブロック組を設定し、ブロック組を構成する２つのブロックの各ページを交互に適用して更新ＦＡＴ情報を書き込む。ブロック組を構成する１つのブロックに更新直前のＦＡＴ情報を保持したまま、更新情報をもう一方のブロックに書き込む構成としたので、更新管理情報の書き込みエラー発生時にも更新直前のＦＡＴ情報を利用した処理が可能となる。【選択図】  図１５
2004280752.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶部と、該データ記憶部に対するデータ入出力制御を実行する制御部とを有するデータ記憶装置において、
前記データ記憶部は、所定容量のデータを記憶可能なページが複数設定されたブロックに分割され、ユーザデータの格納領域としてのデータ領域と、該データ領域に対するアクセスのためのアドレス情報を含む管理情報領域とを有し、
前記管理情報領域は、前記データ領域に格納されたデータファイルのアドレス連鎖情報を持つファイル管理情報を格納し、
前記制御部は、
前記ファイル管理情報の更新情報を、２つの異なるブロックを一対としたブロック組を構成する一方のブロックの構成ページに更新前ファイル管理情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後ファイル管理情報を書き込む処理を実行する構成であることを特徴とするデータ記憶装置。
【請求項２】
前記ファイル管理情報は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）であり、前記制御部は、ＦＡＴ更新情報の書き込み処理において、前記２つの異なるブロックを一対としたブロック組を適用し、ブロック組を構成する２ブロックの構成ページに対して、２ブロックを交互に適用して更新ＦＡＴ情報を書き込む処理を実行する構成であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記ファイル管理情報に対して設定される１つの論理アドレスに対応して前記ブロック組のアドレス情報としての２つの物理アドレスが設定され、
前記制御部は、更新すべきファイル管理情報を指定した論理アドレスに応じて前記２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックを構成するブロック組として識別する構成であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項４】
前記制御部は、
ユーザデータの格納領域としてのデータ領域に対するユーザデータ書き込み処理の一処理単位毎に、前記ファイル管理情報の更新情報の書き込み処理を実行する構成であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項５】
前記データ記憶部の管理情報領域には、さらに、前記データ領域に格納されたデータに対応して設定される論理アドレスと、前記データ領域に格納されたデータの物理的位置に対応して設定される物理アドレスとを対応付けた論理物理アドレス変換テーブルとを格納した構成であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項６】
前記制御部は、さらに、
前記論理物理アドレス変換テーブルの更新情報を、２つの異なるブロックを一対としたブロック組を構成する一方のブロックの構成ページに更新前論理物理アドレス変換テーブル構成情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後論理物理アドレス変換テーブル構成情報を書き込む処理を実行する構成を有することを特徴とする請求項５に記載のデータ記憶装置。
【請求項７】
前記データ記憶装置は、情報処理装置に着脱可能な構成を有するとともに、前記情報処理装置とのデータ入出力可能なインタフェース手段を有し、
前記制御部は、
前記インタフェース手段を介して情報処理装置からの論理アドレスを入力し、該入力論理アドレスに従って２つの物理アドレスを取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックの組として識別する構成であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項８】
前記制御部は、
前記ファイル管理情報の更新処理をページ単位で実行し、前記ブロック組を構成する２つのブロックの構成ページを交互にシーケンシャルに使用して更新管理情報の書き込み処理を実行し、該ブロック組を構成する２ブロックの構成ページに空きページがない場合に、更新直前のファイル管理情報が格納されたブロックと異なるブロックのデータを消去し、該消去ブロックの先頭ページに更新ファイル管理情報の書き込み処理を実行する構成であることを特徴とする請求項１に記載のデータ記憶装置。
【請求項９】
データ記憶部と、該データ記憶部に対するデータ入出力制御を実行する制御部とを有するデータ記憶装置における管理情報更新方法であり、
更新管理情報に対応する論理アドレスを入力する論理アドレス入力ステップと、
前記論理アドレスに応じて２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックを構成するブロック組として識別するブロック組識別ステップと、
前記ブロック組を構成する一方のブロックの構成ページに更新前ファイル管理情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後ファイル管理情報を書き込む処理を実行する更新情報書き込みステップと、
を有することを特徴とするデータ記憶装置における管理情報更新方法。
【請求項１０】
前記ファイル管理情報は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）であり、
前記更新情報書き込みステップは、
前記ブロック組を構成する２ブロックの構成ページに対して、２ブロックを交互に適用して更新ＦＡＴ情報を書き込む処理を実行することを特徴とする請求項９に記載のデータ記憶装置における管理情報更新方法。
【請求項１１】
ユーザデータの格納領域としてのデータ領域に対するユーザデータ書き込み処理の一処理単位毎に、前記ファイル管理情報の更新情報書き込みステップを実行することを特徴とする請求項９に記載のデータ記憶装置における管理情報更新方法。
【請求項１２】
前記データ記憶装置における管理情報更新方法は、さらに、
前記論理アドレス入力ステップにおいて入力する論理アドレスに応じて２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新すべき論理物理アドレス変換テーブル構成情報を書き込むブロックを構成するブロック組として識別するブロック組識別ステップと、
前記ブロック組を構成する一方のブロックの構成ページに更新前論理物理アドレス変換テーブル構成情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後論理物理アドレス変換テーブル構成情報を書き込む処理を実行する更新情報書き込みステップと、
を実行することを特徴とする請求項９に記載のデータ記憶装置における管理情報更新方法。
【請求項１３】
前記更新情報書き込みステップは、
前記ファイル管理情報の更新処理をページ単位で実行し、前記ブロック組を構成する２つのブロックの構成ページを交互にシーケンシャルに使用して更新管理情報の書き込み処理を実行し、該ブロック組を構成する２ブロックの構成ページに空きページがない場合に、更新直前のファイル管理情報が格納されたブロックと異なるブロックのデータを消去し、該消去ブロックの先頭ページに更新ファイル管理情報の書き込み処理を実行することを特徴とする請求項９に記載のデータ記憶装置における管理情報更新方法。
【請求項１４】
データ記憶部と、該データ記憶部に対するデータ入出力制御を実行する制御部とを有するデータ記憶装置における管理情報更新処理を実行するコンピュータ・プログラムであり、
更新管理情報に対応する論理アドレスを入力する論理アドレス入力ステップと、
前記論理アドレスに応じて２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックを構成するブロック組として識別するブロック組識別ステップと、
前記ブロック組を構成する一方のブロックの構成ページに更新前ファイル管理情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後ファイル管理情報を書き込む処理を実行する更新情報書き込みステップと、
を有することを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラムに関する。さらに、詳細には、フラッシュメモリに格納する管理情報、例えば論理物理アドレス変換テーブル、あるいはＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）等のファイル管理情報の書き込み処理を実行する装置および方法に関する。特に、管理情報の情報消失エラーに対する耐性高めることを可能としたデータ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラムに関する。
【０００２】
【従来の技術】
昨今、ＰＣ（パーソナルコンピュータ）、データ記録または再生装置、ＰＤＡ、ビデオカメラ等、各種の電子機器におけるデータ記憶装置としてフラッシュメモリが多く利用されている。データの書き込みおよび消去が容易なフラッシュメモリは、小型、軽量、高速性、低消費電力といった特性を有し、例えば画像データ、音声データ、テキストファイル、プログラム等の記憶媒体として利用される。
【０００３】
特に、フラッシュメモリを電子機器に対して着脱自在な構成としたメモリカードが盛んに利用されており、例えばビデオカメラで取得した画像データを蓄積したメモリカードをＰＣに装着して再生したり、あるいはＰＣにおいてインターネットを介して、あるいはＣＤ、ＤＶＤ、ＭＤ等の記憶媒体から取得した音楽データをメモリカードに格納し、携帯プレーヤにメモリカードを装着して再生するなどの利用がなされる。
【０００４】
図１に示すように、フラッシュメモリには、データの消去処理単位としてのブロック１１０、および、データの読み出し、書き込み単位としてのページ１２０が規定されている。フラッシュメモリは、複数のブロックを有し、１ブロックは複数ページによって構成される。１ページは、例えば５１２Ｂｙｔｅのデータ格納領域１２１と、パリティーデータなどを書き込む１６Ｂｙｔｅの拡張領域（Ｅｘｔｒａ領域）１２２とから構成される。なお、データ格納領域、拡張領域のデータサイズはフラッシュメモリに応じて様々である。例えば、２０４８Ｂｙｔｅのデータ格納領域１２１と、６４Ｂｙｔｅの拡張領域（Ｅｘｔｒａ領域）１２２との組み合わせ等もある。
【０００５】
フラッシュメモリに対するデータの書き込み、データの読み出し、あるいは消去処理は、フラッシュメモリの特定のデータ領域をアドレスにより指定することが必要となる。フラッシュメモリにおけるアドレス指定では、フラッシュメモリを利用する電子機器からのアドレス指定情報としての論理アドレスから、フラッシュメモリにおける物理的位置情報としての物理アドレスに変換する処理が行われる。
【０００６】
フラッシュメモリは、論理アドレスを物理アドレスに変換するための変換情報を格納したテーブルである論理−物理アドレス変換テーブルをフラッシュメモリ内の特定のブロックに設定された管理情報領域に記憶している。
【０００７】
フラッシュメモリにおける論理−物理アドレス変換テーブルの適用構成については、例えば特許文献１に記載されている。
【０００８】
フラッシュメモリにおいては、例えばあるページに書き込まれたデータをＰＣ等の電子機器が読み出してデータ更新を行った場合、その更新データは、読み出したページ位置とは異なる位置に書き込まれる。これは、記憶素子の書き込み／消去の繰り返し回数に上限があり、フラッシュメモリの均一な利用を行ってフラッシュメモリ全体としての寿命を高めるためである。
【０００９】
論理−物理アドレス変換テーブルを適用したアドレス変換処理により、例えば上述のようなデータ更新が実行されて物理的なデータ書き込み位置を変更した場合であっても論理アドレスを不変とすることが可能となり、電子機器側では、更新前後において同一の論理アドレスを適用したデータ読み出しまたは書き込みが可能となる。
【００１０】
また、ＰＣ等において適用されるファイル管理システムとして、例えばＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）がある。ＦＡＴは、ハードディスク、フロッピーディスク等におけるファイル格納位置情報の管理情報として従来から利用されている。１つのデータファイルの格納位置をデータ格納領域の単位としてのクラスタの連鎖によって管理するテーブルであり、ＦＡＴはクラスタ連鎖情報を記録している。このＦＡＴは、上述したフラッシュメモリのファイル管理情報としても適用されている。
【００１１】
フラッシュメモリにおいて適用するＦＡＴにおけるデータ格納領域単位としての１クラスタは、フラッシュメモリにおいて例えば１ブロックに相当する。すなわち、１つのデータファイルがフラッシュメモリの複数ブロック（クラスタに相当）にわたって書き込まれている場合、複数ブロックの連鎖情報がＦＡＴに格納される。
【００１２】
論理−物理アドレス変換テーブルおよびＦＡＴは、フラッシュメモリの所定ブロックに書き込まれ、フラッシュメモリを利用するホスト機器、すなわちＰＣ等の電子機器が、フラッシュメモリを使用する際にホスト機器内のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に読み込んで利用する。ホスト機器のＲＡＭに読み込まれた論理−物理アドレス変換テーブルおよびＦＡＴは、例えば、フラッシュメモリに格納する音楽データや画像データの更新等に応じてホスト機器のＣＰＵの制御の下に併せて更新される。更新された管理情報は、再びフラッシュメモリの管理情報領域に書き込まれる。
【００１３】
ＰＣ等、フラッシュメモリを持つメモリカードを装着したホスト機器において、メモリカードに対するデータ書き込みまたはデータ読み出し処理シーケンスの概要はいかの通りである。アプリケーション処理プログラムの要求に伴ってＦＡＴによるファイル記憶位置管理が参照され、ＦＡＴに基づくクラスタ連鎖情報に基づくブロック連鎖情報としての論理アドレスを取得し、さらに、論理−物理アドレス変換テーブルに基づいて論理−物理アドレス変換が行われて、物理アドレスに従ってアクセス位置が決定され実際のアクセスが行われることになる。
【００１４】
上述したように、フラッシュメモリに対するデータ書き込み、読み出し、あるいは消去等の処理には、ＦＡＴおよび論理−物理アドレス変換テーブルが適用される。これらＦＡＴおよび論理−物理アドレス変換テーブル等の管理情報は、フラッシュメモリのブロックに書き込まれる。
【００１５】
上述したように、フラッシュメモリに格納するデータ更新に伴い管理情報の更新も必要となる。図２に示すフローチャートを用いて、フラッシュメモリの管理情報の更新処理手順について説明をする。ここでは、ある管理情報がフラッシュメモリ内の所定のブロックに書き込まれているとする。
【００１６】
まず、ステップＳ２１において、データ書き込み／読み出し／消去処理制御手段としてのＣＰＵが、フラッシュメモリ内の所定のブロックを検索し、ブロック内に空ページがあるかどうかを判断する。ブロック内に空ページがない場合はステップＳ２３に進み、ブロック内に空ページがある場合はステップＳ２２に進む。
【００１７】
ステップＳ２２において、ＣＰＵは、更新直前の管理情報が書き込まれているページと同一のブロックにある空ページを、更新した管理情報を書き込むための新しいページとして確保する。
【００１８】
ステップＳ２３において、ＣＰＵは、管理情報が書き込まれているページが当該ブロックの最後のページであるため、フラッシュ内の空きブロックを確保し、その先頭ページを更新した管理情報を書き込むための新しいページとして確保する。
【００１９】
ステップＳ２４，Ｓ２５において、ＣＰＵは、ステップＳ２２またはステップＳ２３で確保した新しいページに更新した管理情報を書き込む。ステップＳ２６では、ステップＳ２５が終了すると更新前の管理情報の書き込まれた管理情報を全て消去、つまりブロック単位の消去処理を実行して、空きブロックにする。以上で更新処理は終了する。
【００２０】
図２のフローチャートを用いて説明したように管理情報の更新が行われると、フラッシュメモリのブロックは図３に示すように管理情報が更新されていく。
【００２１】
管理情報が書き込まれるブロックをブロック１５１、ブロック１５２とすると、まず、ブロック１５１のページ番号０から管理情報は書き込まれ、ページ番号ｎまで書き込まれる。続いて、ブロック１５２へと移り、ブロック１５２のページ番号０から管理情報が書き込まれる。このようにして、フラッシュメモリのブロックへは、ブロック毎に順番に管理情報が更新されていく。
【００２２】
また、フラッシュメモリの管理情報の更新処理で、更新処理に失敗した場合、あるいは更新処理中に異常が発生し、新しい管理情報を正常な状態で書き込むことが出来なかった場合、ＣＰＵは、更新直前の管理情報を最新の値として扱うことになる。
【００２３】
ところで、フラッシュメモリは、ページにデータを書き込む処理においてエラーが発生した場合、そのページが属するブロック内のデータ全体にエラーが及ぶ串刺しエラーという現象を生じてしまう特性がある。
【００２４】
串刺しエラーとは、図４に示すように、ブロック内のページのあるビットにエラーが生じると、ブロック内の他の全てのページの同一ビットもエラーが生じブロック内全てのデータがダメージを被るというものである。
【００２５】
図２のフローチャートを参照して説明したフラッシュメモリ内の管理情報の更新では、ブロック内の更新前の管理情報が書き込まれているページの次の空きページに管理情報を書き込むので、更新処理に失敗しエラーが生じた場合、エラーが生じたページを有するブロック内の全ての管理情報にエラーが生じてしまう。したがって、更新処理に失敗した場合に必要となる更新直前の管理情報にもエラーが生じてしまい、管理情報を失い、更新処理はもちろん読み出し処理も行えなくなるといった問題がある。
【００２６】
さらに、従来フラッシュメモリの一つのメモリセルには１ｂｉｔの情報しか記憶できなかったが、フラッシュメモリの低コスト化、大容量化のために一つのメモリセルに２ｂｉｔ、さらには４ｂｉｔといった情報を記憶する多値化が行われた場合、上述の串刺しエラーは広範囲のビットに及ぶことになり、誤り訂正コードだけでは対処できないといった問題がある。
【００２７】
【特許文献１】
特開２０００−４７９３２号公報
【００２８】
【発明が解決しようとする課題】
本発明は上述した従来技術における問題点に鑑みてなされたものであり、管理情報の更新に伴う書き込みエラーから、管理情報を保護することを可能としたデータ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラムを提供することを目的とする。
【００２９】
本発明は、特にＦＡＴ等のファイル管理情報を複数のブロックを適用して、更新データを、順次ブロックを切り替えて書き込むことにより、エラーに対する耐性を高めたデータ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラムを提供することを目的とする。
【００３０】
【課題を解決するための手段】
本発明の第１の側面は、
データ記憶部と、該データ記憶部に対するデータ入出力制御を実行する制御部とを有するデータ記憶装置において、
前記データ記憶部は、所定容量のデータを記憶可能なページが複数設定されたブロックに分割され、ユーザデータの格納領域としてのデータ領域と、該データ領域に対するアクセスのためのアドレス情報を含む管理情報領域とを有し、
前記管理情報領域は、前記データ領域に格納されたデータファイルのアドレス連鎖情報を持つファイル管理情報を格納し、
前記制御部は、
前記ファイル管理情報の更新情報を、２つの異なるブロックを一対としたブロック組を構成する一方のブロックの構成ページに更新前ファイル管理情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後ファイル管理情報を書き込む処理を実行する構成であることを特徴とするデータ記憶装置にある。
【００３１】
さらに、本発明のデータ記憶装置の一実施態様において、前記ファイル管理情報は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）であり、前記制御部は、ＦＡＴ更新情報の書き込み処理において、前記２つの異なるブロックを一対としたブロック組を適用し、ブロック組を構成する２ブロックの構成ページに対して、２ブロックを交互に適用して更新ＦＡＴ情報を書き込む処理を実行する構成であることを特徴とする。
【００３２】
さらに、本発明のデータ記憶装置の一実施態様において、前記ファイル管理情報に対して設定される１つの論理アドレスに対応して前記ブロック組のアドレス情報としての２つの物理アドレスが設定され、前記制御部は、更新すべきファイル管理情報を指定した論理アドレスに応じて前記２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックを構成するブロック組として識別する構成であることを特徴とする。
【００３３】
さらに、本発明のデータ記憶装置の一実施態様において、前記制御部は、ユーザデータの格納領域としてのデータ領域に対するユーザデータ書き込み処理の一処理単位毎に、前記ファイル管理情報の更新情報の書き込み処理を実行する構成であることを特徴とする。
【００３４】
さらに、本発明のデータ記憶装置の一実施態様において、前記データ記憶部の管理情報領域には、さらに、前記データ領域に格納されたデータに対応して設定される論理アドレスと、前記データ領域に格納されたデータの物理的位置に対応して設定される物理アドレスとを対応付けた論理物理アドレス変換テーブルとを格納した構成であることを特徴とする。
【００３５】
さらに、本発明のデータ記憶装置の一実施態様において、前記制御部は、さらに、前記論理物理アドレス変換テーブルの更新情報を、２つの異なるブロックを一対としたブロック組を構成する一方のブロックの構成ページに更新前論理物理アドレス変換テーブル構成情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後論理物理アドレス変換テーブル構成情報を書き込む処理を実行する構成を有することを特徴とする。
【００３６】
さらに、本発明のデータ記憶装置の一実施態様において、前記データ記憶装置は、情報処理装置に着脱可能な構成を有するとともに、前記情報処理装置とのデータ入出力可能なインタフェース手段を有し、前記制御部は、前記インタフェース手段を介して情報処理装置からの論理アドレスを入力し、該入力論理アドレスに従って２つの物理アドレスを取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックの組として識別する構成であることを特徴とする。
【００３７】
さらに、本発明のデータ記憶装置の一実施態様において、前記制御部は、前記ファイル管理情報の更新処理をページ単位で実行し、前記ブロック組を構成する２つのブロックの構成ページを交互にシーケンシャルに使用して更新管理情報の書き込み処理を実行し、該ブロック組を構成する２ブロックの構成ページに空きページがない場合に、更新直前のファイル管理情報が格納されたブロックと異なるブロックのデータを消去し、該消去ブロックの先頭ページに更新ファイル管理情報の書き込み処理を実行する構成であることを特徴とする。
【００３８】
さらに、本発明の第２の側面は、
データ記憶部と、該データ記憶部に対するデータ入出力制御を実行する制御部とを有するデータ記憶装置における管理情報更新方法であり、
更新管理情報に対応する論理アドレスを入力する論理アドレス入力ステップと、
前記論理アドレスに応じて２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックを構成するブロック組として識別するブロック組識別ステップと、
前記ブロック組を構成する一方のブロックの構成ページに更新前ファイル管理情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後ファイル管理情報を書き込む処理を実行する更新情報書き込みステップと、
を有することを特徴とするデータ記憶装置における管理情報更新方法にある。
【００３９】
さらに、本発明のデータ記憶装置における管理情報更新方法の一実施態様において、前記ファイル管理情報は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）であり、前記更新情報書き込みステップは、前記ブロック組を構成する２ブロックの構成ページに対して、２ブロックを交互に適用して更新ＦＡＴ情報を書き込む処理を実行することを特徴とする。
【００４０】
さらに、本発明のデータ記憶装置における管理情報更新方法の一実施態様において、ユーザデータの格納領域としてのデータ領域に対するユーザデータ書き込み処理の一処理単位毎に、前記ファイル管理情報の更新情報書き込みステップを実行することを特徴とする。
【００４１】
さらに、本発明のデータ記憶装置における管理情報更新方法の一実施態様において、前記データ記憶装置における管理情報更新方法は、さらに、前記論理アドレス入力ステップにおいて入力する論理アドレスに応じて２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新すべき論理物理アドレス変換テーブル構成情報を書き込むブロックを構成するブロック組として識別するブロック組識別ステップと、前記ブロック組を構成する一方のブロックの構成ページに更新前論理物理アドレス変換テーブル構成情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後論理物理アドレス変換テーブル構成情報を書き込む処理を実行する更新情報書き込みステップと、を実行することを特徴とする。
【００４２】
さらに、本発明のデータ記憶装置における管理情報更新方法の一実施態様において、前記更新情報書き込みステップは、前記ファイル管理情報の更新処理をページ単位で実行し、前記ブロック組を構成する２つのブロックの構成ページを交互にシーケンシャルに使用して更新管理情報の書き込み処理を実行し、該ブロック組を構成する２ブロックの構成ページに空きページがない場合に、更新直前のファイル管理情報が格納されたブロックと異なるブロックのデータを消去し、該消去ブロックの先頭ページに更新ファイル管理情報の書き込み処理を実行することを特徴とする。
【００４３】
さらに、本発明の第３の側面は、
データ記憶部と、該データ記憶部に対するデータ入出力制御を実行する制御部とを有するデータ記憶装置における管理情報更新処理を実行するコンピュータ・プログラムであり、
更新管理情報に対応する論理アドレスを入力する論理アドレス入力ステップと、
前記論理アドレスに応じて２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックを構成するブロック組として識別するブロック組識別ステップと、
前記ブロック組を構成する一方のブロックの構成ページに更新前ファイル管理情報を残し、前記ブロック組を構成する他方のブロックの構成ページに更新後ファイル管理情報を書き込む処理を実行する更新情報書き込みステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４４】
【作用】
本発明の構成によれば、フラッシュメモリのアドレス管理情報であるＦＡＴ等のファイル管理情報をメモリの管理情報領域に格納するとともに、ＦＡＴ構成データの格納ブロックとして２つのブロックからなるブロック組を設定し、ブロック組を構成する２つのブロックの各ページを交互に適用して更新ＦＡＴ情報を書き込み、ブロック組を構成する１つのブロックに更新直前のＦＡＴ情報を保持したまま、更新情報をもう一方のブロックに書き込む構成としたので、更新管理情報の書き込みエラー発生時にも更新直前のＦＡＴ情報が記憶保持され、更新直前のＦＡＴ情報を利用した処理、たとえば更新直前のＦＡＴ情報を利用したデータアクセス、および更新直前のＦＡＴ情報を利用したＦＡＴ情報の管理情報の再更新処理等が可能となる。
【００４５】
さらに、本発明の構成によれば、ＦＡＴに対応する１つの論理アドレスに対応して２つの異なる物理アドレスを設定して論理アドレスに基づいて更新データを書き込むブロック組を構成する２つのブロックを即座に抽出可能とするとともに、直前の更新前データが書き込まれたブロックおよびページに基づいて更新データを書き込むブロックおよびページを決定する構成としたので、更新管理情報の書き込みブロックおよびページの決定を高速に実行することが可能となる。
【００４６】
また、本発明の構成によれば、ＦＡＴ等のファイル管理情報の更新処理において、従来のデータ再格納シーケンスとして実行する消去済みブロックの取得、更新前データの格納されていたブロックから消去済みブロックに対するページデータのコピー等の処理を実行する必要がなくなるので、管理情報の更新処理時間が短縮される。従って、データ更新後にユーザによるホストからのメモリカードの抜き取り等が行われた場合であっても、ＦＡＴ、論理物理アドレス変換テーブルを含む管理情報更新処理が短時間で実行されるため、管理情報の書き込み未了に基づくエラー発生の可能性が減少する。
【００４７】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記憶媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００４８】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づく、より詳細な説明によって明らかになるであろう。
【００４９】
【発明の実施の形態】
以下、図面を参照しながら、本発明のデータ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラムの詳細について説明する。
【００５０】
［データ記憶装置（メモリカード）の構成］
まず、図５を参照してフラッシュメモリとコントロールＩＣとを備えたデータ記憶装置としてのメモリカードの構成について説明をする。
【００５１】
データ記憶装置２００は、フラッシュメモリ（ＦＭＥＭ）２３０と、コントロールＩＣ（Ｃｏｎｔｒｏｌ  ＩＣ）２１０とを備え、ＰＣ、データ記録再生機、ビデオカメラ等の様々なホスト機器（ＨＯＳＴ）３００に装着して利用される。１つのホスト機器に対して固定的に装着して利用する構成も可能であるが、ホスト機器に対して着脱可能な構成であり、必要に応じて様々なホスト機器に装着して利用可能である。
【００５２】
データ記憶装置２００は、電源端子となるＶＣＣとグランドとなるＶＳＳ端子を有し、データ記憶装置２００を装着するホスト機器３００からこれらの端子を介して電源が供給される。検出端子（ＩＮＳ）は、ホスト機器３００がデータ記憶装置２００の着脱状態を検出するために使用される。データ記憶装置２００内部では、この検出端子（ＩＮＳ）は接地されており、ホスト機器３００によりプルアップ抵抗を介して電源に接続される。したがって、検出端子（ＩＮＳ）は、データ記憶装置２００の装着状態では「Ｌ」レベルになり、非装着時には「Ｈ」レベルになる。
【００５３】
フラッシュメモリ（ＦＭＥＭ）２３０はデータの消去処理単位としてのブロック、および、データの読み出し、書き込み単位としてのページによって構成され、ページは例えば、５１２Ｂｙｔｅのデータ領域と、パリティーデータを書き込む１６Ｂｙｔｅの拡張領域（Ｅｘｔｒａ領域）とを備えている。フラッシュメモリの詳細構成については図６以下を参照して後段で説明する。なお、データ領域と拡張領域のデータ容量は様々な設定が可能であり、例えば２０４８Ｂｙｔｅのデータ領域と、６４Ｂｙｔｅの拡張領域（Ｅｘｔｒａ領域）との構成をもつデータ記憶装置２００などがある。
【００５４】
コントロールＩＣ（Ｃｏｎｔｒｏｌ  ＩＣ）２１０内のＩ／Ｆ２１６は、データ記憶装置２００を装着したホスト機器３００とのデータ転送制御を実行し、主にシリアル／パラレル変換処理を実行する。フラッシュメモリ２３０へのデータ書き込み時には、双方向データ信号（ＳＤＩＯ０〜３）路を通じ、転送クロック（ＳＣＬＫ）に同期して、ホスト機器３００から送られてきたシリアルデータを、複数ビット（例えば８ビット，１６ビット）のパラレルデータに変換する。制御用コマンドもデータも、ここでシリアルデータからパラレルデータに変換される。
シリアルデータはＳＤＩＯ０のみを使用した場合は１ビットデータであり、ＳＤＩＯ０〜３までを使用した場合は４ビットデータである。
【００５５】
一方、フラッシュメモリ２３０からのデータ読み出し処理は以下のように行われる。まず、データ記憶装置２００内部のフラッシュメモリ２３０に記憶されているデータが複数ビットのパラレルデータとして読み出され、Ｉ／Ｆ２１６においてシリアルデータに変換され、双方向データ信号（ＳＤＩＯ０〜３）路を通じて、ホスト機器３００に出力される。
【００５６】
レジスタ２１１は、ステータスレジスタ、パラメータレジスタ等からなり、双方向データ信号（ＳＤＩＯ０〜３）路を介してデータが入／出力される。双方向データ信号（ＳＤＩＯ０〜３）路は、制御データや実データそのものを書き込み、読み出し用として適用される。双方向データ信号（ＳＤＩＯ０〜３）路を介して入出力される制御データによりデータ記憶装置２００内部のメモリのアクセス制御が行なわれる。
【００５７】
ページバッファ２１２は、Ｉ／Ｆ２１６とフラッシュメモリ２３０間の転送データの一時的なデータ記憶領域である。アトリビュートＲＯＭ２１３は、コントロールＩＣ２１０の物理的情報を記憶する。ＯＳＣコントローラ（ＯＳＣ  Ｃｏｎｔ）２１５は、コントロールＩＣ２１０のクロックを発生しコントロールＩＣ２１０の動作タイミングを制御する。
【００５８】
フラッシュメモリ２３０とのデータ転送制御を実行する制御部２１４は、ＣＰＵ等によって構成される制御部としてのシーケンサ２２１と、転送データに対して付加したり、転送データの誤り検出処理を行なうエラー訂正コード発生部（ＥＣＣ）２２２と、フラッシュメモリ２３０に対するインタフェースとしてのフラッシュインタフェース（ＦｌａｓｈＩ／Ｆ）２２３とを有する。エラー訂正コード発生部（ＥＣＣ）２２２において、エラー訂正を行うことにより、フラッシュメモリ２３０格納データの信頼性が確保される。
【００５９】
データ記憶装置２００には、電源（ＶＣＣ）端子と、ホスト機器３００との接続のためのデータ入／出力（ＳＤＩＯ０〜３）端子と、バスステート（ＢＳ）の入力端子と、シリアルクロック（ＳＣＬＫ）の入力端子と、装着検出（ＩＮＳ）用の検出端子と、接地（ＶＳＳ）端子とが構成される。
【００６０】
データ入／出力（ＳＤＩＯ０〜３）端子により、双方向データ線を介して、データが入／出力される。バスステート（ＢＳ）の入力端子には、バスステート（ＢＳ）が供給される。バスステート（ＢＳ）は、データ入／出力（ＳＤＩＯ０〜３）端子を介した双方向データ信号線上のデータステータスを示す。例えば、データアクセスを行う前の制御データやデータそのものにより、そのステートを変化させることにより、データ記憶装置２００の処理が実行される。
【００６１】
シリアルクロック（ＳＣＬＫ）の入力端子には、データ転送用クロックが供給される。データ転送用クロックは、制御データや実データ転送制御に適用するクロックである。転送用クロックは、バスステート（ＢＳ）信号により制御される。
【００６２】
次に、図６を参照して、図５に示すデータ記憶装置２００内のフラッシュメモリ（ＦＭＥＭ）２３０の詳細構成について説明する。
【００６３】
前述したように、フラッシュメモリには、データの消去処理単位としてのブロック、および、データの読み出し、書き込み単位としてのページが規定されている。フラッシュメモリは、複数のブロックを有し、１ブロックは複数ページによって構成される。１ページは、例えば５１２Ｂｙｔｅのデータ格納領域１２１と、パリティーデータなどを書き込む１６Ｂｙｔｅの拡張領域（Ｅｘｔｒａ領域）１２２とから構成される。なお、データ格納領域、拡張領域のデータサイズはフラッシュメモリに応じて様々であり、２０４８Ｂｙｔｅのデータ格納領域と、６４Ｂｙｔｅの拡張領域（Ｅｘｔｒａ領域）を持つ構成などのデータサイズの設定が可能である。
【００６４】
図６（ａ）は、フラッシュメモリのデータ構造を示している。フラッシュメモリとしての記憶領域は、セグメントと呼ばれる固定長のデータ単位が大区分として設定される。このセグメントは、例えば１セグメントあたり４ＭＢ（メガバイト）あるいは８ＭＢ、１６ＭＢ等に規定されるサイズであり、１つのフラッシュメモリ内におけるセグメント数は、そのフラッシュメモリの容量に依存して異なってくる。図では、０〜７の８セグメントを持つフラッシュメモリの構成例を示してある。
【００６５】
ローダ（Ｌｏａｄｅｒ）領域は、起動時のロードデータを格納した領域である。コントロールＩＣ２１０は電源オン直後にローダ領域から、起動に必要な情報を読み込む。管理情報領域は、論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報、を格納するブロックと代替ブロックとして未使用なブロックからなる領域である。データ領域は、画像、音声、テキスト、プログラム等のユーザデータの格納されたブロックからなる領域とされる。データ領域には、これらの実データおよび、索引情報としての先頭アドレス情報を含むディレクトリ情報が格納されたブロックも含まれる。管理情報を適用した処理については、後述する。
【００６６】
図６（ｂ）に示すように、各セグメント（ｂ−１）は、ブロックと呼ばれる固定長のデータ単位に区切られる。１セグメントを５１２ブロックとした場合、図６（ｂ−２）に示すブロック数ｎは、ｎ＝５１１とされる。但し、フラッシュメモリでは、書き込み不可なブロックが存在することや、書き込み中にエラーを発生する後発不良ブロックが存在するため、データ書き込みが有効とされる実質的なブロック数を対象とすれば、有効ブロック数ｎは５１１よりも少なくなる。
【００６７】
１ブロックは、図６（ｂ−３）に示すように、ページ０〜ｍにより分割される。１ページは、図６（ｂ−４）に示すように、例えば５１２バイトのデータ部と１６バイトの拡張部からなる。拡張部の構成については後述する。
【００６８】
ブロック内のページ構造は、ローダ領域、管理情報領域、データ領域すべてにおいて共通であり、図６（ｂ−４）に示すように、データ部と拡張部とからなる。フラッシュメモリでは、データの読み出し、および書き込み処理はページ単位で行われ、データの消去処理はブロック単位で行われる。さらに、データの書き込みは、消去済みのページに対してしか行われない。従って、実際のデータの書き換えや書き込みは、原則としてブロック単位を対象として行われることになる。
【００６９】
ただし、本発明の構成においては、管理情報領域の格納情報、たとえば論理物理アドレス変換テーブルおよびＦＡＴ等のファイル管理情報についてのデータ書き込み処理は、特殊な書き込み処理方式に従って実行する。これらの処理については後述する。
【００７０】
ページの構成について、図７を参照して説明する。ページは、図７に示すようにデータ部と拡張部からなり、データ部には、ローダ領域、管理情報領域、データ領域の各領域毎、各領域に対応したデータが格納される。例えばローダ領域の構成ブロックに属するページであれば、コントロールＩＣが起動するために必要な情報等が格納され、管理情報領域の構成ブロックに属するページであれば、論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報等の各情報が格納される。データ領域の構成ブロックに属するページであれば、ユーザデータとしての画像、音声、テキスト、プログラム等様々なデータファイルおよびディレクトリ情報が格納される。
【００７１】
ページの拡張領域には、例えばエラー訂正コード（ＥＣＣ）および属性情報が格納される。属性情報は、図に示すように論理ブロック管理情報と、物理ブロック管理情報によって構成される。
【００７２】
図８に管理情報領域の詳細構成を示す。管理情報領域には、ホストの指定する論理アドレスから物理アドレスへの変換処理に適用するテーブルとしての論理物理アドレス変換テーブルを格納した論理物理アドレス変換テーブルブロック、フラッシュメモリに格納するデータの連鎖情報としてのファイル管理情報である例えばＦＡＴを格納するファイル管理情報ブロック、後発不良ブロックが発生した場合の代替用ブロックあるいは更新処理時新しいブロックを取得するための空きブロックとしての代替ブロックが格納される。
【００７３】
本発明の構成においては、論理物理アドレス変換テーブルおよびファイル管理情報（ＦＡＴ）について複数ブロックを利用して順次、更新された情報を書き込む構成を有する。具体的には、１ページ分の論理物理アドレス変換テーブルまたはＦＡＴデータについて、それぞれ２つの異なるブロックをブロック組として割り当て、ブロック組を構成する２つのブロックのページに交互に更新データを書き込む処理を実行する。この更新処理により、更新直前の論理物理アドレス変換テーブルまたはＦＡＴも消去されることなく維持され、万が一、更新後の論理物理アドレス変換テーブルまたはＦＡＴが消失した場合であっても更新直前の情報の利用が可能となり、更新直前の管理情報を利用したデータアクセス、および更新直前の管理情報を利用した管理情報の再交信処理等が可能となる。
【００７４】
なお、ファイル管理情報としては従来からハードディスクのファイル管理情報として適用されるＦＡＴを例として以下、説明するが、本発明において適用するファイル管理情報はＦＡＴに限定されるものではなく、その他のファイル管理情報、例えばＮＴＦＳ、ＨＦＳ等を用いた構成においても適用可能である。
【００７５】
次に、図９を参照してフラッシュメモリの管理情報領域に格納される各情報ブロックにおける属性情報を構成する論理ブロック管理情報（図７参照）の構成および格納情報について説明する。
【００７６】
前述したように、フラッシュメモリの管理情報領域には、論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報、代替ブロックが格納される。図９は、これらの各ブロックを構成するページに設定される属性情報中の論理ブロック管理情報の構成および格納情報について説明する図である。
【００７７】
論理ブロック管理情報のデータ構成は、ブロックタイプ毎に異なる構成となり、ブロックタイプは、論理ブロック管理情報として保持している。例としては、ブロックタイプを２Ｂｉｔで表現するとすれば、論理物理アドレス変換テーブルは［００］、ＦＡＴ等のファイル管理情報は［０１］、代替ブロックは［１１］が設定される。
【００７８】
論理物理アドレス変換テーブルブロックは、データ部には、論理アドレスを物理アドレスに変換するための情報が格納され、論理ブロック管理情報には、データ部に格納された論理物理アドレス変換テーブルがどのセグメントに対応するかを示すブロックナンバーが格納される。論理アドレスは物理ブロックに対して割り当てられる値である。なお、論理物理アドレス変換テーブルは各セグメント毎に設定される。さらに、データ部に格納された論理物理アドレス変換テーブルが更新処理中であるか否かを示すアップデートフラグ、更新時に＋１の加算処理がなされる版情報としてのリビジョンデータが論理ブロック管理情報に格納される。ファイル管理情報は、セクタと呼ぶ５１２バイトを基本単位として、さらにクラスタと呼ぶｎ個のセクタからなる５１２×ｎバイトを定義し、クラスタ単位でデータの配置情報を管理する。
【００７９】
論理アドレスはセクタアドレスをさしており、アドレス変換する際にはセクタアドレスの下位ビットは物理ブロック内のページを指す値として使用する。例えば、ブロックあたりのページ数が３２ページの場合は、下位５ビットがページアドレスとなる。ここではページアドレスは物理的なブロック内のページと一意である場合について説明するが、論理アドレスの単位をページにすることも可能である。
【００８０】
ファイル管理情報としてのＦＡＴを格納するファイル管理情報ブロックは、データ部にファイル管理情報としてのＦＡＴが格納される。すべてのＦＡＴを格納するためには、複数のファイル管理情報ブロックが必要になるため、論理ブロック管理情報にはデータ部に格納されたＦＡＴの論理アドレスに対応したブロックナンバーと、ＦＡＴの更新時に＋１の加算処理がなされる版情報としてのリビジョンデータが格納される。
【００８１】
代替ブロックは、後発不良ブロックが発生した場合の代替用ブロックであり、論理アドレスの割り当てられていない、消去済みの物理ブロックである。
【００８２】
次に、図１０を参照してフラッシュメモリの管理情報領域に格納される各情報ブロックにおける属性情報を構成する物理ブロック管理情報（図７参照）の構成および格納情報について説明する。
【００８３】
物理ブロック管理情報は、フラッシュメモリの管理情報領域に格納される論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報、代替ブロックにおいて共通の構成であり、図に示すように、不良ブロックフラグ、消去フラグを有し、不良ブロックフラグには、ブロックが正常の読み書き可能なブロックであるかを示す正常［１］、不良［０］のフラグが設定される。消去フラグには、ブロックの未消去［１］、消去［０］の別を示すフラグが設定される。論理アドレスが割り当てられ使用中であるブロックは、正常［１］、未消去〔１〕となり、代替ブロックで正常〔１〕、消去［１］となる。
【００８４】
［管理情報の更新処理］
次に、例えばフラッシュメモリに格納されたファイルデータの更新によって実行することが要請される管理情報の更新処理、具体的には論理物理アドレス変換テーブルおよびファイル管理情報（ＦＡＴ等）の更新処理について説明する。
【００８５】
前述したように、フラッシュメモリでは、データの読み出し、および書き込みはページ単位で行われ、データの消去はブロック単位で行われる。さらに、データの書き込みは、消去済みのページに対してしか行われない。従って、フラッシュメモリから読み出したデータを更新してフラッシュメモリに更新データを書き込む場合、更新データは、更新前のデータの書き込まれていたページに上書きするのではなく、消去済みの書き込み可能なページを抽出してその抽出した消去済みページに書き込むことになる。従って、データ書き込み位置としての物理アドレスがデータ更新に伴い頻繁に変更される。
【００８６】
このようにデータ更新がなされ、データ記録位置が変更されて物理アドレスが変更された場合でも、ホスト機器側で利用する論理アドレスを一定とすれば、ホスト側では物理アドレスの変更と無関係に更新されたデータに対して同じ論理アドレスを適用することが可能となる。この処理のため、論理物理アドレス変換テーブルの更新がデータ更新に応じて実行されることになる。
【００８７】
データ更新処理に伴う論理物理アドレス変換テーブルの更新処理について以下説明する。図１１（ａ）には、あるセグメント内から４つのブロックを抜き出して、これを模式的に示している。３つのブロックに対しては固定的に物理アドレスが付与されるおり、もう１つのブロックは代替ブロックである。この物理アドレスはメモリにおけるブロックの物理的な配列順に従って決まり、あるブロックとこれに設定された物理アドレスとの関係は不変となる。図１１（ａ）に示す４ブロックに対して、上から順に物理アドレスの値として、アドレス［０ｘ１１］、［０ｘ１２］、［０ｘ１３］［０ｘ１４］が付与されているとする。なお、０ｘは１６進データを意味する。０ｘの後の２つの数値が実際のアドレスを表現している。
【００８８】
データ更新前の論理アドレスと物理アドレスとの対応は、（ａ）に示すように、論理アドレス（０ｘ０２）に対して物理アドレス［０ｘ１１］、論理アドレス（０ｘ０３）に対して物理アドレス［０ｘ１２］、論理アドレス（０ｘ０４）に対して物理アドレス［０ｘ１４］であったとする。物理アドレス［０ｘ１３］は代替ブロックのため論理アドレスは割り当てられていない。
【００８９】
物理アドレス［０ｘ１１］と［０ｘ１２］のブロック０，ブロック１にはホストによって書き込まれたファイルデータが格納されているとする。
【００９０】
ここで、ホスト機器が、論理アドレス（０ｘ０２）によってデータ読み出しを実行すると、論理物理アドレス変換テーブルは、論理アドレス（０ｘ０２）を物理アドレス［０ｘ１１］に変換し、ブロック０のデータをホストに出力する。
【００９１】
ホストにおいて、ブロック０のデータを更新し、フラッシュメモリに格納する場合、前述したように、更新前のデータの書き込まれていたページに上書きするのではなく、消去済みの書き込み可能なページを抽出してその抽出した消去済みページに更新データを書き込むことになる。この場合、ブロック０は、更新前の値を保持しており、消去されていないので、消去済みのブロックである代替ブロック、ここではブロック２に更新データを書き込む。
【００９２】
この場合、更新データの論理アドレスを、更新前のデータに対する論理アドレス（０ｘ０２）と同一に保持するため、論理物理アドレス変換テーブルの更新が実行される。図１１（ｂ）に示すように、論理アドレス（０ｘ０２）を更新データの書き込まれたブロック２の物理アドレス［０ｘ１３］に対応付け、ブロック０の物理アドレス［０ｘ１１］はブロック２への書き込み処理の実行前あるいは終了後に消去し、新たな代替ブロックとする。この処理により、ホスト側では、更新前後とも同じ論理アドレスを用いてデータアクセスを行うことが可能となる。
【００９３】
論理アドレスは、ブロックに対して書き込まれたデータに付随するようにして割り振られるアドレスであり、この論理アドレスが、後述するＦＡＴファイルシステムが管理するアドレスである。これに対して、物理アドレスはブロックに対して固定的に付与されるアドレスである。
【００９４】
このようにブロックのスワップ処理を行うことで、同一の記憶領域（ブロック）に対して繰り返し集中的にアクセスされることが無くなり、書き換え回数の上限があるフラッシュメモリの寿命を延ばすことが可能となる。
【００９５】
データ更新に伴い、論理アドレスと物理アドレスの変換テーブルを更新することで、同一の論理アドレスを使用した処理が可能となる。なお、論理物理アドレス変換テーブルはセグメント単位で保持され、データ更新が行われた場合であっても他のセグメントに更新データが書き込まれることはない。
【００９６】
図１２にデータ更新に伴う、論理物理アドレス変換テーブルの更新例を示す。論理物理アドレス変換テーブルは、前述したようにフラッシュメモリの管理情報領域に格納され、上記のようなデータ更新が行われた場合などに併せて更新される。
【００９７】
図１１のデータ更新に対応する論理物理アドレス変換テーブルの更新例を示したのが図１２である。更新前の論理物理アドレス変換テーブルを図１２（ａ）に示し、更新後の論理物理アドレス変換テーブルを図１２（ｂ）に示している。論理物理アドレス変換テーブルは、シーケンシャルな論理アドレスに対応する物理アドレスの列として構成される。
【００９８】
更新前は、（論理アドレス）と［物理アドレス］の対応が、
（０ｘ０２）［０ｘ１１］
（０ｘ０３）［０ｘ１２］
（０ｘ０４）［０ｘ１４］
（０ｘ０５）［０ｘ１５］
となっているが、
更新前は、（論理アドレス）と［物理アドレス］の対応が、
（０ｘ０２）［０ｘ１３］
（０ｘ０３）［０ｘ１２］
（０ｘ０４）［０ｘ１４］
（０ｘ０５）［０ｘ１５］
となるように変更される。
このとき、物理アドレス［０ｘ１１］のブロックは消去され、該当する物理ブロック管理情報が更新される。
【００９９】
本発明の構成においては、これらの書き換えられた論理物理変換テーブルを２つのブロック組を使用して、各ブロックのページに対して交互に更新データを書き込む構成としている。すなわち、１ページ分の論理物理変換テーブル構成データに２つの異なるブロックを割り当てて交互に更新データを書き込む処理を実行する。この更新処理により、更新直前の論理物理変換テーブルもブロック組の一方のブロック内のページに消去されることなく保持され、万が一、更新後の論理物理変換テーブルが消失した場合であっても更新直前の論理物理変換テーブルの利用が可能となる。これらの処理については後述する。
【０１００】
上述したように、ブロックのスワップ処理が行われることで、物理アドレスと論理アドレスの対応は変化する。従って、フラッシュメモリに対するデータの書き込み及び読み出しのためのアクセスを実現するには、物理アドレスと論理アドレスとの対応が示される論理物理アドレス変換テーブルが必要となる。つまり、論理物理アドレス変換テーブルをファイル管理情報（ＦＡＴ）が参照することで、ＦＡＴが指定した論理アドレスに対応する物理アドレスが特定され、この特定された物理アドレスにより示されるブロックにアクセスすることが可能になる。次に、ＦＡＴ等のファイル管理情報の利用について図１３を参照して説明する。
【０１０１】
フラッシュメモリに格納するデータファイルは、クラスタという単位で管理される。フラッシュメモリのデータ領域上の物理セクタは、フラッシュメモリの場合の書き込み読み取り単位としてのページに相当するが、ファイル管理情報（ＦＡＴ）の管理単位としてのクラスタは複数のセクタからなる。ファイルはクラスタを単位として構成されるが、フラッシュメモリに格納するデータファイルは、複数のクラスタに渡って格納される場合が多い。ＦＡＴは、このような複数のクラスタに分散格納されたデータファイルについてのクラスタ連鎖情報を持つテーブルである。ＦＡＴのエントリは、フラッシュメモリのクラスタ、例えばブロックと１対１に対応する論理アドレスの連鎖情報を格納する。ファイルの先頭クラスタはファイル名とともにディレクトリに記録される。
【０１０２】
図１３には、フラッシュメモリのデータ領域に格納されたデータファイルの（ａ）ディレクトリ、管理情報領域に格納されるファイル管理情報としての（ｂ）ＦＡＴを示している。
【０１０３】
ＦＡＴは、データ格納領域単位としてのクラスタの連鎖情報を格納したテーブルであり、データファイルが複数のクラスタに渡って記録されている場合、ＦＡＴに従って連鎖情報を取得することで、データファイルを構成する全データのクラスタ位置を取得可能となりデータファイルを構成する全データに対するアクセスが可能となる。クラスタは、フラッシュメモリにおいて例えば１ブロックに相当する。すなわち、１つのデータファイルがフラッシュメモリの複数ブロック（クラスタに相当）にわたって書き込まれている場合、複数ブロックの連鎖情報がＦＡＴに格納される。ＦＡＴに設定される連鎖情報としてのクラスタ識別子は、論理物理アドレス変換テーブルで適用する論理アドレスに相当する。
【０１０４】
フラッシュメモリのデータ領域に格納されるディレクトリには、図１３（ａ）に示すように、例えばファイル名、拡張子、さらに、先頭のクラスタ識別子が格納される。ホストは、ディレクトリに格納された先頭クラスタ識別子に従って、ＦＡＴを参照し、１つのファイルデータの格納されたクセスタの連鎖を知ることができ、連鎖情報に従って、クラスタ識別子を順次取得する。クラスタ識別子は論理アドレスに相当する。これらの論理アドレスを前述の論理物理アドレス変換テーブルを適用して物理アドレスを取得してデータ格納位置からデータを取得する。
【０１０５】
図１３に示す（ａ）ディレクトリ中のファイル［ＡＢＣ．ｔｘｔ］は、先頭クラスタ識別子が（０ｘ０８）であり、ＦＡＴの０ｘ０８の位置には次のクラスタ識別子としての０ｘ１０が記録され、０ｘ１０の位置には０ｘ１８、０ｘ１８の位置には終了を示す０ｘＦＦが記録されている。従って、ファイル［ＡＢＣ．ｔｘｔ］は、（０ｘ０８），（０ｘ１０），（０ｘ１８）の順に記録されていることが認識される。また、ファイル［ＥＦＧ．ｊｐｇ］は、先頭クラスタ識別子が（０ｘ１９）であり、ＦＡＴの０ｘ１９の位置には次のクラスタ識別子としての０ｘ２５が記録され、順次ＦＡＴに記録されたクラスタ識別子をたどることで、ファイル［ＥＦＧ．ｊｐｇ］の格納位置を知ることができる。
【０１０６】
クラスタ識別子（クラスタアドレス）は、前述したように、論理アドレスに相当するものであり、ＦＡＴから取得したクラスタアドレスからページアドレスを除いた値を前述の論理物理アドレス変換テーブルに従って物理アドレスに変換してフラッシュメモリにおける実際の物理的データ格納位置を取得し、データアクセスを行う。
【０１０７】
ＦＡＴは、新たなデータの追加、書き換え処理等により、随時変更される。１クラスタのサイズは、例えば３２セクタの場合、１６ＫＢｙｔｅになる。従って、例えばあるデータファイルが更新されデータ量が増加すると新たなクラスタを取得することが必要となり、ＦＡＴの書き換え、すなわち更新処理が必要となる。
【０１０８】
更新されたＦＡＴは、フラッシュメモリの管理情報領域に格納される。本発明の構成においては、更新したＦＡＴを、前述の論理物理アドレス変換テーブルと同様、１ページ分のＦＡＴデータに２つの異なるブロックからなるブロック組を割り当てて、ブロック組を構成する各ブロックの構成ページを利用してブロック交互に更新データを書き込む処理を実行する。この更新処理により、更新直前のＦＡＴも消去されることなく維持され、万が一、更新後のＦＡＴが消失した場合であっても更新直前のＦＡＴの利用が可能となる。以下、これらの処理について詳述する。
【０１０９】
フラッシュメモリの管理情報領域（図６参照）に格納される論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報の更新処理について説明する。
【０１１０】
図１４は、フラッシュメモリに格納する論理物理アドレス変換テーブル、ＦＡＴの各管理情報の格納構成の概念図を示した図である。図１４に示すように、論理物理アドレス変換テーブル、ＦＡＴの各管理情報は、（ａ）フラッシュメモリの管理情報領域に格納される。
【０１１１】
（ｂ）ＦＡＴ格納テーブルに示すように、ＦＡＴの構成データの各々には、２つの異なるブロックをブロック組として割り当てられる。図に示すように、ＦＡＴ１−偶数、ＦＡＴ１−奇数が１つのブロック組であり、以下、ＦＡＴ２−偶数、ＦＡＴ２−奇数〜ＦＡＴｎ−偶数、ＦＡＴｎ−奇数まで、ＦＡＴ構成データ用に２つの異なるブロックがＦＡＴ格納ブロック組として設定される。なお、図では隣接ブロックをブロック組として示してあるが、離間したブロックをブロック組として設定してもよい。
【０１１２】
同様に、（ｃ）論理物理アドレス変換テーブルに示すように、論理物理アドレス変換テーブルの構成データの各々についても、２つの異なるブロックがブロック組として割り当てられる。図に示すように、論理物理アドレス変換テーブル１−偶数、論理物理アドレス変換テーブル１−奇数が１つのブロック組であり、以下、論理物理アドレス変換テーブル２−偶数、論理物理アドレス変換テーブル２−奇数〜論理物理アドレス変換テーブルｎ−偶数、論理物理アドレス変換テーブルｎ−奇数まで、論理物理アドレス変換テーブル構成データ用に２つの異なるブロックが論理物理アドレス変換テーブル格納ブロックとして設定される。
【０１１３】
なお、各組を構成する奇数、偶数は、ブロックを区別するために便宜的に使用しているもので、２つの異なるブロックの組であれば、ブロックＮｏが奇数同士でも偶数同士でもかまわない。
【０１１４】
ＦＡＴおよび論理物理アドレス変換テーブルの更新においては、交互に更新データを書き込む処理を実行する。例えば、ＦＡＴ１−奇数の１つのページに書き込まれたＦＡＴ構成データが更新されると、更新データは、ＦＡＴ−１偶数のページに書き込まれる。したがって更新前のデータもＦＡＴ１−奇数のページに保持される。ＦＡＴ−１偶数のページに書き込まれたＦＡＴ構成データが更新されると、更新データは、ＦＡＴ−１奇数のページに書き込まれる。論理物理アドレス変換テーブルの更新においても、偶数、奇数の各ブロックに交互に更新データの書き込みが実行される。
【０１１５】
図１５は、フラッシュメモリの管理情報領域（図６参照）に格納される論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報の更新処理手順を説明する図である。本発明の構成おいては、上述したように１ページ分の論理物理アドレス変換テーブル構成データに２つの異なるブロックをブロック組として割り当てて、ブロック組を構成するページに対してブロック交互に更新データを書き込む処理を実行する。ＦＡＴ等のファイル管理情報についても同様に、ＦＡＴデータ構成データに２つの異なるブロックをブロック組として割り当てて、ブロック組を構成するページに対してブロック交互に更新データを書き込む処理を実行する。論理物理アドレス変換テーブル、ＦＡＴの更新処理シーケンスは基本的には同様であるので、ＦＡＴの更新処理を例として図１５を参照して説明する。
【０１１６】
図１４を参照して説明したように、フラッシュメモリの管理情報領域のＦＡＴ格納ブロックは、更新情報を書き込むブロックを２つ１組としたブロック組が用意される。図に示すように（ａ）ＦＡＴ格納ブロックＰ（偶数ブロック）５０１と（ｂ）ＦＡＴ格納ブロックＱ（奇数ブロック）５０２である。
【０１１７】
さらに偶数ブロック、奇数ブロック内のページには、図１５に示すように通し番号（版番号）が０から設定される。更新されたＦＡＴ情報は、この通し番号の順に各ブロックの各ページに記録される。例えば、図１５に示すように、偶数ブロック５０１には０，２，４，６…とページ通し番号が与えられ、奇数ブロック５０２には、１，３，５，７…とページ通し番号が与えられる。更新されたＦＡＴ報は、通し番号０，１，２，３，４，５，６，７…の順番にページ内に書き込まれていくことになる。
【０１１８】
なお、偶数ブロック５０１、奇数ブロック５０２の各ページにはそれぞれ各ブロック独立のページ番号が与えられていて、上述の通し番号と対応させると通し番号０と通し番号１のページ番号は０、通し番号２と通し番号３のページ番号は１というような関係になる。
【０１１９】
なお、偶数ブロック５０１、奇数ブロック５０２の各ページに与える通し番号は、説明のために便宜的に与えるものである。したがって、ホスト機器が更新されたＦＡＴ情報を書き込む際には、直接通し番号を指定するのではなく、ブロック内の所定の基準となるページから数えてＮ番目のページに所望の管理情報を書き込むというよう指定情報に基づいて更新データの書き込みを実行する。
【０１２０】
本発明の構成においては、２つの異なるブロックを一対としたブロック組を構成する一方のブロックの構成ページに更新前の管理情報、すなわち更新前のＦＡＴ等のファイル管理情報あるいは論理物理変換テーブルを残し、ブロック組を構成する他方のブロックの構成ページに更新後の管理情報を書き込む処理を実行する。
【０１２１】
このように、本発明の構成においては、ブロック組を構成する２つのブロックの構成ページを交互にシーケンシャルに使用して更新管理情報の書き込み処理を実行する。ブロック組を構成する２ブロックの構成ページに空きページがない場合には、代替ブロックの中から新たなブロックを確保し、先頭ページに更新管理情報を書き込み後、更新直前の管理情報が格納されたブロックと異なるブロックのデータを消去する。
【０１２２】
本発明の構成においては、管理情報、すなわちＦＡＴ等のファイル管理情報あるいは論理物理変換テーブルに対して設定される１つの論理アドレスに対してブロック組を構成する２つのブロックの２つの物理アドレスが対応付けられ、データ記憶装置の制御部は、更新すべきファイル管理情報を指定した論理アドレスに応じて、２つの物理アドレス情報を取得して、該２つの物理アドレスに基づいて特定される２ブロックを更新ファイル管理情報の書き込みブロックを構成するブロック組として識別して、ブロック組を構成する２つのブロックの構成ページを交互に適用した更新情報書き込み処理を実行する。
【０１２３】
次に、図１６以下の各図を参照してホスト機器によるフラッシュメモリに対するデータ書き込み、データ読み取り処理のシーケンスについて説明する。
【０１２４】
まず、図１６を参照して、上述したフラッシュメモリを搭載したメモリカードを装着したホスト（ＰＣなど）の起動時の処理、すなわちホストがメモリカードの使用を可能とするための初期設定処理について説明する。
【０１２５】
ホストは、まずステップＳ１０１において、フラッシュメモリのローダ（Ｌｏａｄｅｒ）領域（図６参照）の情報を読み込む。フラッシュメモリのローダ（Ｌｏａｄｅｒ）領域にはコントロールＩＣが動作するための初期情報が格納されている。
【０１２６】
ステップＳ１０２、ステップＳ１０３において、フラッシュメモリの管理情報領域の各ブロックの属性情報を読み出し、ＲＯＭ上に読み出した情報に基づくエントリを管理テーブルに登録し、その後ステップＳ１０４で管理情報領域の全ブロックの属性情報の管理テーブルに対する登録が終了したことを確認してホストからのコマンド、例えばデータ読み取り、書き込み等の処理コマンドを待機する。
【０１２７】
フラッシュメモリの管理情報領域の各ブロックの属性情報に基づいて生成する管理テーブルは、フローの右に示すように、ブロックタイプ、ブロックナンバー／エントリナンバー、物理アドレスブロック１、物理アドレスブロック２の各項目を有する。
【０１２８】
図８他を参照して説明したように、フラッシュメモリの管理情報領域には、論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報、代替ブロックの各ブロックが格納されている。これらの各ブロックの属性情報（図７、図９参照）から読み出したデータに基づいて図１６に示す管理テーブルが生成される。
【０１２９】
ここでは、本発明に関連する論理物理変換テーブルおよびＦＡＴ等のファイル管理情報について説明する。図に示すように、ＦＡＴについては、ブロックタイプとしては、ＦＡＴであることを示すブロックタイプＩＤが格納される。項目［ブロックナンバー／エントリナンバー］には、図９を参照して説明したように、論理フォーマット上でのセクターアドレスから算出した論理アドレスが格納される。これは、ＦＡＴデータの格納された論理アドレスを示す。項目［物理アドレスブロック１］、［物理アドレスブロック２］には、上述した偶数ブロックと奇数ブロックの２つのブロックそれぞれの物理アドレスが格納される。
【０１３０】
項目［ブロックナンバー／エントリナンバー］に格納された論理アドレスに対応するＦＡＴデータの更新の際には、項目［物理アドレスブロック１］、［物理アドレスブロック２］のブロックを用いて、上述した偶数ブロックと奇数ブロックの各ページを交互に利用したＦＡＴ更新処理が実行される。
【０１３１】
フラッシュメモリの管理情報領域のブロックに対応する属性情報が全て読み出されてＲＡＭ上に管理テーブルが生成されると、フラッシュメモリに対するデータ書き込みあるいは読み出しが可能となる。
【０１３２】
データの読み出しおよび書き込み処理について、図１７を参照して説明する。図１７（ａ）のデータ読み出し処理の手順についてまず説明する。まず、ステップＳ２０１において、読み出しデータファイルのディレクトリを検索する。ディレクトリは、図１３を参照して説明したように、各データファイルの名称等の識別子と、先頭の論理アドレスとしてのクラスタ識別子を持つ。
【０１３３】
次に、ステップＳ２０２において、ディレクトリからデータファイルの先頭のクラスタアドレスを取得し、このクラスタアドレスに基づいて論理アドレスを論理物理アドレス変換テーブルに従って、物理アドレスに変換し、物理アドレスに基づいて特定されるフラッシュメモリのデータ格納位置からデータを取得する。論理物理アドレス変換テーブルの格納位置は、前述の管理テーブルに基づいて取得される論理物理アドレス変換テーブルの物理アドレスに従って特定可能となる。
【０１３４】
さらに、ステップＳＳ２０３において、前述したＦＡＴに基づくクラスタ連鎖情報に基づいてファイルデータを構成する連続するクラスタ識別子、すなわち次の論理アドレスを取得する。ＦＡＴの格納位置は、前述の管理テーブルに基づいて取得されるＦＡＴ格納物理アドレスによってアクセスされる。ＦＡＴに基づいて取得した連鎖クラスタ情報に基づく論理アドレスは、さらに論理物理アドレス変換テーブルに従って、物理アドレスに変換し、物理アドレスに基づいて特定されるフラッシュメモリのデータ格納位置からデータを取得する。
【０１３５】
ステップＳ２０２およびステップＳ２０３の処理をデータファイルの最終データであることがステップＳ２０４で確認されるまで繰り返し実行することで、複数のクラスタ（ブロック）に格納されたデータファイルの読み出しが完了する。
【０１３６】
次に、フラッシュメモリに対するデータ書き込み処理について、図１７（ｂ）の処理フローを参照して説明する。まず、ステップＳ３０１において、書き込む論理アドレスを決定するためのＦＡＴ、ディレクトリ検索を行う。
【０１３７】
ステップＳ３０２において、取得されたブロックの構成ページに順次、データ書き込みが実行され、ステップＳ３０３において、データ書き込みを行ったブロックに対応する物理アドレスと論理アドレスの対応関係が設定される。すなわち論理物理アドレス変換テーブルの更新処理が実行される。この論理物理アドレスの更新は先に図１５を参照して説明したように、２つの異なるブロックの構成ページを交互に利用する態様で実行される。具体的な処理手順については、図１８を参照して後段で説明する。
【０１３８】
ステップＳ３０４において、書き込みデータが終了したか否かを判定し、終了していなければ、ステップＳ３０５において、さらに論理アドレスをＦＡＴに基づいて決定し、ステップＳ３０２において決定した論理アドレスの構成ページにデータを順次書き込む。
【０１３９】
ステップＳ３０３では、管理情報の更新、すなわち、論理物理アドレス変換テーブルの更新処理、およびアドレス連鎖情報（クラスタ連鎖情報）としてのＦＡＴの更新処理を実行する。ステップＳ３０２〜Ｓ３０５を繰り返し実行し、ステップＳ３０４において書き込みデータが終了したとの判定に基づいて処理が終了する。
【０１４０】
ステップＳ３０３で実行する論理物理アドレス変換テーブルの更新処理、およびアドレス連鎖情報を示すクラスタ連鎖情報を持つＦＡＴの更新処理は、先に図１５を参照して説明したように、異なるブロックの組に対して交互にページを利用して実行する。この具体的な処理手順について図１８の処理フローを参照して説明する。図１８の処理フローでは、図１５を参照して説明したと同様、偶数ブロックと奇数ブロックを、論理物理アドレス変換テーブルあるいはＦＡＴ等のファイル管理情報を交互に書き込むブロックの組とする。
【０１４１】
管理情報の更新処理の開始に際し、制御部は、ステップＳ５０１において、フラッシュメモリで更新直前の管理情報が書き込まれているページを検索する。これは前述の管理テーブルの情報に基づいて取得する。なお、本フローにおける管理情報は、論理物理アドレス変換テーブルあるいはＦＡＴ等のファイル管理情報の両者を含む意味である。
【０１４２】
ステップＳ５０２において、更新前データの書き込みページが、ブロック組を構成するブロック中の奇数ブロックのページであるか否かを判定する。更新前データの書き込みページが、奇数ブロックのページである場合は、ステップＳ５０３に進み、奇数ブロックのページでない場合は、ステップＳ５０６に進む。更新管理情報は、先に図１５を参照して説明したように、更新直前の管理情報が書き込まれているページの次の通し番号が与えられたページ、すなわち更新前の管理情報書き込みブロックとは異なるブロックのページに書き込まれることになる。
【０１４３】
奇数ブロックのページに更新直前の管理情報が書き込まれていた場合は、更新管理情報を書き込むのは偶数ブロックとなり、ステップＳ５０３において、制御部は、更新直前の管理情報が書き込まれている奇数ブロックのページ番号を１だけインクリメントしたページ番号に対応する偶数ブロックのページ番号を、更新管理情報の書き込みページ番号として算出する。
【０１４４】
ステップＳ５０４において、偶数ブロックに、ステップＳ５０３で算出したページ番号に相当する空ページがあるかどうかの判断をし、該当する空ページがある場合はステップＳ５０９に進み、空ページがない場合は工程をステップＳ５０５に進む。
【０１４５】
ステップＳ５０４の判定処理は、更新直前の管理情報が書き込まれている奇数ブロックのページが奇数ブロックの最後のページであるかどうかを判断する工程に相当する。つまり奇数ブロックの最後のページである場合は上述のステップＳ５０４において、偶数ブロックのページ番号を１インクリメントしても該当するページは存在しない。
【０１４６】
このステップＳ５０４で偶数ページに更新管理情報を書き込む空ページが存在するかどうかを判断し、更新した管理情報を書き込むページがない場合に、ステップＳ５０５において、偶数ブロックとして代替ブロックの中から新たなブロックを取得し、旧偶数ブロックに書き込まれている古い管理情報を全て消去し、先頭ページ、つまりページ番号０（通し番号０）のページを更新した管理情報を書き込むページとして確保し確保した先頭ページに更新した管理情報、すなわち、論理物理アドレス変換テーブルの更新データあるいはＦＡＴ等のファイル管理情報の更新データの書き込み処理を実行する。
【０１４７】
ステップＳ５０４において、偶数ブロックに、ステップＳ５０３で算出したページ番号に相当する空ページがあると判定した場合は、ステップＳ５０９において、その空ページに対して更新した管理情報、すなわち、論理物理アドレス変換テーブルあるいはＦＡＴ等のファイル管理情報の書き込み処理を実行する。
【０１４８】
ステップＳ５０２において、更新前データの書き込みページが、奇数ブロックのページでないと判定した場合は、ステップＳ５０６に進み、更新直前の管理情報が書き込まれているページのページ番号が偶数ブロックの先頭のページ、つまりページ番号０（通し番号０）であるかどうかを判断する。
【０１４９】
偶数ブロックの先頭ページ、つまりページ番号０（通し番号０）に更新直前の管理情報が書き込まれている場合には、ステップＳ５０７に進み、奇数ブロックに書き込まれている全ての情報を消去して、奇数ブロックの先頭ページ、つまりページ番号０（通し番号１）を更新管理情報の書き込み領域として確保する。
【０１５０】
ステップＳ５０６において、偶数ブロックの先頭ページ以外のページに更新直前の管理情報が書き込まれていると判定した場合には、ステップＳ５０８に進み、更新直前の管理情報が書き込まれている偶数ブロックのページ番号と同じページ番号を、奇数ブロックにおける更新管理情報の書き込みページ領域として確保する。
【０１５１】
ステップＳ５０９において、制御部は、奇数ブロックに確保したページに更新した管理情報、すなわち、論理物理アドレス変換テーブルの更新データあるいはＦＡＴ等のファイル管理情報の更新データの書き込み処理を実行する。
【０１５２】
上述したように、本発明の構成においては、論理物理アドレス変換テーブルの更新あるいはＦＡＴ等のファイル管理情報の更新処理を、２つのブロックをブロック組として設定し、ブロック交互に各ページを利用して更新管理情報を書き込む構成としたので、例えば管理情報の更新処理の最中にホスト機器からのメモリカードの取りはずしを行ってしまったような場合、あるいは電源がＯＦＦになってしまった場合等、更新管理情報の書き込みエラーが発生した場合であっても、更新直前のデータは消失することなく記憶保持されることになり、少なくとも更新前の管理情報を利用した処理が可能となる。
【０１５３】
従って、更新前の管理情報を利用したデータアクセス、さらに更新直前管理情報を用いた管理情報の再更新処理を行うことが可能となり、エラーに対する耐性の高い管理情報記憶構成が実現される。
【０１５４】
論理物理アドレス変換テーブルの更新あるいはＦＡＴ等のファイル管理情報の更新処理は、フラッシュメモリのデータ領域に格納するユーザデータのデータ書き込みが実行される毎に行う処理態様と、ユーザデータのデータ書き込みが複数回、行われた後にまとめて実行する形態とがある。
【０１５５】
図１９に、フラッシュメモリのデータ領域に対するデータ書き込み毎に管理情報の更新データをフラッシュメモリの管理情報領域に書き込む処理を実行するシーケンスと、フラッシュメモリのデータ領域に対する複数回のデータ書き込みが終了後に管理情報の更新データをまとめてフラッシュメモリの管理情報領域に書き込む処理を実行するシーケンスとをそれぞれ（ａ）、（ｂ）のフローとして示した。
【０１５６】
（ａ）のように、ステップＳ７１１のデータ書き込みに対して、ステップＳ７１２で、管理情報、すなわち論理物理アドレス変換テーブルの更新データあるいはＦＡＴ等のファイル管理情報の更新データを書き込み、ステップＳ７１３でデータ書き込み、ステップＳ７１４で管理情報の更新データ書き込み、以下同様にデータ書き込みと管理情報書き込みを繰り返して実行した場合、例えばステップＳ７１３でのデータ書き込みの後、これらの書き込みデータに対応する更新管理情報の書き込み（Ｓ７１４）が完了する以前にメモリカードがホストから抜かれるなど、メモリカードに対する電源供給が停止してしまった場合には、ステップＳ７１３での書き込みデータのみのアドレス情報が管理情報領域のＦＡＴ、論理物理アドレス変換テーブルに書き込まれないため、アクセスが不能となる。
【０１５７】
一方、（ｂ）には、データ書き込み処理４回に１回の比率で管理情報の更新処理を実行するシーケンスを示している。ステップＳ７２４〜Ｓ７２７の４回のデータ書き込みに対して、ステップＳ７２８で、管理情報、すなわち論理物理アドレス変換テーブルの更新データあるいはＦＡＴ等のファイル管理情報の更新データを書き込む。この場合、例えばステップＳ７２７でのデータ書き込みの後、ステップＳ７２４〜Ｓ７２７の４回の書き込みデータに対応する更新管理情報の書き込み（Ｓ７２８）が完了する以前にメモリカードがホストから抜かれるなど、メモリカードに対する電源供給が停止してしまった場合には、ステップＳ７２４〜Ｓ７２７の４回の書き込みデータのみのアドレスが管理情報領域のＦＡＴ、論理物理アドレス変換テーブルに書き込まれないため、アクセスが不能となる。
【０１５８】
このように、管理情報の更新は、図１９（ａ）に示すようにユーザデータの書き込み毎に実行するほうが更新管理情報に基づくアクセスが不能となるデータ量が減少することになり好ましい。
【０１５９】
さらに、図２０を参照して上述した本発明の管理情報更新処理、すなわち、論理物理アドレス変換テーブルおよびＦＡＴ等のファイル管理情報を２つの異なるブロックを一対にしてブロック交互にページを利用して更新する処理のシーケンスについて説明する。
【０１６０】
図２０は、管理情報の更新処理シーケンスを示すものであり、例えばホストがフラッシュメモリのデータ領域からをユーザデータを読み出してデータ更新をして、フラッシュメモリに再書き込みを実行した場合に行われる論理物理アドレス変換テーブルあるいはＦＡＴ等のファイル管理情報の更新処理シーケンスを示している。
【０１６１】
図２０を参照して管理情報更新シーケンスを説明する。まず、ステップＳ７０１において、更新すべき管理情報に対応する論理アドレスが入力される。この論理アドレスは前述の管理テーブル（図１６参照）に基づいて取得される。
【０１６２】
ステップＳ７０２において、管理テーブルに基づいて更新管理情報を書き込むべきブロックを取得する。本発明の構成においては、前述したように、管理情報領域に格納された管理情報、すなわち論理物理アドレス変換テーブルおよびＦＡＴ等のファイル管理情報データは、２つのブロック（偶数ブロック、奇数ブロック）の構成ページを交互に利用して更新データの書き込み処理を実行する。従って、１つの論理アドレスに対して２つの物理ブロックが対応付けされている。
【０１６３】
ステップＳ７０３において、更新管理情報、すなわち更新された論理物理アドレス変換テーブルまたはＦＡＴ等のファイル管理情報の書き込みブロックおよびページを決定する。この決定処理は、先に図１８を参照して説明した手順に従って実行される。
【０１６４】
書き込みブロックおよびページが決定すると、ステップＳ７０４において、ホストからの更新情報としての更新された論理物理アドレス変換テーブルまたはＦＡＴ等のファイル管理情報の書き込み処理が実行され、管理情報更新が終了する。
【０１６５】
図に示す例では、ブロックＢに更新直前の管理情報がそのまま残り、ブロックＣに更新された管理情報が記録されることになる。このように、本発明の構成においては、更新前の管理情報、すなわち、論理物理アドレス変換テーブル、ＦＡＴ等のファイル管理情報を消去することなく、維持することになり、前述した更新処理におけるエラー発生時に更新前のデータが保護されるという効果があるばかりでなく、更新処理において、新たな消去済みブロックの抽出処理や、更新前データ格納ブロックの更新不要ページのコピー処理等が不要となり、管理情報更新処理における処理時間の短縮が図られる。
【０１６６】
前述したように、フラッシュメモリにおけるデータの再書き込みは、通常、消去済みブロックに対して実行されることになり、消去済みブロックの確保処理、更新前データの書き込みブロックの新規書き込みブロックに対するデータコピー処理等が毎更新ごとに必要となっていた。本発明においては、管理情報の書き込みブロックとして予め２つのブロックが割り当てられており、更新されたページのみをページ単位で順次異なるブロックに書き込む処理を実行するのみで管理情報更新が可能となり、大幅な処理時間の短縮が可能となる。消去済みのブロックの確保処理は、割り当てられたページを全て使用した場合にのみ発生するため、処理速度への影響は小さい。したがって、データ更新後にユーザによるホストからのメモリカードの抜き取り等が行われた場合であっても、ＦＡＴ、論理物理アドレス変換テーブルを含む管理情報更新処理が短時間で実行されるため、管理情報の書き込み未了に基づくエラー発生の可能性が減少する。
【０１６７】
例えば、
１ページのデータ読込み時間：Ｔｒ
１ページのデータ書き込み時間：Ｔｗ
１ブロック消去時間：Ｔｅ
１ブロックのページ数：Ｐｎ
としたとき、
従来の処理方法、すなわち、消去ブロックに更新前のデータが格納されていた旧ブロックのデータをコピーして、さらに更新ページの書き込みを行うと、処理時間は、
Ｔｒ×（Ｐｎ−１）＋Ｔｗ×Ｐｎ＋Ｔｅ
となる。
上記式において、Ｔｒ×（Ｐｎ−１）は、更新不要ページ（ページ数：Ｐｎ−１）のコピー処理に必要な旧ブロックのページ読み取り時間を示し、Ｔｗ×Ｐｎは、新規ブロックに対する更新ページ＋コピーページ（ページ数：Ｐｎ）の書き込み時間、Ｔｅはブロックの消去時間を示す。
【０１６８】
一方、本発明の構成、すなわちブロック組を利用した更新情報の書き込み処理の所要時間は、
最小で、１ページの書き込み時間のみ、すなわち、
Ｔｗであり、
最大、すなわちブロック組の空ページがなくなった場合でも、
Ｔｗ＋Ｔｅに過ぎない。
このように、本発明の構成、すなわちブロック組を利用した更新情報の書き込み処理の所要時間は、従来の処理時間に比較して大幅に短縮される。従って、データ更新後にユーザによるホストからのメモリカードの抜き取り等が行われた場合であっても、管理情報更新処理が短時間で実行され、管理情報の書き込み未了に基づくエラー発生の可能性が減少する。
【０１６９】
［ホスト機器の構成］
最後にフラッシュメモリを利用するホスト機器、すなわち情報処理装置の構成例としてＰＣのハード構成例について図２１を参照して説明する。
【０１７０】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７０１は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）７０２、またはＨＤＤ７０４等に記憶されているプログラムに従って、各種の処理を実行する。ＲＡＭ７０３には、ＣＰＵ７０１が実行するプログラムやデータが適宜記憶される。ＣＰＵ７０１、ＲＯＭ７０２、およびＲＡＭ７０３、ＨＤＤ７０４は、バス７０５を介して相互に接続されている。
【０１７１】
バス７０５には、入出力インタフェース７０６が接続されており、入出力インタフェース７０６には、例えば、ユーザにより操作されるキーボード、スイッチ、ボタン、あるいはマウス等により構成される入力部７０７、ユーザに各種の情報を提示するＬＣＤ、ＣＲＴ、スピーカ等により構成される出力部７０８が接続される。さらに、データ送受信手段として機能する通信部７０９、さらに、上述したフラッシュメモリを持つメモリカード７１１を装着可能で、メモリカード７１１からのデータ読み出しあるいは書き込み用インタフェースとしてのフラッシュメモリＩ／Ｆ７１０が接続される。
【０１７２】
図２１に示す構成は、フラッシュメモリを利用する情報処理装置の一例としてのパーソナルコンピュータ（ＰＣ）の例であるが、フラッシュメモリを利用する情報処理装置としては、ＰＣに限らず、ビデオカメラ、携帯電話、ＰＤＡ等の携帯通信端末、その他、再生装置、ディスプレイ等の様々な電子機器がある。従って、それぞれの機器固有のハードウェア構成を持つことが可能であり、そのハードウェアに従った処理を実行する。
【０１７３】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１７４】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１７５】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＭＯ（Ｍａｇｎｅｔｏ  ｏｐｔｉｃａｌ）ディスク，ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０１７６】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１７７】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【０１７８】
【発明の効果】
以上、説明したように、本発明の構成によれば、フラッシュメモリのアドレス管理情報であるＦＡＴ等のファイル管理情報をメモリの管理情報領域に格納するとともに、ＦＡＴ構成データの格納ブロックとして２つのブロックからなるブロック組を設定し、ブロック組を構成する２つのブロックの各ページを交互に適用して更新ＦＡＴ情報を書き込み、ブロック組を構成する１つのブロックに更新直前のＦＡＴ情報を保持したまま、更新情報をもう一方のブロックに書き込む構成としたので、更新管理情報の書き込みエラー発生時にも更新直前のＦＡＴ情報が記憶保持され、更新直前のＦＡＴ情報を利用した処理、たとえば更新直前のＦＡＴ情報を利用したデータアクセス、および更新直前のＦＡＴ情報を利用したＦＡＴ情報の管理情報の再更新処理等が可能となる。
【０１７９】
さらに、本発明の構成によれば、ＦＡＴに対応する１つの論理アドレスに対応して２つの異なる物理アドレスを設定して論理アドレスに基づいて更新データを書き込むブロック組を構成する２つのブロックを即座に抽出可能とするとともに、直前の更新前データが書き込まれたブロックおよびページに基づいて更新データを書き込むブロックおよびページを決定する構成としたので、更新管理情報の書き込みブロックおよびページの決定を高速に実行することが可能となる。
【０１８０】
また、本発明の構成によれば、ＦＡＴ等のファイル管理情報の更新処理において、従来のデータ再格納シーケンスとして実行する消去済みブロックの取得、更新前データの格納されていたブロックから消去済みブロックに対するページデータのコピー等の処理を実行する必要がなくなるので、管理情報の更新処理時間が短縮される。従って、データ更新後にユーザによるホストからのメモリカードの抜き取り等が行われた場合であっても、ＦＡＴ、論理物理アドレス変換テーブルを含む管理情報更新処理が短時間で実行されるため、管理情報の書き込み未了に基づくエラー発生の可能性が減少する。
【図面の簡単な説明】
【図１】フラッシュメモリにおけるブロック、ページ構成を説明する図である。
【図２】フラッシュメモリにおけるデータ書き込み処理を説明するフロー図である。
【図３】フラッシュメモリのメモリ構成を説明する図である。
【図４】フラッシュメモリにおけるエラーの発生について説明するための図である。
【図５】本発明のメモリカードの構成を説明するブロック図である。
【図６】本発明のフラッシュメモリのデータ格納構成を説明する図である。
【図７】本発明のフラッシュメモリのページ構成を説明する図である。
【図８】本発明のフラッシュメモリの管理情報領域の格納情報について説明する図である。
【図９】本発明のフラッシュメモリの管理情報領域の格納情報の属性情報としての論理ブロック管理情報について説明する図である。
【図１０】本発明のフラッシュメモリの管理情報領域の格納情報の属性情報としての物理ブロック管理情報について説明する図である。
【図１１】フラッシュメモリにおける論理物理アドレス変換テーブルの更新処理について説明する図である。
【図１２】フラッシュメモリにおける論理物理アドレス変換テーブルの更新処理について説明する図である。
【図１３】フラッシュメモリにおけるＦＡＴの更新処理について説明する図である。
【図１４】本発明のフラッシュメモリにおける論理物理アドレス変換テーブルおよびＦＡＴの格納構成について説明する図である。
【図１５】本発明のフラッシュメモリにおける論理物理アドレス変換テーブルまたはＦＡＴの格納ブロック構成について説明する図である。
【図１６】本発明のフラッシュメモリを装着したホスト機器における初期設定処理および管理テーブルについて説明する図である。
【図１７】本発明のフラッシュメモリにおけるデータ読み取りおよび書き込み処理について説明するフロー図である。
【図１８】本発明のフラッシュメモリにおける論理物理アドレス変換テーブルおよびＦＡＴ等の管理情報更新処理について説明するフロー図である。
【図１９】本発明のフラッシュメモリにおける論理物理アドレス変換テーブルおよびＦＡＴ等の管理情報更新処理タイミングについて説明するフロー図である。
【図２０】本発明のフラッシュメモリにおける論理物理アドレス変換テーブルおよびＦＡＴ等の管理情報更新処理手順について説明する図である。
【図２１】フラッシュメモリを装着し、データの読み取り書き込みを実行する情報処理装置としてのＰＣのハードウェア構成例を示すブロック図である。
【符号の説明】
１１０  ブロック
１２０  ページ
１２１  データ格納領域
１２２  拡張領域（Ｅｘｔｒａ領域）
１５１，１５２  ブロック
２００  データ記憶装置
２１０  コントロールＩＣ
２１１  レジスタ
２１２  ページバッファ
２１３  アトリビュートＲＯＭ
２１４  制御部
２１５  ＯＳＣコントローラ
２２１  制御部
２２１  シーケンサ
２２２  エラー検出コード発生部
２２３  フラッシュインタフェース
２３０  フラッシュメモリ
３００  ホスト機器
５０１  ＦＡＴ格納ブロックＰ（偶数ブロック）
５０２  ＦＡＴ格納ブロックＱ（奇数ブロック）
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  ＨＤＤ
２０５  バス
２０６  入出力インタフェース
２０７  入力部
２０８  出力部
２０９  通信部
２１０  フラッシュメモリＩ／Ｆ
２１１  メモリカード
【図１】
2004280752.tif 000003
【図２】
2004280752.tif 000004
【図３】
2004280752.tif 000005
【図４】
2004280752.tif 000006
【図５】
2004280752.tif 000007
【図６】
2004280752.tif 000008
【図７】
2004280752.tif 000009
【図８】
2004280752.tif 000010
【図９】
2004280752.tif 000011
【図１０】
2004280752.tif 000012
【図１１】
2004280752.tif 000013
【図１２】
2004280752.tif 000014
【図１３】
2004280752.tif 000015
【図１４】
2004280752.tif 000016
【図１５】
2004280752.tif 000017
【図１６】
2004280752.tif 000018
【図１７】
2004280752.tif 000019
【図１８】
2004280752.tif 000020
【図１９】
2004280752.tif 000021
【図２０】
2004280752.tif 000022
【図２１】
2004280752.tif 000023