(57)【特許請求の範囲】
【請求項１】
ＮＡＮＤ型のフラッシュメモリに情報を書き込むための書き込み装置であって、
書き込み対象の情報を前記フラッシュメモリに書き込む際、当該情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、当該読み出されたバックアップ情報を、前記書き込み対象の情報を書き込む領域とは異なる領域であって、前記バックアップ情報を書き込む専用の領域として定められた特定の領域であるバックアップ領域に、上書きにより書き込むバックアップ手段と、
前記バックアップ手段が前記バックアップ情報を前記バックアップ領域に書き込んだ後に、前記情報を前記書き込み先となるクラスタに書き込む書き込み手段と、
前記書き込み先となるクラスタを含む前記ブロックに含まれる情報が破壊された可能性がある場合、前記バックアップ手段によって書き込まれた前記バックアップ情報を前記バックアップ領域から読み出し、当該バックアップ情報に対応する前記ブロックに書き込む復旧手段と、
を備える書き込み装置。
【請求項２】
前記復旧手段は、
前記書き込み先となるクラスタへの前記書き込み手段による情報の書き込みが中断された場合、当該クラスタを含むブロックに含まれる情報が破壊された可能性があるものとする、
請求項１に記載の書き込み装置。
【請求項３】
前記バックアップ手段は、
前記書き込み先となるクラスタを含む前記ブロックを構成するクラスタのうち、使用されていないクラスタについては前記バックアップ情報を読み出さない、
請求項１又は２に記載の書き込み装置。
【請求項４】
前記バックアップ手段は、
前記書き込み先となるクラスタを含む前記ブロックを構成するクラスタのうち、一部のみが使用されているクラスタについては前記バックアップ情報を読み出す、
請求項１から３のいずれか一項に記載の書き込み装置。
【請求項５】
前記バックアップ領域は、前記フラッシュメモリに設けられている領域であって、当該フラッシュメモリに設けられている他の記憶領域よりも書き込み限度回数が多い領域である、
請求項１から４のいずれか一項に記載の書き込み装置。
【請求項６】
前記バックアップ領域は、前記フラッシュメモリとは異なる他の記憶手段に設けられている領域である、
請求項１から４のいずれか一項に記載の書き込み装置。
【請求項７】
前記バックアップ手段は、書き込み対象の情報を前記フラッシュメモリに書き込む際、前記書き込み対象の情報の書き込み先となるクラスタを含むブロックに記憶されている情報が、前記バックアップ情報として前記バックアップ領域に既に書き込まれているか否かを判断し、書き込まれている場合、新たに前記バックアップ情報の書き出しを行わず、
前記復旧手段は、前記書き込み先となるクラスタを含む前記ブロックに含まれる情報が破壊された可能性がある場合、前記バックアップ領域に既に書き込まれているバックアップ情報を前記バックアップ領域から読み出し、当該バックアップ情報に対応する前記ブロックに書き込む、
請求項１から６のいずれか一項に記載の書き込み装置。
【請求項８】
ＮＡＮＤ型のフラッシュメモリに情報を書き込むための書き込み方法であって、
書き込み対象の情報を前記フラッシュメモリに書き込む際、当該情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、当該読み出されたバックアップ情報を、前記書き込み対象の情報を書き込む領域とは異なる領域であって、前記バックアップ情報を書き込む専用の領域として定められた特定の領域であるバックアップ領域に、上書きにより書き込むバックアップステップと、
前記バックアップステップで前記バックアップ情報を前記バックアップ領域に書き込んだ後に、前記情報を前記書き込み先となるクラスタに書き込む書き込みステップと、
前記書き込み先となるクラスタを含む前記ブロックに含まれる情報が破壊された可能性がある場合、前記バックアップステップで書き込まれた前記バックアップ情報を前記バックアップ領域から読み出し、当該バックアップ情報に対応する前記ブロックに書き込む復旧ステップと、
を含む書き込み方法。
【請求項９】
請求項８に記載の方法をコンピュータに実行させる書き込みプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き込み装置、書き込み方法、及び書き込みプログラムに関する。
【背景技術】
【０００２】
従来、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）にデータを書き込む際、電源遮断やシステム異常などの障害に起因して、ＨＤＤに格納されているデータが破壊されたり、ＤＲＡＭに格納されているデータが消失する可能性があった。このような場合に、障害が発生した直前の状態までデータを復元するため、ＨＤＤ等に対して読み書きされるデータを一時的にバックアップする装置が提案されている。
【０００３】
例えば、磁気ディスク本体に対する書き込みデータを一時的に格納する不揮発性メモリを備え、障害発生の際にこの不揮発性メモリのデータを取り込むことにより磁気ディスク本体の書き込みデータを復旧する磁気ディスク装置が提案されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０４−２７３５１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、近年のＮＡＮＤ型のフラッシュメモリの大容量化・低価格化に伴い、音楽データ等の大容量のデータを記憶するための補助記憶装置として、ＮＡＮＤ型のフラッシュメモリが用いられつつある。このＮＡＮＤ型のフラッシュメモリの記憶領域は、複数の「ブロック」に分割されており、このブロック単位でデータが管理されている。このブロックは複数の「クラスタ」から構成されており、フラッシュメモリへのデータの読み書きはこのクラスタ単位で管理される。
【０００６】
図７は従来技術におけるフラッシュメモリへのデータの書き込みを例示した概念図であり、図７（ａ）はフラッシュメモリにおけるデータの書き込み位置を例示した図、図７（ｂ）はデータの書き込み中に障害が発生した場合を例示した図である。図７（ａ）に示すように、ブロックを構成するクラスタの一つにデータを書き込んでいる途中で電源遮断等の障害が発生した場合、図７（ｂ）に示すように、書き込み中のデータが破壊されるだけでなく、データが書き込まれるクラスタを含むブロックに格納されている他のデータも破壊される可能性があった。しかし、特許文献１の如き従来の装置では、書き込みデータのみが不揮発性メモリによってバックアップされているに過ぎないため、データが書き込まれるクラスタを含むブロックに格納されている他のデータが破壊された場合にはこれを復旧することは困難であった。
【０００７】
本発明は、上記に鑑みてなされたものであって、ＮＡＮＤ型のフラッシュメモリに対するデータの書き込みにおいて、電源遮断等の障害に起因してデータが書き込まれるクラスタを含むブロックに格納されている他のデータが破壊された場合であってもこれを復旧することができる、書き込み装置、書き込み方法、及び書き込みプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、請求項１に記載の書き込み装置は、ＮＡＮＤ型のフラッシュメモリに情報を書き込むための書き込み装置であって、書き込み対象の情報を前記フラッシュメモリに書き込む際、当該情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、当該読み出されたバックアップ情報を、前記書き込み対象の情報を書き込む領域とは異なる領域であって、前記バックアップ情報を書き込む専用の領域として定められた特定の領域であるバックアップ領域に、上書きにより書き込むバックアップ手段と、前記バックアップ手段が前記バックアップ情報を前記バックアップ領域に書き込んだ後に、前記情報を前記書き込み先となるクラスタに書き込む書き込み手段と、前記書き込み先となるクラスタを含む前記ブロックに含まれる情報が破壊された可能性がある場合、前記バックアップ手段によって書き込まれた前記バックアップ情報を前記バックアップ領域から読み出し、当該バックアップ情報に対応する前記ブロックに書き込む復旧手段と、を備える。
【０００９】
また、請求項２に記載の書き込み装置は、請求項１に記載の書き込み装置において、前記復旧手段は、前記書き込み先となるクラスタへの前記書き込み手段による情報の書き込みが中断された場合、当該クラスタを含むブロックに含まれる情報が破壊された可能性があるものとする。
【００１０】
また、請求項３に記載の書き込み装置は、請求項１又は２に記載の書き込み装置において、前記バックアップ手段は、前記書き込み先となるクラスタを含む前記ブロックを構成するクラスタのうち、使用されていないクラスタについては前記バックアップ情報を読み出さない。
【００１１】
また、請求項４に記載の書き込み装置は、請求項１から３のいずれか一項に記載の書き込み装置において、前記バックアップ手段は、前記書き込み先となるクラスタを含む前記ブロックを構成するクラスタのうち、一部のみが使用されているクラスタについては前記バックアップ情報を読み出す。
【００１２】
また、請求項５に記載の書き込み装置は、請求項１から４のいずれか一項に記載の書き込み装置において、前記バックアップ領域は、前記フラッシュメモリに設けられている領域であって、当該フラッシュメモリに設けられている他の記憶領域よりも書き込み限度回数が多い領域である。
【００１３】
また、請求項６に記載の書き込み装置は、請求項１から４のいずれか一項に記載の書き込み装置において、前記バックアップ領域は、前記フラッシュメモリとは異なる他の記憶手段に設けられている領域である。
また、請求項７に記載の書き込み装置は、請求項１から６のいずれか一項に記載の書き込み装置において、前記バックアップ手段は、書き込み対象の情報を前記フラッシュメモリに書き込む際、前記書き込み対象の情報の書き込み先となるクラスタを含むブロックに記憶されている情報が、前記バックアップ情報として前記バックアップ領域に既に書き込まれているか否かを判断し、書き込まれている場合、新たに前記バックアップ情報の書き出しを行わず、前記復旧手段は、前記書き込み先となるクラスタを含む前記ブロックに含まれる情報が破壊された可能性がある場合、前記バックアップ領域に既に書き込まれているバックアップ情報を前記バックアップ領域から読み出し、当該バックアップ情報に対応する前記ブロックに書き込む。
また、請求項８に記載の書き込み方法は、ＮＡＮＤ型のフラッシュメモリに情報を書き込むための書き込み方法であって、書き込み対象の情報を前記フラッシュメモリに書き込む際、当該情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、当該読み出されたバックアップ情報を、前記書き込み対象の情報を書き込む領域とは異なる領域であって、前記バックアップ情報を書き込む専用の領域として定められた特定の領域であるバックアップ領域に、上書きにより書き込むバックアップステップと、前記バックアップステップで前記バックアップ情報を前記バックアップ領域に書き込んだ後に、前記情報を前記書き込み先となるクラスタに書き込む書き込みステップと、前記書き込み先となるクラスタを含む前記ブロックに含まれる情報が破壊された可能性がある場合、前記バックアップステップで書き込まれた前記バックアップ情報を前記バックアップ領域から読み出し、当該バックアップ情報に対応する前記ブロックに書き込む復旧ステップと、を含む。
また、請求項９に記載の書き込み方法は、請求項８に記載の方法をコンピュータに実行させる。
【発明の効果】
【００１４】
請求項１に記載の書き込み装置、請求項８に記載の書き込み方法、請求項９に記載の書き込みプログラムによれば、書き込み対象の情報をフラッシュメモリに書き込む際、当該書き込み対象の情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、バックアップ領域に書き込む。そして、書き込み対象の情報の書き込み先となったクラスタを含むブロックに含まれる情報が破壊された可能性がある場合、バックアップ手段によって書き込まれたバックアップ情報をバックアップ領域から読み出し、バックアップ情報に対応するブロックに書き込むので、電源遮断等の障害に起因して書き込み対象の情報が書き込まれるクラスタを含むブロックに格納されている他の情報が破壊された場合であっても、バックアップ情報に基づいてこれを復旧することができる。
【００１５】
請求項２に記載の書き込み装置によれば、書き込み先となるクラスタへの書き込み手段による書き込み対象の情報の書き込みが中断された場合、当該クラスタを含むブロックに含まれる情報が破壊された可能性があるものとするので、電源の遮断やリセット等によって情報の書き込みが中断され、情報が破壊された場合であっても、これを確実に復旧することができる。
【００１６】
請求項３に記載の書き込み装置によれば、書き込み対象の情報の書き込み先となるクラスタを含むブロックについて、そのブロックを構成するクラスタのうち、使用されていないクラスタについてはバックアップ情報を読み出さないので、バックアップに必要な情報だけをバックアップ処理において読み出すことができ、バックアップ情報の読み出しに要する時間を短縮することができる。
【００１７】
請求項５に記載の書き込み装置によれば、バックアップ領域は、フラッシュメモリに設けられている領域であって、当該フラッシュメモリに設けられている他の記憶領域よりも書き込み限度回数が多い領域であるので、バックアップ情報を繰り返しこのバックアップ領域に書き込むことができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態に係る書き込み装置を例示するブロック図である。
【図２】ヘッダ情報の内容を例示した表である。
【図３】バックアップ処理のフローチャートである。
【図４】バックアップ情報の読み出しを例示した概念図であり、（ａ）は書き込み対象の情報の書き込み先となるクラスタを含むブロックにおける情報の記憶状況を示した図、（ｂ）は読み出されたバックアップ情報の内容を示した図である。
【図５】バックアップ情報に基づいて作成したヘッダ情報を例示した概念図であり、（ａ）はバックアップ領域に書き込まれたバックアップ情報を示す図、（ｂ）はバックアップ情報に基づいて作成されたヘッダ情報を示す図である。
【図６】復旧処理のフローチャートである。
【図７】従来技術におけるフラッシュメモリへのデータの書き込みを例示した概念図であり、（ａ）はフラッシュメモリにおけるデータの書き込み位置を例示した図、（ｂ）はデータの書き込み中に障害が発生した場合を例示した図である。
【発明を実施するための形態】
【００１９】
以下、本発明に係る書き込み装置、書き込み方法、及び書き込みプログラムの実施の形態について図面を参照しつつ詳細に説明する。ただし、この実施の形態によって本発明が限定されるものではない。なお、書き込み装置の適用対象は任意で、例えばＮＡＮＤ型のフラッシュメモリを用いたメモリーカードのリーダライタに適用することができる。
【００２０】
（構成）
まず、実施の形態に係る書き込み装置の構成を説明する。図１は、実施の形態に係る書き込み装置を例示するブロック図である。書き込み装置１は、書き込み対象の情報をフラッシュメモリ２に書き込むための装置であって、図１に示すように、ＤＲＡＭ３、及び制御部４を備えている。
【００２１】
（構成−ＤＲＡＭ）
ＤＲＡＭ３は、書き込み装置１によるバックアップに関する情報が書き込まれる揮発性記録手段であり、公知のＤＲＡＭを用いることができる。具体的には、ＤＲＡＭ３には、書き込み装置１によってバックアップされた情報（以下、「バックアップ情報」）の正当性やバックアップの状態を特定するためのヘッダ情報が書き込まれる。図２は、ヘッダ情報の内容を例示した表である。図２に示すように、ヘッダ情報には、「マジックコード」、「ＣＩＤ／ＣＳＤ」、「ＬＢＡ」、「ブロックサイズ」、「チェックサム」、「ビットマップ」、「バックアップステータス」、及び「ヘッダのチェックサム」が含まれている。
【００２２】
「マジックコード」は、ヘッダ情報自体の正当性を確認するために用いられる情報であり、任意の値が設定される。「ＣＩＤ／ＣＳＤ」は、バックアップ対象のフラッシュメモリ２を一意に識別するための識別情報である。「ＬＢＡ」は、フラッシュメモリ２においてバックアップ対象の情報が記憶されていた位置を特定するための情報である。「ブロックサイズ」は、フラッシュメモリ２においてバックアップ対象の情報が記録されていたブロックのサイズを特定するための情報である。「チェックサム」は、バックアップ情報の誤り検出符号である。バックアップ情報が複数のクラスタに分割されてバックアップされた場合には、その分割されたクラスタ毎のチェックサムがヘッダ情報に含まれている。「ビットマップ」は、複数に分割されたバックアップ情報の各クラスタが使用されているか否かを特定するための情報である。このビットマップの詳細については後述する。「バックアップステータス」は、バックアップの状態を特定するための情報であり、バックアップ情報がないこと（以下、「未使用」）を示す「０」、破壊された情報の復旧に使用される可能性があるバックアップ情報があること（以下、「使用中」）を示す「１」、または破壊された情報の復旧に使用される可能性がないバックアップ情報があること（以下、「使用済み」）を示す「２」のいずれかの値が格納される。「ヘッダのチェックサム」は、ヘッダ情報の誤り検出符号である。
【００２３】
（構成−制御部）
制御部４は、書き込み装置１を制御する制御手段である。具体的には、ＣＰＵ、当該ＣＰＵ上で解釈実行される各種のプログラム（ＯＳなどの基本制御プログラムや、ＯＳ上で起動され特定機能を実現するアプリケーションプログラムを含む）、及びプログラムや各種のデータを格納するためのＲＡＭの如き内部メモリを備えて構成されるコンピュータである。特に、実施の形態に係る書き込みプログラムは、任意の記録媒体又はネットワークを介して書き込み装置１にインストールされることで、制御部４の各部を実質的に構成する。
【００２４】
この制御部４は、機能概念的に、バックアップ部４ａ、書き込み部４ｂ、及び復旧部４ｃを備えている。バックアップ部４ａは、書き込み対象の情報の書き込み先となるクラスタを含むブロックに記憶されている情報をバックアップ情報として読み出し、所定のバックアップ領域に書き込むバックアップ手段である。書き込み部４ｂは、書き込み対象の情報を書き込み先となるクラスタに書き込む書き込み手段である。復旧部４ｃは、バックアップ情報をバックアップ領域から読み出し、そのバックアップ情報に対応するブロックに書き込む復旧手段である。これらの制御部４の各構成要素によって実行される処理の詳細については後述する。
【００２５】
（構成−フラッシュメモリ）
フラッシュメモリ２は、書き込み装置１による情報の書き込み先となる記憶手段であり、ＮＡＮＤ型のフラッシュメモリが用いられる。このフラッシュメモリ２の記憶領域は複数のブロックに分割されており、さらにこのブロックは複数のクラスタによって構成されている。また、記憶領域の一部にはバックアップ情報が書き込まれるバックアップ領域が設けられている。このバックアップ領域は、他の記憶領域よりも書き込み限度回数が多い領域である。従って、バックアップ情報を繰り返しこのバックアップ領域に書き込むことが可能である。
【００２６】
（処理）
次に、このように構成される書き込み装置１によって実行される処理について説明する。書き込み装置１によって実行される処理は、フラッシュメモリ２に格納されている情報のバックアップを行うバックアップ処理と、情報が破壊された可能性がある場合にこれを復旧する復旧処理とに大別される。これらの処理について、以下説明する。
【００２７】
（処理−バックアップ処理）
まず、バックアップ処理について説明する。図３はバックアップ処理のフローチャートである（以下の各処理の説明ではステップを「Ｓ」と略記する）。このバックアップ処理は、フラッシュメモリ２に格納されている情報をバックアップするための処理であり、例えば書き込み装置１に対してフラッシュメモリ２への情報の書き込み要求がされた場合に起動される。
【００２８】
バックアップ処理の起動後、バックアップ部４ａは、書き込み対象の情報の書き込み先となるクラスタを含むブロックを特定する（ＳＡ１）。
【００２９】
続いてバックアップ部４ａは、ＤＲＡＭ３に書き込まれているヘッダ情報に含まれる「ＬＢＡ」を参照し、フラッシュメモリ２のバックアップ領域に書き込まれている既存のバックアップ情報によってバックアップされた情報がフラッシュメモリ２において記憶されていたブロックを特定する（ＳＡ２）。
【００３０】
バックアップ部４ａは、ＳＡ１で特定したブロックとＳＡ２で特定したブロックが同一か否かを判定する（ＳＡ３）。その結果、両ブロックが同一の場合（ＳＡ３、Ｙｅｓ）、バックアップ部４ａはヘッダ情報が正当か否かを判定する（ＳＡ４）。ヘッダ情報が正当か否かの判定基準は任意で、例えば、ヘッダ情報に含まれる「ヘッダのチェックサム」と当該ヘッダ情報に基づいて改めて算出したチェックサムとが一致し、ヘッダ情報に含まれる「マジックコード」が予め設定されている値と一致し、ヘッダ情報に含まれる「ＣＩＤ／ＣＳＤ」がフラッシュメモリ２から取得したＣＩＤ／ＣＳＤと一致する場合に、当該ヘッダ情報が正当であると判定する。
【００３１】
その結果、ヘッダ情報が正当であると判定した場合（ＳＡ４、Ｙｅｓ）、バックアップ部４ａは、フラッシュメモリ２のバックアップ領域に書き込まれている既存のバックアップ情報が正当か否かを判定する（ＳＡ５）。バックアップ情報が正当か否かの判定基準は任意で、例えば、ヘッダ情報の「チェックサム」とバックアップ情報に基づいて改めて算出したチェックサムとが一致する場合に、当該バックアップ情報が正当であると判定する。
【００３２】
その結果、バックアップ情報が正当であると判定した場合（ＳＡ５、Ｙｅｓ）、バックアップ部４ａは、そのバックアップ情報の状態が「使用済み」か否かを判定する（ＳＡ６）。具体的には、バックアップ部４ａはヘッダ情報の「バックアップステータス」が「２」である場合に、バックアップ情報の状態が「使用済み」であると判定する。
【００３３】
その結果、バックアップ情報の状態が「使用済み」であった場合（ＳＡ６、Ｙｅｓ）、書き込み対象の情報の書き込み先となるクラスタを含むブロックに記憶されている情報が既存のバックアップ情報としてバックアップ領域に書き込まれているものとし、バックアップ部４ａは既存のバックアップ情報を流用することを決定する（ＳＡ７）。
【００３４】
一方、ＳＡ１で特定したブロックとＳＡ２で特定したブロックが同一ではない場合（ＳＡ３、Ｎｏ）、ヘッダ情報が正当ではないと判定した場合（ＳＡ４、Ｎｏ）、又は既存のバックアップ情報が正当ではないと判定した場合（ＳＡ５、Ｎｏ）は、改めて書き込み対象の情報の書き込み先となるクラスタを含むブロックに記憶されている情報をバックアップ情報として読み出す必要があるものとし、バックアップ部４ａは既存のバックアップ情報を破棄する（ＳＡ８）。
【００３５】
続いてバックアップ部４ａは、書き込み対象の情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、フラッシュメモリ２におけるバックアップ領域に書き込む（ＳＡ９）。
【００３６】
図４はバックアップ情報の読み出しを例示した概念図であり、図４（ａ）は書き込み対象の情報の書き込み先となるクラスタを含むブロックにおける情報の記憶状況を示した図、図４（ｂ）は読み出されたバックアップ情報の内容を示した図である。図４（ａ）に示したように、書き込み対象の情報の書き込み先となるクラスタを含むブロックには、情報の記憶に使用されている領域と、情報の記憶に使用されていない領域とが含まれている。このブロックに記憶されている情報をバックアップ情報として読み出す場合、バックアップ部４ａはブロックを複数のクラスタに分割し、このクラスタ毎に読み出しを行う。このとき、読み出し対象のクラスタの全部又は一部が情報の記憶に使用されている場合には、バックアップ部４ａは当該クラスタに記憶されている情報を全て読み出す（図４（ｂ）における上から４番目までのクラスタ）。一方、読み出し対象のクラスタの全部が情報の記憶に使用されていない場合には、そのクラスタについては情報を読み出さない（図４（ｂ）における最下段のクラスタ）。これにより、バックアップ情報の読み出しに要する時間を短縮することができる。
【００３７】
図３に戻り、ＳＡ７又はＳＡ９の処理の後、バックアップ部４ａは、バックアップ領域に書き込まれているバックアップ情報に基づいてヘッダ情報を作成し、そのヘッダ情報をＤＲＡＭ３に書き込む（ＳＡ１０）。
【００３８】
図５はバックアップ情報に基づいて作成したヘッダ情報を例示した概念図であり、図５（ａ）はバックアップ領域に書き込まれたバックアップ情報を示す図、図５（ｂ）はバックアップ情報に基づいて作成されたヘッダ情報を示す図である。図５（ｂ）に示すように、バックアップ部４ａは、バックアップ情報として読み出したクラスタ毎にチェックサムを算出し、ヘッダ情報の「チェックサム」に格納する。また、バックアップ情報として読み出した各クラスタが情報の記憶に使用されているか否かを特定し、特定結果に対応するビットマップ情報をヘッダ情報の「ビットマップ」に格納する。このビットマップ情報においては、各クラスタについて１ビットの情報が割り当てられ、クラスタが情報の記憶に使用されている場合には「１」、使用されていない場合には「０」が格納される。また、ヘッダ情報の「バックアップステータス」に、「使用中」であることを示す「１」を格納する。
【００３９】
図３に戻り、ＳＡ１０でヘッダ情報の作成及び書き込みを行った後、書き込み部４ｂは書き込み対象の情報を書き込み先となるクラスタに書き込む（ＳＡ１１）。情報の書き込みが完了した後、バックアップ部４ａはバックアップ情報の更新を行う（ＳＡ１２）。具体的には、バックアップ情報の再利用を可能とするため、バックアップ部４ａは、ＳＡ１１において書き込みが行われた書き込み対象の情報を、ＳＡ９においてフラッシュメモリ２のバックアップ領域に書き込まれたバックアップ情報における対応部分に上書きする。
【００４０】
さらにバックアップ部４ａは、ＳＡ１２で更新を行ったバックアップ情報に基づき、ＤＲＡＭ３に記憶されているヘッダ情報を更新する（ＳＡ１３）。すなわち、ＳＡ１２で更新されたバックアップ情報のクラスタ毎にチェックサムを再計算してヘッダ情報の「チェックサム」に格納するとともに、各クラスタの使用状況を特定するビットマップ情報をヘッダ情報の「ビットマップ」に格納する。また、ヘッダ情報の「バックアップステータス」を「使用済み」であることを示す「２」に更新する。その後、バックアップ部４ａはバックアップ処理を終了する。
【００４１】
また、ＳＡ６においてバックアップ情報の状態が「使用済み」ではなかった場合（ＳＡ６、Ｎｏ）、バックアップ部４ａはバックアップ情報の状態が「未使用」か否かを判定する（ＳＡ１４）。
【００４２】
その結果、バックアップ情報の状態が「未使用」であった場合（ＳＡ１４、Ｙｅｓ）、バックアップ情報を破棄する必要性がないものとし、バックアップ部４ａは、書き込み対象の情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、フラッシュメモリ２におけるバックアップ領域に書き込む（ＳＡ９）。
【００４３】
一方、バックアップ情報の状態が「未使用」ではなかった場合（ＳＡ１４、Ｎｏ）、すなわちバックアップ情報の状態が「使用中」の場合、バックアップ情報を破棄したり、新たなバックアップ情報をバックアップ領域に書き込むことは適当でないものとし、バックアップ部４ａはバックアップ処理を終了する。この際、併せてエラー出力を行ってもよい。
【００４４】
（処理−復旧処理）
次に、復旧処理について説明する。図６は復旧処理のフローチャートである。この復旧処理は、書き込み装置１の電源がＯＮされた場合に起動される。
【００４５】
復旧処理が起動されると、復旧部４ｃは、書き込み対象の情報の書き込み先となったクラスタを含むブロックに含まれる情報が破壊された可能性があるか否かを判定する（ＳＢ１）。例えば復旧部４ｃは、図３のＳＡ１１において、書き込み先となるクラスタへの書き込み部４ｂによる書き込み対象の情報の書き込みが中断された場合（例えば書き込み装置１への電力の供給が遮断された場合や書き込み装置１のリセットがされた場合等）、そのクラスタを含むブロックに含まれる情報が破壊された可能性があると判定する。
【００４６】
その結果、書き込み対象の情報の書き込み先となったクラスタを含むブロックに含まれる情報が破壊された可能性があると判定した場合（ＳＢ１、Ｙｅｓ）、復旧部４ｃはＤＲＡＭ３に書き込まれているヘッダ情報が正当か否かを判定する（ＳＢ２）。図３のバックアップ処理と同様に、ヘッダ情報が正当か否かの判定においては、例えばヘッダ情報に含まれる「ヘッダのチェックサム」、「マジックコード」、及び「ＣＩＤ／ＣＳＤ」が用いられる。
【００４７】
その結果、ヘッダ情報が正当であると判定した場合（ＳＢ２、Ｙｅｓ）、復旧部４ｃはフラッシュメモリ２のバックアップ領域に書き込まれているバックアップ情報が正当か否かを判定する（ＳＢ３）。図３のバックアップ処理と同様に、バックアップ情報が正当か否かの判定においては、例えばヘッダ情報の「チェックサム」とバックアップ情報に基づいて改めて算出したチェックサムとが用いられる。
【００４８】
その結果、バックアップ情報が正当であると判定した場合（ＳＢ３、Ｙｅｓ）、復旧部４ｃはバックアップ情報をバックアップ領域から読み出し、このバックアップ情報に対応するブロックに書き込む（ＳＢ４）。バックアップ情報を書き込むブロックは、ヘッダ情報の「ＬＢＡ」に基づいて特定することができる。
【００４９】
その後、復旧部４ｃはヘッダ情報の更新を行う（ＳＢ５）。具体的には、ヘッダ情報の「バックアップステータス」を「使用済み」であることを示す「２」に更新する。また、「バックアップステータス」の変更に伴い、「ヘッダのチェックサム」も更新する。その後、復旧部４ｃは復旧処理を終了する。
【００５０】
一方、ＳＢ２でヘッダ情報が正当ではないと判定した場合（ＳＢ２、Ｎｏ）、又はＳＢ３でバックアップ情報が正当ではないと判定した場合（ＳＢ３、Ｎｏ）、バックアップ領域に書き込まれているバックアップ情報では適切な復旧ができないものとし、復旧部４ｃはバックアップ情報を破棄する（ＳＢ６）。バックアップ情報の破棄の方法は任意で、例えばヘッダ情報の「マジックコード」を「０」とすることにより、バックアップ情報が破棄されたものとする。ＳＢ６でバックアップ情報を破棄した後、復旧部４ｃはエラー出力を行い（ＳＢ７）、復旧処理を終了する。
【００５１】
また、ＳＢ１で書き込み対象の情報の書き込み先となったクラスタを含むブロックに含まれる情報が破壊された可能性がないと判定した場合（ＳＢ１、Ｎｏ）、例えば、書き込み装置１は正常に起動されており、書き込み部４ｂによる書き込み対象の情報の書き込みは中断されていない場合、情報の復旧を行う必要はないものとし、復旧部４ｃは復旧処理を終了する。
【００５２】
（効果）
このように実施の形態によれば、書き込み対象の情報をフラッシュメモリ２に書き込む際、当該書き込み対象の情報の書き込み先となるクラスタを含む複数のクラスタで構成されたブロック単位で、当該ブロックに記憶されている情報をバックアップ情報として読み出し、バックアップ領域に書き込む。そして、書き込み対象の情報の書き込み先となったクラスタを含むブロックに含まれる情報が破壊された可能性がある場合、バックアップ部４ａによって書き込まれたバックアップ情報をバックアップ領域から読み出し、バックアップ情報に対応するブロックに書き込むので、電源遮断等の障害に起因して書き込み対象の情報が書き込まれるクラスタを含むブロックに格納されている他の情報が破壊された場合であっても、バックアップ情報に基づいてこれを復旧することができる。
【００５３】
特に、書き込み先となるクラスタへの書き込み部４ｂによる書き込み対象の情報の書き込みが中断された場合、当該クラスタを含むブロックに含まれる情報が破壊された可能性があるものとするので、電源の遮断やリセット等によって情報の書き込みが中断され、情報が破壊された場合であっても、これを確実に復旧することができる。
【００５４】
また、書き込み対象の情報の書き込み先となるクラスタを含むブロックについて、そのブロックを構成するクラスタのうち、使用されていないクラスタについてはバックアップ情報を読み出さないので、バックアップに必要な情報だけをバックアップ処理において読み出すことができ、バックアップ情報の読み出しに要する時間を短縮することができる。
【００５５】
また、バックアップ領域は、フラッシュメモリ２に設けられている領域であって、当該フラッシュメモリ２に設けられている他の記憶領域よりも書き込み限度回数が多い領域であるので、バックアップすべき１ブロックの容量が大きい場合であってもバックアップ情報を確実に大容量のフラッシュメモリ２に書き込むことができる。また、バックアップ情報を繰り返しバックアップ領域に書き込むことができる。
【００５６】
〔実施の形態に対する変形例〕
以上、本発明に係る実施の形態について説明したが、本発明の具体的な構成及び手段は、特許請求の範囲に記載した各発明の技術的思想の範囲内において、任意に改変及び改良することができる。以下、このような変形例について説明する。
【００５７】
（解決しようとする課題や発明の効果について）
まず、発明が解決しようとする課題や発明の効果は、上述の内容に限定されるものではなく、発明の実施環境や構成の細部に応じて異なる可能性があり、上述した課題の一部のみを解決したり、上述した効果の一部のみを奏することがある。
【００５８】
（バックアップ領域について）
上述の実施の形態では、バックアップ領域はフラッシュメモリ２の記憶領域の一部に設けられていると説明したが、他の記憶手段にバックアップ領域を設けてもよい。例えば、ＤＲＡＭ３にバックアップ領域を設け、ヘッダ情報とバックアップ情報とをＤＲＡＭ３に書き込むようにしてもよい。
【符号の説明】
【００５９】
１  書き込み装置
２  フラッシュメモリ
３  ＤＲＡＭ
４  制御部
４ａ  バックアップ部
４ｂ  書き込み部
４ｃ  復旧部
【図１】
0005533141.tif 000002
【図２】
0005533141.tif 000003
【図３】
0005533141.tif 000004
【図４】
0005533141.tif 000005
【図５】
0005533141.tif 000006
【図６】
0005533141.tif 000007
【図７】
0005533141.tif 000008