(57)【特許請求の範囲】
【請求項１】
アクセス装置から受信したコマンドに応じてデータの読み出し、書き込みを行う半導体メモリ装置であって、
複数のセクタからなり、当該複数のセクタのうち連続する特定個のセクタがデータ消去の最小単位としてグループ化され、ファイルシステムで管理に用いられるファイルシステム管理情報を保持する不揮発性メモリと、
上位コマンドにしたがい、前記半導体メモリ装置の内部に持つファイルシステムに基づいて前記不揮発性メモリに対してファイルのアクセスを行うファイルシステムインターフェース制御部と、
下位コマンドにしたがい、前記半導体メモリ装置の内部に持つファイルシステムに基づかず前記不揮発性メモリに対してファイルのアクセスを行う低レベルＩＯインターフェース制御部と、
前記アクセス装置から前記上位コマンド又は前記下位コマンドを受信し、当該受信したコマンドに応じてファイルシステムインターフェース制御部又は低レベルＩＯインターフェース制御部を制御する同期制御部と、
前記ファイルシステムインターフェース制御部が前記不揮発性メモリにアクセスして読み出したファイルシステムに関する情報と、オープン中のファイルに関する情報であるオープンファイル情報とを含むファイルシステム管理情報をファイル管理のために保持する一時メモリと、を備え、
前記上位コマンドは、前記半導体メモリ装置内部のファイルシステムに基づいたファイルのアクセスを要求するためのコマンドであり、
前記下位コマンドは、前記アクセス装置内部のファイルシステムに基づいたファイルのアクセスを要求するためのコマンドであり、
前記同期制御部は、前記受信した下位コマンドが、前記一時メモリにファイル管理のために保持した前記ファイルシステム管理情報に含まれるオープンファイル情報が変化することを示す場合、当該オープンファイル情報を更新する、
半導体メモリ装置。
【請求項２】
前記ファイルシステムインターフェース制御部及び前記低レベルＩＯインターフェース制御部は、前記不揮発性メモリの共通の領域に存在するファイルにアクセスする、請求項１に記載の半導体メモリ装置。
【請求項３】
前記上位コマンドは、少なくとも、ファイルの生成を指示するコマンド、ファイルの消去を指示するコマンド、及びファイルへのデータ書き込みを指示するコマンドのいずれかを含む、請求項１または２に記載の半導体メモリ装置。
【請求項４】
前記下位コマンドは、少なくとも、データの読み出しを指示するコマンド、データの書き込みを指示するコマンド、データの消去を指示するコマンドのいずれかを含む、請求項１または２に記載の半導体メモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに格納したデータをファイルシステムにより管理する半導体メモリ装置に関する。
【背景技術】
【０００２】
音楽コンテンツや、映像データ等のデジタルデータを記録する記録媒体には、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ装置等、様々な種類の記録媒体が存在する。半導体メモリ装置は、例えばカード形に構成され、記録素子としてフラッシュＲＯＭ等の半導体不揮発性メモリを使用している。以下半導体メモリカードとして説明するが、他の形状の半導体メモリ装置にも本発明が適用される。半導体メモリカードは記録媒体の小型化が図れることから、デジタルスチルカメラや携帯電話端末等、小型の携帯機器を中心に急速に普及しつつある。
【０００３】
半導体メモリカードに格納されたデータは、ファイルシステムにより管理されており、ユーザは格納されたデータをファイルとして容易に取り扱うことができる。従来使用されているファイルシステムとして、ＦＡＴファイルシステム（非特許文献１を参照）がある。又ＵＤＦファイルシステム（Ｕｎｉｖｅｒｓａｌ  Ｄｉｓｋ  Ｆｏｒｍａｔ）（非特許文献２を参照）があり、更にＮＴＦＳファイルシステム（Ｎｅｗ  Ｔｅｃｈｎｏｌｏｇｙ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等が存在する。これらファイルシステムによりデータが管理された半導体メモリカードは、同一のファイルシステムを解釈する機器間でファイルを共有することができる。このため、機器間でデータを授受することが可能となる。
【０００４】
ファイルシステムでは、データを記録する情報記録領域を、最小アクセス単位であるセクタ、及びセクタの集合であるクラスタに分割して管理し、１つ以上のクラスタをファイルとして管理する。ファイルのデータが格納される領域は、空き領域からクラスタ単位で割り当てられ、１つのファイルのデータが必ずしも連続領域に格納されるとは限らない。連続領域に格納されていないファイルのデータを読み書きする場合、読み書きの間にシーク動作が発生するため、連続領域に格納されたファイルのデータに比べ、読み書き速度が低下するという問題がある。
【０００５】
従来、このような問題を解決する方法として、画像処理装置において原稿１頁分のデータが連続領域に格納されるように、データ書き込みを制御する方法が例えば特許文献１に提案されている。この従来の方法では、データ書き込み時に固定長の連続領域に必ずデータを書き込むことで、データ読み出し時に一定の処理時間で処理が完了できることを保証している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−２９１０１号公報
【非特許文献】
【０００７】
【非特許文献１】ＩＳＯ／ＩＥＣ９２９３、“Information  technology−Volume  and  file  structure  of  disk  cartridges  for  information”、１９９４年
【非特許文献２】OSTA  Universal  Disk  Format  Specification  Revision  １．５０、１９９７年
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来技術には次のような問題点がある。従来の制御方法では、画像処理装置の処理単位である原稿１頁分のデータサイズを連続領域の単位として使用している。すなわち、アプリケーションが取り扱うデータに適したサイズを基に連続領域の単位を決定している。この方法は、記録媒体への書き込み単位の違いにより書き込み速度に差が生じない記録媒体には有効である。しかしながら、半導体メモリカードでは、書き込み単位が書き込み速度に大きく影響し、かつ書き込み単位と書き込み速度の関係は、使用する半導体メモリの特性や管理方法により異なる。このため、全ての半導体メモリカードにおいて最適なアクセス方法は一意に定まらず、従来例のようにデータサイズを固定しても、全ての半導体メモリカードに対し高速にアクセスすることはできない。
【０００９】
本発明では上記問題点に鑑み、半導体メモリカード内に半導体メモリカードの特性に関する情報を格納し、その情報を基に半導体メモリカードの特性に適したファイルアクセスを行うファイルシステムインターフェース制御部を半導体メモリカード内に備えることにより、アクセス装置が半導体メモリカードの特性を意識することなく、最適なファイルアクセスを行えるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明による半導体メモリ装置は、アクセス装置から受信したコマンドに応じてデータの読み出し、書き込みを行う半導体メモリ装置である。半導体メモリ装置は、複数のセクタからなり、当該複数のセクタのうち連続する特定個のセクタがデータ消去の最小単位としてグループ化され、ファイルシステムで管理に用いられるファイルシステム管理情報を保持する不揮発性メモリと、上位コマンドにしたがい、半導体メモリ装置の内部に持つファイルシステムに基づいて前記不揮発性メモリに対してファイルのアクセスを行うファイルシステムインターフェース制御部と、下位コマンドにしたがい、半導体メモリ装置の内部に持つファイルシステムに基づかず前記不揮発性メモリに対してファイルのアクセスを行う低レベルＩＯインターフェース制御部と、アクセス装置から上位コマンド又は下位コマンドを受信し、当該受信したコマンドに応じてファイルシステムインターフェース制御部又は低レベルＩＯインターフェース制御部を制御する同期制御部と、前記ファイルシステムインターフェース制御部が前記不揮発性メモリにアクセスして読み出したファイルシステム管理情報をファイル管理のために保持する一時メモリと、を備える。上位コマンドは、半導体メモリ装置内部のファイルシステムに基づいたファイルのアクセスを要求するためのコマンドであり、下位コマンドは、アクセス装置内部のファイルシステムに基づいたファイルのアクセスを要求するためのコマンドである。同期制御部は、受信した下位コマンドが、前記一時メモリにファイル管理のために保持したファイルシステム管理情報に含まれるオープンファイル情報が変化することを示す場合、当該オープンファイル情報を更新する。
【発明の効果】
【００１２】
本発明によれば、格納データをファイルシステムより管理している半導体メモリ装置において、半導体メモリ装置の特性に関する情報を格納するメモリ装置情報格納部と、そのメモリ装置情報を基に半導体メモリ装置の特性に適したファイルアクセスを行うファイルシステムインターフェース制御部とを半導体メモリ装置内に備えることにより、アクセス装置が半導体メモリ装置の特性を意識することなく、最適なファイルアクセスを行うことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】図１は本発明の実施の形態１における半導体メモリカード及びアクセス装置の構成図である。
【図２】図２は実施の形態１における消去ブロックとセクタとの関係例を示した説明図である。
【図３】図３は実施の形態１における半導体メモリカードへの消去ブロック倍数長のデータ書き込み処理を示したフローチャートである。
【図４】図４は実施の形態１における半導体メモリカードへの１セクタ分のデータ書き込み処理を示したフローチャートである。
【図５】図５は本発明の各実施の形態に用いられるＦＡＴファイルシステムの構成図である。
【図６】図６は実施の形態１におけるＦＡＴファイルシステムのデータ書き込み処理を示したフローチャートである。
【図７】図７は実施の形態１におけるＦＡＴファイルシステムのデータ書き込み前の状態を示した説明図である。
【図８】図８は実施の形態１におけるＦＡＴファイルシステムのデータ書き込み後の状態を示した説明図である。
【図９】図９は実施の形態１におけるファイルシステムＡＰＩの一覧を示した説明図である。
【図１０】図１０は実施の形態１におけるアクセス装置の内部処理を示したフローチャートである。
【図１１】図１１は実施の形態１における半導体メモリカード内部のカード種別取得コマンド処理を示したフローチャートである。
【図１２】図１２は実施の形態１における半導体メモリカード内部のＯＰＥＮコマンド処理を示したフローチャートである。
【図１３】図１３は実施の形態１における半導体メモリカード内部のＷＲＩＴＥコマンド処理を示したフローチャートである。
【図１４】図１４は実施の形態１における半導体メモリカード内部のＣＬＯＳＥコマンド処理を示したフローチャートである。
【図１５】図１５は実施の形態１におけるデータ配置例を示した説明図である。
【図１６】図１６は本発明の実施の形態２（その１）における半導体メモリカード及びアクセス装置の構成図である。
【図１７】図１７は本発明の実施の形態２（その２）における半導体メモリカード及びアクセス装置の構成図である。
【図１８】図１８は実施の形態２における低レベルＩＯＡＰＩの一覧を示した説明図である。
【図１９】図１９は実施の形態２におけるアクセス装置の内部処理を示したフローチャートである。
【図２０】図２０は実施の形態２におけるアクセス装置内部のファイルシステム制御部におけるファイルオープン処理を示したフローチャートである。
【図２１】図２１は実施の形態２におけるアクセス装置内部のファイルシステム制御部におけるファイルデータ書き込み処理を示したフローチャートである。
【図２２】図２２は実施の形態２におけるアクセス装置内部のファイルシステム制御部におけるファイルクローズ処理を示したフローチャートである。
【図２３】図２３は本発明の実施の形態３における半導体メモリカード及びアクセス装置の構成図である。
【図２４】図２４は実施の形態３におけるフォーマット後のファイルシステムの構成例を示した説明図である。
【図２５】図２５は本発明の実施の形態４における半導体メモリカード及びアクセス装置の構成図である。
【図２６】図２６は実施の形態４における半導体メモリカード内部のＲＡＭにおけるデータ格納例を示した説明図である。
【図２７】図２７は実施の形態４におけるキャッシュ管理テーブルの一例を示した説明図である。
【図２８】図２８は実施の形態４における半導体メモリカード内部の同期制御部における処理手順を示したフローチャートである。
【図２９】図２９は本発明の実施の形態５における半導体メモリカード及びアクセス装置の構成図である。
【図３０】図３０は実施の形態５における半導体メモリカード内部処理を示したフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の半導体メモリ装置の実施の形態について半導体メモリカードを例として、図面を参照しつつ説明する。
（実施の形態１）
図１は本発明の実施の形態１における半導体メモリカード及びアクセス装置の要部構成図である。図１においてアクセス装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、スロット１０３、ＲＯＭ１０４を含む。ＲＯＭ１０４にはアクセス装置１００を制御するプログラムが格納されている。このプログラムはアプリケーションプログラム１０５とカードインターフェース制御部（カードＩ／Ｆ制御部）１０６の機能を達成するための制御プログラムとを含み、ＲＡＭ１０２を一時記憶メモリの領域として使用し、ＣＰＵ１０１上で動作する。
【００１５】
スロット１０３は、半導体メモリカード１１０とアクセス装置１００との接続部であり、スロット１０３を経由してアクセス装置１００と半導体メモリカード１１０間で制御信号及びデータが送受信される。ＲＯＭ１０４内のアプリケーションプログラム１０５は、アクセス装置１００全体の制御を行い、カードインターフェース制御部１０６は、アクセス装置１００から半導体メモリカード１１０に対するアクセスの制御を行う。
【００１６】
一方、図１において半導体メモリカード１１０は、ホストインターフェース部（ホストＩ／Ｆ部）１１１、ＣＰＵ１１２、ＲＡＭ１１３、メモリコントローラ１１４、不揮発性メモリ１１５、メモリ１１６、ＲＯＭ１１７を含む。ホストインターフェース部１１１は、半導体メモリカード１１０の外部に存在するアクセス装置１００から制御信号を含むコマンドとデータとを受信すると共に、アクセス装置１００に対して応答を送受するインターフェースである。ＲＯＭ１１７には半導体メモリカード１１０を制御するプログラムが格納されており、このプログラムはＲＡＭ１１３を一時記憶領域として使用し、ＣＰＵ１１２上で動作する。ＲＯＭ１１７は更に、不揮発性メモリ１１５上のデータをファイルとして管理するためのファイルシステム制御を行うファイルシステムインターフェース制御部（ファイルシステムＩ／Ｆ制御部）１２０を含む。
【００１７】
メモリコントローラ１１４は、ホストインターフェース部１１１を介してアクセス装置１００から制御信号を含むコマンドが入力されたとき、不揮発性メモリ１１５に対するデータの消去、書き込み、読み出しを制御するものである。不揮発性メモリ１１５は、ユーザデータ等が格納されるデータ記憶領域を有し、ファイルシステムインターフェース制御部１２０により制御されるファイルシステム管理領域１１８を含む。メモリ１１６は更新可能な不揮発性メモリであり、半導体メモリカード１１０のカード情報を格納するカード情報格納部１１９を有している。カード情報格納部１１９は一般的には装置情報格納部である。カード情報は、後述するように不揮発性メモリ１１５の半導体メモリカードの物理的特性、例えば消去ブロックサイズやカード種別に関する情報である。
【００１８】
続いて、半導体メモリカード１１０の記録素子として使用する不揮発性の半導体メモリの特徴について説明する。半導体メモリは、小型及び軽量の情報記録媒体を構成することが可能であり、様々な技術分野における情報記録媒体としての確固たる地位を築きつつある。半導体メモリはＥＥＰＲＯＭ又はフラッシュＲＯＭと呼ばれる不揮発性メモリを情報記録用の素子として使用している（以下、フラッシュメモリという）。本実施の形態の不揮発性メモリ１１５は、データ消去の最小単位である多数のブロックを有する。各ブロックは複数の連続する特定数のセクタからなる。不揮発性メモリ１１５はホストインターフェース部１１１を介してアクセス装置１００からデータが読み書きされる。
【００１９】
特に多くの不揮発性メモリで使用されるＮＡＮＤ型のフラッシュメモリには、データを書き込む前に一旦書き込み先に記録されているデータを消去して、未記録の状態に戻してからデータの書き込みを行わなければならないという特徴がある。ここでデータを消去する単位は消去ブロックと呼ばれ、アクセスの最小単位であるセクタが複数個、例えば連続する２のｉ乗個のセクタ（ｉは０以上の整数）が集まったブロックとして管理されている。図２はフラッシュメモリにおける消去ブロックとセクタとの関係の一例を示した説明図である。図２の例では、１つの消去ブロックはｉ＝５即ち３２セクタから構成されている。アクセスはセクタ（例えば５１２バイト）単位で行うことが可能であるが、書き込みに先立ち必要となるデータの消去処理は消去ブロック（１６ＫＢ）単位で行われる。
【００２０】
この半導体メモリカード１１０におけるデータ消去及び書き込み処理の例を、図３及び図４を用いて説明する。図３及び図４は書き込み処理の一例を示すフローチャートである。特に図３は消去ブロックの倍数長のデータを書き込む場合における半導体メモリカード１１０内部の処理手順を示し、図４は１セクタのデータを書き込む場合における半導体メモリカード１１０内部の処理手順を示している。
【００２１】
図３におけるデータ記録処理では、まずアクセス装置１００から送信されたコマンドと引数を、ホストインターフェース部１１１を介して受信する（Ｓ３０１）。次に、受信したコマンドを参照し、自身が認識できない不正コマンドか否かを判定する（Ｓ３０２）。不正コマンドの場合（Ｓ３０２のＹ，Ｙｅｓの意味、以下同様）、アクセス装置１００にエラーを通知して処理を終了する（Ｓ３０３）。認識可能なコマンドの場合（Ｓ３０２のＮ，Ｎｏの意味、以下同様）、そのコマンドが書き込みコマンドであるかを判定する（Ｓ３０４）。書き込みコマンド以外の場合、各コマンドに対応した他の処理を実施する（Ｓ３０５）。書き込みコマンドの場合、コマンドと共に指定された引数が正しいかを判定する（Ｓ３０６）。不正な引数と判定した場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ３０７）。
【００２２】
引数が正しいと判定した場合、引数に格納された書き込み位置や書き込みサイズの情報から、実際にフラッシュメモリにデータを書き込む消去ブロックの物理アドレスを決定する（Ｓ３０８）。次いで、書き込みに先立ち、メモリコントローラ１１４を介して、フラッシュメモリに存在し、Ｓ３０８で決定した消去ブロック（物理ブロック）に存在するデータを消去する（Ｓ３０９）。次に、アクセス装置１００から１セクタ分のデータを、ホストインターフェース部１１１を介して受信する（Ｓ３１０）。データの受信を完了すると、受信した１セクタ分のデータを、メモリコントローラ１１４を介して不揮発性メモリ１１５へ書き込む（Ｓ３１１）。Ｓ３１０のデータ受信処理及びＳ３１１の書き込み処理を、１消去ブロック分のデータ書き込みが完了するまで繰り返し実施する（Ｓ３１２）。Ｓ３０８からＳ３１２までの１消去ブロック分のデータ書き込み処理を、アクセス装置１００から指定された書き込みサイズ分のデータ書き込みが完了するまで繰り返し実施する（Ｓ３１３）。アクセス装置１００から指定された書き込みサイズ分のデータ書き込みが完了した場合は処理を終了する。
【００２３】
図４におけるデータ記録処理において、Ｓ４０１〜Ｓ４１１の処理は図３のＳ３０１〜Ｓ３１１の処理と同じである。図３の処理と異なる点は、Ｓ４１２において書き込みを行う消去ブロックに含まれるデータのうち、アクセス装置１００からデータを受信する１セクタ以外のデータを、Ｓ４０８で決定した消去ブロックに書き込む点である。ＮＡＮＤ型のフラッシュメモリでは、データ書き込みに先立ち一旦データを消去する必要がある。この消去処理は消去ブロック単位でしか行えないため、１セクタのデータだけを書き込む場合でも、１消去ブロック分のデータ消去が必要である。更にＳ４１２の処理に示すように、データが更新されたセクタと同一の消去ブロックに含まれる他のセクタの既存データを新しい消去ブロックに書き戻す必要がある。
【００２４】
図３及び図４で示したようにデータ記録処理では、大きく分けてコマンド解釈処理、データ消去処理、データ書き込み処理の３つの処理が存在する。例えば、コマンド解釈のオーバーヘッドに３ｍ秒、１セクタの書き込み処理に２００μ秒、１消去ブロック（１６ＫＢ）の消去処理に２ｍ秒かかるフラッシュメモリを想定する。このフラッシュメモリの１消去ブロック（１６ＫＢ）の書き込みでは図３に示す処理が実行され、コマンド解釈に３ｍ秒、消去処理に２ｍ秒、書き込み処理に３２×２００μ秒かかり、合計１１．４ｍ秒となる。
【００２５】
同様に１セクタ（５１２Ｂ）の書き込みでは図４に示す処理が実行され、コマンド解釈に３ｍ秒、消去処理に２ｍ秒、書き込み処理に２００μ秒＋３１×２００μ秒かかり、合計１１．４ｍ秒となる。すなわち、１６ＫＢのデータを書き込んだ場合と１セクタのデータを書き込んだ場合では、ほぼ同じ時間がかかることになる。この例ではデータ転送時間等を考慮せず極端に性能差が出る場合について説明したが、実際のフラッシュメモリにおいても消去ブロック単位で書き込みを行った場合に書き込み時間が最短になる。
【００２６】
また、半導体メモリカード１１０の記録素子として使用するフラッシュメモリの枚数は１枚とは限らず、複数枚使用して並列処理することにより、アクセス性能を高めた半導体メモリカード１１０が存在する。このような半導体メモリカード１１０では、複数の消去ブロックを管理単位としてフラッシュメモリを制御しており、この管理単位で書き込みを行った場合に書き込み時間が最短となる。このように半導体メモリカード１１０のアクセス特性は、使用するフラッシュメモリの種類や枚数、フラッシュメモリの管理方法等に依存し、半導体メモリカード１１０の世代や製造者の違いにより、アクセス特性は異なる。カード情報格納部１１９に格納されるカード情報は、物理的特性とカード種別情報を有する。物理的特性はコマンド解釈のオーバヘッド、１セクタの書き込み処理時間、１消去ブロックの消去時間、消去ブロックサイズ等や最適アクセス単位の情報、あるいは最適アクセス単位を決定するために必要なカード情報を含み、カード種別情報は半導体メモリカードのバージョン情報を含む。
【００２７】
続いて、半導体メモリカード１１０内の不揮発性メモリ１１５に格納されたデータを管理するファイルシステムの一例として、ＦＡＴファイルシステムを説明する。図５にＦＡＴファイルシステムの構成を示す。ファイルシステム管理領域１１８は、半導体メモリカード１１０内の不揮発性メモリ１１５におけるファイルシステムで管理する領域を意味する。ＦＡＴファイルシステムでは、ファイルシステム管理領域１１８の先頭にファイルシステム管理領域の全体を管理するための管理情報領域５０１が存在し、引き続いてファイル内のユーザデータ等を格納するデータ領域５０２が存在する。管理情報領域５０１は、マスターブートレコード・パーティションテーブル（ＭＢＲ・ＰＴ）５０３、パーティションブートセクタ（ＰＢＳ）５０４、ＦＡＴ５０５、ＦＡＴ５０６、ルートディレクトリエントリ（ＲＤＥ）５０７から構成される。
【００２８】
マスターブートレコード・パーティションテーブル５０３は、ファイルシステム管理領域を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納する部分である。パーティションブートセクタ５０４は、１つのパーティション内の管理情報を格納する部分である。ＦＡＴ５０５、５０６は、ファイルに含まれるデータの物理的な格納位置を示す部分である。ルートディレクトリエントリ５０７は、ルートディレクトリ直下に存在するファイルやディレクトリの情報を格納する部分である。また、ＦＡＴ５０５、５０６は、ファイルに含まれるデータの物理的な格納位置を示す重要な領域であることから、通常はファイルシステム管理領域１１８内に２つの同じ情報を持つＦＡＴ５０５、５０６を設けることにより二重化されている。
【００２９】
データ領域５０２は複数のクラスタに分割され管理されており、各クラスタにはファイルに含まれるデータが格納されている。多くのデータを格納するファイル等は、複数のクラスタに跨ってデータを格納しており、各クラスタ間の繋がりは、ＦＡＴ５０５、５０６に格納されたリンク情報により管理されている。
【００３０】
次に図６、図７、図８を用いてＦＡＴファイルシステムにおけるファイルデータの書き込み例を説明する。図６はＦＡＴファイルシステムにおけるファイルデータの書き込み処理手順を示したフローチャートである。図７、図８はそれぞれ書き込み処理前、書き込み処理後のディレクトリエントリ７０１、ＦＡＴ５０５、５０６、データ領域５０２の一例を示した説明図である。ＦＡＴファイルシステムでは、ルートディレクトリエントリ５０７やデータ領域５０２の一部に、ファイル名やファイルサイズ、ファイル属性等の情報を格納したディレクトリエントリ７０１が格納されており、図７（ａ）にディレクトリエントリ７０１の一例が示されている。このディレクトリエントリ７０１で示されるファイル例では、ファイル名がＦＩＬＥ１．ＴＸＴであり、クラスタ番号１０からのファイルのデータが格納されている。また、ファイルサイズは１６０００バイトである。図７では１クラスタの大きさを４０９６バイトと仮定しており、４クラスタに跨ってファイルのデータが格納されている。
【００３１】
図６を用いてファイルデータの書き込み処理を説明する。ファイルデータ書き込み処理では、まず始めに対象ファイルのディレクトリエントリ７０１を読み込む（Ｓ６０１）。次に、読み込んだディレクトリエントリ７０１に格納されたファイルの開始クラスタ番号を取得し、ファイルデータの先頭位置を確認する（Ｓ６０２）。次に、ＦＡＴ５０５、５０６を読み出し、Ｓ６０２で取得したファイルデータの先頭位置から順にＦＡＴ５０５、５０６上でリンクを辿り、書き込み位置のクラスタ番号を取得する（Ｓ６０３）。
【００３２】
次に、データ書き込みに際し、ファイルに新たに空き領域を割り当てる必要があるか判定する（Ｓ６０４）。空き領域の割り当てが不要な場合Ｓ６０６の処理に進む。空き領域の割り当てが必要な場合、ＦＡＴ５０５、５０６上で空き領域を検索し、１クラスタの空き領域をファイルの終端に割り当てる（Ｓ６０５）。次に、現在参照しているクラスタ内に書き込めるだけのデータをデータ領域５０２に書き込む（Ｓ６０６）。次に、全データの書き込みが完了したかを判定する（Ｓ６０７）。まだデータが残っている場合、Ｓ６０４の処理に戻る。全データの書き込みが完了した場合、ディレクトリエントリ７０１内に格納されたファイルサイズやタイムスタンプ等を更新し、半導体メモリカード１１０に書き込む（Ｓ６０８）。最後にＦＡＴ５０５、５０６を半導体メモリカード１１０に書き込み、処理を完了する（Ｓ６０９）。
【００３３】
このようなファイルデータの書き込み処理により、図７に示された１６０００バイトのデータを持つＦＩＬＥ１．ＴＸＴに１０００バイトのデータを更に書き込んだ場合、図８に示されるような１７０００バイトのデータを持つファイルに変化する。
【００３４】
このようにＦＡＴファイルシステムでは、ファイルデータの格納領域としてクラスタ単位で領域割り当てが行われ、データが格納される。また、１つのファイルに割り当てられる複数のクラスタは必ずしも連続しているとは限らず、不連続な領域が割り当てられる可能性がある。最悪の場合、クラスタ単位に分割された不連続領域にファイルデータが書き込まれることになる。この場合、半導体メモリカード１１０に対する１回のアクセスサイズは１クラスタ以下の大きさとなり、半導体メモリカード１１０に対して最も高速にアクセスするために必要なアクセス単位がクラスタサイズよりも大きい場合、半導体メモリカード１１０の最高性能でアクセスすることができなくなる。このような問題はＦＡＴファイルシステムに限らず、他のファイルシステムにおいても発生する。
【００３５】
そのため本実施の形態では、半導体メモリカード１１０の物理的特性を含むカード情報を格納するカード情報格納部１１９を設ける。そしてそのカード情報を基に半導体メモリカード１１０の物理的特性に適したファイルアクセスを行うために、ファイルシステムインターフェース制御部１２０を半導体メモリカード１１０内に備える。このことにより、アクセス装置１００が半導体メモリカード１１０のアクセス特性を意識することなく、最適なファイルアクセスを行うことができる。
【００３６】
続いて本実施の形態におけるファイルシステムインターフェース制御部１２０の機能について説明する。本実施の形態では、半導体メモリカード１１０内の不揮発性メモリ１１５上に構築されたファイルシステムを、半導体メモリカード１１０内のファイルシステムインターフェース制御部１２０が制御する。そのため、アクセス装置１００は、半導体メモリカード１１０内の不揮発性メモリ１１５に格納されたファイルにアクセスするために、ファイルアクセス要求を半導体メモリカード１１０に発行する。
【００３７】
図９は、ファイルシステムインターフェース制御部１２０がアクセス装置１００から受け付ける上位のコマンド群（以下、ファイルシステムＡＰＩという）の一覧を示した図である。図９に示すように、ファイルシステムインターフェース制御部１２０は、アクセス装置１００から、ＯＰＥＮ（ファイルのオープン）や、ＣＬＯＳＥ（ファイルのクローズ）、ＲＥＡＤ（ファイルからデータを読み込む）、ＷＲＩＴＥ（ファイルへデータを書き込む）等のファイルアクセス要求を受け付け、アクセス装置１００に対してファイルシステムの機能を提供する。即ちファイルシステムインターフェース制御部１２０は、カード情報格納部１１９に格納されたカード情報に基づいて、不揮発性メモリ１１５内に格納したデータをファイルとして管理し、ホストインターフェース部１１１を介してアクセス装置１００から入力されたコマンドに基づいて、不揮発性メモリ１１５上のファイルに対するオープン、クローズ、リード、ライトを含むファイルアクセス処理を実施する。
【００３８】
このような方法により、アクセス装置１００側にはファイルシステムを備える必要がなくなる。ファイルシステムの機能は全て半導体メモリカード１１０側から提供されることになる。
【００３９】
次に図１０〜図１４を用いて、アクセス装置１００がファイルシステムインターフェース制御部１２０を介してファイルにアクセスする例を説明する。ここでは、ファイルにアクセスする例として、ルートディレクトリ直下にファイルを作成し、データを書き込む例について説明する。図１０はアクセス装置１００側の処理手順を示すフローチャートである。図１１、図１２、図１３、図１４は夫々アクセス装置１００が半導体メモリカード１１０に発行するカード種別取得コマンド、ＯＰＥＮコマンド、ＷＲＩＴＥコマンド、ＣＬＯＳＥコマンドにおける半導体メモリカード１１０側の処理手順を示したフローチャートである。
【００４０】
まず始めに図１０を用いてアクセス装置１００側の処理手順を説明する。まずアクセス装置１００は半導体メモリカード１１０に対し、半導体メモリカード１１０のバージョン等の情報であるカード種別情報を取得するために、カード種別取得コマンドを発行する（Ｓ１００１）。次に、発行したコマンドにより半導体メモリカード１１０からカード種別情報が取得できたかを判定する（Ｓ１００２）。取得に失敗した場合はエラーが発生したと判断し、処理を終了する（Ｓ１００３）。
【００４１】
取得に成功した場合、半導体メモリカード１１０がファイルシステムＡＰＩに対応しているかを判定する（Ｓ１００４）。対応していない半導体メモリカード１１０であれば、ファイルシステムＡＰＩを用いたアクセスが行えないため、処理を終了する（Ｓ１００５）。対応している半導体メモリカード１１０であれば、ファイルを作成するために、半導体メモリカード１１０に対し、ファイル名を指定してＯＰＥＮコマンドを発行する（Ｓ１００６）。
【００４２】
次に、発行したＯＰＥＮコマンドによる処理が成功したかを判定する（Ｓ１００７）。処理に失敗した場合はエラー終了する（Ｓ１００８）。処理に成功した場合、ＯＰＥＮコマンドのレスポンスとして、作成したファイルにアクセスするために使用するファイルハンドル（識別子）を半導体メモリカード１１０から取得する。次にファイルに格納するデータを作成する（Ｓ１００９）。次に、作成したデータをファイルに書き込むために、ＯＰＥＮコマンドにより取得したファイルハンドル、書き込みサイズ、作成したデータ等を指定し、半導体メモリカード１１０に対しＷＲＩＴＥコマンドを発行する（Ｓ１０１０）。
【００４３】
次に、発行したＷＲＩＴＥコマンドによる処理が成功したかを判定する（Ｓ１０１１）。処理に失敗した場合はエラー終了する（Ｓ１０１２）。処理に成功した場合、ファイルハンドルを指定し、半導体メモリカード１１０に対しＣＬＯＳＥコマンドを発行する（Ｓ１０１３）。次に、発行したＣＬＯＳＥコマンドによる処理が成功したかを判定する（Ｓ１０１４）。処理に失敗した場合はエラー終了する（Ｓ１０１５）。処理に成功した場合はファイル作成及びデータ書き込み処理を終了する。
【００４４】
上記処理手順の内、Ｓ１００１、Ｓ１００６、Ｓ１０１０、Ｓ１０１３のコマンド発行処理は、アクセス装置１００内のカードインターフェース制御部１０６が実施し、その他の処理はアプリケーションプログラム１０５が実施する。
【００４５】
次に、図１１から図１４を用いて半導体メモリカード１１０側の処理手順を説明する。図１１はカード種別取得コマンド発行時の半導体メモリカード１１０側の処理手順を示したフローチャートである。まず半導体メモリカード１１０はアクセス装置１００からコマンドを受信する（Ｓ１１０１）。次に、受信したコマンドを参照し、自身が認識できない不正コマンドか否かを判定する（Ｓ１１０２）。不正コマンドの場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１１０３）。認識可能なコマンドの場合、そのコマンドがカード種別取得コマンドであるかを判定する（Ｓ１１０４）。カード種別取得コマンド以外の場合、各コマンドに対応した他の処理を実施する（Ｓ１１０５）。カード種別取得コマンドの場合、カード情報格納部１１９に格納されたカード種別情報を読み出す（Ｓ１１０６）。最後に読み出したカード種別情報をアクセス装置１００に送信し、ここでの処理を終了する（Ｓ１１０７）。
【００４６】
図１２はＯＰＥＮコマンド発行時の半導体メモリカード１１０側の処理手順を示したフローチャートである。まず半導体メモリカード１１０はアクセス装置１００からコマンドを受信する（Ｓ１２０１）。次に、受信したコマンドを参照し、自身が認識できない不正コマンドか否かを判定する（Ｓ１２０２）。不正コマンドの場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１２０３）。認識可能なコマンドの場合、そのコマンドがＯＰＥＮコマンドであるかを判定する（Ｓ１２０４）。
【００４７】
ＯＰＥＮコマンド以外の場合、各コマンドに対応した他の処理を実施する（Ｓ１２０５）。ＯＰＥＮコマンドの場合、コマンドと共に渡された引数が正しいか判定する（Ｓ１２０６）。引数で不正なファイル名を指定した場合等、ＯＰＥＮ処理を実施できないと判断した場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１２０７）。引数が正しい場合、ルートディレクトリエントリ領域（ＲＤＥ）をＲＡＭ１１３に読み込む（Ｓ１２０８）。
【００４８】
次に、ＲＡＭ１１３に読み込んだルートディレクトリエントリ領域内で空きディレクトリエントリを取得する（Ｓ１２０９）。取得に失敗した場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１２１１）。取得に成功した場合、ＯＰＥＮコマンドの引数で指定されたファイル名を持つファイルのディレクトリエントリ（ＤＥ）をＲＡＭ１１３上に作成する（Ｓ１２１２）。次に、ＲＡＭ１１３上に作成したディレクトリエントリを不揮発性メモリ１１５に書き込む（Ｓ１２１３）。
【００４９】
次に、作成したファイルにアクセスするために必要な情報をオープンファイル情報（ＯＦＩ）として、ＲＡＭ１１３上に作成する（Ｓ１２１４）。このオープンファイル情報には、ファイル名、ファイルサイズ、ディレクトリエントリの位置、読み出し専用オープン・書き込み専用オープン等のオープン属性、ファイル内の現在参照位置等が含まれる。最後に、オープンファイル情報を一意に識別するファイルハンドルを作成し、アクセス装置１００に通知して処理を終了する（Ｓ１２１５）。ＯＰＥＮ処理後のファイルアクセスは、このファイルハンドルを使用してアクセスする。
【００５０】
図１３はＷＲＩＴＥコマンド発行時の半導体メモリカード１１０側の処理手順を示した図である。まず半導体メモリカード１１０はアクセス装置１００からコマンドを受信する（Ｓ１３０１）。次に、受信したコマンドを参照し、自身が認識できない不正コマンドか否かを判定する（Ｓ１３０２）。不正コマンドの場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１３０３）。認識可能なコマンドの場合、そのコマンドがＷＲＩＴＥコマンドであるかを判定する（Ｓ１３０４）。ＷＲＩＴＥコマンド以外の場合、各コマンドに対応した他の処理を実施する（Ｓ１３０５）。
【００５１】
ＷＲＩＴＥコマンドの場合、コマンドと共に渡された引数が正しいか判定する（Ｓ１３０６）。引数で不正なファイルハンドルを指定した場合等、ＷＲＩＴＥ処理を実施できないと判断した場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１３０７）。引数が正しい場合、ファイルハンドルを基にＲＡＭ１１３上のオープンファイル情報（ＯＦＩ）を特定する（Ｓ１３０８）。次に、特定したオープンファイル情報を参照し、ファイル内の現在参照位置を確認する（Ｓ１３０９）。現在参照位置は次にデータを書き込む位置であり、ファイルの終わりから追記する場合には空き領域の取得が必要となる。
【００５２】
次に、データ書き込みに先立ち、空き領域の取得が必要かを判定する（Ｓ１３１０）。空き領域の取得が不要な場合、Ｓ１３１５の処理に進む。空き領域の取得が必要な場合、ＲＡＭ１１３上のＦＡＴを参照し、空きクラスタを取得する（Ｓ１３１１）。ここでは、ＦＡＴが予め不揮発性メモリ１１５からＲＡＭ１１３に読み込まれていると想定する。取得に失敗した場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１３１３）。取得に成功した場合、ＲＡＭ１１３上でＦＡＴを更新し、Ｓ１３１１で取得した空きクラスタを使用中クラスタに変更する（Ｓ１３１４）。
【００５３】
次に、不揮発性メモリ１１５内のＳ１３１１で取得した空きクラスタ位置に、データを書き込む（Ｓ１３１５）。Ｓ１３１０からＳ１３１５までの処理を、全データの書き込みが完了するまで繰り返す（Ｓ１３１６）。全データの書き込みが完了した場合、ＲＡＭ１１３上のオープンファイル情報に格納されたファイルサイズ等の情報を更新する（Ｓ１３１７）。最後に処理完了をアクセス装置１００に通知して処理を終了する（Ｓ１３１８）。
【００５４】
図１４はＣＬＯＳＥコマンド発行時の半導体メモリカード１１０側の処理手順を示したフローチャートである。まず半導体メモリカード１１０はアクセス装置１００からコマンドを受信する（Ｓ１４０１）。次に、受信したコマンドを参照し、自身が認識できない不正コマンドか否かを判定する（Ｓ１４０２）。不正コマンドの場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１４０３）。認識可能なコマンドの場合、そのコマンドがＣＬＯＳＥコマンドであるかを判定する（Ｓ１４０４）。
【００５５】
ＣＬＯＳＥコマンド以外の場合、各コマンドに対応した他の処理を実施する（Ｓ１４０５）。ＣＬＯＳＥコマンドの場合、コマンドと共に渡された引数が正しいかを判定する（Ｓ１４０６）。引数で不正なファイルハンドルを指定した場合等、ＣＬＯＳＥ処理を実施できないと判断した場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ１４０７）。引数が正しい場合、ファイルハンドルを基にＲＡＭ１１３上のオープンファイル情報を特定する（Ｓ１４０８）。次に、特定したオープンファイル情報を参照し、オープンファイルのディレクトリエントリの格納位置を特定し、ディレクトリエントリを含む１セクタ分のデータをＲＡＭ１１３に読み込む（Ｓ１４０９）。
【００５６】
次に、オープンファイルのディレクトリエントリに格納されたファイルサイズやタイムスタンプ等をＲＡＭ１１３上で更新する（Ｓ１４１０）。次に、ＲＡＭ１１３上のディレクトリエントリを不揮発性メモリ１１５に書き込む（Ｓ１４１１）。次に、ＲＡＭ１１３上のＦＡＴを不揮発性メモリ１１５に書き込む（Ｓ１４１２）。ディレクトリエントリ、ＦＡＴの書き込みを完了した後、ＲＡＭ１１３上のオープンファイル情報をクリアし、ファイルがオープンされていない状態に変更する（Ｓ１４１３）。最後に処理完了をアクセス装置１００に通知して処理を終了する（Ｓ１４１４）。
【００５７】
このような本実施の形態によれば、アクセス装置１００はファイルシステムＡＰＩのコマンドを発行するのみであり、ファイルシステムの制御は半導体メモリカード１１０側で実施される。そのため、アクセス装置１００が半導体メモリカード１１０の特性を認識する必要はなく、半導体メモリカード１１０内で最適なファイルアクセスを実施することができる。
【００５８】
続いて、半導体メモリカード１１０のファイルシステムインターフェース制御部１２０が、半導体メモリカード１１０の物理的特性に応じたファイルアクセスを行う点について更に説明する。本実施の形態では、ファイルシステムインターフェース制御部１２０がカード情報格納部１１９から半導体メモリカード１１０の物理的特性に関するカード情報を取得し、その情報を基にファイルアクセスを行う。これにより、半導体メモリカード１１０の物理的特性に応じた最適なファイルアクセスを実現する。以下に、カード情報格納部１１９から取得したカード情報を基にファイルアクセスを行う方法として、２つの例を説明する。
【００５９】
第１の例として、半導体メモリカード１１０の最適アクセス単位を意識したファイルデータ書き込み方法について説明する。半導体メモリカード１１０に高速にアクセスするための最適なアクセス単位は、使用するフラッシュメモリの種類や枚数、フラッシュメモリの管理方法等に依存し、半導体メモリカード１１０の世代や製造者の違いにより異なる。本実施の形態では、カード情報格納部１１９に最適アクセス単位の情報、あるいは最適アクセス単位を決定するために必要なカード情報を格納し、ファイルシステムインターフェース制御部１２０が最適アクセス単位を意識したファイルアクセスを行う。最適アクセス単位とは不揮発性メモリ１１５に最も効率よくアクセスできる単位である。１枚の不揮発性メモリチップを用いる場合には、消去ブロックがそのまま最適アクセス単位である。又複数、例えば８枚の不揮発性メモリチップを並列に使用する場合には、各メモリチップの消去ブロックの８倍、例えば１６ＫＢ×８＝１２８ＫＢが最適アクセス単位となる。
【００６０】
図１５は、不揮発性メモリ１１５に構築されたファイルシステムにおけるデータ領域５０２のデータ配置の一例を示した図である。この例では、ファイルシステムが１クラスタを１６ＫＢとして管理しており、最適アクセス単位が１２８ＫＢである半導体メモリカード１１０を想定している。従来のファイルシステムでは、ファイルデータを書き込む際の空き領域取得において最適アクセス単位を意識せず、任意の空き領域をファイルに割り当てるため、例えば図１５のクラスタ番号４の領域を割り当て、クラスタ単位でデータを書き込む。これに対し、本実施の形態におけるファイルアクセスでは、最適アクセス単位を意識し、最適アクセス単位の空き領域割り当てを行う。
【００６１】
そのため、図１５の最適アクセス単位０や最適アクセス単位１のように、最適アクセス単位内の一部が使用されている領域はファイルデータに割り当てず、最適アクセス単位２のように、最適アクセス単位内の全てが空きである領域を割り当て、最適アクセス単位でデータを書き込む。この最適アクセス単位の空き領域割り当ては、図１３で説明したＷＲＩＴＥコマンド処理手順におけるＳ１３１１の処理で具体的に実施される。このような領域割り当てを行うことにより、ある程度大きなファイルサイズを有するファイルの場合、アクセス装置側では何らの対応をすることなく最適アクセス単位で半導体メモリカード１１０にアクセスすることができる。従って半導体メモリカード１１０に高速にファイルアクセスすることが可能となる。尚この場合にはデータの書き込み毎に最適アクセス単位で新しい領域が用いられるため、処理が行われていないバックグラウンドで空き領域を含む最適アクセス単位に散在するデータをまとめるデフラグ処理を行うことが考えられる。
【００６２】
第２の例として、半導体メモリカード１１０の最適アクセス単位を意識したディレクトリ領域の割り当て方法について説明する。ディレクトリを新規に作成した場合や、ファイルを新規に作成し、ディレクトリ領域に新たな領域を割り当てる必要が生じた場合、従来のファイルシステムでは、ディレクトリ領域を割り当てる際の空き領域取得において、先の例と同様任意の空き領域を割り当てるため、例えば図１５のクラスタ番号１８の領域を割り当てる。この場合、クラスタ番号１８の領域をディレクトリ領域として使用することにより、最適アクセス単位２内に使用領域が含まれることになり、第１の例で説明したファイルデータ領域の割り当てに使用できなくなる。
【００６３】
そのため、本実施の形態におけるファイルシステムインターフェース制御部１２０は、最適アクセス単位内の一部にディレクトリ領域が既に割り当てられている領域を優先的にディレクトリ領域の割り当て領域として使用し、可能な限り同一最適アクセス単位内にディレクトリ領域が含まれるようにする。すなわち、図１５の例では、既にディレクトリ領域が割り当てられている最適アクセス単位１に含まれるクラスタ番号１２から１７の領域をディレクトリ領域として割り当てる。これにより、最適アクセス単位の連続空き領域が生成され易くなり、第１の例のファイルデータ割り当てが効果的に行えるようになる。これにより高速にファイルアクセスすることができる。
【００６４】
以上説明したように、本実施の形態では、半導体メモリカード１１０の物理的特性を含むカード情報を格納するカード情報格納部１１９と、カード情報を基に半導体メモリカード１１０の物理的特性に適したファイルアクセスを行うファイルシステムインターフェース制御部１２０とを半導体メモリカード１１０内に備える。これにより、アクセス装置１００が半導体メモリカード１１０のアクセス特性を意識することなく、最適なファイルアクセスを行うことが可能となる。これによりアクセス装置側は最適アクセスするために種々の半導体メモリカードに対応する必要がなくなり、対応のための検証作業の量も減少する。
【００６５】
また、本実施の形態で説明したファイルシステムＡＰＩを解釈可能なアクセス装置１００は、半導体メモリカード１１０上に構築されているファイルシステムの種類を認識する必要はなく、異なるファイルシステムにより管理されている複数の半導体メモリカード１１０にアクセスすることが可能となる。即ち半導体メモリカード１１０上に構築されているファイルシステムの種別に関わらず、データを授受することが可能となる。
【００６６】
尚、図１０から図１４で説明したアクセス装置１００及び半導体メモリカード１１０の処理手順は一例であり、アクセス装置１００側からファイルシステムＡＰＩコマンドを発行し、半導体メモリカード１１０側でファイルシステム制御を行う方法であれば、上記の実施の形態と異なる処理手順を用いても良い。
【００６７】
また本実施の形態では、カード情報格納部１１９に格納されたカード情報を基に、ファイルシステムインターフェース制御部１２０が最適アクセス単位を決定する例について説明した。しかし、カード情報格納部１１９に格納されたカード情報を基にファイルシステムインターフェース制御部１２０が最適アクセス単位を取得できる方法であれば、他の方法を用いても構わない。例えばカード情報格納部１１９に格納されたカード情報をアクセス装置１００が読み出し、アクセス装置１００側で最適アクセス単位を決定してファイルシステムインターフェース制御部１２０に通知する等が考えられる。
【００６８】
また、図９で示したファイルシステムＡＰＩは一例であり、図９の一部のＡＰＩのみを選択して使用しても良いし、その他のファイルシステム制御に関するＡＰＩを加えて使用しても良い。また、本実施の形態ではＦＡＴファイルシステムを例として説明したが、その他のファイルシステムを使用しても構わない。また、カード情報格納部１１９に格納されたカード情報は、半導体メモリカード１２０の使用状態に応じて値を更新可能としても良い。また、カード情報格納部１１９を含むメモリ１１６は不揮発性メモリ１１５に含めても良いし、カード情報を更新しない場合はＲＯＭ１１７に含めても良い。
【００６９】
以上のように実施の形態１は、半導体メモリカード内にユーザデータ等を格納する不揮発性メモリと、半導体メモリカードのカード情報を格納するカード情報格納部と、カード情報格納部に格納されたカード情報を基に、半導体メモリカードの特性に適したファイルアクセスを行うファイルシステムインターフェース制御部とを備えることを特徴とする。
【００７０】
（実施の形態２）
次に本発明の実施の形態２における半導体メモリカードについて説明する。図１６は本実施の形態（その１）における半導体メモリカード及びアクセス装置の構成図である。また図１７は本実施の形態（その２）における半導体メモリカード及びアクセス装置の構成図である。図１６に示す半導体メモリカード１１０と図１に示す半導体メモリカード１１０と異なる点は、本実施の形態では不揮発性メモリ１１５内の領域が独立した２つの論理アドレス群に分割されており、ファイルシステム管理領域Ａ（第1の領域）１６０１と、ファイルシステム管理領域Ｂ（第２の領域）１６０２とが存在する点である。更に半導体メモリカード１１０のＲＯＭ１１７内に、ファイルシステムインターフェース制御部１２０に加えて、低レベルＩＯインターフェース制御部１６０３を設けたことである。
【００７１】
また、図１７に示す構成において図１６と異なる点は、アクセス装置１００のＲＯＭ１０４内に、アプリケーションプログラム１０５とカードインターフェース制御部１０６に加えて、ファイルシステム制御部１７０１が存在する点である。このアクセス装置１００は、従来の半導体メモリカード（ファイルシステムインターフェース制御部が設けられていないもの）にデータを記録したり、データを読み出す場合に必要となる構成である。
【００７２】
図１６に示すファイルシステムインターフェース制御部１２０は、カード情報格納部１１９に格納されたカード情報に基づいて不揮発性メモリ１１５内に格納したデータをファイルとして管理し、ホストインターフェース部１１１を介してアクセス装置１００から不揮発性メモリ１１５上のファイルに対するオープン、クローズ、リード、ライトを含むファイルアクセス処理を要求するコマンドが入力されたとき、不揮発性メモリ１１５内に存在するファイルに対するファイルアクセス処理を実施するものである。
【００７３】
低レベルＩＯインターフェース制御部１６０３は、ホストインターフェース部１１１を介してアクセス装置１００から不揮発性メモリ１１５の第２の領域１６０２に対するデータ書き込み、又は読み出し処理を要求するコマンドが入力されたとき、不揮発性メモリ１１５内の第２の領域１６０２に対するデータ書き込み、又は読み出し処理を実施するものである。ファイルシステムインターフェース制御部１２０と異なる点は、低レベルＩＯインターフェース制御部１６０３が不揮発性メモリ１１５の第２の領域１６０２に対するデータ読み出し及び書き込み等のアクセス制御のみを行い、ファイルシステムの制御は行わない点である。
【００７４】
低レベルＩＯインターフェース制御部１６０３を介して半導体メモリカード１１０にアクセスする場合に、アクセス装置１００の構成は図１７のようになる。この場合は、図１７に示すようにアクセス装置１００側のファイルシステム制御部１７０１が半導体メモリカード１１０におけるファイルシステムの制御を行う。一方、ファイルシステムインターフェース制御部１２０を介して半導体メモリカード１１０にアクセスするアクセス装置１００は、図１６で示した構成をとる。この場合は本発明の実施の形態１と同様に、アクセス装置１００側にファイルシステム制御部１７０１を備えないものとする。
【００７５】
また図１６に示すように、不揮発性メモリ１１５の領域はファイルシステム管理領域Ａ１６０１と、ファイルシステム管理領域Ｂ１６０２の２つの領域に分割されており、ファイルシステム管理領域Ａ１６０１はファイルシステムインターフェース制御部１２０により制御され、ファイルシステム管理領域Ｂ１６０２は低レベルＩＯインターフェース制御部１６０３により制御される。
【００７６】
即ち本実施の形態では、半導体メモリカード１１０はアクセス装置１００からのアクセスを受け付けるインターフェース制御部を２種類備えており、夫々のインターフェース制御部経由でアクセスされる領域は独立している。これにより、２つのインターフェース制御部のいずれか一方のみを解釈可能なアクセス装置１００からも、半導体メモリカード１１０にアクセスすることが可能となり、アクセス装置の互換性を高めることができる。
【００７７】
続いて、本実施の形態における低レベルＩＯインターフェース制御部１６０３の機能について説明する。本実施の形態では、半導体メモリカード１１０内の不揮発性メモリ１１５を２つの管理領域Ａ、Ｂに分割し、ファイルシステム管理領域Ａ１６０１をファイルシステムインターフェース制御部１２０により制御し、ファイルシステム管理領域Ｂ１６０２を低レベルＩＯインターフェース制御部１６０３により制御する。ファイルシステムインターフェース制御部１２０を介してアクセスする方法は、実施の形態１で説明した方法と同様であるので説明を割愛する。ここでは低レベルＩＯインターフェース制御部１６０３を介してアクセスする方法について説明する。
【００７８】
図１８は低レベルＩＯインターフェース制御部１６０３がアクセス装置１００から受け付けるコマンド群（以下、低レベルＩＯＡＰＩという）の一覧を示した図である。図１８に示すように、低レベルＩＯインターフェース制御部１６０３は、アクセス装置１００から、ＲＡＷ＿ＲＥＡＤ（データを読み込む）や、ＲＡＷ＿ＷＲＩＴＥ（データを書き込む）等の図９に示すファイルシステムよりも低レベルな入出力要求を受け付け、アクセス装置１００に対し、これら低レベルＩＯの機能を提供する。即ち本実施の形態において低レベルＩＯインターフェース制御部１６０３を介してアクセスするアクセス装置１００には、前述したようにファイルシステムを制御するためのファイルシステム制御部１７０１を備える必要がある。
【００７９】
次に図１９〜図２２を用いて、アクセス装置１００が低レベルＩＯインターフェース制御部１６０３を介してファイルにアクセスする例を説明する。ここでは、ファイルにアクセスする例として、ルートディレクトリ直下にファイルを作成し、データを書き込む例について説明する。図１９はアクセス装置１００側の全体の処理手順を示すフローチャートである。図２０、図２１、図２２は夫々アクセス装置１００内のファイルシステム制御部１７０１が行うファイルオープン処理、データ書き込み処理、ファイルクローズ処理の処理手順を示したフローチャートである。
【００８０】
まず始めに図１９を用いてアクセス装置１００側の全体の処理手順を説明する。図１９の処理手順が図１０の処理手順と異なる点は、ファイルオープン、データ書き込み、ファイルクローズの各処理を半導体メモリカード１１０側で処理させるのではなく、アクセス装置１００内のファイルシステム制御部１７０１で処理する点である。具体的には、図１９のＳ１９０６、Ｓ１９１０、Ｓ１９１３の各処理は、後述の図２０〜図２２に示す処理手順で、アクセス装置１００内のファイルシステム制御部１７０１が処理する。即ち図１９において、Ｓ１９０１はカードインターフェース制御部１０６が実施し、Ｓ１９０６、Ｓ１９１０、Ｓ１９１３の各処理はファイルシステム制御部１７０１が実施し、その他の処理はアプリケーションプログラム１０５が実施する。
【００８１】
次に、図２０〜図２２を用いてアクセス装置１００内のファイルシステム制御部１７０１が行う処理手順を説明する。カード種別取得コマンド発行時の半導体メモリカード１１０側の処理手順は図１１と同様であり、ここでは説明を割愛する。図２０〜図２２に示すファイルオープン処理、データ書き込み処理、ファイルクローズ処理の処理手順は、図１２〜図１４で説明した処理手順とほぼ同じであり、ここでは相違点のみを説明する。
【００８２】
第１の相違点は、コマンド受信からコマンド解釈までの処理（図１２におけるＳ１２０１からＳ１２０５までの処理）が存在しない点である。これらの処理は半導体メモリカード１１０側でコマンドを解釈するための処理であり、アクセス装置１００内のファイルシステム制御部１７０１で実施する処理の場合不要であるため、処理手順から削除されている。
【００８３】
第２の相違点は、不揮発性メモリ１１５に対しデータを読み書きする処理を、ＲＡＷ＿ＲＥＡＤコマンド発行、又はＲＡＷ＿ＷＲＩＴＥコマンド発行と記載し、各コマンドの成否判定を追加している。実施の形態１では、半導体メモリカード１１０のファイルシステムインターフェース制御部１２０が不揮発性メモリ１１５にアクセスしていたのに対し、本実施の形態では、アクセス装置１００のカードインターフェース制御部１０６が低レベルＩＯＡＰＩコマンドを発行し、半導体メモリカード１１０の低レベルＩＯインターフェース制御部１６０３を介してアクセスする。そのため、不揮発性メモリ１１５にアクセスする処理が低レベルＩＯＡＰＩコマンド発行処理に変更されている。
【００８４】
以上説明したように、本実施の形態では、半導体メモリカード１１０の物理的特性を含むカード情報を格納するカード情報格納部１１９と、その情報を基に半導体メモリカード１１０の物理的特性に適したファイルアクセスを行うファイルシステムインターフェース制御部１２０と、低レベルＩＯ要求を受け付ける低レベルＩＯインターフェース制御部１６０３と、不揮発性メモリ１１５とを、半導体メモリカード１１０内に備える。更に不揮発性メモリ１１５内の領域を２つに分割し、夫々の領域をファイルシステムインターフェース制御部１２０、低レベルＩＯインターフェース制御部１６０３からアクセスする。このような構成をとることで、２つのインターフェースのいずれか一方のみを解釈可能なアクセス装置、例えば従来のアクセス装置からでも半導体メモリカード１１０にアクセスすることが可能となる。
【００８５】
尚、本実施の形態では、低レベルＩＯインターフェース制御部１６０３を介したファイルアクセスについて図２０〜図２２を用いて説明したが、これらの処理は従来のアクセス装置１００において、ファイルシステムをアクセス装置１００側で制御する場合の処理と同様のものである。本実施の形態の主眼とする点は、半導体メモリカード１１０側に２つのインターフェース制御部１２０，１６０３を設け、アクセス装置１００からいずれのインターフェース制御部を介しても、半導体メモリカード１１０にアクセスできるようにした点にある。そのため、図２０〜図２２の処理手順は一例であり、アクセス装置１００側にファイルシステム制御部１７０１を設け、低レベルＩＯインターフェース制御部１６０３を介して半導体メモリカード１１０にアクセスする制御方法であれば、異なる処理手順を用いても良い。
【００８６】
また、図１８で示した低レベルＩＯＡＰＩは一例であり、図１８の一部のＡＰＩのみを選択して使用しても良いし、その他の低レベルＩＯに関するＡＰＩを加えて使用しても良い。また、本実施の形態ではＦＡＴファイルシステムを例として説明したが、その他のファイルシステムを使用しても構わない。また、カード情報格納部１１９に格納されたカード情報は、半導体メモリカード１２０の使用状態に応じて値を更新可能としても良い。また、カード情報格納部１１９を含むメモリ１１６は、不揮発性メモリ１１５に含めても良いし、カード情報を更新しない場合はＲＯＭ１１７に含めても良い。
【００８７】
以上のように実施の形態２は、半導体メモリカード内に領域を２つに分割したユーザデータ等を格納する不揮発性メモリと、半導体メモリカードの物理的特性に関するカード情報を格納するカード情報格納部と、カード情報格納部に格納された情報を基に半導体メモリカードの物理的特性に適したファイルアクセスを行うファイルシステムインターフェース制御部と、半導体メモリカード外部のアクセス装置から半導体メモリカード内の不揮発性メモリに対する低レベル入出力要求を処理する低レベルＩＯインターフェース制御部とを備え、これらのインターフェース制御部により個々の領域を管理することを特徴とする。
【００８８】
（実施の形態３）
次に本発明の実施の形態３における半導体メモリカードについて説明する。図２３は実施の形態３における半導体メモリカード１１０及びアクセス装置１００の構成図である。図２３に示すアクセス装置１００は図１７に示すものと構成が同じである。半導体メモリカード１１０の構成で図１６に示すものと異なる点は、不揮発性メモリ１１５内の領域が２つに分割されておらず、単一のファイルシステム管理領域１１８から構成されている点である。
【００８９】
即ち本実施の形態３では、実施の形態２と同様に、半導体メモリカード１１０内にファイルシステムインターフェース制御部１２０と低レベルＩＯインターフェース制御部１６０３とを備え、アクセス装置１００からいずれのインターフェース制御部を介しても半導体メモリカード１１０にアクセス可能とする。本実施の形態３と実施の形態２と異なる点は、ファイルシステムインターフェース制御部１２０と低レベルＩＯインターフェース制御部１６０３により制御される領域が同じファイルシステム管理領域１１８である点である。以下、本実施の形態における２つのインターフェース制御部１２０及び１６０３の機能について説明する。
【００９０】
本実施の形態では、アクセス装置１００が２つのインターフェース制御部を経由して同一の領域にアクセスした際に、ファイルシステム内に矛盾が生じないようにする必要がある。そのため、本実施の形態では、基本的にファイルシステムの制御をアクセス装置１００側のファイルシステム制御部１７０１で行い、半導体メモリカード１００側のファイルシステムインターフェース制御部１２０では、ファイルシステム内に矛盾が発生しない範囲で、ファイルシステムの制御を補助する処理を実施する。即ち、ファイルシステムインターフェース制御部１２０は、不揮発性メモリ１１５上の共通の領域に対してファイルシステムを構築するフォーマット処理のみを実施する。不揮発性メモリ１１５上の共通の領域に存在するファイルに対するフォーマット処理以外のファイルアクセス処理は、アクセス装置１００内のファイルシステム制御部１７０１から入力されるコマンドに基づいて低レベルＩＯインターフェース制御部１６０３が実施する。
【００９１】
本実施の形態におけるファイルシステムインターフェース制御部１２０の一例として、ファイルシステム管理領域１１８のフォーマット機能のみを実現する場合について説明する。ファイルシステムのフォーマットは、半導体メモリカード１１０上のデータをファイルシステムで管理するために必要な処理であり、半導体メモリカード１１０を初めて使用する際や、一旦全てのデータを消去する際等に実施される処理である。
【００９２】
ここで説明する例では、アクセス装置１００はファイルシステムのフォーマットを行う際にのみ、ファイルシステムインターフェース制御部１２０を介して半導体メモリカード１１０にアクセスする。更に、フォーマット後のファイルアクセスは低レベルＩＯインターフェース制御部１６０３を介してアクセスする。このように２つのインターフェース制御部の役割を分担（機能区分）させることで、２つのインターフェース制御部を介して半導体メモリカード１１０にアクセスしても、ファイルシステム内に矛盾が生じないことを保証する。
【００９３】
更に、本実施の形態におけるファイルシステムインターフェース制御部１２０は、カード情報格納部１１９から半導体メモリカード１１０の物理的特性に関するカード情報を取得し、その特性に応じたファイルシステムのフォーマット機能を提供する。第１に、本実施の形態におけるファイルシステムインターフェース制御部１２０は、カード情報格納部１１９から取得したカード情報を基に、半導体メモリカード１１０の最適アクセス単位を決定する。第２に、ファイルシステム管理領域１１８のフォーマットに際し、マスターブートレコード・パーティションテーブル５０３からルートディレクトリエントリ５０７までの管理情報領域５０１の大きさを調整し、最適アクセス単位の倍数長になるように設定する。
【００９４】
次に、本実施の形態におけるフォーマット処理後のデータ配置について、図２４を用いて説明する。図２４は本実施の形態におけるファイルシステムインターフェース制御部１２０がファイルシステム管理領域１１８をフォーマットした場合におけるデータ配置の一例を示した図である。図２４においてＭＢＲ・ＰＴはマスターブートレコード・パーティションテーブル５０３、ＰＢＳはパーティションブートセクタ５０４、ＲＤＥはルートディレクトリエントリ５０７を示す。
【００９５】
図２４に示すようにマスターブートレコード・パーティションテーブル５０３からルートディレクトリエントリ５０７までの管理情報領域５０１の大きさが最適アクセス単位の倍数長となっている。更に、最適アクセス単位がクラスタサイズの倍数長となっている。そのため、アクセス装置１００のファイルシステム制御部１７０１がデータ領域５０２にクラスタ単位でアクセスした場合に、複数の最適アクセス単位に跨ってアクセスすることがなく、効率的にアクセスすることが可能となる。
【００９６】
また、アクセス装置１００が８つの連続したクラスタにアクセスした場合、半導体メモリカード１１０内の最適アクセス単位でのアクセスとなり、不揮発性メモリカード１１５に対する最適なアクセスが実現できる。このようにファイルシステム管理領域１１８をフォーマットすることにより、アクセス装置１００側で半導体メモリカード１１０の特性を考慮せずにファイルアクセスした場合でも、半導体メモリカード１１０にとって最適なアクセスに近いアクセスが実施されるようになる。
【００９７】
以上説明したように本実施の形態では、半導体メモリカード１１０内にファイルシステムインターフェース制御部１２０と、低レベルＩＯインターフェース制御部１６０３とを備え、アクセス装置１００からいずれのインターフェース制御部を介しても半導体メモリカードにアクセス可能とする。更に、ファイルシステムインターフェース制御部１２０は、アクセス装置１００のファイルシステム制御部１７０１が行うファイルシステム制御の補助機能を提供し、２つのインターフェース制御部を介して半導体メモリカード１１０にアクセスした場合でも、ファイルシステム内に矛盾が発生しないようにする。これにより、アクセス装置１００におけるファイルシステム制御の一部を半導体メモリカード１１０が行い、アクセス装置１００の負担を軽減することができる。
【００９８】
尚、本実施の形態では、ファイルシステムインターフェース制御部１２０がファイルシステムのフォーマット機能のみを実現する場合について説明した。本実施の形態の主眼とする点は、半導体メモリカード１１０のファイルシステム内に矛盾が発生しない範囲で、ファイルシステム制御の補助機能をファイルシステムインターフェース制御部１２０が実現する点にある。そのため、ファイルシステムインターフェース制御部１２０はフォーマット機能のみを実現するのではなく、その他のファイルシステム制御の補助機能を実現する構成としても良い。又フォーマット機能を含まずに、その他のファイルシステム制御の補助機能を実現する構成としても良い。例えば、使用するインターフェース制御部を選択するコマンドを半導体メモリカード１１０に設け、アクセス装置１００が明示的に使用するインターフェース制御部を指定して必要に応じて切り替えることで、２つのインターフェース制御部が並列に呼び出されないような構成としても良い。
【００９９】
また、本実施の形態ではＦＡＴファイルシステムを例として説明したが、その他のファイルシステムを使用しても構わない。また、カード情報格納部１１９に格納されたカード情報は、半導体メモリカード１２０の使用状態に応じて値を更新可能としても良い。また、カード情報格納部１１９を含むメモリ１１６は不揮発性メモリ１１５に含めても良いし、カード情報を更新しない場合はＲＯＭ１１７に含めても良い。
【０１００】
以上のように実施の形態３は、半導体メモリカード内にユーザデータ等を格納する不揮発性メモリと、半導体メモリカードの物理的特性に関するカード情報を格納するカード情報格納部と、カード情報格納部に格納された情報を基に半導体メモリカードの物理的特性に適したファイルアクセスを行うファイルシステムインターフェース制御部と、半導体メモリカード外部のアクセス装置から半導体メモリカード内の不揮発性メモリに対する低レベル入出力要求を処理する低レベルＩＯインターフェース制御部とを備え、前記２つのインターフェース制御部からのアクセスにより不揮発性メモリ上に構築されたファイルシステム内に矛盾が生じないように、前記２つのインターフェース制御部の機能を制限することを特徴とする。
【０１０１】
（実施の形態４）
次に本発明の実施の形態４における半導体メモリカードについて説明する。図２５は実施の形態４における半導体メモリカード及びアクセス装置の構成図である。図２５において図２３の構成と異なる点は、アクセス装置１００内のアプリケーションプログラム１０５からカードインターフェース制御部１０６を直接呼び出す経路が存在していることと、半導体メモリカード１１０内に同期制御部２５０１を設けたことである。
【０１０２】
即ち実施の形態４では、実施の形態３と同様、半導体メモリカード１１０内にファイルシステムインターフェース制御部１２０と、低レベルＩＯインターフェース制御部１６０３とを備え、アクセス装置１００からいずれのインターフェース制御部を介しても半導体メモリカード１１０にアクセス可能とする。また、２つのインターフェース制御部を介して不揮発性メモリ１１５上の同一領域にアクセスする。実施の形態３と異なる点は、半導体メモリカード１１０内に同期制御部２５０１を備え、２つのインターフェース制御部を介して同一領域をアクセスした場合に、ファイルシステム内に矛盾が生じないように同期をとる点である。
【０１０３】
本実施の形態のファイルシステムインターフェース制御部１２０は、カード情報格納部１１９に格納されたカード情報に基づいて不揮発性メモリ１１５内に格納したデータをファイルとして管理し、ホストインターフェース部１１１を介してアクセス装置１００から不揮発性メモリ１１５上のファイルに対するオープン、クローズ、リードの読み出し専用のファイルアクセス処理を要求するコマンドが入力されたとき、不揮発性メモリ１１５内に存在するファイルに対するファイルアクセス処理を実施する。
【０１０４】
低レベルＩＯインターフェース制御部１６０３は、ファイルシステムインターフェース制御部がデータ読み出しに使用する不揮発性メモリ１１５内の領域のうち、任意の位置に対するデータ書き込み、又は読み出し処理を要求するコマンドがホストインターフェース部１１１を介してアクセス装置１００から入力されたとき、不揮発性メモリ１１５内の任意の位置に対するデータ書き込み、又は読み出し処理を実施する。
【０１０５】
同期制御部２５０１は低レベルＩＯインターフェース制御部１６０３が不揮発性メモリ１１５内に存在するファイルシステムの管理情報に対するデータ書き込み処理を実施するとき、ファイルシステムインターフェース制御部１２０が半導体メモリカード１１０内のＲＡＭ上に読み出しているファイルシステム管理情報を更新する。このような構成の場合、本実施の形態のファイルシステムインターフェース制御部１２０は、実施の形態３のようにフォーマット機能のみ実現する場合に比べ、実現する機能の制約が少なくなる。
【０１０６】
続いて本実施の形態における同期制御部２５０１の機能について、図２６〜図２８を用いて説明する。ここでは、同期制御部２５０１の例として、ファイルシステムインターフェース制御部１２０が読み出し専用のファイルシステム機能（上位コマンド）を実現し、同時に低レベルＩＯインターフェース制御部１６０３が低レベルＩＯ機能（下位コマンド）を実現する場合について説明する。この場合、アクセス装置１００は、ファイルシステム制御部１７０１によりファイルシステムに対する読み書きを制御し、低レベルＩＯインターフェース制御部１６０３を介して半導体メモリカード１１０の不揮発性メモリ１１５にアクセスすることが可能である。これと同時にファイルシステムインターフェース制御部１２０を介して半導体メモリカード１１０の不揮発性メモリ１１５上に構築されたファイルシステムに読み出し専用のアクセスを行うことが可能である。
【０１０７】
図２６は半導体メモリカード１１０のＲＡＭ１１３上に読み込まれたファイルシステムに関する情報の一例を示した図であり、これらの情報を用いてファイルシステムインターフェース制御部１２０はファイルシステムを制御する。すなわち、ＲＡＭ１１３上には、不揮発性メモリ１１５から読み込まれたＦＡＴ２６０１やオープン中のファイルに関する情報であるオープンファイル情報（ＯＦＩ）２６０２、２６０３、２６０４、２６０５が存在し、ファイルシステムの制御に使用される。
【０１０８】
更にＲＡＭ１１３上には、同期制御部２５０１が使用する情報としてキャッシュ管理テーブル２６０６が存在する。図２７はキャッシュ管理テーブル２６０６に含まれる情報を示した図である。キャッシュ管理テーブル２６０６は、ＦＡＴ２６０１やオープンファイル情報２６０２、２６０３、２６０４、２６０５等、ＲＡＭ１１３上に読み込まれている情報の不揮発性メモリ１１５上の位置を示す情報である。図２６及び図２７の例では、不揮発性メモリ１１５上の２３４セクタの位置から始まる１２３セクタの領域に存在するＦＡＴ２６０１がＲＡＭ１１３上に読み込まれている。また、４８０セクタの位置にディレクトリエントリ（ＤＥ）を持つファイルが２つと、５１３セクタの位置にディレクトリエントリを持つファイルが１つオープンされており、ＲＡＭ１１３上にオープンファイル情報２６０２、２６０３、２６０４、２６０５がキャッシュされている。
【０１０９】
次に図２８を用いて、本実施の形態における同期制御部２５０１の処理について説明する。本実施の形態において、アクセス装置１００から半導体メモリカード１１０に発行されるコマンドは一旦同期制御部２５０１が受信し、ファイルシステムインターフェース制御部１２０、低レベルＩＯインターフェース制御部１６０３に夫々上位コマンド、下位コマンドを振り分ける。図２８はこのような同期制御部２５０１の処理手順を示した図である。
【０１１０】
同期制御部２５０１の処理において、まずアクセス装置１００からコマンドを受信する（Ｓ２８０１）。次に、受信したコマンドを参照し、自身が認識できない不正コマンドか否かを判定する（Ｓ２８０２）。不正コマンドの場合はアクセス装置１００にエラーを通知して処理を終了する（Ｓ２８０３）。認識可能なコマンドの場合、そのコマンドが図１８で説明したＲＡＷ＿ＷＲＩＴＥコマンドであるか判定する（Ｓ２８０４）。ＲＡＷ＿ＷＲＩＴＥコマンド以外の場合、コマンドの種類を判別する（Ｓ２８０５）。上位コマンドであればファイルシステムインターフェース制御部１２０を呼び出し、下位コマンドであれば低レベルＩＯインターフェース制御部１６０３を呼び出し、夫々のコマンドに対応した他の処理を実施し、処理を終了する（Ｓ２８０６）。
【０１１１】
ＲＡＷ＿ＷＲＩＴＥコマンドの場合、コマンドの引数で指定された書き込み位置がＲＡＭ１１３上に読み込んでいるＦＡＴ２６０１と同一であるか判定する（Ｓ２８０７）。図２６及び図２７の例では、ＦＡＴ２６０１は２３４セクタの位置から始まる１２３セクタの領域に存在するため、ＲＡＷ＿ＷＲＩＴＥコマンドで例えば２５６セクタから始まる３２セクタのデータ書き込みを要求された場合等は、書き込み位置が同一であると判定する。
【０１１２】
書き込み位置が同一であると判定した場合、ＲＡＭ１１３上のＦＡＴ２６０１を、ＲＡＷ＿ＷＲＩＴＥコマンドで送信されたデータで更新する（Ｓ２８０８）。そして低レベルＩＯインターフェース制御部１６０３を呼び出してＲＡＷ＿ＷＲＩＴＥコマンドを実施し、処理を終了する（Ｓ２８０９）。書き込み位置が同一でないと判定した場合、オープン中のディレクトリエントリ（ＤＥ）と同じセクタへの書き込みであるか判定する（Ｓ２８１０）。
【０１１３】
図２６及び図２７の例では、４８０セクタ、５１３セクタに存在するディレクトリエントリを持つファイルがオープンされているため、ＲＡＷ＿ＷＲＩＴＥコマンドでこれら２セクタのいずれかの位置に対するデータ書き込みを要求された場合、書き込み位置が同一であると判定する。書き込み位置が同一でないと判定した場合、Ｓ２８１３の処理に進む。書き込み位置が同一であると判定した場合、ＲＡＷ＿ＷＲＩＴＥコマンドで送信されたデータを参照し、ディレクトリエントリを含むセクタに対する書き込みが、オープン中のファイルのディレクトリエントリが変化するようなデータであるかを判定する（Ｓ２８１１）。
【０１１４】
ここでディレクトリエントリが変化する場合には、例えばファイルサイズやタイムスタンプ、ファイル名が変更された場合、ディレクトリエントリ自体が消去された場合等が存在する。ディレクトリエントリが変化しないと判定した場合、Ｓ２８１３の処理に進む。ディレクトリエントリが変化すると判定した場合、ＲＡＭ１１３上のオープンファイル情報（ＯＦＩ）２６０２、２６０３、２６０４、２６０５を更新する（Ｓ２８１２）。
【０１１５】
例えば、ファイルサイズやタイムスタンプ、ファイル名が変更された場合は、オープンファイル情報２６０２、２６０３、２６０４、２６０５内の各値を更新する。ディレクトリエントリ自体が消去された場合は、オープンファイル情報２６０２、２６０３、２６０４、２６０５をクリアし、ファイルがオープンされていない状態に更新する。最後に、低レベルＩＯインターフェース制御部１６０３を呼び出してＲＡＷ＿ＷＲＩＴＥコマンドを実施し、処理を終了する（Ｓ２８１３）。
【０１１６】
このように、同期制御部２５０１は、半導体メモリカード１１０に対する書き込みアクセスの際に書き込み位置を確認し、ＲＡＭ１１３上に読み込まれたデータが変化するような書き込みの場合には、データの書き込みと同時にＲＡＭ１１３上のデータを更新する。これにより、ファイルシステムインターフェース制御部１２０が読み出し専用のファイルシステム機能を実現する場合に、低レベルＩＯインターフェース制御部１６０３を介しての書き込み処理に同期し、ファイルシステム管理情報を送信することにより、ファイルシステム内に矛盾を生じさせることなく処理を行うことが可能となる。
【０１１７】
又本実施の形態では、半導体メモリカード１１１内でファイルシステムが存在し論理的にクラスタが連続している場合には、最適アドレス単位の１単位について１回のアドレス変換を実施するだけでよく、アドレス変換処理のオーバーヘッドを低減することができる。
【０１１８】
以上説明したように、本実施の形態では、半導体メモリカード１１０内にファイルシステムインターフェース制御部１２０と、低レベルＩＯインターフェース制御部１６０３とを備え、アクセス装置１００からいずれのインターフェース制御部を介しても半導体メモリカード１１０にアクセス可能とする。また同期制御部２５０１を備えることにより、２つのインターフェース制御部を介したアクセス間の同期をとることができる。これにより、２つのインターフェース制御部を介したアクセスにより、ファイルシステム内に矛盾が生じる機会を無くし、実施の形態３よりもファイルシステムインターフェース制御部１２０が実現する機能を拡大することができる。
【０１１９】
尚、本実施の形態では、ファイルシステムインターフェース制御部１２０が読み出し専用のファイルシステム機能を実現する場合について説明した。本実施の形態の主眼とする点は、半導体メモリカード１１０が２つのインターフェース制御部を備え、各々のインターフェース制御部を介してアクセスされた場合に、ファイルシステム内に矛盾が生じないように同期制御部２５０１で同期をとる点にある。そのため、ファイルシステムインターフェース制御部１２０が読み出し専用のファイルシステム機能を実現するのは一例であり、同期制御部２５０１においてファイルシステム内に矛盾が生じないように同期をとることが可能な場合は、その他の機能を実現しても良い。
【０１２０】
また、本実施の形態ではＦＡＴファイルシステムを例として説明したが、その他のファイルシステムを使用しても構わない。また、カード情報格納部１１９に格納されたカード情報は、半導体メモリカード１２０の使用状態に応じて値を更新可能としても良い。また、カード情報格納部１１９を含むメモリ１１６は不揮発性メモリ１１５に含めても良いし、カード情報を更新しない場合はＲＯＭ１１７に含めても良い。
【０１２１】
以上のように実施の形態４は、半導体メモリカード内にユーザデータ等を格納する不揮発性メモリと、半導体メモリカードの物理的特性に関するカード情報を格納するカード情報格納部と、カード情報格納部に格納された情報を基に半導体メモリカードの物理的特性に適したファイルアクセスを行うファイルシステムインターフェース制御部と、半導体メモリカード外部のアクセス装置から半導体メモリカード内の不揮発性メモリに対する低レベル入出力要求を処理する低レベルＩＯインターフェース制御部と、ファイルシステムインターフェース制御部及び低レベルＩＯインターフェース制御部からの不揮発性メモリに対する処理を同期させる同期制御部とを備えることを特徴とする。
【０１２２】
（実施の形態５）
次に本発明の実施の形態５における半導体メモリカードについて説明する。図２９は本実施の形態における半導体メモリカード１１０を中心とする構成図である。図２９に示す半導体メモリカード１１０が図１の構成と異なる点は、半導体メモリカード１１０内に複数のファイルシステムインターフェース制御部（Ａ，Ｂ，Ｃ）２９０１、２９０２、２９０３が存在する点と、カード情報格納部１１９内にファイルシステム種別フラグ２９０４が存在する点である。
【０１２３】
即ち本実施の形態では、ファイルシステムインターフェース制御部２９０１、２９０２、２９０３は、管理するファイルシステムの種別が夫々異なる。カード情報格納部１１９は、不揮発性メモリ１１５の消去ブロックサイズを含む半導体メモリカードの物理的特性に関する情報、及び不揮発性メモリ１１５上に構築されているファイルシステムの種別を示すファイルシステム種別フラグを含むカード情報を格納する。
【０１２４】
ファイルシステムインターフェース制御部２９０１〜２９０３は、カード情報格納部１１９に格納されたカード情報に基づいて不揮発性メモリ１１５内に格納したデータをファイルとして管理し、ホストインターフェース部１１１を介してアクセス装置１００から入力されたコマンドに基づいて不揮発性メモリ１１５上のファイルに対するオープン、クローズ、リード、ライトを含むファイルアクセス処理を実施する。そして複数のファイルシステムインターフェース制御部２９０１〜２９０３のうち、ファイルシステム種別フラグに対応するファイルシステムインターフェース制御部が半導体メモリカード１１５上で動作する。
【０１２５】
アクセス装置１００からはいずれのインターフェース制御部を介しても半導体メモリカード１１０にアクセス可能とする。そのため、半導体メモリカード１１０内の不揮発性メモリ１１５を管理するファイルシステムの種別を、用途に応じて変更することが可能となる。
【０１２６】
続いて本実施の形態におけるファイルシステムインターフェース制御部２９０１〜２９０３について説明する。ファイルシステムインターフェース制御部２９０１〜２９０３は夫々異なる種類のファイルシステムを解釈してアクセス制御する。本実施の形態ではファイルシステムのフォーマット時に、使用するファイルシステムの種別を決定し、カード情報格納部１１９にファイルシステム種別フラグ（図中では単に種別フラグ）２９０４を保持する。ファイルシステム種別フラグ２９０４は選択したファイルシステムの種類、又は使用するファイルシステムインターフェース制御部２９０１、２９０２、２９０３を一意に特定することが可能な情報である。以降、インターフェース制御部２９０１、２９０２、２９０３を介して不揮発性メモリ１１５にアクセスする際には、ファイルシステム種別フラグ２９０４を参照し、３つのインターフェース制御部２９０１、２９０２、２９０３から使用するインターフェース制御部を選択して、ファイルシステムの制御を行う。
【０１２７】
図３０は、本実施の形態におけるファイルシステムインターフェース制御部２９０１、２９０２、２９０３の選択手順を示したフローチャートである。図３０の処理において、まずアクセス装置１００からコマンドを受信する（Ｓ３００１）。次に、受信したコマンドを参照し、自身が認識できない不正コマンドか否かを判定する（Ｓ３００２）。不正コマンドの場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ３００３）。認識可能なコマンドの場合、そのコマンドがＦＯＲＭＡＴコマンドであるか判定する（Ｓ３００４）。ＦＯＲＭＡＴコマンド以外の場合、Ｓ３０１０の処理に進む。ＦＯＲＭＡＴコマンドの場合、コマンドの引数が正しい値かを判定する（Ｓ３００５）。
【０１２８】
指定された引数が解釈不可能であった場合等、不正な引数が指定された場合、エラーが発生したと判定し、アクセス装置１００にエラーを通知して処理を終了する（Ｓ３００６）。引数が正しい場合、引数を基に使用するファイルシステムインターフェース制御部２９０１、２９０２、２９０３を選択する（Ｓ３００７）。ここで引数では、使用するファイルシステムの種類（ＦＡＴ、ＵＤＦ等）を直接指定するか、あるいは“ファイルシステムインターフェース制御部Ａ”等のインターフェース制御部を一意に特定するフラグを指定する。こうすることにより、半導体メモリカード１１０が使用するファイルシステムインターフェース制御部２９０１、２９０２、２９０３を選択できるようにする。
【０１２９】
次に、ファイルシステム種別フラグ２９０４をカード情報格納部１１９内に設定する（Ｓ３００８）。次に、選択したファイルシステムインターフェース制御部２９０１、２９０２、２９０３を呼び出し、フォーマット処理を実施し、Ｓ３０１４の処理に進む（Ｓ３００９）。この処理により呼び出されたファイルシステムインターフェース制御部２９０１、２９０２、２９０３は、自身が制御するファイルシステム種別に応じて、不揮発性メモリ１１５をフォーマットする。
【０１３０】
一方、Ｓ３００４の処理においてＦＯＲＭＡＴコマンド以外であると判定した場合、コマンドの引数が正しい値かを判定する（Ｓ３０１０）。指定された引数が解釈不可能であった場合等、不正な引数が指定された場合はエラーが発生したと判定し、アクセス装置１００にエラーを通知して処理を終了する（Ｓ３０１１）。引数が正しい場合、ファイルシステム種別フラグ２９０４を参照し、使用するファイルシステムインターフェース制御部２９０１、２９０２、２９０３を選択する（Ｓ３０１２）。
【０１３１】
次に、選択したファイルシステムインターフェース制御部２９０１、２９０２、２９０３を呼び出し、各コマンドの処理を実施する（Ｓ３０１３）。この処理により呼び出されたファイルシステムインターフェース制御部２９０１、２９０２、２９０３は、自身が制御するファイルシステム種別に応じて、ファイルオープンやファイルデータの読み出し等の処理を実施する。次に、各ファイルシステムインターフェース制御部２９０１、２９０２、２９０３で実施した処理が成功したかを判定する（Ｓ３０１４）。処理に失敗した場合、アクセス装置１００にエラーを通知して処理を終了する（Ｓ３０１５）。処理に成功した場合、アクセス装置１００に処理完了を通知して処理を終了する（Ｓ３０１６）。
【０１３２】
以上説明したように本実施の形態では、管理するファイルシステムの種別が異なる複数のファイルシステムインターフェース制御部２９０１、２９０２、２９０３を半導体メモリカード１１０内に備え、アクセス装置１００からいずれのインターフェース制御部を介しても半導体メモリカード１１０にアクセス可能とする。これにより、大容量ファイルへの高速アクセスに適したファイルシステムや、数多くの小容量ファイルをアクセスするのに適したファイルシステム等を用意することができる。そして半導体メモリカード１１０の使用用途に応じてファイルシステムの種別を変更することで、各用途に適したファイルシステムを使用することができる。
【０１３３】
尚、本実施の形態ではファイルシステムインターフェース制御部２９０１、２９０２、２９０３が３種類、半導体メモリカード１１０内に存在する例を用いて説明した。しかし３種類に限らず、任意の複数種類で構成しても良い。また本実施の形態では、実施の形態１を基本にして相違点を説明したが、本実施の形態の発明内容を、先に説明したその他の実施の形態と組み合わせて使用しても良く、低レベルＩＯインターフェース制御部や同期制御部を含む構成としても良い。
【０１３４】
また、本実施の形態ではファイルシステムインターフェース制御部２９０１、２９０２、２９０３がＲＯＭ１１７に含まれる構成について説明した。しかし、メモリ１１６や、不揮発性メモリ１１５に含まれる構成とし、ファイルシステムインターフェース制御部２９０１、２９０２、２９０３を更新可能な構成としても良い。即ち半導体メモリカード１１０の外部から、新たなファイルシステムの種別に対応したファイルシステムインターフェース制御部を追加したり、既存のファイルシステムインターフェース制御部を更新したり、不要なファイルシステムインターフェース制御部を削除可能な構成としても良い。
【０１３５】
また、ファイルシステムインターフェース制御部で管理するファイルシステムは、ＦＡＴファイルシステムやＵＤＦファイルシステム以外の任意のファイルシステムを使用しても良い。また、カード情報格納部１１９に格納されたカード情報は、半導体メモリカード１１０の使用状態に応じて値を更新可能としても良い。また、カード情報格納部１１９を含むメモリ１１６は、不揮発性メモリ１１５に含めても良い。
【０１３６】
以上のように実施の形態５は、半導体メモリカード内にユーザデータ等を格納する不揮発性メモリと、半導体メモリカードの物理的特性に関するカード情報を格納するカード情報格納部と、複数種類のファイルシステムに対応し、カード情報格納部に格納された情報を基に半導体メモリカードの物理的特性に適したファイルアクセスを行う複数のファイルシステムインターフェース制御部とを備えることを特徴とする。
【０１３７】
尚、前述した各実施の形態では、半導体メモリカードについて説明しているが、本発明はカード状の半導体メモリに限らず、他の種々の形状の半導体メモリ装置に適用することができる。
【産業上の利用可能性】
【０１３８】
本発明に関わる半導体メモリ装置は、半導体メモリ装置の特性に関する情報を格納する装置情報格納部と、その情報を基に半導体メモリ装置の特性に適したファイルアクセスを行うインターフェース制御部を半導体メモリ装置内に備えることにより、アクセス装置が半導体メモリ装置の特性を意識することなく、最適なファイルアクセスを実現することができる。このような半導体メモリ装置は、デジタルＡＶ機器や携帯電話端末、ＰＣ等の情報記録媒体として利用することができる。また、半導体メモリ装置の特性に応じた最適なファイルアクセスを実現するため、転送レートの高い高品質ＡＶデータを記録する機器の情報記録媒体として利用する場合は特に好適に機能する。
【符号の説明】
【０１３９】
１００  アクセス装置
１０１，１１２  ＣＰＵ
１０２，１１３  ＲＡＭ
１０３  スロット
１０４，１１７  ＲＯＭ
１０５  アプリケーションプログラム
１０６  カードインターフェース制御部
１１０  半導体メモリカード
１１１  ホストインターフェース部
１１４  メモリコントローラ
１１５  不揮発性メモリ
１１６  メモリ
１１８，１６０１，１６０２  ファイルシステム管理領域
１１９  カード情報格納部
１２０，２９０１，２９０２，２９０３  ファイルシステムインターフェース制御部
５０１  管理情報領域
５０２  データ領域
５０３  マスターブートレコード・パーティションテーブル
５０４  パーティションブートセクタ
５０５，５０６  ＦＡＴ
５０７  ルートディレクトリエントリ
７０１  ディレクトリエントリ
１６０３  低レベルＩＯインターフェース制御部
１７０１  ファイルシステム制御部
２５０１  同期制御部
２６０１  ＦＡＴ（ＲＡＭ上）
２６０２，２６０３，２６０４，２６０５  オープンファイル情報
２６０６  キャッシュ管理テーブル
２９０４  ファイルシステム種別フラグ
【図１】
0005466671.tif 000002
【図２】
0005466671.tif 000003
【図３】
0005466671.tif 000004
【図４】
0005466671.tif 000005
【図５】
0005466671.tif 000006
【図６】
0005466671.tif 000007
【図７】
0005466671.tif 000008
【図８】
0005466671.tif 000009
【図９】
0005466671.tif 000010
【図１０】
0005466671.tif 000011
【図１１】
0005466671.tif 000012
【図１２】
0005466671.tif 000013
【図１３】
0005466671.tif 000014
【図１４】
0005466671.tif 000015
【図１５】
0005466671.tif 000016
【図１６】
0005466671.tif 000017
【図１７】
0005466671.tif 000018
【図１８】
0005466671.tif 000019
【図１９】
0005466671.tif 000020
【図２０】
0005466671.tif 000021
【図２１】
0005466671.tif 000022
【図２２】
0005466671.tif 000023
【図２３】
0005466671.tif 000024
【図２４】
0005466671.tif 000025
【図２５】
0005466671.tif 000026
【図２６】
0005466671.tif 000027
【図２７】
0005466671.tif 000028
【図２８】
0005466671.tif 000029
【図２９】
0005466671.tif 000030
【図３０】
0005466671.tif 000031