(57)【特許請求の範囲】
【請求項１】
リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置であって、
前記複数の通信手段の少なくとも１つは、
受信したデータについて、前記予め定めた順序において自通信手段に対応する処理手段よりも後段で処理を実行するべき処理手段の少なくとも１つにおいて処理が保留されたことを示す情報を検知する検知手段と、
対応する処理手段が処理を実行した後のデータを最後に送信してから前記所定の送信間隔以上の間隔を置いて、前記対応する処理手段が処理を実行した後のデータを送信する送信手段と、
前記検知手段によって前記受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長するように制御する制御手段と、を有し、
前記制御手段は、前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔を延長し、
前記制御手段は、
ロードした値から０に向けてカウントダウンするタイマと、
前記タイマが示す値に応じて出力が有効であるかを示す出力有効信号を出力する出力有効信号出力手段と、を有し、
前記送信手段は、前記出力有効信号が有効な信号を示す場合に、対応する処理手段が処理を実行した後のデータを送信する、ことを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した場合、予め設定された設定値よりも大きい値を前記送信間隔として設定し、さらに、設定した当該送信間隔によってデータが送信される前に前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した場合には、予め保持している被加算値に基づいて前記送信間隔をさらに延長する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数の通信手段の少なくとも１つは、さらに、前記受信したデータが当該通信手段によって出力されたデータであるか否かを判定する判定手段を有し、
前記制御手段は、当該判定手段により前記受信したデータが当該通信手段に対応する処理手段によって処理され出力されたデータであると判定され、かつ前記検知手段によって当該受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長する、ことを特徴とする請求項１または２に記載の画像処置装置。 
【請求項４】
リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置であって、
前記複数の通信手段の少なくとも１つは、
受信したデータについて、前記予め定めた順序において自通信手段に対応する処理手段よりも後段で処理を実行するべき処理手段の少なくとも１つにおいて処理が保留されたことを示す情報を検知する検知手段と、
前記受信したデータが当該通信手段によって出力されたデータであるか否かを判定する判定手段と、
対応する処理手段が処理を実行した後のデータを最後に送信してから前記所定の送信間隔以上の間隔を置いて、前記対応する処理手段が処理を実行した後のデータを送信する送信手段と、
前記判定手段により前記受信したデータが当該通信手段に対応する処理手段によって処理され出力されたデータであると判定され、かつ前記検知手段によって前記受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長するように制御する制御手段と、
を有し、
前記制御手段は、前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔を延長し、
前記判定手段は、さらに、前記受信したデータが、前記複数の通信手段の当該少なくとも１つに対応する処理手段で処理され出力されたデータに対して、当該通信手段に対応する処理手段よりも前記予め定められた順序において次のさらに次以降の処理手段によるさらなる処理が行われたデータであるか否かを判定し、
前記制御手段は、さらに、当該判定手段により、前記受信したデータが、当該通信手段に対応する処理手段によって処理され出力されたデータにさらなる処理が行われたデータであると判定され、かつ前記検知手段によって当該受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長する、ことを特徴とする画像処理装置。
【請求項５】
リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置であって、
前記複数の通信手段の少なくとも１つは、
受信したデータについて、前記予め定めた順序において自通信手段よりも後段で処理を実行するべき処理手段において処理が保留されたことを示す情報を検知する検知手段と、
前記検知手段によって前記受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長するように制御する制御手段と、を有し、
前記制御手段は、前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔を延長し、延長した前記送信間隔が所定値以下となるように、前記送信間隔を制限することを特徴とする情報処理装置。 
【請求項６】
前記所定値は、信号が前記リング状のバスを１周する期間である、ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置であって、
前記複数の通信手段の少なくとも１つは、
受信したデータについて、前記予め定めた順序において自通信手段よりも後段で処理を実行するべき処理手段において処理が保留されたことを示す情報を検知する検知手段と、
前記検知手段によって前記受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長するように制御する制御手段と、を有し、
前記制御手段は、前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔を延長し、さらに、前記受信したデータに対して処理を実行するべき処理手段が、前記順序において早い順序の処理を実行する処理手段であるほど、より長く前記送信間隔を延長する、ことを特徴とする情報処理装置。 
【請求項８】
リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置であって、
前記複数の通信手段の少なくとも１つは、
受信したデータについて、前記予め定めた順序において自通信手段よりも後段で処理を実行するべき処理手段において処理が保留されたことを示す情報を検知する検知手段と、
前記検知手段によって前記受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長するように制御する制御手段と、
前記所定の送信間隔において、前記処理手段が処理を実行した後のデータを送信できたか否かを判定する出力判定手段と、を有し、
前記制御手段は、前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔を延長し、
前記出力判定手段が前記データの送信ができなかったと判定した場合、その後に設定される前記送信間隔によらず、当該データを送信する、ことを特徴とする情報処理装置。
【請求項９】
リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置における通信方法であって、
前記複数の通信手段の少なくとも１つは、
検知手段が、受信したデータについて、前記予め定めた順序において自通信手段に対応する処理手段よりも後段で処理を実行するべき処理手段の少なくとも１つにおいて処理が保留されたことを示す情報を検知するステップと、
送信手段が、対応する処理手段が処理を実行した後のデータを最後に送信してから前記所定の送信間隔以上の間隔を置いて、前記対応する処理手段が処理を実行した後のデータを送信するステップと、
制御手段が、前記検知するステップにおいて、前記受信したデータに対する処理が保留されたことを示す情報が検知された場合、前記送信間隔を延長するように制御するステップと、を有し、
前記制御するステップでは、前記検知するステップにおいて、前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔が延長され、
前記制御するステップでは、
ロードした値から０に向けてカウントダウンするタイマが示す値に応じて出力が有効であるかを示す出力有効信号が出力され、
前記送信するステップでは、前記出力有効信号が有効な信号を示す場合に、対応する処理手段が処理を実行した後のデータが送信される、ことを特徴とする通信方法。
【請求項１０】
リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置における通信方法であって、
前記複数の通信手段の少なくとも１つは、
検知手段が、受信したデータについて、前記予め定めた順序において自通信手段に対応する処理手段よりも後段で処理を実行するべき処理手段の少なくとも１つにおいて処理が保留されたことを示す情報を検知するステップと、
判定手段が、前記受信したデータが当該通信手段によって出力されたデータであるか否かを判定するステップと、
送信手段が、対応する処理手段が処理を実行した後のデータを最後に送信してから前記所定の送信間隔以上の間隔を置いて、前記対応する処理手段が処理を実行した後のデータを送信するステップと、
制御手段が、前記判定するステップにおいて前記受信したデータが当該通信手段に対応する処理手段によって処理され出力されたデータであると判定され、かつ前記検知するステップにおいて、前記受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長するように制御するステップと、を有し、
前記制御するステップでは、前記検知するステップにおいて、前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔が延長され、
前記判定するステップでは、前記受信したデータが、前記複数の通信手段の当該少なくとも１つに対応する処理手段で処理され出力されたデータに対して、当該通信手段に対応する処理手段よりも前記予め定められた順序において次のさらに次以降の処理手段によるさらなる処理が行われたデータであるか否かが判定され、
前記制御するステップでは、さらに、当該判定するステップにより、前記受信したデータが、当該通信手段に対応する処理手段によって処理され出力されたデータにさらなる処理が行われたデータであると判定され、かつ前記検知手段によって当該受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長する、ことを特徴とする通信方法。
【請求項１１】
請求項９又は１０に記載の通信方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リング状のバスを用いてデータの受け渡し及び処理を行う情報処理装置、通信方法及びプログラムに関する。
【背景技術】
【０００２】
従来、複数のモジュールが通信可能に接続され、並列処理をするデータパス制御システムにおいて、効率的なパケットの転送を行う方法として、優先度に応じてパケットの転送を行う方法が提案されている。
【０００３】
特許文献１には、１段以上のバッファやメモリを備える複数のモジュールをリング状に接続し、リングバスにモジュール数と同じ数のパケットを存在させ、モジュール間のパケットの転送を並列に行いながらデータ処理をするデータ転送方法が記載されている。特許文献１の構成では優先度を集中管理によって判定することで優先度に応じた転送を実現している。
【０００４】
特許文献２には、各モジュールに分散した優先度によるパケット転送の方法が記載されている。具体的には、データ転送バスと応答転送バスの２つのリング状バスによってモジュール間を接続する。そして、モジュールは、他のモジュールからリングバスを介して転送されてきたパケットと、モジュールが生成したパケットとの優先度を比較し、生成したいパケットの方が優先度が高い場合には、転送されてきたパケットを破棄する。そして、モジュールはモジュールが生成したパケットをリングバスへ送出する。モジュールは、転送されていたパケットを破棄したことを、応答転送バスを利用して、当該転送されてきたパケットの送信元のモジュールへ通知する。破棄されたことを知ったモジュールは、その破棄されたパケットを再送する。これにより、優先度に基づいてパケットが転送される。
【０００５】
特許文献１の方法のように、集中管理によって優先度に応じたデータの転送を実現する場合、モジュール数の増加に応じて制御回路が複雑化し回路規模も増大するという課題があった。また、特許文献２の方法では、全てのモジュールは、送信したパケットが他のモジュールによって破棄されていないことが判断できるまで、送信したパケットを全てコピーし、自モジュールで保持する必要がある。このため、モジュール数の増加に比例して送信したパケットのコピーを保持するバッファの容量が著しく増加するという課題があった。
【０００６】
これに対し、特許文献３には、リングバスで各モジュールを接続し、各モジュールで処理したデータパケットを次段のモジュールに転送して一連の処理を実行させる方法が記載されている。特許文献３の構成では、あるモジュールにおいて処理が終了した後、そのモジュールを識別する識別子を含めた信号をリングバス上に送出する。次の処理を行うモジュールは、直前の処理を実行するモジュールの識別子を予め記憶しておき、信号にその識別子が含まれている場合に処理を実行する。また、特許文献３では、モジュールが処理を保留した場合に、当該モジュールは処理を保留した旨を示す情報を信号に含めて転送する。モジュールは、自らが送信した信号で、後段のモジュールが処理を保留した旨の情報が含まれる信号を受信した場合、その直後の処理を実行するモジュールにこれ以上の情報を送信しても処理できないと判定し、情報送信を一時停止する。これにより、分散制御において、少ない記憶容量で効率的なパケットの転送を実現している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−１６７５６０号公報
【特許文献２】特開２００７−３１６６９９号公報
【特許文献３】特開２０１０−２１７９５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献３の方法では、あるモジュールは、自らの処理の直後に処理を実行するモジュールにおいて保留が発生したか否かを検出する。このため、さらに後段の処理を実行するモジュールにおいて処理が保留された場合、上段の処理を担当するモジュールでは、処理が実行され続けてしまうおそれがあった。また、この結果、保留パケットが増大し、デッドロックが発生するおそれがあるという課題があった。
【０００９】
本発明は、上述の課題に鑑みてなされたものであり、リングバスで接続された通信装置において、その通信装置に接続された処理装置の処理状況に基づいて適切な送信間隔制御を行う情報処理装置、情報処理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明による情報処理装置は、リング状にバス接続されている複数の通信手段を備え、前記通信手段の各々はそれぞれ所定の処理を実行する処理手段と対応し、前記通信手段の各々は対応する前記処理手段が処理を実行した後のデータを、続く処理を実行する処理手段に対応する他の通信手段へ前記バスを介して所定の送信間隔で送信し、予め定めた順序で前記処理手段の間のデータの受け渡し及び処理を実行する情報処理装置であって、前記複数の通信手段の少なくとも１つは、受信したデータについて、前記予め定めた順序において自通信手段に対応する処理手段よりも後段で処理を実行するべき処理手段の少なくとも１つにおいて処理が保留されたことを示す情報を検知する検知手段と、対応する処理手段が処理を実行した後のデータを最後に送信してから前記所定の送信間隔以上の間隔を置いて、前記対応する処理手段が処理を実行した後のデータを送信する送信手段と、前記検知手段によって前記受信したデータに対する処理が保留されたことを示す情報が検知された場合に、前記送信間隔を延長するように制御する制御手段と、を有し、前記制御手段は、前記検知手段が前記受信したデータに対する処理が保留されたことを示す情報を検知した頻度に応じた延長時間によって、前記送信間隔を延長し、前記制御手段は、ロードした値から０に向けてカウントダウンするタイマと、前記タイマが示す値に応じて出力が有効であるかを示す出力有効信号を出力する出力有効信号出力手段と、を有し、前記送信手段は、前記出力有効信号が有効な信号を示す場合に、対応する処理手段が処理を実行した後のデータを送信することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、リングバスでデータ転送を行う情報処理装置において、リングバス上で処理が行われずに滞留するデータの数を抑え、通信効率を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】データパス制御システムの構成を示す図。
【図２】モジュールの機能構成を示す図。
【図３】リングバス上に送出されるパケットの構成例を示す図。
【図４】送信制御部の構成例を示す図。
【図５】第１の実施形態の送信間隔制御部の構成を示す図。
【図６】第１の実施形態の送信間隔制御部の動作を示す図。
【図７】第２の実施形態の送信間隔制御部の構成を示す図。
【図８】第２の実施形態の送信間隔制御部の動作を示す図。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【００１４】
＜＜実施形態１＞＞
（システム構成）
図１を参照して、本発明の第１の実施形態に係るデータパス制御システムについて説明する。本実施形態に係るデータパス制御システムは、図１に示すように、複数のモジュール１０１と、各モジュールを接続するリングバス１０２により構成される。モジュール１０１は、リングバス１０２を介して受信したデータを処理するものであり、通信部１２０と、通信部１２０に対応するデータ処理部１０３とを備える。なお、本実施形態では、モジュール１０１−１は、対応するデータ処理部１０３の代わりに入出力部１４０を備える。リングバス１０２は、複数のモジュール１０１をリング状に接続するバスである。本実施形態においては、モジュール１０１の通信部１２０がリング状にバス接続され、入出力部１４０が入力するデータを一方向へ転送する。このデータパス制御システムは、データ処理部１０３間でデータを受け渡し、複数のデータ処理部１０３が順次処理を実行することによりシステム全体として情報処理装置として機能する。
【００１５】
（モジュールの機能構成）
図２には、図１におけるモジュール１０１の機能構成を表すブロック図を示す。ここで、モジュール１０１の通信部１２０は、ノードＩＤレジスタ１０４、パケット生成部１０５、パケット受信部１０６、待ち受けＩＤレジスタ１０７、受信制御部１０８、送信制御部１０９、パケット送信部１１０、ＩＤ判定部１１１を備える。各部は不図示のＣＰＵ等により制御される。
【００１６】
データ処理部１０３は、モジュール１０１ごとに割り当てられた所定のデータ処理を行う。ノードＩＤレジスタ１０４は、モジュール１０１が生成したパケットに付加するための、モジュール１０１が接続されるノードのＩＤ（ノードの識別情報）を設定する。パケット生成部１０５は、データ処理部１０３で処理されたデータから、リングバス１０２により転送するためのパケットを生成する。パケット受信部１０６は、リングバス１０２を介して他のモジュールからパケットを受信する。待ち受けＩＤレジスタ１０７は、データ処理部１０３で処理すべきデータに付されるＩＤを記憶する。このＩＤは、例えば、複数のモジュールで処理を実行する順序が定まっている場合、直前の処理を実行したモジュールが付加するノードＩＤである。
【００１７】
受信制御部１０８は、パケット受信部１０６が受信したパケットに含まれるデータが、自モジュールで処理すべきであり、かつ処理の実行が可能な場合は、当該データをデータ処理部１０３に入力する。また、受信制御部１０８は、パケット受信部１０６が受信したパケットに含まれるデータが、自モジュールで処理すべきでない場合、又は処理不能である場合には、当該パケットをそのまま送信制御部１０９に受け渡す。送信制御部１０９は、データ処理部１０３で処理されたデータを含むパケットと、受信制御部１０８から受け渡されたパケットとを、リングバス１０２に送信するための制御を行う。パケット送信部１１０は、リングバス１０２へパケットを送信する。
【００１８】
ＩＤ判定部１１１は、パケット受信部１０６で受信したパケットに含まれるＩＤと、ノードＩＤレジスタ１０４と待ち受けＩＤレジスタ１０７のそれぞれに記憶されているＩＤとを比較し、一致判定をする。またＩＤ判定部１１１は、各ＩＤ値から受信制御部１０８及び送信制御部１０９の制御情報を生成する。例えば、パケットに含まれるＩＤが待ち受けＩＤレジスタ１０７で記憶されたＩＤである場合、パケットに含まれるデータを自モジュールで処理すべきである。このため、ＩＤ判定部１１１は、受信制御部１０８に、そのデータを処理部へ受け渡すように指示する制御信号を生成する。また、例えば、パケットに含まれるＩＤが、ノードＩＤレジスタ１０４に記憶されたＩＤである場合、そのパケットは自モジュールで生成し、リングバス１０２を１周して戻ってきたと考えられる。このため、その旨を示す制御情報を送信制御部１０９へ送信し、適切に送信間隔制御を実行するようにする。
【００１９】
本実施形態におけるデータパス制御システムは、モジュール１０１がリング状にバス接続され、リング型のネットワークトポロジになっている。また、リングバス１０２に接続されるモジュール１０１の個数に制限はない。各モジュール１０１は、モジュール１０１間で共通のサイクルごとに次のモジュール１０１へと１つのパケットを転送することで、それぞれのモジュール１０１は並列にデータ転送を行う。また、待ち受けＩＤレジスタ１０７とノードＩＤレジスタ１０４の設定を適切に行うことで、データ処理のパスを構成し、入力データを複数の処理モジュールが要求する順番で処理させることができる。
【００２０】
（パケット構成）
続いて、図３を参照して、本実施形態に係るモジュール１０１間のデータ転送に用いるパケットについて説明する。パケットは、Ｖａｌｉｄフラグ２０１、ノードＩＤ２０２、データ２０３、及びＳｔａｌｌフラグ２０４を備える。Ｖａｌｉｄフラグ２０１は、パケットが有効か否かを示すフラグである。Ｖａｌｉｄフラグ２０１が有効でないパケットは、例えば空パケットである。このため、モジュール１０１は、Ｖａｌｉｄフラグ２０１が有効でない場合は、そのタイミングでパケットを送出できる。一方で、Ｖａｌｉｄフラグが有効である場合、そのパケットは処理、又は転送をする必要がある。このため、例えば、あるタイミングにおいて転送するべきパケットが存在する場合、そのパケットと同時に他のパケットを送ることはできない。
【００２１】
ノードＩＤ２０２は、パケットの送信元が付加する、接続ノードを示す識別子である。ノードＩＤ２０２には、パケットを送信するモジュールとパケットを受信するモジュールとの接続状態を識別可能な値（ノードＩＤ）が割り当てられている。本実施形態においては、例えば、各モジュール１０１は、自らの直前に処理を実行するモジュールが付加するノードＩＤを待ち受け、待ち受けＩＤレジスタ１０７に記憶しておく。そして、そのノードＩＤを含むパケットを受信すると、そのパケットに含まれるデータを処理する。データ２０３は、パケットが保持するデータである。Ｓｔａｌｌフラグ２０４は、パケットの保持するデータについて、処理を本来実行するはずのモジュールが、例えば他のデータを処理中であるなどの理由により処理を保留したことを示す。
【００２２】
（モジュールの動作）
続いて、データパス制御システムのモジュール間でのパケットの転送動作について説明する。まず、パケットの受信動作について説明する。ＩＤ判定部１１１は、パケット受信部１０６で受信したパケットに、自モジュール１０１のデータ処理部１０３において処理されるべきデータが含まれているか否かを判定する。あるいはパケットに含まれるデータが、他のモジュールにより処理されるべきか否かを判定する。判定は、受信パケットのノードＩＤ２０２と、待ち受けＩＤレジスタ１０７のＩＤ値とを比較することにより行う。例えば、待ち受けＩＤレジスタに処理すべき受信パケットのＩＤ値を格納し、ＩＤが一致する場合に、データ処理部１０３で処理を行う。
【００２３】
ＩＤ判定部１１１は、判定結果に基づいて、受信制御部１０８を制御する。受信制御部１０８は、対応するデータ処理部１０３で処理されるべきパケットについては、当該パケットに含まれるデータをデータ処理部１０３へ出力する。そして、それ以外のパケットについては、送信制御部１０９へ出力する。ただし、パケットが、データ処理部１０３において処理されるべきデータを含む場合であっても、例えば、すでに他のデータの処理中であり、さらなる処理を実行できないなど、データ処理部１０３において処理できない場合がある。受信制御部１０８は、この状態を検知すると、処理を保留したことを示すＳｔａｌｌフラグ２０４を「１」として、送信制御部１０９へとパケットを受け渡す。
【００２４】
次に、データ処理部１０３によって処理されたデータが、図３に示したパケットにより、次に処理されるべきモジュールへと送信される動作について説明する。パケット生成部１０５は、パケットを生成する。パケット生成部１０５は、パケットのデータ２０３にデータ処理部１０３で処理されたデータを格納し、ノードＩＤ２０２のフィールドにノードＩＤレジスタ１０４のＩＤ値を格納する。パケット生成部１０５は、さらに、パケットのＶａｌｉｄフラグ２０１を有効にする。送信制御部１０９は、パケット生成部１０５が生成したパケット、及び受信制御部１０８から直接入力されたパケットを、バッファを通してリングバス１０２へ送信するタイミングを制御する。
【００２５】
（送信制御部の構成例）
次に、図４を参照して、本実施形態に係る送信制御部１０９の構成例について説明する。本例における送信制御部１０９は、第一バッファ３０１、第二バッファ３０２、送信間隔制御部３０３、セレクタ３０４、及びタイミング調整用のＦＦ（フリップフロップ）３０５を備える。第一バッファ３０１は、受信制御部１０８からのパケットを保持する。より詳細には、第一バッファ３０１は、受信制御部１０８でスルーされたパケット、又は自ノードで処理されるデータを保持したパケットであったがデータ処理部１０３で処理できなかったパケットを格納する。第二バッファ３０２は、パケット生成部１０５で生成された、データ処理部１０３で処理されたデータを含むパケットを保持する。
【００２６】
送信間隔制御部３０３は、第二バッファ３０２からのパケットの送信間隔を制御する。セレクタ３０４は、送信するパケットを選択する。第一バッファ３０１、及び第二バッファ３０２に格納されたパケットのうち、どちらを送信するかは、セレクタ３０４が選択する。このとき、送信間隔制御部３０３は、第二バッファ３０２に格納されたパケットが送信可能か否かを決定する。送信間隔制御部３０３は内部にタイマを持ち、タイマはパケットが送信される度に所定の値に設定され、最小のパケット送信間隔を維持する。この送信間隔はレジスタ等により設定可能であり、後段の処理を実行するモジュール１０１における処理能力に応じた値を設定する。なお、ＦＦ３０５は、後述する出力有効信号４１０を第一バッファ３０１及び第二バッファ３０２の出力タイミングに合わせて１サイクル遅延させる。そして、セレクタ３０４はＦＦ３０５の出力により制御される。
【００２７】
本実施形態では、受信したパケットの送信元のモジュールと自モジュールとの処理順序関係をノードＩＤ２０２により判定する。また、この判定結果と、受信したパケットのＳｔａｌｌフラグ２０４を調べることにより、どのモジュールが処理保留状態であるかを検出する。この検出結果に応じて、第二バッファ３０２からの送信間隔を送信間隔制御部３０３により動的に制御し変更することで、パケットの転送効率を向上させることができる。具体的には、例えば、モジュール１０１は、自らより後段の処理を実行するモジュール１０１が処理保留状態であることを検出した場合、第二バッファ３０２に格納されたパケットの送出を一時停止する。そして、この一時停止する期間について、処理保留中のパケットの数に応じて変動させる。これにより、処理保留状態の有効なパケットでリングバス１０２が埋め尽くされることを防ぐと共に、少数の処理保留状態のパケットには、少しの待ち時間を与えることで、システム全体のスループットを向上させることができるようになる。
【００２８】
（送信間隔制御部の機能構成）
以下、図５を用いて、送信間隔制御部３０３の構成例について説明する。本例における送信間隔制御部３０３は、タイマ４０３、ロード制御部４０４、送信間隔選択部４０５、第一レジスタ４０６、第二レジスタ４０７、加算器４０８、リミッタ４０９を備える。
【００２９】
タイマ４０３は送信間隔を制御する。本実施形態では、例えば、ロードされた値から０に向けてカウントダウンするロード機能付きのダウンカウンタである。ロード制御部４０４はタイマ４０３への送信間隔のロードを制御する。ロード制御部４０４は、ＩＤ判定信号４０１、Ｓｔａｌｌフラグ４０２、タイマ値４１１を入力とし、出力有効信号４１０、ロード信号４１２を出力する。
【００３０】
ここで、ＩＤ判定信号４０１は、受信したパケットのＩＤがノードＩＤレジスタ１０４の値と等しい場合、値は「１」となる。受信したパケットのＩＤがノードＩＤレジスタ１０４の値と等しい場合とは、すなわち、受信パケットが過去に自モジュールで生成して送信したパケットである場合である。受信したパケットのＩＤがノードＩＤレジスタ１０４の値と等しくない場合、及び、受信したパケットのＩＤがノードＩＤレジスタ１０４の値と等しくてもＶａｌｉｄフラグ２０１が無効を示す場合は、ＩＤ判定信号４０１の値は「０」となる。ＩＤ判定信号４０１は、ＩＤ判定部１１１から入力される。
【００３１】
Ｓｔａｌｌフラグ４０２は受信制御部１０８から入力される。Ｓｔａｌｌフラグ４０２は、例えば、「１」の時、受信したパケットの処理を保留したことを示し、「０」の時、処理を保留していないことを示す。すなわち、ＩＤ判定信号が「１」かつＳｔａｌｌフラグが「１」である場合は、自モジュールのデータ処理部１０３において処理した後のデータを含む信号を送信したが、他のモジュールで直後の処理が保留され、信号が戻ってきたことを示す。タイマ値４１１は、タイマ４０３の値を示す。
【００３２】
出力有効信号４１０は、送信間隔制御部３０３が第二バッファ３０２の出力間隔を制御するための信号である。出力有効信号４１０は、タイマ値４１１が「０」で、かつ、ＩＤ判定信号４０１とＳｔａｌｌフラグ４０２が共に「１」でない場合、有効を示す値「１」となり、その他の場合は「０」となる。第二バッファ３０２とセレクタ３０４は、「１」を示す出力有効信号４１０を受け取ると、第二バッファに格納された信号をリングバス１０２上へ送出するようにする。ただし、セレクタ３０４には出力有効信号４１０がＦＦ３０５を介して伝搬されるため、１サイクル遅れて、第二バッファ３０２の出力が選択される。ロード信号４１２は、ロード制御部４０４が、タイマ４０３における出力間隔のロードのタイミングを制御する信号である。ロード信号４１２は、タイマ値４１１が「０」の時、又はＩＤ判定信号４０１が「１」かつＳｔａｌｌフラグ４０２が「１」の時、有効値「１」となり、それ以外の場合は「０」となる。すなわち、タイマ４０３が満了した時と、自モジュールのデータ処理部１０３で処理した後のデータが他モジュールで処理を保留されて戻ってきた場合に、タイマ４０３に送信間隔をロードさせる。
【００３３】
送信間隔選択部４０５はタイマ４０３へロードする送信間隔を選択する。送信間隔選択部４０５は、ＩＤ判定信号４０１が「１」かつＳｔａｌｌフラグ４０２が「１」の時、後述するリミッタ４０９の出力を選択する。それ以外の場合は後述する第一レジスタ４０６の値を選択する。タイマ４０３は、ロード信号４１２が「１」の場合、送信間隔選択部４０５で選択された値をロードし、カウントダウンを実行する。
【００３４】
第一レジスタ４０６は最小のパケット送信間隔を確保する所定の設定値を格納する。第二レジスタ４０７は動的に送信間隔を制御するための被加算値を格納する。加算器４０８はタイマ値４１１と第二レジスタ４０７の被加算値を加算する。リミッタ４０９は加算器４０８の出力値を、所定値以下に制限する。ここで、所定値は、例えばリングバス１０２の一周分に相当する期間である。
【００３５】
Ｓｔａｌｌフラグ４０２が「１」、かつＩＤ判定信号４０１が「１」である場合、そのパケットは、そのパケットを受信したモジュール１０１が送出し、続いて処理を実行する他のモジュール１０１で処理を保留されて戻ってきたことを示す。このため、そのような状態を検知すると、ロード制御部４０４は、第二バッファ３０２からのデータ送出を遅らせるように、タイマを制御する。具体的には、第一レジスタ４０６の値より大きいリミッタ４０９の値をタイマ４０３にロードする。さらに、ＩＤ判定信号４０１とＳｔａｌｌフラグ４０２が共に「１」であるパケットを多数検知すると、それに応じてカウンタにロードする値を加算器４０８により、増加させる。ＩＤ判定信号４０１とＳｔａｌｌフラグ４０２が共に「１」であるパケットの数に応じて適切な待ち時間を設定することが可能となる。さらに、リミッタ４０９を用いることにより、待ち時間を一定の時間以内に抑えることができる。これにより、モジュールが、他のモジュールにおける処理保留状態が解消された後であっても待ち続けることを防ぎ、システム全体のスループットの低下を防ぐことができる。
【００３６】
（送信間隔制御部の動作）
次に、図６を用いて、送信間隔制御部３０３の動作を説明する。本実施形態では、図１のモジュール数がｎ＝１６の場合に関して説明する。また、リミッタ４０９は加算器４０８の出力値をリングバス１０２の一周分に相当する１６以下に制限する。
【００３７】
ここでは説明を簡単にするため、リングバス１０２の状態は考慮しない。すなわち、リングバス１０２が有効パケットで埋め尽くされているなどの事情はないものとし、タイマ４０３が「０」の時に第二バッファ３０２からパケットを送信することができるものとする。なお、下記では説明しないが、リングバス１０２上の送信スロットが空でない場合、すなわち、受信パケットのＶａｌｉｄフラグ２０１が有効であり、その受信パケットを転送する必要がある場合は、第二バッファ３０２からパケットの送信ができない。これに限らず、パケットの送信ができない場合は、タイマ４０３は第一レジスタ４０６の値のロードを保留し、タイマ４０３は「０」を維持する。ただし、Ｓｔａｌｌフラグ４０２が「１」かつＩＤ判定信号４０１が「１」の場合は、タイマ４０３が上記のように「０」を維持する状態であっても、送信間隔選択部４０５により、リミッタ４０９の値がロードされる。
【００３８】
まず初期設定として、不図示のＣＰＵ等から、第一レジスタ４０６と第二レジスタ４０７の値が設定される。本実施形態では、一例として、第一レジスタ４０６に「１」を、第二レジスタ４０７に「３」を設定する。また、サイクル０におけるＩＤ判定信号４０１、Ｓｔａｌｌフラグ４０２、タイマ値４１１の値をそれぞれ「０」、「０」、「１」とする。また、ＩＤ判定信号４０１、及びＳｔａｌｌフラグ４０２は、図６に示すように推移するものとする。
【００３９】
サイクル０ではＩＤ判定信号４０１及びＳｔａｌｌフラグ４０２が共に「０」である。すなわち、受信したパケットは、自モジュールから送信したものでなく、また、処理が保留されてもいない。ここで、タイマ値４１１が「１」であるため、タイマのロードは不要であり、ロード信号４１２は「０」となる。このため、タイマ４０３は、送信間隔選択部４０５が選択した値をロードすることなく、ダウンカウントし、次のサイクル１で「０」となる。また、出力有効信号４１０は、タイマ値４１１が「０」でないため、無効を示す「０」となる。なお、加算器４０８の出力はタイマ値４１１（「１」）と第二レジスタ４０７（「３」）を加算した「４」となる。リミッタ４０９の出力はリミット値１６に達していないため、加算器４０８の値がそのまま出力され「４」となる。送信間隔選択部４０５は、ＩＤ判定信号４０１とＳｔａｌｌフラグ４０２が共に「１」でないため、第一レジスタ４０６に格納された値「１」を選択する。つまり、このサイクルでは、モジュール１０１が自ら送信したパケットが他のモジュールで保留されて戻ってきたものでなく、かつ、タイマ値が「０」でないため、タイマへの値のロードや、第二バッファ３０２からのパケットの出力は行わない。
【００４０】
サイクル１では、ＩＤ判定信号４０１が「１」、Ｓｔａｌｌフラグ４０２が「０」である。すなわち、モジュール１０１が自ら送信したパケットを受信した状態であるが、他のモジュールにより処理の保留はされていないことを示す。この場合は、自ら送信したパケットが必要のないものであるため、パケットを消去し空パケットにする。なお、タイマ値４１１は「０」であるため、ＩＤ判定信号４０１、Ｓｔａｌｌフラグ４０２の値によらず、ロード信号４１２は「１」となり、送信間隔選択部４０５で選択された値が、次のサイクルでタイマ４０３にロードされる。送信間隔選択部４０５は、ＩＤ判定信号は「１」であるが、Ｓｔａｌｌフラグ４０２が「１」でないため、第一レジスタ４０６に格納された値「１」を選択する。なお、加算器４０８の出力はタイマ値４１１（「０」）に第二レジスタ４０７（「３」）の値を加えた３となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。また、出力有効信号４１０はタイマ値４１１が「０」であるため「１」となる。つまり、このサイクルでは、タイマ値が「０」で、かつ、ＩＤ判定信号４０１とＳｔａｌｌフラグ４０２が共に「１」でないため、第一レジスタ４０６に格納された所定の設定値をタイマにロードし、第二バッファ３０２からのパケットの出力を行う。
【００４１】
サイクル２ではサイクル０と同様、ＩＤ判定信号４０１及びＳｔａｌｌフラグ４０２が共に「０」である。このため、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「０」、「０」、「４」、「４」、「１」となる。またタイマ４０３は１からダウンカウントして次のサイクル３で「０」となる。
【００４２】
サイクル３ではＩＤ判定信号４０１が「０」であり、Ｓｔａｌｌフラグ４０２が「０」である。しかし、タイマ値４１１が「０」のため、ロード信号４１２は「１」となり、次のサイクル４でタイマ４０３に値がロードされる。また、出力有効信号４１０は、タイマ値４１１が「０」で、かつ、ＩＤ判定信号４０１とＳｔａｌｌフラグが共に「１」でないため、「１」となる。なお、加算器４０８の出力はタイマ値４１１（「０」）に第二レジスタ４０７（「３」）の値を加えた３となり、リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。送信間隔選択部４０５は、Ｓｔａｌｌフラグ４０２、ＩＤ判定信号４０１共に「０」であるため、第一レジスタ４０６の値を選択し「１」を出力する。
【００４３】
サイクル４ではサイクル０と同様、ＩＤ判定信号４０１及びＳｔａｌｌフラグ４０２が共に「０」である。このため、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「０」、「０」、「４」、「４」、「１」となる。またタイマ４０３は１からダウンカウントして次のサイクル５で「０」となる。
【００４４】
サイクル５ではＩＤ判定信号４０１が「１」、Ｓｔａｌｌフラグ４０２が「１」である。すなわち、モジュール１０１が出力したパケットが、続いて処理を実行すべき他のモジュール１０１により処理を保留され、戻ってきた状態である。このため、ロード信号４１２は「１」となり、次のサイクル６でタイマ４０３に送信間隔選択部４０５で選択した値をロードする。なお、加算器４０８の出力はタイマ値４１１（「０」）に第二レジスタ４０７（「３」）の値を加えた３となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。送信間隔選択部４０５は、ＩＤ判定信号４０１が「１」かつＳｔａｌｌフラグ４０２が「１」であるため、リミッタ４０９の値を選択し「３」を出力する。また、出力有効信号４１０はタイマ値４１１が「０」であるが、ＩＤ判定信号４０１とＳｔａｌｌフラグ４０２が共に「１」であるため「０」となる。つまり、このサイクルでは、受信パケットが自モジュール出力のもので、続いて処理を実行すべきモジュールにて保留されたことを検知したため、第一レジスタ４０６の値より長い値「３」を次のサイクル６でタイマにロードし、送信間隔を延長する。なお、カウンタ値が「０」であるが、受信した保留パケットは有効であり転送する必要があるため、第二バッファ３０２からのパケットの出力は行われない。
【００４５】
サイクル６〜８ではサイクル０と同様、ＩＤ判定信号４０１及びＳｔａｌｌフラグ４０２が共に「０」である。このため、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「０」、「０」、「６」〜「４」、「６」〜「４」、「１」となる。またタイマ４０３は「３」からダウンカウントしていき、次のサイクル９で「０」となる。
【００４６】
サイクル９ではサイクル３と同様に、ＩＤ判定信号４０１と、Ｓｔａｌｌフラグ４０２が共に「０」であり、タイマ値４１１が「０」である。このため、ロード信号４１２は「１」となり、次のサイクル１０でタイマ４０３に値がロードされる。また、出力有効信号４１０は「１」となる。なお、加算器４０８の出力はタイマ値４１１（「０」）に第二レジスタ４０７（「３」）の値を加え、３となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。送信間隔選択部４０５は、Ｓｔａｌｌフラグ４０２が「１」でないため、第一レジスタ４０６を選択し「１」を出力する。つまり本サイクルでは、受信されたパケットが保留されたものでない。ただし、タイマ値４１１が「０」のため、第一レジスタ４０６に格納された所定の設定値をタイマにロードし、第二バッファ３０２からのパケットの出力を行う。
【００４７】
サイクル１０ではサイクル０と同様、ＩＤ判定信号４０１及びＳｔａｌｌフラグ４０２が共に「０」である。このため、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「０」、「０」、「４」、「４」、「１」となる。またタイマ４０３は１からダウンカウントして次のサイクル１１で「０」となる。
【００４８】
サイクル１１ではサイクル５と同様、ＩＤ判定信号４０１が「１」、Ｓｔａｌｌフラグ４０２が「１」である。このため、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「１」、「０」、「３」、「３」、「３」となる。また、次のサイクル１２でタイマ４０３に「３」がロードされる。
【００４９】
サイクル１２ではサイクル０と同様、ＩＤ判定信号４０１及びＳｔａｌｌフラグ４０２が共に「０」である。このため、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「０」、「０」、「６」、「６」、「１」となる。またタイマ４０３は３からダウンカウントして次のサイクル１３で「２」となる。
【００５０】
サイクル１３ではＩＤ判定信号４０１が「１」、Ｓｔａｌｌフラグ４０２が「１」であるため、ロード信号４１２は「１」となり、次のサイクル１４でタイマ４０３に値がロードされる。なお、加算器４０８の出力はタイマ値４１１（「２」）に第二レジスタ４０７（「３」）の値を加えた５となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「５」となる。送信間隔選択部４０５は、ＩＤ判定信号４０１が「１」かつＳｔａｌｌフラグ４０２が「１」であるため、リミッタ４０９を選択し「５」を出力する。また、出力有効信号４１０はタイマ値４１１が「０」でないため、「０」となる。つまり、このサイクルでは、サイクル１１に引き続き、モジュール１０１は、自ら出力したパケットが続いて処理すべきモジュールにて保留され、戻ってきたものを受信している。ＩＤ判定信号４０１とＳｔａｌｌフラグ４０２が共に「１」のパケットを短期的に複数受信するということは、続いて処理すべきモジュールにおいて、多くの処理が滞っていると考えられる。このため、タイマ４０３に、より長い時間をロードして、処理の保留を解消すべきである。このため、第二レジスタ４０７に格納された動的に送信間隔を制御するための被加算値とタイマ値との加算結果「５」を次のサイクル１４でタイマにロードし、送信間隔をさらに伸ばす。
【００５１】
サイクル１４〜１６はサイクル１３と同様であり、順次送信間隔を延長する。ロード信号４１２、出力有効信号４１０の出力はそれぞれ、「１」、「０」であり、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５はそれぞれ「８」「１１」「１４」と変化する。またタイマ４０３には、サイクルごとにリミッタ４０９の出力がロードされ、「５」、「８」、「１１」と第二レジスタ４０７の値「３」ずつロードされる間隔が加算されていき、サイクル１７で「１４」となる。つまり、これらのサイクルでは、モジュール１０１が送信したパケットが、続いて処理すべき他のモジュール１０１において複数保留され、保留パケットの発生頻度が高い状態である。よって、第二レジスタ４０７に格納された被加算値とタイマ値との加算結果をタイマにロードし、送信間隔を段階的に延長する。
【００５２】
サイクル１７ではサイクル１３と同様であるが、加算器４０８の出力が「１６」より大きい「１７」であるため、リミッタ４０９は、値を「１６」に制限する。すなわち、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「１」、「０」、「１７」、「１６」、「１６」となる。また、次のサイクル１８でタイマ４０３に「１６」がロードされる。
【００５３】
サイクル１８〜３３ではサイクル０とサイクル０と同様、ＩＤ判定信号４０１及びＳｔａｌｌフラグ４０２が共に「０」である。このため、ロード信号４１２、出力有効信号４１０、送信間隔選択部４０５の出力はそれぞれ「０」、「０」、「１」である。また、加算器４０８の出力は「１９」〜「４」となり、リミッタ４０９の出力は、加算器４０８の出力が１６以上の場合は「１６」であり、その他の場合は加算器４０８の出力と同一値となる。またタイマ４０３は「１６」からダウンカウントしていき、サイクル３４で「０」となる。つまり、これらのサイクルでは、モジュール１０１が出力したパケットが、続いて処理すべき他のモジュール１０１で処理を保留されて戻ってきていないため、タイマ値４１１が「０」になるまでダウンカウントする。これにより、モジュール１０１は、タイマ値４１１が「０」となるまで第二バッファ３０２からのパケットの出力を停止し、続いて処理を実行する他のモジュール１０１における処理の保留が解消するのを待つことになる。これにより、処理を保留された有効なパケットがリングバス１０２を埋め尽くすことによるデッドロック、及び効率の低下を回避することが可能となる。
【００５４】
サイクル３４ではサイクル３と同条件であり、ロード信号４１２、出力有効信号４１０、加算器４０８の出力、リミッタ４０９の出力、送信間隔選択部４０５の出力はそれぞれ、「１」、「１」、「３」、「３」、「１」となる。また、次のサイクル３５でタイマ４０３に「１」がロードされる。
【００５５】
以上説明したように、モジュール１０１が、自らが出力したパケットが、続いて処理すべき他のモジュール１０１で処理を保留されて戻ってきたことを検知すると、その頻度によって、動的に第二バッファ３０２からのパケットの送信間隔を制御する。また、それ以外のパケットについては、タイマ４０３が「０」になる度に最小のパケット送信間隔の所定の値をロードし、最小のパケット出力間隔を保証する。これらの制御により、続いて処理を実行する他のモジュール１０１がパケットを受け付け可能な間隔でのパケット出力が可能となる。また、これにより、続いて処理を実行する他のモジュール１０１からの保留パケットの発生を抑制し、パケットの転送効率を向上させることが可能となる。
【００５６】
＜＜実施形態２＞＞
次に、本発明の第２の実施形態に係るデータパス制御システムについて説明する。図１から４に係る構成は第１の実施形態と同様のため、説明を省略する。以下、図７を用いて、本実施形態に係る送信間隔制御部３０３の構成について説明する。なお、図７において、図５と同一の機能を有するブロックは同一の番号を付し、説明を省略する。
【００５７】
（送信間隔制御部の第二の構成例）
ＩＤ判定信号５０１は、図５の例と同様、ＩＤ判定部１１１から入力される。受信したパケットのノードＩＤ２０２がノードＩＤレジスタ１０４の値と等しい、すなわち、自モジュールが出力したことを示す場合、値を「０１」とする。なお、「＊＊」は２ビットの値＊＊を示す。また、受信したパケットのノードＩＤ２０２が自モジュールより後に処理されたことを示す場合は「１０」となる。それ以外の場合は値「００」である。なお、ここでは処理の上流側より昇順にノードＩＤを付すこととし、自モジュールより後段に位置するか否かの判定はパケットのノードＩＤ２０２とノードＩＤレジスタ１０４に記憶された値との大小比較によって行う。すなわち、受信パケットのノードＩＤ２０２が自モジュールのノードＩＤレジスタ１０４の値よりも大きい場合、後段のモジュールで処理された後に送信されたパケットと判断する。また、ノードＩＤ２０２の値によらず、Ｖａｌｉｄフラグ２０１が無効を示す場合は「００」を出力する。
【００５８】
５０４はタイマ４０３へ送信間隔のロードを制御するためのロード制御部であり、ＩＤ判定信号５０１、Ｓｔａｌｌフラグ４０２、タイマ値４１１が入力され、出力有効信号５１０、ロード信号５１２を出力する。ここでは説明を簡単にするため、タイマ４０３が「０」の時に、第二バッファ３０２からパケットの送信ができるものとする。
【００５９】
送信間隔選択部５０５は、ＩＤ判定信号５０１が「０１」かつＳｔａｌｌフラグ４０２が「１」の時、リミッタ４０９の出力をタイマ４０３へロードする送信間隔として選択する。また、送信間隔選択部５０５は、ＩＤ判定信号５０１が「１０」かつＳｔａｌｌフラグ４０２が「１」の時、後述する第二リミッタ５０９の出力を選択する。それ以外の場合は第一レジスタ４０６の値を選択する。すなわち、実施形態１と異なり、モジュール１０１は、自らの処理より後に処理を実行する他のモジュール１０１において処理が保留された場合にも、第二バッファ３０２からのパケットの送信間隔を延長する。すなわち、モジュール１０１の直後の処理を実行する他のモジュール１０１のみでなく、そのさらに後に処理を実行する他のモジュールにおける処理の保留が解消するまで、送信を待つこととなる。これにより、デッドロックとなる確率をさらに低減し、システム全体のスループットを向上させることができる。
【００６０】
第三レジスタ５０７は自モジュールより後に処理されるモジュールからの保留パケットを検知した時、動的に送信間隔を制御するための被加算値を設定するレジスタである。ここで、第二レジスタ４０７には第一の所定値を、第三レジスタ５０７には、第一の所定値と異なる第二の所定値を格納しておく。なお、第一の所定値は、自モジュールの直後の処理を実行するモジュールで処理が保留されているので、第二の所定値より大きい値であることが望ましい。逆に第二の所定値は、自モジュールの直後の処理よりさらに後の処理を実行するモジュールにおいて処理が保留されたことを検知した場合にパケットの送信間隔を延長するものである。したがって、上流のモジュールでは、第二の所定値を用いて送信間隔を延長する頻度が下流のモジュールに比べて高くなる。このため、個々のモジュールで延長する送信間隔の量は大きくなくても良く、小さい値でよい。第二加算器５０８は、加算器４０８と同様に、タイマ値４１１と第三レジスタ５０７の値を加算する。第二リミッタ５０９は、リミッタ４０９と同様に、第二加算器５０８の出力値を所定値以下に制限する。所定値は、例えばリングバス１０２の一周分に相当する期間である。出力有効信号５１０は、ロード制御部５０４から第二バッファ３０２へ出力間隔を制御するために出力される信号である。出力有効信号５１０は、タイマ値４１１が「０」の場合で、ＩＤ判定信号５０１が「０１」又は「１０」でＳｔａｌｌフラグ４０２が「１」である場合以外の時、有効を示す値「１」であり、そのほかの場合は「０」である。すなわち、タイマ値４１１が「０」であり、かつ、Ｓｔａｌｌフラグ４０２が１であってもＩＤ判定信号５０１が「００」であるような場合は、出力有効信号５１０は「１」となる。一方、タイマ値４１１が「０」であっても、Ｓｔａｌｌフラグ４０２が１でＩＤ判定信号５０１が「０１」や「１０」であるような場合は、出力有効信号５１０は「０」となる。ロード信号５１２は、ロード制御部５０４からタイマ４０３へ、出力間隔をロードするタイミングを制御する信号である。ロード信号５１２は、タイマ値４１１が「０」、又はＳｔａｌｌフラグ４０２が「１」、かつＩＤ判定信号５０１が「０１」若しくは「１０」の時、有効値「１」となる。それ以外の場合は「０」となる。
【００６１】
（送信間隔制御部の第二の動作例）
次に図８を用いて、本実施形態に係る送信間隔制御部３０３の動作を説明する。本実施形態では、実施形態１と同様に、図１のモジュール数ｎが１６である場合に関して説明する。よって、リミッタ４０９及び５０９は、加算器４０８及び５０８の出力値をリングバスの一周分に相当する１６により制限する。
【００６２】
まず初期設定として、図示していないＣＰＵ等から第一レジスタ４０６、４０７及び５０７の値が設定される。本実施形態では一例として、第一レジスタ４０６に「１」を、第二レジスタ４０７に「３」、第三レジスタ５０７に「１」を設定する。また、サイクル０におけるＩＤ判定信号５０１、Ｓｔａｌｌフラグ４０２、タイマ４０３の値をそれぞれ、「００」、「０」、「１」とする。
【００６３】
サイクル０ではＩＤ判定信号５０１は「００」及びＳｔａｌｌフラグ４０２が「０」であるため、ロード信号５１２は「０」であり、タイマ４０３は１からダウンカウントして次のサイクル１で「０」となる。また、出力有効信号５１０はタイマ値４１１が「０」でないため、「０」となる。なお、加算器４０８の出力はタイマ値４１１「１」に第二レジスタ４０７の値「３」を加え、「４」となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「４」となる。また、第二加算器５０８の出力は、タイマ値４１１「１」に第三レジスタ５０７の値「１」を加え「２」となる。第二リミッタ５０９の出力はリミット値「１６」に達していないため第二加算器５０８の値がそのまま出力され「２」となる。送信間隔選択部５０５は、ＩＤ判定信号５０１が「０１」又は「１０」でなく、また、Ｓｔａｌｌフラグ４０２が「１」でないため、第一レジスタ４０６を選択し「１」を出力する。つまり本サイクルでは、受信パケットが保留されたものでもなくかつ、タイマ値が「０」でないため、タイマへの値のロードや、第二バッファ３０２からのパケットの出力は行わない。
【００６４】
サイクル１ではＩＤ判定信号５０１が「０１」、Ｓｔａｌｌフラグ４０２が「０」である。すなわち、モジュール１０１は、自らが出力したパケットを受信しているが、処理は保留されていない。一方、タイマ値４１１は「０」である。このため、ロード信号５１２は「１」となり、次のサイクル２でタイマ４０３に値がロードされる。また、出力有効信号５１０はタイマ値４１１が「０」であって、かつ、Ｓｔａｌｌフラグ４０２が「１」及びＩＤ判定信号５０１が「０１」又は「１０」の場合に該当しないため、「１」となる。なお、加算器４０８の出力はタイマ値４１１「０」に第二レジスタ４０７の値「３」を加え「３」となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。また、第二加算器５０８の出力はタイマ値４１１「０」に第三レジスタ５０７の値「１」を加え「１」となる。第二リミッタ５０９の出力はリミット値１６に達していないため第二加算器５０８の値がそのまま出力され「１」となる。送信間隔選択部５０５は、Ｓｔａｌｌフラグ４０２が「１」でないため、第一レジスタ４０６の値「１」を選択する。つまり、このサイクルでは、受信パケットが保留されたものでないが、タイマ値が「０」のため、第一レジスタ４０６に格納された所定の設定値をタイマ４０３にロードし、第二バッファ３０２からのパケットの出力を行う。
【００６５】
サイクル２ではＩＤ判定信号５０１が「１０」である以外は、サイクル０と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「０」、「０」、「４」、「４」、「２」、「２」、「１」となる。またタイマ４０３は１からダウンカウントして次のサイクル３で「０」となる。
【００６６】
サイクル３ではＩＤ判定信号５０１が「００」、Ｓｔａｌｌフラグ４０２が「０」である。しかし、タイマ値４１１が「０」であるため、ロード信号５１２は「１」となり、次のサイクル４でタイマ４０３に値がロードされる。また、出力有効信号５１０はタイマ値４１１が「０」であって、かつ、Ｓｔａｌｌフラグ４０２が「１」及びＩＤ判定信号５０１が「０１」又は「１０」の場合に該当しないため、「１」となる。なお、加算器４０８の出力はタイマ値４１１「０」に第二レジスタ４０７の値「３」を加え「３」となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。また、第二加算器５０８の出力はタイマ値４１１「０」に第三レジスタ５０７の値「１」を加え１となる。第二リミッタ５０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「１」となる。送信間隔選択部５０５は、Ｓｔａｌｌフラグ４０２が「１」であるがＩＤ判定信号５０１が「００」であるため、第一レジスタ４０６の値「１」を選択する。つまり、このサイクルでは、受信パケットが保留されたものであるが、自モジュール以降の処理パス上のモジュールが出力したパケットが保留されたわけではない。ただし、タイマ４０３が「０」のため、第一レジスタ４０６に格納された最小のパケット送信間隔を保証する所定の設定値をタイマにロードし、第二バッファ３０２からのパケットの出力を行う。
【００６７】
サイクル４はサイクル０と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「０」、「０」、「４」、「４」、「２」、「２」、「１」となる。またタイマ４０３は１からダウンカウントして次のサイクル５で「０」となる。
【００６８】
サイクル５ではＩＤ判定信号４０１が「０１」、Ｓｔａｌｌフラグ４０２が「１」である。また、タイマ値４１１が「０」であるため、ロード信号５１２は「１」となり、次のサイクル６でタイマ４０３に値がロードされる。また、出力有効信号５１０はタイマ値４１１が「０」であるが、かつ、Ｓｔａｌｌフラグ４０２が「１」及びＩＤ判定信号５０１が「０１」又は「１０」の場合に該当するため、「０」となる。なお、加算器４０８の出力はタイマ値４１１「０」に第二レジスタ４０７の値「３」を加え「３」となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。また、第二加算器５０８の出力はタイマ値４１１「０」に第三レジスタ５０７の値「１」を加え「１」となり、第二リミッタ５０９の出力はリミット値１６に達していないため第二加算器５０８の値がそのまま出力され「１」となる。送信間隔選択部５０５は、ＩＤ判定信号５０１が「０１」かつＳｔａｌｌフラグ４０２が「１」であるため、リミッタ４０９を選択し「３」を出力する。つまり、このサイクルでは、モジュール１０１が、自ら送信したパケットが、続いて処理を実行すべきモジュール１０１にて保留され戻ってきている。よって、第二レジスタ４０７に格納された被加算値とタイマ値との加算結果「３」を次のサイクル６でタイマにロードし、送信間隔を伸ばす。なお、タイマ値４１１が「０」であるが上記保留パケットがリングバス１０２上にあるため第二バッファ３０２からのパケットの出力は行われない。
【００６９】
サイクル６〜８はサイクル０と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力はそれぞれ、「０」、「０」、「６」〜「４」、「６」〜「４」である。また、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「４」〜「２」、「４」〜「２」、「１」となる。さらにタイマ４０３は「３」からダウンカウントしていき、次のサイクル９で「０」となる。
【００７０】
サイクル９はサイクル３と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力はそれぞれ、「１」、「１」、「３」、「３」である。また、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力は、それぞれ「１」、「１」、「１」となる。また次のサイクル１０で第一レジスタ４０６の設定値をタイマにロードし、第二バッファ３０２からのパケットの出力を行う。
【００７１】
サイクル１０はサイクル０と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「０」、「０」、「４」、「４」、「２」、「２」、「１」となる。またタイマ４０３は１からダウンカウントして次のサイクル１１で「０」となる。
【００７２】
サイクル１１ではＩＤ判定信号４０１が「１０」、Ｓｔａｌｌフラグ４０２が「１」である。さらに、タイマ値４１１が「０」であるため、ロード信号５１２は「１」となり、次のサイクル１２でタイマ４０３に値がロードされる。また、出力有効信号５１０はタイマ値４１１が「０」であるが、かつ、Ｓｔａｌｌフラグ４０２が「１」及びＩＤ判定信号５０１が「１０」の場合であるため、「０」となる。なお、加算器４０８の出力はタイマ値４１１「０」に第二レジスタ４０７の値「３」を加え「３」となる。リミッタ４０９の出力はリミット値１６に達していないため加算器４０８の値がそのまま出力され「３」となる。また、第二加算器５０８の出力はタイマ値４１１「０」に第三レジスタ５０７「１」を加え「１」となり、第二リミッタ５０９の出力はリミット値１６に達していないため第二加算器５０８の値がそのまま出力され「１」となる。送信間隔選択部５０５は、ＩＤ判定信号５０１が「１０」かつＳｔａｌｌフラグ４０２が「１」であるため、第二リミッタ５０９の値を選択し「１」を出力する。つまり本サイクルでは、モジュール１０１は、自らより後に処理を実行する他のモジュール１０１において処理を保留したパケットを受信している。よって、第三レジスタ５０７に格納された被加算値とタイマ値との加算結果「１」を次のサイクル１２でタイマにロードし、送信間隔を動的に伸ばす。なお、タイマ値４１１が「０」であるが、保留パケットがリングバス１０２上にあるため、第二バッファ３０２からのパケットの出力は行われない。
【００７３】
サイクル１２はサイクル０と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「０」、「０」、「４」、「４」、「２」、「２」、「１」となる。またタイマ４０３は１からダウンカウントして次のサイクル１３で「０」となる。
【００７４】
サイクル１３はサイクル３と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「１」、「１」、「３」、「３」、「１」、「１」、「１」となる。また次のサイクル１４で第一レジスタ４０６の設定値をタイマにロードし、第二バッファ３０２からのパケットの出力を行う。
【００７５】
サイクル１４〜１５はサイクル５と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力はそれぞれ、「１」、「０」、「４」〜「７」、「４」〜「７」である。また、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「２」〜「５」、「２」〜「５」、「４」〜「７」となる。さらにタイマ４０３は毎サイクル、リミッタ４０９の出力がロードされ、「１」から「４」、「４」から「７」へと、第二レジスタ４０７の値「３」ずつ送信間隔が伸びる。つまりこれらのサイクルでは、モジュール１０１が出力し、次の処理を実行すべきモジュール１０１で保留され戻ってきたパケットを受信している。このため、第二レジスタ４０７に格納された被加算値とタイマ値との加算結果をタイマにロードし、送信間隔を動的に延長する。
【００７６】
サイクル１６〜１７はサイクル１１と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力の出力はそれぞれ、「１」、「０」、「１０」〜「１１」、「１０」〜「１１」となる。また、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５「８」〜「９」、「８」〜「９」、「８」〜「９」となる。さらに、タイマ４０３は毎サイクル、第二リミッタ５０９の出力がロードされ、「７」から「８」、「８」から「９」へと第三レジスタ５０７の値「１」ずつ送信間隔が延長される。つまり、これらのサイクルでは、モジュール１０１より後に処理を実行する他のモジュール１０１が出力し、保留されたパケットを受信している。よって、第三レジスタ５０７に格納された被加算値とタイマ値との加算結果をタイマにロードし、送信間隔を動的に延長する。
【００７７】
サイクル１８〜１９はサイクル５と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力の出力はそれぞれ、「１」、「０」、「１２」〜「１５」、「１２」〜「１５」となる。また、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「１０」〜「１３」、「１０」〜「１３」、「１２」〜「１５」となる。さらに、毎サイクル、タイマ４０３にリミッタ４０９の出力がロードされ、「９」から「１２」、「１２」から「１５」へと第二レジスタ４０７の値「３」ずつ送信間隔が延長される。
【００７８】
サイクル２０ではサイクル５と同条件であるが、加算器４０８の出力が「１６」より大きいためリミッタ４０９で「１６」に制限されて出力される。すなわち、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「１８」、「１６」、「１６」、「１６」、「１６」となる。なお、ロード信号５１２、出力有効信号５１０は「１」、「０」である。また、次のサイクル２１でタイマ４０３に「１６」がロードされる。
【００７９】
サイクル２１はサイクル１１と同様であるが、第二加算器５０８の出力が「１６」より大きいため第二リミッタ５０９で「１６」に制限されて出力される。すなわち、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「１９」、「１６」、「１７」、「１６」、「１６」となる。ロード信号５１２、出力有効信号５１０は「１」、「０」となる。また、次のサイクル２２でタイマ４０３に「１６」がロードされる。
【００８０】
サイクル２２〜３７はサイクル０と同様である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力の出力はそれぞれ、「０」、「０」、「１９」〜「４」、「１６」 〜「４」となる。また、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「１７」〜「２」、「１６」〜「２」、「１」となる。さらに、タイマ４０３は「１６」からダウンカウントしていき、サイクル３８で「０」となる。つまりこれらのサイクルでは、他のモジュールで処理を保留されたパケットを受信していないため、タイマをダウンカウントしていき、「０」になるまで第二バッファ３０２からのパケットの出力を停止する。
【００８１】
サイクル３８はサイクル３と同条件である。ロード信号５１２、出力有効信号５１０、加算器４０８の出力、リミッタ４０９の出力、第二加算器５０８の出力、第二リミッタ５０９の出力、送信間隔選択部５０５の出力はそれぞれ、「１」、「１」、「３」、「３」、「１」、「１」、「１」となる。また、次のサイクル３９でタイマ４０３に「１」がロードされる。
【００８２】
以上説明したように、モジュール１０１は、自らが出力し、直後の処理を実行すべきモジュール１０１において処理を保留され戻ってきたパケットを受信した場合、その頻度によって大きさが変動する送信間隔の値をタイマ４０３にロードする。また、モジュール１０１は、自らの直後のみならず、その後に処理を実行すべき他のモジュール１０１で処理が保留されたパケットを受信した場合においても、その頻度によって大きさが変わる送信間隔の値をタイマ４０３にロードする。さらに、上記以外のパケットを受信した場合は、パケットを出力する度に最小のパケット送信間隔の所定の値をロードし、最小のパケット出力間隔とする。これらの制御により、自モジュールより後に処理を実行する他のモジュール１０１からの保留パケットの発生を検出し、出力間隔を動的に増加させる。これにより、処理が保留されたモジュール１０１より前に処理を実行する複数のモジュール１０１において、送信間隔を延長することとなり、パケットの転送効率をさらに向上させることが可能となる。特に、上流の処理を実行するモジュール１０１であるほど、出力間隔が延長される頻度が高くなるので、リングバス１０２の安定性が向上する。つまり、上流側のモジュール１０１において、下流側で処理が保留されていることを検知し、処理の対象となるパケットの送信を限定することにより、処理が保留されたパケットの発生を抑え、全体としてパケットの転送効率を向上させる。特に、処理が保留されたパケットの受信頻度に応じて動的にパケット転送量が制御されるため、モジュールのデータ処理能力が一定でなく動的に変わる場合であっても対応できる。
【００８３】
なお、本実施形態に係る制御システムを有効に動作させるには、上述の第二レジスタ４０７に格納される第一の所定値を第三レジスタ５０７に格納される第二の所定値より大きくすることが望ましい。第二の所定値は、処理を保留しているモジュール１０１より上流で処理を実行したモジュール１０１の各々において出力間隔として加算されるため、小さい値であっても、処理の保留を解消するのに十分となることが多いからである。また、パケットの出力時にタイマにロードする値は、次段のモジュールのパケット入力間隔に合わせることが望ましい。また、上記出力間隔の増分のリミット値は、リングバス１０２の一周分とするのが望ましい。これは、リングバス１０２の一周に相当する期間だけ待てば、保留状態が解除されたかどうかを判定することができるからである。このように上限値を設けることで、保留状態が解除されてからの応答を速くし、入力待ち状態となっている時間を最小化する効果がある。
【００８４】
また、上記説明ではパケット出力有効信号はタイマの値で判定していたが、次段のモジュールの入力バッファが２パケット分以上ある場合、タイマは、値を「０」で維持せず、送信間隔選択部５０５で選択した値をロードしてもよい。この場合、タイマの値が「０」のサイクルにおいてパケットを出力できなかったか否かの出力判定を実行し、出力できなかったと判定された場合、その旨を示す情報として、出力保留フラグを設け、当該出力保留フラグを「１」にセットする。そして、タイマは送信間隔選択部５０５で選択した値をロードする。そして、ロード制御部５０４は、タイマの値が「０」であるか、出力保留フラグが「１」である場合、出力有効信号５１０を、有効を示す「１」としてもよい。この場合、局所的な最小出力間隔は保証されないが、次段のモジュールでは保留とはならないため、さらに効率的なパケット転送が可能となる。また、上述の実施形態では、タイマとしてダウンカウンタを有する構成について説明したが、ダウンカウンタの代わりにアップカウンタを配置して、設定されている送信間隔を計測する構成としてもよい。
【００８５】
＜＜その他の実施形態＞＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８６】
１０１  モジュール
１０２  リングバス
１０３  処理部
１０４  ノードＩＤレジスタ
１０５  パケット生成部
１０６  パケット受信部
１０７  待ち受けＩＤレジスタ
１０８  受信制御部
１０９  送信制御部
１１０  パケット送信部
１１１  ＩＤ判定部
【図１】
0005932242.tif 000002
【図２】
0005932242.tif 000003
【図３】
0005932242.tif 000004
【図４】
0005932242.tif 000005
【図５】
0005932242.tif 000006
【図６】
0005932242.tif 000007
【図７】
0005932242.tif 000008
【図８】
0005932242.tif 000009