(57)【要約】【課題】動作速度を向上出来るホスト装置及びメモリデバイスを提供する。【解決手段】実施形態のホスト装置は、アプリケーションソフトウェアと、専用ファイルシステムと、インターフェース回路とを備える。アプリケーションは、専用ファイルシステムに対してメモリデバイスのアクセス要求を発行する。専用ファイルシステムは、メモリデバイスに対するアクセス制御を行う。専用ファイルシステムは、メモリデバイスの論理アドレス空間を、所定の単位領域ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令で構成され、アプリケーションは、単位領域サイズを認識することなく、アクセス要求を専用ファイルシステムに発行する。【選択図】図２
2014044490.tif 000002
【特許請求の範囲】
【請求項１】
メモリデバイスにアクセスするホスト装置であって、
ファイルシステムに対してアプリケーションインタフェースにより前記メモリデバイスへのアクセス要求を発行するアプリケーションソフトウェアと、
前記アクセス要求に応答して、前記メモリデバイスのメモリ領域をフラッシュメモリに適した方式で管理を行う専用ファイルシステムと、
ホスト装置の前記専用ファイルシステムと前記メモリデバイス間の通信を可能にするインターフェース回路と
を具備し、前記専用ファイルシステムは、前記メモリデバイスの論理アドレス空間を、所定の単位領域ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、前記単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令で構成され、
前記アプリケーションソフトウェアは、前記単位領域サイズを認識することなく、前記アクセス要求を前記専用ファイルシステムに発行する
ことを特徴とするホスト装置。
【請求項２】
前記専用ファイルシステムは、
前記アプリケーションからディレクトリの作成要求があった場合、ディレクトリエントリ用の前記単位領域が確保されていなければ、空き単位領域をディレクトリエントリ用の単位領域として確保し、複数のディレクトリが作成された場合、それぞれのディレクトリエントリをこのＡＵの空き領域に確保し、
前記メモリデバイス内のデータを削除する場合、削除対象データを再利用できない方法でデータを管理し、
全領域が未使用である前記単位領域の数に基づいて、前記メモリデバイス全体の空き領域を計算する
ことを特徴とする請求項１のホスト装置。
【請求項３】
前記専用ファイルシステムは、ファイルを前記メモリデバイスに書き込む際、前記アプリケーションソフトウェアからのファイルデータサイズ情報の大小を基づいて、小さなデータファイルである場合には、前記メモリデバイスの領域使用率を優先したアルゴリズムを用いて前記メモリデバイスを管理し、
大きなデータを持つファイルの場合には、前記単位領域ごとにデータの書き込み領域を管理するアルゴリズムを用いて前記メモリデバイスを管理し、
前記ファイルデータサイズが未定な場合は、ディレクトリエントリ内の前記ファイルエントリ情報に基づいて、大きなデータを持つ可能性のあるファイル属性であるか否かを識別し、前記アルゴリズムを切り替える
ことを特徴とする請求項１記載のホスト装置。
【請求項４】
前記専用ファイルシステムは、前記ディレクトリエントリ内の前記ファイルエントリに記録されているファイル拡張子情報、またはビデオファイルであるか否かを示す情報フィールドに基づいて、前記書き込みデータがビデオファイルであるか否かを識別する
ことを特徴とする請求項３記載のホスト装置。
【請求項５】
前記専用ファイルシステムは、削除対象データを再利用できない方法として、隠しファイル属性を設定したジャンクファイルとして管理する
ことを特徴とする請求項１記載のホスト装置。
【請求項６】
請求項１記載のホスト装置によってアクセスされる前記メモリデバイスであって、
ディレクトリエントリ領域を確保するコマンドを前記ホスト装置から受信した場合、指定された領域が“０”で満たされるように初期化行い、前記ホスト装置が、そのディレクトリエントリ領域を初期化する必要がない
ことを特徴とするメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はホスト装置及びメモリデバイスに関する。
【背景技術】
【０００２】
記録メディアとして、ＮＡＮＤ型フラッシュメモリを用いたメモリデバイスが広く普及している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１７８９２３号公報
【特許文献２】国際公開ＷＯ２０１１／０９３５１７号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
動作速度を向上出来るホスト装置及びメモリデバイスを提供する。
【課題を解決するための手段】
【０００５】
実施形態のホスト装置は、メモリデバイスにアクセスするホスト装置であって、ファイルシステムに対してアプリケーションインタフェース(ＡＰＩ)によりメモリデバイスへのアクセス要求を発行するアプリケーションソフトウェアと、アクセス要求に応答して、前記メモリデバイスのメモリ領域をフラッシュメモリに適した方式で管理を行う専用ファイルシステムと、ホスト装置の専用ファイルシステムとメモリデバイス間の通信を可能にするインターフェース回路とを具備する。専用ファイルシステムは、メモリデバイスの論理アドレス空間を、所定の単位領域ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令で構成され、アプリケーションソフトウェアは、単位領域サイズを認識することなく、アクセス要求を専用ファイルシステムに発行する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るホスト装置およびメモリカードのハードウェア構成を示すブロック図。
【図２】第１実施形態に係るホスト装置の機能ブロック図。
【図３】第１実施形態に係るメモリカード内のレジスタを示すブロック図。
【図４】第１実施形態に係るＮＡＮＤ型フラッシュメモリのブロック図。
【図５】第１実施形態に係るホスト装置の認識する記憶領域とメモリカードの記憶領域の概念図。
【図６】第１実施形態に係る記憶領域の概念図であり、ホスト装置によるデータ書き込み方法を示す図。
【図７】第１実施形態に係るデータ書き込み方法を示すフローチャート。
【図８】第１実施形態に係るコマンドの概念図。
【図９】第１実施形態に係るコマンドシーケンスを示すタイミングチャート。
【図１０】第１実施形態に係るコマンドシーケンスを示すタイミングチャート。
【図１１】第２実施形態に係るホスト装置の機能ブロック図。
【図１２】第３実施形態に係るメモリ空間の概念図。
【図１３】第３実施形態に係るＦＡＴの概念図。
【図１４】第３実施形態に係るディレクトリエントリの概念図。
【図１５】第３実施形態に係るデータ削除方法のフローチャート。
【図１６】第３実施形態に係るデータ削除方法を示す模式図。
【図１７】第３実施形態に係るデータ削除方法のフローチャート。
【図１８】第３実施形態に係るデータ削除方法を示す模式図。
【図１９】第３実施形態に係るデータ上書き方法のフローチャート。
【図２０】第３実施形態に係るデータ上書き方法を示す模式図。
【図２１】第３実施形態に係るデータ上書き方法のフローチャート。
【図２２】第３実施形態に係るデータ上書き方法を示す模式図。
【図２３】ＮＡＮＤ型フラッシュメモリの閾値分布を示すグラフ。
【図２４】第４実施形態に係るメモリカードの動作を示すフローチャート。
【図２５】第４実施形態に係るホスト装置の動作を示すフローチャート。
【図２６】第６実施形態に係るデータ書き込み方法を示すフローチャート。
【図２７】第６実施形態に係るデータ書き込み方法を示す模式図。
【図２８】第６実施形態に係るデータ書き込み方法を示すフローチャート。
【図２９】第６実施形態に係るデータ書き込み方法を示すフローチャート。
【図３０】第６実施形態に係るデータ書き込み方法を示す模式図。
【図３１】第６実施形態に係るデータ書き込み方法を示すフローチャート。
【図３２】第７実施形態に係るデータ書き込み方法を示すフローチャート。
【図３３】メモリセルアレイのブロック図。
【図３４】第１乃至第７実施形態に係る論理アドレス空間とブロックとの対応を示す概念図。
【図３５】ディレクトリ構造の概念図。
【図３６】第１乃至第７実施形態に係る論理アドレス空間の概念図。
【図３７】ディレクトリ構造の概念図。
【図３８】第１乃至第７実施形態に係る論理アドレス空間の概念図。
【図３９】第１乃至第７実施形態に係るＡＵの概念図。
【発明を実施するための形態】
【０００７】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００８】
１．第１実施形態  
第１実施形態に係るホスト装置について説明する。以下では、メモリカードと、このメモリカードにアクセスするホスト装置とを含むメモリシステムを例に挙げて説明する。なお本明細書では、メモリカードがＳＤメモリカードである場合を例に説明する。
【０００９】
１．１  構成について  
まず、ホスト装置及びメモリカードの構成について、図１を用いて説明する。図１は、本実施形態に係るメモリシステムのハードウェア構成を示すブロック図である。
【００１０】
１．１．１  ホスト装置の構成について  
まず、図１を参照してホスト装置の構成について説明する。図示するようにホスト装置１は、ＭＰＵ（micro processing unit）１１、ＳＤインターフェース回路１２、ＲＯＭ（read only memory）１４、及びＲＡＭ（random access memory）１３等を備えている。
【００１１】
ＭＰＵ１１は、ホスト装置１全体の動作を司る。ホスト装置１が電源供給を受けた際、ＲＯＭ１４に格納されているファームウェア（制御プログラム（命令））がＲＡＭ１３上に読み出される。そしてＭＰＵ１１は、このファームウェア（命令）に従って所定の処理を実行する。またＭＰＵ１１は、ＲＡＭ１３及びＲＯＭ１４に保持されるプログラム１５を実行することにより、種々の機能を実現する。このプログラム１５には、種々のアプリケーションソフトウェア、オペレーティングシステム、ファイルシステム等が含まれる。
【００１２】
ＳＤインターフェース回路１２は、メモリカード２との間の通信プロトコルを司る。ＳＤインターフェース回路１２は、ホスト装置１とメモリカード２とが通信するのに必要な様々な取り決めに従って動作し、後述のメモリカード２のＳＤインターフェース４１と相互に認識可能な各種のコマンドの組を備えている。
【００１３】
図２は、上記ＭＰＵ１１及びＳＤインターフェース回路１２によって実現されるホスト装置１の機能を示す機能ブロック図である。これらの機能の少なくとも一部は、例えばＲＡＭ１３やＲＯＭ１４内のプログラム１５を実行することによって実現される。図示するようにホスト装置１は、アプリケーション５０、ファイル制御ユニット５１、ファイルシステム５２、ホストコントローラドライバ５３、ホストコントローラ５４、基本ＡＰＩ（application program interface）５５、５７、拡張ＡＰＩ５６、ホストドライバインターフェース５８、及びメモリバスインターフェース５９を備える。
【００１４】
アプリケーション５０は、ＭＰＵ１１によって実行されるアプリケーションソフトウェアである。そしてアプリケーション５０は、ファイルオープン/クローズ、データの書き込み、読み出し、及び消去などの命令をファイル制御ユニット５１に発行することにより、メモリカード２へアクセスする。
【００１５】
ファイル制御ユニット５１及びファイルシステム５２は、一体となって専用ファイルシステムとして機能する。ファイルシステム５２は、専用ファイルシステムのファイルシステム本体であり、例えばＦＡＴ（file allocation table）ファイルシステムである。ファイルシステム５２は、管理対象となる記憶媒体（メモリカード２）に記録されているファイルデータを管理するための仕組みであり、メモリカード２内に管理情報（ＦＡＴ）を記録し、この管理情報を用いてファイルデータを管理する。ファイル制御ユニット５１は、このファイルシステム５２に基づいて、メモリカード２のメモリ空間をメモリの物理的境界を示すアロケーションユニット（ＡＵ：allocation unit）単位で管理し、またメモリカード２をそのスピードクラス（Speed Class）に基づいて制御する。ＡＵ及びスピードクラスについては後述する。
【００１６】
基本ＡＰＩ５５は、標準的なファイルシステムＡＰＩであり、アプリケーション５０とファイル制御ユニット５１との間、及びファイル制御ユニット５１とファイルシステム５２との間で用いられる。拡張ＡＰＩ５６は、基本ＡＰＩ５５の機能を拡張したＡＰＩである。拡張ＡＰＩ５６は、ファイル制御ユニット５１によるメモリカード１の制御のために用意され、ファイル制御ユニット５１とファイルシステム５２との間で用いられる。基本ＡＰＩ５５及び拡張ＡＰＩ５６の詳細については、第５実施形態で説明する。
【００１７】
ホストコントローラドライバ５３は、ホストドライバインターフェース５８によってファイルシステム５２と接続される。そして、専用ファイルシステムの命令に従って、ホストコントローラ５４を制御する。
【００１８】
ホストコントローラ５４は、図１のＳＤインターフェース回路１２のことであり、半導体回路によって実現される。そしてホストコントローラ５４は、ホストコントローラドライバ５３のプログラムに従って、メモリカード２を制御する。ホストコントローラ５４とメモリカード２との間は、メモリバスインターフェース５９で接続される。そしてホストコントローラ５４は、ＳＤインターフェースで定義されたコマンドを用いて、メモリカード２に対する命令を発行する。
【００１９】
１．１．２  メモリカードの構成について  
次に、図１に戻ってメモリカード２の構成について説明する。図示するようにメモリカード２は、ＮＡＮＤ型フラッシュメモリ３１及びコントローラ３２を備える。
【００２０】
ＮＡＮＤ型フラッシュメモリ３１は、データを不揮発に記憶する。ＮＡＮＤ型フラッシュメモリ３１は、複数のメモリセルを含むページと呼ばれる単位でデータを書き込み、また読み出す。各ページには、固有の物理アドレスが割り当てられている。更にＮＡＮＤ型フラッシュメモリ３１は、複数のページを含むブロックと呼ばれる単位でデータを消去する。なお、ブロック単位で物理アドレスが割り当てられていても良い。
【００２１】
コントローラ３２は、ホスト装置１からの要求に応じて、ＮＡＮＤ型フラッシュメモリ３１に対してデータの書き込み、読み出し、及び消去を命令する。またコントローラ３２は、ＮＡＮＤ型フラッシュメモリ３１によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（またはブロック）が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ（またはブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することを含んでいる。
【００２２】
図１に示すようにコントローラ３２は、ＳＤインターフェース４１、ＭＰＵ４２、ＲＡＭ４４、ＲＯＭ４３、及びＮＡＮＤインターフェース４５を備えている。
【００２３】
ＳＤインターフェース４１は、メモリカード２とホスト装置１との間の通信を司る。より具体的には、ＳＤインターフェース４１は、ホスト装置１のＳＤインターフェース１２との間で、種々のコマンドやデータの授受を制御する。またＳＤインターフェース４１はレジスタ４６を備える。レジスタ４６については後述する。
【００２４】
ＭＰＵ４２は、メモリカード２全体の動作を司る。メモリカード２が電源供給を受けた際にＲＯＭ４３に格納されているファームウェア（制御プログラム（命令））がＲＡＭ４４上に読み出される。そして、ＭＰＵ４２は、このファームウェア（命令）に従って所定の処理を実行する。ＭＰＵ４２は、制御プログラムに従って各種のテーブル（後述）をＲＡＭ４４上で作成したり、ホスト装置１から受けたコマンドに従ってＮＡＮＤ型フラッシュメモリ３１に対する所定の処理を実行したりする。
【００２５】
ＲＯＭ４３は、ＭＰＵ４２により制御される制御プログラムなどを格納する。ＲＡＭ４４は、ＭＰＵ４２の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム５２によってデータに割り当てられた論理アドレスと、当該データを格納しているページの物理アドレスとの変換テーブル（論理アドレス／物理アドレス変換テーブル）が含まれる。ＮＡＮＤインターフェース４５は、コントローラ３２とＮＡＮＤ型フラッシュメモリ３１との間のインターフェース処理を行う。
【００２６】
図３は、ＳＤインターフェース内のレジスタ４６の概念図である。図示するようにレジスタ４６は、カードステータスレジスタ、ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲの各種レジスタを有する。これらのレジスタは、エラー情報、メモリカード２の個体番号、相対カードアドレス、メモリカード２のバス駆動力、メモリカード２の特性パラメータ値、データ配置、メモリカード２の動作範囲電圧に制限のある場合の動作電圧等を格納している。
【００２７】
またレジスタ４６（例えばＣＳＤ）は、メモリカード２のスピードクラス、データのコピーに要する時間、及びＡＵサイズ等を格納している。スピードクラスは、メモリカード２が保証する最低の書き込み速度によって規定されている。また、スピードクラスによって最高の書き込み速度が定められている。従ってホスト機器１は、レジスタ４６からこれらの情報を読み出すことで、メモリカード２のスピードクラス及びＡＵサイズを知ることが出来る。なお、スピードクラスの詳細については、参照によって本明細書に組み込まれる特開２００６−１７８９２３号公報において「性能クラス」として説明されている。
【００２８】
１．２  メモリシステムのメモリ空間について  
次に、上記構成のメモリシステムのメモリ空間について説明する。図４は、ＮＡＮＤ型フラッシュメモリ３１のメモリ領域の概念図である。
【００２９】
図示するようにＮＡＮＤ型フラッシュメモリ３１は、メモリセルアレイ４８とページバッファ４９とを備える。メモリセルアレイ４８は、複数のブロックＢＬＫを含んでいる。各ブロックＢＬＫは複数のページＰＧを含み、各ページＰＧは複数のメモリセルトランジスタを含む。各ページＰＧのサイズは例えば２１１２バイトであり、各ブロックＢＬＫは例えば１２８ページを含む。データの消去はブロックＢＬＫ単位で行われる。ページバッファ４９は、ＮＡＮＤ型フラッシュメモリ３１へのデータ及びＮＡＮＤ型フラッシュメモリ３１からのデータを一時的に保持する。ここに上げた数値はひとつの例であり、ＮＡＮＤ型フラッシュメモリの種類によって数値は異なる。
【００３０】
このメモリ空間は、保存されるデータの種類に応じて、例えばシステムデータ領域、機密データ領域、保護データ領域、及びユーザデータ領域等を含んでいる。システムデータ領域は、コントローラ３２の動作に必要なデータを保持する。機密データ領域は、暗号化に用いる鍵情報や認証時に使用する機密データを保持し、ホスト装置１はアクセスできない。保護データ領域は、重要なデータやセキュアなデータを保持する。ユーザデータ領域は、ホスト装置１が自由にアクセスおよび使用することが可能で、例えばＡＶコンテンツファイルや画像データ等のユーザデータを保持する。
【００３１】
図５は、ホスト装置１から見たメモリ空間と、メモリカード２の物理的なメモリ領域の様子を示す概念図である。前述の通り、メモリカード２のメモリ領域は、複数の物理的なブロックＢＬＫを含み、各ブロックＢＬＫは複数のページを含む。
【００３２】
ホスト装置１は、スピードクラスを用いる場合、アロケーションユニットＡＵとレコーディングユニット（ＲＵ：recording unit）の２つの単位でメモリ空間を管理する。ＲＵは、ホスト装置１の発行する１回のマルチブロック書き込みコマンドでデータを書き込む最小単位に相当する。つまり、ホスト装置１はひとつ、または複数のＲＵ単位でデータを書き込むことが出来る。するとコントローラ３２は、この書き込みデータを適当なページに書き込む。ＲＵのサイズは、例えばページサイズよりも大きく、ページサイズの整数倍である。従ってメモリカード２は、ＲＵサイズの書き込みデータを、物理アドレスが連続する複数のページに書き込む。
【００３３】
ＡＵは、連続する所定数のＲＵの集合である。ホスト装置１は、メモリカード２のメモリ空間をＡＵ単位で管理する。そしてホスト装置１はデータを書き込む際、ＡＵ単位で領域を確保し、またＡＵ単位でメモリカード２の空き容量を計算する。この動作に関しては下記に詳細に説明する。ＡＵはまた、上記ユーザデータ領域における物理的な境界であり、例えば物理ブロックＢＬＫのサイズの整数倍のサイズを有する。ＡＵを指し示す論理アドレスと、物理ブロックを指し示す物理アドレスは、テーブルによって変換されるため、その対応関係は任意であり、制限されない。
【００３４】
従ってＲＵは、連続する複数のページを意味し、ＡＵは、連続する複数のブロックを意味する。なお、ホスト装置１においてＡＵのサイズを認識しているのは専用ファイルシステムであり、アプリケーション５０は認識していない。つまりアプリケーション５０は、ＡＵに基づくことなくデータの書き込み要求を専用ファイルシステムに発行し、メモリ空間をＡＵ単位で管理する専用ファイルシステムは、この書き込み要求に従って適切にメモリカード２を制御する。
【００３５】
１．３  データの書き込み方法について  
次に、ホスト装置１によるメモリカード２へのデータの書き込み方法について説明する。ホスト装置１から見たメモリ空間は、さらにファイルシステムでフォーマットされ、ファイルシステムの管理単位であるクラスタ単位に管理される。クラスタの大きさは、ファイルシステムの種類やメモリカード容量により異なる。前記ＲＵのサイズは、例えばクラスタサイズよりも大きく、クラスタサイズの整数倍である。
【００３６】
１．３．１  書き込み方法の概念について  
まず、本実施形態に係る書き込み方法の大まかな概念につき図６を用いて説明する。図６はＡＵ-basedメモリマップと、使用中のＡＵ及び空きＡＵの様子を示す概念図である。図示するように、各ＡＵは複数のクラスタの集合である。また図６では、５つのクラスタにそれぞれデータＤＡＴ１〜ＤＡＴ５を書き込む場合を例に、２種類のアルゴリズムによる書き方の違いを示している。
【００３７】
図６右の例は、本提案の専用ファイルシステムが採用するアルゴリズムで、本実施形態に係るホスト装置１はデータを書き込む際、図６のFree AU Write Algorithmに示すように、いずれかの空きＡＵ（全てのクラスタが未使用であるＡＵ）を選択して、このＡＵにデータを書き込む。そのため、必然的にデータＤＡＴ１〜ＤＡＴ５はＡＵ内の先頭アドレスからシーケンシャルに書き込まれる（シーケンシャルライト）。
【００３８】
これに対して図６左の例は、従来ファイルシステムが採用しているアルゴリズムで、図中のFragmented AU Write Algorithmは、空きＡＵだけでなく、一部のクラスタにデータが書き込み済みであるが、残りのクラスタが未使用であるＡＵ（フラグメンテーション領域）をも選択する方法である。図６では、フラグメンテーション領域にデータＤＡＴ１〜ＤＡＴ５が書き込まれる場合について示している。本方法であるとＡＵを有効利用できるが、データＤＡＴ１〜ＤＡＴ５の書き込みだけでなく、書き込み済みデータのコピー動作も必要となり、ＮＡＮＤ型フラッシュメモリに最適な書き込み方法とは言えない。これは、ＮＡＮＤ型フラッシュメモリではデータの上書きが出来ないからである。ホスト装置１は、このようなFragmented AU Write Algorithmを用いることなく、Free AU Write Algorithmに従ってデータを書き込む。
【００３９】
１．３．２  書き込み方法の詳細について  
次に、本実施形態に係る書き込み方法の詳細について、図７を用いて説明する。図７は、データの書き込み時におけるアプリケーション５０、専用ファイルシステム、及びメモリカード２の動作を示すフローチャートである。
【００４０】
図示するように、いずれかのタイミングにおいて専用ファイルシステムは、メモリカード２からＡＵサイズ及びスピードクラス情報を読み出す。これは前述の通り、メモリカード２のレジスタ４６から読み出すことが出来る。これにより専用ファイルシステムは、メモリカード２のＡＵサイズ及びスピードクラスを把握する。
【００４１】
アプリケーション５０からのディレクトリ作成要求に応答して専用ファイルシステムは、ディレクトリエントリ作成用の空きＡＵを確保する（例えば図６のＡＵ１）。専用ファイルシステムはこのＡＵを、ディレクトリエントリの作成用に用いる。後で複数のディレクトリが作成された場合も、各ディレクトリのディレクトリエントリをこの同じＡＵに割り当てていく。こうすることで、メモリカード２は、ディレクトリエントリに対するランダムアクセスをＡＵ内で効率的に処理できるようになる。ＡＵに空きがなくなった場合は、専用ファイルシステムは、別なＡＵをディレクトリエントリ用に確保する。
【００４２】
アプリケーション５０からのファイルオープン要求に応答して専用ファイルシステムは、確保したディレクトリエントリの作成用ＡＵにディレクトリエントリを作成する。ＳＤインターフェース仕様で定義されたCMD20 Create DIRコマンド（図８を用いて後述する）により、ディレクトリエントリのクラスタ位置を指定する。引き続き専用ファイルシステムは、CMD20 Update DIR コマンドを用いて確保したディレクトリエントリ領域にファイルエントリデータをシーケンシャルに書き込む領域を指定する。これにより、メモリカード２は効率的にファイルエントリの書き込み管理を行うことができる。
【００４３】
そしてアプリケーション５０は、専用ファイルシステムに対して、データの書き込み要求を発行する。書き込みデータは、図１のＲＡＭ１３上に保存されている。この際アプリケーション５０は、ＲＡＭ１３上のデータの場所と大きさを専用ファイルシステムに伝える。前述の通りアプリケーション５０は、ＡＵサイズ及びスピードクラスの情報を把握している必要は無い。ＭＰＵ１１は通常、ページ管理機能を持っているため、シーケンシャルに読み出せるように配置可能である。専用ファイルシステムは、データ書き込み用の空きＡＵを確保し、データをこのＡＵにシーケンシャルに書き込む。
【００４４】
アプリケーション５０は、データの書き込みが完了すると、ファイルクローズ要求を発行する。専用ファイルシステムは、ＦＡＴテーブルとファイルエントリを更新して、記録したデータを確定する。
【００４５】
１．３．３  ＣＭＤ２０とコマンドシーケンスについて  
次に、上記コマンドＣＭＤ２０と、データを書き込む際のコマンドシーケンスについて説明する。図８は、ＣＭＤ２０の構成を示す概念図である。
【００４６】
図示するようにＣＭＤ２０は、少なくともインデックスフィールド、動作指定フィールドＳＣＣ、ストリーム番号フィールドＳＮ、及びＣＲＣ（cyclic redundancy check）フィールドを含んでいる。なお、インデックスフィールドの前の“Ｓ”はスタートビットであり常時“０”である。また“Ｔ”はトランスミッタビットであり、“１”はホスト装置からのコマンドであり“０”はメモリカードからのレスポンスであることを示す。
【００４７】
インデックスフィールドは、コマンドがＣＭＤ２０であることを特定するために、１０進の２０を１６進数で表現した１４ｈ(６-bit)のビット列を有する。動作指定フィールドＳＣＣは、ＣＭＤ２０が要求する動作の種類を特定するビット列を有する。動作指定フィールドＳＣＣ内の引数に応じて、ＣＭＤ２０は、書き込み（記録）開始（図８のStart Recording）、ＤＩＲ（directory entry）作成（図８のCreate DIR）、ＤＩＲ更新（Ｆｉｌｅ Ｅｎｔｒｙの作成、図８のUpdate DIR）、新ＡＵ書き込み（図８のSet New AU）、書き込み（記録）終了（図８のEnd Recording）、ＣＩ更新（図８のUpdate CI）のいずれかを命令するコマンドとして振舞う。ストリーム番号フィールドＳＮは、ＣＭＤ２０が担う命令がストリーム１〜４のいずれに対するのかを特定する引数を含んでいる。各命令の意味は後述する。ＣＲＣフィールドは、ＣＲＣ符号を有する。シングルストーム規格の場合は、ＳＣＣ内の新ＡＵ書き込み、書き込み（記録）終了、ストリーム番号フィールドＳＮは非サポートである。ストリーム番号フィールドＳＮが“００００ｂ”の場合は、シングルストリームとして動作する。
【００４８】
図９は、ＣＭＤ２０とその後にホスト装置１とメモリカード２との間で授受される信号を例示している。図示するように、ＳＤインターフェース１２、４１において、少なくともコマンドライン（ＣＭＤ）およびデータライン（ＤＡＴ［０］）が定義されている。ホスト装置１がＣＭＤ２０をコマンドライン上で送ると、メモリカード２はコマンドライン上でレスポンスを送る。ＣＭＤ２０を認識しないメモリカードでこのＣＭＤ２０が受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカード２はレスポンスの送出とともに、データライン上でビジー信号をホスト装置１に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間ｔbusy(max)は、ＣＭＤ２０の機能に応じて予め定められている（図８参照）。
【００４９】
ビジー状態の解除後、ホスト装置１は、コマンドライン上で書き込みコマンド（ＣＭＤ２４またはＣＭＤ２５）をメモリカード２に送る。このようにホスト装置１は、ＣＭＤ２０を発行した後に、原則、書き込みコマンドを発行する。これにより、ＣＭＤ２０のＳＣＣフィールドによって指定した処理が、それに続く書き込みコマンドの引数で指定されるメモリアドレスに対して処理が行われる。例えばＤＩＲ更新コマンドにより、それに続くライトコマンドは、ファイルエントリの書き込みであると分かる。メモリカード２は、書き込みコマンドに対するレスポンスをコマンドライン上でホスト装置１に送る。この後、正常なレスポンスを受信するとホスト装置１は、データラインを用いて書き込みデータをメモリカード２に送る。
【００５０】
次に、ホスト装置１によるメモリカード２へのデータの書き込みの具体例について、図１０を用いて説明する。図１０は、ホスト装置１からメモリカード１に発行されるコマンドを時系列に示すタイムチャートである。
【００５１】
前述の通り専用ファイルシステムは、スピードクラス書き込みの開始時に消去済みのＡＵを選択して、このＡＵにデータをシーケンシャルに書き込む。
【００５２】
以下の説明において、フィールドＳＣＣで指定されるＣＭＤ２０の機能を、この機能を持つコマンド名として引用する。すなわち、書き込み開始、ＤＩＲ作成、ＤＩＲ更新、新ＡＵ書き込み、書き込み終了、ＣＩ更新を命令するＣＭＤ２０を、それぞれ書き込み開始コマンド、ＤＩＲ作成コマンド、ＤＩＲ更新コマンド、新ＡＵ書き込みコマンド、書き込み終了コマンド、ＣＩ更新コマンドと称する。また図１０は、シングルストリームの例として、すべてのＣＭＤ２０のフィールドＳＮは“００００ｂ”に設定されていると想定する。
【００５３】
ホスト装置１において、アプリケーション５０からディレクトリ作成要求を受信すると専用ファイルシステムは、ＤＩＲ作成コマンド（Create DIR）を発行し、ディレクトリエントリの作成用に確保したＡＵ(例えば図６のＡＵ１)の空きクラスタに、新たにディレクトリエントリを割り当てる。このＤＩＲ作成コマンドは、フィールドＳＳＣが“０１０１ｂ”である。このＤＩＲ作成コマンド（Create DIR）により、メモリカード２は、ディレクトリエントリ領域の初期化(データをすべて０にする)を行う。この機能の詳細は後述する。続いて専用ファイルシステムは、親ディレクトリ(“..”)とカレントディレクトリを示す(“.”)ファイルエントリを書き込むために、シングルブロックライトコマンド(ＣＭＤ２４またはＣＭＤ２５)を発行する(Write DIR)。すでにディレクトリエントリが作成されている場合は、ＤＩＲ作成コマンドとWrite DIRは省略される。
【００５４】
次にアプリケーション５０からファイルオープン要求を受信すると、専用ファイルシステムは、ＤＩＲ更新コマンド(Update DIR)をメモリカード２に送る。続いてディレクトエントリの中の特定の５１２バイト領域の更新を行う書き込みコマンド(ＣＭＤ２４またはＣＭＤ２５)を発行し、ファイルエントリの書き込みデータ(Write FILE)を送信する。これには、作成するファイルのファイル名、属性、日付などの情報を含む。メモリカード２は、本コマンドのメモリアドレスが示す５１２バイトのディレクトリエントリに対して複数回の更新が行われること想定する。これでファイルオープン要求に対する処理は完了する。
【００５５】
続いて専用ファイルシステムは、アプリケーション５０からデータライト要求を受信する。データはＲＡＭ１１に格納されていて、その場所と大きさが専用ファイルシステムに伝えられる。次に専用ファイルシステムは、ストリームデータを書き込むため、例えば、データ書き込み用の空きＡＵ(例えば図６のＡＵ２)を確保し、書き込み開始コマンド（Start Rec）をメモリカード２に送信する。書き込み開始コマンドは、フィールドＳＣＣが“００００ｂ”であるＣＭＤ２０である。引き続き、専用ファイルシステムは書き込みコマンド（Write RU）を発行する。この書き込みコマンドはＣＭＤ２５である。また、このコマンドは書き込み開始コマンド直後に位置するので、メモリカード２は、当該コマンドが、実データ（ストリームデータ）を書き込むためのデータ書き込みコマンドであることを認識する。この書き込みコマンドの引数には、確保されたＡＵ２の先頭論理アドレスを含む。書き込みコマンドに続いてストリームデータがホスト装置１からメモリカード２に送信される。そしてこのストリームデータは、ＡＵ２にシーケンシャルに書き込まれる。すなわちメモリカード２は、空きＡＵ２の最低位アドレスから高位アドレスに向かって、受信したデータをＲＵ単位に順次書き込む。ＡＵ２がいっぱいになったら、次の空き領域(例えばＡＵ３)を取得し書き込みを続ける。最後まで書き込んだＡＵは、順次論理アドレス／物理アドレス変換テーブルが更新される。
【００５６】
なお、シングルストリーム記録においては、データが順次メモリカードに送信され、当該データの書き込みが中断されることなく継続している場合、書き込み開始コマンドは(Start Rec)、一連の書き込みデータの最初に発行されるのみでも良い（図１０では、書き込みコマンドが繰り返し発行される例を示している）。
【００５７】
全てのデータがメモリカード２に書き込まれると、アプリケーション５０からのデータライト要求の処理は完了する。
【００５８】
続いて専用ファイルシステムは、アプリケーション５０からファイルクローズ要求を受信する。この要求に応答して専用ファイルシステムは、書き込んだデータに対応するFATのデータチェーンを作成し、未使用から使用済み領域に更新する。また、ファイルエントリのデータサイズや更新時間などを更新する。これによりファイルクローズ要求の処理が完了する。
【００５９】
続いて別なファイルを同じディレクトリに書き込む場合、Update DIRで指定した領域に新たなファイルエントリを作成することができる。またデータ書き込み用に確保したＡＵがまだ空いていれば、前ファイルデータに続いて別なファイルデータを追記することができる。この場合、Start Recコマンドは発行しない。この様に複数のファイルを作成した場合でも、データＡＵはシーケンシャルライトが継続でき、無駄な領域が発生しない特徴がある。Update DIRで指定した領域に空きがなくなった場合は、次の512byte領域に対して再度Update DIRを発行し、新たなファイルエントリを作成する。
【００６０】
１．４  メモリカード２の空き容量計算方法について  
次に、本実施形態に係るホスト装置１によるメモリカード２の空き容量計算方法について説明する。
【００６１】
上記のように、本実施形態に係るホスト装置１は、ＡＵ単位でメモリカード１を管理する。従って、ＦＡＴやビットマップ情報から空き容量を計算することが困難であり、アプリケーション５０は、基本ＡＰＩ５５によってメモリカード２の空き容量を取得することが困難な場合がある。そこでアプリケーション５０は、拡張ＡＰＩ５６を用いてメモリカード２の空き容量を取得する。
【００６２】
そして専用ファイルシステムは、未使用のＡＵを検索して、その数に基づいて空き領域を算出して、アプリケーション５０に通知する。より具体的には、ＡＵ全体に渡りＦＡＴが空きクラスタでマークされているＡＵを「空きＡＵ」として(有効データを保持するクラスタ、不良クラスタマークのあるクラスタ、及び最終クラスタマークのあるクラスタが含まれるＡＵは除外される)、メモリカード２全体の空きＡＵ数を算出して、その合計をメモリカード２の残り容量とする。データを書き込みが有効なＡＵで(追記が有効なＡＵ)、まだ空きがあれば残り領域に加算しても良い。
【００６３】
クラスタが有効データを保持しているか、不良クラスタマークがあるか、また最終クラスタマークがあるかは、ＦＡＴを参照することで知ることが出来る。
【００６４】
例えば図６において、使用中のＡＵ（Used AU）は、少なくともいずれかのクラスタが使用中（Used Cluster）であるＡＵである。従って、未使用クラスタがあっても、ひとつでも使用済みクラスタが存在すれば、そのＡＵは使用済みＡＵであり、このＡＵは空き容量計算から除外される。空き容量計算時に空き容量に寄与するのは、あくまで未使用（全クラスタが未使用）のＡＵである。よって図６では、４つの空きＡＵ１、ＡＵ３〜ＡＵ５に基づいて、メモリカード２の空き容量が算出される(ＡＵ５は最終ＡＵと想定)。
【００６５】
１．５  本実施形態に係る効果  
上記のように、本実施形態に係るホスト装置であると、アプリケーション開発の負荷を軽減すると共に、ＮＡＮＤ型フラッシュメモリへの書き込み速度を向上出来る。本効果につき、以下説明する。
【００６６】
ＳＤメモリカードでは、その書き込み速度に応じてスピードクラスが定められている。従って、メモリカードの機能を最大限に発揮するには、ホスト機器が各メモリカードに適したスピードクラス仕様に従った書き込み処理を行うことが望ましい。しかしながら、そのためにはホスト装置はスピードクラスに準拠した実装が必要であるが、そのための要求事項が多数あり、最適な実装が困難なこともりあり、スピードクラス普及の妨げになっている。
【００６７】
また、ホスト装置はファイルシステムでメモリカードを管理する。しかし、新たにＡＵサイズを認識してメモリ領域を管理することは、ホスト装置にとって大きな負担となっている。更に、ＡＵサイズの管理をしなくても、性能は低下するが互換性には問題が生じないため、ＡＵサイズを考慮したホスト装置の普及の妨げになっている。しかし、そのような実装であると、スピードクラスで規定されているＳＤメモリカードの最低性能を保証することが困難である。
【００６８】
また別な問題として、ＡＵサイズを考慮したホスト実装であっても、ホスト装置は規定されたＡＵサイズの最大値までしか認識しない。従って、より大きなＡＵサイズが必要になった場合、現在のホスト装置との互換性を保つことが困難になる。
【００６９】
更に、従来のファイルシステムでは、フラグメントされた領域も積極的に使用して、メモリ領域を効率的に使用するアルゴリズムを採用している。しかしながら、このアルゴリズムであると、データの書き込みは必ずしもシーケンシャルとはならず、データのコピーが必要となり、データの書き込み速度を低下させる。
【００７０】
この点、本実施形態に係るホスト装置１はファイル制御ユニット５１を備え、ファイル制御ユニット５１とファイルシステム５２とにより、専用ファイルシステムを構成している。そして、専用ファイルシステムがＡＵサイズ及びスピードクラスを把握して、これらの情報に応じてメモリカード２を制御する。従って、アプリケーション５０はＡＵサイズ及びスピードクラスを把握する必要が無い。つまり、アプリケーション５０はＡＵサイズでのメモリ領域の管理、及びスピードクラスに応じた書き込み制御を行う必要が無い。従って、アプリケーション５０の開発負担を軽減することが出来る。
【００７１】
更に専用ファイルシステムは、データの書き込みに際しＡＵ単位で空き領域を検索する。すなわち、フラグメントされた領域を使用しない。そして専用ファイルシステムは、空きＡＵに対して、常にシーケンシャルに書き込む。そのため、データのコピー動作が不要となり、メモリカード２の性能を最大限に発揮させることが可能となる。また本方式で使用したメモリカードは、従来ファイルシステムのホスト機器で使用できるため、互換性が維持できる特徴がある。
【００７２】
ディレクトリエントリは、ディレクトリ毎に作成され、小領域(例えば512Byte)単位で何度も更新される特徴がある。そのため専用ファイルシステムは、ディレクトリエントリ用のＡＵを確保しておき、複数のディレクトリエントリをひとつのＡＵ上に作成することにより、メモリカードは、小領域に対する書き込みを容易に管理ができる特徴がある。
【００７３】
２．第２実施形態  
次に、第２実施形態に係るホスト装置について説明する。本実施形態は、上記第１実施形態において、拡張ＡＰＩ５６を廃したものである。以下では、第１実施形態と異なる点についてのみ説明する。
【００７４】
２．１  ホスト装置１の構成について  
図１１は、本実施形態に係るホスト装置１の機能ブロック図である。図示するように、本実施形態に係るホスト装置１は、第１実施形態で説明した図２に対して以下の変形を行ったものである。すなわち、  
(a) 拡張ＡＰＩ５６を廃する。  
(b) 基本ＡＰＩ５５の引数と戻り値を拡張する。
【００７５】
すなわち本実施形態は、従来の基本ＡＰＩを基に引数と戻り値を拡張することで、拡張ＡＰＩと同様の機能を実現するものである。
【００７６】
例えば、ＡＰＩにおける標準的な関数として、FileOpen関数がある。この場合、FileOpen関数の引数に、ファイルを書き込む際にＡＵ境界に合わせる、または合わせない、という情報を、フラグとして追加する。当該フラグが“０”であれば、専用ファイルシステムは従来と同じ動作を行う。つまり、ＡＵ単位で空き領域を確保することなく、フラグメントされた領域をも使用してファイルを書き込む。他方、フラグが“１”であれば、専用フィルシステムは第１実施形態で説明したようにＡＵ境界を単位にして、データをシーケンシャルに書き込む。
【００７７】
また、前記フラグを持たない場合、すべてのメモリライトに対して、専用フィルシステムは第１実施形態で説明したようにＡＵ境界を単位にして、データをシーケンシャルに書き込む方法適用することもできる。この場合、フラグメントしたＡＵは使用されないため、メモリ使用効率は悪くなるが性能は向上する。
【００７８】
２．２  本実施形態に係る効果  
本実施形態に係る構成であると、一つのＡＰＩで、すでに開発済の従来アプリケーションと互換性を有しつつ、更に拡張機能を使用可能とすることが出来る。従って、より簡便な構成で、第１実施形態で説明した機能を実現出来る。
【００７９】
３．第３実施形態  
次に、第３実施形態に係るホスト装置について説明する。本実施形態は、上記第１、第２実施形態において、データの削除及び上書きを行う際の動作の詳細を説明するものである。以下では、第１、第２実施形態と異なる点についてのみ説明する。
【００８０】
３．１  ＦＡＴファイルシステムについて  
まず、動作の詳細の説明の前に、ＦＡＴファイルシステムについて簡単に説明する。
【００８１】
図１２は、メモリカード２のメモリ空間を示すメモリマップである。メモリ空間は、大まかには管理領域６０とユーザデータ領域６１とに分けられる。各領域はクラスタという単位に分割されて管理される。
【００８２】
管理領域６０は、ＮＡＮＤ型フラッシュメモリ３１に記録されているファイル（データ）を管理するために設けられており、ファイルの管理情報を保持する。このように、メモリに記録されているファイル（データ）を管理する方式をファイルシステムと呼ぶ。ファイルシステムにおいては、ファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。以下では、数字の先頭に付加した“０ｘ”は、それに続く数字が１６進数表示であることを示す。
【００８３】
管理領域６０は、例えばブートセクタ、ＦＡＴ１、ＦＡＴ２、及びルートディレクトリエントリを含んでいる。ブートセクタはブート情報を記憶する領域である。ＦＡＴ１及びＦＡＴ２は、データがいずれのクラスタに記憶されているかを記憶する。ルートディレクトリエントリは、ルートディレクトリ上にあるファイルの情報を記憶する。より具体的には、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、どのクラスタがファイルの先頭クラスタであるかを記憶する。先頭クラスタが分かれば、ＦＡＴチェーンから、全データがアクセス可能となる。
【００８４】
ユーザデータ領域６１は管理領域６０以外の領域であり、メモリカードに格納することができる容量は、この領域の大きさで決まる。
【００８５】
次に、上記ＦＡＴ１及びＦＡＴ２について説明する。以下ではＦＡＴ１、ＦＡＴ２をまとめてＦＡＴと呼ぶ。両者が同じ値を保持しておくことで、一方が壊れた場合でもＦＡＴの復旧可能にしている。
【００８６】
メモリ空間は、クラスタと呼ばれるある一定のサイズの空間の集合である（クラスタの集合がＲＵであり、ＲＵの集合がＡＵである）。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際、データがどのクラスタに分割されて書き込まれたかをＦＡＴのチェーンを作成して管理する。
【００８７】
図１３は、ＦＡＴおよびルートディレクトリエントリ内のファイルエントリの一例を示している。例えばルートディレクトリに３つのファイル“ＦＩＬＥ１．ＪＰＧ”、“ＦＩＬＥ２．ＪＰＧ”、及び“ＦＩＬＥ３．ＪＰＧ”が含まれており、それぞれの先頭クラスタが“０００２”、“０００５”、“０００７”であったと仮定する。
【００８８】
ＦＡＴには、各クラスタの次に接続されるべきクラスタの番号が記載されている。例えば“ＦＩＬＥ１．ＪＰＧ”の場合、先頭のクラスタ“０００２”のデータに続くデータを格納するクラスタはクラスタ“０００３”で、クラスタ“０００３”のデータに続くデータを格納するクラスタはクラスタ“０００４”であることが分かる。そしてクラスタ“０００２”、“０００３”、“０００４”のデータを接続することにより、“ＦＩＬＥ１．ＪＰＧ”のファイルが復元される。最後のファイルデータを格納するクラスタを示すＦＡＴには、“０ｘＦＦＦＦ”がマークされている。また、未使用のクラスタかどうかは“０ｘ００００”をマークすることで検出ができる。
【００８９】
次に、上記ルートディレクトリエントリについて説明する。図１４はルートディレクトリエントリの構成を示す概念図であり、一例としてルートディレクトリにディレクトリ“ＤＩＲ１”及び“ＤＩＲ２”が作成され、更にファイル“ＦＩＬＥ１．ＭＯＶ”が作成された場合について示している。
【００９０】
図示するようにルートディレクトリエントリは、各々が３２バイトの複数のエントリを備える。そして各エントリが、ルートディレクトリに含まれるファイルまたはディレクトリに関する情報を保持する。各エントリは、３２バイトの先頭バイト位置から順に、ファイルまたはサブディレクトリの名前（DIR_Name、１１バイト）、属性（DIR_Attr、１バイト）、予約（DIR_NTRes、１バイト）、作成時刻（DIR_CrtTimeTenth、１バイト）、作成時刻（DIR_CrtTime、２バイト）、作成日付（DIR_CrtDate、２バイト）、最終アクセス日付（DIR_LstAccDate、２バイト）、先頭クラスタの上位２バイト（DIR_FstClusHI）、書き込み時刻（DIR_WrtTime、２バイト）、書き込み日付（DIR_WrtDate、２バイト）、先頭クラスタの下位２バイト（DIR_FstClusLO）、及びファイルサイズ（DIR_FileSize、４バイト）を保持する。属性とは、読み取り専用か否か、ディレクトリであるか否か、システムファイルであるか否か、また隠しファイルであるか否か等を示す情報である。予約を示す１バイトのデータは全て“０ｘ００”とされる。作成時刻（DIR_CrtTimeTenth）は、対応するファイルまたはディレクトリの作成時刻のうちのミリ秒の部分を示し、作成時刻（DIR_CrtTime）は時分を示す。また先頭クラスタ番号は、DIR_FstClusHIとDIR_FstClusLOの２つに分離されて、ルートディレクトリエントリに記録される。
【００９１】
例えば図１４の例では、ルートディレクトリにはファイル“ＦＩＬＥ１．ＭＯＶ”が存在し、このファイルは読み取り専用であり、２００９年１２月１０日１２：００：１５に作成され、そのファイルサイズは３．５０ＭＢであり、そのデータはクラスタ２０を先頭に書き込まれていることが分かる。また図１４ではエントリ０〜２までが使用されており、エントリ３以降は未使用である。そして未使用のエントリ内は全て“０ｘ００”とされている。
【００９２】
なお、サブディレクトエントリの構造も、基本的にはルートディレクトリエントリと同じである。ルートディレクトリエントリと異なる点は、サブディレクトリエントリには、自分自身を示すドット（．）エントリと、親ディレクトリを示すドットドット（．．）エントリが含まれる点である。そしてサブディレクトリエントリは、図１２のユーザデータ領域６１に設けられる。
【００９３】
３．２  具体例について  
次に、データの消去及び上書き（更新）時の動作の詳細について、以下説明する。
【００９４】
３．２．１  データの削除（その１）  
ファイルを削除した場合、その領域を再利用するとデータのフラグメント化が促進されてしまうため、専用ファイルシステムでは、削除された領域がすぐに再利用されない方法で管理する特徴がある。領域が不足したときなど、あるタイミングでガーベージコレクションを行い、未使用領域のうち、空きＡＵとして確保できるものを再利用する。
【００９５】
まず、データを削除する場合について、図１５を用いて説明する。図１５は、専用ファイルシステムの動作の流れを示すフローチャートである。
【００９６】
図示するように、専用ファイルシステムはアプリケーション５０からファイル削除命令を受信する（ステップＳ１０）。この命令の処理として、専用ファイルシステムは、ディレクトリエントリのファイル名またはディレクトリ名（図１４の名前フィールド）の先頭バイト（０バイト目）を削除コード（例えば“０ｘ５Ｅ”）に更新する（ステップＳ１１）。次に削除ファイルが保持していたデータクラスタに対応するＦＡＴにはエラーコードをセットする(ステップＳ１２）。この結果、削除対象とされたファイルデータを保持するクラスタは、以後、再利用が禁止される。
【００９７】
図１６は、データを削除する際のクラスタ及びＦＡＴの具体例を示しており、クラスタと、それに対応するＦＡＴを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、ＦＡＴの斜線部分はＦＡＴが更新されたことを示す。
【００９８】
図１６左図に示すように、例えばクラスタ番号が“０ｘ１０００”〜“０ｘ１００５”のクラスタに、それぞれデータＤＡＴ１〜ＤＡＴ６が保持されている。そして、ＦＡＴによってこれらのＤＡＴ１〜ＤＡＴ６が順次連結されて、１つのファイルが構成されている。
【００９９】
図１６右図は、上記ファイルを削除した際の様子を示す。図示するように、削除対象となったデータＤＡＴ１〜ＤＡＴ６を保持するクラスタに対応するＦＡＴは、全てエラーコードを示す“０ｘＦＦＦ８”に更新される。但し、データＤＡＴ１〜ＤＡＴ６そのものは、削除されることなくクラスタ内に保持されたままである。
【０１００】
３．２．２  データの削除（その２）  
次に、データの削除の別の例について、図１７を用いて説明する。図１７は、専用ファイルシステムの動作の流れを示すフローチャートである。
【０１０１】
図示するように、ステップＳ１０とＳ１１は図１５と同様であり、ステップＳ１２の代わりにステップＳ２２を実行する。すなわちステップＳ２２において専用ファイルシステムは、削除対象データを、既存のジャンクファイルに連結する。より具体的には、既に存在するジャンクファイルに対応する最終クラスタのＦＡＴを“０ｘＦＦＦＦ”から、削除ファイルデータの先頭クラスタ番号に更新する（ステップＳ２２）。なお、ジャンクファイルは不要なファイルのことであり、アプリケーション５０ではなく専用ファイルシステムによって作成されるファイルである。
【０１０２】
図１８は本例の具体例を示しており、クラスタと、それに対応するＦＡＴを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、ＦＡＴの斜線部分はＦＡＴが更新されたことを示す。
【０１０３】
図１８左図に示すように、例えばクラスタ番号が“０ｘ１０００”〜“０ｘ１００５”のクラスタに、それぞれデータＤＡＴ１〜ＤＡＴ６が保持されている。そして、ＦＡＴによってこれらのＤＡＴ１〜ＤＡＴ６が順次連結されて、１つのファイルが構成されている。また、例えばクラスタ番号が“０ｘ２０００”〜“０ｘ２００２”及び“０ｘ２２０４”〜“０ｘ２２０５”のクラスタに、それぞれジャンクデータＪＵＮＫ１〜ＪＵＮＫ５が保持されている。そして、ＦＡＴによってこれらのＪＵＮＫ１〜ＪＵＮＫ５が順次連結されて、１つのジャンクファイルが構成されている。また、例えばクラスタ番号が“０ｘ１０００”からのクラスタ群と“０ｘ２０００”からのクラスタ群とは、互いに異なるＡＵに属する。
【０１０４】
図１８右図は、データＤＡＴ１〜ＤＡＴ６で構成されるファイルを削除した際の様子を示す。図示するように、削除対象となったデータＤＡＴ１〜ＤＡＴ６を保持するクラスタに対応するＦＡＴは書き換えられず、既存のジャンクファイルのデータＪＵＮＫ５を保持するクラスタに対応するＦＡＴが、“０ｘ１０００”に更新される。この結果、データＤＡＴ１〜ＤＡＴ６は、データＪＵＮＫ５の後ろに連結される。これにより、データＤＡＴ１〜ＤＡＴ６はジャンクファイルとしてメモリカード２に残ることになる。
【０１０５】
３．２．３  データの上書き（その１）  
データの上書きにおいても、専用ファイルシステムは、削除された領域がすぐに再利用されない方法で管理する特徴がある。
【０１０６】
次に、データを上書き（更新）する場合について、図１９を用いて説明する。図１９は、専用ファイルシステムの動作の流れを示すフローチャートである。
【０１０７】
図示するように、専用ファイルシステムはアプリケーション５０からデータの上書き命令を受信する（ステップＳ３０）。専用ファイルシステムは、データを上書きするのではなく、すでに書き込み済みのデータの後ろの空き領域に追記して書く。その書き込みアドレスを引数に設定したデータの書き込みコマンドをメモリカード２に発行する（ステップＳ３１）。
【０１０８】
この書き込みコマンドに応答して、メモリカード２はデータをシーケンシャルに書き込む。専用ファイルシステムは、ファイルデータのクラスタチェーンを上書きデータに置き換えるようにＦＡＴを更新する。（ステップＳ３２）。上書き対象とされたデータを利用できなくするために、そのデータに対応するＦＡＴにエラーコードをセットする（ステップＳ３３）。更に、なお、上書きによってすでに確保されているＡＵが使える場合は、残り容量は変わらないが、上書きデータを書く領域が不足する場合は、新たな空きＡＵを確保するため、残り容量は減少する。
【０１０９】
図２０は、データを上書きする際のクラスタ及びＦＡＴの具体例を示しており、クラスタと、それに対応するＦＡＴを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、ＦＡＴの斜線部分はＦＡＴが更新されたことを示す。
【０１１０】
図２０左図に示すように、例えばクラスタ番号が“０ｘ１０００”〜“０ｘ１００５”のクラスタに、それぞれデータＤＡＴ１〜ＤＡＴ６が保持されている。そして、ＦＡＴによってこれらのＤＡＴ１〜ＤＡＴ６が順次連結されて、１つのファイルが構成されている。
【０１１１】
図２０右図は、上記データのうち、ＤＡＴ４及びＤＡＴ５をそれぞれＤＡＴ＿Ａ及びＤＡＴ＿Ｂで上書きした際の様子を示す。図示するように、上書き対象となったデータＤＡＴ４及びＤＡＴ５を保持するクラスタに対応するＦＡＴは、全てエラーコードを示す“０ｘＦＦＦ８”に更新される。但し、データＤＡＴ４及びＤＡＴ５そのものは、削除されることなくクラスタ内に保持されたままである。また、ＤＡＴ３に対応するＤＡＴは“０ｘ１００６”に更新され、ＤＡＴ＿Ａ及びＤＡＴ＿Ｂに対応するＦＡＴはそれぞれ“０ｘ１００７”及び“０ｘ１００５”がセットされる。その結果、ＤＡＴ３とＤＡＴ＿Ａとが連結され、ＤＡＴ＿ＢとＤＡＴ６とが連結される。
【０１１２】
３．２．４  データの上書き（その２）  
次に、データを上書き（更新）する場合の別の例について、図２１を用いて説明する。図２１は、ホスト装置１及びメモリカード２の動作の流れを示すフローチャートである。
【０１１３】
図示するように、図１９で説明したステップＳ３０〜Ｓ３２の処理を実行する。次に専用ファイルシステムは、既に存在するジャンクファイルに対応する最終クラスタのＦＡＴを、最終クラスタ番号“０ｘＦＦＦＦ”から、削除対象データに対応する先頭クラスタ番号に更新する（ステップＳ４３）。そして、上書き対象データの最終クラスタのＦＡＴを、０ｘＦＦＦＦに更新する（ステップＳ４４）。
【０１１４】
図２２は本例の具体例を示しており、クラスタと、それに対応するＦＡＴを示している。図中において、クラスタの斜線部分はデータを保持する領域を示し、ＦＡＴの斜線部分はＦＡＴが更新されたことを示す。
【０１１５】
図２２左図は、データの上書き前の様子を示し、図１８と同様である。この状態で、データＤＡＴ４及びＤＡＴ５がデータＤＡＴ＿Ａ及びＤＡＴ＿Ｂで上書きされたとする。その様子を示すのが図２２右図である。図示するように、データＪＵＮＫ５は、上書き対象となったデータＤＡＴ４に連結され、データＤＡＴ５に対応するＦＡＴが“０ｘＦＦＦＦ”に更新される。これにより、上書き対象データＤＡＴ４及びＤＡＴ５がジャンクファイルに連結される。
【０１１６】
３．３  本実施形態の効果  
本実施形態に係るデータの削除及び上書き方法によれば、実際には上書きすることなく、データ領域はフラッシュメモリに適したシーケンシャルライトを維持し、削除しないことにより、フラグメンテーション領域の発生を抑制することが出来る。本効果につき、以下説明する。
【０１１７】
上記３．２．１で説明した方法によれば、アプリケーション５０がデータの削除を要求した際、専用ファイルシステムは、データそのものをクラスタから削除することなく、対応するＦＡＴの値をエラーコードに書き換える。上記３．２．３で説明した方法も同様であり、専用ファイルシステムは、上書き対象となったデータをクラスタから削除することなく、対応するＦＡＴの値をエラーコードに書き換える。
【０１１８】
すなわち本方法によれば、不要となったデータはクラスタに残り、当該クラスタは空き領域とはならない。その代わり、当該クラスタに対応するＦＡＴには、エラーコードが格納される。従って、不要となったデータに対応するクラスタが、新たなデータの書き込み領域として再度選択されることを抑制することが出来る。
【０１１９】
また上記３．２．２で説明した方法によれば、専用ファイルシステムは、削除したデータをジャンクファイルとしてクラスタ内に残しておく。そして、既存のジャンクファイルがあれば、これに連結する（無ければ、もちろん連結せず、削除ファイルをそのままジャンクファイルとする）。上記３．２．４で説明した方法も同様であり、専用ファイルシステムは、上書き対象となったデータをジャンクファイルとして残しておく。
【０１２０】
本方法によっても、不要となったデータに対応するクラスタが、新たなデータの書き込み領域として再度選択されることを抑制することが出来る。更に、不要データをジャンクファイルとして残すことで、次のような効果が得られる。アプリケーション５０は、チェックディスクコマンド等、メモリ空間におけるエラーをチェック・修復する機能を有する場合がある。すると、そのようなコマンドによって、ＦＡＴのエラーコードがクリアされて、当該クラスタが空きクラスタとして使用可能な状態になる可能性がある。しかし、ジャンクファイルとして残しておけば、このような事態が発生することを防止出来る。また、図１８の例では、“０ｘ２２０５”のクラスタを更新するだけで良く、図１６の例のように削除対象クラスタの全てのＦＡＴを更新する、といった必要も無く、より簡便な手法と言うことが出来る。
【０１２１】
いずれの方法によっても、フラグメンテーションの発生は抑制され、データをシーケンシャルに書き込むことが出来る。また、いずれの方法であっても、アプリケーション５０がデータを削除してもメモリカード２の空き容量は増えない。従って、データの削除及び上書きを繰り返すと、メモリカード２の空き容量は僅かでありながら、そのほとんどが不要データ（ＦＡＴがエラーコードのクラスタや、ジャンクファイル）である、といった事態が発生する可能性がある。このような場合には、例えば専用ファイルシステムがメモリカード２の使用状況を監視して、適切なタイミングにおいてガーベージコレクションを行っても良い。
【０１２２】
すなわち、ガーベージコレクションを行うことで、ＮＡＮＤ型フラッシュメモリ３１内の複数の物理ブロックに点在する有効データを、ある物理ブロックにまとめてコピーし、コピー元の物理ブロックを消去することによって、新たに空きＡＵを生成する。このようなガーベージコレクションによってＦＡＴのエラーコードはクリアされ、複数のフラグメンテーション領域はシーケンシャルに書き込み可能な領域にまとめられる。もちろん、ＦＡＴにエラーコードがセットされたクラスタは、メモリカード２をフォーマットすることによっても再利用可能となる。ジャンクファイルを用いた例では、再利用可能なクラスタを除いて、ジャンクファイルのデータチェーンを再構成する。
【０１２３】
なお、ファイルはディレクトリエントリでその記録場所が示される。しかし、削除対象となったファイルのファイル名を“０ｘＥ５”に更新することで、当該エントリを無効化することが出来る。図１８と図２２で説明したジャンクファイルは、ホスト装置１のユーザに認識されないよう、隠しファイルとすることが望ましい。
【０１２４】
また、上記の例では、ひとつのジャンクファイルにまとめたが、削除ファイルの名前を個々変えることにより、複数のジャンクファイルにして残す方法もある。
【０１２５】
また、上記３．２．１及び３．２．３の方法では、不要データを保持するクラスタに対応するＦＡＴをエラーコード（例えば“０ｘＦＦ８”）に更新する場合を例に説明したがＦＡＴチェーンの最終クラスタ番号（例えば“０ｘＦＦＦＦ”）に更新しても良い。もちろん、ファイルシステムにおいて利用を禁止する意味を持つコードであれば、これらのコードに限定されるものではない。
【０１２６】
４．第４実施形態  
次に、第４実施形態に係るホスト装置について説明する。本実施形態は、上記第１乃至第３実施形態におけるディレクトリエントリ作成方法に関するものである。以下では、第１乃至第３実施形態と異なる点についてのみ説明する。
【０１２７】
４．１  ＮＡＮＤ型フラッシュメモリの特性とディレクトリエントリの初期化について  
図２３は、ＮＡＮＤ型フラッシュメモリのメモリセルの閾値分布であり、一例として２値を保持可能なメモリセル（single level cell）の場合を示している。
【０１２８】
図示するようにメモリセルは、その閾値が負の状態と閾値が正の状態との２つの状態を取ることが出来、本明細書ではそれぞれを“１”データ及び“０”データと定義する。メモリセルは、消去状態では“１”データを保持する状態にあり、データが書き込まれることで“０”データを保持する状態に遷移する。
【０１２９】
図２４は、ディレクトリエントリを新規に作成する際の従来ファイルシステムの動作を示すフローチャートである。図２４に示すように、従来ファイルシステムはまず、アプリケーション５０からディレクトリ作成要求を受ける（ステップＳ５０）、この要求に対し、ファイルシステムは、親ディレクトリエントリに子ディレクトリのファイルエントリを作成し（ステップＳ５１）、子ディレクトリエントリの領域を確保し（ステップＳ５２）、確保したディレクトリ領域をデータ“０”で初期化する（ステップＳ５３）。その後、ファイルシステムは、“．．（ドットドット）”と“．（ドット）”に対するファイルエントリを作成する（ステップＳ５４）。ただし、ステップＳ５３とステップＳ５４は、まとめてひとつのライトにすることは可能である。
【０１３０】
このように、特にステップＳ５３で、ファイルシステムは、「ディレクトリエントリの初期化」のために最初の１クラスタにすべて“０”のデータを書き込んでおく必要があった。各エントリの先頭バイト“０”はディレクトリエントリの空き領域を示すためである。ファイルシステムは初期化動作後に、ディレクトリエントリに対して上書き動作を行うため、ファイルエントリの書き込みは、フラッシュメモリに対して上書きとなってしまう問題があった。
【０１３１】
４．２  ディレクトリエントリ作成の改善について  
図２５に専用ファイルシステムが行う、処理フローを示す。図２４と異なる点は以下の通りである。
【０１３２】
図示するように専用ファイルシステムは、ステップＳ５０〜Ｓ５２の後、カードがディレクトリ作成コマンド(Create DIR)をサポートしているかどうかを確認し（ステップＳ６３）、サポートしている場合（ステップＳ６４、ＹＥＳ）は、ディレクトリエントリの初期化を行わず、ディレクトリ作成コマンドを発行し（ステップＳ６５）、続いて“..”と“.”を作成するシングルブロックライトコマンドを発行する（ステップＳ６６）。この場合、カードは、初期化すべきクラスタサイズを別な手段で取得する。
【０１３３】
カードがディレクトリ作成コマンドをサポートしていない場合（ステップＳ６４、ＮＯ）は、“..”と“.”に対するファイルエントリと、他のDIR Entryデータを“０”に初期化するマルチブロックライトコマンドの発行する（ステップＳ６７）。なお、カードにクラスタサイズを認識させる目的で、ステップＳ６５の書き込みをシングルブロックライトではなく、クラスタサイズのデータ長によるマルチブロックライトを実行する方法もある。
【０１３４】
カードが、ディレクトリ作成コマンドを受信すると、それに続くファイルエントリの書き込み（ステップＳ６６）の前に、そのアドレス領域に対してカード内部で１クラスタ分の初期化を実行してから、ファイルエントリの書き込みを実行する。これにより、最初のファイルエントリの書き込みが、フラッシュメモリに対して上書きとならないような処理が可能となる。
【０１３５】
ステップＳ６７に対して、メモリカード２０の処理方法として、下記に２つの例を挙げる。
【０１３６】
４．２．１  メモリカード２の動作について（その１）  
コントローラ３２は、ホスト装置１の専用ファイルシステムからＤＩＲ作成コマンドを受信する。これらのコマンドは、第１実施形態で説明した図１０の“Create DIR”に相当する。するとコントローラ３２は、ＤＩＲ作成コマンドで指定されたアドレスに、１クラスタのディレクトリエントリ用の領域を確保する。そしてコントローラ３２は、確保した１クラスタの領域のデータが“０”になることを保証する。必ずしもコントローラ３２がデータ“０”をライトする必要はない。この方法ではカードはクラスタ長を認識しなければならない。
【０１３７】
４．２．２  メモリカード２の動作について（その２）  
従来ファイルシステムでは、ディレクトリエントリをクラスタ単位に確保するが、本提案例では、ＡＵ単位にディレクトリエントリ領域を確保する。ＮＡＮＤ型フラッシュメモリ３１がサポートする消去コマンドを用いることで、データ“０”をライトするよりも、効率よくこの領域を初期化できる。ただし、消去コマンドで消去した結果は、ＮＡＮＤ型フラッシュメモリでは、データが“１”のレベルとなる。そこで、ホストから“０”に見えるような工夫が必要となる。
【０１３８】
コントローラ３２は、ホスト装置２から受信したデータを反転してＮＡＮＤ型フラッシュメモリ３１に書き込み、またＮＡＮＤ型フラッシュメモリ３１から読み出したデータを反転してホスト装置２に送信する。こうすると、フラッシュメモリが消去状態で“１”データを保持する場合、コントローラ３２は読み出し時にデータを反転させるため、ホスト装置２は、ディレクトリエントリは“０”データを保持していると認識する。この方法では、最初にディレクトリ作成コマンド(Create DIR)を受信した場合、カードのコントローラ３２は、フラッシュメモリの消去コマンドを用いて、ＡＵを“０”データで初期化する。したがってクラスタサイズを認識する必要がなく、フラッシュメモリの消去機能を利用して高速に消去が可能であり、上書きを回避することが簡単にできる点が（その１）の実装例と異なる点である。カードは、電源が切れても、この領域がディレクトリエントリであることを識別できるように情報を記憶しておく。以降専用ファイルシステムは、このＡＵをディレクトリエントリ用のＡＵとして確保することで、初期値が０として保証されているため、新たなディレクトリエントリを作成する場合でも初期化が不要となる。
【０１３９】
４．３  本実施形態に係る効果  
ＦＡＴファイルシステムでは、ディレクトリエントリを作成した場合、そのクラスタは“０”データに初期化した後に使用可能とされる。従ってホスト装置は、確保したディレクトリエントリの１クラスタ領域を消去状態にするために“０”データを書き込む処理が必要であった。また、“０”でライトした後に、ファイルエントリを書くため上書きとなってしまう問題があった。上書きした場合、カードコントローラは、ある程度処理時間が必要となるので、初期化のための上書きはない方が好ましい。
【０１４０】
しかし本実施形態に係る構成であると、ディレクトリエントリの初期化機能をメモリカード２に持たせている。従って、ホスト装置１は初期化動作を行う必要が無く、ホスト装置１の負荷を軽減出来る。また、メモリカード２が初期化機能を有するか否かは、レジスタ４６を参照すること等によって認識出来る。そしてその結果に応じてホスト装置２は、ディレクトリエントリの初期化を行うか否かを決定出来る。
【０１４１】
なお、上記４．２．２で説明した方法であると、メモリカード２はクラスタサイズを認識する必要が無く、フラッシュメモリの高速な消去機能を利用できる特徴がある。すなわち、従来、ディレクトリエントリはいずれかの空きクラスタに作成される。つまり１個のクラスタがディレクトリエントリとなる。従って、１個のディレクトリエントリの全領域を初期化するには、１個のクラスタのサイズを認識しておく必要がある。しかし４．２．２の方法では、専用ファイルシステムは、ディレクトリエントリ用にＡＵを確保し、メモリカード２はＡＵ単位に初期化を行うので、クラスタサイズを認識する必要がない。
【０１４２】
５．第５実施形態  
次に、第５実施形態に係るホスト装置について説明する。本実施形態は、上記第１乃至第４実施形態におけるＡＰＩに関するものである。以下では、第１乃至第４実施形態と異なる点についてのみ説明する。
【０１４３】
５．１  基本ＡＰＩ５５、５７について  
まず、基本ＡＰＩ５５、５７の備える機能について説明する。基本ＡＰＩ５５、５７は、以下の機能を有している。
【０１４４】
(a) GetDriveProperties：ターゲットドライブのプロパティを取得する機能である。例えば、マルチストリームに対応しているか否か、また対応している場合のサポートする最大ストリーム数等の情報を取得出来る。  
(b) Open：ファイルをオープンし、そのファイルハンドルを取得する機能である。例えば、オープンする際の条件として、マルチストリーム機能を有効にしてファイルオープンするか否か等を選択出来る。  
(c) Write：ファイルを書き込む機能である。ファイルをオープンした際にマルチストリーム機能が有効にされていれば、書き込みもマルチストリームで行われる。  
(d) Read：データを読み込む機能である。  
(e) Seek：ファイルポインタを移動させる機能である。  
(f) Close：ファイルハンドルをクローズする機能である。  
(g) MoveFile：ファイルを移動させ、また名称を変更する機能である。  
(h) CopyFile：ファイルをコピーする機能である。  
(i) DeleteFile：ファイルを削除する機能である。  
(j) GetFileProperty：ファイルのプロパティを取得する機能である。  
(k) CreateDir：ディレクトリを作成する機能である。  
(l) DeleteDir：ディレクトリを削除する機能である。  
(m) MoveDir：ディレクトリを移動させ、また名称を変更する機能である。
【０１４５】
５．２  拡張ＡＰＩ５６について  
次に、拡張ＡＰＩ５６の備える機能について説明する。拡張ＡＰＩ５６は、以下の機能の少なくともいずれかを有することが好ましい。
【０１４６】
(n) ストリーム数の取得：これは、メモリカードがマルチストリームをサポートする場合の機能である。ストリーム数は、アプリケーション５０が同時に録画可能なチャンネル数を決定する場合等に用いられる。  
(o) 空きＡＵの取得：ＡＵ単位に空いている場所を探し、その先頭アドレスを返す。  
(p) ディレクトリエントリの作成：ディレクトリエントリ管理用にＡＵを確保すると共に、そのＡＵの空きクラスタに新たにディレクトリエントリを作成する機能である。  
(q) ディレクトリエントリの更新：ファイルエントリを書く領域を指定し、更新する機能である。更新は同じ領域に対して繰り返し書き込み可能である。  
(r) データの書き込み：ＡＵにデータをシーケンシャルに書き込む機能である。  
(s) 開放しない領域の削除：汎用の削除ＡＰＩでは、削除後の領域を開放してしまうが、拡張ＡＰＩを用いた削除では未使用のままとする。具体的には、第３実施形態で説明した削除方法である。未使用領域の管理方法としては、２通りの実装例がある（第３実施形態で説明したように、特定コードでマークする方法とジャンクファイルを用いる方法）。  
(t) フォーマット：フォーマット時に、特殊コードで未使用としているクラスタを空きクラスタとして開放する機能である。特殊コードで使用不可としているクラスタとは、例えば第３実施形態で説明したエラーコードで管理されているクラスタである。また、ジャングファイルを用いる場合は、ジャンクファイルを消去して、空き領域に開放する機能である。  
(u) 残り容量の取得：ＡＵ単位に管理されるメモリで、空き容量もＡＵ単位に計算する。フラグメント領域、前記未使用領域を含まない計算方法。
【０１４７】
５．３  本実施形態に係る効果  
本実施形態のように拡張ＡＰＩを用いることで、従来の基本ＡＰＩで処理出来ない情報を、アプリケーション５０が実装出来る。
【０１４８】
第１実施形態で説明した通り、アプリケーション５０はＡＵサイズやスピードクラス等の情報を把握することなく、第１乃至第５実施形態が実施可能である。しかしながら、拡張ＡＰＩによって、基本ＡＰＩに無い機能をアプリケーション５０に持たせることにより、アプリケーション５０の開発の自由度を向上出来る。
【０１４９】
６．第６実施形態  
次に、第６実施形態に係るホスト装置について説明する。本実施形態は、上記第１乃至第５実施形態において、複数のファイルを同時にメモリカードに書き込む場合の動作に関するものである。以下では、第１乃至第５実施形態と異なる点についてのみ説明する。
【０１５０】
６．１  シングルストリーム機能を用いた場合  
まず、メモリカード２のシングルストリーム機能を用いた場合（あるいは、メモリカード２がマルチストリーム機能をサポートしない場合）について、図２６を用いて説明する。図２６は、専用ファイルシステムの動作を示すフローチャートである。
【０１５１】
図示するように専用ファイルシステムは、同時に作成する複数ファイル（Ｎ個、Ｎは２以上の自然数）は同じディレクトリに作成することを想定し、同じディレクトリエントリが使用可能であると想定する。専用ファイルシステムは、Ｎに関係なくデータ書き込み用のＡＵをひとつ確保しておく（ステップＳ７０）。そして専用ファイルシステムは、Ｎ個のファイルの書き込み命令をアプリケーション５０から受信する（ステップＳ７１）。次に専用ファイルシステムは、Ｎ個のファイルのそれぞれに対応するＮ個のファイルエントリを同一のディレクトリエントリに作成する（ステップＳ７２）。引き続き専用ファイルシステムは、確保したデータ書き込み用ＡＵに、Ｎ個のファイルデータを分割して書き込む（ステップＳ７３）。各ファイルのデータの大きさは、例えば、各ファイルのビットレートで決定する。
【０１５２】
図２７は本実施形態のメモリマップを示し、ホスト装置１がメモリカード２に２つのファイルエントリ（File_Entry1, File_Entry2）を作成し、ファイルエントリ１にファイル１の情報(名前、属性など、データクラスタの開始位置など)を作成し、同様にファイルエントリ２にファイル２の情報を作成する様子を示している。
【０１５３】
専用ファイルシステムは、同一のディレクトリエントリに、ファイルエントリ１（File_Entry1）とファイルエントリ２（File_Entry2）を作成する。
【０１５４】
また専用ファイルシステムは、２つのファイル（File1, File2）のデータ格納用に、空きＡＵ２を確保する。そして専用ファイルシステムは、確保したＡＵ２に、File1及びFile2のデータをシーケンシャルに書き込む。図２７では、データＤＡＴ１、ＤＡＴ２、ＤＡＴ３、…がFile1を構成するデータであり、データＤＡＴ＿Ａ、ＤＡＴ＿Ｂ、ＤＡＴ＿Ｃ、…がFile2を構成するデータである。専用ファイルシステムは、これらのデータを分割してメモリカード２に書き込む。この際、データを書き込む順番とデータの大きさは任意であるが、通常はビットレートなどを考慮して決定される。各ＡＵへのデータの書き込み方法としては、先に挙げた特開２００６−１７８９２３号公報に開示のリアルタイム記録方法を用いることが出来る。
【０１５５】
図２８は、２つのファイル（第１ファイル及び第２ファイル）を同時にメモリカード２に書き込む際の、専用ファイルシステムにより処理の流れをより具体的に示すフローチャートである。図２８では、専用ファイルシステムが、第１ファイルの書き込み中に第２ファイルの書き込み命令を受信した場合を例に挙げている。
【０１５６】
図示するように専用ファイルシステムは、DIR Entryとは別な、空きＡＵをひとつデータ書き込みＡＵとして確保する（ステップＳ８０）。また専用ファイルシステムは、アプリケーション５０から、例えば第１ファイルの作成とデータ書き込み要求を受信する(ステップＳ８１）。専用ファイルシステムは、ディレクトリエントリに第１ファイル情報を登録し(ステップＳ８２）、前記データ書き込みＡＵに第１ファイルのデータを書き始める(ステップＳ８３）。続いてアプリケーション５０から、例えば第２ファイルの作成とデータ書き込み要求を受信する(ステップＳ８４）。専用ファイルシステムは、ディレクトリエントリに第２ファイル情報を登録し(ステップＳ８５）、第１ファイルと第２ファイルのデータを分割して前記データ書き込みＡＵにシーケンシャルに書き込む(ステップＳ８６）。分割した書き込みデータの順番とデータサイズは、ファイルデータの書き込みビットレートなどを参考に決定する。
【０１５７】
６．２  マルチストリーム機能を用いた場合  
次に、メモリカード２のマルチストリーム機能を用いた場合について、図２９を用いて説明する。図２９は、専用ファイルシステムの動作を示すフローチャートである。
【０１５８】
図示するように専用ファイルシステムは、Ｎ個（Ｎは２以上の自然数）のファイルの書き込み命令をアプリケーション５０から受信すると（ステップＳ９０）、各ファイルのデータ書き込み用にＮ個の空きＡＵを確保する（ステップＳ９１）。そして専用ファイルシステムは、同一のディレクトリエントリに、Ｎ個のファイルのそれぞれに対応するＮ個のファイルエントリを作成する（ステップＳ９２）。また専用ファイルシステムは、取得したＮ個のＡＵのそれぞれに、Ｎ個のファイルについてのデータを分割して書き込む（ステップＳ９３）。分割した書き込みデータの順番とデータ長は、各ファイルのビットレートなどにより決定される。
【０１５９】
図３０は本実施形態のメモリマップを示し、図２７と同様に、ホスト装置１がメモリカード２の同一ディレクトリエントリに２つのファイルエントリ（File_Entry1, File_Entry2）を作成する。
【０１６０】
更に専用ファイルシステムは、２つのファイル（File1, File2）のデータ格納用に、２つの空きＡＵ２、ＡＵ３を確保する。そして専用ファイルシステムは、ＡＵ２にFile1のデータをシーケンシャルに書き込み、またＡＵ３にFile2のデータをシーケンシャルに書き込む。ＡＵ２及びＡＵ３へのデータの書き込みは分割して行われ、書き込む順番や１度に書き込むデータ単位も任意である。また、各ＡＵへデータを書き込む際には、参照によって本明細書にその全てが組み込まれる国際公開公報ＷＯ２０１１／０９３５１７号に記載の構成及び書き込み方法を用いることが出来る。各ファイルデータは、ストリーム番号管理され、例えばFile1はストリーム１, File2はストリーム２に割り当てられる。ストリームとＡＵとの関連づけは、書き込み開始コマンドと新ＡＵ書き込みコマンドで行われる。ＣＭＤ２０の引数に設定されたストリーム番号と、両コマンドに続く書き込みコマンドのアドレスがＡＵを特定するアドレス情報で、両者が関連付けられる。ＡＵ２、ＡＵ３がいっぱいになると、新ＡＵ書き込みコマンドで、別な空きＡＵを指定する。
【０１６１】
図３１は、２つのファイル（第１ファイル及び第２ファイル）を同時にメモリカード２に書き込む際の、専用ファイルシステムにより処理の流れをより具体的に示すフローチャートである。図３１は図２８と同様に、専用ファイルシステムが、第１ファイルの書き込み中に第２ファイルの書き込み要求を受信した場合を例に挙げている。
【０１６２】
図示するように専用ファイルシステムは、アプリケーション５０から、例えば第１ファイルについての書き込み要求を受信する（ステップＳ１００）と、ディレクトリエントリに第１ファイルのFile Entryを作成する（ステップＳ１０１）。更に専用ファイルシステムは、第１ストリームを選択した書き込み開始コマンドを発行し(CMD20 Start Rec Stream ID=1)（ステップＳ１０２）、空きＡＵ２を取得し、その先頭アドレスを引数に設定したライトコマンドを発行する（ステップＳ１０３）。これにより、ストリーム１とＡＵ２の関連付けが行われ、ＡＵ２に第１ファイルのデータをシーケンシャルに書き込みはじめる（ステップＳ１０４）。
【０１６３】
引き続き専用ファイルシステムは、アプリケーション５０から、第２ファイルについての書き込み要求を受信する（ステップＳ１０５）と、ディレクトリエントリに第２ファイルのFile Entryを作成する（ステップＳ１０６）。第２ストリームを選択した書き込み開始コマンドを発行し(CMD20 Start Rec Stream ID=2)（ステップＳ１０７）、空きＡＵ３を取得し、その先頭アドレスを引数に設定したライトコマンドを発行する(ステップＳ１０８）。これにより、ストリーム２とＡＵ３の関連付けが行われ、ＡＵ２に第１ファイルのデータを、ＡＵ３に第２ファイルのデータをシーケンシャルに分割して書き込む（ステップＳ１０９）。
【０１６４】
６．３  本実施形態に係る効果  
現在、音楽データや映像データの記録メディアとしてＮＡＮＤ型フラッシュが広く用いられている。記録メディアの使用形態も多様化しており、例えば２つのテレビ番組を平行して録画したり、あるいは動画を撮影している最中に静止画を撮影したり出来る要望がある。このような要望を従来のファイルシステムで実現しようとすると、ＮＡＮＤ型フラッシュメモリ内においてデータのコピー動作が必要となり、書き込み速度が低下する。これは、ＮＡＮＤ型フラッシュメモリではデータの上書きが出来ないことに起因する。
【０１６５】
この点、本実施形態に係る構成であると、複数ファイルを同時にメモリカードに記録する場合であっても、データはシーケンシャルにＡＵに書き込まれる。従って、ＮＡＮＤ型フラッシュメモリにおける最適な方法でデータを書き込むことが出来、メモリカード２の性能を最大限に発揮させることが出来る。
【０１６６】
より具体的には、メモリカードのマルチストリーム機能を利用する場合には、専用ファイルシステムは、ストリーム毎にＡＵを確保し、各ストリームデータを、対応するＡＵにそれぞれシーケンシャルに書き込む。またシングルストリーム機能を利用する場合には、専用ファイルシステムは、複数の異なるファイルをひとつのファイルに統合し、これをＡＵにシーケンシャルに書き込む。
【０１６７】
なお、マルチストリーム機能を利用する場合にも、複数の異なるファイルをひとつのファイルに統合しても良い。
【０１６８】
７．第７実施形態  
次に、第７実施形態に係るホスト装置について説明する。本実施形態は、第１、第２実施形態で説明した拡張ＡＰＩ機能を有しないホスト装置によって第１、第３、第４実施形態で説明した動作を実現するものである。以下では、上記実施形態と異なる点についてのみ説明する。
【０１６９】
７．１  ホスト装置１の構成について  
本実施形態に係るホスト装置１は、第１実施形態で説明した図２において拡張ＡＰＩ５６を廃した構成を有する。
【０１７０】
７．２  ホスト装置２の動作について  
次に、本実施形態に係るホスト装置２の動作について、図３２を用いて説明する。図３２は、ホスト装置２の特に専用ファイルシステムの処理の流れを示すフローチャートである。
【０１７１】
(1) ファイル作成要求  
図３２に示すようにまず、専用ファイルシステムは、アプリケーション５０がメモリカード２へのファイル作成要求を受信する（ステップＳ１１０）。この要求は、例えば基本ＡＰＩ５５におけるFileOpen関数を用いて行われる。
【０１７２】
(2) ファイル属性の判定
次に専用ファイルシステムは、データを書き込むための空き領域を取得する。データをどこに書くかは、空き領域情報（ＦＡＴまたはビットマップ）を参照して決定される。この際、専用ファイルシステムは、アプリケーション５０からのファイル作成要求に含まれるデータ属性がビデオデータであるか否かを判断して（ステップＳ１１１）、その結果に応じて空き領域の取得方法を変える。なおステップＳ１１１の判断は、ファイルエントリ内のファイル拡張子情報によって判断出来る。より具体的には、例えばファイルの拡張子で識別することが出来る。ファイルの拡張子が“ＭＰ４”や“ＭＯＶ”などのビブオファイル属性であれば、当該ファイルはビデオデータであると判断出来る。あるいは、ビデオファイルであることを示す特別なビットをディレクトリエントリ内に設け、このビットによって判断しても良い。
【０１７３】
書き込みデータがビデオデータである場合には（ステップＳ１１２、ＹＥＳ）、専用ファイルシステムは、上記第１乃至第６実施形態で説明してきたような、ＡＵ単位で領域を確保するアルゴリズムを選択する（具体的には、後述するステップＳ１１６）。すなわち専用ファイルシステムは、ＡＵサイズを認識し、ＦＡＴ（またはビットマップ）からＡＵサイズ単位で、全領域が空いている領域を探し、見つかったいずれかの領域を、ビデオデータの書き込み領域として選択する。このアルゴリズムは、図６で説明したFree AU write algorithmである。
【０１７４】
他方で、書き込みデータがビデオデータでなければ（ステップＳ１１２、ＮＯ）、通常のファイルシステムで用いられる、データをフラグメントした領域に詰めて書き込むアルゴリズムを選択する（具体的には、後述するステップＳ１２１）。このアルゴリズムは、図６で説明したFragmented AU write algorithmである。
【０１７５】
ビデオデータは一例として挙げたもので、大きなデータを持つ可能性のある拡張子であれば(例えばJPGファイルなど)、同様にＡＵ単位で領域を確保するアルゴリズムを選択することができる。また、アプリケーションからファイルのトータルデータ長を取得することで、その大きさによってアルゴリズムを決定することもできる(ファイルエントリはすでに書き込んだデータ長を記録するので、トータルデータ長はここからは分からない)。データサイズが大きいか小さいかの判断は、例えば専用ファイルシステムが予め保持する閾値を基準にして判断することが出来る。データサイズが未定な場合は、ディレクトリエントリ内のファイルエントリ情報に基づいて、大きなデータを持つ可能性のあるファイル属性であるか否かを識別することも可能である。
【０１７６】
(3)ファイルエントリの作成
次に専用ファイルシステムは、ファイルエントリを作成し、これをメモリカード２に書き込む（ステップＳ１１３）。
【０１７７】
書き込みデータがビデオデータの場合（ステップＳ１１２、ＹＥＳ）、専用ファイルシステムはＤＩＲ更新コマンド（ＣＭＤ２０ Update DIR）を発行して、次の書き込みデータがファイルエントリであることをメモリカード２に通知し、その後、ＣＭＤ２５を発行して、ファイルエントリをメモリカード２に書き込む（ステップＳ１１３）。ファイルエントリには、図１４で説明したように、ファイル名、拡張子、及びステップＳ１１３で取得したデータ記録位置情報（先頭アドレス）等が含まれる。
【０１７８】
書き込みデータがビデオデータでない場合、ＣＭＤ２０は発行されない（ステップＳ１２０）。
【０１７９】
(4) 空き領域の確保とデータの書き込み  
次にデータのメモリカード２への書き込みが行われる。書き込みデータがビデオデータの場合（ステップＳ１１２、ＹＥＳ）、専用ファイルシステムは、アプリケーション５０からデータライト要求を受信すると、書き込むべき空き領域があるかどうかをチェックする(ステップＳ１１４）。すでにデータ書き込み用ＡＵが確保されている場合は、続きから追記を行う。データ書き込み用ＡＵが確保されていないか、確保されているＡＵに空きがない場合、CMD20 Start Recまたは、CMD20 Set New AUを発行し(ステップＳ１１５）、空きＡＵを確保し(ステップＳ１１６）、そのＡＵにシーケンシャルに書き込む（ステップＳ１１７）。なお、書き込みが終了するまでステップＳ１１４に戻り（ステップＳ１１８）、ＡＵの全領域にデータが書き込まれた際は、専用ファイルシステムはFree AU write algorithmに従って別の空きＡＵを確保し、この空きＡＵにデータをシーケンシャルに書き込む。書き込まれたデータの順番は、ＦＡＴチェーンとして記録される。また、専用ファイルシステムにより、ある時間毎やある書き込み要領毎にＦＡＴを更新するサイクルが、データ書き込みの間に挿入される。
【０１８０】
書き込みデータがビデオデータでなければ（ステップＳ１１２、ＮＯ）、ファイルに必要な空きクラスタを確保し(ステップＳ１２１）、ＣＭＤ２５でデータを書き込み、書き込まれたデータの順番は、ＦＡＴチェーンとして記録し(ステップＳ１２２）、書き込みが終了するまで繰り返す(ステップＳ１２３）。ステップＳ１２０からステップＳ１２３で、ＣＭＤ２０は使用されない。
【０１８１】
(5) 終了処理  
専用ファイルシステムは、アプリケーション５０から依頼されたクローズ処理においてファイルのクローズ処理を実行する（ステップＳ１１９）。それまでに記録したデータのサイズや更新日時等の情報をファイルエントリに記録する。データを継続して同ファイル書き込む場合は、Append Modeでこのファイルをオープンし直す。このとき、スピードクラス書き込みに影響を与えない制御とすることが前提である。
【０１８２】
７．３  本実施形態に係る効果  
本実施形態で説明した方法によれば、拡張ＡＰＩ５６を不要としつつ、上記第１乃至第６実施形態の動作が実行可能となる。そしてアプリケーション５０は、メモリカード２のスピードクラスやＡＵサイズを認識する必要も無い。
【０１８３】
８．変形例等  
以上のように、上記第１乃至第７実施形態に係るホスト装置は、メモリデバイスにアクセスするホスト装置であって、アプリケーションソフトウェア(Application50 in FIG2)と、専用ファイルシステム(Unit51 and FileSystem52 in FIG2)と、インターフェース回路(I/F59 in FIG2)とを備える。アプリケーションソフトウェア５０は、専用ファイルシステムに対して、メモリデバイスアクセス要求を発行する。アクセス要求は、ファイルオープン、ファイルデータ書き込み、ファイルクローズなどがある。専用ファイルシステム（５１、５２）は、アクセス要求に応答して、メモリデバイスに対するアクセス制御を行う。インターフェース回路５９は、専用ファイルシステム（５１、５２）によるアクセス制御に従ってメモリデバイスにアクセスする。専用ファイルシステム（５１、５２）は、メモリデバイスの論理アドレス空間を、所定の単位領域ＡＵごとに管理し、確保したいずれかの未使用の単位領域ＡＵにデータをシーケンシャルに書き込む。単位領域ＡＵに対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令(CMD25)で構成される。アプリケーションソフトウェア５０は、単位領域ＡＵサイズを認識することなく、アクセス要求を専用ファイルシステム（５１、５２）に発行する。
【０１８４】
本構成によれば、専用ファイルシステムはメモリデバイス２をＡＵ単位で管理し、データをシーケンシャルに書き込む。従って、アプリケーション５０はＡＵサイズを認識することなく、高速な書き込み動作が可能となる。
【０１８５】
なお、上記第１乃至第７の実施形態は種々の変形が可能である。本明細書におけるＡＵ（allocation unit）とは、メモリデバイスの論理空間上の管理単位であり、ＳＤメモリカードのスピードクラスに定義されている単位である。メモリカードのレジスタから値を読み出すことができる。そしてＡＵ境界は、ＮＡＮＤ型フラッシュメモリ３１の物理ブロック境界と関連している。
【０１８６】
図３３は、ＮＡＮＤ型フラッシュメモリ３１のメモリセルアレイ４８のブロック図である。図示するようにメモリセルアレイ４８は、複数のブロック（物理ブロック）ＢＬＫを備えている。各ブロックは、２つの選択トランジスタＳＴ１、ＳＴ２の間に直列接続された複数のメモリセルＭＣを備えている。同一行のメモリセルＭＣは同一のワード線ＷＬに接続され、同一のワード線ＷＬに接続された複数のメモリセルＭＣによりページが構成される。そして、データの書き込みはページ単位で行われ、ソース線ＳＬに近いメモリセルＭＣから順番に行われる。またデータの消去はブロックＢＬＫ単位で行われる。つまり、物理ブロックＢＬＫ内のデータは一括して消去される。そしてブロック（及びページ）には、物理アドレスが割り当てられている。ひとつ、または複数の物理ブロックでひとつのＡＵを構成する。
【０１８７】
図３４は、ホスト装置１からメモリカード２を見たときのメモリ空間（論理アドレス空間）と、それに対応する物理ブロックＢＬＫを示す模式図である。図示するように、ホスト装置１の専用ファイルシステムは、論理アドレス空間を、例えば４Ｍバイト等のサイズを有するＡＵ単位で管理する。個々のＡＵは、例えば４個のブロックＢＬＫに対応付けられる。図３４の例では、ＡＵ１はブロックＢＬＫ０〜ＢＬＫ３に対応し、ＡＵ２はブロックＢＬＫ４〜ＢＬＫ７に対応している。この対応関係は、例えばデータコピーを伴う動作等により時間と共に変化する。従って、この対応関係が、前述の論理アドレス／物理アドレス変換テーブルに記録されている。ＡＵのサイズはブロックＢＬＫサイズの４倍であり、ＡＵの境界はブロックＢＬＫの境界に一致している。言い換えれば、ＡＵの先頭アドレス（論理アドレス）は、いずれかの物理ブロックＢＬＫの先頭アドレス（物理アドレス）に対応し、当該ＡＵの最終アドレス（論理アドレス）は、いずれかのブロックＢＬＫの最終アドレス（物理アドレス）に対応する。なお図３４の例では論理アドレスの値と物理アドレスの値とが一致しているが、書き込み性能が満足していれば、バウンダリ境界は異なっていても良いことは言うまでもない。
【０１８８】
上記実施形態では、ＡＵのサイズは物理ブロックサイズの整数倍である場合を例に説明したが、ブロックサイズと同一であっても良い(１倍)。またＡＵは、スピードクラスで定義された概念には限らず、ホスト装置１による論理アドレス空間の管理単位であれば限定されるものでは無い。通常書き込みであっても、ＡＵ境界を認識し、シーケンシャルライトすることで高速化することができる。
【０１８９】
専用ファイルシステムは、１つのディレクトリエントリ用のＡＵに複数のディレクトリエントリを割り当てることが出来る。図３５は、ディレクトリ構造の一例を示す概念図である。図示するように、ルートディレクトリに２つのサブディレクトリＤＩＲ１及びＤＩＲ２が形成され、ＤＩＲ１及びＤＩＲ２の中にそれぞれファイル“FILE1A.mp4”及び“FILE2.mp4”が記録されている。
【０１９０】
この場合の、ホスト機器１から見た論理アドレス空間を図３６に示す。図示するように専用ファイルシステムは、ディレクトリエントリ用のＡＵとしてＡＵ１を確保している。ＤＩＲ１及びＤＩＲ２のディレクトリエントリ領域をそれぞれＡＵ１に確保する。またＤＩＲ１内のデータ用に空きＡＵ２を確保し、ＤＩＲ２内のデータ用に空きＡＵ３を確保する。従って、“FILE1A.mp4”はＡＵ２の先頭アドレスからシーケンシャルに書き込まれ、“FILE2.mp4”はＡＵ３の先頭アドレスからシーケンシャルに書き込まれる。
【０１９１】
このような状況において、図３７に示すように、アプリケーション５０がＤＩＲ１にファイル“FILE1B.mp4”を記録するよう要求してきたとする。すると専用ファイルシステムは、図３８に示すように、既にＤＩＲ１用として確保したＡＵ２内の空き領域に追記するかたちで“FILE1B.mp4”を書き込む。“FILE1B.mp4”は、“FILE1A.mp4”が書き込まれた領域の最終アドレスに続いてシーケンシャルにＡＵ２内に書き込まれる。もちろん、“FILE1B.mp4”を書き込むためにＡＵ２の空き容量が足りなければ、専用ファイルシステムは別の空きＡＵを確保して、そこに引き続き“FILE1B.mp4”を書き込めば良い。
【０１９２】
また専用ファイルシステムは、第３実施形態で詳細に説明したように、アプリケーション５０からデータの削除要求や上書き要求を受信しても、不要となったデータそのものはクラスタ内に残しておく。そして専用ファイルシステムは、ＦＡＴを更新することにより、当該クラスタの使用を禁止する。しかしながら専用ファイルシステムは、メモリカード２の残り容量が一定値を下回った際や、あるいはアプリケーション５０の要求に応じてガーベージコレクションを行って、不要なデータを消去することが出来る。
【０１９３】
図３９は、ガーベージコレクションの一例を示す概念図である。例えば、ＡＵ１からＡＵ４にフラグメントした状態でデータが保持されている様子を示している。図中において、「無効（不要）データを保持する領域」とは、第３実施形態で説明したジャンクファイルや、ＦＡＴがエラーコードとされたファイルを保持する領域である。
【０１９４】
すると専用ファイルシステムは、ＡＵ２〜ＡＵ４の有効データＤ２〜Ｄ４を、ある空きＡＵ５にコピーする。そして、ＡＵ２〜ＡＵ４内のデータを全て消去する。また専用ファイルシステムは、ＡＵ５のＦＡＴテーブルに新たなＤ２〜Ｄ４のデータチェーンを記録し、ＡＵ２〜ＡＵ４のＦＡＴテーブルを空き領域に書き換える処理を行う。
【０１９５】
以上の結果、ＡＵ２〜ＡＵ４は消去状態とされ、再びシーケンシャルにデータを書き込むことが可能な領域となる。
【０１９６】
また、上記実施形態ではメモリデバイスとしてＳＤメモリカードを例に挙げて説明した。しかし、メモリデバイスはＳＤメモリカードに限らず、あらゆる記憶媒体であって良い。ファイルシステムもまたＦＡＴファイルシステムに限定されるものでは無い。
【０１９７】
更に、上記実施形態は、適宜組み合わせて実施することが出来る。例えば上記実施形態では、ＣＭＤ２０を用いたスピードクラスライトとＡＵ単位での管理の両方を実装するホスト装置を例に説明した。しかし、カードがＣＭＤ２０をサポートしない場合は、各実施例に対してホストは CMD20を省略して同様な処理を行えば良い。ＣＭＤ２０を用いずに書き込みを行うホスト装置であっても、ＡＵ単位での管理を行うことでデータコピー動作の発生を抑制する効果が得られる。
【０１９８】
なお、上記実施形態は以下の態様を含む。  
[1]メモリデバイスにアクセスするホスト装置であって、  
ファイルシステムに対してアプリケーションインタフェース(ＡＰＩ)により前記メモリデバイスへのアクセス要求を発行するアプリケーションソフトウェア(Application50 in FIG2)と、  
前記アクセス要求に応答して、前記メモリデバイスのメモリ領域をフラッシュメモリに適した方式で管理を行う専用ファイルシステム(Unit51, FileSystem52 in FIG2)と、  
ホスト装置の前記専用ファイルシステムと前記メモリデバイス間の通信を可能にするインターフェース回路(I/F59 in FIG2)と  
を具備し、前記専用ファイルシステムは、前記メモリデバイスの論理アドレス空間を、所定の単位領域(AU in FIG6)ごとに管理し、確保したいずれかの未使用の単位領域にデータをシーケンシャルに書き込み、前記単位領域に対するシーケンシャル書き込みは、ひとつ、または複数の書き込み命令(CMD24 or 25)で構成され、  
前記アプリケーションソフトウェアは、前記単位領域サイズを認識することなく、前記アクセス要求を前記専用ファイルシステムに発行するホスト装置。  
[2] DIR Entry管理、単位領域ベースの空き領域管理、削除データ管理  
前記専用ファイルシステムは、  
前記アプリケーションからディレクトリの作成要求があった場合、ディレクトリエントリ用の前記単位領域が確保されていなければ、空き単位領域をディレクトリエントリ用の単位領域として確保し、複数のディレクトリが作成された場合、それぞれのディレクトリエントリをこのＡＵの空き領域に確保し、  
前記メモリデバイス内のデータを削除する場合、削除対象データを再利用できない方法でデータを管理し(step S20 in FIG17)、  
全領域が未使用である前記単位領域の数に基づいて、前記メモリデバイス全体の空き領域を計算する、[1]のホスト装置。  
[3]アルゴリズムの選択  
前記専用ファイルシステムは、ファイルを前記メモリデバイスに書き込む際、前記アプリケーションソフトウェアからのファイルデータサイズ情報の大小を基づいて、小さなデータファイルである場合には、前記メモリデバイスの領域使用率を優先したアルゴリズム(Fragmented AU Write Algorithm in FIG6)を用いて前記メモリデバイスを管理し、  
大きなデータを持つファイルの場合には、前記単位領域ごとにデータの書き込み領域を管理するアルゴリズム(Free AU Write Algorithm in FIG6) を用いて前記メモリデバイスを管理し、  
前記ファイルデータサイズが未定な場合は、ディレクトリエントリ内の前記ファイルエントリ情報に基づいて、大きなデータを持つ可能性のあるファイル属性であるか否かを識別し(step S112 in FIG33)、前記アルゴリズムを切り替える、[1]のホスト装置。  
[4] video dataの判断方法  
前記専用ファイルシステムは、前記ディレクトリエントリ内の前記ファイルエントリに記録されているファイル拡張子情報、またはビデオファイルであるか否かを示す情報フィールドに基づいて、前記書き込みデータがビデオファイルであるか否かを識別する、[3]のホスト装置。  
[5] junk fileを隠しfileに設定  
前記専用ファイルシステムは、削除対象データを再利用できない方法として、隠しファイル属性を設定したジャンクファイルとして管理する、[1]のホスト装置。  
[6] data削除方法でjunk fileにつなげない場合  
前記専用ファイルシステムは、ＦＡＴファイルシステムを含み、  
前記メモリデバイスのメモリ空間は前記ＦＡＴファイルシステムでフォーマットされた複数のクラスタの集合であり、  
前記メモリデバイス内のデータをクラスタ単位で削除する場合、前記専用ファイルシステムは、削除対象データを再利用できない方法として、削除対象データを保持するクラスタのＦＡＴをエラーコードまたは最終セクタコードに書き換える(step S14 in FIG15)、[1]のホスト装置。  
[7] data上書き方法でjunk fileにつなげない場合  
前記専用ファイルシステムは、ＦＡＴファイルシステムを含み、  
前記メモリデバイスのメモリ空間は前記ＦＡＴファイルシステムでフォーマットされた複数のクラスタの集合であり、  
前記メモリデバイス内のデータの少なくとも一部をクラスタ単位で上書きする場合、前記専用ファイルシステムは、確保した前記単位領域に上書きデータをシーケンシャルに書き込み、ＦＡＴのリンクを更新すると共に(step S32 in FIG19)、  
削除対象データを再利用できない方法として、上書き対象データを保持するクラスタのＦＡＴを、エラーコードまたは最終セクタコードに書き換える(step S34 in FIG19)、[1]のホスト装置。  
[8] data上書き方法でjunk fileにつなげる場合  
前記専用ファイルシステムは、ＦＡＴファイルシステムを含み、  
前記メモリデバイスのメモリ空間は前記ＦＡＴファイルシステムでフォーマットされた複数のクラスタの集合であり、  
前記メモリデバイス内のデータの少なくとも一部をクラスタ単位で上書きする場合、前記専用ファイルシステムは、確保した前記単位領域に上書きデータをシーケンシャルに書き込み、ＦＡＴのリンクを更新すると共に(step S32 in FIG19)、  
削除対象データを再利用できない方法として、上書き対象データを対応するクラスタから消去することなく、ジャンクファイルとして残す(step S40 in FIG21)、[1]のホスト装置。  
[9] single streamでの複数file同時書き込み  
前記専用ファイルシステムは、前記アプリケーションソフトウェアによる要求に基づいて複数のファイルを同時に作成する際、ひとつの前記単位領域を確保し、前記複数のファイルが混在したデータを書き込む(FIG27-28)、[1]のホスト装置。  
[10] multi-streamでの複数file同時書き込み  
前記専用ファイルシステムは、前記アプリケーションソフトウェアによる要求に基づいてＮ個のファイルを同時に作成する際、空き状態のＮ個の前記単位領域を確保し、Ｎ個の単位領域に前記Ｎ個のファイルのファイルデータをそれぞれ書き込む(FIG30-31)、[1]のホスト装置。  
[11] DIR entryの初期化をcardが自発的に行う  
[1]記載のホスト装置によってアクセスされる前記メモリデバイスであって、  
ディレクトリエントリ領域を確保するコマンドを前記ホスト装置から受信した場合、指定された領域が“０”で満たされるように初期化行い、前記ホスト装置が、そのディレクトリエントリ領域を初期化する必要がない、メモリデバイス。
【０１９９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０２００】
１…ホスト装置、２…メモリカード、１１…ＭＰＵ、１２…ＳＤインターフェース、１３…ＲＡＭ、１４…ＲＯＭ、３１…ＮＡＮＤ型フラッシュメモリ、３２…コントローラ、４１…ＳＤインターフェース、４２…ＭＰＵ、４３…ＲＯＭ、４４…ＲＡＭ、４５…ＮＡＮＤインターフェース、４６…レジスタ、５０…アプリケーション、５１…ファイル制御ユニット、５２…ファイルシステム、５３…ホストコントローラドライバ、５４…ホストコントローラ、５５、５７…基本ＡＰＩ、５６…拡張ＡＰＩ、５８…ホストドライバインターフェース、５９…メモリバスインターフェース
【図１】
2014044490.tif 000003
【図２】
2014044490.tif 000004
【図３】
2014044490.tif 000005
【図４】
2014044490.tif 000006
【図５】
2014044490.tif 000007
【図６】
2014044490.tif 000008
【図７】
2014044490.tif 000009
【図８】
2014044490.tif 000010
【図９】
2014044490.tif 000011
【図１０】
2014044490.tif 000012
【図１１】
2014044490.tif 000013
【図１２】
2014044490.tif 000014
【図１３】
2014044490.tif 000015
【図１４】
2014044490.tif 000016
【図１５】
2014044490.tif 000017
【図１６】
2014044490.tif 000018
【図１７】
2014044490.tif 000019
【図１８】
2014044490.tif 000020
【図１９】
2014044490.tif 000021
【図２０】
2014044490.tif 000022
【図２１】
2014044490.tif 000023
【図２２】
2014044490.tif 000024
【図２３】
2014044490.tif 000025
【図２４】
2014044490.tif 000026
【図２５】
2014044490.tif 000027
【図２６】
2014044490.tif 000028
【図２７】
2014044490.tif 000029
【図２８】
2014044490.tif 000030
【図２９】
2014044490.tif 000031
【図３０】
2014044490.tif 000032
【図３１】
2014044490.tif 000033
【図３２】
2014044490.tif 000034
【図３３】
2014044490.tif 000035
【図３４】
2014044490.tif 000036
【図３５】
2014044490.tif 000037
【図３６】
2014044490.tif 000038
【図３７】
2014044490.tif 000039
【図３８】
2014044490.tif 000040
【図３９】
2014044490.tif 000041