(57)【要約】【課題】  複数の処理モジュールがリング状にバスで接続された情報処理システムにおいて、効率的にデータ処理を行う。【解決手段】  バスを流れる空パケットにどの処理モジュールの専用パケットにするかを識別するＩＤを設定することで、特定の処理モジュールがバス上を流れるパケットを他の処理モジュールに占有される事を抑制する。【選択図】  図７
2010245953.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置において、
前記モジュールは、
当該モジュール固有のＩＤを格納する格納手段と、
ＩＤを有するパケットを前記バスに対して送受信する通信手段と、
前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理手段とを備え、
前記通信手段が、前記有効フラグが無効で且つパケットのＩＤと前記格納手段に格納しているＩＤとが一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする情報処理装置。
【請求項２】
前記モジュールは待ち受けＩＤを保持する保持手段を更に有し、
前記通信手段は、前記有効フラグが有効で且つパケットのＩＤと前記保持手段に格納しているＩＤとが一致するパケットからデータを抽出して処理手段に送ることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記モジュールの夫々に前記固有のＩＤと前記待ち受けＩＤとを設定する設定手段を更に有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記設定手段は、前記固有のＩＤと前記待ち受けＩＤとを夫々のモジュールに設定することで、前記複数のモジュールに所定の順番でパイプライン処理を実行させることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記設定手段が前記モジュールの夫々の通信手段に、前記ＩＤを有するパケットを割り当てることを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記設定手段が前記モジュール固有のＩＤの夫々を少なくとも１つのパケットに割り当てることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記モジュール固有のＩＤの夫々をパケットに割り当てる際に、前記設定手段は配置間隔に応じて同じＩＤをパケットに割り当てることを特徴とする請求項５又は６に記載の情報処理装置。
【請求項８】
前記通信手段は、データを格納したパケットのフラグを有効にして前記バスに送出することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記通信手段は、データを抽出したパケットのフラグを無効にして前記バスに送出することを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記有効フラグが無効であれば、パケットのＩＤと前記保持手段に格納しているＩＤとが一致していなくても、所定数のパケットに前記処理手段の処理したデータを格納して送出することを特徴とする請求項２乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記パケットはパケットを複数のモジュールで共用していることを示す共用フラグを有し、共用フラグの有効なパケットについて前記有効フラグが無効であれば、パケットのＩＤと前記保持手段に格納しているＩＤとが一致していなくても、前記通信手段が当該パケットに前記処理手段の処理したデータを格納して送出することを特徴とする請求項２乃至９のいずれか１項に記載の情報処理装置。
【請求項１２】
前記格納手段がレジスタであることを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
複数のモジュールがバスを介してリング状に接続され、該モジュールがパケットをリング上の所定の方向へ転送する情報処理装置において、
前記モジュールは、
当該モジュール固有のＩＤを格納する格納手段と、
ＩＤを有するパケットを前記バスに対して送受信する通信手段と、
前記パケットが有効である事を示す有効フラグとＩＤとを識別する識別手段と、
前記通信手段と一対一で接続され、前記識別手段によって有効であることが識別されているパケットのデータを処理する処理手段と、
前記通信手段は、前記識別手段が前記有効フラグの無効なパケットで且つパケットのＩＤが前記格納手段に格納しているＩＤと一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする情報処理装置。
【請求項１４】
パケットにＩＤを設定する設定手段を前記リング状のバスに更に有し、当該設定手段はＩＤが設定されていないパケットが通過する際にＩＤを設定することを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
パケットにＩＤを設定する設定手段を前記リング状のバスに更に有し、当該設定手段は前記有効フラグが無効のパケットにＩＤを設定することを特徴とする請求項１３に記載の情報処理装置。
【請求項１６】
前記設定手段は、同じＩＤを有するパケットの間隔が制御間隔以上になるように制御することを特徴とする請求項１４又は１５に記載のデータ処理装置。
【請求項１７】
前記設定手段は、前記ＩＤ毎の制御間隔を保持し、同じＩＤを有するパケットの間隔がＩＤに応じた制御間隔以上になるように制御することを特徴とする請求項１６記載のデータ処理装置。
【請求項１８】
複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置における情報処理方法であって、
前記モジュールが、
当該モジュール固有のＩＤを格納する格納工程と、
ＩＤを有するパケットを前記バスに対して送受信する通信工程と、
前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理工程とを備え、
前記通信工程では、前記有効フラグが無効で且つパケットのＩＤと前記格納工程で格納しているＩＤとが一致するパケットに、前記処理工程で処理したデータを格納して送出することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理を行う複数のＩＰ（モジュール）がリングバスで接続された情報処理装置及びその制御方法に関する。
【背景技術】
【０００２】
リング状の通信ネットワーク（回路網）の１種であるトークンリングネットワーク（ＴＲＮ）の概念を取り入れたもので、複数の処理部から構成されるＴＲＮ型データ駆動型処理システムがある（特許文献１）。
【０００３】
データを送信したい処理部は、バスを周回しているフリートークンと呼ばれるパケットを獲得する。そして、フリートークンを獲得した処理部はトークンに宛先識別子や処理データをコピーしてバスに送出し宛先モジュールに送信する。
【０００４】
一方、受信側の処理部は自らを宛先とするトークンを受信した場合に、処理データをコピーして受信が完了したことを示す受信完了フラグを設定し受信したトークンを再度リングバスに投入する。そして、送信元ノードは前記受信完了フラグが設定されていないトークンが戻ってきた場合は同じトークンを再送する。受信完了フラグが設定されているトークンが戻ってきた場合はトークンに付いているフラグをクリアする。
【０００５】
以上の処理によって、例えばトークンが１つのときは一度に１つの処理部がリング状のバスを専有する通信方式が実現される。このような通信方式をトークンパッシングリング方式という。
【０００６】
しかし、データ処理を行う複数のモジュールがリングバスで接続された情報処理システムにおいて、トークンパッシング方式を適用する場合、受信成功の成否に関わらずトークンを送信元に返送しなければならない。つまり、受信が成功していたとしても、受信した処理部から送信元した処理部まで戻されている途中のトークンは他の処理部が使用できないので効率的ではない。
【０００７】
また、リングバスに複数の処理部を接続しているシステムではトークンパッシング方式のようにリングバスを流れるパケットを停滞させない事が重要である。これは、処理部が並列処理できる場合にリングバスを流れるデータの流れを止めてしまうと、処理可能な処理部が強制的に待ち状態になるためである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６４−２３３４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は複数の処理部がリングバスで接続された情報処理装置で、リングバスを流れるパケットの流れをなるべく停滞させずに、効率良くさせることを目的とする。
【課題を解決するための手段】
【００１０】
この課題を解決するため、本発明の情報処理装置は複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置において、前記モジュールは、当該モジュール固有のＩＤを格納する格納手段と、ＩＤを有するパケットを前記バスに対して送受信する通信手段と、前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理手段とを備え、前記通信手段が、前記有効フラグが無効で且つパケットのＩＤと前記格納手段に格納しているＩＤとが一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、リングバスを流れるパケットの流れをなるべく停滞させずに、リングバスを流れるパケットのトラフィック量を最適化できる。
【図面の簡単な説明】
【００１２】
【図１】通信処理部の概略構成を示すブロック図である。
【図２】パケットのフォーマットを示す図である。
【図３】複数のデータ処理部をリングバスで接続した処理装置を示す図である。
【図４】処理装置の初期設定処理を示すフローチャートである。
【図５】画像処理装置の概略構成を示すブロック図である。
【図６】実施例１の出力データ生成部の処理を示すフローチャートである。
【図７】実施例１におけるマッピング処理を図示する概略図である。
【図８】実施例２の出力データ生成部の処理を示すフローチャートである。
【図９】実施例２のパケット開放処理を示すフローチャートである。
【図１０】統一ＩＤと固有ＩＤテーブルとの対応関係を保持するテーブルである。
【図１１】実施例３の出力データ生成部の処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
＜参考例＞
まず、複数の情報処理部をリング状バスに接続した情報処理装置において、処理速度が低下する一例について説明する。図１は、通信路（バス）と情報処理部（以降、データ処理部）をつなぐ通信処理部１０８の構成を示すものであり、通信処理部にはデータ処理部１０７が接続されている。入力データ受信部１０１は、リングバス上を流れるデータパケットを受信する。入力データ識別部１０２は、入力されたデータパケットの制御情報を確認し、入力されたデータが、自ノードにおいて処理すべきデータかどうかを識別する。ここで、処理すべきデータであると判断した場合、パケットから抽出したデータを処理データ出力部１０３へ送信し、データを抽出したパケットのバリッドビットを変更し空パケットにする。
【００１４】
処理データ出力部１０３は、入力データ識別部１０２において自ノードにおいて処理すべきデータであると判断されたデータを、データ処理部１０７に対して送出する。処理済みデータ入力部１０４は、自ノードのデータ処理部において処理済のデータの入力を受け取る。
【００１５】
出力データ生成部１０５は出力すべきデータを保持していない場合、識別部１０２からのパケットはそのまま出力する。そして、入力部１０４から送られる、処理済であってバス上に出力すべきデータを有する場合は空パケットが回ってきた時に、出力用のパケットを生成する。出力データ送信部１０６は、出力データ生成部１０５が生成した出力データをリングバスに放出する。以上のように、リング状に接続される複数の処理モジュールについて、リング上を所定の一方向へデータを転送する。
【００１６】
図２は、このようなデータ通信処理部のリングバスにおいて送受信されるパケットのデータ構造を示したものである。
【００１７】
フィールド２０１は、データの処理順番を示すカウンタである。リング状のデータバスにおいては、連続する未処理データを含むデータパケットの一部がリング内を周回することがある。従って、通信処理部が受信するデータが、必ずしも対応するデータ処理部で最初に処理されるべきデータであるとは限らない。よって、このようなカウンタをデータに付随して持たせることで、入力された順など、正しい処理順番に従って処理を実行させる事が可能となる。なお、対応するデータ処理部とは、通信処理部がリングバスを介さずに直接通信可能なデータ処理部の事を指すものとする。
【００１８】
フィールド２０２はこのデータパケットが保持しているデータが処理されるべき有効データであることを示すフラグである。これはすなわち、パケットが現在使用中であるかどうかを示すフラグと同じ意味を持つ。以下、このフラグをバリッドビット（有効フラグ）と呼称する。フィールド２０３は、このパケットが保持しているデータが何らかの理由で、処理すべきデータ処理部に処理されなかったことを示すフラグである。通常のパイプライン接続における、前段へのデータ供給停止要求ビット（ｄｉｓａｂｌｅ信号）と同様の意味を持つ。以下、このフラグをストールビットと呼称する。
【００１９】
フィールド２０４は、このデータを最後に処理したデータ処理部のＩＤである。データ通信処理部では、あらかじめ外部から設定された待ち受けＩＤを保持している。そして、前述の入力データ識別部１０２はこの待ち受けＩＤと、このデータパケット上のＩＤとを比較し、一致した際に処理データ出力部１０３にパケットを取り込んで処理を行う。また、フィールド２０５は、データやコマンドを格納する。（ａ）、（ｂ）はデータパケットとコマンドパケットとを示しているが、フィールド２０５にデータとコマンドを混在させて格納してもよい。
【００２０】
通常、ＩＤを比較する前に、バリッドビットはパケットが有効であることを示す値に設定されているかを確認し、有効なパケットについてＩＤが一致するものを通信処理部がデータ処理部に処理させる。一方で、通信処理部はデータ処理部が処理したデータをパケットに格納する場合、バリッドビットはパケットが無効であることを示す値に設定されているかを確認し、無効なパケット（空のパケット）にデータを格納する。
【００２１】
概念的には、リングバスを流れるパケットの総数はほぼ一定である、即ち、空パケットと有効なパケットとの和はほぼ一定であり、この一定数のパケットがリングバスを周回し続けている。ここで、空パケットとは格納するデータが無効とされたパケットであり、有効なパケットとはデータやコマンドを格納しているパケットである。
【００２２】
図３（ａ）は、リングバスを採用している画像処理部の構成の一例を示す図である。
【００２３】
データ取得部３０１は、外部記憶装置などから処理すべきデータを取得する。通信処理部３０２は、取得されたデータをリング状に構成されている通信路に供給する処理を行う。データ処理部３０４は、供給されたデータに対して所定の処理を行う。通常、情報処理を行う上で処理部が外部と通信する事のないスタンドアローンな状態を取る事はない。しかし、本明細書では処理部の通信処理について詳細に説明するために、処理部からデータ処理部と通信処理部を独立させて説明している。
【００２４】
通信処理部３０３は、リング状に構成された通信路から、データ処理部３０３で処理すべきデータを通信路から選別して取り込む通信処理部である。この構成においては、データ処理部３０３および通信処理部３０４を有する処理部がリングバス３０７に１つ以上接続されている。
【００２５】
出力通信処理部３０５は、処理済のデータを外部の記憶装置などに出力するため、リング状の通信路上から処理済のデータを選択して取り込む。出力部３０６は、通信処理部３０５により取り込まれた処理済のデータを外部記憶装置などに出力する。リングバス３０７は、これらの通信処理部を通信可能に連結するリング状のデータバスである。
【００２６】
図３（ｂ）は、図３（ａ）に示した構成において、デッドロックが発生する状態を説明する図である。ここでは、データの順番を示すために、データ３０９〜３１１の中に、データの入力順番を示す数字を記載している。
【００２７】
データ処理部３０８は、一度に３つのデータを処理して出力するデータ処理部である。データ処理部３０８が３つのデータを取得してから処理を終了するまで、データ処理部３０８と一対一で通信する通信処理部３０３は処理結果を出力できない。
【００２８】
ここで、データ取得部３０１が、データ処理部３０８の処理中も継続してデータを供給し続けた場合、リングバス上を周回するパケットのすべてが入力データで埋まってしまう事がある。その場合、空きパケットがなくなるために、データ処理部３０８から出力されるデータ３０９はリングバス３０７に出力できないまま停滞してしまう。
【００２９】
また、データ処理部３０８は、自身が処理したデータの全てを出力するまで、次のデータ処理に移行できないものであるとする。この場合、データ処理部３０８は処理済データを出力できないため次のデータを取得することができない。一方で、データ取得部３０１も、通信処理部３０２がデータをリングバス３０７に出力できないため止まってしまう。
【００３０】
さらに、データ出力部３０６も、出力すべき処理済データ３０９がデータ処理部３０８から出力されてこないため、いずれのデータも外部に出力することができない。
【００３１】
このようにして、複数の処理部をリングバスに接続したデータ処理装置において、未処理データによってリングバス上のすべてのパケットが占有されてしまう事がある。それによって、データ処理部が次のデータを取得できない状態になり、処理を継続できないデッドロック状態に陥ってしまう。
【００３２】
＜実施例１＞
次に本発明の一実施例である実施例１について説明する。なお、参考例と構成的、機能的にかわらないものについてはその説明を省略する。
【００３３】
図５は、実施例１のシステムの概略構成を示す図である。制御処理部６０１はＣＰＵやＭＰＵなどの処理回路である。画像処理部６０２は、リングバスで接続されている複数の処理部（モジュール）を有する画像処理部である。
【００３４】
ＲＡＭ６０３は、処理する前の入力画像データや処理後の出力画像データ、又は、画像処理部６０２の設定パラメータに関するデータなどを格納する読み書き可能なメモリである。ＲＯＭ５０４は、制御処理部５０１や画像処理部５０２の処理手順や、設定パラメータ等の定数などを保持可能な読み出し可能なメモリである。
【００３５】
制御処理部５０１において、ＲＯＭ５０４から読み出されたプログラムにしたがって、システムの制御ならびに画像処理部５０２への指示等を行う。画像処理部５０２は、処理装置５０１からの指示に従って画像処理を実行する。その際に、ＲＡＭ５０３にあらかじめ格納されている入力画像データを読み出して処理を行い、処理結果を再びＲＡＭ５０３に書き込む。また、システムバス５０５は制御処理部５０１、画像処理部５０２、ＲＡＭ５０３、画像処理部５０２を通信可能に接続するバスである。
【００３６】
図４に制御処理部５０１による画像処理部５０２の設定処理の処理手順を示す。
【００３７】
画像処理制御が開始されると、以下のステップに従って処理を実行する。ステップＳ４０１で制御処理部５０１は、ＲＯＭ５０４から画像処理部５０２のデータ処理部の処理順番を読み出す。ステップＳ４０２で制御処理部５０１は、ＲＯＭからデータ処理部に与える処理パラメータを読み出す。ステップＳ４０３で制御処理部５０１は、読み出したデータ処理順番及び処理パラメータを用いて画像処理部５０２の制御パラメータを算出する処理を行う。
【００３８】
ステップＳ４０４で制御処理部５０１は、ステップＳ７０３で算出した制御パラメータを用いて、画像処理部５０２に対する設定処理を行うステップＳ４０５で制御処理部５０１は、画像処理部５０２に対して処理開始の指示を行う。ステップＳ４０６で制御処理部５０１は、画像処理部５０２の設定の完了を確認し、
ステップＳ４０７において、設定処理が完了したと判断した場合には、処理を終了する。ここで、処理が未終了であった場合には、再びステップＳ４０６へ戻り、終了確認処理を継続する。
【００３９】
また、図７は４つのモジュールがリング状に接続されている画像処理部５０２の構成を示すブロック図であって、マッピング処理を説明するのに適するようにデータ処理部とリングバス上のレジスタを強調している。画像処理部５０２は、通信処理部８０１〜８０４、データ処理部８１６〜８１９、レジスタ８０５〜８１２、リングバス８１３を有している。また、入出力バッファ８１４を介して画像処理部５０２の外部からデータを入力、もしくは外部へデータを出力可能に構成されている。通信処理部８０１〜８０４はそれぞれ自身が処理するデータを識別する情報（以下、待ち受けＩＤ）を格納するレジスタ８１５を具備する。本実施例では、データ処理部８０１〜８０４のレジスタに設定されている待ち受けＩＤと、受け取ったパケットのＩＤとが一致することを判別することで処理すべきパケットを識別するものとする。また、本実施例では説明を簡便にするため、データ処理部は１つの入力データを処理して１つの出力データを得るものとし、リングバスを周回するパケットの数の総数はレジスタに相当する８個とする。
【００４０】
各データ処理部の待ち受けＩＤの設定やパケットのマッピングは制御処理部５０１で動作するソフトウェアプログラムが行う。まず、各データ処理部に固有のＩＤ（モジュール固有のＩＤ）をレジスタ８１６に割り振る。ここでは本実施例では待ち受けＩＤとして（１）を格納しているデータ処理部は処理回路外部へのデータの入出力を管理するように設定する。また、各データ処理部の固有のＩＤは予め固定の値を設定するようにしてもよい。
【００４１】
次に制御処理部５０１は、各データ処理部の待ち受けＩＤ（ｗＩＤと表記している）を設定する。本実施例では、通信処理部８０１のｗＩＤを（４）、データ処理部８０２のｗＩＤを（３）、データ処理部８０３のｗＩＤを（１）、データ処理部８０４のｗＩＤを（２）と設定する。各処理部に固有ＩＤと待ち受けＩＤとを設定すると、複数の処理部によるデータフローが仮想的に形成される。図７のように設定すると、バッファ８１４からデータを入力した後に、通信処理部８０１→データ処理部８０３→データ処理部８０２→データ処理部８０４の順番でパイプライン処理をした後にバッファ８１４へ出力される。
【００４２】
次に、制御処理部５０１は、８個の空パケットを各レジスタにマッピングする。その際に、８個の空パケットはバリッドビットとして無効を示す値（０）を格納し、更に、ＩＤを格納している。図７に示すように、レジスタ８０５にはＩＤとして３を格納するパケットがマッピングされている。同様にレジスタ８０６〜８１２には夫々、ＩＤが１、４、２、４、３、２、１、のパケットが順にマッピングされている。本実施例ではデータ処理部が４つであり、４種類のＩＤの全てをマッピングする必要がある。ただし、データ処理に用いない処理部があるときはそのＩＤを有する空パケットをマッピングする必要はない。また、同じＩＤを有する空パケット同士の必要な間隔を配置間隔とする。本実施例では配置間隔を（１）としているため、同じＩＤを有する空パケットは隣り合わないようにマッピングされる。
【００４３】
図１は、通信路（バス）とデータ処理部をつなぐ通信処理部の構成を示すものである。
【００４４】
出力データ生成部１０５は、識別部１０２において自ノードで処理すべきデータでないと判断されたデータや、有効なデータを含んでいないと判断された空パケットや、処理済みデータ入力部１０４から送られる、処理済であってバス上に出力する必要のあるデータなどから、出力データを生成する。
【００４５】
入力データ識別部１０２がデータを抽出してバリッドビットを無効にする際に、参考例の方式であればデータを抽出したパケットのＩＤやデータもクリアして構わないが、本実施例ではＩＤをクリアしない。
【００４６】
そして、出力データ生成部１０５は、データ処理部が処理したデータをパケットに格納する際、バリッドビットを確認し空パケットであるかを確認し、更にパケットに付加されているＩＤが固有ＩＤと一致するかを確認する。即ち、空パケットであって固有ＩＤが一致するパケットにしか出力データ生成部は処理済のデータを格納しない。
【００４７】
なお、入力データ識別部１０２は待ち受けＩＤを保持するレジスタを有しており、出力データ生成部は固有ＩＤを保持するレジスタを有している。上述のステップ４０４において制御処理部５０１はこれらのレジスタに値を設定する。また、処理済データ入力部１０４はデータ処理部からデータを受け取った際に、データを保持している事を示すために保持フラグを出力データ生成部に設定する。すなわち、出力データ生成部１０５は保持フラグの値を有するレジスタを有している。なお、各構成がレジスタを有していると説明しているが、レジスタの値を参照可能な様に構成するだけでもよい。
【００４８】
図６は出力データ生成部１０５が行う処理を示すフローチャートである。
【００４９】
ステップ６０１では入力データ受信部１０１、入力データ識別部１０２を介してリングバスからパケットを取得する。ステップ６０２ではパケットからＩＤを取得する。ステップ６０３では固有ＩＤを取得する。ステップ６０４では保持フラグをチェックする。フラグが１であればステップ６０７を実行する。一方、フラグが０であればステップ６０５を実行する。
【００５０】
ステップ６０５ではデータ処理部から処理後データを取得する。ステップ６０６ではデータ処理部から有効な処理後データが得られたかを確認する。有効な処理後データが得られた場合はステップ６０７を実行する。得られなかった場合はステップ６１４を実行する。
【００５１】
ステップ６０７では出力データ生成部１０５の取得したパケットのデータ有効信号が下がっているかを確認する。本実施例では、データ有効信号（バリッドビット）が（０）である場合に信号が下がっており、パケットが無効であることを示すものとする。そして、下がっていればステップ６０８でパケットのＩＤ（送信元ＩＤ）と処理部に設定されている固有ＩＤが一致するかをチェックする。パケットのＩＤと処理部に設定されている固有ＩＤが一致する場合はパケットのデータ格納領域に処理後のデータを格納する。さらに、ステップ６１０で保持フラグを０にクリアし、ステップ６１１でデータを格納したパケットのデータ有効信号を（１）に設定する。
【００５２】
一方で、ステップ６０７でバリッドビットが（１）であった場合、又はステップ６０８でパケットのＩＤと処理部の固定ＩＤが一致しない場合はステップ６１２で処理済データ入力部から取得したデータを一時的に保持する。ステップ６１２では処理後データをレジスタなどに格納し保持する。ステップ６１３では保持フラグを１にする。ステップ６１４ではパケットを出力しレジスタなどに格納する。
【００５３】
以上のように実施例１では、概念的にリングバスを流れるパケットを複数のデータ処理部の１つに専用のパケットとし、データ処理に用いる処理部の夫々に少なくとも１つの専用のパケットを割り当てる。従って、実施例１ではパケットの格納するＩＤは処理部によって変更されることはない。これにより、同じ処理部が出力するパケットでバス上が埋め尽くされる事で生じるデッドロックを回避することができる。
【００５４】
少なくとも、１つのデータ処理部（モジュール）について専用のパケットを設ければ、そのデータ処理部は他のデータ処理部にパケットを埋め尽くされる恐れが無くなる。複数のモジュールが順番にパイプライン処理をする場合に、入力されるパケットの数より多くのパケットを出力するモジュールよりも処理順番が後段のモジュールに専用のパケットを設ければ、パケット埋め尽くしによるデッドロックが発生する可能性は低くなる。
【００５５】
また、図７に示すように同じＩＤを有するパケットを制御処理部５０１が隣り合わないように配置することで、リングバスを流れるパケットの偏りを減らし、データが効率良く処理されるようになる。例えば、同じＩＤを有するパケットが局所的に連続する場合、各処理部は自身の保持する固有ＩＤと異なるＩＤを有するパケットが連続している間は処理したデータを出力できないので効率が良くないことがある。そこで、制御処理部５０１がパケットをマッピングする際に配置間隔というパラメータに基づいてマッピングするようにしてもよい。例えば、〔配置間隔＝１〕の場合は同じＩＤを有するパケットの間には少なくとも１つの別のＩＤを有するパケットがマッピングされる。
【００５６】
ただし、データ処理部の少なくとも１つが２つ以上のパケットを入力されないと、処理が始まらない場合（例えば、縮小処理等）、その処理部の固有ＩＤを有するパケットのみ処理に必要な数だけ連続して配置してもよい。
【００５７】
＜実施例２＞
実施例１と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
【００５８】
実施例１ではリングバスから取得したパケットのＩＤが処理部の固有ＩＤと一致しない場合、出力データ生成部１０５はパケットに処理後のデータを格納しなかった。しかし、本実施例では一致しない場合でも、データ有効信号が無効を示していればパケットに処理後データの格納を行っても良いとする。以下の説明ではそのようなパケットを借用パケットと呼ぶ。また、借用したパケットは借用元のデータ処理部が借用する前のＩＤを再度格納することで開放する。
【００５９】
なお、本実施例ではフィールド２０４にＩＤとは別に借用フラグを格納する領域を１ビット割り当てる。そして、フラグが１であれば借用パケットを示しており、０であれば借用パケットではないことを示しているとする。さらに、借用したパケットに借用する前のＩＤを付加する為に、各パケットを識別するパケット用の固有ＩＤ（以下、統一ＩＤと呼称する）を付加する。
統一ＩＤはパケット毎に固有の識別子とする。
【００６０】
本実施例におけるデータ処理部のブロック図を図１に示す。
【００６１】
出力データ生成部１０５は、入力データ識別部から取得する空パケットのＩＤが固有ＩＤと異なっていても、現在借用しているパケット数が所定数を越えていなければ、データと自身の固有ＩＤを格納する。出力データ生成部１０５には借用パケット数をカウントするカウンタを有している。また、空パケットを借用する際は、借用するパケットの元のＩＤと借用した処理部の固有ＩＤとを図１０に示すように借用テーブルに保持する。
【００６２】
図８は本実施例におけるお出力データ生成部１０５のフローチャートである。なお、ステップ９０１、９０４〜９０８、９１３〜９１８は夫々、図６のステップ６０１、６０４〜６０８、６０９〜６１４と同様の処理であるので説明を省略する。
【００６３】
ステップ９０２では借用パケット開放ステップを行う。詳細は後述する。
【００６４】
ステップ９０３ではステップ９０２で借用パケットを開放したか否かを判断し、開放したのであればステップ９１８を実行する。開放しなかったのであればステップ９０４を実行する。
【００６５】
ステップ９０９では借用パケットカウンタの値が設定数（最大借用パケット数）よりも小さいかをチェックする。借用パケットカウンタの値が最大借用パケット数よりも小さければ、ステップ９１０で借用パケットカウンタを１だけインクリメントする。ステップ９１１ではパケットのＩＤを自らの処理部の固有ＩＤで上書きする。ステップ９１２ではテーブルに統一ＩＤと固有ＩＤとの対応を格納する。
【００６６】
次にステップ９０２で示した借用パケット開放処理に関するフローチャートを図９に示す。以下で説明する。ステップ１００１ではパケットから統一ＩＤを取得する。ステップ１００２ではパケットのデータ有効信号を確認する。データ有効信号が０であればステップ１００３を実行し、１であれば処理を終了する。
【００６７】
ステップ１００３では借用フラグを０にする。ステップ１００４ではテーブルから借用前のパケットのＩＤを取得する。ステップ１００５では取得したＩＤをパケットのＩＤとして再び設定する。ステップ１００６では借用パケットカウンタを１デクリメントする。
【００６８】
以上説明したように受信した空パケットのＩＤが固有ＩＤと異なる場合でも、一時的にパケットを借用することで、より効率的にデータ処理を行うことが可能である。
【００６９】
なお、統一ＩＤを用いなくても借用フラグを用いるだけでも同様の効果を奏する事ができる。その場合には、出力データ生成部１０５は借用フラグが１になっているパケットを受信した際に、開放する処理をテーブルに基づいて行う。ここで、テーブルには借用元のＩＤと借用先のＩＤとの個数の関係を示す情報があれば、それに基づいて借用パケットを開放すればよい。
【００７０】
＜実施例３＞
実施例１、２と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。本実施例ではどのデータ処理部でも利用可能な共用パケットを配置する。
【００７１】
また、本実施例において出力データ生成部１０５は実施例１の場合に加え、パケットのＩＤが未設定の場合、又はパケットが共用を示す情報が付加されている場合でもパケットに処理データの格納を行う。
【００７２】
本実施例の出力データ生成部１０５は同じ固有ＩＤを有するパケットを所定の制御間隔以上で配置するための設定値を格納するレジスタ（以降、データ間隔格納部１２０５）を有している、又は参照可能である。制限間隔はＩＤ毎に設定されてもよい。なお、レジスタ８１５をデータ間隔格納部１２０５として利用してもよい。
【００７３】
なお、本実施例ではパケットＩＤ２０４の最上位１ビット目を共用フラグとしており、このフラグが１であれば共用を示しており、０であればそれ以外を示しているとする。もちろん、共用フラグ専用の領域を別に設けてもよい。一方、データ有効信号が０に設定されている際に自らの占有とした場合は、最上位２ビット目の借用フラグを１にするものとし、それ以外の場合は０にするものとする。同様に借用識別領域をパケットに設けてもよい。そのようなパケットを借用パケットと以下では呼ぶ。また、本実施例ではパケットのＩＤが０の場合は、ＩＤが未設定であるとする。
【００７４】
また、出力データ生成部１０５は、自らの固有ＩＤを付加したパケットを少なくともデータ間隔格納部１２０５が保持する値以上の間隔をもって送出するようにできる。また、その動作は指示によってＯＮ・ＯＦＦの制御ができるものとする。
【００７５】
図１１は本実施例における出力データ生成部１０５のフローチャートである。ステップ１３０１ではパケット一時保持バッファからパケットを取得する。ステップ１３０２ではパケットからＩＤを取得する。ステップ１３０３では自らの固有ＩＤを保持するレジスタを参照して固有ＩＤを取得する。
【００７６】
ステップ１３０４では保持フラグを確認する。この、フラグが０であればステップ１３０５を実行し、１であればステップ１３０７を実行する。
【００７７】
ステップ１３０５ではデータ処理部から処理後データを取得する。ステップ１３０６ではデータ処理部から有効な処理後データが得られたかを確認する。有効な処理後データが得られた場合はステップ１３０７を実行し、得られなかった場合はステップ１３２３を実行する。
【００７８】
ステップ１３０７ではパケットから取得したＩＤと固有ＩＤとを比較し、一致すればステップ１３０８を実行し、一致しなければステップ１３１５を実行する。ステップ１３０８ではパケットのデータ有効信号が０であるかを確認し、０であればステップ１３０９を実行し、１であればステップ１３１４を実行する。
【００７９】
ステップ１３０９ではパケットに処理後データを格納し、ステップ１３１０では保持フラグを０にし、ステップ１３１１ではパケットのデータ有効信号を１に設定する。
【００８０】
ステップ１３１２ではパケットのＩＤとして固有ＩＤを格納する。ステップ１３０７でパケットＩＤと固有ＩＤとが等しかった場合にはステップ１３１２の処理を省略して構わない。
【００８１】
ステップ１３１３ではデータ間隔カウンタを０にリセットする。
ステップ１３１４ではパケットが共用を示しているかを確認する。共用を示していればステップ１３１５を実行する。共用を示していなければステップ１３１８を実行する。
【００８２】
ステップ１３１５ではパケットのデータ有効信号が０であるかを確認する。０であればステップ１３１６を実行する。１であればステップ１３１９を実行する。
【００８３】
ステップ１３１６ではデータ間隔格納部から所定の間隔値を取得する。ステップ１３１７ではステップ１３１６で取得した間隔値とデータ間隔カウンタを比較してデータ間隔カウンタが間隔値以上の場合はステップ１３０９を実行する。そうでなければ、ステップ１３１９を実行する。
【００８４】
ステップ１３０８ではパケットのＩＤが未設定かを確認する。パケットのＩＤが未設定の場合はステップ１３１６を実行し、未設定でない場合はステップ１３１９を実行する。
【００８５】
ステップ１３１９では処理後データをレジスタに保持する。ステップ１３２０では保持フラグを１にする。ステップ１３２１ではデータ間隔カウンタを１だけインクリメントする。ステップ１３２２ではパケットのデータ有効信号を０にクリアする。
【００８６】
ステップ１３２３ではパケットをレジスタ等にコピーする。
なお、実施例１及び実施例２の場合と同様に保持フラグはデータ処理装置初期化時に０クリアされるものとする。
【００８７】
以上説明したようにデータ処理部識別情報が未設定のパケットや共用パケットを占有し、ある間隔ごとに配置することでより効率的にデータ処理を行うことが可能である。
【００８８】
上述の各実施例では、パケットのマッピングは制御処理部１０１が行うとしているが、リングバス上にパケット制御部を設置し該パケット制御部が制御処理部１０１の代わりにパケットの割り当てを行う様にしてもよい。その場合、制御処理部１０１を通過するパケットについて、前述のようにＩＤを格納する処理を行えばよい。
【００８９】
上述の各実施例で用いたデータ処理装置の各部の概略構成図は、回路や機能手段の接続関係を説明するためのものであって、各構成の位置関係を制限するものではない。また、説明の簡便のために通信部が６個の例を挙げたが、本発明を実施するためには通信部や処理部は複数有ればよい。
【００９０】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をコンピュータ等の処理装置（ＣＰＵ、プロセッサ）にて実行することで実現できる。
【００９１】
また、本発明は前述した各実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【符号の説明】
【００９２】
１０１  入力データ受信部
１０２  入力データ識別部
１０３  処理データ出力部
１０４  処理済みデータ入力部
１０５  出力データ生成部
１０６  出力データ送信部
１０７  データ処理部
【図１】
2010245953.tif 000003
【図２】
2010245953.tif 000004
【図３】
2010245953.tif 000005
【図４】
2010245953.tif 000006
【図５】
2010245953.tif 000007
【図６】
2010245953.tif 000008
【図７】
2010245953.tif 000009
【図８】
2010245953.tif 000010
【図９】
2010245953.tif 000011
【図１０】
2010245953.tif 000012
【図１１】
2010245953.tif 000013