(57)【特許請求の範囲】
【請求項１】
メモリに供給されるアドレス信号のビット毎に対応し、前記メモリに対してデータの書き込みが行われる毎に、
（Ａ）対応するビットの値が“１”であればカウント値を増加させ、対応するビットの値が“０”であればカウント値を減少させる、または、
（Ｂ）対応するビットの値が“０”であればカウント値を増加させ、対応するビットの値が“１”であればカウント値を減少させる、
複数のカウンタと、
前記メモリのメモリ領域の割り当てを行う際に、前記複数のカウンタのカウント値を参照して割り当てるメモリ領域を決定する制御部と、
を有することを特徴とするメモリ制御システム。
【請求項２】
前記制御部は、
（Ａ）前記カウンタの対応するビットの値が“１”に対応する第１の領域と、該カウンタの対応するビットの値が“０”に対応する第２の領域とに分割し、または、
（Ｂ）前記カウンタの対応するビットの値が“０”に対応する第１の領域と、該カウンタの対応するビットの値が“１”に対応する第２の領域とに分割し、
割り当てるメモリ領域を選択する処理を行う順序を該カウンタのカウント値に応じて決定する、ことを特徴とする請求項１記載のメモリ制御システム。
【請求項３】
前記制御部は、前記カウンタのカウント値が正であれば該カウンタに対応するビットにおける前記第１の領域及び前記第２の領域の内の前記第２の領域に対して先にメモリ領域を選択する処理を行い、前記カウンタのカウント値が負であれば該カウンタに対応するビットにおける前記第１の領域及び前記第２の領域の内の前記第１の領域に対して先にメモリ領域を選択する処理を行う、ことを特徴とする請求項２記載のメモリ制御システム。
【請求項４】
プロセッサが、
メモリに供給されるアドレス信号のビット毎に対応して設けた複数のカウンタのカウント値を、前記メモリに対してデータの書き込みが行われる毎に、
（Ａ）対応するビットの値が“１”であればカウント値を増加させ、対応するビットの値が“０”であればカウント値を減少させ、または、
（Ｂ）対応するビットの値が“０”であればカウント値を増加させ、対応するビットの値が“１”であればカウント値を減少させ、
前記メモリのメモリ領域の割り当てを行う際に、前記複数のカウンタのカウント値を参照して割り当てるメモリ領域を決定する、ことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御システム及びメモリ制御方法に関する。
【背景技術】
【０００２】
ＰＣＭ（Phase Change Memory）やＲｅＲＡＭ（Resistive Random Access Memory）等のメモリは、書き込み回数の増加に伴ってデータ保持性能等のメモリ特性が劣化するため、一部の領域に書き込みが集中すると、メモリ特性の劣化が小さい領域を残したままメモリ全体として寿命を尽きてしまう。この対策として、論理アドレスとセル（物理アドレス）との対応関係を適宜変化させてメモリの一部のセル（物理アドレス）に集中しないように分散させる方法（第１の方法）やアプリケーションにメモリを割り当てる際にアドレス領域の割り当て頻度が集中しないように選択する方法（第２の方法）がある。
【０００３】
また、メモリに対する書き込み回数を計数し、書き込み回数が所定値以上になったとき、アドレスを別アドレスにシフトさせるように制御する技術が提案されている（例えば特許文献１参照）。また、データ更新の度にメモリ上のデータ書き込み領域を更新する書き込み方式において、各書き込み領域に最新データであることを示すポインタビットを設けることで、最新データのアドレス情報を毎回同じ領域を上書きすることなしに記録し、疑似的に書き込み制限回数を増加させる技術が提案されている（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】実開昭６３−４７５００号公報
【特許文献２】特開平４−２１９９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前記第１の方法では、論理アドレスと物理アドレスとの対応関係を変化させる際、論理アドレスに対応するデータが同じになるように変化後の物理アドレスで指定される領域（メモリセル）にデータをコピーする。しかし、データをコピーするための書き込みが発生するとともに多くの時間を要し、メモリ特性やアクセス性能を低下させてしまう。また、前記第２の方法では、メモリに対する書き込み頻度はアプリケーションによって異なるため、アプリケーションに対するメモリの領域割り当てを平準化しても、実際の書き込み回数については十分に平準化されないことがある。１つの側面では、本発明の目的は、メモリに対する実際の書き込み頻度に応じてメモリ全体で書き込み回数を平準化することができるメモリ制御システムを提供することにある。
【課題を解決するための手段】
【０００６】
メモリ制御システムの一態様は、メモリに供給されるアドレス信号のビット毎に対応する複数のカウンタと、割り当てるメモリ領域を決定する制御部とを有する。メモリに対してデータの書き込みが行われる毎に、各カウンタは、（Ａ）対応するビットの値が“１”であればカウント値を増加させ、対応するビットの値が“０”であればカウント値を減少させる、または、（Ｂ）対応するビットの値が“０”であればカウント値を増加させ、対応するビットの値が“１”であればカウント値を減少させ、制御部は、メモリのメモリ領域の割り当てを行う際に、複数のカウンタのカウント値を参照して割り当てるメモリ領域を決定する。
【発明の効果】
【０００７】
発明の一態様においては、書き込み回数が少ない領域から選択してメモリ領域を割り当てることができ、メモリ全体での書き込み回数を平準化することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態におけるメモリ制御システムの構成例を示す図である。
【図２Ａ】本実施形態におけるメモリ領域の割り当て処理の一例を示すフローチャートである。
【図２Ｂ】本実施形態におけるメモリ領域の割り当て処理の一例を示すフローチャートである。
【図３】本実施形態におけるメモリ領域の割り当て処理を説明する図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態を図面に基づいて説明する。
【００１０】
図１は、本発明の一実施形態におけるメモリ制御システムの構成例を示すブロック図である。図１（Ａ）に示すように本実施形態におけるメモリ制御システムは、制御部としてのＣＰＵ（Central Processing Unit）１０、メモリ２０、及びカウンタ群３０を有する。
【００１１】
ＣＰＵ１０は、供給されるアプリケーションプログラム等の処理プログラムに従って各種処理を実行する。ＣＰＵ１０は、例えばメモリ制御信号ＣＴＬ及びアドレス信号ＡＤを出力するとともにデータ信号ＤＴを入出力することによりメモリアクセスを実行し、メモリ２０に対するデータの書き込みや読み出しを行う。また、ＣＰＵ１０は、例えばアプリケーションが使用するメモリ領域の割り当て処理を行う。メモリ領域の割り当て処理では、ＣＰＵ１０は、カウンタ群３０からのカウント値ＣＮＴに基づいて、メモリ２０全体で書き込み回数の偏りが低減され平準化されるように、アプリケーションに割り当てるメモリ領域を決定する。
【００１２】
メモリ２０は、ＣＰＵ１０での各種処理の実行に係るデータ等を記憶する。メモリ２０は、ＣＰＵ１０からのメモリ制御信号ＣＴＬに応じて、アドレス信号ＡＤにより指定される領域にデータ信号ＤＴに応じたデータを書き込んだり、アドレス信号ＡＤにより指定される領域から読み出したデータをデータ信号ＤＴによりＣＰＵ１０に供給したりする。
【００１３】
カウンタ群３０は、ＣＰＵ１０から出力されるメモリ制御信号ＣＴＬの書き込み制御信号ＷＣＴＬ及びアドレス信号ＡＤが供給され、メモリ２０に対してデータの書き込みが行われる毎にアドレス信号ＡＤに応じた計数動作を行う。カウンタ群３０は、図１（Ｂ）に示すように、ＣＰＵ１０から出力されるアドレス信号ＡＤの各ビットに対応した複数のカウンタ３２を有する。
【００１４】
カウンタ＜ｐ＞３２−ｐは、メモリ２０に対してデータの書き込みが行われる度に、アドレス信号ＡＤのｐビット目ＡＤ＜ｐ＞について計数を行う。また、カウンタ＜ｐ＞３２−ｐは、カウント値ＣＮＴ＜ｐ＞を出力する。なお、ｐは添え字であり、図１（Ｂ）に示す例では、ｐ＝１〜Ｎの自然数である。本実施形態では、カウンタ＜ｐ＞３２−ｐは、メモリ２０に対するデータ書き込みの発生時に、書き込みアドレスのｐビット目ＡＤ＜ｐ＞の値が“１”であればカウント値をアップカウント（１インクリメント）し、“０”であればダウンカウント（１デクリメント）するものとする。
【００１５】
各カウンタ３２のビット数（計数可能なカウント値の最小値及び最大値）は任意であり、例えばカウント値がアンダーフローあるいはオーバフローした場合にはそのカウント値を２で除して計数動作を継続するようにしてもよい。また、各カウンタ３２は、電源の供給が遮断された場合にカウント値ＣＮＴを保持するために不揮発性メモリ等を用いて構成されることが好ましい。なお、不揮発性のカウント値用メモリ３１を別に設けて電源の供給が遮断される前に各カウンタ３２のカウント値ＣＮＴをカウント値用メモリ３１に退避させ、電源を投入した後にカウント値用メモリ３１から各カウンタ３２にカウント値ＣＮＴを復元するようにしてもよい。
【００１６】
ここで、前述した本実施形態におけるメモリ制御システムが有する各構成要素の実装形態は任意であり、カウンタ群３０が、単独で１つのチップ上に搭載されていても良いし、ＣＰＵ１０又はメモリ２０と同じチップ上に搭載されていても良い。また、ＣＰＵ１０、メモリ２０、及びカウンタ群３０が１つのチップ上に搭載されていても良い。
【００１７】
次に、本実施形態におけるメモリ制御システムでのメモリ領域の割り当て処理について説明する。図２Ａ及び図２Ｂは、本実施形態におけるメモリ領域の割り当て処理の一例を示すフローチャートである。図２Ａ及び図２Ｂに示すメモリ領域の割り当て処理は、ＣＰＵ１０が、カウンタ群３０からのカウント値ＣＮＴを参照して処理を実行する。以下では、アプリケーションが使用するメモリ２０のメモリ領域として、アドレス値０〜（２N−１）のメモリ領域からサイズＭのメモリ領域を選んで割り当てる場合を例に説明する。
【００１８】
図２Ａに示すように、ＣＰＵ１０は、アプリケーションが使用するメモリ領域としてサイズＭのメモリ領域を選ぶ際、ステップＳ１１にて、アドレス値０〜（２N−１）のメモリ領域からサイズＭのメモリ領域を割り当てるメモリ領域の割り当て処理を実行する。
【００１９】
ここで、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域からサイズＭのメモリ領域を割り当てるメモリ領域の割り当て処理について、図２Ｂを参照して説明する。ｉ、ｋ、及びＭは、メモリ領域の割り当て処理の呼び出しにおいて指定される変数（引数）である。
【００２０】
まず、ステップＳ１０１にて、ＣＰＵ１０は、割り当てるメモリ領域のサイズＭが（２k−１）より大きいか否かを判断する。すなわち、ＣＰＵ１０は、割り当てるメモリ領域のサイズＭが、このメモリ領域の割り当て処理において検索するメモリ領域の半分より大きいか否かを判断する。
【００２１】
割り当てるメモリ領域のサイズＭが（２k−１）より大きいと判断した場合（ステップＳ１０１のＹＥＳ）、ステップＳ１０２にて、ＣＰＵ１０は、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域からサイズＭの未使用領域を探す。その結果、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域においてサイズＭの未使用領域があった場合（ステップＳ１０３のＹＥＳ）、ステップＳ１０４にて、ＣＰＵ１０は、見つかった未使用領域をアプリケーションが使用するメモリ領域として割り当て、処理成功として戻る。一方、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域においてサイズＭの未使用領域がなかった場合（ステップＳ１０３のＮＯ）、ＣＰＵ１０は、処理失敗として戻る。
【００２２】
ステップＳ１０１での判断の結果、割り当てるメモリ領域のサイズＭが（２k−１）より大きくないと判断した場合（ステップＳ１０１のＮＯ）、ステップＳ１０５にて、ＣＰＵ１０は、カウンタ群３０のｋ番目のカウンタ３２−ｋのカウント値ＣＮＴ＜ｋ＞が正であるか否かを判断する。すなわち、ＣＰＵ１０は、割り当てるメモリ領域のサイズＭが、このメモリ領域の割り当て処理において検索するメモリ領域の半分より大きくない場合、検索するメモリ領域をさらに半分の領域に制限するためにカウント値ＣＮＴ＜ｋ＞が正であるか否かの判断を行う。
【００２３】
ステップＳ１０５での判断の結果、ｋ番目のカウンタ３２−ｋのカウント値ＣＮＴ＜ｋ＞が正であると判断した場合（ＹＥＳ）、ステップＳ１０６へ進む。言い換えれば、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域を２分割したときのアドレス高位側（ｋビット目のアドレスの値“１”）である後半部に対する書き込み回数が、アドレス低位側（ｋビット目のアドレスの値“０”）である前半部に対する書き込み回数より多い場合、ステップＳ１０６へ進む。
【００２４】
ステップＳ１０６にて、ＣＰＵ１０は、アドレス値ｉ〜（ｉ＋２k-1−１）のメモリ領域からサイズＭのメモリ領域を割り当てるメモリ領域の割り当て処理を再帰呼出して実行する。すなわち、ＣＰＵ１０は、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域を２分割した場合に書き込み回数が少ない前半部のメモリ領域において、アプリケーションに割り当てるサイズＭのメモリ領域を決定する処理を行う。ステップＳ１０６でのメモリ領域の割り当て処理の結果、処理成功である場合（ステップＳ１０７のＹＥＳ）、すなわち割り当てるサイズＭのメモリ領域が決定した場合、ＣＰＵ１０は、処理成功として戻る。
【００２５】
一方、ステップＳ１０６でのメモリ領域の割り当て処理の結果、処理成功でない（処理失敗である）場合（ステップＳ１０７のＮＯ）、ステップＳ１０８にて、ＣＰＵ１０は、アドレス値（ｉ＋２k-1）〜（ｉ＋２k−１）のメモリ領域からサイズＭのメモリ領域を割り当てるメモリ領域の割り当て処理を再帰呼出して実行する。すなわち、ＣＰＵ１０は、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域を２分割した場合の残りの後半部のメモリ領域において、アプリケーションに割り当てるサイズＭのメモリ領域を決定する処理を行う。
【００２６】
ステップＳ１０８でのメモリ領域の割り当て処理の結果、処理成功である場合（ステップＳ１０９のＹＥＳ）、すなわち割り当てるサイズＭのメモリ領域が決定した場合、ＣＰＵ１０は、処理成功として戻る。一方、ステップＳ１０８でのメモリ領域の割り当て処理の結果、処理成功でない（処理失敗である）場合（ステップＳ１０９のＮＯ）、ステップＳ１０２へ進む。そして、ＣＰＵ１０は、前述したステップＳ１０２以降の処理を行い、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域からサイズＭの未使用領域を探す。
【００２７】
ステップＳ１０５での判断の結果、ｋ番目のカウンタ３２−ｋのカウント値ＣＮＴ＜ｋ＞が正ではないと判断した場合（ＹＥＳ）、ステップＳ１１０へ進む。言い換えれば、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域を２分割したときのアドレス低位側である前半部に対する書き込み回数が、アドレス高位側である後半部に対する書き込み回数より多い場合、ステップＳ１１０へ進む。
【００２８】
ステップＳ１１０にて、ＣＰＵ１０は、アドレス値（ｉ＋２k-1）〜（ｉ＋２k−１）のメモリ領域からサイズＭのメモリ領域を割り当てるメモリ領域の割り当て処理を再帰呼出して実行する。すなわち、ＣＰＵ１０は、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域を２分割した場合に書き込み回数が少ない後半部のメモリ領域において、アプリケーションに割り当てるサイズＭのメモリ領域を決定する処理を行う。ステップＳ１１０でのメモリ領域の割り当て処理の結果、処理成功である場合（ステップＳ１１１のＹＥＳ）、すなわち割り当てるサイズＭのメモリ領域が決定した場合、ＣＰＵ１０は、処理成功として戻る。
【００２９】
一方、ステップＳ１１０でのメモリ領域の割り当て処理の結果、処理成功でない（処理失敗である）場合（ステップＳ１１１のＮＯ）、ステップＳ１１２にて、ＣＰＵ１０は、アドレス値ｉ〜（ｉ＋２k-1−１）のメモリ領域からサイズＭのメモリ領域を割り当てるメモリ領域の割り当て処理を再帰呼出して実行する。すなわち、ＣＰＵ１０は、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域を２分割した場合の残りの前半部のメモリ領域において、アプリケーションに割り当てるサイズＭのメモリ領域を決定する処理を行う。
【００３０】
ステップＳ１１２でのメモリ領域の割り当て処理の結果、処理成功である場合（ステップＳ１１３のＹＥＳ）、すなわち割り当てるサイズＭのメモリ領域が決定した場合、ＣＰＵ１０は、処理成功として戻る。一方、ステップＳ１１２でのメモリ領域の割り当て処理の結果、処理成功でない（処理失敗である）場合（ステップＳ１１３のＮＯ）、ステップＳ１０２へ進む。そして、ＣＰＵ１０は、前述したステップＳ１０２以降の処理を行い、アドレス値ｉ〜（ｉ＋２k−１）のメモリ領域からサイズＭの未使用領域を探す。
【００３１】
図３を参照して、本実施形態におけるメモリ制御システムでのメモリ領域の割り当て処理の例を説明する。図３において、メモリ領域Ｍ１０１〜Ｍ１１６は、それぞれ４ＫＢの大きさを有するメモリ領域であるとする。メモリ領域Ｍ１０１〜Ｍ１１６の内、メモリ領域Ｍ１０１〜Ｍ１０３、Ｍ１０５〜Ｍ１０７、Ｍ１１１、Ｍ１１３、及びＭ１１６が使用している領域であり、メモリ領域Ｍ１０４、Ｍ１０８〜Ｍ１１０、Ｍ１１２、Ｍ１１４〜Ｍ１１５が未使用領域であるとする。
【００３２】
メモリ領域Ｍ１０１〜Ｍ１０４が、アドレスＡＤ＜１５，１４＞＝“００”の領域に対応し、メモリ領域Ｍ１０５〜Ｍ１０８が、アドレスＡＤ＜１５，１４＞＝“０１”の領域に対応する。また、メモリ領域Ｍ１０９〜Ｍ１１２が、アドレスＡＤ＜１５，１４＞＝“１０”の領域に対応し、メモリ領域Ｍ１１３〜Ｍ１１６が、アドレスＡＤ＜１５，１４＞＝“１１”の領域に対応する。
【００３３】
以下では、カウンタ群３０において１５ビット目のアドレスＡＤ＜１５＞に対応するカウンタ値が負であり、１４ビット目のアドレスＡＤ＜１４＞に対応するカウンタ値が正であるときに、サイズ９ＫＢのメモリ領域を割り当てる場合を例に説明する。
【００３４】
まず、メモリ領域の割り当て処理を開始すると、アドレスＡＤ＜１５＞に対応するカウンタ値が負であるので、アドレスＡＤ＜１５＞の値に応じて２分割したときのアドレスＡＤ＜１５＞＝“１”に対応する後半部のメモリ領域Ｍ１０９〜Ｍ１１６を検索する領域に設定する（Ｐ１１）。また、メモリ領域Ｍ１０９〜Ｍ１１６が３２ＫＢであり、割り当てるメモリ９ＫＢの２倍よりも大きいので、さらにメモリ領域Ｍ１０９〜Ｍ１１６を２分割して検索する領域を設定する。
【００３５】
このとき、アドレスＡＤ＜１４＞に対応するカウンタ値が正であるので、さらにアドレスＡＤ＜１４＞の値に応じて２分割したときのアドレスＡＤ＜１５，１４＞＝“１０”に対応する前半部のメモリ領域Ｍ１０９〜Ｍ１１２を検索する領域に設定する（Ｐ１２）。しかし、メモリ領域Ｍ１０９〜Ｍ１１２には９ＫＢ分の連続する未使用領域がないので、残りのアドレスＡＤ＜１５，１４＞＝“１１”に対応する後半部のメモリ領域Ｍ１１３〜Ｍ１１６を検索する領域に設定する（Ｐ１３）。
【００３６】
メモリ領域Ｍ１１３〜Ｍ１１６においても９ＫＢ分の連続する未使用領域がないので、続いて、アドレスＡＤ＜１５＞＝“１”に対応する前半部と後半部とを跨いだメモリ領域Ｍ１０９〜Ｍ１１６の全体を検索する領域に設定する（Ｐ１４）。ここでも、９ＫＢ分の連続する未使用領域がないので、次にアドレスＡＤ＜１５＞の値に応じて２分割したときのアドレスＡＤ＜１５＞＝“０”に対応する前半部のメモリ領域Ｍ１０１〜Ｍ１０８を検索する領域に設定する（Ｐ１５）。また、メモリ領域Ｍ１０１〜Ｍ１０８が３２ＫＢであり、割り当てるメモリ９ＫＢの２倍よりも大きいので、さらにメモリ領域Ｍ１０１〜Ｍ１０８を２分割して検索する領域を設定する。
【００３７】
このとき、アドレスＡＤ＜１４＞に対応するカウンタ値が正であるので、さらにアドレスＡＤ＜１４＞の値に応じて２分割したときのアドレスＡＤ＜１５，１４＞＝“００”に対応する前半部のメモリ領域Ｍ１０１〜Ｍ１０４を検索する領域に設定する（Ｐ１６）。しかし、メモリ領域Ｍ１０１〜Ｍ１０４には９ＫＢ分の連続する未使用領域がないので、残りのアドレスＡＤ＜１５，１４＞＝“０１”に対応する後半部のメモリ領域Ｍ１０５〜Ｍ１０８を検索する領域に設定する（Ｐ１７）。
【００３８】
メモリ領域Ｍ１０５〜Ｍ１０８においても９ＫＢ分の連続する未使用領域がないので、続いて、アドレスＡＤ＜１５＞＝“０”に対応する前半部と後半部とを跨いだメモリ領域Ｍ１０１〜Ｍ１０８の全体を検索する領域に設定する（Ｐ１８）。ここでも、９ＫＢ分の連続する未使用領域がないので、次にアドレスＡＤ＜１５＞＝“０”に対応する前半部と後半部とを跨いだメモリ領域Ｍ１０１〜Ｍ１１６を検索する領域に設定する（Ｐ１９）。ここで、メモリ領域Ｍ１０８〜Ｍ１１０により割り当てる９ＫＢの未使用のメモリ領域１０１が見つかり、処理成功として終了する。
【００３９】
なお、処理Ｐ１９の前に割り当てるメモリ領域が途中で決定した場合には、そこで処理成功として終了する。また、処理Ｐ１９においても割り当てる未使用のメモリ領域が見つからないときは、処理失敗として終了する。
【００４０】
本実施形態によれば、カウンタ群３０の各カウンタ３２のカウント値に基づいて、メモリ２０に対する書き込み回数の偏りを判別し、アプリケーションに割り当てるメモリ領域を選ぶ際に書き込み回数の少ない領域から優先して選ぶことができ、メモリにおける書き込み回数を平準化させることができる。また、本実施形態では、データのコピー等を行うことがないので、メモリ特性やアクセス性能を低下させることもない。
【００４１】
なお、前述した実施形態とは逆に、カウンタ群３０の有する複数のカウンタ＜ｐ＞３２−ｐは、メモリ２０に対するデータ書き込みの発生時に、書き込みアドレスのｐビット目ＡＤ＜ｐ＞の値が“０”であればカウント値をアップカウント（１インクリメント）し、“１”であればダウンカウント（１デクリメント）するようにしても良い。この場合には、図２Ｂに例示したメモリ領域の割り当て処理において、ステップＳ１０５での判断の結果、ｋ番目のカウンタ３２−ｋのカウント値ＣＮＴ＜ｋ＞が正ではないと判断した場合にはステップＳ１０６へ進み、正であると判断した場合にはステップＳ１１０へ進むようにすれば良い。
【００４２】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４３】
１０  ＣＰＵ
２０  メモリ
３０  カウンタ群
３１  カウント値用メモリ
３２  カウンタ
【図１】
0006485337.tif 000002
【図２Ａ】
0006485337.tif 000003
【図２Ｂ】
0006485337.tif 000004
【図３】
0006485337.tif 000005