(57)【要約】【課題】  複雑なデータパスを有するデータ処理を可能にする技術を提供する。【解決手段】  データ処理装置は、データ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されている。通信手段の各々は、前の通信手段からデータを受信する受信手段と、次の通信手段へデータを送信する送信手段とを備え、受信手段及び送信手段の各々には接続ＩＤ情報が割り当てられている。通信手段は、当該通信手段の受信手段の接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、対応する処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段の接続ＩＤ情報を該データ処理済みのパケットに設定して、次の通信手段へ送信し、当該通信手段の受信手段の接続ＩＤ情報と同一でないＩＤを有するパケットを受信した場合は、ＩＤ情報を変更せずに当該パケットを次の通信手段へ送信する。【選択図】  図１
2010206517.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信する受信手段と、次の順序の通信手段へデータを送信する送信手段とを備え、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ＩＤ情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ＩＤ情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信し、
当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一でないＩＤを有するパケットを受信した場合は、ＩＤ情報を変更せずに当該パケットを次の順序の通信手段へ送信する
ことを特徴とするデータ処理装置。
【請求項２】
前記通信手段の少なくともいずれか一つが備える送信手段は、
カウンタ値を保持する第１保持手段を備え、
対応する前記受信手段に割り当てられている前記接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、前記データ処理済みのパケットに対して前記第１保持手段が保持する前記カウンタ値を設定して次の順序の通信手段へ送信し、前記第１保持手段が保持するカウンタ値を第１の値だけ増分し、
前記通信手段の少なくともいずれか一つの受信手段は、カウンタ値を保持する第２保持手段を備え、
前記通信手段は、当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一のＩＤ情報と、当該受信手段の前記第２保持手段が保持する前記カウンタ値と同一のカウンタ値との両方を有するパケットを受信した場合のみ、対応する前記処理手段で該パケットに対してデータ処理を行わせ、前記第２保持手段が保持するカウンタ値を第２の値だけ増分する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第１保持手段が保持するカウンタ値を初期化する第１初期化手段と、
前記第２保持手段が保持するカウンタ値を初期化する第２初期化手段と、
をさらに備えることを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記第１の値を設定する第１設定手段と、
前記第２の値を設定する第２設定手段と、
をさらに備えることを特徴とする請求項２又は３に記載のデータ処理装置。
【請求項５】
前記通信手段の少なくともいずれか一つは、当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合、当該通信手段の送信手段に割り当てられている接続ＩＤ情報が設定された前記データ処理済みのパケットを次の順序の通信手段へ送信するとともに、受信した該パケットをＩＤ情報を変更せずに次の順序の通信手段へ送信する
ことを特徴とする請求項１から４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記処理手段の少なくともいずれか一つは、処理対象のデータの入力と、処理済みのデータの出力とを行う入出力手段である
ことを特徴とする請求項１から５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記通信手段の前記受信手段と前記送信手段とに対して割り当てる前記接続ＩＤ情報を記憶する記憶手段をさらに備える
ことを特徴とする請求項１から６のいずれか１項に記載のデータ処理装置。
【請求項８】
所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置の制御方法であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信手段が受信する受信工程と、次の順序の通信手段へデータを送信手段が送信する送信工程とを実行し、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ＩＤ情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ＩＤ情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信する工程を実行し、
当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一でないＩＤを有するパケットを受信した場合は、ＩＤ情報を変更せずに当該パケットを次の順序の通信手段へ送信する工程を実行する
ことを特徴とするデータ処理装置の制御方法。
【請求項９】
通信手段として受信手段と送信手段を有し、所定の順序でリング状に接続された複数のモジュールの夫々に、
前の順序の通信手段からデータを受信手段が受信する受信工程と、
次の順序の通信手段へデータを送信手段が送信する送信工程と、
前記受信手段及び前記送信手段には、データ処理の論理的順序を識別するための接続ＩＤ情報が割り当てられており、当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、対応する処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ＩＤ情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信する工程と、
当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一でないＩＤを有するパケットを受信した場合は、ＩＤ情報を変更せずに当該パケットを次の順序の通信手段へ送信する工程と
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置及びその制御方法に関し、特に、複数のデータ処理部へのデータの流れ（データフロー）を制御することで複雑な処理を実現する技術に関する。
【背景技術】
【０００２】
従来、プリント画像処理のような一連のデータ処理を高速に効率よく実現するため、全体のデータ処理を所定の機能に分割してハード化し、ハード化されたモジュールを処理の流れ順に接続して一連のデータ処理をパイプライン的に実行する手法が知られている。一方、画像処理においては、一連の処理の順序を変えることで効率的に処理を実現できる。
【０００３】
例えば、所定の画素数の出力装置に画像を出力する場合、画素数（解像度）を合わせるため解像度変換が必要となるが、入力画像の画素数が出力装置の画素数よりも多い場合は、処理の上流側で解像度変換を行い、画素数を少なくしてから処理を行った方が良い。他方、入力画像の画素数が出力装置の画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力の直前（下流側）で解像度変換を行った方が画質が良い。
【０００４】
また、例えば、ある空間（例えば、入力デバイス空間）から標準的な空間（例えば、解像度６００dpi、ＣＩＥＬＡＢ色空間等）に変換して処理を行い、別の空間（例えば、出力デバイス空間）に変換する場合も処理の順序が問題となる。すなわち、入力側と出力側の空間変換部の処理順（１次元ＬＵＴ、行列演算、３次元ＬＵＴ等の処理の順序）は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。
【０００５】
しかしながら、所定の機能を割り当てたモジュールによってパイプライン処理を行うデータ処理においては、処理の順序を変えることができない。このため、上に例示したような場合は、同じ機能のモジュールを複数実装することで対応しており、リソース活用の点で無駄があった。
【０００６】
上記課題を解決するために、各処理モジュール間をリング状のネットワークで接続する構成が提案されている（特許文献１、特許文献２）。これらの手法によれば、リング状ネットワークにてデータの接続先を変更することにより、処理順序の変更が可能である。なお、特許文献２の構成においては、各処理モジュールは各々プロセッサにて実行されるので、各プロセッサのプログラムを変更することによっても処理順序を変更可能である。また、特許文献３にはブロードキャスト通信を用いることで、拡張性、保守性を向上させたデータフロー制御方式が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０１−０２３３４０号公報
【特許文献２】特許第２５１８２９３号公報
【特許文献３】特許第２８３４２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１、特許文献２の記載の構成においては、処理データの接続関係は１対１となる。このため、データパスの分岐（複数モジュールでの同一データの参照）や複数データパスの同時実行、処理モジュールの時分割多重処理等、複雑なデータパスの制御はできなかった。
【０００９】
また、特許文献３の構成のようにブロードキャスト通信を用いれば、データパスの分岐（複数モジュールでの同一データの参照）は可能である。しかし、データパスの統合や複数データパスの同時実行、処理モジュールの時分割多重処理等、複雑なデータパスの制御はできなかった。なお、ブロードキャスト通信を用いた場合は、基本的に送信元に戻ってくるまでは送信パケットは消去されないので、リングバスの占有率が増加してしまうという欠点もあった。また、特許文献３の構成では、受信できない状態のモジュールはパケットを消去してしまうため、送信元ではリングを１周分以上待った上で再送処理を開始する。このため、制御が複雑になるだけでなく、転送効率が著しく低下するという欠点もあった。
【００１０】
本発明は上記課題に鑑みなされたものであり、簡単な構成によって処理順序の変更を可能にし、更に、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明によれば、所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信する受信手段と、次の順序の通信手段へデータを送信する送信手段とを備え、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ＩＤ情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ＩＤ情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信し、
当該通信手段の受信手段に割り当てられている前記接続ＩＤ情報と同一でないＩＤを有するパケットを受信した場合は、ＩＤ情報を変更せずに当該パケットを次の順序の通信手段へ送信する
ことを特徴とするデータ処理装置が提供される。
【発明の効果】
【００１２】
本発明によれば、所定の機能が割り当てられている複数のモジュールによってパイプライン処理等をする場合に、簡単な構成によってパイプライン処理等の処理順序の変更が可能な技術を提供できる。
【００１３】
また、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を可能にする技術を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態におけるデータ処理装置の一構成例を示すブロック図である。
【図２】通信部の一構成例を示すブロック図である。
【図３】データ受信部の一構成例を示すブロック図である。
【図４】データ送信部の一構成例を示すブロック図である。
【図５】リングバス上を流れるパケットの一構成例を示す図である。
【図６】データ処理部が５個の場合のデータ処理装置の一構成例を示すブロック図である。
【図７】シグナルフローグラフの例を示す図である。
【図８】本発明の実施形態におけるデータ処理装置を有するシステムの構成例を示すブロック図である。
【図９】データ処理装置の制御手順を示すフローチャートである。
【図１０】通信部の別の構成例を示すブロック図である。
【図１１】本発明の実施形態におけるデータ処理装置の一構成例を示すブロック図である。
【図１２】入出力部が２個、データ処理部が５個の場合のデータ処理装置の一構成例を示すブロック図である。
【図１３】２つのデータフローを同時処理するシグナルフローグラフの例を示す図である。
【図１４】シグナルフローグラフの例を示す図である。
【発明を実施するための形態】
【００１５】
以下に本願発明の実施形態を示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲の記載によって規定される本願発明のほんの一部の実施形態にすぎない。従って、本明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明である。なお、便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１６】
＜＜実施形態１＞＞
（データ処理装置の構成）
図１は、本発明の第１の実施形態（実施形態１）におけるデータ処理装置の一構成例を示すブロック図である。図１中、１０１は処理対象のデータの入力と、処理済みのデータの出力とを行う入出力手段としてのデータ入出力部（入出力部）である。また、１０２−１〜１０２−ｍは通信手段としての通信部（まとめて通信部１０２）であり、１０３−２〜１０３−ｍは処理手段としてのデータ処理部（処理部。まとめてデータ処理部１０３）である。
【００１７】
通信部１０２−１〜１０２−ｍは、各々隣接する通信部と接続され（但し、通信部１０２−ｍは通信部１０２−１に接続される）、リングバスを構成している。通信部１０２−１〜１０２−ｍはさらに、リングバスとデータ入出力部１０１またはデータ処理部１０３−２〜１０３−ｍとの間でのデータの送受信を行う。このため、通信部１０２−２〜１０２−ｍには、各々データ処理部１０３−２〜１０３−ｍに接続されている。
【００１８】
入力端子１５１より入力されたデータはデータ入出力部１０１を介して通信部１０２−１に入力される。入力されたデータはパケット化されリングバス上を流される。通信部１０２は予め設定された情報に従って必要なパケットをリングバスより取り込み、取り込んだパケットよりデータ抽出し、データ処理部１０３に入力する。データ処理部１０３では、所定のデータ処理（例えば色空間変換や解像度変換等）を行い、処理後のデータを通信部１０２へ出力する。
【００１９】
処理後のデータは通信部１０２にてパケット化されリングバス上を流される。このように通信部１０２−２〜１０２−ｍによって、予め設定された順番にてデータがデータ処理部１０３−２〜１０３−ｍにて次々に処理されて行く。そして、設定されたデータ処理が終了したデータは通信部１０２−１にてデータ入出力部１０１に取り込まれ、出力端子１５２より出力される。なお、データ入出力部１０１は、外部の機器（またはモジュール）とのインタフェースを行うものであり、通信部１０２−１にて直接インタフェース可能な場合は省略可能である。
【００２０】
ここで、本実施形態に係るデータ処理装置の動作概要について説明する。本実施形態に係るデータ処理装置では、所定のデータ処理を行う複数のデータ処理部１０３とデータ入出力部１０１がそれぞれ対応する通信部１０２を介して所定の順序でリング状に接続されている。後述するように、通信部１０２の各々は、前の順序の通信部１０２からデータを受信する受信部２０１と、次の順序の通信部１０２へデータを送信する送信部２０４とを備えている。また、受信部２０１及び送信部２０４の各々には、データ処理の論理的順序を識別するための接続ＩＤ情報が割り当てられている。このような構成において、通信部１０２は、当該通信部１０２の受信部２０１に割り当てられている接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、対応するデータ処理部１０３で該パケットに対してデータ処理を行わせる。そして、当該通信部１０２の送信部２０４に割り当てられている接続ＩＤ情報を該データ処理済みのパケットに設定して、次の順序の通信部１０２へ送信する。一方、当該通信部１０２の受信部２０１に割り当てられている接続ＩＤ情報と同一でないＩＤを有するパケットを受信した場合は、ＩＤ情報を変更せずに当該パケットを次の順序の通信部１０２へ送信する。このように、受信部２０１及び送信部２０４の各々に接続ＩＤ情報を割り振ってパケットの伝達経路を制御することで、複雑なデータパスを有するデータ処理を効率的に実現することができる。以下、通信部１０２の詳細な構成を説明する。
【００２１】
（通信部）
図２は、通信部１０２の一構成例を示すブロック図である。図２中、２０１はデータ受信部（受信部）、２０２はバッファ、２０３はセレクタ、２０４はデータ送信部（送信部）である。
【００２２】
隣の通信部の出力端子２５９は、入力端子２５７に接続され、通信部１０２−１〜１０２−ｍにてリングバスを構成している。また、信号線２５１，２５２，２５３，２５４，２５５，２５６には、対応するデータ処理部１０３（１０３−２〜１０３−ｍの内の１つ）が接続されている。ただし、通信部１０２−１の信号線２５１〜２５６にはデータ入出力部１０１が接続されている。
【００２３】
図５はリングバス上を流れるパケットの一構成例を示す模式図である。図５中、５０１はパケットが有効であることを示すvalidフラグであり、５０２はパケットが受信保留であることを示すstallフラグである。５０３はデータの送信順を示すカウント値、５０４はデータの論理的な接続を識別するための接続ＩＤ、５０５は通信部１０２に入力または出力されるデータである。
【００２４】
隣の通信部より入力されたパケットは、バッファ２０２にて一旦保持され、次のクロックサイクルでセレクタ２０３に出力される。データ受信部２０１は、入力端子２５７のパケットを監視し、
・パケットのvalidフラグが有効である。
・接続ＩＤ及びカウント値が受信部２０１が保持する値と一致する。
・接続されているデータ処理部１０３がデータの入力が可能である（stall信号２５３が保留状態でない）。
の全てが成立する場合、このパケットを取り込み、（valid信号２５１を有効にして）出力端子２５２よりデータ処理部１０３へデータを出力する。このとき、データ受信部２０１は、信号線２６０を介してバッファ２０２にデータの取り込みを通知し、バッファ２０２に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。また、パケット取り込み後、受信部２０１が保持するカウント値５０３はインクリメントされる。
【００２５】
一方、
・入力パケットのvalidフラグが有効である。
・接続ＩＤとカウント値が一致する。
・接続されているデータ処理部１０３がデータの入力が不可能である（stall信号２５３が保留状態）。
の全てが成立する場合、データ受信部２０１は、信号線２６０を介してバッファ２０２にデータの保留を通知し、バッファ２０２に格納されるパケットのstallフラグをセットする。また、入力パケットのvalidフラグが有効で、接続ＩＤ一致してもカウント値が受信部２０１が保持する値と一致しない場合は、データの取り込みができないので、この場合もstallフラグをセットする。なお、後述の動作例で説明するように、パケットを受信するか否かの判断においてカウント値を評価しなくてもよい。
【００２６】
データ送信部２０４は、バッファ２０２の出力パケット（信号線２５８）のvalidフラグを監視する。validフラグが有効のときはリングバス上にデータを出力できないので、データ送信部２０４は、接続されているデータ処理部１０３からのデータの出力を保留するためにstall信号２５４をセットする。なお、validフラグが無効のときは、stall信号２５４をリセットする。
・接続されているデータ処理部１０３からデータの出力が可能である（valid信号２５６が有効の場合）。
・バッファ２０２の出力パケットのvalidフラグが無効である。
の両方が成り立つ場合、データ送信部２０４は、validフラグを有効、stallフラグを無効にして、カウント値とレジスタに設定されている接続ＩＤを付加してパケットを生成する。そして、セレクタ２０３を制御して、出力端子２５９よりこの生成したパケットをリングバス上に流す。パケット出力後、データ送信部２０４が保持するカウント値はインクリメントされる。なお、後述の動作例で説明するように、カウント値を評価しない構成ではカウント値のインクリメントは行わなくてもよい。
【００２７】
（データ受信部）
図３は、データ受信部２０１の一構成例を示すブロック図である。図３中、３０１はレジスタ、３０２は第１保持手段としてのカウンタ、３０３は比較部、３０４は判定部である。
【００２８】
比較部３０３は入力端子２５７より入力されるリングバス上のパケットのvalidフラグ、接続ＩＤ、カウント値を監視する。そして、
・パケットのvalidフラグが有効である。
・パケットの接続ＩＤがレジスタ３０１に格納されている接続ＩＤと一致する。
・パケットのカウント値がカウンタ３０２の値と一致する。
が全て成立した場合、valid信号２５１を有効にする。なお、出力端子２５２にはこのパケットのデータ部が出力される。また、比較部３０３は、
・入力されたパケットのvalidフラグが有効で、このパケットの接続ＩＤがレジスタ３０１に格納されている接続ＩＤと一致したことを示す入力パケット判定信号。
・このパケットのカウント値がカウンタ３０２の値と一致したことを示すカウント値一致信号。
を判定部３０４に入力する。判定部３０４は、入力パケット判定信号とカウント値一致信号、接続されているデータ処理部１０３からのstall信号２５３より、データ処理部１０３がデータを取り込めたかどうかを判定する。データを取り込めたと判定した場合は、信号線２６０を介してバッファ２０２にデータの取り込みを通知し、バッファ２０２に格納されているパケットのvalidフラグをクリアし、パケットを無効化する。なお、後述するように、データの分岐（複数データ処理部での使用）のため、このパケット無効化処理は、ＣＰＵ等によってＯＮ／ＯＦＦ可能となっている。
【００２９】
データ取り込み通知信号はカウンタ３０２にも入力され、データを取り込めたと判定した場合、次のデータを取得するために、次のクロックサイクルでカウンタ３０２のカウント値をインクリメント（＋１）する。一方、入力パケット判定信号とカウント値一致信号、接続されているデータ処理部１０３からのstall信号２５３より、取り込むべきデータが取り込めないと判定した場合は、信号線２６０を介して、バッファ２０２にデータの保留を通知する。さらに、バッファ２０２に格納されるパケットのstallフラグをセットする。また、入力パケット判定信号とカウント値一致信号より、取り込み対象パケットであるがデータの取り込み順序が正しくないと判定した場合も同様である。すなわち、信号線２６０を介して、バッファ２０２にデータの保留を通知し、バッファ２０２に格納されるパケットのstallフラグをセットする。なお、ここではカウント値を評価する場合について説明したが、カウント値を評価しない場合はカウント値に関する信号は送受信する必要がない。
【００３０】
（データ送信部）
図４は、データ送信部２０４の一構成例を示すブロック図である。図４中、４０１はレジスタ、４０２は第２保持手段としてのカウンタ、４０３は比較部、４０４はパケット生成部である。
【００３１】
比較部４０３は、バッファ２０２の出力パケット（信号線２５８）のvalidフラグとstallフラグ、接続ＩＤを監視する。validフラグが有効のときは、リングバス上にデータを出力できないので、接続されているデータ処理部１０３からのデータ出力を保留するためにstall信号２５４をセットする。なお、validフラグが無効のときは、stall信号２５４をリセットする。
【００３２】
また、比較部４０３は、
・バッファ２０２の出力パケットのvalidフラグが有効かつstallフラグが保留を示していない。
・バッファ２０２の出力パケットの接続ＩＤがレジスタ４０１に格納されている接続ＩＤと一致した。
の両方が成立した場合は、自身が出力したパケットが保留されずに戻ってきたと判定する。そして、パケット生成部４０４を介してセレクタ２０３を制御し、validフラグを無効にしてパケットを無効化する。この場合も、パケットの出力が可能となるので、stall信号２５４をリセットする。
【００３３】
パケット生成部４０４は、接続されているデータ処理部１０３のvalid信号２５６を参照する。データ処理部１０３からデータの出力が可能と判定した場合（valid信号２５６が有効の場合）は、バッファ２０２の出力パケットが、
・その出力パケットのvalidフラグが無効である場合。
・無効化するパケット（validフラグが有効かつstallフラグが保留を示していないときで、パケットの接続ＩＤがレジスタ４０１に格納されている接続ＩＤと一致したパケット）の場合。
のいずれかの場合、validフラグを有効、stallフラグを無効にして、カウンタ４０２のカウント値とレジスタ４０１に設定されている接続ＩＤを付加してパケットを生成する。そして、セレクタ２０３を制御して、出力端子２５９より生成したパケットをリングバス上に流す。さらに、次のクロックサイクルでカウンタ４０２のカウント値をインクリメント（＋１）する。なお、送信部２０４のカウンタ４０２とこの送信部のパケットを受信する受信部２０１のカウンタ３０２は、同期を取るため、データ転送開始前に同じ値に初期化される。なお、ここではカウント値を評価する場合について説明したが、カウント値を評価しない場合はカウント値に関する処理は実行する必要がない。
【００３４】
（データ処理装置の動作）
次に、本実施形態に係るデータ処理装置の動作について図面を参照して説明する。図６はデータ処理部が５個の場合のブロック図である。図示したように各データ処理部１０３−２〜１０３−６では、各々処理部Ａ〜処理部Ｅで示される処理が入力データに対し施されるものとする。以下では説明を簡略化するため、データ処理部１０３、入出力部１０１では入力データの保留が発生しない場合を説明する。この場合は、パケットのstallフラグ、カウント値は不要となる。このような構成の動作について、シグナルフローグラフを用いて説明する。シグナルフローグラフにおいては、ノードを「丸」で示し、処理を「アーク（矢印）」で示す。
【００３５】
●動作例１
まず、単純に処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅの順に処理されるとすると、シグナルフローグラフは図７（ａ）に示すようになる。この時、
・処理部Ａ（データ処理部１０３−２）の通信部１０２−２の受信部２０１のレジスタ（レジスタ３０１）には”１”を格納しておき、通信部１０２−２の送信部２０４のレジスタ（レジスタ４０１）には”２”を格納しておく。
同様に、
・通信部１０２−３の受信部２０１のレジスタには”２”、送信部２０４のレジスタには”３”を格納しておく。
・通信部１０２−４の受信部２０１のレジスタには”３”、送信部２０４のレジスタには”４”を格納しておく。
・通信部１０２−５の受信部２０１のレジスタには”４”、送信部２０４のレジスタには”５”を格納しておく。
・通信部１０２−６の受信部２０１のレジスタには”５”、送信部２０４のレジスタには”６”を格納しておく。
【００３６】
入力端子１５１はノード”１”に対応し、出力端子１５２はノード”６”に対応するので、通信部１０２−１の受信部２０１のレジスタには”６”を格納しておき、送信部２０４のレジスタには”１”を、格納しておく。
【００３７】
入力端子１５１から入力されたデータには通信部１０２−１にて接続ＩＤ”１”が付加され、通信部１０２−２に出力される。通信部１０２−２には受信部のレジスタ３０１に”１”が格納されているので、接続ＩＤ”１”のパケットを取り込んでデータ部をデータ処理部１０３−２に入力する。入力されたデータはデータ処理部１０３−２で処理Ａが施され、通信部１０２−２に出力される。通信部１０２−２には送信部のレジスタ４０１に”２”が格納されているので、接続ＩＤ”２”のパケットを生成して通信部１０２−３へ出力する。
【００３８】
通信部１０２−３には受信部のレジスタ３０１に”２”が格納されているので、接続ＩＤ”２”のパケットを取り込んでデータ処理部１０３−３で処理Ｂが施され、通信部１０２−３に出力される。通信部１０２−３の送信部のレジスタ４０１には”３”が格納されているので、接続ＩＤ”３”のパケットを生成して通信部１０２−４へ出力する。
【００３９】
同様に、通信部１０２−４では接続ＩＤ”３”のパケットを取り込んでデータ処理部１０３−４で処理Ｃが施され、接続ＩＤ”４”のパケットを生成して通信部１０２−５へ出力する。通信部１０２−５では接続ＩＤ”４”のパケットを取り込んでデータ処理部１０３−５で処理Ｄが施され、接続ＩＤ”５”のパケットを生成して通信部１０２−６へ出力する。通信部１０２−６では接続ＩＤ”５”のパケットを取り込んでデータ処理部１０３−６で処理Ｅが施され、接続ＩＤ”６”のパケットを生成して通信部１０２−１へ出力する。通信部１０２−１には受信部のレジスタ３０１に”６”が格納されているので、接続ＩＤ”６”のパケットを取り込んでデータ部を出力端子１５２より出力する。このようにして、入力されたデータは、処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅの順に処理され出力される。
【００４０】
●動作例２
図７（ｂ）は処理Ｂ、処理Ｃの順序を逆にしたシグナルフローグラフである。この場合は、通信部１０２−３の受信部２０１のレジスタには”３”、送信部２０４のレジスタには”４”を格納しておく。そして、通信部１０２−４の受信部２０１のレジスタには”２”、送信部２０４のレジスタには”３”を格納しておく。その他は図７（ａ）の例と同じであるので省略する。
【００４１】
入力端子１５１から入力されたデータには通信部１０２−１にて接続ＩＤ”１”が付加され、通信部１０２−２に出力される。通信部１０２−２では接続ＩＤ”１”のパケットを取り込んでデータ処理部１０３−２で処理Ａが施され、接続ＩＤ”２”のパケットを生成して通信部１０２−３へ出力する。
【００４２】
通信部１０２−３には受信部のレジスタ３０１に”３”が格納されているので、接続ＩＤ”３”のパケット以外は取り込まずにそのまま通信部１０２−４へ出力する。従って、上記接続ＩＤ”２”のパケットは何も処理されずに通信部１０２−４へ出力される。通信部１０２−４では接続ＩＤ”２”のパケットを取り込んでデータ処理部１０３−４で処理Ｃが施され、接続ＩＤ”３”のパケットを生成して通信部１０２−５へ出力する。
【００４３】
通信部１０２−５には受信部のレジスタ３０１に”４”が格納されているので、接続ＩＤ”３”のパケットは取り込まずにそのまま通信部１０２−４へ出力する。同様に、通信部１０２−６、通信部１０２−１、通信部１０２−２においても、何も処理されない。従って、通信部１０２−４がパケットを出力してから４クロックサイクル後に通信部１０２−３に接続ＩＤ”３”のパケットが到達し、取り込まれてデータ処理部１０３−３で処理Ｂが施され、接続ＩＤ”４”のパケットを生成して通信部１０２−４へ出力する。
【００４４】
通信部１０２−４には受信部のレジスタ３０１に”２”が格納されているので、接続ＩＤ”４”のパケットは取り込まずにそのまま通信部１０２−５へ出力する。通信部１０２−５では接続ＩＤ”４”のパケットを取り込んでデータ処理部１０３−５で処理Ｄが施され、接続ＩＤ”５”のパケットを生成して通信部１０２−６へ出力する。通信部１０２−６では接続ＩＤ”５”のパケットを取り込んでデータ処理部１０３−６で処理Ｅが施され、接続ＩＤ”６”のパケットを生成して通信部１０２−１へ出力する。通信部１０２−１には受信部のレジスタ３０１に”６”が格納されているので、接続ＩＤ”６”のパケットを取り込んでデータ部を出力端子１５２より出力する。このようにして、入力されたデータは、処理Ａ、処理Ｃ、処理Ｂ、処理Ｄ、処理Ｅの順に処理され出力される。
【００４５】
●動作例３
図７（ｃ）は処理Ｄ、処理Ｅを削除したシグナルフローグラフである。この場合は、通信部１０２−４の送信部２０４のレジスタを”６”に変更するだけでよい。その他は図７（ａ）の例と同じであるので省略する。なお、通信部１０２−５および通信部１０２−６の受信部２０１のレジスタには、パケットが取り込まれないようにシグナルフローグラフで使用されていない値を設定しておく。
【００４６】
●動作例４
図７（ｄ）は分岐・統合のあるシグナルフローグラフの例である。このようなシグナルフローは、例えば、
（１）同じ画像から、一方はＬＰＦ（ローパスフィルタ）をかけて低周波成分を取り出して処理をし、もう一方はＨＰＦ（ハイパスフィルタ）をかけて高周波成分を取り出して処理をする。
（２）画像の低周波成分と高周波成分を合成して出力画像を生成する。
といった処理を行う場合に有効である。以下では、分岐・統合を伴う処理をカウント値を用いて実行する場合について説明する。
【００４７】
通信部１０２−６にて、分岐されて処理された２系統のデータが同期されて取り込まれるように、処理開始前に、通信部１０２−３の送信部のカウンタ４０２は”０”に初期化され、通信部１０２−５の送信部のカウンタ４０２は”１”に初期化される。また、上記２つのカウンタは、増分２でカウントアップ（即ち、パケット出力する度に＋２）される。このようにカウンタを設定することで、通信部１０２−３の出力と通信部１０２−５の出力を通信部１０２−６で交互に受け取ることが可能となる。また、通信部１０２−２にて取り込むパケットは通信部１０２−４でも取り込まなければならないので、通信部１０２−２では取り込んだパケットを無効にせずに、そのまま通信部１０２−３に出力するように設定しておく。すなわち、前述した入力パケット無効化処理をＯＦＦに設定する。
【００４８】
次に、データの流れに沿って動作を説明する。入力端子１５１から入力されたデータには通信部１０２−１にて接続ＩＤ”１”が付加され、通信部１０２−２に出力される。通信部１０２−２には受信部のレジスタ３０１に”１”が格納されているので、接続ＩＤ”１”のパケットを取り込んでデータ部をデータ処理部１０３−２に入力する。また、通信部１０２−２は、データ分岐のため入力パケット無効化処理がＯＦＦに設定されており、取り込んだパケットは無効化（消去）せずに、そのまま通信部１０２−３に出力される。一方、入力されたデータはデータ処理部１０３−２で処理Ａが施され、通信部１０２−２に出力される。通信部１０２−２には送信部のレジスタ４０１に”２”が格納されているので、接続ＩＤ”２”のパケットを生成して通信部１０２−３へ出力する。
【００４９】
通信部１０２−３では接続ＩＤ”２”のパケットを取り込んでデータ処理部１０３−３で処理Ｂが施され、接続ＩＤ”３”のパケットを生成して通信部１０２−４へ出力する。このとき、カウント値としては、初期値の”０”が付加される。また、送信部のカウンタ４０２は次のパケットの送信のために増分２でカウントアップ（即ち、パケット出力する度に＋２）される。
【００５０】
通信部１０２−４には受信部のレジスタ３０１に”１”が格納されているので、接続ＩＤ”３”のパケットは取り込まずにそのまま通信部１０２−５へ出力する。同様に、通信部１０２−５においても何も処理されずにそのまま通信部１０２−６へ出力する。
【００５１】
通信部１０２−６には受信部のレジスタ３０１に”３”が格納されており、受信部のカウンタ３０２は”０”に初期化されているので、接続ＩＤ”３”かつカウント値”０”のパケットを取り込んでデータ部をデータ処理部１０３−６に入力する。この時、次に処理Ｄが施されたデータを受け取るため、受信部のカウンタ３０２はインクリメント（＋１）される。
【００５２】
通信部１０２−２で分岐されたパケットは、接続ＩＤ”１”であるので、通信部１０２−３では何もせずに通信部１０２−４に出力される。通信部１０２−４には受信部のレジスタ３０１に”１”が格納されているので、接続ＩＤ”１”のパケットを取り込んでデータ部をデータ処理部１０３−４に入力する。なお、このパケットは他のデータ処理部ではもう使用しないので、リングバスの有効利用のため無効化処理される。入力されたデータはデータ処理部１０３−４で処理Ｃが施され、通信部１０２−４に出力される。通信部１０２−４には送信部のレジスタ４０１に”４”が格納されているので、接続ＩＤ”４”のパケットを生成して通信部１０２−５へ出力する。
【００５３】
通信部１０２−５では接続ＩＤ”４”のパケットを取り込んでデータ処理部１０３−５で処理Ｄが施され、接続ＩＤ”３”のパケットを生成して通信部１０２−６へ出力する。このとき、カウント値としては、初期値の”１”が付加される。また、送信部のカウンタ４０２は次のパケットの送信のために増分２でカウントアップ（即ち、パケット出力する度に＋２）される。
【００５４】
通信部１０２−６には受信部のレジスタ３０１に”３”が格納されており、受信部のカウンタ３０２はインクリメントされて”１”になっているので、接続ＩＤ”３”かつカウント値”１”のパケットを取り込んでデータ部をデータ処理部１０３−６に入力する。この時、次に処理Ｂが施されたデータを受け取るため、受信部のカウンタ３０２はインクリメント（＋１）される。
【００５５】
データ処理部１０３−６には、上記操作により、偶数番目には処理Ａ、処理Ｂが施されたデータが、奇数番目には処理Ｃ、処理Ｄが施されたデータが順次入力される。これらのデータをデータ処理部１０３−６（処理Ｅ）にて合成（統合）し、結果を通信部１０２−６に出力する。通信部１０２−６の送信部のレジスタ４０１には”６”が格納されているので、接続ＩＤ”６”のパケットを生成して通信部１０２−１へ出力する。通信部１０２−１には受信部のレジスタ３０１に”６”が格納されているので、接続ＩＤ”６”のパケットを取り込んでデータ部を出力端子１５２より出力する。入力されたデータは、処理Ａ〜処理Ｂと処理Ｃ〜処理Ｄの２系統に分岐して処理され、処理Ｅにて合成処理されて出力される。
【００５６】
●動作例５
同様に、カウント値によって分岐させたり、特定の間隔のデータを別処理させたりすることも可能である。例えば、偶数画素と奇数画素とに分離し、異なる処理を施すことも簡単にできる。図７（ｄ）のシグナルフローグラフにおいて、偶数画素は処理Ａ〜処理Ｂを行い、奇数画素は処理Ｃ〜処理Ｄの処理を行い、処理Ｅの入力にて統合されて処理Ｅが行われる例にて説明する。
【００５７】
この場合も動作例４と同様に、分岐・処理された２系統のデータが通信部１０２−６で同期されて取り込まれるように、処理開始前に、通信部１０２−３の送信部のカウンタ４０２は”０”、通信部１０２−５の送信部のカウンタ４０２は”１”に初期化される。また、上記２つのカウンタは、増分２でカウントアップ（即ち、パケット出力する度に＋２）される。これに加えて、偶数画素と奇数画素とに分離して処理されるように、処理開始前に、通信部１０２−２の受信部のカウンタ３０２は”０”に初期化され、通信部１０２−４の受信部のカウンタ３０２は”１”に初期化される。また、上記２つのカウンタは、増分２でカウントアップ（即ち、パケットを取り込む度に＋２）される。このように設定することで、偶数のカウント値のパケットは通信部１０２−２で取り込まれ、奇数のカウント値のパケットは通信部１０２−４で取り込まれる。なお、この場合は、同じデータを参照するわけではないので、取り込んだパケットを無効化してよい（入力パケット無効化処理をＯＮに設定）。
【００５８】
（システム構成例）
図８は、本実施形態に係るデータ処理装置を有するシステムの構成例を示す。１１００はシステム制御部であり、演算制御用のＣＰＵ１１０１、固定データやプログラムを格納するＲＯＭ１１０２、データの一時保存やプログラムのロードに使用されるＲＡＭ１１０３および、外部データを保持する外部記憶装置１１０４等を備える。
【００５９】
１１１０は、処理すべきデータをシステム外部から取り込むデータ入力部である。たとえばイメージスキャナおよびＡ／Ｄ変換器などのデバイスを有する画像読み込み装置や、マイクおよびＡ／Ｄ変換などのデバイスを有する音声入力装置などであってもよい。
【００６０】
１１２０は、本実施形態に係るデータ処理装置である。１１３０は、本システムにおいて処理されたデータを外部に出力するデータ出力部である。例えば、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置であったり、音声データをＤ／Ａ変換器等を通して出力する音声出力装置であってもよい。
【００６１】
データ入力部１１１０において入力されたデータは、システム制御部に送られてＣＰＵ１１０１で処理されてもよいし、そのままＲＡＭ１１０３や外部記憶装置１１０４に一時記録されてもよい。よって、データ処理装置１１２０は、データ入力部１１１０からの入力データを直接受け取って処理を行っても、システム制御部１１００からの指示ならびにデータ供給によって処理を行ってもよい。
【００６２】
また、データ処理装置１１２０の出力は、再度システム制御部１１００に送られても、また、直接データ出力部１１３０に送られてもよい。データ処理装置１１２０は、システム制御部１１００の制御によって、様々なデータ処理内容を設定され、そして様々な処理データを供給されて、設定に応じた処理を実行し、処理したデータを外部に出力する。
【００６３】
（制御手順）
図９に、システム制御部からのデータ処理装置１１２０の制御手順を示す。制御処理が開始されると、ステップＳ１２１０において、データ処理装置１１２０のリセットが行われる。この時、リングバスを構成するバッファ２０２、接続ＩＤを設定するレジスタ３０１、レジスタ４０１、データ順を示すカウンタ３０２、カウンタ４０２、不図示のカウンタ増分レジスタ、パケット無効化設定レジスタ等が初期化される。
【００６４】
ステップＳ１２２０において、通信部の接続ＩＤを格納するレジスタ３０１、レジスタ４０１が設定される。また、必要に応じて、データ順を示すカウンタ３０２、カウンタ４０２の初期値や増分、パケット無効化設定レジスタ等が設定される。
【００６５】
ステップＳ１２３０において、データ処理部に対するパラメータ指定などが行われる。次に、ステップＳ１２４０において、データ処理装置１１２０の起動指示が行われる。
【００６６】
ステップＳ１２５０では、データ処理装置１１２０の終了通知を監視する処理が行われ、これはステップＳ１２６０において、処理終了が検知されたことを判断するまで繰り返される。ステップＳ１２６０において、データ処理装置１１２０の終了通知が確認されると（ステップＳ１２６０でＹＥＳ）、処理を終了する。
【００６７】
以上説明したように、本実施形態に係るデータ処理装置は、シグナルフローグラフでのノード番号を通信部のレジスタに設定し、このノード番号を用いてデータフローを制御する。これにより、多様なシグナルフローグラフに対応するデータフローを構成することが可能となる。
【００６８】
また、本実施形態では、通信部１０２の少なくともいずれか一つが備える送信部２０４は、カウンタ値を保持するカウンタ４０２を備えている。そして、対応する受信部２０１に割り当てられている接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合は、データ処理済みのパケットに対してカウンタ４０２が保持するカウンタ値を設定して次の順序の通信部１０２へ送信する。さらに、カウンタ４０２が保持するカウンタ値を第１の値だけ増分する。一方、通信部１０２の少なくともいずれか一つが備える受信部２０１も、カウンタ値を保持するカウンタ３０２を備えている。そして、通信部１０２は、
・当該通信部１０２の受信部２０１に割り当てられている接続ＩＤ情報と同一のＩＤ情報。
・当該受信部２０１のカウンタ３０２が保持するカウンタ値と同一のカウンタ値。
の両方を有するパケットを受信した場合のみ、対応するデータ処理部１０３で該パケットに対してデータ処理を行わせ、カウンタ３０２が保持するカウンタ値を第２の値だけ増分する。したがって、本実施形態によれば、
・送信部及び受信部に割り当てる接続ＩＤ情報。
・カウンタ値を増分する送信部及び受信部、カウンタの増分値（第１の増分値、第２の増分値）。
などを適切に設定することで、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を実行することができる。
【００６９】
また、通信部１０２の少なくともいずれか一つは、当該通信部１０２の受信部２０１に割り当てられている接続ＩＤ情報と同一のＩＤ情報を有するパケットを受信した場合、
・当該通信部１０２の送信部２０４に割り当てられている接続ＩＤ情報が設定されたデータ処理済みのパケットを次の順序の通信部１０２へ送信する。
とともに、
・受信した該パケットをＩＤ情報を変更せずに次の順序の通信部１０２へ送信する。
このため、同一のデータに対して、別のデータ処理部１０３を用いてそれぞれ別個のデータ処理を行ったり、あるデータ処理部のデータ処理結果を監視（モニタ）したりすることが可能になる。
【００７０】
なお、カウンタ４０２やカウンタ３０２が保持するカウンタ値を初期化する（第１初期化、第２初期化）ようにしてもよい。あるいは、カウンタ４０２の増分値（第１の値）やカウンタ３０２の増分値（第２の値）を設定する（第１設定、第２設定）ようにしてもよい。この設定は、ユーザの指示入力や、当該設定の詳細を示すデータを記憶装置から読み出すことによって行うことができる。これにより、データ処理を任意にカスタマイズすることができる。
【００７１】
また、本実施形態では、通信部１０２の受信部２０１と送信部２０４とに対して割り当てる接続ＩＤ情報を記憶するレジスタ（記憶手段）を備えている。このため、レジスタの記憶内容を適切に設定することで、データ処理のフローを任意にカスタマイズすることができる。
【００７２】
なお、上述した説明においては、通信部１０２のバッファを受信部２０１と送信部２０３の間に配置しているが、これに限らず、例えば、図１０に示すように、セレクタ２０３の後段に配置するようにしても良い。この場合、パケットの保留のためのstallフラグの設定や、受信パケットの無効化のためのvalidフラグのクリアは送信部１３０４を介してセレクタ２０３にて行う。あるいは、バッファで受けた後で、受信部、送信部の処理を行っても良い。
【００７３】
＜＜実施形態２＞＞
図１１は、本発明の第２の実施形態（実施形態２）におけるデータ処理装置の一構成例を示すブロック図である。図１１中、１０１−１〜１０１−ｎはｎ個のデータ入出力部、１０２−１〜１０２−ｎ＋ｍはｎ＋ｍ個の通信部、１０３−１〜１０３−ｍはｍ個のデータ処理部である。
【００７４】
本実施形態では、複数の異なるデータパスを同時に実現するため、データ入出力部１０１を追加したものである。なお、データ入出力部１０１、通信部１０２、データ処理部１０３各々の動作については、実施形態１と同様であるため、説明を省略する。
【００７５】
次に、シグナルフローグラフを用いて、動作を説明する。説明を簡略化するため、図１２に示すようにデータ入出力部を２つ、データ処理部を４つでデータ処理装置を構成した例を用い、２つのデータパスを同時に処理する場合の動作を説明する。
【００７６】
●動作例１
図１３のデータフロー（a）、データフロー（b）を同時処理する場合を説明する。まず、データフロー（a）を構成するため、処理部Ｂ（データ処理部１０３−３）の通信部１０２−３の受信部のレジスタ（レジスタ３０１）には”１”を格納しておき、通信部１０２−３の送信部のレジスタ（レジスタ４０１）には”３”を格納しておく。処理部Ｄ（データ処理部１０３−５）の通信部１０２−５の受信部のレジスタには”３”、送信部のレジスタには”５”を格納しておく。入力端子１５１−１はノード”１”に対応し、出力端子１５２−１はノード”５”に対応するので、通信部１０２−１の受信部のレジスタには”５”を格納しておき、送信部のレジスタには”１”を、格納しておく。
【００７７】
次に、データフロー（b）を構成するため、処理部Ｃ（データ処理部１０３−４）の通信部１０２−４の受信部のレジスタ（レジスタ３０１）には”２”を格納しておき、通信部１０２−４の送信部のレジスタ（レジスタ４０１）には”４”を格納しておく。処理部Ｅ（データ処理部１０３−６）の通信部１０２−６の受信部のレジスタには”４”、送信部のレジスタには”６”を格納しておく。入力端子１５１−２はノード”２”に対応し、出力端子１５２−２はノード”６”に対応するので、通信部１０２−１の受信部のレジスタには”６”を格納しておき、送信部のレジスタには”２”を、格納しておく。
【００７８】
・データフロー（a）
上記設定が終わった後に、入力端子１５１−１からデータを入力すると、入力されたデータには通信部１０２−１にて接続ＩＤ”１”が付加され、通信部１０２−２に出力される。通信部１０２−２の受信部のレジスタ３０１には”６”が格納されているので、パケットを取り込まずにそのまま通信部１０２−３へ出力する。
【００７９】
通信部１０２−３には受信部のレジスタ３０１に”１”が格納されているので、接続ＩＤ”１”のパケットを取り込んでデータ処理部１０３−３で処理Ｂが施され、通信部１０２−３に出力される。通信部１０２−３の送信部のレジスタ４０１には”３”が格納されているので、接続ＩＤ”３”のパケットを生成して通信部１０２−４へ出力する。
【００８０】
通信部１０２−４の受信部のレジスタ３０１には”２”が格納されているので、パケットを取り込まずにそのまま通信部１０２−５へ出力する。通信部１０２−５には受信部のレジスタ３０１に”３”が格納されているので、接続ＩＤ”３”のパケットを取り込んでデータ処理部１０３−５で処理Ｄが施され、通信部１０２−５に出力される。通信部１０２−５の送信部のレジスタ４０１には”５”が格納されているので、接続ＩＤ”５”のパケットを生成して通信部１０２−６へ出力する。
【００８１】
通信部１０２−６の受信部のレジスタ３０１には”４”が格納されているので、パケットを取り込まずにそのまま通信部１０２−１へ出力する。通信部１０２−１には受信部のレジスタ３０１に”５”が格納されているので、接続ＩＤ”５”のパケットを取り込んでデータ部を出力端子１５２−１より出力する。このように、入力端子１５１−１から入力されたデータは、処理Ｂ、処理Ｄが順次施されて出力端子１５２−１より出力される。
【００８２】
・データフロー（b）
一方、入力端子１５１−２からデータを入力すると、入力されたデータには通信部１０２−２にて接続ＩＤ”２”が付加され、通信部１０２−３に出力される。通信部１０２−３の受信部のレジスタ３０１には”１”が格納されているので、パケットを取り込まずにそのまま通信部１０２−４へ出力する。
【００８３】
通信部１０２−４には受信部のレジスタ３０１に”２”が格納されているので、接続ＩＤ”２”のパケットを取り込んでデータ処理部１０３−４で処理Ｃが施され、通信部１０２−４に出力される。通信部１０２−４の送信部のレジスタ４０１には”４”が格納されているので、接続ＩＤ”４”のパケットを生成して通信部１０２−５へ出力する。
【００８４】
通信部１０２−５の受信部のレジスタ３０１には”３”が格納されているので、パケットを取り込まずにそのまま通信部１０２−６へ出力する。通信部１０２−６には受信部のレジスタ３０１に”４”が格納されているので、接続ＩＤ”４”のパケットを取り込んでデータ処理部１０３−６で処理Ｅが施され、通信部１０２−６に出力される。通信部１０２−６の送信部のレジスタ４０１には”６”が格納されているので、接続ＩＤ”６”のパケットを生成して通信部１０２−１へ出力する。
【００８５】
通信部１０２−１の受信部のレジスタ３０１には”５”が格納されているので、パケットを取り込まずにそのまま通信部１０２−２へ出力する。通信部１０２−２には受信部のレジスタ３０１に”６”が格納されているので、接続ＩＤ”６”のパケットを取り込んでデータ部を出力端子１５２−２より出力する。
【００８６】
このように、入力端子１５１−２から入力されたデータは、処理Ｃ、処理Ｅが順次施されて出力端子１５２−２より出力される。従って、入力端子１５１−１および入力端子１５１−２にデータを同時に入力しても、設定したデータフローによる処理が実行されて、各々出力端子１５２−１、出力端子１５２−２より出力されることがわかる。
【００８７】
●動作例２
次に、所定画素数毎にデータをサンプリングして、別系統で出力する場合について説明する。例えば、一方の処理ではＪＰＥＧ圧縮を行い、他方の処理ではＪＰＥＧ圧縮時にＤＣ成分のみ取り出して、縮小画像を生成するような場合について説明する。まず、メインのデータフローではＹＣＣの輝度・色差フォーマットにて入力し、処理ＢでＤＣＴ変換を行い、処理Ｄで量子化とジグザグスキャン変換を行い、処理Ｅで可変長符号化を行うようにしてＪＰＥＧ圧縮を行う。一方、サブのデータフローでは、処理Ｂの出力からＤＣ成分のみ抽出して処理Ｃにて色変換してＲＧＢデータに変換して、縮小画像を得る。
【００８８】
従って、このような処理のシグナルフローグラフは図１４（ａ）のようになる。但し、処理Ｃでは、ＤＣ成分のみ抽出するので、受信部１０２−４のカウンタ３０２は増分６４でインクリメント（即ち、データを取り込む度に＋６４）される。また、処理Ｃの入力データであるＤＣ成分は、処理Ｄでも使用するので、通信部１０２−４では取り込んだパケットを無効にせずに、そのまま通信部１０２−５に出力するように設定しておく。すなわち、前述した入力パケット無効化処理をＯＦＦに設定する。
【００８９】
各通信部１０２の受信部のレジスタおよび、送信部のレジスタには以下の値を設定しておく。
・通信部１０２−１の受信部のレジスタには”４”、送信部のレジスタには”１”。
・通信部１０２−２の受信部のレジスタには”５”、送信部のレジスタには任意値（何を設定しても良いが、通常は０または最大値を入れておく）。
・通信部１０２−３の受信部のレジスタには”１”、送信部のレジスタには”２”。
・通信部１０２−４の受信部のレジスタには”２”、送信部のレジスタには”５”。
・通信部１０２−５の受信部のレジスタには”２”、送信部のレジスタには”３”。
・通信部１０２−６の受信部のレジスタには”３”、送信部のレジスタには”４”。
【００９０】
以下、データの流れに沿って動作を説明する。上記設定が終わった後に、入力端子１５１−１からデータを入力すると、入力されたデータには通信部１０２−１にて接続ＩＤ”１”が付加され、通信部１０２−２に出力される。通信部１０２−２の受信部のレジスタ３０１には”５”が格納されているので、パケットを取り込まずにそのまま通信部１０２−３へ出力する。
【００９１】
通信部１０２−３には受信部のレジスタ３０１に”１”が格納されているので、接続ＩＤ”１”のパケットを取り込んでデータ処理部１０３−３で処理Ｂ（ＤＣＴ変換）が施され、通信部１０２−３に出力される。通信部１０２−３の送信部のレジスタ４０１には”２”が格納されており、処理開始前に、通信部１０２−３の送信部のカウンタ４０２は”０”に初期化されているので、接続ＩＤ”２”でカウント値”０”のパケットを生成して通信部１０２−４へ出力する。パケット出力後、通信部１０２−３の送信部のカウンタ４０２は次のデータの出力のため、インクリメント（＋１）される。
【００９２】
通信部１０２−４の受信部のレジスタ３０１には”２”が格納されており、通信部１０２−４の受信部のカウンタ３０２は”０”に初期化されている。このため、接続ＩＤ”２”でカウント値”０”のパケットを取り込んでデータ部をデータ処理部１０３−４に入力する。この時、次のＤＣ成分を受け取るため、受信部のカウンタ３０２は＋６４される。また、通信部１０２−４は、データ分岐のため入力パケット無効化処理をＯＦＦに設定されており、取り込んだパケットは無効化（消去）せずに、そのまま通信部１０２−５に出力される。
【００９３】
データ処理部１０３−４に入力されたデータは処理Ｃ（色変換）が施され、通信部１０２−４に出力される。通信部１０２−４には送信部のレジスタ４０１に”５”が格納されているので、接続ＩＤ”５”のパケットを生成して通信部１０２−５へ出力する。
【００９４】
通信部１０２−５には受信部のレジスタ３０１に”２”が格納されているので、接続ＩＤ”５”のパケットは取り込まずにそのまま通信部１０２−６へ出力する。通信部１０２−６には受信部のレジスタ３０１に”３”が格納されているので、そのまま通信部１０２−１へ出力する。通信部１０２−１には受信部のレジスタ３０１に”３”が格納されているので、そのまま通信部１０２−２へ出力する。
【００９５】
通信部１０２−２には受信部のレジスタ３０１に”５”が格納されているので、接続ＩＤ”５”のパケットを取り込んでデータ部を出力端子１５２−２より出力する。このように、入力端子１５１−１から入力されたデータは、処理Ｂにて処理された後、６４画素毎に抽出され、処理Ｃが施されて出力端子１５２−２より出力される。
【００９６】
一方、通信部１０２−５の受信部のレジスタ３０１には”２”が格納されており、通信部１０２−５の受信部のカウンタ３０２は”０”に初期化されている。このため、接続ＩＤ”２”でカウント値”０”のパケットを取り込んでデータ部をデータ処理部１０３−５に入力する。この時、次のデータ（ＡＣ成分）を受け取るため、受信部のカウンタ３０２は＋１される。また、通信部１０２−５では、取り込んだパケットは以降の処理では使用されないので、入力パケット無効化処理はＯＮに設定されており、取り込んだパケットは無効化（消去）される。
【００９７】
データ処理部１０３−５に入力されたデータは処理Ｄ（量子化とジグザグスキャン変換）が施され、通信部１０２−５に出力される。通信部１０２−５には送信部のレジスタ４０１に”３”が格納されているので、接続ＩＤ”３”のパケットを生成して通信部１０２−６へ出力する。
【００９８】
通信部１０２−６には受信部のレジスタ３０１に”３”が格納されているので、接続ＩＤ”３”のパケットを取り込んでデータ処理部１０３−６で処理Ｅ（可変長符号化）が施され、通信部１０２−６に出力される。通信部１０２−６の送信部のレジスタ４０１には”４”が格納されているので、接続ＩＤ”４”のパケットを生成して通信部１０２−１へ出力する。通信部１０２−１には受信部のレジスタ３０１に”４”が格納されているので、接続ＩＤ”４”のパケットを取り込んでデータ部を出力端子１５２−１より出力する。このように、入力端子１５１−１から入力されたデータは、処理Ｂ、処理Ｄ、処理Ｅが順次施されて出力端子１５２−１より出力される。
【００９９】
●動作例３
次に、任意のデータ処理部の出力を別系統で出力する場合について説明する。図１４（ｂ）のシグナルフローグラフは図１４（ａ）のシグナルフローグラフから、処理Ｃを削除したものである。従って、入出力部１０１−２は使用されていないので、任意のノードのモニタが可能である。以下では図１４（ｂ）のシグナルフローグラフのノード２のモニタ出力を出力端子１５２−２より出力させる方法について説明する。なお、モニタするノードは２重丸にして区別している。
【０１００】
各通信部１０２の受信部のレジスタおよび、送信部のレジスタには以下の値を設定しておく。
・通信部１０２−１の受信部のレジスタには”４”、送信部のレジスタには”１”。
・通信部１０２−２の受信部のレジスタには”２”、送信部のレジスタには任意の値（何を設定しても良いが、通常は０または最大値を入れておく）。
・通信部１０２−３の受信部のレジスタには”１”、送信部のレジスタには”２”。
・通信部１０２−４の受信部のレジスタには”５”（メインのデータフローで使用しない値）、送信部のレジスタには任意の値（何を設定しても良いが、通常は０または最大値を入れておく）。
・通信部１０２−５の受信部のレジスタには”２”、送信部のレジスタには”３”。
・通信部１０２−６の受信部のレジスタには”３”、送信部のレジスタには”４”。
【０１０１】
また、通信部１０２−５では取り込んだパケットを無効にせずに、そのまま通信部１０２−６に出力するように設定しておく。具体的には、前述した入力パケット無効化処理をＯＦＦに設定する。
【０１０２】
以下、データの流れに沿って動作を説明する。上記設定が終わった後に、入力端子１５１−１からデータを入力すると、入力されたデータには通信部１０２−１にて接続ＩＤ”１”が付加され、通信部１０２−２に出力される。通信部１０２−２の受信部のレジスタ３０１には”２”が格納されているので、パケットを取り込まずにそのまま通信部１０２−３へ出力する。
【０１０３】
通信部１０２−３には受信部のレジスタ３０１に”１”が格納されているので、接続ＩＤ”１”のパケットを取り込んでデータ処理部１０３−３で処理Ｂが施され、通信部１０２−３に出力される。通信部１０２−３の送信部のレジスタ４０１には”２”が格納されているので、接続ＩＤ”２”のパケットを生成して通信部１０２−４へ出力する。通信部１０２−４の受信部のレジスタ３０１には”５”が格納されているので、接続ＩＤ”２”のパケットは取り込まずにそのまま通信部１０２−５へ出力する。
【０１０４】
通信部１０２−５の受信部のレジスタ３０１には”２”が格納されているので、接続ＩＤ”２”のパケットを取り込んでデータ部をデータ処理部１０３−５に入力する。なお、通信部１０２−５では、モニタのため、取り込んだパケットを無効化せずに、そのまま通信部１０２−６に出力する。これは、前述した入力パケット無効化処理がＯＦＦに設定されているためである。
【０１０５】
通信部１０２−６の受信部のレジスタ３０１には”３”が格納されているので、接続ＩＤ”２”のパケットは取り込まずにそのまま通信部１０２−１へ出力する。通信部１０２−１の受信部のレジスタ３０１には”４”が格納されているので、接続ＩＤ”２”のパケットは取り込まずにそのまま通信部１０２−２へ出力する。通信部１０２−２には受信部のレジスタ３０１に”２”が格納されているので、接続ＩＤ”２”のパケットを取り込んでデータ部を出力端子１５２−２より出力する。
【０１０６】
一方、通信部１０２−５で取り込まれたパケットのデータ部はデータ処理部１０３−５で処理Ｄが施され、通信部１０２−５に出力される。通信部１０２−５には送信部のレジスタ４０１に”３”が格納されているので、接続ＩＤ”３”のパケットを生成して通信部１０２−６へ出力する。
【０１０７】
通信部１０２−６には受信部のレジスタ３０１に”３”が格納されているので、接続ＩＤ”３”のパケットを取り込んでデータ処理部１０３−６で処理Ｅが施され、通信部１０２−６に出力される。通信部１０２−６の送信部のレジスタ４０１には”４”が格納されているので、接続ＩＤ”４”のパケットを生成して通信部１０２−１へ出力する。
【０１０８】
通信部１０２−１には受信部のレジスタ３０１に”４”が格納されているので、接続ＩＤ”４”のパケットを取り込んでデータ部を出力端子１５２−１より出力する。このように、入力端子１５１−１から入力されたデータは、処理Ｂ、処理Ｄ、処理Ｅが順次施されて出力端子１５２−１より出力されと共に、出力端子１５２−２からは、一連の処理の中間結果である処理Ｂの出力が得られる。
【０１０９】
以上説明したように、本実施形態に係るデータ処理装置によれば、データ入出力部を追加することで、複数のデータフローを同時に処理することができる。また、途中のノードのデータも同時に出力可能であるため、処理の中間データを別のデータ処理装置等でも利用できる。
【０１１０】
なお、上述した実施形態では、通信部１０２の送信部のレジスタ４０１に値を設定するようにしているが、これを通信部毎に固定としても良い。例えば、通信部１０２−１は”１”、通信部１０２−２は”２”、…、通信部１０２−ｍは”ｍ”としてもよい。この場合、シグナルフローグラフの処理を示すアローの先のノード番号が処理毎に固定になるが、アローの元（入力）はプログラム可能であるため、上述と同様の動作が可能である。
【０１１１】
また、上述した実施形態では、パケットが有効であることを示すvalidフラグを用いたが、これに限られない。例えば、特定の接続ＩＤ（例えば”０”）を無効パケットとしても良い。
【０１１２】
上記のように上述のデータ処理装置は、データ処理を行う複数のデータ処理部と、データの入力および出力を行うデータ入出力部と、データ処理部及びデータ入出力部を接続する複数の通信部を備えている。さらに、
・モジュール毎に接続された通信部の入力部および出力部に処理データの論理的な接続を識別するための接続ＩＤを格納する手段。
・該通信部からデータを出力する際、該通信部の出力部に格納された接続ＩＤをデータに付加するデータ出力手段。
・該通信部の入力部に入力されたデータに付加されている接続ＩＤを該通信部の入力部に格納された接続ＩＤと比較し、接続ＩＤが一致したデータをモジュールに取り込むデータ入力手段。
を備える。このようにデータ処理装置は、データ処理の流れを示すシグナルフローグラフ上のノードを識別する番号（接続ＩＤ）を用いてデータパスを制御する。このため、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを実現できるため、各処理モジュールをハードウェア（プログラムで機能を変更できない回路）で構成しても、柔軟な処理を実現できる。また、パケットの消去も処理モジュール毎に制御できるため、リングバスの使用効率も良い。
【図１】
2010206517.tif 000003
【図２】
2010206517.tif 000004
【図３】
2010206517.tif 000005
【図４】
2010206517.tif 000006
【図５】
2010206517.tif 000007
【図６】
2010206517.tif 000008
【図７】
2010206517.tif 000009
【図８】
2010206517.tif 000010
【図９】
2010206517.tif 000011
【図１０】
2010206517.tif 000012
【図１１】
2010206517.tif 000013
【図１２】
2010206517.tif 000014
【図１３】
2010206517.tif 000015
【図１４】
2010206517.tif 000016