JP3967121B2 - ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム - Google Patents

ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム Download PDF

Info

Publication number
JP3967121B2
JP3967121B2 JP2001377610A JP2001377610A JP3967121B2 JP 3967121 B2 JP3967121 B2 JP 3967121B2 JP 2001377610 A JP2001377610 A JP 2001377610A JP 2001377610 A JP2001377610 A JP 2001377610A JP 3967121 B2 JP3967121 B2 JP 3967121B2
Authority
JP
Japan
Prior art keywords
bank
data
update data
merge
file system
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.)
Expired - Fee Related
Application number
JP2001377610A
Other languages
English (en)
Other versions
JP2003177974A (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.)
Renesas Technology Corp
Original Assignee
Renesas Technology 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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2001377610A priority Critical patent/JP3967121B2/ja
Priority to US10/166,636 priority patent/US6871259B2/en
Publication of JP2003177974A publication Critical patent/JP2003177974A/ja
Application granted granted Critical
Publication of JP3967121B2 publication Critical patent/JP3967121B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムのファイルシステムに関し、特に、フラッシュメモリ等の不揮発性半導体記憶装置を用いたファイルシステムに関する。
【0002】
【従来の技術】
フラッシュメモリは、電気的に内容を書き換えることができるEEPROM(Electrically Erasable and Programmable ROM)の一種であって、DRAM(Dynamic Random Access Memory)より安価である、バックアップ電源が不要である、ビットの変更が不可逆的である、データの消去はバンク単位である、バンクの消去に時間を要する、バンクの消去回数に限界があるという特徴を有する。
【0003】
このような特徴を有するフラッシュメモリは、携帯電話、PDA(Personal Digital Assistant)、デジタルスチルカメラなどにおいて、データ記憶用デバイスとして広く用いられている。これらの機器において、記憶するデータの種類が多くなり、データの保存、削除、移動等を頻繁に行なうため、フラッシュメモリ上で動作するファイルシステムが必要になる。フラッシュメモリは、ビットの変更が不可逆的(ビット1から0には変更できるが、逆のビット0から1には無制限に変更できない)であるという特徴を有するため、フラッシュメモリ上でファイルシステムを構築する場合には、以下のような問題点がある。すなわち、ファイルの内容を変更すると、その度にバンクを消去して、変更後の内容を書込まなければならない。本発明に関連するメモリについて、図を用いて説明する。
【0004】
図48に、本発明に関連するメモリの構造を示す。図48に示すように、このメモリ122は、フラッシュメモリ200とRAM300とを含む。フラッシュメモリ200は、31個のデータ用バンク210と、1個のマージ用バンクとを含む。1個のバンクは、100個のファイルブロックを含む。RAM300は、キャッシュメモリとして1個のファイルブロックを含む。ファイルの書換え命令が実行されると、ファイルに書込まれるデータがキャッシュメモリであるRAM300に書込まれ、その後、フラッシュメモリ200がアクセスされて、そのデータが所定のファイルブロックに書込まれる。
【0005】
図49〜図53を参照して、このメモリの動作について説明する。以下の説明では、ファイルブロック(100)、ファイルブロック(210)、ファイルブロック(250)、ファイルブロック(300)、ファイルブロック(301)の順序でデータが書込まれると想定する。図面中の丸数字の昇順に動作が進む。以下の数字と丸数字とは対応する。
【0006】
1)マージ用バンク220である第31番目のバンクが初期状態で(ビットが全て1)、1番目の書込み対象のファイルブロック(100)がフラッシュメモリ200のデータ用バンク210の第1番目のバンクから、RAM300のエントリC(0)にコピーされる。
【0007】
2)RAM300のエントリC(0)にコピーされたファイルブロック(100)のデータが更新される。
【0008】
3)RAM300のエントリC(0)のファイルブロック(100)が、マージ用バンク220である第31番目のバンクにコピーされる。
【0009】
4)データ用バンク210の中の第1番目のバンクから、ファイルブロック(100)以外のファイルブロックがマージ用バンク220である第31番目のバンクにコピーされる。
【0010】
5)第1番目のバンクが消去されて初期状態にされ、この第1番目のバンクが新たなマージ用バンク220になる。第31番目のバンクには、更新されたファイルブロック(100)を含む新たなファイルブロック(100)〜ファイルブロック(199)が記憶されている。
【0011】
6)マージ用バンク220である第1番目のバンクが初期状態で、2番目の書込み対象のファイルブロック(210)がフラッシュメモリ200のデータ用バンク210の第2番目のバンクから、RAM300のエントリC(0)にコピーされる。
【0012】
7)RAM300のエントリC(0)にコピーされたファイルブロック(210)のデータが更新される。
【0013】
8)RAM300のエントリC(0)のファイルブロック(210)が、マージ用バンク220である第1番目のバンクにコピーされる。
【0014】
9)データ用バンク210の中の第2番目のバンクから、ファイルブロック(210)以外のファイルブロックがマージ用バンク220である第1番目のバンクにコピーされる。
【0015】
10)第2番目のバンクが消去されて初期状態にされ、この第2番目のバンクが新たなマージ用バンク220になる。第1番目のバンクには、更新されたファイルブロック(210)を含む新たなファイルブロック(200)〜ファイルブロック(299)が記憶されている。
【0016】
11)マージ用バンク220である第2番目のバンクが初期状態で、3番目の書込み対象のファイルブロック(250)がフラッシュメモリ200のデータ用バンク210の第2番目のバンクから、RAM300のエントリC(0)にコピーされる。
【0017】
12)RAM300のエントリC(0)にコピーされたファイルブロック(250)のデータが更新される。
【0018】
13)RAM300のエントリC(0)のファイルブロック(250)が、マージ用バンク220である第2番目のバンクにコピーされる。
【0019】
14)データ用バンク210の中の第2番目のバンクから、ファイルブロック(250)以外のファイルブロックがマージ用バンク220である第2番目のバンクにコピーされる。
【0020】
15)第1番目のバンクが消去されて初期状態にされ、この第1番目のバンクが新たなマージ用バンク220になる。第2番目のバンクには、更新されたファイルブロック(250)を含む新たなファイルブロック(200)〜ファイルブロック(299)が記憶されている。
【0021】
16)マージ用バンク220である第1番目のバンクが初期状態で、4番目の書込み対象のファイルブロック(300)がフラッシュメモリ200のデータ用バンク210の第3番目のバンクから、RAM300のエントリC(0)にコピーされる。
【0022】
17)RAM300のエントリC(0)にコピーされたファイルブロック(300)のデータが更新される。
【0023】
18)RAM300のエントリC(0)のファイルブロック(300)が、マージ用バンク220である第1番目のバンクにコピーされる。
【0024】
19)データ用バンク210の中の第3番目のバンクから、ファイルブロック(300)以外のファイルブロックがマージ用バンク220である第1番目のバンクにコピーされる。
【0025】
20)第3番目のバンクが消去されて初期状態にされ、この第3番目のバンクが新たなマージ用バンクになる。第1番目のバンクには、更新されたファイルブロック(300)を含む新たなファイルブロック(300)〜ファイルブロック(399)が記憶されている。
【0026】
21)マージ用バンク220である第3番目のバンクが初期状態で、5番目の書込み対象のファイルブロック(301)がフラッシュメモリ200のデータ用バンク210の第1番目のバンクから、RAM300のエントリC(0)にコピーされる。
【0027】
22)RAM300のエントリC(0)にコピーされたファイルブロック(301)のデータが更新される。
【0028】
23)RAM300のエントリC(0)のファイルブロック(301)が、マージ用バンク220である第3番目のバンクにコピーされる。
【0029】
24)データ用バンク210の中の第1番目のバンクから、ファイルブロック(301)以外のファイルブロックがマージ用バンク220である第3番目のバンクにコピーされる。
【0030】
25)第1番目のバンクが消去されて初期状態にされ、この第1番目のバンクが新たなマージ用バンク220になる。第3番目のバンクには、更新されたファイルブロック(301)を含む新たなファイルブロック(300)〜ファイルブロック(399)が記憶されている。
【0031】
このようにして、5個のファイルブロックを更新するのに、バンクを5回消去する必要がある。前述の説明のように、このようなバンク単位の消去に必要とする時間は長く、消去の回数には一定の制限がある。
【0032】
【発明が解決しようとする課題】
しかしながら、従来のメモリでは、バンクの消去が頻繁に発生するため、実行速度が遅くなるとともに、フラッシュメモリの寿命が短くなる。また、従来のメモリでは、予期しないタイミングで電源が切られたり、リセットされたりすると、ファイルシステム全体が破壊されて、再フォーマットしないと使用できなくなる場合がある。このような事態になると、記憶されていたデータは消滅する。
【0033】
本発明は、上述の課題を解決するためになされたものであって、フラッシュメモリを用いて、予期しない電源遮断に対してもバックアップ機能を有し、かつ高速および長寿命のファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラムを提供することである。
【0034】
【課題を解決するための手段】
第1の発明に係るファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含む。各バンクは、複数のブロックを含む。不揮発性半導体記憶装置は、バンク単位で消去が可能である。複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割される。ファイルシステムは、データ書換命令に対応する更新データを、更新データ用バンクに格納するための更新データ格納手段と、予め定められた第1の条件が満足されると、更新データ用バンクに格納された更新データの中から、最新の更新データを選択するための最新データ選択手段と、最新データ選択手段に接続され、選択された最新の更新データを処理するための処理手段とを含む。処理手段は、選択された最新の更新データを、マージ用バンクの第1のブロックに格納するための第1のマージデータ格納手段と、データバンクから、最新の更新データに関連するデータを選択するための関連データ選択手段と、選択されたデータを、マージ用バンクの第2のブロックに格納するための第2のマージデータ格納手段と、最新の更新データと最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定するための設定手段とを含む。
【0035】
第1の発明によると、不揮発性半導体記憶装置として、たとえばフラッシュメモリを実装する。データ書換命令が発生すると、その命令に対応する更新データが更新データ用バンクの空きブロックに格納される。たとえば、それが繰返されて、更新データ用バンクの空きブロックがない状態になると、更新データ用バンクの中から、最新の更新データが選択される。選択された最新の更新データがマージ用バンクの第1のブロックに、最新の更新データに関連するデータがマージ用バンクの第2のブロックに、格納される。具体的には、ある1つのバンクに第0のブロックから第99のブロックまでの100個のブロックを含む場合を説明する。第0のブロックに格納されるデータが、更新データ用バンクに格納されている場合、第0のブロックに対応する更新データの中で最新のものを調べ、そのブロックがマージ用バンクの第1のブロックに、第1〜第99の99個のブロックが関連するデータとしてマージ用バンクの第2のブロックに格納される。100個のブロックが格納されたマージ用バンクが、新たなデータバンクに設定される。これにより、更新データ用バンクの空きブロックがなくなるまでは、更新データ用バンクに更新データが記憶される。更新データ用バンクの空きブロックがなくなると、その更新データ用バンクの中の全更新データに対して処理が行なわれるが、同一ブロックの更新データが複数存在する場合は、その中で最新の更新データに対してのみ処理が行なわれる。また、同一バンクに含まれるブロックの更新データに対する処理は同時に行われるので、最大で100ブロック分の更新データに対する処理においても1回の消去で済む。データ書換命令が発生する毎にその命令に関するデータが格納されたバンクに対してバンクの消去が実行される場合に比較して、大幅に消去の回数を減少させることができる。その結果、フラッシュメモリを用いた高速および長寿命のファイルシステムを提供することができる。
【0036】
第2の発明に係るファイルシステムは、第1の発明の構成に加えて、第1の条件は、更新データ用バンクに、空きブロックがないという条件である。
【0037】
第2の発明によると、更新データ用バンクの空きブロックがなくなるまでは、更新データの処理が実行されず、バンクの消去も発生しない。
【0038】
第3の発明に係るファイルシステムは、第1の発明の構成に加えて、2以上のブロックを格納する揮発性半導体記憶装置をさらに含む。更新データ格納手段は、更新前のデータを、揮発性半導体記憶装置のブロックに格納するための手段と、揮発性半導体記憶装置のブロックの中から、データ書換命令に対応するデータが格納されたブロックを選択するための手段と、選択されたブロックに格納された、更新前のデータを更新するための手段と、更新されたデータを、更新データ用バンクに格納するための手段とを含む。
【0039】
第3の発明によると、揮発性半導体記憶装置としてRAMを実装する。データ書換命令が発生すると、その命令に対応する更新データがRAMに格納される。次のデータ書換命令が、先ほど更新されたデータを再び更新する場合、RAMに格納された更新データを更新することができる。これにより、更新データ用バンクの空きブロックがなくなる回数を減少させることができ、その結果、フラッシュメモリを用いた高速および長寿命のファイルシステムを提供することができる。
【0040】
第4の発明に係るファイルシステムは、第1の発明の構成に加えて、複数のデータバンクの中から、全てのブロックが初期化された状態であるバンクを抽出するための抽出手段と、抽出手段により抽出されたバンクを、マージ用バンクに設定するための設定手段とをさらに含む。
【0041】
第4の発明によると、抽出手段は、全てのブロックが初期化された状態であるバンクを抽出する。これにより、繰返し同じバンクへのデータ書込命令が発生しても、同じバンクがマージ用バンクに設定されることがなくなり、特定のバンクが消去されることを回避できる。その結果、バンクの消去回数が平均化されて、極端に消去回数の多いバンクがなくなり、より長寿命のファイルシステムを提供することができる。
【0042】
第5の発明に係るファイルシステムは、第1の発明の構成に加えて、処理手段は、関連するデータが格納されていたデータバンクを初期化して、新たな更新データ用バンクに設定するための更新用バンク設定手段と、更新データ用バンクであったバンクを初期化して、新たなマージ用バンクに設定するためのマージ用バンク設定手段とをさらに含む。
【0043】
第5の発明によると、データバンク、更新用バンクおよびマージ用バンクが、入れ替わるので、同じ更新データ用バンクに更新データが書込まれることを回避できる。その結果、極端に消去回数の多いバンクがなくなり、より長寿命のファイルシステムを提供することができる。
【0044】
第6の発明に係るファイルシステムは、第5の発明の構成に加えて、処理手段は、設定されたデータバンクが最新のデータバンクであることを示す情報を作成するための作成手段をさらに含む。
【0045】
第6の発明によると、新たなデータバンクの作成後であって、関連するデータが格納されていたデータバンクを初期化する前に、電源が遮断されると、同じデータバンクが並存する。そのような場合でも、作成手段により作成された最新のデータバンクであることを示す情報に基づいて、新たに作成されたデータバンクを特定できる。その結果、フラッシュメモリを用いて、予期しない電源遮断に対してもバックアップ機能を有するファイルシステムを提供することができる。
【0046】
第7の発明に係るファイルシステムは、第1の発明の構成に加えて、予め定められた第2の条件が満足されると、更新データ用バンクに格納されたデータに関する管理情報を、不揮発性半導体記憶装置に格納するための管理情報格納手段と、管理情報が格納されたことに応答して、更新データバンクの各ブロック毎に、更新データに対応付けて、管理情報が格納されたことを示す情報を格納するための情報格納手段とをさらに含む。
【0047】
第7の発明によると、たとえば、データ書換命令に対応する複数のブロックに対する更新が終了すると、管理情報格納手段により、管理情報がフラッシュメモリに格納される。更新データバンクのこれら複数のブロックには、管理情報が格納されたことを示す情報を格納される。これにより、フラッシュメモリに管理情報が格納されたデータと、そうではないデータとを、管理情報が格納されたこと表わす情報に基づいて識別できる。電源が遮断されても、この情報に基づいて、管理情報がフラッシュメモリに格納されているか否かを判断できる。電源再投入時には、フラッシュメモリに格納された管理情報に基づいて、データを再現することができる。その結果、フラッシュメモリを用いて、予期しない電源遮断に対してもバックアップ機能を有するファイルシステムを提供することができる。
【0048】
第8の発明に係るファイルシステムは、第7の発明の構成に加えて、最新データ選択手段は、更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データであって、管理情報が格納されたことを示す情報が対応付けられた更新データを選択するための手段を含む。
【0049】
第8の発明によると、更新データの中から選択される更新データは、管理情報が格納されている更新データである。これにより、フラッシュメモリに管理情報が格納された更新データを、処理対象の更新データとして選択できる。フラッシュメモリに管理情報が格納されている更新データに基づいて処理が実行される。この処理の途中で電源遮断が発生しても、すでに管理情報がフラッシュメモリに格納されている更新データに基づいて処理が行なわれているので、電源再投入時にはフラッシュメモリに格納された管理情報に基づいて、データを再現できる。その結果、十分なバックアップ機能を有するファイルシステムを提供することができる。
【0050】
第9の発明に係るファイルシステムは、第7の発明の構成に加えて、更新用バンク設定手段は、関連するデータが格納されていたバンクを初期化して、初期化されたバンクに、管理情報が格納されたことを示す情報が対応付けられていない更新データを格納して、新たな更新データ用バンクに設定するための手段を含む。
【0051】
第9の発明によると、管理情報がフラッシュメモリに格納されていない更新データは、更新データ用バンクに格納する。これにより、更新データ用バンクの空きブロックがなくなった場合であっても、フラッシュメモリに管理情報が格納されていない更新データを更新処理の対象として、引継ぐことができる。
【0052】
第10の発明に係るファイルシステムは、第7の発明の構成に加えて、第2の条件は、データ書換命令に対応する複数のブロックに対する更新が終了したという条件である。
【0053】
第10の発明によると、データ書換命令によるデータの書換えが複数のブロックにおよぶ場合、その複数のブロックに対する更新が終了すると、更新データ用バンクに格納されたデータに関する管理情報が、フラッシュメモリに格納される。
【0054】
第11の発明に係るファイルシステムは、第7の発明の構成に加えて、第2の条件は、更新データ用バンクに、空きブロックがないという条件である。
【0055】
第11の発明によると、更新データ用バンクの空きブロックがなくなるまでは、管理情報の処理が実行されず、バンクの消去も発生しない。
【0056】
第12の発明に係るファイルシステムは、第7の発明の構成に加えて、書込まれるデータの容量が、更新データ用バンクの大きさよりも大きい場合には、更新データ用のバンクの大きさ以下の容量のデータに分割するための分割手段をさらに含む。第2の条件は、分割されたデータが書込まれたという条件である。
【0057】
第12の発明によると、更新データ用バンクの大きさよりも大きなデータでも書込命令を実行できる。
【0058】
第13の発明に係るファイルシステムは、第7の発明の構成に加えて、書込まれるデータの容量が、更新データ用バンクの大きさよりも大きい場合には、マージ用バンクの大きさと同じ容量のデータに分割するための分割手段と、分割されたデータをマージ用バンクに格納するための手段とをさらに含む。
【0059】
第13の発明によると、更新データ用バンクの大きさよりも大きなデータでも、そのデータをマージ用バンクの大きさに分割して、更新データ用バンクを経由することなく、マージ用バンクに格納できる。これにより、更新データ用バンクへの消去回数を減少させることができる。
【0060】
第14の発明に係るファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含む。揮発性半導体装置は、少なくとも1つの更新データ用バンクを含む。各バンクは複数のブロックを含む。不揮発性半導体記憶装置は、バンク単位で消去が可能である。不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割される。ファイルシステムは、データ書換命令に対応する更新データを、更新データ用バンクに格納するための更新データ格納手段と、予め定められた第1の条件が満足されると、更新データ用バンクに含まれる複数のブロックに格納された更新データの中から、各ブロックに対する最新の更新データを選択するための最新データ選択手段と、最新データ選択手段に接続され、選択された最新の更新データを処理するための処理手段とを含む。処理手段は、選択された最新の更新データを、マージ用バンクの第1のブロックに格納するための第1のマージデータ格納手段と、データバンクから、最新の更新データに関連するデータを選択するための関連データ選択手段と、選択されたデータを、マージ用バンクの第2のブロックに格納するための第2のマージデータ格納手段と、最新の更新データと最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定するための設定手段とを含む。
【0061】
第14の発明によると、バックアップ機能を有する揮発性半導体記憶装置として、たとえばSRAM(Static Random Access Memory)を実装する。このSRAMは、更新データ用バンクを含む。SRAMは、データの書込みおよび読出しに関する制限がないため、更新用データ用バンクには、同じブロックに対する書込命令が発生すると、SRAM上の同じブロックにデータが書込まれる。これにより、SRAM上の更新データ用バンクの空きブロックがなくなる回数が減少する。その結果、フラッシュメモリを用いた高速および長寿命のファイルシステムを提供することができる。
【0062】
第15の発明に係るファイルシステムは、第14の発明の構成に加えて、第1の条件は、更新データ用バンクに、空きブロックがないという条件である。
【0063】
第15の発明によると、更新データ用バンクの空きブロックがなくなると、更新データの処理が実行される。この更新データの処理が実行されるタイミングは、SRAM上に100個のブロックを有する更新データ用バンクが設定されている場合、101種類目のブロックに対する書込命令が発生したタイミングである。これにより、SRAM上の更新データ用バンクの空きブロックがなくなる回数が減少する。
【0064】
第16の発明に係る制御方法は、ファイルシステムを制御する方法である。このファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含む。各バンクは、複数のブロックを含む。不揮発性半導体記憶装置は、バンク単位で消去が可能である。複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割される。ファイルシステムを制御する方法は、データ書換命令に対応する更新データを、更新データ用バンクに格納する更新データ格納ステップと、予め定められた第1の条件が満足されると、更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、選択された最新の更新データを処理する処理ステップとを含む。処理ステップは、選択された最新の更新データを、マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、データバンクから、最新の更新データに関連するデータを選択する関連データ選択ステップと、選択されたデータを、マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、最新の更新データと最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む。
【0065】
第16の発明によると、不揮発性半導体記憶装置として、たとえばフラッシュメモリを実装する。データ書換命令が発生すると、その命令に対応する更新データが更新データ用バンクの空きブロックに格納される。たとえば、それが繰返されて、更新データ用バンクの空きブロックがなくなると、更新データ用バンクの中から、各ブロックに対する最新の更新データが選択される。選択された最新の更新データがマージ用バンクの第1のブロックに、最新の更新データに関連するデータがマージ用バンクの第2のブロックに、格納される。これにより、更新データ用バンクの空きブロックがなくなるまでは、更新データ用バンクに更新データが記憶される。更新データ用バンクの空きブロックがなくなると、その更新データ用バンクの中の全更新データに対して処理が行なわれるが、同一ブロックの更新データが複数存在する場合は、その中で最新の更新データに対してのみ処理が行なわれる。また、同一バンクに含まれるブロックの更新データに対する処理は同時に行なわれるので、最大で100ブロック分の更新データに対する処理においても1回の消去で済む。データ書換命令が発生する毎にその命令に関するデータが格納されたバンクに対してバンクの消去が実行される場合に比較して、大幅に消去の回数を減少させることができる。その結果、フラッシュメモリを用いた高速および長寿命のファイルシステムを制御する方法を提供することができる。
【0066】
第17の発明に係る制御方法は、ファイルシステムを制御する方法である.ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含む。揮発性半導体装置は、少なくとも1つの更新データ用バンクを含む。各バンクは複数のブロックを含む。不揮発性半導体記憶装置は、バンク単位で消去が可能である。不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割される。ファイルシステムを制御する方法は、データ書換命令に対応する更新データを、更新データ用バンクに格納する更新データ格納ステップと、予め定められた第1の条件が満足されると、更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、選択された最新の更新データを処理する処理ステップとを含む。処理ステップは、選択された最新の更新データを、マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、データバンクから、最新の更新データに関連するデータを選択する関連データ選択ステップと、選択されたデータを、マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、最新の更新データと最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む。
【0067】
第17の発明によると、バックアップ機能を有する揮発性半導体記憶装置として、たとえばSRAMを実装する。このSRAMは、更新データ用バンクを含む。SRAMは、データの書込みおよび読出しに関する制限がないため、更新用データ用バンクには、同じブロックに対する書込命令が発生すると、SRAM上の同じブロックにデータが書込まれる。これにより、SRAM上の更新データ用バンクの空きブロックがなくなる回数が減少する。その結果、フラッシュメモリを用いた高速および長寿命のファイルシステムを制御する方法を提供することができる。
【0068】
第18の発明に係るプログラムは、ファイルシステムを制御するためのプログラムである。ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含む。各バンクは、複数のブロックを含む。不揮発性半導体記憶装置は、バンク単位で消去が可能である。複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割される。プログラムはコンピュータに、データ書換命令に対応する更新データを、更新データ用バンクに格納する更新データ格納ステップと、予め定められた第1の条件が満足されると、更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、選択された最新の更新データを処理する処理ステップとを実行させる。処理ステップは、選択された最新の更新データを、マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、データバンクから、最新の更新データに関連するデータを選択する関連データ選択ステップと、選択されたデータを、マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、最新の更新データと最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む。
【0069】
第18の発明によると、不揮発性半導体記憶装置として、たとえばフラッシュメモリを実装する。データ書換命令が発生すると、その命令に対応する更新データが更新データ用バンクの空きブロックに格納される。たとえば、それが繰返されて、更新データ用バンクの空きブロックがなくなると、更新データ用バンクの中から、各ブロックに対する最新の更新データが選択される。選択された最新の更新データがマージ用バンクの第1のブロックに、最新の更新データに関連するデータがマージ用バンクの第2のブロックに、格納される。これにより、更新データ用バンクの空きブロックがなくなるまでは、更新データ用バンクに更新データが記憶される。更新データ用バンクの空きブロックがなくなると、その更新データ用バンクの中の全更新データに対して処理が行なわれるが、同一ブロックの更新データが複数存在する場合は、その中で最新の更新データに対してのみ処理が行なわれる。また、同一バンクに含まれるブロックの更新データに対する処理は同時に行なわれるので、最大で100ブロック分の更新データに対する処理においても1回の消去で済む。データ書換命令が発生する毎にその命令に関するデータが格納されたバンクに対してバンクの処理が実行される場合に比較して、大幅に消去の回数を減少させることができる。その結果、フラッシュメモリを用いた高速および長寿命のファイルシステムを制御するためのプログラムを提供することができる。
【0070】
第19の発明に係るプログラムは、ファイルシステムを制御するためのプログラムである。ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含む。揮発性半導体装置は、少なくとも1つの更新データ用バンクを含む。各バンクは複数のブロックを含む。不揮発性半導体記憶装置は、バンク単位で消去が可能である。不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割される。プログラムはコンピュータに、データ書換命令に対応する更新データを、更新データ用バンクに格納する更新データ格納ステップと、予め定められた第1の条件が満足されると、更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、選択された最新の更新データを処理する処理ステップとを実行させる。処理ステップはコンピュータに、選択された最新の更新データを、マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、データバンクから、最新の更新データに関連するデータを選択する関連データ選択ステップと、選択されたデータを、マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、最新の更新データと最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む。
【0071】
第19の発明によると、バックアップ機能を有する揮発性半導体記憶装置として、たとえばSRAMを実装する。このSRAMは、更新データ用バンクを含む。SRAMは、データの書込みおよび読出しに関する制限がないため、更新用データ用バンクには、同じブロックに対する書込命令が発生すると、SRAM上の同じブロックにデータが書込まれる。これにより、SRAM上の更新データ用バンクの空きブロックがなくなる回数が減少する。その結果、フラッシュメモリを用いた高速および長寿命のファイルシステムを制御するためのプログラムを提供することができる。
【0072】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【0073】
<第1の実施の形態>
本実施の形態に係るファイルシステムは、バンク単位に消去が可能な不揮発性ROM(フラッシュメモリ)のファイル制御に関するものである。このファイルシステムは、特に、何回もデータを書換える用途でフラッシュメモリを搭載する機器(携帯電話、PDA、ディジタルスチルカメラ等の携帯機器)に使用される。
【0074】
図1に、携帯機器1020の構成をブロック図形式で示す。図1に示すように、携帯機器1020は、相互にバスで接続されたCPU(Central Processing Unit)1200と、メモリ1220と、入力キー1100と、液晶モニタ1040とを含む。本実施の形態に係るファイルシステムを制御するプログラムは、メモリ1220の不揮発性メモリ部分(フラッシュメモリ)に予め記憶される。図1に示した携帯機器のハードウェア自体は一般的なものである。したがって、本発明の本質的な部分は、メモリ1220などの記録媒体に記録されたソフトウェアである。
【0075】
図2を参照して、メモリ1220の内部構造について説明する。メモリ1220は、フラッシュメモリ2000とRAM3000とを含む。フラッシュメモリ2000は、データ用バンク2100と、マージ用バンク2200と、更新データ用バンク2300とを含む。データ用バンク2100は、30個のバンクから構成される。マージ用バンク2200および更新データ用バンク2300は、それぞれ1個のバンクから構成される。すなわち、フラッシュメモリ2000は、32個のバンクから構成される。1個のバンクは、100個のファイルブロックを含む。それぞれのファイルブロックは、データ保存領域と管理テーブル記憶領域とを含む。RAM3000は、キャッシュ領域3100と、ファイルブロック管理テーブル記憶領域3200と、システム記憶領域3300とを含む。キャッシュ領域は、4個のファイルブロックから構成される。
【0076】
本発明は、このような構成に限定されるものではなく、複数のファイルブロックから構成されるRAM3000と、1個以上のバンクを含むマージ用バンク2200と、1個以上のバンクを含む更新データ用バンク2300と、30個程度のバンクを含むデータ用バンク2100とから構成されるものであれば、特に限定されない。
【0077】
図3を参照して、さらにメモリ1220の内部構造を説明する。図3に示すように、データ用バンク2100は、ファイルブロック(0)からファイルブロック(99)までにより構成される第0番目のバンク、ファイルブロック(100)からファイルブロック(199)までにより構成される第1番目のバンク、ファイルブロック(200)からファイルブロック(299)までにより構成される第2番目のバンク、ファイルブロック(300)からファイルブロック(399)までにより構成される第3番目のバンク、…、ファイルブロック(2900)からファイルブロック(2999)までにより構成される第29番目のバンクの30個のバンクを含む。
【0078】
マージ用バンク2200は、ファイルブロック(3000)からファイルブロック(3099)までにより構成される第30番目のバンク、更新データ用バンク2300は、ファイルブロック(3100)からファイルブロック(3199)までにより構成される第31番目のバンクから構成される。
【0079】
更新データ用バンク2300は、100個のエントリ(R(0)、R(1)、R(2)、…、R(96)、R(97)、R(98)、R(99))により構成される。RAM3000のキャッシュ領域3100は、4個のエントリ(C(0)、C(1)、C(2)、C(3))により構成される。
【0080】
図4を参照して、ファイル構成について説明する。図4に、3個のファイルブロックから構成されるファイル構成を示す。ファイルブロックにはファイルサイズおよびタイムスタンプを記憶する領域がある。ファイルのサイズが大きくなり、図4に示すような3個のファイルブロックでは格納できなくなると、新たなファイルブロックが追加される。
【0081】
図5を参照して、ファイルブロック管理テーブルについて説明する。図5に示すように、ファイルブロック管理テーブルは、全てのファイルブロックのエントリを記憶する。それぞれのファイルブロックごとにファイルブロックのステータスを記憶する。ステータスは、フラグと次のファイルブロック番号とを含む。フラグは、ファイルブロックの使用状態を示す識別符号である。たとえば、「0」が「未使用」、「1」が「ファイルとして使用」、「2」が「ディレクトリとして使用」というように設定される。
【0082】
図6を参照して、本実施の形態に係るファイルシステムで実行される書込み処理の制御構造について説明する。
【0083】
ステップ(以下、ステップをSと略す。)1000にて、CPU1200は、処理対象の命令が書込み命令であるか否かを判断する。処理対象の命令が書込み命令である場合には(S1000にてYES)、処理は、S1002に移される。もしそうでないと(S1000にてNO)、処理はS1000に戻され、書込み命令を待つ。
【0084】
S1002にて、CPU1200は、書込み命令に基づいて、書込み先であるN個のファイルブロックを決定する。このとき、書込み命令によりファイルに書込まれる情報は、データのみならず、タイムスタンプおよびサイズ等を含む。タイムスタンプおよびサイズは、ファイルブロックごとではなく、1個のファイルに対して1個のタイムスタンプおよびサイズとが記憶されるため、1個の書込み命令による書込み対象のファイルブロックは、多くの場合、2以上のファイルブロックにまたがる。
【0085】
S1004にて、CPU1200は、変数Iを初期化(I=1)する。S1006にて、CPU1200は、RAM3000のキャッシュ領域3100(エントリC(0)〜C(3))内に、ファイルブロック(I)があるか否かを判断する。RAM3000のキャッシュ領域3100にファイルブロック(I)があると(S1006にてYES)、処理は、S1014に移される。もしそうでないと(S1006にてNO)、処理は、S1008に移される。
【0086】
S1008にて、CPU1200は、RAM3000のキャッシュ領域3100に空きがないか否かを判断する。RAM3000のキャッシュ領域3100に空きがないと(S1008にてYES)、処理はS1010に移される。もしそうでないと(S1008にてNO)、処理はS1012に移される。
【0087】
S1010にて、CPU1200は、copy_cache_to_bank処理を行なう。copy_cache_to_bank処理の詳細については後述する。S1012にて、CPU1200は、copy_bank_to_cache処理を行なう。copy_bank_to_cache処理の詳細については後述する。
【0088】
S1014にて、RAM3000のキャッシュ領域3100内のファイルブロック(I)を更新する。S1016にて、CPU1200は、変数Iに1を加算する。S1018にて、CPU1200は、変数Iがファイルブロック数Nよりも大きいか否かを判断する。変数Iがファイルブロック数Nよりも大きい場合には(S1018にてYES)、処理は、S1020に移される。もしそうでないと(S1018にてNO)、処理は、S1006に戻され、次のファイルブロックに対する処理が実行される。S1020にて、CPU1200は、コミット処理を行なう。このコミット処理の詳細については後述する。
【0089】
図7を参照して、本実施の形態に係るファイルシステムで実行される読出し処理の制御構造について説明する。
【0090】
S1100にて、CPU1200は、処理対象の命令が読出し命令であるか否かを判断する。処理対象の命令が読出し命令である場合には(S1100にてYES)、処理は、S1102に移される。もしそうでないと(S1100にてNO)、処理はS1100に戻され、読出し命令を待つ。
【0091】
S1102にて、CPU1200は、読出し命令に基づいて、読出し先であるN個のファイルブロックを決定する。1個の読出し命令による読出し対象のファイルブロックは、多くの場合、2以上のファイルブロックにまたがる。
【0092】
S1104にて、CPU1200は、変数Iを初期化(I=1)する。S1106にて、CPU1200は、RAM3000のキャッシュ領域3100(エントリC(0)〜C(3))内に、ファイルブロック(I)があるか否かを判断する。RAM3000のキャッシュ領域3100にファイルブロック(I)があると(S1106にてYES)、処理は、S1114に移される。もしそうでないと(S1106にてNO)、処理は、S1108に移される。
【0093】
S1108にて、CPU1200は、RAM3000のキャッシュ領域3100に空きがないか否かを判断する。RAM3000のキャッシュ領域3100に空きがないと(S1108にてYES)、処理はS1110に移される。もしそうでないと(S1108にてNO)、処理はS1112に移される。
【0094】
S1110にて、CPU1200は、copy_cache_to_bank処理を行なう。copy_cache_to_bank処理の詳細については後述する。S1112にて、CPU1200は、copy_bank_to_cache処理を行なう。copy_bank_to_cache処理の詳細については後述する。
【0095】
S1114にて、RAM3000のキャッシュ領域3100内のファイルブロック(I)に格納されたデータを読出す。S1116にて、CPU1200は、変数Iに1を加算する。S1118にて、CPU1200は、変数Iがファイルブロック数Nよりも大きいか否かを判断する。変数Iがファイルブロック数Nよりも大きい場合には(S1118にてYES)、この処理は、終了する。もしそうでないと(S1118にてNO)、処理は、S1106に戻され、次のファイルブロックに対する処理が実行される。
【0096】
図8を参照して、本実施の形態に係るファイルシステムで実行されるcopy_bank_to_cache処理の制御構造について説明する。
【0097】
S1200にて、CPU1200は、ファイルブロック(I)が更新データ用バンク2300にあるか否かを判断する。ファイルブロック(I)が更新データ用バンク2300にある場合には(S1200にてYES)、処理はS1202へ移される。もしそうでないと(S1200にてNO)、処理はS1206へ移される。
【0098】
S1202にて、CPU1200は、更新データ用バンク2300にあるファイルブロック(I)のコミット済みフラグがセットされているか否かを判断する。更新データ用バンク2300にあるファイルブロック(I)のコミット済みフラグがセットされている場合には(S1202にてYES)、処理はS1204へ移される。もしそうでないと(S1202にてNO)、処理はS1206へ移される。
【0099】
S1204にて、CPU1200は、更新データ用バンク2300からファイルブロック(I)をRAM3000のキャッシュ領域3100にコピーする。S1206にて、CPU1200は、データ用バンク2000からファイルブロック(I)をRAM3000のキャッシュ領域3100にコピーする。S1204またはS1206の処理の後、copy_bank_to_cache処理は終了する。
【0100】
図9を参照して、本実施の形態に係るファイルシステムで実行されるcopy_cache_to_bank処理の制御構造について説明する。
【0101】
S1300にて、CPU1200は、RAM3000のキャッシュ領域3100における空きでない最初のエントリを決定する。S1302にて、CPU1200は、決定されたエントリに記憶されたファイルブロックに変更があるか否かを判断する。決定されたエントリに記憶されたファイルブロックに変更がある場合には(S1302にてYES)、処理はS1304へ移される。もしそうでないと(S1302にてNO)、処理はS1314へ移される。
【0102】
S1304にて、CPU1200は、更新データ用バンク2300に空きがないか否かを判断する。更新データ用バンク2300に空きがない場合には(S1304にてYES)、処理はS1306へ移される。もしそうでないと(S1304にてNO)、処理はS1312へ移される。
【0103】
S1306にて、CPU1200は、merge処理を行なう。このmerge処理の詳細については後述する。
【0104】
S1308にて、CPU1200は、更新データ用バンク2300に空きがないか否かを判断する。更新データ用バンク2300に空きがない場合には(S1308にてYES)、処理はS1310へ移される。もしそうでないと(S1308にてNO)、処理はS1312へ移される。
【0105】
S1310にて、CPU1200は、更新データ用バンク2300に含まれるファイルブロックのコミット済みフラグをセットする。このS1310の処理の後、処理はS1306へ戻される。
【0106】
S1312にて、CPU1200は、決定されたエントリのファイルブロックを更新データ用バンク2300にコピーする。S1314にて、CPU1200は、決定されたエントリを開放する。このS1314の処理の後、このcopy_cache_to_bankは終了する。
【0107】
図10を参照して、本実施の形態に係るファイルシステムで実行されるmerge処理の制御構造について説明する。
【0108】
S1400にて、CPU1200は、変数Jを初期化(J=0)する。
S1402にて、CPU1200は、第J番目のバンクはデータ用バンクであるか否かを判断する。第J番目のバンクがデータ用バンクである場合には(S1402にてYES)、処理はS1404へ移される。もしそうでないと(S1402にてNO)、処理はS1422へ移される。
【0109】
S1404にて、CPU1200は、第J番目のバンクに含まれるファイルブロックが、更新データ用バンク2300にあるか否かを判断する。第J番目のバンクに含まれるファイルブロックが、更新データ用バンク2300にある場合には(S1404にてYES)、処理はS1406へ移される。もしそうでないと(S1404にてNO)、処理はS1422へ移される。
【0110】
S1406にて、CPU1200は変数Kを初期化(K=0)する。
S1408にて、CPU1200は、第J番目のバンクの第K番目のファイルブロックが、更新データ用バンク2300にあるファイルブロックであるか否かを判断する。第J番目のバンクの第K番目のファイルブロックが、更新データ用バンク2300にあるファイルブロックである場合には(S1408にてYES)、処理はS1410へ移される。もしそうでないと(S1408にてNO)、処理はS1414へ移される。
【0111】
S1410にて、CPU1200は、そのファイルブロックのコミット済みフラグがセットされているか否かを判断する。そのファイルブロックのコミット済みフラグがセットされていると(S1410にてYES)、処理はS1412へ移される。もしそうでないと(S1410にてNO)、処理はS1414に移される。
【0112】
S1412にて、CPU1200は、更新データ用バンク2300にある第J番目のバンクの第K番目のファイルブロックをマージ用バンクにコピーする。S1414にて、CPU1200は、データ用バンク2000にある第J番目のバンクの第K番目のファイルブロックをマージ用バンク2200にコピーする。
【0113】
S1416にて、CPU1200は、変数Kに1を加算する。S1418にて、CPU1200は、変数Kが、第J番目のバンクに含まれるファイルブロック数よりも大きいか否かを判断する。変数Kが、第J番目のバンクに含まれるファイルブロック数よりも大きい場合には(S1418にてYES)、処理はS1420へ移される。もしそうでないと(S1418にてNO)、処理S1408へ戻される。
【0114】
S1420にて、CPU1200は、マージ用バンク2200を第J番目のバンクに対応した新たなデータ用バンクに、古い第J番目のデータ用バンクを消去してこれを新たなマージ用バンクに設定する。S1422にて、CPU1200は、変数Jに1を加算する。S1424にて、CPU1200は、変数Jが32より大きいか否かを判断する。なお、このフラッシュメモリ2000は32個のバンクから構成されている。変数Jが32より大きい場合には(S1424にてYES)、処理はS1426へ移される。もしそうでないと(S1424にてNO)、処理はS1402へ戻される。
【0115】
S1426にて、CPU1200は、更新データ用バンク2300に含まれる、コミット済みフラグがリセットされたファイルブロックをマージ用バンクにコピーし、これを新たな更新データ用バンクに設定する。S1428にて、CPU1200は、古い更新データ用バンクを消去して、これを新たなマージ用バンクに設定する。
【0116】
図11を参照して、本実施の形態の係るファイルシステムで実行されるコミット処理の制御構造について説明する。S1500にて、CPU1200は、変数Lを初期化(L=1)する。S1502にて、CPU1200は、RAM3000のキャッシュ領域3100におけるエントリC(L)をcopy_cache_to_bank処理の対象に決定する。S1504にて、CPU1200は、copy_cache_to_bank処理を行なう。
【0117】
S1506にて、CPU1200は、変数Lに1を加算する。S1508にて、CPU1200は、変数LがRAM3000のキャッシュ領域3100のエントリ数よりも大きいか否かを判断する。変数LがRAM3000のキャッシュ領域3100のエントリ数よりも大きい場合には(S1508にてYES)、処理はS1510へ移される。もしそうでないと(S1508にてNO)、処理はS1502へ戻される。
【0118】
S1510にて、CPU1200は、RAM3000のファイル管理テーブルに変更があるか否かを判断する。RAM3000のファイル管理テーブルに変更がある場合には(S1510にてYES)、処理はS1512へ移される。もしそうでないと(S1510にてNO)、処理はS1514へ移される。
【0119】
S1512にて、CPU1200は、RAM3000のファイル管理テーブルの内容を、フラッシュメモリ2000のファイル管理テーブル記憶領域にコピーする。S1514にて、CPU1200は、更新データ用バンク2300に含まれるファイルブロックのコミット済みフラグをセットする。
【0120】
以上のような構造およびフローチャートに基づく、本実施の形態に係るファイルシステムの動作を、図12〜図19を参照して説明する。以下の説明では、1個の書込命令により、ファイルブロック(100)、ファイルブロック(210)、ファイルブロック(250)、ファイルブロック(300)、ファイルブロック(301)の順序で、データが書込まれると想定する。図12〜図19の中の丸数字の昇順に動作が進む。以下の数字と丸数字とは対応する。
【0121】
図12に示すように、初期状態では、データ用バンク2100として第0番目のバンクから第29番目のバンクまでの30個のバンクが、マージ用バンク2200として第30番目のバンクが、更新データ用バンク2300として第31番目のバンクが設定されている。更新データ用バンク2300は、エントリR(0)からR(98)までの99個のエントリが使用されており、エントリR(99)の1個のエントリのみが空いている。更新データ用バンク2300のエントリR(0)からR(97)までの98個のエントリは、コミット済みである。RAM3000のキャッシュ領域3100は、エントリC(0)にファイルブロック(100)が、エントリC(1)にファイルブロック(150)が格納されている。RAM3000のキャッシュ領域3100のエントリC(2)およびC(3)は、空いている。
【0122】
1)1番目の書込み対象のファイルブロック(100)は、RAM3000のキャッシュ領域3100のエントリC(0)に格納されている。そのため、このエントリC(0)の内容が更新される。これで、ファイルブロック(100)に対する書込み動作は終了する。
【0123】
2)2番目の書込み対象のファイルブロック(210)は、RAM3000のキャッシュ領域3100のエントリには格納されていないが、更新データ用バンク2300のエントリR(97)に格納されている。また、RAM3000のキャッシュ領域3100のエントリC(2)、C(3)が空いている。そのため、更新データ用バンク2300のコミット済みのエントリR(97)に格納されたファイルブロック(210)が、RAM3100のエントリC(2)に格納される。このとき、更新データ用バンク2300の中のエントリR(98)は、コミット済みではない。そのため、R(98)のファイルブロック(210)のデータと、ファイル管理テーブルの内容とは、データの整合性が取れない可能性があるので、コミット済みではないデータが使用されず、コミット済みのデータが使用される。
【0124】
3)RAM3000のキャッシュ領域3100のエントリC(2)の内容が更新される。これで、ファイルブロック(210)に対する書込み動作は終了する。
【0125】
4)3番目の書込み対象のファイルブロック(250)は、RAM3000のキャッシュ領域3100に格納されておらず、更新データ用バンク2300にも格納されていない。また、RAM3000のキャッシュ領域3100のエントリC(3)が空いている。そのため、データバンク2100の第2番目のバンクのファイルブロック(250)が、RAM3000のキャッシュ領域3100のエントリC(3)に格納される。
【0126】
5)RAM3000のキャッシュ領域3100のエントリC(3)の内容が更新される。これで、ファイルブロック(250)に対する書込み動作は終了する。
【0127】
6)4番目の書込み対象のファイルブロック(300)は、RAM3000のキャッシュ領域3100に格納されておらず、更新データ用バンク2300にも格納されていない。そのため、データバンク2100の第3番目のバンクのファイルブロック(300)が、RAM3000のキャッシュ領域3100のエントリに格納される。しかしながら、RAM3000のキャッシュ領域3100のエントリに空きがない。そのため、RAM3000のキャッシュ領域3100のエントリC(0)を更新データ用バンクのエントリR(99)に格納して、RAM3000のキャッシュ領域3100のエントリC(0)を空きにする。
【0128】
7)データバンク2100の第3番目のバンクのファイルブロック(300)が、RAM3000のキャッシュ領域3100のエントリC(0)に格納される。
【0129】
8)RAM3000のキャッシュ領域3100のエントリC(0)の内容が更新される。これで、ファイルブロック(300)に対する書込み動作は終了する。
【0130】
9)5番目の書込み対象のファイルブロック(301)は、RAM3000のキャッシュ領域3100に格納されておらず、更新データ用バンク2300にも格納されていない。そのため、データバンク2100の第3番目のバンクのファイルブロック(301)が、RAM3000のキャッシュ領域3100のエントリに格納される。しかしながら、RAM3000のキャッシュ領域3100のエントリに空きがなく、かつ更新データ用バンク2300にも空きがない。そのため、更新データ用バンク2300に空きを作成するために、更新データ用バンク2300の中のコミット済みのファイルブロック(100)の中で最新のR(96)が、マージ用バンク2200に格納される。
【0131】
10)データ用バンク2100の第1番目のバンクのファイルブロック(100)以外のファイルブロック(ファイルブロック(101)〜ファイルブロック(199))が、マージ用バンク2200に格納される。
【0132】
11)第1番目のバンクを消去し、新たなマージ用バンク2200とするとともに、第30番目のバンクをデータ用バンク2100とする
【0133】
12)更新データ用バンク2300の中のコミット済みのファイルブロック(210)の中で最新のR(97)が、マージ用バンク2200に格納される。
【0134】
13)データ用バンク2100の第2番目のバンクのファイルブロック(210)以外のファイルブロック(ファイルブロック(201)〜ファイルブロック(209)およびファイルブロック(211)〜ファイルブロック(299))が、マージ用バンク2200に格納される。
【0135】
14)第2番目のバンクを消去し、新たなマージ用バンク2200とするとともに、第1番目のバンクをデータ用バンク2100とする
【0136】
15)更新データ用バンク2300の中のコミット済みでないエントリR(98)およびR(99)に格納されたファイルブロック(210)およびファイルブロック(100)が、マージ用バンク2200に格納される。
【0137】
16)更新データ用バンク2300であった第31番目のバンクが消去される。
【0138】
17)更新データ用バンク2300であった第31番目のバンクと、マージ用バンクであった第2番目のバンクとが入換えられる。
【0139】
18)RAM3000のキャッシュ領域3100のエントリC(0)を更新データ用バンクのエントリR(2)に格納して、RAM3000のキャッシュ領域3100のエントリC(0)を空きにする。
【0140】
19)データバンク2100の第3番目のバンクのファイルブロック(301)が、RAM3000のキャッシュ領域3100のエントリC(0)に格納される。RAM3000のキャッシュ領域3100のエントリC(0)の内容が更新される。これで、ファイルブロック(301)に対する書込み動作は終了する。
【0141】
以上のようにして、本実施の形態に係るファイルシステムによると、1個のデータ書込命令が終了するとコミット処理を実行して、不測の電源遮断が発生しても、ファイルシステム全体としての整合性が確保できた状態を再現できる。さらに、従来のように、1つのファイルブロックへの書込み毎にバンクを消去するわけではないので、ファイルブロックに同じ回数書込みをしても、バンクの消去回数を減少させることができ、よりフラッシュメモリの寿命を長くするとともに、高速処理を実現できる。
【0142】
<第2の実施の形態>
本発明の実施の形態に係るファイルシステムは、前述の第1の実施の形態と異なる書込処理を実行する。その他のハードウェア構成、以下に示す以外のフローチャートについては前述の第1の実施の形態と同様である。したがって、それらについての詳細な説明はここでは繰返さない。
【0143】
図20を参照して、本実施の形態に係るファイルシステムで実行される書込処理の制御構造について説明する。なお、図20に示す処理の中で、前述の図6と同じ処理については同じステップ番号を付してある。それらについての処理も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0144】
S2000にて、CPU1200は、変数Iを初期化した後、キャッシュフルフラグをリセットする。S2002にて、CPU1200は、RAM3000のキャッシュ領域3100に空きがない場合には、キャッシュフルフラグをセットする。その後、copy_cache_to_bank処理が実行される。S2004にて、CPU1200は、変数Iが、書込命令に基づく書込先であるファイルブロック数Nよりも大きい場合は、キャッシュフルフラグがセットされているか否かを判断する。キャッシュフルフラグがセットされていると(S2004にてYES)、処理はS1020へ移される。もしそうでないと(S2004にてNO)、この書込処理を終了する。S1020にて、CPU1200は、コミット処理を実行する。このコミット処理は、前述の第1の実施の形態のコミット処理と同様である。したがって、このコミット処理についての詳細な説明はここでは繰返さない。
【0145】
以上のような構造およびフローチャートに基づく、本実施の形態に係るファイルシステムの動作を、図21〜図22を参照して説明する。以下の説明では、1個のデータ書込命令により、ファイルブロック(150)、ファイルブロック(151)、ファイルブロック(100)の順序で、データが書込まれ、このデータ書込み命令が繰返されると想定する。たとえば、データ書込み先がファイルブロック(150)とファイルブロック(151)とに跨っており、ファイルブロック(100)にファイルサイズおよびタイムスタンプが格納される場合である。図21〜図22の中の丸数字の昇順に動作が進む。以下の数字と丸数字とは対応する。
【0146】
図21に示すように、初期状態では、データ用バンク2100として第0番目のバンクから第29番目のバンクまでの30個のバンクが、マージ用バンク2200として第30番目のバンクが、更新データ用バンク2300として第31番目のバンクが設定されている。更新データ用バンク2300の全てのエントリが空いている。RAM3000のキャッシュ領域3100の全てのエントリが空いている。
【0147】
1)1番目の書込み対象のファイルブロック(150)は、RAM3000のキャッシュ領域3100に格納されておらず、更新データ用バンク2300にも格納されていない。また、RAM3000のキャッシュ領域3100の全てのエントリが空いている。そのため、データバンク2100の第1番目のバンクのファイルブロック(150)が、RAM3000のキャッシュ領域3100のエントリC(0)に格納される。RAM3000のキャッシュ領域3100のエントリC(0)の内容が更新される。これで、ファイルブロック(150)に対する書込み動作は終了する。
【0148】
2)2番目の書込み対象のファイルブロック(151)は、RAM3000のキャッシュ領域3100に格納されておらず、更新データ用バンク2300にも格納されていない。また、RAM3000のキャッシュ領域3100のエントリC(0)以外のエントリが空いている。そのため、データバンク2100の第1番目のバンクのファイルブロック(151)が、RAM3000のキャッシュ領域3100のエントリC(1)に格納される。RAM3000のキャッシュ領域3100のエントリC(1)の内容が更新される。これで、ファイルブロック(151)に対する書込み動作は終了する。
【0149】
3)3番目の書込み対象のファイルブロック(100)は、RAM3000のキャッシュ領域3100に格納されておらず、更新データ用バンク2300にも格納されていない。また、RAM3000のキャッシュ領域3100のエントリC(0)およびC(1)以外のエントリが空いている。そのため、データバンク2100の第1番目のバンクのファイルブロック(100)が、RAM3000のキャッシュ領域3100のエントリC(2)に格納される。RAM3000のキャッシュ領域3100のエントリC(2)の内容が更新される。これで、ファイルブロック(100)に対する書込み動作は終了する。この時点で、RAM3000のキャッシュ領域3100に空きがあるため(S1008にてNO)、キャッシュフルフラグがセットされない。このため、キャッシュフルフラグがリセットされているので(S2004にてNO)、コミット処理が実行されない。その結果、バンクの消去処理が実行されない。
【0150】
4)4番目の書込み対象のファイルブロック(150)は、RAM3000のキャッシュ領域3100のエントリC(0)に格納されている。そのため、このエントリC(0)の内容が更新される。これで、ファイルブロック(150)に対する書込み動作は終了する。
【0151】
5)5番目の書込み対象のファイルブロック(151)は、RAM3000のキャッシュ領域3100のエントリC(1)に格納されている。そのため、このエントリC(1)の内容が更新される。これで、ファイルブロック(151)に対する書込み動作は終了する。
【0152】
6)6番目の書込み対象のファイルブロック(100)は、RAM3000のキャッシュ領域3100のエントリC(2)に格納されている。そのため、このエントリC(2)の内容が更新される。これで、ファイルブロック(100)に対する書込み動作は終了する。この後、このデータ書込み命令が繰返されても、RAM3000のキャッシュ領域3100に空きがなくなることがないので、コミット処理が実行されない。その結果、バンクの消去が実行されない。
【0153】
一方、図23〜図24を参照して、このように同じファイルブロックに対する書込み命令が繰返される場合に、第1の実施の形態のファイルシステムの動作を、比較のために説明する。
【0154】
図23に示すように、初期状態は、前述の図21の状態と同じである。
1)1番目の書込み対象のファイルブロック(150)に対して、前述と同じようにして、RAM3000のキャッシュ領域(エントリC(0))を用いてデータが更新される。
【0155】
2)2番目の書込み対象のファイルブロック(151)に対して、前述と同じようにして、RAM3000のキャッシュ領域(エントリC(1))を用いてデータが更新される。
【0156】
3)3番目の書込み対象のファイルブロック(100)に対して、前述と同じようにして、RAM3000のキャッシュ領域(エントリC(2))を用いてデータが更新される。
【0157】
4)1個の書込命令に対応する、ファイルブロック(150)、ファイルブロック(151)およびファイルブロック(100)のデータ更新が終了すると、コミット処理が行なわれる。すなわち、RAM3000のキャッシュ領域3100のエントリC(0)、エントリC(1)およびエントリC(2)から、更新データ用バンク2300のエントリR(0)、エントリR(1)およびエントリR(2)にデータがコピーされて、copy_cache_to_bank処理が実行される。
【0158】
このようなデータ書込命令が33回繰返されると、図24のように、更新データ用バンク2300は、エントリ(99)以外は空いていない状態になる。
【0159】
5)第34回目のデータ書込命令に対する、1番目の書込み対象のファイルブロック(150)に対して、前述と同じようにして、RAM3000のキャッシュ領域(エントリC(0))を用いてデータが更新される。
【0160】
6)2番目の書込み対象のファイルブロック(151)に対して、前述と同じようにして、RAM3000のキャッシュ領域(エントリC(1))を用いてデータが更新される。
【0161】
7)3番目の書込み対象のファイルブロック(100)に対して、前述と同じようにして、RAM3000のキャッシュ領域(エントリC(2))を用いてデータが更新される。
【0162】
8)1個のデータ書込命令に対応する、ファイルブロック(150)、ファイルブロック(151)およびファイルブロック(100)のデータ更新が終了すると、コミット処理が行なわれる。
【0163】
9)しかしながら、更新データ用バンク2300に空きがない。そのため、更新データ用バンク2300に空きを作成するために、更新データ用バンク2300の中のコミット済みの中の最新のファイルブロック(100)が、マージ用バンク2200に格納される。このようにして、第34回目のデータ書込命令で、マージ処理が発生し、バンクの消去が実行される。
【0164】
以上のようにして、本実施の形態に係るファイルシステムによると、1個のデータ書込命令が終了するとコミット処理を実行するのではなく、コミット処理が必要な場合のみ(たとえば、RAM3000のキャッシュ領域3100に空きがない場合など)、コミット処理を実行する。このため、バンクの消去回数を減少させることができ、よりフラッシュメモリの寿命を長くするとともに、高速処理を実現できる。
【0165】
すなわち、キャッシュに空きがなかったのかあったのかを示すキャッシュフルフラグを設ける。キャッシュに空きがない場合にはキャッシュフルフラグをリセットからセットに変更して、このフラグがセットされているときのみコミット処理を行なう。これにより、キャッシュに空きがあってコミット処理が必要でない場合にまでコミット処理を実行するという無駄な処理を避けることができるとともに、必要に応じてコミット処理を実行することにより、不測の電源遮断等が発生しても、ファイルシステム全体としての整合性が確保できた状態を再現できる。
【0166】
<第3の実施の形態>
本発明の実施の形態に係るファイルシステムは、前述の第1の実施の形態における更新データ用バンク2300を、バックアップ電源を有するSRAMにて実現したものである。図25を参照して、本実施の形態に係るファイルシステムのメモリの内部構造について説明する。図25に示すように本実施の形態に係るファイルシステムのメモリは、データ用バンク2100とマージ用バンク220とからなるフラッシュメモリ2101と、更新データ用バンクからなるSRAM2301とを含む。その他の構成、以下に示す以外のフローチャートについては、前述の第1の実施の形態と同じである。したがって、それらについてのここでの詳細な説明は繰返さない。
【0167】
本実施の形態に係るファイルシステムは、更新データ用バンクをSRAMにて実現したため、フラッシュメモリにより更新データ用バンクを実現した場合に比較して、更新データ用バンクへのデータの書込の制限を有さない。この違いにより、本実施の形態に係るファイルシステムと、前述の第1の実施の形態のファイルシステムとでは、copy_cache_to_bank処理およびmerge処理が異なる。
【0168】
図26を参照して、本実施の形態に係るファイルシステムで実行されるcopy_cache_to_bank処理について説明する。なお、図26に示す処理の中で、前述の図9と同じ処理については同じステップ番号を付してある。それらについての処理も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0169】
S3000にて、CPU1200は、決定されたエントリのファイルブロックが、更新データ用バンク2301にあって、そのコミット済みフラグがリセット済みであるか否かを判断する。決定されたエントリのファイルブロックが更新データ用バンク2301にあって、そのコミット済みフラグがリセットされていると(S3000にてYES)、処理はS3002へ移される。もしそうでないと(S3000にてNO)、処理はS1304へ移される。
【0170】
S1304にて、CPU1200は、更新データ用バンク2301に空きがないか否かを判断する。更新データ用バンクに空きがない場合には(S1304にてYES)、処理はS3004へ移される。もしそうでないと(S1304にてNO)、処理はS1312へ移される。
【0171】
S3002にて、CPU1200は、コミットフラグがリセットされたエントリに、決定されたエントリのファイルブロックをコピーする。
【0172】
S3004にて、CPU1200は、merge処理を行なう。このS3004にて実行されるmerge処理は、前述の第1の実施の形態のmerge処理とは異なる処理である。
【0173】
図27を参照して、本実施の形態に係るファイルシステムで実行されるmerge処理の制御構造について説明する。なお、図27に示す処理の中で、前述の図10と同じ処理については同じステップ番号を付してある。それらについての処理も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0174】
S3100にて、CPU1200は、変数Jが32より大きいと、更新データ用バンク2301に含まれる、コミット済みフラグがリセットされたファイルブロックを前詰めにして、空いた領域をクリアする。その後このmerge処理を終了する。
【0175】
以上のような構造およびフローチャートに基づく、本実施の形態に係るファイルシステムの動作を、図28〜図32を参照して説明する。以下の説明では、1個のデータ書込命令により、ファイルブロック(100)、ファイルブロック(101)に対して交互にデータが書込まれ、このデータ書込み命令が繰返されると想定する。図28〜図32の中の丸数字の昇順に動作が進む。以下の数字と丸数字とは対応する。
【0176】
図28に示すように、初期状態では、データ用バンク2100として第0番目のバンクから第29番目のバンクまでの30個のバンクが、マージ用バンク2200として第30番目のバンクが設定されている。SRAMにより構成された更新データ用バンク2301のエントリR(99)以外は空いていない。更新データ用バンク2301のエントリR(98)およびエントリR(99)以外のファイルブロックはコミット済みである。RAM3000のキャッシュ領域3100の全てのエントリが空いていない。
【0177】
1)1番目の書込み対象のファイルブロック(100)は、RAM3000のキャッシュ領域3100のエントリには格納されていないが、更新データ用バンク2301のエントリR(96)に格納されている。また、RAM3000のキャッシュ領域3100のエントリに空きがない。そのため、RAM3000のキャッシュ領域3100のエントリC(0)を更新データ用バンクのエントリR(99)に格納して、RAM3000のキャッシュ領域3100のエントリC(0)を空きにする。
【0178】
2)更新データ用バンク2301のエントリR(96)に格納されたファイルブロック(100)が、RAM3000のキャッシュ領域3100のエントリC(0)に格納される。
【0179】
3)RAM3000のキャッシュ領域3100のエントリC(0)の内容が更新される。これで、ファイルブロック(100)に対する書込み動作は終了する。
【0180】
4)2番目の書込み対象のファイルブロック(101)は、RAM3000のキャッシュ領域3100のエントリには格納されていないが、更新データ用バンク2301のエントリR(97)に格納されている。また、RAM3000のキャッシュ領域3100のエントリに空きがない。そのため、RAM3000のキャッシュ領域3100のエントリC(0)を、コミット済みでないファイルブロック(100)を格納したエントリR(98)に格納して、RAM3000のキャッシュ領域3100のエントリC(0)を空きにする。
【0181】
5)更新データ用バンク2301のエントリR(97)に格納されたファイルブロック(101)が、RAM3000のキャッシュ領域3100のエントリC(0)に格納される。
【0182】
6)RAM3000のキャッシュ領域3100のエントリC(0)の内容が更新される。これで、ファイルブロック(101)に対する書込み動作は終了する。
【0183】
7)3番目の書込み対象のファイルブロック(100)は、RAM3000のキャッシュ領域3100のエントリには格納されていないが、更新データ用バンク2301のエントリR(96)に格納されている。また、RAM3000のキャッシュ領域3100のエントリに空きがない。そのため、RAM3000のキャッシュ領域3100のエントリC(0)を、コミット済みでないファイルブロック(101)を格納したエントリR(99)に格納して、RAM3000のキャッシュ領域3100のエントリC(0)を空きにする。
【0184】
8)更新データ用バンク2301のエントリR(96)に格納されたファイルブロック(100)が、RAM3000のキャッシュ領域3100のエントリC(0)に格納される。
【0185】
9)RAM3000のキャッシュ領域3100のエントリC(0)の内容が更新される。これで、ファイルブロック(100)に対する書込み動作は終了する。さらに、ファイルブロック(101)に対する書込動作が実行される。
【0186】
以上のようにして、本実施の形態に係るファイルシステムによると、SRAMにより更新データ用バンクを構成するため、同じファイルブロックは上書きできる。このため、更新データ用バンクに空きがなくなることを回避でき、バンクの消去回数を減少させることができ、よりフラッシュメモリの寿命を長くするとともに、高速処理を実現できる。
【0187】
<第4の実施の形態>
本実施の形態に係るファイルシステムは、前述の第1の実施の形態に係るファイルシステムと異なるmerge処理を実行する。その他のハードウェア構成、以下に示す以外のフローチャートについては前述の第1の実施の形態と同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0188】
図33を参照して、本実施の形態に係るファイルシステムで実行されるmerge処理の制御構造について説明する。なお、図33に示す処理の中で、前述の図10に示す処理と同じ処理については同じステップ番号を付してある。それらについての処理も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0189】
S4000にて、CPU1200は、更新データ用バンク2300に含まれる。コミット済みフラグがリセットされたファイルブロックをマージ用バンク2200にコピーし、これを新たな更新データ用バンクに設定する。S4002にて、CPU1200は、古い更新データ用バンクを消去する。このバンクをバンクRと呼ぶ。S4004にて、CPU1200は、含まれるファイルブロックがすべて未使用のバンクがあるか否かを判断する。含まれるファイルブロックがすべて未使用のバンクがある場合には(S4004にてYES)、処理はS4008へ移される。もしそうでないと(S4004にてNO)、処理はS4006へ移される。
【0190】
S4006にて、CPU1200は、バンクRを新たなマージ用バンクに設定する。S4008にて、CPU1200は、そのバンクをバンクFとして、バンクRをバンクFのデータバンクに、バンクFを新たなマージ用バンクに設定する。
【0191】
以上のような構造およびフローチャートに基づく、本実施の形態に係るファイルシステムの動作を、図34〜図35を参照して説明する。以下の説明では、ファイルブロック(0)からファイルブロック(99)までの第1のバンクに含まれるファイルブロックにデータが繰返し書込まれると想定する。
【0192】
図34に示すように、初期状態では、データ用バンク2100として第0番目のバンクから第29番目のバンクまでの30個のバンクが、マージ用バンク2200として第30番目のバンクが、更新データ用バンク2300として第31番目のバンクが設定されている。更新データ用バンク2300の全てのエントリは空いている。RAM3000のキャッシュ領域3100の全てのエントリは空いている。このときの状態を図35(A)に示す。網掛けされているバンクは、そのバンクに含まれる全てのファイルブロックが未使用であることを示す。
【0193】
このような初期状態から、ファイルブロック(0)からファイルブロック(99)まで、繰返しデータが書込まれる。更新データ用バンクに空きがなくなるので、マージ処理が実行される。
【0194】
更新データ用バンクである第31番目のバンクおよびデータ用バンクである第0番目のバンクから、マージ用バンクである第30番目のバンクへデータがコピーされる。第30番目のバンクが新たなデータ用バンク(ファイルブロック(0)〜ファイルブロック(99)格納用)に設定される。データ用バンクであった第0番目のバンクが消去されて、新たなマージ用バンクに設定される。第0番目のバンクが新たな更新データ用バンクに設定され、古い更新データ用バンクであった第31番目のバンクが消去される。第1番目のバンクが未使用であるので、古い更新データ用バンクである第31番目のバンクが、新たなデータ用バンク(ファイルブロック(100)〜ファイルブロック(199)格納用)に設定される。第1番目のバンクが消去され、新たなマージ用バンクに設定される。この状態を図35(B)に示す。
【0195】
さらに、このような状態から、ファイルブロック(0)からファイルブロック(99)まで、繰返しデータが書込まれる。更新データ用バンクに空きがなくなるので、マージ処理が実行される。
【0196】
更新データ用バンクである第0番目のバンクおよびデータ用バンクである第30番目のバンクから、マージ用バンクである第1番目のバンクへデータがコピーされる。第1番目のバンクが新たなデータ用バンク(ファイルブロック(0)〜ファイルブロック(99)格納用)に設定される。データ用バンクであった第30番目のバンクが消去されて、新たなマージ用バンクに設定される。第30番目のバンクが新たな更新データ用バンクに設定され、古い更新データ用バンクであった第0番目のバンクが消去される。第2番目のバンクが未使用であるので、古い更新データ用バンクである第0番目のバンクが、新たなデータ用バンク(ファイルブロック(200)〜ファイルブロック(299)格納用)に設定される。第2番目のバンクが消去され、新たなマージ用バンクに設定される。この状態を図35(C)に示す。
【0197】
さらに、このような状態から、ファイルブロック(0)からファイルブロック(99)まで、繰返しデータが書込まれる。更新データ用バンクに空きがなくなるので、マージ処理が実行される。
【0198】
更新データ用バンクである第30番目のバンクおよびデータ用バンクである第1番目のバンクから、マージ用バンクである第2番目のバンクへデータがコピーされる。第2番目のバンクが新たなデータ用バンク(ファイルブロック(0)〜ファイルブロック(99)格納用)に設定される。データ用バンクであった第1番目のバンクが消去されて、新たなマージ用バンクに設定される。第1番目のバンクが新たな更新データ用バンクに設定され、古い更新データ用バンクであった第30番目のバンクが消去される。第3番目のバンクが未使用であるので、古い更新データ用バンクである第30番目のバンクが、新たなデータ用バンク(ファイルブロック(300)〜ファイルブロック(399)格納用)に設定される。第3番目のバンクが消去され、新たなマージ用バンクに設定される。この状態を図35(D)に示す。
【0199】
以上のようにして本実施の形態に係るファイルシステムによると、このような動作を繰返して、バンクの状態は、図35(E)から(G)に示すように変化する。このため、第0番目のバンク、第30番目のバンクおよび第31番目のバンクの3個のバンクにバンクの消去が集中することを回避できる。その結果、使用するバンクが適宜切換えられるので、1バンクの消去頻度が分散され、フラッシュメモリの一部のバンクの寿命が短くなることを避けることができる。
【0200】
<第5の実施の形態>
本実施の形態に係るファイルシステムは、前述の第1の実施の形態とは異なる書込処理を実行する。その他のハードウェア構成、以下に示す以外のフローチャートについては、前述の第1の実施の形態と同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0201】
図36を参照して、本実施の形態に係るファイルシステムで実行される書込処理の制御構造について説明する。なお、図36に示す処理の中で、前述の図6に示す処理と同じ処理については同じステップ番号を付してある。それらについての処理も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0202】
S5000にて、CPU1200は、書込むデータサイズが、更新データ用バンクの容量よりも大きいか否かを判断する。書込むデータサイズが更新データ用バンクの容量よりも大きい場合には(S5000にてYES)、処理はS5002へ移される。もしそうでないと(S5000にてNO)、処理はS5004へ移される。
【0203】
S5002にて、CPU1200は、write_large処理を行なう。このwrite_large処理の詳細については後述する。
【0204】
S5004にて、CPU1200は、write_small処理を行なう。このwrite_small処理の詳細については後述する。
【0205】
図37を参照して、本実施の形態に係るファイルシステムで実行されるwrite_small処理の制御構造について説明する。なお、図37に示す処理の中で、前述の図6に示す処理と同じ処理については同じステップ番号を付してある。それらについての処理も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0206】
S5100にて、CPU1200は、この書込によって更新データ用バンクが溢れる可能性を算出する。S5102にて、CPU1200は、この書込によって更新データ用バンクが溢れる可能性があるか否かを判断する。溢れる可能性がある場合には(S5102にてYES)、処理はS5104へ移される。もしそうでないと(S5102にてNO)、処理はS5106へ移される。
【0207】
S5104にて、CPU1200は、コミット処理を行なう。このコミット処理は、前述の第1の実施の形態において説明したコミット処理と同じ処理である。したがって、このコミット処理についての詳細な説明は繰返さない。
【0208】
S5106にて、CPU1200は、書込命令に基づいて、書込先であるN個のファイルブロックを決定する。その後、処理はS1004〜1018へ移される。
【0209】
図38を参照して、本実施の形態に係るファイルシステムで実行されるwrite_large処理の制御構造について説明する。
【0210】
S5200にて、CPU1200は、書込データを分割データ(1)〜分割データ(P)に分割する。このとき、分割データの境界とデータ用バンクとの境界とを一致させる。S5202にて、CPU1200は、変数Dを初期化(D=1)する。S5204にて、CPU1200は、分割データ(D)のサイズが1バンク分に等しいか否かを判断する。分割データ(D)のサイズが1バンク分に等しい場合には(S5204にてYES)、処理はS5206へ移される。もしそうでないと(S5204にてNO)、処理はS5218へ移される。
【0211】
S5206にて、CPU1200は、キャッシュと更新データ用バンクとが空き状態であるか否かを判断する。キャッシュと更新データ用バンクとが空き状態である場合には(S5206にてYES)、処理はS52012へ移される。もしそうでないと(S5206にてNO)、処理はS5208へ移される。
【0212】
S5208にて、CPU1200は、コミット処理を行なう。このコミット処理は、前述の第1の実施の形態のコミット処理と同じ処理である。したがって、このコミット処理の詳細についてここでは繰返さない。
【0213】
S5210にて、CPU1200は、merge処理を行なう。このmerge処理は、前述の第1の実施の形態のmerge処理と同じ処理である。したがって、このmerge処理についての説明はここでは繰返さない。
【0214】
S5212にて、CPU1200は、書込命令に基づいて、書込先であるファイルブロックを決定する。S5214にて、CPU1200は、マージ用バンクに分割データ(D)をコピーして、これを新たなデータ用バンクに設定する。
【0215】
S5216にて、CPU1200は、書込先ファイルブロックを含むバンクを消去して、これを新たなマージ用バンクに設定する。
【0216】
S5218にて、CPU1200は、write_small処理を行なう。
S5220にて、CPU1200は、変数Dに1を加算する。S5222にて、CPU1200は、変数Dが分割データ数Pよりも大きいか否かを判断する。変数Dが分割データ数Pよりも大きい場合には(S5222にてYES)、このwrite_large処理を終了する。もしそうでないと(S5222にてNO)、処理はS5204へ戻される。
【0217】
以上のような構造およびフローチャートに基づく、本実施の形態に係るファイルシステムの動作を、図39〜図45を参照して説明する。以下の説明では、図39に示すように、1個のデータ書込命令により、ファイルブロック(150)からファイルブロック(380)までの231ブロック分のデータを書込むと想定する。
【0218】
図39に示すように、この231個のブロックは、3個の分割データ(分割データ(1)、分割データ(2)および分割データ(3))に分割される。分割されたデータは、複数のバンクを跨らない。第1のバンクに書込む分割データ(1)は、ファイルブロック(150)からファイルブロック(199)までのデータを含み、その容量は、1バンク分のデータ容量よりも小さい。第2のバンクに書込む分割データ(2)は、ファイルブロック(200)からファイルブロック(299)までのデータを含み、その容量は、1バンク分のデータ容量と等しい。第3のバンクに書込む分割データ(3)は、ファイルブロック(300)からファイルブロック(380)までのデータを含み、その容量は、1バンク分のデータ容量よりも小さい。図40〜図45の中の丸数字の昇順に動作が進む。以下の数字と丸数字とは対応する。
【0219】
図40に示すように、初期状態では、データ用バンク2100として第0番目のバンクから第29番目のバンクまでの30個のバンクが、マージ用バンク2200として第30番目のバンクが、更新データ用バンク2300として第31番目のバンクが設定されている。更新データ用バンク2300の全てのエントリが空いている。RAM3000のキャッシュ領域3100の全てのエントリが空いている。
【0220】
1)分割データ(1)であるファイルブロック(150)からファイルブロック(199)までが、更新データ用バンク2300とRAM3000のキャッシュ領域3100とに書込まれる。このとき、更新データ用バンク2300のエントリは全て空いており、1バンク分の容量よりも小さな分割データ(1)を書込んでも、更新データ用バンクに空きがなくなることはないので、コミット処理は実行されない。この時点で、更新データ用バンク2300にファイルブロック(150)からファイルブロック(195)までのデータが格納され、RAM3000のキャッシュ領域3100にファイルブロック(196)からファイルブロック(199)までのデータが格納された状態になる。
【0221】
2)分割データ(2)を書込む前に、コミット処理とマージ処理とが実行され、更新データ用バンク2300およびRAM3000のキャッシュ領域3100とが空いている状態になる。
【0222】
3)分割データ(2)であるファイルブロック(200)からファイルブロック(299)までが、更新データ用バンク2300とRAM3000のキャッシュ領域3100とに書込まれる。このとき、分割データ(2)の容量は、1バンク分の容量と同じである。分割データ(2)は、更新データ用バンク2300ではなく、マージ用バンク2200に書込まれる。この時点で、マージ用バンク2200にファイルブロック(200)からファイルブロック(299)までのデータが格納される。更新データ用バンク2300およびRAM3000のキャッシュ領域3100のエントリは、全て空いている状態のままである。
【0223】
4)分割データ(2)が格納されたマージ用バンクが、新たなデータ用バンク(ファイルブロック(200)〜ファイルブロック(299)格納用)に設定されて、第2番目のバンクが消去されて、それが新たなマージ用バンクに設定される。
【0224】
5)分割データ(3)であるファイルブロック(300)からファイルブロック(380)までが、更新データ用バンク2300とRAM3000のキャッシュ領域3100とに書込まれる。このとき、更新データ用バンク2300のエントリは全て空いており、1バンク分の容量よりも小さな分割データ(3)を書込んでも、更新データ用バンクに空きがなくなることはないので、コミット処理は実行されない。この時点で、更新データ用バンク2300にファイルブロック(300)からファイルブロック(376)までのデータが格納され、RAM3000のキャッシュ領域3100にファイルブロック(377)からファイルブロック(380)までのデータが格納された状態になる。
【0225】
以上のようにして、本実施の形態に係るファイルシステムによると、マージ処理が実行されるのは、常にファイルシステムの整合性が確保できた状態であるので、データ書込みの途中で予期しない電源遮断が発生しても、ファイルシステム全体としての整合性が確保できた状態を再現できる。また、書込むデータの容量がバンクの容量と同じ場合には、更新データ用バンクを経由することなく、マージ用バンクにデータを書込むので、バンクの消去回数を減少させることができる。
【0226】
<第6の実施の形態>
本実施の形態に係るファイルシステムは、前述の第1の実施の形態とは異なるmerge処理を実行する。その他のハードウェア構成および以下に示す以外のフローチャートについては、前述の第1の実施の形態と同じである。したがって、それらについてのここでの詳細な説明は繰返さない。
【0227】
図46を参照して、本実施の形態に係るファイルシステムで実行されるmerge処理の制御構造について説明する。なお、図46の処理の中で、前述の図10に示した処理と同じ処理については同じステップ番号を付してある。それらについての処理も同じである。したがって、それらについての詳細な説明はここでは繰返さない。
【0228】
S6000にて、CPU1200は、マージ用バンクを第J番目のバンクに対応した新たなデータ用バンクに、古い第J番目のバンクを消去して新たなマージ用バンクに設定する。このとき、新たなデータ用バンクのカウンタ値は、古いデータ用バンクのカウンタ値に1を加算したものとする。
【0229】
以上のような構造およびフローチャートに基づく、本実施の形態に係るファイルシステムの動作を、図47を参照して説明する。以下の説明では、ファイルブロック(0)からファイルブロック(99)までの第1のバンクに含まれるファイルブロックにデータが繰返し書込まれると想定する。
【0230】
図47(A)に示すように、初期状態では、データ用バンク2100として第0番目のバンクから第29番目のバンクまでの30個のバンクが、マージ用バンク2200として第30番目のバンクが、更新データ用バンク2300として第31番目のバンクが設定されている。更新データ用バンク2300の全てのエントリは空いている。RAM3000のキャッシュ領域3100の全てのエントリは空いていると想定する。
【0231】
ファイルブロック(0)からファイルブロック(99)まで、繰返しデータが書込まれる。更新データ用バンクに空きがなくなるので、マージ処理が実行される。
【0232】
更新データ用バンクである第31番目のバンクおよびデータ用バンクである第0番目のバンクから、マージ用バンクである第30番目のバンクへデータがコピーされる。このとき、第0番目のバンクのカウント値(=0)に1を加算した値が第30番目のカウンタ値(=1)に設定される。第30番目のバンクが新たなデータ用バンク(ファイルブロック(0)〜ファイルブロック(99)格納用)に設定される。この状態を図47(B)に示す。
【0233】
この時点で、電源が遮断されると、ファイルブロック(0)からファイルブロック(99)までを格納する2個のバンク(第0番目のバンクと第30番目のバンク)とが存在するが、カウンタ値の大きな方をより新しいデータが格納されたバンクとして判断できる。
【0234】
データ用バンクであった第0番目のバンクが消去されて、新たなマージ用バンクに設定される。第0番目のバンクが新たな更新データ用バンクに設定され、古い更新データ用バンクであった第31番目のバンクが消去される。第31番目のバンクが新たなマージ用バンクに設定される。この状態を図47(C)に示す。
【0235】
さらに、ファイルブロック(0)からファイルブロック(99)まで、繰返しデータが書込まれる。更新データ用バンクに空きがなくなるので、マージ処理が実行される。
【0236】
更新データ用バンクである第0番目のバンクおよびデータ用バンクである第30番目のバンクから、マージ用バンクである第31番目のバンクへデータがコピーされる。このとき、第30番目のバンクのカウント値(=1)に1を加算した値が第31番目のカウンタ値(=2)に設定される。第31番目のバンクが新たなデータ用バンク(ファイルブロック(0)〜ファイルブロック(99)格納用)に設定される。
【0237】
データ用バンクであった第30番目のバンクが消去されて、新たなマージ用バンクに設定される。第30番目のバンクが新たな更新データ用バンクに設定され、古い更新データ用バンクであった第0番目のバンクが消去される。第0番目のバンクが新たなマージ用バンクに設定される。この状態を図47(D)に示す。
【0238】
以上のようにして、本実施の形態に係るファイルシステムによると、マージ処理の途中で電源が遮断されても、ファイルシステム全体としての整合性が確保できた状態を再現できる。
【0239】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図1】 本発明の実施の形態に係るファイルシステムが使用される携帯機器の制御ブロック図である。
【図2】 本発明の第1の実施の形態に係るファイルシステムを実現するメモリの制御ブロック図である。
【図3】 本発明の第1の実施の形態に係るファイルシステムを実現するメモリのバンク構成を示す図である。
【図4】 ファイルのデータ構造を示す図である。
【図5】 ファイルブロック管理テーブルのデータ構造を示す図である。
【図6】 本発明の第1の実施の形態に係る書込み処理の制御の手順を示すフローチャートである。
【図7】 本発明の第1の実施の形態に係る読出し処理の制御の手順を示すフローチャートである。
【図8】 本発明の第1の実施の形態に係るcopy_bank_to_cache処理の制御の手順を示すフローチャートである。
【図9】 本発明の第1の実施の形態に係るcopy_cache_to_bank処理の制御の手順を示すフローチャートである。
【図10】 本発明の第1の実施の形態に係るmerge処理の制御の手順を示すフローチャートである。
【図11】 本発明の第1の実施の形態に係るコミット処理の制御の手順を示すフローチャートである。
【図12】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その1)である。
【図13】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その2)である。
【図14】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その3)である。
【図15】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その4)である。
【図16】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その5)である。
【図17】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その6)である。
【図18】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その7)である。
【図19】 本発明の第1の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その8)である。
【図20】 本発明の第2の実施の形態に係る書込み処理の制御の手順を示すフローチャートである。
【図21】 本発明の第2の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その1)である。
【図22】 本発明の第2の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その2)である。
【図23】 本発明の第2の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その3)である。
【図24】 本発明の第2の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その4)である。
【図25】 本発明の第3の実施の形態に係るファイルシステムを実現するメモリのバンク構成を示す図である。
【図26】 本発明の第3の実施の形態に係るcopy_cache_to_bank処理の制御の手順を示すフローチャートである。
【図27】 本発明の第3の実施の形態に係るmerge処理の制御の手順を示すフローチャートである。
【図28】 本発明の第3の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その1)である。
【図29】 本発明の第3の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その2)である。
【図30】 本発明の第3の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その3)である。
【図31】 本発明の第3の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その4)である。
【図32】 本発明の第3の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その5)である。
【図33】 本発明の第4の実施の形態に係るmerge処理の制御の手順を示すフローチャートである。
【図34】 本発明の第4の実施の形態に係る処理によるバンクの記憶内容の初期状態を表わす図である。
【図35】 本発明の第4の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図である。
【図36】 本発明の第5の実施の形態に係る書込み処理の制御の手順を示すフローチャートである。
【図37】 本発明の第5の実施の形態に係るwrite_small処理の制御の手順を示すフローチャートである。
【図38】 本発明の第5の実施の形態に係るwrite_large処理の制御の手順を示すフローチャートである。
【図39】 本発明の第5の実施の形態において書込まれるファイルの構造を示す図である。
【図40】 本発明の第5の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その1)である。
【図41】 本発明の第5の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その2)である。
【図42】 本発明の第5の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その3)である。
【図43】 本発明の第5の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その4)である。
【図44】 本発明の第5の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その5)である。
【図45】 本発明の第5の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図(その6)である。
【図46】 本発明の第6の実施の形態に係るmerge処理の制御の手順を示すフローチャートである。
【図47】 本発明の第6の実施の形態に係る処理によるバンクの記憶内容の変化を表わす図である。
【図48】 本発明に関連するファイルシステムを実現するメモリの制御ブロック図である。
【図49】 本発明に関連するファイルシステムにおけるバンクの記憶内容の変化を表わす図(その1)である。
【図50】 本発明に関連するファイルシステムにおけるバンクの記憶内容の変化を表わす図(その2)である。
【図51】 本発明に関連するファイルシステムにおけるバンクの記憶内容の変化を表わす図(その3)である。
【図52】 本発明に関連するファイルシステムにおけるバンクの記憶内容の変化を表わす図(その4)である。
【図53】 本発明に関連するファイルシステムにおけるバンクの記憶内容の変化を表わす図(その5)である。
【符号の説明】
1020 携帯機器、1040 液晶モニタ、1100 入力キー、1200CPU、122、1220 メモリ、200、2000 フラッシュメモリ、210、2100 データ用バンク、220、2200 マージ用バンク、2300 更新データ用バンク、300、3000 RAM、3100 キャッシュ領域、3200 ファイルブロック管理テーブル記憶領域、3300 システム記憶領域。

Claims (19)

  1. ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含み、各前記バンクは、複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割され、
    前記ファイルシステムは、
    データ書換命令に対応する更新データを、前記更新データ用バンクに格納するための更新データ格納手段と、
    予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択するための最新データ選択手段と、
    前記最新データ選択手段に接続され、前記選択された最新の更新データを処理するための処理手段とを含み、
    前記処理手段は、
    前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納するための第1のマージデータ格納手段と、
    前記データバンクから、前記最新の更新データに関連するデータを選択するための関連データ選択手段と、
    前記選択されたデータを、前記マージ用バンクの第2のブロックに格納するための第2のマージデータ格納手段と、
    前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定するための設定手段とを含む、ファイルシステム。
  2. 前記第1の条件は、前記更新データ用バンクに、空きブロックがないという条件である、請求項1に記載のファイルシステム。
  3. 前記ファイルシステムは、2以上のブロックを格納する揮発性半導体記憶装置をさらに含み、
    前記更新データ格納手段は、
    更新前のデータを、前記揮発性半導体記憶装置のブロックに格納するための手段と、
    前記揮発性半導体記憶装置のブロックの中から、データ書換命令に対応するデータが格納されたブロックを選択するための手段と、
    前記選択されたブロックに格納された、前記更新前のデータを更新するための手段と、
    前記更新されたデータを、前記更新データ用バンクに格納するための手段とを含む、請求項1に記載のファイルシステム。
  4. 前記ファイルシステムは、
    複数のデータバンクの中から、全てのブロックが初期化された状態であるバンクを抽出するための抽出手段と、
    前記抽出手段により抽出されたバンクを、前記マージ用バンクに設定するための設定手段とをさらに含む、請求項1に記載のファイルシステム。
  5. 前記処理手段は、
    前記関連するデータが格納されていたデータバンクを初期化して、新たな更新データ用バンクに設定するための更新データ用バンク設定手段と、
    前記更新データ用バンクであったバンクを初期化して、新たなマージ用バンクに設定するためのマージ用バンク設定手段とをさらに含む、請求項1に記載のファイルシステム。
  6. 前記処理手段は、
    前記設定されたデータバンクが最新のデータバンクであることを示す情報を作成するための作成手段をさらに含む、請求項5に記載のファイルシステム。
  7. 前記ファイルシステムは、
    予め定められた第2の条件が満足されると、前記更新データ用バンクに格納されたデータに関する管理情報を、前記不揮発性半導体記憶装置に格納するための管理情報格納手段と、
    前記管理情報が格納されたことに応答して、前記更新データバンクの各ブロック毎に、前記更新データに対応付けて、前記管理情報が格納されたことを示す情報を格納するための情報格納手段とをさらに含む、請求項1に記載のファイルシステム。
  8. 前記最新データ選択手段は、前記更新データ用バンクに格納された更新データの中から、各ブロック毎に最新の更新データであって、前記管理情報が格納されたことを示す情報が対応付けられた更新データを選択するための手段を含む、請求項7に記載のファイルシステム。
  9. 前記更新データ用バンク設定手段は、前記関連するデータが格納されていたバンクを初期化して、前記初期化されたバンクに、前記管理情報が格納されたことを示す情報が対応付けられていない更新データを格納して、新たな更新データ用バンクに設定するための手段を含む、請求項7に記載のファイルシステム。
  10. 前記第2の条件は、データ書換命令に対応する複数のブロックに対する更新が終了したという条件である、請求項7に記載のファイルシステム。
  11. 前記第2の条件は、前記更新データ用バンクに、空きブロックがないという条件である、請求項7に記載のファイルシステム。
  12. 前記ファイルシステムは、
    書込まれるデータの容量が、更新データ用バンクの大きさよりも大きい場合には、更新データ用のバンクの大きさ以下の容量のデータに分割するための分割手段をさらに含み、
    前記第2の条件は、前記分割されたデータが書込まれたという条件である、請求項7に記載のファイルシステム。
  13. 前記ファイルシステムは、
    書込まれるデータの容量が、更新データ用バンクの大きさよりも大きい場合には、マージ用バンクの大きさと同じ容量のデータに分割するための分割手段と、
    前記分割されたデータをマージ用バンクに格納するための手段とをさらに含む、請求項7に記載のファイルシステム。
  14. ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含み、揮発性半導体装置は、少なくとも1つの更新データ用バンクを含み、各前記バンクは複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割され、
    前記ファイルシステムは、
    データ書換命令に対応する更新データを、前記更新データ用バンクに格納するための更新データ格納手段と、
    予め定められた第1の条件が満足されると、前記更新データ用バンクに含まれる複数のブロックに格納された更新データの中から、各ブロックに対する最新の更新データを選択するための最新データ選択手段と、
    前記最新データ選択手段に接続され、前記選択された最新の更新データを処理するための処理手段とを含み、
    前記処理手段は、
    前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納するための第1のマージデータ格納手段と、
    前記データバンクから、前記最新の更新データに関連するデータを選択するための関連データ選択手段と、
    前記選択されたデータを、前記マージ用バンクの第2のブロックに格納するための第2のマージデータ格納手段と、
    前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定するための設定手段とを含む、ファイルシステム。
  15. 前記第1の条件は、前記更新データ用バンクに、空きブロックがないという条件である、請求項14に記載のファイルシステム。
  16. ファイルシステムを制御する方法であって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含み、各前記バンクは、複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割され、
    前記ファイルシステムを制御する方法は、
    データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
    予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
    前記選択された最新の更新データを処理する処理ステップとを含み、
    前記処理ステップは、
    前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
    前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
    前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
    前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、ファイルシステム制御方法。
  17. ファイルシステムを制御する方法であって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含み、揮発性半導体装置は、少なくとも1つの更新データ用バンクを含み、各前記バンクは複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割され、
    ファイルシステム制御方法は、
    データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
    予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
    前記選択された最新の更新データを処理する処理ステップとを含み、
    前記処理ステップは、
    前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
    前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
    前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
    前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、ファイルシステム制御方法。
  18. ファイルシステムを制御するためのプログラムであって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含み、各前記バンクは、複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割され、
    前記プログラムはコンピュータに、
    データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
    予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
    前記選択された最新の更新データを処理する処理ステップとを実行させ、
    前記処理ステップは、
    前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
    前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
    前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
    前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、プログラム。
  19. ファイルシステムを制御するためのプログラムであって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含み、揮発性半導体装置は、少なくとも1つの更新データ用バンクを含み、各前記バンクは複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割され、
    前記プログラムはコンピュータに、
    データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
    予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
    前記選択された最新の更新データを処理する処理ステップとを実行させ、
    前記処理ステップは、
    前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
    前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
    前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
    前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、プログラム。
JP2001377610A 2001-12-11 2001-12-11 ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム Expired - Fee Related JP3967121B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001377610A JP3967121B2 (ja) 2001-12-11 2001-12-11 ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US10/166,636 US6871259B2 (en) 2001-12-11 2002-06-12 File system including non-volatile semiconductor memory device having a plurality of banks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001377610A JP3967121B2 (ja) 2001-12-11 2001-12-11 ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム

Publications (2)

Publication Number Publication Date
JP2003177974A JP2003177974A (ja) 2003-06-27
JP3967121B2 true JP3967121B2 (ja) 2007-08-29

Family

ID=19185530

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001377610A Expired - Fee Related JP3967121B2 (ja) 2001-12-11 2001-12-11 ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム

Country Status (2)

Country Link
US (1) US6871259B2 (ja)
JP (1) JP3967121B2 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100544175B1 (ko) * 1999-05-08 2006-01-23 삼성전자주식회사 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법
US7174440B2 (en) * 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
JP4175881B2 (ja) * 2002-12-25 2008-11-05 スパンション エルエルシー 不揮発性メモリの記憶方法及び記憶装置
TWI232466B (en) * 2003-10-28 2005-05-11 Prolific Technology Inc Method for updating data of non-volatile memory
EP1704484A2 (en) * 2003-12-30 2006-09-27 SanDisk Corporation Non-volatile memory and method with non-sequential update block management
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
KR100568115B1 (ko) * 2004-06-30 2006-04-05 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템
TWI239530B (en) * 2004-07-20 2005-09-11 Sunplus Technology Co Ltd Method for using non-volatile memory and electronics device thereof
KR101092438B1 (ko) * 2004-08-05 2011-12-13 엘지전자 주식회사 케이블 방송 수신기 및 그의 진단 방법
EP1643506B1 (en) * 2004-10-04 2006-12-06 Research In Motion Limited System and method for automatically saving memory contents of a data processing device on power failure
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
EP2383660B1 (en) * 2005-04-21 2013-06-26 Violin Memory, Inc. Interconnection system
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
JP4866117B2 (ja) * 2006-03-22 2012-02-01 パナソニック株式会社 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ
JP2009536395A (ja) * 2006-06-19 2009-10-08 サムスン エレクトロニクス カンパニー リミテッド Otaが可能な端末の情報アップグレードシステム及び方法{informationupgradesystemandmethodforota−capabledevice}
KR101426710B1 (ko) * 2006-07-14 2014-09-23 삼성전자주식회사 휴대단말기의 버전정보 갱신 장치 및 방법
WO2008057557A2 (en) 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
TWI372974B (en) * 2008-03-24 2012-09-21 Phison Electronics Corp Management method, management apparatus and controller for memory data access
JP5364340B2 (ja) * 2008-11-07 2013-12-11 株式会社ケーヒン バックアップ方法及び装置並びに車両用電子制御装置
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
US20100318720A1 (en) * 2009-06-16 2010-12-16 Saranyan Rajagopalan Multi-Bank Non-Volatile Memory System with Satellite File System
CN101706788B (zh) * 2009-11-25 2012-11-14 惠州Tcl移动通信有限公司 一种嵌入式文件系统的跨区访问方法
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
US8626986B2 (en) * 2010-06-30 2014-01-07 Sandisk Technologies Inc. Pre-emptive garbage collection of memory blocks
KR101734200B1 (ko) 2010-12-03 2017-05-11 삼성전자주식회사 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
CN105550329A (zh) * 2015-12-21 2016-05-04 国电南瑞科技股份有限公司 适用于电力二次设备的快速录波文件系统的建立方法
US9880744B1 (en) 2015-12-22 2018-01-30 Veritas Technologies Llc Method for flash-friendly caching for CDM workloads
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
CN109324921A (zh) * 2017-07-31 2019-02-12 大心电子(英属维京群岛)股份有限公司 数据备份方法、数据恢复方法以及存储控制器
US10839878B1 (en) 2019-08-28 2020-11-17 Micron Technology, Inc. Memory sub-system managing remapping for misaligned memory components

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5551002A (en) * 1993-07-01 1996-08-27 Digital Equipment Corporation System for controlling a write cache and merging adjacent data blocks for write operations
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
JP4135049B2 (ja) * 1999-03-25 2008-08-20 ソニー株式会社 不揮発性メモリ
JP3797649B2 (ja) 1999-05-31 2006-07-19 シャープ株式会社 不揮発性半導体記憶装置
US6721843B1 (en) * 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법

Also Published As

Publication number Publication date
US6871259B2 (en) 2005-03-22
US20030110343A1 (en) 2003-06-12
JP2003177974A (ja) 2003-06-27

Similar Documents

Publication Publication Date Title
JP3967121B2 (ja) ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US8019932B2 (en) Block management for mass storage
US7493442B2 (en) Multiple segment data object management
US6779045B2 (en) System and apparatus for increasing the number of operations per transmission for a media management system
US8046530B2 (en) Process and method for erase strategy in solid state disks
CN113785275B (zh) Flash数据掉电保护方法及设备
US6938140B2 (en) System and method for linear object reallocation in place
US5907854A (en) Flash memory file system for writing data files without rewriting an entire volume
US6928456B2 (en) Method of tracking objects for application modifications
KR100749971B1 (ko) 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치
JPH09198852A (ja) 記憶装置
US7895164B1 (en) Efficient checkpoint process
JP5057887B2 (ja) データ更新装置及びデータ更新方法及びデータ更新プログラム
US20090112951A1 (en) Apparatus and method of managing files and memory device
US11182286B2 (en) Data storage device and control method for non-volatile memory
JP4888333B2 (ja) フラッシュディスク装置
JPH07160439A (ja) データ記憶装置及び主制御装置
US7099990B2 (en) Method of updating data for a non-volatile memory
KR100756135B1 (ko) 메모리 데이터베이스를 이용한 플래시 파일 시스템 처리 방법
JPS58114149A (ja) 電子フアイリングシステム
JPH09231110A (ja) Icカード
JPH07111092A (ja) 不揮発性半導体記憶装置の制御方法
JP4474928B2 (ja) ファイル記録方法
JP2008016050A (ja) Icカード
EP1990739A1 (en) Directory structure implementation system and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070424

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: 20070522

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070530

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3967121

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 4

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130608

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130608

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140608

Year of fee payment: 7

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees