(57)【要約】【課題】書込回数に制限のある記録媒体に効率良くデータを記録してデータの消失を防ぐとともに、これにより記録媒体の大容量化を実現するとともに普及を促進する。【解決手段】第１の実施の形態において、ＣＰＵ１１は、不揮発性メモリ制御プログラムによって不揮発性メモリ１７Ａに記録領域と代替記録領域とを設定し、記録領域のブロックにおけるデータ書込回数が閾値に達すると、このブロックに記録されたデータを代替記録領域の代替ブロックに記録する。また、第２の実施の形態において、ＣＰＵ１１は、書込回数が最多のブロック及び最少のブロックの書込回数カウント値の差がカウント差閾値に達すると、不揮発性メモリ１７Ａの空きブロックを利用してこれらのブロックのデータを入れ替え、不揮発性メモリ１７Ａ内のデータ記録回数が多いブロックにおけるデータの消失を防ぐ。【選択図】　　　　　図１
2004079140.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体内にデータ記録領域と代替データ記録領域を設定する領域設定手段と、
前記記録媒体の指示されたデータ記録領域にデータを記録するデータ記録手段と、
前記データ記録手段によるデータの記録回数を前記データ記録領域毎に記憶する記憶手段と、
を備え、
前記データ記録手段は、前記記憶手段に記憶された前記データ記録領域の記録回数が所定回数となった場合に、前記データ記録領域に記録されたデータを前記代替データ記録領域に記録することを特徴とするデータ記録制御装置。
【請求項２】
前記データ記録手段は、前記データ記録領域に前記代替データ記録領域を指定するデータを記録するとともに、前記代替データ記録領域に前記データ記録領域を指定するデータを記録することを特徴とする請求項１記載のデータ記録制御装置。
【請求項３】
前記所定回数を設定する回数設定手段を備えたことを特徴とする請求項１又は２記載のデータ記録制御装置。
【請求項４】
記録媒体内の指示されたデータ記録領域にデータを記録するデータ記録手段と、
前記データ記録手段によりデータが記録されたデータ記録領域毎にデータ記録回数を記憶する記憶手段と、
を備え、
前記データ記録手段は、前記データ記録領域に記録されたデータと、該データ記録領域よりも記録回数が少ない他のデータ記録領域に記録されたデータを入れ替えて記録することを特徴とするデータ記録制御装置。
【請求項５】
前記記録媒体からデータが記録されていない空き領域を探索する探索手段を備え、
前記データ記録手段は、前記空き領域を利用して前記データ記録領域に記録されたデータと前記他のデータ記録領域に記録されたデータを入れ替えて記録することを特徴とする請求項４記載のデータ記録制御装置。
【請求項６】
前記記憶手段は、前記データ記録領域と前記他のデータ記録領域とを対応付けて記憶することを特徴とする請求項４又は５記載のデータ記録制御装置。
【請求項７】
前記データ記録手段は、前記データ記録領域に前記他のデータ記録領域を指定するデータを記録するとともに、前記他のデータ記録領域に前記データ記録領域を指定するデータを記録することを特徴とする請求項４〜６の何れか一項に記載のデータ記録制御装置。
【請求項８】
コンピュータに、
記録媒体内にデータ記録領域と代替データ記録領域を設定する機能と、
前記記録媒体の指示されたデータ記録領域にデータを記録する機能と、
データの記録回数を前記データ記録領域毎に記憶する機能と、
前記データ記録領域の記録回数が所定回数となった場合に、該データ記録領域に記録されたデータを前記代替データ記録領域に記録する機能と、
を実現させるためのプログラム。
【請求項９】
コンピュータに、
記録媒体の指示されたデータ記録領域にデータを記録する機能と、
データが記録されたデータ記録領域毎にデータ記録回数を記憶する機能と、
前記データ記録領域に記録されたデータと、該データ記録領域よりも記録回数が少ない他のデータ記録領域に記録されたデータを入れ替えて記録する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記録媒体へのデータ記録を制御するデータ記録制御装置及びその制御用のプログラムに関する。
【０００２】
【従来の技術】
従来、携帯可能なノート型のパーソナルコンピュータ等の携帯型情報処理装置においては、各種データや各種プログラムを記録するための大容量の記録媒体として、ハードディスク装置が搭載されている。しかし、ハードディスク装置は衝撃に弱いため、耐衝撃性に優れた不揮発性半導体メモリ等の小容量の記録媒体も携帯型情報処理装置に搭載されている。
【０００３】
【発明が解決しようとする課題】
しかしながら、不揮発性半導体メモリは、ハードディスク装置に比べて書込回数の制限値が低いため、書込回数が制限値を超えてしまう可能性が高く、記録されたデータが失われてしまうことがある。また、不揮発性半導体メモリ内において部分的にデータ書込回数が偏っている場合に、その偏り部分で書込回数が制限値に達してしまうと、このメモリ全体をそれ以上使用することができなくなってしまう。
【０００４】
このような現象は、メモリ内のデータ書込領域を決定する主体が制御側のプログラムにあり、利用するプログラムによってメモリ内の一部の記録領域に対するデータ書込動作が頻発するためである。すなわち、従来のメモリの利用形態では、部分的に記録領域に対する書込み回数を考慮した制御が行われていなかったため、メモリを有効利用することができない場合があり、不揮発性半導体メモリの大容量化と普及とを妨げるおそれがあった。
【０００５】
本発明の課題は、書込回数に制限のある記録媒体に効率良くデータを記録してデータの消失を防ぐとともに、これにより記録媒体の大容量化を実現するとともに普及を促進することである。
【０００６】
【課題を解決するための手段】
請求項１記載の発明は、
データ記録制御装置において、
記録媒体内にデータ記録領域と代替データ記録領域を設定する領域設定手段と、
前記記録媒体の指示されたデータ記録領域にデータを記録するデータ記録手段と、
前記データ記録手段によるデータの記録回数を前記データ記録領域毎に記憶する記憶手段と、
を備え、
前記データ記録手段は、前記記憶手段に記憶された前記データ記録領域の記録回数が所定回数となった場合に、前記データ記録領域に記録されたデータを前記代替データ記録領域に記録することを特徴としている。
【０００７】
この請求項１記載の発明によれば、
領域設定手段は、記録媒体内にデータ記録領域と代替データ記録領域を設定し、データ記録手段は、前記記録媒体の指示されたデータ記録領域にデータを記録し、記憶手段は、前記データ記録手段によるデータの記録回数を前記データ記録領域毎に記憶し、前記データ記録手段は、前記記憶手段に記憶された前記データ記録領域の記録回数が所定回数となった場合に、前記データ記録領域に記録されたデータを前記代替データ記録領域に記録する。
【０００８】
したがって、記録媒体内のデータ記録回数が多いデータ記録領域に記録されるデータの消失を回避することができ、記録媒体の信頼性を向上させることができる。また、これにより、記録媒体の利用価値を高めて記録媒体の普及を促進することができる。
【０００９】
請求項４記載の発明は、
データ記録装置において、
記録媒体内の指示されたデータ記録領域にデータを記録するデータ記録手段と、
前記データ記録手段によりデータが記録されたデータ記録領域毎にデータ記録回数を記憶する記憶手段と、
を備え、
前記データ記録手段は、前記データ記録領域に記録されたデータと、該データ記録領域よりも記録回数が少ない他のデータ記録領域に記録されたデータを入れ替えて記録することを特徴としている。
【００１０】
この請求項４記載の発明によれば、
データ記録手段は、記録媒体内の指示されたデータ記録領域にデータを記録し、記憶手段は、前記データ記録手段によりデータが記録されたデータ記録領域毎にデータ記録回数を記憶し、前記データ記録手段は、前記データ記録領域に記録されたデータと、該データ記録領域よりも記録回数が少ない他のデータ記録領域に記録されたデータを入れ替えて記録することを特徴としている。
【００１１】
したがって、記録媒体内のデータ記録領域毎のデータ記録回数を平均化することができ、記録媒体の使用期間を延ばすことができる。また、これにより、記録媒体の利用価値を高めて記録媒体の普及を促進することができる。
【００１２】
【発明の実施の形態】
図面を参照して本発明に関るデータ記録制御装置１について詳細に説明する。以下において、データ記録制御装置１の第１及び第２の実施の形態について詳細に説明するが、各実施の形態におけるデータ記録制御装置１の構成は、何れも図１に示す構成を有するため、図１に示す各機能的構成部について重複する説明は省略し、同一の部分には同一の符号を付して説明する。
【００１３】
〔第１の実施の形態〕
以下、各実施の形態の共通部分を含めて、第１の実施の形態について詳細に説明する。まず、構成を説明する。
図１は、本発明を提供した一実施の形態によるデータ記録制御装置１の機能的構成を示すブロック図である。図１に示すように、データ記録制御装置１は、ＣＰＵ１１、入力部１２、表示部１３、ＲＡＭ１４、ＲＯＭ１５、印字装置１６、不揮発性メモリドライブ１７、ＨＤＤ１８、伝送制御部１８により構成され、各部は相互にデータの送受信が可能なようにバス２０により接続されている。
【００１４】
図２は、図１に示すＲＯＭ１５に記憶された各種プログラムの階層構造を模式的に示す図である。各種プログラムには、上位階層から順に、ＣＰＵ１１によって実行されるアプリケーションプログラム、メモリ管理やタスク管理等をはじめとするＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）の基本機能を実現するシステムプログラム、ＨＤＤ（Ｈａｒｄ　Ｄｉｓｋ　Ｄｒｉｖｅ）を制御するＨＤＤ制御プログラムがあり、不揮発性メモリ１７Ａを制御する不揮発性メモリ制御プログラムが最下層に実装されている。図１のＣＰＵ１１は、図２に示す不揮発性メモリ制御プログラムを利用して、不揮発性メモリ１７Ａに、ＯＳによる認識が可能な記録領域とＯＳによる認識不可能な代替記録領域とを設定する（図３参照）とともに、後述する各種処理において不揮発性メモリ１７Ａのデータの書込み、読出し、編集処理等を制御する。
【００１５】
ここで、図４を参照して、不揮発性メモリ１７Ａの記録領域及び代替記録領域について説明する。なお、記録領域及び代替記録領域は、各々複数のデータブロックにより構成される。
【００１６】
図４（ａ）は、記録領域の１ブロックのデータ構成例を示す図である。図４（ａ）に示すように、記録領域を構成する各ブロック１００は、実データを記録するためのデータ領域１０１と、データ領域内のデータのエラー訂正用のＥＣＣ（Ｅｒｒｏｒ　Ｃｏｒｒｅｃｔｉｎｇ　Ｃｏｄｅ）を記録するための領域１０２と、データ領域１０１へのデータの書込回数を記録する書込回数カウント領域１０３と、データ領域１０１におけるデータの書込回数が所定回数に達した場合にデータ領域１０１内の実データを記録する代替記録領域内のブロックを指定するアドレスを記録するための代替ブロック指定領域１０４と、書込回数カウント領域１０３及び代替ブロック指定領域１０４に記録されたデータのエラー訂正用のＥＣＣを記録するための領域１０５とによって構成される。
【００１７】
図４（ｂ）は、代替記録領域の１ブロックのデータ構成例を示す図である。図４（ｂ）に示すように、代替記録領域を構成する各代替ブロック１１０は、実データを記録するためのデータ領域１１１と、データ領域内のデータのエラー訂正用のＥＣＣを記録するための領域１１２と、データ領域１１１へのデータ書込回数を記録するための書込回数カウント領域１１３と、このブロックのデータが記録領域のブロックの代替領域として使用された場合にブロック１００のアドレスを記録するためのオリジナルブロック指定領域１１４と、オリジナルブロック指定領域１１４内のデータのエラー訂正用のＥＣＣを記録するための領域１１５とによって構成される。
【００１８】
なお、以下に説明する各処理において、ＣＰＵ１１は、不揮発性メモリ１７Ａ内の各ブロックにデータを書き込む際に、実データのエラー訂正用のＥＣＣを算出して領域１０２（又は領域１１２）に記録するとともに、データ書込回数及び代替ブロックのアドレス（又はオリジナルブロックのアドレス）を書き込む際にそのＥＣＣを算出して領域１０５及び領域１１５に記録する。また、ＣＰＵ１１は、各ブロックからデータを読み出す際に、上記各ブロックに記録したＥＣＣによりエラー訂正処理を行う。このＣＰＵ１１によるＥＣＣを利用したエラー訂正処理の説明は、以下省略する。
【００１９】
以下、図１に示したデータ記録制御装置１の各機能的構成部について詳細に説明する。
【００２０】
ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）１１は、ＲＯＭ１５に記憶されているＯＳを含むシステムプログラム及び当該システムに対応する各種アプリケーションプログラムをＲＡＭ１４内に形成されたワークメモリに展開し、該システムプログラムに従って各部を制御する。また、入力部１２や伝送制御部１６から入力される各種指示あるいはデータをＲＡＭ１４内に一時的に格納し、この入力指示及び入力データに応じてＲＯＭ１５内に格納されたアプリケーションプログラムに従って各種処理を実行し、その処理結果をＲＡＭ１４内に一時的に格納する。そして、ＲＡＭ１４に格納した処理結果を入力部１２からの入力指示に従ってＲＯＭ１５内の保存先に保存する。
【００２１】
具体的には、ＣＰＵ１１は、ＲＯＭ１５に記憶されたデータ編集処理プログラム、編集対象データ読出処理１用プログラム、及び編集内容書込処理１用プログラムを読み出してＲＡＭ１４内のワークメモリに展開し、後述するデータ編集処理、編集対象データ読出処理１、及び編集内容書込処理１を実行し、それらの処理結果をＲＡＭ１４内のワークメモリに記憶するとともに表示部１２に表示させる。
【００２２】
ＣＰＵ１１は、入力部１２からデータ編集処理プログラムを起動する指示が入力されると、データ編集処理を実行する。ＣＰＵ１１は、データ編集処理において、データ編集対象のファイルを選択するためのファイル指定用メニュー（図示省略）を表示部１３に表示し、入力部１２から指定されたファイルを開き、ファイル内のデータを編集するためのファイル編集画面（図示省略）を表示部１３に表示する。ＣＰＵ１１は、ファイル編集画面において選択された編集対象データが入力部１２を介して入力されると、後述する編集対象データ読出処理１を実行した後、読み出した編集対象データの編集処理を実行し、入力部１２からの指示入力により編集処理の内容が確定されると、後述する編集内容書込処理１を実行する。
【００２３】
ＣＰＵ１１は、編集対象データ読出処理１において、指定された編集対象データが記録された不揮発性メモリ１７Ａの記録領域のブロック１００のデータを検索して、このブロックの代替ブロック指定領域１０４内に代替ブロックを指定するデータが記録されているか否かを判別する。ＣＰＵ１１は、代替ブロック指定領域１０４において代替ブロックを指定するデータが記録されていれば、指定された代替ブロック１１０を検索し、そのデータ領域１１１に記録された実データを編集対象データとして読み出す。一方、ＣＰＵ１１は、代替ブロックを指定するデータが代替ブロック指定領域１０４に記録されていないと判別すると、ブロック１００のデータ領域１０１から実データを編集対象データとして読み出す。
【００２４】
ＣＰＵ１１は、編集対象データ読出処理１において読み出した実データ（以下、編集対象データという）に編集処理を施して編集処理済データを生成する。次いで、編集内容書込処理１において、編集対象データが記録されていたブロック１００の書込回数カウント領域１０３から書込回数のカウント値を読み出すとともに、代替ブロック指定領域１０４から代替ブロックのアドレスを読み出す。ＣＰＵ１１は、読み出した書込回数のカウント値をＲＯＭ１５に予め記憶されたカウント閾値と比較して、カウント値がカウント閾値未満であれば、ブロック１００のデータ領域１０１に編集処理済データを記録し、書込回数カウント領域１０３のカウント値を１加算する。
【００２５】
また、ＣＰＵ１１は、編集内容書込処理１において、ブロック１００への書込回数のカウント値がカウント閾値以上である場合には、代替ブロック指定領域１０４において代替ブロックを指定するデータが記録されていれば、指定された代替ブロック１１０のデータ領域１１１に編集処理済データを記録する。一方、代替ブロックを指定するアドレスが記録されていなければ、不揮発性メモリ１７Ａの代替記録領域からデータが記録されていない代替ブロック１１０を探索してブロック１００の代替ブロックに指定し、この代替ブロック１１０のオリジナルブロック指定領域１１４にブロック１００のアドレスを記録する。
【００２６】
入力部１２は、カーソルキー、数字入力キー及び各種機能キー等を備えたキーボード及びマウス等のポインティングデバイスにより構成され、キーボードにおいて押下されたキーの押下信号やマウスの位置信号をＣＰＵ１１に出力する。
【００２７】
表示部１３は、ＬＣＤ（Ｌｉｑｕｉｄ　Ｃｒｙｓｔａｌ　Ｄｉｓｐｌａｙ）等により構成され、ＣＰＵ１１から入力される表示信号の指示に従って、ＣＰＵ１１により処理中のデータや処理結果のデータ等を表示する。
【００２８】
ＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）１４は、ＣＰＵ１１により実行制御される各種処理において、ＲＯＭ１５から読み出されたプログラム、入力または出力データ、及びパラメータ等の一時的な格納領域を形成する。
【００２９】
ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）１５は、ＣＰＵ１１が前記各種プログラムを実行する際に使用するプログラムやデータ等が予め記憶されている。具体的には、ＲＯＭ１５は、図２に示すような各種処理プログラムを記憶しており、アプリケーションプログラムとしてデータ編集処理プログラム、編集対象データ読出処理１用プログラム、編集内容書込処理１用プログラム等を記憶する。子頬かに、ＲＯＭ１５は、書込回数を制限するカウント閾値を記憶する。
【００３０】
なお、ＲＯＭ１５に記憶されたプログラム、データ等は、その一部若しくは全部を外部機器からＬＡＮ（Ｌｏｃａｌ　Ａｒｅａ　Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ　Ａｒｅａ　Ｎｅｔｗｏｒｋ）等の図示しない通信ネットワークを介して伝送制御部１９から受信して格納する構成にしてもよい。
【００３１】
印字装置１６は、図示しない画像形成部、転写部、定着部、給紙部等を備え、ＣＰＵ１１から入力されるデータを記録紙に印字出力する。
【００３２】
不揮発性メモリドライブ１７は、メモリ用インターフェイスであり、不揮発性の半導体メモリである不揮発性メモリ１７Ａとデータ記録制御装置１との間のデータの送受信を仲介する。
【００３３】
ＨＤＤ（Ｈａｒｄ　Ｄｉｓｋ　Ｄｒｉｖｅ）１８は、ハードディスク１８Ａとデータ記録制御装置１とのデータの送受信を仲介するインターフェイスである。
【００３４】
伝送制御部１９は、図示しない通信ネットワークを介して、外部機器との通信を行うためのネットワークカード、モデム、ＴＡ（Ｔｅｒｍｉｎａｌ　Ａｄａｐｔｅｒ）、ルータ等によって構成される。
【００３５】
次に、第１の実施の形態における動作を説明する。
ＣＰＵ１１によるメインの処理であるデータ編集処理と、データ編集処理内で実行される編集対象データ読出処理１及び編集内容書込処理１について、図５〜図７のフローチャートを参照して説明する。
【００３６】
ここで、これらのフローチャートに記述されている各機能を実現するためのプログラムは、読み取り可能なプログラムコードの形態でＲＯＭ１５に格納されており、ＣＰＵ１１はこのプログラムコードに従った動作を逐次実行する。また、ＣＰＵ１１は、伝送媒体を介して伝送されてきた上述のプログラムコードに従った動作を逐次実行することもできる。すなわち、ＲＯＭ１５の他、伝送媒体を介して外部供給されたプログラムやデータを利用して本実施の形態に特有の動作を実行することもできる。
【００３７】
図５は、ＣＰＵ１１により実行されるデータ編集処理を示すフローチャートである。図５に示すデータ編集処理において、ＣＰＵ１１はファイル指定用メニュー（図示省略）を表示部１３に表示させる（ステップＳ１）。次いで、入力部１２からの指示入力によってファイルが指定されたか否かを判別し（ステップＳ２）、ファイルが指定されなければ（ステップＳ２；ＮＯ）、ステップＳ１に戻り、ファイルが指定されると（ステップＳ２；ＹＥＳ）、指定されたファイルが記録されたブロックを不揮発性メモリ１７Ａから検索し、ＲＡＭ１４に展開し（ステップＳ３）、ステップＳ４に移行する。
【００３８】
次いで、ＣＰＵ１１は、ファイル編集画面（図示省略）を表示部１３に表示して（ステップＳ４）、入力部１２からの指示入力によって編集対象データが指定されたか否かを判別する（ステップＳ５）。ＣＰＵ１１は、編集対象データが指定されなければ（ステップＳ５；ＮＯ）、ステップＳ４に戻り、編集対象データが指定されると（ステップＳ５；ＹＥＳ）、後述する編集対象データ読出処理１を実行し（ステップＳ６）、続いて編集対象データの編集処理を実行し、編集処理済データを生成する（ステップＳ７）。
【００３９】
上記ステップＳ７の編集処理の終了後に、ＣＰＵ１１は入力部１２からの指示入力により編集内容が確定されたか否かを判別し（ステップＳ８）、確定されなければ（ステップＳ８；ＮＯ）、ステップＳ７に戻り、編集内容が確定されると（ステップＳ８；ＹＥＳ）、後述する編集内容書込処理１を実行して編集処理済データを不揮発性メモリ１７Ａに記録し、データ編集処理を終了する。
【００４０】
図６は、上記データ編集処理内でＣＰＵ１１により実行される編集対象データ読出処理１を示すフローチャートである。図６に示す編集対象データ読出処理１において、ＣＰＵ１１は、編集対象データが記録された不揮発性メモリ１７Ａの記録領域のブロック１００を読み出し、このブロックの代替ブロック指定領域１０４内のデータを読み出して（ステップＳ１１）、代替ブロック１１０を指定するデータの有無を判別する（ステップＳ１２）。
【００４１】
ＣＰＵ１１は、代替ブロック指定領域１０４内に代替ブロック１１０を指定するデータが記録されていないと判別すると（ステップＳ１２；ＮＯ）、ブロック１００のデータ領域１０１に記録された実データを読み出す（ステップＳ１３）。一方、代替ブロック指定領域１０４に代替ブロックを指定するデータが記録されていると判別すると（ステップＳ１２；ＹＥＳ）、ＣＰＵ１１は不揮発性メモリ１７Ａから代替ブロック１１０を検索してそのデータ領域１１１から実データを読み出す（ステップＳ１４）。
【００４２】
図７は、データ編集処理内でＣＰＵ１１により実行される編集内容書込処理１を示すフローチャートである。なお、この図７に示す編集内容書込処理１の説明においては、編集対象データに対応するブロック１００のアドレスをＡ０、Ａ０のブロックの代替ブロック１１０のアドレスをＡ１、代替記憶領域内のデータが記録されていない任意の空きブロックのアドレスをＡ２とする。
【００４３】
図７に示す編集内容書込処理１において、ＣＰＵ１１は、編集対象データが記録された不揮発性メモリ１７Ａ内のアドレスがＡ０である場合に（ステップＳ２１）、アドレスＡ０のブロック１００の書込回数カウント領域１０３及び代替ブロック指定領域１０４に記録されたデータを読み出して（ステップＳ２２）、書込回数カウント領域１０３から読み出したカウント値を、ＲＯＭ１５に記憶されたカウント閾値未満であるか否かを判別し（ステップＳ２３）、書込回数のカウント値がカウント閾値未満であれば（ステップＳ２３；ＹＥＳ）、アドレスＡ０のブロック１００のデータ領域１０１に編集処理済データを記録し、書込回数カウント領域１０３のカウント値を１加算して（ステップＳ２４）、編集内容書込処理１を終了する。
【００４４】
一方、ＣＰＵ１１は、ステップＳ２３においてアドレスＡ０のブロックの書込回数のカウント値がカウント閾値未満ではないと判別すると（ステップＳ２３；ＮＯ）、ブロック１００の代替ブロック指定領域１０４に代替ブロックを指定するデータがあるか否かを判別する（ステップＳ２５）。ここで、ＣＰＵ１１は、代替ブロックを指定するデータ（アドレスＡ１）があると判別すると（ステップＳ２５；ＹＥＳ）、アドレスＡ１の代替ブロック１１０を読み出して（ステップＳ２６）、アドレスＡ１の代替ブロック１１０のデータ領域１１１に編集処理済データを記録して（ステップＳ２７）、編集内容書込処理１を終了する。
【００４５】
一方、ＣＰＵ１１は、ステップＳ２５においてアドレスＡ０のブロック１００の代替ブロック指定領域１０４において代替ブロックを指定するデータが記録されていないと判別すると（ステップＳ２５；ＮＯ）、不揮発性メモリ１７Ａの代替記録領域からデータが記録されていない空きブロックを探索する（ステップＳ２８）。
【００４６】
続いて、ＣＰＵ１１は、アドレスＡ２の空きブロックをアドレスＡ０のブロック１００の代替ブロックに指定して、アドレスＡ０のブロック１００の代替ブロック指定領域１０４にアドレスＡ２を記録する（ステップＳ２９）。次いで、アドレスＡ２の代替ブロック１１０のデータ領域１１１に編集済データを記録して（ステップＳ３０）、編集内容書込処理１を終了する。
【００４７】
以上説明したように、第１の実施の形態のデータ記録制御装置１によれば、ＣＰＵ１１は、不揮発性メモリ制御プログラムによって不揮発性メモリ１７Ａに記録領域と代替記録領域とを設定し、記録領域のブロックにおけるデータ書込回数が閾値に達すると、このブロックに記録されたデータを代替記録領域の代替ブロックに記録するため、不揮発性メモリ１７Ａに対して効率良くデータを記録して、不揮発性メモリ１７Ａの使用期間を延ばすとともにその大容量化を可能にする。また、これにより不揮発性メモリを始めとする書込回数に制限がある記録媒体の普及を促進することができる。
【００４８】
なお、本第１の実施の形態においては、代替ブロック１１０については書込回数のカウント値を記録する領域を設けていないが、代替ブロック１１０についても書込回数カウント領域を設け、カウント値がカウント閾値に達した場合に、不揮発性メモリ１７Ａの交換を促すガイダンスを表示部１３に表示したり、代替ブロック１１０に記録されたデータのバックアップデータをＲＯＭ１５内に保存してもよい。これにより、データの損失をより確実に防止することができる。
【００４９】
〔第２の実施の形態〕
本第２の実施の形態では、データ記録制御装置１は第１の実施の形態において図１のブロック図を参照して説明した構成と略同様であるため、同一の構成部分には同一の符号を付し、重複する説明は省略する。
【００５０】
ただし、第２の実施の形態では、図１のＣＰＵ１１は、図２の不揮発性メモリ制御プログラムを利用して図３に示すように記録領域と代替記録領域とを設定せず、図８に示すように不揮発性メモリ１７Ａ全体をＯＳによる認識が可能な記録領域に設定する。
【００５１】
また、第２の実施の形態において、ＣＰＵ１１は、不揮発性メモリ制御プログラムを利用して、図９に示すプロック管理テーブルを作成し、ＲＯＭ１５に保存することによって不揮発性メモリ１７Ａ内の各ブロックのデータを管理する。図９に示すように、ブロック管理テーブルには、不揮発性メモリ１７Ａ内のアドレスと、ブロック名と、ユーザが指定可能なファイル名と、データ書込回数のカウント値と、各ブロックに記録された実データと、代替ブロック名とが対応付けて記憶されている。
【００５２】
ここで、本実施の形態においては、不揮発性メモリ１７Ａ内の各ブロックは、図４（ａ）のブロック１００と同様のデータ構成を有する。第１の実施の形態と異なる点は、例えば、不揮発性メモリ１７Ａ内の任意のブロックＸにおいてデータ記録回数がカウント閾値に達した場合に、ＣＰＵ１１はデータ記録回数がカウント閾値に達していない他のブロックＹを探索し、これらの２ブロックのデータを入れ替える。このとき、ＣＰＵ１１は、ブロックＸの代替ブロック指定領域にブロックＹのアドレスを記録し、ブロックＹの代替ブロック指定領域にブロックＸのアドレスを記録する。即ち、代替ブロックは予め決められたものではなく、記録されたデータを入れ替えるブロック同士が互いに代替ブロックとなる。
【００５３】
なお、本実施の形態における不揮発性メモリ１７Ａの各ブロックのデータ構成は、第１の実施の形態と同様のデータ構成（図４（ａ）参照）であるものとして以下の説明を行うが、図１０に示すように、書込回数カウント領域１０３に代わって書込回数チェック領域を設けてもよい。この場合には、図１０の書込回数チェック領域１２３には、データ領域１２１にデータを書き込む毎にビットパターンを記録してゆき、ビットパターンの書込回数が所定回数になるとパターンが変化するように構成する。そして、ＣＰＵ１１はパターンの変化を検出することによりこのブロックにおけるデータの書込みを制限する。
【００５４】
以下、図１を参照して、本実施の形態におけるデータ記録制御装置１の機能的構成を説明する。
【００５５】
本題にの実施の形態におけるＣＰＵ１１は、具体的には、ＲＯＭ１５に記憶されたデータ編集処理プログラム、編集対象データ読出処理２用プログラム、編集内容書込処理２用プログラム、更新処理プログラム、交換戻し処理プログラム、交換処理プログラムを読み出してＲＡＭ１４内のワークメモリに展開し、後述するデータ編集処理、編集対象データ読出処理２、編集内容書込処理２、更新処理、交換戻し処理、交換処理を実行し、それらの処理結果をＲＡＭ１４内のワークメモリに記憶するとともに表示部１２に表示させる。また、ＣＰＵ１１は、データ編集処理の実行回数の累計と、不揮発性メモリ１７Ａ野全ブロックのうちデータ書込回数が最も多いブロックの書込回数カウント値Ｃｍａｘと、データ書込回数が最も少ないブロックの買い込み回数カウント値ＣｍｉｎとをＲＯＭ１５に記憶させる。
【００５６】
ＣＰＵ１１は、データ編集処理において、第１の実施の形態と略同様の処理を実行するため、その詳細な説明は省略する。ただし、本実施の形態では、ＣＰＵ１１は編集対象データ読出処理１の代わりに後述する編集データ読出処理２を、また編集内容書込処理１の代わりに後述する編集内容書込処理２を実行する。
【００５７】
ＣＰＵ１１は、編集対象データ読出処理２において、編集対象データが記録されたブロックを読み出し、このブロックの代替ブロック指定領域において代替ブロックを指定するデータがなければこのブロックのデータ領域から実データを読み出す。一方、代替ブロック指定領域１０４に代替ブロックを指定するデータがあれば、代替ブロックを読み出してそのデータ領域から実データを読み出す。また、実データを読み出したブロックの書込回数カウント領域からカウント値Ｃを読み出して、ＲＯＭ１５内に記憶されたカウント値Ｃｍａｘと比較し、カウント値ＣがＣｍａｘより大きければ、カウント値ＣによってＲＯＭ１５内のＣｍａｘを更新する。一方、カウント値ＣをＲＯＭ１５内に記憶されたカウント値Ｃｍｉｎと比較し、カウント値Ｃがカウント値Ｃｍｉｎよりも小さければ、カウント値ＣによってＲＯＭ１５内のカウント値Ｃｍｉｎを更新する。
【００５８】
ＣＰＵ１１は、編集内容書込処理２において、データ編集処理の実行回数が１００の倍数であれば後述する更新処理を実行し、１００の倍数でなければ更新処理を省略して、データ編集処理における編集対象データが記録された不揮発性メモリ１７Ａ内のブロックを読み出す。次いで、この読み出したブロックの代替ブロック指定領域において代替ブロックを指定するデータがなければ、このブロックのデータ領域に編集処理済データを記録するとともに書込回数カウント領域のカウント値Ｃを１加算する。一方、読み出したブロックのデータ領域に代替ブロックを指定するデータがあると、代替ブロックを読み出してそのデータ領域に編集処理済データを記録するとともに書込回数カウント領域のカウント値Ｃを１加算する。
【００５９】
また、ＣＰＵ１１は、編集内容書込処理２において、編集処理済データを記録したブロックのカウント値ＣがＲＯＭ１５内に記憶されたカウント値Ｃｍａｘよりも大きければ、カウント値Ｃによってカウント値Ｃｍａｘを更新し、カウント値Ｃがカウント値Ｃｍｉｎよりも小さければ、カウント値Ｃによってカウント値Ｃｍｉｎを更新する。
【００６０】
ＣＰＵ１１は、更新処理において、ＲＯＭ１５に記憶されたカウント値Ｃｍａｘ及びカウント値Ｃｍｉｎとの差が、ＲＯＭ１５に記憶されたカウント差閾値未満ではない場合に、カウント値Ｃｍａｘのブロックのデータを読み出し、このブロックの代替ブロック指定領域において代替ブロックを指定するデータがあれば、後述する交換戻し処理を実行する。次いで、ＣＰＵ１１は、カウント値Ｃｍｉｎのブロックのデータを読み出し、このブロックの代替ブロック指定領域において代替ブロックを指定するデータがあれば、後述する交換戻し処理を行う。次にＣＰＵ１１は、後述する交換処理を実行して更新処理を終了する。
【００６１】
ＣＰＵ１１は、交換戻し処理において、図９のブロック管理テーブルを参照して、実データが記録されていない空きブロックを探索し、この空きブロックを利用して、交換戻しの対象となるブロック及びその代替ブロックに記録された実データを交換することにより、実データを元のブロックに戻す。
【００６２】
ここで、図１１（ａ）を参照して、交換戻し処理の例を説明する。図１１（ａ）に示すように、交換戻し処理の対象となるカウント値Ｃｍａｘ又はカウント値ＣｍｉｎのブロックＢ１は、代替ブロックとしてブロックＢ２が設定されており、ブロックＢ１の実データＤ１とブロックＢ２の実データＤ２とが入れ替えて記録されており、ブロックＢ１の代替ブロック指定領域にはＢ２が、またブロックＢ２の代替ブロック指定領域にはＢ１が記録されている。ＣＰＵ１１は、ブロックＢ２に記録された実データＤ１を空きブロックＡａのデータ領域に移し、ブロックＡａの代替ブロック指定領域にＢ１を記録し、ブロックＢ２の代替ブロック指定領域をクリアする。
【００６３】
次いで、ＣＰＵ１１は、空になったブロックＢ２のデータ領域にブロックＢ１に記録された実データＤ２を移し、ブロックＢ１の代替ブロック指定領域をクリアする。続いて、ＣＰＵ１１は、空になったブロックＢ１のデータ領域にブロックＡａのデータ領域に記録された実データＤ１を移す。これにより、ブロックＢ１の実データＤ１及びブロックＢ２の実データＤ２が元のブロックに戻される。
【００６４】
ＣＰＵ１１は、交換処理において、交換戻し処理において実データが元のブロックに戻されたカウント値Ｃｍａｘのブロックとカウント値Ｃｍｉｎのブロックとに記録された実データを交換する。
【００６５】
ここで、図１１（ｂ）を参照して、交換処理の例を説明する。図１１（ｂ）に示すように、カウント値ＣｍａｘのブロックＣ１のデータ領域には実データＤ１が、またカウント値ＣｍｉｎのブロックＣ２のデータ領域には実データＤ２が記録されている。ＣＰＵ１１は、図９のブロック管理テーブルを参照して、データが記録されていない空きブロックＡａを探索する。次いで、ブロックＣ２の実データＤ２をブロックＡａのデータ領域に移し、ブロックＡａの代替ブロック指定領域にＣ２を記録し、ブロックＣ２の代替ブロック指定領域にＡａを記録する。
【００６６】
続いて、ＣＰＵ１１は、ブロックＣ１の実データＤ１をブロックＣ２のデータ領域に移してブロックＣ２の代替ブロック指定領域にＣ１を記録し、ブロックＣ１の代替ブロック指定領域にＣ２を記録する。次いで、ブロックＡａのデータ領域に記録した実データＤ１をブロックＣ２のデータ領域に移し、ブロックＡａの代替ブロック指定領域のデータをクリアし、ブロックＣ２の代替ブロック指定領域にＣ１を記録する。このようにして、書込回数が最多のブロックと最少のブロックとに記録された実データが交換される。
【００６７】
以下、図１２を参照して、ＣＰＵ１１による更新処理において実行されるカウント値Ｃｍａｘのブロックの交換戻し処理、カウント値Ｃｍｉｎのブロックの交換戻し処理及びこれらの交換戻し処理後に実行される交換処理までの一連の処理手順の例を説明する。
【００６８】
図１２に示すように、ＣＰＵ１１は、まず１回目の交換戻し処理において、カウント値ＣｍａｘのブロックＢ１及びその代替ブロックＢ２に記録された実データを、空きブロックＡａを利用することにより元のブロックに戻し、ブロックＢ１及びＢ２の代替ブロック指定領域のデータをクリアする。また、ブロックＢ１の書込回数のカウント値４０，０００に１を加算して４０，００１に更新し、ブロックＢ２のカウント値３０，０００に１を加算して３０，００１に更新する。
【００６９】
次いで、ＣＰＵ１１は２回目の交換戻し処理において、カウント値ＣｍｉｎのブロックＢ３及びその代替ブロックＢ４に記録された実データを、上記と同様の手順で元のブロックに戻し、ブロックＢ３及びＢ４の代替ブロック指定領域のデータをクリアする。また、ブロックＢ３の書込回数のカウント値１０，０００に１を加算して１０，００１に更新し、ブロックＢ４の書込回数のカウント値２０，０００に１を加算して２０，００１に更新する。
【００７０】
次に、ＣＰＵ１１は、上記の２回の交換戻し処理後、カウント値ＣｍａｘのブロックＢ１に記録された実データＤ１及びカウント値ＣｍｉｎのブロックＢ３に記録された実データＤ３を交換する。このように、ＣＰＵ１１は、書込頻度が高いブロックに記録されたデータを書き込み頻度が低いブロックのデータと交換し、特定のブロックに対するデータ書込みが集中することを防ぐ。
【００７１】
ＲＯＭ１５は、具体的には、図２に示すような各種処理プログラムを記憶しており、データ編集処理プログラム、編集対象データ読出処理２用プログラム、編集内容書込処理２用プログラム、更新処理プログラム、交換戻し処理プログラム、交換処理プログラム等のアプリケーションプログラムを記憶する。また、ＲＯＭ１５は、ＣＰＵ１１によるデータ編集処理の実行回数の累計、不揮発性メモリ１７Ａのブロックのうちデータ書込回数が最多のブロックにおける書込回数のカウント値Ｃｍａｘ、データ書込回数が最少のブロックにおける書込回数のカウント値であるカウント値Ｃｍｉｎ、カウント差閾値等を記憶する。
【００７２】
次に、第２の実施の形態における動作を説明する。
ＣＰＵ１１によるデータ編集処理において実行される編集対象データ読出処理２、編集内容書込処理２、更新処理、交換戻し処理、交換処理について、図１３〜図１７のフローチャートを参照して説明する。
【００７３】
図１３は、ＣＰＵ１１による編集対象データ読出処理２を示すフローチャートである。ＣＰＵ１１は、図１３に示す編集対象データ読出処理２において、編集対象データが記録された不揮発性メモリ１７Ａ内のブロックを検索し、このブロックの代替ブロック指定領域内のデータを読み出し（ステップＳ１０１）、代替ブロックが指定されいるか否かを判別する（ステップＳ１０２）。
【００７４】
ステップＳ１０２において、代替ブロックが指定されていない場合には（ステップＳ１０２；ＮＯ）、ステップＳ１０１で検索したブロックのデータ領域に記録された実データと書込回数カウント領域に記録されたカウント値Ｃとを読み出して（ステップＳ１０３）、ステップＳ１０５に移行する。一方、ブロックの代替ブロック指定領域において代替ブロックが指定されている場合には（ステップＳ１０２；ＹＥＳ）、指定された代替ブロックのデータ領域に記録された実データと書込回数カウント領域に記録されたカウント値Ｃとを読み出して（ステップＳ１０４）、ステップＳ１０５に移行する。
【００７５】
ステップＳ１０５において、ＣＰＵ１１は、上記ステップＳ１０３又はＳ１０４において読み出したデータ書込回数のカウント値ＣがＲＯＭ１５に記録されたカウント値Ｃｍａｘを超えるか否かを判別し、カウント値Ｃがカウント値Ｃｍａｘを超える場合には（ステップＳ１０５；ＹＥＳ）、カウント値ＣによりＲＯＭ１５内に記憶されたカウント値Ｃｍａｘをカウント値Ｃによって更新し（ステップＳ１０６）、編集対象データ読出処理２を終了する。
【００７６】
一方、ステップＳ１０５において、ＣＰＵ１１は、カウント値Ｃがカウント値Ｃｍａｘを超えない場合には（ステップＳ１０５；ＮＯ）、カウント値ＣがＲＯＭ１５に記憶されたカウント値Ｃｍｉｎ未満であるか否かを判別し（ステップＳ１０７）、カウント値Ｃがカウント値Ｃｍｉｎ未満である場合には（ステップＳ１０７；ＹＥＳ）、カウント値Ｃによりカウント値Ｃｍｉｎを更新し、カウント値Ｃがカウント値Ｃｍｉｎ未満ではない場合には（ステップＳ１０７；ＮＯ）、そのまま編集対象読出処理２を終了する。
【００７７】
図１４は、編集内容書込処理２を示すフローチャートである。図１４に示すように、ＣＰＵ１１は、ＲＯＭ１５に記憶されたデータ編集処理の実行回数が１００の倍数であるか否かを判別し（ステップＳ１１１）、１００の倍数ではないと判別すると（ステップＳ１１１；ＮＯ）、ステップＳ１１３に移行し、１００の倍数であれば（ステップＳ１１１；ＹＥＳ）、更新処理を実行して（ステップＳ１１２）、ステップＳ１１３に移行する。
【００７８】
次に、ＣＰＵ１１は、不揮発しえメモリ１７Ａから編集対象データのブロックＡ０のデータを読み出し（ステップＳ１１３）、書込回数カウント領域及び代替ブロック指定領域内のデータを読み出した後（ステップＳ１１４）、代替ブロックを指定するデータの有無を判別する（ステップＳ１１５）。
【００７９】
ステップＳ１１５において、代替ブロックを指定するデータがなければ（ステップＳ１１５；ＮＯ）、ステップＳ１１３で読み出したブロックのデータ領域に編集処理済データを記録するとともに、このブロックの書込回数カウント領域のカウント値Ｃを１加算して（ステップＳ１１６）、ステップＳ１１８に移行する。一方、ステップＳ１１５において、代替ブロックを指定するデータがあれば（ステップＳ１１５；ＹＥＳ）、指定された代替ブロックを読み出し、そのデータ領域に編集処理済データを記録し、このブロックの書込回数カウント領域のカウント値Ｃを１加算して（ステップＳ１１７）、ステップＳ１１８に移行する。
【００８０】
続いて、ＣＰＵ１１は、ステップＳ１１６又はＳ１１７において編集処理済データを書き込んだブロックのカウント値Ｃを、ＲＯＭ１５に記憶されたカウント値Ｃｍａｘを超えるか否かを判別し（ステップＳ１１８）、カウント値Ｃがカウント値Ｃｍａｘを超えていれば（ステップＳ１１８；ＹＥＳ）、カウント値Ｃによってカウント値Ｃｍａｘを更新して（ステップＳ１１９）、編集内容書込処理２を終了する。
【００８１】
一方、ＣＰＵ１１は、ステップＳ１１８においてカウント値Ｃがカウント値Ｃｍａｘ以下であれば（ステップＳ１１８；ＮＯ）、カウント値ＣがＲＯＭ１５に記憶されたカウント値Ｃｍｉｎ未満であるか否かを判別し（ステップＳ１２０）、カウント値Ｃがカウント値Ｃｍｉｎ未満でなければ（ステップＳ１２０；ＮＯ）、そのまま編集内容書込処理２を終了する。一方、カウント値Ｃがカウント値Ｃｍｉｎ未満であれば（ステップＳ１２０；ＹＥＳ）、カウント値Ｃによってカウント値Ｃｍｉｎを更新し（ステップＳ１２１）、編集内容書込処理を終了する。
【００８２】
図１５は、ＣＰＵ１１による編集内容書込処理２において実行される更新処理を示すフローチャートである。図１５に示すように、ＣＰＵ１１は、ＲＯＭ１５内に記憶されたカウント値Ｃｍａｘ及びカウント値Ｃｍｉｎの差が、ＲＯＭ１５に記憶されたカウント差閾値未満であるか否かを判別し（ステップＳ１２２）、カウント差閾値未満であれば（ステップＳ１２２；ＹＥＳ）、そのまま更新処理を終了する。一方、カウント値Ｃｍａｘ及びカウント値Ｃｍｉｎの差がカウント差閾値未満ではない場合には（ステップＳ１２２；ＮＯ）、カウント値Ｃｍａｘのブロックを読み出すとともに、その代替ブロック指定領域内のデータを読み出す（ステップＳ１２３）。
【００８３】
次いで、ＣＰＵ１１は、カウント値Ｃｍａｘのブロックの代替ブロック指定領域において代替ブロックが指定されているか否かを判別し（ステップＳ１２４）、代替ブロックが指定されていなければ（ステップＳ１２４；ＮＯ）、ステップＳ１２６に移行し、代替ブロックが指定されていると（ステップＳ１２４；ＹＥＳ）、カウント値Ｃｍａｘのブロックの交換戻し処理を実行して（ステップＳ１２５）、ステップＳ１２６に移行する。
【００８４】
次に、ＣＰＵ１１は、カウント値Ｃｍｉｎのブロックのデータを読み出すとともにその代替ブロック指定領域内のデータを読み出して（ステップＳ１２６）、代替ブロックを指定するデータの有無を判別する（ステップＳ１２７）。ＣＰＵ１１は、代替ブロックを指定するデータがなければ（ステップＳ１２７；ＮＯ）、ステップＳ１２９に移行し、代替ブロックを指定するデータがあると（ステップＳ１２７；ＹＥＳ）、カウント値Ｃｍｉｎのブロックの交換戻し処理を実行して（ステップＳ１２８）、ステップＳ１２９に移行する。続いて、ＣＰＵ１１は、カウント値Ｃｍａｘのブロックとカウント値Ｃｉｎのブロックのデータを交換する交換処理を実行して（ステップＳ１２９）、更新処理を終了する。
【００８５】
図１６は、ＣＰＵ１１による更新処理において実行される交換戻し処理を示すフローチャートである。図１６に示すように、ＣＰＵ１１は、交換戻し処理の対象となるブロック（ここでは、ブロックＡ１とする）のデータと、その代替ブロック（ブロックＡ２とする）のデータとを読み出す（ステップＳ１３１）。次いで、ＣＰＵ１１は、図９に示すブロック管理テーブルを参照して空きブロックを探索し（ステップＳ１３２）、ブロックＡａを取得する（ステップＳ１３３）。
【００８６】
次いで、ＣＰＵ１１は、ブロックＡａのデータ領域にブロックＡ２に記録された実データＤ１を記録し、ブロックＡａの代替ブロック指定領域にＡ１を記録して書込回数カウント領域のカウント値Ｃを１加算する（ステップＳ１３４）。また、ＣＰＵ１１は、ブロックＡ２の代替ブロック指定領域のデータをクリアする（ステップＳ１３５）。
【００８７】
続いて、ＣＰＵ１１は、ブロックＡ１のデータ領域に記録された実データＤ２をブロックＡ２のデータ領域に移し、ブロックＡ１の代替ブロック指定領域のデータをクリアする（ステップＳ１３６）。次に、ＣＰＵ１１は、ブロックＡａのデータ領域に記録した実データＤ１をブロックＡ１のデータ領域に移し、ブロックＡ１の書込回数カウント領域のカウント値を１加算する（ステップＳ１３７）。そして、ブロックＡａの代替ブロック指定領域のデータをクリアして（ステップＳ１３８）、交換戻し処理を終了する。
【００８８】
図１７は、ＣＰＵ１１による更新処理において実行される交換処理を示すフローチャートである。図１７に示すように、ＣＰＵ１１は、交換戻し処理済みのカウント値Ｃｍａｘのブロック（ここでは、ブロックＡ１とする）及びカウント値Ｃｍｉｎのブロック（ブロックＡ２とする）のデータを不揮発性メモリ１７Ａから読み出す（ステップＳ１４１）。次いで、ＣＰＵ１１は、図９のブロック管理テーブルを参照して不揮発性メモリ１７Ａ内の空きブロックを探索し（ステップＳ１４２）、空きブロック（ブロックＡａとする）を取得する（ステップＳ１４３）。
【００８９】
続いて、ＣＰＵ１１は、ブロックＡ１に記録された実データＤ１をブロックＡａのデータ領域に移し、ブロックＡａの代替ブロック指定領域にＡ１を記録し、ブロックＡａの書込回数カウント領域のカウント値Ｃを１加算する（ステップＳ１４４）。次に、ＣＰＵ１１は、Ａ１の代替ブロック指定領域にＡａを記録した後（ステップＳ１４５）、ブロックＡ２に記録された実データＤ２をブロックＡ１のデータ領域に移し、ブロックＡ１の代替ブロック指定領域にＡ２を記録し、ブロックＡ１の書込回数カウント領域のカウント値を１加算する（ステップＳ１４６）。
【００９０】
次に、ＣＰＵ１１は、ブロックＡａに記録された実データＤ１をブロックＡ２のデータ領域に移し、ブロックＡ２の代替ブロック指定領域にＡ１を記録し、ブロックＡ２の書込回数カウント領域のカウント値を１加算する（ステップＳ１４７）。次いで、ＣＰＵ１１は、ブロックＡａの代替ブロック指定領域のデータをクリアして（ステップＳ１４８）、交換処理を終了する。
【００９１】
以上説明したように、第２の実施の形態のデータ記録制御装置１によれば、ＣＰＵ１１は、書込回数カウント値が最多のブロック及び最少のブロックのカウント値の差がカウント差閾値に達すると、不揮発性メモリ１７Ａの空きブロックを利用してこれらのブロックのデータを入れ替えるため、不揮発性メモリ１７Ａ内において部分的にデータ書込が頻発することを防止できる。このため、不揮発性メモリ１７Ａにおけるデータの消失を防ぎ、大容量化を可能にする。また、これにより、不揮発性メモリを始めとする書込回数に制限がある記録媒体の普及を促進することができる。
【００９２】
なお、上記第２の実施の形態においては、編集内容書込処理２において、データ編集処理の実行回数が１００の倍数のときに更新処理を実行することとしたが、更新処理の実行頻度はこれに限定されないが、編集内容書込処理２を実行する毎に毎回更新処理を行うのではなく、ＣＰＵ１１による他の処理の妨げにならないように頻度を設定し、定期的に更新処理を実行することが望ましい。
【００９３】
また、上記第２の実施の形態においては、データが記録されていない空きブロックを利用して任意のブロックから他のブロックにデータを移動する例を説明したが、これは例えば停電等が発生した場合に移動中のデータが失われることを防ぐためである。この他に、例えば空きブロックを利用せずに、移動させるデータをＲＡＭ１４に一時記憶させてデータの移動を行ってもよい。
【００９４】
更に、上記第２の実施の形態では、交換処理においてデータの書込回数カウント値が最多と最少のブロックのデータを入れ替えたが、これに限らず、データの書込みが頻発するブロックとそれよりも書込頻度が低いブロックのデータを入れ替えることによって不揮発性メモリ１７Ａにおける部分的なデータ書込が集中することを防止してデータの消失を防ぐことができる。
【００９５】
その他、データ記録制御装置１を構成する各部の細部構成、及び細部動作に関しても、本発明の趣旨を逸脱することのない範囲で適宜変更可能である。
【００９６】
【発明の効果】
請求項１又は８記載の発明によれば、記録媒体内のデータ記録回数が多いデータ記録領域に記録されるデータの消失を回避することができ、記録媒体の信頼性を向上させることができる。また、これにより、記録媒体の利用価値を高めて記録媒体の普及を促進することができる。
【００９７】
請求項２、６、７の何れか一項に記載の発明によれば、記録媒体のデータ記録領域に記録されたデータと他の領域に記録した場合に、データが実際に記録された領域を特定し、データを管理することができる。
【００９８】
請求項３記載の発明によれば、記録媒体の種類や用途に応じて記録媒体内のデータ記録領域毎にデータ記録回数を制限することができる。
【００９９】
請求項４又は９記載の発明によれば、記録媒体内のデータ記録領域毎のデータ記録回数を平均化することができ、記録媒体の使用期間を延ばすことができる。また、これにより、記録媒体の利用価値を高めて記録媒体の普及を促進することができる。
【０１００】
請求項５記載の発明によれば、データ記録領域に記録されたデータと他のデータ記録領域に記録されたデータを入れ替えて記録する際のデータの消失を防ぐことができ、データの移動を安全に行うことができる。
【図面の簡単な説明】
【図１】本発明を適用した第１及び第２の実施の形態によるデータ記録制御装置１の機能的構成を示すブロック図である。
【図２】図１のＲＯＭ１５に記憶された各種プログラムの階層構造を模式的に示す図である。
【図３】第１の実施の形態における図１の不揮発性メモリ１７Ａの構成を示す図である。
【図４】（ａ）は、図１の不揮発性メモリ１７Ａの記録領域の１ブロックのデータ構成例を示す図であり、（ｂ）は、代替記録領域の１ブロックのデータ構成例を示す図である。
【図５】第１及び第２の実施の形態における図１のＣＰＵ１１によるデータ編集処理を示すフローチャートである。
【図６】第１の実施の形態における図１のＣＰＵ１１による編集対象データ読出処理１を示すフローチャートである。
【図７】第１の実施の形態における図１のＣＰＵ１１による編集内容書込処理１を示すフローチャートである。
【図８】第２の実施の形態における図１の不揮発性メモリ１７Ａの構成を示す図である。
【図９】第２の実施の形態において図１のＲＯＭ１５に記憶されたブロック管理テーブルを示す図である。
【図１０】図１の不揮発性メモリ１７Ａの記録領域の１ブロックの図４（ａ）とは異なるデータ構成例を示す図である。
【図１１】（ａ）は、第２の実施の形態における図１のＣＰＵ１１による交換戻し処理の手順を示す図であり、（ｂ）はＣＰＵ１１による交換処理の手順を示す図である。
【図１２】第２の実施の形態における図１のＣＰＵ１１による更新処理において、交換戻し処理を２回実行した後に交換処理を実行する場合の手順を示す図である。
【図１３】第２の実施の形態における図１のＣＰＵ１１による編集対象データ読出処理２を示すフローチャートである。
【図１４】第２の実施の形態における図１のＣＰＵ１１による編集内容書込処理２を示すフローチャートである。
【図１５】第２の実施の形態における図１のＣＰＵ１１による更新処理を示すフローチャートである。
【図１６】第２の実施の形態における図１のＣＰＵ１１による交換戻し処理を示すフローチャートである。
【図１７】第２の実施の形態における図１のＣＰＵ１１による交換処理を示すフローチャートである。
【符号の説明】
１　データ記録制御装置
１１　ＣＰＵ
１２　入力部
１３　表示部
１４　ＲＡＭ
１５　ＲＯＭ
１６　印字装置
１７　不揮発性メモリドライバ
１７Ａ　不揮発性メモリ
１８　ＨＤＤ
１８Ａ　ハードディスク
１９　伝送制御部
２０　バス
【図１】
2004079140.tif 000003
【図２】
2004079140.tif 000004
【図３】
2004079140.tif 000005
【図４】
2004079140.tif 000006
【図５】
2004079140.tif 000007
【図６】
2004079140.tif 000008
【図７】
2004079140.tif 000009
【図８】
2004079140.tif 000010
【図９】
2004079140.tif 000011
【図１０】
2004079140.tif 000012
【図１１】
2004079140.tif 000013
【図１２】
2004079140.tif 000014
【図１３】
2004079140.tif 000015
【図１４】
2004079140.tif 000016
【図１５】
2004079140.tif 000017
【図１６】
2004079140.tif 000018
【図１７】
2004079140.tif 000019