(57)【要約】【課題】  従来のファイルシステムと親和しやすく、大容量で且つ高速な書き込みを実現できるホスト装置を提供する。【解決手段】  ホスト装置は、半導体メモリと半導体メモリを制御するコントローラとを具備するメモリシステムを挿入される。ホスト装置は、書き込みデータにＦＡＴファイルシステムにおいて定義されたクラスタを割り当て且つＦＡＴファイルシステムにおいて定義されたファイルアロケーションテーブルとディレクトリエントリとを含む管理データを用いてクラスタに割り当てられたデータを管理するファイル管理システムを搭載している。ディレクトリエントリは最上層のルートディレクトリのエントリ情報であるルートディレクトリエントリと、ルートディレクトリに属するサブディレクトリのエントリ情報であるサブディレクトリエントリと、を含む。ファイルシステムは、管理データに対して、アドレスが連続する所定範囲の複数のクラスタを割り当てる。【選択図】      図８
2008171257.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の半導体メモリと、前記半導体メモリを制御するコントローラと、を具備するメモリシステムを挿入され、
書き込みデータにＦＡＴファイルシステムにおいて定義されたクラスタを割り当て、且つＦＡＴファイルシステムにおいて定義されたファイルアロケーションテーブルとディレクトリエントリとを含む管理データを用いて前記クラスタに割り当てられたデータを管理するファイル管理システムを搭載しているホスト装置であって、
前記ディレクトリエントリは、最上層のルートディレクトリのエントリ情報であるルートディレクトリエントリと、前記ルートディレクトリに属するサブディレクトリのエントリ情報であるサブディレクトリエントリと、を含み、
前記ファイルシステムは、前記管理データに対して、アドレスが連続する所定範囲の前記複数のクラスタを割り当てる、
ことを特徴とするホスト装置。
【請求項２】
前記ファイル管理システムが、前記管理データを含んだデータ領域に対しては前記クラスタが未割り当てか割り当て済みかを問わずに前記クラスタを割り当て、前記管理データ以外の書き込みデータに対しては割り当て済みの前記クラスタよりも高位のアドレスを有する前記クラスタのみを割り当てることを特徴とする請求項１に記載のホスト装置。
【請求項３】
前記管理データが前記クラスタが割り当て済みか否かを示すビットマップテーブルを含んでいることを特徴とする請求項１に記載のホスト装置。
【請求項４】
不揮発性の半導体メモリと、前記半導体メモリを制御するコントローラと、を具備し、
前記コントローラが、
固有の論理アドレスを割り当てられた書き込みデータを供給され、
前記書き込みデータに割り当てられた前記論理アドレスが第１範囲に属する場合、割り当て済みの論理アドレスを割り当てられた前記書き込みデータの書き込みを受け付け、
前記書き込みデータに割り当てられた前記論理アドレスが第２範囲に属する場合、割り当て済みの前記論理アドレスよりも高位の論理アドレスを割り当てられた前記書き込みデータのみ書き込みを受け付ける、
ことを特徴とするメモリシステム。
【請求項５】
前記メモリシステムの初期化後、前記メモリシステムにアクセスするホスト装置からデータ書き込み許可を要求する信号を受信した後から前記メモリシステムが再び初期化されるまでの間、前記ホストからのデータ書き込み要求を受け付けることを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記メモリシステムにアクセスするホストからの要求に応答して、前記コントローラが前記第２範囲に属する前記論理アドレスを示す情報を外部に出力する機能を有することを特徴とする請求項４に記載のメモリシステム。
【請求項７】
前記メモリシステムにアクセスするホストからの要求に応答して、前記コントローラが前記第２範囲に属する前記論理アドレスが未割り当てである状態と同じ状態に移行する機能を有することを特徴とする請求項４に記載のメモリシステム。
【請求項８】
前記メモリシステムにアクセスするホストからの要求に応答して、前記コントローラが前記第１範囲および前記第２範囲のそれぞれの範囲を変更する機能を有する機能を有することを特徴とする請求項４に記載のメモリシステム。
【請求項９】
前記半導体メモリが、１つのメモリセルに複数ビットのデータを記憶させる機能を有し、
前記コントローラが、前記第１範囲に属する前記論理アドレスを割り当てられた前記書き込みデータを前記メモリセルにｍ（ｍは１以上の整数）ビットのデータを記憶させることによって前記半導体メモリに書き込み、前記第２範囲に属する前記論理アドレスを割り当てられた前記書き込みデータを前記メモリセルにｎ（ｎはｎ＞ｍの整数）ビットのデータを記憶させることによって前記半導体メモリに書き込む、
ことを特徴とする請求項４に記載のメモリシステム。
【請求項１０】
前記不揮発性半導体メモリが、
複数のメモリセルからなる記憶単位ごとにデータを記憶し、
複数の前記記憶単位からなるブロックごとにデータを消去され、
前記コントローラが、
前記第１範囲に属する前記論理アドレスと、この論理アドレスを割り当てられた前記書き込みデータを記憶している前記記憶単位との対応を管理し、
前記第２範囲に属する複数の前記論理アドレスからなる論理ブロックと、この論理ブロックに属する論理アドレスを割り当てられた複数の前記書き込みデータを記憶している前記記憶単位を含んだ前記ブロックと、の対応を管理する、
ことを特徴とする請求項４に記載のメモリシステム。
【請求項１１】
前記メモリが、ＦＡＴファイルシステムにおいて定義されたファイルアロケーションテーブルを書き込まれ、
前記コントローラが、前記コントローラが前記ファイルアロケーションテーブルを書き換えることがあるかないかを示す情報を保持している、
ことを特徴とする請求項４に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト装置およびメモリシステムに関し、例えば、ＮＡＮＤ型フラッシュメモリと、このメモリを制御するコントローラとを有するメモリシステム、およびメモリシステムを挿入されるホスト装置に関する。
【背景技術】
【０００２】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いた、メモリカードに代表されるメモリシステムが使われている。メモリシステムに使用されるフラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。ＮＡＮＤ型フラッシュメモリでは、複数のビットからなるページと呼ばれる単位で書き込みが行われる。そして、複数のページからなるブロックと呼ばれる単位でしか消去を行えない。このため、ブロックに記憶されたデータの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、旧データ（新データに書き換えられるデータ）を含んでいる旧ブロックから、書き換えられないデータを新ブロックにコピーする必要がある。このような処理は「引越し書き込み（巻き添えコピー）」と呼ばれる。この「引越し書き込み」は書き換えられないデータのコピー動作を伴うため、「引越し書き込み」が多発すると、オーバーヘッドが非常に増大する。
【０００３】
また、記憶媒体が記憶しているデータを管理するためのファイルシステムとして、ＦＡＴ（file allocation table）ファイルシステムが用いられている。ＦＡＴファイルシステムは、データをクラスタ（ファイルシステムが用いる書き込み領域の単位）ごとに割り当て、データのクラスタへの割り当てをＦＡＴと呼ばれる表で管理する。ＦＡＴファイルシステムは、ハードディスク等の、高速なランダム書き換えが可能なメディアを前提としたファイルシステムである。ランダム書き込みとは、クラスタのアドレスによらずに、空いているクラスタにランダムにデータが書き込まれる方式である。
【０００４】
ＦＡＴファイルシステムでは、ファイルを構成するファイルデータ（実データ）の書き換えのたびに、ＦＡＴ等の管理データの更新が発生する。このため、ＮＡＮＤ型フラッシュメモリを管理するファイルシステムとしてＦＡＴファイルシステムが採用された場合、ファイルデータの書き換えのたびに、「引越し書き込み」が発生し、ファイルの書き換え速度が低下する。
【０００５】
今後、ＮＡＮＤ型フラッシュメモリが大容量化するに連れて、ブロックサイズが更に大きくなる可能性が高い。この結果、「引越し書き込み」に要する処理時間の増大等、弊害が大きくなることが予想される。
【０００６】
ＮＡＮＤ型フラッシュメモリとＦＡＴファイルシステムとの組み合わせに起因する短所に対処するために、ホスト装置にＵＤＦ（universal disc format）などの追記型ファイルシステムを用いることが提案されている（特許文献１）。追記型ファイルシステムを用いることによって、ＮＡＮＤ型フラッシュメモリを用いたメモリシステムに対して効率よくデータを書き込むことができる。
【０００７】
追記型ファイルシステムは、ＮＡＮＤ型フラッシュメモリを用いたメモリシステムのファイルシステムとしては適している。しかしながら、追記型ファイルシステムは、これまで主に用いられてきたＦＡＴファイルシステムと互換性がなく、また、ホスト装置にとってはファイルシステムを新規に開発および搭載する必要がある。このため、ホスト装置の製造に負担が強いられるという問題点がある。
【特許文献１】特開2006-040264号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、従来のファイルシステムと親和しやすく、大容量で且つ高速な書き込みを実現できるホスト装置およびメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【０００９】
本発明の一態様によるホスト装置は、不揮発性の半導体メモリと、前記半導体メモリを制御するコントローラと、を具備するメモリシステムを挿入され、書き込みデータにＦＡＴファイルシステムにおいて定義されたクラスタを割り当て、且つＦＡＴファイルシステムにおいて定義されたファイルアロケーションテーブルとディレクトリエントリとを含む管理データを用いて前記クラスタに割り当てられたデータを管理するファイル管理システムを搭載しているホスト装置であって、前記ディレクトリエントリは、最上層のルートディレクトリのエントリ情報であるルートディレクトリエントリと、前記ルートディレクトリに属するサブディレクトリのエントリ情報であるサブディレクトリエントリと、を含み、前記ファイルシステムは、前記管理データに対して、アドレスが連続する所定範囲の前記複数のクラスタを割り当てる、ことを特徴とする。
【００１０】
本発明の一態様によるメモリシステムは、不揮発性の半導体メモリと、前記半導体メモリを制御するコントローラと、を具備し、前記コントローラが、固有の論理アドレスを割り当てられた書き込みデータを供給され、前記書き込みデータに割り当てられた前記論理アドレスが第１範囲に属する場合、割り当て済みの論理アドレスを割り当てられた前記書き込みデータの書き込みを受け付け、前記書き込みデータに割り当てられた前記論理アドレスが第２範囲に属する場合、割り当て済みの前記論理アドレスよりも高位の論理アドレスを割り当てられた前記書き込みデータのみ書き込みを受け付ける、ことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、従来のファイルシステムと親和しやすく、大容量で且つ高速な書き込みを実現できるホスト装置およびメモリシステムを提供できる。
【発明を実施するための最良の形態】
【００１２】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１３】
また、以下に示す各実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１４】
なお、以下、本発明の実施形態に係るメモリシステムの一例としてメモリカードを用いて説明を行う。
【００１５】
［１］構成
［１−１］全体の構成
図１は、本発明の一実施形態に係るメモリシステムおよびホスト装置の主要部を概略的に示す機能ブロック図である。各機能ブロックは、ハードウェア、コンピュータソフトウェア、のいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
【００１６】
図１において、ホスト装置（以下、ホストと称する）１は、挿入されるメモリカード２に対してアクセスを行うためのハードウェアおよびソフトウェア（システム）を備えている。ホスト１は、アプリケーション、オペレーティングシステム等のソフトウェアを備えている。ソフトウェア３は、ユーザから、メモリカード２へのデータの書き込み、メモリカード２からのデータの読み出しを指示される。ソフトウェア３は、書き込みおよび読み出しをファイルシステム４に指示する。
【００１７】
ファイルシステム４は、管理対象の記憶媒体に記録されているファイル（データ）を管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルを管理する。ファイルシステム４では、記憶媒体におけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理情報が記録されている領域の場所や利用方法などが定められている。ファイルシステム４は、ＦＡＴファイルシステムを基礎としており、本明細書を通じた動作を実行可能に構成されており、具体的な動作に関しては適宜説明する。
【００１８】
ホスト１は、ＳＤインタフェース５を有する。ＳＤインタフェース５は、ホスト１とメモリカード２（コントローラ７）との間のインタフェース処理を行うのに必要なハードウェア、ソフトウェアからなる。ホスト１は、ＳＤインタフェース５を介してメモリカード２と通信を行う。ＳＤインタフェース５は、ホスト１とメモリカード２とが通信するのに必要な様々な取り決めを規定し、後述のメモリカード２のＳＤインタフェース１１と相互に認識可能な各種のコマンドの組を備えている。また、ＳＤインタフェース５は、メモリカード２のＳＤインタフェース１１と接続可能なハードウェア上の構成（ピンの配置、数等）も含む。
【００１９】
メモリカード２は、ホスト１に接続されたとき、およびオフ状態のホスト１に挿入された状態でホスト１がオンされたときに電源供給を受けて初期化動作を行った後、ホスト１からのアクセスに応じた処理を行う。メモリカード２は、ＮＡＮＤ型フラッシュメモリ６、メモリ６を制御するためのコントローラ７を有する。
【００２０】
メモリ６は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行う。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ６は、複数のページからなる物理ブロックと呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
【００２１】
コントローラ７は、メモリ６によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（または物理ブロック）が、ホスト１により割り当てられたどの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ（または物理ブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することをいう。
【００２２】
コントローラ７は、ＳＤインタフェース１１、ＭＰＵ（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）上のソフトウェアを用いて最終書き込み論理アドレスのメモリカード２からの読み出しが可能となる。
【００８６】
［１−３−２］データ書き込みの許可の認証を行うための手法
従来のファイルシステムを介して本発明の一実施形態に係るメモリカード２への書き込みが行われると、管理データに不整合が生じて、この結果、ファイルの内容が破壊される恐れが有る。そこで、メモリカード２への書き込みの認証を行うためのコマンドが、ＳＤインタフェース５、１１において設けられる。図１２、図１３は、データ書き込みの許可の認証を行うための構成を示す図である。
【００８７】
図１２に示すように、コントローラ７は、初期化後に、ホスト１からのデータ書き込み許可要求コマンドの送信を待つ。コントローラ７がこのコマンドを受けた場合、ホスト１は、このコマンドをサポートしており、すなわち、本発明の一実施形態に係るファイルシステム４を搭載しているので、メモリカード２は書き込み要求を受け付ける。
【００８８】
一方、データ書き込み許可要求コマンドを受信しなかった場合は、コントローラ７は、ホスト１からの書き込み要求に対して常にライトプロテクトエラー信号を返す。この技術により、メモリカード２のデータが、本発明の一実施形態に係るファイルシステム４でないファイルシステムによって破壊されることが回避される。
【００８９】
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図１３に示すように、あるホストから、コントローラ７が特定の論理アドレスへの特定のデータの書き込み要求を受けると、メモリカード２は、以降、このホストからの書き込み要求を受け付ける。特定の論理アドレスとして、例えば、パーティションテーブルブロック５３の最終セクタ内の最初の８バイトとすることができる。特定のデータとして、例えば、０ｘ０１、０ｘ２３、０ｘ４５、０ｘ６７、０ｘ８９、０ｘＡＢ、０ｘＣＤ、０ｘＥＦの少なくとも１つとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のＵＳＢ  ＲＷを介してメモリカード２が用いられる場合も、ＵＳＢ  ＲＷを挿入されているＰＣ上のソフトウェアを介してメモリカード２への書き込みが可能となる。
【００９０】
［１−３−３］上書き型論理アドレスの範囲をホストが知得するための手法
ホスト１（ファイルシステム４）は、上書き型論理アドレスと追記型論理アドレスの境界を知得する必要がある。そこで、最高位の上書き型論理アドレスを授受するためのコマンドが、ＳＤインタフェース５、１１において設けられる。図１４、図１５は、最高位上書き型論理アドレスをホストが知得するための構成を示す図である。なお、上書き型論理アドレスと追記型論理アドレスとの境界を示す手法として、最高位上書き型論理アドレスに代えて最低位の追記型論理アドレスを用いて、以下の処理を行うことも可能である。
【００９１】
図１４に示すように、ホスト１は、最高位上書き型論理アドレスの送信を要求するコマンドをコントローラ７に発行する。コントローラ７は、このコマンドを受け取ると、システムデータ領域２１に記憶されている、最高位上書き型論理アドレスをレスポンスとして、ホスト１に送信する。
【００９２】
ホスト１は、このコマンドを使用して上書き型論理アドレスの範囲を知ることができる。ホスト１のファイルシステム１０は、最高位上書き型論理アドレスを参照して、このアドレスより低位の論理アドレス、すなわち、上書き型論理アドレスに、新規のファイルやディレクトリエントリを作成する。
【００９３】
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図１５に示すように、コントローラ７が特定の論理アドレスの読み出し要求を受けた際に、読み出しデータとして最高位上書き型論理アドレスをホスト１に送信する。特定の論理アドレスとして、例えば、パーティションテーブルブロック５３の最終セクタ内の最後から２番目の８バイトとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のＵＳＢ  ＲＷを介してメモリカード２が用いられる場合も、ＵＳＢ  ＲＷを挿入されているＰＣ上のソフトウェアを用いて最高位上書き型論理アドレスのメモリカード２からの読み出しが可能となる。
【００９４】
［３−４］カードタイプフラグ
メモリカード２のタイプとそれに応じた書き込み方式を示すフラグがレジスタ１５のうちのレジスタＣＳＤに記載される。図１６は、レジスタＣＳＤの詳細の一例を示している。
【００９５】
図１６に示すように、ＣＳＤに従来から定義されている領域に加えて（定義されていない領域を用いて）、３つの領域が定義される。第０乃至第４ビットが定義済みとして、新たに定義されるビットＣＴ、ＯＷ、ＦＣが、第５、６、７ビットに設けられる例が示されている。
【００９６】
ビットＣＴ（レジスタＣＴ）は、管理データへの論理アドレスの割り当てに対する制限について示している。例えば、“０”は、メモリカード２への書き込みの際、管理データ（特に、ディレクトリエントリ）にどの論理アドレスが割り当てられても構わないことを示している。一方、例えば“１”は、本発明の一実施形態のように、管理データに、所定の範囲の論理アドレスが割り当てられなければならないことを示している。
【００９７】
ビットＯＷ（レジスタＯＷ）は、ファイルデータの上書きの制限について示している。例えば“０”は、ファイルデータの上書きに制限が課されていないことを示している。一方、例えば、“１”は、本発明に係る一実施形態のように、一部の論理アドレス等について上書きが許可されていない（追記のみ許可）ことを示している。
【００９８】
ビットＦＣ（レジスタＦＣ）は、メモリカード２が、ＦＡＴを書き換える可能性の有無について示している。コントローラによっては、その動作の特性上、ファイルデータを書き込んだ後で自らがＦＡＴを書き換えることがある。この場合、ホストのファイルシステムは、データの書き込み後にＦＡＴを読み出す処理を行う必要がある。このため、ホストのファイルシステムが、ＦＡＴの読み出しが必要かを知得できるように、レジスタＦＣが設けられている。例えば“０”は、メモリカード２がＦＡＴを書き換えることがない（ファイルシステムによるＦＡＴの再読み出し不要）ことを示す。一方、例えば“１”は、メモリカード２がＦＡＴを書き換えることがある（ファイルシステムによるＦＡＴの再読み出し要）ことを示す。
【００９９】
本発明の一実施形態に係るメモリカード２では、ＣＴ＝１、ＯＷ＝１、ＦＣ＝０である。
【０１００】
以上のビットが設けられることにより、ファイルシステムが、メモリカード２の特性を容易に知得することができる。
【０１０１】
［２］動作
次に、図１７乃至図２１を参照して、ホスト１およびメモリカード２の動作について説明する。
【０１０２】
［２−１］メモリカードの初期化
次に、図１７を用いて、メモリカード２の初期化の動作について説明する。図１７は、本発明の一実施形態に係るメモリカードの初期化のフローチャートである。
【０１０３】
コントローラ７は、どの追記型論理アドレスまでデータが割り当てられているかを初期化処理において知るための幾つかの情報を、適宜、メモリ６に書き込んでいる。例えば、追記型論理アドレスを割り当てられたファイルデータの書き込みの際、コントローラ７は、ファイルデータの書き込みに加えて、各ページの冗長領域に書き込み済みを示すフラグを書き込む。また、最後に割り当てられた論理アドレスを含む論理ブロックのアドレスがシステムデータ領域２１に保存されている。
【０１０４】
図１７に示すように、電源供給の開始に際して初期化コマンドを受け取ると、コントローラ７は、初期化処理を開始する。初期化処理Ｓ１は、従来のメモリカードと同じ初期化処理（ステップＳ１ａ）と、追記型論理アドレスの内で割り当て済みの最終の論理アドレスを計算し、その論理アドレスをＲＡＭ１４に書き込む処理（ステップ１ｂ乃至ステップＳ１ｄ）からなる。
【０１０５】
追記型論理アドレスについては、論理ブロックと物理ブロックとの対応が管理されているのみなので、以下の方法によって、最後に割り当てられた１つの論理アドレスが特定される。まず、ステップＳ１ｂにおいて、コントローラ７は、システムデータ領域２１から、最後に割り当てられた論理アドレスを包含する論理ブロックのアドレス（最終割り当て論理ブロックアドレス）を知得する。
【０１０６】
次に、ステップＳ１ｃにおいて、コントローラ７は、最終割り当て論理ブロックに割り当てられている物理ブロック（最終書き込み物理ブロック）内の各ページの冗長領域を検査して、最後に書き込まれたページの物理アドレスを知得する。この結果、コントローラ７は、最終書き込み物理ブロック内の書き込み済みページの数を知得する。次に、ステップＳ１ｄにおいて、コントローラ７は、（最終書き込み論理ブロックアドレスより低位のアドレスの全論理ブロック数×論理ブロック当たりの論理アドレス数＋最終書き込み物理ブロック内の書き込みページ数）によって、最後に割り当てられた論理アドレスを知得する。次に、ステップＳ５において、最後に割り当てられた論理アドレス（最終割り当て論理アドレス）をＲＡＭ１４上に書き込む。
【０１０７】
［２−２］  書き込み
次に、図１８を用いて、メモリカード２内での書き込み動作について説明する。図１８は、本発明の一実施形態に係るメモリカード内での書き込み動作のフローチャートである。
【０１０８】
図１８に示すように、ステップＳ１１において、コントローラ７は、書き込みコマンドと、論理アドレスを割り当てられた書き込みデータとを受信する。
【０１０９】
ステップＳ１２において、コントローラ７は、書き込みデータに割り当てられた論理アドレスが、上書き型論理アドレスであるか否かを判断する。上書き型論理アドレスを割り当てられた書き込みデータであった場合、処理はステップＳ１３に移行する。ステップＳ１３において、コントローラ７は、メモリ６にデータを書き込む。ステップＳ１３において書き込まれるデータは管理データであり、頻繁に上書きされることが予想される。そこで、コントローラ７は、項目［１−２−４］に記載したキャッシュブロックを用いて書き込みを行ってもよい。
【０１１０】
一方、ステップＳ１２での判断の結果、書き込みデータの論理アドレスが追記型であった場合、処理はステップＳ１４に移行する。ステップＳ１４において、コントローラ７は、ＲＡＭ１４を参照して、書き込みデータの論理アドレスが、最終割り当て論理アドレスより大きいか（より高位か）否かを判定する。
【０１１１】
ステップＳ１４での判断の結果、書き込みデータの論理アドレスが最終割り当て論理アドレスより高位でなかった場合、すなわち、上書き要求であった場合、処理はステップＳ１５に移行する。ステップＳ１５において、コントローラ７は、ライトプロテクトエラーをホスト１に送信し、書き込みを拒否した上で、書き込み動作を終了する。
【０１１２】
一方、ステップＳ１４での判断の結果、書き込みデータの論理アドレスが最終割り当て論理アドレスより高位であった場合、処理はステップＳ１６に移行する。書き込みデータは、最後に書き込まれたページを含んでいる物理ブロックとは別の物理ブロック内のページに書き込まれることが求められることがある。ステップＳ１６において、書き込みデータが、最後に書き込まれたページを含んでいる物理ブロック内のページ書き込まれるべきか、別の物理ブロックに書き込まれるべきかが判断される。
【０１１３】
最終書き込みページを含んでいる物理ブロック内のページに書き込まれる場合は、処理はステップＳ１７に移行する。ステップＳ１７において、コントローラ７は、割り当てられた物理ブロック内のページに、書き込みデータを書き込む。この際、コントローラ７は、図１９に示すように、書き込まれるページの冗長領域のビットに、データが書き込み済みの旨のフラグ（例えば“０”）を書き込む。なお、ここで書き込まれる書き込みデータはファイルデータなので、コントローラ７は、多値モードで書き込みデータを書き込むことができる。
【０１１４】
次に、ステップＳ１８において、コントローラ７は、最終割り当て論理アドレスをＲＡＭ１４に書き込む。
【０１１５】
一方、ステップＳ１６において、最終書き込みページを含んでいる物理ブロックとは別の物理ブロック内のページに書き込まれる場合、処理はステップＳ１９に移行する。ステップＳ１９において、書き込みデータが書き込まれる物理ブロックが割り当てられる。ここで、消去済みの物理ブロックが無い場合、コントローラ７は、有効なデータを保持していない物理ブロックを消去し、この物理ブロックに書き込みデータを書き込む。
【０１１６】
次に、ステップＳ２０において、コントローラ７は、書き込みデータが書き込まれた物理ブロックに対応する論理ブロックのアドレスを、最終割り当て論理ブロックアドレスとして設定する。そして、最終書き込み論理ブロックアドレスが、コントローラ７の制御データの一部として、メモリ６に書き込まれる。この後、処理はステップＳ１７に移行する。
【０１１７】
なお、最終割り当て論理アドレスが最高位の追記型論理アドレスと一致していた場合、コントローラ７は、最終割り当て論理アドレスを、最低位の追記型論理アドレスより１つ低位のアドレスに差し替える。すなわち、全ての追記型論理アドレスにデータが割り当てられていない状態を擬似的に作り出す。この結果、コントローラ７による追記が継続される。しかしながら、メモリ６には、最低位から連続する追記型論理アドレスをもともと割り当てられていたデータを物理ブロック（Ａ）において保存しているので、図２０に示すように、コントローラ７は、書き込みデータを通常用意されている予備の物理ブロック（Ｂ）に書き込む。このため、最新のデータの書き込みを行っている論理ブロックには、２つの物理ブロック（Ａ）、（Ｂ）が割り当てられる。この物理ブロック（Ｂ）へのデータ書き込みが終了して、さらに別の物理ブロックへの書き込みが発生すると、予備用であった物理ブロック（Ｂ）が、本来の通常の物理ブロックとして扱われ、物理ブロック（Ａ）が予備用として扱われる。
【０１１８】
また、上記のように、ファイルシステム４はファイルデータには追記方式で論理アドレスを割り当てる。このため、通常は、書き込みデータの論理アドレスは連続している。しかしながら、そうでなく、一部の論理アドレスが飛ばされる場合も起こり得る。例えば、図１９に示すように、連続する論理アドレスＡ乃至Ｅにおいて、論理アドレスＡ、Ｂを割り当てられたデータの書き込み後、論理アドレスＥを割り当てられたデータの書き込みが要求される場合がある。この場合、論理アドレスＣ、Ｄを割り当てられたデータが存在していたとしても、メモリカード２は、これらのデータの内容を保証しない。しかしながら、上記のように、通常は、ファイルデータの論理アドレスは連続しているので、このデータが保証されないという制約は大きな問題とならない。むしろ、飛ばされた論理アドレスのデータを保証するとすると、メモリカード２は、引越し処理を行わなければならない。よって、この制約によって、大きな問題を引き起こさずに、メモリカード２の書き込み速度の低下を回避できる。
【０１１９】
［２−３］  ファイルシステム４の割り当て動作
次に、図２１を参照して、ファイルシステム４による、書き込みデータへの論理アドレスの割り当て動作について説明する。図２１は、本発明の一実施形態に係るファイルシステムによる割り当て動作を示すフローチャートである。
【０１２０】
ファイルシステム４は、書き込みデータへの論理アドレスの割り当てに際して、ステップＳ２１において、レジスタＣＴを参照して、メモリカード２のタイプを判断する。管理データに割り当てることができる論理アドレスの制約がメモリカード２に課されていない場合、すなわち例えばレジスタＣＴ１が０の場合、処理はステップＳ２２に移行する。ステップＳ２２において、ファイルシステム４は、従来のＦＡＴファイルシステムと同じ方法によって、書き込みデータに論理アドレスを割り当てる。
【０１２１】
一方、ステップＳ２１の判断の結果、管理データに割り当てることができる論理アドレスに制約がある場合、処理はステップＳ２３に移行する。ステップＳ２３において、ファイルシステム４は、データ書き込み認証コマンドをメモリカード２に発行し、書き込みを有効にする。
【０１２２】
次に、ステップＳ２４において、ファイルシステム４は、レジスタＣＴを参照して、ファイルデータの上書きが可能か否かを判断する。上書きが許可されている場合、すなわち例えばレジスタＯＷが０の場合、処理はステップＳ２５に移行する。
【０１２３】
ステップＳ２５において、ファイルシステム４は、未割り当ての論理アドレスを探索する。このとき、書き込みデータが割り当てられる論理アドレスの順番の前後、連続しているか、していないか等は問われない。次に、ステップＳ２６において、ファイルシステム４は、探索された未割り当ての論理アドレスを書き込みデータに割り当てる。次に、ステップＳ２７において、ファイルシステム４は、ステップＳ２６での割り当てが反映されるように、ＦＡＴ、ディレクトリエントリの更新を行う。次に、処理はステップＳ２８に移行する。
【０１２４】
一方、ステップＳ２４での判断の結果、上書きが禁止されている場合、処理はステップＳ３１に移行する。ステップＳ３１において、ファイルシステム４は、最終割り当て論理アドレス送信要求コマンドをメモリカード２に発行して、最終割り当て論理アドレスを知得する。次に、ステップＳ３２において、ファイルシステム４は、最終割り当て論理アドレスの次の論理アドレス（およびこれに続く論理アドレス）を書き込みデータに割り当てる。次に、ステップＳ３３において、ファイルシステム４は、ステップＳ３２での割り当てが反映されるように、ＦＡＴ、ディレクトリエントリの更新を行う。次に、処理はステップＳ２８に移行する。
【０１２５】
ステップＳ２８において、ファイルシステム４は、レジスタＦＣを参照して、メモリカード２がＦＡＴを書き換えることがあるか否かを判断する。メモリカード２がＦＡＴを書き換えることが無い場合、処理は終了する。一方、ＦＡＴを書き換えることがあるメモリカード２の場合、ファイルシステム４は、ＦＡＴの内容をメモリカード２から読み出して、その内容を自身が把握しているＦＡＴに反映させる。この後、処理は終了する。
【０１２６】
［２−４］  読み出し
次に、データの読み出し動作について説明する。読み出し動作は、従来のメモリカードと同じである。すなわち、ホスト１は、本発明の一実施形態に係るメモリカード２であることか否かを意識せずに、読み出しコマンドをメモリカード２に供給する。コントローラ７は、読み出しデータの論理アドレスを、論物変換テーブルを用いて物理アドレスに変換する。次いで、メモリカード２は、求められた物理アドレスのページ（物理ブロック）からデータを読み出してホスト１に出力する。
【０１２７】
項目［２−２］で述べたように、１つの論理ブロックに対して２つの物理ブロック（Ａ）、（Ｂ）が割り当てられている場合、適宜、これら２つの物理ブロックから、読み出しデータが読み出される。
【０１２８】
［４］付加的構成
次に、図２２乃至図２４を用いて、ここまでの構成に付加的に用いることができる構成について説明する。
【０１２９】
［４−１］追記型アドレスを割り当てられたデータに対する初期化コマンド
追記型論理アドレスを割り当てられたデータを記憶している全物理ブロック（追記型論理アドレスデータ記憶物理ブロック）を初期化（消去）するためのコマンドが、ＳＤインタフェース５、１１において設けられる。図２２は、追記型論理アドレスデータ記憶物理ブロックの初期化コマンドを受けた際のコントローラ７の処理を示すフローチャートである。
【０１３０】
図２２に示すように、ステップＳ４１において、コントローラ７は、コマンドを受けると、追記型論理アドレスを割り当てられたデータを記憶している全物理ブロックを消去する。一実施形態として全物理ブロックが記型論理アドレスを割り当てられたデータ記憶用のものと上書き型論理アドレスを割り当てられたデータ記憶用のものとに分けられている場合、追記型論理アドレスを割り当てられたデータ記憶用の全物理ブロックが消去される。
【０１３１】
次に、ステップＳ４２において、最終割り当て論理ブロックアドレスを最低位の追記型論理ブロックアドレスに設定する。そして、最終割り当て論理ブロックアドレスを、コントローラ７の制御データとして、メモリ６に保存する。
【０１３２】
次に、コントローラ７は、最終割り当て論理アドレスを、最低位の追記型論理アドレスー１として、ＲＡＭ１４に書き込む。
【０１３３】
以上の処理により、追記型アドレスが全く割り当てられていない状態になる。
【０１３４】
［４−２］ビットマップテーブル
ファイルシステムによっては、いわゆるクラスタビットマップテーブルを作製することがある。クラスタビットマップテーブルは、各クラスタが割り当て済みか否かを示す表であり、例えば、クラスタ番号ごとに、未割り当てであれば“０”、割り当て済みであれば“１”が記載されている。
【０１３５】
クラスタビットマップテーブルも、管理データに属し、頻繁に書き換えられる。そこで、図２３に示すように、クラスタビットマップテーブルに割り当てられるべき論理アドレスを固定し、コントローラ７は、この論理アドレスは上書き型論理アドレスとして扱う。頻繁に書き換えられるようなクラスタビットマップテーブルも管理データとして扱うことによって、データの特性に応じた書き込み方式の適正化が促進される。
【０１３６】
［４−３］上書き型論理アドレスの範囲を変更するための手法
本発明の一実施形態に係るメモリカード２では、管理データに割り当てることができる論理アドレスの数が、メモリ６の記憶容量を考慮してフォーマットによって予め決められる。サブディレクトリエントリに割り当てることができる論理アドレスの容量も規定されている。そこで、例えばサブディレクトエントリ用の容量が不足する場合等、管理データに割り当てることができる容量（上書き型論理アドレスの数）を増やすことが求められる場合がある。また、ファイルシステム４の機能拡張に起因しても、上書き型論理アドレス容量を増やすことが求められることもあり得る。このため、メモリカード２を新たに設計せずとも、上書き型論理アドレスの容量を変更できることが好ましい。そこで、上書き型論理アドレス容量を変更するためのコマンドが、ＳＤインタフェース５、１１において設けられる。図２４は、上書き型論理アドレス容量を変更するための構成を示す図である。
【０１３７】
図２４に示すように、ホスト１は、上書き型論理アドレス容量変更コマンドをメモリカード２に発行する。このコマンド内には、引数として、ホスト１が要求する上書き型論理アドレスの容量が記述されている。コントローラ７は、このコマンドを受けると、上書き型論理アドレスの境界に関する制御データを更新する。次いで、メモリカード２は、上書き型論理アドレス容量と、計算によって求められた追記型論理アドレスの容量とを、レスポンスとして、ホスト１に送信する。上書き型論理アドレス容量変更コマンドを用いれば、上書き型論理アドレスの容量を容易に変更できる。この新たな設定に必要な設定データはシステムデータ領域２１に保存されている。
【０１３８】
なお、上書き型論理アドレスの境界が変更されると、ユーザデータ領域２４内のデータは全て保証されない値になる。
【０１３９】
以上説明したように、本発明の実施形態に係るホスト１（ファイルシステム４）およびメモリカード２（コントローラ７）によれば、ＦＡＴファイルシステムで用いられる管理データに割り当てられる論理アドレスが固定される。そして、管理データは上書きが許可されており、ファイルデータは追記のみが許可される。このように、データの特性（データの量、書き込み頻度）に応じた書き込み方式へと適正化されるので、大容量のメモリカード２であっても高速な書き込みを実現できる。
【０１４０】
また、ＦＡＴファイルシステムを基礎とするファイルシステムが用いられるので、従来のＦＡＴファイルシステムと親和しやすい、ホスト１およびメモリシステム２が実現できる。
【０１４１】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【０１４２】
【図１】メモリシステムの機能ブロック図。
【図２】レジスタの構成を例示する図。
【図３】メモリのメモリ空間の構成を示す図。
【図４】２値モードと多値モードを示す図。
【図５】ＦＡＴファイルシステムによりフォーマットされたメモリ空間を示す図。
【図６】ＦＡＴが保持するデータの一例を示す図。
【図７】ファイルシステムによりフォーマットされたメモリ空間を示す図。
【図８】管理、ファイルデータブロックと書き込み方式との対応を示す図。
【図９】コントローラの書き込み方式と書き込みモードとの対応を示す図。
【図１０】最終割り当て論理アドレスを授受するための構成を示す図。
【図１１】最終割り当て論理アドレスを授受するための構成を示す図。
【図１２】データ書き込みの許可の認証を行うための構成を示す図。
【図１３】データ書き込みの許可の認証を行うための構成を示す図。
【図１４】最高位上書き型論理アドレスをホストが知得するための構成を示す図。
【図１５】最高位上書き型論理アドレスをホストが知得するための構成を示す図。
【図１６】レジスタＣＳＤの詳細の一例を示す図。
【図１７】メモリカードの初期化のフローチャート。
【図１８】メモリカード内での書き込み動作のフローチャート。
【図１９】メモリカードの書き込み処理の結果を示す図。
【図２０】メモリカードの書き込み処理時の一状態を示す図。
【図２１】ファイルシステムによる割り当て動作のフローチャート。
【図２２】追記型論理アドレスデータ記憶物理ブロックの初期化コマンドを受けた際のフローチャート。
【図２３】ビットマップテーブルが割り当てられる論理アドレスを示す図。
【図２４】上書き型論理アドレス容量を変更するための構成を示す図。
【符号の説明】
【０１４３】
１…ホスト装置、２…メモリカード、３…ソフトウェアアプリケーション、４…ファイルシステム、５、１１…ＳＤインタフェース、６…メモリ、７…コントローラ、１２…ＭＰＵ、１３…ＲＯＭ、１４…ＲＡＭ、１５…ＮＡＮＤインタフェース、５１…管理データブロック、５２…ファイルデータブロック。
【図１】
2008171257.tif 000003
【図２】
2008171257.tif 000004
【図３】
2008171257.tif 000005
【図４】
2008171257.tif 000006
【図５】
2008171257.tif 000007
【図６】
2008171257.tif 000008
【図７】
2008171257.tif 000009
【図８】
2008171257.tif 000010
【図９】
2008171257.tif 000011
【図１０】
2008171257.tif 000012
【図１１】
2008171257.tif 000013
【図１２】
2008171257.tif 000014
【図１３】
2008171257.tif 000015
【図１４】
2008171257.tif 000016
【図１５】
2008171257.tif 000017
【図１６】
2008171257.tif 000018
【図１７】
2008171257.tif 000019
【図１８】
2008171257.tif 000020
【図１９】
2008171257.tif 000021
【図２０】
2008171257.tif 000022
【図２１】
2008171257.tif 000023
【図２２】
2008171257.tif 000024
【図２３】
2008171257.tif 000025
【図２４】
2008171257.tif 000026