JP2013196509A - 情報処理装置及びその制御方法 - Google Patents

情報処理装置及びその制御方法 Download PDF

Info

Publication number
JP2013196509A
JP2013196509A JP2012064470A JP2012064470A JP2013196509A JP 2013196509 A JP2013196509 A JP 2013196509A JP 2012064470 A JP2012064470 A JP 2012064470A JP 2012064470 A JP2012064470 A JP 2012064470A JP 2013196509 A JP2013196509 A JP 2013196509A
Authority
JP
Japan
Prior art keywords
module
data
packet
identifier
processing
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.)
Pending
Application number
JP2012064470A
Other languages
English (en)
Inventor
Hiroo Inoue
博夫 井上
Takashi Ishikawa
尚 石川
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 JP2012064470A priority Critical patent/JP2013196509A/ja
Publication of JP2013196509A publication Critical patent/JP2013196509A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】 リング状にバス接続された複数のモジュールを有する情報処理装置において、複数のモジュールに処理を適切に分配することが可能となるため、並列実行による処理性能を向上させる。
【解決手段】 バスを介してリング状に接続された複数のモジュール間でパケットを巡回させながら処理をする情報処理装置を提供する。モジュールそれぞれは、一方のモジュールからパケットを受信し、受信したパケットに含まれるデータを処理し、処理したデータを含むパケットを生成して、他方のモジュールに送信する。パケットは、少なくとも、処理対象のデータと、接続IDと、カウント値とを含んでいる。また、有効なパケットに含まれる接続IDが自モジュールに予め設定された受信接続IDと等しく、かつ、パケットに含まれるカウント値と第1の受信用カウンタが生成する値が等しい場合に、パケットの受信を実行する。更に、自モジュールに予め設定された送信接続IDと第1の送信用カウンタが生成する値を付加したパケットを生成する。
【選択図】 図5

Description

本発明は、バスを介してリング状に接続された複数のモジュール間でパケットを巡回させながら処理をする情報処理装置及びその制御方法、プログラムに関するものである。
従来、処理回路間の接続をリング型のバス(リングバス)で接続する方法が開示されている。この方法によれば、処理順序は予めハードウェア実装時に接続された順序によって制限されないので、順序入れ替えを含む任意の処理順序を実行することができる。特許文献1の技術では、処理回路がパケットバッファからパケットを出力しようとする際に、パケットがwait命令を有する場合、事前にset命令でタイマに設定された期間だけ出力を抑制している。これにより、一度に大量のパケットがリングバスに排出されることを抑制している。
特開平7−325800号公報
複数のモジュールをリングバスで接続し、各モジュールでパイプライン処理の各ステージの処理を実施させる構成において、任意のステージについて並列処理をさせる場合に、特許文献1の技術であると制御および回路が複雑化してしまうことがあった。
本発明は上記の課題を解決するためになされたものであり、リング状にバス接続された複数のモジュールの其々でパイプライン処理の各ステージの処理を実施させる際に、あるステージの処理を効率的に並列実行させることを目的とする。
上記の課題を達成するための本発明による情報処理装置は、リングバスに接続された複数のモジュールを有し、データと前記複数のモジュールの論理的な処理順序に対応する第1の識別子とを格納するパケットを隣接する一方のモジュールから受信し、当該第1の識別子に基づいて自モジュールで処理するか否かを決定し、受信したパケットを隣接する他方のモジュールへ送信するように構成された情報処理装置であって、第1、第3のモジュールは、自モジュールで処理したデータをパケットに含めて前記他方のモジュールへ送信し、複数の第2のモジュールの其々は、前記一方のモジュールから受信したパケットについて、前記第1の識別子に基づいて前記第1のモジュールで処理されたデータを取得し、当該データを処理することで得られる処理結果を、当該複数の第2のモジュールからのパケットがかわるがわる前記第3のモジュールで処理されるように付与された第2の識別子と対応づけて、前記他方のモジュールへ送信することを特徴とする。
本発明によれば、リング状にバス接続された複数のモジュールの其々でパイプライン処理の各ステージの処理を実施させる際に、あるステージの処理を効率的に並列実行させることができる。
情報処理装置のモジュールの構成例を示す図である。 リングバス上を流れるパケットのフィールド構成例を示す図である。 リングバスの構成例を示す図である。 システム構成例を示す図である。 (a)受信部の構成例、(b)送信部の構成例を示す図である。 (a)接続IDの設定による並列実行指示の例、(b)データフローダイアグラムを示す図である。 単純なカウンタによる並列処理の実行例を示す図である。 データ順序を保証するための保留ビット処理の例を示す図である。 送受信別々の数列生成による並列処理の実行例を示す図である。 実施形態2におけるデータ転送例を示す図である。 同報通信と保留データ発生による不具合の例を示す図である。 実施形態3における(a)受信部の構成例、(b)送信部の構成例を示す図である。 実施形態3における例示する処理の概念図を示す図である。
以下、本発明の実施の形態について図面を用いて詳細に説明する。
(実施形態1)
まず、図1を参照して、本発明に係る情報処理装置のモジュールの構成例について説明する。モジュール100は、リングバス110に接続されている単体のモジュールである。モジュール100は、通信部120と、処理部130と、設定部140とを備える。リングバス110は、複数のモジュール100をリング状に接続するバスである。
通信部120は、モジュール100とリングバス110との間でのデータパケットの送受信を行い、且つ、リングバス110上を流れるデータパケットを保持する機能も果たす。通信部120は、隣接する一方のモジュールからパケットを受信する受信部121と、生成したパケットを隣接する他方のモジュールに送信する送信部122と、セレクタ123と、バッファ124とを備える。受信部121は、リングバス110上を流れるデータパケットの内、当該モジュール100で処理すべきデータパケットを受信する。送信部122は、処理部130で処理済のデータ、または、通信部120で加工されたデータについての送信パケットの生成及び送信を行う。セレクタ123は、送信部122の判定に応じて、リングバス110より入力されたパケット、または、送信部122で生成されたパケットのいずれかを選択して出力する。バッファ124は、リングバス110を介して入力されるデータパケットを一時的に保持する。
処理部130は、通信部120で受信されたデータパケットに含まれるデータについて、パイプライン処理のあるステージの処理を実行する。設定部140は、処理部130の処理において参照または変更される設定パラメータやデータを保持する。詳細は後述する。
次に、図2(a)及び図2(b)を参照して、リングバス110上を流れるデータパケットのフィールド構成の例を示す。
本発明に係る通信路は、単一方向に流れる単一のリングバスである。そのため、各モジュール100で処理される処理データも、各モジュールを設定する設定データ(設定情報)も同一のリングバス110上に多重化して送受信される。図2(a)において、領域200は、処理データパケット内のフィールドの構成例を示している。図2(b)において、領域210は、設定データパケット内のフィールドの構成例を示している。
図2(a)及び図2(b)において、コマンドタイプTフィールド206は、コマンドタイプである。受信部121は、このコマンドタイプTフィールド206が保持する値を判別し、処理データであればそれを処理部130に送信するように制御し、設定データであればそれを設定部140に送信するように制御する。
図2(a)を参照して、領域200に示す処理データパケットについて説明する。Validフラグ201(第1のフラグ)は、パケットが有効/無効であることを示す。Stallフラグ202(第2のフラグ)は、パケットを受信せずに保留したことを示す。接続ID(第1の識別子)203は、リンクバス上に接続される複数のモジュール100の論理的な接続関係(パケットの送信元となる送信モジュールとパケットの受信先となる受信モジュールとの論理的な接続関係を決定するための識別子)を識別する。尚、接続ID203は各モジュールが一連のパイプライン処理の各ステージの処理を実現する際の処理順序に対応している。カウント(Count)値(第2の識別子)204は、データの送信順を示す。データ(DATA)フィールド205は、処理対象のデータである。各モジュールは、Validフラグ201、接続ID203、カウント値204に基づいて受信したパケットから処理対象のデータを抽出する。
次に、図2(b)を参照して、領域210に示す設定データパケットについて説明する。Validフラグ211は、パケットが有効であることを示す。Stallフラグ212は、パケットが受信保留であることを示す保留ビットである。接続ID213は、リンクバス上に接続される複数のモジュールの論理的な接続関係を識別する。カウント(Count)値214は、パケットに含まれるデータの送信順を示す。設定先モジュールIDフィールド215は、設定を適用するモジュール100を特定する。Modeフィールド216は、設定処理モードを示し、書込(W)、読出(R)、または入替(Ex)のいずれかのモードを示す値(付加情報)を保持する。アドレス(Adress)フィールド217は、設定データを保持する内部メモリまたはレジスタを特定する。データ(DATA)フィールド218は、処理対象の設定データであり、MODEフィールド216により示されるモードに応じて以下のような意味を有する。
書込(W)モードにおいては、書き込まれるデータを保持する。読出(R)モードにおいては、設定先モジュールIDで識別されるモジュール100に到達するまでは無効なデータを保持する。そして、モジュール100において読出処理を行った後は、内部メモリまたはレジスタの、アドレスフィールド217によって指定されたアドレスに格納されるデータを保持する。
入替(Ex)モードにおいては、設定先モジュールIDで識別されるモジュール100に到達するまでは、アドレスフィールド217で指定されるアドレスに書き込むデータを保持する。そして、モジュール100で設定処理を行った後は、アドレスフィールド217で指定されるアドレスに、書込を行う直前に保持されていたデータを読み出したものを保持する。
このようなデータパケットのフィールド構成により、単一方向に流れる単一のリングバス(バス接続)のみを用いてコマンド(設定データ)とデータを通信するシステムを構成することができるため、モジュール間の結線等を最小限に抑えることができる。
次に、図3を参照して、個々のモジュールを接続してリングバス110を構成した際の構成例について説明する。ターミナルモジュール310(以下、「モジュールA」とも称する)は、外部のデータバスとの接続である外部入力I/F360を介して外部からデータを入力する。そして、リングバス110上にある他のモジュールにおいて処理が終了したデータを外部データバスとの接続である外部出力I/F350を介して外部に出力する。
モジュール320(以下、「モジュールB」とも称する)、モジュール330(以下、「モジュールC」とも称する)、及びモジュール340(以下、「モジュールD」とも称する)は、リングバス110に接続されたモジュールである。モジュール毎に異なる処理を行ってもよく、いくつかのモジュールで同じ処理を行ってもよい。また、ここには4つのモジュールによって構成されるリングバス110を例示しているが、リングバス110を構成するモジュールの数には特に制限はなく、より多くのモジュールまたはより少ないモジュールを用いてリングバス110を構成してもよい。
このようなリングバス110の構成により、接続順序とは異なる順序でデータパケットを巡回させ、モジュールによるデータ処理を実行することが可能である。例えば、モジュールA、モジュールD、モジュールC、モジュールBの順に処理を行う場合を考える。
モジュールAの送信ID311とモジュールDの受信ID342(参照情報)に同じ接続ID値“1”を設定する。モジュールDの送信ID341とモジュールCの受信ID332に同じ接続ID値“3”を設定する。モジュールCの送信ID331とモジュールBの受信ID322に同じ接続ID値“4”を設定する。モジュールBの送信ID321とモジュールAの受信ID312に同じ接続ID値“8”を設定する。このように設定することによって、モジュールの論理的な接続関係(処理順序)の指定を行うことができる。
処理データは、この設定に従って各モジュールで処理されながら、リングバス110上をモジュールA→モジュールD→モジュールCで1周、モジュールC→モジュールBで1周、最後にモジュールB→モジュールAで1周して出力される。
このような状況において、あるモジュールが処理中であるときに次のパケットが到達すると、モジュールは処理できないことがある。その場合は、受信したパケットをモジュール内に取り込まず、パケットのStallフラグ202またはStallフラグ212を「有効」に変更してリングバス110に送信する。当然、モジュールの処理速度よりも早くパケットを次々とリングバス110上に投入すると、Stallフラグ202またはStallフラグ212が有効であるパケットでリングバス110が埋め尽くされてしまい、その後、パケットを投入できなくなる。これはいずれの処理中のモジュールでも同じことであるため、処理済のパケットもリングバス110に投入できなくなり、入力も出力もできないいわゆるデッドロック状態となってしまう。後述する設定データ(設定コマンド)においても、設定データの処理速度に見合った間隔でパケットを投入しなければ、デッドロック状態となる可能性がある。
図4を参照して、本発明に係る情報処理装置420を配置するシステムの構成例をについて説明する。システム制御部400は、CPU401と、ROM402と、RAM403と、外部記憶装置404とを備える。CPU401は、各種の演算制御を実行する。ROM402は、固定データやプログラムを格納する。RAM403は、データの一時保存やプログラムのロードに使用される。外部記憶装置404は、外部データを記憶して保持する。
データ入力部410は、処理すべきデータをシステムの外部から入力する。データ入力部410は、例えば、イメージスキャナ及びA/D変換器等のデバイスによって構成される画像読込装置、または、マイク及びA/D変換等のデバイスによって構成される音声入力装置であってもよい。情報処理装置420は、本発明に係る情報処理装置である。
データ出力部430は、システムにおいて処理済のデータを外部に出力する。データ出力部430は、例えば、画像データを印刷ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置、または、音声データをD/A変換器等のデバイスを通して出力する音声出力装置であってもよい。
データ入力部410に入力されたデータは、システム制御部400に送信されてCPU401によって処理されてもよいし、そのままRAM403や外部記憶装置404に一時記憶されてもよい。また、情報処理装置420は、データ入力部410から入力データを直接受信して処理を行ってもよく、システム制御部400からの指示によって、一旦、RAM403に蓄積されたデータを読み出して処理を行ってもよい。同様に、情報処理装置420からの出力は、再度、システム制御部400に送信されてもよいし、直接データ出力部430に送信されて出力処理が実行されてもよい。情報処理装置420は、システム制御部400の制御によって、様々なデータ処理内容が設定され、処理データが供給されて動作する。
図5(a)を参照して、図1における受信部121の構成例について説明する。受信部121は、受信ID部501と、第1の受信用カウンタである受信用カウンタ502と、比較部503と、コマンド解析部504と、送信ID505とを備える。
受信ID部501は、設定部140が保持する受信IDを参照する。比較部503は、リングバス110上のパケットのValidフラグ201、接続ID203、及びカウント値204と、受信ID部501、及び受信用カウンタ502とを比較する。パケットのValidフラグ201が有効であり、接続ID203が受信ID部501と一致し、かつ、カウント値204と受信用カウンタ502が生成する値とが一致する場合、比較部503はリングバス110のパケットを受信すると判定する。つまり、自モジュールでパケットの受信を実行し、それを処理する。
尚、カウント値204は、少なくとも前記リングバス上に同時に存在しうるパケット数M以上の数値を表現できるビット数に限定したカウント値を保持可能とする。ここで、リングバス上に同時に存在しうるパケットは、処理順序や保留等の制御により、必ずしも処理される順序で巡回しているわけではない。保留が発生した場合等は、リングバス上に存在する全てのバッファにデータパケットが記録された状態で巡回する可能性があるが、この際にもデータの順序を間違いなく識別する必要がある。よって、例えば、40個のデータパケットがリングバス上に同時に存在しうる場合は、40を超える2のべき乗―1の値を表現できるビット数すなわち6ビットが必要十分なビット数となる。
比較部503によりリングバス110のパケットを受信すると判定された場合、比較部503はコマンド解析部504にパケットを出力するとともに、有効なパケットであるという判定を受信用カウンタ502に通知する。そして、この通知を受けて、受信用数列生成部である受信用カウンタ502は、特定の規則に従う受信用数列上の次の値を生成する。さらに、パケットを受信したことでバッファ124に保持されるパケットのValidフラグ201をリセットして、該パケットを空パケットへと変更する。
コマンド解析部504は、比較部503から出力されたパケットのコマンドタイプTフィールド206を参照する。そして、これが処理データである場合には、コマンド解析部504は、結線506を介して、処理部130へパケットのデータフィールド205を出力する。一方、これが設定データである場合には、コマンド解析部504は、結線507を介して、設定部140へ、Modeフィールド216、アドレスフィールド217、及びデータフィールド218を出力する。
但し、処理部130もしくは設定部140が処理中や受信済の待機データフル状態である等の理由で受信したデータの処理を行えない状況である場合には、上記の受信判定が行われていても受信を行わない。そして、バッファ124に保持されているリングバス110上のパケットのStallフラグ202をセットする。その後、このパケットは次のモジュールへとそのまま送信され、後に再び受信判定されるまでリングバス110上を周回する。
更に、受信したパケットの接続ID203が、自モジュールの送信時に付加する送信ID505と等しく、かつ、Stallフラグ202がたっていない場合、バッファ124に保持されているリングバス110上のパケットのValidフラグ201を落とす。これにより、そのパケットを無効化(消去)する。
次に、図5(b)を参照して、図1における送信部122の構成例について説明する。送信部122は、送信ID部511と、第1の送信用カウンタである送信用カウンタ512と、出力制御部514と、パケット生成部515を備える。
送信ID部511は、結線517を介して設定部140が保持する送信IDを参照する。パケット生成部515は、結線519を介して処理部130から出力される処理済のデータと、送信ID部511が保持する送信IDと、送信用数列生成部である送信用カウンタ512が特定の規則に従って生成した送信用数列の値とから、送信パケットを生成する。そして、パケット生成部515は、セレクタ123に対してそのパケットを出力する。
または、パケット生成部515は、結線518を介して設定部140から出力される設定データと、送信ID部511が保持する送信IDと、送信用カウンタ512が生成する値とから、送信パケットを生成する。そして、パケット生成部515は、セレクタ123に対してパケットを出力する。
出力制御部514は、バッファ124に格納されているパケットが有効であるかどうかを判定し、有効である場合にはパケットの出力を抑制するようにパケット生成部515に対して通知する。それとともに、出力制御部514は、結線516を介して処理部130に対し処理結果データの出力を抑制するように通知する。
一方で、出力制御部514は、バッファ124に格納されているパケットが無効である場合は、モジュールの出力を送信可能であるため、パケット生成部515に対してパケット生成出力を指示する。それとともに、出力制御部514は、結線516を介して処理部130に対し処理結果データの出力を許可する。
次に、図6(a)を用いて、一連の処理順序に従うデータを複数の処理モジュールに分配する動作を説明する。
モジュールAにおいて外部入力I/F360から入力されたデータは、モジュールAの送信接続ID610として“1”を付加したパケットとしてリングバス110に送信される。この接続ID“1”を受信接続IDとして持つのはモジュールBの受信接続ID612と、モジュールCの受信接続ID614であるため、これら2つのモジュールは、モジュールAからのデータを受信して処理する。
その後、モジュールB及びモジュールCはそれぞれ送信接続ID613、615に格納されている“3”をつけたパケットに、処理結果データを格納してリングバス110に送出する。
ここで、モジュールDの受信接続ID616は“3”であるため、モジュールB及びモジュールCから送出されたデータを受信して処理を行い、送信接続ID617に格納された“4”を付加してリングバス110に送出する。
最後に、接続ID“4”を付加したデータは、モジュールAの受信接続ID611と一致するためここで受信され、外部出力I/F350を介して出力される。
次に、図6(b)を用いて図6(a)のデータフローを説明する。
ここでは表記上、丸で示すものが接続を意味し、アークとして丸と丸を繋ぐ線分を処理としている。アーク620のモジュールAの入力処理後に、データは接続“1”(630)として送出される。この接続“1”(630)には、アーク621のモジュールBとアーク622のモジュールCが繋がっているため、データはこの両方のモジュールで処理された後、いずれも接続“3”(631)として送出される。
次に、アーク623のモジュールDがこの接続“3”(631)のデータを処理して接続“4”(632)として出力し、最後にアーク624のモジュールAの出力処理がこれを受けて、出力を行うというデータフローである。
ところが、ここで、並列処理の目的を振り返ると、モジュールBとモジュールCが共にモジュールAの出力データのすべてを同じように処理することには意味がない。モジュールBとモジュールCが同じ機能を持つ処理である場合、このように並列化することで本来は処理性能が2倍になって欲しいからである。
すると、単純にモジュールAの出力データをモジュールB及びモジュールCが受信して処理するだけでは、2重に同じ処理をしているだけで処理性能が上がらないばかりか、モジュールDにおいては同じ処理結果データが2倍受信されることになる。その結果、リングバス上のトラフィックも増加してしまう。
このことから、2つの処理モジュールによってデータ処理を並列化する際には、適切なデータの選別を行って、例えば、モジュールBとモジュールCが交互に処理を行えるような仕組みの導入が必要であることがわかる。
図7は、論理的なパイプライン処理において分岐点となるモジュールA(第1のモジュール)が処理したデータを含む複数のパケットを、並列処理するモジュールB、C(複数の第2のモジュール)の其々が、かわるがわる処理(第1の処理、第2の処理)を実施する様子を示したものである。尚、モジュールB、Cにより処理されたデータ(処理結果)はモジュールD(第3のモジュール)によってかわるがわる処理が実施されるように制御される(カウント値204がモジュールB、Cによって付与される)。
尚、本実施形態においては、かわるがわる処理を実施するモジュールがB、Cの2つである場合を例示しているが、3つ以上のモジュールで順に処理を実施するように構成してもよい。その場合は、モジュールDにおいても、それら3つ以上のモジュールが出力するデータを順に受信して処理するように構成される。
以上の制御によるデータの流れを通信部単位で説明する。モジュールAが第1の通信部でパケットにデータを格納して出力し、モジュールBの第2の通信部およびモジュールCの第3の通信部でモジュールAの処理した複数のデータをかわるがわる取得して処理する。モジュールDの第4の通信部はモジュールBとモジュールCの処理結果を交互に取得することで、分岐したデータの流れを合成する。尚、図6の構成ではモジュールA、B、C、Dの順に物理的に接続しているが、各モジュールの設定が同様であれば、物理的にこの接続順でなくとも、論理的接続に従って同様に処理される。
表700は、モジュールAの送信接続ID701(図中では送信IDと略)と、送信時にパケットに順次付加する値からなる送信用数列を特定の規則に従って生成する送信用カウンタ702を示している。この表700では、送信IDは予め設定された値“1”を持ち、送信用数列が0を初期値に+1(カウントアップ差分値)ずつ増加する値としてデータに付加されていく。このときの出力されるデータに付加されるカウント値を例示したものが703である。
次に、表710は、モジュールBの受信接続ID711(図中では受信IDと略)と、受信したパケットに含まれるカウンタ値との一致を確認して受信可否を判定するための受信用カウンタ712を示している。この表710では、受信接続ID711と合致するID“1”を持つパケットを受信する際に、0を初期値に+2ずつ増加する数列を生成してパケット中のカウント値と比較し、合致したものを受信する。従って、モジュールBではモジュールAが出力するデータのうち、偶数(第1の属性)のカウント値を持つパケットに含まれるデータのみを取得する。このときに受信するカウント値を持つデータのみを例示したものが715である。
同様に、モジュールCについての表720における受信ID721は“1”であり、受信用数列722は1を初期値として+2ずつ増加する数列を生成する。従って、モジュールCではモジュールAが出力するデータのうち、奇数(第2の属性)のカウント値を持つパケットに含まれるデータのみを取得する。このときに受信するカウント値を持つデータのみを例示したものが725である。
このようにして、モジュールAの出力データは奇数のカウント値を持つデータと偶数のカウント値を持つデータに分離されてモジュールB及びモジュールCで処理されるため、データの処理が並列化され、2倍の速度で処理が完了することとなる。言いかえると、モジュールBはn(n=2)で割り切れるカウント値を含むパケットを処理し、モジュールCはn(n=2)で割り切れないカウント値を含むパケットを処理する。
次に、モジュールBが処理したデータは、モジュールBの送信ID713と、送信カウンタ714の値を付加されて出力されていく。この表では、送信ID“3”と、受信用カウンタと同様に0を初期値として+2ずつ増加する数列の値が付加される。このときに送信されるデータに付加されるカウント値を例示したものが716である。
一方で、モジュールCが処理したデータは、モジュールCの送信ID723と、送信カウンタ724の値を付加されて出力されていく。この表では送信ID“3”と受信用カウンタと同様に1を初期値として+2ずつ増加する数列上の値が付加される。このときに送信されるデータに付加されるカウント値を例示したものが726である。
こうして出力されたデータは、モジュールDにおいて、受信ID731の“3”と一致するIDを持ち、かつ、モジュールDの受信用カウンタ732が生成する0を初期値として+1ずつ増加する数列上の値と一致するカウント値を持つデータが受信される。このときに受信されるデータのカウント値を例示したものが733である。
このようにして、モジュールBとモジュールCから出力される奇数と偶数のカウント値を持つデータは全て、モジュールDにおいて受信されることで、並列化されたデータ処理が再び一つのデータストリームに集約される。
ところで、このようなデータの並列処理を行う際に、モジュールBとモジュールCにおいて処理速度が変動する等で異なる場合、必ずしもモジュールDに到達するデータがモジュールDのカウント値の変化と同一の順序となることが保証できない場合がある。
何らかの処理の都合で、モジュールBの処理時間が長くなってしまったとして、その結果、モジュールBが2つのデータを出力する間にモジュールCが3つのデータを出力してしまったとする。この場合、モジュールDがデータを順序どおりに受け付けるために、モジュールCから出力されたデータを受信せずに、モジュールBからのデータを受信する仕組みがなければならない。
図8を用いて、実施形態1におけるデータの送受信の時間軸上の動作を説明する。
801は、モジュールAからリングバスに投入される未処理データ列である。ここでは、一定間隔でデータが順次投入されるケースを仮定しているが、この投入間隔は他の技術によって様々に制御されても良い。
まず、最初に投入されるデータ802は送信用数列の初期値“0”を付加して投入される。このデータは、先に図7で説明した仕組みによって、モジュールBで受信されて処理される(803)。本説明において、モジュールB及びモジュールCの処理時間は、基本は4サイクルである場合を例示している。
モジュールBで処理された後、データ804はリングバス110上に出力される。ここで、モジュールCは図7の説明のとおり奇数の値を持つパケットを待っているため、データ804を受信しない。従って、データ804は次のサイクルでモジュールDの入力に移動する。
モジュールDは、図7の説明のとおり、初期値0から始まり+1ずつ増加する数列上の値に合致するデータを待っているため、データ805を受信して処理する。データ805はモジュールDによって処理された後、リングバス110を介してモジュールAから外部へ出力される。
次に、モジュールAから投入されるデータ806は、カウント値として“1”を付加されている。モジュールBは偶数のカウント値を待っているため、“1”を持つデータ806は受信しない。
データ806は次のサイクルにモジュールCの入力に移動する(データ807)。ここで、モジュールCは奇数のカウント値のデータを待っているため、“1”を持つデータ807を受信し処理を行う(808)。処理後のデータは再び“1”が付加されてモジュールCから出力される(データ809)。
ここで、モジュールDは、すでに“0”を持つデータ805を受信しているため、次のカウント値“1”を待っている。従って、上記で出力されたデータ809を受信して処理する。
ここまで示した動作により、各々4サイクルの処理時間を必要とするモジュールB及びモジュールCを並列に使用することで、モジュールDにおけるデータ入力間隔は2サイクルとなっている。このことから、並列実行によって処理性能が向上する。
以上説明したように、実施形態1によれば、2つの処理モジュールによってデータ処理を並列化する際には、適切なデータの選別を行って、2つの処理モジュールが交互に処理を行う。これにより、データの処理が並列化され、2倍の速度で処理を完了することができる。
つまり、モジュール内の受信カウンタの初期値とカウントアップ値を指定できるようにするだけで、N個の同機能のモジュールを有効に使って処理速度をN倍にすることが可能となる。例えば、実施形態1では、2つの同機能のモジュールそれぞれを、奇数番目のデータ処理と偶数番目のデータ処理に振り分けることで分散処理を行わせ、見かけ上2倍の速度で処理させることが可能となる。
(実施形態2)
次に、本発明における実施形態2について説明する。
実施形態1の図8にて説明した動作において、モジュールAから出力される次のデータ810が、モジュールBにおいて、例えば、処理時間が通常の倍かかってしまった場合、データ入力の遅滞が発生する。これは、例えば、モジュール内部のメモリアクセスの競合やその他共有リソースの排他制御等により、処理中に待ち時間が生じる等の理由により一般的に起こりうる事象である。
この場合にも好適に動作させるための構成について、引き続き図8を用いて説明する。
この場合、次に、モジュールAから出力されるデータ813がモジュールCで処理されて(814)出力されるタイミング(データ815)よりも、モジュールBで処理されて(811)出力されるデータ812がモジュールDに到達するタイミング(データ817)が後になってしまう。
例えば、これらのデータが画像データである場合、このような順序で到達したデータを到達した順序で処理して出力してしまうと、画像データの位置逆転がおきてしまうことになり、画質劣化(画像破壊)が起きてしまう。
こうしたことから、処理時間が不意に変動した場合でも、出力データの順序を変えないようにする仕組みが必要である。
実施形態2においては、このような場合、次のような動作を行うことで処理順序を保証する。
データ815が到達した段階で、モジュールDは、先に“0”と“1”を持つデータを処理しているため、次は“2”を持つデータを待っている。しかし、先に到達するのは“3”を持つデータ815であるため、これは先に図5(a)において説明した受信条件を満たさないため、受信されない。
この場合は、データ815の保留ビットを立ててそのままリングバス110上を周回させる。よって、データ815は保留ビットを立てられて、モジュールD(データ816)からモジュールAへと受け渡される(データ818)。その後、モジュールA、モジュールB、モジュールCは共にこのデータと受信IDが一致しないためにスルーされ、再びモジュールDに戻ってくる。
この間に、モジュールBが処理したデータ817がモジュールDに到達する。このデータ817が保持するカウント値は“2”であり、モジュールDが待っている値であるため、受信されて処理される。
その後、周回してきたデータ819がモジュールDに到達した際には、モジュールDが待つカウント値は+1されて“3”となっているため、データ819は受信されて処理される。
以上説明したように、実施形態2によれば、実施形態1で説明した効果に加えて、保留による周回制御によって、処理遅延等の要因によってデータ到達が遅れた場合にも、処理順序を正しく保つことができる。
(実施形態3)
本発明の実施形態3を図9を用いて説明する。
ここでは、1ラインの入力画像903からフィルタ処理された間引き画像904を生成する処理を例示する。
実施形態3においては、先に示した実施形態とは異なり、並列処理を行うモジュールBとモジュールCにおいて入力データ量と出力データ量が異なるところに注目する。
図13に実施形態3において例示する処理の概念図を示す。
図示する通り、モジュールB並びにモジュールCは、連続する3画素に予め指定されたフィルタ係数をかけることで間引き画像を形成する処理を行うものとする。即ち、入力画素1300に示す丸数字1〜5に対し、3画素ずつ係数a,b,cをかけて加算するフィルタ処理を行い、1301に示す出力画素A〜Eを出力する。従って、最初の出力Aを得るためには、入力として“0”、“1”、“2”の3画素が必要であり、次の出力Bを得るためには、“2”、“3”、“4”の3画素が必要となる。
この場合、この処理をモジュールBとモジュールCで交互に行うとすると、モジュールBとモジュールCは、ともに2画素ずつ重複しながら全ての入力画素をフィルタ処理で使用することから、入力についてはモジュールAが出力する全ての画素を入力する場合を例に取る。このようにするためには、受信用カウンタは0を初期値として+1ずつ増加する単純なカウンタを用いることが可能である。言うまでもないが、例えば、モジュールBは初期値0から+1ずつ加算しモジュールCでは初期値1から+1ずつ加算するなど、やや複雑な受信用カウンタを行うことで、出力に必要な入力データのみを受信するように構成しても良い。
このようにして、入力データを全て受信しながら、出力画素の算出においては、モジュールBは、まず、入力画素の“0”、“1”、“2”が入力された時点でフィルタ演算を行ってAを出力する。また、モジュールCは、まず、入力画素の“2”、“3”、“4”が入力された時点でフィルタ演算を行ってBを出力する。そして、このモジュールBによる動作とモジュールCによる動作を、交互に行って続くC〜Eを出力していく。
このような画像処理例において、表900は、モジュールAの送信接続ID901(図中では送信IDと略)と、送信時にパケットに順次付加する送信用カウンタ902を示している。この表900では、送信IDは予め設定された値“1”を持ち、送信用カウンタが0を初期値に+1ずつ増加する値としてデータに付加されていく。
このときの出力されるデータに付加されるカウント値を例示したものが903である。
次に、表910は、モジュールBの受信接続ID911(図中では受信IDと略)と受信したパケットに含まれるカウンタ値との一致を確認して受信可否を判定するための受信用カウンタ912を示している。この表910では、受信接続ID911と合致するID“1”を持つパケットを受信する際に、0を初期値に+1ずつ増加する値を生成してパケット中のカウント値と比較し、合致したものを受信する。モジュールAの送信用カウンタとモジールBの受信用カウンタが全く同じ数列となるため、このときにモジュールBが受信するデータは、モジュールAが出力するデータの全てとなる。
同様に、モジュールCについての表920における受信ID921は“1”であり、受信用カウンタ922は0を初期値として+1ずつ増加する値を生成する。モジュールAの送信用カウンタとモジュールCの受信用カウンタも全く同じ数列となるため、このときにモジュールCが受信するデータも、モジュールAが出力するデータの全てとなる。
次に、モジュールBが処理したデータは、モジュールBの送信接続ID913(図中では送信IDと略)と、送信用カウンタ914の値を付加されて出力されていく。この表910では、送信ID“3”と、受信用カウンタ912と同様に0を初期値として+2ずつ増加する値が付加される。このときに送信されるデータに付加されるカウント値を例示したものが915である。
一方で、モジュールCが処理したデータは、モジュールCの送信ID923と、送信用カウンタ924の値を付加されて出力されていく。この表920では、送信ID“3”と受信用カウンタ922と同様に1を初期値として+2ずつ増加する値が付加される。このときに送信されるデータに付加されるカウント値を例示したものが925である。
こうして出力されたデータは、モジュールDにおいて、受信ID931“3”と一致するIDを持ち、かつ、モジュールDの受信用カウンタ932が生成する0を初期値として+1ずつ増加する値と一致するカウント値を持つデータが受信される。このときに受信されるデータのカウント値を例示したものが933である。
このようにして、モジュールBとモジュールCから出力される奇数と偶数のカウント値を持つデータは全て、モジュールDにおいて受信されることで、並列化されたデータ処理が再び一つのデータストリームに集約される。
図10を用いて、実施形態3におけるデータの送受信の時間軸上の動作を説明する。
1001は、モジュールAからリングバス110に投入される未処理データ列である。ここでは、一定間隔でデータが順次投入されるケースを仮定しているが、この投入間隔は他の技術によって様々に制御されても良い。
まず、最初に投入されるデータ1002は送信用カウンタの初期値“0”を付加して投入される。このデータは先に図9で説明した仕組みによって、モジュールBで受信される。
ところで、図9で示したとおり、モジュールBが受信したデータは、モジュールCでも受信されなければならない。従って、モジュールBは、受信時にデータパケットを無効としない設定を予め行っておき、受信したデータ1002を消去せずにそのままモジュールBから出力する(データ1003)。このようにして、モジュールAから出力されるデータ群1001は、モジュールBとモジュールCの両方に順次受信される。
実施形態3において、モジュールB及びモジュールCの処理時間は、基本は、例えば、3画素の読出とフィルタ演算にそれぞれ2サイクルとして、8サイクルであった場合を例示する。
モジュールBは、最初に出力するデータ1008を得るためのフィルタ処理に必要なデータ1004を受信したところから処理1005を開始し、8サイクル後にデータ1008をリングバス110に出力する。データ1008はIDとして“3”を持つため、受信ID“1”を待つモジュールCは受信しない。よって。そのままスルーされてモジュールDに到達する(データ1009)。
モジュールDは、図9の説明のとおり、初期値0から始まり+1ずつ増加する値に合致するデータを待っているため、データ1009を受信して処理する。データ1009はモジュールDによって処理された後、データ1010として出力され、リングバス110を介してモジュールAから外部へ出力される。
一方で、モジュールCは、最初に出力するデータ1011を得るためのフィルタ演算処理に必要なデータ1006を受信したところで処理1007を開始し、8サイクル後にデータ1011を出力する。この時、モジュールCには予め先頭の2画素を無視する設定をするなどして、モジュールBとの処理範囲をずらす設定を行う仕組みを持たせておくことで、交互に処理結果を得ることができる。
ここで、モジュールDは、すでに“0”を持つデータ1009を受信しているため、数列上の次の値“1”を待っている。従って、上記で出力されたデータ1011を受信して処理する。データ1011はモジュールDによって処理された後、データ1012として出力され、リングバス110を介してモジュールAから外部へ出力される。
ここまで示した動作により、各々8サイクルの処理時間を必要とするモジュールB及びモジュールCを並列に使用することで、モジュールDにおけるデータ入力間隔は4サイクルとなっている。このことから、並列実行によって処理性能が向上する。
以上説明したように、実施形態3によれば、並列処理を行うモジュールBとモジュールCにおいて入力データ量と出力データ量が異なる場合でも、実施形態1と同様の効果を得ることができる。
(実施形態4)
次に、本発明の実施形態4について説明する。
実施形態3の図10にて説明した動作において、例えば、モジュールBの処理が何らかの要因により遅延してしまった場合、データ入力の遅滞が発生する。この場合にも好適に動作させるための構成について図11を用いて説明する。
この場合、モジュールAが出力するデータ群1101について、まず、最初のデータ1102が出力されると、モジュールBにおいて受信される。これと共に、モジュールBは。このデータ1102を受信時に無効化しないモードに予め設定されることで、同じデータをスルーし、モジュールCに受け渡すことができる(データ1103)。
このように、正常にデータが受信されている場合においては、図10に示すようにデータフローは正常に処理される。但し、もし、データ1104を受信して処理1105を開始したあと、この処理1105の処理時間が8サイクルを超えてしまった場合などには、あるところでモジュールBの受信バッファ等が一杯になる等してデータを受信できなくなる場合がありうる。
ここでは、受信できなかったデータに保留ビットを付加してリングバス110上を周回させるため、次へスルーする動作をすることは上述の通りである(データ1108)。尚、モジュールCは、データ1106を受信したところで処理1107を開始する。
しかし、実施形態1と異なる設定として、実施形態2ではモジュールBもモジュールCも同じデータを受信するようになっていることから、保留ビットを付加されたデータ1108は、モジュールCにおいても受信されてしまう。
ここで、モジュールCが、受信時にデータパケットを無効化する設定となっていた場合には、ここでデータ1108は消去され、二度とモジュールBに到達することはなくなってしまうという不具合が生じてしまう。
こうしたことから、モジュールBにおいて受信できないケースがありうるとするならば、モジュールCにおいても受信したデータを消去せずにスルーする(データ1109)動作をする設定が必要となる。こうすることで、処理遅延のために読み取れなかったモジュールBも、データ1108を受信することが可能となる。
しかし、モジュールBは、受信したデータパケットを無効化しない設定となっているため、今度は、モジュールBにデータ1110が受信された後も、データ1111がそのまま出力されてしまう。
前述のとおり、モジュールCも受信したパケットを無効化しない設定となっているため、データ1112が出力されてしまい、この後、このデータ1112がリングバス110上を巡回し続けてしまう。全てのデータに対してこのようなことが起きるため、リングバス110上のトラフィックは入力データ量に従って増加していき、比較的早い段階でオーバーフローするか、新たなデータ投入ができなくなってデッドロック状態となってしまう。
こうしたことを防ぐため、さらに別の技術を例示する。
この技術的課題は、いずれかの方法によってすでにモジュールBとモジュールCとが受信済のデータを消去する仕組みを導入することで解決される。
ここでは、送信したモジュールが、自分が送信時に付加した送信接続IDと同一の接続IDを持つパケットが保留ビットなしの状態で受信された場合に、そのパケットを消去するという処理を導入することで解決する例を示す。
図11の例においては、モジュールAが送信した接続ID“1”を持つデータが、保留ビットなしの状態で周回してきた際にこれを無効とする。
但し、これだけでは、図11のデータ1110がモジュールAによって無効化されてモジュールBに送信されなくなるため、保留ビットについては、保留ビットを付加したモジュールがそれをおとすという仕組みを導入する必要がある。
これにより、データ1110がモジュールBで受信されるまでリングバス110上を保留ビット付きで周回し、モジュールBが受信した後は保留ビットなしのデータ1111が周回するようにすることができる。
このデータ1111はデータ1112の時点でモジュールAに受信されるため、保留ビットなしで接続IDがモジュールAの送信接続IDと同一であると判定されて消去される。その結果、データ1113は出力されなくなり、受信済のデータの周回によるトラフィックの増加を防ぐことが可能となる。
ここで発生する更なる問題と、その解決方法を例示する。
図9で示したとおり、モジュールBとモジュールCは両方とも送信接続IDとして“3”を付加して送信パケットを生成する。
従って、前述した自モジュールの送信接続IDと同一の接続IDを持ち、保留ビットのないパケットを消去する機能によって、モジュールBの出力がモジュールCにおいて無効化されてしまい、モジュールDに受信されずに消去されてしまう。その結果、モジュールDは、この消去されたデータを待ち続ける間、他のデータを保留にしてしまうため、トラフィックが増大しデッドロックとなってしまう。
この問題を更に解決するため、各モジュールにおいて、自モジュールの送信接続IDと同一の接続IDを持ち、保留ビットが立っていない有効なパケットを無効にする無効化機能をON/OFFすることを予め設定する構成(設定保持部)をさらに持たせる。
この構成を用いて、モジュールBについては、これをONし、モジュールCについてはこれをOFFする。一般的には、並列動作させる複数のモジュールの内、データを送信する前段のモジュール(実施形態4ではモジュールA)よりもリング伝送方向上下流にあって、かつ、最も近いモジュール(実施形態4ではモジュールB)以外のモジュール(実施形態4ではモジュールC)について、無効化機能をOFFするという設定を行う。
以上説明したように、実施形態4によれば、同一の送信接続IDを持つモジュールを複数配置しても、それらの出力を互いに誤って無効化してしまうことなく、集約ポイントとなるモジュール(実施形態4ではモジュールD)に伝送することが可能となる。
但し、この実施形態4の構成は、上述のように一度並列化のために複数のモジュールに分散処理させたデータを再び一つのモジュールで集約する場合のみ必要な技術であり、分散処理したデータをそのまま別々に出力させる場合には、必須ではない。
(実施形態5)
本発明の実施形態5を、図12を用いて説明する。
一般に、モジュールは、複数の処理においてそれぞれの処理に適した設定を行って使用される。従って、データ処理においては、設定コマンドによる動作パラメータ(設定パラメータ)の設定とデータコマンドによるデータ処理が交互に実行される。
通常、設定パラメータはモジュール毎に異なるため、受信部121においては設定コマンドに含まれる設定先モジュールの指定ID等を参照して、自モジュールに対する設定である場合のみ、その設定値を受け入れて設定部140に送信し保持する。
例えば、3×3のマトリクス演算処理モジュールの場合、その処理には3×3個のマトリクス係数の設定が必須である。これらのモジュールを並列に実行したい場合、データ処理においては、図7で示したように、モジュールAが送信したデータをモジュールBが偶数番目、モジュールCが奇数番目のデータを交互に受信するよう受信用数列を生成する。しかし、この生成された受信用数列の設定のまま設定コマンドを受信してしまうと、3×3の設定コマンドの内、モジュールBは偶数番目の係数のみ、モジュールCは奇数番目の係数のみを受け取って設定することになる。その結果、正しく係数設定が行えないという問題が生じてしまう。
この問題を解決するため、設定コマンドの受信に際しては、モジュールB及びモジュールCの両方において、0を初期値として+1ずつ増加する数列を生成させ、モジュールAが出力する全ての設定コマンドを受信するようにする。一方で、データ処理においては、図7において説明したとおりの数列によって交互に処理を実行するということが必要となる。
図12(a)は、本発明の実施形態5における受信部の構成を示すものである。図5(a)の構成に加え、第2の受信用カウンタであるコマンド受信用カウンタ1201とデータ/コマンド識別部1202を備える。
このように、受信したデータが設定コマンドであるとデータ/コマンド識別部1202が識別する場合は、コマンド受信用カウンタ1201を用いて受信判定を行う。一方、受信したデータが通常のデータであるとデータ/コマンド識別部1202が識別する場合には、データ受信用カウンタとして機能する受信用カウンタ502が生成した値を用いて受信判定を行う。
つまり、データ/コマンド識別部1202の識別結果に応じて、比較部503は、使用する受信用カウンタとして、コマンド受信用カウンタ1201とデータ受信用カウンタとして機能する受信用カウンタ502とを切り替えて選択する。ここで、データ/コマンド識別部1202は第1の識別部として機能し、比較部503は第1の選択部として機能する。
このようにすることで、設定コマンドによって設定を行っている間はコマンド受信用カウンタ1201が生成する値を用いて受信判定を行うことで全ての設定コマンドを受信する。そして、設定終了後にデータが転送され始めると、受信用カウンタ502を用いて受信判定を行うことで、所望の並列動作が実現できるようになる。
しかし、そもそも設定コマンドを受信する際には、初期状態からのパラメータ設定が必要なため、設定コマンド用のコマンド受信用カウンタ1201を設定コマンドで設定することに手順上の前後関係における矛盾がある。設定コマンドを受信するための設定を事前に行う必要があるためである。
よって、例えば、コマンド受信用カウンタ1201の設定は設定コマンド以外の方法で直接行えるようにする方法が考えられる。あるいは、この受信用数列の生成は、例えば、0を初期値として+1ずつ増加する単純カウンタとして実装する等の方法もありうる。
さらに、コマンド受信用カウンタの設定のために更に特殊なコマンド種別を用意し、そのコマンド種別に対しては受信用数列を参照せずに受信判定を行う等の方法が例示できる。
送信側においても、受信側と同様に、データ送信の場合と設定コマンド送信で数列の生成に違いが生じるため、同様の仕組みが必要となる。
図12(b)を用いて、本発明の実施形態5における送信部の構成を示す。図5(b)の構成に加え、第2の送信用カウンタであるコマンド送信用カウンタ1203とデータ/コマンド識別部1204を備える。
生成するパケットが設定コマンドであるとデータ/コマンド識別部1204が識別する場合は、コマンド送信用カウンタ1203が生成する値をパケットに付加する。一方、生成するパケットがデータであるとデータ/コマンド識別部1204が識別する場合は、データ送信用カウンタとして機能する送信用カウンタ512が生成する値をパケットに付加する。
つまり、データ/コマンド識別部1204の識別結果に応じて、パケット生成部515は、使用する送信用カウンタとして、コマンド送信用カウンタ1203とデータ送信用カウンタとして機能する送信用カウンタ512とを切り替えて選択する。ここで、データ/コマンド識別部1204は第2の識別部として機能し、パケット生成部515は第2の選択部として機能する。
このようにすることで、設定コマンドによって設定を行っている間は設定コマンド送信用数列が適用されることで全ての設定コマンドを送信する。そして、設定終了後にデータが転送され始めると、送信用カウンタ512を用いて送信パケット生成を行うことで、所望の並列動作が実現できるようになる。
実際には、設定コマンドは書込コマンドと読出コマンドに大別される。書込コマンドは受信したデータに含まれる設定値を、所定のアドレスに書き込むため1サイクル動作が可能である。一方、読出コマンドは、データに含まれる読出アドレスを発行し、そのアドレスのデータを読み出して出力パケットに格納するため、最低でも2サイクル必要となる。
このような読出コマンドの処理時間を隠蔽するために複数モジュールを並列に駆動して、交互に読出動作を行わせることによって、見かけ上の読出処理速度を倍にすることが可能となる。
この場合の送受信数列は、例えば、図7に示したものと同様のものを用いることで実現可能である。
但し、送信される読出コマンドは、モジュールBに対するコマンドとモジュールCに対するコマンドが交互に配置されていなければならないという制約が付くことが、図7から明白である。すなわち、モジュールBに対する読出コマンドは偶数番目、モジュールCに対する読出コマンドは奇数番目となるようにコマンド列の並べ替えが必要である。
このようなコマンドの配列は、モジュールAの送信時までにできていれば良い。例えば、ソフトウェアによってメモリ上に展開されたモジュールB用の読出コマンド列とモジュールC用の読出コマンド列を交互に読み取りながらリングバス110上にコマンドを送信する。これによって、外部制御ドライバソフトウェアなどからは見えない仕組みを用意しても良い。
当然のことながら、並列化を指示するのがドライバソフトウェアであれば、ドライバソフトウェア自体がこのようなコマンドの並べ替えを行っても良い。また、こうした並べ替えは、出力側においても同様に有効である。
以上説明したように、実施形態5によれば、設定コマンドによって設定を行っている間は設定コマンド送信用数列が適用されることで全ての設定コマンドを送信する。そして、設定終了後にデータが転送され始めると、送信用カウンタ512を用いて送信パケット生成を行うことで、所望の並列動作を実現することができる。
尚、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (19)

  1. リングバスに接続された複数のモジュールを有し、データと前記複数のモジュールの論理的な処理順序に対応する第1の識別子とを格納するパケットを隣接する一方のモジュールから受信し、当該第1の識別子に基づいて自モジュールで処理するか否かを決定し、受信したパケットを隣接する他方のモジュールへ送信するように構成された情報処理装置であって、
    第1、第3のモジュールは、
    自モジュールで処理したデータをパケットに含めて前記他方のモジュールへ送信し、
    複数の第2のモジュールの其々は、
    前記一方のモジュールから受信したパケットについて、前記第1の識別子に基づいて前記第1のモジュールで処理されたデータを取得し、当該データを処理することで得られる処理結果を、当該複数の第2のモジュールからのパケットがかわるがわる前記第3のモジュールで処理されるように付与された第2の識別子と対応づけて、前記他方のモジュールへ送信する
    ことを特徴とする情報処理装置。
  2. 前記複数のモジュールは、自モジュールにおいて処理対象のデータに対して実施する処理の処理内容を示す設定情報を保持する記憶手段を備える
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記複数の第2のモジュールの其々は、前記第1のモジュールで処理されたデータが含まれる複数のパケットについてかわるがわる処理を実施し、前記複数の第2のモジュールの記憶手段は、それぞれ異なる処理内容を示す設定情報を記憶している
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記複数の第2のモジュールの其々は、前記第1のモジュールで処理されたデータが含まれる複数のパケットを処理し、前記複数の第2のモジュールの記憶手段は、それぞれ同様の処理内容を示す設定情報を記憶している
    ことを特徴とする請求項2に記載の情報処理装置。
  5. 前記複数のモジュールの其々は、前記第2の識別子を付与するためのカウンタを備える
    ことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記複数のモジュールの其々は、前記第1の識別子に関して自モジュールで処理するか否かを決定するための参照情報を保持する保持手段を備える
    ことを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
  7. リングバスに接続された複数のモジュールを有し、該複数のモジュールのそれぞれは通信部と処理部とを備え、データを格納するパケットを隣接する一方のモジュールから受信し、パケットを隣接する他方のモジュールへ送信するように構成された情報処理装置であって、
    第1の通信部は、
    自モジュールで処理したデータと、第1の識別子および第2の識別子とをパケットに含めて前記他方のモジュールへ送信し、
    第2の通信部は、
    前記隣接する一方のモジュールから受信したパケットに含まれる第1の識別子が、自モジュールの保持する情報と対応し、かつ、当該受信したパケットに含まれる第2の識別子が第1の属性を示していると、当該受信したパケットに含まれるデータを抽出して自モジュールの処理部に処理させ、
    第3の通信部は、
    前記隣接する一方のモジュールから受信したパケットに含まれる第1の識別子が、自モジュールの保持する情報と対応し、かつ当該受信したパケットに含まれる第2の識別子が第2の属性を示していると、当該受信したパケットに含まれるデータを抽出して自モジュールの処理部に処理させる
    ことを特徴とする情報処理装置。
  8. 前記第2の通信部および前記第3の通信部は、自モジュールで処理したデータを、新しい第1の識別子と対応づけてパケットとして前記他方のモジュールへ送信し、
    第4の通信部は、前記新しい第1の識別子に基づいて前記第2の通信部および前記第3の通信部より出力されるパケットからデータを抽出して、自モジュールの処理部に処理させる
    ことを特徴とする請求項7に記載の情報処理装置。
  9. 前記第1の通信部は、パケットの送信元となる送信モジュールと前記パケットの受信先となる受信モジュールとの論理的な接続関係を決定するための情報を前記第1の識別子として、前記パケットに含まれるデータの処理順序を指示するカウント値を第2の識別子としてパケットに含めて前記他方のモジュールへ送信する
    ことを特徴とする請求項7又は8に記載の情報処理装置。
  10. 前記第1の通信部は、前記カウント値を生成するための送信用カウンタを備え、
    前記第2の通信部は、前記第1の属性を示す値を生成する第1の受信用カウンタを備え、
    前記第3の通信部は、前記第2の属性を示す値を生成する第2の受信用カウンタを備えている
    ことを特徴とする請求項9に記載の情報処理装置。
  11. 前記パケットは、当該パケットが有効であるかどうかを示す第1のフラグと、受信が保留されたかどうかを示す第2のフラグとを含む
    ことを特徴とする請求項7乃至10のいずれか1項に記載の情報処理装置。
  12. 前記通信部は、
    受信したパケットに含まれる第1の識別子が自モジュールに予め設定された前記第1の識別子と等しく、かつ、前記受信したパケットが前記第2のフラグは受信が保留されていないことを判定する判定手段と、
    前記判定手段の判定の結果に基づいて、前記受信したパケットを消去する消去手段と、
    前記判定手段の判定の結果に応じて、前記受信したパケットを消去するか否かを予め指定する指定手段と
    を備えることを特徴とする請求項11に記載の情報処理装置。
  13. 前記通信部は、受信したパケットのデータを自モジュールの処理部に処理させるために抽出する際に、当該パケットの第1のフラグを、無効を示す値に変更する無効化手段を更に備える
    ことを特徴とする請求項12に記載の情報処理装置。
  14. 前記通信部は、前記無効化手段の機能を有効にするかどうかを示す設定保持手段を更に備え、
    前記無効化手段は、当該保持手段の値に応じて、自モジュールでデータを抽出したパケットの第1のフラグを無効に変更する
    ことを特徴とする請求項13に記載の情報処理装置。
  15. 前記第1の受信用カウンタ及び前記第1の送信用カウンタの少なくとも一方は、初期値とカウントアップ差分値とを参照して、初期値から始まるカウントアップ差分値ずつ増加する値からなる数列を生成する
    ことを特徴とする請求項9乃至14のいずれか1項に記載の情報処理装置。
  16. 受信するパケットの種別を識別する第1の識別手段と
    生成するパケットの種別を識別する第2の識別手段と、
    前記第1の受信用カウンタとは異なる第2の受信用カウンタと、
    前記第1の送信用カウンタとは異なる第2の送信用カウンタと、
    前記第1の識別手段の識別結果に応じて、使用する受信用カウンタとして、前記第1の受信用カウンタと前記第2の受信用カウンタとを切り替えて選択する第1の選択手段と、
    前記第2の識別手段の識別結果に応じて、使用する送信用カウンタとして、前記第1の送信用カウンタと前記第2の受信用カウンタとを切り替えて選択する第2の選択手段と、
    を更に備えることを特徴とする請求項9乃至10のいずれか1項に記載の情報処理装置。
  17. 前記パケットに含まれる前記カウント値は、少なくとも前記リングバスに存在しうるパケット数M以上の数値を表現できるビット数に限定したカウント値を保持可能とする
    ことを特徴とする請求項9乃至16のいずれか1項に記載の情報処理装置。
  18. リングバスに接続された複数のモジュールを有し、データと前記複数のモジュールの論理的な処理順序に対応する第1の識別子とを格納するパケットを隣接する一方のモジュールから受信し、当該第1の識別子に基づいて自モジュールで処理するか否かを決定し、受信したパケットを隣接する他方のモジュールへ送信するように構成された情報処理装置の制御方法であって、
    第1、第3のモジュールが、
    自モジュールで処理したデータをパケットに含めて前記他方のモジュールへ送信し、
    複数の第2のモジュールの其々が、
    前記一方のモジュールから受信したパケットについて、前記第1の識別子に基づいて前記第1のモジュールで処理されたデータを取得し、当該データを処理することで得られる処理結果を、当該複数の第2のモジュールからのパケットがかわるがわる前記第3のモジュールで処理されるように付与された第2の識別子と対応づけて、前記他方のモジュールへ送信する
    ことを特徴とする情報処理装置の制御方法。
  19. リングバスに接続された複数のモジュールを有し、該複数のモジュールのそれぞれは通信部と処理部とを備え、データを格納するパケットを隣接する一方のモジュールから受信し、パケットを隣接する他方のモジュールへ送信するように構成された情報処理装置の制御方法であって、
    第1の通信部が、自モジュールで処理したデータと、第1の識別子および第2の識別子とをパケットに含めて前記他方のモジュールへ送信する送信工程と、
    第2の通信部が、前記隣接する一方のモジュールから受信したパケットに含まれる第1の識別子が、自モジュールの保持する情報と対応し、かつ、当該受信したパケットに含まれる第2の識別子が第1の属性を示していると、当該受信したパケットに含まれるデータを抽出して自モジュールの処理部に処理させる第1の処理工程と、
    第3の通信部が、前記隣接する一方のモジュールから受信したパケットに含まれる第1の識別子が、自モジュールの保持する情報と対応し、かつ当該受信したパケットに含まれる第2の識別子が第2の属性を示していると、当該受信したパケットに含まれるデータを抽出して自モジュールの処理部に処理させる第2の処理工程と
    を有することを特徴とする情報処理装置の制御方法。
JP2012064470A 2012-03-21 2012-03-21 情報処理装置及びその制御方法 Pending JP2013196509A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012064470A JP2013196509A (ja) 2012-03-21 2012-03-21 情報処理装置及びその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012064470A JP2013196509A (ja) 2012-03-21 2012-03-21 情報処理装置及びその制御方法

Publications (1)

Publication Number Publication Date
JP2013196509A true JP2013196509A (ja) 2013-09-30

Family

ID=49395335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012064470A Pending JP2013196509A (ja) 2012-03-21 2012-03-21 情報処理装置及びその制御方法

Country Status (1)

Country Link
JP (1) JP2013196509A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019021793A1 (ja) * 2017-07-24 2019-01-31 オリンパス株式会社 画像処理装置および撮像装置
JP2020160755A (ja) * 2019-03-26 2020-10-01 株式会社日立製作所 半導体装置
JP2022526929A (ja) * 2019-03-27 2022-05-27 グラフコアー リミテッド 複数の組み込みリングを有するネットワークコンピュータ

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010206517A (ja) * 2009-03-03 2010-09-16 Canon Inc データ処理装置、データ処理装置の制御方法、およびプログラム
JP2012008976A (ja) * 2010-06-28 2012-01-12 Canon Inc データ処理装置、データ処理方法、およびプログラム
JP2012043152A (ja) * 2010-08-18 2012-03-01 Canon Inc 情報処理装置、情報処理方法、およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010206517A (ja) * 2009-03-03 2010-09-16 Canon Inc データ処理装置、データ処理装置の制御方法、およびプログラム
JP2012008976A (ja) * 2010-06-28 2012-01-12 Canon Inc データ処理装置、データ処理方法、およびプログラム
JP2012043152A (ja) * 2010-08-18 2012-03-01 Canon Inc 情報処理装置、情報処理方法、およびプログラム

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019021793A1 (ja) * 2017-07-24 2019-01-31 オリンパス株式会社 画像処理装置および撮像装置
WO2019021344A1 (ja) * 2017-07-24 2019-01-31 オリンパス株式会社 画像処理装置および撮像装置
CN110366740A (zh) * 2017-07-24 2019-10-22 奥林巴斯株式会社 图像处理装置和摄像装置
CN110678897A (zh) * 2017-07-24 2020-01-10 奥林巴斯株式会社 图像处理装置及摄像装置
CN110678897B (zh) * 2017-07-24 2022-09-27 奥林巴斯株式会社 图像处理装置及摄像装置
US11468539B2 (en) 2017-07-24 2022-10-11 Olympus Corporation Image processing device and imaging device
JP2020160755A (ja) * 2019-03-26 2020-10-01 株式会社日立製作所 半導体装置
JP7152343B2 (ja) 2019-03-26 2022-10-12 株式会社日立製作所 半導体装置
JP2022526929A (ja) * 2019-03-27 2022-05-27 グラフコアー リミテッド 複数の組み込みリングを有するネットワークコンピュータ
JP2022527066A (ja) * 2019-03-27 2022-05-30 グラフコアー リミテッド 環状コンピュータネットワークにおけるリングの組み込み
JP7342143B2 (ja) 2019-03-27 2023-09-11 グラフコアー リミテッド 複数の組み込みリングを有するネットワークコンピュータ
JP7344981B2 (ja) 2019-03-27 2023-09-14 グラフコアー リミテッド 環状コンピュータネットワークにおけるリングの組み込み

Similar Documents

Publication Publication Date Title
US9462091B2 (en) Information processing apparatus, communication method and storage medium
EP2770477B1 (en) Dynamically reconfigurable pipelined pre-processor
US20070180310A1 (en) Multi-core architecture with hardware messaging
JP5793690B2 (ja) インタフェース装置、およびメモリバスシステム
CN102667649A (zh) 基于多处理器的可编程逻辑控制器及其操作方法
EP1093252A2 (en) Access control device for IEEE 1394 Bus
US8799536B2 (en) Data processing apparatus, data processing method and computer-readable medium
WO2009070324A1 (en) A method for setting parameters and determining latency in a chained device system
JP2006518058A (ja) 改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法
JP2006101525A (ja) データ・フロー・アプリケーションのためのネットワーク・オン・チップ半自動通信アーキテクチャ
US8811418B2 (en) Information processing apparatus, information processing method, and storage medium
US10942771B2 (en) Method, apparatus and system for multi-module scheduling
JP2007034392A (ja) 情報処理装置及びデータ処理方法
US20140006757A1 (en) Method for Thread Reduction in a Multi-Thread Packet Processor
JP5014362B2 (ja) 情報処理装置及びその制御方法、コンピュータプログラム
JP2013196509A (ja) 情報処理装置及びその制御方法
US8127262B1 (en) Communicating state data between stages of pipelined packet processor
US10728178B2 (en) Apparatus and method for distribution of congestion information in a switch
CN100361084C (zh) 用于利用门管理器维护实体顺序的方法和装置
JP4170330B2 (ja) 情報処理装置
KR102539574B1 (ko) 네트워크 온칩 데이터 처리 방법 및 장치
RU2571376C1 (ru) Способ и устройство для параллельной обработки цифровой информации в вычислительной системе
JP2012008976A (ja) データ処理装置、データ処理方法、およびプログラム
US20140019992A1 (en) Method of Parallel Processing of Ordered Data Streams
US10341246B1 (en) Update packet sequence number packet ready command

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151214

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160708

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160905

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170206