JP3503448B2 - フラッシュ型メモリ及びその管理装置 - Google Patents
フラッシュ型メモリ及びその管理装置Info
- Publication number
- JP3503448B2 JP3503448B2 JP31761297A JP31761297A JP3503448B2 JP 3503448 B2 JP3503448 B2 JP 3503448B2 JP 31761297 A JP31761297 A JP 31761297A JP 31761297 A JP31761297 A JP 31761297A JP 3503448 B2 JP3503448 B2 JP 3503448B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- area
- data
- execution program
- blocks
- 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
Landscapes
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
モリ及びその管理装置にかかり、更に具体的には、フラ
ッシュ型メモリの効率的な管理手法の改良に関するもの
である。
ゲ−トトランジスタを含む電気的に消去可能なプログラ
マブル読出専用メモリ(EEPROM)は、現在市場で
容易に入手できる。これらのいわゆるフラッシュメモリ
は、機能・性能面でEPROMメモリと類似した不揮発
メモリであり、メモリ内に分割されているブロックを消
去する回路内プログラマブル動作を可能にするという機
能を更に有する。フラッシュメモリでは、以前に書き込
まれたメモリの領域を前もって消去することで、その書
き換えが行われる。
レ−ティングシステム(以下、単に「OS」という)の
プログラムがそのシステムのデ−タ記憶装置のデ−タ管
理を担う。OSプログラムとの互換性を達成するために
必要かつ十分であるデ−タ記憶装置のアトリビュ−ト
(属性)は、デ−タ記憶装置のいかなる位置からもデ−
タを読み出すことができ、これにデ−タを書き込むこと
ができることである。しかし、フラッシュメモリの場
合、デ−タが既に書き込まれている領域には、その領域
のデ−タを消去しなければデ−タを書き込むことはでき
ない。このため、フラッシュメモリは、典型的な既存の
OSプログラムとは互換性がない。
ラムによってフラッシュメモリを管理することを可能に
するソフトウエアが先行技術において提案されている。
この先行技術のプログラムでは、フラッシュメモリを
「書込み1回読出し複数回」の装置として動作させる
か、「書込み複数回読出し複数回」の装置として動作さ
せている。前者は、以前に書き込まれているメモリ場所
を再利用することはできない装置であり、補助記憶装置
や拡張記憶装置として使用できる。後者は、以前に書き
込まれているメモリ領域を再利用可能とし、その領域中
にはフラッシュメモリの書換回数を少なくするような制
御を持つ補助記憶装置(半導体ファイル記憶装置)があ
る。
ような背景技術には、次のような不都合がある。 (1)上述のような先行技術に見られる装置によれば、フ
ラッシュメモリを使用した拡張記憶装置上では書換回数
を少なくなるような制御構造を持たずに実行プログラム
を動作させている。つまり、フラッシュメモリに対して
新たにデ−タの書換えを行うときは、全ブロックを一括
して消去し、その後、デ−タを記憶させる必要がある。
また、マルチタスク,マルチスレッド,マルチプロセス
に代表される並列実行プログラムやデ−タの共有あるい
は占有という管理を行う場合において、一般のMMU
(メモリ管理ユニット)を駆使してフラッシュメモリを
ブロック(ペ−ジ)毎に管理する方式では、書換回数の
管理と書換回数の低減を図ることは困難である。
装置上でプログラムの実行を可能とする装置にはないも
のの、フラッシュメモリの書換回数を少なくするような
制御構造を持つ装置として補助記憶装置(半導体ファイ
ル記憶装置)がある。補助記憶装置において書換回数を
少なくするためにその情報(書換回数テ−ブル)を異な
るメモリ上に記憶する方式である。しかし、実行プログ
ラムを主記憶装置にロ−ドすることなく、フラッシュメ
モリ上で動作させるプログラムにおいて、単純に同一フ
ラッシュメモリ上に記憶する方式では、ブロック間にま
たがるデ−タを無駄なく完全に連続的な配置を可能にす
ることは困難である。
その目的は、フラッシュメモリを使用した拡張記憶装置
上でフラッシュメモリの書換回数を少なくするような制
御構造を持つ場合に、主記憶装置に実行プログラムをロ
−ドすることなく拡張記憶装置上でプログラムの実行を
可能とすることである。他の目的は、同一のフラッシュ
メモリを使用し、補助記憶装置として書換回数を少なく
する制御構造を持ちながら、マルチプロセッシング,マ
ルチスレッド,マルチタスクといった高度なプログラム
の実行環境においても、メモリ管理装置によって、安全
に実行プログラムのモジュ−ルやデ−タファイルの管理
の実現を可能とすることである。更に他の目的は、同一
フラッシュメモリ上で、拡張記憶装置および補助記憶装
置の混在を可能とするファイル管理技術を提供すること
である。
モリは、ブロック単位で記憶内容を消去できるフラッシ
ュ型メモリが第1,第2,第3のブロックを含んでお
り、第1のブロックは、そのブロックの管理情報を記憶
するヘッダ領域と、ブロック単位に分割されたデータフ
ァイルを格納する記憶領域とを備えており、第3のブロ
ックは、実行プログラムファイルが格納されたブロック
の管理情報を記憶するヘッダ領域と、ブロックごとに分
割された実行プログラムファイルを格納する記憶領域を
備えており、第2のブロックは、第3のブロックに隣接
し、実行プログラムファイルが、第3のブロックの実行
プログラムファイルを格納する記憶領域の容量を越えた
場合、第3のブロックに実行プログラムファイルが分割
され格納された続きのデータを格納する記憶領域を備え
ていることを特徴とする。
は、隣接する複数の前記第2及び第3のブロックに対し
て実行プログラムファイルを割り当てるとともに、それ
ら実行プログラムファイルが割り当てられたブロックの
管理情報を前記第3のブロックに格納する手段を備えた
ことを特徴とする。
は、以下の詳細な説明及び添付図面から明瞭になろう。
て詳細に説明する。本形態は、例えば図1に示すよう
に、プロセッサ10,フラッシュメモリ12およびその
制御装置14を含む拡張もしくは補助の記憶装置,RA
M(主記憶装置)16を含むコンピュ−タシステムに適
用される。このようなシステムで、同一フラッシュメモ
リを使用して、実行プログラムモジュ−ルとデ−タファ
イルのデ−タを共存させるとともに、デ−タの書換回数
をできる限り低減するデ−タの格納方法と管理・制御の
ための装置を得ようとするものである。
管理するため、フラッシュメモリ12の管理単位をその
最小イレ−ス(消去)単位である1ブロックとする。そ
して、この最小単位であるブロック内に、実行プログラ
ム領域とデ−タ領域の混在を認めないこととする。各ブ
ロックには、実行プログラム領域もしくはデ−タ領域
と、そのブロックを管理する情報を持つヘッダ領域とが
存在する。
ブロックには、そのブロックのヘッダ領域内にデ−タの
属性を持つことを宣言する。同様に、実行プログラム領
域に割り当てようとするブロックには、そのブロックの
ヘッダ領域内に実行プログラムの属性を持つことを宣言
する。ただし、この実行プログラム領域については、1
つのブロックに1つのヘッダ領域が必ずしも必要という
ことではない。すなわち、連鎖する複数ブロックを連続
的に実行プログラム領域として確保したい場合は、確保
ブロック数をヘッダ領域内で宣言する。これによって、
宣言した連鎖する複数ブロックは、ヘッダ情報を持たな
くてもよい。つまり、実行プログラムのメモリ配置とし
て、1つのヘッダ領域により複数の連続するブロックに
実行プログラム領域を確保する。一方、デ−タ領域は1
つのブロック内にヘッダ領域と混在することになる。こ
のデ−タ領域内には、該当するブロックに関する情報を
付加する。
基本構造の一例が示されている。同図のように、OS2
0やアプリケ−ションソフト22とのソケットインタ−
フェ−スとして、いわゆるドライバ層24に相当する部
分にフラッシュ管理マネ−ジャ26を設ける。このフラ
ッシュ管理マネ−ジャ26は、本形態のシステム用ドラ
イバと考えることができる。このフラッシュ管理マネ−
ジャ26によって、ブロック情報の管理やデ−タのリ−
ド/ライトの制御が行なわれる。
ク消去がiバイト単位で可能で、かつブロック数がn+
1(16進数)個あるフラッシュメモリが1つあるとす
る。これら各ブロックを、物理ブロックと呼ぶことにす
る。そして、各物理ブロックに、アドレスの低い方から
高い方へ順に物理ブロックナンバを「0」から「n」ま
で割り振る。図示の例では、図の上方がアドレスが低
く、物理ブロック0,物理ブロック1,物理ブロック
2,……,物理ブロックnとなっている。
ている情報のヘッダ領域としてjバイト分を確保したと
すると、各物理ブロックに割り当てられる実行プログラ
ム領域あるいはデ−タファイル領域のサイズは、i−j
バイトとなる。そして、同一ブロックの記憶領域には、
実行プログラム領域とデ−タファイル領域の混在は認め
ないことにする。この様子を示すと、図3[B]のよう
になる。例えば、最上位の物理ブロック0には、jバイ
トのヘッダ領域30Aと、i−jバイトの記憶領域30
Bが存在する。次の物理ブロック1には、jバイトのヘ
ッダ領域31Aと、i−jバイトの記憶領域31Bが存
在する。以下の物理ブロックについても同様である。
て、図4を参照しながら説明する。図4[A]には、連
続する8個の物理ブロック0〜7を実行プログラム領域
として割り当て、それ以外の物理ブロック8〜nをデ−
タファイル領域として割り当てた例である。上述したよ
うに、複数の連続する物理ブロックに確保された実行プ
ログラム領域は、1つのヘッダ領域によって管理され
る。一方、デ−タファイル領域は、例え複数の連続する
物理ブロックに確保されたとしても、各ブロック毎にヘ
ッダ領域によって管理される。従って、図4[A]の例
では、実行プログラム領域32の物理ブロックヘッダ3
2Aは物理ブロック0にのみ存在し、物理ブロック1〜
7には存在しない。そして、後述するように、物理ブロ
ック1〜7の管理情報等は、物理ブロック0のヘッダ領
域32Aにまとめられることになる。一方、物理ブロッ
ク8〜nにはデ−タファイル領域38B〜3nBがそれ
ぞれ確保されるが、各ブロックにそれぞれヘッダ領域3
8A〜3nAが存在し、これらによってブロック毎に管
理される。
をデ−タファイル領域として割り当て、物理ブロック1
〜Aを実行プログラム領域として割り当て、それ以後は
デ−タファイル領域として割り当てた例である。図4
[C]の例は、物理ブロック0〜n−9をデ−タファイ
ル領域に、物理ブロックn−8〜n−3を実行プログラ
ム領域に、それ以後をデ−タファイル領域にそれぞれ割
り当てた例である。このように、連続して確保された実
行プログラム領域は一つのヘッダ領域によって管理され
る。そして、物理ブロック数の制限や固定したアドレス
配置にすることはない。しかし、デ−タファイル領域
は、連続して確保されたとしても、各ブロック毎に管理
される。
分割して配置されている。まず、図5[A]の例では、
物理ブロック0〜7に実行プログラム領域(1)が割り当
てられており、物理ブロック8にはデ−タファイル領域
が割り当てられている。そして、物理ブロック9〜F−
1に実行プログラム(2)が割り当てられており、物理ブ
ロックF以後はデ−タファイル領域用に確保されてい
る。この例でも、連続する実行プログラム領域は、一つ
のヘッダ領域で管理されている。
ファイル領域用に割り当てられており、物理ブロック1
〜8が実行プログラム領域(1)に割り当てられている。
そして、物理ブロック9〜n−9までがデ−タファイル
領域用に割り当てられており、それ以後最後までが実行
プログラム領域(2)として割り当てられている。図5
[C]では、物理ブロック0,1がデ−タファイル領域
として割り当てられており、物理ブロック2〜4が実行
プログラム領域(1)に割り当てられている。そして、そ
の後の物理ブロック5〜n−9がデ−タファイル領域と
して割り当てられており、物理ブロックn−8〜n−1
が実行プログラム領域(2)として割り当てられており、
最後の物理ブロックnがデ−タファイル領域に割り当て
られている。これら図5では、実行プログラム領域とし
て2つの領域(1),(2)が指定されている例を示してい
る。しかし、本形態では、実行プログラム領域を更に複
数の領域で配置することが可能である。
説明する。物理ブロックヘッダには、実行プログラム領
域用とデ−タファイル領域用とがある。この2種類の領
域を判断するために、ヘッダは共通部分の構造を持つこ
とが望ましい。そこで、物理ブロックヘッダの共通する
部分の構造を、例えば次のように割り当てる。
了)を示すフラグ (2)実行プログラム領域/デ−タファイル領域を示すマ
−カ−フラグ (3)連続予約ブロックの領域数 (4)ブロックの消去回数 (5)ブロックの消去した順番を示す番号(イレ−スシ−
ケンスナンバ) (6)ブロックを初期化した時刻 (7)ブロック領域名
説明する。フラッシュ管理マネ−ジャ26(図2参照)
は、各物理ブロックヘッダの内容を読み、フラッシュメ
モリがどのように管理されているかを把握する。フラッ
シュメモリのメモリセル内のビットデ−タは、論理値の
「1」→「0」への変化の処理時間は比較的短いが、
「0」→「1」への変化は、一度ブロックイレ−ス又は
イレ−スをしなければならず、長時間を要する。つま
り、1ビットのデ−タの書換えを行なうために、そのブ
ロック内のデ−タを一時待避させるとともに、ブロック
イレ−ス後に書き戻す必要があり、処理時間としては大
きい。
用して物理ブロックの状態を管理することになる。すな
わち、上述した書換えに伴うオ−バ−ヘッドを軽減すた
め、物理ブロックヘッダ内にその物理ブロックが有効な
状態か,それとも無効な状態か,初期化が完了した状態
か,有効な状態から無効な状態への遷移状態か,といっ
た状態をそれぞれの物理ブロック毎に認識し、デ−タの
書込み,デ−タの無効化,物理ブロックのイレ−ス,物
理ブロックの初期化などの操作を行なう。
物理ブロックがデ−タファイル領域に割り当てられた
か、それとも、実行プログラム領域に割り当てられたか
を示すフラグである。これによって、実行プログラム領
域に指定されたとき、(3)の連続予約ブロック数に実行
プログラムとして後に続くブロックの数を指定する。し
かし、デ−タファイル領域に指定されているときは、連
続予約ブロック数を0とする。
ブロックを消去(ブロックイレ−ス)した回数を記録す
る。ブロックイレ−スするときは、記録されている以前
の消去回数を一時的に保持し、ブロックイレ−ス終了
後、一時的に保持している以前の消去回数に1インクリ
メントしてデ−タを格納する。
す番号は、同じときにどの順番に物理ブロックのイレ−
スを行なったかを判別するためのものである。ある物理
ブロックをブロックイレ−スし、その後、他の物理ブロ
ックのブロック消去回数が同じものがあれば、その消去
回数のブロックのイレ−スシ−ケンスナンバ−に1イン
クリメントしたものを該当ブロックヘッダのイレ−スシ
−ケンスナンバ−に格納する。すなわち、消去回数が同
じものが複数ブロック存在するとき、それらの中の最大
のイレ−スシ−ケンスナンバの値に1インクリメントし
て該当ブロックヘッダ内のイレ−スシ−ケンスナンバに
格納する。
は、該当する物理ブロックをブロックイレ−スしたとき
の時刻を記入する。なお、リアルタイムクロックを持た
ないシステムの場合は不要である。
グラムやデ−タファイルの中でそのブロックに割り当て
た固有の名称である。
体のブロックが効率よく、つまり特定のブロックに偏ら
ず、消去回数がすべてのブロックで均一化されるように
管理するために、上述した管理情報が利用される。ま
ず、フラッシュ管理マネ−ジャ26は、新たに物理ブロ
ックを割り当てるとき、消去回数の少ないものに対して
優先的に割り当てを行なう。もし、消去回数が同じブロ
ックがあるとき、その中でイレ−スシ−ケンスナンバの
もっとも若い番号のものを割り当てる。最も若いイレ−
スシ−ケンスナンバのブロックは、消去した時刻が最も
古いものである。また、リアルタイムクロックを持つシ
ステムでは、イレ−スシ−ケンスナンバの代わりにその
クロックを使用する。すなわち、消去回数が同じブロッ
クがあるとき、その中の物理ブロック内のもっとも古い
時刻を持つブロックを割り当てる。このように、イレ−
スシ−ケンスナンバあるいはリアルタイムクロックのう
ちのいずれか一方をもてば、少しでも効率よくブロック
の割り当てを均一化することができる。
ッダの後からその領域内において、実行プログラムデ−
タをROMの場合と同じように配置することによって行
なう。これは、OS20に依存する部分が大きいため、
従来の方法によって対応することになる。
ュ管理マネ−ジャ26によって行われる。図6[A]に
示すように、デ−タファイルは、物理ブロックヘッダ4
0Aの領域を除く記憶領域40Bに格納されることにな
る。デ−タの格納構造として、デ−タファイル内の論理
的なデ−タレコ−ドをブロッキングし、図6[B]に示
すように、デ−タレコ−ドヘッダ42A,デ−タレコ−
ドフッダ42Cを付随させた形でデ−タレコ−ド42B
のパケット42を構成する。ブロッキングの方法として
は、固定長レコ−ド,可変長レコ−ド,スパンドレコ−
ドがあり、本形態ではいずれの手法であってもよい。こ
のブロッキングは、OS20やアプリケ−ションソフト
22に依存することが多いため、システム上、フラッシ
ュ管理マネ−ジャ26がブロッキングの方法を決定して
制御する。
ダ42Cには、線形リスト構造を持たせるようにする。
デ−タレコ−ドの方法によっては、ブロック領域名の最
適な利用方法が異なる。システム設計する際、ブロック
領域名として、パ−ティション名,デ−タファイル名,
ディレクトリ名などのように、最適なものを割り当てる
ようにする。最適なブロック領域名は、デ−タレコ−ド
の方法に依存することが多い。
42Bは、上述したようにデ−タレコ−ドパケット42
として、割り当てられた物理ブロックのデ−タファイル
領域40Bに格納される。図6[B]にはその様子が示
されており、デ−タレコ−ドパケット(1)〜(n)が、i−
jバイトのデ−タファイル領域40B中に格納される。
フラッシュ管理マネ−ジャ26は、デ−タレコ−ドパケ
ット42の管理と物理ブロック40Bによる管理という
2重の管理を行なう。
て説明する。フラッシュ管理マネ−ジャ26は、フラッ
シュメモリが初期化されていなければ、まず最初に各物
理ブロックを初期化する。初期化する場合は、一度すべ
てのブロックをイレ−スし、各物理ブロックのブロック
ヘッダに初期化完了フラグ,消去回数(1回),イレ−
スシ−ケンスナンバあるいは、初期化時刻などの情報を
格納する。次に、通常は、実行プログラムやデ−タファ
イルを格納するため、各物理ブロックの領域を宣言(確
保)する。つまり、実行プログラム領域やデ−タファイ
ル領域を示すマ−カ−フラグ,連続予約ブロックの領域
数の情報を格納する。このときに、ブロックの領域名を
割り当るようにしてもよい。また、後でブロックの領域
名を割り当てるのであれば、フラッシュ管理マネ−ジャ
26がその対応を行なう。
順を説明する。物理ブロックヘッダの有効フラグをON
にし、その後ブロッキングされたデ−タレコ−ドをデ−
タ領域内に順次格納して行く。デ−タレコ−ドはデータ
領域に追記していくことになるが、デ−タレコ−ドを書
き換えたい場合は、フラッシュメモリの特徴からその部
分を書き換えることはオ−バ−ヘッドが大きい。
デ−タレコ−ドへのデ−タ格納は、旧デ−タレコ−ドを
無効とし、新たにデ−タレコ−ドを追記していく方法で
行う。無効となったデ−タレコ−ドは、デ−タレコ−ド
ヘッダ内に無効フラグを持たせることによって、フラッ
シュ管理マネ−ジャ26が無効と判断できる。物理ブロ
ックのデ−タ領域内のデ−タレコ−ドパケットのすべて
が無効となった場合は、その物理ブロックヘッダ内の無
効フラグをONすることによって、フラッシュ管理マネ
−ジャ26はこの物理ブロックをブロックイレ−スする
ことができる。ブロックイレ−スが完了すると、前述の
ブロックヘッダの初期化を行なう。
順を説明する。最初に実行プログラム領域として複数ブ
ロックを確保するときは、まず、物理ブロックヘッダ内
の有効フラグ,実行プログラム領域を示すマ−カ−フラ
グ,予約領域ブロック数の各情報を格納する。これによ
り、実行プログラム領域内に実行プログラムをROM化
したデ−タを格納する。
果として、デ−タファイル領域の書換回数と実行プログ
ラム領域の書換回数と比較する。そして、大幅な回数の
開きがあれば、現在配置されている領域を変更し、デフ
ラグメンテ−ションを行なうことが望ましい。フラッシ
ュ管理マネ−ジャ26は、それぞれの領域を管理してい
るためデフラグメンテ−ション操作における動的配置に
対応でき、システムとして矛盾を起こす心配もない。こ
れらを行なうことで効率的な領域配置を実現できる。ま
た、結果として運用時間を延ばし、フラッシュメモリの
書換寿命(回数ではなく時間)を延ばすこともできる。
なお、フラッシュメモリによっては、ライト(書込)操
作中に他のオペレ−ションができないチップが存在す
る。このようなときは、タスク,スレッドのようなプロ
グラミング技法により、排他制御を行なうようにする。
ブロックヘッダの格納例が示されている。図7[A]の
例は、64Kバイトを消去ブロック単位とするフラッシ
ュメモリで、ブロック数がn+1個あるシステムであ
る。各物理ブロックの先頭には、図7[B]に示すよう
に、各物理ブロックの管理情報であるヘッダ領域とし
て、256バイトが割り当てられている。上述したよう
に、デ−タファイルの場合には、該当する物理ブロック
内に必ず物理ブロックヘッダを付随させる。しかし、実
行プログラムファイルの場合はその限りではない。以
下、本形態の実施例について説明する。
である。本例のファイル管理装置では、図8[A]に示
すように、ブロック消去が64Kバイト単位で可能な2
M×8ビットのフラッシュメモリが使用される。図8
[A]に示すように、各ブロックに「0」から「1F」
と順に番号を付ける。このようなフラッシュメモリに対
して、図5[A]のように実行プログラム領域を連続領
域として確保したとすると、図8に[B]に示すように
なる。当然、実行プログラム領域(1)に領域指定されて
いる物理ブロック1〜7には物理ブロックヘッダはな
い。同様に、実行プログラム(2)に領域指定されている
物理ブロック10〜Eには、物理ブロックヘッダはな
い。
に、1バイト目から18バイト目までを共通のデ−タ構
造をもつことにする。これにより、この共通部分をフラ
ッシュ管理マネ−ジャ26によってスキャンすれば、全
体の構造を把握することができる。そして、次の19バ
イト目から実行プログラム領域あるいはデ−タファイル
領域に割り当てられた内容を追記していけばよい。
バイト目には、図10[A]に示すように、有効/遷移
中/無効,初期化完了状態,予約のフラグがある。これ
らのうち、有効/遷移中/無効のフラグは、このブロッ
ク領域が有効状態か,それとも有効から無効になる遷移
中(過渡期)の状態か,完全に無効になった状態かを示
す。初期化完了状態のフラグは、ブロックのイレ−ス後
にブロックヘッダの初期化(フォ−マット)が完了した
ことを指し示す。予約のフラグは、システムを拡張する
ときに使用するための予備フラグである。実際のビット
の割付例を示すと、表1[A]のようになる。
レースの手順を説明する。フラッシュ管理マネ−ジャ2
6の判定により、ブロックイレ−ス命令が出されたとき
(図10[B]の50)、次の状態として旧ブロックヘ
ッダの消去回数などを一時保存し(52)、このブロッ
クのブロックイレ−スを行なう(54)。ブロックイレ
−スを行なった直後、イレースされたブロックの記憶エ
リアのデ−タ値は、すべてFFhとなっている(5
6)。この後すぐに、フラッシュ管理マネ−ジャ26が
初期化(フォ−マット)操作(58)によって、ビット
4が0となり、この記憶エリアのデ−タ値はFFhから
EFhに遷移する(60)。
レ−ス前に一時保存しておいた消去回数に+1した値を
書き込み、物理ブロックの初期化を行なう。そして、新
たにこのブロックへの使用要求によってフラッシュ管理
マネ−ジャ26が割り当てを行ったとすると(62)、
ビット7に0を書き込み、このエリアのデ−タの値はE
Fhから6Fhに遷移する(64)。更に、フラッシュ
管理マネ−ジャ26がこのブロックの無効要求を認めれ
ば(66)、ビット6に0を書き込み、このエリアのデ
−タの値は6Fhから2Fhに遷移する(68)。
ッシュ管理マネ−ジャ26の機能により、物理ブロック
にはコピ−元,コピ−先,ム−ブなどのような遷移中の
状態が存在する。デ−タファイル領域としての物理ブロ
ック内の有効な状態から遷移中の状態にするには(7
0)、ビット5を0にし、このエリアのデ−タの値は6
Fhから4Fhに遷移させればよい(72)。この遷移
中の状態を存在させることは、遷移に要する時間が少な
くないことの他に、電池の消耗による動作の不安定や、
カ−ド型フラッシュメモリが外されたときなどにおける
安全性を高めるためである。つまり、本発明では、この
遷移段階の状態を管理し、故障・事故などによるデ−タ
の消失を最小限に抑え、復旧させるように構成されてい
る。
ついて説明する。この2バイト目には、図9に示すよう
に、プログラム/データ,連続予約ブロック領域数のフ
ラグがあり、図10[C],表1[C]に示すようにな
っている。これらのうち、プログラム/データのマーカ
ーフラグは、実行プログラム,デ−タファイルのいずれ
がそのブロックに割り当てられたかを決定するフラグで
ある。このマ−カ−フラグが0のとき、実行プログラム
領域にこのブロックが指定されたことになる。
プログラム領域に指定した残りのブロック数が16進数
で表記されている。しかし、このマ−カ−フラグが1
で、この物理ブロックはデ−タファイル領域として割り
当てているとき、連続予約ブロック数には000000
0bを書く。
[D]に示すように、そのブロックの消去回数を16進
で表記している。3バイト目がその回数の下位の桁、4
バイト目がその回数の中位の桁、5バイト目にはその回
数の上位の桁として、それぞれデ−タを格納する。従っ
て、FFFFFFh回がブロック連続の最大数値とな
る。なお、この最大値のとき、更なるインクリメントは
行われない。
は、各物理ブロックの消去回数が同じときに、フラッシ
ュ管理マネ−ジャ26が最適な物理ブロックの割り当て
を行なうために用意されたもので、上述したイレースシ
ーケンスナンバである。このイレ−スシ−ケンスナンバ
は、物理ブロックの消去回数が他の物理ブロックと同じ
ときに、どの順番で物理ブロックの初期化がなされたか
を記録するものである。イレ−スシ−ケンスナンバ−の
割付の流れとして、まず該当する物理ブロックの消去回
数と他のブロックで消去回数で同一のものがなければ、
該当する物理ブロックのイレ−スシ−ケンシナンバは0
x00となる。
があるときは、その中で最も大きいイレ−スシ−ケンス
ナンバを検出し、該当ブロックのイレ−スシ−ケンスナ
ンバには先ほど検出したイレ−スシ−ケンスナンバの値
に1インクリメントした値を記録する。このようなアル
ゴリズムによって、イレースシ−ケンスナンバの割付を
行なう。イレースシーケンスナンバは、フラッシュ管理
マネ−ジャ26が物理ブロックの割り当てを行なうとき
の判断材料となる。
までは、該当するブロックの領域名を記録する。実行プ
ログラムファイルの場合、パ−ティション名やディレク
トリ名などに利用すると、システム運用が容易になる。
また、デ−タファイルの場合は、デ−タレコード方式に
よって最適となるようなブロック領域名の扱いが考えら
れる。例えば、デ−タレコ−ドの方法が固定長,可変長
レコ−ド,スパンドレコ−ドのようなファイルを二重管
理する場合には、パ−ティション名,ディレクトリ名な
どが適している。しかし、固定長や可変長レコ−ドでフ
ァイルを一元管理する場合には、デ−タファイル名とし
て扱うほうが望ましい。本実施例では、ブロック領域名
は8.3形式で、MS−DOSのような表現方法を利用
する。
用いてフラッシュファイル管理システムを実現する。フ
ラッシュ管理マネ−ジャ26は、OS20やアプリケ−
ションソフト22などの要求により、実行プログラムや
デ−タファイルなどの読み出し,書き込みを制御する。
まず、書き込みに際しては、フラッシュメモリの特徴と
して書き込み遅延の影響がある。このため、オ−バヘッ
ドを少なくして効率よく書き込みを行なうためには、他
のデ−タファイル領域に新たに追記していく方式をとる
ことになる。この方式を実行するためには、書換前の旧
デ−タと書換後の新デ−タが論理的には変更されている
が、物理的には旧デ−タが無効となり、新デ−タが追記
されることになる。
共存するものの、旧デ−タに無効フラグを記すことによ
って論理的に削除することになる。このような動作をフ
ラッシュファイルシステムが繰り返すと、論理的な無効
デ−タが数多く存在することになる。場合によっては、
新規のデ−タファイル領域がなくなる危険性すらある。
このことを避けるために、フラッシュ管理マネ−ジャ2
6は、デ−タの無効化を定期的に検知し、デフラグメン
テ−ションの操作を行なって効率よくデ−タファイル領
域を確保する。
の割り当ては、フラッシュ管理マネ−ジャ26が行な
う。このとき、OS20やアプリケ−ションンソフト2
2の要求によってデ−タファイル領域を与えることにな
るが、本実施例のアルゴリズムでは、優先的に消去回数
が少ない物理ブロックに割り当てられる。また、デフラ
グメンテ−ション操作を行なうときなどは、消去回数が
少ないブロックについて優先的にデ−タレコ−ドパケッ
トの無効化を行ない、その物理ブロックのデ−タファイ
ル領域内をすべて無効化することによって、ブロックの
使用回数の均一化が図られる。そしてそれらの中で少し
でも物理ブロックの使用回数を効率的に均一化するた
め、イレ−スシ−ケンスナンバの若いものを優先させ
て、割り当てる物理ブロックやブロックイレ−スの管理
が行われる。
くと、結果として実行プログラム領域とデ−タファイル
領域の消去回数が大きく違ってくるようになる。そし
て、ある程度消去回数に開きが生じると、フラッシュ管
理マネ−ジャ26は、実行プログラム領域で使用してい
る物理ブロックとデ−タファイル領域で使用している物
理ブロックとを入れ替え、これによってフラッシュファ
イルシステムの運用寿命の延命化が図られる。
ジャ26がフラッシュメモリの読み出しを行なうことを
要求し、許可確認後、ブロッキングされたデ−タレコ−
ドパケットを論理的なデ−タレコ−ドとして扱うことに
よって可能となる。また、書き込みの場合、フラッシュ
管理マネ−ジャ26にフラッシュメモリへの書き込みを
行なうことを要求し、許可確認後、論理的なデ−タレコ
−ドをブロッキングし、デ−タレコ−ドパケット化して
指定エリアに格納する。デ−タの書換えは、物理的にデ
−タレコ−ドパケットを無効化し、新たに追記すること
によって実現する。ただし、物理的にメモリエリアは縮
小する。これらのデ−タのブロッキング方法は、上述し
た通りであり、背景技術により実現されている。
べてのデータが無効化された場合、その物理ブロックヘ
ッダの無効フラグをONとすることによって、その物理
ブロック全体が無効化されたことになる。そして、フラ
ッシュ管理マネ−ジャ26はこのことを検知し、そのブ
ロックをイレ−スして初期化操作を始める。また、デフ
ラグメンテ−ション操作により、コピ−元のデ−タファ
イルの属する物理ブロックヘッダの遷移中フラグをON
にする。そして、必要なデ−タが全部コピ−されたな
ら、その物理ブロックヘッダの無効フラグをONにし、
前述のブロックイレ−ス・初期化操作を行なう。遷移中
フラグのONから無効フラグのONまでの間に何らかの
原因による異常な状態があり、システムが再起動したと
きなどには、これらの状態フラグを監視し、解析するこ
とによって、どの状態から停止あるいは異常となったか
を検出することができる。そして、システムを修復・復
旧させるための貴重な情報源となる。
れの物理ブロックの状態を監視,管理していくことにな
る。OS20やアプリケ−ションソフト22の要求に応
じて該当する物理ブロックを割り当て、有効→(遷移
中)→無効→初期化の状態の監視,管理を実行する。そ
して、フラッシュファイルシステムを運用していくと、
各物理ブロックの状態の変化として、初期化→有効,有
効→無効,有効→遷移中,移中→無効,無効→初期化,
初期化→無効などが挙げられる。
化状態から、その物理ブロックがデ−タファイル領域等
として割り当てられたとき、有効フラグONによって有
効状態となる。
その物理ブロックが有効でデ−タファイル領域内に少な
くとも一つは論理的に有効なデ−タがある状態から、デ
−タファイル領域内がすべて論理的に無効なデ−タとな
り、フラッシュ管理マネ−ジャ26が、その後この物理
ブロックの無効フラグをONとし、物理ブロックの無効
化を行なう。
在する論理的に有効なデ−タレコ−ドパケットを、異な
る物理ブロックのデ−タファイル領域にコピ−すると
き、コピ−元となる物理ブロックに対して遷移中フラグ
をONにする。この状態のとき、デ−タレコ−ドパケッ
トがコピ−されていることになる。
が終了し、物理ブロックが無効となったことを示す。つ
まり、デ−タレコ−ドパケットのコピ−が完了し、フラ
ッシュ管理マネ−ジャ26が無効フラグをONにする。
な状態からその物理ブロックをブロックイレ−スし、物
理ブロックヘッダを初期化が完了したとき、フラッシュ
管理マネ−ジャ26が初期化フラグをONにする。この
とき、物理ブロックヘッダの初期化が完了し、デ−タフ
ァイル領域として使用可能な状態となる。
化された状態から、その物理ブロックが無効になった状
態を示す。これは、状態として存在する可能性はある
が、システムとしては多用すべきではない。
ブロックの状態を管理・監視し、何らかの原因による異
常状態からの脱却後、有効/無効/遷移中/初期化フラ
グを、異常状態以前のデ−タの復元や復旧をするための
情報源とする。つまり、これらの変化状態を考慮するこ
とで、システムの停止や異常が生じたシステムの修復や
デ−タレコ−ドパケットの復元を行なうとき、どの状態
から異常になったかを検出することができる。
の代わりに初期化した時刻を記録する方法である。すな
わち、図11にブロックヘッダの構成を示すように、1
9バイト目から21バイト目までに初期化が行われた年
/月/日/時/分/秒を記録する。実施例1のイレ−ス
シ−ケンスナンバは、同一消去回数のときの初期化され
た順番を指していたが、実施例2では、ブロックの使用
回数の均一化を図るアルゴリズムにおいて、すべての物
理ブロックの使用回数を少しでも効率的に向上させるた
めに、消去回数が同じときは最も古い時刻のものを優先
させることによって、割り当てる物理ブロックやブロッ
クイレ−スの管理が行なわれる。
レースシ−ケンスナンバと初期化時刻の双方を記録する
方法である。図12に示すように、6バイト目にイレー
スシーケンスナンバを記録し、19バイト目から21バ
イト目までに初期化の年/月/日/時/分/秒を記録す
る。実施例1,実施例2とほとんど同じであるが、ブロ
ックの使用回数の均一化を図るアルゴリズムにおいて、
すべての物理ブロックの使用回数を少しでも効率的に向
上させるために、消去回数が同じときはイレ−スシ−ケ
ンスナンバの若いものから優先させるようにする。ま
た、最も古い初期化時刻の物理ブロックが存在するとき
は、消去回数を他と見比べて効率がよいと判断できると
き、その物理ブロックを優先的に割り当てるアルゴリズ
ムによって、割り当てる物理ブロックやブロックイレ−
スの管理が行なわれる。
上の開示に基づいて多様に改変することが可能である。
例えば、次のようなものも含まれる。 (1)前記形態はフラッシュメモリに本発明を適用したも
のであるが、他の類似するメモリがフラッシュメモリと
同じ書込み,読出し機能を備えており、かつ、書込前ブ
ロック消去特性を有するメモリであれば、同様に適用可
能である。 (2)フラッシュメモリのイレース単位である物理ブロッ
クは、バイト単位やワード単位の他、どのようなデータ
単位であっても、同様に適用可能である。
のような効果がある。 (1)フラッショ型メモリを使用した拡張記憶装置上で、
フラッシュ型メモリの書換回数を少なくするような制御
構造を持ち、かつ、主記憶装置に実行プログラムをロ−
ドすることなく、フラッシュ型メモリ上でプログラムの
実行が可能となる。また、書換回数を少なくする制御構
造をもつ補助記憶装置としても、無駄の少ないデ−タ構
造で記憶を行うことが可能となる。
ルのためのエリアをブロック内に設けることとしたの
で、別にメモリを設ける必要がなく、コストの削減が可
能となる。特に、拡張記憶装置と補助記憶装置を1つの
フラッシュ型メモリ上で混在させることができ、システ
ムとして省スペ−ス,コスト削減を図ることができる。
初期化という状態フラグをもつこととしたので、コンピ
ュータシステムの異常による停止からの復旧やデ−タの
復元に有効である。
成を示す図である。
る。
ロックの割付を行なったメモリマップを示す図である。
イル領域を物理ブロックに割り当てた例を示す図であ
る。
イル領域を物理ブロックに割り当てた例を示す図であ
る。
の例と格納方法の例を示す図である。
シュメモリを物理ブロック単位に分割して256バイト
のブロックヘッダを確保した例を示す図である。
行プログラム領域とデ−タファイル領域に分割したメモ
リマップの例を示す図である。
メモリマップの例を示す図である。
とシ−ケンスを表す図である。
のメモリマップの例を示す図である。
のメモリマップの例を示す図である。
nA,40A…ヘッダ領域 30B,31B,38B,39B,3(n−1)B,3
nB,40B…記憶領域 32…実行プログラム領域 42…データレコードパケット 42A…データレコードヘッダ 42B…データレコード 42C…データレコードフッダ
Claims (2)
- 【請求項1】 ブロック単位で記憶内容を消去できるフ
ラッシュ型メモリが第1,第2,第3のブロックを含ん
でおり、 第1のブロックは、そのブロックの管理情報を記憶する
ヘッダ領域と、ブロック単位に分割されたデータファイ
ルを格納する記憶領域とを備えており、 第3のブロックは、実行プログラムファイルが格納され
たブロックの管理情報を記憶するヘッダ領域と、ブロッ
クごとに分割された実行プログラムファイルを格納する
記憶領域を備えており、 第2のブロックは、第3のブロックに隣接し、実行プロ
グラムファイルが、第3のブロックの実行プログラムフ
ァイルを格納する記憶領域の容量を越えた場合、第3の
ブロックに実行プログラムファイルが分割され格納され
た続きのデータを格納する記憶領域を備えていることを
特徴とするフラッシュ型メモリ。 - 【請求項2】 隣接する複数の前記第2及び第3のブロ
ックに対して実行プログラムファイルを割り当てるとと
もに、それら実行プログラムファイルが割り当てられた
ブロックの管理情報を前記第3のブロックに格納する手
段を備えたことを特徴とする請求項1記載のフラッシュ
型メモリの管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31761297A JP3503448B2 (ja) | 1997-11-04 | 1997-11-04 | フラッシュ型メモリ及びその管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31761297A JP3503448B2 (ja) | 1997-11-04 | 1997-11-04 | フラッシュ型メモリ及びその管理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11143764A JPH11143764A (ja) | 1999-05-28 |
JP3503448B2 true JP3503448B2 (ja) | 2004-03-08 |
Family
ID=18090140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31761297A Expired - Fee Related JP3503448B2 (ja) | 1997-11-04 | 1997-11-04 | フラッシュ型メモリ及びその管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3503448B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US9298472B2 (en) | 2004-01-27 | 2016-03-29 | Nec Corporation | High-speed restart method, information processing device, and program |
JP2008123473A (ja) | 2006-10-20 | 2008-05-29 | Toshiba Corp | 記憶装置及びその制御方法 |
JP5341584B2 (ja) | 2009-03-17 | 2013-11-13 | 株式会社東芝 | コントローラ、及びメモリシステム |
JP5581256B2 (ja) | 2011-03-28 | 2014-08-27 | 株式会社東芝 | メモリシステム、コントローラ、およびメモリシステムの制御方法 |
JP6219560B2 (ja) * | 2012-09-21 | 2017-10-25 | 株式会社フィックスターズ | 情報処理装置、情報処理方法、およびプログラム |
KR102050732B1 (ko) | 2012-09-28 | 2019-12-02 | 삼성전자 주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 |
JP6371090B2 (ja) * | 2014-03-26 | 2018-08-08 | トッパン・フォームズ株式会社 | 文書ファイル管理システム及び文書ファイル管理方法 |
-
1997
- 1997-11-04 JP JP31761297A patent/JP3503448B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11143764A (ja) | 1999-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100849221B1 (ko) | 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치 | |
KR100453053B1 (ko) | 플래쉬 메모리용 파일 시스템 | |
US7610434B2 (en) | File recording apparatus | |
USRE46404E1 (en) | Flash memory management method | |
US5682497A (en) | Managing file structures for a flash memory file system in a computer | |
US6571326B2 (en) | Space allocation for data in a nonvolatile memory | |
US5860082A (en) | Method and apparatus for allocating storage in a flash memory | |
US5809558A (en) | Method and data storage system for storing data in blocks without file reallocation before erasure | |
US7340581B2 (en) | Method of writing data to non-volatile memory | |
EP0544252A2 (en) | Data management system for programming-limited type semiconductor memory and IC memory card having the data management system | |
JP3503448B2 (ja) | フラッシュ型メモリ及びその管理装置 | |
JP2002163139A (ja) | データ管理装置およびそれを用いたデータ管理方法 | |
JP3555456B2 (ja) | フラッシュ型メモリの管理装置 | |
JP2614357B2 (ja) | 一括消去型e▲上2▼promの予備書込み方法 | |
JP2001101071A (ja) | フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法 | |
JPH11272537A (ja) | フラッシュ型メモリ及びその管理装置 | |
JPH1196779A (ja) | フラッシュ型メモリ,その管理方法,記憶装置,コンピュータシステム | |
JPH0764831A (ja) | データ記憶装置 | |
JPH05258585A (ja) | ファイル装置 | |
JP2009271848A (ja) | ファイルシステム及びデータ管理方法 | |
JP2009211152A (ja) | 情報処理装置、メモリシステムおよびその制御方法 | |
EP3948550A1 (en) | An apparatus, method and computer program for managing memory page updates within non-volatile memory | |
JP2009199211A (ja) | メモリ制御方法及び装置、コンピュータプログラム | |
JP2000057049A (ja) | フラッシュメモリ・ファイルシステム | |
JP2010026794A (ja) | メモリ制御装置及び方法、コンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20031201 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071219 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081219 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091219 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101219 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111219 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111219 Year of fee payment: 8 |
|
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: 20111219 Year of fee payment: 8 |
|
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: 20121219 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121219 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131219 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |