(57)【要約】【課題】複数のコンピュータ間で周期が同期しても、周期の同期が長時間継続することを回避可能とする装置、システム、方法、プログラムの提供。【解決手段】インタバルタイマ回路は、レジスタ（２０２）に設定されたカウンタ値に対応する分、クロック信号をカウントした時点でタイマパルスを出力し、複数のカウンタ値を記憶する配列のなかから、発生した擬似乱数に対応する配列要素のカウンタ値を選択し、選択したカウンタ値をレジスタ（２０２）に設定し、インタバルタイマ回路が一のタイマパルスを出力してから次のタイマパルスを出力するまでの時間間隔が可変自在とされる。【選択図】図３
2010211275.tif 000002
【特許請求の範囲】
【請求項１】
擬似乱数を発生する擬似乱数発生手段と、
レジスタに設定されたカウンタ値に対応する分、クロック信号をカウントした時点でタイマパルスを出力するインタバルタイマと、
複数の互いに異なるカウンタ値を予め記憶しておく記憶部と、
前記記憶部の複数のカウンタ値のなかから、前記擬似乱数発生手段で発生した擬似乱数に対応する記憶域のカウンタ値を選択し、選択したカウンタ値を前記レジスタに設定する手段と、
を備え、前記インタバルタイマが一のタイマパルスを出力してから次のタイマパルスを出力するまでの時間間隔が可変自在とされる、ことを特徴とする情報処理装置。
【請求項２】
前記インタバルタイマが、
前記レジスタに設定されたカウンタ値に対応する分、クロック信号をカウントするカウンタと、
前記カウンタでのカウント動作中に、前記レジスタにカウント値の設定変更が行われた場合、前記カウンタに対して、前記レジスタの読み取り指示を行わないように制御し、前記カウント動作終了後に前記レジスタの読み取るように制御する制御部と、
を備えている、ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
レジスタに設定されたカウンタ値に対応する分、クロック信号をカウントした時点でタイマパルスを出力するインタバルタイマを備え、
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、前記インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）は、一定の値（ＴＩＣＫ）とランダムな変数（δ）とを用いて、
ＴＩＣＫ＋δで規定され、
前記ランダムな変数（δ）の値を、前記割り込み周期毎に設定することで、前オペレーティングシステムの記基本周期（Ｔｉｃｋ）を、割り込み周期毎に変動させる手段を備えている、ことを特徴とする情報処理装置。
【請求項４】
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、
オペレーティングシステムの基本周期（Ｔｉｃｋ）の互いに異なる値を複数個記憶する記憶部を備え、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値を、前記記憶部に記憶されている基本周期のなかからランダムに選択する手段を備えている、ことを特徴とする情報処理装置。
【請求項５】
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値として、
一定の値（ＴＩＣＫ）と所定値（Δ）と、を用いて、
ＴＩＣＫ−Δと、
ＴＩＣＫ＋Δと、
を記憶する記憶部を備え、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値を、前記記憶部に記憶されているＴＩＣＫ−ΔとＴＩＣＫ＋Δから、ランダムに選択する手段を備えている、ことを特徴とする請求項４記載の情報処理装置。
【請求項６】
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定されるコンピュータを複数備え、
前記複数のコンピュータのオペレーティングシステムの基本周期（Ｔｉｃｋ）の値を設定にあたり、複数のコンピュータのそれぞれに互いに素な値を選定して設定する、ことを特徴とする情報処理システム。
【請求項７】
前記複数のコンピュータのそれぞれに、互いに異なる素数を選定して設定することを特徴とする請求項６記載の情報処理システム。
【請求項８】
オペレーティングシステムの基本周期（Ｔｉｃｋ）がインタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、
前記インタバルタイマに対して、複数の互いに異なるカウンタ値を予め記憶部に記憶しておき、
前記記憶部の複数のカウンタ値のなかから、擬似乱数発生手段で発生した擬似乱数に対応する配列のカウンタ値を選択し、選択したカウンタ値を前記レジスタに設定し、
前記インタバルタイマが一のタイマパルスを出力してから次のタイマパルスを出力するまでの時間間隔が可変自在とされる、ことを特徴とするオペレーティングシステムの基本周期の制御方法。
【請求項９】
前記インタバルタイマのカウンタがカウント動作中に、前記レジスタにカウント値の設定変更が行われた場合、前記カウンタに対して、前記レジスタの読み取り指示を行わないように制御し、前記カウント動作終了後に前記レジスタの読み取るように制御する、ことを特徴とする請求項８記載のオペレーティングシステムの基本周期の制御方法。
【請求項１０】
オペレーティングシステムの基本周期（Ｔｉｃｋ）がインタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、
前記基本周期（Ｔｉｃｋ）は、一定の値（ＴＩＣＫ）とランダムな変数（δ）とを用いて、
ＴＩＣＫ＋δで規定され、
前記ランダムな変数（δ）の値を、割り込み周期毎に設定することで、基本周期（Ｔｉｃｋ）を、割り込み周期毎に変動させる、ことを特徴とするオペレーティングシステムの基本周期の制御方法。
【請求項１１】
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、
オペレーティングシステムの基本周期（Ｔｉｃｋ）の互いに異なる値を記憶部に複数個記憶しておき、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値を、前記記憶部に記憶されている基本周期のなかからランダムに選択する、ことを特徴とするオペレーティングシステムの基本周期の制御方法。
【請求項１２】
前記記憶部が、前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値として、
一定の値（ＴＩＣＫ）と所定値（Δ）と、を用いて、
ＴＩＣＫ−Δと、
ＴＩＣＫ＋Δと、
を記憶し、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値を、前記記憶部に記憶されているＴＩＣＫ−ΔとＴＩＣＫ＋Δから、ランダムに選択する、ことを特徴とする請求項１１記載のオペレーティングシステムの基本周期の制御方法。
【請求項１３】
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定される複数のコンピュータに対して、それぞれのオペレーティングシステムの基本周期（Ｔｉｃｋ）の値を設定にあたり、
前記複数のコンピュータのそれぞれに互いに素な値を選定して設定する、ことを特徴とするオペレーティングシステムの基本周期の制御方法。
【請求項１４】
前記複数のコンピュータのそれぞれに、互いに異なる素数を選定して設定することを特徴とする請求項１３記載のオペレーティングシステムの基本周期の制御方法。
【請求項１５】
オペレーティングシステムの基本周期（Ｔｉｃｋ）がインタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定されるコンピュータに、
前記インタバルタイマに対して、複数の互いに異なるカウンタ値を予め記憶部に記憶しておく処理と、
擬似乱数を発生する処理と、
前記記憶部の複数のカウンタ値のなかから、発生した擬似乱数に対応する配列のカウンタ値を選択し、選択したカウンタ値を前記レジスタに設定する処理と、
を実行させるプログラム。
【請求項１６】
前記インタバルタイマのカウンタがカウント動作中に、前記レジスタにカウント値の設定変更が行われた場合、前記カウンタに対して、前記レジスタの読み取り指示を行わないように制御し、前記カウント動作終了後に前記レジスタの読み取るように制御する処理を、前記コンピュータに実行させる請求項１５記載のプログラム。
【請求項１７】
オペレーティングシステムの基本周期（Ｔｉｃｋ）がインタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定されるコンピュータに、
前記基本周期（Ｔｉｃｋ）は、一定の値（ＴＩＣＫ）とランダムな変数（δ）とを用いて、
ＴＩＣＫ＋δで規定され、
前記ランダムな変数（δ）の値を、割り込み周期毎に設定することで、基本周期（Ｔｉｃｋ）を、割り込み周期毎に変動させる処理を実行させるプログラム。
【請求項１８】
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定されるコンピュータに、
オペレーティングシステムの基本周期（Ｔｉｃｋ）の互いに異なる値を記憶部に予め複数個記憶しておく処理と、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値を、前記記憶部に記憶されている基本周期のなかからランダムに選択する処理と、を実行させるプログラム。
【請求項１９】
前記記憶部が、前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値として、
一定の値（ＴＩＣＫ）と所定値（Δ）と、を用いて、
ＴＩＣＫ−Δと、
ＴＩＣＫ＋Δと、
を記憶しておき、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値を、前記記憶部に記憶されているＴＩＣＫ−ΔとＴＩＣＫ＋Δから、ランダムに選択する処理を前記コンピュータに実行させる請求項１８記載のプログラム。
【請求項２０】
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定される複数のコンピュータが、それぞれのオペレーティングシステムの基本周期（Ｔｉｃｋ）の値を設定にあたり、
前記複数のコンピュータのそれぞれに互いに素な値を選定して設定する処理を前記コンピュータに実行させるプログラム。
【請求項２１】
前記複数のコンピュータのそれぞれに、互いに異なる素数を選定して設定する処理を前記コンピュータに実行させる請求項２０記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのオペレーティングシステムのクロック制御に関し、特にＯＳ基本周期を規定するインタバルタイマの制御、情報処理装置とプログラムに関する。
【背景技術】
【０００２】
コンピュータのオペレーティングシステム（以下、「ＯＳ」と記す）は、「Ｔｉｃｋ」と呼ばれる基本周期をもち、時間を指定した中断要求を行い処理を中断したアプリケーションプログラムは、スケジューラにより、Ｔｉｃｋを契機として処理が続行されるのが一般的である。なお、Ｔｉｃｋの値は、１０ミリ秒すなわち１００分の１秒程度の値が一般的である。以下、Ｔｉｃｋの時間間隔の値をＴＩＣＫと記す。
【０００３】
インターネット等のネットワークを経由して外部媒体等のファイルに蓄積された音楽データあるいは動画像データなどを送信するアプリケーションが、一定の転送レートでデータを送信する方法は、一般的に２つある。
【０００４】
第１の方法は、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のような送達確認をもつプロトコルを使用する場合に用いられる。第１の方法では、受信側のアプリケーションが受信データをメモリバッファに蓄えながら、同時に受信データの再生タイミングに応じて再生してゆく。メモリバッファ内の残データ量が少なくなると、受信側のアプリケーションがデータの受信要求を発行するので、ＴＣＰプロトコルでの送達確認パケットが返送され送信側からのデータ送信が再開される。
【０００５】
第１の方法の場合、送信側のアプリケーションは送信タイミングをとることは必要とされず、単に、ＴＣＰを通してパケットを送信するだけでよい。また、受信側からの送達確認パケットの到着は、それぞれの受信者毎に独立で集中することがないので、パケット送信が時間的に集中することはない。
【０００６】
第２の方法は、インターネットでの音楽データや動画像データ配信のための標準的なプロトコルであるＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）プロトコルを使用する場合等に用いられる。
【０００７】
この場合、ＲＴＰプロトコルの下位プロトコルはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）プロトコルであるため、ＴＣＰを使用したときと同様の受信側主導のレート制御は使えない。そのため、送信側が送信レートを制御することになる。送信側のプログラムの処理方法としては、ディスク装置その他の記憶装置からメモリバッファに蓄積する処理（以下、「読み取りスレッド」と呼ぶ）と、周期的に起動されメモリバッファから適切な量のデータを読み取りパケット化して送信する処理（以下、「パケット化スレッド」と呼ぶ）を並行して実行する方法がある。
【０００８】
読み取りスレッドは、メモリバッファに蓄えられたデータの残量を監視して不足分を補い、パケット化スレッドは、周期的に中断状態から再起動され、その時点の時刻情報をもとにその周期で送信すべきデータ量を算出し、算出されたデータ量をパケット化して送信し、最後に次の周期まで中断する。
【０００９】
インターネット等のネットワークを経由して音楽データや動画像データなどを複数の受信者に対して同時に送信する場合は、複数のパケット化スレッドが、ＯＳのスケジューラにより、Ｔｉｃｋを契機（トリガー）として、次々と処理が再開されることになる。
【００１０】
このとき、コンピュータは、１００％のＣＰＵ負荷で連続運転されることはない。また回線使用率が１００％で連続運転されることもないのが一般的である。このことから、全てのパケット化スレッドは、Ｔｉｃｋ周期内に、その周期分の処理を完了し、また回線へのパケット送信処理も全て完了する。このため、ＯＳのＴｉｃｋよりも短い時間粒度で見たとき、回線上を転送されるパケットの転送レートは、図１に示すように、Ｔｉｃｋ周期毎に、その前半では回線速度に近いレートで転送され、その後半はパケット送信が０になる。
【００１１】
この点が、ＴＣＰプロトコルを使用した場合のランダム化された一様なパケット転送との大きな違いである。なお、１００分の１秒の一般的なＴｉｃｋの時間間隔の間に１００Ｍｂｐｓ（メガビット／秒）の回線を通してどの程度のパケットを転送するか概算してみると、パケット長を１Ｋバイトとして、１２０パケット程度になる。
【００１２】
以下においては、図１に示すように、概ね一定の周期毎に出力回線の最大伝送速度で一斉に送出される期間と送信パケットが０である期間を繰り返すトラフィックを「オン・オフトラフィック」と呼ぶ。
【００１３】
次に、従来のＯＳにおいて、Ｔｉｃｋ等の一定周期を生成する方法について説明する。一定周期は、周波数精度が１０の６乗分の１程度の水晶発振器等を使用して作成されたクロックパルスを、「インタバルタイマ」と呼ばれる回路でカウントし、所望のカウント数毎に、すなわち所望の時間周期毎に、インタバルタイマからタイマパルスを出力させ、タイマパルスを使用して割り込み信号を発生させることにより実現されている。計時時間（タイムアウト時間）がプログラマブルに設定可能なインタバルタイマを「プログラマブル・インタバルタイマ」という。
【００１４】
非特許文献１によれば、所望のカウント数は、ＯＳにより初期設定時に初期設定され、以後変更されないのが一般的である。非特許文献２によれば、所望のカウント数は、初期設定した後の任意の時点で書き換え可能であり、直前のタイマパルス出力から次のタイマパルス出力までの時間間隔には影響を与えないが、次のタイマパルス出力からその次のタイマパルス出力までの時間間隔およびそれ以降の時間間隔には書き換えられた値が反映される。
【００１５】
また、非特許文献１によれば、ＯＳの初期設定処理は、次のようにして所望のカウント数を決めるのが一般的である。１秒間にインタバルタイマ割り込みが何回発生するかを決める整数値（「ＨＺ」という）が決定される。このＨＺの値を１００とすれば、１００分の１秒ごとにインタバルタイマの割り込みが発生する。すなわち、インタバルタイマは１００分の１秒分計時する度に、タイムアウトパルスを出力し、割り込み回路を介してＣＰＵに対して割り込み要求が発行される。
【００１６】
クロックパルスの周波数をＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺ（Ｈｚ）とすれば、インタバルタイマに初期設定する値はＩＮＴ（ＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺ／ＨＺ）である（ただし、ＩＮＴ（ｘ）はｘを超えない最大の整数を表す）。特に制限されないが、クロックパルスの周波数は１．１９ＭＨｚの場合が多い。
【００１７】
非特許文献３によれば、乱歩（ｒａｎｄｏｍ  ｗａｌｋ）すなわち初期値０の変数に、１／２の確率で＋Δを加え、１／２の確率で−Δを加える過程をｎ回行った後の変数の値の分布は、ｎが大きくなると、平均が０で、分散がｎ×Δ×Δの正規分布に近づく。
【００１８】
特許文献１には、パルス列の繰り返し周期を、乱数発生手段の出力に応じて増減し、許容誤差範囲内で繰り返し周期を、ランダムに変化させる構成が開示されている。
【００１９】
また特許文献２には、タイムアウト信号が出力されるまでの時間がランダムに可変されるランダムタイムアウト出力回路として、予め乱数を格納したタイマ初期値格納メモリを備え、該タイマ初期値格納メモリからの読み出しデータによって、プログラマブル・インタバルタイマの初期値を設定する構成が開示されている。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２０００−１５３８６号公報
【特許文献２】特開昭６１−１１４３２６号公報
【非特許文献】
【００２１】
【非特許文献１】ＤａｎｉｅｌＰ．Ｂｏｖｅｔ，  Ｍａｒｃｏ  Ｃｅｓａｔｉ  （ダニエル．Ｐ．ボベット、マルコ．セサティ），高橋監訳、詳解Ｌｉｎｕｘカーネル 第２版、オライリー・ジャパン、オーム社、６章（６．１．３）
【非特許文献２】Ｉｎｔｅｌ、８２Ｃ５４  ＣＨＭＯＳ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＩＮＴＥＲＶＡＬ  ＴＩＭＥＲ，Ｉｎｔｅｌ ＤａｔａＳｈｅｅｔ
【非特許文献３】小針、 確率・統計入門、岩波書店、５章§３ P.116,117
【発明の概要】
【発明が解決しようとする課題】
【００２２】
以下に本発明による分析を与える。
【００２３】
第１の問題点は、送達確認なしのプロトコルを使用して大量のデータを高速に送り出す２台のコンピュータ（コンピュータ１、２）が、図４（Ａ）に示すように、ルータ等のネットワークノードに接続されている場合、２台のコンピュータのＴｉｃｋ起動時点がほぼ同時になると、２つのコンピュータがＴｉｃｋ起動時点で開始するオン・オフトラフィックがほぼ同時にネットワークノードに入力される。このため、このネットワークノードのバッファ容量が十分大きくない場合には、パケット紛失が増加する。そして、このパケット紛失（およびパケット紛失による受信画像や音声の劣化）が、長時間継続することになる。長時間で平均したときのパケットロス率は同じであっても、短い時間帯（たとえば１５分）に連続して高いパケットロス率を示し、残りの時間帯では低い場合と、パケットロスが一様に発生する場合がある。前者の場合、前方エラー訂正（Fｏｒｗａｒｄ  Eｒｒｏｒ  Cｏｒｒｅｃｔｉｏｎ）等により、誤り訂正を行ってもエラー訂正が難しく転送する画像や音声の品質が低下する。一方、後者の場合、前方エラー訂正等の誤り訂正手法を使用することにより、容易にエラーが訂正され、転送する画像や音声の品質は低下しない。
【００２４】
また図４（Ｂ）に示すように、複数（２台）のコンピュータ（コンピュータ１、２）が、それぞれ、ルータ等のネットワークノードに接続され、複数（２台）のネットワークノードが１つのネットワークノードに接続されている構成についても、同様のことがいえる。
【００２５】
Ｔｉｃｋ起動時点がほぼ同時になる現象が長時間継続する理由は以下の通りである。すなわち、Ｔｉｃｋ周期を作成するために、一般に水晶発振器が利用されているが、水晶発振器の周波数精度は１０の６乗分の１程度であり、２つのコンピュータの発振器（不図示）の周波数差に起因する、Ｔｉｃｋの起動時点の差は、精度に比例してゆっくりと変動するためである。２つのコンピュータの周期を生成する発振器（不図示）の精度を両方ともεとすると、２つのコンピュータのＴｉｃｋ起動時点はＴ時間の間にＴ×ε時間程度しか離れない。すなわち、１０００分の１秒（１ｍｓ）程度離れるのに、１５分（９００秒）程度かかることになる。
【００２６】
２台のコンピュータのＴｉｃｋの起動時点が同期してから次のＴｉｃｋの起動時点が同期するまでの時間間隔を「Ｔｉｃｋ同期時間間隔」と呼ぶ。従来方式で、同じＨＺの値を使用している２台のコンピュータの場合は、一度Ｔｉｃｋの起動時点が同期すると、次のＴｉｃｋの起動時点でも同期する。したがって、Ｔｉｃｋ同期時間間隔は、Ｔｉｃｋの時間間隔ＴＩＣＫに等しくなる。また、ＨＺが異なる場合であっても、１秒をＨＺで割った値をＴＩＣＫの値としているので、長くとも、１秒毎にＴｉｃｋは同期する。
【００２７】
すなわち、従来方式では、２台のコンピュータのＴｉｃｋ同期時間間隔は、ＨＺが同じ場合には、ＴＩＣＫ秒であり、ＨＺとして異なる値を指定しても、１秒を整数で割った値であり、１秒と等しいか短い値である。
【００２８】
なお、特許文献１、２では、タイムアウト信号がオンとなってから、プログラムがタイマ動作を開始するまでの間の時間間隔が、正確に制御できない場合がある（ＣＰＵが例えばＮＭＩ（Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ）実行中にタイムアウト割り込みが発生した場合等）。
【００２９】
したがって、本発明の目的は、複数のコンピュータ間で周期が同期しても、周期の同期が長時間継続することを回避可能とする装置、方法、プログラムを提供することにある。
【課題を解決するための手段】
【００３０】
本発明によれば、擬似乱数を発生する擬似乱数発生手段と、レジスタに設定されたカウンタ値に対応する分クロック信号をカウントした時点でタイマパルスを出力するインタバルタイマと、複数の互いに異なるカウンタ値を予め記憶しておく記憶部と、前記記憶の複数のカウンタ値のなかから、前記擬似乱数発生手段で発生した擬似乱数に対応する記憶域のカウンタ値を選択し、選択したカウンタ値を前記レジスタに設定する手段とを備え、前記インタバルタイマが一のタイマパルスを出力してから次のタイマパルスを出力するまでの時間間隔が可変自在とされる情報処理装置が提供される。
【００３１】
本発明によれば、レジスタに設定されたカウンタ値に対応する分、クロック信号をカウントした時点でタイマパルスを出力するインタバルタイマを備え、
オペレーティングシステムの基本周期（Ｔｉｃｋ）が、前記インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、前記基本周期（Ｔｉｃｋ）は、一定の値（ＴＩＣＫ）とランダムな変数（δ）とを用いて、ＴＩＣＫ＋δで規定され、
前記ランダムな変数（δ）の値を、前記割り込み周期毎に設定することで、前記基本周期（Ｔｉｃｋ）を、割り込み周期毎に変動させる手段を備えている情報処理装置が提供される。
【００３２】
本発明によれば、レジスタに設定されたカウンタ値に対応する分、クロック信号をカウントした時点でタイマパルスを出力するインタバルタイマを備え、
本発明によれば、オペレーティングシステムの基本周期（Ｔｉｃｋ）が、前記インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、
オペレーティングシステムの基本周期（Ｔｉｃｋ）の互いに異なる値を複数個記憶する記憶部を備え、
前記オペレーティングシステムの基本周期（Ｔｉｃｋ）の値を、前記記憶部に記憶されている基本周期のなかからランダムに選択する手段を備えている、情報処理装置が提供される。
【００３３】
本発明によれば、オペレーティングシステムの基本周期（Ｔｉｃｋ）がインタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定され、
前記インタバルタイマに対して、複数の互いに異なるカウンタ値を予め記憶部に記憶しておき、
前記記憶部の複数のカウンタ値のなかから、擬似乱数発生手段で発生した擬似乱数に対応する配列のカウンタ値を選択し、選択したカウンタ値を前記レジスタに設定し、
前記インタバルタイマが一のタイマパルスを出力してから次のタイマパルスを出力するまでの時間間隔が可変自在とされる、ことを特徴とするオペレーティングシステムの基本周期の制御方法が提供される。
【００３４】
本発明によれば、オペレーティングシステムの基本周期（Ｔｉｃｋ）がインタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定されるコンピュータに、
前記インタバルタイマに対して、複数の互いに異なるカウンタ値を予め記憶部に記憶しておく処理と、
擬似乱数を発生する処理と、
前記記憶部の複数のカウンタ値のなかから、発生した擬似乱数に対応する配列のカウンタ値を選択し、選択したカウンタ値を前記レジスタに設定する処理と、
を実行させるプログラムが提供される。
【００３５】
本発明によれば、オペレーティングシステムの基本周期（Ｔｉｃｋ）が、インタバルタイマから出力されるタイマパルス出力を受ける割り込みコントローラからのＣＰＵへの割り込み周期によって規定されるコンピュータを複数備え、
前記複数のコンピュータのオペレーティングシステムの基本周期（Ｔｉｃｋ）の値を設定にあたり、複数のコンピュータのそれぞれに互いに素な値を選定して設定する情報処理システムが提供される。
【発明の効果】
【００３６】
本発明によれば、複数のコンピュータ間で周期が同期しても、周期の同期が長時間継続することを回避可能としている。
【図面の簡単な説明】
【００３７】
【図１】オン・オフトラフィックの転送レートの時間的な変化を示す図である。
【図２】本発明の一実施例の構成を示す図である。
【図３】本発明の一実施例のインタバルタイマの構成を示す図である。
【図４】２台のコンピュータの出力トラフィックが１つのネットワークノードで合流する場合の例を示す図である。
【図５】本発明においてサーバの基本周期の起動時点の変動例を説明する図である。
【図６】本発明の一実施例におけるＯＳのクロック割り込み処理を説明する流れ図である。
【図７】本発明の一実施例における割込時間間隔変更処理を説明する図である。
【図８】本発明の一実施例における割込時間間隔変更処理を説明する図である。
【図９】本発明の一実施例における擬似乱数数値取得処理を説明する図である。
【図１０】本発明の一実施例における割込時間間隔変更処理を説明する図である。
【発明を実施するための形態】
【００３８】
本発明の実施の形態について説明する。本発明に係る情報処理装置（情報通信装置）を構成するコンピュータは、擬似乱数を発生する手段と、動作に影響を与えずに、次の割り込みまでの時間間隔を変更することができるインタバルタイマ（「プログラマブル・インタバルタイマ」ともいう）と、を備えている。さらに、インタバルタイマのタイマパルスを出力によって発生した割り込み信号を処理する手段（ＯＳの周期割り込みプログラム）を有する。
【００３９】
ＯＳの周期割り込みプログラムは、インタバルタイマに対して次の割り込みまでの時間間隔を変更する処理を実行する。ＯＳの周期割り込みプログラムでは、擬似乱数を取得し、インタバルタイマに対して、割り込み間の時間間隔が、予め定められた固定値と、擬似乱数から得られるランダム値の和となるように、インタバルタイマの内部レジスタ値を変更することにより、Ｔｉｃｋの同期が長時間継続することを回避する。
【００４０】
本発明によれば、複数のコンピュータのＴｉｃｋの同期が長時間継続する問題を回避できる。
【００４１】
簡単化のため、割り込みまでの時間間隔を、一般的なＴＩＣＫ＋δ（δはランダムな変数）であるのを、ＴＩＣＫ−ΔとＴＩＣＫ＋Δの値を、等確率でランダムにとると近似して考えると、２台のコンピュータのＴｉｃｋ起動時点が正確に一致した後のＴｉｃｋ起動時間の差分は、Ｔｉｃｋ毎に、
１／４の確率で、−２×Δ、
１／４の確率で、＋２×Δ、および
１／２の確率で、０
の差が発生する。
【００４２】
乱歩に関する結果から、この差分を乱歩による中心からの移動距離として考えると、ＴｉｃｋがＫ回発生した時点で、±２×Δの移動が、平均Ｋ／２回発生しているので、差分の分布は、平均が０で、分散が（２×Δ）×（２×Δ）×（Ｋ／２）の正規分布で近似できる。
【００４３】
すなわち、Ｋ回のＴｉｃｋ発生時点での２つのコンピュータのＴｉｃｋ発生時点の差は、平均が０で分散が２×Ｋ×Δ×Δの正規分布で近似できる。
【００４４】
以上から、時間間隔がＴＩＣＫ＋ランダム変数である場合も、時間間隔がＴＩＣＫ−ΔとＴＩＣＫ＋Δの場合と同様に、２台のコンピュータのＴｉｃｋが同期する現象が発生しても、Ｔｉｃｋの同期が長時間継続する現象の発生確率は、従来方式と比べて小さくなることがわかる。
【００４５】
図５は、本発明を実施した２台のコンピュータ（サーバ１、サーバ２）のＴｉｃｋ開始時点とオン・オフトラフィック出力を模式的に示した図である。サーバ１ではＴｉｃｋ＋δ１１、Ｔｉｃｋ＋δ１２、Ｔｉｃｋ＋δ１３、Ｔｉｃｋ＋δ１４と、割り込み周期毎に変動させ、サーバ２ではＴｉｃｋ＋δ２１、Ｔｉｃｋ＋δ２２、Ｔｉｃｋ＋δ２３、Ｔｉｃｋ＋δ２４と、割り込み周期毎に変動させており、互いに割り込み開始時点がずれている。このように、複数のコンピュータのＴｉｃｋの同期が長時間継続する問題を回避でき、パケット紛失の増加が長時間継続するという問題を回避することができる。以下、実施例に即して説明する。
【実施例】
【００４６】
図２は、本発明の一実施例の構成を示す図である。図２に示すように、ＣＰＵ（中央処理装置）１０１と、割り込みコントローラ１０２と、インタバルタイマ回路１０３と、クロック生成回路１０４と、バス１１１とを備えている。
【００４７】
ＣＰＵ１０１と割り込みコントローラ１０２およびインタバルタイマ回路１０３は、バス１１１により接続されている。ＣＰＵ１０１は、バス１１１を介して割り込みコントローラ１０２およびインタバルタイマ回路１０３の内部レジスタ（不図示）の値の読み出し、書き込みを行う。
【００４８】
割り込みコントローラ１０２は、バス１１１を介してＣＰＵ１０１に割り込みの発生を通知する。
【００４９】
クロック生成回路１０４から出力されるクロック信号はインタバルタイマ回路１０３に入力される。
【００５０】
図３は、図２のインタバルタイマ回路（プログラマブル・インタバルタイマ）１０３の構成を示す図である。図３を参照すると、インタバルタイマ回路１０３は、カウンタ２０１と、レジスタ２０２と、バスインタフェース制御部２０３とを備えている、図３において、２１１は、クロック入力、２１２は割り込み、２１３はバスインタフェース、２１４はレジスタ書き込みインタフェース、２１５はレジスタ読み取り指示である。
【００５１】
カウンタ２０１へのクロック入力２１１は、図２のクロック生成回路１０４の出力に接続されている。カウンタ２０１のタイムアウトパルス（割り込み）２１２は、図４の割り込み１１２に対応している。バスインタフェース制御部２１３は図４のバス１１１に接続されている。
【００５２】
図２、図３を参照して、インタバルタイマ回路１０３の動作について説明する。ＯＳの初期設定処理では、ＣＰＵ１０１からバスインタフェース制御部２０３へ動作モードの指示が行われる。該指示に続いて、インタバルタイマ回路１０３の所望の周期を生成する値が、ＣＰＵ１０１からバスインタフェース制御部２０３を経由してレジスタ２０２に設定される。
【００５３】
バスインタフェース制御部２０３は、ＣＰＵ１０１からバスインタフェース制御部２０３への動作モード指示の直後のレジスタ２０２への値の設定であるため、レジスタ読み取り指示２１５を経由して、カウンタ２０１に読み取りを指示する。
【００５４】
読み取りの指示をうけたカウンタ２０１は、レジスタ２０２の値を読みとり、その値を保持する。この後、カウンタ２０１の値は、カウンタ２０１へのクロック２１１（図２のクロック生成回路１０４の出力）の入力に応答して例えば１つづつダウンカウントされる。カウンタ２０１のカウンタ値がダウンカウントの結果０になると、カウンタ２０１は、割り込み信号２１２を活性状態（オン）とする。カウンタ２０１は、つづいて、レジスタ２０２の値を読み取り、その値を保持する。カウンタ２０１のカウント値は０でなくなるので、割り込み信号２１２はオフになる。
【００５５】
その後、カウンタ２０１は、クロック２１１の入力に応答してダウンカウントし、カウント値が０になる。以上の動作を繰り返すことにより、インタバルタイマ回路１０３は、レジスタ２０２の設定値で規定される周期毎に、割り込み信号２１２を出力する。なお、インタバルタイマ回路１０３のレジスタ２０２は「分周値レジスタ」ともいう。
【００５６】
ＣＰＵ１０１からレジスタ２０２の値の設定変更が行われると、バスインタフェース制御部２０３は、レジスタ２０２の値を書き換える。バスインタフェース制御部２０３への動作モード指示の直後のレジスタ２０２への値の設定ではないので、レジスタ読み取り指示２１５を経由してカウンタ２０１に読み取りを指示する処理は行われない。
【００５７】
これにより、カウンタ２０１でのカウント動作の最中に、レジスタ２０２への値の設定が行われた場合、カウンタ２０１のダウンカウント動作の結果、カウンタ値が０となった時点で次のタイムアウト割り込みが発生し、該次のタイムアウト割り込みから、次の次のタイムアウト割り込み発生までの時間間隔は、１つ前のタイムアウト割り込みから該次のタイムアウト割り込み発生までの時間間隔と相違することになる。
【００５８】
オペレーティングシステムの基本周期（Ｔｉｃｋ）は、インタバルタイマ回路１０３からのタイマパルス出力（タイムアウトパルス）１１２（図２参照）を受けた割り込みコントローラ１０２からＣＰＵ１０１に対して発行される割り込みによって規定される。
【００５９】
図６は、本実施例の動作を説明する流れ図である。図６を参照して、本実施例のＯＳのクロック割り込み処理を説明する。クロック割り込み処理プログラムは、クロック割り込み処理を実行し（ステップＡ１）、その後、本実施例による割込時間間隔変更処理を実行する（ステップＡ２）。なお、上記割込時間間隔変更処理は、コンピュータで実行されるプログラムによりその処理・機能を実現するようにしてもよいことは勿論である。
【００６０】
図７（Ｂ）は、図６のステップＡ２の割込時間間隔変更処理を説明する図である。本実施例のコンピュータは、図７（Ａ）に示すように、割込時間間隔変更処理において、ＯＳの初期設定処理で、分周値レジスタ２０２（図３参照）に設定する値を保存するカウンタ初期値データ１００１を備えている。
【００６１】
図７（Ｂ）を参照すると、ＣＰＵ１０１の割込時間間隔変更処理では、まず擬似乱数生成プログラムを呼び出し、擬似乱数値を取得する（ステップＢ１）。
【００６２】
次に、ＣＰＵ１０１は、擬似乱数値でランダムな値を算出し、得られた値とカウンタ初期値データ１００１の和を分周値レジスタ２０２に書き込む（ステップＢ２）。
【００６３】
以上により、割込時間間隔は、擬似乱数生成プログラムの出力に従って、ＴＩＣＫ＋ランダム値となり、複数のコンピュータのＴｉｃｋがいったん同期しても、Ｔｉｃｋの同期は長時間継続しない。
【００６４】
図７のステップＢ２のランダム値を算出するため、２台のコンピュータは、それぞれ、図８（Ａ）に示すように、２×Ｋ個の設定値（インタバルタイマ回路１０３のレジスタ２０２に設定する値）を格納したタイマカウンタ配列データ１１０１を備えた構成としてもよい。２×Ｋ個のタイマカウンタ配列データ１１０１の値の中から、等確率に、ランダムに１つの値を選択することにより、２台のコンピュータのＴｉｃｋが一旦同期しても、Ｔｉｃｋの同期は長時間継続しない。
【００６５】
図８（Ｂ）は、図６のステップＡ２の一例を示す流れ図である。まず、０から２×Ｋ−１の範囲の整数値の擬似乱数値を取得する（ステップＣ１）。
【００６６】
つぎに、得られた擬似乱数値で２×Ｋ個のタイマカウンタ配列データ１１０１（図８（Ａ）参照）を索引して、対応するタイマカウンタ配列データ１１０１の値を読み出し、インタバルタイマ回路１０３のレジスタ２０２(図２参照)に設定する(ステップＣ２)。
【００６７】
図９（Ｂ）は、図７のステップＢ１の擬似乱数の取得処理の手順を示す図である。図９（Ａ）に示すように、擬似乱数配列索引データ１２０１と、擬似乱数配列データ１２０２（、擬似乱数配列データ［０］〜擬似乱数配列データ［Ｌ−１］）を備えている。
【００６８】
Ｌ個の擬似乱数配列データ１２０２を擬似乱数配列索引データ１２０１で検索し、擬似乱数配列データを取得する（ステップＤ１）。
【００６９】
擬似乱数配列索引データ１２０１に１を加算し、擬似乱数配列索引データ１２０１の値はＬと等しい場合、擬似乱数配列索引データ１２０１の値を０として（ステップＤ３）、処理を終了し、等しくない場合、処理を終了する。なお、上記擬似乱数生成処理は、コンピュータで実行されるプログラムによりその処理・機能を実現するようにしてもよいことは勿論である。  
【００７０】
図１０（Ｂ）は、図６のステップＡ２の割込時間間隔変更処理の手順を示す図である。図１０（Ａ）に示すように、２つのタイマカウンタ配列データ１１０１（カウンタ配列データ［０］、カウンタ配列データ［１］）を備えている。０、１の範囲の整数値擬似乱数を取得する（ステップＥ１）。
【００７１】
得られた擬似乱数値（０、又は１）で、カウンタ配列データ［０］，タイマカウンタ配列データ［１］を索引し、得られた値をインタバルタイマ回路１０３のレジスタ２０２に書き込む。なお、図９の構成は、本実施例において、図８において、Ｋ＝１とした場合に対応する。２個のタイマカウンタ配列データ１１０１に値、ＴＩＣＫ−ΔとＴＩＣＫ＋Δ（定数）を記憶しておき、Ｋ個のタイマカウンタ配列データ１１０１の値の中から、等確率に、ＴＩＣＫ−ΔとＴＩＣＫ＋Δをランダムに選択することにより、２台のコンピュータのＴｉｃｋがいったん同期しても、Ｔｉｃｋの同期は長時間継続しない。
【００７２】
次に、第二の実施例を説明する。第一の実施例では、Ｔｉｃｋの時間間隔をランダム化することにより、Ｔｉｃｋの同期が長時間継続しないようにしていたが、第二の実施例では、２台のコンピュータのＴｉｃｋ時間を互いに独立な値にすることにより、Ｔｉｃｋの同期が長時間継続しないようにするものである。
【００７３】
本実施例では、２台のコンピュータにおいて、ＯＳの初期設定時にインタバルタイマのレジスタ回路１０３のレジスタ２０２（図３）に設定する値を、演算ＩＮＴ（ＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺ／ＨＺ）により設定する方法から、互いに素となる整数ＭとＮを直接設定する方法に変える。この結果、２台のコンピュータのＴｉｃｋがｉ一旦同期しても、Ｔｉｃｋの同期は長時間継続しない。
【００７４】
その理由は、以下のとおりである。従来は、インタバルタイマのレジスタ回路１０３のレジスタ２０２（図３）に設定する値を、演算ＩＮＴ（ＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺ／ＨＺ）により設定していた。この方法では、Ｔｉｃｋの周期は１秒を整数値ＨＺで割った値になる。このため、２台のコンピュータのＴｉｃｋが同期すると、１秒後に、確実に２台のコンピュータのＴｉｃｋが同期する。２台のコンピュータのＨＺの値が同じだと、１／ＨＺ秒毎に、Ｔｉｃｋが同期する。２台のコンピュータのＨＺの値が異なる値であっても、１秒後には、Ｔｉｃｋが同期する。
【００７５】
ところが、互いに素な値ＭとＮをインタバルタイマのレジスタ回路１０３のレジスタ２０２に設定する場合には、ＭとＮの最小公倍数をＧとし、２台のコンピュータのインタバルタイマ回路１０３のレジスタ２０２に設定する値を、それぞれ整数Ｍ、Ｎとすると、ある時刻で２台のコンピュータのＴｉｃｋが同期しても、次に２台のコンピュータのＴｉｃｋのが同期する時点は、Ｇ／ＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺ秒後であり、ＭとＮが互いに素の場合、（Ｍ×Ｎ）／ＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺとなる。この値は第一のコンピュータのＴＩＣＫ周期Ｍ／ＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺ秒のＮ倍である。
【００７６】
例えば、ＣＬＯＣＫ＿ＴＩＣＫ＿ＨＺ＝１００万とし、２台のコンピュータ（コンピュータＡとコンピュータＢ）について、コンピュータＡのインタバルタイマ回路１０３のレジスタ２０２の初期値を１００００とし、コンピュータＢのインタバルタイマ回路１０３のレジスタ２０２の初期値を１１５５５としたとする。２台のコンピュータＡ，ＢのＴｉｃｋは１周期毎あたり１．１５５５ミリ秒ずつずれて行き、２３．１１秒毎に同期する。すなわち、コンピュータＡでの２３１１クロック周期，コンピュータＢでの２０００クロック周期毎に同期する。２台のコンピュータＡ、ＢがＴｉｃｋ毎に同期する場合と比べて改善されている。
【００７７】
なお、上記のＭ、Ｎ等の値として互いに素となる数を選ぶ代わりに、素数のなかからＭ、Ｎを選ぶ構成としてもよい。この場合、ＭとＮが互いに素であることを確認する手順を簡略化することができる。すなわち、２台のコンピュータでＭ、Ｎ等の素数の値が異なっていれば互いに素である。
【００７８】
本発明をコンピュータのＯＳに適用することにより、複数のコンピュータを備え、ネットワークを経由して大量のデータを高速配信する産業、例えばビデオデータ配信センタなどのサービス品質を向上させることができる。なお、上記実施例では、複数の複数のコンピュータとして図５に示したように、２台のコンピュータを備えたシステムを例に説明したが、本発明において、３台以上のコンピュータを備えたシステムに対しても適用可能であることは勿論である。
【００７９】
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００８０】
１０１  ＣＰＵ（中央処理装置）
１０２  割り込みコントローラ
１０３  インタバルタイマ回路
１０４  クロック生成回路
１１１  バス
１１２  タイマパルス出力（割り込み）
１２１  カウンタ
１２２  レジスタ
１２３  バスインターフェース制御部
１３１  タイマパルス出力
１３２  レジスタ読み取り指示
１３３  レジスタ書き込みインタフェース
２０１  カウンタ
２０２  レジスタ
２０３  制御部
２１１  カウンタへのクロック入力
２１２  タイマパルス出力（割り込み）
２１３  バスインタフェース
２１４  レジスタ書き込みインタフェース
２１５  レジスタ読み取り指示
１００１  カウンタ初期値データ
１１０１  タイマカウンタ配列データ
１２０１  擬似乱数配列索引データ
１２０２  擬似乱数配列データ
【図１】
2010211275.tif 000003
【図２】
2010211275.tif 000004
【図３】
2010211275.tif 000005
【図４】
2010211275.tif 000006
【図５】
2010211275.tif 000007
【図６】
2010211275.tif 000008
【図７】
2010211275.tif 000009
【図８】
2010211275.tif 000010
【図９】
2010211275.tif 000011
【図１０】
2010211275.tif 000012