JPH11110300A - 外部記憶装置、データ処理装置及びデータ処理方法 - Google Patents
外部記憶装置、データ処理装置及びデータ処理方法Info
- Publication number
- JPH11110300A JPH11110300A JP9267178A JP26717897A JPH11110300A JP H11110300 A JPH11110300 A JP H11110300A JP 9267178 A JP9267178 A JP 9267178A JP 26717897 A JP26717897 A JP 26717897A JP H11110300 A JPH11110300 A JP H11110300A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- stored
- blocks
- management information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
て、同じ論理アドレスを持つ複数のブロックが同時に存
在するような状態(論理アドレスエラー)や、連結アド
レスで指し示されたブロックが存在しないような状態
(連結アドレスエラー)になったとしても、それらのエ
ラーを検出し適切に修復できるようにする。 【解決手段】 記憶領域が複数のブロックに分割されて
なる外部記憶装置にデータを格納する際に、ブロックに
論理アドレスを割り当ててデータを格納するとともに、
データが格納されるブロックに当該データの新旧を示す
識別番号を格納する。そして、外部記憶装置からデータ
を読み出す際に、同じ論理アドレスを持つ複数のブロッ
クが存在する場合には、識別番号に基づいて、それらの
ブロックに格納されているデータの新旧を判別し、新し
い方のデータは無効なデータとし、古い方のデータを有
効なデータとする。
Description
ブロックに分割されてなる外部記憶装置に関する。ま
た、本発明は、記憶領域が複数のブロックに分割されて
なる外部記憶装置にデータを格納するデータ処理装置に
関する。また、本発明は、記憶領域が複数のブロックに
分割されてなる外部記憶装置にデータを格納する際のデ
ータ処理方法に関する。
ルカメラ等のようなデータ処理装置に用いられる外部記
憶装置として、フラッシュメモリを備えた外部記憶装置
がある。
は、記憶領域を複数のブロックに分割し、データ領域の
管理をブロック単位で行う。ここで、各ブロックはデー
タ消去の単位となる。すなわち、データを消去する際
は、当該データを含むブロック全体に対して初期化処理
を施す。これにより、当該ブロックに格納されているデ
ータが一括して消去される。
ロックに格納するときに、それらのブロックに対してユ
ニークな論理アドレスが設定される。そして、各ブロッ
クは、この論理アドレスを用いて管理される。
は、通常、ファイル単位で外部記憶装置に格納される
が、一つのファイルが複数のブロックにわたる場合に
は、それらのブロックの連結情報が必要となる。そこ
で、一つのファイルが複数のブロックにわたる場合に
は、当該ファイルを格納しているブロックのそれぞれ
に、次のブロックの論理アドレス(以下、連結アドレス
と称する。)が格納される。
記憶装置では、記憶領域内にエラーがあるか否かを検査
する処理や、エラーがあった場合に当該エラーの修復を
試みる処理を、外部記憶装置の起動時に毎回実行するよ
うにしていた。なお、以下の説明では、このような処理
のことを、エラー検出訂正処理と称する。通常、このよ
うなエラー検出訂正処理は、比較的に負荷が大きく処理
に時間を要する処理である。したがって、従来の外部記
憶装置は、エラー検出訂正処理のために、速やかに起動
することができないという問題があった。
行うような外部記憶装置では、ブロックにデータを新規
に書き込んでいるときや、ブロックに格納されているデ
ータを更新しているときなどに、いきなり電源が遮断さ
れたり、データ処理装置から外部記憶装置が強制的に取
り外されたりしたような場合に、同じ論理アドレスを持
つ複数のブロックが同時に存在するような状態(以下、
論理アドレスエラーと称する。)となったり、連結アド
レスで指し示されたブロックが存在しないような状態
(以下、連結アドレスエラーと称する。)となったりす
る可能性がある。当然の事ながら、このような状態にな
ると、ファイルが予期せぬブロックに連結されてしまっ
たりして、外部記憶装置を正常に使用することができな
くなってしまう。
理アドレスエラーや連結アドレスエラーを検出して適切
に修復するような機能を備えていなかった。そのため、
従来は、いきなり電源が遮断されたり、データ処理装置
から外部記憶装置が強制的に取り外されたりしたような
場合に、その後、外部記憶装置を正常に使用することが
できなくなってしまうことがあった。
て提案されたものであり、外部記憶装置に論理アドレス
エラーや連結アドレスエラーが生じても、それらのエラ
ーを検出し適切に修復できるようにすることを目的とし
ている。
記憶装置は、記憶領域が複数のブロックに分割されてな
り、各ブロックに対して論理アドレスが割り当てられる
外部記憶装置である。各ブロックには、データと共に当
該データの新旧を示す識別番号が格納される。そして、
同じ論理アドレスを持つ複数のブロックが存在する場合
には、識別番号に基づいて、それらのブロックに格納さ
れているデータの新旧が判別され、新しい方のデータは
無効なデータとされ、古い方のデータが有効なデータと
される。
は、記憶領域が複数のブロックに分割されてなり、各ブ
ロックに対して論理アドレスが割り当てられる。また、
ブロックに格納するデータをブロック毎に管理するため
の情報である分散管理情報が各ブロックにそれぞれ格納
され、全ブロックを管理するための情報である集合管理
情報が各ブロックの分散管理情報から生成され、ブロッ
ク全体が集合管理情報に基づいて管理される。この外部
記憶装置は、データがファイル単位で格納されるととも
に、一つのファイルが複数のブロックにわたる場合に
は、当該ファイルを格納しているブロックのそれぞれに
次のブロックの論理アドレスが連結アドレスとして格納
される。そして、集合管理情報が生成されるときに、連
結アドレスが指し示す論理アドレスを持つブロックが存
在するか否かが調べられる。
憶領域が複数のブロックに分割されてなる外部記憶装置
にデータを格納する際に、ブロックに論理アドレスを割
り当ててデータを格納するとともに、データが格納され
るブロックに当該データの新旧を示す識別番号を格納す
る。そして、外部記憶装置からデータを読み出す際に、
同じ論理アドレスを持つ複数のブロックが存在する場合
には、識別番号に基づいて、それらのブロックに格納さ
れているデータの新旧を判別し、新しい方のデータは無
効なデータとし、古い方のデータを有効なデータとす
る。
は、記憶領域が複数のブロックに分割されてなる外部記
憶装置に対して、各ブロックに論理アドレスを割り当て
てデータを格納するデータ処理装置である。そして、外
部記憶装置に格納するデータをブロック毎に管理するた
めの情報である分散管理情報を各ブロックにそれぞれ格
納するとともに、全ブロックを管理するための情報であ
る集合管理情報を各ブロックの分散管理情報から生成し
て当該集合管理情報に基づいてブロック全体を管理す
る。また、外部記憶装置にデータをファイル単位で格納
する際に、一つのファイルが複数のブロックにわたる場
合には、当該ファイルが格納されるブロックのそれぞれ
に次のブロックの論理アドレスを連結アドレスとして格
納する。そして、集合管理情報を生成するときに、連結
アドレスが指し示す論理アドレスを持つブロックが存在
するか否かを調べる。
記憶領域が複数のブロックに分割されてなる外部記憶装
置にデータを格納する際に、ブロックに論理アドレスを
割り当ててデータを格納するとともに、データが格納さ
れるブロックに当該データの新旧を示す識別番号を格納
する。そして、外部記憶装置からデータを読み出す際
に、同じ論理アドレスを持つ複数のブロックが存在する
場合には、識別番号に基づいて、それらのブロックに格
納されているデータの新旧を判別し、新しい方のデータ
は無効なデータとし、古い方のデータを有効なデータと
する。
では、記憶領域が複数のブロックに分割されてなる外部
記憶装置に対して、各ブロックに論理アドレスを割り当
ててデータを格納する際に、外部記憶装置に格納するデ
ータをブロック毎に管理するための情報である分散管理
情報を各ブロックにそれぞれ格納する。また、全ブロッ
クを管理するための情報である集合管理情報を各ブロッ
クの分散管理情報から生成して当該集合管理情報に基づ
いてブロック全体を管理する。また、外部記憶装置にデ
ータをファイル単位で格納する際に、一つのファイルが
複数のブロックにわたる場合には、当該ファイルが格納
されるブロックのそれぞれに次のブロックの論理アドレ
スを連結アドレスとして格納する。そして、上記集合管
理情報を生成するときに、連結アドレスが指し示す論理
アドレスを持つブロックが存在するか否かを調べる。
て、図面を参照しながら詳細に説明する。
構成を図1に示す。このシステムは、ホスト側システム
となるデータ処理装置1と、シリアルインターフェース
を介してデータ処理装置1に接続される外部記憶装置で
あるメモリカード2とから構成される。
リカード2との間でのデータのやり取りをシリアルイン
ターフェースによって行うシステムを例に挙げるが、本
発明は、データのやり取りをパラレルインターフェース
によって行うシステムに対しても適用可能である。
U)3と、内部メモリ4と、補助記憶装置5と、シリア
ルインターフェース回路6とを備え、これらがバス7に
よって相互に接続されてなる。このデータ処理装置1
は、例えば、補助記憶装置5に格納されているプログラ
ムを読み出して、当該プログラムを、内部メモリ4をワ
ークエリアとして使用して、CPU3により実行する。
このとき、必要に応じて、シリアルインターフェース回
路6を介してメモリカード2との間でデータのやり取り
を行う。
されるデータ処理装置1は、外部記憶装置との間でデー
タのやり取りが可能なものであるならば特に限定される
ものではなく、本発明は、パーソナルコンピュータ、デ
ジタルスチルカメラ、デジタルビデオカメラ等、種々の
データ処理装置に適用可能である。
シリアルインターフェースによって接続されており、具
体的には、少なくとも3本のデータ線SCLK,Sta
te,DIOによって接続される。すなわち、データ処
理装置1とメモリカード2とは、少なくとも、データ伝
送時にクロック信号を伝送する第1のデータ線SCLK
と、データ伝送時に必要なステータス信号を伝送する第
2のデータ線Stateと、メモリカード2に書き込む
データ又はメモリカード2から読み出すデータ等をシリ
アルに伝送する第3のデータ線DIOとによって接続さ
れ、これらを介して、データ処理装置1とメモリカード
2との間でのデータのやり取りを行う。
でのデータのやり取りは、通常、ヘッダーと実データと
から構成されるファイル単位で行われる。なお、ファイ
ルのヘッダーには、例えば、ファイルにアクセスするた
めの情報や、データ処理装置1で実行されるプログラム
で必要とされる情報等が格納される。
ロールICからなるコントローラ11と、コントローラ
11によって管理されるフラッシュメモリ12とを備え
ている。
変換やパラレル/シリアル変換等を行うシリアル/パラ
レル・パラレル/シリアル・インターフェース・シーケ
ンサ13(以下、S/P&P/S・インターフェース・
シーケンサ13と称する。)と、フラッシュメモリ12
へのインターフェースを司るフラッシュメモリ・インタ
ーフェース・シーケンサ14と、S/P&P/S・イン
ターフェース・シーケンサ13とフラッシュメモリ・イ
ンターフェース・シーケンサ14との間でやり取りされ
るデータを一時的に記憶するページバッファ15と、エ
ラー訂正の処理を行うエラー訂正回路16と、フラッシ
ュメモリ12へのアクセスを制御する制御コマンドの生
成等を行うコマンドジェネレータ17と、このメモリカ
ード2のバージョン情報や各種属性情報等が格納されて
いるコンフィグレーションROM18と、各回路に対し
てそれらの動作に必要なクロック信号を供給する発振器
19とを備えている。
ケンサ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へ送出する。
シーケンサ13とデータ処理装置1との間でのシリアル
データの伝送は、第1のデータ線SCLKによってデー
タ処理装置1から送られてくるクロック信号によって同
期を取りながら、第3のデータ線DIOによって行われ
る。このとき、第3のデータ線DIOによってやり取り
されるシリアルデータのデータ種別は、第2のデータ線
Stateによって伝送されるステータス信号によって
判別される。ここで、シリアルデータの種別には、例え
ば、フラッシュメモリ12に書き込むべきデータ、フラ
ッシュメモリ12から読み出されたデータ、又はこのメ
モリカード2の動作を制御するための制御データ等があ
る。なお、ステータス信号は、メモリカード2の状態を
示すためにも使用される。ステータス信号によって示さ
れるメモリカード2の状態には、例えば、メモリカード
2が何らかの処理の最中でデータ処理装置1からのデー
タ入力を受け付けない状態や、メモリカード2の側での
処理が終了してデータ処理装置1からのデータ入力を待
っている状態等がある。
・シーケンサ13は、データ処理装置1から送られてき
たデータがメモリカード2の動作を制御するための制御
データである場合には、当該制御データをコマンドジェ
ネレータ17に送出する。
装置1からS/P&P/S・インターフェース・シーケ
ンサ13を介して送られてきた制御データに基づいて、
フラッシュメモリ12へのアクセスを制御する制御コマ
ンドを生成し、当該制御コマンドをフラッシュメモリ・
インターフェース・シーケンサ14へ送出する。フラッ
シュメモリ・インターフェース・シーケンサ14は、後
述するように、この制御コマンドに基づいて、フラッシ
ュメモリ12にデータを書き込んだり、フラッシュメモ
リ12からデータを読み出したりする。
は、誤消去防止スイッチ20が接続されている。そし
て、この誤消去防止スイッチ20がオンになっていると
きには、フラッシュメモリ12に書かれているデータを
消去するように指示する制御データがデータ処理装置1
から送られてきたとしても、コマンドジェネレータ17
は、フラッシュメモリ12に書かれているデータを消去
するような制御コマンドを生成しない。すなわち、この
メモリカード2は、誤消去防止スイッチ20によって、
フラッシュメモリ12に保存されているデータの消去が
行えない状態と、フラッシュメモリ12に保存されてい
るデータの消去が行える状態とを切り換えることが可能
となっている。
ケンサ13とフラッシュメモリ・インターフェース・シ
ーケンサ14との間に配されたページバッファ15は、
いわゆるバッファメモリであり、S/P&P/S・イン
ターフェース・シーケンサ13とフラッシュメモリ・イ
ンターフェース・シーケンサ14との間でやり取りされ
るデータを一時的に記憶する。
ース・シーケンサ13からフラッシュメモリ・インター
フェース・シーケンサ14へ送られるデータは、先ず、
S/P&P/S・インターフェース・シーケンサ13か
らページバッファ15に送られて、このページバッファ
15によって一時的に記憶される。このとき、ページバ
ッファ15に記憶されたデータは、エラー訂正回路16
によってエラー訂正符号が付けられる。そして、エラー
訂正符号が付けられたデータは、ページバッファ15か
ら所定のページ単位毎(例えば1ページ=512バイト
とされる。)に、フラッシュメモリ・インターフェース
・シーケンサ14へと送られる。
ース・シーケンサ14からS/P&P/S・インターフ
ェース・シーケンサ13へ送られるデータは、先ず、フ
ラッシュメモリ・インターフェース・シーケンサ14か
らページバッファ15に送られて、このページバッファ
15によって一時的に記憶される。このとき、ページバ
ッファ15に記憶されたデータは、エラー訂正回路16
によってエラー訂正処理が施される。そして、エラー訂
正処理が施されたデータは、ページバッファ15から所
定のページ単位毎に、S/P&P/S・インターフェー
ス・シーケンサ13へと送られる。
ーケンサ14は、コマンドジェネレータ17からの制御
コマンドに基づいて、フラッシュメモリ12へのデータ
の書き込みや、フラッシュメモリ12からのデータの読
み出し等を行う。すなわち、フラッシュメモリ・インタ
ーフェース・シーケンサ14は、コマンドジェネレータ
17からの制御コマンドに基づいて、フラッシュメモリ
12からデータを読み出して、当該データを上述のよう
にページバッファ15を介して、S/P&P/S・イン
ターフェース・シーケンサ13へと送出する。或いは、
フラッシュメモリ・インターフェース・シーケンサ14
は、コマンドジェネレータ17からの制御コマンドに基
づいて、S/P&P/S・インターフェース・シーケン
サ13からのデータを、上述のようにページバッファ1
5を介して受け取り、当該データをフラッシュメモリ1
2に書き込む。
のメモリカード2のバージョン情報や各種属性情報等が
格納されている。コンフィグレーションROM18に格
納された情報は、必要に応じて、S/P&P/S・イン
ターフェース・シーケンサ13を介してコマンドジェネ
レータ17によって読み出されて使用される。すなわ
ち、コマンドジェネレータ17は、必要に応じて、コン
フィグレーションROM18に格納されている情報を読
み出し、この情報に基づいてメモリカード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に書き込まれる。
ータを読み出す際は、先ず、コマンドジェネレータ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へと送出される。
際は、フラッシュメモリ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にアク
セスして、データの書き込みやデータの読み出しを行
う。
データ線SCLK,State,DIOを備えるだけで
なく、その他に、電圧供給用の配線や、通常は使用しな
いリザーブの配線等を備えていてもよい。例えば、図2
並びに後掲する図3では、上述した3本のデータ線SC
LK,State,DIOの他に、4本の電源用の配線
VSS1,VSS2,VCC,INTと、3本のリザー
ブの配線RSV1,RSV2,RSV3とをメモリカー
ド2に設けた例を挙げている。
ついて、図3を参照して説明する。
面形状が長方形とされる薄肉のカード状のケース21
に、上述したコントローラ11やフラッシュメモリ12
等が内蔵されてなる。そして、このメモリカード2は、
当該メモリカード2を装着する装着機構を備えたデータ
処理装置1に装着されて使用される。
には、斜めに切り欠かれた切り欠き部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である。
上面には、誤消去防止部材25が取り付けられている。
誤消去防止部材25は、ケース21の内部に収納された
上記誤消去防止スイッチ20に係合されており、この誤
消去防止部材25をスライド操作することにより、誤消
去防止スイッチ20のオン/オフの切り換えを行えるよ
うになっている。
1の装着装置に装着された際にメモリカード2がデータ
処理装置1から脱落しないようにするため、ケース20
の側面の一方に円弧状の第1のロック用切欠部26が形
成され、ケース20の側面の他方に矩形状の第2のロッ
ク用切欠部27が形成されている。そして、このメモリ
カード2がデータ処理装置1の装着装置に装着される
と、メモリカード2が脱落しないように、これらのロッ
ク用切欠部26,27が、データ処理装置1の装着装置
に係合される。
発明が適用される外部記憶装置の一例に過ぎない。すな
わち、本発明は、外部記憶装置の外形に依存することな
く、どんな外形の外部記憶装置にも適用可能である。
ッシュメモリ12の記憶領域の構造について説明する。
図4(a)に示すように、データ消去の単位となる複数
のブロックに分割されてなる。なお、これらのブロック
には、このメモリカード2が起動されたときにデータ処
理装置1によって最初に読み込まれるデータであるブー
トデータが格納されるブートブロックと、任意のデータ
が書き込まれるデータブロックとがある。各ブロックに
は、それぞれ固有の物理アドレスが付けられている。こ
れらのブロックは、データ消去の単位であると同時に、
ファイル管理上の最小単位でもある。すなわち、ファイ
ルは1つ又は複数のブロックに格納され、1つのブロッ
クを複数のファイルで利用することはできない。
を示す2つの状態を取りうる複数のビットからなり、初
期状態では、全てのビットが「1」とされており、ビッ
ト単位での変更は「1」から「0」へだけが可能となっ
ている。すなわち、「1」及び「0」からなるデータを
書き込む際、「1」については該当するビットをそのま
ま保持し、「0」については該当するビットを「1」か
ら「0」に変更する。
際は、ブロック単位で一括して初期化処理を行い、当該
ブロックの全ビットを「1」とする。これにより、当該
ブロックに書き込まれたデータが一括して消去され、そ
のブロックは再びデータの書き込みが可能な状態とな
る。
は、ブロック単位で一括して初期化処理を行い、当該ブ
ロックの全ビットを「1」にする必要があるが、「1」
から「0」への変更は、ブロック単位で一括して初期化
処理を行わなくて可能である。以下の説明では、ブロッ
ク単位で一括して初期化処理を行うことなく「1」から
「0」へ変更することを、オーバーライトと称する。
2つの状態だけを取りうるフラッシュメモリ(いわゆる
2値型のフラッシュメモリ)だけでなく、各ビットが3
つ以上の状態を取りうるフラッシュメモリ(いわゆる多
値型のフラッシュメモリ)にも適用可能である。
は、図4(b)に示すように、データの書き込みや読み
出しの単位となる複数のページから構成される。すなわ
ち、このフラッシュメモリ12にデータを書き込む際
は、上述したように、ページ単位にてページバッファ1
5から送られてきたデータが、フラッシュメモリ・イン
ターフェース・シーケンサ14によってページ単位にて
フラッシュメモリ12に書き込まれる。また、このフラ
ッシュメモリ12からデータを読み出す際は、フラッシ
ュメモリ・インターフェース・シーケンサ14によって
ページ単位毎にデータが読み出されて、ページバッファ
15へと送られる。
とを有している。データエリアは、任意のデータが書き
込まれる領域である。冗長エリアは、データエリアに書
き込まれるデータの管理に必要な情報が格納される領域
である。
ロックの先頭ページの冗長エリアには、当該ブロックを
管理するために必要な情報として、いわゆる分散管理情
報が格納される。また、ブロックの2ページ目以降の各
ページの冗長エリアにも、予備の分散管理情報として、
先頭ページの冗長エリアに格納された分散管理情報と同
じものが格納される。ただし、最終ページの冗長エリア
には、分散管理情報ではなく、分散管理情報だけでは管
理しきれない追加情報として、いわゆる追加管理情報が
格納される。
は、各ブロック内の冗長エリアに分散管理情報が格納さ
れる。分散管理情報は、当該分散管理情報が格納された
ブロックを管理するための情報である。この分散管理情
報により、例えば、当該ブロックがファイルの先頭とな
るブロックであるか否かについての情報や、複数のブロ
ックからファイルが構成される場合にはそれらのブロッ
クの繋がりを示す情報等を得ることができる。なお、こ
の分散管理情報については、後で詳細に説明する。
ックの分散管理情報を集めることにより、フラッシュメ
モリ全体を管理するための情報として、いわゆる集合管
理情報を作成して、この集合管理情報をファイルとして
フラッシュメモリ12に格納しておくようにする。
各ブロックにアクセスするために必要な情報を得るよう
にする。すなわち、データ処理装置1とメモリカード2
との間でデータのやり取りを行う際、データ処理装置1
は、集合管理情報をメモリカード2から読み出して内部
メモリ4に管理テーブルを作成し、この管理テーブルに
基づいてメモリカード2にアクセスする。これにより、
データアクセスの都度、個々のブロックに格納された分
散管理情報にアクセスするような必要がなくなり、より
高速なデータアクセスが可能となる。
されたブロックを管理するための情報であり、16バイ
トの冗長エリアに書き込まれてなる。具体的には、図5
に示すように、1バイトの可/不可フラグと、1バイト
のブロックフラグと、4ビットの最終フラグと、4ビッ
トの参照フラグと、1バイトの管理フラグと、2バイト
の論理アドレスと、2バイトの連結アドレスと、3バイ
トのリザーブ領域と、2バイトの分散管理情報用エラー
訂正符号と、3バイトのデータ用エラー訂正符号とから
なる。
態か使用不可能状態かを示すフラグであり、具体的に
は、「使用可」と「使用不可」の2つの状態を示す。
「使用可」は、当該ブロックが使用可能な状態を示し、
「使用不可」は、当該ブロックが使用不可能な状態であ
ることを示す。例えば、ブロック内に回復不能なエラー
が生じたようなときに、この可/不可フラグが「使用不
可」に設定され、当該ブロックが使用不可とされる。
フラグであり、具体的には、「未使用」「先頭使用」
「使用」「未消去」の4つの状態を示す。「未使用」
は、当該ブロックが未使用又は消去済みで、初期状態
(全ビットが「1」の状態)とされており、直ぐにデー
タの書き込みが可能な状態を示す。「先頭使用」は、当
該ブロックがファイルの先頭で使用されている状態を示
す。なお、ブートデータが格納されたブートブロックに
おいて、ブロックフラグは「先頭使用」とされる。「使
用」は、当該ブロックがファイルの先頭以外で使用され
ている状態を示す。ブロックフラグが「使用」のとき、
当該ブロックは、他のブロックから連結されていること
となる。「未消去」は、当該ブロックに書かれていたデ
ータが無効となった状態を示す。例えば、データの消去
を行うときに、取りあえずブロックフラグを「未消去」
にしておき、処理時間に余裕があるときに、ブロックフ
ラグが「未消去」になっているブロックを消去するよう
にする。これにより、消去処理をより効率良く行うこと
が可能となる。
否かを示すフラグであり、具体的には、「ブロック連
続」「ブロック最終」の2つの状態を示す。「ブロック
連続」は、次のブロックへの連結があることを示す。す
なわち、「ブロック連続」は、当該ブロックに格納され
たファイルにはまだ続きがあり、当該ファイルが他のブ
ロックに続いていることを示す。「ブロック最終」は、
最終ブロックであることを示す。すなわち、「ブロック
最終」は、当該ブロックに格納されたファイルが、この
ブロックで終了していることを示す。
するためのフラグであり、具体的には、「参照情報な
し」「参照情報あり」の2つの状態を示す。「参照情報
なし」は、ブロックの最終ページの冗長領域に、有効な
追加管理情報が存在しないことを示す。「参照情報あ
り」は、ブロックの最終ページの冗長領域に、有効な追
加管理情報が存在していることを示す。
ラグである。例えば、この管理フラグによって、当該ブ
ロックが読み出し専用ブロックか、或いは書き込みも可
能なブロックであるかが示される。また、例えば、この
管理フラグによって、当該ブロックがブートブロックで
あるか、或いはデータブロックであるかが示される。
論理アドレスを示す。この論理アドレスの値は、データ
の書き換えを行うときなどに必要に応じて更新される。
なお、論理アドレスの値は、正常に処理が行われている
限り、同じ論理アドレスの値を同時に複数のブロックが
持つことがないように設定される。
ブロック内でデータを書き換えるには、上述したよう
に、先ずブロック消去を行う必要がある。しかしなが
ら、保証されている消去可能回数には上限があり、ブロ
ック消去の回数は出来るだけ少なくすることが要求され
る。そこで、ブロックのデータを更新する際は、同一の
ブロックを使って新たなデータに書き換えるのではな
く、他のブロックに新たなデータを書き込むようにす
る。このとき、先にデータが格納されていたブロック
は、当該ブロックに格納されていたデータが無効になっ
たことを示すように、ブロックフラグを「未消去」にす
る。そして、このメモリカード2では、このようにデー
タを更新した場合でも、当該データが格納されているブ
ロックを示すアドレスが同じとなるように、各ブロック
に対して予め設定されている物理アドレスとは別に、動
的に変更が可能な論理アドレスを各ブロックに割り当て
て、この論理アドレスでデータが格納されているブロッ
クを表すようにする。
ブロックの論理アドレスを示す。すなわち、ブロックに
格納されたファイルにはまだ続きがあり、当該ファイル
が他のブロックに続いている場合、連結アドレスには、
そのファイルの続きが格納された次のブロックの論理ア
ドレスの値が設定される。
理情報のうち、管理フラグ、論理アドレス、連結アドレ
ス及びリザーブ領域に書き込まれデータを対象としたエ
ラー訂正符号である。なお、可/不可フラグ、ブロック
フラグ、最終フラグ及び参照フラグは、分散管理情報用
エラー訂正符号によるエラー訂正の対象となっていな
い。したがって、可/不可フラグ、ブロックフラグ、最
終フラグ及び参照フラグは、分散管理情報用エラー訂正
符号を更新することなく書き換えることが可能となって
いる。
エラー訂正符号が格納されているページのデータエリア
に書き込まれたデータを対象としたエラー訂正符号であ
る。
ータ用エラー訂正符号は、メモリカード2の内部に配さ
れたエラー訂正回路16によって使用される。したがっ
て、これらのエラー訂正符号を用いてのエラー訂正は、
データ処理装置1に依存することなく、メモリカード2
に依存した任意の手法を使用することができる。
16バイトの冗長エリアに格納される情報であり、分散
管理情報だけでは管理しきれない追加情報を含んでい
る。
ように、1バイトの可/不可フラグと、1バイトのブロ
ックフラグと、4ビットの最終フラグと、4ビットの参
照フラグと、1バイトの識別番号と、2バイトの有効デ
ータサイズと、5バイトのリザーブ領域と、2バイトの
追加管理情報用エラー訂正符号と、3バイトのデータ用
エラー訂正符号とからなる。
グ、最終フラグ、参照フラグ、リザーブ領域及びデータ
用エラー訂正符号については、分散管理情報の場合と同
様である。また、追加管理情報用エラー訂正符号は、分
散管理情報における分散管理情報用エラー訂正符号に相
当するものであり、追加管理情報のうち、識別番号、有
効データサイズ及びリザーブ領域に書き込まれデータを
対象としたエラー訂正符号である。
が、分散管理情報だけでは管理しきれない追加情報とし
て、追加管理情報に含まれている。
ブロックのデータを書き換える度に、この識別番号の値
がインクリメントされる。この識別番号は、何らかのエ
ラーが発生して、同じ論理アドレスを持つブロックが複
数存在するようになってしまった場合に、それらのブロ
ックに書き込まれたデータの新旧を識別するために使用
される。なお、識別番号には1バイトの領域が使用さ
れ、その値の範囲は「0」から「255」までであり、
その初期値は「0」とされる。なお、識別番号が「25
5」を越えたときには「0」に戻される。そして、同じ
論理アドレスを持つデータブロックが複数存在する場合
には、この識別番号の値が小さい方のデータブロックを
有効とする。ただし、ブートブロックについては、ブー
トブロックの予備がある場合、正常時にはそれらのブー
トブロックの識別番号は同じ値とされる。何らかの異常
により、それらのブートブロックの識別番号が異なるよ
うな状態となった場合には、識別番号の値が大きい方の
ブートブロックを有効とする。
有効なデータのサイズを示す。すなわち、当該ブロック
のデータエリアに空きがある場合、有効データサイズに
は、当該データエリアに書き込まれたデータのサイズを
示す値が設定される。このとき、分散管理情報の参照フ
ラグは「参照情報あり」に設定される。なお、ブロック
のデータエリアに空きがない場合、有効データサイズに
は、当該データエリアに空きがないことを示す値とし
て、「0xffff」が設定される。
管理情報は、ブロック内のデータが更新される毎に、常
に最新情報となるように更新される。
ックの分散管理情報を集めて作成されてなる情報であ
り、ファイルとしてフラッシュメモリ12に格納され
る。すなわち、図7に示すように、各ブロックの分散管
理情報から、全ブロックをまとめて管理するための情報
である集合管理情報のファイルが作成され、この集合管
理情報が所定のブロックのデータエリアに格納される。
なお、集合管理情報は、1つのブロックに格納されるも
のであっても、複数のブロックにわたって格納されるも
のであってもよい。そして、データ処理装置1は、通常
は、この集合管理情報によって、各ブロックにアクセス
するために必要な情報を得るようにする。
理情報がファイルとして格納されている場合、データ処
理装置1は、その集合管理情報のファイルを読み出して
内部メモリ4に展開し、メモリカード2を管理するため
の管理テーブルを作成する。なお、集合管理情報のファ
イルの先頭が格納されているブロックの物理アドレス
は、ブートデータに含まれており、データ処理装置1
は、この物理アドレスに基づいて集合管理情報のファイ
ルにアクセスする。
この集合管理情報のヘッダーと、各ブロックの状態を示
すビットマップテーブルと、ブロックにアクセスすると
きに、指定された論理アドレスから物理アドレスへの変
換を行うための変換テーブルと、あるブロックの次のブ
ロックを示す連結テーブルとを有する。
分散管理情報から抽出された、可/不可フラグ、ブロッ
クフラグ、最終フラグ、参照フラグ及び管理フラグ等の
情報が格納される。
アドレスに対応する物理アドレスが記述されたテーブル
であり、物理アドレスが格納される領域は、1エントリ
あたり2バイトとされる。この変換テーブルを分散管理
情報から作成するときは、対象となるブロックの分散管
理情報に書かれている論理アドレスを調べ、テーブルの
対応位置にそのブロックの物理アドレスを登録する。な
お、論理アドレスを使用していない場合、対応する物理
アドレスには「0xffff」を設定しておく。
理アドレスに対応する連結アドレスが記述されたテーブ
ルであり、連結アドレスが格納される領域は、1エント
リあたり2バイトとされる。この連結テーブルを分散管
理情報から作成するときは、対象となるブロックの分散
管理情報に書かれている連結アドレスを調べ、テーブル
の対応位置にそのブロックの連結アドレスを登録する。
1のフローチャートを参照して説明する。
1に示すように、先ず、ステップS1において、データ
処理装置1は、メモリカード2のブートブロックからブ
ートデータを読み込む。次に、ステップS2へ進む。
は、ブートブロックからのブートデータの読み込みが正
常に行われたかを確認する。正常に読み込まれたなら
ば、ステップS3へ進み、正常に読み込まれなかったな
らば、ステップS8へ進む。
は、読み込んだブートデータに基づいて、メモリカード
2が当該データ処理装置1に対応しているか否かを判別
する。対応したメモリカードであるならば、ステップS
4へ進み、対応していないメモリカードならば、ステッ
プS8へ進む。
は、メモリカード2から集合管理情報を読み込む。な
お、集合管理情報が格納されているブロックの物理アド
レスは、ブートデータの中で指定されている。次に、ス
テップS5へ進む。
は、有効な集合管理情報の読み込みが正常に行われたか
を確認する。正常に読み込めたならば、ステップS6へ
進み、正常に読み込めなかったならば、ステップS7へ
進む。
は、読み込んだ集合管理情報を内部メモリ4に展開し、
メモリカード2を管理するための管理テーブルを作成す
る。以上の処理で、メモリカード2の起動時の初期処理
が完了し、メモリカード2の使用が可能となる。
が正常に読み込めなかったと判断された場合は、上述し
たようにステップS7へ進む。ステップS7において、
データ処理装置1は、各ブロックの分散管理情報を読み
出して、集合管理情報を再構築する。そして、その集合
管理情報を内部メモリ4に展開し、メモリカード2を管
理するための管理テーブルを作成する。以上の処理で、
メモリカード2の起動時の初期処理が完了し、メモリカ
ード2の使用が可能となる。
み時にエラーが生じたと判断された場合、及び、ステッ
プS3でメモリカード2がデータ処理装置1に対応して
いないと判断された場合は、上述したようにステップS
8へ進む。
を使用できないときである。そこで、ステップS8にお
いて、データ処理装置1は、例えば、利用不可のメッセ
ージを表示するなどの所定のエラー処理を行い、メモリ
カード2の起動処理を終了する。
り扱い データ処理装置1は、メモリカード2へデータを書き込
む処理や、メモリカード2からデータを消去する処理
(以下、これらの処理をまとめて「データ更新処理」と
称する。)を行う毎に、内部メモリ4に保持している管
理テーブルを、メモリカード2の実際の状態と整合する
ように(すなわち、分散管理情報の内容と整合するよう
に)、随時更新していく。一方、メモリカード2にファ
イルとして格納されている集合管理情報は、データ更新
処理毎に更新されるのではなく、適当なタイミングに
て、その変更内容が一括して更新される。
能回数には上限があるが、集合管理情報の書き換えをあ
る程度まとめて一括して行うようにすることで、集合管
理情報が格納されているブロックの書き換え回数を削減
することができ、メモリカード2の長寿命化を図ること
ができる。
リカード2に格納されている集合管理情報のファイルを
無効にしてから行う。これは、分散管理情報と集合管理
情報の一貫性を損なわないためである。データ更新処理
時には、処理の対象となるブロックの分散管理情報は同
時に更新されるが、集合管理情報の内容は同時には更新
されないので、分散管理情報と集合管理情報とが一致し
ない状態となる。そこで、このような状態のときには、
メモリカード2に格納されている集合管理情報のファイ
ルを無効にしておく。
2に示すように、先ず、ステップS11において、デー
タ処理装置1は、メモリカード2に格納されている集合
管理情報が有効であるか無効であるかを判別する。そし
て、集合管理情報が既に無効となっていたならば、その
ままデータ更新処理に移行する。一方、集合管理情報が
有効であれば、ステップS12へ進む。
1は、集合管理情報を無効にする。具体的には、集合管
理情報のファイルが格納されているブロックのブロック
フラグを「未消去」にするか、或いは当該ブロックに対
して消去処理を施してデータを消去する。そして、この
ように集合管理情報を無効にした上で、データ更新処理
に移行する。
合管理情報のファイルは、分散管理情報と集合管理情報
の一貫性を損なわないために、データ更新処理時に無効
とされるが、データ処理装置1の内部メモリ4に保持さ
れている管理テーブルの内容は、常に最新の状態となる
ように随時更新される。そして、データ処理装置1は、
通常は、この管理テーブルに基づいて各ブロックを管理
する。
合管理情報は、適当なタイミングで、改めてメモリカー
ド2に書き込まれて、再び有効とされる。なお、ここで
の適当なタイミングとは、例えば、メモリカード2の使
用を終了して電源を落とすときや、メモリカード2への
アクセスが所定時間以上なされなかったときや、データ
の書き換えが所定回数以上行われたときなどである。
用を終了して電源を落とす前に、図13に示すような終
了処理を行い、集合管理情報を有効なものとする。
において、データ処理装置1は、メモリカード2に格納
されている集合管理情報が有効であるか無効であるかを
判別する。そして、集合管理情報が有効であれば、その
まま処理を終了する。一方、集合管理情報が無効であれ
ば、ステップS22へ進む。
1は、集合管理情報のファイルが格納されているブロッ
クに対して、消去処理が施されているか否かを判別す
る。消去処理が施されていなければ、ステップS23へ
進み、消去処理が施されていれば、ステップS24へ進
む。
1は、集合管理情報のファイルが格納されているブロッ
クに対して消去処理を施す。その後、ステップS24へ
進む。
1は、メモリカード2に集合管理情報を書き込む。この
とき、データ処理装置1は、内部メモリ4に保持してい
る管理テーブルの内容に基づいて新しい集合管理情報の
ファイルを作成し、その新しい集合管理情報のファイル
をメモリカード2に書き込む。これにより、メモリカー
ド2の最新の状態を示す有効な集合管理情報が、メモリ
カード2に格納されたこととなる。
に有効な集合管理情報が格納された状態となる。
の処理手順について説明する。メモリカード2にファイ
ルを書き込む際の処理手順は、ファイルサイズが予め分
かっている場合と、分かっていない場合とで異なる。
いる場合 予めファイルのサイズが分かっている場合は、当該ファ
イルのデータを新規なブロックに書き込む毎に、データ
が当該ブロックに納まるかどうかを判断する。そして、
データがブロック内に納まりきらない場合には、次に続
くブロックの論理アドレスを確保しておき、データをデ
ータエリアに書き込むとともに、次に続くブロックの論
理アドレスを連結アドレスとして分散管理情報を書き込
む。このとき、最終フラグは「ブロック連続」に設定し
ておく。一方、データがブロック内に納まる場合には、
データの端数部分、すなわちデータエリアの空き領域は
「0xffff」としておく。このとき、最終フラグは「ブロ
ック最終」に設定しておき、追加管理情報に有効データ
サイズを書き込んでおく。
ているファイルをメモリカード2に書き込む際の手順に
ついて、図14に示すフローチャートを参照して、詳細
に説明する。なお、図14に示すフローチャート、並び
に後掲する図15及び図17に示すフローチャートで
は、メモリカード2の誤消去防止スイッチ20のチェッ
クや、何らかのエラーが発生したときの処理等について
は省略している。
リカード2に書き込む際は、先ず、ステップS31にお
いて、データ処理装置1は、メモリカード2に書き込む
実データと、当該実データのヘッダーとを準備する。換
言すれば、ステップS31において、データ処理装置1
は、メモリカード2のデータエリアに書き込むファイル
を準備する。なお、当該ファイルのヘッダーには、ファ
イルのサイズの情報が含まれる。次に、ステップS32
へ進む。
1は、最初にファイルが格納されるブロックのブロック
フラグを「先頭使用」に設定するとともに、空いている
論理アドレスを確保する。次に、ステップS33へ進
む。
1は、空いている物理アドレスを検索する。次に、ステ
ップS34へ進む。
1は、処理の対象となっているブロックにファイルが納
まりきるか否かを判別する。ファイルがブロック内に納
まりきらず、ファイルに続きがある場合には、ステップ
35へ進み、一方、ファイルがブロック内に納まり、フ
ァイルに続きがない場合には、ステップ36へ進む。
1は、次に続くブロックの論理アドレスを確保して、こ
の論理アドレスを連結アドレスとして設定する。次に、
ステップS37へ進む。
理装置1は、最終フラグを「ブロック最終」に設定する
とともに、連結アドレスを「0xffff」に設定する。次
に、ステップS37へ進む。
1は、これまでのステップで設定された情報等に基づい
て、処理の対象となっているブロックについての分散管
理情報を作成する。次に、ステップS38へ進む。
1は、処理の対象となっているブロックに、ページ単位
でデータを順次書き込む。ここで、処理の対象となって
いるブロックにファイルが納まりきらない場合には、1
ブロック分のデータがページ単位で書き込まれる。ま
た、処理の対象となっているブロックにファイルが納ま
りきる場合には、必要なページ分だけページ単位でデー
タが書き込まれる。なお、このステップS38で、ブロ
ックに書き込まれるのは、新規に書き込むファイルのデ
ータと、ステップS37で作成された分散管理情報とで
ある。次に、ステップS39へ進む。
1は、ファイルの全データについて、メモリカード2へ
の書き込みが終了したか否かを判別する。書き込みが終
了しておらず、まだデータが残っていれば、ステップS
33へ戻って処理を繰り返す。一方、書き込みが終了し
ていれば、ステップ40へ進む。
1は、書き込んだデータが、ブロックの途中で終わって
いるか否かを判別する。そして、データがブロックの途
中で終わっていれば、ステップS41へ進む。一方、ブ
ロックの最後までデータが格納されていれば、これで処
理を終了する。
1は、最終ページの冗長エリアに格納される追加管理情
報に有効データサイズを書き込む。すなわち、データ処
理装置1は、ファイルの最後の部分が格納されたブロッ
クのデータエリアに書き込まれたデータのサイズを示す
値を、当該ブロックの追加管理情報に有効データサイズ
として書き込む。
ルのメモリカード2への書き込みの処理が完了する。
い場合 ファイルのサイズが予め分からない場合には、次に続く
ブロックの論理アドレスを常に確保しておき、データが
終了した時点で、最終ブロックの最終フラグをオーバー
ライトにより設定する。なお、その他の分散管理情報及
び追加管理情報に関しては、予めファイルサイズが分か
っているときと同様に設定される。
モリカード2に書き込む際の手順について、図15に示
すフローチャートを参照して、詳細に説明する。
モリカード2に書き込む際は、先ず、ステップS51に
おいて、データ処理装置1は、メモリカード2に書き込
むファイルの仮のヘッダーを作成する。この段階では、
ファイルサイズが不明なので、この仮のヘッダーには、
ファイルサイズの情報が含まれていない。次に、ステッ
プS52へ進む。
1は、最初にファイルが格納されるブロックのブロック
フラグを「先頭使用」に設定するとともに、空いている
論理アドレスを確保する。次に、ステップS53へ進
む。
1は、メモリカード2に書き込むデータを準備する。次
に、ステップS54へ進む。
1は、メモリカード2に書き込むデータが残っているか
否かを判別する。データが終了しておらず、まだデータ
が残っていれば、ステップS55へ進む。一方、データ
が終了しており、データが残っていなければ、ステップ
S61へ進む。
1は、空いている物理アドレスを検索する。次に、ステ
ップS56へ進む。
1は、次に続くブロックの論理アドレスを確保して、こ
の論理アドレスを連結アドレスとして設定する。次に、
ステップS57へ進む。
1は、これまでのステップで設定された情報等に基づい
て、処理の対象となっているブロックについての分散管
理情報を作成する。次に、ステップS58へ進む。
1は、処理の対象となっているブロックに、ページ単位
でデータを順次書き込む。ここで、処理の対象となって
いるブロックにファイルが納まりきらない場合には、1
ブロック分のデータがページ単位で書き込まれる。ま
た、処理の対象となっているブロックにファイルが納ま
りきる場合には、必要なページ分だけページ単位でデー
タが書き込まれる。なお、このステップS58でブロッ
クに書き込まれるのは、新規に書き込むファイルのデー
タと、ステップS57で作成された分散管理情報とであ
る。次に、ステップS59へ進む。
1は、書き込んだデータが、ブロックのデータエリアの
途中で終わっているか否かを判別する。そして、データ
エリアの最後に至るまでデータが格納されていれば、ス
テップS53へ戻って処理を繰り返す。一方、データが
データエリアの途中で終わっていれば、ステップS60
へ進む。
1は、処理の対象となっているブロックの最終ページの
冗長エリアに格納される追加管理情報に、有効データサ
イズを書き込む。すなわち、データ処理装置1は、ファ
イルの最後の部分が格納されたブロックのデータエリア
に書き込まれたデータのサイズを示す値を、当該ブロッ
クの追加管理情報に有効データサイズとして書き込む。
次に、ステップS61へ進む。
1は、処理の対象となっているブロックの最終フラグを
「ブロック最終」にオーバーライトにより設定する。次
に、ステップS62へ進む。
1は、ファイルのヘッダーを更新する。すなわち、この
段階では、ファイルサイズが明らかとなっているので、
ファイルサイズの情報を含むヘッダーを新たに作成し
て、上述した仮のヘッダーを、ファイルサイズの情報を
含む新たなヘッダーに書き換える。
ファイルのメモリカード2への書き込みの処理が完了す
る。
新する際の処理手順について説明する。
の対象となるブロックと同じ論理アドレスを別のブロッ
クに付して、当該ブロックに対して新しいデータを書き
込む。このとき、古いデータが書かれているブロック
は、ファイルの更新が終了するまで開放せずに保持して
おく。これにより、ファイル更新中に障害が発生したと
しても、ファイル更新前の状態に復旧することが可能と
なる。
例を図16を参照して説明する。
頭が、論理アドレス「1」のブロックに格納され、ファ
イルの次の部分が、論理アドレス「2」のブロックに格
納され、ファイルの次の部分が、論理アドレス「3」の
ブロックに格納されていたとする。また、論理アドレス
「1」のブロックの識別番号は「6」、論理アドレス
「2」のブロックの識別番号は「4」、論理アドレス
「3」のブロックの識別番号は「1」であったとする。
ドレス「2」のブロックのデータを書き換えるとする。
このときは、先ず、図16(b)に示すように、空いて
いる別にブロックに論理アドレス「2」を割り当て、こ
のブロックに新しいデータを書き込む。ここで、新しい
データを書き込むブロックの識別番号には、古いデータ
が書き込まれているブロックの識別番号を1インクリメ
ントした値、すなわち「5」を設定する。
ロックが2つ存在していることとなる。そして、これら
の2つのブロックのうち、識別番号が大きい方のブロッ
クに格納されているデータが新しい方のデータであり、
識別番号が小さい方のブロックに格納されているデータ
が古い方のデータとなる。
完了したら、次に、図16(c)に示すように、古いデ
ータが書き込まれていたブロックを消去する。なお、こ
のときは、古いデータが書き込まれていたブロックに対
して消去処理を施すのではなく、該当するブロックのブ
ロックフラグを「未消去」にするだけにしておき、後か
ら適当なタイミングで、このブロックに対して消去処理
を施すようにしてもよい。
に示すフローチャートを参照して、詳細に説明する。
S71において、データ処理装置1は、更新の対象とな
るブロックを選択する。次に、ステップS72へ進む。
1は、更新の対象となるブロックの識別番号を読み出
し、その値を1インクリメントした値を、新しいデータ
を書き込むブロックの識別番号として設定する。また、
新しいデータを書き込むブロックの論理アドレスとし
て、更新の対象となるブロックの論理アドレスと同じ値
を設定する。次に、ステップS73へ進む。
1は、ブロックに書き込む新しいデータを準備する。次
に、ステップS74に進む。
1は、空いている物理アドレスを検索する。次に、ステ
ップS75に進む。
1は、データの変更が全て完了しているか否かを判別す
る。完了していなければ、ステップS76へ進み、完了
していれば、ステップS79へ進む。
1は、次に続くブロックの論理アドレスを確保して、こ
の論理アドレスを連結アドレスとして設定する。次に、
ステップS77へ進む。
1は、これまでのステップで設定された情報等に基づい
て、新しいデータを書き込むブロックについての分散管
理情報を作成する。次に、ステップS78へ進む。
1は、ステップS74で検索された物理アドレスのブロ
ックに、ページ単位で新しいデータを順次書き込む。こ
こで、処理の対象となっているブロックにファイルが納
まりきらない場合には、1ブロック分のデータがページ
単位で書き込まれる。また、処理の対象となっているブ
ロックにファイルが納まりきる場合には、必要なページ
分だけページ単位でデータが書き込まれる。なお、この
ステップS78で、ブロックに書き込まれるのは、新し
いファイルのデータと、ステップS77で作成された分
散管理情報とである。そして、このステップS78の後
は、ステップS73へ戻って処理を繰り返す。
理装置1は、最後に更新の対象となっていたブロック
に、連結アドレスが設定されているか否かを判別する。
連結アドレスが設定されていなければ、ステップS80
へ進み、連結アドレスが設定されていたならば、ステッ
プS81へ進む。
1は、最後に新しいデータを書き込んだブロックの最終
フラグを「ブロック最終」に設定する。次に、ステップ
S82へ進む。
理装置1は、最後に新しいデータを書き込んだブロック
の連結アドレスに、最後に更新の対象となっていたブロ
ックに設定されていた連結アドレスの値を設定する。次
に、ステップS82へ進む。
1は、ファイルのヘッダーを更新する。すなわち、ファ
イルの更新により、ファイルサイズが変更となっている
可能性があるので、新しいファイルサイズの情報を含む
ヘッダーを新たに作成して、ファイルのヘッダーを更新
する。次に、ステップS83へ進む。
1は、古いデータが書き込まれていたブロックを消去す
る。なお、このときは、古いデータが書き込まれていた
ブロックに対して消去処理を施すのではなく、該当する
ブロックのブロックフラグを「未消去」にするだけにし
ておき、後から適当なタイミングで、これらのブロック
に対して消去処理を施すようにしてもよい。
イルを書き込んでいるときや、メモリカード2に格納さ
れているファイルを更新しているときなどに、いきなり
電源が遮断されたり、メモリカード2がデータ処理装置
1から強制的に取り外されたりすると、同じ論理アドレ
スを持つ複数のブロックが同時に存在するような状態
(すなわち論理アドレスエラー)となってしまったり、
或いは、連結アドレスで指し示されたブロックが存在し
ないような状態(すなわち連結アドレスエラー)となっ
てしまったりする可能性がある。
集合管理情報を構築する際に、論理アドレスエラーや連
結アドレスエラーを検出して訂正するエラー検出訂正処
理を行うようにする。以下、このエラー検出訂正処理に
ついて、詳細に説明する。
る際に、論理アドレスエラーや連結アドレスエラーの検
出を行う。そして、連結アドレスエラーを検出するため
に使用するテーブルとして、エラー検出テーブルを使用
する。エラー検出テーブルは、連結アドレスエラーの検
出にだけ使用されるテーブルであり、エラー検出訂正処
理を行う際に、データ処理装置1の内部メモリ4に一時
的に確保される。エラー検出テーブルのために確保され
ていた領域は、エラー検出訂正処理が終了した後、開放
される。
ように、1論理アドレスに対して、各ブロックの連結状
態を示す1ビットの領域を備えたテーブルである。換言
すれば、エラー検出テーブルは、1エントリあたり1ビ
ットとなっており、各エントリは論理アドレスの連結状
態を「0」又は「1」で示す。処理の対象となるブロッ
クがN個ある場合、このエラー検出テーブルが占める領
域は、N/8バイトとなる。
を構築しているときと、集合管理情報の構築が終了した
ときとで、各ブロックの連結状態を示す値の意味合いが
異なる。
て、連結状態を示す値が「0」のとき、そのエントリ
は、正常な状態であることを示しているか、或いは、当
該エントリに対応する論理アドレスが、現在処理の対象
となっているブロックまでの間に他のブロックの連結ア
ドレスで指定されていないことを示している。この状態
のときは、今後の処理が進むに従って、値が「1」にな
る可能性があり、連結アドレスエラーであるかどうか不
確定な状態である。
おいて、連結状態を示す値が「1」のとき、そのエント
リは、当該エントリに対応する論理アドレスが、現在処
理の対象となっているブロックまでの間に他のブロック
の連結アドレスとして指定されているが、物理アドレス
に対応していない状態を示す。この状態のときは、今後
の処理が進むに従って、値が「0」になる可能性があ
り、連結アドレスエラーであるかどうか不確定な状態で
ある。
で、連結状態を示す値が「1」のとき、そのエントリ
は、当該エントリに対応する論理アドレスが連結アドレ
スとして指定されているのに、対応する物理アドレスが
存在しないことを示している。したがって、この状態の
ときは、連結アドレスエラーである。
で、連結状態を示す値が「0」のとき、そのエントリ
は、当該エントリに対応する論理アドレスに関する連結
が正常な状態となっていることを示している。
れる、連結アドレスエラーの検出について、具体的な例
を挙げて説明する。
ス「10」のブロックについて、その論理アドレスが
「1」、その連結アドレスが「3」であり、また、物理
アドレス「17」のブロックについて、その論理アドレ
スが「3」、その連結アドレスが「2」であったとす
る。また、論理アドレスが「2」のブロックは存在しな
いとする。
行われると、集合管理情報の再構築に伴って、図20に
示すように、連結アドレスエラーの検出が行われる。
ように、論理アドレス「1」「2」「3」のそれぞれに
ついて、エラー検出テーブルの値は、すべて初期値
「0」とする。また、集合管理情報の変換テーブルも、
全て初期値「0xffff」とする。このとき、集合管理情報
の連結テーブルは、全く値が入っていない状態とする。
いての情報を読み込む。これにより、図20(b)に示
すように、論理アドレス「1」に対応する変換テーブル
の値は、論理アドレス「1」のブロックの物理アドレス
の値、すなわち「10」とされる。また、論理アドレス
「1」に対応する連結テーブルの値は、論理アドレス
「1」のブロックの連結アドレスの値、すなわち「3」
とされる。
テーブルの値が指し示す論理アドレス「3」のエントリ
を確認する。このとき、論理アドレス「3」のエントリ
には、物理ブロックが割り当てられていないので、図2
0(c)に示すように、論理アドレス「3」に対応する
エラー検出テーブルの値を「1」とする。また、論理ア
ドレス「3」に対応する変換テーブルの値は、連結元の
論理アドレスの値、すなわち「1」とする。
なっている論理アドレス「3」のブロックについて、そ
の情報を読み込む。このとき、論理アドレス「3」のブ
ロックは存在しており、当該ブロックの情報は正常に読
み込むことができる。したがって、図20(d)に示す
ように、論理アドレス「3」に対応するエラー検出テー
ブルの値を「0」とする。また、このとき、論理アドレ
ス「3」に対応する変換テーブルの値は、論理アドレス
「3」のブロックの物理アドレスの値、すなわち「1
7」とする。また、論理アドレス「3」に対応する連結
テーブルの値は、論理アドレス「3」のブロックの連結
アドレスの値、すなわち「2」とする。
テーブルの値が指し示す論理アドレス「2」のエントリ
を確認する。このとき、論理アドレス「2」のエントリ
には、物理ブロックが割り当てられていないので、図2
0(e)に示すように、論理アドレス「2」に対応する
エラー検出テーブルの値を「1」とする。また、論理ア
ドレス「2」に対応する変換テーブルの値は、連結元の
論理アドレスの値、すなわち「3」とする。
なっている論理アドレス「2」のブロックについて、そ
の情報の読み込みを試みる。しかしながら、論理アドレ
スが「2」のブロックは存在していないので、この段階
で、連結アドレスエラーであることが判明する。
ーに対するエラー訂正処理は、以下のように行う。
は、同じ論理アドレスを持つブロックをそれぞれ調べ
る。そして、ブロックとして完全なものが1つしかない
場合には、完全なブロックを生かして、残りのブロック
は無効とする。
ック(ブートブロックを除く。)が複数ある場合には、
識別番号を比較して値が小さい方のブロックを生かす。
なお、一方のブロックの識別番号が「255」であり、
他方のブロックの識別番号が「0」の場合には、識別番
号が「255」のブロックを生かすようにする。
ロックが複数あったとしても、それらの識別番号の差は
1である。この条件に当てはまらないような場合には、
システムの側で自動的にエラー訂正処理を行うのではな
く、手動復旧モードとする。
て、連結アドレスエラーが生じた場合には、メモリカー
ド2を使用するアプリケーションソフトウェアやメモリ
カード2に格納するデータ等に応じた適切なエラー訂正
処理を行うようにする。具体的には、例えば、以下に挙
げるようなエラー訂正処理を行うようにすればよい。
指し示すブロックとして新規ブロックを割り当てる。そ
して、最後のブロックのデータを正しく読めるページま
で読み込んで、そのページまでのデータを新規ブロック
にコピーする。このとき、新規ブロックの最終フラグは
「ブロック最終」としておく。このようなエラー訂正処
理は、対象となるデータが音楽データ等のようにデータ
の途中でも意味があるデータの場合に、特に好適であ
る。
じたブロックを含むファイル全体を削除する。このよう
なエラー訂正処理は、対象となるデータがプログラムや
画像データ等のようにデータの途中では意味をなさない
データである場合に、特に好適である。
出訂正処理 本発明を適用したシステムにおいて、物理アドレスエラ
ーや連結アドレスエラーが発生するのは、データ更新処
理の途中に何らかの障害が発生した場合である。そし
て、本発明を適用したシステムでは、上述したように、
データ更新処理に先だってメモリカード2に格納されて
いる集合管理情報を無効にするようにしている。したが
って、物理アドレスエラーや連結アドレスエラーが発生
するときには、集合管理情報が無効となっている。そし
て、集合管理情報が無効となっているときには、次にメ
モリカード2を起動するときに、全てのブロックの分散
管理情報を調べ直して集合管理情報を再構築する処理が
必ず行われる。
を再構築する際に、全てのブロックを調べ直すというこ
とに着目し、このときにエラー検出訂正処理を同時に行
う。換言すれば、集合管理情報が有効となっているとき
には、物理アドレスエラーや連結アドレスエラーが発生
している可能性はないので、このときにはエラー検出訂
正処理を行わない。すなわち、この方法では、集合管理
情報の再構築時にだけ、エラー検出訂正処理を行う。こ
れにより、エラー検出訂正処理のためにメモリカード2
に余分にアクセスする必要がなくなる。その結果、例え
ば、メモリカード2の速やかな起動が可能となる。
手順によって行われる。
の変換テーブルを全て「0xffff」で初期化する。また、
内部メモリ4上にエラー検出テーブルの領域を確保し、
当該エラー検出テーブルを全て「0」で初期化する。
み、当該分散管理情報を用いてビットマップテーブルを
構築する。このとき、可/不可フラグが「使用不可」で
あるか、或いはブロックフラグが「未使用」又は「未消
去」である場合には、ビットマップテーブルの作成が終
了したら、次のブロックへ移動して処理を繰り返す。
理アドレスAとする。)と、連結アドレス(以下、論理
アドレスBとする。)とを調べる。
は、次のブロックへ移動し、(3)へ戻って処理を繰り
返す。
Aの欄を調べる。エラー検出テーブルの論理アドレスA
の欄が「1」となっている場合は、「0」に書き換える
とともに、変換テーブルの論理アドレスAの欄に、論理
アドレス「A」のブロックの物理アドレスを書き込む。
また、エラー検出テーブルの論理アドレスAの欄が
「0」となっている場合は、変換テーブルの論理アドレ
スAの欄を調べる。そして、変換テーブルの論理アドレ
スAの値が「0xffff」のときは、そこに、論理アドレス
Aのブロックの物理アドレスを書き込む。
として、「0xffff」以外の値が既に入っている場合は、
論理アドレスエラーが発生している場合であるので、論
理アドレスエラーに対するエラー訂正処理を行う。
に、論理アドレスBの値を記入する。
っているかを調べる。「ブロック最終」となっていれ
ば、連結アドレスは無効なので、次のブロックに移動
し、(3)へ戻って処理を繰り返す。
応しているかどうかを、変換テーブルを用いて確認す
る。変換テーブルの論理アドレスBの値が「0xffff」以
外の場合は、論理アドレスBに物理アドレスが対応して
いる。一方、変換テーブルの論理アドレスBの値が「0x
ffff」の場合は、現在のブロックまでの段階では、論理
アドレスBに物理アドレスが対応していない。このとき
は、エラー検出テーブルの論理アドレスBの欄に「1」
を書き込むとともに、変換テーブルの論理アドレスBの
欄に論理アドレスAの値を記入する。その後、次のブロ
ックに移動し、(3)へ戻って処理を繰り返す。
が「0xffff」となっても、ブロックの途中までしか処理
を行っていない段階では、論理アドレスBに物理アドレ
スが本当に対応していないのかは明らかではない。すな
わち、論理アドレスBに物理アドレスが本当に対応して
いない場合と、今後処理を進めて行くに従って、対応す
るブロックが現れる場合との2通りがあり得る。
った後、エラー検出テーブルを参照する。エラー検出テ
ーブルの値が「1」となっている論理アドレスは、物理
アドレスが対応していない。すなわち、連結アドレスエ
ラーが発生している。このときは、変換テーブル内に連
結元のブロックの論理アドレスが格納されているので、
これを用いて元ブロックを特定し、適切なエラー訂正処
理を行う。なお、エラー訂正処理を行った後は、エラー
検出テーブルの値を「0」にし、該当する変換テーブル
の値を「0xffff」にしておく。
うに、集合管理情報を構築するときにエラー検出訂正処
理を行う。以下、このような集合管理情報の構築及びエ
ラー検出訂正処理の具体的な方法について、図21乃至
図23に示すフローチャートを参照して、更に詳細に説
明する。
C,D,T(I)を使用し、定数としてNを使用する。
変数Iは、物理アドレスが入力される変数であり、変数
Aは、論理アドレスが入力される変数であり、変数B
は、連結アドレスが入力される変数であり、変数C,D
は、識別番号の値が入力される変数であり、変数T
(I)は、論理アドレス「I」に対応するエラー検出テ
ーブルの値を示す変数である。また、定数Nは、総ブロ
ック数を示す定数である。
テップS101において、データ処理装置1は、変換テ
ーブルを初期化し、全ての値を「0xffff」とする。次に
ステップS102へ進む。
置1は、エラー検出テーブルを初期化し、全ての値を
「0」とする。次にステップS103へ進む。
置1は、変数Iに「0」を代入する。次にステップS1
04へ進む。
置1は、物理アドレス「I」のブロックの分散管理情報
をメモリカード2から読み込む。次にステップS105
へ進む。
置1は、ステップS104で読み込んだ分散管理情報の
可/不可フラグを参照して、物理アドレス「I」のブロ
ックが使用可能か否かを判別する。使用可能であれば、
ステップS106へ進み、使用不可能であれば、ステッ
プS129へ進む。
置1は、ステップS104で読み込んだ分散管理情報の
ブロックフラグを参照して、物理アドレス「I」のブロ
ックが使用中であるか否かを判別する。具体的には、ブ
ロックフラグが「先頭使用」又は「使用」になっている
か否かを判別する。ブロックフラグが「先頭使用」又は
「使用」になっており、当該ブロックが使用中であれ
ば、ステップS107へ進む。また、当該ブロックが使
用中でなければ、ステップS129へ進む。
置1は、物理アドレス「I」のブロックについての情報
をビットマップテーブルに加える。次に、ステップS1
08へ進む。
置1は、ステップS104で読み出した分散管理情報に
基づいて、物理アドレス「I」のブロックの論理アドレ
スを変数Aに代入し、物理アドレス「I」のブロックの
連結アドレスを変数Bに代入する。次にステップS10
9へ進む。
置1は、Aの値が「0xffff」であるか否かを判別する。
「0xffff」でなければ、ステップS110へ進み、「0x
ffff」であれば、図22のステップS120へ進む。
置1は、エラー検出テーブルの論理アドレス「A」の値
を調べる。次にステップS111へ進む。
置1は、エラー検出テーブルの論理アドレス「A」の値
が「1」であるかを判別する。「1」であれば、ステッ
プS112へ進み、「1」でなければステップS130
へ進む。
置1は、エラー検出テーブルの論理アドレス「A」の値
を「0」に書き換える。次に、ステップS113へ進
む。
置1は、変換テーブルの論理アドレス「A」の欄に、変
数「I」(すなわち物理ブロック「I」)を書き込む。
次に、ステップS114へ進む。
置1は、連結テーブルの論理アドレス「A」の欄に、変
数「B」(すなわち連結アドレス「B」)を書き込む。
次に、ステップS115へ進む。
置1は、最終フラグが「ブロック最終」になっているか
否かを判別する。「ブロック最終」になっていなけれ
ば、ステップS116へ進み、「ブロック最終」になっ
ていれば、図22のステップS120へ進む。
置1は、論理アドレス「B」に対応する変換テーブルの
値を調べる。次に、ステップS117へ進む。
置1は、論理アドレス「B」に対応する変換テーブルの
値が「0xffff」であるかを判別する。「0xffff」であれ
ば、ステップS118へ進み、「0xffff」でなければ、
図22のステップS120へ進む。
置1は、エラー検出テーブルの論理アドレス「B」の欄
を「1」に書き換える。次に、ステップS119へ進
む。
置1は、エラー検出テーブルの論理アドレス「B」の欄
に、論理アドレス「A」を書き込む。次に、図22のス
テップS120へ進む。
タ処理装置1は、変数Iの値と、総ブロック数を示す定
数Nの値とを比較する。I<Nでなければ、ステップS
121へ進み、I<Nであれば、ステップS128へ進
む。
置1は、変数Iに「0」を代入する。次にステップS1
22へ進む。
置1は、エラー検出テーブルの論理アドレス「I」の値
を示す変数T(I)が「1」であるかを判別する。
「1」でなければステップS123へ進み、「1」であ
ればステップS125へ進む。
置1は、変数Iの値と、総ブロック数を示す定数Nの値
とを比較する。I=Nであれば、これで処理を終了す
る。I=Nでなければ、ステップS124へ進む。
置1は、変数Iの値を1インクリメントする。その後、
ステップS122へ戻って処理を繰り返す。
「1」であったときは、上述したようにステップS12
5へ進む。このステップS125に進むのは、連結アド
レスエラーが生じていたときである。そこで、ステップ
S125において、データ処理装置1は、連結アドレス
エラーに対する所定のエラー訂正処理を行う。ここで
は、上述したように、メモリカード2を使用するアプリ
ケーションソフトウェアやメモリカード2に格納するデ
ータ等に応じた適切なエラー訂正処理を行うようにす
る。そして、エラー訂正処理が完了したら、ステップS
126へ進む。
置1は、エラー検出テーブルの論理アドレス「I」の値
を「0」にする。次に、ステップS127へ進む。
置1は、変換テーブルの論理アドレス「I」の欄を「0x
ffff」に書き換える。その後、ステップS123へ進
み、上述した処理を行う。
ときは、上述したようにステップS128へ進む。この
ステップS128へ進むのは、全ブロックについての分
散管理情報の読み出しが完了していないときである。そ
こで、このステップS128において、データ処理装置
1は、変数Iの値を1インクリメントし、その後、図2
1のステップS104へ戻って処理を繰り返す。
ドレス「I」のブロックが使用不可能であったとき、及
びステップS106で物理アドレス「I」のブロックが
使用中でなかったときは、上述したようにステップS1
29へ進む。
置1は、物理アドレス「I」のブロックについての情報
をビットマップテーブルに加える。その後、図22のス
テップS120へ進み、上述した処理を行う。
検出テーブルの論理アドレス「A」の値が「1」でなか
ったときは、上述したようにステップS130へ進む。
このステップS130において、データ処理装置1は、
変換テーブルの論理アドレス「A」の値を調べる。次
に、ステップS131へ進む。
置1は、変換テーブルの論理アドレス「A」の値が「0x
ffff」であるかを判別する。「0xffff」であれば、ステ
ップS113へ進んで上述した処理を行い、「0xffff」
でなければ、図23のステップS132へ進む。
理アドレスエラーが生じて、論理アドレス「A」を持つ
ブロックが2つ存在しているときである。そこで、ステ
ップS132において、データ処理装置1は、論理アド
レス「A」を持つ2つのブロックの識別番号を読み出
す。そして、一方のブロックの識別番号が読み出せた
ら、その値を変数Cに代入する。また、他方のブロック
の識別番号が読み出せたら、その値を変数Dに代入す
る。次にステップS133へ進む。
置1は、ステップS132での識別番号の読み出しが正
常に行えたかを判別する。変数Cに代入される識別番号
だけが読み出せたときは、ステップS134へ進み、そ
れ以外のときは、ステップS137へ進む。
置1は、変数Dに対応するブロックのブロックフラグを
「未消去」にする。次にステップS135へ進む。
置1は、ステップS134での処理、すなわち変数Dに
対応するブロックのブロックフラグを「未消去」にする
処理が成功したかを判別する。成功していれば、図21
のステップS113へ戻って上述した処理を行い、成功
していなければ、ステップS136へ進む。
置1は、変数Dに対応するブロックの可/不可フラグを
「使用不可」にする。その後、図21のステップS11
3へ戻って上述した処理を行う。
処理装置1は、ステップS132での識別番号の読み出
しが正常に行えたかを判別する。変数Dに代入される識
別番号だけが読み出せたときは、ステップS138へ進
み、それ以外のときは、ステップS141へ進む。
置1は、変数Cに対応するブロックのブロックフラグを
「未消去」にする。次にステップS139へ進む。
置1は、ステップS138での処理、すなわち変数Cに
対応するブロックのブロックフラグを「未消去」にする
処理が成功したかを判別する。成功していれば、図21
のステップS113へ戻って上述した処理を行い、成功
していなければ、ステップS140へ進む。
置1は、変数Cに対応するブロックの可/不可フラグを
「使用不可」にする。その後、図21のステップS11
3へ戻って上述した処理を行う。
処理装置1は、ステップS132での識別番号の読み出
しが正常に行えたかを判別する。変数Cに代入される識
別番号と、変数Dに代入される識別番号との両方が正常
に読み出せたときは、ステップS142へ進む。一方、
両方とも読み出せなかったときには、手動復旧モードに
移行し、手動にてエラーの訂正に必要な適切な処理を行
うようにする。
置1は、変数Cの値と、変数Dの値に「1」を加えた値
とを比較する。これらの値が等しければ、ステップS1
34へ進み上述した処理を行い、これらの値が等しくな
ければ、ステップS143へ進む。
置1は、変数Dの値と、変数Cの値に「1」を加えた値
とを比較する。これらの値が等しければ、ステップS1
38へ進み上述した処理を行う。一方、これらの値が等
しくないときは、手動復旧モードに移行し、手動にてエ
ラーの訂正に必要な適切な処理を行うようにする。
再構築時に、エラー検出訂正処理が同時に行われる。こ
れにより、上述したように、エラー検出訂正処理のため
にメモリカード2に余分にアクセスする必要がなくな
る。すなわち、本発明を適用したシステムでは、データ
の書き込みが正常に終了し有効な集合管理情報がメモリ
カード2に書き戻されている場合には、エラー検出訂正
処理は実行されない。
は、不要なエラー検出訂正処理を行わないので、メモリ
カード2へのアクセスの高効率化を図ることができる。
特に、上記エラー検出訂正処理は、分散管理情報から集
中管理情報を構築する作業と同時に行われるため、メモ
リカード2へのアクセスが最小限にとどめられる。
モリカード2の各ブロックに識別番号を付し、この識別
番号を用いて論理アドレスエラーに対処するようにして
いるので、データ更新処理を安全に行うことができる。
すなわち、データ更新処理時に何らかのエラーが発生し
て、同じ論理アドレスを持つブロックが複数存在するよ
うになってしまっても、識別番号を用いることで、デー
タ更新処理前の状態のデータを復旧することができる。
更に、本発明を適用したシステムでは、エラー検出テー
ブルを用いることで、連結アドレスエラーを検出するこ
ともでき、しかも連結先の存在しないブロックを検出す
ることもできる。
れば、外部記憶装置に論理アドレスエラーや連結アドレ
スエラーが生じても、それらのエラーを検出し適切に修
復することができる。
図である。
ロック図である。
視図である。
造を示す図である。
構築する様子を示す図である。
ートである。
トである。
る。
ドに書き込むときの手順を示すフローチャートである。
ードに書き込むときの手順を示すフローチャートであ
る。
挙げて示す概念図である。
ある。
である。
ク間の連結状態が図19に示した状態のときの処理の流
れを示す図である。
手順を示すフローチャートである。
手順を示すフローチャートである。
手順を示すフローチャートである。
処理装置、 4 内部メモリ、 5 補助記憶装置、
6 シリアルインターフェース回路、 7 バス、 1
1 コントローラ、 12 フラッシュメモリ、 13
シリアル/パラレル・パラレル/シリアル・インター
フェース・シーケンサ、 14 フラッシュメモリ・イ
ンターフェース・シーケンサ、 15 ページバッフ
ァ、 16エラー訂正回路、 17 コマンドジェネレ
ータ、 18 コンフィグレーションROM、 19
発振器、 20 誤消去防止スイッチ
Claims (6)
- 【請求項1】 記憶領域が複数のブロックに分割されて
なり、各ブロックに対して論理アドレスが割り当てられ
る外部記憶装置であって、 各ブロックには、データと共に当該データの新旧を示す
識別番号が格納され、 同じ論理アドレスを持つ複数のブロックが存在する場合
には、上記識別番号に基づいて、それらのブロックに格
納されているデータの新旧が判別され、新しい方のデー
タは無効なデータとされ、古い方のデータが有効なデー
タとされることを特徴とする外部記憶装置。 - 【請求項2】 記憶領域が複数のブロックに分割されて
なり、各ブロックに対して論理アドレスが割り当てられ
るとともに、ブロックに格納するデータをブロック毎に
管理するための情報である分散管理情報が各ブロックに
それぞれ格納され、全ブロックを管理するための情報で
ある集合管理情報が各ブロックの分散管理情報から生成
され、ブロック全体が上記集合管理情報に基づいて管理
される外部記憶装置において、 データがファイル単位で格納されるとともに、一つのフ
ァイルが複数のブロックにわたる場合には、当該ファイ
ルを格納しているブロックのそれぞれに次のブロックの
論理アドレスが連結アドレスとして格納され、 上記集合管理情報が生成されるときに、連結アドレスが
指し示す論理アドレスを持つブロックが存在するか否か
が調べられることを特徴とする外部記憶装置。 - 【請求項3】 記憶領域が複数のブロックに分割されて
なる外部記憶装置にデータを格納する際に、ブロックに
論理アドレスを割り当ててデータを格納するとともに、
データが格納されるブロックに当該データの新旧を示す
識別番号を格納し、 上記外部記憶装置からデータを読み出す際に、同じ論理
アドレスを持つ複数のブロックが存在する場合には、上
記識別番号に基づいて、それらのブロックに格納されて
いるデータの新旧を判別し、新しい方のデータは無効な
データとし、古い方のデータを有効なデータとすること
を特徴とするデータ処理装置。 - 【請求項4】 記憶領域が複数のブロックに分割されて
なる外部記憶装置に対して、各ブロックに論理アドレス
を割り当ててデータを格納するデータ処理装置であっ
て、 上記外部記憶装置に格納するデータをブロック毎に管理
するための情報である分散管理情報を各ブロックにそれ
ぞれ格納するとともに、全ブロックを管理するための情
報である集合管理情報を各ブロックの分散管理情報から
生成して当該集合管理情報に基づいてブロック全体を管
理し、 上記外部記憶装置にデータをファイル単位で格納する際
に、一つのファイルが複数のブロックにわたる場合に
は、当該ファイルが格納されるブロックのそれぞれに次
のブロックの論理アドレスを連結アドレスとして格納
し、 上記集合管理情報を生成するときに、連結アドレスが指
し示す論理アドレスを持つブロックが存在するか否かを
調べることを特徴とするデータ処理装置。 - 【請求項5】 記憶領域が複数のブロックに分割されて
なる外部記憶装置にデータを格納する際に、ブロックに
論理アドレスを割り当ててデータを格納するとともに、
データが格納されるブロックに当該データの新旧を示す
識別番号を格納し、 上記外部記憶装置からデータを読み出す際に、同じ論理
アドレスを持つ複数のブロックが存在する場合には、上
記識別番号に基づいて、それらのブロックに格納されて
いるデータの新旧を判別し、新しい方のデータは無効な
データとし、古い方のデータを有効なデータとすること
を特徴とするデータ処理方法。 - 【請求項6】 記憶領域が複数のブロックに分割されて
なる外部記憶装置に対して、各ブロックに論理アドレス
を割り当ててデータを格納する際に、 上記外部記憶装置に格納するデータをブロック毎に管理
するための情報である分散管理情報を各ブロックにそれ
ぞれ格納するとともに、全ブロックを管理するための情
報である集合管理情報を各ブロックの分散管理情報から
生成して当該集合管理情報に基づいてブロック全体を管
理し、 上記外部記憶装置にデータをファイル単位で格納する際
に、一つのファイルが複数のブロックにわたる場合に
は、当該ファイルが格納されるブロックのそれぞれに次
のブロックの論理アドレスを連結アドレスとして格納
し、 上記集合管理情報を生成するときに、連結アドレスが指
し示す論理アドレスを持つブロックが存在するか否かを
調べることを特徴とするデータ処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9267178A JP3070539B2 (ja) | 1997-09-30 | 1997-09-30 | 外部記憶装置、データ処理装置及びデータ処理方法 |
JP34682699A JP3640154B2 (ja) | 1997-09-30 | 1999-12-06 | 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9267178A JP3070539B2 (ja) | 1997-09-30 | 1997-09-30 | 外部記憶装置、データ処理装置及びデータ処理方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34682699A Division JP3640154B2 (ja) | 1997-09-30 | 1999-12-06 | 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11110300A true JPH11110300A (ja) | 1999-04-23 |
JP3070539B2 JP3070539B2 (ja) | 2000-07-31 |
Family
ID=17441199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9267178A Expired - Fee Related JP3070539B2 (ja) | 1997-09-30 | 1997-09-30 | 外部記憶装置、データ処理装置及びデータ処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3070539B2 (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001051883A (ja) * | 1999-08-12 | 2001-02-23 | Nec Corp | 不揮発性メモリにおける自己修復方法および不揮発性メモリ装置 |
JP2003167795A (ja) * | 2001-11-16 | 2003-06-13 | Samsung Electronics Co Ltd | フラッシュメモリの管理方法 |
JP2005190288A (ja) * | 2003-12-26 | 2005-07-14 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
JP2006018594A (ja) * | 2004-07-01 | 2006-01-19 | Mitsubishi Electric Corp | 情報処理装置 |
JP2006099419A (ja) * | 2004-09-29 | 2006-04-13 | Tietech Co Ltd | 不揮発性メモリの制御方法 |
US7590294B2 (en) | 2004-11-29 | 2009-09-15 | Sony Corporation | Image compression apparatus and method, and program and recording medium |
US7657702B2 (en) | 2001-01-19 | 2010-02-02 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
JP2010267290A (ja) * | 2002-10-28 | 2010-11-25 | Sandisk Corp | 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置 |
JP2011123560A (ja) * | 2009-12-08 | 2011-06-23 | Oki Electric Industry Co Ltd | フラッシュディスク装置 |
JP2012146340A (ja) * | 2012-05-07 | 2012-08-02 | Kyocera Corp | 電子機器および記憶方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03246645A (ja) * | 1990-02-23 | 1991-11-05 | Nec Corp | データ管理方式 |
JPH07248978A (ja) * | 1994-03-11 | 1995-09-26 | Fuji Film Micro Device Kk | 不揮発性メモリ |
JPH08272698A (ja) * | 1995-03-30 | 1996-10-18 | Fujitsu Ltd | メモリ書替え装置 |
-
1997
- 1997-09-30 JP JP9267178A patent/JP3070539B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03246645A (ja) * | 1990-02-23 | 1991-11-05 | Nec Corp | データ管理方式 |
JPH07248978A (ja) * | 1994-03-11 | 1995-09-26 | Fuji Film Micro Device Kk | 不揮発性メモリ |
JPH08272698A (ja) * | 1995-03-30 | 1996-10-18 | Fujitsu Ltd | メモリ書替え装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001051883A (ja) * | 1999-08-12 | 2001-02-23 | Nec Corp | 不揮発性メモリにおける自己修復方法および不揮発性メモリ装置 |
US7818490B2 (en) | 2001-01-19 | 2010-10-19 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US8316177B2 (en) | 2001-01-19 | 2012-11-20 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US7970987B2 (en) | 2001-01-19 | 2011-06-28 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US7657702B2 (en) | 2001-01-19 | 2010-02-02 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
JP2003167795A (ja) * | 2001-11-16 | 2003-06-13 | Samsung Electronics Co Ltd | フラッシュメモリの管理方法 |
US7127551B2 (en) | 2001-11-16 | 2006-10-24 | Samsung Electronics Co., Ltd. | Flash memory management method |
JP2010267290A (ja) * | 2002-10-28 | 2010-11-25 | Sandisk Corp | 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置 |
JP2005190288A (ja) * | 2003-12-26 | 2005-07-14 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
JP2006018594A (ja) * | 2004-07-01 | 2006-01-19 | Mitsubishi Electric Corp | 情報処理装置 |
JP4558393B2 (ja) * | 2004-07-01 | 2010-10-06 | 三菱電機株式会社 | 情報処理装置 |
JP2006099419A (ja) * | 2004-09-29 | 2006-04-13 | Tietech Co Ltd | 不揮発性メモリの制御方法 |
US7590294B2 (en) | 2004-11-29 | 2009-09-15 | Sony Corporation | Image compression apparatus and method, and program and recording medium |
JP2011123560A (ja) * | 2009-12-08 | 2011-06-23 | Oki Electric Industry Co Ltd | フラッシュディスク装置 |
JP2012146340A (ja) * | 2012-05-07 | 2012-08-02 | Kyocera Corp | 電子機器および記憶方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3070539B2 (ja) | 2000-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3912355B2 (ja) | データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム | |
JP2914360B2 (ja) | 外部記憶装置及びデータ処理方法 | |
US6845434B2 (en) | Method for updating parametric data for use in data management system | |
JP3072722B2 (ja) | フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体 | |
US6687784B2 (en) | Controller for controlling nonvolatile memory unit | |
JP3233079B2 (ja) | データ処理システム及びデータ処理方法 | |
JP3682256B2 (ja) | ディスクアレイ装置及び同装置におけるパリティ処理方法 | |
US6883060B1 (en) | Microcomputer provided with flash memory and method of storing program into flash memory | |
KR100370893B1 (ko) | 일괄 소거형 비휘발성 메모리 장치 | |
JP3268130B2 (ja) | フラッシュeepromを用いたデータ処理装置 | |
KR100527610B1 (ko) | 저장장치,데이터처리시스템및데이터기록및판독방법 | |
JP2008033801A (ja) | メモリデータ管理装置 | |
JP3070539B2 (ja) | 外部記憶装置、データ処理装置及びデータ処理方法 | |
JP2002251310A (ja) | フラッシュメモリのファイルシステム作成方式 | |
JPH11328982A (ja) | フラッシュメモリのデ―タ管理方式 | |
JP3640154B2 (ja) | 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム | |
JP2910745B2 (ja) | 記憶装置及びデータ処理方法 | |
JP2003036209A (ja) | 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法 | |
JP4183237B2 (ja) | 記憶装置 | |
JP2002108722A (ja) | 記憶装置 | |
JP3624647B2 (ja) | 記憶装置、データ管理装置、データ管理システム、データ管理方法、ファイル管理装置、記録媒体及びファイル管理システム | |
JPH11110263A (ja) | 記憶装置、データ処理装置及びデータ処理方法 | |
JP2006099419A (ja) | 不揮発性メモリの制御方法 |
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: 20000425 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090526 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100526 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100526 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110526 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110526 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120526 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120526 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130526 Year of fee payment: 13 |
|
LAPS | Cancellation because of no payment of annual fees |