データ処理装置、データ処理装置の制御方法、およびプログラム
【課題】 複雑なデータパスを有するデータ処理を可能にする技術を提供する。
【解決手段】 データ処理装置は、データ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されている。通信手段の各々は、前の通信手段からデータを受信する受信手段と、次の通信手段へデータを送信する送信手段とを備え、受信手段及び送信手段の各々には接続ID情報が割り当てられている。通信手段は、当該通信手段の受信手段の接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段の接続ID情報を該データ処理済みのパケットに設定して、次の通信手段へ送信し、当該通信手段の受信手段の接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の通信手段へ送信する。
【解決手段】 データ処理装置は、データ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されている。通信手段の各々は、前の通信手段からデータを受信する受信手段と、次の通信手段へデータを送信する送信手段とを備え、受信手段及び送信手段の各々には接続ID情報が割り当てられている。通信手段は、当該通信手段の受信手段の接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段の接続ID情報を該データ処理済みのパケットに設定して、次の通信手段へ送信し、当該通信手段の受信手段の接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の通信手段へ送信する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ処理装置及びその制御方法に関し、特に、複数のデータ処理部へのデータの流れ(データフロー)を制御することで複雑な処理を実現する技術に関する。
【背景技術】
【0002】
従来、プリント画像処理のような一連のデータ処理を高速に効率よく実現するため、全体のデータ処理を所定の機能に分割してハード化し、ハード化されたモジュールを処理の流れ順に接続して一連のデータ処理をパイプライン的に実行する手法が知られている。一方、画像処理においては、一連の処理の順序を変えることで効率的に処理を実現できる。
【0003】
例えば、所定の画素数の出力装置に画像を出力する場合、画素数(解像度)を合わせるため解像度変換が必要となるが、入力画像の画素数が出力装置の画素数よりも多い場合は、処理の上流側で解像度変換を行い、画素数を少なくしてから処理を行った方が良い。他方、入力画像の画素数が出力装置の画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力の直前(下流側)で解像度変換を行った方が画質が良い。
【0004】
また、例えば、ある空間(例えば、入力デバイス空間)から標準的な空間(例えば、解像度600dpi、CIELAB色空間等)に変換して処理を行い、別の空間(例えば、出力デバイス空間)に変換する場合も処理の順序が問題となる。すなわち、入力側と出力側の空間変換部の処理順(1次元LUT、行列演算、3次元LUT等の処理の順序)は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。
【0005】
しかしながら、所定の機能を割り当てたモジュールによってパイプライン処理を行うデータ処理においては、処理の順序を変えることができない。このため、上に例示したような場合は、同じ機能のモジュールを複数実装することで対応しており、リソース活用の点で無駄があった。
【0006】
上記課題を解決するために、各処理モジュール間をリング状のネットワークで接続する構成が提案されている(特許文献1、特許文献2)。これらの手法によれば、リング状ネットワークにてデータの接続先を変更することにより、処理順序の変更が可能である。なお、特許文献2の構成においては、各処理モジュールは各々プロセッサにて実行されるので、各プロセッサのプログラムを変更することによっても処理順序を変更可能である。また、特許文献3にはブロードキャスト通信を用いることで、拡張性、保守性を向上させたデータフロー制御方式が記載されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平01−023340号公報
【特許文献2】特許第2518293号公報
【特許文献3】特許第2834210号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1、特許文献2の記載の構成においては、処理データの接続関係は1対1となる。このため、データパスの分岐(複数モジュールでの同一データの参照)や複数データパスの同時実行、処理モジュールの時分割多重処理等、複雑なデータパスの制御はできなかった。
【0009】
また、特許文献3の構成のようにブロードキャスト通信を用いれば、データパスの分岐(複数モジュールでの同一データの参照)は可能である。しかし、データパスの統合や複数データパスの同時実行、処理モジュールの時分割多重処理等、複雑なデータパスの制御はできなかった。なお、ブロードキャスト通信を用いた場合は、基本的に送信元に戻ってくるまでは送信パケットは消去されないので、リングバスの占有率が増加してしまうという欠点もあった。また、特許文献3の構成では、受信できない状態のモジュールはパケットを消去してしまうため、送信元ではリングを1周分以上待った上で再送処理を開始する。このため、制御が複雑になるだけでなく、転送効率が著しく低下するという欠点もあった。
【0010】
本発明は上記課題に鑑みなされたものであり、簡単な構成によって処理順序の変更を可能にし、更に、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記目的を達成するため、本発明によれば、所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信する受信手段と、次の順序の通信手段へデータを送信する送信手段とを備え、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信し、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する
ことを特徴とするデータ処理装置が提供される。
【発明の効果】
【0012】
本発明によれば、所定の機能が割り当てられている複数のモジュールによってパイプライン処理等をする場合に、簡単な構成によってパイプライン処理等の処理順序の変更が可能な技術を提供できる。
【0013】
また、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を可能にする技術を提供することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態におけるデータ処理装置の一構成例を示すブロック図である。
【図2】通信部の一構成例を示すブロック図である。
【図3】データ受信部の一構成例を示すブロック図である。
【図4】データ送信部の一構成例を示すブロック図である。
【図5】リングバス上を流れるパケットの一構成例を示す図である。
【図6】データ処理部が5個の場合のデータ処理装置の一構成例を示すブロック図である。
【図7】シグナルフローグラフの例を示す図である。
【図8】本発明の実施形態におけるデータ処理装置を有するシステムの構成例を示すブロック図である。
【図9】データ処理装置の制御手順を示すフローチャートである。
【図10】通信部の別の構成例を示すブロック図である。
【図11】本発明の実施形態におけるデータ処理装置の一構成例を示すブロック図である。
【図12】入出力部が2個、データ処理部が5個の場合のデータ処理装置の一構成例を示すブロック図である。
【図13】2つのデータフローを同時処理するシグナルフローグラフの例を示す図である。
【図14】シグナルフローグラフの例を示す図である。
【発明を実施するための形態】
【0015】
以下に本願発明の実施形態を示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲の記載によって規定される本願発明のほんの一部の実施形態にすぎない。従って、本明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明である。なお、便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【0016】
<<実施形態1>>
(データ処理装置の構成)
図1は、本発明の第1の実施形態(実施形態1)におけるデータ処理装置の一構成例を示すブロック図である。図1中、101は処理対象のデータの入力と、処理済みのデータの出力とを行う入出力手段としてのデータ入出力部(入出力部)である。また、102−1〜102−mは通信手段としての通信部(まとめて通信部102)であり、103−2〜103−mは処理手段としてのデータ処理部(処理部。まとめてデータ処理部103)である。
【0017】
通信部102−1〜102−mは、各々隣接する通信部と接続され(但し、通信部102−mは通信部102−1に接続される)、リングバスを構成している。通信部102−1〜102−mはさらに、リングバスとデータ入出力部101またはデータ処理部103−2〜103−mとの間でのデータの送受信を行う。このため、通信部102−2〜102−mには、各々データ処理部103−2〜103−mに接続されている。
【0018】
入力端子151より入力されたデータはデータ入出力部101を介して通信部102−1に入力される。入力されたデータはパケット化されリングバス上を流される。通信部102は予め設定された情報に従って必要なパケットをリングバスより取り込み、取り込んだパケットよりデータ抽出し、データ処理部103に入力する。データ処理部103では、所定のデータ処理(例えば色空間変換や解像度変換等)を行い、処理後のデータを通信部102へ出力する。
【0019】
処理後のデータは通信部102にてパケット化されリングバス上を流される。このように通信部102−2〜102−mによって、予め設定された順番にてデータがデータ処理部103−2〜103−mにて次々に処理されて行く。そして、設定されたデータ処理が終了したデータは通信部102−1にてデータ入出力部101に取り込まれ、出力端子152より出力される。なお、データ入出力部101は、外部の機器(またはモジュール)とのインタフェースを行うものであり、通信部102−1にて直接インタフェース可能な場合は省略可能である。
【0020】
ここで、本実施形態に係るデータ処理装置の動作概要について説明する。本実施形態に係るデータ処理装置では、所定のデータ処理を行う複数のデータ処理部103とデータ入出力部101がそれぞれ対応する通信部102を介して所定の順序でリング状に接続されている。後述するように、通信部102の各々は、前の順序の通信部102からデータを受信する受信部201と、次の順序の通信部102へデータを送信する送信部204とを備えている。また、受信部201及び送信部204の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられている。このような構成において、通信部102は、当該通信部102の受信部201に割り当てられている接続ID情報と同一のID情報を有するパケットを受信した場合は、対応するデータ処理部103で該パケットに対してデータ処理を行わせる。そして、当該通信部102の送信部204に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信部102へ送信する。一方、当該通信部102の受信部201に割り当てられている接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信部102へ送信する。このように、受信部201及び送信部204の各々に接続ID情報を割り振ってパケットの伝達経路を制御することで、複雑なデータパスを有するデータ処理を効率的に実現することができる。以下、通信部102の詳細な構成を説明する。
【0021】
(通信部)
図2は、通信部102の一構成例を示すブロック図である。図2中、201はデータ受信部(受信部)、202はバッファ、203はセレクタ、204はデータ送信部(送信部)である。
【0022】
隣の通信部の出力端子259は、入力端子257に接続され、通信部102−1〜102−mにてリングバスを構成している。また、信号線251,252,253,254,255,256には、対応するデータ処理部103(103−2〜103−mの内の1つ)が接続されている。ただし、通信部102−1の信号線251〜256にはデータ入出力部101が接続されている。
【0023】
図5はリングバス上を流れるパケットの一構成例を示す模式図である。図5中、501はパケットが有効であることを示すvalidフラグであり、502はパケットが受信保留であることを示すstallフラグである。503はデータの送信順を示すカウント値、504はデータの論理的な接続を識別するための接続ID、505は通信部102に入力または出力されるデータである。
【0024】
隣の通信部より入力されたパケットは、バッファ202にて一旦保持され、次のクロックサイクルでセレクタ203に出力される。データ受信部201は、入力端子257のパケットを監視し、
・パケットのvalidフラグが有効である。
・接続ID及びカウント値が受信部201が保持する値と一致する。
・接続されているデータ処理部103がデータの入力が可能である(stall信号253が保留状態でない)。
の全てが成立する場合、このパケットを取り込み、(valid信号251を有効にして)出力端子252よりデータ処理部103へデータを出力する。このとき、データ受信部201は、信号線260を介してバッファ202にデータの取り込みを通知し、バッファ202に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。また、パケット取り込み後、受信部201が保持するカウント値503はインクリメントされる。
【0025】
一方、
・入力パケットのvalidフラグが有効である。
・接続IDとカウント値が一致する。
・接続されているデータ処理部103がデータの入力が不可能である(stall信号253が保留状態)。
の全てが成立する場合、データ受信部201は、信号線260を介してバッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。また、入力パケットのvalidフラグが有効で、接続ID一致してもカウント値が受信部201が保持する値と一致しない場合は、データの取り込みができないので、この場合もstallフラグをセットする。なお、後述の動作例で説明するように、パケットを受信するか否かの判断においてカウント値を評価しなくてもよい。
【0026】
データ送信部204は、バッファ202の出力パケット(信号線258)のvalidフラグを監視する。validフラグが有効のときはリングバス上にデータを出力できないので、データ送信部204は、接続されているデータ処理部103からのデータの出力を保留するためにstall信号254をセットする。なお、validフラグが無効のときは、stall信号254をリセットする。
・接続されているデータ処理部103からデータの出力が可能である(valid信号256が有効の場合)。
・バッファ202の出力パケットのvalidフラグが無効である。
の両方が成り立つ場合、データ送信部204は、validフラグを有効、stallフラグを無効にして、カウント値とレジスタに設定されている接続IDを付加してパケットを生成する。そして、セレクタ203を制御して、出力端子259よりこの生成したパケットをリングバス上に流す。パケット出力後、データ送信部204が保持するカウント値はインクリメントされる。なお、後述の動作例で説明するように、カウント値を評価しない構成ではカウント値のインクリメントは行わなくてもよい。
【0027】
(データ受信部)
図3は、データ受信部201の一構成例を示すブロック図である。図3中、301はレジスタ、302は第1保持手段としてのカウンタ、303は比較部、304は判定部である。
【0028】
比較部303は入力端子257より入力されるリングバス上のパケットのvalidフラグ、接続ID、カウント値を監視する。そして、
・パケットのvalidフラグが有効である。
・パケットの接続IDがレジスタ301に格納されている接続IDと一致する。
・パケットのカウント値がカウンタ302の値と一致する。
が全て成立した場合、valid信号251を有効にする。なお、出力端子252にはこのパケットのデータ部が出力される。また、比較部303は、
・入力されたパケットのvalidフラグが有効で、このパケットの接続IDがレジスタ301に格納されている接続IDと一致したことを示す入力パケット判定信号。
・このパケットのカウント値がカウンタ302の値と一致したことを示すカウント値一致信号。
を判定部304に入力する。判定部304は、入力パケット判定信号とカウント値一致信号、接続されているデータ処理部103からのstall信号253より、データ処理部103がデータを取り込めたかどうかを判定する。データを取り込めたと判定した場合は、信号線260を介してバッファ202にデータの取り込みを通知し、バッファ202に格納されているパケットのvalidフラグをクリアし、パケットを無効化する。なお、後述するように、データの分岐(複数データ処理部での使用)のため、このパケット無効化処理は、CPU等によってON/OFF可能となっている。
【0029】
データ取り込み通知信号はカウンタ302にも入力され、データを取り込めたと判定した場合、次のデータを取得するために、次のクロックサイクルでカウンタ302のカウント値をインクリメント(+1)する。一方、入力パケット判定信号とカウント値一致信号、接続されているデータ処理部103からのstall信号253より、取り込むべきデータが取り込めないと判定した場合は、信号線260を介して、バッファ202にデータの保留を通知する。さらに、バッファ202に格納されるパケットのstallフラグをセットする。また、入力パケット判定信号とカウント値一致信号より、取り込み対象パケットであるがデータの取り込み順序が正しくないと判定した場合も同様である。すなわち、信号線260を介して、バッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。なお、ここではカウント値を評価する場合について説明したが、カウント値を評価しない場合はカウント値に関する信号は送受信する必要がない。
【0030】
(データ送信部)
図4は、データ送信部204の一構成例を示すブロック図である。図4中、401はレジスタ、402は第2保持手段としてのカウンタ、403は比較部、404はパケット生成部である。
【0031】
比較部403は、バッファ202の出力パケット(信号線258)のvalidフラグとstallフラグ、接続IDを監視する。validフラグが有効のときは、リングバス上にデータを出力できないので、接続されているデータ処理部103からのデータ出力を保留するためにstall信号254をセットする。なお、validフラグが無効のときは、stall信号254をリセットする。
【0032】
また、比較部403は、
・バッファ202の出力パケットのvalidフラグが有効かつstallフラグが保留を示していない。
・バッファ202の出力パケットの接続IDがレジスタ401に格納されている接続IDと一致した。
の両方が成立した場合は、自身が出力したパケットが保留されずに戻ってきたと判定する。そして、パケット生成部404を介してセレクタ203を制御し、validフラグを無効にしてパケットを無効化する。この場合も、パケットの出力が可能となるので、stall信号254をリセットする。
【0033】
パケット生成部404は、接続されているデータ処理部103のvalid信号256を参照する。データ処理部103からデータの出力が可能と判定した場合(valid信号256が有効の場合)は、バッファ202の出力パケットが、
・その出力パケットのvalidフラグが無効である場合。
・無効化するパケット(validフラグが有効かつstallフラグが保留を示していないときで、パケットの接続IDがレジスタ401に格納されている接続IDと一致したパケット)の場合。
のいずれかの場合、validフラグを有効、stallフラグを無効にして、カウンタ402のカウント値とレジスタ401に設定されている接続IDを付加してパケットを生成する。そして、セレクタ203を制御して、出力端子259より生成したパケットをリングバス上に流す。さらに、次のクロックサイクルでカウンタ402のカウント値をインクリメント(+1)する。なお、送信部204のカウンタ402とこの送信部のパケットを受信する受信部201のカウンタ302は、同期を取るため、データ転送開始前に同じ値に初期化される。なお、ここではカウント値を評価する場合について説明したが、カウント値を評価しない場合はカウント値に関する処理は実行する必要がない。
【0034】
(データ処理装置の動作)
次に、本実施形態に係るデータ処理装置の動作について図面を参照して説明する。図6はデータ処理部が5個の場合のブロック図である。図示したように各データ処理部103−2〜103−6では、各々処理部A〜処理部Eで示される処理が入力データに対し施されるものとする。以下では説明を簡略化するため、データ処理部103、入出力部101では入力データの保留が発生しない場合を説明する。この場合は、パケットのstallフラグ、カウント値は不要となる。このような構成の動作について、シグナルフローグラフを用いて説明する。シグナルフローグラフにおいては、ノードを「丸」で示し、処理を「アーク(矢印)」で示す。
【0035】
●動作例1
まず、単純に処理A、処理B、処理C、処理D、処理Eの順に処理されるとすると、シグナルフローグラフは図7(a)に示すようになる。この時、
・処理部A(データ処理部103−2)の通信部102−2の受信部201のレジスタ(レジスタ301)には”1”を格納しておき、通信部102−2の送信部204のレジスタ(レジスタ401)には”2”を格納しておく。
同様に、
・通信部102−3の受信部201のレジスタには”2”、送信部204のレジスタには”3”を格納しておく。
・通信部102−4の受信部201のレジスタには”3”、送信部204のレジスタには”4”を格納しておく。
・通信部102−5の受信部201のレジスタには”4”、送信部204のレジスタには”5”を格納しておく。
・通信部102−6の受信部201のレジスタには”5”、送信部204のレジスタには”6”を格納しておく。
【0036】
入力端子151はノード”1”に対応し、出力端子152はノード”6”に対応するので、通信部102−1の受信部201のレジスタには”6”を格納しておき、送信部204のレジスタには”1”を、格納しておく。
【0037】
入力端子151から入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ部をデータ処理部103−2に入力する。入力されたデータはデータ処理部103−2で処理Aが施され、通信部102−2に出力される。通信部102−2には送信部のレジスタ401に”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−3へ出力する。
【0038】
通信部102−3には受信部のレジスタ301に”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ処理部103−3で処理Bが施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−4へ出力する。
【0039】
同様に、通信部102−4では接続ID”3”のパケットを取り込んでデータ処理部103−4で処理Cが施され、接続ID”4”のパケットを生成して通信部102−5へ出力する。通信部102−5では接続ID”4”のパケットを取り込んでデータ処理部103−5で処理Dが施され、接続ID”5”のパケットを生成して通信部102−6へ出力する。通信部102−6では接続ID”5”のパケットを取り込んでデータ処理部103−6で処理Eが施され、接続ID”6”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。このようにして、入力されたデータは、処理A、処理B、処理C、処理D、処理Eの順に処理され出力される。
【0040】
●動作例2
図7(b)は処理B、処理Cの順序を逆にしたシグナルフローグラフである。この場合は、通信部102−3の受信部201のレジスタには”3”、送信部204のレジスタには”4”を格納しておく。そして、通信部102−4の受信部201のレジスタには”2”、送信部204のレジスタには”3”を格納しておく。その他は図7(a)の例と同じであるので省略する。
【0041】
入力端子151から入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2では接続ID”1”のパケットを取り込んでデータ処理部103−2で処理Aが施され、接続ID”2”のパケットを生成して通信部102−3へ出力する。
【0042】
通信部102−3には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケット以外は取り込まずにそのまま通信部102−4へ出力する。従って、上記接続ID”2”のパケットは何も処理されずに通信部102−4へ出力される。通信部102−4では接続ID”2”のパケットを取り込んでデータ処理部103−4で処理Cが施され、接続ID”3”のパケットを生成して通信部102−5へ出力する。
【0043】
通信部102−5には受信部のレジスタ301に”4”が格納されているので、接続ID”3”のパケットは取り込まずにそのまま通信部102−4へ出力する。同様に、通信部102−6、通信部102−1、通信部102−2においても、何も処理されない。従って、通信部102−4がパケットを出力してから4クロックサイクル後に通信部102−3に接続ID”3”のパケットが到達し、取り込まれてデータ処理部103−3で処理Bが施され、接続ID”4”のパケットを生成して通信部102−4へ出力する。
【0044】
通信部102−4には受信部のレジスタ301に”2”が格納されているので、接続ID”4”のパケットは取り込まずにそのまま通信部102−5へ出力する。通信部102−5では接続ID”4”のパケットを取り込んでデータ処理部103−5で処理Dが施され、接続ID”5”のパケットを生成して通信部102−6へ出力する。通信部102−6では接続ID”5”のパケットを取り込んでデータ処理部103−6で処理Eが施され、接続ID”6”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。このようにして、入力されたデータは、処理A、処理C、処理B、処理D、処理Eの順に処理され出力される。
【0045】
●動作例3
図7(c)は処理D、処理Eを削除したシグナルフローグラフである。この場合は、通信部102−4の送信部204のレジスタを”6”に変更するだけでよい。その他は図7(a)の例と同じであるので省略する。なお、通信部102−5および通信部102−6の受信部201のレジスタには、パケットが取り込まれないようにシグナルフローグラフで使用されていない値を設定しておく。
【0046】
●動作例4
図7(d)は分岐・統合のあるシグナルフローグラフの例である。このようなシグナルフローは、例えば、
(1)同じ画像から、一方はLPF(ローパスフィルタ)をかけて低周波成分を取り出して処理をし、もう一方はHPF(ハイパスフィルタ)をかけて高周波成分を取り出して処理をする。
(2)画像の低周波成分と高周波成分を合成して出力画像を生成する。
といった処理を行う場合に有効である。以下では、分岐・統合を伴う処理をカウント値を用いて実行する場合について説明する。
【0047】
通信部102−6にて、分岐されて処理された2系統のデータが同期されて取り込まれるように、処理開始前に、通信部102−3の送信部のカウンタ402は”0”に初期化され、通信部102−5の送信部のカウンタ402は”1”に初期化される。また、上記2つのカウンタは、増分2でカウントアップ(即ち、パケット出力する度に+2)される。このようにカウンタを設定することで、通信部102−3の出力と通信部102−5の出力を通信部102−6で交互に受け取ることが可能となる。また、通信部102−2にて取り込むパケットは通信部102−4でも取り込まなければならないので、通信部102−2では取り込んだパケットを無効にせずに、そのまま通信部102−3に出力するように設定しておく。すなわち、前述した入力パケット無効化処理をOFFに設定する。
【0048】
次に、データの流れに沿って動作を説明する。入力端子151から入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ部をデータ処理部103−2に入力する。また、通信部102−2は、データ分岐のため入力パケット無効化処理がOFFに設定されており、取り込んだパケットは無効化(消去)せずに、そのまま通信部102−3に出力される。一方、入力されたデータはデータ処理部103−2で処理Aが施され、通信部102−2に出力される。通信部102−2には送信部のレジスタ401に”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−3へ出力する。
【0049】
通信部102−3では接続ID”2”のパケットを取り込んでデータ処理部103−3で処理Bが施され、接続ID”3”のパケットを生成して通信部102−4へ出力する。このとき、カウント値としては、初期値の”0”が付加される。また、送信部のカウンタ402は次のパケットの送信のために増分2でカウントアップ(即ち、パケット出力する度に+2)される。
【0050】
通信部102−4には受信部のレジスタ301に”1”が格納されているので、接続ID”3”のパケットは取り込まずにそのまま通信部102−5へ出力する。同様に、通信部102−5においても何も処理されずにそのまま通信部102−6へ出力する。
【0051】
通信部102−6には受信部のレジスタ301に”3”が格納されており、受信部のカウンタ302は”0”に初期化されているので、接続ID”3”かつカウント値”0”のパケットを取り込んでデータ部をデータ処理部103−6に入力する。この時、次に処理Dが施されたデータを受け取るため、受信部のカウンタ302はインクリメント(+1)される。
【0052】
通信部102−2で分岐されたパケットは、接続ID”1”であるので、通信部102−3では何もせずに通信部102−4に出力される。通信部102−4には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ部をデータ処理部103−4に入力する。なお、このパケットは他のデータ処理部ではもう使用しないので、リングバスの有効利用のため無効化処理される。入力されたデータはデータ処理部103−4で処理Cが施され、通信部102−4に出力される。通信部102−4には送信部のレジスタ401に”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−5へ出力する。
【0053】
通信部102−5では接続ID”4”のパケットを取り込んでデータ処理部103−5で処理Dが施され、接続ID”3”のパケットを生成して通信部102−6へ出力する。このとき、カウント値としては、初期値の”1”が付加される。また、送信部のカウンタ402は次のパケットの送信のために増分2でカウントアップ(即ち、パケット出力する度に+2)される。
【0054】
通信部102−6には受信部のレジスタ301に”3”が格納されており、受信部のカウンタ302はインクリメントされて”1”になっているので、接続ID”3”かつカウント値”1”のパケットを取り込んでデータ部をデータ処理部103−6に入力する。この時、次に処理Bが施されたデータを受け取るため、受信部のカウンタ302はインクリメント(+1)される。
【0055】
データ処理部103−6には、上記操作により、偶数番目には処理A、処理Bが施されたデータが、奇数番目には処理C、処理Dが施されたデータが順次入力される。これらのデータをデータ処理部103−6(処理E)にて合成(統合)し、結果を通信部102−6に出力する。通信部102−6の送信部のレジスタ401には”6”が格納されているので、接続ID”6”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。入力されたデータは、処理A〜処理Bと処理C〜処理Dの2系統に分岐して処理され、処理Eにて合成処理されて出力される。
【0056】
●動作例5
同様に、カウント値によって分岐させたり、特定の間隔のデータを別処理させたりすることも可能である。例えば、偶数画素と奇数画素とに分離し、異なる処理を施すことも簡単にできる。図7(d)のシグナルフローグラフにおいて、偶数画素は処理A〜処理Bを行い、奇数画素は処理C〜処理Dの処理を行い、処理Eの入力にて統合されて処理Eが行われる例にて説明する。
【0057】
この場合も動作例4と同様に、分岐・処理された2系統のデータが通信部102−6で同期されて取り込まれるように、処理開始前に、通信部102−3の送信部のカウンタ402は”0”、通信部102−5の送信部のカウンタ402は”1”に初期化される。また、上記2つのカウンタは、増分2でカウントアップ(即ち、パケット出力する度に+2)される。これに加えて、偶数画素と奇数画素とに分離して処理されるように、処理開始前に、通信部102−2の受信部のカウンタ302は”0”に初期化され、通信部102−4の受信部のカウンタ302は”1”に初期化される。また、上記2つのカウンタは、増分2でカウントアップ(即ち、パケットを取り込む度に+2)される。このように設定することで、偶数のカウント値のパケットは通信部102−2で取り込まれ、奇数のカウント値のパケットは通信部102−4で取り込まれる。なお、この場合は、同じデータを参照するわけではないので、取り込んだパケットを無効化してよい(入力パケット無効化処理をONに設定)。
【0058】
(システム構成例)
図8は、本実施形態に係るデータ処理装置を有するシステムの構成例を示す。1100はシステム制御部であり、演算制御用のCPU1101、固定データやプログラムを格納するROM1102、データの一時保存やプログラムのロードに使用されるRAM1103および、外部データを保持する外部記憶装置1104等を備える。
【0059】
1110は、処理すべきデータをシステム外部から取り込むデータ入力部である。たとえばイメージスキャナおよびA/D変換器などのデバイスを有する画像読み込み装置や、マイクおよびA/D変換などのデバイスを有する音声入力装置などであってもよい。
【0060】
1120は、本実施形態に係るデータ処理装置である。1130は、本システムにおいて処理されたデータを外部に出力するデータ出力部である。例えば、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置であったり、音声データをD/A変換器等を通して出力する音声出力装置であってもよい。
【0061】
データ入力部1110において入力されたデータは、システム制御部に送られてCPU1101で処理されてもよいし、そのままRAM1103や外部記憶装置1104に一時記録されてもよい。よって、データ処理装置1120は、データ入力部1110からの入力データを直接受け取って処理を行っても、システム制御部1100からの指示ならびにデータ供給によって処理を行ってもよい。
【0062】
また、データ処理装置1120の出力は、再度システム制御部1100に送られても、また、直接データ出力部1130に送られてもよい。データ処理装置1120は、システム制御部1100の制御によって、様々なデータ処理内容を設定され、そして様々な処理データを供給されて、設定に応じた処理を実行し、処理したデータを外部に出力する。
【0063】
(制御手順)
図9に、システム制御部からのデータ処理装置1120の制御手順を示す。制御処理が開始されると、ステップS1210において、データ処理装置1120のリセットが行われる。この時、リングバスを構成するバッファ202、接続IDを設定するレジスタ301、レジスタ401、データ順を示すカウンタ302、カウンタ402、不図示のカウンタ増分レジスタ、パケット無効化設定レジスタ等が初期化される。
【0064】
ステップS1220において、通信部の接続IDを格納するレジスタ301、レジスタ401が設定される。また、必要に応じて、データ順を示すカウンタ302、カウンタ402の初期値や増分、パケット無効化設定レジスタ等が設定される。
【0065】
ステップS1230において、データ処理部に対するパラメータ指定などが行われる。次に、ステップS1240において、データ処理装置1120の起動指示が行われる。
【0066】
ステップS1250では、データ処理装置1120の終了通知を監視する処理が行われ、これはステップS1260において、処理終了が検知されたことを判断するまで繰り返される。ステップS1260において、データ処理装置1120の終了通知が確認されると(ステップS1260でYES)、処理を終了する。
【0067】
以上説明したように、本実施形態に係るデータ処理装置は、シグナルフローグラフでのノード番号を通信部のレジスタに設定し、このノード番号を用いてデータフローを制御する。これにより、多様なシグナルフローグラフに対応するデータフローを構成することが可能となる。
【0068】
また、本実施形態では、通信部102の少なくともいずれか一つが備える送信部204は、カウンタ値を保持するカウンタ402を備えている。そして、対応する受信部201に割り当てられている接続ID情報と同一のID情報を有するパケットを受信した場合は、データ処理済みのパケットに対してカウンタ402が保持するカウンタ値を設定して次の順序の通信部102へ送信する。さらに、カウンタ402が保持するカウンタ値を第1の値だけ増分する。一方、通信部102の少なくともいずれか一つが備える受信部201も、カウンタ値を保持するカウンタ302を備えている。そして、通信部102は、
・当該通信部102の受信部201に割り当てられている接続ID情報と同一のID情報。
・当該受信部201のカウンタ302が保持するカウンタ値と同一のカウンタ値。
の両方を有するパケットを受信した場合のみ、対応するデータ処理部103で該パケットに対してデータ処理を行わせ、カウンタ302が保持するカウンタ値を第2の値だけ増分する。したがって、本実施形態によれば、
・送信部及び受信部に割り当てる接続ID情報。
・カウンタ値を増分する送信部及び受信部、カウンタの増分値(第1の増分値、第2の増分値)。
などを適切に設定することで、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を実行することができる。
【0069】
また、通信部102の少なくともいずれか一つは、当該通信部102の受信部201に割り当てられている接続ID情報と同一のID情報を有するパケットを受信した場合、
・当該通信部102の送信部204に割り当てられている接続ID情報が設定されたデータ処理済みのパケットを次の順序の通信部102へ送信する。
とともに、
・受信した該パケットをID情報を変更せずに次の順序の通信部102へ送信する。
このため、同一のデータに対して、別のデータ処理部103を用いてそれぞれ別個のデータ処理を行ったり、あるデータ処理部のデータ処理結果を監視(モニタ)したりすることが可能になる。
【0070】
なお、カウンタ402やカウンタ302が保持するカウンタ値を初期化する(第1初期化、第2初期化)ようにしてもよい。あるいは、カウンタ402の増分値(第1の値)やカウンタ302の増分値(第2の値)を設定する(第1設定、第2設定)ようにしてもよい。この設定は、ユーザの指示入力や、当該設定の詳細を示すデータを記憶装置から読み出すことによって行うことができる。これにより、データ処理を任意にカスタマイズすることができる。
【0071】
また、本実施形態では、通信部102の受信部201と送信部204とに対して割り当てる接続ID情報を記憶するレジスタ(記憶手段)を備えている。このため、レジスタの記憶内容を適切に設定することで、データ処理のフローを任意にカスタマイズすることができる。
【0072】
なお、上述した説明においては、通信部102のバッファを受信部201と送信部203の間に配置しているが、これに限らず、例えば、図10に示すように、セレクタ203の後段に配置するようにしても良い。この場合、パケットの保留のためのstallフラグの設定や、受信パケットの無効化のためのvalidフラグのクリアは送信部1304を介してセレクタ203にて行う。あるいは、バッファで受けた後で、受信部、送信部の処理を行っても良い。
【0073】
<<実施形態2>>
図11は、本発明の第2の実施形態(実施形態2)におけるデータ処理装置の一構成例を示すブロック図である。図11中、101−1〜101−nはn個のデータ入出力部、102−1〜102−n+mはn+m個の通信部、103−1〜103−mはm個のデータ処理部である。
【0074】
本実施形態では、複数の異なるデータパスを同時に実現するため、データ入出力部101を追加したものである。なお、データ入出力部101、通信部102、データ処理部103各々の動作については、実施形態1と同様であるため、説明を省略する。
【0075】
次に、シグナルフローグラフを用いて、動作を説明する。説明を簡略化するため、図12に示すようにデータ入出力部を2つ、データ処理部を4つでデータ処理装置を構成した例を用い、2つのデータパスを同時に処理する場合の動作を説明する。
【0076】
●動作例1
図13のデータフロー(a)、データフロー(b)を同時処理する場合を説明する。まず、データフロー(a)を構成するため、処理部B(データ処理部103−3)の通信部102−3の受信部のレジスタ(レジスタ301)には”1”を格納しておき、通信部102−3の送信部のレジスタ(レジスタ401)には”3”を格納しておく。処理部D(データ処理部103−5)の通信部102−5の受信部のレジスタには”3”、送信部のレジスタには”5”を格納しておく。入力端子151−1はノード”1”に対応し、出力端子152−1はノード”5”に対応するので、通信部102−1の受信部のレジスタには”5”を格納しておき、送信部のレジスタには”1”を、格納しておく。
【0077】
次に、データフロー(b)を構成するため、処理部C(データ処理部103−4)の通信部102−4の受信部のレジスタ(レジスタ301)には”2”を格納しておき、通信部102−4の送信部のレジスタ(レジスタ401)には”4”を格納しておく。処理部E(データ処理部103−6)の通信部102−6の受信部のレジスタには”4”、送信部のレジスタには”6”を格納しておく。入力端子151−2はノード”2”に対応し、出力端子152−2はノード”6”に対応するので、通信部102−1の受信部のレジスタには”6”を格納しておき、送信部のレジスタには”2”を、格納しておく。
【0078】
・データフロー(a)
上記設定が終わった後に、入力端子151−1からデータを入力すると、入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2の受信部のレジスタ301には”6”が格納されているので、パケットを取り込まずにそのまま通信部102−3へ出力する。
【0079】
通信部102−3には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ処理部103−3で処理Bが施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−4へ出力する。
【0080】
通信部102−4の受信部のレジスタ301には”2”が格納されているので、パケットを取り込まずにそのまま通信部102−5へ出力する。通信部102−5には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケットを取り込んでデータ処理部103−5で処理Dが施され、通信部102−5に出力される。通信部102−5の送信部のレジスタ401には”5”が格納されているので、接続ID”5”のパケットを生成して通信部102−6へ出力する。
【0081】
通信部102−6の受信部のレジスタ301には”4”が格納されているので、パケットを取り込まずにそのまま通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”5”が格納されているので、接続ID”5”のパケットを取り込んでデータ部を出力端子152−1より出力する。このように、入力端子151−1から入力されたデータは、処理B、処理Dが順次施されて出力端子152−1より出力される。
【0082】
・データフロー(b)
一方、入力端子151−2からデータを入力すると、入力されたデータには通信部102−2にて接続ID”2”が付加され、通信部102−3に出力される。通信部102−3の受信部のレジスタ301には”1”が格納されているので、パケットを取り込まずにそのまま通信部102−4へ出力する。
【0083】
通信部102−4には受信部のレジスタ301に”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ処理部103−4で処理Cが施され、通信部102−4に出力される。通信部102−4の送信部のレジスタ401には”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−5へ出力する。
【0084】
通信部102−5の受信部のレジスタ301には”3”が格納されているので、パケットを取り込まずにそのまま通信部102−6へ出力する。通信部102−6には受信部のレジスタ301に”4”が格納されているので、接続ID”4”のパケットを取り込んでデータ処理部103−6で処理Eが施され、通信部102−6に出力される。通信部102−6の送信部のレジスタ401には”6”が格納されているので、接続ID”6”のパケットを生成して通信部102−1へ出力する。
【0085】
通信部102−1の受信部のレジスタ301には”5”が格納されているので、パケットを取り込まずにそのまま通信部102−2へ出力する。通信部102−2には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152−2より出力する。
【0086】
このように、入力端子151−2から入力されたデータは、処理C、処理Eが順次施されて出力端子152−2より出力される。従って、入力端子151−1および入力端子151−2にデータを同時に入力しても、設定したデータフローによる処理が実行されて、各々出力端子152−1、出力端子152−2より出力されることがわかる。
【0087】
●動作例2
次に、所定画素数毎にデータをサンプリングして、別系統で出力する場合について説明する。例えば、一方の処理ではJPEG圧縮を行い、他方の処理ではJPEG圧縮時にDC成分のみ取り出して、縮小画像を生成するような場合について説明する。まず、メインのデータフローではYCCの輝度・色差フォーマットにて入力し、処理BでDCT変換を行い、処理Dで量子化とジグザグスキャン変換を行い、処理Eで可変長符号化を行うようにしてJPEG圧縮を行う。一方、サブのデータフローでは、処理Bの出力からDC成分のみ抽出して処理Cにて色変換してRGBデータに変換して、縮小画像を得る。
【0088】
従って、このような処理のシグナルフローグラフは図14(a)のようになる。但し、処理Cでは、DC成分のみ抽出するので、受信部102−4のカウンタ302は増分64でインクリメント(即ち、データを取り込む度に+64)される。また、処理Cの入力データであるDC成分は、処理Dでも使用するので、通信部102−4では取り込んだパケットを無効にせずに、そのまま通信部102−5に出力するように設定しておく。すなわち、前述した入力パケット無効化処理をOFFに設定する。
【0089】
各通信部102の受信部のレジスタおよび、送信部のレジスタには以下の値を設定しておく。
・通信部102−1の受信部のレジスタには”4”、送信部のレジスタには”1”。
・通信部102−2の受信部のレジスタには”5”、送信部のレジスタには任意値(何を設定しても良いが、通常は0または最大値を入れておく)。
・通信部102−3の受信部のレジスタには”1”、送信部のレジスタには”2”。
・通信部102−4の受信部のレジスタには”2”、送信部のレジスタには”5”。
・通信部102−5の受信部のレジスタには”2”、送信部のレジスタには”3”。
・通信部102−6の受信部のレジスタには”3”、送信部のレジスタには”4”。
【0090】
以下、データの流れに沿って動作を説明する。上記設定が終わった後に、入力端子151−1からデータを入力すると、入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2の受信部のレジスタ301には”5”が格納されているので、パケットを取り込まずにそのまま通信部102−3へ出力する。
【0091】
通信部102−3には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ処理部103−3で処理B(DCT変換)が施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”2”が格納されており、処理開始前に、通信部102−3の送信部のカウンタ402は”0”に初期化されているので、接続ID”2”でカウント値”0”のパケットを生成して通信部102−4へ出力する。パケット出力後、通信部102−3の送信部のカウンタ402は次のデータの出力のため、インクリメント(+1)される。
【0092】
通信部102−4の受信部のレジスタ301には”2”が格納されており、通信部102−4の受信部のカウンタ302は”0”に初期化されている。このため、接続ID”2”でカウント値”0”のパケットを取り込んでデータ部をデータ処理部103−4に入力する。この時、次のDC成分を受け取るため、受信部のカウンタ302は+64される。また、通信部102−4は、データ分岐のため入力パケット無効化処理をOFFに設定されており、取り込んだパケットは無効化(消去)せずに、そのまま通信部102−5に出力される。
【0093】
データ処理部103−4に入力されたデータは処理C(色変換)が施され、通信部102−4に出力される。通信部102−4には送信部のレジスタ401に”5”が格納されているので、接続ID”5”のパケットを生成して通信部102−5へ出力する。
【0094】
通信部102−5には受信部のレジスタ301に”2”が格納されているので、接続ID”5”のパケットは取り込まずにそのまま通信部102−6へ出力する。通信部102−6には受信部のレジスタ301に”3”が格納されているので、そのまま通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”3”が格納されているので、そのまま通信部102−2へ出力する。
【0095】
通信部102−2には受信部のレジスタ301に”5”が格納されているので、接続ID”5”のパケットを取り込んでデータ部を出力端子152−2より出力する。このように、入力端子151−1から入力されたデータは、処理Bにて処理された後、64画素毎に抽出され、処理Cが施されて出力端子152−2より出力される。
【0096】
一方、通信部102−5の受信部のレジスタ301には”2”が格納されており、通信部102−5の受信部のカウンタ302は”0”に初期化されている。このため、接続ID”2”でカウント値”0”のパケットを取り込んでデータ部をデータ処理部103−5に入力する。この時、次のデータ(AC成分)を受け取るため、受信部のカウンタ302は+1される。また、通信部102−5では、取り込んだパケットは以降の処理では使用されないので、入力パケット無効化処理はONに設定されており、取り込んだパケットは無効化(消去)される。
【0097】
データ処理部103−5に入力されたデータは処理D(量子化とジグザグスキャン変換)が施され、通信部102−5に出力される。通信部102−5には送信部のレジスタ401に”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−6へ出力する。
【0098】
通信部102−6には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケットを取り込んでデータ処理部103−6で処理E(可変長符号化)が施され、通信部102−6に出力される。通信部102−6の送信部のレジスタ401には”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”4”が格納されているので、接続ID”4”のパケットを取り込んでデータ部を出力端子152−1より出力する。このように、入力端子151−1から入力されたデータは、処理B、処理D、処理Eが順次施されて出力端子152−1より出力される。
【0099】
●動作例3
次に、任意のデータ処理部の出力を別系統で出力する場合について説明する。図14(b)のシグナルフローグラフは図14(a)のシグナルフローグラフから、処理Cを削除したものである。従って、入出力部101−2は使用されていないので、任意のノードのモニタが可能である。以下では図14(b)のシグナルフローグラフのノード2のモニタ出力を出力端子152−2より出力させる方法について説明する。なお、モニタするノードは2重丸にして区別している。
【0100】
各通信部102の受信部のレジスタおよび、送信部のレジスタには以下の値を設定しておく。
・通信部102−1の受信部のレジスタには”4”、送信部のレジスタには”1”。
・通信部102−2の受信部のレジスタには”2”、送信部のレジスタには任意の値(何を設定しても良いが、通常は0または最大値を入れておく)。
・通信部102−3の受信部のレジスタには”1”、送信部のレジスタには”2”。
・通信部102−4の受信部のレジスタには”5”(メインのデータフローで使用しない値)、送信部のレジスタには任意の値(何を設定しても良いが、通常は0または最大値を入れておく)。
・通信部102−5の受信部のレジスタには”2”、送信部のレジスタには”3”。
・通信部102−6の受信部のレジスタには”3”、送信部のレジスタには”4”。
【0101】
また、通信部102−5では取り込んだパケットを無効にせずに、そのまま通信部102−6に出力するように設定しておく。具体的には、前述した入力パケット無効化処理をOFFに設定する。
【0102】
以下、データの流れに沿って動作を説明する。上記設定が終わった後に、入力端子151−1からデータを入力すると、入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2の受信部のレジスタ301には”2”が格納されているので、パケットを取り込まずにそのまま通信部102−3へ出力する。
【0103】
通信部102−3には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ処理部103−3で処理Bが施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−4へ出力する。通信部102−4の受信部のレジスタ301には”5”が格納されているので、接続ID”2”のパケットは取り込まずにそのまま通信部102−5へ出力する。
【0104】
通信部102−5の受信部のレジスタ301には”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ部をデータ処理部103−5に入力する。なお、通信部102−5では、モニタのため、取り込んだパケットを無効化せずに、そのまま通信部102−6に出力する。これは、前述した入力パケット無効化処理がOFFに設定されているためである。
【0105】
通信部102−6の受信部のレジスタ301には”3”が格納されているので、接続ID”2”のパケットは取り込まずにそのまま通信部102−1へ出力する。通信部102−1の受信部のレジスタ301には”4”が格納されているので、接続ID”2”のパケットは取り込まずにそのまま通信部102−2へ出力する。通信部102−2には受信部のレジスタ301に”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ部を出力端子152−2より出力する。
【0106】
一方、通信部102−5で取り込まれたパケットのデータ部はデータ処理部103−5で処理Dが施され、通信部102−5に出力される。通信部102−5には送信部のレジスタ401に”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−6へ出力する。
【0107】
通信部102−6には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケットを取り込んでデータ処理部103−6で処理Eが施され、通信部102−6に出力される。通信部102−6の送信部のレジスタ401には”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−1へ出力する。
【0108】
通信部102−1には受信部のレジスタ301に”4”が格納されているので、接続ID”4”のパケットを取り込んでデータ部を出力端子152−1より出力する。このように、入力端子151−1から入力されたデータは、処理B、処理D、処理Eが順次施されて出力端子152−1より出力されと共に、出力端子152−2からは、一連の処理の中間結果である処理Bの出力が得られる。
【0109】
以上説明したように、本実施形態に係るデータ処理装置によれば、データ入出力部を追加することで、複数のデータフローを同時に処理することができる。また、途中のノードのデータも同時に出力可能であるため、処理の中間データを別のデータ処理装置等でも利用できる。
【0110】
なお、上述した実施形態では、通信部102の送信部のレジスタ401に値を設定するようにしているが、これを通信部毎に固定としても良い。例えば、通信部102−1は”1”、通信部102−2は”2”、…、通信部102−mは”m”としてもよい。この場合、シグナルフローグラフの処理を示すアローの先のノード番号が処理毎に固定になるが、アローの元(入力)はプログラム可能であるため、上述と同様の動作が可能である。
【0111】
また、上述した実施形態では、パケットが有効であることを示すvalidフラグを用いたが、これに限られない。例えば、特定の接続ID(例えば”0”)を無効パケットとしても良い。
【0112】
上記のように上述のデータ処理装置は、データ処理を行う複数のデータ処理部と、データの入力および出力を行うデータ入出力部と、データ処理部及びデータ入出力部を接続する複数の通信部を備えている。さらに、
・モジュール毎に接続された通信部の入力部および出力部に処理データの論理的な接続を識別するための接続IDを格納する手段。
・該通信部からデータを出力する際、該通信部の出力部に格納された接続IDをデータに付加するデータ出力手段。
・該通信部の入力部に入力されたデータに付加されている接続IDを該通信部の入力部に格納された接続IDと比較し、接続IDが一致したデータをモジュールに取り込むデータ入力手段。
を備える。このようにデータ処理装置は、データ処理の流れを示すシグナルフローグラフ上のノードを識別する番号(接続ID)を用いてデータパスを制御する。このため、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを実現できるため、各処理モジュールをハードウェア(プログラムで機能を変更できない回路)で構成しても、柔軟な処理を実現できる。また、パケットの消去も処理モジュール毎に制御できるため、リングバスの使用効率も良い。
【技術分野】
【0001】
本発明はデータ処理装置及びその制御方法に関し、特に、複数のデータ処理部へのデータの流れ(データフロー)を制御することで複雑な処理を実現する技術に関する。
【背景技術】
【0002】
従来、プリント画像処理のような一連のデータ処理を高速に効率よく実現するため、全体のデータ処理を所定の機能に分割してハード化し、ハード化されたモジュールを処理の流れ順に接続して一連のデータ処理をパイプライン的に実行する手法が知られている。一方、画像処理においては、一連の処理の順序を変えることで効率的に処理を実現できる。
【0003】
例えば、所定の画素数の出力装置に画像を出力する場合、画素数(解像度)を合わせるため解像度変換が必要となるが、入力画像の画素数が出力装置の画素数よりも多い場合は、処理の上流側で解像度変換を行い、画素数を少なくしてから処理を行った方が良い。他方、入力画像の画素数が出力装置の画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力の直前(下流側)で解像度変換を行った方が画質が良い。
【0004】
また、例えば、ある空間(例えば、入力デバイス空間)から標準的な空間(例えば、解像度600dpi、CIELAB色空間等)に変換して処理を行い、別の空間(例えば、出力デバイス空間)に変換する場合も処理の順序が問題となる。すなわち、入力側と出力側の空間変換部の処理順(1次元LUT、行列演算、3次元LUT等の処理の順序)は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。
【0005】
しかしながら、所定の機能を割り当てたモジュールによってパイプライン処理を行うデータ処理においては、処理の順序を変えることができない。このため、上に例示したような場合は、同じ機能のモジュールを複数実装することで対応しており、リソース活用の点で無駄があった。
【0006】
上記課題を解決するために、各処理モジュール間をリング状のネットワークで接続する構成が提案されている(特許文献1、特許文献2)。これらの手法によれば、リング状ネットワークにてデータの接続先を変更することにより、処理順序の変更が可能である。なお、特許文献2の構成においては、各処理モジュールは各々プロセッサにて実行されるので、各プロセッサのプログラムを変更することによっても処理順序を変更可能である。また、特許文献3にはブロードキャスト通信を用いることで、拡張性、保守性を向上させたデータフロー制御方式が記載されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平01−023340号公報
【特許文献2】特許第2518293号公報
【特許文献3】特許第2834210号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1、特許文献2の記載の構成においては、処理データの接続関係は1対1となる。このため、データパスの分岐(複数モジュールでの同一データの参照)や複数データパスの同時実行、処理モジュールの時分割多重処理等、複雑なデータパスの制御はできなかった。
【0009】
また、特許文献3の構成のようにブロードキャスト通信を用いれば、データパスの分岐(複数モジュールでの同一データの参照)は可能である。しかし、データパスの統合や複数データパスの同時実行、処理モジュールの時分割多重処理等、複雑なデータパスの制御はできなかった。なお、ブロードキャスト通信を用いた場合は、基本的に送信元に戻ってくるまでは送信パケットは消去されないので、リングバスの占有率が増加してしまうという欠点もあった。また、特許文献3の構成では、受信できない状態のモジュールはパケットを消去してしまうため、送信元ではリングを1周分以上待った上で再送処理を開始する。このため、制御が複雑になるだけでなく、転送効率が著しく低下するという欠点もあった。
【0010】
本発明は上記課題に鑑みなされたものであり、簡単な構成によって処理順序の変更を可能にし、更に、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記目的を達成するため、本発明によれば、所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信する受信手段と、次の順序の通信手段へデータを送信する送信手段とを備え、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信し、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する
ことを特徴とするデータ処理装置が提供される。
【発明の効果】
【0012】
本発明によれば、所定の機能が割り当てられている複数のモジュールによってパイプライン処理等をする場合に、簡単な構成によってパイプライン処理等の処理順序の変更が可能な技術を提供できる。
【0013】
また、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を可能にする技術を提供することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態におけるデータ処理装置の一構成例を示すブロック図である。
【図2】通信部の一構成例を示すブロック図である。
【図3】データ受信部の一構成例を示すブロック図である。
【図4】データ送信部の一構成例を示すブロック図である。
【図5】リングバス上を流れるパケットの一構成例を示す図である。
【図6】データ処理部が5個の場合のデータ処理装置の一構成例を示すブロック図である。
【図7】シグナルフローグラフの例を示す図である。
【図8】本発明の実施形態におけるデータ処理装置を有するシステムの構成例を示すブロック図である。
【図9】データ処理装置の制御手順を示すフローチャートである。
【図10】通信部の別の構成例を示すブロック図である。
【図11】本発明の実施形態におけるデータ処理装置の一構成例を示すブロック図である。
【図12】入出力部が2個、データ処理部が5個の場合のデータ処理装置の一構成例を示すブロック図である。
【図13】2つのデータフローを同時処理するシグナルフローグラフの例を示す図である。
【図14】シグナルフローグラフの例を示す図である。
【発明を実施するための形態】
【0015】
以下に本願発明の実施形態を示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲の記載によって規定される本願発明のほんの一部の実施形態にすぎない。従って、本明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明である。なお、便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【0016】
<<実施形態1>>
(データ処理装置の構成)
図1は、本発明の第1の実施形態(実施形態1)におけるデータ処理装置の一構成例を示すブロック図である。図1中、101は処理対象のデータの入力と、処理済みのデータの出力とを行う入出力手段としてのデータ入出力部(入出力部)である。また、102−1〜102−mは通信手段としての通信部(まとめて通信部102)であり、103−2〜103−mは処理手段としてのデータ処理部(処理部。まとめてデータ処理部103)である。
【0017】
通信部102−1〜102−mは、各々隣接する通信部と接続され(但し、通信部102−mは通信部102−1に接続される)、リングバスを構成している。通信部102−1〜102−mはさらに、リングバスとデータ入出力部101またはデータ処理部103−2〜103−mとの間でのデータの送受信を行う。このため、通信部102−2〜102−mには、各々データ処理部103−2〜103−mに接続されている。
【0018】
入力端子151より入力されたデータはデータ入出力部101を介して通信部102−1に入力される。入力されたデータはパケット化されリングバス上を流される。通信部102は予め設定された情報に従って必要なパケットをリングバスより取り込み、取り込んだパケットよりデータ抽出し、データ処理部103に入力する。データ処理部103では、所定のデータ処理(例えば色空間変換や解像度変換等)を行い、処理後のデータを通信部102へ出力する。
【0019】
処理後のデータは通信部102にてパケット化されリングバス上を流される。このように通信部102−2〜102−mによって、予め設定された順番にてデータがデータ処理部103−2〜103−mにて次々に処理されて行く。そして、設定されたデータ処理が終了したデータは通信部102−1にてデータ入出力部101に取り込まれ、出力端子152より出力される。なお、データ入出力部101は、外部の機器(またはモジュール)とのインタフェースを行うものであり、通信部102−1にて直接インタフェース可能な場合は省略可能である。
【0020】
ここで、本実施形態に係るデータ処理装置の動作概要について説明する。本実施形態に係るデータ処理装置では、所定のデータ処理を行う複数のデータ処理部103とデータ入出力部101がそれぞれ対応する通信部102を介して所定の順序でリング状に接続されている。後述するように、通信部102の各々は、前の順序の通信部102からデータを受信する受信部201と、次の順序の通信部102へデータを送信する送信部204とを備えている。また、受信部201及び送信部204の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられている。このような構成において、通信部102は、当該通信部102の受信部201に割り当てられている接続ID情報と同一のID情報を有するパケットを受信した場合は、対応するデータ処理部103で該パケットに対してデータ処理を行わせる。そして、当該通信部102の送信部204に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信部102へ送信する。一方、当該通信部102の受信部201に割り当てられている接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信部102へ送信する。このように、受信部201及び送信部204の各々に接続ID情報を割り振ってパケットの伝達経路を制御することで、複雑なデータパスを有するデータ処理を効率的に実現することができる。以下、通信部102の詳細な構成を説明する。
【0021】
(通信部)
図2は、通信部102の一構成例を示すブロック図である。図2中、201はデータ受信部(受信部)、202はバッファ、203はセレクタ、204はデータ送信部(送信部)である。
【0022】
隣の通信部の出力端子259は、入力端子257に接続され、通信部102−1〜102−mにてリングバスを構成している。また、信号線251,252,253,254,255,256には、対応するデータ処理部103(103−2〜103−mの内の1つ)が接続されている。ただし、通信部102−1の信号線251〜256にはデータ入出力部101が接続されている。
【0023】
図5はリングバス上を流れるパケットの一構成例を示す模式図である。図5中、501はパケットが有効であることを示すvalidフラグであり、502はパケットが受信保留であることを示すstallフラグである。503はデータの送信順を示すカウント値、504はデータの論理的な接続を識別するための接続ID、505は通信部102に入力または出力されるデータである。
【0024】
隣の通信部より入力されたパケットは、バッファ202にて一旦保持され、次のクロックサイクルでセレクタ203に出力される。データ受信部201は、入力端子257のパケットを監視し、
・パケットのvalidフラグが有効である。
・接続ID及びカウント値が受信部201が保持する値と一致する。
・接続されているデータ処理部103がデータの入力が可能である(stall信号253が保留状態でない)。
の全てが成立する場合、このパケットを取り込み、(valid信号251を有効にして)出力端子252よりデータ処理部103へデータを出力する。このとき、データ受信部201は、信号線260を介してバッファ202にデータの取り込みを通知し、バッファ202に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。また、パケット取り込み後、受信部201が保持するカウント値503はインクリメントされる。
【0025】
一方、
・入力パケットのvalidフラグが有効である。
・接続IDとカウント値が一致する。
・接続されているデータ処理部103がデータの入力が不可能である(stall信号253が保留状態)。
の全てが成立する場合、データ受信部201は、信号線260を介してバッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。また、入力パケットのvalidフラグが有効で、接続ID一致してもカウント値が受信部201が保持する値と一致しない場合は、データの取り込みができないので、この場合もstallフラグをセットする。なお、後述の動作例で説明するように、パケットを受信するか否かの判断においてカウント値を評価しなくてもよい。
【0026】
データ送信部204は、バッファ202の出力パケット(信号線258)のvalidフラグを監視する。validフラグが有効のときはリングバス上にデータを出力できないので、データ送信部204は、接続されているデータ処理部103からのデータの出力を保留するためにstall信号254をセットする。なお、validフラグが無効のときは、stall信号254をリセットする。
・接続されているデータ処理部103からデータの出力が可能である(valid信号256が有効の場合)。
・バッファ202の出力パケットのvalidフラグが無効である。
の両方が成り立つ場合、データ送信部204は、validフラグを有効、stallフラグを無効にして、カウント値とレジスタに設定されている接続IDを付加してパケットを生成する。そして、セレクタ203を制御して、出力端子259よりこの生成したパケットをリングバス上に流す。パケット出力後、データ送信部204が保持するカウント値はインクリメントされる。なお、後述の動作例で説明するように、カウント値を評価しない構成ではカウント値のインクリメントは行わなくてもよい。
【0027】
(データ受信部)
図3は、データ受信部201の一構成例を示すブロック図である。図3中、301はレジスタ、302は第1保持手段としてのカウンタ、303は比較部、304は判定部である。
【0028】
比較部303は入力端子257より入力されるリングバス上のパケットのvalidフラグ、接続ID、カウント値を監視する。そして、
・パケットのvalidフラグが有効である。
・パケットの接続IDがレジスタ301に格納されている接続IDと一致する。
・パケットのカウント値がカウンタ302の値と一致する。
が全て成立した場合、valid信号251を有効にする。なお、出力端子252にはこのパケットのデータ部が出力される。また、比較部303は、
・入力されたパケットのvalidフラグが有効で、このパケットの接続IDがレジスタ301に格納されている接続IDと一致したことを示す入力パケット判定信号。
・このパケットのカウント値がカウンタ302の値と一致したことを示すカウント値一致信号。
を判定部304に入力する。判定部304は、入力パケット判定信号とカウント値一致信号、接続されているデータ処理部103からのstall信号253より、データ処理部103がデータを取り込めたかどうかを判定する。データを取り込めたと判定した場合は、信号線260を介してバッファ202にデータの取り込みを通知し、バッファ202に格納されているパケットのvalidフラグをクリアし、パケットを無効化する。なお、後述するように、データの分岐(複数データ処理部での使用)のため、このパケット無効化処理は、CPU等によってON/OFF可能となっている。
【0029】
データ取り込み通知信号はカウンタ302にも入力され、データを取り込めたと判定した場合、次のデータを取得するために、次のクロックサイクルでカウンタ302のカウント値をインクリメント(+1)する。一方、入力パケット判定信号とカウント値一致信号、接続されているデータ処理部103からのstall信号253より、取り込むべきデータが取り込めないと判定した場合は、信号線260を介して、バッファ202にデータの保留を通知する。さらに、バッファ202に格納されるパケットのstallフラグをセットする。また、入力パケット判定信号とカウント値一致信号より、取り込み対象パケットであるがデータの取り込み順序が正しくないと判定した場合も同様である。すなわち、信号線260を介して、バッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。なお、ここではカウント値を評価する場合について説明したが、カウント値を評価しない場合はカウント値に関する信号は送受信する必要がない。
【0030】
(データ送信部)
図4は、データ送信部204の一構成例を示すブロック図である。図4中、401はレジスタ、402は第2保持手段としてのカウンタ、403は比較部、404はパケット生成部である。
【0031】
比較部403は、バッファ202の出力パケット(信号線258)のvalidフラグとstallフラグ、接続IDを監視する。validフラグが有効のときは、リングバス上にデータを出力できないので、接続されているデータ処理部103からのデータ出力を保留するためにstall信号254をセットする。なお、validフラグが無効のときは、stall信号254をリセットする。
【0032】
また、比較部403は、
・バッファ202の出力パケットのvalidフラグが有効かつstallフラグが保留を示していない。
・バッファ202の出力パケットの接続IDがレジスタ401に格納されている接続IDと一致した。
の両方が成立した場合は、自身が出力したパケットが保留されずに戻ってきたと判定する。そして、パケット生成部404を介してセレクタ203を制御し、validフラグを無効にしてパケットを無効化する。この場合も、パケットの出力が可能となるので、stall信号254をリセットする。
【0033】
パケット生成部404は、接続されているデータ処理部103のvalid信号256を参照する。データ処理部103からデータの出力が可能と判定した場合(valid信号256が有効の場合)は、バッファ202の出力パケットが、
・その出力パケットのvalidフラグが無効である場合。
・無効化するパケット(validフラグが有効かつstallフラグが保留を示していないときで、パケットの接続IDがレジスタ401に格納されている接続IDと一致したパケット)の場合。
のいずれかの場合、validフラグを有効、stallフラグを無効にして、カウンタ402のカウント値とレジスタ401に設定されている接続IDを付加してパケットを生成する。そして、セレクタ203を制御して、出力端子259より生成したパケットをリングバス上に流す。さらに、次のクロックサイクルでカウンタ402のカウント値をインクリメント(+1)する。なお、送信部204のカウンタ402とこの送信部のパケットを受信する受信部201のカウンタ302は、同期を取るため、データ転送開始前に同じ値に初期化される。なお、ここではカウント値を評価する場合について説明したが、カウント値を評価しない場合はカウント値に関する処理は実行する必要がない。
【0034】
(データ処理装置の動作)
次に、本実施形態に係るデータ処理装置の動作について図面を参照して説明する。図6はデータ処理部が5個の場合のブロック図である。図示したように各データ処理部103−2〜103−6では、各々処理部A〜処理部Eで示される処理が入力データに対し施されるものとする。以下では説明を簡略化するため、データ処理部103、入出力部101では入力データの保留が発生しない場合を説明する。この場合は、パケットのstallフラグ、カウント値は不要となる。このような構成の動作について、シグナルフローグラフを用いて説明する。シグナルフローグラフにおいては、ノードを「丸」で示し、処理を「アーク(矢印)」で示す。
【0035】
●動作例1
まず、単純に処理A、処理B、処理C、処理D、処理Eの順に処理されるとすると、シグナルフローグラフは図7(a)に示すようになる。この時、
・処理部A(データ処理部103−2)の通信部102−2の受信部201のレジスタ(レジスタ301)には”1”を格納しておき、通信部102−2の送信部204のレジスタ(レジスタ401)には”2”を格納しておく。
同様に、
・通信部102−3の受信部201のレジスタには”2”、送信部204のレジスタには”3”を格納しておく。
・通信部102−4の受信部201のレジスタには”3”、送信部204のレジスタには”4”を格納しておく。
・通信部102−5の受信部201のレジスタには”4”、送信部204のレジスタには”5”を格納しておく。
・通信部102−6の受信部201のレジスタには”5”、送信部204のレジスタには”6”を格納しておく。
【0036】
入力端子151はノード”1”に対応し、出力端子152はノード”6”に対応するので、通信部102−1の受信部201のレジスタには”6”を格納しておき、送信部204のレジスタには”1”を、格納しておく。
【0037】
入力端子151から入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ部をデータ処理部103−2に入力する。入力されたデータはデータ処理部103−2で処理Aが施され、通信部102−2に出力される。通信部102−2には送信部のレジスタ401に”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−3へ出力する。
【0038】
通信部102−3には受信部のレジスタ301に”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ処理部103−3で処理Bが施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−4へ出力する。
【0039】
同様に、通信部102−4では接続ID”3”のパケットを取り込んでデータ処理部103−4で処理Cが施され、接続ID”4”のパケットを生成して通信部102−5へ出力する。通信部102−5では接続ID”4”のパケットを取り込んでデータ処理部103−5で処理Dが施され、接続ID”5”のパケットを生成して通信部102−6へ出力する。通信部102−6では接続ID”5”のパケットを取り込んでデータ処理部103−6で処理Eが施され、接続ID”6”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。このようにして、入力されたデータは、処理A、処理B、処理C、処理D、処理Eの順に処理され出力される。
【0040】
●動作例2
図7(b)は処理B、処理Cの順序を逆にしたシグナルフローグラフである。この場合は、通信部102−3の受信部201のレジスタには”3”、送信部204のレジスタには”4”を格納しておく。そして、通信部102−4の受信部201のレジスタには”2”、送信部204のレジスタには”3”を格納しておく。その他は図7(a)の例と同じであるので省略する。
【0041】
入力端子151から入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2では接続ID”1”のパケットを取り込んでデータ処理部103−2で処理Aが施され、接続ID”2”のパケットを生成して通信部102−3へ出力する。
【0042】
通信部102−3には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケット以外は取り込まずにそのまま通信部102−4へ出力する。従って、上記接続ID”2”のパケットは何も処理されずに通信部102−4へ出力される。通信部102−4では接続ID”2”のパケットを取り込んでデータ処理部103−4で処理Cが施され、接続ID”3”のパケットを生成して通信部102−5へ出力する。
【0043】
通信部102−5には受信部のレジスタ301に”4”が格納されているので、接続ID”3”のパケットは取り込まずにそのまま通信部102−4へ出力する。同様に、通信部102−6、通信部102−1、通信部102−2においても、何も処理されない。従って、通信部102−4がパケットを出力してから4クロックサイクル後に通信部102−3に接続ID”3”のパケットが到達し、取り込まれてデータ処理部103−3で処理Bが施され、接続ID”4”のパケットを生成して通信部102−4へ出力する。
【0044】
通信部102−4には受信部のレジスタ301に”2”が格納されているので、接続ID”4”のパケットは取り込まずにそのまま通信部102−5へ出力する。通信部102−5では接続ID”4”のパケットを取り込んでデータ処理部103−5で処理Dが施され、接続ID”5”のパケットを生成して通信部102−6へ出力する。通信部102−6では接続ID”5”のパケットを取り込んでデータ処理部103−6で処理Eが施され、接続ID”6”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。このようにして、入力されたデータは、処理A、処理C、処理B、処理D、処理Eの順に処理され出力される。
【0045】
●動作例3
図7(c)は処理D、処理Eを削除したシグナルフローグラフである。この場合は、通信部102−4の送信部204のレジスタを”6”に変更するだけでよい。その他は図7(a)の例と同じであるので省略する。なお、通信部102−5および通信部102−6の受信部201のレジスタには、パケットが取り込まれないようにシグナルフローグラフで使用されていない値を設定しておく。
【0046】
●動作例4
図7(d)は分岐・統合のあるシグナルフローグラフの例である。このようなシグナルフローは、例えば、
(1)同じ画像から、一方はLPF(ローパスフィルタ)をかけて低周波成分を取り出して処理をし、もう一方はHPF(ハイパスフィルタ)をかけて高周波成分を取り出して処理をする。
(2)画像の低周波成分と高周波成分を合成して出力画像を生成する。
といった処理を行う場合に有効である。以下では、分岐・統合を伴う処理をカウント値を用いて実行する場合について説明する。
【0047】
通信部102−6にて、分岐されて処理された2系統のデータが同期されて取り込まれるように、処理開始前に、通信部102−3の送信部のカウンタ402は”0”に初期化され、通信部102−5の送信部のカウンタ402は”1”に初期化される。また、上記2つのカウンタは、増分2でカウントアップ(即ち、パケット出力する度に+2)される。このようにカウンタを設定することで、通信部102−3の出力と通信部102−5の出力を通信部102−6で交互に受け取ることが可能となる。また、通信部102−2にて取り込むパケットは通信部102−4でも取り込まなければならないので、通信部102−2では取り込んだパケットを無効にせずに、そのまま通信部102−3に出力するように設定しておく。すなわち、前述した入力パケット無効化処理をOFFに設定する。
【0048】
次に、データの流れに沿って動作を説明する。入力端子151から入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ部をデータ処理部103−2に入力する。また、通信部102−2は、データ分岐のため入力パケット無効化処理がOFFに設定されており、取り込んだパケットは無効化(消去)せずに、そのまま通信部102−3に出力される。一方、入力されたデータはデータ処理部103−2で処理Aが施され、通信部102−2に出力される。通信部102−2には送信部のレジスタ401に”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−3へ出力する。
【0049】
通信部102−3では接続ID”2”のパケットを取り込んでデータ処理部103−3で処理Bが施され、接続ID”3”のパケットを生成して通信部102−4へ出力する。このとき、カウント値としては、初期値の”0”が付加される。また、送信部のカウンタ402は次のパケットの送信のために増分2でカウントアップ(即ち、パケット出力する度に+2)される。
【0050】
通信部102−4には受信部のレジスタ301に”1”が格納されているので、接続ID”3”のパケットは取り込まずにそのまま通信部102−5へ出力する。同様に、通信部102−5においても何も処理されずにそのまま通信部102−6へ出力する。
【0051】
通信部102−6には受信部のレジスタ301に”3”が格納されており、受信部のカウンタ302は”0”に初期化されているので、接続ID”3”かつカウント値”0”のパケットを取り込んでデータ部をデータ処理部103−6に入力する。この時、次に処理Dが施されたデータを受け取るため、受信部のカウンタ302はインクリメント(+1)される。
【0052】
通信部102−2で分岐されたパケットは、接続ID”1”であるので、通信部102−3では何もせずに通信部102−4に出力される。通信部102−4には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ部をデータ処理部103−4に入力する。なお、このパケットは他のデータ処理部ではもう使用しないので、リングバスの有効利用のため無効化処理される。入力されたデータはデータ処理部103−4で処理Cが施され、通信部102−4に出力される。通信部102−4には送信部のレジスタ401に”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−5へ出力する。
【0053】
通信部102−5では接続ID”4”のパケットを取り込んでデータ処理部103−5で処理Dが施され、接続ID”3”のパケットを生成して通信部102−6へ出力する。このとき、カウント値としては、初期値の”1”が付加される。また、送信部のカウンタ402は次のパケットの送信のために増分2でカウントアップ(即ち、パケット出力する度に+2)される。
【0054】
通信部102−6には受信部のレジスタ301に”3”が格納されており、受信部のカウンタ302はインクリメントされて”1”になっているので、接続ID”3”かつカウント値”1”のパケットを取り込んでデータ部をデータ処理部103−6に入力する。この時、次に処理Bが施されたデータを受け取るため、受信部のカウンタ302はインクリメント(+1)される。
【0055】
データ処理部103−6には、上記操作により、偶数番目には処理A、処理Bが施されたデータが、奇数番目には処理C、処理Dが施されたデータが順次入力される。これらのデータをデータ処理部103−6(処理E)にて合成(統合)し、結果を通信部102−6に出力する。通信部102−6の送信部のレジスタ401には”6”が格納されているので、接続ID”6”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。入力されたデータは、処理A〜処理Bと処理C〜処理Dの2系統に分岐して処理され、処理Eにて合成処理されて出力される。
【0056】
●動作例5
同様に、カウント値によって分岐させたり、特定の間隔のデータを別処理させたりすることも可能である。例えば、偶数画素と奇数画素とに分離し、異なる処理を施すことも簡単にできる。図7(d)のシグナルフローグラフにおいて、偶数画素は処理A〜処理Bを行い、奇数画素は処理C〜処理Dの処理を行い、処理Eの入力にて統合されて処理Eが行われる例にて説明する。
【0057】
この場合も動作例4と同様に、分岐・処理された2系統のデータが通信部102−6で同期されて取り込まれるように、処理開始前に、通信部102−3の送信部のカウンタ402は”0”、通信部102−5の送信部のカウンタ402は”1”に初期化される。また、上記2つのカウンタは、増分2でカウントアップ(即ち、パケット出力する度に+2)される。これに加えて、偶数画素と奇数画素とに分離して処理されるように、処理開始前に、通信部102−2の受信部のカウンタ302は”0”に初期化され、通信部102−4の受信部のカウンタ302は”1”に初期化される。また、上記2つのカウンタは、増分2でカウントアップ(即ち、パケットを取り込む度に+2)される。このように設定することで、偶数のカウント値のパケットは通信部102−2で取り込まれ、奇数のカウント値のパケットは通信部102−4で取り込まれる。なお、この場合は、同じデータを参照するわけではないので、取り込んだパケットを無効化してよい(入力パケット無効化処理をONに設定)。
【0058】
(システム構成例)
図8は、本実施形態に係るデータ処理装置を有するシステムの構成例を示す。1100はシステム制御部であり、演算制御用のCPU1101、固定データやプログラムを格納するROM1102、データの一時保存やプログラムのロードに使用されるRAM1103および、外部データを保持する外部記憶装置1104等を備える。
【0059】
1110は、処理すべきデータをシステム外部から取り込むデータ入力部である。たとえばイメージスキャナおよびA/D変換器などのデバイスを有する画像読み込み装置や、マイクおよびA/D変換などのデバイスを有する音声入力装置などであってもよい。
【0060】
1120は、本実施形態に係るデータ処理装置である。1130は、本システムにおいて処理されたデータを外部に出力するデータ出力部である。例えば、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置であったり、音声データをD/A変換器等を通して出力する音声出力装置であってもよい。
【0061】
データ入力部1110において入力されたデータは、システム制御部に送られてCPU1101で処理されてもよいし、そのままRAM1103や外部記憶装置1104に一時記録されてもよい。よって、データ処理装置1120は、データ入力部1110からの入力データを直接受け取って処理を行っても、システム制御部1100からの指示ならびにデータ供給によって処理を行ってもよい。
【0062】
また、データ処理装置1120の出力は、再度システム制御部1100に送られても、また、直接データ出力部1130に送られてもよい。データ処理装置1120は、システム制御部1100の制御によって、様々なデータ処理内容を設定され、そして様々な処理データを供給されて、設定に応じた処理を実行し、処理したデータを外部に出力する。
【0063】
(制御手順)
図9に、システム制御部からのデータ処理装置1120の制御手順を示す。制御処理が開始されると、ステップS1210において、データ処理装置1120のリセットが行われる。この時、リングバスを構成するバッファ202、接続IDを設定するレジスタ301、レジスタ401、データ順を示すカウンタ302、カウンタ402、不図示のカウンタ増分レジスタ、パケット無効化設定レジスタ等が初期化される。
【0064】
ステップS1220において、通信部の接続IDを格納するレジスタ301、レジスタ401が設定される。また、必要に応じて、データ順を示すカウンタ302、カウンタ402の初期値や増分、パケット無効化設定レジスタ等が設定される。
【0065】
ステップS1230において、データ処理部に対するパラメータ指定などが行われる。次に、ステップS1240において、データ処理装置1120の起動指示が行われる。
【0066】
ステップS1250では、データ処理装置1120の終了通知を監視する処理が行われ、これはステップS1260において、処理終了が検知されたことを判断するまで繰り返される。ステップS1260において、データ処理装置1120の終了通知が確認されると(ステップS1260でYES)、処理を終了する。
【0067】
以上説明したように、本実施形態に係るデータ処理装置は、シグナルフローグラフでのノード番号を通信部のレジスタに設定し、このノード番号を用いてデータフローを制御する。これにより、多様なシグナルフローグラフに対応するデータフローを構成することが可能となる。
【0068】
また、本実施形態では、通信部102の少なくともいずれか一つが備える送信部204は、カウンタ値を保持するカウンタ402を備えている。そして、対応する受信部201に割り当てられている接続ID情報と同一のID情報を有するパケットを受信した場合は、データ処理済みのパケットに対してカウンタ402が保持するカウンタ値を設定して次の順序の通信部102へ送信する。さらに、カウンタ402が保持するカウンタ値を第1の値だけ増分する。一方、通信部102の少なくともいずれか一つが備える受信部201も、カウンタ値を保持するカウンタ302を備えている。そして、通信部102は、
・当該通信部102の受信部201に割り当てられている接続ID情報と同一のID情報。
・当該受信部201のカウンタ302が保持するカウンタ値と同一のカウンタ値。
の両方を有するパケットを受信した場合のみ、対応するデータ処理部103で該パケットに対してデータ処理を行わせ、カウンタ302が保持するカウンタ値を第2の値だけ増分する。したがって、本実施形態によれば、
・送信部及び受信部に割り当てる接続ID情報。
・カウンタ値を増分する送信部及び受信部、カウンタの増分値(第1の増分値、第2の増分値)。
などを適切に設定することで、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを有するデータ処理を実行することができる。
【0069】
また、通信部102の少なくともいずれか一つは、当該通信部102の受信部201に割り当てられている接続ID情報と同一のID情報を有するパケットを受信した場合、
・当該通信部102の送信部204に割り当てられている接続ID情報が設定されたデータ処理済みのパケットを次の順序の通信部102へ送信する。
とともに、
・受信した該パケットをID情報を変更せずに次の順序の通信部102へ送信する。
このため、同一のデータに対して、別のデータ処理部103を用いてそれぞれ別個のデータ処理を行ったり、あるデータ処理部のデータ処理結果を監視(モニタ)したりすることが可能になる。
【0070】
なお、カウンタ402やカウンタ302が保持するカウンタ値を初期化する(第1初期化、第2初期化)ようにしてもよい。あるいは、カウンタ402の増分値(第1の値)やカウンタ302の増分値(第2の値)を設定する(第1設定、第2設定)ようにしてもよい。この設定は、ユーザの指示入力や、当該設定の詳細を示すデータを記憶装置から読み出すことによって行うことができる。これにより、データ処理を任意にカスタマイズすることができる。
【0071】
また、本実施形態では、通信部102の受信部201と送信部204とに対して割り当てる接続ID情報を記憶するレジスタ(記憶手段)を備えている。このため、レジスタの記憶内容を適切に設定することで、データ処理のフローを任意にカスタマイズすることができる。
【0072】
なお、上述した説明においては、通信部102のバッファを受信部201と送信部203の間に配置しているが、これに限らず、例えば、図10に示すように、セレクタ203の後段に配置するようにしても良い。この場合、パケットの保留のためのstallフラグの設定や、受信パケットの無効化のためのvalidフラグのクリアは送信部1304を介してセレクタ203にて行う。あるいは、バッファで受けた後で、受信部、送信部の処理を行っても良い。
【0073】
<<実施形態2>>
図11は、本発明の第2の実施形態(実施形態2)におけるデータ処理装置の一構成例を示すブロック図である。図11中、101−1〜101−nはn個のデータ入出力部、102−1〜102−n+mはn+m個の通信部、103−1〜103−mはm個のデータ処理部である。
【0074】
本実施形態では、複数の異なるデータパスを同時に実現するため、データ入出力部101を追加したものである。なお、データ入出力部101、通信部102、データ処理部103各々の動作については、実施形態1と同様であるため、説明を省略する。
【0075】
次に、シグナルフローグラフを用いて、動作を説明する。説明を簡略化するため、図12に示すようにデータ入出力部を2つ、データ処理部を4つでデータ処理装置を構成した例を用い、2つのデータパスを同時に処理する場合の動作を説明する。
【0076】
●動作例1
図13のデータフロー(a)、データフロー(b)を同時処理する場合を説明する。まず、データフロー(a)を構成するため、処理部B(データ処理部103−3)の通信部102−3の受信部のレジスタ(レジスタ301)には”1”を格納しておき、通信部102−3の送信部のレジスタ(レジスタ401)には”3”を格納しておく。処理部D(データ処理部103−5)の通信部102−5の受信部のレジスタには”3”、送信部のレジスタには”5”を格納しておく。入力端子151−1はノード”1”に対応し、出力端子152−1はノード”5”に対応するので、通信部102−1の受信部のレジスタには”5”を格納しておき、送信部のレジスタには”1”を、格納しておく。
【0077】
次に、データフロー(b)を構成するため、処理部C(データ処理部103−4)の通信部102−4の受信部のレジスタ(レジスタ301)には”2”を格納しておき、通信部102−4の送信部のレジスタ(レジスタ401)には”4”を格納しておく。処理部E(データ処理部103−6)の通信部102−6の受信部のレジスタには”4”、送信部のレジスタには”6”を格納しておく。入力端子151−2はノード”2”に対応し、出力端子152−2はノード”6”に対応するので、通信部102−1の受信部のレジスタには”6”を格納しておき、送信部のレジスタには”2”を、格納しておく。
【0078】
・データフロー(a)
上記設定が終わった後に、入力端子151−1からデータを入力すると、入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2の受信部のレジスタ301には”6”が格納されているので、パケットを取り込まずにそのまま通信部102−3へ出力する。
【0079】
通信部102−3には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ処理部103−3で処理Bが施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−4へ出力する。
【0080】
通信部102−4の受信部のレジスタ301には”2”が格納されているので、パケットを取り込まずにそのまま通信部102−5へ出力する。通信部102−5には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケットを取り込んでデータ処理部103−5で処理Dが施され、通信部102−5に出力される。通信部102−5の送信部のレジスタ401には”5”が格納されているので、接続ID”5”のパケットを生成して通信部102−6へ出力する。
【0081】
通信部102−6の受信部のレジスタ301には”4”が格納されているので、パケットを取り込まずにそのまま通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”5”が格納されているので、接続ID”5”のパケットを取り込んでデータ部を出力端子152−1より出力する。このように、入力端子151−1から入力されたデータは、処理B、処理Dが順次施されて出力端子152−1より出力される。
【0082】
・データフロー(b)
一方、入力端子151−2からデータを入力すると、入力されたデータには通信部102−2にて接続ID”2”が付加され、通信部102−3に出力される。通信部102−3の受信部のレジスタ301には”1”が格納されているので、パケットを取り込まずにそのまま通信部102−4へ出力する。
【0083】
通信部102−4には受信部のレジスタ301に”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ処理部103−4で処理Cが施され、通信部102−4に出力される。通信部102−4の送信部のレジスタ401には”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−5へ出力する。
【0084】
通信部102−5の受信部のレジスタ301には”3”が格納されているので、パケットを取り込まずにそのまま通信部102−6へ出力する。通信部102−6には受信部のレジスタ301に”4”が格納されているので、接続ID”4”のパケットを取り込んでデータ処理部103−6で処理Eが施され、通信部102−6に出力される。通信部102−6の送信部のレジスタ401には”6”が格納されているので、接続ID”6”のパケットを生成して通信部102−1へ出力する。
【0085】
通信部102−1の受信部のレジスタ301には”5”が格納されているので、パケットを取り込まずにそのまま通信部102−2へ出力する。通信部102−2には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152−2より出力する。
【0086】
このように、入力端子151−2から入力されたデータは、処理C、処理Eが順次施されて出力端子152−2より出力される。従って、入力端子151−1および入力端子151−2にデータを同時に入力しても、設定したデータフローによる処理が実行されて、各々出力端子152−1、出力端子152−2より出力されることがわかる。
【0087】
●動作例2
次に、所定画素数毎にデータをサンプリングして、別系統で出力する場合について説明する。例えば、一方の処理ではJPEG圧縮を行い、他方の処理ではJPEG圧縮時にDC成分のみ取り出して、縮小画像を生成するような場合について説明する。まず、メインのデータフローではYCCの輝度・色差フォーマットにて入力し、処理BでDCT変換を行い、処理Dで量子化とジグザグスキャン変換を行い、処理Eで可変長符号化を行うようにしてJPEG圧縮を行う。一方、サブのデータフローでは、処理Bの出力からDC成分のみ抽出して処理Cにて色変換してRGBデータに変換して、縮小画像を得る。
【0088】
従って、このような処理のシグナルフローグラフは図14(a)のようになる。但し、処理Cでは、DC成分のみ抽出するので、受信部102−4のカウンタ302は増分64でインクリメント(即ち、データを取り込む度に+64)される。また、処理Cの入力データであるDC成分は、処理Dでも使用するので、通信部102−4では取り込んだパケットを無効にせずに、そのまま通信部102−5に出力するように設定しておく。すなわち、前述した入力パケット無効化処理をOFFに設定する。
【0089】
各通信部102の受信部のレジスタおよび、送信部のレジスタには以下の値を設定しておく。
・通信部102−1の受信部のレジスタには”4”、送信部のレジスタには”1”。
・通信部102−2の受信部のレジスタには”5”、送信部のレジスタには任意値(何を設定しても良いが、通常は0または最大値を入れておく)。
・通信部102−3の受信部のレジスタには”1”、送信部のレジスタには”2”。
・通信部102−4の受信部のレジスタには”2”、送信部のレジスタには”5”。
・通信部102−5の受信部のレジスタには”2”、送信部のレジスタには”3”。
・通信部102−6の受信部のレジスタには”3”、送信部のレジスタには”4”。
【0090】
以下、データの流れに沿って動作を説明する。上記設定が終わった後に、入力端子151−1からデータを入力すると、入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2の受信部のレジスタ301には”5”が格納されているので、パケットを取り込まずにそのまま通信部102−3へ出力する。
【0091】
通信部102−3には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ処理部103−3で処理B(DCT変換)が施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”2”が格納されており、処理開始前に、通信部102−3の送信部のカウンタ402は”0”に初期化されているので、接続ID”2”でカウント値”0”のパケットを生成して通信部102−4へ出力する。パケット出力後、通信部102−3の送信部のカウンタ402は次のデータの出力のため、インクリメント(+1)される。
【0092】
通信部102−4の受信部のレジスタ301には”2”が格納されており、通信部102−4の受信部のカウンタ302は”0”に初期化されている。このため、接続ID”2”でカウント値”0”のパケットを取り込んでデータ部をデータ処理部103−4に入力する。この時、次のDC成分を受け取るため、受信部のカウンタ302は+64される。また、通信部102−4は、データ分岐のため入力パケット無効化処理をOFFに設定されており、取り込んだパケットは無効化(消去)せずに、そのまま通信部102−5に出力される。
【0093】
データ処理部103−4に入力されたデータは処理C(色変換)が施され、通信部102−4に出力される。通信部102−4には送信部のレジスタ401に”5”が格納されているので、接続ID”5”のパケットを生成して通信部102−5へ出力する。
【0094】
通信部102−5には受信部のレジスタ301に”2”が格納されているので、接続ID”5”のパケットは取り込まずにそのまま通信部102−6へ出力する。通信部102−6には受信部のレジスタ301に”3”が格納されているので、そのまま通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”3”が格納されているので、そのまま通信部102−2へ出力する。
【0095】
通信部102−2には受信部のレジスタ301に”5”が格納されているので、接続ID”5”のパケットを取り込んでデータ部を出力端子152−2より出力する。このように、入力端子151−1から入力されたデータは、処理Bにて処理された後、64画素毎に抽出され、処理Cが施されて出力端子152−2より出力される。
【0096】
一方、通信部102−5の受信部のレジスタ301には”2”が格納されており、通信部102−5の受信部のカウンタ302は”0”に初期化されている。このため、接続ID”2”でカウント値”0”のパケットを取り込んでデータ部をデータ処理部103−5に入力する。この時、次のデータ(AC成分)を受け取るため、受信部のカウンタ302は+1される。また、通信部102−5では、取り込んだパケットは以降の処理では使用されないので、入力パケット無効化処理はONに設定されており、取り込んだパケットは無効化(消去)される。
【0097】
データ処理部103−5に入力されたデータは処理D(量子化とジグザグスキャン変換)が施され、通信部102−5に出力される。通信部102−5には送信部のレジスタ401に”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−6へ出力する。
【0098】
通信部102−6には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケットを取り込んでデータ処理部103−6で処理E(可変長符号化)が施され、通信部102−6に出力される。通信部102−6の送信部のレジスタ401には”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−1へ出力する。通信部102−1には受信部のレジスタ301に”4”が格納されているので、接続ID”4”のパケットを取り込んでデータ部を出力端子152−1より出力する。このように、入力端子151−1から入力されたデータは、処理B、処理D、処理Eが順次施されて出力端子152−1より出力される。
【0099】
●動作例3
次に、任意のデータ処理部の出力を別系統で出力する場合について説明する。図14(b)のシグナルフローグラフは図14(a)のシグナルフローグラフから、処理Cを削除したものである。従って、入出力部101−2は使用されていないので、任意のノードのモニタが可能である。以下では図14(b)のシグナルフローグラフのノード2のモニタ出力を出力端子152−2より出力させる方法について説明する。なお、モニタするノードは2重丸にして区別している。
【0100】
各通信部102の受信部のレジスタおよび、送信部のレジスタには以下の値を設定しておく。
・通信部102−1の受信部のレジスタには”4”、送信部のレジスタには”1”。
・通信部102−2の受信部のレジスタには”2”、送信部のレジスタには任意の値(何を設定しても良いが、通常は0または最大値を入れておく)。
・通信部102−3の受信部のレジスタには”1”、送信部のレジスタには”2”。
・通信部102−4の受信部のレジスタには”5”(メインのデータフローで使用しない値)、送信部のレジスタには任意の値(何を設定しても良いが、通常は0または最大値を入れておく)。
・通信部102−5の受信部のレジスタには”2”、送信部のレジスタには”3”。
・通信部102−6の受信部のレジスタには”3”、送信部のレジスタには”4”。
【0101】
また、通信部102−5では取り込んだパケットを無効にせずに、そのまま通信部102−6に出力するように設定しておく。具体的には、前述した入力パケット無効化処理をOFFに設定する。
【0102】
以下、データの流れに沿って動作を説明する。上記設定が終わった後に、入力端子151−1からデータを入力すると、入力されたデータには通信部102−1にて接続ID”1”が付加され、通信部102−2に出力される。通信部102−2の受信部のレジスタ301には”2”が格納されているので、パケットを取り込まずにそのまま通信部102−3へ出力する。
【0103】
通信部102−3には受信部のレジスタ301に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ処理部103−3で処理Bが施され、通信部102−3に出力される。通信部102−3の送信部のレジスタ401には”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−4へ出力する。通信部102−4の受信部のレジスタ301には”5”が格納されているので、接続ID”2”のパケットは取り込まずにそのまま通信部102−5へ出力する。
【0104】
通信部102−5の受信部のレジスタ301には”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ部をデータ処理部103−5に入力する。なお、通信部102−5では、モニタのため、取り込んだパケットを無効化せずに、そのまま通信部102−6に出力する。これは、前述した入力パケット無効化処理がOFFに設定されているためである。
【0105】
通信部102−6の受信部のレジスタ301には”3”が格納されているので、接続ID”2”のパケットは取り込まずにそのまま通信部102−1へ出力する。通信部102−1の受信部のレジスタ301には”4”が格納されているので、接続ID”2”のパケットは取り込まずにそのまま通信部102−2へ出力する。通信部102−2には受信部のレジスタ301に”2”が格納されているので、接続ID”2”のパケットを取り込んでデータ部を出力端子152−2より出力する。
【0106】
一方、通信部102−5で取り込まれたパケットのデータ部はデータ処理部103−5で処理Dが施され、通信部102−5に出力される。通信部102−5には送信部のレジスタ401に”3”が格納されているので、接続ID”3”のパケットを生成して通信部102−6へ出力する。
【0107】
通信部102−6には受信部のレジスタ301に”3”が格納されているので、接続ID”3”のパケットを取り込んでデータ処理部103−6で処理Eが施され、通信部102−6に出力される。通信部102−6の送信部のレジスタ401には”4”が格納されているので、接続ID”4”のパケットを生成して通信部102−1へ出力する。
【0108】
通信部102−1には受信部のレジスタ301に”4”が格納されているので、接続ID”4”のパケットを取り込んでデータ部を出力端子152−1より出力する。このように、入力端子151−1から入力されたデータは、処理B、処理D、処理Eが順次施されて出力端子152−1より出力されと共に、出力端子152−2からは、一連の処理の中間結果である処理Bの出力が得られる。
【0109】
以上説明したように、本実施形態に係るデータ処理装置によれば、データ入出力部を追加することで、複数のデータフローを同時に処理することができる。また、途中のノードのデータも同時に出力可能であるため、処理の中間データを別のデータ処理装置等でも利用できる。
【0110】
なお、上述した実施形態では、通信部102の送信部のレジスタ401に値を設定するようにしているが、これを通信部毎に固定としても良い。例えば、通信部102−1は”1”、通信部102−2は”2”、…、通信部102−mは”m”としてもよい。この場合、シグナルフローグラフの処理を示すアローの先のノード番号が処理毎に固定になるが、アローの元(入力)はプログラム可能であるため、上述と同様の動作が可能である。
【0111】
また、上述した実施形態では、パケットが有効であることを示すvalidフラグを用いたが、これに限られない。例えば、特定の接続ID(例えば”0”)を無効パケットとしても良い。
【0112】
上記のように上述のデータ処理装置は、データ処理を行う複数のデータ処理部と、データの入力および出力を行うデータ入出力部と、データ処理部及びデータ入出力部を接続する複数の通信部を備えている。さらに、
・モジュール毎に接続された通信部の入力部および出力部に処理データの論理的な接続を識別するための接続IDを格納する手段。
・該通信部からデータを出力する際、該通信部の出力部に格納された接続IDをデータに付加するデータ出力手段。
・該通信部の入力部に入力されたデータに付加されている接続IDを該通信部の入力部に格納された接続IDと比較し、接続IDが一致したデータをモジュールに取り込むデータ入力手段。
を備える。このようにデータ処理装置は、データ処理の流れを示すシグナルフローグラフ上のノードを識別する番号(接続ID)を用いてデータパスを制御する。このため、データパスの分岐や統合、複数データパスの同時実行等、複雑なデータパスを実現できるため、各処理モジュールをハードウェア(プログラムで機能を変更できない回路)で構成しても、柔軟な処理を実現できる。また、パケットの消去も処理モジュール毎に制御できるため、リングバスの使用効率も良い。
【特許請求の範囲】
【請求項1】
所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信する受信手段と、次の順序の通信手段へデータを送信する送信手段とを備え、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信し、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する
ことを特徴とするデータ処理装置。
【請求項2】
前記通信手段の少なくともいずれか一つが備える送信手段は、
カウンタ値を保持する第1保持手段を備え、
対応する前記受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、前記データ処理済みのパケットに対して前記第1保持手段が保持する前記カウンタ値を設定して次の順序の通信手段へ送信し、前記第1保持手段が保持するカウンタ値を第1の値だけ増分し、
前記通信手段の少なくともいずれか一つの受信手段は、カウンタ値を保持する第2保持手段を備え、
前記通信手段は、当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報と、当該受信手段の前記第2保持手段が保持する前記カウンタ値と同一のカウンタ値との両方を有するパケットを受信した場合のみ、対応する前記処理手段で該パケットに対してデータ処理を行わせ、前記第2保持手段が保持するカウンタ値を第2の値だけ増分する
ことを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記第1保持手段が保持するカウンタ値を初期化する第1初期化手段と、
前記第2保持手段が保持するカウンタ値を初期化する第2初期化手段と、
をさらに備えることを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記第1の値を設定する第1設定手段と、
前記第2の値を設定する第2設定手段と、
をさらに備えることを特徴とする請求項2又は3に記載のデータ処理装置。
【請求項5】
前記通信手段の少なくともいずれか一つは、当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合、当該通信手段の送信手段に割り当てられている接続ID情報が設定された前記データ処理済みのパケットを次の順序の通信手段へ送信するとともに、受信した該パケットをID情報を変更せずに次の順序の通信手段へ送信する
ことを特徴とする請求項1から4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記処理手段の少なくともいずれか一つは、処理対象のデータの入力と、処理済みのデータの出力とを行う入出力手段である
ことを特徴とする請求項1から5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記通信手段の前記受信手段と前記送信手段とに対して割り当てる前記接続ID情報を記憶する記憶手段をさらに備える
ことを特徴とする請求項1から6のいずれか1項に記載のデータ処理装置。
【請求項8】
所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置の制御方法であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信手段が受信する受信工程と、次の順序の通信手段へデータを送信手段が送信する送信工程とを実行し、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信する工程を実行し、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する工程を実行する
ことを特徴とするデータ処理装置の制御方法。
【請求項9】
通信手段として受信手段と送信手段を有し、所定の順序でリング状に接続された複数のモジュールの夫々に、
前の順序の通信手段からデータを受信手段が受信する受信工程と、
次の順序の通信手段へデータを送信手段が送信する送信工程と、
前記受信手段及び前記送信手段には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信する工程と、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する工程と
を実行させることを特徴とするプログラム。
【請求項1】
所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信する受信手段と、次の順序の通信手段へデータを送信する送信手段とを備え、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信し、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する
ことを特徴とするデータ処理装置。
【請求項2】
前記通信手段の少なくともいずれか一つが備える送信手段は、
カウンタ値を保持する第1保持手段を備え、
対応する前記受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、前記データ処理済みのパケットに対して前記第1保持手段が保持する前記カウンタ値を設定して次の順序の通信手段へ送信し、前記第1保持手段が保持するカウンタ値を第1の値だけ増分し、
前記通信手段の少なくともいずれか一つの受信手段は、カウンタ値を保持する第2保持手段を備え、
前記通信手段は、当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報と、当該受信手段の前記第2保持手段が保持する前記カウンタ値と同一のカウンタ値との両方を有するパケットを受信した場合のみ、対応する前記処理手段で該パケットに対してデータ処理を行わせ、前記第2保持手段が保持するカウンタ値を第2の値だけ増分する
ことを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記第1保持手段が保持するカウンタ値を初期化する第1初期化手段と、
前記第2保持手段が保持するカウンタ値を初期化する第2初期化手段と、
をさらに備えることを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記第1の値を設定する第1設定手段と、
前記第2の値を設定する第2設定手段と、
をさらに備えることを特徴とする請求項2又は3に記載のデータ処理装置。
【請求項5】
前記通信手段の少なくともいずれか一つは、当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合、当該通信手段の送信手段に割り当てられている接続ID情報が設定された前記データ処理済みのパケットを次の順序の通信手段へ送信するとともに、受信した該パケットをID情報を変更せずに次の順序の通信手段へ送信する
ことを特徴とする請求項1から4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記処理手段の少なくともいずれか一つは、処理対象のデータの入力と、処理済みのデータの出力とを行う入出力手段である
ことを特徴とする請求項1から5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記通信手段の前記受信手段と前記送信手段とに対して割り当てる前記接続ID情報を記憶する記憶手段をさらに備える
ことを特徴とする請求項1から6のいずれか1項に記載のデータ処理装置。
【請求項8】
所定のデータ処理を行う複数の処理手段がそれぞれ対応する通信手段を介して所定の順序でリング状に接続されたデータ処理装置の制御方法であって、
前記通信手段の各々は、前の順序の通信手段からデータを受信手段が受信する受信工程と、次の順序の通信手段へデータを送信手段が送信する送信工程とを実行し、
前記受信手段及び前記送信手段の各々には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、
前記通信手段は、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する前記処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信する工程を実行し、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する工程を実行する
ことを特徴とするデータ処理装置の制御方法。
【請求項9】
通信手段として受信手段と送信手段を有し、所定の順序でリング状に接続された複数のモジュールの夫々に、
前の順序の通信手段からデータを受信手段が受信する受信工程と、
次の順序の通信手段へデータを送信手段が送信する送信工程と、
前記受信手段及び前記送信手段には、データ処理の論理的順序を識別するための接続ID情報が割り当てられており、当該通信手段の受信手段に割り当てられている前記接続ID情報と同一のID情報を有するパケットを受信した場合は、対応する処理手段で該パケットに対してデータ処理を行わせ、当該通信手段の送信手段に割り当てられている接続ID情報を該データ処理済みのパケットに設定して、次の順序の通信手段へ送信する工程と、
当該通信手段の受信手段に割り当てられている前記接続ID情報と同一でないIDを有するパケットを受信した場合は、ID情報を変更せずに当該パケットを次の順序の通信手段へ送信する工程と
を実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2010−206517(P2010−206517A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−49713(P2009−49713)
【出願日】平成21年3月3日(2009.3.3)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願日】平成21年3月3日(2009.3.3)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]