(57)【要約】【課題】処理を高速化でき、利便性を向上できるメモリシステムおよびそのホスト装置を提供する。【解決手段】メモリシステム２は、不揮発性メモリ６と、前記不揮発性メモリを制御するメモリコントローラ７とを具備し、前記メモリコントローラ７は、外部１からのコマンドに応じて、不要となった前記不揮発性メモリのデータを消去し、前記不要となったデータを論理アドレスの一部に割り当てられたメモリ領域に割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御する。【選択図】      図２５
2010026933.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリを制御するメモリコントローラとを具備し、
前記メモリコントローラは、外部からのコマンドに応じて、不要となった前記不揮発性メモリのデータを消去し、前記不要となったデータを論理アドレスの一部に割り当てられたメモリ領域に割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御すること
を特徴とするメモリシステム。
【請求項２】
不揮発性メモリと、
前記不揮発性メモリを制御するメモリコントローラとを具備し、
前記メモリコントローラは、外部から与えられる論理アドレス範囲情報としてのコマンドに応じて、前記論理アドレス領域の一部または全部に割り当てられたメモリ領域を割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御すること
を特徴とするメモリシステム。
【請求項３】
前記メモリコントローラは、前記論理アドレスの最大値を拡張した後の前記最大論理アドレスを外部に通知すること
を特徴とする請求項１または２に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、前記不揮発性メモリの処理可能な最大論理アドレスを超えた場合、外部からのコマンドに従って、前記論理アドレスの最大値を初期状態に戻すこと
を特徴とする請求項１乃至３のいずれか１項に記載のメモリシステム。
【請求項５】
追記型ファイルシステムにフォーマットされたメモリシステムのホスト装置であって、ファイル削除後に、前記メモリシステムに対して最大論理アドレス範囲を拡張するコマンドを前記メモリシステムに出し、拡張後の前記最大論理アドレス範囲の値に基づいて、使用可能な空きメモリ領域を再計算すること
を特徴とするホスト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリシステム、ホスト装置に関し、例えば、ＵＤＦファイルシステムのような追記型ファイルシステムにフォーマットされたメモリカードおよびこれに対応するホスト装置等に適用されるものである。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ等の不揮発性記憶デバイスを搭載したメモリシステム（例えば、ＳＤカード（登録商標）等）に対して、効率よくデータ書き込みを行うための手段として、ホスト装置からのＵＤＦ−ＶＡＴ方式のような追記型ファイルシステムを応用するものが提案されている（例えば、特許文献１参照）。
【０００３】
ここで、ＦＡＴなどの上書き型のファイルシステムでは、不要なファイルを削除すれば記憶領域の空き容量が増える。
【０００４】
しかしながら、ＵＤＦ−ＶＡＴ方式のような追記型ファイルシステムでは、ファイルを削除した場合も、”当該ファイルを削除した”という情報が不揮発性メモリに追記されることになる。このため、ファイルを削除しただけでは記憶領域の空き領域を大きくすることができない。
【０００５】
さらに、追記型ファイルシステムにおいて、ファイルを削除して記憶領域の空き領域を広げるためには、ファイル削除後に、削除されたファイルのデータが記憶されている領域より後のアドレスのデータを順次書き換えて、削除領域のアドレスに不要な領域がないように詰めるとともに、ファイル情報のポインタをかき変えていく必要がある（いわゆるガベージコレクション）。その結果、処理に時間がかかって使い勝手が悪い、という問題がある。さらに、ＮＡＮＤ型フラッシュメモリへの書き込み回数も多くなるという点で不利があった。
【０００６】
上記のように、従来のメモリシステムおよびそのホスト装置では、処理の高速化に不利であり、利便性が低減するという問題があった。
【特許文献１】特開２００６−４０２６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
この発明は、処理を高速化でき、利便性を向上できるメモリシステムおよびそのホスト装置を提供する。
【課題を解決するための手段】
【０００８】
この発明の一態様によれば、不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラとを具備し、前記メモリコントローラは、外部からのコマンドに応じて、不要となった前記不揮発性メモリのデータを消去し、前記不要となったデータを論理アドレスの一部に割り当てられたメモリ領域を割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御するメモリシステムを提供できる。
【０００９】
この発明の一態様によれば、不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラとを具備し、前記メモリコントローラは、外部から与えられる論理アドレス範囲情報としてのコマンドに応じて、前記論理アドレス領域の一部または全部に割り当てられたメモリ領域を割り当てなおすことで、前記論理アドレスの最大値を拡張することように制御するメモリシステムを提供できる。
【００１０】
この発明の一態様によれば、追記型ファイルシステムにフォーマットされたメモリシステムのホスト装置であって、ファイル削除後に、前記メモリシステムに対して最大論理アドレス範囲を拡張するコマンドを前記メモリシステムに出し、拡張後の前記最大論理アドレス範囲の値に基づいて、使用可能な空きメモリ領域を再計算するホスト装置を提供できる。
【発明の効果】
【００１１】
この発明によれば、処理を高速化でき、利便性を向上できるメモリシステムおよびそのホスト装置が得られる。
【発明を実施するための最良の形態】
【００１２】
以下、この発明の実施形態について図面を参照して説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。なお、以下、本発明の実施形態に係るメモリシステムおよびそのホスト装置の一例として、メモリカードおよびそのホスト装置を一例に挙げて説明を行う。
【００１３】
［第１の実施形態（ファイル削除後にメモリ容量を増大させる一例）］  
本第１の実施形態はファイル削除後にメモリ容量を増大させる一例に係るメモリシステムおよびそのホスト装置に関するものである。以下、図１乃至図２９を参照して、［１］構成、［２］動作、［３］効果、の順で説明する。
【００１４】
［１］構成
［１−１］全体の構成
図１は、本発明の一実施形態に係るメモリシステムおよびホスト装置の主要部を概略的に示す機能ブロック図である。各機能ブロックは、ハードウェア、コンピュータソフトウェア、のいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
【００１５】
図１において、ホスト装置１は、挿入されるメモリカード２に対してアクセスを行うためのハードウェアおよびソフトウェア（システム）を備えている。ホスト装置１は、アプリケーション、オペレーティングシステム等のソフトウェアを備えている。ソフトウェア３は、ユーザから、メモリカード２へのデータの書き込み、メモリカード２からのデータの読み出しを指示される。ソフトウェア３は、書き込みおよび読み出しをファイルシステム４に指示する。
【００１６】
ファイルシステム４は、管理対象の記憶媒体に記録されているファイル（データ）を管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルを管理する。ファイルシステム４では、記憶媒体におけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理情報が記録されている領域の場所や利用方法などが定められている。ファイルシステム４は、ＦＡＴファイルシステムを基礎としており、本明細書を通じた動作を実行可能に構成されており、具体的な動作に関しては適宜説明する。
【００１７】
ホスト装置１は、ＳＤインタフェース５を有する。ＳＤインタフェース５は、ホスト装置１とメモリカード２（コントローラ７）との間のインタフェース処理を行うのに必要なハードウェア、ソフトウェアからなる。ホスト装置１は、ＳＤインタフェース５を介してメモリカード２と通信を行う。ＳＤインタフェース５は、ホスト装置１とメモリカード２とが通信するのに必要な様々な取り決めを規定し、後述のメモリカード２のＳＤインタフェース１１と相互に認識可能な各種のコマンドの組を備えている。また、ＳＤインタフェース５は、メモリカード２のＳＤインタフェース１１と接続可能なハードウェア上の構成（ピンの配置、数等）も含む。
【００１８】
メモリカード２は、ホスト装置１に接続されたとき、およびオフ状態のホスト装置１に挿入された状態でホスト装置１がオンされたときに電源供給を受けて初期化動作を行った後、ホスト装置１からのアクセスに応じた処理を行う。メモリカード２は、メモリ（ＮＡＮＤ型フラッシュメモリ）６を制御するためのメモリコントローラ７を有する。
【００１９】
メモリ６は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行う。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ６は、複数のページからなる物理ブロックと呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
【００２０】
メモリコントローラ７は、メモリ６によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（または物理ブロック）が、ホスト装置１により割り当てられたどの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ（または物理ブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することをいう。
【００２１】
メモリコントローラ７は、ＳＤインタフェース１１、ＭＰＵ（micro processing unit）１２、ＲＯＭ（read only memory）１３、ＲＡＭ（read only memory）１４、ＮＡＮＤインタフェース１５を含んでいる。
【００２２】
ＳＤインタフェース１１は、ホスト装置１とメモリコントローラ７との間のインタフェース処理を行うのに必要なハードウェア、ソフトウェアからなる。メモリカード２（メモリコントローラ６）は、ＳＤインタフェース１１を介してとホスト装置１と通信を行う。ＳＤインタフェース１１は、ＳＤインタフェース５と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成（ピンの配置、数等）も含む。
【００２３】
ＳＤインタフェース１１は、レジスタ１５を含んでいる。図２に、レジスタ１５の構成を例示する。レジスタ１５は、カードステータスレジスタ、ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲの各種レジスタを有する。カードステータスレジスタは、通常動作において使用され、例えばエラー情報が記憶される。ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲは、主にメモリカード２の初期化時に使用される。ＣＩＤ（card identification number）には、メモリカード２の個体番号が記憶される。ＲＣＡ（relative card address）には、相対カードアドレスが記憶される。ＤＳＲ（driver stage register）には、メモリカード２のバス駆動力等が記憶される。ＣＳＤ（card specific data）には、メモリカード２の特性パラメータ値が記憶される。ＳＣＲ（SD configuration data register）には、メモリカード２のデータ配置が記憶される。ＯＣＲ（operation condition resister）には、メモリカード２の動作範囲電圧に制限のある場合、動作電圧が記憶される。
【００２４】
ＭＰＵ１２は、メモリカード２全体の動作を司る。ＭＰＵ１２は、例えば、メモリカード２が電源供給を受けた際に、ＲＯＭ１３内に格納されているファームウェア（制御プログラム）をＲＡＭ１４上に読み出して所定の処理を実行する。ＭＰＵ１２は、制御プログラムに従って、各種のテーブル（後述）をＲＡＭ１４上で作成したり、ホスト装置１から書き込みコマンド、読み出しコマンド、消去コマンドを受けてメモリ６に対する所定の処理を実行したりする。
【００２５】
ＲＯＭ１３は、ＭＰＵ１２により制御される制御プログラムなどを格納する。ＲＡＭ１４は、ＭＰＵ１２の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。このようなテーブルとして、ファイルシステム４によってデータに割り当てられた論理アドレスを有するデータを実際に記憶しているページの物理アドレスの変換テーブル（論物テーブル）が含まれる。ＮＡＮＤインタフェース１５は、メモリコントローラ７とメモリ６とのインタフェース処理を行う。
【００２６】
メモリ６内の記憶領域は、保存されるデータの種類に応じて複数の領域に区分けされている。この複数の領域は、システムデータ領域２１、機密データ領域２２、保護データ領域２３、ユーザデータ領域２４、を含む。
【００２７】
システムデータ領域２１は、メモリコントローラ７が、その動作に必要なデータを保存するためにメモリ６内で確保しておく領域であり、主にメモリカード２に関する管理情報を格納し、メモリカード２のセキュリティ情報やメディアＩＤなどのカード情報を格納する。機密データ領域２２は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト装置１はアクセスできない。
【００２８】
保護データ領域２３は、重要なデータ、セキュアなデータを格納する。ホスト装置１は、保護データ領域２３にアクセス可能であるが、ホスト装置１とメモリカード２との間での相互認証によりホスト装置１の正当性が証明された後に限られる。
【００２９】
ユーザデータ領域２４は、ホスト装置１が自由にアクセスおよび使用することが可能で、例えばＡＶコンテンツファイルや画像データ等のユーザデータを格納する。以下の説明で、メモリ６は、このユーザデータ領域２４を指すものとする。なお、メモリコントローラ７は、ユーザデータ領域２４の一部を確保し、自身の動作に必要な制御データ（論物テーブル、後述の最終割り当て論理ブロックアドレス等）を保存する。保護データ領域２３とユーザデータ領域２４はホスト装置１から別のボリュームとして論理フォーマットされてファイル管理される。
【００３０】
［１−２］メモリの構成
次に、図３、図４を用いて、メモリの構成について説明する。
【００３１】
［１−２−１］メモリ空間およびメモリの物理的な構成
まず、図３を用いて、メモリ６のメモリ空間の構成について説明する。図３は、メモリ６のメモリ空間の構成を示す図である。
【００３２】
図３に示すように、メモリ６は、通常のメモリ領域３１とページバッファ３２とを有する。
【００３３】
メモリ領域３１は、複数のブロックＢＬＫを含んでいる。各物理ブロックＢＬＫは、複数のページＰＧから構成される。各ページＰＧは、直列接続された複数のメモリセルトランジスタを含んでいる。
【００３４】
各メモリセルは、いわゆるスタックゲート構造型のＭＯＳＦＥＴ（metal oxide semiconductor field effect transistor）からなる。スタックゲート構造のＭＯＳトランジスタは、トンネル絶縁膜、浮遊ゲート電極、電極間絶縁膜、制御ゲート電極、ソース／ドレイン拡散層を含む。各メモリセルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリセルトランジスタは、２つ以上の閾値電圧の異なる状態を取り得、いわゆる多値を記憶可能な構成を有する。そして、メモリ６のセンスアンプ、電位発生回路等を含む制御回路は、メモリセルトランジスタに多ビットのデータを書き込み、多ビットのデータを読み出すことが可能な構成を有している。
【００３５】
同じ行に属するメモリセルトランジスタの制御ゲート電極は、同じワード線と接続される。同じ列に属し且つ直列接続されたメモリセルトランジスタの両端には選択ゲートトランジスタが設けられる。一方の選択ゲートトランジスタは、ビット線と接続される。この法則に則って、メモリセルトランジスタ、選択ゲートトランジスタ、ワード線、ビット線が設けられる。データの書き込みおよび読み出しは複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合からなる記憶領域が１つのページに対応する。
【００３６】
図３の例の場合、各ページＰＧは、２１１２バイト（５１２バイト分のデータ記憶部×４＋１０バイト分の冗長部×４＋２４バイト分の管理データ記憶部）を有しており、各ブロックＢＬＫは例えば１２８ページからなる。
【００３７】
ページバッファ３２は、メモリ６へのデータ入出力を行い、データを一時的に保持する。ページバッファ３２が保持可能なデータサイズは、例えば、ページＰＧのサイズと同じく２１１２バイト（２０４８バイト＋６４バイト）である。データ書き込みなどの際、ページバッファ３２は、メモリ６に対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。データの消去は物理ブロックＢＬＫ単位で行われる。
【００３８】
また、メモリ６は、１つのメモリセルトランジスタに１ビットのデータを書き込むことができるモードと、多ビットのデータ、すなわち２n（ｎは自然数）値のデータを書き込むモードとを有する。メモリ６が１つのメモリセルトランジスタに１ビットのデータを書き込むモードを２値モードと称し、多ビットのデータを書き込むモードを多値モードと称する。
【００３９】
［１−２−２］メモリの書き込みモード
次に、図４を用いて、２値モードおよび多値モードについて説明する。図４は、２値モードと多値モードとの違いを示す図である。上記のように、メモリ６の各メモリセルトランジスタは、２以上のビットのデータを記憶できる。すなわち、２n（ｎは自然数）値の値を記憶する。しかしながら、以下の説明では、多値モードの一例として、４値モードについて説明する。図４においては、横軸は閾値電圧Ｖthを示し、縦軸はメモリセルの存在確率を示している。
【００４０】
まず４値モードについて説明する。図４に示すように、メモリセルトランジスタは、閾値電圧Ｖthの大きさに応じて、閾値電圧の低い順に例えば“１１”、“０１”、“１０”、“００”の４つのデータのいずれかを記憶できる。“１１”データを記憶しているメモリセルトランジスタの閾値電圧Ｖth［Ｖ］は、Ｖth＜０である。“０１”データを記憶しているメモリセルトランジスタの閾値電圧Ｖth［Ｖ］は、０＜Ｖth＜Ｖth１である。“１０”データを記憶しているメモリセルトランジスタの閾値電圧Ｖth［Ｖ］は、Ｖth１＜Ｖth＜Ｖth２である。“００”データを記憶しているメモリセルトランジスタの閾値電圧Ｖth［Ｖ］は、Ｖth２＜Ｖth＜Ｖth３である。
【００４１】
次に２値モードについて説明する。図４に示すように、メモリセルトランジスタは、閾値電圧Ｖthの大きさに応じて、閾値電圧の低い順に“１”、“０”の２つのデータのいずれかを記憶できる。“１”データを記憶しているメモリセルトランジスタの閾値電圧Ｖth［Ｖ］は、Ｖth＜０である。“０”データを記憶しているメモリセルトランジスタの閾値電圧Ｖth［Ｖ］は、Ｖth１＜Ｖth＜Ｖth２である。
【００４２】
“１”データは４値モードにおける“１１”データに等しく、“０”データは４値モードにおける“１０”データに等しい閾値電圧を有する。すなわち、２値モードとは、４値モードにおける２ビットデータのうち、低位ビットのみを用いた動作モードと言うことができる。メモリ６が、メモリセルトランジスタに対して２値モードでデータを書き込むか、または４値モードでデータを書き込むかは、メモリコントローラ７の指示に従う。具体的には、２ビットデータの低位ビットには低位ページアドレスが割り当てられ、上位ビットには上位ページアドレスが割り当てられる。メモリセルトランジスタに対して２値モードでデータを書き込む場合、メモリコントローラ７は、これらのページアドレスのうち低位ページアドレスのみを使用してメモリ６にデータを書き込む。メモリセルトランジスタに対して多値モードでデータを書き込む場合、メモリコントローラ７は、上位ページアドレスと低位ページアドレスの両方を使用してメモリ６にデータを書き込む。
【００４３】
データの書き込みは、まず低位ビットから行われる。消去状態を“１１”とすると、まず低位ビットに“０”または“１”が書き込まれることにより、メモリセルトランジスタは“１１”（“−１”）、または“１０”（“−０”）を保持する状態になる。ここで、“−”は不定を意味する。２値モードの場合、以上で書き込みは終了する。
【００４４】
一方、４値モードで書き込まれる場合には、続けて上位ビットに“０”または“１”が書き込まれる。その結果、“１１”（“−１”）を保持していたメモリセルトランジスタは、“１１”または“０１”を保持する状態になり、“１０”（“−０”）を保持していたメモリセルトランジスタは“１０”または“００”を保持する状態になる。その他の８値モード、１６値モード等について、同様である。
【００４５】
多値モードでは、１メモリセル当たりのデータ記憶量が大きいが、書き込みが遅い。一方、２値モードでは、１メモリセル当たりのデータの記憶量が小さいが、書き込みが速く、書き換え頻度に対する耐性も高い。
【００４６】
メモリ６は、物理ブロックごとに、２値モードでの書き込みまたは多値モードでの書き込みを選択することができる。
【００４７】
なお、４値のみでなく８値（１メモリセル当たり３ビット）や１６値（１メモリセル当たり４ビット）といった拡張も考えられる。いずれも１メモリセル当たりのビット数が少ないほど、書き込みが速く、書き換え頻度に対する耐性も高い。
【００４８】
［１−２−３］メモリのフォーマット
次に、メモリカード２のフォーマットについて説明する。メモリ３は、以下の形式でフォーマットされる。このフォーマットは、本発明の一実施形態に係るファイルシステム（例えばホスト装置１内のファイルシステム４）によって行われる。
【００４９】
［１−２−３−１］ＦＡＴファイルシステム
本発明の一実施形態に係るファイルシステムによるメモリ３のフォーマットの説明に先立って、このファイルシステムが基礎としているＦＡＴファイルシステムの概要について、図５、図６を用いて説明する。図５は、ＦＡＴファイルシステムによりフォーマットされたメモリ空間の状態を示している。そして、以下に示す管理データの幾つかが書き込まれる。ここでいうメモリ空間は、ＦＡＴファイルシステムが自由にアクセスできるメモリ領域であり、図１のメモリ６においては、ユーザデータ領域２４に一致する。
【００５０】
図５に示すように、ＦＡＴファイルシステムは、管理対象のメモリのメモリ空間を所定の大きさ（例えば１６ｋバイト）のクラスタに分割して管理する。メモリ空間４０の最低位から所定の範囲のクラスタ番号の領域には管理データが割り当てられる。以下、管理データを記憶する領域を、管理データブロック４１と称する。管理データブロック４１より高位のクラスタ番号の領域には、ファイルデータが割り当てられる。以下、ファイルデータを記憶する領域をファイルデータブロック４２と称する。
【００５１】
管理データブロック４１は、さらに、パーティションテーブルに割り当てられる領域４３、ブートセクタに割り当てられる領域４４、ＦＡＴ１、ＦＡＴ２に割り当てられる領域４５、４６、ルートディレクトリエントリに割り当てられる領域４７に分けられる。パーティションテーブルは、各パーティションのファイルシステムタイプとその先頭セクタ等の情報を格納している。ブートセクタは、パーティションテーブルが示す先頭セクタに位置し、ＢＰＢ（BIOS parameter block）を含んでいる。ＢＰＢは、ファイルシステムが使用する、メモリ６の様々なパラメータを示している。ＦＡＴファイルシステムは、メモリをフォーマットする時、このパラメータを書き込む。ＦＡＴファイルシステムは、起動時にＢＰＢを読み込むことにより、ファイルフォーマットのパラメータを認識する。
【００５２】
ＦＡＴ１は、メモリに書き込まれ、クラスタの大きさに分割されたファイルデータの一部（以下、単にファイルデータと称する）がどのクラスタに記憶されているか、およびファイルデータを復元するためのクラスタのつながりを示している。ＦＡＴ２は、ＦＡＴ１のバックアップであり、ＦＡＴ１と同じ内容を格納している。
【００５３】
１つのファイルを構成する各ファイルデータが、連続するクラスタに割り当てられることは必須ではないので、ＦＡＴファイルシステムは、空いているクラスタを、クラスタ番号の順を気にすることなく（ランダムに）ファイルデータに割り当てる。そして、ＦＡＴ１、ＦＡＴ２は、ファイルデータを格納しているクラスタの接続関係を格納している。ＦＡＴ１、ＦＡＴ２（以下、単にＦＡＴと記載する）が格納している情報をトレースすることにより、元のファイルが復元される。
【００５４】
ルートディレクトリエントリは、ルートディレクトリに属する各ファイルのファイルエントリを記憶する。ファイルエントリには、ファイル名またはフォルダ名、ファイルサイズ、属性およびファイルの更新日時情報、どのクラスタがファイルの先頭クラスタであるかを示すフラグ等が含まれる。なお、ＦＡＴフォーマット形式のバージョン（例えば、ＦＡＴ１６、ＦＡＴ３２）によっては、ルートディレクトリエントリをＦＡＴの後の任意のアドレスに置くことができる。
【００５５】
あるファイルが、ルートディレクトリに属するサブディレクトリに属する場合、ルートディレクトリエントリには、ルートディレクトリに属するサブディレクトリのエントリ（サブディレクトリエントリ）に割り当てられるクラスタの番号が記載されている。そして、サブディレクトリエントリは、自身に属する各ファイルのファイルエントリを保持している。図５に示すように、サブディレクトリエントリは、ＦＡＴファイルシステムによって、ファイルデータブロック４２内の任意のクラスタ４８に書き込まれる。サブディレクトリエントリも管理データに属し、頻繁に書き換えられることが多い。
【００５６】
図６は、ＦＡＴおよびファイルエントリの一例を示している。図６に示すように、ルートディレクトリエントリは、ファイルエントリとして各ファイル「ＦＩＬＥ１．ｔｘｔ」、「ＦＩＬＥ２．ｔｘｔ」、「ＦＩＬＥ３．ｔｘｔ」の先頭のクラスタの位置情報を格納している。「ＦＩＬＥ１．ｔｘｔ」、「ＦＩＬＥ２．ｔｘｔ」、「ＦＩＬＥ３．ｔｘｔ」、の先頭クラスタは、それぞれクラスタ０００２、０００５、０００７である。
【００５７】
ＦＡＴには、各クラスタの次に接続されるべきクラスタの番号が記載されている。例えば、「ＦＩＬＥ１．ｔｘｔ」の場合、先頭のクラスタ０００２のデータに続くデータを格納するクラスタはクラスタ０００３で、クラスタ０００３のデータに続くデータを格納するクラスタはクラスタ０００４であることが分かる。そしてクラスタ０００２、０００３、０００４のデータを接続することにより、「ＦＩＬＥ１．ｔｘｔ」のファイルが復元される。ファイルデータの最後の部分を格納するクラスタには、「ＦＦＦＦ」が書き込まれている。
【００５８】
［１−２−３−２］ＦＡＴファイルシステム
次に、図７を用いて、ＦＡＴファイルシステムを基礎とする、本発明の一実施形態に係るファイルシステムについて説明する。本発明の一実施形態に係るファイルシステム（以下、ホスト装置１内のファイルシステム４もそれに該当するものとする）は、以下に示す形に記憶媒体のメモリ空間をフォーマットする。そして、ファイルシステム４によって、メモリカード２はフォーマットされている。
【００５９】
図７は、本発明の一実施形態に係るファイルシステム４によってフォーマットされたメモリ空間を示している。図７のメモリ空間５０は、フォーマット対象の記憶媒体の記憶領域のうち、ファイルシステム４が使用可能な領域に一致する。
【００６０】
図７に示すように、ファイルシステム４は、ファイルシステム４がファイルデータを管理するために用いる管理データが割り当てられる領域を、最低位の論理アドレスから所定の範囲の論理アドレスに限定する。すなわち、管理データには、この所定の範囲内の論理アドレスのみが割り当てられる。ここで、管理データとして、ＦＡＴファイルシステムで用いられるものと同じ、パーティションテーブル、ブートセクタ、ＦＡＴ１、ＦＡＴ２、ルートディレクトリエントリ、サブディレクトリエントリが含まれる。
【００６１】
管理データを格納するブロック（管理データブロック５１）には、パーティションテーブルに割り当てられる領域５３、ブートセクタに割り当てられる領域５４、ＦＡＴ１、ＦＡＴ２に割り当てられる領域５５、５６、ルートディレクトリエントリに割り当てられる領域５７、サブディレクトリエントリに割り当てられる領域５８が含まれる。ブロック５３乃至５８が格納するデータは、従来のＦＡＴファイルシステムにおいて定義されているものと同じである。
【００６２】
メモリ空間５０の、管理データブロック５１を除く部分は、ファイルデータの書き込み専用のファイルデータブロック５２である。管理データブロック５１の容量は、メモリ空間５０の大きさと、確保されることが求められるファイルデータブロック５２の大きさとを考慮して決定される。例えば、パーティションテーブル領域５３、ブートセクタ領域５４、ＦＡＴ１領域５５、ＦＡＴ２領域５６、ルートディレクトリエントリ領域５７、サブディレクトリエントリ領域５８の容量は、それぞれ１２１．５ｋＢ、０．５ｋＢ、１２３ｋＢ、１２３ｋＢ、１６ｋＢ、６４ｋＢである。ファイルデータブロック５２の容量は、１００５６３２ｋＢである。
【００６３】
なお、ファイルシステム４は、ＦＡＴファイルシステム（ＦＡＴ１６、３２等の違いを問わない）を基礎としている。さらに、ＦＡＴファイルシステムに限らず、ＦＡＴの拡張を含む類似のファイルシステムを利用することもできる。例えば、管理データを用いてファイルデータを管理し、管理データが頻繁に書き換えられるようなファイルシステムが該当する。
【００６４】
［１−２−３−３］ＵＤＦファイルシステム
次に、図８、図９を用いて、本発明の一実施形態に係るＵＤＦファイルシステム（追記型ファイルシステム）について説明する。本例に係るファイルシステムは、以下に示す形に記憶媒体のメモリ空間をフォーマットする。そして、ファイルシステム４によって、メモリカード２はフォーマットされている。
【００６５】
図８では、例えば、ＤＶＤ−Ｒファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示している。図示するように、メモリ空間５０は、フォーマット対象の記憶媒体の記憶領域のうちファイルシステム４が使用可能な領域に一致し、追記型ファイルシステムにより、フォーマットされている。換言すれば、メモリ空間５０は、純粋な追記型ファイルシステムであるＵＤＦ追記型ファイルシステムによりフォーマットされている。
【００６６】
メモリコントローラ７は、図８に示すメモリ空間５０のアドレス領域において、以前に書き込んだデータのアドレスと同一かそれより小さいアドレスにデータ書き込みを指示された場合、ホスト装置１（外部）に対してライトプロテクトエラー返す制御を行う。即ち、図８に示すファイルデータブロック５０に属する論理アドレスを割り当てられたデータについては、上書きを禁止し、追記のみを許可する。メモリコントローラ７は、割り当て済みの論理アドレスより高位の論理アドレスが割り当てられている場合のみ、書き込み要求を受け付ける。この条件に合致しない書き込み要求に対しては、メモリコントローラ７は、書き込みを行わないとともに、ライトプロテクトエラーを示すステータスをホスト装置１に対して送信する。また、図８では、ファイルが１度、更新、削除、追加された際の状態を示している。
【００６７】
図８に示すように、セクタ番号（０ｘ０００００００）の上から順に、ヴォリュームストラクチャ、ファイルセットディスクリプタ、ルートディレクトリのファイルエントリ、ルートディレクトリのデータが順次配置されている。次いで、１回目に記載されたファイル（オリジナルファイル）、すなわち追加、削除前のファイルのファイルエントリが配置されている。次に、オリジナルファイルのデータが配置されている。次に、１回目の記載時に作成されたＶＡＴ（ＶＡＴ＜１ｓｔ＞）、次に、この１回目のＶＡＴのＩＣＢが配置されている。
【００６８】
次に、更新されたファイルのファイルエントリ、更新されたファイルが配置されている。そして、更新時に作製されたＶＡＴ（ＶＡＴ＜２ｎｄ＞）、この更新時のＶＡＴのＩＣＢが配置される。これ以降は、未書き込み領域が続いている。
【００６９】
図９は、ＶＡＴ＜２ｎｄ＞の一例を示している。図９に示すように、仮想アドレスと論理アドレスが対応付けられている。
【００７０】
ファイルのデータの読み出しの際、ファイルシステムは、最新のＶＡＴ  ＩＣＢを読み出す。ＶＡＴ  ＩＣＢは、上記のように、常に書き込み領域の最後尾に配置しており、図８の例の場合、ＶＡＴ  ＩＣＢ＜２ｎｄ＞にアクセスされる。
【００７１】
ファイルシステムは、ＶＡＴ  ＩＣＢ＜２ｎｄ＞に記載されている最新のＶＡＴの位置を参照の上、ＶＡＴを読み出す。次に、ファイルシステムは、ファイルセットディスクリプタ−にアクセスする。この際、ファイルセットディスクリプタ−の論理アドレスは、仮想アドレス＃０からＶＡＴを用いて求められる。
【００７２】
次に、ファイルシステムは、ファイルセットディスクリプタ−に記載のアドレスから、ルートディレクトリのファイルエントリを読み出す。実際には、ＩＣＢを読み出し、次に、ＩＣＢに記載されているファイルエントリのアドレスにアクセスする。
【００７３】
次に、ファイルシステムは、ルートディレクトリのファイルエントリに記載されている仮想アドレス＃１とＶＡＴを用いて、ルートディレクトリのデータにアクセスする。次に、ファイルシステムは、ルートディレクトリのデータに記載の仮想アドレスから最新ファイルのＩＣＢにアクセスし、このＩＣＢに記載の仮想アドレス＃２およびＶＡＴを用いて最新ファイルのファイルエントリにアクセスする。そして、ファイルエントリに記載のアドレスから、最新ファイルのデータが読み出される。
【００７４】
［１−２−４］ファイルシステム４における管理データ、ファイルデータブロックと書き込み方式との関係
次に、図１０を用いて、管理データブロック５１、ファイルデータブロック５２と、書き込み方式との関係について説明する。
【００７５】
図１０は、管理データブロック５１、ファイルデータブロック５２と書き込み方式との対応を示す図である。図１０に示すように、メモリコントローラ７は、管理データブロック５１に属する論理アドレスに対して更新要求を受けた場合、上書きを行う。ここで、「上書き」とはデータが既に割り当てられている論理アドレスを別のデータに割り当てることが可能な書き込み方式である。以下、管理データブロック５１に属する論理アドレスを上書き型論理アドレスと称する。なお、メモリ６はＮＡＮＤ型フラッシュメモリであるため書き込み済みのデータに対する再書き込みができない。このため、必要に応じて、以下のキャッシュ用物理ブロック（キャッシュブロック）と呼ばれる構成を用いることができる。
【００７６】
上書き型論理アドレスを割り当てられるデータは、管理データであり、頻繁に更新される。このため、頻繁な更新に対して高速な書き込みを行うために、メモリ６中に、キャッシュブロックと呼ばれる追記専用のブロックを設けても良い。キャッシュブロックは、各論理アドレスのデータが本来書き込まれる物理ブロック（オリジナルブロック）に加えて設けられる。
【００７７】
ある所定の論理アドレスのデータは、同じオリジナルブロックに書き込まれる。そして、オリジナルブロックに書き込み済みのデータの更新要求が来る度に、このデータはキャッシュブロック内の空いているページに、低位の物理アドレスから高位の物理アドレスへと順次書き込まれる。このとき、メモリカード２は、ある論理アドレスの最新のデータがキャッシュブロックのどこのページに書き込まれているかを示す対応表を作成しておく。このため、ある論理アドレスに対して頻繁に更新要求が発生しても、引越し処理を行うことを回避して、高速な書き込みを実現できる。キャッシュブロックが用いられる場合、すなわち上書き型論理アドレスについては、１つのセクタの論理アドレスと１つのページの物理アドレスとの対応が管理される。
【００７８】
ファイルデータが小容量である場合、このようなファイルデータに上書き型論理アドレスを割り当てることもできる。
【００７９】
一方、メモリコントローラ７は、ファイルデータブロック５２に属する論理アドレスを割り当てられたデータについては、上書きを禁止し、追記のみを許可する。「追記」とは、データが既に割り当てられている論理アドレスより高位の論理アドレスのみを書き込みデータに割り当てる方式である。すなわち、メモリコントローラ７は、割り当て済みの論理アドレスより高位の論理アドレスが割り当てられている場合のみ、書き込み要求を受け付ける。この条件に合致しない書き込み要求に対しては、メモリコントローラ７は、書き込みを行わないとともに、ライトプロテクトエラーを示すステータスをホスト装置１に対して送信する。以下、ファイルデータブロック５２に属する論理アドレスを追記型論理アドレスと称する。
【００８０】
追記型論理アドレスを割り当てられたデータについては、例えば、所定数の複数の論理アドレスをまとめたもの（論理ブロックと称する）に１つの物理ブロックが割り当てられる。このため、追記型論理アドレスについては、論理ブロックのアドレス（論理ブロックごとに割り当てられる）と物理ブロックのアドレスとの対応が管理される。論理ブロックは、例えば物理ブロックと同じ大きさを有する。
【００８１】
ファイルシステム１０は、ファイルデータを更新する際、割り当て済みの論理アドレスより高位の論理アドレスを割り当てられたファイルデータの書き込みと、管理データの更新をメモリカード２に要求する。
【００８２】
上書き型論理アドレスの範囲を示す情報、例えば最高位の上書き型論理アドレスが、システムデータ領域２１に書き込まれている。最高位上書き型論理アドレスの情報は、例えば、メモリカード２がフォーマットされる際に書き込まれる。最低位の追記型論理アドレスを用いて、上書き型論理アドレスと追記型論理アドレスとの境界を示すことも可能である。
【００８３】
［１−２−５］書き込み方式と書き込みモードとの対応について
次に、図１１を用いて、書き込み方式と書き込みモードとの対応について説明する。図１１は、本発明の一実施形態に係るメモリコントローラの書き込み方式と書き込みモードとの対応を示している。
【００８４】
図１１に示すように、メモリコントローラ７は、上書き型論理アドレスを割り当てられた書き込みデータを２値モードでメモリ６に書き込み、追記型論理アドレスを割り当てられた書き込みデータを多値モードでメモリ６に書き込むことができる。したがって、容量が少なく且つ頻繁に更新を要求される管理データが、小容量だが高速書き込みが可能で書き換え頻度への耐性も高い２値モードで書き込まれ、容量が大きいファイルデータが、大容量だが低速書き込みの多値モードで書き込まれる。このようにデータの特性に応じた書き込みモードを選択することによって、メモリカード２に高速で書き込みつつ、大きな記憶容量を確保することができる。より、一般的な記載として、管理データが１つのメモリセルがｍ（ｍは１以上の整数）ビットのデータを記憶するように書き込まれ、ファイルデータが１つのメモリセルがｎ（ｎはｎ＞ｍの整数）ビットのデータを記憶するように書き込まれることができる。
【００８５】
各物理ブロックが、２値モード書き込み用または多値モード書き込み用へと分類されてもよい。具体的には、メモリコントローラ７は、例えば最低位の物理アドレスから所定の境界までに含まれる物理ブロックを２値モードでの書き込み用に用い、この境界から最高位の物理アドレスまでに含まれる物理ブロックを多値モードでの書き込み用に用いることができる。
【００８６】
多値モードでの書き込みの際に、２値モード用の物理ブロックをバッファ３２として使用することも可能である。また、上記のように、メモリコントローラ７は、制御データをユーザデータ領域２４に書き込む。メモリコントローラ７は、この制御データも２値モードで物理ブロックに書き込み、上書きを行うこともできる。
【００８７】
また、上記のように、保護データ領域２３とユーザデータ領域２４はホスト装置１から別のボリュームとして論理フォーマットされている。そして、保護データ領域２３は、一般に、その容量が小さく、保護データ領域２３に書き込まれるファイルデータは、頻繁に更新される。そこで、メモリコントローラ７は、保護データ領域２３には、２値モードで書き込み、上書きも許可されている。システムデータ領域２１、機密データ領域２２にも、同様に、２値モードで書きまれ、上書きが許可される。
【００８８】
なお、上記のように保護データ領域２３とユーザデータ領域２４とが別のボリュームに属するのではなく、保護データ領域２３とユーザデータ領域２４とが相互に異なるパーティションに属する構成も考えられる。この場合、各パーティションごとに、全てのデータに対して上書きが許可されている従来のファイルシステムと、管理データのみに上書きが許可されている本発明の実施形態に係るファイルシステムと、のいずれかが適用されるという手法を取ることができる。
【００８９】
［１−３］ＳＤインタフェースの構成
次に、図１２乃至図１８を用いて、ＳＤインタフェースの構成について説明する。
【００９０】
［１−３−１］最終割り当て論理アドレスを授受するための手法
ホスト装置１（ファイルシステム４）は、ファイルデータを追記方式で書き込むために、最後に割り当てられた論理アドレス（最終割り当て論理アドレス）を知得する必要がある。そこで、最終割り当て論理アドレスを授受するためのコマンドが、ＳＤインタフェース５、１１において設けられる。図１２、図１３は、最終割り当て論理アドレスを授受するための構成を示す図である。
【００９１】
メモリコントローラ７は、後述のように、書き込みの際に、最後に割り当てられた論理アドレスをＲＡＭ１４上に書き込む。
【００９２】
図１２に示すように、ホスト装置１は、最終割り当て論理アドレスの送信を要求するコマンドをメモリコントローラ７に発行する。メモリコントローラ７は、このコマンドを受け取ると、ＲＡＭ１４上に記憶されている、最終割り当て論理アドレスをレスポンスとして、ホスト装置１に送信する。ホスト装置１は、このレスポンスによって、最終割り当て論理アドレスを知得する。そして、ホスト装置１は、この論理アドレスの次の論理アドレスから、割り当てを開始することよって、メモリカード２への追記を行うことができる。
【００９３】
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図１３に示すように、メモリコントローラ７が特定の論理アドレスの読み出し要求を受けた際に、読み出しデータとして最終割り当て論理アドレスをホスト装置１に送信する。この特定の論理アドレスとして、例えば、パーティションテーブルブロック５３の最終セクタ内の最後の８バイトとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のＵＳＢ（universal serial bus）  ＲＷ（リーダライタ）を介してメモリカード２が用いられる場合も、ＵＳＢ  ＲＷを挿入されているＰＣ（personal computer）上のソフトウェアを用いて最終書き込み論理アドレスのメモリカード２からの読み出しが可能となる。
【００９４】
［１−３−２］データ書き込みの許可の認証を行うための手法
従来のファイルシステムを介して本発明の一実施形態に係るメモリカード２への書き込みが行われると、管理データに不整合が生じて、この結果、ファイルの内容が破壊される恐れが有る。そこで、メモリカード２への書き込みの認証を行うためのコマンドが、ＳＤインタフェース５、１１において設けられる。図１４、図１５は、データ書き込みの許可の認証を行うための構成を示す図である。
【００９５】
図１４に示すように、メモリコントローラ７は、初期化後に、ホスト装置１からのデータ書き込み許可要求コマンドの送信を待つ。メモリコントローラ７がこのコマンドを受けた場合、ホスト装置１は、このコマンドをサポートしており、すなわち、本発明の一実施形態に係るファイルシステム４を搭載しているので、メモリカード２は書き込み要求を受け付ける。
【００９６】
一方、データ書き込み許可要求コマンドを受信しなかった場合は、メモリコントローラ７は、ホスト装置１からの書き込み要求に対して常にライトプロテクトエラー信号を返す。この技術により、メモリカード２のデータが、本発明の一実施形態に係るファイルシステム４でないファイルシステムによって破壊されることが回避される。
【００９７】
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図１５に示すように、あるホスト装置から、メモリコントローラ７が特定の論理アドレスへの特定のデータの書き込み要求を受けると、メモリカード２は、以降、このホスト装置からの書き込み要求を受け付ける。特定の論理アドレスとして、例えば、パーティションテーブルブロック５３の最終セクタ内の最初の８バイトとすることができる。特定のデータとして、例えば、０ｘ０１、０ｘ２３、０ｘ４５、０ｘ６７、０ｘ８９、０ｘＡＢ、０ｘＣＤ、０ｘＥＦの少なくとも１つとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のＵＳＢ  ＲＷを介してメモリカード２が用いられる場合も、ＵＳＢ  ＲＷを挿入されているＰＣ上のソフトウェアを介してメモリカード２への書き込みが可能となる。
【００９８】
［１−３−３］上書き型論理アドレスの範囲をホスト装置が知得するための手法
ホスト装置１（ファイルシステム４）は、上書き型論理アドレスと追記型論理アドレスの境界を知得する必要がある。そこで、最高位の上書き型論理アドレスを授受するためのコマンドが、ＳＤインタフェース５、１１において設けられる。図１６、図１７は、最高位上書き型論理アドレスをホスト装置が知得するための構成を示す図である。なお、上書き型論理アドレスと追記型論理アドレスとの境界を示す手法として、最高位上書き型論理アドレスに代えて最低位の追記型論理アドレスを用いて、以下の処理を行うことも可能である。
【００９９】
図１６に示すように、ホスト装置１は、最高位上書き型論理アドレスの送信を要求するコマンドをメモリコントローラ７に発行する。メモリコントローラ７は、このコマンドを受け取ると、システムデータ領域２１に記憶されている、最高位上書き型論理アドレスをレスポンスとして、ホスト装置１に送信する。
【０１００】
ホスト装置１は、このコマンドを使用して上書き型論理アドレスの範囲を知ることができる。ホスト装置１のファイルシステム１０は、最高位上書き型論理アドレスを参照して、このアドレスより低位の論理アドレス、すなわち、上書き型論理アドレスに、新規のファイルやディレクトリエントリを作成する。
【０１０１】
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図１７に示すように、メモリコントローラ７が特定の論理アドレスの読み出し要求を受けた際に、読み出しデータとして最高位上書き型論理アドレスをホスト装置１に送信する。特定の論理アドレスとして、例えば、パーティションテーブルブロック５３の最終セクタ内の最後から２番目の８バイトとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のＵＳＢ  ＲＷを介してメモリカード２が用いられる場合も、ＵＳＢ  ＲＷを挿入されているＰＣ上のソフトウェアを用いて最高位上書き型論理アドレスのメモリカード２からの読み出しが可能となる。
【０１０２】
［１−３−４］カードタイプフラグ
メモリカード２のタイプとそれに応じた書き込み方式を示すフラグがレジスタ１５のうちのレジスタＣＳＤに記載される。図１８は、レジスタＣＳＤの詳細の一例を示している。
【０１０３】
図１８に示すように、ＣＳＤに従来から定義されている領域に加えて（定義されていない領域を用いて）、３つの領域が定義される。第０乃至第４ビットが定義済みとして、新たに定義されるビットＣＴ、ＯＷ、ＦＣが、第５、６、７ビットに設けられる例が示されている。
【０１０４】
ビットＣＴ（レジスタＣＴ）は、管理データへの論理アドレスの割り当てに対する制限について示している。例えば、“０”は、メモリカード２への書き込みの際、管理データ（特に、ディレクトリエントリ）にどの論理アドレスが割り当てられても構わないことを示している。一方、例えば“１”は、本発明の一実施形態のように、管理データに、所定の範囲の論理アドレスが割り当てられなければならないことを示している。
【０１０５】
ビットＯＷ（レジスタＯＷ）は、ファイルデータの上書きの制限について示している。例えば“０”は、ファイルデータの上書きに制限が課されていないことを示している。一方、例えば、“１”は、本発明に係る一実施形態のように、一部の論理アドレス等について上書きが許可されていない（追記のみ許可）ことを示している。
【０１０６】
ビットＦＣ（レジスタＦＣ）は、メモリカード２が、ＦＡＴを書き換える可能性の有無について示している。メモリコントローラによっては、その動作の特性上、ファイルデータを書き込んだ後で自らがＦＡＴを書き換えることがある。この場合、ホスト装置のファイルシステムは、データの書き込み後にＦＡＴを読み出す処理を行う必要がある。このため、ホスト装置のファイルシステムが、ＦＡＴの読み出しが必要かを知得できるように、レジスタＦＣが設けられている。例えば“０”は、メモリカード２がＦＡＴを書き換えることがない（ファイルシステムによるＦＡＴの再読み出し不要）ことを示す。一方、例えば“１”は、メモリカード２がＦＡＴを書き換えることがある（ファイルシステムによるＦＡＴの再読み出し要）ことを示す。
【０１０７】
本発明の一実施形態に係るメモリカード２では、ＣＴ＝１、ＯＷ＝１、ＦＣ＝０である。
【０１０８】
以上のビットが設けられることにより、ファイルシステムが、メモリカード２の特性を容易に知得することができる。
【０１０９】
［２］動作
次に、図１９乃至図２３を参照して、ホスト装置１およびメモリカード２の動作について説明する。
【０１１０】
［２−１］メモリカードの初期化
次に、図１９を用いて、メモリカード２の初期化の動作について説明する。図１９は、本発明の一実施形態に係るメモリカードの初期化のフローチャートである。
【０１１１】
メモリコントローラ７は、どの追記型論理アドレスまでデータが割り当てられているかを初期化処理において知るための幾つかの情報を、適宜、メモリ６に書き込んでいる。例えば、追記型論理アドレスを割り当てられたファイルデータの書き込みの際、メモリコントローラ７は、ファイルデータの書き込みに加えて、各ページの冗長領域に書き込み済みを示すフラグを書き込む。また、最後に割り当てられた論理アドレスを含む論理ブロックのアドレスがシステムデータ領域２１に保存されている。
【０１１２】
図１９に示すように、電源供給の開始に際して初期化コマンドを受け取ると、メモリコントローラ７は、初期化処理を開始する。初期化処理Ｓ１は、従来のメモリカードと同じ初期化処理（ステップＳ１ａ）と、追記型論理アドレスの内で割り当て済みの最終の論理アドレスを計算し、その論理アドレスをＲＡＭ１４に書き込む処理（ステップ１ｂ乃至ステップＳ１ｄ）からなる。
【０１１３】
追記型論理アドレスについては、論理ブロックと物理ブロックとの対応が管理されているのみなので、以下の方法によって、最後に割り当てられた１つの論理アドレスが特定される。まず、ステップＳ１ｂにおいて、メモリコントローラ７は、システムデータ領域２１から、最後に割り当てられた論理アドレスを包含する論理ブロックのアドレス（最終割り当て論理ブロックアドレス）を知得する。
【０１１４】
次に、ステップＳ１ｃにおいて、メモリコントローラ７は、最終割り当て論理ブロックに割り当てられている物理ブロック（最終書き込み物理ブロック）内の各ページの冗長領域を検査して、最後に書き込まれたページの物理アドレスを知得する。この結果、メモリコントローラ７は、最終書き込み物理ブロック内の書き込み済みページの数を知得する。次に、ステップＳ１ｄにおいて、メモリコントローラ７は、（最終書き込み論理ブロックアドレスより低位のアドレスの全論理ブロック数×論理ブロック当たりの論理アドレス数＋最終書き込み物理ブロック内の書き込みページ数）によって、最後に割り当てられた論理アドレスを知得する。次に、ステップＳ５において、最後に割り当てられた論理アドレス（最終割り当て論理アドレス）をＲＡＭ１４上に書き込む。
【０１１５】
［２−２］  書き込み
次に、図２０を用いて、メモリカード２内での書き込み動作について説明する。図２０は、本発明の一実施形態に係るメモリカード内での書き込み動作のフローチャートである。
【０１１６】
図２０に示すように、ステップＳ１１において、メモリコントローラ７は、書き込みコマンドと、論理アドレスを割り当てられた書き込みデータとを受信する。
【０１１７】
ステップＳ１２において、メモリコントローラ７は、書き込みデータに割り当てられた論理アドレスが、上書き型論理アドレスであるか否かを判断する。上書き型論理アドレスを割り当てられた書き込みデータであった場合、処理はステップＳ１３に移行する。ステップＳ１３において、メモリコントローラ７は、メモリ６にデータを書き込む。ステップＳ１３において書き込まれるデータは管理データであり、頻繁に上書きされることが予想される。そこで、メモリコントローラ７は、項目［１−２−４］に記載したキャッシュブロックを用いて書き込みを行ってもよい。
【０１１８】
一方、ステップＳ１２での判断の結果、書き込みデータの論理アドレスが追記型であった場合、処理はステップＳ１４に移行する。ステップＳ１４において、メモリコントローラ７は、ＲＡＭ１４を参照して、書き込みデータの論理アドレスが、最終割り当て論理アドレスより大きいか（より高位か）否かを判定する。
【０１１９】
ステップＳ１４での判断の結果、書き込みデータの論理アドレスが最終割り当て論理アドレスより高位でなかった場合、すなわち、上書き要求であった場合、処理はステップＳ１５に移行する。ステップＳ１５において、メモリコントローラ７は、ライトプロテクトエラーをホスト装置１に送信し、書き込みを拒否した上で、書き込み動作を終了する。
【０１２０】
一方、ステップＳ１４での判断の結果、書き込みデータの論理アドレスが最終割り当て論理アドレスより高位であった場合、処理はステップＳ１６に移行する。書き込みデータは、最後に書き込まれたページを含んでいる物理ブロックとは別の物理ブロック内のページに書き込まれることが求められることがある。ステップＳ１６において、書き込みデータが、最後に書き込まれたページを含んでいる物理ブロック内のページ書き込まれるべきか、別の物理ブロックに書き込まれるべきかが判断される。
【０１２１】
最終書き込みページを含んでいる物理ブロック内のページに書き込まれる場合は、処理はステップＳ１７に移行する。ステップＳ１７において、メモリコントローラ７は、割り当てられた物理ブロック内のページに、書き込みデータを書き込む。この際、メモリコントローラ７は、図２１に示すように、書き込まれるページの冗長領域のビットに、データが書き込み済みの旨のフラグ（例えば“０”）を書き込む。なお、ここで書き込まれる書き込みデータはファイルデータなので、メモリコントローラ７は、多値モードで書き込みデータを書き込むことができる。
【０１２２】
次に、ステップＳ１８において、メモリコントローラ７は、最終割り当て論理アドレスをＲＡＭ１４に書き込む。
【０１２３】
一方、ステップＳ１６において、最終書き込みページを含んでいる物理ブロックとは別の物理ブロック内のページに書き込まれる場合、処理はステップＳ１９に移行する。ステップＳ１９において、書き込みデータが書き込まれる物理ブロックが割り当てられる。ここで、消去済みの物理ブロックが無い場合、メモリコントローラ７は、有効なデータを保持していない物理ブロックを消去し、この物理ブロックに書き込みデータを書き込む。
【０１２４】
次に、ステップＳ２０において、メモリコントローラ７は、書き込みデータが書き込まれた物理ブロックに対応する論理ブロックのアドレスを、最終割り当て論理ブロックアドレスとして設定する。そして、最終書き込み論理ブロックアドレスが、メモリコントローラ７の制御データの一部として、メモリ６に書き込まれる。この後、処理はステップＳ１７に移行する。
【０１２５】
なお、最終割り当て論理アドレスが最高位の追記型論理アドレスと一致していた場合、メモリコントローラ７は、最終割り当て論理アドレスを、最低位の追記型論理アドレスより１つ低位のアドレスに差し替える。すなわち、全ての追記型論理アドレスにデータが割り当てられていない状態を擬似的に作り出す。この結果、メモリコントローラ７による追記が継続される。しかしながら、メモリ６には、最低位から連続する追記型論理アドレスをもともと割り当てられていたデータを物理ブロック（Ａ）において保存しているので、図２２に示すように、メモリコントローラ７は、書き込みデータを通常用意されている予備の物理ブロック（Ｂ）に書き込む。このため、最新のデータの書き込みを行っている論理ブロックには、２つの物理ブロック（Ａ）、（Ｂ）が割り当てられる。この物理ブロック（Ｂ）へのデータ書き込みが終了して、さらに別の物理ブロックへの書き込みが発生すると、予備用であった物理ブロック（Ｂ）が、本来の通常の物理ブロックとして扱われ、物理ブロック（Ａ）が予備用として扱われる。
【０１２６】
また、上記のように、ファイルシステム４はファイルデータには追記方式で論理アドレスを割り当てる。このため、通常は、書き込みデータの論理アドレスは連続している。しかしながら、そうでなく、一部の論理アドレスが飛ばされる場合も起こり得る。例えば、図２１に示すように、連続する論理アドレスＡ乃至Ｅにおいて、論理アドレスＡ、Ｂを割り当てられたデータの書き込み後、論理アドレスＥを割り当てられたデータの書き込みが要求される場合がある。この場合、論理アドレスＣ、Ｄを割り当てられたデータが存在していたとしても、メモリカード２は、これらのデータの内容を保証しない。しかしながら、上記のように、通常は、ファイルデータの論理アドレスは連続しているので、このデータが保証されないという制約は大きな問題とならない。むしろ、飛ばされた論理アドレスのデータを保証すると、メモリカード２は、引越し処理を行わなければならない。よって、この制約によって、大きな問題を引き起こさずに、メモリカード２の書き込み速度の低下を回避できる。
【０１２７】
［２−３−１］  ファイルシステム４の割り当て動作（１）
次に、図２３を参照して、ファイルシステム４による、書き込みデータへの論理アドレスの割り当て動作について説明する。図２３は、本発明の一実施形態に係るファイルシステムによる割り当て動作を示すフローチャートである。
【０１２８】
ファイルシステム４は、書き込みデータへの論理アドレスの割り当てに際して、ステップＳ２１において、レジスタＣＴを参照して、メモリカード２のタイプを判断する。管理データに割り当てることができる論理アドレスの制約がメモリカード２に課されていない場合、すなわち例えばレジスタＣＴ１が０の場合、処理はステップＳ２２に移行する。ステップＳ２２において、ファイルシステム４は、従来のＦＡＴファイルシステムと同じ方法によって、書き込みデータに論理アドレスを割り当てる。
【０１２９】
一方、ステップＳ２１の判断の結果、管理データに割り当てることができる論理アドレスに制約がある場合、処理はステップＳ２３に移行する。
【０１３０】
ステップＳ２３において、ファイルシステム４は、データ書き込み認証コマンドをメモリカード２に発行し、書き込みを有効にする。
【０１３１】
次に、ステップＳ２４において、ファイルシステム４は、レジスタＣＴを参照して、ファイルデータの上書きが可能か否かを判断する。上書きが許可されている場合、すなわち例えばレジスタＯＷが０の場合、処理はステップＳ２５に移行する。
【０１３２】
ステップＳ２５において、ファイルシステム４は、未割り当ての論理アドレスを探索する。このとき、書き込みデータが割り当てられる論理アドレスの順番の前後、連続しているか、していないか等は問われない。次に、ステップＳ２６において、ファイルシステム４は、探索された未割り当ての論理アドレスを書き込みデータに割り当てる。次に、ステップＳ２７において、ファイルシステム４は、ステップＳ２６での割り当てが反映されるように、ＦＡＴ、ディレクトリエントリの更新を行う。次に、処理はステップＳ２８に移行する。
【０１３３】
一方、ステップＳ２４での判断の結果、上書きが禁止されている場合、処理はステップＳ３１に移行する。ステップＳ３１において、ファイルシステム４は、最終割り当て論理アドレス送信要求コマンドをメモリカード２に発行して、最終割り当て論理アドレスを知得する。次に、ステップＳ３２において、ファイルシステム４は、最終割り当て論理アドレスの次の論理アドレス（およびこれに続く論理アドレス）を書き込みデータに割り当てる。次に、ステップＳ３３において、ファイルシステム４は、ステップＳ３２での割り当てが反映されるように、ＦＡＴ、ディレクトリエントリの更新を行う。次に、処理はステップＳ２８に移行する。
【０１３４】
ステップＳ２８において、ファイルシステム４は、レジスタＦＣを参照して、メモリカード２がＦＡＴを書き換えることがあるか否かを判断する。メモリカード２がＦＡＴを書き換えることが無い場合、処理は終了する。一方、ＦＡＴを書き換えることがあるメモリカード２の場合、ファイルシステム４は、ＦＡＴの内容をメモリカード２から読み出して、その内容を自身が把握しているＦＡＴに反映させる。この後、処理は終了する。
【０１３５】
［２−３−２］  ファイルシステム４の割り当て動作（２）
次に、図２４を参照して、ファイルシステム４による、書き込みデータへの論理アドレスの割り当て動作について説明する。図２４は、本発明の一実施形態に係る追記型ＵＤＦのファイルシステムによる割り当て動作を示すフローチャートである。この説明において、上記［２−３−１］と実施的に重複するステップＳ２１〜Ｓ２９部分の説明を省略する。
【０１３６】
このソフトウェアは、カードタイプのフラグを参照してカードタイプに応じたファイル書込みを行う。即ち、上記ステップＳ２４において、追記が許可されている場合、レジスタＯＷが１の場合、処理はステップＳ４１に移行する。
【０１３７】
尚、上記と同様に、このソフトウェアによってファイル書き込みを行うホスト装置は、ステップＳ２１において、カードの初期化処理の後に、CT=1であることを検出すると、専用のデータ書込み許可コマンドをカードに発行してカードを書き込み可能状態にする。
【０１３８】
ステップＳ４１において、ファイルシステム４は、「最終書き込み済みアドレス取得コマンド」によって、カードから最終書き込み済みアドレスを取得する。
【０１３９】
次に、ステップＳ４２において、ファイルシステム４は、上記最終書き込み済アドレスの直前にあるＶＡＴ  ＩＣＢを読み込む。
【０１４０】
次に、ステップＳ４３において、ファイルシステム４は、読み込んだ上記ＶＡＴ  ＩＣＢに基づいて、最新のファイル管理情報を読み込む。
【０１４１】
次に、ステップＳ４４において、ファイルシステム４は、ＵＤＦ方式でファイルを追記する。即ち、ＵＤＦ（追記型）のみにフォーマットされたメモリ空間に順次データを追記していき、ファイルを更新する。
【０１４２】
次に、ステップＳ４５において、ファイルシステム４は、ＶＡＴ  ＩＣＢを追記する。次に、処理は上記ステップＳ２８に移行し、処理が終了する。
【０１４３】
上記のように、本例の場合に説明してステップＳ４１〜Ｓ４５の動作によれば、ＦＡＴ領域やディレクトリエントリへのデータの上書きを必要としないため、上書き領域は使用しなくてもよい。したがって、本例のように追記ＵＤＦのみで使用する場合、例えば、上書き領域が存在せず通常ユーザデータ領域の全てが追記型でフォーマットされたアドレス領域であるメモリ空間に対するメモリカード等に対して適用する場合に、より有利である。
【０１４４】
尚、本例では、ファイルのライト動作について説明した。しかし、ファイルのライト動作についても同様に適用でき、同様の効果が得られる。ファイルのリードについて適用する場合、ＵＤＦタイプのファイルリードソフトウェアが必要である。
【０１４５】
［２−４］  読み出し
次に、データの読み出し動作について説明する。読み出し動作は、従来のメモリカードと同じである。すなわち、ホスト装置１は、本発明の一実施形態に係るメモリカード２であることか否かを意識せずに、読み出しコマンドをメモリカード２に供給する。メモリコントローラ７は、読み出しデータの論理アドレスを、論物変換テーブルを用いて物理アドレスに変換する。次いで、メモリカード２は、求められた物理アドレスのページ（物理ブロック）からデータを読み出してホスト装置１に出力する。
【０１４６】
項目［２−２］で述べたように、１つの論理ブロックに対して２つの物理ブロック（Ａ）、（Ｂ）が割り当てられている場合、適宜、これら２つの物理ブロックから、読み出しデータが読み出される。
【０１４７】
［２−５］  ファイル削除後のメモリの空き領域の増加動作
次に、ファイル削除後のメモリの空き領域の増加動作について、図２５乃至図３０を用いて説明する。ここでは、図２５に示す動作フローに則して説明する。
【０１４８】
まず、ホスト装置１は、ファイル削除を行う。この際の論理アドレス空間は、例えば、図２６のように示される。図示するように、ここではＵＤＦ−ＶＡＴタイプの追記ファイルシステムでフォーマットされたファイル構成のうち、ファイル（FILE2）を、論理的に削除する（”unused”）場合を一例に挙げて説明する。
【０１４９】
図２６に示すように、最終書込み済アドレスに書き決まれた新たなＶＡＴ（Virtual Allocation Table）(new)によって、ルートディレクトリのＩＣＢへの参照アドレスが変更されており、新たに追記されたルートディレクトリのＩＣＢ（File Entry for Root directory (new)）が以前のものに代わって参照される。この新たなルートディレクトリのＩＣＢには、削除するファイル（FILE2）に対するディレクトリ情(ＦＩＤ)への参照が含まれておらず、ファイルシステム上はFILE2が存在しない。そのため、論理的にFILE2が削除されたことになる。
【０１５０】
また、この例では、ルートディレクトリに３つのファイル（FILE1, FILE2, FILE3）が書き込まれている。それぞれのファイルはFile Entry (ＩＣＢ)と呼ばれるファイル管理情報によって、ファイル本体が論理アドレス上のどこのアドレス範囲にあるかが示される。これらのファイルのＩＣＢの位置は、ＦＩＤと呼ばれるディレクトリ情報によって、どこの論理アドレスに書かれているかが示される。ディレクトリ情報の位置はルートディレクトリ用のＩＣＢによって、どこの論理アドレスに書かれているかが示される。ルートディレクトリ用のＩＣＢは論理アドレス上の固定位置にある、ファイルセットディスクリプタによってどこの論理アドレスにあるかが示される。
【０１５１】
また、上記ＶＡＴは、論理アドレス上の書き込み住み領域の最後に書き込まれている仮想アドレスＶＡ（Virtual Address）と論理アドレスＬＡ（Logical Address）の変換テーブルである。但し、より実際には、ＶＡＴもＶＡＴ本体とＶＡＴ用のＩＣＢ(ＶＡＴ ＩＣＢ)によって構成されるが、ここでは説明を簡単にするために両方を合わせてＶＡＴと記述する。ファイルセットディスクリプタからルートディレクトリのＩＣＢへのアドレス参照、及び、各ＦＩＤから各ファイルのＩＣＢへのアドレス参照は、実際にはＶＡＴに書き込まれている変換テーブルによって変換されたものが使用される。従って、新たなＶＡＴを書き込み済領域の最後に追記して、ＶＡＴの内容を変更することで、各ＩＣＢへのファイルセットディスクリプタやＦＩＤ自体の値を上書きによって変更することなく、ルートディレクトリのＩＣＢへのアドレス参照、及び、各ファイルのＩＣＢへのアドレス参照を変更して別のＩＣＢを指し示すようにすることができる。このうに、ＵＤＦ−ＶＡＴではこれによって、追記によるファイルの書き換えやファイルの削除を実現している。
【０１５２】
（ステップＳ５１）
図２７に示すように、ホスト装置１は、ファイル構成上不要となったアドレス範囲（図２６中で”unused”と記してある領域）の論理アドレス範囲（複数個所）をパラメータとして、「空き領域拡張コマンド（論理アドレス範囲情報）ＣＯＭ１」を、メモリカード２に対して発行する。ここで、「空き領域拡張コマンドＣＯＭ１」は、現行の本例で示すメモリカード（例えば、ＳＤカード（登録商標）等）の仕様にはないコマンドであり、新たに定義すべき専用コマンドである。
【０１５３】
（ステップＳ５２）
続いて、メモリカード２は、発行された上記空き領域拡張コマンド（ＣＯＭ１）を受け付ける。
【０１５４】
（ステップＳ５３）
続いて、メモリカード２は、指定された不要な論理アドレス範囲に含まれるＮＡＮＤ型フラッシュメモリ６内の物理ブロックを検索する。より具体的には、メモリコントローラ７は、不要として指定された論理アドレス範囲に含まれるＮＡＮＤ型フラッシュメモリ６内の消去ブロックがあるかどうかを調べる。この際、メモリコントローラ７は、論理アドレス−物理アドレス変換テーブルを参照する。
【０１５５】
（ステップＳ５４）
続いて、メモリカード２は、対象範囲に１以上の物理ブロックがあるか否かを検索する。この検索の結果、１以上の物理ブロックが検索されない場合には、ステップＳ５６に続く。
【０１５６】
（ステップＳ５５）
続いて、メモリカード２は、上記ステップＳ５４の検索の結果、当該の消去ブロックが１つ以上ある場合は、当該の消去ブロックを消去し、そのブロックをそれまでの最終論理アドレスの後ろに割り当てる。それに合わせて、メモリコントローラ７は、ＮＡＮＤ型フラッシュメモリ６に記憶している論理アドレス−物理アドレス変換テーブルと最終論理アドレスを変更する。
【０１５７】
このステップＳ５５の際の論理アドレス空間は、例えば、図２８のように示される。図示するように、上記ステップＳ５４の検索の結果、当該の消去ブロック（FILE2（”unused”））が１つ以上ある場合は、当該の消去ブロック（FILE2）を消去し、そのブロックをそれまでの最終論理アドレスの後ろに割り当てる（例えば、ＬＢＡ２５５→ＬＢＡ２５６）。それに合わせて、メモリコントローラ７は、ＮＡＮＤ型フラッシュメモリ６に記憶している論理アドレス−物理アドレス変換テーブルと最終論理アドレスを変更する（ＬＢＡ２５５→ＬＢＡ２５６）。
【０１５８】
図２８に示すように、図２６で示したこの動作前の論理アドレス空間に比べ、斜線で示す拡張した論理アドレス分unrecorded2（ＬＢＡ２５５→ＬＢＡ２５６）について、空き領域を増加することができる。このため、本例のようなＵＤＦ−ＶＡＴの追記型ファイルシステムで、実際の論理アドレス上の削除した消去ブロックFILE2本体情報が残っている場合であっても、空き領域を増加することができる。
【０１５９】
加えて、本例の場合、ＮＡＮＤ型フラッシュメモリ６の空き領域に対する処理は、消去動作のみである。このため、不要となったデータ領域を詰めるようにして、不要となったデータアドレス領域以降のデータを書き直す必要があるガベージコレクションのような大量のデータ書き込みは発生しない。その結果、処理を高速化でき、利便性を向上できる。さらに、ＮＡＮＤ型フラッシュメモリ６への書き込み回数も低減できるというメリットもある。
【０１６０】
（ステップＳ５６）
続いて、図２７に示すように、メモリコントローラ６は、ステップＳ５５の処理が終了した後の変更後の最終論理アドレス（例えば、ＬＢＡ２５６）を、「空き領域拡張コマンド（ＣＯＭ１）」のレスポンスとして、ホスト装置１に通知する。
【０１６１】
（ステップＳ５７）
続いて、ホスト装置１は、メモリカード２から通知された上記最終論理アドレス（ＬＢＡ２５６）をホスト装置１内のメモリに記憶し、それ以降のカードアクセスの際に参照する。また、ホスト装置１は、通知された最終論理アドレス（ＬＢＡ２５６）の情報に基づいて、メモリ空き領域を再計算し、以後のファイルアクセスの際に使用する。
【０１６２】
以上のステップにより、本例のファイル削除後のメモリの空き領域の増加動作を終了する（Ｅｎｄ）。
【０１６３】
［変形例（ページ単位の場合）］  
次に、図２９を用いて、ファイル削除後のメモリの空き領域の増加動作をページ単位で行う一例を説明する。この説明において、上記の説明と重複する部分の説明を省略する。
【０１６４】
上記例では、論理アドレス−物理アドレス変換を消去ブロック単位で管理し、消去ブロック単位で不要領域を検索する例を示した。ここでは、より細かいページ単位で論理アドレス−物理アドレス変換を管理するようなメモリコントローラ７が、ページ単位で不要領域を検索する実施例である。
【０１６５】
図２９に示すように、この場合では、例えば、上記ステップＳ５５の際に、メモリコントローラ７が、不要ページＰ０を一つの消去ブロック（集中管理ブロック）Ｂｌｏｃｋｎにまとめるように一部データである不要ページＰ０を移動させる。
【０１６６】
続いて、メモリコントローラ７は、その消去ブロック（集中管理ブロック）Ｂｌｏｃｋｎを、拡張論理アドレスに割り当てる（例えば、ＬＰＡ２５５→ＬＰＡ２５６）。
【０１６７】
上記のように、この変形例に係るメモリシステムおよびそのホスト装置であれば、より細かいページ単位でデータを消去し、空き領域を増加するように制御することができる点で有利である。
【０１６８】
［初期化］
ここで、上述の第１の実施形態および変形例に係るファイル削除後の空き領域拡張動作を繰り返していくと、最終論理アドレスが次第に大きくなっていき、メモリカード２のバス仕様で、処理可能な最大論理アドレスを超えてしまう場合が考えられる。
【０１６９】
そうなった場合に、メモリカード２にデータを追記型で追加してデータを書き込むためには、メモリカード２を再フォーマットする必要がある。尚、その際、書き込み済のデータは失われる。
【０１７０】
この再フォーマットの際に、ＮＡＮＤ型フラッシュメモリ６の物理ブロックの論理アドレスへの割り当てを初期状態に戻し、最終論理アドレスを初期状態に戻す必要がある。そのため、「論理アドレス初期化コマンド」を新たに定義する。
【０１７１】
即ち、ホスト装置１は、再フォーマットの前に、「論理アドレス初期化コマンド」をメモリカード２に発行する。
【０１７２】
続いて、メモリコントローラ７は、その「論理アドレス初期化コマンド」を受けて、ユーザ領域のＮＡＮＤ型フラッシュメモリ６の物理ブロックをすべて消去して、ＮＡＮＤ型フラッシュメモリ６に書き込んでいる、ユーザ領域に対する論理アドレス−物理アドレス変換テーブルと、最終論理アドレスとを初期状態に戻す。
【０１７３】
このため、ＮＡＮＤ型フラッシュメモリ６の処理可能な最大論理アドレスを超えた場合であっても、メモリカード２を再フォーマットすることができ、メモリカード２にデータをさらに追記型で追加して書き込むことができる点で有利である。
【０１７４】
［応用例］
尚、上記の説明においては、ＳＤカード（登録商標）を代表例とし、ＵＤＦ−ＶＡＴタイプの追記ファイルシステムの実施例を一例として説明した。しかし、同様の別のフラッシュメモリデバイスや、別の追記型ファイルシステムにも同様に適用でき、同様の効果を得ることが可能である。
【０１７５】
［３］第１の実施形態および変形例に係る効果
第１の実施形態および変形例に係るメモリシステムおよびそのホスト装置によれば、少なくとも下記（１）の効果が得られる。
【０１７６】
（１）処理を高速化でき、利便性を向上できる。  
上記のように、本例に係るメモリシステムは、外部（ホスト装置）１からのコマンド（空き容量拡張コマンドＣＯＭ１）に応じて、不要となった不揮発性メモリ６のデータ（FILE2）を消去し、当該不要となったデータ（FILE2）を論理アドレスの一部に割り当てられたメモリ領域に割り当てなおす（ＬＢＡ２５５→ＬＢＡ２５６）ことで、前記論理アドレスの最大値を拡張するように、不揮発性メモリ６を制御するメモリコントローラ７を備える。
【０１７７】
さらに、本例に係るホスト装置１は、追記型ファイルシステムにフォーマットされたメモリシステム２のホスト装置であって、ファイル（FILE2）削除後に、前記メモリシステム２に対して最大論理アドレス範囲を拡張するコマンド（空き容量拡張コマンドＣＯＭ１）を前記メモリシステム２に出し、拡張後の前記最大論理アドレス範囲の値（ＬＢＡ２５５→ＬＢＡ２５６）に基づいて、使用可能な空きメモリ領域を再計算する。
【０１７８】
そのため、例えば、図２８に示すように、図２６で示したこの動作前の論理アドレス空間に比べ、斜線で示す拡張した論理アドレス分Unrecorded2（ＬＢＡ２５５→ＬＢＡ２５６）について、空き領域を増加することができる。このため、本例のようなＵＤＦ−ＶＡＴの追記型ファイルシステムで、実際の論理アドレス上の削除する消去ブロックFILE2本体が残っている場合であっても、空き領域を増加することができる。
【０１７９】
加えて、本例の場合、ＮＡＮＤ型フラッシュメモリ６の空き領域に対する処理は、消去動作のみである。このため、不要となったデータ領域を詰めるようにして、不要となったデータアドレス領域以降のデータを書き直す必要があるガベージコレクションのような大量のデータ書き込みは発生しない。その結果、処理を高速化でき、利便性を向上できる点で有利である。さらに、ＮＡＮＤ型フラッシュメモリ６への書き込み回数も低減できるというメリットもある。
【０１８０】
［第２の実施形態（ファイルシステム等についてのその他の説明）］  
次に、第２の実施形態に係るメモリシステムおよびホスト装置について、図３０乃至図４０を用いて説明する。この実施形態は、上記第１の実施形態で説明していないファイルシステム等についてのその他の説明に関するものである。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【０１８１】
［１１］ＵＤＦ追記ファイルシステム（ＵＤＦ−ＶＡＴ）の概要
これについては、上記第１の実施形態と重複するため、詳細な説明を省略する。
【０１８２】
［１２］メモリシステム２の適用例について
ＮＡＮＤ型フラッシュメモリ６のブロックの適用例については、図３９において後述する。
【０１８３】
［１２−１］通常ユーザデータ領域
本例に係るメモリカード２では、上記のように、通常ユーザデータ領域２４は、上記多値モードで使用し、なるべく多くの容量を確保する。通常ユーザデータ領域２４は、追記書き込みデータ領域として使用される。この追記領域２４では、論理アドレス−物理アドレス変換は、ブロック単位で行われる。なお、この場合でも、多値モードで使用する場合でも、書き込みデータの一時的な保管には、上記２値モードで使用するブロックをバッファとして使用してもよい。
【０１８４】
また、メモリコントローラ７は、ＮＡＮＤ型フラッシュメモリ６のブロックに、自身の制御データ（システムデータ）を不揮発データとして記憶するためのブロックを確保しており、このブロックも２値モードで使用する。
【０１８５】
［１２−２］プロテクトデータ領域
本例に係るメモリカード２の場合、通常のユーザデータ領域２４の他に、セキュアデータ用の領域（プロテクトデータ領域）２１〜２３も存在し、それぞれが一つのボリュームとしてファイルフォーマットが行われる。本例においては、プロテクトデータ領域はすべて上書き許可領域であり、ＮＡＮＤ型フラッシュメモリ６の２値モードのブロックが割り当てられ、例えば、ＦＡＴファイルシステムが用いられる。これは、プロテクトデータ領域２１〜２３は、容量としては小さく、またファイルデータ本体も細かいデータの更新が多いため、上書き可能なＦＡＴファイルシステムが適しているためである。ただし、アプリケーションによって、細かいデータの更新が発生しない場合は、プロテクトデータ領域２１〜２３も通常データ領域と同様の追記書き込みデータ領域として構成しても良い。
【０１８６】
［１３］デバイス情報  
次に、図３０乃至図３２を用い、本例に係るメモリカード２が有するデバイス情報について説明する。
【０１８７】
図示するように、本例に係るメモリカード２は、例えば、メモリコントローラ７のＳＤインタフェース１１のレジスタ１５内に「デバイス情報」を有している。
【０１８８】
これらのデバイス情報は、ホスト装置１が、メモリカード２から取得するカード情報であり、後述する動作を実現するために、メモリカード２に追加された情報である。この情報には以下のようなものがあり、例えば、専用のＳＤカードコマンドでアクセスするＳＤカードレジスタとしてメモリコントローラ７内に用意されるものである。
【０１８９】
（１）追記型デバイスフラグ  
追加型デバイスフラグ（Ｒ）は、本例の追記型のカードインタフェースを有するメモリカード２であるか、上書き型のメモリカード２のいずれかであるかを示すフラグである。
【０１９０】
また、この追記型デバイスフラグは、リードオンリーのレジスタである。例えば、”１”データのとき追記型、”０”データのとき上書き型であることを示す。
【０１９１】
（２）最終書き込みアドレス  
最終書き込みアドレス（Ｒ）は、追記領域において、最後に書き込みがなされた論理アドレスを、メモリコントローラ７がホスト装置に示すアドレスである。このアドレスも、リードオンリーのレジスタである。
【０１９２】
（３）書き込み許可データ  
書き込み許可データ（ＲＷ）は、メモリカード２にファイルを書き込む、あるいは、更新するためには、異なる専用のファイルシステムを適用する際に必要な書き込みソフトウェアである。例えば、従来のカード用のファイル書き込みソフトウェアで、本例のメモリカード２に対してファイル書き込みを行うと、ファイルフォーマットが破壊される恐れがある。このため、本例のメモリカード２では、専用のデータ書き込み許可コマンドを設ける。メモリカード２は、初期化後にこのコマンドを受け付けた後でないと追記領域に対するホスト装置１からのデータ書き込みコマンドを受け付けない。このデータ書き込み許可コマンドの受付前では、書込みコマンドに対しては常にライトプロテクトエラーを返す。
【０１９３】
この書き込み許可データレジスタは、例えば、８バイトの大きさをもち、このレジスタに0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEFを書き込みことによって追記領域へのデータ書き込みが許可される。この書き込み許可データレジスタは、ライトリード可能なレジスタであり、ライトデータとしては書き込む許可データを書き込む。リードした場合は、書き込み許可がなされているかどうかが示される。書き込み許可状態になっている場合はこのレジスタはall 0xFFとなり、書き込み許可がなさされていない場合はall 0x00が読み出される。
【０１９４】
（４）、（５）ＶＡＴ ＩＣＢ位置書き込みアドレス１、２（ＲＷ）
これらＶＡＴ ＩＣＢ位置書き込みアドレス１、２（ＲＷ）は、ホスト装置１が書き込むＶＡＴ ＩＣＢ位置のアドレスを保持するためのアドレスである。
【０１９５】
例えば、ホスト装置１が、８バイト分のＶＡＴ ＩＣＢ位置を書き込み、そのアドレスをメモリコントローラ７は、ＮＡＮＤ型フラッシュメモリ６内にシステムデータ（管理データ）の一部として記憶する。
【０１９６】
このデータは、ホスト装置１から頻繁に書き換えられる。そのため、レジスタをメモリマップ上に設けた例を示す図３２のように、ホスト装置１は、専用のＮＡＮＤ物理ブロックを用意しておき、そのページに内部的に追記していくことでデータを保持している。ここで、当該ブロックが一杯のなった場合、別の予備ブロックを使用し一杯になったブロックは消去して再利用する。
【０１９７】
尚、このＶＡＴ ＩＣＢ位置書き込みアドレス１、２は、ホスト装置１が書き込む重要なデータであるので、２重化されており、２つのレジスタがある。ホスト装置１は、順次同じデータをこの２つのレジスタに書き込む。
【０１９８】
（６）データ領域初期化指示（Ｗ）
本例に係るメモリカード２では、追記領域は、最終書き込みアドレスの次の論理アドレスより大きいアドレスにしか書き込めないようにフォーマットされている。そのため、このデータ領域初期化指示（Ｗ）は、再度、追記領域の論理アドレスの先頭からデータを書き込めるようにするための指示を行うレジスタである。例えば、このレジスタにホスト装置１が、”１”データを書き込むことで、最終書き込みアドレスが初期化され、論理アドレスの先頭からデータを再度書き込めるようになる。
【０１９９】
ここで、上記のように、図３０、図３１は、デバイス情報の実装例を示したものである。
【０２００】
図３０では、例えば、デバイス情報がコントローラ内のレジスタ１５として構成され、それらのレジスタ１５がＳＤカードインタフェース１１の専用コマンドによってリードまたはライトされる例を示している。この場合は、専用コマンドを用いた効率の良い情報アクセスが可能である。
【０２０１】
図３１では、デバイス情報が通常メモリ領域の一部のアドレス領域にマッピングされ、ＳＤカードインタフェース１１上の通常のメモリリード、ライトコマンドでアクセスできるように構成した例である。この場合、専用コマンドを使用しないため、新規コマンドをサポートしていないＵＳＢ ＲＷ仕様などでも、ＰＣ等のホスト装置１側のソフトウェアからデバイス情報をライト、リード可能という利点がある。
【０２０２】
また、図３１においては、上述のデバイス情報のために通常領域の論理アドレス上の一定の領域があらかじめ予約されており、その領域は実際には通常のメモリのライト、リードは行われず、特定のアドレスを通常のＳＤメモリライト、リードコマンドでライト、リードすることで上述のデバイス情報レジスタをアクセスできるようになっている。また、図３２の例では、各レジスタは通常のＳＤメモリライト、リードできる形で4KBおきのメモリアドレス上の先頭に置かれている。
【０２０３】
尚、このメモリ上にデバイス情報をおく場合は、例えば、上書き型にフォーマットされたメモリカード２では、この領域は通常の上書き型のメモリ領域(ライト、リード可能)となっている。
【０２０４】
ホスト装置１が追記デバイスフラグの値をチェックする場合は、当該の論理アドレスに対して512B分(SDバス上の1データブロック)のAll ”０”のデータを書き込み、そのデータをリードする。実際にAll ”０”データが書き込めれば、そのメモリカード２は、上書き型にフォーマットされたメモリカード２である。一方、先頭の１バイトに0x00ではなく、0x01が読み出せれば、追記型のデバイスであると判断される。
【０２０５】
図３３は、図３１で示したデバイス情報エリアが論理アドレスの先頭に置かれている例である。図３４は、図３１で示したデバイス情報エリアが論理アドレスの最後に置かれている例である。
【０２０６】
ここで、上記図３０、図３１のどちらの構成を使用しても良いが、本例では、以下、図３０のようなレジスタを専用コマンドでアクセスする場合を一例に挙げて説明をする。
【０２０７】
［１４］メモリカード側のデータ書き込み動作
次に、図３５および図３６を用いて、本例に係るメモリカード２側のデータ書き込み動作について説明する。この説明においては、図３６のフローチャートに従って説明する。
【０２０８】
［１４−１］初期化時
ここで、図３５の示すように、初期化時においては、通常のカード初期化処理の他に、追記領域内の書き込み済最終アドレス（論理セクタアドレス）を以下のように計算し、コントローラ内に記憶する。
【０２０９】
（１）まず、メモリコントローラ７は、システムデータ領域２１に記憶された最新の書き込み論理ブロックアドレスを読み出す。
【０２１０】
（２）続いて、メモリコントローラ７は、読み出した最新の書き込み論理ブロックアドレスに相当する物理ブロックの各ページの冗長領域にある書き込み済フラグを参照し、ブロック内の最終書き込みページアドレスを求める。ここで、上記図２１に示したように、書き込み済フラグが”０”データである最大のページを最終書き込みページとする。
【０２１１】
（３）続いて、メモリコントローラ７は、”最新書き込み論理ブロックアドレスxブロック内のページ数 + ブロック内最終書き込みページアドレス”によって、最終書き込み論理ページアドレスを求め、それに基づいて最終書き込みセクタアドレスを計算し、それをコントローラ内に記憶する。
【０２１２】
［１４−２］データ書き込み
図３６に示すように、まず、ステップＳ６１の際、メモリコントローラ７は、書き込むべきデータの論理アドレスが追記領域であった場合、その論理アドレスが書き込み済最終論理アドレスより後のアドレスであるかどうか（すなわち、追記方式のライトであるかどうか）を判断する。
【０２１３】
ここで、書き込み済最終論理アドレスが追記領域の最終アドレスに相当する場合は、書き込み済最終論理アドレスは追記領域の先頭アドレス−１、すなわち、追記領域に対する書き込みがなされていない状態と等価であると判断する。これにより、追記領域の最終アドレスにデータが書かれた直後は追記領域の先頭アドレスからデータの再書き込みが可能となる。
【０２１４】
尚、追記領域の先頭からデータを書き込むためには後述の追記領域の初期化コマンドを使用しても良い。この追記領域の初期化コマンドのみを使用することを前提として、上述のような「書き込み済最終論理アドレスが追記領域の最終アドレスに相当する場合に、追記領域の先頭アドレスからデータの再書き込みを可能とする」処理を行わないような実施例も考えられる。
【０２１５】
続いて、ステップＳ６２の際、メモリコントローラ７は、上記ステップＳ６１で書き込む論理アドレスが書き込み済最終論理アドレスより後でない場合（すなわち追記書き込みでない場合）と判断されると、ホスト装置１に対して、ライトプロテクトエラーを返してデータ書き込みを拒否する。
【０２１６】
続いて、ステップＳ６３の際、メモリコントローラ７は、上記ステップＳ６１で書き込む論理アドレスが書き込み済最終論理アドレスより後の場合（すなわち追記書き込みである場合）は、ＮＡＮＤ型フラッシュメモリ６の別物理ブロックに書き込むデータか否かを判断する。
【０２１７】
続いて、ステップＳ６４の際、メモリコントローラ７は、別ブロックを書き込みブロックとして割り当てる。その際、データ書き込みを行うべきブロックがそれまでデータ書き込みを行っていた物理ブロックとは別の物理ブロックを割り当てる必要がある場合は、新たに割り当てる物理ブロックに相当する論理ブロックアドレスをＮＡＮＤのシステムデータ領域に書き込んで記憶する。
【０２１８】
続いて、ステップＳ６５の際、メモリコントローラ７は、割り当てた別ブロックが消去済でない場合は、消去処理も行う。消去されたブロックのデータは、例えば、All 0xFF(All ”１”データ)になる。
【０２１９】
続いて、ステップＳ６６の際、メモリコントローラ７は、割り当てたブロックに相当する論理ブロックアドレスをＮＡＮＤ型フラッシュメモリ６のシステムデータ領域２１に、最終書き込みブロックアドレスとして記憶する。
【０２２０】
ここで、一度追記領域を最後のアドレスまで書くと、追記領域の先頭のアドレスから書込みが可能となる（後述の［１５］を参照）。その際、書込みデータに割り当てる物理ブロックは、それまで当該の論理アドレスブロックに割り当てられていた物理ブロックではなく、予備のスペアブロックを割り当てる。従って、最新のデータ書き込みを行っている論理アドレスブロックには２つの物理ブロック(A)(B)が割り当てられる（上記図２２）。このとき、当該ブロックへのデータ書込みが終了して別のブロックへの書込みが発生すると、直前の予備ブロック(B)が当該ブロックの物理ブロックとして割り当てられブロック(A)は予備ブロックとなる。
【０２２１】
続いて、ステップＳ６７の際、メモリコントローラ７は、実際のNANDブロックへのデータ書き込みはページ単位で行うが、その際、書き込んだ各ページの冗長領域の所定のビット位置に設けられている「書き込み済フラグ」に”０”データを書きこむ（後述する図４０）。
【０２２２】
続いて、ステップＳ６８の際、メモリコントローラ７は、さらに最後に書き込んだセクタアドレスを、コントローラのRAMに、書き込み済最終アドレスとして記憶する。
【０２２３】
尚、追記型であっても書き込むデータが連続したアドレスではなく、一部のアドレスがスキップされるような例も考えられる（例えば、図２１に示すデータ書込みの場合）。この場合、スキップした領域のデータ内容は保証されない（スキップした部分は書込み前のデータが保持されることは保証されない）。しかし、本例のような追記型書込み方式の場合、通常は連続したアドレスに対してデータ書込みがなされるので、この制約は大きな問題とはならない。逆にこれによって、カード内の引越し処理などの煩雑な処理が無くなりカードの実現が容易になる点でメリットがある。
【０２２４】
［１４−３］データの読み出し動作
データ読み出し動作は、読み出しコマンドによって指定された論理アドレスをＮＡＮＤ型フラッシュメモリ６の物理アドレスに変換し、そのアドレスのデータをＮＡＮＤ型フラッシュメモリ６から読み出し、ホスト装置１に出力することにより行われる。
【０２２５】
例えば、図２２のように、一つの論理ブロックアドレスに２つの物理ブロック（Ａ）（Ｂ）が割り当てられている場合は、新しく書きこまれたページのデータは予備ブロック（Ｂ）から読み出し、それ以外のページのデータは従来のブロック（Ａ）から読み出す。
【０２２６】
［１４−４］追記領域の初期化
追記領域の初期化について、図３７を用いて説明する。この動作のために、メモリコントローラ７のＳＤカードインタフェース１１に、追記領域の初期化を実行する専用のコマンド（実際には専用のコマンドによってアクセスされるレジスタ）を追加する。メモリコントローラ７は、このコマンドを受けると、図３７のフローチャートに示す動作を行う。
【０２２７】
まず、ステップＳ７１の際に、メモリコントローラ７は、追記領域に割り当てられたＮＡＮＤブロックをすべて消去し、すべてのビットを”１”データにする。
【０２２８】
続いて、ステップＳ７２の際に、メモリコントローラ７は、最終書き込みブロックアドレスを追記領域の最初のブロックアドレスに戻して、システムデータ領域に記憶する。
【０２２９】
続いて、ステップＳ７３の際に、メモリコントローラ７は、メモリコントローラ７内のＲＡＭ１４に記憶した書き込み済最終アドレスを初期化（即ち、追記領域の先頭論理アドレスー１）とする。
【０２３０】
上記のステップによって、追記領域の全部ロックデータは消去され、書き込み済最終アドレスも初期化される。この処理以後は、追記領域の先頭アドレスからデータの書き込みが可能となる。
【０２３１】
尚、全ブロックデータの消去には時間がかかるので、消去はせずに、最終アドレスを初期化する処理だけを行うための専用コマンドやレジスタを設けてもよい。この場合は、データの消去は行われないが、再び論理アドレスの先頭からデータが書き込めるようになり、追記領域の論理的な再フォーマットが高速に行える点で有利である。
【０２３２】
［１４−５］書き込み済最終論理アドレスの通知
書き込み済最終論理アドレスを通知するためには、メモリコントローラ７のＳＤカードインタフェース１１に、書き込み済最終論理アドレスをホスト装置１に通知する専用のコマンドを追加する。メモリコントローラ７は、このコマンドを受けると、コントローラ７のＲＡＭ１４に記憶している書き込み済最終論理アドレスを、レスポンスデータとしてＳＤカードインタフェース１１からホスト装置１に出力する。
【０２３３】
［１４−６］データ書き込み許可コマンド
本例のメモリカード１にファイルを書き込む、あるいは、更新するためには、専用のファイル書き込みソフトウェアが必要である。従来のカード用のファイル書き込ソフトウェアで本カードに対してファイル書き込みを行うと、ファイルフォーマットが破壊される恐れがある。このため、本例のメモリカード２では専用のデータ書き込み許可コマンドを設ける。メモリカード２は、初期化後に、このコマンドを受け付けた後でないとホストからのデータ書き込みコマンドを受け付けない。このデータ書き込み許可コマンドの受付前は書込みコマンドに対しては常にライトプロテクトエラーを返す。
【０２３４】
［１４−７］上書き許可領域範囲のアドレスをホストが知るためのコマンド
ホスト装置１に対して、レスポンスデータとして、上書き許可領域の上限の論理アドレスを示すデータを返すコマンドを新設する。ホスト装置１は、メモリカード２の論理フォーマットの際に、このコマンドを使用して、上書き許可領域の上限を知ることができる。
【０２３５】
さらに、ホスト装置１は、論理フォーマットの際に、上書き許可領域の上限をブートセクタの一部に記録する。
【０２３６】
ホスト装置１のファイスシステムは、ファイルやディレクトリを新規作成する際には、ブートセクタの上書き許可領域の上限アドレスを参照しそのアドレスより小さいアドレス（即ち、上書き可能領域）に、この新規作成するディレクトリ（ファイル）エントリを作成する。
【０２３７】
［１５］カードタイプフラグ
デバイス情報を読むことで、ホスト装置１は、上書き型のカードインタフェースを持つカードであるか、追記型のインタフェースを持つカードであるかを識別できる。ホスト装置１は、それぞれのメモリカード２に応じたファイルシステム（例えば、上書き型の場合はＦＡＴ、追記型の場合はＵＤＦ−ＶＡＴ方式等）をカードに適用する。
【０２３８】
［１６］ホスト側のファイル更新
次に、図３８を用いて、ホスト装置１の側のファイル更新について説明する。ここでは、図３８のフローに則して説明する。
【０２３９】
ここで、ホスト装置１のソフトウェアは、カードタイプのフラグを参照してカードタイプに応じたファイル書込みを行う。このソフトウェアによってファイル書き込みを行うホスト装置１は、カードの初期化処理の後に、追記型のカードであることを検出すると、専用のデータ書込み許可コマンドをカードに発行してカードを書き込み可能状態にする。追記領域にＵＤＦ−ＶＡＴ方式で順次データを追記していき、ファイルを更新する。
【０２４０】
すわなち、ステップＳ８１の際、ホスト装置１は、ＵＤＦ−ＶＡＴ方式でファイルＩＣＢやファイルデータ本体を追記書き込みする。
【０２４１】
続いて、ステップＳ８２、Ｓ８３の際、ホスト装置１は、ＶＡＴおよびＶＡＴ−ＩＣＢを追記書き込みする。
【０２４２】
続いて、ステップＳ８４の際、ホスト装置１は、デバイス情報レジスタのＶＡＴ ＩＣＢ位置書き込みアドレス１に、ＶＡＴ ＩＣＢの最終アドレスを書き込む。
【０２４３】
続いて、ステップＳ８５の際、ホスト装置１は、デバイス情報レジスタのＶＡＴ ＩＣＢ位置書き込みアドレス２にＶＡＴ ＩＣＢの最終アドレスを書き込む。
【０２４４】
尚、ＤＶＤ−Ｒ用のＵＤＦは、１セクタ2KBで構成されているが、セクタサイズは小さいほうがメモリ領域の利用効率が高い。また、カードインタフェース上の最小書き込みブロックサイズにファイルシステム上のセクタサイズが一致していると、サイズ変換の必要がなくファイルアクセスソフトウェアの構成が容易である。このため、本例のＳＤカードの実施例では、ＵＤＦのセクタサイズは、例えば、５１２Ｂ程度とする。
【０２４５】
［１７］カード挿入時のＶＡＴ ＩＣＢ位置検索動作
次に、図３９を用いて、カード挿入時のＶＡＴ ＩＣＢ位置検索動作について説明する。
【０２４６】
まず、ステップＳ９０の際に、ホスト装置１は、ＶＡＴ ＩＣＢ位置検索を開始する。
【０２４７】
続いて、ステップＳ９１の際に、ホスト装置１は、ＶＡＴ  ＩＣＢ位置書き込みアドレス１から最終データ書込み位置を取得する。
【０２４８】
続いて、ステップＳ９２の際に、ホスト装置１は、デバイス情報に書き込まれたＶＡＴ ＩＣＢ位置書き込みアドレス１をリードする。
【０２４９】
続いて、ステップＳ９３の際に、ホスト装置１は、そのアドレスにあるデータをチェックしてする。
【０２５０】
続いて、ステップＳ９４の際に、ホスト装置１は、そのデータがＵＤＦ−ＶＡＴ仕様で定められた有効なデータ形式かどうかをチェックする。
【０２５１】
続いて、ステップＳ９９−１の際に、有効な形式であった場合は、ＶＡＴ  ＩＣＢ取得成功として、ホスト装置１は、そのデータをＶＡＴ−ＩＣＢとして以後のファイルアクセスを行う。
【０２５２】
一方、ステップＳ９５の際に、ホスト装置１は、有効な形式で無かった場合には、デバイス情報に書き込まれたＶＡＴ ＩＣＢ位置書き込みアドレス２をリードする。
【０２５３】
続いて、ステップＳ９６の際に、ホスト装置１は、有効な形式のＶＡＴ  ＩＣＢであるか否かを確認する。この際、有効な形式であった場合は、そのデータをＶＡＴ−ＩＣＢとして以後のファイルアクセスを行う（Ｓ９９−１）。
【０２５４】
一方、ステップＳ９７の際に、ホスト装置１は、ステップＳ９６で有効な形式で無かった場合は、何らかの理由でＶＡＴ ＩＣＢ位置情報が正常に更新されなかったものと判断し、デバイス情報の最終書き込みアドレスをリードし、そのアドレスから順にアドレスの上位に遡ってＶＡＴ−ＩＣＢのフォーマットデータがないかどうかを検索する。
【０２５５】
続いて、ステップＳ９８の際に、ホスト装置１は、有効なＶＡＴ  ＩＣＢの発見を行う。
【０２５６】
続いて、ステップＳ９９−２の際に、ホスト装置１は、有効なＶＡＴ ＩＣＢ形式が見つからなかった場合は、ＶＡＴ ＩＣＢ取得失敗と判断する。
【０２５７】
［１８］不完全ファイルの復活処理
次に、図４０を用いて、不完全ファイルの復活処理について説明する。
【０２５８】
デバイス情報に書き込まれたＶＡＴ−ＩＣＢ位置と、デバイス情報の最終書き込みアドレスが整合しなかった場合（すなわち、ＶＡＴ−ＩＣＢ位置よりもデバイス情報の最終書き込みアドレスが大きい場合）は、ホスト装置１が、ファイルデータを更新中にカードが引き抜かれたりホスト機器の電源が遮断されたりして、更新中のファイルのＶＡＴ−ＩＣＢとＶＡＴ−ＩＣＢ位置情報の更新が完了していないと考えられる。
【０２５９】
このような場合、ホスト装置１は、図４０に示すステップＳ１０１乃至Ｓ１０９の処理で、この不完全なファイルの復活を試みることができる。この場合、ホスト装置１はＶＡＴ−ＩＣＢ位置とデバイス情報の最終書き込みアドレスの間にあるデータを不完全ファイルとして取り出すことを試みる。
【０２６０】
［１９］応用例
この第２の実施形態では、ＳＤメモリカード２への適用例を示したが、これに限られず、その他の別のフラッシュメモリデバイスにも適用できる。また、追記型ファイルシステムとしてＵＤＦの例を示したが、その他別の追記型ファイルシステムであっても、同様に適用することが可能である。
【０２６１】
［２０］効果
上記のように、この第２の実施形態に係るメモリシステムおよびホスト装置によれば、少なくとも上記（１）と同様の効果が得られる。さらに、必要に応じて、本例のような構成および動作に適用することが可能である。
【０２６２】
また、本第２の実施形態は、以下の態様を含む。
【０２６３】
（１）データ書き込み済の論理アドレスよりも高位の論理アドレスを割り当てられた書き込みデータのみの書き込みを受け付けるメモリシステム。
【０２６４】
（２）ホスト装置がカードにデータ書き込みを行った最終論理アドレスをホスト装置が算出するのに必要な可能な情報をホスト装置に対して提供する手段を具備するメモリシステム。
【０２６５】
（３）ホスト装置が前回書き込んだデータの論理アドレスに応じて、次回のデータ書き込みを受付可能な論理アドレス範囲が変更されるメモリシステム。
【０２６６】
（４）（３）のメモリシステムにおいて、次回のデータ書き込み可能な論理アドレス範囲を示す情報をホスト装置に通知する手段を更に具備する。
【０２６７】
（５）（３）のメモリシステムにおいて、ホスト装置からの指示に応じて、書き込み可能な論理アドス範囲を初期状態に戻す手段を更に具備する。
【０２６８】
（６）（３）のメモリシステムにおいて、データ書き込みを受付可能な論理アドレス以外の論理アドレスに対するデータ書き込みがなされた場合、ライトプロテクトに相当する書き込みエラー情報をホスト装置に出力する。
【０２６９】
（７）（３）のメモリシステムにおいて、次回のデータ書き込み可能な論理アドレス範囲を示す情報をホストに通知する手段を更に具備するとともに、ホスト装置から設定された、ファイル更新時の最終データ書き込み位置情報を保持する手段を更に具備する。
【０２７０】
（８）（３）のメモリシステムにおいて、データ書き込みの受付開始の許可を、ホストから指示する手段を更に具備する。
【０２７１】
（９）データ書き込みが非連続的な論理アドレスに対してなされた場合、非連続なアドレス範囲のデータを読み出した場合、前記データ書き込み以前のデータと同じデータが読み出されることは保証されない。
【０２７２】
（１０）（３）のメモリシステムにおいて、（３）のような構成をもつシステムであるか、任意の論理アドレスにデータ書き込みを受け付ける装置であるかを識別するための情報をホスト装置に与える手段を更に具備する。
【０２７３】
（１１）（９）のメモリシステムにおいて、（３）のような構成をもつシステムであるか、非連続なアドレスにデータを書き込んだ場合でも、非連続なアドレス範囲のデータを読み出した場合に前記データ書き込み以前のデータと同じデータが読み出されることは保証される装置であるかを識別するための情報をホスト装置に与える手段を更に具備する。
【０２７４】
（１２）（４）の書き込み可能なアドレス範囲情報は、論理アドレスの所定のアドレスに対するホストインタフェースのメモリリードコマンドによってホスト装置に通知される。
【０２７５】
（１３）（７）のファイル更新時の最終データ書き込み位置情報は、論理アドレスの所定のアドレスに対するホストインタフェースのメモリライト、リードコマンドによってホストから設定されホストに通知される。
【０２７６】
（１４）（５）のアドレス範囲を初期状態に戻す指示は、論理アドレスの所定のアドレスに対して、ホストインタフェースのメモリライトによってホストから所定のデータが書き込まることによるものである。
【０２７７】
（１５）（１０）の識別情報は、論理アドレスの所定のアドレスに対するホストインタフェースのメモリリードコマンドによってホスト装置に通知される。
【０２７８】
（１６）（１）のメモリシステムにおいて、次回のデータ書き込み可能な論理アドレス範囲を示す情報をホストに通知する手段を更に具備するとともに、ホストから設定された、ファイル更新時の最終データ書き込み位置情報を保持する手段を更に具備する。
【０２７９】
（１７）（２）のメモリシステムにおいて、ホスト装置から設定された、ファイル更新時の最終データ書き込み位置情報を保持する手段を更に具備する。
【０２８０】
（１８）追記型ファイルシステムを使用して（１７）のメモリシステムにファイル書き込みを行うホスト装置において、ファイル更新時の最終データ書き込み位置が示すアドレスの直前のファイル更新時の最終データフォーマットが不正なフォーマットであった場合、ホスト装置がカードにデータ書き込みを行った最終論理アドレスから先頭方向に向かってデータ検索を行って、有効なファイル更新時の最終データフォーマットの検索を行う。
【０２８１】
（１９）追記型ファイルシステムを使用して（１７）のメモリシステムにファイル書き込みを行うホスト装置において、ファイル更新時の最終データ書き込み位置が示すアドレスの直前のファイル更新時の最終データフォーマットが不正なフォーマットであった場合、ホスト装置がカードにデータ書き込みを行った最終論理アドレスから先頭方向に向かってデータ検索を行って、有効なファイル更新時の最終データフォーマットの検索を行う。
【０２８２】
（２０）追記型ファイルシステムを使用して（１７）のメモリシステムにファイル書き込みを行うホスト装置において、ファイル更新時の最終データ書き込み位置が示すアドレスと、ホストがカードにデータ書き込みを行った最終論理アドレスとの間に不整合がある場合は、両者のアドレスの間にあるデータを対象にファイルの復旧処理を行う。
【０２８３】
（２１）ＵＤＦ方式の追記ファイルシステムを用いてメモリシステムに対してファイルの書き込み、読み出しを行うホスト装置において、ＵＤＦのセクタサイズはメモリシステムのホストインタフェース上の最小データ書き込み単位と一致させる。
【０２８４】
（２２）ＵＤＦ方式の追記ファイルシステムを用いてメモリシステムに対してファイルの書き込み、読み出しを行うホストシステムにおいて、ＵＤＦのセクタサイズは５１２バイトである。
【０２８５】
以上、第１、第２の実施形態を用いて本発明の説明を行ったが、この発明は上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。例えば各実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【０２８６】
【図１】メモリシステムの機能ブロック図。
【図２】レジスタの構成を例示する図。
【図３】メモリのメモリ空間の構成を示す図。
【図４】２値モードと多値モードを示す図。
【図５】ＦＡＴファイルシステムによりフォーマットされたメモリ空間を示す図。
【図６】ＦＡＴが保持するデータの一例を示す図。
【図７】ＦＡＴファイルシステムによりフォーマットされたメモリ空間を示す図。
【図８】ＵＤＦファイルシステムによりフォーマットされたメモリ空間を示す図。
【図９】ＶＡＴの一例を示す図。
【図１０】管理、ファイルデータブロックと書き込み方式との対応を示す図。
【図１１】コントローラの書き込み方式と書き込みモードとの対応を示す図。
【図１２】最終割り当て論理アドレスを授受するための構成を示す図。
【図１３】最終割り当て論理アドレスを授受するための構成を示す図。
【図１４】データ書き込みの許可の認証を行うための構成を示す図。
【図１５】データ書き込みの許可の認証を行うための構成を示す図。
【図１６】最高位上書き型論理アドレスをホストが知得するための構成を示す図。
【図１７】最高位上書き型論理アドレスをホストが知得するための構成を示す図。
【図１８】レジスタＣＳＤの詳細の一例を示す図。
【図１９】メモリカードの初期化のフローチャート。
【図２０】メモリカード内での書き込み動作のフローチャート。
【図２１】メモリカードの書き込み処理の結果を示す図。
【図２２】メモリカードの書き込み処理時の一状態を示す図。
【図２３】上書型ファイルシステムによる割り当て動作のフローチャート。
【図２４】追記型ファイルシステムによる割り当て動作のフローチャート。
【図２５】ファイル削除後の論理アドレス割り当て動作のフローチャート。
【図２６】ファイル削除の論理アドレス空間を示す図。
【図２７】空き容量拡張コマンドおよび最終割り当て論理アドレスの授受を示す図。
【図２８】ファイル削除後の論理アドレスの拡張を示す図。
【図２９】ページ単位の場合の一例を示す図。
【図３０】第２の実施形態に係る追記デバイス情報エリアを示す図。
【図３１】第２の実施形態に係る追記デバイス情報エリアを示す図。
【図３２】レジスタをメモリマップ上に設けた一例を示す図。
【図３３】デバイス情報エリアが論理アドレスの先頭である場合を示す図。
【図３４】デバイス情報エリアが論理アドレスの最後である場合を示す図。
【図３５】メモリカードの初期化処理を示すフロー図。
【図３６】メモリカードの追記領域へデータ書込み処理をする場合のフロー図。
【図３７】追記領域初期化動作を示すフロー図。
【図３８】ホスト側のファイル更新動作を示すフロー図。
【図３９】ＶＡＴ  ＩＣＢの位置検索動作を示すフロー図。
【図４０】ホスト側の不完全ファイルの復活処理を示すフロー図。
【符号の説明】
【０２８７】
１…ホスト装置、２…メモリカード、３…ソフトウェアアプリケーション、４…ファイルシステム、５、１１…ＳＤインタフェース、６…不揮発性メモリ、７…メモリコントローラ、１２…ＭＰＵ、１３…ＲＯＭ、１４…ＲＡＭ、１５…レジスタ、１１５…ＮＡＮＤインタフェース、２１…システムデータ領域、２２…機密データ領域、２３…保護データ領域、２４…ユーザデータ領域。
【図１】
2010026933.tif 000003
【図２】
2010026933.tif 000004
【図３】
2010026933.tif 000005
【図４】
2010026933.tif 000006
【図５】
2010026933.tif 000007
【図６】
2010026933.tif 000008
【図７】
2010026933.tif 000009
【図８】
2010026933.tif 000010
【図９】
2010026933.tif 000011
【図１０】
2010026933.tif 000012
【図１１】
2010026933.tif 000013
【図１２】
2010026933.tif 000014
【図１３】
2010026933.tif 000015
【図１４】
2010026933.tif 000016
【図１５】
2010026933.tif 000017
【図１６】
2010026933.tif 000018
【図１７】
2010026933.tif 000019
【図１８】
2010026933.tif 000020
【図１９】
2010026933.tif 000021
【図２０】
2010026933.tif 000022
【図２１】
2010026933.tif 000023
【図２２】
2010026933.tif 000024
【図２３】
2010026933.tif 000025
【図２４】
2010026933.tif 000026
【図２５】
2010026933.tif 000027
【図２６】
2010026933.tif 000028
【図２７】
2010026933.tif 000029
【図２８】
2010026933.tif 000030
【図２９】
2010026933.tif 000031
【図３０】
2010026933.tif 000032
【図３１】
2010026933.tif 000033
【図３２】
2010026933.tif 000034
【図３３】
2010026933.tif 000035
【図３４】
2010026933.tif 000036
【図３５】
2010026933.tif 000037
【図３６】
2010026933.tif 000038
【図３７】
2010026933.tif 000039
【図３８】
2010026933.tif 000040
【図３９】
2010026933.tif 000041
【図４０】
2010026933.tif 000042