発明の詳細な説明
本発明の実施形態は、一般に、データネットワークに関し、特には、異なるネットワーク通路を通じて届いたイベントを同期させるための装置および方法に関する。
(背景)
たとえば無線センサネットワークなどのセンサネットワークには、幅広い用途がある。たとえば様々な技術の無線センサネットワークは、人および/または他のオブジェクトの位置決めなどの位置決めの目的に用いられうる。ここで「位置決め」とは、幾何学的位置または場所の検出または決定を意味する。いくつかの専門化された位置決めシステムまたは場所追跡システムは、たとえば、サッカー、アメリカンフットボール、ラグビー、テニスなどのスポーツイベントにおいて、選手または他のオブジェクト(たとえばボール)の位置決めに用いられうる。
選手および/またはボールの集められた幾何学的位置または場所データを用いることによって、スポーツイベント全体、たとえばサッカーの試合、または、関連する個々のチームまたは選手の統計的情報を得ることができる。そのような得られた統計的情報は、様々な理由のため興味深い。一方では、特定の統計としての様々な商業上の関心があり、その解析は、スタジアムおよび/または家のテレビセットの前にいる観戦者に特に関連しうる。それゆえ、特定の解析を提供すれば、スポーツイベントにおいてより一層の関心を引き起こしうる。他方では、生の場所データから得られる統計的データは、同様に、訓練の目的のためにも用いられうる。それゆえ、相手、および/または、自チームの挙動は、個々の選手のパフォーマンスおよび/または健康状態と同様に解析されうる。
上述した位置決めシステムまたは場所追跡システムは、様々な技術に基づきうる。たとえば位置決め情報は、無線ラジオ信号および/または磁場に基づき決定されうる。この目的のため、一般にはセンサとも表記される送信機および/または受信機は、システムによって位置決めされる個々のオブジェクト(たとえば選手、ボールなど)に配置されうる。対応する受信/送信装置もまた、関心のある幾何学的領域、たとえばサッカー場、の周囲の規定の位置に取り付けられうる。技術的な選択肢候補の例を挙げれば、信号強度、信号伝播時間、および/または信号位相の測定によって、それから、異なる時点における選手またはオブジェクトの幾何学的位置を示すセンサデータストリームが生ずる。典型的には、幾何学的位置データサンプルは、どの幾何学的場所にどの時間にオブジェクトが配置されたかを示すタイムスタンプに関連している。この組み合わせ情報と共に、速度、加速度などのような運動学的データが、たとえばx軸、y軸、およびz軸を有する位置決めデータに加えて、同様に提供されうる。この明細書の続きでは、位置決めセンサシステムによって与えられる位置決めデータおよび運動学的データは、(生の)センサデータとしても表記される。
特に、無線追跡システムの例では、人またはオブジェクトには、履物、ユニフォーム、およびボールに埋め込まれ、かつその信号が、観察下の領域周辺に配置される多数のアンテナによって検出されうる小型の送信機が取り付けられうる。受信ユニットは、集められた信号を処理し、その到達時間(ToA)を決定する。伝播遅延の相違の算出に基づき、各送信機の場所が次に継続的に決定される。加えて、無線追跡システムが組み込まれたコンピュータネットワークが、特定のイベントを検出するように、場所またはセンサデータを解析しうる。2.4GHz帯で動作する場合、追跡システムは広くライセンスフリーである。
位置決めまたは場所追跡システムから出力された生のセンサデータストリームに基づき、いわゆる「イベント」が検出されうる。これによりイベントは、ある時点での瞬間的な対象の発生として定義されうる。一般に、イベントは、検出されることができる関連する量の分散の変化に関連している。イベントは、追跡システムのセンサデータ(運動学的データ)に直接基づく基本イベント、または、その代わりに、以前に検出された他のイベントに基づく合成イベントでありうる。すなわち合成イベントは、生のセンサデータに直接基づかず、他のイベントに直接基づいている。球技の例では、イベントは、たとえば、「選手Xがボールを蹴る」、または「選手Xがボールを持つ」でありうる。より複雑なイベントは、たとえば、「オフサイド」または「ファウル」でありうる。
基礎となるセンサデータストリームに基づくイベントの検出は、過去の数年において、データベースおよび分散システムコミュニティに、多大な関心を引き起こしている。ネットワーク監視、e−ビジネス、ヘルスケア、金融解析、およびセキュリティまたは上述したスポーツイベントの監督としての用途を含む、今日における幅広くかつ増大する数の用途は、理想的にはイベントの時系列の形態をとるデータストリームに渡ってクエリを処理する能力に依存している。多くの用途では、数多くの供給されたセンサデータおよび/またはイベント検出器が、人間によってはそれ以上取得したり処理したりすることができないので、イベント検出は、人間の介入を受けることなく、生のセンサデータおよび/またはイベントを完全に自動的に処理することを意味する。たとえば、選手またはスポーツオブジェクトたとえばボールが高速で変化することが期待される場合、生のセンサ(位置決めまたは場所追跡)データは、基本の(無線)センサネットワークによって充分に高いデータ率で決定しなければならない。加えて、追跡すべき多くの数の選手および/またはオブジェクト(たとえばサッカーでは22人の選手とボールがある)、一秒ごとの幾何学的位置決めおよび運動学的データ全体の数は、特にリアルタイムのイベント検出器処理が必要となる場合には、法外に大きくなりうる。
それゆえ、生のセンサおよび/またはイベントデータストリームが解析されかつ完全に自動的に信号化されたとしても、依然として、おそらくは全体として何の関心にもなりさえしない、多すぎるほど多い情報が存在しうる。より多くの装置にセンサが取り付けられ、かつ、決定されたセンサデータがインターネットなどの公衆ネットワークに提供される可能性(たとえば、スマートフォンなどの無線装置によって決定される気象または温度データ)があるので、将来、この問題は一層悪化する。この理由のため、関心のある特定のイベントに対して処理されるセンサデータの量は、急速に拡大する。自動化検出は、生のセンサデータを個々に集め、かつ、生のセンサデータ自体よりもさらに多くの情報を転送しうるより抽象的かつ相互に依存するイベントを検出する試みによって、これに対する解決策を提供しうる。たとえば、上述したサッカー関連の例に加えて、そのような決定されるイベントには、「車Xが横断歩道Yに位置する」または「通路Xにおける交通渋滞」が含まれうる。
自動的イベント検出において生じる問題は、おそらくは大量に並行のセンサおよび/またはイベントデータストリームに対するイベント検出を行うための計算能力が必要であり、かつ、少なくともリアルタイムに近い処理が必要な状況下で行われることにある。この問題は、たとえばイーサネットを通じて通信しうるコンピュータネットワークの異なるネットワークノードにおいてたとえば実行されうるイベント検出の並行化によって、解決されうる。これにより、イベント検出器は、ユーザが指定したイベント検出器に対応するイベントまたはセンサデータストリームから、関心のある特定のイベントを自動的に抽出する。個々のイベント検出器は、データネットワークの異なるネットワークノードに分散されうる。異なるイベント検出器は、端末装置のネットワーク通路および分岐を用いてネットワークを通過するイベントおよび/またはセンサデータを用いて通信する。これにより、生のセンサデータおよび/またはイベントは、たとえばUDP(ユーザデータグラムプロトコル)、TCP(トランスミッションコントロールプロトコル)/IP(インターネットプロトコル)などのような何らかの配送プロトコルに基づき、データパケット内において配送されうる。しかし、この構成によって、ネットワーク内のイベントデータストリームの同期に関連する新たな問題が生じる。適切な対抗策がなければ、ネットワーク内の個々のセンサおよび/またはイベントデータストリーム互いに時間同期されず、このことは、個々のイベントがイベント検出器に管理する時間順から外れて到達し、これにより誤った検出結果を引き起こしたことを意味する。
並行して自動的に動作する複数のイベント検出器が選手Aから選手Bへのパスを検出することが想定されるサッカーの例を見てみよう。上記「パス」イベントを検出するために、以下の前述したイベント順序が必要になる。
1.選手Aはボールを所持している。
2.選手Aはボールを蹴る。
3.ボールは選手Aから離れる。
4.ボールは選手Bの近くに来る。
5.選手Bがボールに当たる。
「選手Xがボールを蹴る」というイベントのイベント検出は、「ボールの近くの選手X」というイベント順序および検出されたボールの加速度ピークに基づきうる。「選手Xがボールを蹴る」という上記イベントのための自動化されたイベント検出器をセットアップするためには、以下の代替物がある。
我々は、個々の必要なイベントを1つずつ待ちうる。我々がすべての必要なイベントを正しい(時間)順で見たとき(ここで、簡潔さのために如何なる中止基準をも無視する)、パスを見たまたは経験したと言うことができる。しかし、イベント検出器の並行化のために、複雑な用途では、必要なすべてのイベントの検出が単一のネットワークノードまたはCPU(中央演算装置)において必ずしも生じるとは限らない。この理由のため、必要な個々のイベントが必要な正しい順番でイベント検出器に到達することは、必ずしも保証されない。この原因は、たとえば、ネットワークジッタ、変動するCPU負荷、または増加するネットワーク負荷が原因でありうる。
それゆえ、イベントをバッファし、それからイベントを正しいパターンにするためにバッファを探索することを試みることができる。しかし、幾らのバッファサイズが必要になるだろうか?パスが最大で5秒以内に発生しなければならない場合、パスを検出するかまたは中止するまで、第1の関連イベントの後の5秒の期間以内にイベントを考慮しなければならない。しかし、最後の関連イベントが計算上極めて複雑であり、小さな追加のバッファを必要とすることもありうる。しかし、この追加のバッファするサイズは幾らだろうか?また、「パス」イベントを入力イベントとして必要とする合成イベント検出器に関連するバッファサイズは幾らだろうか?イベント信号伝達遅延は、システム/ネットワークの全体最終構成、すなわち、イベント検出器の分布、ならびにネットワーク負荷およびCPU負荷に依存する。構築時には、最終的なシステム構成または負荷状況は予知しえない。
多くの場合、イベント処理または伝播遅延は関連していないため、大半の既存のイベント検出システムは、上述したイベント信号伝達遅延問題を考慮していない。しかし、特に、金融事例または場所追跡事例などの高度に複雑なリアルタイムイベント検出システムでは、このことは当てはまらない。
以下のサッカー関連例では、図1に模式的に示す、頻繁に必要な「オフサイド」イベント検出事例に基づくイベント遅延を例示する。
選手100は、ボール110を前方のチームメイト120にパスする。パスの正しい(実際の)時間、すなわちボール110に加速的な揺れまたはピークが生じた時間(図1の左を参照)に、選手120は、オフサイドの位置に数センチメール入っている。それゆえ、試合は中断されなければならない。
しかし、選手100の直接のパスまたはドリブルを区別できるようにするために、選手100から選手120へのパスは、ボール120が実際に選手100から離れたときにのみ検出されうる。センサデータのデータレートが限られているので、このように区別する決定によって、少なくとも数ミリ秒の追加の「自然な」遅延が起こりうる。しかし、この自然の遅延の後では、選手120はもはやオフサイド位置にいないかもしれない(図1の右を参照)。
ここで、関係する自動的に生成されたイベントの時系列をただ考慮するだけでは、オフサイドを決定するのは十分ではない。さらには、それらを並び替えなければならない。算出時間またはネットワーク伝播遅延のみならず、考慮すべき偶然のリアルタイムの変動も関連する。検出されたパスイベントのタイムスタンプを、過去、すなわちボールに加速ピークが生じた時点にリセットしなければならない。
引き続く正しい決定またはイベントのための時間順の重要性のため、イベント検出器によって処理されるイベントの元の時間順を保証することが望ましい。
(まとめ)
本発明の実施形態は、異なるネットワーク通路を通じてイベント検出器に到達する、それゆえ異なる処理および/または伝播遅延が起こるイベントの元の時間順の回復が、後続のイベント検出器にイベントを転送または中継する前にイベントを適切に遅延させることによって達成しうるという発見に基づきうる。後続のイベント検出器にイベントが中継される時間は、個々のイベントの元のタイムスタンプと、出力イベントを決定するために後続のイベント検出器によって必要とされるすべての入力イベントの処理および/または伝播遅延とに基づきうる。
この目的のため、本発明の実施形態は、第1のイベントを第2のイベントに同期するための装置を提供する。第1のイベントは、共通クロック信号に基づき第1のイベントタイミング値に関連し、一方、第2のイベントは、共通クロック信号に基づき第2のイベントタイミング値に関連している。分散演算システムの異なる通路を通過する間、第1および第2のイベントにはそれぞれ異なる遅延が生じる。少なくとも1つ出力イベントは、イベント検出器によって第1および第2のイベントに基づき決定されるものである。実施形態によれば、同期するための装置は、第1および第2のイベントを受信するための入力部と、受信した第1および第2のイベントの中継版を、関連するイベント検出器に転送するための出力部とを備えた、イベント検出器に関連する遅延補償器を備えている。遅延補償器は、生じた遅延と、元のイベント発生時間をそれぞれ反映するイベントタイムスタンプとして参照されうる、関連する第1および第2のイベントタイミング値とに基づき、第1および第2のイベントを、関連するイベント検出器に中継または転送するように動作可能である。
同期装置としても記述されうる同期するための装置は、たとえば分散コンピュータネットワークまたはマルチコアプロセッサでありうる分散演算システムのノードにまたはノード内に備えられうる。コンピュータネットワークの場合、ノード、すなわち演算ノードは、たとえばイーサネット、または何らかの他の形態のネットワーク技術を通じて相互通信するコンピュータ装置または演算ユニット(たとえばCPU)を備えうる。さらに、同期装置は、同一のハードウェアノードにおいて動作するまたは当該ノードに実装されるイベント検出器に関連している。それゆえ、同期装置は、入ってきたイベントを、関連するイベント検出器に正しい順で転送するためのスケジューラとして解釈されうる。分散演算システムのノードにおいて実行されるすべてのシステムまたはネットワークノードおよび/またはイベント検出器は、共通クロック信号から得られうる共通の時間基盤を有する。イベントの発生時間または検出時間、すなわち、イベントタイミング値またはイベントタイムスタンプは、共通クロック信号から得られ、分散演算システムのすべてのノードに対して正確である。
イベントは、(生の)センサデータのみに基づくまたは当該データから得られる基本イベント、または、基本イベントに再び基づく合成イベントでありうる。これにより、センサデータは、分散システムに結合されている、いくつかの実施形態によれば特に無線位置開口部追跡ネットワークまたはシステムでありうるセンサネットワークから得られうる。この場合、センサデータは、幾何学的位置データサンプル、速度データサンプル、および/または加速度データサンプルを含む運動学的データをそれぞれ含みうる。個々のデータサンプルは、規定のサンプルデータ間隔にそれぞれ対応している。それゆえ、いくつかの実施形態によれば、第1および第2のイベントは、幾何学的位置決めシステムから得られる並行センサデータストリームに基づきうる。さらに第1および第2のイベントは、遅延補償器が動作しているまたは実装されている演算ノードである遅延補償器のノードに到達するために、異なるシステム通路を通じて移動するように、分散演算システムの異なる演算ノードにおいて元々生じうるかまたは検出されうる。
いくつかの実施形態によれば、遅延補償器は、第1および第2のイベントの少なくとも1つを、関連するイベント検出器にさらなる処理のために中継または転送する前に捕えかつ遅延させるためのバッファメモリを備えうる。第1および第2のイベントが、遅延補償器の入力部に、第1および第2のイベントの元の時間的発生または検出順に対応しない、それらの関連する元のイベントタイムスタンプから得られる時間的受信順に到達する場合、遅延補償器は、中継された第1および第2のイベントの時間順が、それらの元の時間的発生順に対応するように、第1および第2のイベントの双方を、関連するイベント検出器に中継するように動作可能である。これにより、元の発生時間順は、第1および第2のイベントが同期装置の遅延補償器に到達する前に元々起こったまたは検出された順に関連する。
遅延補償器の入力部に順番通りではなく到達しうる第1および第2のイベントの元の時間順を復活または回復させるために、遅延補償器は、第1および第2のイベントの中継版の相対的時間差が、第1および第2のイベントの元の相対的時間差に対応するように、第1および第2のイベントをそれぞれ中継するように動作可能でありうる。これは、第1および第2のイベントタイミング値に基づき、すなわち、第1および第2のイベントタイムスタンプ、および、関連する後続のイベント検出器のためのすべてのイベントが遅延される共通遅延値に基づき、関連するイベント検出器に第1および第2のイベントを中継または転送するための出力時点を決定することによって達成されうる。
必要な共通遅延値を最小にすることを保証するために、すなわち(少なくとも)2つのイベントの中継を可能な限り速くできるようにするため、遅延補償器は、第1および第2のイベントタイミング値および第1および第2のイベントの最大遅延に基づき、関連するイベント検出器に第1および第2のイベントを中継するための出力時間を決定するように動作可能でありうる。これにより、イベントの遅延はいくつかの理由が原因となりうる。たとえば、分散演算システム内のイベントの遅延は、異なるネットワーク通路における異なるジッタ状態、または、異なる処理期間および/または異なるネットワーク待ち時間が原因となって、発生しうる。言い換えれば、遅延補償器の入力部における第1および第2のイベントの受信順は、ジッタ状態、または、異なる処理期間および/または異なるネットワーク待ち時間が原因となって、第1および第2のイベントの元の発生順とは異なりうる。
本発明のいくつかの実施形態によれば、遅延補償器は、遅延補償器における第1および第2のイベントの受信時間、およびそれらにそれぞれ関連する、イベント発生を反映するイベントタイミング値に基づき、第1および第2のイベントのイベント遅延をそれぞれ測定または決定するように動作可能でありうる。イベントの発生またはアンテナ時間tイベント,ei(i=1,2,・・・)から遅延補償器の入力部へのイベントei(i=1,2,・・・)の伝播または信号伝達遅延をΔ(.)で表せば、遅延補償器は、いくつかの実施形態によれば、関連するイベント検出器に第1および第2のイベントを中継するための出力時点t出力,ei(i=1,2,・・・)を、次の式(1)に基づき決定するように動作可能でありうる。
ここで、max(.)は最大値演算子である。すなわち、遅延補償器は、第1および第2のイベントに関連する一組のイベント遅延から得られる最大の遅延値を決定するように動作可能でありうる。遅延補償器の実施形態によって中継されるイベントが2つよりも多い場合、次に、もちろん、遅延補償器は2つよりも多いイベントに関連する一組のイベント遅延から最大遅延値を得ることによって、共通遅延値を決定しうる。
ネットワークの負荷状況が変化する動的な分散演算システムでは、個々のノードの処理能力が変化する可能性、および、ネットワーク経路が動的に変化する可能性があるので、遅延補償器に到達するイベントの伝播または処理遅延には、静的である代わりに、時間に渡って変化する可能がある。それゆえ、遅延補償器は、以前に測定または決定された現在のおよび複数のイベント遅延に基づき、イベントjのイベント遅延Δ(ej)を決定するように適合されうるまたは動作可能でありうる。これにより、より最近のイベント遅延は、先行するイベント遅延よりも重みづけされうる。特定の実施形態では、遅延補償器は、次の式(2)によって、イベントjのイベント遅延Δ(ej)を決定するように適合されうる。
ここで、kは、k組の決定済みのイベント遅延を示し、Δ(e
j)(i)は、イベント検出器のi番目に決定された遅延を示し、i=1は直近に決定された遅延に対応し、σ(e
j)は、直近に決定された遅延Δ(e
j)の標準偏差を示し、θは、セキュリティ係数を示す。いくつかの実施形態では、係数θは、イベントjのイベント遅延Δ(e
j)の算出をより容易にしかつより複雑さを低減するために、零に設定しうる。式(2)の個々の被加数は、幾何学的列に応じて重みづけされる。充分に大きな「k」に対しては幾何学的列は2つに収束するので、係数1÷2は、正規化係数として機能する。θ・σ(e
j)は、直近の測定値の標準偏差を考慮して、セキュリティバッファとして機能しうる。たとえばθ=3の場合、たとえば、99.975%のセキュリティとして機能しうる。これにより、99.975%のセキュリティは、式(2)に応じて算出または予測された遅延が、対応する実際のまたは現実のネットワーク遅延よりも99.975%の確率で小さくないことを意味する。セキュリティバッファθ・σ(e
j)は、たとえば、遅延変動に対するネットワークの安定性を適合されうる。
同期装置およびそれゆえ遅延補償器は、中継または転送される第1および第2のイベントにさらなる異なるかつ予見できない信号遅延が起こらないように、分散演算システムの同一のノード(たとえばネットワークノード、プロセッサコアなど)に、関連するイベント検出器として好ましくは実装されうる。これにより、遅延補償器および/または関連するイベント検出器は、たとえばASIC(アプリケーション特異的集積回路)の形態でハードウェアに実装されうるか、または、たとえばプロセスとして演算ノードにおいて実行されるコンピュータプログラムのインスタンスによってソフトウェアに実装されうる。プロセスは、コンピュータコードおよびその現在の活動を含んでいる。オペレーティングシステム(OS)に基づき、プロセスは、指令を同時に実行する複数の実行スレッドによって構成されうる。たとえば、遅延補償器は、ネットワークまたは分散システムの異なるネットワークノード間に分散される、関連するイベント検出器をイベントに接続するミドルウェアソフトウェアコンポネントとして実装されうる。
遅延補償器は、イベント検出器に意味のあるイベント信号を受信する。分散演算システムを通じて異なる通路を通るイベントには異なる遅延が起こりうるので、受信されたイベントは、元の時間順から外れて遅延補償器に送達されうる。たとえば、第1のイベントが元々は第2のイベントの前に起こったにも関わらず、たとえばより高い伝播遅延が原因となって、第1のイベントは第2のイベントよりも遅れて遅延補償器に到達しうる。上述したように、遅延補償器は、イベントの発生タイムスタンプおよび遅延補償器における受信時間に基づき、イベントの遅延を決定しうる。イベントの元の時間順を回復し、かつ、同時に、起こりうる共通遅延を最小のみにするために、関心のあるどのイベントも皆、イベントの発生タイムスタンプおよび関心のあるすべてのイベントの最大遅延値に基づき決定される出力時点において、関連するイベント検出器に転送される。第1のイベントまたは第2のイベントを含むイベントストリームをイベント検出器に与えたとすると、遅延補償器は、関連するイベント検出器のために対象のイベントをキャッシュすることができるように、関連するイベント検出器の上流(すなわち前)に配置されうる。
本発明のさらなる局面によれば、少なくとも1つの(生の)センサデータストリームに基づきイベントを決定するための分散演算システムが提供される。コンピュータネットワークでありうる提供された分散演算システムは、それぞれがイベント検出器および本発明の実施形態に係る関連する同期するための装置を備えている複数の分散ノードを備えている。
いくつかの実施形態では、分散演算システムは、規定の幾何学的領域内にあるオブジェクトおよびすべての人を位置決めおよび/または追跡するための、位置決めされたオブジェクトの幾何学的場所を示すデータを有する少なくとも1つのセンサデータストリームを分散演算システムに提供する位置決めシステムに結合されうる。本明細書の導入部分ですでに説明したように、位置決めシステムは、無線センサネットワークに基づきうる。
基本イベントおよび/または合成イベントなどのイベントを検出するために、様々なイベント検出器が分散演算システムの異なるノードにおいて動作している。そのようなイベント検出器は、システムの状態に基づき、および/または、イベント検出器の複雑さまたは解析されるセンサデータに基づき、異なる負荷を、対応するノードおよび/または分散演算システム全体に引き起こしうる。それゆえ、元のシステム構成の前提または状態を変更するケースでは、様々なネットワークノードにおけるイベント検出器の元の分散は、算出負荷バランスに対して下限の最適状態になりうるか、または、分散演算システムをクラッシュさせることさえありうる。
そのような望ましくない負荷アンバランスは、たとえば、同期装置またはその遅延補償器の実施形態によって検出される。もし少なくとも1つのイベント遅延が法外に高い遅延に到達した場合、これは、対応するイベントが遅延補償器に到達する元のイベント検出器プロセスが過負荷になったか、またはそれに何らかの他の問題が生じたかという事実を示すものでありうる。そのようなケースでは、悪質な元のイベント検出器プロセスを、分散演算システムの何らかのハードウェア資源に転送または再配置することが望ましいかもしれない。たとえば、悪質なソースイベント検出器プロセスは、現在のノードから、もう1つの、利用可能なより一層のハードウェア資源を有する、分散演算システムの物理的に分離されかつ異なるノードに転送されうる。
この目的のため、本発明のさらなる局面によれば、分散演算システムの第1のノードの第1のイベント検出器プロセスを、第1のノードと異なる分散演算システムの第2のノードの第2のイベント検出器プロセスに転送するための装置もまた提供される。転送するための装置は、第1のイベント検出器プロセスのプロセス内容を第2のイベント検出器プロセスにコピーするための手段を備えている。さらに、装置は、第1のノードの入力イベントが第1および第2のイベント検出器プロセスの双方において並行して処理されるように、第1のイベント検出器プロセスの入力イベントを調停するための手段を備えている。さらに、第1および第2のイベント検出器プロセスの双方において並行して処理される第1のイベント検出器プロセスの入力イベントによって、第1および第2のイベント検出器プロセスにおける同一の出力イベントが起こったか否かを検証するための手段が備えられている。
いくつかの実施形態によれば、検証するための手段は、第1および第2のイベント検出器プロセスの双方における出力イベントが同一である場合に第1のイベント検出器プロセスをシャットダウンするように、または、第1および第2のイベント検出器プロセスの双方における出力イベントが同一ではない場合に第2のイベント検出器プロセスをシャットダウンするように動作可能でありうる。
本発明のさらにもう1つの局面によれば、第1のイベント検出器プロセスを転送する装置は、好ましくは、しかし排他的ではなく、第1および第2のイベントを同期するための装置と組み合わせて、分散演算システムに統合されうる。そのような分散演算システムは、それゆえ、それぞれが本発明の実施形態に係る同期するための装置を備えている複数の分散ノードと、上述した特徴を備えている、上述した特性を備えた、分散演算システムの第1のノードの第1のイベント検出器プロセスを、分散演算システムの第2のノードの第2のイベント検出器プロセスに転送するための装置とを備えている。
イベントを同期するための装置と、イベント検出器プロセスを転送するための装置とは、これにより、記述した様式によって相乗効果的に協働しうる。すなわち、同期するための装置は、遅延および、それゆえ、分散演算システム内の負荷異常を検出することができ、一方、転送するための装置はイベント検出器の分散をよりよく均衡させ、より小さい全体遅延およびより低い負荷を実現するためにイベント検出器プロセスを転送しうる。イベント検出器の分散は、様々なイベント検出器プロセス分散基準に基づき行われうる。本発明の異なる局面によれば、最適なイベント検出器プロセス分布基準によって、分散演算システムのすべてのイベントにおける最小の全体的な遅延、分散演算システムにおける最小の数の安全なイベント契約、分散演算システムの任意のノードの最小の負荷変動、または、分散演算システムの最小の全体的な負荷のうちの一つが得られる。これにより、イベント検出器プロセス、またはこれに関連するイベントスケジューラは、出力イベントを決定するためにイベント検出器プロセスによって必要とされるイベントを利用しうる。特定の入力イベントがイベント検出器に対して絶対に義務である場合、それは上記入力イベントを「安全に利用」する。この場合、争点のイベントは、エラー制御伝達概念(たとえば自動再送要求(たとえばARQ))を通じて、イベント検出器/スケジューラに送られる。
本発明のよりさらなる局面は、共通クロック信号に基づく第1の(元の)イベントタイミング値に関する第1のイベントと、共通クロック信号に基づく第2のイベントタイミング値に関する第2の(元の)イベントとを同期させるための方法であって、第1および第2のイベントは、分散演算システムの異なる経路を通過する際に異なる遅延を発生させる方法も提供する。この方法は、遅延補償器において、第1および第2のイベントを、関連するイベント検出器に中継する工程であって、第1および第2のイベントが、生じた遅延および関係する第1および第2の(元の)イベントタイミング値に基づき、関係するイベント検出器に中継される工程を含んでいる。同期するためのこの方法は、さらに、遅延補償器に関連するイベント検出器において、中継された第1および第2のイベントに基づき、少なくとも1つの出力イベントを検出する工程も含んでいる。
いくつかの実施形態は、第1のイベントおよび第2のイベントを同期するための方法を実行するための装置にインストールされたデジタル制御回路を備えている。そのようなデジタル制御回路、たとえばデジタルシグナルプロセッサ(DSP)は、それなりにプログラムされる必要がある。それゆえ、コンピュータプログラムがコンピュータまたはデジタルプロセッサにおいて実行される場合、より一層のさらなる実施形態もまた、方法の実施形態を実行するためのプログラムコードを有するコンピュータプログラムを提供する。
本発明に係る実施形態の1つの利点は、最小の遅延のみを伴って、イベントが認識/検出されかつ後続のイベント検出器に転送されうることである。本発明の実施形態は、イベントの転送時に遅延がより小さくなることが、不適切な後続のイベント検出器を危険にさらすことなく容易にはできないように、実装されうる。また、分散システムの実施形態が特定のイベント遅延を自動的に測定しかつ管理するので、本発明の実施形態を用いることによって、イベント検出器の開発者は、特定のイベント検出器遅延に対する如何なる特別な知識をも持たずに済む。
もう1つの利点は、本発明の実施形態に係る分散演算システムの自己組織化において見られ得る。そのような分散演算システムは、分散システムまたはネットワークが、頑強かつ効率的なイベント信号処理を常に行えるように、イベント検出器プロセスをネットワークノード間に転送することによってシステム状態を変更しうる。
〔図面の簡単な説明〕
装置および/または方法のいくつかの実施形態を、添付図面を参照して例示のみを通じて以下に説明する。
図1は、サッカー特有のオフサイドイベントの検出事例を示す。
図2は、本発明の実施形態に係る、第1のイベントを第2のイベントに同期させるための装置のブロック図を模式的に示す。
図3は、第1のイベントを第2のイベントに同期させるための装置が、分散ネットワークと、関連するイベント検出器ソフトウェアとの間におけるミドルウェアとして実装される本発明の実施形態を模式的に示す。
図4は、イベント検出器が必要とする4つのイベントA、B、C、およびDのタイミングテーブルを示す。
図5は、本発明の実施形態に係るイベントスケジューリングを模式的に図示する。
図6は、第1のイベントを第2のイベントに同期させるための方法の一例のフローチャートを模式的に示す。
図7は、イベントを同期するための装置の実施形態を備えている複数の分散演算ノードを備えている、少なくとも1つのセンサデータストリームに基づきイベントを決定するための分散演算システムの実施形態を示す。
図8は、分散演算システムの第1のノードの第1のイベント検出器プロセスを、分散演算システムの第2のノードの第2のイベント検出器プロセスに転送するための装置の実施形態を模式的に図示する。
図9は、分散演算システムの第1のノードの第1のイベント検出器プロセスを、分散演算システムの第2のノードの第2のイベント検出器プロセスに転送するための方法の実施形態のフローチャートを模式的に図示する。
〔実施形態の記述〕
いくつかの実施形態を図示した添付図面を参照することによって、様々な実施形態例をより十分に説明する。図では、明瞭化のために、層および/または領域の厚さを誇張している。
したがって、実施形態例には様々な改変および代替形態が可能であるが、実施形態を図の例を通じて示し、ここに詳細に記述する。しかし、実施形態例を特定の開示された型に限定する意図はないが、しかしその逆に、実施形態例が、本発明の範囲内にあるすべての改変物、同等物、および代替物に及ぶことが理解されるべきである。図面の記述全体を通じて、同一の数字は、同一または類似の要素を示す。
ある要素がもう1つの要素に対して「接続される」または「結合される」と記述されるとき、それが他の要素に直接的に接続または結合されることが可能であるか、または、間に入る要素が存在しうる。対照的に、ある要素がもう1つの要素に「直接接続される」または「直接結合される」と記述されるとき、間に入る要素は存在しない。要素間の関係を記述する他の用語が用いられるときも、同様に解釈されるべきである(たとえば、「間に」に対する「直接的な間に」、「隣接する」に対する「直接的に隣接する」など)。
ここに用いられる用語は、特定の実施形態のみを記述する目的のためのものであり、実施形態例を限定することを意図しない。ここで用いられるように、文脈によってその他の場合が示される場合を除き、単数形は複数も同様に含む。「備える」、「備えている」、「含む」、および/または「含んでいる」という用語は、ここに用いられるとき、言及された特性、整数、工程、動作、要素、および/または部品を特定するが、1つまたはそれ以上の他の特性、整数、工程、動作、要素、部品、および/またはグループの存在を除外しないことがさらに理解される。
他に規定されない限り、ここに用いられるすべての用語(技術用語および科学用語を含む)は、実施形態例が属する業界における当業者の一人によって共通に理解される意味と同じ意味を有する。さらに、たとえば、共通して用いられる辞書に定義された用語は、関連する技術の文脈におけるその意味に一致する意味を有し、かつ、理想的または極端に形式的な意味に定義されるように表現されない限り、そのように解釈されはしないことが理解される。
図2は、第1のイベント202を第2のイベント204に同期させるための装置200の実施形態を図示する。
第1のイベント202は、共通クロック参照信号に基づく第1の元のイベントタイミング値またはタイムスタンプに関連している。第2のイベント204もまた、共通クロック信号に基づく第2の元のイベントタイミング値またはタイムスタンプに関連している。第1および第2の元のイベントタイミング値は、元のイベント発生時点を表す。共通クロック信号は、分散演算システムにおけるすべての別個のノードに対して有効な全体システム時刻を生成する。イベントを同期するための装置200に到達する前に、第1および第2のイベント202,204には、分散演算システムの異なる通路または経路を通る間に、それぞれ異なる遅延が生じる(図2には示さない)。2つのイベント202,204に基づき、少なくとも1つの出力イベント206がイベント202,204を同期する装置200の後に位置する(に後続する)またはその下流に位置するように配置されるイベント検出器208によって決定される。
いくつかの実施形態ではイベント検出器208のためのイベントスケジューラであるとも見做される同期装置200は、後段のイベント検出器208に関連するかまたは関する、遅延補償手段とも表記される遅延補償器210を備えている。遅延補償器210は、分散ネットワークから第1および第2のイベント202,204を受信するための入力部212−1,212を有する。さらに、遅延補償器210は、受信した第1および第2のイベント202,204の中継版を、関連するイベント検出器208に中継または転送するための出力部214−1,214−2を有する。遅延補償器210は、イベント202,204に生じた遅延と、2つのイベント202,204に関連する第1および第2のイベントタイミング値またはタイムスタンプとに基づき、関連するイベント検出器208に第1および第2のイベント202,204を中継するように動作可能である。
分散演算システム300(ネットワーク形態)のセットアップ例、様々なイベント検出器208、および複数のイベントを同期するための装置200の実施形態を、図3に模式的に図示する。
図3は、「イベントコア」として例示的に示される同期装置200に出力イベント206および生センサデータ304が到達する分散ネットワーク300を模式的に図示する。同期装置200は、一方では、出力イベント206および/または生センサデータ304を、下のネットワーク300から受信することによって、他方では、一定の必要な出力または中継時点において、同期装置200に結合した複数のイベント検出器208にそれらを転送することによって、イベントスケジューラとして動作しうる。同期装置200は、後続のイベント検出器208に必要な異なる出力イベント206および/またはセンサデータ304を同期するように適合されうる。これにより、同期装置200は、後続のそれぞれのイベント検出器208に必要な出力イベント302または304を個別に同期することができるように、分散様式で実装されうる。すなわち、イベントコア装置200は、後続の複数の検出器208の1つにそれぞれが関連する複数の遅延補償器210またはそのインスタンスを備えうる。これにより、遅延補償器インスタンス210および関連するイベント検出器208を、好ましくは、1つの共通ネットワークノードに実装しうる。いくつかの実施形態によれば、同期装置200およびその遅延補償器インスタンス210を、ネットワーク300とイベント検出器208との間のミドルウェアとして実装しうる。
同期装置200またはその異なるインスタンスに共通クロック信号306が提供され、これにより、図3に示す分散システム設計のすべての遅延補償器および/またはイベント検出器インスタンス210,208の時間同期が可能になる。それゆえ、どの遅延補償器210も、共通時間基準へのアクセス権利を有する。言い換えれば、すべての(分散された)同期装置または遅延補償器インスタンス200,210は、与えられた如何なる時刻においても同一のシステムタイムスタンプを取得しうる。遅延補償器インスタンス210がイベント302または304を受信する場合、関連する後続のイベント検出器インスタンス208のための上記イベントを、必要な時間量の分だけバッファしうる。この時間量は、イベント検出器インスタンス208が必要としかつより速いタイムスタンプを運ぶイベントが受信されない充分に高い確率に対応する。
より詳細に、次の例を見てみよう:入力イベントに基づき複合的な出力イベントEを正しく決定または検出することができるために、任意のイベント検出器208が、イベントA、B、C、Dを必要とする。どのネットワークインスタンスも全体の共通クロック信号306によって同期されるので、イベントごとに検出時間を関連させることができる(図4の中央カラム)。これにより、限定的な処理速度のせいで、イベントの検出時点は、イベントの実際の発生時点よりも必然的に遅れる(図4の左カラムを参照)。
この例では、イベントAの発生時間tイベント,Aは10であるが、しかし、検出時間t検出,A=14のときにイベント検出器によって検出されるのみである。合成イベントEを検出するための後続の合成イベント検出器は、tED,A=15の時点でイベントBを取得する。すなわち、イベントEのための合成イベント検出器は、イベントAを受信する前にイベントBを受信するが、しかしイベントAはイベントBよりも実際には早く発生している。処理遅延およびネットワーク電波遅延のために、イベントAよりも後に現れるイベントCもまた、後続の合成イベント検出器によって早く受信される。
この例から、本発明の実施形態を用いなければ、イベントEのための後続の合成イベント検出器は、必要なイベントA、B、C、およびDを時間順(図4の最も右のカラムを参照)に受信するが、これは、元の通常順または時間順(図4の最も左のカラムを参照)とは異なることが分かりうる。それゆえ、必要なイベントA、B、C、およびDを後続の合成イベント検出器に転送する前の元の時間順に対応する時間順を回復させるために、必要なイベントA、B、C、およびDを適切に並び替えることが、本発明の実施形態の課題である。この目的のため、合成同期装置200のインスタンスを、関連するイベント検出器と共に各ネットワークノードに実装しうる。
実施形態によれば、(分散された可能性のある)同期装置200の遅延補償器210は、遅延補償器210において受信された必要なイベントA、B、C、およびDの中継版の時間順が、複数の必要なイベントA、B、C、およびDの元の時間順に対応するように、必要な複数のイベントを、関連するイベント検出器に中継するように動作可能でありうる。この目的のため、遅延補償器210は、中継された個々のイベント間の相対的時間差が、個々のイベントA、B、C、およびD間の元の相対的時間差にそれぞれ対応するように、複数のイベントA、B、C、およびDのそれぞれを中継しうる。遅延補償器210は、元の時間的イベント順を回復させるために、複数のイベントA、B、C、およびDのそれぞれに対する出力時点を決定しうる。これにより、イベントが、関連するイベント検出器に、その対応する出力時点で中継される。イベントの出力時点は、共通遅延値とイベントA、B、C、およびDの元の発生時点とに基づき決定しうる。
上記の例を考慮すると、同期装置インスタンス200、および、それゆえ、これに備えられる遅延補償器インスタンス210は、以下のイベント遅延を、実際の発生を反映するそれらの各受信時間とそれらのそれぞれに関連する元のイベントタイミング値とに基づき測定または決定しうる。
明らかに、遅延補償器210におけるイベントAの受信は、後続の合成イベント検出器によって必要な他のイベントB、C、およびDに比べて、実質的により長い。この原因は、たとえば、ネットワーク300を通じた伝播時間をより長くする遠くのリモート演算ノードにおけるイベントAの検出、または、より長い計算時間が必要なより複雑な計算アルゴリズムによって検出されるイベントAでありうる。例示の場合では、イベントAの長い遅延の原因は、おそらく、4つのクロックサイクルまたは時間間隔を要するイベント検出である。
関心のあるすべてのイベントのすべての遅延を充分頻繁に測定または検出し、かつ、次の状態にあると仮定する:時点tDC,CにおいてイベントCが遅延補償器210を備えている同期装置200に到達する。イベントCは、イベントCが時点999において生じたことを示すイベントタイミング値Iイベント,C=999を有する。遅延補償器210は、関心のあるすべてのイベント、すなわち、関連する後続の合成イベント検出器208が必要とするイベントA、B、C、およびDの遅延を見て、イベントCが、関連する後続の合成イベント検出器に転送されるまでにどのくらいの長さ遅延しなければならないのかを決定する。なお、遅延補償器210は、関連する後続のイベント検出器208によってイベントA、B、C、およびDが必要とされることのみを知り、どの程度またはどの目的のためなのかは知らない。
関連する後続のイベント検出器208にイベントCを中継するための出力時点は、次の式(3)によって決定しうる。
式(3)において、A、B、C、およびDは、第1〜第4のイベントをそれぞれ示し、Δ(.)は、イベントが起こってから、関連する後続のイベント検出器208に関連する遅延補償器210の入力部までのイベントの遅延を示し、max(.)は、最大値演算子を示し、t
出力,Cは、中継されたイベントCの出力時点を示す。
一般に、遅延補償器210は、K組の必要なイベントからイベントejを中継する出力時点を、次の式(4)によって決定するように動作可能でありうる。
ネットワーク300の負荷状況が変化する動的な分散演算システムでは、個々のノードの処理能力が変化する可能性、および/または、ネットワーク経路が動的に変化する可能性があるので、遅延補償器インスタンス210に到達するイベントの伝播または処理遅延には、静的である代わりに、時間に渡って変化する可能がある。遅延補償器210は、上記e
jに対して以前に測定または決定された現在のおよび複数のイベント遅延に基づき、K組のイベントからイベント遅延値Δ(e
j)を決定することによって、これを算出する。これにより、より最近のイベント遅延は、先行するイベント遅延よりも重みづけされうる。特定の実施形態では、遅延補償器210は、上述した式(2)によって、イベントe
jのイベント遅延Δ(e
j)を決定するように適合されうる。
上記の単純な例に戻り、イベントCを、出力時点t出力,C=1005において、関連する後続のイベント検出器208に転送しうる。これは確かに、イベントA、B、およびDがイベントCの前に偶然に生じなかったと言いうる時点である。我々の例では、関連する後続のイベント検出器208は、以下の表に示す中継時点または出力時点において以下のイベントを転送するようになっている。
上記の表から理解できるように、イベントA、B、C、およびDは、遅延補償器210によって、関連する後続のイベント検出器208に、元の発生時間順に応じた正しい順で転送されている。
遅延補償器210を備えた同期装置200の動作原理を、図5に模式的に図示する。
参照番号502で示す入力イベントは、元のイベントタイミング値tイベントおよびイベント識別子(イベントID)を含んでいる。さらに、出力時間値t出力はイベント502に関連している。イベントの出力または遅延時間t出力は、元のイベント時間tイベント、および図5の例では79である共通遅延係数δに基づき決定されうる。調停遅延値の可能な算出方法は上記に記述されている。後続のまたは下流のイベント検出器208に中継されるイベント502は、次に、同期装置200の中継またはスケジューリングバッファ504に挿入されうる。入力イベントのバッファ504への挿入は、関連する後続のイベント検出器208にイベントが転送される、その決定された出力時点t出力に基づきうる。遅延補償器210の入力部212にちょうど到達した例示のイベント502では、出力時点t出力は367であると算出されている。この理由のため、それはそれぞれ出力時間364および369にスケジュール(すなわち転送)される2つのバッファされたイベント間に挿入される。図示の例では79である現在の共通遅延値δに応じてイベントが遅延した後、イベントバッファ504におけるイベントは、後続のイベント検出器208にスケジューリングまたは通知、すなわち転送される。関連するイベント検出器208にイベントが転送された後、イベントは、バッファ503における次のイベントがスケジューリングされる前に削除されうる。
図6は、本発明の実施形態に基づく、イベントAおよびイベントBを同期するための方法600のフローチャートを模式的に図示する。
上に言及したように、2つのイベント202,204は、共通クロック信号306に基づく第1および第2のタイムスタンプtイベント,e1,tイベント,e2に関連する。さらに、分散演算システム300における異なる経路を通過する間、第1および第2のイベントの双方において、異なる遅延Δ(e1),Δ(e2)が生じる。イベント202,204を同期するために、同期方法600は、遅延補償器210において、第1および第2のイベント202,204を、関連するイベント検出器208に中継する工程602を含んでいる。この工程において、第1および第2のイベント202,204は、生じた遅延Δ(e1),Δ(e2)および関連する第1および第2のタイムスタンプtイベント,e2,tイベント,e2に基づき中継される。さらに同期方法600は、遅延補償器210に関連するイベント検出器208において、中継された第1および第2の入力イベント202’,204’に基づき少なくとも1つの出力イベント206を検出する工程604を含んでいる。中継された第1および第2の入力イベント202’,204’は第1および第2の入力イベントの中継版とも表記されうる。典型的にはこれらの中継版はそれぞれ第1および第2のイベント202,204に等しい。しかしこれらは同期装置200または遅延補償器210によって時間的に遅延されうる。
記述した概念は、決定または測定されたイベント遅延が利用可能である場合に限り正しく機能する。システムの開始直後、イベント遅延は未知である。しかし、システムの開始後、初期のイベント遅延を遅延補償器210に提供することは可能である。そのような初期のイベント遅延は、それぞれのイベントの最悪の場合に基づきうる。あるいは、遅延装置は、どの同期装置インスタンス200も皆、以前のネットワーク状態の設定を取得し、分散演算システムのどのノードにおいてどのイベントが実行されたかの情報をそれが有するので、それゆえ、ネットワークの現在の設定の遅延を見積もりうるように、シャットダウンする前におけるイベント遅延に対する知見を保存しうる。
測定された遅延値は、異なるネットワークおよび/またはCPU負荷状況において測定されうる。これは、測定されたそれぞれの遅延値の適切な正規化によって説明されうる。たとえば、現在の負荷状況を反映する正規化係数は、上記した現在負荷状況において測定された遅延値に対して適用されうる90。たとえば、正規化負荷状況に対応する正規化係数はその1つでありうる。高負荷状況において遅延値が決定される場合、これは、1よりも大きい正規化係数によって反映されうる。対照的に、低負荷状況における遅延値が決定される場合、これは1よりも小さい正規化係数によって反映されうる。たとえば式(2)において各遅延値に対して適用される実際の重みづけは、測定された遅延の正規化係数と、現在の負荷状況に関連する現在の正規化係数との関係に依存しうる。遅延値が決定される負荷状況よりも現在の負荷状況が小さい場合、このようなアプローチによって、より小さいまたはより低い負荷状況を説明するために、実際に測定された遅延値よりも小さい正規化遅延値が得られる。
図7は、本発明のさらなる実施形態を模式的に図示する。
図7は、少なくとも1つのセンサまたはデータストリーム702−1,702−2に基づきイベントを決定するための分散演算システム700を模式的に示す。たとえば分散コンピュータネットワークまたはマルチコアプロセッサでありうる分散演算システム700は、本発明の実施形態に基づく同期するための装置200を備えている複数の分散演算ノード704を備えている。
本発明の実施形態によれば、演算ノード704はそれゆえ遅延補償器210と共に同期装置200を備えうる。また、同期装置200を備えている各ノード700は、また、関連するイベント検出器208を備えている。例示の実施形態によれば、演算ノード704は分散信号プロセッサまたはコンピュータでありうる。いくつかの他の実施形態では、ノード704はまた、同じコンピュータ装置に実装されているマルチコアプロセッサユニットの異なる過程でありえ、それゆえ、本質的に同じ幾何学的位置に位置しうる。
本発明の実施形態は、たとえばサッカー、アメリカンフットボール、ラグビー、テニスなどの球技イベントの選手およびすべての位置の追跡に用いられうる無線追跡システムから生じるイベントの検出に特に関連している。それゆえ、分散演算システム700は、たとえばサッカー場でありうる規定の幾何学的領域内にあるオブジェクトおよびすべての人を位置決めおよび/または追跡するためのそのような無線追跡システムまたは位置決めシステムに結合されうる。位置決めシステムは、位置決めされたオブジェクトの幾何学的位置を示すデータを有する少なくとも1つのセンサデータストリーム702−1,702−2を分散演算システム700に入力する。さらに、センサデータストリームは、位置決めされたオブジェクトの他の運動学的データを有しうる。
基本イベントおよび/または合成イベントなどのイベントを検出するために、様々な遅延補償器210が、分散演算システム700の異なるノード704において動作している。そのようなイベント検出器またはイベント検出器インスタンス208は、それらのそれぞれのノード704および/または分散演算システム700全体において、システム700の現在の状態に基づき、または、解析されるイベント検出器208および/またはセンサデータストリーム702−1,702−2に基づき、異なる負荷をお引き起こしうる。それゆえ、元のシステム構成、すなわち様々なネットワークノード704におけるイベント検出器208の分散、の前提または状態を変更するケースでは、現在のシステム設定は、下限の最適状態になりうるか、または、分散演算システム700をクラッシュさせることさえありうる。
後にアンバランスなイベント遅延をももたらすそのような望ましくない負荷アンバランスは、同期装置200、または特にその遅延補償器または遅延補償器インスタンス210の実施形態によって、検出されうる。少なくとも1つの測定または検出されたイベント検出器208Δ(.)が、法外に高い値に到達したとき、これは、対応するイベントを運びかつ遅延補償器210の上流に位置するイベント検出器プロセスが負荷過剰になりうるかまたはいくつかの他の問題に遭遇しうることを示しうる。そのようなケースでは、悪質さを起こしつつあるイベント検出装器プロセスを、分散演算システム700の他のハードウェア資源またはノード704に転送または再配置することが望ましいかもしれない。たとえば、悪質なイベント検出器プロセスは、その現在のノード704から、もう一つの、分散演算システム700の物理的に分離された異なるノード704に転送されうる。この目的のため、本発明のさらなる局面によれば、異なるノード704間においてイベント検出器インスタンス208を転送するための装置800もまた提供される。転送するための装置800の実施形態は、同期装置200および/または分散演算システム700の実施形態と組み合わせうる。
図8は、転送装置としても記述されうる、転送するための装置800の実施形態の模式的なブロック図を模式的に図示する。
転送装置800は、分散演算システム700の第1のノード704−1の第1のイベント検出器プロセスを、分散演算システム700の第2のノード704−2の第2のイベント検出器プロセスに転送する役割を果たす。これにより、第2のノード704−2は、たとえばその幾何学的位置またはマルチコアプロセッサの異なるプロセスユニットのいずれかに関して第1のノード704−1とは異なる。転送装置800は、第1のイベント検出器プロセスのプロセス内容を第2のイベント検出器プロセスにコピーするための手段802を備えている。さらに転送装置800は、第1のイベント検出器プロセスの入力イベントが、第1および第2のイベント検出器プロセスの双方において並行して処理されるように、第1のイベント検出器プロセスの入力イベントを調停するための手段804を備えている。さらに転送装置800は、第1および第2のイベント検出器プロセスの双方において並行して処理される第1のイベント検出器プロセスの入力イベントによって、第1および第2のイベント検出器プロセスの双方において同一の出力イベントが生じたかを検証するための手段806を備えている。
プロセスは、通常、ネットワークノードによって備えられうる、コンピュータ装置において実行されるコンピュータプログラムのインスタンスとして理解されるものである。プロセスは、コンピュータプログラムのプログラムコードおよびその現在の機能を備えている。イベント検出器プロセスは、コンピュータプログラムを設計するために用いられる挙動モデルとして理解されうる状態機械を備えうる。状態機械は、遷移に関連する(有限の)多くの状態を含んでいる。遷移は、1つの状態から開始しもう1つの(または同じ)状態に終了する一組の活動である。遷移は、たとえばプロセスに対する初期または合成イベントの入力でありうるトリガによって開始される。それゆえ、本発明の局面によれば、イベント検出器プロセスは、状態機械を備えることができ、イベント検出器プロセスの内容または記憶は、上記状態機械の現在の状態を、たとえば、個々の変数または変数の組として反映しうる。
第1のノード704−1の第1のイベント検出器プロセスを引き継ぐための一組の可能なまたは代替の第2のノード704−2が存在する実施形態では、転送装置800は、さらに、最適なイベント検出器プロセス分布基準に基づき、一群のノード候補から第2のノード704−2を決定するための手段808を備えうる。これにより、最適なイベント検出器プロセス分布基準によって、分散演算システム700のすべてのイベントにおける最小の全体的な遅延、分散演算システム700における最小の数の安全なイベント契約、分散演算システム700の任意のノードの最小の負荷変動、または、分散演算システムの最小の全体的な負荷のうちの一つが得られる。
決定するための手段808のための手段は、たとえば、個々のノード704の負荷および全体システム700の負荷を含む全体ネットワーク状態の情報を有する中央ネットワークエンティティを備えうる。そのような中央ネットワークエンティティは、分散ネットワーク700を通過するイベントのすべての遅延時間Δ(.)の情報もまた有しうる。そのような場合、中央ネットワークエンティティは、より負荷が重いノード704−1からより負荷が軽いノード704−2へのイベント検出器プロセスの転送を開始しうる。または、分散演算システム700における1つまたはそれ以上のイベント遅延を低減するために、異なるノード704−2,704−2間のイベント検出器プロセス転送を開始しうる。
もう1つの実施形態によれば、決定するための手段808は、同期装置200または遅延補償器インスタンス210をも備えうるか、または、同期装置200または遅延補償器インスタンス210によって備えられうる。遅延補償器インスタンス210は、関連する後続のまたは下流のイベント検出器プロセスに遅延補償器インスタンス210が中継するイベントの遅延を知っている。たとえば、遅延補償器インスタンス210が、元のまたは上流のイベント検出器から起こるイベントの法外に高い遅延を測定する場合、遅延補償器インスタンス210は、イベント遅延を低減するために、その現在のネットワークノードからもう1つのネットワークノードへの上記の上流イベント検出器プロセスの転送を開始しうる。遅延補償器インスタンス210が、分散システム700における個々のノード704の負荷状況についてさらに知らない場合、これはたとえば単純な試みかつエラー処置になりうる。
いくつかの実施形態によれば、転送装置800はさらに、第2のイベント検出器プロセスを得るために、第1のイベント検出器プロセスに対応するプロセスインスタンスを第2のノード704−2に生成するための手段810を備えうる。全体のプロセス転送手順は、たとえば、コンピュータハードウェア資源を管理し、共通サービスをたとえばイベント検出器プロセスなどのアプリケーションソフトウェアに提供する一組のプログラムとして理解されるオペレーティングシステム(OS)の助けによって行われうる、そのようなOSサービスは、プロセス内容をコピーする手段802がアクセスしうるインスタンス化機能をも備えうる。すなわち、生成するための手段810は、個々の演算ノード704−1,704−2において実行されているオペレーティングシステムのプロセスインスタンス化機能にアクセスするための手段を備えうる。第2のノード704−2の第2のイベント検出器プロセスがインスタンス化されるとすぐに、入力信号として分散システムから同一のイベントまたはイベントストリームを受信するために、第1のノード704−1の第1第2のイベント検出器プロセスが利用したものと同一のイベントを利用しうる。言い換えると、インスタンスを生成するための手段810は第2のノード704−2に第2のイベント検出器プロセスをインスタンス化した後、第2のイベント検出器プロセスを同一入力イベントのための第2のイベント検出器プロセスを、第1のイベント検出器プロセスとして利用するように動作可能でありうる。
OSサービスは、さらに、プロセス内容をコピーするためのコピー手段802がアクセスしうるコピー機能を備えうる。すなわち、コピー手段802は、分散システム700の演算ノード704−1,704−2または何らかの他の制御エンティティにおいて実行されるオペレーティングシステムのプロセスコピー機能にアクセスするための手段を備えうる。コピーする手段802は、第1のイベント検出器プロセスの規定された状態を取得するために、第1のイベント検出器プロセスのプロセス内容を規定の時点で「凍結」するように動作可能でありうる。ここで「凍結」とは、イベント検出器プロセスがその入力に対して応答することを停止することを意味する。コピー手段802はさらに、第2のイベント検出器プロセスにおいて同一の規定された状態を取得するために、凍結されたプロセス内容を第1のイベント検出器プロセスから第2のイベント検出器プロセスにコピーするように適合されうる。これによりコピー手段802は、コピー手順の残りの間に変わらない内容が先にコピーされるように、プロセス内容を第1のイベント検出器プロセスから第2のイベント検出器プロセスに繰り返しコピーするように動作可能でありうる。それゆえ、第1のイベント検出器プロセスに含まれるデータは、第1のノード704−1から第2のノード704−2に複数回繰り返してコピーされうる。これにより、どのデータがイベント検出器208の状態情報に属するかが規定されるべきである。たとえば、プロセスの場合これはプロセスメモリである。プロセス内容を繰り返しコピーする間、コピーされるプロセス内容の相違またはギャップ(すなわちデルタ)は徐々に小さくなるが、相違は依然として小さいまま残り、しかし零ではない。
新しいすなわち第2のイベント検出器プロセスが第2のノード704−2において開始されるかまたは切り替わる前に、双方のイベント検出器プロセスの(同一の)入力データは、同一の規定された内部状態を理想的にはすでに有する双方のイベント検出器プロセスもまた、事前に規定された時点すなわち「凍結」点から開始される同一の外部入力データを取得するように、バッファされうる。それゆえ、コピーするための手段802はまた、第1のイベント検出器プロセスから第2のイベント検出器プロセスにプロセス内容をコピーする間およびコピーした後、第1のイベント検出器プロセスの入力イベントをバッファするように動作可能でありうる。
関連する内容のすべてが第1の(古い)イベント検出器プロセスから第2の(新しい)イベント検出器プロセスにコピーされ、かつ入力データがバッファされたとき、双方のイベント検出器プロセスは、第1および第2のイベント検出器プロセスの内部状況または状態が同一であれば、(理想的には同一の)バッファされた入力データ(イベント)の並行処理のために起動しうる。すなわち、双方のイベント検出器は、コピーおよびバッファ手続きの後、入れ替わり、分岐され、それゆえ同一の入力データを並行して処理する。この目的のため、調停するための手段804は、規定の(凍結)時点からかつコピーされたプロセス内容に基づき、第1および第2のイベント検出器プロセスの双方において並行して第1のイベント検出器プロセスの入力イベントを処理するように動作可能でありうる。同様に、調停する手段804は、たとえば、この目的のためにOSにアクセスしうる。
検証するための手段806、たとえば比較器は、それから、双方のイベント検出器プロセスが、同一の出力にそれぞれ至ったか否かを検証する。これがそうである場合、古いすなわち第1のイベント検出器プロセスは切り替わりうる。これがそうではない場合、コピーおよび/またはバッファ手続きは、おそらく失敗しており、新しい(すなわち第2の)イベント検出器プロセスは、全体の転送手続きを最初から開始するためにシャットダウンしうる。それゆえ、いくつかの実施形態によれば、検証するための手段806は、第1および第2のイベント検出器プロセスの双方における出力イベントが同一である場合、第1のイベント検出器プロセスをシャットダウンするか、または、第1および第2のイベント検出器プロセスの双方における出力イベントが同一ではない場合に第2のイベント検出器プロセスをシャットダウンするように動作可能でありうる。
上に言及したように、転送装置800の実施形態は、同期装置200の実施形態と相乗効果的に補完し合うので、両者を組み合わせうる。それゆえ、本発明のいくつかの局面はまた、複数の分散演算ノード704と、分散演算システム700の第1のノード704−1の第1のイベント検出器プロセスを、分散演算システム700の第2のノード704−2の第2のイベント検出器プロセスに転送するためのイベントプロセス転送装置800の実施形態とを備えている、1つのセンサデータストリームに基づきイベントを決定するための分散演算システム700を提供する。さらに、複数の分散演算ノード704のそれぞれは、共通クロック信号に基づき第1のイベント時間tイベント,e1に関連する第1のイベント202と、共通クロック信号に基づき第2のイベント時間tイベント,e2に関連する第2のイベント204とを同期するための、第1および第2のイベント202,204(またはe1およびe2)には、分散演算システム700の異なる行路または通路を通る間に異なる遅延Δ(e1),Δ(e2)が発生し、少なくとも1つの出力イベント206が、第1および第2のイベント202,204(またはe1およびe2)に基づきイベント検出器(プロセス)208によって決定される装置200を備えている。図2を参照してすでに説明したように、イベント202,204を同期するための装置200は、第1および第2のイベント202,204を受信するための入力部212−1,212−2と、受信した第1および第2のイベントの中継版202’,204’を関連するイベント検出器208に転送するための出力部214−1,214−2とを有し、かつイベント検出器208に関連する遅延補償器210を備えている。より詳しく上に説明しているように、遅延補償器210の実施形態は、生じた遅延Δ(e1),Δ(e2)と、関連する第1および第2のイベント時間tイベント,e1,tイベント,e2とに基づき、第1および第2のイベント202,204を、関連するイベント検出器208に中継するように動作可能である。
イベント検出器が、好ましくは実行中または動作中に、1つのノードからもう1つのノードに転送されうる本発明の局面もまた、分散演算システム700の第1のノード704−1の第1のイベント検出器プロセスを、分散演算システム700の第2のノード704−2の第2のイベント検出器プロセスに転送するための方法を備えている。そのような転送方法900の模式的なフローチャートを図9に図示する。
転送方法900は、第1のイベント検出器プロセスのプロセス内容を、第2のイベント検出器プロセスにコピーする工程902を含んでいる。その前に、どの演算ノードまたは管理プロセスが、過負荷のイベント検出器プロセス/スレッドのプロセスを扱うかを決定しうる。上述したように、いくつかの実施形態では、コピー工程902は、イベント検出器プロセスを備えているデータを、第1のノード704−1から第2のノード704−2に複数回繰り返しコピーすることを含みうる。これにより、コピー工程902は、どのデータがイベント検出器208の状態情報に属しているか定義することを含んでいる。プロセスの場合、たとえばこれはプロセスメモリである。コピーされるプロセス内容のデルタは、変化がゼロではなく小さいままになるまで、コピー中に徐々に小さくなる。
すなわち、非凍結イベント検出器がその状態を継続的に変更しうるので、プロセス内容デルタコピーは零ではない。したがって、最後の内容デルタをコピーする前に、イベント検出器プロセスは有利的に凍結されうる。
方法900は、さらに、第1のイベント検出器プロセスの入力イベントを、第1および第2のイベント検出器プロセスの双方において並行して処理する工程904を含んでいる。その目的のため、双方の検出器が同一の入力データストリームを処理しうるように、第1のイベント検出器の入力データを双方のイベント検出器にバッファおよび/またはコピーしうる。双方のイベント検出器は、次に、上記入力データを並行して処理するために切り替えれうる。
さらなる工程906では、第1および第2のイベント検出器プロセスの双方において並行に処理される第1のイベント検出器プロセスの入力イベントによって、第1および第2のイベント検出器プロセスの双方において同一の出力イベントが生じた否かを検証する。これがそうである場合、すなわち、第1および第2のイベント検出器プロセスの双方における出力イベント206が同一である場合、第1のイベント検出器プロセスはシャットダウンされうる(工程908を参照)。これがそうではない場合、すなわち、第1および第2のイベント検出器プロセスの双方における出力イベント206が同一ではない場合、その代りに第2のイベント検出器プロセスをシャットダウンし、工程902において転送方法900が再度開始されうる。
それゆえ、分散ネットワークノード間におけるイベント検出器プロセスの転送は、たとえば、相互通信する異なるノード704に関連する、スケジューラ(イベントコアプロセスとしても参照される)のような管理インスタンスを有することによって行われうる。この通信に基づき、それらはシステム700の1つのノードからもう1つのノードにイベント検出器プロセスまたはアルゴリズムを渡すことを決定しうる。
上記の記述および図面は、本発明の原理を単に説明するに過ぎない。それゆえ、ここには明確には記述されていないが本発明の原理を体現しかつその精神および範囲内に含まれる様々な構成を当業者が考案することができることが、評価される。さらに、ここに列挙されたすべての例は、本発明の原理および技術を推進するために発明者が貢献した概念に対する読者の理解を助けるためのはっきりとした教育的目的のみであることと、特別に列挙された例および条件に対する限定なしに解釈されるべきであることを、主に意図している。さらに、本発明の原理、局面、および実施形態、ならびに特定の例示を列挙するすべての言明は、それと同等なものを含むことが意図される。
「〜ための手段」(特定の機能を実行する)として示される機能的ブロックは、特定の機能を実行するためにそれぞれ適合され、構成され、または動作可能である回路を備えている機能ブロックとして理解されるべきである。それゆえ、「何かのための手段」は、同様に、「何かを行うために適合され、構成され、または動作可能である手段」としても理解されうる。特定の機能を実行するために適合された手段は、それゆえ、そのような手段が上記機能を(所望の時点において)必ず実行していることを意図はしない。
任意の機能的ブロックを含む図面に示す様々な要素の機能は、専用のハードウェア、たとえばプロセッサを通じて、さらに、適切なソフトウェアに関連するソフトウェアを実行することができるハードウェアを通じて、提供されうる。プロセッサによって提供されるとき、機能は、単一の専用プロセッサ、単一の共用プロセッサ、または、いくつかの個別プロセッサが共用されうる複数の個別プロセッサによって提供されうる。さらに、「プロセッサ」または「コントローラ」という用語の明示的な利用は、ソフトウェアを実行することができるハードウェアを排他的に意味すると解釈されるべきではなく、暗黙的に、制限することなく、デジタルシグナルプロセッサ(DSP)ハードウェア、ネットワークプロセッサ、アプリケーション特異的集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ソフトウェアを格納するためのリードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、および非揮発性記憶媒体を含めうる。他のハードウェア、従来品および/または改良品もまた、含まれうる。
如何なるブロック図も、本発明の原理を具現化する説明的な回路の概念的な図を表すことが、当業者によって評価されるべきである。同様に、如何なるフローチャート、フロー図、状態遷移図、疑似コード、およびその他が、コンピュータまたはプロセッサが明示的に示されているか否かに関わらず、コンピュータ読み取り可能な媒体において実質的に表され、それゆえコンピュータまたはプロセッサによって実行されうる様々なプロセスを表すことが評価される。
さらに、以下の請求項が、個々の請求項のそれ自身が別々の実施形態として含まれうる詳細な説明に組み込まれる。個々の請求項のそれ自身が別々の実施形態として含まれうるとはいえ、従属請求項が、請求項において、1つまたはそれ以上の他の請求項との特定の組み合わせとして言及されるとはいえ、他の実施形態もまた、従属請求項と、個々の他の従属請求項の発明特定事項との組み合わせを含みうることが注意される。そのような組み合わせは、特定の組み合わせが意図されないことが述べられない限り、ここに提案される。さらに、請求項が独立請求項に直接には従属していないとしても、この請求項の特徴を如何なる他の請求項に含めることもまた意図される。
明細書または請求項に開示された方法が、これらの方法の個々の工程を実行するための手段を有する装置によって実装されうることがさらに意図される。
さらに、明細書または請求項に開示された複数の工程または機能の開示が、特定の順の範囲内にあると解釈されえないことが理解される。したがって、複数の工程または機能の開示は、複数の工程または機能が技術的理由によって入れ替え可能ではない限り、これらを特定の順には限定しない。
さらに、いくつかの実施形態では、単一の工程は、複数の副次工程を含みうるか、複数の副次工程に分解されうる。そのような副次工程は、明示的に除外されない限り、この単一の工程に含まれるか、その一部でありうる。
サッカー特有のオフサイドイベントの検出事例を示す。
本発明の実施形態に係る、第1のイベントを第2のイベントに同期させるための装置のブロック図を模式的に示す。
第1のイベントを第2のイベントに同期させるための装置が、分散ネットワークと、関連するイベント検出器ソフトウェアとの間におけるミドルウェアとして実装される本発明の実施形態を模式的に示す。
イベント検出器が必要とする4つのイベントA、B、C、およびDのタイミングテーブルを示す。
本発明の実施形態に係るイベントスケジューリングを模式的に図示する。
第1のイベントを第2のイベントに同期させるための方法の一例のフローチャートを模式的に示す。
イベントを同期するための装置の実施形態を備えている複数の分散演算ノードを備えている、少なくとも1つのセンサデータストリームに基づきイベントを決定するための分散演算システムの実施形態を示す。
分散演算システムの第1のノードの第1のイベント検出器プロセスを、分散演算システムの第2のノードの第2のイベント検出器プロセスに転送するための装置の実施形態を模式的に図示する。
分散演算システムの第1のノードの第1のイベント検出器プロセスを、分散演算システムの第2のノードの第2のイベント検出器プロセスに転送するための方法の実施形態のフローチャートを模式的に図示する。