JP5341623B2 - データ処理装置、データ処理方法およびプログラム - Google Patents

データ処理装置、データ処理方法およびプログラム Download PDF

Info

Publication number
JP5341623B2
JP5341623B2 JP2009137343A JP2009137343A JP5341623B2 JP 5341623 B2 JP5341623 B2 JP 5341623B2 JP 2009137343 A JP2009137343 A JP 2009137343A JP 2009137343 A JP2009137343 A JP 2009137343A JP 5341623 B2 JP5341623 B2 JP 5341623B2
Authority
JP
Japan
Prior art keywords
data
processing
packet
unit
count value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009137343A
Other languages
English (en)
Other versions
JP2010282557A (ja
Inventor
尚 石川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2009137343A priority Critical patent/JP5341623B2/ja
Priority to US12/794,645 priority patent/US9152605B2/en
Publication of JP2010282557A publication Critical patent/JP2010282557A/ja
Application granted granted Critical
Publication of JP5341623B2 publication Critical patent/JP5341623B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40006Architecture of a communication node
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Bus Control (AREA)

Description

本発明は複数のリングバスに接続されている複数のデータ処理モジュールへのデータの流れ(データフロー)を制御することで、好適な並列処理を実現するデータ処理装置に関する。
従来、一連のデータ処理を高速に効率よく実現するため、一連のデータ処理を分割してハードウェア化(以下、ハード化)し、ハード化したモジュールを処理順に接続して一連のデータ処理をパイプライン的に高速に実行する方法がある。
また、画像処理においてハード化したモジュールが処理する順番を変えることで効率的に処理を実現できることがある。例えば、処理をした画像を所定の画素数を扱う出力装置に画像を出力する場合、一連の処理のどこかで画素数(や解像度)を合わせるため解像度変換を行う。この時、入力画像の画素数が出力装置の扱う画素数よりも多い場合は、処理の上流側で解像度変換を行い、画素数を少なくしてから処理を行った方が良い。一方で、入力画像の画素数が出力装置の扱う画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力の直前(下流側)で解像度変換を行った方が良い。
また、ある空間(例えば、入力デバイス空間)から標準的な空間(例えば、解像度600ppi、CIELAB色空間等)に変換して処理を行い、別の空間(例えば、出力デバイス空間)に変換する場合を想定する。この場合、入力側と出力側の空間変換部の処理順(1次元LUT、行列演算、3次元LUT等の処理の順序)は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。
しかし、ハード化したモジュールを処理順に接続する方法では、モジュールが処理する順番を変えられないため、上記に示した状況に対応するため、モジュールを余分に(即ち、同じ機能のモジュールを複数)実装していた。
一方で特許文献1の手法によれば、リング状ネットワークにてデータの接続先を変更することにより、モジュールの処理する順序の変更が可能になるので前述したような余分なモジュールは実装しなくてすむ。他に、特許文献2のように、各処理モジュールの処理内容を変更してもよい。
また、特許文献3にはブロードキャスト通信を用いることで、拡張性、保守性を向上させたデータフロー制御方式が提案されている。
特開平01−023340号公報 特許第2518293号公報 特許第2834210号公報
しかし従来の方法では、データフローの分岐(複数モジュールでの同一データの参照)や複数データフローの同時実行、処理モジュールの時分割多重処理等、複雑なデータフローの制御は困難であった。また、特許文献3の方法のようにブロードキャスト通信を用いれば、データフローの分岐(複数モジュールでの同一データの参照)は可能である。しかし、データフローの統合や複数データフローの同時実行、処理モジュールの時分割多重処理などを実現するためのデータフローの制御は複雑になり、転送効率も低下する場合がある。
本発明は上述した課題を解決するものであり、処理順序の変更だけでなく、データフローの分岐や統合、複数データフローの同時実行などの制御を簡易な構成で実現するデータ処理装置を提供することを目的とする。
上記課題を達成するために本発明によるデータ処理装置は、複数の処理モジュールが夫々の通信手段を介して接続され、該処理モジュールがパケットを所定の一方向に転送して複数のデータフローに沿った処理を実行するデータ処理装置であって、前記処理モジュールは、第1のIDと第2のIDとを前記複数のデータフロー毎に格納する格納手段と、前記格納手段格納している第1のIDの1つを有するパケットからデータを抽出する受信手段と、前記受信手段抽出したデータを処理する処理手段と、前記受信手段によりデータを抽出されたパケットが有する第1のIDに対応する第2のIDと、前記処理手段処理したデータとをパケットに格納して、他の処理モジュールに当該パケットを送信する送信手段とを有することを特徴とする。
本発明によれば、複数のモジュールに複数のパイプライン処理(データフロー)を、簡易な構成によって同時に実行させることができる。従って、分岐や統合を有する複雑な処理を簡単に実現できる。
データ処理部の概略構成を示すブロック図である。 通信部102の概略構成を示すブロック図である。 データ受信部201とデータ送信部204の概略構成を示すブロック図である。 リングバス上を流れるパケットのフォーマットである。 処理部が4個のデータ処理部の例を示すブロック図である。 同時処理を行うシグナルフローグラフの例を示す図である。 システムの構成例を示すブロック図である。 データ処理部の制御手順を示すフローチャートである。 データ処理部の一構成例を示すブロック図である。 通信部1002の概略構成を示すブロック図である。 データ受信部1101とデータ送信部1104の概略構成を示すブロック図である。
以下、添付図面に従って本発明に係る実施例を詳細に説明する。
<実施例1>
図1は、本発明の一実施例である実施例1におけるデータ処理部の概略構成を示すブロック図である。図に示すようにデータ処理部は、データ入出力部101、通信部102および処理部103を有する。
通信部102−1〜102−n+mは、隣接する通信部とバスで接続され(但し、通信部102−n+mは通信部102−1に接続される)、リングバスを構成している。つまり、上記通信部102−1〜102−n+mは、リング状に接続されリングバスを構成すると共に、リングバスとデータ入出力部または処理部との間でのデータの送受信を行う。通信部102−1〜102−nには、各々データ入出力部101−1〜103−nが接続されている。通信部102−n+1〜102−n+mには、各々処理部103−1〜103−mが接続されている。
入力端子151より入力されたデータはデータ入出力部101を介して通信部102に入力される。入力されたデータは通信部102−1でパケット化されリングバス上を流される。通信部102、は予め設定された情報に従って必要なパケットをリングバスより取り込み、取り込んだパケットからデータを抽出して処理部103に送信する。処理部103では、予め割り当てられた所定のデータ処理(例えば色空間変換や解像度変換等)を行い、処理後のデータを通信部102へ出力する。処理後のデータは通信部102にてパケット化されリングバス上を流される。このように、データ入出力部101から入力されたデータを処理部103−1〜103−mが所定の順番で処理するように、通信部102−1〜102−n+mがデータを制御する。
そして、一連のデータ処理が終了したデータは通信部102−1〜102−nのいずれかにてデータ入出力部101に取り込まれ、出力端子152より出力される。なお、データ入出力部101は、外部の機器(またはモジュール)とのインタフェースを行うものであり、通信部102にて直接インタフェース可能な場合は省略可能である。
図2は、通信部102の概略構成を示すブロック図である。図に示すように通信部102は、データ受信部201、バッファ202、セレクタ203、データ送信部204およびFIFO205を有する。
隣接する通信部の出力端子259は、入力端子257に接続され、通信部102−1〜102−n+mにてリングバスを構成している。また、信号線251,252,253,254,255,256には処理部103(103−1〜103−mの内の1つ)が接続されているものとする。また、以下の説明では簡略のために信号線253を通る信号を、信号253と略する場合もある。
図4(A)にリングバス上を流れるパケットの一構成例を示す。フィールド501はパケットが有効であることを示すvalidフラグ(ここでは“1”を有効フラグとして、“0”で無効)を格納する。また、フィールド502はパケットが受信を保留されたことを示すstallフラグ(“1”を保留フラグとして、“0”で保留なし)を格納する。フィールド503はデータの送信順(処理順)を示すカウント値、フィールド504はデータの論理的な接続を識別するための接続ID、フィールド506は通信部に入力または出力されるデータである。
隣接する通信部より入力端子257を通って入力されたパケットは、バッファ202にて一時的に保持され、次のクロックサイクルでセレクタ203に出力される。
ここで、データ受信部201は、入力端子257のパケットを監視し、パケットのvalidフラグが有効で、且つ、接続IDとカウント値が通信部102の保持している値と一致する場合に、パケットからデータを取り込めるかどうかを判断する。
パケットからデータを取り込める場合とは、即ち、受信部201に接続されている処理部103がデータを取り込める場合(stall信号253が保留状態でない場合)である。この場合、受信部201はパケットを取り込み、(valid信号251を有効にして)出力端子252より処理部103へデータを出力する。この際、受信部201は信号線260を介して、バッファ202にデータの取り込みを通知し、バッファ202に格納されるパケットのvalidフラグをクリアし、データを抽出したパケットを無効化する。また、パケット取り込み後、カウント値をインクリメントする。
一方、パケットからデータを取り込めない場合とは、受信部201に接続されている処理部103がデータを受付けない場合(stall信号253が保留状態の場合)である。この場合、受信部201は信号線260を介して、バッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。処理部103がデータを受付けない状態とは、主に処理部103が処理中である状態が挙げられる。
受信部201は、入力パケットのvalidフラグが有効で、接続IDが一致してもカウント値が不一致の場合は、データの取り込み順が合わないので、この場合もstallフラグをセットする。
次に、データ送信部204は、接続されている処理部103からデータの出力が可能な場合(valid信号256が有効の場合)、処理部103の処理したデータをパケットに格納しようとする。
データ送信部204は、バッファ202の出力パケット(信号線258)のvalidフラグを監視し、validフラグが有効のときは、リングバス上にデータを出力できないと判断する。そして、データ送信部204は対応する処理部103の通信部102へのデータの出力を保留するためにstall信号254をアサートする。
一方で、validフラグが無効のときは、リングバス上にデータを出力できると判断する。この場合、送信部204はstall信号254をネゲートし、処理部から処理済みのデータを取得する。更に、データ送信部204はvalidが無効だったパケットについて、データ送信部204はvalidが無効だったパケットについて、validフラグを有効、stallフラグを無効にして、パケットのカウント値と接続IDに送信部204の保持するカウンタの値と接続ID(第2のID)を処理部から取得したデータに付加する。そして、送信部204はセレクタ203を制御して、出力端子259からパケットをリングバス上に流す。パケット出力後、カウント値をインクリメントする。
図3(a)は、データ受信部201の構成を示すブロック図である。図に示す様にデータ受信部201は、レジスタ301、カウンタ302、比較部303、判定部304およびOR回路305を有する。図3(a)を用いてデータ受信部201の処理を詳細に説明する。
比較部303は入力端子257より入力されるリングバス上のパケットのvalidフラグ、接続ID、カウント値を監視する。そして、パケットのvalidフラグが有効で、パケットの接続IDとレジスタ301に格納されている接続IDとが一致し、パケットのカウント値とカウンタ302の値と一致する場合、valid信号251を有効にする。この際、出力端子252にはvalid信号を有効にした時に監視しているパケットのデータ部が出力される。またこの時、比較部303はパケット判定信号とカウント一致信号を判定部304に入力する。ここで、パケット判定信号は「入力されたパケットのvalidフラグが有効で、パケットの接続IDがレジスタ301の保持するID(第1のID)と一致したこと」を示す。また、カウント一致信号は「入力されたパケットのカウント値がカウンタ302の値と一致したこと」を示す。
判定部304はパケット判定信号とカウント一致信号および対応する処理部103からのstall信号253に基づいて処理部103がデータを取り込めたかどうかを判定する。そして、データを取り込めたと判定した場合は、信号線260を介して、バッファ202にデータの取り込みを通知し、バッファ202に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。なお、詳細は後述するが、このパケット無効化処理はデータの分岐(複数処理部での使用)に応じて、CPU801等(後述するが、データ処理部外部の制御装置である)によってそのON/OFFを切替えられる。
また、図3(a)に示すように本実施例では2組のレジスタ301、カウンタ302、比較部303があり、ハイフン以下の番号(−1、−2)で区別して表記している。この構成によって、同時に2組の比較が可能で、いずれか一方が一致した場合に上記操作を行うように、OR回路305にて判定結果の論理和をとり、valid信号251として出力する。また、データ送信部204にて出力用のパケットに接続ID及びカウント値を付加するため、2組の比較の内、ヒットした方を示す信号263(本実施例では303−1の比較結果を使用)を、FIFO205(図2)に格納する。なお、ここでは2組の比較を行う場合を示したが、レジスタとカウンタと比較部のセットを増やし、複数(2〜n)の比較を行うように拡張し、2〜n個のパスを統合するようにしてもよい。
データ取り込み通知信号はカウンタ302にも入力され、データを取り込めたと判定した場合、次のデータを取得するために、次のクロックサイクルでカウンタ302のカウント値をインクリメント(+1)する。
判定部304はパケット判定信号とカウント一致信号と、接続されている処理部103からのstall信号253との両方を検出すると、取り込むべきデータが取り込めない状態にあると判定する。そして判定部304は、信号線260を介して、バッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。また、判定部304は、パケット判定信号を検出しカウント一致信号を検出しない場合は、取り込み対象パケットであるがデータの取り込み順序が合っていないと判定する。そして、判定部304は信号線260を介して、バッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。
図3(b)は、データ送信部204の概略構成を示すブロック図である。図に示すようにデータ送信部204は、レジスタ401、カウンタ402、比較部403、パケット生成部404、セレクタ405・406およびAND回路407を有する。
比較部403は、信号線261のバッファ202の出力パケット(図2の信号線258)のvalidフラグとstallフラグ、接続IDに応じて処理する。まず、validフラグが有効のときは、リングバス上にデータを出力できないので、接続されている処理部103からのデータ出力を保留するためにAND回路407を介してstall信号254をアサートする。また、validフラグが無効のときは、AND回路407を介してstall信号254をネゲートする。
比較部403は、バッファ202のパケットのvalidフラグが有効でstallフラグが無効な場合に、バッファ202の出力パケットの接続IDがレジスタ401の接続IDの1つと一致しするか判定する。そして一致した場合は、第2のIDを有するパケットが保留されずに戻ってきた場合であり、そのパケットを処理するモジュールが無いことを示している。従って、そのパケットを再びリングバスへ送る必要は無いので、比較部403はパケット生成部404を介してセレクタ203を制御し、validフラグを無効にしてパケットを無効化する。この場合も、パケットの出力が可能となるので、比較部403はAND回路407を介してstall信号254をネゲートする。
パケット生成部404は、接続されている処理部103のvalid信号256を参照する。まず、valid信号256が有効の場合、処理部103からデータの出力が可能と判定する。
次に、バッファ202の出力パケットにデータを格納できるかを判定する。詳細には、validフラグが無効である場合、もしくはこれから無効化するパケットである場合はデータを格納できるとする。これから無効化にするパケットとは、validフラグが有効かつstallフラグが保留を示していないときで、パケットの接続IDがレジスタ401に格納されている接続IDと一致したパケットである。
パケット生成部404は、処理部103のデータをバッファ202のパケットに格納する際に、validフラグを有効、stallフラグを無効にし、カウンタ402のカウント値とレジスタ401に設定されている接続IDを付加する。そして、セレクタ203を制御して出力端子259より出力パケットをリングバス上に流す。そして、次のクロックサイクルでカウンタ402のカウント値をインクリメント(+1)する。
なお、送信部204のカウンタ402と送信部204のパケットを受信する受信部201のカウンタ302(第1のカウンタ)は、同期を取るため、データ処理部の処理開始時に同じ値に初期化しておく。
また、図3(b)に示す様に本実施例のデータ処理部は2組のレジスタ401、カウンタ402(第2のカウンタ)を有しており、ハイフン以下の番号(−1、−2)で区別して表記している。この構成によって、同時に2パス分のパケットが出力可能で、パス1からパス2へ分岐や時分割多重処理ができる。セレクタ405・406はFIFO205より出力される選択信号265に従って、レジスタ401−1もしく401−2のどちらかを、カウンタ402−1もしくはカウンタ402−2のどちらかを選択する。このレジスタ401とカウンタ402の組合せは、受信部201のレジスタ301とカウンタ302の組合せに対応している。従って、受信部201に対応する複数(2〜n)組に拡張してもよい。
また、データ入出力部101は単一の入出力しか扱わないため、通信部102−1〜102−nには1組のレジスタ301、カウンタ302、比較部303及びレジスタ401、カウンタ402で十分であり、従って、FIFO205は不要である。
以上説明した様に、複数の処理モジュールの夫々がパケットを一方向へ転送させることで、総じて、リング上の一方向にパケットが周回する。そして、パイプライン処理に応じた接続IDを設定することで、処理すべき処理モジュールにパケットがたどり着いた場合に、その処理部にデータを取り込み処理できる。そして、処理したデータに次の処理モジュールが取り込むための接続IDをつけてリングバスに出力する。この処理を繰り返す事で、複数の処理モジュールが順番に一連の処理(パイプライン処理など)をデータに施すことになる。
次に、シグナルフローグラフを用いて、動作を説明する。このシグナルフローグラフにおいては、ノードを「丸」で示し、処理を「アーク(矢印)」で示す。説明を簡略化するため、図5に示すようにデータ入出力部を2つ、処理部を4つ有するデータ処理部を用い、2つのデータフローを同時に処理する場合の動作を説明する。
図6(A)のデータフロー(a)、データフロー(b)を同時に処理する際の詳細を説明する。まず、データフロー(a)を構成するため、処理部A(処理部103−1)の通信部102−3の受信部のレジスタ301−1には”1”を格納しておき、通信部102−3の送信部のレジスタ401−1には”2”を格納しておく。同様に、処理部C(処理部103−3)の301−1には”2”、レジスタ401−1には”3”を格納し、処理部D(処理部103−4)のレジスタ301−1には”3”、レジスタ401−1には”4”を格納する。入力端子151−1はノード”1”に対応し、出力端子152−1はノード”4”に対応するので、通信部102−1の受信部のレジスタには”4”を格納しておき、送信部のレジスタには”1”を、格納しておく。
また、データフロー(b)を構成するため、処理部B(処理部103−2)の通信部102−4の受信部のレジスタ301−2には”5”を格納しておき、通信部102−4の送信部のレジスタ401−2には”6”を格納しておく。以下、簡略表記すると処理部Cのレジスタ301−2には”6”、レジスタ401−2には”7”を格納し、処理部Dのレジスタ301−2には”7”、レジスタ401−2には”8”を格納する。入力端子151−2はノード”5”に対応し、出力端子152−2はノード”8”に対応するので、通信部102−2の受信部のレジスタには”8”を格納しておき、送信部のレジスタには”5”を、格納しておく。
以下、夫々のデータフローに沿って説明するが、説明を簡略化するため、処理部103および入出力部101において入力データの保留は発生しないものとする。この条件の元では、パケットのstallフラグ、カウント値は不要となるとなる。通常は入力データの保留が発生することがあるので、データを入力した時、データを出力した時に対応するカウンタをインクリメントし、カウンタ値と接続IDが一致したときのみ、パケットを取り込む。また、通信部102の受信部の未使用レジスタは、パケットが取り込まれないようにシグナルフローグラフで使用していない値を設定しておく(通常は”0”に初期化し、接続ID”0”はシグナルフローグラフで使用禁止にしておく)。
まず、データフロー(a)に沿って説明する。入力端子151−1に入力されたデータは通信部102−1にて送信部のレジスタに格納されている”1”が接続IDとして付加され、次の通信部102−2に出力される。通信部102−2は接続ID”8”を待ち受けるので、接続ID”1”のパケットはそのまま通信部102−3に出力される。通信部102−3は接続ID”1”を待ち受けるので、パケットを取り込み、処理部103−1にて処理Aが施される。処理部103−1にて処理されたデータは通信部102−3の送信部のレジスタに格納されている”2”が接続IDとして付加され、次の通信部102−4に出力される。
通信部102−4は接続ID”5”を待ち受けるので、接続ID”2”のパケットはそのまま通信部102−5に出力される。通信部102−5は接続ID”2”を待ち受けるので、パケットを取り込み、処理部103−3にて処理Cが施される。処理部103−3にて処理されたデータは通信部102−5の送信部のレジスタに格納されている”3”が接続IDとして付加され、次の通信部102−6に出力される。通信部102−6は接続ID”3”を待ち受けるので、パケットを取り込み、処理部103−4にて処理Dが施される。処理部103−4にて処理されたデータは通信部102−6の送信部のレジスタに格納されている”4”が接続IDとして付加され、次の通信部102−1に出力される。通信部102−1は接続ID”4”を待ち受けるので、パケットを取り込み、データを出力端子152−1より出力する。
次に、データフロー(b)に沿って説明する。まず、入力端子151−2に入力されたデータは通信部102−2にて送信部のレジスタに格納されている”5”が接続IDとして付加され、次の通信部102−3に出力される。通信部102−3は接続ID”1”を待ち受けるので、接続ID”5”のパケットはそのまま通信部102−4に出力される。通信部102−4は接続ID”5”を待ち受けるので、パケットを取り込み、処理部103−2にて処理Bが施される。処理部103−2にて処理されたデータは通信部102−4の送信部のレジスタに格納されている”6”が接続IDとして付加され、次の通信部102−5に出力される。通信部102−5は接続ID”6”を待ち受けるので、パケットを取り込み、処理部103−3にて処理Cが施される。
処理部103−3にて処理されたデータは通信部102−5の送信部のレジスタに格納されている”7”が接続IDとして付加され、次の通信部102−6に出力される。通信部102−6は接続ID”7”を待ち受けるので、パケットを取り込み、処理部103−4にて処理Dが施される。処理部103−4にて処理されたデータは通信部102−6の送信部のレジスタに格納されている”8”が接続IDとして付加され、次の通信部102−1に出力される。通信部102−1は接続ID”4”を待ち受けるので、接続ID”8”のパケットはそのまま通信部102−2に出力される。通信部102−2は接続ID”8”を待ち受けるので、パケットを取り込み、データを出力端子152−2より出力する。
処理部C(103−3)、D(103−4)は2つのデータフローにて使用されている。このため、上記処理部が接続している通信部102−5、102−6は、2つの接続IDを待ち受ける。その際に、データフロー(a)の接続IDで取り込まれたデータにはデータフロー(a)の接続IDを、データフロー(b)の接続IDで取り込まれたデータにはデータフロー(b)の接続IDを付加しなければならない。そこで、図2のFIFO205に取り込んだパケットの接続IDがどちらのデータフローのものであるかを識別する信号を格納しておく。そして、データを出力する際に、上記FIFO205からデータフロー識別信号を取り出し、この識別信号に応じて接続ID、カウント値を選択してデータに付加する。
以上の操作により、入力端子151−1、151−2から非同期にデータが入力されても、各データフローにおける接続IDが重複していなければ、複数のデータフローを同時に処理させることが可能となる。
なお、例えば処理部103が画像の拡大・縮小処理のように入出力のデータ数が変化するような処理を割り当てられている場合は、上記FIFOだけでは選択できないことがある。この場合は、データフロー識別信号を処理部103に入力し、処理部103よりデータに同期して出力させ、それによって接続ID、カウント値を選択してデータに付加すればよい。データフロー識別信号を処理部103にて同期させる場合は、FIFO205は不要となる。
また、2つの異なるデータフローを実行させるための方法として、データフローの種別を識別する方法でもよい。図4(B)はデータフローを識別するためのフローID505を付加したパケットのフォーマットを示すものであり、その他の部分は図4(A)と同一であるため、説明は省略する。
図6(B)のデータフロー(a)、データフロー(b)は、上記フローIDを付加した場合のシグナルフローグラフの一例を示したものである。この場合はフローIDにてデータフローの識別が可能であるので、異なるデータフローにて同じ接続IDを使用することができる。具体的な構成としては、レジスタ301−1、301−2、401−1、401−2に接続IDとフローIDを一緒に格納して比較部303で比較するようにすれば良い。
もしくは、入力端子151−1に入力されたデータにはフローID”0”を、入力端子151−2に入力されたデータにはフローID”1”を付加するようにしてもよい。この場合、通信部102の受信部のレジスタ301−1、カウンタ302−1をフローID”0”の比較に、レジスタ301−2、カウンタ302−2をフローID”1”の比較に用いる。また、通信部102の送信部のレジスタ401−1、カウンタ402−1をフローID”0”のデータ出力に、レジスタ401−2、カウンタ402−2をフローID”1”のデータ出力に用いるようにする。
このような構成とすることで、データフロー毎に独立して管理できるため、データフローのコンフィグレーションが容易になる。また、後者の場合は若干ではあるが回路が簡略化される。
図7は、前述のデータ処理部820を有するデータ処理装置の概略構成を示す。
システム制御部800は、演算制御用のCPU801、固定データやプログラムを格納するROM802、データの一時保存やプログラムのロードに使用されるRAM803および、外部データを保持する外部記憶装置804を有する。データ入力部810は、処理すべきデータをシステム外部より取り込む。例えば、イメージスキャナおよびA/D変換器などのデバイスを備える画像読み込み装置や、マイクおよびA/D変換などのデバイスによって構成される音声入力装置などであってもよい。データ出力部830は、本システムにおいて処理されたデータを外部に出力する。例えば、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置や、音声データをD/A変換器等を通して出力する音声出力装置などであってもよい。
データ入力部810において入力されたデータは、一旦、システム制御部に送られてCPU801で処理されてもよいし、そのままRAM803や外部記憶装置804に一時記録されてもよい。また、データ処理部820は、データ入力部810からの入力データを直接受け取って処理を行ってもよいし、システム制御部800からの指示ならびにデータ供給によって処理を行ってもよい。
データ処理部820の出力は、再度システム制御部800に送られてもよいし、直接データ出力部830に送ってもよい。
データ処理部820は、システム制御部800の制御によって所望のデータ処理をするように設定され、そして様々な処理データを供給されて、設定に応じた処理を実行し、処理したデータを外部に出力する。
図8に、システム制御部800によるデータ処理部を設定する処理のフローチャートを示す。
まず、ステップS910において、データ処理部のリセットが行われる。この時、バッファ202、接続IDを設定するレジスタ301、レジスタ401、データ順を示すカウンタ302、カウンタ402および図示しないパケット無効化設定レジスタ等を初期化する。
次に、ステップS920において、データ処理部に行わせる処理に対応するデータフローを実現できるように通信部の接続IDを格納するレジスタ301、レジスタ401を設定する。さらに、データ順を示すカウンタ302、カウンタ402の初期値やパケット無効化設定レジスタ等を設定する。これらの処理は図6を用いて上述した処理である。
次に、ステップS930において、処理部に行わせる処理に応じて、処理部に対するパラメータ指定などを行う。ステップS940では、データ処理装置の起動指示が行う。ステップS950では、データ処理装置の終了通知を監視する処理が行い、ステップS960で処理終了が検知されるまで繰り返す。ステップS960でデータ処理部の終了通知が確認されると、処理を終了する。
以上説明したように、本実施例のデータ処理装置によれば、機能分割した処理モジュールに複数のパイプライン処理(データフロー)を簡易な構成によって同時に実行させることができる。従って、分岐や統合を有する複雑なデータフローを簡単に実現できる。各処理モジュールをハードウェア(例えば、プログラムによって構成を変更する自由度が殆どないモジュール)で構成しても、データフローに応じて各モジュールを設定することで、システム全体で柔軟な処理を実現できる。また、パケットの消去も処理モジュール毎に制御できるため、リングバスの使用効率も良い。
なお、上述した説明においては、通信部102のバッファを受信部部201と送信部203の間にバッファ202として配置しているが、セレクタ203の後段に配置するようにしても良い。この場合、パケットの保留のためのstallフラグの設定や、受信パケットの無効化のためのvalidフラグのクリアはセレクタ203にて行う。他にも、受信部201が、バッファ202のパケットを監視するように構成してもよい。
また、上述した実施例で挙げたデータフローは、パイプライン処理などの一連の処理を機能分割してハードウェア化した処理を含む。この様な処理に本発明を適用すると、効果が期待しやすい。
<実施例2>
次に実施例2について説明する。本実施例では、複数の処理部が1つの通信部を共有するように構成している。なお、実施例1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
図9は、本発明の実施例2におけるデータ処理部の概略構成を示すブロック図である。図に示すように、データ処理部は、データ入出力部101、通信部1002および処理部103を有する。
図10は、通信部1002の構成は例を示すブロック図である。図に示すように通信部1002は複数の処理部の夫々と接続されている。
図11(a)は、データ受信部1101の一構成例を示すブロック図である。図中のハイフン以下の番号(−1、−2)は接続されている処理部103への対応を示している。例えば、受信部1101−2のポート251−1、252−1、253−1、254−1、255−1、256−1は処理部103−1に夫々接続される。また、ポート251−2、252−2、253−2、254−2、255−2、256−2は処理部103−2に夫々接続される。
判定部1204は比較部303からのパケット判定信号とカウント一致信号、接続されている処理部103からのstall信号253より、処理部103がデータを取り込めたかどうかを判定する。データを取り込めたと判定した場合は、信号線260を介して、バッファ202にデータの取り込みを通知し、バッファ202に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。この操作を複数の処理部103の夫々について行う。
例えば、レジスタ301−1及び301−2に同じ接続IDが格納されており、また、カウンタ302−1及び302−2の値が一致しているとする。この時、待ち受けしていた接続IDが付加された有効パケットがデータ受信部1101に入力され、パケットのカウント値とカウンタ302の値が一致すれば、比較器303はどちらもvalid信号251を有効にする。ここで、ポート252−1で接続されている処理部103(上記例では処理部103−1)のstall信号253−1がアサートされ、ポート252−2で接続されている処理部103(上記例では処理部103−2)のstall信号253−1がネゲートされている場合について説明する。この場合は、ポート252−1側の処理部103ではデータが受信され、ポート252−2側の処理部103ではデータが受信されなかったことになる。また、判定部1204は信号線260を介して、バッファ202にデータの保留を通知し、バッファ202に格納されるパケットのstallフラグをセットする。カウンタ302−1は、ポート252−1側の処理部103ではデータが受信されているのでインクリメントされる。
一方、カウンタ302−2は、ポート252−2側の処理部103ではデータが受信されていないのでインクリメントされない。ただし、データは消失されずにリングバス上に保留されているので、リングバスを1周してきたときにstall信号253−1がネゲートされていれば、受信することができる。なお、カウンタ302−1は既にインクリメントされているので、同じデータを2重に取り込むことはない。
図11(b)は、データ送信部1104の概略構成を示すブロック図である。パケット生成部1304は、接続されている夫々の処理部103のvalid信号256が有効であることを検出し、処理部103がデータの出力が可能であると判定する。そして、バッファ202のパケットにデータを格納できるかどうかを判定する。
処理部103に出力するデータがあり、バッファ202のパケットに格納できる場合、パケット生成部1304はバッファ202のパケットのvalidフラグを有効、stallフラグを無効する。そして、処理部103のvalid信号が有効となっている方(複数のvalid信号が有効となっている場合は、ハイフン以下の番号の小さい方)に対応するカウンタ402のカウント値とレジスタ401に設定されている接続IDを付加する。
生成されたパケットは、セレクタ203を制御して出力端子259よりリングバス上に流される。そして、次のクロックサイクルで上記データを出力した方のカウンタ402のカウント値をインクリメントする。なお、送信部1104のカウンタ402とこの送信部のパケットを受信する受信部1101の対応するカウンタ302は、同期を取るため、データ処理を開始する際に同じ値に初期化される。
また、図11(b)には2組のレジスタ401、カウンタ402が示されているが、この組合せの数は接続される処理部103のデータポート数に一致している(受信部1101も同様)。
以上説明したように、実施例2におけるデータ処理装置によれば、複数の処理部で通信部を共有することができる。これにより、リングバスで直列に接続する段数(モジュール数)を削減することができ、回路を簡略化できる。例えば、同じデータに対して同時に異なる処理を施して、異なる複数の結果を取得するようなデータフローを簡易な回路構成で実現できる。
なお、上述の実施例では、通信部102の送信部のレジスタ401に値を設定するようにしているが、これをレジスタ毎に固定としても良い。この場合は、シグナルフローグラフの処理を示すアローの先のノード番号が処理毎に固定になるが、アローの元(入力)はプログラムで設定を自由に変更できるため、上述と同様の動作が可能である。
また、上述の実施例では、パケットが有効であることを示すvalidフラグを用いたが。これに限らず、特定の接続ID(第3のID、例えば”0”)を無効パケットとしても良い。ただし、この特定のIDはどの通信部の接続ID(第1のID)にも設定されていないようにしなければならない。
また、上述の実施例ではリングバスを有するデータ処理装置を用いて説明しているが、本発明はリングバス以外の形態においても適用できる。詳細には、処理モジュールの夫々が(間接的又は直接的な)相互通信を可能な接続形態であって、ブロードキャスト通信等により、ある処理モジュールの出力が全ての処理モジュールに伝送可能であるならば本発明は適用できる。例えば、スター型のトポロジーにおいても、一連の処理に用いる全ての処理モジュール間の通信を可能にすれば本発明を適用することで前述の効果を得ることができる。
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。
また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。

Claims (12)

  1. 複数の処理モジュールが夫々の通信手段を介してリング状に接続され、該処理モジュールがパケットを所定の一方向に転送して複数のデータフローに沿った処理を実行するデータ処理装置であって、
    前記処理モジュールは、
    第1のIDと第2のIDとを前記複数のデータフロー毎に格納する格納手段と、
    前記格納手段格納している第1のIDの1つを有するパケットからデータを抽出する受信手段と、
    前記受信手段抽出したデータを処理する処理手段と、
    前記受信手段によりデータを抽出されたパケットが有する第1のIDに対応する第2のIDと、前記処理手段処理したデータとをパケットに格納して、他の処理モジュールに当該パケットを送信する送信手段とを
    有することを特徴とするデータ処理装置。
  2. 前記送信手段は前記複数のデータフローに沿った処理の夫々に応じて、処理順を示すカウント値をパケットに格納し、
    前記処理モジュールは前記複数のパイプライン処理の夫々に対応するカウント値をカウントするカウンタを更に有し、
    前記受信手段は、パケットのカウント値と前記カウンタの値とが一致するパケットであって、前記第1のIDを有するパケットのデータを前記処理手段に転送することを特徴とする請求項1に記載のデータ処理装置。
  3. 前記受信手段は、前記複数のデータフロー処理を識別する識別信号を出力し、
    前記処理モジュールは前記識別信号を前記処理手段から出力されるデータに同期させるためのFIFOを更に有し
    前記送信手段は、前記FIFOの出力に応じてパケットに付加する第2のID又はカウント値を選択することを特徴とする請求項に記載のデータ処理装置。
  4. 前記カウンタは、
    前記処理手段からデータを出力する際に、前記データフローに沿った処理を識別する識別信号に応じたカウント値をインクリメントする第1のカウンタと、
    前記処理手段にデータを取り込む際に、前記識別信号に応じたカウント値をインクリメントする第2のカウンタとを備えることを特徴とする請求項に記載のデータ処理装置。
  5. 前記送信手段は前記処理手段からのデータを格納する際に、更に前記カウント値と、データが有効であることを示す有効フラグとをパケットに付加し、
    前記受信手段は、前記有効フラグの付加されているパケットについて、当該パケットのIDとカウント値に応じてデータを取り込むことを特徴とする請求項又はに記載のデータ処理装置。
  6. 前記受信手段は、前記パケットからデータを抽出しようとする際に前記処理手段がデータを受付けない状態にある場合は、当該パケットからデータを抽出せずに前記送信手段に転送し、前記受信手段によるデータの取り込みを保留したことを示す保留フラグを当該パケットに付加することを特徴とする請求項1乃至のいずれか1項に記載のデータ処理装置。
  7. 前記受信手段が前記第2のIDを有するパケットで、付加されている保留フラグがないパケットを受信した場合、前記送信手段は当該パケットを無効化することを特徴とする請求項に記載のデータ処理装置。
  8. 前記送信手段は、データを抽出したパケットを無効化することを特徴とする請求項1乃至のいずれか1項に記載のデータ処理装置。
  9. 前記送信手段は、データを抽出したパケットに付加されている第1のID又は第2のIDの換わりに第3のIDを設定することでパケットの無効化を行うことを特徴とする請求項又はに記載のデータ処理装置。
  10. 前記複数の処理モジュールについて、無効化をする送信手段と無効化をしない送信手段とを夫々設定する設定手段を更に有することを特徴とする請求項乃至のいずれか1項に記載のデータ処理装置。
  11. 複数の処理モジュールが夫々の通信手段を介してリング状に接続され、該処理モジュールがパケットを所定の一方向に転送して複数のデータフローに沿った処理を実行するデータ処理装置によるデータ処理方法であって、
    第1のIDと第2のIDとを前記複数のデータフローに沿った処理毎に格納する格納工程と、
    前記格納工程で格納した第1のIDの1つを有するパケットからデータを抽出する受信工程と、
    前記受信工程で抽出したデータを処理する処理工程と、
    前記受信工程でデータを抽出したパケットが有する第1のIDに対応する第2のIDと、前記処理工程で処理したデータとをパケットに格納して、当該パケットを送信する送信工程とを
    有することを特徴とするデータ処理方法。
  12. 複数の処理モジュールが夫々の通信手段を介してリング状に接続され、該処理モジュールがパケットを所定の一方向に転送して複数のデータフローに沿った処理を実行するデータ処理装置を制御するプログラムであって、コンピュータを、
    第1のIDと第2のIDとを前記複数のデータフローに沿った処理毎に格納する格納手段と、
    前記格納手段格納した第1のIDの1つを有するパケットからデータを抽出する受信手段と、
    前記受信手段抽出したデータを処理する処理手段と、
    前記受信手段によりデータを抽出されたパケットが有する第1のIDに対応する第2のIDと、前記処理手段処理したデータとをパケットに格納して、当該パケットを送信する送信手段として機能させることを特徴とするプログラム。
JP2009137343A 2009-06-08 2009-06-08 データ処理装置、データ処理方法およびプログラム Expired - Fee Related JP5341623B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009137343A JP5341623B2 (ja) 2009-06-08 2009-06-08 データ処理装置、データ処理方法およびプログラム
US12/794,645 US9152605B2 (en) 2009-06-08 2010-06-04 Apparatus, method, and computer-readable storage medium for data processing in a ring bus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009137343A JP5341623B2 (ja) 2009-06-08 2009-06-08 データ処理装置、データ処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2010282557A JP2010282557A (ja) 2010-12-16
JP5341623B2 true JP5341623B2 (ja) 2013-11-13

Family

ID=43301587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009137343A Expired - Fee Related JP5341623B2 (ja) 2009-06-08 2009-06-08 データ処理装置、データ処理方法およびプログラム

Country Status (2)

Country Link
US (1) US9152605B2 (ja)
JP (1) JP5341623B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5922898B2 (ja) * 2011-09-15 2016-05-24 キヤノン株式会社 情報処理装置、通信方法およびプログラム
GB2530513B (en) 2014-09-24 2016-08-24 Ibm Assembling response packets
US11994851B2 (en) * 2018-11-23 2024-05-28 Finning International Inc. Systems and methods for data-driven process improvement
CN111258648B (zh) * 2020-01-17 2022-05-27 中国工商银行股份有限公司 主机系统的交互控制方法、装置、计算机系统和介质
CN112328202B (zh) * 2020-11-26 2023-02-28 山东云海国创云计算装备产业创新中心有限公司 一种流量控制方法、装置及电子设备和存储介质
CN113806285A (zh) * 2021-09-18 2021-12-17 北京爱芯科技有限公司 一种数据处理模组、芯片和数据处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6188340A (ja) * 1984-10-05 1986-05-06 Mitsubishi Electric Corp 情報処理装置
JP2518293B2 (ja) 1987-07-24 1996-07-24 日本電気株式会社 デ−タフロ−プロセツサ
JP2834210B2 (ja) 1988-09-14 1998-12-09 株式会社日立製作所 リング状ネットワークにおけるメッセージ制御方法
JP3285430B2 (ja) * 1993-09-02 2002-05-27 シャープ株式会社 データ駆動型情報処理装置
GB2352144A (en) * 1999-07-16 2001-01-17 Texas Instruments Ltd Data transfer between memory nodes
JP3609051B2 (ja) * 2001-11-21 2005-01-12 Necエレクトロニクス株式会社 Usb−hubデバイスおよびその制御方法
JP4032802B2 (ja) * 2002-04-11 2008-01-16 富士ゼロックス株式会社 情報伝送システム
JP3780457B2 (ja) * 2004-06-07 2006-05-31 株式会社トヨタIt開発センター 信号処理装置、方法、プログラムおよび記録媒体

Also Published As

Publication number Publication date
US20100313001A1 (en) 2010-12-09
JP2010282557A (ja) 2010-12-16
US9152605B2 (en) 2015-10-06

Similar Documents

Publication Publication Date Title
JP5341623B2 (ja) データ処理装置、データ処理方法およびプログラム
JP5361567B2 (ja) データ処理装置、データ処理方法およびプログラム
JP5922898B2 (ja) 情報処理装置、通信方法およびプログラム
JP5419493B2 (ja) データ処理装置、データ処理装置の制御方法、およびプログラム
US8799536B2 (en) Data processing apparatus, data processing method and computer-readable medium
JP5014362B2 (ja) 情報処理装置及びその制御方法、コンピュータプログラム
JP2010244512A (ja) データ処理装置およびデータ処理方法またはプログラム
US20100303090A1 (en) Data processing apparatus using ring bus, data processing method andcomputer-readable storage medium
US7321596B2 (en) Packet control system and communication method
JP5414506B2 (ja) データ処理装置、データ処理方法、及びプログラム
JP5600492B2 (ja) データ処理装置、データ処理方法、制御装置、制御方法およびプログラム
WO2008106879A1 (fr) Procédé et dispositif de traitement de transfert de données
JP2010268241A (ja) データ処理装置、その制御方法およびプログラム
JP6139857B2 (ja) データ処理装置、入力制御装置、及び制御方法
JP2011170560A (ja) データ処理装置及びデータ処理方法
JP5662080B2 (ja) データ処理装置
JP2008219707A (ja) 分岐型シリアル通信システム
JP2005236872A (ja) 無瞬断リコンフィグレーション方法及びシステム
JP2009282739A (ja) ネットワークシステム、ネットワーク接続方法、接続装置、接続カード

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130603

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130716

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130808

R151 Written notification of patent or utility model registration

Ref document number: 5341623

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees