JP2009199625A - メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法 - Google Patents

メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法 Download PDF

Info

Publication number
JP2009199625A
JP2009199625A JP2009137223A JP2009137223A JP2009199625A JP 2009199625 A JP2009199625 A JP 2009199625A JP 2009137223 A JP2009137223 A JP 2009137223A JP 2009137223 A JP2009137223 A JP 2009137223A JP 2009199625 A JP2009199625 A JP 2009199625A
Authority
JP
Japan
Prior art keywords
data
area
file
writing
memory card
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009137223A
Other languages
English (en)
Inventor
Takafumi Ito
隆文 伊藤
Hiroyuki Sakamoto
広幸 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009137223A priority Critical patent/JP2009199625A/ja
Publication of JP2009199625A publication Critical patent/JP2009199625A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Abstract

【課題】効率の良い書き込みおよび読出しを行うことができるメモリカードを提供する。
【解決手段】メモリカードは、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリ3を含んでいる。コントローラ4は、外部からの命令に従った処理を行なうための命令を不揮発性半導体メモリに送信して不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および最終書込み領域のアドレス情報を外部が読み出すための機能を有する。
【選択図】 図9

Description

本発明は、メモリカードの制御方法および不揮発性半導体メモリの制御方法に関し、特に、所定の消去ブロックサイズを有する不揮発性半導体メモリの制御方法に関する。
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードのファイルシステムとして、FATファイルシステムが用いられている。このFATファイルシステムをフラッシュメモリのファイルシステムに採用した例が特開平7−141479号公報(特許文献1)に開示されている。FATファイルシステムは、ハードディスク等の、高速なランダム書き換えが可能なメディアを前提としたファイルシステムである。ランダム書込みとは、セクタ(ファイルシステムが認識する書き込み領域の単位)のアドレスによらずに、空いているセクタにランダムにデータが書き込まれる方式である。
メモリカードに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。NAND型フラッシュメモリはブロック単位でしか消去を行えない。1つのブロックは、複数の、書き込み単位であるページを含んでいる。このため、ブロックに記憶されたデータの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、旧データ(新データに書き換えられるデータ)を含んでいる旧ブロックから、書き換えられないデータを新ブロックにコピーする必要がある。このような処理は「引越し書き込み(巻き添えコピー)」と呼ばれる。この「引越し書き込み」は書き換えられないデータのコピー動作を伴うため、「引越し書き込み」が多発すると、オーバーヘッドが非常に増大することになる。
FATファイルシステムでは、ファイルのクラスタデータの書き換えのたびに、FATデータの書き換えが発生する。このため、NAND型フラッシュメモリを管理するファイルシステムとして、FATファイルシステムが採用された場合、クラスタデータの書き換えのたびに、「引越し書き込み」が発生し、ファイルの書き換え速度が低下する。
この出願の発明に関連する先行技術文献情報としては次のものがある。
特開平7−141479号公報
本発明は、効率の良い書き込みおよび読出しを行うことができるメモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供しようとするものである。
本発明の一態様によるメモリカードは、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリと、外部からの命令に従った処理を行なうための命令を前記不揮発性半導体メモリに送信して前記不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、前記データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および前記最終書込み領域のアドレス情報を外部が読み出すための機能を有するコントローラと、を具備することを特徴とする。
本発明の一態様による不揮発性半導体メモリの制御方法は、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、複数の前記書き込み領域の1つに記憶されているデータを複数の前記書き込み領域の他の1つに移動させる指示を含んだデータ移動コマンドを受信する工程と、データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、を具備することを特徴とする。
本発明の一態様によるメモリカードの制御方法は、複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、を具備することを特徴する
効率の良い書き込みおよび読出しを行うことができるメモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法を提供できる。
本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。 ホスト機器とメモリカードとを含む構成を示すブロック図。 フラッシュメモリのデータ配置を示す図。 フラッシュメモリをフォーマットの違いにより区分けした状態を示す図。 一般的なファイル構造を示す図。 ICBを用いて実現されるファイル構成を示す図。 DVD−Rファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示す図。 VATの一例を示す図。 各ページの構成の一例を示す図。 メモリカードの仕様の構成の一例を示す図。 メモリ領域移動コマンドを示す図。 ガベージコレクション前後のファイル構造を示す図。 メモリカードへの書き込み処理を示すフローチャート。 メモリカードに書き込まれたファイルのリカバリ処理を示すフローチャート。 メモリカードへの書き込み処理を示すフローチャート。 メモリカードに書き込まれたファイルのリカバリ処理を示すフローチャート。
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
[1]構成
図1は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
メモリカード1は、PCB(Printed Circuit Board)基板2と、PCB基板2上に配置されたNAND型フラッシュメモリ3およびコントローラ4を有する。コントローラ4には、CPU(Central Processing Unit)8やROM(Read-Only memory)9等の機能ブロックが搭載されている。各デバイスの詳細については後述する。
NAND型フラッシュメモリ(以下、フラッシュメモリと称する)3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、一つのメモリセルに2ビット以上の情報を記憶する多値メモリであっても良い。また、図1で例示した場合と異なり、フラッシュメモリ3およびコントローラ4は、同一のLSI(Large-scale Integration)基板上に配置されていても良い。
図2は、ホスト機器と上記メモリカードとを含む構成を示すブロック図である。なお、図1と共通する要素には同一の符号を付している。
ホスト機器(以下、ホストと称する)20は、挿入されるメモリカード1に対してアクセスを行うためのハードウエアおよびソフトウエア(システム)を備えている。
メモリカード1は、ホスト20に接続された時に電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。メモリカード1は、前述したようにNAND型フラッシュメモリ3およびコントローラ4を有する。
フラッシュメモリ3は、消去単位(ブロック)のサイズが256kBに定められている不揮発性半導体メモリであり、例えば16kB単位でデータの書き込みおよび読み出しを行う。フラッシュメモリ3は、例えば0.09μmプロセス技術を用いて製作される。すなわち、フラッシュメモリ3のデザインルールは、0.1μm未満となっている。
コントローラ4は、フラッシュメモリ3内部の物理状態(何処の物理アドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する機能を有する。また、コントローラ4は、前述したCPU8およびROM9の他に、メモリインタフェース部5、ホストインタフェース部6、バッファ7、およびRAM(Random Access Memory)10を搭載している。
メモリインタフェース部5は、コントローラ4とフラッシュメモリ3との間のインタフェース処理を行う。ホストインタフェース部6は、コントローラ4とホスト20との間のインタフェース処理を行う。
バッファ7は、ホスト20から送られてくるデータをフラッシュメモリ3へ書き込む際に一定量のデータ(例えば1ページ分)を一時的に記憶したり、フラッシュメモリ3から読み出されるデータをホスト20へ送り出す際に一定量のデータを一時的に記憶したりする。
CPU8は、メモリカード1全体の動作を司る。CPU8は、例えば、メモリカード1が電源供給を受けた際に、ROM9の中に格納されているファームウェア(後述する制御プログラム)をRAM10上にロードして所定の処理を実行する。CPU8は、制御プログラムに従って、各種のテーブル(後述)をRAM10上で作成したり、ホスト20から書き込みコマンド、読み出しコマンド、消去コマンドを受けてフラッシュメモリ3上の所定の処理を実行したり、バッファ7を通じたデータ転送処理を制御したりする。
ROM9は、CPU8により制御される制御プログラムなどを格納する。RAM10は、CPU8の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
図3は、フラッシュメモリ(すなわち、メモリカード1内のNAND型フラッシュメモリ3)とデータ配置を示している。フラッシュメモリ3の各ページ(記録単位領域)は、2112B(512B分のデータ記憶部×4+10B分の冗長部×4+24B分の管理データ記憶部)を有しており、128ページ分が一つの消去単位(すなわち、256kB+8kB)となる。なお、以下の説明においては、便宜上、このフラッシュメモリの消去単位を256kBとする。
また、フラッシュメモリ3は、フラッシュメモリ3への(からの)データ入出力を行うためのページバッファを備えている。このページバッファの記憶容量は、2112B(2048B+64B)である。データ書き込みなどの際、ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
メモリカードを実用上有効な製品とするためには、図3に示したフラッシュメモリ3の記憶容量は1Gビット以上であることが望ましい。フラッシュメモリ3の記憶容量が例えば1Gビットである場合、256kBのブロックの数は、512個となる。
また、図3においては消去単位が256kBブロックである場合を例示しているが、消去単位が例えば16kBブロックとなるように構築することも実用上有効である。この場合、各ページは528B(512B分のデータ記憶部+16B分の冗長部)を有し、32ページ分が1つの消去単位(即ち、16kB+0.5kB(ここで、kは1024))となる。
フラッシュメモリのデータが書き込まれる領域は、保存されるデータに応じて複数の領域に区分けされている。フラッシュメモリ3は、データが書き込まれる領域として、ユーザデータ領域34と、管理データ領域31と、機密データ領域32と、保護データ領域33とを有する。
ユーザデータ領域34は、メモリカード1を使用するユーザが自由にアクセスおよび使用することが可能な領域であり、ユーザデータを格納する。
保護データ領域33は、重要なデータを格納し、メモリカード1に接続されたホスト20との相互認証によりホスト20の正当性が証明された場合にのみアクセスが可能となる領域である。
管理データ領域31は、主にメモリカード1に関する管理情報を格納し、メモリカード1のセキュリティ情報やメディアIDなどのカード情報を格納する。
機密データ領域32は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト20からはアクセス不可能な領域である。
以下、メモリカード1およびホスト20のより詳しい構成について、説明する。
[2]ファイルシステムについて
次に、ファイルシステムについて説明する。通常、メモリカードのNAND型フラッシュメモリはFATでフォーマットされている。本実施形態では、図4に示すように、フラッシュメモリ3の少なくとも一部の領域3aが、シーケンシャルアクセス追記型のファイルシステムでフォーマットされている。後述のように、残りの領域3bが、ランダム書き込み型のファイルシステムでフォーマットされていてもよい。
追記型のファイルシステムは、低セクタ(書き込み領域)アドレスのセクタから高セクタアドレスのセクタに順にデータを書き込んでいく。以下、「ファイルシステムがデータを書き込むおよびデータを読み出す」と記載されていたり、これを意味する記載の場合、ファイルシステムがメモリカードのコントローラにデータの書き込みおよびデータの読み出しを指示し、コントローラが実際にフラッシュメモリにデータの書き込み、フラッシュメモリからデータを読み出すことを意味するものとする。
追記型のファイルシステムをメモリカード1に採用することで、フラッシュメモリ3での頻繁なデータの消去、書き換えがなくなる。この結果、用途によっては効率の良いファイル書き込みおよび書き換えが期待できる。
また、追記型ファイルシステムがメモリカード1に適用されると、ファイル書き込み時のブロック消去が不要であるため、ファイル書き込み速度が低下しない。また、シーケンシャルな書き込みであるため、引越し書き込みのような、メモリカード1の余分な処理が不要である。よって、書き込み処理の高速化が期待できる。
シーケンシャルアクセス追記型のファイルシステムとして、例えば、ユニバーサルディスクフォーマット(UDF)がある。UDFは、DVDで採用されているファイルシステムである。UDFでは、ICB(Information Control Block)と呼ばれるアロケーションテーブル(Allocation Table)において、ファイルエントリの位置(論理セクタアドレス)が記載されている。ICBは、ファイルごとに設けられる。そして、ファイルの更新の際、このファイルのICBも書き換えられる。
ICBの構造を図5を参照して説明する。図5に示すファイル構造は、ICBを用いると、図6に示すような構成になる。あるファイルにアクセスする際、このファイルのICBが記載されているアドレスにアクセスされる。ICBには、ファイル識別記載子によって、ファイル名およびファイルエントリのアドレスが記載されている。ファイルエントリとして、ファイル実体の位置、ファイルサイズ、ファイル属性等が記載されている。そして、ファイルエントリに記載されているファイル実体のアドレスに、目的のファイルの実際のデータが記憶されている。
サブディレクトリが設けられている場合も同様の構造が形成される。ルートディレクトリのICB(LBA82)には、ルートディレクトリのファイルエントリのアドレス(LBA83)が記載されている。このアドレスにより特定される領域には、ルートディレクトリのディレクトリ情報が記載されている。このディレクトリ情報として、各サブディレクトリのICBのアドレス(LBA84、94)等が記載されている。
サブディレクトリのICBには、このサブディレクトリ内のファイルの各ファイルのICBのアドレス(LBA85、95)が記載されている。そして、上記のように、ファイルのICBに記載されているアドレスにおいて、このファイルのファイルエントリが記載されており、これを参照して実際の(本当の)アドレスが特定される。
[2−1]ファイルシステムの種類
書き込み可能なDVDの規格としては、DVD−R、DVD−RW、DVD−RAMがある。それぞれのディスクの特性に応じて、ファイルシステムが異なる。それぞれのファイルシステムについて以下に説明する。なお、これらのファイルシステムは、いずれも、シーケンシャルアクセス追記が可能である。以下、本実施形態において採用可能なファイルシステムについて説明する。
[2−1ー1]DVD−Rタイプのファイルシステム
DVD−Rタイプのファイルシステムでは、書き込み済みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このため、DVD−Rタイプのファイルシステムでは、後述するVATによって追記によるファイルの更新、削除、追加が実現される。追記型であるDVD−Rタイプのファイルシステムは、VAT(Virtual Allocation Table)と呼ばれる変換テーブルをファイルとして持つ。
VATには、ある仮想セクタアドレスと論理セクタアドレスとの対応関係が記載されている。あるアドレスにアクセスする際、ホスト20はVATによって仮想セクタアドレスを論理セクタアドレスに変換した上で、変換された論理セクタにアクセスする。
そして、追記時には、ファイル実体の追記と共に、VAT中の、このファイルのICBの仮想セクタアドレスに対する論理セクタアドレスを変更することにより、実際にアクセスされる論理セクタアドレスが変更される。こうすることにより、書き込み済みのセクタデータを書き換えることなくファイルの更新が実現される。
なお、VATが参照されるのは、ファイル識別記載子によって記載されているファイルエントリの仮想アドレスから、実際の(最新の)アドレスが求められるときである。換言すれば、ファイルエントリに記載されているファイル実体(ディレクトリ実体)のポインタ(アドレス)は、VATによって変換する必要のない、本当のアドレスである。
また、VAT自体の更新は、VAT自体のICB(VAT ICB)を、常にメディアの書き込み済み領域の最終の領域に書き込むことによって実現される。
図7は、DVD−Rファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示している。図7は、ファイルが1度、更新、削除、追加された際の状態を示している。
図7に示すように、上から順に、ヴォリュームストラクチャ、ファイルセットディスクリプタ、ルートディレクトリのファイルエントリ、ルートディレクトリのデータが順次配置されている。次いで、1回目に記載されたファイル(オリジナルファイル)、すなわち追加、削除前のファイルのファイルエントリが配置されている。次に、オリジナルファイルのデータが配置されている。次に、1回目の記載時に作成されたVAT(VAT<1st>)、次に、この1回目のVATのICBが配置されている。
次に、ボーダーイン、ボーダーアウト領域を挟んで、更新されたファイルのファイルエントリ、更新されたファイルが配置されている。そして、更新時に作製されたVAT(VAT<2nd>)、この更新時のVATのICBが配置される。これ以降は、ボーダーアウト領域を挟んで、未書き込み領域が続いている。図8は、VAT<2nd>の一例を示している。図8に示すように、仮想アドレスと論理アドレスが対応付けられている。
ファイルのデータの読み出しの際、ファイルシステムは、最新のVAT ICBを読み出す。VAT ICBは、上記のように、常に書き込み領域の最後尾に配置しており、図7の例の場合、VAT ICB<2nd>にアクセスされる。
ファイルシステムは、VAT ICB<2nd>に記載されている最新のVATの位置を参照の上、VATを読み出す。次に、ファイルシステムは、ファイルセットディスクリプタ−にアクセスする。この際、ファイルセットディスクリプタ−の論理アドレスは、仮想アドレス#0からVATを用いて求められる。
次に、ファイルシステムは、ファイルセットディスクリプタ−に記載のアドレスから、ルートディレクトリのファイルエントリを読み出す。実際には、ICBを読み出し、次に、ICBに記載されているファイルエントリのアドレスにアクセスする。
次に、ファイルシステムは、ルートディレクトリのファイルエントリに記載されている仮想アドレス#1とVATを用いて、ルートディレクトリのデータにアクセスする。次に、ファイルシステムは、ルートディレクトリのデータに記載の仮想アドレスから最新ファイルのICBにアクセスし、このICBに記載の仮想アドレス#2およびVATを用いて最新ファイルのファイルエントリにアクセスする。そして、ファイルエントリに記載のアドレスから、最新ファイルのデータが読み出される。
フラッシュメモリにDVD−Rタイプのファイルシステムが採用された場合、通常のメモリリードによっては書き込済み領域と未書き込み領域とを判別することは困難である。
そこで、フラッシュメモリをDVD−Rタイプのファイルシステムでフォーマットした場合、図9に示すように、各ページ11は、データ記憶部11aと冗長部11bとから構成される。そして、各ページの冗長部11bを書き込み済み情報部として用い、書き込み済み情報部にページの書き込済み/未書き込みを示すフラグが設けられる。このフラグをチェックすることで、最高位のページが「最終書き込み領域」として判別されることができる。
このフラグ情報は冗長部11bにあるため、メモリカード1の通常のメモリリードコマンドでは、コントローラ4は、このフラグ情報を読み取ることができない。したがって、このフラグ情報に基づく書き込み済み領域の情報を読み込むためのコマンドがメモリカードインタフェース5に設置される。
コントローラ4は、書き込み時、データとともにページにフラグを追記していく。ただし、この方法はDVD−R方式のようなシーケンシャルライト方式のみに使える。また、「最終書き込み領域」を知るためにはコントローラ4がページを検索していく必要がある。
最終書き込み領域を効率的に検索するために、以下の手法を用いることもできる。コントローラは、フラッシュメモリのメモリ領域の検索対象を順次半分に区切りながら、フラグをチェックする。すなわち、まず、1回目の分割時の境界の直後のページの冗長部のフラグをチェックする。そして、このフラグが、未書き込みを示している場合、1回目の分割の前半の部分を次の検索対象とする。同様に、書き込み済みを示している場合、1回目の分割の後半の部分を次の検索対象とする。
そして、新たな検索対象(1回目の分割の前半の部分または後半の部分)が分割(2回目の分割)され、この分割の境界の直後のページの冗長部のフラグがチェックされる。以上の動作が、繰り返されることにより、効率的に、最終書き込み領域を検出することができる。
また、最終書き込み領域を認識するために、例えば管理データ領域31に「最終書き込み領域」を記憶するための専用の領域を設けても良い。この場合、コントローラ4が、「最終書き込み領域」を知るために各ページを検索していく必要がない。ただし、この専用の領域への書き込みにおいて、あるタイミングでブロック消去が必要である。
上記のように、DVD−Rタイプのファイルシステムでは、書き込み済み領域の最終部にVAT ICBが書き込まれているため、動作の際、最終書き込み領域が検出される必要がある。本実施形態のように、ページの書き込済み/未書き込みを示すフラグが設けられることにより、コントローラ4が、最終書き込み領域を短時間で検出することができる。
DVD−Rタイプのファイルシステムでは、上記のように、既書き込みデータの消去、書き換えは不可能であり、書き込みも低セクタアドレスから順に書き込まれていく。このような特性のため、DVD−Rタイプのファイルシステムがフラッシュメモリに適用されると、ファイル更新、追記、削除ではブロック消去は発生しない。書き込みも追記のシーケンシャルライトのみである。
[2−1−2]DVD−RWタイプのファイルシステム
DVD−RWタイプのファイルシステムは、セクタデータ(ICBなど)を書き換えることでファイル更新、追記、削除を実現する。
未書き込み領域があれば、ICBの書き換えとファイル実体が追記されることにより、ファイルを更新することができる。未書き込み領域がない場合は、書き込み済みの領域を書き換えるか、ファイルシステムによるメモリカードのファイルの再構成(ガベージコレクション)によって未書き込み領域を確保する必要がある。
DVD−RWタイプのファイルシステムでは、DVD−RWの書換え可能回数が少ないため、書き換えの繰り返し等によって発生する不良セクタを補填するための代替セクタ(Sparing Area)が設けられている。そして、不良セクタが発生した場合、変換テーブル(Sparing Table)によって、不良セクタへのアクセスが代替セクタへのアクセスへと変更される。DVD−RWタイプのファイルシステムでは、このような変換メカニズムがサポートされている。なお、DVD−RWタイプのファイルシステムでは、パケット単位で代替が行われる。
一方、通常、メモリカードでの不良セクタの管理は、コントローラで行われている。DVD−RWタイプのファイルシステムでフラッシュメモリ3内のファイルを管理した場合、コントローラ4で不良セクタを管理することが不要となり、コントローラ4の負担を軽減することができる。
[2−1−3]DVD−RAMタイプのファイルシステム
DVD−RAMタイプのファイルシステムは、DVD−RWと同様に、セクタデータ(ICBなど)を書き換えることでファイル更新、追記、削除を実現する。その他の処理もほぼDVD−RWと同様である。ただし、DVD−RAMの書換え可能回数は10万回程度と多いため、スペアリングエリアおよびスペアリングテーブルによる不良セクタの代替手段はサポートされていない。
フラッシュメモリの書き換え可能回数はDVD−RAMと同様に多い。また、一般に、メモリカードでの不良セクタの管理は、コントローラ4で行われている。よって、一般的には、メモリカードのファイルシステムには、DVD−RAMタイプのファイルシステムが適している。
[2−2]ファイルシステムの設定
次に、適切なファイルシステムを設定(選択)するための基準について説明する。
[2−2−1]容量に応じたファイルシステムの設定
用途や条件に応じて適切なファイルシステムを設定することでメモリカードを効率よく使える。以下に、適切なファイルシステムについて説明する。
メモリカード1の容量が大きい場合、UDFのような、シーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。上述したようにUDFには3つのタイプのファイルシステムがある。容量に応じて、以下のようにファイルシステムを採用することが好ましい。
大容量の場合は、DVD−R方式のようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
大容量でも比較的小さい場合は、DVD−RW方式、またはDVD−RAM方式のような、すなわち書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
メモリカード1の容量が小さい場合、現在使用されているFATファイルシステムを用いることが好ましい。UDF等、追記型のファイルシステムの場合、ファイルの更新を繰り返すと書き込み済みの使用不可領域が増えていく。これを整理して空き領域を確保するために、ガベージコレクションが必要である。容量が小さいと、ガベージコレクションを頻繁に行う必要があり、使い勝手が悪くなる。また、UDFの場合は管理情報の領域がFATに比べると大きくなるため、この点でも小容量のメモリカードには適していない。
[2−2−2]用途に応じたファイルシステムの設定
ファイルサイズが小さい用途や同一ファイルの書き換えが頻繁に発生する用途(メール、文書など通常のオフィスデータファイル用途)の場合は、FATファイルシステムのようなランダム書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
ファイルサイズが大きく同一ファイルの更新が少ない用途(画像、音楽、動画などのマルチメディア)には、UDFのようなシーケンシャルライトメディアに対応可能なファイルシステムを採用することが好ましい。
動画を記録する用途には、DVD−R方式のような追記のみが可能なメディアを前提としたファイルシステムを採用することが好ましい。
音楽、静止画を記録する用途には、DVD−RW方式、またはDVD−RAM方式のような書換え可能なメディアを前提としたファイルシステムを採用することが好ましい。
[2−2−3]ファイルシステムの設定方法
ファイルシステムの設定方法としては、
・ホストが自動決定
・ユーザが変更可能(デフォルトとしてはホストが適切なものを設定。)
・用途別にカードをそれぞれのフォーマットでプリフォーマットして出荷(後で再フォーマット変更も可能)
等が考えられる。
なお、1つのメモリカード1を複数のパーティションに分け、それぞれのパーティションが用途等に応じて適したファイルシステムで管理されるようにしてもよい。例えば、管理データ領域31は、この領域に管理データブロックがあることに起因して頻繁に更新されるため、FATファイルシステムで管理されることが好ましい。
また、保護データ領域又はユーザデータ領域に対しては、容量、用途に応じてUDFまたはFATファイルシステムを設定すれば良い。保護データ領域又はユーザデータ領域に複数領域(パーティション)を設定し、各パーティションに対して、用途に応じたファイルシステム(FAT、UDF)を設定しても良い。
メモリカード1に異なるファイルシステムを共存させるためには、図10に示すような仕様を用いる。図10は、メモリカード1の仕様の構成を示す図である。物理レイヤ仕様201には、形状、電気的インタフェース、コマンド等が規定されている。ファイルシステム202では、複数のファイルシステム(UDF、FAT)等が共存できるように規定されている。セキュリティ203では、セキュリティに関する事項が規定されている。セキュリティ203の上位にオーディオ204a、ピクチャファイル204b、ビデオ204c、ドキュメント204d等のアプリケーションが規定されている。
本実施形態では、ホスト20が、各パーティションにおけるファイルシステムを認識するために、例えばメモリカード1の先頭セクタにパーティションテーブルが記載される。
パーティションテーブルには次のような情報が記載される。
1.ブートフラグ
2.パーティションの開始セクタ情報
3.領域情報(ファイルシステム(フォーマット)情報)
4.パーティション領域情報
なお、ホスト20がフォーマット情報をメモリカード1内の専用領域に設定する場合に、メモリカード1のメモリ領域情報とともにファイルシステム情報を設定しても良い。
[2−3]ファイルシステムに応じたメモリカード内部のメモリ制御方式
メモリカード1に複数のファイルシステムが設定されている場合、ファイルシステムに応じてフラッシュメモリ3の書き込み/読み込み処理の制御方式を変えることが好ましい。
[2−3−1]FATの場合
FATファイルシステムの場合、これまでと同様のFATファイルシステム用のメモリ制御方式を行う。すなわち、メモリカード1は、後述の引越し書き込みやFATファイルシステム利用時に行われる特殊処理(書き込み高速化、FATキャッシュ、ディレクトリキャッシュなど)を実施する。
<引越し書き込みについて>
引越し書き込み処理とは、フラッシュメモリにおいて書き込み済みのページへの書き込み(更新)が発生した場合に、以下のような処理を行うものである。フラッシュメモリの場合は消去はブロック単位で発生するため、このような処理が必要になる。
1)消去されたブロック(B)をひとつ準備する。
2)書き換え対象のページを含むブロック(A)のうち、書換え対象を除く全ての書き込み済みページのデータをブロック(B)に書き移す。
3)書換え対象のページのデータをブロック(B)に書き込む。
4)ブロック(A)の論理アドレスをブロック(B)の論理アドレスと置き換える。
<FATキャッシュ、ディレクトリキャッシュについて>
FATファイルシステムでは、FATは決められた論理アドレスに存在し、またディレクトリ管理情報も一定の論理アドレス領域に存在することが多い。
FATファイルシステムではFATやディレクトリ管理情報は頻繁に書き換えられるが、これは同じ論理アドレスへのデータ書換えが頻繁に発生することを意味する。
フラッシュメモリでは同じアドレスへのデータ書換えは引越し書き込みを伴うためデータの更新速度が遅くなる。また、同じ物理アドレスに対する頻繁なデータ書き込みはフラッシュメモリの寿命を短くする。
このため、所定の範囲に亘るある領域の論理アドレスのページに対して複数個の物理アドレス領域を用意しておき、この領域の論理アドレスのページへの書き込みの際、複数の物理アドレスに順次書き込んでいくことが行われる。こうすることによって、書き込み速度の低下やメモリ寿命の低下を防いでいる。この手法をFATキャッシュ、ディレクトリキャッシュと呼んでいる。
なお、FATにはFAT16、FAT32がある。FAT16とFAT32ではFATやディレクトリのサイズや位置に違いがある。このため、メモリカード1がFAT16であるかFAT32であるかを識別し、FAT16またはFAT32に応じて、メモリカード1でのFATキャッシュ、ディレクトリキャッシュの対象となる論理アドレスの領域やキャッシュのための予備エリアサイズを変えても良い。
[2−3−2]UDF(DVD−R、RW、RAMのファイルシステム)の場合
DVD−Rタイプのファイルシステムでは、ファイル更新、追記、削除ではブロック消去は発生せず、書き込みも追記のシーケンシャルのみである。このため、メモリカード1は、引越し書き込みやFATファイルシステムの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
DVD−RWタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。このため、ファイルシステムが、書換え時の代替セクタ管理をする必要がある。メモリカード1は、引越し書き込みやFATの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
上記のように、DVD−RWタイプのファイルシステムにおける代替メカニズムでは、パケット単位で代替が行われる。このパケットは、現在16kB程度である。この大きさは、現在のフラッシュメモリのブロック(消去単位)の大きさより非常に小さい。このため、効率の観点から、不良セクタの代替処理は、メモリカードが担うことが望ましい。
しかしながら、フラッシュメモリのブロックの大きさが小さい場合(例えば、パケットサイズ以下)であれば、不良ブロックの代替を、ファイルシステムに任せても良い。ファイルシステムは、スペアリングエリアおよびスペアリングテーブルを用いて、不良セクタの代替を管理する。この場合、メモリカード1は、代替ブロックを確保しない。
DVD−RAMタイプのファイルシステムでは、ファイル更新、追記、削除でブロック消去が発生する。また、ファイルシステムは代替セクタ管理を行わず、従来と同様にコントローラ4が行う。メモリカード1は、引越し書き込みやFATの場合に行うような特殊処理を実施せず、特殊処理のために必要なメモリ領域を確保しない。
また、DVD−RWやDVD−RAMタイプのUDFでは、ヴォリュームストラクチャ(volume structure)と呼ばれる固定的な論理アドレス領域のデータ書換えが比較的頻繁に発生する。したがって、DVD−RWやDVD−RAMタイプのファイルシステムが設定されたときには、メモリカードは、この論理アドレス領域に対してFATキャッシュと同様の書換え高速化処理を行ってもよい。
ただしFATキャッシュの場合とは、対象となる論理アドレス領域や書き換え単位や書換え頻度が異なるため、キャッシュ対象となる論理アドレス領域やキャッシュのための予備エリアサイズは変更される。
以上のように、ファイルシステムに応じて、不要な処理や不要なメモリ領域の確保を行わないことでメモリカード1での処理時間の低下やユーザデータ領域3の減少を防ぐことができる。
[2−3−2]コントローラによるファイルシステムの識別
ファイルシステムに応じてメモリ制御方式を変更するためには、コントローラ4がファイルシステムを認識する必要がある。以下に識別方法の実施例を示す。
フォーマット情報(パーティションテーブルのファイルシステム情報など)によって識別する。この識別方法では、ホスト20が特別な操作をする必要はないが、コントローラ4がフォーマット情報を認識し、フォーマットの種類を知得できる必要がある。
フラッシュメモリ3内にフォーマット情報設定領域を設け、ホスト20が識別情報を設定する。この識別方法では、メモリカード1はフォーマットデータを認識する必要がない。
[3]メモリ領域移動コマンドについて
図11に示すように、メモリカード1とホスト20との間のインタフェースに「メモリ領域移動コマンド(データ移動コマンド)」または(および)「ブロック移動コマンド」を設けることが好ましい。これらのコマンドを利用することにより、ホスト20からの指示によるガベージコレクション、デフラグ処理を効率良く行うことができる。メモリカード1が「メモリ領域移動コマンド」により指示される処理を効率良く行う方法として、以下のものが考えられる。
1つ目は、仮想アドレス(論理アドレス)と物理アドレスの変換テーブルを利用することである。コントローラ20は、領域移動コマンドが指示する移動後のページアドレスの記憶領域に移動対象のデータが記憶されているとホスト20が認識するように、変換テーブルを書き換える。すなわち、ホスト20に対して、データが移動された見かけ上の状態が作り出される。「メモリ領域移動コマンド」が指示するデータ移動にブロック単位のデータ移動が含まれる場合は、そのブロック単位のデータ移動については変換テーブルの変更だけを行って実際のメモリ移動を行わない。
2つ目は、「メモリ領域移動コマンド」に対して、カード内部でフラッシュメモリのページコピーコマンドを使って、実際にデータを移動する。
3つ目は、上記の2つの方法を組み合わせて使用する。
また、メモリカード1とホスト20との間のインタフェースに「ブロック移動コマンド」を設けることもできる。このコマンドは、メモリカード内のデータをブロック単位で移動する旨の指示を含んでおり、メモリ領域移動コマンドの一種である。メモリカード1が「ブロック移動コマンド」により指示される処理を効率良く行う方法として、メモリ領域移動コマンドの実現と同じ3つの方法によって行うことができる。
DVD−Rタイプのファイルシステムでは、本来、データの更新、消去は不可能であり、書き込みの際、書き込み済みの領域の後ろの連続する未書き込み領域にファイルが順次書き込まれていくような制御がなされる。このため、このファイルシステムは、書き込み済みの領域の後ろの連続する未書き込み領域を、書き込み可能な領域と認識する。
一方、フラッシュメモリでは、データの更新、消去が可能である。このため、図12の左側に示すように、古いデータ、すなわち、最新のデータが他のブロックに書き込まれているために不要となったデータが、書き込まれているブロックが存在する場合がある。この場合、DVD−Rタイプのファイルシステムは、この古いデータが書き込まれたブロックを書き込み可能領域として認識しない。そこで、DVD−Rタイプのファイルシステムに、このようなブロックを書き込み可能領域として認識させる手法が望まれる。
この手法としては、図12の右側に示すように、ガベージコレクションを行うことが挙げられる。すなわち、古いデータが書き込まれている領域(ゴミ領域)がブロック単位で消去され、消去されたブロック数分、有効なデータが書き込まれているブロックを上位のアドレスのブロックに移動される。この結果、未書き込み領域が増加する。
有効データが書き込まれているブロックの移動は、ファイルシステムが行うとすると、ファイルシステムが、各ブロックのデータを読み出し、移動先のブロックに書き込むことが必要である。しかし、「ブロック移動コマンド」を設け、このコマンドを受けてメモリカード1が移動の処理を行うことにより、実際のデータの移動を行わずにメモリカード1側でのブロック論理アドレスと物理ブロックアドレスを変更するだけで論理ブロック間のデータ移動が可能になり、ガベージコレクションを効率的に行うことができる。
「ブロック移動コマンド」を設けることにより、ホスト20はメモリカード1へのブロック移動処理の指示を簡単に行える。
ガベージコレクションを行った場合、ホスト20のファイルシステム側でICBやVAT等の管理情報を書き換える必要があることはもちろんである。
なお、ガベージコレクションの際、「ブロック移動コマンド」を用いてブロックが移動された場合、図12の右側に示すように、ゴミ領域がページ単位で残る場合がある。これを避けたい場合、「メモリ領域移動コマンド」を用いて、ページ単位で移動を行えばよい。なお、このページ単位での移動の際にもコントローラ4がフラッシュメモリ3の持つページコピーコマンド(フラッシュメモリ3側でページ間のコピーを行えるコマンド)を使うことで効率の良いページ間データの移動が可能である。
また、この項目で記載した手法は、UDFのガベージコレクションに限らず、FAT等のデフラグにも応用可能である。
「メモリ領域移動コマンド」、「ブロック移動コマンド」を用いることによって、ガベージコレクション、デフラグ処理の処理速度が向上する。
[4]フラッシュメモリの適性に合わせたUDF仕様の追加やパラメータの定義
ファイルシステムの論理フォーマットパラメータに、セクタサイズと書き込み単位であるパケットサイズとに加えて、フラッシュメモリ3のブロック(消去単位)サイズを追加することが好ましい。こうすることによって、ファイルシステム20は、フラッシュメモリ3の消去特性に合わせたファイル管理を行うことができる。ファイルシステム20が、フラッシュメモリ3のブロックサイズを知得することにより、以下の処理が可能である。
まず、DVD−RWタイプのファイルシステムが採用された場合、スペアリングテーブルおよびスペアリングエリアの管理は、ファイルシステムが、論理フォーマットパラメータに記録されたブロックサイズで実施することが好ましい。すなわち、効率性の観点から、スペアリングテーブルおよびスペアリングエリアの管理単位の大きさとフラッシュメモリ3のブロックの大きさとが同じであることが好ましい。こうすることによって、メモリカードが代替ブロックを確保しておく必要がなくユーザ領域が最初から少なくなることを防げる。
また、ホスト20のユーティリティ、ファイルシステムは、ブロック単位でのガベージコレクション、デフラグを優先的に行うことが好ましい。
ガベージコレクションやデフラグでは、書き込み済みのブロックから他のブロックへのデータ移動が頻繁に行われるが、これをブロック単位で実施することで効率的な処理が可能である。また、この際に上記の「メモリ領域移動コマンド」を使用するとさらに効率的な処理が可能である。
また、ホスト20のファイルシステムは各ファイルのICBを1つのブロック内にまとめて記載することを優先することが好ましい。これによって、ガベージコレクションの際に発生する各ICBの書き換えに対して、書き換えが必要となるブロックの数を最低限に抑えることができる。こうすることによって、ガベージコレクション、デフラグの際のデータ移動やICBの書換え効率が向上する。
[5]リカバリ処理について
[5−1]リカバリ処理I
リアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を以下に説明する。
まず、ホスト20はファイル書き込みの際、以下の手順でシーケンシャルにファイルを書き込む。ファイルの書き込みの手順を図13のフローチャートを参照して説明する。
ホスト20は、仮ファイルエントリを作成する(ステップST101)。仮ファイルエントリにおいて記載されるファイルサイズ(仮ファイルサイズ)は、書き込まれるファイルが実際に占有するであろう領域のサイズと無関係の大きさで多めに設定される。この仮ファイルサイズは、十分大きな値に設定され、例えば、空き領域の全ての容量に設定される。また、仮ファイルエントリには、ファイルの開始位置のアドレスが記載されている。
ホスト20は、仮ファイルエントリで設定された空き領域内のファイルの開始位置から、ファイルを低位のセクタから高位のセクタへと順次シーケンシャルに書き込んでいく(ステップST102)。書き込み時、メモリカード1は、ページの冗長領域を利用して書き込み済み/未書き込みのフラグを記録しておく。
ホスト20は、リアルタイムのストリームファイルの書き込みが終了したら(ステップST103)、実際のファイルサイズを確定する(ステップST104)。確定されたファイルサイズに基づいて、ホスト20は最終的なファイルエントリを再度書き込む(ステップST105)。DVD−R方式の場合はファイルエントリの追記とVAT ICBの追記が行われる。DVD−RAM、−RW方式の場合は仮ファイルエントリが、最終的なファイルサイズに基づいた正式なファイルエントリに書き換えられる。
何らかの要因(バッテリー切れなどのハードウェアトラブルなど)でファイルの書き込みが完了しなかった場合、ホスト20は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図14を参照して説明する。
ホスト20は、仮ファイルエントリを参照することにより、ファイルの開始位置を認識する(ステップST111)。
ホスト20は、書き込み済み/未書き込みのフラグを参照することにより、書き込み済み領域の最終書き込み位置を認識する(ステップST112)。
ホスト20は、ファイルの開始位置から最終書き込み位置までの領域をリカバリファイルのサイズとして確定する(ステップST113)。次に、ホスト20は、ステップST105と同様に、確定されたリカバリファイルのサイズに基づいて、ファイルエントリを再度書き込む(ステップST114)。
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
[5−2]リカバリ処理II
次に、上記のリカバリ処理を応用してFATファイルシステムの場合でのリアルタイムのストリームファイルの書き込みが完了しなかった場合のファイルのリカバリ方法を説明する。
ホスト20はファイル書き込みの際以下の手順でファイルを書き込む。書き込み処理の手順を図15のフローチャートを参照して説明する。
前準備として、ホスト20は、デフラグ等によって、ファイルを書き込むための連続した十分に大きい空き領域をカードに確保する(ステップST201)。予め連続した十分に大きい空き領域があれば、この処理を行わなくても良い。メモリカード1は、各クラスタに平均的に書き込みを行うために、論理アドレスと物理アドレスとの変換テーブルを変更する。空き領域の論理アドレスが連続するように変換テーブルを変更しても良い。
ホスト20は、書き込むファイルのための仮のFATをあらかじめ書き込む(ステップST202)。この際、ホスト20は、確保された連続領域にファイルを書き込むことを想定して、書き込み領域が十分に大きな連続した領域であることを示すようなFATを予め書き込んでおく。
ホスト20は、ファイルを低位のセクタから高位のセクタへと順次シーケンシャルに書き込んでいく(ステップST203)。ブロック消去による書き込み速度低下を防ぐため、書き込み時にFATの更新は行われない。書き込み時、メモリカード1は、書き込まれたページの冗長部に書き込み済みのフラグを記録する。
ホスト20は、リアルタイムのストリームファイルの書き込みが終了したら(ステップST204)、ファイルサイズを確定する(ステップST205)。確定されたファイルサイズに基づいて、仮FATを最終的なFATに書き換えてファイルをクローズする(ステップST206)。
何らかの要因(ハードウェハのトラブルなど)でファイルの書き込みが完了していなかった場合、すなわち最終的なFATの書き込みが完了しなかった場合、ホスト20は以下の手順でファイルのリカバリを行う。リカバリ処理の手順を図16を参照して説明する。
ホスト20は、仮FATを参照することにより、ファイルのクラスタの開始位置を認識する(ステップST211)。
ホスト20は、書き込み済み/未書き込みのフラグを参照することにより、書き込み済み領域の最終位置を認識する(ステップST212)。
ホスト20は、ファイルのクラスタの開始位置から、ステップST212で認識された最終書き込み位置までの領域をリカバリファイルのサイズとして確定する(ステップST213)。
ホスト20は、確定されたファイルサイズに基づいて、仮FATを正式なFATに更新する(ステップST214)。
このような書き込み処理およびリカバリ処理によって、ストリームファイルの書き込みが完了せず、ファイル構造が不完全になった場合でも記録した位置までのファイルのリカバリが可能である。リアルタイムのストリームファイル書き込みが行われる例として、ビデオカメラによる動画撮影などが挙げられる。
なお、ステップST201において、事前に確保する書き込み領域は1つの大きな連続領域であることが書き込み制御の効率上は望ましい。しかしながら、1つの十分な大きさの連続領域が確保できない場合でも、複数の連続領域を確保しておき、ステップST202においてそれらの複数の連続領域に対応するFATをあらかじめ書いておき、ステップST203においてそのFATに応じた領域に順次データを書き込んでいくようにしてもよい。この場合はひとつの連続領域に比べると書き込み制御の効率は低下するが、ステップST201におけるデフラグ処理を減らせるという利点がある。
[6]書換え不可ページの設定について
コントローラ4は、フラッシュメモリ3内に、部分的に書換え不可能な領域を設定可能とされている(SDTMカード等のメモリカードにはアドレス指定のライトプロテクトコマンドが既に定義されている)。
ホスト20は、追記型のファイルシステムを使用する場合に、あるファイル書き込みが終了した時点で書き込み済みの領域を書換え不可能な領域としてライトプロテクトする。
書換え不可能な領域として設定したファイルは、その後のメモリカード1によるアクセスによって削除、書換えされず復元可能である。つまり、ファイルの保全が可能である。また、保全されていない領域ではファイルの更新や追加が可能である。従来のFATファイルシステムの場合、ファイルの保全のためにFAT領域を書き換え不能に設定するとFATの更新が不可能であり、この結果、全てのファイルの更新、追加が不可能になる。このためアドレス指定のライトプロテクトの意味があまりない。
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
1…メモリカード、2…PCB基板、3…NAND型フラッシュメモリ、4…コントローラ。

Claims (5)

  1. 複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリと、
    外部からの命令に従った処理を行なうための命令を前記不揮発性半導体メモリに送信して前記不揮発性半導体メモリを制御し、外部からアドレスが増加する方向に沿ったデータ書き込み命令を受け付け、前記データ書き込み命令に対する書き込み時の最終書込み領域を特定する機能および前記最終書込み領域のアドレス情報を外部が読み出すための機能を有するコントローラと、
    を具備することを特徴とするメモリカード。
  2. 複数の前記書き込み領域のそれぞれが、データを記憶するデータ記憶部と書き込み済みまたは未書き込みの旨を示す書き込み済み情報部とを有し、
    前記コントローラが、前記不揮発性半導体メモリへのデータの書き込み命令を受けた際に前記データ記憶部にデータを書き込みながら同じ書き込み領域内の前記書き込み済み情報部に書き込済みの旨の情報を書き込む機能を有し、
    前記コントローラが前記最終書き込み領域を特定する機能が、前記書き込み済み情報を参照して書き込み済みの情報を有する複数の前記書き込み領域のうちで最高位のアドレスを特定することによって、前記最終書き込み領域を特定する機能を含む、
    ことを特徴とする請求項1のメモリカード。
  3. 前記不揮発性半導体メモリが、前記メモリカードのユーザがアクセス可能な第1領域と、前記メモリカードのユーザがアクセスできない第2領域とを有し、
    前記コントローラが前記最終書き込み領域を特定する機能が、前記第2領域に書き込まれた前記最終書き込み領域のアドレスを読み出す機能を含む、
    ことを特徴とする請求項1のメモリカード。
  4. 複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリの制御方法であって、
    複数の前記書き込み領域の1つに記憶されているデータを複数の前記書き込み領域の他の1つに移動させる指示を含んだデータ移動コマンドを受信する工程と、
    データコピーコマンドおよび記憶領域消去コマンドを用いて実際に前記データを移動することと、前記データ移動コマンドにより指示されるデータの移動を、実際にデータを記憶する前記書き込み領域のアドレスと移動後のデータを記憶するアドレスとの変換テーブルを用いて前記データ移動コマンドの発行主体に対する見かけ上データを移動することと、の少なくとも一方によって前記データ移動コマンドにより指示される処理を実行する工程と、
    を具備することを特徴とする不揮発性半導体メモリの制御方法。
  5. 複数の書き込み領域から記憶領域が構成される不揮発性半導体メモリを含むメモリカードの制御方法であって、
    複数の前記書き込み領域の少なくとも空いている一部である確保領域のサイズと、前記確保領域の開始位置と、が記載された仮ファイルエントリを作成する工程と、
    前記確保領域中に、前記開始位置から複数のデータからなるファイルを書き込む工程と、
    前記ファイルの書き込みが正常終了した場合、書き込まれた前記ファイルのサイズを決定する工程と、
    前記仮ファイルエントリを、前記開始位置と前記ファイルのサイズとが記載されたファイルエントリに書き換える工程と、
    を具備することを特徴するメモリカードの制御方法。
JP2009137223A 2004-06-21 2009-06-08 メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法 Pending JP2009199625A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009137223A JP2009199625A (ja) 2004-06-21 2009-06-08 メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004182866 2004-06-21
JP2009137223A JP2009199625A (ja) 2004-06-21 2009-06-08 メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005175246A Division JP2006040264A (ja) 2004-06-21 2005-06-15 メモリカードの制御方法および不揮発性半導体メモリの制御方法

Publications (1)

Publication Number Publication Date
JP2009199625A true JP2009199625A (ja) 2009-09-03

Family

ID=35159716

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009137223A Pending JP2009199625A (ja) 2004-06-21 2009-06-08 メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法

Country Status (3)

Country Link
US (3) US20070043924A1 (ja)
JP (1) JP2009199625A (ja)
WO (1) WO2005124530A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011138221A (ja) * 2009-12-25 2011-07-14 Toshiba Corp 半導体装置及びメモリシステム
JP5481493B2 (ja) * 2009-11-11 2014-04-23 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム
JP2014078278A (ja) * 2006-01-24 2014-05-01 Memory Technologies Llc メモリインターフェイスを利用してメモリモジュールのパーティショニングを制御する方法
US9286204B2 (en) 2011-01-31 2016-03-15 Mitsubishi Electric Corporation Memory controller

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
JP2008090519A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 記憶装置
JP2008123473A (ja) 2006-10-20 2008-05-29 Toshiba Corp 記憶装置及びその制御方法
JP4991320B2 (ja) * 2007-01-12 2012-08-01 株式会社東芝 ホスト装置およびメモリシステム
JP2008171367A (ja) * 2007-01-15 2008-07-24 Toshiba Corp 情報処理装置及び追記型ファイル管理ソフトウェア
WO2008146473A1 (ja) * 2007-05-31 2008-12-04 Panasonic Corporation フォーマット装置
JP2009244962A (ja) * 2008-03-28 2009-10-22 Toshiba Corp メモリシステム
JPWO2009153982A1 (ja) * 2008-06-20 2011-11-24 パナソニック株式会社 複数区分型不揮発性記憶装置およびシステム
JP2010026933A (ja) * 2008-07-23 2010-02-04 Toshiba Corp メモリシステム、ホスト装置
TWI380310B (en) * 2008-09-17 2012-12-21 Incomm Technologies Co Ltd Operating method of memory card
EP2189895A1 (en) 2008-11-24 2010-05-26 Deutsche Thomson OHG Flash based memory comprising a Flash translation layer and method for storing a file therein
US8180995B2 (en) * 2009-01-21 2012-05-15 Micron Technology, Inc. Logical address offset in response to detecting a memory formatting operation
JP5362010B2 (ja) * 2009-07-29 2013-12-11 パナソニック株式会社 メモリ装置、ホスト装置およびメモリシステム
US8266501B2 (en) 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
CN101894076B (zh) * 2010-07-22 2012-08-29 深圳市江波龙电子有限公司 一种提高存储设备写入速度的实现方法及系统
KR20120067136A (ko) * 2010-12-15 2012-06-25 삼성전자주식회사 전자 장치 및 이에 적용되는 파일 삭제 방지 방법
CN103354925B (zh) 2011-01-31 2016-03-02 三菱电机株式会社 存储器控制器和存储器访问方法
US9311229B2 (en) 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
JP5976608B2 (ja) 2012-10-30 2016-08-23 株式会社東芝 メモリデバイス
US9229854B1 (en) 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9645924B2 (en) 2013-12-16 2017-05-09 International Business Machines Corporation Garbage collection scaling
US9984007B2 (en) 2014-03-28 2018-05-29 Samsung Electronics Co., Ltd. Storage system and method for performing and authenticating write-protection thereof
KR102196971B1 (ko) 2014-03-28 2020-12-31 삼성전자주식회사 스토리지 시스템, 그것의 쓰기 방지 수행 방법, 그리고 그것의 쓰기 방지 인증 방법
US10257192B2 (en) 2014-05-29 2019-04-09 Samsung Electronics Co., Ltd. Storage system and method for performing secure write protect thereof
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
WO2016046940A1 (ja) * 2014-09-25 2016-03-31 株式会社京都ソフトウェアリサーチ フラッシュメモリ内蔵マイコン、マイコンに内蔵されたフラッシュメモリへのデータ書込み方法、および、フラッシュメモリへのデータを書込むプログラム
US10067945B2 (en) * 2015-02-24 2018-09-04 Quest Software Inc. File and move data to shrink datafiles
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US9990304B2 (en) 2015-11-13 2018-06-05 Samsung Electronics Co., Ltd Multimode storage management system
US9940028B2 (en) 2015-11-13 2018-04-10 Samsung Electronics Co., Ltd Multimode storage device
US9946642B2 (en) 2015-11-13 2018-04-17 Samsung Electronics Co., Ltd Distributed multimode storage management
US9996473B2 (en) 2015-11-13 2018-06-12 Samsung Electronics., Ltd Selective underlying exposure storage mapping
TWI697778B (zh) * 2019-06-17 2020-07-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
CN114237502A (zh) * 2021-12-10 2022-03-25 武汉天喻信息产业股份有限公司 提高eSIM智能卡FLASH写入寿命的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0264878A (ja) * 1988-08-31 1990-03-05 Toshiba Corp 携帯可能電子装置
JPH06161882A (ja) * 1992-11-26 1994-06-10 Dainippon Printing Co Ltd Icカード
JPH0765591A (ja) * 1993-08-30 1995-03-10 Tec Corp 情報処理装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742793A (en) * 1991-12-18 1998-04-21 Intel Corporation Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner
US5479656A (en) * 1992-05-13 1995-12-26 Rawlings, Iii; Joseph H. Method and system for maximizing data files stored in a random access memory of a computer file system and optimization therefor
JPH0756780A (ja) 1993-08-16 1995-03-03 Toshiba Corp メモリカード装置
JPH0764831A (ja) 1993-08-23 1995-03-10 Matsushita Electric Ind Co Ltd データ記憶装置
JPH0798992A (ja) 1993-09-30 1995-04-11 Toshiba Corp データ処理装置
JPH07141479A (ja) 1993-11-18 1995-06-02 Toshiba Corp Icメモリカードおよびそのicメモリカードを使用したファイル管理システム
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
JPH0997218A (ja) 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JP3615299B2 (ja) 1996-03-29 2005-02-02 三洋電機株式会社 書換え可能romの記憶方法及び記憶装置
JP2000267904A (ja) 1999-03-17 2000-09-29 Sanyo Electric Co Ltd データ記録装置及び方法
US6609187B1 (en) * 1999-07-06 2003-08-19 Dell Products L.P. Method and apparatus for supporting resizing of file system partitions
US20030120858A1 (en) * 2000-09-15 2003-06-26 Matrix Semiconductor, Inc. Memory devices and methods for use therewith
JP2002163139A (ja) 2000-11-22 2002-06-07 Sharp Corp データ管理装置およびそれを用いたデータ管理方法
JP2003114817A (ja) * 2001-08-03 2003-04-18 Toshiba Corp 情報記憶媒体及び情報記録方法
JP4221959B2 (ja) 2002-06-26 2009-02-12 日本ビクター株式会社 ブリッジファイルシステム、コンピュータシステム、ブリッジファイルシステムを用いたデータ管理方法及び記録媒体
US7398352B2 (en) * 2002-10-30 2008-07-08 Matsushita Electric Industrial Co., Ltd. Recording method and recording apparatus that limits number of rewrites to the same storage area
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
JP2008123473A (ja) 2006-10-20 2008-05-29 Toshiba Corp 記憶装置及びその制御方法
JP4991320B2 (ja) 2007-01-12 2012-08-01 株式会社東芝 ホスト装置およびメモリシステム
JP2009244962A (ja) 2008-03-28 2009-10-22 Toshiba Corp メモリシステム
JP2010026933A (ja) 2008-07-23 2010-02-04 Toshiba Corp メモリシステム、ホスト装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0264878A (ja) * 1988-08-31 1990-03-05 Toshiba Corp 携帯可能電子装置
JPH06161882A (ja) * 1992-11-26 1994-06-10 Dainippon Printing Co Ltd Icカード
JPH0765591A (ja) * 1993-08-30 1995-03-10 Tec Corp 情報処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014078278A (ja) * 2006-01-24 2014-05-01 Memory Technologies Llc メモリインターフェイスを利用してメモリモジュールのパーティショニングを制御する方法
JP5481493B2 (ja) * 2009-11-11 2014-04-23 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム
US8977802B2 (en) 2009-11-11 2015-03-10 Panasonic Intellectual Property Management Co., Ltd. Access device, information recording device, controller, real time information recording system, access method, and program
JP2011138221A (ja) * 2009-12-25 2011-07-14 Toshiba Corp 半導体装置及びメモリシステム
US9286204B2 (en) 2011-01-31 2016-03-15 Mitsubishi Electric Corporation Memory controller

Also Published As

Publication number Publication date
US20070043924A1 (en) 2007-02-22
WO2005124530A2 (en) 2005-12-29
US8180956B2 (en) 2012-05-15
US20100250839A1 (en) 2010-09-30
US8065473B2 (en) 2011-11-22
WO2005124530A3 (en) 2006-05-26
US20120036313A1 (en) 2012-02-09

Similar Documents

Publication Publication Date Title
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US8607016B2 (en) FAT analysis for optimized sequential cluster management
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
JP4185058B2 (ja) フラッシュメモリのリマッピング方法
US7610434B2 (en) File recording apparatus
US7877569B2 (en) Reduction of fragmentation in nonvolatile memory using alternate address mapping
US8041887B2 (en) Memory device and control method thereof
US8516182B2 (en) Controller and memory system for managing data
KR101329068B1 (ko) 블록 관리를 가지는 비휘발성 메모리
US20080082774A1 (en) Methods of Managing File Allocation Table Information
KR100703680B1 (ko) 플래시 파일 시스템
TWI399642B (zh) 具區塊管理之非揮發性記憶體
US20090210612A1 (en) Memory controller, nonvolatile memory device, and nonvolatile memory system
JP4130808B2 (ja) フォーマット方法
JP4308780B2 (ja) 半導体メモリ装置、メモリコントローラ及びデータ記録方法
JP2009146539A (ja) 情報記録装置および情報記録方法
CN111949212B (zh) 基于自定义开放通道ssd的文件系统及文件管理方法
KR100638638B1 (ko) 플래시 메모리의 제어 방법
JP4419415B2 (ja) 記録方式
JP7435470B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP2004126945A (ja) 記憶装置及びその制御方法
KR20060069118A (ko) 메모리 카드의 수선방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120522

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120925