JP2010146053A - カウントデータ記録装置ならびにカウントデータ記録方法およびプログラム - Google Patents

カウントデータ記録装置ならびにカウントデータ記録方法およびプログラム Download PDF

Info

Publication number
JP2010146053A
JP2010146053A JP2008319326A JP2008319326A JP2010146053A JP 2010146053 A JP2010146053 A JP 2010146053A JP 2008319326 A JP2008319326 A JP 2008319326A JP 2008319326 A JP2008319326 A JP 2008319326A JP 2010146053 A JP2010146053 A JP 2010146053A
Authority
JP
Japan
Prior art keywords
count data
count
difference value
data
sorted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008319326A
Other languages
English (en)
Other versions
JP4572981B2 (ja
Inventor
Sei Wakide
整 脇出
Takeo Mae
豪郎 前
Yasufumi Naito
靖文 内藤
Yoshihiko Yoshizaki
好彦 吉崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Konica Minolta Business Technologies Inc
Original Assignee
Konica Minolta Business Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Konica Minolta Business Technologies Inc filed Critical Konica Minolta Business Technologies Inc
Priority to JP2008319326A priority Critical patent/JP4572981B2/ja
Priority to US12/638,678 priority patent/US8176369B2/en
Publication of JP2010146053A publication Critical patent/JP2010146053A/ja
Application granted granted Critical
Publication of JP4572981B2 publication Critical patent/JP4572981B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/186Passive fault masking when reading multiple copies of the same data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Control Or Security For Electrophotography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】メモリの利用効率がよく、破損したカウントデータを修復可能なカウントデータ記録装置を提供する。
【解決手段】N個(Nは、4以上の整数)の記憶領域と、カウントデータを記憶領域に書き込むデータ書込部と、カウントデータを読み出すデータ読出部と、カウントデータの破損を検出して該破損を修復するデータ修復部とを有し、データ書込部は、M個(Mは、3以上N未満の整数)の記憶領域を小ループ範囲に定め、該小ループの範囲の記憶領域を順に使用してカウントデータを記録し、該小ループ範囲の最後尾の記憶領域を使用してカウントデータを記録すると、該小ループ範囲を、所定の順に沿って後方へずらして小ループ範囲を変更する、ようにして、カウントデータを記憶部に記録し、データ修復部は、カウントデータをソートした被ソートカウントデータ列と該データ列の差分値列とに基づいて破損を修復するカウントデータ記録装置。
【選択図】図1

Description

本発明は、メモリ等で構成される記憶領域へカウントデータを記録する装置、および、カウントデータ記録方法に関し、特に、該記憶領域に記録されたカウントデータにおいて生じた破損を検出し、当該検出にかかる破損したカウントデータを正常な状態へ修復するカウントデータ記録装置、および、記録方法に関する。
従来、データの記録および保持には、メモリが利用される。特に、長期にわたって、データをメモリ内に保持する用途には、不揮発性メモリが用いられる。ここで、不揮発性メモリとは、電源を供給しなくても記憶を保持するメモリの総称である。
しかしながら、不揮発性メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory))は、一般に、データの書き込みに関する繰り返し耐性が小さい。例えば、不揮発性メモリの書き込み繰り返し耐性は、その種類によって様々だが、例えば、100万回程度である。
特定のデータのみを記録する用途に不揮発性メモリが用いられることもある。このような特定のデータの例としては、カウントデータがある。カウントデータとは、特定の値から所定値ずつインクリメントされて記録されることによって、何らかの回数をカウントするために用いられるデータである。(上記所定値が負の数であれば、カウントデータは、上記特定の値からデクリメントされつつ、順次、記録されるデータである。)カウントデータは、例えば、特定のデバイス(例えば、画像処理装置の感光体ユニット)が動作した回数を記録する用途に用いられる。
このようなカウントデータを、書き込み繰り返し耐性が比較的小さいメモリに記録する場合には、以下に記すようにしてカウントデータをメモリへ記録し、また、データが破壊されたときにはその修復を行う。
例えば、メモリの1つのアドレスに対する書き込み繰り返し耐性が100万回であるメモリを用いて、300万回のカウントデータの書き込みを行う場合、3つのアドレスを用いて、3つのアドレスに対し、順次的に、カウントデータの書き込みを行う。カウントデータは、所定値ずつ増加(あるいは減少)するため、上記3つのアドレスには、所定値ずつ増加(あるいは減少)する3つの値が、記録される。
カウントデータには、所定値ずつ増加(あるいは減少)するという性質が備わっているため、記録されたカウントデータが破壊された場合であっても、破壊されていないカウントデータの値を用いて、当該値に所定値あるいは所定値の2倍の値を加算(あるいは減算)して得られる値を、破壊されたアドレスに書き込むことで、破壊されたカウントデータを修復することができる。
このように、メモリの1つのアドレスに対する書き込み繰り返し耐性が100万回であるメモリを用いる場合、3つのアドレスを用いることで300万回のカウントデータの書き込み、および、その修復が可能である。
また、メモリの1つのアドレスに対する書き込み繰り返し耐性が100万回であるメモリを用いて、350万回のカウントデータの書き込みを行おうとする場合、次のようにして、350万回のカウントデータの記録を実現している例も存在する。
先ず、所定の回数(例えば、97万回)までは、先の例と同様に、3つのアドレスに対し、順次的に、カウントデータの書き込みを行う。ここからは、先の例とは異なり、上記3つのアドレスとは別の3つのアドレスに対し、順次的に、カウントデータの書き込みが開始される。
このような方法論によれば、350万回のカウントデータの書き込みを行うためには、カウントデータが書き込まれる6つのアドレスと、上記3つのアドレスそれぞれに対する書き込み回数を保持するための3つのアドレスと、上記3つのアドレス群および上記別の3つのアドレス群のいずれのアドレス群をカウントデータとして使用するかを示すデータが保持されるための1つのアドレスと、の総計10個のアドレスが必要になる。
理論上、350万回の書き込みがなされるカウントデータの記録は、100万回のデータ書き込みが可能なアドレスを4つ使えば足りる。にも拘わらず、上記の従来例においては、10個のアドレスを用いて、カウントデータの記録(および破損されたカウントデータの修復)を行う。このことは、メモリの利用効率の観点から好ましいこととは言えない。
また、記録されたデータの誤りを検出して誤りを修復するための従来技術例として、以下の特許文献が存在する。
特許文献1は、カウントデータを記録する装置であるカウンタを開示する。
特許文献1に記載のカウンタは、制御手段と、連続した複数の値からなる初期値が設定された複数のサブカウンタとを備える。
カウントアップ時においては、当該カウンタの制御手段は、複数のカウンタの持つ値のうちで最大の値と2番目に大きな値とが連続しているか否かを判断し、連続していないと判断した場合には、最小の値を持つサブカウンタの値を、2番目に大きな値に2を加算した値に書き換えて当該書き換えられた値をカウント値とし、また、連続していると判断した場合には、最小の値を持つサブカウンタの値を、最大の値に1を加算した値に書き換えて当該書き換えられた値をカウント値とする。
このような構成によって、特許文献1に記載のカウンタは、複数のサブカウンタが持つ値相互間の連続性に着目して各サブカウンタが持つ値が誤った値であるか正しい値であるかを判定し、正しい値であると判定された値を用いてカウント値の誤りを補正する。
特許文献2は、画像形成装置に装着された交換ユニットの使用程度を表す情報を記憶する画像形成装置用寿命管理装置を開示する。
特許文献2に記載の装置は、交換ユニットの使用程度を表す情報を記憶する不揮発性メモリと、交換ユニットの使用程度を表す情報を不揮発性メモリに書き込む書込み手段と、不揮発性メモリに書き込まれた情報の誤りを検出して修復する修復処理手段と、を備える。また、当該不揮発性メモリには、3つ以上の、交換ユニットの使用程度を表す情報を記憶する領域が設けられている。
交換ユニットの使用程度を表す情報を書き込む際、当該装置の書込み手段は、同一内容の交換ユニットの使用程度を表す情報を、上記した3つ以上の領域のそれぞれに書き込む処理を行う。そして、該装置の修復処理手段は、上記した3つ以上の領域のそれぞれに書き込まれた情報が同一であるか否かを判断し、同一でないと判断した場合には、当該3つ以上の領域のそれぞれに書き込まれた情報が同一となるように修復処理を行う。
このような構成によって、特許文献2に記載の画像形成装置用寿命管理装置は、複数の記憶領域に書き込まれた情報が同一であるか否かに着目して誤った情報を検出し、該誤った情報を正しい情報に修復する。
このように、カウントデータ等を記録し、適宜、誤ったカウントデータ等を正しいデータに修復するための技術は、数多く提示されている。
特開平07−078232号公報 特開2000−172133号公報
本発明は、メモリに対する書込繰り返し耐性とカウント可能な回数との相対的利用効率の観点において、メモリの利用効率が従来よりも向上され、かつ、破損を受けたカウントデータを修復できるカウントデータ記録装置を提供することを目的とする。
本発明は、その一態様においては、所定値から所定幅で単調に変化するカウント値をカウントデータとして記憶領域に記録するカウントデータ記録装置であって、カウントデータを記憶する記憶領域をN個(Nは、4以上の整数)備える記憶部と、カウントデータを記憶部に書き込むデータ書込部と、カウントデータを記憶部から読み出すデータ読出部と、記憶部に記憶されたカウントデータの破損を検出し、該破損を修復するデータ修復部とを有し、データ書込部は、N個の記憶領域のなかから、カウントデータの記録に使用する記憶領域の順序を規定する所定の順序に従って、M個(Mは、3以上N未満の整数)の記憶領域を選択して小ループ範囲に定め、該小ループの範囲に含まれる記憶領域を所定の順序に沿って使用してカウントデータを記録し、該小ループ範囲の最後尾の記憶領域を使用してカウントデータを記録すると、該小ループ範囲を、所定の順序に沿って後方へずらして小ループ範囲を変更する、ようにして、カウントデータを記憶部に記録し、データ修復部は、N個の記憶領域に記憶されたカウントデータを、カウントデータの値が単調に変化するようにソートして被ソートカウントデータ列を導出し、被ソートカウントデータ列において互いに隣り合ったカウントデータ同士の差分値を求めてカウントデータ差分値列を導出し、当該被ソートカウントデータ列およびカウントデータ差分値列に基づいて、N個の記憶領域に記憶されたカウントデータの破損を検出して該破損を修復する、カウントデータ記録装置である。
本発明の一態様においては、データ修復部は、カウントデータ差分値列において1番目に位置する第1カウントデータ差分値からj番目(jは、1から(N−1)までの整数)に位置する第jカウントデータ差分値までのj個の差分値に基づいて、被ソートカウントデータ列における第j番目および第j+1番目に位置するカウントデータの少なくともいずれかの破損の有無を検出する、ことが好ましい。
本発明の一態様においては、データ修復部が被ソートカウントデータ列における第M番目に位置するカウントデータの破損を検出した場合には、データ修復部は、被ソートカウントデータ列における第1番目に位置するカウントデータの値を前記所定幅で除算し、当該除算にて得た商をMで除算したときに生じる剰余に基づいて、被ソートカウントデータ列における第M番目に位置するカウントデータを修復する、ことが好ましい。
本発明の一態様においては、データ修復部が被ソートカウントデータ列における第(M+k)番目(kは、1からN−Mの整数)に位置するカウントデータの破損を検出した場合には、データ修復部は、被ソートカウントデータ列における第(M+k−1)番目に位置するカウントデータの値に対してMと所定幅の積を加算して得た値を用いて、第(M+k)番目に位置するカウントデータの破損を修復する、ことが好ましい。
本発明は、その別の一態様においては、カウントデータ記録装置が、所定値から所定幅で単調に変化するカウント値をカウントデータとして記憶領域に記録するカウントデータ記録方法であって、データ書込部が、カウントデータを記憶する記憶領域をN個(Nは、4以上の整数)備える記憶部の記憶領域のなかから、カウントデータの記録に使用する記憶領域の順序を規定する所定の順序に従って、M個(Mは、3以上N未満の整数)の記憶領域を選択して小ループ範囲に定めるステップと、データ書込部が、該小ループの範囲に含まれる記憶領域を所定の順序に沿って使用してカウントデータを記録するステップと、データ書込部が、該小ループ範囲の最後尾の記憶領域を使用してカウントデータを記録すると、該小ループ範囲を、所定の順序に沿って後方へずらして小ループ範囲を変更するステップと、データ修復部が、N個の記憶領域に記憶されたカウントデータを、カウントデータの値が単調に変化するようにソートして被ソートカウントデータ列を導出するステップと、データ修復部が、被ソートカウントデータ列において互いに隣り合ったカウントデータ同士の差分値を求めてカウントデータ差分値列を導出するステップと、データ修復部が、当該被ソートカウントデータ列およびカウントデータ差分値列に基づいて、N個の記憶領域に記憶されたカウントデータの破損を検出して該破損を修復するステップと、を有するカウントデータ記録方法である。
本発明は、そのさらに別の一態様においては、所定値から所定幅で単調に変化するカウント値をカウントデータとして記憶領域に記録するカウントデータ記録装置のコンピュータが実行可能なカウントデータ記録プログラムであって、データ書込部に、カウントデータを記憶する記憶領域をN個(Nは、4以上の整数)備える記憶部の記憶領域のなかから、カウントデータの記録に使用する記憶領域の順序を規定する所定の順序に従って、M個(Mは、3以上N未満の整数)の記憶領域を選択して小ループ範囲に定めさせるステップと、データ書込部に、該小ループの範囲に含まれる記憶領域を所定の順序に沿って使用してカウントデータを記録させるステップと、データ書込部に、該小ループ範囲の最後尾の記憶領域を使用してカウントデータを記録すると、該小ループ範囲を、所定の順序に沿って後方へずらして小ループ範囲を変更させるステップと、データ修復部に、N個の記憶領域に記憶されたカウントデータを、カウントデータの値が単調に変化するようにソートして被ソートカウントデータ列を導出させるステップと、データ修復部に、被ソートカウントデータ列において互いに隣り合ったカウントデータ同士の差分値を求めてカウントデータ差分値列を導出させるステップと、データ修復部に、当該被ソートカウントデータ列およびカウントデータ差分値列に基づいて、N個の記憶領域に記憶されたカウントデータの破損を検出して該破損を修復させるステップと、を有するカウントデータ記録プログラムである。
本発明によるカウントデータ記録装置およびカウントデータ記録方法は、メモリに対する書込繰り返し耐性とカウント可能な回数との相対的利用効率の観点においてメモリの利用効率が従来よりも優れ、かつ、記録されたカウントデータが破損を受けた場合には、当該破損を修復し、正確なカウントデータに戻すことが可能である。
本発明の実施の形態によるカウントデータ記録装置は、記憶装置の書き込み繰り返し耐性を超えてカウントデータを記録することが可能である。当該カウントデータ記録装置は、それぞれがカウントデータを記憶可能な記憶領域をN個(N:4以上の整数。)備える。カウントデータ記録装置は、カウント開始値C(Cは任意の数。)からインクリメント幅L(Lは0を除く数。)で単調に増加(Lが正数の場合。)(減少(Lが負数の場合。))するカウントデータを記録する。当該カウントデータ記録装置は、カウントデータを1回記録する度に、次に使用する記憶領域を所定の順序に従って変更する。
該カウントデータ記録装置においては、上記所定の順序における第N番目の記憶領域を使用してカウントデータを記録した場合、その次にカウントデータを記録するときは、原則として、上記所定の順序における第1番目の記憶領域を使用してカウントデータを記録するようにして、循環的にN個の記憶領域を使用する。本願においては、この、N個の記憶領域からなる、カウントデータの記録に使用する記憶領域の循環を「大ループ」と称する。
さらに、本発明の実施の形態によるカウントデータ記録装置は、上記「大ループ」の内部に含まれ、カウントデータの記録に使用する記憶領域を上記所定の順序に従って局所的に循環させるもう1つのループを備える。ここでは、この大ループ内における記憶領域のもう1つの循環を、「小ループ」と称する。「小ループ」は、M個(M:3以上N未満の整数。)の記憶領域からなり、1回のカウントデータの記録毎に順番に、次に使用する記憶領域を小ループ内で変更する。そして、小ループについての第M番目の記憶領域を使用してカウントデータを記録し、その次にカウントデータを記録するときは、小ループを構成するM個の記憶領域の範囲を、大ループ内における上記所定の順序に従って1つ後方へシフトさせ、新たな小ループの範囲を規定し、当該新たな小ループについての第1番目の記憶領域を使用してカウントデータを記録する。例えば、最初の小ループの範囲が、大ループについての第1番目から第M番目までのM個の記憶領域であれば、当該第M番目の記憶領域を使用してカウントデータを記録した後、小ループの範囲は、大ループについての第2番目から第(M+1)番目までのM個の記憶領域が新たな小ループの範囲となり、次のカウントデータの記録は、大ループについての第2番目の記憶領域に対して行われる。
小ループの範囲が、大ループについての第N番目の記憶領域を超えるような場合には、小ループの範囲は、大ループについての所定の順序に従って循環のルールに従って大ループの第1番目の記憶領域に戻って延びる。
また、本発明にかかるカウントデータ記録装置は、カウントデータの破損を検出し、検出した破損を修復する。
本発明にかかるカウントデータ記録装置は、下記の原理に基づいて、カウントデータの破損を検出し、検出した破損を修復する。
上述したような方法でカウントデータを記録することにより、N個の記憶領域に記録されるカウントデータを、カウントデータの値に従って単調に変化するように(降順で(インクリメント幅Lが正数の場合。)または昇順で(インクリメント幅Lが負数の場合。))並べ替え(ソート)したときのカウントデータ列(被ソートカウントデータ列)は、有限個のパターン(カウントデータアドレス列パターン)のいずれかに一致する。また、被ソートカウントデータ列において互いに隣接するカウントデータ値の差分値がなす数列(カウントデータ差分値列)もまた、有限個のパターン(カウントデータ差分値列パターン)のいずれかに一致する。さらには、任意のカウントデータアドレス列パターンについて、当該カウントデータアドレス列パターンにおいて生じ得るカウントカウントデータ差分値列パターンとの対応関係もまた、各カウントデータアドレス列パターンについて高々有限個の予め定まった対応関係しか存在しない。しかるに、実際に記録されたカウントデータが正常であるか、破損を含んでいるか、は、当該カウントデータを、カウントデータの値でソートした被ソートカウントデータ列および被ソートカウントデータ列についてのカウントデータ差分値列が、カウントデータアドレス列パターンのいずれかと一致し、かつ、該カウントデータアドレス列パターンと対応しているカウントデータ差分値列パターンと一致するか、否か、に基づいて、判断することが可能である。
このような原理に基づいて、本発明にかかるカウントデータ記録装置は、カウントデータの破損を検出する。
また、本発明にかかるカウントデータ記録装置は、カウントデータの破損を検出した場合には、例えば、被ソートカウントデータ列において所定の順番に位置するカウントデータを正常なカウントデータであるとみなし、当該みなしにかかるカウントデータと、所定のカウントデータアドレス列パターンおよびカウントデータ差分値パターンとに基づいて、カウントデータの修復を行う。
このような構成により、本発明による実施の形態にかかるカウントデータ記録装置は、記憶領域の繰り返し書き込み耐性を超えた回数のカウントデータの記録、ならびに、カウントデータの破損の検出、および、カウントデータの破損の修復を行うことができる。
<カウントデータ記録装置の構成>
図1は、本発明にかかる実施の形態によるカウントデータ記録装置を示す斜視図である。本実施の形態においては、カウントデータ記録装置は、デジタル複合機(MFP)1である。MFP1は、所謂、画像形成装置であり、画像形成のためにトナーカートリッジ3、および、感光体ユニット5を、内部に備える。
図2は、感光体ユニット5の斜視図である。感光体ユニット5は、その使用回数をカウントするカウントデータを記録するための記憶装置7を備える。記憶装置7は、データ書き込みについて、記憶領域に繰り返し書き込むことができる回数が規定されており、規定された繰り返し回数を超えて、データを書き込むことは、データ記録の安定性を損なう。
図3は、本発明にかかる実施の形態によるカウントデータ記録装置であるMFP1のハードウェア構成を示すブロック図である。MFP1は、データ処理や装置全体の動作の制御をする中央処理装置(CPU)11、プログラムやデータを保持するランダム・アクセス・メモリ(RAM)13、プログラムやデータを保持するリード・オンリ・メモリ(ROM)15を備え、これらはデータバスにより接続され、MFP1内においてコンピュータ21を構成する。コンピュータ21は、カウントデータ記録用プログラムを実行することにより、カウントデータ記録装置として機能する。
また、MFP1のコンピュータ21は、カウントデータを記録するための記憶装置7、各種デバイスとのデータ送受信をするためのI/OLSI17と接続される。I/OLSI17を介し、コンピュータ21は、出力デバイス19oおよび入力デバイス19iと接続される。
図4は、本発明の実施の形態によるカウントデータ記録装置にかかる機能を実現するためにMFP1が備える機能を表すブロック図である。コンピュータ21は、カウントデータ記録用プログラムを実行することにより、本図に示される機能を実現する。
コンピュータ21は、各機能ブロックを制御する制御部23、記憶装置7に対しデータを所定のアドレス(記憶領域)に書き込むデータ書込部25、記憶装置7に記録されているカウントデータ等の破損を検出し、当該破損を修復するデータ修復部27、記憶装置7から所定のアドレス(記憶領域)に記録されたデータを読み出すデータ読出部29、および、カウントデータ記録用プログラムの実行に必要な設定データを保持する設定データ保持部31を実現する。
データ書込部25は、設定データ保持部31等に保持された設定データを参照してカウントデータを書き込むアドレス(記憶領域)を決定する書込アドレス決定部25a、および、決定されたアドレス(記憶領域)へ、カウントデータを書き込むカウントデータ書込部25bを備える。
データ修復部27は、データ読出部29が読み出した複数の所定のアドレス(記憶領域)に記録されたカウントデータを所定の規則(降順または昇順)で並べ替え、並べ替えた結果(被ソートカウントデータ列)を出力するカウントデータソート部27a、カウントデータソート部27aが並べ替えた結果(被ソートカウントデータ列)について互いに隣接するカウントデータ間の差分(カウントデータ差分値列)を算出するカウントデータ差分算出部27b、ならびに、被ソートカウントデータ列およびカウントデータ差分値列パターン、および、被ソートカウントデータ列において所定の順番に位置するカウントデータの値に基づいて、カウントデータの破損を検出し検出された破損を修復する修復処理実行部27cを備える。
修復処理実行部27cは、データ破損の検出のための処理、および、検出されたデータ破損の修復のための処理、を実行する。
データ破損の検出処理は、上記被ソートカウントデータ列におけるアドレス(記憶領域)の並び方、上記被ソートカウントデータ列についてのカウントデータ差分値列の値の並び方、および、上記被ソートカウントデータ列における所定の順番に位置するカウントデータの値を、正常な(データ破損が含まれない)カウントデータを上記並べ替えした場合に起こり得るカウントデータの並び方(カウントデータアドレス列パターン)、および、各カウントデータアドレス列パターンについての互いに隣接するカウントデータの値の差分値の並び方(カウントデータ差分値列パターン)との組み合わせと比較することで、データ破損の生じているカウントデータを特定する。上記正常なカウントデータについて起こり得るカウントデータアドレス列パターンとカウントデータ差分値列パターンとの組み合わせは、データ破損の検出処理を実行する前に予め求めておき、装置が保持すればよい。上記カウントデータアドレス列パターンおよびカウントデータ差分値列パターンの数は、カウントデータの記録に用いるアドレスの数(大ループを構成するアドレスの総数N)および小ループを構成するアドレスの総数Mによって変化するが、いずれの場合においても高々有限個しかないため、保持可能である。
データ破損の修復処理は、修復処理実行部27cが、データ破損の検出処理が検出した破損を含むカウントデータについて、上記カウントデータアドレス列パターンおよびカウントデータ差分値列パターンならびに被ソートカウントデータ列において所定の順番に位置するカウントデータの値に基づいて正常なカウントデータ値を求め、データ修復の指示を出力し、当該指示にもとづいて、データ書込部25のカウントデータ書込部25bが、正常なカウントデータ値を該当する記憶領域に書き込むことによって行われる。
設定データ保持部31は、記憶装置7の、カウントデータを記録するために用意されている複数のアドレス、当該アドレスに対してカウントデータの書き込みを実施する順序、当該アドレスの総数(大ループ構成アドレス総数N)、小ループ構成アドレス総数M、カウントデータのインクリメント幅L、カウント初期値C等を保持する。
<記憶装置7が保持するデータの構成>
図5は、記憶装置7において、複数の、アドレス指定された記憶領域に対し、カウントデータが書き込まれる際に使用されるアドレスの順序を説明する模式図である。
アドレスとは、一般に、情報処理において、その処理の対象が存在する場所を規定する識別子である。本明細書においては、アドレスは、記憶装置7における記憶領域の特定のために用いる識別子を含む。
ここでは、1つのアドレスによって指定される記憶領域は、カウントデータを保持するのに十分なビット幅を有する。しかしながら、本発明は、複数のアドレスによって規定される記憶領域を用いて1つのカウントデータを記録することを除外するものではない。
1つのアドレスによって特定される記憶位置の記憶容量が、1つのカウントデータを記憶するのに必要な記憶容量に満たない場合には、複数のアドレスによって特定される複数の記憶位置に、当該1つのカウントデータを分割して記憶すればよい。その場合、本発明にかかるカウントデータ記録装置は、1つカウントデータを書き込む複数の記憶領域の組み合わせの情報や、それぞれにカウントデータを書き込む順序の情報を保持すればよい。
図5においては、図面左側に、N個(N:N>=4の正数。)の記憶領域が示される。該N個の記憶領域は、本発明における大ループを構成する記憶領域である。上述のように、N個の記憶領域には、カウントデータを書き込む順序が予め規定される。当該順序は、本図においては、第1の、第2の、・・・、第(N−1)の、第Nの、といった修飾語で表されている。
また、上述のように、本発明においては、大ループ内部において、M個の記憶領域からなる小ループが構成される。該小ループを構成するアドレス(記憶領域)の総数は、M個であればよい。ここで、Mは、3以上であって、Nよりも小さい自然数であればよい。本図においては、M=3として、図を描いている。
カウントデータの書き込みが行われる順序を説明する。先ず、カウントデータ記録装置は、最初に起動した場合にのみ、初期設定を実行する。初期設定において、第1ないし第Nの記憶領域に対し、初期値が書き込まれる。
初期設定において、第1ないし第Nの記憶領域のそれぞれに書き込まれる初期値は、以下のようであることが望まれる。但、本発明にとってこの初期値の書き込みは必須でない。本発明においては、初期値の書き込みが行われない場合であっても、第1から第Nまでの各記憶領域に対し、それぞれ少なくとも1回のカウントデータの書き込みが行われた場合には、カウントデータの破損(異常)の検出および異常の修復をすることができる。
カウントデータの初期値は、
第i記憶領域(i:1<=i<M)に関し、
(初期値)=C−(M−i)・L、
第i記憶領域(i:M<=i<=N)に関し、
(初期値)=C−(N−i+1)・M・L、であることが望ましく、ここで、(C、L、M、N)は、(カウント開始値、カウントインクリメント幅、小ループ構成アドレス総数、大ループ構成アドレス総数)である。
第1回目のカウントデータの書き込みにおいては、カウントデータ(カウント開始値C)は、第1の記憶領域に書き込まれる。(図中の「CD」は、カウントデータを表す。)
第2回目のカウントデータの書き込みにおいては、カウントデータ(カウント開始値+カウントインクリメント幅=C+L)は、第2の記憶領域に書き込まれる。
第3回目のカウントデータの書き込みにおいては、カウントデータ(C+2・L)は、第3の記憶領域に書き込まれる。
さて、小ループ構成アドレス総数Mが、M=3である本図の例においては、第4回目のカウントデータ書込に際し、小ループの範囲が、アドレスの順序にそって後方に1つシフトされ、第2、第3、第4の記憶領域が、新たな小ループの範囲に設定される。
そして、第4回目のカウントデータの書き込みにおいては、カウントデータ(C+3・L)は、第2の記憶領域に書き込まれる。
このようにして、第5、第6回目のカウントデータの書き込みは、それぞれ、第3の、第4の記憶領域に対してなされ、その後で、小ループの範囲が、先程と同様にして後方に1つシフトされる。そして、第7回目のカウントデータの書き込みは、第3の記憶領域になされる。
上述したように、大ループの最後の記憶領域(第Nの記憶領域)の次は、第1の記憶領域へ戻り、繰り返し、第1の記憶領域から順番にカウントデータが書き込まれる。なお、小ループの範囲もまた、第Nの記憶領域を超える場合には、第1の記憶領域に戻って、小ループの範囲が設定される。
このようにして、カウントデータ記録装置は、(書込アドレス決定部25aが)カウントデータを書き込むアドレスを決定し、(カウントデータ書込部25bが)カウントデータを当該アドレスにて指定される記憶領域に記録することで、カウントデータの記録を行う。
当業者にとっては、明白なことだが、上述のようにして、複数の記憶領域を循環的に使用してカウントデータの記録を行う場合、各記憶領域の繰り返し書き込み可能回数をR[回](R:自然数。)とすれば、大ループを構成するアドレス総数N(N:N>=4の整数。)を用いて、本発明にかかるカウントデータ記録装置は、R・N回のカウントデータの記録が可能である。よって、カウント値Cからカウント値Cmaxまで、インクリメント幅Lでカウントデータを記録する場合、少なくとも、(((Cmax−Cmin)/L)+1)/R以上の自然数だけアドレスがあればよい。記憶装置7の記憶領域の効率的使用の観点からは、(((Cmax−Cmin+1)/L)+1)/R以上の最小の自然数が最も有利である。
図6は、カウント開始値C=1、カウントインクリメント幅L=+1、小ループ構成アドレス総数M=3、大ループ構成アドレス総数N=6として、カウントデータの書き込みを26回実行した場合における、各記憶領域において保持されるカウントデータの値の推移を示す図である。本図においては、第iの記憶領域は、アドレス[i](i:1<=i<=6の整数。)と表記されている。また、斜線が付された部分は、各回のカウントデータ書き込みにおいてカウントデータが書き込まれる記憶領域を示している。
さて、このようにして各記憶領域(第1から第6の記憶領域)に対して書き込まれたカウントデータを、カウントデータの値に注目し、値の大きいものから順番に、つまり、降順で並べ替え(ソートし)てみる。なお、本発明においては、ソートは、カウントインクリメント幅Lが負数の場合には、値の小さいものから順番に、つまり、昇順でソートされる。
図7は、図6の各カウント回のカウント値(カウントデータの値)について降順でソートした場合の記憶領域の並びを示す図である。図中、I.〜VI.は、ソートされたカウントデータ列(被ソートカウントデータ列)の先頭からの各カウントデータの順番を示す。
このように、被ソートカウントデータ列の並び方は、パターン[01]からパターン[12]までの12通りがあり、それ以外の並び方は、カウントデータが正常な場合には、存在しない。本願では、この並び方のパターンをカウントデータアドレス列パターンと称している。
また、組み合わせの総数は、大ループ構成アドレス総数Nおよび小ループ構成アドレス総数Mを用いて、N・(M−1)と表すことができる。このように、任意の(M,N)の組み合わせについて、カウントデータアドレス列パターンは、有限である。
図8は、カウントデータアドレス列パターンを整理した図である。このように、(M,N)=(3,6)の場合には、カウントデータアドレス列パターンは、パターン[01]からパターン[12]までの12通りである。
次に、被ソートカウントデータ列およびカウントデータアドレス列パターンにおいて互いに隣接するカウントデータの値の差分値の並び方について説明する。
図9は、正常なカウントデータについて、任意の(M,N)で成立する差分値列の並びを示す図である。なお、簡単のために、本図においては、カウントインクリメント幅Lは、L=+1としている。任意のLについては、当業者であれば、本図より容易に導くことが可能であると思われるため、図示を省略する。
大ループを構成するアドレスの総数がNの場合、差分値の総数は、(N−1)となる。カウントデータを降順(または昇順)でソートした被ソートカウントデータ列において、先頭(第1番目)のカウントデータの値と、2番目のカウントデータの値との差分値を、第1カウントデータ差分値と称する。同様に、2番目のカウントデータの値と3番目のカウントデータの値との差分値を、第2カウントデータ差分値と称する。このようにして総数(N−1)個の差分値を区別し、その順に並べた数列を、カウントデータ差分値列と称する。
任意の(M,N)について、カウントデータ差分値列は、M通り存在する。
そして、各カウントデータ差分値列においては、第1カウントデータ差分値から第(M−2)カウントデータ差分値は、全て「1」(カウントインクリメント幅L)となり、第(M−1)カウントデータ差分値は、「1」から「M」までの整数のいずれか(j・L(j:1<=j<=M))となり、第Mカウントデータ差分値から第(N−1)カウントデータ差分値は、全て「M」(L・M)となる。このようにして、カウントデータ差分値列のパターン総数は、M通りとなる。
図10は、(C,L,M,N)=(1,1,3,6)の場合におけるカウント回数0回目(初期値)から26回目までの各回の被ソートカウントデータ列についてのカウントデータ差分値列の詳細を示す図である。本例においては、M=3であるから、M−1=2である。上述のように、第1カウントデータ差分値は、常に、「1」であり、また、第3カウントデータ差分値から第5カウントデータ差分値は、常に、「M(M=3)」であり、第2カウントデータ差分値のみが、「1」から「M(M=3)」までの間の整数で順に変化することがわかる。
図11は、(C,L,M,N)=(1,1,3,6)の場合におけるカウントデータ差分値列を整理した図である。図より明らかなように、カウントデータ差分値列パターンは、パターン[1]からパターン[3]までの3通りである。
ここまで、(M,N)=(3,6)の場合においては、正常なカウントデータについての被ソートカウントデータ列について、カウントデータアドレス列パターンは、高々12通り、カウントデータ差分値列パターンは、高々3通りしか存在しないことを説明した。
次に、図12を参照し、カウントデータアドレス列パターンと、カウントデータ差分値列パターンとの関係について説明する。図12は、各カウントデータアドレス列パターンについて、可能なカウントデータ差分値列パターンを示した図である。
このように、各カウントデータアドレス列パターンは、全てのカウントデータ差分値列パターンを取り得るものではない。寧ろ、各カウントデータアドレス列パターンは、限定されたカウントデータ差分値列パターンを取り得る。例えば、カウントデータアドレス列パターン[01]、[03]、[05]、[07]、[09]、[11]のいずれかに従う(正常な)被ソートカウントデータ列においては、カウントデータ差分値列パターン[1]および[3]のいずれかが成立する。また、カウントデータアドレス列パターン[02]、[04]、[06]、[08]、[10]、[12]のいずれかに従う(正常な)被ソートカウントデータ列においては、カウントデータ差分値列パターン[2]のみが成立する。本図は、(M,N)=(3,6)の場合について示す図であるが、任意の(M,N)の組み合わせについて、各カウントデータアドレス列パターンが取り得るカウントデータ差分値列パターンの総数は、有限であり、その特定も容易である。このことは、当業者であれば、容易に理解される事柄と思われる。
本発明による実施の形態によるカウントデータ記録装置は、上記したように、カウントデータソート部27a(図4)が、被ソートカウントデータ列を作成し、カウントデータ差分算出部27b(図4)が、該被ソートカウントデータ列のカウントデータ差分値列を算出し、修復処理実行部27cは、被ソートカウントデータ列およびそのカウントデータ差分値列を、予め保持するカウントデータアドレス列パターンおよびカウントデータ差分値列パターンと比較することによって、カウントデータの破損(異常)を検出し、検出した異常なカウントデータを、被ソートカウントデータ列の所定の順番に位置するカウントデータの値、ならびに、カウントデータアドレス列パターンおよびカウントデータ差分値列パターンとに基づいて、修復する。
以下、本発明による実施の形態によるカウントデータ記録装置におけるカウントデータの書き込み、ならびに、異常の検出および異常の修復にかかる処理について説明する。
<カウントデータ書き込み処理>
図13は、カウントデータ記録装置1(図1)が記憶装置7(図2)の記憶領域に対してカウントデータを書き込む処理を示すフローチャートである。
ステップS101において、データ書込部25(図4)は、初期設定として記憶装置7の記憶領域に初期値を書き込む。この処理は、カウントデータ記録装置1が初めて起動した場合や、記憶装置7が換装された場合にのみ行えば足りる。
ステップS103において、制御部23(図4)は、データ書込部25に対し、カウントデータ書込指示を送る。
データ書込部25が、カウントデータ書込指示を受けた場合(ステップS103における「YES」)、処理は、ステップS105へ移行する。
データ書込部25が、カウントデータ書込指示を受けていない場合(ステップS103における「NO」)、処理は、ステップS103を繰り返す。
ステップS105において、データ書込部25は、その書込アドレス決定部25aが、カウントデータを書き込む記憶装置7内記憶領域を決定し、カウントデータ書込部25bが当該記憶領域へカウントデータを書き込むことで、カウントデータの書き込みを1回行う。このとき、書込アドレス決定部25aやカウントデータ書込部25bは、設定データ保持部31等を参照する。そうすることで、書き込むべき記憶領域や、書き込むべきカウントデータの値は、決定される。
ステップS107からステップS121において、書込アドレス決定部25aは、次回のカウントデータ書き込みにおいて使用する記憶領域および次回のカウントデータ書き込みにおいて書き込むカウントデータの値を設定する処理を開始する。
ステップS107において、書込アドレス決定部25aは、直前に実行したステップS105においてカウントデータを書き込んだ記憶領域のアドレスが、大ループにおける第N番目のアドレスであるか、否かについて判定する。
直前のステップS105においてカウントデータを書き込んだ記憶領域のアドレスが、大ループにおけるアドレス順序の最後尾のアドレス(アドレス[N])である場合(ステップS107における「YES」)、処理は、ステップS111へ移行する。
直前のステップS105においてカウントデータを書き込んだ記憶領域のアドレスが、大ループにおけるアドレス順序の最後尾のアドレスでない場合(ステップS107における「NO」)、処理は、ステップS109へ移行する。
ステップS109において、書込アドレス決定部25aは、大ループにおけるアドレス順序において直前のステップS105においてカウントデータを書き込んだ記憶領域の次の順番で管理されている記憶領域を、次データ書込アドレスに設定する。
ステップS111において、書込アドレス決定部25aは、大ループにおけるアドレス順序において先頭(第1番目)で管理されている記憶領域を、次データ書込アドレスに設定する。
ステップS113において、書込アドレス決定部25aは、ステップS109またはステップS111で設定した次データ書込アドレスが現在の小ループの範囲を超えているか、否か、判定する。
書込アドレス決定部25aが、次データ書込アドレスは現在の小ループの範囲を超えていると判定した場合(ステップS113における「YES」)、処理は、ステップS115へ移行する。
書込アドレス決定部25aが、次データ書込アドレスは現在の小ループの範囲を超えていないと判定した場合(ステップS113における「NO」)、処理は、ステップS115、S117をスキップして、ステップS119へ移行する。
ステップS115において、書込アドレス決定部25aは、大ループにおけるアドレス順序に沿って、小ループの範囲を1アドレス分だけ後方へシフトさせて、新たな小ループの範囲として管理する。
ステップS117において、書込アドレス決定部25aは、当該新たな小ループの範囲の先頭(第1番目)として管理されるアドレスを、次データ書込アドレスに設定する。
ステップS119において、書込アドレス決定部25aは、現在、次データ書込アドレスに設定されているアドレスを、データ書込アドレスに決定し、設定する。
ステップS121において、データ書込部25は、直前に実行したステップS105において書き込んだカウントデータの値に、カウントインクリメント幅Lを加算して取得した値を、カウント値に設定する。
なお、新たなデータ書込アドレスや、新たなカウント値は、書込アドレス決定部25aが保持してもよいし、あるいは、一旦、設定データ保持部31等に記録してもよい。
ステップS123において、制御部23は、カウントデータ書込処理を終了するか、否か、判定する。
制御部23が、カウントデータ書込処理を継続すると判定した場合(ステップS123における「YES」)、処理は、ステップS103へ戻る。
制御部23が、カウントデータ書込処理を終了すると判定した場合(ステップS123における「NO」)、全てのカウントデータ書込処理が終了する。
<カウントデータ破損検出処理および破損修復処理>
これより、本発明の実施の形態によるカウントデータ記録装置におけるカウントデータの異常(破損)の検出、および、破損の修復にかかる処理について説明する。
図14は、主としてデータ修復部27が実行する、カウントデータの異常の検出および検出された異常の修復にかかる処理を示すフローチャートである。
ステップS201との関連において、データ読出部29は、記憶装置7の第1から第Nの記憶領域に記録されたカウントデータを読み出して、データ修復部27へ送る。
ステップS201において、データ修復部27のカウントデータソート部27aは、データ読出部29から受け取ったカウントデータを、各カウントデータの値の降順で、並べ替え(ソート)する。ここでは、ソートされたカウントデータの並びを、被ソートカウントデータ列と称する。被ソートカウントデータ列は、カウントデータソート部27aからカウントデータ差分算出部27bへ送られる。
ステップS203において、カウントデータ差分算出部27bは、被ソートカウントデータ列において互いに隣接するカウントデータの値について差分値を算出する。当該差分値は、複数個の数値からなる数列である。カウントデータ差分算出部27bは、差分値を被ソートカウントデータ列のカウントデータの並びと整合するように並べて数列を作成し、当該数列を修復処理実行部27cへ送る。ここでは、上記差分値からなる数列を、被ソートカウントデータ列についてのカウントデータ差分値列と称する。
ステップS205において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列が、カウントデータ差分値列パターン(図9、図11等)のいずれかと一致するか、否か、を判定する。
修復処理実行部27cが、被ソートカウントデータ列についてのカウントデータ差分値列はカウントデータ差分値列パターンのいずれか1つと一致すると判定した場合(ステップS205における「YES」)、処理は、終了する。つまり、ステップS205において「YES」と判定される場合とは、修復処理実行部27cは、被ソートカウントデータ列には異常なカウントデータ(破損されたカウントデータ)が含まれないと判定した場合に相当する。
修復処理実行部27cが、被ソートカウントデータ列についてのカウントデータ差分値列はカウントデータ差分値列パターンのいずれとも一致しないと判定した場合(ステップS205における「NO」)、処理は、ステップS207へ移行する。つまり、ステップS205において「NO」と判定される場合とは、修復処理実行部27cは、被ソートカウントデータ列に異常なカウントデータ(破損されたカウントデータ)が含まれると判定した場合に相当する。以降の処理において、修復処理実行部27cは、破損されたカウントデータの修復処理を実行する。
ステップS207において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列の第1番目の差分値が、カウントデータ差分値列パターンのいずれかの第1カウントデータ差分値と一致するか、否か、を判定する。
修復処理実行部27cが、被ソートカウントデータ列についてのカウントデータ差分値列の第1番目の差分値はカウントデータ差分値列パターンのいずれかの第1カウントデータ差分値と一致すると判定した場合(ステップS207における「YES」)、処理は、ステップS209へ移行する。
修復処理実行部27cが、被ソートカウントデータ列についてのカウントデータ差分値列の第1番目の差分値はカウントデータ差分値列パターンの第1カウントデータ差分値のいずれとも一致しないと判定した場合(ステップS207における「NO」)、処理は、ステップS3へ移行する。
(カウントデータ修復処理1)
図15は、カウントデータ修復処理1(図14におけるS3)の詳細を示すフローチャートである。これより、図15を参照してカウントデータ修復処理1について説明する。
カウントデータ修復処理1は、第1カウントデータ差分値が正常でない場合に実行される修復処理である。第1カウントデータ差分値は、被ソートカウントデータ列における先頭(1番目)と2番目に位置するカウントデータの値の差分値である。よって、第1カウントデータ差分値が正常な値を示さないことは、被ソートカウントデータ列における1番目のカウントデータの値、および、2番目のカウントデータの値の少なくともいずれか一方が破損していることを意味する。
これより説明するカウントデータ修復処理1においては、被ソートカウントデータ列の先頭に位置するカウントデータの値を正常な値であると認定し、被ソートカウントデータ列の2番目以降に位置するカウントデータの値を修復する。
ステップS301において、修復処理実行部27cは、被ソートカウントデータ列の1番目に位置するカウントデータのアドレスを取得する。
ステップS303において、修復処理実行部27cは、ステップS301において取得したアドレスが先頭に位置するカウントデータアドレス列パターン(図8参照。)を抽出し、抽出されたパターンを修復用の候補パターンとする。
ステップS305において、修復処理実行部27cは、ステップS303において抽出した修復用の候補パターンに対応するカウントデータ差分値列パターン(図11参照。)を抽出し、抽出したカウントデータ差分値列パターンを、ステップS303において抽出した候補パターンと対応付けて(図12参照。)、保持する。
ステップS307において、修復処理実行部27cは、ステップS303およびステップS305において抽出した候補パターンおよび該候補パターンに対応するカウントデータ差分値列パターンのなかから、カウントデータ差分値列パターンがカウントデータ差分値列パターン[1](図11)であるカウントデータアドレス列パターンを特定し、当該カウントデータアドレス列パターンおよびそれと対応付けられたカウントデータ差分値列パターンを、修復に用いるカウントデータアドレス列パターンおよびカウントデータ差分値列パターンに決定する。
なお、本ステップの本質的意義は、修復されたカウントデータについての被ソートカウントデータ列のカウントデータ差分値列を、1(より一般にはカウントインクリメント幅L)と、M(より一般にはL・M)のみになるように、被ソートカウントデータ列の2番目からN番目までに位置するカウントデータの値を修復することにある。また、カウントデータ差分値列が、1(より一般にはカウントインクリメント幅L)と、M(より一般にはL・M)のみで構成されることは、第(M−1)カウントデータ差分値が1(より一般にはL)であることに対応する。(第(M−1)カウントデータ差分値以外のカウントデータ差分値は、カウントデータが正常であれば、常に、1とM(より一般には、LとL・M)のみからなる。)
ステップS309において、修復処理実行部27cは、ステップS307において決定した修復用カウントデータアドレス列パターンおよびそれと対応付けられたカウントデータ差分値列パターン(カウントデータ差分値列パターン[1])ならびに被ソートカウントデータ列の1番目のカウントデータの値に基づいて、被ソートカウントデータ列の2番目以降に位置するカウントデータの値を修復する。
ステップS309の処理が完了すると、修復処理は終了する(図14)。
なお、カウントデータ修復処理1は、任意の(M,N)の組み合わせにおいては、被ソートカウントデータ列の第1カウントデータ差分値から第kカウントデータ差分値(k:1<=k<=M−3の整数。)までが1(より一般には、カウントインクリメント幅L)であって、第(k+1)カウントデータ差分値が1ではない(より一般には、Lでない)ようなカウントデータ異常が検出された場合において、カウントデータの破損を修復するときに使用可能である。
(カウントデータ修復処理1変形例1)
図16は、カウントデータ修復処理の変形例(第1の変形例)を示すフローチャートである。これより、図16を参照してカウントデータ修復処理1変形例1について説明する。
カウントデータ修復処理1変形例1は、第1カウントデータ差分値が正常でない場合には、カウントデータが破損したことを通知する処理を実行する。カウントデータ修復処理1変形例1においては、カウントデータの異常を修復処理は行われない。
ステップS311において、修復処理実行部27cは、カウントデータが破損していることを示す通知(カウントデータ異常)を出力する。当該出力は、例えば、制御部23(図4)へ送られ、制御部23は、当該出力に基づいて所定の処理を実行する。
ステップS311の処理が完了すると、修復処理は終了する(図14)。
(カウントデータ修復処理1変形例2)
図17は、カウントデータ修復処理の変形例(第2の変形例)を示すフローチャートである。これより、図17を参照してカウントデータ修復処理1変形例2について説明する。
カウントデータ修復処理1変形例2もまた、第1カウントデータ差分値が正常でない場合に実行される修復処理である。ただし、本変形例においては、第2カウントデータ差分値、第3カウントデータ差分値、・・・、といった、カウントデータ差分値列において第1カウントデータ差分値の直後に位置する所定数のカウントデータ差分値を参照し、第2カウントデータ差分値から、連続して、カウントデータ差分値の総数の過半数以上のカウントデータ差分値が正常な値を示しているか否かを判定する。そして、カウントデータ記録装置が、当該複数の連続したカウントデータ差分値が正常な値を示していると判定した場合には、修復処理実行部27cは上記過半数よりも多くの正常なカウントデータ差分値と対応するカウントデータの値は正常であると認定し、それら正常であると認められるカウントデータの値に基づいて、被ソートカウントデータ列の1番目等に位置するカウントデータを修復する。
図17に示すフローチャートは、(L,M,N)=(1,3,6)としてカウントデータ修復処理1変形例2を例示するものである。
ステップS313において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列の第2カウントデータ差分値を参照し、当該第2カウントデータ差分値が、カウントデータ差分値列パターン(図11)のいずれかにおける第2カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列についての第2カウントデータ差分値はカウントデータ差分値列パターン(図11)のいずれかにおける第2カウントデータ差分値と一致すると判定した場合(ステップS313における「YES」)、処理は、ステップS315に移行する。
修復処理実行部27cが、被ソートカウントデータ列についての第2カウントデータ差分値はカウントデータ差分値列パターン(図11)のいずれの第2カウントデータ差分値とも一致しないと判定した場合(ステップS313における「NO」)、処理は、ステップS319に移行する。
ステップS315において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列の第3カウントデータ差分値および第4カウントデータ差分値を参照し、当該第3および第4カウントデータ差分値が、共に、ステップS313において第2カウントデータ差分値が一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第3カウントデータ差分値および第4カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列についての第3および第4カウントデータ差分値はステップS313において第2カウントデータ差分値が一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第3および第4カウントデータ差分値と一致すると判定した場合(ステップS315における「YES」)、処理は、ステップS317に移行する。
修復処理実行部27cが、被ソートカウントデータ列についての第3および第4カウントデータ差分値はステップS313において第2カウントデータ差分値が一致すると判定されたカウントデータ差分値列パターンにおける第3および第4カウントデータ差分値のいずれとも一致しないと判定した場合(ステップS315における「NO」)、処理は、ステップS317に移行する。
すなわち、N=6の場合には、カウントデータ差分値列は、5個の差分値で構成される。よって、ステップS315において「YES」と判定され処理がステップS317に移行する場合とは、第2カウントデータ差分値から、当該第2カウントデータ差分値を含めて過半数のカウントデータ差分値が正常である、と判定される場合に対応する。
なお、大ループ構成アドレス総数がNである場合には、カウントデータ差分値列は、(N−1)個の数からなる。よって、第2カウントデータ差分値から、連続して、当該第2カウントデータ差分値を含めて(N−1)/2以上の最小の整数値[個]のカウントデータ差分値が正常であるか、否か、を判定すればよい。
ステップS317において、修復処理実行部27cは、被ソートカウントデータ列において2番目に位置するカウントデータの値に1(より一般には、カウントインクリメント幅L)を加算してなる値を取得し、当該値を用いて被ソートカウントデータ列の1番目に位置するカウントデータの値を修復する。
ステップS319において、修復処理実行部27cは、カウントデータが破損していることを示す通知(カウントデータ異常)を出力する。当該出力は、例えば、制御部23(図4)へ送られ、制御部23は、当該出力に基づいて所定の処理を実行する。
ステップS319の処理が完了すると、修復処理は終了する(図14)。
ステップS321において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列の第5カウントデータ差分値を参照し、当該第5カウントデータ差分値が、ステップS313およびS315において第2、第3、第4カウントデータ差分値が一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第5カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列についてのカウントデータ差分値列の第5カウントデータ差分値はステップS313およびS315において第2、第3、第4カウントデータ差分値が一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第5カウントデータ差分値と一致すると判定した場合(ステップS321における「YES」)、カウントデータ修復処理1変形例2の処理は、終了する。これは、修復処理実行部27cが、被ソートカウントデータ列において6番目に位置するカウントデータの値は、修復する必要がない、と判断したことを意味する。
修復処理実行部27cが、被ソートカウントデータ列についてのカウントデータ差分値列の第5カウントデータ差分値はステップS313およびS315において第2、第3、第4カウントデータ差分値が一致すると判定されたカウントデータ差分値列パターンにおける第5カウントデータ差分値のいずれとも一致しないと判定した場合(ステップS321における「NO」)、処理は、ステップS323へ移行する。
ステップS323において、修復処理実行部27cは、被ソートカウントデータ列において5番目に位置するカウントデータの値に3(より一般には、カウントインクリメント幅Lと小ループ構成アドレス総数Mとの積)を加算してなる値を取得し、当該値を用いて被ソートカウントデータ列の6番目に位置するカウントデータの値を修復する。
ステップS323の処理が完了すると、修復処理は終了する(図14)。
次に、図14のステップS207において「YES」と判定された場合について説明する。
ステップS209において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列の第2番目の差分値が、ステップS207において一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第2カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列についての第2カウントデータ差分値はステップS207において一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第2カウントデータ差分値と一致すると判定した場合(ステップS209における「YES」)、処理は、ステップS211へ移行する。
修復処理実行部27cが、被ソートカウントデータ列についての第2カウントデータ差分値はステップS207において一致すると判定されたカウントデータ差分値列パターンにおける第2カウントデータ差分値のいずれとも一致しないと判定した場合(ステップS209における「NO」)、処理は、ステップS4へ移行する。
(カウントデータ修復処理2)
図18Aおよび図18Bは、カウントデータ修復処理2(図14におけるS4)の詳細を示すフローチャートである。これより、図18Aおよび図18Bを参照してカウントデータ修復処理2について説明する。
カウントデータ修復処理2は、第1カウントデータ差分値は正常であるが第2カウントデータ差分値が正常でない場合に実行される修復処理である。第2カウントデータ差分値は、被ソートカウントデータ列における2番目と3番目に位置するカウントデータの値の差分値である。よって、第1カウントデータ差分値は正常であるが第2カウントデー差分値が正常な値を示さないことは、被ソートカウントデータ列における3番目のカウントデータの値が破損している可能性が高いことを意味する。
以下においては、小ループを構成するアドレスの総数Mが、M=3である場合を用いてカウントデータ修復処理2を説明する。
一般の小ループアドレス構成総数Mに関し、カウントデータ修復処理2は、第1から第(M−2)カウントデータ差分値までは正常だが第(M−1)カウントデータ差分値が正常でない値を示した場合に、カウントデータの修復に用いることができる修復処理である。
ステップS401において、修復処理実行部27cは、被ソートカウントデータ列の先頭(1番目)および2番目に位置するカウントデータのアドレスを取得する。
ステップS403において、修復処理実行部27cは、ステップS401において取得した、1番目および2番目のアドレスが、それぞれ、先頭および2番目に位置するカウントデータアドレス列パターン(図8参照。)を抽出し、抽出されたパターンを修復用の候補パターンとする。
ステップS405において、修復処理実行部27cは、ステップS403において抽出した修復用の候補パターンに対応するカウントデータ差分値列パターン(図11参照。)を抽出し、抽出したカウントデータ差分値列パターンを、ステップS403において抽出した候補パターンと対応付けて(図12参照。)、保持する。
ステップS407において、修復処理実行部27cは、被ソートカウントデータ列の1番目に位置するカウントデータの値を、小ループを構成するアドレスの総数M(例えば、「3」)で除算したときに生じる剰余を算出する。
そして、修復処理実行部27cは、当該剰余に基づいて、ステップS405において抽出されたカウントデータ差分値列パターンのなかから、修復用のカウントデータ差分値列パターンを決定する。
本ステップは、以下のような原理に基づいている。
図9および図10を参照すれば、第(M−1)カウントデータ差分値の変化は、カウント回数についてM[回]の周期を有することがわかる。図10の例(M=3の例)を見れば、第2カウントデータ差分値(第(M−1)差分値)は、カウントインクリメント幅LがL=1である場合においては、1、2、3、1、2、3、・・・・、と、カウント回数について3[回]の周期で変化する。
また、カウント数は、被ソートカウントデータ列の1番目に位置するカウントデータの値である。
したがって、被ソートカウントデータ列の1番目に位置するカウントデータの値が正常である限り、第2カウントデータ差分値(第(M−1)カウントデータ差分値)の値は、被ソートカウントデータ列の1番目に位置するカウントデータの値を、小ループ構成アドレス総数Mで除算したときに生じる剰余の値から求めることができる。
なお、カウントインクリメント幅Lが、L=1でない場合であっても、上記剰余の導出過程において、Lの値を考慮すれば、上記剰余に基づいて、第2カウントデータ差分値(第(M−1)カウントデータ差分値)の値を求めることは容易である。具体的には、任意のカウントインクリメント幅Lについては、上記した被ソートカウントデータ列の1番目の値を小ループ構成アドレス総数Mで除算したときに生じる剰余の代わりに、被ソートカウントデータ列の1番目に位置するカウントデータの値を先ずカウントインクリメント幅Lで除算し、当該除算にて得られた商を小ループアドレス総数Mで除算したときに生じる剰余の値を用いればよい。
本実施の形態においては、カウントインクリメント幅Lは、L=+1としている。そのため、上記ステップS407の処理の説明においては、被ソートカウントデータ列の1番目のカウントデータの値をカウントインクリメント幅Lで除算する工程を省略して説明している。当然のことながら、カウントインクリメント幅Lが1である場合であっても、上記ステップS407の処理において、被ソートカウントデータ列の1番目のカウントデータの値をカウントインクリメント幅Lで除算する工程を実施してよい。
ステップS409において、修復処理実行部27cは、ステップS407の処理によって、修復用のカウントデータ差分値列パターンがただ1つに決定できたか、否か、について判定する。
修復処理実行部27cが、ステップS407の処理から修復用のカウントデータ差分値列パターンをただ1つに決定できたと判定した場合(ステップS407における「YES」)、処理は、ステップS411へ移行する。
修復処理実行部27cが、ステップS407の処理から修復用のカウントデータ差分値列パターンをただ1つに決定できなかったと判定した場合(ステップS407における「NO」)、処理は、ステップS415へ移行する。
ステップS411において、修復処理実行部27cは、ステップS407において決定された修復用のカウントデータ差分値列パターンが、カウントデー差分値列パターン[1]であるか、否か、について判定する。
修復処理実行部27cが、修復用のカウントデータ差分値列パターンはカウントデー差分値列パターン[1]であると判定した場合(ステップS411における「YES」)、処理は、S417へ移行する。
修復処理実行部27cが、修復用のカウントデータ差分値列パターンはカウントデー差分値列パターン[1]でないと判定した場合(ステップS411における「NO」)、処理は、S413へ移行する。
ステップS413において、修復処理実行部27cは、ステップS407において決定された修復用のカウントデータ差分値列パターンが、カウントデー差分値列パターン[2]であるか、否か、について判定する。
修復処理実行部27cが、修復用のカウントデータ差分値列パターンはカウントデー差分値列パターン[2]であると判定した場合(ステップS413における「YES」)、処理は、S419へ移行する。
修復処理実行部27cが、修復用のカウントデータ差分値列パターンはカウントデータ差分値列パターン[2]でないと判定した場合(ステップS413における「NO」)、処理は、S421へ移行する。つまり、この場合、修復用のカウントデータ差分値列パターンは、カウントデータ差分値列パターン[3]である。
つまり、カウントデータ修復処理2においては、修復処理実行部27cは、被ソートカウントデータ列の1番目に位置するカウントデータの値を小ループ構成アドレス総数Mで除算したときに生じる剰余に基づいて、正常な第2カウントデータ差分値(第M−1カウントデータ差分値)を決定し、当該決定に基づいて、修復処理に用いるカウントデータ差分値列パターンを1つに決定する。
そして、修復処理実行部27cは、ステップS417以降において、修復用のカウントデータ差分値列パターンに基づいて、カウントデータの修復処理を実行する。
なお、一般の小ループアドレス構成総数Mに関する、カウントデータ修復処理は、当業者にとっては、以下の説明より明らかであると思われるので、説明を省略する。
ステップS415において、修復処理実行部27cは、カウントデータが破損していることを示す通知(カウントデータ異常)を出力する。当該出力は、例えば、制御部23(図4)へ送られ、制御部23は、当該出力に基づいて所定の処理を実行する。
ステップS415の処理が完了すると、修復処理は終了する(図14)。
ステップS417において、修復処理実行部27cは、被ソートカウントデータ列の2番目((M−1)番目)に位置するカウントデータの値から1を減算(より一般には、カウントインクリメント幅Lを減算)して取得した値を用いて、被ソートカウントデータ列の3番目(M番目)に位置するカウントデータを修復する。
ステップS419において、修復処理実行部27cは、被ソートカウントデータ列の2番目((M−1)番目)に位置するカウントデータの値から2を減算(より一般には、2Lを減算)して取得した値を用いて、被ソートカウントデータ列の3番目(M番目)に位置するカウントデータを修復する。
ステップS421において、修復処理実行部27cは、被ソートカウントデータ列の2番目((M−1)番目)に位置するカウントデータの値から3を減算(より一般には、3L(=M・L)を減算)して取得した値を用いて、被ソートカウントデータ列の3番目(M番目)に位置するカウントデータを修復する。
このように、ステップS417、S419、および、S421により、被ソートカウントデータ列の3番目に位置するカウントデータの値が修復される。
次に、ステップS423以降の処理において、修復処理実行部27cは、被ソートカウントデータ列の4番目以降に位置するカウントデータの値を修復する。
ステップS423以降の処理は、一般の(M,N)においては、被ソートカウントデータ列の第(M+1)番目から第N番目に位置するカウントデータの修復処理に相当する。一般の小ループアドレス構成総数Mおよび大ループアドレス構成総数Nに関する、被ソートカウントデータ列の第(M+1)番目から第N番目までのカウントデータの修復処理は、当業者にとっては、以下の説明より明らかであると思われるので、説明を省略する。
ステップS423において、修復処理実行部27cは、被ソートカウントデータ列についての(3番目のカウントデータの値が修復された後における)第3カウントデータ差分値が、ステップS407にて決定された修復用カウントデータ差分値列パターンの第3カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第3カウントデータ差分値は修復用カウントデータ差分値列パターンの第3カウントデータ差分値と一致すると判定した場合(ステップS423における「YES」)、処理は、ステップS427へ移行する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第3カウントデータ差分値は修復用カウントデータ差分値列パターンの第3カウントデータ差分値と一致しないと判定した場合(ステップS423における「NO」)、処理は、ステップS425へ移行する。
ステップS425において、修復処理実行部27cは、被ソートカウントデータ列の3番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の4番目((M+1)番目)に位置するカウントデータを修復する。
ステップS427において、修復処理実行部27cは、被ソートカウントデータ列の4番目に位置するカウントデータの(ステップS425において修復された後における)値と、5番目に位置するカウントデータの値との差分値(第4カウントデータ差分値)が、ステップS407にて決定された修復用カウントデータ差分値列パターンの第4カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第4カウントデータ差分値は修復用カウントデータ差分値列パターンの第4カウントデータ差分値と一致すると判定した場合(ステップS427における「YES」)、処理は、ステップS431へ移行する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第4カウントデータ差分値は修復用カウントデータ差分値列パターンの第4カウントデータ差分値と一致しないと判定した場合(ステップS427における「NO」)、処理は、ステップS429へ移行する。
ステップS429において、修復処理実行部27cは、被ソートカウントデータ列の4番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の5番目((M+2つまりN−1)番目)に位置するカウントデータを修復する。
ステップS431において、修復処理実行部27cは、被ソートカウントデータ列の5番目に位置するカウントデータの(ステップS429において修復された後における)値と、6番目に位置するカウントデータの値との差分値(第5カウントデータ差分値)が、ステップS407にて決定された修復用カウントデータ差分値列パターンの第5カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第5カウントデータ差分値は修復用カウントデータ差分値列パターンの第5カウントデータ差分値と一致すると判定した場合(ステップS431における「YES」)、修復処理2は、終了する(図14)。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第5カウントデータ差分値は修復用カウントデータ差分値列パターンの第5カウントデータ差分値と一致しないと判定した場合(ステップS431における「NO」)、処理は、ステップS433へ移行する。
ステップS433において、修復処理実行部27cは、被ソートカウントデータ列の5番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の6番目(N番目)に位置するカウントデータを修復する。
次に、図14のステップS209において「YES」と判定された場合について説明する。
ステップS211において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列の第3番目の差分値が、ステップS207およびステップS209において一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第3カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列についての第3カウントデータ差分値はステップS207およびステップS209において一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第3カウントデータ差分値と一致すると判定した場合(ステップS211における「YES」)、処理は、ステップS213へ移行する。
修復処理実行部27cが、被ソートカウントデータ列についての第3カウントデータ差分値はステップS207およびステップS209において一致すると判定されたカウントデータ差分値列パターンにおける第3カウントデータ差分値のいずれとも一致しないと判定した場合(ステップS211における「NO」)、処理は、ステップS5へ移行する。
(カウントデータ修復処理3)
図19は、カウントデータ修復処理3(図14におけるS5)の詳細を示すフローチャートである。これより、図19を参照してカウントデータ修復処理3について説明する。
カウントデータ修復処理3は、第1および第2カウントデータ差分値は正常であるが第3カウントデータ差分値が正常でない場合に実行される修復処理である。第3カウントデータ差分値は、被ソートカウントデータ列における3番目と4番目に位置するカウントデータの値の差分値である。よって、第1および第2カウントデータ差分値は正常であるが第3カウントデー差分値が正常な値を示さないことは、被ソートカウントデータ列における4番目のカウントデータの値が破損している可能性が高いことを意味する。
以下においては、小ループを構成するアドレスの総数Mが、M=3である場合を用いてカウントデータ修復処理3を説明する。
なお、カウントデータ修復処理3は、一般の(M,N)に関しては、被ソートカウントデータ列の第1カウントデータ差分値から第(M−1+p)カウントデータ差分値(p:0<=p<=N−M−1の整数。)までが正常な値を示し、第(M−1+p+1)カウントデータ差分値が正常でないようなカウントデータ異常が検出された場合において、カウントデータの破損を修復するときに使用可能である。
ステップS501において、修復処理実行部27cは、被ソートカウントデータ列の先頭(1番目)、2番目、3番目に位置するカウントデータのアドレスを取得する。
ステップS503において、修復処理実行部27cは、ステップS501において取得した、1番目、2番目、3番目のアドレスが、それぞれ、先頭、2番目、3番目に位置するカウントデータアドレス列パターン(図8参照。)を抽出し、抽出されたパターンを修復用のカウントデータアドレス列パターンの候補とする。
なお、本ステップは、一般の(M,N)に関しては、被ソートカウントデータ列の1番目、2番目、・・・、第(M−1+p)番目に位置するカウントデータのアドレスを取得し、取得したアドレスに基づいて、修復用のカウントデータアドレス列パターンの候補を抽出すればよい。
ステップS505において、修復処理実行部27cは、被ソートカウントデータ列の3番目((M−1+p+1)番目)に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の4番目((M−1+p+2)番目)に位置するカウントデータを修復する。
ステップS507において、修復処理実行部27cは、被ソートカウントデータ列についての(4番目のカウントデータの値が修復された後における)第4カウントデータ差分値が、ステップS503にて抽出された修復用カウントデータ差分値列パターンの候補の第4カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第4カウントデータ差分値は修復用カウントデータ差分値列パターンの候補の第4カウントデータ差分値と一致すると判定した場合(ステップS507における「YES」)、処理は、ステップS511へ移行する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第4カウントデータ差分値は修復用カウントデータ差分値列パターンの候補の第4カウントデータ差分値と一致しないと判定した場合(ステップS507における「NO」)、処理は、ステップS509へ移行する。
ステップS509において、修復処理実行部27cは、被ソートカウントデータ列の4番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の5番目に位置するカウントデータを修復する。
ステップS511において、修復処理実行部27cは、被ソートカウントデータ列についての(5番目のカウントデータの値が修復された後における)第5カウントデータ差分値が、ステップS503にて抽出された修復用カウントデータ差分値列パターンの候補の第5カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第5カウントデータ差分値は修復用カウントデータ差分値列パターンの候補の第5カウントデータ差分値と一致すると判定した場合(ステップS511における「YES」)、修復処理は、終了する(図14参照。)。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第5カウントデータ差分値は修復用カウントデータ差分値列パターンの候補の第5カウントデータ差分値と一致しないと判定した場合(ステップS511における「NO」)、処理は、ステップS513へ移行する。
ステップS513において、修復処理実行部27cは、被ソートカウントデータ列の5番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の6番目に位置するカウントデータを修復する。
次に、図14のステップS211において「YES」と判定された場合について説明する。
ステップS213において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列の第4番目の差分値が、ステップS207、ステップS209、および、ステップS211において一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第4カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列についての第4カウントデータ差分値はステップS207、ステップS209、および、ステップS211において一致すると判定されたカウントデータ差分値列パターンのいずれかにおける第4カウントデータ差分値と一致すると判定した場合(ステップS213における「YES」)、処理は、ステップS7へ移行する。
修復処理実行部27cが、被ソートカウントデータ列についての第4カウントデータ差分値はステップS207、ステップS209、および、ステップS211において一致すると判定されたカウントデータ差分値列パターンにおける第4カウントデータ差分値のいずれとも一致しないと判定した場合(ステップS213における「NO」)、処理は、ステップS6へ移行する。
(カウントデータ修復処理4)
図20は、カウントデータ修復処理4(図14におけるS6)の詳細を示すフローチャートである。これより、図20を参照してカウントデータ修復処理4について説明する。
カウントデータ修復処理4は、第1、第2、および、第3カウントデータ差分値は正常であるが第4カウントデータ差分値が正常でない場合に実行される修復処理である。第4カウントデータ差分値は、被ソートカウントデータ列における4番目と5番目に位置するカウントデータの値の差分値である。よって、第1、第2、および、第3カウントデータ差分値は正常であるが第4カウントデー差分値が正常な値を示さないことは、被ソートカウントデータ列における5番目のカウントデータの値が破損している可能性が高いことを意味する。
以下においては、(M,N)=(3,6)である場合を用いてカウントデータ修復処理4を説明する。
なお、カウントデータ修復処理4は、カウントデータ修復処理3と同様、一般の(M,N)に関しては、被ソートカウントデータ列の第1カウントデータ差分値から第(M−1+p)カウントデータ差分値(p:0<=p<=N−M−1の整数。)までが正常な値を示し、第(M−1+p+1)カウントデータ差分値が正常でないようなカウントデータ異常が検出された場合において、カウントデータの破損を修復するときに使用可能である。
ステップS601において、修復処理実行部27cは、被ソートカウントデータ列の先頭(1番目)、2番目、3番目、4番目に位置するカウントデータのアドレスを取得する。
ステップS603において、修復処理実行部27cは、ステップS601において取得した、1番目、2番目、3番目、4番目のアドレスが、それぞれ、先頭、2番目、3番目、4番目に位置するカウントデータアドレス列パターン(図8参照。)を抽出し、抽出されたパターンを修復用のカウントデータアドレス列パターンの候補とする。
ステップS605において、修復処理実行部27cは、被ソートカウントデータ列の4番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の5番目に位置するカウントデータを修復する。
ステップS607において、修復処理実行部27cは、被ソートカウントデータ列についての(5番目のカウントデータの値が修復された後における)第5カウントデータ差分値が、ステップS503にて抽出された修復用カウントデータ差分値列パターンの候補の第5カウントデータ差分値と一致するか、否か、について判定する。
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第5カウントデータ差分値は修復用カウントデータ差分値列パターンの候補の第5カウントデータ差分値と一致すると判定した場合(ステップS607における「YES」)、修復処理は、終了する(図14参照。)
修復処理実行部27cが、被ソートカウントデータ列の(修復後の)第5カウントデータ差分値は修復用カウントデータ差分値列パターンの候補の第5カウントデータ差分値と一致しないと判定した場合(ステップS607における「NO」)、処理は、ステップS609へ移行する。
ステップS609において、修復処理実行部27cは、被ソートカウントデータ列の5番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の6番目に位置するカウントデータを修復する。
次に、図14のステップS7について説明する。
(カウントデータ修復処理5)
図21は、カウントデータ修復処理5(図14におけるS7)の詳細を示すフローチャートである。これより、図21を参照してカウントデータ修復処理5について説明する。
カウントデータ修復処理5は、第1、第2、第3、および、第4カウントデータ差分値は正常であるが第5カウントデータ差分値が正常でない場合に実行される修復処理である。第5カウントデータ差分値は、被ソートカウントデータ列における5番目と6番目に位置するカウントデータの値の差分値である。よって、第1、第2、第3、および、第4カウントデータ差分値は正常であるが第5カウントデー差分値が正常な値を示さないことは、被ソートカウントデータ列における6番目のカウントデータの値が破損している可能性が高いことを意味する。
以下においては、(M,N)=(3,6)である場合を用いてカウントデータ修復処理4を説明する。
なお、カウントデータ修復処理5は、カウントデータ修復処理3、4と同様、一般の(M,N)に関しては、被ソートカウントデータ列の第1カウントデータ差分値から第(M−1+p)カウントデータ差分値(p:0<=p<=N−M−1の整数。)までが正常な値を示し、第(M−1+p+1)カウントデータ差分値が正常でないようなカウントデータ異常が検出された場合において、カウントデータの破損を修復するときに使用可能である。
ステップS701において、修復処理実行部27cは、被ソートカウントデータ列の先頭(1番目)、2番目、3番目、4番目、5番目に位置するカウントデータのアドレスを取得する。
ステップS703において、修復処理実行部27cは、ステップS701において取得した、1番目、2番目、3番目、4番目、5番目のアドレスが、それぞれ、先頭、2番目、3番目、4番目、5番目に位置するカウントデータアドレス列パターン(図8参照。)を抽出し、抽出されたパターンを修復用のカウントデータアドレス列パターンの候補とする。
ステップS705において、修復処理実行部27cは、被ソートカウントデータ列の5番目に位置するカウントデータの値から3を減算(より一般には、L・Mを減算)して取得した値を用いて、被ソートカウントデータ列の6番目に位置するカウントデータを修復する。
以上のように、本願発明の実施の形態によるカウントデータ記録装置は、N個(N:N>=4の整数。)の記憶領域を所定の順序に従って循環的に用いてカウントデータを記録する。また、本願発明の実施の形態によるカウントデータ記録装置は、カウントデータを記録するN個記憶領域について、上記所定の順序に沿って連続するM個(M:3<=M<Nの整数。)のアドレスからなる小ループを規定し、カウントデータの記録を当該M個のアドレスを順に使用して行う。そして、小ループの最後尾に位置するアドレスを用いてカウントデータの記録を行った後で、小ループの範囲を、上記所定の順序に沿って1アドレスだけ後方にシフトさせ、次のカウントデータの記録には、シフトされた小ループの範囲の先頭に位置するアドレスを使用する。
そうすることによって、カウントデータの値に従ってソートした被ソートカウントデータ列において、アドレスは、所定の有限な個数の整列パターンのうちのいずれか1つに従う。また、被ソートカウントデータ列において互いに隣り合ったカウントデータの値の差分値からなる数列(カウントデータ差分値列)もまた、所定の有限な個数の整列パターンのうちのいずれか1つに従う。
本願発明の実施の形態によるカウントデータ記録装置は、上記被ソートカウントデータ列についてのカウントデータアドレス列およびカウントデータ差分値列ならびに被ソートカウントデータ列において所定の順番に位置する1つ以上のカウントデータの値に基づいて、カウントデータ列に含まれる破損したカウントデータを修復することができる。
(修復処理実行例)
以下、本願発明にかかるカウントデータ修復方法の実行例を示す。
(修復処理実行例1)
図22は、第1の修復処理実行例において用いるカウントデータの例を示す図である。本例においては、(C,L,M,N)=(1,+1,3,6)とする。
ステップS201(図14)において、カウントデータソート部27a(図4)は、カウントデータ(図22)を降順でソートし、被ソートカウントデータ列を導出する。
図23は、ステップS201において導出された被ソートカウントデータ列を示す。
次に、ステップS203(図14)において、カウントデータ差分算出部27bは、被ソートカウントデータ列(図23)において隣接するカウントデータ同士の差分値を求め、カウントデータ差分値列を導出する。
図24は、ステップS203において導出されたカウントデータ差分値列を示す。
次に、ステップS205(図14)において、修復処理実行部27cは、カウントデータ差分値列(図24)が、カウントデータ差分値列パターン[1]〜[3](図11)のいずれかと一致するか、否か、について判定する。
カウントデータ差分値列(図24)は、カウントデータ差分値列パターン[1]〜[3](図11)のいずれとも一致しないため、処理は、ステップS207(図14)へ移行する。
ステップS207において、修復処理実行部27cは、カウントデータ差分値列(図24)の第1差分値が、カウントデータ差分値列パターン[1]〜[3](図11)の第1カウントデータ差分値のいずれかと一致するか、否か、について判定する。
カウントデータ差分値列の第1差分値は、カウントデータ差分値列パターン[1]〜[3]の第1カウントデータ差分値のいずれとも一致しないため、処理は、ステップS3へ移行する。
(カウントデータ修復処理1)
図14のステップS3であるカウントデータ修復処理1には、図15に示した処理のほか、2つの変形例(図16および図17)が存在する。これら3種類のカウントデータ修復処理1について、順に、実行例を示す。
(カウントデータ修復処理1(図15)を用いた修復処理)
ステップS301(図15)において、修復処理実行部27cは、被ソートカウントデータ列(図23)の先頭に位置するカウントデータのアドレスを取得する。ここでは、当該アドレスは、「アドレス[2]」である。
ステップS303(図15)において、修復処理実行部27cは、カウントデータアドレス列パターン[01]〜[12](図8)から、その先頭のカウントデータのアドレスが「アドレス[2]」であるカウントデータアドレス列パターンを抽出する。ここでは、図25に示すように、カウントデータアドレス列パターン[1]および[4]が、カウントデータアドレス列パターンの候補として抽出される。
ステップS305(図15)において、修復処理実行部27cは、カウントデータアドレス列パターン[1]および[4]それぞれについて、対応するカウントデータ差分値列パターンの候補(図12参照。)を抽出する。ここでは、図26に示すように、カウントデータアドレス列パターン[1]に対応するカウントデータ差分値列パターンは、パターン[1]およびパターン[3]であり、他方、カウントデータアドレス列パターン[4]に対応するカウントデータ差分値列パターンは、パターン[2]である。
ステップS307(図15)において、修復処理実行部27cは、カウントデータ差分値列パターン[1]に対応するカウントデータアドレス列パターン[1](図26)を、修復用のカウントデータアドレス列パターンに決定する。
ステップS309(図15)において、修復処理実行部27cは、カウントデータアドレス列パターン[1]およびカウントデータ差分値列パターン[1]に基づいて、被ソートアドレス列(図23)の先頭に位置するカウントデータ以外のカウントデータを修復する。図27は、修復前後におけるカウントデータの値を示す。
(カウントデータ修復処理1変形例1(図16)を用いた修復処理)
ステップS311(図16)において、修復処理実行部27cは、カウントデータが破損していることを示す通知(カウントデータ異常)を、例えば、制御部23(図4)出力する。
(カウントデータ修復処理1変形例2(図17)を用いた修復処理)
ステップS313およびステップS315(図17)において、修復処理実行部27cは、被ソートカウントデータ列についてのカウントデータ差分値列(図28)の第2、第3、第4カウントデータ差分値が、カウントデータ差分値列パターン[1]の第2、第3、第4カウントデータ差分値(図29)と一致すると判定し、処理は、ステップS317へ移行する。
ステップS317(図17)において、修復処理実行部27cは、カウントデータ差分値列パターン[1](図29)に従って、被ソートカウントデータ列の2番目に位置するカウントデータの値に1を加算して取得した値を用いて、被ソートカウントデータ列の先頭に位置するカウントデータの値を修復する。図30は、当該先頭に位置するカウントデータの修復前後におけるカウントデータの値を示す。
次に、ステップS321(図17)において、修復処理実行部27cは、被ソートカウントデータ列についての第5カウントデータ差分値(図28)と、カウントデータ差分値列パターン[1]の第5カウントデータ差分値(図29)とは一致しないと判定し、処理は、ステップS323へ移行する。
ステップS323(図17)において、修復処理実行部27cは、カウントデータ差分値列パターン[1](図29)に従って、被ソートカウントデータ列の5番目に位置するカウントデータの値から3を減算して取得した値を用いて、被ソートカウントデータ列の6番目に位置するカウントデータの値を修復する。図31は、当該6番目に位置するカウントデータの修復前後におけるカウントデータの値を示す。
(修復処理実行例2)
以下、本願発明にかかるカウントデータ修復方法の別の実行例を示す。
図32は、第2の修復処理実行例において用いるカウントデータの例を示す図である。本例においては、(C,L,M,N)=(1,+1,3,6)とする。
ステップS201(図14)において、カウントデータソート部27a(図4)は、カウントデータ(図32)を降順でソートし、被ソートカウントデータ列を導出する。
図33は、ステップS201において導出された被ソートカウントデータ列を示す。
次に、ステップS203(図14)において、カウントデータ差分算出部27bは、被ソートカウントデータ列(図33)において隣接するカウントデータ同士の差分値を求め、カウントデータ差分値列を導出する。
図34は、ステップS203において導出されたカウントデータ差分値列を示す。
次に、ステップS205(図14)において、修復処理実行部27cは、カウントデータ差分値列(図34)が、カウントデータ差分値列パターン[1]〜[3](図11)のいずれかと一致するか、否か、について判定する。
カウントデータ差分値列(図34)は、カウントデータ差分値列パターン[1]〜[3](図11)のいずれとも一致しないため、処理は、ステップS207(図14)へ移行する。
ステップS207において、修復処理実行部27cは、カウントデータ差分値列(図34)の第1差分値が、カウントデータ差分値列パターン[1]〜[3](図11)の第1カウントデータ差分値のいずれかと一致するか、否か、について判定する。
カウントデータ差分値列の第1差分値は、カウントデータ差分値列パターン[1]〜[3]の第1カウントデータ差分値と一致する。よって、処理は、ステップS209へ移行する。
ステップS209において、修復処理実行部27cは、カウントデータ差分値列(図34)の第2差分値が、カウントデータ差分値列パターン[1]〜[3](図11)の第2カウントデータ差分値のいずれかと一致するか、否か、について判定する。
カウントデータ差分値列の第2カウントデータ差分値(図34)は、カウントデータ差分値列パターン[1]〜[3]の第2カウントデータ差分値(図11)のいずれとも一致しないため、処理は、ステップS4へ移行する。
(カウントデータ修復処理2)
ステップS4(図14)において、修復処理実行部27cは、カウントデータ修復処理2(図18Aおよび図18B)を実行する。
ステップS401(図18A)において、修復処理実行部27cは、被ソートカウントデータ列(図33)の先頭および2番目に位置するカウントデータのアドレスを取得する。ここでは、当該アドレスは、「アドレス[1]、アドレス[6]」である。
ステップS403(図18A)において、修復処理実行部27cは、カウントデータアドレス列パターン[01]〜[12](図8)から、その先頭および2番目のカウントデータのアドレスが「アドレス[1]、アドレス[6]」であるカウントデータアドレス列パターンを抽出する。ここでは、図35に示すように、カウントデータアドレス列パターン[11]が、カウントデータアドレス列パターンの候補として抽出される。
ステップS405(図18A)において、修復処理実行部27cは、カウントデータアドレス列パターン[11]について、対応するカウントデータ差分値列パターンの候補(図12参照。)を抽出する。ここでは、図36に示すように、カウントデータアドレス列パターン[11]に対応するカウントデータ差分値列パターンは、パターン[1]およびパターン[3]である。
ステップS407(図18A)において、修復処理実行部27cは、被ソートカウントデータ列(図33)の先頭に位置するカウントデータの値「53」を、小ループ構成アドレス総数M「3」で除算した場合に生じる剰余を求める。ここで、当該剰余は、「2」である。修復処理実行部27cは、剰余「2」に基づいて、修復用カウントデータ差分値列パターンを、ステップS405において抽出されたカウントデータ差分値列パターン[1]および[3]のなかから、決定する。
本例のように、(C,L,M,N)=(1,+1,3,6)の場合には、被ソートカウントデータ列の先頭に位置するカウントデータの値をMで除算したときに生じる剰余「0」、「1」、「2」は、それぞれ、カウントデータ差分値列パターン[1]、[2]、[3]と対応する(図9、図10、を参照。)。
修復処理実行部27cは、修復用カウントデータ差分値列パターンを、カウントデータ差分値列パターン[3]に決定する。
ステップS407において修復用カウントデータ差分値列パターンは、ただ1つのパターンに決定することができた。よって、ステップS409においては、「YES」と判定され、処理は、ステップS411へ移行する。
修復用カウントデータ差分値列パターンは、パターン[3]であるから、処理は、ステップS411およびステップS413を経て、ステップS421へ移行する。
ステップS421において、修復処理実行部27cは、被ソートカウントデータ列の2番目に位置するカウントデータの値およびカウントデータ差分値列パターン[3]に従い、被ソートカウントデータ列の3番目に位置するカウントデータを修復する。
修復処理実行部27cは、アドレス[6]のカウントデータの値「52」(図33)から「3」を減算して値「49」を取得し、当該値「49」を用いてアドレス[5]のカウントデータの値を修復する。
図37は、ステップS421における修復処理の前後におけるカウントデータの値を示す。
ステップS423において、修復処理実行部27cは、修復後の被ソートカウントデータ列についての第3カウントデータ差分値(=49−46=3(図37))が、カウントデータ差分値列パターン[3]の第3カウントデータ差分値と一致する、と判定する。
処理は、ステップS427へ移行する。
ステップS427において、修復処理実行部27cは、修復後の被ソートカウントデータ列についての第4カウントデータ差分値(=46−43=3(図37))が、カウントデータ差分値列パターン[3]の第4カウントデータ差分値と一致する、と判定する。
処理は、ステップS431へ移行する。
ステップS431において、修復処理実行部27cは、修復後の被ソートカウントデータ列についての第5カウントデータ差分値(=43−40=3(図37))が、カウントデータ差分値列パターン[3]の第5カウントデータ差分値と一致する、と判定する。
よって、被ソートカウントデータ列の4番目、5番目、6番目に位置するカウントデータの値は正常であると判断され、修復処理は行われない。よって、修復処理の最終的な結果は、図37に示した修復後カウントデータのとおりである。
本発明にかかるカウントデータ記録装置は、書き込み繰り返し回数に制限がある記憶装置を用いてカウントデータを記録する場合に特に有用である。
本発明の実施の形態によるカウントデータ記録装置(MFP1)の斜視図 感光体ユニット5の斜視図 MFP1のハードウェア構成を示すブロック図 MFP1の機能的構成を示すブロック図 本発明の実施の形態におけるカウントデータ記憶領域の構成およびカウントデータの書き込み順序を示す模式図 大ループを構成する記憶領域の総数Nが6、小ループを構成する記憶領域の総数Mが3、カウントインクリメント幅Lが1、カウント開始値Cが1である場合のカウントデータ書き込みの具体例を示す図 正常なカウントデータについて、その値を降順でソートしたときの被ソートカウントデータ列とカウントデータアドレス列パターンの対応を示す図 被ソートカウントデータ列とカウントデータアドレス列パターンの対応を示す図 被ソートカウントデータ列とカウントデータ差分値列パターンの対応を示す図 (N,M,L,C)=(6,3,1,1)の場合における、カウント数0から26までのカウントデータ差分値を示す図 (N,M,L)=(6,3,1)の場合における、カウントデータ差分値列パターンの詳細を示す図 (N,M,L)=(6,3,1)の場合における、カウントデータアドレス列パターンとカウントデータ差分値列パターンとの対応を示す図 カウントデータ書き込み処理のフローチャート カウントデータ修復処理のフローチャート カウントデータ修復処理1の詳細を示すフローチャート カウントデータ修復処理1の第1の変形例の詳細を示すフローチャート カウントデータ修復処理1の第2の変形例の詳細を示すフローチャート カウントデータ修復処理2の詳細を示すフローチャート カウントデータ修復処理2の詳細を示すフローチャート カウントデータ修復処理3の詳細を示すフローチャート カウントデータ修復処理4の詳細を示すフローチャート カウントデータ修復処理5の詳細を示すフローチャート カウントデータ修復処理の第1実行例に用いるカウントデータを示す図 被ソートカウントデータ列の詳細を示す図 被ソートカウントデータ列のカウントデータ差分値列を示す図 先頭がアドレス[2]である、カウントデータアドレス列パターンを示す図 抽出したカウントデータアドレス列パターン候補それぞれに対応するカウントデータ差分値列パターンを示す図 修復前後におけるカウントデータの値を示す図 被ソートカウントデータ列のカウントデータ差分値列を示す図 カウントデータ差分値列パターンを示す図 被ソートカウントデータ列の先頭のカウントデータを修復した状態における被ソートカウントデータ列を示す図 被ソートカウントデータ列の6番目のカウントデータを修復した状態における被ソートカウントデータ列を示す図 カウントデータ修復処理の第2実行例に用いるカウントデータを示す図 被ソートカウントデータ列の詳細を示す図 被ソートカウントデータ列のカウントデータ差分値列を示す図 先頭がアドレス[1]、2番目がアドレス[6]である、カウントデータアドレス列パターンを示す図 抽出したカウントデータアドレス列パターン候補に対応するカウントデータ差分値列パターンを示す図 被ソートカウントデータ列の3番目のカウントデータを修復した状態における被ソートカウントデータ列を示す図
符号の説明
1・・・ カウントデータ記録装置(デジタル複合機)
3・・・ トナーカートリッジ
5・・・ 感光体ユニット
7・・・ 記憶装置
11・・・ 中央処理装置
13・・・ ランダム・アクセス・メモリ
15・・・ リード・オンリ・メモリ
17・・・ I/O LSI
19o・・ 出力デバイス
19i・・ 入力デバイス
21・・・ コンピュータ
23・・・ 制御部
25・・・ データ書込部
25a・・ 書込アドレス決定部
25b・・ カウントデータ書込部
27・・・ データ修復部
27a・・ カウントデータソート部
27b・・ カウントデータ差分算出部
27c・・ 修復処理実行部
29・・・ データ読出部
31・・・ 設定データ保持部
41・・・ 第(M−1)カウントデータ差分値
43・・・ 第Mカウントデータ差分値から第(N−1)カウントデータ差分値

Claims (6)

  1. 所定値から所定幅で単調に変化するカウント値をカウントデータとして記憶領域に記録するカウントデータ記録装置であって、
    前記カウントデータを記憶する記憶領域をN個(Nは、4以上の整数)備える記憶部と、
    前記カウントデータを前記記憶部に書き込むデータ書込部と、
    前記カウントデータを前記記憶部から読み出すデータ読出部と、
    前記記憶部に記憶されたカウントデータの破損を検出し、該破損を修復するデータ修復部とを有し、
    前記データ書込部は、
    前記N個の記憶領域のなかから、カウントデータの記録に使用する記憶領域の順序を規定する所定の順序に従って、M個(Mは、3以上前記N未満の整数)の記憶領域を選択して小ループ範囲に定め、
    該小ループの範囲に含まれる前記記憶領域を前記所定の順序に沿って使用してカウントデータを記録し、
    該小ループ範囲の最後尾の記憶領域を使用してカウントデータを記録すると、該小ループ範囲を、前記所定の順序に沿って後方へずらして小ループ範囲を変更する、
    ようにして、カウントデータを前記記憶部に記録し、
    前記データ修復部は、
    前記N個の記憶領域に記憶されたカウントデータを、カウントデータの値が単調に変化するようにソートして被ソートカウントデータ列を導出し、
    前記被ソートカウントデータ列において互いに隣り合ったカウントデータ同士の差分値を求めてカウントデータ差分値列を導出し、
    当該被ソートカウントデータ列およびカウントデータ差分値列に基づいて、前記N個の記憶領域に記憶されたカウントデータの破損を検出して該破損を修復する、カウントデータ記録装置。
  2. 前記データ修復部は、前記カウントデータ差分値列において1番目に位置する第1カウントデータ差分値からj番目(jは、1から(N−1)までの整数)に位置する第jカウントデータ差分値までのj個の差分値に基づいて、前記被ソートカウントデータ列における第j番目および第j+1番目に位置するカウントデータの少なくともいずれかの破損の有無を検出する、請求項1に記載のカウントデータ記録装置。
  3. 前記データ修復部が前記被ソートカウントデータ列における第M番目に位置するカウントデータの破損を検出した場合には、
    前記データ修復部は、前記被ソートカウントデータ列における第1番目に位置するカウントデータの値を前記所定幅で除算し、当該除算にて得た商を前記Mで除算したときに生じる剰余に基づいて、前記被ソートカウントデータ列における第M番目に位置するカウントデータを修復する、請求項2に記載のカウントデータ記録装置。
  4. 前記データ修復部が前記被ソートカウントデータ列における第(M+k)番目(kは、1からN−Mの整数)に位置するカウントデータの破損を検出した場合には、
    前記データ修復部は、前記被ソートカウントデータ列における第(M+k−1)番目に位置するカウントデータの値に対して前記Mと前記所定幅の積を加算して得た値を用いて、前記第(M+k)番目に位置するカウントデータの破損を修復する、請求項2に記載のカウントデータ記録装置。
  5. カウントデータ記録装置が、所定値から所定幅で単調に変化するカウント値をカウントデータとして記憶領域に記録するカウントデータ記録方法であって、
    データ書込部が、前記カウントデータを記憶する記憶領域をN個(Nは、4以上の整数)備える記憶部の記憶領域のなかから、カウントデータの記録に使用する記憶領域の順序を規定する所定の順序に従って、M個(Mは、3以上前記N未満の整数)の記憶領域を選択して小ループ範囲に定めるステップと、
    前記データ書込部が、該小ループの範囲に含まれる前記記憶領域を前記所定の順序に沿って使用してカウントデータを記録するステップと、
    前記データ書込部が、該小ループ範囲の最後尾の記憶領域を使用してカウントデータを記録すると、該小ループ範囲を、前記所定の順序に沿って後方へずらして小ループ範囲を変更するステップと、
    データ修復部が、前記N個の記憶領域に記憶されたカウントデータを、カウントデータの値が単調に変化するようにソートして被ソートカウントデータ列を導出するステップと、
    前記データ修復部が、前記被ソートカウントデータ列において互いに隣り合ったカウントデータ同士の差分値を求めてカウントデータ差分値列を導出するステップと、
    前記データ修復部が、当該被ソートカウントデータ列およびカウントデータ差分値列に基づいて、前記N個の記憶領域に記憶されたカウントデータの破損を検出して該破損を修復するステップと、を有するカウントデータ記録方法。
  6. 所定値から所定幅で単調に変化するカウント値をカウントデータとして記憶領域に記録するカウントデータ記録装置のコンピュータが実行可能なカウントデータ記録プログラムであって、
    データ書込部に、前記カウントデータを記憶する記憶領域をN個(Nは、4以上の整数)備える記憶部の記憶領域のなかから、カウントデータの記録に使用する記憶領域の順序を規定する所定の順序に従って、M個(Mは、3以上前記N未満の整数)の記憶領域を選択して小ループ範囲に定めさせるステップと、
    前記データ書込部に、該小ループの範囲に含まれる前記記憶領域を前記所定の順序に沿って使用してカウントデータを記録させるステップと、
    前記データ書込部に、該小ループ範囲の最後尾の記憶領域を使用してカウントデータを記録すると、該小ループ範囲を、前記所定の順序に沿って後方へずらして小ループ範囲を変更させるステップと、
    データ修復部に、前記N個の記憶領域に記憶されたカウントデータを、カウントデータの値が単調に変化するようにソートして被ソートカウントデータ列を導出させるステップと、
    前記データ修復部に、前記被ソートカウントデータ列において互いに隣り合ったカウントデータ同士の差分値を求めてカウントデータ差分値列を導出させるステップと、
    前記データ修復部に、当該被ソートカウントデータ列およびカウントデータ差分値列に基づいて、前記N個の記憶領域に記憶されたカウントデータの破損を検出して該破損を修復させるステップと、を有するカウントデータ記録プログラム。
JP2008319326A 2008-12-16 2008-12-16 カウントデータ記録装置ならびにカウントデータ記録方法およびプログラム Expired - Fee Related JP4572981B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008319326A JP4572981B2 (ja) 2008-12-16 2008-12-16 カウントデータ記録装置ならびにカウントデータ記録方法およびプログラム
US12/638,678 US8176369B2 (en) 2008-12-16 2009-12-15 Count data recording device, and method and program for recording count data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008319326A JP4572981B2 (ja) 2008-12-16 2008-12-16 カウントデータ記録装置ならびにカウントデータ記録方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2010146053A true JP2010146053A (ja) 2010-07-01
JP4572981B2 JP4572981B2 (ja) 2010-11-04

Family

ID=42242024

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008319326A Expired - Fee Related JP4572981B2 (ja) 2008-12-16 2008-12-16 カウントデータ記録装置ならびにカウントデータ記録方法およびプログラム

Country Status (2)

Country Link
US (1) US8176369B2 (ja)
JP (1) JP4572981B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10991409B2 (en) * 2019-07-19 2021-04-27 SK Hynix Inc. Encoder for memory system and method thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0577718U (ja) * 1992-03-26 1993-10-22 日本電装株式会社 電子式オドメータ
JPH09179789A (ja) * 1995-12-22 1997-07-11 Nippon Seiki Co Ltd 電子式データ記憶装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778232A (ja) * 1993-09-08 1995-03-20 Minolta Co Ltd カウンタ
JPH0784881A (ja) * 1993-09-13 1995-03-31 Mitsubishi Electric Corp キャッシュメモリ
JP3758867B2 (ja) 1998-12-03 2006-03-22 セイコーエプソン株式会社 画像形成装置用寿命管理装置
KR100619021B1 (ko) * 2004-05-24 2006-08-31 삼성전자주식회사 오디오 에러 복원 방법 및 장치 및 그를 적용한 디지털오디오 신호 처리 시스템
JP4594688B2 (ja) * 2004-06-29 2010-12-08 オリンパス株式会社 画像符号化処理方法、画像復号化処理方法、動画圧縮処理方法、動画伸張処理方法、画像符号化処理プログラム、画像符号化装置、画像復号化装置、画像符号化/復号化システム、拡張画像圧縮伸張処理システム
JP4264110B2 (ja) * 2007-01-23 2009-05-13 株式会社東芝 模擬実行装置、方法およびプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0577718U (ja) * 1992-03-26 1993-10-22 日本電装株式会社 電子式オドメータ
JPH09179789A (ja) * 1995-12-22 1997-07-11 Nippon Seiki Co Ltd 電子式データ記憶装置

Also Published As

Publication number Publication date
JP4572981B2 (ja) 2010-11-04
US8176369B2 (en) 2012-05-08
US20100153772A1 (en) 2010-06-17

Similar Documents

Publication Publication Date Title
JP5697796B2 (ja) 電気的に書き換え可能な不揮発性半導体メモリを有する半導体記憶装置
JP5629391B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP4357304B2 (ja) 外部記憶装置
JP6139807B2 (ja) ストレージ装置、ストレージ装置の制御方法、及びプログラムを記憶するコンピュータ読み取り可能な不揮発性記憶媒体
EP1936632A1 (en) Method and apparatus for detecting static data area, wear-leveling, and merging data units in nonvolatile data storage device
US20090089489A1 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
CN109582216A (zh) 数据储存装置与存储器装置的数据处理方法
CN113380309A (zh) 寻找最佳读取电压的方法、闪存系统
JP4952740B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4572981B2 (ja) カウントデータ記録装置ならびにカウントデータ記録方法およびプログラム
KR20190063448A (ko) 신규 메모리 디바이스
JP4821845B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4836608B2 (ja) 半導体記憶装置
JP2009110314A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4821844B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9021184B2 (en) Flash memory device
CN108962322B (zh) 使用非易失性存储器来实施非易失性计数器的方法和系统
JP4743185B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4501881B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP5200688B2 (ja) カウントデータ記録装置、および、カウントデータ記録方法
JP5060088B2 (ja) フラッシュメモリ制御システムとその制御方法
JP5989156B2 (ja) フラッシュメモリモジュール

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100720

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100802

R150 Certificate of patent or registration of utility model

Ref document number: 4572981

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees