JP2006338506A - コネクタ - Google Patents
コネクタ Download PDFInfo
- Publication number
- JP2006338506A JP2006338506A JP2005164206A JP2005164206A JP2006338506A JP 2006338506 A JP2006338506 A JP 2006338506A JP 2005164206 A JP2005164206 A JP 2005164206A JP 2005164206 A JP2005164206 A JP 2005164206A JP 2006338506 A JP2006338506 A JP 2006338506A
- Authority
- JP
- Japan
- Prior art keywords
- connector
- processing
- processing module
- association
- connection
- 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.)
- Abandoned
Links
- 238000012545 processing Methods 0.000 claims abstract description 529
- 238000000034 method Methods 0.000 claims description 77
- 230000008569 process Effects 0.000 claims description 54
- 230000002596 correlated effect Effects 0.000 abstract 2
- 230000009467 reduction Effects 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 18
- 230000008859 change Effects 0.000 description 17
- 238000010276 construction Methods 0.000 description 13
- 238000012546 transfer Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
【課題】複数の処理モジュールを容易に連結して実行することができるように連結構造を構築でき、かつ柔軟に連結構造を変更することができるコネクタを提供する。
【解決手段】コネクタ20に、他のコネクタ20と連結するための入力側連結部24及び出力側連結部26、自分自身と関連付けられる処理モジュールのIDを登録するためのID領域を備えたメモリ部28、および他のコネクタ20との連結状態を判断し、ID領域に登録され関連付けられた処理モジュール40を他のコネクタ20との連結状態に応じて制御する制御部22を設ける。
【選択図】 図3
【解決手段】コネクタ20に、他のコネクタ20と連結するための入力側連結部24及び出力側連結部26、自分自身と関連付けられる処理モジュールのIDを登録するためのID領域を備えたメモリ部28、および他のコネクタ20との連結状態を判断し、ID領域に登録され関連付けられた処理モジュール40を他のコネクタ20との連結状態に応じて制御する制御部22を設ける。
【選択図】 図3
Description
本発明は、一連の処理系を構成する複数の処理モジュールを順に実行するために接続関係を構築するコネクタに関する。
従来より、必要な処理モジュールを所望の順番でパイプライン状に連結した後、初期化し、処理を行うことで一連の画像処理を行うパイプライン化画像処理システムが知られている(例えば、特許文献1および特許文献2参照。)。
特開平7−105020号公報
特開2003−281517号公報
しかしながら、上記従来の技術では、各処理モジュールを直接連結しているため、一旦処理モジュールの接続関係(連結構造)を構築した後は、その連結構造を柔軟に変更することが困難である。また、例えば複数の処理を並列に行う場合には、処理フローの分岐や合流など複雑な連結構造を構築する必要があるが、その際、従来の技術では、各処理モジュール毎に「同期」、「競合」、及び「排他」などの制御を考慮する必要があり、連結構造を容易に構築することができない。更にまた、従来の技術では、処理モジュールの連結構造の構築と同時に各処理モジュールの処理用パラメータの設定を行うため、連結構築作業自体が複雑化する、という問題がある。
本発明は上記問題を解決するためになされたものであり、複数の処理モジュールを容易に連結して実行することができるように連結構造を構築でき、かつ柔軟に連結構造を変更することができるコネクタを提供することを目的とする。
上記目的を達成するために、本発明のコネクタは、入力側及び出力側において少なくとも1つの他のコネクタと連結可能な連結部と、予め定められた処理を実行する処理モジュールに関連付けるための関連付け部と、他のコネクタとの連結状態を判断し、前記関連付け部によって関連付けられた処理モジュールを連結状態に応じて制御する制御部と、を備えている。
本発明のコネクタは、ソフトウェアまたはハードウェアで構成することができ、連結部によって他のコネクタと連結され、関連付け部によって処理モジュールに関連付けられる。また、制御部は該関連付けられた処理モジュールを他のコネクタとの連結状態に応じて制御する。
これにより、処理モジュールの連結構造がコネクタの連結により構築されるため、処理モジュール間の接続関係は疎となり、各処理モジュールの差し替えや変更が容易となると共に、複数の処理モジュールが直接的に連結された従来の場合と同様に、処理モジュールを最適な順序で実行することができる。
また、並列処理(複数のフローを並行して実行する処理)のような複雑な連結構造であっても、コネクタ同士が連結することによって容易に構築することができる。また、処理モジュールの実行制御を処理モジュール側ではなくコネクタ側で行うことができるため、例えば並列処理等では同期や競合、排他等の制御を考慮する必要があるが、処理モジュール側でこれを認識する必要がなくなり、同期や競合、排他等の制御が容易となる。
制御部は、出力側において少なくとも1つの他のコネクタと連結されていると判断した場合には、前記関連付けられた処理モジュールの処理の実行を制御し、該処理モジュールでの処理結果を連結されている他のコネクタに出力することができる。
これにより、自己に関連付けられた処理モジュールの処理結果を後段のコネクタに出力することができ、該後段のコネクタに関連付けられた処理モジュールは該処理結果を用いて処理することができる。
制御部は、入力側において少なくとも1つの他のコネクタと連結されていると判断した場合には、入力側に連結された他のコネクタから取得した処理結果を用いて処理するように前記関連付けられた処理モジュールを制御することができる。
これにより、コネクタは前段のコネクタに関連付けられた処理モジュールの処理結果を取得することができ、コネクタの制御部は自己に関連付けられた処理モジュールを、該処理結果を用いて処理するように制御することができる。
制御部は、入力側及び出力側において少なくとも1つの他のコネクタと連結されていると判断した場合には、入力側に連結された他のコネクタから取得した処理結果を用いて処理するように前記関連付けられた処理モジュールを制御し、該処理モジュールでの処理結果を出力側に連結されている他のコネクタに出力することができる。
これにより、一連の処理の中間の処理を行う処理モジュールに関連付けられたコネクタは、自己に関連付けられた処理モジュールを前段のコネクタに関連付けられた処理モジュールの処理結果を用いて処理させることができ、更に自己に関連付けられた処理結果を後段のコネクタに出力することができるため、後段のコネクタに関連付けられた処理モジュールは該処理結果を用いて処理することができる。
更に、制御部は、入力側において複数の他のコネクタと連結されていると判断した場合には、該複数の他のコネクタに関連付けられた処理モジュール全ての処理が終了するまで前記関連付けられた処理モジュールの処理が開始されないように制御することができる。
このように処理モジュールの処理を制御することにより、例えば、複数の処理モジュールによる並列処理が行われるように各コネクタが連結された場合であって、並列処理の合流先の処理モジュールが該並列処理の各処理モジュールでの処理結果全てを用いて処理を行う場合に有効である。
制御部は、入力側及び出力側において少なくとも1つの他のコネクタと連結されていると判断した場合で、かつ前記関連付け部によって処理モジュールが関連付けられていないと判断した場合または関連付けられた処理モジュールが無効であると判断した場合には、入力側に連結された他のコネクタから取得した処理結果を処理することなく出力側に連結されている他のコネクタに出力することができる。
処理対象のデータによっては、連結された処理モジュールの一部をスキップしたい(処理をとばしたい)場合もある。その場合には、関連付け部によって処理モジュールを関連付けない、または関連付けられた処理モジュールを無効にしておけば、該コネクタは前段のコネクタから受け取った処理結果を処理モジュールで処理することなくそのまま後段のコネクタに出力することができる。これにより、複数の処理モジュールによる一連の処理を停止させることなく、一部の処理をとばすことができる。
なお、コネクタは、他のコネクタとの連結構造を示した連結情報および処理モジュールとの関連付けを示した関連付け情報を所定の記憶装置に出力する出力部を更に備えていてもよい。
また、他のコネクタとの連結構造を示した連結情報および処理モジュールとの関連付けを示した関連付け情報を記憶した記憶装置から連結情報及び関連付け情報を読み出し、該読み出した連結情報及び関連付け情報に基づいて前記連結部による連結と前記関連付け部による関連付けを再現する再現部を更に備えていてもよい。
これにより、一旦構築された連結構造を再利用、再構築することが容易となる。なお、再現部は、記憶されている連結構造及び処理モジュールの関連付けと同一の連結構造及び関連付けを再現するだけでなく、これを編集して再現するようにしてもよい。
前記関連付けられた処理モジュールのステータスを記憶するステータス記憶部を更に備えていてもよい。
これにより、処理モジュールの実行状態を把握することができ、処理モジュールの制御だけでなく、処理モジュールの処理結果の入出力制御も容易となる。
本発明に係るコネクタによれば、複数の処理モジュールを容易に連結して実行することができるように連結構造を構築でき、かつ柔軟に連結構造を変更することができる、という優れた効果を奏する。
以下、図面を参照して、本発明の実施の形態について詳細に説明する。
図1は、本発明の実施の形態に係るソフトウェアで構成されたコネクタを用いて一連の処理を行う処理装置10の構成を機能的に示したブロック図である。この処理装置10は、処理対象のデータに対して所定の処理を行う処理モジュール40をコネクタ20により複数連結して一連の処理を実行する。なお、本実施の形態では、コネクタ20及び処理モジュール40の各々がプログラムモジュールで構成された場合を例に挙げて説明するが、コネクタ20及び処理モジュール40の一部あるいは全部が専用のハードウェアで構成されていてもよい。また、コネクタ20や処理モジュール40はスレッドとして機能するモジュールであってもよいし、プロセスとして機能するモジュールであってもよい。
図1に示すように、処理装置10は、複数の処理モジュール40を連結して処理を実行させる連結実行指示を入力するための指示部12、処理モジュール40の連結構造の情報やコネクタ20と処理モジュールとの関連付けの情報を格納した連結構造記述ファイル14、複数の処理モジュール40を格納した処理モジュールファイル16、及びコネクタ20の基本モデルを格納したコネクタファイル18を備えている。
指示部12に入力される連結実行指示には、複数の処理モジュール40をどのように連結するかを示す連結情報が含まれる。指示部12に連結実行指示が入力されると、該連結実行指示に含まれる連結情報に基づき、処理モジュールファイル16の処理モジュール40及びコネクタファイル18のコネクタ20の基本モデルが用いられ、各処理モジュール40に対応するコネクタ20の生成や連結構造の構築が行われる。
図2は、コネクタファイル18に格納されている基本モデルとしてのコネクタ20の機能的な構成を示したブロック図である。図2に示すように、コネクタ20は、自己に関連付けられた処理モジュール40の起動・終了制御及びコネクタ20全体の動作を制御する制御部22を備えている。また、コネクタ20は、入力側連結部24及び出力側連結部26を備えている。連結構造の間部のコネクタ20についてはその初期化処理時に、入力側連結部24に他のコネクタ20の出力側連結部26が接続設定され、出力側連結部26に他のコネクタ20の入力側連結部24が接続設定される。なお、コネクタ20が連結構造の先頭となるには、初期化処理時に、入力側連結部24が無効化(他のコネクタと接続関係がない状態、すなわちNULL設定)され、連結構造の終端となるには、初期化処理時に、出力側連結部26が無効化される。また、入力側連結部24及び出力側連結部26は、定義することによって個数を設定することができる。
さらに制御部22には、メモリ部28が接続されている。メモリ部28には、コネクタ20自身に関連付けられる処理モジュール40の識別情報であるIDを登録するID領域、および該関連付けられた処理モジュール40のステータスを保持するステータス領域が確保される。1つのコネクタ20には1つの処理モジュール40を関連付けることができる(すなわちメモリ部28のID領域には処理モジュール40のID1つを登録することができる)。制御部22は、メモリ部28に記憶されたIDで表された処理モジュール40をインタフェース(IF)30を介して制御する。なお、このIF30には、コネクタ20及び処理モジュール40の全てにおいて共通のインタフェースが使用される。従って、処理モジュール40の関連付けが容易であり且つ変更も容易な構成となっている。
また、ID領域にNULLを設定することも可能である。NULLが設定された場合には、コネクタ20には処理モジュール40が関連付けられないため、該コネクタ20では処理モジュール40は実行されない。このようにID領域にNULLを設定することにより、必要に応じて、連結された一連の処理の中から不要な処理をスキップすることができる。なお、本実施の形態では、連結構造における先頭コネクタのID領域及び終端コネクタのID領域にはNULLは設定されない。
このように、コネクタファイル18に格納されている基本モデルとしてのコネクタ20は、入力側連結部24及び出力側連結部26が各々1つずつ定義されたコネクタである。本実施の形態では、指示部12から連結実行指示が入力されると、コネクタファイル18に格納された基本モデルのコネクタ20が利用されて、連結させる処理モジュールの個数だけコネクタ20が生成される。また、生成されたコネクタ20の入力側連結部24及び出力側連結部26の個数は連結構造に応じて定義される。例えば、1つの処理モジュール40から分岐して複数の処理モジュール40を並列に実行させる場合には、分岐元の処理モジュール40に関連付けられたコネクタ20を生成するときに、そのコネクタ20の出力側連結部26の個数が、該並列に実行させる処理モジュール40の個数に定義される。入力側連結部24及び出力側連結部26の個数が定義された後、他のコネクタ20との連結構造が構築される。
図3は、3つの処理モジュールを直列に連結して一連の処理を行わせる連結実行指示が指示部12を介して入力された場合に構築される連結構造を例示した図である。
まず、指示部12を介して、連続して実行したい3つの処理モジュール40x、40y、40zに対応するコネクタ20a、20b、20cの生成を指示する。また、生成したコネクタ20a、20b、20cには指示部12から任意の識別名を設定する。続いて指示部12を介して連結構造を定義する。また、このとき各コネクタ20a、20b、20cの入力側連結部24及び出力側連結部26の個数を定義する。ここでは一連の処理が分岐や合流構造を含まない直列構造であるため、基本モデルのコネクタ20で定義されている入力側連結部24及び出力側連結部26の各々の個数(1個)をそのまま用いることができる。
連結構造の定義後、各コネクタ20a、20b、20cに対して各処理モジュール40x、40y、40zの関連付けが定義される。
なお、コネクタの連結構造の定義、入力側連結部24及び出力側連結部26の個数の定義、識別名の設定、及び処理モジュールの関連付けの指示方法は特に限定されないが、例えば指示部12がGUI(グラフィカルユーザインタフェース)で構成されている場合には、GUIの指示エリアにコネクタ20を表したアイコンや処理モジュール40を表したアイコンをユーザがドラッグして配置する等の操作によって連結構造の定義や処理モジュールの関連付けを行うようにしてもよい。また、入力側連結部24及び出力側連結部26の個数や識別名は、例えば、キーボード等の入力装置から直接入力したり、リストされた識別名の中から選択できるように構成してもよい。
また、指示部12から、所定の記憶装置に予め記憶されている連結構造の情報等を呼び出して利用することもできる。
このように連結構造及び関連付けの定義がなされた後、実際に処理モジュールの連結構造を構築して処理モジュールを実行させるための連結実行指示が入力されると、3つのコネクタ20a、20b、20cは連結実行指示に含まれる連結情報(上記で定義した各情報)を判断して連結構造を構築し、処理モジュール40の処理を最適な順序で実行する。
具体的には、まず、連結実行指示に応じて各コネクタ20a、20b、20cが連結される。具体的には、コネクタ20aの出力側連結部26とコネクタ20bの入力側連結部24とが接続され、コネクタ20bの出力側連結部26とコネクタ20cの入力側連結部24とが接続される。この接続は、各コネクタに入力側連結部24及び出力側連結部26の少なくとも一方の個数を設定した後に、各コネクタ20a、20b、20cの入力側連結部24及び出力側連結部26に、接続される他のコネクタの識別名を設定することにより行われる。なお、コネクタ20aは先頭コネクタとなるためその入力側連結部24にはNULLが設定され、コネクタ20cは終端コネクタとなるため、コネクタ20cの出力側連結部26にはNULLが設定される。
更に、各コネクタ20a、20b、20cに処理モジュールX40x、処理モジュールY40y、処理モジュールZ40zが関連付けられる。具体的には、処理モジュールX40x、処理モジュールY40y、処理モジュールZ40zの各IDが各コネクタ20a、20b、20cのメモリ部28のID領域に登録されることにより関連付けが行われる。
なお、各処理モジュール40x、40y、40zの実行に必要な各処理モジュール独自のパラメータを設定する場合には、上記連結処理及び関連付け処理とは別に、処理モジュール独自のインタフェースを介して行われる。
このように連結処理及び関連付け処理が終了した後、各コネクタ20a、20b、20cの各々は他のコネクタとの連結状態を判断して、最適な実行順で処理モジュール40x、40y、40zを実行する。
前のコネクタから処理モジュールを順に実行し、処理後のデータを後段のコネクタに送って順に処理を行うバケツリレー方式の場合には、まず、先頭コネクタであるコネクタ20aの制御部22は、関連付けされている処理モジュールX40xに処理を実行させる。コネクタ20aは処理モジュールX40xの処理結果をコネクタ20bに送信する。コネクタ20bは、コネクタ20aからの処理結果を処理モジュールY40yに送出して処理モジュールY40yに処理を実行させる。コネクタ20bは処理モジュールY40yの処理結果をコネクタ20cに送信する。コネクタ20cは、コネクタ20bからの処理結果を処理モジュールZ40zに送出して処理モジュールZ40zに処理を実行させる。このように、コネクタ20a、20b、20cを介して連結された処理モジュール40x、40y、40zは最適な順序で実行される。
また、バケツリレー方式に限らず、終端コネクタ(図3ではコネクタ20c)から処理モジュールを実行し、処理モジュールから必要に応じて前段のコネクタに処理対象のデータを要求するようなパイプライン方式によって一連の処理を実行するようにしてもよい。パイプライン方式は、連結された処理モジュール40の各々の処理単位が異なる場合に特に有効である。例えば、画像データを画像処理する処理系では、処理対象の画像データが、処理モジュール40毎に、「ライン単位」、「面単位」、「バイトブロック単位」など、異なる処理単位で処理されることがある。従って、このような場合には、処理モジュール40から処理可能なデータ単位毎に必要なデータを要求することができるパイプライン方式を採用することよって、一連の処理の実行制御が容易となる。
処理装置10において、バケツリレー方式で処理を実行するか、パイプライン方式で処理を実行するかは、予め指示部12を介して設定しておくことができる。各コネクタ20は、予め設定された方式に従って動作する。
図4は、連結実行指示に応じて生成されたコネクタ20の各々で実行される処理の流れを示したフローチャートである。
ステップ100では、初期化処理のサブルーチンが実行される。初期化処理サブルーチンでは各コネクタ20の連結構造の構築及び処理モジュール40の関連付けが行われる。初期化処理のサブルーチンが終了した後、ステップ200で各処理モジュール40を実行する処理モジュール実行処理のサブルーチンが実行される。
図5は、バケツリレー方式における初期化処理サブルーチンの流れを示したフローチャートである。ステップ102では、初期化処理として、以下の処理を行う。まず、メモリ部28に、処理モジュール40のIDを登録するID領域と、ID領域に登録された処理モジュール40のステータスを記憶するステータス領域を確保し、ID領域に自己に関連付けられる処理モジュール40のIDを登録する。このIDは連結実行指示の連結情報に含まれている。処理モジュール40のIDをID領域に登録することにより、処理モジュール40がコネクタ20自身に関連付けされる。関連付けと同時に、連結実行指示に含まれる連結情報に基づいて、他のコネクタ20との連結関係を構築する。具体的には、入力側連結部24と出力側連結部26に他のコネクタの識別名を設定する。ただし、コネクタ20が先頭コネクタとなる場合は、入力側連結部24にNULLが設定され、終端コネクタとなる場合は、出力側連結部26にNULLが設定される。連結構造の構築及び処理モジュール40の関連付けが終了した後は、該連結構造の情報と関連付けの情報を連結構造記述ファイルに書き出す。
ステップ104では、入力側連結部24に他のコネクタ20が連結されているか(NULLが設定されているか)否かを判断する。ここで入力側連結部24に他のコネクタ20が連結されていないと判断した場合には、自分が先頭コネクタであると判断でき、ステップ106で、後段のコネクタ20(出力側連結部26に連結されているコネクタ20)からの初期化終了通知の受信待ちを行う。ステップ206で初期化終了通知を受信した場合には、初期化処理サブルーチンを終了する。
また、ステップ104で、入力側連結部24に他のコネクタ20が連結されていると判断した場合には、ステップ108で、出力側連結部26に他のコネクタ20が連結されているか否かを判断する。ここで、出力側連結部26に他のコネクタ20が連結されていないと判断した場合には、自分が終端コネクタであると判断でき、ステップ110で、前段のコネクタ(入力側連結部24に連結されているコネクタ20)に初期化終了通知を送信する。
また、ステップ108で、出力側連結部26に他のコネクタ20が連結されていると判断した場合には、自分が先頭コネクタでもなければ終端コネクタでもない、すなわち、連結構造の中間に位置するコネクタであると判断できるため、ステップ112で、終端コネクタからの初期化終了通知の受信待ちを行い、初期化終了通知を受信した場合には、ステップ114で、受信した初期化終了通知を前段のコネクタ20に転送する。
すなわち、終端コネクタから送信された初期化終了通知は、連結された各コネクタを介して先頭コネクタまで転送される。これにより、先頭コネクタは連結された全てのコネクタで初期化処理が完了したことを把握でき、処理モジュール40の実行開始が可能となる。
初期化処理サブルーチン終了後は、処理モジュール実行処理サブルーチンが実行される。図6は、バケツリレー方式における処理モジュール実行処理サブルーチンの流れを示したフローチャートである。ステップ202では、メモリ部28のステータス領域をリセットする。前述したように、ステータス領域は、自己に関連付けられた処理モジュール40のステータスを保持するための領域である。ここでは、ステータス領域に“実行開始前”を示す識別子を格納する。
ステップ204では、入力側連結部24に他のコネクタ20が連結されているか(NULLが設定されているか)否かを判断する。ここで入力側連結部24に他のコネクタ20が連結されていないと判断した場合には、自分自身が先頭コネクタであると判断でき、ステップ206で、自己に関連付けられた処理モジュール40に初期化指示を出して初期化した後、処理モジュール40の処理を開始する。
ステップ208では、処理モジュール40の処理が開始されたため、ステータス領域に保持する識別子を、“実行中”を示す識別子に変更する。
ステップ210では、処理モジュール40の処理が終了したか否かを判断する。処理モジュール40からの処理結果あるいは処理終了通知を受領した場合に処理が終了したと判断することができる。ステップ210で、処理が終了したと判断した場合には、ステップ212で、ステータス領域に保持する識別子を、“実行終了”を示す識別子に変更する。
ステップ214では、出力側連結部26に他のコネクタ20が連結されているか(NULLが設定されているか)否かを判断する。ここで出力側連結部26に他のコネクタ20が連結されていると判断した場合には、処理モジュール40の処理結果を後段のコネクタ20(出力側連結部26に連結されているコネクタ20)に送出する。また、ステップ214で、出力側連結部26に他のコネクタ20が連結されていないと判断した場合には、ステップ216の処理は行わずに処理モジュール実行処理ルーチンを終了する。
一方、ステップ204で、入力側連結部24に他のコネクタ20が連結されていると判断した場合には、自分が先頭コネクタ以外のコネクタであると判断でき、ステップ218に移行し、前段のコネクタ(入力側連結部24に連結されているコネクタ20)から処理結果の受信待ちを行う。ステップ218で、処理結果を受信したと判断した場合には、ステップ220で、処理モジュール40との関連付けがあるか否かを判断する。すなわち、メモリ部28のID領域に処理モジュール40のIDが登録されている(関連付けがある)か、NULLが設定されている(関連付けが無い)か、を判断する。
ここで、ID領域に処理モジュール40のIDが登録されていると判断した場合には、ステップ222で、該登録されている(関連付けられている)処理モジュール40に初期化指示を出して初期化した後、処理モジュール40に前段のコネクタ20から受信した処理結果を用いた処理を実行させる。ステップ222の後は、ステップ208に移行して上記と同様に処理を実行する。
また、ステップ220で、ID領域にNULLが設定されている(処理モジュール40との関連付けが無い)と判断した場合には、ステップ224で、受信した処理結果を後段のコネクタ20に転送する。
なお、本実施の形態では、先頭コネクタ及び終端コネクタのID領域にはNULLは設定されないものとしているため、コネクタ20が先頭コネクタの場合(ステップ204で肯定判断された場合)は、処理モジュールとの関連づけの有無の判断は省略している。
また、ここでは、前段のコネクタ20から処理結果を受信するまで自己に関連付けられた処理モジュール40を起動しないように制御する場合を例を挙げたが(上記ステップ218参照)、本発明はこれに限定されず、例えば、前段のコネクタ20のステータス領域に“実行終了”の識別子が格納されるまで処理モジュール40を起動しないように制御してもよい。この場合には、コネクタ20間で、処理結果とは別に、ステータスの送受信も行われる。
以上、バケツリレー方式で処理を実行する場合を例に挙げて説明したが、パイプライン方式で処理を実行することもできる。パイプライン方式では、出力側連結部26に他のコネクタ20が連結されていない終端コネクタから処理モジュール40を起動するため、以下のように処理することができる。
図7は、パイプライン方式における初期化処理サブルーチンの流れを示したフローチャートである。ステップ122では、初期化処理(連結構造の構築及び処理モジュール40の関連付け)を行う。この処理は、バケツリレー方式の場合と同様(図5のステップ102参照)であるため説明を省略する。
ステップ124では、出力側連結部26に他のコネクタ20が連結されているか(NULLが設定されているか)否かを判断する。ここで出力側連結部26に他のコネクタが連結されていないと判断した場合には、自分が終端コネクタであると判断でき、ステップ126で、前段のコネクタ20(入力側連結部24に連結されているコネクタ20)から初期化終了通知の受信待ちを行い、ここで初期化終了通知を受信した場合には初期化処理サブルーチンを終了する。
ステップ124で、出力側連結部26に他のコネクタ20が連結されていると判断した場合には、ステップ128で、入力側連結部24に他のコネクタ20が連結されているか否かを判断する。ここで、入力側連結部24に他のコネクタ20が連結されていないと判断した場合には、自分が先頭コネクタであると判断でき、ステップ130で、後段のコネクタ(出力側連結部26に連結されているコネクタ20)に初期化終了通知を送信する。
また、ステップ128で、入力側連結部24に他のコネクタ20が連結されていると判断した場合には、自分が先頭コネクタでもなければ終端コネクタでもない、すなわち、連結構造の中間に位置するコネクタであると判断できるため、ステップ132で、先頭コネクタからの初期化終了通知の受信待ちを行い、初期化終了通知を受信した場合には、ステップ134で、受信した初期化終了通知を後段のコネクタ20に転送する。
すなわち、先頭コネクタから送信された初期化終了通知は、連結された各コネクタ20を介して終端コネクタまで転送される。これにより、終端コネクタは連結された全てのコネクタ20で初期化処理が完了したことを把握でき、処理モジュール40の実行開始が可能となる。
初期化処理サブルーチン終了後は、処理モジュール実行処理サブルーチンが実行される。図8は、パイプライン方式における処理モジュール実行処理サブルーチンの流れを示したフローチャートである。ステップ242では、メモリ部28のステータス領域をリセットする。具体的には、ステータス領域に“実行開始前”を示す識別子を格納する。
ステップ244では、出力側連結部26に他のコネクタ20が連結されているか(NULLが設定されているか)否かを判断する。ここで出力側連結部26に他のコネクタ20が連結されていないと判断した場合には、自分が終端コネクタであると判断でき、ステップ252で、自己に関連付けられた処理モジュール40に初期化指示を出して初期化し、処理モジュール40の処理を開始する。
ステップ254では、処理モジュール40の処理が開始されたため、ステータス領域に保持する識別子を、“実行中”を示す識別子に変更する。
ステップ256では、処理モジュール40の処理が終了したか否かを判断する。ここでは、処理モジュール40からの処理結果を受領した場合に、処理が終了したと判断することができる。ステップ256で、処理モジュール40の処理はまだ終了していないと判断した場合には、ステップ258に移行し、処理モジュール40から入力データ(前段のコネクタ20での処理結果または処理結果の一部に相当する)の要求を受信したか否かを判断する。ステップ258で入力データ要求を受信していないと判断した場合には、ステップ256に戻る。
また、ステップ258で入力データ要求を受信したと判断した場合には、ステップ260で、前段のコネクタに対して入力データ要求を出す。ステップ262では、前段のコネクタからの入力データ待ちを行う。ステップ262で入力データを受信したと判断した場合には、ステップ264で、入力データを処理モジュール40に送出する。入力データを受けた処理モジュール40では、該入力データを用いて処理を実行することができる。その後、ステップ256に戻り、処理モジュール40の処理が終了するまで、ステップ256〜264の処理が繰り返される。
なお、処理モジュール40が、一連の処理における処理対象のデータ全てを1度に処理する場合には、ステップ256〜264の処理は1回ですむが、例えばバイトブロック単位などの細分化した処理単位で処理する場合等では、処理モジュール40からは該処理単位毎に入力データ要求が出力されるため、ステップ256〜264の処理は処理対象のデータ全ての処理が完了するまで繰り返し行われることになる。
ステップ256で、処理モジュール40の処理が終了したと判断した場合には、ステップ266で、ステータス領域に保持する識別子を、“実行終了”を示す識別子に変更する。
ステップ268では、出力側連結部26に他のコネクタ20が連結されているか(NULLが設定されているか)否かを判断する。
ステップ268で、出力側連結部26に他のコネクタ20が連結されていないと判断した場合には、終端コネクタであるため他のコネクタに処理結果を送信する必要が無いため、この処理モジュール実行処理サブルーチンを終了する。
一方、ステップ268で、出力側連結部26に他のコネクタ20が連結されていると判断した場合には、自分が終端コネクタ以外のコネクタであって、ステップ246で後段のコネクタ20から入力データ要求を受けたことにより処理モジュール40を実行したと判断でき、ステップ270で、入力データ要求で要求された処理単位分の処理結果を入力データとして後段のコネクタ20に送信する。
ステップ272では、処理結果全てを後段のコネクタ20に送信したか否かを判断する。
ステップ272で処理結果全てを後段のコネクタ20に送信していないと判断した場合、あるいはステップ244で出力側連結部26に他のコネクタ20が連結されていないと判断した場合には、ステップ246に移行して、後段のコネクタ20から入力データ要求を待つ。ステップ246で後段のコネクタ20から入力データ要求を受信したと判断した場合には、ステップ248で、メモリ部28のステータス領域に“実行終了”を示す識別子が保持されているか否かを判断する。すなわち、ここでは、自己に関連付けられた処理モジュール40の処理が実行済か否かを判断する。
ステップ248で、メモリ部28のステータス領域には“実行終了”を示す識別子が保持されていないと判断した場合には、ステップ250で、自分と処理モジュール40との関連付けがあるか否かを判断する。すなわち、ID領域に処理モジュール40のIDが登録されている(関連付けがある)か、NULLが設定されている(関連付けが無い)か、を判断する。
ここで、ID領域に処理モジュール40のIDが登録されていると判断した場合には、ステップ252に移行し、該登録されている(関連付けられている)処理モジュール40を起動して処理を開始する。これ以降のステップ252〜ステップ272の処理は前述した通りである。
一方、ステップ248で、メモリ部28のステータス領域に“実行終了”を示す識別子が保持されていると判断した場合には、ステップ270に移行し、入力データ要求で要求された処理単位分の処理結果を入力データとして後段のコネクタ20に送信して、ステップ272に移行する。処理結果全てが後段のコネクタ20に送信されるまで、ステップ246、248、270、272の順に処理が繰り返される。前述したように、例えば後段の処理モジュール40が、処理対象のデータを細分化した処理単位で処理する場合等では、後段の処理モジュール40からは該処理単位毎に入力データ要求が出力されるため、ステップ246、248、270、272の処理は処理対象のデータ全ての処理が完了するまで繰り返し行われることになる。
また、ステップ250で、ID領域にNULLが設定されている(処理モジュール40との関連付けが無い)と判断した場合には、ステップ274で、後段のコネクタ20から受信した入力データ要求を前段のコネクタ20に転送する転送処理を行う。
図9は、転送処理サブルーチンの詳細な流れを示すフローチャートである。
ステップ300では、後段のコネクタ20から受信した入力データ要求を、前段のコネクタに転送する。ステップ302では、前段のコネクタ20から入力データの受信待ちを行う。ここで入力データを受信したと判断した場合には、ステップ304で、該受信した入力データを後段のコネクタ20に転送する。
ステップ306では、転送処理サブルーチンを終了するか否かを判断する。例えば、送受信する入力データにデータの終了を示す識別子を付加しておけば、該識別子を参照することによって終了の判断を行うことができる。例えば、後段のコネクタ20の処理モジュール40が、処理対象のデータ全てを1度に処理せずに、細分化した処理単位で処理を繰り返して全データを処理する場合には、全データを転送し終わるまで(データ終了の識別子を確認するまで)該細分化された処理単位での入力データの転送が繰り返される。
ステップ306で、処理対象となる全データの転送が完了しておらず、転送処理サブルーチンを終了できないと判断した場合には、ステップ308で、後段のコネクタ20から入力データ要求の受信待ちを行う。ここで、入力データ要求を受信したと判断した場合には、ステップ300に戻り、上記の処理を繰り返す。
また、ステップ306で、処理対象となる全データの転送が完了したため、転送処理サブルーチンを終了すると判断した場合には、本サブルーチンを終了する。
この転送処理が実行されると、コネクタ20は連結構造においてスキップされることになる。
なお、本実施の形態では、先頭コネクタ及び終端コネクタのID領域にはNULLは設定されないものとしているため、コネクタ20が終端コネクタの場合(ステップ244で肯定判断された場合)は、処理モジュール40との関連づけの有無の判断は省略している。
以上、パイプライン方式で処理を実行する場合を例に挙げて説明したが、このように、終端コネクタから処理モジュールが起動する場合であっても、最適な実行順で処理モジュールを実行させることができる。
次に、具体的な事例を挙げて説明する。
画像情報をディスク上のファイルから読み込み、適切な大きさに拡大縮小し、その画像情報に色変換処理をかけたあと、ディスク上のファイルに出力する画像処理系を例に挙げる。図10は、この画像処理系の構成を模式的に示した図である。
この画像処理系は、図10に示すように、「入力処理」「拡大縮小処理」「色変換処理」「出力処理」という、4つの処理モジュール40r、40p、40q、40wが直列に連結されて構成される。コネクタ20を用いてこのような画像処理系の連結構造を構築して実行する場合には、以下のような手順となる。
まず、指示部12を介して、連続して実行したい4つの処理モジュール40r、40p、40q、40wに対応するコネクタ20c1、20c2、20c3、20c4(図11(A)参照)の生成を指示する。また、各コネクタ20には任意の識別名(図10では“read”、“proc1”、“proc2”、“write”)を設定する。さらに、各コネクタ20c1、20c2、20c3、20c4が、上記一連の画像処理の構造に合わせて直列に連結されるように定義する。連結構造の定義後、各コネクタ20c1、20c2、20c3、20c4に対して各処理モジュール40r、40p、40q、40wの関連付けを定義する。
このように連結構造及び関連付けの定義がなされた後、実際に処理モジュールの連結構造を構築して処理モジュールを実行させるための連結実行指示が入力される。これにより、生成された4つのコネクタ20c1、20c2、20c3、20c4は前述の図4に示すような処理ルーチンを実行して、連結実行指示に含まれる連結情報を判断して連結構造を構築し、処理モジュール40の処理を最適な順序で実行する。
図11及び図12は連結構造の構築手順を模式的に示した図であり、図13及び図14は処理モジュールの実行手順を模式的に示した図である。
図11(A)に示すように、コネクタ20c1、20c2、20c3、20c4が生成され、各コネクタに識別名が設定された後、図11(B)に示すように、コネクタ20c1にコネクタ20c2が連結され、図11(C)に示すように、コネクタ20c2とコネクタ20c3、コネクタ20c3とコネクタ20c4が連結される。連結は、前述したように、入力側連結部24と出力側連結部26に連結されるコネクタ20の識別名を設定することにより行う。
また、コネクタ20c1は先頭コネクタであるため、入力側の連結が不要となり、コネクタ20c4は終端コネクタであるため、出力側の連結が不要となる。従って、図11(D)に示すように、コネクタ20c1の入力側連結部24、及びコネクタ20c4の出力側連結部26は連結関係が無い状態(NULL)に設定される。
コネクタ20間の連結構造が構築された後、図12(A)に示すように、コネクタ20c1で「入力処理」の処理モジュール40rの関連付けが行われる。関連付けは、前述したように、コネクタ20C1のメモリ部28のID領域に、「入力処理」の処理モジュール40rのIDを登録することにより行われる。同様に、図12(B)に示すように、他のコネクタ20c2、20c3、20c4に対して、「拡大縮小処理」「色変換処理」「出力処理」の処理モジュール40p、40q、40wの関連付けが行われる。
続いて、処理モジュール40r、40p、40q、40wの実行が開始される。処理モジュール40r、40p、40q、40wの実行をバケツリレー方式で行う場合には、前述の図6に示すような処理ルーチンが実行される。
具体的には、まず、図13(A)に示すように、コネクタ20c1は、自分自身に関連付けられた入力処理モジュール40rに初期化・実行指示を出す。入力処理モジュール40rは、初期化後、入力画像の画像情報をディスク上のファイルから読み込み、読み込だ入力画像情報を処理結果としてコネクタ20c1に渡す。コネクタ20c1は、処理モジュール40rから入力画像情報を取得して、図13(B)に示すように後段のコネクタ20c2に送出する。
次に、図13(C)に示すように、コネクタ20c2は、自分自身に関連付けられた拡大縮小処理モジュール40pに初期化・実行指示を出すと共に、コネクタ20c1から受信した入力画像情報を拡大縮小処理モジュール40pに渡す。拡大縮小処理モジュール40pは、初期化後、受け取った入力画像情報に拡大縮小処理を施し、該処理結果(処理後画像情報A)をコネクタ20c2に送出する。コネクタ20c2は、拡大縮小処理モジュール40pから処理後画像情報Aを取得して、後段のコネクタ20c3に送出する。
次に、図13(D)に示すように、コネクタ20c3は、自分自身に関連付けられた色変換処理モジュール40qに初期化・実行指示を出すと共に、コネクタ20c2から受信した処理後画像情報Aを色変換処理モジュール40qに渡す。色変換処理モジュール40qは、初期化後、処理後画像情報Aに色変換処理を施して、該処理結果(処理後画像情報B)をコネクタ20c3に送出する。コネクタ20c3は、色変換処理モジュール40qから処理後画像情報Bを取得して、後段のコネクタ20c4に送出する。
次に、図13(E)に示すように、コネクタ20c4は、自分自身に関連付けられた出力処理モジュール40wに初期化・実行指示を出すと共に、コネクタ20c3から受信した処理後画像情報Bを出力処理モジュール40wに渡す。出力処理モジュール40wは、初期化後、処理後画像情報Bをディスク上のファイルに出力する。
処理モジュールの実行をパイプライン方式で行う場合には、前述の図8に示すような処理ルーチンが実行される。
具体的には、まず、図14(A)に示すように、終端コネクタであるコネクタ20c4は、自分自身に関連付けられた出力処理モジュール40wに初期化・実行指示を出す。出力処理モジュール40wは、初期化後、コネクタ20c4に対して出力処理を行うために必要な入力データの要求を行う。なお、実装例としては、コールバック関数や入力バッファオブジェクトなどを処理モジュールの40の初期化指示時に各コネクタ20から各処理モジュール40へ渡しておくことなどが考えられる。
入力データ要求を受けたコネクタ20c4は、図14(B)に示すように、コネクタ20c3に対して入力データ要求を行う。入力データ要求を受けたコネクタ20c3は、色変換処理モジュール40qに初期化・実行指示を出す。色変換処理モジュール40qは、コネクタc3に対して色変換処理を行うために必要な入力データ要求を行う。同様に、コネクタ20c2、20c1の順に入力データ要求がさかのぼり、最終的に、先頭コネクタであるコネクタ20c1が、コネクタ20c2からの入力データ要求を受け、図14(C)に示すように、入力処理モジュール40wに初期化・実行指示を出す。
入力処理モジュール40wは入力画像の読み込みを行い、コネクタ20c1に対し、読み込んだ入力画像のデータを処理結果として渡す。さらに、コネクタ20c1は、コネクタ20c2からの入力データ要求に応じて、入力処理モジュール40wから取得した処理結果を入力データとしてコネクタ20c2に送出する。
図14(D)に示すように、コネクタ20c2は、拡大縮小処理モジュール40pに対し、コネクタ20c1から取得した入力データを渡す。拡大縮小処理モジュール40pは、取得した入力データに対して拡大縮小処理を施し、処理後のデータをコネクタ20c2に返す。さらに、コネクタ20c2は、コネクタ20c3からの入力データ要求に応じて、拡大縮小処理モジュール40pから取得した処理後のデータを送出する。
同様に、コネクタ20c3はコネクタ20c2から取得した入力データを用いて色変換処理モジュール40qの処理を実行し、処理後のデータをコネクタ20c4に送出する。コネクタ20c4は、図14(E)に示すように、コネクタ20c3から取得した入力データを用いて出力処理モジュール40wの出力画像の書き出し処理を実行する。
なお、コネクタ20によって連結構造を構築することにより、いったん構築された連結構造自体は修正せずに、関連付けだけを変更することによって、処理モジュール40の実行順序や種類を変更したり、処理モジュールを実行せずにスキップする等のカスタマイズを容易に行うことができる。具体的には、コネクタ生成時に、指示部12から変更指示が入力されたときに実行される処理ルーチンのプログラムを含ませてコネクタ20を生成し、連結構造の構築後に変更指示が入力されたときは、コネクタ20が該変更指示に基づいて関連付けを変更する。
ここで、より具体的な例を挙げて説明する。
図10で例示した画像処理系で入力画像データに拡大処理を施す場合、拡大処理する前に色変換処理を行う方が色変換処理の対象となる画像データのサイズが小さくてすむため、処理効率がよい。すなわち、処理対象データによっては、処理モジュール40の実行順序を入れ替えたほうがよい場合がある。そこで、図15(A)に示すように拡大縮小処理モジュール40p及び色変換処理モジュール40qの実行順序を入れ替える場合、まず、すでに構築されている連結構造に対して処理モジュール40の関連付けを変更する変更指示を指示部12から入力する。各コネクタ20は、該変更指示が入力されると、入力された変更指示に従って自己に関連付けられた処理モジュール40の設定を以下のように変更する。
図15(B)に示すように、コネクタ20c2が、自己のメモリ部28のID領域に、拡大縮小処理モジュール40pのIDに代えて色変換処理モジュール40qのIDを登録する。また、図15(C)に示すように、コネクタ20c3が、自己のメモリ部28のID領域に、色変換処理モジュール40qのIDに代えて拡大縮小処理モジュール40pのIDを登録する。
このように、連結構造を再構築することなく、関連付けを変更するだけで容易に処理モジュール40の実行順序を変更することができる。
また、図10で例示した画像処理系において、入力画像がすでに目的とする画像サイズに一致している場合には、「拡大縮小」処理は不要となるので、図16(A)に示すように、拡大縮小処理を省略(スキップ)することもできる。この場合も、図16(B)に示すように、指示部12からの変更指示に応じてコネクタ20c2のメモリ部28のID領域に無効値(NULL)を設定する。これにより、連結構造を再構築することなく、連結構造から拡大縮小処理モジュール40pの取り外しを行うことができる。
また、図10で例示した画像処理系において、図17(A)に示すように、入力画像に対して拡大縮小処理に代えて90度回転処理を施したい場合には、図17(B)に示すように、コネクタ20c2のメモリ部28のID領域に登録するIDを、拡大縮小処理モジュール40pのIDから、90度回転処理モジュール40sのIDに変更する。これにより、連結構造を再構築することなく、拡大縮小処理モジュール40pの代わりに90度回転処理モジュール40sを実行することができる。
また、コネクタ20を用いて連結構造を構築することによって、「分岐」や「合流」が含まれるような複雑な処理フローも容易に構築することができる。
例えば、人物が写った写真画像から人物の顔部分をだけを抽出し、抽出した顔部分だけに明るさ補正処理を施すような画像処理系を構築する場合、図18に示すような連結構造が考えられる。まず、入力処理モジュール40rを実行して入力画像の画像データを読み込んだ後、該入力画像データを顔検出処理モジュール40f及び明るさ補正処理モジュール40bの各々に送出する。顔検出処理モジュール40fは入力画像データから人物の顔部分を検出し、マスク画像作成処理モジュール40mは検出された顔部分のマスク画像を生成する。一方、これら処理と並行して、明るさ補正処理モジュール40bは、入力画像データに明るさ補正を施す。マスク画像作成処理モジュール40mの処理結果及び明るさ補正処理モジュール40bの処理結果は、合成処理モジュール40cに送信され、合成処理モジュール40cで各処理結果が合成される。最後段の出力処理モジュール40wでは、合成処理モジュール40cで合成された処理結果(画像データ)が出力される。
このように分岐や合流等の複雑な連結構造を有する画像処理系は、コネクタ20を用いて以下のように構築することができる。
まず、図19(A)に示すように、指示部12から指示して各処理モジュール40に対応するコネクタ20c1〜20c6を生成する。各コネクタ20c1〜20c6には図示するような識別名を設定する。さらにまた、指示部12を介して各コネクタ20c1〜20c6の入力側連結部24及び出力側連結部26の個数を定義し設定する。具体的には、分岐や合流等の連結構造を含むため、分岐元のコネクタ20c1の出力連結部26の個数は2個となるように定義し、合流先のコネクタ20c5の入力側連結部24の個数は2個となるように定義する。これ以外は各々基本モデルの個数(1個)のまま定義する。
次に、生成された各コネクタ20c1〜20c6は、図19(B)に示すように、上側のフローを構築するコネクタ20c1、20c2、20c3、20c5、20c6の入力側連結部24及び出力側連結部26に、隣り合うコネクタ20の識別名を設定して互いに連結する。
さらに、図20(A)に示すように、分岐元であるコネクタ20c1は、2個目の(この時点で未設定の)出力側連結部26にコネクタ20c4の識別名を設定して、コネクタ20c4と連結する。
また、図20(B)に示すように、合流先であるコネクタ20c5は、2個目の(この時点で未設定の)入力側連結部24にコネクタ20c4の識別名を設定して、コネクタ20c4と連結する。
さらに、コネクタ20c1〜20c6は、自分自身に処理モジュール40を関連付ける。処理モジュール40の関連付けは、前述と同様、各コネクタ20c1〜20c6のメモリ部28のID領域に、関連付ける処理モジュール40r、40f、40m、40c、40b、40wのIDを各々登録することにより行う。
各コネクタ20c1〜20c6に関連付けられた処理モジュール40r、40f、40m、40c、40b、40wは、図6や図8で説明したように連結状態に応じて最適な順序で実行される。なお、ここでは連結構造に分岐・合流構造が含まれているため、分岐・合流箇所では、以下のように処理が行われる。分岐元のコネクタ20c1は後段に連結された複数のコネクタ20c2、20c4の双方に入力処理モジュール40rで読み込まれた入力画像データを送出する。分岐後は、コネクタ20c2、20cの系と、コネクタ20c4の系とで並列に処理が行われる。合流先であるコネクタ20c5は、入力側連結部24に連結された2つのコネクタ20c3、20c4からの処理結果を待って(あるいはコネクタ20c3、20c4のステータス領域に実行終了の識別子が格納されるのを待って)合流処理モジュール40cを実行させる。これにより各フローの同期をとることができる。
このように、コネクタを用いて分岐・合流構造を構築することにより、図21に示すように、コネクタ20c1の出力側連結部26に連結されたコネクタ20c2、20c4を別スレッドで起動させて、コネクタ20c2、20c3のフローと、コネクタ20c4とを並列に実行させることができるため、一連の処理系を複数のフローに分岐させ各フローを独立したスレッド、あるいは別個のCPUで並列処理として実行させたい場合でも、制御が容易となる。
なお、分岐した複数スレッドで最も早く終了したスレッドの処理結果を受けて次の処理に進むような分岐フローを構築することもできる。その場合には、上記と同様に連結構造を構築するが、合流先のコネクタ20自体を、合流先のコネクタ20は、最初に受信した処理結果のみを用いて自己に関連付けられた処理モジュール40を実行させるように構成する。さらに、入力側連結部24に連結された最速スレッド以外の他のスレッドに対応するコネクタ20に、処理の実行を強制終了するための強制終了指示を出力するように構成してもよい。強制終了指示を受けたコネクタ20は、これに従い、実行中の処理モジュール40を強制終了させることができる。
なお、並列処理においては、前述したような同期制御だけでなく、処理内容によっては競合・排他制御が必要になる場合がある。このような場合においても、コネクタ20を用いて連結構造を構築すれば、容易に制御することができる。
図22は、セマフォモデルを用いた競合回避フローの連結構造の構築例である。コネクタ20c2、20c3、20c4のフロー1とコネクタ20c5、20c6のフロー2とが並列に配置されている。フロー1及びフロー2は処理装置10の共有リソースを使用する。各フローの最終コネクタ20c4、20c6の出力側連結部26コネクタ20c7の入力側連結部24に連結されている。また、コネクタ20c7の出力側連結部26が、各フローの先頭コネクタ20c2、20c5の入力側連結部24に連結されている。
コネクタ20c7はセマフォとして機能し、フロー1、2のうちいずれか一方のフローに処理開始指示を出力し、該一方のフローからコネクタ20c7に処理結果(あるいは処理終了通知)が出力されると、今度は他方のフローに処理開始指示を出力する。これにより、競合を回避できる。
このように、コネクタを用いることによって、競合・排他制御を容易に行うことができる。
また、本実施の形態では、連結され既に実行が終了した連結構造の再利用(再実行)が可能である。再利用する場合には、指示部12からの再実行指示により、各コネクタ20に前述の処理モジュール実行処理サブルーチンを再度実行させる。この場合には、連結構造の構築及び処理モジュールの関連付けを行う初期化処理サブルーチンの実行は不要である。これにより、各処理モジュール40を再初期化して、各処理モジュール40を最適な実行順序で再度実行することができる。
なお、各処理モジュール40の独自のパラメータを変更したい場合には、該当のコネクタ20に既に関連付けされている処理モジュール40に対して、その処理モジュール独自のインタフェースを介して直接パラメータを再設定する。例えば、図10で例示した画像処理系において、拡大縮小処理モジュール40pの拡大縮小の倍率を変更したい場合には、図23に示すように、指示部12から、拡大縮小処理モジュール40pの独自のインタフェースを介して倍率変更指示を行う。すなわち、連結構造の構築や処理モジュールの関連付けとは別のインタフェースで変更指示を行う。これにより、各処理モジュールのパラメータの設定を、連結構造の構築や処理モジュールの関連付けと分離して行うことができる。従って、各処理モジュール40に対するパラメータ変更が容易になると共に、連結構造の再利用も容易となる。
また、上記実施の形態で説明したように、構築した連結構造の情報や関連付けの情報を連結構造記述ファイル14に保存しておけば、同一の連結構造の処理をいつでも再現して実行することができる。また、過去に構築した連結構造に類似した連結構造を効率的に構築することもできる。
例えば、図24に示すように、処理装置10あるいはコネクタ20に連結構造記述ファイル14に保存したデータを直接編集できる再構築プログラム15を設ける。この再構築プログラム15により、連結構造記述ファイル14に保存した連結構造の情報、関連づけの情報を直接編集して連結構造の構築をプログラミング無しに実現することができる。
例えば、予めプロトタイプとして作成した連結構造を連結構造記述ファイル14に保存しておけば、該保存したプロトタイプの連結構造を流用して、類似した連結構造を容易に構築することができる。編集を一切行わない場合には、該保存した連結構造がそのまま再現される。
このような構成によれば、効率的に連結構造を構築することができ、特に、分岐・合流を繰り返すような複雑なケースでより高い効果が見込まれる。
なお、上記実施の形態では、初期化処理において、コネクタ20が連結構造の情報と処理モジュール40の関連付けの情報を連結構造記述ファイル14に書き出すようにしているが、これに限定されず、指示部12で連結構造や関連付けが指示されたときに、指示部12が該連結構造や関連付けの情報を連結構造記述ファイル14に書き出すようにしてもよい。
また、連結構造記述ファイル14は、上記実施の形態のように処理装置10内部に設けてもよいし、外部に設けてもよい。外部に設ける場合には、ネットワークを介してデータの授受ができるように構成することができる。
また、上記実施の形態では、連結構造の構築及び処理モジュールの関連付けを生成されたコネクタ20自身が行う場合を例に挙げて説明したが、これに限定されず、例えば、処理装置10が連結構造の構築とコネクタ20に対する処理モジュールの40の関連付けを行うようにしてもよい。この場合には、コネクタ20は、連結構造構築後の処理モジュールの実行制御のみを行う。
10 処理装置
12 指示部
14 連結構造記述ファイル
15 再構築プログラム
16 処理モジュールファイル
18 コネクタファイル
20 コネクタ
22 制御部
24 入力側連結部
26 出力側連結部
28 メモリ部
40 処理モジュール
12 指示部
14 連結構造記述ファイル
15 再構築プログラム
16 処理モジュールファイル
18 コネクタファイル
20 コネクタ
22 制御部
24 入力側連結部
26 出力側連結部
28 メモリ部
40 処理モジュール
Claims (9)
- 入力側及び出力側において少なくとも1つの他のコネクタと連結可能な連結部と、
予め定められた処理を実行する処理モジュールに関連付けるための関連付け部と、
他のコネクタとの連結状態を判断し、前記関連付け部によって関連付けられた処理モジュールを連結状態に応じて制御する制御部と、
を備えたコネクタ。 - 前記制御部は、出力側において少なくとも1つの他のコネクタと連結されていると判断した場合には、前記関連付けられた処理モジュールの処理の実行を制御し、該処理モジュールでの処理結果を連結されている他のコネクタに出力する請求項1記載のコネクタ。
- 前記制御部は、入力側において少なくとも1つの他のコネクタと連結されていると判断した場合には、入力側に連結された他のコネクタから取得した処理結果を用いて処理するように前記関連付けられた処理モジュールを制御する請求項1記載のコネクタ。
- 前記制御部は、入力側及び出力側において少なくとも1つの他のコネクタと連結されていると判断した場合には、入力側に連結された他のコネクタから取得した処理結果を用いて処理するように前記関連付けられた処理モジュールを制御し、該処理モジュールでの処理結果を出力側に連結されている他のコネクタに出力する請求項1記載のコネクタ。
- 前記制御部は、更に、入力側において複数の他のコネクタと連結されていると判断した場合には、該複数の他のコネクタに関連付けられた処理モジュール全ての処理が終了するまで前記関連付けられた処理モジュールの処理が開始されないように制御する請求項3または請求項4記載のコネクタ。
- 前記制御部は、入力側及び出力側において少なくとも1つの他のコネクタと連結されていると判断した場合で、かつ前記関連付け部によって処理モジュールが関連付けられていないと判断した場合または関連付けられた処理モジュールが無効であると判断した場合には、入力側に連結された他のコネクタから取得した処理結果を処理することなく出力側に連結されている他のコネクタに出力する請求項1記載のコネクタ。
- 他のコネクタとの連結構造を示した連結情報および処理モジュールとの関連付けを示した関連付け情報を所定の記憶装置に出力する出力部を更に備えた請求項1乃至請求項6のいずれか1項記載のコネクタ。
- 他のコネクタとの連結構造を示した連結情報および処理モジュールとの関連付けを示した関連付け情報を記憶した記憶装置から連結情報及び関連付け情報を読み出し、該読み出した連結情報及び関連付け情報に基づいて前記連結部による連結と前記関連付け部による関連付けを再現する再現部を更に備えた請求項1乃至請求項7のいずれか1項記載のコネクタ。
- 前記関連付けられた処理モジュールのステータスを記憶するステータス記憶部を更に備えた請求項1乃至請求項8のいずれか1項記載のコネクタ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005164206A JP2006338506A (ja) | 2005-06-03 | 2005-06-03 | コネクタ |
US11/446,226 US20070006133A1 (en) | 2005-06-03 | 2006-06-05 | Connector |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005164206A JP2006338506A (ja) | 2005-06-03 | 2005-06-03 | コネクタ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006338506A true JP2006338506A (ja) | 2006-12-14 |
Family
ID=37558985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005164206A Abandoned JP2006338506A (ja) | 2005-06-03 | 2005-06-03 | コネクタ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070006133A1 (ja) |
JP (1) | JP2006338506A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7822897B2 (en) * | 2007-09-22 | 2010-10-26 | Hirak Mitra | System and methods for connecting multiple functional components |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4253148A (en) * | 1979-05-08 | 1981-02-24 | Forney Engineering Company | Distributed single board computer industrial control system |
US4319338A (en) * | 1979-12-12 | 1982-03-09 | Allen-Bradley Company | Industrial communications network with mastership determined by need |
US4837735A (en) * | 1987-06-09 | 1989-06-06 | Martin Marietta Energy Systems, Inc. | Parallel machine architecture for production rule systems |
US5103391A (en) * | 1987-11-06 | 1992-04-07 | M. T. Mcbrian Inc. | Control system for controlling environmental conditions in a closed building or other conditions |
US5287416A (en) * | 1989-10-10 | 1994-02-15 | Unisys Corporation | Parallel pipelined image processor |
US5307478A (en) * | 1990-06-11 | 1994-04-26 | Supercomputer Systems Limited Partnership | Method for inserting a path instruction during compliation of computer programs for processors having multiple functional units |
US5557795A (en) * | 1993-06-15 | 1996-09-17 | Xerox Corporation | Pipelined image processing system for a single application environment |
US5701479A (en) * | 1993-06-15 | 1997-12-23 | Xerox Corporation | Pipelined image processing system for a single application environment |
US5995996A (en) * | 1993-06-15 | 1999-11-30 | Xerox Corporation | Pipelined image processing system for a single application environment |
US5396616A (en) * | 1993-06-15 | 1995-03-07 | Xerox Corporation | System for emulating multi-tasking pipelines in a single tasking environment |
US5649088A (en) * | 1994-12-27 | 1997-07-15 | Lucent Technologies Inc. | System and method for recording sufficient data from parallel execution stages in a central processing unit for complete fault recovery |
US6044166A (en) * | 1995-01-17 | 2000-03-28 | Sarnoff Corporation | Parallel-pipelined image processing system |
US6567564B1 (en) * | 1996-04-17 | 2003-05-20 | Sarnoff Corporation | Pipelined pyramid processor for image processing systems |
US6246472B1 (en) * | 1997-07-04 | 2001-06-12 | Hitachi, Ltd. | Pattern inspecting system and pattern inspecting method |
US6292168B1 (en) * | 1998-08-13 | 2001-09-18 | Xerox Corporation | Period-based bit conversion method and apparatus for digital image processing |
US6286026B1 (en) * | 1998-08-17 | 2001-09-04 | Xerox Corporation | Method and apparatus for integrating pull and push tasks in pipeline data processing |
US6781600B2 (en) * | 2000-04-14 | 2004-08-24 | Picsel Technologies Limited | Shape processor |
JP4082051B2 (ja) * | 2002-03-19 | 2008-04-30 | 富士ゼロックス株式会社 | 画像処理装置および画像処理方法 |
US20040041840A1 (en) * | 2002-08-27 | 2004-03-04 | Brett Green | System and method for process dependency management |
US7062636B2 (en) * | 2002-09-19 | 2006-06-13 | Intel Corporation | Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation |
JP3987782B2 (ja) * | 2002-10-11 | 2007-10-10 | Necエレクトロニクス株式会社 | アレイ型プロセッサ |
US7691502B2 (en) * | 2005-03-15 | 2010-04-06 | Jadoo Power Systems, Inc. | Modular fuel cell power system, and technique for controlling and/or operating same |
US9081609B2 (en) * | 2005-12-21 | 2015-07-14 | Xerox Corporation | Image processing system and method employing a threaded scheduler |
US7344402B2 (en) * | 2006-03-16 | 2008-03-18 | Lenovo Pte. Ltd. | Apparatus and method for component module insertion and removal protection |
-
2005
- 2005-06-03 JP JP2005164206A patent/JP2006338506A/ja not_active Abandoned
-
2006
- 2006-06-05 US US11/446,226 patent/US20070006133A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20070006133A1 (en) | 2007-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006338507A (ja) | 処理装置及び処理方法 | |
KR101126255B1 (ko) | 신호처리장치 | |
JP4622611B2 (ja) | 信号処理装置 | |
JP4453575B2 (ja) | ソフトウェア無線装置 | |
JP2710896B2 (ja) | 通信オートマトンセットの開発を支援する方法 | |
CN112070499B (zh) | 一种基于区块链的资产及数据跨链方法及系统 | |
CN113760578B (zh) | 跨进程快速传输大数据的方法、装置、设备及计算机程序 | |
CN111722842A (zh) | 流水线编排方法、装置、电子设备和存储介质 | |
JP5026925B2 (ja) | 制御プログラム作成装置および制御プログラム作成方法 | |
JP2006338506A (ja) | コネクタ | |
JP2006215886A (ja) | 信号処理装置、信号処理システム、および信号処理方法 | |
JP2007102632A (ja) | シミュレーション装置 | |
JP2008146541A (ja) | Dma転送システム、dmaコントローラ及びdma転送方法 | |
JP2000075974A (ja) | Pcカード及びその制御方法 | |
JP2005293391A (ja) | 通信方法及びプロセッサ | |
JPH10240565A (ja) | アプリケーションプログラム検証装置、アプリケーションプログラム検証方法、および、媒体 | |
JPS63247858A (ja) | デ−タ転送方法及び装置 | |
CN117112466B (zh) | 一种数据处理方法、装置、设备、存储介质及分布式集群 | |
JP3655114B2 (ja) | シミュレーション方法およびシミュレーションシステム | |
JP2003044106A (ja) | Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ | |
JP2002337400A (ja) | 画像処理装置 | |
JP3041919B2 (ja) | プログラム結合処理装置 | |
JP3252585B2 (ja) | コンピュータ装置 | |
JP2000347712A (ja) | プログラマブルコントローラ | |
JP2009110191A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20070202 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080303 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20110215 |