JP3555456B2 - フラッシュ型メモリの管理装置 - Google Patents
フラッシュ型メモリの管理装置 Download PDFInfo
- Publication number
- JP3555456B2 JP3555456B2 JP20335798A JP20335798A JP3555456B2 JP 3555456 B2 JP3555456 B2 JP 3555456B2 JP 20335798 A JP20335798 A JP 20335798A JP 20335798 A JP20335798 A JP 20335798A JP 3555456 B2 JP3555456 B2 JP 3555456B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- area
- program
- blocks
- header
- 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 - Lifetime
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明は、フラッシュ型メモリの管理装置にかかり、更に具体的には、フラッシュ型メモリの管理の効率化に関するものである。
【0002】
【従来の技術】
一般にフラッシュタイプのフローティングゲートトランジスタを含む電気的に消去可能なプログラマブル読出専用メモリ(EEPROM)は、市場で容易に入手することができる。これらのいわゆるフラッシュメモリは、機能・性能面でEPROMメモリと類似した不揮発メモリであり、メモリ内を分割するブロックを消去する回路内プログラマブル動作を可能にするという機能を更に有する。フラッシュメモリでは、以前に書き込まれたメモリの領域を前もって消去することで、その書き換えが行われる。
【0003】
典型的なコンピュータシステムでは、オペレーティングシステム(以下、単に「OS」という)のプログラムがそのシステムのデータ記憶装置のデータ管理を担う。OSプログラムとの互換性を達成するために必要かつ十分であるデータ記憶装置のアトリビュート(属性)は、データ記憶装置のいかなる位置からもデータを読み出すことができ、これにデータを書き込むことができることである。しかし、フラッシュメモリの場合、データが既に書き込まれている領域には、その領域のデータを消去しなければデータを書き込むことはできない。このため、フラッシュメモリは、典型的な既存のOSプログラムとは互換性がない。
【0004】
このような点に着目し、既存のOSプログラムによってフラッシュメモリを管理することを可能にするソフトウエアが先行技術において提案されている。この先行技術のプログラムでは、フラッシュメモリを「書込み1回読出し複数回」の装置として動作させるか、「書込み複数回読出し複数回」の装置として動作させている。前者は、以前に書き込まれているメモリ場所を再利用することはできない装置であり、補助記憶装置や拡張記憶装置として使用できる。後者は、以前に書き込まれているメモリ領域を再利用可能とし、その領域中にはフラッシュメモリの書換回数を少なくするような制御を持つ補助記憶装置(半導体ファイル記憶装置)がある。
【0005】
このような従来技術によれば、フラッシュメモリを使用した拡張記憶装置上では書換回数を少なくなるような制御構造を持たずに実行プログラムを動作させている。つまり、フラッシュメモリに対して新たにデータの書換えを行うときは、全ブロックを一括して消去し、その後、データを記憶させる必要がある。また、マルチタスク,マルチスレッド,マルチプロセスに代表される並列実行プログラムやデータの共有あるいは占有という管理を行う場合において、一般のMMU(メモリ管理ユニット)を駆使してフラッシュメモリをブロック(ページ)毎に管理する方式では、書換回数の管理と書換回数の低減を図ることは困難である。
【0006】
フラッシュメモリを使用した拡張記憶装置上でプログラムの実行を可能とする装置にはないものの、フラッシュメモリの書換回数を少なくするような制御構造を持つ装置として補助記憶装置(半導体ファイル記憶装置)がある。これは、補助記憶装置において書換回数を少なくするためにその情報(書換回数テーブル)を異なるメモリ上に記憶する方式である。しかし、実行プログラムを主記憶装置にロードすることなく、フラッシュメモリ上で動作させるプログラムにおいて、単純に同一フラッシュメモリ上に記憶する方式では、ブロック間にまたがるデータを無駄なく完全に連続的な配置を可能にすることは困難である。
【0007】
これに対し、特願平9−317612号として出願されたものがある。これによれば、プログラム領域は、連続する複数のブロックに確保される。複数の連続するブロックに確保されたプログラム領域は、1つのヘッダ領域によって管理される。データファイル領域は、例え複数の連続するブロックに確保されたとしても、各ブロック毎にヘッダ領域によって管理される。これによって、ブロック消去方式のフラッシュ型メモリを使用してプログラムの実行が可能となる。
【0008】
【発明が解決しようとする課題】
しかしながら、以上のような背景技術には、次のような不都合がある。
(1)複数ブロックを保有するプログラム領域の各々をデータファイル領域に変更するためには、それぞれのブロックにおける消去回数や消去時刻などの情報が必要となる。しかし、それらの情報として、先頭ブロックのヘッダ領域に存在するもののみであり、領域変更には不十分である。
(2)また、各ブロックの実際の消去情報を、そのブロックに保存するための手段が存在しない。
(3)運用の制約上、複数個の連続するデータファイル領域を複数個のブロックを保有するプログラム領域に変更するときは、それらのブロックの消去回数や消去時刻などの情報を無視せざるを得ず、フラッシュメモリの寿命を延命させるような効果的な管理を行うことができない。
(4)複数ブロックを保有する1つのプログラム領域を複数個のプログラム領域に分割する際にも、それらのブロックの消去回数などの管理情報を格納する手段がない。
【0009】
本発明は、以上の点に着目したもので、その目的は、プログラム領域とデータファイル領域の割り当て変更を適宜に行って、使用目的に柔軟に対応するとともに、各ブロックの書き込みや消去の均一化を図ることである。
【0010】
他の目的は、補助記憶装置としてデータファイルを格納する際には、アプリケーションプログラムからのアクセスを容易にするとともに、排他的なデータアクセスを行う際には、高速化を実現するための整合性を保つことができるデータ構造を実現することである。
【0011】
更に他の目的は、マルチプロセッシング,マルチスレッド,マルチタスクといった高度な拡張記憶装置上のプログラムの実行環境においても、安全にデータファイルの管理を可能とすることである。
【0012】
【課題を解決するための手段】
前記目的を達成するために、本発明は、記憶内容の消去単位を1つのブロックとし、プログラムの格納されたブロックと、データの格納されたブロックとが混在しているフラッシュ型メモリを制御する管理装置であって、データファイル領域としてデータの格納された各ブロックにはそれぞれ該ブロックの管理情報を記憶するヘッダ領域が設けられており、連続する複数のブロックを使用してプログラムを格納した状態のプログラム領域では、前記連続する複数のブロックのいずれかに管理情報を記憶するヘッダ領域が設けられ、このヘッダ領域に前記連続する複数のブロックの管理情報が集積されて格納されている状態において、前記連続する複数のブロックを使用したプログラム領域内の領域割り当て変更を、前記集積されて格納されている管理情報に基づき行う際に、再度プログラム領域として割り当てられたブロックにおいては、各ブロック毎にヘッダ領域を設け、これらのヘッダ領域に該ブロックの管理情報を各々格納すると共に、新たにデータファイル領域として割り当てるブロックがある場合には、その新たにデータファイル領域として割り当てられたブロックにおいては、各ブロック毎にヘッダ領域を設け、これらのヘッダ領域に該ブロックの管理情報を各々格納することを特徴とする。
【0013】
あるいは、記憶内容の消去単位を1つのブロックとし、プログラムの格納されたブロックと、データの格納されたブロックとが混在しているフラッシュ型メモリを制御する管理装置であって、
データファイル領域としてデータの格納された各ブロックにはそれぞれ該ブロックの管理情報を記憶するヘッダ領域が設けられており、連続する複数のブロックを使用してプログラムを格納した状態のプログラム領域では、前記連続する複数のブロックのいずれかに管理情報を記憶するヘッダ領域が設けられ、このヘッダ領域に前記連続する複数のブロックの管理情報が集積されて格納されている状態において、前記連続する複数のブロックを使用したプログラム領域内の領域割り当て変更を、前記集積されて格納されている管理情報に基づき行う際に、
再度プログラム領域として細分化した複数のプログラム領域を割り当て、その細分化した各プログラム領域においては、前記細分化した各プログラム領域毎にヘッダ領域を設け、前記細分化した各プログラム領域に含まれるブロックの管理情報を、それぞれ該当する各プログラム領域のヘッダ領域に格納すると共に、新たにデータファイル領域として割り当てるブロックがある場合には、その新たにデータファイル領域として割り当てられたブロックにおいては、各ブロック毎にヘッダ領域を設け、これらのヘッダ領域に該ブロックの管理情報を各々格納することを特徴とする。
【0019】
【発明の実施の形態】
以下、本発明の実施の形態について詳細に説明する。本形態は、例えば図1に示すように、プロセッサ10,フラッシュメモリ12およびその制御装置14を含む拡張もしくは補助の記憶装置15,RAM(主記憶装置)16を含むコンピュータシステムに適用される。そして、フラッシュメモリ12の書換寿命を延命させるプログラムやデータの格納方法,更には管理・制御のための装置を得ようとするものである。
【0020】
まず、プログラム領域あるいはデータファイル領域を管理するため、フラッシュメモリ12の管理単位をその最小消去(イレース)単位である1ブロック(物理ブロック)とする。この最小単位である物理ブロック(以下単に「ブロック」という)内には、プログラム領域もしくはデータファイル領域と、そのブロックを管理する情報を持つヘッダ領域とが存在する。なお、同一ブロックの記憶領域には、プログラム領域とデータファイル領域の混在は認めないことにする。また、プログラム領域については、複数のブロックが連続するときはそれらを一括して管理し、そのブロック群を管理する情報を持つヘッダ領域を設ける。
【0021】
図2には、本形態におけるソフトウエアの基本構造の一例が示されている。同図のように、OS20やアプリケーションソフト22とのソケットインターフェースとして、いわゆるドライバ層24に相当する部分にフラッシュ管理マネージャ26を設ける。このフラッシュ管理マネージャ26は、本形態のシステム用ドライバと考えることができる。このフラッシュ管理マネージャ26によって、ブロック情報の管理やデータのリード/ライトの制御が行なわれる。
【0022】
このようなシステムにおける補助記憶装置,拡張記憶装置,あるいはそれらの混在装置上で、特願平9−317612号として開示されたヘッダ構造と管理手法が適用される。図3[A]は、連続する8個のブロック0〜7をプログラム領域として割り当て、それ以外のブロック8〜nをデータファイル領域として割り当てた例である。上述したように、複数の連続するブロックに確保されたプログラム領域は、1つのヘッダ領域によって管理される。一方、データファイル領域は、例え複数の連続するブロックに確保されたとしても、各ブロック毎にヘッダ領域によって管理される。従って、プログラム領域32のブロックヘッダ32Aはブロック0にのみ存在し、ブロック1〜7には存在しない。ブロック1〜7の管理情報等は、ブロック0のヘッダ領域32Aにまとめられる。一方、ブロック8〜nにはデータファイル領域38B〜3nBがそれぞれ確保されるが、各ブロックにそれぞれヘッダ領域38A〜3nAが存在し、これらによってブロック毎に管理される。
【0023】
次に、図3[B]の例は、ブロック0をデータファイル領域として割り当て、ブロック1〜Aをプログラム領域として割り当て、それ以後はデータファイル領域として割り当てた例である。図3[C]の例は、ブロック0〜n−9をデータファイル領域に、ブロックn−8〜n−3をプログラム領域に、それ以後をデータファイル領域に、それぞれ割り当てた例である。
【0024】
このように、連続して確保されたプログラム領域は一つのヘッダ領域によって管理される。そして、ブロック数の制限や固定したアドレス配置にすることはない。しかし、データファイル領域は、連続して確保されたとしても、各ブロック毎に管理される。
【0025】
本形態は、以上の背景技術を改良したもので、連続する複数ブロックを保有するプログラム領域に対するブロックヘッダ内に、それら複数ブロックの管理情報が集積して格納される。上述したように、実行プログラムに対しては連続してファイル領域が確保されるため、ブロックが連結されることになる。この連結の方法として、プログラム領域として確保された連続領域の先頭のブロックに、そのブロックヘッダと、実行プログラム用のブロックヘッダを格納する。
【0026】
具体的な例で説明すると、例えば図4[A]に示すように、プログラム領域としてブロックtから4ブロックを確保したとする(tは16進数)。この場合、従属するブロックt+1,t+2,t+3の消去回数などの管理情報を、同図[B]に示すように、先頭のブロックtのブロックヘッダに格納する。なお、従属ブロックt+1,t+2,t+3のブロックヘッダを、先頭ブロックt中ではなく、プログラム領域内にあるブロックのいずれかに割り付けてもよい。ただし、フラッシュ管理マネージャ26側(図2参照)がその旨を認識することができるような情報,例えば割り付けられたブロックの位置情報や運用規程などを明らかにする。以下の説明では、理解を容易にするため、プログラム領域の先頭ブロックに従属ブロックのブロックヘッダも割り付けられているものとする。
【0027】
図4において更に詳述すると、プログラム領域に対するブロックヘッダは、先頭ブロックtのブロックヘッダ情報と、従属ブロックt+1,t+2,t+3のブロックヘッダ情報を、それぞれ集積した形態となっている。例えば、1ブロックのみで構成される各ブロックヘッダのデータサイズをH1バイトとし、実行プログラムあるいはデータファイルが格納される領域のデータサイズをH2バイトとする。ブロック全体では、(H1+H2)バイトとなる。
【0028】
一方、前記従属ブロックのブロックヘッダを集積化した情報のサイズをH3バイトとすると、4ブロック連結したプログラム領域に対するブロックヘッダのサイズは、H1+H3バイトとなる(図4[B]参照)。従って、プログラム領域のサイズは、H2×4+H1×3−H3バイトとなる。一般的に、J個の連続するブロックで構成されるプログラム領域の場合、そのブロックヘッダのサイズはH1バイト+H3バイトとなり、その実行プログラムファイルのデータサイズはH2バイト×J+H1バイト×(J−1)−H3バイトとなる。
【0029】
次に、ブロックのヘッダ領域について説明する。ブロックヘッダに含まれる情報としては、図5に示すように、
▲1▼状態(有効/無効/遷移中/初期化完了)を示すフラグ
▲2▼プログラム領域/データファイル領域を示すマーカフラグ
▲3▼連続予約ブロックの領域数
▲4▼パーティション名
▲5▼自己のブロックの消去情報
▲6▼自己のブロックの付加情報(必要があるときに付加)
▲7▼従属ブロックのブロック番号あるいはブロック情報(固有名称)と、その消去情報及び付加情報
がある。
【0030】
これらのうち、まず▲1▼のフラグについて説明する。フラッシュ管理マネージャ26(図2参照)は、各ブロックヘッダの内容を読み、フラッシュメモリがどのように管理されているかを把握する。フラッシュメモリのメモリセル内のビットデータは、論理値の「1」→「0」への変化の処理時間は比較的短いが、「0」→「1」への変化は、一度ブロック消去又は消去をしなければならず、長時間を要する。つまり、1ビットのデータの書換えを行なうために、そのブロック内のデータを一時待避させるとともに、ブロック消去後に書き戻す必要があり、処理時間としては大きい。
【0031】
そこで、実際には、状態を示すフラグを利用してブロックの状態を管理することになる。すなわち、上述した書換えに伴うオーバーヘッドを軽減すため、ブロックヘッダ内にそのブロックが有効な状態か,それとも無効な状態か,初期化が完了した状態か,有効な状態から無効な状態への遷移状態か,といった状態をそれぞれのブロック毎に認識し、データの書込み,データの無効化,ブロックの消去,ブロックの初期化などの操作を行なう。
【0032】
次に、▲2▼のマーカフラグは、該当するブロックがデータファイル領域に割り当てられたか、それとも、プログラム領域に割り当てられたかを示すフラグである。これによって、プログラム領域に指定されたとき、▲3▼の連続予約ブロック数に実行プログラムとして後に続くブロックの数を指定する。しかし、データファイル領域に指定されているときは、連続予約ブロック数を0とする。▲4▼のパーティション名は、実行プログラムやデータファイルに割り当てた固有の名称である。
【0033】
▲5▼の自己のブロックの消去情報としては、ブロックを消去した回数を記録する。ブロック消去するときは、記録されている以前の消去回数を一時的に保持し、ブロック消去終了後、一時的に保持している以前の消去回数に1インクリメントしてデータを格納する。▲6▼の自己のブロックの付加情報としては、例えば、イレースシーケンスナンバあるいは消去時刻など、そのブロックに関連する情報がある。
【0034】
▲7▼の従属ブロックのブロック番号と消去情報及び付加情報としては、従属ブロックに関する消去回数や、イレースシーケンスナンバあるいは消去時刻などの従属ブロックに関連する情報が該当する。これら情報の集積の順番は、その情報がいずれの従属ブロックのものか認識できれば、どのような順序でもよい。また、従属ブロックの消去回数を示す情報は、最低限集積する必要がある。図示の例では、先頭ブロックtに対して、従属ブロックがt+1,t+2,……,t+nまで存在する。従って、それらの従属ブロックの各々について、ブロック番号と消去情報や付加情報が先頭ブロックtのヘッダに集積化されている。
【0035】
このように、本形態によれば、従属ブロックの消去情報が先頭ブロックのヘッダ情報に含まれている。本形態によれば、これを利用して、次のような運用が可能である。
▲1▼連続する複数個のブロックを占めるプログラム領域を、各ブロック毎のデータファイル領域に変更する。
▲2▼連続する複数個のブロックを占めるプログラム領域を分割し、細分化されたプログラム領域を作成する。
▲3▼連続する複数個のブロックを占めるプログラム領域を分割もしくは目的変更し、細分化されたプログラム領域を作成するとともに、データファイル領域に変更する。
▲4▼連続する複数個のブロックを占めるデータファイル領域を、一つのプログラム領域に変更する。
▲5▼従属するブロックの関連管理情報などが、プログラム領域の先頭ブロックのヘッダ内に収まらない場合に、拡張ヘッダ領域をブロックヘッダ領域の後に付加する。
以下、これらの運用について順に説明する。
【0036】
(1)まず、複数個のブロックで構成される一つのプログラム領域を、ブロック一個で構成されるデータファイル領域あるいはプログラム領域に変更する方法から説明する。
【0037】
例えば、図6[A]に示すように、ブロックt〜t+nの連続した一つのプログラム領域があるとする。これを、同図[B]に示すように、一つのブロックのみで構成されるプログラム領域に変更する場合を想定する。変更前のブロックヘッダは、上述した図5のようになっている。これに対し、変更後の各ブロックのブロックヘッダは、図7に示すようになる。つまり、各ブロック毎に、上述した状態を示すフラグ,マーカフラグ,連続予約ブロックの領域数,パーティション名,ブロックの消去回数,ブロックの付加情報を含むブロックヘッダが生成される。
【0038】
このような図5の状態から図7の状態への変更の手順は、まず、ブロックtのブロックヘッダ情報と、ブロックt+1〜t+nの管理情報を、RAM領域などに待避させる。そして、ブロックt〜t+nの領域をブロック消去する。ここで、1ブロック消去する毎に、必ずブロックヘッダを付加する。つまり、ブロックtのブロックを消去し、完了後にブロックヘッダを初期化する。このとき、ブロックtに対する待避させた管理情報を更新し、ブロックtのブロックヘッダに格納する。情報の更新には、例えば消去回数を1インクリメントすることなどが含まれる。
【0039】
このようにして、一つのブロックtのみで構成されるプログラム領域に変更が行われる。ブロックt+1についても、同様にブロック消去を行い、完了後にブロックヘッダを初期化し、待避させたブロックt+1の管理情報を更新してそのブロックヘッダに格納する。このような操作をブロックt+nまで繰り返し行う。なお、図6の例は、一つのブロックで構成されるプログラム領域に変更したが、一つのブロックで構成されるデータファイル領域への変更についても同様である。
【0040】
(2)次に、複数個のブロックで構成される一つのプログラム領域を、ブロックt〜t+mで構成される第1のプログラム領域と、ブロックt+m+1〜t+n個で構成される第2のプログラム領域とに、2分割する方法を説明する。
【0041】
例えば、図8[A]に示すように、ブロックt〜n+1の連続した一つのプログラム領域があるとする。これは、前記図6[A]と同様である。これを、同図[B]に示すように、2つのプログラム領域に変更する場合を想定する。変更前のブロックヘッダは、上述した図5のようになっている。これに対し、変更後の各プログラム領域のブロックヘッダは、図9及び図10にそれぞれ示すようになる。つまり、各プログラム領域毎に、上述した状態を示すフラグ,マーカフラグ,連続予約ブロックの領域数,パーティション名,ブロックの消去回数,ブロックの付加情報,従属ブロックのブロック番号と消去情報及び付加情報を含むブロックヘッダが生成される。
【0042】
すなわち、分割後の第1のプログラム領域のブロックヘッダは、図9に示すように、先頭ブロックtの情報と、従属ブロックt+1〜t+mの情報を集積化した情報を含む。分割後の第2のプログラム領域のブロックヘッダは、図10に示すように、先頭ブロックt+m+1の情報と、従属ブロックt+m+2〜t+nの情報を集積化した情報を含む。
【0043】
図5の状態から図9,図10の状態への分割変更の手順は、まず、ブロックtのブロックヘッダ情報と、ブロックt+1〜t+nの管理情報を、RAM領域などに待避させる。そして、ブロックt〜t+nまでの領域をブロック消去する。ここで、まず、図9の状態にするため、ブロックt〜t+mをブロック消去する。そして、完了後に、ブロックtにブロックヘッダを形成して初期化する。このとき、ブロックtに対する待避させた管理情報を更新し、ブロックtのブロックヘッダに格納する。その後、従属ブロックt+1〜t+mの管理情報を順に更新し、各ブロックのブロックヘッダに付加する。
【0044】
一方、更に図10の状態にするため、ブロックt+m+1〜t+nをブロック消去する。そして、完了後に、ブロックt+m+1にブロックヘッダを形成して初期化する。このとき、ブロックt+m+1に対する待避させた管理情報を更新し、ブロックt+m+1のブロックヘッダに格納する。その後、従属ブロックt+m+2〜t+nの管理情報を順に更新し、各ブロックのブロックヘッダに付加する。
【0045】
なお、以上の例は、一つのプログラム領域を二つのプログラム領域に二分割した例であるが、更に複数に分割する場合も同様である。
【0046】
(3)次に、複数個のブロックで構成される一つのプログラム領域を、
▲1▼ブロックtのみで構成されるデータファイル領域(もしくはプログラム領域),
▲2▼ブロックt+1〜t+mで構成されるプログラム領域,
▲3▼ブロックt+m+1〜t+m+o−1まではそれぞれブロック一つで構成されるデータファイル領域,
▲4▼ブロックt+m+o〜t+nで構成されるプログラム領域
に変更する方法を説明する。
【0047】
例えば、図11[A]に示すように、ブロックt〜t+nの連続した一つのプログラム領域があるとする。これは、前記図6[A]と同様である。これを、同図[B]〜[E]に示すように、多数のデータファイル領域やプログラム領域に変更する場合を想定する。前記▲1▼〜▲4▼が、同図[B]〜[E]に対応する。変更前のブロックヘッダは、上述した図5のようになっている。これに対し、分割後の各プログラム領域のブロックヘッダは、図12及び図13にそれぞれ示すようになる。
【0048】
図5の状態から図12,図13の状態への分割変更の手順は、まず、ブロックtのブロックヘッダ情報と、ブロックt+1〜t+nの管理情報を、RAM領域などに待避させる。そして、ブロックt〜t+nまでの領域をブロック消去する。ここで、まず、図12の状態にするため、ブロックtをブロック消去する。そして、完了後に、ブロックtにブロックヘッダを形成して初期化する。このとき、ブロックtに対する待避させた管理情報を更新し、ブロックtのブロックヘッダに格納する。
【0049】
次に、ブロックt+1〜t+mまでを消去し、完了後にブロックt+1にブロックヘッダを付加し初期化する。このとき、同様に、ブロックtで待避させたブロックt+1の管理情報を更新し、ブロックt+1のブロックヘッダに格納する。その後、順にブロックt+2〜t+mまでの従属ブロックの管理情報を更新し、先頭ブロックであるブロックt+1のブロックヘッダに付加する。
【0050】
更に、図13の状態にするため、前記ブロックtと同様の操作を、ブロックt+m+1〜t+m+o−1まで繰り返し行う。最後に、ブロックt+m+o〜t+nに対して、前記ブロックt+1〜t+mと同様の動作を繰り返し行う。
【0051】
なお、以上の例は、プログラム領域を2つ設けるとともに、いくつかのデータファイル領域も設けた例であるが、複数のプログラム領域と複数のデータファイル領域に分割変更する場合も同様である。なお、連結するブロックについては、その該当ブロックを連続的に消去し、完了後にその先頭ブロックのブロックヘッダに従属ブロックのヘッダ情報も集積した情報を格納することができれば、ブロックの消去の順番やブロックヘッダの初期化の順番などは、上述した方法でなくてもよい。
【0052】
(4)次に、使用頻度が高いデータファイル領域からプログラム領域に変更する方法を説明する。使用頻度の高いデータファイル領域を検出し、このデータファイル領域に移動可能なプログラム領域を移動する。
【0053】
まず、移動可能なプログラム領域のサイズ(ブロック数)分の連続するデータファイル領域を決定する。この決定方法として、
▲1▼単純に消去回数の多いブロックを検出し、そのブロックを含むように前後のブロックを割り当てる方法,
▲2▼必要とする分の連続するブロックでの平均の消去回数が最大のところに割り当てる方法,
▲3▼前記▲1▼及び▲2▼を組み合わせて最適化を図る方法,
▲4▼平均化ではなく、標準偏差などによって最適ブロックを選定する方法,
がある。
【0054】
平均化の例を取って説明すると、例えば連続するブロックを3ブロック選定する場合を想定する。図14に示すように、ブロックxからブロックx+nまでのブロックがデータファイル領域として存在すると仮定する。各ブロックの消去回数Y0〜Ynに対し、連続する3つのブロックの消去回数の平均値Z0,Z1,…,Zn2を求める。例えば、平均値Z0は、ブロックx〜x+2の消去回数Y0〜Y2から、Z0=(Y0+Y1+Y2)/3で求められる。他の平均値についても同様である。これら平均値のうちから最大値を検出して、それに該当する連続する3つのブロックをプログラム領域として割り当てるようにすればよい。
【0055】
連続する複数個のプログラム領域に割り当てるデータファイル領域のブロックの候補が決定すれば、それぞれの該当するブロックのブロックヘッダの管理情報をRAM領域などに待避する。そして、候補の各データファイル領域について、それぞれブロック消去を行う。完了後、先頭のブロックにのみブロックヘッダを生成して初期化し、その先頭ブロックに対応する待避した管理情報を更新する。管理情報の更新としては、少なくとも消去回数を1インクリメントする。更に、従属ブロックの管理情報も更新し、先頭ブロックのヘッダ情報の後に従属するそれぞれのブロックのヘッダ管理情報を更新して格納する。このような結合の方法は、上述した分割変更と逆の操作を行えばよい。また、割り当てられるブロックの候補が決まった後における該当ブロックの消去の順番は、いずれから行ってもよい。
【0056】
(5)次に、効果的な運用として、連続する複数個のブロックで構成されるプログラム領域を、いくつかのプログラム領域に細分化する方法を説明する。これは、上述した(1),(2)及び(3)の方法を応用することで実現できる。まず、分割するプログラム領域のブロックヘッダ及びその従属するブロックヘッダの情報をRAM上などに待避させる。また、分割するプログラム領域のプログラムもRAM上に待避させる。
【0057】
そして、細分化されたブロック数をもつプログラム領域として、前記(1),(2)及び(3)の方法と同様に、データファイル領域のブロックからプログラム領域に変更する候補ブロックをそれぞれ細分化された場合毎に選択する。この選択結果をもとに、待避させたブロックヘッダの管理情報及び従属ブロックの管理付加情報をもとに、分割された新プログラム領域毎に、ブロックヘッダ従属ブロックの管理情報について更新と再構成を行い、該当するヘッダ領域へそれぞれ格納する。そして、待避させておいたプログラム領域のプログラムを、分割されたブロックの内容に対応すように分割し、それぞれのプログラムデータを該当領域に移動させればよい。
【0058】
(6)また、細分化されたブロックによってプログラム領域を構成する方法として、データファイル領域のブロックからプログラム領域に変更する候補ブロックを、それぞれ細分化された場合毎に選択する。そして、前記(4)の方法のように、データファイル領域からプログラム領域への変更を細分化した形態で行えばよい。
【0059】
選択結果をもとに、それぞれのデータファイル領域のブロックヘッダ内にある管理情報と対応するデータファイル領域内のデータをRAM上に各々待避させる。そして、そのブロック領域を細分化できるような形態で、それぞれ分割したプログラム領域に割り当て、対応するブロックヘッダと従属ブロックの管理情報を更新して再構成を行う。更に、分割するプログラム領域に対応するように、プログラムをコピーしていけばよい。そして、前記(4)の方法と同様に、細分化される前のプログラム領域が保有しているブロックを消去するとともに、ブロックヘッダの初期化を行う。その後、待避させておいたデータのブロック管理情報とそれに対するデータなどを書換回数の少ないデータファイル領域の候補ブロックにそれぞれ書き戻すことで、操作は完了する。
【0060】
フラッシュ管理マネージャ26(図2参照)は、ユーザの操作による実行開始の指示か、あるいは自己の判断で自動的に最適化タイミングを検出し、上述した分割や変更の操作を実行する。本形態は、少なくとも1個のフラッシュメモリ上でROM実行可能なプログラムとデータファイルとが混在できる装置であり、その装置上でプログラム領域からデータファイル領域への変更、あるいはデータファイル領域からプログラム領域へ変更することが可能となる。このため、フラッシュメモリ上における各ブロックの消去回数の均一化を図ることができ、更にはフラッシュメモリの長寿命化も可能となる。以下、主要な実施例について説明する。
【0061】
(1)実施例1……この実施例は、従属ブロックの管理付加情報として、ブロック番号を備えた例である。本例では、図17の構造を持つブロックヘッダとプログラム領域からデータファイル領域への移動方法を説明する。
【0062】
図15,図16には、フラッシュメモリに対するブロックヘッダなどの格納例が示されている。なお、これらの図中、図15[A]は図16[A]に連続し、図15[B]は図16[B]に連続する。これらの図において、[A]は、64Kバイトを消去ブロック単位とする2M×8ビットのフラッシュメモリで、ブロック数が1F個(16進表示)あるシステムである。各ブロックに「0」から「1F」と順に番号をつける。各ブロックの先頭には、[B]に示すように、各ブロックの管理情報であるヘッダ領域として256バイトが割り当て可能となっている。もちろん、データファイル領域の場合には該当するブロック内に必ずブロックヘッダを付随させるが、プログラム領域の場合はその限りではない。
【0063】
そして、ブロック0〜7をプログラム領域(1)に割り当て、ブロック9〜Bをプログラム領域(2)に割り当てる。他のブロックはデータファイル領域に割り当てる。それらプログラム領域の先頭ブロックのブロックヘッダには、例えば図17に示す情報を付加する。順に説明すると、まず1バイト目には、有効/遷移中/無効,初期化完了状態,予約のフラグがある。これらのうち、有効/遷移中/無効のフラグは、このブロック領域が有効状態か,それとも有効から無効になる遷移中(過渡期)の状態か,完全に無効になった状態かを示す。初期化完了状態のフラグは、ブロックのイレース後にブロックヘッダの初期化(フォーマット)が完了したことを指し示す。予約のフラグは、システムを拡張するときに使用するための予備フラグである。
【0064】
次に、2バイト目には、プログラム/データ,連続予約ブロック領域数のフラグがある。これらのうち、プログラム/データのマーカフラグは、プログラム,データファイルのいずれがそのブロックに割り当てられたかを決定するフラグである。連続予約ブロック領域数のフラグは、プログラム領域に指定した残りのブロック数が16進数で表記されている。
【0065】
次に、3〜5バイト目は、そのブロックの消去回数を16進で表記している。3バイト目がその回数の下位の桁、4バイト目がその回数の中位の桁、5バイト目にはその回数の上位の桁として、それぞれデータを格納する。6バイト目は上述したイレースシーケンスナンバで、ブロックの消去回数が他のブロックと同じときに、どの順番でブロックの初期化がなされたかを記録するものである。7バイト目から12hバイト目までは、該当するブロックの領域名などのパーティション名を記録する。実行プログラムファイルの場合、パーティション名やディレクトリ名などに利用すると、システム運用が容易になる。
【0066】
更に、本実施例では、プログラム領域として使用した場合、ブロックヘッダを4Kバイトまで拡張し、13h〜Bh+4nバイトに従属ブロックの付加情報を格納する。図示の例では、13h〜16hに、ブロックt+1のブロック番号と、消去回数の下位,中位,上位とがそれぞれ格納されている。以下、同様である。
【0067】
図1に示した装置を使用していくと、消去回数はプログラム領域のブロックよりもデータファイル領域のブロックの方が多くなる。そこで、図15[B]のブロック9〜Bまでの連続する3ブロックで構成されているプログラム領域(2)をデータファイル領域へ再割り当てする。フラッシュ管理マネージャ26は、次のような操作を行う。再割り当てを行う候補ブロックの選定方法として、平均消去回数の多いものを優先させることにする。フラッシュ管理マネージャ26は、データファイル領域に割り当てられているブロック8,C〜1Fまでのブロックの中から、連続する3ブロックの間で平均消去回数が最も大きいものを選択する。
【0068】
ブロック8の近辺では、連続するブロックの候補がないため、適用から外れる。次に、ブロックC,D,Eの平均消去回数、ブロックD,E,Fの平均消去回数、ブロックE,F,10の平均消去回数、……、ブロック1D,1E,1Fの平均消去回数をそれぞれ計算する。この結果、仮にブロック1D,1E,1Fの組み合わせが最大の平均消去回数だったとすると、それらのブロックが再割り当てを行うためのブロックの候補となる。
【0069】
フラッシュ管理マネージャ26は、ブロック1D,1E,1Fにおけるそれぞれのブロックヘッダの情報をRAM上に待避させる。次に、ブロック1Dのブロックヘッダが有効状態のときは、データファイル領域のデータをそれぞれRAM上に待避させる。しかし、そのブロックが無効であれば、データファイル領域のデータをRAM上に待避させる必要はない。また、そのブロックが遷移中のときは、移動操作を中断する。この操作を、ブロック1E,1Fにも同様に行う。そして、ブロック1D,1E,1Fをそれぞれ消去する。
【0070】
ブロック消去完了後、ブロック1D,1E,1Fをプログラム領域として使用するため、ブロックヘッダを初期化する。このとき、先頭ブロック1Dにおけるブロックヘッダの管理情報において、初期化完了フラグをONにし、有効/無効/遷移中の状態フラグでは、遷移中のフラグをたてることにより、ブロック1D,1E,1Fのプログラム領域はコピー中であることを宣言する。また、プログラム/データのマーカフラグを、プログラム領域であることを示すためにONにし、連続予約ブロック領域数を2(0b0000010)にする。更に、前記RAM上に待避させたブロック1Dの消去回数の情報を更新するとともに、イレースシーケンスナンバ情報を再構築する。なお、パーティション名は、移動元であるブロック9のブロックヘッダ情報の中にあるパーティション名と同等にする。
【0071】
次に、従属するブロック1E,1Fのブロック番号と、前記RAM上に待避させたブロック1E,1Fの消去回数を1インクリメントし、その値を格納する。そして、移動元のプログラム領域(2)(メモリ空間0901000〜0BFFFFF)のデータを、移動先のプログラム領域(2)(メモリ空間0D01000〜1FFFFFF)にコピーする。コピー完了後、ブロック9にあるブロックヘッダの拡張ヘッダ領域にある管理情報をRAM上に待避する。そして、ブロック9のブロックヘッダ内にある有効/遷移中/無効フラグを無効フラグONにし、有効から無効状態に遷移する。
【0072】
次に、ブロック9の中にあるブロックヘッダ情報及びその拡張ヘッダ(ブロック9,A,Bの各管理情報やブロック情報)をRAM上に待避する。そして、ブロック9,A,Bをそれぞれ消去する。それぞれのブロックの消去完了後、各ブロックをデータファイル領域として使用するために、各ブロックヘッダを初期化する。すなわち、ブロックヘッダ内の初期化完了フラグをONにし、プログラム/データのマーカフラグをデータ状態にし、連続予約ブロック数に0を格納する。更に、待避しているブロック9における管理情報の消去回数の情報を更新し、イレースシーケンスナンバを再構築する。これをブロックA,Bにも適用する。
【0073】
ここで、データファイル領域から退避したデータを戻す方法は、次のようになる。データファイル領域として割り当てられているブロックの中から、消去回数がもっとも少ないものに、待避したブロック1Dのデータファイル領域を割り当てる。ここではその割り当てるブロックの候補として、ブロックBが選択されたとすると、まず有効/遷移中/無効フラグを有効状態にする。ブロックBのブロックヘッダ情報として、先ほど待避させたブロック1Dに対応するファイル名を格納する。そして、待避させたブロック1Dのデータファイル領域のデータをブロックBのデータファイル領域に格納し、復元する。このように、割り当てるブロックの候補を選択し、ブロック1E,1Fのデータファイル領域も復元する。ただし、ブロック1D,1E,1Fのデータファイル領域が無効となっている場合は、そのデータの復元操作を行う必要はない。
【0074】
以上の説明は、連続する3ブロックからなるプログラム領域のプログラムを、消去回数の多いデータファイル領域のブロックに移動する方法であるが、このような手法は、複数ブロックを持つプログラム領域の場合において一般的に適用することができる。
【0075】
(2)実施例2……この例は、従属ブロックの管理付加情報として、ブロックのイレースシーケンスナンバを備えた例である。本例では、図18の構造を持つブロックヘッダとデータファイル領域からプログラム領域への移動方法を説明する。
【0076】
前記実施例と同様に、ブロック1D,1E,1Fの組み合わせが最大の平均消去回数であったとする。本例では、まず、ブロック9上にあるブロックヘッダと拡張ブロックヘッダの情報(ブロック9におけるブロックヘッダの管理情報と、従属ブロックA,Bに関するそれぞれのブロックヘッダの情報)をRAM上に待避する。そして、ブロック9,A,B上のプログラム領域におけるプログラム(メモリ空間0901000〜0BFFFFF)をRAM上に待避する。
【0077】
次に、ブロック9のブロック消去を行い、完了後、データファイル領域として使用するために、ブロックヘッダの初期化を行う。すなわち、ブロックヘッダ内の初期化完了フラグをONにし、プログラム/データのマーカフラグをデータ側とし、連続予約ブロック数に0を格納する。そして、待避しているブロック9における管理情報の消去回数の情報を更新し、イレースシーケンスナンバを再構築する。ブロックA,Bについても同様である。
【0078】
ブロック1Dにおけるデータファイル領域のデータの移動を説明すると、ブロック1Dのブロックヘッダ内にある有効/無効/遷移中の状態フラグを遷移中状態とすることにより、ブロック1Dのプログラム領域のデータを移動することを宣言する。そして、ブロック9のブロックヘッダ内にある有効/無効/遷移中の状態フラグを有効状態にする。更に、ブロック1Dのデータファイル領域のデータ(メモリ空間1D00100〜1DFFFFF)をブロック9のデータファイル領域のデータ(メモリ空間0900100〜09FFFFF)にコピーする。そして、ブロック1Dのブロックヘッダ内にある有効/無効/遷移中の状態フラグを無効状態にする。同様の操作を、ブロック1EからブロックAに、ブロック1FからブロックBに対して行い、データファイル領域のデータをそれぞれコピーする。
【0079】
これにより、ブロック1D,1E,1Fは無効状態となる。このため、フラッシュ管理マネージャ26は、それらのブロックをプログラムファイル領域として確保できるように、ブロック消去及び初期化を行う。ブロック消去完了後、ブロック1D,1E,1Fをプログラム領域として利用するため、ブロックヘッダを初期化する。このとき、先頭ブロック1Dにおけるブロックヘッダの管理情報において、初期化完了フラグをONにし、有効/無効/遷移中の状態フラグを有効状態にする。また、プログラム/データのマーカフラグをONにするとともに、連続予約ブロック領域数を2(0b0000010)にする。
【0080】
更に、前記RAM上に待避させたブロック1Dの消去回数の情報を更新し、イレースシーケンスナンバの情報を再構築する。そして、パーティション名にを、待避させた情報,すなわちブロック9のブロックヘッダ情報中にあったパーティション名と同等にする。また、従属ブロック1E,1Fのブロック番号とRAM上に待避させた従属ブロック1E,1Fの消去回数を1インクリメントし、その値を格納するとともに、従属ブロック1E,1Fのイレースシーケンスナンバの情報を再構築する。その後、先ほど待避させたプログラム領域(2)(メモリ空間0901000〜0BFFFFFをRAM上に待避)のデータを、ブロック1D,1E,1Fのプログラム領域(2)(メモリ空間0D01000〜1FFFFFF)へ移動することにより、復元が行われる。
【0081】
以上の例は、連続する3ブロックからなるプログラム領域のプログラムを、消去回数の多いデータファイル領域のブロックに移動する場合であるが、複数ブロックを持つプログラム領域の場合に、一般的に適用することができる。
【0082】
(3)実施例3……図19及び図20は、付加情報として初期化された時刻情報を備えたブロックヘッダの例である。本例では、図19,図20の構造を持つブロックヘッダとプログラム領域からデータファイル領域への移動を説明する。なお、図20は図19に連続する図である。これの例では、前記実施例(1)のブロック番号の代わりに、そのブロックの初期化時刻が含まれており、プログラム領域における従属ブロックの管理情報の中に付加情報として初期化時刻が格納されている。運用方法としては、前記実施例(1)に示した操作をほぼ適用できる。ただし、初期化時刻の情報は,ブロックヘッダ初期化時点で付加される情報であり、従属ブロックヘッダの情報を更新するときに格納される。
【0083】
(4)実施例4……前記実施例3の運用方法として、実施例(1)の代わりに実施例(2)を適用することも可能である。この例は、図19,図20の構造を持つブロックヘッダとデータファイル領域からプログラム領域への移動方法の例である。この場合は、実施例(2)のイレースシーケンスナンバの情報の代わりに、そのブロックの初期化時刻の情報を備えたことになる。これを付加情報とすることにより、実施例(2)をほとんどそのまま適用できる。
【0084】
(5)実施例5……連続する複数個のブロックからなるプログラム領域をいくつかのプログラム領域に細分化する方法、あるいは、そのプログラム領域をいくつかのプログラム領域とデータファイル領域とに分割細分化する方法は、前述の実施例(1)〜(4)を応用すれば実現できる。例えば、データの移動先の候補ブロックを選択し、その該当するブロックヘッダ(プログラム領域の場合は従属ブロックヘッダも含む)の情報をRAM上などに待避する。また、データあるいはプログラムの内容をRAM上に待避する。この後、細分化や分割化したブロック構成を実現するために、該当ブロックのブロック消去及びブロックヘッダの初期化を行う。このとき、待避したブロックヘッダや従属ブロックヘッダの情報を元に、情報の更新や再構成を行う。その後、プログラムやデータの内容をそれぞれ対応させるようにする。
【0085】
この発明は数多くの実施形態が存在し、以上の開示に基づいて多様に改変することが可能である。例えば次のようなものが含まれる。
【0086】
(1)上述した実施例の他に、図18の構造を持つブロックヘッダとプログラム領域からデータファイル領域への移動,図17の構造を持つブロックヘッダとデータファイル領域からプログラム領域への移動なども可能である。
【0087】
(2)複数個の連続するブロックの再割り当てを行う対象候補ブロックの選定方法として、上述した方法のほかに、消去回数の最大値を探索し、その対象となる前後ブロックにおける平均値の最大値をもつブロックを候補として選択するようにしてもよい。例えば、候補ブロックを3ブロック選定する場合、消去回数の最大値を持つものがブロックtであるとすると、ブロックt−2,t−1,tの平均値と、ブロックt−1,t,t−1の平均値と、ブロックt,t+1,t+2の平均値とをそれぞれ求め、それらの中から最大の平均値をもつ3ブロックを候補とする。
【0088】
(3)複数個の連続するブロックの再割り当てを行う際の対象候補ブロックの選定方法として、消去回数の値を標準偏差などの統計的手法を利用するようにしてもよい。
【0089】
(4)前記形態はフラッシュメモリに本発明を適用したものであるが、他の類似するメモリがフラッシュメモリと同じ書込み,読出し機能を備えており、かつ、書込前ブロック消去特性を有するメモリであれば、同様に適用可能である。
【0090】
(5)フラッシュメモリのイレース単位である物理ブロックは、バイト単位やワード単位の他、どのようなデータ単位であっても、同様に適用可能である。
【0091】
【発明の効果】
以上説明したように、本発明によれば、次のような効果がある。
【0092】
(1)プログラム領域の従属ブロックの管理情報を持つこととしたので、領域変更を行う際に、該当するブロックの管理情報を正しく反映させることができ、フラッシュ型メモリにおける各ブロックの消去回数を管理できる。また、プログラム領域とデータファイル領域の割り当て変更を適宜に行って、使用目的に柔軟に対応するとともに、各ブロックの書き込みや消去の均一化を図ることができ、各ブロックの消去回数の平準化や長寿命化に極めて有効である。
【0093】
(2)プログラム領域の先頭ブロックのヘッダ領域あるいはそれに続くブロックの拡張ヘッダ領域に管理情報を集積化したので、ブロックの管理情報に少ないオーバヘッドでアクセスでき、更にはプログラム領域の先頭を常に固定的に特定することが可能になる。
【0094】
(3)マルチプロセッシング,マルチスレッド,マルチタスクといった高度な拡張記憶装置上のプログラムの実行環境においても、安全にデータファイルの管理を行うことができる。
【0095】
(4)フラッシュ型メモリのブロック消去回数を平準化させ、フラッシュ型メモリの寿命を長くすることができるだけでなく、コピー元のデータファイル領域のデータをマルチタスク、マルチスレッドという環境の中で、別プログラムがその中のデータを参照しながらコピー先にデータをコピーすることが可能となる。この結果、システムの効果的な運用と、従来よりも数倍以上の実用的長寿命を得ることができる。
【図面の簡単な説明】
【図1】この発明の一形態を利用したシステムの基本構成を示す図である。
【図2】前記形態におけるソフトウェアの構造を示す図である。
【図3】プログラム領域とデ−タファイル領域を物理ブロックに割り当てた例を示す図である。
【図4】プログラム領域として確保された複数のブロックの一元管理の様子を示す図である。
【図5】前記図4におけるブロックヘッダの管理情報を示す図である。
【図6】一つのプログラム領域を、ブロック毎のプログラム領域に分割する場合のマッピング例を示す図である。
【図7】前記図6におけるブロックヘッダの管理情報を示す図である。
【図8】一つのプログラム領域を、二つのプログラム領域に分割する場合のマッピング例を示す図である。
【図9】前記図8におけるブロックヘッダの管理情報を示す図である。
【図10】前記図8におけるブロックヘッダの管理情報を示す図である。
【図11】一つのプログラム領域を、二つのプログラム領域と多数のデータファイル領域に分割する場合のマッピング例を示す図である。
【図12】前記図11におけるブロックヘッダの管理情報を示す図である。
【図13】前記図11におけるブロックヘッダの管理情報を示す図である。
【図14】データファイル領域からプログラム領域に変更するための候補ブロックを選定する手法を示す図である。
【図15】ブロック構成の一例と、プログラム領域及びデータファイル領域のマッピング例を示す図である。
【図16】ブロック構成の一例と、プログラム領域及びデータファイル領域のマッピング例を示す図である。
【図17】本発明の実施例における管理情報の態様を示す図である。
【図18】本発明の実施例における管理情報の態様を示す図である。
【図19】本発明の実施例における管理情報の態様を示す図である。
【図20】本発明の実施例における管理情報の態様を示す図である。
【符号の説明】
10…プロセッサ
12…フラッシュメモリ
14…フラッシュメモリ制御装置
16…RAM
20…オペレーティングシステム
22…アプリケーションソフト
24…ドライバ層
26…フラッシュ管理マネージャ
Claims (2)
- 記憶内容の消去単位を1つのブロックとし、プログラムの格納されたブロックと、データの格納されたブロックとが混在しているフラッシュ型メモリを制御する管理装置であって、
データファイル領域としてデータの格納された各ブロックにはそれぞれ該ブロックの管理情報を記憶するヘッダ領域が設けられており、連続する複数のブロックを使用してプログラムを格納した状態のプログラム領域では、前記連続する複数のブロックのいずれかに管理情報を記憶するヘッダ領域が設けられ、このヘッダ領域に前記連続する複数のブロックの管理情報が集積されて格納されている状態において、前記連続する複数のブロックを使用したプログラム領域内の領域割り当て変更を、前記集積されて格納されている管理情報に基づき行う際に、
再度プログラム領域として割り当てられたブロックにおいては、各ブロック毎にヘッダ領域を設け、これらのヘッダ領域に該ブロックの管理情報を各々格納すると共に、新たにデータファイル領域として割り当てるブロックがある場合には、その新たにデータファイル領域として割り当てられたブロックにおいては、各ブロック毎にヘッダ領域を設け、これらのヘッダ領域に該ブロックの管理情報を各々格納することを特徴とするフラッシュ型メモリの管理装置。 - 記憶内容の消去単位を1つのブロックとし、プログラムの格納されたブロックと、データの格納されたブロックとが混在しているフラッシュ型メモリを制御する管理装置であって、
データファイル領域としてデータの格納された各ブロックにはそれぞれ該ブロックの管理情報を記憶するヘッダ領域が設けられており、連続する複数のブロックを使用してプログラムを格納した状態のプログラム領域では、前記連続する複数のブロックのいずれかに管理情報を記憶するヘッダ領域が設けられ、このヘッダ領域に前記連続する複数のブロックの管理情報が集積されて格納されている状態において、前記連続する複数のブロックを使用したプログラム領域内の領域割り当て変更を、前記集積されて格納されている管理情報に基づき行う際に、
再度プログラム領域として細分化した複数のプログラム領域を割り当て、その細分化した各プログラム領域においては、前記細分化した各プログラム領域毎にヘッダ領域を設け、前記細分化した各プログラム領域に含まれるブロックの管理情報を、それぞれ該当する各プログラム領域のヘッダ領域に格納すると共に、新たにデータファイル領域として割り当てるブロックがある場合には、その新たにデータファイル領域として割り当てられたブロックにおいては、各ブロック毎にヘッダ領域を設け、これらのヘッダ領域に該ブロックの管理情報を各々格納することを特徴とするフラッシュ型メモリの管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20335798A JP3555456B2 (ja) | 1998-07-17 | 1998-07-17 | フラッシュ型メモリの管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20335798A JP3555456B2 (ja) | 1998-07-17 | 1998-07-17 | フラッシュ型メモリの管理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000035919A JP2000035919A (ja) | 2000-02-02 |
JP3555456B2 true JP3555456B2 (ja) | 2004-08-18 |
Family
ID=16472701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20335798A Expired - Lifetime JP3555456B2 (ja) | 1998-07-17 | 1998-07-17 | フラッシュ型メモリの管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3555456B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005071522A1 (ja) * | 2004-01-27 | 2005-08-04 | Nec Corporation | 高速再起動方法および情報処理装置ならびにプログラム |
KR100791325B1 (ko) * | 2006-10-27 | 2008-01-03 | 삼성전자주식회사 | 비휘발성 메모리를 관리하는 장치 및 방법 |
JP2008225576A (ja) * | 2007-03-08 | 2008-09-25 | Ricoh Co Ltd | Nand型フラッシュメモリの制御装置 |
JP4710918B2 (ja) * | 2008-02-20 | 2011-06-29 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2011175377A (ja) * | 2010-02-23 | 2011-09-08 | Renesas Electronics Corp | フラッシュメモリ制御装置及び方法 |
JP5976729B2 (ja) | 2014-07-22 | 2016-08-24 | 京セラドキュメントソリューションズ株式会社 | 電子機器 |
JP6448571B2 (ja) | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
-
1998
- 1998-07-17 JP JP20335798A patent/JP3555456B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2000035919A (ja) | 2000-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100849221B1 (ko) | 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치 | |
US9489301B2 (en) | Memory systems | |
KR100453053B1 (ko) | 플래쉬 메모리용 파일 시스템 | |
KR100495722B1 (ko) | 개선된 플래시 파일 시스템 | |
JP4695801B2 (ja) | 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置 | |
US7529882B2 (en) | Dynamic volume management for flash memories | |
EP1729304B1 (en) | Space management for managing high capacity nonvolatile memory | |
JP2007280428A (ja) | メモリ管理 | |
JP2003085037A (ja) | メモリ管理方法 | |
JPH11126488A (ja) | フラッシュメモリを複数使用した外部記憶装置のデータ記憶制御方法及び装置 | |
JP2008242944A (ja) | 統合メモリ管理装置及び方法 | |
JP3555456B2 (ja) | フラッシュ型メモリの管理装置 | |
KR20020092261A (ko) | 멀티-플레인 구조의 플래시 메모리 관리 방법 | |
JP3503448B2 (ja) | フラッシュ型メモリ及びその管理装置 | |
JPH113287A (ja) | 記憶装置およびそれに用いられる記憶領域管理方法 | |
JP2001101071A (ja) | フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法 | |
JP3552490B2 (ja) | フラッシュ型メモリを備えた記憶装置,フラッシュ型メモリの管理方法 | |
JP4419415B2 (ja) | 記録方式 | |
JPH11272537A (ja) | フラッシュ型メモリ及びその管理装置 | |
JPH10289144A (ja) | メモリの制御方法 | |
JP3904182B2 (ja) | データ管理システムおよびそれを用いたデータ管理方法 | |
JP4443705B2 (ja) | データファイリングシステム及びデータファイリング方法 | |
JP4474928B2 (ja) | ファイル記録方法 | |
JP2004038237A (ja) | 情報処理装置およびプログラム | |
JP2004038236A (ja) | 情報処理装置およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040324 |
|
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: 20040420 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040503 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090521 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090521 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100521 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110521 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120521 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120521 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: 20120521 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: 20120521 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130521 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term |