(57)【要約】【課題】  ブロックサイズよりも小さなクラスタサイズでフォーマットされた半導体記録メディアにおいて、フラグメンテーション化が進んだ場合の書き込み速度を向上させる。【解決手段】  クラスタ情報取得手段１０２は、装着された半導体記録メディア１１０のブロックサイズ情報とボリューム管理情報より、書き込み対象となるクラスタを含む同一ブロック内の別の空きクラスタの存否を判断し、空きクラスタが存在すれば、制御手段１０５は、対象となるブロック内の全データをデータ格納手段１０４に読み込み、以降のデータ書き込みをデータ格納手段１０４上の空きクラスタ領域に対して行い、データ格納手段１０４の空きクラスタ領域が無くなった時点で、データ格納手段１０４のデータを半導体記録メディア１１０に書き戻す。【選択図】  図１
2006338437.tif 000002
【特許請求の範囲】
【請求項１】
最小消去単位であるブロックを複数含み、かつ前記ブロックを書き込み単位として領域管理が行われる半導体記録メディアに、アクセス装置を用いて、ファイルシステムの領域管理単位であるクラスタ単位でデータを書き込む半導体記録メディアへのデータ記録方法であって、
前記クラスタのサイズが前記ブロックのサイズより小さく、かつ書き込み対象となる空きクラスタを含む前記ブロック内に別の空クラスタが存在する場合、前記半導体記録メディアから前記ブロック全体または一部のデータを前記アクセス装置のデータ格納手段に読み込み、
以降、前記データ格納手段上で前記空きクラスタへのデータ書き込みを行い、
前記ブロックに含まれる全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段に含まれるデータを前記半導体記録メディアに書き戻すことを特徴とする半導体記録メディアへのデータ記録方法。
【請求項２】
書き込み対象となる空きクラスタが２つのブロックに跨っており、かつ前記書き込み対象クラスタの後半の領域を含むブロック内に別の空きクラスタが存在する場合、最初のブロックに含まれる前記書き込み対象クラスタの前半のデータを直接前記半導体記録メディアに書き込んだ後、前記書き込み対象クラスタの後半の領域を含むブロックの全データを前記データ格納手段に読み込むとともに、前記書き込み対象クラスタの後半のデータを前記データ格納手段上の対応する領域に書き込むことを特徴とする請求項１に記載の半導体記録メディアへのデータ記録方法。
【請求項３】
書き込み対象となる空きクラスタを含むブロック内の最後の空きクラスタが２つのブロックに跨っており、かつ最後の空きクラスタの後半の領域を含む次のブロック内にも空きクラスタが存在する場合、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻し、その後、前記最後のクラスタの後半の領域を含む次のブロックの全データを前記データ格納手段に読み込むとともに、前記最後のクラスタの後半のデータを前記データ格納手段上の対応する領域に書き込み、以降、別の空きクラスタへのデータ書き込みを継続することを特徴とする請求項１に記載の半導体記録メディアへのデータ記録方法。
【請求項４】
書き込み対象となる空きクラスタを含むブロック内の最後の空きクラスタが２つのブロックに跨っており、かつ前記最後の空きクラスタの後半の領域を含む次のブロック内には空きクラスタが存在しない場合、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻した後、前記最後のクラスタの後半のデータを前記半導体記録メディアの書き込み対象クラスタの後半の領域に直接書き込むことを特徴とする請求項１に記載の半導体記録メディアへのデータ記録方法。
【請求項５】
装着された半導体記録メディアの最小消去単位であるブロックのサイズ情報を取得するブロックサイズ取得手段と、
前記半導体記録メディアへのデータの読み書きを行うデータ入出力手段と、
前記ブロックサイズ取得手段によって取得したブロックサイズ情報と前記データ入出力手段を介して前記半導体記録メディアから得たボリューム管理情報から、ファイルシステムの領域管理単位であるクラスタに関するブロック単位の情報を取得するクラスタ情報取得手段と、
前記データ入出力手段を介して前記半導体記録メディアから読み込んだデータを一時蓄えると共にデータの一部を書換えることが可能なデータ格納手段と、
前記半導体記録メディアから前記データ格納手段へのデータ読み込み、一部データの書き換え、および前記データ格納手段から前記半導体記録メディアへのデータの書き込みを制御する制御手段とを備え、
前記クラスタのサイズが前記ブロックのサイズより小さく、かつ書き込み対象となる空きクラスタを含む前記ブロック内に別の空きクラスタが存在する場合、前記半導体記録メディアから前記ブロック全体または一部のデータを前記データ格納手段に読み込み、以降、前記データ格納手段上で前記空きクラスタへのデータ書き込みを行い、前記ブロックに含まれる全てのクラスタへのデータ書き込みが終了した時点で、前記データ入出力手段を介して前記データ格納手段に含まれるデータを前記半導体記録メディアに書き戻すように制御することを特徴とするアクセス装置。
【請求項６】
前記クラスタ情報取得手段は、書き込み対象クラスタを含むブロック内に別の空きクラスタが存在しているか否かを判断できることを特徴とする請求項５に記載のアクセス装置。
【請求項７】
前記クラスタ情報取得手段は、書き込み対象クラスタが２つのブロックに跨っているか否かを判断できることを特徴とする請求項５に記載のアクセス装置。
【請求項８】
前記クラスタ情報取得手段は、書き込み対象クラスタを含むブロック内に２つのブロックに跨る別の空きクラスタが存在するか否かを判断できることを特徴とする請求項５に記載のアクセス装置。
【請求項９】
前記クラスタ情報取得手段は、書き込み対象クラスタを含むブロックの次のブロック内に空きクラスタが存在するか否かを判断できることを特徴とする請求項５に記載のアクセス装置。
【請求項１０】
書き込み対象となるクラスタが２つのブロックに跨っており、かつ前記書き込み対象クラスタ後半の領域を含むブロック内に別の空きクラスタが存在する場合、前記制御手段は、最初のブロックに含まれる前記書き込み対象クラスタの前半のデータを直接前記半導体記録メディアに書き込んだ後、前記書き込み対象クラスタの後半の領域を含むブロックの全データを前記データ格納手段に読み込むとともに、前記書き込み対象クラスタの後半のデータを前記データ格納手段上の対応する領域に書き込むように制御することを特徴とする請求項５に記載のアクセス装置。
【請求項１１】
書き込み対象となるクラスタを含むブロック内の最後の空きクラスタ領域が２つのブロックに跨っており、かつ最後の空きクラスタの後半の領域を含む次のブロック内にも空きクラスタが存在する場合、前記制御手段は、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻し、その後、前記最後のクラスタの後半の領域を含む次のブロックの全データを前記データ格納手段に読み込むとともに、前記最後のクラスタの後半のデータを前記データ格納手段上の対応する領域に書き込み、以降、別のクラスタへのデータ書き込みを継続するよう制御することを特徴とする請求項５に記載のアクセス装置。
【請求項１２】
書き込み対象となるクラスタを含むブロック内の最後の空きクラスタが２つのブロックに跨っており、かつ前記最後の空きクラスタの後半の領域を含む次のブロック内には空きクラスタが存在しない場合、前記制御手段は、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻した後、前記最後のクラスタの後半のデータを前記半導体記録メディアの書き込み対象クラスタの後半の領域に直接書き込むように制御することを特徴とする請求項５に記載のアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリなどの半導体不揮発メモリを内蔵した半導体記録メディアへのデータ記録方法及びその記録方法を実施するアクセス装置に関し、特に半導体記録メディアに対するデータ書き込み速度を向上させる改良に関するものである。
【背景技術】
【０００２】
小型・軽量であることを長所とする半導体記録メディアは、様々な技術分野、特に民生のＡＶ・通信機器において広く使用されるようになってきた。それらの半導体記録メディアの多くはNAND型と呼ばれるフラッシュメモリなどの不揮発メモリを内蔵している。
【０００３】
このようなフラッシュメモリは、まだ書き込みが一度も行われていない領域に対しては、磁気ディスクなどと同様にデータを直接書き込むことができる。その一方で、既にデータが書き込まれている領域に対しては、一旦その領域を含むセクタ群からなるブロックの単位で不揮発メモリ上のデータを半導体記録メディア内に設けられたバッファへ退避して、前記バッファ上でデータを書き込み、不揮発メモリのデータをブロック単位で一括して消去した後に、バッファ上のデータを不揮発メモリに書き戻すという処理を行う必要がある。
【０００４】
以下、図９に基づいて半導体記録メディアへのデータ書き込み時の動作を説明する。
半導体記録メディア内の不揮発メモリ９００は最小消去単位である複数のブロック９０１で構成され、各ブロック９０１には複数のセクタ９０２（図では８個）が含まれている。
【０００５】
Ｎｏ．１６と１７のセクタにデータが書き込まれたブロックＢのＮｏ．１８のセクタに書き込みを行う際には、一旦ブロックＢの単位で不揮発メモリ９００上のデータを半導体記録メディア内に設けられたバッファ９０３へ退避し（ステップＳ１）、次にバッファ９０３上でデータを書き込み（Ｓ２）、不揮発メモリ９００のＮＯ．１６、１７のセクタのデータをブロックＢ単位で一括して消去し（Ｓ３）、その後、バッファ９０３上のデータを不揮発メモリに書き戻す。
【０００６】
半導体メモリカードの形態を有する多くの記録メディアは、ブロックを書き込み単位とする領域管理を実現するため、専用の制御手段を有しており（例えば、特許文献１）、前記制御手段によって、ブロックの状態管理、およびブロックに対するデータの読み込み、データの書き込みを行っている。
このように、半導体メモリカードのような記録メディアは、磁気ディスク、光ディスク型の記録媒体とは全く異なる独特のハードウェア構造（物理層）を有している。
【０００７】
その反面、図１０に示すような物理層１００１（図１０の例では不揮発メモリ）、ファイルシステム層１００２（同ＩＳＯ９２９３に規定するＦＡＴ型ファイルシステム）、応用層１００３（同アプリケーションプログラム）からなるレイヤモデルにてデータ管理を行っている点は、磁気ディスクや光ディスクと共通しているといえる。
【０００８】
図１１は、物理層１００１のレイアウトを詳細に示した図である。図１１において、物理層１００１におけるボリューム領域には、ブロック１１０１が複数配置されている。各ブロック１１０１は、例えば３２個のセクタ１１０２からなり、１６キロバイトのデータ長を有している。
【０００９】
図１２に、ファイルシステム層１００２の詳細なレイアウトを示す。図１２に示すファイルシステム層１００２のレイアウトは、一般にＦＡＴ型ファイルシステムと呼ばれるものである。ＦＡＴ型ファイルシステムにおいて、ボリューム領域における領域管理はクラスタとよばれる単位を用いて行われる。ボリューム領域の先頭にはボリューム管理情報を記録した領域１２０１が配置され、ボリューム管理情報領域１２０１の直後にはユーザデータの記録のための領域であるユーザ領域１２０２が配置される。
【００１０】
領域１２０１のボリューム管理情報は、マスタブートレコード＆パーティションテーブル１２０３、パーティションブートセクタ１２０４、二重化ファイルアロケーションテーブル（ＦＡＴ）１２０５及びルートディレクトリエントリ１２０６からなる。このうち二重化ファイルアロケーションテーブル１２０５は、ボリューム領域に含まれる複数のクラスタ１２０７に対応づけられ、クラスタ間のリンク関係を示す。
【００１１】
こうしたファイルシステム層１００２を設けることにより、応用層１００３では、ディレクトリとファイルからなる階層構造にてデータが格納されることになる。レイヤモデルの導入により、アプリケーションプログラムは、応用層１００３を介して、磁気ディスクや光ディスクなどの記録メディアをアクセスするのと同じ手順を経て、半導体メモリカードのような記録メディアにアクセスすることができる。
【特許文献１】特開平５−２４１７４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところで、ファイルシステムのボリューム領域にデータを格納するにあたって、領域管理の単位であるクラスタのサイズは様々に設定され得る。例えば、Ｗｉｎｄｏｗｓ２０００によって１２８メガバイトの半導体記録メディアをＦＡＴ形式でフォーマットするとクラスタサイズは４セクタ、３２メガバイトの半導体記録メディアの場合ではクラスタサイズは１セクタとなる。
【００１３】
ブロックのサイズが３２セクタであるような不揮発メモリを用いた半導体記録メディアに対して、クラスタサイズを１セクタとしてフォーマットしたとすると、クラスタ単位（この場合は１セクタ）のデータ書き込みを行う度に、半導体記録メディアは、書き込み対象以外のデータの退避およびブロック単位のデータ消去を行う必要があるため、書き込み完了までの時間が、ブロック単位（３２セクタ）でデータを書き込むのとほぼ同等の時間がかかってしまい、３２セクタ分のデータを書き込む際には、約３２倍の時間がかかってしまうことになる。
【００１４】
図１３は半導体記録メディアに書き込みを行う際の記録メディア内の動作を示したものである。連続した空きクラスタが存在する場合には、連続した空きクラスタ分のデータを一気に書き込むように工夫したアクセス装置も存在するが、図１３に示すように、ブロック１３０１内の空きクラスタ１３０２が不連続の場合は、やはりクラスタ単位での書き込みとなり、書き込みの度に不揮発メモリ上の既存データのバッファへの退避、バッファへの新規データ書き込み、不揮発メモリのデータ消去、不揮発メモリへのデータ書き込みという一連の処理を半導体記録メディアが行わねばならないため、複数クラスタへの連続書き込みには非常に時間がかかってしまう。
【００１５】
また、フラッシュメモリなどの不揮発メモリは、絶縁層に浮遊ゲートを埋設した記憶素子から構成されており、このような構造の記憶素子は、数万〜数十万回の消去を限界としているので、クラスタサイズが小さい場合には、上述したように書き込み回数が増大してしまうため、不揮発メモリ自体の寿命を著しく縮めてしまう結果となる。
【００１６】
以上のように、小さなクラスタサイズでフォーマットされた場合、半導体記録メディアに対する書き込み回数が相対的に増大してしまい、書き込み時間の増大およびメディアの寿命を縮めてしまうという問題点があった。
【００１７】
本発明は、このような問題点を解決するもので、不揮発メモリの消去回数を減らすことで書き込み時間を短縮し、また半導体記録メディアの長寿命化を実現できるデータ記録方法及びアクセス装置を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するため、本発明の半導体記録メディアへのデータ記録方法は、最小消去単位であるブロックを複数含み、かつ前記ブロックを書き込み単位として領域管理が行われる半導体記録メディアに、アクセス装置を用いて、ファイルシステムの領域管理単位であるクラスタ単位でデータを書き込む半導体記録メディアへのデータ記録方法であって、前記クラスタのサイズが前記ブロックのサイズより小さく、かつ書き込み対象となる空きクラスタを含む前記ブロック内に別の空クラスタが存在する場合、前記半導体記録メディアから前記ブロック全体または一部のデータを前記アクセス装置のデータ格納手段に読み込み、以降、前記データ格納手段上で前記空きクラスタへのデータ書き込みを行い、前記ブロックに含まれる全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段に含まれるデータを前記半導体記録メディアに書き戻すことを特徴とする。
【００１９】
上記本発明のデータ記録方法において、書き込み対象となる空きクラスタが２つのブロックに跨っており、かつ前記書き込み対象クラスタの後半の領域を含むブロック内に別の空きクラスタが存在する場合、最初のブロックに含まれる前記書き込み対象クラスタの前半のデータを直接前記半導体記録メディアに書き込んだ後、前記書き込み対象クラスタの後半の領域を含むブロックの全データを前記データ格納手段に読み込むとともに、前記書き込み対象クラスタの後半のデータを前記データ格納手段上の対応する領域に書き込むようにしてもよい。
【００２０】
同様に、書き込み対象となる空きクラスタを含むブロック内の最後の空きクラスタが２つのブロックに跨っており、かつ最後の空きクラスタの後半の領域を含む次のブロック内にも空きクラスタが存在する場合、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻し、その後、前記最後のクラスタの後半の領域を含む次のブロックの全データを前記データ格納手段に読み込むとともに、前記最後のクラスタの後半のデータを前記データ格納手段上の対応する領域に書き込み、以降、別の空きクラスタへのデータ書き込みを継続するようにしてもよい。
【００２１】
同様に、書き込み対象となる空きクラスタを含むブロック内の最後の空きクラスタが２つのブロックに跨っており、かつ前記最後の空きクラスタの後半の領域を含む次のブロック内には空きクラスタが存在しない場合、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻した後、前記最後のクラスタの後半のデータを前記半導体記録メディアの書き込み対象クラスタの後半の領域に直接書き込むようにしてもよい。
【００２２】
また本発明のアクセス装置は、装着された半導体記録メディアの最小消去単位であるブロックのサイズ情報を取得するブロックサイズ取得手段と、前記半導体記録メディアへのデータの読み書きを行うデータ入出力手段と、前記ブロックサイズ取得手段によって取得したブロックサイズ情報と前記データ入出力手段を介して前記半導体記録メディアから得たボリューム管理情報から、ファイルシステムの領域管理単位であるクラスタに関するブロック単位の情報を取得するクラスタ情報取得手段と、前記データ入出力手段を介して前記半導体記録メディアから読み込んだデータを一時蓄えると共にデータの一部を書換えることが可能なデータ格納手段と、前記半導体記録メディアから前記データ格納手段へのデータ読み込み、一部データの書き換え、および前記データ格納手段から前記半導体記録メディアへのデータの書き込みを制御する制御手段とを備え、前記クラスタのサイズが前記ブロックのサイズより小さく、かつ書き込み対象となる空きクラスタを含む前記ブロック内に別の空きクラスタが存在する場合、前記半導体記録メディアから前記ブロック全体または一部のデータを前記データ格納手段に読み込み、以降、前記データ格納手段上で前記空きクラスタへのデータ書き込みを行い、前記ブロックに含まれる全てのクラスタへのデータ書き込みが終了した時点で、前記データ入出力手段を介して前記データ格納手段に含まれるデータを前記半導体記録メディアに書き戻すように制御することを特徴とする。
【００２３】
上記本発明のアクセス装置において、前記クラスタ情報取得手段は、書き込み対象クラスタを含むブロック内に別の空きクラスタが存在しているか否かを判断できる。
【００２４】
同様に、前記クラスタ情報取得手段は、書き込み対象クラスタが２つのブロックに跨っているか否かを判断でき、また、書き込み対象クラスタを含むブロック内に２つのブロックに跨る別の空きクラスタが存在するか否かを判断でき、更に、書き込み対象クラスタを含むブロックの次のブロック内に空きクラスタが存在するか否かを判断できる。
【００２５】
また本発明のアクセス装置において、書き込み対象となるクラスタが２つのブロックに跨っており、かつ前記書き込み対象クラスタ後半の領域を含むブロック内に別の空きクラスタが存在する場合、前記制御手段は、最初のブロックに含まれる前記書き込み対象クラスタの前半のデータを直接前記半導体記録メディアに書き込んだ後、前記書き込み対象クラスタの後半の領域を含むブロックの全データを前記データ格納手段に読み込むとともに、前記書き込み対象クラスタの後半のデータを前記データ格納手段上の対応する領域に書き込むように制御してもよい。
【００２６】
同様に、書き込み対象となるクラスタを含むブロック内の最後の空きクラスタ領域が２つのブロックに跨っており、かつ最後の空きクラスタの後半の領域を含む次のブロック内にも空きクラスタが存在する場合、前記制御手段は、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻し、その後、前記最後のクラスタの後半の領域を含む次のブロックの全データを前記データ格納手段に読み込むとともに、前記最後のクラスタの後半のデータを前記データ格納手段上の対応する領域に書き込み、以降、別のクラスタへのデータ書き込みを継続するよう制御してもよい。
【００２７】
同様に、書き込み対象となるクラスタを含むブロック内の最後の空きクラスタが２つのブロックに跨っており、かつ前記最後の空きクラスタの後半の領域を含む次のブロック内には空きクラスタが存在しない場合、前記制御手段は、前記データ格納手段に読み込まれた前記ブロック内に存在する全てのクラスタへのデータ書き込みが終了した時点で、前記データ格納手段上の全データを前記半導体記録メディアへ書き戻した後、前記最後のクラスタの後半のデータを前記半導体記録メディアの書き込み対象クラスタの後半の領域に直接書き込むように制御してもよい。
【発明の効果】
【００２８】
本発明のデータ記録方法によれば、クラスタサイズがブロックサイズより小さい場合でも、ブロック単位で半導体記録メディアへの書き込みを行うので、書き込み回数、すなわち不揮発メモリの消去回数を減らすことができ、結果として書き込み時間を短縮し、また半導体記録メディアの長寿命化を実現できる。
【発明を実施するための最良の形態】
【００２９】
図１は本発明の実施の形態における半導体記録メディアとアクセス装置のブロック図である。図１において、アクセス装置１００は、ブロックサイズ取得手段１０１、クラスタ情報取得手段１０２、データ入出力手段１０３、データ格納手段（バッファ）１０４及び制御手段１０５で構成され、１０６は書き込み用の新規データを示す。一方、半導体記録メディア１１０は、最小消去単位であるブロックを複数含む不揮発メモリと、前記ブロックを書き込み単位として領域管理を行う専用の制御手段（図示せず）で構成される。また、半導体記録メディア１１０には、不揮発メモリ領域を機能的な表現で分類すると、ブロックサイズ情報を記録した領域１１１、ボリューム管理情報を記録した領域１１２、及びユーザー領域１１３が含まれる。
【００３０】
アクセス装置１００は、ブロックサイズ取得手段１０１によって、装着された半導体記録メディア１１０内の領域１１１に記録されたブロックサイズ情報を取得する。
【００３１】
ブロックサイズ情報は、半導体記録メディア１１０に内蔵された不揮発メモリの最小消去単位のサイズを表しており、例えば図１１に示した例では、ブロックサイズは３２セクタであり、セクタ１〜３２はブロック１、セクタ３３〜６４はブロック２、…というようにブロック分けされる。
【００３２】
一方、背景技術の欄で述べたように、ユーザー領域１１３はクラスタ単位で管理されており、その使用状況は領域１１２に記録されたボリューム管理情報内の二重化ファイルアロケーションテーブルに書き込まれている。アクセス装置１００は、データ入出力手段１０３を介して半導体記録メディア１１０からボリューム管理情報を読み込み、クラスタ情報取得手段１０２によって、ユーザー領域１１３の使用状況に関する情報を取得することができる。半導体記録メディア１１０に対して新規にデータを書き込む際には、前記の二重化ファイルアロケーションテーブルから空きクラスタの情報を取得し、取得した空きクラスタの領域に対して書き込みを行う。
【００３３】
クラスタ情報取得手段１０２は、新規データの書き込み用の空きクラスタの情報を取得するだけでなく、書き込み対象となっている空きクラスタを含むブロック内に別の空きクラスタが存在するか否かを判断する。制御手段１０５は、クラスタ情報取得手段１０２の判断結果によって、半導体記録メディア１１０に対する以降の書き込み手順を変えて書き込み処理の制御を行う。
【００３４】
以下、図２を参照して、書き込み対象の空きクラスタを含むブロック内に複数の非連続空きクラスタが存在する場合の処理について説明する。
いま、半導体記録メディア１１０は、ブロック２０１が８個のクラスタ２０２で構成されるようにフォーマットされており、クラスタ情報取得手段１０２によって、Ｎｏ．１７のクラスタが書き込み対象に選択されているとする。
【００３５】
制御手段１０５は、クラスタ情報取得手段１０２の判断結果により、書き込み対象となっているＮｏ．１７のクラスタが含まれるブロック内に、別の空きクラスタ（クラスタＮｏ．１８，２０，２２）が存在することを知る（ステップＳ２１）と、Ｎｏ．１７のクラスタが含まれるブロック内の全データを、データ入出力手段１０３を介して半導体記録メディア１１０からバッファであるデータ格納手段１０４に読み込み（Ｓ２２）、データ格納手段（バッファ）１０４上の、書き込み対象であるＮｏ．１７のクラスタに相当する領域へ、新規データを書き込む（Ｓ２３）。さらに、書き込むべき新規データが存在する場合には、次のＮｏ．１８の空きクラスタに相当するデータ格納手段（バッファ）１０４上の領域へ書き込む（Ｓ２３）。
【００３６】
一連の書き込みが終了して書き込むべき新規データが存在しなくなったか、またはデータ格納手段（バッファ）１０４上の空きクラスタ領域が無くなった時点で、制御手段１０５は、データ格納手段（バッファ）１０４上の全データを、データ入出力手段１０３を介して半導体記録メディア１１０の書き込み対象となったデータ消去済のブロックに書き戻すとともに、新規にデータを書き込んだクラスタのボリューム管理情報を更新する（Ｓ２４）。
【００３７】
この場合、４クラスタのデータ書き込みを行っているが、半導体記録メディア１１０に対する書き込みは１回だけであり、最初のデータ読み込みを含めても、半導体記録メディア１１０に対するデータアクセスは２回で済み、従来と比べて半減している。
【００３８】
図３は、一例として、８メガバイトの半導体記録メディアをＷｉｎｄｏｗｓ２０００でフォーマットした時のブロックとクラスタとの関係を表しており、ブロックの境界とクラスタ境界が必ずしも一致しない場合があることを示しているが、基本的には図２で説明した手順と同様の処理を行う。
【００３９】
一方、図４は、書き込み対象となっているクラスタを含むブロック内に別の空きクラスタが存在しない場合の動作についての説明図であり、参考例として示す。
【００４０】
制御手段１０５は、クラスタ情報取得手段１０２の判断結果により、書き込み対象となっているＮＯ．７のクラスタが含まれるブロック内に別の空きクラスタが存在しないことを知ると、書き込むべき新規データを、半導体記録メディア１１０の書き込み対象クラスタであるＮｏ．７のクラスタに対して直接書き込むように制御する（ステップＳ４１）。
【００４１】
このように、書き込み対象となっているクラスタが含まれるブロック内に別の空きクラスタが存在しない場合には、データ格納手段（バッファ）１０４へのデータ読み込みを回避して書き込み速度の低下を防ぐことができる。
【００４２】
図５は、書き込み対象クラスタが２つのブロックに跨っており、かつ後半のブロック内に、別の空きクラスタが存在する場合の動作についての説明図である。
制御手段１０５は、クラスタ情報取得手段１０２の判断結果により、書き込み対象となっているＮｏ．５のクラスタが２つのブロックに跨っており、かつＮｏ．５のクラスタを含む後半のブロック内に別の空きクラスタ（クラスタＮｏ．７、１０、１２）が存在することを知ると、まず、Ｎｏ．５のクラスタに書き込むデータのうち最初のブロックに書き込まれるべきデータのみ、Ｎｏ．５のクラスタに対して直接書き込むように制御する（ステップＳ５１）。
【００４３】
次に、制御手段１０５は、Ｎｏ．５のクラスタを含む２つ目のブロック内の全データをデータ入出力手段１０３を介して半導体記録メディア１１０からデータ格納手段（バッファ）１０４に読み込み、データ格納手段（バッファ）１０４上の、書き込み対象であるＮｏ．５のクラスタに相当する領域へ、新規データの残りのデータを書き込む（Ｓ５２）。さらに書き込むべき新規データが存在する場合には、次の空きクラスタ７に相当するデータ格納手段（バッファ）１０４上の領域へ書き込む（Ｓ５３）。
【００４４】
一連の書き込みが終了して書き込むべき新規データが存在しなくなったか、またはデータ格納手段（バッファ）１０４上の空きクラスタ領域が無くなった時点で、制御手段１０５は、データ格納手段（バッファ）１０４上の全データを、データ入出力手段１０３を介して半導体記録メディア１１０の書き込み対象となったブロックに書き戻すとともに、新規にデータを書き込んだクラスタのボリューム管理情報を更新する（Ｓ５４）。
【００４５】
一方、図６は、書き込み対象クラスタが２つのブロックに跨っており、かつ後半のブロック内に、別の空きクラスタが存在しない場合の動作についての説明図であり、参考例として示す。
【００４６】
制御手段１０５は、クラスタ情報取得手段１０２の判断結果により、書き込み対象となっているクラスタ５が２つのブロックに跨っており、かつクラスタ５を含む後半のブロック内に別の空きクラスタが存在しないことを知ると、書き込むべき新規データを、半導体記録メディア１１０の書き込み対象クラスタ５に対して、直接書き込むように制御する（Ｓ６１）。
【００４７】
このように、書き込み対象となっているクラスタが２つのブロックに跨っており、かつこのクラスタを含む後半のブロック内に別の空きクラスタが存在しない場合には、データ格納手段（バッファ）１０４へのデータ読み込みを回避して、書き込み速度の低下を防ぐことができる。
【００４８】
図７は、書き込み対象クラスタを含むブロック内に２つのブロックに跨る別の空きクラスタが存在し、かつ後半のブロック内に別の空きクラスタが存在する場合の動作についての説明図である。
【００４９】
制御手段１０５は、クラスタ情報取得手段１０２の判断結果により、書き込み対象となっているＮｏ．７のクラスタを含むブロック内に、２つのブロックに跨る別の空きクラスタが存在し、かつ前記空きクラスタを含む２つ目のブロック内に、さらに別の空きクラスタ（クラスタＮｏ．１４、１５、１６、２０）が存在することを知ると、まず書き込み対象であるＮｏ．７のクラスタを含むブロック内の全データをデータ入出力手段１０３を介して半導体記録メディア１１０からデータ格納手段（バッファ）１０４に読み込み（ステップＳ７１）、データ格納手段（バッファ）１０４上の、書き込み対象であるＮｏ．７のクラスタに相当する領域へ新規データを書き込み、さらに書き込むべきデータが存在する場合には、データ格納手段（バッファ）１０４上の別の空きクラスタに相当する領域へデータを書き込んでいく（Ｓ７２）。
【００５０】
データ格納手段（バッファ）１０４上の最後の空きクラスタであるＮｏ．１３のクラスタは、２つのブロックに跨っているため、データ格納手段（バッファ）１０４の最後まで新規データを書き込んだ時点で、データ格納手段（バッファ）１０４の全データを半導体記録メディア１１０に書き戻し、新規にデータを書き込んだクラスタのボリューム管理情報を更新する（Ｓ７３）。ただし、最後のクラスタ（クラスタＮｏ．１３）は、全データを書き込んでいないため、この時点ではボリューム管理情報の更新は行わない。
【００５１】
次に、制御手段１０５は、途中までデータを書き込んだＮｏ．１３のクラスタの後半のデータを含むブロック内の全データをデータ入出力手段１０３を介して半導体記録メディア１１０からデータ格納手段（バッファ）１０４に読み込み、データ格納手段（バッファ）１０４上の、書き込み対象であるＮｏ．１３のクラスタに相当する領域へ、新規データの残りのデータを書き込む（Ｓ７４）。さらに書き込むべき新規データが存在する場合には、次の空きクラスタ（クラスタＮｏ．１４）に相当するデータ格納手段（バッファ）１０４上の領域へ書き込む（Ｓ７５）。
【００５２】
一連の書き込みが終了して書き込むべき新規データが存在しなくなったか、またはデータ格納手段（バッファ）１０４上の空きクラスタ領域が無くなった時点で、制御手段１０５は、データ格納手段（バッファ）１０４上の全データを、データ入出力手段１０３を介して半導体記録メディア１１０の書き込み対象となったブロックに書き戻すとともに、新規にデータを書き込んだクラスタのボリューム管理情報を更新する（図示せず）。なお、途中までデータを書き込んだＮｏ．１３のクラスタのボリューム管理情報は、この時点で同時に更新する。
【００５３】
図８は、書き込み対象クラスタを含むブロック内に２つのブロックに跨る別の空きクラスタが存在し、かつ後半のブロック内に別の空きクラスタが存在しない場合の動作についての説明図である。
【００５４】
書き込み対象であるＮｏ．７のクラスタを含むブロックへのデータ書き込みについては、図７を用いて説明した動作と同様なので、説明を省略する。２つのブロックを跨ぐＮｏ．１３のクラスタの残りの領域への新規データの書き込みはまだ終了していないため、制御手段１０５は、書き込むべき残りの新規データを、半導体記録メディア１１０のＮｏ．１３のクラスタの残りの領域に対して、直接書き込むように制御する。このように制御することで、データ格納手段（バッファ）１０４へのデータ読み込みを回避し、書き込み速度の低下を防ぐことができる。
【００５５】
なお、以上説明した本発明の実施の形態では、書き込み対象クラスタを含むブロック内に別の空きクラスタが存在した場合に、対象ブロック内の全データをデータ格納手段（バッファ）１０４に読み出すと説明したが、確保できるデータ格納手段（バッファ）１０４の容量に制限がある場合などは、複数回に分けて処理しても構わない。ただし、その場合は半導体記録メディア１１０へのアクセス回数が増加するため、書き込み速度はその分遅くなる。
【産業上の利用可能性】
【００５６】
本発明にかかる半導体記録メディアへのデータ記録方法及びアクセス装置は、半導体記録メディアのクラスタサイズがブロックサイズよりも小さく、連続した空きクラスタが少ないか存在しない場合でも、ブロック毎に含まれる空きクラスタが複数存在する際には、該当するブロック内のデータを読み出し、読み出したデータ格納手段上でデータを書き込み、データ格納手段上の空き領域が無くなった時点で、ブロック単位で半導体記録メディアへ書き戻すことで、半導体記録メディアへの書き込み回数を減らすことが可能となり、動画記録など高速記録が要求される用途に広く適用できるものである。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施の形態における半導体記録メディア及びアクセス装置のブロック図
【図２】本発明の実施の形態におけるデータ記録方法の基本動作を示す説明図
【図３】ブロックとクラスタの関係を示す説明図
【図４】本発明の実施の形態における動作の一例を示す説明図
【図５】本発明の実施の形態における動作の他の例を示す説明図
【図６】本発明の実施の形態における動作の他の例を示す説明図
【図７】本発明の実施の形態における動作の他の例を示す説明図
【図８】本発明の実施の形態における動作の他の例を示す説明図
【図９】データ書き込み時における不揮発メモリ内部の動作を示す説明図
【図１０】物理層、ファイルシステム層及び応用層からなるレイヤモデルを示す図
【図１１】物理層のフォーマットを示す図
【図１２】ファイルシステム層のフォーマットを示す図
【図１３】従来のデータ記録方法の基本動作を示した説明図
【符号の説明】
【００５８】
１００  アクセス装置
１０１  ブロックサイズ取得手段
１０２  クラスタ情報取得手段
１０３  データ入出力手段
１０４  データ格納手段
１０５  制御手段
１１０  半導体記録メディア
１１１  ブロックサイズ情報領域
１１２  ボリューム管理情報領域
１１３  ユーザー領域
【図１】
2006338437.tif 000003
【図２】
2006338437.tif 000004
【図３】
2006338437.tif 000005
【図４】
2006338437.tif 000006
【図５】
2006338437.tif 000007
【図６】
2006338437.tif 000008
【図７】
2006338437.tif 000009
【図８】
2006338437.tif 000010
【図９】
2006338437.tif 000011
【図１０】
2006338437.tif 000012
【図１１】
2006338437.tif 000013
【図１２】
2006338437.tif 000014
【図１３】
2006338437.tif 000015