(57)【要約】【課題】不揮発性半導体メモリに対して効率の良い書込みを行うこと。【解決手段】ホスト機器のファイルシステムによってアクセスされる不揮発性半導体メモリを具備するファイルストレージデバイスであって、前記ファイルシステムが管理可能な不揮発性半導体メモリ内の所定のデータ領域に、不揮発性半導体メモリで有ることを示す属性情報が書き込まれている。【選択図】    図４
2006085380.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器のファイルシステムによってアクセスされる不揮発性半導体メモリを具備するファイルストレージデバイスであって、
前記ファイルシステムが管理可能な不揮発性半導体メモリ内の所定のデータ領域に、不揮発性半導体メモリで有ることを示す属性情報が書き込まれていることを特徴とするファイルストレージデバイス。
【請求項２】
前記不揮発性半導体メモリは、消去ブロックサイズを有し、
前記不揮発性メモリには、前記消去ブロックサイズの大きさを示す情報が書き込まれていることを特徴とする請求項１に記載のファイルストレージデバイス。
【請求項３】
前記不揮発性半導体メモリは、書込ページサイズを有し、
前記不揮発性メモリには、前記書込ページサイズの大きさを示す情報が書き込まれていることを特徴とする請求項１に記載のファイルストレージデバイス。
【請求項４】
コンピュータに、
ホスト機器のファイルシステムによってアクセスされる、消去ブロックサイズを有する不揮発性半導体メモリを前記ファイルシステムに応じて論理フォーマットする機能を実現するためのプログラムであって、
前記論理フォーマットする機能は、前記コンピュータに、
前記消去ブロックサイズを読み出させる機能と、
前記フォーマットされた不揮発性半導体メモリに、読み出された消去ブロックサイズの情報を書き込む機能とを
実現するためのプログラム。
【請求項５】
前記不揮発性半導体メモリは書込ページサイズを有し、
前記コンピュータに、
前記不揮発性半導体メモリの書込ページサイズを読み出す機能と、
読み出された書込ページサイズの情報を前記不揮発性半導体メモリに書き込む機能と
を実現するための請求項４に記載のプログラム。
【請求項６】
ホスト機器のファイルシステムによってアクセスされる、消去ブロックサイズの消去ブロックサイズ情報が書き込まれた不揮発性半導体メモリから前記消去ブロックサイズ情報を読み出すステップと、
前記消去ブロックサイズ情報に応じて、第１のデータを書き込むステップとを含むことを特徴とする不揮発性半導体メモリへのデータの書込方法。
【請求項７】
前記消去ブロックサイズに基づいて、第２のデータが書き込まれていない消去ブロックの有無を認識するステップを更に含み、
前記書込時、第２のデータが書き込まれていない消去ブロックが有る場合、第２のデータが書き込まれていない消去ブロックに優先的に第１のデータを書き込むことを特徴とする請求項６に記載の不揮発性半導体メモリへのデータの書込方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリの制御方法に関し、特に、所定の消去ブロックサイズを有する不揮発性半導体メモリの制御方法に関する。
【背景技術】
【０００２】
現在、音楽データや映像データの記録メディアとしてフラッシュメモリ（不揮発性半導体メモリ）を用いたメモリカードが使われている。メモリカードのファイルシステムとしてはＦＡＴファイルシステム（追記不可）が用いられている。このＦＡＴファイルシステムをフラッシュメモリのファイルシステムに採用した例が特許文献１に開示されている。
【特許文献１】特願平７−１４１４７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
メモリカードに使用されるフラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。ＮＡＮＤ型フラッシュメモリはブロック単位でしか消去を行えないため、ブロックに記憶されたデータの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、旧データ（新データに書き換えられるデータ）を含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このような処理は「引越し書込み」と呼ばれる。この「引越し書込み」は書き換えられないデータのコピー動作を伴うため、当該「引越し書込み」が多発すると、オーバーヘッドが非常に増大することになる。
【０００４】
ＦＡＴファイルシステムでは、ファイルのクラスタデータの書き換えのたびに、ＦＡＴデータの書き換えが発生する。このため、ＮＡＮＤ型フラッシュメモリのファイルシステムにＦＡＴファイルシステムを採用した場合、クラスタデータの書き換えのたびに、上記「引越し書込み」が発生し、ファイルの書き換え速度が低下するという問題があった。
【０００５】
本発明は、以上の背景からなされたものであり、効率の良い書込みを行うことができるファイルストレージデバイス、プログラム、及び不揮発性半導体メモリへのデータの書込方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一例に係わるファイルストレージデバイスは、ホスト機器のファイルシステムによってアクセスされる不揮発性半導体メモリを具備するファイルストレージデバイスであって、前記ファイルシステムが管理可能な不揮発性半導体メモリ内の所定のデータ領域に、不揮発性半導体メモリで有ることを示す属性情報が書き込まれていることを特徴とする。
【０００７】
本発明の一例に係わるプログラムは、コンピュータに、ホスト機器のファイルシステムによってアクセスされる、消去ブロックサイズを有する不揮発性半導体メモリを前記ファイルシステムに応じて論理フォーマットする機能を実現するためのプログラムであって、前記論理フォーマットする機能は、前記コンピュータに、前記消去ブロックサイズを読み出させる機能と、前記フォーマットされた不揮発性半導体メモリに、読み出された消去ブロックサイズの情報を書き込む機能とを実現するためのプログラムであることを特徴とする。
【０００８】
本発明の一例に係わるデータの書込方法は、ホスト機器のファイルシステムによってアクセスされる、消去ブロックサイズの消去ブロックサイズ情報が書き込まれた不揮発性半導体メモリから前記消去ブロックサイズ情報を読み出すステップと、前記消去ブロックサイズ情報に応じて、第１のデータを書き込むステップとを含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、効率の良い書込みを行うことができるファイルストレージデバイス、プログラム、及び不揮発性半導体メモリへのデータの書込方法を提供することができる。
【発明を実施するための最良の形態】
【００１０】
本発明の実施の形態を以下に図面を参照して説明する。
【００１１】
（第１の実施形態）
図１は、本発明の一実施形態に係わるメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
【００１２】
メモリカードは、ＰＣＢ（Printed Circuit Board）基板２上にＮＡＮＤ型フラッシュメモリ３及びコントローラ４が配置されて構成されている。コントローラ４には、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only memory）９等の機能ブロックが搭載されている。各デバイスの詳細については後述する。なお、ＮＡＮＤ型フラッシュメモリ３は、一つのメモリセルに１ビットの情報を記憶する２値メモリであっても良いし、一つのメモリセルに２ビット以上の情報を記憶する多値メモリであっても良い。また、図１では、ＰＣＢ基板２上にＮＡＮＤ型フラッシュメモリ３及びコントローラ４が配置された場合を示したが、ＮＡＮＤ型フラッシュメモリ３及びコントローラ４は、同一のＬＳＩ（Large-scale Integration）基板上に配置されていても良い。
【００１３】
図２は、本発明の一実施形態に係わるホスト機器と上記メモリカードとを含む構成を示すブロック図である。なお、図１と共通する要素には同一の符号を付している。
【００１４】
ホスト機器（以下、ホストと称す）２０は、接続されるメモリカードに対してアクセスを行うためのハードウエア及びソフトウエア（システム）を備えている。
【００１５】
メモリカード１は、ホスト２０に接続された時に電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。このメモリカード１は、前述したようにＮＡＮＤ型フラッシュメモリ３及びコントローラ４を有する。
【００１６】
ＮＡＮＤ型フラッシュメモリ３は、消去時の消去ブロックサイズ（消去単位のブロックサイズ）が256kByteに定められている不揮発性半導体メモリであり、例えば16kByte単位でデータの書込・読み出しを行うようになっている。このＮＡＮＤ型フラッシュメモリ３は、例えば0.09μｍプロセス技術を用いて製作される。即ち、ＮＡＮＤ型フラッシュメモリ３のデザインルールは、0.1μｍ未満となっている。
【００１７】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３内部の物理状態（何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理するものとして構築されている。また、コントローラ４は、前述したＣＰＵ８及びＲＯＭ９の他に、メモリインタフェース部５、ホストインタフェース部６、バッファ７，及びＲＡＭ（Random Access Memory）１０を搭載している。
【００１８】
メモリインタフェース部５は、コントローラ４とＮＡＮＤ型フラッシュメモリ３との間のインタフェース処理を行うものである。ホストインタフェース部６は、コントローラ４とホスト２０との間のインタフェース処理を行うものである。
【００１９】
バッファ７は、ホスト２０から送られてくるデータをＮＡＮＤ型フラッシュメモリ３へ書込む際に、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤ型フラッシュメモリ３から読み出されるデータをホスト２０へ送り出す際に、一定量のデータを一時的に記憶したりするものである。
【００２０】
ＣＰＵ８は、メモリカード１全体の動作を司るものである。ＣＰＵ８は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ９の中に格納されているファームウェア（後述する制御プログラム）をＲＡＭ１０上にロードして所定の処理を実行することにより、各種のテーブル（後述）をＲＡＭ１０上で作成したり、ホスト２０から書込コマンド、読出コマンド、消去コマンドを受けてＮＡＮＤ型フラッシュメモリ３上の所定の処理を実行したり、バッファ７を通じたデータ転送処理を制御したりする。
【００２１】
ＲＯＭ９は、ＣＰＵ８により制御される制御プログラムなどを格納するメモリである。ＲＡＭ１０は、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶するメモリである。
【００２２】
図３は、フラッシュメモリ（即ち、メモリカード１内のＮＡＮＤ型フラッシュメモリ３）のデータ配置を示している。フラッシュメモリ３の各ページは、2112Byte（512Byte分のデータ記憶部×４＋10Byte分の冗長部×４＋24Byte分の管理データ記憶部）を有しており、１２８ページ分が一つの消去単位（即ち、256kByte＋8kByte）となる。なお、以下の説明においては、便宜上、このフラッシュメモリの消去単位を256kByteと呼ぶ。
【００２３】
また、ＮＡＮＤ型フラッシュメモリ３は、フラッシュメモリへのデータ入出力を行うためのページバッファを備えている。このページバッファの記憶容量は、2112Byte（2048Byte＋64Byte）である。データ書込などの際には、ページバッファは、フラッシュメモリに対するデータ入出力処理を自身の記憶容量に相当する１ページ分の単位で実行する。
【００２４】
メモリカードを実用上有効な製品とするためには、図３に示したフラッシュメモリ３の記憶容量は１Ｇビット以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇビットである場合、256kByteブロック（消去単位）の数は、512個となる。
【００２５】
また、図３においては消去単位が256kByteブロックである場合を例示しているが、消去単位が例えば16kByteブロックとなるように構築することも実用上有効である。この場合、各ページは528Byte（512Byte分のデータ記憶部＋16Byte分の冗長部）を有しており、３２ページ分が１つの消去単位（即ち、16kByte＋0.5kByte（ここで、kは1024））となる。
【００２６】
フラッシュメモリのデータが書込まれる領域（データ記憶領域）は、保存されるデータに応じて複数の領域に区分けされている。ＮＡＮＤ型フラッシュメモリ３は、データ記憶領域として、ユーザデータを格納するユーザデータ領域３４と、主にメモリカードに関する管理情報を格納するための管理データ領域３１と、機密データを格納する機密データ領域３２と、重要なデータを格納するための保護データ領域３３とを備えている。ユーザデータ領域３４は、メモリカードを使用するユーザが自由にアクセス及び使用することが可能な領域である。
【００２７】
保護データ領域３３は、メモリカード１に接続されたホスト２０との相互認証によりホスト２０の正当性が証明された場合にのみアクセスが可能となる領域である。
【００２８】
管理データ領域３１は、メモリカード１のセキュリティ情報やメディアＩＤなどのカード情報が格納されている領域である。
【００２９】
機密データ領域３２は、暗号化に用いる鍵情報や認証時に使用する機密データが保存されており、ホスト２０からはアクセス不可能な領域である。
【００３０】
ホスト２０がフラッシュメモリ３をフォーマットする時、ホスト２０はファイルシステムで使用される管理用データとして、BIOS Parameter Block（ＢＰＢ）に物理的な記憶媒体のパラメータ（属性）を書き込む。ＢＰＢは、ブートセクタに書き込まれている。ファイルシステムは、起動時にＢＰＢを読み込み記憶媒体のパラメータを認識する。
【００３１】
図４に、本発明の一実施形態に係わるＢＰＢに書き込まれているパラメータを示す。図４に示すＢＰＢは、ファイルシステムがＦＡＴ３２の場合である。ＢＰＢには、ＯＥＭ名、セクタサイズ、セクタ数／クラスタ、予約セクター数、ＦＡＴの数、メディアDescriptor、セクタ数／ＦＡＴ、セクタ数／トラック、ヘッド数、各紙セクタ数、全Ｂｉｇセクタ数、Ｂｉｇセクタ数／ＦＡＴ、拡張フラグ、ファイルシステムバージョン、ルートの最初のクラスタ、ファイルシステム情報セクタ位置、バックアップブートセクタ位置、ドライブＩＤ、拡張ブートサイン、シリアル番号、ボリューム名、ファイルシステムタイプ、フラッシュデバイスフラグ（ＦＤＦ）、消去ブロックサイズ（ＥＢＳ）、書込みページサイズのパラメータが書き込まれている。
【００３２】
フラッシュデバイスフラグ（ＦＤＦ）、消去ブロックサイズ（ＥＢＳ）、書込みページサイズ（ＰＳ）は、従来のＢＰＢには書き込まれていないパラメータである。フラッシュデバイスフラグは、対象とするメディアが消去ブロックと書込みページサイズを有するフラッシュメモリデバイスであることを示すフラグである。例えば、フラッシュデバイスフラグが“０”の場合、フラッシュメモリデバイスではない（フロッピー（登録商標）ディスク、ハードディスクなど）ことを示す。フラッシュデバイスフラグが、“１”の場合、消去ブロックと書込みページサイズを有するフラッシュメモリデバイスであることを示す。
【００３３】
消去ブロックサイズは、対象とするメディアがフラッシュメモリデバイスであるときに消去ブロックのサイズを例えば５１２バイト単位で示す。消去ブロックサイズが５１２ＫＢのＮＡＮＤフラッシュメモリを使用するＳＤメモリカードの場合、このフィールドの値は１０２４となる。
【００３４】
書込みページサイズは、対象とするメディアがフラッシュメモリデバイスであるときにページサイズを例えば５１２バイト単位で示す。ページサイズが２ＫＢのＮＡＮＤフラッシュメモリを使用するＳＤメモリカードの場合、このフィールドの値は４となる。
【００３５】
（１）ホストがメモリカードをフォーマットする時の動作を図５を参照して説明する。
【００３６】
メモリカードリーダーのスロットにメモリカードが挿入されると、ホストはメモリカードが挿入されたことを認識する（ステップＳＴ１０１）。
【００３７】
次に、ＦＡＴを読み込む（ステップＳＴ１０２）。もし、ＦＡＴが読み込めない、つまりフラッシュメモリがフォーマットされていなければ、ホストはユーザにフラッシュメモリをフォーマットするか否かの選択ダイアログをホストに設けられたディスプレイに表示する（ステップＳＴ１０３）。ユーザがフラッシュメモリをフォーマットすることを選択すれば、ホストはフラッシュメモリのフォーマットを開始する。なお、フラッシュメモリがフォーマットされていても、ユーザがフォーマットすることをホストに命令することもできる。
【００３８】
次に、ブートセクタ、ディレクトリ領域、ＦＡＴ領域、データ領域を確保する（ステップＳＴ１０４）。
【００３９】
次に、ブートセクタにＢＰＢを書き込む（ステップＳＴ１０５）。ＯＥＭ名、セクタサイズ、セクタ数／クラスタ、予約セクタ数、ＦＡＴの数、メディアDescriptor、セクタ数／ＦＡＴ、セクタ数／トラック、ヘッド数、各紙セクタ数、全Ｂｉｇセクタ数、Ｂｉｇセクタ数／ＦＡＴ、拡張フラグ、ファイルシステムバージョン、ルートの最初のクラスタ、ファイルシステム情報セクタ位置、バックアップブートセクタ位置、ドライブＩＤ、拡張ブートサイン、シリアル番号、ボリューム名、ファイルシステムタイプのパラメータの取得は、従来と同様である。フラッシュデバイスフラグ（ＦＤＦ）、消去ブロックサイズ（ＥＢＳ）、書込みページサイズのパラメータの取得方法について説明する。
【００４０】
ホストはＳＤメモリカードに対して、ＳＤメモリカード内のフラッシュメモリの情報を得るためのコマンドを送る。このコマンドは、ＳＤメモリカードの規格で用意されている。
【００４１】
ＳＤメモリカードからフラッシュメモリの情報が送られてくると、その情報に応じて消去ブロックサイズ、書込みページサイズの情報を取り出す。ホストは、取得された情報に応じて、ブート領域にＢＰＢを書き込む。
【００４２】
なお、メモリの消去ブロックサイズや書込みページサイズを知ることができるコマンドが用意されていないデバイスに対しては、必要に応じてフォーマートソフトウェアの使用者が手動でこれらの値を設定し、フォーマットソフトウェアはその値をＢＰＢにセットする。  
（２）ファイルの書込み動作
ファイルの書込み処理について、図６を参照して説明する。
【００４３】
ＢＰＢのＦＤＦを参照し、メディアがフラッシュデバイスであるかどうかをチェックする（ステップＳＴ２０１）。
【００４４】
メディアがフラッシュデバイスでなければ、消去ブロックサイズなどを意識せず、通常のフロッピー（登録商標）ディスクやハードディスクと同様のランダム書込み処理を行う（ステップＳＴ２０２）。
【００４５】
メディアがフラッシュメモリを用いた媒体である場合、ファイルシステムソフトウェアは以下のような方法でファイル書き込みを行う。
【００４６】
ＢＰＢの消去ブロックサイズ及び書込みページサイズの情報を取得する（ステップＳＴ２０３）。
【００４７】
ＢＰＢの消去ブロックサイズに基づいてＦＡＴを検索し、消去ブロック内に使用済みのクラスタがないブロック（クリーンなブロック）を検索する（ステップＳＴ２０４）。
【００４８】
クリーンなブロックに優先的にファイルデータを割り当ててファイル書き込みを行っていく（ステップＳＴ２０５）。また、書込みの際に、ファイルシステムはＢＰＢの書込みページサイズの整数倍のデータサイズ単位でファイルデータを書き込むことが好ましい。これによって、消去ブロック内でのランダムページ書込みが発生することを防止し、データ書込み速度を改善することが可能となる。
【００４９】
（３）次に、ＦＡＴファイルシステムの場合でのリアルタイムのストリームファイルの書込みが完了しなかった場合に、ファイルをリカバリすることができる書込み方法及びリカバリ方法を説明する。
【００５０】
ホストはファイル書込みの際以下の手順でファイルを書込む。書込処理の手順を図７のフローチャートを参照して説明する。
【００５１】
ＢＰＢに登録されている消去ブロックサイズ及びＦＡＴに基づいて、クリーンなブロックが連続している領域のうち容量が大きい連続領域を検索する（ステップＳＴ３０１）。
【００５２】
検索された最大連続領域のサイズがストリームファイルを書き込むのに充分なサイズであれば、最大連続領域にストリームファイルを書き込むものとして、書込むストリームファイルのための仮のＦＡＴをあらかじめ書込む（ステップＳＴ３０２）。
【００５３】
もし、最大連続領域のサイズが、ストリームファイルを書き込むのに充分なサイズで無ければ、空き領域の論理的アドレスが連続するように変換テーブルを変更して、ストリームファイルを書き込むための領域を確保しても良い。
【００５４】
ファイルの実体を低位のセクタから順次シーケンシャルに書込んでいく（ステップＳＴ３０３）。ブロック消去による書込み速度低下を防ぐため、書込処理時にＦＡＴの更新は行わない。書込み時、カード側は、書込処理されたページに対して、ページの冗長領域を利用して書込み済みのフラグを記録する。
【００５５】
リアルタイムのストリームの書込みが終了したら（ステップＳＴ３０４）、ファイルサイズを確定する（ステップＳＴ３０５）。確定されたファイルサイズに基づいて、仮ＦＡＴを最終的なＦＡＴに書き換えてファイルをクローズする（ステップＳＴ３０６）。
【００５６】
何らかの要因（ＨＷトラブルなど）でファイルの書込みが完了していなかった場合、すなわち最終的なＦＡＴの書込みが完了しなかった場合、ホストシステムは以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図８を参照して説明する。
【００５７】
仮ＦＡＴに従ってファイル実体のクラスタの開始位置を認識する（ステップＳＴ３１１）。
【００５８】
ホストはカードから、前述の書込み済み／未書込みのフラグに従って書込み済み領域の最終位置を認識する（ステップＳＴ３１２）。
【００５９】
ホストはファイルクラスタ開始位置から、ステップＳＴ３１２で認識された最終書込み位置までの領域をリカバリファイルのサイズとして確定する（ステップＳＴ３１３）。
【００６０】
確定されたファイルサイズに基づいて、仮ＦＡＴを正式なＦＡＴに更新する（ステップＳＴ３１４）。
【００６１】
上述した書込処理及びリカバリ処理によって、ビデオカメラによる動画撮影などリアルタイムのストリームファイルの書込みがホスト機器のハードウェアトラブルなどによって完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。
【００６２】
なお、ステップＳＴ３０１の前に、デフラグ処理を行って、ストリームファイルを書き込むための連続領域を確保しても良い。デフラグ処理を行うと、書込み制御の効率が向上する。
【００６３】
（４）性能パラメータ
なお、ファイル書込み性能を計算するための各種パラメータをＢＰＢのパラメータとして定義し、ファイルシステムがこれらのパラメータによってファイル書込み速度の計算ができるようにしてもよい。以下にファイル書込み性能を計算するための各種パラメータ、及び各種パラメータを用いた計算方法を説明する。
【００６４】
ホスト機器からメモリカードへのデータ伝送性能は制御バス上の伝送速度であると仮定する。ここで、制御バスは図２中でホスト２０とコントローラ４を双方向に結ぶ矢印のことである。なお、上記はホスト機器が最適な状態で書き込みをした場合を仮定している。
【００６５】
４−１）パフォーマンスカーブの定義
メモリ領域は例えば１６ＫＢのクラスタ（第一の基本アクセス単位：ここではクラスタという用語を用いるが、ここで言うクラスタは通常ファイルシステムの書き込み単位として用いるクラスタとは異なるものである）と呼ばれる単位に分けられて動画データ等の書き込みが行われる。この単位は、８ＫＢ，３２ＫＢ，６４ＫＢ、１２８ＫＢ等任意である。ホスト機器は動画データを記録可能なフリークラスタの数を数えることにより、残存記録時間を計算することが出来る。(第一の基本アクセス単位は書き込み単位であり、第二のアクセス単位が管理単位となる。)
なお、上記のクラスタはホスト機器のコントローラから記憶デバイスを見た場合の記憶単位であり、記憶デバイスに内蔵された不揮発性記憶装置（フラッシュメモリ）側のページとは一致する必要はない。図９（ａ）にホスト機器側から見たときの記憶デバイスの領域分割の概要を示し、図９（ｂ）に記憶デバイス内部での記憶領域分割の概要を示す。図９（ａ）に示すように、ホスト機器から見た場合はクラスタ（図中第一の記憶単位）32が記憶単位であり、複数のクラスタの集合としてＡＵ（アロケーションユニット、図中第二の記憶単位）31が定義される。なお、ＡＵについては追って説明する。この関係は図９（ｂ）に示した、記憶デバイス側から見たときのページとブロックの関係に類似している。ページ34は記憶デバイスの基本アクセス単位であり、ブロック33は複数のページからなり、消去（ＥＲＡＳＥ）単位である。
【００６６】
しかしながらページとクラスタは同一である必要はなく、クラスタはページの整数倍にすることができる。同様にＡＵはブロックの整数倍にすることができる。以下の説明では、上記のクラスタ、ＡＵを基本単位として説明する。
【００６７】
ホスト機器によりクラスタ単位のデータがメモリセル内のＡの場所からＢの場所まで順次記入される場合を例にとって、図１０を用いて説明する。
【００６８】
図１０（ａ）に示すように、複数のクラスタ（図中第一の記憶単位）、の集合体である第二の記憶単位（たとえばＡＵ）に新規にデータを記入する場合について検討する。このＡＵの論理アドレスをＸとする。このＡＵ中の各クラスタに新規にデータを書き込む場合、実際には当初論理アドレスＡのデータが書き込まれていた物理ブロックＸＸから別の物理ブロックＸＹに、従来書かれていたクラスタ（図中Ｕｓｅｄ）のデータを書き写し、同時に新規に書き込むデータを記入する作業が必要になる。この作業の終了後に新規に物理ブロックＸＹを論理アドレスＸとして認識する。
【００６９】
この作業の実施に際して、当初記入されていない（図中ｆｒｅｅ）クラスタに新規にデータを書き込む時間は単純に書き込み時間である。これをＰｗ（書き込みパフォーマンス）とする。一方、すでにクラスタに書き込みされている（図中Ｕｓｅｄのクラスタ）データを別のブロックに書き写す場合には新規のクラスタに書き込む時間に加え、元のクラスタから読み出す時間がかかる。さらに予定された順序からすればもしもこのクラスタが空であればそこに書き込まれる予定であった新規のデータ（たとえば図中Ｄａｔａ3）は、その書き込み済みデータの新しいブロックへの書き写しの間、作業を停止する。これらに要する時間をデータの移動パフォーマンス（Ｐｍ）とする。
【００７０】
新規データ記入の合計の所要時間は、書き込み時間の総計と、移動時間の総計の合計時間になる。
【００７１】
以上の説明から平均パフォーマンスＰ（Ｎｕ）を数式化すると［数式1］のようになる。
【００７２】
［数式1］
平均パフォーマンス：Ｐ（Ｎｕ）
＝［Ｓｃ×（Ｎｔ−Ｎｕ）］／［Ｓｃ×（Ｎｔ−Ｎｕ）／Ｐｗ＋Ｓｃ×Ｎｕ／Ｐｍ］
＝［（Ｎｔ−Ｎｕ）×Ｐｍ×Ｐｗ］／［（Ｎｔ−Ｎｕ）×Ｐｍ＋Ｎｕ×Ｐｗ］
ここで、
Ｓｃ：クラスタの寸法（通常ファイルシステムの書き込み単位として用いるクラスタの寸法とは異なる）
Ｎｔ：ＡからＢに順次書き込むクラスタ数の合計
Ｎｕ：ＡからＢの間の使用済みクラスタ数
Ｐｗ：書込みパフォーマンス（全て未記入クラスタの場合のパフォーマンス）
Ｐｍ：移動パフォーマンス（ＭＢ／ｓｅｃ単位）
である。
【００７３】
この式は、書込みパフォーマンスＰｗと移動パフォーマンスＰｍによりパフォーマンスが決定されることを前提にしている。
【００７４】
図１１はＡＵのクラスタ数を１６としたときのカードパフォーマンスを示す。使用済みクラスタ比ｒ（横軸）ごとのパフォーマンス（縦軸）をそれぞれ結ぶと、パフォーマンスカーブが得られる。パフォーマンスカーブはホスト機器メーカーにとって重要な情報になる。パフォーマンスカーブは上記の書込みパフォーマンスＰｗと移動パフォーマンスＰｍで規定される。移動パフォーマンスＰｗはｒ＝０の場合、すなわちフルパフォーマンスと等価である。移動パフォーマンスＰｗは記憶デバイス（フラッシュメモリ）のプログラム時間によって変わるものである。また、移動パフォーマンスＰｍはフラッシュメモリのプログラム時間に加え、読み出し時間、データ移動方法にも依存して変化する。なお、データ移動は、メモリカード内部で処理されるものであるため、ホスト機器が直接制御するものではない。
【００７５】
ここで、使用済みクラスタ比ｒは、
ｒ＝Ｎｕ／Ｎｔ
と記載できる。これは
Ｎｕ＝ｒ×Ｎｔ
とも記載できる。
【００７６】
使用済みクラスタ比ｒは０から１の範囲で可変である。ｒ＝０はすべてのクラスタが未記入であることを意味し、ｒ＝１はすべてのクラスタが記入済みであること、すなわちパフォーマンスが０であることを意味する。言い換えれば、Ｐ（１）＝０である。
【００７７】
このことから、いかなるパフォーマンスカーブも（１，０）点を通ることがわかる。［
数式１］をｒを使って書き直すと、［数式２］となる。
【００７８】
［数式２］
平均パフォーマンスカーブ：Ｐ（ｒ）
＝［（１−ｒ）×Ｐｗ×Ｐｍ］／［ｒ×Ｐｗ＋（１−ｒ）×Ｐｍ］
但し、０≦ｒ≦１である。
【００７９】
図１２は［数式２］のパフォーマンスカーブの特徴を図示したものである。Ｐ（ｒ）は、直線Ｌ（ｒ）（Ｌ（ｒ）はＹ軸上の点ＰｗとＸ軸上の点１を結ぶ直線）よりも常に小さい（常に原点側にある）ことがわかる。
【００８０】
言い換えれば、
Ｌ（ｒ）−Ｐ（ｒ）＝Ｐｗ×（Ｐｗ−Ｐｍ）×（ｒ−ｒ２）≧０
である。
【００８１】
４−２）メモリカードの分類
４−２−１）アプリケーションからの要求
メモリカードを用いるアプリケーションは高性能のカードを求めている。以下に代表例を記す。
【００８２】
（１）デジタルビデオ録画
ＭＰＥＧ２やＭｏｔｉｏｎＪＰＥＧではメモリカードへの直接記録が求められている。標準的なテレビ画像の品質、解像度を得るには、約２ＭＢ／ｓｅｃの記録速度が求められる。デジタルビデオカメラメーカーは使用途中のメモリカードの録画可能時間を知り、残存している録画可能時間として表示する必要がある。
【００８３】
（２）連写機能を有するデジタルスチルカメラ
デジタルスチルカメラメーカーは連写機能を実現するために高性能メモリカードを必要としている。デジタルスチルカメラメーカーは使用者に可能な連写レートを明示するためカードパフォーマンスを計算する必要がある。
【００８４】
４−２−２）クラス分け
カードパフォーマンスとホスト機器要求性能との整合をとるために、カード性能に応じて複数のパフォーマンスに分類する必要がある。図１３に、２本のパフォーマンスカーブで区分した場合の３つの領域を示す。図中、クラス１およびクラス２のパフォーマンスカーブで、Ｐ（ｒ）−ｒ領域は３領域に区分されている。なお。縦軸Ｐ（ｒ）はパフォーマンスを、横軸ｒは使用済みクラスタ比を示している。
【００８５】
従来のカードはこの３領域のうち、もっとも原点に近い領域、クラス０（図中Ａｒｅａ  ｏｆ  Ｎｏ  Ｃｌａｓｓ  Ｃａｒｄ）に属する。図中では最も性能の劣った区分である。
【００８６】
クラス１のパフォーマンスカーブはクラス１カードの最低性能を意味する。このカーブは二つのパラメータＰｗ１（クラス１パフォーマンスカーブとＹ軸の交点）とＰｍ１で規定される。同様に、クラス２のパフォーマンスカーブはクラス２カードの最低性能を意味する。このカーブは二つのパラメータＰｗ２（クラス２パフォーマンスカーブとＹ軸の交点）とＰｍ２で規定される。アプリケーションの要求がさらに高まればさらに高レベルのクラス３、クラス４のパフォーマンスカーブを規定する必要が出てくるが、基本的な考え方は変更する必要はない。
【００８７】
４−２−３）記憶エリアの位置とパフォーマンス精度
データを書き込むクラスタＡの開始アドレスが消去セクタの境界でない場合、予備移動時間が必要になり、実際のパフォーマンスは期待パフォーマンスよりも劣る。正確な予測を行うためには、ＡとＢのアドレスが消去セクタの境界にあることが要件となる。以下の４−５−２）でアロケーションユニット（ＡＵ）を規定するのはこの理由からである。
【００８８】
４−３）記録中のファイルシステムの更新
図１４はリアルタイム記録中のファイルシステムの更新（この例ではＦＡＴ（ファイルアロケーションテーブル）の更新）の典型的なシーケンスを示している。ファイルシステムの更新はどのクラスタの間にも起こりうる。ファイルシステムの更新は定期的に行われるがあるファイルシステム更新と次のファイルシステム更新の間に書き込まれるクラスタの数はファイルシステム更新間隔（ＴＦＵ）によって規定される。ＦＡＴ書き込みサイクルは３つの書き込み動作からなる。ＦＡＴ１（ＦＡＴ２）はひとつのマルチブロック書き込みコマンド（連続した複数のブロックを１つの書き込みコマンドで書き込む）を用いたＦＡＴ１，ＦＡＴ２それぞれへのＦＡＴｔａｂｌｅ書き込みである。ＦＡＴ書き込みは任意のバイトアドレスから開始可能であり、１６ＫＢまでの任意の長さまでの書き込みとして定義可能である。図中ＤＩＲはＤｉｒｅｃｔｒｙ  Ｅｎｔｒｙの略であり、これは記録に先立って生成され、Ｄｉｒｅｃｔｒｙ  Ｅｎｔｒｙの変更した部分にのみ書き込まれる。ＦＡＴ書き込み時間（ＴＦＷ）は上記のＦＡＴ書き込みシーケンスの合計時間として規定される。これ（ＴＦＷ）はカードコントローラの仕様によって変わる。
【００８９】
ホスト機器はファイルシステムの更新がシーケンスに挿入されることによるパフォーマンスの低下を計算することが出来る。ＦＡＴ書き込みサイクルを挿入することによりアプリケーションが求めるパフォーマンス（Ｐａ）よりも高いカードパフォーマンス（Ｐｃ）が要求されることになる。
【００９０】
４−３−１）ＦＡＴ書き込み時間（ＴＦＷ）の平均を求めるための測定条件
ホスト機器は平均値としてパフォーマンスを計算する必要がある。［数式３］は平均ＦＡＴ書き込み時間（ＴＦＷ(ave.)）を規定する式であり、任意の８回のＦＡＴ書き込みサイクルの平均値の最悪値として測定できる。
【００９１】
［数式３］
平均ＦＡＴ書き込み時間：（ＴＦＷ(ave.)）
＝［ｍａｘ（ＴＦＷ(１)＋ＴＦＷ(２)＋・・・＋ＴＦＷ(７)＋ＴＦＷ(８)）］／８
２−３−２）最大ファイルシステム更新時間
ホスト機器はファイルシステム更新の間にデータを一時保存するための充分なバッファ領域を必要とする。最大ファイルシステム更新時間によって要求される最小バッファ領域が決まる。ホスト機器のバッファ領域サイズに対する要求に関係して３−３）でさらに説明する。
【００９２】
［数式４］はファイルシステム（ＦＡＴ）書き込み時間の最悪値を規定する。
【００９３】
［数式４］
ファイルシステム（ＦＡＴ）書き込み時間の最悪値：（ＴＦＷ(ｍａｘ)）≦７５０［ｍｓ］
４−４−３）容量とＡＵ(アロケーションユニット)最大寸法との関係
消去セクタサイズに関係してホストから別のパラメータが要求される。SDTMカードの物理規格によりＡＵ 寸法を読み込むレジスタを規定することによって、カードに最適なＡＵ 寸法を示すことができ、ホスト機器はＡＵ を効率的に利用できる。また、AUの最大値によって必要なホストバッファサイズが規定される。
【００９４】
カード容量に応じた最大ＡＵ寸法の例をあげる。
【００９５】
カード容量／最大ＡＵ寸法＝16-128MB／128KB、256MB／256KB、512MB／512KB、1GB／1MB、2GB／2MB、4-32GB／4MB。
【００９６】
４−５）リアルタイム記録を行うホスト機器の要件
この項ではホスト機器がリアルタイム記録を行うときの方法について述べる。
【００９７】
４−５−１）ファイルシステム更新に伴うパフォーマンス計算方法
［図１４］にリアルタイム記録時の典型的なファイルシステム更新サイクルのシーケンスを示した。ＦＡＴ書き込みサイクルは３つの領域に対して行われる。ファイルシステム更新時にホスト機器はこのシーケンスを取ることが望ましい。
【００９８】
４−５−１ａ）ファイルシステム更新時に必要とされるカードパフォーマンス条件
ホスト機器は必要とされるカードパフォーマンス（Ｐｃ）を、必要とされるアプリケーションパフォーマンス（Ｐａ）、及び、平均ＦＡＴ書き込み時間（ＴＦＷ）から決める必要がある。ホスト機器はＰａよりも高いＰｃの性能のカードを必要とする。
【００９９】
Ｐａ（アプリケーションが必要とするパフォーマンス）、Ｐｃ（Ｐａを満足するためのカードパフォーマンス）を［数式５］，［数式６］にそれぞれ示す。
【０１００】
［数式５］
アプリケーションが必要とするパフォーマンス：Ｐａ
＝［Ｓｃ×Ｎｄ］／［Ｓｃ×Ｎｄ／Ｐｃ＋ＴＦＷ］
［数式６］
Ｐａを満足するためのカードパフォーマンス：Ｐｃ
＝［Ｓｃ×Ｎｄ×Ｐａ］／［Ｓｃ×Ｎｄ−Ｐａ×ＴＦＷ］
４−５−１ｂ）ファイルシステム更新期間の条件
ファイルシステム更新期間（ファイルシステム更新から次のファイルシステム更新までの期間）はＦＡＴ書き込みシーケンスを各データ転送の間に挿入することにより決定される。これは書き込み速度に依存するが期間の精度は重要ではない。ホスト機器がファイルシステム更新期間を簡単に計算できるように、簡単な方法をとってよい。
【０１０１】
ファイルシステム更新期間の算出式を［数式７］に示す。
【０１０２】
［数式７］
ファイルシステム更新期間：ＴＰＦ
＝Ｓｃ×Ｎｄ／Ｐａ＝Ｓｃ×Ｎｄ／Ｐｃ＋ＴＦＷ
ＦＡＴ書き込みを挿入することで、パフォーマンスはさらに悪化する。そこでホスト機器は適切なＮｄに調整してよい。（ＴＰＦは１秒以上が望ましい）。より大きなＮｄを選択したとき、ＰｃはＰａに近づき、低性能のカードでもＰａを満足しうるようになりうる。
【０１０３】
４−５−２）アロケーションユニット（ＡＵ）
アロケーションユニットはすべてのメモリエリアをＡＵ寸法（ＳＡＵ）に分けるものとして規定される。ＳＡＵは消去セクタ（ブロック）サイズの整数倍である。各AUは図１５（ａ）に図示したような複数のクラスタに分割されている。AUの最上位の位置のクラスタにはファイルシステム領域が含まれる。ホスト機器はどのAUがリアルタイム記録に使用可能か判定する必要がある。また、ホスト機器によってはアプリケーションの種類に応じて数種類の異なったビットレートのモードに対応していることがある。利用者が選んだモードに応じてホスト機器はその選ばれたアプリケーションが必要とするパフォーマンスを決める必要がある。さらに、ファイルシステム更新によるロスを考慮するなら、ホスト機器はアプリケーションのパフォーマンス（Pa）よりもさらに上のパフォーマンス（Pc）をカードに求める必要がある。Pcは［数式６］によって算出できる。
【０１０４】
４−６−１）最大使用済みクラスタ比
図６（ａ）に示したように、開始位置がＡであり終了位置Ｂであり、AU境界がそれぞれ開始位置Ａと終了位置Ｂに一致しているとすれば、[数式２]により、AUのパフォーマンスの計算を求めることが出来、最大使用済みクラスタ比（AUfastとAUlastに分類する境界値。この値が小さいほどリアルタイム記録に適したAUと判定できる。）はPcから導ける。［数式８］に最大使用済みクラスタ比の計算式を示す。
【０１０５】
［数式8］
最大使用済みクラスタ比：ｒ（Ｐｃ）
＝［（Ｐｗ−Ｐｃ）×Ｐｍ］／［（Ｐｗ−Ｐｍ）×Ｐｃ＋Ｐｗ×Ｐｍ］
３−２−２）2つのカテゴリへのAUの分類
ホスト機器はAUを2つのカテゴリに分類する。ひとつはAＵＦＡＳＴであり、これは要求パフォーマンスPcでリアルタイム記録を行うのに充分対応できる速さを有する。他方はAUSLOWであり、これはメモリ領域が断片化しすぎているためにリアルタイム録画に適さないものである。ホスト機器はAUごとに使用済みクラスタ数（Nu）を数え、使用済みクラスタ比を計算する。AＵＦＡＳＴかAUSLOWかは［数式９］により計算できる。
【０１０６】
［数式９］
Ｎｕ／Ｎｔ＜ｒ（Ｐｃ）であればＡＵはＡＵＦＡＳＴ
Ｎｕ／Ｎｔ≧ｒ（Ｐｃ）であればＡＵはＡＵSLOW
すなわち、Ｎｕ／Ｎｔがｒ（Ｐｃ）よりも小さいときはＡＵはＡＵSLOWに分類され、大きいときはＡＵSLOWに分類される。ここで、ＮｔはＡＵ中の全クラスタ数である。
【０１０７】
図１５はＡＵのメモリカード領域におけるＡＵの割り当てを示す。図１５（ａ）については上で説明した。なお、図示されているように、各ＡＵは複数のクラスタからなる。図１５（ｂ）には、上記で説明したＡＵの2種類の各分類のメモリ空間内での分布の一例を示している。先頭のAUはファイルシステムを含むためリアルタイム記録には適さない領域であり、ＡＵＳＬＯＷに割り当てる。また、ディレクトリエントリはデータを記録するＡＵと同じにAUに作成してはならない。
【０１０８】
・ブロックサイズは必ずしもＮＡＮＤフラッシュメモリチップのサイズでなくてもよい。（それを複数個まとめたものをその単位としてもよい。）
・フラッシュデバイスを示すフラグはＢＰＢ中の別のアドレスを割り振ったが、メディアタイプを示すメディアDescriptor(メディアＩＤ）のＩＤ種別を追加して割り振っても良い。
【０１０９】
・ＦＡＴファイルシステムの例を記述したが、類似のファイルアクセス方式をもつ別のファイルシステムにも適用可能である。
【０１１０】
なお、上記各実施形態に記載したフォーマット処理及び書込み処理は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１１１】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１１２】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行しても良い。
【０１１３】
さらに、記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０１１４】
また、記憶媒体は１つに限らず、複数の媒体から本実施形態における処理が実行される場合も記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１１５】
尚、コンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１１６】
また、コンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１１７】
なお、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で、種々変形して実施することが可能である。
【図面の簡単な説明】
【０１１８】
【図１】本発明の一実施形態に係わるメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】本発明の一実施形態に係わるホスト機器と上記メモリカードとを含む構成を示すブロック図。
【図３】本発明の一実施形態に係わるフラッシュメモリのデータ配置を示す図。
【図４】本発明の一実施形態に係わるＢＰＢに書き込まれているパラメータを示す図。
【図５】本発明の一実施形態に係わるホストがメモリカードをフォーマットする時の動作を説明するためのフローチャート。
【図６】本発明の一実施形態に係わるファイルの書込み処理の手順を示すフローチャート。
【図７】本発明の一実施形態に係わる書込処理の手順を示すフローチャート。
【図８】本発明の一実施形態に係わるリカバリ処理の手順を示すフローチャート
【図９】図９（ａ）はホスト機器側から見たときの記憶デバイスの領域分割の概要を示し、図９（ｂ）に記憶デバイス内部での記憶領域分割の概要を示す図。
【図１０】本発明の一実施形態に係わるデータの移動を説明する図。
【図１１】本発明の一実施形態に係わるパフォーマンスカーブを示す図。
【図１２】本発明の一実施形態に係わるパフォーマンスカーブと直線Ｌの関係を示す図。
【図１３】本発明の一実施形態に係わるパフォーマンスカーブ分類を示す図。
【図１４】本発明の一実施形態に係わるリアルタイム記録中のファイルシステム更新の例を示す図。
【図１５】本発明の一実施形態に係わるメモリカード領域に対するＡＵ割り当ての例を示す図。
【符号の説明】
【０１１９】
１…メモリカード，２…ＰＣＢ基板，３…ＮＡＮＤ型フラッシュメモリ，４…コントローラ，５…メモリインタフェース部，６…ホストインタフェース部，７…バッファ，８…ＣＰＵ，９…ＲＯＭ，１０…ＲＡＭ
【図１】
2006085380.tif 000003
【図２】
2006085380.tif 000004
【図３】
2006085380.tif 000005
【図４】
2006085380.tif 000006
【図５】
2006085380.tif 000007
【図６】
2006085380.tif 000008
【図７】
2006085380.tif 000009
【図８】
2006085380.tif 000010
【図９】
2006085380.tif 000011
【図１０】
2006085380.tif 000012
【図１１】
2006085380.tif 000013
【図１２】
2006085380.tif 000014
【図１３】
2006085380.tif 000015
【図１４】
2006085380.tif 000016
【図１５】
2006085380.tif 000017