[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2010508574A - ミドルウェアフレームワーク - Google Patents

ミドルウェアフレームワーク Download PDF

Info

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
Application number
JP2009534701A
Other languages
English (en)
Other versions
JP2010508574A5 (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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2010508574A publication Critical patent/JP2010508574A/ja
Publication of JP2010508574A5 publication Critical patent/JP2010508574A5/ja
Pending legal-status Critical Current

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling 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つのタイプの課題を克服しなければならない。
実施形態が、以下の図(複数可)に、限定ではなく例として示される。
図において、同様の符号は、同様の要素を示す。
本発明の一実施形態によるソフトウェア開発の方法論を示す。 本発明の一実施形態によるグローバルスケジューラのオペレーションを示す。 本発明の一実施形態によるアプリケーションのデータフロー解析のプロセスフローを示す。 本発明の一実施形態によるミドルウェアフレームワークにおけるアプリケーションの分解を示す。 本発明の一実施形態によるミドルウェアフレームワークにおけるアプリケーションの組み立てを示す。 本発明の一実施形態によるミドルウェアフレームワークにおけるアプリケーションのランタイムの管理を示す。 本発明の一実施形態による、データフローミドルウェアフレームワークを使用して所望のアプリケーションを構築する一例を示す。 本発明の一実施形態によるデータフローミドルウェアフレームワークの実施階層を示す。 本発明の一実施形態によるデータフローミドルウェアフレームワークを実施するためのコンピュータ化システム600のブロック図を示す。
簡単にするために且つ例示を目的として、実施形態の例を主に参照することによって、実施形態の原理が説明される。
以下の説明では、実施形態の徹底した理解を提供するために、多数の具体的な詳細が述べられる。
しかしながら、これらの具体的な詳細に限定されることなく実施形態を実施することができることが、当業者には明らかであろう。
それ以外の場合には、実施形態を不必要に不明瞭にしないように、周知の方法及び構造は詳細に説明されていない。
リアルタイムのマルチメディアアプリケーション又は他の複雑なアプリケーションの開発を、オペレーティングシステムの依存関係を抽象化し、頻繁に使用されるコンポーネントの最適化された実施を提供するミドルウェアフレームワークの使用によって大きく加速することができる。
したがって、本明細書では、このようなミドルウェアフレームワークの方法及びシステムが説明される。
本発明の一実施形態では、ソフトウェアの設計及び構築を簡単にしてソフトウェア開発時間を減少させることにより、マルチメディアアプリケーション等の複雑なアプリケーションのソフトウェア設計を改良するように作動可能なマルチプラットフォームソフトウェアフレームワークであるデータフローミドルウェア(DM)フレームワークが提供される。
さらに、このミドルウェアフレームワークは、リアルタイム又はオフラインのいずれにおいてもランタイム中の複雑なオペレーションを効率的にサポートするように作動可能である。
DMフレームワークの使用に対する従来のほとんどの解決法は、シングルスレッド又はスレッド毎モジュール(thread-per-module)であり、メディアパイプラインのマルチスレッド実行用のグローバルスケジューラを使用することはない。
シングルスレッドの解決法では、従来のフレームワークは、モジュール性の利益を達成するが、モジュールの実行を並列に行うことができないので、性能は低い。
スレッド毎モジュール解決法では、アプリケーションは、並列実行を使用する。
しかしながら、アプリケーションモジュールは、オーバーフローの状況及びスタベーション(starvation)の状況に個別に反応しなければならず、メディアのドロップ又はモジュールの動作速度の調整をいつ行うのかをローカルに決定しなければならない。
したがって、本発明の少なくとも1つの実施形態は、アプリケーションの性能を犠牲にすることなく、アプリケーションソフトウェアの簡単化したモジュール形式のデータフロースタイル設計を提供しようとするものである。
データフロー設計では、アプリケーションは、有向アークによって互いにリンクされた機能モジュールの接続ネットワークである。
データフロー設計は、モジュール性が複雑性を低減し、アークがデータのストリームを表し、アークが複数のデータフォーマットを送信することができるので、ストリーミングマルチメディアアプリケーション等の複雑なアプリケーションを表すのによく適している。
本発明の別の実施形態では、マルチコアプロセッサ内に又は複数のマルチコアプロセッサ全体にわたって複数のプロセッサを有するマルチプロセッシング環境全体にわたりアプリケーションタスクの並列実行を自動化又は組織化するグローバルスケジューラを含むミドルウェアフレームワークが提供される。
本明細書で参照されるように、処理ユニットは、単一のプロセッサ又はマルチコアプロセッサの1つのコアである。
したがって、複数のプロセッサ、マルチコアプロセッサ、又は複数のマルチコアプロセッサを有する環境は、複数の処理ユニットを有することになる。
アプリケーション開発者が直面することが多い上述した課題のうち最初の3つのものは、特に現代のオブジェクト指向型プログラミング言語の助けを借りることによって克服することが可能であるが、リアルタイム処理の第4の課題は、はるかに困難である。
したがって、どのアプリケーションも、オーバーパワーマシン(over-powered machine)上では常に応答するが(たとえば、サーバクラスのマシンを使用するウェブカメラビデオキャプチャ)、本発明の1つ又は複数の実施形態は、マシンの資源が限られていても、マシンのマルチプロセッシング能力を利用してアプリケーションの性能を達成しようとする。
本発明の別の実施形態によれば、アルゴリズム(たとえば、ビデオ処理又は解析)をランタイムシステム(たとえば、マルチスレッド化、同期)から隔離することにより、DMフレームワークが、アプリケーションソフトウェアを設計してコーディングするのに用いられる。
これによって、アプリケーション開発者は、手元のアプリケーションに特有のアルゴリズム処理に集中することが可能になると同時に、そのフレームワークを利用して、アプリケーション開発者が直面することが多い上述した課題を克服することが可能になる。
加えて、このようなDMフレームワークは、(メンテナンスを簡単にする)改良された記述性及び可読性、他者の作業を利用するコード再利用、デバッグを簡単にし、且つソフトウェアロバスト性を確保するより良い試験方法論、及び他のプラットフォームへの増大された移植性のような他のソフトウェアエンジニアリングの利益も提供する。
方法論
データフローパラダイムに基づく本発明の実施形態では、アプリケーションからのデータは、DMフレームワークの計算モジュールの有向グラフをフローする。
したがって、このパラダイムでアプリケーションを作成、構築、又は開発するために、次のフェーズ、すなわち、(1)信号及びそれらの信号に対する処理フェーズを決定するアプリケーションのデータフロー解析、(2)アプリケーションの、メディア表現及び処理モジュールへの分解、(3)モジュールの有向グラフネットワークへの組み立て、並びに(4)アプリケーショングラフネットワークのランタイム管理を含むソフトウェア開発の方法論が採用される。
図1Aは、上述した方法論100を示している。この方法論100は、DMフレームワークがこの方法論を援助するためにどのように作動可能であるのかに関して以下でさらに詳細に説明される。
110において、ストリーミングメディアアプリケーション等、構築又は開発される対象アプリケーションのデータフロー解析が行われる。
対象アプリケーションは、そのプロトタイプであってもよいし、テストフェーズであってもよく、アプリケーション開発者は、対象アプリケーションを完成させるために、さらなる修正又は高度化のためのアプリケーションのさらなる解析を望んでいる。
図2は、フェーズ110の詳細を示している。フェーズ110は、アプリケーション開発者が行うことができる。任意のアプリケーションの基本的な情報コンテンツは、時間と共に進展するデータ信号(たとえば、オーディオ又はビデオ)である。
したがって、210において、アプリケーションのデータフロー解析を行うために、アプリケーション開発者は、最初に、アプリケーションに供給を行う1つ又は複数の信号ソース(たとえば、マイクロホン、カメラ、又はファイル)を識別する。
次に、220において、アプリケーション開発者は、各信号が、信号ソースにおいて発生してからアプリケーションを通って進行する時に、各信号の所望の変換パスをたどる。
この変換パスに沿った各識別可能な信号フォーマット間で、信号は、異なった処理フェーズにかけられる。
たとえば、オーディオ信号は、マイクロホンソースにおいてPCMフォーマットで発生し、次に、ADPCMへの変化を受け、次に、UDPパケットへの変換を受ける場合がある。
この例では、圧縮ステージが、PCMフォーマットとADPCMフォーマットとの間に位置し、ネットワークパケット化ステージが、ADPCMフォーマットとUDPフォーマットとの間に位置する。
信号の変換は、信号のフォーマットを変更しない処理ステージ中に行われる場合もある。
たとえば、色補正ステージは、その画像入力と同じフォーマットを有するが、画像の内部に修正されたデータを有する画像出力を生成する場合がある。
したがって、230において、各信号をこの方法で解析することによって、アプリケーション開発者は、アプリケーションの信号フォーマット及び異なる処理フェーズの双方を識別することができる。
図1Aを再び参照して、方法論100の次のフェーズは、120におけるアプリケーション項目別分類である。
このアプリケーション項目別分類では、アプリケーション開発者は、データフロー解析に基づいて、構築されるアプリケーションをその構成要素又はコンポーネントにブレークダウンする。
これよりも先に識別された信号フォーマットは、メディアタイプであり、これよりも先に識別された処理フェーズは、それらのメディアタイプを処理する。
一実施形態では、DMフレームワークは、この項目別分類フェーズをサポートする3つの抽象化、すなわち、メディアオブジェクト、タスクオブジェクト、及びジョブを提供する。
本明細書で参照されるように、メディアオブジェクトは、基本データ単位であり、各単位は、特定のメディアタイプを有する。
各メディアオブジェクトは、マルチメディアアプリケーションにおけるストリームベースの信号等、任意のタイプのデータ信号とすることができる。
ストリームベースの信号の例には、オーディオストリーム、ビデオストリーム、及び一連の画像のそれぞれにおける顔の2次元(2D)座標のストリームが含まれるが、これらに限定されるものではない。
これとは対照的に、本明細書で参照されるように、タスクオブジェクトは、基本処理単位である。
各タスクオブジェクトは、1つ若しくは複数のメディアオブジェクトを受け取るための入力をゼロ個以上、1つ若しくは複数のメディアオブジェクトを1つ若しくは複数の他のタスクオブジェクトへ送出するための出力をゼロ個以上、又は1つ若しくは複数のメディアオブジェクトを受け取り且つ送るための入力若しくは出力を少なくとも1つ有する。
少なくとも1つの出力を有するが入力を有しないタスクオブジェクトは、後に説明するプロダクションタスクモジュール等のメディアオブジェクト(複数可)のソースとして機能するソースタスクオブジェクトである。
少なくとも1つの入力を有するが出力を有しないタスクオブジェクトは、任意の入力メディアオブジェクトの終端点として機能するシンクタスクオブジェクトである。
たとえば、シンクタスクオブジェクトは、メディアオブジェクトをフレームワークの他のタスクオブジェクトへ送出しないので、出力を有しない。
その代わり、ファイルシンクタスクオブジェクト等のシンクタスクオブジェクトは、結果としてのメディアオブジェクト(複数可)をストレージ媒体に書き込むこともできるし、ネットワークタスクオブジェクト等のシンクタスクオブジェクトは、ネットワーク全体にわたって結果としてのメディアオブジェクト(複数可)を送信することもできる。
タスクオブジェクトは、ビデオ圧縮、ビデオ伸張、顔認識等の任意のタイプのメディア計算とすることができる。
タスクオブジェクトは、カメラからの画像取り込み、又はコンピュータサウンドカード及びスピーカによるオーディオ再生等のI/Oプロセスによるメディアの生成又は消費も含むことができる。
また、本明細書で参照されるように、ジョブは、このようなジョブに関連付けられるタスクオブジェクトによる1つ又は複数の必要なメディアオブジェクト(複数可)の処理である。
したがって、1つ又は複数のジョブを特定のタスク及び特定のメディアオブジェクト(複数可)に関連付けることができる。
さらに、複数のジョブを単一のタスクオブジェクトにより、タスクオブジェクトのタイプに応じて経時的にシーケンシャルに又は同時に処理することができる。
一意の信号フォーマットごとに、アプリケーション開発者は、タイムスタンプ記録、メモリ管理、及び自動シリアライズ(automatic serialization)のような振る舞いをオブジェクト指向型プログラミングのMedia(メディア)基底クラスから継承するメディアオブジェクトの個別のメディアタイプを定義することができる。
同様に、処理フェーズごとに、開発者は、DMフレームワークですでに利用可能な所定のタスクモジュールを使用することもできるし、DMフレームワークにおけるオブジェクト指向型プログラミングの所定のTask(タスク)基底クラスの振る舞いを継承する新しいタスクモジュールを定義することもできる。
したがって、各タスクモジュールは、0個以上の入力ピン、0個以上の出力ピン、又は対応するタスクオブジェクトの入力(複数可)及び出力(複数可)に対応する少なくとも1つの入力ピン若しくは少なくとも1つの出力ピンを有する。
タスクモジュールの継承可能な振る舞いには、入出力(I/O)バッファ管理並びにマルチスレッド実行及びマルチスレッド同期が含まれる。
各タスクモジュールの内部のコードは、入力から出力へのアルゴリズム的マッピング(algorithmic mapping)であり、DMフレームワークを単に使用することから可能になるスレッド化問題又は同期問題からは隔離されている。
図1Aを再び参照して、ここで、メディアオブジェクト及びタスクオブジェクト並びに関連付けられるジョブはアプリケーション構築ブロックである。
したがって、130において、アプリケーション開発者は、アプリケーションの構成要素又はコンポーネントの組み立てを通じて、構築されるアプリケーションを形成することができる。
ここで、アプリケーション開発者は、多くのタスクモジュール(それぞれはタスクを表す)を互いに接続して、処理グラフネットワークを形成し、DMフレームワークに、アプリケーション又は処理グラフネットワークの1つ又は複数のジョブの実行又は遂行の1つ又は複数のフレームワークスレッド(以下、「実行スレッド」としても参照する)を要求する。
各接続は、特定のメディアタイプの一方向転送であり、メディアストリームを表す。
すべてのタスクピンが接続されているという条件で、アプリケーションは、メディアオブジェクトを作成するプロダクションタスクをトリガすることによって処理グラフネットワークを開始することができる。
メディアオブジェクトの各プロダクションの後、プロダクションタスクは、自身をトリガして、次のメディアオブジェクトを作成することができる。
各メディアオブジェクトは、メディアプロダクションタスクモジュールから処理ネットワーク又はグラフの残りの部分へフローし、さらに、実行スレッドに基づいて、アプリケーションにおけるタスクの残りの部分の消費、プロダクション、又は処理振る舞いをトリガする。
一実施形態によれば、DMフレームワークは、メディアオブジェクト内のメディアバッファの再利用を最適化する内部メモリマネージャも含む。後に、後述するようにDMフレームワークの一部であるグラフィカルディスプレイプログラムが、グラフに関連付けられるジョブの実行をフレームワークスレッドにホルト(halt)させる停止コマンドを発行することができる。
いくつかの実施形態では、停止コマンドは、ジョブ実行のホルトが効力を有する前に、現在スケジューリングされているすべてのジョブを実行させる。
グラフを停止することによって、タスクモジュールの内部データ状態が保持される。
動的アプリケーションでは、まずグラフを停止し、次に、タスクモジュールを追加又は除去し、次に、新しいグラフ及び除去されなかった任意のタスクモジュールの内部データ状態でアプリケーションを継続する開始コマンドを発行することによって、タスクをグラフに追加し又はタスクをグラフから除去することができる。
代替的に、グラフィカルディスプレイプログラムは、破棄コマンドを発行することもできる。
この破棄コマンドは、グラフ内のすべてのTaskを再帰的に破棄する。
DMフレームワークの上述したコマンドは、グラフィカルディスプレイプログラムを通じて利用可能とすることができるフレームワークコマンドに関して説明されているが、フレームワークコマンドは、グラフィカルディスプレイプログラムの外部で利用可能なメカニズム又はコマンドを通じて、DMフレームワーク内で自動的に又はDMフレームワークへのユーザ入力によって手動で、DMフレームワークに発行することができることが理解されるべきである。
他の多くのアーキテクチャとは異なり、DMフレームワークは、閉路を含む任意のグラフトポロジーをサポートする。
閉路は、フィードバックループを有するあらゆるアプリケーションで重要である。たとえば、ディスプレイタスクモジュールからのマウスの動きによって、別のタスクモジュールにおける新規なビュー合成の視点を求めることができ、この別のタスクは、次に、新しい画像をディスプレイタスクモジュールへ送信することができる。
メディアストリームのタイプについて一致するために、2つの接続されたタスクモジュールは、メディアタイプを交渉しなければならない場合がある。
たとえば、一般化されたUDP Taskは、任意のメディアタイプを許容することができるが、そのメディアタイプを供給するビデオソースは、MPEG−4ビデオしか配信しない場合がある。
UDP Taskは柔軟性を有するので、2つのタスクモジュールは、単に、MPEG−4ビデオメディアタイプを送信/受信することに同意するだけである。
結局、完成したグラフ構造は、アプリケーションのタスク依存関係を直接表すものとなる。
図1Aを再び参照して、140において、アプリケーショングラフネットワークのランタイム管理が、アプリケーション開発者等のユーザに提供される。
一実施形態では、DMフレームワークは、たとえば、処理グラフネットワークのグラフィカルユーザインターフェース(GUI)ソフトウェアプログラムを介して、リアルタイムグラフィカルディスプレイを提供する。
このようなディスプレイは、処理グラフトポロジー及びタスクのリアルタイム性能統計量を動的に視覚化したものをユーザに提供する。
リアルタイム性能統計量には、アプリケーションにおけるレイテンシ並びに1つのタスク当たり及びアプリケーション全体当たりのスループット統計量が含まれる。
このグラフィカルディスプレイによって、ユーザは、アプリケーションを表す処理グラフネットワークのグラフ管理を通じたアプリケーション構築又はアプリケーション開発を管理及び操作することが可能になる。
たとえば、ユーザは、修正されたタスクモジュールの内部状態もタスクモジュール内で修正し又は内部状態は修正せずに、処理グラフネットワークの1つ又は複数のタスクモジュールへの接続(複数可)及びそれらタスクモジュールからの接続(複数可)を修正することができる。
グラフ管理について、アプリケーションランタイムに、タスクモジュールが一旦接続され、メディアタイプが各接続について求められると、アプリケーションは、DMフレームワークによる実行の準備が完了する。
次に、DMフレームワークのグラフィカルディスプレイプログラムは、アプリケーショングラフの開始コマンドを発行する。
この開始コマンドは、DMフレームワーク内のグローバルスケジューラのオペレーションをトリガする。
これに応答して、DMフレームワークの内部スレッドは、処理グラフネットワークをトラバースして、グローバルスケジューラによって設定された所定のポリシーに従い、タスク接続、すなわちタスクモジュール間の接続にわたるメディアフローを方向づけ、1つ又は複数のタスクモジュールを使用して1つ又は複数のメディアオブジェクトを処理することにより、グローバルスケジューラにリストされた利用可能なジョブ(複数可)を遂行する。
一実施形態では、グローバルスケジューラは、所定のポリシーを自動的に用いて、タスクモジュール間の選ばれた接続に基づいて、処理グラフネットワークのジョブを実行するためのタスクモジュールをトラバースする定義された実行スレッドを管理する。
また、グローバルスケジューラは、個々のタスク及びタスクの全体グラフの平均レイテンシ及びスループット等の計算統計量の経過も追跡して、アプリケーション性能のボトルネックを識別する。
グローバルスケジューラは、実行スレッドによる実行用のジョブのリストを含む。
したがって、実行スレッドが、ジョブの遂行後にタスクモジュールを終了させるとき、その実行スレッドは、グローバルスケジューラを再び参照して、遂行される次のジョブをジョブリストにおいて識別し、関連付けられるタスクモジュールに進んで、関連付けられるメディアオブジェクトのセットに対してこのようなジョブを遂行する。
図1Bは、本発明の一実施形態によるグローバルスケジューラのオペレーションを示している。
141において、グローバルスケジューラは、各ジョブを動的に作成して自身のジョブリストに記憶する。
たとえば、タスクモジュールによって所望されるデータオブジェクト又は必要とされるデータオブジェクトが、タスクモジュールによって利用可能になると、このようなタスクモジュールによる実行用にジョブが作成されてリストされる。
別の例では、たとえば、DMフレームワークの他のタスクモジュールによる処理用にメディアオブジェクト又は他のデータオブジェクトを生成するのに、ジョブがソースタスクモジュール(入力ピンを有しない)で望まれるとき、ジョブを動的に作成してリストすることができる。
142において、グローバルスケジューラは、1つ又は複数の所定のポリシーに基づいて、自身のジョブリストの各ジョブの実行を自動的にスケジューリングする。
この自動スケジューリングは、リストされた各ジョブの特定の実行スレッドへの割り当てを含む。
143において、ジョブが異なる実行スレッドに割り当てられることを回避するために、各ジョブが実行スレッドに一旦割り当てられると、グローバルスケジューラは、ジョブリストからそのジョブを自動的に除去する。
したがって、自身の所定のポリシーに基づくグローバルスケジューラのオペレーションは、自動的であり、アプリケーション開発者にトランスペアレントである。
グローバルスケジューラの所定のポリシーは、以下でさらに説明される。
図3A〜図3Cは、本発明の一実施形態による、アプリケーションが方法論100の最後の3つのフェーズ(分解、組み立て、及びグラフ管理)を通過する時のアプリケーション及びその構成要素のグラフィカル説明図を提供する。
図3Aでは、データフロー解析後に、アプリケーションは、5つの処理タスク310及び4つの信号フォーマット320によって示すように、その構成要素のタスク及び信号に分解される。
次に、図3Bでは、矢印330によって示すようなタスク依存関係が、タスクのタスク構造への組み立て中に明示的にされる。
最後に、図3Cでは、タスク接続330にわたる信号のフローの管理を通じて、完成されたタスクグラフを管理することにより、アプリケーションが実行される。
図4は、DMフレームワークを使用して所望のアプリケーションを構築又は開発する一例を示している。
最初に、同期されたカメラ等の信号ソース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つの仮定に変換される。
一実施形態では、DMフレームワークの上述した計算モデルを実施することは、フレームワーク実行スレッドの優先順位を人工的に下げることを含む。
これによって、マシン上のネイティブOSがI/O応答性を有することが確保される。
I/Oは高速であるので、マシンにおいてI/Oに必要とされないCPU時間の残りは、唯一の計算集約型アプリケーションであるフレームワークに与えられる。
換言すれば、OS及び他の標準的な優先順位のスレッドが、I/Oプロセスをハンドリングする間(及びその後に初めて)フレームワークは、計算をハンドリングするように作動可能である。
マシン(たとえば、単一のコアを備えた単一のプロセッサを有するマシン)のシングルプロセッサのシナリオでは、CPUは、信号ソースからの初期データ信号に対して処理を行い、信号の波が完全に消耗されるまで、当該データ信号及びその子孫信号を、処理グラフネットワークを通じて(データ依存関係により導かれる任意の有効な順序で)伝播する。
このプロシージャは、次の初期信号及びその後の初期信号に対しても同様に繰り返される。
新しい初期データ信号の平均到達率が、各データ波の平均完了率よりも大きい場合、アプリケーションが後れを取らないために(すなわち、増加の一途をたどるレイテンシが絶えず遅れることを回避するために)、いくつかの初期データ信号を破棄することができる。
マルチプロセッサ又はマルチコアのシナリオ(たとえば、マシンが複数のプロセッサ又は1つ若しくは複数のマルチコアプロセッサを有する)では、タスク並列性やデータ並列性等の潜在的な並列性が、アプリケーションの動的な振る舞いを大きく変化させる。
タスク並列性の場合、各タスクモジュールは、これまでの計算履歴(history previous computations)としてその内部状態の組を有する(with its internal state set)順序計算モジュールである。
この履歴の一例は手の追跡座標であり、この場合、先行フレームにおけるロケーションによって、現フレームにおけるロケーションの検索が不要になる。
したがって、所定の履歴の状態を可能にするために、各モジュールのコードは、シーケンシャルに実行される。
これは、どの所与の時刻においても、1つの実行スレッドしか特定のモジュールに常駐することができないことを暗に意味し、これは、「ライブ」の実行スレッドの最大数がグラフのモジュールの個数であることを暗に意味する。
換言すれば、順序モジュールの処理グラフネットワークで達成可能な最良の並列性は、タスク並列性である。
すなわち、モジュールの個数に等しいプロセッサを有するマシンは、使用可能なタスク並列性の限界に達している。
したがって、各順序モジュールは、本質的には、どの所与の時刻においても、1つのジョブを遂行するために、1つのプロセッサと同等のものを消費して、そのプロセッサで1つの実行スレッドしか動作させず、動作する他の実行スレッドが存在しないので、プロセッサが追加されても、性能はもはや改善されない。
実際には、全体のアプリケーションスループットは、この場合、最も遅いモジュールのレイテンシによって制限される。
この状況においても、本発明の実施形態は、所与のタスクモジュールに関連付けられるジョブの処理を、時間と共に、異なる処理ユニットにシフトすることができることに留意すべきである。
他方、データ並列性は、プロセッサの個数が増加するにつれて、線形の性能改善を享受することができる。
DMフレームワークでデータ並列性を用いるために、少なくとも1つのタスクモジュールは、そのアルゴリズムコードが再入力される組み合わせ計算モジュールである。
その理由は、複数のスレッドが、コードを実行して、複数の処理ユニットにより同時に複数のジョブを遂行又は実行することができるからである。
スレッドは、多くの場合、実行時間が変化し、したがって、その出力は、順序どおりでない場合がある。
下流側モジュールが組み合わせモジュールである場合、スレッドは、より多くのデータ並列性を活用して、自由に動作し続ける。
一方、下流側モジュールが順序モジュールである場合、正確なシーケンスが下流側モジュールの入力バッファで獲得されるまで、スレッドの生成を阻止しなければならない。
上述したように、DMフレームワークのタスクモジュールは、その時間依存関係によって組み合わせモジュール又は順序モジュールとしてカテゴリー化又は指定される。
組み合わせモジュールは、もっぱら現在の入力の関数である出力を生成する。換言すれば、これらのモジュールは、前の実行の内部履歴を何ら有しない。
したがって、組み合わせモジュールは、前の計算の関数ではない内部状態を有することができる。
他方、順序モジュールは、前の実行の内部メモリを有し、したがって、出力は、現在の入力及び前の入力の双方に依存することができる。
この状況では、データは、正しい順序で入力に到達しなければならない。
順序モジュールは、現在の状態を次の実行へ転送することによって組み合わせモジュールに変換することができる。
この転送は、追加の出力を追加の入力にリンクすることによって達成される。この変換は、より多くの並列性を明らかにするのに役立つ。
したがって、可能ならば、大きな順序モジュールは、小さな順序モジュール及び大きな組み合わせモジュールの組み合わせに分解される。
しかしながら、一定の順序モジュールは、決して組み合わせモジュールとすることはできず、それらの本来的な順序的振る舞いは、並列性の量を常に制限するので、本発明の一実施形態によれば、アプリケーションをモデル化するために、組み合わせモジュール及び順序モジュールの双方が、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によって表されるようなホストプラットフォームが位置する。
ネイティブOS550は、マルチスレッドサポート、タイミングメカニズム、及びプログラミングコンパイラ(たとえばANSI C++コンパイラ)の3つの要素を含む。
マルチスレッドサポートは、計算を制御するためのスレッド抽象体(thread abstraction)だけでなく、スレッドを制御するのに必要な同期オブジェクトも含む。
DMフレームワークは、単一プロセッサマシン上で作動することができるが、一実施形態では、基礎となるハードウェアは、並列実行又は並列処理から利益を受けるために、対称型マルチプロセッサ(SMP)マシンである。
このような場合、抽象レイヤ540は、SMP抽象レイヤとなる。
タイミングメカニズムは、レイテンシ測定等の性能解析に要求される。
プログラミングコンパイラは、実行可能ファイルを生成するのに要求され、このようなコンパイラは、DMフレームワーク全体を通じてコンパイラに設けられた抽象体(たとえば、文字列、ベクトル、マップ(map)、集合、デキュー)の使用を可能にする標準的なテンプレートライブラリ(たとえば、C++標準テンプレートライブラリ)を有するべきである。
SMP抽象レイヤ540は、第1のミドルウェアレベルである。
これによって、DMフレームワークを他のプラットフォーム及びオペレーティングシステムに移植することが容易になる。
Thread(スレッド)抽象体は、DMフレームワークに、OSスレッドのネーミング、スポーニング(spawn)、及びデバッグの能力を提供する。実際のThread作成は、ネイティブプラットフォームコールで行われ、各スレッドは、その一意の名称に関連付けられるログファイルを有することができ、各スレッドの実行トレースの作成を可能にする。
Mutex(ミューテックス)抽象体及びSemaphore(セマフォ)抽象体によって、Threadの同期が可能になる。
Mutexは、2つの以上のスレッドが同時にコードを実行することを防止するための標準的な相互排除オブジェクトであり、Semaphoreは、Thread間でシグナリングを行うための標準的で効率的なメカニズムである。
StopWatch(ストップウォッチ)抽象体又はTimer(タイマ)抽象体は、プラットフォームタイミング機能を使用して時間を測定する能力をカプセル化する。
時間の測定は、性能解析に必須である。
第2のミドルウェアレベルであるフレームワークカーネル530は、すべてのフレームワークアプリケーションによって使用されるコアデータフロー機能を実施する。
これは、アプリケーションを構築するための拡張可能なTask抽象体及びMedia抽象体を供給する。
フレームワークカーネルは、内部にも、自身の複雑度を管理するためのいくつかの抽象体を有する。
第1に、InputPin(入力ピン)オブジェクト及びOutputPin(出力ピン)オブジェクトが、メディアオブジェクトを転送するためのタスクオブジェクト間の接続を表す。
第2に、Graph(グラフ)オブジェクトが、互いに接続されたタスクオブジェクトを管理し、start()及びstop()等のグラフ全体のコマンドのインターフェースとして機能する。
Graphコマンドは、単一のTask引数を有するが、接続性を使用してアプリケーショングラフ全体をトラバースし、グラフの各モジュールにコマンドを適用する。
第3に、メモリマネージャオブジェクトが、メディアオブジェクトを記憶するためのメモリバッファを提供する。
メモリマネージャは、バッファ使用量を追跡し、事前に割り当てられたバッファを再利用するためのファシリティを有し、メモリ統計量を報告することができる。
先に述べたように、グローバルスケジューラは、フレームワークカーネル530に常駐して、処理グラフネットワークをトラバースする実行スレッドを管理し、平均レイテンシ及びスループット等の計算統計量の経過を追跡する。
コンポーネントライブラリ520は、アプリケーションとカーネルとの間に位置する再利用可能なコンポーネントの絶えず増大する集まりである。
アプリケーション開発者は、共通の機能(たとえば、オーディオ記録又は画像色空間変換)を再実装するのではなく、事前に構築された役立つタスクオブジェクトを再利用可能コンポーネントライブラリ520から見つけることができる。
事前に構築されたタスクオブジェクトの例には、カメラインターフェース、グラフィックス機能、オーディオコーデック、ビデオコーデック、ネットワーキングモジュール等が含まれるが、これらに限定されるものではない。
他者の作業を利用することは、迅速な開発の重要な態様である。
最後の実施レイヤは、ストリーミングメディアアプリケーション等のアプリケーション510である。
アプリケーション510は、先のすべてのレイヤにアクセスすることができる。
プラットフォーム独立性をさらに推進するために、アプリケーションは、DMフレームワーク用に作成されたあらゆる下位レベルライブラリのすべての内部オブジェクトにアクセスすることができ、DMネットワークが、異なるプラットフォーム上で実施されている下位ライブラリレベルのクラスについて気にする必要がないようにされる。
一方、フレームワークカーネル530では、DMフレームワークインターフェースの複雑性を最小にするために、タスク抽象体及びメディア抽象体のみがアクセス可能である。
内部オブジェクトは、タスクオブジェクト及びメディアオブジェクトを通じて又は静的なフレームワークプロシージャを通じて間接的にアクセスされる。
本発明の一実施形態によれば、DMフレームワークは、複数の特徴的な実施機能を有する。
第1に、入力ピン又は出力ピン上のデータが常に相互に関連付けられるべきであることがアプリオリに知られている場合、入力ピン又は出力ピンをグループ化するための便利なメカニズムがある。
たとえば、図4の結合モジュール440は、常に一対の画像に対して処理を行う。それら入力ピンを同じ入力グループにすることによって、モジュールは、双方の画像が到着した時にのみ作動し始め、開発者が入力画像を管理し関連付ける必要性が回避される。
この関連付けは、アプリオリに知られているので、静的同期と呼ばれる。第2に、タスクモジュールの出力ピンからの「ファンアウト」が利用可能である。
このファンアウトでは、タスクモジュールの出力ピンは、複数のタスクへの入力とすることができる。
したがって、或るタスクモジュールから出力されたメディアオブジェクトを、その後、他の複数のタスクが使用することができる。
さらに、他の複数のタスクがメディアオブジェクトを修正する必要はなく、単にそのメディアオブジェクトを用いて他のジョブを遂行するだけである場合に、メディアオブジェクトの複製コピーをフレームワークメモリで作成する必要がないように、出力メディアは読み出し専用とすることができる。
したがって、メディアオブジェクトを含む同じメモリバッファをすべての受信タスクモジュールへ送信することができる。
第3の重要な実施機能は、自動シリアライズである。
Media基底クラスは、どのMediaオブジェクトも、その複雑性にかかわらず、平坦にすることができる強力なシリアライズプロシージャを有する。
Mediaオブジェクトは、固定長フィールド(たとえば、画像サイズ、フォーマット仕様)及び可変長フィールド(たとえば、画像バイト、オーディオデータ)の双方を有することができる。
シリアライズプロシージャは、どの深さのMedia構造もトラバースすることができ、そのMedia構造を、DMネットワークによる出力用の単一の平坦なバッファに変換して、ファイル又はネットワークストリーム等のシリアル表現にすることができる。
同様に、自動デシリアライズプロシージャは、平坦化された表現を読み出し、その表現を、DMネットワークによる処理用にメモリで深いMedia構造に変換して戻すことができる。
したがって、アプリケーション開発者は、このような出力メディアオブジェクトを効率的に記憶するために、メディアオブジェクトをDMネットワークによる処理用の適切なフォーマットに変換することにも、DMネットワークによる処理後にメディアオブジェクトを変換して戻すことにも関与する必要がない。
一実施形態では、コンポーネントライブラリ520、フレームワークカーネル530、及びSMP抽象レイヤ540は、C、C++、C#、Java(登録商標)等の任意に適したコンピュータプログラミング言語からのコードを含むコンピュータ実行可能プログラムを有する1つ又は複数のソフトウェアプログラム、アプリケーション、又はモジュールによって実施することができる。
これらコンピュータ実行可能プログラムは、コンピュータ化システムによって実行可能であり、コンピュータ化システムには、コンピュータ又はコンピュータのネットワークが含まれる。
コンピュータ化システムの例には、1つ若しくは複数のデスクトップコンピュータ、1つ若しくは複数のラップトップコンピュータ、1つ若しくは複数のメインフレームコンピュータ、1つ若しくは複数のネットワーク化コンピュータ、1つ若しくは複数のプロセッサベースのデバイス、又は同様の任意のタイプのシステム及びデバイスが含まれるが、これらに限定されるものではない。
図6は、図5の階層500を実施するためのプラットフォームとして使用されるように作動可能なコンピュータ化システム600のブロック図を示している。
より高度なコンピュータ化システムが使用されるように作動可能であることが理解されるべきである。
さらに、コンピュータ化システム600にコンポーネントを追加し又はコンピュータ化システム600からコンポーネントを除去して、所望の機能を提供することもできる。
コンピュータシステム600は、プロセッサ602等の1つ又は複数のプロセッサを含み、ソフトウェアを実行するための実行プラットフォームを提供する。
したがって、コンピュータ化システム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は、他のコンピュータシステムとの通信用に設けられる。
コンポーネント520、530、及び540のそれぞれを別々のコンピュータ化システムで実施することができる代替的な実施形態、又は、このようなコンポーネントのいつくかは或るコンピュータ化システムによって実行され、それ以外のものは別のコンピュータ化システムによって実行されるか、若しくは、フレームワークカーネル530のタスクモジュールの少なくともいくつかは、異なるコンピュータ化システムによって実行される代替的な実施形態が考えられる。
したがって、ミドルウェアフレームワークは、マルチプロセッシング環境で作動することができる。
要約すれば、アプリケーション開発者は、最大限の並列性又は最も望ましい並列性を得るためにDMフレームワークの実行スレッドの個数を指定する能力を有する。
一実施形態では、スレッドの個数は、プロセッサの個数に等しくなるように設定される。
別の実施形態では、特に、スレッドを計算モジュールの内部で阻止することができるときは、スレッドの個数は、プロセッサの個数よりも多い。
一方、アプリケーションのデバッグ中は、実行スレッドを容易に追跡することができるように、単一の実行スレッドを使用することが極めて有益である。
本明細書で説明及び図示されたものは、その変形のいくつかと共に実施形態である。
本明細書で使用された説明及び図という用語は、例示としてのみ述べられ、限定を意図するものではない。
当業者は、主題の趣旨及び範囲内において多くの変形が可能であることを認識するであろう。
主題は、以下の特許請求の範囲及びその均等物によって確定されるように意図されている。
特許請求の範囲において、すべての用語は、別段の指定がない限り、その最も広い合理的な意味に意図されている。
310・・・処理タスク,
320・・・信号フォーマット,
510・・・アプリケーション,
520・・・コンポーネントライブラリ,
530・・・フレームワークカーネル,
540・・・抽象レイヤ,
550・・・ネイティブオペレーティングシステム,
602・・・プロセッサ,
604・・・通信バス,
606・・・メインメモリ,
608・・・2次メモリ,
610・・・ネットワークインタフェース,
612・・・入力デバイス,
614・・・ディスプレイ

Claims (10)

  1. 複数の処理ユニットを有するマルチプロセッシング環境において所望のアプリケーションを開発するためのミドルウェアフレームワークを提供する方法であって、
    前記所望のアプリケーションを開発するための複数のタスクモジュールの選択を受け取ること(130)と、
    前記選択されたタスクモジュール間の接続を受け取ること(130)であって、前記所望のアプリケーションを形成する、前記選択されたタスクモジュール間の接続を受け取ること(130)と、
    前記形成されたアプリケーションを通じて処理するための複数の実行スレッドの入力を受け取ること(130)と、
    前記複数の実行スレッドの前記ミドルウェアフレームワーク全体にわたる自動グローバルスケジューリングを提供すること(140)であって、少なくとも、
    前記複数の実行スレッドの少なくとも1つによる実行用の少なくとも1つのジョブのジョブリストを提供すること(141)であって、前記少なくとも1つのジョブのそれぞれは、前記選択されたタスクモジュールの関連付けられるものによる1つまたは複数のデータオブジェクトの処理である、少なくとも1つのジョブのジョブリストを提供すること(141)と、
    少なくとも1つの所定のポリシーに基づいて、前記複数の実行スレッドの1つによる前記ジョブリストの各ジョブの実行を自動的にスケジューリングすること(142)と
    による自動グローバルスケジューリングを提供すること(140)と
    を含む方法。
  2. 前記形成されたアプリケーションのグラフネットワーク表現を表示すること(140)であって、前記選択されたタスクモジュール、前記タスクモジュール間の前記受け取った接続、および、前記形成されたアプリケーションのスループット統計量およびレイテンシの一方を示す、前記形成されたアプリケーションのグラフネットワーク表現を表示すること(140)
    をさらに含む請求項1に記載の方法。
  3. 前記複数の実行スレッドの1つによる実行用にスケジューリングされた前記少なくとも1つのジョブは、複数のジョブを含み(142)、
    前記方法は、前記スケジューリングに基づいて、前記1つの実行スレッドが、前記選択されたタスクモジュールの少なくとも2つにおいて、および、前記複数の処理ユニットの少なくとも2つにわたり、前記複数のジョブを自動的に実行すること
    をさらに含む請求項1に記載の方法。
  4. 前記少なくとも1つの所定のポリシーは、前記ジョブのそれぞれに関連付けられる前記1つまたは複数のデータオブジェクトのそれぞれで見つけられる優先順位表示に基づいている
    請求項1に記載の方法。
  5. 前記データオブジェクトのそれぞれの前記優先順位表示は、
    a)前記データオブジェクトのそれぞれのタイムスタンプ、および、
    b)前記データオブジェクトのそれぞれがその子孫である最も初期のデータオブジェクトのタイムスタンプ
    の一方を含む請求項4に記載の方法。
  6. 前記少なくとも1つの所定のポリシーは、
    a)前記ジョブリストに実行用にスケジューリングされるジョブに関連付けられる前記選択されたタスクモジュールの1つのタスクのタイプ、
    b)前記複数の実行スレッドの1つを実行している前記複数の処理ユニットの1つの識別情報、
    c)前記ジョブリストのジョブを最後に遂行した前記選択されたタスクモジュールの1つの識別情報、および
    d)前記ジョブリストのジョブが、遂行される前記ジョブに望ましい前記データオブジェクトの利用可能な1つまたは複数を有するとの判断
    の1つに基づいている
    請求項1に記載の方法。
  7. 前記少なくとも1つの所定のポリシーは、前記選択されたタスクモジュールのうち他のいくつが、前記ジョブのそれぞれに関連付けられている前記選択されたタスクモジュールの出力に依存しているのかに基づいている
    請求項1に記載の方法。
  8. 前記ジョブリストを提供することは、
    a)前記選択されたタスクモジュールの1つが、処理用に少なくとも1つのデータオブジェクトを受け取ることと、
    b)前記選択されたタスクモジュールの1つが、少なくとも1つのデータオブジェクトの生成を望むソースモジュールであることと
    の1つに応答して、前記ジョブリストに各ジョブを動的に生成することと
    を含む請求項1に記載の方法。
  9. 複数の処理ユニットを有するマルチプロセッシングプラットフォーム上で所望のアプリケーションを開発するための、コンピュータ可読媒体のプログラムコードとしてコード化されるミドルウェアフレームワークであって、
    前記所望のアプリケーションを構築し動作させるためのタスクモジュール及びメディアオブジェクトを生成する、前記コンピュータ可読媒体のプログラムコードとしてコード化されるフレームワークカーネル(530)であって、
    前記フレームワークカーネルは、
    グローバルスケジューラであって、前記フレームワークカーネルが、前記ミドルウェアフレームワーク全体にわたる複数の実行スレッドの自動グローバルスケジューリングを提供して、前記グローバルスケジューラによって保持されるジョブのリストおよび少なくとも1つの所定のポリシーに基づき前記生成されたタスクモジュールを通じて前記生成されたメディアオブジェクトを処理するために、前記プログラムコードの一部としてコード化され、前記ジョブのそれぞれは、前記生成されたタスクモジュールの関連付けられる1つによる1つまたは複数のデータオブジェクトの処理である、グローバルスケジューラ
    を含むフレームワークカーネル(530)と、
    前記フレームワークカーネルを前記マルチプロセッシングプラットフォームから隔離して前記フレームワークカーネルをプラットフォームから独立した状態にする、前記コンピュータ可読媒体のプログラムコードとしてコード化される抽象レイヤ(540)と
    を備えるミドルウェアフレームワーク。
  10. 複数の処理ユニットを有するマルチプロセッシング環境において所望のアプリケーションを構築するためのミドルウェアフレームワークを提供するためのプログラムコードがコード化されるコンピュータ可読媒体であって、
    前記所望のアプリケーションを構築するための複数のタスクモジュールの選択を受け取る(130)ためのプログラムコードと、
    前記選択されたタスクモジュール間の接続を受け取る(130)ためのプログラムコードであって、前記所望のアプリケーションを形成する、前記選択されたタスクモジュール間の接続を受け取る(130)ためのプログラムコードと、
    前記形成されたアプリケーションを通じて処理するための複数の実行スレッドの入力を受け取る(130)ためのプログラムコードと、
    前記複数の実行スレッドの前記ミドルウェアフレームワーク全体にわたる自動グローバルスケジューリングを提供する(140)ためのプログラムコードであって、少なくとも、
    前記複数の実行スレッドの少なくとも1つによる実行用の少なくとも1つのジョブのジョブリストを提供する(141)ためのプログラムコードであって、前記少なくとも1つのジョブのそれぞれは、前記選択されたタスクモジュールの関連付けられるものによる1つまたは複数のデータオブジェクトの処理である、少なくとも1つのジョブのジョブリストを提供する(141)ためのプログラムコードと、
    少なくとも1つの所定のポリシーに基づいて、前記複数の実行スレッドの1つによる前記ジョブリストの各ジョブの実行を自動的にスケジューリングする(142)ためのプログラムコードと、
    を有することによる、自動グローバルスケジューリングを提供する(140)ためのプログラムコードと
    を含むコンピュータ可読媒体。
JP2009534701A 2006-10-31 2007-10-30 ミドルウェアフレームワーク Pending JP2010508574A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110914812A (zh) * 2017-05-15 2020-03-24 奥特瑞克斯股份有限公司 用于高速缓存优化和高效处理的数据聚合方法

Families Citing this family (45)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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