(57)【要約】【課題】  データフローの分岐・統合、複数データフローの同時実行、処理モジュールの時分割多重処理等、複雑なデータフローを実現する。【解決手段】  複数の通信部にてリングバスを構成する。通信部に処理モジュールを個々に接続し、通信部の入力部および出力部に処理データの論理的な接続を識別するための接続ＩＤを格納し、通信部からデータを出力する際、通信部の出力部に格納された接続ＩＤをデータに付加してリングバスに出力する。通信部の入力部では、入力されたデータに付加されている接続ＩＤを格納されている接続ＩＤと比較し、接続ＩＤが一致したデータを前記モジュールに取り込むことで、所望のデータフローを構成する。さらに、通信部に複数の接続ＩＤをセットすることで、処理モジュールの時分割多重処理や通信部の共有を実現する。【選択図】  図１
2010282557.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理モジュールが夫々の通信手段によって接続され、該処理モジュールがパケットを所定の一方向に転送して複数のパイプライン処理を実行するデータ処理装置であって、
前記処理モジュールは、
第１のＩＤと第２のＩＤとを前記複数のパイプライン処理毎に格納する格納手段と、
前記格納手段の格納する第１のＩＤの１つを有するパケットからデータを抽出する受信手段と、
前記受信手段の抽出したデータを処理する処理手段と、
前記受信手段がデータを抽出したパケットが有する第１のＩＤに対応する第２のＩＤと前記処理手段の処理したデータとをパケットに格納して、前記所定の一方向にある処理モジュールに当該パケットを送信する送信手段とを
有することを特徴とするデータ処理装置。
【請求項２】
前記通信手段はリング状に接続されていることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記送信手段は前記複数のパイプライン処理の夫々に応じて、処理順を示すカウント値をパケットに格納し、
前記処理モジュールは前記複数のパイプライン処理の夫々に対応するカウント値をカウントするカウンタを更に有し、
前記受信手段は、パケットのカウント値と前記カウンタの値とが一致するパケットであって、前記第１のＩＤを有するパケットのデータを前記処理手段に転送することを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記受信手段は、前記複数のパイプライン処理を識別する識別信号を出力し、
前記処理モジュールは前記識別信号を前記処理手段から出力されるデータに同期させるためのＦＩＦＯを更に有し
前記送信手段は、前記ＦＩＦＯの出力に応じてパケットに付加する第２のＩＤ又はカウント値を選択することを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記カウンタは、
前記処理手段からデータを出力する際に、前記パイプライン処理を識別する識別信号に応じたカウント値をインクリメントする第１のカウンタと、
前記処理手段にデータを取り込む際に、前記識別信号に応じたカウント値をインクリメントする第２のカウンタとを備えることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記送信手段は前記処理手段からのデータを格納する際に、更に前記カウント値と、データが有効であることを示す有効フラグとをパケットに付加し、
前記受信手段は、前記有効フラグの付加されているパケットについて、当該パケットのＩＤとカウント値に応じてデータを取り込むことを特徴とする請求項４又は５に記載のデータ処理装置。
【請求項７】
前記受信手段は、前記パケットからデータを抽出しようとする際に前記処理手段がデータを受付けない状態にある場合は、当該パケットからデータを抽出せずに前記送信手段に転送し、前記受信手段によるデータの取り込みを保留したことを示す保留フラグを当該パケットに付加することを特徴とする請求項１乃至６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記受信手段が前記第２のＩＤを有するパケットで、付加されている保留フラグがないパケットを受信した場合、前記送信手段は当該パケットを無効化することを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記送信手段は、データを抽出したパケットを無効化することを特徴とする請求項１乃至８のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記送信手段は、データを抽出したパケットに付加されている第１のＩＤ又は第２のＩＤの換わりに第３のＩＤを設定することでパケットの無効化を行うことを特徴とする請求項８又は９に記載のデータ処理装置。
【請求項１１】
前記複数の処理モジュールについて、無効化をする送信手段と無効化をしない送信手段とを夫々設定する設定手段を更に有することを特徴とする請求項８乃至１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
複数の処理モジュールが夫々の通信手段によってリング状に接続され、該処理モジュールがパケットを所定の一方向に転送して複数のパイプライン処理を実行するデータ処理装置によるデータ処理方法であって、
第１のＩＤと第２のＩＤとを前記複数のパイプライン処理毎に格納する格納工程と、
前記格納工程で格納する第１のＩＤの１つを有するパケットからデータを抽出する受信工程と、
前記受信工程で抽出したデータを処理する処理工程と、
前記受信工程でデータを抽出したパケットが有する第１のＩＤに対応する第２のＩＤと前記処理工程で処理したデータとをパケットに格納して、当該パケットを送信する送信工程とを
有することを特徴とするデータ処理方法。
【請求項１３】
複数の処理モジュールが夫々の通信手段によってリング状に接続され、該処理モジュールがパケットを所定の一方向に転送して複数のパイプライン処理を実行するデータ処理装置を制御するプログラムであって、コンピュータを、
第１のＩＤと第２のＩＤとを前記複数のパイプライン処理毎に格納する格納手段と、
前記格納手段の格納する第１のＩＤの１つを有するパケットからデータを抽出する受信手段と、
前記受信手段の抽出したデータを処理する処理手段と、
前記受信手段がデータを抽出したパケットが有する第１のＩＤに対応する第２のＩＤと前記処理手段の処理したデータとをパケットに格納して、前記所定の一方向にある処理モジュールに当該パケットを送信する送信手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のリングバスに接続されている複数のデータ処理モジュールへのデータの流れ（データフロー）を制御することで、好適な並列処理を実現するデータ処理装置に関する。
【背景技術】
【０００２】
従来、一連のデータ処理を高速に効率よく実現するため、一連のデータ処理を分割してハードウェア化（以下、ハード化）し、ハード化したモジュールを処理順に接続して一連のデータ処理をパイプライン的に高速に実行する方法がある。
【０００３】
また、画像処理においてハード化したモジュールが処理する順番を変えることで効率的に処理を実現できることがある。例えば、処理をした画像を所定の画素数を扱う出力装置に画像を出力する場合、一連の処理のどこかで画素数（や解像度）を合わせるため解像度変換を行う。この時、入力画像の画素数が出力装置の扱う画素数よりも多い場合は、処理の上流側で解像度変換を行い、画素数を少なくしてから処理を行った方が良い。一方で、入力画像の画素数が出力装置の扱う画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力の直前（下流側）で解像度変換を行った方が良い。
【０００４】
また、ある空間（例えば、入力デバイス空間）から標準的な空間（例えば、解像度６００ｐｐｉ、ＣＩＥＬＡＢ色空間等）に変換して処理を行い、別の空間（例えば、出力デバイス空間）に変換する場合を想定する。この場合、入力側と出力側の空間変換部の処理順（１次元ＬＵＴ、行列演算、３次元ＬＵＴ等の処理の順序）は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。
【０００５】
しかし、ハード化したモジュールを処理順に接続する方法では、モジュールが処理する順番を変えられないため、上記に示した状況に対応するため、モジュールを余分に（即ち、同じ機能のモジュールを複数）実装していた。
【０００６】
一方で特許文献１の手法によれば、リング状ネットワークにてデータの接続先を変更することにより、モジュールの処理する順序の変更が可能になるので前述したような余分なモジュールは実装しなくてすむ。他に、特許文献２のように、各処理モジュールの処理内容を変更してもよい。
【０００７】
また、特許文献３にはブロードキャスト通信を用いることで、拡張性、保守性を向上させたデータフロー制御方式が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０１−０２３３４０号公報
【特許文献２】特許第２５１８２９３号公報
【特許文献３】特許第２８３４２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし従来の方法では、データフローの分岐（複数モジュールでの同一データの参照）や複数データフローの同時実行、処理モジュールの時分割多重処理等、複雑なデータフローの制御は困難であった。また、特許文献３の方法のようにブロードキャスト通信を用いれば、データフローの分岐（複数モジュールでの同一データの参照）は可能である。しかし、データフローの統合や複数データフローの同時実行、処理モジュールの時分割多重処理などを実現するためのデータフローの制御は複雑になり、転送効率も低下する場合がある。
【００１０】
本発明は上述した課題を解決するものであり、処理順序の変更だけでなく、データフローの分岐や統合、複数データフローの同時実行などの制御を簡易な構成で実現するデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を達成するために本発明によるデータ処理装置は、複数の処理モジュールが夫々の通信手段によってされ、該処理モジュールがパケットを所定の一方向に転送して複数のパイプライン処理を実行するデータ処理装置であって、前記処理モジュールは、第１のＩＤと第２のＩＤとを前記複数のパイプライン処理毎に格納する格納手段と、前記格納手段の格納する第１のＩＤの１つを有するパケットからデータを抽出する受信手段と、前記受信手段の抽出したデータを処理する処理手段と、前記受信手段がデータを抽出したパケットが有する第１のＩＤに対応する第２のＩＤと前記処理手段の処理したデータとをパケットに格納して、前記所定の一方向にある処理モジュールに当該パケットを送信する送信手段とを有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、複数のモジュールに複数のパイプライン処理（データフロー）を、簡易な構成によって同時に実行させることができる。従って、分岐や統合を有する複雑な処理を簡単に実現できる。
【図面の簡単な説明】
【００１３】
【図１】データ処理部の概略構成を示すブロック図である。
【図２】通信部１０２の概略構成を示すブロック図である。
【図３】データ受信部２０１とデータ送信部２０４の概略構成を示すブロック図である。
【図４】リングバス上を流れるパケットのフォーマットである。
【図５】処理部が４個のデータ処理部の例を示すブロック図である。
【図６】同時処理を行うシグナルフローグラフの例を示す図である。
【図７】システムの構成例を示すブロック図である。
【図８】データ処理部の制御手順を示すフローチャートである。
【図９】データ処理部の一構成例を示すブロック図である。
【図１０】通信部１００２の概略構成を示すブロック図である。
【図１１】データ受信部１１０１とデータ送信部１１０４の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、添付図面に従って本発明に係る実施例を詳細に説明する。
【００１５】
＜実施例１＞
図１は、本発明の一実施例である実施例１におけるデータ処理部の概略構成を示すブロック図である。図に示すようにデータ処理部は、データ入出力部１０１、通信部１０２および処理部１０３を有する。
【００１６】
通信部１０２−１〜１０２−ｎ＋ｍは、隣接する通信部とバスで接続され（但し、通信部１０２−ｎ＋ｍは通信部１０２−１に接続される）、リングバスを構成している。つまり、上記通信部１０２−１〜１０２−ｎ＋ｍは、リング状に接続されリングバスを構成すると共に、リングバスとデータ入出力部または処理部との間でのデータの送受信を行う。通信部１０２−１〜１０２−ｎには、各々データ入出力部１０１−１〜１０３−ｎが接続されている。通信部１０２−ｎ＋１〜１０２−ｎ＋ｍには、各々処理部１０３−１〜１０３−ｍが接続されている。
【００１７】
入力端子１５１より入力されたデータはデータ入出力部１０１を介して通信部１０２に入力される。入力されたデータは通信部１０２−１でパケット化されリングバス上を流される。通信部１０２、は予め設定された情報に従って必要なパケットをリングバスより取り込み、取り込んだパケットからデータを抽出して処理部１０３に送信する。処理部１０３では、予め割り当てられた所定のデータ処理（例えば色空間変換や解像度変換等）を行い、処理後のデータを通信部１０２へ出力する。処理後のデータは通信部１０２にてパケット化されリングバス上を流される。このように、データ入出力部１０１から入力されたデータを処理部１０３−１〜１０３−ｍが所定の順番で処理するように、通信部１０２−１〜１０２−ｎ＋ｍがデータを制御する。
【００１８】
そして、一連のデータ処理が終了したデータは通信部１０２−１〜１０２−ｎのいずれかにてデータ入出力部１０１に取り込まれ、出力端子１５２より出力される。なお、データ入出力部１０１は、外部の機器（またはモジュール）とのインタフェースを行うものであり、通信部１０２にて直接インタフェース可能な場合は省略可能である。
【００１９】
図２は、通信部１０２の概略構成を示すブロック図である。図に示すように通信部１０２は、データ受信部２０１、バッファ２０２、セレクタ２０３、データ送信部２０４およびＦＩＦＯ２０５を有する。
【００２０】
隣接する通信部の出力端子２５９は、入力端子２５７に接続され、通信部１０２−１〜１０２−ｎ＋ｍにてリングバスを構成している。また、信号線２５１，２５２，２５３，２５４，２５５，２５６には処理部１０３（１０３−１〜１０３−ｍの内の１つ）が接続されているものとする。また、以下の説明では簡略のために信号線２５３を通る信号を、信号２５３と略する場合もある。
【００２１】
図４（Ａ）にリングバス上を流れるパケットの一構成例を示す。フィールド５０１はパケットが有効であることを示すｖａｌｉｄフラグ（ここでは“１”を有効フラグとして、“０”で無効）を格納する。また、フィールド５０２はパケットが受信を保留されたことを示すｓｔａｌｌフラグ（“１”を保留フラグとして、“０”で保留なし）を格納する。フィールド５０３はデータの送信順（処理順）を示すカウント値、フィールド５０４はデータの論理的な接続を識別するための接続ＩＤ、フィールド５０６は通信部に入力または出力されるデータである。
【００２２】
隣接する通信部より入力端子２５７を通って入力されたパケットは、バッファ２０２にて一時的に保持され、次のクロックサイクルでセレクタ２０３に出力される。
【００２３】
ここで、データ受信部２０１は、入力端子２５７のパケットを監視し、パケットのｖａｌｉｄフラグが有効で、且つ、接続ＩＤとカウント値が通信部１０２の保持している値と一致する場合に、パケットからデータを取り込めるかどうかを判断する。
【００２４】
パケットからデータを取り込める場合とは、即ち、受信部２０１に接続されている処理部１０３がデータを取り込める場合（ｓｔａｌｌ信号２５３が保留状態でない場合）である。この場合、受信部２０１はパケットを取り込み、（ｖａｌｉｄ信号２５１を有効にして）出力端子２５２より処理部１０３へデータを出力する。この際、受信部２０１は信号線２６０を介して、バッファ２０２にデータの取り込みを通知し、バッファ２０２に格納されるパケットのｖａｌｉｄフラグをクリアし、データを抽出したパケットを無効化する。また、パケット取り込み後、カウント値をインクリメントする。
【００２５】
一方、パケットからデータを取り込めない場合とは、受信部２０１に接続されている処理部１０３がデータを受付けない場合（ｓｔａｌｌ信号２５３が保留状態の場合）である。この場合、受信部２０１は信号線２６０を介して、バッファ２０２にデータの保留を通知し、バッファ２０２に格納されるパケットのｓｔａｌｌフラグをセットする。処理部１０３がデータを受付けない状態とは、主に処理部１０３が処理中である状態が挙げられる。
【００２６】
受信部２０１は、入力パケットのｖａｌｉｄフラグが有効で、接続ＩＤが一致してもカウント値が不一致の場合は、データの取り込み順が合わないので、この場合もｓｔａｌｌフラグをセットする。
【００２７】
次に、データ送信部２０４は、接続されている処理部１０３からデータの出力が可能な場合（ｖａｌｉｄ信号２５６が有効の場合）、処理部１０３の処理したデータをパケットに格納しようとする。
【００２８】
データ送信部２０４は、バッファ２０２の出力パケット（信号線２５８）のｖａｌｉｄフラグを監視し、ｖａｌｉｄフラグが有効のときは、リングバス上にデータを出力できないと判断する。そして、データ送信部２０４は対応する処理部１０３の通信部１０２へのデータの出力を保留するためにｓｔａｌｌ信号２５４をアサートする。
【００２９】
一方で、ｖａｌｉｄフラグが無効のときは、リングバス上にデータを出力できると判断する。この場合、送信部２０４はｓｔａｌｌ信号２５４をネゲートし、処理部から処理済みのデータを取得する。更に、データ送信部２０４はｖａｌｉｄが無効だったパケットについて、データ送信部２０４はｖａｌｉｄが無効だったパケットについて、ｖａｌｉｄフラグを有効、ｓｔａｌｌフラグを無効にして、パケットのカウント値と接続ＩＤに送信部２０４の保持するカウンタの値と接続ＩＤ（第２のＩＤ）を処理部から取得したデータに付加する。そして、送信部２０４はセレクタ２０３を制御して、出力端子２５９からパケットをリングバス上に流す。パケット出力後、カウント値をインクリメントする。
【００３０】
図３（ａ）は、データ受信部２０１の構成を示すブロック図である。図に示す様にデータ受信部２０１は、レジスタ３０１、カウンタ３０２、比較部３０３、判定部３０４およびＯＲ回路３０５を有する。図３（ａ）を用いてデータ受信部２０１の処理を詳細に説明する。
【００３１】
比較部３０３は入力端子２５７より入力されるリングバス上のパケットのｖａｌｉｄフラグ、接続ＩＤ、カウント値を監視する。そして、パケットのｖａｌｉｄフラグが有効で、パケットの接続ＩＤとレジスタ３０１に格納されている接続ＩＤとが一致し、パケットのカウント値とカウンタ３０２の値と一致する場合、ｖａｌｉｄ信号２５１を有効にする。この際、出力端子２５２にはｖａｌｉｄ信号を有効にした時に監視しているパケットのデータ部が出力される。またこの時、比較部３０３はパケット判定信号とカウント一致信号を判定部３０４に入力する。ここで、パケット判定信号は「入力されたパケットのｖａｌｉｄフラグが有効で、パケットの接続ＩＤがレジスタ３０１の保持するＩＤ（第１のＩＤ）と一致したこと」を示す。また、カウント一致信号は「入力されたパケットのカウント値がカウンタ３０２の値と一致したこと」を示す。
【００３２】
判定部３０４はパケット判定信号とカウント一致信号および対応する処理部１０３からのｓｔａｌｌ信号２５３に基づいて処理部１０３がデータを取り込めたかどうかを判定する。そして、データを取り込めたと判定した場合は、信号線２６０を介して、バッファ２０２にデータの取り込みを通知し、バッファ２０２に格納されるパケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。なお、詳細は後述するが、このパケット無効化処理はデータの分岐（複数処理部での使用）に応じて、ＣＰＵ８０１等（後述するが、データ処理部外部の制御装置である）によってそのＯＮ／ＯＦＦを切替えられる。
【００３３】
また、図３（ａ）に示すように本実施例では２組のレジスタ３０１、カウンタ３０２、比較部３０３があり、ハイフン以下の番号（−１、−２）で区別して表記している。この構成によって、同時に２組の比較が可能で、いずれか一方が一致した場合に上記操作を行うように、ＯＲ回路３０５にて判定結果の論理和をとり、ｖａｌｉｄ信号２５１として出力する。また、データ送信部２０４にて出力用のパケットに接続ＩＤ及びカウント値を付加するため、２組の比較の内、ヒットした方を示す信号２６３（本実施例では３０３−１の比較結果を使用）を、ＦＩＦＯ２０５（図２）に格納する。なお、ここでは２組の比較を行う場合を示したが、レジスタとカウンタと比較部のセットを増やし、複数（２〜ｎ）の比較を行うように拡張し、２〜ｎ個のパスを統合するようにしてもよい。
【００３４】
データ取り込み通知信号はカウンタ３０２にも入力され、データを取り込めたと判定した場合、次のデータを取得するために、次のクロックサイクルでカウンタ３０２のカウント値をインクリメント（＋１）する。
【００３５】
判定部３０４はパケット判定信号とカウント一致信号と、接続されている処理部１０３からのｓｔａｌｌ信号２５３との両方を検出すると、取り込むべきデータが取り込めない状態にあると判定する。そして判定部３０４は、信号線２６０を介して、バッファ２０２にデータの保留を通知し、バッファ２０２に格納されるパケットのｓｔａｌｌフラグをセットする。また、判定部３０４は、パケット判定信号を検出しカウント一致信号を検出しない場合は、取り込み対象パケットであるがデータの取り込み順序が合っていないと判定する。そして、判定部３０４は信号線２６０を介して、バッファ２０２にデータの保留を通知し、バッファ２０２に格納されるパケットのｓｔａｌｌフラグをセットする。
【００３６】
図３（ｂ）は、データ送信部２０４の概略構成を示すブロック図である。図に示すようにデータ送信部２０４は、レジスタ４０１、カウンタ４０２、比較部４０３、パケット生成部４０４、セレクタ４０５・４０６およびＡＮＤ回路４０７を有する。
【００３７】
比較部４０３は、信号線２６１のバッファ２０２の出力パケット（図２の信号線２５８）のｖａｌｉｄフラグとｓｔａｌｌフラグ、接続ＩＤに応じて処理する。まず、ｖａｌｉｄフラグが有効のときは、リングバス上にデータを出力できないので、接続されている処理部１０３からのデータ出力を保留するためにＡＮＤ回路４０７を介してｓｔａｌｌ信号２５４をアサートする。また、ｖａｌｉｄフラグが無効のときは、ＡＮＤ回路４０７を介してｓｔａｌｌ信号２５４をネゲートする。
【００３８】
比較部４０３は、バッファ２０２のパケットのｖａｌｉｄフラグが有効でｓｔａｌｌフラグが無効な場合に、バッファ２０２の出力パケットの接続ＩＤがレジスタ４０１の接続ＩＤの１つと一致しするか判定する。そして一致した場合は、第２のＩＤを有するパケットが保留されずに戻ってきた場合であり、そのパケットを処理するモジュールが無いことを示している。従って、そのパケットを再びリングバスへ送る必要は無いので、比較部４０３はパケット生成部４０４を介してセレクタ２０３を制御し、ｖａｌｉｄフラグを無効にしてパケットを無効化する。この場合も、パケットの出力が可能となるので、比較部４０３はＡＮＤ回路４０７を介してｓｔａｌｌ信号２５４をネゲートする。
【００３９】
パケット生成部４０４は、接続されている処理部１０３のｖａｌｉｄ信号２５６を参照する。まず、ｖａｌｉｄ信号２５６が有効の場合、処理部１０３からデータの出力が可能と判定する。
【００４０】
次に、バッファ２０２の出力パケットにデータを格納できるかを判定する。詳細には、ｖａｌｉｄフラグが無効である場合、もしくはこれから無効化するパケットである場合はデータを格納できるとする。これから無効化にするパケットとは、ｖａｌｉｄフラグが有効かつｓｔａｌｌフラグが保留を示していないときで、パケットの接続ＩＤがレジスタ４０１に格納されている接続ＩＤと一致したパケットである。
【００４１】
パケット生成部４０４は、処理部１０３のデータをバッファ２０２のパケットに格納する際に、ｖａｌｉｄフラグを有効、ｓｔａｌｌフラグを無効にし、カウンタ４０２のカウント値とレジスタ４０１に設定されている接続ＩＤを付加する。そして、セレクタ２０３を制御して出力端子２５９より出力パケットをリングバス上に流す。そして、次のクロックサイクルでカウンタ４０２のカウント値をインクリメント（＋１）する。
【００４２】
なお、送信部２０４のカウンタ４０２と送信部２０４のパケットを受信する受信部２０１のカウンタ３０２（第１のカウンタ）は、同期を取るため、データ処理部の処理開始時に同じ値に初期化しておく。
【００４３】
また、図３（ｂ）に示す様に本実施例のデータ処理部は２組のレジスタ４０１、カウンタ４０２（第２のカウンタ）を有しており、ハイフン以下の番号（−１、−２）で区別して表記している。この構成によって、同時に２パス分のパケットが出力可能で、パス１からパス２へ分岐や時分割多重処理ができる。セレクタ４０５・４０６はＦＩＦＯ２０５より出力される選択信号２６５に従って、レジスタ４０１−１もしく４０１−２のどちらかを、カウンタ４０２−１もしくはカウンタ４０２−２のどちらかを選択する。このレジスタ４０１とカウンタ４０２の組合せは、受信部２０１のレジスタ３０１とカウンタ３０２の組合せに対応している。従って、受信部２０１に対応する複数（２〜ｎ）組に拡張してもよい。
【００４４】
また、データ入出力部１０１は単一の入出力しか扱わないため、通信部１０２−１〜１０２−ｎには１組のレジスタ３０１、カウンタ３０２、比較部３０３及びレジスタ４０１、カウンタ４０２で十分であり、従って、ＦＩＦＯ２０５は不要である。
【００４５】
以上説明した様に、複数の処理モジュールの夫々がパケットを一方向へ転送させることで、総じて、リング上の一方向にパケットが周回する。そして、パイプライン処理に応じた接続ＩＤを設定することで、処理すべき処理モジュールにパケットがたどり着いた場合に、その処理部にデータを取り込み処理できる。そして、処理したデータに次の処理モジュールが取り込むための接続ＩＤをつけてリングバスに出力する。この処理を繰り返す事で、複数の処理モジュールが順番に一連の処理（パイプライン処理など）をデータに施すことになる。
【００４６】
次に、シグナルフローグラフを用いて、動作を説明する。このシグナルフローグラフにおいては、ノードを「丸」で示し、処理を「アーク（矢印）」で示す。説明を簡略化するため、図５に示すようにデータ入出力部を２つ、処理部を４つ有するデータ処理部を用い、２つのデータフローを同時に処理する場合の動作を説明する。
【００４７】
図６（Ａ）のデータフロー（ａ）、データフロー（ｂ）を同時に処理する際の詳細を説明する。まず、データフロー（ａ）を構成するため、処理部Ａ（処理部１０３−１）の通信部１０２−３の受信部のレジスタ３０１−１には”１”を格納しておき、通信部１０２−３の送信部のレジスタ４０１−１には”２”を格納しておく。同様に、処理部Ｃ（処理部１０３−３）の３０１−１には”２”、レジスタ４０１−１には”３”を格納し、処理部Ｄ（処理部１０３−４）のレジスタ３０１−１には”３”、レジスタ４０１−１には”４”を格納する。入力端子１５１−１はノード”１”に対応し、出力端子１５２−１はノード”４”に対応するので、通信部１０２−１の受信部のレジスタには”４”を格納しておき、送信部のレジスタには”１”を、格納しておく。
【００４８】
また、データフロー（ｂ）を構成するため、処理部Ｂ（処理部１０３−２）の通信部１０２−４の受信部のレジスタ３０１−２には”５”を格納しておき、通信部１０２−４の送信部のレジスタ４０１−２には”６”を格納しておく。以下、簡略表記すると処理部Ｃのレジスタ３０１−２には”６”、レジスタ４０１−２には”７”を格納し、処理部Ｄのレジスタ３０１−２には”７”、レジスタ４０１−２には”８”を格納する。入力端子１５１−２はノード”５”に対応し、出力端子１５２−２はノード”８”に対応するので、通信部１０２−２の受信部のレジスタには”８”を格納しておき、送信部のレジスタには”５”を、格納しておく。
【００４９】
以下、夫々のデータフローに沿って説明するが、説明を簡略化するため、処理部１０３および入出力部１０１において入力データの保留は発生しないものとする。この条件の元では、パケットのｓｔａｌｌフラグ、カウント値は不要となるとなる。通常は入力データの保留が発生することがあるので、データを入力した時、データを出力した時に対応するカウンタをインクリメントし、カウンタ値と接続ＩＤが一致したときのみ、パケットを取り込む。また、通信部１０２の受信部の未使用レジスタは、パケットが取り込まれないようにシグナルフローグラフで使用していない値を設定しておく（通常は”０”に初期化し、接続ＩＤ”０”はシグナルフローグラフで使用禁止にしておく）。
【００５０】
まず、データフロー（ａ）に沿って説明する。入力端子１５１−１に入力されたデータは通信部１０２−１にて送信部のレジスタに格納されている”１”が接続ＩＤとして付加され、次の通信部１０２−２に出力される。通信部１０２−２は接続ＩＤ”８”を待ち受けるので、接続ＩＤ”１”のパケットはそのまま通信部１０２−３に出力される。通信部１０２−３は接続ＩＤ”１”を待ち受けるので、パケットを取り込み、処理部１０３−１にて処理Ａが施される。処理部１０３−１にて処理されたデータは通信部１０２−３の送信部のレジスタに格納されている”２”が接続ＩＤとして付加され、次の通信部１０２−４に出力される。
【００５１】
通信部１０２−４は接続ＩＤ”５”を待ち受けるので、接続ＩＤ”２”のパケットはそのまま通信部１０２−５に出力される。通信部１０２−５は接続ＩＤ”２”を待ち受けるので、パケットを取り込み、処理部１０３−３にて処理Ｃが施される。処理部１０３−３にて処理されたデータは通信部１０２−５の送信部のレジスタに格納されている”３”が接続ＩＤとして付加され、次の通信部１０２−６に出力される。通信部１０２−６は接続ＩＤ”３”を待ち受けるので、パケットを取り込み、処理部１０３−４にて処理Ｄが施される。処理部１０３−４にて処理されたデータは通信部１０２−６の送信部のレジスタに格納されている”４”が接続ＩＤとして付加され、次の通信部１０２−１に出力される。通信部１０２−１は接続ＩＤ”４”を待ち受けるので、パケットを取り込み、データを出力端子１５２−１より出力する。
【００５２】
次に、データフロー（ｂ）に沿って説明する。まず、入力端子１５１−２に入力されたデータは通信部１０２−２にて送信部のレジスタに格納されている”５”が接続ＩＤとして付加され、次の通信部１０２−３に出力される。通信部１０２−３は接続ＩＤ”１”を待ち受けるので、接続ＩＤ”５”のパケットはそのまま通信部１０２−４に出力される。通信部１０２−４は接続ＩＤ”５”を待ち受けるので、パケットを取り込み、処理部１０３−２にて処理Ｂが施される。処理部１０３−２にて処理されたデータは通信部１０２−４の送信部のレジスタに格納されている”６”が接続ＩＤとして付加され、次の通信部１０２−５に出力される。通信部１０２−５は接続ＩＤ”６”を待ち受けるので、パケットを取り込み、処理部１０３−３にて処理Ｃが施される。
【００５３】
処理部１０３−３にて処理されたデータは通信部１０２−５の送信部のレジスタに格納されている”７”が接続ＩＤとして付加され、次の通信部１０２−６に出力される。通信部１０２−６は接続ＩＤ”７”を待ち受けるので、パケットを取り込み、処理部１０３−４にて処理Ｄが施される。処理部１０３−４にて処理されたデータは通信部１０２−６の送信部のレジスタに格納されている”８”が接続ＩＤとして付加され、次の通信部１０２−１に出力される。通信部１０２−１は接続ＩＤ”４”を待ち受けるので、接続ＩＤ”８”のパケットはそのまま通信部１０２−２に出力される。通信部１０２−２は接続ＩＤ”８”を待ち受けるので、パケットを取り込み、データを出力端子１５２−２より出力する。
【００５４】
処理部Ｃ（１０３−３）、Ｄ（１０３−４）は２つのデータフローにて使用されている。このため、上記処理部が接続している通信部１０２−５、１０２−６は、２つの接続ＩＤを待ち受ける。その際に、データフロー（ａ）の接続ＩＤで取り込まれたデータにはデータフロー（ａ）の接続ＩＤを、データフロー（ｂ）の接続ＩＤで取り込まれたデータにはデータフロー（ｂ）の接続ＩＤを付加しなければならない。そこで、図２のＦＩＦＯ２０５に取り込んだパケットの接続ＩＤがどちらのデータフローのものであるかを識別する信号を格納しておく。そして、データを出力する際に、上記ＦＩＦＯ２０５からデータフロー識別信号を取り出し、この識別信号に応じて接続ＩＤ、カウント値を選択してデータに付加する。
【００５５】
以上の操作により、入力端子１５１−１、１５１−２から非同期にデータが入力されても、各データフローにおける接続ＩＤが重複していなければ、複数のデータフローを同時に処理させることが可能となる。
【００５６】
なお、例えば処理部１０３が画像の拡大・縮小処理のように入出力のデータ数が変化するような処理を割り当てられている場合は、上記ＦＩＦＯだけでは選択できないことがある。この場合は、データフロー識別信号を処理部１０３に入力し、処理部１０３よりデータに同期して出力させ、それによって接続ＩＤ、カウント値を選択してデータに付加すればよい。データフロー識別信号を処理部１０３にて同期させる場合は、ＦＩＦＯ２０５は不要となる。
【００５７】
また、２つの異なるデータフローを実行させるための方法として、データフローの種別を識別する方法でもよい。図４（Ｂ）はデータフローを識別するためのフローＩＤ５０５を付加したパケットのフォーマットを示すものであり、その他の部分は図４（Ａ）と同一であるため、説明は省略する。
【００５８】
図６（Ｂ）のデータフロー（ａ）、データフロー（ｂ）は、上記フローＩＤを付加した場合のシグナルフローグラフの一例を示したものである。この場合はフローＩＤにてデータフローの識別が可能であるので、異なるデータフローにて同じ接続ＩＤを使用することができる。具体的な構成としては、レジスタ３０１−１、３０１−２、４０１−１、４０１−２に接続ＩＤとフローＩＤを一緒に格納して比較部３０３で比較するようにすれば良い。
【００５９】
もしくは、入力端子１５１−１に入力されたデータにはフローＩＤ”０”を、入力端子１５１−２に入力されたデータにはフローＩＤ”１”を付加するようにしてもよい。この場合、通信部１０２の受信部のレジスタ３０１−１、カウンタ３０２−１をフローＩＤ”０”の比較に、レジスタ３０１−２、カウンタ３０２−２をフローＩＤ”１”の比較に用いる。また、通信部１０２の送信部のレジスタ４０１−１、カウンタ４０２−１をフローＩＤ”０”のデータ出力に、レジスタ４０１−２、カウンタ４０２−２をフローＩＤ”１”のデータ出力に用いるようにする。
【００６０】
このような構成とすることで、データフロー毎に独立して管理できるため、データフローのコンフィグレーションが容易になる。また、後者の場合は若干ではあるが回路が簡略化される。
【００６１】
図７は、前述のデータ処理部８２０を有するデータ処理装置の概略構成を示す。
【００６２】
システム制御部８００は、演算制御用のＣＰＵ８０１、固定データやプログラムを格納するＲＯＭ８０２、データの一時保存やプログラムのロードに使用されるＲＡＭ８０３および、外部データを保持する外部記憶装置８０４を有する。データ入力部８１０は、処理すべきデータをシステム外部より取り込む。例えば、イメージスキャナおよびＡ／Ｄ変換器などのデバイスを備える画像読み込み装置や、マイクおよびＡ／Ｄ変換などのデバイスによって構成される音声入力装置などであってもよい。データ出力部８３０は、本システムにおいて処理されたデータを外部に出力する。例えば、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置や、音声データをＤ／Ａ変換器等を通して出力する音声出力装置などであってもよい。
【００６３】
データ入力部８１０において入力されたデータは、一旦、システム制御部に送られてＣＰＵ８０１で処理されてもよいし、そのままＲＡＭ８０３や外部記憶装置８０４に一時記録されてもよい。また、データ処理部８２０は、データ入力部８１０からの入力データを直接受け取って処理を行ってもよいし、システム制御部８００からの指示ならびにデータ供給によって処理を行ってもよい。
【００６４】
データ処理部８２０の出力は、再度システム制御部８００に送られてもよいし、直接データ出力部８３０に送ってもよい。
【００６５】
データ処理部８２０は、システム制御部８００の制御によって所望のデータ処理をするように設定され、そして様々な処理データを供給されて、設定に応じた処理を実行し、処理したデータを外部に出力する。
【００６６】
図８に、システム制御部８００によるデータ処理部を設定する処理のフローチャートを示す。
【００６７】
まず、ステップＳ９１０において、データ処理部のリセットが行われる。この時、バッファ２０２、接続ＩＤを設定するレジスタ３０１、レジスタ４０１、データ順を示すカウンタ３０２、カウンタ４０２および図示しないパケット無効化設定レジスタ等を初期化する。
【００６８】
次に、ステップＳ９２０において、データ処理部に行わせる処理に対応するデータフローを実現できるように通信部の接続ＩＤを格納するレジスタ３０１、レジスタ４０１を設定する。さらに、データ順を示すカウンタ３０２、カウンタ４０２の初期値やパケット無効化設定レジスタ等を設定する。これらの処理は図６を用いて上述した処理である。
【００６９】
次に、ステップＳ９３０において、処理部に行わせる処理に応じて、処理部に対するパラメータ指定などを行う。ステップＳ９４０では、データ処理装置の起動指示が行う。ステップＳ９５０では、データ処理装置の終了通知を監視する処理が行い、ステップＳ９６０で処理終了が検知されるまで繰り返す。ステップＳ９６０でデータ処理部の終了通知が確認されると、処理を終了する。
【００７０】
以上説明したように、本実施例のデータ処理装置によれば、機能分割した処理モジュールに複数のパイプライン処理（データフロー）を簡易な構成によって同時に実行させることができる。従って、分岐や統合を有する複雑なデータフローを簡単に実現できる。各処理モジュールをハードウェア（例えば、プログラムによって構成を変更する自由度が殆どないモジュール）で構成しても、データフローに応じて各モジュールを設定することで、システム全体で柔軟な処理を実現できる。また、パケットの消去も処理モジュール毎に制御できるため、リングバスの使用効率も良い。
【００７１】
なお、上述した説明においては、通信部１０２のバッファを受信部部２０１と送信部２０３の間にバッファ２０２として配置しているが、セレクタ２０３の後段に配置するようにしても良い。この場合、パケットの保留のためのｓｔａｌｌフラグの設定や、受信パケットの無効化のためのｖａｌｉｄフラグのクリアはセレクタ２０３にて行う。他にも、受信部２０１が、バッファ２０２のパケットを監視するように構成してもよい。
【００７２】
また、上述した実施例で挙げたデータフローは、パイプライン処理などの一連の処理を機能分割してハードウェア化した処理を含む。この様な処理に本発明を適用すると、効果が期待しやすい。
【００７３】
＜実施例２＞
次に実施例２について説明する。本実施例では、複数の処理部が１つの通信部を共有するように構成している。なお、実施例１と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
【００７４】
図９は、本発明の実施例２におけるデータ処理部の概略構成を示すブロック図である。図に示すように、データ処理部は、データ入出力部１０１、通信部１００２および処理部１０３を有する。
【００７５】
図１０は、通信部１００２の構成は例を示すブロック図である。図に示すように通信部１００２は複数の処理部の夫々と接続されている。
【００７６】
図１１（ａ）は、データ受信部１１０１の一構成例を示すブロック図である。図中のハイフン以下の番号（−１、−２）は接続されている処理部１０３への対応を示している。例えば、受信部１１０１−２のポート２５１−１、２５２−１、２５３−１、２５４−１、２５５−１、２５６−１は処理部１０３−１に夫々接続される。また、ポート２５１−２、２５２−２、２５３−２、２５４−２、２５５−２、２５６−２は処理部１０３−２に夫々接続される。
【００７７】
判定部１２０４は比較部３０３からのパケット判定信号とカウント一致信号、接続されている処理部１０３からのｓｔａｌｌ信号２５３より、処理部１０３がデータを取り込めたかどうかを判定する。データを取り込めたと判定した場合は、信号線２６０を介して、バッファ２０２にデータの取り込みを通知し、バッファ２０２に格納されるパケットのｖａｌｉｄフラグをクリアし、パケットを無効化する。この操作を複数の処理部１０３の夫々について行う。
【００７８】
例えば、レジスタ３０１−１及び３０１−２に同じ接続ＩＤが格納されており、また、カウンタ３０２−１及び３０２−２の値が一致しているとする。この時、待ち受けしていた接続ＩＤが付加された有効パケットがデータ受信部１１０１に入力され、パケットのカウント値とカウンタ３０２の値が一致すれば、比較器３０３はどちらもｖａｌｉｄ信号２５１を有効にする。ここで、ポート２５２−１で接続されている処理部１０３（上記例では処理部１０３−１）のｓｔａｌｌ信号２５３−１がアサートされ、ポート２５２−２で接続されている処理部１０３（上記例では処理部１０３−２）のｓｔａｌｌ信号２５３−１がネゲートされている場合について説明する。この場合は、ポート２５２−１側の処理部１０３ではデータが受信され、ポート２５２−２側の処理部１０３ではデータが受信されなかったことになる。また、判定部１２０４は信号線２６０を介して、バッファ２０２にデータの保留を通知し、バッファ２０２に格納されるパケットのｓｔａｌｌフラグをセットする。カウンタ３０２−１は、ポート２５２−１側の処理部１０３ではデータが受信されているのでインクリメントされる。
【００７９】
一方、カウンタ３０２−２は、ポート２５２−２側の処理部１０３ではデータが受信されていないのでインクリメントされない。ただし、データは消失されずにリングバス上に保留されているので、リングバスを１周してきたときにｓｔａｌｌ信号２５３−１がネゲートされていれば、受信することができる。なお、カウンタ３０２−１は既にインクリメントされているので、同じデータを２重に取り込むことはない。
【００８０】
図１１（ｂ）は、データ送信部１１０４の概略構成を示すブロック図である。パケット生成部１３０４は、接続されている夫々の処理部１０３のｖａｌｉｄ信号２５６が有効であることを検出し、処理部１０３がデータの出力が可能であると判定する。そして、バッファ２０２のパケットにデータを格納できるかどうかを判定する。
【００８１】
処理部１０３に出力するデータがあり、バッファ２０２のパケットに格納できる場合、パケット生成部１３０４はバッファ２０２のパケットのｖａｌｉｄフラグを有効、ｓｔａｌｌフラグを無効する。そして、処理部１０３のｖａｌｉｄ信号が有効となっている方（複数のｖａｌｉｄ信号が有効となっている場合は、ハイフン以下の番号の小さい方）に対応するカウンタ４０２のカウント値とレジスタ４０１に設定されている接続ＩＤを付加する。
【００８２】
生成されたパケットは、セレクタ２０３を制御して出力端子２５９よりリングバス上に流される。そして、次のクロックサイクルで上記データを出力した方のカウンタ４０２のカウント値をインクリメントする。なお、送信部１１０４のカウンタ４０２とこの送信部のパケットを受信する受信部１１０１の対応するカウンタ３０２は、同期を取るため、データ処理を開始する際に同じ値に初期化される。
【００８３】
また、図１１（ｂ）には２組のレジスタ４０１、カウンタ４０２が示されているが、この組合せの数は接続される処理部１０３のデータポート数に一致している（受信部１１０１も同様）。
【００８４】
以上説明したように、実施例２におけるデータ処理装置によれば、複数の処理部で通信部を共有することができる。これにより、リングバスで直列に接続する段数（モジュール数）を削減することができ、回路を簡略化できる。例えば、同じデータに対して同時に異なる処理を施して、異なる複数の結果を取得するようなデータフローを簡易な回路構成で実現できる。
【００８５】
なお、上述の実施例では、通信部１０２の送信部のレジスタ４０１に値を設定するようにしているが、これをレジスタ毎に固定としても良い。この場合は、シグナルフローグラフの処理を示すアローの先のノード番号が処理毎に固定になるが、アローの元（入力）はプログラムで設定を自由に変更できるため、上述と同様の動作が可能である。
【００８６】
また、上述の実施例では、パケットが有効であることを示すｖａｌｉｄフラグを用いたが。これに限らず、特定の接続ＩＤ（第３のＩＤ、例えば”０”）を無効パケットとしても良い。ただし、この特定のＩＤはどの通信部の接続ＩＤ（第１のＩＤ）にも設定されていないようにしなければならない。
【００８７】
また、上述の実施例ではリングバスを有するデータ処理装置を用いて説明しているが、本発明はリングバス以外の形態においても適用できる。詳細には、処理モジュールの夫々が（間接的又は直接的な）相互通信を可能な接続形態であって、ブロードキャスト通信等により、ある処理モジュールの出力が全ての処理モジュールに伝送可能であるならば本発明は適用できる。例えば、スター型のトポロジーにおいても、一連の処理に用いる全ての処理モジュール間の通信を可能にすれば本発明を適用することで前述の効果を得ることができる。
【００８８】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をコンピュータ等の処理装置（ＣＰＵ、プロセッサ）にて実行することで実現できる。
【００８９】
また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【図１】
2010282557.tif 000003
【図２】
2010282557.tif 000004
【図３】
2010282557.tif 000005
【図４】
2010282557.tif 000006
【図５】
2010282557.tif 000007
【図６】
2010282557.tif 000008
【図７】
2010282557.tif 000009
【図８】
2010282557.tif 000010
【図９】
2010282557.tif 000011
【図１０】
2010282557.tif 000012
【図１１】
2010282557.tif 000013