メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
【課題】効率の良い書き込みおよび読出しを行うことができるメモリカードを提供する。
【解決手段】メモリカードは、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリ3を含んでいる。コントローラ4は、外部からの命令に従った処理を行なうための命令を不揮発性半導体メモリに送信して不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および最終書込み領域のアドレス情報を外部が読み出すための機能を有する。
【解決手段】メモリカードは、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリ3を含んでいる。コントローラ4は、外部からの命令に従った処理を行なうための命令を不揮発性半導体メモリに送信して不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および最終書込み領域のアドレス情報を外部が読み出すための機能を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリカードの制御方法および不揮発性半導体メモリの制御方法に関し、特に、所定の消去ブロックサイズを有する不揮発性半導体メモリの制御方法に関する。
【背景技術】
【0002】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードのファイルシステムとして、FATファイルシステムが用いられている。このFATファイルシステムをフラッシュメモリのファイルシステムに採用した例が特開平7−141479号公報(特許文献1)に開示されている。FATファイルシステムは、ハードディスク等の、高速なランダム書き換えが可能なメディアを前提としたファイルシステムである。ランダム書込みとは、セクタ(ファイルシステムが認識する書き込み領域の単位)のアドレスによらずに、空いているセクタにランダムにデータが書き込まれる方式である。
【0003】
メモリカードに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。NAND型フラッシュメモリはブロック単位でしか消去を行えない。1つのブロックは、複数の、書き込み単位であるページを含んでいる。このため、ブロックに記憶されたデータの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、旧データ(新データに書き換えられるデータ)を含んでいる旧ブロックから、書き換えられないデータを新ブロックにコピーする必要がある。このような処理は「引越し書き込み(巻き添えコピー)」と呼ばれる。この「引越し書き込み」は書き換えられないデータのコピー動作を伴うため、「引越し書き込み」が多発すると、オーバーヘッドが非常に増大することになる。
【0004】
FATファイルシステムでは、ファイルのクラスタデータの書き換えのたびに、FATデータの書き換えが発生する。このため、NAND型フラッシュメモリを管理するファイルシステムとして、FATファイルシステムが採用された場合、クラスタデータの書き換えのたびに、「引越し書き込み」が発生し、ファイルの書き換え速度が低下する。
【0005】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平7−141479号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、効率の良い書き込みおよび読出しを行うことができるメモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供しようとするものである。
【課題を解決するための手段】
【0008】
本発明の一態様によるメモリカードは、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリと、外部からの命令に従った処理を行なうための命令を前記不揮発性半導体メモリに送信して前記不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、前記データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および前記最終書込み領域のアドレス情報を外部が読み出すための機能を有するコントローラと、を具備することを特徴とする。
【0009】
本発明の一態様による不揮発性半導体メモリの制御方法は、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、複数の前記書き込み領域の1つに記憶されているデータを複数の前記書き込み領域の他の1つに移動させる指示を含んだデータ移動コマンドを受信する工程と、データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、を具備することを特徴とする。
【0010】
本発明の一態様によるメモリカードの制御方法は、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、を具備することを特徴する
【発明の効果】
【0011】
効率の良い書き込みおよび読出しを行うことができるメモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供できる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図2】ホスト機器とメモリカードとを含む構成を示すブロック図。
【図3】フラッシュメモリのデータ配置を示す図。
【図4】フラッシュメモリをフォーマットの違いにより区分けした状態を示す図。
【図5】一般的なファイル構造を示す図。
【図6】ICBを用いて実現されるファイル構成を示す図。
【図7】DVD−Rファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示す図。
【図8】VATの一例を示す図。
【図9】各ページの構成の一例を示す図。
【図10】メモリカードの仕様の構成の一例を示す図。
【図11】メモリ領域移動コマンドを示す図。
【図12】ガベージコレクション前後のファイル構造を示す図。
【図13】メモリカードへの書き込み処理を示すフローチャート。
【図14】メモリカードに書き込まれたファイルのリカバリ処理を示すフローチャート。
【図15】メモリカードへの書き込み処理を示すフローチャート。
【図16】メモリカードに書き込まれたファイルのリカバリ処理を示すフローチャート。
【発明を実施するための形態】
【0013】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0014】
[1]構成
図1は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
【0015】
メモリカード1は、PCB(Printed Circuit Board)基板2と、PCB基板2上に配置されたNAND型フラッシュメモリ3およびコントローラ4を有する。コントローラ4には、CPU(Central Processing Unit)8やROM(Read-Only memory)9等の機能ブロックが搭載されている。各デバイスの詳細については後述する。
【0016】
NAND型フラッシュメモリ(以下、フラッシュメモリと称する)3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、一つのメモリセルに2ビット以上の情報を記憶する多値メモリであっても良い。また、図1で例示した場合と異なり、フラッシュメモリ3およびコントローラ4は、同一のLSI(Large-scale Integration)基板上に配置されていても良い。
【0017】
図2は、ホスト機器と上記メモリカードとを含む構成を示すブロック図である。なお、図1と共通する要素には同一の符号を付している。
【0018】
ホスト機器(以下、ホストと称する)20は、挿入されるメモリカード1に対してアクセスを行うためのハードウエアおよびソフトウエア(システム)を備えている。
【0019】
メモリカード1は、ホスト20に接続された時に電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。メモリカード1は、前述したようにNAND型フラッシュメモリ3およびコントローラ4を有する。
【0020】
フラッシュメモリ3は、消去単位(ブロック)のサイズが256kBに定められている不揮発性半導体メモリであり、例えば16kB単位でデータの書き込みおよび読み出しを行う。フラッシュメモリ3は、例えば0.09μmプロセス技術を用いて製作される。すなわち、フラッシュメモリ3のデザインルールは、0.1μm未満となっている。
【0021】
コントローラ4は、フラッシュメモリ3内部の物理状態(何処の物理アドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する機能を有する。また、コントローラ4は、前述したCPU8およびROM9の他に、メモリインタフェース部5、ホストインタフェース部6、バッファ7、およびRAM(Random Access Memory)10を搭載している。
【0022】
メモリインタフェース部5は、コントローラ4とフラッシュメモリ3との間のインタフェース処理を行う。ホストインタフェース部6は、コントローラ4とホスト20との間のインタフェース処理を行う。
【0023】
バッファ7は、ホスト20から送られてくるデータをフラッシュメモリ3へ書き込む際に一定量のデータ(例えば1ページ分)を一時的に記憶したり、フラッシュメモリ3から読み出されるデータをホスト20へ送り出す際に一定量のデータを一時的に記憶したりする。
【0024】
CPU8は、メモリカード1全体の動作を司る。CPU8は、例えば、メモリカード1が電源供給を受けた際に、ROM9の中に格納されているファームウェア(後述する制御プログラム)をRAM10上にロードして所定の処理を実行する。CPU8は、制御プログラムに従って、各種のテーブル(後述)をRAM10上で作成したり、ホスト20から書き込みコマンド、読み出しコマンド、消去コマンドを受けてフラッシュメモリ3上の所定の処理を実行したり、バッファ7を通じたデータ転送処理を制御したりする。
【0025】
ROM9は、CPU8により制御される制御プログラムなどを格納する。RAM10は、CPU8の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【0026】
図3は、フラッシュメモリ(すなわち、メモリカード1内のNAND型フラッシュメモリ3)とデータ配置を示している。フラッシュメモリ3の各ページ(記録単位領域)は、2112B(512B分のデータ記憶部×4+10B分の冗長部×4+24B分の管理データ記憶部)を有しており、128ページ分が一つの消去単位(すなわち、256kB+8kB)となる。なお、以下の説明においては、便宜上、このフラッシュメモリの消去単位を256kBとする。
【0027】
また、フラッシュメモリ3は、フラッシュメモリ3への(からの)データ入出力を行うためのページバッファを備えている。このページバッファの記憶容量は、2112B(2048B+64B)である。データ書き込みなどの際、ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
【0028】
メモリカードを実用上有効な製品とするためには、図3に示したフラッシュメモリ3の記憶容量は1Gビット以上であることが望ましい。フラッシュメモリ3の記憶容量が例えば1Gビットである場合、256kBのブロックの数は、512個となる。
【0029】
また、図3においては消去単位が256kBブロックである場合を例示しているが、消去単位が例えば16kBブロックとなるように構築することも実用上有効である。この場合、各ページは528B(512B分のデータ記憶部+16B分の冗長部)を有し、32ページ分が1つの消去単位(即ち、16kB+0.5kB(ここで、kは1024))となる。
【0030】
フラッシュメモリのデータが書き込まれる領域は、保存されるデータに応じて複数の領域に区分けされている。フラッシュメモリ3は、データが書き込まれる領域として、ユーザデータ領域34と、管理データ領域31と、機密データ領域32と、保護データ領域33とを有する。
【0031】
ユーザデータ領域34は、メモリカード1を使用するユーザが自由にアクセスおよび使用することが可能な領域であり、ユーザデータを格納する。
【0032】
保護データ領域33は、重要なデータを格納し、メモリカード1に接続されたホスト20との相互認証によりホスト20の正当性が証明された場合にのみアクセスが可能となる領域である。
【0033】
管理データ領域31は、主にメモリカード1に関する管理情報を格納し、メモリカード1のセキュリティ情報やメディアIDなどのカード情報を格納する。
【0034】
機密データ領域32は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト20からはアクセス不可能な領域である。
【0035】
以下、メモリカード1およびホスト20のより詳しい構成について、説明する。
【0036】
[2]ファイルシステムについて
次に、ファイルシステムについて説明する。通常、メモリカードのNAND型フラッシュメモリはFATでフォーマットされている。本実施形態では、図4に示すように、フラッシュメモリ3の少なくとも一部の領域3aが、シーケンシャルアクセス追記型のファイルシステムでフォーマットされている。後述のように、残りの領域3bが、ランダム書き込み型のファイルシステムでフォーマットされていてもよい。
【0037】
追記型のファイルシステムは、低セクタ(書き込み領域)アドレスのセクタから高セクタアドレスのセクタに順にデータを書き込んでいく。以下、「ファイルシステムがデータを書き込むおよびデータを読み出す」と記載されていたり、これを意味する記載の場合、ファイルシステムがメモリカードのコントローラにデータの書き込みおよびデータの読み出しを指示し、コントローラが実際にフラッシュメモリにデータの書き込み、フラッシュメモリからデータを読み出すことを意味するものとする。
【0038】
追記型のファイルシステムをメモリカード1に採用することで、フラッシュメモリ3での頻繁なデータの消去、書き換えがなくなる。この結果、用途によっては効率の良いファイル書き込みおよび書き換えが期待できる。
【0039】
また、追記型ファイルシステムがメモリカード1に適用されると、ファイル書き込み時のブロック消去が不要であるため、ファイル書き込み速度が低下しない。また、シーケンシャルな書き込みであるため、引越し書き込みのような、メモリカード1の余分な処理が不要である。よって、書き込み処理の高速化が期待できる。
【0040】
シーケンシャルアクセス追記型のファイルシステムとして、例えば、ユニバーサルディスクフォーマット(UDF)がある。UDFは、DVDで採用されているファイルシステムである。UDFでは、ICB(Information Control Block)と呼ばれるアロケーションテーブル(Allocation Table)において、ファイルエントリの位置(論理セクタアドレス)が記載されている。ICBは、ファイルごとに設けられる。そして、ファイルの更新の際、このファイルのICBも書き換えられる。
【0041】
ICBの構造を図5を参照して説明する。図5に示すファイル構造は、ICBを用いると、図6に示すような構成になる。あるファイルにアクセスする際、このファイルのICBが記載されているアドレスにアクセスされる。ICBには、ファイル識別記載子によって、ファイル名およびファイルエントリのアドレスが記載されている。ファイルエントリとして、ファイル実体の位置、ファイルサイズ、ファイル属性等が記載されている。そして、ファイルエントリに記載されているファイル実体のアドレスに、目的のファイルの実際のデータが記憶されている。
【0042】
サブディレクトリが設けられている場合も同様の構造が形成される。ルートディレクトリのICB(LBA82)には、ルートディレクトリのファイルエントリのアドレス(LBA83)が記載されている。このアドレスにより特定される領域には、ルートディレクトリのディレクトリ情報が記載されている。このディレクトリ情報として、各サブディレクトリのICBのアドレス(LBA84、94)等が記載されている。
【0043】
サブディレクトリのICBには、このサブディレクトリ内のファイルの各ファイルのICBのアドレス(LBA85、95)が記載されている。そして、上記のように、ファイルのICBに記載されているアドレスにおいて、このファイルのファイルエントリが記載されており、これを参照して実際の(本当の)アドレスが特定される。
【0044】
[2−1]ファイルシステムの種類
書き込み可能なDVDの規格としては、DVD−R、DVD−RW、DVD−RAMがある。それぞれのディスクの特性に応じて、ファイルシステムが異なる。それぞれのファイルシステムについて以下に説明する。なお、これらのファイルシステムは、いずれも、シーケンシャルアクセス追記が可能である。以下、本実施形態において採用可能なファイルシステムについて説明する。
【0045】
[2−1ー1]DVD−Rタイプのファイルシステム
DVD−Rタイプのファイルシステムでは、書き込み済みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このため、DVD−Rタイプのファイルシステムでは、後述するVATによって追記によるファイルの更新、削除、追加が実現される。追記型であるDVD−Rタイプのファイルシステムは、VAT(Virtual Allocation Table)と呼ばれる変換テーブルをファイルとして持つ。
【0046】
VATには、ある仮想セクタアドレスと論理セクタアドレスとの対応関係が記載されている。あるアドレスにアクセスする際、ホスト20はVATによって仮想セクタアドレスを論理セクタアドレスに変換した上で、変換された論理セクタにアクセスする。
【0047】
そして、追記時には、ファイル実体の追記と共に、VAT中の、このファイルのICBの仮想セクタアドレスに対する論理セクタアドレスを変更することにより、実際にアクセスされる論理セクタアドレスが変更される。こうすることにより、書き込み済みのセクタデータを書き換えることなくファイルの更新が実現される。
【0048】
なお、VATが参照されるのは、ファイル識別記載子によって記載されているファイルエントリの仮想アドレスから、実際の(最新の)アドレスが求められるときである。換言すれば、ファイルエントリに記載されているファイル実体(ディレクトリ実体)のポインタ(アドレス)は、VATによって変換する必要のない、本当のアドレスである。
【0049】
また、VAT自体の更新は、VAT自体のICB(VAT ICB)を、常にメディアの書き込み済み領域の最終の領域に書き込むことによって実現される。
【0050】
図7は、DVD−Rファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示している。図7は、ファイルが1度、更新、削除、追加された際の状態を示している。
【0051】
図7に示すように、上から順に、ヴォリュームストラクチャ、ファイルセットディスクリプタ、ルートディレクトリのファイルエントリ、ルートディレクトリのデータが順次配置されている。次いで、1回目に記載されたファイル(オリジナルファイル)、すなわち追加、削除前のファイルのファイルエントリが配置されている。次に、オリジナルファイルのデータが配置されている。次に、1回目の記載時に作成されたVAT(VAT<1st>)、次に、この1回目のVATのICBが配置されている。
【0052】
次に、ボーダーイン、ボーダーアウト領域を挟んで、更新されたファイルのファイルエントリ、更新されたファイルが配置されている。そして、更新時に作製されたVAT(VAT<2nd>)、この更新時のVATのICBが配置される。これ以降は、ボーダーアウト領域を挟んで、未書き込み領域が続いている。図8は、VAT<2nd>の一例を示している。図8に示すように、仮想アドレスと論理アドレスが対応付けられている。
【0053】
ファイルのデータの読み出しの際、ファイルシステムは、最新のVAT ICBを読み出す。VAT ICBは、上記のように、常に書き込み領域の最後尾に配置しており、図7の例の場合、VAT ICB<2nd>にアクセスされる。
【0054】
ファイルシステムは、VAT ICB<2nd>に記載されている最新のVATの位置を参照の上、VATを読み出す。次に、ファイルシステムは、ファイルセットディスクリプタ−にアクセスする。この際、ファイルセットディスクリプタ−の論理アドレスは、仮想アドレス#0からVATを用いて求められる。
【0055】
次に、ファイルシステムは、ファイルセットディスクリプタ−に記載のアドレスから、ルートディレクトリのファイルエントリを読み出す。実際には、ICBを読み出し、次に、ICBに記載されているファイルエントリのアドレスにアクセスする。
【0056】
次に、ファイルシステムは、ルートディレクトリのファイルエントリに記載されている仮想アドレス#1とVATを用いて、ルートディレクトリのデータにアクセスする。次に、ファイルシステムは、ルートディレクトリのデータに記載の仮想アドレスから最新ファイルのICBにアクセスし、このICBに記載の仮想アドレス#2およびVATを用いて最新ファイルのファイルエントリにアクセスする。そして、ファイルエントリに記載のアドレスから、最新ファイルのデータが読み出される。
【0057】
フラッシュメモリにDVD−Rタイプのファイルシステムが採用された場合、通常のメモリリードによっては書き込済み領域と未書き込み領域とを判別することは困難である。
【0058】
そこで、フラッシュメモリをDVD−Rタイプのファイルシステムでフォーマットした場合、図9に示すように、各ページ11は、データ記憶部11aと冗長部11bとから構成される。そして、各ページの冗長部11bを書き込み済み情報部として用い、書き込み済み情報部にページの書き込済み/未書き込みを示すフラグが設けられる。このフラグをチェックすることで、最高位のページが「最終書き込み領域」として判別されることができる。
【0059】
このフラグ情報は冗長部11bにあるため、メモリカード1の通常のメモリリードコマンドでは、コントローラ4は、このフラグ情報を読み取ることができない。したがって、このフラグ情報に基づく書き込み済み領域の情報を読み込むためのコマンドがメモリカードインタフェース5に設置される。
【0060】
コントローラ4は、書き込み時、データとともにページにフラグを追記していく。ただし、この方法はDVD−R方式のようなシーケンシャルライト方式のみに使える。また、「最終書き込み領域」を知るためにはコントローラ4がページを検索していく必要がある。
【0061】
最終書き込み領域を効率的に検索するために、以下の手法を用いることもできる。コントローラは、フラッシュメモリのメモリ領域の検索対象を順次半分に区切りながら、フラグをチェックする。すなわち、まず、1回目の分割時の境界の直後のページの冗長部のフラグをチェックする。そして、このフラグが、未書き込みを示している場合、1回目の分割の前半の部分を次の検索対象とする。同様に、書き込み済みを示している場合、1回目の分割の後半の部分を次の検索対象とする。
【0062】
そして、新たな検索対象(1回目の分割の前半の部分または後半の部分)が分割(2回目の分割)され、この分割の境界の直後のページの冗長部のフラグがチェックされる。以上の動作が、繰り返されることにより、効率的に、最終書き込み領域を検出することができる。
【0063】
また、最終書き込み領域を認識するために、例えば管理データ領域31に「最終書き込み領域」を記憶するための専用の領域を設けても良い。この場合、コントローラ4が、「最終書き込み領域」を知るために各ページを検索していく必要がない。ただし、この専用の領域への書き込みにおいて、あるタイミングでブロック消去が必要である。
【0064】
上記のように、DVD−Rタイプのファイルシステムでは、書き込み済み領域の最終部にVAT ICBが書き込まれているため、動作の際、最終書き込み領域が検出される必要がある。本実施形態のように、ページの書き込済み/未書き込みを示すフラグが設けられることにより、コントローラ4が、最終書き込み領域を短時間で検出することができる。
【0065】
DVD−Rタイプのファイルシステムでは、上記のように、既書き込みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このような特性のため、DVD−Rタイプのファイルシステムがフラッシュメモリに適用されると、ファイル更新、追記、削除ではブロック消去は発生しない。書き込みも追記のシーケンシャルライトのみである。
【0066】
[2−1−2]DVD−RWタイプのファイルシステム
DVD−RWタイプのファイルシステムは、セクタデータ(ICBなど)を書き換えることでファイル更新、追記、削除を実現する。
【0067】
未書き込み領域があれば、ICBの書き換えとファイル実体が追記されることにより、ファイルを更新することができる。未書き込み領域がない場合は、書き込み済みの領域を書き換えるか、ファイルシステムによるメモリカードのファイルの再構成(ガベージコレクション)によって未書き込み領域を確保する必要がある。
【0068】
DVD−RWタイプのファイルシステムでは、DVD−RWの書換え可能回数が少ないため、書き換えの繰り返し等によって発生する不良セクタを補填するための代替セクタ(Sparing Area)が設けられている。そして、不良セクタが発生した場合、変換テーブル(Sparing Table)によって、不良セクタへのアクセスが代替セクタへのアクセスへと変更される。DVD−RWタイプのファイルシステムでは、このような変換メカニズムがサポートされている。なお、DVD−RWタイプのファイルシステムでは、パケット単位で代替が行われる。
【0069】
一方、通常、メモリカードでの不良セクタの管理は、コントローラで行われている。DVD−RWタイプのファイルシステムでフラッシュメモリ3内のファイルを管理した場合、コントローラ4で不良セクタを管理することが不要となり、コントローラ4の負担を軽減することができる。
【0070】
[2−1−3]DVD−RAMタイプのファイルシステム
DVD−RAMタイプのファイルシステムは、DVD−RWと同様に、セクタデータ(ICBなど)を書き換えることでファイル更新、追記、削除を実現する。その他の処理もほぼDVD−RWと同様である。ただし、DVD−RAMの書換え可能回数は10万回程度と多いため、スペアリングエリアおよびスペアリングテーブルによる不良セクタの代替手段はサポートされていない。
【0071】
フラッシュメモリの書き換え可能回数はDVD−RAMと同様に多い。また、一般に、メモリカードでの不良セクタの管理は、コントローラ4で行われている。よって、一般的には、メモリカードのファイルシステムには、DVD−RAMタイプのファイルシステムが適している。
【0072】
[2−2]ファイルシステムの設定
次に、適切なファイルシステムを設定(選択)するための基準について説明する。
【0073】
[2−2−1]容量に応じたファイルシステムの設定
用途や条件に応じて適切なファイルシステムを設定することでメモリカードを効率よく使える。以下に、適切なファイルシステムについて説明する。
【0074】
メモリカード1の容量が大きい場合、UDFのような、シーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。上述したようにUDFには3つのタイプのファイルシステムがある。容量に応じて、以下のようにファイルシステムを採用することが好ましい。
【0075】
大容量の場合は、DVD−R方式のようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
【0076】
大容量でも比較的小さい場合は、DVD−RW方式、またはDVD−RAM方式のような、すなわち書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0077】
メモリカード1の容量が小さい場合、現在使用されているFATファイルシステムを用いることが好ましい。UDF等、追記型のファイルシステムの場合、ファイルの更新を繰り返すと書き込み済みの使用不可領域が増えていく。これを整理して空き領域を確保するために、ガベージコレクションが必要である。容量が小さいと、ガベージコレクションを頻繁に行う必要があり、使い勝手が悪くなる。また、UDFの場合は管理情報の領域がFATに比べると大きくなるため、この点でも小容量のメモリカードには適していない。
【0078】
[2−2−2]用途に応じたファイルシステムの設定
ファイルサイズが小さい用途や同一ファイルの書き換えが頻繁に発生する用途(メール、文書など通常のオフィスデータファイル用途)の場合は、FATファイルシステムのようなランダム書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0079】
ファイルサイズが大きく同一ファイルの更新が少ない用途(画像、音楽、動画などのマルチメディア)には、UDFのようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
【0080】
動画を記録する用途には、DVD−R方式のような追記のみが可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0081】
音楽、静止画を記録する用途には、DVD−RW方式、またはDVD−RAM方式のような書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0082】
[2−2−3]ファイルシステムの設定方法
ファイルシステムの設定方法としては、
・ホストが自動決定
・ユーザが変更可能(デフォルトとしてはホストが適切なものを設定。)
・用途別にカードをそれぞれのフォーマットでプリフォーマットして出荷(後で再フォーマット変更も可能)
等が考えられる。
【0083】
なお、1つのメモリカード1を複数のパーティションに分け、それぞれのパーティションが用途等に応じて適したファイルシステムで管理されるようにしてもよい。例えば、管理データ領域31は、この領域に管理データブロックがあることに起因して頻繁に更新されるため、FATファイルシステムで管理されることが好ましい。
【0084】
また、保護データ領域又はユーザデータ領域に対しては、容量、用途に応じてUDFまたはFATファイルシステムを設定すれば良い。保護データ領域又はユーザデータ領域に複数領域(パーティション)を設定し、各パーティションに対して、用途に応じたファイルシステム(FAT、UDF)を設定しても良い。
【0085】
メモリカード1に異なるファイルシステムを共存させるためには、図10に示すような仕様を用いる。図10は、メモリカード1の仕様の構成を示す図である。物理レイヤ仕様201には、形状、電気的インタフェース、コマンド等が規定されている。ファイルシステム202では、複数のファイルシステム(UDF、FAT)等が共存できるように規定されている。セキュリティ203では、セキュリティに関する事項が規定されている。セキュリティ203の上位にオーディオ204a、ピクチャファイル204b、ビデオ204c、ドキュメント204d等のアプリケーションが規定されている。
【0086】
本実施形態では、ホスト20が、各パーティションにおけるファイルシステムを認識するために、例えばメモリカード1の先頭セクタにパーティションテーブルが記載される。
【0087】
パーティションテーブルには次のような情報が記載される。
【0088】
1.ブートフラグ
2.パーティションの開始セクタ情報
3.領域情報(ファイルシステム(フォーマット)情報)
4.パーティション領域情報
なお、ホスト20がフォーマット情報をメモリカード1内の専用領域に設定する場合に、メモリカード1のメモリ領域情報とともにファイルシステム情報を設定しても良い。
【0089】
[2−3]ファイルシステムに応じたメモリカード内部のメモリ制御方式
メモリカード1に複数のファイルシステムが設定されている場合、ファイルシステムに応じてフラッシュメモリ3の書き込み/読み込み処理の制御方式を変えることが好ましい。
【0090】
[2−3−1]FATの場合
FATファイルシステムの場合、これまでと同様のFATファイルシステム用のメモリ制御方式を行う。すなわち、メモリカード1は、後述の引越し書き込みやFATファイルシステム利用時に行われる特殊処理(書き込み高速化、FATキャッシュ、ディレクトリキャッシュなど)を実施する。
【0091】
<引越し書き込みについて>
引越し書き込み処理とは、フラッシュメモリにおいて書き込み済みのページへの書き込み(更新)が発生した場合に、以下のような処理を行うものである。フラッシュメモリの場合は消去はブロック単位で発生するため、このような処理が必要になる。
【0092】
1)消去されたブロック(B)をひとつ準備する。
【0093】
2)書き換え対象のページを含むブロック(A)のうち、書換え対象を除く全ての書き込み済みページのデータをブロック(B)に書き移す。
【0094】
3)書換え対象のページのデータをブロック(B)に書き込む。
【0095】
4)ブロック(A)の論理アドレスをブロック(B)の論理アドレスと置き換える。
【0096】
<FATキャッシュ、ディレクトリキャッシュについて>
FATファイルシステムでは、FATは決められた論理アドレスに存在し、またディレクトリ管理情報も一定の論理アドレス領域に存在することが多い。
【0097】
FATファイルシステムではFATやディレクトリ管理情報は頻繁に書き換えられるが、これは同じ論理アドレスへのデータ書換えが頻繁に発生することを意味する。
【0098】
フラッシュメモリでは同じアドレスへのデータ書換えは引越し書き込みを伴うためデータの更新速度が遅くなる。また、同じ物理アドレスに対する頻繁なデータ書き込みはフラッシュメモリの寿命を短くする。
【0099】
このため、所定の範囲に亘るある領域の論理アドレスのページに対して複数個の物理アドレス領域を用意しておき、この領域の論理アドレスのページへの書き込みの際、複数の物理アドレスに順次書き込んでいくことが行われる。こうすることによって、書き込み速度の低下やメモリ寿命の低下を防いでいる。この手法をFATキャッシュ、ディレクトリキャッシュと呼んでいる。
【0100】
なお、FATにはFAT16、FAT32がある。FAT16とFAT32ではFATやディレクトリのサイズや位置に違いがある。このため、メモリカード1がFAT16であるかFAT32であるかを識別し、FAT16またはFAT32に応じて、メモリカード1でのFATキャッシュ、ディレクトリキャッシュの対象となる論理アドレスの領域やキャッシュのための予備エリアサイズを変えても良い。
【0101】
[2−3−2]UDF(DVD−R、RW、RAMのファイルシステム)の場合
DVD−Rタイプのファイルシステムでは、ファイル更新、追記、削除ではブロック消去は発生せず、書き込みも追記のシーケンシャルのみである。このため、メモリカード1は、引越し書き込みやFATファイルシステムの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【0102】
DVD−RWタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。このため、ファイルシステムが、書換え時の代替セクタ管理をする必要がある。メモリカード1は、引越し書き込みやFATの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【0103】
上記のように、DVD−RWタイプのファイルシステムにおける代替メカニズムでは、パケット単位で代替が行われる。このパケットは、現在16kB程度である。この大きさは、現在のフラッシュメモリのブロック(消去単位)の大きさより非常に小さい。このため、効率の観点から、不良セクタの代替処理は、メモリカードが担うことが望ましい。
【0104】
しかしながら、フラッシュメモリのブロックの大きさが小さい場合(例えば、パケットサイズ以下)であれば、不良ブロックの代替を、ファイルシステムに任せても良い。ファイルシステムは、スペアリングエリアおよびスペアリングテーブルを用いて、不良セクタの代替を管理する。この場合、メモリカード1は、代替ブロックを確保しない。
【0105】
DVD−RAMタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。また、ファイルシステムは代替セクタ管理を行わず、従来と同様にコントローラ4が行う。メモリカード1は、引越し書き込みやFATの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【0106】
また、DVD−RWやDVD−RAMタイプのUDFでは、ヴォリュームストラクチャ(volume structure)と呼ばれる固定的な論理アドレス領域のデータ書換えが比較的頻繁に発生する。したがって、DVD−RWやDVD−RAMタイプのファイルシステムが設定されたときには、メモリカードは、この論理アドレス領域に対してFATキャッシュと同様の書換え高速化処理を行ってもよい。
【0107】
ただしFATキャッシュの場合とは、対象となる論理アドレス領域や書き換え単位や書換え頻度が異なるため、キャッシュ対象となる論理アドレス領域やキャッシュのための予備エリアサイズは変更される。
【0108】
以上のように、ファイルシステムに応じて、不要な処理や不要なメモリ領域の確保を行わないことでメモリカード1での処理時間の低下やユーザデータ領域3の減少を防ぐことができる。
【0109】
[2−3−2]コントローラによるファイルシステムの識別
ファイルシステムに応じてメモリ制御方式を変更するためには、コントローラ4がファイルシステムを認識する必要がある。以下に識別方法の実施例を示す。
【0110】
フォーマット情報(パーティションテーブルのファイルシステム情報など)によって識別する。この識別方法では、ホスト20が特別な操作をする必要はないが、コントローラ4がフォーマット情報を認識し、フォーマットの種類を知得できる必要がある。
【0111】
フラッシュメモリ3内にフォーマット情報設定領域を設け、ホスト20が識別情報を設定する。この識別方法では、メモリカード1はフォーマットデータを認識する必要がない。
【0112】
[3]メモリ領域移動コマンドについて
図11に示すように、メモリカード1とホスト20との間のインタフェースに「メモリ領域移動コマンド(データ移動コマンド)」または(および)「ブロック移動コマンド」を設けることが好ましい。これらのコマンドを利用することにより、ホスト20からの指示によるガベージコレクション、デフラグ処理を効率良く行うことができる。メモリカード1が「メモリ領域移動コマンド」により指示される処理を効率良く行う方法として、以下のものが考えられる。
【0113】
1つ目は、仮想アドレス(論理アドレス)と物理アドレスの変換テーブルを利用することである。コントローラ20は、領域移動コマンドが指示する移動後のページアドレスの記憶領域に移動対象のデータが記憶されているとホスト20が認識するように、変換テーブルを書き換える。すなわち、ホスト20に対して、データが移動された見かけ上の状態が作り出される。「メモリ領域移動コマンド」が指示するデータ移動にブロック単位のデータ移動が含まれる場合は、そのブロック単位のデータ移動については変換テーブルの変更だけを行って実際のメモリ移動を行わない。
【0114】
2つ目は、「メモリ領域移動コマンド」に対して、カード内部でフラッシュメモリのページコピーコマンドを使って、実際にデータを移動する。
【0115】
3つ目は、上記の2つの方法を組み合わせて使用する。
【0116】
また、メモリカード1とホスト20との間のインタフェースに「ブロック移動コマンド」を設けることもできる。このコマンドは、メモリカード内のデータをブロック単位で移動する旨の指示を含んでおり、メモリ領域移動コマンドの一種である。メモリカード1が「ブロック移動コマンド」により指示される処理を効率良く行う方法として、メモリ領域移動コマンドの実現と同じ3つの方法によって行うことができる。
【0117】
DVD−Rタイプのファイルシステムでは、本来、データの更新、消去は不可能であり、書き込みの際、書き込み済みの領域の後ろの連続する未書き込み領域にファイルが順次書き込まれていくような制御がなされる。このため、このファイルシステムは、書き込み済みの領域の後ろの連続する未書き込み領域を、書き込み可能な領域と認識する。
【0118】
一方、フラッシュメモリでは、データの更新、消去が可能である。このため、図12の左側に示すように、古いデータ、すなわち、最新のデータが他のブロックに書き込まれているために不要となったデータが、書き込まれているブロックが存在する場合がある。この場合、DVD−Rタイプのファイルシステムは、この古いデータが書き込まれたブロックを書き込み可能領域として認識しない。そこで、DVD−Rタイプのファイルシステムに、このようなブロックを書き込み可能領域として認識させる手法が望まれる。
【0119】
この手法としては、図12の右側に示すように、ガベージコレクションを行うことが挙げられる。すなわち、古いデータが書き込まれている領域(ゴミ領域)がブロック単位で消去され、消去されたブロック数分、有効なデータが書き込まれているブロックを上位のアドレスのブロックに移動される。この結果、未書き込み領域が増加する。
【0120】
有効データが書き込まれているブロックの移動は、ファイルシステムが行うとすると、ファイルシステムが、各ブロックのデータを読み出し、移動先のブロックに書き込むことが必要である。しかし、「ブロック移動コマンド」を設け、このコマンドを受けてメモリカード1が移動の処理を行うことにより、実際のデータの移動を行わずにメモリカード1側でのブロック論理アドレスと物理ブロックアドレスを変更するだけで論理ブロック間のデータ移動が可能になり、ガベージコレクションを効率的に行うことができる。
【0121】
「ブロック移動コマンド」を設けることにより、ホスト20はメモリカード1へのブロック移動処理の指示を簡単に行える。
【0122】
ガベージコレクションを行った場合、ホスト20のファイルシステム側でICBやVAT等の管理情報を書き換える必要があることはもちろんである。
【0123】
なお、ガベージコレクションの際、「ブロック移動コマンド」を用いてブロックが移動された場合、図12の右側に示すように、ゴミ領域がページ単位で残る場合がある。これを避けたい場合、「メモリ領域移動コマンド」を用いて、ページ単位で移動を行えばよい。なお、このページ単位での移動の際にもコントローラ4がフラッシュメモリ3の持つページコピーコマンド(フラッシュメモリ3側でページ間のコピーを行えるコマンド)を使うことで効率の良いページ間データの移動が可能である。
【0124】
また、この項目で記載した手法は、UDFのガベージコレクションに限らず、FAT等のデフラグにも応用可能である。
【0125】
「メモリ領域移動コマンド」、「ブロック移動コマンド」を用いることによって、ガベージコレクション、デフラグ処理の処理速度が向上する。
【0126】
[4]フラッシュメモリの適性に合わせたUDF仕様の追加やパラメータの定義
ファイルシステムの論理フォーマットパラメータに、セクタサイズと書き込み単位であるパケットサイズとに加えて、フラッシュメモリ3のブロック(消去単位)サイズを追加することが好ましい。こうすることによって、ファイルシステム20は、フラッシュメモリ3の消去特性に合わせたファイル管理を行うことができる。ファイルシステム20が、フラッシュメモリ3のブロックサイズを知得することにより、以下の処理が可能である。
【0127】
まず、DVD−RWタイプのファイルシステムが採用された場合、スペアリングテーブルおよびスペアリングエリアの管理は、ファイルシステムが、論理フォーマットパラメータに記録されたブロックサイズで実施することが好ましい。すなわち、効率性の観点から、スペアリングテーブルおよびスペアリングエリアの管理単位の大きさとフラッシュメモリ3のブロックの大きさとが同じであることが好ましい。こうすることによって、メモリカードが代替ブロックを確保しておく必要がなくユーザ領域が最初から少なくなることを防げる。
【0128】
また、ホスト20のユーティリティ、ファイルシステムは、ブロック単位でのガベージコレクション、デフラグを優先的に行うことが好ましい。
【0129】
ガベージコレクションやデフラグでは、書き込み済みのブロックから他のブロックへのデータ移動が頻繁に行われるが、これをブロック単位で実施することで効率的な処理が可能である。また、この際に上記の「メモリ領域移動コマンド」を使用するとさらに効率的な処理が可能である。
【0130】
また、ホスト20のファイルシステムは各ファイルのICBを1つのブロック内にまとめて記載することを優先することが好ましい。これによって、ガベージコレクションの際に発生する各ICBの書き換えに対して、書き換えが必要となるブロックの数を最低限に抑えることができる。こうすることによって、ガベージコレクション、デフラグの際のデータ移動やICBの書換え効率が向上する。
【0131】
[5]リカバリ処理について
[5−1]リカバリ処理I
リアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を以下に説明する。
【0132】
まず、ホスト20はファイル書き込みの際、以下の手順でシーケンシャルにファイルを書き込む。ファイルの書き込みの手順を図13のフローチャートを参照して説明する。
【0133】
ホスト20は、仮ファイルエントリを作成する(ステップST101)。仮ファイルエントリにおいて記載されるファイルサイズ(仮ファイルサイズ)は、書き込まれるファイルが実際に占有するであろう領域のサイズと無関係の大きさで多めに設定される。この仮ファイルサイズは、十分大きな値に設定され、例えば、空き領域の全ての容量に設定される。また、仮ファイルエントリには、ファイルの開始位置のアドレスが記載されている。
【0134】
ホスト20は、仮ファイルエントリで設定された空き領域内のファイルの開始位置から、ファイルを低位のセクタから高位のセクタへと順次シーケンシャルに書き込んでいく(ステップST102)。書き込み時、メモリカード1は、ページの冗長領域を利用して書き込み済み/未書き込みのフラグを記録しておく。
【0135】
ホスト20は、リアルタイムのストリームファイルの書き込みが終了したら(ステップST103)、実際のファイルサイズを確定する(ステップST104)。確定されたファイルサイズに基づいて、ホスト20は最終的なファイルエントリを再度書き込む(ステップST105)。DVD−R方式の場合はファイルエントリの追記とVAT ICBの追記が行われる。DVD−RAM、−RW方式の場合は仮ファイルエントリが、最終的なファイルサイズに基づいた正式なファイルエントリに書き換えられる。
【0136】
何らかの要因(バッテリー切れなどのハードウェアトラブルなど)でファイルの書き込みが完了しなかった場合、ホスト20は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図14を参照して説明する。
【0137】
ホスト20は、仮ファイルエントリを参照することにより、ファイルの開始位置を認識する(ステップST111)。
【0138】
ホスト20は、書き込み済み/未書き込みのフラグを参照することにより、書き込み済み領域の最終書き込み位置を認識する(ステップST112)。
【0139】
ホスト20は、ファイルの開始位置から最終書き込み位置までの領域をリカバリファイルのサイズとして確定する(ステップST113)。次に、ホスト20は、ステップST105と同様に、確定されたリカバリファイルのサイズに基づいて、ファイルエントリを再度書き込む(ステップST114)。
【0140】
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
【0141】
[5−2]リカバリ処理II
次に、上記のリカバリ処理を応用してFATファイルシステムの場合でのリアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を説明する。
【0142】
ホスト20はファイル書き込みの際以下の手順でファイルを書き込む。書き込み処理の手順を図15のフローチャートを参照して説明する。
【0143】
前準備として、ホスト20は、デフラグ等によって、ファイルを書き込むための連続した十分に大きい空き領域をカードに確保する(ステップST201)。予め連続した十分に大きい空き領域があれば、この処理を行わなくても良い。メモリカード1は、各クラスタに平均的に書き込みを行うために、論理アドレスと物理アドレスとの変換テーブルを変更する。空き領域の論理アドレスが連続するように変換テーブルを変更しても良い。
【0144】
ホスト20は、書き込むファイルのための仮のFATをあらかじめ書き込む(ステップST202)。この際、ホスト20は、確保された連続領域にファイルを書き込むことを想定して、書き込み領域が十分に大きな連続した領域であることを示すようなFATを予め書き込んでおく。
【0145】
ホスト20は、ファイルを低位のセクタから高位のセクタへと順次シーケンシャルに書き込んでいく(ステップST203)。ブロック消去による書き込み速度低下を防ぐため、書き込み時にFATの更新は行われない。書き込み時、メモリカード1は、書き込まれたページの冗長部に書き込み済みのフラグを記録する。
【0146】
ホスト20は、リアルタイムのストリームファイルの書き込みが終了したら(ステップST204)、ファイルサイズを確定する(ステップST205)。確定されたファイルサイズに基づいて、仮FATを最終的なFATに書き換えてファイルをクローズする(ステップST206)。
【0147】
何らかの要因(ハードウェハのトラブルなど)でファイルの書き込みが完了していなかった場合、すなわち最終的なFATの書き込みが完了しなかった場合、ホスト20は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図16を参照して説明する。
【0148】
ホスト20は、仮FATを参照することにより、ファイルのクラスタの開始位置を認識する(ステップST211)。
【0149】
ホスト20は、書き込み済み/未書き込みのフラグを参照することにより、書き込み済み領域の最終位置を認識する(ステップST212)。
【0150】
ホスト20は、ファイルのクラスタの開始位置から、ステップST212で認識された最終書き込み位置までの領域をリカバリファイルのサイズとして確定する(ステップST213)。
【0151】
ホスト20は、確定されたファイルサイズに基づいて、仮FATを正式なFATに更新する(ステップST214)。
【0152】
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
【0153】
なお、ステップST201において、事前に確保する書き込み領域は1つの大きな連続領域であることが書き込み制御の効率上は望ましい。しかしながら、1つの十分な大きさの連続領域が確保できない場合でも、複数の連続領域を確保しておき、ステップST202においてそれらの複数の連続領域に対応するFATをあらかじめ書いておき、ステップST203においてそのFATに応じた領域に順次データを書き込んでいくようにしてもよい。この場合はひとつの連続領域に比べると書き込み制御の効率は低下するが、ステップST201におけるデフラグ処理を減らせるという利点がある。
【0154】
[6]書換え不可ページの設定について
コントローラ4は、フラッシュメモリ3内に、部分的に書換え不可能な領域を設定可能とされている(SDTMカード等のメモリカードにはアドレス指定のライトプロテクトコマンドが既に定義されている)。
【0155】
ホスト20は、追記型のファイルシステムを使用する場合に、あるファイル書き込みが終了した時点で書き込み済みの領域を書換え不可能な領域としてライトプロテクトする。
【0156】
書換え不可能な領域として設定したファイルは、その後のメモリカード1によるアクセスによって削除、書換えされず復元可能である。つまり、ファイルの保全が可能である。また、保全されていない領域ではファイルの更新や追加が可能である。従来のFATファイルシステムの場合、ファイルの保全のためにFAT領域を書き換え不能に設定するとFATの更新が不可能であり、この結果、全てのファイルの更新、追加が不可能になる。このためアドレス指定のライトプロテクトの意味があまりない。
【0157】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【符号の説明】
【0158】
1…メモリカード、2…PCB基板、3…NAND型フラッシュメモリ、4…コントローラ。
【技術分野】
【0001】
本発明は、メモリカードの制御方法および不揮発性半導体メモリの制御方法に関し、特に、所定の消去ブロックサイズを有する不揮発性半導体メモリの制御方法に関する。
【背景技術】
【0002】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードのファイルシステムとして、FATファイルシステムが用いられている。このFATファイルシステムをフラッシュメモリのファイルシステムに採用した例が特開平7−141479号公報(特許文献1)に開示されている。FATファイルシステムは、ハードディスク等の、高速なランダム書き換えが可能なメディアを前提としたファイルシステムである。ランダム書込みとは、セクタ(ファイルシステムが認識する書き込み領域の単位)のアドレスによらずに、空いているセクタにランダムにデータが書き込まれる方式である。
【0003】
メモリカードに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。NAND型フラッシュメモリはブロック単位でしか消去を行えない。1つのブロックは、複数の、書き込み単位であるページを含んでいる。このため、ブロックに記憶されたデータの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、旧データ(新データに書き換えられるデータ)を含んでいる旧ブロックから、書き換えられないデータを新ブロックにコピーする必要がある。このような処理は「引越し書き込み(巻き添えコピー)」と呼ばれる。この「引越し書き込み」は書き換えられないデータのコピー動作を伴うため、「引越し書き込み」が多発すると、オーバーヘッドが非常に増大することになる。
【0004】
FATファイルシステムでは、ファイルのクラスタデータの書き換えのたびに、FATデータの書き換えが発生する。このため、NAND型フラッシュメモリを管理するファイルシステムとして、FATファイルシステムが採用された場合、クラスタデータの書き換えのたびに、「引越し書き込み」が発生し、ファイルの書き換え速度が低下する。
【0005】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平7−141479号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、効率の良い書き込みおよび読出しを行うことができるメモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供しようとするものである。
【課題を解決するための手段】
【0008】
本発明の一態様によるメモリカードは、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリと、外部からの命令に従った処理を行なうための命令を前記不揮発性半導体メモリに送信して前記不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、前記データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および前記最終書込み領域のアドレス情報を外部が読み出すための機能を有するコントローラと、を具備することを特徴とする。
【0009】
本発明の一態様による不揮発性半導体メモリの制御方法は、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、複数の前記書き込み領域の1つに記憶されているデータを複数の前記書き込み領域の他の1つに移動させる指示を含んだデータ移動コマンドを受信する工程と、データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、を具備することを特徴とする。
【0010】
本発明の一態様によるメモリカードの制御方法は、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、を具備することを特徴する
【発明の効果】
【0011】
効率の良い書き込みおよび読出しを行うことができるメモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供できる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図2】ホスト機器とメモリカードとを含む構成を示すブロック図。
【図3】フラッシュメモリのデータ配置を示す図。
【図4】フラッシュメモリをフォーマットの違いにより区分けした状態を示す図。
【図5】一般的なファイル構造を示す図。
【図6】ICBを用いて実現されるファイル構成を示す図。
【図7】DVD−Rファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示す図。
【図8】VATの一例を示す図。
【図9】各ページの構成の一例を示す図。
【図10】メモリカードの仕様の構成の一例を示す図。
【図11】メモリ領域移動コマンドを示す図。
【図12】ガベージコレクション前後のファイル構造を示す図。
【図13】メモリカードへの書き込み処理を示すフローチャート。
【図14】メモリカードに書き込まれたファイルのリカバリ処理を示すフローチャート。
【図15】メモリカードへの書き込み処理を示すフローチャート。
【図16】メモリカードに書き込まれたファイルのリカバリ処理を示すフローチャート。
【発明を実施するための形態】
【0013】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0014】
[1]構成
図1は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
【0015】
メモリカード1は、PCB(Printed Circuit Board)基板2と、PCB基板2上に配置されたNAND型フラッシュメモリ3およびコントローラ4を有する。コントローラ4には、CPU(Central Processing Unit)8やROM(Read-Only memory)9等の機能ブロックが搭載されている。各デバイスの詳細については後述する。
【0016】
NAND型フラッシュメモリ(以下、フラッシュメモリと称する)3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、一つのメモリセルに2ビット以上の情報を記憶する多値メモリであっても良い。また、図1で例示した場合と異なり、フラッシュメモリ3およびコントローラ4は、同一のLSI(Large-scale Integration)基板上に配置されていても良い。
【0017】
図2は、ホスト機器と上記メモリカードとを含む構成を示すブロック図である。なお、図1と共通する要素には同一の符号を付している。
【0018】
ホスト機器(以下、ホストと称する)20は、挿入されるメモリカード1に対してアクセスを行うためのハードウエアおよびソフトウエア(システム)を備えている。
【0019】
メモリカード1は、ホスト20に接続された時に電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。メモリカード1は、前述したようにNAND型フラッシュメモリ3およびコントローラ4を有する。
【0020】
フラッシュメモリ3は、消去単位(ブロック)のサイズが256kBに定められている不揮発性半導体メモリであり、例えば16kB単位でデータの書き込みおよび読み出しを行う。フラッシュメモリ3は、例えば0.09μmプロセス技術を用いて製作される。すなわち、フラッシュメモリ3のデザインルールは、0.1μm未満となっている。
【0021】
コントローラ4は、フラッシュメモリ3内部の物理状態(何処の物理アドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する機能を有する。また、コントローラ4は、前述したCPU8およびROM9の他に、メモリインタフェース部5、ホストインタフェース部6、バッファ7、およびRAM(Random Access Memory)10を搭載している。
【0022】
メモリインタフェース部5は、コントローラ4とフラッシュメモリ3との間のインタフェース処理を行う。ホストインタフェース部6は、コントローラ4とホスト20との間のインタフェース処理を行う。
【0023】
バッファ7は、ホスト20から送られてくるデータをフラッシュメモリ3へ書き込む際に一定量のデータ(例えば1ページ分)を一時的に記憶したり、フラッシュメモリ3から読み出されるデータをホスト20へ送り出す際に一定量のデータを一時的に記憶したりする。
【0024】
CPU8は、メモリカード1全体の動作を司る。CPU8は、例えば、メモリカード1が電源供給を受けた際に、ROM9の中に格納されているファームウェア(後述する制御プログラム)をRAM10上にロードして所定の処理を実行する。CPU8は、制御プログラムに従って、各種のテーブル(後述)をRAM10上で作成したり、ホスト20から書き込みコマンド、読み出しコマンド、消去コマンドを受けてフラッシュメモリ3上の所定の処理を実行したり、バッファ7を通じたデータ転送処理を制御したりする。
【0025】
ROM9は、CPU8により制御される制御プログラムなどを格納する。RAM10は、CPU8の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【0026】
図3は、フラッシュメモリ(すなわち、メモリカード1内のNAND型フラッシュメモリ3)とデータ配置を示している。フラッシュメモリ3の各ページ(記録単位領域)は、2112B(512B分のデータ記憶部×4+10B分の冗長部×4+24B分の管理データ記憶部)を有しており、128ページ分が一つの消去単位(すなわち、256kB+8kB)となる。なお、以下の説明においては、便宜上、このフラッシュメモリの消去単位を256kBとする。
【0027】
また、フラッシュメモリ3は、フラッシュメモリ3への(からの)データ入出力を行うためのページバッファを備えている。このページバッファの記憶容量は、2112B(2048B+64B)である。データ書き込みなどの際、ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
【0028】
メモリカードを実用上有効な製品とするためには、図3に示したフラッシュメモリ3の記憶容量は1Gビット以上であることが望ましい。フラッシュメモリ3の記憶容量が例えば1Gビットである場合、256kBのブロックの数は、512個となる。
【0029】
また、図3においては消去単位が256kBブロックである場合を例示しているが、消去単位が例えば16kBブロックとなるように構築することも実用上有効である。この場合、各ページは528B(512B分のデータ記憶部+16B分の冗長部)を有し、32ページ分が1つの消去単位(即ち、16kB+0.5kB(ここで、kは1024))となる。
【0030】
フラッシュメモリのデータが書き込まれる領域は、保存されるデータに応じて複数の領域に区分けされている。フラッシュメモリ3は、データが書き込まれる領域として、ユーザデータ領域34と、管理データ領域31と、機密データ領域32と、保護データ領域33とを有する。
【0031】
ユーザデータ領域34は、メモリカード1を使用するユーザが自由にアクセスおよび使用することが可能な領域であり、ユーザデータを格納する。
【0032】
保護データ領域33は、重要なデータを格納し、メモリカード1に接続されたホスト20との相互認証によりホスト20の正当性が証明された場合にのみアクセスが可能となる領域である。
【0033】
管理データ領域31は、主にメモリカード1に関する管理情報を格納し、メモリカード1のセキュリティ情報やメディアIDなどのカード情報を格納する。
【0034】
機密データ領域32は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト20からはアクセス不可能な領域である。
【0035】
以下、メモリカード1およびホスト20のより詳しい構成について、説明する。
【0036】
[2]ファイルシステムについて
次に、ファイルシステムについて説明する。通常、メモリカードのNAND型フラッシュメモリはFATでフォーマットされている。本実施形態では、図4に示すように、フラッシュメモリ3の少なくとも一部の領域3aが、シーケンシャルアクセス追記型のファイルシステムでフォーマットされている。後述のように、残りの領域3bが、ランダム書き込み型のファイルシステムでフォーマットされていてもよい。
【0037】
追記型のファイルシステムは、低セクタ(書き込み領域)アドレスのセクタから高セクタアドレスのセクタに順にデータを書き込んでいく。以下、「ファイルシステムがデータを書き込むおよびデータを読み出す」と記載されていたり、これを意味する記載の場合、ファイルシステムがメモリカードのコントローラにデータの書き込みおよびデータの読み出しを指示し、コントローラが実際にフラッシュメモリにデータの書き込み、フラッシュメモリからデータを読み出すことを意味するものとする。
【0038】
追記型のファイルシステムをメモリカード1に採用することで、フラッシュメモリ3での頻繁なデータの消去、書き換えがなくなる。この結果、用途によっては効率の良いファイル書き込みおよび書き換えが期待できる。
【0039】
また、追記型ファイルシステムがメモリカード1に適用されると、ファイル書き込み時のブロック消去が不要であるため、ファイル書き込み速度が低下しない。また、シーケンシャルな書き込みであるため、引越し書き込みのような、メモリカード1の余分な処理が不要である。よって、書き込み処理の高速化が期待できる。
【0040】
シーケンシャルアクセス追記型のファイルシステムとして、例えば、ユニバーサルディスクフォーマット(UDF)がある。UDFは、DVDで採用されているファイルシステムである。UDFでは、ICB(Information Control Block)と呼ばれるアロケーションテーブル(Allocation Table)において、ファイルエントリの位置(論理セクタアドレス)が記載されている。ICBは、ファイルごとに設けられる。そして、ファイルの更新の際、このファイルのICBも書き換えられる。
【0041】
ICBの構造を図5を参照して説明する。図5に示すファイル構造は、ICBを用いると、図6に示すような構成になる。あるファイルにアクセスする際、このファイルのICBが記載されているアドレスにアクセスされる。ICBには、ファイル識別記載子によって、ファイル名およびファイルエントリのアドレスが記載されている。ファイルエントリとして、ファイル実体の位置、ファイルサイズ、ファイル属性等が記載されている。そして、ファイルエントリに記載されているファイル実体のアドレスに、目的のファイルの実際のデータが記憶されている。
【0042】
サブディレクトリが設けられている場合も同様の構造が形成される。ルートディレクトリのICB(LBA82)には、ルートディレクトリのファイルエントリのアドレス(LBA83)が記載されている。このアドレスにより特定される領域には、ルートディレクトリのディレクトリ情報が記載されている。このディレクトリ情報として、各サブディレクトリのICBのアドレス(LBA84、94)等が記載されている。
【0043】
サブディレクトリのICBには、このサブディレクトリ内のファイルの各ファイルのICBのアドレス(LBA85、95)が記載されている。そして、上記のように、ファイルのICBに記載されているアドレスにおいて、このファイルのファイルエントリが記載されており、これを参照して実際の(本当の)アドレスが特定される。
【0044】
[2−1]ファイルシステムの種類
書き込み可能なDVDの規格としては、DVD−R、DVD−RW、DVD−RAMがある。それぞれのディスクの特性に応じて、ファイルシステムが異なる。それぞれのファイルシステムについて以下に説明する。なお、これらのファイルシステムは、いずれも、シーケンシャルアクセス追記が可能である。以下、本実施形態において採用可能なファイルシステムについて説明する。
【0045】
[2−1ー1]DVD−Rタイプのファイルシステム
DVD−Rタイプのファイルシステムでは、書き込み済みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このため、DVD−Rタイプのファイルシステムでは、後述するVATによって追記によるファイルの更新、削除、追加が実現される。追記型であるDVD−Rタイプのファイルシステムは、VAT(Virtual Allocation Table)と呼ばれる変換テーブルをファイルとして持つ。
【0046】
VATには、ある仮想セクタアドレスと論理セクタアドレスとの対応関係が記載されている。あるアドレスにアクセスする際、ホスト20はVATによって仮想セクタアドレスを論理セクタアドレスに変換した上で、変換された論理セクタにアクセスする。
【0047】
そして、追記時には、ファイル実体の追記と共に、VAT中の、このファイルのICBの仮想セクタアドレスに対する論理セクタアドレスを変更することにより、実際にアクセスされる論理セクタアドレスが変更される。こうすることにより、書き込み済みのセクタデータを書き換えることなくファイルの更新が実現される。
【0048】
なお、VATが参照されるのは、ファイル識別記載子によって記載されているファイルエントリの仮想アドレスから、実際の(最新の)アドレスが求められるときである。換言すれば、ファイルエントリに記載されているファイル実体(ディレクトリ実体)のポインタ(アドレス)は、VATによって変換する必要のない、本当のアドレスである。
【0049】
また、VAT自体の更新は、VAT自体のICB(VAT ICB)を、常にメディアの書き込み済み領域の最終の領域に書き込むことによって実現される。
【0050】
図7は、DVD−Rファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示している。図7は、ファイルが1度、更新、削除、追加された際の状態を示している。
【0051】
図7に示すように、上から順に、ヴォリュームストラクチャ、ファイルセットディスクリプタ、ルートディレクトリのファイルエントリ、ルートディレクトリのデータが順次配置されている。次いで、1回目に記載されたファイル(オリジナルファイル)、すなわち追加、削除前のファイルのファイルエントリが配置されている。次に、オリジナルファイルのデータが配置されている。次に、1回目の記載時に作成されたVAT(VAT<1st>)、次に、この1回目のVATのICBが配置されている。
【0052】
次に、ボーダーイン、ボーダーアウト領域を挟んで、更新されたファイルのファイルエントリ、更新されたファイルが配置されている。そして、更新時に作製されたVAT(VAT<2nd>)、この更新時のVATのICBが配置される。これ以降は、ボーダーアウト領域を挟んで、未書き込み領域が続いている。図8は、VAT<2nd>の一例を示している。図8に示すように、仮想アドレスと論理アドレスが対応付けられている。
【0053】
ファイルのデータの読み出しの際、ファイルシステムは、最新のVAT ICBを読み出す。VAT ICBは、上記のように、常に書き込み領域の最後尾に配置しており、図7の例の場合、VAT ICB<2nd>にアクセスされる。
【0054】
ファイルシステムは、VAT ICB<2nd>に記載されている最新のVATの位置を参照の上、VATを読み出す。次に、ファイルシステムは、ファイルセットディスクリプタ−にアクセスする。この際、ファイルセットディスクリプタ−の論理アドレスは、仮想アドレス#0からVATを用いて求められる。
【0055】
次に、ファイルシステムは、ファイルセットディスクリプタ−に記載のアドレスから、ルートディレクトリのファイルエントリを読み出す。実際には、ICBを読み出し、次に、ICBに記載されているファイルエントリのアドレスにアクセスする。
【0056】
次に、ファイルシステムは、ルートディレクトリのファイルエントリに記載されている仮想アドレス#1とVATを用いて、ルートディレクトリのデータにアクセスする。次に、ファイルシステムは、ルートディレクトリのデータに記載の仮想アドレスから最新ファイルのICBにアクセスし、このICBに記載の仮想アドレス#2およびVATを用いて最新ファイルのファイルエントリにアクセスする。そして、ファイルエントリに記載のアドレスから、最新ファイルのデータが読み出される。
【0057】
フラッシュメモリにDVD−Rタイプのファイルシステムが採用された場合、通常のメモリリードによっては書き込済み領域と未書き込み領域とを判別することは困難である。
【0058】
そこで、フラッシュメモリをDVD−Rタイプのファイルシステムでフォーマットした場合、図9に示すように、各ページ11は、データ記憶部11aと冗長部11bとから構成される。そして、各ページの冗長部11bを書き込み済み情報部として用い、書き込み済み情報部にページの書き込済み/未書き込みを示すフラグが設けられる。このフラグをチェックすることで、最高位のページが「最終書き込み領域」として判別されることができる。
【0059】
このフラグ情報は冗長部11bにあるため、メモリカード1の通常のメモリリードコマンドでは、コントローラ4は、このフラグ情報を読み取ることができない。したがって、このフラグ情報に基づく書き込み済み領域の情報を読み込むためのコマンドがメモリカードインタフェース5に設置される。
【0060】
コントローラ4は、書き込み時、データとともにページにフラグを追記していく。ただし、この方法はDVD−R方式のようなシーケンシャルライト方式のみに使える。また、「最終書き込み領域」を知るためにはコントローラ4がページを検索していく必要がある。
【0061】
最終書き込み領域を効率的に検索するために、以下の手法を用いることもできる。コントローラは、フラッシュメモリのメモリ領域の検索対象を順次半分に区切りながら、フラグをチェックする。すなわち、まず、1回目の分割時の境界の直後のページの冗長部のフラグをチェックする。そして、このフラグが、未書き込みを示している場合、1回目の分割の前半の部分を次の検索対象とする。同様に、書き込み済みを示している場合、1回目の分割の後半の部分を次の検索対象とする。
【0062】
そして、新たな検索対象(1回目の分割の前半の部分または後半の部分)が分割(2回目の分割)され、この分割の境界の直後のページの冗長部のフラグがチェックされる。以上の動作が、繰り返されることにより、効率的に、最終書き込み領域を検出することができる。
【0063】
また、最終書き込み領域を認識するために、例えば管理データ領域31に「最終書き込み領域」を記憶するための専用の領域を設けても良い。この場合、コントローラ4が、「最終書き込み領域」を知るために各ページを検索していく必要がない。ただし、この専用の領域への書き込みにおいて、あるタイミングでブロック消去が必要である。
【0064】
上記のように、DVD−Rタイプのファイルシステムでは、書き込み済み領域の最終部にVAT ICBが書き込まれているため、動作の際、最終書き込み領域が検出される必要がある。本実施形態のように、ページの書き込済み/未書き込みを示すフラグが設けられることにより、コントローラ4が、最終書き込み領域を短時間で検出することができる。
【0065】
DVD−Rタイプのファイルシステムでは、上記のように、既書き込みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このような特性のため、DVD−Rタイプのファイルシステムがフラッシュメモリに適用されると、ファイル更新、追記、削除ではブロック消去は発生しない。書き込みも追記のシーケンシャルライトのみである。
【0066】
[2−1−2]DVD−RWタイプのファイルシステム
DVD−RWタイプのファイルシステムは、セクタデータ(ICBなど)を書き換えることでファイル更新、追記、削除を実現する。
【0067】
未書き込み領域があれば、ICBの書き換えとファイル実体が追記されることにより、ファイルを更新することができる。未書き込み領域がない場合は、書き込み済みの領域を書き換えるか、ファイルシステムによるメモリカードのファイルの再構成(ガベージコレクション)によって未書き込み領域を確保する必要がある。
【0068】
DVD−RWタイプのファイルシステムでは、DVD−RWの書換え可能回数が少ないため、書き換えの繰り返し等によって発生する不良セクタを補填するための代替セクタ(Sparing Area)が設けられている。そして、不良セクタが発生した場合、変換テーブル(Sparing Table)によって、不良セクタへのアクセスが代替セクタへのアクセスへと変更される。DVD−RWタイプのファイルシステムでは、このような変換メカニズムがサポートされている。なお、DVD−RWタイプのファイルシステムでは、パケット単位で代替が行われる。
【0069】
一方、通常、メモリカードでの不良セクタの管理は、コントローラで行われている。DVD−RWタイプのファイルシステムでフラッシュメモリ3内のファイルを管理した場合、コントローラ4で不良セクタを管理することが不要となり、コントローラ4の負担を軽減することができる。
【0070】
[2−1−3]DVD−RAMタイプのファイルシステム
DVD−RAMタイプのファイルシステムは、DVD−RWと同様に、セクタデータ(ICBなど)を書き換えることでファイル更新、追記、削除を実現する。その他の処理もほぼDVD−RWと同様である。ただし、DVD−RAMの書換え可能回数は10万回程度と多いため、スペアリングエリアおよびスペアリングテーブルによる不良セクタの代替手段はサポートされていない。
【0071】
フラッシュメモリの書き換え可能回数はDVD−RAMと同様に多い。また、一般に、メモリカードでの不良セクタの管理は、コントローラ4で行われている。よって、一般的には、メモリカードのファイルシステムには、DVD−RAMタイプのファイルシステムが適している。
【0072】
[2−2]ファイルシステムの設定
次に、適切なファイルシステムを設定(選択)するための基準について説明する。
【0073】
[2−2−1]容量に応じたファイルシステムの設定
用途や条件に応じて適切なファイルシステムを設定することでメモリカードを効率よく使える。以下に、適切なファイルシステムについて説明する。
【0074】
メモリカード1の容量が大きい場合、UDFのような、シーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。上述したようにUDFには3つのタイプのファイルシステムがある。容量に応じて、以下のようにファイルシステムを採用することが好ましい。
【0075】
大容量の場合は、DVD−R方式のようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
【0076】
大容量でも比較的小さい場合は、DVD−RW方式、またはDVD−RAM方式のような、すなわち書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0077】
メモリカード1の容量が小さい場合、現在使用されているFATファイルシステムを用いることが好ましい。UDF等、追記型のファイルシステムの場合、ファイルの更新を繰り返すと書き込み済みの使用不可領域が増えていく。これを整理して空き領域を確保するために、ガベージコレクションが必要である。容量が小さいと、ガベージコレクションを頻繁に行う必要があり、使い勝手が悪くなる。また、UDFの場合は管理情報の領域がFATに比べると大きくなるため、この点でも小容量のメモリカードには適していない。
【0078】
[2−2−2]用途に応じたファイルシステムの設定
ファイルサイズが小さい用途や同一ファイルの書き換えが頻繁に発生する用途(メール、文書など通常のオフィスデータファイル用途)の場合は、FATファイルシステムのようなランダム書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0079】
ファイルサイズが大きく同一ファイルの更新が少ない用途(画像、音楽、動画などのマルチメディア)には、UDFのようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
【0080】
動画を記録する用途には、DVD−R方式のような追記のみが可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0081】
音楽、静止画を記録する用途には、DVD−RW方式、またはDVD−RAM方式のような書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
【0082】
[2−2−3]ファイルシステムの設定方法
ファイルシステムの設定方法としては、
・ホストが自動決定
・ユーザが変更可能(デフォルトとしてはホストが適切なものを設定。)
・用途別にカードをそれぞれのフォーマットでプリフォーマットして出荷(後で再フォーマット変更も可能)
等が考えられる。
【0083】
なお、1つのメモリカード1を複数のパーティションに分け、それぞれのパーティションが用途等に応じて適したファイルシステムで管理されるようにしてもよい。例えば、管理データ領域31は、この領域に管理データブロックがあることに起因して頻繁に更新されるため、FATファイルシステムで管理されることが好ましい。
【0084】
また、保護データ領域又はユーザデータ領域に対しては、容量、用途に応じてUDFまたはFATファイルシステムを設定すれば良い。保護データ領域又はユーザデータ領域に複数領域(パーティション)を設定し、各パーティションに対して、用途に応じたファイルシステム(FAT、UDF)を設定しても良い。
【0085】
メモリカード1に異なるファイルシステムを共存させるためには、図10に示すような仕様を用いる。図10は、メモリカード1の仕様の構成を示す図である。物理レイヤ仕様201には、形状、電気的インタフェース、コマンド等が規定されている。ファイルシステム202では、複数のファイルシステム(UDF、FAT)等が共存できるように規定されている。セキュリティ203では、セキュリティに関する事項が規定されている。セキュリティ203の上位にオーディオ204a、ピクチャファイル204b、ビデオ204c、ドキュメント204d等のアプリケーションが規定されている。
【0086】
本実施形態では、ホスト20が、各パーティションにおけるファイルシステムを認識するために、例えばメモリカード1の先頭セクタにパーティションテーブルが記載される。
【0087】
パーティションテーブルには次のような情報が記載される。
【0088】
1.ブートフラグ
2.パーティションの開始セクタ情報
3.領域情報(ファイルシステム(フォーマット)情報)
4.パーティション領域情報
なお、ホスト20がフォーマット情報をメモリカード1内の専用領域に設定する場合に、メモリカード1のメモリ領域情報とともにファイルシステム情報を設定しても良い。
【0089】
[2−3]ファイルシステムに応じたメモリカード内部のメモリ制御方式
メモリカード1に複数のファイルシステムが設定されている場合、ファイルシステムに応じてフラッシュメモリ3の書き込み/読み込み処理の制御方式を変えることが好ましい。
【0090】
[2−3−1]FATの場合
FATファイルシステムの場合、これまでと同様のFATファイルシステム用のメモリ制御方式を行う。すなわち、メモリカード1は、後述の引越し書き込みやFATファイルシステム利用時に行われる特殊処理(書き込み高速化、FATキャッシュ、ディレクトリキャッシュなど)を実施する。
【0091】
<引越し書き込みについて>
引越し書き込み処理とは、フラッシュメモリにおいて書き込み済みのページへの書き込み(更新)が発生した場合に、以下のような処理を行うものである。フラッシュメモリの場合は消去はブロック単位で発生するため、このような処理が必要になる。
【0092】
1)消去されたブロック(B)をひとつ準備する。
【0093】
2)書き換え対象のページを含むブロック(A)のうち、書換え対象を除く全ての書き込み済みページのデータをブロック(B)に書き移す。
【0094】
3)書換え対象のページのデータをブロック(B)に書き込む。
【0095】
4)ブロック(A)の論理アドレスをブロック(B)の論理アドレスと置き換える。
【0096】
<FATキャッシュ、ディレクトリキャッシュについて>
FATファイルシステムでは、FATは決められた論理アドレスに存在し、またディレクトリ管理情報も一定の論理アドレス領域に存在することが多い。
【0097】
FATファイルシステムではFATやディレクトリ管理情報は頻繁に書き換えられるが、これは同じ論理アドレスへのデータ書換えが頻繁に発生することを意味する。
【0098】
フラッシュメモリでは同じアドレスへのデータ書換えは引越し書き込みを伴うためデータの更新速度が遅くなる。また、同じ物理アドレスに対する頻繁なデータ書き込みはフラッシュメモリの寿命を短くする。
【0099】
このため、所定の範囲に亘るある領域の論理アドレスのページに対して複数個の物理アドレス領域を用意しておき、この領域の論理アドレスのページへの書き込みの際、複数の物理アドレスに順次書き込んでいくことが行われる。こうすることによって、書き込み速度の低下やメモリ寿命の低下を防いでいる。この手法をFATキャッシュ、ディレクトリキャッシュと呼んでいる。
【0100】
なお、FATにはFAT16、FAT32がある。FAT16とFAT32ではFATやディレクトリのサイズや位置に違いがある。このため、メモリカード1がFAT16であるかFAT32であるかを識別し、FAT16またはFAT32に応じて、メモリカード1でのFATキャッシュ、ディレクトリキャッシュの対象となる論理アドレスの領域やキャッシュのための予備エリアサイズを変えても良い。
【0101】
[2−3−2]UDF(DVD−R、RW、RAMのファイルシステム)の場合
DVD−Rタイプのファイルシステムでは、ファイル更新、追記、削除ではブロック消去は発生せず、書き込みも追記のシーケンシャルのみである。このため、メモリカード1は、引越し書き込みやFATファイルシステムの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【0102】
DVD−RWタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。このため、ファイルシステムが、書換え時の代替セクタ管理をする必要がある。メモリカード1は、引越し書き込みやFATの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【0103】
上記のように、DVD−RWタイプのファイルシステムにおける代替メカニズムでは、パケット単位で代替が行われる。このパケットは、現在16kB程度である。この大きさは、現在のフラッシュメモリのブロック(消去単位)の大きさより非常に小さい。このため、効率の観点から、不良セクタの代替処理は、メモリカードが担うことが望ましい。
【0104】
しかしながら、フラッシュメモリのブロックの大きさが小さい場合(例えば、パケットサイズ以下)であれば、不良ブロックの代替を、ファイルシステムに任せても良い。ファイルシステムは、スペアリングエリアおよびスペアリングテーブルを用いて、不良セクタの代替を管理する。この場合、メモリカード1は、代替ブロックを確保しない。
【0105】
DVD−RAMタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。また、ファイルシステムは代替セクタ管理を行わず、従来と同様にコントローラ4が行う。メモリカード1は、引越し書き込みやFATの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
【0106】
また、DVD−RWやDVD−RAMタイプのUDFでは、ヴォリュームストラクチャ(volume structure)と呼ばれる固定的な論理アドレス領域のデータ書換えが比較的頻繁に発生する。したがって、DVD−RWやDVD−RAMタイプのファイルシステムが設定されたときには、メモリカードは、この論理アドレス領域に対してFATキャッシュと同様の書換え高速化処理を行ってもよい。
【0107】
ただしFATキャッシュの場合とは、対象となる論理アドレス領域や書き換え単位や書換え頻度が異なるため、キャッシュ対象となる論理アドレス領域やキャッシュのための予備エリアサイズは変更される。
【0108】
以上のように、ファイルシステムに応じて、不要な処理や不要なメモリ領域の確保を行わないことでメモリカード1での処理時間の低下やユーザデータ領域3の減少を防ぐことができる。
【0109】
[2−3−2]コントローラによるファイルシステムの識別
ファイルシステムに応じてメモリ制御方式を変更するためには、コントローラ4がファイルシステムを認識する必要がある。以下に識別方法の実施例を示す。
【0110】
フォーマット情報(パーティションテーブルのファイルシステム情報など)によって識別する。この識別方法では、ホスト20が特別な操作をする必要はないが、コントローラ4がフォーマット情報を認識し、フォーマットの種類を知得できる必要がある。
【0111】
フラッシュメモリ3内にフォーマット情報設定領域を設け、ホスト20が識別情報を設定する。この識別方法では、メモリカード1はフォーマットデータを認識する必要がない。
【0112】
[3]メモリ領域移動コマンドについて
図11に示すように、メモリカード1とホスト20との間のインタフェースに「メモリ領域移動コマンド(データ移動コマンド)」または(および)「ブロック移動コマンド」を設けることが好ましい。これらのコマンドを利用することにより、ホスト20からの指示によるガベージコレクション、デフラグ処理を効率良く行うことができる。メモリカード1が「メモリ領域移動コマンド」により指示される処理を効率良く行う方法として、以下のものが考えられる。
【0113】
1つ目は、仮想アドレス(論理アドレス)と物理アドレスの変換テーブルを利用することである。コントローラ20は、領域移動コマンドが指示する移動後のページアドレスの記憶領域に移動対象のデータが記憶されているとホスト20が認識するように、変換テーブルを書き換える。すなわち、ホスト20に対して、データが移動された見かけ上の状態が作り出される。「メモリ領域移動コマンド」が指示するデータ移動にブロック単位のデータ移動が含まれる場合は、そのブロック単位のデータ移動については変換テーブルの変更だけを行って実際のメモリ移動を行わない。
【0114】
2つ目は、「メモリ領域移動コマンド」に対して、カード内部でフラッシュメモリのページコピーコマンドを使って、実際にデータを移動する。
【0115】
3つ目は、上記の2つの方法を組み合わせて使用する。
【0116】
また、メモリカード1とホスト20との間のインタフェースに「ブロック移動コマンド」を設けることもできる。このコマンドは、メモリカード内のデータをブロック単位で移動する旨の指示を含んでおり、メモリ領域移動コマンドの一種である。メモリカード1が「ブロック移動コマンド」により指示される処理を効率良く行う方法として、メモリ領域移動コマンドの実現と同じ3つの方法によって行うことができる。
【0117】
DVD−Rタイプのファイルシステムでは、本来、データの更新、消去は不可能であり、書き込みの際、書き込み済みの領域の後ろの連続する未書き込み領域にファイルが順次書き込まれていくような制御がなされる。このため、このファイルシステムは、書き込み済みの領域の後ろの連続する未書き込み領域を、書き込み可能な領域と認識する。
【0118】
一方、フラッシュメモリでは、データの更新、消去が可能である。このため、図12の左側に示すように、古いデータ、すなわち、最新のデータが他のブロックに書き込まれているために不要となったデータが、書き込まれているブロックが存在する場合がある。この場合、DVD−Rタイプのファイルシステムは、この古いデータが書き込まれたブロックを書き込み可能領域として認識しない。そこで、DVD−Rタイプのファイルシステムに、このようなブロックを書き込み可能領域として認識させる手法が望まれる。
【0119】
この手法としては、図12の右側に示すように、ガベージコレクションを行うことが挙げられる。すなわち、古いデータが書き込まれている領域(ゴミ領域)がブロック単位で消去され、消去されたブロック数分、有効なデータが書き込まれているブロックを上位のアドレスのブロックに移動される。この結果、未書き込み領域が増加する。
【0120】
有効データが書き込まれているブロックの移動は、ファイルシステムが行うとすると、ファイルシステムが、各ブロックのデータを読み出し、移動先のブロックに書き込むことが必要である。しかし、「ブロック移動コマンド」を設け、このコマンドを受けてメモリカード1が移動の処理を行うことにより、実際のデータの移動を行わずにメモリカード1側でのブロック論理アドレスと物理ブロックアドレスを変更するだけで論理ブロック間のデータ移動が可能になり、ガベージコレクションを効率的に行うことができる。
【0121】
「ブロック移動コマンド」を設けることにより、ホスト20はメモリカード1へのブロック移動処理の指示を簡単に行える。
【0122】
ガベージコレクションを行った場合、ホスト20のファイルシステム側でICBやVAT等の管理情報を書き換える必要があることはもちろんである。
【0123】
なお、ガベージコレクションの際、「ブロック移動コマンド」を用いてブロックが移動された場合、図12の右側に示すように、ゴミ領域がページ単位で残る場合がある。これを避けたい場合、「メモリ領域移動コマンド」を用いて、ページ単位で移動を行えばよい。なお、このページ単位での移動の際にもコントローラ4がフラッシュメモリ3の持つページコピーコマンド(フラッシュメモリ3側でページ間のコピーを行えるコマンド)を使うことで効率の良いページ間データの移動が可能である。
【0124】
また、この項目で記載した手法は、UDFのガベージコレクションに限らず、FAT等のデフラグにも応用可能である。
【0125】
「メモリ領域移動コマンド」、「ブロック移動コマンド」を用いることによって、ガベージコレクション、デフラグ処理の処理速度が向上する。
【0126】
[4]フラッシュメモリの適性に合わせたUDF仕様の追加やパラメータの定義
ファイルシステムの論理フォーマットパラメータに、セクタサイズと書き込み単位であるパケットサイズとに加えて、フラッシュメモリ3のブロック(消去単位)サイズを追加することが好ましい。こうすることによって、ファイルシステム20は、フラッシュメモリ3の消去特性に合わせたファイル管理を行うことができる。ファイルシステム20が、フラッシュメモリ3のブロックサイズを知得することにより、以下の処理が可能である。
【0127】
まず、DVD−RWタイプのファイルシステムが採用された場合、スペアリングテーブルおよびスペアリングエリアの管理は、ファイルシステムが、論理フォーマットパラメータに記録されたブロックサイズで実施することが好ましい。すなわち、効率性の観点から、スペアリングテーブルおよびスペアリングエリアの管理単位の大きさとフラッシュメモリ3のブロックの大きさとが同じであることが好ましい。こうすることによって、メモリカードが代替ブロックを確保しておく必要がなくユーザ領域が最初から少なくなることを防げる。
【0128】
また、ホスト20のユーティリティ、ファイルシステムは、ブロック単位でのガベージコレクション、デフラグを優先的に行うことが好ましい。
【0129】
ガベージコレクションやデフラグでは、書き込み済みのブロックから他のブロックへのデータ移動が頻繁に行われるが、これをブロック単位で実施することで効率的な処理が可能である。また、この際に上記の「メモリ領域移動コマンド」を使用するとさらに効率的な処理が可能である。
【0130】
また、ホスト20のファイルシステムは各ファイルのICBを1つのブロック内にまとめて記載することを優先することが好ましい。これによって、ガベージコレクションの際に発生する各ICBの書き換えに対して、書き換えが必要となるブロックの数を最低限に抑えることができる。こうすることによって、ガベージコレクション、デフラグの際のデータ移動やICBの書換え効率が向上する。
【0131】
[5]リカバリ処理について
[5−1]リカバリ処理I
リアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を以下に説明する。
【0132】
まず、ホスト20はファイル書き込みの際、以下の手順でシーケンシャルにファイルを書き込む。ファイルの書き込みの手順を図13のフローチャートを参照して説明する。
【0133】
ホスト20は、仮ファイルエントリを作成する(ステップST101)。仮ファイルエントリにおいて記載されるファイルサイズ(仮ファイルサイズ)は、書き込まれるファイルが実際に占有するであろう領域のサイズと無関係の大きさで多めに設定される。この仮ファイルサイズは、十分大きな値に設定され、例えば、空き領域の全ての容量に設定される。また、仮ファイルエントリには、ファイルの開始位置のアドレスが記載されている。
【0134】
ホスト20は、仮ファイルエントリで設定された空き領域内のファイルの開始位置から、ファイルを低位のセクタから高位のセクタへと順次シーケンシャルに書き込んでいく(ステップST102)。書き込み時、メモリカード1は、ページの冗長領域を利用して書き込み済み/未書き込みのフラグを記録しておく。
【0135】
ホスト20は、リアルタイムのストリームファイルの書き込みが終了したら(ステップST103)、実際のファイルサイズを確定する(ステップST104)。確定されたファイルサイズに基づいて、ホスト20は最終的なファイルエントリを再度書き込む(ステップST105)。DVD−R方式の場合はファイルエントリの追記とVAT ICBの追記が行われる。DVD−RAM、−RW方式の場合は仮ファイルエントリが、最終的なファイルサイズに基づいた正式なファイルエントリに書き換えられる。
【0136】
何らかの要因(バッテリー切れなどのハードウェアトラブルなど)でファイルの書き込みが完了しなかった場合、ホスト20は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図14を参照して説明する。
【0137】
ホスト20は、仮ファイルエントリを参照することにより、ファイルの開始位置を認識する(ステップST111)。
【0138】
ホスト20は、書き込み済み/未書き込みのフラグを参照することにより、書き込み済み領域の最終書き込み位置を認識する(ステップST112)。
【0139】
ホスト20は、ファイルの開始位置から最終書き込み位置までの領域をリカバリファイルのサイズとして確定する(ステップST113)。次に、ホスト20は、ステップST105と同様に、確定されたリカバリファイルのサイズに基づいて、ファイルエントリを再度書き込む(ステップST114)。
【0140】
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
【0141】
[5−2]リカバリ処理II
次に、上記のリカバリ処理を応用してFATファイルシステムの場合でのリアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を説明する。
【0142】
ホスト20はファイル書き込みの際以下の手順でファイルを書き込む。書き込み処理の手順を図15のフローチャートを参照して説明する。
【0143】
前準備として、ホスト20は、デフラグ等によって、ファイルを書き込むための連続した十分に大きい空き領域をカードに確保する(ステップST201)。予め連続した十分に大きい空き領域があれば、この処理を行わなくても良い。メモリカード1は、各クラスタに平均的に書き込みを行うために、論理アドレスと物理アドレスとの変換テーブルを変更する。空き領域の論理アドレスが連続するように変換テーブルを変更しても良い。
【0144】
ホスト20は、書き込むファイルのための仮のFATをあらかじめ書き込む(ステップST202)。この際、ホスト20は、確保された連続領域にファイルを書き込むことを想定して、書き込み領域が十分に大きな連続した領域であることを示すようなFATを予め書き込んでおく。
【0145】
ホスト20は、ファイルを低位のセクタから高位のセクタへと順次シーケンシャルに書き込んでいく(ステップST203)。ブロック消去による書き込み速度低下を防ぐため、書き込み時にFATの更新は行われない。書き込み時、メモリカード1は、書き込まれたページの冗長部に書き込み済みのフラグを記録する。
【0146】
ホスト20は、リアルタイムのストリームファイルの書き込みが終了したら(ステップST204)、ファイルサイズを確定する(ステップST205)。確定されたファイルサイズに基づいて、仮FATを最終的なFATに書き換えてファイルをクローズする(ステップST206)。
【0147】
何らかの要因(ハードウェハのトラブルなど)でファイルの書き込みが完了していなかった場合、すなわち最終的なFATの書き込みが完了しなかった場合、ホスト20は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図16を参照して説明する。
【0148】
ホスト20は、仮FATを参照することにより、ファイルのクラスタの開始位置を認識する(ステップST211)。
【0149】
ホスト20は、書き込み済み/未書き込みのフラグを参照することにより、書き込み済み領域の最終位置を認識する(ステップST212)。
【0150】
ホスト20は、ファイルのクラスタの開始位置から、ステップST212で認識された最終書き込み位置までの領域をリカバリファイルのサイズとして確定する(ステップST213)。
【0151】
ホスト20は、確定されたファイルサイズに基づいて、仮FATを正式なFATに更新する(ステップST214)。
【0152】
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
【0153】
なお、ステップST201において、事前に確保する書き込み領域は1つの大きな連続領域であることが書き込み制御の効率上は望ましい。しかしながら、1つの十分な大きさの連続領域が確保できない場合でも、複数の連続領域を確保しておき、ステップST202においてそれらの複数の連続領域に対応するFATをあらかじめ書いておき、ステップST203においてそのFATに応じた領域に順次データを書き込んでいくようにしてもよい。この場合はひとつの連続領域に比べると書き込み制御の効率は低下するが、ステップST201におけるデフラグ処理を減らせるという利点がある。
【0154】
[6]書換え不可ページの設定について
コントローラ4は、フラッシュメモリ3内に、部分的に書換え不可能な領域を設定可能とされている(SDTMカード等のメモリカードにはアドレス指定のライトプロテクトコマンドが既に定義されている)。
【0155】
ホスト20は、追記型のファイルシステムを使用する場合に、あるファイル書き込みが終了した時点で書き込み済みの領域を書換え不可能な領域としてライトプロテクトする。
【0156】
書換え不可能な領域として設定したファイルは、その後のメモリカード1によるアクセスによって削除、書換えされず復元可能である。つまり、ファイルの保全が可能である。また、保全されていない領域ではファイルの更新や追加が可能である。従来のFATファイルシステムの場合、ファイルの保全のためにFAT領域を書き換え不能に設定するとFATの更新が不可能であり、この結果、全てのファイルの更新、追加が不可能になる。このためアドレス指定のライトプロテクトの意味があまりない。
【0157】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【符号の説明】
【0158】
1…メモリカード、2…PCB基板、3…NAND型フラッシュメモリ、4…コントローラ。
【特許請求の範囲】
【請求項1】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリと、
外部からの命令に従った処理を行なうための命令を前記不揮発性半導体メモリに送信して前記不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、前記データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および前記最終書込み領域のアドレス情報を外部が読み出すための機能を有するコントローラと、
を具備することを特徴とするメモリカード。
【請求項2】
複数の前記書き込み領域のそれぞれが、データを記憶するデータ記憶部と書き込み済みまたは未書き込みの旨を示す書き込み済み情報部とを有し、
前記コントローラが、前記不揮発性半導体メモリへのデータの書き込み命令を受けた際に前記データ記憶部にデータを書き込みながら同じ書き込み領域内の前記書き込み済み情報部に書き込済みの旨の情報を書き込む機能を有し、
前記コントローラが前記最終書き込み領域を特定する機能が、前記書き込み済み情報を参照して書き込み済みの情報を有する複数の前記書き込み領域のうちで最高位のアドレスを特定することによって、前記最終書き込み領域を特定する機能を含む、
ことを特徴とする請求項1のメモリカード。
【請求項3】
前記不揮発性半導体メモリが、前記メモリカードのユーザがアクセス可能な第1領域と、前記メモリカードのユーザがアクセスできない第2領域とを有し、
前記コントローラが前記最終書き込み領域を特定する機能が、前記第2領域に書き込まれた前記最終書き込み領域のアドレスを読み出す機能を含む、
ことを特徴とする請求項1のメモリカード。
【請求項4】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、
複数の前記書き込み領域の1つに記憶されているデータを複数の前記書き込み領域の他の1つに移動させる指示を含んだデータ移動コマンドを受信する工程と、
データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、
を具備することを特徴とする不揮発性半導体メモリの制御方法。
【請求項5】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、
複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、
前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、
前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、
前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、
を具備することを特徴するメモリカードの制御方法。
【請求項1】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリと、
外部からの命令に従った処理を行なうための命令を前記不揮発性半導体メモリに送信して前記不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、前記データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および前記最終書込み領域のアドレス情報を外部が読み出すための機能を有するコントローラと、
を具備することを特徴とするメモリカード。
【請求項2】
複数の前記書き込み領域のそれぞれが、データを記憶するデータ記憶部と書き込み済みまたは未書き込みの旨を示す書き込み済み情報部とを有し、
前記コントローラが、前記不揮発性半導体メモリへのデータの書き込み命令を受けた際に前記データ記憶部にデータを書き込みながら同じ書き込み領域内の前記書き込み済み情報部に書き込済みの旨の情報を書き込む機能を有し、
前記コントローラが前記最終書き込み領域を特定する機能が、前記書き込み済み情報を参照して書き込み済みの情報を有する複数の前記書き込み領域のうちで最高位のアドレスを特定することによって、前記最終書き込み領域を特定する機能を含む、
ことを特徴とする請求項1のメモリカード。
【請求項3】
前記不揮発性半導体メモリが、前記メモリカードのユーザがアクセス可能な第1領域と、前記メモリカードのユーザがアクセスできない第2領域とを有し、
前記コントローラが前記最終書き込み領域を特定する機能が、前記第2領域に書き込まれた前記最終書き込み領域のアドレスを読み出す機能を含む、
ことを特徴とする請求項1のメモリカード。
【請求項4】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、
複数の前記書き込み領域の1つに記憶されているデータを複数の前記書き込み領域の他の1つに移動させる指示を含んだデータ移動コマンドを受信する工程と、
データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、
を具備することを特徴とする不揮発性半導体メモリの制御方法。
【請求項5】
複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、
複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、
前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、
前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、
前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、
を具備することを特徴するメモリカードの制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2009−199625(P2009−199625A)
【公開日】平成21年9月3日(2009.9.3)
【国際特許分類】
【出願番号】特願2009−137223(P2009−137223)
【出願日】平成21年6月8日(2009.6.8)
【分割の表示】特願2005−175246(P2005−175246)の分割
【原出願日】平成17年6月15日(2005.6.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成21年9月3日(2009.9.3)
【国際特許分類】
【出願日】平成21年6月8日(2009.6.8)
【分割の表示】特願2005−175246(P2005−175246)の分割
【原出願日】平成17年6月15日(2005.6.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]