(57)【要約】【課題】  複数のプログラムモジュールを用いてデータ処理を行うデータ処理装置において、処理タイミングを適正化し効率よく処理することが可能なデータ処理装置を提供する。【解決手段】  複数のプログラムモジュール（ＰＵ）２０、３０を接続して処理を行うデータ処理装置において、後段のＰＵ３０がデータを要求するタイミングに合わせて前段のＰＵ２０からのデータ出力、転送が行われるようＰＵ２０、３０の処理タイミングを調整する（（ｄ）、（ｆ）参照）ことで、（ｂ）、（ｃ）、（ｅ）に示されるように無駄な処理が発生したり、遅延時間が不均一になるのを抑制する。【選択図】  図３
2010211284.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムモジュールで処理したデータを第２のプログラムモジュールで処理するデータ処理装置であって、
前記第１、第２のプログラムモジュールそれぞれの処理時間に基づき、前記第２のプログラムモジュールへのデータ入力タイミングに合わせて前記第１のプログラムモジュールからデータが出力、転送されるよう前記第１のプログラムモジュールのデータ入力、処理のタイミングを調整することを特徴とするデータ処理装置。
【請求項２】
前記第１のプログラムモジュールの処理時間を学習し、学習結果に基づいてその処理タイミングを調整することを特徴とする請求項１記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラムモジュールを用いてデータ処理を行うデータ処理装置に関する。
【背景技術】
【０００２】
制御等に用いられるデータ処理装置を複数のプログラムモジュールにより構成し、複数のモジュールを並列して作動させる技術が知られている。例えば、特許文献１に記載された技術は、複数のＥＣＵ間で演算タイミングを同期せずとも送受信されるデータや演算結果が不正確になるのを防止するため、送信タスクの出力周期を当該ＥＣＵで処理されるタスクの一つの規定時間以上に設定するというものである。一方、特許文献２に記載されている技術では、第１、第２のＥＣＵからは出力結果に時間データを付して第３のＥＣＵへと送信し、第３のＥＣＵは、第１のＥＣＵと第２のＥＣＵの出力結果中の時間データの差が所定時間内の場合に、それらを利用した処理を行うというものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３００２３号公報
【特許文献２】特開２００５−２０１１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、送信タスクの出力周期を他の処理タスクに比べて十分に長くとる必要があるため、後続の処理を高速で行いたい場合には適さず、処理全体の効率を上げることが困難である。特許文献２の技術では、ほぼ同時刻に取得したデータを用いて処理を行うことはできるが、各ＥＣＵの処理のタイミングを合致させるものではなく、いずれかの処理の周期が他に比較して長い場合等の理由で、処理データの出力タイミングが合致していない場合、後続の処理に必要なデータを取得することができない場合が生じうる。
【０００５】
そこで本発明は、複数のプログラムモジュールを用いてデータ処理を行うデータ処理装置において、処理タイミングを適正化し効率よく処理することが可能なデータ処理装置を提供することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明にかかるデータ処理装置は、第１のプログラムモジュールで処理したデータを第２のプログラムモジュールで処理するデータ処理装置であって、これら第１、第２のプログラムモジュールそれぞれの処理時間に基づき、第２のプログラムモジュールへのデータ入力タイミングに合わせて第１のプログラムモジュールからデータが出力、転送されるよう第１のプログラムモジュールのデータ入力、処理のタイミングを調整することを特徴とする。
【０００７】
ここで、第１のプログラムモジュールの処理時間を学習し、学習結果に基づいてその処理タイミングを調整するとよい。
【発明の効果】
【０００８】
本発明によれば、前後のプログラムモジュールの処理時間に応じて第１のプログラムモジュールからのデータ出力、転送、第２のプログラムモジュールへのデータ入力のタイミングを適正化されるので、各プログラムモジュールを効率よく動作させることができる。
【０００９】
第１のプログラムモジュールの処理時間が変動する場合には、処理時間を学習してその処理タイミングを調整することで処理の適正化、効率化を確実に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】本発明にかかるデータ処理装置中のモジュールの関係を示すブロック図である。
【図２】図１の装置におけるプログラムモジュール間のデータ授受を説明する図である。
【図３】本発明のプログラムモジュールの処理タイミングを従来装置における処理タイミングと比較して示すタイミングチャートである。
【図４】図１の装置におけるプログラムモジュール間のデータ授受の別の態様を説明する図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の好適な実施の形態について詳細に説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の参照番号を附し、重複する説明は省略する。
【００１２】
本発明にかかるデータ処理装置のモジュール関係を図１に示す。データ処理装置は、ＣＰＵ、ＲＯＭ、ＲＡＭ、その他の記憶装置、入出力装置等によって構成される。このデータ処理装置においては、ＣＰＵを複数、あるいは、複数のプロセッサコアを有するＣＰＵが用いられており、複数のプログラムモジュールを並列的に実行可能である。以下、プログラムモジュールをＰＵ（Processing Unit）と省略する。
【００１３】
各ＰＵ１０、２０、３０は、実際の処理を行うアルゴリズム実行部（User Process）１１、２２、３２と、他のＰＵからのデータ要求に応じてデータを出力するデータ出力部（Repository）１２、２２、３３を備えるほか、後段のＰＵ２０、３０は、他のＰＵにデータを要求するデータ要求部（Downloader）２１、３１を備えている。初段のＰＵ１０のアルゴリズム実行部１１には、カメラ等の撮像装置からの撮像データ５０が入力されている。
【００１４】
次に、この装置の動作を図２を参照して説明する。最初の処理サイクルでは、ＰＵ２０のアルゴリズム実行部２２では、通常のデータ処理を行うとともに、自身の処理にかかる時間Ｘを計測し、データ２５内に保存する。ＰＵ３０のデータ要求部３１は、ＰＵ２０のデータ出力部２３に対して、処理時間Ｘを含むデータ２５を要求し、データ出力部２３はこれに答えて、データ２５を転送する。ＰＵ３０のアルゴリズム実行部２２は、通常のデータ処理を行うとともに、自身の処理にかかる時間Ｙを計測し、データ３５内に保存する。次回以降の処理サイクルにおいては、Ｙ、Ｘを基にして各処理のタイミングを調整する。
【００１５】
図３に、本発明による処理タイミングのタイミングチャートを、従来装置における処理タイミングと比較して示す。最初に図３（ａ）に示されるように、ＰＵ１０がイメージサーバであり、１００ｍｓごとにデータを出力し、ＰＵ２０、ＰＵ３０がそれぞれその処理にそれぞれ２００ｍｓ、６００ｍｓかかる場合を例にとる。
【００１６】
ＰＵ２０、３０の処理を調整しない場合は、図３（ｂ）に示されるように、初回の処理では、ＰＵ２０で処理された直後に、ＰＵ３０での処理が行われるので、ＰＵ３０からの出力は、ＰＵ１０からの出力より両ＰＵ２０、３０の処理時間を積算した８００ｍｓ遅延することになる。次の処理は、ＰＵ２０の処理は、前の処理の直後から実行されるものの、その終了時点では、ＰＵ３０は前回の処理を終了しておらず、ＰＵ３０に入力が行われるのは、４００ｍｓ後になるので、その回の遅延時間は１２００ｍｓに増大してしまう。
【００１７】
これを防止するために、図３（ｃ）に示されるように、ＰＵ３０の処理状況にかかわらず、ＰＵ２０の処理を繰り返し実行する手法もある。この手法によれば、遅延時間は８００ｍｓで一定になるが、ＰＵ２０の処理のうち３回に２回はデータを破棄することになり、無駄が多く、効率的でない。特に、さらに複数の処理を行う必要がある場合には計算機資源を浪費することになり、全体の処理速度が低下してしまう。
【００１８】
本発明によれば、図３（ｄ）に示されるように、ＰＵ２０のそれぞれの処理の間に、ＰＵ２０とＰＵ３０の処理時間の差である４００ｍｓの待機時間を設けることで、遅延時間を８００ｍｓと一定に保つことかできるとともに、効率的な運用を図ることができる。さらに多数の処理が必要な場合には、この待機時間を利用して行うことが可能となる。
【００１９】
また、ＰＵ２０、ＰＵ３０がそれぞれその処理にそれぞれ３００ｍｓ、７００ｍｓを要し、一方の処理時間が他方の処理時間の整数倍でない場合、本発明はさらに効果的である。
【００２０】
図３（ｅ）に示されるように、ＰＵ３０の処理状況にかかわらず、ＰＵ２０の処理を繰り返し実行する場合、ＰＵ３０の処理開始タイミングと、ＰＵ２０の処理終了タイミングとが毎回一致するとは限らない（この例では、３回に１回だけとなる）ため、ＰＵ２０には、前回の処理結果を格納しておく必要があるほか、タイミングが一致した場合の遅延時間が１０００ｍｓなのに対し、一致しない場合の遅延時間は、１１００ｍｓまたは１２００ｍｓとなり、遅延時間を均一に保つことができない。
【００２１】
これに対して、本発明によれば、図３（ｆ）に示されるように、ＰＵ２０のそれぞれの処理の間に、ＰＵ２０とＰＵ３０の処理時間の差である４００ｍｓの待機時間を設けることで、遅延時間を１０００ｍｓと一定に保つことかできるとともに、効率的な運用を図ることができる。
【００２２】
ＰＵ２０からＰＵ３０へのデータ転送に要する時間が無視できない場合には、図４に示されるように、データ要求部３１がデータ出力部２３にデータを要求してから受信するまでの時間Ｔを考慮してＰＵ３０でデータを必要とする時点に当該データが受信できるように、ＰＵ２０の処理タイミングを調整すればよい。具体的には、ＰＵ２０の処理時間がＸ、ＰＵ３０の処理時間がＹ（ただし、Ｙ＞Ｘ＋Ｔ）の場合、ＰＵ２０の処理は、前回の処理終了後（Ｙ−（Ｘ＋Ｔ）だけウェイトをかけてからスタートさせるとよい。
【００２３】
以上の説明では、２つのＰＵ間で調整を行う例を説明したが、同様に、３つ以上のＰＵが接続される場合についても適用可能である。この場合、各ＰＵが直列的に接続される場合のほか、一部並列的に接続される場合、例えば、２つのＰＵは互いに独立に動作し、３つめのＰＵが両者の出力データを基に処理を行う場合、についても適用できる。
【００２４】
ここでは、各ＰＵの処理時間が一定である例を説明したが、ＰＵの処理時間が変化する場合にも本発明は好適に適用できる。この場合は、処理時間が変化するＰＵについては、過去の処理時間に基づいて処理時間を予測し、予測結果に基づいてその処理タイミングを調整すればよい。処理時間の学習・予測手法については各種の学習手法を用いることができる。後段のＰＵがデータを要求する段階までに、前段のＰＵでの処理が確実に終わるように、処理時間を長めに予測するようにすると好ましい。
【００２５】
本発明は、単一のデータ処理装置だけでなく、複数のデータ処理装置を組み合わせてどうさせる場合、例えば、サーバーとクライアントとを通信手段により接続して処理を行う場合についても適用可能である。
【符号の説明】
【００２６】
１０、２０、３０…プログラムモジュール（ＰＵ）、２１、３１…データ要求部、１１、２２、３２…アルゴリズム実行部、１２、２３、３３…データ出力部、２５、３５…データ、３５…データ、５０…撮像データ。
【図１】
2010211284.tif 000003
【図２】
2010211284.tif 000004
【図３】
2010211284.tif 000005
【図４】
2010211284.tif 000006