JPH0997314A - Icカード装置 - Google Patents
Icカード装置Info
- Publication number
- JPH0997314A JPH0997314A JP25123695A JP25123695A JPH0997314A JP H0997314 A JPH0997314 A JP H0997314A JP 25123695 A JP25123695 A JP 25123695A JP 25123695 A JP25123695 A JP 25123695A JP H0997314 A JPH0997314 A JP H0997314A
- Authority
- JP
- Japan
- Prior art keywords
- data
- sector
- area
- flash rom
- card
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
Abstract
ータの読み出し・書き込みの単位(記憶単位)をフラッ
シュROMの消去単位よりも小さくして管理することを
可能とし、ファイルシステムに整合させることを可能と
する。 【解決手段】ホスト装置に装着されて、該ホスト装置の
要求に応じてデータの書込み、読出しが可能なICカー
ド200が提供される。フラッシュROM204には、
複数のデータ領域、及び各データ領域に対応する管理領
域とが形成されている。ICカード200は、ホスト装
置よりデータの書込み先を示すセクタ番号を伴う書込み
指示を受けて、複数のデータ領域のうちの一つにデータ
を書き込むと共に、対応する管理領域に当該セクタ番号
を書き込む。また、ホスト装置よりデータの読み出し元
を示すセクタ番号を伴う読出し指示を受けて、そのセク
タ番号を有する管理領域に対応するデータ領域に格納さ
れたデータを読み出す。
Description
着可能なICカード装置に関する。
各種データを格納する補助記憶として広く用いられてい
る。例えばフォントデータ等を格納したICカードのよ
うに、一方的にデータを提供する場合は、必要なデータ
が記憶されたROMが内蔵されている。また、データの
書き換えが可能なICカードでは、一般にRAMを内蔵
し、RAMを用いてデータの読み・書きを実行する。と
ころが、RAMは電源によるバックアップ無しにはデー
タを保持することができず、データ保持が必要な場合は
ICカードに電源を内蔵することになる。
は、フラッシュROMがある。フラッシュROMは現在
いろいろなタイプのものがあるが大きく分けてフラッシ
ュDISK用に開発されたタイプとパーソナルコンピュ
ータのBIOS用に開発されたものがある。
な512バイトであり、ファイルシステムとの整合性が
非常に良い。後者のフラッシュROMは消去単位が例え
ば64Kなどといった大きなブロック単位でしか行えな
い様になっている。また、PROMの様に書き込み電圧
として12V等の電圧が必要なものもある。後者のフラ
ッシュROMの方が安価に入手できるがファイルシステ
ムとの整合性が悪い為に特に小容量の記録メディアとし
ては使う事が出来なかった。
S用に設計されたフラッシュROMは、その消去単位が
大きく、ファイルシステムとの整合性が悪いが、安価で
入手しやすい。従って、そのようなフラッシュROMを
ICカードに適用できれば、安価な小容量の記録メディ
アを提供することができる。
ターフェースが必要であり、ホスト装置が有する一般的
なファイルシステム用のインターフェース(ハードディ
スクやフロッピーディスク等)を用いることはできなか
った。
であり、ICカードに内蔵されたフラッシュROMのデ
ータの読み出し・書き込みの単位(記憶単位)をフラッ
シュROMの消去単位よりも小さくして管理することを
可能とし、消去単位の大きいフラッシュROMをファイ
ルシステムに整合させることを可能とするICカード装
置を提供することを目的とする。
IOS用に設計された64kバイトの消去単位を有する
フラッシュROMを内蔵するICカードで、ハードディ
スク同様のサービスを提供することが可能となる。
めの本発明のICカード装置は以下の構成を備える。即
ち、ホスト装置に装着されて、該ホスト装置の要求に応
じてデータの書込み、読出しが可能なICカード装置で
あって、複数のデータ領域、及び各データ領域に対応す
る管理領域とを形成して管理されるフラッシュROM
と、ホスト装置よりのデータの書込み先を示す指定情報
を伴う書込み指示を受けて、前記複数のデータ領域のう
ちの一つのデータ領域にデータを書き込むと共に、該指
定情報を該データ領域に対応する管理領域に書き込む書
込み手段と、ホスト装置よりのデータの読み出し元を示
す指定情報を伴う読出し指示を受けて、該指定情報が格
納された管理領域を検索し、検索された管理領域に対応
するデータ領域に格納されたデータを読み出す読出し手
段とを備える。
するデータ領域が書込み可能であるか否かを示す状態情
報を格納し、前記書込み手段は、状態情報が書き込み可
能となっている管理領域を検索し、検索された管理領域
に前記指定情報を書き込むと共に、該検索された管理領
域に対応するデータ領域にデータの書込みを行う。例え
ば、ICカードに対するデータ更新において、状態情報
のチェックにより、更新後のデータの書込みを適切なデ
ータ領域に行うことができるからである。
するデータ領域に書込みが可能であることを示す未使用
状態と、データ領域に書き込まれたデータが有効である
ことを示す使用中状態と、データ領域に書き込まれたデ
ータが無効であることを示す使用済状態の少なくとも3
通りの状態のいずれかを示す状態情報を格納し、前記書
込み手段は、状態情報が未使用状態となっている管理領
域を検索して検索された管理領域及びこれに対応するデ
ータ領域に前記指定情報及びデータを書き込み、該管理
領域の状態情報を使用中に変更する。各データ領域につ
いて使用中、使用済、未使用の3状態を示すことによ
り、状態情報をチェックすることでデータの書込みが可
能な領域、有効なデータが存在する領域を把握でき、I
Cカード装置内のフラッシュROMの記憶管理をより適
切に行えるからである。
記書き込み指示に伴う指定情報を有する管理領域を検索
し、検索された管理領域の状態情報を使用済状態に変更
する。ある指定情報で特定されるデータ領域の内容を更
新した場合に、更新前のデータ(即ち不要なデータ)で
あることを明示でき、ICカード装置の適切な記憶管理
が行えるからである。
消去単位である消去ブロックにおいて、状態情報が使用
中状態である全ての管理領域を検索し、検索された管理
領域及び対応するデータ領域の内容を当該消去ブロック
外へ移動させる移動手段と、前記移動手段の実行の後に
前記消去ブロックの消去動作を行う消去手段とを更に備
える。データ更新等によって無効データとなった使用済
状態のデータ領域を、書込みが可能な未使用状態とする
ことが可能となり、ICカード装置内のフラッシュRO
Mの利用効率が向上するからである。
理領域とデータ領域の内容の移動先は、当該ICカード
に装着されたフラッシュROM内の他の消去ブロックで
ある。データを当該ICカード内のフラッシュROM内
に移動するので、当該ICカードがホスト装置より離脱
し、電源オフ等の状態が発生してもデータが安全に保持
されるからである。
て、前記フラッシュROM内の他の消去ブロックに書き
込み可能なデータ領域が存在しない場合、データの移動
先を当該ICカードに装着されたランダムアクセスメモ
リとする。ICカード内のフラッシュROMのデータ領
域が使用中もしくは使用済状態で占められた場合でも、
フラッシュROMに未使用領域を発生することが可能と
なり、より効率良くフラッシュROMを利用できるから
である。
理領域とデータ領域の内容の移動先は、当該ICカード
に装着されたランダムアクセスメモリである。データの
移動をより迅速に行えるからである。
後に前記ランダムアクセスメモリに移動したデータを前
記フラッシュROMに書き戻す書き戻し手段を更に備え
る。フラッシュROMにデータを書き戻すことでデータ
の保持を確実にできるからである。
るデータ領域は、フラッシュROM内の同じ消去ブロッ
クに存在する。管理領域と対応するデータ領域をひとま
とめにして消去できるからである。
の記憶効率の評価を行い、その評価結果に基づいて前記
移動手段及び消去手段の実行を制御する制御手段を更に
備える。未使用領域を発生させる消去処理を適切なタイ
ミングで実行させることが可能となるからである。
記憶効率の評価は、管理領域中の状態情報が使用済状態
の領域と未使用状態の領域の大きさの比較によって行わ
れる。記憶効率の評価を極めて容易かつ適切に行うこと
が可能となるからである。
指示により、指定情報で指定された管理領域の状態情報
を使用済状態へ変更し、当該データ領域のデータを論理
的に廃棄する廃棄手段を更に備える。
するための接続部が該ホスト装置の外部記憶用のインタ
ーフェースと互換性を有し、該ホスト装置の外部記憶用
の各種コマンドを解釈する解釈手段を更に備える。ホス
ト装置が備えるファイルシステムでICカードへのアク
セスが可能となるからである。
明の実施の形態を説明する。
メラシステムの構成を表すブロック図である。本カメラ
システムは、電子カメラと、これに着脱可能な外部記憶
媒体17、PC通信インターフェース19、及びPC通
信インターフェース19を介して電子カメラと通信可能
に接続されたパーソナルコンピュータ22から構成され
る。
光を電気信号として出力するCCDユニットである。3
はA/Dコンバータであり、CCDユニット2からのア
ナログ信号をデジタル信号へ変換する。4はSSGユニ
ットであり、CCDユニット2とA/Dコンバータ3に
同期信号を供給する。5はCPUであり、本カメラシス
テムにおける各種の制御を実現する。
処理を高速に実現する。7は電池であり、8は、電池7
よりの電力を電子カメラ全体へ供給するためのDC/D
Cコンバータである。9は電源コントローラユニットで
あり、DC/DCコンバータ8をコントロールする。1
0はパネル操作・表示装置・電源のコントロールを行う
マイクロコンピュータである。11はユーザへ各種の情
報を表示する表示装置であり、液晶パネル等が用いられ
る。12はコントロールパネルであり、ユーザが直接操
作するレリーズスイッチを含む。
ログラムを格納する。14はDRAMであり、本電子カ
メラの主記憶である。15はフラッシュROMであり、
内蔵記憶媒体として使用する。16はPCMCIAカー
ドのインタフェース部、17はATAハードディスクな
どの外部記憶媒体、18は拡張バスインタフェースであ
る。19はPC通信インタフェースであり、パーソナル
コンピュータ等を接続してデータの授受を行う。20は
DMAコントローラ、21はストロボである。また、2
2はパーソナルコンピュータであり、PC通信インター
フェース19を介して、電子カメラとの通信を行う。
作を簡単に説明する。コントロールパネル12のレリー
ズスイッチをユーザが押すと、CPU5がそのことを検
出して撮影シーケンスを開始する。以下の動作は全てC
PU5によるコントロールで行われることを前提とす
る。
SG4がCCD2を駆動する。CCD2から出力される
アナログ信号は、A/Dコンバータ3でデジタル信号へ
変換される。A/Dコンバータ3の出力は、DMAコン
トローラ20によってDRAM14へDMA転送され
る。1フレーム分のDMA転送が終了した時点でCPU
5は、信号処理シーケンスを開始する。
M15から信号処理プログラムを主記憶(DRAM1
4)上に読み出し、主記憶上のデータを信号処理アクセ
ラレータ6へ転送し信号処理を行う。但し、信号処理ア
クセラレータ6は信号処理の全てを行うわけではなく、
CPU5で行う処理の特に時間のかかる処理などを助け
る演算回路であり、CPU5の処理ソフトウェアと連携
して動作する。信号処理の一部または全部が終了すると
画像ファイルとしてフラッシュROM15へ記録する。
この時記録するファイルフォーマットが圧縮処理を必用
とするのであれば圧縮も行う。
15の中でファイルシステムが管理するファイルの1つ
である。カメラのプログラムはOSやファイルシステム
といっしょにROM13に納められている。カメラのプ
ログラムは、特定のファイル名のファイルをプログラム
であると認識する。
連続に配置されている上に、本実施形態のファイルシス
テムが頻繁に再配置を行うため、、フラッシュROM1
5内の制御プログラムををCPUが直接実行することは
できない。従って、主記憶(DRAM14)に読み出し
て実行させなければならない。更に、主記憶はメモリマ
ネージャが動的に記憶場所をアロケーションするた
め、、特定のアドレスに格納されることを想定したソフ
トウエアであってはならない。そのため、本実施形態で
信号処理を行うプログラムのファイルは図41のような
形式となっている。
OMへの制御プログラムの格納状態を説明する図であ
る。図41において、識別コードはファイルがプログラ
ムであることを確認するためのコードである。ファイル
は可変長のレコードの集合として表現されている。レコ
ードには、始めに当該レコードに格納されている情報の
種類を識別するIDがあり、次にそのレコードの大きさ
を示す値が格納されている。
ション情報のレコードがファイルに格納されている。プ
ログラムコードは例えば図42のようなデータである。
図42は相対アドレスで表現されたプログラムコードの
一例を表す図である。図42では、0050番地にジャ
ンプ命令があるが、CPUはこの命令を絶対番地へのジ
ャンプ命令と認識する。この命令のオペランドは相対ア
ドレスで表現されている。
ータは図43のような形式で納められている。即ち、図
42のプログラムの中で、絶対番地へ変換しなければな
らないデータ(相対アドレス表現になっているデータ)
のプログラム番地を示すアドレステーブルがリロケーシ
ョン情報として格納される。
めの領域を確保すると、ROM13のOSのメモリマネ
ージャがアドレスを決定する。メモリマネージャのアロ
ケーションはC言語ではalloc関数に相当する機能であ
る。メモリマネージャがプログラム用に8710番地を
割り当てた場合図44のようにプログラムがロードされ
る。図44は図41のプログラムを主記憶の8710番
地へマッピングした場合のプログラムコードを示す図で
ある。ジャンプ命令のオペランドが実際の絶対番地に置
き換えられている。この実アドレスへの変換をしながら
プログラムを主記憶へ読み出すと言う作業を行うプログ
ラムはROM13に格納されている。
体に信号処理ソフトウエアや圧縮ソフトウエアをファイ
ル形式で格納することができる。その結果、カメラが最
終ユーザの元へ届いてから、新しい信号処理アルゴリズ
ムや、Windoiws(商標)のBMP形式やTIFF形
式、あるいは将来新たに登場する形式等、多種多様なフ
ァイル形式への対応が可能となる。
メラは、撮影画像をフラッシュROM15へファイルす
るものである。
は、本実施形態の電子カメラにおけるファイルシステム
の階層構造を表す図である。最上位の層がユーザアプリ
ケーション101である。ユーザアプリケーション10
1は電子カメラの内部で動くソフトウェアであり、ファ
イルをファイル名でオープンして読み書きした後クロー
ズする。
ァンクションコールによって呼び出されるのがファイル
システムAPI層102である。このファイルシステム
API層102がドライブ名とファイルシステムを関連
付けて管理している。各ドライブ毎にファイルシステム
アーキテクチャ層をマウントする用に構成しているた
め、複数のファイルシステムアーキテクチャを混在させ
る事が可能となっている。
が実際のファイル管理を行う部分である。最下位の層が
ブロックデバイス層104である。ファイルシステムア
ーキテクチャ層103がブロックデバイス層104の提
供するサービスを利用してファイル入出力を実現してい
る。このブロックデバイス層104では、データをセク
タという単位で管理しており、1セクタは例えば512
バイトである。このブロックデバイス層104でデバイ
スごとの入出力制御の違いと、ヘッドやシリンダなどパ
ラメータの違いを吸収している。このように構成してい
るため、同時に複数の種類のデバイスを混在させること
ができる。
クデバイス層104におけるフラッシュROMの記憶管
理方法に特徴を有する。
現在いろいろなタイプのものがあるが、大きく分けてフ
ラッシュDISK用に開発されたタイプとパーソナルコ
ンピュータのBIOS用に開発されたタイプがある。前
者は消去単位がハードディスクで一般的な512バイト
であり、ファイルシステムとの整合性が非常に良い。後
者のフラッシュROMは消去単位が例えば64kなどと
いった大きなブロック単位でしか行えない様になってい
る。また、PROMの様に書き込み電圧として12V等
の電圧が必要なものもある。しかしながら、後者のタイ
プのフラッシュROMは安価で入手が容易である。本実
施形態では、後者の様な特徴を持つフラッシュROMで
ありながらファイルシステムに対してハードディスク同
様のサービスを提供する。
ス>一般的にブロックデバイスがファイルシステムへ提
供するサービスは以下の2つである。即ち、 (1)ロジカルセクタナンバーで指定したセクタからの
読み出し (2)ロジカルセクタナンバーで指定したセクタからの
書き込み である。そして、これに加えて (3)ロジカルセクタナンバーで指定したセクタの開放 の機能があれば、フラッシュROMのドライバは必要に
応じて不要なセクタを消去することが可能となるため、
効率良くフラッシュROMを消去することができる。
は必要のない機能だが、キャッシュを持ったシステムだ
と、積極的にキャッシュリストから削除できるので、結
果的にキャッシュのヒット率を上げる効果がある。ファ
イルシステムは、ファイルの消去等で不必要となったセ
クタを(3)の機能を用いてデバイスドライバへ通知す
る。フラッシュROMの消去は非常に時間がかかる処理
だが、CPU時間をほとんど消費しないためバックグラ
ンド処理で行うのが良い。
明するが、本実施形態のキャッシュは、新しいデータ
(キャッシュ上に無いデータ)をアクセスする場合にキ
ャッシュリストの中で最も古いデータを廃棄する。不要
セクタをキャッシュリストの最後へ移動させる(即ち、
最も古くアクセスしたデータがキャッシュの後ろへ移動
する)ことで有効なデータがキャッシュから廃棄される
可能性が低くなる。特にコンパイラー等の中間ファイル
を多く生成するシステムでは、消去すべき中間ファイル
がキャッシュに残っている可能性が高く、上記のキャッ
シュ管理はヒット率の向上に非常に有効である。
をC言語で記述した宣言文を示す図である。構造体のN
extは、次のデバイスへのリングポインタであり、メ
モリ中のデバイスを検索する目的で使用される。Dev
Nameは、デバイスの名前として使用される。Ini
tDevは、デバイスの初期化ルーチンへのポインタで
ある。ShutDownは、デバイスのシャットダウン
ルーチンへのポインタである。ReadSector
は、ロジカルセクタを指定して媒体の内容をバッファへ
転送するルーチンへのポインタである。WriteSe
ctorは、ロジカルセクタを指定してバッファの内容
を媒体へ転送する(書き込む)プログラムへのポインタ
である。ReleaseSectorはロジカルセクタ
を指定して、セクタを解放するルーチンへのポインタで
ある。
てデバイスドライバを利用することになる。固定ディス
クやフロッピーディスクの場合、ReleaseSec
torには何も仕事をしないプログラムへのポインタが
代入されている。または、ディスクキャッシュのキャッ
シュリストから指定セクタを削除するポインタでもよ
い。
ROMに対するデータ書き込みは、上位層のファイルシ
ステムからセクタ単位で行われる。図4は、フラッシュ
ROM上のセクタ構造の例を示す図である。図4におい
て、151はイレースブロックである。このイレースブ
ロック151は消去の単位であり、フラッシュROMの
技術用語ではセクタと呼ばれるものである。しかしなが
ら、ファイルシステムが扱う単位である“論理セクタ”
と区別する為に、ここではイレースブロックと呼ぶこと
にする。
シュROM15が搭載されていて、各フラッシュROM
15は複数のイレースブロック151によって構成され
る。更に、各イレースブロック151は消去回数カウン
タ152と複数のセクタ153によって構成されている
様子をあらわしている。消去回数カウンタ152は、イ
レースブロック151を消去した回数をカウントする為
に用いる部分である。各セクタ153は、管理領域とデ
ータ領域とを有する。管理領域は、論理セクタ番号を表
すセクタ番号154と、セクタが有効利用されているか
どうかを表わす使用中フラグ155と、セクタとしての
利用が終了したことを表わす使用済みフラグ156とで
構成される。また、データ領域は、512バイトのデー
タ部157によって構成されている。
する必要は無く、図5の様にまとめて管理することも考
えられる。図5は、管理領域用データと、データ領域と
を分離して格納する構成を表す図である。セクタ番号テ
ーブルには、複数のセクタ153の各セクタ番号154
が格納される。また、フラグテーブルには、使用中フラ
グ155、使用済みフラグ156が格納される。更に、
データテーブルには、データ部157の内容が格納され
る。以上のようなデータ構成をとることも可能である
が、少なくとも管理領域と、これに対応するデータ領域
とは同じイレースブロック内に納めるのが好ましい。
より「使用済みフラグ156」の方を優先的に評価す
る。図6は、各フラグの状態に対応した意味を示す図で
ある。図中、FALSEは、消去後の状態と同じ値をと
る。使用中フラグ155がTRUEであっても、使用済
みフラグ156がFALSEであれば、当該セクタのデ
ータは無効である。
>フラッシュROMはPROM同様、データを書き換え
る為に、一度消去してから再書き込みをしなければなら
ない。しかも、消去の最少単位が大きく(例えば64k
バイト)消去時間が長い(例えば1秒)。そこで上位層
のファイルシステムが、特定のセクタを書き換えようと
した場合、消去済みの領域へ論理セクタを移動させるこ
とで、消去動作をせずに、見かけ上で論理セクタのデー
タ書き換えを実現する。
である。同図を用いて、8番セクタ(論理セクタ番号が
8のセクタ)の書き換えを例にして詳しく説明する。図
7中、左側が書き換え前の状態であり((a)の状
態)、右側が書き換え後の状態((b)の状態)であ
る。また、図7において、管理領域中の数字は論理セク
タ番号を表し、(使用中)は使用中フラグ155がTR
UEで使用済みフラグ156がFALSEの状態、(使
用済)は使用中フラグ155と使用済みフラグ156が
共にTRUEの状態を示す。
番セクタのデータが格納されている。今、8番セクタが
FATやファイルの一部として利用されていて、その内
容を変更したい場合に上位層から8番セクタの書き換え
要求が発生したとする。書き換え要求が発生すると、フ
ラッシュROMのデバイスドライバは、フラッシュRO
Mの未使用セクタを検索し、その場所を新たな8番セク
タの場所としてセクタ番号と更新後のデータを格納し、
使用中フラグをTRUEにする。次に、以前8番セクタ
だったセクタの使用済みフラグをTRUEにする。この
ような手順で8番セクタのデータの書き換えが実現され
る。
で論理セクタの書き換えを実行していくと、いずれフラ
ッシュROMのほとんどの領域を“使用済セクタ”にし
てしまうことになる。そこであるタイミングでフラッシ
ュROMを一旦消去して“使用済セクタ”を“未使用セ
クタ”へ戻す必要がある。基本的なガベージコレクショ
ンの動作を図8を用いて説明する。図8は、本実施形態
におけるフラッシュROMのガベージコレクション動作
を説明する図である。
状態である。説明を簡単にするために、本例のフラッシ
ュROMはセクタ6個分の大きさのイレースブロックで
構成されているものとする。イレースブロック(1)に
は使用済セクタが3個と使用中セクタが3個あり、消去
回数は5回である(消去回数カウンタ152の内容が5
である)。イレースブロック(2)には使用中セクタが
1個、使用済セクタが1個、未使用セクタが4個あり、
消去回数は9回である。この状態からガベージコレクシ
ョンを開始する。
る。ここで調整対象イレースブロックは消去を行う対象
としてイレースブロックとなる。整理対象イレースブロ
ックの選定は、使用済セクタをたくさん含むイレースブ
ロックから優先的に選択すると整理効率が良い。しかし
使用済セクタを含まない場合を別として消去回数の少な
いイレースブロックを優先的に整理対象とする方法を取
ればチップ内のイレースブロックを平均的に使用するこ
とができ、書き換え耐久を分散させることができる。選
択手順の詳細についてはフローチャートを用いて後述す
る。
して選定されたとする。次に、整理対照であるイレース
ブロック(1)の使用中セクタ(使用中フラグがTRU
Eで、使用済みフラグがFALSEのセクタ)を他のイ
レースブロックに移動させる。使用中セクタの移動手順
は、セクタの書き換え時と同様に、他のイレースブロッ
ク中の未使用セクタを検索して、使用中セクタ内のデー
タ領域と管理領域の内容をコピーし、移動元の使用中セ
クタの使用済みフラグをTRUEにする。なお、未使用
セクタが無い場合の処理は、後で述べる。
の使用中セクタをすべてイレースブロック(2)へ移動
させた状態である。この結果、イレースブロック(1)
には、使用済セクタしか存在しないことになる。
イレースブロックを検索する。ここで、検索を行うの
は、通常の書き換え動作の際に偶然イレースブロック内
のセクタが全て使用済セクタとなっている場合があるか
らである。続いて検索されたイレースブロックに対して
消去を行う。消去には時間がかかるが、複数のイレース
ブロックを同時に消去できるため、できるだけ一度に複
数のイレースブロックを消去するのが良い。消去が終了
すると消去回数カウンタへ消去前の値+1したものを書
く。これでガベージコレクション完了である。
時の状態である。イレースブロックをできるだけ同時に
消去した方が効率が良いため、使用済セクタと未使用セ
クタがある限りたくさんのイレースブロックを同時に調
整すると良い。極端に消去回数カウンタの値が他のイレ
ースブロックより少ないものがあれば、使用済セクタを
含んでいなくても整理さえすれば、書き換え耐久の分散
を図れる。また、一度整理するとデータの配列が変わる
為、書き換え耐久分散のきっかけとなる。
中に使用済セクタが有るにもかかわらず未使用セクタが
全く無くなってしまった場合のガベージコレクション手
順を図9を使って説明する。図9は、未使用セクタが存
在しない場合のガベージコレクションの動作を説明する
図である。
ョン手順に従い、イレースブロック(1)を整理対象と
して選択する。次にイレースブロック(1)の使用中セ
クタを移動する為の未使用セクタを検索する。未使用セ
クタがある場合は、上述の基本的ガベージコレクション
と同様にセクタの移動を行う。
ば、DRAM14のヒープエリアからデータの退避に必
要な大きさのメモリブロックをアロケーションする。そ
して調整対象イレースブロック内の使用中セクタをDR
AM14へコピーする。この場合は、フラッシュROM
の別の領域へセクタを移動する場合と違い、元のセクタ
の使用済フラグをTRUEにしない。なぜならこの時点
で電子カメラの電池7が外れるなどの事故が起こった場
合に、DRAM内のデータが消滅してしまい、データの
修復ができなくなるからである。図9の(B)は、DR
AM14の領域へコピーされたセクタを表現している。
調整対象のイレースブロックの使用中セクタをすべて退
避出来たら、その調整対象のイレースブロックを選択し
て消去する(図9の(C)参照)。消去が終わった後は
未使用セクタがたくさん出来ているはずである。よっ
て、次に未使用領域を検索してDRAM14へ待避して
あったデータを復元する。図9の(D)は、ガベージコ
レクションが完了した状態を示している。
場合でも、イレースブロックを消去してからデータを復
元するまでの間に電子カメラの電池7が外れるなどの事
故が起こったらデータの修復をすることはできない。つ
まり、セクタのデータをDRAM14に退避する方法は
できる限り取らない方が、よりシステムの安全性を保つ
ことができる。一回、DRAMを使ってガベージコレク
ションを行えば未使用セクタができる。したがって、1
度DRAM14を使ったガベージコレクションを行い、
その後に通常のガベージコレクションを行えば、消去時
間は余分にかかるが安全性を高めることができる。逆に
DRAM14への退避を積極的に行う(例えばヒープ領
域がある限り退避する)と、同時に整理できるイレース
ブロックが増える為効率を上げることができる。従っ
て、安全性と効率のどちらを優先するかを指定できるよ
うに構成してもよい。またシステムの電源が電池7より
供給されている場合は安全性優先、ACアダプタから供
給されている場合は効率優先に自動的に切り替わるよう
に構成してもよい。本処理については図36を参照して
後述する。
り容量が極端に少なくなるとガベージコレクションが多
発してシステムのパフォーマンスが極端に落ちる。総論
理セクタ分を格納できるイレースブロック数よりも1つ
だけ余分にイレースブロックを使用すれば、そのような
事態を避けることが可能である。仮に、1イレースブロ
ックあたり127セクタ格納できるとして、全てのセク
タが使用中となった場合、同じ1セクタを10回書換え
る場合を例にすると、余分イレースブロックがなけれ
ば、10回の消去と1270セクタの書き込みが発生す
る。しかし、イレースブロックを余分に1つ用意してお
けば、10セクタの書き込みしか発生しない。
クの数はチップの構成で決まるので、最低1つのイレー
スブロックが余る様な総論理セクタ数を設計する。
ベージコレクションは消去動作を伴うために非常に時間
がかかる。そのためガベージコレクションをいつ行うか
によってカメラの使い勝ってを左右することとなる。例
えば、セルフタイマなどの数秒間撮影しなくても良い時
にガベージコレクションを行えばユーザがストレスを感
じることがない。
OM15上ではセクタ番号と実際の記憶場所が関連して
いないために特定のセクタを読み書きする為にフラッシ
ュROM15を検索しなければならない。そこでシステ
ムがリブートする際に、フラッシュROM15における
各セクタの格納アドレスを示す記憶場所管理テーブルを
DRAM114上に作成しておくと、フラッシュROM
15に対して高速なデータの読み書きを実現できる。一
度、記憶場所管理テーブルを作成すれば、フラッシュR
OM15に対するセクタの書き込みやガベージコレクシ
ョンによって記憶場所に変更が生じた場合に限って記憶
場所管理テーブルの記憶位置を更新するだけで常に正し
い記憶場所管理テーブルを維持することが可能である。
所管理テーブルを説明する図である。図中、右側にRA
M上の作成した記憶場所管理テーブル140を示した。
0セクタと4セクタは記憶場所不在を意味する値(NUL
L)が入っている。これらは、フォーマット後そのセク
タに対する書き込みが全く無かったか、もしくは、ファ
イルシステムが開放したセクタである。
不要となったセクタを解放する命令をドライバに出した
場合のデバイスドライバの動作は次のようになる。ま
ず、DRAM14上の記憶場所管理テーブル140の指
定されたセクタのポインタを参照してフラッシュROM
15上の現在使用中の該当するセクタを探し出す。そし
て、当該セクタの使用済フラグをTRUEにし、DRA
M14上の記憶場所管理テーブル140の指定セクタの
ポインタへ不在値(NULL)を代入する。
の内容をDRAM14へ待避している場合は、記憶場所
としてDRAMへのポインタが代入されている。また、
同一論理セクタに対する同時操作を禁止する為のロック
変数もテーブルに納めることが望ましい。
メラとパーソナルコンピュータ22で、記憶媒体上のデ
ータ交換が出来ると都合が良い。本実施形態で説明した
フラッシュROM管理方式を使用して、現在パーソナル
コンピュータで普及しているMS−DOS(商標)と互
換性があるファイルシステムを実装することができる。
MS−DOSには一度消去したファイルを復元するユー
ティリティが付属している。ところが、本実施形態では
フラッシュROMの消去効率を向上させる為に、消去し
たセクタのデータ部を失ってしまう様な構成となってい
る。カメラで消去した媒体をパーソナルコンピュータで
復元する事が原理的にできない構成になっているのであ
る。
機能を禁止できれば、このような事故を防ぐことができ
る。本実施形態では、MS−DOSがファイル復元の時
に使用するデータを破壊することでファイル復元機能を
禁止する。これをいかに説明する。
するとディレクトリに空きスロットができる。ディレク
トリにはファイル名/タイムスタンプ/最初のクラスタ
などの情報が格納されている。図45はディレクトリス
ロットの特徴を表す図である。ディレクトリスロットの
最後には、リストの最後であることを示すEndOfDirが格
納されている。
頭が削除を表すシンボルに置き換えられ、FATのクラ
スタチェーンが消去される。この様子を図46に示す。
ットに残った情報を元に、ファイルの復元を試みる。逆
にこの情報がなければ、ファイルの復元を防止できる。
システムでファイルを消去した後の状態を表している。
本実施形態では、ディレクトリエントリテーブルの最後
に格納されているファイルを消去したいファイルのエン
トリに上書きし、ディレクトリエントリテーブルの最後
のファイルだった部分にEndOfDirを上書きするように構
成する。こうすることにより、ファイル復元機能による
ファイルの復元を防止できる。
と同様にセクタのデータをそのまま残しておき(セクタ
の開放を行わない)、ガベージコレクション時にまとめ
てFATとデータの関係を参照してしながら不要部分を
消去する方法もある。
ュROMでは、消去前のデータが“0”になっている方
が高速に消去処理できる。フラッシュROMの消去完了
の確認は、データ書き込み時と同様にデータポーリング
によって行われる。従って、このようなフラッシュRO
Mを使う場合は、バックグランド処理で“使用済”とな
ったセクタのデータを0に書き換える「前処理」を行う
ことで性能を向上させることができる。最も低いプライ
オリティのタスクとして実行するようにしておけば、ス
ループットの低下にはつながらない。
済セクタ”管理の為にフラグを用意しておけば前処理の
効率を上げることができる。
て、「未使用」「使用中」「使用済」に加えて「前処理
済」の4つの状態を表示できる管理フラグをフラッシュ
ROMのセクタ内部へ用意すると効率が良い。
度向上のための前処理の制御手順を表すフローチャート
である。同図において、ステップS2501にて、使用
済でかつ前処理の済んでいないセクタを抽出する。これ
は、セクタ内の管理フラグが「使用済」となっていて、
かつ「前処理済」となっていないセクタを抽出すること
で実現できる。ステップS2502において、抽出され
たセクタに対してデータ「0」を上書きを開始する。ス
テップS2503では当該セクタについて前処理を終了
したか否かを判断する。フラッシュROMへの書込みは
1バイト単位であるので、1セクタ分のバイト数の書込
みが必要となる。当該セクタに対する前処理が終了して
いなければステップS2504へ進み、他のタスクへ制
御を移す。
ィの低いタスクで行われるので、CPU5がアイドル状
態となったときに再び本処理が実行される。この場合処
理はステップS2503へ戻る。この時点で、前回の書
込みが終了していなければそのまま他のタスクへ処理を
移行する。
対して「0」の書込みを終えると、ステップS2503
からステップS2505へ進み、当該セクタの管理フラ
グを、「前処理済」を示す状態にセットする。そして、
引き続き、他のセクタについて前処理を行うために、ス
テップS2501へ戻る。
き込み発生の度に記憶場所を変更し、その度に「未使用
セクタ」が発生する。そこで、使用頻度の多い部分を特
に優先的にバッファリングするキャッシュが有ればトー
タルの書き込み頻度が激減する事が予想される。キャッ
シュとして用意するメモリは多ければ多いほど良いが、
システムのメモリには限界がある。
ャッシュ中に存在する確率も高いが、使用頻度の低いセ
クタを大量に読み書きした場合、当然キャッシュから吐
き出されることになる。
領域を優先的にキャッシングする様に構成すれば、スル
ープットの向上を期待できる。なぜならファイルシステ
ムの管理領域は頻繁に更新されているからである。
S−DOSのFATシステムの場合、720kや1.4
Mといったフォーマット形式では1クラスタが1セクタ
で構成されている為、シーケンシャルにファイルを読む
場合でも2回に1回はFATを読まなければならない。
ファイルを書く場合は、さらにたくさんのFATアクセ
スが発生する。このため、システム中にたくさんのファ
イルがオープンされるとキャッシュのヒット率が落ちて
しまう。
が、FATシステムにおいてFATのみを対処にしたキ
ャッシュは、DISK全体を対象にしたキャッシュに対
して1/2のメモリで同等のヒット率を確保できる。図
11はキャッシュソフトウエアの階層的な位置付けを表
す図である。キャッシュのソフトウェアは図11の様に
ファイルシステムとフラッシュROMの中間的な場所と
なる。
造を表わす図である。片方向線形リスト構造でバッファ
全体を管理している。検索方向順にデータが古くなって
いる。論理セクタ番号が12,11,6,5の順番でア
クセスすれば、図12に示されるような順番となる。ま
た、各セクタには、変更フラグが設けられており、キャ
ッシュ上でデータの更新があった場合、変更フラグがF
ALSEからTRUEに変化する。このようなFATキ
ャッシュの読み出し手順、及び書き込み手順を図13、
14を参照して説明する。図13はFATキャッシュの
読み出し手順を表すフローチャートである。図14はF
ATキャッシュの書込み手順を表すフローチャートであ
る。
セクタの読み出しを開始する。ステップS1502でN
セクタがFATかどうかを判断する。FATでなけれ
ば、ステップS1509でフラッシュROM15からデ
ータを読み出す。
ATならステップS1503へ進み、キャッシュリスト
を検索する。ここでは、図12で説明した片方向線形リ
ストを検索することになる。キャッシュ中にNセクタが
存在すればステップS1507へ進み、Nセクタのバッ
ファからデータを読み出す。
ャッシュリスト中に存在しなかった場合は、ステップS
1504へ分岐し、最も長くアクセスされていないセク
タのデータ(図12ではセクタ番号12のデータ)の吐
き出しを行う。まず、ステップS1504では、キャッ
シュリストの最後の項の変更フラグを判断する。もし変
更フラグがTRUEなら、ステップS1505へ進み、
変更内容をフラッシュROM15へ書き込む。変更が無
い(変更フラグがFALSEの場合)なら、そのままス
テップS1506へ制御を移す。読み出し手順の中で書
き込みを行うのは奇妙に思うかもしれないが、バッファ
がキャッシュの吐き出しが起こるまで極力書き込み動作
を行わない方が効率が良い。
5からリスト最後のバッファへNセクタの内容を読み出
す。ステップS1507でNセクタのバッファからデー
タを読み出す。ステップS1508でNセクタのバッフ
ァをキャッシュリストの先頭へ移動させる。これは、図
12において、各セクタが有する「次のバッファー」
(次のバッファーを示すアドレス)の値を変更すること
で達成される。FATキャッシュへのアクセスが行われ
る度にステップS1508の動作が繰り返されること
で、自然にアクセスされないバッファがリストの先頭か
ら最後に向かってシフトしていく。よって、ステップS
1504でリスト最後のバッファを選ぶのは、最も古い
バッファを吐き出す為である。
る。
を開始する。ステップS1601では、NセクタがFA
Tかどうかを判断する。FATでなければ、ステップS
1608へ進み、フラッシュROM15へのデータの書
き込みを実行する。
ATならば、ステップS1602へ進み、キャッシュリ
ストを検索する。キャッシュ中にNセクタが存在すれば
ステップS1606へ進み、Nセクタのバッファへデー
タの書き込みを実行する。
ャッシュリスト中に存在しなかった場合は、ステップS
1603へ分岐し、バッファから最も長くアクセスされ
ていないセクタの吐き出しを行うとともに、Nセクタを
キャッシュに登録する。まず、ステップS1603でキ
ャッシュリストの最後の項の変更フラグを判断する。も
し変更フラグがTRUEなら、ステップS1604で変
更内容をフラッシュROMへ書き込み、ステップS16
05へ進む。また、変更が無いなら(変更フラグがFA
LSEなら)そのままステップS1605へ制御を移
す。ステップS1605では、キャッシュリストの最後
の項をNセクタとする。その後、ステップS1606
で、Nセクタのバッファへデータの書込みを実行する。
のバッファをキャッシュリストの先頭へ移動させる。書
き込み手順の中でフラッシュROMへの書き込みを行わ
ないのは奇妙に思うかもしれないが、キャッシュの吐き
出しが起こるまで極力書き込み動作を行わない方が効率
が良い。
1601における、FATの判断であるが、ICカード
等の完全に上位層(ファイルシステム)の情報を共有で
きないシステムでも、書き込みデータの内容を解析する
ことでFAT領域の場所を特定できる。なぜならば、論
理セクタOに相当する部分にFATの位置等の情報か格
納されていることが決まっているからである。
み>フラッシュROM15に対する全ての(管理領域を
含む)読み書きは、最終的に1バイトの読み書き命令に
よって実行される。フラッシュROM15の書き込みに
は、通常のPROM同様の時間がかかる。1バイトの書
き込みが終了するまでは、同じチップへの書き込みはで
きない。書き込み終了信号として信号線が用意されてい
るチップと特別な信号が用意されていないチップがあ
る。後者の場合は、データポーリングと言う手法で書き
込み終了を確認しなければならない。データポーリング
とは、ベリファイに非常によく似た方法で、書き込みデ
ータと読み出しデータが一致するまで待つビジー制御方
法である。
出来る場合は、CPU5への割り込みと併用して書き込
み待ち中のCPUタイムを別のタスクへ割り当てること
ができる。
は、データポーリングを行なわなければならない。デー
タ書き込みの効率をあげる為にはいくつものチップに対
してパイプライン的に書き込みを行い、データポーリン
グ時間のロスを押さえなければならない。そのため、1
バイトの書き込みが完了する前に次の動作へ制御を移す
必要がある。新たな読み書きを行う前に以前の書き込み
が完了しているかどうかを確認するのが良い。図15
は、その様子をC言語で表現したものである。
関数の入り口である。最初の引数は最後に書き込んだア
ドレスとデータを保存するための構造体へのポインタ、
第2の引数は書き込むアドレス、第2の引数は書き込む
データである。
参照してチップに書かれたデータと最後に書いたデータ
を比較して、両者が一致するまでループを実行する。こ
れがデータポーリングである。前回の書き込みが完了す
るとこのループから抜け出す。
込む。5行目と6行目で、今回書いたアドレスとデータ
を保存する。この情報は、次のデータポーリングで利用
される。
クの次に実行されるべき同一プライオリティの実行可能
状態のタスクへCPUを譲るオペレーティングシステム
のシステムコールである。
1の引数はアドレスとデータを保存するための構造体へ
のポインタ、第2の引数は読み出すアドレスである。こ
の関数は上位のプログラムに対して第2の引数で指定さ
れたアドレスに格納されたデータを返す。
レスが最後に書き込んだアドレスなら戻す値は最後に書
き込んだデータなので構造体の中に保存された情報を返
す。12行目は3行目と同じようなデータポーリングで
ある。データポーリングに成功しないと同じチップの別
のアドレスを読むことができない。データポーリングが
終わって13行目で指定したアドレスの内容を戻してい
る。
しておけば、チップ数と書き込みタスクを増やすだけで
確実に見かけ上の書き込み速度を向上させることができ
る。また、全体のスループットを上げる為にわざとチッ
プ数分のセクタバッファを用意(2チップなら2セク
タ)して書き込む内容がバッファに溜まるまで処理しな
いようにすると効果がある。
データポーリングをデータ書き込み直後に行うのではな
く、次の書き込みの前に行うことである。そのために前
回書いたアドレスとデータを保存しておくRAM領域を
チップごとに確保し構造体「struct DEV」として格納し
ているのである。
ROMへの1バイトデータの書込み手順を表すフローチ
ャートである。本フローチャートは、1つのフラッシュ
ROMチップへの書込みの制御手順を示している。ステ
ップS2601では、前回の書込み処理が完了したか否
かを判断する。前回の書込み処理が終了していなければ
ステップS2604へ進み、そのまま他のタスクへ制御
を移す。
ば、次の書込みデータを準備し、これをDRAM14へ
保存する。上述のステップS2601における書込み終
了の判断は、フラッシュROMに書き込まれたデータ
と、このステップS2602で保持されたデータとの比
較によって行われる。
ータの書込みを開始する。以上のような処理によれば、
複数のフラッシュROMチップに対して、複数のタスク
で書き込みを行うような場合に、いわゆるラウンドロビ
ン方式を適用した書き込み処理が可能となり、複数のR
OMチップに対して効率良くデータの書き込みが行え
る。なお、マルチタスクの管理プログラムは、上述のR
OM13に格納されている。組み込みようのリアルタイ
ムOSとしては、VxWorks(商標)やpSOS(商標)等が
市販されており、ROM13にこれらのようなリアルタ
イムOSが格納されている。
>データの書き込みや消去の際にPROM同様に12V
等の特別な書き込み電圧を必要とするチップや、書き込
み電圧を与えることで書き込みが高速になるチップがあ
る。この様なチップを使用する場合に専用のDC/DC
コンバータ等の電圧発生部を設けると電子カメラのコス
トアップにつながる。ところが、従来よりカメラにはス
トロボの充電や、機構部分やCCDの駆動等、特別な電
圧が必要な部分がありDC/DCコンバータ等を搭載し
ている。そこで、フラッシュROMの書き込み電圧とス
トロボ充電やメカ駆動を時分割多重で行うことで、少容
量のDC/DCコンバータでシステムを構築でき、シス
テムのコストを押さえることができる。
量を越えない様に電源を管理するプログラムをC言語で
表現したものである。Line1〜6が1ステップのズ
ームアップ関数で、Line7〜13がフラッシュRO
Mへ1セクタ書き込む書き込み関数である。ズームアッ
プ関数はLine3でDC/DCコンバータの資源管理
用のセマフォ“SemDCDC”を獲得して、モータを
1ステップ動かす関数をLine4で呼び出す。モータ
駆動が終わるとDC/DCコンバータの資源管理用のセ
マフォ“SemDCDC”を開放する。セマフォはマル
チタスクのオペレーティングシステムで資源を管理する
為の一般的な方法であり、多くのオペレーティングシス
テムがシステムコールとして用意している。
C”が他のタスクによって使用されていたとすると、他
のタスクがセマフォ“SemDCDC”を開放するまで
ズームアップをしようとしたタスクの実行が保留され
る。
emDCDC”を獲得し、フラッシュROMへ1セクタ
のデータを書き込む。Line11でデータポーリング
を行い最後の書き込みが終了したことを確認したら、L
ine12でセマフォ“SemDCDC”を開放する。
このようにプログラムを構成すれば、ズームアップとフ
ラッシュROMの書き込みを同時に行うことは無くな
る。ズームは1ステップ単位であり、書き込みはセクタ
単位なので非常に短い保留時間の後に必ず電源を獲得で
きる。
Line1はズームアップする関数の入り口である。本
関数には引数はない。Line3で電源の使用権利とし
て宣言したSemDCDCの権利を一つ獲得する。この時、使
用権利が1つもなければこの関数を呼び出したタスクの
実行は保留される。電源の使用権利を別のタスクが解放
すればZoomUpを呼び出したタスクが再び実行可能状態に
戻る。そして、Line4のモーターを動かす関数を呼
び出すことができる。そして、Line5で、電源使用
権利を返却してこの関数の仕事は終了する。Line7
は1セクタのデータをEEPROMに書き込む関数の入
り口であり、Line9de電源利用権利を獲得してL
ine12で返却している。
するためのフローチャートである。同図において、ステ
ップS1701で、電源コントローラ9によるDC/D
Cコンバータ8の出力電力の供給が解放されたか否かを
判断する。ステップS1702では、電源確保のための
指示の内容を解析し、この指示結果に従って、ステップ
S1703、1705、1707、1709のいずれか
に分岐する。
れば、ステップS1703へ進み、CCD2に対してC
CD駆動のための電力を供給する。そして、ステップS
1704にて、CCD駆動の終了(即ち撮影動作の終
了)を検出すると、ステップS1711へ進み、電源の
解放を行う。また、ストロボの充電要求であれば、ステ
ップS1705へ進み、電源コントローラ9に対してス
トロボ21に対する充電電力を提供させる。そして、ス
テップS1706でストロボの充電を完了したら、ステ
ップS1711へ進み、電源の解放を行う。なお、充電
の電力供給は、所定時間の充電を行う毎に他の電源供給
のために電源を解放する。即ち、ストロボ21への充電
を管理するプログラムは別個に所定のタスクに存在し、
充電の完了はそのタスクによって管理される。
ば、ステップS1707へ進み、ズーム機構の駆動系
(不図示)へ電力供給を行う。そしてステップS170
8で、1ステップのズーム動作を終えたらステップS1
711へ進み、電源を解放する。更に、指示の内容がフ
ラッシュROMへの書込みであれば、ステップS170
9へ進み、フラッシュROM15への書込み電力を供給
する。1セクタ分の書込みが終えたら、ステップS17
10からステップS1711へ進み、電源を解放する。
708、1710において、各動作の終了を待つが、こ
の待ちループにおいて、他のタスクへの制御が移り、マ
ルチタスク処理が遂行される。この管理処理は、各タス
クから随時起動が可能であり、複数のタスクで同時に起
動される可能性もある為、ステップS1701で電源解
放のチェックを行っている。
分割で電源を利用することが可能となる。しかしなが
ら、すべてのシステム(CCD/ストロボ/ズーム/フ
ラッシュROM)が依存しあった1つのプログラムであ
る。このようなソフトウエアを開発すると、開発/デバ
ッグ/メンテナンスのコストが大きくなり、拡張性や柔
軟性を保つのが難しくなる。
の提供する資源管理機能を用いることで開発効率を向上
させることができる。そこで上述のセマフォによる資源
管理を行う。即ち、CCDの駆動部、ストロボの駆動
部、ズームの駆動部、フラッシュROMの駆動部のそれ
ぞれの制御プログラムが、電源という資源(セマフォ)
を獲得、解放することで、時分割された電源の割当てが
行える。
用を説明する図である。同図に示されるように、あるタ
スクA(例えばCCD)によって電源要求が発生したと
き、電源セマフォが解放された状態にあれば、そのセマ
フォを獲得して、電源を占有する(ステップS2001
〜S2003)。続いてステップS2004において、
当該電源よりの電力供給を得て所定の処理を行うと、ス
テップS2005へ進んでセマフォを解放する。
たタスクBでは、ステップS2011における電源要求
ではセマフォを獲得できず、ステップS2012によ
り、セマフォの解放待ちとなる。そして、タスクAより
セマフォが解放されると、このセマフォをタスクBが獲
得して、電源を占有する(ステップS2013)。その
後タスクBで所定の処理を実行し(ステップS201
4)、電源を解放する(ステップS2015)。
理により、電源の時分割利用が可能となる。
利を示すセマフォが一つしかないが、複数個のセマフォ
が存在するようにしても良いことは言うまでもない。
7は、本実施形態のリブートからサービスの開始までの
動作手順を表わすフローチャートである。ステップS1
01でシステムがリブートすると、ステップS102で
フラッシュROM15の管理領域をスキャンし、DRA
M14上に記憶場所管理テーブル140を作成する。ま
た、この処理と並行して、DRAM14上の未使用セク
タカウンタ、使用済セクタカウンタ、使用中セクタカウ
ンタへ、それぞれの状態に対応するセクタがいくつ有る
かを数え、セットする。このカウンタは、後にフラッシ
ュROM15に対して操作を行ったときに更新され、記
憶効率を判断するのに用いられる。その後、ステップS
103へ進み、各種のサービスを開始する。
の手順を表わすフローチャートである。まず、ステップ
S201でNセクタの読み出しを開始する。ステップS
202では、Nセクタをロックする。セクタのロックは
ロック変数を使って行う。このロック変数は、記憶場所
管理テーブル140で各セクタの記憶場所とともに管理
される。ステップS202では、セクタが既に他のタス
クによってロックされている場合、他のタスクによって
アンロックされるのを待ち、他のタスクによってアンロ
ックされた後で当該セクタのロックを行う。ロックした
セクタはステップS206でアンロックするまでの間、
自タスクによって占有することが出来る。
ると、ステップS203で記憶場所管理テーブルを参照
して、当該セクタに有効なデータ記憶されているかどう
かを確認する。有効なデータが記録されて無い場合は、
ステップS204へ分岐する。ステップS204では、
ダミーのデータ(例えば全部0など)をセクタの内容と
して読み出す。ステップS203で有効なデータが格納
されていると判断された場合は、ステップS205へ分
岐する。ステップS205では記録場所管理テーブルの
値を元にフラッシュROM(または主記憶)からデータ
を読み出す。
Nセクタが主記憶(DRAM14)へ退避されていた場
合は、記憶場所管理テーブルのポインタは主記憶をポイ
ンティングとしている。また、図中点線で囲んだ部分は
Nセクタを占有している期間である。この様なロック機
構によって1つのセクタ操作の安全性を保証している
為、ガベージコレクションの途中でも操作中でないセク
タを自由に読み出すことが可能となっている。
手順を表わすフローチャートである。ステップS301
でNセクタの書き込みを開始する。ステップS302で
ステップS202と同様に、論理セクタのロックを行
う。
テーブルを検索して、Nセクタに有効なデータが記録さ
れているかどうかを判断する。有効なデータが記録され
ていればステップS304へ、記録されてないならばス
テップS305へそれぞれ分岐する。ステップS304
では、それまで有効なデータとして記録されていたフラ
ッシュROM(または主記憶)のデータを破棄する。ス
テップS304におけるデータ破棄の処理は、図21の
フローチャートを用いて詳しく説明を加える。ステップ
S304の後ステップS305へ制御が移る。
15においてNセクタを書き込むための記憶領域を獲得
する。ステップS305における記憶領域の獲得手順は
図23を用いて詳しく説明を加える。ステップS305
で正常に記憶領域の獲得に成功すれば、ステップS30
8へ制御を移す。ステップS308では獲得したフラッ
シュROM15の領域へNセクタのデータを書き込む。
Mに記憶場所が無い場合、即ち記憶領域の獲得に失敗し
た場合はステップS306へ分岐する。ステップS30
6はデータの退避用に主記憶を獲得する。主記憶の領域
確保はオペレーティングシステムが提供するメモリ管理
機能によって行う。これはC言語でalloc関数に相
当する機能である。そして確保した領域を片方向線形リ
スト構造によって管理する。
ストの様子である。(a)は退避データリストにデータ
が無い状態であり、リストには、END_OF_LIST が代入さ
れている。(b)は退避データリストに、セクタ番号
3,20,221の各セクタの内容が退避されている状
態である。
ルを更新する。ここで、記録したフラッシュROM(ま
たは主記憶)へのポインタが代入される。ステップS3
10で論理セクタのアンロックを行う。図中点線で囲ま
れた期間その論理セクタを占有できる。ステップS31
1で記憶効率の評価を行う。記憶効率の評価手順につい
ては、図21のフローチャートを用いて詳しく説明を加
える。記憶効率の評価の結果、記憶効率が悪化した場合
は、ステップS312へ制御を移す。ステップS312
では上述したガベージコレクションを行う。ガベージコ
レクションについては、図24のフローチャートを参照
して詳しく説明を加える。ステップS313でNセクタ
の書き込みが終了してメインのルーチンへ復帰する。
のは、記憶場所のポインタ(バス空間上のアドレス)で
ある。図20の(b)の主記憶に待避されたデータの
「次のデータへのポインタ」の次のフィールド(図中で
はすぐ下に示されている)からは、図10の左側にある
フラッシュROM上のデータ構造と互換性がある。記憶
場所管理テーブルに納められるのはこの互換部分へのポ
インタである。このように構成することにより、データ
の読み出しプログラム側でフラッシュROMと主記憶を
単一のアルゴリズムで扱うことが可能となる。
手順(上述のステップS304)を説明する。図21
は、記憶を破棄する手順を表わすフローチャートであ
る。
開始する。ステップS402では、指定されたセクタを
記憶する領域が主記憶上にあるかどうかを判断する。主
記憶上にあるならステップS405へ分岐する。ステッ
プS405で待避セクタリスト(本例では、図20で示
した片方向線形リスト)から指定領域を削除する。
順は、まずリストの先頭から検索方向順にリストをたど
り、ポインタが自分をポインティングしている項を検出
する。そして、この検出された項のポインタに現在自分
がポインティングとしている値を代入することで実現す
る。そして、ステップS406で、リストから削除した
主記憶領域をオペレーティングシステムへ返却する。オ
ペレーティングシステムへの記憶領域の返却はC言語の
free関数に相当する機能である。
が主記憶上でない(すなわちフラッシュROM上)なら
ステップS403へ分岐する。ステップS403では、
指定されたフラッシュROM上のセクタの管理フラグを
“使用済”へ変更する。これは、使用済みフラグをTR
UEにセットすることで達成される。ステップS404
では主記憶上の未使用セクタカウンタの値を1つ減少さ
せる。ステップS407で復帰する。
11)について説明する。図22は、記憶効率の評価手
順を表わすフローチャートである。
する。ステップS502では、主記憶に設定された未使
用セクタカウンタの値と使用済セクタカウンタの値を比
較する。ここで、使用済セクタカウンタの値が未使用セ
クタカウンタの値に対して同じか上回った場合、上位プ
ログラムに対して記憶効率の悪化をレポートする様に構
成している(ステップS502、S504)。また、未
使用セクタカウンタの値が使用済セクタカウンタの値よ
りも大きければ、評価結果を正常とし、正常復帰する
(ステップS503)。
手順(ステップS305)について説明する。図23は
フラッシュROMの記憶領域の獲得手順を表わすフロー
チャートである。
憶領域の獲得を開始する。ステップS602で未使用セ
クタの検索権利を獲得する。ここでは、オペレーティン
グシステムの提供するセマフォの機能を使用して未使用
セクタの検索権利を管理している。ここでは、ステップ
S602からステップS609/ステップS611まで
の点線で囲まれた処理期間だけ未使用セクタの検索権利
を独占出来る。複数のタスクが同時に同一領域を獲得す
る様な事態を防ぐ為のしくみである。
初のセクタへポインタを移動する。ステップS603で
そのセクタの管理フラグ(使用中フラグ、使用済みフラ
グ)を参照して、当該セクタの使用状態を判断する。使
用済みか使用中ならステップS605へ分岐する。ステ
ップS605で現在ポイントしているセクタが最後のセ
クタならステップS611へ分岐する。この場合、使用
可能な領域がフラッシュROM15に存在しないことに
なるので、ステップS611で未使用セクタの検索権利
を開放した後、ステップS612で異常復帰する。ま
た、ステップS605で現在ポイントしているセクタが
最後のセクタでなければ、ステップS606へ分岐す
る。ステップS606では、ポインタを次のセクタへ移
動させてからステップS604へ戻る。
管理フラグが未使用となっていればステップS607へ
分岐する。ステップS607では、フラッシュROMの
管理フラグを“使用中”へ変更する(使用中フラグをT
RUEにする)。そして、ステップS608で、主記憶
に設けた未使用セクタカウンタの値を1つ減少させる。
この場合は、フラッシュROMへの記憶領域の獲得に成
功しているので、ステップS609で未使用セクタの検
索権利を開放し、ステップS610で正常復帰する。
312)の手順について説明する。図24はガベージコ
レクションの手順を表わすフローチャートである。
を開始する。ステップS702では、整理対象のイレー
スブロック(以後、整理対象ブロック)を選出する。整
理対象ブロックの選出手順については、図25のフロー
チャートを用いて詳しく説明を加える。ステップS70
3では、整理対象ブロックの未使用セクタを使用済化す
る。この使用済化の手順については、図26のフローチ
ャートを用いて詳しく説明を加える。ここで、最初に整
理対象ブロック内の未使用セクタを使用済化させる目的
は、ガベージコレクション中であっても、他のタスクが
整理対象ブロック内のセクタを含むセクタへの読み書き
が可能な構成となっており、ガベージコレクション中に
他のタスクによって整理対象ブロック内のセクタへ新た
なデータが書き込まれることを防止する為である。
中の使用中セクタを他の記憶領域(即ち、他のイレース
ブロック)へ移動させる。使用中セクタを他の記憶領域
へ移動させる処理については、図27のフローチャート
を参照して詳しく説明を加える。
の移動を終了した整理対象ブロックの消去を実行する。
整理対象ブロックを消去する手順については、図28の
フローチャートを参照して詳しく説明を加える。なお、
この整理対象ブロックの消去において、消去回数カウン
タ152の内容を主記憶にコピーしておく。ステップS
705における整理対象ブロックの消去を終えると、ス
テップS706で主記憶に退避したデータをフラッシュ
ROMの当該イレースブロックの消去回数カウンタへ戻
す。そして、ステップS707でガベージコレクション
から復帰する。
対象ブロックの選出手順(ステップS702)について
説明する。図25は整理対象ブロック選出する手順を表
わすフローチャートである。
クの選出を開始する。ステップS802で評価ポインタ
に最初のイレースブロックをセットする。同様に、ステ
ップS803で、整理対象候補ポインタを最初のイレー
スブロックにセットする。
の示すイレースブロックに使用済セクタが含まれている
かどうかを判断する。使用済セクタが含まれていなけれ
ばステップS804,ステップS805をスキップして
ステップS807へ制御を移す。
示すイレースブロックに使用済セクタが含まれている場
合には、ステップS805へ制御を移す。ステップS8
05では、整理対象候補ポインタの示すイレースブロッ
クの消去回数カウンタの値と評価ポインタの示すイレー
スブロックの消去回数カウンタの値を比較する。もし評
価ポインタの示すイレースブロックの消去回数の方が少
なければステップS806へ制御を移す。ステップS8
06では、整理対象候補ポインタへ評価ポインタを代入
する。一方、ステップS805でもし評価ポインタの示
すイレースプロックの消去回数のほうが多ければそのま
まステップS807へ制御を移す。
イレースブロックを示しているかどうかを判断する。も
し最後のイレースブロックでなければ、ステップS80
8で評価ポインタを次のイレースブロックへ移動させた
後、ステップS804へ戻る。以上のように、ステップ
S804〜S808の処理を繰り返すことで、整理対象
候補ポインタは、使用済みセクタを含み、消去回数の少
ないイレースブロックを示すようになる。
イレースブロックを示している場合はステップS809
へ分岐する。ステップS809ではガベージコレクショ
ン処理(図24の処理)に復帰する。この時点の整理対
象候補ポインタの示すイレースブロックが整理対象とし
て選出される。
使用セクタを使用済み化する処理(ステップS703)
について説明する。図26は、整理対象ブロックの未使
用セクタを使用済み化する手順を表わすフローチャート
である。
ップS902で、整理対象ブロックの最初のセクタへポ
インタを移動させる。次に、ステップS903で、未使
用セクタの検索権利を獲得する。これは、図23のフロ
ーチャートのステップS602と同様の効果があり、ス
テップS908までの点線で囲まれた間、未使用セクタ
の検索権利を独占する。即ち、整理対象ブロックの全セ
クタを対象にスキャンして未使用セクタを使用済セクタ
へ変更するまでの間、他のタスクが未使用セクタの検索
をすることを禁止する。しかし、管理フラグのみの操作
で未使用セクタを使用済セクタへ変更するので、検索権
利の独占時間は短く、全体のスループットが低下するこ
とはない。
すセクタが未使用セクタかどうかを判断する。もし未使
用セクタならステップS905へ分岐する。ステップS
905でその記憶を廃棄する。ステップS905の処理
手順は図21のフローチャートで説明した通りである。
この処理により、未使用セクタが使用済みセクタに変更
される。ステップS906では、ポインタが整理対象ブ
ロックの最後のセクタを示しているかどうかを判断す
る。最後のセクタを示していればステップS908へ、
そうでないならステップS907へ分岐する。ステップ
S907ではポインタを次のセクタへ移動させてステッ
プS904へ制御を戻す。
対象ブロック最後のセクタならステップS908で未使
用セクタの検索権利を開放し、ステップS909でガベ
ージコレクション処理(図24のフローチャート)へ復
帰する。
他のイレースブロックの未使用セクタへ移動する処理
(ステップS704)について説明する。図27は、整
理対象ブロックの使用中セクタの移動手順を表わすフロ
ーチャートである。
テップS1001で整理対象ブロックの最初のセクタへ
ポインタを移動させる。以下のステップS1002〜S
1012では、ポインタが指し示すセクタについて処理
を行う。
ラグ(使用中フラグ、使用済みフラグ)を判断する。ス
テップS1002で管理フラグの値が「使用中」となっ
ていたらステップS1003へ制御を移し、「使用済」
となっていたらステップS1012へ制御を移す。ステ
ップS1003で、論理セクタをロックする。ロックし
たセクタはステップS1011でアンロックされるまで
の間、自タスクで占有される。
る。ステップS1004における記憶領域の確保の手順
は、図23のフローチャートで説明した通りである。こ
こで、整理対象ブロック内の各セクタは上記ステップS
703の処理で、全て使用済み化されているので、確保
される記憶領域は整理対象ブロック以外のイレースブロ
ックとなる。
ップS1008へ進む。ステップS1008では、獲得
した領域へ当該セクタのデータをコピーする。そして、
セクタの移動に従って、ステップS1009で記憶場所
管理テーブル140を更新する。
得に失敗した場合は、ステップS1005へ分岐する。
ステップS1005では、データ退避用の記憶領域を主
記憶(DRAM)より獲得する。データ退避用記憶領域
の獲得は図19のフローチャートのステップS306で
説明した通りである。ステップS1006では、獲得し
た領域へ当該セクタのデータをコピーする。そして、ス
テップS1007で記憶管理テーブルを更新する。ステ
ップS1010で元の記憶を廃棄する。即ち、ポインタ
の指し示すセクタの使用済みフラグをTRUEにセット
する。そして、ステップS1011で当該論理セクタを
アンロックする。
すセクタが、整理対象ブロックの最後のセクタかどうか
を判断する。最後のセクタであればステップS1014
へ、最後のセクタでなければステップS1013へそれ
ぞれ分岐する。ステップS1013では、ポインタを次
のセクタへ移動させて、ステップS1002へ戻り、次
のセクタについて上述の処理を繰り返す。また、ステッ
プS1014では、整理対象ブロック内の全てのセクタ
について処理を終えているので、ガベージコレクション
処理(図24のフローチャート)へ復帰する。
ップS705)について説明する。図28は、整理対象
となったイレースブロックの消去手順を表わすフローチ
ャートである。
テップS1102で整理対象ブロックの消去回数カウン
タを主記憶へコピーする。ステップS1103では整理
対象ブロックの消去を実行する。ステップS1104で
は、主記憶へコピーした消去回数カウンタの値を1増加
させた値をフラッシュROMへ書き込む。即ち、当該整
理対象ブロックの消去カウンタの値を、消去処理前の値
より1増加させる。その後、ステップS1105でガベ
ージコレクション処理(図24のフローチャート)へ復
帰する。
ン処理は、極力フラッシュROMを用いた処理であり、
退避データの安全性が高い。しかしながら、上述の<未
使用セクタが無い場合>の項で説明したように、積極的
に主記憶(DRAM14)を用いて使用中セクタのデー
タを待避し、複数個のイレースブロックを消去すると消
去処理の効率がよい。但し、DRAM14にデータを待
避するので、待避中のデータに関して安全性が低下する
(例えば電池が外れて電源供給が停止するとDRAMに
待避したデータが失われることになる)。そこで、電源
の種別を判断し、供給電源が電池の場合は待避データの
安全性を重視し、ACアダプタの場合は電源供給が停止
する危険性が少ないので消去処理の効率を重視するよう
に構成してもよい。この場合の処理について図36を参
照して説明する。
レクション処理を切り換える場合の処理手順を説明する
フローチャートである。同図において、図24のフロー
チャートで示される処理と同じ処理を行うステップにつ
いては同一のステップ番号を付し、ここでは詳細な説明
を省略する。
クション処理が起動されると、ステップS1301へ進
み、当該装置への電源供給の形態を判断する。ここで
は、図1の電源コントローラ9が、電源の供給元が電池
7であるかACアダプタ23であるかを判断し、CPU
5に通知する。電源種別が電池7であった場合は、ステ
ップS1304へ進み、上述の図24で示したガベージ
コレクション処理を実行する。
別がACアダプタであった場合は、ステップS1302
へ進む。ステップS1302では、図24のステップS
702、S703、S704に相当する処理を実行し、
選出した整理対象ブロック内の未使用セクタの使用済み
化と使用中セクタの待避を行う。そして、ステップS1
303において、主記憶(DRAM14)にセクタの待
避を行うのに十分な空き領域があるか否かを判断し、十
分な空き領域があればステップS1302へ戻る。ステ
ップS1302では、前回の整理対象ブロックとは別の
整理対象ブロックを選出して、上述の処理を繰り返す。
ると、ステップS1303からステップS1304へ進
み、上述の処理で選出された整理対象ブロックの消去を
行う。そして、ステップS706で主記憶に待避したデ
ータをフラッシュROM15に戻して本処理を終了す
る。
源がACアダプタによって供給される場合は、主記憶の
空き容量を積極的に利用してデータの待避を行い、複数
の整理対象ブロックを選出して、一括して消去処理を行
うことができ、消去処理の効率が向上する。
て自動的にガベージコレクションの形態を切り換える
が、コントロールパネル12の操作により、マニュアル
で切り換えるようにすることもできることはいうまでも
ない。
タの解放手順について説明する。図29は、論理セクタ
の解放手順を表すフローチャートである。
始する。ステップS1202でNセクタをロックする。
この結果、ステップS1205でアンロックされるまで
の間、自タスクで論理セクタを占有出来る。続いて、ス
テップS1203で当該セクタの記憶を廃棄する。この
記憶の廃棄処理については、図21のフローチャートで
説明した通りである。ステップS1204では、DRA
M14の記憶場所管理テーブル140へ“不在”値を代
入する。ステップS1205では、論理セクタをアンロ
ックし、ステップS1206で復帰する。
ァイルシステムでは、ファイルの消去に際しては、当該
ファイルに属するセクタをFATにおいて上書き可能と
するのみで、各セクタを解放するということは行われな
い。よって、このようなファイルシステムに本実施形態
のフラッシュROM管理システムを適用すると、ファイ
ルシステム上では無効となったデータが、有効なセクタ
として残されてしまうことになり、ガベージコレクショ
ン等の効率を低下させることになる。よって、ファイル
システムの指示(例えばファイル消去)に基づいて不要
となったセクタを検出し、これを解放するように構成す
れば、ガベージコレクションの効率をより向上させるこ
とができる。
消去が指示された場合の、不要セクタの解放手順を表す
フローチャートである。同図において、ステップS14
01でファイルシステムよりファイル消去の指示があっ
たか否かを判断する。ファイル消去の指示があった場合
は、ステップS1402へ進み、消去すべく指示された
ファイルに含まれるセクタを抽出する。セクタの抽出
は、FATを参照することで抽出できる。そして、ステ
ップS1403で、先のステップS1402で抽出され
た各セクタについて、上記図29のフローチャートで説
明したセクタの解放処理を実行する。
明する。
>上述の実施形態1で説明したフラッシュROMの記憶
管理システムは、上位層から見た特徴がディスク媒体と
良く似ている。従って、ディスクコントローラのエミュ
レーション機能を備えたシステムに組み込むことで、デ
ィスクコントローラとディスク媒体をディスクコントロ
ーラエミュレーションと本実施形態の記憶管理システム
(あるいは本実施形態の記憶管理システムを組み込んだ
ICカード)へ置き換えることが可能となる。近年PC
MCIAに代表されるICカードが普及しているが、I
Cカードへディスクコントローラエミュレーション機能
と上記実施形態1の記憶管理システムを組込むことによ
り、リムーバルな記憶媒体として利用することが可能と
なる。第2の実施形態では、実施形態1の記憶管理シス
テムをICカードへ組み込んだものについて説明する。
構成を表すブロック図である。同図において、200は
ICカード全体を示す。201はマイクロコンピュータ
であり、ディスクコントローラエミュレーション及び記
憶管理を行う。202はROMであり、マイクロコンピ
ュータ201のプログラムを格納する。203はRAM
であり、マイクロコンピュータ201の主記憶として機
能する。204はフラッシュROMであり、上記実施形
態1で説明した記憶管理システムによってデータを蓄積
する。即ち、フラッシュROM204は、図4で説明し
た管理領域とデータ領域とで管理される。
り、ホスト装置より受信した外部バスからのコマンドと
シリンダ番号等を保持する。206はFIFOメモリで
あり、先入れ先出し方式でデータの入出力を行う。20
7はタプルROMであり、当該カードの特徴等を記憶し
ており、外部バスからのみ読み出しができる。
より明らかとなる。
用する為のホストシステムの簡単なブロック図である。
同図において、301はホストシステム側のマイクロコ
ンピュータである。302はカードインターフェースで
あり、ホストシステムの内部バスとICカード200の
外部バスを接続する。なお、カードインターフェース3
02は、ICカード200への電源供給を行うための電
源供給線や、ICカード200からの割り込み要求(I
RQ出力)を受け付けるための信号線も備えている。
カードを接続する際の手順を示すフローチャートであ
る。ステップS4100で処理を開始すると、ステップ
S4101でICカードへの電源供給を開始する。ステ
ップS4102では、ICカード200内のタプルRO
M7から、タプル形式で格納されているデータを解析す
る。タプルROM7の内容を解析することで、接続され
ているICカードの特徴が分かる。
02で解析したタプル情報によって、接続されているI
Cカードが内部バスへ接続可能かどうかを判断する。そ
して、接続可能ならステップS4104へ、接続不可能
ならステップS4105へとそれぞれ分岐する。ステッ
プS4104では、ICカード側のバスをホストの内蔵
バスのメモリ空間とIO空間へマッピングする。この時
点でホスト装置のバスの空間にディスクコントローラが
有るのと同じ状態になる。
ンピュータ1のメインシーケンスを示すフローチャート
である。ステップS4201でICカードの電源が投入
されると、ステップS4202で記憶管理システムの初
期化を行う。即ち、フラッシュROM204の全イレー
スブロックの論理セクタの状態を一旦読み出し、読み出
した情報に従って主記憶用のRAM203へ記憶場所管
理テーブルを作成する。ステップS4203で主記憶上
のコマンドバッファとしてリング状のバッファを用意し
て初期化し、割り込み処理を許可する。この処理以降割
り込みルーチンの動作が始まる。
フローチャートに示す。割り込みルーチンの動作を理解
した方が、図33のフローチャートの説明が容易となる
為、ここで図34のフローチャートについて説明を行
う。
チ205へのコマンドのアドレスへコマンドを書き込む
と、コマンド/データ・ラッチ205からマイクロコン
ピュータ201へ割り込みが発生する。コマンド/デー
タ・ラッチ205は、ホストバスとICカード内部のバ
スのIOアドレス空間にマッピングされていて、コマン
ド/データはそれぞれ図35に示すようにIOアドレス
が割り振られている。図35は、本実施形態のコマンド
/データ・ラッチにおけるIO割り付けを示す図であ
る。本例では、図35中のCommandのアドレスにコマン
ド(例えばデータの読出しを指示するReadSector(s))
を書き込むことでマイクロコンピュータ201へ割り込
みが発生する。
ータ201のソフトウェアは、図34のフローチャート
のステップS4301へ制御を移す。ステップS430
2では、コマンド/データ・ラッチ205に書き込まれ
たデータを読み出して、主記憶上のリングバッファへデ
ータを格納する。ステップS4303で割り込みルーチ
ンを終了して図33のフローチャートへ復帰する。
テップS4204でマイクロコンピュータ201はコマ
ンドバッファの状態を判断する。コマンドバッファへデ
ータが格納されていれば、ステップS4205へ分岐
し、データが格納されていなければステップS4213
へ分岐する。ステップS4213ではCPUを休止状態
にする。多くのワンチップマイクロコンピュータは、命
令の実行を休止して消費電流を減らす機能を備えている
が、本実施形態のCPUもこの種の機能を備える。そし
て、IRQによる割り込み要求信号が入力されると、C
PU201は休止状態から復帰して上述の割り込みルー
チンを実行する。割り込みプログラムの実行が済んだ時
点でステップS4213から復帰してステップS420
4へ戻る。
データが格納されていると、ステップS4205へ移行
する。ステップS4206では、リングバッファからデ
ータを読み出す。ステップS4206でコマンドを解釈
する。Seekコマンドの場合はステップS4207、Read
Sector(s)コマンドの場合はステップS4208へ、Wri
teSector(s)の場合はステップS4209へ、IdentifyD
rvコマンドの場合はステップS4210へそれぞれ分岐
する。他にもコマンドがあるが本実施形態の説明上重要
でないものは省き、フローチャートを簡略化している。
ステップS4207〜4210までのコマンドの実行を
終了したらステップS4204まで戻り、上記の処理を
繰り返す。
実行する。SeekといってもフラッシュROMには、ディ
スクデバイスと違ってヘッドが無いので、次のコマンド
に備えての妥当性等をチェックするだけである。ICカ
ードのサポートするヘッド数を超えるヘッド位置などを
指定された場合は、ディスク装置同様にエラーが発生す
る。
ンドに対する処理を行う。ReadSector(s)コマンドは、
読み出すべきセクターの個数が図35のSectorCountで
指定される。よって、ステップS4208では、指定さ
れた場所のセクタをSectroCount個読み出す行為を行
う。本実施形態の記憶管理システムでは、リニアな論理
セクタ番号を使って管理を行っているので、シリンダ/
ヘッド/セクタ番号を元にリニアな論理セクタ番号を計
算し、論理セクタの内容をFIFOメモリ206へ転送
し、コマンド/データ・ラッチ205のSectorNumberの
インクリメントも行う。FIFOメモリ206は、IC
カード200の内部バスから書き込んだデータを外部バ
スから読み出すことができ、また外部バスから書き込ん
だデータをICカード内部バスから読み出す構成となっ
たFIFOメモリである。
ついて説明する。一般にハードディスクに対して指定す
る番号は、セクタ、シリンダ、ヘッドのパラメータで決
まる3次元の不連続な番号である。例えば、シリンダ数
が1024個、ヘッド数が16個、セクタ数が63個の
ハードディスクの場合、セクタ数は1024×16×6
3=1032192個となる。
してアクセスできると良いのであるが、上記の3つのパ
ラメータをすべて指定してアクセスするように設計され
ている。例えば、シリンダ500・ヘッド16・セクタ
63の次は、シリンダ501・ヘッド0・セクタ1をア
クセスするといった具合である。なお、これら3つのパ
ラメータをそれぞれの頭文字をとってCHSパラメータ
と呼ぶ。
ィングシステムでは、内部ではリニア(連続的)なセク
タ番号を用いるが、デバイスドライバがこれをCHSパ
ラメータに変換する。本実施形態のシステムでは、リニ
アなセクタ番号を用いるのでCHSパラメータの値を元
にリニアなセクタ番号を求める。上記で挙げたハードデ
ィスクの場合は、 シリンダ番号×(16×63)+ヘッド番号×(63)
+セクタ番号 を計算することで、リニアな論理セクタ番号が求まる。
された場所のセクタへデータを書き込む処理を行う。デ
ータは、FIFOメモリ206経由でホストシステムか
ら受け取る。
がどのようなハードディスクをエミュレーションしてい
るかという情報を返す処理を行う。すなわちシリンダ数
やModelNumberなどハードディスクとしてのスペックを
含むデータをFIFOメモリ206へ書き込む処理を行
う。
様に実施形態1で説明した記憶管理システムをICカー
ドに組み込むことで、ATAハードディスク等の置き換
え用途に使用できる。しかし、ATAコマンド等のFA
Tキャッシュやファイル消去によって生じた不要セクタ
の開放といった処理を行う為の情報を上位システムから
もらう手法が無い。ATAコマンドの空き部分を利用し
てセクタの開放コマンドとキャッシュするセクタ番号指
定コマンドを追加実装することで、FATキャッシュと
不要セクタ解放の機能が実現できる。そして、この様な
機能があることを想定していない現状のMS−DOS等
のシステムでも、FATキャッシュやセクタの開放を実
現できた方が良いことは言うまでもない。
する部分にFATの場所やサイズといった情報を格納し
ている。本実施形態では、このセクタを読むことでFA
Tの場所やサイズを取得し、FATキャッシュの処理に
利用する。同様に本来書き込みデータの内容を理解しな
いはずのICカードであるが、ファイルシステムの為の
情報(ディレクトリエントリやFAT)を解析すること
でICカードが自立的に不要セクタを判断して開放する
等の処理に役立てることが出来る。もちろんFATに限
った話では無く、HPFSやマッキントッシュ(商標)
のファイルシステムでも書き込むデータの内容を解析す
れば、不要セクタの検出が可能である。この様に構成す
ることでATAハードディスクのインタフェースでも、
ファイルシステムの動作に合わせた最適化処理を行うこ
とを可能にする。
ICカードに内蔵されたフラッシュROMのデータの読
み出し・書き込みの単位(記憶単位)をフラッシュRO
Mの消去単位よりも小さくして管理することが可能とな
り、消去単位の大きいフラッシュROMをファイルシス
テムに整合させることが可能となる。
IOS用に設計された64kバイトの消去単位を有する
フラッシュROMを内蔵するICカードで、ハードディ
スク同様のサービスを提供することが可能となる。
すブロック図である。
テムの階層構造を表す図である。
述した宣言文を示す図である。
である。
格納する構成を表す図である。
る。
順を説明する図である。
ジコレクション動作を説明する図である。
クションの動作を説明する図である。
ルを説明する図である。
を表す図である。
図である。
ーチャートである。
チャートである。
順をC言語で表現した図である。
様に電源を管理するプログラムをC言語で表現した図で
ある。
での動作手順を表わすフローチャートである。
すフローチャートである。
すフローチャートである。
である。
である。
である。
わすフローチャートである。
チャートである。
ーチャートである。
化する手順を表わすフローチャートである。
を表わすフローチャートである。
順を表わすフローチャートである。
である。
ブロック図である。
ストシステムの簡単なブロック図である。
する際の手順を示すフローチャートである。
ンシーケンスを示すフローチャートである。
込み処理の手順を表すフローチャートである。
る。
理を切り換える場合の処理手順を説明するフローチャー
トである。
れた場合の、不要セクタの解放手順を表すフローチャー
トである。
の前処理の制御手順を表すフローチャートである。
バイトデータの書込み手順を表すフローチャートであ
る。
ートである。
御プログラムの格納状態を説明する図である。
の一例を表す図である。
タを格納するテーブルを表す図である。
へマッピングした場合のプログラムコードを示す図であ
る。
る。
leB が削除された状態を示す図である。
ファイルを消去した後の状態を表す図である。
分割利用を説明するフローチャートである。
Claims (14)
- 【請求項1】 ホスト装置に装着されて、該ホスト装置
の要求に応じてデータの書込み、読出しが可能なICカ
ード装置であって、 複数のデータ領域、及び各データ領域に対応する管理領
域とを形成して管理されるフラッシュROMと、 ホスト装置よりのデータの書込み先を示す指定情報を伴
う書込み指示を受けて、前記複数のデータ領域のうちの
一つのデータ領域にデータを書き込むと共に、該指定情
報を該データ領域に対応する管理領域に書き込む書込み
手段と、 ホスト装置よりのデータの読み出し元を示す指定情報を
伴う読出し指示を受けて、該指定情報が格納された管理
領域を検索し、検索された管理領域に対応するデータ領
域に格納されたデータを読み出す読出し手段とを備える
ことを特徴とするICカード装置。 - 【請求項2】 前記管理領域は、対応するデータ領域が
書込み可能であるか否かを示す状態情報を格納し、 前記書込み手段は、状態情報が書き込み可能となってい
る管理領域を検索し、検索された管理領域に前記指定情
報を書き込むと共に、該検索された管理領域に対応する
データ領域にデータの書込みを行うことを特徴とする請
求項1に記載のICカード装置。 - 【請求項3】 前記管理領域は、対応するデータ領域に
書込みが可能であることを示す未使用状態と、データ領
域に書き込まれたデータが有効であることを示す使用中
状態と、データ領域に書き込まれたデータが無効である
ことを示す使用済状態の少なくとも3通りの状態のいず
れかを示す状態情報を格納し、 前記書込み手段は、状態情報が未使用状態となっている
管理領域を検索して検索された管理領域及びこれに対応
するデータ領域に前記指定情報及びデータを書き込み、
該管理領域の状態情報を使用中に変更することを特徴と
する請求項1に記載のICカード装置。 - 【請求項4】 前記書込み手段は、前記書き込み指示に
伴う指定情報を有する管理領域を検索し、検索された管
理領域の状態情報を使用済状態に変更することを特徴と
する請求項3に記載のICカード装置。 - 【請求項5】 フラッシュROM内の消去単位である消
去ブロックにおいて、状態情報が使用中状態である全て
の管理領域を検索し、検索された管理領域及び対応する
データ領域の内容を当該消去ブロック外へ移動させる移
動手段と、 前記移動手段の実行の後に前記消去ブロックの消去動作
を行う消去手段とを更に備えることを特徴とする請求項
3に記載のICカード装置。 - 【請求項6】 前記移動手段による管理領域とデータ領
域の内容の移動先は、当該ICカードに装着されたフラ
ッシュROM内の他の消去ブロックであることを特徴と
する請求項5に記載のICカード装置。 - 【請求項7】 前記移動手段において、前記フラッシュ
ROM内の他の消去ブロックに書き込み可能なデータ領
域が存在しない場合、データの移動先を当該ICカード
に装着されたランダムアクセスメモリとすることを特徴
とする請求項6に記載のICカード装置。 - 【請求項8】 前記移動手段による管理領域とデータ領
域の内容の移動先は、当該ICカードに装着されたラン
ダムアクセスメモリであることを特徴とする請求項5に
記載のICカード装置。 - 【請求項9】 前記消去手段の実行の後に前記ランダム
アクセスメモリに移動したデータを前記フラッシュRO
Mに書き戻す書き戻し手段を更に備えることを特徴とす
る請求項7または8に記載のICカード装置。 - 【請求項10】 前記管理領域と対応するデータ領域
は、フラッシュROM内の同じ消去ブロックに存在する
ことを特徴とする請求項1乃至9のいずれかに記載のI
Cカード装置。 - 【請求項11】 前記フラッシュROMの記憶効率の評
価を行い、その評価結果に基づいて前記移動手段及び消
去手段の実行を制御する制御手段を更に備えることを特
徴とする請求項5に記載のICカード装置。 - 【請求項12】 前記制御手段における記憶効率の評価
は、状態情報が使用済状態の領域と未使用状態の領域と
の大きさの比較によって行われることを特徴とする請求
項11に記載のICカード装置。 - 【請求項13】 前記ホスト装置からの指示により、指
定情報で指定された管理領域の状態情報を使用済状態へ
変更し、当該データ領域のデータを論理的に廃棄する廃
棄手段を更に備えることを特徴とする請求項3に記載の
ICカード装置。 - 【請求項14】 前記ホスト装置へ装着するための接続
部が該ホスト装置の外部記憶用のインターフェースと互
換性を有し、 該ホスト装置の外部記憶用の各種コマンドを解釈する解
釈手段を更に備えることを特徴とする請求項1に記載の
ICカード装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25123695A JPH0997314A (ja) | 1995-09-28 | 1995-09-28 | Icカード装置 |
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 |
---|---|---|---|
JP25123695A JPH0997314A (ja) | 1995-09-28 | 1995-09-28 | Icカード装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0997314A true JPH0997314A (ja) | 1997-04-08 |
Family
ID=17219751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25123695A Pending JPH0997314A (ja) | 1995-09-28 | 1995-09-28 | Icカード装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0997314A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003234000A (ja) * | 2002-02-08 | 2003-08-22 | Matsushita Electric Ind Co Ltd | 半導体集積回路装置、icカードおよび検査装置 |
JP2006155461A (ja) * | 2004-12-01 | 2006-06-15 | Sony Corp | 情報処理装置、情報処理方法、並びにプログラム |
JPWO2009001514A1 (ja) * | 2007-06-22 | 2010-08-26 | パナソニック株式会社 | メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04157699A (ja) * | 1990-10-19 | 1992-05-29 | Fujitsu Ltd | 一括消去型e↑2promの予備書込み方法 |
JPH0527924A (ja) * | 1991-07-12 | 1993-02-05 | Internatl Business Mach Corp <Ibm> | 半導体メモリを用いた外部記憶システム及びその制御方法 |
JPH05241741A (ja) * | 1990-12-31 | 1993-09-21 | Intel Corp | 不揮発性半導体メモリ及びこれを使用したコンピュータシステム |
JPH06124596A (ja) * | 1991-11-28 | 1994-05-06 | Hitachi Ltd | フラッシュメモリを使用した記憶装置 |
JPH06139140A (ja) * | 1990-12-31 | 1994-05-20 | Intel Corp | 不揮発性半導体メモリのファイル構造 |
WO1994020906A1 (en) * | 1993-03-08 | 1994-09-15 | M-Systems Ltd. | Flash file system |
JPH0736759A (ja) * | 1993-07-15 | 1995-02-07 | Hitachi Ltd | 半導体ファイルシステム |
JPH0772989A (ja) * | 1992-10-30 | 1995-03-17 | Intel Corp | 浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法 |
-
1995
- 1995-09-28 JP JP25123695A patent/JPH0997314A/ja active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04157699A (ja) * | 1990-10-19 | 1992-05-29 | Fujitsu Ltd | 一括消去型e↑2promの予備書込み方法 |
JPH05241741A (ja) * | 1990-12-31 | 1993-09-21 | Intel Corp | 不揮発性半導体メモリ及びこれを使用したコンピュータシステム |
JPH06139140A (ja) * | 1990-12-31 | 1994-05-20 | Intel Corp | 不揮発性半導体メモリのファイル構造 |
JPH0527924A (ja) * | 1991-07-12 | 1993-02-05 | Internatl Business Mach Corp <Ibm> | 半導体メモリを用いた外部記憶システム及びその制御方法 |
JPH06124596A (ja) * | 1991-11-28 | 1994-05-06 | Hitachi Ltd | フラッシュメモリを使用した記憶装置 |
JPH0772989A (ja) * | 1992-10-30 | 1995-03-17 | Intel Corp | 浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法 |
WO1994020906A1 (en) * | 1993-03-08 | 1994-09-15 | M-Systems Ltd. | Flash file system |
JPH0736759A (ja) * | 1993-07-15 | 1995-02-07 | Hitachi Ltd | 半導体ファイルシステム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003234000A (ja) * | 2002-02-08 | 2003-08-22 | Matsushita Electric Ind Co Ltd | 半導体集積回路装置、icカードおよび検査装置 |
JP2006155461A (ja) * | 2004-12-01 | 2006-06-15 | Sony Corp | 情報処理装置、情報処理方法、並びにプログラム |
JPWO2009001514A1 (ja) * | 2007-06-22 | 2010-08-26 | パナソニック株式会社 | メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム |
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 | |
KR100877448B1 (ko) | 비휘발성 기억 시스템 | |
JP3138171B2 (ja) | システム機能をダウンロードする方法 | |
EP0522780A2 (en) | Control method for a computer memory device | |
JP2703494B2 (ja) | スワップ・ブロック組立方法及びメモリ管理機構 | |
JP2003208412A (ja) | 回路群制御システム | |
JP2004334419A (ja) | 磁気ディスク装置、ファイル管理システム及びその方法 | |
US8244955B2 (en) | Storage system and its controlling method | |
JP3727982B2 (ja) | フラッシュrom管理方法及び装置 | |
JP3324572B2 (ja) | 情報処理装置並びにコンピュータに実行させるためのプログラムを記録した記録媒体 | |
KR20080017292A (ko) | 내장 시스템들을 위한 저장 아키텍쳐 | |
US7376758B2 (en) | I/O dependency graphs | |
JPH0997218A (ja) | フラッシュrom管理方法及び装置及びコンピュータ制御装置 | |
US20060036663A1 (en) | Method and apparatus for effective data management of files | |
JPH0997206A (ja) | フラッシュrom管理方法及び装置及びコンピュータ制御装置 | |
JPH0997207A (ja) | フラッシュrom管理方法及び装置及びコンピュータ制御装置 | |
JPH0997205A (ja) | フラッシュrom管理方法及び装置及びコンピュータ制御装置 | |
JP3703181B2 (ja) | フラッシュrom管理方法及び装置 | |
JPH0981424A (ja) | 情報処理装置 | |
JP3727983B2 (ja) | 電子カメラ | |
JPH0997199A (ja) | フラッシュrom管理方法及び装置及びコンピュータ制御装置 | |
JPH0997314A (ja) | Icカード装置 | |
JP2006228138A (ja) | 半導体記憶装置、記憶制御方法および情報機器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050415 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050614 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050704 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050902 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050926 |