JPH0997207A - フラッシュrom管理方法及び装置及びコンピュータ制御装置 - Google Patents

フラッシュrom管理方法及び装置及びコンピュータ制御装置

Info

Publication number
JPH0997207A
JPH0997207A JP25124395A JP25124395A JPH0997207A JP H0997207 A JPH0997207 A JP H0997207A JP 25124395 A JP25124395 A JP 25124395A JP 25124395 A JP25124395 A JP 25124395A JP H0997207 A JPH0997207 A JP H0997207A
Authority
JP
Japan
Prior art keywords
sector
flash rom
data
storage
block
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
JP25124395A
Other languages
English (en)
Inventor
Takeshi Ogawa
武志 小川
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP25124395A priority Critical patent/JPH0997207A/ja
Priority to US08/710,946 priority patent/US5933847A/en
Publication of JPH0997207A publication Critical patent/JPH0997207A/ja
Priority to US09/350,188 priority patent/US6604168B2/en
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】フラッシュROM内にデータの読み書きでアク
セスされる領域の総容量よりも余分な領域を用意してお
き、記憶効率の低下を防止する。 【解決手段】管理処理350は、データ領域とこれに対
応する管理領域とでセクタを構成し、複数のセクタをフ
ラッシュROMに形成し、各セクタにおいてデータ領域
の記憶状態を示す状態情報を管理領域に格納し、該状態
情報に基づいてフラッシュROM15のアクセスを管理
する。待避処理351は、フラッシュROM15のイレ
ースブロック中の、有効データを含むセクタを抽出し、
これを該イレースブロック外へ待避する。消去処理35
2は、待避処理351によるセクタの待避後に、当該イ
レースブロックの消去処理を行う。フラッシュROM1
5にはアクセスの対象となるセクタ数よりも多い個数の
セクタが形成されており、管理処理350はこれらのセ
クタの全てを用いてアクセス管理を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ等に
おけるフラッシュROMの管理方法及び装置、及びコン
ピュータ制御装置に関する。
【0002】
【従来の技術】フラッシュROMは現在いろいろなタイ
プのものがあるが大きく分けてフラッシュDISK用に
開発されたタイプとパーソナルコンピュータのBIOS
用に開発されたものがある。
【0003】前者は消去単位がハードディスクで一般的
な512バイトであり、ファイルシステムとの整合性が
非常に良い。後者のフラッシュROMは消去単位が例え
ば64Kなどといった大きなブロック単位でしか行えな
い様になっている。また、PROMの様に書き込み電圧
として12V等の電圧が必要なものもある。後者のフラ
ッシュROMの方が安価に入手できるがファイルシステ
ムとの整合性が悪い為に特に小容量の記録メディアとし
ては使う事が出来なかった。
【0004】
【発明が解決しようとする課題】以上のように、BIO
S用に設計されたフラッシュROMは、その消去単位が
大きく、ファイルシステムとの整合性が悪いが、安価で
入手しやすい。従って、そのようなフラッシュROMを
ファイルシステムに適用できれば、安価な小容量の記録
メディアを提供することができる。
【0005】本発明は、消去単位の大きいフラッシュR
OMを、該消去単位よりも小さい記憶ブロック単位でア
クセスすることを可能とし、フラッシュROMをファイ
ルシステムに適合させることを可能とするフラッシュR
OM管理方法及び装置を提供しようとするものである。
【0006】ところで、フラッシュROMでは消去単位
でしか内容の消去が行えないので、フラッシュROMに
おいて記憶ブロックのデータを更新しようとすると、更
新前の記憶ブロックを無効データとし、別なブロックに
更新後のデータを書き込むことになる。この結果、フラ
ッシュROM内に、無効なデータが蓄積し、フラッシュ
ROMの利用効率が低下してしまう。このような事態を
防止するために、無効データの存在する消去ブロック内
の有効データを待避させて、当該消去単位に対して消去
動作を実行し、フラッシュROMを整理する。
【0007】さて、フラッシュROM内に未使用の記憶
ブロックが存在する間は、未使用の記憶ブロックに更新
データを書き込めるのであるが、未使用の記憶ブロック
が無くなると、1つの記憶ブロックのデータ更新のため
に非常に多くの書込みが発生する。即ち、未使用の記憶
ブロックが存在しない状態で記憶ブロックにデータの更
新が発生すると、当該消去単位内の全記憶ブロックを待
避し、当該消去単位に消去動作を行い、データ更新の発
生した記憶ブロックを除く全記憶ブロックをフラッシュ
ROMに書き戻し、データ更新の発生した記憶ブロック
の更新後の内容を書き込む、という処理が必要となり、
効率が著しく低下する。
【0008】本発明は、上記の問題に鑑みてなされたも
のであり、フラッシュROM内にデータの読み書きでア
クセスされる領域の総容量よりも余分な領域を用意して
おき、記憶効率の低下を防止するフラッシュROM管理
方法及び装置及びコンピュータ制御装置を提供すること
を目的とする。
【0009】
【課題を解決するための手段】上記の目的を達成するた
めの本発明のフラッシュROM管理装置は以下の構成を
備える。即ち、データ領域、及びデータ領域に対応する
管理領域とで構成される複数の記憶ブロックをフラッシ
ュROMに形成し、各記憶ブロックにおいてデータ領域
の記憶状態を示す状態情報を管理領域に格納し、該状態
情報に基づいて該記憶ブロックを単位としたアクセスを
管理する管理手段と、前記フラッシュROMの消去ブロ
ックにおいて、前記データ領域中のデータが有効である
記憶ブロックを前記管理情報の状態情報を参照して抽出
し、抽出された記憶ブロックの内容を該消去ブロック外
へ待避する待避手段と、前記待避手段により前記消去ブ
ロック中の有効データを含む全記憶ブロックを待避した
後に、該消去ブロックの消去処理を行う消去工程と、前
記管理手段でアクセスの対象となる記憶ブロック数より
も多くの記憶ブロックに対応する容量を有する記憶領域
とを備える。
【0010】また、好ましくは、前記記憶領域は、前記
フラッシュROMの少なくとも1つの消去ブロック分の
大きさを有する。消去工程による消去動作で、1消去ブ
ロック分の未使用領域を常に確保することが可能となる
からである。
【0011】
【発明の実施の形態】以下に添付の図面を参照して本発
明の実施の形態を説明する。
【0012】[実施形態1] <カメラシステムの構成>図1は実施形態1におけるカ
メラシステムの構成を表すブロック図である。本カメラ
システムは、電子カメラと、これに着脱可能な外部記憶
媒体17、PC通信インターフェース19、及びPC通
信インターフェース19を介して電子カメラと通信可能
に接続されたパーソナルコンピュータ22から構成され
る。
【0013】1はレンズであり、2はレンズ1を通った
光を電気信号として出力するCCDユニットである。3
はA/Dコンバータであり、CCDユニット2からのア
ナログ信号をデジタル信号へ変換する。4はSSGユニ
ットであり、CCDユニット2とA/Dコンバータ3に
同期信号を供給する。5はCPUであり、本カメラシス
テムにおける各種の制御を実現する。
【0014】6は信号処理アクセラレータであり、信号
処理を高速に実現する。7は電池であり、8は、電池7
よりの電力を電子カメラ全体へ供給するためのDC/D
Cコンバータである。9は電源コントローラユニットで
あり、DC/DCコンバータ8をコントロールする。1
0はパネル操作・表示装置・電源のコントロールを行う
マイクロコンピュータである。11はユーザへ各種の情
報を表示する表示装置であり、液晶パネル等が用いられ
る。12はコントロールパネルであり、ユーザが直接操
作するレリーズスイッチを含む。
【0015】13はROMであり、OS等のシステムプ
ログラムを格納する。14はDRAMであり、本電子カ
メラの主記憶である。15はフラッシュROMであり、
内蔵記憶媒体として使用する。16はPCMCIAカー
ドのインタフェース部、17はATAハードディスクな
どの外部記憶媒体、18は拡張バスインタフェースであ
る。19はPC通信インタフェースであり、パーソナル
コンピュータ等を接続してデータの授受を行う。20は
DMAコントローラ、21はストロボである。また、2
2はパーソナルコンピュータであり、PC通信インター
フェース19を介して、電子カメラとの通信を行う。
【0016】<撮影動作>この電子カメラの撮影時の動
作を簡単に説明する。コントロールパネル12のレリー
ズスイッチをユーザが押すと、CPU5がそのことを検
出して撮影シーケンスを開始する。以下の動作は全てC
PU5によるコントロールで行われることを前提とす
る。
【0017】さて、レリーズスイッチの押下により、S
SG4がCCD2を駆動する。CCD2から出力される
アナログ信号は、A/Dコンバータ3でデジタル信号へ
変換される。A/Dコンバータ3の出力は、DMAコン
トローラ20によってDRAM14へDMA転送され
る。1フレーム分のDMA転送が終了した時点でCPU
5は、信号処理シーケンスを開始する。
【0018】信号処理シーケンスでは、フラッシュRO
M15から信号処理プログラムを主記憶(DRAM1
4)上に読み出し、主記憶上のデータを信号処理アクセ
ラレータ6へ転送し信号処理を行う。但し、信号処理ア
クセラレータ6は信号処理の全てを行うわけではなく、
CPU5で行う処理の特に時間のかかる処理などを助け
る演算回路であり、CPU5の処理ソフトウェアと連携
して動作する。信号処理の一部または全部が終了すると
画像ファイルとしてフラッシュROM15へ記録する。
この時記録するファイルフォーマットが圧縮処理を必用
とするのであれば圧縮も行う。
【0019】信号処理プログラムは、フラッシュROM
15の中でファイルシステムが管理するファイルの1つ
である。カメラのプログラムはOSやファイルシステム
といっしょにROM13に納められている。カメラのプ
ログラムは、特定のファイル名のファイルをプログラム
であると認識する。
【0020】フラッシュROM15の中でファイルは不
連続に配置されている上に、本実施形態のファイルシス
テムが頻繁に再配置を行うため、、フラッシュROM1
5内の制御プログラムををCPUが直接実行することは
できない。従って、主記憶(DRAM14)に読み出し
て実行させなければならない。更に、主記憶はメモリマ
ネージャが動的に記憶場所をアロケーションするた
め、、特定のアドレスに格納されることを想定したソフ
トウエアであってはならない。そのため、本実施形態で
信号処理を行うプログラムのファイルは図41のような
形式となっている。
【0021】図41は本実施形態におけるフラッシュR
OMへの制御プログラムの格納状態を説明する図であ
る。図41において、識別コードはファイルがプログラ
ムであることを確認するためのコードである。ファイル
は可変長のレコードの集合として表現されている。レコ
ードには、始めに当該レコードに格納されている情報の
種類を識別するIDがあり、次にそのレコードの大きさ
を示す値が格納されている。
【0022】そして、プログラムのレコードとリロケー
ション情報のレコードがファイルに格納されている。プ
ログラムコードは例えば図42のようなデータである。
図42は相対アドレスで表現されたプログラムコードの
一例を表す図である。図42では、0050番地にジャ
ンプ命令があるが、CPUはこの命令を絶対番地へのジ
ャンプ命令と認識する。この命令のオペランドは相対ア
ドレスで表現されている。
【0023】図42のリロケーション情報レコードのデ
ータは図43のような形式で納められている。即ち、図
42のプログラムの中で、絶対番地へ変換しなければな
らないデータ(相対アドレス表現になっているデータ)
のプログラム番地を示すアドレステーブルがリロケーシ
ョン情報として格納される。
【0024】図41のファイルを主記憶にロードするた
めの領域を確保すると、ROM13のOSのメモリマネ
ージャがアドレスを決定する。メモリマネージャのアロ
ケーションはC言語ではalloc関数に相当する機能であ
る。メモリマネージャがプログラム用に8710番地を
割り当てた場合図44のようにプログラムがロードされ
る。図44は図41のプログラムを主記憶の8710番
地へマッピングした場合のプログラムコードを示す図で
ある。ジャンプ命令のオペランドが実際の絶対番地に置
き換えられている。この実アドレスへの変換をしながら
プログラムを主記憶へ読み出すと言う作業を行うプログ
ラムはROM13に格納されている。
【0025】以上のように構成することにより、記憶媒
体に信号処理ソフトウエアや圧縮ソフトウエアをファイ
ル形式で格納することができる。その結果、カメラが最
終ユーザの元へ届いてから、新しい信号処理アルゴリズ
ムや、Windoiws(商標)のBMP形式やTIFF形
式、あるいは将来新たに登場する形式等、多種多様なフ
ァイル形式への対応が可能となる。
【0026】以上の様に、本実施形態1における電子カ
メラは、撮影画像をフラッシュROM15へファイルす
るものである。
【0027】<デバイスドライバインタフェース>図2
は、本実施形態の電子カメラにおけるファイルシステム
の階層構造を表す図である。最上位の層がユーザアプリ
ケーション101である。ユーザアプリケーション10
1は電子カメラの内部で動くソフトウェアであり、ファ
イルをファイル名でオープンして読み書きした後クロー
ズする。
【0028】ユーザアプリケーション101から直接フ
ァンクションコールによって呼び出されるのがファイル
システムAPI層102である。このファイルシステム
API層102がドライブ名とファイルシステムを関連
付けて管理している。各ドライブ毎にファイルシステム
アーキテクチャ層をマウントする用に構成しているた
め、複数のファイルシステムアーキテクチャを混在させ
る事が可能となっている。
【0029】ファイルシステムアーキテクチャ層103
が実際のファイル管理を行う部分である。最下位の層が
ブロックデバイス層104である。ファイルシステムア
ーキテクチャ層103がブロックデバイス層104の提
供するサービスを利用してファイル入出力を実現してい
る。このブロックデバイス層104では、データをセク
タという単位で管理しており、1セクタは例えば512
バイトである。このブロックデバイス層104でデバイ
スごとの入出力制御の違いと、ヘッドやシリンダなどパ
ラメータの違いを吸収している。このように構成してい
るため、同時に複数の種類のデバイスを混在させること
ができる。
【0030】本実施形態の電子カメラでは、特にブロッ
クデバイス層104におけるフラッシュROMの記憶管
理方法に特徴を有する。
【0031】図1で示したフラッシュROM11には、
現在いろいろなタイプのものがあるが、大きく分けてフ
ラッシュDISK用に開発されたタイプとパーソナルコ
ンピュータのBIOS用に開発されたタイプがある。前
者は消去単位がハードディスクで一般的な512バイト
であり、ファイルシステムとの整合性が非常に良い。後
者のフラッシュROMは消去単位が例えば64kなどと
いった大きなブロック単位でしか行えない様になってい
る。また、PROMの様に書き込み電圧として12V等
の電圧が必要なものもある。しかしながら、後者のタイ
プのフラッシュROMは安価で入手が容易である。本実
施形態では、後者の様な特徴を持つフラッシュROMで
ありながらファイルシステムに対してハードディスク同
様のサービスを提供する。
【0032】<フラッシュROMドライバインタフェー
ス>一般的にブロックデバイスがファイルシステムへ提
供するサービスは以下の2つである。即ち、 (1)ロジカルセクタナンバーで指定したセクタからの
読み出し (2)ロジカルセクタナンバーで指定したセクタからの
書き込み である。そして、これに加えて (3)ロジカルセクタナンバーで指定したセクタの開放 の機能があれば、フラッシュROMのドライバは必要に
応じて不要なセクタを消去することが可能となるため、
効率良くフラッシュROMを消去することができる。
【0033】(3)に挙げた機能は、通常のDISKで
は必要のない機能だが、キャッシュを持ったシステムだ
と、積極的にキャッシュリストから削除できるので、結
果的にキャッシュのヒット率を上げる効果がある。ファ
イルシステムは、ファイルの消去等で不必要となったセ
クタを(3)の機能を用いてデバイスドライバへ通知す
る。フラッシュROMの消去は非常に時間がかかる処理
だが、CPU時間をほとんど消費しないためバックグラ
ンド処理で行うのが良い。
【0034】後述の<FATキャッシュ>においても説
明するが、本実施形態のキャッシュは、新しいデータ
(キャッシュ上に無いデータ)をアクセスする場合にキ
ャッシュリストの中で最も古いデータを廃棄する。不要
セクタをキャッシュリストの最後へ移動させる(即ち、
最も古くアクセスしたデータがキャッシュの後ろへ移動
する)ことで有効なデータがキャッシュから廃棄される
可能性が低くなる。特にコンパイラー等の中間ファイル
を多く生成するシステムでは、消去すべき中間ファイル
がキャッシュに残っている可能性が高く、上記のキャッ
シュ管理はヒット率の向上に非常に有効である。
【0035】図3は、デバイスドライバの管理ブロック
をC言語で記述した宣言文を示す図である。構造体のN
extは、次のデバイスへのリングポインタであり、メ
モリ中のデバイスを検索する目的で使用される。Dev
Nameは、デバイスの名前として使用される。Ini
tDevは、デバイスの初期化ルーチンへのポインタで
ある。ShutDownは、デバイスのシャットダウン
ルーチンへのポインタである。ReadSector
は、ロジカルセクタを指定して媒体の内容をバッファへ
転送するルーチンへのポインタである。WriteSe
ctorは、ロジカルセクタを指定してバッファの内容
を媒体へ転送する(書き込む)プログラムへのポインタ
である。ReleaseSectorはロジカルセクタ
を指定して、セクタを解放するルーチンへのポインタで
ある。
【0036】ファイルシステムは、この構造体を仲介し
てデバイスドライバを利用することになる。固定ディス
クやフロッピーディスクの場合、ReleaseSec
torには何も仕事をしないプログラムへのポインタが
代入されている。または、ディスクキャッシュのキャッ
シュリストから指定セクタを削除するポインタでもよ
い。
【0037】<フラッシュROM管理方法>フラッシュ
ROMに対するデータ書き込みは、上位層のファイルシ
ステムからセクタ単位で行われる。図4は、フラッシュ
ROM上のセクタ構造の例を示す図である。図4におい
て、151はイレースブロックである。このイレースブ
ロック151は消去の単位であり、フラッシュROMの
技術用語ではセクタと呼ばれるものである。しかしなが
ら、ファイルシステムが扱う単位である“論理セクタ”
と区別する為に、ここではイレースブロックと呼ぶこと
にする。
【0038】図4によれば、システム中に複数のフラッ
シュROM15が搭載されていて、各フラッシュROM
15は複数のイレースブロック151によって構成され
る。更に、各イレースブロック151は消去回数カウン
タ152と複数のセクタ153によって構成されている
様子をあらわしている。消去回数カウンタ152は、イ
レースブロック151を消去した回数をカウントする為
に用いる部分である。各セクタ153は、管理領域とデ
ータ領域とを有する。管理領域は、論理セクタ番号を表
すセクタ番号154と、セクタが有効利用されているか
どうかを表わす使用中フラグ155と、セクタとしての
利用が終了したことを表わす使用済みフラグ156とで
構成される。また、データ領域は、512バイトのデー
タ部157によって構成されている。
【0039】データ領域と管理領域は、隣り合って配置
する必要は無く、図5の様にまとめて管理することも考
えられる。図5は、管理領域用データと、データ領域と
を分離して格納する構成を表す図である。セクタ番号テ
ーブルには、複数のセクタ153の各セクタ番号154
が格納される。また、フラグテーブルには、使用中フラ
グ155、使用済みフラグ156が格納される。更に、
データテーブルには、データ部157の内容が格納され
る。以上のようなデータ構成をとることも可能である
が、少なくとも管理領域と、これに対応するデータ領域
とは同じイレースブロック内に納めるのが好ましい。
【0040】なお、システムは「使用中フラグ155」
より「使用済みフラグ156」の方を優先的に評価す
る。図6は、各フラグの状態に対応した意味を示す図で
ある。図中、FALSEは、消去後の状態と同じ値をと
る。使用中フラグ155がTRUEであっても、使用済
みフラグ156がFALSEであれば、当該セクタのデ
ータは無効である。
【0041】<フラッシュROMの論理セクタ書き換え
>フラッシュROMはPROM同様、データを書き換え
る為に、一度消去してから再書き込みをしなければなら
ない。しかも、消去の最少単位が大きく(例えば64k
バイト)消去時間が長い(例えば1秒)。そこで上位層
のファイルシステムが、特定のセクタを書き換えようと
した場合、消去済みの領域へ論理セクタを移動させるこ
とで、消去動作をせずに、見かけ上で論理セクタのデー
タ書き換えを実現する。
【0042】図7はセクタの書き換え手順を説明する図
である。同図を用いて、8番セクタ(論理セクタ番号が
8のセクタ)の書き換えを例にして詳しく説明する。図
7中、左側が書き換え前の状態であり((a)の状
態)、右側が書き換え後の状態((b)の状態)であ
る。また、図7において、管理領域中の数字は論理セク
タ番号を表し、(使用中)は使用中フラグ155がTR
UEで使用済みフラグ156がFALSEの状態、(使
用済)は使用中フラグ155と使用済みフラグ156が
共にTRUEの状態を示す。
【0043】“セクタ番号8(使用中)”の場所に、8
番セクタのデータが格納されている。今、8番セクタが
FATやファイルの一部として利用されていて、その内
容を変更したい場合に上位層から8番セクタの書き換え
要求が発生したとする。書き換え要求が発生すると、フ
ラッシュROMのデバイスドライバは、フラッシュRO
Mの未使用セクタを検索し、その場所を新たな8番セク
タの場所としてセクタ番号と更新後のデータを格納し、
使用中フラグをTRUEにする。次に、以前8番セクタ
だったセクタの使用済みフラグをTRUEにする。この
ような手順で8番セクタのデータの書き換えが実現され
る。
【0044】<ガベージコレクション>以上の様な方法
で論理セクタの書き換えを実行していくと、いずれフラ
ッシュROMのほとんどの領域を“使用済セクタ”にし
てしまうことになる。そこであるタイミングでフラッシ
ュROMを一旦消去して“使用済セクタ”を“未使用セ
クタ”へ戻す必要がある。基本的なガベージコレクショ
ンの動作を図8を用いて説明する。図8は、本実施形態
におけるフラッシュROMのガベージコレクション動作
を説明する図である。
【0045】図中(A)は、ガベージコレクション前の
状態である。説明を簡単にするために、本例のフラッシ
ュROMはセクタ6個分の大きさのイレースブロックで
構成されているものとする。イレースブロック(1)に
は使用済セクタが3個と使用中セクタが3個あり、消去
回数は5回である(消去回数カウンタ152の内容が5
である)。イレースブロック(2)には使用中セクタが
1個、使用済セクタが1個、未使用セクタが4個あり、
消去回数は9回である。この状態からガベージコレクシ
ョンを開始する。
【0046】先ず、調整対象イレースブロックを選定す
る。ここで調整対象イレースブロックは消去を行う対象
としてイレースブロックとなる。整理対象イレースブロ
ックの選定は、使用済セクタをたくさん含むイレースブ
ロックから優先的に選択すると整理効率が良い。しかし
使用済セクタを含まない場合を別として消去回数の少な
いイレースブロックを優先的に整理対象とする方法を取
ればチップ内のイレースブロックを平均的に使用するこ
とができ、書き換え耐久を分散させることができる。選
択手順の詳細についてはフローチャートを用いて後述す
る。
【0047】今、イレースブロック(1)が整理対象と
して選定されたとする。次に、整理対照であるイレース
ブロック(1)の使用中セクタ(使用中フラグがTRU
Eで、使用済みフラグがFALSEのセクタ)を他のイ
レースブロックに移動させる。使用中セクタの移動手順
は、セクタの書き換え時と同様に、他のイレースブロッ
ク中の未使用セクタを検索して、使用中セクタ内のデー
タ領域と管理領域の内容をコピーし、移動元の使用中セ
クタの使用済みフラグをTRUEにする。なお、未使用
セクタが無い場合の処理は、後で述べる。
【0048】図8の(B)は、イレースブロック(1)
の使用中セクタをすべてイレースブロック(2)へ移動
させた状態である。この結果、イレースブロック(1)
には、使用済セクタしか存在しないことになる。
【0049】次に、使用済セクタだけで構成されている
イレースブロックを検索する。ここで、検索を行うの
は、通常の書き換え動作の際に偶然イレースブロック内
のセクタが全て使用済セクタとなっている場合があるか
らである。続いて検索されたイレースブロックに対して
消去を行う。消去には時間がかかるが、複数のイレース
ブロックを同時に消去できるため、できるだけ一度に複
数のイレースブロックを消去するのが良い。消去が終了
すると消去回数カウンタへ消去前の値+1したものを書
く。これでガベージコレクション完了である。
【0050】図8の(C)がガベージコレクション終了
時の状態である。イレースブロックをできるだけ同時に
消去した方が効率が良いため、使用済セクタと未使用セ
クタがある限りたくさんのイレースブロックを同時に調
整すると良い。極端に消去回数カウンタの値が他のイレ
ースブロックより少ないものがあれば、使用済セクタを
含んでいなくても整理さえすれば、書き換え耐久の分散
を図れる。また、一度整理するとデータの配列が変わる
為、書き換え耐久分散のきっかけとなる。
【0051】<未使用セクタがない場合>次にシステム
中に使用済セクタが有るにもかかわらず未使用セクタが
全く無くなってしまった場合のガベージコレクション手
順を図9を使って説明する。図9は、未使用セクタが存
在しない場合のガベージコレクションの動作を説明する
図である。
【0052】先ず、上述した基本的なガベージコレクシ
ョン手順に従い、イレースブロック(1)を整理対象と
して選択する。次にイレースブロック(1)の使用中セ
クタを移動する為の未使用セクタを検索する。未使用セ
クタがある場合は、上述の基本的ガベージコレクション
と同様にセクタの移動を行う。
【0053】一方、検索の結果、未使用セクタが無けれ
ば、DRAM14のヒープエリアからデータの退避に必
要な大きさのメモリブロックをアロケーションする。そ
して調整対象イレースブロック内の使用中セクタをDR
AM14へコピーする。この場合は、フラッシュROM
の別の領域へセクタを移動する場合と違い、元のセクタ
の使用済フラグをTRUEにしない。なぜならこの時点
で電子カメラの電池7が外れるなどの事故が起こった場
合に、DRAM内のデータが消滅してしまい、データの
修復ができなくなるからである。図9の(B)は、DR
AM14の領域へコピーされたセクタを表現している。
調整対象のイレースブロックの使用中セクタをすべて退
避出来たら、その調整対象のイレースブロックを選択し
て消去する(図9の(C)参照)。消去が終わった後は
未使用セクタがたくさん出来ているはずである。よっ
て、次に未使用領域を検索してDRAM14へ待避して
あったデータを復元する。図9の(D)は、ガベージコ
レクションが完了した状態を示している。
【0054】上記の手順でガベージコレクションをした
場合でも、イレースブロックを消去してからデータを復
元するまでの間に電子カメラの電池7が外れるなどの事
故が起こったらデータの修復をすることはできない。つ
まり、セクタのデータをDRAM14に退避する方法は
できる限り取らない方が、よりシステムの安全性を保つ
ことができる。一回、DRAMを使ってガベージコレク
ションを行えば未使用セクタができる。したがって、1
度DRAM14を使ったガベージコレクションを行い、
その後に通常のガベージコレクションを行えば、消去時
間は余分にかかるが安全性を高めることができる。逆に
DRAM14への退避を積極的に行う(例えばヒープ領
域がある限り退避する)と、同時に整理できるイレース
ブロックが増える為効率を上げることができる。従っ
て、安全性と効率のどちらを優先するかを指定できるよ
うに構成してもよい。またシステムの電源が電池7より
供給されている場合は安全性優先、ACアダプタから供
給されている場合は効率優先に自動的に切り替わるよう
に構成してもよい。本処理については図36を参照して
後述する。
【0055】<イレースブロックを余分に1つ用意>残
り容量が極端に少なくなるとガベージコレクションが多
発してシステムのパフォーマンスが極端に落ちる。総論
理セクタ分を格納できるイレースブロック数よりも1つ
だけ余分にイレースブロックを使用すれば、そのような
事態を避けることが可能である。仮に、1イレースブロ
ックあたり127セクタ格納できるとして、全てのセク
タが使用中となった場合、同じ1セクタを10回書換え
る場合を例にすると、余分イレースブロックがなけれ
ば、10回の消去と1270セクタの書き込みが発生す
る。しかし、イレースブロックを余分に1つ用意してお
けば、10セクタの書き込みしか発生しない。
【0056】よって、本実施形態では、イレースブロッ
クの数はチップの構成で決まるので、最低1つのイレー
スブロックが余る様な総論理セクタ数を設計する。
【0057】<ガベージコレクションのタイミング>ガ
ベージコレクションは消去動作を伴うために非常に時間
がかかる。そのためガベージコレクションをいつ行うか
によってカメラの使い勝ってを左右することとなる。例
えば、セルフタイマなどの数秒間撮影しなくても良い時
にガベージコレクションを行えばユーザがストレスを感
じることがない。
【0058】<RAM上の記憶場所管理>フラッシュR
OM15上ではセクタ番号と実際の記憶場所が関連して
いないために特定のセクタを読み書きする為にフラッシ
ュROM15を検索しなければならない。そこでシステ
ムがリブートする際に、フラッシュROM15における
各セクタの格納アドレスを示す記憶場所管理テーブルを
DRAM114上に作成しておくと、フラッシュROM
15に対して高速なデータの読み書きを実現できる。一
度、記憶場所管理テーブルを作成すれば、フラッシュR
OM15に対するセクタの書き込みやガベージコレクシ
ョンによって記憶場所に変更が生じた場合に限って記憶
場所管理テーブルの記憶位置を更新するだけで常に正し
い記憶場所管理テーブルを維持することが可能である。
【0059】図10は、DRAM上に作成された記憶場
所管理テーブルを説明する図である。図中、右側にRA
M上の作成した記憶場所管理テーブル140を示した。
0セクタと4セクタは記憶場所不在を意味する値(NUL
L)が入っている。これらは、フォーマット後そのセク
タに対する書き込みが全く無かったか、もしくは、ファ
イルシステムが開放したセクタである。
【0060】ファイルシステムがファイルの消去などで
不要となったセクタを解放する命令をドライバに出した
場合のデバイスドライバの動作は次のようになる。ま
ず、DRAM14上の記憶場所管理テーブル140の指
定されたセクタのポインタを参照してフラッシュROM
15上の現在使用中の該当するセクタを探し出す。そし
て、当該セクタの使用済フラグをTRUEにし、DRA
M14上の記憶場所管理テーブル140の指定セクタの
ポインタへ不在値(NULL)を代入する。
【0061】なお、ガベージコレクションの為にセクタ
の内容をDRAM14へ待避している場合は、記憶場所
としてDRAMへのポインタが代入されている。また、
同一論理セクタに対する同時操作を禁止する為のロック
変数もテーブルに納めることが望ましい。
【0062】<MS−DOSのファイル復元>本電子カ
メラとパーソナルコンピュータ22で、記憶媒体上のデ
ータ交換が出来ると都合が良い。本実施形態で説明した
フラッシュROM管理方式を使用して、現在パーソナル
コンピュータで普及しているMS−DOS(商標)と互
換性があるファイルシステムを実装することができる。
MS−DOSには一度消去したファイルを復元するユー
ティリティが付属している。ところが、本実施形態では
フラッシュROMの消去効率を向上させる為に、消去し
たセクタのデータ部を失ってしまう様な構成となってい
る。カメラで消去した媒体をパーソナルコンピュータで
復元する事が原理的にできない構成になっているのであ
る。
【0063】パーソナルコンピュータでのファイル復元
機能を禁止できれば、このような事故を防ぐことができ
る。本実施形態では、MS−DOSがファイル復元の時
に使用するデータを破壊することでファイル復元機能を
禁止する。これをいかに説明する。
【0064】MS−DOS(商標)で、ファイルを消去
するとディレクトリに空きスロットができる。ディレク
トリにはファイル名/タイムスタンプ/最初のクラスタ
などの情報が格納されている。図45はディレクトリス
ロットの特徴を表す図である。ディレクトリスロットの
最後には、リストの最後であることを示すEndOfDirが格
納されている。
【0065】今、File Bを削除すると、ファイル名の先
頭が削除を表すシンボルに置き換えられ、FATのクラ
スタチェーンが消去される。この様子を図46に示す。
【0066】アンデリートプログラムは、2番目のスロ
ットに残った情報を元に、ファイルの復元を試みる。逆
にこの情報がなければ、ファイルの復元を防止できる。
【0067】図47は本実施形態のDOS互換ファイル
システムでファイルを消去した後の状態を表している。
本実施形態では、ディレクトリエントリテーブルの最後
に格納されているファイルを消去したいファイルのエン
トリに上書きし、ディレクトリエントリテーブルの最後
のファイルだった部分にEndOfDirを上書きするように構
成する。こうすることにより、ファイル復元機能による
ファイルの復元を防止できる。
【0068】なお、ファイルの消去時にはMS−DOS
と同様にセクタのデータをそのまま残しておき(セクタ
の開放を行わない)、ガベージコレクション時にまとめ
てFATとデータの関係を参照してしながら不要部分を
消去する方法もある。
【0069】<バックグランドで前処理>あるフラッシ
ュROMでは、消去前のデータが“0”になっている方
が高速に消去処理できる。フラッシュROMの消去完了
の確認は、データ書き込み時と同様にデータポーリング
によって行われる。従って、このようなフラッシュRO
Mを使う場合は、バックグランド処理で“使用済”とな
ったセクタのデータを0に書き換える「前処理」を行う
ことで性能を向上させることができる。最も低いプライ
オリティのタスクとして実行するようにしておけば、ス
ループットの低下にはつながらない。
【0070】この前処理バックグラウンドでの“前処理
済セクタ”管理の為にフラグを用意しておけば前処理の
効率を上げることができる。
【0071】そのために、セクタのとりうる状態とし
て、「未使用」「使用中」「使用済」に加えて「前処理
済」の4つの状態を表示できる管理フラグをフラッシュ
ROMのセクタ内部へ用意すると効率が良い。
【0072】図38は、本実施形態における消去処理速
度向上のための前処理の制御手順を表すフローチャート
である。同図において、ステップS2501にて、使用
済でかつ前処理の済んでいないセクタを抽出する。これ
は、セクタ内の管理フラグが「使用済」となっていて、
かつ「前処理済」となっていないセクタを抽出すること
で実現できる。ステップS2502において、抽出され
たセクタに対してデータ「0」を上書きを開始する。ス
テップS2503では当該セクタについて前処理を終了
したか否かを判断する。フラッシュROMへの書込みは
1バイト単位であるので、1セクタ分のバイト数の書込
みが必要となる。当該セクタに対する前処理が終了して
いなければステップS2504へ進み、他のタスクへ制
御を移す。
【0073】上述したように本処理は最もプライオリテ
ィの低いタスクで行われるので、CPU5がアイドル状
態となったときに再び本処理が実行される。この場合処
理はステップS2503へ戻る。この時点で、前回の書
込みが終了していなければそのまま他のタスクへ処理を
移行する。
【0074】以上のようにして当該セクタの全バイトに
対して「0」の書込みを終えると、ステップS2503
からステップS2505へ進み、当該セクタの管理フラ
グを、「前処理済」を示す状態にセットする。そして、
引き続き、他のセクタについて前処理を行うために、ス
テップS2501へ戻る。
【0075】<FATキャッシュ>本システムでは、書
き込み発生の度に記憶場所を変更し、その度に「未使用
セクタ」が発生する。そこで、使用頻度の多い部分を特
に優先的にバッファリングするキャッシュが有ればトー
タルの書き込み頻度が激減する事が予想される。キャッ
シュとして用意するメモリは多ければ多いほど良いが、
システムのメモリには限界がある。
【0076】本来使用頻度の高いセクタのデータは、キ
ャッシュ中に存在する確率も高いが、使用頻度の低いセ
クタを大量に読み書きした場合、当然キャッシュから吐
き出されることになる。
【0077】そこで、ファイルシステムが管理する管理
領域を優先的にキャッシングする様に構成すれば、スル
ープットの向上を期待できる。なぜならファイルシステ
ムの管理領域は頻繁に更新されているからである。
【0078】パーソナルコンピュータで普及しているM
S−DOSのFATシステムの場合、720kや1.4
Mといったフォーマット形式では1クラスタが1セクタ
で構成されている為、シーケンシャルにファイルを読む
場合でも2回に1回はFATを読まなければならない。
ファイルを書く場合は、さらにたくさんのFATアクセ
スが発生する。このため、システム中にたくさんのファ
イルがオープンされるとキャッシュのヒット率が落ちて
しまう。
【0079】アプリケーションソフトウェアにもよる
が、FATシステムにおいてFATのみを対処にしたキ
ャッシュは、DISK全体を対象にしたキャッシュに対
して1/2のメモリで同等のヒット率を確保できる。図
11はキャッシュソフトウエアの階層的な位置付けを表
す図である。キャッシュのソフトウェアは図11の様に
ファイルシステムとフラッシュROMの中間的な場所と
なる。
【0080】図12はキャッシュの主記憶上のデータ構
造を表わす図である。片方向線形リスト構造でバッファ
全体を管理している。検索方向順にデータが古くなって
いる。論理セクタ番号が12,11,6,5の順番でア
クセスすれば、図12に示されるような順番となる。ま
た、各セクタには、変更フラグが設けられており、キャ
ッシュ上でデータの更新があった場合、変更フラグがF
ALSEからTRUEに変化する。このようなFATキ
ャッシュの読み出し手順、及び書き込み手順を図13、
14を参照して説明する。図13はFATキャッシュの
読み出し手順を表すフローチャートである。図14はF
ATキャッシュの書込み手順を表すフローチャートであ
る。
【0081】図13において、ステップS1501でN
セクタの読み出しを開始する。ステップS1502でN
セクタがFATかどうかを判断する。FATでなけれ
ば、ステップS1509でフラッシュROM15からデ
ータを読み出す。
【0082】一方、ステップS1502でNセクタがF
ATならステップS1503へ進み、キャッシュリスト
を検索する。ここでは、図12で説明した片方向線形リ
ストを検索することになる。キャッシュ中にNセクタが
存在すればステップS1507へ進み、Nセクタのバッ
ファからデータを読み出す。
【0083】また、ステップS1503でNセクタがキ
ャッシュリスト中に存在しなかった場合は、ステップS
1504へ分岐し、最も長くアクセスされていないセク
タのデータ(図12ではセクタ番号12のデータ)の吐
き出しを行う。まず、ステップS1504では、キャッ
シュリストの最後の項の変更フラグを判断する。もし変
更フラグがTRUEなら、ステップS1505へ進み、
変更内容をフラッシュROM15へ書き込む。変更が無
い(変更フラグがFALSEの場合)なら、そのままス
テップS1506へ制御を移す。読み出し手順の中で書
き込みを行うのは奇妙に思うかもしれないが、バッファ
がキャッシュの吐き出しが起こるまで極力書き込み動作
を行わない方が効率が良い。
【0084】ステップS1506でフラッシュROM1
5からリスト最後のバッファへNセクタの内容を読み出
す。ステップS1507でNセクタのバッファからデー
タを読み出す。ステップS1508でNセクタのバッフ
ァをキャッシュリストの先頭へ移動させる。これは、図
12において、各セクタが有する「次のバッファー」
(次のバッファーを示すアドレス)の値を変更すること
で達成される。FATキャッシュへのアクセスが行われ
る度にステップS1508の動作が繰り返されること
で、自然にアクセスされないバッファがリストの先頭か
ら最後に向かってシフトしていく。よって、ステップS
1504でリスト最後のバッファを選ぶのは、最も古い
バッファを吐き出す為である。
【0085】次に図14を参照して書込み手順を説明す
る。
【0086】ステップS1600でNセクタの書き込み
を開始する。ステップS1601では、NセクタがFA
Tかどうかを判断する。FATでなければ、ステップS
1608へ進み、フラッシュROM15へのデータの書
き込みを実行する。
【0087】一方、ステップS1601でNセクタがF
ATならば、ステップS1602へ進み、キャッシュリ
ストを検索する。キャッシュ中にNセクタが存在すれば
ステップS1606へ進み、Nセクタのバッファへデー
タの書き込みを実行する。
【0088】また、ステップS1602でNセクタがキ
ャッシュリスト中に存在しなかった場合は、ステップS
1603へ分岐し、バッファから最も長くアクセスされ
ていないセクタの吐き出しを行うとともに、Nセクタを
キャッシュに登録する。まず、ステップS1603でキ
ャッシュリストの最後の項の変更フラグを判断する。も
し変更フラグがTRUEなら、ステップS1604で変
更内容をフラッシュROMへ書き込み、ステップS16
05へ進む。また、変更が無いなら(変更フラグがFA
LSEなら)そのままステップS1605へ制御を移
す。ステップS1605では、キャッシュリストの最後
の項をNセクタとする。その後、ステップS1606
で、Nセクタのバッファへデータの書込みを実行する。
【0089】その後、ステップS1607でN、セクタ
のバッファをキャッシュリストの先頭へ移動させる。書
き込み手順の中でフラッシュROMへの書き込みを行わ
ないのは奇妙に思うかもしれないが、キャッシュの吐き
出しが起こるまで極力書き込み動作を行わない方が効率
が良い。
【0090】また、ステップS1501及びステップS
1601における、FATの判断であるが、ICカード
等の完全に上位層(ファイルシステム)の情報を共有で
きないシステムでも、書き込みデータの内容を解析する
ことでFAT領域の場所を特定できる。なぜならば、論
理セクタOに相当する部分にFATの位置等の情報か格
納されていることが決まっているからである。
【0091】<フラッシュROMへの1バイトの書き込
み>フラッシュROM15に対する全ての(管理領域を
含む)読み書きは、最終的に1バイトの読み書き命令に
よって実行される。フラッシュROM15の書き込みに
は、通常のPROM同様の時間がかかる。1バイトの書
き込みが終了するまでは、同じチップへの書き込みはで
きない。書き込み終了信号として信号線が用意されてい
るチップと特別な信号が用意されていないチップがあ
る。後者の場合は、データポーリングと言う手法で書き
込み終了を確認しなければならない。データポーリング
とは、ベリファイに非常によく似た方法で、書き込みデ
ータと読み出しデータが一致するまで待つビジー制御方
法である。
【0092】信号線によって書き込み終了を知ることが
出来る場合は、CPU5への割り込みと併用して書き込
み待ち中のCPUタイムを別のタスクへ割り当てること
ができる。
【0093】上述のように、信号線が無いチップの場合
は、データポーリングを行なわなければならない。デー
タ書き込みの効率をあげる為にはいくつものチップに対
してパイプライン的に書き込みを行い、データポーリン
グ時間のロスを押さえなければならない。そのため、1
バイトの書き込みが完了する前に次の動作へ制御を移す
必要がある。新たな読み書きを行う前に以前の書き込み
が完了しているかどうかを確認するのが良い。図15
は、その様子をC言語で表現したものである。
【0094】図15の1行目は、データ書き込みを行う
関数の入り口である。最初の引数は最後に書き込んだア
ドレスとデータを保存するための構造体へのポインタ、
第2の引数は書き込むアドレス、第2の引数は書き込む
データである。
【0095】3行目では、最後に書き込んだアドレスを
参照してチップに書かれたデータと最後に書いたデータ
を比較して、両者が一致するまでループを実行する。こ
れがデータポーリングである。前回の書き込みが完了す
るとこのループから抜け出す。
【0096】4行目で新しいアドレスへDataを書き
込む。5行目と6行目で、今回書いたアドレスとデータ
を保存する。この情報は、次のデータポーリングで利用
される。
【0097】リスト7行目のRotateRdyQueueは、自タス
クの次に実行されるべき同一プライオリティの実行可能
状態のタスクへCPUを譲るオペレーティングシステム
のシステムコールである。
【0098】9行目は読み出し関数の入り口である。第
1の引数はアドレスとデータを保存するための構造体へ
のポインタ、第2の引数は読み出すアドレスである。こ
の関数は上位のプログラムに対して第2の引数で指定さ
れたアドレスに格納されたデータを返す。
【0099】11行目では、もし読み出そうとしたアド
レスが最後に書き込んだアドレスなら戻す値は最後に書
き込んだデータなので構造体の中に保存された情報を返
す。12行目は3行目と同じようなデータポーリングで
ある。データポーリングに成功しないと同じチップの別
のアドレスを読むことができない。データポーリングが
終わって13行目で指定したアドレスの内容を戻してい
る。
【0100】1チップへの書き込みを以上の様な構成に
しておけば、チップ数と書き込みタスクを増やすだけで
確実に見かけ上の書き込み速度を向上させることができ
る。また、全体のスループットを上げる為にわざとチッ
プ数分のセクタバッファを用意(2チップなら2セク
タ)して書き込む内容がバッファに溜まるまで処理しな
いようにすると効果がある。
【0101】図15のプログラムの特徴的なところは、
データポーリングをデータ書き込み直後に行うのではな
く、次の書き込みの前に行うことである。そのために前
回書いたアドレスとデータを保存しておくRAM領域を
チップごとに確保し構造体「struct DEV」として格納し
ているのである。
【0102】図39は、本実施形態におけるフラッシュ
ROMへの1バイトデータの書込み手順を表すフローチ
ャートである。本フローチャートは、1つのフラッシュ
ROMチップへの書込みの制御手順を示している。ステ
ップS2601では、前回の書込み処理が完了したか否
かを判断する。前回の書込み処理が終了していなければ
ステップS2604へ進み、そのまま他のタスクへ制御
を移す。
【0103】一方、前回の書込み処理が終了していれ
ば、次の書込みデータを準備し、これをDRAM14へ
保存する。上述のステップS2601における書込み終
了の判断は、フラッシュROMに書き込まれたデータ
と、このステップS2602で保持されたデータとの比
較によって行われる。
【0104】続いて、ステップS2603において、デ
ータの書込みを開始する。以上のような処理によれば、
複数のフラッシュROMチップに対して、複数のタスク
で書き込みを行うような場合に、いわゆるラウンドロビ
ン方式を適用した書き込み処理が可能となり、複数のR
OMチップに対して効率良くデータの書き込みが行え
る。なお、マルチタスクの管理プログラムは、上述のR
OM13に格納されている。組み込みようのリアルタイ
ムOSとしては、VxWorks(商標)やpSOS(商標)等が
市販されており、ROM13にこれらのようなリアルタ
イムOSが格納されている。
【0105】<フラッシュROM書き込み電源の共有化
>データの書き込みや消去の際にPROM同様に12V
等の特別な書き込み電圧を必要とするチップや、書き込
み電圧を与えることで書き込みが高速になるチップがあ
る。この様なチップを使用する場合に専用のDC/DC
コンバータ等の電圧発生部を設けると電子カメラのコス
トアップにつながる。ところが、従来よりカメラにはス
トロボの充電や、機構部分やCCDの駆動等、特別な電
圧が必要な部分がありDC/DCコンバータ等を搭載し
ている。そこで、フラッシュROMの書き込み電圧とス
トロボ充電やメカ駆動を時分割多重で行うことで、少容
量のDC/DCコンバータでシステムを構築でき、シス
テムのコストを押さえることができる。
【0106】図16は、DC/DCコンバータの出力容
量を越えない様に電源を管理するプログラムをC言語で
表現したものである。Line1〜6が1ステップのズ
ームアップ関数で、Line7〜13がフラッシュRO
Mへ1セクタ書き込む書き込み関数である。ズームアッ
プ関数はLine3でDC/DCコンバータの資源管理
用のセマフォ“SemDCDC”を獲得して、モータを
1ステップ動かす関数をLine4で呼び出す。モータ
駆動が終わるとDC/DCコンバータの資源管理用のセ
マフォ“SemDCDC”を開放する。セマフォはマル
チタスクのオペレーティングシステムで資源を管理する
為の一般的な方法であり、多くのオペレーティングシス
テムがシステムコールとして用意している。
【0107】即ち、Line3で既に“SemDCD
C”が他のタスクによって使用されていたとすると、他
のタスクがセマフォ“SemDCDC”を開放するまで
ズームアップをしようとしたタスクの実行が保留され
る。
【0108】書き込み関数はLine9でセマフォ“S
emDCDC”を獲得し、フラッシュROMへ1セクタ
のデータを書き込む。Line11でデータポーリング
を行い最後の書き込みが終了したことを確認したら、L
ine12でセマフォ“SemDCDC”を開放する。
このようにプログラムを構成すれば、ズームアップとフ
ラッシュROMの書き込みを同時に行うことは無くな
る。ズームは1ステップ単位であり、書き込みはセクタ
単位なので非常に短い保留時間の後に必ず電源を獲得で
きる。
【0109】図16について更に説明すると、図16の
Line1はズームアップする関数の入り口である。本
関数には引数はない。Line3で電源の使用権利とし
て宣言したSemDCDCの権利を一つ獲得する。この時、使
用権利が1つもなければこの関数を呼び出したタスクの
実行は保留される。電源の使用権利を別のタスクが解放
すればZoomUpを呼び出したタスクが再び実行可能状態に
戻る。そして、Line4のモーターを動かす関数を呼
び出すことができる。そして、Line5で、電源使用
権利を返却してこの関数の仕事は終了する。Line7
は1セクタのデータをEEPROMに書き込む関数の入
り口であり、Line9de電源利用権利を獲得してL
ine12で返却している。
【0110】図40は、上述した電源の共有手順を説明
するためのフローチャートである。同図において、ステ
ップS1701で、電源コントローラ9によるDC/D
Cコンバータ8の出力電力の供給が解放されたか否かを
判断する。ステップS1702では、電源確保のための
指示の内容を解析し、この指示結果に従って、ステップ
S1703、1705、1707、1709のいずれか
に分岐する。
【0111】指示の内容が、CCD駆動電力の供給であ
れば、ステップS1703へ進み、CCD2に対してC
CD駆動のための電力を供給する。そして、ステップS
1704にて、CCD駆動の終了(即ち撮影動作の終
了)を検出すると、ステップS1711へ進み、電源の
解放を行う。また、ストロボの充電要求であれば、ステ
ップS1705へ進み、電源コントローラ9に対してス
トロボ21に対する充電電力を提供させる。そして、ス
テップS1706でストロボの充電を完了したら、ステ
ップS1711へ進み、電源の解放を行う。なお、充電
の電力供給は、所定時間の充電を行う毎に他の電源供給
のために電源を解放する。即ち、ストロボ21への充電
を管理するプログラムは別個に所定のタスクに存在し、
充電の完了はそのタスクによって管理される。
【0112】指示の内容が、ズーム機構の駆動であれ
ば、ステップS1707へ進み、ズーム機構の駆動系
(不図示)へ電力供給を行う。そしてステップS170
8で、1ステップのズーム動作を終えたらステップS1
711へ進み、電源を解放する。更に、指示の内容がフ
ラッシュROMへの書込みであれば、ステップS170
9へ進み、フラッシュROM15への書込み電力を供給
する。1セクタ分の書込みが終えたら、ステップS17
10からステップS1711へ進み、電源を解放する。
【0113】なお、ステップS1704、1706、1
708、1710において、各動作の終了を待つが、こ
の待ちループにおいて、他のタスクへの制御が移り、マ
ルチタスク処理が遂行される。この管理処理は、各タス
クから随時起動が可能であり、複数のタスクで同時に起
動される可能性もある為、ステップS1701で電源解
放のチェックを行っている。
【0114】以上の図40のフローチャートによれば時
分割で電源を利用することが可能となる。しかしなが
ら、すべてのシステム(CCD/ストロボ/ズーム/フ
ラッシュROM)が依存しあった1つのプログラムであ
る。このようなソフトウエアを開発すると、開発/デバ
ッグ/メンテナンスのコストが大きくなり、拡張性や柔
軟性を保つのが難しくなる。
【0115】そこで、電源を1つの資源に見立ててOS
の提供する資源管理機能を用いることで開発効率を向上
させることができる。そこで上述のセマフォによる資源
管理を行う。即ち、CCDの駆動部、ストロボの駆動
部、ズームの駆動部、フラッシュROMの駆動部のそれ
ぞれの制御プログラムが、電源という資源(セマフォ)
を獲得、解放することで、時分割された電源の割当てが
行える。
【0116】図48は本実施形態による電源の時分割利
用を説明する図である。同図に示されるように、あるタ
スクA(例えばCCD)によって電源要求が発生したと
き、電源セマフォが解放された状態にあれば、そのセマ
フォを獲得して、電源を占有する(ステップS2001
〜S2003)。続いてステップS2004において、
当該電源よりの電力供給を得て所定の処理を行うと、ス
テップS2005へ進んでセマフォを解放する。
【0117】一方タスクAより遅れて電源獲得を要求し
たタスクBでは、ステップS2011における電源要求
ではセマフォを獲得できず、ステップS2012によ
り、セマフォの解放待ちとなる。そして、タスクAより
セマフォが解放されると、このセマフォをタスクBが獲
得して、電源を占有する(ステップS2013)。その
後タスクBで所定の処理を実行し(ステップS201
4)、電源を解放する(ステップS2015)。
【0118】以上のようなセマフォによる電源資源の管
理により、電源の時分割利用が可能となる。
【0119】なお、図48によれば、電源資源の利用権
利を示すセマフォが一つしかないが、複数個のセマフォ
が存在するようにしても良いことは言うまでもない。
【0120】<実施形態の電子カメラの動作説明>図1
7は、本実施形態のリブートからサービスの開始までの
動作手順を表わすフローチャートである。ステップS1
01でシステムがリブートすると、ステップS102で
フラッシュROM15の管理領域をスキャンし、DRA
M14上に記憶場所管理テーブル140を作成する。ま
た、この処理と並行して、DRAM14上の未使用セク
タカウンタ、使用済セクタカウンタ、使用中セクタカウ
ンタへ、それぞれの状態に対応するセクタがいくつ有る
かを数え、セットする。このカウンタは、後にフラッシ
ュROM15に対して操作を行ったときに更新され、記
憶効率を判断するのに用いられる。その後、ステップS
103へ進み、各種のサービスを開始する。
【0121】図18は、指定セクタの読み出しサービス
の手順を表わすフローチャートである。まず、ステップ
S201でNセクタの読み出しを開始する。ステップS
202では、Nセクタをロックする。セクタのロックは
ロック変数を使って行う。このロック変数は、記憶場所
管理テーブル140で各セクタの記憶場所とともに管理
される。ステップS202では、セクタが既に他のタス
クによってロックされている場合、他のタスクによって
アンロックされるのを待ち、他のタスクによってアンロ
ックされた後で当該セクタのロックを行う。ロックした
セクタはステップS206でアンロックするまでの間、
自タスクによって占有することが出来る。
【0122】ステップS202で論理セクタをロックす
ると、ステップS203で記憶場所管理テーブルを参照
して、当該セクタに有効なデータ記憶されているかどう
かを確認する。有効なデータが記録されて無い場合は、
ステップS204へ分岐する。ステップS204では、
ダミーのデータ(例えば全部0など)をセクタの内容と
して読み出す。ステップS203で有効なデータが格納
されていると判断された場合は、ステップS205へ分
岐する。ステップS205では記録場所管理テーブルの
値を元にフラッシュROM(または主記憶)からデータ
を読み出す。
【0123】ここで、ガベージコレクションを実行中で
Nセクタが主記憶(DRAM14)へ退避されていた場
合は、記憶場所管理テーブルのポインタは主記憶をポイ
ンティングとしている。また、図中点線で囲んだ部分は
Nセクタを占有している期間である。この様なロック機
構によって1つのセクタ操作の安全性を保証している
為、ガベージコレクションの途中でも操作中でないセク
タを自由に読み出すことが可能となっている。
【0124】図19は論理セクタの書き込みサービスの
手順を表わすフローチャートである。ステップS301
でNセクタの書き込みを開始する。ステップS302で
ステップS202と同様に、論理セクタのロックを行
う。
【0125】次に、ステップS303で、記憶場所管理
テーブルを検索して、Nセクタに有効なデータが記録さ
れているかどうかを判断する。有効なデータが記録され
ていればステップS304へ、記録されてないならばス
テップS305へそれぞれ分岐する。ステップS304
では、それまで有効なデータとして記録されていたフラ
ッシュROM(または主記憶)のデータを破棄する。ス
テップS304におけるデータ破棄の処理は、図21の
フローチャートを用いて詳しく説明を加える。ステップ
S304の後ステップS305へ制御が移る。
【0126】ステップS305では、フラッシュROM
15においてNセクタを書き込むための記憶領域を獲得
する。ステップS305における記憶領域の獲得手順は
図23を用いて詳しく説明を加える。ステップS305
で正常に記憶領域の獲得に成功すれば、ステップS30
8へ制御を移す。ステップS308では獲得したフラッ
シュROM15の領域へNセクタのデータを書き込む。
【0127】一方、ステップS305でフラッシュRO
Mに記憶場所が無い場合、即ち記憶領域の獲得に失敗し
た場合はステップS306へ分岐する。ステップS30
6はデータの退避用に主記憶を獲得する。主記憶の領域
確保はオペレーティングシステムが提供するメモリ管理
機能によって行う。これはC言語でalloc関数に相
当する機能である。そして確保した領域を片方向線形リ
スト構造によって管理する。
【0128】図20は主記憶上に獲得した退避データリ
ストの様子である。(a)は退避データリストにデータ
が無い状態であり、リストには、END_OF_LIST が代入さ
れている。(b)は退避データリストに、セクタ番号
3,20,221の各セクタの内容が退避されている状
態である。
【0129】ステップS309で、記録場所管理テーブ
ルを更新する。ここで、記録したフラッシュROM(ま
たは主記憶)へのポインタが代入される。ステップS3
10で論理セクタのアンロックを行う。図中点線で囲ま
れた期間その論理セクタを占有できる。ステップS31
1で記憶効率の評価を行う。記憶効率の評価手順につい
ては、図21のフローチャートを用いて詳しく説明を加
える。記憶効率の評価の結果、記憶効率が悪化した場合
は、ステップS312へ制御を移す。ステップS312
では上述したガベージコレクションを行う。ガベージコ
レクションについては、図24のフローチャートを参照
して詳しく説明を加える。ステップS313でNセクタ
の書き込みが終了してメインのルーチンへ復帰する。
【0130】なお、記憶場所管理テーブルに納められる
のは、記憶場所のポインタ(バス空間上のアドレス)で
ある。図20の(b)の主記憶に待避されたデータの
「次のデータへのポインタ」の次のフィールド(図中で
はすぐ下に示されている)からは、図10の左側にある
フラッシュROM上のデータ構造と互換性がある。記憶
場所管理テーブルに納められるのはこの互換部分へのポ
インタである。このように構成することにより、データ
の読み出しプログラム側でフラッシュROMと主記憶を
単一のアルゴリズムで扱うことが可能となる。
【0131】次に、指定されたセクタの記憶を破棄する
手順(上述のステップS304)を説明する。図21
は、記憶を破棄する手順を表わすフローチャートであ
る。
【0132】ステップS401で指定領域の記憶破棄を
開始する。ステップS402では、指定されたセクタを
記憶する領域が主記憶上にあるかどうかを判断する。主
記憶上にあるならステップS405へ分岐する。ステッ
プS405で待避セクタリスト(本例では、図20で示
した片方向線形リスト)から指定領域を削除する。
【0133】片方向線形リストからの指定領域の削除手
順は、まずリストの先頭から検索方向順にリストをたど
り、ポインタが自分をポインティングしている項を検出
する。そして、この検出された項のポインタに現在自分
がポインティングとしている値を代入することで実現す
る。そして、ステップS406で、リストから削除した
主記憶領域をオペレーティングシステムへ返却する。オ
ペレーティングシステムへの記憶領域の返却はC言語の
free関数に相当する機能である。
【0134】一方、ステップS402で指定された領域
が主記憶上でない(すなわちフラッシュROM上)なら
ステップS403へ分岐する。ステップS403では、
指定されたフラッシュROM上のセクタの管理フラグを
“使用済”へ変更する。これは、使用済みフラグをTR
UEにセットすることで達成される。ステップS404
では主記憶上の未使用セクタカウンタの値を1つ減少さ
せる。ステップS407で復帰する。
【0135】次に、記憶効率の評価手順(ステップS3
11)について説明する。図22は、記憶効率の評価手
順を表わすフローチャートである。
【0136】ステップS501で記憶効率の評価を開始
する。ステップS502では、主記憶に設定された未使
用セクタカウンタの値と使用済セクタカウンタの値を比
較する。ここで、使用済セクタカウンタの値が未使用セ
クタカウンタの値に対して同じか上回った場合、上位プ
ログラムに対して記憶効率の悪化をレポートする様に構
成している(ステップS502、S504)。また、未
使用セクタカウンタの値が使用済セクタカウンタの値よ
りも大きければ、評価結果を正常とし、正常復帰する
(ステップS503)。
【0137】次に、フラッシュROMの記憶領域の獲得
手順(ステップS305)について説明する。図23は
フラッシュROMの記憶領域の獲得手順を表わすフロー
チャートである。
【0138】ステップS601でフラッシュROMの記
憶領域の獲得を開始する。ステップS602で未使用セ
クタの検索権利を獲得する。ここでは、オペレーティン
グシステムの提供するセマフォの機能を使用して未使用
セクタの検索権利を管理している。ここでは、ステップ
S602からステップS609/ステップS611まで
の点線で囲まれた処理期間だけ未使用セクタの検索権利
を独占出来る。複数のタスクが同時に同一領域を獲得す
る様な事態を防ぐ為のしくみである。
【0139】ステップS603でフラッシュROMの最
初のセクタへポインタを移動する。ステップS603で
そのセクタの管理フラグ(使用中フラグ、使用済みフラ
グ)を参照して、当該セクタの使用状態を判断する。使
用済みか使用中ならステップS605へ分岐する。ステ
ップS605で現在ポイントしているセクタが最後のセ
クタならステップS611へ分岐する。この場合、使用
可能な領域がフラッシュROM15に存在しないことに
なるので、ステップS611で未使用セクタの検索権利
を開放した後、ステップS612で異常復帰する。ま
た、ステップS605で現在ポイントしているセクタが
最後のセクタでなければ、ステップS606へ分岐す
る。ステップS606では、ポインタを次のセクタへ移
動させてからステップS604へ戻る。
【0140】ステップS604ポインタの示すセクタの
管理フラグが未使用となっていればステップS607へ
分岐する。ステップS607では、フラッシュROMの
管理フラグを“使用中”へ変更する(使用中フラグをT
RUEにする)。そして、ステップS608で、主記憶
に設けた未使用セクタカウンタの値を1つ減少させる。
この場合は、フラッシュROMへの記憶領域の獲得に成
功しているので、ステップS609で未使用セクタの検
索権利を開放し、ステップS610で正常復帰する。
【0141】次に、ガベージコレクション(ステップS
312)の手順について説明する。図24はガベージコ
レクションの手順を表わすフローチャートである。
【0142】ステップS701でガベージコレクション
を開始する。ステップS702では、整理対象のイレー
スブロック(以後、整理対象ブロック)を選出する。整
理対象ブロックの選出手順については、図25のフロー
チャートを用いて詳しく説明を加える。ステップS70
3では、整理対象ブロックの未使用セクタを使用済化す
る。この使用済化の手順については、図26のフローチ
ャートを用いて詳しく説明を加える。ここで、最初に整
理対象ブロック内の未使用セクタを使用済化させる目的
は、ガベージコレクション中であっても、他のタスクが
整理対象ブロック内のセクタを含むセクタへの読み書き
が可能な構成となっており、ガベージコレクション中に
他のタスクによって整理対象ブロック内のセクタへ新た
なデータが書き込まれることを防止する為である。
【0143】ステップS704では、整理対象ブロック
中の使用中セクタを他の記憶領域(即ち、他のイレース
ブロック)へ移動させる。使用中セクタを他の記憶領域
へ移動させる処理については、図27のフローチャート
を参照して詳しく説明を加える。
【0144】続くステップS705では、使用中セクタ
の移動を終了した整理対象ブロックの消去を実行する。
整理対象ブロックを消去する手順については、図28の
フローチャートを参照して詳しく説明を加える。なお、
この整理対象ブロックの消去において、消去回数カウン
タ152の内容を主記憶にコピーしておく。ステップS
705における整理対象ブロックの消去を終えると、ス
テップS706で主記憶に退避したデータをフラッシュ
ROMの当該イレースブロックの消去回数カウンタへ戻
す。そして、ステップS707でガベージコレクション
から復帰する。
【0145】次に、ガベージコレクションにおける整理
対象ブロックの選出手順(ステップS702)について
説明する。図25は整理対象ブロック選出する手順を表
わすフローチャートである。
【0146】まず、ステップS801で整理対象ブロッ
クの選出を開始する。ステップS802で評価ポインタ
に最初のイレースブロックをセットする。同様に、ステ
ップS803で、整理対象候補ポインタを最初のイレー
スブロックにセットする。
【0147】次に、ステップS804で、評価ポインタ
の示すイレースブロックに使用済セクタが含まれている
かどうかを判断する。使用済セクタが含まれていなけれ
ばステップS804,ステップS805をスキップして
ステップS807へ制御を移す。
【0148】一方、ステップS804で評価ポインタの
示すイレースブロックに使用済セクタが含まれている場
合には、ステップS805へ制御を移す。ステップS8
05では、整理対象候補ポインタの示すイレースブロッ
クの消去回数カウンタの値と評価ポインタの示すイレー
スブロックの消去回数カウンタの値を比較する。もし評
価ポインタの示すイレースブロックの消去回数の方が少
なければステップS806へ制御を移す。ステップS8
06では、整理対象候補ポインタへ評価ポインタを代入
する。一方、ステップS805でもし評価ポインタの示
すイレースプロックの消去回数のほうが多ければそのま
まステップS807へ制御を移す。
【0149】ステップS807で評価ポインタが最後の
イレースブロックを示しているかどうかを判断する。も
し最後のイレースブロックでなければ、ステップS80
8で評価ポインタを次のイレースブロックへ移動させた
後、ステップS804へ戻る。以上のように、ステップ
S804〜S808の処理を繰り返すことで、整理対象
候補ポインタは、使用済みセクタを含み、消去回数の少
ないイレースブロックを示すようになる。
【0150】ステップS807で評価ポインタが最後の
イレースブロックを示している場合はステップS809
へ分岐する。ステップS809ではガベージコレクショ
ン処理(図24の処理)に復帰する。この時点の整理対
象候補ポインタの示すイレースブロックが整理対象とし
て選出される。
【0151】次に、選択された整理対象ブロック内の未
使用セクタを使用済み化する処理(ステップS703)
について説明する。図26は、整理対象ブロックの未使
用セクタを使用済み化する手順を表わすフローチャート
である。
【0152】ステップS901で処理を開始する。ステ
ップS902で、整理対象ブロックの最初のセクタへポ
インタを移動させる。次に、ステップS903で、未使
用セクタの検索権利を獲得する。これは、図23のフロ
ーチャートのステップS602と同様の効果があり、ス
テップS908までの点線で囲まれた間、未使用セクタ
の検索権利を独占する。即ち、整理対象ブロックの全セ
クタを対象にスキャンして未使用セクタを使用済セクタ
へ変更するまでの間、他のタスクが未使用セクタの検索
をすることを禁止する。しかし、管理フラグのみの操作
で未使用セクタを使用済セクタへ変更するので、検索権
利の独占時間は短く、全体のスループットが低下するこ
とはない。
【0153】ステップS904で、現在のポインタが示
すセクタが未使用セクタかどうかを判断する。もし未使
用セクタならステップS905へ分岐する。ステップS
905でその記憶を廃棄する。ステップS905の処理
手順は図21のフローチャートで説明した通りである。
この処理により、未使用セクタが使用済みセクタに変更
される。ステップS906では、ポインタが整理対象ブ
ロックの最後のセクタを示しているかどうかを判断す
る。最後のセクタを示していればステップS908へ、
そうでないならステップS907へ分岐する。ステップ
S907ではポインタを次のセクタへ移動させてステッ
プS904へ制御を戻す。
【0154】また、ステップS906でポインタが整理
対象ブロック最後のセクタならステップS908で未使
用セクタの検索権利を開放し、ステップS909でガベ
ージコレクション処理(図24のフローチャート)へ復
帰する。
【0155】次に、整理対象ブロックの使用中セクタを
他のイレースブロックの未使用セクタへ移動する処理
(ステップS704)について説明する。図27は、整
理対象ブロックの使用中セクタの移動手順を表わすフロ
ーチャートである。
【0156】ステップS1000で処理を開始する。ス
テップS1001で整理対象ブロックの最初のセクタへ
ポインタを移動させる。以下のステップS1002〜S
1012では、ポインタが指し示すセクタについて処理
を行う。
【0157】ステップS1002で当該セクタの管理フ
ラグ(使用中フラグ、使用済みフラグ)を判断する。ス
テップS1002で管理フラグの値が「使用中」となっ
ていたらステップS1003へ制御を移し、「使用済」
となっていたらステップS1012へ制御を移す。ステ
ップS1003で、論理セクタをロックする。ロックし
たセクタはステップS1011でアンロックされるまで
の間、自タスクで占有される。
【0158】ステップS1004では記憶領域を獲得す
る。ステップS1004における記憶領域の確保の手順
は、図23のフローチャートで説明した通りである。こ
こで、整理対象ブロック内の各セクタは上記ステップS
703の処理で、全て使用済み化されているので、確保
される記憶領域は整理対象ブロック以外のイレースブロ
ックとなる。
【0159】記憶領域の獲得に成功すると、処理はステ
ップS1008へ進む。ステップS1008では、獲得
した領域へ当該セクタのデータをコピーする。そして、
セクタの移動に従って、ステップS1009で記憶場所
管理テーブル140を更新する。
【0160】一方、ステップS1004で記憶領域の獲
得に失敗した場合は、ステップS1005へ分岐する。
ステップS1005では、データ退避用の記憶領域を主
記憶(DRAM)より獲得する。データ退避用記憶領域
の獲得は図19のフローチャートのステップS306で
説明した通りである。ステップS1006では、獲得し
た領域へ当該セクタのデータをコピーする。そして、ス
テップS1007で記憶管理テーブルを更新する。ステ
ップS1010で元の記憶を廃棄する。即ち、ポインタ
の指し示すセクタの使用済みフラグをTRUEにセット
する。そして、ステップS1011で当該論理セクタを
アンロックする。
【0161】ステップS1012で、ポインタの指し示
すセクタが、整理対象ブロックの最後のセクタかどうか
を判断する。最後のセクタであればステップS1014
へ、最後のセクタでなければステップS1013へそれ
ぞれ分岐する。ステップS1013では、ポインタを次
のセクタへ移動させて、ステップS1002へ戻り、次
のセクタについて上述の処理を繰り返す。また、ステッ
プS1014では、整理対象ブロック内の全てのセクタ
について処理を終えているので、ガベージコレクション
処理(図24のフローチャート)へ復帰する。
【0162】次に、整理対象ブロックの消去処理(ステ
ップS705)について説明する。図28は、整理対象
となったイレースブロックの消去手順を表わすフローチ
ャートである。
【0163】ステップS1101で処理を開始する。ス
テップS1102で整理対象ブロックの消去回数カウン
タを主記憶へコピーする。ステップS1103では整理
対象ブロックの消去を実行する。ステップS1104で
は、主記憶へコピーした消去回数カウンタの値を1増加
させた値をフラッシュROMへ書き込む。即ち、当該整
理対象ブロックの消去カウンタの値を、消去処理前の値
より1増加させる。その後、ステップS1105でガベ
ージコレクション処理(図24のフローチャート)へ復
帰する。
【0164】上記図24で示されるガベージコレクショ
ン処理は、極力フラッシュROMを用いた処理であり、
退避データの安全性が高い。しかしながら、上述の<未
使用セクタが無い場合>の項で説明したように、積極的
に主記憶(DRAM14)を用いて使用中セクタのデー
タを待避し、複数個のイレースブロックを消去すると消
去処理の効率がよい。但し、DRAM14にデータを待
避するので、待避中のデータに関して安全性が低下する
(例えば電池が外れて電源供給が停止するとDRAMに
待避したデータが失われることになる)。そこで、電源
の種別を判断し、供給電源が電池の場合は待避データの
安全性を重視し、ACアダプタの場合は電源供給が停止
する危険性が少ないので消去処理の効率を重視するよう
に構成してもよい。この場合の処理について図36を参
照して説明する。
【0165】図36は、電源種別に基づいてガベージコ
レクション処理を切り換える場合の処理手順を説明する
フローチャートである。同図において、図24のフロー
チャートで示される処理と同じ処理を行うステップにつ
いては同一のステップ番号を付し、ここでは詳細な説明
を省略する。
【0166】ステップS1300においてガベージコレ
クション処理が起動されると、ステップS1301へ進
み、当該装置への電源供給の形態を判断する。ここで
は、図1の電源コントローラ9が、電源の供給元が電池
7であるかACアダプタ23であるかを判断し、CPU
5に通知する。電源種別が電池7であった場合は、ステ
ップS1304へ進み、上述の図24で示したガベージ
コレクション処理を実行する。
【0167】一方、ステップS1301において電源種
別がACアダプタであった場合は、ステップS1302
へ進む。ステップS1302では、図24のステップS
702、S703、S704に相当する処理を実行し、
選出した整理対象ブロック内の未使用セクタの使用済み
化と使用中セクタの待避を行う。そして、ステップS1
303において、主記憶(DRAM14)にセクタの待
避を行うのに十分な空き領域があるか否かを判断し、十
分な空き領域があればステップS1302へ戻る。ステ
ップS1302では、前回の整理対象ブロックとは別の
整理対象ブロックを選出して、上述の処理を繰り返す。
【0168】DRAM14上に十分な空き領域が無くな
ると、ステップS1303からステップS1304へ進
み、上述の処理で選出された整理対象ブロックの消去を
行う。そして、ステップS706で主記憶に待避したデ
ータをフラッシュROM15に戻して本処理を終了す
る。
【0169】以上のように、図36の処理によれば、電
源がACアダプタによって供給される場合は、主記憶の
空き容量を積極的に利用してデータの待避を行い、複数
の整理対象ブロックを選出して、一括して消去処理を行
うことができ、消去処理の効率が向上する。
【0170】なお、上記の処理では、電源種別に基づい
て自動的にガベージコレクションの形態を切り換える
が、コントロールパネル12の操作により、マニュアル
で切り換えるようにすることもできることはいうまでも
ない。
【0171】次に、基本サービスの一つである論理セク
タの解放手順について説明する。図29は、論理セクタ
の解放手順を表すフローチャートである。
【0172】ステップS1201でNセクタの解放を開
始する。ステップS1202でNセクタをロックする。
この結果、ステップS1205でアンロックされるまで
の間、自タスクで論理セクタを占有出来る。続いて、ス
テップS1203で当該セクタの記憶を廃棄する。この
記憶の廃棄処理については、図21のフローチャートで
説明した通りである。ステップS1204では、DRA
M14の記憶場所管理テーブル140へ“不在”値を代
入する。ステップS1205では、論理セクタをアンロ
ックし、ステップS1206で復帰する。
【0173】例えばMS−DOS(商標)等の一般のフ
ァイルシステムでは、ファイルの消去に際しては、当該
ファイルに属するセクタをFATにおいて上書き可能と
するのみで、各セクタを解放するということは行われな
い。よって、このようなファイルシステムに本実施形態
のフラッシュROM管理システムを適用すると、ファイ
ルシステム上では無効となったデータが、有効なセクタ
として残されてしまうことになり、ガベージコレクショ
ン等の効率を低下させることになる。よって、ファイル
システムの指示(例えばファイル消去)に基づいて不要
となったセクタを検出し、これを解放するように構成す
れば、ガベージコレクションの効率をより向上させるこ
とができる。
【0174】図37は、ファイルシステムよりファイル
消去が指示された場合の、不要セクタの解放手順を表す
フローチャートである。同図において、ステップS14
01でファイルシステムよりファイル消去の指示があっ
たか否かを判断する。ファイル消去の指示があった場合
は、ステップS1402へ進み、消去すべく指示された
ファイルに含まれるセクタを抽出する。セクタの抽出
は、FATを参照することで抽出できる。そして、ステ
ップS1403で、先のステップS1402で抽出され
た各セクタについて、上記図29のフローチャートで説
明したセクタの解放処理を実行する。
【0175】[実施形態2]次に実施形態2について説
明する。
【0176】<ディスクコントローラエミュレーション
>上述の実施形態1で説明したフラッシュROMの記憶
管理システムは、上位層から見た特徴がディスク媒体と
良く似ている。従って、ディスクコントローラのエミュ
レーション機能を備えたシステムに組み込むことで、デ
ィスクコントローラとディスク媒体をディスクコントロ
ーラエミュレーションと本実施形態の記憶管理システム
(あるいは本実施形態の記憶管理システムを組み込んだ
ICカード)へ置き換えることが可能となる。近年PC
MCIAに代表されるICカードが普及しているが、I
Cカードへディスクコントローラエミュレーション機能
と上記実施形態1の記憶管理システムを組込むことによ
り、リムーバルな記憶媒体として利用することが可能と
なる。第2の実施形態では、実施形態1の記憶管理シス
テムをICカードへ組み込んだものについて説明する。
【0177】図30は実施形態2におけるICカードの
構成を表すブロック図である。同図において、200は
ICカード全体を示す。201はマイクロコンピュータ
であり、ディスクコントローラエミュレーション及び記
憶管理を行う。202はROMであり、マイクロコンピ
ュータ201のプログラムを格納する。203はRAM
であり、マイクロコンピュータ201の主記憶として機
能する。204はフラッシュROMであり、上記実施形
態1で説明した記憶管理システムによってデータを蓄積
する。即ち、フラッシュROM204は、図4で説明し
た管理領域とデータ領域とで管理される。
【0178】205はコマンド/データ・ラッチ部であ
り、ホスト装置より受信した外部バスからのコマンドと
シリンダ番号等を保持する。206はFIFOメモリで
あり、先入れ先出し方式でデータの入出力を行う。20
7はタプルROMであり、当該カードの特徴等を記憶し
ており、外部バスからのみ読み出しができる。
【0179】上述の各構成の機能は、以降の動作説明で
より明らかとなる。
【0180】図31は、本実施形態2のICカードを利
用する為のホストシステムの簡単なブロック図である。
同図において、301はホストシステム側のマイクロコ
ンピュータである。302はカードインターフェースで
あり、ホストシステムの内部バスとICカード200の
外部バスを接続する。なお、カードインターフェース3
02は、ICカード200への電源供給を行うための電
源供給線や、ICカード200からの割り込み要求(I
RQ出力)を受け付けるための信号線も備えている。
【0181】図32は、図31のホストシステムがIC
カードを接続する際の手順を示すフローチャートであ
る。ステップS4100で処理を開始すると、ステップ
S4101でICカードへの電源供給を開始する。ステ
ップS4102では、ICカード200内のタプルRO
M7から、タプル形式で格納されているデータを解析す
る。タプルROM7の内容を解析することで、接続され
ているICカードの特徴が分かる。
【0182】ステップS4103では、ステップS41
02で解析したタプル情報によって、接続されているI
Cカードが内部バスへ接続可能かどうかを判断する。そ
して、接続可能ならステップS4104へ、接続不可能
ならステップS4105へとそれぞれ分岐する。ステッ
プS4104では、ICカード側のバスをホストの内蔵
バスのメモリ空間とIO空間へマッピングする。この時
点でホスト装置のバスの空間にディスクコントローラが
有るのと同じ状態になる。
【0183】図33はICカード200内のマイクロコ
ンピュータ1のメインシーケンスを示すフローチャート
である。ステップS4201でICカードの電源が投入
されると、ステップS4202で記憶管理システムの初
期化を行う。即ち、フラッシュROM204の全イレー
スブロックの論理セクタの状態を一旦読み出し、読み出
した情報に従って主記憶用のRAM203へ記憶場所管
理テーブルを作成する。ステップS4203で主記憶上
のコマンドバッファとしてリング状のバッファを用意し
て初期化し、割り込み処理を許可する。この処理以降割
り込みルーチンの動作が始まる。
【0184】割り込みルーチンのシーケンスを図34の
フローチャートに示す。割り込みルーチンの動作を理解
した方が、図33のフローチャートの説明が容易となる
為、ここで図34のフローチャートについて説明を行
う。
【0185】ホストシステムがコマンド/データ・ラッ
チ205へのコマンドのアドレスへコマンドを書き込む
と、コマンド/データ・ラッチ205からマイクロコン
ピュータ201へ割り込みが発生する。コマンド/デー
タ・ラッチ205は、ホストバスとICカード内部のバ
スのIOアドレス空間にマッピングされていて、コマン
ド/データはそれぞれ図35に示すようにIOアドレス
が割り振られている。図35は、本実施形態のコマンド
/データ・ラッチにおけるIO割り付けを示す図であ
る。本例では、図35中のCommandのアドレスにコマン
ド(例えばデータの読出しを指示するReadSector(s))
を書き込むことでマイクロコンピュータ201へ割り込
みが発生する。
【0186】割り込みが発生すると、マイクロコンピュ
ータ201のソフトウェアは、図34のフローチャート
のステップS4301へ制御を移す。ステップS430
2では、コマンド/データ・ラッチ205に書き込まれ
たデータを読み出して、主記憶上のリングバッファへデ
ータを格納する。ステップS4303で割り込みルーチ
ンを終了して図33のフローチャートへ復帰する。
【0187】図33のフローチャートの説明に戻る。ス
テップS4204でマイクロコンピュータ201はコマ
ンドバッファの状態を判断する。コマンドバッファへデ
ータが格納されていれば、ステップS4205へ分岐
し、データが格納されていなければステップS4213
へ分岐する。ステップS4213ではCPUを休止状態
にする。多くのワンチップマイクロコンピュータは、命
令の実行を休止して消費電流を減らす機能を備えている
が、本実施形態のCPUもこの種の機能を備える。そし
て、IRQによる割り込み要求信号が入力されると、C
PU201は休止状態から復帰して上述の割り込みルー
チンを実行する。割り込みプログラムの実行が済んだ時
点でステップS4213から復帰してステップS420
4へ戻る。
【0188】ステップS4204でコマンドバッファへ
データが格納されていると、ステップS4205へ移行
する。ステップS4206では、リングバッファからデ
ータを読み出す。ステップS4206でコマンドを解釈
する。Seekコマンドの場合はステップS4207、Read
Sector(s)コマンドの場合はステップS4208へ、Wri
teSector(s)の場合はステップS4209へ、IdentifyD
rvコマンドの場合はステップS4210へそれぞれ分岐
する。他にもコマンドがあるが本実施形態の説明上重要
でないものは省き、フローチャートを簡略化している。
ステップS4207〜4210までのコマンドの実行を
終了したらステップS4204まで戻り、上記の処理を
繰り返す。
【0189】ステップS4207では、Seekコマンドを
実行する。SeekといってもフラッシュROMには、ディ
スクデバイスと違ってヘッドが無いので、次のコマンド
に備えての妥当性等をチェックするだけである。ICカ
ードのサポートするヘッド数を超えるヘッド位置などを
指定された場合は、ディスク装置同様にエラーが発生す
る。
【0190】ステップS4208はReadSector(s)コマ
ンドに対する処理を行う。ReadSector(s)コマンドは、
読み出すべきセクターの個数が図35のSectorCountで
指定される。よって、ステップS4208では、指定さ
れた場所のセクタをSectroCount個読み出す行為を行
う。本実施形態の記憶管理システムでは、リニアな論理
セクタ番号を使って管理を行っているので、シリンダ/
ヘッド/セクタ番号を元にリニアな論理セクタ番号を計
算し、論理セクタの内容をFIFOメモリ206へ転送
し、コマンド/データ・ラッチ205のSectorNumberの
インクリメントも行う。FIFOメモリ206は、IC
カード200の内部バスから書き込んだデータを外部バ
スから読み出すことができ、また外部バスから書き込ん
だデータをICカード内部バスから読み出す構成となっ
たFIFOメモリである。
【0191】ここで、上述のリニアな論理セクタ番号に
ついて説明する。一般にハードディスクに対して指定す
る番号は、セクタ、シリンダ、ヘッドのパラメータで決
まる3次元の不連続な番号である。例えば、シリンダ数
が1024個、ヘッド数が16個、セクタ数が63個の
ハードディスクの場合、セクタ数は1024×16×6
3=1032192個となる。
【0192】このセクタを0番から1032192番と
してアクセスできると良いのであるが、上記の3つのパ
ラメータをすべて指定してアクセスするように設計され
ている。例えば、シリンダ500・ヘッド16・セクタ
63の次は、シリンダ501・ヘッド0・セクタ1をア
クセスするといった具合である。なお、これら3つのパ
ラメータをそれぞれの頭文字をとってCHSパラメータ
と呼ぶ。
【0193】MS−DOS(商標)のようなオペレーテ
ィングシステムでは、内部ではリニア(連続的)なセク
タ番号を用いるが、デバイスドライバがこれをCHSパ
ラメータに変換する。本実施形態のシステムでは、リニ
アなセクタ番号を用いるのでCHSパラメータの値を元
にリニアなセクタ番号を求める。上記で挙げたハードデ
ィスクの場合は、 シリンダ番号×(16×63)+ヘッド番号×(63)
+セクタ番号 を計算することで、リニアな論理セクタ番号が求まる。
【0194】ステップS4209はデータラッチで指定
された場所のセクタへデータを書き込む処理を行う。デ
ータは、FIFOメモリ206経由でホストシステムか
ら受け取る。
【0195】ステップS4210は、ICカード200
がどのようなハードディスクをエミュレーションしてい
るかという情報を返す処理を行う。すなわちシリンダ数
やModelNumberなどハードディスクとしてのスペックを
含むデータをFIFOメモリ206へ書き込む処理を行
う。
【0196】<ファイルシステムの解析>以上説明した
様に実施形態1で説明した記憶管理システムをICカー
ドに組み込むことで、ATAハードディスク等の置き換
え用途に使用できる。しかし、ATAコマンド等のFA
Tキャッシュやファイル消去によって生じた不要セクタ
の開放といった処理を行う為の情報を上位システムから
もらう手法が無い。ATAコマンドの空き部分を利用し
てセクタの開放コマンドとキャッシュするセクタ番号指
定コマンドを追加実装することで、FATキャッシュと
不要セクタ解放の機能が実現できる。そして、この様な
機能があることを想定していない現状のMS−DOS等
のシステムでも、FATキャッシュやセクタの開放を実
現できた方が良いことは言うまでもない。
【0197】FATシステムは論理セクタ番号0に相当
する部分にFATの場所やサイズといった情報を格納し
ている。本実施形態では、このセクタを読むことでFA
Tの場所やサイズを取得し、FATキャッシュの処理に
利用する。同様に本来書き込みデータの内容を理解しな
いはずのICカードであるが、ファイルシステムの為の
情報(ディレクトリエントリやFAT)を解析すること
でICカードが自立的に不要セクタを判断して開放する
等の処理に役立てることが出来る。もちろんFATに限
った話では無く、HPFSやマッキントッシュ(商標)
のファイルシステムでも書き込むデータの内容を解析す
れば、不要セクタの検出が可能である。この様に構成す
ることでATAハードディスクのインタフェースでも、
ファイルシステムの動作に合わせた最適化処理を行うこ
とを可能にする。
【0198】上記装置の機能もしくは方法の機能によっ
て達成される本発明の目的は、前述の実施形態のプログ
ラムを記憶させた記憶媒体によっても達成できる。例え
ば、パーソナルコンピュータに、その記憶媒体を装着
し、その記憶媒体から読み出した以下に説明するような
フラッシュROM管理プログラムを実行することによ
り、フラッシュROMをディスクシステムと同等に使用
できるようになるとともに、マルチタスクシステムに好
適に対応することが可能となる。このための本発明にか
かるプログラムの構造的特徴は、図49に示す通りであ
る。
【0199】図49は本実施形態における記憶媒体に格
納される制御プログラムの制御手順、及び本記憶媒体の
メモリマップを示す図である。
【0200】図49(a)において、350は管理処理
であり、データ領域とこれに対応する管理領域とでセク
タを構成し、複数のセクタをフラッシュROM15に形
成し、各セクタにおいてデータ領域の記憶状態を示す状
態情報(セクタ番号154、使用中フラグ155、使用
済フラグ156)を管理領域に格納し、該状態情報に基
づいてフラッシュROM15のアクセスを管理する。例
えば、図18や図19のフローチャートで示したよう
に、セクタ単位でのフラッシュROM15へのデータの
書込みや読出しを制御する。
【0201】351は待避処理であり、フラッシュRO
M15のイレースブロックにおいて、データ領域中のデ
ータが有効であるセクタ(使用中フラグがTRUEで使
用済フラグがFALSEのセクタ)を抽出し、抽出され
たセクタの内容を該イレースブロック外へ待避する。3
52は消去処理であり、前記待避工程によりイレースブ
ロック中の有効データを含む全セクタを待避した後に、
該イレースブロックの消去処理を行う。
【0202】以上のように、待避処理351と消去処理
352を有することにより、無効データの入ったセクタ
を未使用のセクタに変更することが可能となり、フラッ
シュROMを効率良く用いることができる。しかしなが
ら、記憶すべきデータが増え、フラッシュROM上に未
使用のセクタが無くなると、データの更新時において更
新後のデータを他の領域へ書き込むことができなくな
る。この結果、1つのセクタを更新するのに、DRAM
14をデータの待避先として待避処理351と消去処理
352を実行し、データ更新のあったセクタを未使用領
域に変更してから、当該セクタへ更新後のデータを書き
込むという多くの処理が必要となる。
【0203】そこで、管理処理350によるアクセスの
対象となるセクタ数よりも多い個数のセクタ(余分セク
タ)をフラッシュROM15に形成しておき、管理処理
350はこれらのセクタ領域の全てを用いてフラッシュ
ROM15のアクセス管理を行う。例えば、1イレース
ブロック分の余分セクタを用意すれば、1イレースブロ
ック分の未使用領域を確保することが保証され、フラッ
シュROM15における記憶処理の効率低下を防止でき
る。
【0204】即ち、管理処理350は、ファイルシステ
ム等からの要求によってアクセス可能なセクタ数分のセ
クタと、それ以外に1イレースブロック分の余分なセク
タを有する。
【0205】上記制御手順を実現するための制御プログ
ラムは、フロッピーディスクやハードディスク、あるい
はCD−ROM等の記憶媒体に、例えば図49の(b)
のメモリマップに示すような構成で格納される。上記制
御プログラムは、例えばパーソナルコンピュータ等の情
報処理装置によって読み出され、主記憶(RAM)上に
ロードされて、CPUにより実行される。なお、主記憶
上への上記制御プログラムのロードは、LANを介して
行われてもよい。(b)において、管理処理モジュール
350’、待避処理モジュール351’、消去処理モジ
ュール352’のそれぞれは、管理処理350、待避処
理351、消去処理352のそれぞれを実行するための
プログラムモジュールである。
【0206】また、本発明は、複数の機器から構成され
るシステムに適用しても、1つの機器からなる装置に適
用してもよい。また、本発明はシステム或は装置にプロ
グラムを供給することによって達成される場合にも適用
できることは言うまでもない。この場合、本発明に係る
プログラムを格納した記憶媒体が、本発明を構成するこ
とになる。そして、該記憶媒体からそのプログラムをシ
ステム或は装置に読み出すことによって、そのシステム
或は装置が、予め定められた仕方で動作する。
【0207】
【発明の効果】以上説明したように、本発明によれば、
フラッシュROM内にデータの読み書きでアクセスされ
る領域の総容量よりも余分な領域を用意してあるので、
フラッシュROMにおける記憶効率の低下を防止でき
る。
【0208】
【図面の簡単な説明】
【図1】実施形態1におけるカメラシステムの構成を表
すブロック図である。
【図2】本実施形態の電子カメラにおけるファイルシス
テムの階層構造を表す図である。
【図3】デバイスドライバの管理ブロックをC言語で記
述した宣言文を示す図である。
【図4】フラッシュROM上のセクタ構造の例を示す図
である。
【図5】管理領域用データと、データ領域とを分離して
格納する構成を表す図である。
【図6】各フラグの状態に対応した意味を示す図であ
る。
【図7】フラッシュROMにおけるセクタの書き換え手
順を説明する図である。
【図8】本実施形態におけるフラッシュROMのガベー
ジコレクション動作を説明する図である。
【図9】未使用セクタが存在しない場合のガベージコレ
クションの動作を説明する図である。
【図10】DRAM上に作成された記憶場所管理テーブ
ルを説明する図である。
【図11】キャッシュソフトウエアの階層的な位置付け
を表す図である。
【図12】キャッシュの主記憶上のデータ構造を表わす
図である。
【図13】FATキャッシュの読み出し手順を表すフロ
ーチャートである。
【図14】FATキャッシュの書込み手順を表すフロー
チャートである。
【図15】データ書き込み完了を確認するための動作手
順をC言語で表現した図である。
【図16】DC/DCコンバータの出力容量を越えない
様に電源を管理するプログラムをC言語で表現した図で
ある。
【図17】本実施形態のリブートからサービスの開始ま
での動作手順を表わすフローチャートである。
【図18】指定セクタの読み出しサービスの手順を表わ
すフローチャートである。
【図19】論理セクタの書き込みサービスの手順を表わ
すフローチャートである。
【図20】主記憶上に獲得した退避データリストの様子
である。
【図21】記憶を破棄する手順を表わすフローチャート
である。
【図22】記憶効率の評価手順を表わすフローチャート
である。
【図23】フラッシュROMの記憶領域の獲得手順を表
わすフローチャートである。
【図24】ガベージコレクションの手順を表わすフロー
チャートである。
【図25】整理対象ブロック選出する手順を表わすフロ
ーチャートである。
【図26】整理対象ブロックの未使用セクタを使用済み
化する手順を表わすフローチャートである。
【図27】整理対象ブロックの使用中セクタの移動手順
を表わすフローチャートである。
【図28】整理対象となったイレースブロックの消去手
順を表わすフローチャートである。
【図29】論理セクタの解放手順を表すフローチャート
である。
【図30】実施形態2におけるICカードの構成を表す
ブロック図である。
【図31】本実施形態2のICカードを利用する為のホ
ストシステムの簡単なブロック図である。
【図32】図31のホストシステムがICカードを接続
する際の手順を示すフローチャートである。
【図33】ICカード内のマイクロコンピュータのメイ
ンシーケンスを示すフローチャートである。
【図34】ICカード内のマイクロコンピュータの割り
込み処理の手順を表すフローチャートである。
【図35】IOアドレスの割り付け状態を表す図であ
る。
【図36】電源種別に基づいてガベージコレクション処
理を切り換える場合の処理手順を説明するフローチャー
トである。
【図37】ファイルシステムよりファイル消去が指示さ
れた場合の、不要セクタの解放手順を表すフローチャー
トである。
【図38】本実施形態における消去処理速度向上のため
の前処理の制御手順を表すフローチャートである。
【図39】本実施形態におけるフラッシュROMへの1
バイトデータの書込み手順を表すフローチャートであ
る。
【図40】電源の共有手順を説明するためのフローチャ
ートである。
【図41】本実施形態におけるフラッシュROMへの制
御プログラムの格納状態を説明する図である。
【図42】相対アドレスで表現されたプログラムコード
の一例を表す図である。
【図43】図42のリロケーション情報レコードのデー
タを格納するテーブルを表す図である。
【図44】図41のプログラムを主記憶の8710番地
へマッピングした場合のプログラムコードを示す図であ
る。
【図45】ディレクトリスロットの特徴を表す図であ
る。
【図46】図45のディレクトリスロットにおいて、Fi
leB が削除された状態を示す図である。
【図47】本実施形態のDOS互換ファイルシステムで
ファイルを消去した後の状態を表す図である。
【図48】本実施形態による電源資源(セマフォ)の時
分割利用を説明するフローチャートである。
【図49】本実施形態の制御を実現する制御プログラム
を提供する記憶媒体の内容を説明する図である。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 データ領域、及びデータ領域に対応する
    管理領域とで構成される複数の記憶ブロックをフラッシ
    ュROMに形成し、各記憶ブロックにおいてデータ領域
    の記憶状態を示す状態情報を管理領域に格納し、該状態
    情報に基づいて該記憶ブロックを単位としたアクセスを
    管理する管理手段と、 前記フラッシュROMの消去ブロックにおいて、前記デ
    ータ領域中のデータが有効である記憶ブロックを前記管
    理情報の状態情報を参照して抽出し、抽出された記憶ブ
    ロックの内容を該消去ブロック外へ待避する待避手段
    と、 前記待避手段により前記消去ブロック中の有効データを
    含む全記憶ブロックを待避した後に、該消去ブロックの
    消去処理を行う消去手段と、 前記管理手段でアクセスの対象となる記憶ブロック数よ
    りも多くの記憶ブロックに対応する容量を有する記憶領
    域とを備えることを特徴とするフラッシュROM管理装
    置。
  2. 【請求項2】 前記記憶領域は、前記フラッシュROM
    の少なくとも1つの消去ブロック分の大きさを有するこ
    とを特徴とする請求項1に記載のフラッシュROM管理
    装置。
  3. 【請求項3】 データ領域、及びデータ領域に対応する
    管理領域とで構成される複数の記憶ブロックをフラッシ
    ュROMに形成し、各記憶ブロックにおいてデータ領域
    の記憶状態を示す状態情報を管理領域に格納し、該状態
    情報に基づいてフラッシュROMのアクセスを管理する
    管理工程と、 前記フラッシュROMの消去ブロックにおいて、前記デ
    ータ領域中のデータが有効である記憶ブロックを前記管
    理情報の状態情報を参照して抽出し、抽出された記憶ブ
    ロックの内容を該消去ブロック外へ待避する待避工程
    と、 前記待避工程により前記消去ブロック中の有効データを
    含む全記憶ブロックを待避した後に、該消去ブロックの
    消去処理を行う消去工程とを備え、 前記管理工程は、アクセスの対象となる記憶ブロック数
    よりも多い余分な記憶ブロックを前記フラッシュROM
    に設けて該フラッシュROMの管理を行うことを特徴と
    するフラッシュROM管理方法。
  4. 【請求項4】 前記余分な記憶ブロックは、前記フラッ
    シュROMの少なくとも1つの消去ブロック分の大きさ
    を有することを特徴とする請求項3に記載のフラッシュ
    ROM管理方法。
  5. 【請求項5】 メモリ媒体から所定のプログラムを読み
    込んでコンピュータを制御するコンピュータ制御装置で
    あって、前記メモリ媒体は、 データ領域、及びデータ領域に対応する管理領域とで構
    成される複数の記憶ブロックをフラッシュROMに形成
    し、各記憶ブロックにおいてデータ領域の記憶状態を示
    す状態情報を管理領域に格納し、該状態情報に基づいて
    フラッシュROMのアクセスを管理する管理工程の手順
    コードと、 前記フラッシュROMの消去ブロックにおいて、前記デ
    ータ領域中のデータが有効である記憶ブロックを前記管
    理情報の状態情報を参照して抽出し、抽出された記憶ブ
    ロックの内容を該消去ブロック外へ待避する待避工程の
    手順コードと、 前記待避工程により前記消去ブロック中の有効データを
    含む全記憶ブロックを待避した後に、該消去ブロックの
    消去処理を行う消去工程の手順コードとを備え、 前記管理工程は、アクセスの対象となる記憶ブロック数
    よりも多い記憶ブロックを前記フラッシュROMに設け
    て該フラッシュROMの管理を行うことを特徴とするコ
    ンピュータ制御装置。
JP25124395A 1995-09-28 1995-09-28 フラッシュrom管理方法及び装置及びコンピュータ制御装置 Withdrawn JPH0997207A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP25124395A JPH0997207A (ja) 1995-09-28 1995-09-28 フラッシュrom管理方法及び装置及びコンピュータ制御装置
US08/710,946 US5933847A (en) 1995-09-28 1996-09-24 Selecting erase method based on type of power supply for flash EEPROM
US09/350,188 US6604168B2 (en) 1995-09-28 1999-07-09 Flash eeprom management using ratio of used to unused sectors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25124395A JPH0997207A (ja) 1995-09-28 1995-09-28 フラッシュrom管理方法及び装置及びコンピュータ制御装置

Publications (1)

Publication Number Publication Date
JPH0997207A true JPH0997207A (ja) 1997-04-08

Family

ID=17219867

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25124395A Withdrawn JPH0997207A (ja) 1995-09-28 1995-09-28 フラッシュrom管理方法及び装置及びコンピュータ制御装置

Country Status (1)

Country Link
JP (1) JPH0997207A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11306767A (ja) * 1998-04-17 1999-11-05 Sharp Corp 一括消去型メモリの記録再生装置
JP2000067587A (ja) * 1998-08-18 2000-03-03 Sharp Corp 一括消去型メモリを用いた情報記録再生装置
JP2001051894A (ja) * 1999-08-09 2001-02-23 Murata Mfg Co Ltd データ通信装置
WO2001080241A1 (fr) * 2000-04-13 2001-10-25 Matsushita Electric Industrial Co., Ltd. Appareil et procede de reproduction de donnees
WO2003012647A1 (fr) * 2001-07-27 2003-02-13 Matsushita Electric Industrial Co., Ltd. Appareil a memoire flash et procede de fusion de donnees stockees dans celle-ci
WO2003017108A1 (en) * 2001-08-21 2003-02-27 Matsushita Electric Industrial Co., Ltd. Storage device having non-volatile memory
JP2007094571A (ja) * 2005-09-27 2007-04-12 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527924A (ja) * 1991-07-12 1993-02-05 Internatl Business Mach Corp <Ibm> 半導体メモリを用いた外部記憶システム及びその制御方法
JPH0695955A (ja) * 1992-09-09 1994-04-08 Ricoh Co Ltd フラッシュ・ファイル・システム
WO1994020906A1 (en) * 1993-03-08 1994-09-15 M-Systems Ltd. Flash file system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527924A (ja) * 1991-07-12 1993-02-05 Internatl Business Mach Corp <Ibm> 半導体メモリを用いた外部記憶システム及びその制御方法
JPH0695955A (ja) * 1992-09-09 1994-04-08 Ricoh Co Ltd フラッシュ・ファイル・システム
WO1994020906A1 (en) * 1993-03-08 1994-09-15 M-Systems Ltd. Flash file system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11306767A (ja) * 1998-04-17 1999-11-05 Sharp Corp 一括消去型メモリの記録再生装置
JP2000067587A (ja) * 1998-08-18 2000-03-03 Sharp Corp 一括消去型メモリを用いた情報記録再生装置
JP2001051894A (ja) * 1999-08-09 2001-02-23 Murata Mfg Co Ltd データ通信装置
WO2001080241A1 (fr) * 2000-04-13 2001-10-25 Matsushita Electric Industrial Co., Ltd. Appareil et procede de reproduction de donnees
WO2003012647A1 (fr) * 2001-07-27 2003-02-13 Matsushita Electric Industrial Co., Ltd. Appareil a memoire flash et procede de fusion de donnees stockees dans celle-ci
JP2003044351A (ja) * 2001-07-27 2003-02-14 Matsushita Electric Ind Co Ltd フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法
US7039781B2 (en) 2001-07-27 2006-05-02 Matsushtia Electric Industrial Co., Ltd. Flash memory apparatus and method for merging stored data items
WO2003017108A1 (en) * 2001-08-21 2003-02-27 Matsushita Electric Industrial Co., Ltd. Storage device having non-volatile memory
JP2007094571A (ja) * 2005-09-27 2007-04-12 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Similar Documents

Publication Publication Date Title
US5933847A (en) Selecting erase method based on type of power supply for flash EEPROM
US6115799A (en) Information processing apparatus and associated method for managing a memory using a next fit and for reducing a memory fragmentation problem
EP1686482B1 (en) File recording device
JP3878508B2 (ja) 回路群制御システム
JP2703494B2 (ja) スワップ・ブロック組立方法及びメモリ管理機構
EP0522780A2 (en) Control method for a computer memory device
US20030229761A1 (en) Memory compression for computer systems
US9086920B2 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
KR20060134170A (ko) 비휘발성 기억 시스템
JPS60147855A (ja) 記憶管理装置
US8244955B2 (en) Storage system and its controlling method
JP3727982B2 (ja) フラッシュrom管理方法及び装置
JP3324572B2 (ja) 情報処理装置並びにコンピュータに実行させるためのプログラムを記録した記録媒体
US7376758B2 (en) I/O dependency graphs
JPH0997218A (ja) フラッシュrom管理方法及び装置及びコンピュータ制御装置
US20060036663A1 (en) Method and apparatus for effective data management of files
JPH0997207A (ja) フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH0997205A (ja) フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH0997206A (ja) フラッシュrom管理方法及び装置及びコンピュータ制御装置
JP3703181B2 (ja) フラッシュrom管理方法及び装置
JPH0997199A (ja) フラッシュrom管理方法及び装置及びコンピュータ制御装置
JP3727983B2 (ja) 電子カメラ
JPH0997314A (ja) Icカード装置
JP3832933B2 (ja) 情報処理装置およびその方法、オペレーティングシステム、記憶媒体
JP5212216B2 (ja) ジョブ処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050408

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20050607