(57)【要約】【課題】本発明は、カウントデータ記録装置を提供する。【解決手段】本発明は、記憶部と、データ書込部と、データ読出部と、データ修復部と、を有し、記憶部は、識別子で特定されるカウント記憶部と、カウント記憶部と関連付けされた極性情報データ記憶部とを備え、データ書込部は、循環的にカウント値を書き込むカウント書込部と、極性情報データ記憶部が記憶するデータの内容を反転させる極性情報データ反転部と、を備え、データ修復部は、カウント値の大きさで、識別子を並べるカウントソート部と、並べた識別子の順に沿って隣接するカウント値間の差分値を算出するカウント差分算出部と、識別子の並び方、差分値の並び方、および、極性情報データの並び方、に基づいて、カウント値の破損を検出して当該破損を修復する修復処理実行部と、を備える、カウントデータ記録装置である。【選択図】図４
2010003074.tif 000002
【特許請求の範囲】
【請求項１】
所定値から所定幅で単調に変化するカウント値をカウントデータとして記録装置に記録するカウントデータ記録装置であって、
前記カウントデータを記憶する記憶部と、
前記カウントデータを前記記憶部に書き込むデータ書込部と、
前記カウントデータを前記記憶部から読み出すデータ読出部と、
前記記憶部に記憶されたカウントデータの破損を検出し、該破損を修復するデータ修復部と、を有し、
前記記憶部は、
位置特定識別子によって特定され、カウントデータを記憶するカウントデータ記憶部を複数個と、前記カウントデータ記憶部のそれぞれと関連付けされ、第１値および第２値を示す２種類のデータから１つを択一的に記憶する極性情報データ記憶部を前記カウントデータ記憶部の個数と同数だけ備え、
前記データ書込部は、
前記複数個のカウントデータ記憶部のうちから所定の順序で循環的に１つのカウントデータ記憶部に対して前記カウントデータを書き込むカウントデータ書込部と、前記カウントデータ書込部がカウントデータを書き込んだカウントデータ記憶部と関連付けされた極性情報データ記憶部が記憶するデータの内容を、前記第１値と第２値との間で反転させる極性情報データ反転部と、を備え、
前記データ修復部は、
前記データ読出部が前記記憶部から読み出した、前記複数個のカウントデータ記憶部に記憶された複数のカウントデータについて、カウントデータの大きさで、カウントデータ記憶部の位置特定識別子を並べるカウントデータソート部と、
前記カウントデータソート部が並べた位置特定識別子の順に沿って、互いに隣接するカウントデータ間の差分値を算出するカウントデータ差分算出部と、
前記カウントデータソート部が並べた順に沿った位置特定識別子の並び方、前記カウントデータソート部が並べた順に沿った前記カウントデータ間の差分値の並び方、および、前記カウントデータソート部が並べた順に沿った前記極性情報データの並び方、に基づいて、前記記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する修復処理実行部と、を備える、カウントデータ記録装置。
【請求項２】
１つの前記位置特定識別子が特定する前記カウントデータ記憶部は、２つのメモリアドレスによって特定される２つの記憶領域を有し、前記カウントデータは、前記２つの記憶領域へ分割して記憶される、請求項１に記載のカウントデータ記録装置。
【請求項３】
前記所定値は、ゼロであり、前記所定幅は、プラス１である、請求項２に記載のカウントデータ記録装置。
【請求項４】
前記所定値は、ゼロを含まない自然数であり、前記所定幅は、マイナス１である、請求項２に記載のカウントデータ記録装置。
【請求項５】
前記カウントデータソート部は、カウントデータの大きさの降順で、カウントデータ記憶部の位置特定識別子を並べる、請求項３に記載のカウントデータ記録装置。
【請求項６】
前記カウントデータソート部は、カウントデータの大きさの昇順で、カウントデータ記憶部の位置特定識別子を並べる、請求項４に記載のカウントデータ記録装置。
【請求項７】
前記修復処理実行部は、前記カウントデータソート部が並べた順に沿って並べた前記極性情報データにおいて、極性情報データの値が変化する箇所の数を求め、求めた変化する箇所の数に基づいて、前記記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する、請求項１に記載のカウントデータ記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ等で構成される記憶領域へカウントデータを記録する装置、および、カウントデータ記録方法に関し、特に、該記憶領域に記録されたカウントデータにおいて生じた破損を検出し、当該検出にかかる破損したカウントデータを正常な状態へ修復するカウントデータ記録装置、および、記録方法に関する。
【背景技術】
【０００２】
従来、データの記録および保持には、メモリが利用される。特に、長期にわたって、データをメモリ内に保持する用途には、不揮発性メモリが用いられる。ここで、不揮発性メモリとは、電源を供給しなくても記憶を保持するメモリの総称である。
【０００３】
しかしながら、不揮発性メモリ（例えば、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory））は、一般に、データの書き込みに関する繰り返し耐性が小さい。例えば、不揮発性メモリの書き込み繰り返し耐性は、その種類によって様々だが、例えば、１００万回程度である。
【０００４】
特許文献１は、上記のような、書き込み繰り返し耐性が比較的小さいメモリへデータを書き込む方法、および、その装置を開示する。当該特許文献１においては、メモリのメモリアドレスを３つまとめて１組とし、当該１組を構成するメモリアドレスＡ、Ｂ、および、Ｃに対し、データの書き込みを循環的に、つまり、Ａ→Ｂ→Ｃ→Ａ→Ｂ→・・・、のように、実行することで、メモリの書き込み繰り返し耐性を超えた回数のデータ書き込みを可能とする。特許文献１の方法においては、上記循環的なデータの書き込みにおける「循環」を管理するため、各メモリアドレスについて、実データ部へのデータの書き込みが行われる毎に所定値が書き込まれるアクセス情報部が、実データを記録する実データ部と別に、設けられる。そして、特許文献１の方法においては、アクセス情報部に書き込まれた情報にもとづいて、次に、データが書き込まれるべきメモリアドレスが決定される。そうすることで、特許文献１は、メモリに対し、その書き込み繰り返し耐性を超えた回数のデータ書き込みを可能にする。
【０００５】
特許文献１が開示する発明は、当該発明が適用されるメモリに書き込まれるデータの内容について、特に、規定したり、あるいは、限定したりはしない。
【０００６】
従来、特定のデータのみを記録する用途にメモリが用いられることもある。このような特定のデータの例としては、カウントデータがある。カウントデータとは、特定の値から所定値ずつインクリメントされて記録されることによって、何らかの回数をカウントするために用いられるデータである。（上記所定値が負の数であれば、カウントデータは、上記特定の値からデクリメントされつつ、順次、記録されるデータである。）カウントデータは、例えば、特定のデバイス（例えば、画像処理装置の感光体ユニット）が動作した回数を記録する用途に用いられる。
【０００７】
このようなカウントデータを、書き込み繰り返し耐性が比較的小さいメモリに記録する場合には、以下に記すようにしてカウントデータをメモリへ記録し、また、データが破壊されたときにはその修復を行っている。
【０００８】
例えば、メモリの１つのアドレスに対する書き込み繰り返し耐性が１００万回であるメモリを用いて、３００万回のカウントデータの書き込みを行う場合、３つのアドレスを用いて、３つのアドレスに対し、順次的に、カウントデータの書き込みを行う。カウントデータは、所定値ずつ増加（あるいは減少）するため、上記３つのアドレスには、所定値ずつ増加（あるいは減少）する３つの値が、記録される。
【０００９】
カウントデータには、所定値ずつ増加（あるいは減少）するという性質が備わっているため、記録されたカウントデータが破壊された場合であっても、破壊されていないカウントデータの値を用いて、当該値に所定値あるいは所定値の２倍の値を加算（あるいは減算）して得られる値を、破壊されたアドレスに書き込むことで、破壊されたカウントデータを修復することができる。
【００１０】
このように、メモリの１つのアドレスに対する書き込み繰り返し耐性が１００万回であるメモリを用いる場合、３つのアドレスを用いることで３００万回のカウントデータの書き込み、および、その修復が可能である。
【００１１】
上記例と少し異なり、メモリの１つのアドレスに対する書き込み繰り返し耐性が１００万回であるメモリを用いて、３５０万回のカウントデータの書き込みを行う用途の場合、次のようにして、３５０万回のカウントデータの記録を実現している。
【００１２】
先ず、所定の回数（例えば、９７万回）までは、先の別例と同様に、３つのアドレスに対し、順次的に、カウントデータの書き込みを行う。ここからは、先の別例とは異なり、上記３つのアドレスとは別の３つのアドレスに対し、順次的に、カウントデータの書き込みが開始される。
【００１３】
このような方法論によれば、３５０万回のカウントデータの書き込みを行うためには、カウントデータが書き込まれる６つのアドレスと、上記３つのアドレスそれぞれに対する書き込み回数を保持するための３つのアドレスと、上記３つのアドレス群および上記別の３つのアドレス群のいずれのアドレス群をカウントデータとして使用するかを示すデータが保持されるための１つのアドレスと、の総計１０個のアドレスが必要になる。
【００１４】
理論上、３５０万回の書き込みがなされるカウントデータの記録は、１００万回のデータ書き込みが可能なアドレスを４つ使えば足りる。にも拘わらず、上記従来例においては、１０個のアドレスを用いて、カウントデータの記録（および破損されたカウントデータの修復）を行っていた。このことは、メモリの利用効率の観点から好ましいこととは言えない。
【特許文献１】特開平１０−２４７１６５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記従来の問題点を鑑み、本発明は、メモリの利用効率が向上され、かつ、破損を受けたカウントデータを修復できるカウントデータ記録装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、所定値から所定幅で単調に変化するカウント値をカウントデータとして記録装置に記録するカウントデータ記録装置であって、カウントデータを記憶する記憶部と、カウントデータを記憶部に書き込むデータ書込部と、カウントデータを記憶部から読み出すデータ読出部と、記憶部に記憶されたカウントデータの破損を検出し、該破損を修復するデータ修復部と、を有し、記憶部は、位置特定識別子によって特定され、カウントデータを記憶するカウントデータ記憶部を複数個と、カウントデータ記憶部のそれぞれと関連付けされ、第１値および第２値を示す２種類のデータから１つを択一的に記憶する極性情報データ記憶部をカウントデータ記憶部の個数と同数だけ備え、データ書込部は、複数個のカウントデータ記憶部のうちから所定の順序で循環的に１つのカウントデータ記憶部に対してカウントデータを書き込むカウントデータ書込部と、カウントデータ書込部がカウントデータを書き込んだカウントデータ記憶部と関連付けされた極性情報データ記憶部が記憶するデータの内容を、第１値と第２値との間で反転させる極性情報データ反転部と、を備え、データ修復部は、データ読出部が記憶部から読み出した、複数個のカウントデータ記憶部に記憶された複数のカウントデータについて、カウントデータの大きさで、カウントデータ記憶部の位置特定識別子を並べるカウントデータソート部と、カウントデータソート部が並べた位置特定識別子の順に沿って、互いに隣接するカウントデータ間の差分値を算出するカウントデータ差分算出部と、カウントデータソート部が並べた順に沿った位置特定識別子の並び方、カウントデータソート部が並べた順に沿ったカウントデータ間の差分値の並び方、および、カウントデータソート部が並べた順に沿った極性情報データの並び方、に基づいて、記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する修復処理実行部と、を備える、カウントデータ記録装置である。
【００１７】
本発明においては、１つの位置特定識別子が特定するカウントデータ記憶部は、２つのメモリアドレスによって特定される２つの記憶領域を有し、カウントデータは、２つの記憶領域へ分割して記憶される、ことが好ましい。
【００１８】
本発明においては、所定値は、ゼロであり、所定幅は、プラス１である、ことが好ましい。
【００１９】
本発明においては、所定値は、ゼロを含まない自然数であり、所定幅は、マイナス１である、ことが好ましい。
【００２０】
本発明においては、カウントデータソート部は、カウントデータの大きさの降順で、カウントデータ記憶部の位置特定識別子を並べる、ことが好ましい。
【００２１】
本発明においては、カウントデータソート部は、カウントデータの大きさの昇順で、カウントデータ記憶部の位置特定識別子を並べる、ことが好ましい。
【００２２】
本発明においては、修復処理実行部は、カウントデータソート部が並べた順に沿って並べた極性情報データにおいて、極性情報データの値が変化する箇所の数を求め、求めた変化する箇所の数に基づいて、記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する、ことが好ましい。
【発明の効果】
【００２３】
本発明によるカウントデータ記録装置およびカウントデータ記録方法は、メモリの利用効率に優れ、かつ、記録されたカウントデータが破損を受けた場合には、当該破損を修復し、正確なカウントデータに戻すことが可能である。
【発明を実施するための最良の形態】
【００２４】
本発明にかかるカウントデータ記録装置は、記憶装置の書き込み繰り返し耐性を超えてカウントデータを記録することが可能である。
【００２５】
また、本発明にかかるカウントデータ記録装置は、カウントデータの破損を検出し、検出した破損を修復することが可能である。
【００２６】
＜カウントデータ記録装置の構成＞
図１は、本発明にかかる実施の形態によるカウントデータ記録装置を示す斜視図である。本実施の形態においては、カウントデータ記録装置は、デジタル複合機（ＭＦＰ）１である。ＭＦＰ１は、所謂、画像形成装置であり、画像形成のためにトナーカートリッジ３、および、感光体ユニット５を、内部に備える。
【００２７】
図２は、感光体ユニット５の斜視図である。感光体ユニット５は、その使用回数をカウントするカウントデータを記録するための記憶装置７を備える。記憶装置７は、データ書き込みについて、記憶領域に繰り返し書き込むことができる回数が規定されており、規定された繰り返し回数を超えて、データを書き込むことは、データ記録の安定性を損なう。
【００２８】
図３は、本発明にかかる実施の形態によるカウントデータ記録装置であるＭＦＰ１のハードウェア構成を示すブロック図である。ＭＦＰ１は、データ処理や装置全体の動作の制御をする中央処理装置（ＣＰＵ）１１、プログラムやデータを保持するランダム・アクセス・メモリ（ＲＡＭ）１３、プログラムやデータを保持するリード・オンリ・メモリ（ＲＯＭ）１５を備え、これらはデータバスにより接続され、ＭＦＰ１内においてコンピュータを構成する。当該コンピュータは、カウントデータ記録用プログラムを実行することにより、カウントデータ記録装置として機能する。
【００２９】
また、ＭＦＰ１のコンピュータ２１は、カウントデータを記録するための記憶装置７、各種デバイスとのデータ送受信をするためのＩ／ＯＬＳＩ１７と接続される。Ｉ／ＯＬＳＩ１７を介し、コンピュータ２１は、出力デバイス１９および入力デバイス２１と接続される。
【００３０】
図４は、本発明の実施の形態によるカウントデータ記録装置にかかる機能を実現するためにＭＦＰ１が備える機能を表すブロック図である。コンピュータ２１は、カウントデータ記録用プログラムを実行することにより、本図に示される機能を実現する。
【００３１】
コンピュータ２１は、各機能ブロックを制御する制御部２３、記憶装置７に対しデータを所定のアドレスに書き込むデータ書込部２５、記憶装置７に記録されているカウントデータ等の破損を検出し、当該破損を修復するデータ修復部２７、記憶装置７から所定のアドレスに記録されたデータを読み出すデータ読出部２９、および、カウントデータ記録用プログラムの実行に必要な設定データを保持する設定データ保持部３１を実現する。
【００３２】
データ書込部２５は、記憶装置７の所定のアドレスを有する記憶領域に、所定の形式でカウントデータを記録するカウントデータ書込部２５ａ、および、記憶装置７の所定のアドレスを有する記憶領域に、所定の形式で極性情報データを記録する極性情報データ反転部２５ｂを備える。
【００３３】
カウントデータは、カウントデータ書込部２５ａによって、記憶装置７の、複数のアドレスで指定される複数の記憶領域を用いて、循環的に記録される。例えば、カウントデータは、アドレス［Ａ］、アドレス［Ｂ］、アドレス［Ｃ］、アドレス［Ｄ］、アドレス［Ｅ］の５つのアドレスで指定される記憶領域を循環するようにして、記録される。アドレス［Ａ］にカウントデータが記録された次の記録においては、アドレス［Ｂ］に対しカウントデータの記録が行われる。このようにして、順にアドレス［Ｅ］まで使用されると、次は、アドレス［Ａ］にカウントデータが記録される。以下同様にして、所定数（Ｎ個）のアドレスについて、循環的に、カウントデータの記録が行われる。ここで、Ｎは、任意の自然数である。本発明は、Ｎの値について特に限定しない。但、繰り返し書き込み可能な回数がＲ［回］（自然数）である記憶装置において、数Ｃｍｉｎから数Ｃｍａｘまで、インクリメント幅Ｓ（負数Ｓは、そのＳの絶対値がデクリメント幅を表す。）でカウントデータを記録する場合、少なくとも、（Ｃｍａｘ−Ｃｍｉｎ＋１）／Ｓ／Ｒ以上の自然数だけアドレスが必要である。記憶装置７の記憶領域の効率的使用の観点からは、（Ｃｍａｘ−Ｃｍｉｎ＋１）／Ｓ／Ｒ以上の最小の自然数が最も有利である。なお、１つのカウントデータが、１つのアドレスによって指定される記憶領域に記録できない場合、１つのカウントデータの記録に複数のアドレスを使用する必要が生じるが、その場合に最低限必要な、アドレスの数（Ｎ）については、当業者にとって明らかであろう。
【００３４】
極性情報データとは、カウントデータが記録されるアドレスと関連付けられ、カウントデータの破損および修復に用いられるデータである。極性情報データとカウントデータの関連付けは、設定データ保持部３１に保持されればよい。この、極性情報データは、第１値および第２値（例えば「１」および「０」。）の２種類の値を取り得るデータであり、通常の、（つまり、データ破損の修復でない、）カウントデータの書き込みにおいて、極性情報データ反転部２５ｂによって、当該書き込みがなされたアドレスと関連付けられた極性情報データが、第１値と第２値との間で、書き込み直前の値から反転するように変更されて記録される。１つの極性情報データは、１ビットの記憶領域に記録できる大きさにすることができる。極性情報データは、例えば、カウントデータが記録されるアドレスの記憶領域と同一の記憶領域の先頭Ｐビット（Ｐは１以上の整数。）を用いて記録すればよい。また、極性情報データは、カウントデータが記録されるアドレスの記憶領域とは別の記憶領域を用いて記録してもよい。但、カウントデータの記録と同一のアドレス内に極性情報データを記録するほうが、メモリ使用効率の観点から有利である。
【００３５】
データ修復部２７は、データ読出部２９が読み出した複数の所定のアドレスに記録されたカウントデータを所定の規則（降順または昇順）で並べ替え、並べ替えた結果を出力するカウントデータソート部２７ａ、カウントデータソート部２７ａが並べ替えた複数のカウントデータについて互いに隣接するカウントデータ間の差分を算出するカウントデータ差分算出部２７ｂ、ならびに、カウントデータソート部２７ａがしたカウントデータの並べ替え、カウントデータ差分算出部２７ｂが算出したカウントデータ差分値、および、各カウントデータ（のアドレス）と関連付けされた極性情報データに基づいて、カウントデータの破損を検出し検出された破損を修復する修復処理実行部２７ｃを備える。
【００３６】
修復処理実行部２７ｃは、データ破損の検出のための処理、および、検出されたデータ破損の修復のための処理、を実行する。
【００３７】
データ破損の検出処理は、上記並べ替えされたカウントデータの並び方とそれらに関連付けられた極性情報データの並び方とそれらの上記カウントデータ差分値の並び方との組み合わせを、正常な（データ破損が含まれない）カウントデータを上記並べ替えした場合に起こり得る、カウントデータの並び方とそれらと関連付けられた極性情報データの並び方とデータ差分値の並び方との組み合わせと比較することで、データ破損の生じているカウントデータおよびそれと関連付けられた極性情報データを特定する。上記正常なカウントデータについて起こり得る組み合わせは、データ破損の検出処理を実行する前に、予め求めておき、装置に保持されている。上記起こり得る組み合わせの数は、カウントデータの記録に用いるアドレスの数によって変化するが、用いるアドレスの数によらず有限である。
【００３８】
データ破損の修復処理は、データ破損の検出処理が検出した破損を含むカウントデータについて、上記正常なカウントデータを上記並べ替えした場合に起こり得る、上記カウントデータと極性情報データとデータ差分値の並び方の組み合わせに基づいて、正常なカウントデータ値を求め、修復処理実行部２７ｃがデータ修復の指示を出力し、当該指示にもとづいて、データ書込部２５のカウントデータ書込部２５ａが、正常なカウントデータ値を該当する記憶領域に書き込むことによって行われる。このとき、当該修復にかかるカウントデータと関連付けられた極性情報データも修復の必要が有る場合、データ書込部２５の極性情報データ反転部２５ｂが、上記データ修復の指示に基づいて、修復されたカウントデータと関連付けられた極性情報データを反転させる。
【００３９】
設定データ保持部３１は、記憶装置７の、カウントデータを記録するために用意されている複数のアドレス、当該複数のアドレスに記録されるカウントデータそれぞれに関連付けて記録される極性情報データの記録されているアドレス、次回のカウントデータの記録においてカウントデータを記録するべきアドレス等を保持する。
【００４０】
＜記憶装置７が保持するデータの構成＞
図５は、記憶装置７において、１つのアドレスによって指定される記憶領域のデータ構成を示す図である。
【００４１】
アドレスとは、一般に、情報処理において、その処理の対象が存在する場所を規定する識別子である。本明細書においては、アドレスは、記憶装置７における記憶領域の位置の特定のために用いる識別子を含む。
【００４２】
１つのアドレス（アドレス［Ｘ］）によって特定される記憶領域は、さらに極性情報データを保持する極性情報部３３ｐと、カウントデータを保持するカウントデータ部３３と、に区分される。
【００４３】
ここでは、１つのアドレスによって指定される記憶領域は、Ｍビット幅を有する。ここでＭは、自然数である。本発明は、この自然数Ｍについて、特に限定しない。アドレス［Ｘ］によって指定される記憶領域は、極性情報データを記憶するための、Ｐビット幅を有する極性情報データ記憶部３３ｐと、カウントデータを記憶するための、Ｍ−Ｐビット幅を有するカウントデータ記憶部３３とで構成される。
【００４４】
なお、１つのカウントデータに関連付けて記憶される１つ極性情報データは、当該１つのカウントデータが記憶されるアドレスとは異なるアドレスに記憶されてもよい。
【００４５】
１つのアドレスによって特定される記憶位置の記憶容量が、１つのカウントデータを記憶するのに必要な記憶容量に満たない場合には、複数のアドレスによって特定される複数の記憶位置に、当該１つのカウントデータを分割して記憶すればよい。その場合、該複数の記憶位置に分割して記憶される１つのカウントデータに関連付けて１つの極性情報データを、任意のアドレスに記憶すればよい。このとき、該１つの極性情報データが記憶されるアドレスは、該極性情報データと関連付けられたカウントデータを記憶する複数の記憶位置のいずれかに含まれてよい。あるいは、該１つの極性情報データは、上記の複数の記憶位置とは別の記憶位置であってもよい。
【００４６】
＜カウントデータ記録動作＞
図６は、本発明にかかる実施の形態によるカウントデータ記録装置（ＭＦＰ１）がする、記憶装置７に対するカウントデータの記録の例を示す図である。
【００４７】
本例では、各カウントデータは、１つのアドレスが指定する記憶領域に記録される。各カウントデータと関連付けられた極性情報データは、カウントデータと同一のアドレスに記録される。また、本例では、カウントデータを記録するために設定されるアドレスは、５つに設定される。つまり、本例では、５つのアドレス（［Ａ］、［Ｂ］、［Ｃ］、［Ｄ］、［Ｅ］）それぞれに、カウントデータと、極性情報データとが記録される。カウントデータの記録は、アドレスに関し、［Ａ］→［Ｂ］→［Ｃ］→［Ｄ］→［Ｅ］→［Ａ］→［Ｂ］→・・・の順に、循環的に行われる。
【００４８】
初期状態において、アドレス［Ａ］、アドレス［Ｂ］、アドレス［Ｃ］、アドレス［Ｄ］、アドレス［Ｅ］、のカウントデータは、それぞれ、−４、−３、−２、−１、０である。これは、カウント値の開始値が１である場合の初期状態である。極性情報データは、全てのアドレスにおいて、０（第２値）である。初期状態において、極性情報データは、全てのアドレスにおいて、同一である必要がある。但、その値は、１（第１値）であってもかまわない。
【００４９】
第１回目のカウントデータの書き込みは、アドレス［Ａ］に対して行われる。カウント数「１」の行は、第１回目のカウントデータの書き込みが完了した時点の、各アドレスにおいて保持されるデータの値を示す。第１回目のカウントデータの書き込みにおいては、カウントデータ書込部２５ａが、アドレス［Ａ］に、カウントデータ「１」を書き込み、極性情報データ反転部２５ｂが、その極性情報データを反転させて「１」にする。
【００５０】
本例においては、以降、インクリメント幅「１」で、カウントデータの書き込みが行われる。
【００５１】
カウント数「５」が、アドレス［Ｅ］に対して書き込まれた次の書き込みでは、アドレス［Ａ］にカウントデータ「６」が書き込まれ、極性情報データは、再度反転されることにより「０」に戻る。
【００５２】
以下同様にして、カウントデータは、５つのアドレスに対して、循環的に書き込まれて保持される。
【００５３】
＜カウントデータ修復動作＞
≪破損検出の原理≫
図７は、図６における各行（各カウント値）について、カウントデータの値の大きさで降順にアドレスを並べ替えたときのアドレスの並び方を示す図である。なお、インクリメント幅が負の数である場合、アドレスを、カウントデータの大きさの昇順に並べ替えることになる。いずれの場合も、破損検出の原理は、同一である。
【００５４】
例えば、カウント数「６」の場合を見れば、アドレスの並び方は、
［Ａ］→［Ｅ］→［Ｄ］→［Ｃ］→［Ｂ］となり、その並び方において、
極性情報データの並び方は、
「０」→「１」→「１」→「１」→「１」となる。
【００５５】
また、例えば、カウント数「１１」の場合を見れば、アドレスの並び方は、
［Ａ］→［Ｅ］→［Ｄ］→［Ｃ］→［Ｂ］となるが、その並び方において、
極性情報データの並び方は、
「１」→「０」→「０」→「０」→「０」となる。
【００５６】
一般に、５つのアドレス（［Ａ］［Ｂ］［Ｃ］［Ｄ］［Ｅ］）を用いてカウントデータを循環的に記録する場合、正常なカウントデータが記録されている状態でカウントデータの大きさの降順でアドレスを並び替えると、
［Ｅ］→［Ｄ］→［Ｃ］→［Ｂ］→［Ａ］、
［Ａ］→［Ｅ］→［Ｄ］→［Ｃ］→［Ｂ］、
［Ｂ］→［Ａ］→［Ｅ］→［Ｄ］→［Ｃ］、
［Ｃ］→［Ｂ］→［Ａ］→［Ｅ］→［Ｄ］、
［Ｄ］→［Ｃ］→［Ｂ］→［Ａ］→［Ｅ］、の５通りが、カウント値順に現れる。
【００５７】
各並び方について、極性情報データの並び方は、２通り現れる。
例えば、
［Ｂ］→［Ａ］→［Ｅ］→［Ｄ］→［Ｃ］の順にアドレスが並ぶときは（例えば、カウント値「１２」やカウント値「１７」のときは）、極性情報データの並び方は、
「１」→「１」→「０」→「０」→「０」、または、
「０」→「０」→「１」→「１」→「１」、の２通りが交代的に現れる。
【００５８】
ここでは、アドレスの並び方［Ｂ］→［Ａ］→［Ｅ］→［Ｄ］→［Ｃ］について例示したが、他の並び方についても同様のことがいえる。
【００５９】
つまり、アドレスをＮ個用いて、循環的にカウントデータを書き込むと、正常なカウントデータが記録されている状況では、カウントデータの大きさでアドレスを並び替えた場合、アドレスの並び方は、Ｎ通り存在する。そして、各アドレスの並び方について、極性情報データの並び方は、常に、２通り存在するから、正常なカウントデータが記録されている状況では、アドレスの並び方と極性情報データの並び方との組み合わせは、２×Ｎ通り存在する。
【００６０】
次に、図８を参照し、アドレスをカウントデータの降順に並べ替えたときに隣接するアドレスに記録されたカウントデータ間の差分値について考察する。
【００６１】
図８は、正常なカウントデータが記録されている状況における、アドレスをカウントデータの降順に並べ替えたときに隣接するアドレスに記録されたカウントデータ間の差分値を示す図である。このように、正常なカウントデータが記録され続ける限り、アドレスをカウントデータの降順に並べ替えたときに隣接するアドレスに記録されたカウントデータ間の差分値は、全て、常に、インクリメント幅（本例における「１」）と一致する。
【００６２】
図９は、アドレスをカウントデータの降順で並べ替えた時に起こり得るアドレスの並び方の一覧である。このように、起こり得る、アドレスの並び方は、５通り（Ｎ通り）である。
【００６３】
図１０は、アドレスをカウントデータの降順で並べ替えた時に起こり得る、各アドレスと関連付けられた極性情報データの並び方の一覧である。このように、起こり得る、極性情報データの並び方は、１０通り（２×Ｎ通り）である。
【００６４】
また、アドレスの並び方（図９）と、極性情報データの並び方（図１０）とは、相互に関連して現れる。
【００６５】
図１１は、アドレスの並び方（「アドレス組み合わせ」）と、その並び方において起こり得る極性情報の並び方（「極性情報組み合わせ」）についてまとめた表である。このように、起こり得る『「アドレス組み合わせ」と「極性情報組み合わせ」との組み合わせ』は、２×Ｎ通り存在する。
【００６６】
≪破損検出処理および破損修復処理の流れ≫
これより、図１２、図１３、図１４ＡおよびＢ、図１５ＡおよびＢ、図１６ＡおよびＢ、図１７ＡおよびＢ、図１８ＡおよびＢを参照し、破損検出処理および破損修復処理について説明する。
図１２は、カウントデータ破損の検出および修復のメインフローのフローチャートである。
図１３は、図１２においてステップＳ２０１としたカウントデータ修復処理選択処理のフローチャートである。
図１４ＡおよびＢないし図１８ＡおよびＢは、それぞれ、図１３において、ステップＳ３０１ａ、ステップＳ３０１ｂ、ステップＳ３０１ｃ、ステップＳ３０１ｄ、ステップＳ３０１ｅ、とした、カウントデータ修復処理Ａ、カウントデータ修復処理Ｂ、カウントデータ修復処理Ｃ、カウントデータ修復処理Ｄ、カウントデータ修復処理Ｅ、のフローチャートである。
【００６７】
先ず、図１２を参照する。
【００６８】
ステップＳ１０１において、カウントデータ記録装置（ＭＦＰ１）のカウントデータソート部２７ａは、アドレスを、各アドレスに記録されているカウントデータの値の降順に、並び替えする。
【００６９】
ステップＳ１０３において、カウントデータ差分算出部２７ｂは、ステップＳ１０１で並び替えされたアドレスの並び方において隣接し合うアドレスに記録されたカウントデータ間の差分を算出する。
【００７０】
ステップＳ１０５において、修復処理実行部２７ｃは、各アドレスに関連付けられた極性情報データをステップＳ１０１で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。つまり、上記した並び方において隣接した極性情報データにおいてその値が、第１値から第２値へ（「１」から「０」へ）、および、第２値から第１値へ（「０」から「１」へ）変化している箇所の数を求める。
【００７１】
ステップＳ１０７において、修復処理実行部２７ｃは、ステップＳ１０５で求めた極性情報データ値変化回数にもとづき、以降の処理を分岐させる。極性情報データ値変化回数が、０回の場合（ステップＳ１０７における「極性情報変化回数０回」）、処理は、ステップＳ１０９へ移行する。極性情報データ値変化回数が、１回の場合（ステップＳ１０７における「極性情報変化回数１回」）、処理は、ステップＳ２０１へ移行する。極性情報データ値変化回数が、２回以上の場合（ステップＳ１０７における「極性情報変化回数２回以上」）、処理は、ステップＳ１１１へ移行する。
【００７２】
｛極性情報データ値変化回数が０回の場合の処理｝
ステップＳ１０９において、修復処理実行部２７ｃは、カウントデータ値間差分値が全て１（インクリメント幅Ｓ）であり、かつ、ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［５］（図９参照。）であるか、否か、について判定する。
カウントデータ値間差分値が全て１（インクリメント幅Ｓ）であり、かつ、ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［５］（図９参照。）である場合（ステップＳ１０９における「ＹＥＳ」）、処理は、終了する。つまり、データ破損は生じていないと判断され、破損検出処理は終了される。
１（インクリメント幅Ｓ）でないカウントデータ値間差分値が存在する場合、および、ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［５］（図９参照。）でない場合のいずれかに該当する場合（ステップＳ１０９における「ＮＯ」）、処理は、ステップＳ３０１ｅ（カウントデータ修復処理Ｅ（詳細は図１８ＡおよびＢ））へ移行する。
【００７３】
｛極性情報データ値変化回数が１回の場合の処理｝
処理は、ステップＳ２０１（カウントデータ修復処理選択処理）へ移行する。カウントデータ修復処理選択処理ステップＳ２０１については、後で図１３を参照して詳述する。
【００７４】
｛極性情報データ値変化回数が２回の場合の処理｝
ステップＳ１１１において、修復処理実行部２７ｃは、カウントデータ値間差分値が全て１（インクリメント幅Ｓ）である場合、ならびに、ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［１］、［２］、［３］、［４］、および、［５］（図９参照。）のいずれかである場合、のいずれかに該当するか、否か、について判定する。
カウントデータ値間差分値が全て１（インクリメント幅Ｓ）である場合、ならびに、ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［１］、［２］、［３］、［４］、および、［５］（図９参照。）のいずれかである場合、のいずれかに該当する場合（ステップＳ１１１における「ＹＥＳ」）、処理は、ステップＳ２０１（カウントデータ修復処理選択処理）へ移行する。
１（インクリメント幅Ｓ）でないカウントデータ値間差分値が存在し、かつ、ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［１］、［２］、［３］、［４］、および、［５］（図９参照。）のいずれにも該当しない場合（ステップＳ１１１における「ＮＯ」）、処理は、ステップＳ１１３へ移行する。
【００７５】
ステップＳ１１３において、修復処理実行部２７ｃは、正しく修復できないデータ破損が生じていると判断し、その旨を示唆する情報を出力し、処理を終了する。
【００７６】
｛カウントデータ修復処理選択処理の流れ（ステップＳ２０１詳細）｝
これより、図１３を参照し、カウントデータ修復処理選択処理（図１２におけるステップＳ２０１）について説明する。カウントデータ修復処理選択処理は、修復処理実行部２７ｃが行うデータ破損検出のための処理の一部である。
【００７７】
ステップＳ２０３において、修復処理実行部２７ｃは、ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［１］、［２］、［３］、［４］、および、［５］（図９参照。）のいずれかに該当するか、否か、判定する。
ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［１］、［２］、［３］、［４］、および、［５］（図９参照。）のいずれかに該当する、と判定した場合（ステップＳ２０３における「ＹＥＳ」）、処理は、ステップＳ２０５へ移行する。
ステップＳ１０１で並び替えられたアドレスの並び方が、アドレス組み合わせＧｒ．［１］、［２］、［３］、［４］、および、［５］（図９参照。）のいずれにも該当しない、と判定した場合（ステップＳ２０３における「ＮＯ」）、処理は、ステップＳ２０９へ移行する。
【００７８】
ステップＳ２０５において、修復処理実行部２７ｃは、カウントデータ値間差分値が全て１（インクリメント幅Ｓ）であるか、否か、について判定する。
カウントデータ値間差分値が全て１（インクリメント幅Ｓ）である、と判定した場合（ステップＳ２０５における「ＹＥＳ」）、カウントデータ修復処理選択処理は終了し、メインフロー（図１２）へ戻る。
１（インクリメント幅Ｓ）でないカウントデータ値間差分値が存在する、と判定した場合（ステップＳ２０５における「ＮＯ」）、処理は、ステップＳ２０７へ移行する。
【００７９】
ステップＳ２０７において、修復処理実行部２７ｃは、ステップＳ１０１で並び替えられたアドレスの並び方にもとづき、以降の処理を分岐させる。
該並び方が、アドレス組み合わせＧｒ．［１］（図９参照。）である場合、処理は、ステップＳ３０１ａ（カウントデータ修復処理Ａ）へ移行する。
該並び方が、アドレス組み合わせＧｒ．［２］（図９参照。）である場合、処理は、ステップＳ３０１ｂ（カウントデータ修復処理Ｂ）へ移行する。
該並び方が、アドレス組み合わせＧｒ．［３］（図９参照。）である場合、処理は、ステップＳ３０１ｃ（カウントデータ修復処理Ｃ）へ移行する。
該並び方が、アドレス組み合わせＧｒ．［４］（図９参照。）である場合、処理は、ステップＳ３０１ｄ（カウントデータ修復処理Ｄ）へ移行する。
該並び方が、アドレス組み合わせＧｒ．［５］（図９参照。）である場合、処理は、ステップＳ３０１ｅ（カウントデータ修復処理Ｅ）へ移行する。
カウントデータ修復処理Ａ、Ｂ、Ｃ、Ｄ、Ｅ（ステップＳ３０１ａ、ｂ、ｃ、ｄ、ｅ）の詳細については、それぞれ、図１４ＡおよびＢ、図１５ＡおよびＢ、図１６ＡおよびＢ、図１７ＡおよびＢ、図１８ＡおよびＢを参照し、後述する。
【００８０】
次に、処理が、ステップＳ２０３から、ステップＳ２０９へ移行した後の処理について説明する。
【００８１】
ステップＳ２０９において、修復処理実行部２７ｃは、アドレス［Ａ］、［Ｂ］、［Ｃ］、［Ｄ］、［Ｅ］に記録されているカウントデータのなかで、最大のカウントデータを保持しているアドレスを求める。具体的には、ステップＳ１０１で並び替えられたアドレスの並びの先頭にあるアドレスを特定する。（インクリメント幅が、負数の場合には、最小のカウントデータを保持しているアドレスを求める。）
【００８２】
ステップＳ２１１において、修復処理実行部２７ｃは、ステップＳ２０９で求めた最大のカウントデータを保持するアドレスにもとづいて、以降の処理を分岐させる。
該アドレスが、アドレス［Ａ］である場合、処理は、ステップＳ３０１ａ（カウントデータ修復処理Ａ）へ移行する。
該アドレスが、アドレス［Ｂ］である場合、処理は、ステップＳ３０１ｂ（カウントデータ修復処理Ｂ）へ移行する。
該アドレスが、アドレス［Ｃ］である場合、処理は、ステップＳ３０１ｃ（カウントデータ修復処理Ｃ）へ移行する。
該アドレスが、アドレス［Ｄ］である場合、処理は、ステップＳ３０１ｄ（カウントデータ修復処理Ｄ）へ移行する。
該アドレスが、アドレス［Ｅ］である場合、処理は、ステップＳ３０１ｅ（カウントデータ修復処理Ｅ）へ移行する。
カウントデータ修復処理Ａ、Ｂ、Ｃ、Ｄ、Ｅ（ステップＳ３０１ａ、ｂ、ｃ、ｄ、ｅ）の詳細については、それぞれ、図１４ＡおよびＢ、図１５ＡおよびＢ、図１６ＡおよびＢ、図１７ＡおよびＢ、図１８ＡおよびＢを参照し、以下に説明する。
【００８３】
｛カウントデータ修復処理Ａ（ステップＳ３０１ａ）｝
図１４ＡおよびＢは、カウントデータ修復処理Ａ（図１３におけるステップＳ３０１ａ）の処理の詳細を示すフローチャートである。カウントデータ修復処理Ａは、主として修復処理実行部２７ｃが行う処理である。ただし、カウントデータの修復（正しいカウントデータの書き込み）は、修復処理実行部２７ｃの出力に基づいてデータ書込部２５が行う。
【００８４】
ステップＳ３０３ａにおいて、修復処理実行部２７ｃは、アドレス［Ａ］の極性情報データ（表現に正確を期すならば、アドレス［Ａ］に関連付けられた極性情報データ）が、「１」（第１値）であるか、否かについて判定する。
アドレス［Ａ］の極性情報データが、「１」（第１値）である場合（ステップＳ３０３ａにおける「ＹＥＳ」）、処理は、ステップＳ３０５ａへ移行する。
アドレス［Ａ］の極性情報データが、「１」（第１値）でない場合（ステップＳ３０３ａにおける「ＮＯ」）、処理は、ステップＳ３３１ａへ移行する。
【００８５】
ステップＳ３０５ａにおいて、修復処理実行部２７ｃは、現在記録されている全てのカウントデータが正常であるなら、ステップＳ１０１で並び替えられたアドレスの並び方は、アドレス組み合わせＧｒ．［１］（図９）に一致し、かつ、ステップＳ１０１で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせＧｒ．［１］（図１０）に一致する、と認識する。
修復処理実行部２７ｃは、以下の処理においては、アドレス組み合わせＧｒ．［１］（図９）および極性情報組み合わせＧｒ．［１］（図１０）に従ってカウントデータの修復を行う。
【００８６】
ステップＳ３０７ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ａ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【００８７】
ステップＳ３０９ａにおいて、修復処理実行部２７ｃは、ステップＳ３０７ａで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｅ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［１］（図１０）に従う、との認識にもとづく。
ステップＳ３０７ａで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｅ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３０９ａにおける「ＹＥＳ」）、処理は、ステップＳ３１３ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｅ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３０９ａにおける「ＮＯ」）、処理は、ステップＳ３１１ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【００８８】
ステップＳ３１１ａにおいて、修復処理実行部２７ｃは、アドレス［Ｅ］のカウントデータの値を、ステップＳ３０７ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｅ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｅ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｅ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【００８９】
ステップＳ３１３ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ｅ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【００９０】
ステップＳ３１５ａにおいて、修復処理実行部２７ｃは、ステップＳ３１３ａで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｄ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［１］（図１０）に従う、との認識にもとづく。
ステップＳ３１３ａで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｄ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３１５ａにおける「ＹＥＳ」）、処理は、ステップＳ３１３ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｄ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３１５ａにおける「ＮＯ」）、処理は、ステップＳ３１７ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【００９１】
ステップＳ３１７ａにおいて、修復処理実行部２７ｃは、アドレス［Ｄ］のカウントデータの値を、ステップＳ３１３ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｄ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｄ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｄ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【００９２】
ステップＳ３１９ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ｄ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【００９３】
ステップＳ３２１ａにおいて、修復処理実行部２７ｃは、ステップＳ３１９ａで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｃ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［１］（図１０）に従う、との認識にもとづく。
ステップＳ３１９ａで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｃ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３２１ａにおける「ＹＥＳ」）、処理は、ステップＳ３１３ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｃ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３２１ａにおける「ＮＯ」）、処理は、ステップＳ３２１ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【００９４】
ステップＳ３２３ａにおいて、修復処理実行部２７ｃは、アドレス［Ｃ］のカウントデータの値を、ステップＳ３１９ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｃ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｃ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｃ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【００９５】
ステップＳ３２５ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ｃ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【００９６】
ステップＳ３２７ａにおいて、修復処理実行部２７ｃは、ステップＳ３２５ａで求めた修復用カウントデータ（アドレス［Ｃ］のカウントデータから１を引いた値）と、現在アドレス［Ｂ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｂ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［１］（図１０）に従う、との認識にもとづく。
ステップＳ３２５ａで求めた修復用カウントデータ（アドレス［Ｃ］のカウントデータから１を引いた値）と、現在アドレス［Ｂ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｂ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３２７ａにおける「ＹＥＳ」）、処理は、ステップＳ３１３ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｂ］に記録されたカウントデータおよびアドレス［Ｂ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｂ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｂ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３２７ａにおける「ＮＯ」）、処理は、ステップＳ３２９ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｂ］に記録されたカウントデータおよびアドレス［Ｂ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【００９７】
ステップＳ３２９ａにおいて、修復処理実行部２７ｃは、アドレス［Ｂ］のカウントデータの値を、ステップＳ３２５ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｂ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｂ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｂ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【００９８】
次に、処理が、ステップＳ３０３ａから、ステップＳ３３１ａへ移行した後の処理について説明する。
【００９９】
ステップＳ３３１ａにおいて、修復処理実行部２７ｃは、現在記録されている全てのカウントデータが正常であるなら、ステップＳ１０１で並び替えられたアドレスの並び方は、アドレス組み合わせＧｒ．［１］（図９）に一致し、かつ、ステップＳ１０１で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせＧｒ．［２］（図１０）に一致する、と認識する。
修復処理実行部２７ｃは、以下の処理においては、アドレス組み合わせＧｒ．［１］（図９）および極性情報組み合わせＧｒ．［２］（図１０）に従ってカウントデータの修復を行う。
【０１００】
ステップＳ３３３ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ａ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１０１】
ステップＳ３３５ａにおいて、修復処理実行部２７ｃは、ステップＳ３３３ａで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｅ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［２］（図１０）に従う、との認識にもとづく。
ステップＳ３３３ａで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｅ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３３５ａにおける「ＹＥＳ」）、処理は、ステップＳ３３９ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｅ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３３５ａにおける「ＮＯ」）、処理は、ステップＳ３３７ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１０２】
ステップＳ３３７ａにおいて、修復処理実行部２７ｃは、アドレス［Ｅ］のカウントデータの値を、ステップＳ３３３ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｅ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｅ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｅ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１０３】
ステップＳ３３９ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ｅ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１０４】
ステップＳ３４１ａにおいて、修復処理実行部２７ｃは、ステップＳ３３９ａで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｄ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［２］（図１０）に従う、との認識にもとづく。
ステップＳ３３９ａで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｄ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３４１ａにおける「ＹＥＳ」）、処理は、ステップＳ３３９ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｄ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３４１ａにおける「ＮＯ」）、処理は、ステップＳ３４３ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１０５】
ステップＳ３４３ａにおいて、修復処理実行部２７ｃは、アドレス［Ｄ］のカウントデータの値を、ステップＳ３３９ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｄ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｄ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｄ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１０６】
ステップＳ３４５ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ｄ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１０７】
ステップＳ３４７ａにおいて、修復処理実行部２７ｃは、ステップＳ３４５ａで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｃ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［２］（図１０）に従う、との認識にもとづく。
ステップＳ３４５ａで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｃ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３４７ａにおける「ＹＥＳ」）、処理は、ステップＳ３３９ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｃ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３４７ａにおける「ＮＯ」）、処理は、ステップＳ３４７ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１０８】
ステップＳ３４９ａにおいて、修復処理実行部２７ｃは、アドレス［Ｃ］のカウントデータの値を、ステップＳ３４５ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｃ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｃ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｃ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１０９】
ステップＳ３５１ａにおいて、修復処理実行部２７ｃは、現在アドレス［Ｃ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１１０】
ステップＳ３５３ａにおいて、修復処理実行部２７ｃは、ステップＳ３５１ａで求めた修復用カウントデータ（アドレス［Ｃ］のカウントデータから１を引いた値）と、現在アドレス［Ｂ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｂ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ａに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［１］（図９）、および、極性情報組み合わせＧｒ．［２］（図１０）に従う、との認識にもとづく。
ステップＳ３５１ａで求めた修復用カウントデータ（アドレス［Ｃ］のカウントデータから１を引いた値）と、現在アドレス［Ｂ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｂ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３５３ａにおける「ＹＥＳ」）、処理は、ステップＳ３３９ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｂ］に記録されたカウントデータおよびアドレス［Ｂ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｂ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｂ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３５３ａにおける「ＮＯ」）、処理は、ステップＳ３５５ａへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｂ］に記録されたカウントデータおよびアドレス［Ｂ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１１１】
ステップＳ３５５ａにおいて、修復処理実行部２７ｃは、アドレス［Ｂ］のカウントデータの値を、ステップＳ３５１ａで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｂ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ａに、アドレス［Ｂ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｂ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１１２】
このように、カウントデータ修復処理Ａにおいては、アドレス［Ａ］のカウントデータおよびアドレス［Ａ］に関連付けられた極性情報データを基準として、アドレス［Ｅ］、アドレス［Ｄ］、アドレス［Ｃ］、アドレス［Ｂ］のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせＧｒ．［１］（図９）ならびに極性情報組み合わせＧｒ．［１］もしくは極性情報組み合わせＧｒ．［２］（図１０）に一致するように、カウントデータの値および極性情報データの値を修正する。
【０１１３】
｛カウントデータ修復処理Ｂ（ステップＳ３０１ｂ）｝
図１５ＡおよびＢは、カウントデータ修復処理Ｂ（図１３におけるステップＳ３０１ｂ）の処理の詳細を示すフローチャートである。カウントデータ修復処理Ｂは、主として修復処理実行部２７ｃが行う処理である。ただし、カウントデータの修復（正しいカウントデータの書き込み）は、修復処理実行部２７ｃの出力に基づいてデータ書込部２５が行う。
【０１１４】
ステップＳ３０３ｂにおいて、修復処理実行部２７ｃは、アドレス［Ｂ］の極性情報データ（表現に正確を期すならば、アドレス［Ｂ］に関連付けられた極性情報データ）が、「１」（第１値）であるか、否かについて判定する。
アドレス［Ｂ］の極性情報データが、「１」（第１値）である場合（ステップＳ３０３ｂにおける「ＹＥＳ」）、処理は、ステップＳ３０５ｂへ移行する。
アドレス［Ｂ］の極性情報データが、「１」（第１値）でない場合（ステップＳ３０３ｂにおける「ＮＯ」）、処理は、ステップＳ３３１ｂへ移行する。
【０１１５】
ステップＳ３０５ｂにおいて、修復処理実行部２７ｃは、現在記録されている全てのカウントデータが正常であるなら、ステップＳ１０１で並び替えられたアドレスの並び方は、アドレス組み合わせＧｒ．［２］（図９）に一致し、かつ、ステップＳ１０１で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせＧｒ．［３］（図１０）に一致する、と認識する。
修復処理実行部２７ｃは、以下の処理においては、アドレス組み合わせＧｒ．［２］（図９）および極性情報組み合わせＧｒ．［３］（図１０）に従ってカウントデータの修復を行う。
【０１１６】
ステップＳ３０７ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ｂ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１１７】
ステップＳ３０９ｂにおいて、修復処理実行部２７ｃは、ステップＳ３０７ｂで求めた修復用カウントデータ（アドレス［Ｂ］のカウントデータから１を引いた値）と、現在アドレス［Ａ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ａ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［３］（図１０）に従う、との認識にもとづく。
ステップＳ３０７ｂで求めた修復用カウントデータ（アドレス［Ｂ］のカウントデータから１を引いた値）と、現在アドレス［Ａ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ａ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３０９ｂにおける「ＹＥＳ」）、処理は、ステップＳ３１３ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ａ］に記録されたカウントデータおよびアドレス［Ａ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ａ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ａ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３０９ｂにおける「ＮＯ」）、処理は、ステップＳ３１１ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ａ］に記録されたカウントデータおよびアドレス［Ａ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１１８】
ステップＳ３１１ｂにおいて、修復処理実行部２７ｃは、アドレス［Ａ］のカウントデータの値を、ステップＳ３０７ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ａ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ａ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ａ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１１９】
ステップＳ３１３ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ａ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１２０】
ステップＳ３１５ｂにおいて、修復処理実行部２７ｃは、ステップＳ３１３ｂで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｅ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［３］（図１０）に従う、との認識にもとづく。
ステップＳ３１３ｂで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｅ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３１５ｂにおける「ＹＥＳ」）、処理は、ステップＳ３１３ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｅ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３１５ｂにおける「ＮＯ」）、処理は、ステップＳ３１７ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１２１】
ステップＳ３１７ｂにおいて、修復処理実行部２７ｃは、アドレス［Ｅ］のカウントデータの値を、ステップＳ３１３ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｅ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ｅ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｅ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【０１２２】
ステップＳ３１９ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ｅ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１２３】
ステップＳ３２１ｂにおいて、修復処理実行部２７ｃは、ステップＳ３１９ｂで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｄ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［３］（図１０）に従う、との認識にもとづく。
ステップＳ３１９ｂで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｄ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３２１ｂにおける「ＹＥＳ」）、処理は、ステップＳ３１３ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｄ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３２１ｂにおける「ＮＯ」）、処理は、ステップＳ３２１ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１２４】
ステップＳ３２３ｂにおいて、修復処理実行部２７ｃは、アドレス［Ｄ］のカウントデータの値を、ステップＳ３１９ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｄ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ｄ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｄ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【０１２５】
ステップＳ３２５ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ｄ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１２６】
ステップＳ３２７ｂにおいて、修復処理実行部２７ｃは、ステップＳ３２５ｂで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｃ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３０５ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［３］（図１０）に従う、との認識にもとづく。
ステップＳ３２５ｂで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｃ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３２７ｂにおける「ＹＥＳ」）、処理は、ステップＳ３１３ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｃ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３２７ｂにおける「ＮＯ」）、処理は、ステップＳ３２９ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１２７】
ステップＳ３２９ｂにおいて、修復処理実行部２７ｃは、アドレス［Ｃ］のカウントデータの値を、ステップＳ３２５ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｃ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ｃ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｃ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【０１２８】
次に、処理が、ステップＳ３０３ｂから、ステップＳ３３１ｂへ移行した後の処理について説明する。
【０１２９】
ステップＳ３３１ｂにおいて、修復処理実行部２７ｃは、現在記録されている全てのカウントデータが正常であるなら、ステップＳ１０１で並び替えられたアドレスの並び方は、アドレス組み合わせＧｒ．［２］（図９）に一致し、かつ、ステップＳ１０１で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせＧｒ．［４］（図１０）に一致する、と認識する。
修復処理実行部２７ｃは、以下の処理においては、アドレス組み合わせＧｒ．［２］（図９）および極性情報組み合わせＧｒ．［４］（図１０）に従ってカウントデータの修復を行う。
【０１３０】
ステップＳ３３３ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ｂ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１３１】
ステップＳ３３５ｂにおいて、修復処理実行部２７ｃは、ステップＳ３３３ｂで求めた修復用カウントデータ（アドレス［Ｂ］のカウントデータから１を引いた値）と、現在アドレス［Ａ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ａ］に関連付けられた極性情報データの値が０（第２値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［４］（図１０）に従う、との認識にもとづく。
ステップＳ３３３ｂで求めた修復用カウントデータ（アドレス［Ｂ］のカウントデータから１を引いた値）と、現在アドレス［Ａ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ａ］に関連付けられた極性情報データの値が０（第２値）である、と判定された場合（ステップＳ３３５ｂにおける「ＹＥＳ」）、処理は、ステップＳ３３９ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ａ］に記録されたカウントデータおよびアドレス［Ａ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ａ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ａ］に関連付けられた極性情報データの値が０（第２値）でない、場合（ステップＳ３３５ｂにおける「ＮＯ」）、処理は、ステップＳ３３７ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ａ］に記録されたカウントデータおよびアドレス［Ａ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１３２】
ステップＳ３３７ｂにおいて、修復処理実行部２７ｃは、アドレス［Ａ］のカウントデータの値を、ステップＳ３３３ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ａ］の極性情報データを、「０」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ａ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ａ］に関連付けられた極性情報データが「０」になるように、適宜動作させる。
【０１３３】
ステップＳ３３９ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ａ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１３４】
ステップＳ３４１ｂにおいて、修復処理実行部２７ｃは、ステップＳ３３９ｂで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｅ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［４］（図１０）に従う、との認識にもとづく。
ステップＳ３３９ｂで求めた修復用カウントデータ（アドレス［Ａ］のカウントデータから１を引いた値）と、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｅ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３４１ｂにおける「ＹＥＳ」）、処理は、ステップＳ３３９ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｅ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｅ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３４１ｂにおける「ＮＯ」）、処理は、ステップＳ３４３ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｅ］に記録されたカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１３５】
ステップＳ３４３ｂにおいて、修復処理実行部２７ｃは、アドレス［Ｅ］のカウントデータの値を、ステップＳ３３９ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｅ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ｅ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｅ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１３６】
ステップＳ３４５ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ｅ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１３７】
ステップＳ３４７ｂにおいて、修復処理実行部２７ｃは、ステップＳ３４５ｂで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｄ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［４］（図１０）に従う、との認識にもとづく。
ステップＳ３４５ｂで求めた修復用カウントデータ（アドレス［Ｅ］のカウントデータから１を引いた値）と、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｄ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３４７ｂにおける「ＹＥＳ」）、処理は、ステップＳ３３９ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｄ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｄ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３４７ｂにおける「ＮＯ」）、処理は、ステップＳ３４７ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｄ］に記録されたカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１３８】
ステップＳ３４９ｂにおいて、修復処理実行部２７ｃは、アドレス［Ｄ］のカウントデータの値を、ステップＳ３４５ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｄ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ｄ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｄ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１３９】
ステップＳ３５１ｂにおいて、修復処理実行部２７ｃは、現在アドレス［Ｄ］に記録されているカウントデータの値から１を引いた（インクリメント幅Ｓで減算した）値を求め、それを、現在の「修復用カウントデータ」とする。
【０１４０】
ステップＳ３５３ｂにおいて、修復処理実行部２７ｃは、ステップＳ３５１ｂで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス［Ｃ］に関連付けられた極性情報データの値が１（第１値）であるか、否かを判定する。
本ステップにおける上記２つの事項に関する判断は、ステップＳ３３１ｂに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせＧｒ．［２］（図９）、および、極性情報組み合わせＧｒ．［４］（図１０）に従う、との認識にもとづく。
ステップＳ３５１ｂで求めた修復用カウントデータ（アドレス［Ｄ］のカウントデータから１を引いた値）と、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致し、かつ、アドレス［Ｃ］に関連付けられた極性情報データの値が１（第１値）である、と判定された場合（ステップＳ３５３ｂにおける「ＹＥＳ」）、処理は、ステップＳ３３９ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス［Ｃ］に記録されているカウントデータの値とが一致しないか、または、アドレス［Ｃ］に関連付けられた極性情報データの値が１（第１値）でない、場合（ステップＳ３５３ｂにおける「ＮＯ」）、処理は、ステップＳ３５５ｂへ移行する。つまり、この場合に修復処理実行部２７ｃは、アドレス［Ｃ］に記録されたカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データは、修復する必要があると、判断する。
【０１４１】
ステップＳ３５５ｂにおいて、修復処理実行部２７ｃは、アドレス［Ｃ］のカウントデータの値を、ステップＳ３５１ｂで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス［Ｃ］の極性情報データを、「１」にする指示を出力する。
当該指示にもとづいて、データ書込部２５は、カウントデータ書込部２５ｂに、アドレス［Ｃ］のカウントデータ記憶部３３へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部２５ｂに、アドレス［Ｃ］に関連付けられた極性情報データが「１」になるように、適宜動作させる。
【０１４２】
このように、カウントデータ修復処理Ｂにおいては、アドレス［Ｂ］のカウントデータおよびアドレス［Ｂ］に関連付けられた極性情報データを基準として、アドレス［Ａ］、アドレス［Ｅ］、アドレス［Ｄ］、アドレス［Ｃ］のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせＧｒ．［２］（図９）ならびに極性情報組み合わせＧｒ．［３］もしくは極性情報組み合わせＧｒ．［４］（図１０）に一致するように、カウントデータの値および極性情報データの値を修正する。
【０１４３】
｛カウントデータ修復処理Ｃ（ステップＳ３０１ｃ）｝
図１６ＡおよびＢは、カウントデータ修復処理Ｃ（図１３におけるステップＳ３０１ｃ）の処理の詳細を示すフローチャートである。カウントデータ修復処理Ｃは、主として修復処理実行部２７ｃが行う処理である。ただし、カウントデータの修復（正しいカウントデータの書き込み）は、修復処理実行部２７ｃの出力に基づいてデータ書込部２５が行う。
【０１４４】
カウントデータ修復処理ＡおよびＢ（図１４ＡおよびＢならびに図１５ＡおよびＢ）と同様に、カウントデータ修復処理Ｃにおいては、アドレス［Ｃ］のカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データを基準として、アドレス［Ｂ］、アドレス［Ａ］、アドレス［Ｅ］、アドレス［Ｄ］のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせＧｒ．［３］（図９）ならびに極性情報組み合わせＧｒ．［５］もしくは極性情報組み合わせＧｒ．［６］（図１０）に一致するように、カウントデータの値および極性情報データの値を修正する。
【０１４５】
｛カウントデータ修復処理Ｄ（ステップＳ３０１ｄ）｝
図１７は、カウントデータ修復処理Ｄ（図１３におけるステップＳ３０１ｄ）の処理の詳細を示すフローチャートである。カウントデータ修復処理Ｄは、主として修復処理実行部２７ｃが行う処理である。ただし、カウントデータの修復（正しいカウントデータの書き込み）は、修復処理実行部２７ｃの出力に基づいてデータ書込部２５が行う。
【０１４６】
カウントデータ修復処理Ａ、Ｂ、およびＣ（図１４ＡおよびＢ、図１５ＡおよびＢ、ならびに、図１６ＡおよびＢ）と同様に、カウントデータ修復処理Ｄにおいては、アドレス［Ｄ］のカウントデータおよびアドレス［Ｄ］に関連付けられた極性情報データを基準として、アドレス［Ｃ］、アドレス［Ｂ］、アドレス［Ａ］、アドレス［Ｅ］のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせＧｒ．［４］（図９）ならびに極性情報組み合わせＧｒ．［７］もしくは極性情報組み合わせＧｒ．［８］（図１０）に一致するように、カウントデータの値および極性情報データの値を修正する。
【０１４７】
｛カウントデータ修復処理Ｅ（ステップＳ３０１ｅ）｝
図１８ＡおよびＢは、カウントデータ修復処理Ｅ（図１３におけるステップＳ３０１ｅ）の処理の詳細を示すフローチャートである。カウントデータ修復処理Ｅは、主として修復処理実行部２７ｃが行う処理である。ただし、カウントデータの修復（正しいカウントデータの書き込み）は、修復処理実行部２７ｃの出力に基づいてデータ書込部２５が行う。
【０１４８】
カウントデータ修復処理Ａ、Ｂ、Ｃ、およびＤ（図１４ＡおよびＢ、図１５ＡおよびＢ、図１６ＡおよびＢ、ならびに、図１７ＡおよびＢ）と同様に、カウントデータ修復処理Ｅにおいては、アドレス［Ｅ］のカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データを基準として、アドレス［Ｄ］、アドレス［Ｃ］、アドレス［Ｂ］、アドレス［Ａ］のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせＧｒ．［５］（図９）ならびに極性情報組み合わせＧｒ．［９］もしくは極性情報組み合わせＧｒ．［１０］（図１０）に一致するように、カウントデータの値および極性情報データの値を修正する。
【０１４９】
≪カウントデータ破損の検出および修復の具体例≫
これより、上で述べたカウントデータ破損の検出および修復について、具体例を示す。
【０１５０】
｛具体例１｝
図１９は、具体例１におけるカウントデータの値、および、極性情報データの値の一覧である。
【０１５１】
ステップＳ１０１（図１２）に示したように、カウントデータソート部２７ａは、カウントデータの大きさでアドレスを並べ替える。
【０１５２】
図２０は、並べ替えられたアドレスの並び方、ならびに、各アドレスに記録されているカウントデータの値および各アドレスに関連付けられた極性情報データの値の一覧である。
【０１５３】
ステップＳ１０３（図１２）に示したように、カウントデータ差分算出部２７ｂは、ステップＳ１０１で並べ替えられたアドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【０１５４】
図２１は、算出されたカウントデータ差分値の一覧である。
【０１５５】
ステップＳ１０５（図１２）に示したように、修復処理実行部２７ｃは、各アドレスに関連付けられた極性情報データをステップＳ１０１で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例１においては、変化箇所数は、０である（図２０参照。）。
【０１５６】
従って、処理は、ステップＳ１０９（図１２）へ移行する。ステップＳ１０９においては、カウントデータ差分値が全て０でないことより、データの破損が存在すると判定され、処理は、ステップＳ３０１ｅへ移行する。
【０１５７】
ステップＳ３０３ｅ（図１８ＡおよびＢ）において、アドレス［Ｅ］の極性情報データの値に基づく判定が行われ、該判定の結果により、処理はステップＳ３０５ｅへ移行する。
【０１５８】
ステップＳ３０５ｅ（図１８ＡおよびＢ）に示したように、これ以降、修復処理実行部２７ｃは、アドレス［Ｅ］のカウントデータおよびアドレス［Ｅ］に関連付けられた極性情報データを基準として、アドレス組み合わせＧｒ．［５］（図９）および極性情報組み合わせＧｒ．［９］（図１０）に従って、カウントデータの値および極性情報データの値を修正する。
【０１５９】
図２２は、アドレス［Ｄ］に対する破損検出および破損修復の結果を示す図である。
【０１６０】
ステップＳ３０７ｅないしステップＳ３１１ｅ（図１８ＡおよびＢ）に示したようにして、アドレス［Ｄ］のカウントデータの値が、２４に修正される。
【０１６１】
図２３は、アドレス［Ｃ］に対する破損検出および破損修復の結果を示す図である。
【０１６２】
ステップＳ３１３ｅないしステップＳ３１７ｅ（図１８ＡおよびＢ）に示したようにして、アドレス［Ｃ］のカウントデータの値が、２３に修正される。
【０１６３】
図２４は、アドレス［Ｂ］に対する破損検出および破損修復の結果を示す図である。
【０１６４】
ステップＳ３１９ｅないしステップＳ３２１ｅ（図１８ＡおよびＢ）に示したようにして、アドレス［Ｂ］は、修正不要であると判断される。
【０１６５】
図２５は、アドレス［Ａ］に対する破損検出および破損修復の結果を示す図である。
【０１６６】
ステップＳ３２３ｅないしステップＳ３２７ｅ（図１８ＡおよびＢ）に示したようにして、アドレス［Ａ］のカウントデータの値が、２１に修正され、カウントデータ修復処理は終了する。
【０１６７】
｛具体例２｝
図２６は、具体例２におけるカウントデータの値、および、極性情報データの値の一覧である。
【０１６８】
ステップＳ１０１（図１２）に示したように、カウントデータソート部２７ａは、カウントデータの大きさでアドレスを並べ替える。
【０１６９】
図２７は、並べ替えられたアドレスの並び方、ならびに、各アドレスに記録されているカウントデータの値および各アドレスに関連付けられた極性情報データの値の一覧である。
【０１７０】
ステップＳ１０３（図１２）に示したように、カウントデータ差分算出部２７ｂは、ステップＳ１０１で並べ替えられたアドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【０１７１】
図２８は、算出されたカウントデータ差分値の一覧である。
【０１７２】
ステップＳ１０５（図１２）に示したように、修復処理実行部２７ｃは、各アドレスに関連付けられた極性情報データをステップＳ１０１で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例２においては、変化箇所数は、１である（図２７参照。）。
【０１７３】
従って、処理は、ステップＳ２０１（図１２）へ移行する。ステップＳ２０１（図１２および図１３）においては、アドレスの並び方（図２７）が、アドレス組み合わせＧｒ．［３］（図９）と一致し、かつ、カウントデータ間の差分値（図２８）が、全て１ではないから、処理は、ステップＳ３０１ｃへ移行する。
【０１７４】
ステップＳ３０３ｃ（図１６ＡおよびＢ）において、アドレス［Ｃ］の極性情報データの値に基づく判定が行われ、該判定の結果により、処理はステップＳ３０５ｃへ移行する。
【０１７５】
ステップＳ３０５ｃ（図１６ＡおよびＢ）に示したように、これ以降、修復処理実行部２７ｃは、アドレス［Ｃ］のカウントデータおよびアドレス［Ｃ］に関連付けられた極性情報データを基準として、アドレス組み合わせＧｒ．［３］（図９）および極性情報組み合わせＧｒ．［５］（図１０）に従って、カウントデータの値および極性情報データの値を修正する。
【０１７６】
図２９は、アドレス［Ｂ］に対する破損検出および破損修復の結果を示す図である。
【０１７７】
ステップＳ３０７ｃないしステップＳ３１１ｃ（図１６ＡおよびＢ）に示したようにして、アドレス［Ｃ］は、修正不要であると判断される。
【０１７８】
図３０は、アドレス［Ａ］に対する破損検出および破損修復の結果を示す図である。
【０１７９】
ステップＳ３１３ｃないしステップＳ３１７ｃ（図１６ＡおよびＢ）に示したようにして、アドレス［Ａ］のカウントデータの値が、５２に修正される。
【０１８０】
図３１は、アドレス［Ｅ］に対する破損検出および破損修復の結果を示す図である。
【０１８１】
ステップＳ３１９ｃないしステップＳ３２１ｃ（図１６ＡおよびＢ）に示したようにして、アドレス［Ｅ］のカウントデータの値が、５１に修正され、加えて、アドレス［Ｅ］に関連付けられた極性情報データの値が０に反転される。
【０１８２】
図３２は、アドレス［Ｄ］に対する破損検出および破損修復の結果を示す図である。
【０１８３】
ステップＳ３２３ｃないしステップＳ３２７ｃ（図１６ＡおよびＢ）に示したようにして、アドレス［Ｄ］のカウントデータの値が、５０に修正され、カウントデータ修復処理は終了する。
【０１８４】
｛具体例３｝
具体例３は、２つのアドレスで指定される記憶領域を用いてカウントデータを記録するカウントデータの記録形態について、説明する。
【０１８５】
図３３は、記憶装置７において、２つのアドレスによって指定される記憶領域のデータ構成を示す図である。
【０１８６】
２つのアドレス（アドレス［Ｘ１］とアドレス［Ｘ２］）で特定される記憶領域は、さらに極性情報データを保持する極性情報部３３ｐと、カウントデータの上位ビットを保持するカウントデータ上位部分記憶部３３ｕと、カウントデータの下位ビットを保持するカウントデータ下位部分記憶部３３ｌと、に区分される。極性情報データ記憶部３３ｐは、Ｐビットのビット幅を有し、カウントデータ上位部分記憶部３３ｕは、Ｍ−Ｐビットのビット幅を有し、カウントデータ下位部分記憶部３３ｌは、Ｍビットのビット幅を有する。
【０１８７】
図３４は、具体例３におけるカウントデータ下位部分の値およびカウントデータ上位部分の値ならびに極性情報データの値の一覧である。
【０１８８】
図３５は、具体例３におけるカウントデータの値、および、極性情報データの値の一覧である。このように、各カウントデータの値は、２つのアドレスに記憶されたデータを組み合わせて１つのカウントデータとして取り扱い、各カウントデータの値に（各２つずつのアドレスに）１つの極性情報データが関連付けられている。
【０１８９】
ステップＳ１０１（図１２）に示したように、カウントデータソート部２７ａは、カウントデータの大きさでアドレスを並べ替える。
【０１９０】
図３６は、並べ替えられた統合アドレスの並び方、ならびに、各統合アドレスに記録されているカウントデータの値および各統合アドレスに関連付けられた極性情報データの値の一覧である。ここでは、１つのカウントデータを構成するデータが保持される２つのアドレスを纏めて統合アドレスと称する。
【０１９１】
ステップＳ１０３（図１２）に示したように、カウントデータ差分算出部２７ｂは、ステップＳ１０１で並べ替えられた統合アドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【０１９２】
図３７は、算出されたカウントデータ差分値の一覧である。
【０１９３】
ステップＳ１０５（図１２）に示したように、修復処理実行部２７ｃは、各統合アドレスに関連付けられた極性情報データをステップＳ１０１で並び替えされた統合アドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例３においては、変化箇所数は、３である（図３６参照。）。
【０１９４】
従って、処理は、ステップＳ１１１（図１２）へ移行する。ステップＳ１１１においては、カウントデータ間差分値が全て１であることから、ステップＳ２０１（図１２および図１３）へ移行する。ステップＳ２０１においては、アドレスの並び方（図３６）が、アドレス組み合わせＧｒ．［１］〜［５］（図９）のいずれとも一致せず、かつ、最も大きなカウントデータが記録されている統合アドレスが［Ｂ］であるから、処理は、ステップＳ３０１ｂへ移行する。
【０１９５】
ステップＳ３０３ｂ（図１５ＡおよびＢ）において、アドレス［Ｂ］の極性情報データの値に基づく判定が行われ、該判定の結果により、処理はステップＳ３０５ｂへ移行する。
【０１９６】
ステップＳ３０５ｂ（図１５ＡおよびＢ）に示したように、これ以降、修復処理実行部２７ｃは、アドレス［Ｂ］のカウントデータおよびアドレス［Ｂ］に関連付けられた極性情報データを基準として、アドレス組み合わせＧｒ．［２］（図９）および極性情報組み合わせＧｒ．［３］（図１０）に従って、カウントデータの値および極性情報データの値を修正する。
【０１９７】
図３８は、アドレス［Ａ］に対する破損検出および破損修復の結果を示す図である。
【０１９８】
ステップＳ３０７ｂないしステップＳ３１１ｂ（図１５ＡおよびＢ）に示したようにして、統合アドレス［Ａ］のカウントデータの値が、６５５３６に修正され、加えて、統合アドレス［Ａ］に関連付けられた極性情報データの値が１に反転される。
【０１９９】
図３９は、アドレス［Ｅ］に対する破損検出および破損修復の結果を示す図である。
【０２００】
ステップＳ３１３ｂないしステップＳ３１７ｂ（図１５ＡおよびＢ）に示したようにして、アドレス［Ｅ］のカウントデータの値が、６５５３５に修正される。
【０２０１】
図４０は、アドレス［Ｄ］に対する破損検出および破損修復の結果を示す図である。
【０２０２】
ステップＳ３１９ｂないしステップＳ３２１ｂ（図１５ＡおよびＢ）に示したようにして、アドレス［Ｄ］のカウントデータの値が、６５５３４に修正され、加えて、アドレス［Ｄ］に関連付けられた極性情報データの値が０に反転される。
【０２０３】
図４１は、アドレス［Ｃ］に対する破損検出および破損修復の結果を示す図である。
【０２０４】
ステップＳ３２３ｂないしステップＳ３２７ｂ（図１５ＡおよびＢ）に示したようにして、アドレス［Ｃ］のカウントデータの値が、６５５３３に修正され、カウントデータ修復処理は終了する。
【０２０５】
｛具体例４｝
図４２は、具体例４におけるカウントデータの値、および、極性情報データの値の一覧である。本具体例４は、カウントデータの破損が、修復不可能な場合の例である。この場合、修復処理実行部２７ｃは、修復処理を実行せずに、カウントデータの異常を通知する出力を行って、処理を終了する。
【０２０６】
ステップＳ１０１（図１２）に示したように、カウントデータソート部２７ａは、カウントデータの大きさでアドレスを並べ替える。
【０２０７】
図４３は、並べ替えられたアドレスの並び方、ならびに、各アドレスに記録されているカウントデータの値および各アドレスに関連付けられた極性情報データの値の一覧である。
【０２０８】
ステップＳ１０３（図１２）に示したように、カウントデータ差分算出部２７ｂは、ステップＳ１０１で並べ替えられたアドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【０２０９】
図４４は、算出されたカウントデータ差分値の一覧である。
【０２１０】
ステップＳ１０５（図１２）に示したように、修復処理実行部２７ｃは、各アドレスに関連付けられた極性情報データをステップＳ１０１で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例４においては、変化箇所数は、４である（図４３参照。）。
【０２１１】
従って、処理は、ステップＳ１１１（図１２）へ移行する。ステップＳ１１１においては、１でないカウントデータ間差分値が存在し、アドレスの並び方（図３６）が、アドレス組み合わせＧｒ．［１］〜［５］（図９）のいずれとも一致しないから、処理は、ステップＳ１１３へ移行する。
【０２１２】
ステップＳ１１３において、修復処理実行部２７ｃは、正しく修復できないデータ破損が生じていると判断し、その旨を示唆する情報を出力し、処理を終了する。
【０２１３】
＜まとめ＞
以上、本発明にかかるカウントデータ記録装置について、カウントデータの記録に用いるアドレスを５個として説明した。だが、本発明は、５個以外の個数のアドレスをもちいてカウントデータを記録することも可能である。その場合も、カウントデータの記録の方法、カウントデータの破損の検出の方法、カウントデータの破損の修復の方法は、上で述べた方法と同様にすればよい。当業者にとってその具体的態様は、上で述べた５個のアドレスをもちいた場合の説明から明らかであろう。
【０２１４】
本発明において、カウントデータを記憶する記憶装置７は、特に限定されない。記憶装置７は、例えば、ＥＥＰＲＯＭである。
【０２１５】
記憶装置７においては、極性情報データを記録することなしに、通常のデータ記録を行うマスクエリアを設けてよい。
マスクエリアとは、カウントデータを記憶するための記憶領域とは別の記憶領域であって、極性情報データと関連付けされない記憶領域を指す。
記憶装置のマスクエリアにおいては、極性情報データの反転を伴わない、データの書き込みがなされる。このように、本発明においては、記憶装置は、カウントデータを、極性情報データと関連付けて記憶するための記憶領域と、通常のデータの読み出しおよび書き込みのための記憶領域を備えることができ、記憶装置内の記憶領域を余すところなしに、効率的に利用することも可能である。本発明においては、マスクエリアは、記憶装置内にアドレスを単位として設定可能である。
【産業上の利用可能性】
【０２１６】
本発明は、記憶装置を用いたカウントデータの記録を行う装置に関する。本発明は、特に、記憶装置の繰り返し書き込み可能な回数を超えてカウントデータの記録を行う上で有用である。
【図面の簡単な説明】
【０２１７】
【図１】本発明の実施の形態によるカウントデータ記録装置（ＭＦＰ１）の斜視図
【図２】感光体ユニット５の斜視図
【図３】ＭＦＰ１のハードウェア構成を示すブロック図
【図４】ＭＦＰ１の機能的構成を示すブロック図
【図５】記憶装置７の、１つのアドレスで指定される記憶領域のデータ構成図
【図６】カウントデータの記録の例図
【図７】カウントデータの値の大きさで降順に並べ替えたアドレスの並び方の図
【図８】正常なカウントデータについて、その値の降順で並べたときのカウントデータ間の差分値を示す図
【図９】アドレスをカウントデータの降順で並べ替えた時に起こり得るアドレスの並び方の一覧
【図１０】アドレスをカウントデータの降順で並べ替えた時に起こり得る各アドレスと関連付けられた極性情報データの並び方の一覧
【図１１】アドレス組み合わせと、極性情報組み合わせとの組み合わせを示す図
【図１２】カウントデータ破損の検出および修復のメインフローのフローチャート
【図１３Ａ】カウントデータ修復処理選択処理のフローチャート
【図１３Ｂ】カウントデータ修復処理選択処理のフローチャート
【図１４Ａ】カウントデータ修復処理Ａのフローチャート
【図１４Ｂ】カウントデータ修復処理Ａのフローチャート
【図１５Ａ】カウントデータ修復処理Ｂのフローチャート
【図１５Ｂ】カウントデータ修復処理Ｂのフローチャート
【図１６Ａ】カウントデータ修復処理Ｃのフローチャート
【図１６Ｂ】カウントデータ修復処理Ｃのフローチャート
【図１７Ａ】カウントデータ修復処理Ｄのフローチャート
【図１７Ｂ】カウントデータ修復処理Ｄのフローチャート
【図１８Ａ】カウントデータ修復処理Ｅのフローチャート
【図１８Ｂ】カウントデータ修復処理Ｅのフローチャート
【図１９】カウントデータ修復処理具体例１における修復処理前のカウントデータおよび極性情報データの表
【図２０】並び替えられたカウントデータおよび極性情報データの表
【図２１】カウントデータ差分値の表
【図２２】カウントデータ修復処理の過程を示す図
【図２３】カウントデータ修復処理の過程を示す図
【図２４】カウントデータ修復処理の過程を示す図
【図２５】カウントデータ修復処理の過程を示す図
【図２６】カウントデータ修復処理具体例２における修復処理前のカウントデータおよび極性情報データの表
【図２７】並び替えられたカウントデータおよび極性情報データの表
【図２８】カウントデータ差分値の表
【図２９】カウントデータ修復処理の過程を示す図
【図３０】カウントデータ修復処理の過程を示す図
【図３１】カウントデータ修復処理の過程を示す図
【図３２】カウントデータ修復処理の過程を示す図
【図３３】記憶装置７の、２つのアドレスで指定される記憶領域のデータ構成図
【図３４】カウントデータ修復処理具体例３における修復処理前のカウントデータおよび極性情報データの表
【図３５】カウントデータ修復処理具体例３における修復処理前のカウントデータおよび極性情報データの表
【図３６】並び替えられたカウントデータおよび極性情報データの表
【図３７】カウントデータ差分値の表
【図３８】カウントデータ修復処理の過程を示す図
【図３９】カウントデータ修復処理の過程を示す図
【図４０】カウントデータ修復処理の過程を示す図
【図４１】カウントデータ修復処理の過程を示す図
【図４２】カウントデータ修復処理具体例４における修復処理前のカウントデータおよび極性情報データの表
【図４３】並び替えられたカウントデータおよび極性情報データの表
【図４４】カウントデータ差分値の表
【符号の説明】
【０２１８】
１・・・  カウントデータ記録装置（デジタル複合機）
３・・・  トナーカートリッジ
５・・・  感光体ユニット
７・・・  記憶装置
１１・・・  中央処理装置
１３・・・  ランダム・アクセス・メモリ
１５・・・  リード・オンリ・メモリ
１７・・・  Ｉ／Ｏ  ＬＳＩ
１９ｏ・・  出力デバイス
１９ｉ・・  入力デバイス
２１・・・  コンピュータ
２３・・・  制御部
２５・・・  データ書込部
２５ａ・・  カウントデータ書込部
２５ｂ・・  極性情報データ反転部
２７・・・  データ修復部
２７ａ・・  カウントデータソート部
２７ｂ・・  カウントデータ差分算出部
２７ｃ・・  修復処理実行部
２９・・・  データ読出部
３１・・・  設定データ保持部
３３・・・  カウントデータ記憶部
３３ｌ・・  カウントデータ下位部分記憶部
３３ｐ・・  極性情報データ記憶部
３３ｕ・・  カウントデータ上位部分記憶部
【図１】
2010003074.tif 000003
【図２】
2010003074.tif 000004
【図３】
2010003074.tif 000005
【図４】
2010003074.tif 000006
【図５】
2010003074.tif 000007
【図６】
2010003074.tif 000008
【図７】
2010003074.tif 000009
【図８】
2010003074.tif 000010
【図９】
2010003074.tif 000011
【図１０】
2010003074.tif 000012
【図１１】
2010003074.tif 000013
【図１２】
2010003074.tif 000014
【図１３Ａ】
2010003074.tif 000015
【図１３Ｂ】
2010003074.tif 000016
【図１４Ａ】
2010003074.tif 000017
【図１４Ｂ】
2010003074.tif 000018
【図１５Ａ】
2010003074.tif 000019
【図１５Ｂ】
2010003074.tif 000020
【図１６Ａ】
2010003074.tif 000021
【図１６Ｂ】
2010003074.tif 000022
【図１７Ａ】
2010003074.tif 000023
【図１７Ｂ】
2010003074.tif 000024
【図１８Ａ】
2010003074.tif 000025
【図１８Ｂ】
2010003074.tif 000026
【図１９】
2010003074.tif 000027
【図２０】
2010003074.tif 000028
【図２１】
2010003074.tif 000029
【図２２】
2010003074.tif 000030
【図２３】
2010003074.tif 000031
【図２４】
2010003074.tif 000032
【図２５】
2010003074.tif 000033
【図２６】
2010003074.tif 000034
【図２７】
2010003074.tif 000035
【図２８】
2010003074.tif 000036
【図２９】
2010003074.tif 000037
【図３０】
2010003074.tif 000038
【図３１】
2010003074.tif 000039
【図３２】
2010003074.tif 000040
【図３３】
2010003074.tif 000041
【図３４】
2010003074.tif 000042
【図３５】
2010003074.tif 000043
【図３６】
2010003074.tif 000044
【図３７】
2010003074.tif 000045
【図３８】
2010003074.tif 000046
【図３９】
2010003074.tif 000047
【図４０】
2010003074.tif 000048
【図４１】
2010003074.tif 000049
【図４２】
2010003074.tif 000050
【図４３】
2010003074.tif 000051
【図４４】
2010003074.tif 000052