ホスト機器
【課題】 高い書き込み速度を実現可能なホスト機器を提供する。
【解決手段】 ホスト機器1は、プログラムに従って所定の動作を行い、書き込み関数呼び出しを発行するアプリケーション2を含む。管理システム3は、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、単位領域の自然数倍の大きさからなる管理単位を割り当て位置の決定単位として用い、書き込み関数呼び出しを受けて管理単位ごとの実現可能な書き込み速度順に従って管理単位を前記書き込み領域として割り当てる。コントローラ4は、管理システムが割り当てた単位領域に書き込みデータを書き込む旨の指示をメモリカードに出す。
【解決手段】 ホスト機器1は、プログラムに従って所定の動作を行い、書き込み関数呼び出しを発行するアプリケーション2を含む。管理システム3は、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、単位領域の自然数倍の大きさからなる管理単位を割り当て位置の決定単位として用い、書き込み関数呼び出しを受けて管理単位ごとの実現可能な書き込み速度順に従って管理単位を前記書き込み領域として割り当てる。コントローラ4は、管理システムが割り当てた単位領域に書き込みデータを書き込む旨の指示をメモリカードに出す。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホスト機器に関し、例えば、メモリカードを挿入されるホスト機器に関する。
【背景技術】
【0002】
現在、音楽データや映像データの記録メディアとしてフラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。
【0003】
NAND型フラッシュメモリは、以下の特徴を有する。1)データの書き込みはページ単位で行われる。2)データの消去はブロックと呼ばれる複数のページをまとめた単位で行われる。このため、書き込み済みのページを有するブロック内に含まれるページ内のデータがランダムに更新される場合、「引越し書き込み」と呼ばれる以下の処理が行われる。引越し書き込みでは、書き込まれるデータ(新データ)がデータの書き込まれていない新ブロックに書き込まれ、旧データ(新データに書き換えられるデータ)を含む旧ブロックから、書き換えられない残りのデータが新ブロックにコピーされる。このため、ひとつのページの書き込みにかなりの時間がかかる場合がある。なお、同じブロック内で先頭ページから連続したページに順次シーケンシャルにデータが書き込まれる場合は引越し書き込みは発生せず、効率的なデータ書き込みが可能である。
【0004】
現在、メモリカードのファイルシステムとしてはFAT(file allocation table)ファイルシステムが用いられている。FATファイルシステムは、クラスタと呼ばれるデータ単位でデータの読み書きが行われ、各データがどのクラスタに割り当てられているかがFATと呼ばれるテーブルで管理される。FATファイルシステムでは、FATやクラスタデータの書き込み、更新がランダムに発生する。
【0005】
このため、NAND型フラッシュメモリとFATファイルシステムが併用されたメモリカードでは、通常、引越し書き込みが発生する頻度が高い。この結果、ファイルの書き込み、書換え速度が低下する場合がある。
【0006】
現在、このようなメモリカードを利用するホスト機器のファイルシステムにおいて、上記のような特性を考慮したAPI(application program interface)が用意されていない。このため、アプリケーションがこのようなメモリカードの特性を考慮したデータ書き込み制御を行うことが困難であった。このことは、特に一定以上のデータ書き込み速度が要求されるAVデータを扱うアプリケーションにとって問題となっていた。
【0007】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【特許文献1】特開2003-296177号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明は、高い書き込み速度を実現可能なホスト機器を提供しようとするものである。
【課題を解決するための手段】
【0009】
本発明の第1の視点によるホスト機器は、プログラムに従って所定の動作を行い、書き込み関数呼び出しを発行するアプリケーションと、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記単位領域の自然数倍の大きさからなる管理単位を割り当て位置の決定単位として用い、且つ前記書き込み関数呼び出しを受けて前記管理単位ごとの実現可能な書き込み速度順に従って前記管理単位を前記書き込み領域として割り当てる管理システムと、前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、を具備することを特徴とする。
【0010】
本発明の第2の視点によるホスト機器は、プログラムに従って所定の動作を行い、領域確保関数を発行するアプリケーションと、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有する管理システムと、前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、を具備し、前記管理システムは、領域確保関数を受けると、前記書き込みデータの大きさに応じた大きさ分の前記単位領域からなる予約領域を予約し、前記予約領域に対する暫定的な管理用データを書き込む指示を出し、前記予約領域を前記書き込み領域として割り当てた後に、管理用データを書き込むこと無く前記書き込みデータを書き込む指示を出し、前記書き込みデータの書き込み終了後に最終的な管理用データを書き込む指示を出す、ことを特徴とする。
【0011】
本発明の第3の視点によるホスト機器は、プログラムに従って所定の動作を行い、要求書き込み速度の情報を含んだ領域問い合わせ関数を発行するアプリケーションと、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記領域問い合わせ関数を受けると、前記要求書き込み速度以上の速度での書き込みが可能な前記単位領域の数を前記アプリケーションに通知する管理システムと、前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、を具備することを特徴とする。
【発明の効果】
【0012】
本発明によれば、高い書き込み速度を実現可能なホスト機器を提供できる。
【発明を実施するための最良の形態】
【0013】
以下に本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0014】
(1)(第1実施形態)
[1−1]構成
図1は、本発明の第1実施形態に係るホスト機器の主要部の構成を示す図である。ホスト機器(以下、ホストと称する)1は、接続されるメモリカード11に対してアクセスを行うためのハードウエアおよびソフトウエア(システム)を備えている。より具体的には、ホストは、少なくとも、図1に示すように、アプリケーション2、ファイルシステム(管理システム)3、ホストコントローラ4を有する。メモリカード11は、カードコントローラ12、NAND型フラッシュメモリ(以下、フラッシュメモリ)13を有する。メモリカード11の構成については、後に詳述する。
【0015】
アプリケーション2は、ROM(read-only memory)および(または)RAM(random access memory)上のプログラムにより実現される。CPU(central processing unit)は、RAM上に読み出されたプログラムに応じて所定の処理を実行する。アプリケーション2は、メモリカード11にデータを書き込む際、その旨の信号をファイルシステム3に供給する。
【0016】
ファイルシステム3は、アプリケーション2が書き込みを要求したデータをファイルシステムに従って管理するための動作を行う。すなわち、ファイルシステム3は、クラスタと呼ばれるデータ単位でファイルデータの読み書きを行い、各ファイルデータがどのクラスタに割り当てられているかをファイルシステム3内のメモリに記憶されるテーブルで管理する。アプリケーション2とファイルシステム3との間の命令および応答の授受は、APIにより行われる。ファイルシステム3として、典型的には、FATファイルシステムが用いられる。
【0017】
ホストコントローラ4は、ファイルシステム3からの要求に従って、メモリカード11からデータを読み出したり、メモリカード11にデータを書き込んだりするための動作を司る機能を有する。すなわち、ホストコントローラ4は、データの書き込み、読み出し、消去をメモリカード11に行わせるためのコマンドをメモリカード11に供給する。ホストコントローラ4は、メモリカード11とのインタフェースを有し、このインタフェースを介して、メモリカード11と通信を行う。
【0018】
次に、図1のホストに用いられるメモリカードについて、図2を参照して説明する。図2は、本発明の第1実施形態に係るホストに用いられるメモリカード11の構成を示すブロック図である。メモリカード11は、ホスト1に接続された時に電源供給を受けて動作し、ホスト1からのアクセスに応じた処理を行う。
【0019】
カードコントローラ12は、フラッシュメモリ13内部の物理状態(どこの物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、どこのブロックが消去状態であるか)を管理するものとして構築されている。図2に示すように、カードコントローラ12は、CPU21、ROM22、メモリインタフェース部23、ホストインタフェース部24、バッファ25、RAM26を有する。
【0020】
メモリインタフェース部23は、カードコントローラ12とフラッシュメモリ13との間のインタフェース処理を行う。ホストインタフェース部24は、カードコントローラ12とホスト1との間のインタフェース処理を行う。
【0021】
バッファ25は、ホスト1から送られてくるデータがフラッシュメモリ13へ書き込まれる際に、一定量のデータ(例えば1ページ分)を一時的に記憶する。また、バッファ25は、フラッシュメモリ13から読み出されるデータがホスト1へ送り出される際に、一定量のデータを一時的に記憶する。
【0022】
CPU21は、メモリカード11全体の動作を司る。CPU21は、例えば、メモリカード11が電源供給を受けた際に、ROM22の中に格納されているファームウェア(後述する制御プログラム)をRAM26上にロードして所定の処理を実行する。この処理により、各種のテーブル(後述)がRAM26上で作成される。CPU21は、また、ホスト1から書き込コマンド、読出コマンド、消去コマンドを受けてフラッシュメモリ13上の所定の処理を実行したり、バッファ25を通じたデータ転送処理を制御したりする。
【0023】
ROM22は、CPU21により制御される制御プログラムなどを格納する。RAM26は、CPU21の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【0024】
フラッシュメモリ13は、消去時の消去ブロックサイズ(消去単位のブロックサイズ)が、例えば256kバイト(256kB)に定められている不揮発性半導体メモリであり、例えば16kB単位でデータの書き込み・読み出しを行う。なお、フラッシュメモリ3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、1つのメモリセルに2ビット以上の情報を記憶する多値メモリであっても良い。また、フラッシュメモリ3およびコントローラ4は、基板上に個別に設けられていても良いし、同一のLSI(large-scale integrated circuit)基板上に配置されていても良い。
【0025】
フラッシュメモリ13のデータが書き込まれる領域(データ記憶領域)は、保存されるデータに応じて複数の領域に区分けされている。フラッシュメモリ13は、データ記憶領域として、ユーザデータ領域34と、管理データ領域31と、機密データ領域32と、保護データ領域33とを備えている。
【0026】
ユーザデータ領域34は、ユーザデータを格納し、メモリカードを使用するユーザが自由にアクセスおよび使用することが可能な領域である。
【0027】
管理データ領域31は、主にメモリカードに関する管理情報を格納し、メモリカード11のセキュリティ情報やメディアIDなどのカード情報を格納する。
【0028】
機密データ領域32は、機密データを格納し、暗号化に用いられる鍵情報や認証時に使用される機密データを保存し、ホスト1からはアクセス不可能な領域である。
【0029】
保護データ領域33は、重要なデータを格納し、メモリカード11に接続されたホスト1との相互認証によりホスト1の正当性が証明された場合にのみアクセスが可能となる領域である。
【0030】
図3は、フラッシュメモリ13のデータ配置を示している。フラッシュメモリ13の各ページは、例えば2112B(512B分のデータ記憶部×4+10B分の冗長部×4+24B分の管理データ記憶部)を有している。また、例えば128ページ分が一つの消去単位(すなわち、256kB+8kB)である。なお、以下の説明においては、便宜上、このフラッシュメモリの消去単位を256kBと呼ぶ。
【0031】
また、フラッシュメモリ13は、フラッシュメモリ13へのデータ入出力を行うためのページバッファ13Aを備えている。ページバッファ13Aの記憶容量は、例えば2112B(2048B+64B)である。データ書き込みなどの際には、ページバッファは13A、フラッシュメモリ13に対するデータ入出力処理を自身の記憶容量に相当する1ページ分の単位で実行する。
【0032】
また、図3においては消去単位が256kBブロックである場合を例示しているが、消去単位が例えば16kBブロックとなるように構築することもできる。この場合、各ページは528B(512B分のデータ記憶部+16B分の冗長部)を有しており、32ページ分が1つの消去単位(すなわち、16kB+0.5kB(kは1024))である。
【0033】
上記のように、ファイルシステム3は、クラスタ単位で書き込み・読み出しを管理している。一方、フラッシュメモリ13では、ページ(例えば16kB)単位で書き込み・読み出しが行われ、ブロック(例えば256kB)単位で消去が行われる。この比較を図4、図5に示す。図4は、ホスト1から見たときのフラッシュメモリ13の領域分割を示し、図5は、フラッシュメモリ13内部での実際の記憶領域分割の概要を示す。図4に示すように、ホスト1から見た場合はクラスタ41が記憶単位(単位領域)であり、複数のクラスタの集合として1つのAU(管理領域)42が定義される。なお、AUについては後述する。
【0034】
一方、フラッシュメモリ13においては、図5に示すように、複数のページ43からブロック44が構成される。この関係は、図5のホスト機器側から見た場合のクラスタ41とAU42とのの関係に類似している。しかしながらページ43とクラスタ41は同一である必要はなく、クラスタ41はページ43の自然数倍にすることができる。同様にAU42はブロック44の自然数倍にすることができる。
【0035】
[1−2]パラメータ
フラッシュメモリ13のユーザデータ領域34のBPB(BIOS parameter block)に記憶媒体の物理的なパラメータ(属性)が書き込まれている。このパラメータは、ファイルシステムで使用される。ホスト1は、フラッシュメモリ13をフォーマットする時、後述のように、このパラメータ(属性)を書き込む。ファイルシステムは、起動時にBPBを読み込むことにより、フラッシュメモリ13のパラメータを認識する。
【0036】
図6は、本発明の第1実施形態に係るBPBに書き込まれているパラメータを示している。図6に示すBPBは、ファイルシステムがFAT32の場合である。図6に示すように、BPBには、OEM名、セクタサイズ、セクタ数/クラスタ、予約セクタ数、FATの数、メディアディスクリプタ−(Descriptor)、セクタ数/FAT、セクタ数/トラック、ヘッド数、隠しセクタ数、全Bigセクタ数、Bigセクタ数/FAT、拡張フラグ、ファイルシステムバージョン、ルートの最初のクラスタ、ファイルシステム情報セクタ位置、バックアップブートセクタ位置、ドライブID、拡張ブートサイン、シリアル番号、ボリューム名、ファイルシステムタイプ、フラッシュデバイスフラグ(FDF)、のパラメータが書き込まれている。
【0037】
フラッシュデバイスフラグは、対象とするメディアがフラッシュメモリデバイスであることを示す。例えば、フラッシュデバイスフラグが“0”の場合、フラッシュメモリデバイスではない(フロッピー(登録商標)ディスク、ハードディスクなど)ことを示す。フラッシュデバイスフラグが、“1”の場合、メディアがフラッシュメモリデバイスであることを示す。
【0038】
消去ブロックサイズには、消去ブロックの自然数倍の大きさ、すなわち、AUサイズが格納される。ファイルシステムは、BPBのAUサイズ(消去ブロックサイズ)を参照して、AU境界位置を識別する。
【0039】
BPBに、フラッシュデバイスフラグが書き込まれることにより、ファイルシステム3は、この情報を直接読み取ることができる。そして、ファイルシステム3およびアプリケーション2が、この情報を使用して書き込み方法を制御することにより、書き込み速度を向上させることができる。
【0040】
次に、ホスト1がメモリカード11をフォーマットする時の動作を説明する。メモリカードリーダーのスロットにメモリカード11が挿入されると、ホスト1はFATを読み込む。もし、FATが読み込めない、つまりフラッシュメモリ13がフォーマットされておらず、さらにユーザがフラッシュメモリをフォーマットすることを希望する場合、ホストはフラッシュメモリ13のフォーマットを開始する。
【0041】
次に、ブートセクタ、ディレクトリ領域、FAT領域、データ領域が確保される。次に、ブートセクタにBPBが書き込まれる。図6の、上から順にOEM名乃至ファイルシステムタイプのパラメータの取得は、従来と同様である。
【0042】
フラッシュデバイスフラグのパラメータは、ホスト1がメモリカード11に対してフラッシュメモリ13の情報を得るためのコマンドを送り、このコマンドに対する応答から取り出された情報に従って書き込まれる。ホスト1がフラッシュメモリ13の情報を得るためのコマンドは、メモリカード11の規格で用意されている。しかし、このようなコマンドが用意されていないホストの場合、必要に応じてフォーマットソフトウェアの使用者が、手動で上記のパラメータの値を設定し、フォーマットソフトウェアはその値をBPBに書き込む。
【0043】
[1−3]書き込み動作
データの書き込み動作について、図7、図8を参照して説明する。図7は、本発明の第1実施形態に係るホスト機器の書き込み動作を示すフローチャートである。図8は、第1実施形態に係るホスト機器によって書き込まれるクラスタの順序を示す図である。
【0044】
アプリケーション2とファイルシステム3との間のAPIは、以下に示される書き込み動作を実現可能な書き込み関数呼び出しを含んでいる。アプリケーション2は、この書き込み関数呼び出しを介してファイルシステム3に書き込みを指示する。ファイルシステム3は、図7、図8に示される動作が行われるように、データを適当なクラスタ41に割り当て、且つデータが、割り当てられたクラスタ41に実際に書き込まれるようにカードコントローラ12に指示を行う。以下、ファイルシステム3がデータを“書き込む”と記載した場合、ファイルシステム3が、使用されていないクラスタ41をデータの書き込み領域として割り当て、割り当てられた書き込み領域にデータが実際に書き込まれるようにメモリカードに指示を出すことを意味するものとする。クラスタ41にデータが“書き込まれた”場合も、同様である。
【0045】
図7に示すように、まず、ファイルシステム3は、BPB内のFDFを参照し、書き込み対象のメディアがフラッシュメモリを用いたデバイスであるかどうかをチェックする(ステップS1)。メディアがフラッシュデバイスでなければ、消去ブロックサイズなどを意識せず、通常のフロッピー(登録商標)ディスクやハードディスクと同様のランダム書込み処理が行われる(ステップS2)。
【0046】
メディアがフラッシュメモリデバイスである場合、ファイルシステム3は、FATをチェックする。そして、ファイルシステム3は、直前の書き込みデータが、AU42の途中のクラスタ41に割り当てられており、且つ、そのAU42のそれ以降のクラスタ41が使用されていないクラスタ(非使用)であるか否かを判断する(ステップS3)。この判定が真であった場合、図8に示すように、AU42a中の最後に書き込まれたクラスタ41aの次のクラスタ41bから順に書き込まれる(ステップS4)。連続する非使用クラスタに、順次書き込みが行われるので、フラッシュメモリ13の書き込み能力範囲内で最大のスピードで書き込まれる。なお、図8中の参照符号41cは、書き込み済みのクラスタである。
【0047】
次に、直前の書き込みの際に途中で終了したAU42aに対する書き込みが終了すると、ファイルシステム3は、FATをチェックし、使用済みのクラスタを有さないAU42(クリーンなAU42)を検索する。そして、クリーンなAU42b、42d、42eに書き込みが行われる(ステップS5)。なお、クリーンなAU42b、42d、42eの書き込みの順番は、これに限られない。
【0048】
一方、ステップS3の判定が、偽であった場合、ファイルシステム3は、ステップS5に移行する。
【0049】
全てのクリーンなAU42に対する書き込みが終了した後にも書き込み要求が続いている場合、書き込み済みのクラスタ41cを有するAU42c内のクラスタ41にデータが書き込まれる。
【0050】
データの削除が適宜行われることにより、あるAU42内の全てのクラスタ41が不使用状態(有効なデータが書き込まれていない状態)になった際に、そのAU42を消去する。そして、このAU42が、以降、クリーンなAU42として扱われる。
【0051】
本発明の第1実施形態に係るホストは、アプリケーション2とファイルシステム3との間で授受される、所定の書き込み動作を実現するための書き込み関数呼び出しを有する。ファイルシステム3は、この書き込み関数呼び出しを受けると、AU42内の書き込み済み(割り当て済み)のクラスタの配置(フラグメンテーション)に応じた書き込み速度の低下の少ないAU42内のクラスタ41から順にデータを書き込む。このため、フラッシュデバイスにおけるデータ書込み速度の低下を抑えることができる。
【0052】
(2)(第2実施形態)
第2実施形態では、アプリケーションとファイルシステムとの間のAPIが、ファイルシステムの更新を効率的に行うことを目的とした関数を含んでいる。構成は、APIが異なることを除いて、第1実施形態と同じである。
【0053】
ファイルシステムでは、通常、データの書き込み(更新)中に一定時間(1秒〜数秒)ごとにFATとディレクトリエントリ(directory entry)のファイルサイズ(以下、FATと記載して、FATとディレクトリエントリを意味することがある)などの更新が行われる。これによって、データの書き込み中にシステムハングアップなどのアクシデントによってデータの書き込みが完了しなかった場合でも、その書き込みがすべて無効になることを防ぎ、最後のFATの更新までのデータを復活させることができる。
【0054】
しかし、上記のように、フラッシュデバイスの場合、データの更新する動作に時間がかかる。このため、FATの更新にかなり時間がかかる場合があり、一定時間ごとのFATの更新はデータ書き込み速度の低下に繋がる。
【0055】
[2−1]書き込み動作
本発明の第2実施形態に係るホストによるデータの書き込み動作について、図9を参照して説明する。図9は、第2実施形態に係るホストの書き込み動作を示すフローチャートである。アプリケーション2とファイルシステム3との間のAPIは、以下に示される書き込み動作を実現可能な関数を含んでいる。
【0056】
図9に示すように、ユーザがデータの書き込みを要求した場合等、データの書き込みが必要となると、アプリケーション2は、ファイルシステム3に対して、書き込みを行うためのファイルを開く旨のファイルオープン関数を発行する(ステップS11)。アプリケーション2は、図9に示す一連の書き込み動作の実行に先立ち、アプリケーション2上での動作に基づいて、書き込むデータ項目のサイズ(バイト数)、書き込むデータ項目の数を予測する。
【0057】
ファイルシステム3は、ファイルオープン関数を受けると、書き込みファイルを開く(ステップS12)。次に、アプリケーション2は、ファイルシステム3に対して領域確保関数を発行する。領域確保関数の入力パラメータとして、アプリケーション2が要求する、書き込むデータ項目のサイズ(バイト数)、書き込むデータ項目の数、データを書き込むためのファイルストリームが含まれる。
【0058】
ファイルシステム3は、領域確保関数を受け取ると、メモリ領域内に、書き込むデータ項目のサイズおよび数に応じた大きさの書き込み可能領域を確保する(S14)。なお、この確保される領域(予約領域)は、書き込み速度を上げる観点から、第1実施形態に記載の方法に従った優先順位で選択されるようにすることが好ましい。ファイルシステム3は、領域の確保後、実際に確保できた領域をアプリケーション2に通知する。
【0059】
次に、ファイルシステム3は、予約領域に、データ書き込み終了時点での予測される、暫定的なFATを書き込む(ステップS15)。
【0060】
アプリケーション2は、書き込み関数呼び出しをファイルシステム3に発行する(ステップS16)。ファイルシステム3は、書き込み関数呼び出しを受けると、予約領域に、FATの更新を行わずに、データを書き込む(ステップS17)。ここで、確保された領域が、データを書き込むのに不十分であった場合、ステップS13乃至ステップS17が繰り返される。
【0061】
データの書き込みが終了すると、ファイルシステム3は、実際に書き込まれたデータに基づいて、本来の領域のFATを更新する(ステップS18)。
【0062】
書き込みが終了すると、アプリケーション2は、ファイルシステム3に対して、書き込みファイルを閉じる旨のファイルクローズ関数を発行する(ステップS19)。ファイルシステム3は、この関数を受けて、書き込みファイルを閉じる(ステップS20)。
【0063】
本発明の第2実施形態に係るホストは、アプリケーション2とファイルシステム3との間で授受される領域確保関数を有する。ファイルシステム3は、領域確保関数を受けると、アプリケーション2が指定するサイズの書き込み領域を予約し、その予約領域に暫定的なFATを事前に書き込む。そして、データ書き込み中にはFATの更新は行われない。データ書き込み中のFATの更新を行わないことによって、書き込み速度の低下を防止できる。
【0064】
また、FATの事前書き込みによって、システムハングアップなどによってデータ書き込みの途中で処理が中断した場合でも、管理データとしてのFATは確保されるため、書き込みデータが失われることが回避される。
【0065】
(3)(第3実施形態)
第3実施形態では、アプリケーションとファイルシステムとの間のAPIが、メモリカードに対するデータの書き込み速度を管理するための関数を含んでいる。
【0066】
[3−1]構成
構成は、以下に述べる点を除いて、第1実施形態と同じである。まず、第3実施形態に係るホストに用いられるメモリカード11のBPBには、図6に示すように、消去ブロックサイズ(EBS)、書き込みページサイズのパラメータ、書き込みパフォーマンス(図示せぬ)、移動パフォーマンス(図示せぬ)が書き込まれている。
【0067】
消去ブロックサイズは、対象とするメディアがフラッシュメモリデバイスであるときに消去ブロックのサイズを、例えば512B単位で示す。消去ブロックサイズが512KBのNANDフラッシュメモリを使用するメモリカードの場合、このフィールドの値は1024である。
【0068】
書き込みページサイズは、対象とするメディアがフラッシュメモリデバイスであるときにページサイズを、例えば512B単位で示す。ページサイズが2kBのフラッシュメモリを使用するメモリカードの場合、このフィールドの値は4である。
【0069】
書き込みパフォーマンスおよび移動パフォーマンスに関しては、後に詳述する。
【0070】
BPBに、消去ブロックサイズ、書き込みページサイズ、書き込みパフォーマンス、移動パフォーマンスが書き込まれることにより、ファイルシステム3は、これらの情報を直接読み取ることができる。そして、ファイルシステム3およびアプリケーション2は、これらの情報を参照することにより、メモリカード11の書き込み速度を知得し、且つ書き込みの制御を容易に行うことができる。
【0071】
ホスト1は、BPBに消去ブロックサイズ、書き込みページサイズのパラメータを書き込む機能を有する。ホスト1は、メモリカード11をフォーマットする際、第1実施形態に示した各パラメータ取得に加えて、消去ブロックサイズ、書き込みページサイズ、書き込みパフォーマンス、移動パフォーマンスのパラメータを取得する。これらのパラメータは、フラッシュデバイスフラグのパラメータを取得する手順と同じである(第1実施形態を参照)。
【0072】
[3−2]書き込み動作
第3実施形態に係るホストによるデータの書き込み動作について、図10を参照して説明する。図10は、第3実施形態に係るホストの書き込み動作を示すフローチャートである。アプリケーション2とファイルシステム3との間のAPIは、以下に示される書き込み動作を実現可能な書き込み関数呼び出しを含んでいる。
【0073】
図10に示すように、アプリケーション2は、自らのアプリケーションの特性に応じて、(AVデータストリーム用などに)必要なデータ書き込み速度と必要なメモリ領域のサイズを算出する(ステップS21)。なお、ホスト1によっては、アプリケーション2の種類に応じて数種類の異なったビットレートのモードに対応していることがある。この場合、ホスト1は、ユーザが選んだモードに応じて選ばれたアプリケーションが必要とするデータ書き込み速度と必要なメモリ領域のサイズを決める必要がある。
【0074】
アプリケーション2は、領域問い合わせ関数をファイルシステム3に発行することにより、ファイルシステム3に対して必要書き込み速度以上の速度が得られるメモリ領域のサイズを問い合わせる(ステップS22)。領域問い合わせ関数の入力パラメータとしては、必要な書き込み速度、ある所定期間内でのFATの更新の頻度等がある。
【0075】
ファイルシステム3は、領域問い合わせ関数を受けると、必要速度を実現可能なメモリの空き領域のサイズを以下の工程により算出する。まず、ファイルシステム3は、FATを検索し、各AU42におけるデータの書き込み速度を予測する(ステップS23)。書き込み速度の予測の詳しい方法は後述する。なお、ここでの書き込み速度の予測には、領域問い合わせ関数内のFAT更新頻度も加味される。FAT更新頻度が高ければ、その分、書き込み速度は低下する。
【0076】
ファイルシステム3は、求めた各AUの書き込み速度のうち、領域問い合わせ関数に既述されている、必要書き込み速度以上の速度を実現できるAU42を検索し、その数を計数する(ステップS24)。
【0077】
ファイルシステム3は、必要書き込み速度以上の速度を実現できるAU42の数にAU42のサイズを掛け合わせることにより、必要書き込み速度以上の速度を実現できるメモリ領域のサイズを算出する。次いで、ファイルシステム3は、この算出されたメモリ領域サイズを、領域問い合わせ関数の戻り値として、アプリケーション2に返信する(ステップS25)。アプリケーション2は、少なくとも、ステップS25で受信したサイズのメモリ領域には、必要速度以上で書き込みを行えることを知得する。
【0078】
アプリケーション2は、ステップS21で算出された必要メモリ領域サイズと、ステップS25で得られた必要速度を実現可能なメモリ領域サイズとを、比較する(ステップS26)。アプリケーション2は、必要速度を実現可能なメモリ領域サイズが必要メモリ領域サイズより大きい場合、後述の工程によりデータの書き込みを行う。
【0079】
一方、必要速度を実現可能なメモリ領域サイズが必要メモリ領域サイズに満たない場合、アプリケーション2は、ディスプレイに表示する等することにより、ユーザにその旨を通知する。そして、例えば、書き込みの中止、書き込める量のみ書き込む、等の選択ダイアログを、ディスプレイに表示する。ユーザが書き込みの中止を選択した場合、書き込み処理は、ここで停止する。
【0080】
アプリケーション2は、書き込みファイルを開く旨のファイルオープン関数を発行する(ステップS27)。このステップでのファイルオープン関数の入力パラメータとしては、必要な書き込み速度やFATの更新の頻度が含まれる。アプリケーション2は、先に知得した必要速度を実現可能なメモリ領域サイズを考慮する等して、ファイルオープン関数に含める必要速度(指定速度)を設定する。必要速度を実現可能なメモリ領域サイズが十分な場合、典型的には、ファイルオープン関数で指定される入力パラメータ(書き込み速度、FAT更新頻度)は、領域問い合わせ関数で指定されたものと同じである。
【0081】
ファイルシステム3は、ファイルオープン関数を受けて、書き込みファイルを開く(ステップS28)。ファイルシステム3は、ファイルオープン関数によって指定された書き込み速度を実現可能なAU42を、ステップS23と同様の方法により検索する(ステップS29)。
【0082】
次に、ファイルシステム3は、条件を満たすAU42に対してのみ、指定速度によってデータを書き込む(ステップS30)。ここで、データが書き込む際、第2実施形態の方法を用いて、暫定的なFATをデータ書き込みの前に書き込み、データ書き込み後に最終的なFATを更新するようにすることもできる。こうすることにより、書き込み速度を向上できる。この場合、ファイルオープン関数によって指定されるFAT更新頻度は、0である。
【0083】
なお、ファイルオープン関数で指定される入力パラメータが領域問い合わせ関数で指定されたものと同じである場合、ステップS24において検索されたAU42に書き込むことができる。この場合、ステップS29は不要である。
【0084】
書き込みが終了すると、アプリケーション2は、ファイルシステム3に対して、書き込みファイルを閉じる旨のファイルクローズ関数を発行する(ステップS31)。ファイルシステム3は、この関数を受けて、書き込みファイルを閉じる(ステップS32)。
【0085】
[3−3]書き込み速度の算出
次に、図11(a)および図11(b)乃至図14を参照して、データ書き込み速度を算出する方法について説明する。ファイルシステム3は、以下の、書き込み速度(パフォーマンス)と、ファイルシステムの書き込み(典型的にはFATの書き込み)時間、領域問い合わせ関数内の入力パラメータであるファイルシステムの更新頻度を用いて、AU42での書き込み速度を算出する。
【0086】
[3−3−1]パフォーマンスカーブの定義
ホスト1によりクラスタ単位のデータがメモリ領域内のAの場所からBの場所まで順次記入される場合を例にとって、図11(a)および図11(b)を用いて説明する。
【0087】
図11(a)および図11(b)に示すように、複数のクラスタ41の集合体であるAU42に新規にデータを記入する場合について検討する。このAU42の論理アドレスをAとする。このAU42中のクラスタ41に新規にデータを書き込む場合、いわゆる引越し書き込みが行われる。より具体的には、実際には当初論理アドレスAのデータが書き込まれていた物理ブロックAAから別の物理ブロックABに、既に書かれていたクラスタ41(図中、Used)のデータを書き写し、同時に新規に書き込むデータを書き込む作業が必要になる。この作業の終了後以降、物理ブロックABが論理アドレスAとして認識される。
【0088】
この作業の実施に際して、当初記入されていないクラスタ41(図中、free)に新規にデータを書き込む時間は単純に書き込み時間である。これをPw(書き込みパフォーマンス)とする。
【0089】
一方、すでにクラスタ41に書き込みされている(図中、Usedのクラスタ41)データを別のブロックに書き写す場合には、新規のクラスタ41に書き込む時間に加え、元のクラスタから読み出す時間がかかる。さらに、予定された順序からすれば、新規に書き込まれるクラスタ41が空であれば、そこに書き込まれる予定の新規のデータ(例えば、図中、Data3)の書き込み動作は、書き込み済みデータが新しい物理ブロックへ書き写される間、停止する。これらに要する時間をデータの移動パフォーマンス(Pm)とする。
【0090】
新規データ記入の合計の所要時間は、書き込み時間の総計と、移動時間の総計との合計時間である。
【0091】
以上の説明から平均パフォーマンスP(Nu)は、[数式1]のようになる。
【0092】
[数式1]
平均パフォーマンス:P(Nu)
=[Sc×(Nt−Nu)]/[Sc×(Nt−Nu)/Pw+Sc×Nu/Pm]
=[(Nt−Nu)×Pm×Pw]/[(Nt−Nu)×Pm+Nu×Pw]
ここで、
Sc:クラスタの寸法(通常ファイルシステムの書き込み単位として用いるクラスタの寸法とは異なる)
Nt:AとBとの間に順次書き込むクラスタ数の合計
Nu:AとBとの間の使用済みクラスタ数
Pw:書き込みパフォーマンス(全て未記入クラスタの場合のパフォーマンス)
Pm:移動パフォーマンス(MB/sec)
である。
【0093】
図12は、AU42のクラスタ数を16としたときのカードパフォーマンスを示している。使用済みクラスタ比r(横軸)ごとのパフォーマンス(縦軸)をそれぞれ結ぶと、パフォーマンスカーブが得られる。パフォーマンスカーブはPwとPmで規定される。Pwは、r=0の場合、すなわちフルパフォーマンスと等価である。Pwは、記憶デバイス(フラッシュメモリ13)のプログラム時間によって変わる。また、Pmはフラッシュメモリ13のプログラム時間に加え、読み出し時間、データ移動方法にも依存して変化する。なお、データ移動は、メモリカード11内部で処理されるものであるため、ホスト1が直接制御するものではない。
【0094】
ここで、使用済みクラスタ比rは、
r=Nu/Nt
と記載できる。これは
Nu=r×Nt
とも記載できる。
【0095】
rは0から1の範囲で可変である。r=0はすべてのクラスタが未記入であることを意味し、r=1はすべてのクラスタが記入済みであること、すなわちパフォーマンスが0であることを意味する。言い換えれば、P(1)=0である。
【0096】
このことから、いかなるパフォーマンスカーブも(1,0)点を通ることがわかる。[数式1]をrを使って書き直すと、[数式2]となる。
【0097】
[数式2]
平均パフォーマンスカーブ:P(r)
=[(1−r)×Pw×Pm]/[r×Pw+(1−r)×Pm]
ただし、0≦r≦1である。
【0098】
図13は、[数式2]のパフォーマンスカーブの特徴を示している。図13において、直線L(r)は、Y軸上の点PwとX軸上の点1を結ぶ直線である。図13に示すように、パフォーマンスカーブP(r)は、直線L(r)よりも常に小さい(常に原点側にある)ことがわかる。
【0099】
言い換えれば、
L(r)−P(r)=Pw×(Pw−Pm)×(r−r2)≧0
である。
【0100】
[3−3−2]ファイルシステム書き込み時間について
ファイルシステムの書き込み(典型的には、FATの書き込み)はリアルタイム記録中の任意のクラスタ41間あるいはAU42間に挿入可能である。図14はリアルタイム記録中のファイルシステムの更新の典型的なシーケンスを示している。ファイルシステムの更新はどのクラスタ41の間にも起こり得る。ファイルシステムの更新は定期的に行われるが、あるファイルシステムの更新と次のファイルシステムの更新との間に書き込まれるクラスタ41の数はファイルシステム更新間隔TFUによって規定される。ファイルシステム更新間隔TFUは、領域問い合わせ関数内の入力パラメータであるファイルシステムの更新頻度から求められる。
【0101】
ファイルスシステム書き込みシーケンスは3つの書き込み動作からなる。図14に示す処理FAT1およびFAT2は、1つのマルチブロック書き込みコマンド(連続した複数のブロックを1つの書き込みコマンドで書き込む)を用いたFAT1、FAT2それぞれへのファイルシステムの書き込みである。ファイルシステム書き込みは任意のバイトアドレスから開始可能であり、16kBまでの任意の長さまでの書き込みとして定義可能である。処理DIRは、DIRの書き込みである。ディレクトリエントリはデータの書き込みに先立って生成され、ディレクトリエントリの変更した部分にのみ書き込まれる。ファイルシステム書き込み時間TFWは上記のファイルスシステム書き込みシーケンスの合計時間として規定される。ファイルシステム書き込み時間TFWはカードコントローラ12の仕様によって変わる。
【0102】
[3−3−3]ファイルシステム書き込み時間(TFW)の平均を求めるための測定条件
ホスト1はパフォーマンスを平均値として計算する必要がある。[数式3]は平均ファイルシステム書き込み時間TFW(ave.)を規定する式であり、任意の8回のファイルシステム書き込み時間の平均値の最悪値として測定できる。
【0103】
[数式3]
平均ファイルシステム書き込み時間:TFW(ave.)
=[max(TFW(1)+TFW(2)+・・・+TFW(7)+TFW(8))]/8
[3−3−4]パフォーマンスの算出
ファイルシステム更新による時間的ロスを考慮すると、アプリケーション2が要求するパフォーマンスPaを満足するためには、実際には、これより高いパフォーマンスPcを得られることが求められる。アプリケーション2が、必要とされるパフォーマンスPaを求める方法は、[数式4]によって算出できる。
【0104】
[数式4]
アプリケーションが必要とするパフォーマンス:Pa
=[Sc×Nd]/[Sc×Nd/Pc+TFW]
ただし、Nd=ファイルシステム更新の間に書き込まれるクラスタ数
パフォーマンスPaを満足するためのパフォーマンスPcは、[数式6]によって算出できる。
【0105】
[数式5]
パフォーマンスPaを満足するためのパフォーマンス:Pc
=[Sc×Nd×Pa]/[Sc×Nd−Pa×TFW]
本発明の第3実施形態に係るホストは、アプリケーション2とファイルシステム3との間で授受される、ある書き込み速度を達成可能なメモリ領域の大きさを調べるための関数を含んでいる。ファイルシステム3は、この関数を受けると、ある書き込み速度を達成可能なAU42の大きさをアプリケーション3に通知する。このため、アプリケーション2が、メモリカード11での書き込み速度の管理を容易に行うことができる。そして、アプリケーション3は、通知されたメモリ領域の大きさに応じて、再度、書き込み速度を指定して、この書き込み速度を達成可能なAU42のみにデータを書き込む旨を、ファイルシステム3に指示する等、することができる。
【0106】
なお、上記各実施形態において、FATファイルシステムの例を記述したが、類似のファイルアクセス方式を持つ別のファイルシステムにも適用可能である。
【0107】
また、PC(personal computer)でのプログラム構造を念頭においた形態で、第1乃至第3実施形態の説明を行ったが、各実施形態を情報家電機器など他のマイコン応用機器にも応用できる。
【0108】
また、フラッシュメモリ13を有するメモリカード11に関して説明を行ったが、第1乃至第3実施形態は、同様の特徴・機能を持つ他の記憶媒体にも適用可能である。
【0109】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【0110】
【図1】本発明の第1実施形態に係るホスト機器の主要部の構成を示す図。
【図2】第1実施形態に係るホスト機器に用いられるメモリカードの構成を示すブロック図。
【図3】フラッシュメモリのデータ配置を示す図。
【図4】ホスト機器側から見たときのフラッシュメモリの領域分割を示す図。
【図5】フラッシュメモリ内部での実際の記憶領域分割の概要を示す図。
【図6】第1実施形態に係るBPBに書き込まれているパラメータを示す図。
【図7】第1実施形態に係るホスト機器の書き込み動作を示すフローチャート。
【図8】第1実施形態に係るホスト機器によって書き込まれるクラスタの順序を示す図。
【図9】本発明の第2実施形態に係るホスト機器の書き込み動作を示すフローチャート。
【図10】本発明の第3実施形態に係るホスト機器の書き込み動作を示すフローチャート。
【図11】データの移動を説明する図。
【図12】パフォーマンスカーブを例示する図。
【図13】パフォーマンスカーブの特徴を示す図。
【図14】リアルタイム記録中のファイルシステム更新のシーケンスを例示する図。
【符号の説明】
【0111】
1…ホスト機器、2…アプリケーション、3…ファイルシステム、4…ホストコントローラ、11…メモリカード、12…カードコントローラ13…NAND型フラッシュメモリ、21…CPU、22…ROM、23…メモリインタフェース部、24…ホストインタフェース部、25…バッファ、26…RAM、31…管理データ領域、32…機密データ領域、33…保護データ領域、34…ユーザデータ領域、41…クラスタ、42…アロケーションユニット、43…ページ、44…ブロック。
【技術分野】
【0001】
本発明は、ホスト機器に関し、例えば、メモリカードを挿入されるホスト機器に関する。
【背景技術】
【0002】
現在、音楽データや映像データの記録メディアとしてフラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。
【0003】
NAND型フラッシュメモリは、以下の特徴を有する。1)データの書き込みはページ単位で行われる。2)データの消去はブロックと呼ばれる複数のページをまとめた単位で行われる。このため、書き込み済みのページを有するブロック内に含まれるページ内のデータがランダムに更新される場合、「引越し書き込み」と呼ばれる以下の処理が行われる。引越し書き込みでは、書き込まれるデータ(新データ)がデータの書き込まれていない新ブロックに書き込まれ、旧データ(新データに書き換えられるデータ)を含む旧ブロックから、書き換えられない残りのデータが新ブロックにコピーされる。このため、ひとつのページの書き込みにかなりの時間がかかる場合がある。なお、同じブロック内で先頭ページから連続したページに順次シーケンシャルにデータが書き込まれる場合は引越し書き込みは発生せず、効率的なデータ書き込みが可能である。
【0004】
現在、メモリカードのファイルシステムとしてはFAT(file allocation table)ファイルシステムが用いられている。FATファイルシステムは、クラスタと呼ばれるデータ単位でデータの読み書きが行われ、各データがどのクラスタに割り当てられているかがFATと呼ばれるテーブルで管理される。FATファイルシステムでは、FATやクラスタデータの書き込み、更新がランダムに発生する。
【0005】
このため、NAND型フラッシュメモリとFATファイルシステムが併用されたメモリカードでは、通常、引越し書き込みが発生する頻度が高い。この結果、ファイルの書き込み、書換え速度が低下する場合がある。
【0006】
現在、このようなメモリカードを利用するホスト機器のファイルシステムにおいて、上記のような特性を考慮したAPI(application program interface)が用意されていない。このため、アプリケーションがこのようなメモリカードの特性を考慮したデータ書き込み制御を行うことが困難であった。このことは、特に一定以上のデータ書き込み速度が要求されるAVデータを扱うアプリケーションにとって問題となっていた。
【0007】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【特許文献1】特開2003-296177号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明は、高い書き込み速度を実現可能なホスト機器を提供しようとするものである。
【課題を解決するための手段】
【0009】
本発明の第1の視点によるホスト機器は、プログラムに従って所定の動作を行い、書き込み関数呼び出しを発行するアプリケーションと、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記単位領域の自然数倍の大きさからなる管理単位を割り当て位置の決定単位として用い、且つ前記書き込み関数呼び出しを受けて前記管理単位ごとの実現可能な書き込み速度順に従って前記管理単位を前記書き込み領域として割り当てる管理システムと、前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、を具備することを特徴とする。
【0010】
本発明の第2の視点によるホスト機器は、プログラムに従って所定の動作を行い、領域確保関数を発行するアプリケーションと、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有する管理システムと、前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、を具備し、前記管理システムは、領域確保関数を受けると、前記書き込みデータの大きさに応じた大きさ分の前記単位領域からなる予約領域を予約し、前記予約領域に対する暫定的な管理用データを書き込む指示を出し、前記予約領域を前記書き込み領域として割り当てた後に、管理用データを書き込むこと無く前記書き込みデータを書き込む指示を出し、前記書き込みデータの書き込み終了後に最終的な管理用データを書き込む指示を出す、ことを特徴とする。
【0011】
本発明の第3の視点によるホスト機器は、プログラムに従って所定の動作を行い、要求書き込み速度の情報を含んだ領域問い合わせ関数を発行するアプリケーションと、メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記領域問い合わせ関数を受けると、前記要求書き込み速度以上の速度での書き込みが可能な前記単位領域の数を前記アプリケーションに通知する管理システムと、前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、を具備することを特徴とする。
【発明の効果】
【0012】
本発明によれば、高い書き込み速度を実現可能なホスト機器を提供できる。
【発明を実施するための最良の形態】
【0013】
以下に本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0014】
(1)(第1実施形態)
[1−1]構成
図1は、本発明の第1実施形態に係るホスト機器の主要部の構成を示す図である。ホスト機器(以下、ホストと称する)1は、接続されるメモリカード11に対してアクセスを行うためのハードウエアおよびソフトウエア(システム)を備えている。より具体的には、ホストは、少なくとも、図1に示すように、アプリケーション2、ファイルシステム(管理システム)3、ホストコントローラ4を有する。メモリカード11は、カードコントローラ12、NAND型フラッシュメモリ(以下、フラッシュメモリ)13を有する。メモリカード11の構成については、後に詳述する。
【0015】
アプリケーション2は、ROM(read-only memory)および(または)RAM(random access memory)上のプログラムにより実現される。CPU(central processing unit)は、RAM上に読み出されたプログラムに応じて所定の処理を実行する。アプリケーション2は、メモリカード11にデータを書き込む際、その旨の信号をファイルシステム3に供給する。
【0016】
ファイルシステム3は、アプリケーション2が書き込みを要求したデータをファイルシステムに従って管理するための動作を行う。すなわち、ファイルシステム3は、クラスタと呼ばれるデータ単位でファイルデータの読み書きを行い、各ファイルデータがどのクラスタに割り当てられているかをファイルシステム3内のメモリに記憶されるテーブルで管理する。アプリケーション2とファイルシステム3との間の命令および応答の授受は、APIにより行われる。ファイルシステム3として、典型的には、FATファイルシステムが用いられる。
【0017】
ホストコントローラ4は、ファイルシステム3からの要求に従って、メモリカード11からデータを読み出したり、メモリカード11にデータを書き込んだりするための動作を司る機能を有する。すなわち、ホストコントローラ4は、データの書き込み、読み出し、消去をメモリカード11に行わせるためのコマンドをメモリカード11に供給する。ホストコントローラ4は、メモリカード11とのインタフェースを有し、このインタフェースを介して、メモリカード11と通信を行う。
【0018】
次に、図1のホストに用いられるメモリカードについて、図2を参照して説明する。図2は、本発明の第1実施形態に係るホストに用いられるメモリカード11の構成を示すブロック図である。メモリカード11は、ホスト1に接続された時に電源供給を受けて動作し、ホスト1からのアクセスに応じた処理を行う。
【0019】
カードコントローラ12は、フラッシュメモリ13内部の物理状態(どこの物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、どこのブロックが消去状態であるか)を管理するものとして構築されている。図2に示すように、カードコントローラ12は、CPU21、ROM22、メモリインタフェース部23、ホストインタフェース部24、バッファ25、RAM26を有する。
【0020】
メモリインタフェース部23は、カードコントローラ12とフラッシュメモリ13との間のインタフェース処理を行う。ホストインタフェース部24は、カードコントローラ12とホスト1との間のインタフェース処理を行う。
【0021】
バッファ25は、ホスト1から送られてくるデータがフラッシュメモリ13へ書き込まれる際に、一定量のデータ(例えば1ページ分)を一時的に記憶する。また、バッファ25は、フラッシュメモリ13から読み出されるデータがホスト1へ送り出される際に、一定量のデータを一時的に記憶する。
【0022】
CPU21は、メモリカード11全体の動作を司る。CPU21は、例えば、メモリカード11が電源供給を受けた際に、ROM22の中に格納されているファームウェア(後述する制御プログラム)をRAM26上にロードして所定の処理を実行する。この処理により、各種のテーブル(後述)がRAM26上で作成される。CPU21は、また、ホスト1から書き込コマンド、読出コマンド、消去コマンドを受けてフラッシュメモリ13上の所定の処理を実行したり、バッファ25を通じたデータ転送処理を制御したりする。
【0023】
ROM22は、CPU21により制御される制御プログラムなどを格納する。RAM26は、CPU21の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【0024】
フラッシュメモリ13は、消去時の消去ブロックサイズ(消去単位のブロックサイズ)が、例えば256kバイト(256kB)に定められている不揮発性半導体メモリであり、例えば16kB単位でデータの書き込み・読み出しを行う。なお、フラッシュメモリ3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、1つのメモリセルに2ビット以上の情報を記憶する多値メモリであっても良い。また、フラッシュメモリ3およびコントローラ4は、基板上に個別に設けられていても良いし、同一のLSI(large-scale integrated circuit)基板上に配置されていても良い。
【0025】
フラッシュメモリ13のデータが書き込まれる領域(データ記憶領域)は、保存されるデータに応じて複数の領域に区分けされている。フラッシュメモリ13は、データ記憶領域として、ユーザデータ領域34と、管理データ領域31と、機密データ領域32と、保護データ領域33とを備えている。
【0026】
ユーザデータ領域34は、ユーザデータを格納し、メモリカードを使用するユーザが自由にアクセスおよび使用することが可能な領域である。
【0027】
管理データ領域31は、主にメモリカードに関する管理情報を格納し、メモリカード11のセキュリティ情報やメディアIDなどのカード情報を格納する。
【0028】
機密データ領域32は、機密データを格納し、暗号化に用いられる鍵情報や認証時に使用される機密データを保存し、ホスト1からはアクセス不可能な領域である。
【0029】
保護データ領域33は、重要なデータを格納し、メモリカード11に接続されたホスト1との相互認証によりホスト1の正当性が証明された場合にのみアクセスが可能となる領域である。
【0030】
図3は、フラッシュメモリ13のデータ配置を示している。フラッシュメモリ13の各ページは、例えば2112B(512B分のデータ記憶部×4+10B分の冗長部×4+24B分の管理データ記憶部)を有している。また、例えば128ページ分が一つの消去単位(すなわち、256kB+8kB)である。なお、以下の説明においては、便宜上、このフラッシュメモリの消去単位を256kBと呼ぶ。
【0031】
また、フラッシュメモリ13は、フラッシュメモリ13へのデータ入出力を行うためのページバッファ13Aを備えている。ページバッファ13Aの記憶容量は、例えば2112B(2048B+64B)である。データ書き込みなどの際には、ページバッファは13A、フラッシュメモリ13に対するデータ入出力処理を自身の記憶容量に相当する1ページ分の単位で実行する。
【0032】
また、図3においては消去単位が256kBブロックである場合を例示しているが、消去単位が例えば16kBブロックとなるように構築することもできる。この場合、各ページは528B(512B分のデータ記憶部+16B分の冗長部)を有しており、32ページ分が1つの消去単位(すなわち、16kB+0.5kB(kは1024))である。
【0033】
上記のように、ファイルシステム3は、クラスタ単位で書き込み・読み出しを管理している。一方、フラッシュメモリ13では、ページ(例えば16kB)単位で書き込み・読み出しが行われ、ブロック(例えば256kB)単位で消去が行われる。この比較を図4、図5に示す。図4は、ホスト1から見たときのフラッシュメモリ13の領域分割を示し、図5は、フラッシュメモリ13内部での実際の記憶領域分割の概要を示す。図4に示すように、ホスト1から見た場合はクラスタ41が記憶単位(単位領域)であり、複数のクラスタの集合として1つのAU(管理領域)42が定義される。なお、AUについては後述する。
【0034】
一方、フラッシュメモリ13においては、図5に示すように、複数のページ43からブロック44が構成される。この関係は、図5のホスト機器側から見た場合のクラスタ41とAU42とのの関係に類似している。しかしながらページ43とクラスタ41は同一である必要はなく、クラスタ41はページ43の自然数倍にすることができる。同様にAU42はブロック44の自然数倍にすることができる。
【0035】
[1−2]パラメータ
フラッシュメモリ13のユーザデータ領域34のBPB(BIOS parameter block)に記憶媒体の物理的なパラメータ(属性)が書き込まれている。このパラメータは、ファイルシステムで使用される。ホスト1は、フラッシュメモリ13をフォーマットする時、後述のように、このパラメータ(属性)を書き込む。ファイルシステムは、起動時にBPBを読み込むことにより、フラッシュメモリ13のパラメータを認識する。
【0036】
図6は、本発明の第1実施形態に係るBPBに書き込まれているパラメータを示している。図6に示すBPBは、ファイルシステムがFAT32の場合である。図6に示すように、BPBには、OEM名、セクタサイズ、セクタ数/クラスタ、予約セクタ数、FATの数、メディアディスクリプタ−(Descriptor)、セクタ数/FAT、セクタ数/トラック、ヘッド数、隠しセクタ数、全Bigセクタ数、Bigセクタ数/FAT、拡張フラグ、ファイルシステムバージョン、ルートの最初のクラスタ、ファイルシステム情報セクタ位置、バックアップブートセクタ位置、ドライブID、拡張ブートサイン、シリアル番号、ボリューム名、ファイルシステムタイプ、フラッシュデバイスフラグ(FDF)、のパラメータが書き込まれている。
【0037】
フラッシュデバイスフラグは、対象とするメディアがフラッシュメモリデバイスであることを示す。例えば、フラッシュデバイスフラグが“0”の場合、フラッシュメモリデバイスではない(フロッピー(登録商標)ディスク、ハードディスクなど)ことを示す。フラッシュデバイスフラグが、“1”の場合、メディアがフラッシュメモリデバイスであることを示す。
【0038】
消去ブロックサイズには、消去ブロックの自然数倍の大きさ、すなわち、AUサイズが格納される。ファイルシステムは、BPBのAUサイズ(消去ブロックサイズ)を参照して、AU境界位置を識別する。
【0039】
BPBに、フラッシュデバイスフラグが書き込まれることにより、ファイルシステム3は、この情報を直接読み取ることができる。そして、ファイルシステム3およびアプリケーション2が、この情報を使用して書き込み方法を制御することにより、書き込み速度を向上させることができる。
【0040】
次に、ホスト1がメモリカード11をフォーマットする時の動作を説明する。メモリカードリーダーのスロットにメモリカード11が挿入されると、ホスト1はFATを読み込む。もし、FATが読み込めない、つまりフラッシュメモリ13がフォーマットされておらず、さらにユーザがフラッシュメモリをフォーマットすることを希望する場合、ホストはフラッシュメモリ13のフォーマットを開始する。
【0041】
次に、ブートセクタ、ディレクトリ領域、FAT領域、データ領域が確保される。次に、ブートセクタにBPBが書き込まれる。図6の、上から順にOEM名乃至ファイルシステムタイプのパラメータの取得は、従来と同様である。
【0042】
フラッシュデバイスフラグのパラメータは、ホスト1がメモリカード11に対してフラッシュメモリ13の情報を得るためのコマンドを送り、このコマンドに対する応答から取り出された情報に従って書き込まれる。ホスト1がフラッシュメモリ13の情報を得るためのコマンドは、メモリカード11の規格で用意されている。しかし、このようなコマンドが用意されていないホストの場合、必要に応じてフォーマットソフトウェアの使用者が、手動で上記のパラメータの値を設定し、フォーマットソフトウェアはその値をBPBに書き込む。
【0043】
[1−3]書き込み動作
データの書き込み動作について、図7、図8を参照して説明する。図7は、本発明の第1実施形態に係るホスト機器の書き込み動作を示すフローチャートである。図8は、第1実施形態に係るホスト機器によって書き込まれるクラスタの順序を示す図である。
【0044】
アプリケーション2とファイルシステム3との間のAPIは、以下に示される書き込み動作を実現可能な書き込み関数呼び出しを含んでいる。アプリケーション2は、この書き込み関数呼び出しを介してファイルシステム3に書き込みを指示する。ファイルシステム3は、図7、図8に示される動作が行われるように、データを適当なクラスタ41に割り当て、且つデータが、割り当てられたクラスタ41に実際に書き込まれるようにカードコントローラ12に指示を行う。以下、ファイルシステム3がデータを“書き込む”と記載した場合、ファイルシステム3が、使用されていないクラスタ41をデータの書き込み領域として割り当て、割り当てられた書き込み領域にデータが実際に書き込まれるようにメモリカードに指示を出すことを意味するものとする。クラスタ41にデータが“書き込まれた”場合も、同様である。
【0045】
図7に示すように、まず、ファイルシステム3は、BPB内のFDFを参照し、書き込み対象のメディアがフラッシュメモリを用いたデバイスであるかどうかをチェックする(ステップS1)。メディアがフラッシュデバイスでなければ、消去ブロックサイズなどを意識せず、通常のフロッピー(登録商標)ディスクやハードディスクと同様のランダム書込み処理が行われる(ステップS2)。
【0046】
メディアがフラッシュメモリデバイスである場合、ファイルシステム3は、FATをチェックする。そして、ファイルシステム3は、直前の書き込みデータが、AU42の途中のクラスタ41に割り当てられており、且つ、そのAU42のそれ以降のクラスタ41が使用されていないクラスタ(非使用)であるか否かを判断する(ステップS3)。この判定が真であった場合、図8に示すように、AU42a中の最後に書き込まれたクラスタ41aの次のクラスタ41bから順に書き込まれる(ステップS4)。連続する非使用クラスタに、順次書き込みが行われるので、フラッシュメモリ13の書き込み能力範囲内で最大のスピードで書き込まれる。なお、図8中の参照符号41cは、書き込み済みのクラスタである。
【0047】
次に、直前の書き込みの際に途中で終了したAU42aに対する書き込みが終了すると、ファイルシステム3は、FATをチェックし、使用済みのクラスタを有さないAU42(クリーンなAU42)を検索する。そして、クリーンなAU42b、42d、42eに書き込みが行われる(ステップS5)。なお、クリーンなAU42b、42d、42eの書き込みの順番は、これに限られない。
【0048】
一方、ステップS3の判定が、偽であった場合、ファイルシステム3は、ステップS5に移行する。
【0049】
全てのクリーンなAU42に対する書き込みが終了した後にも書き込み要求が続いている場合、書き込み済みのクラスタ41cを有するAU42c内のクラスタ41にデータが書き込まれる。
【0050】
データの削除が適宜行われることにより、あるAU42内の全てのクラスタ41が不使用状態(有効なデータが書き込まれていない状態)になった際に、そのAU42を消去する。そして、このAU42が、以降、クリーンなAU42として扱われる。
【0051】
本発明の第1実施形態に係るホストは、アプリケーション2とファイルシステム3との間で授受される、所定の書き込み動作を実現するための書き込み関数呼び出しを有する。ファイルシステム3は、この書き込み関数呼び出しを受けると、AU42内の書き込み済み(割り当て済み)のクラスタの配置(フラグメンテーション)に応じた書き込み速度の低下の少ないAU42内のクラスタ41から順にデータを書き込む。このため、フラッシュデバイスにおけるデータ書込み速度の低下を抑えることができる。
【0052】
(2)(第2実施形態)
第2実施形態では、アプリケーションとファイルシステムとの間のAPIが、ファイルシステムの更新を効率的に行うことを目的とした関数を含んでいる。構成は、APIが異なることを除いて、第1実施形態と同じである。
【0053】
ファイルシステムでは、通常、データの書き込み(更新)中に一定時間(1秒〜数秒)ごとにFATとディレクトリエントリ(directory entry)のファイルサイズ(以下、FATと記載して、FATとディレクトリエントリを意味することがある)などの更新が行われる。これによって、データの書き込み中にシステムハングアップなどのアクシデントによってデータの書き込みが完了しなかった場合でも、その書き込みがすべて無効になることを防ぎ、最後のFATの更新までのデータを復活させることができる。
【0054】
しかし、上記のように、フラッシュデバイスの場合、データの更新する動作に時間がかかる。このため、FATの更新にかなり時間がかかる場合があり、一定時間ごとのFATの更新はデータ書き込み速度の低下に繋がる。
【0055】
[2−1]書き込み動作
本発明の第2実施形態に係るホストによるデータの書き込み動作について、図9を参照して説明する。図9は、第2実施形態に係るホストの書き込み動作を示すフローチャートである。アプリケーション2とファイルシステム3との間のAPIは、以下に示される書き込み動作を実現可能な関数を含んでいる。
【0056】
図9に示すように、ユーザがデータの書き込みを要求した場合等、データの書き込みが必要となると、アプリケーション2は、ファイルシステム3に対して、書き込みを行うためのファイルを開く旨のファイルオープン関数を発行する(ステップS11)。アプリケーション2は、図9に示す一連の書き込み動作の実行に先立ち、アプリケーション2上での動作に基づいて、書き込むデータ項目のサイズ(バイト数)、書き込むデータ項目の数を予測する。
【0057】
ファイルシステム3は、ファイルオープン関数を受けると、書き込みファイルを開く(ステップS12)。次に、アプリケーション2は、ファイルシステム3に対して領域確保関数を発行する。領域確保関数の入力パラメータとして、アプリケーション2が要求する、書き込むデータ項目のサイズ(バイト数)、書き込むデータ項目の数、データを書き込むためのファイルストリームが含まれる。
【0058】
ファイルシステム3は、領域確保関数を受け取ると、メモリ領域内に、書き込むデータ項目のサイズおよび数に応じた大きさの書き込み可能領域を確保する(S14)。なお、この確保される領域(予約領域)は、書き込み速度を上げる観点から、第1実施形態に記載の方法に従った優先順位で選択されるようにすることが好ましい。ファイルシステム3は、領域の確保後、実際に確保できた領域をアプリケーション2に通知する。
【0059】
次に、ファイルシステム3は、予約領域に、データ書き込み終了時点での予測される、暫定的なFATを書き込む(ステップS15)。
【0060】
アプリケーション2は、書き込み関数呼び出しをファイルシステム3に発行する(ステップS16)。ファイルシステム3は、書き込み関数呼び出しを受けると、予約領域に、FATの更新を行わずに、データを書き込む(ステップS17)。ここで、確保された領域が、データを書き込むのに不十分であった場合、ステップS13乃至ステップS17が繰り返される。
【0061】
データの書き込みが終了すると、ファイルシステム3は、実際に書き込まれたデータに基づいて、本来の領域のFATを更新する(ステップS18)。
【0062】
書き込みが終了すると、アプリケーション2は、ファイルシステム3に対して、書き込みファイルを閉じる旨のファイルクローズ関数を発行する(ステップS19)。ファイルシステム3は、この関数を受けて、書き込みファイルを閉じる(ステップS20)。
【0063】
本発明の第2実施形態に係るホストは、アプリケーション2とファイルシステム3との間で授受される領域確保関数を有する。ファイルシステム3は、領域確保関数を受けると、アプリケーション2が指定するサイズの書き込み領域を予約し、その予約領域に暫定的なFATを事前に書き込む。そして、データ書き込み中にはFATの更新は行われない。データ書き込み中のFATの更新を行わないことによって、書き込み速度の低下を防止できる。
【0064】
また、FATの事前書き込みによって、システムハングアップなどによってデータ書き込みの途中で処理が中断した場合でも、管理データとしてのFATは確保されるため、書き込みデータが失われることが回避される。
【0065】
(3)(第3実施形態)
第3実施形態では、アプリケーションとファイルシステムとの間のAPIが、メモリカードに対するデータの書き込み速度を管理するための関数を含んでいる。
【0066】
[3−1]構成
構成は、以下に述べる点を除いて、第1実施形態と同じである。まず、第3実施形態に係るホストに用いられるメモリカード11のBPBには、図6に示すように、消去ブロックサイズ(EBS)、書き込みページサイズのパラメータ、書き込みパフォーマンス(図示せぬ)、移動パフォーマンス(図示せぬ)が書き込まれている。
【0067】
消去ブロックサイズは、対象とするメディアがフラッシュメモリデバイスであるときに消去ブロックのサイズを、例えば512B単位で示す。消去ブロックサイズが512KBのNANDフラッシュメモリを使用するメモリカードの場合、このフィールドの値は1024である。
【0068】
書き込みページサイズは、対象とするメディアがフラッシュメモリデバイスであるときにページサイズを、例えば512B単位で示す。ページサイズが2kBのフラッシュメモリを使用するメモリカードの場合、このフィールドの値は4である。
【0069】
書き込みパフォーマンスおよび移動パフォーマンスに関しては、後に詳述する。
【0070】
BPBに、消去ブロックサイズ、書き込みページサイズ、書き込みパフォーマンス、移動パフォーマンスが書き込まれることにより、ファイルシステム3は、これらの情報を直接読み取ることができる。そして、ファイルシステム3およびアプリケーション2は、これらの情報を参照することにより、メモリカード11の書き込み速度を知得し、且つ書き込みの制御を容易に行うことができる。
【0071】
ホスト1は、BPBに消去ブロックサイズ、書き込みページサイズのパラメータを書き込む機能を有する。ホスト1は、メモリカード11をフォーマットする際、第1実施形態に示した各パラメータ取得に加えて、消去ブロックサイズ、書き込みページサイズ、書き込みパフォーマンス、移動パフォーマンスのパラメータを取得する。これらのパラメータは、フラッシュデバイスフラグのパラメータを取得する手順と同じである(第1実施形態を参照)。
【0072】
[3−2]書き込み動作
第3実施形態に係るホストによるデータの書き込み動作について、図10を参照して説明する。図10は、第3実施形態に係るホストの書き込み動作を示すフローチャートである。アプリケーション2とファイルシステム3との間のAPIは、以下に示される書き込み動作を実現可能な書き込み関数呼び出しを含んでいる。
【0073】
図10に示すように、アプリケーション2は、自らのアプリケーションの特性に応じて、(AVデータストリーム用などに)必要なデータ書き込み速度と必要なメモリ領域のサイズを算出する(ステップS21)。なお、ホスト1によっては、アプリケーション2の種類に応じて数種類の異なったビットレートのモードに対応していることがある。この場合、ホスト1は、ユーザが選んだモードに応じて選ばれたアプリケーションが必要とするデータ書き込み速度と必要なメモリ領域のサイズを決める必要がある。
【0074】
アプリケーション2は、領域問い合わせ関数をファイルシステム3に発行することにより、ファイルシステム3に対して必要書き込み速度以上の速度が得られるメモリ領域のサイズを問い合わせる(ステップS22)。領域問い合わせ関数の入力パラメータとしては、必要な書き込み速度、ある所定期間内でのFATの更新の頻度等がある。
【0075】
ファイルシステム3は、領域問い合わせ関数を受けると、必要速度を実現可能なメモリの空き領域のサイズを以下の工程により算出する。まず、ファイルシステム3は、FATを検索し、各AU42におけるデータの書き込み速度を予測する(ステップS23)。書き込み速度の予測の詳しい方法は後述する。なお、ここでの書き込み速度の予測には、領域問い合わせ関数内のFAT更新頻度も加味される。FAT更新頻度が高ければ、その分、書き込み速度は低下する。
【0076】
ファイルシステム3は、求めた各AUの書き込み速度のうち、領域問い合わせ関数に既述されている、必要書き込み速度以上の速度を実現できるAU42を検索し、その数を計数する(ステップS24)。
【0077】
ファイルシステム3は、必要書き込み速度以上の速度を実現できるAU42の数にAU42のサイズを掛け合わせることにより、必要書き込み速度以上の速度を実現できるメモリ領域のサイズを算出する。次いで、ファイルシステム3は、この算出されたメモリ領域サイズを、領域問い合わせ関数の戻り値として、アプリケーション2に返信する(ステップS25)。アプリケーション2は、少なくとも、ステップS25で受信したサイズのメモリ領域には、必要速度以上で書き込みを行えることを知得する。
【0078】
アプリケーション2は、ステップS21で算出された必要メモリ領域サイズと、ステップS25で得られた必要速度を実現可能なメモリ領域サイズとを、比較する(ステップS26)。アプリケーション2は、必要速度を実現可能なメモリ領域サイズが必要メモリ領域サイズより大きい場合、後述の工程によりデータの書き込みを行う。
【0079】
一方、必要速度を実現可能なメモリ領域サイズが必要メモリ領域サイズに満たない場合、アプリケーション2は、ディスプレイに表示する等することにより、ユーザにその旨を通知する。そして、例えば、書き込みの中止、書き込める量のみ書き込む、等の選択ダイアログを、ディスプレイに表示する。ユーザが書き込みの中止を選択した場合、書き込み処理は、ここで停止する。
【0080】
アプリケーション2は、書き込みファイルを開く旨のファイルオープン関数を発行する(ステップS27)。このステップでのファイルオープン関数の入力パラメータとしては、必要な書き込み速度やFATの更新の頻度が含まれる。アプリケーション2は、先に知得した必要速度を実現可能なメモリ領域サイズを考慮する等して、ファイルオープン関数に含める必要速度(指定速度)を設定する。必要速度を実現可能なメモリ領域サイズが十分な場合、典型的には、ファイルオープン関数で指定される入力パラメータ(書き込み速度、FAT更新頻度)は、領域問い合わせ関数で指定されたものと同じである。
【0081】
ファイルシステム3は、ファイルオープン関数を受けて、書き込みファイルを開く(ステップS28)。ファイルシステム3は、ファイルオープン関数によって指定された書き込み速度を実現可能なAU42を、ステップS23と同様の方法により検索する(ステップS29)。
【0082】
次に、ファイルシステム3は、条件を満たすAU42に対してのみ、指定速度によってデータを書き込む(ステップS30)。ここで、データが書き込む際、第2実施形態の方法を用いて、暫定的なFATをデータ書き込みの前に書き込み、データ書き込み後に最終的なFATを更新するようにすることもできる。こうすることにより、書き込み速度を向上できる。この場合、ファイルオープン関数によって指定されるFAT更新頻度は、0である。
【0083】
なお、ファイルオープン関数で指定される入力パラメータが領域問い合わせ関数で指定されたものと同じである場合、ステップS24において検索されたAU42に書き込むことができる。この場合、ステップS29は不要である。
【0084】
書き込みが終了すると、アプリケーション2は、ファイルシステム3に対して、書き込みファイルを閉じる旨のファイルクローズ関数を発行する(ステップS31)。ファイルシステム3は、この関数を受けて、書き込みファイルを閉じる(ステップS32)。
【0085】
[3−3]書き込み速度の算出
次に、図11(a)および図11(b)乃至図14を参照して、データ書き込み速度を算出する方法について説明する。ファイルシステム3は、以下の、書き込み速度(パフォーマンス)と、ファイルシステムの書き込み(典型的にはFATの書き込み)時間、領域問い合わせ関数内の入力パラメータであるファイルシステムの更新頻度を用いて、AU42での書き込み速度を算出する。
【0086】
[3−3−1]パフォーマンスカーブの定義
ホスト1によりクラスタ単位のデータがメモリ領域内のAの場所からBの場所まで順次記入される場合を例にとって、図11(a)および図11(b)を用いて説明する。
【0087】
図11(a)および図11(b)に示すように、複数のクラスタ41の集合体であるAU42に新規にデータを記入する場合について検討する。このAU42の論理アドレスをAとする。このAU42中のクラスタ41に新規にデータを書き込む場合、いわゆる引越し書き込みが行われる。より具体的には、実際には当初論理アドレスAのデータが書き込まれていた物理ブロックAAから別の物理ブロックABに、既に書かれていたクラスタ41(図中、Used)のデータを書き写し、同時に新規に書き込むデータを書き込む作業が必要になる。この作業の終了後以降、物理ブロックABが論理アドレスAとして認識される。
【0088】
この作業の実施に際して、当初記入されていないクラスタ41(図中、free)に新規にデータを書き込む時間は単純に書き込み時間である。これをPw(書き込みパフォーマンス)とする。
【0089】
一方、すでにクラスタ41に書き込みされている(図中、Usedのクラスタ41)データを別のブロックに書き写す場合には、新規のクラスタ41に書き込む時間に加え、元のクラスタから読み出す時間がかかる。さらに、予定された順序からすれば、新規に書き込まれるクラスタ41が空であれば、そこに書き込まれる予定の新規のデータ(例えば、図中、Data3)の書き込み動作は、書き込み済みデータが新しい物理ブロックへ書き写される間、停止する。これらに要する時間をデータの移動パフォーマンス(Pm)とする。
【0090】
新規データ記入の合計の所要時間は、書き込み時間の総計と、移動時間の総計との合計時間である。
【0091】
以上の説明から平均パフォーマンスP(Nu)は、[数式1]のようになる。
【0092】
[数式1]
平均パフォーマンス:P(Nu)
=[Sc×(Nt−Nu)]/[Sc×(Nt−Nu)/Pw+Sc×Nu/Pm]
=[(Nt−Nu)×Pm×Pw]/[(Nt−Nu)×Pm+Nu×Pw]
ここで、
Sc:クラスタの寸法(通常ファイルシステムの書き込み単位として用いるクラスタの寸法とは異なる)
Nt:AとBとの間に順次書き込むクラスタ数の合計
Nu:AとBとの間の使用済みクラスタ数
Pw:書き込みパフォーマンス(全て未記入クラスタの場合のパフォーマンス)
Pm:移動パフォーマンス(MB/sec)
である。
【0093】
図12は、AU42のクラスタ数を16としたときのカードパフォーマンスを示している。使用済みクラスタ比r(横軸)ごとのパフォーマンス(縦軸)をそれぞれ結ぶと、パフォーマンスカーブが得られる。パフォーマンスカーブはPwとPmで規定される。Pwは、r=0の場合、すなわちフルパフォーマンスと等価である。Pwは、記憶デバイス(フラッシュメモリ13)のプログラム時間によって変わる。また、Pmはフラッシュメモリ13のプログラム時間に加え、読み出し時間、データ移動方法にも依存して変化する。なお、データ移動は、メモリカード11内部で処理されるものであるため、ホスト1が直接制御するものではない。
【0094】
ここで、使用済みクラスタ比rは、
r=Nu/Nt
と記載できる。これは
Nu=r×Nt
とも記載できる。
【0095】
rは0から1の範囲で可変である。r=0はすべてのクラスタが未記入であることを意味し、r=1はすべてのクラスタが記入済みであること、すなわちパフォーマンスが0であることを意味する。言い換えれば、P(1)=0である。
【0096】
このことから、いかなるパフォーマンスカーブも(1,0)点を通ることがわかる。[数式1]をrを使って書き直すと、[数式2]となる。
【0097】
[数式2]
平均パフォーマンスカーブ:P(r)
=[(1−r)×Pw×Pm]/[r×Pw+(1−r)×Pm]
ただし、0≦r≦1である。
【0098】
図13は、[数式2]のパフォーマンスカーブの特徴を示している。図13において、直線L(r)は、Y軸上の点PwとX軸上の点1を結ぶ直線である。図13に示すように、パフォーマンスカーブP(r)は、直線L(r)よりも常に小さい(常に原点側にある)ことがわかる。
【0099】
言い換えれば、
L(r)−P(r)=Pw×(Pw−Pm)×(r−r2)≧0
である。
【0100】
[3−3−2]ファイルシステム書き込み時間について
ファイルシステムの書き込み(典型的には、FATの書き込み)はリアルタイム記録中の任意のクラスタ41間あるいはAU42間に挿入可能である。図14はリアルタイム記録中のファイルシステムの更新の典型的なシーケンスを示している。ファイルシステムの更新はどのクラスタ41の間にも起こり得る。ファイルシステムの更新は定期的に行われるが、あるファイルシステムの更新と次のファイルシステムの更新との間に書き込まれるクラスタ41の数はファイルシステム更新間隔TFUによって規定される。ファイルシステム更新間隔TFUは、領域問い合わせ関数内の入力パラメータであるファイルシステムの更新頻度から求められる。
【0101】
ファイルスシステム書き込みシーケンスは3つの書き込み動作からなる。図14に示す処理FAT1およびFAT2は、1つのマルチブロック書き込みコマンド(連続した複数のブロックを1つの書き込みコマンドで書き込む)を用いたFAT1、FAT2それぞれへのファイルシステムの書き込みである。ファイルシステム書き込みは任意のバイトアドレスから開始可能であり、16kBまでの任意の長さまでの書き込みとして定義可能である。処理DIRは、DIRの書き込みである。ディレクトリエントリはデータの書き込みに先立って生成され、ディレクトリエントリの変更した部分にのみ書き込まれる。ファイルシステム書き込み時間TFWは上記のファイルスシステム書き込みシーケンスの合計時間として規定される。ファイルシステム書き込み時間TFWはカードコントローラ12の仕様によって変わる。
【0102】
[3−3−3]ファイルシステム書き込み時間(TFW)の平均を求めるための測定条件
ホスト1はパフォーマンスを平均値として計算する必要がある。[数式3]は平均ファイルシステム書き込み時間TFW(ave.)を規定する式であり、任意の8回のファイルシステム書き込み時間の平均値の最悪値として測定できる。
【0103】
[数式3]
平均ファイルシステム書き込み時間:TFW(ave.)
=[max(TFW(1)+TFW(2)+・・・+TFW(7)+TFW(8))]/8
[3−3−4]パフォーマンスの算出
ファイルシステム更新による時間的ロスを考慮すると、アプリケーション2が要求するパフォーマンスPaを満足するためには、実際には、これより高いパフォーマンスPcを得られることが求められる。アプリケーション2が、必要とされるパフォーマンスPaを求める方法は、[数式4]によって算出できる。
【0104】
[数式4]
アプリケーションが必要とするパフォーマンス:Pa
=[Sc×Nd]/[Sc×Nd/Pc+TFW]
ただし、Nd=ファイルシステム更新の間に書き込まれるクラスタ数
パフォーマンスPaを満足するためのパフォーマンスPcは、[数式6]によって算出できる。
【0105】
[数式5]
パフォーマンスPaを満足するためのパフォーマンス:Pc
=[Sc×Nd×Pa]/[Sc×Nd−Pa×TFW]
本発明の第3実施形態に係るホストは、アプリケーション2とファイルシステム3との間で授受される、ある書き込み速度を達成可能なメモリ領域の大きさを調べるための関数を含んでいる。ファイルシステム3は、この関数を受けると、ある書き込み速度を達成可能なAU42の大きさをアプリケーション3に通知する。このため、アプリケーション2が、メモリカード11での書き込み速度の管理を容易に行うことができる。そして、アプリケーション3は、通知されたメモリ領域の大きさに応じて、再度、書き込み速度を指定して、この書き込み速度を達成可能なAU42のみにデータを書き込む旨を、ファイルシステム3に指示する等、することができる。
【0106】
なお、上記各実施形態において、FATファイルシステムの例を記述したが、類似のファイルアクセス方式を持つ別のファイルシステムにも適用可能である。
【0107】
また、PC(personal computer)でのプログラム構造を念頭においた形態で、第1乃至第3実施形態の説明を行ったが、各実施形態を情報家電機器など他のマイコン応用機器にも応用できる。
【0108】
また、フラッシュメモリ13を有するメモリカード11に関して説明を行ったが、第1乃至第3実施形態は、同様の特徴・機能を持つ他の記憶媒体にも適用可能である。
【0109】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【0110】
【図1】本発明の第1実施形態に係るホスト機器の主要部の構成を示す図。
【図2】第1実施形態に係るホスト機器に用いられるメモリカードの構成を示すブロック図。
【図3】フラッシュメモリのデータ配置を示す図。
【図4】ホスト機器側から見たときのフラッシュメモリの領域分割を示す図。
【図5】フラッシュメモリ内部での実際の記憶領域分割の概要を示す図。
【図6】第1実施形態に係るBPBに書き込まれているパラメータを示す図。
【図7】第1実施形態に係るホスト機器の書き込み動作を示すフローチャート。
【図8】第1実施形態に係るホスト機器によって書き込まれるクラスタの順序を示す図。
【図9】本発明の第2実施形態に係るホスト機器の書き込み動作を示すフローチャート。
【図10】本発明の第3実施形態に係るホスト機器の書き込み動作を示すフローチャート。
【図11】データの移動を説明する図。
【図12】パフォーマンスカーブを例示する図。
【図13】パフォーマンスカーブの特徴を示す図。
【図14】リアルタイム記録中のファイルシステム更新のシーケンスを例示する図。
【符号の説明】
【0111】
1…ホスト機器、2…アプリケーション、3…ファイルシステム、4…ホストコントローラ、11…メモリカード、12…カードコントローラ13…NAND型フラッシュメモリ、21…CPU、22…ROM、23…メモリインタフェース部、24…ホストインタフェース部、25…バッファ、26…RAM、31…管理データ領域、32…機密データ領域、33…保護データ領域、34…ユーザデータ領域、41…クラスタ、42…アロケーションユニット、43…ページ、44…ブロック。
【特許請求の範囲】
【請求項1】
プログラムに従って所定の動作を行い、書き込み関数呼び出しを発行するアプリケーションと、
メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記単位領域の自然数倍の大きさからなる管理単位を割り当て位置の決定単位として用い、且つ前記書き込み関数呼び出しを受けて前記管理単位ごとの実現可能な書き込み速度順に従って前記管理単位を前記書き込み領域として割り当てる管理システムと、
前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、
を具備することを特徴とするホスト機器。
【請求項2】
前記管理システムが、
前記管理単位内の最後に書き込みされた前記単位領域以降の単位領域群が使用されていない第1条件を満たす場合に、前記単位領域群の先頭の前記単位領域から順に前記書き込み領域として割り当て、
前記第1条件を満たさない時点から、使用されていない前記単位領域からなる前記管理単位から順に書き込みデータを割り当てる、
ことを特徴とする請求項1に記載のホスト機器。
【請求項3】
プログラムに従って所定の動作を行い、領域確保関数を発行するアプリケーションと、
メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有する管理システムと、
前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、
を具備し、
前記管理システムは、領域確保関数を受けると、前記書き込みデータの大きさに応じた大きさ分の前記単位領域からなる予約領域を予約し、前記予約領域に対する暫定的な管理用データを書き込む指示を出し、前記予約領域を前記書き込み領域として割り当てた後に、管理用データを書き込むこと無く前記書き込みデータを書き込む指示を出し、前記書き込みデータの書き込み終了後に最終的な管理用データを書き込む指示を出す、
ことを特徴とするホスト機器。
【請求項4】
プログラムに従って所定の動作を行い、要求書き込み速度の情報を含んだ領域問い合わせ関数を発行するアプリケーションと、
メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記領域問い合わせ関数を受けると、前記要求書き込み速度以上の速度での書き込みが可能な前記単位領域の数を前記アプリケーションに通知する管理システムと、
前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、
を具備することを特徴とするホスト機器。
【請求項5】
前記アプリケーションが、書き込みが可能な前記単位領域の数を考慮して、指定書き込み速度を得られる前記単位領域からなる指定書き込み領域のみに前記書き込みデータを書き込むためのファイルを開くファイルオープン関数を発行する機能、および前記指定書き込み領域のみに前記書き込みデータを書き込む旨の指示の書き込み関数呼び出しを発行する機能をさらに有することを特徴とする請求項4に記載のホスト機器。
【請求項6】
前記管理システムが、前記メモリカードへの電源供給の開始の際に前記メモリカードから読み出される前記メモリカードの性能予測パラメータを用いて前記要求書き込み速度以上の速度での書き込みが可能な前記単位領域の数を算出することを特徴とすることを特徴とする請求項4に記載のホスト機器。
【請求項1】
プログラムに従って所定の動作を行い、書き込み関数呼び出しを発行するアプリケーションと、
メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記単位領域の自然数倍の大きさからなる管理単位を割り当て位置の決定単位として用い、且つ前記書き込み関数呼び出しを受けて前記管理単位ごとの実現可能な書き込み速度順に従って前記管理単位を前記書き込み領域として割り当てる管理システムと、
前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、
を具備することを特徴とするホスト機器。
【請求項2】
前記管理システムが、
前記管理単位内の最後に書き込みされた前記単位領域以降の単位領域群が使用されていない第1条件を満たす場合に、前記単位領域群の先頭の前記単位領域から順に前記書き込み領域として割り当て、
前記第1条件を満たさない時点から、使用されていない前記単位領域からなる前記管理単位から順に書き込みデータを割り当てる、
ことを特徴とする請求項1に記載のホスト機器。
【請求項3】
プログラムに従って所定の動作を行い、領域確保関数を発行するアプリケーションと、
メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有する管理システムと、
前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、
を具備し、
前記管理システムは、領域確保関数を受けると、前記書き込みデータの大きさに応じた大きさ分の前記単位領域からなる予約領域を予約し、前記予約領域に対する暫定的な管理用データを書き込む指示を出し、前記予約領域を前記書き込み領域として割り当てた後に、管理用データを書き込むこと無く前記書き込みデータを書き込む指示を出し、前記書き込みデータの書き込み終了後に最終的な管理用データを書き込む指示を出す、
ことを特徴とするホスト機器。
【請求項4】
プログラムに従って所定の動作を行い、要求書き込み速度の情報を含んだ領域問い合わせ関数を発行するアプリケーションと、
メモリ領域上で区画された単位領域を書き込みデータが記憶される書き込み領域として順次割り当てる機能を有し、且つ前記領域問い合わせ関数を受けると、前記要求書き込み速度以上の速度での書き込みが可能な前記単位領域の数を前記アプリケーションに通知する管理システムと、
前記管理システムが割り当てた前記単位領域に前記書き込みデータを書き込む旨の指示をメモリカードに出すコントローラと、
を具備することを特徴とするホスト機器。
【請求項5】
前記アプリケーションが、書き込みが可能な前記単位領域の数を考慮して、指定書き込み速度を得られる前記単位領域からなる指定書き込み領域のみに前記書き込みデータを書き込むためのファイルを開くファイルオープン関数を発行する機能、および前記指定書き込み領域のみに前記書き込みデータを書き込む旨の指示の書き込み関数呼び出しを発行する機能をさらに有することを特徴とする請求項4に記載のホスト機器。
【請求項6】
前記管理システムが、前記メモリカードへの電源供給の開始の際に前記メモリカードから読み出される前記メモリカードの性能予測パラメータを用いて前記要求書き込み速度以上の速度での書き込みが可能な前記単位領域の数を算出することを特徴とすることを特徴とする請求項4に記載のホスト機器。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2006−285669(P2006−285669A)
【公開日】平成18年10月19日(2006.10.19)
【国際特許分類】
【出願番号】特願2005−105084(P2005−105084)
【出願日】平成17年3月31日(2005.3.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成18年10月19日(2006.10.19)
【国際特許分類】
【出願日】平成17年3月31日(2005.3.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]