(57)【特許請求の範囲】
【請求項１】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールへ所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させるデータ処理装置であって、
前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールと、
前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールと、
前記入出力モジュールによって前記通信モジュールの１つに入力されたデータが、所定の処理を完了して前記入出力モジュールが受信するまでに前記リング状のバスを周回する周回数を取得する取得手段と、
前記周回数に応じて前記周期信号の周波数を変更する変更手段と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記変更手段は、前記周回数が多いほど前記周波数を高く変更することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記変更手段は、前記周回数が少ないほど前記周波数を低く変更することを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記複数の通信モジュールに基準となる周期信号を供給するクロック供給手段を更に有し、前記変更手段は前記基準となる周期信号と前記取得手段の取得する周回数とに基づいて周期信号の周波数を変更することを特徴とする請求項１から３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記入出力モジュールはデータをパケット化してリング状のバスへ送出するとともに、前記複数のデータ処理モジュールで定められた処理をされたデータを受信することを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記取得手段は、前記データに対する前記複数のデータ処理モジュールの使用順序と前記複数のデータ処理モジュールの並び順から、前記周回数を算出することを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項７】
前記取得手段は、前記入力されたデータが、前記リング状バスを周回する回数を計数することを特徴とする請求項１に記載のデータ処理装置。
【請求項８】
前記変更手段は、前記周波数に前記周回数を乗じた周波数を、周期を決定する周波数として設定することにより、前記周期を短くすることを特徴とする請求項１から３のいずれか１項に記載のデータ処理装置。
【請求項９】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールへ所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させるデータ処理装置であって、
前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールと、
前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールと、
前記リング状のバスに流れるデータ量を測定する測定手段と、
前記測定手段の測定したデータ量に基づいて前記周期信号の周波数を変更する変更手段と
を備えることを特徴とするデータ処理装置。
【請求項１０】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールへ所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させるデータ処理装置の制御方法であって、
前記複数の通信モジュールの各々と接続されているデータ処理モジュールが、パケットの有するデータを処理する複数のデータ処理工程と、
前記複数の通信モジュールの少なくとも一つにデータを入出力する入出力工程と、
前記入出力工程で入力されたデータが、所定の処理を完了して出力されるまでに前記リング状のバスを周回する周回数を取得する取得工程と、
前記周回数に応じて前記周期信号の周波数を変更する変更工程と
を有することを特徴とする制御方法。
【請求項１１】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールへ所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させるデータ処理装置であって、
前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールと、
前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールと、
前記入出力モジュールによって前記通信モジュールの１つに入力されたデータが、前記複数のデータ処理モジュールによって処理される処理順序に基づいて前記周期信号の周波数を設定する設定手段と
を備えることを特徴とするデータ処理装置。
【請求項１２】
前記設定手段は、前記処理順序が前記複数のデータ処理モジュールの接続順ではない場合、前記処理順序が前記複数のデータ処理モジュールの接続順である場合に設定する周期信号の周波数よりも高い周波数を設定することを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールに対して、前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールが所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させ、前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールが前記パケットに含まれるデータを所定の順序で処理することにより、前記データを処理するデータ処理装置の制御装置であって、
前記入出力モジュールによって前記複数の通信モジュールの１つに入力されたデータが、所定の処理を完了して前記入出力モジュールが受信するまでに前記リング状のバスを周回する周回数を取得する取得手段と、
前記周回数に応じて前記周期信号の周波数を変更する変更手段と
を備えることを特徴とする制御装置。
【請求項１４】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールに対して、前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールが所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させ、前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールが前記パケットに含まれるデータを所定の順序で処理することにより、前記データを処理するデータ処理装置の制御装置であって、
前記所定の周期信号の周波数を設定する設定手段を備え、
前記設定手段は、前記入出力モジュールによって前記通信モジュールの１つに入力されたデータが、前記複数のデータ処理モジュールによって処理される処理順序に基づいて前記周期信号の周波数を設定することを特徴とする制御装置。
【請求項１５】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールに対して、前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールが所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させ、前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールが前記パケットに含まれるデータを所定の順序で処理することにより、前記データを処理するデータ処理装置の制御方法であって、
前記入出力モジュールによって前記複数の通信モジュールの１つに入力されたデータが、所定の処理を完了して前記入出力モジュールが受信するまでに前記リング状のバスを周回する周回数を取得する取得工程と、
前記周回数に応じて前記周期信号の周波数を変更する変更工程と
を有することを特徴とする制御方法。
【請求項１６】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールに対して、前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールが所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させ、前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールが前記パケットに含まれるデータを所定の順序で処理することにより、前記データを処理するデータ処理装置の制御方法であって、
前記所定の周期信号の周波数を設定する設定工程を有し、
前記設定工程では、前記入出力モジュールによって前記通信モジュールの１つに入力されたデータが、前記複数のデータ処理モジュールによって処理される処理順序に基づいて前記周期信号の周波数を設定することを特徴とする制御方法。
【請求項１７】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールに対して、前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールが所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させ、前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールが前記パケットに含まれるデータを所定の順序で処理することにより、前記データを処理する制御装置に、
前記入出力モジュールによって前記複数の通信モジュールの１つに入力されたデータが、所定の処理を完了して前記入出力モジュールが受信するまでに前記リング状のバスを周回する周回数を取得する取得工程と、
前記周回数に応じて前記周期信号の周波数を変更する変更工程と
を実行させるためのプログラム。
【請求項１８】
複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールに対して、前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールが所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させ、前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールが前記パケットに含まれるデータを所定の順序で処理することにより、前記データを処理する制御装置に、
前記所定の周期信号の周波数を設定する設定工程を実行させるためのプログラムであって、
前記設定工程では、前記入出力モジュールによって前記通信モジュールの１つに入力されたデータが、前記複数のデータ処理モジュールによって処理される処理順序に基づいて前記周期信号の周波数を設定するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リング状バスを用いたデータ処理装置およびその制御方法、プログラムに関する。
【背景技術】
【０００２】
従来は、データ処理を行う方法として、処理回路を並列してデータ処理を実行する、バス型のパイプライン接続による方法があった。この接続方式では、入力端において外部メモリや外部Ｉ/Ｆなどから入力されたデータが、接続された順序で処理された後に、出力端において外部メモリ等へ出力される。この場合、処理順序の入れ替えなどを行いたくても、順序を入れ替えることはできなかった。
【０００３】
このため、特許文献１では、データ処理回路間の接続をリング状バスで接続する方法が提案された。また、特許文献２では、画像のフィルタ処理を並列処理する技術が提案された。ここでは、データに制御コードを付けてリング状バスに送出し、制御コードに従ってデータの取り込みの制御を行うことで、データ処理回路間のデータ転送においてオーバーラップするデータを複数のプロセッサで受信できるようにした。このように、リング状バスにおいて順序入れ替えを行う様々な方法が提案されてきた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０１-０２３３４０号公報、
【特許文献２】特開昭６３−２４７８５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、これまで、リング状バスの接続において接続順序に従わないデータ処理の順序が設定されると、そのリング状バス内の処理モジュール間の通信路にデータの流れに重複する区間が生じ、どちらかの処理モジュールの通信が待たされることがあった。この重複区間では、転送データ量が増大するため、そのため通信処理の性能が低下するという課題があった。
【０００６】
従って本発明は、係る課題に鑑みて、リング状バスにおいて処理モジュールの接続順序に従わないデータ処理順序を設定しても、処理性能に劣化を生じさせないデータ処理技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、以上の課題を解決するために、複数の通信モジュールがリング状のバスに接続され、各通信モジュールが隣接する通信モジュールへ所定の周期信号に同期してパケットを送出することにより、前記リング状バス上でパケットを巡回させるデータ処理装置は、前記複数の通信モジュールの各々と接続され、パケットの有するデータを処理する複数のデータ処理モジュールと、前記複数の通信モジュールの少なくとも一つと接続され、当該通信モジュールにデータを入出力する入出力モジュールと、前記入出力モジュールによって前記通信モジュールの１つに入力されたデータが、所定の処理を完了して前記入出力モジュールが受信するまでに前記リング状のバスを周回する周回数を取得する取得手段と、前記周回数に応じて前記周期信号の周波数を変更する変更手段とを備えることを特徴とする。
【発明の効果】
【０００８】
リング状バスにおいて処理モジュールの接続順序に従わないデータ処理順序を設定しても、処理性能が低下することを抑制できる。
【図面の簡単な説明】
【０００９】
【図１】リング状バスに接続するモジュールの構成を示す図。
【図２】（ａ）パケットデータのフォーマット、（ｂ）リング状バスとそれを用いたモジュールの構成を示す図。
【図３】データ処理システムの構成を示す図。
【図４】接続順序に従った処理手順での、リング状バスのデータ転送を示す図。
【図５】接続順序に従わない処理順での、リング状バスのデータ転送を示す図。
【図６】接続順序に従わない処理順での、リング状バスの動作速度を２倍に下場合の、リング状バスのデータ転送を示す図。
【図７】リング状バス動作周波数設定処理の処理フローを示す図。
【図８】（ａ）リング状バスの構成、（ｂ）パケットデータのフォーマットを示す図。
【図９】リング状バスのデータ周回数検知部の処理フローを示す図。
【図１０】リング状バスとそれに接続されたモジュールの構成を示す図。
【図１１】リング状バスのデータ量検知部の処理フローを示す図。
【発明を実施するための形態】
【００１０】
＜実施形態１＞
図１は、実施形態１のモジュールの構成例を示すものである。
【００１１】
１００は、リング状バスに接続されている単体のモジュールを示す。１１０は、単方向にデータを巡回させるリング状バスである。１２０は、リング状バスとモジュールとの間でのデータの送受信を行うと共に、リング状バス上を流れるデータパケットを保持する役目も果たす通信部である。１３０は、通信部１２０にて受信されたデータを処理するデータ処理部である。
【００１２】
１２１は、通信部１２０において、リング状バス上を流れるデータパケットのうち、当該モジュールにて処理すべきデータを受信する受信部である。１２２は、データ処理部１３０において処理済みのデータ、または、通信部１２０において何らかの処理が行われるデータについての送信パケットの生成並びに送信パケットの出力を行う送信部である。１２３は、送信部１２２の判断に応じて、リング状バス１１０より入力されたパケット、または、送信部１２２で生成されたパケットのいずれかを選択して出力するセレクタである。
【００１３】
１２４は、セレクタ１２３の出力を一時保持するバッファである。リング状バスに接続されるデータの一時保持は、このバッファ１２４で行なわれる。１２５は、通信部１２０の動作に必要なクロックを供給する通信部クロック供給部である。そして、外部からの設定に従って動作周波数の指示を行う動作周波数指示部１２６によって指示された周波数のクロックを、通信部クロック供給部１２５は通信部１２０に供給する。
【００１４】
なお、このクロックの周波数は、実装上よく用いられる技術としては、ある特定の原発振周波数の整数倍の逓倍、あるいは、整数分の１の周波数を用いることが多い。更に、通信路の同期に関係する問題発生を回避するために、原発振周波数を高くしておき、動作に応じてその整数分の１、あるいは、２のべき乗分の１の低周波数への切換を行うような制御を行うことが一般的である。ただし、それらの生成周波数についての実装上の制約は本発明の意図・効果に直接関係しないので、本発明の説明においては特に発振周波数や指示可能な周波数に関する制約を設けないこととする。
【００１５】
本実施形態の説明において算出された周波数が、実際に選択可能な周波数として存在しない場合は、算出された周波数よりも高い周波数で最も近い周波数を選択して指示することとする。これは、通信路の速度を高速にすることにより、通信路上に保持できる見かけのデータ量を多くすることによって、通信路上でのデータの遅滞を抑制するためである。
【００１６】
また、図において明示した通信部クロック供給部１２５の他に、データ処理部やその他の構成部分に対して適切にクロックを供給する手段が存在する。しかし、これらは、本発明において特筆すべき効果につながらないため図示を省略している。これらのクロック供給手段は、特定の周期（周波数）を有する動作クロック（駆動用の周期信号である。以降、単にクロック）を供給するものとする。処理手段に対するクロック供給手段がどのような形で動作周波数を決定するかについては、本実施形態においては言及しない。ただし、処理手段に対するクロック供給手段は、通信部クロック供給手段とは独立のクロック供給を行うこととする。
【００１７】
図２（ａ）にリング状バスを巡回するパケットの構成を示す。２００は、パケット全体を示す。２０１は、パケットが有効かどうかを示すｖａｌｉｄフラグであり、２０２は、パケットが受信できず保留であることを示すｓｔａｌｌフラグである。そして、２０３は、データの送信元を示すｎｏｄｅ ＩＤであり、２０４はデータの送信順を示すカウント値であり、更に２０５は、送信データである。
【００１８】
以下、画像処理モジュール１００の例について、リングバッファの動作を説明する。リング状バスにデータを出力する際は、まず、リング状バスを構成するバッファ１２４に保持される入力パケットのｖａｌｉｄフラグ２０１を検出し、無効パケット（空きパケット）を探す。入力パケットのｖａｌｉｄフラグ２０１が「有効」を示す場合、バッファ１２４には入力パケットを格納し、次のクロックでこのパケットをリング状バスに出力する。
【００１９】
一方、入力パケットのｖａｌｉｄフラグ２０１が「無効」を示す場合で、かつ、当該モジュールのデータ処理部により処理済みの出力可能なデータがある場合、次のパケットを生成し、バッファ１２４に保持し、このパケットをリング状バスに出力する。すなわち、このパケットは、この出力可能なデータに、ｖａｌｉｄフラグ２０１（「有効」）、ｓｔａｌｌフラグ２０２（「無効」）、自身のモジュールＩＤ（ｎｏｄｅ ＩＤ）、および出力データ数のカウント値を付加することで生成される。このパケットをリング状バスに出力するとき、出力カウンタは、インクリメントされる。
【００２０】
データの受信側では、入力パケットのｖａｌｉｄフラグ２０１、ｎｏｄｅ ＩＤ２０３、カウント値２０４を監視する。そして、ｖａｌｉｄフラグ２０１が「有効」で、ｎｏｄｅ ＩＤ２０３が予め設定されている待ち受けＩＤと一致し、カウント値２０４が入力カウンタ値と一致するパケットが入力されたとする。そして、データ処理部１３０がデータを受信可能な状態にある場合、入力パケットが、データ処理部１３０に取り込まれる。そして、ｖａｌｉｄフラグ２０１を「無効」にして次のバッファへ出力する。このとき、入力データ数をカウントするカウンタがインクリメントされ、入力カウンタ値が更新される。
【００２１】
一方、当該モジュール内のデータ処理部１３０がデータを受信不可能な状態にある場合、入力パケットのｓｔａｌｌフラグ２０２のみ「有効」にし（即ち、データの取り込みを保留）、他のフィールドは変更せず、このパケットはバッファ１２４へ出力される。なお、入力カウンタと出力カウンタは、同期を取るため、データ転送開始前に同じ値に初期化される。
【００２２】
図２（ｂ）は、図１において説明した個々のモジュールを接続してリング状バスを構成した際の構成例を示す。３００は、リング状バスを示す。３１０は、リング状バス３００に対して外部のデータバスとの接続３６０を介して外部からのデータをパケット化してそのパケットを投入するターミナルモジュールである。また、このターミナルモジュール３１０は、リング状バスに接続されたモジュールにおいてパケットの処理が完了したパケットからデータを取り出し、外部データバスとの接続３５０を介して外部に出力する機能を持つ。
【００２３】
３２０、３３０、３４０は、リング状バスに接続されるモジュールである。これらの隣接するモジュール３１０，３２０，３３０，３４０の各々には、リング状バスとのデータの送受信を行う通信モジュールである通信部３１１，３２１，３３１，３４１、および個々のモジュールごとに処理を行うデータ処理部３１２，３２２，３３２，３４２が備えられている。これらのデータ処理部は、モジュールごとに異なる処理を行っても、またいくつかのモジュールで同じ処理を行ってもよい。
【００２４】
また、ここでは４つのモジュールによって構成されるリング状バスを例示しているが、リング状バスを構成するモジュールの数には特に制約はなく、４つ以上のモジュールを用いてリング状バスを構成してもよい。ここで、通信部クロック供給部１２５は、通信部３１１，３２１，３３１，３４１に対して、あらかじめ動作周波数指示部１２６に設定された動作周波数に従って、クロックを供給する。このクロック供給により、通信部３１１，３２１，３３１，３４１および通信部間を接続するデータバスは、供給クロックに同期してデータ通信を行う。
【００２５】
図３は、データ処理装置を配置するシステムの構成例を示す。システム４００は、演算ならびに制御用のＣＰＵ４０１、固定データやプログラムを格納するＲＯＭ４０２、データの一時保存やプログラムのロードに使用されるＲＡＭ４０３、および外部データを保持する外部記憶装置４０４などにより構成される。
【００２６】
４１０は、処理すべきデータをシステム外部またはシステム制御部より取り込むデータ入力部である。データ入力部４１０は、たとえばイメージスキャナおよびＡ／Ｄ変換器などのデバイスによって構成される画像読み込み装置や、マイクおよびＡ／Ｄ変換などのデバイスによって構成される音声入力装置などであってもよい。また、当然のことながら、システム制御部や外部に配置されるメモリ等からのデータ読出しを行うＤＭＡ(Ｄｉｒｅｃｔ Ｍｅｍｏｒｙ Ａｃｃｅｓｓ)モジュールであってもよい。
【００２７】
４２０は、データ処理装置である。４３０は、システムにおいて処理済みのデータを外部もしくはシステム制御部に出力するデータ出力部である。たとえばこのデータ処理装置４２０は、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置であるか、または音声データをＤ／Ａ変換器等を通して出力する音声出力装置であってもよい。また、システム制御部や外部に配置されるメモリ等へのデータ書き出しを行うＤＭＡモジュールであってもよい。
【００２８】
データ入力部４１０において入力されたデータは、システム制御部に送られてＣＰＵ４０１で処理されても良いし、そのままＲＡＭ４０３や外部記憶装置４０４に一時的に記録されても良い。従って、データ処理装置４２０は、データ入力部４１０からの入力データを直接受け取って処理を行っても良く、またシステム制御部４００からの指示ならびにデータ供給によって処理を行っても良い。
【００２９】
また、データ処理装置４２０の出力は、再度システム制御部４００に送られても、直接データ出力部４３０に送られても良い。更に、データ処理装置４２０は、システム制御部４００の制御によって、種々のデータ処理内容が設定され、また種々の処理データが供給されて動作する。
【００３０】
次に、図４を用いて、動作周波数算出方法の例を説明する。図４(ａ)は、リング状バスに８つのモジュールが接続された状態を示している。このような接続のリング状バスにおいて、５０１に示すデータ入出力モジュール（以下「モジュールＴＥ０」）からリング状バスに投入されたデータは、まず５０２に示すデータ処理モジュール（以下「モジュールＰＥ１」）で処理される。そしてこの処理の後、５０３に示すデータ処理モジュール（以下「モジュールＰＥ２」）で処理されて出力されるように予め処理モジュールの使用順序が規定されているものとする。尚、図４に示すように、（ａ）から（ｂ）へ移動するデータの移動の要する時間は、Ｔとしている。また、図４における各データモジュールでデータを処理する時間は、一律に２Ｔと仮定している。
【００３１】
つまりこの場合、この処理順序は、接続順序に従った順序となっている。ここで、モジュールＴＥ０は、図２におけるモジュール３１０に相応するものであり、５０２，５０３で示すモジュールは、図２におけるモジュール３２０，３３０，３４０に相応する。リング状バスにおけるデータの動作を説明するに当たり、これらの処理モジュールについては簡素な形で示している。
【００３２】
また、本実施例の説明図の図４においては、リング状バスにおけるデータの転送方向は反時計回り単方向であるとする。まず図４（ｂ）においてデータ５０４が投入されると、データは、図４(ｃ)から(ｄ)に示すように反時計回りにリング状バスを周回していき、図４(ｄ)において、データ５０５は処理のため５０２で示すＰＥ１に取り込まれる。
【００３３】
本実施例の説明においては、モジュールＰＥ１およびモジュールＰＥ２は、２Ｔの時間で処理を終了する。従って、図４(ｄ)から２Ｔ経過後の図４(ｆ)において、モジュールＰＥ１は、処理済のデータ５０６をリング状バスに送出し、次の処理データ５０７を入れ替わりに取り込む。その後、モジュールＰＥ１から送出された処理済データ５０６は、図４(ｆ)から図４(ｈ)にかけてリング状バスを移動して行き、図４(ｈ)において、次の処理順序にあたるモジュールＰＥ２が処理データ５０８を取り込む。
【００３４】
モジュールＰＥ２についても、２Ｔで処理を終了し、その後図４(ｊ)において、処理済データ５０９が、モジュールＰＥ２からリング状バスに送出され、入れ替わりに次の処理データ５１０を取り込む。ここで送出された処理済データ５０９は、その後、図４(ｊ)から図４(ｌ)にかけてリング状バスを移動して行き、モジュールＴＥ０に到達したところで出力データ５１１として外部へ出力される。
【００３５】
このように、接続順に沿った処理順の設定がされた場合には、１回の周回でデータが処理されて出力されることがわかる。その後の図４(ｍ)から図４(ｕ)に示すように、この後は２Ｔ間隔でデータが出力される。これとともに、リング状バスにおいて、例えばパケット５１２のように、データ転送をしていない空パケットは、常に４つあり、リング状バスが余裕を持って、かつ、定常的な状態でデータ転送を行うことができることがわかる。
【００３６】
このような場合、８つのパケットのうち、４つを１つのデータフローで定常的に占有している。従って、いま、このＰＥの組み合わせとは別のデータフローをこのリング状バスで構成すると、リング状バスは、ちょうど１００％の状態となる。すなわち、このリング状バスは、この異なる２つのデータフローを転送可能であることがわかる。
【００３７】
次に図５を用いて、本発明の動作周波数算出方法の例を示す。図５の(ａ)は、リング上のバスに８つのモジュールが接続された状態を示している。いま、このような接続のリング状バスにおいて、図５の処理順序とは異なる順序で処理する場合を考える。つまり、データ入出力モジュール６０１（以下「ＴＥ０（図５）」）からリング状バスに投入されたデータは、まずモジュール６０３（以下「モジュールＰＥ２（図５）」）で処理された後、モジュール６０２（以下「モジュールＰＥ１（図５）」）で処理されて出力されるように予め処理順序が指定されているものとする。
【００３８】
まず、図５（ｂ）においてデータ６０４が投入されると、データは、図５(ｃ)から(ｈ)に示すように反時計回りにリング状バスを周回していき、図５(ｈ)において、データ６０５は処理のためモジュールＰＥ２（図５）に取り込まれる。処理モジュールは、前述のとおり２Ｔの時間で処理を終了するので、図５(ｈ)から２Ｔ経過後の図５(ｊ)において、モジュールＰＥ２は、処理済のデータ６０６をリング状バスに送出し、次の処理データ６０７を入れ替わりに取り込む。
【００３９】
その後、モジュールＰＥ２から送出された処理済データ６０６は、図５(ｋ)から図５(ｎ)にかけてリング状バスを移動して行く。そして、図５(ｎ)において、次の処理順序にあたる、モジュールＰＥ１（図５）が処理データ６０８を取り込む。モジュールＰＥ１（図５）も２Ｔで処理を終了するので、その後、図５(ｐ)において、処理済データ６０９が、モジュールＰＥ１（図５）からリング状バスに送出され、入れ替わりに次の処理データ６１０を取り込む。
【００４０】
ここで送出された処理済データ６０９は、その後、図５(ｑ)から図５(ｖ)にかけてリング状バスを移動して行き、モジュールＴＥ０（図５）に到達したところで出力データ６１１として処理済みデータ６０９が外部へ出力される。このような経路を通ってデータが処理される場合に、リング状バスのデータ転送クロックは、時間Ｔでひとつ隣の処理モジュールにデータを転送する速度により与えられる。このとき、定常状態においては、図５(ａｈ)の６１２に示すように、空伝送パケットは１つしか存在しない状態となり、リング状バスのデータ転送の能力の余裕が少なくなっていることがわかる。
【００４１】
図４で説明したように、接続順序に沿った処理順序を指定して、各々の処理モジュールが２Ｔで処理を行う場合は、リング状バス上のデータは１つおきに存在する状態となる。しかし、図５に示したように、処理順序を入れ替えて、逆の順序で指定した例では、データは、リング状バスを２回周回して出て行くことになり、リング状バスのデータ保持可能量のほぼ全てを使用してしまう状態となる。この状態では、更にもう一つのデータフローを処理させることはほぼ不可能となる。すなわち、処理順序の入れ替えによって、リング状バスの帯域占有率が上がるために、データ処理装置としての処理能力が半分になる。すなわち、単一のデータフローしか処理できない状態にあるということである。
【００４２】
本発明では、処理順序を入れ替えて、逆の順序で指定した場合にも、通常の処理順序のときと同様に、２つのデータフローを処理できるようにするための対策をとる。この対策として、実施形態１では、リング状バスの動作速度を決めるクロックの周波数を変更する技術を開示する。つまり、リング状バスを回り処理が終了するまでにデータが周回する回数が多いほど、データ転送クロックの周波数を高くする。即ち転送する周期を短くするように周期が変更される。
【００４３】
図６に、リング状バスのデータ転送速度を２倍に速めた場合について示す。この２倍という転送速度は、処理モジュールＰＥ１からＰＥ２へのデータフローの流れに対して、処理順序をデータフローの流れと逆に設定した場合に、入力データはリング状バスを２周回するという解析の結果に基づいて設定されている。このように、転送速度を２倍にすると、図７における時間軸は、２倍の速度で表示される。従って、例えば、図４や図５では、(ａ)と(ｂ)との間で経過する時間は、Ｔであったが、図６においては、リング状バスの転送速度が２倍と成るので、転送に要する時間は、図４における転送時間Ｔの半分のＴ/２となる。しかし、処理モジュールに供給するクロック周波数は、制御しないので、この結果、リング状バスの速度は、これまでの処理モジュールに対して４倍の速度で動作することになる。
【００４４】
図６(ａ)は、図４および図５と同様の構成であり、リング上のバスに８つのモジュールが接続された状態を示している。このような接続のリング状バスにおいて、データ入出力モジュール７０１（以下「モジュールＴＥ０（図６）」）からリング状バスに投入されたデータは、まず７０３に示すＰＥ２（以下「モジュールＰＥ２（図６）」）で処理された後、７０２に示すＰＥ１（以下「モジュールＰＥ１（図６）」）で処理されて出力されるように予め処理順序が指定されているものとする。
【００４５】
まず図６（ｂ）においてデータ７０４が投入されると、データは、図６(ｃ)から(ｈ)に示すように反時計回りにリング状バスを周回していき、図６(ｈ)において、データ７０５は、処理のため処理モジュールＰＥ２（図６）に取り込まれる。処理モジュールは、前述のとおり２Ｔで処理を終了するが、この場合、データ転送にかかる時間が、Ｔ／２であることから、図６(ｈ)から２Ｔ経過した時点では、図６(ｌ)に示す状態となっている。この時点において、処理モジュールＰＥ２は、処理済のデータ７０６をリング状バスに送出し、次の処理データ７０７を入れ替わりに取り込む。
【００４６】
その後、処理モジュールＰＥ２（図６）から送出された処理済データ７０６は、図６(ｍ)から図６(ｐ)にかけてリング状バスを移動して行く。そして、図６(ｐ)において、次の処理順序にあたるモジュールＰＥ１（図６）が処理データ７０８を取り込む。この処理データ７０８は、処理済データ７０６と同一の内容を持つものである。
【００４７】
７０２で示す処理モジュールＰＥ１（図６）も、２Ｔで処理を終了するので、その後、図６(ｔ)において、処理済データ７０９が、処理モジュールＰＥ１（図６）からリング状バスに送出され、入れ替わりに次の処理データ７１０を取り込む。ここで送出された処理済データ７０９は、その後、図６(ｕ)から図６(ｚ)にかけてリング状バスを移動して行き、入出力モジュールＴＥ０（図６）に到達したところで出力データ７１１として外部へ出力される。
【００４８】
このときに、注意する必要があるのは、入出力モジュールＴＥ０（図６）は、図４および図５で示したと同様に、２Ｔ間隔でデータを投入している点である。このことにより、モジュールＰＥ１（図６）、モジュールＰＥ２（図６）の処理と同期してデータが供給される状況を生み出している。ただし、図６(ｎ)において、ちょうどモジュールＴＥ０（図６）が出力するタイミングで、処理済データ７１２が通過する。従って、一つのパケットに２つのデータを載せられないことから、モジュールＴＥ０（図６）からのデータ投入がＴ/２だけ遅れる。このことによる遅延は、図６(ａｍ)の出力が、通常の２Ｔ間隔よりもＴ/２遅れていることにつながる。しかしながら、リング状バスの上でのデータの占有率は、たとえば図６(ａａ)の空パケット７１３がほぼ常に４つある状態となっており、これは、図４の場合の例と同様であると言える。
【００４９】
このように、接続順序と逆の処理順序を指定することにより、リング状バスをデータが２回周回する場合、リング状バスの動作速度を決めるクロックを２倍にすることで、リング状バスのデータ転送容量を向上し、更にもう一つのデータフローを流せる能力を得ることができる。
【００５０】
ここでは、接続順序と逆の処理順序が予め設定されることにより、リング状バスをデータが、２回周回する場合を例示した。しかし、更に多くのデータ処理モジュールを処理に参加させ、接続順序と逆の処理順序に設定した場合に、データがリング状バスをＮ回周回する場合においても、図６と同様、リング状バスのデータ転送容量を向上させることができる。つまり、データがリング状バスをＮ回周回する場合には、リング状バスの動作速度をＮ倍に上げることによって、図４から図６において説明したのと同様の効果を得ることが可能である。このように、データのリング状バスの周回数に応じて、リング状バスの動作速度を速める理由の１つは、省エネルギー対策である。すなわち、速める必要のない場合は、リング状バスの動作速度を低く保つことで、系全体の消費電力をセーブする。例えば、周回数が少ない場合は周波数を低く変更する（周期を長く変更する）ようにしてもよい。周回数は自然数とする。
【００５１】
実際の回路実現においては、クロックを基本原発信周波数（基準となる周期信号）のＮ倍に逓倍するようにすると、クロックの波形がなまるなどの弊害が生じる可能性がある。従って、たとえば、予め周回数の上限を定めるなどして、基本クロックを予め通常のＮ倍の速度に設計しておき、周回数が少ない場合にはこのクロックを分周して低速に制御して供給するなどの方法を用いても良い。また、本実施形態においては、周回数にあわせてリング状バスの処理速度を変更することを開示しているが、原発信周波数をＮ倍にするか、１/Ｎにするかは、実装形態に依存する。
【００５２】
図７は、接続順序と逆の処理順序に設定した場合に、図３のＣＰＵなどの制御装置のデータ処理装置の内部にある、図１の動作周波数指示装置１２６に対して指示を行う場合の処理フローを示す。まずＳ８０１において処理が開始される。次にＳ８０２において、処理モジュールの接続順序情報Ｏ[ｎ]の読み込みを行う。ここでＯ[ｊ]は、たとえば接続順序ｊ番目に接続されているモジュールの識別ＩＤを保持するものとする。
【００５３】
次にＳ８０３において予め指定された処理順序Ｐ[ｎ]の読み込みを行う。ここでＰ[ｉ]は、たとえば処理順序ｉ番目に処理することを指定されているモジュールの識別ＩＤを保持するものとする。また、Ｓ８０４において、処理順序検索カウンタｉを０に初期化する。更に、Ｓ８０５において、現在の処理モジュールの接続順序を保持する変数ｐｏｓを０に初期化する。なお、ここで接続順序および処理順序は０以上の整数とする。通常は、先頭の接続モジュールを０とするならば、{０，１，２，３，４、・・・}が、接続順序を示す数列として定義される。
【００５４】
次にＳ８０６において、周回数Ｎを０に初期化する。また、Ｓ８０７において、接続順検索カウンタｊを０に初期化する。更に、Ｓ８０８において、Ｐ[ｉ]が示す処理モジュールとＯ[ｊ]が示す処理モジュールが一致するかどうかを判定し、一致する場合にはＳ８１０に進み、一致しない場合Ｓ８０９に進む。Ｓ８０９では、ｊに１を加算して、Ｓ８０８に戻る。Ｓ８１０では、カレント処理モジュール順序を保持する変数である、ｐｏｓとｊとを比較し、ｐｏｓ≧ｊである場合には、Ｓ８１１へ進み、それ以外の場合にはＳ８１２に進む。
【００５５】
Ｓ８１１では、周回数Ｎを１つカウントアップする。Ｓ８１２では、ｐｏｓにｊを代入する。そしてＳ８１３では、ｉを１つカウントアップする。次にＳ８１４において、ｉが全ての予め指定された処理順序に従ったモジュールついて検索をしたかを確認し、検索終了であればＳ８１５に進み、それ以外はＳ８０７に戻る
Ｓ８１５では、求められたＮを元に、動作周波数指示部１２６の周波数の設定を行う。たとえば、動作周波数指示部１２６が実装されている場合には、原発振のＮ倍の周波数を設定するように、Ｎを設定し、原発振の１/Ｎを指定するように、動作周波数指示部１２６が実装されている場合は、仕様で定める最大の周回数をＭとすると、この場合、Ｎ/Ｍの周波数を指定する。その後、Ｓ８１６に進んで設定処理を終了する。
【００５６】
本実施形態においては、上述のごとく、求められた周回数Ｎを用いて、リング状バスのデータの転送速度を決定する動作周波数をＮで逓倍すれば良い。その周回数の値は、上述のように図１の動作周波数指示部１２６の実装方法や、原発振の設定によって異なる。つまり、周回数の値は、動作周波数指示部１２６の実装に依存する。
【００５７】
また、実施形態１では、データ転送速度を決定する動作周波数を制御する例を示したが、各データ処理モジュール側の処理速度を制御しても同様の効果が得られることは、明らかであろう。つまり、データの周回数が２のとき、リング状バスの転送速度を２倍にしたが、リング状バスの転送速度をそのままにして、各データ処理モジュール側の処理速度を１／２にしても良い。このように、データ処理モジュールの速度を遅くすることは、限られた場合に行なわれるが、リング状バスの全体のデータ処理を滞らせないという点で、同様の効果がある。なお、本実施形態では処理の便宜上周回数を０に初期化しているが、基本的に周回数は自然数として扱う。
【００５８】
＜実施形態２＞
図８（ａ）は、実施形態２におけるリング状バスに接続された処理モジュールの構成ついて示したものである。また、図８（ａ）は、図２に示した構成に加えて、２つの新しい機能部を備えている。１つは、リング状バスに接続されリング状バスの有効データを監視し、同一のデータフローにおいてデータが予め指定された処理を行うルートで、リング状バスを何回周回しているかを計数するデータ周回数検知部９０１である。もう１つは、データ周回数検知部９０１により検知され、取得された周回数Ｎに基づき、動作周波数指示部１２６に対して指示する設定値を求める動作周波数指示値算出部９０２である。
【００５９】
また、データフローの開始や終了のタイミングに応じ、データ周回数検知部９０１に初期化のトリガを与えるリセット信号ならびに初期化するためのデータフロー識別情報を通知する制御信号接続９０３を備えても良い。更に、データ処理装置全体の初期化リセット信号などは、通常の実装に従ってデータ処理装置全体に対して存在しても良い。また、そうしたリセットによる場合、データ処理装置全体のリセットに応じて全てのデータ周回数がリセットされるように実装することが考えられる。また、データ周回数検知部９０１は、図３のシステム制御部４００、あるいは、ＣＰＵ４０１などから直接初期化の指示を受け取っても良い。この際にも、システム制御部４００、もしくはＣＰＵ４０１が、これから処理を開始しようとするデータフローについての周回数のみを初期化するように選択的に初期化を行っても、また全ての周回数を初期化するように制御を行っても良い。また、これら２つの初期化の方法を選択的に指示しても良い。
【００６０】
図８（ｂ）は、データ周回数検知部９０１において、同一のデータフローに属するデータの周回数を検知するときに必要な情報を保持するデータパケットの例を示す。このデータパケットは、図２にて説明した情報に加えて、データ処理の異なるデータフローを識別するための情報であるデータフロー識別情報Ｆ１００１を保持する。
【００６１】
図９に従って、データ周回数検知部９０１が、このデータフロー識別情報Ｆ１００１と、各モジュールのノードの識別タグであるノードＩＤ２０３とを用いて、周回数を検知し、周回数決定を行う処理を例示する。Ｓ１１０１において処理が開始されると、Ｓ１１０２において、データパスｆに対する周回数Ｎ[ｆ]を０に初期化する。Ｓ１１０３において、全データ処理モジュール数Ｎに対して、有効データ処理モジュールカウントＣＯＵＮＴ[ｆ][Ｎ]を全て０に初期化する。
【００６２】
Ｓ１１０４において、データ処理開始トリガを待つ。データ処理が開始されるとＳ１１０５に進む。Ｓ１１０５において、入力データを確認し、Ｓ１１０６において、有効なデータであるかどうかを判別する。有効なデータである場合はＳ１１０７に進み、それ以外はＳ１１０５に戻る。
【００６３】
Ｓ１１０７において、データのフローの識別タグであるフロー識別情報Ｆ１００１とノードＩＤ２０３とから、ＣＯＵＮＴ[Ｆ][ノードＩＤ]を参照し、その値が０である場合には、ステップ１１０８に進み、それ以外はＳ１１０９に進む。
【００６４】
Ｓ１１０８では、周回数Ｎ［Ｆ］に１を加算する。Ｓ１１０９では、ＣＯＵＮＴ［Ｆ］［ノードＩＤ］に１を代入し、再びＳ１１０５に戻る。
【００６５】
本処理は、データ処理装置が動作している間、常にリング状バスの状態を監視するため、データ処理装置が停止、もしくは再度初期化されるまで上記処理を繰り返す。初期化のタイミングは、たとえばデータ入出力部において、特定のデータ処理が開始もしくは終了したタイミングでもよい。すなわち、初期化のタイミングは、必ずしもシステム全体やデータ処理装置全体がリセットされるタイミングや起動されるタイミングでなくても良い。
【００６６】
また、当然のことながら、図８のデータ周回数計測部９０１は、複数のデータフローに対して監視を行うものである。そのため、データ入出力部３１０において特定のデータフローの開始もしくは終了時に初期化を行う場合、すなわちＳ１１０２に示す周回数Ｎの初期化については、フロー毎に初期化可能とすることが望ましい。
【００６７】
図９に示した処理フローは、すなわち、特定のデータ処理モジュールからの特定のデータフロー識別番号Ｆ１００１データについて１回ずつ周回数をカウントすることで、データフロー固有の周回数を検知している。これは、当然のことながらデータ処理においては、同一データ処理モジュールからの出力データ量は、処理するデータ量の大きさに応じて大きくなる。そのため、後述の実施形態３における図１１のフロー図に示すように、一度カウントしたモジュールからの連続する処理データをカウントしてしまうと、そのカウント値は処理データ量となってしまう。
【００６８】
そこで、例えば、図９に開示するような処理によって、データパスとしてリング状バスを通って再度上流に戻るデータのノードＩＤ２０３に対してカウントを行う。こうすることで、データがどのようにリング状バスを定常的に周回しているかがカウントされる。
【００６９】
図９の処理例においては、周回数をデータフロー識別情報Ｆ１００１に対して別に求めているが、これを全てのＦについて総和して、リング状バス全体としてのデータ周回数として換算することで、この値を制御に用いることも有効である。その場合は、図９における[ｆ]および[Ｆ]の記載を削除することでこうした技術を実現することができる。ただし、その場合、ノードＩＤ２０３は、リング状バスに接続された全てのデータ処理モジュール間で競合しない値を割り振ることとする。これによって、カウントにおいて他のデータ処理モジュールのノードＩＤ２０３での重複により周回数のカウントにミスが生じないよう制御することが必要となる。
【００７０】
＜実施形態３＞
図１０に、実施形態３におけるリング状バスに接続された処理モジュールの構成ついて例示する。
【００７１】
図１０は、図２に示した構成に加えて、２つの新しい機能部を備えている。１つは、リング状バスに接続されリング状バス上の有効データを監視し、リング状バスを流れる所定の時間当たりの有効なデータの量を測定するデータ量計測部１２０１である。もう１つは、データ量計測部１２０１により検知されたデータ量Ｍに基づき、リング状バスの転送速度を決定する設定値を求める動作周波数指示値算出部１２０２である。この設定値は、動作周波数指示部１２６へ送られる。
【００７２】
また、他の実施形態と同様に、データ処理装置全体の初期化リセット信号などは、通常の実装に従ってデータ処理装置全体に対して存在してもよい。また、そうしたリセットに関しては、データ処理装置全体のリセットに応じて、保持しているデータ量もリセットするように実装することが考えられる。更に、データ量検知部１２０１は、図３のシステム制御部４００、あるいはＣＰＵ４０１などから直接初期化の指示を受信しても良い。
【００７３】
図１１は、この実施形態においてデータ量を計測する処理フローを示す。Ｓ１３０１において、処理が開始されると、次にＳ１３０２において、リング状バスをデータが一周する時間Ｌが読み込まれる。次にＳ１３０３において、リングバス上のデータ量を表わす変数Ｍを初期化する。
【００７４】
Ｓ１３０４において、データ処理の開始トリガを待ち、データ処理の開始トリガを受け取ると、Ｓ１３０５に進む。次にＳ１３０５において、入力されるデータを確認する。この入力データが有効データかどうかを確認するまでに、Ｓ１３０６において、この入力データについて所定の時間が経過したかどうかを判定し、経過している場合はＳ１３０９に進む。それ以外はＳ１３０７に進み、ここで入力データが有効データであるかどうかを確認する。有効データであるかどうかは、図２において示したＶａｌｉｄフラグ２０１を確認することによって行われる。その判定の結果、有効データでない場合には、Ｓ１３０５に戻り、有効データである場合にはＳ１３０８に進む。
【００７５】
Ｓ１３０８では、有効データ量Ｍに１を加算し、再びＳ１３０５に戻る。一方、Ｓ１３０６において所定の時間が経過していた場合には、Ｓ１３０９において、測定値Ｍを出力値として保持する。続いてＳ１３１０において、リングバス上のデータ量Ｍを再び初期化して、Ｓ１３０５に戻る。
【００７６】
本処理も、データ処理装置が途中で停止される場合、もしくはリセットがかかるまで動作し続ける。ここで、Ｓ１３０９においては、所定の時間当たりに測定した有効データ量Ｍを出力として保持する処理のほかに、過去数回の有効データ量Ｍの保持値との平均を取るなどの測定値のばらつきを抑えるような統計処理を行っても良い。また、更に特定の予測係数等を使用して、過去の測定値から次回、次々回の測定値を予測し、これを出力として保持しても良い。
【００７７】
こうして保持された出力は、動作周波数指示値算出部１２０２によって読み出され、所定の時間当たりに、このリング状バスに与えられた標準データ量と比較される。この動作周波数の設定は、データ量の測定値Ｍの大きさに応じて、動作周波数を整数倍にして増加させる。例えば、有効データ量の測定値Ｍが、通常時の値を越え、通常時の２倍以下の場合は、動作周波数を２倍に設定する。一般的に言えば、計測されたデータ量が標準データ量を越え、標準データ量のＮ−１（Ｎ：２以上の整数）倍を超え、かつ、Ｎ倍以下の場合に、動作周波数指示値算出部１２０２は、リング状バスで処理を行う処理モジュール間のデータの転送速度を整数Ｎで乗じた転送速度に設定されるように、動作周波数が設定される。このようにすることで、データ処理の効率を向上させることができる。
【００７８】
この際にも、実際の動作においては、頻繁に動作周波数を切り替えることにより波形の乱れ等を生じ、データ処理に不具合が発生しかねないケースもありうる。こうしたことから、動作周波数指示値算出部においては、動作周波数を上げることを即座に実行し、動作周波数を下げる指示を行う場合には、所定のヒステリシス処理等を用いて制御するなどして、動作周波数が頻繁に切り替わらないように抑制するような処理を実施しても良い。
【００７９】
＜実施形態４＞
本実施形態では、動作周波数指定部１２６に対して動作周波数を指示する際に、システム制御部４００において、データ処理装置４２０に対して同時に実行を指示するデータフローの数をＦとした場合、このＦの値に基づき設定値を求めて指示する例を説明する。
【００８０】
実施形態１の図６に示したように、リング状バスのデータ転送速度を２倍にすることで、リング状バスのデータ保持能力が、パケット総数のうち半分が空状態となり、余裕が生まれることを示した。このことから、動作周波数を上げることによって、リング状バスを流れるデータ量を増やすことが可能であることがわかる。
【００８１】
一方で、複数のデータフローをリング状バスに設定する場合には、当然、リング状バスを流れるデータ量は増大することになる。システム制御部は、データ処理部に同時に実行させるデータフローの数Ｆを把握することができる。従って、システム制御部は、把握されたデータフロー数Ｆにより、たとえばリング状バスの動作周波数をこれまでの周波数のＦ倍に設定するなどの制御を行っても良い。
【００８２】
実際には、図４や図５で説明したとおり、接続順序に対して処理順序を逆にすることによって、リング状バスを流れるデータの量は変化する。そのため、データフロー数Ｆだけでは十分に周波数をどのように設定するか判断できない。しかし、そもそも運用としてリング状バスを使用する際に、接続順に従わない処理によるリング状バスの周回数を特定すると、フロー数Ｆに比例した形で制御を行うことが可能となる。
【００８３】
例えば、実施形態１の図６に示したように、処理順序の逆転が１回しかなく、データはリング状バスを２周するフローを同時に２つ処理させる場合には、データフロー数Ｆとデータの周回数２から、たとえば転送速度を決定する周波数を２ｘＦ倍に設定することが考えられる。これにより、データの周回数Ｎとデータフロー数Ｆの両方を考慮した転送速度の変更が実現できる。
【００８４】
また、図６の例では、データ処理モジュール７０２，７０３が、ともに２Ｔの処理時間を要することから、実施形態４で述べた２Ｆを２で割って、動作周波数の設定をＦ倍とすることが考えられる。実施形態５では、このように、データ周回数Ｎと同時処理データフロー数Ｆとデータ処理モジュールの処理時間２Ｔの各パラメータを組み合わせて、適切な動作周波数の設定値を決定し、動作周波数指示手段への設定値を求めてもよい。
【００８５】
＜その他の実施形態＞
上述の実施形態では入出力モジュールとして表現しているが、入力用のモジュールと出力用のモジュールが夫々異なる通信モジュールと接続されていてもよい。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005546278.tif 000002
【図２】
0005546278.tif 000003
【図３】
0005546278.tif 000004
【図４】
0005546278.tif 000005
【図５】
0005546278.tif 000006
【図６】
0005546278.tif 000007
【図７】
0005546278.tif 000008
【図８】
0005546278.tif 000009
【図９】
0005546278.tif 000010
【図１０】
0005546278.tif 000011
【図１１】
0005546278.tif 000012