JP2001101071A - フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法 - Google Patents

フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法

Info

Publication number
JP2001101071A
JP2001101071A JP27550699A JP27550699A JP2001101071A JP 2001101071 A JP2001101071 A JP 2001101071A JP 27550699 A JP27550699 A JP 27550699A JP 27550699 A JP27550699 A JP 27550699A JP 2001101071 A JP2001101071 A JP 2001101071A
Authority
JP
Japan
Prior art keywords
program
information
data
program data
segment
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.)
Withdrawn
Application number
JP27550699A
Other languages
English (en)
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 JP27550699A priority Critical patent/JP2001101071A/ja
Publication of JP2001101071A publication Critical patent/JP2001101071A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 プログラムデータをフラッシュメモリに格納
する場合の管理を適切に行うことにより、メモリ容量の
使用効率を向上させるとともに、データの追加、削除、
更新といった処理を効率よく実行可能とし、しかもメモ
リの書き換え回数を効果的に低減させる。 【解決手段】 フラッシュメモリの消去単位であるiバ
イトのブロックを、jバイトのセグメントに分割して管
理する。全体のセグメントは、プログラムデータを格納
するプログラムデータ領域と、格納したプログラムデー
タの管理情報を格納するプログラムヘッダ領域とに分け
られる。プログラムヘッダ領域に2以上のセグメントを
割り当ててもよい。プログラムデータの管理情報は、セ
グメント毎の管理情報と、プログラム毎の管理情報とを
含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、フラッシュ型メモ
リを用いたデータ記憶装置及びフラッシュ型メモリのデ
ータ管理方法に関する。
【0002】
【従来の技術】一般にフラッシュタイプのフローティン
グゲートトランジスタを含む電気的消去可能なプログラ
マブル読み出し専用メモリ(EEPROM:Electrical
ly Erasable and Programmable ROM)は現在市場で容易
に入手できる。これらのいわゆるフラッシュメモリは、
機能・性能面でEPROM(Erasable and Programmabl
e ROM)と類似した不揮発メモリであり、メモリ内に分
割されているブロックを消去する回路内プログラマブル
動作を可能にするという機能をさらに有する。フラッシ
ュメモリでは、以前に書き込まれたメモリの領域を前も
ってブロック消去することで、その書き換えが行われ
る。
【0003】典型的なコンピュータシステムでは、オペ
レーティングシステム(以下「OS」という)プログラ
ムがそのシステムのデー夕記憶装置のデータ管理を担
う。OSプログラムとの互換性を達成するために必要か
つ十分であるデータ記憶装置のアトリビュート(属性)
は、データ記憶媒体のいかなる位置からもデータを読み
出すことができ、これにデータを書き込む事ができるこ
とである。
【0004】しかし、フラッシュメモリの場合、データ
が既に書き込まれている領域には、この領域のデータを
消去した後でなければデータを書き込むことができな
い。このため、フラッシュメモリは典型的な既存のOS
プログラムで管理することができない。このような点に
着目し、既存のコンピュータオペレーティングプログラ
ムによってフラッシュメモリを管理することを可能にす
るソフトウェア製品が先行技術において提案されてい
る。この先行技術では、フラッシュメモリを「書き込み
1回読み出し複数回」の装置として動作させるか、「書
き込み複数回読み出し複数回」の装置として動作させて
いる。つまり、前者は以前に書き込まれているメモリ領
域を再利用することはできない装置であり、補助記憶装
置や拡張記憶装置として使用できる。後者は以前に書き
込まれているメモリ領域を再利用可能とし、その中には
フラッシュメモリの書き換え回数を少なくするような制
御を持つ補助記憶装置(半導体ファイル記憶装置)があ
る。
【0005】上記「書き込み1回読み出し複数回」の装
置として知られているもの、すなわちフラッシュメモリ
を使用した拡張記憶装置上では、書き換え回数を少なく
なるような制御構造を持たずに実行プログラムを動作さ
せている。つまり、フラッシュメモリに対して新たにデ
ータの書き換えを行なうときは、全ブロックを一括して
消去し、その後、データを記憶させる必要がある。ま
た、マルチタスク、マルチスレッド、マルチプロセスに
代表される並列実行プログラムやデータの共有あるいは
占有という管理を行うことにおいて、一般のMMU(メ
モリ管理ユニット)を駆使してフラッシュメモリをブロ
ック(ページ)ごとに管理する方式では、書き換え回数
の管理と書き換え回数の低減を図ることは困難である。
【0006】また「書き込み複数回読み出し複数回」の
装置としての補助記憶装置において、書き換え回数を少
なくするためにその情報(書き換え回数テーブル)を異
なるメモリ上に記憶する方式がある。しかし、実行プロ
グラムを主記憶装置にロードすることなく、フラッシュ
メモリ上で動作させるプログラムにおいて、単純に同一
フラッシュメモリ上に記憶する方式ではブロック間にま
たがるデータを無駄なく完全に連続的な配置を可能する
ことは困難であった。
【0007】そこで本願出願人は、フラッシュメモリの
書き換え回数を少なくするような制御構造を持ち、しか
もフラッシュメモリに格納されたプログラムを主記憶装
置にロードすることなく実行可能とした装置を既に提案
している(特開平11−143764号公報)。なお、
以下の説明では、主記憶装置にロードすることなく実行
可能である、フラッシュメモリ上に格納されたプログラ
ムを「ROM実行可能なプログラム」という。
【0008】
【発明が解決しようとする課題】しかしながら上記従来
の装置では、次にような不都合があった。 (1)実行プログラム領域のブロックに割り当てられた
すべてのプログラムをそれぞれ個別に管理できない。 (2)新たに追加するROM実行可能なプログラムは最
後に格納されているプログラムデータの後にしか追記し
ていくことしかできない。 (3)ROM実行可能なプログラムのデータを効率よく
格納するための管理体系が無い。 (4)1つのROM実行可能なプログラムのデータを削
除するためには、そのプログラムデータが格納された領
域のブロックにおいて、そのプログラムデータを別領域
に待避させ、その後、該当ブロックに格納されたデータ
の消去を行う。そして、待避した別領域からそのROM
実行可能なプログラムのデータを物理的に除いて、該当
する領域に、その他のすべてデータを更新(再書き込
み)しなければならない。この処理作業量が多く、処理
時間がかかっていた。 (5)1つのROM実行可能なプログラムのデータを更
新するためには、その実行プログラム領域内のブロック
において、実行プログラム領域内のメモリのデータを別
領域に待避させ、その後、該当ブロックに格納されたデ
ータの消去を行う。そして、待避した別領域から該当領
域にデータを更新する際、同時にそのプログラムのデー
タを更新し、該当する領域に、その他のすべてデータも
更新(再書き込み)しなければならない。この処理作業
量が多く、処理時間がかかっていた。 (6)実行プログラム領域に割り当てられたブロック内
のデータの書き換え回数を効果的に低減させる手段を持
たない。
【0009】本発明は、以上の点に着目してなされたも
ので、その目的は、プログラムデータをフラッシュメモ
リに格納する場合の管理を適切に行うことにより、メモ
リ容量の使用効率を向上させるとともに、データの追
加、削除、更新といった処理を効率よく実行可能とし、
しかもメモリの書き換え回数を効果的に低減させること
ができるデータ記憶装置及びメモリ管理方法を提供する
ことにある。
【0010】
【課題を解決するための手段】上記目的を達成するため
請求項1に記載の発明は、ブロック単位で記録内容を消
去できるフラッシュ型メモリにプログラムデータを格納
するデータ記憶装置において、前記ブロックを複数のセ
グメントに分割して管理し、前記プログラムデータを前
記セグメント単位のスパンドレコードとして格納するよ
うに構成したことを特徴とする。
【0011】ここで「スパンドレコード」とは、記憶す
べきデータがメモリの1記憶単位に格納できない場合
に、記憶単位の容量に分割して複数の記憶単位に格納さ
れたレコードを意味する。すなわち本発明のデータ記憶
装置によれば、1つのプログラムに対応するプログラム
データが、1セグメントに格納できるときは、そのまま
格納され、1セグメントには収まらないときは、m(≧
2)個に分割され、m個のセグメントに格納される。こ
の場合、1つのプログラムに対応するm個のセグメント
は、アドレスが連続するように配置することが望まし
い。
【0012】請求項2に記載の発明は、請求項1に記載
のデータ記憶装置において、前記複数のセグメントのう
ちの一部をヘッダ領域とし、残りのセグメントを、前記
プログラムデータを格納するデータ領域とし、該データ
領域に格納したプログラムデータの管理情報を前記ヘッ
ダ領域に格納することを特徴とする。
【0013】請求項3に記載の発明は、請求項2に記載
のデータ記憶装置において、前記データ領域に格納した
プログラムデータの更新は、対応する管理情報を更新す
ることにより行い、該管理情報の更新は、必要な情報を
前記ヘッダ領域に追記することにより行うことを特徴と
する。
【0014】請求項4に記載の発明は、請求項2または
3に記載のデータ記憶装置において、前記プログラムデ
ータの管理情報は、前記セグメント毎の管理情報と、プ
ログラム毎の管理情報とを含むことを特徴とする。請求
項5に記載の発明は、請求項4に記載のデータ記憶装置
において、前記プログラムデータの管理情報は、前記セ
グメント毎の管理情報が記述されている領域の先頭アド
レスを示すポインタ情報と、前記プログラム毎の管理情
報が記述されている領域の先頭アドレスを示すポインタ
情報とを含むことを特徴とする。
【0015】請求項6に記載の発明は、請求項4または
5に記載のデータ記憶装置において、前記セグメント毎
の管理情報は、前記プログラムデータの連続性を示すレ
コード情報と、該レコード情報の管理状態を示す情報と
からなることを特徴とする。ここで、「レコード情報の
管理状態を示す情報」とは、レコード情報が、例えば有
効であるか、無効であるか、未格納であるか、予約され
ているかのいずれかを示す情報である。予約されている
か否かを示す情報は、なくてもよい。
【0016】請求項7に記載の発明は、請求項4または
5に記載のデータ記憶装置において、前記プログラム毎
の管理情報は、当該プログラムの識別情報、当該プログ
ラムに対応するプログラムデータが格納されているセグ
メントの先頭のセグメントを示す情報、及び当該プログ
ラムに対応するプログラムデータに関連する附属情報の
少なくとも1つを含む属性情報と、該属性情報の管理状
態を示す情報とからなることを特徴とする。ここで、
「属性情報の管理状態を示す情報」とは、属性情報が、
例えば有効であるか、無効であるか、未格納であるか、
予約されているかのいずれかを示す情報である。予約さ
れているか否かを示す情報は、なくてもよい。
【0017】請求項8に記載の発明は、ブロック単位で
記録内容を消去できるフラッシュ型メモリにプログラム
データを格納する場合のデータ管理方法において、前記
ブロックを複数のセグメントに分割して管理し、前記プ
ログラムデータを前記セグメント単位のスパンドレコー
ドとして格納することを特徴とする。
【0018】さらに本発明は、以下のような特徴を有す
る。前記データ領域にプログラムデータを追加して格納
する場合、その必要とするセグメント数の領域を確保す
るために、前記ヘッダ領域に格納されている各セグメン
トに対応するレコード情報の管理状態を示す情報を探索
し、未格納エリアとして必要なセグメントを連続確保で
きる領域を検出する手段と、その該当領域にプログラム
データをセグメント化して格納する手段とを備え、該プ
ログラムデータを格納したセグメントに対応するレコー
ド情報の管理状態を示す情報及び当該プログラムの属性
情報の管理状態を示す情報をそれぞれ未格納から有効に
更新する手段を備えたことを特徴とする。
【0019】さらに、前記データ領域に格納したプログ
ラムデータを削除する場合、前記ヘッダ領域内にあるそ
のプログラムデータに対応する管理情報が格納された各
セグメントに対応するレコード情報の管理状態を示す情
報及び当該プログラムの属性情報の管理状態を示す情報
を、有効から無効に更新することにより、無効エリアと
してそれらのセグメントに格納されたプログラムデータ
を論理的に削除する手段を備えたことを特徴とする。
【0020】次に、プログラムデータを追加、削除する
処理を繰り返した後に追加が不可能な状態となったと
き、有効なプログラムに対応するプログラムデータを他
の記憶装置に移動させ、前記データ領域に割り当てられ
ているブロックに対して消去処理を実行し、該消去処理
完了後、前記ヘッダ領域に格納された情報の初期化を行
う手段を備えたことを特徴とする。
【0021】また、プログラムデータを追加する場合
は、その必要とするセグメント数の領域を連続的に確保
し、前記ヘッダ領域に格納されている各セグメントに対
応するレコード情報の管理状態を示す情報及び当該プロ
グラムの属性情報の管理状態を示す情報を、予約状態に
更新する手段を備え、その後その該当領域にプログラム
データをセグメント化して格納する手段を備え、該プロ
グラムデータを格納したセグメントに対応するレコード
情報の管理状態を示す情報及び当該プログラムの属性情
報の管理状態を示す情報をそれぞれ予約から有効に更新
する手段を備えたことを特徴とする。
【0022】前記レコード情報としては、例えば第1の
情報[S1−A]と、第2の情報[S1−B]とを設
け、連続して格納される複数のプログラムの隣接するプ
ログラムに対応するレコード情報の一方を第1の情報
[S1−A]とし、他方を第2の情報[S1−B]とし
て、第1の情報[S1−A]と、第2の情報[S1−
B]とを交互に割り当てることが望ましい。
【0023】またプログラムデータを追加して格納する
ための候補セグメントを選択する際に、(1)必要セグ
メント数連続する予約セグメントを順次検出し、最初に
合致したセグメントの領域にそのプログラムデータを格
納する領域を割り当てる手段、及び(2)前記セグメン
ト毎の管理情報を順次最初から検出し、最初に現れる未
格納セグメントに割り当てる手段の少なくとも1つを備
えるようにすることが望ましい。
【0024】また、(1)前記データ領域の各ブロック
の書き換え回数を低減する手段、及び(2)当該データ
記憶装置を含むシステムが異常となったときに、該シス
テムの復旧や当該データ記憶装置に格納されていたプロ
グラムデータの復元を行なう手段の少なくとも1つをさ
らに備えることが望ましい。
【0025】本発明の前記及び他の目的、特徴、利点
は、以下に詳細な説明及び添付図面から明瞭になろう。
【0026】
【発明の実施の形態】以下本発明の実施の形態を図面を
参照して説明する。本実施形態は例えば図1に示すよう
に、プロセッサ11、フラッシュメモリ15及びその制
御装置14を含む拡張記憶装置13、及び主記憶装置と
してのランダムアクセスメモリ(RAM)12を含むコ
ンピュータシステムに適用される。このようなシステム
でフラッシュメモリ15にプログラムデータを格納する
場合に、フラッシュメモリ15の書き換え寿命を延命さ
せる格納方法と管理・制御のための装置を得ようとする
ものである。
【0027】まず、フラッシュメモリ15内のプログラ
ムデータを格納する領域を管理するために、フラッシュ
メモリ15の管理単位をその最小消去(イレース)単位
である1ブロックとし、さらに後述するようにブロック
を複数のセグメントに分割してセグメントを最小管理単
位とする。
【0028】図2には、本実施形態におけるソフトウェ
アの基本構造の一例が示されている。同図のようにオペ
レーティングシステム21やアプリケーションソフト2
3とのソケットインタフェースとして、いわゆるドライ
バ層22に相当する部分にフラッシュプログラム管理マ
ネージャ24が設けられている。このフラッシュプログ
ラム管理マネージャ24は本実施形態のシステム用ドラ
イバである。このフラッシュプログラム管理マネージャ
24によって、図1のフラッシュメモリ制御装置14が
構成され、ブロック情報の管理やプログラムデータの読
み出し/書き込み/実行の制御が行なわれる。
【0029】例えば、図3に示すように、ROM実行可
能なプログラムを格納する領域として、ブロック消去が
iバイト単位で可能で、かつブロック数がt(16進
数)個あるフラッシュメモリが1つあるとする。これら
各ブロックを、物理ブロックと呼ぶことにする。そし
て、各物理ブロックに、アドレスの低い方から高い方へ
順に物理ブロックナンバーを「0」から「t−1」まで
割り振る。図示の例では、上方はアドレスの値が低く、
上方から下方に向かって物理ブロック0、物理ブロック
1、物理ブロック2、…、物理ブロックt−1の順に配
置されている。
【0030】ここで、各物理ブロックはセグメント単位
に分割されている。例えば、図3に示す例では、1ブロ
ックが8つのセグメントに分割されている。そして各セ
グメントを管理している情報を格納するプログラムヘッ
ダ領域が1セグメント(jバイト)分確保され、そのプ
ログラムヘッダ領域が下位アドレス側に配置されてい
る。プログラムヘッダ領域以外のセグメントは(8t−
1)個存在し、これらのセグメントは、プログラムデー
タを格納するプログラムデータ領域とされている。さら
に、プログラムヘッダ領域に割り当てられたセグメント
以降のセグメントの呼称番号を0から(8t−1)とし
ている。図3の例は、一例であり、1ブロックを複数個
のセグメントで分割し、そのセグメントの一部に各セグ
メントの管理情報(プログラム管理情報も含む)を格納
するヘッダ領域を備える構成であれば、図3の例に限定
されるものではない。また、ヘッダ領域のサイズは1セ
グメント以上であっても構わない。
【0031】プログラムヘッダ領域に格納される管理情
報として、それぞれのセグメント(レコード)に対し
て、該当するセグメントの前後の関連性(連続性)する
レコード情報、及びそのセグメントの(換言すればその
レコード情報の)有効/無効/未格納/予約を示す情報
を備える。これらの管理情報は、すべてのセグメントに
対して保有されている。これらの管理情報が格納される
情報領域をセグメント管理情報領域と呼ぶこととする。
【0032】さらにプログラムヘッダ領域に格納される
管理情報として、それぞれのROM実行可能なプログラ
ムのデータに対して、そのプログラムの属性を示す情報
をそれぞれ備える。その属性情報として、そのプログラ
ムデータに対する固有の名称等のユニークな識別子(識
別情報)、そのプログラムデータのサイズ、そのプログ
ラムデータを格納する先頭アドレスを示すポインタ値、
そのプログラムデータに関する付加情報、及び、これら
の属性情報が有効/無効/未格納/予約を示す情報を備
える。なお、ROM実行可能なプログラムのデータ1つ
に対して、この属性情報および、有効/無効/未格納/
予約を示す情報を1つは持つ。すべてのROM実行可能
なプログラムに対して、これらのROM実行可能なプロ
グラムデータの属性情報及び、その属性情報の有効/無
効/未格納/予約を示す情報を保有する情報領域をRO
M実行可能プログラム属性情報及び管理情報領域と呼ぶ
ことにする。
【0033】また、プログラムヘッダ領域に付加される
情報として、セグメント管理情報領域の先頭アドレスの
ポインタ値を格納する情報と、ROM実行可能プログラ
ム属性情報及び管理情報領域の先頭アドレスのポインタ
値を格納する情報とがあり、プログラムヘッダ領域には
これらの情報を格納する情報エリアが確保されている。
【0034】ここで、簡単な例として、図3で示されて
いるような構造の場合に対して、上述のセグメント管理
情報領域、ROM実行可能プログラム属性情報及び管理
情報領域、セグメント管理情報領域の先頭アドレスのポ
インタ値を格納する情報エリア、ROM実行可能プログ
ラム属性情報及び管理情報領域の先頭アドレスのポイン
タ値を格納する情報エリアを具体的にマッピングしたも
のを図4に示す。この図において、セグメント管理格納
情報が、セグメント管理情報の先頭アドレスのポインタ
値を示す情報であり、ROM実行可能プログラム格納・
管理情報が、ROM実行可能プログラム属性情報及び管
理情報領域の先頭アドレスのポインタ値を示す情報であ
る。セグメント管理情報領域と、ROM実行可能プログ
ラム属性情報及び管理情報領域との間には、領域の境界
を示すセパレータコードが挿入されている。
【0035】なお図4に示す配置以外にも、セグメント
管理情報領域並びにROM実行可能プログラム属性情報
及び管理情報領域は、セグメント管理情報領域の先頭ア
ドレスのポインタ値を格納する情報エリア、ROM実行
可能プログラム属性情報及び管理情報領域の先頭アドレ
スのポインタ値を格納する情報エリアによる値により、
領域の配置が可能であり、また、情報を修飾する情報は
それを示す形式であればすべて同様の形式を持つことが
できるため、さまざまな形式で考えることができる。
【0036】図4に示したセグメントのレコード情報及
びこのレコード情報の有効/無効/未格納/予約を示す
情報の内容を説明する。セグメントのレコード情報(連
続性)は前後のセグメントとの関連がどのようになって
いるかを判断するための情報であり、ROM実行可能な
プログラムデータをセグメント化して格納したときの格
納パターンを示すものである。その管理情報の例とし
て、[S1−A]、[S1−B]の2パターンによる方
法がある。
【0037】この方法は、レコード情報が未格納の状態
から、それぞれのセグメントにプログラムデータを格納
するときの方法である。ROM実行可能プログラムのデ
ータをセグメント化して格納するとき、セグメント0の
レコード情報に[S1−A]の情報を記録し、その情報
を有効とする情報を付加する。そして、そのプログラム
データの必要とするセグメント数分だけ、連続セグメン
トのレコード情報に[S1−A〕の情報を記録し、それ
ぞれの情報を有効とする情報を付加する。また次の異な
るプログラムデータをセグメント化し格納するとき、そ
のセグメントに対応するレコード情報[S1−B]を記
録し、その情報を有効とする情報を付加する。そして、
そのプログラムデータの必要とするセグメント数分だ
け、連続セグメントのレコード情報に[S1−B]の情
報を記録し、それぞれに有効とする情報を付加する。次
の異なるプログラムデータをセグメント化し格納すると
き、そのセグメントに対応するレコード情報に[S1−
A]を記録する。それ以降については新たなプログラム
データをセグメント化し格納する毎に、必要数だけ[S
1−B]、[S1−A]をトグルさせ(交互に記録
し)、その情報を有効とする情報を付加して行く。
【0038】具体的な例を図5を参照して説明する。図
5は、ROM実行可能なプログラムのデータをセグメン
ト化したとき、プログラムデータ[A]は3セグメン
ト、プログラムデータ[B]は2セグメント、プログラ
ムデータ[C]は1セグメント、プログラムデータ
[D]は3セグメント必要とするプログラムを格納した
場合を示している。図5では順番にプログラムデータを
[A]から[D]までセグメント化して格納するとき、
その時のレコード情報、及びこのレコード情報の有効/
無効/未格納/予約を示す情報の内容が示されている。
【0039】前述のようにレコード情報に[S1−A]
と、[S1−B]とをトグルさせる方法に代えて、連続
番号を付加す方法を採用してもよい。つまり、レコード
情報に[0000]、[0001]、[0002]、
[0003]…[FFFF]、[0000〕、…のよう
な情報を記録して行くようにしてもよい。ただし、前述
と同様に、同一のプログラムデータに属するセグメント
には同じレコード情報を付加させる必要がある。このレ
コード情報は、プログラムデータをセグメント化したと
き、そのデータがどのような形態で格納されているかを
判断できる形態であればどのような形態でも構わない。
【0040】次に、ROM実行可能なプログラムのデー
タに対して、そのプログラムの属性情報、及びその属性
情報が有効/無効/未格納/予約を示す情報について説
明する。個々のROM実行可能なプログラムのデータに
関する情報の格納手段及びその管理情報として、それぞ
れプログラムデータの属性情報とその属性情報の有効/
無効/未格納/予約を示す情報がある。
【0041】また、属性情報として、そのプログラムデ
ータに対する固有の名称等のユニークな識別子、そのプ
ログラムデータのサイズ、そのプログラムデータを格納
する先頭アドレスを示すポインタ値、プログラムデータ
に関する付加情報があげられる。これらの具体的な一例
を図で表すと図6のようになる。格納する方法は順を追
って説明すると、まず、プログラムデータ[A]が格納
されるとき、何もない各管理情報が未格納の状態から、
その属性情報としてプログラムデータ[A]固有の名称
あるいはそれを識別できる識別コードの情報を格納す
る。同時にプログラムデータ[A]が格納されている先
頭アドレスのポインタを指す情報を付加し、プログラム
データ[A]のサイズあるいはセグメント数を示す情報
を付加する。また、プログラムデータ[A]に関する付
加情報等を示す情報を付加する。この後、この属性情報
に対する有効/無効/未格納/予約を示す情報を有効に
する。プログラムデータ[B]も同様に各情報を付加
し、この属性情報に対する有効/無効/未格納/予約を
示す情報を有効にする。このようにプログラムデータ
[A]、[B]の2つのデータに対して、その属性情報
の対比やその属性情報が有効/無効/未格納/予約の情
報が修飾するべき対象を図6では明確に示している。
【0042】図6では一般例を示したものであるが、属
性情報とその属性情報に対する有効/無効/未格納/予
約の情報が保有できればどのような形態をとっても実現
可能である。次に、ROM実行可能なプログラムのデー
タの予約・削除・追記する方法を述べる。本実施形態で
は、フラッシュプログラム管理マネージャ24により、
論理的なデータ構造を持ち、予約データの場合は、セグ
メント管理情報を論理的に予約状態にし、プログラムデ
ータは前述の方法で既に書き込まれている場合において
は、物理的削除ではなく論理的削除を行う。
【0043】例えば、論理的削除の手段として、プログ
ラムデータが保有しているすべてのセグメントのレコー
ド情報を有効の状態から無効状態にし、そのプログラム
データの属性情報を無効にする。これにより、論理的削
除を行うことが可能となる。
【0044】先ほど簡単に説明した、プログラムデータ
を後で格納する(追記する)ときのための手段として、
セグメントをあらかじめ予約しておく方法がある。予約
しておくべき、プログラムデータをセグメント化したと
き、必要とするセグメント数を予約しておくためには、
格納を予定しているセグメントのレコード情報に対応す
る有効/無効/未格納/予約を示す情報をすべてに未格
納の状態から、予約の状態にすればよい。また、これに
該当するプログラムデータの属性情報に対応する有効/
無効/未格納/予約を示す情報を未格納の状態から予約
状態に変更する。このとき、これ以外の属性情報の更新
を行わなくても構わない。つまり、実際にデータが格納
されたときに(予約状態から有効状態になったとき)、
属性情報の更新を行えばよい。
【0045】セグメントのレコード情報及びプログラム
データの属性情報の未格納状態を示す情報は、ROM実
行可能なプログラムデータ領域内の各ブロックのすべて
について消去処理を行った後、セグメント管理格納情
報、ROM実行可能プログラム格納及び管理情報、各セ
グメントのレコード情報、各ROM実行可能なプログラ
ムの属性情報などのプログラムヘッダ情報を初期化する
ことになり、その初期化の完了情報として未格納状態を
示す情報を付加させる。
【0046】フラッシュプログラム管理マネージャ24
は、上述したようなセグメントの管理情報及びプログラ
ムデータの属性情報を管理する。また、プログラムデー
タの格納に際し、セグメント管理情報の更新、プログラ
ムデータの属性情報の付加など、プログラムヘッダ情報
の更新を担う。
【0047】プログラムデータの論理的削除は、フラッ
シュプログラム管理マネージャ24がユーザ(他のプロ
グラム)からの命令により、指定されたプログラムデー
タを論理的に削除することである。フラッシュプログラ
ム管理マネージャ24は、指定されたプログラムデータ
に対応する各セグメントのレコード情報に対して、有効
/無効/未格納/予約を示す情報をそれぞれ有効状態か
ら無効状態にする。そして、指定されたプログラムデー
タに関する属性情報に対して、有効/無効/未格納/予
約を示す情報を有効状態から無効状態に変更する。これ
により、指定されたプログラムのデータは論理的に削除
されたものとされ、フラッシュプログラム管理マネージ
ャ24では、指定されたプログラムデータが削除された
ものとして取り扱う。つまり、ユーザ(他のプログラ
ム)からの問い合わせに対して、存在しないものとして
フラッシュプログラム管理マネージャ24は返答する。
【0048】フラッシュプログラム管理マネージャ24
がプログラムデータの格納(書き込み操作)を行う場合
には、シーケンシャルにそれぞれのプログラムデータを
セグメント化して格納していく。例えば、初めてプログ
ラムデータを格納する場合、プログラムデータ[A]を
セグメント化し、セグメント化されたものをプログラム
データ[A−1]、[A−2]、…、[A−5]とする
と、セグメント[0]にプログラムデータ[A−1]を
格納し、セグメント[1]にプログラムデータ[A−
2]を格納し、セグメント[2]にプログラムデータ
[A−3]を格納し、セグメント[3]にプログラムデ
ータ[A−4]を格納し、セグメント[4]にプログラ
ムデータ[A−5]を格納する。そして、フラッシュプ
ログラム管理マネージャ24は、前述のとおり、セグメ
ント[0]、[1]、…、[4]に対応するレコード情
報を更新し、このレコード情報の有効/無効/未格納/
予約を示す情報を未格納状態から有効状態に変更する。
【0049】また、プログラムデータ[A]の属性情報
を更新し、この属性情報の有効/無効/未格納/予約を
示す情報を未格納状態から有効状態に変更する。これら
の操作が完了後、フラッシュプログラム管理マネージャ
24はプログラムデータ[A]を認識することができ、
そのプログラムデータ[A]の読み出し操作を許可す
る。さらに、プログラムデータ[A]を格納した後、プ
ログラムデータ[B]を格納する場合、同様にプログラ
ムデータ[B]をセグメント化し、そのセグメント化し
たものをプログラムデータ[B−1]、[B−2]、
…、[B−4]とすると、先程、プログラムデータ
[A]を格納した次のセグメント[5]から格納するこ
とになる。つまり、セグメント[5]にプログラムデー
タ[B−1]を格納し、セグメント[6]にプログラム
データ[B−2]を格納し、セグメント[7]にプログ
ラムデータ[B−3]を格納し、セグメント[8]にプ
ログラムデータ[B−5]を格納する。この後、フラッ
シュプログラム管理マネージャ24はプログラムデータ
[A]の管理情報の更新を行ったのと同様の操作をプロ
グラムデータ[B]に適応させる。つまり、セグメント
[5]、[6]、…、[8]に対応するレコード情報を
更新し、このレコード情報の有効/無効/未格納/予約
を示す情報を未格納状態から有効状態に変更する。ま
た、プログラムデータ[B]の属性情報を更新し、この
属性情報の有効/無効/未格納/予約を示す情報を未格
納状態から有効状態に変更する。これらの操作が完了
後、フラッシュプログラム管理マネージャ24はプログ
ラムデータ[B]を認識することができ、そのプログラ
ムデータ[B]の読み出し操作を許可する。
【0050】このように新たなプログラムデータを格納
するとき、データを格納して行く順番として、最後に格
納されたセグメントに連続する次のセグメントから格納
して行くことになる。シーケンシャルに格納して行く他
の方法として、最終セグメントからセグメント[最終−
1]の順にデクリメントして行く方法も考えられる。
【0051】また、本実施形態の装置は上述のようにプ
ログラムデータを追記する方法以外に、あらかじめ必要
とするセグメント数だけのデータサイズを予約しておく
方法を適用できる。これは前述の追記の格納方法では、
プログラムデータをセグメント化し、そのセグメント化
されたデータを格納する手段をもっていたが、予約の場
合は、プログラムデータの必要とするサイズ分だけ、つ
まり、セグメント化したときのセグメント数を連続して
確保し、そのセグメントのレコード情報を更新し、その
レコード情報の有効/無効/未格納/予約を示す情報を
未格納状態から予約状態に変更する。また、予約プログ
ラムデータに対応する属性情報の有効/無効/未格納/
予約を示す情報を未格納状態から予約状態に変更する。
これによって、フラッシュプログラム管理マネージャ2
4は、予約プログラムデータが格納される領域と判断す
ることになる。つまり、ユーザ(他のプログラム)から
の問い合わせに対して、予約領域が存在していると、フ
ラッシュプログラム管理マネージャ24は返答する。こ
の予約に関するプログラムデータを実際に格納する必要
が生じたとき、プログラムデータに対応する属性情報の
更新と前記情報の有効/無効/未格納/予約を示す情報
を予約状態から有効状態に変更すればよい。
【0052】ところで、ユーザ(他のプログラム)によ
って、予約の状態から有効状態になるだけではなく、場
合によって、予約状態から無効状態になること(予約領
域の削除)がある。これらの最終結果としてプログラム
データをセグメント化して格納し、プログラムデータの
属性情報やセグメントの管理情報などを更新(追加)及
び削除を繰り返して行くと、フラッシュメモリのプログ
ラムデータの領域、つまりセグメントのブロックが満杯
になり、以後プログラムデータの追記ができなくなる。
このようなとき、セグメントの管理情報が無効となって
いる場合であれば、デフラグメンテーション、すなわち
断片化したデータをまとめる処理を行う必要がある。フ
ラッシュプログラム管理マネージャ24は有効なプログ
ラムデータとその属性情報を主記憶装置としてのRAM
12に退避し、フラッシュメモリ15の消去、及びヘッ
ダ情報の初期化を行う。そして、先程退避したプログラ
ムデータを再度セグメント化し、フラッシュメモリ15
に格納していく。同時にセグメントの管理情報、プログ
ラムの属性情報及びその管理情報を更新する。この操作
を退避したプログラムデータすべてに適用し、最適化を
行うことで、追記することができるセグメントエリアは
増加する。
【0053】フラッシュプログラム管理マネージャ24
はプログラムデータを管理し、ユーザ(他のプログラ
ム)に対して、そのプログラムデータ及びその属性情報
などを含む、フラッシュメモリ15の読み出し操作、書
き込み操作、削除操作、デフラグメンテーション操作、
管理情報入出力操作、ブロック消去操作、各操作の排他
制御、ユーザ(他プログラム)要求に対しての優先・調
停処理(アービトレーション)、排他処理を受け持つ。
【0054】プログラムデータの削除や予約は、セグメ
ントの連鎖情報を更新することによって、プログラムデ
ータの書き換えは最小限に抑えることができる。これに
より、フラッシュメモリ15の書き換え回数を低減する
ことができる。また、システムの運用時間を延ばし、フ
ラッシュメモリ15の書き換え寿命(回数ではなく時
間)を延ばすこともできる。
【0055】また、セグメントの管理情報や属性情報の
管理情報等の更新は、プログラムへツダ領域に必要な情
報を追記することにより行われるため、過去の管理情報
をある程度保持していることになり、故意・過失・事故
によるデータ消失・破壊が発生した場合にも、データを
ある程度復元することができる。このことは、コンピュ
ータシステムの異常による停止からの復旧やデータの復
元に有効である。なお、フラッシュメモリによっては、
書き込み操作中に他のオペレーションができないチップ
が存在する。このような時は、タスク、スレッドのよう
なプログラム技法により、排他制御を行なうようにす
る。
【0056】図7には、フラッシュメモリ15に対応す
るセグメント管理情報及びROM実行可能プログラム及
びその属性情報などのプルグラムヘッダ情報の格納例が
示されている。図7の例は、H1バイトを最小消去単位
のブロックとするフラッシュメモリで、ROM実行可能
プログラム及びセグメント管理情報、属性情報に割り当
てられる領域のフラッシュメモリとして、ブロックをn
個持つシステムである。つまり、この領域に割り当てら
れたサイズは、H1バイト×nである。また、このとき
のセグメントの単位をH2バイトとし、ブロック0のセ
グメントに分けた先頭の部分を、セグメントの管理情報
及び属性情報群を格納するプログラムヘッダ領域とす
る。このプログラムヘッダ領域として必要な容量をH3
バイトとすると、H3<H2であるときはヘッダ領域に
必要なセグメントは1つであるが、H3>H2であると
きは、その必要とする複数の連続するセグメントをプロ
グラムヘッダ領域とする。このヘッダ領域の次のセグメ
ントからROM実行プログラムを格納するプログラムデ
ータ領域となり、セグメント番号を0から順に割り付け
て行く。
【0057】次に図8を参照してより具体的な実施例に
ついて説明する。本実施形態のフラッシュメモリ15と
しては、例えば図8に示すように、消去が64Kバイト
単位で可能な、すなわちブロックサイズが64Kバイト
である、1M(厳密には1.024M)×8ビットのフ
ラッシュメモリが使用される。この図に示すように、各
ブロックに「0」から「F」まで順に番号(16進数)を
付ける。さらに、各ブロックを4Kバイトのセグメント
に分割して行くとFF個のセグメント数になる。すなわ
ち図8に示す例は、図7において、H1=64K,H2
=4K,n=16とした場合に相当する。
【0058】なお本発明には数多くの実施形態があり、
以上の開示に基づいて多様に改変することが可能であ
る。例えば、次のようなものが含まれる。 (1)上述した実施形態は、フラッシュメモリに本発明
を適用したものであるが、他の類似するメモリがフラッ
シュメモリと同じ書き込み、読み出し機能を備えてお
り、かつ、書き込み前にブロックの消去特性を有するメ
モリであれば同様に適用可能である。 (2)フラッシュメモリの消去単位である物理ブロック
は、バイト単位やワード単位の他どのようなデータ単位
であっても、同様に適用可能である。
【0059】
【発明の効果】以上詳述したように本発明によれば、フ
ラッシュ型メモリが、最小消去単位であるブロックを複
数のセグメントに分割して管理され、プログラムデータ
がセグメント単位のスパンドレコードとして格納される
ので、ブロックサイズより小さいサイズのプログラムデ
ータを効率的に記憶することができ、メモリ容量の使用
効率を向上させることができる。
【0060】また複数のセグメントがヘッダ領域と、デ
ータ領域とに分けられ、データ領域に格納したプログラ
ムデータの管理情報がヘッダ領域に格納されるので、ヘ
ッダ領域の管理情報を更新することにより、データ領域
に格納されたデータの物理的消去を行うことなく、論理
的削除が可能となり、物理的消去処理を伴う書き換え回
数を低減することができる。その結果、処理の高速化を
図ることが可能となる。
【0061】また管理情報の更新は、必要な情報をヘッ
ダ領域に追記することにより実行されるので、過去の管
理情報をある程度保持していることになり、事故などに
よりデータ消失・破壊が発生した場合にも、データをあ
る程度復元することができる。その結果、コンピュータ
システムの異常による停止からの復旧やデータの復元を
行うのに有効である。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかるコンピュータシス
テムの構成例を示すブロック図である。
【図2】図1のシステムに適用されるソフトウェア構造
を示す図である。
【図3】フラッシュメモリの物理ブロックにセグメント
等の割付を行った例を説明するための図である。
【図4】セグメント管理情報並びにROM実行可能プロ
グラム属性情報及びその管理情報を説明するための図で
ある。
【図5】セグメント管理情報に含まれるレコード情報及
びそれに付随する情報を説明するための図である。
【図6】プログラムデータの属性情報及びそれに付随す
る情報を説明するための図である。
【図7】ブロックサイズとセグメントサイズとの関係、
及びプログラムデータのヘッダ情報を格納する領域の設
定方法を説明するための図である。
【図8】図7に示す形態のより具体的な実施例を示す図
である。
【符号の説明】
11 プロセッサ 12 ランダムアクセスメモリ 13 拡張記憶装置 14 フラッシュメモリ制御部14 15 フラッシュメモリ 24 フラッシュ管理マネージャ

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 ブロック単位で記録内容を消去できるフ
    ラッシュ型メモリにプログラムデータを格納するデータ
    記憶装置において、 前記ブロックを複数のセグメントに分割して管理し、前
    記プログラムデータを前記セグメント単位のスパンドレ
    コードとして格納するように構成したことを特徴とする
    データ記憶装置。
  2. 【請求項2】 前記複数のセグメントのうちの一部をヘ
    ッダ領域とし、残りのセグメントを、前記プログラムデ
    ータを格納するデータ領域とし、該データ領域に格納し
    たプログラムデータの管理情報を前記ヘッダ領域に格納
    することを特徴とする請求項1に記載のデータ記憶装
    置。
  3. 【請求項3】 前記データ領域に格納したプログラムデ
    ータの更新は、対応する管理情報を更新することにより
    行い、該管理情報の更新は、必要な情報を前記ヘッダ領
    域に追記することにより行うことを特徴とする請求項2
    に記載のデータ記憶装置。
  4. 【請求項4】 前記プログラムデータの管理情報は、前
    記セグメント毎の管理情報と、プログラム毎の管理情報
    とを含むことを特徴とする請求項2または3に記載のデ
    ータ記憶装置。
  5. 【請求項5】 前記プログラムデータの管理情報は、前
    記セグメント毎の管理情報が記述されている領域の先頭
    アドレスを示すポインタ情報と、前記プログラム毎の管
    理情報が記述されている領域の先頭アドレスを示すポイ
    ンタ情報とを含むことを特徴とする請求項4に記載のデ
    ータ記憶装置。
  6. 【請求項6】 前記セグメント毎の管理情報は、前記プ
    ログラムデータの連続性を示すレコード情報と、該レコ
    ード情報の管理状態を示す情報とからなることを特徴と
    する請求項4または5に記載のデータ記憶装置。
  7. 【請求項7】 前記プログラム毎の管理情報は、当該プ
    ログラムの識別情報、当該プログラムに対応するプログ
    ラムデータのサイズを示す情報、当該プログラムに対応
    するプログラムデータが格納されているセグメントの先
    頭のセグメントを示す情報、及び当該プログラムに対応
    するプログラムデータに関連する付属情報の少なくとも
    1つを含む属性情報と、該属性情報の管理状態を示す情
    報とからなることを特徴とする請求項5または6に記載
    のデータ記憶装置。
  8. 【請求項8】 ブロック単位で記録内容を消去できるフ
    ラッシュ型メモリにプログラムデータを格納する場合の
    データ管理方法において、 前記ブロックを複数のセグメントに分割して管理し、前
    記プログラムデータを前記セグメント単位のスパンドレ
    コードとして格納することを特徴とするデータ管理方
    法。
JP27550699A 1999-09-29 1999-09-29 フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法 Withdrawn JP2001101071A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27550699A JP2001101071A (ja) 1999-09-29 1999-09-29 フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27550699A JP2001101071A (ja) 1999-09-29 1999-09-29 フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法

Publications (1)

Publication Number Publication Date
JP2001101071A true JP2001101071A (ja) 2001-04-13

Family

ID=17556440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27550699A Withdrawn JP2001101071A (ja) 1999-09-29 1999-09-29 フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法

Country Status (1)

Country Link
JP (1) JP2001101071A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003271444A (ja) * 2002-02-27 2003-09-26 Microsoft Corp オープンアーキテクチャのフラッシュドライバ
KR100439507B1 (ko) * 2002-03-18 2004-07-09 삼성전기주식회사 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법
JP2006285669A (ja) * 2005-03-31 2006-10-19 Toshiba Corp ホスト機器
KR100745256B1 (ko) 2005-10-11 2007-08-01 엘지전자 주식회사 임베디드 시스템에서의 코드 오버레이 방법
WO2009081224A1 (en) * 2007-12-24 2009-07-02 Nokia Corporation Method, device and data structure for data storage on memory devices
US7680837B2 (en) 2005-11-08 2010-03-16 Nec Corporation File management method for log-structured file system for sequentially adding and storing log of file access
JP2015036982A (ja) * 2013-08-16 2015-02-23 エルエスアイ コーポレーション ホストとコントローラとの間でパーティション化された変換レイヤ
WO2015146788A1 (ja) * 2014-03-28 2015-10-01 京セラドキュメントソリューションズ株式会社 電子機器

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003271444A (ja) * 2002-02-27 2003-09-26 Microsoft Corp オープンアーキテクチャのフラッシュドライバ
JP4658455B2 (ja) * 2002-02-27 2011-03-23 マイクロソフト コーポレーション オープンアーキテクチャのフラッシュドライバ
KR100439507B1 (ko) * 2002-03-18 2004-07-09 삼성전기주식회사 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법
JP2006285669A (ja) * 2005-03-31 2006-10-19 Toshiba Corp ホスト機器
KR100745256B1 (ko) 2005-10-11 2007-08-01 엘지전자 주식회사 임베디드 시스템에서의 코드 오버레이 방법
US7680837B2 (en) 2005-11-08 2010-03-16 Nec Corporation File management method for log-structured file system for sequentially adding and storing log of file access
WO2009081224A1 (en) * 2007-12-24 2009-07-02 Nokia Corporation Method, device and data structure for data storage on memory devices
US9043532B2 (en) 2007-12-24 2015-05-26 Nokia Corporation Method, device and data structure for data storage on memory devices
JP2015036982A (ja) * 2013-08-16 2015-02-23 エルエスアイ コーポレーション ホストとコントローラとの間でパーティション化された変換レイヤ
WO2015146788A1 (ja) * 2014-03-28 2015-10-01 京セラドキュメントソリューションズ株式会社 電子機器

Similar Documents

Publication Publication Date Title
US7783851B2 (en) Methods of reusing log blocks in non-volatile memories and related non-volatile memory devices
US7840617B2 (en) Host device and memory system
US7610434B2 (en) File recording apparatus
US9489301B2 (en) Memory systems
US5860082A (en) Method and apparatus for allocating storage in a flash memory
US5937425A (en) Flash file system optimized for page-mode flash technologies
US5682497A (en) Managing file structures for a flash memory file system in a computer
US5530827A (en) Data management system for programming-limited type semiconductor memory and IC memory card employing data save/erase process with flag assignment
US7295479B2 (en) Apparatus and method for managing bad blocks in a flash memory
US6477616B1 (en) Storage device, storage system, memory management method, recording medium, and computer data signal
KR100453053B1 (ko) 플래쉬 메모리용 파일 시스템
US6088759A (en) Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US8307172B2 (en) Memory system including memory controller and separately formatted nonvolatile memory to avoid “copy-involving write” during updating file data in the memory
KR20040014971A (ko) 비휘발성 메모리의 제어방법
JP2010026933A (ja) メモリシステム、ホスト装置
JP3793868B2 (ja) フラッシュメモリ管理装置及び記録媒体
JP4242245B2 (ja) フラッシュrom制御装置
JP2001101071A (ja) フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法
JP3503448B2 (ja) フラッシュ型メモリ及びその管理装置
JP3555456B2 (ja) フラッシュ型メモリの管理装置
EP1046996B1 (en) Memory defragmentation in chipcards
JPH11272537A (ja) フラッシュ型メモリ及びその管理装置
JPH1196779A (ja) フラッシュ型メモリ,その管理方法,記憶装置,コンピュータシステム
JPH10289144A (ja) メモリの制御方法
JP3904182B2 (ja) データ管理システムおよびそれを用いたデータ管理方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20061205