(57)【特許請求の範囲】
【請求項１】
ブロックの境界位置とクラスタの境界位置とが一致するように論理フォーマットが形成された記録媒体を制御するための情報が記録されるアトリビュート情報エリアに記録されている「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」を読み出すアトリビュート情報読み出し手段と、
操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第１の記録モードである場合には、前記記録媒体上のユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照し、当該参照の結果、前記ユーザ領域内でデータファイルの記録されていない空き領域を検索し、当該検索の結果、得られた空き領域に前記記録対象のデータファイルをクラスタ単位で記録する第１のデータ記録手段と、
操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」と、ユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照した参照結果とから、「1ブロック内に含まれるクラスタ数」及び「ブロックの先頭クラスタの位置」を認識した後、前記記録媒体上のユーザ領域内でデータファイルの記録されていない空き領域中の１ブロック分連続した空き領域を検索し、当該検索の結果、１ブロック分連続した空き領域が得られた場合にのみ、当該得られた空き領域に前記データファイルをブロックの先頭クラスタの位置からブロック単位で記録する第２のデータ記録手段と、
操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記ファイルアロケーションテーブルを参照し、当該参照の結果、全てのクラスタが未記録であるブロックを検出し、検出したブロックの数から空き容量を算出する空き容量算出手段と
を備えたデータ処理装置。
【請求項２】
前記第２の記録モードは、前記第１の記録モードよりも高速に記録することが要求される記録モードである請求項１に記載のデータ処理装置。
【請求項３】
ブロックの境界位置とクラスタの境界位置とが一致するように論理フォーマットが形成された記録媒体を制御するための情報が記録されるアトリビュート情報エリアに記録されている「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」を読み出すアトリビュート情報読み出し工程と、
操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第１の記録モードである場合には、前記記録媒体上のユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照し、当該参照の結果、前記ユーザ領域内でデータファイルの記録されていない空き領域を検索し、当該検索の結果、得られた空き領域に前記記録対象のデータファイルをクラスタ単位で記録する第１のデータ記録工程と、
操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」と、ユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照した参照結果とから、「1ブロック内に含まれるクラスタ数」及び「ブロックの先頭クラスタの位置」を認識した後、前記記録媒体上のユーザ領域内でデータファイルの記録されていない空き領域中の１ブロック分連続した空き領域を検索し、当該検索の結果、１ブロック分連続した空き領域が得られた場合にのみ、当該得られた空き領域に前記データファイルをブロックの先頭クラスタの位置からブロック単位で記録する第２のデータ記録工程と、
操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記ファイルアロケーションテーブルを参照し、当該参照の結果、全てのクラスタが未記録であるブロックを検出し、検出したブロックの数から空き容量を算出する空き容量算出工程と
を含むデータ処理方法。
【請求項４】
前記第２の記録モードは、前記第１の記録モードよりも高速に記録することが要求される記録モードである請求項３に記載のデータ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内部に不揮発性の半導体メモリを備えたデータ記憶装置にデータを記録するデータ処理装置及びデータ処理方法に関するものである。
【０００２】
【従来の技術】
ＮＡＮＤ型のフラッシュメモリを利用したアプリケーションとして、いわゆるメモリカードと呼ばれる、リムーバブルな小型ＩＣメモリ装置が知られている。メモリカードは、静止画像データ、動画像データ、音声データ、音楽データ等の各種デジタルデータを格納することができる。そのため、メモリカードは、例えば、情報携帯端末、デスクトップ型コンピュータ、ノート型コンピュータ、携帯電話機、オーディオ装置、家電装置等々のホスト機器に、外部記憶メディアとして用いられる。
【０００３】
このようなホスト機器は、内部にハードディスク等の内部記憶メディアが備えられることが多い。ハードディスクは、一般的にＭＳ−ＤＯＳ（商標）と呼ばれるファイルシステムを媒介として、オペレーションシステムからアクセスがされる。そのため、メモリカードも、例えばＭＳ−ＤＯＳといったような一般的なファイルシステムを適用できることが望ましい。
【０００４】
ＭＳ−ＤＯＳでは、ストレージメディアのユーザ領域に、ファイルの管理データとして、ＭＢＲ（Master Boot Record）、ＰＢＲ（Partion Boot Record）、ＦＡＴ（Fail Allocation Table）、ルートディレクトリエントリを記録する等の処理を行うことによって、初期化が行われる。このようなファイル管理データを記録して初期化することによって、ホスト機器側のオペレーションシステムからアクセスが可能となる。従って、メモリカードも、ホスト機器が上記のファイル管理データをフラッシュメモリに書き込むことによって、初期化が行われる。
【０００５】
【発明が解決しようとする課題】
ところで、同一規格のメモリカードであっても、フラッシュメモリの容量が異なる場合がある。ホスト機器は、容量が異なるメモリカードを外部メディアとして初期化する場合、各容量毎に対応するＭＢＲ等の内容を示す初期化用のパラメータや初期化制御処理プログラムをそれぞれ備えておかなければならない。
【０００６】
しかしながら、このようにホスト機器側で初期化用のパラメータを備えていたとしても、例えば、新たな容量のメモリカードが発売された場合には対応することができなかった。
【０００７】
本発明は、初期化用の制御プログラムやパラメータを備えることなく、容易に初期化を行うことができるデータ記憶装置に、通常にクラスタ単位で記録をするよりも、高速にデータを記録することが可能なデータ処理装置及びデータ処理方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明にかかるデータ処理装置は、ブロックの境界位置とクラスタの境界位置とが一致するように論理フォーマットが形成された記録媒体を制御するための情報が記録されるアトリビュート情報エリアに記録されている「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」を読み出すアトリビュート情報読み出し手段と、操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第１の記録モードである場合には、前記記録媒体上のユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照し、当該参照の結果、前記ユーザ領域内でデータファイルの記録されていない空き領域を検索し、当該検索の結果、得られた空き領域に前記記録対象のデータファイルをクラスタ単位で記録する第１のデータ記録手段と、操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」と、ユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照した参照結果とから、「1ブロック内に含まれるクラスタ数」及び「ブロックの先頭クラスタの位置」を認識した後、前記記録媒体上のユーザ領域内でデータファイルの記録されていない空き領域中の１ブロック分連続した空き領域を検索し、当該検索の結果、１ブロック分連続した空き領域が得られた場合にのみ、当該得られた空き領域に前記データファイルをブロックの先頭クラスタの位置からブロック単位で記録する第２のデータ記録手段と、操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記ファイルアロケーションテーブルを参照し、当該参照の結果、全てのクラスタが未記録であるブロックを検出し、検出したブロックの数から空き容量を算出する空き容量算出手段とを備えることを特徴とする。
また、本発明にかかるデータ処理方法は、ブロックの境界位置とクラスタの境界位置とが一致するように論理フォーマットが形成された記録媒体を制御するための情報が記録されるアトリビュート情報エリアに記録されている「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」を読み出すアトリビュート情報読み出し工程と、操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第１の記録モードである場合には、前記記録媒体上のユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照し、当該参照の結果、前記ユーザ領域内でデータファイルの記録されていない空き領域を検索し、当該検索の結果、得られた空き領域に前記記録対象のデータファイルをクラスタ単位で記録する第１のデータ記録工程と、操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」と、ユーザ領域でのデータファイルの連結状態をクラスタ単位で示す前記記録媒体上に記録されたファイルアロケーションテーブルを参照した参照結果とから、「1ブロック内に含まれるクラスタ数」及び「ブロックの先頭クラスタの位置」を認識した後、前記記録媒体上のユーザ領域内でデータファイルの記録されていない空き領域中の１ブロック分連続した空き領域を検索し、当該検索の結果、１ブロック分連続した空き領域が得られた場合にのみ、当該得られた空き領域に前記データファイルをブロックの先頭クラスタの位置からブロック単位で記録する第２のデータ記録工程と、操作者の操作により記録対象のデータファイルの記録動作が開始された場合に、当該記録動作が第２の記録モードである場合には、前記ファイルアロケーションテーブルを参照し、当該参照の結果、全てのクラスタが未記録であるブロックを検出し、検出したブロックの数から空き容量を算出する空き容量算出工程とを含むことを特徴とする。
【０００９】
【発明の実施の形態】
以下、本発明の実施の形態として、本発明を適用したリムーバルな小型ＩＣメモリ装置、並びに、この小型ＩＣメモリ装置を外部記憶メディアとして用いるデータ処理装置について説明する。
【００１０】
なお、本発明の実施の形態として説明する小型ＩＣメモリ装置のことを、以下、メモリカードと呼ぶものとする。また、このメモリカードが接続されるデータ処理装置のことを、ホスト機器と呼ぶものとする。
【００１１】
アウトライン
図１に、ホスト機器及びメモリカードの外観斜視図を示す。
【００１２】
メモリカード１は、内部に不揮発性の半導体メモリ（ＩＣメモリ）を有しており、静止画像データ、動画像データ、音声データ、音楽データ等の各種デジタルデータを格納することができる。このメモリカード１は、例えば、情報携帯端末、デスクトップ型コンピュータ、ノート型コンピュータ、携帯電話機、オーディオ装置、家電装置等々のホスト機器２の外部記憶メディアとして機能する。メモリカード１は、ホスト機器２に設けられているスロット３に挿入された状態で使用される。メモリカード１のスロット３に対する挿入及び抜出は、ユーザが自在に行うことができる。そのため、例えば、あるホスト機器に挿入されていたメモリカード１を抜き出して、他のホスト機器に挿入することもでき、異なるホスト機器間のデータのやり取りに用いることが可能である。
【００１３】
メモリカード１及びホスト機器２は、４ビットパラレルデータ，クロック信号，バスステート信号の６つの信号を転送する６線式半２重パラレルプロトコルを用いたパラレルインタフェースでデータの転送を行う。
【００１４】
外観
図２は、本発明の実施の形態のメモリカード１を表面側から見た斜視図であり、図３は、本発明の実施の形態のメモリカード１を裏面側から見た斜視図である。
【００１５】
メモリカード１は、主面（表面１ａ及び裏面１ｂ）が略長方形とされた薄板形状となっている。メモリカード１は、主面の長手方向の長さが約５０ｍｍ、主面の短辺方向の長さが約２１．４５ｍｍ、厚さが約２．８ｍｍとなっている。また、メモリカード１は、主面が、表面１ａと裏面１ｂとに区別される。裏面１ｂの長手方向の一端には、１０個の平面電極（接続端子群４）が、短辺方向に一列に並んで設けられている。また、電極と電極との各間には、裏面１ｂから垂直に立ち上がったガード５が設けられ、接続端子への接触防止が図られている。また、メモリカード１の裏面１ｂには、誤消去禁止用のスライドスイッチ６が設けられている。
【００１６】
また、ホスト機器２のスロット３は、以上のような形状のメモリカード１に対応した凹状の形状となっていて、メモリカード１が挿入可能である。さらに、このスロット３は、メモリカード１が挿入されたときには、このメモリカード１が脱落しないように保持することができる。また、スロット３には、メモリカード１の１０個の平面電極に対応した位置に、１０個の接点が設けられている。そのため、メモリカード１が接続端子群４の方向からスロット内部に差し込まれることにより（図２のＸ方向にメモリカード１が差し込まれることにより）、これらのスロット３内の接点と、メモリカード１の各接続端子とが電気的に接続されることとなる。
【００１７】
本実施の形態のメモリカードのブロック構成
図４に、メモリカード１の内部ブロック構成図を示す。
【００１８】
メモリカード１は、パラレルインタフェース回路（Ｉ／Ｆ）１２と、レジスタ回路１３と、データバッファ回路１４と、ＥＣＣ回路１５と、メモリＩ／Ｆコントローラ１６と、不揮発性半導体メモリ１７と、発振制御回路１８とを備えて構成される。
【００１９】
パラレルＩ／Ｆ回路１２は、６線式半２重パラレル方式のデータ転送プロトコルを用いて、ホスト機器２との間でデータの転送を行う回路である。
【００２０】
レジスタ回路１３は、例えば、ホスト機器から転送されるメモリＩ／Ｆコントローラ１６に対する動作制御コマンド（以下、この動作制御コマンドのことをコントロールコマンドと呼ぶ。）、メモリカード１内の内部状態、コントロールコマンドを実行する際に必要な諸処のパラメータ、不揮発性半導体メモリ１７内のファイル管理情報等を記憶する回路である。このレジスタ回路１３は、ホスト機器２及びメモリＩ／Ｆコントローラ１６の両者からアクセスされる。なお、ホスト機器２は、本メモリカードのデータ転送プロトコル上で規定される転送プロトコルコマンド（以下、ＴＰＣ(Transfer Protocol Command)という。）を用いて、レジスタ回路１３に対してアクセスを行う。すなわち、レジスタ回路１３に格納されるコントロールコマンドや各種パラメータに対してホスト機器２が書き込みや読み出しをする場合には、ＴＰＣを用いて行う。
【００２１】
データバッファ回路１４は、不揮発性半導体メモリ１７へ書き込まれるデータ、並びに、不揮発性半導体メモリ１７から読み出されたデータを、一時的に保存するメモリ回路である。すなわち、ホスト機器２から不揮発性半導体メモリ１７へデータが書き込まれる場合には、書き込み対象データがホスト機器２からデータバッファ回路１４へデータ転送プロトコルに従って転送され、その後、データバッファ回路１４に格納されている書き込み対象データをメモリＩ／Ｆコントローラ１６が不揮発性半導体メモリ１７に書き込む。また、不揮発性半導体メモリ１７からホスト機器２へデータが読み出される場合には、メモリＩ／Ｆコントローラ１６が不揮発性半導体メモリ１７から読み出し対象データを読み出して一旦データバッファ回路１４に格納し、その後、その読み出し対象データがデータ転送プロトコルに従ってデータバッファ回路１４からホスト機器２へ転送される。なお、データバッファ回路１４は、所定のデータ書き込み単位（例えば、フラッシュメモリのページサイズと同一の５１２バイト）分のデータ容量を有している。なお、ホスト機器２は、ＴＰＣを用いて、データバッファ回路１４に対してアクセスを行う。すなわち、データバッファ回路１４に格納されるデータに対して、ホスト機器２が書き込みや読み出しをする場合には、ＴＰＣを用いて行う。
【００２２】
ＥＣＣ回路１５は、不揮発性半導体メモリ１７へ書き込まれるデータに対して誤り訂正コード（ＥＣＣ）を付加する。また、ＥＣＣ回路１５は、不揮発性半導体メモリ１７から読み出したデータに付加されている誤り訂正コードに基づき、この読み出したデータに対する誤り訂正処理を行う。例えば、誤り訂正コードは、５１２バイトのデータ単位に対して３バイト分付加される。
【００２３】
メモリＩ／Ｆコントローラ１６は、レジスタ回路１３内に格納されているコントロールコマンドに従い、データバッファ１４と不揮発性半導体メモリ１７との間のデータのやり取りの制御、不揮発性半導体メモリ１７のデータのセキュリティ管理の制御、メモリカード１のその他のファンクションの制御、並びに、レジスタ回路１３内に格納されているデータの更新処理等を行う。
【００２４】
不揮発性半導体メモリ１７は、例えば、ＮＡＮＤ型のフラッシュメモリ等の不揮発性の半導体メモリである。不揮発性半導体メモリ１７の容量は、例えば１６Ｍバイト、３２Ｍバイト、６４Ｍバイト、１２８Ｍバイトである。不揮発性半導体メモリ１７は、消去ブロック単位が、例えば６４Ｋ，１２８Ｋバイトである。
【００２５】
発振制御回路１８は、本メモリカード１内の動作クロックを発生する。
【００２６】
メモリカード１には、合計１０個の接続端子が設けられていることとなる。また、ホスト機器２側にも同様の接続端子が設けられている。
【００２７】
メモリカードとホスト機器間のインタフェース機能の構成
図５に、本実施の形態のメモリカード１とホスト機器２とのインタフェース機能をモデル化した図を示す。
【００２８】
ホスト機器２のインタフェース機能は、ファイルマネージャ３１と、ＴＰＣインタフェース３２と、パラレルインタフェース３３とから構成される。また、メモリカード１のインタフェース機能は、パラレルインタフェース３３と、レジスタ３５と、データバッファ３６と、メモリＩ／Ｆコントローラ３７と、メモリ３８とから構成される。
【００２９】
ファイルマネージャ３１は、ホスト機器のオペレーションシステムであり、メモリカード１内に格納されているファイル、並びに、ホスト機器の他のメディアに格納されているファイルの管理を行う。本実施の形態では、ファイルマネージャ３１は、オペレーションシステムとしてＭＳ−ＤＯＳ（Micorosoft Disc Operation System）（登録商標）が用いられる。ファイルマネージャ３１は、上記ＭＳ−ＤＯＳによりホスト機器２に接続されている他のストレージメディアも管理している。ファイルマネージャ３１は、ホスト機器２内のコントローラ内に実現される機能である。
【００３０】
ＴＰＣインタフェース３２は、ファイルマネージャ３１の下位レイヤとなるインタフェース機能である。ＴＰＣインタフェース３２は、本インタフェースの特有のコマンド（ＴＰＣ:Transfer Protocol Command）が規定されたデータ転送プロトコルにより、メモリカード１内のレジスタ３５及びデータバッファ３６へアクセスを行う。このＴＰＣインタフェース３２は、ホスト機器２内のコントローラ等により実現される機能である。
【００３１】
パラレルインタフェース３３，３４は、ＴＰＣインタフェース３２の下位レイヤとなり、本インタフェースシステムの物理階層である。パラレルインタフェース３３，３４は、４ビットパラレルデータ，クロック，バスステート信号の６つの信号を転送するデータ転送プロトコルである６線式半２重パラレルプロトコルに従い、データ転送を行う。パラレルインタフェース３３，３４は、パラレルインタフェース回路１２により実現される機能である。
【００３２】
レジスタ３５は、ホストから転送されたコントロールコマンド、メモリカードの内部状態、メモリ３８にアクセスするデータのアドレス、コントロールコマンドを実行する際に必要な諸処のパラメータ、メモリ内のファイル管理情報等を格納する。レジスタ３５は、メモリカード１のレジスタ回路１３上に実現される機能である。
【００３３】
データバッファ３６は、メモリ３８へ書き込まれるデータ、並びに、メモリ３８から読み出されたデータを、一時的に保存するバッファ領域である。データバッファ３６は、メモリカード１のデータバッファ回路１４上に実現される機能である。
【００３４】
メモリＩ／Ｆコントローラ３７は、レジスタ３５内に格納されているコマンド並びに各種情報に従い、データバッファ３６とメモリ３８との間のデータの読み出し、書き込み、消去、並びに、レジスタ３５内の各種情報の更新等の制御を行う。メモリＩ／Ｆコントローラ３７は、ホスト機器２上のメモリＩ／Ｆコントローラ１６により実現される機能である。
【００３５】
メモリ３８は、データのメモリ領域であり、メモリＩ／Ｆコントローラ３７を通して独自のモデルとして仮想化されている。メモリ３８は、メモリカード１上の不揮発性半導体メモリ１７により実現される機能である。
【００３６】
以上のような構成のホスト機器及びメモリカードでは、ファイルマネージャ３１に管理されている他のメディアに格納されているデータを、上記パラレルインタフェース３３，３４を介してメモリ３８に転送することができる。また、ファイルマネージャ３１は、本メモリカードと他のストレージデバイスとを、オペレーションシステム（ＭＳ−ＤＯＳ）で共通に管理しているため、例えば、メモリ３８に格納されているデータを他のストレージメディアに転送したり、他のストレージメディアに格納されているデータをメモリ３８に転送したりすることができる。
【００３７】
メモリカードのデータ格納領域の物理フォーマット
つぎに、メモリカード１のデータ格納領域（不揮発性半導体メモリ１７）の物理フォーマットについて説明をする。
【００３８】
メモリカード１は、ユーザに生成されたファイルが格納されるユーザエリアと、本メモリカード１の内部情報等が格納されているシステムエリアとから構成されている。ユーザエリア及びシステムエリアは、ともにコントロールコマンドを用いてホスト機器２からアクセスが可能である。ただし、ユーザエリアとシステムエリアとは、互いに異なるアドレス空間に形成されており、異なるコントロールコマンドによりホスト機器２からアクセスがされる。
【００３９】
（ユーザエリアの物理フォーマット）
ユーザエリアは、例えば６４Ｋバイト又は１２８Ｋバイトのブロックと呼ばれる単位で物理的に分割されている。このブロックが本メモリカード１における一括消去の単位となる。つまり、フラッシュメモリにおける消去ブロックが、本ブロックに対応する。
【００４０】
ブロックには、有効ブロック及び予備ブロックの２種類がある。有効ブロックは、ファイルの実体データ等が記録されるブロックである。予備ブロックは、後発性の不良の代替データが記録される領域である。
【００４１】
ユーザエリアは、ホスト機器２からはセクタ単位で連続するエリアとして認識されるが、内部では有効なデータを記録するセクタ番号から導き出される論理ブロック番号と物理ブロック番号とで管理されている。論理ブロック番号と物理ブロック番号との対応情報は物理ブロックの管理エリアである冗長部に記録するとともに、対応をデータ化した状態でホスト機器２からはアクセスできないシステムエリアに記録している。
【００４２】
各ブロックには、ブロックの格納位置を特定する物理ブロック番号が設定されている。この物理ブロック番号は、有効ブロック及び予備ブロックの区別に関わらずユニークに番号が設定されている。有効ブロックには、論理ブロック番号が記録される。論理ブロック番号は、各ブロック内の所定の領域に書き込まれる。論理ブロック番号は、本メモリカード１の初期化時に記録される。ブロックに不良が生じた場合には、未記録の予備ブロックに対して、不良ブロックの論理ブロック番号を書き込んで、論理ブロック番号の代替が行われる。各ブロック内は、ページと呼ばれる書き込み読み出し単位で分割されている。このページが、後述する論理フォーマットにおけるセクタと一対一で対応する。
【００４３】
各ブロックに付けられる論理ブロック番号は、後述する論理フォーマットにおけるクラスタ番号及びＬＢＡセクタ番号と、一義的に対応することとなる。ホスト機器２側からは、後述する論理フォーマットでデータ格納領域に対して仮想的にアクセスがされるが、メモリＩ／Ｆコントローラ１６が、論理ブロック番号と物理ブロック番号との対応関係が記述された論理−物理変換テーブルを用いてアドレス変換を行う。そのため、ホスト機器２側は、物理的にデータが記録されている位置を把握しなくても、論理的なアドレス（クラスタ番号やＬＢＡセクタ番号）を用いて不揮発性半導体メモリ１７に対してアクセスを行うことが可能となる。
【００４４】
（システムエリアの物理フォーマット）
システムエリアには、本メモリカード１を制御するために必要となる情報が記録されるアトリビュート情報エリアが設けられている。
【００４５】
アトリビュート情報エリアに記録されるデータを図６に示す。
【００４６】
アトリビュート情報エリアには、図６に示すように、“ATRB info area confirmation”、“Device-Information entry”、“System information”、“MBR Values”、“PBR Values”が記録されている
“ATRB info area confirmation”には、当該アトリビュート情報エリアを識別するための識別コードが含まれている。
【００４７】
“Device-Information entry”は、以下の“Device-Information（System information，MBR Values，PBR Values）”の各記録位置を示す。記録位置は、アトリビュート情報エリアのオフセット値で表される。
【００４８】
“System information”には、本メモリカード１の内部情報が記録される。例えば、“System information”には、バージョンやクラス情報、１ブロックのバイト数、１ブロックに含まれるセクタ数、トータルブロック数、アセンブリ日時、シリアル番号、アセンブリメーカ番号、フラッシュメモリのメーカ番号、フラッシュメモリのモデル番号、コントローラの番号、コントローラの機能、ブロック境界の開始セクタ番号、デバイスタイプ（リードライト可能、リードオンリー等）等が記録される。
【００４９】
なお、“System information”に記録されている「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」は、ホスト機器２が「リアルタイム記録モード」でデータを記録する際に参照されることとなる。「リアルタイム記録モード」の処理については、その詳細を後述する。
【００５０】
“MBR Values”には、ＭＳ−ＤＯＳ上で規定されている「ＭＢＲ」（Master Boot Record）の推奨パラメータが記録されている。例えば、“MBR Values”には、ＭＢＲ内に記録されるブート識別、開始ヘッド番号、開始シリンダ番号、システム識別、最終ヘッド番号、最終セクタ番号、最終シリンダ番号、開始ＬＢＡセクタ番号、パーティションサイズが記録される。開始ＬＢＡセクタ番号に示されたセクタが、「ＰＢＲ」（Partition Boot Record）の記録位置となる。つまり、ＭＳ−ＤＯＳ上で規定されている各パーティションの開始位置となる。なお、ＭＳ−ＤＯＳでは、１つのストレージメディア内に、複数のパーティションを形成することが可能とされているが、本例では不揮発性半導体メモリ１７に形成されるパーティションは１つであるものとしている。もっとも、本発明は、１つのみのパーティションを形成した場合のメモリカードに限定して適用されるものではなく、複数のパーティションを形成した場合のメモリカードに適用してもよい。
【００５１】
“PBR Values”には、ＭＳ−ＤＯＳ上で規定されている「ＰＢＲ」の推奨パラメータが記録されている。例えば、“PBR Values”には、ＰＢＲ内に記録されるジャンプコード、ＯＥＭ名とバージョン、１セクタあたりのバイト数、１クラスタあたりのセクタ数、予約セクタ数、ＦＡＴ（ File Allocation Table）数、ルートディレクトリエントリのエントリ数、メディア内のセクタの数、メディアＩＤ、１ＦＡＴあたりのセクタ数、１ヘッドあたりのセクタ数、ヘッド数、隠しセクタ数、論理セクタの合計数、物理ドライブ番号、拡張ブート識別、ボリュームのシリアル番号、ボリュームラベル、ファイルシステムタイプが記録される。
【００５２】
本実施の形態のメモリカード１のデータ格納領域（不揮発性半導体メモリ１７）の物理フォーマットは以上のようになる。
【００５３】
なお、本メモリカード１には、コントロールコマンドとして、アトリビュート情報を読み出すコマンド（READ_ATRB）が設定されている。ホスト機器２は、“MBR Values”及び“PBR Values”を、READ_ATRBコマンドを用いて読み出すことにより、アセンブリメーカにより推奨される論理フォーマットで、メモリカード１を初期化することが可能となる。また、本メモリカード１には、コントロールコマンドとして、不揮発性半導体メモリ１７を初期化するコマンド（FORMAT）が設定されている。ホスト機器２は、メモリカード１に対してFORMATコマンドを与えると、メモリＩ／Ｆコントローラ１６がアトリビュート情報エリア内に記録されている“MBR Values”及び“PBR Values”を参照し、この“MBR Values”及び“PBR Values”の内容に従い不揮発性半導体メモリ１７を初期化する。メモリカード１の初期化については、その詳細を後述する。
【００５４】
メモリカードのデータ格納領域の論理フォーマット
つぎに、本メモリカード１に適用される論理フォーマットについて説明をする。
【００５５】
本メモリカードでは、データ格納領域に対する論理フォーマットとして、ＭＳ−ＤＯＳ互換フォーマットを採用している。ＭＳ−ＤＯＳ互換フォーマットは、階層ディレクトリ構造でメディア内に記録されているデータファイルを管理するファイルシステムである。ＭＳ−ＤＯＳ互換フォーマットでは、シリンダ、ヘッド、セクタと呼ばれる単位でメディアに対してデータのアクセスが行われる。メディアに対する実際のデータの読み出し／書き込みの単位はセクタとなる。さらに、ＭＳ−ＤＯＳ互換フォーマットでは、記録されているデータを管理するにあたりクラスタという単位を定めている。クラスタのサイズは、セクタのサイズの倍数となる。例えば、６４セクタで１クラスタが構成される。ホスト機器２側のオペレーションシステム上からは、クラスタ単位でファイルの管理が行われる。
【００５６】
本メモリカード１に適用される論理フォーマットでは、ブロックのサイズよりもクラスタのサイズが小さく、さらに、クラスタのサイズのｎ倍（ｎは２以上の整数）が１つのブロックのサイズとなる。例えば、１ブロックのデータサイズが１２８Ｋバイトである場合、１クラスタのデータサイズが３２Ｋバイト、つまり、１つのブロック内に４クラスタが記録される。
【００５７】
また、本メモリカード１に適用される論理フォーマットは、ブロックの境界位置が、必ずクラスタの境界位置と一致するように、設定がされる。つまり、１つのクラスタが、２つのブロックに跨らないように設定がされる。
【００５８】
論理フォーマットを以上のような条件に設定するには、ＭＳ−ＤＯＳのファイル管理データ（ＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリ）の記録位置や、各ファイル管理データ内に記録されるパラメータを調整すればよい。このような条件で論理フォーマットを行うためのパラメータは、アトリビュート情報内の“MBR Values”及び“PBR Values”に記録されている。
【００５９】
ＭＳ−ＤＯＳのファイル管理データの内容は以下のとおりである。
【００６０】
ＭＢＲは、ユーザ領域の先頭に配置される。ＭＢＲ内に記述される内容は、アトリビュート情報内の“MBR Values”に記述される内容と同様である。
【００６１】
ＰＢＲは、各パーティションの先頭セクタに配置される。ＰＢＲが記録されているセクタは、ＭＢＲ内の開始ＬＢＡセクタ番号に記述されている。なお、ＬＢＡセクタ番号とは、有効ブロック内（或いは有効ブロックから代替された代替ブロック）の各セクタにユニークに付けられた番号である。ＬＢＡセクタ番号は、論理ブロック番号が０のブロックの先頭セクタから、昇順に付けられている。
【００６２】
ＦＡＴは、ＰＢＲに続く次のセクタから、複数のセクタに亘って記録される。ＦＡＴは、ユーザ領域で扱われるファイルの連結状態をクラスタ単位で表している。
【００６３】
メディア上に記録されているデータは、クラスタ単位で管理されているが、１つのファイルの本体が複数のクラスタに亘る場合には、１つのクラスタを最後まで読み出した後に、次のクラスタを読み出さなければならない。しかしながら、つぎのクラスタは、必ずしも物理的に連続する位置に記録されているとは限らない。そのため、ホスト機器２は、メディア上に記録されているデータに対してアクセスを行う場合、ある１つのクラスタに続くクラスタが、どのクラスタであるかを示す情報が必要となる。このような情報が記録されているのが、ＦＡＴである。
【００６４】
ＦＡＴには、メディア上に存在するクラスタ数と同じだけの、格納領域が設けられて構成されている。メディア上に存在する全てのクラスタには、０２（１６進数）から始まるクラスタ番号が付けられている。ＦＡＴ内の各格納領域には、クラスタ番号が一義的に割り当てられる。各格納領域には、自己が割り当てられているクラスタに接続した次のクラスタの番号が格納される。このため、あるクラスタに接続される次のクラスタを見つけ出したい場合には、そのクラスタが割り当てられている格納領域に格納されている番号を参照すればよい。
【００６５】
なお、本メモリカード１では、バックアップのために２つのＦＡＴ（ＦＡＴ１，ＦＡＴ２）を記録している。また、１つのＦＡＴの物理的なデータサイズは、メディア内のクラスタ数が変化しないため、データ内容が更新したとしても必ず一定となる。
【００６６】
ルートディレクトリエントリは、ルートディレクトリに配置される各ファイル及びサブディレクトリのエントリ情報が記述される。ルートディレクトリエントリは、ＦＡＴが記録された最終セクタに続く次のセクタから記録される。１つのエントリ情報のバイト数は規定値であり、且つ、ルートディレクトリに配置されるエントリ数も規定値となる。そのため、ルートディレクトリエントリのデータサイズは、必ず一定となる。なお、ＭＳ−ＤＯＳ互換フォーマットの拡張型であるFAT32ファイルシステムではルートディレクトリエントリの特別扱いは廃止され、ルートディレクトリエントリもクラスタの管理化におかれる。
【００６７】
ＭＳ−ＤＯＳ互換フォーマットでは、以上のファイル管理データに続く次のセクタから、最初のクラスタ（クラスタ番号“０２”）が開始される。すなわち、ルートディレクトリエントリが記録された最終セクタの次のセクタ以降が、ユーザにより生成された実際のファイルが記録される領域となる。従って、本メモリカード１では、このクラスタ番号０２の最初のセクタが、必ず、ブロックの先頭セクタとなるように、上記のファイル管理データが記録される。本メモリカード１では、ユーザ領域内のいずれかのブロックの開始セクタのＬＢＡセクタ番号が、アトリビュート情報内の「ブロック境界の開始セクタ番号」に記述される。
【００６８】
なお、いわゆるスーパーフロッピー方式と呼ばれるフォーマットを本メモリカード１に適用してもよい。スーパーフロッピー方式では、上述したＭＢＲにあたる管理データが存在せず、ＰＢＲがユーザ領域の先頭に記録される。本発明は、ＭＳ−ＤＯＳ互換フォーマットに限らず、スーパーフロッピー方式のようなＭＢＲが存在しないフォーマットにも適用することができる。
【００６９】
ホスト機器２による初期化処理及びデータ記録処理
つぎに、ホスト機器２によるメモリカード１の初期化処理、並びに、データ記録処理について説明する。
【００７０】
（初期化処理）
メモリカード１をホスト機器２のオペレーションシステムから参照可能とするには、メモリカード１をＭＳ−ＤＯＳのファイルシステムで初期化する必要がある。初期化処理は、少なくともファイル管理データ（ＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリ）の記録を行えばよい。初期化処理は、通常、メモリカード１の工場出荷時に行われているが、必要に応じてユーザが行うこともできる。
【００７１】
本メモリカード１に対して初期化処理を行うには、２つの方法がある。第１の方法は、書き込み用のコントロールコマンドを用いて必要なデータを所定のセクタに書き込んでいく方法である。第２の方法は、初期化用のコントロールコマンドを用いる方法である。
【００７２】
上記第１の方法及び第２の方法を説明するにあたり、まず、コントロールコマンドについて説明をする。
【００７３】
メモリカード１では、メモリＩ／Ｆコントローラ１６に対して、ホスト機器２から動作制御コマンドが転送されることが、インタフェースプロトコル上で定められている。コントロールコマンドは、ホスト機器２からＴＰＣの中のコマンドセット命令によりレジスタ回路１３内のコマンドレジスタに格納される。メモリＩ/Ｆコントローラ１６は、コマンドレジスタ内にコントロールコマンドが格納されると、そのコントロールコマンドに対応した動作制御を実行する。
【００７４】
コントロールコマンドには、例えば、不揮発性半導体メモリ１７からデータバッファ回路１４へデータを読み出すコマンド、データバッファ回路１４から不揮発性半導体メモリ１７へデータを書き込むコマンド、不揮発性半導体メモリ１７上のデータを消去するコマンド、本メモリカード１を工場出荷状態に戻すフォーマットコマンド、メモリカード１の発振器１８の動作を停止させるスリープコマンド等がある。
【００７５】
コントロールコマンドの具体例を以下に示す。
【００７６】
READ_DATAコマンドは、不揮発性半導体メモリ１７のユーザエリアの指定アドレスからデータを連続的に、読み出していく命令である。メモリＩ/Ｆコントローラ１６は、このREAD_DATAコマンドが与えられると、レジスタ回路１３内のアドレスレジスタに格納されているアドレスを参照し、不揮発性半導体メモリ１７上のアドレスに対してアクセスを行い、このアドレスからデータを読み出していく。読み出したデータは、一旦データバッファ回路１４へ転送する。メモリＩ/Ｆコントローラ１６は、データバッファ回路１４が一杯となると、すなわち、５１２バイト分データを読み出すと、ホスト機器２に対して転送要求の割り込みを発行する。そして、ホスト機器２によってデータバッファ回路１４内のデータが読み出されると、続くデータを不揮発性半導体メモリ１７からデータバッファ回路１４へ転送していく。メモリＩ/Ｆコントローラ１６は、レジスタ回路１３内のデータカウントレジスタに格納されているデータ数分データを読み出すまで、以上の処理を繰り返す。
【００７７】
WRITE_DATAコマンドは、データバッファ回路１４に格納されているデータを、不揮発性半導体メモリ１７のユーザエリアの指定アドレスからデータを連続的に記録していく命令である。メモリＩ/Ｆコントローラ１６は、WRITE_DATAコマンドが与えられると、レジスタ回路１３内のデータアドレスレジスタに格納されているアドレスを参照し、不揮発性半導体メモリ１７上のアドレスに対してアクセスを行い、このアドレスからデータを書き込んでいく。書き込むデータは、データバッファ回路１４に格納されているデータである。メモリＩ/Ｆコントローラ１６は、データバッファ回路１４内が空となると、すなわち、５１２バイト分データを書き込むと、ホスト機器２に対して転送要求の割り込みを発行する。そして、ホスト機器２によってデータバッファ回路１４内にデータが書き込まれると、続くデータをデータバッファ回路１４から不揮発性半導体メモリ１７へ書き込んでいく。メモリＩ/Ｆコントローラ１６は、レジスタ回路１３内のデータカウントレジスタに格納されているデータ数分データを書き込むまで、以上の処理を繰り返す。
【００７８】
READ_ATRBコマンドは、不揮発性半導体メモリ１７からアトリビュート情報を読み出す命令である。メモリＩ/Ｆコントローラ１６は、このREAD_ATRBが与えられると、不揮発性半導体メモリ１７内のアトリビュート情報を読み出して、データバッファ回路１４に転送する。
【００７９】
FORMATコマンドは、不揮発性半導体メモリ１７からアトリビュート情報を読み出し、このアトリビュート情報内の“MBR Values”及び“PBR Values”を読み出し、その値に従い、不揮発性半導体メモリ１７内にＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリを書き込んでいく。
【００８０】
以上がコントロールコマンドの説明である。
【００８１】
メモリカード１を第１の方法で初期化する場合には、ホスト機器２は、READ_ATRBコマンドを用いて、アトリビュート情報内の“MBR Values”及び“PBR Values”を読み出す。そして、読み出した“MBR Values”及び“PBR Values”に記述されている値を参照し、ＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリを生成する。そして、さらに、“MBR Values”及び“PBR Values”に記述されている所定のセクタに対して、WRITE_DATAコマンドを用いて、生成したＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリを書き込んでいく。このような処理を行うことによって、メモリカード１が初期化され、ホスト機器２により参照可能となる。
【００８２】
なお、ＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリの値は、アトリビュート情報内の“MBR Values”及び“PBR Values”に従わず、ホスト機器２が独自に生成してもよい。
【００８３】
メモリカード１を第２の方法で初期化する場合には、ホスト機器２は、FORMATコマンドをホスト機器２のメモリＩ／Ｆコントローラ１６に与える。メモリＩ／Ｆコントローラ１６は、FORMATコマンドが与えられると、アトリビュート情報内の“MBR Values”及び“PBR Values”を読み出す。そして、メモリＩ／Ｆコントローラ１６は、読み出した“MBR Values”及び“PBR Values”に記述されている値に基づき、“MBR Values”及び“PBR Values”に記述されている所定のセクタに対して、不揮発性半導体メモリ１７に対してＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリを書き込んでいく。このような処理を行うことによって、メモリカード１が初期化され、ホスト機器２により参照可能となる。
【００８４】
以上のように、本メモリカード１では、ホスト機器２が書き込み用のコマンド（WRITE_DATAコマンド）を用いて、ホスト機器２自身が生成したパラメータを書き込んでいって初期化を行う方法と、ホスト機器２が初期化用のコマンド（FORMATコマンド）を用いて、メモリカード１が自動的に初期化を行う方法との２種類の初期化を選択的に行うことが可能となる。ホスト機器２では、メモリカード１に対して初期化を行う場合に、初期化用のコマンド（FORMAT
コマンド）を用いることができるので、各バージョンや規格毎に対応した専用のパラメータや初期化処理プログラムを内蔵する必要がなくなり、容易に初期化を行うことができる。
【００８５】
（データ記録処理）
続いて、ホスト機器２からメモリカード１に対してデータを記録する場合の動作について、図７を参照して説明をする。
【００８６】
ホスト機器２は、メモリカード１がスロットに装着されると、アトリビュート情報を読み出すコマンド（READ_ATRBコマンド）を用いて、アトリビュート情報内の“System information”から、「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」を読み出す（ステップＳ１１）。
【００８７】
続いて、ホスト機器２は、ユーザにより記録動作が開始されるまで、処理を待機する（ステップＳ１２）。
【００８８】
ユーザにより記録動作が開始されると、現在の記録モードが、リアルタイム記録モードであるか、通常記録モードであるかを判断する（ステップＳ１３）。
【００８９】
記録モードが通常記録モードである場合にはステップＳ１４に進み、リアルタイム記録モードである場合にはステップＳ１５に進む。
【００９０】
ここで、リアルタイム記録モードとは、例えば、動画像信号の実時間記録を行う場合等の記録データの生成処理に対してデータ記録処理が追従しなければならないような記録処理や、大容量データの記録処理などの高速記録が要求される記録処理の場合に、適用されるモードである。それに対して、通常記録モードとは、例えば、静止画像信号の記録を行う場合等の高速記録が要求されない場合の記録モードでである。リアルタイム記録と通常記録のモード選択は、ユーザが手動で設定してもよいし、ホスト機器２が記録するデータに合わせて自動選択してもよい。
【００９１】
ステップＳ１４では、１クラスタ単位での記録処理を行う。すなわち、ＦＡＴを参照してクラスタ単位で空き領域を検索し、見つけ出した空き領域に順次データを記録していく。
【００９２】
ステップＳ１５では、ＦＡＴを参照して、１ブロック分連続した空き領域を見つけ出し、１ブロック分連続して空き領域があれば、そのブロックに対して連続してデータを記録する。すなわち、空きクラスタがあったとしても、その空きクラスタが含まれているブロックの他のクラスタに、既にデータが記録されていれば、その空きクラスタに対してはデータを記録しない。例えば、１ブロックが４クラスタで構成されていれば、４クラスタ単位で空きブロックに対してデータを記録していく。
【００９３】
ホスト機器２は、通常であれば、物理フォーマット上のブロックの認識をすることができないが、本メモリカード１では、ブロックの境界位置が必ずクラスタの境界位置となるように論理フォーマットが形成されている。そのため、１ブロック内のクラスタ数（或いはセクタ数）とブロックの境界のクラスタ番号（或いはＬＢＡセクタ番号）がわかれば、論理フォーマット上からブロックを認識することができる。従って、ホスト機器２は、１ブロック内のクラスタ数並びにブロックの先頭クラスタの位置を、ステップＳ１１で参照した「１ブロックに含まれるセクタ数」及び「ブロック境界の開始セクタ番号」から判断することができる。
【００９４】
このようなリアルタイム記録モードを適用すれば、クラスタのサイズより消去ブロックのサイズの方が大きいメディアに対しても、特殊なファイルシステムを用いることなく、ブロック単位でデータを記録することが可能となる。このため、このリアルタイム記録モードでは、記録済みデータを保護するために必要となるガベッジコレクションが発生することなく、データが記録される。従って、通常にクラスタ単位で記録をするよりも、高速に記録することが可能となる。
【００９５】
なお、通常のファイルシステムでは、データの記録前或いは記録中に、メディア内の空き容量を確認することが可能である。ホスト機器２は、通常記録モードが選択されている場合には、ＦＡＴから単純にあきクラスタ数を検出して、空き容量を算出する。一方、リアルタイム記録モードが選択されている場合には、ＦＡＴから全てのクラスタが未記録であるブロックを検出して、そのブロック数から空き容量を算出する。
【００９６】
メモリカード１の具体的なフォーマット例
つぎに、メモリカード１の具体的なフォーマット例を示す。以下説明するフォーマット例は、全容量が６４Ｍバイト、セクタサイズが５１２バイト、クラスタサイズが３２Ｋバイト、１ブロックのサイズが１２８Ｋバイト、１つのＦＡＴを記録するために必要とするセクタ数が８個であるメモリカード１に対するものである。従って、１クラスタが６４セクタから構成され、１ブロックが４クラスタから構成されている。なお、本例では、ＭＳ−ＤＯＳのタイプとして、総クラスタ数が４０８５を超える場合に用いられるＦＡＴ１６を適用した場合について説明をする。ＦＡＴ１６では、ＦＡＴ内の各クラスタに割り当てられるバイト数が、２バイト（１６ビット）である。
【００９７】
（第１の具体例）
図８に、第１の具体例のメディアイメージを示す。図９に、第１の具体例の各パラメータの値を示す。図１０に第１の具体例のＭＢＲの記述内容を示す。図１１に第１の具体例のＰＢＲの記述内容を示す。
【００９８】
ＬＢＡセクタ番号は、パーティションやブート領域に関わらず、メディア内の全有効ブロックに対してユニークに付けられた番号である。ＬＢＡセクタ番号は、先頭セクタが０とされ、以後、１ずつインクリメントされている。ブロック番号は、各有効ブロックに付けられた論理ブロック番号である。ブロック番号は、先頭ブロックが０とされ、以後、１ずつインクリメントされている。なお、有効ブロックが代替された場合には、代替されたブロックに対して、ＬＢＡセクタ番号及びブロック番号が付けられる。
【００９９】
第１の具体例では、ＭＢＲは、ブロック番号０の先頭セクタ（ＬＢＡセクタ番号０）に記録される。ＰＢＲは、ブロック番号１のＬＢＡセクタ番号４６２のセクタに記録される。ＦＡＴ１及びＦＡＴ２は、ブロック番号１のＬＢＡセクタ番号４６４〜４７９のセクタに記録される。ルートディレクトリエントリは、ブロック番号１のＬＢＡセクタ番号４８０〜５１１のセクタに記録される。
【０１００】
以上のようにＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリが記録されることによって、ユーザにより生成されたファイルが記録される先頭のセクタ（クラスタ２の先頭セクタ）は、ブロック２の先頭セクタ（ＬＢＡセクタ番号５１２）から記録されることとなる。この結果、ブロックの境界位置が、クラスタの境界位置に一致した論理フォーマットとされることになる。
【０１０１】
（第２の具体例）
図１２に、第２の具体例のメディアイメージを示す。図１３に、第２の具体例の各パラメータの値を示す。図１４に第２の具体例のＭＢＲの記述内容を示し、図１５に第２の具体例のＰＢＲの記述内容を示す。
【０１０２】
ＬＢＡセクタ番号は、パーティションやブート領域に関わらず、メディア内の全有効ブロックに対してユニークに付けられた番号である。ＬＢＡセクタ番号は、先頭セクタが０とされ、以後、１ずつインクリメントされている。ブロック番号は、各有効ブロックに付けられた論理ブロック番号である。ブロック番号は、先頭ブロックが０とされ、以後、１ずつインクリメントされている。なお、有効ブロックが代替された場合には、代替されたブロックに対して、ＬＢＡセクタ番号及びブロック番号が付けられる。
【０１０３】
第２の具体例では、ＭＢＲは、ブロック番号０の先頭セクタ（ＬＢＡセクタ番号０）に記録される。ＰＢＲは、ブロック番号１のＬＢＡセクタ番号３３５のセクタに記録される。ＦＡＴ１及びＦＡＴ２は、ブロック番号１のＬＢＡセクタ番号３３６〜３５１のセクタに記録される。ルートディレクトリエントリは、ブロック番号１のＬＢＡセクタ番号３５２〜３８３のセクタに記録される。
【０１０４】
以上のようにＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリが記録されることによって、ユーザにより生成されたファイルが記録される先頭のセクタ（クラスタ２の先頭セクタ）は、ブロック１のＬＢＡセクタ番号３８４から記録されることとなる。この結果、ブロックの境界位置が、クラスタの境界位置に一致した論理フォーマットとされることになる。
【０１０５】
（第１の具体例と第２の具体例の違い）
以上のように、第１の具体例と、第２の具体例は、ブロック境界位置がクラスタ境界位置となっており、ともにホスト機器２側から、ブロック単位の一括記録ができる、つまり、４クラスタ単位で記録ができる。
【０１０６】
ところで、ＦＡＴ１６のフォーマットでは、先頭の８バイトが“Ｆ８ＦＦ  ＦＦＦＦ”の規定値となっている。また、ＦＡＴ１６のフォーマットでは、９バイト目から４バイトずつ各クラスタの領域が定められている。最初のクラスタのクラスタ番号は、“２”である。なお、本例では、１セクタあたりのバイト数が５１２バイトである。このため、ＦＡＴの第１セクタには、クラスタ番号２〜クラスタ番号１２７までのクラスタの領域が形成されることとなる。
【０１０７】
第１の具体例のフォーマットの場合、図１６に示すように、クラスタ番号０２，０３，０４，０５でブロック２が構成され、クラスタ番号０６，０７，０８，０９でブロック３が構成され、クラスタ番号０ａ，０ｂ，０ｃ，０ｄでブロック４が構成され、以後、４クラスタごとに１つのブロックが構成される。また、第１の具体例のフォーマットの場合、ＦＡＴの先頭セクタは、ブロック３３の２番目のクラスタ（クラスタ７ｆ）で終了している。そして、ＦＡＴの２番目のセクタは、ブロック３３の３番目のクラスタ（クラスタ８０）から開始されている。つまり、第１の具体例のフォーマットでは、ＦＡＴ内で表されているブロックの境界位置と、ＦＡＴの実際のセクタ位置とが一致していない。
【０１０８】
これに対して、第２の具体例のフォーマットの場合、図１７に示すように、クラスタ番号０２、０３でブロック１が構成され、クラスタ番号０４，０５，０６，０７でブロック２が構成され、クラスタ番号０８，０９，０ａ、０ｂでブロック３が構成され、クラスタ番号０ｃ，０ｄ，０ｅ，０ｆでブロック４が構成され、以後、４クラスタごとに１つのブロックが構成される。また、第２の具体例のフォーマットの場合、ＦＡＴの先頭セクタは、ブロック３２の４番目のクラスタ、即ち、ブロック内の最後のクラスタ（クラスタ７ｆ）で終了している。そして、ＦＡＴの２番目のセクタは、ブロック３３の最初のクラスタから開始されている。つまり、第２の具体例のフォーマットでは、ＦＡＴ内で表されているブロックの境界位置と、ＦＡＴの実際のセクタ位置とが一致している。
【０１０９】
ＦＡＴの実際のセクタ境界と、ＦＡＴで表されたブロックの境界とが一致していない場合、例えば、セクタ境界にあるブロックのクラスタ情報を読み出す場合、２つのセクタを読まなければならない。それに対して、ＦＡＴの実際のセクタ境界と、ＦＡＴで表されたブロックの境界とが一致している場合、セクタ境界にあるブロックのクラスタ情報を読み出す場合であっても、１つのセクタのみを読み出せばよい。
【０１１０】
従って、第１の具体例のフォーマットよりも、第２の具体例のフォーマットの方が、ホスト機器２側でのファイル管理が容易となる。
【０１１１】
（ＭＢＲとＰＢＲとを異なるブロックに記録）
また、第１の具体例と第２の具体例とは両者とも、ＭＢＲが、単独のブロックに記録されている。つまり、ＭＢＲが、ＰＢＲ，ＦＡＴ，ルートディレクトリエントリとは異なるブロックに記録されている。このように、ＭＢＲを単独のブロックに記録することによって、フラッシュメモリのような一括消去単位が定められたメディアの場合、ファイルの安全性が確保される。つまり、書き換えの可能性があるＰＢＲ，ＦＡＴ，ルートディレクトリエントリや、実データとは異なるブロックに記録されているため、ＭＢＲを書き換える必要がなくなり、ファイルの安全性が確保される。
【０１１２】
このようなＭＢＲと、ＰＢＲ，ＦＡＴ，ルートディレクトリとを異なるブロックに記録することは、本メモリカード１のような、ブロックサイズがクラスタサイズよりも大きい場合でなくても適用することができる。
【０１１３】
通常、図１８に示すように、ＭＢＲ，ＰＢＲ，ＦＡＴ，ルートディレクトリエントリは、ブロック位置に関わらず、セクタ単位で連続して記録される。つまり、ＭＢＲがセクタ０、ＰＢＲがセクタ１のセクタに記録される。
【０１１４】
それに対して、クラスタサイズが３２Ｋバイト、ブロックサイズが１６Ｋバイトといったような、ブロックサイズよりクラスタサイズの方が小さいメモリカードである場合には、図１９に示すように、ＭＢＲをセクタ番号０のセクタに記録し、ＰＢＲをセクタ番号４７のセクタに記録すればよい。
【０１１５】
また、クラスタサイズが３２Ｋバイト、ブロックサイズが１６Ｋバイトといったような、ブロックサイズとクラスタサイズとが一致するメモリカードである場合には、図２０に示すように、ＭＢＲをセクタ番号０のセクタに記録し、ＰＢＲをセクタ番号７９のセクタに記録すればよい。
【０１１６】
【発明の効果】
本発明では、第２の記録モードを適用すれば、クラスタのサイズより消去ブロックのサイズの方が大きいメディアに対しても、特殊なファイルシステムを用いることなく、ブロック単位でデータを記録することが可能となる。このため、このリアルタイム記録モードでは、記録済みデータを保護するために必要となるガベッジコレクションが発生することなく、データが記録される。従って、通常にクラスタ単位で記録をするよりも、高速に記録することが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態のホスト機器及びメモリカードの外観斜視図である。
【図２】メモリカードを表面側から見た斜視図である。
【図３】メモリカードを裏面側から見た斜視図である。
【図４】メモリカードの内部ブロック構成図である。
【図５】メモリカードとホスト機器との間のデータ伝送をするためのインタフェース機能の構成図である。
【図６】アトリビュート情報エリアに記録されるデータを示す図である。
【図７】ホスト機器のデータ記録処理内容を示すフローチャートである。
【図８】第１の具体例のフォーマットを適用した場合のメディアイメージを示す図である。
【図９】第１の具体例のフォーマットを適用した場合の各パラメータの値を示す図である。
【図１０】第１の具体例のフォーマットを適用した場合のＭＢＲの記述内容を示す図である。
【図１１】第１の具体例のフォーマットを適用した場合のＰＢＲの記述内容を示す図である。
【図１２】第２の具体例のフォーマットを適用した場合のメディアイメージを示す図である。
【図１３】第２の具体例のフォーマットを適用した場合の各パラメータの値を示す図である。
【図１４】第２の具体例のフォーマットを適用した場合のＭＢＲの記述内容を示す図である。
【図１５】第２の具体例のフォーマットを適用した場合のＰＢＲの記述内容を示す図である。
【図１６】第１の具体例のフォーマットを適用した場合のＦＡＴの状態を示す図である。
【図１７】第２の具体例のフォーマットを適用した場合のＦＡＴの状態を示す図である。
【図１８】通常フォーマットのメディアイメージを示す図である。
【図１９】ブロックサイズよりクラスタサイズの方が小さいメモリカードのメディアイメージを示す図である。
【図２０】ブロックサイズとクラスタサイズとが同一のメモリカードのメディアイメージを示す図である。
【符号の説明】
１  メモリカード、２  ホスト機器、１３  レジスタ回路、１４  データバッファ回路、１６  メモリＩ／Ｆコントローラ、１７  不揮発性半導体メモリ
【図１】
0004206688.tif 000002
【図２】
0004206688.tif 000003
【図３】
0004206688.tif 000004
【図４】
0004206688.tif 000005
【図５】
0004206688.tif 000006
【図６】
0004206688.tif 000007
【図７】
0004206688.tif 000008
【図８】
0004206688.tif 000009
【図９】
0004206688.tif 000010
【図１０】
0004206688.tif 000011
【図１１】
0004206688.tif 000012
【図１２】
0004206688.tif 000013
【図１３】
0004206688.tif 000014
【図１４】
0004206688.tif 000015
【図１５】
0004206688.tif 000016
【図１６】
0004206688.tif 000017
【図１７】
0004206688.tif 000018
【図１８】
0004206688.tif 000019
【図１９】
0004206688.tif 000020
【図２０】
0004206688.tif 000021