(57)【要約】【課題】  保留パケットの発生を抑える事により、リングバスの占有率を下げてデッドロックを回避し、かつ処理順序の変更が可能なデータ処理装置を実現する。【解決手段】  リングバスと処理部の間を接続する通信部内にバッファを設け、ｅｎａｂｌｅ信号により通信部と処理部のデータ転送を制御することにより、保留パケットの発生を抑え、リングバスの占有率を下げてデッドロックを抑制する。【選択図】  図６
2010244512.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置において、
前記処理モジュールは、
前記バスを介して前記リングの第１の方向から受信するデータを第２の方向へ送信する通信手段と、
前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段とを有し、
前記通信手段は、前記第２の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御することを特徴とするデータ処理装置。
【請求項２】
前記第２の方向側の通信手段からの許可信号が無効を示す場合、当該通信手段は前記処理手段から当該通信手段へのデータの転送を停止させることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記バスとは別に前記第１の方向へ前記許可信号を送信するための信号線を更に有することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記通信手段は、一対一で接続されている処理手段が処理すべきデータを当該処理手段が処理できない状態で受信した際に、処理をしなかったことを示すフラグを前記データに付加して前記バスに出力することを特徴とする請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
受信するデータを識別するＩＤと処理手段のＩＤとを格納する記憶手段と、
前記処理手段が処理したデータに前記処理手段のＩＤを付加してパケットを生成する生成手段とを更に有することを特徴とする請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
第１の通信手段と、当該第１の通信手段よりデータの転送方向の１つ上流側に接続されている第２の通信手段とが、前記転送方向に沿った順番で連続してデータを処理する場合に、前記第２の通信手段は前記第１の通信手段からの転送許可信号を用いる第１のモードでリングバス上にデータを出力することを特徴とする請求項１乃至５のいずれか１項に記載のデータ処理装置。
【請求項７】
第１の通信手段と、当該第１の通信手段よりデータの転送方向の１つ上流側に接続されている第２の通信手段とが、前記転送方向に沿わない順番でデータを処理する又は連続にデータを処理しない場合に、前記第２の通信手段は前記第１の通信手段からの転送許可信号を用いない第２のモードでリングバス上にデータを出力することを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記通信手段の夫々は、前記第１のモードと前記第２のモードとを切換える切換手段を有することを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記切換手段は、前記通信手段が第３のモードに設定されている場合に受信したデータを、前記処理手段を介さずに前記第２の方向の通信手段へ送信する第３のモードに切換えることを特徴とする、請求項８に記載のデータ処理装置。
【請求項１０】
前記処理手段は、当該処理手段をパイプライン処理に用いない場合に、入力されるデータに加工を加えない設定を保持することを特徴とする請求項１乃至９のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記通信手段は転送するデータを格納する格納手段を有し、前記第１のモードでデータの転送を行う際に、前記第１の通信手段からの許可信号が無効の場合は、転送するデータを前記格納手段に格納することを特徴とする請求項６乃至１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
複数の処理モジュールがバスと信号線の夫々によってリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送してパイプライン処理を実行するデータ処理装置において、
前記処理モジュールは、
前記バスを介して前記リングの第１の方向から受信するデータを第２の方向へ送信する通信手段と、
前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段と、
前記処理手段の処理したデータを前記第２の方向側の通信手段からの許可信号に応じて送出する送信制御手段と、
前記信号線によって接続される前段の処理モジュールへ前記許可信号を通知する第１のモード、又は、前記データに前段の処理モジュールへの許可信号を付加して前記第２の方向へ送信する第２のモードを当該処理モジュールに設定する設定手段と、
を有することを特徴とするデータ処理装置。
【請求項１３】
前記複数の処理モジュールがパイプライン処理を実施する順番を処理順序として、前記複数の処理モジュールの処理順序と接続順序とを比較し、各モジュールの制御手段に前記第１のモードと第２のモードのどちらを使うかを前記設定手段に設定する制御手段を更に有することを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置におけるデータ処理方法であって、
前記処理モジュールが、
通信手段によって前記バスを介して前記リングの第１の方向から受信するデータを第２の方向へ送信する通信工程と、
前記通信手段と一対一で接続されている処理手段が、前記通信手段からのデータを処理する処理工程と、
を有し、
前記通信工程では、前記第２の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御することを特徴とするデータ処理方法。
【請求項１５】
複数の処理モジュールがバスと信号線の夫々によってリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送してパイプライン処理を実行するデータ処理装置におけるデータ処理方法であって、
前記処理モジュールが、
通信手段によって前記バスを介して前記リングの第１の方向から受信するデータを第２の方向へ送信する通信工程と、
前記通信手段と一対一で接続されている処理手段が、前記通信手段からのデータを処理する処理工程と、
前記処理手段の処理したデータを前記第２の方向側の通信手段からの許可信号に応じて送出する送信制御工程と、
前記信号線によって接続される前段の処理モジュールへ前記許可信号を通知する第１のモード、又は、前記データに前段の処理モジュールへの許可信号を付加して前記第２の方向へ送信する第２のモードを当該処理モジュールに設定する制御工程と、
を有することを特徴とするデータ処理方法。
【請求項１６】
複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置を制御するプログラムであって、
前記処理モジュールを、
前記バスを介して前記リングの第１の方向から受信するデータを第２の方向へ送信する通信手段と、
前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段と、して機能させ、
前記通信手段は、前記第２の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御することを特徴とするプログラム。
【請求項１７】
複数の処理モジュールがバスと信号線の夫々によってリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送してパイプライン処理を実行するデータ処理装置を制御するプログラムであって、
前記処理モジュールを、
前記バスを介して前記リングの第１の方向から受信するデータを第２の方向へ送信する通信手段と、
前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段と、
前記処理手段の処理したデータを前記第２の方向側の通信手段からの許可信号に応じて送出する送信制御手段と、
前記信号線によって接続される前段の処理モジュールへ前記許可信号を通知する第１のモード、又は、前記データに前段の処理モジュールへの許可信号を付加して前記第２の方向へ送信する第２のモードを当該処理モジュールに設定する設定手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理部をリング状バスに接続したデータ処理装置および当該データ処理装置におけるデータ処理方法またはプログラムに関する。
【背景技術】
【０００２】
従来、高速なパイプライン処理を実現するため、パイプライン処理となる一連のデータ処理を分割（グルーピング）して複数のモジュールに割り当て、このモジュールを処理の流れ順にバスで接続する方法がある（特許文献１）。
【０００３】
しかし、処理Ａ→Ｂ→Ｃのパイプライン処理を処理Ａ→Ｃ→Ｂのように変えたい場合に、このように物理的なバスで接続されているモジュール（モジュールには処理Ａ、Ｂ、Ｃが重複しないように割り当てられているとする）は処理順序を変更することが困難である。
【０００４】
画像処理においては、一連の処理順序を変えることで以下のように効率的に処理を実現できることがある。例えば、出力装置に画像を出力する場合、入力される画像の画素数が出力装置の画素数よりも多い場合は、なるべく処理の開始時に近い工程（上流側）で画素数を少なくしてから処理を行った方が効率的である。一方で、入力画像の画素数が出力装置の画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力直前の工程（下流側）で解像度変換により画素数を多くするのが良い。
【０００５】
また、ある空間（入力デバイス空間等）から標準的な空間（ＣＩＥＬＡＢ色空間等）に変換して処理を行い、別の空間（出力デバイス空間等）に変換する場合、入力側と出力側の空間変換部の処理（１次元ＬＵＴ、行列演算、３次元ＬＵＴ等）の順序は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。
【０００６】
ここで、処理回路間の接続をリング型のバス（以下、リングバスと称す）で接続し、処理順序を可変にする方法がある（特許文献２、特許文献３）。
【０００７】
しかしながら、ハードウェアとしてリングバスに接続され固定的な処理機能を持つ複数の処理回路において、リングバスを流れるパケットの流れを停滞させずにリングバスのトラフィック量の増加を抑える事は困難である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第２７３４２４６号公報
【特許文献２】特許第２５２２９５２号公報
【特許文献３】特許第２８３４２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明はハードウェアとしてリングバスに接続され固定的な処理機能を持つ複数の処理回路において、リングバスを流れるパケットの流れを停滞させずにリングバスのトラフィック量の増加を抑えることを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するための本発明に係るデータ処理装置の代表的な構成は、複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置において、前記処理モジュールは、前記バスを介して前記リングの第１の方向から受信するデータを第２の方向へ送信する通信手段と、前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段とを有し、前記通信手段は、前記第２の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御することを特徴とする。
【発明の効果】
【００１１】
本発明のデータ処理装置によれば、データ転送許可信号により処理部から通信部へのデータ転送を制御することにより、保留パケットの発生を抑えリングバスの占有率を下げてデッドロックを低減することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】データ処理装置の有する構成を示すブロック図である。
【図２】リングバスを流れるパケットのフォーマットの概略を示す図である。
【図３】通信部１０２の概略構成を示すブロック図である。
【図４】データ受信部３０１の概略構成を示すブロック図である。
【図５】データ送信部３０４の概略構成を示すブロック図である。
【図６】リングバスを有するデータ処理装置の概略構成を示すブロック図である。
【図７】シグナルフローグラフである。
【図８】通信部の一構成例を示すブロック図である。
【図９】データ受信部の一構成例を示すブロック図である。
【図１０】データ処理装置の構成を示すブロック図である。
【図１１】制御部によるデータ処理部の初期化処理を示すフローチャートである。
【図１２】制御部による初期化処理の一部を示すフローチャートである。
【発明を実施するための形態】
【００１３】
＜参考例＞
まず、各処理モジュール間をリング状のネットワーク（以下、リングバスと称す）で接続し、複数の処理部で一連のデータ処理を順番にする際に、リングバスのトラフィック量が増加する例について説明する。
【００１４】
図１は、各処理モジュール間をリング状のバスでリング状に接続したデータ処理装置の概略構成を示すブロック図である。図中、１０１はデータ入出力部、１０２−１〜１０２−６は通信部、１０３−２〜１０３−６は通信処理部と一対一で設けられているデータ処理部である。
【００１５】
通信部１０２−１〜１０２−６は、各々隣接する通信部と接続され（但し、通信部１０２−６は通信部１０２−１に接続される）、リングバス１０６の一部として特定の方向（第１の方向）から受信するデータを他方（第２の方向）へ送信する。つまり、通信部１０２−１〜１０２−６は、リングバス１０６を構成すると共に、リングバス１０６とデータ入出力部またはデータ処理部との間でのデータの送受信を行う。通信部１０２−２〜１０２−６には、各々データ処理部１０３−２〜１０３−６に接続されている。
【００１６】
入力端子１５１より入力されたデータはデータ入出力部１０１を介して通信部１０２−１に入力される。入力されたデータはパケット化されリングバス上（リング上）を一方向に流れる。通信部１０２は予め設定された情報に従って必要なパケットをリングバス１０６より取り込み、取り込んだパケットよりデータ抽出し、データ処理部１０３が処理可能な場合、データ処理部１０３に入力する。データ処理部１０３では、所定のデータ処理（例えば色空間変換や解像度変換等）を行い、処理後のデータを通信部１０２へ出力する。処理後のデータはリングバス１０６に出力可能な場合、通信部１０２にてパケット化されリングバス１０６へ流される。このように通信部１０２−２〜１０２−６によって、設定された順番にてデータがデータ処理部１０３−２〜１０３−６にて次々に処理されて行く。そして、設定されたデータ処理が終了したデータは通信部１０２−１にてデータ入出力部１０１に取り込まれ、出力端子１５２より出力される。
【００１７】
図２にリングバス１０６を流れるパケットのデータ構造を示す。図中、ｖａｌｉｄフラグ２０１にはパケットが有効であることを示す。ｓｔａｌｌフラグ２０２はパケットが受信保留であることを示す。カウント値２０３はデータの送信順を示し、ｎｏｄｅ  ＩＤ２０４はデータの論理的な接続を識別するための接続ＩＤである。ＤＡＴＡ２０５は通信部に入力または出力されるデータである。
【００１８】
通信部１０２は、リングバス１０６で伝播されたパケットを解析して、ｖａｌｉｄフラグ２０１が有効で、ＩＤ２０４とカウント値２０３が通信部内部で管理する値と一致し、直接接続される処理モジュールが処理可能な場合、処理モジュールへデータを送る。同時に、リングバス１０６で下流（後段）に繋がる通信部に対して、ｖａｌｉｄフラグを無効にしたパケット（以下、空パケットと称する）を送信する。
【００１９】
一方、リングバス１０６で伝播されたパケットを解析して、ｖａｌｉｄフラグ２０１が有効かつ、ＩＤ２０４とカウント値２０３が通信部内部で管理する値と一致しかつ、接続される処理モジュールが処理不可能な場合は、リングバス１０６で繋がる後段の通信部に対して、ｓｔａｌｌフラグを有効にしたパケット（以下、保留パケットと称する）を送信する。同様に、ｖａｌｉｄフラグ２０３が有効かつ、ＩＤ２０４が通信部内部で管理する値と一致しかつ、カウント値２０３が通信部内部で管理する値と一致しない場合も、リングバス１０６で繋がる後段の通信部に対して、保留パケットを送信する。
【００２０】
または、リングバス１０６で伝播されたパケットを解析して、ｖａｌｉｄフラグが有効かつ、データのＩＤが通信部内部で管理する値と一致しない場合は、後段に繋がる通信部に対して、パケットの内容を変更しないでそのまま送信する。
【００２１】
以上の様に制御することで、複数の処理モジュールを夫々個別の通信部を介してリングバス１０６に接続しているデータ処理装置において、処理の順序を入れ替える事が可能となる。
【００２２】
ここで、処理モジュールの１つが拡大処理をするなどして入力データの個数に対して出力データの個数を増加させる場合を例に挙げて説明する。すると、処理モジュールが１クロックサイクル毎にデータを受け付けて処理し続けることが困難となり、リングバス上に多量の保留パケットを放出することになる。この場合、リングバス上の保留パケットが増加してしまい、バスの占有率を高め、デッドロック（リングバスが有効データで埋まってしまい、処理が進まない状態）を引き起こす原因とる事がある。
【００２３】
また、別の方法として、リングバスとは別のパスを用意しておき、保留パケットが頻発する処理に関しては、上記別のパスにより通信させる方法が想定できる。しかし、処理順序の入れ替えと拡大処理を同時に行う場合などは、別のパスも保留パケットで埋まってしまうので根本的な解決にならない。しかも、リングバスと上記別のパスからのデータを選択して、各処理モジュールに入力する為のセレクタが、（バスのビット幅）×（処理モジュールの数）分必要となり、回路規模の増大を招いていた。
【００２４】
また、各処理モジュール間をリング状バス上にＦＩＦＯを接続し、処理モジュールがリング状バスにデータを出力できなくなったときに処理モジュールから競合信号を上記ＦＩＦＯに出力し、上記ＦＩＦＯの読み出しを禁止する（即ち保留パケットをＦＩＦＯに退避させる。）ことで、リング状バスに「空き」を作り、デットロックを回避する方法を想定する（特許文献２）。しかしながらＦＩＦＯを用意するだけは、処理順序の入れ替えと拡大処理を同時に行う場合などは、ＦＩＦＯが保留パケットで埋まればリングバスに保留パケットが溢れてくるので根本的な解決にならない。
【００２５】
以上のように、保留パケットを用いることで、リングバスを流れるパケットの流れを停滞させずに、処理中の処理モジュールが他のモジュールに対してストール状態を伝えられるので、他のモジュールがトラフィックを調節することができる。しかし、保留パケットの数が増えてしまうと保留パケットがリングバスを高い占有率で占有してしまいデッドロックを生じさせる事がある。
【００２６】
＜実施例１＞
次に本発明の一実施例である実施例１について説明する。
【００２７】
なお、参考例と同一機能を有する構成には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
【００２８】
図１０は、本発明のデータ処理装置の構成例を示す。制御部１０００は、演算制御用のＣＰＵ１００１、固定データやプログラムを格納するＲＯＭ１００２、データの一時保存やプログラムのロードに使用されるＲＡＭ１００３および外部データを保持する外部記憶装置１００４を有する制御部である。
【００２９】
データ入力部１０１０は、処理すべきデータを取り込む。例えば、イメージスキャナおよびＡ／Ｄ変換器などのデバイスによって構成される画像読み込み装置や、マイクおよびＡ／Ｄ変換などのデバイスによって構成される音声入力装置そのものであってもよいし、入力装置からデータを取得する受信部であってもよい。
【００３０】
画像処理部１０２０は、図６に示す複数の処理モジュールによって並列処理をするデータ処理部である。ここでは、画像に限らずパイプライン処理などの一連のデータ処理に適したデータであれば、適用する事が好ましいためデータ処理部と表記している。
【００３１】
データ出力部１０３０は、処理済みのデータを外部に出力する。例えば画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置や、音声データをＤ／Ａ変換器等を通して出力する音声出力装置でもよい。もちろん、単に外部装置へデータを送信するためのインタフェースであってもよい。
【００３２】
データ入力部１０１０において入力されたデータを、制御部１０００が受信してＣＰＵ１００１で処理してもよいし、そのままＲＡＭ１００３や外部記憶装置１００４に一時記録されてもよい。また、データ処理部１０２０は、データ入力部１０１０からの入力データを直接受け取って処理を行っても、制御部１０００からの指示ならびにデータ供給によって処理を行ってもよい。
【００３３】
また、データ処理部１０２０の出力は、再度制御部１０００に送られても、また、直接データ出力部１０３０に送られてもよい。
【００３４】
データ処理部１０２０は、制御部１０００の処理によって予め個別のデータ処理内容を設定され、供給されるデータに対して設定された処理を施すように動作する。図６は、実施例１におけるデータ処理装置の有する複数の処理モジュールの構成を示すブロック図である。図１に示す構成に加え、各通信部はリングバス１０６上をデータが流れる方向（以下、データ転送方向と称す）と逆方向にデータ転送許可信号（以下、ｅｎａｂｌｅ信号と称す）を伝達するｅｎａｂｌｅ信号線６０１で接続される。ここで、リングバス１０６を流れるパケットのフォーマットは図２に示したとおりである。
【００３５】
なお、データ入出力部１０１は、外部の機器（またはモジュール）とのインタフェースを行うものであり、通信部１０２−１にて直接インタフェース可能な場合は省略可能である。また、データ入出力部１０１のように入力部と出力部とを兼用する構成もよいし、入力部と出力部とがリングバス上の別の通信部と繋げて構成してもよい。さらに、入力部と出力部とが複数あってもよい。
【００３６】
図３は、通信部１０２の概略構成を示すブロック図である。図に示すように、通信部１０２はデータ受信部３０１、バッファ３０２、セレクタ３０３、データ送信部３０４を有する。
【００３７】
隣の通信部（データ転送方向下流・第２の方向側）への出力端子３５９は、隣の通信部（データ転送方向下流）の入力端子３５７に接続されており、リングバス１０６は通信部１０２−１〜１０２−６を有している。隣の通信部（データ転送方向上流・第１の方向側）へのｅｎａｂｌｅ出力端子３６４は、隣の通信部（データ転送方向下流）の入力端子３６３に接続される。通信部１０２−１〜１０２−６の夫々の間に接続されるｅｎａｂｌｅ信号線１０６に属している。
【００３８】
また、信号線３５１，３５２，３５３，３５４，３５５，３５６にはデータ処理部１０３（１０３−２〜１０３−ｍの内の１つ）が接続されているものとする。隣の通信部（データ転送方向上流）より入力されたパケットは、バッファ３０２にて一旦保持され次のクロックサイクルでセレクタ３０３に出力される。
【００３９】
データ受信部３０１は、入力端子３５７からのパケットを監視し、ｖａｌｉｄフラグ２０１が有効で、ＩＤ２０４とカウント値２０３がデータ受信部３０１の保持する値と夫々一致するかを判定する。さらに、データ受信部３０１に接続されているデータ処理部１０３がデータの入力が可能である場合（信号線３５３のｓｔａｌｌ信号が保留状態でない場合）、データ受信部３０１は上記の条件を満たすパケットを取り込む。このとき、データ受信部３０１は信号線３５１のｖａｌｉｄ信号を有効にして、出力端子３５２よりデータ処理部１０３へデータを出力する。このとき、信号線３６０を介して、データ処理部１０３がデータを取り込んでいることを受信部３０１がバッファ３０２に通知し、更にバッファ３０２に格納されるパケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。また、パケットのデータを取り込み後、データに付随のカウント値はインクリメントされる。この時、後述する図４のｅｎａｂｌｅマスクレジスタ４０７（以下、マスクレジスタ４０７と略）が無効を示す値を保持する場合は、出力端子３６４のｅｎａｂｌｅ信号を有効にして出力する。
【００４０】
また、マスクレジスタ４０７が無効の場合、入力パケットのｖａｌｉｄフラグが有効で、接続ＩＤとカウント値が夫々一致し、かつ接続されているデータ処理部１０３がデータの入力が不可能である場合（信号線３５３のｓｔａｌｌ信号が保留状態の場合。）、データ受信部３０１の内部バッファにデータを格納する。同時に信号線３６０を介して、バッファ３０２にデータの取り込みを通知し、バッファ３０２に格納される該パケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。
【００４１】
一方、マスクレジスタ４０７が有効の場合、入力パケットのｖａｌｉｄフラグが有効で、接続ＩＤとカウント値が夫々一致し、かつ、信号線３５３のｓｔａｌｌ信号が保留状態の場合、信号線３６０を介して、バッファ３０２にデータの保留を通知し、バッファ３０２に格納される該パケットのｓｔａｌｌフラグをセットする。また、入力パケットのｖａｌｉｄフラグが有効で、接続ＩＤが一致してもカウント値が不一致の場合は、データの取り込みができないので、この場合もｓｔａｌｌフラグをセットする。
【００４２】
データ送信部３０４は、バッファ３０２の出力パケット（信号線３５８）のｖａｌｉｄフラグを、信号線３６１を介して監視する。そして、ｖａｌｉｄフラグが有効のときは、バッファ３０２の出力パケットに対して送信部３０４はデータを出力できないので、データ処理部１０３からのデータの出力を保留するために信号線３５４にｓｔａｌｌ信号をセットする。また、送信部３０４は入力端子３６３から入力されるｅｎａｂｌｅ信号が無効のときも信号線３５４にｓｔａｌｌ信号をセットする。なお、入力端子３６３からのｅｎａｂｌｅ信号が有効かつバッファ３０２の出力パケットのｖａｌｉｄフラグが無効のときは、送信部３０４が信号線３５４のｓｔａｌｌ信号をリセットする。データ処理部１０３からデータの出力が可能な場合（信号線３５６のｖａｌｉｄ信号が有効の場合）、バッファ３０２の出力パケットのｖａｌｉｄフラグが無効かつ入力端子３６３からのｅｎａｂｌｅ信号が有効であれば、データ送信部３０４は、ｖａｌｉｄフラグを有効にして、さらにｓｔａｌｌフラグを無効にする。そして、カウント値とレジスタに設定されている接続ＩＤを付加してパケットを生成し、セレクタ３０３を制御して、出力端子３５９より生成したパケットをリングバスに流す。なお、パケットを生成すると表現しているが、概念的にはリングバスを流れる空パケットにデータを格納していることになる。パケット出力後、上記カウント値はインクリメントされる。
【００４３】
図４は、データ受信部３０１の概略構成を示すブロック図である。図に示すようにデータ受信部３０１は、レジスタ４０１（記憶部）、カウンタ４０２、比較部４０３、判定部４０４（切換部）、バッファ４０５、セレクタ４０６、ｅｎａｂｌｅ信号用のマスクレジスタ４０７（設定部）を有する。
【００４４】
先ず、マスクレジスタ４０７が無効の時の動作を説明する。比較部４０３は入力端子３５７より入力されるリングバス上のパケットのｖａｌｉｄフラグ２０１、接続ＩＤ２０４、カウント値を監視する。そして、入力されたパケットのｖａｌｉｄフラグが有効な場合、該パケットの接続ＩＤとレジスタ４０１に格納されている接続ＩＤとが一致するかどうか、更に該パケットのカウント値とカウンタ４０２の値が一致するかどうかを比較する。比較した後に比較部４０３は、接続ＩＤが一致した際には入力パケット判定信号を、カウント値がカウンタ４０２の値と一致した際にはカウント値一致信号を判定部４０４に出力する。
【００４５】
バッファ４０５が空の状態で、入力パケット判定信号とカウント値一致信号が有効かつ、接続されているデータ処理部１０３から信号線３５３を介したｓｔａｌｌ信号が無効を示す場合、判定部４０４はデータ処理部１０３がデータを取り込めたと判定する。
【００４６】
この際、信号線３６０を介して、バッファ３０２にデータの取り込みを通知し、バッファ３０２に格納されるパケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。また判定部４０４は、カウンタ４０２にカウント有効信号を有効にして出力し、次のデータを取得するために、次のクロックサイクルでカウンタ４０２にカウント値をインクリメント（＋１）させるようにする。同時に、判定部４０４は信号線３５１のｖａｌｉｄ信号を有効にし、セレクタ４０６を制御して、出力端子３５２に信号線３５７からのパケットのデータを出力させる。この処理によって、バッファ４０５は空になりデータが取り込める状態になるので、判定部４０４は信号線３６４のｅｎａｂｌｅ信号を有効にする。
【００４７】
一方、バッファ４０５が空で、入力パケット判定信号とカウント値一致信号が有効かつ接続されているデータ処理部１０３からの信号線３５３を介したｓｔａｌｌ信号が有効な場合、判定部４０４はデータ処理部１０３がデータを取り込めないと判定する。データ処理部１０３がデータを取り込めないと判定した場合に、判定部４０４はバッファ４０５を制御して該パケットのデータ部を取り込む。同時に、信号線３６０を介して判定部４０４はバッファ３０２にデータの取り込みを通知し、バッファ３０２に格納されるパケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。この際、判定部４０４はカウンタ３０２へのカウント有効信号を無効にして、カウンタ３０２のカウント値をインクリメントさせない。また、信号線３５１のｖａｌｉｄ信号を有効にし、セレクタ４０６を制御して、出力端子３５２にバッファ４０５に格納されている該パケットのデータ部を出力させる。さらに、バッファ４０５にはデータが格納されているので、判定部４０４は信号線３６４のｅｎａｂｌｅ信号を無効にする。
【００４８】
また、信号線３６４のｅｎａｂｌｅ信号が無効の時、データ処理部１０３でのデータの取り込みが可能で且つ、信号線３５３のｓｔａｌｌ信号が無効になれば、次のクロックサイクルで、データ処理部１０３は出力端子３５２を介してバッファ４０５に格納されているデータを取り込む。この時、次のデータを取得するために、次のクロックサイクルでカウンタ３０２はカウント値をインクリメント（＋１）する。また、バッファ４０５は空になりデータが取り込めるので、判定部４０４は信号線３６４のｅｎａｂｌｅ信号を有効にする。
【００４９】
入力パケット判定信号が無効の場合、データ処理部１０３で処理するデータでない為、判定部４０４は信号線３６０を介してバッファ３０２にデータの取り込みを行っていないと通知し、バッファ３０２に格納されているパケットの変更を行わない。この際、判定部４０４は、カウンタ３０２へカウント有効信号、信号線３５１のｖａｌｉｄ信号、信号線３６４のｅｎａｂｌｅ信号及びバッファ４０５の内容を変更しない。
【００５０】
次に、マスクレジスタ４０７が有効の時の動作を説明する。この場合、判定部４０４によって、セレクタ４０６は常にバッファ４０５を介さないパスを選択し、信号線３６４のｅｎａｂｌｅ信号は常に有効にされる。
【００５１】
比較部４０３の動作はマスクレジスタ４０７が無効の時と動作が同じため説明を省略する。
【００５２】
判定部４０４は入力パケット判定信号とカウント値一致信号が有効かつ、接続されているデータ処理部１０３から信号線３５３を介したｓｔａｌｌ信号が無効の場合、データ処理部１０３がデータを取り込めたと判定する。この場合、判定部４０４は、信号線３６０を介してバッファ３０２にデータの取り込みを通知し、バッファ３０２に格納されているパケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。また、判定部４０４はカウンタ３０２にカウント有効信号を有効にして出力し、次のデータを取得するために、次のクロックサイクルでカウンタ３０２にカウント値をインクリメント（＋１）させる。同時に、判定部４０４は信号線３５１のｖａｌｉｄ信号を有効にし、セレクタ４０６を介して出力端子３５２に該パケットのデータ部を出力する。
【００５３】
一方、判定部４０４は上記入力パケット判定信号と上記カウント値一致信号が有効かつ接続されているデータ処理部１０３から信号線３５３を介して伝達されるｓｔａｌｌ信号が有効な場合は、取り込むべきデータがデータ処理部１０３で取り込めないと判定する。そして、判定部４０４は信号線３６０を介して、バッファ３０２にデータの取り込みが不可である事を通知し、バッファ３０２に格納されているパケットのｓｔａｌｌフラグをセットし、保留パケットにする。この時、判定部４０４はカウンタ３０２へカウント有効信号を無効にして、カウンタ３０２のカウント値をインクリメントさせない。また、判定部４０４は信号線３５１のｖａｌｉｄ信号を無効にする。
【００５４】
同様に、判定部４０４は、上記入力パケット判定信号が有効かつ上記カウント値一致信号が無効の場合、取り込み対象パケットであるがデータの取り込み順序があっていないと判定し、信号線３６０を介して、バッファ３０２にデータの保留を通知し、バッファ３０２に格納される該パケットのｓｔａｌｌフラグをセットする。
【００５５】
さらに判定部４０４は、入力パケット判定信号が無効の場合、データ処理部１０３で処理するデータでない為、信号線３６０を介してバッファ３０２に、データの取り込みを行っていないと通知し、バッファ３０２に格納されているパケットの変更をしない。
【００５６】
図５は、データ送信部３０４の概略構成を示すブロック図である。図に示すようにデータ送信部３０４は、レジスタ５０１（記憶部）、カウンタ５０２、ＯＲゲート５０３、パケット生成部５０４を有する。
【００５７】
入力端子３６１を介してバッファ３０２の出力パケットのｖａｌｉｄフラグがＯＲゲート５０３に入力され、入力端子３６３を介してデータ転送方向下流側の受信部３０１より入力されるｅｎａｂｌｅ信号の反転信号がＯＲゲート５０３に入力さる。そして、ＯＲゲート５０３は出力として信号線３５４にｓｔａｌｌ信号を出力する。つまり、データ送信部３０４はリングバス（バッファ３０２）の出力パケットが有効、又は、データ転送方向下流の受信部３０１からのｅｎａｂｌｅ信号が無効のとき、データ処理部１０３からのデータを受け取れないので信号線３５４のｓｔａｌｌ信号を有効にする。また、信号線３５４のｓｔａｌｌ信号はパケット生成部５０４へも入力される。
【００５８】
パケット生成部５０４は、接続されているデータ処理部１０３から信号線３５６を介して伝達されるｖａｌｉｄ信号を参照し、ｖａｌｉｄ信号が有効の場合データ処理部１０３からデータの出力が可能であると判定する。データ処理部１０３からデータの出力が可能であると判定した場合で且つ信号線３５４のｓｔａｌｌ信号が無効の時、パケット生成部５０４はカウンタ５０２のカウント値とレジスタ５０１に設定されている接続ＩＤを格納するパケットを生成する。ここで、パケット生成部５０４は、生成するパケットのｖａｌｉｄフラグを有効に、ｓｔａｌｌフラグを無効に設定する。さらに、信号線３５５を介してデータ処理部１０３は処理したデータを通信部に送出し、パケット生成部５０４はこのデータを受け取り、パケットのデータ部に格納する。そして、パケット生成部５０４はセレクタ３０３を制御して、出力端子３５９を介して生成したパケットをリングバスのデータ転送方向下流に流す。そして、次のクロックサイクルでカウンタ５０２はカウント値をインクリメント（＋１）する。なお、送信部３０４のカウンタ５０２と該送信部のパケットを受信する受信部３０１のカウンタ３０２は、同期を取るため、データ転送開始前に同じ値に初期化される。
【００５９】
次に、図７に示すシグナルフローグラフと図６に示す構成を用いて、本実施例のデータ処理装置の具体的な動作を説明する。シグナルフローグラフにおいては、ノードを「丸」で示し、処理を「アーク（矢印）」で示す。各データ処理部１０３−２〜１０３−６では、夫々処理Ａ〜処理Ｅで示される処理が入力データに対し施されるものとする。
【００６０】
まず、単純に処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅの順に処理するフローのシグナルフローグラフは図７（ａ）に示すようになる。この時、処理部Ａ（データ処理部１０３−２）の通信部１０２−２の受信部のレジスタ（レジスタ４０１）には”１”を格納しておき、通信部１０２−２の送信部のレジスタ（レジスタ５０１）には”２”を格納しておく。同様に、通信部１０２−３の受信部のレジスタには”２”、送信部のレジスタには”３”を格納しておき、通信部１０２−４の受信部のレジスタには”３”、送信部のレジスタには”４”を格納しておき、通信部１０２−５の受信部のレジスタには”４”、送信部のレジスタには”５”を格納しておき、通信部１０２−６の受信部のレジスタには”５”、送信部のレジスタには”６”を格納しておく。入力端子１５１はノード”１”に対応し、出力端子１５２はノード”６”に対応するので、通信部１０２−１の受信部のレジスタには”６”を格納しておき、送信部のレジスタには”１”を、格納しておく。ここで、処理が図６の接続順序どおりに行われるので、制御部１０００によって通信部１０２−１〜１０２−６のマスクレジスタ４０７は全て無効に設定されている。従って、通信部が保留パケットを出力しない為、カウンタ値２０３は不要となる。
【００６１】
接続順序とは、前述したｅｎａｂｌｅ信号６０１を伝播できる逆の順序である。図６の通信部１０２は１→２→３→４→５→６→１の順序となる。ただし、データ処理装置の構成によってはｅｎａｂｌｅ信号６０１を全ての通信部１０２に伝播させなくてもよいので、接続順序は途切れる場合もある。通信部１０２−１が信号線３５４から出力するｓｔａｌｌ信号が無効を示す場合は入力端子１５１から処理対象のデータが入力され、通信部１０２−１は処理対象のデータをパケット化し接続ＩＤ”１”を付加して、通信部１０２−２に出力する。通信部１０２−２は受信部のレジスタ４０１に”１”が格納されているので、接続ＩＤ”１”のパケットを取り込んでデータ部をデータ処理部１０３−２に入力する。この時、データ処理部１０３−２から信号線３５３を介して伝達されるｓｔａｌｌ信号が無効を示す場合は、即座にデータ処理部１０３−２で処理対象のデータに対して処理Ａが実施される。一方で、信号線３５３のｓｔａｌｌ信号が有効の場合は、一旦、処理対象のデータをバッファ４０５に格納し信号線３５３のｓｔａｌｌ信号が無効になってから、データ処理部１０３−２で処理Ａが施される。その後、信号線３５４のｓｔａｌｌ信号が無効になると、通信部１０２−２の送信部のレジスタ５０１には”２”が格納されているので、接続ＩＤ”２”のパケットを生成して通信部１０２−３へ出力する。
【００６２】
以下同様に、通信部１０２−３は接続ＩＤ”２”のパケットを取り込んでデータ処理部１０３−２で処理Ｂを実施し、接続ＩＤ”３”のパケットを生成し、処理したデータを格納して通信部１０２−３へ出力する。通信部１０２−４では接続ＩＤ”３”のパケットを取り込んでデータ処理部１０３−４で処理Ｃを実施し、接続ＩＤ”４”のパケットを生成し、処理したデータを格納して通信部１０２−５へ出力する。通信部１０２−５では接続ＩＤ”４”のパケットを取り込んでデータ処理部１０３−５で処理Ｄを実施し、接続ＩＤ”５”のパケットを生成し、処理したデータを格納して通信部１０２−６へ出力する。通信部１０２−６では接続ＩＤ”５”のパケットを取り込んでデータ処理部１０３−６で処理Ｅを実施し、接続ＩＤ”６”のパケットを生成し、処理したデータを格納して通信部１０２−１へ出力する。最後に、通信部１０２−１には受信部のレジスタ３０１に”６”が格納されているので、通信部１０２−１は接続ＩＤ”６”のパケットを取り込んでデータ部を出力端子１５２より出力する。
【００６３】
以上のように、入出力部１０１に入力されたデータは、処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅの順に処理され入出力部１０１から出力される。
【００６４】
このように、２つの通信部（第１の通信部と、第１の通信部よりデータ転送方向の１つ上流側に接続されている第２の通信部とする）が、データを転送する方向に沿った順番で連続してデータを処理する場合に、この２つの通信部の間では直接接続された信号線を介して通知される転送許可信号を用いる方式（第１のモード）で通信する。
【００６５】
なお、第１の通信部から第２の通信部への転送許可信号が無効になることは、前記第２の通信手段に対応する処理手段から前記第２の通信手段へのデータの転送を停止させることになる。
【００６６】
図７（ｂ）は図７（ａ）における処理Ｂと処理Ｃの順序を逆にしたフローを示すシグナルフローグラフである。この場合は、通信部１０２−３の受信部のレジスタには”３”、送信部のレジスタには”４”を格納しておき、通信部１０２−４の受信部のレジスタには”２”、送信部のレジスタには”３”を格納しておく。そして、その他の通信部１０２は図７（ａ）と同じ様に設定すれば、図７（ｂ）のフローが実現される。
【００６７】
また、Ａ→Ｃ→Ｂ→Ｄ順で制御すると、図６に示す構成では信号線３６４を用いてｅｎａｂｌｅ制御することはできない。そこで、制御部１０００は通信部１０２−３〜１０２−５のマスクレジスタ４０７を有効に設定する。一方で、入力（ノード１）→Ａまでの処理とＤ→Ｅ→出力（ノード６）までの処理図６に示す構成で信号線３６４を用いてｅｎａｂｌｅ制御できるので、制御部は通信部１０２−１〜１０２−２、１０２−６のマスクレジスタ４０７を無効に設定する。ここで、マスクレジスタ４０７が無効に設定された通信部は、ｅｎａｂｌｅ制御によりデータ転送方向側にある隣の通信部からパケットが送られてくるため、判定部４０４にてパケットのカウント値２０３とカウンタ４０２の値の一致を判定する必要はない。よって、通信部１０２−１〜１０２−２、１０２−６でのカウント値の一致判定に関する説明は省略する。
【００６８】
通信部１０２−１のｓｔａｌｌ信号３５４が無効の時、入力端子１５１から入力されたデータには通信部１０２−１にて接続ＩＤ”１”とカウンタ５０２のカウント値が付加され、通信部１０２−２に出力される。
【００６９】
通信部１０２−２は受信部のレジスタ４０１に”１”が格納されているので、接続ＩＤ”１”とカウント値が一致したパケットを取り込んでデータ部をデータ処理部１０３−２に入力する。この時、マスクレジスタ４０７が無効に設定されているので、信号線３５３のｓｔａｌｌ信号が無効の場合は、即座にデータ処理部１０３−２で処理Ａが開始される。また、ｓｔａｌｌ信号３５３が有効の場合は一旦、バッファ４０５に格納されｓｔａｌｌ信号３５３が無効になってから、データ処理部１０３−２で処理Ａが開始される。その後、信号線３５４のｓｔａｌｌ信号が無効になると、通信部１０２−２の送信部のレジスタ５０１には”２”が格納されているので、接続ＩＤ”２”のパケットを生成して通信部１０２−３へ出力する。
【００７０】
通信部１０２−３の受信部のレジスタ４０１には”３”が格納されているので、接続ＩＤ”３”のパケット以外は処理部に取り込まずにそのまま通信部１０２−４へ出力する。従って、上記接続ＩＤ”２”のパケットは何も処理されずに通信部１０２−４へ出力される。
【００７１】
通信部１０２−４では接続ＩＤ”２”のパケットを取り込んでデータ処理部１０３−４で処理Ｃが施される。この時、マスクレジスタ４０７は有効に設定されているので、信号線３５３のｓｔａｌｌ信号が無効を示しかつカウント値２０３とカウンタ４０２の値が均しい場合のみ処理が行われる。そうでない場合は、図４で説明したように信号線３６０を介して、バッファ３０２にデータの保留を通知し、バッファ３０２に格納されているパケットのｓｔａｌｌフラグをセットし、保留パケットを通信部１０２−５へ出力する。そして、保留パケットがリングバッファを巡回して通信部１０２−４に戻ってきた際に、再び信号線３５３のｓｔａｌｌ信号やカウント値２０３が判定されて、前述の条件に適合した場合に処理が行われる。処理Ｃが施されたデータは、接続ＩＤ”３”のパケットに格納され通信部１０２−５へ出力される。
【００７２】
通信部１０２−５には受信部のレジスタ３０１に”４”が格納されているので、接続ＩＤ”３”のパケットは取り込まずにそのまま通信部１０２−６へ出力する。同様に、通信部１０２−６、通信部１０２−１、通信部１０２−２においても、何も処理されない。そして、通信部１０２−４がパケットを出力してから４クロックサイクル後に通信部１０２−３に接続ＩＤ”３”のパケットが到達し、データ処理部１０３−３取り込まれ処理Ｂが施され、接続ＩＤ”４”のパケットに格納され通信部１０２−４へ出力される。ここで、通信部１０２−３はマスクレジスタ４０７が有効に設定されているので、１０２−４と同様な手続きで動作する。
【００７３】
通信部１０２−４には受信部のレジスタ３０１に”２”が格納されているので、接続ＩＤ”４”のパケットは処理部に取り込まずにそのまま通信部１０２−５へ出力する。
【００７４】
通信部１０２−５では接続ＩＤ”４”のパケットを取り込んでデータ処理部１０３−５で処理Ｄが施され、接続ＩＤ”５”のパケットを生成して通信部１０２−６へ出力する。ここで、通信部１０２−５もマスクレジスタ４０７は有効に設定されているので、１０２−４と同様な手続きで動作する。
【００７５】
通信部１０２−６では接続ＩＤ”５”のパケットを取り込んでデータ処理部１０３−６で処理Ｅを実施し、接続ＩＤ”６”のパケットを生成して通信部１０２−１へ出力する。ここで、通信部１０２−６はマスクレジスタ４０７を無効に設定されているので、通信部１０２−２と同様の手続きで動作する。
【００７６】
通信部１０２−１には受信部のレジスタ３０１に”６”が格納されているので、接続ＩＤ”６”のパケットを取り込んでデータ部を出力端子１５２より出力する。以上のように、入力されたデータは、図７（ｂ）に示すように処理Ａ、処理Ｃ、処理Ｂ、処理Ｄ、処理Ｅの順に処理され出力される。
【００７７】
このように、２つの通信部が、転送許可信号を用いる転送方式（第１のモード）の条件を満たさない場合、その通信部の間では転送許可信号を用いない方式（第２のモード）で通信する。
【００７８】
図７（ｃ）は図７（ａ）において、処理Ｂと処理Ｄとスキップしたフローを示すシグナルフローグラフである。この場合制御部１０００は、図７（ａ）と同様に受信部のレジスタ（レジスタ４０１）及び送信部のレジスタ（レジスタ５０１）の設定を行い、全ての通信部のマスクレジスタ４０７は無効に設定する。そして、処理部１０３−３及び１０３−５がパイプライン処理をスキップするようにパラメータを設定（例えば、変倍モジュールの場合は変倍率を‘１’に設定）すればよい。このスキップの設定は処理部が有するレジスタに設定する必要があるが、処理部はデータに加工を加えないので、処理部の負荷は軽い。
【００７９】
また図７（ｄ）のフローを実現するには、処理部Ａ（データ処理部１０３−２）の通信部１０２−２の受信部のレジスタ（レジスタ４０１）には”１”を格納しておき、通信部１０２−２の送信部のレジスタ（レジスタ５０１）には”２”を格納しておく。同様に、通信部１０２−４の受信部のレジスタには”２”、送信部のレジスタには”３”を、通信部１０２−６の受信部のレジスタには”３”、送信部のレジスタには”６”を、通信部１０２−１の受信部のレジスタには”６”、送信部のレジスタには”１”を格納する。
【００８０】
さらに、制御部１０００が通信部１０２−１及び１０２−６のマスクレジスタ４０７を無効に、通信部１０２−３〜１０２−６のマスクレジスタ４０７を有効に設定しておくことにより図７（ｄ）のフローを実現できる。ここで、通信部１０２−３および通信部１０２−５の受信部のレジスタには、パケットが取り込まれないようにシグナルフローグラフで使用していない値（４や５）を設定しておく。
【００８１】
以上のように、実施例１のデータ処理装置によれば、データ転送許可信号により通信部から処理部へのデータ転送を制御し、リングバスにデータ処理部の処理したデータが出力されることを抑制する。これにより、保留パケットの発生を抑えたままリングバス上のトラフィック量を低減することができる。従って、リングバスの占有率を下げてデッドロックを低減することが可能となる。
【００８２】
また、データ転送許可信号によるデータ転送を通信部ごとにＯＮ／ＯＦＦ可能な構成にしたため、処理順序の変更が可能となり柔軟なデータ処理装置を実現できる。
【００８３】
なお、ある特定の処理部からの保留パケットの発生を抑制したい場合は、図６に示すようにｅｎａｂｌｅ信号線６０１（３６４）によって全ての処理部を接続しなくてもよい。特定の通信部を他の通信部とｅｎａｂｌｅ信号線で結びｅｎａｂｌｅ信号で制御するようにすれば、その通信部で発生する保留パケットは低減できる。従って、ｅｎａｂｌｅ信号線で接続される２つの通信部は必ずしも隣り合う必要は無い。
【００８４】
次に、制御部１０００が前述の設定を各モジュールに設定する処理について説明する。
【００８５】
本実施形態のデータ処理装置のプロセスは初期化フェイズとデータ処理フェイズとを有している。図１１は、制御部１０００が実施する初期化フェイズの処理を示すフローチャートである。ステップＳ１１０１で処理モジュール処理順序を制御部１０００が判断する。処理順序の判断方法としては、例えば、予めＲＯＭ１００３や外部記憶装置１００４に、データ処理部１０２０の行うパイプライン処理の種別と処理順序の対応関係が判断できる情報（テーブル、リストなど）を格納しておけばよい。または、代表的な機能と処理モジュールの対応関係を示す情報を格納しておき、ユーザ（又はアプリケーション）の指示した処理を制御部１０００が機能分割して適応的に各処理モジュールの処理順序を判断してもよい。
【００８６】
ステップＳ１１０２で、制御部１０００はＳ１１０１で判断した処理順序と接続順序とを比較する。接続順序はリングバスをスイッチ（クロスバースイッチ）等で物理的な接続関係を変更しない限り変更されないので、予め制御部１０００に接続順序を示す情報を格納しておくことが好ましい。
【００８７】
制御部１０００は処理順序と接続順序とを比較して、一致するシーケンスを検出する。例えば、接続順序が２→３→４→５→６、処理順序が４→５→２→３であれば、「２→３」と「４→５」を一致するシーケンスとして検出する。この検出結果に基づいて、各モジュールの制御方式（マスクレジスタ４０７を有効にするか否か）を決定する。
【００８８】
ステップＳ１１０３で制御部１０００は、処理モジュールを初期化するためのデータを作成する。この初期化データに含まれる情報は、データ処理モジュールの処理順序を示す情報（待ち受けるパケットのＩＤ、送信するパケットのＩＤ）と、前記ステップＳ１１０２で判定したダイレクト制御（第１のモードでの制御）を行う処理モジュールを示す情報とである。
【００８９】
ステップＳ１１０４で、制御部１０００は入出力部１０１を通して、ステップＳ１１０３で作成した初期化データを、リング状バス１０６に流す。
【００９０】
ステップＳ１１０５で、各処理モジュールは接続順序のとおりに初期化データを受け取り、処理終了データを送付するデータ処理モジュールＩＤ情報と、どのように許可信号を通知して制御するかを示す定情報と、を自身に設定する。
【００９１】
ステップＳ１１０２において、制御部１０００は、図１２の手順に基づいてダイレクト制御（第１のモードで通知して制御）を行うデータ処理モジュールの決定を行う。以下に詳細を示す。
【００９２】
制御部１０００は、接続順序に沿って処理モジュールＩＤを走査する。そして、各ＩＤについて、ステップＳ１２０２〜１２０５の処理を行い、ダイレクト制御をする処理モジュールを決定する。ステップＳ１２０２において、制御部１０００は、現在走査しているデータ処理モジュールＩＤをＩＤ変数“ＣＵＲＲＥＮＴ”に、バス接続順においてその後段にあたるデータ処理モジュールのＩＤをＩＤ変数“ＮＥＸＴ”に、それぞれ記録する。
【００９３】
ステップＳ１２０３において、制御部１０００は、ステップ５０１において外部から受信した処理モジュール処理順序中に、ＣＵＲＲＥＮＴ→ＮＥＸＴの起動シーケンスが存在するかを判定する。その判定において、ＣＵＲＲＥＮＴ→ＮＥＸＴの起動シーケンスがあった場合はステップＳ１２０４の処理を、ない場合はステップＳ１２０５の処理を行う。
【００９４】
ステップＳ１２０４において、制御部１０００は、ＩＤ変数ＣＵＲＲＥＮＴに保持しているＩＤに対応する処理モジュールがダイレクト制御を行う旨の設定情報（どのＩＤの処理モジュールのマスクレジスタを無効にするかを示す）を作成する。
【００９５】
ステップＳ１２０５において、制御部１０００は、ＩＤ変数ＣＵＲＲＥＮＴに保持しているＩＤに対応するデータ処理モジュールがリング制御（第２のモードで通知して制御）を行うという設定情報を作成する。
【００９６】
以上、制御部１０００がステップＳ１２０４およびステップＳ１２０５で作成した、処理モジュールの制御方法の設定情報は、ステップＳ１１０３、１１０４、１１０５において全ての処理モジュールの初期化に用いられる。
【００９７】
以上のように処理モジュールを初期化することで、ダイレクト制御を行う処理モジュールを検出し、検出した処理モジュールがダイレクト制御に基づいて前段の処理モジュールの出力を制御できるように初期化することができる。これにより、リングバス制御方式と、制御信号線を用いたダイレクト制御方式を組み合わせて、処理モジュール間データ送信制御を行うことが出来る。以上のように本実施例によれば、処理順番が変わる複数のモジュールを有するデータ処理装置において、少ない信号線で回路規模を抑えつつ効率的に保留パケットの増加を抑制し、トラフィックの増加を抑制できる。
【００９８】
＜実施例２＞
図８は本発明の一実施例である実施例２における通信部１０２の構成を示す図である。尚、本実施例は、図６の通信部１０２の構成を図３で説明したものから図８のものに置き換えたものであるため、実施例１と重複する部分は説明を省略する。
【００９９】
図８は、通信部１０２の概略構成を示すブロック図である。図中、図３で説明した構成部と同一のものは、同一の番号を付すとともに機能的に変わらないものについてはその説明を省略する。図８の構成において、図３から追加された構成は、バイパスモードレジスタ１１０１、セレクタ１１０２〜１１０４であり、機能変更された部分は受信部１１０５である。
【０１００】
図７（ｃ）のシグナルフローグラフについて、第１の実施例では特定の処理のみをスキップ（バイパス）する場合、処理部１０３の機能を無効にして実現していたため、データ処理部のレイテンシ分のクロックサイクルを要する。しかし、本実施例では、バイパスモード（第３のモード）の場合には通信部がデータ処理部１０３を介さないで通信部１０２内でバイパスして後段にデータ流し、１クロック分の遅延だけで処理部をスキップできる。これにより、図７（ｃ）に示すようなスキップ処理をした際のスループットの向上が可能となる。バイパスモードレジスタ１１０１はバイパスするか否かの設定値を格納する。
【０１０１】
バイパスモードレジスタ１１０１が無効を示す値を格納する場合、データ受信部１１０５はデータ受信部３０１と同一な機能になり、その他の接続は図３で説明したものと同一になる。つまりセレクタ１１０２は信号線３５３のｓｔａｌｌ信号を選択してデータ受信部１１０５に入力し、セレクタ１１０３はデータ処理部１０３から信号線３５５を介して入力される入力データを選択してデータ送信部３０４に入力する。セレクタ１１０４はデータ処理部１０３から信号線３５６を介して入力されるｖａｌｉｄ信号を選択してデータ送信部３０４へ入力する。またバイパスモードレジスタ１１０１が有効の時、セレクタ１１０２は信号線３５４のｅｎａｂｌｅ信号を選択してデータ受信部１１０５に入力し、セレクタ１１０３はデータ受信部１１０５からの信号線３５２のデータ出力を選択してデータ送信部３０４に入力する。さらに、セレクタ１１０４はデータ受信部１１０５から信号線３５１を介して入力されるｖａｌｉｄ信号を選択してデータ送信部３０４へ入力する。
【０１０２】
以下、本実施例の通信部１０２の動作を説明する。なお、バイパスモードレジスタ１１０１が無効の場合の動作は、実施例１の通信部の動作と同一であるため、説明を省略する。
【０１０３】
次に、バイパスモードレジスタ１１０１が有効の場合に関して説明する。尚、バイパスモードの場合は、マスクレジスタ４０７は常に無効を示す値を格納する。
【０１０４】
データ転送方向上流側の隣の通信部１０２より入力されたパケットは、バッファ３０２にて一旦保持され、次のクロックサイクルでセレクタ３０３に出力される。データ受信部１１０５は、入力端子３５７のパケットを監視し、パケットのｖａｌｉｄフラグが有効で、接続ＩＤとカウント値が一致し、かつセレクタ１１０２を介して接続されている信号線３５４からのｓｔａｌｌ信号が無効の場合、該パケットをデータ受信部３０１の内部バッファ（バッファ４０５）に取り込み、（ｖａｌｉｄ信号３５１を有効にして）出力端子３５２より出力する。このとき、データ受信部１１０５は信号線３６０を介して、バッファ３０２にデータの取り込みを通知し、バッファ３０２に格納される該パケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。また、パケット取り込み後、上記カウント値はインクリメントされる。また、入力パケットのｖａｌｉｄフラグが有効で、接続ＩＤとカウント値が一致し、かつ信号線３５４のｓｔａｌｌ信号が有効の場合、バッファ４０５に格納されたデータを保持する。尚、受信部１１０５は、信号線３５４のｓｔａｌｌ信号の値を反転させて信号線３６４のｅｎａｂｌｅ信号として出力する。
【０１０５】
データ送信部３０４は、バッファ３０２の出力パケット（信号線３５８）のｖａｌｉｄフラグ（信号線３６１）を監視する。そして、ｖａｌｉｄフラグが有効のときは、リングバス上にデータを出力できないので、セレクタ１１０３を介して接続されている受信部１１０５からのデータの出力を保留するために信号線３５４のｓｔａｌｌ信号をセットする。また、入力端子３６３から入力されたｅｎａｂｌｅ信号が無効のときも信号線３５４にｓｔａｌｌ信号をセットする。なお、ｅｎａｂｌｅ信号が有効かつｖａｌｉｄフラグが無効のときは、信号線３５４のｓｔａｌｌ信号をリセットする。
【０１０６】
受信部１１０５からデータの出力が可能な場合（信号線３５１のｖａｌｉｄ信号が有効の場合）、送信部はバッファ３０２の出力パケットのｖａｌｉｄフラグが無効かつ入力端子３６３からのｅｎａｂｌｅ信号が有効であるかを確認する。そしてこの条件を満たしていれば、データ送信部３０４は、カウント値とレジスタに設定されている接続ＩＤと有するパケットを生成し、このパケットのｖａｌｉｄフラグを有効、ｓｔａｌｌフラグを無効にする。さらに、信号線３５５を介してデータ処理部１０３が処理したデータを受け取り、生成したパケットのデータ部に格納する。そしてセレクタ３０３を制御して、出力端子３５９より該生成したパケットをリングバス上に流す。パケット出力後、上記カウント値はインクリメントされる。
【０１０７】
図９は、本実施例のデータ受信部１１０５の概略構成を示すブロック図である。図中、図４で説明した構成部と同一のものは、同一の番号を付し説明を省略する。図４に対して機能変更された部分は１２０１の判定部であり、追加された部分は、バイパスレジスタモードレジスタ１１０１の値を示すバイパスモード信号を伝達する信号線１２５１である。また、信号線１２５２は信号線３５３のｓｔａｌｌ信号と同等の機能を持つｓｔａｌｌ信号を伝達し、セレクタ１１０２の出力に接続されている。
【０１０８】
先ず、信号線１２５１のバイパスモード信号が無効の場合の動作は、実施例１のデータ受信部の動作と同一であるため、説明を省略する。
【０１０９】
次に、信号線１２５１のバイパスモード信号が有効の場合に関して説明する。尚、図８の通信部の説明で示したように、バイパスモードの場合は、マスクレジスタ４０７を常に無効に設定する。また、信号線１２５１のバイパスモード信号が有効の時、判定部１２０１はセレクタ４０６を制御し、常にバッファ４０５の出力を選択する。
【０１１０】
比較部４０３は入力端子３５７より入力されるリングバス上のパケットのｖａｌｉｄフラグ、接続ＩＤ、カウント値を監視する。そして、入力されたパケットのｖａｌｉｄフラグが有効で、該パケットの接続ＩＤがレジスタ４０１に格納されている接続ＩＤと一致したことを示す入力パケット判定信号と、該パケットのカウント値がカウンタ４０２の値と一致したことを示すカウント値一致信号とを判定部１２０１に出力する。
【０１１１】
判定部１２０１は入力パケット判定信号とカウント値一致信号が有効かつ、信号線１２５２のｓｔａｌｌ信号が無効の場合、バッファ４０５に該パケットのデータ部を取り込む。この場合、信号線３６０を介して、バッファ３０２にデータの取り込みを通知し、バッファ３０２に格納される該パケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。また、カウンタ３０２へカウント有効信号を有効にして出力し、次のデータを取得するために、次のクロックサイクルでカウンタ３０２のカウント値をインクリメント（＋１）させる。同時に、ｖａｌｉｄ信号３５１を有効にし、セレクタ４０６を介して、出力端子３５２に該パケットのデータ部が出力する。
【０１１２】
一方、判定部１２０１は入力パケット判定信号とカウント値一致信号が有効かつ、ｓｔａｌｌ信号１２５２が有効の場合、バッファ４０５のデータを保持する。この時、カウンタ３０２へカウント有効信号を無効にして、カウント値をインクリメントしない。また、ｖａｌｉｄ信号３５１値を保持する。この時、セレクタ４０６を介して、出力端子３５２にバッファ４０５に格納された、該パケットのデータ部が出力される。
【０１１３】
さらに判定部１２０１は、入力パケット判定信号が無効の場合、信号線３６０を介して、バッファ３０２にデータの取り込みを行っていないと通知し、バッファ３０２に格納される該パケットの変更を行わない。この時判定部１２０１は、カウンタ３０２へカウント有効信号、信号線３５１のｖａｌｉｄ信号、信号線３６４のｅｎａｂｌｅ信号の値の変更やバッファ４０５の内容の変更を行わない。尚、図８の通信部の説明でも示したように、信号線３６４のｅｎａｂｌｅ信号には、信号線１２５２のｓｔａｌｌ信号の値を反転させて出力する。また、本実施例における送信部の構成は第１の実施例と同一であるため説明を省略する。
【０１１４】
次に、シグナルフローグラフを用いて、動作を説明する。図７（ａ）、図７（ｂ）、図７（ｄ）で示した処理は、全ての通信部のバイパスモードレジスタ１１０１を無効に設定して動作させるため、第１の実施例と同様であるので説明を省略する。
【０１１５】
以下、図７（ｃ）に示した処理をバイパスする処理部に接続される通信部のバイパスモードレジスタ１１０１を有効に設定した場合の動作を説明する。
【０１１６】
先ず、図７（ｃ）と同様にデータ受信部のレジスタ（レジスタ４０１）及びデータ送信部のレジスタ（レジスタ５０１）の設定を行い、全ての通信部のマスクレジスタ４０７は無効に設定を行う。そして、データ処理部１０３−３及び１０３−５は、バイパスモードレジスタ１１０１を有効に設定する。第１の実施例では、処理Ｂ，Ｄを行わないにもかかわらず、データ処理部１０３−３及び１０３−５のレイテンシ分のクロックサイクルを余分に要していた。しかし、本実施例では、データ処理部１０３−３及び１０３−５を介さないで通信部１０２−３及び１０２−５内でバイパスするので、１クロック分の遅延で図７（ｃ）に示すフローを実現する。これにより、処理のスループットの向上が可能となる。
【０１１７】
以上説明したように、本実施例のデータ処理装置によれば、リングバスと処理部の間を接続する通信部内にバッファを設け、ｅｎａｂｌｅ信号により通信部と処理部のデータ転送を制御することにより、保留パケットの発生を抑えられる。これにより、リングバスの占有率を下げてデッドロックを低減することが可能となる。
【０１１８】
また、マスクレジスタを通信部内に設けることにより、通信部毎にｅｎａｂｌｅ信号によるデータ転送のＯＮ／ＯＦＦが可能となり、処理順序の変更が可能となる。さらに、バイパスモードレジスタを通信部内に設けることにより、処理に必要のない処理部を最小限のクロックサイクルでバイパスすることが可能となる。
【０１１９】
上述の実施例で用いたデータ処理装置の各部の概略構成図は、回路や機能手段の接続関係を説明するためのものであって、各構成の位置関係を制限するものではない。また、説明の簡便のために通信部が６個の例を挙げたが、本発明を実施するためには通信部は３個以上有ればよい。また、処理部も２個以上有ればよい。
【０１２０】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をコンピュータ等の処理装置（ＣＰＵ、プロセッサ）にて実行することで実現できる。
【０１２１】
また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【図１】
2010244512.tif 000003
【図２】
2010244512.tif 000004
【図３】
2010244512.tif 000005
【図４】
2010244512.tif 000006
【図５】
2010244512.tif 000007
【図６】
2010244512.tif 000008
【図７】
2010244512.tif 000009
【図８】
2010244512.tif 000010
【図９】
2010244512.tif 000011
【図１０】
2010244512.tif 000012
【図１１】
2010244512.tif 000013
【図１２】
2010244512.tif 000014