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

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

Info

Publication number
JP2003177974A
JP2003177974A JP2001377610A JP2001377610A JP2003177974A JP 2003177974 A JP2003177974 A JP 2003177974A JP 2001377610 A JP2001377610 A JP 2001377610A JP 2001377610 A JP2001377610 A JP 2001377610A JP 2003177974 A JP2003177974 A JP 2003177974A
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.)
Granted
Application number
JP2001377610A
Other languages
English (en)
Other versions
JP3967121B2 (ja
Inventor
Masato Hagiwara
正人 萩原
Mamoru Sakamoto
守 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 高速および長寿命のファイルシステムを構築
する。 【解決手段】 フラッシュメモリ2000は、複数のバ
ンクを含むデータ用バンク2100と、マージ用バンク
2200と、更新データ用バンク2300とを含む。フ
ラッシュメモリ2000を用いたファイルシステムは、
データ書換命令に対応する更新データを更新データ用バ
ンク2300に格納する回路と、更新データ用バンク2
300に空きがなくなると、更新データ用バンク230
0に格納された更新データの中から各ブロックに対する
最新の更新データを選択する回路と、最新の更新データ
を処理する処理回路とを含む。処理回路は、最新の更新
データをマージ用バンクに格納する回路と、データ用バ
ンク2100から最新の更新データに関連するデータを
選択してマージ用バンクに格納する回路と、マージ用バ
ンク2200を新たなデータ用バンクに設定する回路と
を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムのファイルシステムに関し、特に、フラッシュメモ
リ等の不揮発性半導体記憶装置を用いたファイルシステ
ムに関する。
【0002】
【従来の技術】フラッシュメモリは、電気的に内容を書
き換えることができるEEPROM(Electrically Era
sable and Programmable ROM)の一種であって、DRA
M(Dynamic Random Access Memory)より安価である、
バックアップ電源が不要である、ビットの変更が不可逆
的である、データの消去はバンク単位である、バンクの
消去に時間を要する、バンクの消去回数に限界があると
いう特徴を有する。
【0003】このような特徴を有するフラッシュメモリ
は、携帯電話、PDA(Personal Digital Assistan
t)、デジタルスチルカメラなどにおいて、データ記憶
用デバイスとして広く用いられている。これらの機器に
おいて、記憶するデータの種類が多くなり、データの保
存、削除、移動等を頻繁に行なうため、フラッシュメモ
リ上で動作するファイルシステムが必要になる。フラッ
シュメモリは、ビットの変更が不可逆的(ビット1から
0には変更できるが、逆のビット0から1には無制限に
変更できない)であるという特徴を有するため、フラッ
シュメモリ上でファイルシステムを構築する場合には、
以下のような問題点がある。すなわち、ファイルの内容
を変更すると、その度にバンクを消去して、変更後の内
容を書込まなければならない。本発明に関連するメモリ
について、図を用いて説明する。
【0004】図48に、本発明に関連するメモリの構造
を示す。図48に示すように、このメモリ122は、フ
ラッシュメモリ200とRAM300とを含む。フラッ
シュメモリ200は、31個のデータ用バンク210
と、1個のマージ用バンクとを含む。1個のバンクは、
100個のファイルブロックを含む。RAM300は、
キャッシュメモリとして1個のファイルブロックを含
む。ファイルの書換え命令が実行されると、ファイルに
書込まれるデータがキャッシュメモリであるRAM30
0に書込まれ、その後、フラッシュメモリ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番目のバンクから、RAM30
0のエントリ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番目のバンクから、RAM30
0のエントリ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番目のバンクから、RAM30
0のエントリ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の発明によると、バックアップ機能
を有する揮発性半導体記憶装置として、たとえばSRA
M(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の発明によると、バックアップ機能
を有する揮発性半導体記憶装置として、たとえばSRA
Mを実装する。このSRAMは、更新データ用バンクを
含む。SRAMは、データの書込みおよび読出しに関す
る制限がないため、更新用データ用バンクには、同じブ
ロックに対する書込命令が発生すると、SRAM上の同
じブロックにデータが書込まれる。これにより、SRA
M上の更新データ用バンクの空きブロックがなくなる回
数が減少する。その結果、フラッシュメモリを用いた高
速および長寿命のファイルシステムを制御する方法を提
供することができる。
【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の発明によると、バックアップ機能
を有する揮発性半導体記憶装置として、たとえばSRA
Mを実装する。このSRAMは、更新データ用バンクを
含む。SRAMは、データの書込みおよび読出しに関す
る制限がないため、更新用データ用バンクには、同じブ
ロックに対する書込命令が発生すると、SRAM上の同
じブロックにデータが書込まれる。これにより、SRA
M上の更新データ用バンクの空きブロックがなくなる回
数が減少する。その結果、フラッシュメモリを用いた高
速および長寿命のファイルシステムを制御するためのプ
ログラムを提供することができる。
【0072】
【発明の実施の形態】以下、図面を参照しつつ、本発明
の実施の形態について説明する。以下の説明では、同一
の部品には同一の符号を付してある。それらの名称およ
び機能も同じである。したがってそれらについての詳細
な説明は繰返さない。
【0073】<第1の実施の形態>本実施の形態に係る
ファイルシステムは、バンク単位に消去が可能な不揮発
性ROM(フラッシュメモリ)のファイル制御に関する
ものである。このファイルシステムは、特に、何回もデ
ータを書換える用途でフラッシュメモリを搭載する機器
(携帯電話、PDA、ディジタルスチルカメラ等の携帯
機器)に使用される。
【0074】図1に、携帯機器1020の構成をブロッ
ク図形式で示す。図1に示すように、携帯機器1020
は、相互にバスで接続されたCPU(Central Processi
ng Unit)1200と、メモリ1220と、入力キー1
100と、液晶モニタ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】本発明は、このような構成に限定されるも
のではなく、複数のファイルブロックから構成されるR
AM3000と、1個以上のバンクを含むマージ用バン
ク2200と、1個以上のバンクを含む更新データ用バ
ンク2300と、30個程度のバンクを含むデータ用バ
ンク2100とから構成されるものであれば、特に限定
されない。
【0077】図3を参照して、さらにメモリ1220の
内部構造を説明する。図3に示すように、データ用バン
ク2100は、ファイルブロック(0)からファイルブ
ロック(99)までにより構成される第0番目のバン
ク、ファイルブロック(100)からファイルブロック
(199)までにより構成される第1番目のバンク、フ
ァイルブロック(200)からファイルブロック(29
9)までにより構成される第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のキャッシュ領域310
0は、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に移される。もしそうでないと(S1
000にてNO)、処理はS1000に戻され、書込み
命令を待つ。
【0084】S1002にて、CPU1200は、書込
み命令に基づいて、書込み先であるN個のファイルブロ
ックを決定する。このとき、書込み命令によりファイル
に書込まれる情報は、データのみならず、タイムスタン
プおよびサイズ等を含む。タイムスタンプおよびサイズ
は、ファイルブロックごとではなく、1個のファイルに
対して1個のタイムスタンプおよびサイズとが記憶され
るため、1個の書込み命令による書込み対象のファイル
ブロックは、多くの場合、2以上のファイルブロックに
またがる。
【0085】S1004にて、CPU1200は、変数
Iを初期化(I=1)する。S1006にて、CPU1
200は、RAM3000のキャッシュ領域3100
(エントリC(0)〜C(3))内に、ファイルブロッ
ク(I)があるか否かを判断する。RAM3000のキ
ャッシュ領域3100にファイルブロック(I)がある
と(S1006にてYES)、処理は、S1014に移
される。もしそうでないと(S1006にてNO)、処
理は、S1008に移される。
【0086】S1008にて、CPU1200は、RA
M3000のキャッシュ領域3100に空きがないか否
かを判断する。RAM3000のキャッシュ領域310
0に空きがないと(S1008にてYES)、処理はS
1010に移される。もしそうでないと(S1008に
てNO)、処理はS1012に移される。
【0087】S1010にて、CPU1200は、copy
_cache_to_bank処理を行なう。copy_cache_to_ba
nk処理の詳細については後述する。S1012にて、C
PU1200は、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にて、CPU120
0は、コミット処理を行なう。このコミット処理の詳細
については後述する。
【0089】図7を参照して、本実施の形態に係るファ
イルシステムで実行される読出し処理の制御構造につい
て説明する。
【0090】S1100にて、CPU1200は、処理
対象の命令が読出し命令であるか否かを判断する。処理
対象の命令が読出し命令である場合には(S1100に
てYES)、処理は、S1102に移される。もしそう
でないと(S1100にてNO)、処理はS1100に
戻され、読出し命令を待つ。
【0091】S1102にて、CPU1200は、読出
し命令に基づいて、読出し先であるN個のファイルブロ
ックを決定する。1個の読出し命令による読出し対象の
ファイルブロックは、多くの場合、2以上のファイルブ
ロックにまたがる。
【0092】S1104にて、CPU1200は、変数
Iを初期化(I=1)する。S1106にて、CPU1
200は、RAM3000のキャッシュ領域3100
(エントリC(0)〜C(3))内に、ファイルブロッ
ク(I)があるか否かを判断する。RAM3000のキ
ャッシュ領域3100にファイルブロック(I)がある
と(S1106にてYES)、処理は、S1114に移
される。もしそうでないと(S1106にてNO)、処
理は、S1108に移される。
【0093】S1108にて、CPU1200は、RA
M3000のキャッシュ領域3100に空きがないか否
かを判断する。RAM3000のキャッシュ領域310
0に空きがないと(S1108にてYES)、処理はS
1110に移される。もしそうでないと(S1108に
てNO)、処理はS1112に移される。
【0094】S1110にて、CPU1200は、copy
_cache_to_bank処理を行なう。copy_cache_to_ba
nk処理の詳細については後述する。S1112にて、C
PU1200は、copy_bank_to_cache処理を行な
う。copy_bank_to_cache処理の詳細については後述
する。
【0095】S1114にて、RAM3000のキャッ
シュ領域3100内のファイルブロック(I)に格納さ
れたデータを読出す。S1116にて、CPU1200
は、変数Iに1を加算する。S1118にて、CPU1
200は、変数Iがファイルブロック数Nよりも大きい
か否かを判断する。変数Iがファイルブロック数Nより
も大きい場合には(S1118にてYES)、この処理
は、終了する。もしそうでないと(S1118にてN
O)、処理は、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)をRAM300
0のキャッシュ領域3100にコピーする。S1204
またはS1206の処理の後、copy_bank_to_cache
処理は終了する。
【0100】図9を参照して、本実施の形態に係るファ
イルシステムで実行されるcopy_cache_to_bank処理
の制御構造について説明する。
【0101】S1300にて、CPU1200は、RA
M3000のキャッシュ領域3100における空きでな
い最初のエントリを決定する。S1302にて、CPU
1200は、決定されたエントリに記憶されたファイル
ブロックに変更があるか否かを判断する。決定されたエ
ントリに記憶されたファイルブロックに変更がある場合
には(S1302にてYES)、処理はS1304へ移
される。もしそうでないと(S1302にてNO)、処
理はS1314へ移される。
【0102】S1304にて、CPU1200は、更新
データ用バンク2300に空きがないか否かを判断す
る。更新データ用バンク2300に空きがない場合には
(S1304にてYES)、処理はS1306へ移され
る。もしそうでないと(S1304にてNO)、処理は
S1312へ移される。
【0103】S1306にて、CPU1200は、merg
e処理を行なう。このmerge処理の詳細については後述す
る。
【0104】S1308にて、CPU1200は、更新
データ用バンク2300に空きがないか否かを判断す
る。更新データ用バンク2300に空きがない場合には
(S1308にてYES)、処理はS1310へ移され
る。もしそうでないと(S1308にてNO)、処理は
S1312へ移される。
【0105】S1310にて、CPU1200は、更新
データ用バンク2300に含まれるファイルブロックの
コミット済みフラグをセットする。このS1310の処
理の後、処理はS1306へ戻される。
【0106】S1312にて、CPU1200は、決定
されたエントリのファイルブロックを更新データ用バン
ク2300にコピーする。S1314にて、CPU12
00は、決定されたエントリを開放する。このS131
4の処理の後、このcopy_cache_to_bankは終了す
る。
【0107】図10を参照して、本実施の形態に係るフ
ァイルシステムで実行されるmerge処理の制御構造につ
いて説明する。
【0108】S1400にて、CPU1200は、変数
Jを初期化(J=0)する。S1402にて、CPU1
200は、第J番目のバンクはデータ用バンクであるか
否かを判断する。第J番目のバンクがデータ用バンクで
ある場合には(S1402にてYES)、処理はS14
04へ移される。もしそうでないと(S1402にてN
O)、処理はS1422へ移される。
【0109】S1404にて、CPU1200は、第J
番目のバンクに含まれるファイルブロックが、更新デー
タ用バンク2300にあるか否かを判断する。第J番目
のバンクに含まれるファイルブロックが、更新データ用
バンク2300にある場合には(S1404にてYE
S)、処理はS1406へ移される。もしそうでないと
(S1404にてNO)、処理はS1422へ移され
る。
【0110】S1406にて、CPU1200は変数K
を初期化(K=0)する。S1408にて、CPU12
00は、第J番目のバンクの第K番目のファイルブロッ
クが、更新データ用バンク2300にあるファイルブロ
ックであるか否かを判断する。第J番目のバンクの第K
番目のファイルブロックが、更新データ用バンク230
0にあるファイルブロックである場合には(S1408
にてYES)、処理はS1410へ移される。もしそう
でないと(S1408にてNO)、処理はS1414へ
移される。
【0111】S1410にて、CPU1200は、その
ファイルブロックのコミット済みフラグがセットされて
いるか否かを判断する。そのファイルブロックのコミッ
ト済みフラグがセットされていると(S1410にてY
ES)、処理は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)、処理はS14
20へ移される。もしそうでないと(S1418にてN
O)、処理S1408へ戻される。
【0114】S1420にて、CPU1200は、マー
ジ用バンク2200を第J番目のバンクに対応した新た
なデータ用バンクに、古い第J番目のデータ用バンクを
消去してこれを新たなマージ用バンクに設定する。S1
422にて、CPU1200は、変数Jに1を加算す
る。S1424にて、CPU1200は、変数Jが32
より大きいか否かを判断する。なお、このフラッシュメ
モリ2000は32個のバンクから構成されている。変
数Jが32より大きい場合には(S1424にてYE
S)、処理はS1426へ移される。もしそうでないと
(S1424にてNO)、処理はS1402へ戻され
る。
【0115】S1426にて、CPU1200は、更新
データ用バンク2300に含まれる、コミット済みフラ
グがリセットされたファイルブロックをマージ用バンク
にコピーし、これを新たな更新データ用バンクに設定す
る。S1428にて、CPU1200は、古い更新デー
タ用バンクを消去して、これを新たなマージ用バンクに
設定する。
【0116】図11を参照して、本実施の形態の係るフ
ァイルシステムで実行されるコミット処理の制御構造に
ついて説明する。S1500にて、CPU1200は、
変数Lを初期化(L=1)する。S1502にて、CP
U1200は、RAM3000のキャッシュ領域310
0におけるエントリC(L)をcopy_cache_to_bank
処理の対象に決定する。S1504にて、CPU120
0は、copy_cache_to_bank処理を行なう。
【0117】S1506にて、CPU1200は、変数
Lに1を加算する。S1508にて、CPU1200
は、変数LがRAM3000のキャッシュ領域3100
のエントリ数よりも大きいか否かを判断する。変数Lが
RAM3000のキャッシュ領域3100のエントリ数
よりも大きい場合には(S1508にてYES)、処理
はS1510へ移される。もしそうでないと(S150
8にてNO)、処理はS1502へ戻される。
【0118】S1510にて、CPU1200は、RA
M3000のファイル管理テーブルに変更があるか否か
を判断する。RAM3000のファイル管理テーブルに
変更がある場合には(S1510にてYES)、処理は
S1512へ移される。もしそうでないと(S1510
にてNO)、処理はS1514へ移される。
【0119】S1512にて、CPU1200は、RA
M3000のファイル管理テーブルの内容を、フラッシ
ュメモリ2000のファイル管理テーブル記憶領域にコ
ピーする。S1514にて、CPU1200は、更新デ
ータ用バンク2300に含まれるファイルブロックのコ
ミット済みフラグをセットする。
【0120】以上のような構造およびフローチャートに
基づく、本実施の形態に係るファイルシステムの動作
を、図12〜図19を参照して説明する。以下の説明で
は、1個の書込命令により、ファイルブロック(10
0)、ファイルブロック(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のキャッシュ領域31
00のエントリC(2)およびC(3)は、空いてい
る。
【0122】1)1番目の書込み対象のファイルブロッ
ク(100)は、RAM3000のキャッシュ領域31
00のエントリC(0)に格納されている。そのため、
このエントリC(0)の内容が更新される。これで、フ
ァイルブロック(100)に対する書込み動作は終了す
る。
【0123】2)2番目の書込み対象のファイルブロッ
ク(210)は、RAM3000のキャッシュ領域31
00のエントリには格納されていないが、更新データ用
バンク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のキャッシュ領域31
00のエントリC(2)の内容が更新される。これで、
ファイルブロック(210)に対する書込み動作は終了
する。
【0125】4)3番目の書込み対象のファイルブロッ
ク(250)は、RAM3000のキャッシュ領域31
00に格納されておらず、更新データ用バンク2300
にも格納されていない。また、RAM3000のキャッ
シュ領域3100のエントリC(3)が空いている。そ
のため、データバンク2100の第2番目のバンクのフ
ァイルブロック(250)が、RAM3000のキャッ
シュ領域3100のエントリC(3)に格納される。
【0126】5)RAM3000のキャッシュ領域31
00のエントリC(3)の内容が更新される。これで、
ファイルブロック(250)に対する書込み動作は終了
する。
【0127】6)4番目の書込み対象のファイルブロッ
ク(300)は、RAM3000のキャッシュ領域31
00に格納されておらず、更新データ用バンク2300
にも格納されていない。そのため、データバンク210
0の第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のキャッシュ領域31
00のエントリC(0)の内容が更新される。これで、
ファイルブロック(300)に対する書込み動作は終了
する。
【0130】9)5番目の書込み対象のファイルブロッ
ク(301)は、RAM3000のキャッシュ領域31
00に格納されておらず、更新データ用バンク2300
にも格納されていない。そのため、データバンク210
0の第3番目のバンクのファイルブロック(301)
が、RAM3000のキャッシュ領域3100のエント
リに格納される。しかしながら、RAM3000のキャ
ッシュ領域3100のエントリに空きがなく、かつ更新
データ用バンク2300にも空きがない。そのため、更
新データ用バンク2300に空きを作成するために、更
新データ用バンク2300の中のコミット済みのファイ
ルブロック(100)の中で最新のR(96)が、マー
ジ用バンク2200に格納される。
【0131】10)データ用バンク2100の第1番目
のバンクのファイルブロック(100)以外のファイル
ブロック(ファイルブロック(101)〜ファイルブロ
ック(199))が、マージ用バンク2200に格納さ
れる。
【0132】11)マージ用バンク2200が消去され
るとともに、第30番目のバンクがデータ用バンク21
00に格納される。
【0133】12)マージバンク2300に、更新デー
タ用バンク2300の中のコミット済みのファイルブロ
ック(210)の中で最新のR(97)が、マージ用バ
ンク2200に格納される。
【0134】13)データ用バンク2100の第2番目
のバンクのファイルブロック(210)以外のファイル
ブロック(ファイルブロック(201)〜ファイルブロ
ック(209)およびファイルブロック(211)〜フ
ァイルブロック(299))が、マージ用バンク220
0に格納される。
【0135】14)マージ用バンク2200が消去され
るとともに、第1番目のバンクをデータ用バンク210
0とする。
【0136】15)マージバンク2300に、更新デー
タ用バンク2300の中のコミット済みでないエントリ
R(98)およびR(99)に格納されたファイルブロ
ック(210)およびファイルブロック(100)が、
マージ用バンク2200に格納される。
【0137】16)更新データ用バンク2300であっ
た第31番目のバンクが消去される。
【0138】17)更新データ用バンク2300であっ
た第31番目のバンクと、マージ用バンクであった第2
番目のバンクとが入換えられる。
【0139】18)RAM3000のキャッシュ領域3
100のエントリC(0)を更新データ用バンクのエン
トリR(2)に格納して、RAM3000のキャッシュ
領域3100のエントリC(0)を空きにする。
【0140】19)データバンク2100の第3番目の
バンクのファイルブロック(301)が、RAM300
0のキャッシュ領域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は、RAM300
0のキャッシュ領域3100に空きがない場合には、キ
ャッシュフルフラグをセットする。その後、copy_cach
e_to_bank処理が実行される。S2004にて、CP
U1200は、変数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のキャッシュ領域31
00に格納されておらず、更新データ用バンク2300
にも格納されていない。また、RAM3000のキャッ
シュ領域3100の全てのエントリが空いている。その
ため、データバンク2100の第1番目のバンクのファ
イルブロック(150)が、RAM3000のキャッシ
ュ領域3100のエントリC(0)に格納される。RA
M3000のキャッシュ領域3100のエントリC
(0)の内容が更新される。これで、ファイルブロック
(150)に対する書込み動作は終了する。
【0148】2)2番目の書込み対象のファイルブロッ
ク(151)は、RAM3000のキャッシュ領域31
00に格納されておらず、更新データ用バンク2300
にも格納されていない。また、RAM3000のキャッ
シュ領域3100のエントリC(0)以外のエントリが
空いている。そのため、データバンク2100の第1番
目のバンクのファイルブロック(151)が、RAM3
000のキャッシュ領域3100のエントリC(1)に
格納される。RAM3000のキャッシュ領域3100
のエントリC(1)の内容が更新される。これで、ファ
イルブロック(151)に対する書込み動作は終了す
る。
【0149】3)3番目の書込み対象のファイルブロッ
ク(100)は、RAM3000のキャッシュ領域31
00に格納されておらず、更新データ用バンク2300
にも格納されていない。また、RAM3000のキャッ
シュ領域3100のエントリC(0)およびC(1)以
外のエントリが空いている。そのため、データバンク2
100の第1番目のバンクのファイルブロック(10
0)が、RAM3000のキャッシュ領域3100のエ
ントリC(2)に格納される。RAM3000のキャッ
シュ領域3100のエントリC(2)の内容が更新され
る。これで、ファイルブロック(100)に対する書込
み動作は終了する。この時点で、RAM3000のキャ
ッシュ領域3100に空きがあるため(S1008にて
NO)、キャッシュフルフラグがセットされない。この
ため、キャッシュフルフラグがリセットされているので
(S2004にてNO)、コミット処理が実行されな
い。その結果、バンクの消去処理が実行されない。
【0150】4)4番目の書込み対象のファイルブロッ
ク(150)は、RAM3000のキャッシュ領域31
00のエントリC(0)に格納されている。そのため、
このエントリC(0)の内容が更新される。これで、フ
ァイルブロック(150)に対する書込み動作は終了す
る。
【0151】5)5番目の書込み対象のファイルブロッ
ク(151)は、RAM3000のキャッシュ領域31
00のエントリC(1)に格納されている。そのため、
このエントリC(1)の内容が更新される。これで、フ
ァイルブロック(151)に対する書込み動作は終了す
る。
【0152】6)6番目の書込み対象のファイルブロッ
ク(100)は、RAM3000のキャッシュ領域31
00のエントリC(2)に格納されている。そのため、
このエントリC(2)の内容が更新される。これで、フ
ァイルブロック(100)に対する書込み動作は終了す
る。この後、このデータ書込み命令が繰返されても、R
AM3000のキャッシュ領域3100に空きがなくな
ることがないので、コミット処理が実行されない。その
結果、バンクの消去が実行されない。
【0153】一方、図23〜図24を参照して、このよ
うに同じファイルブロックに対する書込み命令が繰返さ
れる場合に、第1の実施の形態のファイルシステムの動
作を、比較のために説明する。
【0154】図23に示すように、初期状態は、前述の
図21の状態と同じである。 1)1番目の書込み対象のファイルブロック(150)
に対して、前述と同じようにして、RAM3000のキ
ャッシュ領域(エントリC(0))を用いてデータが更
新される。
【0155】2)2番目の書込み対象のファイルブロッ
ク(151)に対して、前述と同じようにして、RAM
3000のキャッシュ領域(エントリC(1))を用い
てデータが更新される。
【0156】3)3番目の書込み対象のファイルブロッ
ク(100)に対して、前述と同じようにして、RAM
3000のキャッシュ領域(エントリC(2))を用い
てデータが更新される。
【0157】4)1個の書込命令に対応する、ファイル
ブロック(150)、ファイルブロック(151)およ
びファイルブロック(100)のデータ更新が終了する
と、コミット処理が行なわれる。すなわち、RAM30
00のキャッシュ領域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)に対して、前述と同じようにして、RAM
3000のキャッシュ領域(エントリC(1))を用い
てデータが更新される。
【0161】7)3番目の書込み対象のファイルブロッ
ク(100)に対して、前述と同じようにして、RAM
3000のキャッシュ領域(エントリC(2))を用い
てデータが更新される。
【0162】8)1個のデータ書込命令に対応する、フ
ァイルブロック(150)、ファイルブロック(15
1)およびファイルブロック(100)のデータ更新が
終了すると、コミット処理が行なわれる。
【0163】9)しかしながら、更新データ用バンク2
300に空きがない。そのため、更新データ用バンク2
300に空きを作成するために、更新データ用バンク2
300の中のコミット済みの中の最新のファイルブロッ
ク(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処理およびmer
ge処理が異なる。
【0168】図26を参照して、本実施の形態に係るフ
ァイルシステムで実行されるcopy_cache_to_bank処
理について説明する。なお、図26に示す処理の中で、
前述の図9と同じ処理については同じステップ番号を付
してある。それらについての処理も同じである。したが
って、それらについての詳細な説明はここでは繰返さな
い。
【0169】S3000にて、CPU1200は、決定
されたエントリのファイルブロックが、更新データ用バ
ンク2301にあって、そのコミット済みフラグがリセ
ット済みであるか否かを判断する。決定されたエントリ
のファイルブロックが更新データ用バンク2301にあ
って、そのコミット済みフラグがリセットされていると
(S3000にてYES)、処理はS3002へ移され
る。もしそうでないと(S3000にてNO)、処理は
S1304へ移される。
【0170】S1304にて、CPU1200は、更新
データ用バンク2301に空きがないか否かを判断す
る。更新データ用バンクに空きがない場合には(S13
04にてYES)、処理はS3004へ移される。もし
そうでないと(S1304にてNO)、処理はS131
2へ移される。
【0171】S3002にて、CPU1200は、コミ
ットフラグがリセットされたエントリに、決定されたエ
ントリのファイルブロックをコピーする。
【0172】S3004にて、CPU1200は、merg
e処理を行なう。この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のキャッシュ領域31
00のエントリには格納されていないが、更新データ用
バンク2301のエントリR(96)に格納されてい
る。また、RAM3000のキャッシュ領域3100の
エントリに空きがない。そのため、RAM3000のキ
ャッシュ領域3100のエントリC(0)を更新データ
用バンクのエントリR(99)に格納して、RAM30
00のキャッシュ領域3100のエントリC(0)を空
きにする。
【0178】2)更新データ用バンク2301のエント
リR(96)に格納されたファイルブロック(100)
が、RAM3000のキャッシュ領域3100のエント
リC(0)に格納される。
【0179】3)RAM3000のキャッシュ領域31
00のエントリC(0)の内容が更新される。これで、
ファイルブロック(100)に対する書込み動作は終了
する。
【0180】4)2番目の書込み対象のファイルブロッ
ク(101)は、RAM3000のキャッシュ領域31
00のエントリには格納されていないが、更新データ用
バンク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のキャッシュ領域31
00のエントリC(0)の内容が更新される。これで、
ファイルブロック(101)に対する書込み動作は終了
する。
【0183】7)3番目の書込み対象のファイルブロッ
ク(100)は、RAM3000のキャッシュ領域31
00のエントリには格納されていないが、更新データ用
バンク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のキャッシュ領域31
00のエントリ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へ移される。もしそうでないと(S40
04にてNO)、処理はS4006へ移される。
【0190】S4006にて、CPU1200は、バン
クRを新たなマージ用バンクに設定する。S4008に
て、CPU1200は、そのバンクをバンクFとして、
バンクRをバンクFのデータバンクに、バンクFを新た
なマージ用バンクに設定する。
【0191】以上のような構造およびフローチャートに
基づく、本実施の形態に係るファイルシステムの動作
を、図34〜図35を参照して説明する。以下の説明で
は、ファイルブロック(0)からファイルブロック(9
9)までの第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番目のバンクが
未使用であるので、古い更新データ用バンクである第3
1番目のバンクが、新たなデータ用バンク(ファイルブ
ロック(100)〜ファイルブロック(199)格納
用)に設定される。第1番目のバンクが消去され、新た
なマージ用バンクに設定される。この状態を図35
(B)に示す。
【0195】さらに、このような状態から、ファイルブ
ロック(0)からファイルブロック(99)まで、繰返
しデータが書込まれる。更新データ用バンクに空きがな
くなるので、マージ処理が実行される。
【0196】更新データ用バンクである第0番目のバン
クおよびデータ用バンクである第30番目のバンクか
ら、マージ用バンクである第1番目のバンクへデータが
コピーされる。第1番目のバンクが新たなデータ用バン
ク(ファイルブロック(0)〜ファイルブロック(9
9)格納用)に設定される。データ用バンクであった第
30番目のバンクが消去されて、新たなマージ用バンク
に設定される。第30番目のバンクが新たな更新データ
用バンクに設定され、古い更新データ用バンクであった
第0番目のバンクが消去される。第2番目のバンクが未
使用であるので、古い更新データ用バンクである第0番
目のバンクが、新たなデータ用バンク(ファイルブロッ
ク(200)〜ファイルブロック(299)格納用)に
設定される。第2番目のバンクが消去され、新たなマー
ジ用バンクに設定される。この状態を図35(C)に示
す。
【0197】さらに、このような状態から、ファイルブ
ロック(0)からファイルブロック(99)まで、繰返
しデータが書込まれる。更新データ用バンクに空きがな
くなるので、マージ処理が実行される。
【0198】更新データ用バンクである第30番目のバ
ンクおよびデータ用バンクである第1番目のバンクか
ら、マージ用バンクである第2番目のバンクへデータが
コピーされる。第2番目のバンクが新たなデータ用バン
ク(ファイルブロック(0)〜ファイルブロック(9
9)格納用)に設定される。データ用バンクであった第
1番目のバンクが消去されて、新たなマージ用バンクに
設定される。第1番目のバンクが新たな更新データ用バ
ンクに設定され、古い更新データ用バンクであった第3
0番目のバンクが消去される。第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は、writ
e_large処理を行なう。このwrite_large処理の詳細に
ついては後述する。
【0204】S5004にて、CPU1200は、writ
e_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にてY
ES)、処理はS5206へ移される。もしそうでない
と(S5204にてNO)、処理はS5218へ移され
る。
【0211】S5206にて、CPU1200は、キャ
ッシュと更新データ用バンクとが空き状態であるか否か
を判断する。キャッシュと更新データ用バンクとが空き
状態である場合には(S5206にてYES)、処理は
S52012へ移される。もしそうでないと(S520
6にてNO)、処理はS5208へ移される。
【0212】S5208にて、CPU1200は、コミ
ット処理を行なう。このコミット処理は、前述の第1の
実施の形態のコミット処理と同じ処理である。したがっ
て、このコミット処理の詳細についてここでは繰返さな
い。
【0213】S5210にて、CPU1200は、merg
e処理を行なう。このmerge処理は、前述の第1の実施の
形態のmerge処理と同じ処理である。したがって、このm
erge処理についての説明はここでは繰返さない。
【0214】S5212にて、CPU1200は、書込
命令に基づいて、書込先であるファイルブロックを決定
する。S5214にて、CPU1200は、マージ用バ
ンクに分割データ(D)をコピーして、これを新たなデ
ータ用バンクに設定する。
【0215】S5216にて、CPU1200は、書込
先ファイルブロックを含むバンクを消去して、これを新
たなマージ用バンクに設定する。
【0216】S5218にて、CPU1200は、writ
e_small処理を行なう。S5220にて、CPU120
0は、変数Dに1を加算する。S5222にて、CPU
1200は、変数Dが分割データ数Pよりも大きいか否
かを判断する。変数Dが分割データ数Pよりも大きい場
合には(S5222にてYES)、このwrite_large処
理を終了する。もしそうでないと(S5222にてN
O)、処理はS5204へ戻される。
【0217】以上のような構造およびフローチャートに
基づく、本実施の形態に係るファイルシステムの動作
を、図39〜図45を参照して説明する。以下の説明で
は、図39に示すように、1個のデータ書込命令によ
り、ファイルブロック(150)からファイルブロック
(380)までの231ブロック分のデータを書込むと
想定する。
【0218】図39に示すように、この231個のブロ
ックは、3個の分割データ(分割データ(1)、分割デ
ータ(2)および分割データ(3))に分割される。分
割されたデータは、複数のバンクを跨らない。第1のバ
ンクに書込む分割データ(1)は、ファイルブロック
(150)からファイルブロック(199)までのデー
タを含み、その容量は、1バンク分のデータ容量よりも
小さい。第2のバンクに書込む分割データ(2)は、フ
ァイルブロック(200)からファイルブロック(29
9)までのデータを含み、その容量は、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にファイルブロック(15
0)からファイルブロック(195)までのデータが格
納され、RAM3000のキャッシュ領域3100にフ
ァイルブロック(196)からファイルブロック(19
9)までのデータが格納された状態になる。
【0221】2)分割データ(2)を書込む前に、コミ
ット処理とマージ処理とが実行され、更新データ用バン
ク2300およびRAM3000のキャッシュ領域31
00とが空いている状態になる。
【0222】3)分割データ(2)であるファイルブロ
ック(200)からファイルブロック(299)まで
が、更新データ用バンク2300とRAM3000のキ
ャッシュ領域3100とに書込まれる。このとき、分割
データ(2)の容量は、1バンク分の容量と同じであ
る。分割データ(2)は、更新データ用バンク2300
ではなく、マージ用バンク2200に書込まれる。この
時点で、マージ用バンク2200にファイルブロック
(200)からファイルブロック(299)までのデー
タが格納される。更新データ用バンク2300およびR
AM3000のキャッシュ領域3100のエントリは、
全て空いている状態のままである。
【0223】4)分割データ(2)が格納されたマージ
用バンクが、新たなデータ用バンク(ファイルブロック
(200)〜ファイルブロック(299)格納用)に設
定されて、第2番目のバンクが消去されて、それが新た
なマージ用バンクに設定される。
【0224】5)分割データ(3)であるファイルブロ
ック(300)からファイルブロック(380)まで
が、更新データ用バンク2300とRAM3000のキ
ャッシュ領域3100とに書込まれる。このとき、更新
データ用バンク2300のエントリは全て空いており、
1バンク分の容量よりも小さな分割データ(3)を書込
んでも、更新データ用バンクに空きがなくなることはな
いので、コミット処理は実行されない。この時点で、更
新データ用バンク2300にファイルブロック(30
0)からファイルブロック(376)までのデータが格
納され、RAM3000のキャッシュ領域3100にフ
ァイルブロック(377)からファイルブロック(38
0)までのデータが格納された状態になる。
【0225】以上のようにして、本実施の形態に係るフ
ァイルシステムによると、マージ処理が実行されるの
は、常にファイルシステムの整合性が確保できた状態で
あるので、データ書込みの途中で予期しない電源遮断が
発生しても、ファイルシステム全体としての整合性が確
保できた状態を再現できる。また、書込むデータの容量
がバンクの容量と同じ場合には、更新データ用バンクを
経由することなく、マージ用バンクにデータを書込むの
で、バンクの消去回数を減少させることができる。
【0226】<第6の実施の形態>本実施の形態に係る
ファイルシステムは、前述の第1の実施の形態とは異な
るmerge処理を実行する。その他のハードウェア構成お
よび以下に示す以外のフローチャートについては、前述
の第1の実施の形態と同じである。したがって、それら
についてのここでの詳細な説明は繰返さない。
【0227】図46を参照して、本実施の形態に係るフ
ァイルシステムで実行されるmerge処理の制御構造につ
いて説明する。なお、図46の処理の中で、前述の図1
0に示した処理と同じ処理については同じステップ番号
を付してある。それらについての処理も同じである。し
たがって、それらについての詳細な説明はここでは繰返
さない。
【0228】S6000にて、CPU1200は、マー
ジ用バンクを第J番目のバンクに対応した新たなデータ
用バンクに、古い第J番目のバンクを消去して新たなマ
ージ用バンクに設定する。このとき、新たなデータ用バ
ンクのカウンタ値は、古いデータ用バンクのカウンタ値
に1を加算したものとする。
【0229】以上のような構造およびフローチャートに
基づく、本実施の形態に係るファイルシステムの動作
を、図47を参照して説明する。以下の説明では、ファ
イルブロック(0)からファイルブロック(99)まで
の第1のバンクに含まれるファイルブロックにデータが
繰返し書込まれると想定する。
【0230】図47(A)に示すように、初期状態で
は、データ用バンク2100として第0番目のバンクか
ら第29番目のバンクまでの30個のバンクが、マージ
用バンク2200として第30番目のバンクが、更新デ
ータ用バンク2300として第31番目のバンクが設定
されている。更新データ用バンク2300の全てのエン
トリは空いている。RAM3000のキャッシュ領域3
100の全てのエントリは空いていると想定する。
【0231】ファイルブロック(0)からファイルブロ
ック(99)まで、繰返しデータが書込まれる。更新デ
ータ用バンクに空きがなくなるので、マージ処理が実行
される。
【0232】更新データ用バンクである第31番目のバ
ンクおよびデータ用バンクである第0番目のバンクか
ら、マージ用バンクである第30番目のバンクへデータ
がコピーされる。このとき、第0番目のバンクのカウン
ト値(=0)に1を加算した値が第30番目のカウンタ
値(=1)に設定される。第30番目のバンクが新たな
データ用バンク(ファイルブロック(0)〜ファイルブ
ロック(99)格納用)に設定される。この状態を図4
7(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_cach
e_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_ca
che_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_s
mall処理の制御の手順を示すフローチャートである。
【図38】 本発明の第5の実施の形態に係るwrite_l
arge処理の制御の手順を示すフローチャートである。
【図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、2
100 データ用バンク、220、2200 マージ用
バンク、2300 更新データ用バンク、300、30
00 RAM、3100 キャッシュ領域、3200
ファイルブロック管理テーブル記憶領域、3300 シ
ステム記憶領域。

Claims (19)

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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520804A (ja) * 2003-12-30 2007-07-26 サンディスク コーポレイション 不揮発性メモリおよび非順次更新ブロック管理を伴う方法
JP2007257109A (ja) * 2006-03-22 2007-10-04 Matsushita Electric Ind Co Ltd 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
JP4933267B2 (ja) * 2003-12-30 2012-05-16 サンディスク コーポレイション 大きな消去ブロックを有する不揮発性メモリシステムの管理
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system

Families Citing this family (41)

* 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
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
EP1704484A2 (en) * 2003-12-30 2006-09-27 SanDisk Corporation Non-volatile memory and method with non-sequential update block management
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
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 엘지전자 주식회사 케이블 방송 수신기 및 그의 진단 방법
ATE347731T1 (de) * 2004-10-04 2006-12-15 Research In Motion Ltd System und verfahren zum datensichern bei stromausfall
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
CN103116565A (zh) * 2005-04-21 2013-05-22 提琴存储器公司 可配置的开关原件、互连网络及布局网络间相互连接方法
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
WO2007148900A1 (en) * 2006-06-19 2007-12-27 Samsung Electronics Co., Ltd. Program upgrade system and method for ota-capable portable device
KR101426710B1 (ko) * 2006-07-14 2014-09-23 삼성전자주식회사 휴대단말기의 버전정보 갱신 장치 및 방법
WO2008057557A2 (en) 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
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
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
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 株式会社ケーヒン バックアップ方法及び装置並びに車両用電子制御装置
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
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
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
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 삼성전자주식회사 플래시 메모리 관리방법

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520804A (ja) * 2003-12-30 2007-07-26 サンディスク コーポレイション 不揮発性メモリおよび非順次更新ブロック管理を伴う方法
US7945759B2 (en) 2003-12-30 2011-05-17 Sandisk Corporation Non-volatile memory and method with phased program failure handling
US8051257B2 (en) 2003-12-30 2011-11-01 Sandisk Technologies Inc. Non-volatile memory and method with control data management
JP4851344B2 (ja) * 2003-12-30 2012-01-11 サンディスク コーポレイション 不揮発性メモリおよび非順次更新ブロック管理を伴う方法
US8103841B2 (en) 2003-12-30 2012-01-24 Sandisk Technologies Inc. Non-volatile memory and method with non-sequential update block management
JP4933267B2 (ja) * 2003-12-30 2012-05-16 サンディスク コーポレイション 大きな消去ブロックを有する不揮発性メモリシステムの管理
JP4938460B2 (ja) * 2003-12-30 2012-05-23 サンディスク コーポレイション 不揮発性メモリおよびブロック管理システムを伴う方法
US8239643B2 (en) 2003-12-30 2012-08-07 Sandisk Technologies Inc. Non-volatile memory and method with control data management
US8621177B2 (en) 2003-12-30 2013-12-31 Sandisk Corporation Non-volatile memory and method with phased program failure handling
JP2007257109A (ja) * 2006-03-22 2007-10-04 Matsushita Electric Ind Co Ltd 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system

Also Published As

Publication number Publication date
US6871259B2 (en) 2005-03-22
JP3967121B2 (ja) 2007-08-29
US20030110343A1 (en) 2003-06-12

Similar Documents

Publication Publication Date Title
JP3967121B2 (ja) ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US8250294B2 (en) Block management for mass storage
US6779045B2 (en) System and apparatus for increasing the number of operations per transmission for a media management system
JP3524428B2 (ja) 記憶装置、記憶システム、メモリ管理方法及び記録媒体
US7191306B2 (en) Flash memory, and flash memory access method and apparatus
US6567307B1 (en) Block management for mass storage
US6938140B2 (en) System and method for linear object reallocation in place
US6928456B2 (en) Method of tracking objects for application modifications
KR100749971B1 (ko) 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치
US20100180072A1 (en) Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program
KR20060106993A (ko) 플래시 메모리 데이터 저장 방법
CN102999353B (zh) 创建设备节点的方法及装置
EP1402356A2 (en) System and method of object-oriented persistence
JP4888333B2 (ja) フラッシュディスク装置
CN115328922B (zh) 用于单向链表的数据管理方法、装置及系统
JPH09231110A (ja) Icカード
JPS58114149A (ja) 電子フアイリングシステム
KR100586031B1 (ko) 비휘발성 메모리를 이용한 실시간 데이터베이스 운용방법
KR100756135B1 (ko) 메모리 데이터베이스를 이용한 플래시 파일 시스템 처리 방법
JP2005339450A (ja) フラッシュメモリのデータ管理方式
WO2007120075A1 (fr) Procédé de commutation
US10810132B1 (en) Object based extent mapping for flash memory
JP2008016050A (ja) Icカード
EP1990739A1 (en) Directory structure implementation system and method
JPH07111092A (ja) 不揮発性半導体記憶装置の制御方法

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