(57)【要約】【課題】不揮発性記憶装置からフラグメンテーションを起こしたファイルの読出しにおいて、読出し時間が長くかかる。【解決手段】ホストから指定される読出し対象アドレスを基にして必要な不揮発性記憶装置の論理的なマッピング情報の一部を、不揮発性メモリからコントローラのＦＡＴバッファに転送する機能（４０５）と、ホストが読み出した最後のデータとＦＡＴバッファの情報を基に次にホストが読み出そうとするアドレスを予測し、予測したアドレスを基にして不揮発性メモリからページバッファにデータを予め読み出す機能（４０６）を備えている。【選択図】図４
2006277737.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、
前記コントローラは、前記不揮発性メモリと前記ホスト機器の間転送されるデータを一時的に保持する揮発性メモリを備え、
前記コントローラは、前記ホスト機器が前記ファイルの一部のデータを読み出し行った後に、前記ファイルにおける前記一部のデータに連続するデータを前記不揮発性メモリから前記揮発性メモリへと読み出しておくことを特徴とするアドレス予測機能をもつ不揮発性記憶装置。
【請求項２】
前記ファイルにおける前記一部のデータに連続するデータの位置を特定するためにファイルシステムの情報用いることを特徴とする請求項１に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項３】
前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記不揮発性メモリから読み出すことを特徴とする請求項２に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項４】
コントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、
前記ホスト機器から前記不揮発性記憶装置に連続ではない複数のクラスタからなるファイルを読み出すコマンドが発行されたときに、前記コントローラが前記ファイルを構成するクラスタの順に対応するデータを前記不揮発性メモリから読み出して前記ホスト機器へ転送することを特徴とするアドレス予測機能をもつ不揮発性記憶装置。
【請求項５】
前記コントローラが前記ファイルを構成するクラスタの順を特定するためにファイルシステムの情報用いることを特徴とする請求項４に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項６】
前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記不揮発性メモリから読み出すことを特徴とする請求項５に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項７】
前記コントローラは特定した前記ファイルを構成するクラスタの順を格納するためのアドレス保持部をさらに備えたことを特徴とする請求項６に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項８】
前記コントローラは特定した前記ファイルを構成するクラスタの順を前記ホスト機器に出力する手段を備えたことを特徴とする請求項６に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項９】
前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記ホスト機器から前記ファイルシステムバッファに転送されることを特徴とする請求項５に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１０】
前記コントローラはアドレスリスト保持部をさらに備え、
前記ファイルを構成するクラスタの順が、前記アドレス保持部に格納されることを特徴とする請求項４に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１１】
前記ファイルを構成するクラスタの順は、前記ホスト機器から前記アドレス保持部に転送されることを特徴とする請求項１０に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１２】
前記ファイルを構成するクラスタの順は、前記コントローラが前記不揮発性メモリのアドレスリスト領域から読み出して前記アドレス保持部に転送されることを特徴とする請求項１０に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１３】
前記ホスト機器から指定されるアドレスリストアドレス情報を基に、前記コントローラが前記不揮発性メモリにおける前記アドレスリスト領域を決定することを特徴とする請求項１２に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１４】
前記コントローラはエントリバッファをさらに備え、
前記ホスト機器から指定されるファイルエントリアドレス情報を基に、前記コントローラが前記不揮発性メモリにおけるファイルエントリ領域を決定し、
前記不揮発性メモリの前記ファイルエントリ領域から読み出したファイルエントリを前記エントリバッファに転送し、前記エントリバッファのデータを基にして前記アドレスリスト領域を決定することを特徴とする請求項１２に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１５】
前記コントローラは前記エントリバッファのデータから、前記ファイルのＩＤ情報が一致するレコードを検索することで前記アドレスリスト領域を決定することを特徴とする請求項１４に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１６】
前記ＩＤ情報が前記ファイルのファイル名であることを特徴とする請求項１５に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１７】
前記ＩＤ情報が前記エントリバッファにおけるレコード番号であることを特徴とする請求項１５に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項１８】
ホスト機器と不揮発性記憶装置からなる不揮発性記憶装置システムであって、
前記ホスト機器は前記不揮発性記憶装置に連続ではない複数のクラスタからなるファイルを読み出すファイル読み出しコマンドを１回発行するだけで、前記ファイルを構成する連続ではない複数のクラスタからなるデータを前記不揮発性記憶装置から読み出すことができることを特徴とするアドレス予測機能をもつ不揮発性記憶装置システム。
【請求項１９】
前記ホスト機器は前記ファイル読み出しコマンドを発行する前に、ファイルシステムの情報を前記不揮発性記憶装置に送ることを特徴とする請求項１８に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
【請求項２０】
前記ホスト機器は前記ファイル読み出しコマンドを発行する前に、前記ファイルを構成する連続ではない複数のクラスタのアドレス情報を前記不揮発性記憶装置に送ることを特徴とする請求項１８に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
【請求項２１】
前記ホスト機器は前記ファイル読み出しコマンドを発行する前に、前記ファイルを構成する連続ではない複数のクラスタのアドレス情報が格納された、前記不揮発性メモリのアドレス情報を前記不揮発性記憶装置に送ることを特徴とする請求項１８に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
【請求項２２】
コントローラと不揮発性メモリからなり、ホスト機器からファイルを書き込みできる不揮発性記憶装置であって、
前記ホスト機器から前記不揮発性記憶装置にファイルを書き込むコマンドが発行されたときに、前記コントローラが複数の空きクラスタを決定し、前記ファイルのデータを前記不揮発性メモリの前記空きクラスタに対応する場所に書き込むことを特徴とするアドレス予測機能をもつ不揮発性記憶装置。
【請求項２３】
前記コントローラが前記複数の空きクラスタを特定するために、ファイルシステムの情報用いることを特徴とする請求項２２に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項２４】
前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記不揮発性メモリから読み出すことを特徴とする請求項２３に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項２５】
前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記ホスト機器から前記ファイルシステムバッファに転送されることを特徴とする請求項２３に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項２６】
前記コントローラはアドレス登録部をさらに備え、
前記複数の空きクラスタの情報が、前記アドレス登録部に格納されることを特徴とする請求項２２に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項２７】
前記複数の空きクラスタの情報は、前記ホスト機器から前記アドレス登録部に転送されることを特徴とする請求項２６に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項２８】
前記コントローラがビットマップバッファをさらに備え、
前記コントローラが前記複数の空きクラスタを特定するために、クラスタ毎に使用中であるか空き領域であるかを示すビットマップ情報を前記ビットマップバッファに格納して使用することを特徴とする請求項２２に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項２９】
前記ビットマップバッファに格納するビットマップ情報は、前記コントローラが前記不揮発性メモリから読み出して前記ビットマップバッファに格納することを特徴とする請求項２８に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項３０】
前記ビットマップバッファに格納するビットマップ情報は、前記ホスト機器から前記ビットマップバッファに転送して格納されることを特徴とする請求項２８に記載のアドレス予測機能をもつ不揮発性記憶装置。
【請求項３１】
ホスト機器と不揮発性記憶装置からなる不揮発性記憶装置システムであって、
前記ホスト機器は前記不揮発性記憶装置にファイルのデータを書き込むファイル書き込みコマンドを１回発行するだけで、前記不揮発性記憶装置の空きクラスタに書き込むことができることを特徴とするアドレス予測機能をもつ不揮発性記憶装置システム。
【請求項３２】
前記ホスト機器は前記ファイル書き込みコマンドを発行する前に、ファイルシステムの情報を前記不揮発性記憶装置に送ることを特徴とする請求項３１に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
【請求項３３】
前記ホスト機器は前記ファイル書き込みコマンドを発行する前に、書き込み先となる複数のクラスタのアドレス情報を前記不揮発性記憶装置に送ることを特徴とする請求項３１に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
【請求項３４】
前記ホスト機器は前記ファイル書き込みコマンドを発行する前に、クラスタ毎に使用中であるか空き領域であるかを示すビットマップ情報を前記不揮発性記憶装置に送ることを特徴とする請求項３１に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部からアクセスされるアドレスを予め予測することが可能な半導体メモリを使用した不揮発性記憶装置に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを搭載したメモリーカードは、デジタルカメラや携帯電話などの記録媒体として、その市場を拡大している。そしてメモリーカードの記憶容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。
【０００３】
このように扱うファイルの容量が増加していくことによって、メモリーカードからのファイルの読出し、書込みに要する時間が増加していく。書込みを高速化するためにはメモリーカードを扱うホスト機器側のバッファメモリを増やすことでユーザインターフェースとして高速に書きこめたように見せることが出来るが、読み出しに関してはホスト機器側の対応でユーザインターフェースとしての高速化は難しい。
【０００４】
特許文献１に記載の発明では、一般的にファイルは連続して書かれることが多いという前提にたって高速にファイルを読み出す方法を提供していが、メモリーカードに対するファイルの書込み、削除を繰り返すことによって発生するであろうファイルのフラグメンテーション（断片化）に対しての効果はない。
【０００５】
図２１，２２を用いて従来のファイルの読出し方法について説明する。
【０００６】
図２１は従来の不揮発性記憶装置であるメモリーカードとホスト機器のブロック図である。図２１において、２１０１はメモリーカード、１０２はホスト、２１０３はメモリーカード内部にありホスト１０２とフラッシュメモリ１０４の間で制御を行うコントローラ、コントローラ１２０３内部には制御回路１０５とページバッファ１０６がある。
【０００７】
図２２はホスト１０２がメモリーカード２１０１からファイルデータを読み出す際のシーケンス図である。なお、ここでメモリーカード２１０１は、図２に示すような構成のファイルシステムが適用されており、図３に示すファイル（クラスタ位置０ｘ０００２、０ｘ０００３、０ｘ０００５を占有する）を読み出す場合について説明する。
【０００８】
まずステップ２２０１でホスト１０２はメモリーカード２１０１に開始アドレスを指定した読み出しコマンドを発行する。ここでは開始アドレスとしてクラスタ０ｘ０００２のアドレスを指定する。
【０００９】
次にステップ２２０２ではコントローラ２１０３はホスト１０２の指定した開始アドレスであるクラスタ０ｘ０００２から順次データを読み出してステップ２２０３でホスト１０２にセクター単位で転送を行う、なお1クラスタは３２セクターである。
【００１０】
ホスト１０２はクラスタ０ｘ０００２とクラスタ０ｘ０００３のデータをセクター単位でメモリーカード２１０１から読み出した後、ステップ２２０４でメモリーカード２１０１に対して読み出し停止コマンドを発行する。
【００１１】
コントローラ２１０３はホスト１０２から読み出し停止コマンドが発行されるまでは、フラッシュメモリ１０４から順番にデータを読み続けているので、ホスト１０２がメモリーカード２１０１から読み出していないクラスタ０ｘ０００４のデータもフラッシュメモリ１０４から読み出してホスト１０２へ出力できるようページバッファ１０６にデータを準備しているが、このデータは読み出されることはなく、コントローラ２１０３はホスト１０２から発行された読み出し停止コマンドを受けて動作を停止する。
【００１２】
次にステップ２２０５でホスト１０２はクラスタ０ｘ０００５のデータを読み出すためにメモリーカード２１０１にクラスタ０ｘ０００５のアドレスを指定して読み出しコマンドを発行する。
【００１３】
ステップ２２０６ではコントローラ２１０３はホスト１０２の指定した開始アドレスであるクラスタ０ｘ０００５から順次データを読み出してステップ２２０７でホスト１０２にセクター単位で転送を行う。
【００１４】
ホスト１０２はメモリーカード２１０１からデータを読み出した後、ステップ２２０８でメモリーカード１２０１に読み出し停止コマンドを発行して、ファイルの読み出しを終了する。
【００１５】
ホスト１０２がメモリーカード２１０１からデータを読み出す際において、読み出しコマンド発行した後、メモリーカード２１０１から先頭セクターのデータが出力されるまでの時間はデータの頭出し時間と定義されるが、ファイルがフラグメンテーションしている場合には、この頭出し時間が複数回必要になる。フラッシュメモリ１０４はデータを読み出すためには最初に一定のビジー時間を要する構成になっているために、メモリーカード２１０１としても頭出し時間がかかり、結果としてファイル読み出し時の処理時間が遅くなっていた。
【００１６】
次に、図２１，２３を用いて従来のファイルの書き込み方法について説明する。
【００１７】
図２３はホスト１０２がメモリーカード２１０１にファイルデータを書き込む際のシーケンス図である。
【００１８】
まずステップ２３０１でホスト１０２はメモリーカード２１０１に開始アドレスを指定した書き込みコマンドを発行する。
【００１９】
次にステップ２３０２ではホスト１０２はメモリーカード２１０１に順次、書き込みデータの転送を行う、転送単位はセクターである。コントローラ２１０３はホスト１０２の転送してきたデータを、ステップ２３０１でホスト１０２が指定した開始アドレスであるクラスタから順次データとしてフラッシュメモリ１０４に書き込む。コントローラ２１０３がフラッシュメモリ１０４にデータを転送し終えフラッシュメモリ１０４に書き込んでいる間は、ページバッファ１０６は空いているのでホスト１０２は順番にデータを転送してくる。
【００２０】
ホスト１０２はファイルを書き込む際にクラスタの連続した空き領域がなく複数の離散したクラスタ位置に分散する必要がある場合には、いったん書き込みを停止する必要がある。
【００２１】
そのため、ステップ２３０３でホスト１０２はメモリーカード２１０１に対して書き込み停止コマンドを発行する。コントローラ２１０３はホストが書き込み停止コマンドを発行するまでに転送してきたデータは全てフラッシュメモリ１０４に書き込む。従って書き込み停止コマンドを発行してからしばらくの間は、ホスト１０２はメモリーカード２１０１に対するデータの書き込みや読み出しは行えない。
【００２２】
その後ステップ２３０４で改めてホスト１０２はメモリーカード２１０１に開始アドレスを指定した書き込みコマンドを発行する。
【００２３】
次にステップ２３０５ではホスト１０２はメモリーカード２１０１に順次、書き込みデータの転送を行う。コントローラ２１０３はホスト１０２の転送してきたデータを、ステップ２３０４でホスト１０２が指定した開始アドレスであるクラスタから順次データとしてフラッシュメモリ１０４に書き込む。
【００２４】
ファイルのデータを転送し終えたらホスト１０２はメモリーカード２１０１に対して書込み停止コマンドを発行する。
【００２５】
ホスト１０２がメモリーカード２１０１からデータを書き込み際において、書き込み停止コマンドを発行した後、メモリーカード２１０１が使用可能な状態になるまでの時間は書き込みビジー時間と定義されるが、クラスタの空き領域がフラグメンテーションしている場合には、このビジー時間が複数回必要になる。フラッシュメモリ１０４はデータを書き込むためには一定のビジー時間を要する構成になっているために、メモリーカード２１０１としても書き込みビジー時間がかかり、結果としてファイル書き込み時の処理時間が遅くなっていた。
【特許文献１】特開２０００−３０６３８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
上述のように、不揮発性記憶装置からフラグメンテーションを起こしたファイルの読出しについて考慮されていないために、読出し時間がかかるという課題があった。
【課題を解決するための手段】
【００２７】
上記課題を解決するために本発明のアドレス予測機能をもつ不揮発性記憶装置は、コントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、前記コントローラは前記不揮発性メモリと前記ホスト機器の間転送されるデータを一時的に保持する揮発性メモリを備え、前記コントローラは、前記ホスト機器が前記ファイルの一部のデータを読み出し行った後に、前記ファイルにおける前記一部のデータに連続するデータを前記不揮発性メモリから前記揮発性メモリへと読み出しておく機能を備えている。
【００２８】
また別の構成の本発明のアドレス予測機能をもつ不揮発性記憶装置はコントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、前記ホスト機器から前記不揮発性記憶装置に連続ではない複数のクラスタからなるファイルを読み出すコマンドが発行されたときに、前記コントローラが前記ファイルを構成するクラスタの順に対応するデータを前記不揮発性メモリから読み出して前記ホスト機器へ転送する機能を備えている。
【００２９】
また別の構成の本発明のアドレス予測機能をもつ不揮発性記憶装置はコントローラと不揮発性メモリからなり、ホスト機器からファイルを書き込みできる不揮発性記憶装置であって、前記ホスト機器から前記不揮発性記憶装置にファイルを書き込むコマンドが発行されたときに、前記コントローラが複数の空きクラスタを決定し、前記ファイルのデータを前記不揮発性メモリの前記空きクラスタに対応する場所に書き込む機能を備えている。
【００３０】
また本発明は、上記不揮発性記憶装置に対してデータを読み出しもしくは書き込みを行うホスト機器を含んだ不揮発性記憶装置システムも含む。
【発明の効果】
【００３１】
本発明のアドレス予測機能をもつ不揮発性記憶装置によれば、得られた予測アドレスに基づきページバッファにデータを読み出すので、フラグメンテーションを起こしたファイルの読出しであっても、高速に不揮発性記憶装置からデータを読み出すことが出来る。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態におけるアドレス予測機能をもつ不揮発性記憶装置について説明する。
【００３３】
（実施の形態１）
図１は、本発明の実施の形態１によるアドレス予測機能をもつ不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
【００３４】
同図において、１０１は不揮発性記憶装置であるメモリーカード、１０２はホストである。メモリーカード１０１は、１０３のコントローラと、１０４の不揮発性メモリであるフラッシュメモリからなる。
【００３５】
コントローラ１０３は、１０５の制御回路、１０６のページバッファ、１０７のＦＡＴ（ファイル・アロケーション・テーブル）バッファ、１０８のアドレス保持部からなる。
【００３６】
制御回路１０５は、ページバッファ１０６を一時的な読出し・書込みデータの記憶場所とすることで、ホスト１０２からフラッシュメモリ１０４へのデータの書き込みおよびフラッシュメモリ１０４からホスト１０２へのデータの読出しを制御すると共に、ＦＡＴバッファ１０７とアドレス保持部１０８を用いてホスト１０２から次にアクセスされるであろうアドレスの予測を行い、予測したアドレスのデータを予めフラッシュメモリ１０４からページバッファ１０６に転送する。
【００３７】
フラッシュメモリ１０４は一般的にＮＡＮＤフラッシュを用いるが、同様に不揮発性メモリから先頭のデータを読み出すための処理に必要な時間（ビジー時間）を経過した後にひとかたまりのデータが連続的に読み出せることを特徴とする不揮発性メモリであればこれに限定されるものではない。
【００３８】
図２は、ホスト１０２からメモリーカード１０１を見たときの論理マップを示した概念図である。
【００３９】
５１２Ｂのセクターを単位としてセクターアドレス０にはマスターブートレコードがあり、メモリーカード１０１内におけるパーティションの開始位置やサイズ等の情報が格納されている。以降、未使用領域を挟んだパーティションの開始位置には１セクターのパーティションブートレコードがあり、パーティションブートレコードにはパーティション内のクラスタサイズやＦＡＴのサイズ等の管理情報が格納されている。その直後にはそれぞれ複数のセクターからなるＦＡＴ１，ＦＡＴ２があり、ユーザ領域の空き領域情報やファイルのチェーン情報であるユーザ領域のクラスタ間のリンク情報が格納されている。基本的にＦＡＴ１とＦＡＴ２には同じ情報が格納されている。その直後にルートディレクトリがあり、パーティションのルートディレクトリに含まれるファイルやディレクトリの開始クラスタ位置やサイズ等の管理情報が格納されている。その直後のユーザ領域は１６ＫＢのクラスタを単位としてクラスタアドレス０ｘ０００２から順にファールのデータやサブディレクトリエントリが格納されている。
【００４０】
図３は、ホスト１０２が取り扱うファイルの、図２に示す論理マップのなかでの配置の一例を示した図である。図３（ａ）はホスト１０２が取り扱う状態のファイルを示しており、３０１のクラスタＦ−１、３０２のクラスタＦ−２、３０３のクラスタＦ−３の３つのクラスタで構成されるファイルを示している。
【００４１】
図３（ｂ）の左側がＦＡＴ１に格納されているデータを１６ｂｉｔのワードを単位として示したものである。ＦＡＴ１の先頭２ワードは０ｘＦ８ＦＦ、０ｘＦＦＦＦの２ワードの固定値が格納されている。従ってＦＡＴ１のなかでユーザ領域の情報が格納されているのは先頭から３ワード目からである。３ワード目はクラスタ０ｘ０００２に対応し、以降ワードとクラスタアドレスが順次対応している。図３（ｂ）の右側はユーザ領域におけるクラスタ単位のデータの情報を示している。
【００４２】
ファイルの先頭クラスタの論理アドレスは、ここでは示していないがルートディレクトリもしくはユーザ領域にあるディレクトリで指定されている。しかし、指定されるのは先頭クラスタの論理アドレスのみであり、以降のクラスタの論理アドレスは示されていない。今、図３（ａ）で示したファイルの先頭クラスタアドレスが０ｘ０００２であるとする。図３（ｂ）のユーザ領域のクラスタ番号０ｘ０００２の位置にはＦ−１の情報が格納されている。Ｆ−１以降の情報の格納先についてはＦＡＴ１を参照して知ることができる。ファイルの先頭クラスタ０ｘ０００２に対応するＦＡＴ１の情報は０ｘ０００３が格納されており、ユーザ領域のクラスタ０ｘ０００２に記録されているファイルがクラスタ０ｘ０００３にリンクして続けて記録されていることを示している。クラスタ０ｘ０００３に対応するＦＡＴ１の情報は０ｘ０００５が格納されており、ユーザ領域のクラスタ０ｘ０００３に記録されているファイルがさらにクラスタ０ｘ０００５にリンクして続けて記録されていることを示している。クラスタ０ｘ０００５に対応するＦＡＴ１の情報は０ｘＦＦＦＦが格納されており、ユーザ領域のクラスタ０ｘ０００５に記録されているファイルはクラスタ０ｘ０００５で終了していることを示している。
【００４３】
従ってクラスタ０ｘ０００２が先頭クラスタであるファイルはユーザ領域のクラスタ０ｘ０００２、０ｘ０００３、０ｘ０００５の順にファイルが分割して格納されていることがわかる。実際に図３（ｂ）に示すようにクラスタ０ｘ０００２にＦ−１、クラスタ０ｘ０００３にＦ−２、クラスタ０ｘ０００５にＦ−５が格納されている。
【００４４】
なお、ユーザ領域のクラスタ０ｘ０００４、０ｘ０００６に対応するＦＡＴ１の情報は０ｘ００００が格納されており、これは対応するクラスタが空き領域であることを示している。
【００４５】
図４はホスト１０２がメモリーカード１０１から図３に示したファイルデータを読み出す際のシーケンス図である。
【００４６】
ホスト１０２は論理マップにおけるＦＡＴの情報をホスト側にも読み出しており、Ｆ−１，Ｆ−２，Ｆ−３で構成されるファイルのデータを読み出すためにはクラスタ０ｘ０００２、０ｘ０００３、０ｘ０００５のデータを読み出す必要があることは認識している。
【００４７】
読み出しの開始は、まずステップ４０１でホスト１０２からコントローラ１０３に対してアドレスを指定して読出しコマンドが発行される。このときにホスト１０２が指定するアドレスは、ファイルの先頭のクラスタアドレスである０ｘ０００２である。ここではホスト１０２はただアドレス情報のみをコントローラ１０３に与えるものであって、そのアドレスがファイルの先頭を示すことであるとか、これからそのアドレスを先頭としたファイルの読出しを行うといった情報は特に必要なものではない。
【００４８】
その読出しコマンドを受けて、ステップ４０２でコントローラ１０３はホスト１０２の指定したアドレスであるクラスタ０ｘ０００２の先頭アドレスに対応するフラッシュメモリ１０４のデータを読み出してページバッファ１０６に転送する。なお、クラスタは３２のセクターからなりセクターの容量は５１２Ｂである。メモリーカード１０１からホスト１０２への転送はセクターを最小単位として行われている。
【００４９】
コントローラ１０３はホスト１０２から指定されてアドレスから、アドレスの順番に従ってフラッシュメモリ１０４のデータを読み出してページバッファ１０６に転送する。
【００５０】
ページバッファ１０６に読出しデータが転送されたら、次はステップ４０３でページバッファ１０６からホスト１０２へとデータの転送を行い、読出し処理を実行する。また、この期間はページバッファ１０６に一時的に保持されているデータがホスト１０２へと転送されて不要となったら、またコントローラ１０３は次のセクターのデータをラッシュメモリ１０４から読み出してページバッファ１０６に転送する。ページバッファ１０６に読出しデータが転送されたら、次はページバッファ１０６からホスト１０２へとデータの転送を行い、読出しを実行するといったことを繰り返して行う。
【００５１】
シーケンスのステップ４０１からステップ４０３の最初の転送が開始されるまでの時間は、メモリーカード１０１からのデータの頭出し時間であり、フラッシュメモリ１０４に対して読み出しのコマンドを発行してフラッシュメモリ１０４のデータが読出し可能になるまでの時間（数十μｓ〜数百μｓ）とフラッシュメモリ１０４からデータが読出し可能になってページバッファ１０６にデータを転送するため必要な時間（〜数百μｓ）がかかってしまう。
【００５２】
ホスト１０２は、連続するアドレスに存在するデータであるクラスタ０ｘ０００２，０ｘ０００３のデータすなわちＦ−１、Ｆ−２をメモリーカード１０１から読み出したら、シーケンスのステップ４０４で読出し停止コマンドを発行する。クラスタ０ｘ０００５は空き領域のクラスタ０ｘ０００４が間にあるのでクラスタ０ｘ０００２，０ｘ０００３と連続するクラスタとはみなされないため、ホスト１０２はいったんデータの読み出しを停止する必要がある。コントローラ１０３はホスト１０２が読出しを行った最終のアドレス情報をアドレス保持部１０８に保持する。ここではクラスタ０ｘ０００３の最終セクターのアドレスがアドレス保持部１０８に保持される。
【００５３】
ステップ４０５でコントローラ１０２はアドレス保持部１０８に格納されたアドレスを含むＦＡＴ情報をフラッシュメモリ１０４から読み出してＦＡＴバッファ１０７に格納する。ただし、ＦＡＴバッファ１０７に既に必要なＦＡＴ情報が格納されている場合はフラッシュメモリ１０４から再度読み出してくる必要は無い。ここではクラスタ０ｘ０００３の情報を含むＦＡＴ１の部分であるひとつのセクターをフラッシュメモリ１０４から読み出すことになる。そしてＦＡＴバッファ１０７のクラスタ０ｘ０００３に対応するワードの情報を読み出すことで、クラスタ０ｘ０００３に論理的に連続するクラスタはクラスタ０ｘ０００５であることを知る。このようにしてステップ４０５で、コントローラ１０３はホスト１０２から次にアクセスされるであろうアドレスを予測することになる。
【００５４】
ステップ４０６でコントローラ１０３はクラスタ０ｘ０００５の先頭アドレスに対応するフラッシュメモリ１０４のデータを読み出してページバッファ１０６に転送すると共に、以降のセクターのデータの読み出しについてもフラッシュメモリ１０４に対して読み出しのコマンドを発行しておき、直ちにページバッファ１０６に転送できる状態にしておく。
【００５５】
ステップ４０７でホスト１０２はファイルを構成するクラスタ０ｘ０００２，０ｘ０００３，０ｘ０００５のうち最後のクラスタ０ｘ０００５の先頭アドレスを指定して読出しコマンドを発行する。ホスト１０２がひとつのファイルを読み出そうとしたときには、コントローラ１０３のＦＡＴチェーンに従ったアドレス予測は必ず正しく行われることが出来る。
【００５６】
ステップ４０８では、コントローラ１０３は、シーケンスのステップ４０３で行った方法と同様にクラスタ０ｘ０００５の先頭アドレスから順にホスト１０２に対してデータの転送を行う。
【００５７】
ステップ４０７からステップ４０８の最初の転送が開始されるまでのデータの頭出しの時間は、シーケンスのステップ４０６によって、ページバッファ１０６に読出しデータが既に転送されているので従来に比べて短い時間で行うことが出来る。
【００５８】
最終的にファイルを構成するＦ１，Ｆ２，Ｆ３に対応するクラスタ０ｘ０００２，０ｘ０００３，０ｘ０００５のデータを読み出した後にステップ４０９でホスト１０２はメモリーカード１０１に読み出し停止コマンドを発行して、ファイルの読み出しを終了する。
【００５９】
以上、本発明の実施の形態によれば、メモリーカード１０１はホスト１０２から得られるアドレス情報を基にしてメモリーカード１０１内部でＦＡＴチェーンを調べることにより、次にホスト１０２がアクセスするであろうアドレスを正確に予測することができ、その結果ホスト１０２は不揮発性メモリ１０１から高速にデータを読み出すことが出来る。
【００６０】
（実施の形態２）
実施の形態１ではメモリーカード１０１からの１回の読み出しコマンドでアドレスが連続するデータしか読み出せなかった。そのために、ファイルにフラグメンテーションが発生しているときには、ホスト１０２は複数回の読み出しコマンドを発行する必要があった。そこで１回の読み出しコマンドでの不連続なデータの読み出しに対応することでより高速に読み出し処理を行うことができるので、その方法について説明する。
【００６１】
図５はホスト１０２がメモリーカード１０１から図３に示したファイルデータを読み出す際のシーケンス図である。
【００６２】
まず、ステップ５０１でホスト１０２はメモリーカード１０１に開始アドレスであるクラスタ０ｘ０００２のアドレスを指定したチェイン読み出しコマンドを発行する。チェイン読み出しコマンドとは、アドレスの順に読み出しを行うのではなく、ファイルを構成するクラスタ順にデータを読み出すことのできるコマンドである。
【００６３】
ステップ５０２でコントローラ１０３はチェイン読み出しコマンドを受けて開始アドレスであるクラスタ０ｘ０００２を含むＦＡＴの情報をフラッシュメモリ１０４から読み出してＦＡＴバッファ１０７に格納する。
【００６４】
ステップ５０３でコントローラ１０３はＦＡＴバッファ１０７に格納したＦＡＴの情報をホスト１０２から指定された先頭アドレスであるクラスタ０ｘ０００２からのチェイン情報を取得し、今回のチェイン読み出しコマンドでクラスタ０ｘ０００２、０ｘ０００３、０ｘ０００５の順にデータを読み出す必要があることがわかるので、それぞれのクラスタを構成するデータをフラッシュメモリ１０４から読み出してページバッファ１０６に順次転送する。
【００６５】
ステップ５０４でホスト１０２はメモリーカード１０１からデータを順次読み出すことでファイルを構成するＦ−１，Ｆ−２，Ｆ−３に対応するクラスタ０ｘ０００２，０ｘ０００３，０ｘ０００５のデータを読み出すことができる。
【００６６】
最後にステップ５０５でホスト１０２はメモリーカード１０１に読み出し停止コマンドを発行してファイルの読み出しを終了する。
【００６７】
上記のように、ファイルがフラグメンテーションを起こしていてもホスト１０２は１回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード１０１から高速にデータを読み出すことができる。
【００６８】
なお、ホスト１０２の認識しているＦＡＴの情報と、メモリーカード１０１内部で認識しているＦＡＴの情報すなわちステップ５０２でコントローラ１０３がフラッシュメモリ１０４から読み出したＦＡＴの情報の整合性をホスト１０２が確認する手法として、ホスト１０２はメモリーカード１０１からファイルのチェイン情報を取得するコマンドを有している。
【００６９】
ステップ５０６でホスト１０２はメモリーカード１０１に開始アドレスを指定してチェイン情報取得コマンドを発行すると、ステップ５０７でコントローラ１０３はＦＡＴの情報をフラッシュメモリ１０４から読み出してＦＡＴバッファ１０７に格納し、その後ステップ５０８で連続するアドレス情報をホスト１０２に転送する。
【００７０】
ステップ５０６で開始アドレスをクラスタ０ｘ０００２と指定した場合には、ステップ５０８でホスト１０２が読み出せるアドレス情報は０ｘ０００２，０ｘ０００３、ｘ００００５となる。
【００７１】
ホスト１０２は自身が持つＦＡＴの情報とステップ５０８で得られるアドレス情報を照合することによりファイルデータが正しいアドレスから読み出されているかどうかの整合性を確認することができる。
【００７２】
また、本実施の形態ではＦＡＴの情報をフラッシュメモリ１０４から読み出しているために、ホスト１０２自身が持つＦＡＴの情報とステップ５０８で得られるアドレス情報の整合性の確認の手段が備えられているが、ホスト１０２がメモリーカード１０１にあらかじめＦＡＴの情報を転送しておけばステップ５０８でのフラッシュメモリ１０４から読み出す処理は不要となり、さらに高速に読み出しを実現できる。
【００７３】
（実施の形態３）
実施の形態１および実施の形態２ではコントローラはＦＡＴバッファを持ち、自らＦＡＴチェインを読み解く必要があるが、ＦＡＴのチェインを読み解く機能は少なくともホスト側では備えている機能なので、必ずしもコントローラに備えていなくてはならないものではない。コントローラにＦＡＴを読み解く機能がなくても高速に読み出し処理を行うことは可能である。以降この方法について説明する。
【００７４】
図６は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
【００７５】
同図において、図１と同じものを同じ番号を付している。メモリーカード６０１はコントローラ６０３とフラッシュメモリ１０４からなり、コントローラ６０３は、１０５の制御回路、１０６のページバッファ、６０８のアドレスリスト保持部からなる。
【００７６】
アドレスリスト保持部６０８とは任意のファイルを構成するクラスタアドレスのリスト情報を格納するところである。
【００７７】
図７はホスト１０２がメモリーカード６０１から図３に示したファイルデータを読み出す際のシーケンス図である。
【００７８】
最初に、ステップ７０１でホスト１０２はメモリーカード６０１に読み出しを行うファイルのクラスタアドレスのリストを指定したリスト読み出しコマンドを発行する。リスト読み出しコマンドとは、アドレスの順に読み出しを行うのではなく、指定したクラスタアドレス順にデータを読み出すことのできるコマンドである。ここでホスト１０２がメモリーカード６０１に指定するクラスタアドレスのリストは図８に示している。ファイルを構成するＦ−１，Ｆ−２，Ｆ−３に対応するクラスタアドレスをホスト１０２が認識しているＦＡＴ情報から作成されるリストで、先頭にはファイルの先頭のＦ−１に対応する０ｘ０００２、以降０ｘ０００３，０ｘ０００５，０ｘ０００Ｆという４つのアドレスのリストがステップ７０１で指定される。なお、クラスタアドレス０ｘＦＦＦＦとはアドレスを示しているのではなくファイルの終了を示している。
【００７９】
ステップ７０２でコントローラ６０３はリスト読み出しコマンドを受けて指令されたクラスタアドレスのリストをアドレスリスト保持部６０８に格納する。そして格納したリストの順序に従いクラスタ０ｘ０００２、０ｘ０００３、０ｘ０００５の順にデータを読み出してページバッファ１０６に順次転送する。
【００８０】
ステップ７０３でホスト１０２はメモリーカード１０１からデータを順次読み出すことでファイルを構成するＦ−１，Ｆ−２，Ｆ−３に対応するクラスタ０ｘ０００２，０ｘ０００３，０ｘ０００５のデータを読み出すことができる。
【００８１】
上記のように、ファイルがフラグメンテーションを起こしていてもホスト１０２はファイルのアドレスのリスト情報を指定して読み出しコマンドを発行することで１回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード６０１から高速にデータを読み出すことができる。
【００８２】
（実施の形態４）
実施の形態１および実施の形態２ではＦＡＴを使用したファイルシステム、すなわち図３（ｂ）に示すように、ひとつのクラスタに対してひとつのワードを持ち、そこにはファイルを構成しているデータの次のクラスタアドレスが格納される。つまりＦＡＴは全てのクラスタに対して、そのクラスタと同じファイルで次に続くデータの存在するクラスタアドレスの情報が格納されるチェイン情報タイプのファイルシステムである。ＦＡＴはファイルに対して構成されるのではなく、クラスタに対応して構成されている。
【００８３】
それに対してファイルに対して、ファイルを構成するクラスタのリスト情報を保持するファイルシステムもある。図８に示したようなクラスタアドレスのリストでファイルの構成を管理するファイルシステムである。
【００８４】
図９はそういったファイルシステムの例を示したものである。図９の内容について以下に説明する。
【００８５】
ファイルを管理するためにファイルエントリ９０１と呼ばれるファイルがある。ファイルエントリ９０１は複数のファイルをひとつのファイルに対してひとつのレコードを持つことで管理している。各レコードには必ずアドレスリスト９０２へのポインタとなるクラスタアドレスを持つ。アドレスリスト９０２へのポインタ以外にはファイルを特定するためのＩＤ情報（例えばシリアルナンバーやファイル名）も格納される。
【００８６】
アドレスリスト９０２には対応するファイルを構成するクラスタアドレスのリストが格納される。他にもファイルに関するさまざまな情報（作成日やファイルサイズやファイルの種類など）も格納される。
【００８７】
図９の例ではファイルＦというのはファイルエントリ９０１でひとつのレコード９０３として登録されている。レコード９０３にはファイルのＩＤ情報であるファイル名「Ｆ」とアドレスリストへのポインタとしてクラスタアドレス０ｘ０００７が登録されている。クラスタ０ｘ０００７にはアドレスリスト９０２が存在している。アドレスリスト９０２にはファイル「Ｆ」を構成するクラスタアドレスのリストである０ｘ０００２，０ｘ０００３、ｘ００００５が格納されており、そのほかにここでは示していないがファイル「Ｆ」に関するさまざまな情報が格納されている。なお、ここでファイルエントリ９０１もクラスタアドレス０ｘ０００６のクラスタを占有するひとつのファイルである。
【００８８】
図１０は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
【００８９】
同図において、図１と同じものを同じ番号を付している。メモリーカード１００１はコントローラ１００３とフラッシュメモリ１０４からなり、コントローラ１００３は、１０５の制御回路、１０６のページバッファ、１００７のエントリバッファ、１００８のアドレスリスト保持部からなる。
【００９０】
エントリバッファ１００７はファイルエントリ９０１を格納するためのバッファであり、アドレスリスト保持部１００８とは任意のファイルを構成するクラスタアドレスのリスト情報を格納するところである。
【００９１】
図１１はホスト１０２がメモリーカード１００１から図９に示したファイルデータを読み出す際のシーケンス図である。
【００９２】
最初に、ステップ１１０１でホスト１０２はメモリーカード１００１に読み出しを行うファイルのアドレスリスト９０２へのポインタを管理しているファイルエントリ９０１の存在するクラスタアドレスと、読み出しを行うファイルのＩＤ情報を指定したポインタ読み出しコマンドを発行する。ポインタ読み出しコマンドとは、クラスタアドレスのリストが格納されたファイルへアクセスするための情報を指定して、そのクラスタアドレス順にデータを読み出すことのできるコマンドである。ここでホスト１０２がメモリーカード１００１に対してファイルエントリの存在するクラスタアドレスである０ｘ０００６とファイルを特定するためのＩＤ情報であるファイル名「Ｆ」を指定する。
【００９３】
ステップ１１０２でコントローラ１００３はポインタ読み出しコマンドを受けて指定されたクラスタアドレスの０ｘ０００６のファイルエントリ９０１の情報をフラッシュメモリ１０４から読み出してエントリバッファ１００７に転送する。そして、エントリバッファ１００７の中からＩＤ情報であるファイル名が「Ｆ」のレコードを検索し、アドレスリストへのポインタ０ｘ０００７を得る。そしてクラスタアドレス０ｘ０００７のアドレスリスト９０２の情報をフラッシュメモリ１０４から読み出して１００８のアドレスリスト保持部に格納する。
【００９４】
ステップ１１０３ではステップ１１０２で格納したリストの順序に従いクラスタ０ｘ０００２、０ｘ０００３、０ｘ０００５の順にデータを読み出してページバッファ１０６に順次転送する。
【００９５】
ステップ１１０４でホスト１０２はメモリーカード１０１からデータを順次読み出すことでファイルＦを構成するクラスタ０ｘ０００２，０ｘ０００３，０ｘ０００５のデータを読み出すことができる。
【００９６】
最後にステップ１１０５でホスト１０２はメモリーカード１０１に読み出し停止コマンドを発行する。
【００９７】
上記のように、ファイルがフラグメンテーションを起こしていてもホスト１０２はファイルのアドレスのリスト情報を指定して読み出しコマンドを発行することで１回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード１００１から高速にデータを読み出すことができる。
【００９８】
なお、ここではファイルのＩＤ情報としてファイル名を使用してファイルエントリ内のレコードを特定する方法について説明したが、ファイルエントリ内におけるファイルを特定できる情報であればファイル名に限定されるものではなく、シリアルナンバーであったり、ファイルエントリ内のレコードの格納順番を示すインデックスで指定してもよい。
【００９９】
（実施の形態５）
実施の形態４では、ファイルエントリのクラスタアドレスと、ファイルを特定するＩＤ情報でもってアドレスリストの存在するファイルのクラスタアドレスを間接的に指定する場合について説明しているが、ホストが直接アドレスリストの存在するクラスタアドレスを指定して読み出すことも可能である。
【０１００】
図１２はホスト１０２がメモリーカード１００１から図９に示したファイルデータを読み出す際のシーケンス図である。
【０１０１】
最初に、ステップ１２０１でホスト１０２はメモリーカード１００１に読み出しを行うファイルのアドレスリスト９０２のクラスタアドレス０ｘ０００７を指定したポインタ読み出しコマンドを発行する。
【０１０２】
ステップ１２０２でコントローラ１００３はステップ１２０１でホスト１０２から指定されたクラスタアドレス０ｘ０００７のアドレスリスト９０２の情報をフラッシュメモリ１０４から読み出して１００８のアドレスリスト保持部に格納する。
【０１０３】
ステップ１２０３ではステップ１２０２で格納したリストの順序に従いクラスタ０ｘ０００２、０ｘ０００３、０ｘ０００５の順にデータを読み出してページバッファ１０６に順次転送する。
【０１０４】
ステップ１２０３でホスト１０２はメモリーカード１０１からデータを順次読み出すことでファイルＦを構成するクラスタ０ｘ０００２，０ｘ０００３，０ｘ０００５のデータを読み出すことができる。
【０１０５】
最後にステップ１２０４でホスト１０２はメモリーカード１０１に読み出し停止コマンドを発行する。
【０１０６】
上記のように、ファイルがフラグメンテーションを起こしていてもホスト１０２はファイルのアドレスリストの存在するアドレス情報を指定して読み出しコマンドを発行することで１回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード１００１から高速にデータを読み出すことができる。
【０１０７】
（実施の形態６）
実施の形態２ではコントローラはＦＡＴバッファを持ち、自らＦＡＴチェインを読み解きホストからのチェイン読み出しコマンドに対応してファイルのクラスタが構成されている順に読み出しを行っているが、ＦＡＴバッファを使用することで空きクラスタ領域に順に書き込みを行うことも可能である。以降ＦＡＴバッファを使用した書き込みについて説明する。
【０１０８】
図１３は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
【０１０９】
同図において、図１と同じものを同じ番号を付している。メモリーカード１３０１はコントローラ１３０３とフラッシュメモリ１０４からなり、コントローラ１３０３は、１０５の制御回路、１０６のページバッファ、１３０７のＦＡＴバッファ、１３０８のアドレスリスト登録部からなる。
【０１１０】
ＦＡＴバッファ１３０７はＦＡＴを一時的に格納するバッファで、空きクラスタを検索して書き込み先のクラスタアドレスを決定するために使用する。アドレス登録部１３０８は書き込みを行ったクラスタアドレスのリストを登録しておくところである。
【０１１１】
図１４はホスト１０２がメモリーカード１３０１にファイルデータを書き込む際のシーケンス図である。
【０１１２】
最初に、ステップ１４０１でホスト１０２はメモリーカード１３０１に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはＦＡＴから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
【０１１３】
ステップ１４０２でコントローラはＦＡＴの情報をフラッシュメモリ１０４から読み出してＦＡＴバッファ１３０７に格納し、ＦＡＴから空き領域を検索する。
【０１１４】
ステップ１４０３でホスト１０２はメモリーカード１３０１に対してファイルの書き込みデータを転送していく、コントローラ１３０３はホスト１０２から転送されるデータを、ステップ１４０２で検索した空き領域であるクラスタのデータとしてフラッシュメモリ１０４に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部１３０８に登録していく。
【０１１５】
ファイルのデータを全て転送した後に、ステップ１４０４でホスト１０２はメモリーカード１３０１に書き込み停止コマンドを発行し処理を終了する。
【０１１６】
なお、メモリーカード１３０１内部で実際に書き込みが行われたクラスタに関する情報をホスト１０２が得る手法として、ホスト１０２はメモリーカード１３０１からファイルの書き込み時に使用したクラスタのチェイン情報を取得するコマンドを有している。
【０１１７】
ステップ１４０５でホスト１０２はメモリーカード１３０１に処理エントリの問い合わせコマンドを発行すると、ステップ１４０６ではステップ１４０３でコントローラ１３０３が登録していたアドレス登録部１３０８の情報をホスト１０２に転送する。
【０１１８】
ホスト１０２はステップ１４０６で得られる情報により自身が持つＦＡＴの情報を正しく更新することができる。
【０１１９】
上記のように、クラスタの空き領域が離散していてもホスト１０２はＦＡＴから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで１回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード１３０１に高速にデータを書き込むことができる。
【０１２０】
（実施の形態７）
実施の形態６ではコントローラがフラッシュメモリから読み出したＦＡＴの情報を利用して空き領域を検索しているが、ホストの認識しているＦＡＴの情報と整合していない危険性があると共に、フラッシュメモリから読み出すために時間を要することになるので、ホストが直接メモリーカードにＦＡＴ情報を提供する方法もある。以降この方法について説明する。
【０１２１】
本発明の不揮発性記憶装置の構成は実施の形態７と同じ図１３である。
【０１２２】
図１５はホスト１０２がメモリーカード１３０１にファイルデータを書き込む際のシーケンス図である。
【０１２３】
最初に、ステップ１５０１でホスト１０２はメモリーカード１３０１にＦＡＴ情報の転送を行う。コントローラ１３０３はホスト１０２から転送されたＦＡＴ情報をＦＡＴバッファ１３０７に格納する。
【０１２４】
ステップ１５０２でコントローラ１３０３はＦＡＴバッファ１３０７から空き領域を検索する。
【０１２５】
ステップ１５０３でホスト１０２はメモリーカード１３０１に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはＦＡＴから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
【０１２６】
次に、ステップ１５０４でホスト１０２はメモリーカード１３０１に対してファイルの書き込みデータを転送していく、コントローラ１３０３はホスト１０２から転送されるデータを、ステップ１５０２で検索した空き領域であるクラスタのデータとしてフラッシュメモリ１０４に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部１３０８に登録していく。
【０１２７】
ファイルのデータを全て転送した後に、ステップ１５０５でホスト１０２はメモリーカード１３０１に書き込み停止コマンドを発行し処理を終了する。
【０１２８】
上記のように、クラスタの空き領域が離散していてもホスト１０２はＦＡＴから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで１回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード１３０１に高速にデータを書き込むことができる。
【０１２９】
（実施の形態８）
実施の形態６および実施の形態７ではコントローラはＦＡＴバッファを持ち、自ら空き領域を検索する必要があるが、必ずしもコントローラに備えていなくてはならないものではない。ホスト側で空き領域を検索しておき高速に書き込み処理を行うことは可能である。以降この方法について説明する。
【０１３０】
図６は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
【０１３１】
同図において、図１と同じものを同じ番号を付している。メモリーカード６０１はコントローラ６０３とフラッシュメモリ１０４からなり、コントローラ６０３は、１０５の制御回路、１０６のページバッファ、６０８のアドレスリスト保持部からなる。
【０１３２】
アドレスリスト保持部６０８とは任意のファイルを構成するクラスタアドレスのリスト情報を格納するところである。
【０１３３】
図１６はホスト１０２がメモリーカード６０１にファイルデータを書き込む際のシーケンス図である。
【０１３４】
最初に、ステップ１６０１でホスト１０２はメモリーカード６０１にアドレスリストを指定したリスト書き込みコマンドを発行する。リスト書き込みコマンドとは指定したクラスタのリストの順にデータを書き込むことを指示するコマンドである。
【０１３５】
ステップ１６０２でコントローラ６０３はステップ１６０１でホスト１０２から指定されたアドレスをアドレスリスト保持部６０８に格納する。
【０１３６】
次に、ステップ１６０３でホスト１０２はメモリーカード６０１に対してファイルの書き込みデータを転送していく、コントローラ６０３はホスト１０２から転送されるデータを、ドレスリスト保持部６０８に保持されたリストの順に対応クラスタのデータとしてフラッシュメモリ１０４に順次書き込んでいく。
【０１３７】
ホスト１０２はファイルのデータを全て転送し、コントローラ６０３がホストから転送されたデータを全てフラッシュメモリ１０４に書き終えて処理を終了する。
【０１３８】
上記のように、クラスタの空き領域が離散していてもホスト１０２は書き込み先となるクラスタアドレスのリストをメモリーカード６０１に指示することで１回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード１３０１に高速にデータを書き込むことができる。
【０１３９】
（実施の形態９）
実施の形態６および実施の形態７ではＦＡＴを使用したファイルシステムを前提にしているが、クラスタを管理する方法としてはＦＡＴを使用したものではなく、クラスタ単位のビット情報として管理するファイルシステムもある。
【０１４０】
図１７はスペースビットマップの構成を示した図である。スペースビットマップ１７０１はビットマップでクラスタの使用状況を管理するファイルシステムの例である。各クラスタが使用されている状態なのか、空き状態なのかを１クラスタにつき１ビットの情報として格納している。使用している状態はビット“０”で、空き状態はビット“１”で表している。すなわち図１７の状態ではクラスタ０ｘ０００２，０ｘ０００３ｘ０ｘ０００５が使用している状態でクラスタ０ｘ０００４，０ｘ０００６は空き状態であることを示している。
【０１４１】
以降、ビットマップを使用した場合の実施の形態について説明する。
【０１４２】
図１８は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
【０１４３】
同図において、図１と同じものを同じ番号を付している。メモリーカード１８０１はコントローラ１８０３とフラッシュメモリ１０４からなり、コントローラ１８０３は、１０５の制御回路、１０６のページバッファ、１８０７のビットマップバッファ、１８０８のアドレスリスト保持部からなる。
【０１４４】
ビットマップバッファ１８０７はスペースビットマップ１７０１を格納するためのバッファであり、アドレスリスト保持部１８０８とはクラスタアドレスのリスト情報を格納するところである。
【０１４５】
図１９はホスト１０２がメモリーカード１００１にファイルデータを書き込む際のシーケンス図である。
【０１４６】
最初に、ステップ１９０１でホスト１０２はメモリーカード１８０１に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはスペースビットマップから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
【０１４７】
ステップ１９０２でコントローラはスペースビットマップの情報をフラッシュメモリ１０４から読み出してビットマップバッファ１９０７に格納し、ビットマップバッファ１９０７から空き領域を検索する。
【０１４８】
ステップ１９０３でホスト１０２はメモリーカード１８０１に対してファイルの書き込みデータを転送していく、コントローラ１８０３はホスト１０２から転送されるデータを、ステップ１９０２で検索した空き領域であるクラスタのデータとしてフラッシュメモリ１０４に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部１８０８に登録していく。
【０１４９】
ファイルのデータを全て転送した後に、ステップ１９０４でホスト１０２はメモリーカード１８０１に書き込み停止コマンドを発行し処理を終了する。
【０１５０】
なお、メモリーカード１８０１内部で実際に書き込みが行われたクラスタに関する情報をホスト１０２が得る手法として、ホスト１０２はメモリーカード１８０１からファイルの書き込み時に使用したクラスタのリスト情報を取得するコマンドを有している。
【０１５１】
ステップ１９０５でホスト１０２はメモリーカード１８０１に処理エントリの問い合わせコマンドを発行すると、ステップ１９０６ではステップ１９０３でコントローラ１８０３が登録していたアドレス登録部１８０８の情報をホスト１０２に転送する。
【０１５２】
ホスト１０２はステップ１９０６で得られる情報を使用して自身が持つビットマップの情報を正しく更新することができる。
【０１５３】
上記のように、クラスタの空き領域が離散していてもホスト１０２はビットマップバッファから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで１回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード１８０１に高速にデータを書き込むことができる。
【０１５４】
（実施の形態１０）
実施の形態９ではコントローラがフラッシュメモリから読み出したスペースビットマップの情報を利用して空き領域を検索しているが、ホストの認識しているスペースビットマップの情報と整合していない危険性があると共に、フラッシュメモリから読み出すために時間を要することになるので、ホストが直接メモリーカードにスペースビットマップ情報を提供する方法もある。以降この方法について説明する。
【０１５５】
本発明の不揮発性記憶装置の構成は実施の形態９と同じ図１８である。
【０１５６】
図２０はホスト１０２がメモリーカード１００１にファイルデータを書き込む際のシーケンス図である。
【０１５７】
最初に、ステップ２００１でホスト１０２はメモリーカード１８０１にビットマップ情報の転送を行う。コントローラ１８０３はホスト１０２から転送されたビットマップ情報をビットマップバッファ１８０７に格納する。
【０１５８】
ステップ２００２でコントローラ１８０３はビットマップバッファ１８０７から空き領域を検索する。
【０１５９】
ステップ２００３でホスト１０２はメモリーカード１８０１に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはスペースビットマップから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
【０１６０】
ステップ２００４でホスト１０２はメモリーカード１８０１に対してファイルの書き込みデータを転送していく、コントローラ１８０３はホスト１０２から転送されるデータを、ステップ２００２で検索した空き領域であるクラスタのデータとしてフラッシュメモリ１０４に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部１８０８に登録していく。
【０１６１】
ファイルのデータを全て転送した後に、ステップ２００５でホスト１０２はメモリーカード１８０１に書き込み停止コマンドを発行し処理を終了する。
【０１６２】
上記のように、クラスタの空き領域が離散していてもホスト１０２はビットマップバッファから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで１回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード１８０１に高速にデータを書き込むことができる。
【産業上の利用可能性】
【０１６３】
以上のように、本発明に係わるアドレス予測機能をもつ不揮発性記憶装置は、フラグメンテーションの発生したファイルに対しても高速読み出しを行なうことができるので、音楽データや映像データを取り扱う機器、例えばデジタルカメラやデジタルビデオカメラ等の携帯機器のデータを記憶する記憶装置に用いるのに適している。
【図面の簡単な説明】
【０１６４】
【図１】本発明の実施の形態１による不揮発性記憶装置とホストの構成を示すブロック図
【図２】同不揮発性記憶装置の論理マップを示す概念図
【図３】同不揮発性記憶装置のファイルと論理マップの対応を示す概念図
【図４】同不揮発性記憶装置の読み出しのコントローラとホスト間のシーケンス図
【図５】本発明の実施の形態２による読み出しのコントローラとホスト間のシーケンス図
【図６】本発明の実施の形態３による不揮発性記憶装置とホストの構成を示すブロック図
【図７】同不揮発性記憶装置による読み出しのコントローラとホスト間のシーケンス図
【図８】同不揮発性記憶装置によるアドレスリストの一例を示す模式図
【図９】本発明の実施の形態４による不揮発性記憶装置のファイルリストとアドレスリストの概念図
【図１０】本発明の実施の形態４による不揮発性記憶装置とホストの構成を示すブロック図
【図１１】同不揮発性記憶装置の読み出しのコントローラとホスト間のシーケンス図
【図１２】本発明の実施の形態５によるコントローラとホスト間のシーケンス図
【図１３】本発明の実施の形態６による不揮発性記憶装置とホストの構成を示すブロック図
【図１４】同不揮発性記憶装置の書き込みのコントローラとホスト間のシーケンス図
【図１５】本発明の実施の形態７による書き込みのコントローラとホスト間のシーケンス図
【図１６】本発明の実施の形態８による書き込みのコントローラとホスト間のシーケンス図
【図１７】本発明の実施の形態９による不揮発性記憶装置によるスペースビットマップの一例を示す模式図
【図１８】同不揮発性記憶装置とホストの構成を示すブロック図
【図１９】同不揮発性記憶装置の書き込みのコントローラとホスト間のシーケンス図
【図２０】本発明の実施の形態１０による書き込みのコントローラとホスト間のシーケンス図
【図２１】従来の不揮発性記憶装置とホストの構成を示すブロック図
【図２２】従来の不揮発性記憶装置の読み出しのコントローラとホスト間のシーケンス図
【図２３】従来の不揮発性記憶装置の書き込みのコントローラとホスト間のシーケンス図
【符号の説明】
【０１６５】
１０１、６０１、１００１、１３０１、１８０１、２１０１    メモリーカード
１０２    ホスト
１０３、６０３、１００３、１３０３、１８０３、２１０３    コントローラ
１０４    フラッシュメモリ
１０５    制御回路
１０６    ページバッファ
１０７、１３０７    ＦＡＴバッファ
１０８    アドレス保持部
６０８、１００８    アドレスリスト保持部
９０１    ファイルエントリ
９０２    アドレスリスト
９０３    レコード
１００７    エントリバッファ
１３０８、１８０８    アドレス登録部
１７０１    スペースビットマップ
１８０７    ビットマップバッファ
【図１】
2006277737.tif 000003
【図２】
2006277737.tif 000004
【図３】
2006277737.tif 000005
【図４】
2006277737.tif 000006
【図５】
2006277737.tif 000007
【図６】
2006277737.tif 000008
【図７】
2006277737.tif 000009
【図８】
2006277737.tif 000010
【図９】
2006277737.tif 000011
【図１０】
2006277737.tif 000012
【図１１】
2006277737.tif 000013
【図１２】
2006277737.tif 000014
【図１３】
2006277737.tif 000015
【図１４】
2006277737.tif 000016
【図１５】
2006277737.tif 000017
【図１６】
2006277737.tif 000018
【図１７】
2006277737.tif 000019
【図１８】
2006277737.tif 000020
【図１９】
2006277737.tif 000021
【図２０】
2006277737.tif 000022
【図２１】
2006277737.tif 000023
【図２２】
2006277737.tif 000024
【図２３】
2006277737.tif 000025