JP4287433B2 - ファイル記録装置 - Google Patents

ファイル記録装置 Download PDF

Info

Publication number
JP4287433B2
JP4287433B2 JP2005515557A JP2005515557A JP4287433B2 JP 4287433 B2 JP4287433 B2 JP 4287433B2 JP 2005515557 A JP2005515557 A JP 2005515557A JP 2005515557 A JP2005515557 A JP 2005515557A JP 4287433 B2 JP4287433 B2 JP 4287433B2
Authority
JP
Japan
Prior art keywords
data
file
block
buffer
size
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.)
Active
Application number
JP2005515557A
Other languages
English (en)
Other versions
JPWO2005050453A1 (ja
Inventor
浩 齋藤
俊啓 田中
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2005050453A1 publication Critical patent/JPWO2005050453A1/ja
Application granted granted Critical
Publication of JP4287433B2 publication Critical patent/JP4287433B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、半導体メモリにファイルを記録するファイル記録装置に関する。
電源を切っても記録されたデータが消えない、いわゆる不揮発性の半導体メモリは、記録する前に消去が必要であるが、機械的な駆動機構や回転がないことから耐振動性や静粛性に優れ、また記録密度の向上による大容量化と相俟って、CD(Compact Disk)、DVD(Digital Versatile Disk)などと並び、情報記録媒体としての普及に拍車がかかっている。
半導体メモリのなかでもバイトごとの消去が必要なEEPROM (Electrically Erasable Programmable Read Only Memory) を改良したフラッシュメモリは、ブロックと呼ぶ単位で一括して消去が行えるので、SDメモリカードなどの製品としてディジタルカメラの記録用などに使われている。
このフラッシュメモリを含む各種の記録媒体のデータを管理するファイルシステムには、例えばFAT(File Allocation Table、Standard ECMA−107:Volume and File Structure of Disk Cartridges for Information Interchange)、NTFS(New Technology File System)、UDF(Universal Disk Format)などがある。ファイルシステムを利用して、例えば映像や音声のデータをそれぞれファイルとして同時並行的に記録あるいは再生することが行なわれている。
ファイルシステムによるファイルは、FATではクラスタと呼ぶ単位で容量の割り当てと管理が行なわれる。
ファイルのデータがわずかでもクラスタを占有するので、クラスタはそのサイズが大きいほどメモリの容量効率が低下してしまい、一方、ブロックはそのサイズが大きいほどメモリの集積効率が良くなることから、ブロックサイズはクラスタサイズよりも大きいのが普通である。
また、クラスタが2つのブロックに跨るような場合、そのクラスタに記録するときは、2つのブロックの消去が必要となってしまう。これを避けるため、クラスタがブロック間に跨らないようにする技術が、例えば、特許文献1に開示されている。ファイルシステムは、フラッシュメモリのブロックに属するクラスタがすべて空きの状態であれば、そのブロックを消去し、書き込むだけでよい。
しかし、ブロック内に既存のファイルのデータを記録しているクラスタが一つでもあれば、そのブロックを消去する前にいったん主記憶上の一時メモリに読み込み(Read)、当該ブロックを消去し(Delete)、一時メモリ上で変更部分を変更し(Modify)、一時メモリの内容を書き出す(Write)という一連の操作(リード・モディファイ・ライトという)が必要となり、この場合読み込みと変更が余分にかかる。
また、同じブロックへの記録を行なうごとに上記一連の操作が行なわれるので、映像や音声のデータのように連続する大量のデータを同じブロックに対して上述の一連の操作を繰り返しながら書き込んでいくと、同じデータを何度も読み出しては書き込むことになり、膨大な処理時間がかかってしまう。
特開2001−188701号公報
本発明は、上記課題に鑑みてなされたものであり、一括消去が必要な記憶媒体に無駄なく能率的に記録するファイル記録装置を提供することを第1の目的とし、従来のファイルシステムのもとで上記記憶媒体にデータを無駄なく能率的に記録するプログラムを提供することを第2の目的とする。
上記目的は、クラスタをファイルに含まれるデータへの記録割当単位とし、連続した所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体に、データを記録するファイル記録装置であって、各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付手段と、複数のファイルバッファと、前記書き込み要求されたデータをそれぞれ前記ファイルバッファに各別に蓄積させるデータ蓄積手段と、前記データ蓄積手段により蓄積されたデータのサイズがブロックサイズ以上であるか否かを判定する判定手段と、判定が肯定的であるとき、前記データ蓄積手段により蓄積されたデータのうち、ブロックサイズ分のデータを取り出し、前記記録媒体の空きブロックに書き込む書込手段とを備えることで達成できる。
このような構成によって、記録前にブロック単位で消去が必要な記憶媒体に対しファイルのデータを記録する要求があったとき、書き込み先ブロックへのデータの書き込みは一回だけで済むので、記録の要求の都度書き込むのに較べると書き込み先ブロックに既に書き込んだデータがあればそれを再書き込みしなければならない無駄がなく、ファイルを能率的に記録することができる。
ここで、前記判定手段は、前記蓄積手段にて最近蓄積された特定のファイルバッファのデータサイズがブロックサイズ以上のとき、蓄積されたデータがブロックサイズ以上と判定し、前記書込手段は、前記特定のファイルバッファの先頭からブロックサイズ分のデータを取り出し、取り出したデータを前記空きブロックに書き込むこととしている。
このような構成によって、一つのファイルのデータが占有するブロックの単位で書き込むことができる。
ここで、前記判定手段は、各ファイルバッファのデータサイズをクラスタサイズで除した商の合計が前記所定数以上のとき、蓄積されたデータがブロックサイズ以上と判定し、前記書込手段は、前記各ファイルバッファからクラスタのサイズの単位で前記所定数のクラスタ分のデータを取り出し、前記空きブロックに書き込むこととできる。
このような構成によって、複数の各ファイルの書きこみデータ量の比率に準じて各ファイルのデータが混在するブロックの単位で書き込むことができる。
ここで、割り当てられた前記空きブロックに前記書込手段が書き込む前に、前記空きブロックの消去を行なう消去手段をさらに備えることができる。
このような構成によって、データの書き込み時までに、当該データの書き込み先ブロックの消去ができる。
また、上記目的は、複数のファイルバッファを備え、クラスタをファイルに含まれるデータへの記録割当単位とし、連続した所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体に、データを記録するファイル記録装置の制御方法であって、各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付ステップと、前記書き込み要求されたデータをそれぞれ前記ファイルバッファに各別に蓄積させるデータ蓄積ステップと、前記データ蓄積ステップにより蓄積されたデータのサイズがブロックサイズ以上であるか否かを判定する判定ステップと、判定が肯定的であるとき、前記データ蓄積ステップにより蓄積されたデータのうち、ブロックサイズ分のデータを取り出し、前記記録媒体の空きブロックに書き込む書込ステップとを有する制御方法とすることで達成できる。
このような構成によって、記録前にブロック単位で消去が必要な記憶媒体に対しファイルのデータを記録する要求があったとき、書き込み先ブロックへのデータの書き込みは一回だけで済むので、記録の要求の都度書き込むのに較べると書き込み先ブロックに既に書き込んだデータがあればそれを再書き込みしなければならない無駄がなく、ファイルを能率的に記録することができる。
また、上記目的は、複数のファイルバッファを備え、クラスタをファイルに含まれるデータへの記録割当単位とし、連続した所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体に、データを記録するファイル記録装置に、各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付ステップと、前記書き込み要求されたデータをそれぞれ前記ファイルバッファに各別に蓄積させるデータ蓄積ステップと、前記データ蓄積ステップにより蓄積されたデータのサイズがブロックサイズ以上であるか否かを判定する判定ステップと、判定が肯定的であるとき、前記データ蓄積ステップにより蓄積されたデータのうち、ブロックサイズ分のデータを取り出し、前記記録媒体の空きブロックに書き込む書込ステップとを実行させるプログラムとすることで達成できる。
このような構成によって、記録前にブロック単位で消去が必要な記憶媒体に対しファイルのデータを記録する要求があったとき、書き込み先ブロックへのデータの書き込みは一回だけで済むので、記録の要求の都度書き込むのに較べると書き込み先ブロックに既に書き込んだデータがあればそれを再書き込みしなければならない無駄がなく、ファイルを能率的に記録することができる。
また、上記目的は、ドライバデータバッファを備え、クラスタをファイルに含まれるデータへの記録割当単位とし、連続した所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体にデータを記録するファイル記録装置に、前記記録媒体における書き込み先アドレスを含む書き込みの要求を受け付ける受付ステップと、前記ドライバデータバッファが空きでないとき、前記書き込みのデータと前記ドライバデータバッファのデータとが前記記録媒体のアドレスにおいて連続するか否かを判定する第1判定ステップと、肯定と判定されたとき、書き込みのデータを前記ドライバデータバッファに蓄積させるデータ蓄積ステップと、前記ドライバデータバッファに蓄積されたデータの書き込み先がブロックの境界に一致するか否かを判定する第2判定ステップと、第2判定ステップにて肯定と判定されたとき、前記ドライバデータバッファの先頭から前記ブロックの境界までのデータを前記記録媒体に書き込む書込ステップとを実行させるためのプログラムとすることで達成できる。
このような構成によって、記録前にブロック単位で消去が必要な記憶媒体に対し、記憶媒体の書き込み先のアドレスを指定してファイルのデータを書き込む要求があったとき、書き込み先ブロックへの要求のあったデータの書き込みは一回だけで済むので、書き込みの要求の都度書き込むのに較べて、書き込み先ブロックに以前ブロックに書き込み要求で書き込んだデータがあればそれを再書き込みしなければならないという無駄がなく、ファイルを能率的に記録することができる。
ここで、前記プログラムは前記記録媒体のフィルタドライバであることとできる。
このような構成によって、フィルタドライバの追加だけで、既存のファイルシステムのもとでファイルを能率的に記録することができる。
以下に、本発明に係るファイル記録装置の実施の形態について図面を参照しながら説明する。
(第1の実施の形態)
第1の実施の形態は、ファイルシステムにより能率的にファイルを記録する。
図1は、本実施の形態の構成を示す図である。
ファイル記録装置は、メモリカード110、ファイルバッファ120、入出力要求受付部130、データ蓄積部140、ブロック管理部150、ファイル書込部160、ファイル管理部190から構成される。
ファイル記録装置は、他に不図示のCPUとメモリを備え、上記の構成各部はプログラムあるいはメモリ領域であり、構成部がプログラムの場合はメモリにローディングされ、CPUで実行する。
ファイル記録装置は、単数のファイルまたは複数の各ファイルに対する入出力要求を受け付ける。入出力要求元は、例えばファイル記録装置で動作するアプリケーション、ネットワークを通じて要求を発行する装置等である。入出力要求元は、同時並行的に複数のファイルへの記録をファイル記録装置に要求することができる。
また、入出力要求元は、複数の種類、例えばアプリケーションとネットワーク上の他の装置であっても、1種類の中で複数、例えばアプリケーションの種類においてアプリケーションA、B、Cなど、であっても構わない。入出力要求元は、ここでは単数として扱う。
次に、ファイル記録装置の構成要素について説明する。
メモリカード110は、入出力要求元から要求のあったファイルの記録を行う。
メモリカード110の構成を図2に示す。図2において、メモリカード110は、コマンド実行部201、データバッファ202、フラッシュメモリ205で構成される。
コマンド実行部201は、メモリカード110で実行できるコマンドをファイル書込部160から受け取り、そのコマンドを実行する。コマンド実行部201コマンドが実行できるコマンドには、フラッシュメモリ205の書き込み、読み込み、ブロック消去とがある。
書き込みコマンドには、フラッシュメモリ205における書き込み先の先頭アドレスとしてセクタ番号が、データサイズとしてセクタ数が含まれている。コマンド実行部201は、書き込みコマンドを受け取ると、データバッファ202に設定されているセクタ数分のデータをフラッシュメモリ205の上述のセクタ番号から書き込んでいく。ここで、データサイズとしてのセクタ数の最大は、1ブロックサイズ相当数、つまり128である。
データバッファ202は、書き込みコマンドの書き込み対象のデータを保持するブロックサイズのバッファである。データバッファ202は、ファイル書込部160により転送された書き込みデータを保持し、書き込みコマンドを受け取ったコマンド実行部201により、ファイル書込部160の書き込みデータがフラッシュメモリ110に書き込まれる。データバッファ202は、また、読み込みコマンドによりフラッシュメモリ205から読みこれたデータを保持する。
読み込みコマンドには、フラッシュメモリ205における読み込み先の先頭アドレスとデータサイズとして、セクタ番号とセクタ数とが含まれている。セクタ数の最大は、書き込みの場合と同じく128である。
フラッシュメモリ205は、記録前にブロックの単位で消去が必要なメモリ、つまり書き込むセクタ(後述)、あるいはクラスタ(後述)が構成するブロックの消去が必要なメモリであり、コマンド実行部201によって書き込まれたファイルのデータを記憶する。
消去コマンドには、消去するブロック番号が含まれている。コマンド実行部201は、消去コマンドを受け取ると、フラッシュメモリ205の指定のブロック番号のブロックの消去を行なう。
図3は、フラッシュメモリ205のフォーマットの一例を示す図である。図3において、フラッシュメモリ205は、ブロック311、クラスタ312、セクタ313の階層的な区分の単位で管理される。
ブロック311は、記録前に必要な消去の単位である。ファイルのデータの書き込みの際、未使用である空きブロックがそのファイルのデータに割り当てられる。なお、ブロック番号4001−4192は予備として図3に記載していない。
クラスタ312は、ファイルのデータに対する割り当ての最小単位であり、ファイルの管理表である後述のFAT205で参照される。
セクタ313は、データ入出力の最小単位であり、1から順に整数のセクタ番号が付されていて、そのセクタ番号がフラッシュメモリ上のアドレスを示す。また、フラッシュメモリ205への書き込みのときのデータのサイズは、バイト数ではなくセクタ数が使用される。図3のセクタ313では、各ブロックおよび各クラスタの先頭セクタ番号だけを記している。
フラッシュメモリ205は、その領域314が、システム領域321とユーザ領域331に大別される。
システム領域321には、管理情報が記録される。システム領域321は、さらに、予約領域322、FAT領域323、ルートディレクトリエントリ324からなる。
予約領域322は、ブート情報、および記録媒体であるフラッシュメモリ205に関するパラメータ情報等を納める。例316によると、セクタサイズは512B(バイト)、1クラスタは16KB、1クラスタは32セクタ、1ブロックは4クラスタというパラメータが記録されている。この場合、1クラスタは16KB、1ブロックは64KBのサイズを有している。図3の例では、フラッシュメモリ205は、256MBの記憶容量を有している。なお、クラスタサイズ、ブロックサイズはこの値に限定されるものでは勿論ない。フラッシュメモリによっては、1ブロックが128KB、あるいは256KB等となる場合もあり、クラスタサイズも8KB、32KB等となる場合もある。
FAT領域323は、FAT335を納める。FAT335は、ファイルのデータが存在するクラスタの場所を示す表である。
ルートディレクトリエントリ324は、ファイルの管理情報を納めたディレクトリからなる領域である。各ディレクトリには、ファイル名、ファイルの記録日時(不図示)、このファイルに割り当てられ、占有されている先頭のクラスタ番号(あるいは先頭のFATエントリ番号)などが納められる。
例えば、ファイルAのディレクトリ336は、先頭クラスタが1であり、クラスタ1に対応するFAT335のエントリ1を見ると「2」が記録されているので、ファイルAはクラスタ1に続いてクラスタ2を占有することが分かる。同様に、エントリ2には「3」が記録されているので、クラスタ3を占有し、エントリ3には「4」が記録されているので、クラスタ4を占有している。FATのエントリ4にはファイルの最終であることを示す「FF」が記録されているので、占有しているクラスタは、1,2,3,4の連続したクラスタであり、これはブロック4に相当することが分かる。なお、FAT領域323には、FAT335が安全のため二重に納められている(不図示)。
ユーザ領域331は、ファイルのデータ、あるいはディレクトリの情報が記録される領域であり、ファイルのデータへの割当は、本実施の形態では、原則的にブロック単位で行なう。システム領域321のフォーマットは固定的であり、クラスタ番号はユーザ領域でのみ使用される。
図1に戻り、ファイルバッファ120は、記録要求元から記録要求のあったデータを一時的に記憶しておくための2ブロックサイズのバッファ(メモリ領域)であり、ファイルの入出力要求元から記録を行なうファイルのオープンの要求時にファイル管理部190によりそのファイル専用に確保され、ファイルのクロ−ズの要求でファイル管理部190により開放(返却)される。なお、ファイルバッファ120のサイズは2ブロックサイズとしたが、後述の入出力要求の書き込みデータの最大サイズに1ブロックサイズを加えたサイズであればよい。
書き込みバッファ125は、フラッシュメモリ205に書き込むファイルのデータを一時的に記憶しておくためのブロックサイズのメモリ領域であり、ファイル書込部160により利用される。
入出力要求受付部130は、入出力要求元からメモリカード110のフラッシュメモリ205のファイルの入出力要求を受け付ける。ファイルの入出力要求には、ファイルのオープン、クローズ、ファイルのデータの書き込み(Write)、ファイルのデータの読み込み(Read)等がある。
入出力要求がファイルのオープンのとき、入出力要求受付部130は、オープンするファイルの情報であるファイル名を、また、クローズのとき、クローズするファイルの情報であるファイルデスクリプタ(後述)を入出力要求元からさらに受け取る。
入出力要求がファイルのデータの書き込みの場合、入出力要求受付部130は書き込むべきファイルのデータ(以下、「書き込みデータ」という)も入出力要求元から受け取る。書き込みデータは、書き込みの指示に続けて直接受け取るか、または、あらかじめ書き込み要求元が設定したデータが存在するメモリ上のアドレスとデータサイズ(バイト単位)を書き込みの指示に続けて受け取る。ここで、入出力要求受付部130が受け付ける書き込み要求ごとの書き込みデータサイズの最大値はブロックサイズ(64KB)とする。なお、この最大値は固定ではなく別のサイズ、例えば256KBにしてもよい。
書きこみデータを直接受け取ったとき、入出力要求受付部130は、メモリ上のデータ領域(不図示)に書き込みデータを転送しておく。
入出力要求がファイルのデータの読み込みの場合、入出力要求受付部130は読み込むべきファイルのデータに関する情報を入出力要求元から受け取るが、ファイル記録においては利用しないので詳細な説明は省略する。
入出力要求受付部130は、受け取った入出力要求の種類(オープン、書き込み等)と、処理対象のファイルの情報(例えば書き込みとクローズのときはファイルデスクリプタ、またオープンの時はファイル名称)と、さらに、書き込み要求のときは書き込みデータのアドレスとサイズとを入出力要求情報として、ファイル管理部150に通知する。そして、通知した入出力要求情報についての処理結果の情報を、ファイル管理部150から受け取り、入出力要求元に通知する。処理結果の入出力要求元への通知は、処理結果の情報を直接通知するか、またはメモリ領域に処理結果の情報を転送し、そのメモリアドレスを通知することにより行なう。
データ蓄積部140は、ファイル管理部190からの指示に基づき、ファイルデスクリプタで示されるファイルに対応するファイルバッファ120への書き込みデータの蓄積処理を行なう。当該書き込みデータの受け取りは、ファイル管理部190からデータが存在するメモリ上のアドレスとサイズを受け取ることにより行なう。
図4は、各ファイルバッファ120A、120B、120Cにデータが蓄積され、フラッシュメモリ205に書き込まれる一例を示す図である。図4において、書き込みデータの蓄積処理は、記録中のファイルごとに確保されているファイルバッファ、例えばファイルバッファ120A、120B、120Cのうち、書き込みデータの属するファイルに対応するファイルバッファ、例えば書き込みデータがファイルCのデータのとき、ファイルCに対応するファイルバッファ120Cに書き込みデータを蓄積する。ここで蓄積とは、ファイルバッファ120Cにデータがなければ、書き込みデータをファイルバッファ120Cの先頭から書き込み、また、データがあればその直後に追加することをいう。なお、ファイルバッファ120に蓄積されたデータのサイズは、クラスタサイズの整数倍とは限らないが、説明の便宜上、整数倍として例示した。また、ファイルバッファ120A、120B、120Cはいずれも2ブロックサイズ(8クラスタ)あるが、説明の便宜上ブロックサイズとして示した。
データ蓄積部140は、書き込みデータをファイルバッファ120に蓄積した後、ファイル管理部190に蓄積処理の終了通知を行なう。
ファイル書込部160は、ファイル管理部190からの指示に基づき、一つの指定されたファイルバッファ120において、その先頭から1ブロックサイズ分のデータを取り出し、取り出したデータを書き込みバッファ125に転送し、ファイルバッファ120に残ったデータを前詰めする。そして、書き込みバッファ125のデータをフラッシュメモリ205の指定のブロック(ブロック先頭から1ブロックサイズ分)に書き込むよう、メモリカード110に書き込み指示を行う。ここで、書き込み指示とは、書き込みバッファ125のデータをメモリカード110のデータバッファ202に転送するとともに、コマンド実行部201に対して書き込みコマンドと、書き込み先ブロックのアドレスと、書き込みデータのサイズとを設定することをいう。
ファイル管理部190は、メモリカード110のフラッシュメモリ205へのファイルのデータの書き込み、より詳しくはメモリカード110のファイルのデータの書き込みがブロック単位で行なわれるように制御する。
ファイル管理部190は、入出力要求受付部130から入出力要求情報を受け取る。受け取った入出力要求情報に含まれる入出力要求の種類が書き込みの場合、データ蓄積部140に対して、当該入出力要求情報に含まれる書き込みデータのメモリアドレスとサイズとを通知し、また入出力要求情報に含まれるファイルデスクリプタが示すファイルに対応するファイルバッファ120に当該書き込みデータを蓄積するように指示する。
そして、データ蓄積部140から書き込みデータの蓄積の終了通知を受け取ると、ファイル管理部190は、上記ファイルバッファ120に蓄積されたデータのサイズを調べ、それがブロックサイズ以上であるか否かを判定する。
判定が肯定の場合、ファイル管理部190は、FAT335から空きブロックを検索し、あればその空きブロックを割り当て、さらに、その空きブロックを消去する。空きブロックの消去は、ファイル管理部190がメモリカード110のコマンド実行部201に対し、その空きブロックのブロック番号を指定した消去コマンドを発行することにより行なう。ここで空きブロックとは、構成要素のクラスタのすべてが空き(未使用)となっているブロックのことである。
なお、空きブロックの消去は、本実施の形態では空きブロックの割り当て時に行なうとしたが、空きブロックの発生時、または、発生時から書き込み時までの間のいずれかのタイミングで行なうようにしてもよい。また、消去の有無を、ブロックごとに設けた消去フラグで管理するようにし、メモリカード110の空き時間を利用して消去するようにしてもよい。
ファイル管理部190は、次に、ファイル書込部160に対して、その特定のファイルバッファ120を指定して、そのファイルバッファ120の先頭から1ブロックサイズ分のデータをフラッシュメモリ205に書き込むように指示する。そして、ファイル管理部190は、ファイル書込部160から終了通知をうけとったら、書き込んだファイルに関してFAT335を更新する。
例えば、図4において、ファイル書込部160が新規のファイルC425に、書き込みバッファ125にあるファイルCのデータ1ブロック分(クラスタ9〜12により構成されるブロック番号6)をフラッシュメモリ205に書き込むと、ファイル管理部190は、ファイルCのディレクトリ422に先頭のクラスタ番号である9を記録し、FAT421内のクラスタ9から12までのクラスタの連鎖として、各エントリに次のエントリ番号をそれぞれ記録する。
ファイル管理部190は、空きブロックがないときは、エラー処理として、空きブロックの不足の書き込み不可とする旨のログ情報を不図示のログファイルに出力し、あるいは不図示の表示部に表示する。
なお、本実施の形態では、空きブロックがないとき書き込み不可としたが、空きクラスタの合計がブロックサイズ分あれば、ブロックサイズ分を検索し割り当てるようにしてもよい。この場合は、各クラスタごとにそのクラスタが属するブロックに対する「リード・モディファイ・ライト」が必要である。
ファイル管理部190は、また、入出力要求受付部130から書き込み要求以外の種類の入出力要求を受け取ったとき、その処理を次のように行なう。
入出力要求がファイルのオープンのとき、入出力要求情報に含まれるファイル名のファイルがフラッシュメモリ205になければ新規ファイルの創生(クリエイト)を行ない、また、既にあればそのファイルを特定し、当該ファイルを示すファイルデスクリプタと呼ぶファイル識別情報を、入出力要求元にオープンの入出力要求に対する処理結果として返す。入出力要求元は、今後はファイルの指定をこのファイルデスクリプタにより行なう。新規ファイルの創生には、当該ファイル用のファイルバッファ120のメモリ確保、ディレクトリの作成が含まれる。
入出力要求がファイルのクローズのとき、ファイル管理部190は、入出力要求情報に含まれるファイルデスクリプタが示すファイルの記録の完了処理を行なう。この完了処理には、当該ファイル用のファイルバッファ120に残ったデータがあれば、それをフラッシュメモリ205に書き込み、当該ファイルバッファのメモリを開放(返却)する。
また、入出力要求がファイルの読み込みのとき、ファイル管理部190は、入出力要求情報に含まれるファイルデスクリプタが示すファイルからデータを読み込んで、入出力要求元に渡す。
ファイル管理部190は、ファイル記録装置の動作開始のときに起動され、メモリカード110に対して、フラッシュメモリ205のブロック1〜3のシステム領域321(図3)をメモリに読込む。この読み込みにより、ブロック、クラスタ、セクタに関する情報等を得る。また、FATあるいはディレクトリの更新は、処理の効率化のために、まずメモリ上で行う。そして、適宜、メモリカード110に対し書込コマンドを発行して、図3のフラッシュメモリ205のブロック2またはブロック3を最新の情報として書き込み、更新する。なお、システム領域についても、書き込みの前にブロックを消去するのは勿論である。
図5〜図7は、ファイル記録の処理手順を示すフローチャートである。ファイル記録の動作をこれらの図をもとに説明する。
図5において、入出力要求受付部130は、ファイルの入出力要求を入出力要求元から受け付ける。
入出力要求が、新規のファイルのオープンのとき(S514)、入出力要求受付部130は、オープンするファイル名も入出力要求元から受け取り、オープン要求とファイル名とを入出力要求情報としてファイル管理部190に伝達する。ファイル管理部190は、指定ファイル名のファイルのオープン処理を行なう(S516)。ファイルのオープン処理の詳細は後述する。
入出力要求が、新規のファイルのクローズのとき(S518)、入出力要求受付部130は、クローズするファイルのファイルデスクリプタも入出力要求元から受け取り、クローズ要求とファイルデスクリプタとを入出力要求情報としてファイル管理部190に伝達する。ファイル管理部190は、そのファイルデスクリプタが示すファイルのクローズ処理を行なう(S520)。ファイルのクローズ処理の詳細は後述する。
入出力要求が、データの書き込みのとき(S522)、入出力要求受付部130は、書き込みデータを、書き込みの指示に続けて直接受け取るか、または、あらかじめ入出力要求元が設定した書き込みデータが存在するメモリ上のアドレスとデータサイズ(バイト単位)を書き込みの指示に続けて受け取る。データを直接受け取ったとき、入出力要求受付部130は、メモリ上のデータ領域(不図示)にデータを転送し、そのアドレスとサイズのデータ書き込み要求を示す入出力要求情報を作成し、ファイル管理部190に通知する。書き込み要求に対応する処理である書込要求処理については後述する。
また、入出力要求が、上記以外のとき、当該要求に対応する処理を行なう(S526)。当該要求には、フラッシュメモリ205のファイルのデータの読み込み要求も含まれるが詳細な説明は省略する。
図6は、ファイルのオープンとクローズの処理を示すフローチャートである。
ファイルのオープンでは、ファイル管理部190は、ファイルオープンの入出力要求情報を入出力要求受付部130から受け取り、入出力要求情報に含まれるファイル名のファイルのディレクトリ、例えば図4の「ファイルC」のディレクトリ422を、図3のルートディレクトリエントリ324に作成する(S610)。なお、ファイル名のファイルのディレクトリが既にあれば、そのファイルは既存ファイルでありディレクトリの作成は不要である。
次に、ファイル管理部190は、オープンしたファイルに対応するファイルバッファ120、例えば図4においてオープンしたファイルが「ファイルC」のときファイルバッファ120Cを確保する(S612)。そして、当該ファイルを示すポインタ情報であるファイルデスクリプタを作成し、入出力要求受付部130に処理結果として通知する。入出力要求受付部130は、オープン要求の処理結果としてそのファイルデスクリプタを入出力要求受付部130を通じて入出力要求元に返す。
ファイルのクローズでは、ファイル管理部190は、ファイルクローズの入出力要求情報を入出力要求受付部130から受け取り、入出力要求情報に含まれるファイルデスクリプタが示すファイルに対応するファイルバッファ120Cを開放する(S654)。最後に、当該ファイルのディレクトリ、例えばディレクトリ422に記録日時(不図示)を記録し、クローズ要求の処理結果として入出力要求受付部130を通じて正常終了の旨を入出力要求元に返す。
図7は、ファイルのデータ書込要求の処理を示すフローチャートである。
図7において、ファイル管理部190は、入出力要求がデータの書き込みのとき、データ蓄積部140に対し、入出力要求情報に含まれるファイルデスクリプタが示すファイルに対応する特定のファイルバッファ120と、書き込みデータが存在するデータ領域のアドレスとサイズとを通知して、上述のデータ領域からファイルバッファ120に蓄積するように指示する(S710)。データ蓄積部140は、ファイル管理部190からの指示に基づき、指定されたデータ領域の書き込みデータをァイルバッファ120へ蓄積する処理を行なう。
データ蓄積部140から、蓄積の終了通知を受け取ったとき、ファイル管理部190は、終了通知で蓄積の対象となった特定のファイルバッファ120に蓄積されたデータのサイズを調べ、それがブロックサイズで以上であるか否かを判定する(S712)。
判定が肯定の場合、ファイル管理部190は、FAT335から空きブロックを検索し(S716)、空きブロックがあれば(S718)、その空きブロックを割り当て、さらに、メモリカード110にその空きブロックを消去させる。
ファイル管理部190は、当該ファイルバッファ120に蓄積されたデータを上記の空きブロックに書き込むようにファイル書込部160に指示する。ファイル書込部160は、その指示に基づき、指定のファイルバッファ120の先頭からブロックサイズ分のデータを取り出し、そのデータを書き込みバッファ125に転送し(S714)、ファイルバッファ120の残ったデータを前詰めする。そして、書き込みバッファ125のデータをメモリカード110のデータバッファ202に転送するとともに、コマンド実行部201に対して書き込みコマンドと、割り当てられた空きブロックの先頭アドレスとブロックサイズとを設定することにより、メモリカード110に対し、フラッシュメモリ205上の指定のブロックにデータを書き込ませる(S724)。ファイル書込部160は、メモリカード110から書き込みの終了通知を受け取ると、ファイル管理部190に書き込みの終了通知を同じく行なう。
ファイル管理部190は、ファイル書込部160から書き込みの終了通知を受け取ると、書き込んだファイルに関してFATを更新する(S726)。そして、S712に分岐して当該ファイルバッファ120の残ったデータに関して同様な処理を行なう。
本実施の形態の変形例として、書き込みデータ蓄積の例外を実施しても良い。例えば、書き込み要求において、直ちに書き込みを行なわせるオプションがあっても良い。この場合はデータの蓄積を行なわないで直ちにフラッシュメモリ205に書き出す。あるいは、書き込み要求があったとき、データ蓄積後、当該ファイルバッファにタイマを設定し、一定時間たっても当該ファイルバッファの状態が変化しなければ、当該ファイルバッファのデータの書き込みを行なうようにしてもよい。また、書き込み要求のうち、既存のデータを指定のデータと置き換える書き込み要求の場合、その要求の処理の前に、要求のあったファイルに対応するファイルバッファのデータをすべて書き込むようにしてもよい。

(第2の実施の形態)
第2の実施の形態では、フラッシュメモリにブロック単位で書き込むとき、そのブロックには複数ファイルのデータが混在可能である。
本実施の形態におけるファイル記録装置の構成は、図1で示される第1の実施の形態の構成と、固有の構成だけが異なる。つまりファイル管理部190とファイル書込部160との2つの構成要素の機能だけが異なるので、以下では主にその相違点を説明する。
図8は、本実施の形態において、各ファイルバッファ120A、120B、120Cにデータが蓄積され、フラッシュメモリに書き込まれる一例を示す図である。第1の実施の形態(図4)では、最近蓄積された特定のファイルバッファ120のデータサイズがブロックサイズになったとき、フラッシュメモリ205に書き込まれたが、本実施の形態では、データ蓄積部140によって蓄積された特定のファイルバッファ20のデータサイズがブロックサイズに達していなくても、複数の各ファイルバッファ120のデータをクラスタサイズ単位で換算して、合計のクラスタ数がブロックの構成クラスタ数以上、つまり4以上になっていれば、ファイル管理部190は複数の各ファイルバッファ120からクラスタサイズの単位でブロックサイズになるまで取り出して、書き込みバッファ125に転送し、フラッシュメモリの空きブロックに書き込む。図8の例では、書きこみ前のフラッシュメモリ205が、図3の例316の状態として、ファイルバッファAから1クラスタ分、ファイルバッファBから1クラスタ分、ファイルバッファCから2クラスタ分を取り出して、フラッシュメモリ例811で示すようにクラスタ9―12からなる空きブロック(ブロック番号6)に書き込んでいることが分かる。この場合でも、ファイルA825はクラスタ9に、ファイルB826はクラスタ10に、またファイルC827はクラスタ11と12に書き込まれ、同一クラスタ内での異なるファイルのデータの混在はない。
書き込まれたファイルのデータに関して、FAT821とディレクトリ822の更新を行なう。
なお、各ファイルバッファ120のデータをクラスタサイズ単位で換算するとは、各ファイルバッファ120において、ファイルバッファのデータのサイズを超えないクラスタの数のうち、最大のクラスタ数を得ることである。
以上の処理により、書き込みのデータをファイルごとにブロックサイズ単位になるまで待って、単一ファイルのデータの書き込みを行なうよりも、全体として早くデータが書き込まれる。また、同一主題の映像データと音声データの同時ファイル記録のように、データ量の比率が異なるファイルのデータの記録のときでも、そのデータ量に比例配分して各ブロックに各ファイルのデータが記録される。
図9は、書き込み要求処理の詳細を示すフローチャートである。
図9のうち、第1の実施の形態の書き込み要求処理のフローチャートを示す図7において処理が同じものは同じステップ番号を付している。
書き込み要求の処理のうち、図7と異なる処理を中心に、図9を用いて説明する。
図9において、データ蓄積部140に蓄積された特定のファイルバッファのデータがブロックサイズ以上ではないとき(S712)、ファイル管理部190は、さらに、複数の各ファイルバッファ120のデータをクラスタサイズ単位で換算して、合計のクラスタ数がブロックの構成クラスタ数以上、つまり4以上になっているか否か判定する(S926)。判定結果が肯定なら、書き込み先のブロックを検索する(S716)
空きブロック割り当て後、書き込みデータが単一ファイルのデータか複数ファイルのデータかを、上述した特定のファイルバッファのデータのサイズで判定し(S927)、複数ファイルのデータのとき、ファイル管理部190は複数の各ファイルバッファ120からクラスタサイズの単位でブロックサイズになるまで取り出して、書き込みバッファ125に転送する(S928)。空きブロックに書き込み後のFATの更新は、書き込んだ複数のファイルに関して行なう。
(第3の実施の形態)
本実施の形態では、ファイル記録装置のもとで動作するフィルタドライバがファイル記録を能率的に行なう。
図10は、本実施の形態のファイル記録装置にて動作するソフトウェアの階層構成を示す。
アプリケーションプログラム1010は、ファイル記録装置におけるファイル記録の要求元であり、例えば映像コンテンツの記録プログラムである。アプリケーションプログラム1010は、ファイルの記録のためにファイルシステム1020に対しファイルの入出力要求を発行する。
ファイルシステム1020は、既存の汎用のファイルシステム、例えばWindows(登録商標)オペレーティングシステム(マイクロソフト社製品)のFATファイルシステムであり、ファイルの記録と管理を行なう。ファイルシステム1020は、既存のファイルの管理とともに、新規ファイルの記録を含めて、アプリケーションプログラム1010からのファイルの入出力要求に対する処理を行なう。ファイルシステム1020自体は、従来と同様にクラスタ単位の割り当てと管理を行ない、ブロックを意識した管理と処理は行なわない。
ファイルシステム1020は、アプリケーションプログラム1010から、ファイルの入出力要求があるとき、その処理を行なう。
ファイルの入出力要求にはファイルのオープンとクローズ、ファイルのデータの読み込みと書き込みなどがある。
ファイルシステム1020は、ファイルの入出力要求を受け取ると、メモリカード110(図1)のデバイスドライバであるメモリカードデバイスドライバ1040(以下、単に「デバイスドライバ1040」という)に対してデバイスレベルの入出力要求を発行する。デバイスレベルの入出力要求とは、例えばファイルの入出力要求が書き込み要求のとき、ファイルシステム1020は必要に応じて空きのクラスタをFATを参照して検索して割り当て、書き込み先のアドレスをそのクラスタの先頭のセクタのセクタ番号で、またデータサイズをバイト数に代えてセクタ数でそれぞれ指定して、デバイスドライバ1040に対して書き込み要求を発行する。このように、デバイスレベルの入出力要求は、フラッシュメモリ205のデータの入出力をセクタ指定で行なう。
メモリカードフィルタドライバ1030(以下、単に「フィルタドライバ1030」という)は、ファイルシステム1020がデバイスドライバ1040に対して発行したデバイスレベルの入出力要求を横取り(Intercept)し、それが書き込み要求のとき、直ちにデバイスドライバ1040にデータを書き込ませないで、内部のメモリ領域であるドライバデータバッファに蓄積しておき、ある条件になったとき、デバイスドライバ1040に指示して蓄積したデータを一括してメモリカード110に書き込ませる。なお、フィルタドライバ1030の詳細については後述する。
デバイスドライバ1040は、フィルタドライバ1030からのデバイスレベルの入出力要求を受け取り、
メモリカード110に対する入出力の処理を行なう。
メモリカード110は、第1の実施の形態とほぼ同様であるが、フラッシュメモリのフォーマットは、第1の実施の形態での図3の予約領域322において、ブロックに関する情報であるブロックを構成するクラスタ数を示す「ブロック/クラスタ:4」の情報は、本実施の形態では記録されないことだけが相違する。
図11は、フィルタドライバ1030の処理手順を示すフローチャートである。フィルタドライバ1030の入出力要求の処理を、図11をもとに説明する。
フィルタドライバ1030は、ロードされた時、内部的に使用するメモリ領域であるドライバデータバッファを一定のサイズ分、例えば2ブロックサイズ分確保する。またブロックを構成するクラスタ数、例えば「ブロック/クラスタ:4」の情報およびブロックとクラスタとセクタの対応に関する情報等のブロックに関する情報を、内部情報として保持している。
ファイルシステム1020からドライバ1040に対してドライバレベルの入出力要求があると、当該入出力要求を横取りし、それがメモリカード110のフラッシュメモリ205に対する書き込み要求であるか否か判定する(S1110)。書き込み要求でなければ、当該入出力要求の処理をデバイスドライバ1040に行なわせる(S1112)。ここで、ドライバレベルの入出力要求とは、読み書きの指定がセクタで行われる入出力要求のことであり、例えば書き込みでは、フラッシュメモリ205における書き込み先の先頭アドレスとサイズがセクタ数で指定されている入出力要求のことである。なお、セクタ数で指定される書き込みデータのサイズの最大は、1ブロック分とする。
ドライバレベルの入出力要求には、書き込み、読み込み、指定ブロックの消去が含まれる。
図12は、フィルタドライバ1030が管理するドライバデータバッファ1201のデータとメモリカード110のフラッシュメモリ205のブロックとの関係をアドレスで対応させた図である。図12において、ドライバデータバッファ1201に、データA1、A2、A3がありこれらがアドレスにおいて連続しているとし、データA1、A2、A3の合計が1ブロック分であるとする。
第1の実施の形態では、ファイルバッファに1ブロック分までデータを蓄積してから書き込みを行なった。一方、本実施の形態では、図12に示すように1ブロックのサイズになってから書き込むということは必ずしも行なわないが、一回の書き込みでは一つのブロックの一部または全体に対して行ない、2つのブロックに跨らないようにしている。また、そのブロックへの書き込みを書き込み要求のたびに何度も行なうのではなく、書き込みデータがアドレスにおいて連続するときはドライバデータバッファ1201に蓄積して、同一データの書き込みが一回で済むようにしている。
入出力要求が書き込み要求のとき、フィルタドライバ1030は、ドライバデータバッファ1201が空か否か判定する(S1113)。空であれば、S1120に分岐する。また、ドライバデータバッファ1201が空でなければ、書き込み要求のデータ(以下、「書き込みデータという」)とドライバデータバッファ1201のデータとが連続か否かを判定する(S1114)。
例えば、図12においてドライバデータバッファ1201にデータA1があり、A1の書き込み先アドレス(先頭のセクタアドレス)がセクタs1、書き込みのセクタ数がd1であり、書き込み要求のデータA2の書き込み先アドレスがs2、書き込みのセクタ数がd2であるとすると、s2が(s1+d)と一致すれば連続と判定する。
書き込みデータとドライバデータバッファ1201のデータとが連続でなければ(S1116)、ドライバデータバッファ1201に蓄積されたデータのフラッシュメモリ205への書き込みをデバイスドライバ1040に行なわせる(S1118)。
次に、書き込み要求のあった書き込みデータのドライバデータバッファ1201への蓄積を次のように行なう(S1120)。
ドライバデータバッファ1201が、もともと空であるか、または不連続な蓄積されたデータを書き込んだために空であるとき、フィルタドライバ1030は書き込み要求がされた書き込みデータをドライバデータバッファ1201に新たに蓄積する。
また、書き込みデータとドライバデータバッファ1201に蓄積されたデータとが連続であればデータバッファ1201のデータに書き込み要求のデータを追加によって蓄積し、書き込みデータサイズを更新する。
上記の例では、セクタ数がd1であった書き込みデータサイズを、書き込み要求のデータのサイズd2を加えた(s1+s2)とする。なお、ドライバデータバッファ1201の書き込み先アドレス(セクタ番号)とデータサイズ(セクタ数)とは、データバッファ1021に付随する管理情報(不図示)として記憶しておく。
図12において、ドライバデータバッファ1201のデータの先頭アドレス(セクタ番号)が、ブロック1の途中であり、ドライバデータバッファ1201のデータが1ブロック分あり、A2とA3との間でアドレスがブロック境界に跨ることが示されている。このように、データが書き込み先のアドレスにおいては連続していても、ブロックの境界に跨るときは、1ブロック分のデータをフラッシュメモリ205に書き込むのは、2ブロック分のリード・モディファイ・ライトの処理が必要となり、さらにA3の後続のデータがまた1ブロック分連続していると、それらも2ブロック分のリード・モディファイ・ライトの処理が必要となるので無駄が大きい。
したがって、フィルタドライバ1030は、ドライバデータバッファ1201のデータにブロック境界があるか否か判定する(S1122)。ここで、データにブロック境界があるというのは、データの書き込み先のセクタのいずれかが、ブロックの終端、つまりブロックの最後のセクタと一致する場合をいう。データバッファ1201の先頭から、書き込み先のアドレスがブロックの終端までのデータ(A1+A2)を、フラッシュメモリ205の書き込み先ブロック(図12の例ではブロック1)へ書き込みを行なう。ここで、データの書き込み先がブロック境界に一致するとは、また、書き込み先ブロック(図12の例ではブロック1)への書き込みは、書き込み先ブロックのメモリへの読み込みとデバイスドライバ1040に指示し、書き込み先ブロックの消去をデバイスドライバ1040に指示し、読み込まれたメモリ上のブロックデータにA1+A2を追加修正し、追加修正したメモリ上のブロックデータの書き込み先ブロックへの書き込みをデバイスドライバ1040に指示することによって行なう。
本実施の形態では、フィルタドライバ1030により、ブロック単位の書き込みを行なうようにしたが、これに限定されない。デバイスドライバに上記のフィルタドライバの機能を組み込んで、実施しても良い。あるいは、ファイルシステムに上記のフィルタドライバの機能を組み込んで、実施しても良いのは勿論である。
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
本発明の方法を、コンピュータシステムを用いて実現するためのコンピュータプログラムであるとしてもよいし、前記プログラムを表すデジタル信号であるとしてもよい。
また、本発明は、前記プログラム又は前記デジタル信号を記録したコンピュータ読取り可能な記録媒体、例えば半導体メモリ等であるとしてもよい。
また、本発明は、電気通信回線、無線又は有線通信回線、若しくはインターネットに代表されるネットワーク等を経由して伝送される前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
本発明に係るファイル記録装置は、ビデオなどの映像、音声等の大量データを能率的に記録でき、これらの大量データを記録し配布する産業、たとえば音楽産業、情報産業等で利用される。
本発明に係るファイル記録装置の第1の実施の形態の構成を示す図である。 上記実施の形態のメモリカードの構成を示す図である。 上記実施の形態におけるフラッシュメモリのフォーマットの一例を示す図である。 上記実施の形態におけるファイルバッファのデータの蓄積の様子と、フラッシュメモリに書き込まれる一例を示す図である。 上記実施の形態のファイル記録の全体の処理手順を示すフローチャートである。 上記実施の形態のファイル記録のオープン等の処理手順を示すフローチャートである。 上記実施の形態のファイル記録の書き込み要求の処理手順を示すフローチャートである。 本発明に係るファイル記録装置の第2の実施の形態におけるファイルバッファのデータの蓄積の様子とフラッシュメモリに書き込まれる一例を示す図である。 上記実施の形態の書き込み要求の処理手順を示すフローチャートである。 本発明に係るファイル記録装置の第3の実施の形態におけるソフトウェアの階層構成を示す図である。 上記実施の形態のフィルタドライバの処理手順を示すフローチャートである。 上記実施の形態のデータバッファのデータとフラッシュメモリのブロックとの関係を示す図である。
符号の説明
110 メモリカード
120 ファイルバッファ
125 書き込みバッファ
130 入出力要求受付部
140 データ蓄積部
160 ファイル書込部
190 ファイル管理部

Claims (7)

  1. クラスタをファイルに含まれるデータへの記録割当単位とし、連続した所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体に、データを記録するファイル記録装置であって、
    各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付手段と、
    複数のファイルにそれぞれ対応する複数のファイルバッファと、
    前記書き込み要求されたデータをそれぞれ前記ファイルバッファに各別に蓄積させるデータ蓄積手段と、
    前記データ蓄積手段により蓄積されたデータのサイズがブロックサイズ以上であるか否かを判定する判定手段と、
    判定が肯定的であるとき、前記データ蓄積手段により蓄積されたデータのうち、ブロックサイズ分のデータを取り出し、前記記録媒体の空きブロックに書き込む書込手段とを備え
    前記判定手段は、各ファイルバッファのデータサイズをクラスタサイズで除した商の合計が前記所定数以上のとき、蓄積されたデータがブロックサイズ以上と判定し、
    前記書込手段は、前記各ファイルバッファからクラスタのサイズの単位で前記所定数のクラスタ分のデータを取り出し、前記空きブロックに書き込む
    ことを特徴とするファイル記録装置。
  2. 前記判定手段は、前記蓄積手段にて最近蓄積された特定のファイルバッファのデータサイズがブロックサイズ以上のとき、蓄積されたデータがブロックサイズ以上と判定し、
    前記書込手段は、前記特定のファイルバッファの先頭からブロックサイズ分のデータを取り出し、取り出したデータを前記空きブロックに書き込むことを特徴とする請求項1に記載のファイル記録装置。
  3. 割り当てられた前記空きブロックに前記書込手段が書き込む前に、前記空きブロックの消去を行なう消去手段をさらに備えることを特徴とする請求項1に記載のファイル記録装置。
  4. 複数のファイルにそれぞれ対応する複数のファイルバッファを備え、クラスタをファイルに含まれるデータへの記録割当単位とし、連続した所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体に、データを記録するファイル記録装置の制御方法であって、
    受付手段により、各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付ステップと、
    蓄積手段により、前記書き込み要求されたデータをそれぞれ前記ファイルバッファに各別に蓄積させるデータ蓄積ステップと、
    判定手段により、前記データ蓄積ステップにより蓄積されたデータのサイズがブロックサイズ以上であるか否かを判定する判定ステップと、
    書込手段により、判定が肯定的であるとき、前記データ蓄積ステップにより蓄積されたデータのうち、ブロックサイズ分のデータを取り出し、前記記録媒体の空きブロックに書き込む書込ステップとを有し、
    前記判定ステップは、各ファイルバッファのデータサイズをクラスタサイズで除した商の合計が前記所定数以上のとき、蓄積されたデータがブロックサイズ以上と判定し、
    前記書込ステップは、前記各ファイルバッファからクラスタのサイズの単位で前記所定数のクラスタ分のデータを取り出し、前記空きブロックに書き込む
    ことを特徴とする制御方法。
  5. 複数のファイルにそれぞれ対応する複数のファイルバッファを備え、クラスタをファイルに含まれるデータへの記録割当単位とし、連続した所定数のクラスタで構成されるブロックの単位で消去が必要な記録媒体に、データを記録するファイル記録装置に、
    各ファイルのデータの前記記録媒体への書き込み要求を受け付ける受付ステップと、
    前記書き込み要求されたデータをそれぞれ前記ファイルバッファに各別に蓄積させるデータ蓄積ステップと、
    前記データ蓄積ステップにより蓄積されたデータのサイズがブロックサイズ以上であるか否かを判定する判定ステップと、
    判定が肯定的であるとき、前記データ蓄積ステップにより蓄積されたデータのうち、ブロックサイズ分のデータを取り出し、前記記録媒体の空きブロックに書き込む書込ステップとを実行させ
    前記判定ステップは、各ファイルバッファのデータサイズをクラスタサイズで除した商の合計が前記所定数以上のとき、蓄積されたデータがブロックサイズ以上と判定し、
    前記書込ステップは、前記各ファイルバッファからクラスタのサイズの単位で前記所定数のクラスタ分のデータを取り出し、前記空きブロックに書き込む
    ことを特徴とするプログラム。
  6. 前記ファイル記録装置は、さらに、ドライバデータバッファを備え、
    前記ファイル記録装置に、さらに、
    前記記録媒体における書き込み先アドレスを含む書き込みの要求を受け付ける受付ステップと、
    前記ドライバデータバッファが空きでないとき、前記書き込みのデータと前記ドライバデータバッファのデータとが前記記録媒体のアドレスにおいて連続するか否かを判定する第1判定ステップと、
    肯定と判定されたとき、書き込みのデータを前記ドライバデータバッファに蓄積させるデータ蓄積ステップと、
    前記ドライバデータバッファに蓄積されたデータの書き込み先がブロックの境界に一致するか否かを判定する第2判定ステップと、
    第2判定ステップにて肯定と判定されたとき、前記ドライバデータバッファの先頭から前記ブロックの境界までのデータを前記記録媒体に書き込む書込ステップとを実行させる
    ための請求項5に記載のプログラム。
  7. 前記プログラムは前記記録媒体のフィルタドライバであることを特徴とする請求項6に記載のプログラム。
JP2005515557A 2003-11-18 2004-10-07 ファイル記録装置 Active JP4287433B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003387886 2003-11-18
JP2003387886 2003-11-18
PCT/JP2004/015182 WO2005050453A1 (ja) 2003-11-18 2004-10-07 ファイル記録装置

Publications (2)

Publication Number Publication Date
JPWO2005050453A1 JPWO2005050453A1 (ja) 2007-06-07
JP4287433B2 true JP4287433B2 (ja) 2009-07-01

Family

ID=34616171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005515557A Active JP4287433B2 (ja) 2003-11-18 2004-10-07 ファイル記録装置

Country Status (6)

Country Link
US (1) US7610434B2 (ja)
EP (1) EP1686482B1 (ja)
JP (1) JP4287433B2 (ja)
KR (1) KR101087906B1 (ja)
CN (1) CN100543702C (ja)
WO (1) WO2005050453A1 (ja)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4845482B2 (ja) * 2005-11-01 2011-12-28 株式会社東芝 記録再生装置及び記録方法
JP5002201B2 (ja) 2006-06-30 2012-08-15 株式会社東芝 メモリシステム
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
WO2008070813A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a front-end, distributed raid
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8560760B2 (en) * 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
KR100904758B1 (ko) * 2007-02-08 2009-06-29 삼성전자주식회사 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법
US7657572B2 (en) 2007-03-06 2010-02-02 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
US20090094358A1 (en) * 2007-10-05 2009-04-09 Davis Gregg A Data Bridge Maintenance Utilizing Data Traffic Log Change
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US20090271563A1 (en) * 2008-04-28 2009-10-29 Microsoft Corporation Flash memory transactioning
US20090322905A1 (en) * 2008-06-25 2009-12-31 Nikon Corporation Storage control device
JP2010009206A (ja) * 2008-06-25 2010-01-14 Nikon Corp 記録制御装置
TWI363272B (en) * 2008-07-11 2012-05-01 Silicon Motion Inc Data programming method and device
KR101506578B1 (ko) * 2008-07-17 2015-03-30 삼성전자주식회사 데이터 보안을 위한 파일 시스템 구성 방법 및 장치, 그에의해 만들어진 데이터 보안 영역에 접근하는 방법 및 장치,그에 따른 데이터 저장 장치
US8612668B2 (en) * 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
JP5254879B2 (ja) * 2009-05-22 2013-08-07 富士通テン株式会社 データ書込装置、データ書込方法及びプログラム
WO2011031796A2 (en) 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US8289801B2 (en) 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
EP2476079A4 (en) * 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
JP4714291B2 (ja) * 2009-09-30 2011-06-29 株式会社東芝 情報記録装置、情報記録方法及び情報記録用プログラム
JP2011209973A (ja) * 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
CN103262054B (zh) 2010-12-13 2015-11-25 桑迪士克科技股份有限公司 用于自动提交存储器的装置、***和方法
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
WO2012100087A2 (en) 2011-01-19 2012-07-26 Fusion-Io, Inc. Apparatus, system, and method for managing out-of-service conditions
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US20140310493A1 (en) * 2013-04-11 2014-10-16 International Business Machines Corporation Migrating data across storages with dissimilar allocation sizes
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9262316B2 (en) 2013-12-09 2016-02-16 International Business Machines Corporation Recording dwell time in a non-volatile memory system
US9390003B2 (en) 2013-12-09 2016-07-12 International Business Machines Corporation Retirement of physical memory based on dwell time
JP2015138272A (ja) * 2014-01-20 2015-07-30 ソニー株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
US9979970B2 (en) * 2014-08-08 2018-05-22 Qualcomm Incorporated System and method for determining buffer fullness for display stream compression
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
KR20170015708A (ko) * 2015-07-30 2017-02-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
JP6424330B2 (ja) * 2015-10-13 2018-11-21 株式会社アクセル 情報処理装置、及び情報処理方法
US10802712B2 (en) * 2015-10-13 2020-10-13 Axell Corporation Information processing apparatus and method of processing information
CN107209719B (zh) * 2015-12-03 2018-10-09 华为技术有限公司 一种阵列控制器、固态硬盘和控制固态硬盘写数据的方法
CN110119418B (zh) * 2018-01-16 2024-07-16 北京京东尚科信息技术有限公司 数据导出方法和装置
US10936199B2 (en) * 2018-07-17 2021-03-02 Silicon Motion, Inc. Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
JP2669365B2 (ja) 1994-11-24 1997-10-27 日本電気株式会社 書換え可能なromファイル装置
JPH1069420A (ja) * 1996-08-29 1998-03-10 Sony Corp 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法
US5745418A (en) * 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
JP3640802B2 (ja) * 1998-06-08 2005-04-20 富士通株式会社 データバックアップ方式
JP2000057039A (ja) 1998-08-03 2000-02-25 Canon Inc アクセス制御方法及び装置及びファイルシステム及び情報処理装置
JP3616985B2 (ja) 1998-10-13 2005-02-02 株式会社日立製作所 記憶装置管理方法および記憶装置管理システム
JP3632543B2 (ja) 1999-02-19 2005-03-23 三菱電機株式会社 データ記憶方法および情報処理装置
US6571312B1 (en) 1999-02-19 2003-05-27 Mitsubishi Denki Kabushiki Kaisha Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6141249A (en) * 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
RU2257609C2 (ru) 1999-10-21 2005-07-27 Мацусита Электрик Индастриал Ко., Лтд. Устройство доступа к полупроводниковой карте памяти, компьютерно-считываемый носитель записи, способ инициализации и полупроводниковая карта памяти
US6691205B2 (en) * 2001-03-05 2004-02-10 M-Systems Flash Disk Pioneers Ltd. Method for using RAM buffers with simultaneous accesses in flash based storage systems
JP4238514B2 (ja) 2002-04-15 2009-03-18 ソニー株式会社 データ記憶装置

Also Published As

Publication number Publication date
WO2005050453A1 (ja) 2005-06-02
CN1906596A (zh) 2007-01-31
EP1686482A1 (en) 2006-08-02
US7610434B2 (en) 2009-10-27
EP1686482B1 (en) 2013-03-06
KR20060114698A (ko) 2006-11-07
JPWO2005050453A1 (ja) 2007-06-07
US20070088666A1 (en) 2007-04-19
EP1686482A4 (en) 2009-03-25
KR101087906B1 (ko) 2011-11-30
CN100543702C (zh) 2009-09-23

Similar Documents

Publication Publication Date Title
JP4287433B2 (ja) ファイル記録装置
US6823417B2 (en) Memory controller for memory card manages file allocation table
US6385690B1 (en) Recording method, managing method, and recording apparatus
KR100952135B1 (ko) 순차적 기록만을 사용하는 플래시 관리 시스템
US7401174B2 (en) File system defragmentation and data processing method and apparatus for an information recording medium
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
JP5481493B2 (ja) アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム
JP4722704B2 (ja) 情報記録媒体、情報記録媒体に対するアクセス装置及びアクセス方法
JPWO2005103903A1 (ja) 不揮発性記憶システム
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP4502375B2 (ja) ファイルシステムおよびその制御方法
JP4130808B2 (ja) フォーマット方法
JP2005202942A (ja) 情報記録媒体、データ処理装置及びデータ処理方法
WO2010001606A1 (ja) コントローラ、情報記録装置、アクセス装置、情報記録システム、及び情報記録方法
JP2008269520A (ja) 記録装置及び記録方法
JP2011076441A (ja) 情報記録装置、情報記録方法及び情報記録用プログラム
JP2005301885A (ja) データ記憶媒体へのアクセス方法,情報処理装置,データ記憶媒体へのアクセスプログラム
JP2006155461A (ja) 情報処理装置、情報処理方法、並びにプログラム
JP7435470B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP2001325135A (ja) データ記憶再生装置及びデータ記憶再生方法
JP4881469B1 (ja) 情報処理装置、及び情報処理方法
KR100592859B1 (ko) 기록매체제어장치및방법
JP2016015059A (ja) 記録装置
JP2005149620A (ja) 記憶装置およびファイルシステム
JP2004310656A (ja) 半導体ファイルシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090303

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090326

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4287433

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130403

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130403

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140403

Year of fee payment: 5