(57)【要約】 【課題】途中まで書かれたアロケーション・ユニットを使用可能とし、アロケーション・ユニットの利用効率を向上することが可能なメモリデバイス及びホストデバイスを提供する。【解決手段】外部からアクセス可能な複数の物理的な記憶領域を有する不揮発性半導体メモリと、前記不揮発性半導体メモリを制御する制御部を有するメモリデバイスであって、前記制御部は、シーケンシャルライト領域を指定する第１引数を有する制御コマンドと、リードコマンド又はライトコマンドを受け、前記リードコマンド又はライトコマンドのアドレスで示される前記記憶領域をシーケンシャルライト領域として登録し、前記記憶領域をアクセスするメモリアクセスコマンドに対し、そのアドレスがシーケンシャル領域内に対するアクセスかどうかを判定してメモリアクセス制御を変えることを特徴とする。【選択図】図５
2014112351.tif 000002
【特許請求の範囲】
【請求項１】
外部からアクセス可能な複数の物理的な記憶領域を有する不揮発性半導体メモリと、前記不揮発性半導体メモリを制御する制御部を有するメモリデバイスであって、
前記制御部は、シーケンシャルライト領域を指定する第１引数を有する制御コマンドと、リードコマンド又はライトコマンドを受け、前記リードコマンド又はライトコマンドのアドレスで示される前記記憶領域をシーケンシャルライト領域として登録し、前記記憶領域をアクセスするメモリアクセスコマンドに対し、そのアドレスがシーケンシャル領域内に対するアクセスかどうかを判定してメモリアクセス制御を変えることを特徴とするメモリデバイス。
【請求項２】
前記制御部は、前記リードコマンドのアドレス位置から、又は前記ライトコマンドが書き込んだデータの続きからその記憶領域の最後までを次のデータの書き込みが可能な領域とし、前記リードコマンドまたはライトコマンドで指定したアドレスより前の記憶領域に格納されたデータが存在する場合、そのデータを保存することを特徴とする請求項１記載のメモリデバイス。
【請求項３】
前記シーケンシャルライト領域に、記録単位で書き込み境界に一致してデータを書き込むときの性能指標と、記憶領域の大きさを保持するレジスタをさらに具備し、外部から前記レジスタを読み出すことができることを特徴とする請求項１記載のメモリデバイス。
【請求項４】
メモリアクセス制御は、前記シーケンシャルライト領域に対するライトコマンドのアドレスが、上書きが発生しないアドレスであり、データ長が書き込み記録単位の境界に一致している場合、性能指標よりも平均書き込み性能が高くなるようにビジー時間を制御し、前記条件を満たさない場合、性能指標を満たさないビジー時間を出すことができることを特徴とする請求項１記載のメモリデバイス。
【請求項５】
前記制御部は、オーバーライト領域を指定する第２引数を有する制御コマンドと、リードコマンド又はライトコマンドを受け、前記リードコマンド又はライトコマンドのアドレスを開始位置として示される前記記憶領域をオーバーライト領域として登録し、前記記憶領域をアクセスするメモリアクセスコマンドに対し、そのアドレスがオーバーライト領域内に対するアクセスかどうかを判定してメモリアクセス制御を変えることを特徴とする請求項１記載のメモリデバイス。
【請求項６】
前記オーバーライト領域の大きさは、前記制御コマンドの第３引数、又は、前記リードコマンド又はライトコマンドがアクセスしたデータ領域の大きさで決定されることを特徴とする請求項５記載のメモリデバイス。
【請求項７】
前記制御部は、指定されたオーバーライト領域又はシーケンシャルライト領域に対する書き込みの最大ビジー時間より、指定されていない領域に書き込んだ時の最大ビジー時間を大きく設定し、指定されたオーバーライト領域又はシーケンシャルライト領域に対する書き込みの平均ビジー時間より、指定されていない領域に書き込んだ時の平均ビジー時間の方を大きくできるように表示するビジー時間が異なるメモリアクセス制御することを特徴とする請求項５記載のメモリデバイス。
【請求項８】
前記メモリデバイスの電源が維持されている場合、指定したシーケンシャルライト領域とオーバーライト領域の登録情報が保持されることを特徴とする請求項７記載のメモリデバイス。
【請求項９】
前記オーバーライト領域は、規定値まで複数個を登録でき、前記規定値以上のオーバーライト領域が指定された場合、前記規定値から最新のオーバーライト領域までがオーバーライト領域として登録されることを特徴とする請求項８記載のメモリデバイス。
【請求項１０】
前記制御部は、ファイルシステムのデータ領域を指定する第４引数を有する制御コマンドと、アドレスでファイルシステムのデータ領域の開始アドレスを示すリードコマンドを受け、前記リードコマンドのアドレスから複数のファイルシステムのパラメータの位置を特定し、その複数の領域をオーバーライト領域として登録することを特徴とする請求項５記載のメモリデバイス。
【請求項１１】
前記制御コマンドは、最初にシーケンシャルライト領域を指定する第５引数を具備し、
前記制御部は、前記第１引数を有する制御コマンドをサポートするメモリデバイスが、前記第５引数を有する制御コマンドを受けた場合、第５引数を有する制御コマンドは、前記第１引数を有する制御コマンドとして処理することを特徴とする請求項５記載のメモリデバイス。
【請求項１２】
前記制御部は、ライトコマンドの書き込みが、記録単位で書き込み境界に一致しているデータ書き込みであり、その書き込み先が登録されているシーケンシャルライト領域の最後までをライトし、それに続く次のライトコマンドが別の記憶領域(AU)の先頭から記録単位で書き込み境界に一致した書き込みである場合、新らたに書き込んだ記憶領域をシーケンシャルライト領域として登録することを特徴とする請求項１１のメモリデバイス。
【請求項１３】
前記制御部は、ファイルシステムの位置を示す制御コマンドを受けた場合、それに続くライトコマンドのアドレスにより、オーバーライト領域の開始位置を決定し、前記ライトコマンドが書き込む領域を含む大きさの領域を前記オーバーライト領域として登録し、その領域が既にオーバーライト領域として登録されている場合、その登録を維持することを特徴とする請求項１１記載のメモリデバイス。
【請求項１４】
前記制御部は、ストリームデータの記録中に、ストリームデータ以外の小データを書き込む位置を示す制御コマンドを受けた場合、それに続くライトコマンドのアドレスにより、オーバーライト領域の開始位置を決定し、前記ライトコマンドが書き込む領域を含む大きさの領域を前記オーバーライト領域として登録し、その領域が既にオーバーライト領域として登録されている場合、その登録を維持することを特徴とする請求項１１記載のメモリデバイス。
【請求項１５】
メモリデバイスをフォーマットしているファイルステムを認識するホストデバイスであって、
拡張子などのファイルシステムのデータや作成するファイルのデータ長から、そのデータをシーケンシャルライト領域に書くかオーバーライト領域に書くかを決定し、
ファイルシステムのデータは、オーバーライト領域に記録し、
書き換えられる短いデータは、オーバーライト領域に記録し、
書き換えられる長いデータは、シーケンシャルライト領域に記録し、
書き換えを想定しないデータは、シーケンシャルライト領域に記録することを特徴とするホストデバイス。
【請求項１６】
５１２Ｋバイト以上のデータは長いデータと判定し、６４Ｋバイト未満のデータは短いデータと判定し、
前記シーケンシャルライト領域の最小記録単位を６４Ｋバイトとすることを特徴とする請求項１５記載のホストデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリデバイス及びホストデバイスに関する。
【背景技術】
【０００２】
例えばＳＤＴＭカードのようなメモリデバイスは、メモリデバイスの性能とホストデバイスが要求する性能との整合を容易化するため、複数のクラスに分類されている。スピードクラス（Speed Class）は、スピードクラス番号によりメモリデバイスの性能を分類し、メモリデバイスの性能を計算する方法を提供する。
【０００３】
スピードクラスは、特定のコマンドを用いて書き込み手順が制御される。性能を維持したメモリ書き込みを行う場合、メモリデバイスの物理的な記憶領域としてアロケーション・ユニット(Allocation unit)（以下、ＡＵ、又はシーケンシャルライト領域とも称す）にシーケンシャルな書き込みを行うが、アロケーション・ユニットの先頭から書き込む必要があるため、途中までデータが書かれたアロケーション・ユニットはデータの記録に使用することができなかった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１７５６１５号公報
【特許文献２】特開２００６−１７８９２３号公報
【非特許文献】
【０００５】
【非特許文献１】SD Specifications Part 1 Physical Layer Simplified Specification Version 3.01, May 18, 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施形態は、途中まで書かれたアロケーション・ユニットを使用可能とし、アロケーション・ユニットの利用効率を向上することが可能なメモリデバイス及びホストデバイスを提供する。
【課題を解決するための手段】
【０００７】
本実施形態のメモリデバイスは、外部からアクセス可能な複数の物理的な記憶領域を有する不揮発性半導体メモリと、前記不揮発性半導体メモリを制御する制御部を有する。前記制御部は、シーケンシャルライト領域を指定する第１引数を有する制御コマンドと、リードコマンド又はライトコマンドを受け、前記リードコマンド又はライトコマンドのアドレスで示される前記記憶領域をシーケンシャルライト領域として登録し、前記記憶領域をアクセスするメモリアクセスコマンドに対し、そのアドレスがシーケンシャル領域内に対するアクセスかどうかを判定してメモリアクセス制御を変えることを特徴とする。
【図面の簡単な説明】
【０００８】
【図１】本実施形態が適用されるメモリシステムの一例を示す構成図。
【図２】ＮＡＮＤフラッシュメモリのユーザ領域の管理単位を示す図。
【図３】マルチファイルの記録の一例を示す図。
【図４】本実施形態に適用されるコマンドのフォーマットの一例を示す図。
【図５】コマンドを用いたシーケンシャルライト領域の設定の一例を示す図。
【図６】コマンドを用いたオーバーライト領域の制御の一例を示す図。
【図７】コマンドを用いたデータ領域の先頭を設定するための制御の一例を示す図。
【図８】コマンドを用いたカード領域の準備を行うための制御の一例を示すフローチャート。
【図９】図９（ａ）は、アロケーション・ユニットに対する書き込みの一例を示す図であり、図９（ｂ）は、セットアップシーケンスの一例を示すフローチャート。
【図１０】図９（ｂ）に示すセットアップシーケンスをコマンドシーケンスで表した例を示す図。
【図１１】カードを初期化してルートディレクトリの下にサブディレクトリを作成し、ファイルを作成する例を示す図。
【図１２】図１１の動作を具体的に示す図。
【図１３】図１１、図１２の動作をコマンドシーケンスで表した例を示す図。
【図１４】図３に示す動作をコマンドシーケンスで表した例を示す図。
【図１５】Video Gradeの性能情報とＡＵのサイズ情報の一例を示す図。
【発明を実施するための形態】
【０００９】
以下、実施の形態について、図面を参照して説明する。
【００１０】
図１は、本実施形態に係るメモリシステムを概略的に示している。
【００１１】
メモリシステムは、例えばＳＤカードのようなメモリデバイス１１（以下、カードとも言う）と、ホストデバイス２０により構成される。
【００１２】
メモリデバイス１１は、ホストデバイス２０に接続されたときに電源供給を受けて動作し、ホストデバイス２０からのアクセスに応じた処理を行う。このメモリデバイス１１は、コントローラ１１ａを有している。
【００１３】
コントローラ１１ａは、例えばホストインターフェース（Ｉ／Ｆ）１２、ＣＰＵ１３、ＲＯＭ（Read only Memory）１４、揮発性メモリとしてのＲＡＭ（Random Access Memory）１５、バッファ１６、メモリインターフェース（Ｉ／Ｆ）１７により構成されている。これらは、バスにより接続されている。メモリインターフェース１７には、例えばＮＡＮＤフラッシュメモリ１８と、拡張機能部としてのＩ／Ｏ１９が接続されている。拡張機能部は、例えば無線ＬＡＮ装置などを適用することが可能である。
【００１４】
ホストインターフェース１２は、コントローラ１１ａとホストデバイス２０との間のインターフェース処理を行う。ホストインターフェース１２は、レジスタ１２ａを有している。このレジスタ１２ａは、後述するＡＵのサイズなどのメモリデバイス１１固有のデータを記憶する。このデータは、電源投入時、ＮＡＮＤフラッシュメモリ１８から読み出され、レジスタ１２ａに設定される。このレジスタ１２ａの内容は、ホストデバイス２０から発行されるコマンド例えばＣＭＤ１３により読み出される。
【００１５】
メモリインターフェース１７は、コントローラ１１ａとＮＡＮＤフラッシュメモリ１８、又はＩ／Ｏ１９との間のインターフェース処理を行う。ＣＰＵ１３によるデータ転送だけでなく、ハードウェアによるＤＭＡ転送で、ホストインターフェース１２、ＲＡＭ１５、バッファ１６などのデータを転送することができる。
【００１６】
ＣＰＵ１３は、メモリデバイス１１全体の動作を司るものである。このＣＰＵ１３は、ＲＯＭ１４の中に格納されているファームウェア（制御プログラム等）、あるいは、ＮＡＮＤフラッシュメモリ１８に記録されているファームウェアをＲＡＭ１５上にロードして所定の処理を実行する。すなわち、ＣＰＵ１３は、各種のテーブルや例えば拡張レジスタをＲＡＭ１５上に作成したり、ホストデバイス２０からライト（書き込み）コマンド、リード（読み出し）コマンド、イレース（消去）コマンドを受けて、ＮＡＮＤフラッシュメモリ１８上の領域をアクセスしたり、バッファ１６を介してデータ転送処理を制御したりする。
【００１７】
ＲＯＭ１４は、ＣＰＵ１３により使用される制御プログラムなどのファームウェアを格納する。ＲＯＭ１４に一部のファームウェアを実装し、その他のファームウェアは、ＮＡＮＤフラッシュメモリ１８に格納し、ＲＡＭ１５に展開して実行することもできる。また、ＲＡＭ１５は、ＣＰＵ１３の作業エリアとして使用され、制御プログラムや各種のテーブルや拡張レジスタを記憶する。
【００１８】
バッファ１６は、ホストデバイス２０から送られてくるデータを、例えばＮＡＮＤフラッシュメモリ１８へ書き込む際、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤフラッシュメモリ１８から読み出されたデータをホストデバイス２０へ送り出す際、一定量のデータを一時的に記憶したりする。また、バッファ１６を介することにより、ＳＤバスインターフェースとバックエンドを非同期に制御することができる。
【００１９】
ＮＡＮＤフラッシュメモリ１８は、例えば積層ゲート構造のメモリセル、又はＭＯＮＯＳ構造のメモリセルにより構成されている。
【００２０】
Ｉ／Ｏ１９は、例えばデジタルカメラやＰＨＳなどの周辺機器やインターフェースとしての機能を有している。例えば、Ｉ／Ｏ１９として無線ＬＡＮ装置を適用することで、無線通信機能を持たないデジタルカメラでも外部サーバや、外部ＰＣ（パーソナルコンピュータ）等との間で無線によるデータ通信を行うことが可能となる。
【００２１】
ホストデバイス２０は、例えばデジタルカメラやＰＨＳなどが適用可能である。ホストデバイス２０は、ホストコントローラ２１、ＣＰＵ２２、ＲＯＭ２３、ＲＡＭ２４、例えばハードディスク２５(ＳＳＤを含む)により構成されている。これらはバスにより接続されている。
【００２２】
ＣＰＵ２２は、ホストデバイス２０の全体を制御する。ＲＯＭ２３は、ＣＰＵ２２の動作に必要なファームウェアを記憶している。ＮＡＮＤフラッシュメモリ１８から読み出したファームウェアをＲＡＭ２４に格納し、ＲＯＭ２３を持たないシステムを構成することも可能である。ＲＡＭ２４は、例えばＣＰＵ２２の作業領域として使用されるが、ＣＰＵ２２が実行可能なプログラムもここにロードされ実行される。ハードディスク（ＨＤＤ）２５は、各種データを保持する。ホストコントローラ２１は、メモリデバイス１１が接続された状態において、メモリデバイス１１とのインターフェース処理を行う。さらに、ＣＰＵ２２の指示に従って、後述する各種コマンドを発行する。
【００２３】
図２は、ＮＡＮＤフラッシュメモリ１８の領域の中でユーザが使用可能なユーザ領域１８ａの管理単位を示すものである。外部からコマンドを用いてアクセス可能な領域であるＮＡＮＤフラッシュメモリ１８のユーザ領域１８ａは、複数のＡＵに分割されている。ＡＵ１〜ＡＵｎのそれぞれの大きさは、ＮＡＮＤフラッシュメモリ１８の物理的境界から決定され、フィルシステムが管理するユーザ領域の境界を定義するものではない。各ＡＵサイズのｎ倍(整数倍)がユーザ領域１８ａ全体のメモリ容量となる。
【００２４】
先頭のＡＵ１には、通常、ＦＡＴ(File Allocation Table)などのファイルシステムの情報が記録される。このため、ＡＵ１に対する書き込み性能は保証されない。ＡＵ２〜ＡＵｎは、性能が保証された記録領域であり、記録可能領域(Recordable Area)として示されている。但し、ディレクトリエントリやオーバーライトを行うＡＵは、性能保証から除外される。ＡＵサイズが小さく、例えばＡＵ１〜ＡＵｐにファイルシステムの情報が記録される場合は、ＡＵｐ＋１〜ＡＵｎが性能保証された記録領域となる。
【００２５】
また、各ＡＵは、複数の記録ユニット(Recording Unit)（以下、ＲＵと称す）という記録単位に分割されている。少なくともＲＵのサイズ以上のデータ長のデータを連続的に書き込むシーケンシャルライト(sequential write)に対して性能が保証される。そのため、ホストデバイス２０は、ＲＵの整数倍の単位でマルチブロックライトを実行する必要がある。これはカード内部のパイプライン動作の効果が性能に表れるためには、ある程度のデータ長が必要となるためである。
【００２６】
図２は、１つのＡＵがｍ個のＲＵから構成されることを示している。ＲＵのサイズをＳＲＵ、ＡＵのサイズをＳＡＵとすると、１つのＡＵ内のＲＵの数ｍ＝ＮＲＵは、ＳＡＵ／ＳＲＵで表される。
【００２７】
任意のＡＵに対して、シーケンシャルライトを行った場合の平均性能の最悪値が、このメモリデバイスのライト性能指標Ｐｗで表される。ＡＵサイズが４ＭＢを超える場合は、ＡＵを４ＢＭ単位に分割した各４ＢＭ領域の平均性能の最悪値としてＰｗが定義される。
【００２８】
ホストデバイス２０は、ＰｗとＡＵのサイズＳＡＵをメモリデバイスの例えばレジスタ１２ａから読み出して性能計算に用いることができる。
【００２９】
（複数ファイルの書き込みにおける性能見積り）
ＡＵアドレスとＡＵサイズとで示される領域に対するシーケンシャルライトの平均の最低性能は、Ｐｗから推測することができる。デバイスによってＰｗとＡＵサイズの値が異なるため、ホストデバイス２０は、メモリデバイスのレジスタ１２ａからＰｗとＡＵサイズを読み出して対応する必要がある。
【００３０】
ここでは、Ｐｗ＝１０ＭＢ／ｓｅｃの性能を持つメモリデバイスで、性能見積りの方法の例を示す。デバイスのメモリアクセス時間をタイムスロットで管理する場合、このデバイスは、１秒間の各タイムスロットで少なくとも１０ＭＢの書き込みが可能と考えることができる。平均４ＭＢ／ｓｅｃの性能で記録する場合、１秒間のタイムスロットのどこかで４ＭＢを書き込む必要がある。
【００３１】
３つのファイルを時分割に書き込むとき、１秒間のタイムスロット内のデータ書き込み量を調整することにより、各ファイルの書き込み性能を調整することができる。３つの各ファイルを３ＭＢ／ｓｅｃで書き込む場合、１秒間のタイムスロット内に各ファイルを分割して合計３ＭＢずつ書き込めば良いことになる。タイムスロットの残り１００ｍｓ分はホストデバイス側の制御にかかるマージンとして、ＦＡＴを更新するための時間の一部として割り当てることができる。このように、複数のファイルの書き込み性能は、タイムスロットの割り当て数を決めて時分割に書き込みをすることにより、ホストデバイスが計算し、制御することができる。
【００３２】
（マルチファイルの記録の例）
図３は、ＮＡＮＤフラッシュメモリ１８のユーザ領域１８ａに対するマルチファイルの記録の例を示している。
【００３３】
図３において、オーバーライト領域（OverW-Area）は、後述するコマンド（ＣＭＤ２０）の“Set Over-Write Area”により割り当てられる。また、シーケンシャルライトが行われる領域（以下、シーケンシャルライト領域と称す）は、ＣＭＤ２０の“Set Sequential-Write AU”により割り当てられる。
【００３４】
ＣＭＤ２０“Set Sequential-Write AU”により、１つのシーケンシャルライト領域を割り当てることができ、ホストデバイス２０はそのシーケンシャルライト領域に複数のファイルを分割して書くことができる。
【００３５】
図３において、オーバーライト領域（OverW-Area）のディレクトリエントリＤＩＲ1には、３つのファイルエントリＦＥ１、ＦＥ２、ＦＥ３が作成され、ディレクトリエントリＤＩＲ２には、ファイルエントリＦＥ４が作成される。
【００３６】
シーケンシャルライト領域SeqW-AUにおいて、File 1aは、File 1の一部であり、ＲＵ単位にＲＵバウンダリに一致させて書き込まれる。このため、File 1aの書き込みにおいて、少なくとも性能Ｐｗが保証される。
【００３７】
また、File 2、 File 3は、ＲＵ以下の大きさのファイルであり、ＲＵより小さなデータサイズにより書き込まれる。データは、ＲＵ境界より小さな例えば６４ＫＢの境界上にある。これらFile 2、 File 3の書き込みにおいて、データ長がＲＵサイズより小さいために性能Ｐｗは保証されない。
【００３８】
File 4を少なくとも性能Ｐｗが保証されて書き込む必要がある場合、先ず、File 3に続いてPaddingとしてＲＵ境界までダミーデータが書き込まれる。次いで、File 4がＲＵバウンダリに合わせて書き込まれる。すなわち、File 4のデータは、ＲＵ単位にＲＵバウンダリに一致して書き込まれるので性能Ｐｗが保証される。
【００３９】
次に、File 1の残りの部分としてのFile 1bがFile 4に続いて書き込まれる。File 1bは、ＲＵ単位にＲＵバウンダリに一致させて書きこむことにより、少なくとも性能Ｐｗが保証される。すなわち、ホストデバイス２０は、ＲＵ単位の倍数の分割により、File 1 及びFile 4 の書き込み性能を管理する。
【００４０】
図示はしていないが、File 1 をクローズするため、FAT Updateが実行される。図示せぬＦＡＴ領域やビットマップが更新され、ＤＩＲ領域のファイルエントリ１(FE1)を含む５１２バイトを更新することにより、File 1の途中までの書き込みデータをファイルシステムとして確定することができる。これにより、ホストはファイルシステム情報からFile 1の書いたところまでのデータを読み出すことができる。
【００４１】
図４は、本実施形態に適用されるコマンドＣＭＤ２０のフォーマットの一例を示している。
【００４２】
図４に示すＣＭＤ２０において、“Ｓ”は、コマンドのスタートビットを示し、“Ｔ”は転送方向を示すビットを示している。“ｉｎｄｅｘ”は、コマンド番号を示すものであり、コマンドがシーケンシャル書き込みなどの制御コマンドであることを特定するためのビット列を有している。
【００４３】
“ＳＣＣ”は、スピードクラス制御（Speed Class Control）を示す引数であり、コマンドの機能や動作を指定する動作指定部である。“ＳＣＣ”は、複数ビットにより構成され、“ＳＣＣ”のビットによりＣＭＤ２０の各種機能が設定される。
【００４４】
“ＯＷＡＳ”(Over Write Area Size)は、オーバーライト領域のサイズを指定する引数である。
【００４５】
“ＣＲＣ７”は、巡回冗長検査（cyclic redundancy check）コードを示している。
【００４６】
“Ｅ”は、コマンドのエンドビットを示している。
【００４７】
前述したように、ＣＭＤ２０は、“ＳＣＣ”のビットにより、例えば“Start Recording”“Update DIR”“Update CI”“Set Sequential-Write AU”“Set Over-Write Area”“Set Top of Data Area”及び“Arrange Area”が設定される。
【００４８】
（Set Sequential-Write AU）
ＣＭＤ２０“Set Sequential-Write AU”は、シーケンシャルライト領域を登録するためのコマンドである。このＣＭＤ２０"Set Sequential-Write AU"は、後述するように、読み出しコマンドや、ライトコマンドと組み合わせて使用される。
【００４９】
ＣＭＤ２０"Set Sequential-Write AU"は、例えば記録の準備を行うセットアップシーケンスで用いられる場合、このコマンドの処理時間として、例えば１秒のビジー期間が許容され、データの記録中に使用される場合、ビジーの許容時間は、例えば１０ｍｓに抑えられている。
【００５０】
（Set Over-Write Area）
ＣＭＤ２０“Set Over-Write Area”は、オーバーライト領域を設定するためのコマンドである。オーバーライト領域は、ＣＭＤ２０“Set Over-Write Area”及びリードコマンド又はライトコマンド、及びアドレスを用いて指定される。ＣＭＤ２０“Set Over-Write Area”には、例えば１００ｍｓのビジー期間が設定されている。
【００５１】
尚、上記ＣＭＤ２０とライトコマンド／リードコマンドを用いた処理において、メモリアクセス制御とは、後述するように、例えば、ライトコマンドを処理中であることを示すビジー時間の制御、引越し制御(書いていない部分のデータを維持する制御)、キャッシュ制御(直接ＮＡＮＤフラッシュメモリに書かずにバッファに書いておき、後にバッファに書き込まれたデータを整理してフラッシュメモリに書く方式)が考えられる。
【００５２】
（Set Top of Data Area）
ＣＭＤ２０“Set Top of Data Area”は、ファイルシステムのデータ領域をカードに伝えるコマンドである。カードはファイルシステムを解析する必要がなく、ＤＩＲ領域やビットマップの位置を予測することができる。データ領域の先頭アドレスは、後述するように、ＣＭＤ２０“Set Top of Data Area”と、例えばリードコマンドにより指定される。ＣＭＤ２０“Set Top of Data Area”には、例えば１００ｍｓのビジー期間が設定されている。
【００５３】
（Arrange Area）
ＣＭＤ２０“Arrange Areas”は、特定の時間内でメモリデバイス１１が領域の準備することを許可するコマンドであり、ＣＭＤ２０のビジーを解除することにより、準備が完了したことを示す。このＣＭＤ２０“Arrange Areas”は、他のＣＭＤ２０の機能とは異なり、単独で用いられる。ＣＭＤ２０“Arrange Areas”は、セットアップシーケンスで使用される場合、例えば１秒のビジーを許容しており、データの記録中で使用される場合、ビジーの許容時間は例えば２５０ｍｓに抑えられる。
【００５４】
（“ＯＷＡＳ”：Over-Write Area Size）
“ＯＷＡＳ”は、オーバーライト領域のサイズを指定する引数である。
【００５５】
本実施形態において、オーバーライト領域の大きさの指定方法は２通りある。
【００５６】
（１）ＣＭＤ２０の“ＯＷＡＳ”を“0000b”に設定した場合
この場合、ＣＭＤ２０に続くＣＭＤ１８のリード動作範囲、又はＣＭＤ２５のライト動作範囲によって、オーバーライト領域のサイズが指定される。
【００５７】
例えば、ディレクトリエントリ領域を新規に作成する場合、初期化のためにその領域にデータ“０”を書き込む必要がある。ホストデバイス２０より、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ２５を発行し、データ“０”を書き込むことにより、作成したディレクトリエントリ領域は、オーバーライト領域として登録することができる。但し、ＦＡＴファイルシステムでは、すべて“０”を書き込む必要はなく、カレント・ディレクトリを示す“.”と、親ディレクトリを示す“..”などのファイルエントリを、このコマンドで書くこともできる。
【００５８】
（２）ＣＭＤ２０の“ＯＷＡＳ”を“0001b”〜“1111b”に設定した場合、図４に示すサイズのオーバーライト領域を登録することができる。この場合、リードサイズ、ライトサイズはＯＷＡＳの設定値以下である必要がある。
【００５９】
本実施形態のＣＭＤ２０をサポートするメモリデバイスは、従来のコマンドを受信した場合、本実施形態のコマンドに解釈を変換することができる。これにより、互換性をある程度維持することができる。
【００６０】
（Start Recording）
ＣＭＤ２０“Start Recording”は、最初にシーケンシャルライト領域を指定するコマンドである。この“Start Recording”は、そのまま "Set Sequential-Write AU"として扱うことができる。このＣＭＤ２０は、１秒のビジーを表示できる。
【００６１】
この“Start Recording”は、最初のＡＵ指定にしか用いられず、続くシーケンシャルライト領域の指定には用いられない。このため、下記の条件を満たすＡＵは、シーケンシャルライト領域として登録する必要がある。マルチブロックライトコマンドＣＭＤ２５のデータライトが、ＲＵ単位にＲＵ境界と一致した書き込みであり、その書き込み先が登録されたシーケンシャルライト領域で、最後の領域までデータを書き込むコマンドであり、それに続くＣＭＤ２５が、別のＡＵの先頭からＲＵ単位にＲＵ境界と一致した書き込みである場合、新しく書き込んだＡＵをシーケンシャルライト領域として登録する。
【００６２】
（Update DIR）
“Update DIR”は、ディレクトリエントリの一部の５１２バイトを更新するＣＭＤ２４／２５の前に発行される。
【００６３】
ＣＭＤ２４／２５の示すアドレスから５１２バイトの領域が、上書き領域に登録されていない場合、少なくともＣＭＤ２４／２５の示すアドレスから５１２バイトの領域を包含する領域をオーバーライト領域として登録する。
【００６４】
ＣＭＤ２４／２５の示すアドレスから５１２バイトの領域が、既に上書き領域に登録されている場合、この登録が維持され、“Update DIR”としてのＣＭＤ２０はこれ以上何もする必要はない。
【００６５】
（Update CI）
“Update CI”は、ＣＩ（Continuation Information）を例えばビデオデータなどのストリームデータの書き込みの途中に、ストリームデータ以外の小データを書き込む場合に用いられる。この場合、“Update CI”は、ＣＩデータの一部、例えば５１２バイトを書き込むＣＭＤ２４／２５の前に発行される。
【００６６】
次の“Update CI”は、その次の５１２バイトに書き込まれる可能性が高いため、ＣＩデータ用の上書き領域を確保する場合、多少大きめの領域を確保しておくと良い。
【００６７】
ＣＭＤ２４／２５の示すアドレスから５１２バイトの領域が、上書き領域として登録されていない場合、少なくともＣＭＤ２４／２５の示すアドレスから５１２バイトの領域を包含する領域を上書き領域として登録する。
【００６８】
ＣＭＤ２４／２５の示すアドレスから５１２バイトの領域が、既に上書き領域に登録されている場合、このＣＭＤ２０はこれ以上何もする必要はない。
【００６９】
（ＣＭＤ２０の具体的な機能）
次に、ＣＭＤ２０の“Set Sequential-Write AU”“Set Over-Write Area”“Set Top of Data Area”及び“Arrange Area”の機能について具体的に説明する。
【００７０】
（シーケンシャルライト領域の設定：Set Sequential-Write AU）
従来、途中まで書いたＡＵは、データの記録に使えない仕様であった。このため、メモリデバイスの電源を切ってしまうと、次に電源を入れた場合、前回途中まで記録したＡＵ内の空き領域は使用できなかったため、ＡＵの使用率が低下していた。
【００７１】
そこで、本実施形態において、初期化時に使用途中のＡＵをシーケンシャルライト領域として再登録を可能としている。
【００７２】
途中まで使用したＡＵの残りの領域を使用可能とする指定方法を持つことにより、ＡＵの使用効率を向上することが可能となる。
【００７３】
ＡＵの管理はホストデバイス２０が行うため、ホストデバイス２０によりＡＵが指定される。この方法によれば、カードの電源を切っても、ＡＵに設定された登録情報が有効であり、カードにおいて登録情報を保持する必要がない。
【００７４】
また、シーケンシャルライト領域は、１つのＡＵが書き終わるまで有効とされる。
【００７５】
従来は、ランダムライトが発行された時点で、シーケンシャルライトは終了となり、そのＡＵに追加書き込みができなかった。
【００７６】
本実施形態において、登録されたＡＵは、ランダムライトが発行された場合においても、シーケンシャルライトの設定に影響を与えないこととしている。このため、シーケンシャルライト領域は、空き領域に追記が行え、ＡＵの使用率を向上することが可能となる。
【００７７】
以下、図５を参照して、シーケンシャルライト領域SeqW-AUの設定について、具体的に説明する。
【００７８】
シーケンシャルライト領域SeqW-AUを確保するコマンド形式は、次の通りである。
【００７９】
ＣＭＤ２０"Set Sequential-Write AU" ＋ ＣＭＤｘｘ
上記コマンド形式により、１つのシーケンシャルライト領域SeqW-AUが指定される。
【００８０】
ＣＭＤ２０"Set Sequential-Write AU"と、ＣＭＤｘｘの組合せは、次の通りである。
【００８１】
ＣＭＤｘｘは、例えば読み出しコマンド（ＣＭＤ１７）、又はマルチブロックライトコマンド（ＣＭＤ２５）の２通りと、ＣＭＤｘｘのアドレスがＡＵの先頭を示すか、途中を示すかの２通りがある。この結果、４通りの指定方法がある。
【００８２】
（Ｃａｓｅ １）
ＡＵの先頭アドレスからＣＭＤ１７で５１２バイト読んだ場合、そのＡＵがシーケンシャルライト領域として登録される。データはシーケンシャルライト領域の先頭から書き込まれる。
【００８３】
（Ｃａｓｅ ２）
ＡＵの途中のアドレスからＣＭＤ１７で５１２バイト読んだ場合、そのＡＵがシーケンシャルライト領域として登録される。データは指定したアドレスから書き込まれる。指定したアドレスより前の領域に記録されたデータは保護される。
【００８４】
（Ｃａｓｅ ３）
ＡＵの先頭アドレスからＣＭＤ２５によりデータが書き込まれる場合、そのＡＵがシーケンシャルライト領域として登録される。データはＡＵの先頭から書き込まれ、続きのデータは、書き込まれたデータの直後から書き込まれる。
【００８５】
（Ｃａｓｅ ４）
ＡＵの途中のアドレスからＣＭＤ２５によりデータが書き込まれる場合、そのＡＵがシーケンシャルライト領域として登録される。データはＡＵの途中の指定したアドレスから書き込まれ、続きのデータは、書き込まれたデータの直後から書き込まれる。指定したアドレスより前の領域に記録されたデータは保護される。
【００８６】
（シーケンシャルライト領域の有効期間）
シーケンシャルライト領域の有効期間は、次のＣＭＤ２０"Set Sequential-Write AU" ＋ ＣＭＤｘｘ で新しい領域が指定されると、解除される。
【００８７】
また、確保されたシーケンシャルライト領域の最後までデータが書き込まれた場合、登録が解除される。
【００８８】
メモリデバイス１１の電源が切られた場合、シーケンシャルライト領域の登録を保持していても良いし解除しても良い。
【００８９】
（オーバーライト領域の設定：Set Over-Write Area）
前述したように、ＣＭＤ２０“Set Over-Write Area”は、オーバーライト領域を設定するコマンドである。(このとき引越し制御(書いていない領域のデータを維持する制御)は発生しない。書いていない領域があってもデータは保存する必要がない。)。また、シーケンシャルライト領域へのライトがシーケンシャルでない(オーバーライトが発生)と判定した場合も登録が解除される。
【００９０】
ランダムライトデータは、一旦キャシュに保存されるが、ユーザ領域全体がランダムライトの対象となり得るため、キャッシュフラッシュが発生したとき、非常に長い処理時間がかかってしまう可能性が想定されていた。そのため、メモリデバイス１１が長いビジーを表示することになり、プチフレーズと呼ばれるような現象が発生してしまう恐れがあった。特に、フラッシュメモリのブロックサイズ (ＡＵサイズを決める基となる物理的データ長)が大きくなるほど、データを管理する領域が広いためビジー時間も長くなる傾向がある。したがって、大ブロックのフラッシュメモリでは特に大きな問題となる。
【００９１】
そこで、本実施形態では、オーバーライトできる領域を限定することにより、キャッシュフラッシュの影響を小さくでき、最悪の場合においても、処理時間を小さく見積もることができ、カードが長いビジーを表示することを防ぐことを可能としている。
【００９２】
このため、本実施形態では、複数のオーバーライト領域が登録可能とされている。また、ビジー時間を規定し、登録時に準備のための時間を確保している。
【００９３】
オーバーライト領域は、ＣＭＤ２０＋Ｒｅａｄ／Ｗｒｉｔｅコマンド、及びアドレスを用いて指定される。
【００９４】
また、オーバーライト領域の大きさの指定は、例えば次の２つの方法を用いることが可能である。
【００９５】
（１）  ＣＭＤ２０で大きさを指定する方法。
【００９６】
（２）  Ｒｅａｄ／Ｗｒｉｔｅしたデータ領域で指定する方法。
【００９７】
方法（１）(前記 ＣＭＤ２０の引数ＯＷＡＳとして説明)は、大きな領域をまとめてオーバーライト領域に指定する場合に有効である。また、ディレクトリエントリを初めて作成する場合、初期化のために、確保した領域にデータ“０”を書き込む必要がある。このため、この場合は方法（２）が有効である。
【００９８】
尚、未指定領域に対してデータを書き込む場合、ライトコマンドは長いビジー時間を示す可能性がある。例えば、オーバーライト領域の各ビジーの最大時間２５０ｍｓ(ｍａｘ．)に対して、未指定領域５００ｍｓ(ｍａｘ．)などに設定される。すなわち、オーバーライト領域に対するキャッシュ制御方法と、指定されていない領域に対するキャッシュ制御方法が異なることを意味する。このため、メモリデバイスは、ＡＵをアクセスするコマンドのアドレスがオーバーライト領域に対するアクセスである場合、メモリアクセス制御、例えばキャッシュの制御を、オーバーライト領域以外と異なる制御に変更する。すなわち、したがって、ホストデバイスは、シーケンシャル領域とオーバーライト領域を指定して、その領域内にライトを行うことにより、メモリデバイスは効率の良い処理が可能となり、トータル性能を向上させることができる。
【００９９】
以下、図６を参照して、オーバーライト領域の指定方法について具体的に説明する。
【０１００】
オーバーライト領域を確保するコマンド形式は、次の通りである。
【０１０１】
ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤｘｘ
この形式により、１つのオーバーライト領域が指定される。例えばカードは最大８個のオーバーライト領域が登録可能であり、８個以上指定した場合、最新の８個の領域がオーバーライト領域として有効となる。
【０１０２】
ＣＭＤ２０とＡＭＤｘｘの組合せは、次の通りである。
【０１０３】
ＣＭＤｘｘは、例えばマルチブロックリードコマンドＣＭＤ１８、又は、マルチブロックライトコマンドＣＭＤ２５であり、２通りの指定方法がある。(シングルライトコマンドＣＭＤ２４、シングルリードコマンドＣＭＤ１７でも良い。)
領域の大きさの指定方法には、後述するＣＭＤ２０の引数で指定する方法と、ＣＭＤｘｘのアクセスした領域で指定する方法の２通りがある。
【０１０４】
（Ｃａｓｅ １）
図６に示すように、或るＡＵの途中のアドレスからＣＭＤ２５によりデータを書き込んだ場合、そのＡＵの一部がオーバーライト領域として登録され、データは指定したアドレスから書き込まれる。オーバーライト領域は、ＣＭＤ２０の引数ＯＷＡＳで示される設定値、又はＣＭＤ２５で書いたデータ長で指定される。指定したオーバーライト領域を含むＡＵに対してはライトした領域以外の領域のデータは保護される。
【０１０５】
（Ｃａｓｅ ２）
図６に示すように、或るＡＵの途中のアドレスからＣＭＤ１８により５１２バイトのデータを読み出した場合、そのＡＵの一部がオーバーライト領域として登録され、データは指定したアドレスから読み出される。オーバーライト領域は、ＣＭＤ２０の引数ＯＷＡＳで示される設定値、又はＣＭＤ１８で読んだデータ長で指定される。指定したオーバーライト領域を含むＡＵ内のデータは保護される。
【０１０６】
上記のように、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤｘｘでオーバーライト領域が追加された場合において、登録数の上限が設定されている場合、最新に登録したオーバーライト領域が上書き領域として維持される。
【０１０７】
メモリデバイス１１の電源が切られた場合、オーバーライト領域の登録を保持していても良いし、解除しても良い。
【０１０８】
（セットアップシーケンスの改善：Set Top of Data Area）
前述したように、ＣＭＤ２０“Set Top of Data Area”は、ファイルシステムのデータ領域を伝えるコマンドである。
【０１０９】
ホストデバイス２０は、ファイルシステムのフォーマットを示すデータ領域の先頭位置をカードに伝える。これにより、カードは、ｅｘＦＡＴ（拡張ＦＡＴ）のビットマップ領域とＦＡＴ領域を特定することができる。
【０１１０】
ＳＤ規格ファイルシステムに準拠したｅｘＦＡＴの場合、ホストデバイス２０は、ＣＭＤ２０“Set Top of Data Area”に続くリードコマンドを利用してビットマップをＲＡＭ２４に読み出しキャシュを行なうことができる。
【０１１１】
従来、記録領域は、ライトコマンドで定義していたため、記録を開始しないと記録領域の事前準備ができなかった。
【０１１２】
そこで、本実施形態は、リードコマンドのアドレスで記録領域を指定することにより、事前準備を可能としている。
【０１１３】
前述したように、シーケンシャルライト領域は、１つの領域が登録可能であり、オーバーライト領域は、複数個の領域が登録可能である。
【０１１４】
ホストデバイス２０は、メモリデバイス１１に領域の準備を許可するコマンドを発行し、メモリカード１１は、コマンドに応じて準備している間ビジーを表示して、準備中であることをホストデバイス２０に知らせる。
【０１１５】
以下、図７を参照して、データ領域の先頭位置の指定方法について具体的に説明する。
【０１１６】
図７は、ＮＡＮＤフラッシュメモリ１８のメモリマップを示している。ＳＤ規格ファイルシステムに準拠したｅｘＦＡＴの場合、ＮＡＮＤフラッシュメモリ１８のユーザ領域１８ａは、データ領域の開始位置より前にＦＡＴを含むファイルシステム領域があり、データ領域の先頭４Ｍバイト内にビットマップ領域を含んでいる。
【０１１７】
ホストデバイス２０は、メモリデバイス１１のファイルシステムフォーマットからデータ領域の先頭アドレスを探し、ＣＭＤ２０“Set Top of Data Area”＋ＣＭＤ１８で、データ領域の先頭アドレスを指定する。
【０１１８】
メモリデバイス１１は、ＣＭＤ１８により指定されたアドレスから、ファイルシステム領域に記録されたディレクトリ情報の位置と、データ領域の最初の４Ｍバイト内にあるビットマップ情報の位置を予測することができる。
【０１１９】
尚、ホストデバイス２０は、ディレクトリ領域、及びビットマップ領域について、オーバーライト領域を直接指定することなく、より簡単な手順でこれらの領域をオーバーライト領域とすることができる。
【０１２０】
（Area Management：領域の管理方法）
データの種類とデータ長により、使用する領域が区別される。すなわち、ファイルシステムの拡張子により、ファイルのデータ長を予測できる。例えばビデオファイルは長いデータとして扱い、テキストファイルは、書き換えを想定する短いデータとして扱うことができる。ファイルシステムの拡張子は、データ長が不定な場合においても、データ長や上書きするかどうかを予測する手段として用いることができる。
【０１２１】
ファイルシステム関係のデータ、例えばＦＡＴ、ビットマップ、ディレクトリエントリは、短いデータ長として扱うことができ、オーバーライト領域に記録される。
【０１２２】
また、書き換えられる短いデータは、オーバーライト領域に記録され、書き換えられる長いデータは、シーケンシャルライト領域に記録される。
【０１２３】
一方、書き換えを想定しない長いデータ、又は、短いデータは、シーケンシャルライト領域に記録される。
【０１２４】
例えば、ＲＵ＝５１２Ｋバイト以上のデータは、長いデータとして扱われる。
【０１２５】
シーケンシャルライト領域の最小単位は、６４Ｋバイト(ページ・サイズにより決定されている)に設定され、６４Ｋバイト未満のデータは、短いデータとして扱われる。
【０１２６】
短いデータのシーケンシャルライト性能は、ＲＵ単位に限定されない。
【０１２７】
ＲＵ単位で書いた場合、Ｐｗ以上の性能を持つ。ＲＵより小さい単位で書くこともできるが、性能はＰｗより小さくなる。Ｐｗが小さくなるとは、メモリデバイスが表示するビジー時間がより大きくなることを意味する。シーケンシャルライト領域に対するライトに対して、メモリデバイスは、アドレスがシーケンシャルであるか、ライトデータがＲＵサイズ境界にあるかを確認し、Ｐｗの性能が出せる条件を満足しているかどうかによって、ビジー時間を制御する。シーケンシャルライト領域でない場合、性能Ｐｗの制約がないため、これとは別なビジー制御が行われる。すなわち、メモリデバイスは、ＡＵをアクセスするコマンドに対し、そのアドレスがシーケンシャルライト領域に対するアクセスであるかどうかを判定してメモリアクセス制御、例えばビジー時間を変更する。
【０１２８】
以下、図８を参照して、領域の管理方法について具体的に説明する。
【０１２９】
前述したように、ＣＭＤ２０“Arrange Area”は、他のＣＭＤ２０と異なり、単独で用いられる。このＣＭＤ２０“Arrange Area”は、特定の時間内でメモリデバイス１１が領域を準備することを許可するコマンドであり、ＣＭＤ２０のビジーを解除することにより、準備が完了したことを示す。
【０１３０】
ＣＭＤ２０“Arrange Area”は、例えばセットアップシーケンスの場合、領域指定の最後に発行される。
【０１３１】
すなわち、図８に示すように、セットアップが完了した後、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ２５、又はＣＭＤ１８を発行して、いつでもオーバーライト領域を指定することができる（Ｓ１１）。この後、ＣＭＤ２０“Arrange Area”が発行され、領域の準備が行なわれる（Ｓ１２）。ランダムライトでキャッシュしたデータを整理するためにカードは処理時間が必要となるが、ＣＭＤ２０“Arrange Area”によりこの処理時間を確保することができ、設計が容易になる利点がある。この場合、例えばデータの記録中である可能性があるため、ビジーの許容時間は２５０ｍｓに抑えられている。
【０１３２】
尚、前述したように、ＣＭＤ２０とライトコマンドを組み合わせた場合、書き込みデータを書き込むだけでなく、そのデータを含む領域がシーケンシャルライト領域、又は、オーバーライト領域として登録される。また、ＣＭＤ２０の機能の違いやコマンドが発行される状況毎にビジー時間の最大値が設定され、ホストデバイスがライト性能を見積もることができるようにしている。ＣＭＤ２０を用いてオーバーライト領域又はシーケンシャルライト領域を指定して複数回書き込みを行った場合、各ライトの平均ビジー時間は、指定された領域外に複数回書き込んだときの平均ビジー時間より短くなるようにカードは制御可能である。すなわち、ＣＭＤ２０を用いた書き込みの平均ビジー時間は、ＣＭＤ２０を用いない書き込みの平均ビジー時間より短く制御可能である。
【０１３３】
（セットアップシーケンス）
図９（ａ）（ｂ）は、上記ＣＭＤ２０を用いたセットアップシーケンスの一例を示し、図１０は、図９（ｂ）に示すセットアップシーケンスをコマンドシーケンスで表現した例を示している。この例は、１つのシーケンシャルライト領域と、３つのオーバーライト領域を指定する例である。
【０１３４】
すなわち、先ず、メモリデバイス（カード）が初期化される（Ｓ２１）。この後、ＣＭＤ２０“Set Top of Data Area”＋ＣＭＤ１８により、データ領域の先頭アドレスが指定され、カードはＤＩＲ領域とビットマップ領域をオーバーライト領域として登録する（Ｓ２２）。次に、ＣＭＤ２０“Set Sequential-Write Area”＋ＣＭＤ１７により、シーケンシャルライト領域が指定される（Ｓ２３）。次いで、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ１８、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ２５、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ１８により、オーバーライト領域が指定される（Ｓ２４、Ｓ２５、Ｓ２６）。最後に、ＣＭＤ２０“Arrange Area”が発行され、ＣＭＤ２０“Arrange Area”のビジーの間に、メモリデバイス１１内の領域が準備される（Ｓ２７）。
【０１３５】
上記動作により、１つのシーケンシャルライト領域と、３つのオーバーライト領域が登録される。
【０１３６】
尚、ＣＭＤ２０とライトコマンド又はリードコマンドの組み合わせは、図９（ｂ）、図１０に限定されるものではない。また、ＣＭＤ２０とライトコマンド又はリードコマンドの組み合わせにより、図９（ａ）に示すように、ＡＵの先頭又は途中から必要な領域を設定することが可能である。
【０１３７】
（ファイル作成の例）
図１１は、初期状態として、ルートディレクトリの下にサブディレクトリＤＩＲ１があり、サブディレクトリＤＩＲ１にファイルＸ１，Ｘ２，Ｘ３が既に作られている状態を想定する。この状態より、カードを初期化して、ルートディレクトリの下にサブディレクトリＤＩＲ２を新たに作成し、ＤＩＲ１にFile1, File2を作成し、ＤＩＲ２にFile 3を作成する場合を説明する。
【０１３８】
図１２は、図１１に示す本実施形態のファイル作成の例を具体的に示す図であり、図１３は、図１２に示すファイル作成をコマンドシーケンスで示している。図１２と図１３において、同一部分には、同一符号を付している。尚、図１２において、ＦＡＴ、ビットマップとルートディレクトリは省略されている。
【０１３９】
図１２、図１３は、２つのシーケンシャルライト領域SeqW-AU1、SeqW-AU2と、２つのオーバーライト領域としてのDIR Entry 1、DIR Entry 2を指定し、これらの領域にデータを書き込む例を示している。
【０１４０】
先ず、初期化シーケンスが実行され、メモリデバイス１１が初期化される（Ｓ４１）。
【０１４１】
次に、ホストデバイス２０は、ファイルシステムのフォーマットを解析し、ＣＭＤ２０“Set Top of Data Area”＋ＣＭＤ１８を発行し、フォーマットで指定されたデータ領域の先頭アドレスを指定する（Ｓ４２）。ＳＤ規格ファイルシステムに準拠したｅｘＦＡＴの場合、ＣＭＤ１８により読み出されるデータに、ビットマップ領域を含めることができる。ホストデバイス２０は、読み出されたビットマップをシステム・メモリ(ＲＡＭ２４)にキャッシュしておくことができる。
【０１４２】
次に、ホストデバイス２０は、ＣＭＤ２０“Set Sequential-Write AU”＋ＣＭＤ１８を発行し、メモリデバイス１１は、このコマンドに基づき、ＮＡＮＤフラッシュメモリ１８内にシーケンシャルライト領域SeqW-AU1を登録する（Ｓ４３）。ＣＭＤ１８で指定したアドレス位置からこのＡＵの最後までシーケンシャルにデータを書き込むことができる。
【０１４３】
この後、ホストデバイス２０は、ファイルシステムのフォーマットを解析し、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ２５を発行する（Ｓ４４）。これにより、既に作成済みのDIR Entry 1が、ＣＭＤ１８により、オーバーライト領域として登録される。
【０１４４】
次いで、ホストデバイス２０は、ＣＭＤ２０“Arrange Area”を発行し、メモリデバイス１１に領域準備を指示する（Ｓ４５）。メモリデバイス１１は、例えば１秒間、領域準備の時間として使うことを許可されている。
【０１４５】
この後、File 1のファイルエントリＦＥ１がDIR Entry 1内に作成され、File 1 の一部のデータFile 1aが、シーケンシャルライト領域SeqW-AU1に書き込まれる（Ｓ４６、Ｓ４７）。この例において、全てのファイルデータは、ＲＵ単位でＲＵバウンダリに一致されて書き込まれる。
【０１４６】
次に、File 2のファイルエントリＦＥ２がDIR Entry 1内に作成され、File 2 の一部のデータFile 2aが、シーケンシャルライト領域SeqW-AU1に書き込まれる（Ｓ４８、Ｓ４９）。
【０１４７】
次いで、ホストデバイス２０は、ファイルシステムのフォーマットを解析し、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ２５、及びＣＭＤ２０“Arrange Area”を順次発行する（Ｓ５０、Ｓ５１）。これにより、DIR Entry 2が、ＣＭＤ２５により、オーバーライト領域として新たに登録される。
【０１４８】
この後、File 3のファイルエントリＦＥ３が、DIR Entry 2内に作成され（Ｓ５２）、File 3 の一部のデータFile 3aが、シーケンシャルライト領域SeqW-AU1内に書き込まれる（Ｓ５３）。
【０１４９】
次いで、File 1の続くデータFile 1bがシーケンシャルライト領域SeqW-AU1内に書き込まれる（Ｓ５４）。
【０１５０】
File 3の続くデータFile 3bがシーケンシャルライト領域SeqW-AU1内に書き込まれる（Ｓ５５）。
【０１５１】
File 1の続くデータFile 1cがシーケンシャルライト領域SeqW-AU1内に書き込まれる（Ｓ５６）。
【０１５２】
File 2の続くデータFile 2bがシーケンシャルライト領域SeqW-AU1内に書き込まれる（Ｓ５７）。
【０１５３】
シーケンシャルライト領域SeqW-AU1が満杯となると、この領域SeqW-AU1はシーケンシャル領域から除外される。
【０１５４】
この後、ホストデバイス２０は、ＣＭＤ２０“Set Sequential-Write AU”＋ＣＭＤ１８を発行し、メモリデバイス１１は、このコマンドに基づき、ＮＡＮＤフラッシュメモリ１８内にシーケンシャルライト領域SeqW-AU2を新たに登録する（Ｓ５８）。
【０１５５】
次いで、このシーケンシャルライト領域SeqW-AU2内に、File 1の続くデータFile 1dが書き込まれる（Ｓ５９）。ステップＳ５９の最初のＣＭＤ２５は、領域SeqW-AU2の先頭アドレスを示し、そこからデータFile 1dが書き込まれる。
【０１５６】
上記実施形態によれば、ＣＭＤ２０の引数“Set Sequential-Write AU”“Set Over-Write Area”“Set Top of Data Area”及び“Arrange Area”を用いて、シーケンシャルライト領域、及びオーバーライト領域を指定することができ、これら領域にデータを書き込むことができる。
【０１５７】
しかも、途中まで書いたＡＵを、初期化時にシーケンシャルライト領域として再登録を可能としている。このため、ＡＵ内の空き領域を使用することができ、ＡＵの使用率を向上させることが可能である。
【０１５８】
（ファイル作成他の例）
図１４は、図３のファイル作成の例をコマンドシーケンスで示している。
【０１５９】
図１４において、ステップＳ６１、Ｓ６２、Ｓ６３は、図１３のステップＳ４１、Ｓ４２、Ｓ４３と同様であり、メモリデバイス１１が初期化され、フォーマットで指定されたデータ領域の先頭アドレスが指定され、シーケンシャルライト領域SeqW-AUが指定される。
【０１６０】
次いで、ホストデバイス２０からＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ２５、ＣＭＤ２０“Set Over-Write Area”＋ＣＭＤ１８、及びＣＭＤ２０“Arrange Area”が発行され、既に作成済みのDIR Entry 1と、DIR Entry 2のそれぞれがオーバーライト領域として指定される（Ｓ６４、Ｓ６５、Ｓ６６）。
【０１６１】
この後、DIR Entry 1に、ファイルエントリＦＥ１が書き込まれ（Ｓ６７）、シーケンシャルライト領域SeqW-AUに、File 1の一部のデータFile 1aが書き込まれる（Ｓ６８）。
【０１６２】
この後、DIR Entry 1に、ファイルエントリＦＥ２、ＦＥ３が書き込まれ（Ｓ６９、Ｓ７０）、シーケンシャルライト領域SeqW-AUに、File 2、File 3が書き込まれる（Ｓ７０）。File 2, File 3の書き込みに性能Ｐｗは不要であるため、ＲＵより小さな大きさでデータが書き込まれる。
【０１６３】
次いで、この後のデータを、少なくとも性能Ｐｗで書くため、File 3に続く領域にＲＵ境界までPaddingとしてのダミーデータが書き込まれる（Ｓ７３）。但し、Paddingは必ずしも必要な処理ではない。メモリデバイス１１は２つのメモリライトコマンドのアドレスとデータ長を解析することで、メモリデバイス１１が自動的にPaddingするように構成することもできる。メモリデバイス１１が、File 4の書き込みアドレスから自動的にシーケンシャルライト処理を開始することも可能である。
【０１６４】
この後、DIR Entry 2 にファイルエントリＦＥ４が書き込まれ（Ｓ７４）、File 4がシーケンシャルライト領域SeqW-AUに書き込まれる（Ｓ７５）。
【０１６５】
さらに、File 1の続くデータFile 1bが、シーケンシャルライト領域SeqW-AUに書き込まれ（Ｓ７６）、File 1のデータをファイルシステム上で確定させるため、FAT Updateが実行される（Ｓ７７）。FAT Updateにおいて、先頭のライトはＦＡＴを更新し、２番目のライトはビットマップを更新し、３番目のライトは、ファイルエントリＦＥ１の更新することを示している。図１４において、ファイルエントリＦＥ１を含む５１２バイトのデータを書き込むことにより、ファイルエントリＦＥ１が更新される。
【０１６６】
（Video Gradeの性能情報）
図１５は、新しく定義されるVideo Gradeの性能情報 (VG4, VG6, VG10, VG30)と、Video GradeのＡＵのサイズ情報を示している。
【０１６７】
Video GradeのＡＵサイズは、４ＭＢ×２ｎ×３ｍ（ｎ＝０、１、２．．．．５；ｍ＝０、１、２）で示す組合せにより表わされる。ホストデバイスが領域管理し易いように４ＭＢが基本ユニットとなり、倍数でＡＵサイズが指定される。ＮＡＮＤフラッシュメモリ１８は、１つのメモリセルに２ｂｉｔのデータを記憶する場合と、１つのメモリセルに３ｂｉｔのデータを記憶する場合がある。また、２次元構造だけでなく、３次元構造を持ったメモリセルもある(ベキ乗 ｎ，ｍ)。このため、上記数式により、必要なＡＵサイズをカバーすることができる。
【０１６８】
（電源保持の場合は、状態も保持）
本実施形態において、Power Down Mode, Hibernate Modeでは、設定したシーケンシャルライト領域や、オーバーライト領域の情報が保持される。
【０１６９】
このため、Power Down Mode, Hibernate Modeから復帰した場合、Power Down Mode, Hibernate Modeの直前で指定していた領域情報は保持されており、その領域を再び使うことが可能である。
【０１７０】
（既存のSpeed Classコマンドの変換）
本実施形態は、ＣＭＤ２０を拡張することにより、“Set Sequential-Write AU”“Set Over-Write Area”“Set Top of Data Area”及び“Arrange Area”の新しい機能を定義している。新しい機能は、従来の機能を包含するため、既存のSpeed Classコマンドを受信したメモリデバイスは、新しい機能に変換することができる。
【０１７１】
すなわち、新しいＣＭＤ２０の機能を実装するメモリデバイス１１は、既存のコマンド“Start Recording”“Update DIR”“Update CI”に対する変換プログラムを実装することで、既存のSpeed Classコマンドを受信した場合、互換性を維持した処理が可能となる。
【０１７２】
例えばＣＭＤ２０を用いずにシーケンシャルライト領域を登録する場合、メモリデバイス１１は、制御コマンド“Start Recording”を受け、ライトコマンドの書き込みが、ＲＵ単位で書き込み境界に一致しているデータ書き込みであり、その書き込み先が登録されているシーケンシャルライト領域の最後までをライトする。それに続く次のライトコマンドが別のＡＵの先頭からＲＵ単位で書き込み境界に一致した書き込みである場合、新らたに書き込んだ記憶領域をシーケンシャルライト領域として登録する。
【０１７３】
また、メモリデバイス１１は、ファイルシステムの位置を示す制御コマンド“Update DIR”を受けた場合、それに続くライトコマンドのアドレスにより、オーバーライト領域を登録し、ライトコマンドが書き込む領域を含む大きさの領域をオーバーライト領域の大きさとして登録し、その領域が既にオーバーライト領域として登録されている場合、その登録を維持する。
【０１７４】
さらに、メモリデバイス１１は、ストリームデータの記録中に、ストリームデータ以外の小データを書き込む位置を示す制御コマンド“Update CI”を受けた場合、ライトコマンドが書き込む領域の大きさ(512Byte)を含む、CIデータが書き込まれると予測されるある程度の大きさの領域をオーバーライト領域として登録し、その領域が既にオーバーライト領域として登録されている場合、その登録を維持する。
【０１７５】
上記のような変換プログラムを実装することにより、既存のSpeed Classコマンドを受信した場合においても、新しい機能に変換することができる。
【０１７６】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１７７】
１１…メモリデバイス、１１ａ…コントローラ、１８…ＮＡＮＤフラッシュメモリ、２０…ホストデバイス、ＡＵ…アロケーション・ユニット、ＲＵ…記録ユニット、SeqW-AU…シーケンシャルライト領域。
【図１】
2014112351.tif 000003
【図２】
2014112351.tif 000004
【図３】
2014112351.tif 000005
【図４】
2014112351.tif 000006
【図５】
2014112351.tif 000007
【図６】
2014112351.tif 000008
【図７】
2014112351.tif 000009
【図８】
2014112351.tif 000010
【図９】
2014112351.tif 000011
【図１０】
2014112351.tif 000012
【図１１】
2014112351.tif 000013
【図１２】
2014112351.tif 000014
【図１３】
2014112351.tif 000015
【図１４】
2014112351.tif 000016
【図１５】
2014112351.tif 000017