(57)【特許請求の範囲】
【請求項１】
構成モデルであるソース／ターゲットパターンにより供給されるオペレーション命令のセットを用いて、コンピュータシステム上で実行されるプログラムのプロセスを接続するためのコンピュータにより実行される方法であって、該ソース／ターゲットパターンは、ソース側の第１のソースインタフェースと、ターゲット側の第１のターゲットインタフェースとを備えており、該方法は、
前記第１のソースインタフェースと第１のターゲットインタフェースとの間の第１のリンクを確立するために、前記第１のターゲットインタフェースにより、第１のソースインタフェースの第１のリンクオペレーション命令を呼び出すステップと、
前記第１のソースインタフェースから前記第１のターゲットインタフェースに第１のデータを供給するために、確立された前記第１のリンクを使用して、第１のソースインタフェースにより前記第１のターゲットインタフェースの第１のオファーオペレーション命令を呼び出すステップと、
前記第１のオファーオペレーション命令を呼び出した後に、前記第１のターゲットインタフェースにより前記第１のソースインタフェースの第１の予約オペレーション命令を呼び出すステップであって、該第１の予約オペレーション命令に基づいて、第１のターゲットインタフェースが第１のソースインタフェースにより供給された前記第１のデータの受け入れの予約を行う、呼び出すステップと、
を含むことを特徴とする方法。
【請求項２】
前記第１のオファーオペレーション命令に応答して、前記第１のターゲットインタフェースから前記第１のソースインタフェースに、前記第１のデータの受け入れの延期を返すステップと、
第１のデータの受け入れの延期を返した後に、前記第１のターゲットインタフェースにより前記第１のソースインタフェースの前記第１の予約オペレーション命令を呼び出して、前記第１のターゲットインタフェースに対して前記延期された前記第１のデータの受け入れを予約するステップと
をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記第１の予約オペレーション命令を呼び出した後に、前記第１のターゲットインタフェースにより前記第１のソースインタフェースの消費オペレーション命令を呼び出して、前記第１のターゲットインタフェースにより前記第１のデータを受け入れるステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記第１の予約オペレーション命令を呼び出した後に、前記第１のターゲットインタフェースにより前記第１のソースインタフェースの解除オペレーション命令を呼び出して、前記第１のデータの受け入れの予約を解除するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項５】
請求項１に記載の方法であって、
前記ソース／ターゲットパターンは、ソース側の第２のソースインタフェースをさらに備えており、
第２のソースインタフェースと第１のターゲットインタフェースとの間の第２のリンクを確立するために、前記第１のターゲットインタフェースにより、第２のソースインタフェースの第２のリンクオペレーション命令を呼び出すステップと、
前記第２のソースインタフェースから前記第１のターゲットインタフェースに第２のデータを供給するために、確立された前記第２のリンクを使用して、第２のソースインタフェースにより、前記第１のターゲットインタフェースの第２のオファーオペレーション命令を呼び出すステップと、
前記第２のオファーオペレーション命令が呼び出された後に、前記第１のターゲットインタフェースにより、前記第２のソースインタフェースの第２の予約オペレーション命令を呼び出すステップであって、該第２の予約オペレーション命令に基づいて、第２のターゲットインタフェースが第２のソースインタフェースにより供給された前記第２のデータの受け入れの予約を行う、呼び出すステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１の予約オペレーション命令を呼び出した後に、前記第１のターゲットインタフェースにより前記第１のソースインタフェースの第１の消費オペレーション命令を呼び出して、前記第１のターゲットインタフェースにより前記第１のデータを受け入れるステップと、
前記第２の予約オペレーション命令を呼び出した後に、前記第１のターゲットインタフェースにより前記第２のソースインタフェースの第２の消費オペレーション命令を呼び出して、前記第１のターゲットインタフェースにより前記第２のデータを受け入れるステップと
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記第１の予約オペレーション命令を呼び出した後に、前記第１のターゲットインタフェースにより前記第１のソースインタフェースの第１の解除オペレーション命令を呼び出して、前記第１のデータの受け入れの予約を解除するステップと、
前記第２の予約オペレーション命令を呼び出した後に、前記第１のターゲットインタフェースにより前記第２のソースインタフェースの第２の解除オペレーション命令を呼び出して、前記第２のデータの受け入れの予約を解除するステップと
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項８】
コンピュータシステムによって実行されると、該コンピュータシステムに、  
第１のソース／ターゲットパターンを用いて第１のプロセスからデータフローネットワークに第１のデータを供給するステップと、
第２のソース／ターゲットパターンを用いて前記データフローネットワークから第２のプロセスに前記第１のデータを供給するステップと、
を含む方法を実行させるコンピュータ実行可能命令を記憶し、
前記第１のソース／ターゲットパターンはオペレーション命令のセットを用いて実行されるプログラムのプロセスを接続するために使用される構成モデルであり、ソース側の第１のソースインタフェースと、ターゲット側の第１のターゲットインタフェースを備えており、前記第１のデータは、前記第１のソースインタフェースから前記第１のターゲットインタフェースへ供給され、
該第２のソース／ターゲットパターンはオペレーション命令のセットを用いて実行されるプログラムのプロセスを接続するために使用される構成モデルであり、ソース側の第２のソースインタフェースと、ターゲット側の第２のターゲットインタフェースを備えており、前記第１のターゲットインタフェースへ供給された第１のデータは前記第１のターゲットインタフェースから前記第２のソースインタフェースへ伝播し、第２のソースインタフェースから第２のターゲットインタフェースへ供給され、
前記データフローネットワークは、第１のターゲットインタフェースと第２のソースインタフェースとを備え、該第１のターゲットインタフェースと該第２のソースインタフェースとを相互接続して、第１のデータを第１のプロセスから第２のプロセスへ伝播するよう構成されている、
ことを特徴とするコンピュータ読取可能記憶媒体。
【請求項９】
前記方法は、
第３のソース／ターゲットパターンを用いて第３のプロセスから前記データフローネットワークに第２のデータを供給するステップと、
前記第１のデータが前記データフローネットワークに供給されたこと応答して、前記第２のデータが前記データフローネットワークに供給される前に、前記第２のソース／ターゲットパターンを用いて前記データフローネットワークから前記第２のプロセスに前記第１のデータを供給するステップと
をさらに含み、
前記第３のソース／ターゲットパターンはオペレーション命令のセットを用いて実行されるプログラムのプロセスを接続するために使用される構成モデルであり、ソース側の第３のソースインタフェースと、ターゲット側の第３のターゲットインタフェースを備えており、前記第２のデータは、前記第３のソースインタフェースから前記第３のターゲットインタフェースへ供給され、
前記データフローネットワークは、第３のターゲットインタフェースをさらに備えている、
ことを特徴とする請求項８に記載のコンピュータ読取可能記憶媒体。
【請求項１０】
前記方法は、
第３のソース／ターゲットパターンを用いて、第３のプロセスから前記データフローネットワークに第２のデータを供給するステップと、
前記第１のデータおよび前記第２のデータが前記データフローネットワークに供給された後に、前記第２のソース／ターゲットパターンを使用して、前記データフローネットワークから前記第２のプロセスに前記第１のデータおよび前記第２のデータを供給するステップと  をさらに含み、
前記第３のソース／ターゲットパターンはオペレーション命令のセットを用いて実行されるプログラムのプロセスを接続するために使用される構成モデルであり、ソース側の第３のソースインタフェースと、ターゲット側の第３のターゲットインタフェースを備えており、前記第２のデータは前記第３のソースインタフェースから前記第３のターゲットインタフェースへ供給され、
前記データフローネットワークは、第３のターゲットインタフェースをさらに備えており、該第３のターゲットインタフェースと該第２のソースインタフェースとを相互接続して、第２のデータを第３のプロセスから第２のプロセスへ伝播するよう構成されている、
ことを特徴とする請求項８に記載のコンピュータ読取可能記憶媒体。
【請求項１１】
前記第１のデータが前記データフローネットワークから前記第２のプロセスに供給される前に、前記第２のプロセスを一時停止するステップをさらに含むことを特徴とする請求項８に記載のコンピュータ読取可能記憶媒体。
【請求項１２】
第３のソース／ターゲットパターンを使用して、前記データフローネットワークから第３のプロセスに前記第１のデータを供給するステップをさらに含み、
前記第３のソース／ターゲットパターンはオペレーション命令のセットを用いて実行されるプログラムのプロセスを接続するために使用される構成モデルであり、ソース側の第３のソースインタフェースと、ターゲット側の第３のターゲットインタフェースを備えており、前記第１のターゲットインタフェースへ供給された前記第１のデータは、前記第１のターゲットインタフェースから第３のソースインタフェースへ伝播し、前記第３のソースインタフェースから前記第３のターゲットインタフェースへ供給され、
前記データフローネットワークは、前記第３のソースインタフェースをさらに備えており、前記第１のターゲットインタフェースと前記第３のソースインタフェースとを相互接続して、第１のデータを第１のプロセスから第３のプロセスへ伝播するよう構成されている、
ことを特徴とする請求項８に記載のコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データフローネットワークに関する。
【背景技術】
【０００２】
コンピュータシステムによって、プログラムの複数のプロセスを並行に実行することができる。プロセスの並行実行によって、プログラムをより速く、またはより効率的に実行して、コンピュータシステムのスループットを高めることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
制御フローモデルを実装するプロセスでは、制御フローロジックは、プログラム状態の条件および修正のセットを記述し、そしてこの制御フローロジックを、例えばフローチャートによって編成することができる。「プロセス代数（process algebra）」という用語は、複数のプロセスが、共有される問題を解決するのにどのように互いに通信して協働するか、および、あるプロセスの寿命がどのように制御されるのかに関して推論するための方法論を指すのに使用される。プロセス代数は、あるプロセスの内部状態を修正するプリミティブとは大きく異なるが、典型的には、プロセス間の通信が内部フローチャートを推進する対話ポイント（interaction point）がある。プロセス間のこれらの対話ポイントは、一部のプログラムでは複雑な場合がある。対話ポイントの複雑性により、プロセスを並行に実行するためにスケジュールすることが難しくなり、その結果、プログラムの実行があまり最適ではなくなることがある。
【課題を解決するための手段】
【０００４】
この概要は、以下の発明を実施するための形態においてさらに説明される概念の選択を簡単な形で紹介するために提供されるものである。この概要は、特許請求される主題の重要な特徴または本質的な特徴を特定するようには意図されておらず、特許請求される主題の範囲を限定するのに使用されることも意図されていない。
【０００５】
プロセスを一般的で柔軟かつ拡張可能な方法でプロセスネットワークに接続するためのソース／ターゲットパターン（source-target pattern）と呼ばれる構成モデル（compositional model）を提供する。この構成モデルは、共通のプロセス代数構造（process algebra construct）をデータフローネットワークと組み合わせてプロセスネットワークを形成することを可能にする。プロセス代数のオペレーションは、プロセス間で相互利用可能な（interoperable）完全なプロセス代数のオペレーションを提供するデータフローネットワークを形成する構成モデルによって表される。このモデルを、単純なデータフローネットワークだけでなく、より複雑なデータフローネットワークなどの多様なデータフローネットワークに適用することができる。
【０００６】
添付の図面は、諸実施形態のより良い理解を提供するために記載され、本明細書に組み込まれたものであり、本明細書の一部を構成する。図面は、実施形態を例示するものであり、以下の記述とともに実施形態の原理を説明するのに役立つ。以下の詳細な説明を参照することによってより良く理解されると、他の実施形態や実施形態の目的とする利点の多くが容易に理解されるであろう。図面の要素は、必ずしも互いに対して正確な縮尺ではない。同じ参照番号は対応する同様の部分を示す。
【図面の簡単な説明】
【０００７】
【図１Ａ】データフローネットワークで使用するためのソースインタフェースおよびターゲットインタフェースの実施形態を示すブロック図である。
【図１Ｂ】データフローネットワークで使用するためのソースインタフェースおよびターゲットインタフェースの実施形態を示すブロック図である。
【図１Ｃ】データフローネットワークで使用するためのソースインタフェースおよびターゲットインタフェースの実施形態を示すブロック図である。
【図２Ａ】データフローネットワークのノードの実施形態を示すブロック図である。
【図２Ｂ】データフローネットワークのノードの実施形態を示すブロック図である。
【図２Ｃ】データフローネットワークのノードの実施形態を示すブロック図である。
【図３】データフローネットワークがプロセスに接続されたプロセスネットワークの一実施形態を示すブロック図である。
【図４】プロセスがデータフローネットワークに接続されたプロセスネットワークの一実施形態を示すブロック図である。
【図５】送信オペレーションを実装するように構成された発信元ブロックの一実施形態を示すブロック図である。
【図６】受信オペレーションを実装するように構成されたトリガブロックの実施形態を示すブロック図である。
【図７】プロセスネットワークの一実施形態を示すブロック図である。
【図８】選択および結合オペレーションを実装するように構成されたデータフローネットワークの一実施形態を示すブロック図である。
【図９】プロセスネットワークの一実施形態を示すブロック図である。
【図１０】プロセスネットワークの一実施形態を示すブロック図である。
【図１１】プロセススケジューラを有するランタイム環境を実装するように構成されたコンピュータシステムの一実施形態を示すブロック図である。
【発明を実施するための形態】
【０００８】
以下の説明では、本明細書の一部を成す添付図面を参照するが、図面では、本発明が実施され得る特定の実施形態を図によって示す。その際、方向を示す用語、例えば、「上部（top）」、「下部（bottom）」、「前面（front）」、「裏面（back）」、「先（leading）」、「後（trailing）」などは、説明される図面の向きに対して使用される。実施形態の構成要素を多数の様々な向きに置くことも可能であるので、方向を示す用語は、説明のために使用されるものであり、限定のためではない。他の実施形態を利用可能することもでき、また本発明の範囲から逸脱することなく構造的変更または論理的変更も行うことができることを理解されたい。したがって、以下の説明は、限定的な意味で理解されるべきではなく、本発明の範囲は特許請求の範囲によって定義される。
【０００９】
本明細書で説明される様々な例示的な実施形態の特徴を、特に注記がない限り相互に組み合わせることができることも理解されたい。
【００１０】
図１Ａは、リンク１６によって接続されたソースインタフェース１２とターゲットインタフェース１４とを含むソース／ターゲットパターン１０の実施形態を図示するブロック図である。
【００１１】
ソース／ターゲットパターン１０は、コンピュータシステム（例えば、図１１に示されるコンピュータシステム１００）を実行するプログラムの任意の数のプロセス（例えば、図３および図４に示されるプロセス４０）をプロセスネットワークに接続するデータフローネットワーク（例えば、図３および図４に示されるデータフローネットワーク３２）を作成するのに使用される、オペレーションのセットを提供する。データフローネットワークは、送信、受信、選択、結合、およびこれらの組み合わせなどのプロセス代数構造を形成し、データをプロセス間で転送できるようにする。ソース／ターゲットパターン１０は、ソースインタフェース１２とターゲットインタフェース１４との間でデータを転送するためのプロトコルを提供するので、プロセス代数構造をデータフローネットワーク内で実装することが可能になる。
【００１２】
ソース／ターゲットパターン１０により、プロセスが互いに関する情報（knowledge）を全く持っていないか、少ししか持っていない場合に、プロセス同士を接続することができる。一方のプロセスは、他方のプロセスに関する情報を全く持たずに、ソース／ターゲットパターン１０を使用してその他方のプロセスにデータを提供することができる。同様に、一方のプロセスは、他方のプロセスに関する情報を全く持たずに、ソース／ターゲットパターン１０を使用して他方のプロセスからデータを受信することができる。各プロセスは、コンピュータ読取可能記憶媒体（例えば、図１１に示されるメモリシステム１０４）に記憶され、およびコンピュータシステムにより実行可能な、命令のセットを含む。プロセス間で転送されるデータには、ポインタ、アドレス、または他の構造化もしくは符号化された情報を含め、任意のタイプのデータが含まれ得る。
【００１３】
ソースインタフェース１２は、リンクターゲット（LinkTarget）、アンリンクターゲット（UnlinkTarget）オペレーション、予約（Reserve）オペレーション、リリース（Release）オペレーション、および消費（Consume）オペレーションを実装する命令を含み、該命令は、コンピュータ読取可能記憶媒体（例えば、図１１に示されるメモリシステム１０４）に記憶され、およびコンピュータシステムにより実行可能である。ソースインタフェース１２の上記オペレーションはそれぞれ、１つまたは複数のターゲットインタフェース１４によって呼び出される。ターゲットインタフェース１４は、オファー（Offer）オペレーションを実装する命令を含み、該命令は、コンピュータ読取可能記憶媒体（例えば、図１１に示されるメモリシステム１０４）に記憶され、コンピュータシステムによって実行可能である。ターゲットインタフェース１４のオファーオペレーションは、１つまたは複数のソースインタフェース１２によって呼び出される。
【００１４】
ソースインタフェース１２のリンクターゲットオペレーションは、ソースインタフェース１２と、該リンクターゲットオペレーションを呼び出すターゲットインタフェース１４との間のリンク１６を確立する。ソースインタフェース１２のアンリンクターゲットオペレーションは、ソースインタフェース１２と、アンリンクターゲットオペレーションを呼び出すターゲットインタフェース１４との間のリンク１６を切断する。リンクターゲットオペレーションおよびアンリンクターゲットオペレーションはそれぞれ、受信したオペレーションの呼び出し元のターゲットインタフェース１４に成功（success）または失敗（failure）の指示を返して（return）、リンク１６がうまく確立されたか否か、または切断されたか否かを示すことができる。
【００１５】
ソースインタフェース１２とターゲットインタフェース１４との間にリンク１６が確立された後、ソースインタフェース１２は、リンク１６を使用して、ターゲットインタフェース１４のオファーオペレーションを呼び出して、ターゲットインタフェース１４にデータを提供する。オファー呼び出しに応答して、ターゲットインタフェース１４は、受諾（accepted）、拒否（declined）、延期（postponed）のうちの１つを返す（return）。ターゲットインタフェース１４は、該ターゲットインタフェース１４がソースインタフェース１２によって供給されたデータを消費したことを示すのに受諾を返す。ターゲットインタフェース１４は、該ターゲットインタフェース１４がソースインタフェース１２によって供給されたデータに興味がないことを示すのに拒否を返す。ターゲットインタフェース１４は、該ターゲットインタフェース１４がソースインタフェース１２によって供給されたデータをこの時点では時間内に消費する準備ができていないことを示すのに延期を返す。
【００１６】
ソースインタフェース１２により、ターゲットインタフェース１４は、予約オペレーションを使用して以前に供給されたデータを要求することができる。ターゲットインタフェース１４は、予約オペレーションを呼び出して、ソースインタフェース１２によって提供されたがターゲットインタフェース１４によって延期されたデータの予約をする。ソースインタフェース１２は、受信した予約呼び出しを送信したターゲットインタフェース１４に成功または失敗の指示を返して、予約が成功したか否かを示す。
【００１７】
データを予約した後、ターゲットインタフェース１４は、ソースインタフェース１２のリリースオペレーションを呼び出して以前の予約を解放するか、または消費オペレーションを呼び出して予約されたデータを消費する。ソースインタフェース１２が、ターゲットインタフェース１４に成功の指示を提供することによって、データの予約をターゲットインタフェース１４に確認した後、ソースインタフェース１２は、予約を行ったターゲットインタフェース１４によってデータが解放または消費されるまで、予約を行ったターゲットインタフェース１４のためにデータを保持する。
【００１８】
図１Ｂに示されるように、各ターゲットインタフェース１４は、任意の数のソースインタフェース１２（１）〜１２（Ｍ）に、各ソースインタフェース１２（１）〜１２（Ｍ）のリンクターゲットオペレーションを呼び出すことによって接続して、それぞれリンク１６（１）〜１６（Ｍ）を確立することができ、ここで、Ｍは１以上の整数であり、Ｍ番目のソースインタフェース１２およびＭ番目のリンク１６を表す。したがって、任意の数のソースインタフェース１２（１）〜１２（Ｍ）から、各ターゲットインタフェース１４にデータを供給することができる。
【００１９】
図１Ｃに示されるように、各ソースインタフェース１２は、それぞれリンク１６（１）〜１６（Ｎ）を確立する各ターゲットインタフェース１４（１）〜１４（Ｎ）からのリンクターゲットオペレーション呼び出しに応答して、任意の数のターゲットインタフェース１４（１）〜１４（Ｎ）に接続することができ、ここで、Ｎは１以上の整数であり、Ｎ番目のターゲットインタフェース１４およびＮ番目のリンク１６を表す。したがって、各ソースインタフェース１２は、任意の数のターゲットインタフェース１４（１）〜１４（Ｎ）にデータを供給することができる。
【００２０】
図２Ａ〜２Ｃはそれぞれ、データフローネットワークのノード２０の実施形態２０Ａ、２０Ｂ、２０Ｃを示すブロック図である。図２Ａに示されるように、ノード２０Ａは、１つまたは複数のソースインタフェース１２（１）〜１２（Ｐ）を含み、この場合、Ｐは１以上の整数であり、Ｐ番目のソースインタフェース１２を表すが、ターゲットインタフェース１４は存在しない。ソースインタフェース１２のみを有するノード２０Ａは、データの発信元（data originator）を形成する。ノード２０Ｂは、１つまたは複数のターゲットインタフェース１４（１）〜１４（Ｑ）を含み、この場合、Ｑは１以上の整数であり、Ｑ番目のターゲットインタフェース１４を表すが、図２Ｂに示されるようにソースインタフェース１２は存在しない。ターゲットインタフェース１４のみを有するノード２０Ｂは、データシンク（data sink）を形成する。さらに、ノード２０Ｃは、図２Ｃに示されるように、１つまたは複数のソースインタフェース１２（１）〜１２（Ｐ）、ならびに１つまたは複数のターゲットインタフェース１４（１）〜１４（Ｑ）を含むことができる。ノード２０Ａ、２０Ｂ、２０Ｃの各々はさらに、データがノード２０Ａ、２０Ｂ、および２０Ｃを介して伝播されるときに該データを変換するように構成された１つまたは複数の受動処理ユニット（passive processing unit）（図示せず）を含むことができる。
【００２１】
データは、ソース／ターゲットパターン１０を使用して、あるノード２０から、１つまたは複数の他のノード２０に渡されることで、データフローネットワーク内を通過する。データフローネットワーク内の２つのノード２０の各々の接続は、ソースインタフェース１２を実装するノード２０（例えば、ノード２０Ａまたはノード２０Ｃ）とターゲットインタフェース１４を実装するノード（例えば、ノード２０Ｂまたはノード２０Ｃ）とを対にすることによって表わされる。
【００２２】
任意の数のデータフローネットワークのコンポーネントを、ソース／ターゲットパターン１０を使用して定義することができ、これらのコンポーネントを、多くの任意のデータフローネットワークに結合することができる。データフローネットワークの例には、無限（unbounded）バッファ、有限（bounded）バッファ、単一割り当てブロック、プロデューサ／コンシューマバッファ、データシンク（方法呼び出し）、データ変換、タイマ、および入出力プロセッサが含まれる。ソース／ターゲットパターン１０を使用して、より複雑なネットワークからデータフローネットワークを構成することもできる。例えば、リーダ／ライタロック実装またはモニタ実装を、ソース／ターゲットパターン１０を使用してデータフローネットワークにより表すことができる。
【００２３】
図３に示されるように、任意の数のプロセスが、データフローネットワークにデータを提供することができ、そして任意の数のプロセスが、データフローネットワークからデータを受信することができる。図３は、プロセス４０（１）〜４０（Ｒ）および４０（Ｒ＋１）〜４０（Ｓ）に接続されたデータフローネットワーク３２を有するプロセスネットワーク３０の一実施形態を示すブロック図であり、この場合、Ｒは１以上の整数であり、Ｓは２以上の整数であり、ＲはＳ未満であり、Ｒ番目およびＳ番目のプロセス４０を表している。
【００２４】
データフローネットワーク３２は、データをプロセス４０（１）〜４０（Ｒ）からプロセス４０（Ｒ＋１）〜４０（Ｓ）に伝播するように構成された受動データ構造（passive data flow construct）を形成する。データフローネットワーク３２は、１つまたは複数のターゲットインタフェース１４のセット３４と、１つまたは複数のソースインタフェース１２のセット３６と、ノード２０および受動処理ブロックを含み、ターゲットインタフェース１４のセット３４をソースインタフェース１２のセット３６に相互接続するネットワークコンポーネント３８のセットとを含む。ネットワークコンポーネント３８は、任意の適切なタイプ、数、および／または組み合わせのノード２０と、任意の適切な方法でターゲットインタフェース１４のセット３４をソースインタフェース１２のセット３６と接続する受動処理ブロックとを含むことができる。
【００２５】
プロセス４０（１）〜４０（Ｒ）は、１つまたは複数のソースインタフェース１２のそれぞれのセット４２（１）〜４２（Ｒ）を含み、この場合、各セット４２は他のセット４２と同じ数のソースインタフェース１２または異なる数のソースインタフェース１２を含むことができる。ターゲットインタフェース１４のセット３４は、ターゲットインタフェース１４のセット３４とソースインタフェース１２のセット４２（１）〜４２（Ｒ）との間のリンク１６のセット４４を確立する。図１Ｂ、１Ｃに図示されるように、セット４４内の各ターゲットインタフェース１４は、セット４２（１）〜４２（Ｒ）内の任意の数のソースインタフェース１２に接続することができ、セット４４内の任意の数のターゲットインタフェース１４は、セット４２（１）〜４２（Ｒ）内の各ソースインタフェース１２に接続することができる。セット４２（１）〜４２（Ｒ）内の各ソースインタフェース１２は、図１Ａに関して上述したように、セット４４内の１つまたは複数のターゲットインタフェース１４にデータを供給することにより、データをプロセス４０（１）〜４０（Ｒ）からデータフローネットワーク３２に伝播させる。プロセス４０（１）〜４０（Ｒ）の１つまたは複数は、ソースインタフェース１２の１つまたは複数の追加のセット（図示せず）を含むこと、ならびに／あるいは、１つまたは複数の他のデータフローネットワーク３２（図示せず）に接続するターゲットインタフェース１４の１つまたは複数の追加のセット（図示せず）を含むこともできる。
【００２６】
プロセス４０（Ｒ＋１）〜４０（Ｓ）は、１つまたは複数のターゲットインタフェース１４のセット４６（Ｒ＋１）〜４６（Ｓ）をそれぞれ含み、この場合、各セット４６は、他のセット４６と同じ数のターゲットインタフェース１４または異なる数のターゲットインタフェース１４を含むことができる。ターゲットインタフェース１４のセット４６（Ｒ＋１）〜４６（Ｓ）は、ターゲットインタフェース１４のセット４６（Ｒ＋１）〜４６（Ｓ）とソースインタフェース１２のセット３６との間のリンク１６のセット４８を確立する。図１Ｂ、１Ｃに図示されるように、セット４６（Ｒ＋１）〜４６（Ｓ）内の各ターゲットインタフェース１４は、セット３６内の任意の数のソースインタフェース１２に接続することができ、セット４６（Ｒ＋１）〜４６（Ｓ）内の任意の数のターゲットインタフェース１４は、セット３６内の各ソースインタフェース１２に接続することができる。セット３６内の各ソースインタフェース１２は、図１Ａに関して上述したように、セット４６（Ｒ＋１）〜４６（Ｓ）内の１つまたは複数のターゲットインタフェース１４にデータを供給することにより、データをデータフローネットワーク３２から１つまたは複数のプロセス４０（Ｒ＋１）〜４０（Ｓ）に伝播させる。１つまたは複数のプロセス４０（Ｒ＋１）〜４０（Ｓ）は、ターゲットインタフェース１４の１つまたは複数の追加のセット（図示せず）を含むこと、ならびに／あるいは１つまたは複数の他のデータフローネットワーク３２（図示せず）に接続するソースインタフェース１２の１つまたは複数のセット（図示せず）を含むこともできる。
【００２７】
プロセス４０（１）〜４０（Ｒ）は、プロセス４０（Ｒ＋１）〜４０（Ｓ）に関する情報を全く必要とせずに、データフローネットワーク３２を使用してプロセス４０（Ｒ＋１）〜４０（Ｓ）にデータを提供することができる。同様に、プロセス４０（Ｒ＋１）〜４０（Ｓ）は、プロセス４０（１）〜４０（Ｒ）に関する情報を全く必要とせずに、データフローネットワーク３２を使用してプロセス４０（１）〜４０（Ｒ）からデータを受信することができる。
【００２８】
図４に示されるように、プロセスは、任意の数のデータフローネットワークにデータを提供し、任意の数のデータフローネットワークからデータを受信することができる。図４は、プロセス４０がデータフローネットワーク３２（１）〜３２（Ｔ）および３２（Ｔ＋１）〜３２（Ｖ）に接続されたプロセスネットワーク５０の一実施形態を図示しているブロック図であり、この場合、Ｔは１以上の整数であり、Ｖは２以上の整数であり、ＴはＶ未満であり、Ｔ番目およびＶ番目のデータフローネットワーク３２を表す。
【００２９】
プロセス４０は、データフローネットワーク３２（１）〜３２（Ｔ）からデータを受信してデータフローネットワーク３２（Ｔ＋１）〜３２（Ｖ）にデータを提供するように構成されたプログラムの命令のセットを含む。プロセス４０は、１つまたは複数のターゲットインタフェース１４のセット５４と、１つまたは複数のソースインタフェース１２のセット５６と、プロセスコンポーネント５８のセットとを含み、ターゲットインタフェース１４のセット５４をソースインタフェース１２のセット５６と相互接続する。プロセスコンポーネント５８は、任意の適切なタイプの命令、任意の適切な数の命令、および／または任意の適切な組み合わせの命令、および／または任意の適切な方法でターゲットインタフェース１４のセット５４をソースインタフェース１２のセット５６に接続するデータ構造を含むことができる。
【００３０】
データフローネットワーク３２（１）〜３２（Ｔ）は、それぞれ１つまたは複数のソースインタフェース１２のセット６２（１）〜６２（Ｔ）を含み、この場合、各セット６２は、他のセット６２と同じ数のソースインタフェース１２または異なる数のソースインタフェース１２を含むことができる。ターゲットインタフェース１４のセット５４は、ターゲットインタフェース１４のセット５４とソースインタフェース１２のセット６２（１）〜６２（Ｔ）との間のリンク１６のセット６４を確立する。図１Ｂ、１Ｃに図示されるように、セット５４内の各ターゲットインタフェース１４は、セット６２（１）〜６２（Ｔ）内の任意の数のソースインタフェース１２に接続することができ、セット５４内の任意の数のターゲットインタフェース１４は、セット６２（１）〜６２（Ｔ）内の各ソースインタフェース１２に接続することができる。セット６２（１）〜６２（Ｔ）内の各ソースインタフェース１２は、図１Ａに関して上述したように、セット５４内の１つまたは複数のターゲットインタフェース１４にデータを供給することにより、データをデータフローネットワーク３２（１）〜３２（Ｔ）からプロセス４０に伝播させる。データフローネットワーク３２（１）〜３２（Ｔ）はそれぞれ、１つまたは複数の他のプロセス４０（図示せず）に接続するターゲットインタフェース１４の１つまたは複数のセット（図示せず）を含む。また、データフローネットワーク３２（１）〜３２（Ｔ）は、ソースインタフェース１２の１つまたは複数の追加セット（図示せず）を含むことができ、ならびに／あるいは１つまたは複数の他のプロセス４０（図示せず）に接続するターゲットインタフェース１４の１つまたは複数のセット（図示せず）を含むこともできる。
【００３１】
データフローネットワーク３２（Ｔ＋１）〜３２（Ｖ）はそれぞれ、１つまたは複数のターゲットインタフェース１４のセット６６（Ｔ＋１）〜６６（Ｖ）を含み、この場合、各セット６６は、他のセット６６と同じ数のターゲットインタフェース１４または異なる数のターゲットインタフェース１４を含むことができる。ターゲットインタフェース１４のセット６６（Ｔ＋１）〜６６（Ｖ）は、ターゲットインタフェース１４のセット６６（Ｔ＋１）〜６６（Ｖ）とソースインタフェース１２のセット５６との間のリンク１６のセット６８を確立する。図１Ｂ、１Ｃに示されるように、セット６６（Ｔ＋１）〜６６（Ｖ）内の各ターゲットインタフェース１４は、セット５６内の任意の数のソースインタフェース１２に接続することができ、セット６６（Ｔ＋１）〜６６（Ｖ）内の任意の数のターゲットインタフェース１４は、セット５６内の各ソースインタフェース１２に接続することができる。プロセス４０は、図１Ａに関して上述したように、セット５６内の各ソースインタフェース１２に、セット６６（Ｔ＋１）〜６６（Ｖ）内の１つまたは複数のターゲットインタフェース１４に対してデータを供給させることにより、データを１つまたは複数のデータフローネットワーク３２（Ｔ＋１）〜３２（Ｖ）に伝播させる。データフローネットワーク３２（Ｔ＋１）〜３２（Ｖ）は、ソースインタフェース１２の１つまたは複数のセット（図示せず）を含むこと、ならびに／あるいは１つまたは複数の他のプロセス４０（図示せず）に接続するターゲットインタフェース１４の１つまたは複数のセット（図示せず）を含むこともできる。
【００３２】
図５は、送信オペレーション（send operation）を実装するように構成された発信元（originator）ブロック７０の一実施形態を図示しているブロック図である発信元ブロック７０は、ソースインタフェース１２を含むが、ターゲットインタフェース１４を全く含まない。発信元ブロック７０をプロセス４０内に含めることにより、プロセス４０はデータをデータフローネットワーク３２に伝播することができる。したがって、発信元ブロック７０は、プロセス４０からデータを受信し、１つまたは複数の接続されたデータフローネットワーク３２にデータを提供することによって、送信オペレーションを実装する。
【００３３】
発信元ブロック７０は、コンピュータシステムにおける実行のためにプロセス４０をスケジューリングする、基礎となるプロセススケジューラと対話することもあり、または対話しないこともある。したがって、発信元ブロック７０はスケジューラに対するインタフェースを含まないこともある。
【００３４】
図６は、受信オペレーション（receive operation）を実装するように構成されたトリガ（trigger）ブロック８０の一実施形態を図示しているブロック図である。トリガブロック８０は、ターゲットインタフェース１４を含むが、ソースインタフェース１２を全く含まない。トリガブロック８０をプロセス４０内に含めることにより、プロセス４０は、データフローネットワーク３２からデータを受信することができる。トリガブロック８０は、データフローネットワーク３２の１つの終端点（termination point）として、またはデータフローネットワーク３２の任意の数の終端点のうちのいずれか１つの終端点としての機能を果たす。したがって、トリガブロック８０は、データフローネットワーク３２からデータを受信して該データをプロセス４０に提供することによって受信オペレーションを実装する。
【００３５】
トリガブロック８０は、スケジューラインタフェース８２も含む。スケジューラインタフェース８２は、コンピュータシステムにおける実行のためにプロセス４０をスケジューリングする、基礎となるプロセススケジューラと対話する。特に、スケジューラインタフェース８２はスケジューラとともに、データがすぐに利用可能でないときにトリガブロック８０に作用する受信オペレーションが開始されたことに応答して、プロセス４０を一時停止（例えば、ブロック）させるように動作する。さらに、スケジューラインタフェース８２はスケジューラとともに、トリガブロック８０に作用する受信オペレーションのデータがトリガブロック８０に到着したことに応答して、プロセス４０を再開（例えば、ブロック解除）させるように動作する。
【００３６】
図７は、送信オペレーションおよび受信オペレーションを含むプロセスネットワーク９０の一実施形態を図示しているブロック図である。図７では、プロセス４０（１）が。プロセス４０（２）からデータを受信し、プロセス４０（３）にデータを提供する。プロセス４０(２）からデータを受信するために、プロセス４０（１）のトリガブロック８０（１）は、データをプロセス４０（２）の発信元ブロック７０（１）から供給され、トリガブロック８０（１）は、受信オペレーションを実装するデータフローネットワーク３２Ａによって示されるようにデータを受け入れる。プロセス４０（１）は、データに対していくつかの計算を実行し、その結果得られたデータをプロセス４０（３）に送信する。データをプロセス４０（３）に送信するために、プロセス４０（１）の発信元ブロック７０（２）は、データをプロセス４０（３）のトリガブロック８０（２）に供給し、トリガブロック８０（２）は、送信オペレーションを実装するデータフローネットワーク３２Ｂによって示されるように、このデータを受け入れる。
【００３７】
図８は、選択（choice）および結合（join）オペレーションを実装するように構成されたデータフローネットワーク３２の一実施形態を図示しているブロック図である。データフローネットワーク３２は、ノード２０（１）〜２０（Ｗ＋１）を含み、この場合、Ｗは２以上の整数であり、Ｗ番目のノード２０、Ｗ番目のプロセス４０、Ｗ番目の発信元ブロック７０を表す。各ノード２０（１）〜２０（Ｗ＋１）は、ソースインタフェース１２とターゲットインタフェース１４とを含む。ノード２０（１）〜２０（Ｗ）内のターゲットインタフェース１４は、それぞれプロセス４０（１）〜４０（Ｗ）内の各々の発信元ブロック７０（１）〜７０（Ｗ）からデータを受信する。ノード２０（１）〜２０（Ｗ）内のソースインタフェース１２はそれぞれ、ノード２０（Ｗ＋１）内のターゲットインタフェース１４にデータを提供する。ノード２０（Ｗ＋１）内のソースインタフェース１２は、プロセス４０（Ｗ＋１）内のトリガブロック７０にデータを提供する。
【００３８】
選択オペレーションを実装するために、ノード２０（Ｗ＋１）は、ノード２０（Ｗ＋１）にデータを供給するノード２０（１）〜２０（Ｗ）のうちの最初のノードのみからのデータを受け入れて、残りのノード２０（１）〜２０（Ｗ）の全てからのデータの供給は拒否する。ノード２０（Ｗ＋１）は、このデータをプロセス４０（Ｗ＋１）内のトリガブロック８０に提供する。
【００３９】
一実施形態では、各ノード２０（１）〜２０（Ｗ）は、その各々のソースインタフェース１２を使用して、それぞれ発信元ブロック７０（１）〜７０（Ｗ）からのデータの供給に応答して該ノードのアイデンティティをデータとしてノード２０（Ｗ＋１）に供給する。ノード２０（Ｗ＋１）は、そのターゲットインタフェース１４を使用して、ノード２０（１）〜２０（Ｗ）のセットから供給された最初のアイデンティティを受け入れ、ノード２０（１）〜２０（Ｗ）のセットから供給された後続のアイデンティティは全て拒否する。ソースインタフェース１２を使用してノード２０（Ｗ＋１）からの受取応答を受信するノード２０（１）〜２０（Ｗ）は、それぞれの発信元ブロック７０（１）〜７０（Ｗ）からそのターゲットインタフェース１４を使用して供給されたデータを受け入れる。その各々のソースインタフェース１２を使用してノード２０（Ｗ＋１）からの拒否応答を受信するノード２０（１）〜２０（Ｗ）は、その各々のターゲットインタフェース１４を使用してそれぞれの発信元ブロック７０（１）〜７０（Ｗ）から供給されたデータを拒否する。ノード２０（Ｗ＋１）は、そのソースインタフェース１２を使用して、データとして受け入れたアイデンティティをプロセス４０（Ｗ＋１）内のトリガブロック７０に供給する。トリガブロック７０は、ノード２０（Ｗ＋１）からのアイデンティティを受け入れることで応答する。プロセス４０（Ｗ＋１）は次に、ノード２０（Ｗ＋１）から受信したアイデンティティを使用して、選択オペレーションのデータをノード２０（１）〜２０（Ｗ）から取り出す。
【００４０】
別の実施形態では、ノード２０（１）〜２０（Ｗ）を省略して、ノード２０（Ｗ＋１）が、発信元ブロック７０（１）〜７０（Ｗ）から直接データを受信することができる。この実施形態では、発信元ブロック７０（１）〜７０（Ｗ）は、データをノード２０（Ｗ＋１）に供給する。ノード２０（Ｗ＋１）は、そのターゲットインタフェース１４を使用して、発信元ブロック７０（１）〜７０（Ｗ）のセットから供給された最初のデータを受け入れ、発信元ブロック７０（１）〜７０（Ｗ）のセットから供給された全ての後続のデータは拒否する。ノード２０（Ｗ＋１）は、そのソースインタフェース１２を使用して、受け入れたデータをプロセス４０（Ｗ＋１）内のトリガブロック７０に供給する。トリガブロック７０は、ノード２０（Ｗ＋１）からのデータを受け入れることで応答し、選択オペレーションを完了させる。
【００４１】
他の実施形態では、選択オペレーションは、発信元ブロック７０および／またはトリガブロック８０の他の組み合わせとインタフェースをとるソース／ターゲットパターン１０の他の組み合わせを使用して、データフローネットワーク３２Ｃ内で実装される場合がある。
【００４２】
図９は、選択オペレーションを含むプロセスネットワーク９２の一実施形態を図示しているブロック図である。図９では、選択オペレーションは、データフローネットワーク３２Ｃを含めることによって、プロセス４０（４）とプロセス４０（５）および４０（６）との間で実装される。データフローネットワーク３２Ｃを使用して、プロセス４０（４）は、データをデータフローネットワーク３２Ｃに提供するプロセス４０（５）および４０（６）のうちの最初のプロセスから、データを受け入れる。プロセス４０（４）は、データに対していくつかの計算を実行し、その結果得られたデータを、送信オペレーションを実装するデータフローネットワーク３２Ｄを使用してプロセス４０（７）に送信する。
【００４３】
図８の実施形態を使用して、結合オペレーションを実装することもできる。結合オペレーションを実装するために、ノード２０（Ｗ＋１）は、ノード２０（１）〜２０（Ｗ）の全てからデータを受け入れた後に、ノード２０（１）〜２０（Ｗ）の全てからのデータをプロセス４０（Ｗ＋１）内のトリガブロック８０に供給する。
【００４４】
一実施形態では、各ノード２０（１）〜２０（Ｗ）は、それぞれ発信元ブロック７０（１）〜７０（Ｗ）からのデータの供給に応答して、ソースインタフェース１２を使用して、ノード２０（Ｗ＋１）に供給されるデータの一部としてそのアイデンティティを供給するように構成される。ノード２０（Ｗ＋１）は、ターゲットインタフェース１４を使用して受信したオファーを追跡して、全てのノード２０（１）〜２０（Ｗ）がそれらのアイデンティティを供給したときを判断する。ノード２０（Ｗ＋１）は、そのターゲットインタフェース１４を使用して、延期されていた最後のオファーを除いて全てのオファーに応答する。全てのノード２０（１）〜２０（Ｗ）からのオファーの受信に応答して、ノード２０（Ｗ＋１）は、そのターゲットインタフェース１４を使用して、最後のオファーを提供したノード２０（１）〜２０（Ｗ）を除く全てのノード２０（１）〜２０（Ｗ）に対して、予約オペレーションを呼び出す。ノード２０（Ｗ＋１）は、該ノード２０（Ｗ＋１）が、全ての予約が成功したか否か、またはいずれかの予約が失敗したか否かを決定するまで、受信した最後のオファーを提供したノード２０（１）〜２０（Ｗ）に対する応答を待つ。
【００４５】
予約呼び出しを受信する全てのノード２０（１）〜２０（Ｗ）は、それらの各々のターゲットインタフェース１４を使用して、それぞれの発信元ブロック７０（１）〜７０（Ｗ）に対する予約オペレーションを呼び出す。発信元ブロック７０（１）〜７０（Ｗ）は、それぞれの呼び出しを行うノード２０（１）〜２０（Ｗ）に対して成功または失敗の指示を提供することによって、予約呼び出しに応答する。発信元ブロック７０が、供給されたデータを保持できなくなった場合、または供給されたデータが別のノード２０（図示せず）によって予約されていた場合、発信元ブロック７０は、失敗の指示により予約呼び出しに応答する。そうでなければ、発信元ブロック７０は成功の指示により予約呼び出しに応答する。
【００４６】
ノード２０（１）〜２０（Ｗ）は、それぞれの発信元ブロック７０（１）〜７０（Ｗ）からの失敗指示の受信に応答して、予約の失敗を検出する。ノード２０（１）〜２０（Ｗ）は、発信元ブロック７０（１）〜７０（Ｗ）が各々のノード２０（１）〜２０（Ｗ）から切断されたことに応答して、予約の失敗を検出することもある。失敗した予約を検出した各ノード２０（１）〜２０（Ｗ）は、失敗の指示を用いてノード２０（Ｗ＋１）の予約呼び出しに応答する。それぞれの発信元ブロック７０（１）〜７０（Ｗ）から成功の指示を受信した各ノード２０（１）〜２０（Ｗ）は、成功の指示を用いてノード２０（Ｗ＋１）の予約呼び出しに応答する。
【００４７】
ノード２０（Ｗ＋１）は、ノード２０（１）〜２０（Ｗ）から失敗の指示を受信したことに応答して、またはノード２０（１）〜２０（Ｗ）のいずれかが切断されたことに応答して、予約の失敗を検出する。ノード２０（Ｗ＋１）がいずれかの予約の失敗を検出した場合、ノード２０（Ｗ＋１）は、そのターゲットインタフェース１４を使用して、成功の指示で予約呼び出しに応答した全てのノード２０（１）〜２０（Ｗ）に対して解放（release）オペレーションを呼び出す。また、ノード２０（Ｗ＋１）は、ノード２０（Ｗ＋１）が受信した最後のオファーを提供したノード２０（１）〜２０（Ｗ）に対して延期（postponed）を返す。解放呼び出しを受信したことに応答して、ノード２０（１）〜２０（Ｗ）は、成功した予約を解放し、次に、対応する発信元ブロック７０（１）〜７０（Ｗ）に対して解放オペレーションを呼び出す。発信元ブロック７０（１）〜７０（Ｗ）は、ノード２０（１）〜２０（Ｗ）から解放呼び出しを受信したことに応答して、成功した予約を解放する。
【００４８】
ノード２０（Ｗ＋１）が全ての予約が成功したことを検出した場合、ノード２０（Ｗ＋１）は、そのターゲットインタフェース１４を使用して、ノード２０（Ｗ＋１）が受信した最後のオファーを提供したノード２０（１）〜２０（Ｗ）以外の全てのノード２０（１）〜２０（Ｗ）に対して消費（consume）オペレーションを呼び出す。ノード２０（Ｗ＋１）が、最後のオファーを行ったノード２０（１）〜２０（Ｗ）に対して受諾（accepted）を返し、次にそのノード２０（１）〜２０（Ｗ）が、対応する発信元ブロック７０（１）〜７０（Ｗ）に対して受諾を返す。消費呼び出しを受信する全てのノード２０（１）〜２０（Ｗ）は、次に、それらの各々のターゲットインタフェース１４を使用して、それぞれの発信元ブロック７０（１）〜７０（Ｗ）に対して消費オペレーションを呼び出す。ノード２０（Ｗ＋１）は、そのソースインタフェース１２を使用して、組み合わされたデータをプロセス４０（Ｗ＋１）内のトリガブロック７０に供給する。トリガブロック７０は、ノード２０（Ｗ＋１）からのデータを受け入れることによって応答して、結合オペレーションを完了させる。
【００４９】
別の実施形態では、ノード２０（Ｗ＋１）は、全てのデータがノード２０（１）〜２０（Ｗ）で予約されたか受け入れられたとき、プロセス４０（Ｗ＋１）内のトリガブロック７０にＢｏｏｌｅａｎ値で信号を送る。トリガブロック７０は、データをノード２０（１）〜２０（Ｗ）から取り出す。この実施形態では、ノード２０（Ｗ＋１）は、データを提供するノード２０（１）〜２０（Ｗ）の最後のノードに受諾を返す。
【００５０】
他の実施形態では、結合オペレーションは、発信元ブロック７０および／またはトリガブロック８０の他の組み合わせとインタフェースをとるソース／ターゲットパターン１０の他の組み合わせを使用して、データフローネットワーク３２Ｃ内で実装される場合がある。
【００５１】
図１０は、結合オペレーションを含むプロセスネットワーク９４の一実施形態を図示しているブロック図である。図１０では、結合オペレーションは、データフローネットワーク３２Ｃを含めることによって、プロセス４０（８）とプロセス４０（９）および４０（１０）との間で実装される。データフローネットワーク３２Ｃを使用して、プロセス４０（４）は、プロセス４０（９）および４０（１０）の各々からデータフローネットワーク３２Ｃに提供されたデータを受け入れる。プロセス４０（８）は、データに対していくつかの計算を実行し、その結果得られたデータを、送信オペレーションを実装するデータフローネットワーク３２Ｅを使用してプロセス４０（１１）に送信する。
【００５２】
図５〜１０に関して上述した送信、受信、選択、および結合のオペレーションを、他の実施形態では、より複雑な構成に組み合わせることもできる。
【００５３】
図１１は、プロセススケジューラを有するランタイム環境を実装するように構成されたコンピュータシステム１００の一実施形態を図示するブロック図である。
【００５４】
コンピュータシステム１００は、１つまたは複数のプロセッサパッケージ１０２と、メモリシステム１０４と、０またはそれ以上の入出力装置１０６と、０またはそれ以上のディスプレイ装置１０８と、０またはそれ以上の周辺機器１１０と、０またはそれ以上のネットワーク装置１１２とを含む。プロセッサパッケージ１０２、メモリシステム１０４、入出力装置１０６、ディスプレイ装置１０８、周辺機器１１０、およびネットワーク装置１１２は、任意の適切なタイプ、数、構成のコントローラ、バス、インタフェース、および／または他の有線もしくは無線接続部を含む相互接続部１１４のセットを使用して通信する。
【００５５】
コンピュータシステム１００は、汎用目的または特殊目的で構成された任意の適切な処理装置を表す。コンピュータシステム１００の例には、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ＰＤＡ（携帯情報端末）、携帯電話、およびオーディオ／ビデオ装置が含まれる。コンピュータシステム１００のコンポーネント（すなわち、プロセッサパッケージ１０２、メモリシステム１０４、入出力装置１０６、ディスプレイ装置１０８、周辺機器１１０、ネットワーク装置１１２、相互接続部１１４）は、共通の筐体（図示せず）内に含めることもでき、あるいは任意の適切な数の別個の筐体（図示せず）内に含めることもできる。
【００５６】
プロセッサパッケージ１０２は、ハードウェアスレッド１１６（１）〜１１６（Ｘ）を含み、この場合、Ｘは１以上の整数であり、Ｘ番目のハードウェアスレッド１１６を表す。プロセッサパッケージ１０２内の各ハードウェアスレッド１１６は、メモリシステム１０４内に記憶されている命令にアクセスして実行するように構成される。命令は、基本入出力システム（ＢＩＯＳ）もしくはファームウェア（図示せず）、ＯＳ１２０、リソース管理レイヤ１２１、ランタイムプラットフォーム１２２、およびアプリケーション１２４を含むことができる。各ハードウェアスレッド１１６は、入出力装置１０６、ディスプレイ装置１０８、周辺機器１１０、および／またはネットワーク装置１１２から受信した情報とともに、またはその情報に応答して命令を実行することができる。
【００５７】
コンピュータシステム１００は、ＯＳ１２０をブートして実行する。ＯＳ１２０は、コンピュータシステム１００のコンポーネントを管理して、アプリケーションがコンポーネントにアクセスし使用することを可能にする機能のセットを提供するために、ハードウェアスレッド１１６によって実行可能な命令を含む。一実施形態では、ＯＳ１２０はＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムである。他の実施形態では、ＯＳ１２０は、コンピュータシステム１００とともに使用するのに適した別のオペレーティングシステムである。
【００５８】
リソース管理レイヤ１２１は、ハードウェアスレッド１１６を含めコンピュータシステム１００のリソースを割り当てるために、ＯＳ１２０とともに実行可能な命令を含む。リソース管理レイヤ１２１は、コンピュータシステム１００内に、１つまたは複数のアプリケーション１２４に利用可能な機能のライブラリとして、またはＯＳ１２０の統合部分として含まれる。
【００５９】
ランタイムプラットフォーム１２２は、ランタイム環境を生成し、ランタイム機能をアプリケーション１２４に提供するために、ＯＳ１２０およびリソース管理レイヤ１２１とともに実行可能な命令を含む。これらのランタイム機能は、スケジューラ機能を含む。スケジューラ機能は、呼び出されると、１つまたは複数のハードウェアスレッド１１６（１）〜１１６（Ｘ）による実行のために、アプリケーション１２４などのプログラムのプロセスをスケジュールするように動作するスケジューラを作成する。ランタイム機能は、アプリケーション１２４の一部として、１つまたは複数のアプリケーション１２４に利用可能な機能のライブラリとして、あるいはＯＳ１２０および／またはリソース管理レイヤ１２１の統合部分として、コンピュータシステム１００に含まれる。
【００６０】
各アプリケーション１２４は、所望のオペレーションがコンピュータシステム１００によって実行されるように、ＯＳ１２０、リソース管理レイヤ１２１、および／またはランタイムプラットフォーム１２２とともに実行可能な命令を含む。各アプリケーション１２４は、ランタイムプラットフォーム１２２によって提供されたスケジューラにより実行することができる１つまたは複数のプログラムを表す。
【００６１】
メモリシステム１０４は、命令およびデータを記憶するように構成された任意の適切なタイプ、数、構成の揮発性または不揮発性の記憶装置を含む。メモリシステム１０４の記憶装置は、ＯＳ１２０、リソース管理レイヤ１２１、ランタイムプラットフォーム１２２、アプリケーション１２４を含むコンピュータ実行可能命令を記憶するコンピュータ読取可能記憶媒体を表す。命令は、コンピュータシステムによって実行可能であり、本明細書に説明されたＯＳ１２０、リソース管理レイヤ１２１、ランタイムプラットフォーム１２２、アプリケーション１２４の機能および方法を実行する。メモリシステム１０４内の記憶装置の例には、ハードディスクドライブ、ＲＡＭ（random access memory）、ＲＯＭ（read only memory）、フラッシュメモリドライブおよびカード、ならびに磁気および光ディスクが含まれる。
【００６２】
メモリシステム１０４は、プロセッサパッケージ１０２、入出力装置１０６、ディスプレイ装置１０８、周辺機器１１０、ネットワーク装置１１２から受信した命令およびデータを記憶する。メモリシステム１０４は、記憶された命令およびデータをプロセッサパッケージ１０２、入出力装置１０６、ディスプレイ装置１０８、周辺機器１１０、およびネットワーク装置１１２に提供する。
【００６３】
入出力装置１０６は、ユーザからの命令またはデータをコンピュータシステム１００に入力し、コンピュータシステム１００からの命令またはデータをユーザに出力するように構成された任意の適切なタイプ、数、構成の入出力装置を含む。入出力装置１０６の例には、キーボード、マウス、タッチパッド、タッチスクリーン、ボタン、ダイアル、ノブ、およびスイッチが含まれる。
【００６４】
ディスプレイ装置１０８は、テキストおよび／または図形情報をコンピュータシステム１００のユーザに出力するように構成された任意の適切なタイプ、数、構成のディスプレイ装置を含む。ディスプレイ装置１０８の例には、モニタ、ディスプレイスクリーン、およびプロジェクタが含まれる。
【００６５】
周辺機器１１０は、コンピュータシステム１００内の１つまたは複数の他のコンポーネントとともに動作して一般的または特定の処理機能を実行するように構成された任意の適切なタイプ、数、構成の周辺機器を含む。
【００６６】
ネットワーク装置１１２は、コンピュータシステム１００が１つまたは複数のネットワーク（図示せず）を介して通信することを可能にするように構成された任意の適切なタイプ、数、構成のネットワーク装置を含む。ネットワーク装置１１２は、任意の適切なネットワークプロトコルおよび／または構成に従って動作して、コンピュータシステム１００が情報をネットワークに伝送し、コンピュータシステム１００が情報をネットワークから受信することを可能にする。
【００６７】
図１１の実施形態では、ＯＳ１２０、リソース管理レイヤ１２１、ランタイムプラットフォーム１２２、アプリケーション１２４の１つまたは複数は、図１Ａ〜１０に関して上述した任意の適切な数のソース／ターゲットパターン１０を含むデータフローネットワーク３２を使用して接続されるプロセス４０を有するプロセスネットワークを含むことができる。
【００６８】
上述の実施形態は、一般的、柔軟、拡張可能な方法でプロセスをプロセスネットワークに接続するためのソース／ターゲットパターンと呼ばれる構成モデルを提供する。このモデルにより、共通のプロセス代数構造をデータフローネットワークと組み合わせてプロセスネットワークを形成することができる。送信、受信、選択、結合などの典型的なプロセス代数オペレーションは、プロセス間で相互利用可能な完全なプロセス代数オペレーションを提供するデータフローネットワークを形成する構成モデルによって表すことができる。この構成モデルは、単純なデータフローネットワークだけでなく、より複雑なデータフローネットワークなどの幅広いデータフローネットワークに適用することができる。
【００６９】
さらに、この構成モデルは、疎結合プロセスネットワークを可能にする。疎結合プロセスネットワークでは、プロセスは、該プロセスが対話する他のプロセスに関する情報を全く持たなくてもよく、または限られた情報のみを持てばよい。代わりに、プロセスは、他のプロセスとの接続ポイント（connection point）および接続ポイントの意味（significance）を認識する。
【００７０】
疎結合プロセスネットワークを使用して高度に維持可能なプログラムを達成し、そしてデータフロー構造に基づいたより複雑で高度なルーティングロジックを可能にすることができる。受動データフローネットワークは、中間体（intermediary）として機能する能動プロセス（active process）よりも、より効率的に、あるプロセスから別のプロセスにデータをルーティングすることができる。
【００７１】
本明細書では、特定の実施形態を例示して説明したが、当業者には、本発明の範囲から逸脱することなく、様々な代替および／または等価な実装をこれらの図示および説明された実施形態と置き換えることができることは理解されよう。本出願は、本明細書で説明された特定の実施形態の任意の変更または変形も網羅するように意図されている。したがって、本発明は、特許請求の範囲およびその等価物によってのみ限定されることが意図されている。
【図１Ａ】
0005551687.tif 000002
【図１Ｂ】
0005551687.tif 000003
【図１Ｃ】
0005551687.tif 000004
【図２Ａ】
0005551687.tif 000005
【図２Ｂ】
0005551687.tif 000006
【図２Ｃ】
0005551687.tif 000007
【図３】
0005551687.tif 000008
【図４】
0005551687.tif 000009
【図５】
0005551687.tif 000010
【図６】
0005551687.tif 000011
【図７】
0005551687.tif 000012
【図８】
0005551687.tif 000013
【図９】
0005551687.tif 000014
【図１０】
0005551687.tif 000015
【図１１】
0005551687.tif 000016