JP3967121B2 - ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム - Google Patents
ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple 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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータシステムのファイルシステムに関し、特に、フラッシュメモリ等の不揮発性半導体記憶装置を用いたファイルシステムに関する。
【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のマージデータ格納手段と、
前記データバンクから、前記最新の更新データに関連するデータを選択するための関連データ選択手段と、
前記選択されたデータを、前記マージ用バンクの第2のブロックに格納するための第2のマージデータ格納手段と、
前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定するための設定手段とを含む、ファイルシステム。 - 前記第1の条件は、前記更新データ用バンクに、空きブロックがないという条件である、請求項1に記載のファイルシステム。
- 前記ファイルシステムは、2以上のブロックを格納する揮発性半導体記憶装置をさらに含み、
前記更新データ格納手段は、
更新前のデータを、前記揮発性半導体記憶装置のブロックに格納するための手段と、
前記揮発性半導体記憶装置のブロックの中から、データ書換命令に対応するデータが格納されたブロックを選択するための手段と、
前記選択されたブロックに格納された、前記更新前のデータを更新するための手段と、
前記更新されたデータを、前記更新データ用バンクに格納するための手段とを含む、請求項1に記載のファイルシステム。 - 前記ファイルシステムは、
複数のデータバンクの中から、全てのブロックが初期化された状態であるバンクを抽出するための抽出手段と、
前記抽出手段により抽出されたバンクを、前記マージ用バンクに設定するための設定手段とをさらに含む、請求項1に記載のファイルシステム。 - 前記処理手段は、
前記関連するデータが格納されていたデータバンクを初期化して、新たな更新データ用バンクに設定するための更新データ用バンク設定手段と、
前記更新データ用バンクであったバンクを初期化して、新たなマージ用バンクに設定するためのマージ用バンク設定手段とをさらに含む、請求項1に記載のファイルシステム。 - 前記処理手段は、
前記設定されたデータバンクが最新のデータバンクであることを示す情報を作成するための作成手段をさらに含む、請求項5に記載のファイルシステム。 - 前記ファイルシステムは、
予め定められた第2の条件が満足されると、前記更新データ用バンクに格納されたデータに関する管理情報を、前記不揮発性半導体記憶装置に格納するための管理情報格納手段と、
前記管理情報が格納されたことに応答して、前記更新データバンクの各ブロック毎に、前記更新データに対応付けて、前記管理情報が格納されたことを示す情報を格納するための情報格納手段とをさらに含む、請求項1に記載のファイルシステム。 - 前記最新データ選択手段は、前記更新データ用バンクに格納された更新データの中から、各ブロック毎に最新の更新データであって、前記管理情報が格納されたことを示す情報が対応付けられた更新データを選択するための手段を含む、請求項7に記載のファイルシステム。
- 前記更新データ用バンク設定手段は、前記関連するデータが格納されていたバンクを初期化して、前記初期化されたバンクに、前記管理情報が格納されたことを示す情報が対応付けられていない更新データを格納して、新たな更新データ用バンクに設定するための手段を含む、請求項7に記載のファイルシステム。
- 前記第2の条件は、データ書換命令に対応する複数のブロックに対する更新が終了したという条件である、請求項7に記載のファイルシステム。
- 前記第2の条件は、前記更新データ用バンクに、空きブロックがないという条件である、請求項7に記載のファイルシステム。
- 前記ファイルシステムは、
書込まれるデータの容量が、更新データ用バンクの大きさよりも大きい場合には、更新データ用のバンクの大きさ以下の容量のデータに分割するための分割手段をさらに含み、
前記第2の条件は、前記分割されたデータが書込まれたという条件である、請求項7に記載のファイルシステム。 - 前記ファイルシステムは、
書込まれるデータの容量が、更新データ用バンクの大きさよりも大きい場合には、マージ用バンクの大きさと同じ容量のデータに分割するための分割手段と、
前記分割されたデータをマージ用バンクに格納するための手段とをさらに含む、請求項7に記載のファイルシステム。 - ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含み、揮発性半導体装置は、少なくとも1つの更新データ用バンクを含み、各前記バンクは複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割され、
前記ファイルシステムは、
データ書換命令に対応する更新データを、前記更新データ用バンクに格納するための更新データ格納手段と、
予め定められた第1の条件が満足されると、前記更新データ用バンクに含まれる複数のブロックに格納された更新データの中から、各ブロックに対する最新の更新データを選択するための最新データ選択手段と、
前記最新データ選択手段に接続され、前記選択された最新の更新データを処理するための処理手段とを含み、
前記処理手段は、
前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納するための第1のマージデータ格納手段と、
前記データバンクから、前記最新の更新データに関連するデータを選択するための関連データ選択手段と、
前記選択されたデータを、前記マージ用バンクの第2のブロックに格納するための第2のマージデータ格納手段と、
前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定するための設定手段とを含む、ファイルシステム。 - 前記第1の条件は、前記更新データ用バンクに、空きブロックがないという条件である、請求項14に記載のファイルシステム。
- ファイルシステムを制御する方法であって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含み、各前記バンクは、複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割され、
前記ファイルシステムを制御する方法は、
データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
前記選択された最新の更新データを処理する処理ステップとを含み、
前記処理ステップは、
前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、ファイルシステム制御方法。 - ファイルシステムを制御する方法であって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含み、揮発性半導体装置は、少なくとも1つの更新データ用バンクを含み、各前記バンクは複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割され、
ファイルシステム制御方法は、
データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
前記選択された最新の更新データを処理する処理ステップとを含み、
前記処理ステップは、
前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、ファイルシステム制御方法。 - ファイルシステムを制御するためのプログラムであって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置を含み、各前記バンクは、複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記複数のバンクは、少なくとも1つの更新データ用バンクと、少なくとも1つのマージ用バンクと、データバンクとに分割され、
前記プログラムはコンピュータに、
データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
前記選択された最新の更新データを処理する処理ステップとを実行させ、
前記処理ステップは、
前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、プログラム。 - ファイルシステムを制御するためのプログラムであって、前記ファイルシステムは、複数のバンクを有する不揮発性半導体記憶装置と、バックアップ機能を有する揮発性半導体記憶装置とを含み、揮発性半導体装置は、少なくとも1つの更新データ用バンクを含み、各前記バンクは複数のブロックを含み、前記不揮発性半導体記憶装置は、前記バンク単位で消去が可能であり、前記不揮発性半導体装置の複数のバンクは、少なくとも1つのマージ用バンクと、データバンクとに分割され、
前記プログラムはコンピュータに、
データ書換命令に対応する更新データを、前記更新データ用バンクに格納する更新データ格納ステップと、
予め定められた第1の条件が満足されると、前記更新データ用バンクに格納された更新データの中から、各ブロックに対する最新の更新データを選択する最新データ選択ステップと、
前記選択された最新の更新データを処理する処理ステップとを実行させ、
前記処理ステップは、
前記選択された最新の更新データを、前記マージ用バンクの第1のブロックに格納する第1のマージデータ格納ステップと、
前記データバンクから、前記最新の更新データに関連するデータを選択する関連データ選択ステップと、
前記選択されたデータを、前記マージ用バンクの第2のブロックに格納する第2のマージデータ格納ステップと、
前記最新の更新データと前記最新の更新データに関連するデータとが格納されたマージ用バンクを、新たなデータバンクに設定する設定ステップとを含む、プログラム。
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)
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 |
US7433993B2 (en) * | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US20050144363A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data boundary management |
US8504798B2 (en) | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
KR20070007264A (ko) * | 2003-12-30 | 2007-01-15 | 쌘디스크 코포레이션 | 비순차 갱신 블록 관리를 구비한 비휘발성 메모리 및 방법 |
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 |
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 | 엘지전자 주식회사 | 케이블 방송 수신기 및 그의 진단 방법 |
DE602004003583T2 (de) * | 2004-10-04 | 2007-11-22 | Research In Motion Ltd., Waterloo | System und Verfahren zum Datensichern bei Stromausfall |
KR101427867B1 (ko) * | 2005-04-21 | 2014-08-11 | 바이올린 메모리 인코포레이티드 | 상호접속 시스템 |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US9384818B2 (en) | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
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 | パナソニック株式会社 | 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ |
CN101356519B (zh) * | 2006-06-19 | 2011-11-09 | 三星电子株式会社 | 用于可利用空中机制的便携式设备的程序升级系统及方法 |
KR101426710B1 (ko) * | 2006-07-14 | 2014-09-23 | 삼성전자주식회사 | 휴대단말기의 버전정보 갱신 장치 및 방법 |
US8745315B2 (en) * | 2006-11-06 | 2014-06-03 | Rambus Inc. | Memory Systems and methods supporting volatile and wear-leveled 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 | 株式会社ケーヒン | バックアップ方法及び装置並びに車両用電子制御装置 |
US8040744B2 (en) * | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US8244960B2 (en) * | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
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)
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 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
-
2001
- 2001-12-11 JP JP2001377610A patent/JP3967121B2/ja not_active Expired - Fee Related
-
2002
- 2002-06-12 US US10/166,636 patent/US6871259B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20030110343A1 (en) | 2003-06-12 |
US6871259B2 (en) | 2005-03-22 |
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数据掉电保护方法及设备 | |
US5907854A (en) | Flash memory file system for writing data files without rewriting an entire volume | |
US20040044869A1 (en) | System and method for linear data object reallocation in place | |
US6928456B2 (en) | Method of tracking objects for application modifications | |
JP3580929B2 (ja) | 記憶装置 | |
KR100749971B1 (ko) | 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치 | |
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 | |
EP0745939A2 (en) | Re-entrant garbage collection process for a flash memory resident file system | |
JP4888333B2 (ja) | フラッシュディスク装置 | |
JPH07160439A (ja) | データ記憶装置及び主制御装置 | |
CN117311911B (zh) | 一种虚拟机快照方法、装置、电子设备及存储介质 | |
US7099990B2 (en) | Method of updating data for a non-volatile memory | |
JPS58114149A (ja) | 電子フアイリングシステム | |
JPH09231110A (ja) | Icカード | |
JPH07111092A (ja) | 不揮発性半導体記憶装置の制御方法 | |
JP4474928B2 (ja) | ファイル記録方法 | |
JP2008016050A (ja) | Icカード |
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 |