JP2000035919A - フラッシュ型メモリ、その管理装置、その管理方法 - Google Patents

フラッシュ型メモリ、その管理装置、その管理方法

Info

Publication number
JP2000035919A
JP2000035919A JP20335798A JP20335798A JP2000035919A JP 2000035919 A JP2000035919 A JP 2000035919A JP 20335798 A JP20335798 A JP 20335798A JP 20335798 A JP20335798 A JP 20335798A JP 2000035919 A JP2000035919 A JP 2000035919A
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.)
Granted
Application number
JP20335798A
Other languages
English (en)
Other versions
JP3555456B2 (ja
Inventor
Kazuya Tanaka
和也 田中
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.)
Victor Company of Japan Ltd
Original Assignee
Victor Company of Japan Ltd
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 Victor Company of Japan Ltd filed Critical Victor Company of Japan Ltd
Priority to JP20335798A priority Critical patent/JP3555456B2/ja
Publication of JP2000035919A publication Critical patent/JP2000035919A/ja
Application granted granted Critical
Publication of JP3555456B2 publication Critical patent/JP3555456B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 【課題】 プログラム領域とデータファイル領域の割り
当て変更を適宜に行って、使用目的に柔軟に対応し、各
ブロックの書き込みや消去の均一化を図る。 【解決手段】 [A]に示すように、プログラム領域と
してブロックtから4ブロックを確保したとする。この
場合、従属ブロックt+1,t+2,t+3の消去回数
などの管理情報を、[B]に示すように、先頭ブロック
tのブロックヘッダに集積して格納する。このようなプ
ログラム領域を、複数の細分化したプログラム領域やデ
ータファイル領域に変更するときは、先頭ブロックtの
ブロックヘッダに格納されている管理情報が参照され
る。これにより、各ブロック毎の消去回数に基づいて変
更対象のブロックを選択できる。このため、各ブロック
の書き込みや消去の回数を平準化することが可能とな
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、フラッシュ型メモ
リ、その管理装置、その管理方法にかかり、更に具体的
には、フラッシュメモリ型メモリの効率的な管理手法の
改良に関するものである。
【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】
【課題を解決するための手段】前記目的を達成するため
に、本発明のフラッシュ型メモリは、記憶内容の消去の
単位であるブロックを複数使用してプログラムが格納さ
れているフラッシュ型メモリにおいて、プログラムが格
納されているいずれかのブロックに、管理情報を記憶す
るヘッダ領域を設け、このヘッダ領域に、プログラムが
格納されているブロックの管理情報を集積して格納した
ことを特徴とする。他の発明によれば、前記ヘッダ領域
には、そのブロックの管理情報と、他のブロックの集積
した管理情報が格納される。
【0013】主要な形態の一つによれば、前記ヘッダ領
域は、プログラムが格納されているブロックの先頭ブロ
ックに設けられており、先頭ブロックに続く従属ブロッ
クの管理情報が前記ヘッダ領域に格納される。他の形態
によれば、前記ヘッダ領域が一つのブロックに収まらな
いときは、プログラム領域のいずれかのブロックに拡張
ヘッダ領域を設け、これに前記管理情報が格納される。
更に他の形態によれば、前記ブロックの管理情報が、ブ
ロックの消去回数,ブロックの初期化時刻,ブロックを
消去した順番を示すイレースシーケンスナンバのいずれ
かを含む。
【0014】本発明のフラッシュ型メモリの管理装置
は、前記プログラムが格納されている複数のブロックを
使用したプログラム領域を、前記ヘッダ領域に格納され
ている管理情報を利用して、プログラム領域もしくはデ
ータファイル領域に書き換えることを特徴とする。
【0015】主要な形態の一つによれば、前記プログラ
ム領域をブロック毎のデータファイル領域もしくはプロ
グラム領域に書き換える際に、書き換え後の各ブロック
毎にヘッダ領域を設け、これらヘッダ領域にそのブロッ
クの管理情報が格納される。他の形態によれば、前記プ
ログラム領域を、細分化した複数のプログラム領域に分
割する際に、分割後の細分化した各プログラム領域にそ
れぞれ前記ヘッダ領域を設けるとともに、各プログラム
領域に含まれるブロックの管理情報が、それぞれ該当す
るヘッダ領域に格納される。
【0016】更に他の形態によれば、前記プログラム領
域を、細分化した複数のプログラム領域と、少なくとも
一つのデータファイル領域に分割する際に、分割後の細
分化した各プログラム領域にそれぞれ前記ヘッダ領域を
設けるとともに、各プログラム領域に含まれるブロック
の管理情報が、それぞれ該当するヘッダ領域に格納され
る。更に他の形態によれば、複数のデータファイル領域
をプログラム領域に変更する際に、前記データファイル
領域の各ヘッダ領域に格納されている管理情報を利用し
て、変更後のプログラム領域の前記ヘッダ領域に管理情
報が格納される。
【0017】本発明のフラッシュ型メモリの管理方法
は、連続する複数ブロックからなり、各ブロックの管理
情報が集積されたブロックヘッダを有するプログラム領
域と、1ブロックのみからなるデータファイル領域とを
複数組有するフラッシュ型メモリの制御を行うフラッシ
ュ型メモリの管理方法であって、前記プログラム領域の
ブロックヘッダに記録されている情報と、前記プログラ
ム領域のブロックヘッダで管理している複数ブロックに
記録されているプログラム情報とをRAMに待避させ、
前記プログラム領域として使用していた複数ブロックを
ブロックイレースすると共に、前記データファイル領域
として使用するためのブロックヘッダの初期化を行い、
前記RAMに待避している前記プログラム情報を前記フ
ラッシュ型メモリに戻す際に、前記プログラム情報を細
分化あるいは拡大化もしくはデータファイル領域と混在
させて細分化するために必要な連続ブロックを確保する
ために、前記データファイル領域として使用されている
ブロックの中から候補ブロックを選択し、選択された前
記各候補ブロックに記録されているデータファイルを、
前記初期化手段で前記データファイル領域として初期化
した各ブロックあるいは空いているデータファイル領域
にコピーすると共に、前記各候補ブロックをブロックイ
レースして、前記プログラム領域として初期化を行い、
前記RAMに待避させているプログラム領域のブロック
ヘッダに記録されている情報を更新して前記各候補ブロ
ックに記録すると共に、待避させたプログラム領域のプ
ログラム情報を前記各候補ブロックに格納するようにし
たことを特徴とする。
【0018】他の発明は、連続する複数ブロックからな
り、各ブロックの管理情報が集積されたブロックヘッダ
を有するプログラム領域と、1ブロックのみからなるデ
ータファイル領域とを複数組有するフラッシュ型メモリ
の制御を行うフラッシュ型メモリの管理方法であって、
前記プログラム領域に格納されている前記プログラム情
報を、細分化あるいは拡大化もしくはデータファイル領
域と混在させて細分化または他のブロックに移動するた
めに必要な連続ブロックを確保するために、前記データ
ファイル領域として使用されているブロックの中から候
補ブロックを選択し、選択された前記各候補ブロックに
記録されているデータファイルを空いているデータファ
イル領域にコピーすると共に、前記各候補ブロックをブ
ロックイレースして、前記プログラム領域とする初期化
を行い、前記プログラム領域のブロックヘッダに記録さ
れている情報を更新して前記各候補ブロックに記録する
と共に、前記プログラム領域のプログラム情報を前記各
候補ブロックに格納し、前記プログラム領域として使用
していた複数ブロックをブロックイレースすると共に、
前記データファイル領域として使用するためのブロック
ヘッダの初期化を行うようにしたことを特徴とする。
【0019】
【発明の実施の形態】以下、本発明の実施の形態につい
て詳細に説明する。本形態は、例えば図1に示すよう
に、プロセッサ10,フラッシュメモリ12およびその
制御装置14を含む拡張もしくは補助の記憶装置15,
RAM(主記憶装置)16を含むコンピュータシステム
に適用される。そして、フラッシュメモリ12の書換寿
命を延命させるプログラムやデータの格納方法,更には
管理・制御のための装置を得ようとするものである。
【0020】まず、プログラム領域あるいはデータファ
イル領域を管理するため、フラッシュメモリ12の管理
単位をその最小消去(イレース)単位である1ブロック
(物理ブロック)とする。この最小単位である物理ブロ
ック(以下単に「ブロック」という)内には、プログラ
ム領域もしくはデータファイル領域と、そのブロックを
管理する情報を持つヘッダ領域とが存在する。なお、同
一ブロックの記憶領域には、プログラム領域とデータフ
ァイル領域の混在は認めないことにする。また、プログ
ラム領域については、複数のブロックが連続するときは
それらを一括して管理し、そのブロック群を管理する情
報を持つヘッダ領域を設ける。
【0021】図2には、本形態におけるソフトウエアの
基本構造の一例が示されている。同図のように、OS2
0やアプリケーションソフト22とのソケットインター
フェースとして、いわゆるドライバ層24に相当する部
分にフラッシュ管理マネージャ26を設ける。このフラ
ッシュ管理マネージャ26は、本形態のシステム用ドラ
イバと考えることができる。このフラッシュ管理マネー
ジャ26によって、ブロック情報の管理やデータのリー
ド/ライトの制御が行なわれる。
【0022】このようなシステムにおける補助記憶装
置,拡張記憶装置,あるいはそれらの混在装置上で、特
願平9−317612号として開示されたヘッダ構造と
管理手法が適用される。図3[A]は、連続する8個の
ブロック0〜7をプログラム領域として割り当て、それ
以外のブロック8〜nをデータファイル領域として割り
当てた例である。上述したように、複数の連続するブロ
ックに確保されたプログラム領域は、1つのヘッダ領域
によって管理される。一方、データファイル領域は、例
え複数の連続するブロックに確保されたとしても、各ブ
ロック毎にヘッダ領域によって管理される。従って、プ
ログラム領域32のブロックヘッダ32Aはブロック0
にのみ存在し、ブロック1〜7には存在しない。ブロッ
ク1〜7の管理情報等は、ブロック0のヘッダ領域32
Aにまとめられる。一方、ブロック8〜nにはデータフ
ァイル領域38B〜3nBがそれぞれ確保されるが、各
ブロックにそれぞれヘッダ領域38A〜3nAが存在
し、これらによってブロック毎に管理される。
【0023】次に、図3[B]の例は、ブロック0をデ
ータファイル領域として割り当て、ブロック1〜Aをプ
ログラム領域として割り当て、それ以後はデータファイ
ル領域として割り当てた例である。図4[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バイトとする。ブロック全体では、(H
1+H2)バイトとなる。
【0028】一方、前記従属ブロックのブロックヘッダ
を集積化した情報のサイズをH3バイトとすると、4ブ
ロック連結したプログラム領域に対するブロックヘッダ
のサイズは、H1+H3バイトとなる(図4[B]参
照)。従って、プログラム領域のサイズは、H2×4+
H1×3−H3バイトとなる。一般的に、J個の連続す
るブロックで構成されるプログラム領域の場合、そのブ
ロックヘッダのサイズはH1バイト+H3バイトとな
り、その実行プログラムファイルのデータサイズはH2
バイト×J+H1バイト×(J−1)−H3バイトとな
る。
【0029】次に、ブロックのヘッダ領域について説明
する。ブロックヘッダに含まれる情報としては、図5に
示すように、 状態(有効/無効/遷移中/初期化完了)を示すフラ
グ プログラム領域/データファイル領域を示すマーカフ
ラグ 連続予約ブロックの領域数 パーティション名 自己のブロックの消去情報 自己のブロックの付加情報(必要があるときに付加) 従属ブロックのブロック番号あるいはブロック情報
(固有名称)と、その消去情報及び付加情報 がある。
【0030】これらのうち、まずのフラグについて説
明する。フラッシュ管理マネージャ26(図2参照)
は、各ブロックヘッダの内容を読み、フラッシュメモリ
がどのように管理されているかを把握する。フラッシュ
メモリのメモリセル内のビットデータは、論理値の
「1」→「0」への変化の処理時間は比較的短いが、
「0」→「1」への変化は、一度ブロック消去又は消去
をしなければならず、長時間を要する。つまり、1ビッ
トのデータの書換えを行なうために、そのブロック内の
データを一時待避させるとともに、ブロック消去後に書
き戻す必要があり、処理時間としては大きい。
【0031】そこで、実際には、状態を示すフラグを利
用してブロックの状態を管理することになる。すなわ
ち、上述した書換えに伴うオーバーヘッドを軽減すた
め、ブロックヘッダ内にそのブロックが有効な状態か,
それとも無効な状態か,初期化が完了した状態か,有効
な状態から無効な状態への遷移状態か,といった状態を
それぞれのブロック毎に認識し、データの書込み,デー
タの無効化,ブロックの消去,ブロックの初期化などの
操作を行なう。
【0032】次に、のマーカフラグは、該当するブロ
ックがデータファイル領域に割り当てられたか、それと
も、プログラム領域に割り当てられたかを示すフラグで
ある。これによって、プログラム領域に指定されたと
き、の連続予約ブロック数に実行プログラムとして後
に続くブロックの数を指定する。しかし、データファイ
ル領域に指定されているときは、連続予約ブロック数を
0とする。のパーティション名は、実行プログラムや
データファイルに割り当てた固有の名称である。
【0033】の自己のブロックの消去情報としては、
ブロックを消去した回数を記録する。ブロック消去する
ときは、記録されている以前の消去回数を一時的に保持
し、ブロック消去終了後、一時的に保持している以前の
消去回数に1インクリメントしてデータを格納する。
の自己のブロックの付加情報としては、例えば、イレー
スシーケンスナンバあるいは消去時刻など、そのブロッ
クに関連する情報がある。
【0034】の従属ブロックのブロック番号と消去情
報及び付加情報としては、従属ブロックに関する消去回
数や、イレースシーケンスナンバあるいは消去時刻など
の従属ブロックに関連する情報が該当する。これら情報
の集積の順番は、その情報がいずれの従属ブロックのも
のか認識できれば、どのような順序でもよい。また、従
属ブロックの消去回数を示す情報は、最低限集積する必
要がある。図示の例では、先頭ブロックtに対して、従
属ブロックがt+1,t+2,……,t+nまで存在す
る。従って、それらの従属ブロックの各々について、ブ
ロック番号と消去情報や付加情報が先頭ブロックtのヘ
ッダに集積化されている。
【0035】このように、本形態によれば、従属ブロッ
クの消去情報が先頭ブロックのヘッダ情報に含まれてい
る。本形態によれば、これを利用して、次のような運用
が可能である。 連続する複数個のブロックを占めるプログラム領域
を、各ブロック毎のデータファイル領域に変更する。 連続する複数個のブロックを占めるプログラム領域を
分割し、細分化されたプログラム領域を作成する。 連続する複数個のブロックを占めるプログラム領域を
分割もしくは目的変更し、細分化されたプログラム領域
を作成するとともに、データファイル領域に変更する。 連続する複数個のブロックを占めるデータファイル領
域を、一つのプログラム領域に変更する。 従属するブロックの関連管理情報などが、プログラム
領域の先頭ブロックのヘッダ内に収まらない場合に、拡
張ヘッダ領域をブロックヘッダ領域の後に付加する。 以下、これらの運用について順に説明する。
【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)次に、複数個のブロックで構成され
る一つのプログラム領域を、 ブロックtのみで構成されるデータファイル領域(も
しくはプログラム領域), ブロックt+1〜t+mで構成されるプログラム領
域, ブロックt+m+1〜t+m+o−1まではそれぞれ
ブロック一つで構成されるデータファイル領域, ブロックt+m+o〜t+nで構成されるプログラム
領域に変更する方法を説明する。
【0047】例えば、図11[A]に示すように、ブロ
ックt〜t+nの連続した一つのプログラム領域がある
とする。これは、前記図6[A]と同様である。これ
を、同図[B]〜[E]に示すように、多数のデータフ
ァイル領域やプログラム領域に変更する場合を想定す
る。前記〜が、同図[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】まず、移動可能なプログラム領域のサイズ
(ブロック数)分の連続するデータファイル領域を決定
する。この決定方法として、 単純に消去回数の多いブロックを検出し、そのブロッ
クを含むように前後のブロックを割り当てる方法, 必要とする分の連続するブロックでの平均の消去回数
が最大のところに割り当てる方法, 前記及びを組み合わせて最適化を図る方法, 平均化ではなく、標準偏差などによって最適ブロック
を選定する方法,がある。
【0054】平均化の例を取って説明すると、例えば連
続するブロックを3ブロック選定する場合を想定する。
図14に示すように、ブロックxからブロックx+nま
でのブロックがデータファイル領域として存在すると仮
定する。各ブロックの消去回数Y0〜Ynに対し、連続す
る3つのブロックの消去回数の平均値Z0,Z1,…,Z
n2を求める。例えば、平均値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,1
E,1Fをプログラム領域として使用するため、ブロッ
クヘッダを初期化する。このとき、先頭ブロック1Dに
おけるブロックヘッダの管理情報において、初期化完了
フラグをONにし、有効/無効/遷移中の状態フラグで
は、遷移中のフラグをたてることにより、ブロック1
D,1E,1Fのプログラム領域はコピー中であること
を宣言する。また、プログラム/データのマーカフラグ
を、プログラム領域であることを示すためにONにし、
連続予約ブロック領域数を2(0b0000010)に
する。更に、前記RAM上に待避させたブロック1Dの
消去回数の情報を更新するとともに、イレースシーケン
スナンバ情報を再構築する。なお、パーティション名
は、移動元であるブロック9のブロックヘッダ情報の中
にあるパーティション名と同等にする。
【0071】次に、従属するブロック1E,1Fのブロ
ック番号と、前記RAM上に待避させたブロック1E,
1Fの消去回数を1インクリメントし、その値を格納す
る。そして、移動元のプログラム領域(2)(メモリ空間
0901000〜0BFFFFF)のデータを、移動先
のプログラム領域(2)(メモリ空間0D01000〜1
FFFFFF)にコピーする。コピー完了後、ブロック
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,1
E,1Fの組み合わせが最大の平均消去回数であったと
する。本例では、まず、ブロック9上にあるブロックヘ
ッダと拡張ブロックヘッダの情報(ブロック9における
ブロックヘッダの管理情報と、従属ブロックA,Bに関
するそれぞれのブロックヘッダの情報)をRAM上に待
避する。そして、ブロック9,A,B上のプログラム領
域におけるプログラム(メモリ空間0901000〜0
BFFFFF)を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におけるブロ
ックヘッダの管理情報において、初期化完了フラグをO
Nにし、有効/無効/遷移中の状態フラグを有効状態に
する。また、プログラム/データのマーカフラグをON
にするとともに、連続予約ブロック領域数を2(0b0
000010)にする。
【0080】更に、前記RAM上に待避させたブロック
1Dの消去回数の情報を更新し、イレースシーケンスナ
ンバの情報を再構築する。そして、パーティション名に
を、待避させた情報,すなわちブロック9のブロックヘ
ッダ情報中にあったパーティション名と同等にする。ま
た、従属ブロック1E,1Fのブロック番号とRAM上
に待避させた従属ブロック1E,1Fの消去回数を1イ
ンクリメントし、その値を格納するとともに、従属ブロ
ック1E,1Fのイレースシーケンスナンバの情報を再
構築する。その後、先ほど待避させたプログラム領域
(2)(メモリ空間0901000〜0BFFFFFをR
AM上に待避)のデータを、ブロック1D,1E,1F
のプログラム領域(2)(メモリ空間0D01000〜1
FFFFFF)へ移動することにより、復元が行われ
る。
【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 (12)

    【特許請求の範囲】
  1. 【請求項1】 記憶内容の消去の単位であるブロックを
    複数使用してプログラムが格納されているフラッシュ型
    メモリにおいて、 プログラムが格納されているいずれかのブロックに、管
    理情報を記憶するヘッダ領域を設け、このヘッダ領域
    に、プログラムが格納されているブロックの管理情報を
    集積して格納したことを特徴とするフラッシュ型メモ
    リ。
  2. 【請求項2】 記憶内容の消去の単位であるブロックを
    複数使用してプログラムが格納されているフラッシュ型
    メモリにおいて、 プログラムが格納されているいずれかのブロックに、そ
    のブロックの管理情報を記憶するヘッダ領域を設け、こ
    のヘッダ領域に、プログラムが格納されている他のブロ
    ックの管理情報を集積して格納したことを特徴とするフ
    ラッシュ型メモリ。
  3. 【請求項3】 前記ヘッダ領域は、プログラムが格納さ
    れているブロックの先頭ブロックに設けられており、先
    頭ブロックに続く従属ブロックの管理情報を前記ヘッダ
    領域に格納したことを特徴とする請求項2記載のフラッ
    シュ型メモリ。
  4. 【請求項4】 前記ヘッダ領域が一つのブロックに収ま
    らないときは、プログラム領域のいずれかのブロックに
    拡張ヘッダ領域を設け、これに前記管理情報を格納した
    ことを特徴とする請求項1,2又は3のいずれかに記載
    のフラッシュ型メモリ。
  5. 【請求項5】 前記ブロックの管理情報が、ブロックの
    消去回数,ブロックの初期化時刻,ブロックを消去した
    順番を示すイレースシーケンスナンバの少なくとも一つ
    を含むことを特徴とする請求項1,2,3又は4記載の
    フラッシュ型メモリ。
  6. 【請求項6】 請求項1,2,3,4又は5のいずれか
    に記載のフラッシュ型メモリを制御するフラッシュ型メ
    モリの管理装置であって、 前記プログラムが格納されている複数のブロックを使用
    したプログラム領域を、前記ヘッダ領域に格納されてい
    る管理情報を利用して、プログラム領域もしくはデータ
    ファイル領域に書き換えることを特徴とするフラッシュ
    型メモリの管理装置。
  7. 【請求項7】 前記プログラム領域をブロック毎のデー
    タファイル領域もしくはプログラム領域に書き換える際
    に、書き換え後の各ブロック毎にヘッダ領域を設け、こ
    れらヘッダ領域にそのブロックの管理情報を格納したこ
    とを特徴とする請求項6記載のフラッシュ型メモリの管
    理装置。
  8. 【請求項8】 前記プログラム領域を、細分化した複数
    のプログラム領域に分割する際に、分割後の細分化した
    各プログラム領域にそれぞれ前記ヘッダ領域を設けると
    ともに、各プログラム領域に含まれるブロックの管理情
    報を、それぞれ該当するヘッダ領域に格納したことを特
    徴とする請求項6記載のフラッシュ型メモリの管理装
    置。
  9. 【請求項9】 前記プログラム領域を、細分化した複数
    のプログラム領域と、少なくとも一つのデータファイル
    領域に分割する際に、分割後の細分化した各プログラム
    領域にそれぞれ前記ヘッダ領域を設けるとともに、各プ
    ログラム領域に含まれるブロックの管理情報を、それぞ
    れ該当するヘッダ領域に格納したことを特徴とする請求
    項6記載のフラッシュ型メモリの管理装置。
  10. 【請求項10】 請求項1,2,3,4又は5のいずれ
    かに記載のフラッシュ型メモリを制御するフラッシュ型
    メモリの管理装置であって、 複数のデータファイル領域をプログラム領域に変更する
    際に、前記データファイル領域の各ヘッダ領域に格納さ
    れている管理情報を利用して、変更後のプログラム領域
    の前記ヘッダ領域に管理情報を格納したことを特徴とす
    るフラッシュ型メモリの管理装置。
  11. 【請求項11】 連続する複数ブロックからなり、各ブ
    ロックの管理情報が集積されたブロックヘッダを有する
    プログラム領域と、1ブロックのみからなるデータファ
    イル領域とを複数組有するフラッシュ型メモリの制御を
    行うフラッシュ型メモリの管理方法であって、 前記プログラム領域のブロックヘッダに記録されている
    情報と、前記プログラム領域のブロックヘッダで管理し
    ている複数ブロックに記録されているプログラム情報と
    をRAMに待避させ、 前記プログラム領域として使用していた複数ブロックを
    ブロックイレースすると共に、前記データファイル領域
    として使用するためのブロックヘッダの初期化を行い、 前記RAMに待避している前記プログラム情報を前記フ
    ラッシュ型メモリに戻す際に、前記プログラム情報を細
    分化あるいは拡大化もしくはデータファイル領域と混在
    させて細分化するために必要な連続ブロックを確保する
    ために、前記データファイル領域として使用されている
    ブロックの中から候補ブロックを選択し、 選択された前記各候補ブロックに記録されているデータ
    ファイルを、前記初期化手段で前記データファイル領域
    として初期化した各ブロックあるいは空いているデータ
    ファイル領域にコピーすると共に、前記各候補ブロック
    をブロックイレースして、前記プログラム領域として初
    期化を行い、 前記RAMに待避させているプログラム領域のブロック
    ヘッダに記録されている情報を更新して前記各候補ブロ
    ックに記録すると共に、 待避させたプログラム領域のプログラム情報を前記各候
    補ブロックに格納するようにしたことを特徴とするフラ
    ッシュ型メモリの管理方法。
  12. 【請求項12】 連続する複数ブロックからなり、各ブ
    ロックの管理情報が集積されたブロックヘッダを有する
    プログラム領域と、1ブロックのみからなるデータファ
    イル領域とを複数組有するフラッシュ型メモリの制御を
    行うフラッシュ型メモリの管理方法であって、 前記プログラム領域に格納されている前記プログラム情
    報を、細分化あるいは拡大化もしくはデータファイル領
    域と混在させて細分化または他のブロックに移動するた
    めに必要な連続ブロックを確保するために、前記データ
    ファイル領域として使用されているブロックの中から候
    補ブロックを選択し、 選択された前記各候補ブロックに記録されているデータ
    ファイルを空いているデータファイル領域にコピーする
    と共に、前記各候補ブロックをブロックイレースして、
    前記プログラム領域とする初期化を行い、 前記プログラム領域のブロックヘッダに記録されている
    情報を更新して前記各候補ブロックに記録すると共に、
    前記プログラム領域のプログラム情報を前記各候補ブロ
    ックに格納し、 前記プログラム領域として使用していた複数ブロックを
    ブロックイレースすると共に、前記データファイル領域
    として使用するためのブロックヘッダの初期化を行うよ
    うにしたことを特徴とするフラッシュ型メモリの管理方
    法。
JP20335798A 1998-07-17 1998-07-17 フラッシュ型メモリの管理装置 Expired - Lifetime JP3555456B2 (ja)

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 true JP2000035919A (ja) 2000-02-02
JP3555456B2 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)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005071522A1 (ja) * 2004-01-27 2005-08-04 Nec Corporation 高速再起動方法および情報処理装置ならびにプログラム
JP2008112445A (ja) * 2006-10-27 2008-05-15 Samsung Electronics Co Ltd 不揮発性メモリを管理する装置及び方法
JP2008225576A (ja) * 2007-03-08 2008-09-25 Ricoh Co Ltd Nand型フラッシュメモリの制御装置
JP2009199242A (ja) * 2008-02-20 2009-09-03 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2011175377A (ja) * 2010-02-23 2011-09-08 Renesas Electronics Corp フラッシュメモリ制御装置及び方法
US9665484B2 (en) 2014-07-22 2017-05-30 Kyocera Document Solutions Inc. Electronic apparatus having nonvolatile memory and program writing method for updating
JP2017162068A (ja) * 2016-03-08 2017-09-14 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005071522A1 (ja) * 2004-01-27 2005-08-04 Nec Corporation 高速再起動方法および情報処理装置ならびにプログラム
JPWO2005071522A1 (ja) * 2004-01-27 2007-09-13 日本電気株式会社 高速再起動方法および情報処理装置ならびにプログラム
US9298472B2 (en) 2004-01-27 2016-03-29 Nec Corporation High-speed restart method, information processing device, and program
JP4683218B2 (ja) * 2004-01-27 2011-05-18 日本電気株式会社 高速再起動方法および情報処理装置ならびにプログラム
JP2008112445A (ja) * 2006-10-27 2008-05-15 Samsung Electronics Co Ltd 不揮発性メモリを管理する装置及び方法
JP2008225576A (ja) * 2007-03-08 2008-09-25 Ricoh Co Ltd Nand型フラッシュメモリの制御装置
JP4710918B2 (ja) * 2008-02-20 2011-06-29 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2009199242A (ja) * 2008-02-20 2009-09-03 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2011175377A (ja) * 2010-02-23 2011-09-08 Renesas Electronics Corp フラッシュメモリ制御装置及び方法
US9665484B2 (en) 2014-07-22 2017-05-30 Kyocera Document Solutions Inc. Electronic apparatus having nonvolatile memory and program writing method for updating
JP2017162068A (ja) * 2016-03-08 2017-09-14 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US10664197B2 (en) 2016-03-08 2020-05-26 Toshiba Memory Corporation Storage system, information processing system and method for controlling nonvolatile memory
US11237764B2 (en) 2016-03-08 2022-02-01 Toshiba Memory Corporation Storage system, information processing system and method for controlling nonvolatile memory
US11847350B2 (en) 2016-03-08 2023-12-19 Toshiba Memory Corporation Storage system, information processing system and method for controlling nonvolatile memory

Also Published As

Publication number Publication date
JP3555456B2 (ja) 2004-08-18

Similar Documents

Publication Publication Date Title
JP5336060B2 (ja) 不揮発性メモリ装置およびそれを動作させる方法
KR100453053B1 (ko) 플래쉬 메모리용 파일 시스템
US7272696B2 (en) Dynamic volume management
KR100495722B1 (ko) 개선된 플래시 파일 시스템
US6968439B2 (en) Single segment data object management
US7227788B2 (en) Memory management device and memory device
JP2669365B2 (ja) 書換え可能なromファイル装置
JP2001209543A (ja) フラッシュ・マイコンにおけるプログラム書き換え方法
JP2007280428A (ja) メモリ管理
JP2000305839A (ja) 記憶装置、記憶システム、メモリ管理方法及び記録媒体
JP2008242944A (ja) 統合メモリ管理装置及び方法
KR20030025319A (ko) 반도체 메모리 장치의 어드레스 변환 방법 및 그 장치
JP3555456B2 (ja) フラッシュ型メモリの管理装置
JP3503448B2 (ja) フラッシュ型メモリ及びその管理装置
JPH113287A (ja) 記憶装置およびそれに用いられる記憶領域管理方法
JP2001101071A (ja) フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法
JP3552490B2 (ja) フラッシュ型メモリを備えた記憶装置,フラッシュ型メモリの管理方法
JPH0695955A (ja) フラッシュ・ファイル・システム
KR101067464B1 (ko) 파일 시스템 및 데이터 관리 방법
JPH10289144A (ja) メモリの制御方法
JPH11272537A (ja) フラッシュ型メモリ及びその管理装置
JP2005339450A (ja) フラッシュメモリのデータ管理方式
JP2008171246A (ja) フラッシュメモリドライブ装置、その制御方法及びそのプログラム
JP2000035916A (ja) メモリ動作管理方法
JP2005222531A (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