JP2011522328A - データフローネットワーク - Google Patents

データフローネットワーク Download PDF

Info

Publication number
JP2011522328A
JP2011522328A JP2011511686A JP2011511686A JP2011522328A JP 2011522328 A JP2011522328 A JP 2011522328A JP 2011511686 A JP2011511686 A JP 2011511686A JP 2011511686 A JP2011511686 A JP 2011511686A JP 2011522328 A JP2011522328 A JP 2011522328A
Authority
JP
Japan
Prior art keywords
data
source
interface
target
data flow
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.)
Granted
Application number
JP2011511686A
Other languages
English (en)
Other versions
JP5551687B2 (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011522328A publication Critical patent/JP2011522328A/ja
Application granted granted Critical
Publication of JP5551687B2 publication Critical patent/JP5551687B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • User Interface Of Digital Computer (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)
  • Supply And Distribution Of Alternating Current (AREA)
  • Image Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

プロセスを一般的、柔軟、拡張可能な方法でプロセスネットワークに接続するためのソース/ターゲットパターンと呼ばれる構成モデルを提供する。この構成モデルは、共通のプロセス代数構造をデータフローネットワークと組み合わせてプロセスネットワークを形成することを可能にする。プロセス代数オペレーションは、プロセス間で相互利用可能な完全なプロセス代数オペレーションを提供するデータフローネットワークを形成する構成モデルによって表すことができる。

Description

本発明は、データフローネットワークに関する。
コンピュータシステムによって、プログラムの複数のプロセスを並行に実行することができる。プロセスの並行実行によって、プログラムをより速く、またはより効率的に実行して、コンピュータシステムのスループットを高めることができる。
制御フローモデルを実装するプロセスでは、制御フローロジックは、プログラム状態の条件および修正のセットを記述し、そしてこの制御フローロジックを、例えばフローチャートによって編成することができる。「プロセス代数(process algebra)」という用語は、複数のプロセスが、共有される問題を解決するのにどのように互いに通信して協働するか、および、あるプロセスの寿命がどのように制御されるのかに関して推論するための方法論を指すのに使用される。プロセス代数は、あるプロセスの内部状態を修正するプリミティブとは大きく異なるが、典型的には、プロセス間の通信が内部フローチャートを推進する対話ポイント(interaction point)がある。プロセス間のこれらの対話ポイントは、一部のプログラムでは複雑な場合がある。対話ポイントの複雑性により、プロセスを並行に実行するためにスケジュールすることが難しくなり、その結果、プログラムの実行があまり最適ではなくなることがある。
この概要は、以下の発明を実施するための形態においてさらに説明される概念の選択を簡単な形で紹介するために提供されるものである。この概要は、特許請求される主題の重要な特徴または本質的な特徴を特定するようには意図されておらず、特許請求される主題の範囲を限定するのに使用されることも意図されていない。
プロセスを一般的で柔軟かつ拡張可能な方法でプロセスネットワークに接続するためのソース/ターゲットパターン(source-target pattern)と呼ばれる構成モデル(compositional model)を提供する。この構成モデルは、共通のプロセス代数構造(process algebra construct)をデータフローネットワークと組み合わせてプロセスネットワークを形成することを可能にする。プロセス代数のオペレーションは、プロセス間で相互利用可能な(interoperable)完全なプロセス代数のオペレーションを提供するデータフローネットワークを形成する構成モデルによって表される。このモデルを、単純なデータフローネットワークだけでなく、より複雑なデータフローネットワークなどの多様なデータフローネットワークに適用することができる。
添付の図面は、諸実施形態のより良い理解を提供するために記載され、本明細書に組み込まれたものであり、本明細書の一部を構成する。図面は、実施形態を例示するものであり、以下の記述とともに実施形態の原理を説明するのに役立つ。以下の詳細な説明を参照することによってより良く理解されると、他の実施形態や実施形態の目的とする利点の多くが容易に理解されるであろう。図面の要素は、必ずしも互いに対して正確な縮尺ではない。同じ参照番号は対応する同様の部分を示す。
データフローネットワークで使用するためのソースインタフェースおよびターゲットインタフェースの実施形態を示すブロック図である。 データフローネットワークで使用するためのソースインタフェースおよびターゲットインタフェースの実施形態を示すブロック図である。 データフローネットワークで使用するためのソースインタフェースおよびターゲットインタフェースの実施形態を示すブロック図である。 データフローネットワークのノードの実施形態を示すブロック図である。 データフローネットワークのノードの実施形態を示すブロック図である。 データフローネットワークのノードの実施形態を示すブロック図である。 データフローネットワークがプロセスに接続されたプロセスネットワークの一実施形態を示すブロック図である。 プロセスがデータフローネットワークに接続されたプロセスネットワークの一実施形態を示すブロック図である。 送信オペレーションを実装するように構成された発信元ブロックの一実施形態を示すブロック図である。 受信オペレーションを実装するように構成されたトリガブロックの実施形態を示すブロック図である。 プロセスネットワークの一実施形態を示すブロック図である。 選択および結合オペレーションを実装するように構成されたデータフローネットワークの一実施形態を示すブロック図である。 プロセスネットワークの一実施形態を示すブロック図である。 プロセスネットワークの一実施形態を示すブロック図である。 プロセススケジューラを有するランタイム環境を実装するように構成されたコンピュータシステムの一実施形態を示すブロック図である。
以下の説明では、本明細書の一部を成す添付図面を参照するが、図面では、本発明が実施され得る特定の実施形態を図によって示す。その際、方向を示す用語、例えば、「上部(top)」、「下部(bottom)」、「前面(front)」、「裏面(back)」、「先(leading)」、「後(trailing)」などは、説明される図面の向きに対して使用される。実施形態の構成要素を多数の様々な向きに置くことも可能であるので、方向を示す用語は、説明のために使用されるものであり、限定のためではない。他の実施形態を利用可能することもでき、また本発明の範囲から逸脱することなく構造的変更または論理的変更も行うことができることを理解されたい。したがって、以下の説明は、限定的な意味で理解されるべきではなく、本発明の範囲は特許請求の範囲によって定義される。
本明細書で説明される様々な例示的な実施形態の特徴を、特に注記がない限り相互に組み合わせることができることも理解されたい。
図1Aは、リンク16によって接続されたソースインタフェース12とターゲットインタフェース14とを含むソース/ターゲットパターン10の実施形態を図示するブロック図である。
ソース/ターゲットパターン10は、コンピュータシステム(例えば、図11に示されるコンピュータシステム100)を実行するプログラムの任意の数のプロセス(例えば、図3および図4に示されるプロセス40)をプロセスネットワークに接続するデータフローネットワーク(例えば、図3および図4に示されるデータフローネットワーク32)を作成するのに使用される、オペレーションのセットを提供する。データフローネットワークは、送信、受信、選択、結合、およびこれらの組み合わせなどのプロセス代数構造を形成し、データをプロセス間で転送できるようにする。ソース/ターゲットパターン10は、ソースインタフェース12とターゲットインタフェース14との間でデータを転送するためのプロトコルを提供するので、プロセス代数構造をデータフローネットワーク内で実装することが可能になる。
ソース/ターゲットパターン10により、プロセスが互いに関する情報(knowledge)を全く持っていないか、少ししか持っていない場合に、プロセス同士を接続することができる。一方のプロセスは、他方のプロセスに関する情報を全く持たずに、ソース/ターゲットパターン10を使用してその他方のプロセスにデータを提供することができる。同様に、一方のプロセスは、他方のプロセスに関する情報を全く持たずに、ソース/ターゲットパターン10を使用して他方のプロセスからデータを受信することができる。各プロセスは、コンピュータ読取可能記憶媒体(例えば、図11に示されるメモリシステム104)に記憶され、およびコンピュータシステムにより実行可能な、命令のセットを含む。プロセス間で転送されるデータには、ポインタ、アドレス、または他の構造化もしくは符号化された情報を含め、任意のタイプのデータが含まれ得る。
ソースインタフェース12は、リンクターゲット(LinkTarget)、アンリンクターゲット(UnlinkTarget)オペレーション、予約(Reserve)オペレーション、リリース(Release)オペレーション、および消費(Consume)オペレーションを実装する命令を含み、該命令は、コンピュータ読取可能記憶媒体(例えば、図11に示されるメモリシステム104)に記憶され、およびコンピュータシステムにより実行可能である。ソースインタフェース12の上記オペレーションはそれぞれ、1つまたは複数のターゲットインタフェース14によって呼び出される。ターゲットインタフェース14は、オファー(Offer)オペレーションを実装する命令を含み、該命令は、コンピュータ読取可能記憶媒体(例えば、図11に示されるメモリシステム104)に記憶され、コンピュータシステムによって実行可能である。ターゲットインタフェース14のオファーオペレーションは、1つまたは複数のソースインタフェース12によって呼び出される。
ソースインタフェース12のリンクターゲットオペレーションは、ソースインタフェース12と、該リンクターゲットオペレーションを呼び出すターゲットインタフェース14との間のリンク16を確立する。ソースインタフェース12のアンリンクターゲットオペレーションは、ソースインタフェース12と、アンリンクターゲットオペレーションを呼び出すターゲットインタフェース14との間のリンク16を切断する。リンクターゲットオペレーションおよびアンリンクターゲットオペレーションはそれぞれ、受信したオペレーションの呼び出し元のターゲットインタフェース14に成功(success)または失敗(failure)の指示を返して(return)、リンク16がうまく確立されたか否か、または切断されたか否かを示すことができる。
ソースインタフェース12とターゲットインタフェース14との間にリンク16が確立された後、ソースインタフェース12は、リンク16を使用して、ターゲットインタフェース14のオファーオペレーションを呼び出して、ターゲットインタフェース14にデータを提供する。オファー呼び出しに応答して、ターゲットインタフェース14は、受諾(accepted)、拒否(declined)、延期(postponed)のうちの1つを返す(return)。ターゲットインタフェース14は、該ターゲットインタフェース14がソースインタフェース12によって供給されたデータを消費したことを示すのに受諾を返す。ターゲットインタフェース14は、該ターゲットインタフェース14がソースインタフェース12によって供給されたデータに興味がないことを示すのに拒否を返す。ターゲットインタフェース14は、該ターゲットインタフェース14がソースインタフェース12によって供給されたデータをこの時点では時間内に消費する準備ができていないことを示すのに延期を返す。
ソースインタフェース12により、ターゲットインタフェース14は、予約オペレーションを使用して以前に供給されたデータを要求することができる。ターゲットインタフェース14は、予約オペレーションを呼び出して、ソースインタフェース12によって提供されたがターゲットインタフェース14によって延期されたデータの予約をする。ソースインタフェース12は、受信した予約呼び出しを送信したターゲットインタフェース14に成功または失敗の指示を返して、予約が成功したか否かを示す。
データを予約した後、ターゲットインタフェース14は、ソースインタフェース12のリリースオペレーションを呼び出して以前の予約を解放するか、または消費オペレーションを呼び出して予約されたデータを消費する。ソースインタフェース12が、ターゲットインタフェース14に成功の指示を提供することによって、データの予約をターゲットインタフェース14に確認した後、ソースインタフェース12は、予約を行ったターゲットインタフェース14によってデータが解放または消費されるまで、予約を行ったターゲットインタフェース14のためにデータを保持する。
図1Bに示されるように、各ターゲットインタフェース14は、任意の数のソースインタフェース12(1)〜12(M)に、各ソースインタフェース12(1)〜12(M)のリンクターゲットオペレーションを呼び出すことによって接続して、それぞれリンク16(1)〜16(M)を確立することができ、ここで、Mは1以上の整数であり、M番目のソースインタフェース12およびM番目のリンク16を表す。したがって、任意の数のソースインタフェース12(1)〜12(M)から、各ターゲットインタフェース14にデータを供給することができる。
図1Cに示されるように、各ソースインタフェース12は、それぞれリンク16(1)〜16(N)を確立する各ターゲットインタフェース14(1)〜14(N)からのリンクターゲットオペレーション呼び出しに応答して、任意の数のターゲットインタフェース14(1)〜14(N)に接続することができ、ここで、Nは1以上の整数であり、N番目のターゲットインタフェース14およびN番目のリンク16を表す。したがって、各ソースインタフェース12は、任意の数のターゲットインタフェース14(1)〜14(N)にデータを供給することができる。
図2A〜2Cはそれぞれ、データフローネットワークのノード20の実施形態20A、20B、20Cを示すブロック図である。図2Aに示されるように、ノード20Aは、1つまたは複数のソースインタフェース12(1)〜12(P)を含み、この場合、Pは1以上の整数であり、P番目のソースインタフェース12を表すが、ターゲットインタフェース14は存在しない。ソースインタフェース12のみを有するノード20Aは、データの発信元(data originator)を形成する。ノード20Bは、1つまたは複数のターゲットインタフェース14(1)〜14(Q)を含み、この場合、Qは1以上の整数であり、Q番目のターゲットインタフェース14を表すが、図2Bに示されるようにソースインタフェース12は存在しない。ターゲットインタフェース14のみを有するノード20Bは、データシンク(data sink)を形成する。さらに、ノード20Cは、図2Cに示されるように、1つまたは複数のソースインタフェース12(1)〜12(P)、ならびに1つまたは複数のターゲットインタフェース14(1)〜14(Q)を含むことができる。ノード20A、20B、20Cの各々はさらに、データがノード20A、20B、および20Cを介して伝播されるときに該データを変換するように構成された1つまたは複数の受動処理ユニット(passive processing unit)(図示せず)を含むことができる。
データは、ソース/ターゲットパターン10を使用して、あるノード20から、1つまたは複数の他のノード20に渡されることで、データフローネットワーク内を通過する。データフローネットワーク内の2つのノード20の各々の接続は、ソースインタフェース12を実装するノード20(例えば、ノード20Aまたはノード20C)とターゲットインタフェース14を実装するノード(例えば、ノード20Bまたはノード20C)とを対にすることによって表わされる。
任意の数のデータフローネットワークのコンポーネントを、ソース/ターゲットパターン10を使用して定義することができ、これらのコンポーネントを、多くの任意のデータフローネットワークに結合することができる。データフローネットワークの例には、無限(unbounded)バッファ、有限(bounded)バッファ、単一割り当てブロック、プロデューサ/コンシューマバッファ、データシンク(方法呼び出し)、データ変換、タイマ、および入出力プロセッサが含まれる。ソース/ターゲットパターン10を使用して、より複雑なネットワークからデータフローネットワークを構成することもできる。例えば、リーダ/ライタロック実装またはモニタ実装を、ソース/ターゲットパターン10を使用してデータフローネットワークにより表すことができる。
図3に示されるように、任意の数のプロセスが、データフローネットワークにデータを提供することができ、そして任意の数のプロセスが、データフローネットワークからデータを受信することができる。図3は、プロセス40(1)〜40(R)および40(R+1)〜40(S)に接続されたデータフローネットワーク32を有するプロセスネットワーク30の一実施形態を示すブロック図であり、この場合、Rは1以上の整数であり、Sは2以上の整数であり、RはS未満であり、R番目およびS番目のプロセス40を表している。
データフローネットワーク32は、データをプロセス40(1)〜40(R)からプロセス40(R+1)〜40(S)に伝播するように構成された受動データ構造(passive data flow construct)を形成する。データフローネットワーク32は、1つまたは複数のターゲットインタフェース14のセット34と、1つまたは複数のソースインタフェース12のセット36と、ノード20および受動処理ブロックを含み、ターゲットインタフェース14のセット34をソースインタフェース12のセット36に相互接続するネットワークコンポーネント38のセットとを含む。ネットワークコンポーネント38は、任意の適切なタイプ、数、および/または組み合わせのノード20と、任意の適切な方法でターゲットインタフェース14のセット34をソースインタフェース12のセット36と接続する受動処理ブロックとを含むことができる。
プロセス40(1)〜40(R)は、1つまたは複数のソースインタフェース12のそれぞれのセット42(1)〜42(R)を含み、この場合、各セット42は他のセット42と同じ数のソースインタフェース12または異なる数のソースインタフェース12を含むことができる。ターゲットインタフェース14のセット34は、ターゲットインタフェース14のセット34とソースインタフェース12のセット42(1)〜42(R)との間のリンク16のセット44を確立する。図1B、1Cに図示されるように、セット44内の各ターゲットインタフェース14は、セット42(1)〜42(R)内の任意の数のソースインタフェース12に接続することができ、セット44内の任意の数のターゲットインタフェース14は、セット42(1)〜42(R)内の各ソースインタフェース12に接続することができる。セット42(1)〜42(R)内の各ソースインタフェース12は、図1Aに関して上述したように、セット44内の1つまたは複数のターゲットインタフェース14にデータを供給することにより、データをプロセス40(1)〜40(R)からデータフローネットワーク32に伝播させる。プロセス40(1)〜40(R)の1つまたは複数は、ソースインタフェース12の1つまたは複数の追加のセット(図示せず)を含むこと、ならびに/あるいは、1つまたは複数の他のデータフローネットワーク32(図示せず)に接続するターゲットインタフェース14の1つまたは複数の追加のセット(図示せず)を含むこともできる。
プロセス40(R+1)〜40(S)は、1つまたは複数のターゲットインタフェース14のセット46(R+1)〜46(S)をそれぞれ含み、この場合、各セット46は、他のセット46と同じ数のターゲットインタフェース14または異なる数のターゲットインタフェース14を含むことができる。ターゲットインタフェース14のセット46(R+1)〜46(S)は、ターゲットインタフェース14のセット46(R+1)〜46(S)とソースインタフェース12のセット36との間のリンク16のセット48を確立する。図1B、1Cに図示されるように、セット46(R+1)〜46(S)内の各ターゲットインタフェース14は、セット36内の任意の数のソースインタフェース12に接続することができ、セット46(R+1)〜46(S)内の任意の数のターゲットインタフェース14は、セット36内の各ソースインタフェース12に接続することができる。セット36内の各ソースインタフェース12は、図1Aに関して上述したように、セット46(R+1)〜46(S)内の1つまたは複数のターゲットインタフェース14にデータを供給することにより、データをデータフローネットワーク32から1つまたは複数のプロセス40(R+1)〜40(S)に伝播させる。1つまたは複数のプロセス40(R+1)〜40(S)は、ターゲットインタフェース14の1つまたは複数の追加のセット(図示せず)を含むこと、ならびに/あるいは1つまたは複数の他のデータフローネットワーク32(図示せず)に接続するソースインタフェース12の1つまたは複数のセット(図示せず)を含むこともできる。
プロセス40(1)〜40(R)は、プロセス40(R+1)〜40(S)に関する情報を全く必要とせずに、データフローネットワーク32を使用してプロセス40(R+1)〜40(S)にデータを提供することができる。同様に、プロセス40(R+1)〜40(S)は、プロセス40(1)〜40(R)に関する情報を全く必要とせずに、データフローネットワーク32を使用してプロセス40(1)〜40(R)からデータを受信することができる。
図4に示されるように、プロセスは、任意の数のデータフローネットワークにデータを提供し、任意の数のデータフローネットワークからデータを受信することができる。図4は、プロセス40がデータフローネットワーク32(1)〜32(T)および32(T+1)〜32(V)に接続されたプロセスネットワーク50の一実施形態を図示しているブロック図であり、この場合、Tは1以上の整数であり、Vは2以上の整数であり、TはV未満であり、T番目およびV番目のデータフローネットワーク32を表す。
プロセス40は、データフローネットワーク32(1)〜32(T)からデータを受信してデータフローネットワーク32(T+1)〜32(V)にデータを提供するように構成されたプログラムの命令のセットを含む。プロセス40は、1つまたは複数のターゲットインタフェース14のセット54と、1つまたは複数のソースインタフェース12のセット56と、プロセスコンポーネント58のセットとを含み、ターゲットインタフェース14のセット54をソースインタフェース12のセット56と相互接続する。プロセスコンポーネント58は、任意の適切なタイプの命令、任意の適切な数の命令、および/または任意の適切な組み合わせの命令、および/または任意の適切な方法でターゲットインタフェース14のセット54をソースインタフェース12のセット56に接続するデータ構造を含むことができる。
データフローネットワーク32(1)〜32(T)は、それぞれ1つまたは複数のソースインタフェース12のセット62(1)〜62(T)を含み、この場合、各セット62は、他のセット62と同じ数のソースインタフェース12または異なる数のソースインタフェース12を含むことができる。ターゲットインタフェース14のセット54は、ターゲットインタフェース14のセット54とソースインタフェース12のセット62(1)〜62(T)との間のリンク16のセット64を確立する。図1B、1Cに図示されるように、セット54内の各ターゲットインタフェース14は、セット62(1)〜62(T)内の任意の数のソースインタフェース12に接続することができ、セット54内の任意の数のターゲットインタフェース14は、セット62(1)〜62(T)内の各ソースインタフェース12に接続することができる。セット62(1)〜62(T)内の各ソースインタフェース12は、図1Aに関して上述したように、セット54内の1つまたは複数のターゲットインタフェース14にデータを供給することにより、データをデータフローネットワーク32(1)〜32(T)からプロセス40に伝播させる。データフローネットワーク32(1)〜32(T)はそれぞれ、1つまたは複数の他のプロセス40(図示せず)に接続するターゲットインタフェース14の1つまたは複数のセット(図示せず)を含む。また、データフローネットワーク32(1)〜32(T)は、ソースインタフェース12の1つまたは複数の追加セット(図示せず)を含むことができ、ならびに/あるいは1つまたは複数の他のプロセス40(図示せず)に接続するターゲットインタフェース14の1つまたは複数のセット(図示せず)を含むこともできる。
データフローネットワーク32(T+1)〜32(V)はそれぞれ、1つまたは複数のターゲットインタフェース14のセット66(T+1)〜66(V)を含み、この場合、各セット66は、他のセット66と同じ数のターゲットインタフェース14または異なる数のターゲットインタフェース14を含むことができる。ターゲットインタフェース14のセット66(T+1)〜66(V)は、ターゲットインタフェース14のセット66(T+1)〜66(V)とソースインタフェース12のセット56との間のリンク16のセット68を確立する。図1B、1Cに示されるように、セット66(T+1)〜66(V)内の各ターゲットインタフェース14は、セット56内の任意の数のソースインタフェース12に接続することができ、セット66(T+1)〜66(V)内の任意の数のターゲットインタフェース14は、セット56内の各ソースインタフェース12に接続することができる。プロセス40は、図1Aに関して上述したように、セット56内の各ソースインタフェース12に、セット66(T+1)〜66(V)内の1つまたは複数のターゲットインタフェース14に対してデータを供給させることにより、データを1つまたは複数のデータフローネットワーク32(T+1)〜32(V)に伝播させる。データフローネットワーク32(T+1)〜32(V)は、ソースインタフェース12の1つまたは複数のセット(図示せず)を含むこと、ならびに/あるいは1つまたは複数の他のプロセス40(図示せず)に接続するターゲットインタフェース14の1つまたは複数のセット(図示せず)を含むこともできる。
図5は、送信オペレーション(send operation)を実装するように構成された発信元(originator)ブロック70の一実施形態を図示しているブロック図である発信元ブロック70は、ソースインタフェース12を含むが、ターゲットインタフェース14を全く含まない。発信元ブロック70をプロセス40内に含めることにより、プロセス40はデータをデータフローネットワーク32に伝播することができる。したがって、発信元ブロック70は、プロセス40からデータを受信し、1つまたは複数の接続されたデータフローネットワーク32にデータを提供することによって、送信オペレーションを実装する。
発信元ブロック70は、コンピュータシステムにおける実行のためにプロセス40をスケジューリングする、基礎となるプロセススケジューラと対話することもあり、または対話しないこともある。したがって、発信元ブロック70はスケジューラに対するインタフェースを含まないこともある。
図6は、受信オペレーション(receive operation)を実装するように構成されたトリガ(trigger)ブロック80の一実施形態を図示しているブロック図である。トリガブロック80は、ターゲットインタフェース14を含むが、ソースインタフェース12を全く含まない。トリガブロック80をプロセス40内に含めることにより、プロセス40は、データフローネットワーク32からデータを受信することができる。トリガブロック80は、データフローネットワーク32の1つの終端点(termination point)として、またはデータフローネットワーク32の任意の数の終端点のうちのいずれか1つの終端点としての機能を果たす。したがって、トリガブロック80は、データフローネットワーク32からデータを受信して該データをプロセス40に提供することによって受信オペレーションを実装する。
トリガブロック80は、スケジューラインタフェース82も含む。スケジューラインタフェース82は、コンピュータシステムにおける実行のためにプロセス40をスケジューリングする、基礎となるプロセススケジューラと対話する。特に、スケジューラインタフェース82はスケジューラとともに、データがすぐに利用可能でないときにトリガブロック80に作用する受信オペレーションが開始されたことに応答して、プロセス40を一時停止(例えば、ブロック)させるように動作する。さらに、スケジューラインタフェース82はスケジューラとともに、トリガブロック80に作用する受信オペレーションのデータがトリガブロック80に到着したことに応答して、プロセス40を再開(例えば、ブロック解除)させるように動作する。
図7は、送信オペレーションおよび受信オペレーションを含むプロセスネットワーク90の一実施形態を図示しているブロック図である。図7では、プロセス40(1)が。プロセス40(2)からデータを受信し、プロセス40(3)にデータを提供する。プロセス40(2)からデータを受信するために、プロセス40(1)のトリガブロック80(1)は、データをプロセス40(2)の発信元ブロック70(1)から供給され、トリガブロック80(1)は、受信オペレーションを実装するデータフローネットワーク32Aによって示されるようにデータを受け入れる。プロセス40(1)は、データに対していくつかの計算を実行し、その結果得られたデータをプロセス40(3)に送信する。データをプロセス40(3)に送信するために、プロセス40(1)の発信元ブロック70(2)は、データをプロセス40(3)のトリガブロック80(2)に供給し、トリガブロック80(2)は、送信オペレーションを実装するデータフローネットワーク32Bによって示されるように、このデータを受け入れる。
図8は、選択(choice)および結合(join)オペレーションを実装するように構成されたデータフローネットワーク32の一実施形態を図示しているブロック図である。データフローネットワーク32は、ノード20(1)〜20(W+1)を含み、この場合、Wは2以上の整数であり、W番目のノード20、W番目のプロセス40、W番目の発信元ブロック70を表す。各ノード20(1)〜20(W+1)は、ソースインタフェース12とターゲットインタフェース14とを含む。ノード20(1)〜20(W)内のターゲットインタフェース14は、それぞれプロセス40(1)〜40(W)内の各々の発信元ブロック70(1)〜70(W)からデータを受信する。ノード20(1)〜20(W)内のソースインタフェース12はそれぞれ、ノード20(W+1)内のターゲットインタフェース14にデータを提供する。ノード20(W+1)内のソースインタフェース12は、プロセス40(W+1)内のトリガブロック70にデータを提供する。
選択オペレーションを実装するために、ノード20(W+1)は、ノード20(W+1)にデータを供給するノード20(1)〜20(W)のうちの最初のノードのみからのデータを受け入れて、残りのノード20(1)〜20(W)の全てからのデータの供給は拒否する。ノード20(W+1)は、このデータをプロセス40(W+1)内のトリガブロック80に提供する。
一実施形態では、各ノード20(1)〜20(W)は、その各々のソースインタフェース12を使用して、それぞれ発信元ブロック70(1)〜70(W)からのデータの供給に応答して該ノードのアイデンティティをデータとしてノード20(W+1)に供給する。ノード20(W+1)は、そのターゲットインタフェース14を使用して、ノード20(1)〜20(W)のセットから供給された最初のアイデンティティを受け入れ、ノード20(1)〜20(W)のセットから供給された後続のアイデンティティは全て拒否する。ソースインタフェース12を使用してノード20(W+1)からの受取応答を受信するノード20(1)〜20(W)は、それぞれの発信元ブロック70(1)〜70(W)からそのターゲットインタフェース14を使用して供給されたデータを受け入れる。その各々のソースインタフェース12を使用してノード20(W+1)からの拒否応答を受信するノード20(1)〜20(W)は、その各々のターゲットインタフェース14を使用してそれぞれの発信元ブロック70(1)〜70(W)から供給されたデータを拒否する。ノード20(W+1)は、そのソースインタフェース12を使用して、データとして受け入れたアイデンティティをプロセス40(W+1)内のトリガブロック70に供給する。トリガブロック70は、ノード20(W+1)からのアイデンティティを受け入れることで応答する。プロセス40(W+1)は次に、ノード20(W+1)から受信したアイデンティティを使用して、選択オペレーションのデータをノード20(1)〜20(W)から取り出す。
別の実施形態では、ノード20(1)〜20(W)を省略して、ノード20(W+1)が、発信元ブロック70(1)〜70(W)から直接データを受信することができる。この実施形態では、発信元ブロック70(1)〜70(W)は、データをノード20(W+1)に供給する。ノード20(W+1)は、そのターゲットインタフェース14を使用して、発信元ブロック70(1)〜70(W)のセットから供給された最初のデータを受け入れ、発信元ブロック70(1)〜70(W)のセットから供給された全ての後続のデータは拒否する。ノード20(W+1)は、そのソースインタフェース12を使用して、受け入れたデータをプロセス40(W+1)内のトリガブロック70に供給する。トリガブロック70は、ノード20(W+1)からのデータを受け入れることで応答し、選択オペレーションを完了させる。
他の実施形態では、選択オペレーションは、発信元ブロック70および/またはトリガブロック80の他の組み合わせとインタフェースをとるソース/ターゲットパターン10の他の組み合わせを使用して、データフローネットワーク32C内で実装される場合がある。
図9は、選択オペレーションを含むプロセスネットワーク92の一実施形態を図示しているブロック図である。図9では、選択オペレーションは、データフローネットワーク32Cを含めることによって、プロセス40(4)とプロセス40(5)および40(6)との間で実装される。データフローネットワーク32Cを使用して、プロセス40(4)は、データをデータフローネットワーク32Cに提供するプロセス40(5)および40(6)のうちの最初のプロセスから、データを受け入れる。プロセス40(4)は、データに対していくつかの計算を実行し、その結果得られたデータを、送信オペレーションを実装するデータフローネットワーク32Dを使用してプロセス40(7)に送信する。
図8の実施形態を使用して、結合オペレーションを実装することもできる。結合オペレーションを実装するために、ノード20(W+1)は、ノード20(1)〜20(W)の全てからデータを受け入れた後に、ノード20(1)〜20(W)の全てからのデータをプロセス40(W+1)内のトリガブロック80に供給する。
一実施形態では、各ノード20(1)〜20(W)は、それぞれ発信元ブロック70(1)〜70(W)からのデータの供給に応答して、ソースインタフェース12を使用して、ノード20(W+1)に供給されるデータの一部としてそのアイデンティティを供給するように構成される。ノード20(W+1)は、ターゲットインタフェース14を使用して受信したオファーを追跡して、全てのノード20(1)〜20(W)がそれらのアイデンティティを供給したときを判断する。ノード20(W+1)は、そのターゲットインタフェース14を使用して、延期されていた最後のオファーを除いて全てのオファーに応答する。全てのノード20(1)〜20(W)からのオファーの受信に応答して、ノード20(W+1)は、そのターゲットインタフェース14を使用して、最後のオファーを提供したノード20(1)〜20(W)を除く全てのノード20(1)〜20(W)に対して、予約オペレーションを呼び出す。ノード20(W+1)は、該ノード20(W+1)が、全ての予約が成功したか否か、またはいずれかの予約が失敗したか否かを決定するまで、受信した最後のオファーを提供したノード20(1)〜20(W)に対する応答を待つ。
予約呼び出しを受信する全てのノード20(1)〜20(W)は、それらの各々のターゲットインタフェース14を使用して、それぞれの発信元ブロック70(1)〜70(W)に対する予約オペレーションを呼び出す。発信元ブロック70(1)〜70(W)は、それぞれの呼び出しを行うノード20(1)〜20(W)に対して成功または失敗の指示を提供することによって、予約呼び出しに応答する。発信元ブロック70が、供給されたデータを保持できなくなった場合、または供給されたデータが別のノード20(図示せず)によって予約されていた場合、発信元ブロック70は、失敗の指示により予約呼び出しに応答する。そうでなければ、発信元ブロック70は成功の指示により予約呼び出しに応答する。
ノード20(1)〜20(W)は、それぞれの発信元ブロック70(1)〜70(W)からの失敗指示の受信に応答して、予約の失敗を検出する。ノード20(1)〜20(W)は、発信元ブロック70(1)〜70(W)が各々のノード20(1)〜20(W)から切断されたことに応答して、予約の失敗を検出することもある。失敗した予約を検出した各ノード20(1)〜20(W)は、失敗の指示を用いてノード20(W+1)の予約呼び出しに応答する。それぞれの発信元ブロック70(1)〜70(W)から成功の指示を受信した各ノード20(1)〜20(W)は、成功の指示を用いてノード20(W+1)の予約呼び出しに応答する。
ノード20(W+1)は、ノード20(1)〜20(W)から失敗の指示を受信したことに応答して、またはノード20(1)〜20(W)のいずれかが切断されたことに応答して、予約の失敗を検出する。ノード20(W+1)がいずれかの予約の失敗を検出した場合、ノード20(W+1)は、そのターゲットインタフェース14を使用して、成功の指示で予約呼び出しに応答した全てのノード20(1)〜20(W)に対して解放(release)オペレーションを呼び出す。また、ノード20(W+1)は、ノード20(W+1)が受信した最後のオファーを提供したノード20(1)〜20(W)に対して延期(postponed)を返す。解放呼び出しを受信したことに応答して、ノード20(1)〜20(W)は、成功した予約を解放し、次に、対応する発信元ブロック70(1)〜70(W)に対して解放オペレーションを呼び出す。発信元ブロック70(1)〜70(W)は、ノード20(1)〜20(W)から解放呼び出しを受信したことに応答して、成功した予約を解放する。
ノード20(W+1)が全ての予約が成功したことを検出した場合、ノード20(W+1)は、そのターゲットインタフェース14を使用して、ノード20(W+1)が受信した最後のオファーを提供したノード20(1)〜20(W)以外の全てのノード20(1)〜20(W)に対して消費(consume)オペレーションを呼び出す。ノード20(W+1)が、最後のオファーを行ったノード20(1)〜20(W)に対して受諾(accepted)を返し、次にそのノード20(1)〜20(W)が、対応する発信元ブロック70(1)〜70(W)に対して受諾を返す。消費呼び出しを受信する全てのノード20(1)〜20(W)は、次に、それらの各々のターゲットインタフェース14を使用して、それぞれの発信元ブロック70(1)〜70(W)に対して消費オペレーションを呼び出す。ノード20(W+1)は、そのソースインタフェース12を使用して、組み合わされたデータをプロセス40(W+1)内のトリガブロック70に供給する。トリガブロック70は、ノード20(W+1)からのデータを受け入れることによって応答して、結合オペレーションを完了させる。
別の実施形態では、ノード20(W+1)は、全てのデータがノード20(1)〜20(W)で予約されたか受け入れられたとき、プロセス40(W+1)内のトリガブロック70にBoolean値で信号を送る。トリガブロック70は、データをノード20(1)〜20(W)から取り出す。この実施形態では、ノード20(W+1)は、データを提供するノード20(1)〜20(W)の最後のノードに受諾を返す。
他の実施形態では、結合オペレーションは、発信元ブロック70および/またはトリガブロック80の他の組み合わせとインタフェースをとるソース/ターゲットパターン10の他の組み合わせを使用して、データフローネットワーク32C内で実装される場合がある。
図10は、結合オペレーションを含むプロセスネットワーク94の一実施形態を図示しているブロック図である。図10では、結合オペレーションは、データフローネットワーク32Cを含めることによって、プロセス40(8)とプロセス40(9)および40(10)との間で実装される。データフローネットワーク32Cを使用して、プロセス40(4)は、プロセス40(9)および40(10)の各々からデータフローネットワーク32Cに提供されたデータを受け入れる。プロセス40(8)は、データに対していくつかの計算を実行し、その結果得られたデータを、送信オペレーションを実装するデータフローネットワーク32Eを使用してプロセス40(11)に送信する。
図5〜10に関して上述した送信、受信、選択、および結合のオペレーションを、他の実施形態では、より複雑な構成に組み合わせることもできる。
図11は、プロセススケジューラを有するランタイム環境を実装するように構成されたコンピュータシステム100の一実施形態を図示するブロック図である。
コンピュータシステム100は、1つまたは複数のプロセッサパッケージ102と、メモリシステム104と、0またはそれ以上の入出力装置106と、0またはそれ以上のディスプレイ装置108と、0またはそれ以上の周辺機器110と、0またはそれ以上のネットワーク装置112とを含む。プロセッサパッケージ102、メモリシステム104、入出力装置106、ディスプレイ装置108、周辺機器110、およびネットワーク装置112は、任意の適切なタイプ、数、構成のコントローラ、バス、インタフェース、および/または他の有線もしくは無線接続部を含む相互接続部114のセットを使用して通信する。
コンピュータシステム100は、汎用目的または特殊目的で構成された任意の適切な処理装置を表す。コンピュータシステム100の例には、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、PDA(携帯情報端末)、携帯電話、およびオーディオ/ビデオ装置が含まれる。コンピュータシステム100のコンポーネント(すなわち、プロセッサパッケージ102、メモリシステム104、入出力装置106、ディスプレイ装置108、周辺機器110、ネットワーク装置112、相互接続部114)は、共通の筐体(図示せず)内に含めることもでき、あるいは任意の適切な数の別個の筐体(図示せず)内に含めることもできる。
プロセッサパッケージ102は、ハードウェアスレッド116(1)〜116(X)を含み、この場合、Xは1以上の整数であり、X番目のハードウェアスレッド116を表す。プロセッサパッケージ102内の各ハードウェアスレッド116は、メモリシステム104内に記憶されている命令にアクセスして実行するように構成される。命令は、基本入出力システム(BIOS)もしくはファームウェア(図示せず)、OS120、リソース管理レイヤ121、ランタイムプラットフォーム122、およびアプリケーション124を含むことができる。各ハードウェアスレッド116は、入出力装置106、ディスプレイ装置108、周辺機器110、および/またはネットワーク装置112から受信した情報とともに、またはその情報に応答して命令を実行することができる。
コンピュータシステム100は、OS120をブートして実行する。OS120は、コンピュータシステム100のコンポーネントを管理して、アプリケーションがコンポーネントにアクセスし使用することを可能にする機能のセットを提供するために、ハードウェアスレッド116によって実行可能な命令を含む。一実施形態では、OS120はWindows(登録商標)オペレーティングシステムである。他の実施形態では、OS120は、コンピュータシステム100とともに使用するのに適した別のオペレーティングシステムである。
リソース管理レイヤ121は、ハードウェアスレッド116を含めコンピュータシステム100のリソースを割り当てるために、OS120とともに実行可能な命令を含む。リソース管理レイヤ121は、コンピュータシステム100内に、1つまたは複数のアプリケーション124に利用可能な機能のライブラリとして、またはOS120の統合部分として含まれる。
ランタイムプラットフォーム122は、ランタイム環境を生成し、ランタイム機能をアプリケーション124に提供するために、OS120およびリソース管理レイヤ121とともに実行可能な命令を含む。これらのランタイム機能は、スケジューラ機能を含む。スケジューラ機能は、呼び出されると、1つまたは複数のハードウェアスレッド116(1)〜116(X)による実行のために、アプリケーション124などのプログラムのプロセスをスケジュールするように動作するスケジューラを作成する。ランタイム機能は、アプリケーション124の一部として、1つまたは複数のアプリケーション124に利用可能な機能のライブラリとして、あるいはOS120および/またはリソース管理レイヤ121の統合部分として、コンピュータシステム100に含まれる。
各アプリケーション124は、所望のオペレーションがコンピュータシステム100によって実行されるように、OS120、リソース管理レイヤ121、および/またはランタイムプラットフォーム122とともに実行可能な命令を含む。各アプリケーション124は、ランタイムプラットフォーム122によって提供されたスケジューラにより実行することができる1つまたは複数のプログラムを表す。
メモリシステム104は、命令およびデータを記憶するように構成された任意の適切なタイプ、数、構成の揮発性または不揮発性の記憶装置を含む。メモリシステム104の記憶装置は、OS120、リソース管理レイヤ121、ランタイムプラットフォーム122、アプリケーション124を含むコンピュータ実行可能命令を記憶するコンピュータ読取可能記憶媒体を表す。命令は、コンピュータシステムによって実行可能であり、本明細書に説明されたOS120、リソース管理レイヤ121、ランタイムプラットフォーム122、アプリケーション124の機能および方法を実行する。メモリシステム104内の記憶装置の例には、ハードディスクドライブ、RAM(random access memory)、ROM(read only memory)、フラッシュメモリドライブおよびカード、ならびに磁気および光ディスクが含まれる。
メモリシステム104は、プロセッサパッケージ102、入出力装置106、ディスプレイ装置108、周辺機器110、ネットワーク装置112から受信した命令およびデータを記憶する。メモリシステム104は、記憶された命令およびデータをプロセッサパッケージ102、入出力装置106、ディスプレイ装置108、周辺機器110、およびネットワーク装置112に提供する。
入出力装置106は、ユーザからの命令またはデータをコンピュータシステム100に入力し、コンピュータシステム100からの命令またはデータをユーザに出力するように構成された任意の適切なタイプ、数、構成の入出力装置を含む。入出力装置106の例には、キーボード、マウス、タッチパッド、タッチスクリーン、ボタン、ダイアル、ノブ、およびスイッチが含まれる。
ディスプレイ装置108は、テキストおよび/または図形情報をコンピュータシステム100のユーザに出力するように構成された任意の適切なタイプ、数、構成のディスプレイ装置を含む。ディスプレイ装置108の例には、モニタ、ディスプレイスクリーン、およびプロジェクタが含まれる。
周辺機器110は、コンピュータシステム100内の1つまたは複数の他のコンポーネントとともに動作して一般的または特定の処理機能を実行するように構成された任意の適切なタイプ、数、構成の周辺機器を含む。
ネットワーク装置112は、コンピュータシステム100が1つまたは複数のネットワーク(図示せず)を介して通信することを可能にするように構成された任意の適切なタイプ、数、構成のネットワーク装置を含む。ネットワーク装置112は、任意の適切なネットワークプロトコルおよび/または構成に従って動作して、コンピュータシステム100が情報をネットワークに伝送し、コンピュータシステム100が情報をネットワークから受信することを可能にする。
図11の実施形態では、OS120、リソース管理レイヤ121、ランタイムプラットフォーム122、アプリケーション124の1つまたは複数は、図1A〜10に関して上述した任意の適切な数のソース/ターゲットパターン10を含むデータフローネットワーク32を使用して接続されるプロセス40を有するプロセスネットワークを含むことができる。
上述の実施形態は、一般的、柔軟、拡張可能な方法でプロセスをプロセスネットワークに接続するためのソース/ターゲットパターンと呼ばれる構成モデルを提供する。このモデルにより、共通のプロセス代数構造をデータフローネットワークと組み合わせてプロセスネットワークを形成することができる。送信、受信、選択、結合などの典型的なプロセス代数オペレーションは、プロセス間で相互利用可能な完全なプロセス代数オペレーションを提供するデータフローネットワークを形成する構成モデルによって表すことができる。この構成モデルは、単純なデータフローネットワークだけでなく、より複雑なデータフローネットワークなどの幅広いデータフローネットワークに適用することができる。
さらに、この構成モデルは、疎結合プロセスネットワークを可能にする。疎結合プロセスネットワークでは、プロセスは、該プロセスが対話する他のプロセスに関する情報を全く持たなくてもよく、または限られた情報のみを持てばよい。代わりに、プロセスは、他のプロセスとの接続ポイント(connection point)および接続ポイントの意味(significance)を認識する。
疎結合プロセスネットワークを使用して高度に維持可能なプログラムを達成し、そしてデータフロー構造に基づいたより複雑で高度なルーティングロジックを可能にすることができる。受動データフローネットワークは、中間体(intermediary)として機能する能動プロセス(active process)よりも、より効率的に、あるプロセスから別のプロセスにデータをルーティングすることができる。
本明細書では、特定の実施形態を例示して説明したが、当業者には、本発明の範囲から逸脱することなく、様々な代替および/または等価な実装をこれらの図示および説明された実施形態と置き換えることができることは理解されよう。本出願は、本明細書で説明された特定の実施形態の任意の変更または変形も網羅するように意図されている。したがって、本発明は、特許請求の範囲およびその等価物によってのみ限定されることが意図されている。

Claims (15)

  1. コンピュータシステム(100)において実行される方法であって、
    第1のソースオペレーションと第1のターゲットインタフェース(14)との間の第1のリンク(16)を生成する前記第1のターゲットインタフェースにより、第1のソースインタフェース(12)の第1のリンクオペレーションを呼び出すステップと、
    前記第1のターゲットインタフェースの第1のオファーオペレーションを呼び出して、前記第1のソースインタフェースから前記第1のターゲットインタフェースに第1のデータを供給するステップと、
    前記第1のオファーオペレーションが呼び出された後に、前記第1のターゲットインタフェースにより前記第1のソースインタフェースの第1の予約オペレーションを呼び出すステップと
    を含むことを特徴とする方法。
  2. 前記第1のオファーオペレーションに応答して、前記第1のターゲットインタフェースから前記第1のソースインタフェースに延期を返すステップと、
    延期を返した後に、前記第1のターゲットインタフェースにより前記第1のソースインタフェースの前記第1の予約オペレーションを呼び出して、前記第1のターゲットインタフェースに対して前記第1のデータを予約するステップと
    をさらに含むことを特徴とする、請求項1に記載の方法。
  3. 前記第1の予約オペレーションを呼び出した後に、前記第1のターゲットインタフェースにより前記第1のソースインタフェースの消費オペレーションを呼び出して、前記第1のターゲットインタフェースにより前記第1のデータを消費するステップをさらに含むことを特徴とする請求項2に記載の方法。
  4. 前記第1の予約オペレーションを呼び出した後に、前記第1のターゲットインタフェースにより前記第1のソースインタフェースの解放オペレーションを呼び出して、前記第1のデータを解放するステップをさらに含むことを特徴とする請求項2に記載の方法。
  5. 前記第1のソースインタフェースは、少なくとも前記第1のリンクオペレーションと、前記第1の予約オペレーションと、解放オペレーションと、消費オペレーションを含むことを特徴とする請求項1に記載の方法。
  6. 第2のソースオペレーションと第1のターゲットインタフェースとの間の第2のリンク(16)を生成する前記第1のターゲットインタフェースにより、第2のソースインタフェース(12)の第2のリンクオペレーションを呼び出すステップと、
    前記第1のターゲットインタフェースの第2のオファーオペレーションを呼び出して、前記第2のソースインタフェースから前記第1のターゲットインタフェースに第2のデータを供給するステップと、
    前記第2のオファーオペレーションが呼び出された後に、前記第1のターゲットインタフェースにより前記第2のソースインタフェースの第2の予約オペレーションを呼び出すステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記第1の予約オペレーションを呼び出した後に、前記第1のターゲットインタフェースにより前記第1のソースインタフェースの第1の消費オペレーションを呼び出して、前記第1のターゲットインタフェースにより前記第1のデータを消費するステップと、
    前記第2の予約オペレーションを呼び出した後に、前記第1のターゲットインタフェースにより前記第2のソースインタフェースの第2の消費オペレーションを呼び出して、前記第1のターゲットインタフェースにより前記第2のデータを消費するステップと
    をさらに含むことを特徴とする請求項6に記載の方法。
  8. 前記第1の予約オペレーションを呼び出した後に、前記第1のターゲットインタフェースにより前記第1のソースインタフェースの第1の解放オペレーションを呼び出して、前記第1のデータを解放するステップと、
    前記第2の予約オペレーションを呼び出した後に、前記第1のターゲットインタフェースにより前記第2のソースインタフェースの第2の解放オペレーションを呼び出して、前記第2のデータを解放するステップと
    をさらに含むことを特徴とする請求項6に記載の方法。
  9. 前記第2のソースインタフェースは、少なくとも前記第2のリンクオペレーションと、前記第2の予約オペレーションと、解放オペレーションと、消費オペレーションを含むことを特徴とする請求項6に記載の方法。
  10. コンピュータシステム(100)によって実行されると、該コンピュータシステムに、
    少なくともリンクオペレーション、オファーオペレーション、予約オペレーション、解放オペレーション、および消費オペレーションを含む第1のソース/ターゲットパターン(10)を使用して、第1のプロセス(40)からデータフローネットワーク(32)に第1のデータを提供するステップと、
    少なくとも前記リンクオペレーション、前記オファーオペレーション、前記予約オペレーション、前記解放オペレーション、および前記消費オペレーションを含む第2のソース/ターゲットパターン(10)を使用して、前記データフローネットワークから第2のプロセス(40)に前記第1のデータを提供するステップ
    を含む方法を実行させるコンピュータ実行可能命令を記憶したことを特徴とするコンピュータ読取可能記憶媒体(120)。
  11. 前記方法は、
    少なくとも前記リンクオペレーション、前記オファーオペレーション、前記予約オペレーション、前記解放オペレーション、および前記消費オペレーションを含む第3のソース/ターゲットパターン(10)を使用して、第3のプロセス(40)から前記データフローネットワークに第2のデータを提供するステップと、
    前記第1のデータが前記データフローネットワークに提供されたこと応答して、前記第2のデータが前記データフローネットワークに提供される前に、前記第2のソース/ターゲットパターンを使用して、前記データフローネットワークから前記第2のプロセスに前記第1のデータを提供するステップと
    をさらに含むことを特徴とする請求項10に記載のコンピュータ読取可能記憶媒体。
  12. 前記方法は、
    少なくとも前記リンクオペレーション、前記オファーオペレーション、前記予約オペレーション、前記解放オペレーション、および前記消費オペレーションを含む第3のソース/ターゲットパターン(10)を使用して、第3のプロセス(40)から前記データフローネットワークに第2のデータを提供するステップと、
    前記第1のデータおよび前記第2のデータが前記データフローネットワークに提供された後に、前記第2のソース/ターゲットパターンを使用して、前記データフローネットワークから前記第2のプロセスに前記第1のデータおよび前記第2のデータを提供するステップと
    をさらに含むことを特徴とする請求項10に記載のコンピュータ読取可能記憶媒体。
  13. 前記方法は、
    前記第1のデータが前記データフローネットワークから前記第2のプロセスに提供される前に、前記データフローネットワークの前記第1のデータを変換するステップをさらに含むことを特徴とする請求項10に記載のコンピュータ読取可能記憶媒体。
  14. 前記第1のデータが前記データフローネットワークから前記第2のプロセスに提供される前に、前記第2のプロセスを一時停止するステップをさらに含むことを特徴とする請求項10に記載のコンピュータ読取可能記憶媒体。
  15. 少なくとも前記リンクオペレーション、前記オファーオペレーション、前記予約オペレーション、前記解放オペレーション、および前記消費オペレーションを含む第3のソース/ターゲットパターン(10)を使用して、前記データフローネットワークから第3のプロセス(40)に前記第1のデータを提供するステップをさらに含むことを特徴とする請求項10に記載のコンピュータ読取可能記憶媒体。
JP2011511686A 2008-06-02 2009-05-07 データフローネットワーク Expired - Fee Related JP5551687B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/131,449 US8407728B2 (en) 2008-06-02 2008-06-02 Data flow network
US12/131,449 2008-06-02
PCT/US2009/043112 WO2009148759A2 (en) 2008-06-02 2009-05-07 Data flow network

Publications (2)

Publication Number Publication Date
JP2011522328A true JP2011522328A (ja) 2011-07-28
JP5551687B2 JP5551687B2 (ja) 2014-07-16

Family

ID=41381493

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011511686A Expired - Fee Related JP5551687B2 (ja) 2008-06-02 2009-05-07 データフローネットワーク

Country Status (11)

Country Link
US (1) US8407728B2 (ja)
EP (1) EP2300927A4 (ja)
JP (1) JP5551687B2 (ja)
KR (1) KR101607716B1 (ja)
CN (1) CN102047240B (ja)
AU (1) AU2009255484B2 (ja)
BR (1) BRPI0910566B1 (ja)
CA (1) CA2722675C (ja)
MX (1) MX2010012821A (ja)
RU (1) RU2511611C2 (ja)
WO (1) WO2009148759A2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109560900A (zh) * 2017-09-27 2019-04-02 阿里巴巴集团控股有限公司 数据发送方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295899A (ja) * 2003-03-26 2004-10-21 Microsoft Corp テスト通知を利用するシステムおよび方法
US20050204367A1 (en) * 2004-03-12 2005-09-15 Minium Dennis W.Jr. Integration architecture for non-integrated tools
US20060230411A1 (en) * 2005-04-12 2006-10-12 Microsoft Corporation Resource accessing with locking
US20090006402A1 (en) * 2007-06-28 2009-01-01 Holger Bohle Methods and systems for the dynamic selection of a locking strategy

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6147143A (ja) 1984-08-15 1986-03-07 Morinaga Milk Ind Co Ltd フレ−バ−等を強化したインスタント・クリ−ミング・パウダ−
US5625775A (en) 1994-06-13 1997-04-29 International Business Machines Corporation Modem communication interface in a data processing system
US6457081B1 (en) 1998-11-23 2002-09-24 Advanced Micro Devices, Inc. Packet protocol for reading an indeterminate number of data bytes across a computer interconnection bus
US7503033B2 (en) 2000-04-28 2009-03-10 Microsoft Corporation Model for business workflow processes
US6516322B1 (en) 2000-04-28 2003-02-04 Microsoft Corporation XML-based representation of mobile process calculi
US7055142B2 (en) 2002-05-10 2006-05-30 Microsoft Corporation Permutation nuances of the integration of processes and queries as processes at queues
JP2004171209A (ja) * 2002-11-19 2004-06-17 Matsushita Electric Ind Co Ltd 共有メモリデータ転送装置
US20040184470A1 (en) 2003-03-18 2004-09-23 Airspan Networks Inc. System and method for data routing
WO2005029323A1 (ja) 2003-09-22 2005-03-31 Catena Corporation ソフトウェア生成方法
US20050131978A1 (en) 2003-12-10 2005-06-16 Microsoft Corporation Systems and methods that employ process algebra to specify contracts and utilize performance prediction implementations thereof to measure the specifications
US7376547B2 (en) 2004-02-12 2008-05-20 Microsoft Corporation Systems and methods that facilitate quantum computer simulation
US20050251537A1 (en) * 2004-05-05 2005-11-10 Hewlett-Packard Development Company, L.P. File locking
US7707194B2 (en) * 2004-06-08 2010-04-27 Sap Ag Interface to lock a database row through a logical locking interface
US7548901B2 (en) 2004-06-29 2009-06-16 Microsoft Corporation System and method for delayed fetching of designated members of a user defined type
EP1720104A1 (en) * 2005-05-03 2006-11-08 Thomson Multimedia Broadband Belgium Integrated circuit comprising means for prioritizing traffic between modules
US7747591B2 (en) * 2006-03-24 2010-06-29 Oracle International Corp. Web feature service (WFS) locking support based on light-weight locking model in the database

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295899A (ja) * 2003-03-26 2004-10-21 Microsoft Corp テスト通知を利用するシステムおよび方法
US20050204367A1 (en) * 2004-03-12 2005-09-15 Minium Dennis W.Jr. Integration architecture for non-integrated tools
US20060230411A1 (en) * 2005-04-12 2006-10-12 Microsoft Corporation Resource accessing with locking
US20090006402A1 (en) * 2007-06-28 2009-01-01 Holger Bohle Methods and systems for the dynamic selection of a locking strategy

Also Published As

Publication number Publication date
US20090300650A1 (en) 2009-12-03
JP5551687B2 (ja) 2014-07-16
US8407728B2 (en) 2013-03-26
EP2300927A4 (en) 2012-10-31
CN102047240B (zh) 2014-01-29
AU2009255484B2 (en) 2014-05-08
AU2009255484A1 (en) 2009-12-10
CA2722675A1 (en) 2009-12-10
WO2009148759A3 (en) 2010-02-25
BRPI0910566A2 (pt) 2015-09-22
WO2009148759A2 (en) 2009-12-10
KR20110022578A (ko) 2011-03-07
CN102047240A (zh) 2011-05-04
CA2722675C (en) 2016-11-15
MX2010012821A (es) 2010-12-07
BRPI0910566B1 (pt) 2020-01-28
KR101607716B1 (ko) 2016-03-30
RU2511611C2 (ru) 2014-04-10
EP2300927A2 (en) 2011-03-30
RU2010149276A (ru) 2012-06-10

Similar Documents

Publication Publication Date Title
US9501319B2 (en) Method and apparatus for scheduling blocking tasks
JPH0823825B2 (ja) 分散アプリケーシヨン・プログラムの実行方法
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
US20090327610A1 (en) Method and System for Conducting Intensive Multitask and Multiflow Calculation in Real-Time
JPH02127757A (ja) 分散アプリケーション・プログラム実行方法及びシステム資源管理方法
CN102630315A (zh) 用于防止死锁状态的数据处理方法及系统
CN112787999B (zh) 跨链调用方法、装置、系统与计算机可读存储介质
CN111858007A (zh) 一种基于消息中间件的任务调度方法方法和装置
US10037225B2 (en) Method and system for scheduling computing
JP5551687B2 (ja) データフローネットワーク
JP2007102447A (ja) 演算処理装置
US6934953B2 (en) Deferred procedure call in interface description language
US10817334B1 (en) Real-time analysis of data streaming objects for distributed stream processing
JP6413817B2 (ja) 会話管理システム、会話管理方法及び会話管理プログラム
JP2019169134A (ja) 演算量分担機能付きコンピュータ入力システム及びそのコンピュータ入力方法
CN114168233B (zh) 一种数据处理方法、装置、服务器及存储介质
Chen et al. Towards a framework for architecting mechatronics software systems
Chen et al. Research on client/server communication mechanism in autosar system
JPH10133888A (ja) ソフト部品結合制御装置と方法
Gharbi et al. Functional safety of adaptive embedded control systems: new solutions
US20120272045A1 (en) Control method and system of multiprocessor
US8918624B2 (en) Scaling and managing work requests on a massively parallel machine
Ferreira et al. On the Use of Code Mobility Mechanisms in Real-Time Systems
JPH08166931A (ja) 並列計算機の負荷分散方法
Choe et al. CCP: Container for concurrency processing of robotics component

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120321

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130930

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140403

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140522

R150 Certificate of patent or registration of utility model

Ref document number: 5551687

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees