JP3319361B2 - 記憶装置、データ処理装置及びデータ処理方法 - Google Patents

記憶装置、データ処理装置及びデータ処理方法

Info

Publication number
JP3319361B2
JP3319361B2 JP26717997A JP26717997A JP3319361B2 JP 3319361 B2 JP3319361 B2 JP 3319361B2 JP 26717997 A JP26717997 A JP 26717997A JP 26717997 A JP26717997 A JP 26717997A JP 3319361 B2 JP3319361 B2 JP 3319361B2
Authority
JP
Japan
Prior art keywords
data
file
block
area
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP26717997A
Other languages
English (en)
Other versions
JPH11110263A (ja
Inventor
博明 布施
哲 佐々
淳 尾上
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP26717997A priority Critical patent/JP3319361B2/ja
Publication of JPH11110263A publication Critical patent/JPH11110263A/ja
Application granted granted Critical
Publication of JP3319361B2 publication Critical patent/JP3319361B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、記憶領域が複数の
ブロックに分割されてなる記憶装置に関する。また、本
発明は、記憶領域が複数のブロックに分割されてなる記
憶装置に対して、データをファイル単位で格納するデー
タ処理装置に関する。また、本発明は、記憶領域が複数
のブロックに分割されてなる記憶装置に対して、データ
をファイル単位で格納する際のデータ処理方法に関す
る。
【0002】
【従来の技術】パーソナルコンピュータやデジタルスチ
ルカメラ等のようなデータ処理装置では、データを保持
しておくために記憶装置が使用される。そして、データ
処理装置と記憶装置との間でのデータのやり取りは、通
常、ファイル単位で行われる。ここで、ファイルは、当
該ファイルについての情報等が含まれるヘッダーと、実
データとから構成される。
【0003】ところで、記憶装置には、その記憶手段と
してフラッシュメモリを用いたものがある。フラッシュ
メモリを用いた記憶装置では、記憶領域が複数のブロッ
クに分割される。ここで、各ブロックはデータ消去の単
位となる。すなわち、データを消去する際は、当該デー
タを含むブロック全体に対して初期化処理を施す。これ
により、当該ブロックに格納されているデータが一括し
て消去され、新たなデータの書き込みが可能となる。ま
た、ブロックは、データ消去の単位であると同時に、フ
ァイル管理上の最小単位でもある。すなわち、ファイル
は1つ又は複数のブロックに格納され、1つのブロック
を複数のファイルで利用することはできない。
【0004】このような記憶装置において、当該記憶装
置に格納されているファイルを分割するときには、分割
位置以降のデータ全てを書き直すようにしていた。この
様子を図17を参照して説明する。
【0005】なお、図17及び後掲する図9では、デー
タが格納されている部分にハッチングを施して図示して
いるとともに、ファイル分割前にブロックに格納されて
いたデータが、ファイル分割後にどこのブロックに格納
されるかが視覚的に分かるように、ハッチングの種類を
変えて図示している。
【0006】図17(a)に示すように、ブロックA
1,A2,A3,A4,A5にわたってファイルのデー
タが書き込まれていたとする。そして、このファイル
を、ブロックA3に書かれている部分の途中で分割し
て、第1のファイルと第2のファイルとに分けるとす
る。
【0007】このときは、図17(b)に示すように、
ブロックA3に書かれていたデータのうち、第1のファ
イルに属する部分のデータだけを他のブロックA6に書
き込む。これにより、第1のファイルが、ブロックA
1,A2,A6にわたって格納される。
【0008】また、ブロックA3に書かれていたデータ
のうち、第2のファイルに属する部分のデータと、ブロ
ックA4,A5に書かれていたデータとを読み出し、そ
れらのデータに対して、ヘッダーを追加して、第2のフ
ァイルを作成する。そして、このように作成した第2の
ファイルを、他のブロックA7,A8,A9に書き込
む。これにより、第2のファイルが、ブロックA7,A
8,A9にわたって格納される。
【0009】その後、不要となったデータ、すなわちブ
ロックA3,A4,A5に格納されていたデータを消去
する。
【0010】また、記憶装置に格納されているファイル
を結合するときにも、結合位置以降のデータ全てを書き
直すようにしていた。この様子を図18を参照して説明
する。
【0011】なお、図18及び後掲する図13では、デ
ータが格納されている部分にハッチングを施して図示し
ているとともに、ファイル結合前にブロックに格納され
ていたデータが、ファイル結合後にどこのブロックに格
納されるかが視覚的に分かるように、ハッチングの種類
を変えて図示している。
【0012】図18(a)に示すように、ブロックB
1,B2,B3にわたって第1のファイルが格納されて
おり、ブロックB4,B5,B6にわたって第2のファ
イルが格納されているときに、これら第1のファイル及
び第2のファイルを結合して、1つのファイルにすると
する。
【0013】このときは、第1のファイルの末尾が格納
されているブロックのデータ、すなわちブロックB3に
書かれているデータを読み出す。また、第2のファイル
のデータ、すなわちブロックB4,B5,B6に書かれ
ていたデータを全て読み出して、当該第2のファイルの
データからヘッダー部分を削除して、実データの部分を
抽出する。
【0014】そして、図18(b)に示すように、ブロ
ックB3に書かれていたデータと、第2のファイルの実
データとを結合したデータを、他のブロックB7,B
8,B9,B10に順に書き込んでいく。
【0015】その後、不要となったデータ、すなわちブ
ロックB3,B4,B5,B6に格納されていたデータ
を消去する。
【0016】
【発明が解決しようとする課題】ところで、一般に、記
憶装置は、データの書き込みと消去を何度でも繰り返せ
るとは限らず、通常は、保証されている消去可能回数に
限りがある。特にフラッシュメモリの場合には、この消
去保証回数が比較的に少ないため、ブロック消去の回数
を出来るだけ少なくすることが強く要求される。
【0017】そして、従来は、図17や図18を用いて
説明したように、ファイル分割時やファイル結合時に、
分割位置以降又は結合位置以降のデータ全てを書き直す
ようにしていた。このため、ファイル分割時やファイル
結合時にブロックの書き直しが多く発生してしまい、こ
れが、記憶装置の長寿命化の妨げとなっていた。
【0018】また、ブロックの書き直しが多いというこ
とは、それだけ処理に要する時間が余分にかかるという
ことでもある。
【0019】本発明は、以上のような従来の実情に鑑み
て提案されたものであり、記憶装置に格納されるファイ
ルの分割や結合を行うときに、ブロックの書き直しが少
なくて済むようにして、記憶装置の長寿命化及び処理の
高速化を図ることを目的とする。
【0020】
【課題を解決するための手段】本発明に係る記憶装置
は、データをファイル単位で記憶領域内に格納するとと
もに、記憶領域がデータの消去単位であると同時にファ
イル管理上の最小単位であるブロックに分割されてなる
フラッシュメモリを有する記憶装置である。ここで、各
ブロックは、任意のデータが格納されるデータエリア
と、当該ブロックを管理するために用いられるデータエ
リアに格納されるデータのサイズとデータエリアの途中
でデータが終わっていることを示すフラグとが格納され
る冗長エリアとを有する。そして、複数のブロックに亘
って格納されている1つのファイルを第1のファイルと
第2のファイルに分割するとき、第2のファイルに属す
るデータが格納されているブロックのうち、ファイル分
割位置に対応するブロック以外のブロックはそのまま保
持し、ファイル分割位置に対応するブロックに格納され
ているデータを新規なブロックのデータエリアに先頭か
ら連続してデータを書き込み、当該データエリアの残り
を空き領域とし、当該新規なブロックの冗長エリアに、
当該データエリアに格納されたデータのサイズと当該デ
ータエリアの途中でデータが終わっていることを示すフ
ラグとを書き込み、空白領域を有するブロックにアクセ
スするとき、該データエリアの途中でデータが終わって
いることを示すフラグがたっていると、データエリアに
格納されたデータのサイズを調べて次のブロックへ進む
ようにする。
【0021】また、本発明に係る記憶装置は、データを
ファイル単位で記憶領域内に格納するとともに、記憶領
域がデータの消去単位であると同時にファイル管理上の
最小単位であるブロックに分割されてなるフラッシュメ
モリを有する記憶装置である。ここで、各ブロックは、
任意のデータが格納されるデータエリアと、当該ブロッ
クを管理するために用いられるデータエリアに格納され
るデータのサイズとデータエリアの途中でデータが終わ
っていることを示すフラグとが格納される冗長エリアと
を有する。そして、1つ以上のブロックにわたって格納
されている第1のファイルと1つ以上のブロックにわた
って格納されている第2のファイルとを結合して1つの
ファイルにするとき、第1のファイル及び第2のファイ
ルが格納されているブロックのうち、第1のファイルの
末尾のデータが格納されているブロックと第2のファイ
ルの先頭のデータが格納されているブロックとを新規な
ブロックに書き換え、その他のブロックはそのまま保持
し、第1のファイルの末尾のデータが格納されているブ
ロックと第2のファイルの先頭のデータが格納されてい
るブロックとを書き換えるとき、新規なブロックの先頭
から第1のファイルの末尾のデータと第2のファイルの
先頭とを連続して格納し、残りを空白領域とし、当該新
規なブロックの冗長エリアに、当該データエリアに格納
されたデータのサイズと当該データエリアの途中でデー
タが終わっていることを示すフラグとを書き込み、空白
領域を有するブロックにアクセスするとき、該データエ
リアの途中でデータが終わっていることを示すフラグが
たっていると、データエリアに格納されたデータのサイ
ズを調べて次のブロックへ進むようにする。
【0022】また、本発明に係るデータ処理装置は、デ
ータをファイル単位で記憶領域内に格納するとともに、
記憶領域がデータの消去単位であると同時にファイル管
理上の最小単位であるブロックに分割されてなるフラッ
シュメモリを備え、各ブロックが、任意のデータが格納
されるデータエリアと、当該ブロックを管理するために
用いられるデータエリアに格納されるデータのサイズと
データエリアの途中でデータが終わっていることを示す
フラグとが格納される冗長エリアとを有する記憶装置に
対して、データをファイル単位で格納するデータ処理装
置である。このデータ処理装置は、複数のブロックに亘
って格納されている1つのファイルを第1のファイルと
第2のファイルに分割するとき、第2のファイルに属す
るデータが格納されているブロックのうち、ファイル分
割位置に対応するブロック以外のブロックはそのまま保
持し、ファイル分割位置に対応するブロックに格納され
ているデータを新規なブロックのデータエリアに先頭か
ら連続してデータを書き込み、当該データエリアの残り
を空き領域とし、当該新規なブロックの冗長エリアに、
当該データエリアに格納されたデータのサイズと当該デ
ータエリアの途中でデータが終わっていることを示すフ
ラグとを書き込み、空白領域を有するブロックにアクセ
スするとき、該データエリアの途中でデータが終わって
いることを示すフラグがたっていると、データエリアに
格納されたデータのサイズを調べて次のブロックへ進む
ようにする。
【0023】また、本発明に係るデータ処理装置は、デ
ータをファイル単位で記憶領域内に格納するとともに、
記憶領域がデータの消去単位であると同時にファイル管
理上の最小単位であるブロックに分割されてなるフラッ
シュメモリを備え、各ブロックが、任意のデータが格納
されるデータエリアと、当該ブロックを管理するために
用いられるデータエリアに格納されるデータのサイズと
データエリアの途中でデータが終わっていることを示す
フラグとが格納される冗長エリアとを有する記憶装置に
対して、データをファイル単位で格納するデータ処理装
置である。このデータ処理装置は、1つ以上のブロック
にわたって格納されている第1のファイルと1つ以上の
ブロックにわたって格納されている第2のファイルとを
結合して1つのファイルにするとき、第1のファイル及
び第2のファイルが格納されているブロックのうち、第
1のファイルの末尾のデータが格納されているブロック
と第2のファイルの先頭のデータが格納されているブロ
ックとを新規なブロックに書き換え、その他のブロック
はそのまま保持し、第1のファイルの末尾のデータが格
納されているブロックと第2のファイルの先頭のデータ
が格納されているブロックとを書き換えるとき、新規な
ブロックの先頭から第1のファイルの末尾のデータと第
2のファイルの先頭とを連続して格納し、残りを空白領
域とし、当該新規なブロックの冗長エリアに、当該デー
タエリアに格納されたデータのサイズと当該データエリ
アの途中でデータが終わっていることを示すフラグとを
書き込み、空白領域を有するブロックにアクセスすると
き、該データエリアの途中でデータが終わっていること
を示すフラグがたっていると、データエリアに格納され
たデータのサイズを調べて次のブロックへ進むようにす
る。
【0024】また、本発明に係るデータ処理方法は、デ
ータをファイル単位で記憶領域内に格納するとともに、
記憶領域がデータの消去単位であると同時にファイル管
理上の最小単位であるブロックに分割されてなるフラッ
シュメモリを備え、各ブロックが、任意のデータが格納
されるデータエリアと、当該ブロックを管理するために
用いられるデータエリアに格納されるデータのサイズと
データエリアの途中でデータが終わっていることを示す
フラグとが格納される冗長エリアとを有する記憶装置に
格納された複数のブロックに亘って格納されている1つ
のファイルを第1のファイルと第2のファイルに分割す
るとき、第2のファイルに属するデータが格納されてい
るブロックのうち、ファイル分割位置に対応するブロッ
ク以外のブロックはそのまま保持し、ファイル分割位置
に対応するブロックに格納されているデータを新規なブ
ロックのデータエリアに先頭から連続してデータを書き
込み、当該データエリアの残りを空き領域とし、当該新
規なブロックの冗長エリアに、当該データエリアに格納
されたデータのサイズと当該データエリアの途中でデー
タが終わっていることを示すフラグとを書き込み、空白
領域を有するブロックにアクセスするとき、該データエ
リアの途中でデータが終わっていることを示すフラグが
たっていると、データエリアに格納されたデータのサイ
ズを調べて次のブロックへ進むようにする。
【0025】また、本発明に係るデータ処理方法は、デ
ータをファイル単位で記憶領域内に格納するとともに、
記憶領域がデータの消去単位であると同時にファイル管
理上の最小単位であるブロックに分割されてなるフラッ
シュメモリを備え、各ブロックが、任意のデータが格納
されるデータエリアと、当該ブロックを管理するために
用いられるデータエリアに格納されるデータのサイズと
データエリアの途中でデータが終わっていることを示す
フラグとが格納される冗長エリアとを有する記憶装置に
格納された1つ以上のブロックにわたって格納されてい
る第1のファイルと1つ以上のブロックにわたって格納
されている第2のファイルとを結合して1つのファイル
にするとき、第1のファイル及び第2のファイルが格納
されているブロックのうち、第1のファイルの末尾のデ
ータが格納されているブロックと第2のファイルの先頭
のデータが格納されているブロックとを新規なブロック
に書き換え、その他のブロックはそのまま保持し、第1
のファイルの末尾のデータが格納されているブロックと
第2のファイルの先頭のデータが格納されているブロッ
クとを書き換えるとき、新規なブロックの先頭から第1
のファイルの末尾のデータと第2のファイルの先頭とを
連続して格納し、残りを空白領域とし、当該新規なブロ
ックの冗長エリアに、当該データエリアに格納されたデ
ータのサイズと当該データエリアの途中でデータが終わ
っていることを示すフラグとを書き込み、空白領域を有
するブロックにアクセスするとき、該データエリアの途
中でデータが終わっていることを示すフラグがたってい
ると、データエリアに格納されたデータのサイズを調べ
て次のブロックへ進むようにする。
【0026】
【0027】
【0028】
【0029】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。
【0030】1.システムの全体構成 本発明が適用されるシステムの一例について、その全体
構成を図1に示す。このシステムは、ホスト側システム
となるデータ処理装置1と、シリアルインターフェース
を介してデータ処理装置1に接続される記憶装置である
メモリカード2とから構成される。
【0031】なお、ここでは、データ処理装置1とメモ
リカード2との間でのデータのやり取りをシリアルイン
ターフェースによって行うシステムを例に挙げるが、本
発明は、データのやり取りをパラレルインターフェース
によって行うシステムに対しても適用可能である。
【0032】データ処理装置1は、演算処理装置(CP
U)3と、内部メモリ4と、補助記憶装置5と、シリア
ルインターフェース回路6とを備え、これらがバス7に
よって相互に接続されてなる。このデータ処理装置1
は、例えば、補助記憶装置5に格納されているプログラ
ムを読み出して、当該プログラムを、内部メモリ4をワ
ークエリアとして使用して、CPU3により実行する。
このとき、必要に応じて、シリアルインターフェース回
路6を介してメモリカード2との間でデータのやり取り
を行う。
【0033】なお、本発明が適用されるシステムに使用
されるデータ処理装置1は、記憶装置との間でデータの
やり取りが可能なものであるならば特に限定されるもの
ではなく、本発明は、パーソナルコンピュータ、デジタ
ルスチルカメラ、デジタルビデオカメラ等、種々のデー
タ処理装置に適用可能である。
【0034】データ処理装置1とメモリカード2とは、
シリアルインターフェースによって接続されており、具
体的には、少なくとも3本のデータ線SCLK,Sta
te,DIOによって接続される。すなわち、データ処
理装置1とメモリカード2とは、少なくとも、データ伝
送時にクロック信号を伝送する第1のデータ線SCLK
と、データ伝送時に必要なステータス信号を伝送する第
2のデータ線Stateと、メモリカード2に書き込む
データ又はメモリカード2から読み出すデータ等をシリ
アルに伝送する第3のデータ線DIOとによって接続さ
れ、これらを介して、データ処理装置1とメモリカード
2との間でのデータのやり取りを行う。
【0035】データ処理装置1とメモリカード2との間
でのデータのやり取りは、通常、ヘッダーと実データと
から構成されるファイル単位で行われる。なお、ファイ
ルのヘッダーには、例えば、ファイルにアクセスするた
めの情報や、データ処理装置1で実行されるプログラム
で必要とされる情報等が格納される。
【0036】2.メモリカードの構成 メモリカード2は、図2に示すように、いわゆるコント
ロールICからなるコントローラ11と、コントローラ
11によって管理されるフラッシュメモリ12とを備え
ている。
【0037】コントローラ11は、シリアル/パラレル
変換やパラレル/シリアル変換等を行うシリアル/パラ
レル・パラレル/シリアル・インターフェース・シーケ
ンサ13(以下、S/P&P/S・インターフェース・
シーケンサ13と称する。)と、フラッシュメモリ12
へのインターフェースを司るフラッシュメモリ・インタ
ーフェース・シーケンサ14と、S/P&P/S・イン
ターフェース・シーケンサ13とフラッシュメモリ・イ
ンターフェース・シーケンサ14との間でやり取りされ
るデータを一時的に記憶するページバッファ15と、エ
ラー訂正の処理を行うエラー訂正回路16と、フラッシ
ュメモリ12へのアクセスを制御する制御コマンドの生
成等を行うコマンドジェネレータ17と、このメモリカ
ード2のバージョン情報や各種属性情報等が格納されて
いるコンフィグレーションROM18と、各回路に対し
てそれらの動作に必要なクロック信号を供給する発振器
19とを備えている。
【0038】S/P&P/S・インターフェース・シー
ケンサ13は、少なくとも上述した3本のデータ線SC
LK,State,DIOを介して、データ処理装置1
のシリアルインターフェース回路6に接続され、これら
のデータ線SCLK,State,DIOを介して、デ
ータ処理装置1との間でデータのやり取りを行う。すな
わち、S/P&P/S・インターフェース・シーケンサ
13は、ページバッファ15から送られてきたパラレル
データをシリアルデータに変換して、データ処理装置1
のシリアルインターフェース回路6へ送出する。また、
S/P&P/S・インターフェース・シーケンサ13
は、データ処理装置1のシリアルインターフェース回路
6から送られてきたシリアルデータをパラレルデータに
変換して、ページバッファ15へ送出する。
【0039】このS/P&P/S・インターフェース・
シーケンサ13とデータ処理装置1との間でのシリアル
データの伝送は、第1のデータ線SCLKによってデー
タ処理装置1から送られてくるクロック信号によって同
期を取りながら、第3のデータ線DIOによって行われ
る。このとき、第3のデータ線DIOによってやり取り
されるシリアルデータのデータ種別は、第2のデータ線
Stateによって伝送されるステータス信号によって
判別される。ここで、シリアルデータの種別には、例え
ば、フラッシュメモリ12に書き込むべきデータ、フラ
ッシュメモリ12から読み出されたデータ、又はこのメ
モリカード2の動作を制御するための制御データ等があ
る。なお、ステータス信号は、メモリカード2の状態を
示すためにも使用される。ステータス信号によって示さ
れるメモリカード2の状態には、例えば、メモリカード
2が何らかの処理の最中でデータ処理装置1からのデー
タ入力を受け付けない状態や、メモリカード2の側での
処理が終了してデータ処理装置1からのデータ入力を待
っている状態等がある。
【0040】また、S/P&P/S・インターフェース
・シーケンサ13は、データ処理装置1から送られてき
たデータがメモリカード2の動作を制御するための制御
データである場合には、当該制御データをコマンドジェ
ネレータ17に送出する。
【0041】コマンドジェネレータ17は、データ処理
装置1からS/P&P/S・インターフェース・シーケ
ンサ13を介して送られてきた制御データに基づいて、
フラッシュメモリ12へのアクセスを制御する制御コマ
ンドを生成し、当該制御コマンドをフラッシュメモリ・
インターフェース・シーケンサ14へ送出する。フラッ
シュメモリ・インターフェース・シーケンサ14は、後
述するように、この制御コマンドに基づいて、フラッシ
ュメモリ12にデータを書き込んだり、フラッシュメモ
リ12からデータを読み出したりする。
【0042】なお、このコマンドジェネレータ17に
は、誤消去防止スイッチ20が接続されている。そし
て、この誤消去防止スイッチ20がオンになっていると
きには、フラッシュメモリ12に書かれているデータを
消去するように指示する制御データがデータ処理装置1
から送られてきたとしても、コマンドジェネレータ17
は、フラッシュメモリ12に書かれているデータを消去
するような制御コマンドを生成しない。すなわち、この
メモリカード2は、誤消去防止スイッチ20によって、
フラッシュメモリ12に保存されているデータの消去が
行えない状態と、フラッシュメモリ12に保存されてい
るデータの消去が行える状態とを切り換えることが可能
となっている。
【0043】S/P&P/S・インターフェース・シー
ケンサ13とフラッシュメモリ・インターフェース・シ
ーケンサ14との間に配されたページバッファ15は、
いわゆるバッファメモリであり、S/P&P/S・イン
ターフェース・シーケンサ13とフラッシュメモリ・イ
ンターフェース・シーケンサ14との間でやり取りされ
るデータを一時的に記憶する。
【0044】すなわち、S/P&P/S・インターフェ
ース・シーケンサ13からフラッシュメモリ・インター
フェース・シーケンサ14へ送られるデータは、先ず、
S/P&P/S・インターフェース・シーケンサ13か
らページバッファ15に送られて、このページバッファ
15によって一時的に記憶される。このとき、ページバ
ッファ15に記憶されたデータは、エラー訂正回路16
によってエラー訂正符号が付けられる。そして、エラー
訂正符号が付けられたデータは、ページバッファ15か
ら所定のページ単位毎(例えば1ページ=512バイト
とされる。)に、フラッシュメモリ・インターフェース
・シーケンサ14へと送られる。
【0045】或いは、フラッシュメモリ・インターフェ
ース・シーケンサ14からS/P&P/S・インターフ
ェース・シーケンサ13へ送られるデータは、先ず、フ
ラッシュメモリ・インターフェース・シーケンサ14か
らページバッファ15に送られて、このページバッファ
15によって一時的に記憶される。このとき、ページバ
ッファ15に記憶されたデータは、エラー訂正回路16
によってエラー訂正処理が施される。そして、エラー訂
正処理が施されたデータは、ページバッファ15から所
定のページ単位毎に、S/P&P/S・インターフェー
ス・シーケンサ13へと送られる。
【0046】フラッシュメモリ・インターフェース・シ
ーケンサ14は、コマンドジェネレータ17からの制御
コマンドに基づいて、フラッシュメモリ12へのデータ
の書き込みや、フラッシュメモリ12からのデータの読
み出し等を行う。すなわち、フラッシュメモリ・インタ
ーフェース・シーケンサ14は、コマンドジェネレータ
17からの制御コマンドに基づいて、フラッシュメモリ
12からデータを読み出して、当該データを上述のよう
にページバッファ15を介して、S/P&P/S・イン
ターフェース・シーケンサ13へと送出する。或いは、
フラッシュメモリ・インターフェース・シーケンサ14
は、コマンドジェネレータ17からの制御コマンドに基
づいて、S/P&P/S・インターフェース・シーケン
サ13からのデータを、上述のようにページバッファ1
5を介して受け取り、当該データをフラッシュメモリ1
2に書き込む。
【0047】コンフィグレーションROM18には、こ
のメモリカード2のバージョン情報や各種属性情報等が
格納されている。コンフィグレーションROM18に格
納された情報は、必要に応じて、S/P&P/S・イン
ターフェース・シーケンサ13を介してコマンドジェネ
レータ17によって読み出されて使用される。すなわ
ち、コマンドジェネレータ17は、必要に応じて、コン
フィグレーションROM18に格納されている情報を読
み出し、この情報に基づいてメモリカード2に関する各
種設定を行う。
【0048】以上のようなメモリカード2に対して、フ
ラッシュメモリ12に書き込まれるデータが、上述した
3本のデータ線SCLK,State,DIOを介し
て、データ処理装置1からシリアルデータとして送られ
てくると、先ず、S/P&P/S・インターフェース・
シーケンサ13は、当該シリアルデータをパラレルデー
タに変換し、当該パラレルデータをページバッファ15
へ送出する。ページバッファ15は、S/P&P/S・
インターフェース・シーケンサ13から送られてきたデ
ータを一時的に記憶する。このとき、ページバッファ1
5に記憶されたデータには、エラー訂正回路16によっ
てエラー訂正符号が付けられる。そして、エラー訂正符
号が付けられたデータは、所定のページ単位毎にフラッ
シュメモリ・インターフェース・シーケンサ14に送出
される。そして、フラッシュメモリ・インターフェース
・シーケンサ14は、ページバッファ15から送られて
きたデータを、コマンドジェネレータ17からの制御コ
マンドに基づいて、フラッシュメモリ12に書き込む。
以上の処理により、データ処理装置1から送られてきた
データが、フラッシュメモリ12に書き込まれる。
【0049】また、以上のようなメモリカード2からデ
ータを読み出す際は、先ず、コマンドジェネレータ17
からの制御コマンドに基づいて、フラッシュメモリ・イ
ンターフェース・シーケンサ14によって、フラッシュ
メモリ12からデータが読み出される。そして、フラッ
シュメモリ・インターフェース・シーケンサ14は、フ
ラッシュメモリ12から読み出したデータをページバッ
ファ15に送出する。ページバッファ15は、フラッシ
ュメモリ・インターフェース・シーケンサ14から送ら
れてきたデータを一時的に記憶する。このとき、ページ
バッファ15に記憶されたデータには、エラー訂正回路
16によってエラー訂正処理が施される。そして、エラ
ー訂正処理が施されたデータは、所定のページ単位毎に
S/P&P/S・インターフェース・シーケンサ13に
送出される。そして、S/P&P/S・インターフェー
ス・シーケンサ13は、ページバッファ15から送られ
てきたデータを、シリアルデータに変換した上で、上述
した3本のデータ線SCLK,State,DIOを介
して、データ処理装置1へと送出する。以上の処理によ
り、フラッシュメモリ12から読み出されたデータが、
データ処理装置1へと送出される。
【0050】なお、データの書き込みや読み出しを行う
際は、フラッシュメモリ12に書き込まれるデータやフ
ラッシュメモリ12から読み出されたデータのやり取り
が行われるだけでなく、そのやり取りを制御するための
制御データも、データ処理装置1からメモリカード2の
S/P&P/S・インターフェース・シーケンサ13へ
送られる。この制御データは、S/P&P/S・インタ
ーフェース・シーケンサ13からコマンドジェネレータ
17に送られる。そして、コマンドジェネレータ17
は、S/P&P/S・インターフェース・シーケンサ1
3から送られてきた制御データに基づいて、フラッシュ
メモリ12へのアクセスを制御する制御コマンドを生成
する。そして、この制御コマンドは、フラッシュメモリ
・インターフェース・シーケンサ14に送られ、フラッ
シュメモリ・インターフェース・シーケンサ14は、こ
の制御コマンドに基づいてフラッシュメモリ12にアク
セスして、データの書き込みやデータの読み出しを行
う。
【0051】なお、メモリカード2は、上述した3本の
データ線SCLK,State,DIOを備えるだけで
なく、その他に、電圧供給用の配線や、通常は使用しな
いリザーブの配線等を備えていてもよい。例えば、図2
並びに後掲する図3では、上述した3本のデータ線SC
LK,State,DIOの他に、4本の電源用の配線
VSS1,VSS2,VCC,INTと、3本のリザー
ブの配線RSV1,RSV2,RSV3とをメモリカー
ド2に設けた例を挙げている。
【0052】3.メモリカードの外観 つぎに、以上のようなメモリカード2の具体的な外形に
ついて、図3を参照して説明する。
【0053】メモリカード2は、合成樹脂等からなり平
面形状が長方形とされる薄肉のカード状のケース21
に、上述したコントローラ11やフラッシュメモリ12
等が内蔵されてなる。そして、このメモリカード2は、
当該メモリカード2を装着する装着機構を備えたデータ
処理装置1に装着されて使用される。
【0054】このメモリカード2のケース21の前端部
には、斜めに切り欠かれた切り欠き部22が形成されて
おり、更に当該切り欠き部22が形成された部分に、1
0個の凹状部23が形成されている。そして、これらの
凹状部23の内部には、メモリカード2がデータ処理装
置1の装着装置に装着されたときに、データ処理装置1
の接続端子に接続される外部接続用端子が、それぞれ配
されている。すなわち、このメモリカード2は、外部接
続用端子として10本の端子24a,24b,24c,
24d,24e,24f,24g,24h,24i,2
4jを備えている。これらの外部接続用端子の内訳は、
3本のデータ線用の端子24b,24d,24h、4本
の電源用端子24a,24f,24i,24j、及び3
本のリザーブ端子24c,24e,24gである。
【0055】また、このメモリカード2のケース21の
上面には、誤消去防止部材25が取り付けられている。
誤消去防止部材25は、ケース21の内部に収納された
上記誤消去防止スイッチ20に係合されており、この誤
消去防止部材25をスライド操作することにより、誤消
去防止スイッチ20のオン/オフの切り換えを行えるよ
うになっている。
【0056】このメモリカード2には、データ処理装置
1の装着装置に装着された際にメモリカード2がデータ
処理装置1から脱落しないようにするため、ケース20
の側面の一方に円弧状の第1のロック用切欠部26が形
成され、ケース20の側面の他方に矩形状の第2のロッ
ク用切欠部27が形成されている。そして、このメモリ
カード2がデータ処理装置1の装着装置に装着される
と、メモリカード2が脱落しないように、これらのロッ
ク用切欠部26,27が、データ処理装置1の装着装置
に係合される。
【0057】なお、図3に示したメモリカード2は、本
発明が適用される記憶装置の一例に過ぎない。すなわ
ち、本発明は、記憶装置の外形に依存することなく、ど
んな外形の記憶装置にも適用可能である。
【0058】4.記憶領域の構造 つぎに、以上のようなメモリカード2に搭載されるフラ
ッシュメモリ12の記憶領域の構造について説明する。
【0059】このフラッシュメモリ12の記憶領域は、
図4(a)に示すように、データ消去の単位となる複数
のブロックに分割されてなる。なお、これらのブロック
には、このメモリカード2が起動されたときにデータ処
理装置1によって最初に読み込まれるデータであるブー
トデータが格納されるブートブロックと、任意のデータ
が書き込まれるデータブロックとがある。各ブロックに
は、それぞれ固有の物理アドレスが付けられている。こ
れらのブロックは、データ消去の単位であると同時に、
ファイル管理上の最小単位でもある。すなわち、ファイ
ルは1つ又は複数のブロックに格納され、1つのブロッ
クを複数のファイルで利用することはできない。
【0060】そして、各ブロックは、「1」又は「0」
を示す2つの状態を取りうる複数のビットからなり、初
期状態では、全てのビットが「1」とされており、ビッ
ト単位での変更は「1」から「0」へだけが可能となっ
ている。すなわち、「1」及び「0」からなるデータを
書き込む際、「1」については該当するビットをそのま
ま保持し、「0」については該当するビットを「1」か
ら「0」に変更する。
【0061】そして、一度書き込んだデータを消去する
際は、ブロック単位で一括して初期化処理を行い、当該
ブロックの全ビットを「1」とする。これにより、当該
ブロックに書き込まれたデータが一括して消去され、そ
のブロックは再びデータの書き込みが可能な状態とな
る。なお、「0」から「1」への変更を行うには、ブロ
ック単位で一括して初期化処理を行い、当該ブロックの
全ビットを「1」にする必要があるが、「1」から
「0」への変更は、ブロック単位で一括して初期化処理
を行わなくて可能である。
【0062】なお、本発明は、上述のように各ビットが
2つの状態だけを取りうるフラッシュメモリ(いわゆる
2値型のフラッシュメモリ)だけでなく、各ビットが3
つ以上の状態を取りうるフラッシュメモリ(いわゆる多
値型のフラッシュメモリ)にも適用可能である。
【0063】上記フラッシュメモリ12の各ブロック
は、図4(b)に示すように、データの書き込みや読み
出しの単位となる複数のページから構成される。すなわ
ち、このフラッシュメモリ12にデータを書き込む際
は、上述したように、ページ単位にてページバッファ1
5から送られてきたデータが、フラッシュメモリ・イン
ターフェース・シーケンサ14によってページ単位にて
フラッシュメモリ12に書き込まれる。また、このフラ
ッシュメモリ12からデータを読み出す際は、フラッシ
ュメモリ・インターフェース・シーケンサ14によって
ページ単位毎にデータが読み出されて、ページバッファ
15へと送られる。
【0064】各ページは、データエリアと、冗長エリア
とを有している。データエリアは、任意のデータが書き
込まれる領域である。冗長エリアは、データエリアに書
き込まれるデータの管理に必要な情報が格納される領域
である。
【0065】具体的には、図4(c)に示すように、ブ
ロックの先頭ページの冗長エリアには、当該ブロックを
管理するために必要な情報として、いわゆる分散管理情
報が格納される。また、ブロックの2ページ目以降の各
ページの冗長エリアにも、予備の分散管理情報として、
先頭ページの冗長エリアに格納された分散管理情報と同
じものが格納される。ただし、最終ページの冗長エリア
には、分散管理情報ではなく、分散管理情報だけでは管
理しきれない追加情報として、いわゆる追加管理情報が
格納される。
【0066】このように、このフラッシュメモリ12で
は、各ブロック内の冗長エリアに分散管理情報が格納さ
れる。分散管理情報は、当該分散管理情報が格納された
ブロックを管理するための情報である。この分散管理情
報により、例えば、当該ブロックがファイルの先頭とな
るブロックであるか否かについての情報や、複数のブロ
ックからファイルが構成される場合にはそれらのブロッ
クの繋がりを示す情報等を得ることができる。なお、こ
の分散管理情報については、後で詳細に説明する。
【0067】そして、このメモリカード2では、各ブロ
ックの分散管理情報を集めることにより、フラッシュメ
モリ全体を管理するための情報として、いわゆる集合管
理情報を作成して、この集合管理情報をファイルとして
フラッシュメモリ12に格納しておくようにする。
【0068】そして、通常は、集合管理情報によって、
各ブロックにアクセスするために必要な情報を得るよう
にする。すなわち、データ処理装置1とメモリカード2
との間でデータのやり取りを行う際、データ処理装置1
は、集合管理情報をメモリカード2から読み出して内部
メモリ4に管理テーブルを作成し、この管理テーブルに
基づいてメモリカード2にアクセスする。これにより、
データアクセスの都度、個々のブロックに格納された分
散管理情報にアクセスするような必要がなくなり、より
高速なデータアクセスが可能となる。
【0069】5.分散管理情報 つぎに、分散管理情報について詳細に説明する。
【0070】分散管理情報は、当該分散管理情報が格納
されたブロックを管理するための情報であり、16バイ
トの冗長エリアに書き込まれてなる。具体的には、図5
に示すように、1バイトの可/不可フラグと、1バイト
のブロックフラグと、4ビットの最終フラグと、4ビッ
トの参照フラグと、1バイトの管理フラグと、2バイト
の論理アドレスと、2バイトの連結アドレスと、3バイ
トのリザーブ領域と、2バイトの分散管理情報用エラー
訂正符号と、3バイトのデータ用エラー訂正符号とから
なる。
【0071】可/不可フラグは、ブロックが使用可能状
態か使用不可能状態かを示すフラグであり、具体的に
は、「使用可」と「使用不可」の2つの状態を示す。
「使用可」は、当該ブロックが使用可能な状態を示し、
「使用不可」は、当該ブロックが使用不可能な状態であ
ることを示す。例えば、ブロック内に回復不能なエラー
が生じたようなときに、この可/不可フラグが「使用不
可」に設定され、当該ブロックが使用不可とされる。
【0072】ブロックフラグは、ブロックの状態を示す
フラグであり、具体的には、「未使用」「先頭使用」
「使用」「未消去」の4つの状態を示す。「未使用」
は、当該ブロックが未使用又は消去済みで、初期状態
(全ビットが「1」の状態)とされており、直ぐにデー
タの書き込みが可能な状態を示す。「先頭使用」は、当
該ブロックがファイルの先頭で使用されている状態を示
す。なお、ブートデータが格納されたブートブロックに
おいて、ブロックフラグは「先頭使用」とされる。「使
用」は、当該ブロックがファイルの先頭以外で使用され
ている状態を示す。ブロックフラグが「使用」のとき、
当該ブロックは、他のブロックから連結されていること
となる。「未消去」は、当該ブロックに書かれていたデ
ータが無効となった状態を示す。例えば、データの消去
を行うときに、取りあえずブロックフラグを「未消去」
にしておき、処理時間に余裕があるときに、ブロックフ
ラグが「未消去」になっているブロックを消去するよう
にする。これにより、消去処理をより効率良く行うこと
が可能となる。
【0073】最終フラグは、ファイルが終わっているか
否かを示すフラグであり、具体的には、「ブロック連
続」「ブロック最終」の2つの状態を示す。「ブロック
連続」は、次のブロックへの連結があることを示す。す
なわち、「ブロック連続」は、当該ブロックに格納され
たファイルにはまだ続きがあり、当該ファイルが他のブ
ロックに続いていることを示す。「ブロック最終」は、
最終ブロックであることを示す。すなわち、「ブロック
最終」は、当該ブロックに格納されたファイルが、この
ブロックで終了していることを示す。
【0074】参照フラグは、追加管理情報の参照を指定
するためのフラグであり、換言すれば、データエリアの
途中でデータが終わっていることを示すフラグである。
この参照フラグは、具体的には、「参照情報なし」「参
照情報あり」の2つの状態を示す。「参照情報なし」
は、ブロックの最終ページの冗長領域に、有効な追加管
理情報が存在しないことを示す。「参照情報あり」は、
ブロックの最終ページの冗長領域に、有効な追加管理情
報が存在していることを示す。
【0075】管理フラグは、ブロックの属性等を示すフ
ラグである。例えば、この管理フラグによって、当該ブ
ロックが読み出し専用ブロックか、或いは書き込みも可
能なブロックであるかが示される。また、例えば、この
管理フラグによって、当該ブロックがブートブロックで
あるか、或いはデータブロックであるかが示される。
【0076】論理アドレスは、文字通りそのブロックの
論理アドレスを示す。この論理アドレスの値は、データ
の書き換えを行うときなどに必要に応じて更新される。
なお、論理アドレスの値は、正常に処理が行われている
限り、同じ論理アドレスの値を同時に複数のブロックが
持つことがないように設定される。
【0077】ところで、フラッシュメモリの場合、同一
ブロック内でデータを書き換えるには、上述したよう
に、先ずブロック消去を行う必要がある。しかしなが
ら、保証されている消去可能回数には上限があり、ブロ
ック消去の回数は出来るだけ少なくすることが要求され
る。そこで、ブロックのデータを更新する際は、同一の
ブロックを使って新たなデータに書き換えるのではな
く、他のブロックに新たなデータを書き込むようにす
る。このとき、先にデータが格納されていたブロック
は、当該ブロックに格納されていたデータが無効になっ
たことを示すように、ブロックフラグを「未消去」にす
る。そして、このメモリカード2では、このようにデー
タを更新した場合でも、当該データが格納されているブ
ロックを示すアドレスが同じとなるように、各ブロック
に対して予め設定されている物理アドレスとは別に、動
的に変更が可能な論理アドレスを各ブロックに割り当て
て、この論理アドレスでデータが格納されているブロッ
クを表すようにする。
【0078】連結アドレスは、当該ブロックに連結する
ブロックの論理アドレスを示す。すなわち、ブロックに
格納されたファイルにはまだ続きがあり、当該ファイル
が他のブロックに続いている場合、連結アドレスには、
そのファイルの続きが格納された次のブロックの論理ア
ドレスの値が設定される。
【0079】分散管理情報用エラー訂正符号は、分散管
理情報のうち、管理フラグ、論理アドレス、連結アドレ
ス及びリザーブ領域に書き込まれデータを対象としたエ
ラー訂正符号である。
【0080】なお、可/不可フラグ、ブロックフラグ、
最終フラグ及び参照フラグは、分散管理情報用エラー訂
正符号によるエラー訂正やエラー検出の対象となってい
ない。したがって、可/不可フラグ、ブロックフラグ、
最終フラグ及び参照フラグは、分散管理情報用エラー訂
正符号を更新することなく書き換えることが可能となっ
ている。
【0081】データ用エラー訂正符号は、当該データ用
エラー訂正符号が格納されているページのデータエリア
に書き込まれたデータを対象としたエラー訂正符号であ
る。
【0082】なお、分散管理情報用エラー訂正符号やデ
ータ用エラー訂正符号は、メモリカード2の内部に配さ
れたエラー訂正回路16によって使用される。したがっ
て、これらのエラー訂正符号を用いてのエラー訂正は、
データ処理装置1に依存することなく、メモリカード2
に依存した任意の手法を使用することができる。
【0083】6.追加管理情報 つぎに、追加管理情報について詳細に説明する。
【0084】追加管理情報は、ブロックの最終ページの
16バイトの冗長エリアに格納される情報であり、分散
管理情報だけでは管理しきれない追加情報を含んでい
る。
【0085】具体的には、追加管理情報は、図6に示す
ように、1バイトの可/不可フラグと、1バイトのブロ
ックフラグと、4ビットの最終フラグと、4ビットの参
照フラグと、1バイトの識別番号と、2バイトの有効デ
ータサイズと、5バイトのリザーブ領域と、2バイトの
追加管理情報用エラー訂正符号と、3バイトのデータ用
エラー訂正符号とからなる。
【0086】ここで、可/不可フラグ、ブロックフラ
グ、最終フラグ、参照フラグ、リザーブ領域及びデータ
用エラー訂正符号については、分散管理情報の場合と同
様である。また、追加管理情報用エラー訂正符号は、分
散管理情報における分散管理情報用エラー訂正符号に相
当するものであり、追加管理情報のうち、識別番号、有
効データサイズ及びリザーブ領域に書き込まれデータを
対象としたエラー訂正符号である。
【0087】そして、識別番号及び有効データサイズと
が、分散管理情報だけでは管理しきれない追加情報とし
て、追加管理情報に含まれている。
【0088】識別番号は、エラー処理用の情報であり、
ブロックのデータを書き換える度に、この識別番号の値
がインクリメントされる。この識別番号は、何らかのエ
ラーが発生して、同じ論理アドレスを持つブロックが複
数存在するようになってしまった場合に、それらのブロ
ックに書き込まれたデータの新旧を識別するために使用
される。なお、識別番号には1バイトの領域が使用さ
れ、その値の範囲は「0」から「255」までであり、
その初期値は「0」とされる。なお、識別番号が「25
5」を越えたときには「0」に戻される。そして、同じ
論理アドレスを持つデータブロックが複数存在する場合
には、この識別番号の値が小さい方のデータブロックを
有効とする。ただし、ブートブロックについては、ブー
トブロックの予備がある場合、正常時には、それらのブ
ートブロックの識別番号は同じ値とされる。何らかの異
常により、それらの識別番号が異なるような状態となっ
た場合には、識別番号の値が大きい方のブートブロック
を有効とする。
【0089】また、有効データサイズは、ブロック内の
有効なデータのサイズを示す。すなわち、当該ブロック
のデータエリアに空きがある場合、有効データサイズに
は、当該データエリアに書き込まれたデータのサイズを
示す値が設定される。このとき、分散管理情報の参照フ
ラグは「参照情報あり」に設定される。なお、ブロック
のデータエリアに空きがない場合、有効データサイズに
は、当該データエリアに空きがないことを示す値とし
て、「0xffff」が設定される。
【0090】なお、以上のような分散管理情報及び追加
管理情報は、ブロック内のデータが更新される毎に、常
に最新情報となるように更新される。
【0091】7.集合管理情報 つぎに、集合管理情報について詳細に説明する。
【0092】集合管理情報は、上述したように、各ブロ
ックの分散管理情報を集めて作成されてなる情報であ
り、ファイルとしてフラッシュメモリ12に格納され
る。すなわち、図7に示すように、各ブロックの分散管
理情報から、全ブロックをまとめて管理するための情報
である集合管理情報のファイルが作成され、この集合管
理情報が所定のブロックのデータエリアに格納される。
なお、集合管理情報は、1つのブロックに格納されるも
のであっても、複数のブロックにわたって格納されるも
のであってもよい。そして、データ処理装置1は、通常
は、この集合管理情報によって、各ブロックにアクセス
するために必要な情報を得るようにする。
【0093】すなわち、メモリカード2に有効な集合管
理情報がファイルとして格納されている場合、データ処
理装置1は、その集合管理情報のファイルを読み出して
内部メモリ4に展開し、メモリカード2を管理するため
の管理テーブルを作成する。なお、集合管理情報のファ
イルの先頭が格納されているブロックの物理アドレス
は、ブートデータに含まれており、データ処理装置1
は、この物理アドレスに基づいて集合管理情報のファイ
ルにアクセスする。
【0094】8.ブロックへのデータの書き込み 本発明を適用したメモリカード2において、ブロックの
データエリアへのデータの書き込みは、図8に示すよう
な規則に則って行う。なお、図8では、ブロックのデー
タエリアにデータが格納されている様子を分かりやすく
図示するために、冗長エリアを省略して示している。
【0095】本発明を適用したメモリカード2では、図
8(a)に示すように、データエリアの先頭から最後ま
で連続してデータを格納することは認める。なお、図8
(a)に示すように、ブロックのデータエリアに空きが
なく、最後までデータが格納されている場合は、上述し
たように、当該ブロックの追加管理情報の有効データサ
イズに、当該データエリアに空きがないことを示す値と
して、「0xffff」が設定される。
【0096】また、図8(b)に示すように、データエ
リアの先頭から途中まで連続してデータを格納すること
も認める。すなわち、データエリアに格納されるデータ
がデータエリアの途中で終わる場合には、当該データを
データエリアの先頭から連続してデータエリアに書き込
む。なお、以下の説明では、このようにデータが途中ま
で格納されているブロックのことを穴あきブロックと称
する。
【0097】そして、このようにデータをデータエリア
の途中まで格納するときは、当該データが格納されてい
るブロックの追加管理情報の有効データサイズに、当該
ブロック内の有効なデータのサイズを示す値を設定す
る。すなわち、ブロックのデータエリアに空きがある場
合、有効データサイズには、当該データエリアに書き込
まれたデータのサイズを示す値が設定される。また、こ
のときは、参照フラグは「参照情報あり」に設定され
る。換言すれば、参照フラグが「参照情報あり」となっ
ているときは、データエリアの途中でデータが終わって
いるときである。
【0098】一方、図8(c)や図8(d)に示すよう
に、データエリアの先頭から途中までデータを書き込ん
だ後に空き領域を設けて、その後に更にデータを書き込
むというようなことは認めない。また、図8(e)や図
8(f)に示すように、データエリアの先頭に空き領域
を設けて、その後にデータを書き込むというようなこと
も認めない。
【0099】本発明を適用したメモリカード2では、以
上のような規則に則ってブロックにデータを書き込むよ
うにしているので、参照フラグを参照することにより、
ブロック全体にデータが書かれている場合と、ブロック
の途中でデータが終わっている場合とを区別することが
できる。しかも、ブロックの途中でデータが終わってい
る場合には、有効データサイズを参照することにより、
当該ブロックのどこまでデータが格納されているかを知
ることができる。
【0100】9.ファイル分割処理 つぎに、複数のブロックにわたって格納されているファ
イルを第1のファイルと第2のファイルとに分割する処
理について説明する。
【0101】本発明を適用したメモリカード2では、複
数のブロックにわたって格納されているファイルを第1
のファイルと第2のファイルとに分割する際に、第2の
ファイルに属するデータが格納されているブロックのう
ち、ファイル分割位置に対応するブロック以外のブロッ
クはそのまま保持し、ファイル分割位置に対応するブロ
ックに格納されているデータを他のブロックのデータエ
リアに書き込むようにする。このとき、ブロックのデー
タエリアへのデータの書き込みは、図8に示したような
規則に則って行う。
【0102】具体的には、例えば、図9(a)に示すよ
うに、ブロックC1,C2,C3,C4,C5にわたっ
てファイルのデータが書き込まれていたとする。そし
て、このファイルを、ブロックC3に書かれている部分
の途中で分割して、第1のファイルと第2のファイルと
に分けるとする。
【0103】このときは、図9(b)に示すように、ブ
ロックC3に書かれていたデータのうち、第1のファイ
ルに属する部分のデータだけを他のブロックC6に書き
込む。このとき、ブロックC6のデータエリアには、空
き領域が生じる。そこで、このブロックC6では、分散
管理情報の参照フラグを「参照情報あり」に設定すると
ともに、追加管理情報に有効データサイズを書き込んで
おく。以上の処理により、第1のファイルが、ブロック
C1,C2,C6にわたって格納される。
【0104】また、ブロックC3に書かれていたデータ
のうち、第2のファイルに属する部分のデータを読み出
し、当該データに第2のファイルのヘッダーを追加す
る。そして、ヘッダーが追加されたファイルを、他のブ
ロックC7に書き込む。このとき、図9の例では、ブロ
ックC7のデータエリアに空き領域が生じる。そこで、
このブロックC7では、分散管理情報の参照フラグを
「参照情報あり」に設定するとともに、追加管理情報に
有効データサイズを書き込んでおく。なお、ブロックC
4,C5はそのままにしておく。以上の処理により、第
2のファイルが、ブロックC7,C4,C5にわたって
格納される。
【0105】その後、不要となったデータ、すなわちブ
ロックC3に格納されていたデータを消去する。なお、
ここでの消去は、ブロックC3に対して直ぐに消去処理
を施すようにしてもよいが、ここではブロックフラグを
「未消去」にするだけにしておき、後で処理時間に余裕
があるときに消去処理を施すようにしてもよい。
【0106】以上の処理により、ブロックC1,C2,
C3,C4,C5にわたって格納されていたファイル
が、ブロックC1,C2,C6にわたって格納された第
1のファイルと、ブロックC7,C4,C5にわたって
格納された第2のファイルとに分割される。
【0107】このとき、第2のファイルの先頭部分が格
納されたブロックC7は、穴あきブロックとなるが、こ
のブロックC7には、参照フラグが「参照情報あり」に
設定されているとともに有効データサイズが書き込まれ
ている。したがって、参照フラグにより、ブロックC7
がデータエリアの途中までしかデータが格納されていな
いブロックであることが分かり、また、有効データサイ
ズにより、有効なデータがブロックC7のデータエリア
のどこまで格納されているかが分かる。
【0108】したがって、第2のファイルの先頭部分が
格納されたブロックC7が、空き領域を有する穴あきブ
ロックであったとしても、当該空き領域のために第2の
ファイルが分断されてしまうようなことはなく、ブロッ
クC7の空き領域を飛ばしてブロックC7,C4,C5
にわたって格納された一連のデータとして、第2のファ
イルを扱うことができる。
【0109】つぎに、以上のようなファイル分割処理に
ついて、図10乃至図12に示すフローチャートを参照
して更に詳細に説明する。
【0110】なお、ここでは、変数としてLink,Offse
t,Size1,Size2,Hsizeを使用する。変数Linkは、連結
アドレスが入力される変数である。また、変数Offset,
Size1,Size2,Hsizeは、データサイズが入力される変
数である。
【0111】ファイルを第1のファイルと第2のファイ
ルとに分割する際は、図10に示すように、先ず、ステ
ップS1において、ファイルの分割位置に移動する。す
なわち、アクセスするブロックが、ファイル分割位置に
対応するブロック(以下、分割ブロックと称する。)と
なるようにする。
【0112】次に、ステップS2において、分割ブロッ
クの識別番号を読み出して、その値を1インクリメント
し、この値を、次に書き込むブロックの識別番号の値と
して設定する。また、分割ブロックの論理アドレス及び
ブロックフラグを読み出し、これらを次に書き込むブロ
ックの論理アドレス及びブロックフラグとしてそのまま
設定する。また、次に書き込むブロックの最終フラグを
「ブロック最終」に設定する。
【0113】次に、ステップS3において、変数Link
に、分割ブロックの連結アドレスを代入する。
【0114】次に、ステップS4において、変数Offset
に、分割ブロックのデータエリアに格納されているデー
タのうち、ブロック先頭からファイル分割位置までのバ
イト数を代入する。また、変数Size1に、分割ブロック
のデータエリアに格納されている有効な全データのバイ
ト数を代入する。
【0115】次に、ステップS5において、変数Offset
の値と、ブロックのデータエリアのサイズ(以下、ブロ
ックサイズと称する。)とを比較する。そして、変数Of
fsetの値がブロックサイズよりも小さければ、ステップ
S6へ進み、変数Offsetの値がブロックサイズ以上であ
れば、ステップS7へ進む。
【0116】ステップS6では、次に書き込むブロック
の参照フラグを「参照情報あり」に設定する。また、次
に書き込むブロックの追加管理情報の有効データサイズ
の欄に書き込む値として、「Offset−1バイト」を設定
する。その後、ステップS8に進む。
【0117】また、ステップS7では、次に書き込むブ
ロックの追加管理情報の有効データサイズの欄に書き込
む値として、「ブロックサイズ−1バイト」を設定す
る。その後、ステップS8に進む。
【0118】そして、ステップS8において、以上のス
テップで設定した内容に基づいて、次に書き込むブロッ
ク、すなわち第1のファイルの末尾が格納されるブロッ
クについて、その分散管理情報及び追加管理情報を作成
する。
【0119】次に、ステップS9において、空いている
物理アドレスを検索する。
【0120】次に、ステップS10において、分割ブロ
ックのデータエリアの先頭から変数Offsetが示すサイズ
分だけデータを読み出す。そして、当該データを、ステ
ップS8で作成した分散管理情報及び追加管理情報とと
もに、ステップS9で検索した物理アドレスのブロック
に書き込む。
【0121】次に、図11のステップS11において、
変数Hsizeに、第2のファイルのヘッダーのサイズを代
入する。
【0122】次に、ステップS12において、変数Size
2に「Size1−Offset+Hsize」を代入する。
【0123】次に、ステップS13において、変数Size
2の値と、ブロックサイズとを比較する。そして、変数S
ize2の値がブロックサイズ以下であれば、ステップS1
4へ進み、変数Size2の値がブロックサイズよりも大き
ければ、図12のステップS20へ進む。
【0124】ステップS14において、次に書き込むブ
ロックの識別番号の値を「0」に設定する。また、次に
書き込むブロックの連結アドレスに変数Linkが示すアド
レスを設定する。また、次に書き込むブロックのブロッ
クフラグを「先頭使用」に設定する。
【0125】次に、ステップS15において、次に書き
込むブロックの追加管理情報の有効データサイズの欄に
書き込む値として、「Size2−1バイト」を設定する。
また、次に書き込むブロックの参照フラグを「参照情報
あり」に設定する。
【0126】次に、ステップS16において、空いてい
る論理アドレス及び物理アドレスを検索する。
【0127】次に、ステップS17において、以上のス
テップで設定した内容に基づいて、次に書き込むブロッ
ク、すなわち第2のファイルの先頭が格納されるブロッ
クについて、その分散管理情報及び追加管理情報を作成
する。
【0128】次に、ステップS18において、分割ブロ
ックのデータエリアに格納されているデータのうち、先
頭から変数Offsetが示すサイズ分だけ進んだ位置から、
変数Size1が示すサイズに至るまでデータを読み出す。
そして、当該データを、第2のファイルのヘッダー、並
びにステップS17で作成した分散管理情報及び追加管
理情報とともに、ステップS16で検索した物理アドレ
スのブロックに書き込む。このとき、ブロックの論理ア
ドレスは、ステップS16で検索された論理アドレスと
する。
【0129】次に、ステップS19において、不要とな
ったブロックを使用済化する。具体的には、分割ブロッ
クについて、そのブロックフラグを「未消去」にする。
以上で、ファイル分割処理が完了する。
【0130】一方、ステップS13において、変数Size
2の値がブロックサイズよりも大きければ、上述したよ
うに、図12のステップS20へ進む。このステップS
20では、空いている論理アドレス及び物理アドレスを
検索する。
【0131】次に、ステップS21において、次に書き
込むブロックの識別番号の値を「0」に設定する。ま
た、次に書き込むブロックのブロックフラグを「先頭使
用」に設定する。また、次に書き込むブロックの追加管
理情報の有効データサイズの欄に書き込む値として、
「ブロックサイズ−1バイト」を設定する。
【0132】次に、ステップS22において、次の論理
アドレスを仮確保し、この論理アドレスを次に書き込む
ブロックの連結アドレスとして設定する。
【0133】次に、ステップS23において、以上のス
テップで設定した内容に基づいて、次に書き込むブロッ
ク、すなわち第2のファイルの先頭が格納されるブロッ
クについて、その分散管理情報及び追加管理情報を作成
する。
【0134】次に、ステップS24において、分割ブロ
ックのデータエリアに格納されているデータのうち、先
頭から変数Offsetが示すサイズ分だけ進んだ位置から、
「ブロックサイズ−Hsize」分のデータを読み出す。そ
して、当該データを、第2のファイルのヘッダー、並び
にステップS23で作成した分散管理情報及び追加管理
情報とともに、ステップS20で検索した物理アドレス
のブロックに書き込む。このとき、ブロックの論理アド
レスは、ステップS20で検索された論理アドレスとす
る。
【0135】次に、ステップS25において、空いてい
る物理アドレスを検索する。
【0136】次に、ステップS26において、次に書き
込むブロックの識別番号の値を「0」に設定する。ま
た、次に書き込むブロックのブロックフラグを「使用」
に設定する。また、次に書き込むブロックの連結アドレ
スに変数Linkが示すアドレスを設定する。また、次に書
き込むブロックの参照フラグを「参照情報あり」に設定
する。また、次に書き込むブロックの追加管理情報の有
効データサイズの欄に書き込む値として、「Size2−ブ
ロックサイズ−1バイト」を設定する。
【0137】次に、ステップS27において、以上のス
テップで設定した内容に基づいて、次に書き込むブロッ
ク、すなわち第2のファイルが格納される2番目のブロ
ックについて、その分散管理情報及び追加管理情報を作
成する。
【0138】次に、ステップS28において、分割ブロ
ックのデータエリアに格納されているデータのうち、先
頭から「Offset+ブロックサイズ−Hsize」の分だけ進
んだ位置から、変数Size1が示すサイズに至るまでデー
タを読み出す。そして、当該データを、ステップS27
で作成した分散管理情報及び追加管理情報とともに、ス
テップS25で検索した物理アドレスのブロックに書き
込む。このとき、ブロックの論理アドレスは、ステップ
S22で仮確保されていた論理アドレスとする。
【0139】次に、ステップS29において、不要とな
ったブロックを使用済化する。具体的には、分割ブロッ
クのブロックフラグを「未消去」にする。以上で、ファ
イル分割処理が完了する。
【0140】10.ファイル結合処理 つぎに、第1のファイルと第2のファイルとを結合して
一つのファイルにする処理について説明する。
【0141】本発明を適用したメモリカード2では、1
以上のブロックにわたって格納されている第1のファイ
ルと、1以上のブロックにわたって格納されている第2
のファイルとを結合して一つのファイルにする際に、第
1のファイル及び第2のファイルが格納されているブロ
ックのうち、第1のファイルの末尾のデータが格納され
ているブロックと、第2のファイルの先頭のデータが格
納されているブロックとだけを書き換え、その他のブロ
ックはそのまま保持する。このとき、ブロックのデータ
エリアへのデータの書き込みは、図8に示したような規
則に則って行う。
【0142】具体的には、例えば、図13(a)に示す
ように、ブロックD1,D2,D3にわたって第1のフ
ァイルが格納されており、ブロックD4,D5,D6に
わたって第2のファイルが格納されているときに、これ
ら第1のファイル及び第2のファイルを結合して、1つ
のファイルにするとする。
【0143】このときは、第1のファイルの末尾が格納
されているブロックのデータ、すなわちブロックD3に
書かれているデータを読み出す。また、第2のファイル
の先頭が格納されているブロックのデータ、すなわちブ
ロックD4に書かれていたデータを読み出して、当該デ
ータからヘッダー部分を削除して、実データの部分を抽
出する。
【0144】そして、図13(b)に示すように、ブロ
ックD3に書かれていたデータと、ブロックD4に書か
れていたデータから抽出された第2のファイルの実デー
タとを順に、他のブロックD7,D8へ書き込んでい
く。なお、ここでは、これらのデータの合計が、1ブロ
ック分よりも多いが、2ブロック分には満たない場合を
例を挙げている。したがって、ブロックD7には、デー
タエリアの全体にわたってデータが書き込まれるが、次
にデータが書き込まれるブロックD8には、データエリ
アに空き領域が生じる。そこで、このブロックD8で
は、分散管理情報の参照フラグを「参照情報あり」に設
定するとともに、追加管理情報に有効データサイズを書
き込んでおく。
【0145】その後、不要となったデータ、すなわちブ
ロックD3,D4に格納されていたデータを消去する。
なお、ここでの消去は、ブロックD3,D4に対して直
ぐに消去処理を施すようにしてもよいが、ここではブロ
ックフラグを「未消去」にするだけにしておき、後で処
理時間に余裕があるときに消去処理を施すようにしても
よい。
【0146】以上の処理により、ブロックD1,D2,
D3にわたって格納されていた第1のファイルと、ブロ
ックD4,D5,D6にわたって格納された第2のファ
イルとが結合され、D1,D2,D7,D8,D5,D
6にわたって格納された一つのファイルとされる。
【0147】このとき、ブロックD8は、穴あきブロッ
クとなっているが、このブロックD8には、参照フラグ
が「参照情報あり」に設定されているとともに有効デー
タサイズが書き込まれている。したがって、参照フラグ
により、ブロックD8がデータエリアの途中までしかデ
ータが格納されていないブロックであることが分かり、
また、有効データサイズにより、有効なデータがブロッ
クD8のデータエリアのどこまで格納されているかが分
かる。
【0148】したがって、第1のファイルと第2のファ
イルとが結合されてなるファイルの途中が格納されたブ
ロックD8が、空き領域を有する穴あきブロックであっ
たとしても、当該空き領域のためにファイルが分断され
てしまうようなことはなく、ブロックD8の空き領域を
飛ばしてブロックD1,D2,D7,D8,D5,D6
にわたって格納された一連のデータとして、ファイルを
扱うことができる。
【0149】つぎに、以上のようなファイル結合処理に
ついて、図14乃至図15に示すフローチャートを参照
して更に詳細に説明する。
【0150】なお、ここでは、変数としてAddress1,Ad
dress2,Size1,Size2を使用する。変数Addres1,Addre
ss2は、論理アドレス又は連結アドレスが入力される変
数である。また、変数Size1,Size2は、データサイズが
入力される変数である。
【0151】第1のファイルと第2のファイルとを結合
して一つのファイルにする際は、図14に示すように、
先ず、ステップS31において、第2のファイルの先頭
位置に移動する。すなわち、アクセスするブロックが、
第2のファイルの先頭が格納されているブロック(以
下、第2のファイルの先頭ブロックと称する。)となる
ようにする。
【0152】次に、ステップS32において、変数Addr
ess1に、第2のファイルの先頭ブロックの論理アドレス
の値を代入する。また、変数Address2に、第2のファイ
ルの先頭ブロックの連結アドレスの値を代入する。ま
た、第2のファイルの先頭ブロックのデータエリアに格
納されている有効な全データのバイト数に1バイト加算
した値から、第2のファイルのヘッダーサイズを減じた
値を、変数Size2に代入する。
【0153】次に、ステップS33において、第1のフ
ァイルの末尾位置に移動する。すなわち、アクセスする
ブロックが、第1のファイルの末尾が格納されているブ
ロック(以下、第1のファイルの最終ブロックと称す
る。)となるようにする。
【0154】次に、ステップS34において、第1のフ
ァイルの最終ブロックのデータエリアに格納されている
有効な全データのバイト数に1バイト加算した値を、変
数Size1に代入する。
【0155】次に、ステップS35において、第1のフ
ァイルの最終ブロックの識別番号を読み出して、その値
を1インクリメントし、この値を、次に書き込むブロッ
クの識別番号の値として設定する。また、第1のファイ
ルの最終ブロックの論理アドレス及びブロックフラグを
読み出し、これらを次に書き込むブロックの論理アドレ
ス及びブロックフラグとしてそのまま設定する。また、
次に書き込むブロックの最終フラグを「ブロック連続」
に設定する。
【0156】次に、ステップS36において、変数Size
1及び変数Size2の合計と、ブロックのデータエリアのサ
イズ(以下、ブロックサイズと称する。)とを比較す
る。そして、変数Size1及び変数Size2の合計がブロック
サイズよりも小さければ、ステップS37へ進み、変数
Size1及び変数Size2の合計がブロックサイズ以上であれ
ば、図15のステップS42へ進む。
【0157】ステップS37では、次に書き込むブロッ
クの連結アドレスに変数Address2が示すアドレスを設定
する。
【0158】次に、ステップS38において、次に書き
込むブロックの追加管理情報の有効データサイズの欄に
書き込む値として、「Size1+Size2−1バイト」を設定
する。
【0159】次に、ステップS39において、以上のス
テップで設定した内容に基づいて、次に書き込むブロッ
ク、すなわち第1のファイルの末尾部分及び第2のファ
イルの先頭部分が格納されるブロックについて、その分
散管理情報及び追加管理情報を作成する。
【0160】次に、ステップS40において、第1のフ
ァイルの最終ブロックのデータエリアに格納されている
データと、第2のファイルの先頭ブロックのデータエリ
アに格納されているデータとを読み出し、これらのデー
タを、第2のファイルのヘッダーを除いた上で結合す
る。そして、結合したデータを、ステップS39で作成
した分散管理情報及び追加管理情報とともに、新しいブ
ロックに書き込む。
【0161】次に、ステップS41において、不要とな
ったブロックを使用済化する。具体的には、第1のファ
イルの最終ブロック及び第2のファイルの先頭ブロック
について、それらのブロックフラグを「未消去」にす
る。以上で、ファイル分割処理が完了する。
【0162】一方、ステップS36において、変数Size
1及び変数Size2の合計がブロックサイズ以上であれば、
上述したように、図15のステップS42へ進む。
【0163】ステップS42では、次に書き込むブロッ
クの連結アドレスとして、変数Address1が示すアドレス
を設定する。
【0164】次に、ステップS43において、次に書き
込むブロックの追加管理情報の有効データサイズの欄に
書き込む値として、「ブロックサイズ−1バイト」を設
定する。
【0165】次に、ステップS44において、以上のス
テップで設定した内容に基づいて、次に書き込むブロッ
ク、すなわち第1のファイルの末尾部分及び第2のファ
イルの先頭部分が格納されるブロックについて、その分
散管理情報及び追加管理情報を作成する。
【0166】次に、ステップS45において、第1のフ
ァイルの最終ブロックのデータエリアに格納されていた
データを読み出す。また、第2のファイルの先頭ブロッ
クのデータエリアに格納されているデータのうち、第2
のファイルのヘッダーを除いて、先頭から「ブロックサ
イズ−Size1」分のデータを読み出す。そして、これら
のデータを結合し、この結合したデータを、ステップS
44で作成した分散管理情報及び追加管理情報ととも
に、新しいブロックに書き込む。
【0167】次に、ステップS46において、第2のフ
ァイルの先頭位置に移動する。すなわち、アクセスする
ブロックが、第2のファイルの先頭ブロックとなるよう
にする。
【0168】次に、ステップS47において、第2のフ
ァイルの先頭ブロックの識別番号を読み出して、その値
を1インクリメントし、この値を、次に書き込むブロッ
クの識別番号の値として設定する。また、第2のファイ
ルの先頭ブロックの論理アドレスを読み出し、これを次
に書き込むブロックの論理アドレスとしてそのまま設定
する。また、次に書き込むブロックの最終フラグを「ブ
ロック連続」に設定する。また、次に書き込むブロック
のブロックフラグを「使用」に設定する。
【0169】次に、ステップS48において、次に書き
込むブロックの連結アドレスとして、変数Address2が示
すアドレスを設定する。
【0170】次に、ステップS49において、次に書き
込むブロックの追加管理情報の有効データサイズの欄に
書き込む値として、「Size2−(ブロックサイズ−Size
1)−1」を設定する。
【0171】次に、ステップS50において、以上のス
テップで設定した内容に基づいて、次に書き込むブロッ
ク、すなわち第2のファイルの先頭ブロックに格納され
ていたデータの後半部分が格納されるブロックについ
て、その分散管理情報及び追加管理情報を作成する。
【0172】次に、ステップS51において、第2のフ
ァイルの先頭ブロックのデータエリアに格納されている
データのうち、先頭から「ブロックサイズ−Size1+
(第2のファイルのヘッダーサイズ)」の分だけ進んだ
位置から、変数Size2が示すサイズに至るまでデータを
読み出す。そして、当該データを、ステップS50で作
成した分散管理情報及び追加管理情報とともに、新しい
ブロックに書き込む。
【0173】次に、ステップS52において、不要とな
ったブロックを使用済化する。具体的には、第1のファ
イルの最終ブロック及び第2のファイルの先頭ブロック
について、それらのブロックフラグを「未消去」にす
る。以上で、ファイル分割処理が完了する。
【0174】11.穴あきブロックを含むファイルへの
アクセス 本発明を適用したメモリカード2では、ブロックに格納
されているファイルにアクセスする際に、参照フラグが
「参照情報なし」になっているブロックについては、追
加管理情報に書かれた有効データサイズを調べる必要は
なく、ブロック全体にデータが書かれていると判断すれ
ばよい。また、参照フラグが「参照情報あり」になって
いるブロックは、追加管理情報に書かれた有効データサ
イズを調べることで、有効なデータの範囲を判断するこ
とができる。
【0175】このようにして行うファイルアクセスの例
として、ファイルの先頭から指定された位置に移動する
際の処理について、図16に示すフローチャートを参照
して詳細に説明する。なお、ここでは、データサイズが
入力される変数として、変数Offset,Sizeを使用する。
【0176】ファイルの先頭から指定された位置に移動
する際は、図16に示すように、先ず、ステップS61
において、変数Offsetに移動位置を示す値を代入する。
具体的には、変数Offsetに、ファイルの先頭から指定さ
れた位置に至るまでのデータサイズを代入する。
【0177】次に、ステップS62において、ファイル
の先頭位置に移動する。すなわち、アクセスするブロッ
クが、ファイルの先頭が格納されているブロックとなる
ようにする。
【0178】次に、ステップS63において、ファイル
の先頭が格納されているブロックの参照フラグを読み出
し、当該参照フラグが「参照情報あり」になっているか
を判別する。「参照情報あり」になっていれば、ステッ
プS64へ進み、「参照情報なし」になっていれば、ス
テップS66へ進む。
【0179】ステップS64では、ファイルの先頭が格
納されているブロックの追加管理情報から、有効データ
サイズを読み出し、次に、ステップS65において、当
該有効データサイズを変数Sizeに代入する。その後、ス
テップS67へ進む。
【0180】一方、ステップS66に進むときは、追加
管理情報から有効データサイズを読み出す必要はなく、
このステップS66では、ブロックのデータエリアのサ
イズを変数Sizeに代入する。その後、ステップS67へ
進む。
【0181】そして、ステップS67では、変数Offset
と変数Sizeとを比較する。そして、変数Offsetが変数Si
zeよりも大きければ、ステップS68へ進み、変数Offs
etが変数Size以下であれば、ステップS70へ進む。
【0182】ステップS68では、変数Offsetに、それ
までの変数Offsetから変数Sizeを減じた値を代入する。
【0183】次に、ステップS69において、次のブロ
ックへ移動する。すなわち、アクセスするブロックが、
ファイルの次の部分が格納されているブロックとなるよ
うにする。その後、ステップS63へ戻って処理を繰り
返す。
【0184】一方、ステップS67において、変数Offs
etが変数Size以下であれば、上述したようにステップS
70へ進む。ステップS70へ進むのは、指定された移
動先が、現在アクセスしているブロックにあるときであ
る。そこで、ステップS70では、現在アクセスしてい
るブロックの先頭から、現在の変数Offsetが示している
データサイズ分だけ進んだ位置へ移動する。
【0185】以上の処理により、ファイルの先頭から指
定された位置への移動が完了する。
【0186】
【発明の効果】以上の説明から明らかなように、本発明
によれば、記憶装置に格納されるファイルの分割や結合
を行うときに、ブロックの書き直しが少なくて済むよう
になる。したがって、記憶装置の長寿命化を図ることが
できる。また、ブロックの書き直しが少なくて済むの
で、処理の高速化を図ることもできる。
【図面の簡単な説明】
【図1】本発明が適用されるシステムの全体構成を示す
図である。
【図2】本発明を適用したメモリカードの構成を示すブ
ロック図である。
【図3】本発明を適用したメモリカードの外観を示す斜
視図である。
【図4】本発明を適用したメモリカードの記憶領域の構
造を示す図である。
【図5】分散管理情報の構成を示す図である。
【図6】追加管理情報の構成を示す図である。
【図7】各ブロックの分散管理情報から集合管理情報を
構築する様子を示す図である。
【図8】ブロックのデータエリアへのデータ書き込み方
法の規則を説明するための図である。
【図9】本発明を適用したファイル分割処理を説明する
ための図である。
【図10】本発明を適用したときのファイル分割処理の
流れを示すフローチャートである。
【図11】本発明を適用したときのファイル分割処理の
流れを示すフローチャートである。
【図12】本発明を適用したときのファイル分割処理の
流れを示すフローチャートである。
【図13】本発明を適用したファイル結合処理を説明す
るための図である。
【図14】本発明を適用したときのファイル結合処理の
流れを示すフローチャートである。
【図15】本発明を適用したときのファイル結合処理の
流れを示すフローチャートである。
【図16】ファイルの先頭から指定された位置へ移動す
る際の処理の流れを示すフローチャートである。
【図17】従来のファイル分割処理を説明するための図
である。
【図18】従来のファイル結合処理を説明するための図
である。
【符号の説明】
1 データ処理装置、 2 メモリカード、 3 演算
処理装置、 4 内部メモリ、 5 補助記憶装置、
6 シリアルインターフェース回路、 7 バス、 1
1 コントローラ、 12 フラッシュメモリ、 13
シリアル/パラレル・パラレル/シリアル・インター
フェース・シーケンサ、 14 フラッシュメモリ・イ
ンターフェース・シーケンサ、 15 ページバッフ
ァ、 16エラー訂正回路、 17 コマンドジェネレ
ータ、 18 コンフィグレーションROM、 19
発振器、 20 誤消去防止スイッチ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平6−161675(JP,A) 特開 平4−317149(JP,A) 特開 平8−255100(JP,A) 特開 平7−191892(JP,A) 特開 平2−292798(JP,A) 特開 平5−241741(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/00

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】 データをファイル単位で記憶領域内に格
    納するとともに、記憶領域がデータの消去単位であると
    同時にファイル管理上の最小単位であるブロックに分割
    されてなるフラッシュメモリを有する記憶装置におい
    て、 各ブロックは、任意のデータが格納されるデータエリア
    と、当該ブロックを管理するために用いられるデータエ
    リアに格納されるデータのサイズとデータエリアの途中
    でデータが終わっていることを示すフラグとが格納され
    る冗長エリアとを有し、 複数のブロックに亘って格納されている1つのファイル
    を第1のファイルと第2のファイルに分割するとき、第
    2のファイルに属するデータが格納されているブロック
    のうち、ファイル分割位置に対応するブロック以外のブ
    ロックはそのまま保持し、ファイル分割位置に対応する
    ブロックに格納されているデータを新規なブロックのデ
    ータエリアに先頭から連続してデータを書き込み、当該
    データエリアの残りを空き領域とし、当該新規なブロッ
    クの冗長エリアに、当該データエリアに格納されたデー
    タのサイズと当該データエリアの途中でデータが終わっ
    ていることを示すフラグとを書き込み、 空白領域を有するブロックにアクセスするとき、該デー
    タエリアの途中でデータが終わっていることを示すフラ
    グがたっていると、データエリアに格納されたデータの
    サイズを調べて次のブロックへ進むようにすることを特
    徴とする記憶装置。
  2. 【請求項2】 データをファイル単位で記憶領域内に格
    納するとともに、記憶領域がデータの消去単位であると
    同時にファイル管理上の最小単位であるブロックに分割
    されてなるフラッシュメモリを有する記憶装置におい
    て、 各ブロックは、任意のデータが格納されるデータエリア
    と、当該ブロックを管理するために用いられるデータエ
    リアに格納されるデータのサイズとデータエリアの途中
    でデータが終わっていることを示すフラグとが格納され
    る冗長エリアとを有し、 1つ以上のブロックにわたって格納されている第1のフ
    ァイルと1つ以上のブロックにわたって格納されている
    第2のファイルとを結合して1つのファイルにすると
    き、第1のファイル及び第2のファイルが格納されてい
    るブロックのうち、第1のファイルの末尾のデータが格
    納されているブロックと第2のファイルの先頭のデータ
    が格納されているブロックとを新規なブロックに書き換
    え、その他のブロックはそのまま保持し、 第1のファイルの末尾のデータが格納されているブロッ
    クと第2のファイルの先頭のデータが格納されているブ
    ロックとを書き換えるとき、新規なブロックの先頭から
    第1のファイルの末尾のデータと第2のファイルの先頭
    とを連続して格納し、残りを空白領域とし、当該新規な
    ブロックの冗長エリアに、当該データエリアに格納され
    たデータのサイズと当該データエリアの途中でデータが
    終わっていることを示すフラグとを書き込み、 空白領域を有するブロックにアクセスするとき、該デー
    タエリアの途中でデータが終わっていることを示すフラ
    グがたっていると、データエリアに格納されたデータの
    サイズを調べて次のブロックへ進むようにすることを特
    徴とする記憶装置。
  3. 【請求項3】 データをファイル単位で記憶領域内に格
    納するとともに、記憶領域がデータの消去単位であると
    同時にファイル管理上の最小単位であるブロックに分割
    されてなるフラッシュメモリを備え、各ブロックが、任
    意のデータが格納されるデータエリアと、当該ブロック
    を管理するために用いられるデータエリアに格納される
    データのサイズとデータエリアの途中でデータが終わっ
    ていることを示すフラグとが格納される冗長エリアとを
    有する記憶装置に対して、データをファイル単位で格納
    するデータ処理装置において、 複数のブロックに亘って格納されている1つのファイル
    を第1のファイルと第2のファイルに分割するとき、第
    2のファイルに属するデータが格納されているブロック
    のうち、ファイル分割位置に対応するブロック以外のブ
    ロックはそのまま保持し、ファイル分割位置に対応する
    ブロックに格納されているデータを新規なブロックのデ
    ータエリアに先頭から連続してデータを書き込み、当該
    データエリアの残りを空き領域とし、当該新規なブロッ
    クの冗長エリアに、当該データエリアに格納されたデー
    タのサイズと当該データエリアの途中でデータが終わっ
    ていることを示すフラグとを書き込み、 空白領域を有するブロックにアクセスするとき、該デー
    タエリアの途中でデータが終わっていることを示すフラ
    グがたっていると、データエリアに格納されたデータの
    サイズを調べて次のブロックへ進むようにすることを特
    徴とするデータ処理装置。
  4. 【請求項4】 データをファイル単位で記憶領域内に格
    納するとともに、記憶領域がデータの消去単位であると
    同時にファイル管理上の最小単位であるブロックに分割
    されてなるフラッシュメモリを備え、各ブロックが、任
    意のデータが格納されるデータエリアと、当該ブロック
    を管理するために用いられるデータエリアに格納される
    データのサイズとデータエリアの途中でデータが終わっ
    ていることを示すフラグとが格納される冗長エリアとを
    有する記憶装置に対して、データをファイル単位で格納
    するデータ処理装置において、 1つ以上のブロックにわたって格納されている第1のフ
    ァイルと1つ以上のブロックにわたって格納されている
    第2のファイルとを結合して1つのファイルにすると
    き、第1のファイル及び第2のファイルが格納されてい
    るブロックのうち、第1のファイルの末尾のデータが格
    納されているブロックと第2のファイルの先頭のデータ
    が格納されているブロックとを新規なブロックに書き換
    え、その他のブロックはそのまま保持し、 第1のファイルの末尾のデータが格納されているブロッ
    クと第2のファイルの先頭のデータが格納されているブ
    ロックとを書き換えるとき、新規なブロックの先頭から
    第1のファイルの末尾のデータと第2のファイルの先頭
    とを連続して格納し、残りを空白領域とし、当該新規な
    ブロックの冗長エリアに、当該データエリアに格納され
    たデータのサイズと当該データエリアの途中でデータが
    終わっていることを示すフラグとを書き込み、 空白領域を有するブロックにアクセスするとき、該デー
    タエリアの途中でデータが終わっていることを示すフラ
    グがたっていると、データエリアに格納されたデータの
    サイズを調べて次のブロックへ進むようにすることを特
    徴とするデータ処理装置。
  5. 【請求項5】 データをファイル単位で記憶領域内に格
    納するとともに、記憶領域がデータの消去単位であると
    同時にファイル管理上の最小単位であるブロックに分割
    されてなるフラッシュメモリを備え、各ブロックが、任
    意のデータが格納されるデータエリアと、当該ブロック
    を管理するために用いられるデータエリアに格納される
    データのサイズとデータエリアの途中でデータが終わっ
    ていることを示すフラグとが格納される冗長エリアとを
    有する記憶装置に格納された複数のブロックに亘って格
    納されている1つのファイルを第1のファイルと第2の
    ファイルに分割するとき、 第2のファイルに属するデータが格納されているブロッ
    クのうち、ファイル分割位置に対応するブロック以外の
    ブロックはそのまま保持し、ファイル分割位置に対応す
    るブロックに格納されているデータを新規なブロックの
    データエリアに先頭から連続してデータを書き込み、当
    該データエリアの残りを空き領域とし、当該新規なブロ
    ックの冗長エリアに、当該データエリアに格納されたデ
    ータのサイズと当該データエリアの途中でデータが終わ
    っていることを示すフラグとを書き込み、 空白領域を有するブロックにアクセスするとき、該デー
    タエリアの途中でデータが終わっていることを示すフラ
    グがたっていると、データエリアに格納されたデータの
    サイズを調べて次のブロックへ進むようにすることを特
    徴とするデータ処理方法。
  6. 【請求項6】 データをファイル単位で記憶領域内に格
    納するとともに、記憶領域がデータの消去単位であると
    同時にファイル管理上の最小単位であるブロックに分割
    されてなるフラッシュメモリを備え、各ブロックが、任
    意のデータが格納されるデータエリアと、当該ブロック
    を管理するために用いられるデータエリアに格納される
    データのサイズとデータエリアの途中でデータが終わっ
    ていることを示すフラグとが格納される冗長エリアとを
    有する記憶装置に格納された1つ以上のブロックにわた
    って格納されている第1のファイルと1つ以上のブロッ
    クにわたって格納されている第2のファイルとを結合し
    て1つのファイルにするとき、 第1のファイル及び第2のファイルが格納されているブ
    ロックのうち、第1のファイルの末尾のデータが格納さ
    れているブロックと第2のファイルの先頭のデータが格
    納されているブロックとを新規なブロックに書き換え、
    その他のブロックはそのまま保持し、 第1のファイルの末尾のデータが格納されているブロッ
    クと第2のファイルの先頭のデータが格納されているブ
    ロックとを書き換えるとき、新規なブロックの先頭から
    第1のファイルの末尾のデータと第2のファイルの先頭
    とを連続して格納し、残りを空白領域とし、当該新規な
    ブロックの冗長エリアに、当該データエリアに格納され
    たデータのサイズと当該データエリアの途中でデータが
    終わっていることを示すフラグとを書き込み、 空白領域を有するブロックにアクセスするとき、該デー
    タエリアの途中でデータが終わっていることを示すフラ
    グがたっていると、データエリアに格納されたデータの
    サイズを調べて次のブロックへ進むようにすることを特
    徴とするデータ処理方法。
JP26717997A 1997-09-30 1997-09-30 記憶装置、データ処理装置及びデータ処理方法 Expired - Fee Related JP3319361B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP26717997A JP3319361B2 (ja) 1997-09-30 1997-09-30 記憶装置、データ処理装置及びデータ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26717997A JP3319361B2 (ja) 1997-09-30 1997-09-30 記憶装置、データ処理装置及びデータ処理方法

Publications (2)

Publication Number Publication Date
JPH11110263A JPH11110263A (ja) 1999-04-23
JP3319361B2 true JP3319361B2 (ja) 2002-08-26

Family

ID=17441213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26717997A Expired - Fee Related JP3319361B2 (ja) 1997-09-30 1997-09-30 記憶装置、データ処理装置及びデータ処理方法

Country Status (1)

Country Link
JP (1) JP3319361B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5707695B2 (ja) * 2009-12-08 2015-04-30 沖電気工業株式会社 フラッシュディスク装置
JP2012063963A (ja) * 2010-09-16 2012-03-29 Sanyo Electric Co Ltd コンテンツ処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0617363B1 (en) * 1989-04-13 2000-01-26 SanDisk Corporation Defective cell substitution in EEprom array
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
JPH04317149A (ja) * 1991-04-17 1992-11-09 Meidensha Corp Eepromの管理方式
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JP3088866B2 (ja) * 1992-11-26 2000-09-18 大日本印刷株式会社 Icカード
JP3521165B2 (ja) * 1994-12-21 2004-04-19 ヤマハ株式会社 ファイル管理システム及び方法

Also Published As

Publication number Publication date
JPH11110263A (ja) 1999-04-23

Similar Documents

Publication Publication Date Title
JP2914360B2 (ja) 外部記憶装置及びデータ処理方法
US6625713B2 (en) Memory controller and method for managing a logical/physical address control table
KR100871027B1 (ko) 데이터 기록 장치 및 플래시 메모리에 대한 데이터 기입방법
US5611067A (en) Nonvolatile semiconductor memory device having means for selective transfer of memory block contents and for chaining together unused memory blocks
JP3912355B2 (ja) データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム
JP3233079B2 (ja) データ処理システム及びデータ処理方法
JP3119214B2 (ja) 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
KR20000006562A (ko) 데이타기억장치및데이타처리시스템및방법
JP3070539B2 (ja) 外部記憶装置、データ処理装置及びデータ処理方法
JPS62226351A (ja) Icカ−ド
JP3319361B2 (ja) 記憶装置、データ処理装置及びデータ処理方法
JP2910745B2 (ja) 記憶装置及びデータ処理方法
JP4534336B2 (ja) メモリ装置におけるデータ管理方法
JP3640154B2 (ja) 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム
JP3620478B2 (ja) 記憶装置、この記憶装置を用いたデータ処理システム及びデータ読み出し方法
JP4460850B2 (ja) Icカードとicカードの処理方法
JP2001043143A (ja) 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
JPH089795Y2 (ja) Icカード
JP3624647B2 (ja) 記憶装置、データ管理装置、データ管理システム、データ管理方法、ファイル管理装置、記録媒体及びファイル管理システム
JP2004152331A (ja) 記憶装置
JPH0827824B2 (ja) Icカ−ド
JP2520583B2 (ja) Icカ−ド
JP2008009636A (ja) 記憶装置
KR19990007069A (ko) 데이터 관리장치, 데이터 관리방법 및 기억매체

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020521

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080621

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090621

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees