JP5538798B2 - データ処理装置およびデータ処理方法またはプログラム - Google Patents

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

Info

Publication number
JP5538798B2
JP5538798B2 JP2009224834A JP2009224834A JP5538798B2 JP 5538798 B2 JP5538798 B2 JP 5538798B2 JP 2009224834 A JP2009224834 A JP 2009224834A JP 2009224834 A JP2009224834 A JP 2009224834A JP 5538798 B2 JP5538798 B2 JP 5538798B2
Authority
JP
Japan
Prior art keywords
data
processing
communication means
processing module
unit
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
JP2009224834A
Other languages
English (en)
Other versions
JP2010244512A (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 JP2009224834A priority Critical patent/JP5538798B2/ja
Priority to US12/724,314 priority patent/US9225547B2/en
Publication of JP2010244512A publication Critical patent/JP2010244512A/ja
Application granted granted Critical
Publication of JP5538798B2 publication Critical patent/JP5538798B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • H04L12/437Ring fault isolation or reconfiguration
    • 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/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

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

Description

本発明は、複数の処理部をリング状バスに接続したデータ処理装置および当該データ処理装置におけるデータ処理方法またはプログラムに関する。
従来、高速なパイプライン処理を実現するため、パイプライン処理となる一連のデータ処理を分割(グルーピング)して複数のモジュールに割り当て、このモジュールを処理の流れ順にバスで接続する方法がある(特許文献1)。
しかし、処理A→B→Cのパイプライン処理を処理A→C→Bのように変えたい場合に、このように物理的なバスで接続されているモジュール(モジュールには処理A、B、Cが重複しないように割り当てられているとする)は処理順序を変更することが困難である。
画像処理においては、一連の処理順序を変えることで以下のように効率的に処理を実現できることがある。例えば、出力装置に画像を出力する場合、入力される画像の画素数が出力装置の画素数よりも多い場合は、なるべく処理の開始時に近い工程(上流側)で画素数を少なくしてから処理を行った方が効率的である。一方で、入力画像の画素数が出力装置の画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力直前の工程(下流側)で解像度変換により画素数を多くするのが良い。
また、ある空間(入力デバイス空間等)から標準的な空間(CIELAB色空間等)に変換して処理を行い、別の空間(出力デバイス空間等)に変換する場合、入力側と出力側の空間変換部の処理(1次元LUT、行列演算、3次元LUT等)の順序は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。
ここで、処理回路間の接続をリング型のバス(以下、リングバスと称す)で接続し、処理順序を可変にする方法がある(特許文献2、特許文献3)。
しかしながら、ハードウェアとしてリングバスに接続され固定的な処理機能を持つ複数の処理回路において、リングバスを流れるパケットの流れを停滞させずにリングバスのトラフィック量の増加を抑える事は困難である。
特許第2734246号公報 特許第2522952号公報 特許第2834210号公報
本発明はハードウェアとしてリングバスに接続され固定的な処理機能を持つ複数の処理回路において、リングバスを流れるパケットの流れを停滞させずにリングバスのトラフィック量の増加を抑えることを目的とする。
上記課題を解決するための本発明に係るデータ処理装置の代表的な構成は、複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置において、前記処理モジュールは、前記バスを介して前記リングの第1の方向から受信するデータを第2の方向へ送信する通信手段と、前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段とを有し、前記通信手段は、前記第2の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御し、第1の通信手段を有する第1の処理モジュールと、当該第1の通信手段よりデータの転送方向の1つ上流側に接続されている第2の通信手段を有する第2の処理モジュールとが、前記転送方向に沿った順番で連続してデータを処理する場合に、前記第1の処理モジュールが前記バスにより転送されてくるデータを取り込めるか否かにより、前記第1の通信手段から前記第2の通信手段への許可信号を有効にするか無効にするかを設定する第1のモードが前記第1の通信手段に設定され、前記第1の処理モジュールと、前記第2の処理モジュールとが、前記転送方向に沿わない順番でデータを処理する又は連続にデータを処理しない場合に、前記第1の通信手段から前記第2の通信手段への許可信号を常に有効とし、前記第1の処理モジュールが取り込むべきデータが前記バスにより転送されてきたときに、前記第1の処理モジュールが当該データを取り込めないときには、取り込めないデータを前記第2の方向へ送信する第2のモードが前記第1の通信手段に設定されることを特徴とする。
本発明のデータ処理装置によれば、データ転送許可信号により処理部から通信部へのデータ転送を制御することにより、保留パケットの発生を抑えリングバスの占有率を下げてデッドロックを低減することが可能となる。
データ処理装置の有する構成を示すブロック図である。 リングバスを流れるパケットのフォーマットの概略を示す図である。 通信部102の概略構成を示すブロック図である。 データ受信部301の概略構成を示すブロック図である。 データ送信部304の概略構成を示すブロック図である。 リングバスを有するデータ処理装置の概略構成を示すブロック図である。 シグナルフローグラフである。 通信部の一構成例を示すブロック図である。 データ受信部の一構成例を示すブロック図である。 データ処理装置の構成を示すブロック図である。 制御部によるデータ処理部の初期化処理を示すフローチャートである。 制御部による初期化処理の一部を示すフローチャートである。
<参考例>
まず、各処理モジュール間をリング状のネットワーク(以下、リングバスと称す)で接続し、複数の処理部で一連のデータ処理を順番にする際に、リングバスのトラフィック量が増加する例について説明する。
図1は、各処理モジュール間をリング状のバスでリング状に接続したデータ処理装置の概略構成を示すブロック図である。図中、101はデータ入出力部、102−1〜102−6は通信部、103−2〜103−6は通信処理部と一対一で設けられているデータ処理部である。
通信部102−1〜102−6は、各々隣接する通信部と接続され(但し、通信部102−6は通信部102−1に接続される)、リングバス106の一部として特定の方向(第1の方向)から受信するデータを他方(第2の方向)へ送信する。つまり、通信部102−1〜102−6は、リングバス106を構成すると共に、リングバス106とデータ入出力部またはデータ処理部との間でのデータの送受信を行う。通信部102−2〜102−6には、各々データ処理部103−2〜103−6に接続されている。
入力端子151より入力されたデータはデータ入出力部101を介して通信部102−1に入力される。入力されたデータはパケット化されリングバス上(リング上)を一方向に流れる。通信部102は予め設定された情報に従って必要なパケットをリングバス106より取り込み、取り込んだパケットよりデータ抽出し、データ処理部103が処理可能な場合、データ処理部103に入力する。データ処理部103では、所定のデータ処理(例えば色空間変換や解像度変換等)を行い、処理後のデータを通信部102へ出力する。処理後のデータはリングバス106に出力可能な場合、通信部102にてパケット化されリングバス106へ流される。このように通信部102−2〜102−6によって、設定された順番にてデータがデータ処理部103−2〜103−6にて次々に処理されて行く。そして、設定されたデータ処理が終了したデータは通信部102−1にてデータ入出力部101に取り込まれ、出力端子152より出力される。
図2にリングバス106を流れるパケットのデータ構造を示す。図中、validフラグ201にはパケットが有効であることを示す。stallフラグ202はパケットが受信保留であることを示す。カウント値203はデータの送信順を示し、node ID204はデータの論理的な接続を識別するための接続IDである。DATA205は通信部に入力または出力されるデータである。
通信部102は、リングバス106で伝播されたパケットを解析して、validフラグ201が有効で、ID204とカウント値203が通信部内部で管理する値と一致し、直接接続される処理モジュールが処理可能な場合、処理モジュールへデータを送る。同時に、リングバス106で下流(後段)に繋がる通信部に対して、validフラグを無効にしたパケット(以下、空パケットと称する)を送信する。
一方、リングバス106で伝播されたパケットを解析して、validフラグ201が有効かつ、ID204とカウント値203が通信部内部で管理する値と一致しかつ、接続される処理モジュールが処理不可能な場合は、リングバス106で繋がる後段の通信部に対して、stallフラグを有効にしたパケット(以下、保留パケットと称する)を送信する。同様に、validフラグ203が有効かつ、ID204が通信部内部で管理する値と一致しかつ、カウント値203が通信部内部で管理する値と一致しない場合も、リングバス106で繋がる後段の通信部に対して、保留パケットを送信する。
または、リングバス106で伝播されたパケットを解析して、validフラグが有効かつ、データのIDが通信部内部で管理する値と一致しない場合は、後段に繋がる通信部に対して、パケットの内容を変更しないでそのまま送信する。
以上の様に制御することで、複数の処理モジュールを夫々個別の通信部を介してリングバス106に接続しているデータ処理装置において、処理の順序を入れ替える事が可能となる。
ここで、処理モジュールの1つが拡大処理をするなどして入力データの個数に対して出力データの個数を増加させる場合を例に挙げて説明する。すると、処理モジュールが1クロックサイクル毎にデータを受け付けて処理し続けることが困難となり、リングバス上に多量の保留パケットを放出することになる。この場合、リングバス上の保留パケットが増加してしまい、バスの占有率を高め、デッドロック(リングバスが有効データで埋まってしまい、処理が進まない状態)を引き起こす原因とる事がある。
また、別の方法として、リングバスとは別のパスを用意しておき、保留パケットが頻発する処理に関しては、上記別のパスにより通信させる方法が想定できる。しかし、処理順序の入れ替えと拡大処理を同時に行う場合などは、別のパスも保留パケットで埋まってしまうので根本的な解決にならない。しかも、リングバスと上記別のパスからのデータを選択して、各処理モジュールに入力する為のセレクタが、(バスのビット幅)×(処理モジュールの数)分必要となり、回路規模の増大を招いていた。
また、各処理モジュール間をリング状バス上にFIFOを接続し、処理モジュールがリング状バスにデータを出力できなくなったときに処理モジュールから競合信号を上記FIFOに出力し、上記FIFOの読み出しを禁止する(即ち保留パケットをFIFOに退避させる。)ことで、リング状バスに「空き」を作り、デットロックを回避する方法を想定する(特許文献2)。しかしながらFIFOを用意するだけは、処理順序の入れ替えと拡大処理を同時に行う場合などは、FIFOが保留パケットで埋まればリングバスに保留パケットが溢れてくるので根本的な解決にならない。
以上のように、保留パケットを用いることで、リングバスを流れるパケットの流れを停滞させずに、処理中の処理モジュールが他のモジュールに対してストール状態を伝えられるので、他のモジュールがトラフィックを調節することができる。しかし、保留パケットの数が増えてしまうと保留パケットがリングバスを高い占有率で占有してしまいデッドロックを生じさせる事がある。
<実施例1>
次に本発明の一実施例である実施例1について説明する。
なお、参考例と同一機能を有する構成には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
図10は、本発明のデータ処理装置の構成例を示す。制御部1000は、演算制御用のCPU1001、固定データやプログラムを格納するROM1002、データの一時保存やプログラムのロードに使用されるRAM1003および外部データを保持する外部記憶装置1004を有する制御部である。
データ入力部1010は、処理すべきデータを取り込む。例えば、イメージスキャナおよびA/D変換器などのデバイスによって構成される画像読み込み装置や、マイクおよびA/D変換などのデバイスによって構成される音声入力装置そのものであってもよいし、入力装置からデータを取得する受信部であってもよい。
画像処理部1020は、図6に示す複数の処理モジュールによって並列処理をするデータ処理部である。ここでは、画像に限らずパイプライン処理などの一連のデータ処理に適したデータであれば、適用する事が好ましいためデータ処理部と表記している。
データ出力部1030は、処理済みのデータを外部に出力する。例えば画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置や、音声データをD/A変換器等を通して出力する音声出力装置でもよい。もちろん、単に外部装置へデータを送信するためのインタフェースであってもよい。
データ入力部1010において入力されたデータを、制御部1000が受信してCPU1001で処理してもよいし、そのままRAM1003や外部記憶装置1004に一時記録されてもよい。また、データ処理部1020は、データ入力部1010からの入力データを直接受け取って処理を行っても、制御部1000からの指示ならびにデータ供給によって処理を行ってもよい。
また、データ処理部1020の出力は、再度制御部1000に送られても、また、直接データ出力部1030に送られてもよい。
データ処理部1020は、制御部1000の処理によって予め個別のデータ処理内容を設定され、供給されるデータに対して設定された処理を施すように動作する。図6は、実施例1におけるデータ処理装置の有する複数の処理モジュールの構成を示すブロック図である。図1に示す構成に加え、各通信部はリングバス106上をデータが流れる方向(以下、データ転送方向と称す)と逆方向にデータ転送許可信号(以下、enable信号と称す)を伝達するenable信号線601で接続される。ここで、リングバス106を流れるパケットのフォーマットは図2に示したとおりである。
なお、データ入出力部101は、外部の機器(またはモジュール)とのインタフェースを行うものであり、通信部102−1にて直接インタフェース可能な場合は省略可能である。また、データ入出力部101のように入力部と出力部とを兼用する構成もよいし、入力部と出力部とがリングバス上の別の通信部と繋げて構成してもよい。さらに、入力部と出力部とが複数あってもよい。
図3は、通信部102の概略構成を示すブロック図である。図に示すように、通信部102はデータ受信部301、バッファ302、セレクタ303、データ送信部304を有する。
隣の通信部(データ転送方向下流・第2の方向側)への出力端子359は、隣の通信部(データ転送方向下流)の入力端子357に接続されており、リングバス106は通信部102−1〜102−6を有している。隣の通信部(データ転送方向上流・第1の方向側)へのenable出力端子364は、隣の通信部(データ転送方向下流)の入力端子363に接続される。通信部102−1〜102−6の夫々の間に接続されるenable信号線106に属している。
また、信号線351,352,353,354,355,356にはデータ処理部103(103−2〜103−mの内の1つ)が接続されているものとする。隣の通信部(データ転送方向上流)より入力されたパケットは、バッファ302にて一旦保持され次のクロックサイクルでセレクタ303に出力される。
データ受信部301は、入力端子357からのパケットを監視し、validフラグ201が有効で、ID204とカウント値203がデータ受信部301の保持する値と夫々一致するかを判定する。さらに、データ受信部301に接続されているデータ処理部103がデータの入力が可能である場合(信号線353のstall信号が保留状態でない場合)、データ受信部301は上記の条件を満たすパケットを取り込む。このとき、データ受信部301は信号線351のvalid信号を有効にして、出力端子352よりデータ処理部103へデータを出力する。このとき、信号線360を介して、データ処理部103がデータを取り込んでいることを受信部301がバッファ302に通知し、更にバッファ302に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。また、パケットのデータを取り込み後、データに付随のカウント値はインクリメントされる。この時、後述する図4のenableマスクレジスタ407(以下、マスクレジスタ407と略)が無効を示す値を保持する場合は、出力端子364のenable信号を有効にして出力する。
また、マスクレジスタ407が無効の場合、入力パケットのvalidフラグが有効で、接続IDとカウント値が夫々一致し、かつ接続されているデータ処理部103がデータの入力が不可能である場合(信号線353のstall信号が保留状態の場合。)、データ受信部301の内部バッファにデータを格納する。同時に信号線360を介して、バッファ302にデータの取り込みを通知し、バッファ302に格納される該パケットのvalidフラグをクリアし、パケットを無効化する。
一方、マスクレジスタ407が有効の場合、入力パケットのvalidフラグが有効で、接続IDとカウント値が夫々一致し、かつ、信号線353のstall信号が保留状態の場合、信号線360を介して、バッファ302にデータの保留を通知し、バッファ302に格納される該パケットのstallフラグをセットする。また、入力パケットのvalidフラグが有効で、接続IDが一致してもカウント値が不一致の場合は、データの取り込みができないので、この場合もstallフラグをセットする。
データ送信部304は、バッファ302の出力パケット(信号線358)のvalidフラグを、信号線361を介して監視する。そして、validフラグが有効のときは、バッファ302の出力パケットに対して送信部304はデータを出力できないので、データ処理部103からのデータの出力を保留するために信号線354にstall信号をセットする。また、送信部304は入力端子363から入力されるenable信号が無効のときも信号線354にstall信号をセットする。なお、入力端子363からのenable信号が有効かつバッファ302の出力パケットのvalidフラグが無効のときは、送信部304が信号線354のstall信号をリセットする。データ処理部103からデータの出力が可能な場合(信号線356のvalid信号が有効の場合)、バッファ302の出力パケットのvalidフラグが無効かつ入力端子363からのenable信号が有効であれば、データ送信部304は、validフラグを有効にして、さらにstallフラグを無効にする。そして、カウント値とレジスタに設定されている接続IDを付加してパケットを生成し、セレクタ303を制御して、出力端子359より生成したパケットをリングバスに流す。なお、パケットを生成すると表現しているが、概念的にはリングバスを流れる空パケットにデータを格納していることになる。パケット出力後、上記カウント値はインクリメントされる。
図4は、データ受信部301の概略構成を示すブロック図である。図に示すようにデータ受信部301は、レジスタ401(記憶部)、カウンタ402、比較部403、判定部404(切換部)、バッファ405、セレクタ406、enable信号用のマスクレジスタ407(設定部)を有する。
先ず、マスクレジスタ407が無効の時の動作を説明する。比較部403は入力端子357より入力されるリングバス上のパケットのvalidフラグ201、接続ID204、カウント値を監視する。そして、入力されたパケットのvalidフラグが有効な場合、該パケットの接続IDとレジスタ401に格納されている接続IDとが一致するかどうか、更に該パケットのカウント値とカウンタ402の値が一致するかどうかを比較する。比較した後に比較部403は、接続IDが一致した際には入力パケット判定信号を、カウント値がカウンタ402の値と一致した際にはカウント値一致信号を判定部404に出力する。
バッファ405が空の状態で、入力パケット判定信号とカウント値一致信号が有効かつ、接続されているデータ処理部103から信号線353を介したstall信号が無効を示す場合、判定部404はデータ処理部103がデータを取り込めたと判定する。
この際、信号線360を介して、バッファ302にデータの取り込みを通知し、バッファ302に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。また判定部404は、カウンタ402にカウント有効信号を有効にして出力し、次のデータを取得するために、次のクロックサイクルでカウンタ402にカウント値をインクリメント(+1)させるようにする。同時に、判定部404は信号線351のvalid信号を有効にし、セレクタ406を制御して、出力端子352に信号線357からのパケットのデータを出力させる。この処理によって、バッファ405は空になりデータが取り込める状態になるので、判定部404は信号線364のenable信号を有効にする。
一方、バッファ405が空で、入力パケット判定信号とカウント値一致信号が有効かつ接続されているデータ処理部103からの信号線353を介したstall信号が有効な場合、判定部404はデータ処理部103がデータを取り込めないと判定する。データ処理部103がデータを取り込めないと判定した場合に、判定部404はバッファ405を制御して該パケットのデータ部を取り込む。同時に、信号線360を介して判定部404はバッファ302にデータの取り込みを通知し、バッファ302に格納されるパケットのvalidフラグをクリアし、パケットを無効化する。この際、判定部404はカウンタ302へのカウント有効信号を無効にして、カウンタ302のカウント値をインクリメントさせない。また、信号線351のvalid信号を有効にし、セレクタ406を制御して、出力端子352にバッファ405に格納されている該パケットのデータ部を出力させる。さらに、バッファ405にはデータが格納されているので、判定部404は信号線364のenable信号を無効にする。
また、信号線364のenable信号が無効の時、データ処理部103でのデータの取り込みが可能で且つ、信号線353のstall信号が無効になれば、次のクロックサイクルで、データ処理部103は出力端子352を介してバッファ405に格納されているデータを取り込む。この時、次のデータを取得するために、次のクロックサイクルでカウンタ302はカウント値をインクリメント(+1)する。また、バッファ405は空になりデータが取り込めるので、判定部404は信号線364のenable信号を有効にする。
入力パケット判定信号が無効の場合、データ処理部103で処理するデータでない為、判定部404は信号線360を介してバッファ302にデータの取り込みを行っていないと通知し、バッファ302に格納されているパケットの変更を行わない。この際、判定部404は、カウンタ302へカウント有効信号、信号線351のvalid信号、信号線364のenable信号及びバッファ405の内容を変更しない。
次に、マスクレジスタ407が有効の時の動作を説明する。この場合、判定部404によって、セレクタ406は常にバッファ405を介さないパスを選択し、信号線364のenable信号は常に有効にされる。
比較部403の動作はマスクレジスタ407が無効の時と動作が同じため説明を省略する。
判定部404は入力パケット判定信号とカウント値一致信号が有効かつ、接続されているデータ処理部103から信号線353を介したstall信号が無効の場合、データ処理部103がデータを取り込めたと判定する。この場合、判定部404は、信号線360を介してバッファ302にデータの取り込みを通知し、バッファ302に格納されているパケットのvalidフラグをクリアし、パケットを無効化する。また、判定部404はカウンタ302にカウント有効信号を有効にして出力し、次のデータを取得するために、次のクロックサイクルでカウンタ302にカウント値をインクリメント(+1)させる。同時に、判定部404は信号線351のvalid信号を有効にし、セレクタ406を介して出力端子352に該パケットのデータ部を出力する。
一方、判定部404は上記入力パケット判定信号と上記カウント値一致信号が有効かつ接続されているデータ処理部103から信号線353を介して伝達されるstall信号が有効な場合は、取り込むべきデータがデータ処理部103で取り込めないと判定する。そして、判定部404は信号線360を介して、バッファ302にデータの取り込みが不可である事を通知し、バッファ302に格納されているパケットのstallフラグをセットし、保留パケットにする。この時、判定部404はカウンタ302へカウント有効信号を無効にして、カウンタ302のカウント値をインクリメントさせない。また、判定部404は信号線351のvalid信号を無効にする。
同様に、判定部404は、上記入力パケット判定信号が有効かつ上記カウント値一致信号が無効の場合、取り込み対象パケットであるがデータの取り込み順序があっていないと判定し、信号線360を介して、バッファ302にデータの保留を通知し、バッファ302に格納される該パケットのstallフラグをセットする。
さらに判定部404は、入力パケット判定信号が無効の場合、データ処理部103で処理するデータでない為、信号線360を介してバッファ302に、データの取り込みを行っていないと通知し、バッファ302に格納されているパケットの変更をしない。
図5は、データ送信部304の概略構成を示すブロック図である。図に示すようにデータ送信部304は、レジスタ501(記憶部)、カウンタ502、ORゲート503、パケット生成部504を有する。
入力端子361を介してバッファ302の出力パケットのvalidフラグがORゲート503に入力され、入力端子363を介してデータ転送方向下流側の受信部301より入力されるenable信号の反転信号がORゲート503に入力さる。そして、ORゲート503は出力として信号線354にstall信号を出力する。つまり、データ送信部304はリングバス(バッファ302)の出力パケットが有効、又は、データ転送方向下流の受信部301からのenable信号が無効のとき、データ処理部103からのデータを受け取れないので信号線354のstall信号を有効にする。また、信号線354のstall信号はパケット生成部504へも入力される。
パケット生成部504は、接続されているデータ処理部103から信号線356を介して伝達されるvalid信号を参照し、valid信号が有効の場合データ処理部103からデータの出力が可能であると判定する。データ処理部103からデータの出力が可能であると判定した場合で且つ信号線354のstall信号が無効の時、パケット生成部504はカウンタ502のカウント値とレジスタ501に設定されている接続IDを格納するパケットを生成する。ここで、パケット生成部504は、生成するパケットのvalidフラグを有効に、stallフラグを無効に設定する。さらに、信号線355を介してデータ処理部103は処理したデータを通信部に送出し、パケット生成部504はこのデータを受け取り、パケットのデータ部に格納する。そして、パケット生成部504はセレクタ303を制御して、出力端子359を介して生成したパケットをリングバスのデータ転送方向下流に流す。そして、次のクロックサイクルでカウンタ502はカウント値をインクリメント(+1)する。なお、送信部304のカウンタ502と該送信部のパケットを受信する受信部301のカウンタ302は、同期を取るため、データ転送開始前に同じ値に初期化される。
次に、図7に示すシグナルフローグラフと図6に示す構成を用いて、本実施例のデータ処理装置の具体的な動作を説明する。シグナルフローグラフにおいては、ノードを「丸」で示し、処理を「アーク(矢印)」で示す。各データ処理部103−2〜103−6では、夫々処理A〜処理Eで示される処理が入力データに対し施されるものとする。
まず、単純に処理A、処理B、処理C、処理D、処理Eの順に処理するフローのシグナルフローグラフは図7(a)に示すようになる。この時、処理部A(データ処理部103−2)の通信部102−2の受信部のレジスタ(レジスタ401)には”1”を格納しておき、通信部102−2の送信部のレジスタ(レジスタ501)には”2”を格納しておく。同様に、通信部102−3の受信部のレジスタには”2”、送信部のレジスタには”3”を格納しておき、通信部102−4の受信部のレジスタには”3”、送信部のレジスタには”4”を格納しておき、通信部102−5の受信部のレジスタには”4”、送信部のレジスタには”5”を格納しておき、通信部102−6の受信部のレジスタには”5”、送信部のレジスタには”6”を格納しておく。入力端子151はノード”1”に対応し、出力端子152はノード”6”に対応するので、通信部102−1の受信部のレジスタには”6”を格納しておき、送信部のレジスタには”1”を、格納しておく。ここで、処理が図6の接続順序どおりに行われるので、制御部1000によって通信部102−1〜102−6のマスクレジスタ407は全て無効に設定されている。従って、通信部が保留パケットを出力しない為、カウンタ値203は不要となる。
接続順序とは、前述したenable信号601を伝播できる逆の順序である。図6の通信部102は1→2→3→4→5→6→1の順序となる。ただし、データ処理装置の構成によってはenable信号601を全ての通信部102に伝播させなくてもよいので、接続順序は途切れる場合もある。通信部102−1が信号線354から出力するstall信号が無効を示す場合は入力端子151から処理対象のデータが入力され、通信部102−1は処理対象のデータをパケット化し接続ID”1”を付加して、通信部102−2に出力する。通信部102−2は受信部のレジスタ401に”1”が格納されているので、接続ID”1”のパケットを取り込んでデータ部をデータ処理部103−2に入力する。この時、データ処理部103−2から信号線353を介して伝達されるstall信号が無効を示す場合は、即座にデータ処理部103−2で処理対象のデータに対して処理Aが実施される。一方で、信号線353のstall信号が有効の場合は、一旦、処理対象のデータをバッファ405に格納し信号線353のstall信号が無効になってから、データ処理部103−2で処理Aが施される。その後、信号線354のstall信号が無効になると、通信部102−2の送信部のレジスタ501には”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−3へ出力する。
以下同様に、通信部102−3は接続ID”2”のパケットを取り込んでデータ処理部103−2で処理Bを実施し、接続ID”3”のパケットを生成し、処理したデータを格納して通信部102−3へ出力する。通信部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”が格納されているので、通信部102−1は接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。
以上のように、入出力部101に入力されたデータは、処理A、処理B、処理C、処理D、処理Eの順に処理され入出力部101から出力される。
このように、2つの通信部(第1の通信部と、第1の通信部よりデータ転送方向の1つ上流側に接続されている第2の通信部とする)が、データを転送する方向に沿った順番で連続してデータを処理する場合に、この2つの通信部の間では直接接続された信号線を介して通知される転送許可信号を用いる方式(第1のモード)で通信する。
なお、第1の通信部から第2の通信部への転送許可信号が無効になることは、前記第2の通信手段に対応する処理手段から前記第2の通信手段へのデータの転送を停止させることになる。
図7(b)は図7(a)における処理Bと処理Cの順序を逆にしたフローを示すシグナルフローグラフである。この場合は、通信部102−3の受信部のレジスタには”3”、送信部のレジスタには”4”を格納しておき、通信部102−4の受信部のレジスタには”2”、送信部のレジスタには”3”を格納しておく。そして、その他の通信部102は図7(a)と同じ様に設定すれば、図7(b)のフローが実現される。
また、A→C→B→D順で制御すると、図6に示す構成では信号線364を用いてenable制御することはできない。そこで、制御部1000は通信部102−3〜102−5のマスクレジスタ407を有効に設定する。一方で、入力(ノード1)→Aまでの処理とD→E→出力(ノード6)までの処理図6に示す構成で信号線364を用いてenable制御できるので、制御部は通信部102−1〜102−2、102−6のマスクレジスタ407を無効に設定する。ここで、マスクレジスタ407が無効に設定された通信部は、enable制御によりデータ転送方向側にある隣の通信部からパケットが送られてくるため、判定部404にてパケットのカウント値203とカウンタ402の値の一致を判定する必要はない。よって、通信部102−1〜102−2、102−6でのカウント値の一致判定に関する説明は省略する。
通信部102−1のstall信号354が無効の時、入力端子151から入力されたデータには通信部102−1にて接続ID”1”とカウンタ502のカウント値が付加され、通信部102−2に出力される。
通信部102−2は受信部のレジスタ401に”1”が格納されているので、接続ID”1”とカウント値が一致したパケットを取り込んでデータ部をデータ処理部103−2に入力する。この時、マスクレジスタ407が無効に設定されているので、信号線353のstall信号が無効の場合は、即座にデータ処理部103−2で処理Aが開始される。また、stall信号353が有効の場合は一旦、バッファ405に格納されstall信号353が無効になってから、データ処理部103−2で処理Aが開始される。その後、信号線354のstall信号が無効になると、通信部102−2の送信部のレジスタ501には”2”が格納されているので、接続ID”2”のパケットを生成して通信部102−3へ出力する。
通信部102−3の受信部のレジスタ401には”3”が格納されているので、接続ID”3”のパケット以外は処理部に取り込まずにそのまま通信部102−4へ出力する。従って、上記接続ID”2”のパケットは何も処理されずに通信部102−4へ出力される。
通信部102−4では接続ID”2”のパケットを取り込んでデータ処理部103−4で処理Cが施される。この時、マスクレジスタ407は有効に設定されているので、信号線353のstall信号が無効を示しかつカウント値203とカウンタ402の値が均しい場合のみ処理が行われる。そうでない場合は、図4で説明したように信号線360を介して、バッファ302にデータの保留を通知し、バッファ302に格納されているパケットのstallフラグをセットし、保留パケットを通信部102−5へ出力する。そして、保留パケットがリングバッファを巡回して通信部102−4に戻ってきた際に、再び信号線353のstall信号やカウント値203が判定されて、前述の条件に適合した場合に処理が行われる。処理Cが施されたデータは、接続ID”3”のパケットに格納され通信部102−5へ出力される。
通信部102−5には受信部のレジスタ301に”4”が格納されているので、接続ID”3”のパケットは取り込まずにそのまま通信部102−6へ出力する。同様に、通信部102−6、通信部102−1、通信部102−2においても、何も処理されない。そして、通信部102−4がパケットを出力してから4クロックサイクル後に通信部102−3に接続ID”3”のパケットが到達し、データ処理部103−3取り込まれ処理Bが施され、接続ID”4”のパケットに格納され通信部102−4へ出力される。ここで、通信部102−3はマスクレジスタ407が有効に設定されているので、102−4と同様な手続きで動作する。
通信部102−4には受信部のレジスタ301に”2”が格納されているので、接続ID”4”のパケットは処理部に取り込まずにそのまま通信部102−5へ出力する。
通信部102−5では接続ID”4”のパケットを取り込んでデータ処理部103−5で処理Dが施され、接続ID”5”のパケットを生成して通信部102−6へ出力する。ここで、通信部102−5もマスクレジスタ407は有効に設定されているので、102−4と同様な手続きで動作する。
通信部102−6では接続ID”5”のパケットを取り込んでデータ処理部103−6で処理Eを実施し、接続ID”6”のパケットを生成して通信部102−1へ出力する。ここで、通信部102−6はマスクレジスタ407を無効に設定されているので、通信部102−2と同様の手続きで動作する。
通信部102−1には受信部のレジスタ301に”6”が格納されているので、接続ID”6”のパケットを取り込んでデータ部を出力端子152より出力する。以上のように、入力されたデータは、図7(b)に示すように処理A、処理C、処理B、処理D、処理Eの順に処理され出力される。
このように、2つの通信部が、転送許可信号を用いる転送方式(第1のモード)の条件を満たさない場合、その通信部の間では転送許可信号を用いない方式(第2のモード)で通信する。
図7(c)は図7(a)において、処理Bと処理Dとスキップしたフローを示すシグナルフローグラフである。この場合制御部1000は、図7(a)と同様に受信部のレジスタ(レジスタ401)及び送信部のレジスタ(レジスタ501)の設定を行い、全ての通信部のマスクレジスタ407は無効に設定する。そして、処理部103−3及び103−5がパイプライン処理をスキップするようにパラメータを設定(例えば、変倍モジュールの場合は変倍率を‘1’に設定)すればよい。このスキップの設定は処理部が有するレジスタに設定する必要があるが、処理部はデータに加工を加えないので、処理部の負荷は軽い。
また図7(d)のフローを実現するには、処理部A(データ処理部103−2)の通信部102−2の受信部のレジスタ(レジスタ401)には”1”を格納しておき、通信部102−2の送信部のレジスタ(レジスタ501)には”2”を格納しておく。同様に、通信部102−4の受信部のレジスタには”2”、送信部のレジスタには”3”を、通信部102−6の受信部のレジスタには”3”、送信部のレジスタには”6”を、通信部102−1の受信部のレジスタには”6”、送信部のレジスタには”1”を格納する。
さらに、制御部1000が通信部102−1及び102−6のマスクレジスタ407を無効に、通信部102−3〜102−6のマスクレジスタ407を有効に設定しておくことにより図7(d)のフローを実現できる。ここで、通信部102−3および通信部102−5の受信部のレジスタには、パケットが取り込まれないようにシグナルフローグラフで使用していない値(4や5)を設定しておく。
以上のように、実施例1のデータ処理装置によれば、データ転送許可信号により通信部から処理部へのデータ転送を制御し、リングバスにデータ処理部の処理したデータが出力されることを抑制する。これにより、保留パケットの発生を抑えたままリングバス上のトラフィック量を低減することができる。従って、リングバスの占有率を下げてデッドロックを低減することが可能となる。
また、データ転送許可信号によるデータ転送を通信部ごとにON/OFF可能な構成にしたため、処理順序の変更が可能となり柔軟なデータ処理装置を実現できる。
なお、ある特定の処理部からの保留パケットの発生を抑制したい場合は、図6に示すようにenable信号線601(364)によって全ての処理部を接続しなくてもよい。特定の通信部を他の通信部とenable信号線で結びenable信号で制御するようにすれば、その通信部で発生する保留パケットは低減できる。従って、enable信号線で接続される2つの通信部は必ずしも隣り合う必要は無い。
次に、制御部1000が前述の設定を各モジュールに設定する処理について説明する。
本実施形態のデータ処理装置のプロセスは初期化フェイズとデータ処理フェイズとを有している。図11は、制御部1000が実施する初期化フェイズの処理を示すフローチャートである。ステップS1101で処理モジュール処理順序を制御部1000が判断する。処理順序の判断方法としては、例えば、予めROM1003や外部記憶装置1004に、データ処理部1020の行うパイプライン処理の種別と処理順序の対応関係が判断できる情報(テーブル、リストなど)を格納しておけばよい。または、代表的な機能と処理モジュールの対応関係を示す情報を格納しておき、ユーザ(又はアプリケーション)の指示した処理を制御部1000が機能分割して適応的に各処理モジュールの処理順序を判断してもよい。
ステップS1102で、制御部1000はS1101で判断した処理順序と接続順序とを比較する。接続順序はリングバスをスイッチ(クロスバースイッチ)等で物理的な接続関係を変更しない限り変更されないので、予め制御部1000に接続順序を示す情報を格納しておくことが好ましい。
制御部1000は処理順序と接続順序とを比較して、一致するシーケンスを検出する。例えば、接続順序が2→3→4→5→6、処理順序が4→5→2→3であれば、「2→3」と「4→5」を一致するシーケンスとして検出する。この検出結果に基づいて、各モジュールの制御方式(マスクレジスタ407を有効にするか否か)を決定する。
ステップS1103で制御部1000は、処理モジュールを初期化するためのデータを作成する。この初期化データに含まれる情報は、データ処理モジュールの処理順序を示す情報(待ち受けるパケットのID、送信するパケットのID)と、前記ステップS1102で判定したダイレクト制御(第1のモードでの制御)を行う処理モジュールを示す情報とである。
ステップS1104で、制御部1000は入出力部101を通して、ステップS1103で作成した初期化データを、リング状バス106に流す。
ステップS1105で、各処理モジュールは接続順序のとおりに初期化データを受け取り、処理終了データを送付するデータ処理モジュールID情報と、どのように許可信号を通知して制御するかを示す定情報と、を自身に設定する。
ステップS1102において、制御部1000は、図12の手順に基づいてダイレクト制御(第1のモードで通知して制御)を行うデータ処理モジュールの決定を行う。以下に詳細を示す。
制御部1000は、接続順序に沿って処理モジュールIDを走査する。そして、各IDについて、ステップS1202〜1205の処理を行い、ダイレクト制御をする処理モジュールを決定する。ステップS1202において、制御部1000は、現在走査しているデータ処理モジュールIDをID変数“CURRENT”に、バス接続順においてその後段にあたるデータ処理モジュールのIDをID変数“NEXT”に、それぞれ記録する。
ステップS1203において、制御部1000は、ステップ501において外部から受信した処理モジュール処理順序中に、CURRENT→NEXTの起動シーケンスが存在するかを判定する。その判定において、CURRENT→NEXTの起動シーケンスがあった場合はステップS1204の処理を、ない場合はステップS1205の処理を行う。
ステップS1204において、制御部1000は、ID変数CURRENTに保持しているIDに対応する処理モジュールがダイレクト制御を行う旨の設定情報(どのIDの処理モジュールのマスクレジスタを無効にするかを示す)を作成する。
ステップS1205において、制御部1000は、ID変数CURRENTに保持しているIDに対応するデータ処理モジュールがリング制御(第2のモードで通知して制御)を行うという設定情報を作成する。
以上、制御部1000がステップS1204およびステップS1205で作成した、処理モジュールの制御方法の設定情報は、ステップS1103、1104、1105において全ての処理モジュールの初期化に用いられる。
以上のように処理モジュールを初期化することで、ダイレクト制御を行う処理モジュールを検出し、検出した処理モジュールがダイレクト制御に基づいて前段の処理モジュールの出力を制御できるように初期化することができる。これにより、リングバス制御方式と、制御信号線を用いたダイレクト制御方式を組み合わせて、処理モジュール間データ送信制御を行うことが出来る。以上のように本実施例によれば、処理順番が変わる複数のモジュールを有するデータ処理装置において、少ない信号線で回路規模を抑えつつ効率的に保留パケットの増加を抑制し、トラフィックの増加を抑制できる。
<実施例2>
図8は本発明の一実施例である実施例2における通信部102の構成を示す図である。尚、本実施例は、図6の通信部102の構成を図3で説明したものから図8のものに置き換えたものであるため、実施例1と重複する部分は説明を省略する。
図8は、通信部102の概略構成を示すブロック図である。図中、図3で説明した構成部と同一のものは、同一の番号を付すとともに機能的に変わらないものについてはその説明を省略する。図8の構成において、図3から追加された構成は、バイパスモードレジスタ1101、セレクタ1102〜1104であり、機能変更された部分は受信部1105である。
図7(c)のシグナルフローグラフについて、第1の実施例では特定の処理のみをスキップ(バイパス)する場合、処理部103の機能を無効にして実現していたため、データ処理部のレイテンシ分のクロックサイクルを要する。しかし、本実施例では、バイパスモード(第3のモード)の場合には通信部がデータ処理部103を介さないで通信部102内でバイパスして後段にデータ流し、1クロック分の遅延だけで処理部をスキップできる。これにより、図7(c)に示すようなスキップ処理をした際のスループットの向上が可能となる。バイパスモードレジスタ1101はバイパスするか否かの設定値を格納する。
バイパスモードレジスタ1101が無効を示す値を格納する場合、データ受信部1105はデータ受信部301と同一な機能になり、その他の接続は図3で説明したものと同一になる。つまりセレクタ1102は信号線353のstall信号を選択してデータ受信部1105に入力し、セレクタ1103はデータ処理部103から信号線355を介して入力される入力データを選択してデータ送信部304に入力する。セレクタ1104はデータ処理部103から信号線356を介して入力されるvalid信号を選択してデータ送信部304へ入力する。またバイパスモードレジスタ1101が有効の時、セレクタ1102は信号線354のenable信号を選択してデータ受信部1105に入力し、セレクタ1103はデータ受信部1105からの信号線352のデータ出力を選択してデータ送信部304に入力する。さらに、セレクタ1104はデータ受信部1105から信号線351を介して入力されるvalid信号を選択してデータ送信部304へ入力する。
以下、本実施例の通信部102の動作を説明する。なお、バイパスモードレジスタ1101が無効の場合の動作は、実施例1の通信部の動作と同一であるため、説明を省略する。
次に、バイパスモードレジスタ1101が有効の場合に関して説明する。尚、バイパスモードの場合は、マスクレジスタ407は常に無効を示す値を格納する。
データ転送方向上流側の隣の通信部102より入力されたパケットは、バッファ302にて一旦保持され、次のクロックサイクルでセレクタ303に出力される。データ受信部1105は、入力端子357のパケットを監視し、パケットのvalidフラグが有効で、接続IDとカウント値が一致し、かつセレクタ1102を介して接続されている信号線354からのstall信号が無効の場合、該パケットをデータ受信部301の内部バッファ(バッファ405)に取り込み、(valid信号351を有効にして)出力端子352より出力する。このとき、データ受信部1105は信号線360を介して、バッファ302にデータの取り込みを通知し、バッファ302に格納される該パケットのvalidフラグをクリアし、パケットを無効化する。また、パケット取り込み後、上記カウント値はインクリメントされる。また、入力パケットのvalidフラグが有効で、接続IDとカウント値が一致し、かつ信号線354のstall信号が有効の場合、バッファ405に格納されたデータを保持する。尚、受信部1105は、信号線354のstall信号の値を反転させて信号線364のenable信号として出力する。
データ送信部304は、バッファ302の出力パケット(信号線358)のvalidフラグ(信号線361)を監視する。そして、validフラグが有効のときは、リングバス上にデータを出力できないので、セレクタ1103を介して接続されている受信部1105からのデータの出力を保留するために信号線354のstall信号をセットする。また、入力端子363から入力されたenable信号が無効のときも信号線354にstall信号をセットする。なお、enable信号が有効かつvalidフラグが無効のときは、信号線354のstall信号をリセットする。
受信部1105からデータの出力が可能な場合(信号線351のvalid信号が有効の場合)、送信部はバッファ302の出力パケットのvalidフラグが無効かつ入力端子363からのenable信号が有効であるかを確認する。そしてこの条件を満たしていれば、データ送信部304は、カウント値とレジスタに設定されている接続IDと有するパケットを生成し、このパケットのvalidフラグを有効、stallフラグを無効にする。さらに、信号線355を介してデータ処理部103が処理したデータを受け取り、生成したパケットのデータ部に格納する。そしてセレクタ303を制御して、出力端子359より該生成したパケットをリングバス上に流す。パケット出力後、上記カウント値はインクリメントされる。
図9は、本実施例のデータ受信部1105の概略構成を示すブロック図である。図中、図4で説明した構成部と同一のものは、同一の番号を付し説明を省略する。図4に対して機能変更された部分は1201の判定部であり、追加された部分は、バイパスレジスタモードレジスタ1101の値を示すバイパスモード信号を伝達する信号線1251である。また、信号線1252は信号線353のstall信号と同等の機能を持つstall信号を伝達し、セレクタ1102の出力に接続されている。
先ず、信号線1251のバイパスモード信号が無効の場合の動作は、実施例1のデータ受信部の動作と同一であるため、説明を省略する。
次に、信号線1251のバイパスモード信号が有効の場合に関して説明する。尚、図8の通信部の説明で示したように、バイパスモードの場合は、マスクレジスタ407を常に無効に設定する。また、信号線1251のバイパスモード信号が有効の時、判定部1201はセレクタ406を制御し、常にバッファ405の出力を選択する。
比較部403は入力端子357より入力されるリングバス上のパケットのvalidフラグ、接続ID、カウント値を監視する。そして、入力されたパケットのvalidフラグが有効で、該パケットの接続IDがレジスタ401に格納されている接続IDと一致したことを示す入力パケット判定信号と、該パケットのカウント値がカウンタ402の値と一致したことを示すカウント値一致信号とを判定部1201に出力する。
判定部1201は入力パケット判定信号とカウント値一致信号が有効かつ、信号線1252のstall信号が無効の場合、バッファ405に該パケットのデータ部を取り込む。この場合、信号線360を介して、バッファ302にデータの取り込みを通知し、バッファ302に格納される該パケットのvalidフラグをクリアし、パケットを無効化する。また、カウンタ302へカウント有効信号を有効にして出力し、次のデータを取得するために、次のクロックサイクルでカウンタ302のカウント値をインクリメント(+1)させる。同時に、valid信号351を有効にし、セレクタ406を介して、出力端子352に該パケットのデータ部が出力する。
一方、判定部1201は入力パケット判定信号とカウント値一致信号が有効かつ、stall信号1252が有効の場合、バッファ405のデータを保持する。この時、カウンタ302へカウント有効信号を無効にして、カウント値をインクリメントしない。また、valid信号351値を保持する。この時、セレクタ406を介して、出力端子352にバッファ405に格納された、該パケットのデータ部が出力される。
さらに判定部1201は、入力パケット判定信号が無効の場合、信号線360を介して、バッファ302にデータの取り込みを行っていないと通知し、バッファ302に格納される該パケットの変更を行わない。この時判定部1201は、カウンタ302へカウント有効信号、信号線351のvalid信号、信号線364のenable信号の値の変更やバッファ405の内容の変更を行わない。尚、図8の通信部の説明でも示したように、信号線364のenable信号には、信号線1252のstall信号の値を反転させて出力する。また、本実施例における送信部の構成は第1の実施例と同一であるため説明を省略する。
次に、シグナルフローグラフを用いて、動作を説明する。図7(a)、図7(b)、図7(d)で示した処理は、全ての通信部のバイパスモードレジスタ1101を無効に設定して動作させるため、第1の実施例と同様であるので説明を省略する。
以下、図7(c)に示した処理をバイパスする処理部に接続される通信部のバイパスモードレジスタ1101を有効に設定した場合の動作を説明する。
先ず、図7(c)と同様にデータ受信部のレジスタ(レジスタ401)及びデータ送信部のレジスタ(レジスタ501)の設定を行い、全ての通信部のマスクレジスタ407は無効に設定を行う。そして、データ処理部103−3及び103−5は、バイパスモードレジスタ1101を有効に設定する。第1の実施例では、処理B,Dを行わないにもかかわらず、データ処理部103−3及び103−5のレイテンシ分のクロックサイクルを余分に要していた。しかし、本実施例では、データ処理部103−3及び103−5を介さないで通信部102−3及び102−5内でバイパスするので、1クロック分の遅延で図7(c)に示すフローを実現する。これにより、処理のスループットの向上が可能となる。
以上説明したように、本実施例のデータ処理装置によれば、リングバスと処理部の間を接続する通信部内にバッファを設け、enable信号により通信部と処理部のデータ転送を制御することにより、保留パケットの発生を抑えられる。これにより、リングバスの占有率を下げてデッドロックを低減することが可能となる。
また、マスクレジスタを通信部内に設けることにより、通信部毎にenable信号によるデータ転送のON/OFFが可能となり、処理順序の変更が可能となる。さらに、バイパスモードレジスタを通信部内に設けることにより、処理に必要のない処理部を最小限のクロックサイクルでバイパスすることが可能となる。
上述の実施例で用いたデータ処理装置の各部の概略構成図は、回路や機能手段の接続関係を説明するためのものであって、各構成の位置関係を制限するものではない。また、説明の簡便のために通信部が6個の例を挙げたが、本発明を実施するためには通信部は3個以上有ればよい。また、処理部も2個以上有ればよい。
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。
また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。

Claims (11)

  1. 複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置において、
    前記処理モジュールは、
    前記バスを介して前記リングの第1の方向から受信するデータを第2の方向へ送信する通信手段と、
    前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段とを有し、
    前記通信手段は、前記第2の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御し、
    第1の通信手段を有する第1の処理モジュールと、当該第1の通信手段よりデータの転送方向の1つ上流側に接続されている第2の通信手段を有する第2の処理モジュールとが、前記転送方向に沿った順番で連続してデータを処理する場合に、前記第1の処理モジュールが前記バスにより転送されてくるデータを取り込めるか否かにより、前記第1の通信手段から前記第2の通信手段への許可信号を有効にするか無効にするかを設定する第1のモードが前記第1の通信手段に設定され、
    前記第1の処理モジュールと、前記第2の処理モジュールとが、前記転送方向に沿わない順番でデータを処理する又は連続にデータを処理しない場合に、前記第1の通信手段から前記第2の通信手段への許可信号を常に有効とし、前記第1の処理モジュールが取り込むべきデータが前記バスにより転送されてきたときに、前記第1の処理モジュールが当該データを取り込めないときには、取り込めないデータを前記第2の方向へ送信する第2のモードが前記第1の通信手段に設定されることを特徴とするデータ処理装置。
  2. 前記通信手段の夫々は、前記第1のモードと前記第2のモードとを切換える切換手段を有することを特徴とする請求項に記載のデータ処理装置。
  3. 前記切換手段は、前記通信手段が第3のモードに設定されている場合に受信したデータを、前記処理手段を介さずに前記第2の方向の通信手段へ送信する第3のモードに切換えることを特徴とする請求項に記載のデータ処理装置。
  4. 前記処理手段は、当該処理手段をパイプライン処理に用いない場合に、入力されるデータに加工を加えない設定を保持することを特徴とする請求項1乃至のいずれか1項に記載のデータ処理装置。
  5. 前記第1の通信手段は前記第2の通信手段から転送されたデータを格納する格納手段を有し、
    前記第1のモードにおいて、前記第1の通信手段の前記格納手段にデータが格納されているときには、前記第1の通信手段は、前記第2の通信手段に対して出力する許可信号を無効とすることを特徴とする請求項1乃至3のいずれか1項に記載のデータ処理装置。
  6. 複数の処理モジュールがバスと信号線の夫々によってリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送してパイプライン処理を実行するデータ処理装置において、
    前記処理モジュールは、
    前記バスを介して前記リングの第1の方向から受信するデータを第2の方向へ送信する通信手段と、
    前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段と、
    前記処理手段の処理したデータを前記第2の方向側の通信手段からの許可信号に応じて送出する送信制御手段と、
    当該処理モジュールが前記バスにより転送されてくるデータを取り込めるか否かにより、前記信号線によって接続される前段の処理モジュールへの前記許可信号を有効にするか無効にするかを設定する第1のモード、または、前記許可信号を常に有効にして、当該処理モジュールが取り込むべきデータが前記バスにより転送されてきたときに、当該データを取り込めないときには、取り込めないデータに、取り込めなかったことを示すフラグを付加して、前記第2の方向へ送信する第2のモードを当該処理モジュールに設定する設定手段と、
    を有することを特徴とするデータ処理装置。
  7. 前記複数の処理モジュールがパイプライン処理を実施する順番を処理順序として、前記複数の処理モジュールの処理順序と接続順序とを比較し、各処理モジュールにおいて前記第1のモードと第2のモードのどちらを使うかを前記設定手段に設定する制御手段を更に有することを特徴とする請求項に記載のデータ処理装置。
  8. 複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置におけるデータ処理方法であって、
    前記処理モジュールが、
    通信手段によって前記バスを介して前記リングの第1の方向から受信するデータを第2の方向へ送信する通信工程と、
    前記通信手段と一対一で接続されている処理手段が、前記通信手段からのデータを処理する処理工程と、
    を有し、
    前記通信工程では、前記第2の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御し、
    第1の通信手段を有する第1の処理モジュールと、当該第1の通信手段よりデータの転送方向の1つ上流側に接続されている第2の通信手段を有する第2の処理モジュールとが、前記転送方向に沿った順番で連続してデータを処理する場合に、前記第1の処理モジュールが前記バスにより転送されてくるデータを取り込めるか否かにより、前記第1の通信手段から前記第2の通信手段への許可信号を有効にするか無効にするかを設定する第1のモードが前記第1の通信手段に設定され、
    前記第1の処理モジュールと、前記第2の処理モジュールとが、前記転送方向に沿わない順番でデータを処理する又は連続にデータを処理しない場合に、前記第1の通信手段から前記第2の通信手段への許可信号を常に有効とし、前記第1の処理モジュールが取り込むべきデータが前記バスにより転送されてきたときに、前記第1の処理モジュールが当該データを取り込めないときには、取り込めないデータを前記第2の方向へ送信する第2のモードが前記第1の通信手段に設定されることを特徴とするデータ処理方法。
  9. 複数の処理モジュールがバスと信号線の夫々によってリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送してパイプライン処理を実行するデータ処理装置におけるデータ処理方法であって、
    前記処理モジュールが、
    通信手段によって前記バスを介して前記リングの第1の方向から受信するデータを第2の方向へ送信する通信工程と、
    前記通信手段と一対一で接続されている処理手段が、前記通信手段からのデータを処理する処理工程と、
    前記処理手段の処理したデータを前記第2の方向側の通信手段からの許可信号に応じて送出する送信制御工程と、
    当該処理モジュールが前記バスにより転送されてくるデータを取り込めるか否かにより、前記信号線によって接続される前段の処理モジュールへの前記許可信号を有効にするか無効にするかを設定する第1のモード、または、前記許可信号を常に有効にして、当該処理モジュールが取り込むべきデータが前記バスにより転送されてきたときに、当該データを取り込めないときには、取り込めないデータに、取り込めなかったことを示すフラグを付加して、前記第2の方向へ送信する第2のモードを当該処理モジュールに設定する制御工程と、
    を有することを特徴とするデータ処理方法。
  10. 複数の処理モジュールがバスを介してリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送して処理するデータ処理装置を制御するプログラムであって、
    前記処理モジュールを、
    前記バスを介して前記リングの第1の方向から受信するデータを第2の方向へ送信する通信手段と、
    前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段と、
    して機能させ、
    前記通信手段は、前記第2の方向側の通信手段からの許可信号に応じて前記処理手段のデータの送出を制御し、
    第1の通信手段を有する第1の処理モジュールと、当該第1の通信手段よりデータの転送方向の1つ上流側に接続されている第2の通信手段を有する第2の処理モジュールとが、前記転送方向に沿った順番で連続してデータを処理する場合に、前記第1の処理モジュールが前記バスにより転送されてくるデータを取り込めるか否かにより、前記第1の通信手段から前記第2の通信手段への許可信号を有効にするか無効にするかを設定する第1のモードが前記第1の通信手段に設定され、
    前記第1の処理モジュールと、前記第2の処理モジュールとが、前記転送方向に沿わない順番でデータを処理する又は連続にデータを処理しない場合に、前記第1の通信手段から前記第2の通信手段への許可信号を常に有効とし、前記第1の処理モジュールが取り込むべきデータが前記バスにより転送されてきたときに、前記第1の処理モジュールが当該データを取り込めないときには、取り込めないデータを前記第2の方向へ送信する第2のモードが前記第1の通信手段に設定されることを特徴とするプログラム。
  11. 複数の処理モジュールがバスと信号線の夫々によってリング状に接続され、該処理モジュールがデータをリング上の所定の転送方向に転送してパイプライン処理を実行するデータ処理装置を制御するプログラムであって、
    前記処理モジュールを、
    前記バスを介して前記リングの第1の方向から受信するデータを第2の方向へ送信する通信手段と、
    前記通信手段と一対一で接続され、当該通信手段からのデータを処理する処理手段と、
    前記処理手段の処理したデータを前記第2の方向側の通信手段からの許可信号に応じて送出する送信制御手段と、
    当該処理モジュールが前記バスにより転送されてくるデータを取り込めるか否かにより、前記信号線によって接続される前段の処理モジュールへの前記許可信号を有効にするか無効にするかを設定する第1のモード、または、前記許可信号を常に有効にして、当該処理モジュールが取り込むべきデータが前記バスにより転送されてきたときに、当該データを取り込めないときには、取り込めないデータに、取り込めなかったことを示すフラグを付加して、前記第2の方向へ送信する第2のモードを当該処理モジュールに設定する設定手段として機能させることを特徴とするプログラム。
JP2009224834A 2009-03-17 2009-09-29 データ処理装置およびデータ処理方法またはプログラム Expired - Fee Related JP5538798B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009224834A JP5538798B2 (ja) 2009-03-17 2009-09-29 データ処理装置およびデータ処理方法またはプログラム
US12/724,314 US9225547B2 (en) 2009-03-17 2010-03-15 Apparatus, method, and medium for controlling transmission of data

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009064683 2009-03-17
JP2009064683 2009-03-17
JP2009224834A JP5538798B2 (ja) 2009-03-17 2009-09-29 データ処理装置およびデータ処理方法またはプログラム

Publications (2)

Publication Number Publication Date
JP2010244512A JP2010244512A (ja) 2010-10-28
JP5538798B2 true JP5538798B2 (ja) 2014-07-02

Family

ID=42738624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009224834A Expired - Fee Related JP5538798B2 (ja) 2009-03-17 2009-09-29 データ処理装置およびデータ処理方法またはプログラム

Country Status (2)

Country Link
US (1) US9225547B2 (ja)
JP (1) JP5538798B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5014362B2 (ja) * 2009-02-25 2012-08-29 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム
JP5835942B2 (ja) * 2010-06-25 2015-12-24 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
JP5600492B2 (ja) * 2010-06-28 2014-10-01 キヤノン株式会社 データ処理装置、データ処理方法、制御装置、制御方法およびプログラム
US9367329B2 (en) * 2011-12-29 2016-06-14 Intel Corporation Initialization of multi-core processing system
JP6139857B2 (ja) 2012-01-26 2017-05-31 キヤノン株式会社 データ処理装置、入力制御装置、及び制御方法
JP5993267B2 (ja) * 2012-10-04 2016-09-14 オリンパス株式会社 画像処理装置
CN113691434B (zh) * 2021-08-31 2022-09-20 深圳云天励飞技术股份有限公司 数据传输系统、方法、电子设备及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61187445A (ja) * 1985-02-15 1986-08-21 Fujitsu Ltd パケツト再送制御方式
JPS6218850A (ja) * 1985-07-17 1987-01-27 Fujitsu Ltd リングネツトワ−クの同報通信制御方式
JPS6281844A (ja) * 1985-10-05 1987-04-15 Fujitsu Ltd デ−タ伝送方式
JP2522952B2 (ja) 1987-07-20 1996-08-07 三洋電機株式会社 リング状ネットワ−ク装置
JP2834210B2 (ja) * 1988-09-14 1998-12-09 株式会社日立製作所 リング状ネットワークにおけるメッセージ制御方法
JPH0367350A (ja) * 1989-08-07 1991-03-22 Canon Inc ネットワークインタフェース装置
JPH0469763A (ja) * 1990-07-10 1992-03-04 Fujitsu Ltd 階層型バス接続の並列計算機
JP3137197B2 (ja) * 1990-10-20 2001-02-19 富士通株式会社 マルチプロセッサシステム
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
JPH04192942A (ja) * 1990-11-27 1992-07-13 Fujitsu Ltd ループ型ネットワーク通信方式
JP2734246B2 (ja) 1991-09-24 1998-03-30 日本電気株式会社 パイプラインバス
JPH08180031A (ja) * 1994-12-22 1996-07-12 Nippondenso Co Ltd データ通信装置
JPH0991262A (ja) * 1995-09-20 1997-04-04 Fuji Xerox Co Ltd マルチプロセッサシステム
JP2000285087A (ja) * 1999-03-31 2000-10-13 Fuji Xerox Co Ltd ノード間データ通信方法
US20030191863A1 (en) * 2001-07-02 2003-10-09 Globespanvirata Incorporated Communications system using rings architecture
JP2006295690A (ja) * 2005-04-13 2006-10-26 Canon Inc 情報処理装置
JP5406558B2 (ja) * 2009-02-24 2014-02-05 キヤノン株式会社 データ処理装置、データ処理方法およびプログラム
JP5460088B2 (ja) * 2009-03-17 2014-04-02 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP5014362B2 (ja) * 2009-02-25 2012-08-29 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム
JP5419493B2 (ja) * 2009-03-03 2014-02-19 キヤノン株式会社 データ処理装置、データ処理装置の制御方法、およびプログラム

Also Published As

Publication number Publication date
US20100241826A1 (en) 2010-09-23
JP2010244512A (ja) 2010-10-28
US9225547B2 (en) 2015-12-29

Similar Documents

Publication Publication Date Title
JP5538798B2 (ja) データ処理装置およびデータ処理方法またはプログラム
JP2013065101A (ja) 情報処理装置、通信方法およびプログラム
JP5361567B2 (ja) データ処理装置、データ処理方法およびプログラム
US8799536B2 (en) Data processing apparatus, data processing method and computer-readable medium
JP5419493B2 (ja) データ処理装置、データ処理装置の制御方法、およびプログラム
JP5460156B2 (ja) データ処理装置
JP5014362B2 (ja) 情報処理装置及びその制御方法、コンピュータプログラム
US9152605B2 (en) Apparatus, method, and computer-readable storage medium for data processing in a ring bus
JP5406558B2 (ja) データ処理装置、データ処理方法およびプログラム
JP2010277429A (ja) リングバスを用いたデータ処理装置、データ処理方法およびプログラム
JP5414506B2 (ja) データ処理装置、データ処理方法、及びプログラム
JP5432587B2 (ja) データ処理装置、その制御方法およびプログラム
US9053225B2 (en) Data processing apparatus, data processing method, and storage medium
JP6139857B2 (ja) データ処理装置、入力制御装置、及び制御方法
JP2013196509A (ja) 情報処理装置及びその制御方法
JP2020191520A (ja) 撮像装置及び撮像装置の制御方法
JP5245803B2 (ja) 画像処理装置及び画像処理モジュール
JP2020008926A (ja) データパス制御装置、画像処理装置、データパス制御装置の制御方法およびプログラム
JP2010287175A (ja) データ処理装置、データ処理方法およびプログラム
JP2011170560A (ja) データ処理装置及びデータ処理方法
JP2004229066A (ja) 画像形成装置
JP2011180838A (ja) データ処理装置、制御方法及びプログラム
JP2010258999A (ja) シリアル通信装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140121

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140324

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: 20140408

R151 Written notification of patent or utility model registration

Ref document number: 5538798

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140430

LAPS Cancellation because of no payment of annual fees