JP2010508574A - ミドルウェアフレームワーク - Google Patents
ミドルウェアフレームワーク Download PDFInfo
- Publication number
- JP2010508574A JP2010508574A JP2009534701A JP2009534701A JP2010508574A JP 2010508574 A JP2010508574 A JP 2010508574A JP 2009534701 A JP2009534701 A JP 2009534701A JP 2009534701 A JP2009534701 A JP 2009534701A JP 2010508574 A JP2010508574 A JP 2010508574A
- Authority
- JP
- Japan
- Prior art keywords
- job
- framework
- execution
- task
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 77
- 238000000034 method Methods 0.000 claims abstract description 42
- 230000008569 process Effects 0.000 claims abstract description 13
- 230000004044 response Effects 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 238000007726 management method Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000005206 flow analysis Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000004043 responsiveness Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】本発明に係る方法は、複数の処理ユニットを有するマルチプロセッシング環境で所望のアプリケーションを開発するためのミドルウェアフレームワークを提供する。本方法は、所望のアプリケーションを開発するための複数のタスクモジュールの選択を受け取ることと、選択されたタスクモジュール間の接続を受け取り、所望のアプリケーションを形成することと、形成されたアプリケーションを通じて処理するための複数の実行スレッドの入力を受け取ることと、少なくとも、a)複数の実行スレッドの少なくとも1つによる実行用の少なくとも1つのジョブのジョブリストを提供することと、b)少なくとも1つの所定のポリシーに基づいて、複数の実行スレッドの1つによるジョブリストの各ジョブの実行を自動的にスケジューリングすることとによる、自動グローバルスケジューリングを提供することとを含む。
【選択図】図1A
Description
したがって、アプリケーション開発者は、1)システムの複雑性の隔離及び管理、2)マルチメディアアプリケーションの複数のデータフォーマットに対する同時実行のサポート、3)データストリーミングオペレーションのためのデータのシーケンスの処理、並びに4)リアルタイムアプリケーションの変動する負荷のもとでの可変強度プラットフォーム(variable-strength platform)上での応答性能の達成から成る少なくとも4つのタイプの課題を克服しなければならない。
図において、同様の符号は、同様の要素を示す。
以下の説明では、実施形態の徹底した理解を提供するために、多数の具体的な詳細が述べられる。
しかしながら、これらの具体的な詳細に限定されることなく実施形態を実施することができることが、当業者には明らかであろう。
それ以外の場合には、実施形態を不必要に不明瞭にしないように、周知の方法及び構造は詳細に説明されていない。
したがって、本明細書では、このようなミドルウェアフレームワークの方法及びシステムが説明される。
本発明の一実施形態では、ソフトウェアの設計及び構築を簡単にしてソフトウェア開発時間を減少させることにより、マルチメディアアプリケーション等の複雑なアプリケーションのソフトウェア設計を改良するように作動可能なマルチプラットフォームソフトウェアフレームワークであるデータフローミドルウェア(DM)フレームワークが提供される。
さらに、このミドルウェアフレームワークは、リアルタイム又はオフラインのいずれにおいてもランタイム中の複雑なオペレーションを効率的にサポートするように作動可能である。
シングルスレッドの解決法では、従来のフレームワークは、モジュール性の利益を達成するが、モジュールの実行を並列に行うことができないので、性能は低い。
スレッド毎モジュール解決法では、アプリケーションは、並列実行を使用する。
しかしながら、アプリケーションモジュールは、オーバーフローの状況及びスタベーション(starvation)の状況に個別に反応しなければならず、メディアのドロップ又はモジュールの動作速度の調整をいつ行うのかをローカルに決定しなければならない。
したがって、本発明の少なくとも1つの実施形態は、アプリケーションの性能を犠牲にすることなく、アプリケーションソフトウェアの簡単化したモジュール形式のデータフロースタイル設計を提供しようとするものである。
データフロー設計では、アプリケーションは、有向アークによって互いにリンクされた機能モジュールの接続ネットワークである。
データフロー設計は、モジュール性が複雑性を低減し、アークがデータのストリームを表し、アークが複数のデータフォーマットを送信することができるので、ストリーミングマルチメディアアプリケーション等の複雑なアプリケーションを表すのによく適している。
本発明の別の実施形態では、マルチコアプロセッサ内に又は複数のマルチコアプロセッサ全体にわたって複数のプロセッサを有するマルチプロセッシング環境全体にわたりアプリケーションタスクの並列実行を自動化又は組織化するグローバルスケジューラを含むミドルウェアフレームワークが提供される。
本明細書で参照されるように、処理ユニットは、単一のプロセッサ又はマルチコアプロセッサの1つのコアである。
したがって、複数のプロセッサ、マルチコアプロセッサ、又は複数のマルチコアプロセッサを有する環境は、複数の処理ユニットを有することになる。
したがって、どのアプリケーションも、オーバーパワーマシン(over-powered machine)上では常に応答するが(たとえば、サーバクラスのマシンを使用するウェブカメラビデオキャプチャ)、本発明の1つ又は複数の実施形態は、マシンの資源が限られていても、マシンのマルチプロセッシング能力を利用してアプリケーションの性能を達成しようとする。
これによって、アプリケーション開発者は、手元のアプリケーションに特有のアルゴリズム処理に集中することが可能になると同時に、そのフレームワークを利用して、アプリケーション開発者が直面することが多い上述した課題を克服することが可能になる。
加えて、このようなDMフレームワークは、(メンテナンスを簡単にする)改良された記述性及び可読性、他者の作業を利用するコード再利用、デバッグを簡単にし、且つソフトウェアロバスト性を確保するより良い試験方法論、及び他のプラットフォームへの増大された移植性のような他のソフトウェアエンジニアリングの利益も提供する。
データフローパラダイムに基づく本発明の実施形態では、アプリケーションからのデータは、DMフレームワークの計算モジュールの有向グラフをフローする。
したがって、このパラダイムでアプリケーションを作成、構築、又は開発するために、次のフェーズ、すなわち、(1)信号及びそれらの信号に対する処理フェーズを決定するアプリケーションのデータフロー解析、(2)アプリケーションの、メディア表現及び処理モジュールへの分解、(3)モジュールの有向グラフネットワークへの組み立て、並びに(4)アプリケーショングラフネットワークのランタイム管理を含むソフトウェア開発の方法論が採用される。
図1Aは、上述した方法論100を示している。この方法論100は、DMフレームワークがこの方法論を援助するためにどのように作動可能であるのかに関して以下でさらに詳細に説明される。
対象アプリケーションは、そのプロトタイプであってもよいし、テストフェーズであってもよく、アプリケーション開発者は、対象アプリケーションを完成させるために、さらなる修正又は高度化のためのアプリケーションのさらなる解析を望んでいる。
図2は、フェーズ110の詳細を示している。フェーズ110は、アプリケーション開発者が行うことができる。任意のアプリケーションの基本的な情報コンテンツは、時間と共に進展するデータ信号(たとえば、オーディオ又はビデオ)である。
したがって、210において、アプリケーションのデータフロー解析を行うために、アプリケーション開発者は、最初に、アプリケーションに供給を行う1つ又は複数の信号ソース(たとえば、マイクロホン、カメラ、又はファイル)を識別する。
次に、220において、アプリケーション開発者は、各信号が、信号ソースにおいて発生してからアプリケーションを通って進行する時に、各信号の所望の変換パスをたどる。
この変換パスに沿った各識別可能な信号フォーマット間で、信号は、異なった処理フェーズにかけられる。
たとえば、オーディオ信号は、マイクロホンソースにおいてPCMフォーマットで発生し、次に、ADPCMへの変化を受け、次に、UDPパケットへの変換を受ける場合がある。
この例では、圧縮ステージが、PCMフォーマットとADPCMフォーマットとの間に位置し、ネットワークパケット化ステージが、ADPCMフォーマットとUDPフォーマットとの間に位置する。
信号の変換は、信号のフォーマットを変更しない処理ステージ中に行われる場合もある。
たとえば、色補正ステージは、その画像入力と同じフォーマットを有するが、画像の内部に修正されたデータを有する画像出力を生成する場合がある。
したがって、230において、各信号をこの方法で解析することによって、アプリケーション開発者は、アプリケーションの信号フォーマット及び異なる処理フェーズの双方を識別することができる。
このアプリケーション項目別分類では、アプリケーション開発者は、データフロー解析に基づいて、構築されるアプリケーションをその構成要素又はコンポーネントにブレークダウンする。
これよりも先に識別された信号フォーマットは、メディアタイプであり、これよりも先に識別された処理フェーズは、それらのメディアタイプを処理する。
一実施形態では、DMフレームワークは、この項目別分類フェーズをサポートする3つの抽象化、すなわち、メディアオブジェクト、タスクオブジェクト、及びジョブを提供する。
本明細書で参照されるように、メディアオブジェクトは、基本データ単位であり、各単位は、特定のメディアタイプを有する。
各メディアオブジェクトは、マルチメディアアプリケーションにおけるストリームベースの信号等、任意のタイプのデータ信号とすることができる。
ストリームベースの信号の例には、オーディオストリーム、ビデオストリーム、及び一連の画像のそれぞれにおける顔の2次元(2D)座標のストリームが含まれるが、これらに限定されるものではない。
これとは対照的に、本明細書で参照されるように、タスクオブジェクトは、基本処理単位である。
各タスクオブジェクトは、1つ若しくは複数のメディアオブジェクトを受け取るための入力をゼロ個以上、1つ若しくは複数のメディアオブジェクトを1つ若しくは複数の他のタスクオブジェクトへ送出するための出力をゼロ個以上、又は1つ若しくは複数のメディアオブジェクトを受け取り且つ送るための入力若しくは出力を少なくとも1つ有する。
少なくとも1つの出力を有するが入力を有しないタスクオブジェクトは、後に説明するプロダクションタスクモジュール等のメディアオブジェクト(複数可)のソースとして機能するソースタスクオブジェクトである。
少なくとも1つの入力を有するが出力を有しないタスクオブジェクトは、任意の入力メディアオブジェクトの終端点として機能するシンクタスクオブジェクトである。
たとえば、シンクタスクオブジェクトは、メディアオブジェクトをフレームワークの他のタスクオブジェクトへ送出しないので、出力を有しない。
その代わり、ファイルシンクタスクオブジェクト等のシンクタスクオブジェクトは、結果としてのメディアオブジェクト(複数可)をストレージ媒体に書き込むこともできるし、ネットワークタスクオブジェクト等のシンクタスクオブジェクトは、ネットワーク全体にわたって結果としてのメディアオブジェクト(複数可)を送信することもできる。
タスクオブジェクトは、ビデオ圧縮、ビデオ伸張、顔認識等の任意のタイプのメディア計算とすることができる。
タスクオブジェクトは、カメラからの画像取り込み、又はコンピュータサウンドカード及びスピーカによるオーディオ再生等のI/Oプロセスによるメディアの生成又は消費も含むことができる。
また、本明細書で参照されるように、ジョブは、このようなジョブに関連付けられるタスクオブジェクトによる1つ又は複数の必要なメディアオブジェクト(複数可)の処理である。
したがって、1つ又は複数のジョブを特定のタスク及び特定のメディアオブジェクト(複数可)に関連付けることができる。
さらに、複数のジョブを単一のタスクオブジェクトにより、タスクオブジェクトのタイプに応じて経時的にシーケンシャルに又は同時に処理することができる。
同様に、処理フェーズごとに、開発者は、DMフレームワークですでに利用可能な所定のタスクモジュールを使用することもできるし、DMフレームワークにおけるオブジェクト指向型プログラミングの所定のTask(タスク)基底クラスの振る舞いを継承する新しいタスクモジュールを定義することもできる。
したがって、各タスクモジュールは、0個以上の入力ピン、0個以上の出力ピン、又は対応するタスクオブジェクトの入力(複数可)及び出力(複数可)に対応する少なくとも1つの入力ピン若しくは少なくとも1つの出力ピンを有する。
タスクモジュールの継承可能な振る舞いには、入出力(I/O)バッファ管理並びにマルチスレッド実行及びマルチスレッド同期が含まれる。
各タスクモジュールの内部のコードは、入力から出力へのアルゴリズム的マッピング(algorithmic mapping)であり、DMフレームワークを単に使用することから可能になるスレッド化問題又は同期問題からは隔離されている。
したがって、130において、アプリケーション開発者は、アプリケーションの構成要素又はコンポーネントの組み立てを通じて、構築されるアプリケーションを形成することができる。
ここで、アプリケーション開発者は、多くのタスクモジュール(それぞれはタスクを表す)を互いに接続して、処理グラフネットワークを形成し、DMフレームワークに、アプリケーション又は処理グラフネットワークの1つ又は複数のジョブの実行又は遂行の1つ又は複数のフレームワークスレッド(以下、「実行スレッド」としても参照する)を要求する。
各接続は、特定のメディアタイプの一方向転送であり、メディアストリームを表す。
すべてのタスクピンが接続されているという条件で、アプリケーションは、メディアオブジェクトを作成するプロダクションタスクをトリガすることによって処理グラフネットワークを開始することができる。
メディアオブジェクトの各プロダクションの後、プロダクションタスクは、自身をトリガして、次のメディアオブジェクトを作成することができる。
各メディアオブジェクトは、メディアプロダクションタスクモジュールから処理ネットワーク又はグラフの残りの部分へフローし、さらに、実行スレッドに基づいて、アプリケーションにおけるタスクの残りの部分の消費、プロダクション、又は処理振る舞いをトリガする。
いくつかの実施形態では、停止コマンドは、ジョブ実行のホルトが効力を有する前に、現在スケジューリングされているすべてのジョブを実行させる。
グラフを停止することによって、タスクモジュールの内部データ状態が保持される。
動的アプリケーションでは、まずグラフを停止し、次に、タスクモジュールを追加又は除去し、次に、新しいグラフ及び除去されなかった任意のタスクモジュールの内部データ状態でアプリケーションを継続する開始コマンドを発行することによって、タスクをグラフに追加し又はタスクをグラフから除去することができる。
代替的に、グラフィカルディスプレイプログラムは、破棄コマンドを発行することもできる。
この破棄コマンドは、グラフ内のすべてのTaskを再帰的に破棄する。
DMフレームワークの上述したコマンドは、グラフィカルディスプレイプログラムを通じて利用可能とすることができるフレームワークコマンドに関して説明されているが、フレームワークコマンドは、グラフィカルディスプレイプログラムの外部で利用可能なメカニズム又はコマンドを通じて、DMフレームワーク内で自動的に又はDMフレームワークへのユーザ入力によって手動で、DMフレームワークに発行することができることが理解されるべきである。
閉路は、フィードバックループを有するあらゆるアプリケーションで重要である。たとえば、ディスプレイタスクモジュールからのマウスの動きによって、別のタスクモジュールにおける新規なビュー合成の視点を求めることができ、この別のタスクは、次に、新しい画像をディスプレイタスクモジュールへ送信することができる。
メディアストリームのタイプについて一致するために、2つの接続されたタスクモジュールは、メディアタイプを交渉しなければならない場合がある。
たとえば、一般化されたUDP Taskは、任意のメディアタイプを許容することができるが、そのメディアタイプを供給するビデオソースは、MPEG−4ビデオしか配信しない場合がある。
UDP Taskは柔軟性を有するので、2つのタスクモジュールは、単に、MPEG−4ビデオメディアタイプを送信/受信することに同意するだけである。
結局、完成したグラフ構造は、アプリケーションのタスク依存関係を直接表すものとなる。
一実施形態では、DMフレームワークは、たとえば、処理グラフネットワークのグラフィカルユーザインターフェース(GUI)ソフトウェアプログラムを介して、リアルタイムグラフィカルディスプレイを提供する。
このようなディスプレイは、処理グラフトポロジー及びタスクのリアルタイム性能統計量を動的に視覚化したものをユーザに提供する。
リアルタイム性能統計量には、アプリケーションにおけるレイテンシ並びに1つのタスク当たり及びアプリケーション全体当たりのスループット統計量が含まれる。
このグラフィカルディスプレイによって、ユーザは、アプリケーションを表す処理グラフネットワークのグラフ管理を通じたアプリケーション構築又はアプリケーション開発を管理及び操作することが可能になる。
たとえば、ユーザは、修正されたタスクモジュールの内部状態もタスクモジュール内で修正し又は内部状態は修正せずに、処理グラフネットワークの1つ又は複数のタスクモジュールへの接続(複数可)及びそれらタスクモジュールからの接続(複数可)を修正することができる。
グラフ管理について、アプリケーションランタイムに、タスクモジュールが一旦接続され、メディアタイプが各接続について求められると、アプリケーションは、DMフレームワークによる実行の準備が完了する。
次に、DMフレームワークのグラフィカルディスプレイプログラムは、アプリケーショングラフの開始コマンドを発行する。
この開始コマンドは、DMフレームワーク内のグローバルスケジューラのオペレーションをトリガする。
これに応答して、DMフレームワークの内部スレッドは、処理グラフネットワークをトラバースして、グローバルスケジューラによって設定された所定のポリシーに従い、タスク接続、すなわちタスクモジュール間の接続にわたるメディアフローを方向づけ、1つ又は複数のタスクモジュールを使用して1つ又は複数のメディアオブジェクトを処理することにより、グローバルスケジューラにリストされた利用可能なジョブ(複数可)を遂行する。
また、グローバルスケジューラは、個々のタスク及びタスクの全体グラフの平均レイテンシ及びスループット等の計算統計量の経過も追跡して、アプリケーション性能のボトルネックを識別する。
グローバルスケジューラは、実行スレッドによる実行用のジョブのリストを含む。
したがって、実行スレッドが、ジョブの遂行後にタスクモジュールを終了させるとき、その実行スレッドは、グローバルスケジューラを再び参照して、遂行される次のジョブをジョブリストにおいて識別し、関連付けられるタスクモジュールに進んで、関連付けられるメディアオブジェクトのセットに対してこのようなジョブを遂行する。
たとえば、タスクモジュールによって所望されるデータオブジェクト又は必要とされるデータオブジェクトが、タスクモジュールによって利用可能になると、このようなタスクモジュールによる実行用にジョブが作成されてリストされる。
別の例では、たとえば、DMフレームワークの他のタスクモジュールによる処理用にメディアオブジェクト又は他のデータオブジェクトを生成するのに、ジョブがソースタスクモジュール(入力ピンを有しない)で望まれるとき、ジョブを動的に作成してリストすることができる。
この自動スケジューリングは、リストされた各ジョブの特定の実行スレッドへの割り当てを含む。
したがって、自身の所定のポリシーに基づくグローバルスケジューラのオペレーションは、自動的であり、アプリケーション開発者にトランスペアレントである。
グローバルスケジューラの所定のポリシーは、以下でさらに説明される。
図3Aでは、データフロー解析後に、アプリケーションは、5つの処理タスク310及び4つの信号フォーマット320によって示すように、その構成要素のタスク及び信号に分解される。
次に、図3Bでは、矢印330によって示すようなタスク依存関係が、タスクのタスク構造への組み立て中に明示的にされる。
最後に、図3Cでは、タスク接続330にわたる信号のフローの管理を通じて、完成されたタスクグラフを管理することにより、アプリケーションが実行される。
最初に、同期されたカメラ等の信号ソース410が識別される。
次に、さまざまなタスクモジュール420〜450が、所望のアプリケーションについてインスタンス化される。
次に、信号ソース410及びタスクモジュール420〜450が接続されて、単一のアプリケーショングラフ、すなわち処理グラフネットワークが形成される。
次に、このグラフは、開始、停止、破棄等の簡単なグラフコマンドを通じて管理される。
本発明の一実施形態によれば、DMフレームワークは、設計によるコンピューティングサービスであり、コンピュータ等の単一のコンピューティングマシンの実行環境でモデル化される。
このようなモデルでは、DMフレームワークは、マシン上のコンピューティング資源の制御を有するものと仮定される。
換言すれば、DMフレームワークは、マシンのオペレーティングシステム(OS)スケジューラの予測のつかない変動により、CPU資源を得るために競合することはない。
もちろん、通常の非リアルタイムオペレーティングシステムでは、この仮定は、通常のOSオペレーションによる先取りに起因して満たされない。
しかしながら、DMフレームワークを使用してすべての計算集約型アプリケーションを特定のマシン上で実施することにより、このような仮定は、合理的な近似であることが分かっている。
この巧みな分離は、(アプリケーション処理フェーズの)プロセスを、コンピューティング及びI/Oの2つのカテゴリーに分割することによって可能である。
コンピューティングプロセスは、かなりの時間を要し、スループットの影響を受ける。たとえば、ビデオコーデックは、かなりのレイテンシを有する場合があるが、ビデオコーデックが30Hzのフレームレートを維持することができる場合に、性能は良好である。
他方、I/Oプロセスは、ハンドリングに必要な時間がより少ないが、レイテンシの影響を受ける。
たとえば、新しいロケーションにウィンドウを描くことは、比較的高速に行われるが、このタスクの遂行に遅延があった場合、ユーザは気付くことになる。
同様の議論は、出力デバイスでのオーディオのプレイ又はキーボードでのストロークの取り込みにも当てはまる。
したがって、I/Oオペレーション(たとえば、カメラデバイスのリスン又はウィンドウイベントのハンドリング)は、マシン上のネイティブプラットフォーム又はOSに注意深く委ねられ、DMフレームワークのタスクモジュールは、I/O処理能力を何ら有しない計算モジュールになる。
コンピューティングタスク及びI/Oタスクへの処理のこの分離は、他の2つの仮定に変換される。
すなわち、DMフレームワークは、他の計算集約型アプリケーションと競合していないこと、及び、ネイティブプラットフォームは、I/O応答性についてDMフレームワークと競合していないことの2つの仮定に変換される。
これによって、マシン上のネイティブOSがI/O応答性を有することが確保される。
I/Oは高速であるので、マシンにおいてI/Oに必要とされないCPU時間の残りは、唯一の計算集約型アプリケーションであるフレームワークに与えられる。
換言すれば、OS及び他の標準的な優先順位のスレッドが、I/Oプロセスをハンドリングする間(及びその後に初めて)フレームワークは、計算をハンドリングするように作動可能である。
このプロシージャは、次の初期信号及びその後の初期信号に対しても同様に繰り返される。
新しい初期データ信号の平均到達率が、各データ波の平均完了率よりも大きい場合、アプリケーションが後れを取らないために(すなわち、増加の一途をたどるレイテンシが絶えず遅れることを回避するために)、いくつかの初期データ信号を破棄することができる。
タスク並列性の場合、各タスクモジュールは、これまでの計算履歴(history previous computations)としてその内部状態の組を有する(with its internal state set)順序計算モジュールである。
この履歴の一例は手の追跡座標であり、この場合、先行フレームにおけるロケーションによって、現フレームにおけるロケーションの検索が不要になる。
したがって、所定の履歴の状態を可能にするために、各モジュールのコードは、シーケンシャルに実行される。
これは、どの所与の時刻においても、1つの実行スレッドしか特定のモジュールに常駐することができないことを暗に意味し、これは、「ライブ」の実行スレッドの最大数がグラフのモジュールの個数であることを暗に意味する。
換言すれば、順序モジュールの処理グラフネットワークで達成可能な最良の並列性は、タスク並列性である。
すなわち、モジュールの個数に等しいプロセッサを有するマシンは、使用可能なタスク並列性の限界に達している。
したがって、各順序モジュールは、本質的には、どの所与の時刻においても、1つのジョブを遂行するために、1つのプロセッサと同等のものを消費して、そのプロセッサで1つの実行スレッドしか動作させず、動作する他の実行スレッドが存在しないので、プロセッサが追加されても、性能はもはや改善されない。
実際には、全体のアプリケーションスループットは、この場合、最も遅いモジュールのレイテンシによって制限される。
この状況においても、本発明の実施形態は、所与のタスクモジュールに関連付けられるジョブの処理を、時間と共に、異なる処理ユニットにシフトすることができることに留意すべきである。
DMフレームワークでデータ並列性を用いるために、少なくとも1つのタスクモジュールは、そのアルゴリズムコードが再入力される組み合わせ計算モジュールである。
その理由は、複数のスレッドが、コードを実行して、複数の処理ユニットにより同時に複数のジョブを遂行又は実行することができるからである。
スレッドは、多くの場合、実行時間が変化し、したがって、その出力は、順序どおりでない場合がある。
下流側モジュールが組み合わせモジュールである場合、スレッドは、より多くのデータ並列性を活用して、自由に動作し続ける。
一方、下流側モジュールが順序モジュールである場合、正確なシーケンスが下流側モジュールの入力バッファで獲得されるまで、スレッドの生成を阻止しなければならない。
組み合わせモジュールは、もっぱら現在の入力の関数である出力を生成する。換言すれば、これらのモジュールは、前の実行の内部履歴を何ら有しない。
したがって、組み合わせモジュールは、前の計算の関数ではない内部状態を有することができる。
他方、順序モジュールは、前の実行の内部メモリを有し、したがって、出力は、現在の入力及び前の入力の双方に依存することができる。
この状況では、データは、正しい順序で入力に到達しなければならない。
順序モジュールは、現在の状態を次の実行へ転送することによって組み合わせモジュールに変換することができる。
この転送は、追加の出力を追加の入力にリンクすることによって達成される。この変換は、より多くの並列性を明らかにするのに役立つ。
したがって、可能ならば、大きな順序モジュールは、小さな順序モジュール及び大きな組み合わせモジュールの組み合わせに分解される。
しかしながら、一定の順序モジュールは、決して組み合わせモジュールとすることはできず、それらの本来的な順序的振る舞いは、並列性の量を常に制限するので、本発明の一実施形態によれば、アプリケーションをモデル化するために、組み合わせモジュール及び順序モジュールの双方が、DMフレームワークで指定され用いられる。
このようなモジュールは、通常、ソース(たとえば、カメラ等の本来的にシーケンシャルな入力デバイスによってトリガされるモジュール)又はシンク(たとえば、会話データを出力バッファに書き込むオーディオモジュール)である。
たとえば、処理ユニット1がタスクモジュールAを動作させ、処理ユニット2がタスクモジュールBを動作させ、処理ユニット3がタスクモジュールCを動作させる等である。
代替的に、1つ又は複数の順序タスクモジュールを、マルチプロセッシング環境の1つの処理ユニットが動作可能又は実行可能である。
たとえば、処理ユニット1がタスクモジュールA及びBを動作させ、処理ユニット2がタスクモジュールCを動作させ、処理ユニット3がタスクモジュールD、E、及びFを動作させる等である。
さらに、各実行スレッドは、自身に割り当てられたジョブに応じて、時間と共に、マルチプロセッシング環境の異なる処理ユニットを用いて、1つ又は複数のタスクモジュールにおいて割り当てられたジョブを実行することができる。
たとえば、単一の実行スレッドは、時間と共に、プロセッサ間をホップすることもできるし、異なるタスクを実施することもできるし、その双方を行うこともできる。
一実施形態では、グローバルスケジューラは、最小限のエンドツーエンドレイテンシを優先する所定のポリシーをジョブについて実施することができる。
たとえば、DMフレームワークで最も古い初期信号がまだアクティブであるのか、それとも、すでに使用又は破棄されているのかに関わらず、DMフレームワークでまだアクティブである、最も古い初期信号の子孫を優先するポリシーを実施することができる。
したがって、それらの子孫信号を用いるジョブには、処理グラフネットワークのタスクモジュールによって処理するための実行スレッドが優先的に与えられる。
したがって、DMフレームワークが、メディアオブジェクト及びそれらの子孫を含むジョブに優先順位付けすることができるように、メディアオブジェクトには、それらメディアオブジェクトがプロダクション(又はソース)タスクモジュールによって作成された時間を示すタイムスタンプを設けることができる。
代替的に、メディアオブジェクト又はタスクオブジェクトには、DMフレームワークのグローバルスケジューラが、先に述べたような所定のポリシーに基づいて、関係するジョブを優先順位付けすることを可能にする優先順位タグ又は他のインジケータを設けることもできる。
たとえば、オーディオメディアオブジェクトには、ビデオメディアオブジェクトよりも高い優先順位を与えることができ、それらの優先順位は、優先順位タグ又はインジケータで示される。
ジョブの実行優先順位が、関連付けられるメディアオブジェクトの優先順位タグ又はインジケータから一旦決定されると、このようなタグ又はインジケータは、ジョブの優先順位付けにもはや使用されない。
たとえば、特定のジョブには、この特定のジョブの基礎となるタスクの出力にどれだけ多くの他のタスクが依存しているのかに基づいて、実行スレッドによる遂行用のより高い(又はより低い)優先順位が与えられる。
さらに、たとえば、或るジョブの基礎となるタスクの利用可能なすべての必要な入力のいくつかが、他のタスクモジュールによる出力にとって利用可能でないことから、そのジョブが、その基礎となるタスクの利用可能なすべての必要な入力をまだ有していないとき、そのジョブには、遂行についてより低い優先順位が与えられる。
別の例では、最も長く待機していたタスク、したがってジョブ(複数可)を優先(又は劣後)するために、一定のジョブ(複数可)には、その基礎となるタスクが実行されてから又は実行用にスケジューリングされてからどれだけの時間が経ったかに基づいて、より高い(又はより低い)優先順位が与えられる。
たとえば、グローバルスケジューラは、DMフレームワークのすべての実行スレッドについて1つのジョブリストを有するが、実行スレッドのそれぞれは、このようなジョブリストについてグローバルスケジューラに別個のジョブ優先順位リストを保持する。
この別個のジョブ優先順位リストは、たとえば、各実行スレッドがジョブリストのジョブに設ける優先順位の或る重み付けとすることができる。
したがって、同じジョブリストの各ジョブに関連付けられる優先順位は、実行スレッドごとに異なる。
その結果、実行スレッドが、異なるプロセッサにジャンプする頻度を削減するために、特定の実行スレッドと同じプロセッサ上での実行が予定されているジョブリストの次のジョブの実行を優先するようにその特定の実行スレッドのジョブ優先順位リストを設定することによって、グローバルスケジューラは、キャッシュ使用量を改善し、キャッシュミスの回数を減少させることができる。
したがって、上記で述べたような順序制約条件のいくつかの取り除くことによって、グローバルスケジューラは、データ並列性も活用することができる。
これは、特に、性能ボトルネックであるモジュールにとって重要である。
したがって、グローバルスケジューラは、データ並列性を活用してアプリケーション性能を高めるポリシーを実施することができる。
データ並列性の利点の1つは、「ライブ」スレッドの個数が、タスクモジュールの個数にも、プロセッサ等の処理ユニットの個数にも、マルチコアプロセッサのコアの個数にも等しくなる必要がないことである。
たとえば、グローバルスケジューラは、エンドツーエンドレイテンシを最小にするために、最も古い祖先(すなわち、最も古い初期信号)を有するメディアオブジェクトの実行を優先するタスクスケジューリングを提供することができる。
リアルタイムモニタツールによって、開発者は、アプリケーションのレイテンシを調べて、アプリケーション性能のボトルネックを識別するために、モジュール性能の統計量を調べることが可能になる。
図5は、DMフレームワークの実施階層500を示している。
この実施階層500は、抽象レイヤ540及びフレームワークカーネル530によって形成される。
フレームワークカーネル530は、アプリケーション510とアプリケーションを動作させるマシンのネイティブOS550との間に位置する。
抽象レイヤ540は、ネイティブOS550によって表されるようなホストプラットフォームからフレームワークカーネル530を隔離して、フレームワークカーネルをプラットフォームから独立した状態にする。
コンポーネントライブラリ520は、一般に再利用可能な多くのモジュールを含む。アプリケーション開発者は、すべてのレベルにアクセスすることができる。
ネイティブOS550は、マルチスレッドサポート、タイミングメカニズム、及びプログラミングコンパイラ(たとえばANSI C++コンパイラ)の3つの要素を含む。
マルチスレッドサポートは、計算を制御するためのスレッド抽象体(thread abstraction)だけでなく、スレッドを制御するのに必要な同期オブジェクトも含む。
DMフレームワークは、単一プロセッサマシン上で作動することができるが、一実施形態では、基礎となるハードウェアは、並列実行又は並列処理から利益を受けるために、対称型マルチプロセッサ(SMP)マシンである。
このような場合、抽象レイヤ540は、SMP抽象レイヤとなる。
タイミングメカニズムは、レイテンシ測定等の性能解析に要求される。
プログラミングコンパイラは、実行可能ファイルを生成するのに要求され、このようなコンパイラは、DMフレームワーク全体を通じてコンパイラに設けられた抽象体(たとえば、文字列、ベクトル、マップ(map)、集合、デキュー)の使用を可能にする標準的なテンプレートライブラリ(たとえば、C++標準テンプレートライブラリ)を有するべきである。
これによって、DMフレームワークを他のプラットフォーム及びオペレーティングシステムに移植することが容易になる。
Thread(スレッド)抽象体は、DMフレームワークに、OSスレッドのネーミング、スポーニング(spawn)、及びデバッグの能力を提供する。実際のThread作成は、ネイティブプラットフォームコールで行われ、各スレッドは、その一意の名称に関連付けられるログファイルを有することができ、各スレッドの実行トレースの作成を可能にする。
Mutex(ミューテックス)抽象体及びSemaphore(セマフォ)抽象体によって、Threadの同期が可能になる。
Mutexは、2つの以上のスレッドが同時にコードを実行することを防止するための標準的な相互排除オブジェクトであり、Semaphoreは、Thread間でシグナリングを行うための標準的で効率的なメカニズムである。
StopWatch(ストップウォッチ)抽象体又はTimer(タイマ)抽象体は、プラットフォームタイミング機能を使用して時間を測定する能力をカプセル化する。
時間の測定は、性能解析に必須である。
これは、アプリケーションを構築するための拡張可能なTask抽象体及びMedia抽象体を供給する。
フレームワークカーネルは、内部にも、自身の複雑度を管理するためのいくつかの抽象体を有する。
第1に、InputPin(入力ピン)オブジェクト及びOutputPin(出力ピン)オブジェクトが、メディアオブジェクトを転送するためのタスクオブジェクト間の接続を表す。
第2に、Graph(グラフ)オブジェクトが、互いに接続されたタスクオブジェクトを管理し、start()及びstop()等のグラフ全体のコマンドのインターフェースとして機能する。
Graphコマンドは、単一のTask引数を有するが、接続性を使用してアプリケーショングラフ全体をトラバースし、グラフの各モジュールにコマンドを適用する。
第3に、メモリマネージャオブジェクトが、メディアオブジェクトを記憶するためのメモリバッファを提供する。
メモリマネージャは、バッファ使用量を追跡し、事前に割り当てられたバッファを再利用するためのファシリティを有し、メモリ統計量を報告することができる。
先に述べたように、グローバルスケジューラは、フレームワークカーネル530に常駐して、処理グラフネットワークをトラバースする実行スレッドを管理し、平均レイテンシ及びスループット等の計算統計量の経過を追跡する。
アプリケーション開発者は、共通の機能(たとえば、オーディオ記録又は画像色空間変換)を再実装するのではなく、事前に構築された役立つタスクオブジェクトを再利用可能コンポーネントライブラリ520から見つけることができる。
事前に構築されたタスクオブジェクトの例には、カメラインターフェース、グラフィックス機能、オーディオコーデック、ビデオコーデック、ネットワーキングモジュール等が含まれるが、これらに限定されるものではない。
他者の作業を利用することは、迅速な開発の重要な態様である。
アプリケーション510は、先のすべてのレイヤにアクセスすることができる。
プラットフォーム独立性をさらに推進するために、アプリケーションは、DMフレームワーク用に作成されたあらゆる下位レベルライブラリのすべての内部オブジェクトにアクセスすることができ、DMネットワークが、異なるプラットフォーム上で実施されている下位ライブラリレベルのクラスについて気にする必要がないようにされる。
一方、フレームワークカーネル530では、DMフレームワークインターフェースの複雑性を最小にするために、タスク抽象体及びメディア抽象体のみがアクセス可能である。
内部オブジェクトは、タスクオブジェクト及びメディアオブジェクトを通じて又は静的なフレームワークプロシージャを通じて間接的にアクセスされる。
第1に、入力ピン又は出力ピン上のデータが常に相互に関連付けられるべきであることがアプリオリに知られている場合、入力ピン又は出力ピンをグループ化するための便利なメカニズムがある。
たとえば、図4の結合モジュール440は、常に一対の画像に対して処理を行う。それら入力ピンを同じ入力グループにすることによって、モジュールは、双方の画像が到着した時にのみ作動し始め、開発者が入力画像を管理し関連付ける必要性が回避される。
この関連付けは、アプリオリに知られているので、静的同期と呼ばれる。第2に、タスクモジュールの出力ピンからの「ファンアウト」が利用可能である。
このファンアウトでは、タスクモジュールの出力ピンは、複数のタスクへの入力とすることができる。
したがって、或るタスクモジュールから出力されたメディアオブジェクトを、その後、他の複数のタスクが使用することができる。
さらに、他の複数のタスクがメディアオブジェクトを修正する必要はなく、単にそのメディアオブジェクトを用いて他のジョブを遂行するだけである場合に、メディアオブジェクトの複製コピーをフレームワークメモリで作成する必要がないように、出力メディアは読み出し専用とすることができる。
したがって、メディアオブジェクトを含む同じメモリバッファをすべての受信タスクモジュールへ送信することができる。
Media基底クラスは、どのMediaオブジェクトも、その複雑性にかかわらず、平坦にすることができる強力なシリアライズプロシージャを有する。
Mediaオブジェクトは、固定長フィールド(たとえば、画像サイズ、フォーマット仕様)及び可変長フィールド(たとえば、画像バイト、オーディオデータ)の双方を有することができる。
シリアライズプロシージャは、どの深さのMedia構造もトラバースすることができ、そのMedia構造を、DMネットワークによる出力用の単一の平坦なバッファに変換して、ファイル又はネットワークストリーム等のシリアル表現にすることができる。
同様に、自動デシリアライズプロシージャは、平坦化された表現を読み出し、その表現を、DMネットワークによる処理用にメモリで深いMedia構造に変換して戻すことができる。
したがって、アプリケーション開発者は、このような出力メディアオブジェクトを効率的に記憶するために、メディアオブジェクトをDMネットワークによる処理用の適切なフォーマットに変換することにも、DMネットワークによる処理後にメディアオブジェクトを変換して戻すことにも関与する必要がない。
これらコンピュータ実行可能プログラムは、コンピュータ化システムによって実行可能であり、コンピュータ化システムには、コンピュータ又はコンピュータのネットワークが含まれる。
コンピュータ化システムの例には、1つ若しくは複数のデスクトップコンピュータ、1つ若しくは複数のラップトップコンピュータ、1つ若しくは複数のメインフレームコンピュータ、1つ若しくは複数のネットワーク化コンピュータ、1つ若しくは複数のプロセッサベースのデバイス、又は同様の任意のタイプのシステム及びデバイスが含まれるが、これらに限定されるものではない。
図6は、図5の階層500を実施するためのプラットフォームとして使用されるように作動可能なコンピュータ化システム600のブロック図を示している。
より高度なコンピュータ化システムが使用されるように作動可能であることが理解されるべきである。
さらに、コンピュータ化システム600にコンポーネントを追加し又はコンピュータ化システム600からコンポーネントを除去して、所望の機能を提供することもできる。
したがって、コンピュータ化システム600は、Intel、Motorola、AMD、及びCyrixからのプロセッサ等、複数のコンピュータプロセッサの任意のものの1つ又は複数のシングルコアプロセッサ又はマルチコアプロセッサを含む。
本明細書で参照されるように、コンピュータプロセッサは、中央処理装置(CPU)又は他の任意の多目的プロセッサ若しくは多目的マイクロプロセッサ等の汎用プロセッサとすることができる。
また、コンピュータプロセッサは、グラフィックス処理装置(GPU)、オーディオプロセッサ、デジタル信号プロセッサ、1つ又は複数の処理目的に専用化された別のプロセッサ等の専用プロセッサとすることもできる。
プロセッサ602からのコマンド及びデータは、通信バス604により通信される。コンピュータシステム600は、ソフトウェアがランタイム中に常駐するメインメモリ606、及び2次メモリ608も含む。
2次メモリ608は、階層500の1つ又は複数のコンポーネントを実施するソフトウェアプログラム、アプリケーション、又はモジュールを記憶するのに使用することができるCRMとすることもできる。
メインメモリ606及び2次メモリ608には、それぞれ、たとえば、ハードディスクドライブ、及び/又は、フロッピー(登録商標)ディスケットドライブ、磁気テープドライブ、コンパクトディスクドライブ等を表す着脱可能ストレージドライブ、若しくはソフトウェアのコピーが記憶される不揮発性メモリが含まれる。
一例では、2次メモリ608には、ROM(読み出し専用メモリ)、EPROM(消去可能プログラマブルROM)、EEPROM(電気的消去可能プログラマブルROM)、又はプロセッサ若しくは処理ユニットにコンピュータ可読命令を提供することができる他の任意の電子的な、光学的な、磁気的な、若しくは他のストレージデバイス若しくは伝送デバイスも含まれる。
コンピュータシステム600は、ディスプレイ614及びユーザインターフェースを含む。ユーザインターフェースは、キーボード、マウス、スタイラス等の1つ又は複数の入力デバイス612を備える。
しかしながら、入力デバイス612及びディスプレイ614はオプションである。ネットワークインタフェース610は、他のコンピュータシステムとの通信用に設けられる。
したがって、ミドルウェアフレームワークは、マルチプロセッシング環境で作動することができる。
一実施形態では、スレッドの個数は、プロセッサの個数に等しくなるように設定される。
別の実施形態では、特に、スレッドを計算モジュールの内部で阻止することができるときは、スレッドの個数は、プロセッサの個数よりも多い。
一方、アプリケーションのデバッグ中は、実行スレッドを容易に追跡することができるように、単一の実行スレッドを使用することが極めて有益である。
本明細書で使用された説明及び図という用語は、例示としてのみ述べられ、限定を意図するものではない。
当業者は、主題の趣旨及び範囲内において多くの変形が可能であることを認識するであろう。
主題は、以下の特許請求の範囲及びその均等物によって確定されるように意図されている。
特許請求の範囲において、すべての用語は、別段の指定がない限り、その最も広い合理的な意味に意図されている。
320・・・信号フォーマット,
510・・・アプリケーション,
520・・・コンポーネントライブラリ,
530・・・フレームワークカーネル,
540・・・抽象レイヤ,
550・・・ネイティブオペレーティングシステム,
602・・・プロセッサ,
604・・・通信バス,
606・・・メインメモリ,
608・・・2次メモリ,
610・・・ネットワークインタフェース,
612・・・入力デバイス,
614・・・ディスプレイ
Claims (10)
- 複数の処理ユニットを有するマルチプロセッシング環境において所望のアプリケーションを開発するためのミドルウェアフレームワークを提供する方法であって、
前記所望のアプリケーションを開発するための複数のタスクモジュールの選択を受け取ること(130)と、
前記選択されたタスクモジュール間の接続を受け取ること(130)であって、前記所望のアプリケーションを形成する、前記選択されたタスクモジュール間の接続を受け取ること(130)と、
前記形成されたアプリケーションを通じて処理するための複数の実行スレッドの入力を受け取ること(130)と、
前記複数の実行スレッドの前記ミドルウェアフレームワーク全体にわたる自動グローバルスケジューリングを提供すること(140)であって、少なくとも、
前記複数の実行スレッドの少なくとも1つによる実行用の少なくとも1つのジョブのジョブリストを提供すること(141)であって、前記少なくとも1つのジョブのそれぞれは、前記選択されたタスクモジュールの関連付けられるものによる1つまたは複数のデータオブジェクトの処理である、少なくとも1つのジョブのジョブリストを提供すること(141)と、
少なくとも1つの所定のポリシーに基づいて、前記複数の実行スレッドの1つによる前記ジョブリストの各ジョブの実行を自動的にスケジューリングすること(142)と
による自動グローバルスケジューリングを提供すること(140)と
を含む方法。 - 前記形成されたアプリケーションのグラフネットワーク表現を表示すること(140)であって、前記選択されたタスクモジュール、前記タスクモジュール間の前記受け取った接続、および、前記形成されたアプリケーションのスループット統計量およびレイテンシの一方を示す、前記形成されたアプリケーションのグラフネットワーク表現を表示すること(140)
をさらに含む請求項1に記載の方法。 - 前記複数の実行スレッドの1つによる実行用にスケジューリングされた前記少なくとも1つのジョブは、複数のジョブを含み(142)、
前記方法は、前記スケジューリングに基づいて、前記1つの実行スレッドが、前記選択されたタスクモジュールの少なくとも2つにおいて、および、前記複数の処理ユニットの少なくとも2つにわたり、前記複数のジョブを自動的に実行すること
をさらに含む請求項1に記載の方法。 - 前記少なくとも1つの所定のポリシーは、前記ジョブのそれぞれに関連付けられる前記1つまたは複数のデータオブジェクトのそれぞれで見つけられる優先順位表示に基づいている
請求項1に記載の方法。 - 前記データオブジェクトのそれぞれの前記優先順位表示は、
a)前記データオブジェクトのそれぞれのタイムスタンプ、および、
b)前記データオブジェクトのそれぞれがその子孫である最も初期のデータオブジェクトのタイムスタンプ
の一方を含む請求項4に記載の方法。 - 前記少なくとも1つの所定のポリシーは、
a)前記ジョブリストに実行用にスケジューリングされるジョブに関連付けられる前記選択されたタスクモジュールの1つのタスクのタイプ、
b)前記複数の実行スレッドの1つを実行している前記複数の処理ユニットの1つの識別情報、
c)前記ジョブリストのジョブを最後に遂行した前記選択されたタスクモジュールの1つの識別情報、および
d)前記ジョブリストのジョブが、遂行される前記ジョブに望ましい前記データオブジェクトの利用可能な1つまたは複数を有するとの判断
の1つに基づいている
請求項1に記載の方法。 - 前記少なくとも1つの所定のポリシーは、前記選択されたタスクモジュールのうち他のいくつが、前記ジョブのそれぞれに関連付けられている前記選択されたタスクモジュールの出力に依存しているのかに基づいている
請求項1に記載の方法。 - 前記ジョブリストを提供することは、
a)前記選択されたタスクモジュールの1つが、処理用に少なくとも1つのデータオブジェクトを受け取ることと、
b)前記選択されたタスクモジュールの1つが、少なくとも1つのデータオブジェクトの生成を望むソースモジュールであることと
の1つに応答して、前記ジョブリストに各ジョブを動的に生成することと
を含む請求項1に記載の方法。 - 複数の処理ユニットを有するマルチプロセッシングプラットフォーム上で所望のアプリケーションを開発するための、コンピュータ可読媒体のプログラムコードとしてコード化されるミドルウェアフレームワークであって、
前記所望のアプリケーションを構築し動作させるためのタスクモジュール及びメディアオブジェクトを生成する、前記コンピュータ可読媒体のプログラムコードとしてコード化されるフレームワークカーネル(530)であって、
前記フレームワークカーネルは、
グローバルスケジューラであって、前記フレームワークカーネルが、前記ミドルウェアフレームワーク全体にわたる複数の実行スレッドの自動グローバルスケジューリングを提供して、前記グローバルスケジューラによって保持されるジョブのリストおよび少なくとも1つの所定のポリシーに基づき前記生成されたタスクモジュールを通じて前記生成されたメディアオブジェクトを処理するために、前記プログラムコードの一部としてコード化され、前記ジョブのそれぞれは、前記生成されたタスクモジュールの関連付けられる1つによる1つまたは複数のデータオブジェクトの処理である、グローバルスケジューラ
を含むフレームワークカーネル(530)と、
前記フレームワークカーネルを前記マルチプロセッシングプラットフォームから隔離して前記フレームワークカーネルをプラットフォームから独立した状態にする、前記コンピュータ可読媒体のプログラムコードとしてコード化される抽象レイヤ(540)と
を備えるミドルウェアフレームワーク。 - 複数の処理ユニットを有するマルチプロセッシング環境において所望のアプリケーションを構築するためのミドルウェアフレームワークを提供するためのプログラムコードがコード化されるコンピュータ可読媒体であって、
前記所望のアプリケーションを構築するための複数のタスクモジュールの選択を受け取る(130)ためのプログラムコードと、
前記選択されたタスクモジュール間の接続を受け取る(130)ためのプログラムコードであって、前記所望のアプリケーションを形成する、前記選択されたタスクモジュール間の接続を受け取る(130)ためのプログラムコードと、
前記形成されたアプリケーションを通じて処理するための複数の実行スレッドの入力を受け取る(130)ためのプログラムコードと、
前記複数の実行スレッドの前記ミドルウェアフレームワーク全体にわたる自動グローバルスケジューリングを提供する(140)ためのプログラムコードであって、少なくとも、
前記複数の実行スレッドの少なくとも1つによる実行用の少なくとも1つのジョブのジョブリストを提供する(141)ためのプログラムコードであって、前記少なくとも1つのジョブのそれぞれは、前記選択されたタスクモジュールの関連付けられるものによる1つまたは複数のデータオブジェクトの処理である、少なくとも1つのジョブのジョブリストを提供する(141)ためのプログラムコードと、
少なくとも1つの所定のポリシーに基づいて、前記複数の実行スレッドの1つによる前記ジョブリストの各ジョブの実行を自動的にスケジューリングする(142)ためのプログラムコードと、
を有することによる、自動グローバルスケジューリングを提供する(140)ためのプログラムコードと
を含むコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/590,125 US20080120592A1 (en) | 2006-10-31 | 2006-10-31 | Middleware framework |
PCT/US2007/022908 WO2008054740A1 (en) | 2006-10-31 | 2007-10-30 | Middleware framework |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010508574A true JP2010508574A (ja) | 2010-03-18 |
JP2010508574A5 JP2010508574A5 (ja) | 2012-10-18 |
Family
ID=39344590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009534701A Pending JP2010508574A (ja) | 2006-10-31 | 2007-10-30 | ミドルウェアフレームワーク |
Country Status (5)
Country | Link |
---|---|
US (1) | US20080120592A1 (ja) |
EP (1) | EP2078249A4 (ja) |
JP (1) | JP2010508574A (ja) |
CN (1) | CN101535953A (ja) |
WO (1) | WO2008054740A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110914812A (zh) * | 2017-05-15 | 2020-03-24 | 奥特瑞克斯股份有限公司 | 用于高速缓存优化和高效处理的数据聚合方法 |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100287010A1 (en) * | 2006-09-19 | 2010-11-11 | International Business Machines Corporation | System, method and program for managing disaster recovery |
EP2310952A4 (en) * | 2008-07-01 | 2014-09-03 | S K Nandy | PROCESS AND CHIP SYSTEM (SOC) FOR CUSTOMIZING A CONVERTIBLE HARDWARE FOR ONE TIME APPLICATION |
US7890644B2 (en) | 2009-01-07 | 2011-02-15 | Sony Corporation | Parallel tasking application framework |
EP2282264A1 (en) * | 2009-07-24 | 2011-02-09 | ProximusDA GmbH | Scheduling and communication in computing systems |
US10721269B1 (en) | 2009-11-06 | 2020-07-21 | F5 Networks, Inc. | Methods and system for returning requests with javascript for clients before passing a request to a server |
US8643655B2 (en) * | 2009-11-12 | 2014-02-04 | Nvidia Corporation | Method and system for communicating with external device through processing unit in graphics system |
US8336056B1 (en) | 2009-12-22 | 2012-12-18 | Gadir Omar M A | Multi-threaded system for data management |
US7970884B1 (en) * | 2010-01-08 | 2011-06-28 | International Business Machines Corporation | Distribution of intermediate data in a multistage computer application |
US8707274B2 (en) * | 2010-04-09 | 2014-04-22 | AppFirst, Inc. | System and method for information extraction from within an active application during execution |
US9503375B1 (en) | 2010-06-30 | 2016-11-22 | F5 Networks, Inc. | Methods for managing traffic in a multi-service environment and devices thereof |
US9420049B1 (en) | 2010-06-30 | 2016-08-16 | F5 Networks, Inc. | Client side human user indicator |
US8621445B2 (en) * | 2010-12-06 | 2013-12-31 | Visualon, Inc. | Wrapper for porting a media framework and components to operate with another media framework |
WO2012158854A1 (en) | 2011-05-16 | 2012-11-22 | F5 Networks, Inc. | A method for load balancing of requests' processing of diameter servers |
US8954492B1 (en) | 2011-11-30 | 2015-02-10 | F5 Networks, Inc. | Methods for inlining content externally referenced in a web page prior to providing the web page to a requestor and devices thereof |
US10230566B1 (en) | 2012-02-17 | 2019-03-12 | F5 Networks, Inc. | Methods for dynamically constructing a service principal name and devices thereof |
US9020912B1 (en) | 2012-02-20 | 2015-04-28 | F5 Networks, Inc. | Methods for accessing data in a compressed file system and devices thereof |
US9338061B2 (en) * | 2012-04-26 | 2016-05-10 | Hewlett Packard Enterprise Development Lp | Open station as a stream analysis operator container |
US10097616B2 (en) | 2012-04-27 | 2018-10-09 | F5 Networks, Inc. | Methods for optimizing service of content requests and devices thereof |
US8850267B2 (en) | 2012-08-02 | 2014-09-30 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Middleware for multiprocessor software testing |
US10033837B1 (en) | 2012-09-29 | 2018-07-24 | F5 Networks, Inc. | System and method for utilizing a data reducing module for dictionary compression of encoded data |
US9578090B1 (en) | 2012-11-07 | 2017-02-21 | F5 Networks, Inc. | Methods for provisioning application delivery service and devices thereof |
US9497614B1 (en) | 2013-02-28 | 2016-11-15 | F5 Networks, Inc. | National traffic steering device for a better control of a specific wireless/LTE network |
US10187317B1 (en) | 2013-11-15 | 2019-01-22 | F5 Networks, Inc. | Methods for traffic rate control and devices thereof |
US9912562B2 (en) * | 2014-03-31 | 2018-03-06 | Microsoft Technology Licensing, Llc | Measuring latency in an interactive application |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US9940112B2 (en) | 2014-11-06 | 2018-04-10 | Capgemini Technology Services India Limited | Efficient framework for deploying middleware services |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US10505818B1 (en) | 2015-05-05 | 2019-12-10 | F5 Networks. Inc. | Methods for analyzing and load balancing based on server health and devices thereof |
US11350254B1 (en) | 2015-05-05 | 2022-05-31 | F5, Inc. | Methods for enforcing compliance policies and devices thereof |
US9823949B2 (en) | 2015-06-29 | 2017-11-21 | Genesys Telecommunications Laboratories, Inc. | System and method for intelligent task management and routing |
US9674361B2 (en) | 2015-06-29 | 2017-06-06 | Genesys Telecommunications Laboratories, Inc. | System and method for intelligent task management in a workbin |
US11757946B1 (en) | 2015-12-22 | 2023-09-12 | F5, Inc. | Methods for analyzing network traffic and enforcing network policies and devices thereof |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US11178150B1 (en) | 2016-01-20 | 2021-11-16 | F5 Networks, Inc. | Methods for enforcing access control list based on managed application and devices thereof |
EP3440817B1 (en) * | 2016-04-06 | 2022-06-22 | Karamba Security | Automated security policy generation for controllers |
US11063758B1 (en) | 2016-11-01 | 2021-07-13 | F5 Networks, Inc. | Methods for facilitating cipher selection and devices thereof |
US10505792B1 (en) | 2016-11-02 | 2019-12-10 | F5 Networks, Inc. | Methods for facilitating network traffic analytics and devices thereof |
US10812266B1 (en) | 2017-03-17 | 2020-10-20 | F5 Networks, Inc. | Methods for managing security tokens based on security violations and devices thereof |
US11122042B1 (en) | 2017-05-12 | 2021-09-14 | F5 Networks, Inc. | Methods for dynamically managing user access control and devices thereof |
US11343237B1 (en) | 2017-05-12 | 2022-05-24 | F5, Inc. | Methods for managing a federated identity environment using security and access control data and devices thereof |
CN107181805B (zh) * | 2017-05-26 | 2019-11-12 | 上交所技术有限责任公司 | 一种在微服务架构下实现全局有序重演的方法 |
US20200264921A1 (en) * | 2019-02-20 | 2020-08-20 | Nanjing Iluvatar CoreX Technology Co., Ltd. (DBA "Iluvatar CoreX Inc. Nanjing") | Crypto engine and scheduling method for vector unit |
CN113381912B (zh) * | 2021-06-11 | 2022-06-10 | 哈尔滨工业大学 | 一种自适应高并发拓扑测量系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003029988A (ja) * | 2001-07-13 | 2003-01-31 | Nec Corp | タスクスケジューリングシステムおよび方法、プログラム |
JP2004220093A (ja) * | 2003-01-09 | 2004-08-05 | Toshiba Corp | プロセッサ、実行タスク決定装置及び演算処理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
-
2006
- 2006-10-31 US US11/590,125 patent/US20080120592A1/en not_active Abandoned
-
2007
- 2007-10-30 EP EP07853030A patent/EP2078249A4/en not_active Withdrawn
- 2007-10-30 CN CNA2007800407834A patent/CN101535953A/zh active Pending
- 2007-10-30 JP JP2009534701A patent/JP2010508574A/ja active Pending
- 2007-10-30 WO PCT/US2007/022908 patent/WO2008054740A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003029988A (ja) * | 2001-07-13 | 2003-01-31 | Nec Corp | タスクスケジューリングシステムおよび方法、プログラム |
JP2004220093A (ja) * | 2003-01-09 | 2004-08-05 | Toshiba Corp | プロセッサ、実行タスク決定装置及び演算処理方法 |
Non-Patent Citations (2)
Title |
---|
JPN6012008410; Tanguay,D, et al: 'Nizza: A Framework for Developing Real-time Streaming Multimedia' HP Technical Reports HPL-2004-132, 20040802, 全9頁(ページ番号なし), HP Laboratories * |
JPN7012000593; Arisona, S.M., et al: 'A Real-Time Multimedia Composition Layer' AMCMM '06 Proceedings of the 1st ACM workshop on Audio and music computing multimedia , 20061027, 全9頁(ページ番号なし), ACM * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110914812A (zh) * | 2017-05-15 | 2020-03-24 | 奥特瑞克斯股份有限公司 | 用于高速缓存优化和高效处理的数据聚合方法 |
JP2020521238A (ja) * | 2017-05-15 | 2020-07-16 | アルテリックス インコーポレイテッド | キャッシュ最適化及び効率的な処理のためのデータ集約の方法 |
JP7038740B2 (ja) | 2017-05-15 | 2022-03-18 | アルテリックス インコーポレイテッド | キャッシュ最適化及び効率的な処理のためのデータ集約の方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2078249A4 (en) | 2009-11-11 |
CN101535953A (zh) | 2009-09-16 |
US20080120592A1 (en) | 2008-05-22 |
EP2078249A1 (en) | 2009-07-15 |
WO2008054740A1 (en) | 2008-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010508574A (ja) | ミドルウェアフレームワーク | |
Lugaresi et al. | Mediapipe: A framework for building perception pipelines | |
Rossbach et al. | PTask: operating system abstractions to manage GPUs as compute devices | |
US9996394B2 (en) | Scheduling accelerator tasks on accelerators using graphs | |
US9317331B1 (en) | Interactive scheduling of an application on a multi-core target processor from a co-simulation design environment | |
US8789017B2 (en) | System and method for using stream objects to perform stream processing in a text-based computing environment | |
US20060112377A1 (en) | Phantom serializing compiler and method of operation of same | |
US20140331092A1 (en) | Activity based sampling of diagnostics data | |
Muller et al. | Competitive parallelism: Getting your priorities right | |
Liu | Simulus: easy breezy simulation in python | |
Skelin et al. | Model checking of finite-state machine-based scenario-aware dataflow using timed automata | |
Tanguay et al. | Nizza: A framework for developing real-time streaming multimedia applications | |
Rafique et al. | Generating efficient parallel code from the rvc-cal dataflow language | |
Edwards | Design languages for embedded systems | |
Arras et al. | Dkpn: A composite dataflow/kahn process networks execution model | |
Khammassi et al. | Mhpm: Multi-scale hybrid programming model: A flexible parallelization methodology | |
Paulin et al. | MPSoC Platform Mapping Tools for Data-Dominated Applications................................ andMichelMetzger | |
Currey et al. | Supporting iteration in a heterogeneous dataflow engine | |
Rehg et al. | Space-time memory: A parallel programming abstraction for dynamic vision applications | |
Gupta et al. | RELIEF: Relieving Memory Pressure In SoCs Via Data Movement-Aware Accelerator Scheduling | |
Wang et al. | CAT: Context Aware Tracing for Rust Asynchronous Programs | |
Li et al. | Scheduling and allocation of single-chip multiprocessors for multimedia | |
Raman | A System for Flexible Parallel Execution | |
Kabrick et al. | DEMAC and CODIR: A whole stack solution for a HW/SW co-design using an MLIR Codelet model dialect | |
Khatib | Modeling and scheduling embedded real-time systems using Synchronous Data Flow Graphs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120217 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120511 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120604 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120824 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20120824 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120918 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121113 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20121218 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20130118 |