(57)【要約】【課題】効率の良い書き込みおよび読出しを行うことができるメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供する。【解決手段】複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、以下の工程を含む。記憶領域の一部である第１領域が、書き込み領域のアドレスが増加する方向に沿って順にデータを書き込む第１ファイルシステムによる管理に合わせて設定される。記憶領域の一部である第２領域が、アドレスによらない順番でデータを書き込む第２ファイルシステムによる管理に合わせて設定される。【選択図】図４
2006040264.tif 000002
【特許請求の範囲】
【請求項１】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、
前記記憶領域の一部である第１領域を、前記書き込み領域のアドレスが増加する方向に沿って順にデータを書き込む第１ファイルシステムによる管理に合わせて設定する工程と、
前記記憶領域の一部である第２領域を、前記アドレスによらない順番でデータを書き込む第２ファイルシステムによる管理に合わせて設定する工程と、
を具備することを特徴とするメモリカードの制御方法。
【請求項２】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、
前記書き込み領域のアドレスが増加する方向に沿って順にデータを書き込む第１ファイルシステムによる管理に合わせて設定された、前記記憶領域の一部である第１領域への書き込みおよび前記第１領域からの読み出しの際、第１制御方法によって前記不揮発性半導体メモリを制御する工程と、
前記アドレスによらない順番でデータを書き込む第２ファイルシステムによる管理に合わせて設定された、前記記憶領域の一部である第２領域へのデータの書き込みおよび前記第２領域からのデータの読み出しの際、第２制御方法によって前記不揮発性半導体メモリを制御する工程と、
を具備することを特徴とする不揮発性半導体メモリの制御方法。
【請求項３】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、
複数の前記書き込み領域の１つに記憶されているデータを複数の前記書き込み領域の他の１つに移動させる指示を含んだデータ移動コマンドを受信する工程と、
データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、
を具備することを特徴とする不揮発性半導体メモリの制御方法。
【請求項４】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、
複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、
前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、
前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、
前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、
を具備することを特徴するメモリカードの制御方法。
【請求項５】
前記ファイルの書き込みが途中で終了した場合、前記仮ファイルエントリを参照することにより、前記開始位置を認識する工程と、
前記確保領域中の、前記ファイルの一部である未終了ファイルを構成するデータを最後に書き込まれた位置である最終位置を検出する工程と、
前記開始位置および前記最終位置から前記未終了ファイルのサイズを決定する工程と、
前記仮ファイルエントリを、前記開始位置と未終了ファイルのサイズが記載された正式なファイルエントリに書き換える工程と、
をさらに具備することを特徴とする請求項４に記載のメモリカードの制御方法。
【請求項６】
複数の前記書き込み領域のそれぞれが、データを記憶するデータ記憶部と書き込み済みまたは未書き込みの旨を示す書き込み済み情報部とを有し、
前記確保領域中にファイルを書き込む工程が、複数の前記書き込み領域の１つにおいて前記データ記憶部にデータを書き込むとともに前記書き込み済み情報部に書き込済みの旨の情報を書き込む工程を含み、
前記最終位置を検出する工程が、前記書き込み済み情報部を参照することにより、前記最終位置を検出する工程を含む、
ことを特徴とする請求項５に記載のメモリカードの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリカードの制御方法および不揮発性半導体メモリの制御方法に関し、特に、所定の消去ブロックサイズを有する不揮発性半導体メモリの制御方法に関する。
【背景技術】
【０００２】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードのファイルシステムとして、ＦＡＴファイルシステムが用いられている。このＦＡＴファイルシステムをフラッシュメモリのファイルシステムに採用した例が特開平７−１４１４７９号公報（特許文献１）に開示されている。ＦＡＴファイルシステムは、ハードディスク等の、高速なランダム書き換えが可能なメディアを前提としたファイルシステムである。ランダム書込みとは、セクタ（ファイルシステムが認識する書き込み領域の単位）のアドレスによらずに、空いているセクタにランダムにデータが書き込まれる方式である。
【０００３】
メモリカードに使用されるフラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。ＮＡＮＤ型フラッシュメモリはブロック単位でしか消去を行えない。１つのブロックは、複数の、書き込み単位であるページを含んでいる。このため、ブロックに記憶されたデータの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、旧データ（新データに書き換えられるデータ）を含んでいる旧ブロックから、書き換えられないデータを新ブロックにコピーする必要がある。このような処理は「引越し書き込み（巻き添えコピー）」と呼ばれる。この「引越し書き込み」は書き換えられないデータのコピー動作を伴うため、「引越し書き込み」が多発すると、オーバーヘッドが非常に増大することになる。
【０００４】
ＦＡＴファイルシステムでは、ファイルのクラスタデータの書き換えのたびに、ＦＡＴデータの書き換えが発生する。このため、ＮＡＮＤ型フラッシュメモリを管理するファイルシステムとして、ＦＡＴファイルシステムが採用された場合、クラスタデータの書き換えのたびに、「引越し書き込み」が発生し、ファイルの書き換え速度が低下する。
【０００５】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【特許文献１】特開平7-141479号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、効率の良い書き込みおよび読出しを行うことができるメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明の第１の視点に係る、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法は、前記記憶領域の一部である第１領域を、前記書き込み領域のアドレスが増加する方向に沿って順にデータを書き込む第１ファイルシステムによる管理に合わせて設定する工程と、前記記憶領域の一部である第２領域を、前記アドレスによらない順番でデータを書き込む第２ファイルシステムによる管理に合わせて設定する工程と、を具備することを特徴とする。
【０００８】
本発明の第２の視点に係る、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法は、前記書き込み領域のアドレスが増加する方向に沿って順にデータを書き込む第１ファイルシステムによる管理に合わせて設定された、前記記憶領域の一部である第１領域への書き込みおよび前記第１領域からの読み出しの際、第１制御方法によって前記不揮発性半導体メモリを制御する工程と、前記アドレスによらない順番でデータを書き込む第２ファイルシステムによる管理に合わせて設定された、前記記憶領域の一部である第２領域へのデータの書き込みおよび前記第２領域からのデータの読み出しの際、第２制御方法によって前記不揮発性半導体メモリを制御する工程と、を具備することを特徴とする。
【０００９】
本発明の第３の視点に係る、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法は、複数の前記書き込み領域の１つに記憶されているデータを複数の前記書き込み領域の他の１つに移動させる指示を含んだデータ移動コマンドを受信する工程と、データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、を具備することを特徴とする。
【００１０】
本発明の第４の視点に係る、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法は、複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、を具備することを特徴する。
【発明の効果】
【００１１】
本発明によれば、効率の良い書き込みおよび読出しを行うことができるメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供できる。
【発明を実施するための最良の形態】
【００１２】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１３】
［１］構成
図１は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
【００１４】
メモリカード１は、ＰＣＢ（Printed Circuit Board）基板２と、ＰＣＢ基板２上に配置されたＮＡＮＤ型フラッシュメモリ３およびコントローラ４を有する。コントローラ４には、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only memory）９等の機能ブロックが搭載されている。各デバイスの詳細については後述する。
【００１５】
ＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリと称する）３は、１つのメモリセルに１ビットの情報を記憶する２値メモリであっても良いし、一つのメモリセルに２ビット以上の情報を記憶する多値メモリであっても良い。また、図１で例示した場合と異なり、フラッシュメモリ３およびコントローラ４は、同一のＬＳＩ（Large-scale Integration）基板上に配置されていても良い。
【００１６】
図２は、ホスト機器と上記メモリカードとを含む構成を示すブロック図である。なお、図１と共通する要素には同一の符号を付している。
【００１７】
ホスト機器（以下、ホストと称する）２０は、挿入されるメモリカード１に対してアクセスを行うためのハードウエアおよびソフトウエア（システム）を備えている。
【００１８】
メモリカード１は、ホスト２０に接続された時に電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。メモリカード１は、前述したようにＮＡＮＤ型フラッシュメモリ３およびコントローラ４を有する。
【００１９】
フラッシュメモリ３は、消去単位（ブロック）のサイズが２５６ｋＢに定められている不揮発性半導体メモリであり、例えば１６ｋＢ単位でデータの書き込みおよび読み出しを行う。フラッシュメモリ３は、例えば０．０９μｍプロセス技術を用いて製作される。すなわち、フラッシュメモリ３のデザインルールは、０．１μｍ未満となっている。
【００２０】
コントローラ４は、フラッシュメモリ３内部の物理状態（何処の物理アドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する機能を有する。また、コントローラ４は、前述したＣＰＵ８およびＲＯＭ９の他に、メモリインタフェース部５、ホストインタフェース部６、バッファ７、およびＲＡＭ（Random Access Memory）１０を搭載している。
【００２１】
メモリインタフェース部５は、コントローラ４とフラッシュメモリ３との間のインタフェース処理を行う。ホストインタフェース部６は、コントローラ４とホスト２０との間のインタフェース処理を行う。
【００２２】
バッファ７は、ホスト２０から送られてくるデータをフラッシュメモリ３へ書き込む際に一定量のデータ（例えば１ページ分）を一時的に記憶したり、フラッシュメモリ３から読み出されるデータをホスト２０へ送り出す際に一定量のデータを一時的に記憶したりする。
【００２３】
ＣＰＵ８は、メモリカード１全体の動作を司る。ＣＰＵ８は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ９の中に格納されているファームウェア（後述する制御プログラム）をＲＡＭ１０上にロードして所定の処理を実行する。ＣＰＵ８は、制御プログラムに従って、各種のテーブル（後述）をＲＡＭ１０上で作成したり、ホスト２０から書き込みコマンド、読み出しコマンド、消去コマンドを受けてフラッシュメモリ３上の所定の処理を実行したり、バッファ７を通じたデータ転送処理を制御したりする。
【００２４】
ＲＯＭ９は、ＣＰＵ８により制御される制御プログラムなどを格納する。ＲＡＭ１０は、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【００２５】
図３は、フラッシュメモリ（すなわち、メモリカード１内のＮＡＮＤ型フラッシュメモリ３）とデータ配置を示している。フラッシュメモリ３の各ページ（記録単位領域）は、２１１２Ｂ（５１２Ｂ分のデータ記憶部×４＋１０Ｂ分の冗長部×４＋２４Ｂ分の管理データ記憶部）を有しており、１２８ページ分が一つの消去単位（すなわち、２５６ｋＢ＋８ｋＢ）となる。なお、以下の説明においては、便宜上、このフラッシュメモリの消去単位を２５６ｋＢとする。
【００２６】
また、フラッシュメモリ３は、フラッシュメモリ３への（からの）データ入出力を行うためのページバッファを備えている。このページバッファの記憶容量は、２１１２Ｂ（２０４８Ｂ＋６４Ｂ）である。データ書き込みなどの際、ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００２７】
メモリカードを実用上有効な製品とするためには、図３に示したフラッシュメモリ３の記憶容量は１Ｇビット以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇビットである場合、２５６ｋＢのブロックの数は、５１２個となる。
【００２８】
また、図３においては消去単位が２５６ｋＢブロックである場合を例示しているが、消去単位が例えば１６ｋＢブロックとなるように構築することも実用上有効である。この場合、各ページは５２８Ｂ（５１２Ｂ分のデータ記憶部＋１６Ｂ分の冗長部）を有し、３２ページ分が１つの消去単位（即ち、１６ｋＢ＋０．５ｋＢ（ここで、ｋは１０２４））となる。
【００２９】
フラッシュメモリのデータが書き込まれる領域は、保存されるデータに応じて複数の領域に区分けされている。フラッシュメモリ３は、データが書き込まれる領域として、ユーザデータ領域３４と、管理データ領域３１と、機密データ領域３２と、保護データ領域３３とを有する。
【００３０】
ユーザデータ領域３４は、メモリカード１を使用するユーザが自由にアクセスおよび使用することが可能な領域であり、ユーザデータを格納する。
【００３１】
保護データ領域３３は、重要なデータを格納し、メモリカード１に接続されたホスト２０との相互認証によりホスト２０の正当性が証明された場合にのみアクセスが可能となる領域である。
【００３２】
管理データ領域３１は、主にメモリカード１に関する管理情報を格納し、メモリカード１のセキュリティ情報やメディアＩＤなどのカード情報を格納する。
【００３３】
機密データ領域３２は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト２０からはアクセス不可能な領域である。
【００３４】
以下、メモリカード１およびホスト２０のより詳しい構成について、説明する。
【００３５】
［２］ファイルシステムについて
次に、ファイルシステムについて説明する。通常、メモリカードのＮＡＮＤ型フラッシュメモリはＦＡＴでフォーマットされている。本実施形態では、図４に示すように、フラッシュメモリ３の少なくとも一部の領域３ａが、シーケンシャルアクセス追記型のファイルシステムでフォーマットされている。後述のように、残りの領域３ｂが、ランダム書き込み型のファイルシステムでフォーマットされていてもよい。
【００３６】
追記型のファイルシステムは、低セクタ（書き込み領域）アドレスのセクタから高セクタアドレスのセクタに順にデータを書き込んでいく。以下、「ファイルシステムがデータを書き込むおよびデータを読み出す」と記載されていたり、これを意味する記載の場合、ファイルシステムがメモリカードのコントローラにデータの書き込みおよびデータの読み出しを指示し、コントローラが実際にフラッシュメモリにデータの書き込み、フラッシュメモリからデータを読み出すことを意味するものとする。
【００３７】
追記型のファイルシステムをメモリカード１に採用することで、フラッシュメモリ３での頻繁なデータの消去、書き換えがなくなる。この結果、用途によっては効率の良いファイル書き込みおよび書き換えが期待できる。
【００３８】
また、追記型ファイルシステムがメモリカード１に適用されると、ファイル書き込み時のブロック消去が不要であるため、ファイル書き込み速度が低下しない。また、シーケンシャルな書き込みであるため、引越し書き込みのような、メモリカード１の余分な処理が不要である。よって、書き込み処理の高速化が期待できる。
【００３９】
シーケンシャルアクセス追記型のファイルシステムとして、例えば、ユニバーサルディスクフォーマット（ＵＤＦ）がある。ＵＤＦは、ＤＶＤで採用されているファイルシステムである。ＵＤＦでは、ＩＣＢ(Information Control Block)と呼ばれるアロケーションテーブル（Allocation Table）において、ファイルエントリの位置（論理セクタアドレス）が記載されている。ＩＣＢは、ファイルごとに設けられる。そして、ファイルの更新の際、このファイルのＩＣＢも書き換えられる。
【００４０】
ＩＣＢの構造を図５を参照して説明する。図５に示すファイル構造は、ＩＣＢを用いると、図６に示すような構成になる。あるファイルにアクセスする際、このファイルのＩＣＢが記載されているアドレスにアクセスされる。ＩＣＢには、ファイル識別記載子によって、ファイル名およびファイルエントリのアドレスが記載されている。ファイルエントリとして、ファイル実体の位置、ファイルサイズ、ファイル属性等が記載されている。そして、ファイルエントリに記載されているファイル実体のアドレスに、目的のファイルの実際のデータが記憶されている。
【００４１】
サブディレクトリが設けられている場合も同様の構造が形成される。ルートディレクトリのＩＣＢ（ＬＢＡ８２）には、ルートディレクトリのファイルエントリのアドレス（ＬＢＡ８３）が記載されている。このアドレスにより特定される領域には、ルートディレクトリのディレクトリ情報が記載されている。このディレクトリ情報として、各サブディレクトリのＩＣＢのアドレス（ＬＢＡ８４、９４）等が記載されている。
【００４２】
サブディレクトリのＩＣＢには、このサブディレクトリ内のファイルの各ファイルのＩＣＢのアドレス（ＬＢＡ８５、９５）が記載されている。そして、上記のように、ファイルのＩＣＢに記載されているアドレスにおいて、このファイルのファイルエントリが記載されており、これを参照して実際の（本当の）アドレスが特定される。
【００４３】
［２−１］ファイルシステムの種類
書き込み可能なＤＶＤの規格としては、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭがある。それぞれのディスクの特性に応じて、ファイルシステムが異なる。それぞれのファイルシステムについて以下に説明する。なお、これらのファイルシステムは、いずれも、シーケンシャルアクセス追記が可能である。以下、本実施形態において採用可能なファイルシステムについて説明する。
【００４４】
［２−１ー１］ＤＶＤ−Ｒタイプのファイルシステム
ＤＶＤ−Ｒタイプのファイルシステムでは、書き込み済みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このため、ＤＶＤ−Ｒタイプのファイルシステムでは、後述するＶＡＴによって追記によるファイルの更新、削除、追加が実現される。追記型であるＤＶＤ−Ｒタイプのファイルシステムは、ＶＡＴ(Virtual Allocation Table）と呼ばれる変換テーブルをファイルとして持つ。
【００４５】
ＶＡＴには、ある仮想セクタアドレスと論理セクタアドレスとの対応関係が記載されている。あるアドレスにアクセスする際、ホスト２０はＶＡＴによって仮想セクタアドレスを論理セクタアドレスに変換した上で、変換された論理セクタにアクセスする。
【００４６】
そして、追記時には、ファイル実体の追記と共に、ＶＡＴ中の、このファイルのＩＣＢの仮想セクタアドレスに対する論理セクタアドレスを変更することにより、実際にアクセスされる論理セクタアドレスが変更される。こうすることにより、書き込み済みのセクタデータを書き換えることなくファイルの更新が実現される。
【００４７】
なお、ＶＡＴが参照されるのは、ファイル識別記載子によって記載されているファイルエントリの仮想アドレスから、実際の（最新の）アドレスが求められるときである。換言すれば、ファイルエントリに記載されているファイル実体（ディレクトリ実体）のポインタ（アドレス）は、ＶＡＴによって変換する必要のない、本当のアドレスである。
【００４８】
また、ＶＡＴ自体の更新は、ＶＡＴ自体のＩＣＢ（ＶＡＴ  ＩＣＢ）を、常にメディアの書き込み済み領域の最終の領域に書き込むことによって実現される。
【００４９】
図７は、ＤＶＤ−Ｒファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示している。図７は、ファイルが１度、更新、削除、追加された際の状態を示している。
【００５０】
図７に示すように、上から順に、ヴォリュームストラクチャ、ファイルセットディスクリプタ、ルートディレクトリのファイルエントリ、ルートディレクトリのデータが順次配置されている。次いで、１回目に記載されたファイル（オリジナルファイル）、すなわち追加、削除前のファイルのファイルエントリが配置されている。次に、オリジナルファイルのデータが配置されている。次に、１回目の記載時に作成されたＶＡＴ（ＶＡＴ＜１ｓｔ＞）、次に、この１回目のＶＡＴのＩＣＢが配置されている。
【００５１】
次に、ボーダーイン、ボーダーアウト領域を挟んで、更新されたファイルのファイルエントリ、更新されたファイルが配置されている。そして、更新時に作製されたＶＡＴ（ＶＡＴ＜２ｎｄ＞）、この更新時のＶＡＴのＩＣＢが配置される。これ以降は、ボーダーアウト領域を挟んで、未書き込み領域が続いている。図８は、ＶＡＴ＜２ｎｄ＞の一例を示している。図８に示すように、仮想アドレスと論理アドレスが対応付けられている。
【００５２】
ファイルのデータの読み出しの際、ファイルシステムは、最新のＶＡＴ  ＩＣＢを読み出す。ＶＡＴ  ＩＣＢは、上記のように、常に書き込み領域の最後尾に配置しており、図７の例の場合、ＶＡＴ  ＩＣＢ＜２ｎｄ＞にアクセスされる。
【００５３】
ファイルシステムは、ＶＡＴ  ＩＣＢ＜２ｎｄ＞に記載されている最新のＶＡＴの位置を参照の上、ＶＡＴを読み出す。次に、ファイルシステムは、ファイルセットディスクリプタ−にアクセスする。この際、ファイルセットディスクリプタ−の論理アドレスは、仮想アドレス＃０からＶＡＴを用いて求められる。
【００５４】
次に、ファイルシステムは、ファイルセットディスクリプタ−に記載のアドレスから、ルートディレクトリのファイルエントリを読み出す。実際には、ＩＣＢを読み出し、次に、ＩＣＢに記載されているファイルエントリのアドレスにアクセスする。
【００５５】
次に、ファイルシステムは、ルートディレクトリのファイルエントリに記載されている仮想アドレス＃１とＶＡＴを用いて、ルートディレクトリのデータにアクセスする。次に、ファイルシステムは、ルートディレクトリのデータに記載の仮想アドレスから最新ファイルのＩＣＢにアクセスし、このＩＣＢに記載の仮想アドレス＃２およびＶＡＴを用いて最新ファイルのファイルエントリにアクセスする。そして、ファイルエントリに記載のアドレスから、最新ファイルのデータが読み出される。
【００５６】
フラッシュメモリにＤＶＤ−Ｒタイプのファイルシステムが採用された場合、通常のメモリリードによっては書き込済み領域と未書き込み領域とを判別することは困難である。
【００５７】
そこで、フラッシュメモリをＤＶＤ−Ｒタイプのファイルシステムでフォーマットした場合、図９に示すように、各ページ１１は、データ記憶部１１ａと冗長部１１ｂとから構成される。そして、各ページの冗長部１１ｂを書き済み済み情報部として用い、書き込み済み情報部にページの書き込済み／未書き込みを示すフラグが設けられる。このフラグをチェックすることで、最高位のページが「最終書き込み領域」として判別されることができる。
【００５８】
このフラグ情報は冗長部１１ｂにあるため、メモリカード１の通常のメモリリードコマンドでは、コントローラ４は、このフラグ情報を読み取ることができない。したがって、このフラグ情報に基づく書き込み済み領域の情報を読み込むためのコマンドがメモリカードインタフェース５に設置される。
【００５９】
コントローラ４は、書き込み時、データとともにページにフラグを追記していく。ただし、この方法はＤＶＤ−Ｒ方式のようなシーケンシャルライト方式のみに使える。また、「最終書き込み領域」を知るためにはコントローラ４がページを検索していく必要がある。
【００６０】
最終書き込み領域を効率的に検索するために、以下の手法を用いることもできる。コントローラは、フラッシュメモリのメモリ領域の検索対象を順次半分に区切りながら、フラグをチェックする。すなわち、まず、１回目の分割時の境界の直後のページの冗長部のフラグをチェックする。そして、このフラグが、未書き込みを示している場合、１回目の分割の前半の部分を次の検索対象とする。同様に、書き込み済みを示している場合、１回目の分割の後半の部分を次の検索対象とする。
【００６１】
そして、新たな検索対象（１回目の分割の前半の部分または後半の部分）が分割（２回目の分割）され、この分割の境界の直後のページの冗長部のフラグがチェックされる。以上の動作が、繰り返されることにより、効率的に、最終書き込み領域を検出することができる。
【００６２】
また、最終書き込み領域を認識するために、例えば管理データ領域３１に「最終書き込み領域」を記憶するための専用の領域を設けても良い。この場合、コントローラ４が、「最終書き込み領域」を知るために各ページを検索していく必要がない。ただし、この専用の領域への書き込みにおいて、あるタイミングでブロック消去が必要である。
【００６３】
上記のように、ＤＶＤ−Ｒタイプのファイルシステムでは、書き込み済み領域の最終部にＶＡＴ  ＩＣＢが書き込まれているため、動作の際、最終書き込み領域が検出される必要がある。本実施形態のように、ページの書き込済み／未書き込みを示すフラグが設けられることにより、コントローラ４が、最終書き込み領域を短時間で検出することができる。
【００６４】
ＤＶＤ−Ｒタイプのファイルシステムでは、上記のように、既書き込みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このような特性のため、ＤＶＤ−Ｒタイプのファイルシステムがフラッシュメモリに適用されると、ファイル更新、追記、削除ではブロック消去は発生しない。書き込みも追記のシーケンシャルライトのみである。
【００６５】
［２−１−２］ＤＶＤ−ＲＷタイプのファイルシステム
ＤＶＤ−ＲＷタイプのファイルシステムは、セクタデータ（ＩＣＢなど）を書き換えることでファイル更新、追記、削除を実現する。
【００６６】
未書き込み領域があれば、ＩＣＢの書き換えとファイル実体が追記されることにより、ファイルを更新することができる。未書き込み領域がない場合は、書き込み済みの領域を書き換えるか、ファイルシステムによるメモリカードのファイルの再構成（ガベージコレクション）によって未書き込み領域を確保する必要がある。
【００６７】
ＤＶＤ−ＲＷタイプのファイルシステムでは、ＤＶＤ−ＲＷの書換え可能回数が少ないため、書き換えの繰り返し等によって発生する不良セクタを補填するための代替セクタ（Sparing Area）が設けられている。そして、不良セクタが発生した場合、変換テーブル（Sparing Table）によって、不良セクタへのアクセスが代替セクタへのアクセスへと変更される。ＤＶＤ−ＲＷタイプのファイルシステムでは、このような変換メカニズムがサポートされている。なお、ＤＶＤ−ＲＷタイプのファイルシステムでは、パケット単位で代替が行われる。
【００６８】
一方、通常、メモリカードでの不良セクタの管理は、コントローラで行われている。ＤＶＤ−ＲＷタイプのファイルシステムでフラッシュメモリ３内のファイルを管理した場合、コントローラ４で不良セクタを管理することが不要となり、コントローラ４の負担を軽減することができる。
【００６９】
［２−１−３］ＤＶＤ−ＲＡＭタイプのファイルシステム
ＤＶＤ−ＲＡＭタイプのファイルシステムは、ＤＶＤ−ＲＷと同様に、セクタデータ（ＩＣＢなど）を書き換えることでファイル更新、追記、削除を実現する。その他の処理もほぼＤＶＤ−ＲＷと同様である。ただし、ＤＶＤ−ＲＡＭの書換え可能回数は１０万回程度と多いため、スペアリングエリアおよびスペアリングテーブルによる不良セクタの代替手段はサポートされていない。
【００７０】
フラッシュメモリの書き換え可能回数はＤＶＤ−ＲＡＭと同様に多い。また、一般に、メモリカードでの不良セクタの管理は、コントローラ４で行われている。よって、一般的には、メモリカードのファイルシステムには、ＤＶＤ−ＲＡＭタイプのファイルシステムが適している。
【００７１】
［２−２］ファイルシステムの設定
次に、適切なファイルシステムを設定（選択）するための基準について説明する。
【００７２】
［２−２−１］容量に応じたファイルシステムの設定
用途や条件に応じて適切なファイルシステムを設定することでメモリカードを効率よく使える。以下に、適切なファイルシステムについて説明する。
【００７３】
メモリカード１の容量が大きい場合、ＵＤＦのような、シーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。上述したようにＵＤＦには３つタイプのファイルシステムがある。容量に応じて、以下のようにファイルシステムを採用することが好ましい。
【００７４】
大容量の場合は、ＤＶＤ−Ｒ方式のようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
【００７５】
大容量でも比較的小さい場合は、ＤＶＤ−ＲＷ方式、またはＤＶＤ−ＲＡＭ方式のような、すなわち書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【００７６】
メモリカード１の容量が小さい場合、現在使用されているＦＡＴファイルシステムを用いることが好ましい。ＵＤＦ等、追記型のファイルシステムの場合、ファイルの更新を繰り返すと書き込み済みの使用不可領域が増えていく。これを整理して空き領域を確保するために、ガベージコレクションが必要である。容量が小さいと、ガベージコレクションを頻繁に行う必要があり、使い勝手が悪くなる。また、ＵＤＦの場合は管理情報の領域がＦＡＴに比べると大きくなるため、この点でも小容量のメモリカードには適していない。
【００７７】
［２−２−２］用途に応じたファイルシステムの設定
ファイルサイズが小さい用途や同一ファイルの書き換えが頻繁に発生する用途（メール、文書など通常のオフィスデータファイル用途）の場合は、ＦＡＴファイルシステムのようなランダム書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【００７８】
ファイルサイズが大きく同一ファイルの更新が少ない用途（画像、音楽、動画などのマルチメディア）には、ＵＤＦのようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
【００７９】
動画を記録する用途には、ＤＶＤ−Ｒ方式のような追記のみが可能なメディアを前提としたファイルシステムを採用することが好ましい。
【００８０】
音楽、静止画を記録する用途には、ＤＶＤ−ＲＷ方式、またはＤＶＤ−ＲＡＭ方式のような書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【００８１】
［２−２−３］ファイルシステムの設定方法
ファイルシステムの設定方法としては、
・ホストが自動決定
・ユーザが変更可能（デフォルトとしてはホストが適切なものを設定。）
・用途別にカードをそれぞれのフォーマットでプリフォーマットして出荷（後で再フォーマット変更も可能）
等が考えられる。
【００８２】
なお、１つのメモリカード１を複数のパーティションに分け、それぞれのパーティションが用途等に応じて適したファイルシステムで管理されるようにしてもよい。例えば、管理データ領域３１は、この領域に管理データブロックがあることに起因して頻繁に更新されるため、ＦＡＴファイルシステムで管理されることが好ましい。
【００８３】
また、保護データ領域又はユーザデータ領域に対しては、容量、用途に応じてＵＤＦまたはＦＡＴファイルシステムを設定すれば良い。保護データ領域又はユーザデータ領域に複数領域（パーティション）を設定し、各パーティションに対して、用途に応じたファイルシステム（ＦＡＴ、ＵＤＦ）を設定しても良い。
【００８４】
メモリカード１に異なるファイルシステムを共存させるためには、図１０に示すような仕様を用いる。図１０は、メモリカード１の仕様の構成を示す図である。物理レイヤ仕様２０１には、形状、電気的インタフェース、コマンド等が規定されている。ファイルシステム２０２では、複数のファイルシステム（ＵＤＦ、ＦＡＴ）等が共存できるように規定されている。セキュリティ２０３では、セキュリティに関する事項が規定されている。セキュリティ２０３の上位にオーディオ２０４ａ、ピクチャファイル２０４ｂ、ビデオ２０４ｃ、ドキュメント２０４ｄ等のアプリケーションが規定されている。
【００８５】
本実施形態では、ホスト２０が、各パーティションにおけるファイルシステムを認識するために、例えばメモリカード１の先頭セクタにパーティションテーブルが記載される。
【００８６】
パーティションテーブルには次のような情報が記載される。
【００８７】
１．ブートフラグ
２．パーティションの開始セクタ情報
３．領域情報（ファイルシステム（フォーマット）情報）
４．パーティション領域情報
なお、ホスト２０がフォーマット情報をメモリカード１内の専用領域に設定する場合に、メモリカード１のメモリ領域情報とともにファイルシステム情報を設定しても良い。
【００８８】
［２−３］ファイルシステムに応じたメモリカード内部のメモリ制御方式
メモリカード１に複数のファイルシステムが設定されている場合、ファイルシステムに応じてフラッシュメモリ３の書き込み／読み込み処理の制御方式を変えることが好ましい。
【００８９】
［２−３−１］ＦＡＴの場合
ＦＡＴファイルシステムの場合、これまでと同様のＦＡＴファイルシステム用のメモリ制御方式を行う。すなわち、メモリカード１は、後述の引越し書き込みやＦＡＴファイルシステム利用時に行われる特殊処理（書き込み高速化、ＦＡＴキャッシュ、ディレクトリキャッシュなど）を実施する。
【００９０】
＜引越し書き込みについて＞
引越し書き込み処理とは、フラッシュメモリにおいて書き込み済みのページへの書き込み（更新）が発生した場合に、以下のような処理を行うものである。フラッシュメモリの場合は消去はブロック単位で発生するため、このような処理が必要になる。
【００９１】
１）消去されたブロック（Ｂ）をひとつ準備する。
【００９２】
２）書き換え対象のページを含むブロック（Ａ）のうち、書換え対象を除く全ての書き込み済みページのデータをブロック（Ｂ）に書き移す。
【００９３】
３）書換え対象のページのデータをブロック（Ｂ）に書き込む。
【００９４】
４）ブロック（Ａ）の論理アドレスをブロック（Ｂ）の論理アドレスと置き換える。
【００９５】
＜ＦＡＴキャッシュ、ディレクトリキャッシュについて＞
ＦＡＴファイルシステムでは、ＦＡＴは決められた論理アドレスに存在し、またディレクトリ管理情報も一定の論理アドレス領域に存在することが多い。
【００９６】
ＦＡＴファイルシステムではＦＡＴやディレクトリ管理情報は頻繁に書き換えられるが、これは同じ論理アドレスへのデータ書換えが頻繁に発生することを意味する。
【００９７】
フラッシュメモリでは同じアドレスへのデータ書換えは引越し書き込みを伴うためデータの更新速度が遅くなる。また、同じ物理アドレスに対する頻繁なデータ書き込みはフラッシュメモリの寿命を短くする。
【００９８】
このため、所定の範囲に亘るある領域の論理アドレスのページに対して複数個の物理アドレス領域を用意しておき、この領域の論理アドレスのページへの書き込みの際、複数の物理アドレスに順次書き込んでいくことが行われる。こうすることによって、書き込み速度の低下やメモリ寿命の低下を防いでいる。この手法をＦＡＴキャッシュ、ディレクトリキャッシュと呼んでいる。
【００９９】
なお、ＦＡＴにはＦＡＴ１６、ＦＡＴ３２がある。ＦＡＴ１６とＦＡＴ３２ではＦＡＴやディレクトリのサイズや位置に違いがある。このため、メモリカード１がＦＡＴ１６であるかＦＡＴ３２であるかを識別し、ＦＡＴ１６またはＦＡＴ３２に応じて、メモリカード１でのＦＡＴキャッシュ、ディレクトリキャッシュの対象となる論理アドレスの領域やキャッシュのための予備エリアサイズを変えても良い。
【０１００】
［２−３−２］ＵＤＦ（ＤＶＤ−Ｒ、ＲＷ、ＲＡＭのファイルシステム）の場合
ＤＶＤ−Ｒタイプのファイルシステムでは、ファイル更新、追記、削除ではブロック消去は発生せず、書き込みも追記のシーケンシャルのみである。このため、メモリカード１は、引越し書き込みやＦＡＴファイルシステムの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【０１０１】
ＤＶＤ−ＲＷタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。このため、ファイルシステムが、書換え時の代替セクタ管理をする必要がある。メモリカード１は、引越し書き込みやＦＡＴの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【０１０２】
上記のように、ＤＶＤ−ＲＷタイプのファイルシステムにおける代替メカニズムでは、パケット単位で代替が行われる。このパケットは、現在１６ｋＢ程度である。この大きさは、現在のフラッシュメモリのブロック（消去単位）の大きさより非常に小さい。このため、効率の観点から、不良セクタの代替処理は、メモリカードが担うことが望ましい。
【０１０３】
しかしながら、フラッシュメモリのブロックの大きさが小さい場合（例えば、パケットサイズ以下）であれば、不良ブロックの代替を、ファイルシステムに任せても良い。ファイルシステムは、スペアリングエリアおよびスペアリングテーブルを用いて、不良セクタの代替を管理する。この場合、メモリカード１は、代替ブロックを確保しない。
【０１０４】
ＤＶＤ−ＲＡＭタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。また、ファイルシステムは代替セクタ管理を行わず、従来と同様にコントローラ４が行う。メモリカード１は、引越し書き込みやＦＡＴの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【０１０５】
また、ＤＶＤ−ＲＷやＤＶＤ−ＲＡＭタイプのＵＤＦでは、ヴォリュームストラクチャ（volume structure）と呼ばれる固定的な論理アドレス領域のデータ書換えが比較的頻繁に発生する。したがって、ＤＶＤ−ＲＷやＤＶＤ−ＲＡＭタイプのファイルシステムが設定されたときには、メモリカードは、この論理アドレス領域に対してＦＡＴキャッシュと同様の書換え高速化処理を行ってもよい。
【０１０６】
ただしＦＡＴキャッシュの場合とは、対象となる論理アドレス領域や書き換え単位や書換え頻度が異なるため、キャッシュ対象となる論理アドレス領域やキャッシュのための予備エリアサイズは変更される。
【０１０７】
以上のように、ファイルシステムに応じて、不要な処理や不要なメモリ領域の確保を行わないことでメモリカード１での処理時間の低下やユーザデータ領域３の減少を防ぐことができる。
【０１０８】
［２−３−２］コントローラによるファイルシステムの識別
ファイルシステムに応じてメモリ制御方式を変更するためには、コントローラ４がファイルシステムを認識する必要がある。以下に識別方法の実施例を示す。
【０１０９】
フォーマット情報（パーティションテーブルのファイルシステム情報など）によって識別する。この識別方法では、ホスト２０が特別な操作をする必要はないが、コントローラ４がフォーマット情報を認識し、フォーマットの種類を知得できる必要がある。
【０１１０】
フラッシュメモリ３内にフォーマット情報設定領域を設け、ホスト２０が識別情報を設定する。この識別方法では、メモリカード１はフォーマットデータを認識する必要がない。
【０１１１】
［３］メモリ領域移動コマンドについて
図１１に示すように、メモリカード１とホスト２０との間のインタフェースに「メモリ領域移動コマンド（データ移動コマンド）」または（および）「ブロック移動コマンド」を設けることが好ましい。これらのコマンドを利用することにより、ホスト２０からの指示によるガベージコレクション、デフラグ処理を効率良く行うことができる。メモリカード１が「メモリ領域移動コマンド」により指示される処理を効率良く行う方法として、以下のものが考えられる。
【０１１２】
１つ目は、仮想アドレス（論理アドレス）と物理アドレスの変換テーブルを利用することである。コントローラ２０は、領域移動コマンドが指示する移動後のページアドレスの記憶領域に移動対象のデータが記憶されているとホスト２０が認識するように、変換テーブルを書き換える。すなわち、ホスト２０に対して、データが移動された見かけ上の状態が作り出される。「メモリ領域移動コマンド」が指示するデータ移動にブロック単位のデータ移動が含まれる場合は、そのブロック単位のデータ移動については変換テーブルの変更だけを行って実際のメモリ移動を行わない。
【０１１３】
２つ目は、「メモリ領域移動コマンド」に対して、カード内部でフラッシュメモリのページコピーコマンドを使って、実際にデータを移動する。
【０１１４】
３つ目は、上記の２つの方法を組み合わせて使用する。
【０１１５】
また、メモリカード１とホスト２０との間のインタフェースに「ブロック移動コマンド」を設けることもできる。このコマンドは、メモリカード内のデータをブロック単位で移動する旨の指示を含んでおり、メモリ領域移動コマンドの一種である。メモリカード１が「ブロック移動コマンド」により指示される処理を効率良く行う方法として、メモリ領域移動コマンドの実現と同じ３つの方法によって行うことができる。
【０１１６】
ＤＶＤ−Ｒタイプのファイルシステムでは、本来、データの更新、消去は不可能であり、書き込みの際、書き込み済みの領域の後ろの連続する未書き込み領域にファイルが順次書き込まれていくような制御がなされる。このため、このファイルシステムは、書き込み済みの領域の後ろの連続する未書き込み領域を、書き込み可能な領域と認識する。
【０１１７】
一方、フラッシュメモリでは、データの更新、消去が可能である。このため、図１２の左側に示すように、古いデータ、すなわち、最新のデータが他のブロックに書き込まれているために不要となったデータが、書き込まれているブロックが存在する場合がある。この場合、ＤＶＤ−Ｒタイプのファイルシステムは、この古いデータが書き込まれたブロックを書き込み可能領域として認識しない。そこで、ＤＶＤ−Ｒタイプのファイルシステムに、このようなブロックを書き込み可能領域として認識させる手法が望まれる。
【０１１８】
この手法としては、図１２の右側に示すように、ガベージコレクションを行うことが挙げられる。すなわち、古いデータが書き込まれている領域（ゴミ領域）がブロック単位で消去され、消去されたブロック数分、有効なデータが書き込まれているブロックを上位のアドレスのブロックに移動される。この結果、未書き込み領域が増加する。
【０１１９】
有効データが書き込まれているブロックの移動は、ファイルシステムが行うとすると、ファイルシステムが、各ブロックのデータを読み出し、移動先のブロックに書き込むことが必要である。しかし、「ブロック移動コマンド」を設け、このコマンドを受けてメモリカード１が移動の処理を行うことにより、実際のデータの移動を行わずにメモリカード１側でのブロック論理アドレスと物理ブロックアドレスを変更するだけで論理ブロック間のデータ移動が可能になり、ガベージコレクションを効率的に行うことができる。
【０１２０】
「ブロック移動コマンド」を設けることにより、ホスト２０はメモリカード１へのブロック移動処理の指示を簡単に行える。
【０１２１】
ガベージコレクションを行った場合、ホスト２０のファイルシステム側でＩＣＢやＶＡＴ等の管理情報を書き換える必要があることはもちろんである。
【０１２２】
なお、ガベージコレクションの際、「ブロック移動コマンド」を用いてブロックが移動された場合、図１２の右側に示すように、ゴミ領域がページ単位で残る場合がある。これを避けたい場合、「メモリ領域移動コマンド」を用いて、ページ単位で移動を行えばよい。なお、このページ単位での移動の際にもコントローラ４がフラッシュメモリ３の持つページコピーコマンド（フラッシュメモリ３側でページ間のコピーを行えるコマンド）を使うことで効率の良いページ間データの移動が可能である。
【０１２３】
また、この項目で記載した手法は、ＵＤＦのガベージコレクションに限らず、ＦＡＴ等のデフラグにも応用可能である。
【０１２４】
「メモリ領域移動コマンド」、「ブロック移動コマンド」を用いることによって、ガベージコレクション、デフラグ処理の処理速度が向上する。
【０１２５】
［４］フラッシュメモリの適性に合わせたＵＤＦ仕様の追加やパラメータの定義
ファイルシステムの論理フォーマットパラメータに、セクタサイズと書き込み単位であるパケットサイズとに加えて、フラッシュメモリ３のブロック（消去単位）サイズを追加することが好ましい。こうすることによって、ファイルシステム２０は、フラッシュメモリ３の消去特性に合わせたファイル管理を行うことができる。ファイルシステム２０が、フラッシュメモリ３のブロックサイズを知得することにより、以下の処理が可能である。
【０１２６】
まず、ＤＶＤ−ＲＷタイプのファイルシステムが採用された場合、スペアリングテーブルおよびスペアリングエリアの管理は、ファイルシステムが、論理フォーマットパラメータに記録されたブロックサイズで実施することが好ましい。すなわち、効率性の観点から、スペアリングテーブルおよびスペアリングエリアの管理単位の大きさとフラッシュメモリ３のブロックの大きさとが同じであることが好ましい。こうすることによって、メモリカードが代替ブロックを確保しておく必要がなくユーザ領域が最初から少なくなることを防げる。
【０１２７】
また、ホスト２０のユーティリティ、ファイルシステムは、ブロック単位でのガベージコレクション、デフラグを優先的に行うことが好ましい。
【０１２８】
ガベージコレクションやデフラグでは、書き込み済みのブロックから他のブロックへのデータ移動が頻繁に行われるが、これをブロック単位で実施することで効率的な処理が可能である。また、この際に上記の「メモリ領域移動コマンド」を使用するとさらに効率的な処理が可能である。
【０１２９】
また、ホスト２０のファイルシステムは各ファイルのＩＣＢを１つのブロック内にまとめて記載することを優先することが好ましい。これによって、ガベージコレクションの際に発生する各ＩＣＢの書き換えに対して、書き換えが必要となるブロックの数を最低限に抑えることができる。こうすることによって、ガベージコレクション、デフラグの際のデータ移動やＩＣＢの書換え効率が向上する。
【０１３０】
［５］リカバリ処理について
［５−１］リカバリ処理Ｉ
リアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を以下に説明する。
【０１３１】
まず、ホスト２０はファイル書き込みの際、以下の手順でシーケンシャルにファイルを書き込む。ファイルの書き込みの手順を図１３のフローチャートを参照して説明する。
【０１３２】
ホスト２０は、仮ファイルエントリを作成する（ステップＳＴ１０１）。仮ファイルエントリにおいて記載されるファイルサイズ（仮ファイルサイズ）は、書き込まれるファイルが実際に占有するであろう領域のサイズと無関係の大きさで多めに設定される。この仮ファイルサイズは、十分大きな値に設定され、例えば、空き領域の全ての容量に設定される。また、仮ファイルエントリには、ファイルの開始位置のアドレスが記載されている。
【０１３３】
ホスト２０は、仮ファイルエントリで設定された空き領域内のファイルの開始位置から、ファイルを低位のセクタから高位のセクタへと順次シーケンシャルに書き込んでいく（ステップＳＴ１０２）。書き込み時、メモリカード１は、ページの冗長領域を利用して書き込み済み／未書き込みのフラグを記録しておく。
【０１３４】
ホスト２０は、リアルタイムのストリームファイルの書き込みが終了したら（ステップＳＴ１０３）、実際のファイルサイズを確定する（ステップＳＴ１０４）。確定されたファイルサイズに基づいて、ホスト２０は最終的なファイルエントリを再度書き込む（ステップＳＴ１０５）。ＤＶＤ−Ｒ方式の場合はファイルエントリの追記とＶＡＴ  ＩＣＢの追記が行われる。ＤＶＤ−ＲＡＭ、−ＲＷ方式の場合は仮ファイルエントリが、最終的なファイルサイズに基づいた正式なファイルエントリに書き換えられる。
【０１３５】
何らかの要因（バッテリー切れなどのハードウェアトラブルなど）でファイルの書き込みが完了しなかった場合、ホスト２０は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図１４を参照して説明する。
【０１３６】
ホスト２０は、仮ファイルエントリを参照することにより、ファイルの開始位置を認識する（ステップＳＴ１１１）。
【０１３７】
ホスト２０は、書き込み済み／未書き込みのフラグを参照することにより、書き込み済み領域の最終書き込み位置を認識する（ステップＳＴ１１２）。
【０１３８】
ホスト２０は、ファイルの開始位置から最終書き込み位置までの領域をリカバリファイルのサイズとして確定する（ステップＳＴ１１３）。次に、ホスト２０は、ステップＳＴ１０５と同様に、確定されたリカバリファイルのサイズに基づいて、ファイルエントリを再度書き込む（ステップＳＴ１１４）。
【０１３９】
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
【０１４０】
［５−２］リカバリ処理ＩＩ
次に、上記のリカバリ処理を応用してＦＡＴファイルシステムの場合でのリアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を説明する。
【０１４１】
ホスト２０はファイル書き込みの際以下の手順でファイルを書き込む。書き込み処理の手順を図１５のフローチャートを参照して説明する。
【０１４２】
前準備として、ホスト２０は、デフラグ等によって、ファイルを書き込むための連続した十分に大きい空き領域をカードに確保する（ステップＳＴ２０１）。予め連続した十分に大きい空き領域があれば、この処理を行わなくても良い。メモリカード１は、各クラスタに平均的に書き込みを行うために、論理アドレスと物理アドレスとの変換テーブルを変更する。空き領域の論理アドレスが連続するように変換テーブルを変更しても良い。
【０１４３】
ホスト２０は、書き込むファイルのための仮のＦＡＴをあらかじめ書き込む（ステップＳＴ２０２）。この際、ホスト２０は、確保された連続領域にファイルを書き込むことを想定して、書き込み領域が十分に大きな連続した領域であることを示すようなＦＡＴを予め書き込んでおく。
【０１４４】
ホスト２０は、ファイルを低位のセクタから高位の高位のセクタへと順次シーケンシャルに書き込んでいく（ステップＳＴ２０３）。ブロック消去による書き込み速度低下を防ぐため、書き込み時にＦＡＴの更新は行われない。書き込み時、メモリカード１は、書き込まれたページの冗長部に書き込み済みのフラグを記録する。
【０１４５】
ホスト２０は、リアルタイムのストリームファイルの書き込みが終了したら（ステップＳＴ２０４）、ファイルサイズを確定する（ステップＳＴ２０５）。確定されたファイルサイズに基づいて、仮ＦＡＴを最終的なＦＡＴに書き換えてファイルをクローズする（ステップＳＴ２０６）。
【０１４６】
何らかの要因（ハードウェハのトラブルなど）でファイルの書き込みが完了していなかった場合、すなわち最終的なＦＡＴの書き込みが完了しなかった場合、ホスト２０は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図１６を参照して説明する。
【０１４７】
ホスト２０は、仮ＦＡＴを参照することにより、ファイルのクラスタの開始位置を認識する（ステップＳＴ２１１）。
【０１４８】
ホスト２０は、書き込み済み／未書き込みのフラグを参照することにより、書き込み済み領域の最終位置を認識する（ステップＳＴ２１２）。
【０１４９】
ホスト２０は、ファイルのクラスタの開始位置から、ステップＳＴ２１２で認識された最終書き込み位置までの領域をリカバリファイルのサイズとして確定する（ステップＳＴ２１３）。
【０１５０】
ホスト２０は、確定されたファイルサイズに基づいて、仮ＦＡＴを正式なＦＡＴに更新する（ステップＳＴ２１４）。
【０１５１】
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
【０１５２】
なお、ステップＳＴ２０１において、事前に確保する書き込み領域は１つの大きな連続領域であることが書き込み制御の効率上は望ましい。しかしながら、１つの十分な大きさの連続領域が確保できない場合でも、複数の連続領域を確保しておき、ステップＳＴ２０２においてそれらの複数の連続領域に対応するＦＡＴをあらかじめ書いておき、ステップＳＴ２０３においてそのＦＡＴに応じた領域に順次データを書き込んでいくようにしてもよい。この場合はひとつの連続領域に比べると書き込み制御の効率は低下するが、ステップＳＴ２０１におけるデフラグ処理を減らせるという利点がある。
【０１５３】
［６］書換え不可ページの設定について
コントローラ４は、フラッシュメモリ３内に、部分的に書換え不可能な領域を設定可能とされている（ＳＤTMカード等のメモリカードにはアドレス指定のライトプロテクトコマンドが既に定義されている）。
【０１５４】
ホスト２０は、追記型のファイルシステムを使用する場合に、あるファイル書き込みが終了した時点で書き込み済みの領域を書換え不可能な領域としてライトプロテクトする。
【０１５５】
書換え不可能な領域として設定したファイルは、その後のメモリカード１によるアクセスによって削除、書換えされず復元可能である。つまり、ファイルの保全が可能である。また、保全されていない領域ではファイルの更新や追加が可能である。従来のＦＡＴファイルシステムの場合、ファイルの保全のためにＦＡＴ領域を書き換え不能に設定するとＦＡＴの更新が不可能であり、この結果、全てのファイルの更新、追加が不可能になる。このためアドレス指定のライトプロテクトの意味があまりない。
【０１５６】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【０１５７】
【図１】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】ホスト機器とメモリカードとを含む構成を示すブロック図。
【図３】フラッシュメモリのデータ配置を示す図。
【図４】フラッシュメモリをフォーマットの違いにより区分けした状態を示す図。
【図５】一般的なファイル構造を示す図。
【図６】ＩＣＢを用いて実現されるファイル構成を示す図。
【図７】ＤＶＤ−Ｒファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示す図。
【図８】ＶＡＴの一例を示す図。
【図９】各ページの構成の一例を示す図。
【図１０】メモリカードの仕様の構成の一例を示す図。
【図１１】メモリ領域移動コマンドを示す図。
【図１２】ガベージコレクション前後のファイル構造を示す図。
【図１３】メモリカードへの書き込み処理を示すフローチャート。
【図１４】メモリカードへに書き込まれたファイルのリカバリ処理を示すフローチャート。
【図１５】メモリカードへの書き込み処理を示すフローチャート。
【図１６】メモリカードへに書き込まれたファイルのリカバリ処理を示すフローチャート。
【符号の説明】
【０１５８】
１…メモリカード、２…ＰＣＢ基板、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ。
【図１】
2006040264.tif 000003
【図２】
2006040264.tif 000004
【図３】
2006040264.tif 000005
【図４】
2006040264.tif 000006
【図５】
2006040264.tif 000007
【図６】
2006040264.tif 000008
【図７】
2006040264.tif 000009
【図８】
2006040264.tif 000010
【図９】
2006040264.tif 000011
【図１０】
2006040264.tif 000012
【図１１】
2006040264.tif 000013
【図１２】
2006040264.tif 000014
【図１３】
2006040264.tif 000015
【図１４】
2006040264.tif 000016
【図１５】
2006040264.tif 000017
【図１６】
2006040264.tif 000018