(57)【特許請求の範囲】
【請求項１】
データの消去単位である複数のブロックに分割され、ブロック単位で一括消去が行われる書き換え可能な不揮発性の記憶手段を備える記憶装置において、
上記記憶手段を構成する各ブロックは、データとこのデータが記憶される領域の状態を管理するための領域管理情報とを記憶し、
上記領域管理情報は、該領域管理情報の各符号に対して、該各符号と同一符号の所定量の冗長データが付加されてなる領域管理フラグとして上記記憶手段に格納し、
上記領域管理情報を外部のデータ処理装置に伝送する際には、上記領域管理フラグの同一符号のビット情報の数を比較することによって、上記領域管理情報のエラー訂正が不可能であるか否かの判断及び上記領域管理情報のエラー訂正を行い、上記領域管理情報に、エラーが生じていない領域管理情報であるか、エラー訂正をした領域管理情報か、エラーが生じているが訂正が不可能な領域管理情報であるかを判別するためのフラグを付加して伝送することを特徴とする記憶装置。
【請求項２】
上記記憶手段は、上記各ブロックに既にデータが記憶された状態において、ビット１からビット０への書き換えであるときには、上記ブロックの一括消去による初期化を伴わずにオーバーライトによる書き込みを行うことが可能な第１の領域と、データの書き換えの際に、上記ブロックの一括消去による初期化を伴う第２の領域とを有し、
上記第２の領域には、データと該データのエラー訂正符号が記憶され、上記第１の領域には、上記領域管理フラグが格納されることを特徴とする請求項１記載の記憶装置。
【請求項３】
上記領域管理情報を上記領域管理フラグに変換し、上記領域管理フラグを上記領域管理情報に変換する変換手段を有することを特徴とする請求項1記載の記憶装置。
【請求項４】
データの消去単位である複数のブロックに分割され、ブロック単位で一括消去が行われる書き換え可能な不揮発性の記憶手段を備え、上記記憶手段を構成する各ブロックは、データとこのデータが記憶される領域の状態を管理するための領域管理情報とを記憶し、上記領域管理情報は、該領域管理情報の各符号に対して、該各符号と同一符号の所定量の冗長データが付加されてなる領域管理フラグとして上記記憶手段に格納し、上記領域管理情報を外部のデータ処理装置に伝送する際には、上記領域管理フラグの同一符号のビット情報の数を比較することによって、上記領域管理情報のエラー訂正が不可能であるか否かの判断及び上記領域管理情報のエラー訂正を行い、上記領域管理情報に、エラーが生じていない領域管理情報であるか、エラー訂正をした領域管理情報か、エラーが生じているが訂正が不可能な領域管理情報であるかを判別するためのフラグを付加して伝送する記憶装置と、
上記記憶装置に上記データ及び領域管理情報を供給し、又は上記記憶装置から出力された上記データ及び領域管理情報を入力し、上記領域管理情報に付加されたフラグによって、入力された領域管理情報から各ブロックのデータが記憶される領域の状態を認識するデータ処理装置とを備えることを特徴とするデータ処理システム。
【請求項５】
データの消去単位である複数のブロックに分割され、ブロック単位で一括消去が行われる書き換え可能な不揮発性の記憶手段からデータを読み出すデータ読出し方法において、
上記記憶手段には、データと、該データを記憶する上記記憶手段の領域の状態を管理する領域管理情報の各符号に対して該各符号と同一符号の所定量の冗長データが付加されてなる領域管理フラグを記憶しておき、
データを読み出す際には、上記記憶手段から、データと領域管理フラグとを読み出し、上記領域管理フラグの同一符号のビット情報の数を比較することによって、上記領域管理情報のエラー訂正が不可能であるか否かの判断及び上記領域管理情報のエラー訂正を行い、上記領域管理フラグを上記領域管理情報に変換し、
上記領域管理情報に、領域管理フラグがエラーが生じていない領域管理情報であるか、エラー訂正をした領域管理情報か、エラーが生じているが訂正が不可能な領域管理情報であるかを判別するためのフラグを付加し、上記領域管理情報と上記読み出したデータとを外部に出力するデータ読出し方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、任意のデータ及びこのデータが記憶される領域の状態を管理するための領域管理情報を記憶する記憶装置、この記憶装置を用いたデータ処理システム、データ書き込み方法及びデータ読み出し方法に関する。
【０００２】
【従来の技術】
従来、コンピュータ等の電子機器で用いられるデータを記憶させておく外部記憶装置として、フラッシュメモリ（電気的消去可能型プログラマブルＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ））を記憶媒体として用いたカード型の外部記憶装置（以下、メモリカードという。）が提案されている。
【０００３】
このメモリカードには、記憶媒体であるメモリに、任意のデータと、付属データである管理情報とが記憶される。メモリカードは、これらデータや管理情報をホスト側のコンピュータ等に供給する際は、エラー訂正符号等を用いてエラー訂正をかけて、セルの故障等に起因するデータのエラーを訂正して出力するようにしている。
【０００４】
ところで、管理情報としては、記憶されたデータの順番を示す論理アドレス等のようにデータを管理するためのデータに依存した情報であるデータ管理情報の他に、例えばデータが記憶された領域が使用可能か否かを示す情報のように、データが記憶される領域の状態を管理するための情報である領域管理情報が記憶される場合がある。
【０００５】
このような領域管理情報は、データから独立したメモリ内の領域に関する情報であるので、データが記憶された後に書き換える必要が生じる場合がある。したがって、この領域管理情報は、通常、データを書き換えることなく単独で書き換えることができるようになされている。
【０００６】
また、このような領域管理情報は、エラーが生じた場合に通常のエラー訂正符号を用いてエラー訂正を行うようにすると、情報を書き換えるたびにエラー訂正符号を書き換えなければならない。そこで、このような領域管理情報に対しては、エラー訂正符号を用いたエラー訂正を行わずに、同一の情報を複数ビットに分散して複数のセルに記憶させておくことでエラー対策をすることが望ましい。
【０００７】
【発明が解決しようとする課題】
ところで、同一の情報を複数ビットに分散して記憶させておくことで領域管理情報のエラー対策とした場合、同一の情報が記憶された複数のセルのうちいくつかに故障が生じると、領域管理情報のエラー訂正を行うことができなくなってしまう場合がある。したがって、一度エラー訂正を行った領域管理情報については、この領域管理情報がエラー訂正を行った情報であることを判別できるようにして、次にメモリカードに記憶させる場合に、故障が発生した領域以外の領域に記憶させるようにすることが望ましい。
【０００８】
そこで、本発明は、領域管理情報にエラー訂正を行ったかどうかを判別することができるようにしてデータを出力する記憶装置を提供し、記憶装置が領域管理情報にエラー訂正を行ったかどうかを判別することができるようにしてデータ処理装置にデータを供給し、データ処理装置が領域管理情報にエラー訂正が行われたかどうかを判別して所定のデータ処理を行うことを可能とする記憶装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上述のような目的を達成するために提案される本発明は、データの消去単位である複数のブロックに分割され、ブロック単位で一括消去が行われる書き換え可能な不揮発性の記憶手段を備える記憶装置において、上記記憶手段を構成する各ブロックは、データとこのデータが記憶される領域の状態を管理するための領域管理情報とを記憶し、上記領域管理情報は、該領域管理情報の各符号に対して、該各符号と同一符号の所定量の冗長データが付加されてなる領域管理フラグとして上記記憶手段に格納し、上記領域管理情報を外部のデータ処理装置に伝送する際には、上記領域管理フラグの同一符号のビット情報の数を比較することによって、上記領域管理情報のエラー訂正が不可能であるか否かの判断及び上記領域管理情報のエラー訂正を行い、上記領域管理情報に、エラーが生じていない領域管理情報であるか、エラー訂正をした領域管理情報か、エラーが生じているが訂正が不可能な領域管理情報であるかを判別するためのフラグを付加して伝送することを特徴とする記憶装置であり、さらに、この記憶装置を用いたデータ処理システムであり、データ読み出し方法である。
すなわち、データ処理システムは、記記憶装置に上記データ及び領域管理情報を供給し、又は上記記憶装置から出力された上記データ及び領域管理情報を入力し、上記領域管理情報に付加されたフラグによって、入力された領域管理情報から各ブロックのデータが記憶される領域の状態を認識するデータ処理装置を備える。
【００１０】
また、本発明は、データの消去単位である複数のブロックに分割され、ブロック単位で一括消去が行われる書き換え可能な不揮発性の記憶手段を備える記憶装置において、上記記憶手段を構成する各ブロックは、書き込み又は読み出し単位であるページに分割され、各ページは、該ページに既にデータが記憶された状態において、ビット１からビット０への書き換えであるときには、上記ページの所属するブロックの一括消去による初期化を伴わずにオーバーライトによる書き込みを行うことが可能な第１の領域と、データの書き換えの際に、該ページの所属するブロックの一括消去による初期化を伴う第２の領域とを有し、上記第２の領域には、データと該データのエラー訂正符号が記憶され、上記第１の領域には、該ブロックの状態を示す符号と所定量の冗長データが付加されてなる領域管理フラグが記憶するようにしたものである。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
【００１２】
ここでは、本発明を、図１に示すように、ホスト側の装置となるデータ処理装置１０と、シリアルインターフェースを介してこのデータ処理装置１０に接続される外部記憶装置であるメモリカード２０とから構成されるシステム１に適用した例について説明する。
【００１３】
ここでは、データ処理装置１０とメモリカード２０との間でのデータのやり取りをシリアルインターフェースによって行うシステムを例に説明するが、本発明はデータのやり取りをパラレルインターフェースによって行うシステムに対しても適用可能である。
【００１４】
このシステム１に用いられるデータ処理装置１０は、所定のプログラムを実行するデータ処理部１１と、外部装置であるメモリカード２０との間でデータのやり取りをするためのシリアルインターフェース回路１２と、データ処理部１１とシリアルインターフェース回路１２間に設けられ、データ処理装置１１から供給されたデータ等を一時的に記憶するレジスタ１３と、データ処理部１１、シリアルインターフェース回路１２、レジスタ１３のそれぞれに接続され、これらの処理動作を制御する制御部１４とを備えている。
【００１５】
このデータ処理装置１０は、例えばデータ処理部１１が所定のプログラムを実行する際に、外部記憶装置であるメモリカード２０にデータを記憶させる必要があると判断した場合は、データ処理部１１が制御部１４の制御に基づいて、記憶させるべきデータやこのデータを管理するために必要な情報である管理情報、制御データである書き込み命令等をレジスタ１３に書き込む。
【００１６】
そして、シリアルインターフェース回路１２が、制御部１４の制御に基づいてレジスタ１３からこれら記憶させるべきデータや管理情報、書き込み命令等を読み出し、シリアルデータに変換して、クロック信号やステータス信号とともにこれらの転送を行う。なお、上記管理情報は、データを管理するための情報であるデータ管理情報と、データが記憶される領域の状態を管理するための領域管理情報を含む情報である。
【００１７】
また、このデータ処理装置１０は、データ処理部１１が所定のプログラムを実行する際に、外部記憶装置であるメモリカード２０からデータを読み出す必要があると判断した場合は、データ処理部１１が制御部１４の制御に基づいて制御データである読み出し命令をレジスタ１３に書き込む。そして、シリアルインターフェース回路１２が、制御部１４の制御に基づいてレジスタ１３から読み出し命令を読み出し、シリアルデータに変換して、クロック信号やステータス信号とともにこれらの転送を行う。
【００１８】
この読み出し命令に従ってメモリカード２０から転送されてきた所定のデータや管理情報は、シリアルインターフェース回路１２によりパラレルデータに変換され、レジスタ１３に書き込まれる。そして、データ処理部１１が、制御部１４の制御に基づいてレジスタ１３からこれらデータや管理情報を読み出して所定の処理を行う。この際、制御部１４は、メモリカード２１から転送されてきた領域管理情報に付加された後述するフラグから領域管理情報の状態を判断して、所定のデータ処理を行う。
【００１９】
なお、本発明が適用されるシステムに用いられるデータ処理装置は、メモリカード２０等の外部記憶装置との間でデータのやり取りが可能なものであれば特に限定されるものではなく、パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ等の種々のデータ処理装置が適用可能である。
【００２０】
このシステム１において、データ処理装置１０とメモリカード２０とは、シリアルインターフェースによって接続されており、具体的には、少なくとも３本のデータ線ＳＣＬＫ，Ｓｔａｔｅ，ＤＩＯによって接続される。すなわち、データ処理装置１０とメモリカード２０とは、少なくとも、データ伝送時にクロック信号を伝送するための第１のデータ線ＳＣＬＫと、データ伝送時に必要なステータス信号を伝送するための第２のデータ線Ｓｔａｔｅと、メモリカード２０に書き込むデータ又はメモリカード２０から読み出すデータをシリアルに伝送する第３のデータ線ＤＩＯとによって接続され、これらを介して、データ処理装置１０とメモリカード２０との間でデータのやり取りを行う。
【００２１】
データ処理装置１０とメモリカード２０との間でのデータのやり取りは、通常、ヘッダーと実データとから構成されるファイル単位で行われる。なお、ファイルのヘッダーには、例えば、ファイルにアクセスするための情報や、データ処理装置１０で実行されるプログラムで必要とされる情報等が格納される。
【００２２】
メモリカード２０は、図２に示すように、所定のデータや管理情報を記憶するフラッシュメモリ２１と、データ処理装置１０との間でデータのやり取りをするためのシリアル／パラレル・パラレル／シリアル・インターフェース回路（以下、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２という。）と、フラッシュメモリ２１とＳ／Ｐ・Ｐ／Ｓインターフェース回路２２間に設けられ、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２から供給されたデータや管理情報を一時的に記憶するレジスタ２３と、このレジスタ２３に接続され、レジスタ２３に書き込まれたデータやデータ管理情報にエラーがある場合にエラー訂正符号に基づいてエラーを訂正するＥＣＣ回路２４と、レジスタ２３とフラッシュメモリ２１間に設けられ、レジスタ２３から読み出された領域管理情報をこの領域管理情報に冗長データが付加されてなる情報（本明細書においては、領域管理フラグと称する。）に変換し、又はフラッシュメモリ２１から読み出された領域管理フラグを領域管理情報に変換する変換部２５と、この変換部２５に接続され、フラッシュメモリ２１から読み出された領域管理フラグに所定のエラーがある場合にこの領域管理フラグのエラーを訂正するエラー訂正処理部２６と、フラッシュメモリ２１、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２、レジスタ２３、変換部２５のそれぞれに接続され、これらの処理動作を制御する制御部２７とを備えている。
【００２３】
Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２は、少なくとも上述した３本のデータ線ＳＣＬＫ，Ｓｔａｔｅ，ＤＩＯを介して、データ処理装置１０のシリアルインターフェース回路１２に接続され、これらのデータ線ＳＣＬＫ，Ｓｔａｔｅ，ＤＩＯを介して、データ処理装置１０との間でデータのやり取りを行う。Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２は、データ処理装置１０のシリアルインターフェース回路１２から送られてきたシリアルデータをパラレルデータに変換して、レジスタ２３に書き込む。また、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２は、レジスタ２３から読み出されたパラレルデータをシリアルデータに変換して、データ処理装置１０のシリアルインターフェース回路１２へ送出する。
【００２４】
このＳ／Ｐ・Ｐ／Ｓインターフェース回路２２とデータ処理装置１０との間でのシリアルデータの伝送は、第１のデータ線ＳＣＬＫによってデータ処理装置１０から送られてくるクロック信号によって同期を取りながら、第３のデータ線ＤＩＯによって行われる。このとき、第３のデータ線ＤＩＯによってやり取りされるシリアルデータのデータ種別は、第２のデータ線Ｓｔａｔｅによって伝送されるステータス信号によって判別される。ここで、シリアルデータの種別には、例えば、フラッシュメモリ２１に記憶させるべきデータ、フラッシュメモリ２１から読み出されたデータ、又はこのメモリカード２０の動作を制御するための制御データ等がある。
【００２５】
また、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２は、データ処理装置１０から送られてきたデータが書き込み命令や読み出し命令等の制御データである場合には、当該制御データを制御部２７に供給する。
【００２６】
レジスタ２３は、フラッシュメモリ２１とＳ／Ｐ・Ｐ／Ｓインターフェース回路２２間でやり取りされるデータを一時的に記憶する。
【００２７】
ＥＣＣ回路２４は、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２によりレジスタ２３に書き込まれたデータにエラー訂正符号を付加する。また、ＥＣＣ回路２４は、フラッシュメモリから読み出されレジスタ２３に書き込まれたデータにエラー訂正処理を施す。
【００２８】
変換部２５は、レジスタ２３から読み出された管理情報のうち領域管理情報をこの領域管理情報に冗長データが付加されてなる領域管理フラグに変換する。また、変換部２５は、フラッシュメモリ２１から読み出された領域管理フラグを領域管理情報に変換する。
【００２９】
エラー訂正処理部２６は、フラッシュメモリ２１から読み出され、変換部２５に供給された領域管理フラグに、例えば１ビットのエラーが生じていた場合に、この領域管理フラグのエラーを訂正する。このように、エラー訂正処理部２６は、例えば１ビットのエラーについては訂正処理を行うといったように、エラー訂正可能な範囲が予め設定されている。したがって、エラーが生じた領域管理フラグには、このエラー訂正処理部２６によってエラー訂正が可能なものと、エラー訂正が不可能なものとがある。このため、変換部２５により領域管理フラグから変換された領域管理情報は、エラーが生じていない領域管理情報と、エラー訂正をした領域管理情報と、エラーが生じているが訂正が不可能な領域管理情報の３種類の領域管理情報に分けられることになる。
【００３０】
制御部２７は、このＳ／Ｐ・Ｐ／Ｓインターフェース回路２２から供給された制御データに基づいてメモリカード２０の動作を制御する。すなわち、この制御部２７は、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２から供給された書き込み命令に基づいて、レジスタ２３に一時的に書き込まれたデータや管理情報をレジスタ２３から読み出して、フラッシュメモリ２１に記憶させる。この際、制御部２７は、管理情報のうち領域管理情報については、先ず変換部２５に供給し、この変換部２５にて領域管理フラグに変換させてからフラッシュメモリ２１に記憶させる。
【００３１】
また、制御部２７は、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２から供給された読み出し命令に基づいて、フラッシュメモリ２１からデータや管理情報を読み出してレジスタ２３に書き込む。この際、制御部２７は、フラッシュメモリ２１から読み出した管理情報のうち領域管理フラグについては、先ず変換部２５に供給し、この変換部２５にて領域管理情報に変換させてからレジスタ２３に書き込む。このとき、制御部２７は、変換部２５にて変換された領域管理情報が、上述したエラーが生じていない領域管理情報であるか、エラー訂正をした領域管理情報であるか、エラーが生じているが訂正が不可能な領域管理情報であるかを判別するためのフラグをこの領域管理情報に付加してレジスタ２３に書き込む。
【００３２】
なお、この制御部２７には、誤消去防止スイッチ２８が接続されている。そして、この誤消去防止スイッチ２８がオンになっているときには、フラッシュメモリ２１に記憶されているデータを消去するように指示する制御データがデータ処理装置１０から送られてきたとしても、制御部２７は、フラッシュメモリ２１に記憶されているデータを消去するような制御を行わない。すなわち、このメモリカード２０は、誤消去防止スイッチ２８によって、フラッシュメモリ２１に記憶されているデータの消去が行えない状態と、フラッシュメモリ２１に記憶されているデータの消去が行える状態とを切り換えることが可能となっている。
【００３３】
以上のようなメモリカード２０に対して、データ処理装置１０から記憶させるべきデータや管理情報、書き込み命令等がシリアルデータとして送られてくると、先ず、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２がこれらのデータをパラレルデータに変換して、書き込み命令を制御部２７に供給するとともに、制御部２７の制御に基づいて、所定のデータや管理情報をレジスタ２３に書き込む。
【００３４】
ここで、レジスタ２３に書き込まれた所定のデータや管理情報には、ＥＣＣ回路２４により、領域管理情報以外を対象としたエラー訂正符号が付加される。
【００３５】
そして、制御部２７が、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２から供給された書き込み命令に基づいて、レジスタ２３から所定のデータや管理情報を読み出して、フラッシュメモリ２１に書き込む処理を行う。この際、制御部２７は、レジスタ２３から読み出した管理情報のうち領域管理情報を先ず変換部２５に供給する。変換部２５に供給された領域管理情報は、この変換部２５により領域管理フラグに変換される。そして、制御部２７は、この変換部２５により変換された領域管理フラグをフラッシュメモリ２１に書き込む。
【００３６】
また、このメモリカード２０は、データ処理装置１０から読み出し命令が送られてくると、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２が、この読み出し命令を制御部２７に供給する。
【００３７】
そして、制御部２７が、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２から供給された読み出し命令に基づいて、フラッシュメモリ２１からデータや管理情報を読み出して、レジスタ２３に書き込む。この際、制御部２７は、フラッシュメモリ２１から読み出した領域管理フラグを先ず変換部２５に供給する。変換部２５に供給された領域管理フラグは、この変換部２５により領域管理情報に変換される。このとき、制御部２７は、領域管理フラグにエラー訂正処理部２６で訂正が可能なエラーがある場合は、この領域管理フラグをエラー訂正処理部２６に供給する。そして、制御部２７は、エラー訂正処理部２６にてエラー訂正が行われた領域管理情報に、エラー訂正を行ったことを示すフラグを付加して、レジスタ２３に書き込む。
【００３８】
レジスタ２３に書き込まれたデータや管理情報のうちのデータ管理情報にエラーがある場合は、このレジスタ２３に接続されたＥＣＣ回路２４にてエラー訂正符号に基づいてエラー訂正が行われる。
【００３９】
そして、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２が、制御部２７の制御に基づいてレジスタ２３からこれら所定のデータや管理情報等を読み出してシリアルデータに変換し、データ処理装置１０に送出する。
【００４０】
なお、以上は領域管理情報にエラー訂正を行った場合に、この領域管理情報にエラー訂正を行ったことを示すフラグを付加する例について説明したが、データやデータ管理情報にエラー訂正を行った場合にも、これらにエラー訂正を行ったことを示すフラグを付加するようにしてもよい。
【００４１】
また、以上はメモリカード２０にＥＣＣ回路２４が設けられ、メモリカード２０内でデータやデータ管理情報のエラー訂正を行うシステムについて説明したが、本発明はデータ処理装置がエラー訂正回路を備え、データ処理装置側でデータやデータ管理情報のエラー訂正を行うシステムに対しても適用可能である。この場合、データにエラー訂正符号が付加された状態で、データ処理装置１０とメモリカード２０との間のデータのやり取りが行われる。
【００４２】
ここで、上述したメモリカード２０に搭載されるフラッシュメモリ２１の記憶領域の構造について説明する。
【００４３】
このフラッシュメモリ２１の記憶領域は、記憶単位である多数のセルから構成され、図３（ａ）に示すように、データの消去単位となる複数のブロックに分割されている。なお、これらのブロックには、このメモリカード２０が起動されたときにデータ処理装置１０によって最初に読み込まれるデータであるブートデータが格納されるブートブロックと、任意のデータが書き込まれるデータブロックとがある。そして、これらの各ブロックには、それぞれ固有の物理アドレスが付けられている。
【００４４】
これらのブロックは、データの消去単位であると同時に、ファイル管理上の最小単位でもある。すなわち、ファイルは１つ又は複数のブロックに格納され、１つのブロックを複数のファイルで利用することはできないようになされている。
【００４５】
これら各ブロックは複数のセルからなり、これら各セルに「１」又は「０」を示す２つの状態を取り得る情報、すなわち１ビットの情報が記憶される。
【００４６】
そして、各ブロックは、初期状態では、全てのビットが「１」とされており、ビット単位での変更は「１」から「０」への変更のみが可能とされている。したがって、フラッシュメモリ２１に「１」及び「０」からなるデータを書き込む際は、「１」については該当するビットをそのまま保持し、「０」については該当するビットを「１」から「０」に変更してデータの書き込みを行う。
【００４７】
また、一度書き込んだデータをフラッシュメモリ２１から消去する際は、ブロック単位で一括して初期化処理を行い、当該ブロックの全ビットを「１」とする。これにより、当該ブロックに書き込まれたデータは一括消去され、このブロックは再びデータ書き込みが可能な状態とされる。
【００４８】
また、フラッシュメモリ２１の各ブロックは、図３（ｂ）に示すように、データの書き込みや読み出しの単位となる複数のページから構成される。このページは、例えば５１２バイトの記憶容量を有する記憶単位であり、フラッシュメモリ２１にデータを書き込む際は、このページ単位でレジスタ２３から読み出されたデータが、制御部２５によりページ単位でフラッシュメモリ２１に書き込まれる。また、このフラッシュメモリ２１からデータを読み出す際は、制御部２５によりフラッシュメモリ２１からデータがページ毎に読み出され、レジスタ２３に供給される。
【００４９】
データの書き込みや読み出しの単位となるページは、データ記憶領域と管理情報記憶領域とを有している。ここで、データ記憶領域とは、任意のデータが書き込まれる領域をいい、管理情報記憶領域とは、データ記憶領域に書き込まれるデータの管理に必要な情報（管理情報）が格納される領域をいう。
【００５０】
管理情報記憶領域は、１６バイトの領域を有し、このうち最初の３バイトが、ブロック単位で一括して初期化処理を行うことなく情報を書き換えることができるオーバーライト領域に設定されている。そして、管理情報記憶領域は、残りの１３バイトが、情報を書き換える際はブロック単位で一括して初期化処理を行う通常領域に設定されている。
【００５１】
そして、ブロックを構成する各ページの管理情報記憶領域に、管理情報が格納される。具体的には、図３（ｃ）に示すように、各ブロックの先頭ページの管理情報記憶領域には、このブロックを管理するために必要な情報として、いわゆる分散管理情報が格納される。また、各ブロックの２ページ目以降の各ページの管理情報記憶領域にも、予備の分散管理情報として、先頭ページの管理情報記憶領域に格納された分散管理情報と同じ管理情報が記憶される。ただし、各ブロックの最終ページの管理情報記憶領域には、分散管理情報だけでは不足する情報を補う、いわゆる追加管理情報が格納される。
【００５２】
このように、メモリカード２０に搭載されるフラッシュメモリ２１では、各ブロック内の管理情報記憶領域に、それぞれのブロックを管理するための分散管理情報が格納され、この分散管理情報により、例えば当該ブロックがファイルの先頭となるブロックであるか否かについての情報や、複数のブロックからファイルが構成される場合にはそれらのブロックの繋がりを示す情報等を得ることができる。
【００５３】
そして、このメモリカード２０は、各ブロックの分散管理情報を集めることにより、フラッシュメモリ２１全体を管理するための情報として、いわゆる集合管理情報を作成して、この集合管理情報を一つのファイルとしてフラッシュメモリ２１に格納するようにしている。
【００５４】
そして、データ処理装置１０とメモリカード２０間でデータのやり取りを行う場合、データ処理装置１０は、通常、フラッシュメモリ２１からこの集合管理情報を読み出して、各ブロックにアクセスするために必要な情報を得るようにしている。これにより、データアクセスのたびに個々のブロックに格納された分散管理情報にアクセスする必要がなくなり、より高速なデータアクセスが可能となる。
【００５５】
次に、分散管理情報、追加管理情報、集合管理情報について、更に詳細に説明する。
【００５６】
分散管理情報は、各ページ毎に設けられた１６バイトの管理情報記憶領域に格納された、ブロックを管理するための管理情報である。そして、この分散管理情報は、例えば図４に示すように、１バイトの可／不可フラグと、１バイトのブロックフラグと、４ビットの最終フラグと、４ビットの参照フラグと、１バイトの管理フラグと、２バイトの論理アドレスと、２バイトの連結アドレスと、２バイトの分散管理情報用エラー訂正符号と、３バイトのデータ用エラー訂正符号とからなり、これらの情報のうち、可／不可フラグ、ブロックフラグ、最終フラグ、参照フラグが、管理情報記憶領域の最初の３バイトのオーバーライト領域に格納される。
【００５７】
また、管理情報記憶領域の１３バイトの通常領域に、管理フラグと論理アドレスと連結アドレスとリザーブ領域と分散管理情報用エラー訂正符号とデータ用エラー訂正符号とが格納される。そして、通常領域の残りの３バイトは、リザーブ領域とされる。
【００５８】
可／不可フラグは、ブロックが使用可能な状態か使用不可能な状態かを示すフラグである。すなわち、ブロック内に回復不可能なエラーが生じたようなときは、この可／不可フラグによって、当該ブロックが使用不可能な状態であることが示される。
【００５９】
ブロックフラグは、ブロックの使用状態を示すフラグであり、具体的には、「未使用」、「先頭使用」、「使用」、「未消去」の４つの状態を示すフラグである。「未使用」は、当該ブロックが未使用又は消去済みで初期状態（全ビットが「１」の状態）とされており、すぐにデータの書き込みが可能な状態を示す。「先頭使用」は、当該ブロックがファイルの先頭で使用されている状態を示す。「使用」は、当該ブロックがファイルの先頭以外で使用されている状態を示す。したがって、ブロックフラグが「使用」のとき、当該ブロックは他のブロックから連結されていることとなる。「未消去」は、当該ブロックに書かれていたデータが不要となった状態を示す。なお、ブートデータが格納されたブートブロックにおいて、ブロックフラグは「先頭使用」とされる。
【００６０】
このメモリカード２０においては、ブロック内に記憶された不要なデータを消去する場合に、まずブロックフラグを「未消去」の状態にしておき、処理時間に余裕があるときに、ブロックフラグが「未消去」になっているブロックを消去するようにしている。これにより、メモリカード２０は、データの消去の処理をより効率よく行うことが可能となる。
【００６１】
最終フラグは、ファイルが当該ブロックで終わっているか否かを示すフラグであり、具体的には、「ブロック連続」、「ブロック最終」の２つの状態を示すフラグである。「ブロック連続」は、当該ブロックに記憶されたファイルにはまだ続きがあり、他のブロックに続いていることを示す。「ブロック最終」は、当該ブロックに記憶されたファイルは、このブロックで終了していることを示す。
【００６２】
参照フラグは、追加管理情報の参照を指示するためのフラグであり、具体的には、「参照情報なし」、「参照情報あり」の２つの状態を示すフラグである。「参照情報なし」は、ブロックの最終ページの管理情報記憶領域に有効な追加管理情報が存在しないことを示す。「参照情報あり」は、ブロックの最終ページの管理情報記憶領域に有効な追加管理情報が存在することを示す。
【００６３】
管理フラグは、ブロックの属性等を示すフラグであり、例えば当該ブロックが読み出し専用のブロックか、あるいは書き込みも可能なブロックか等の属性を示す。また、例えば、この管理フラグによって、当該ブロックがブートブロックであるか、或いはデータブロックであるかが示される。
【００６４】
論理アドレスは、当該ブロックの論理アドレスを示す。この論理アドレスの値は、データの書換を行うとき等に必要に応じて更新される。なお、この論理アドレスの値は、同じ論理アドレスの値を同時に複数のブロックが持つことがないように設定されている。
【００６５】
連結アドレスは、当該ブロックに連結する他のブロックの論理アドレスを示す。すなわち、当該ブロックに記憶されたファイルが他のブロックに続いている場合に、連結アドレスは、そのファイルの続きが記憶されたブロックの論理アドレスの値を示す。
【００６６】
分散管理情報用エラー訂正符号は、分散管理情報のうち、管理フラグ、論理アドレス、連結アドレス及びリザーブ領域に書き込まれたデータを対象としたエラー訂正符号である。
【００６７】
データ用エラー訂正符号は、このデータ用エラー訂正符号が書き込まれたページのデータ記憶領域に記憶されたデータを対象としたエラー訂正符号である。
【００６８】
ところで、上述した分散管理情報のうち、可／不可フラグ、ブロックフラグ、最終フラグ、参照フラグは、データ記憶領域の状態を管理するための情報（領域管理情報）であり、データから独立して書き換える必要が生じる場合があるので、上述した分散管理情報用エラー訂正符号の対象から外し、それぞれの情報を示す符号と同一符号の所定量の冗長データが付加されてなるフラグ（領域管理フラグ）として管理情報記憶領域に格納されることにより、エラー対策がなされている。
【００６９】
具体的には、これらの領域管理情報は、変換部２５により、冗長データが付加された領域管理フラグに変換されて、例えば図５に示すように、１ビットの情報については４ビットの情報として、２ビットの情報については８ビットの情報として管理情報記憶領域のオバーライト領域に格納される。
【００７０】
すなわち、可／不可フラグは、ブロックが使用可能な状態である場合は１ビットの情報「１」で示され、ブロックが使用不可能な状態である場合は１ビットの情報「０」で示される。そして、この可／不可フラグは、管理情報記憶領域に格納されるときは、冗長データが付加されて、例えば１バイトの情報「１１１１  １１１１」又は「００００  ００００」に変換されて格納される。
【００７１】
また、ブロックフラグは、ブロックが「未使用」の場合には２ビットの情報「１１」で示され、ブロックが「先頭使用」の場合には２ビットの情報「１０」で示され、ブロックが「使用」の場合には２ビットの情報「０１」で示され、ブロックが「未消去」の場合には２ビットの情報「００」で示される。そして、このブロックフラグは、管理情報記憶領域に格納されるときは、冗長データが付加されて、例えば１バイトの情報「１１１１  １１１１」又は「１１１１  ００００」又は「００００  １１１１」又は「００００  ００００」に変換されて格納される。
【００７２】
また、最終フラグは、「ブロック連続」の場合は１ビットの情報「１」で示され、「ブロック最終」の場合には１ビットの情報「０」で示される。そして、この最終フラグは、管理情報記憶領域に格納されるときは、冗長データが付加されて、例えば４ビットの情報「１１１１」又は「００００」に変換されて格納される。
【００７３】
また、参照フラグは、「参照情報なし」の場合は１ビットの情報「１」で示され、「参照情報あり」の場合は１ビットの情報「０」で示される。そして、この参照フラグは、管理情報記憶領域に格納されるときは、例えば４ビットの情報「１１１１」又は「００００」に変換されて格納される。
【００７４】
これら領域管理情報は、以上のように冗長データが付加された領域管理フラグとして管理情報記憶領域に格納されることにより、例えば当該フラグが格納されたセルが故障して１ビットのエラーが生じた場合であっても、例えば領域管理フラグの「１」と「０」の数を比較することにより元の領域管理情報が認識される。
【００７５】
追加管理情報は、ブロックの最終ページの１６バイトの管理情報記憶領域に格納される情報であり、分散管理情報だけでは不足する情報を補う追加情報を含んでいる。
【００７６】
この追加管理情報は、具体的には、例えば図６に示すように、１バイトの可／不可フラグと、１バイトのブロックフラグと、４ビットの最終フラグと、４ビットの参照フラグと、１バイトの識別番号と、２バイトの有効データサイズと、２バイトの追加管理情報用エラー訂正符号と、３バイトのデータ用エラー訂正符号とからなる。
【００７７】
ここで、領域管理フラグである可／不可フラグ、ブロックフラグ、最終フラグ、参照フラグとデータ用エラー訂正符号については、分散管理情報の場合と同様である。また、追加情報用エラー訂正符号は、分散管理情報における分散管理情報用エラー訂正符号に相当するものであり、追加管理情報のうち領域管理フラグを除いた識別番号、有効データサイズ及びリザーブ領域に書き込まれたデータを対象としたエラー訂正符号である。
【００７８】
そして、識別番号及び有効データサイズとが、分散管理情報の不足分を補う追加情報として、追加管理情報に含まれている。
【００７９】
そして、追加管理情報も分散管理情報と同様に、領域管理情報である可／不可フラグ、ブロックフラグ、最終フラグ、参照フラグが、冗長データが付加された領域管理フラグとして、管理情報記憶領域の最初の３バイトのオーバーライト領域に格納される。
【００８０】
また、管理情報記憶領域の１３バイトの通常領域に、識別番号と有効データサイズと追加管理情報用エラー訂正符号とデータ用エラー訂正符号とが格納される。そして、通常領域の残りの５バイトは、リザーブ領域とされる。
【００８１】
識別番号は、エラー処理用の情報であり、ブロックのデータを書き換えるたびに、識別番号の値がインクリメントされる。この識別番号は、何らかのエラーが発生して、同じ論理アドレスを持つブロックが複数存在するようになってしまった場合に、それらのブロックに書き込まれたデータの新旧を識別するために使用される。なお、識別番号には１バイトの領域が使用され、その値の範囲は「０」から「２５５」まであり、その初期値（すなわち、新しい論理アドレスを使用するときに最初に設定される識別番号の値）は、「０」とされる。なお、識別番号が「２５５」を越えたときには「０」に戻るものとする。そして、同じ論理番号を持つブロックが複数存在する場合には、この識別番号の値が小さい方のブロックを有効とする。ただし、ブートブロックについては、バックアップと同じ識別番号の場合を正常とし、異なる場合には大きい方を採用する。
【００８２】
有効データサイズは、ブロック内の有効なデータのサイズを示す。すなわち、当該ブロックのデータ記憶領域に空きがある場合、有効データサイズは、当該データ記憶領域に書き込まれたデータのサイズの値を示す。このとき、参照フラグは「参照情報あり」に設定される。なお、ブロックのデータ記憶領域に空きがない場合、有効データサイズは当該ブロックのデータ領域に空きがないことを示す情報として「０ｘｆｆｆｆ」に設定される。
【００８３】
なお、以上説明した分散管理情報及び追加管理情報は、ブロック内のデータが更新される毎に、常に最新情報となるように更新される。
【００８４】
集合管理情報は、上述したように、各ブロックの分散管理情報を集めて作成される情報であり、ファイルとしてフラッシュメモリ２１に格納される。すなわち、図７に示すように、各ブロックの分散管理情報から、全ブロックをまとめて管理するための情報である集合管理情報のファイルが作成され、この集合管理情報が所定のブロックのデータ記憶領域に格納される。なお、集合管理情報は、１つのブロックに格納されるものであっても、複数のブロックにわたって格納されるものであってもよい。そして、データ処理装置１０は、通常は、この集合管理情報によって、各ブロックにアクセスするために必要な情報を得るようにする。
【００８５】
すなわち、メモリカード２０に有効な集合管理情報がファイルとして格納されている場合、データ処理装置１０は、その集合管理情報のファイルを読み出して、メモリカード２０を管理するための管理テーブルを作成する。なお、集合管理情報のファイルの先頭が格納されているブロックの物理アドレスは、ブートデータに含まれており、データ処理装置１０は、この物理アドレスに基づいて集合管理情報のファイルにアクセスする。
【００８６】
次に、以上のようなフラッシュメモリ２１を備えたメモリカード２０について、フラッシュメモリ２１から読み出した管理情報をデータ処理装置１０に伝送する処理の一例について、図８を参照して説明する。なお、この図８に示すデータ処理は、領域管理情報を４ビット単位の領域管理フラグに変換してフラッシュメモリ２１に記憶させた場合の例であり、本発明を適用したメモリカードにおけるデータ処理はこの例に限定されるものではない。また、この図８に示すデータ処理は、領域管理情報に対してエラー訂正を行った場合に、この領域管理情報にエラー訂正を行ったことを示すフラグを付加して伝送する例であり、本発明を適用したメモリカードにおけるデータ処理は、さらにデータ管理情報に対してエラー訂正を行った場合に、このデータ管理情報にエラー訂正を行ったことを示すフラグを付加して伝送するようにしてもよい。
【００８７】
メモリカード２０は、管理情報をフラッシュメモリ２１から読み出してデータ処理装置１０に伝送する場合は、まず、ステップＳ１１において、制御部２７により、フラッシュメモリ２１から領域管理フラグが読み出される。
【００８８】
そして、ステップＳ１２において、制御部２７により、すべての領域管理フラグが４ビット単位でチェックされ、この領域管理フラグが１１１１又は００００になっているかが判断される。
【００８９】
この領域管理フラグが１１１１又は００００となっている場合は、ステップＳ１３に進む。そして、ステップＳ１３において、変換部２５により、領域管理フラグが領域管理情報に変換され、エラーが生じていない領域管理情報であることを示すフラグを付加し、ステップＳ１６に進む。
【００９０】
領域管理フラグが１１１１又は００００となっていない場合は、ステップＳ１４に進む。そして、ステップＳ１４において、制御部２７により、領域管理フラグが１１１０、１１０１、１０１１、０１１１のいずれかとなっているか又は０００１、００１０、０１００、１０００のいずれかとなっているかがチェックされる。
【００９１】
領域管理フラグが１１１０、１１０１、１０１１、０１１１又は０００１、００１０、０１００、１０００のいずれでもないと判断された場合は、エラーが生じているが訂正が不可能な領域管理情報であることを示すフラグを付加し、エラー処理がなされる。
【００９２】
領域管理フラグが１１１０、１１０１、１０１１、０１１１のいずれか又は０００１、００１０、０１００、１０００のいずれかとなっていると判断された場合は、ステップＳ１５に進み、ステップＳ１５において、変換部２５により、領域管理フラグが領域管理情報に変換され、制御部２７により、この領域管理情報にエラー訂正をしたことを示すフラグが付加され、ステップＳ１６に進む。
【００９３】
ステップＳ１６においては、データ管理情報がチェックされ、エラーがあるか否かが判断される。
【００９４】
データ管理情報にエラーがないと判断された場合は、ステップＳ１８に進む。
【００９５】
データ管理情報にエラーがあると判断された場合は、そのエラーが訂正可能なものかどうかが判断され、訂正不可能なものであると判断された場合は、エラー処理がなされる。また、データ管理情報のエラーが訂正可能なものであると判断された場合は、ステップＳ１７に進み、ステップＳ１７において、ＥＣＣ回路２４により、エラー訂正処理がなされ、ステップＳ１８に進む。
【００９６】
ステップＳ１８においては、Ｓ／Ｐ・Ｐ／Ｓインターフェース回路２２により、領域管理情報及びデータ管理情報がステータス信号とともにデータ処理装置１０に伝送される。
【００９７】
次に、データ処理装置１０がメモリカード２０より伝送されたデータ及び管理情報を読み込んで、これらに所定の処理を行う動作の一例について、図９を参照して説明する。なお、この図９に示すデータ処理装置によるデータ処理は、メモリカード１０より伝送された領域管理情報にエラー訂正を行ったことを示すフラグが付加されていた場合に、このフラグに基づいて所定の処理を行う例であり、本発明を適用したデータ処理装置におけるデータ処理は、さらにデータ管理情報にエラー訂正を行ったことを示すフラグが付加されていた場合に、このフラグに基づいて所定のデータ処理を行うようにしてもよい。
【００９８】
また、この図９に示すデータ処理装置によるデータ処理は、読み込んだブロックの領域管理情報にエラー訂正を行ったことを示すフラグが付加されていた場合に、このブロックを他のブロックに書き換える処理を行うようにした例であり、本発明を適用したデータ処理装置におけるデータ処理は、この例に限定されるものではなく、領域管理情報にエラー訂正を行ったことを示すフラグが付加されていた場合に、この情報に基づいて所定の処理を行うようにすればよい。
【００９９】
データ処理装置１０は、メモリカード２０から伝送されたデータ及び管理情報に対して所定のデータ処理を行う際は、まずステップＳ２１において、シリアルインターフェース回路１２により指定ブロックの読み込み処理が行われる。そして、指定したブロックが正しく読み込めるかどうかの判断がなされる。指定したブロックが正しく読み込めないときは、ステップＳ２２に進み、ステップＳ２２において、制御部１４により、ブロック読み込みエラー処理がなされる。
【０１００】
指定したブロックが正しく読み込めたときは、更に読み込んだブロックの領域管理情報にエラー訂正を行ったことを示すフラグが付加されているかどうかの判断がなされる。そして、領域管理情報にエラー訂正を行ったことを示すフラグが付加されていないと判断されれば、ステップＳ２８に進み、ブロック読み込み正常処理がなされる。
【０１０１】
領域管理情報にエラー訂正を行ったことを示すフラグが付加されていると判断されれば、ステップＳ２３に進み、ステップＳ２３において、制御部１４によりブロック書き換えの条件及びブロック書き換えの状態のチェックが行われる。そして、ブロックの書き換えを行わないと判断されれば、ステップＳ２８に進み、ブロック読み込み正常処理がなされ、ブロックの書き換えを行うと判断されれば、ステップＳ２４に進み、ステップＳ２４において、制御部１４により、読み込んだブロックを他のブロックに書き換える処理がなされ、ステップＳ２５に進む。
【０１０２】
次に、ステップＳ２５において、制御部１４により、元のブロックの再利用の可能性がチェックされる。そして、元のブロックの再利用が不可能であると判断されると、ステップＳ２６に進み、ステップＳ２６において、制御部１４により、元のブロックに対し使用付加設定がなされ、ステップＳ２７に進む。
【０１０３】
元のブロックが再利用可能であると判断されると、そのままステップＳ２７に進み、ステップＳ２７において、制御部１４により、集合管理情報の更新が行われる。
【０１０４】
集合管理情報の更新が行われると、ステップＳ２８に進み、ステップＳ２８において、制御部１４により、ブロック読み込み正常処理がなされ、データ読み込み処理が終了する。
【０１０５】
以上説明したように、本発明を適用したシステム１は、メモリカード２０が、記憶した領域管理情報にエラー訂正を行った場合は、この領域管理情報にエラー訂正を行ったことを示すフラグを付加してデータをデータ処理装置１０に伝送し、データ処理装置１０が、メモリカード２０から伝送された領域管理情報にエラー訂正を行ったことを示すフラグが付加されているときは、このフラグに基づいて所定のデータ処理を行うようにしているので、例えば、エラー訂正を行った領域管理情報を有するブロックを他のブロックに書き換える等の処理を行い、データの信頼性を向上させることができる。
【０１０６】
【発明の効果】
本発明では、領域管理情報は、領域管理情報の各符号に対して、該各符号と同一符号の所定量の冗長データが付加されてなる領域管理フラグとして管理情報記憶領域に格納されることにより、エラー対策がなされ、これにより、データから独立して書き換えることができる。
また、本発明は、外部のデータ処理装置に伝送される際はエラーが生じていない領域管理情報であるか、エラー訂正をした領域管理情報か、エラーが生じているが訂正が不可能な領域管理情報であるかを判別するためのフラグが付加されるので、この記憶装置から出力された領域管理情報がエラー訂正を行った情報であるかを容易に判断することができる。
【図面の簡単な説明】
【図１】データ処理装置の構成を示すブロック図である。
【図２】メモリカードの構成を示すブロック図である。
【図３】フラッシュメモリの記憶領域の構造を示す模式図である。
【図４】分散管理情報を説明する模式図である。
【図５】領域管理フラグの一例を示す模式図である。
【図６】追加管理情報を説明する模式図である。
【図７】集合管理情報の構築を説明する模式図である。
【図８】メモリカードにおける領域管理情報の読み出し処理の一例を説明するフローチャートである。
【図９】データ処理装置におけるデータ処理の一例を説明するフローチャートである。
【符号の説明】
１  システム、  １０  データ処理装置、  １４  制御部、  ２０  メモリカード、  ２１  フラッシュメモリ、  ２５  変換部、  ２６  エラー訂正処理部、  ２７  制御部
【図１】
0003620478.tif 000002
【図２】
0003620478.tif 000003
【図３】
0003620478.tif 000004
【図４】
0003620478.tif 000005
【図５】
0003620478.tif 000006
【図６】
0003620478.tif 000007
【図７】
0003620478.tif 000008
【図８】
0003620478.tif 000009
【図９】
0003620478.tif 000010