(57)【要約】【課題】タスクの実行時間を特定する技術において、タスクの実行時間が非常に短い場合でも確実に当該タスクの実行時間を特定することができるようにし、また、他の処理によって実行時間の計算に狂いが生じることがないようにする。【解決手段】あらかじめ指定されたタスクと、実行を開始するタスクとを照合し、それらが合致したときに、当該実行タスクの開始時に、当該開始時の時刻を記録し、当該実行タスクの終了時に、当該終了時の時刻と開始時の時刻との差を、実行時間として記録する。【選択図】 図４
2008276674.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体およびＣＰＵを備え、前記記憶媒体に記録されている複数のタスクのうちから前記ＣＰＵが実行する対象のタスクを切り替える電子計算装置であって、
前記ＣＰＵは：
前記複数のタスクのうち１つのタスク（以下、実行タスクという）の実行を開始するとき、前記実行タスクが前記記憶媒体に記録された指定タスクであるか否かを判定する判定手段（１４０）と、
前記第１判定手段の判定結果が肯定的であることに基づいて、前記実行タスクの実行開始時に、その開始時の時刻を、前記実行タスクの実行開始時刻として、前記記憶媒体に記録する開始時記録手段（１５０）と、
前記実行タスクの実行終了時に、その終了時の時刻と、前記記憶媒体に記録された前記実行タスクの実行開始時刻との差を、前記実行タスクの実行時間として前記記憶媒体に記録する終了時記録手段（２７０）と、
を有していることを特徴とする電子計算装置。
【請求項２】
記憶媒体およびＣＰＵを備え、前記記憶媒体に記録されている、第１のグループに属する複数の第１グループタスクおよび第２のグループに属する複数の第２グループタスクのうちから、前記ＣＰＵが実行する対象のタスクを切り替える電子計算装置であって、
前記ＣＰＵは、前記複数の第１グループタスクのどれも実行していないときは必ず前記複数の第２グループタスクのいずれかを実行しており、
前記ＣＰＵは：
所定の計測期間内における前記第２グループタスクの実行のそれぞれにおいて、実行対象となる第２グループタスク（以下、実行タスクという）の実行開始時に、その開始時の時刻を、前記実行タスクの実行開始時刻として、前記記憶媒体に記録し、また、前記実行タスクの実行終了時に、その終了時の時刻と、前記記憶媒体に記録された前記実行タスクの実行開始時刻との差を、前記実行タスクの実行時間として算出する開始終了時算出手段と、
前記計測期間内において前記開始終了時算出手段が算出した前記実行タスクの実行時間の総和を前記計測期間から減算した結果を、前記複数の第１グループタスクの実行時間として、前記記憶媒体に記録する計測結果記録手段と、
を有することを特徴とする電子計算装置。
【請求項３】
前記第２のグループに属するタスクのそれぞれは、当該電子計算装置のハードウェアおよびオペレーティングシステムを直接制御するプラットフォームタスクであって、前記第１のグループに属するタスクのそれぞれは、当該電子計算装置のハードウェアおよびオペレーティングシステムを、前記プラットフォームタスクを介して利用するアプリケーションタスクであることを特徴とする請求項２に記載の電子計算装置。
【請求項４】
前記計測結果記録手段は、前記プラットフォームタスクに属することを特徴とする請求項３に記載の電子計算装置。
【請求項５】
記憶媒体およびＣＰＵを備え、前記記憶媒体に記録されている複数のタスクのうちから前記ＣＰＵが実行する対象のタスクを切り替える電子計算装置に用いるプログラムであって、
前記複数のタスクのうち１つのタスク（以下、実行タスクという）の実行を開始するとき、前記実行タスクが前記記憶媒体に記録された指定タスクであるか否かを判定する判定手段、
前記第１判定手段の判定結果が肯定的であることに基づいて、前記実行タスクの実行開始時に、その開始時の時刻を、前記実行タスクの実行開始時刻として、前記記憶媒体に記録する開始時記録手段、および、
前記実行タスクの実行終了時に、その終了時の時刻と、前記記憶媒体に記録された前記実行タスクの実行開始時刻との差を、前記実行タスクの実行時間として前記記憶媒体に記録する終了時記録手段として、前記ＣＰＵを機能させるプログラム。
【請求項６】
記憶媒体およびＣＰＵを備え、前記記憶媒体に記録されている、第１のグループに属する複数の第１グループタスクおよび第２のグループに属する複数の第２グループタスクのうちから、前記ＣＰＵが実行する対象のタスクを切り替え、前記ＣＰＵに、前記複数の第１グループタスクのどれも実行していないときは必ず前記複数の第２グループタスクのいずれかを実行させる電子計算装置、に用いるプログラムであって、
所定の計測期間内における前記第２グループタスクの実行のそれぞれにおいて、実行対象となる第２グループタスク（以下、実行タスクという）の実行開始時に、その開始時の時刻を、前記実行タスクの実行開始時刻として、前記記憶媒体に記録し、また、前記実行タスクの実行終了時に、その終了時の時刻と、前記記憶媒体に記録された前記実行タスクの実行開始時刻との差を、前記実行タスクの実行時間として算出する開始終了時算出手段、および、
前記計測期間内において前記開始終了時算出手段が算出した前記実行タスクの実行時間の総和を前記計測期間から減算した結果を、前記複数の第１グループタスクの実行時間として、前記記憶媒体に記録する計測結果記録手段、として、前記ＣＰＵを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクのうちからＣＰＵが実行する対象のタスクを切り替えることができると共に、タスクの実行時間を特定することのできる電子計算装置、および当該電子計算装置用のプログラムに関する。
【背景技術】
【０００２】
従来、複数のタスクのうちから実行する対象のタスクを切り替えるＣＰＵにおける、タスクの実行時間を特定する技術が種々知られている。タスクの実行時間を特定する方法としては、例えば、タスクの実行開始時にＲＡＭの所定のフラグを１にし、タスクの実行終了時に当該フラグを０にする処理を、タスクの実行がある度に繰り返し、そのフラグの変化を、外部の装置であるＲＡＭモニタで定期的にチェックする方法がある。このような方法を用いれば、ある期間におけるＲＡＭが１であった期間の割合から、ＣＰＵのタスク実行率、すなわちＣＰＵの利用率を特定することができる。
【０００３】
また、タスクの実行時間を特定する方法として、特許文献１、２に記載されているようなものがある。この方法では、ＣＰＵが、通常のタスクが実行されていない時間にアイドルタスクを実行し、そのアイドルタスク中で定期的にカウンタ値を増加させるようになっている。これによって、ある期間内におけるカウンタの増加量から、当該期間において通常のタスクが実行されていない時間の比率を算出することができ、さらにこれに基づいて、通常のタスクが実行されている時間の比率を算出することができる。
【特許文献１】特開平５−４０６５１号公報
【特許文献２】特許第３３７６０９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上述のようなＲＡＭモニタを用いる方法では、タスクの実行開始から実行終了までの時間が、ＲＡＭモニタのチェック間隔よりも短くなると、そのタスクの実行があったことを検出できなくなり、結果として、タスクの実行時間の算出結果が不正確なものになってしまう。
【０００５】
また、アイドルタスク中にカウンタ値を増加させる方法では、アイドルタスク中に他の処理（例えば記憶媒体の診断処理）を行うと、その処理によってカウンタ値を増加させる処理の実行タイミングに影響が及び、結果としてカウンタ値の増加レートが一定でなくなってしまう可能性がある。カウンタ値の増加レートが一定でなくなれば、タスクの実行時間の算出結果が不正確なものになってしまう。
【０００６】
本発明は上記点に鑑み、複数のタスクのうちから実行する対象のタスクを切り替えるＣＰＵにおける、タスクの実行時間を特定する技術において、タスクの実行時間が非常に短い場合でも確実に当該タスクの実行時間を特定することができるようにし、また、上述したようなしくみで他の処理によって実行時間の計算に狂いが生じることがないようにすることを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するための本発明の第１の特徴は、記憶媒体およびＣＰＵを備え、記憶媒体に記録されている複数のタスクのうちからＣＰＵが実行する対象のタスクを切り替える電子計算装置についてのものである。この本発明の第１の特徴において、ＣＰＵは、複数のタスクのうち１つのタスク（以下、実行タスクという）の実行を開始するとき、実行タスクが記憶媒体に記録された指定タスクであるか否かを判定し、その判定結果が肯定的であることに基づいて、当該実行タスクの実行開始時に、その開始時の時刻を、当該実行タスクの実行開始時刻として、記憶媒体に記録する。さらに、当該実行タスクの実行終了時に、その終了時の時刻と、記憶媒体に記録された当該実行タスクの実行開始時刻との差を、当該実行タスクの実行時間として記憶媒体に記録する。
【０００８】
このように、あらかじめ指定されたタスクと、実行を開始するタスクとを照合し、それらが合致したときに、当該実行タスクの開始時刻と終了時刻との差を実行時間として記録することで、所望のタスクの実行時間を特定することができる。そして、このような方法を用いることで、タスクの実行時間が非常に短い場合であっても、確実にその実行時間を特定することができ、また、上述したようなしくみで他の処理によって実行時間の計算に狂いが生じることがない。
【０００９】
また、本発明の第２の特徴は、記憶媒体およびＣＰＵを備え、記憶媒体に記録されている、第１のグループに属する複数の第１グループタスクおよび第２のグループに属する複数の第２グループタスクのうちから、ＣＰＵが実行する対象のタスクを切り替える電子計算装置についてのものである。そして、このＣＰＵは、第１グループタスクのどれも実行していないときは必ず第２グループタスクのいずれかを実行している。
【００１０】
さらにこのＣＰＵは、所定の計測期間内における第２グループタスクの実行のそれぞれにおいて、実行対象となる第２グループタスク（以下、実行タスクという）の実行開始時に、その開始時の時刻を、当該実行タスクの実行開始時刻として、記憶媒体に記録し、また、当該実行タスクの実行終了時に、その終了時の時刻と、記憶媒体に記録された当該実行タスクの実行開始時刻との差を、当該実行タスクの実行時間として算出する。また、ＣＰＵは、計測期間内において算出した当該実行タスクの実行時間の総和を計測期間から減算した結果を、複数の第１グループタスクの実行時間として、記憶媒体に記録する。
【００１１】
このように、ＣＰＵの実行対象となるタスクが、第１のグループと第２のグループに分けられており、かつ、第１のグループのタスクが実行されていない間は、必ず第２のグループのタスクが実行されているようになっている場合、ある計測期間内において、第２のグループに属するタスクのそれぞれについて実行時間を計測し、それら計測結果の総和を計測期間から減算した値を、第１グループタスクの実行時間として特定することができる。
【００１２】
また、個々の第２グループタスクについては、当該実行タスクの開始時刻と終了時刻との差を実行時間として特定することで、当該タスクの実行時間を特定することができる。このような方法を用いることで、タスクの実行時間が非常に短い場合であっても、確実にその実行時間を特定することができ、また、上述したようなしくみで他の処理によって実行時間の計算に狂いが生じることがない。
【００１３】
また、本発明の第２の特徴においては、第２のグループに属するタスクのそれぞれは、当該電子計算装置のハードウェアおよびオペレーティングシステムを直接制御するプラットフォームタスクであって、第１のグループに属するタスクのそれぞれは、当該電子計算装置のハードウェアおよびオペレーティングシステムを、プラットフォームタスクを介して利用するアプリケーションタスクであってもよい。このようになっていることで、アプリケーションタスクによるＣＰＵ利用率を知りたいという一般的なニーズに対応することができる。
【００１４】
また、計測期間内において算出された実行タスクの実行時間の総和を計測期間から減算した結果を、アプリケーションタスクの実行時間として記憶媒体に記録する機能は、プラットフォームタスクとして実現されていてもよい。このようになっていることで、アプリケーションタスクの実行時間の計算機能をプラットフォームの一部として設計することができるので、アプリケーションタスクの設計者が、アプリケーションタスクの実行時間算出のためのプログラムを作成する必要がなくなる。
【００１５】
また、本発明の第１および第２の特徴は、プログラムとしても実現することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態について説明する。図１に、本実施形態に係るＥＣＵ１の構成およびＲＡＭモニタ２との接続関係を示す。ＥＣＵ１は、車両に搭載され、車両の挙動等を制御するための電子制御装置である。例えば、ＥＣＵ１は、エンジンＥＣＵであってもよい。
【００１７】
ＥＣＵ１は、タイマ１０、ＲＡＭ１１、ＲＯＭ１２、ＣＰＵ１３等を有している。タイマ１０は、時刻の経過を計測する。ＣＰＵ１３は、ＲＯＭ１２からプログラムを読み出して実行し、その実行の際にＲＡＭ１１を作業領域として各種演算を行う。また、ＣＰＵ１３は、その演算の際に、図示しないセンサ（例えば車速センサ、アクセル開度センサ）から車両内の情報を取得してもよいし、図示しないアクチュエータ（例えばインジェクタ、アンチロックブレーキ装置）を制御するようになっていてもよい。ＲＡＭモニタ２は、必要なときにＥＣＵ１に接続されることで、ＲＡＭ１１の記憶内容を読み取ることができる装置である。
【００１８】
ここで、ＣＰＵ１３が実行するプログラムについて説明する。ＲＯＭ１２に記録されているプログラムは、リアルタイムオペレーティングシステム（以下、ＲＴＯＳという）用のプログラム、プラットフォーム用のプログラム、およびアプリケーション用のプログラムを含んでいる。図２に、アプリケーション３１、プラットフォーム３２、ＲＴＯＳ３３の階層構造を、ハードウェア３４との関係で概念的に示す。ＲＴＯＳ３３は、ＥＣＵ１のハードウェア（ＲＡＭ、ＲＯＭ、図示しないＩ／Ｏ等）３４を直接制御するシステムである。ＲＴＯＳ３３としては、例えば、ＯＳＥＫ（登録商標）仕様のものを用いてもよい。プラットフォーム３２は、当該ハードウェア３４およびＲＴＯＳ３３を直接制御するシステムである。
【００１９】
アプリケーション３１は、ＥＣＵ１の各種機能（例えばエンジン制御、オートクルーズ制御、レーンキープ制御等）を実現するためのシステムであり、この目的のために、プラットフォーム３２を介して当該ハードウェア３４およびＲＴＯＳ３３を利用する。このような階層構造の存在により、アプリケーションは、ＲＴＯＳ３３およびハードウェア３４の機能を直接利用する必要がなくなる。したがって、プラットフォーム３２とアプリケーション３１との間のインターフェースを共通化しておけば、プラットフォーム３２がＥＣＵ毎のＲＴＯＳ３３およびハードウェア３４の違いを吸収するので、異なる種類のＥＣＵに同じアプリケーション３１を使用することができる。すなわち、アプリケーション３１の再配置が可能となる。
【００２０】
また、ＲＯＭ中のプログラムは、タスクというプログラム単位に分かれており、ＣＰＵ１３は、それら複数のタスクのうち一時期に１つのタスクの実行を行うようになっている。そしてＣＰＵ１３は、あらかじめ定められたタスク間の優先順等に基づいて、実行する対象のタスクを順次切り替えていく。この実行タスクの切り替え機能を、タスクスケジューリング機能という。タスクスケジューリング機能は、ＲＴＯＳ３３によって実現される。
【００２１】
図３に、ＣＰＵ１３が実行する各種タスクの実行順序の一例を示す。この例においては、計測タスク、ＰＦタスク１、ＡＰタスク１、２、…ｎ、ＰＦタスク２等を、ＣＰＵ１３が実行している。そして、これら各タスクには、この順に高い優先度が割り当てられている。例えば、他に実行するプログラムがないときに実行されるアイドルタスクであるＰＦタスク２の実行タイミング５３中に、ＡＰタスク２の実行タイミング６３が来ると、ＣＰＵ１３はＰＦタスク２の実行を終了し、ＡＰタスク２の実行を開始する。
【００２２】
なお、ＡＰタスク（第１のグループに属する第１グループタスクの一例に相当する）とは、アプリケーションのプログラムの単位となるタスクをいい、ＰＦタスク（第２のグループに属する第２グループタスクの一例に相当する）は、プラットフォームのプログラムの単位となるタスクをいう。どのＡＰタスクよりもどのＰＦタスクよりも優先度の高い計測タスクは、タイマ割り込みによって所定の周期Ｔｃ（例えば１ｍｓ）で実行される。
【００２３】
なお、ＲＴＯＳの提供する機能によって、ＣＰＵ１３は、各タスクの実行開始時にタスク開始フック関数を実行し、各タスクの終了時にタスク終了フック関数を実行するようになっている。図４および図５に、それぞれタスク開始フック関数１００およびタスク終了フック関数２００の処理内容を、フローチャートで示す。
【００２４】
タスク開始フック関数１００の実行において、ＣＰＵ１３は、まずステップ１１０で、開始するタスクのタスクＩＤを取得する。タスクＩＤとは、各タスクを識別するために、各タスクにあらかじめ（設計時に）割り当てられたコードである。このタスクＩＤの内容によって、対応するタスクがＡＰタスクであるかＰＦタスクであるかを判別することができるようになっている。タスクＩＤの取得方法は周知であるので、ここではその詳細についての説明は行わない。
【００２５】
続いてステップ１２０で、取得したタスクＩＤがＰＦタスクを示しているかＡＰタスクを示しているかを判定する。ＰＦタスクを示していると判定した場合、続いてステップ１３０で、タイマ１０からの出力信号に基づいて現在時刻を取得し、その現在時刻を変数Ｓｐｆとして、ＲＡＭ１１に記録し、その後タスク開始フック関数１００の実行を終了する。
【００２６】
ステップ１２０でＡＰタスクを示していると判定した場合、続いてステップ１４０で、実行開始したタスク（以下、実行タスクという）が、実行時間計測対象のタスク（以下、指定タスクという）として指定されているか否かを判定する。この判定は、具体的には、ステップ１１０で取得したタスクＩＤが、あらかじめＲＡＭ１１、ＲＯＭ１２、図示しない不揮発性書き込み可能記憶媒体等に記録されている１つまたは複数の指定タスクＩＤの１つに一致しているか否かによって決まる。指定タスクＩＤは、ＲＡＭモニタ２等の外部の装置を用いて作業者が随時ＲＡＭ１１に記録できるようになっていてもよい。
【００２７】
実行タスクが指定タスクの１つでない場合、タスク開始フック関数１００の実行を終了し、指定タスクの１つである場合、続いてステップ１５０で、タイマ１０からの出力信号に基づいて現在時刻を取得し、その現在時刻を変数Ｓａｐｐとして、ＲＡＭ１１に記録し、その後タスク開始フック関数１００の実行を終了する。
【００２８】
このように、ＣＰＵ１３は、タスクの実行開始時に、当該タスクがＰＦタスクであるか指定タスクであれば、その開始時の時刻を、ＡＰタスクの実行開始時刻またはＰＦタスクの実行開始時刻として、ＲＡＭ１１に記録する。
【００２９】
タスク終了フック関数２００の実行において、ＣＰＵ１３は、まずステップ２１０で、終了するタスクのタスクＩＤを取得する。続いてステップ２２０で、取得したタスクＩＤがＰＦタスクを示しているかＡＰタスクを示しているかを判定し、ＰＦタスクを示していると判定した場合続いてステップ２３０を実行し、ＡＰタスクを示していると判定した場合続いてステップ２５０を実行する。
【００３０】
ステップ２３０では、現在時刻Ｅをタイマ１０から取得し、続いてステップ２４０で、変数Ｔｐｆの値に、現在時刻Ｅから変数Ｓｐｆの値を減算した結果を加算する。現在時刻Ｅから変数Ｓｐｆの値を減算した結果は、実行を終了しようとしているタスクの開始時から現在（すなわち実行終了時）までの時間である。換言すれば、この減算値は、今回の実行タスクの実行時間である。変数Ｔｐｆは、後述するように、計測タスクの実行時にゼロにリセットされる。したがって、変数Ｔｐｆは、最後に計測タスクが実行されてから現在までのＰＦタスクの総実行時間を表している。ステップ２４０の後、タスク終了フック関数２００の実行は終了する。
【００３１】
ステップ２５０では、終了しようとしているタスクが指定タスクの１つであるか否かを判定し、指定タスクの１つでなければタスク終了フック関数２００の実行を終了し、指定タスクの１つであれば続いてステップ２６０を実行する。ステップ２６０では、現在時刻Ｅをタイマ１０から取得し、続いてステップ２７０で、変数Ｔａｐｐの値に、現在時刻Ｅから変数Ｓａｐｐの値を減算した結果を加算する。現在時刻Ｅから変数Ｓａｐｐの値を減算した結果は、実行を終了しようとしているタスクの開始時から現在（すなわち実行終了時）までの時間である。換言すれば、この減算値は、今回の実行タスクの実行時間である。変数Ｔａｐｐは、後述するように、計測タスクの実行時にゼロにリセットされる。したがって、変数Ｔａｐｐは、最後に計測タスクが実行されてから現在までのすべての指定タスクの総実行時間を表している。ステップ２７０の後、タスク終了フック関数２００の実行は終了する。
【００３２】
このように、ＣＰＵ１３は、タスクの実行終了時に、当該タスクがＰＦタスクであるか指定タスクであれば、その終了時の時刻と、ＲＡＭ１１に記録された当該タスクの実行開始時刻との差を、当該タスクの今回の実行時間として特定し、特定した実行時間を、変数Ｔｐｆまたは変数Ｔａｐｐに加算する。その結果、次の計測タスクの実行タイミングの直前には、変数Ｔｐｆには、期間Ｔｃの間に実行されたすべてのＰＦタスクの総実行時間が記録されており、また、変数Ｔａｐｐには、期間Ｔｃの間に実行されたすべての指定ＡＰタスクの総実行時間が記録されていることになる。例えば、図３において、ＡＰタスク１およびＡＰタスクｎが指定タスクになっている場合、実行時間６１、６５、６６の総和が、計測タスクの実行タイミング４１から４２までの期間Ｔｃにおける指定タスクの総実行時間Ｔａｐｐとなり、また、実行時間６２、６７の総和が、計測タスクの実行タイミング４２から４３までの期間Ｔｃにおける指定タスクの総実行時間Ｔａｐｐとなる。
【００３３】
ここで、計測タスクの詳細について説明する。図６に、計測タスク３００のフローチャートを示す。ＣＰＵ１３は、この計測タスク３００の実行において、まずステップ３１０で、指定ＡＰタスクによるＣＰＵ利用時間を計算するか、あるいは、全ＡＰタスクによるＣＰＵ利用時間を計算するかについての判定を行う。
【００３４】
この判定は、あらかじめＲＡＭ１１、ＲＯＭ１２、または図示しない書き込み可能不揮発性記憶媒体に記録された設定値に基づいて実行する。ここで、設定値は、ＥＣＵ１の製造時に決定されていてもよいし、ＲＡＭモニタ２等の外部の装置を用いて作業者が随時ＲＡＭ１１に記録できるようになっていてもよい。
【００３５】
全ＡＰタスクによるＣＰＵ利用時間を計算する場合、続いてステップ３２０で、変数Ｔｐｆ＿ａｖｅに、変数Ｔｐｆと変数Ｔｐｆ´の平均値を代入する。ここで、Ｔｐｆ´は、後述する通り、前々回から前回の計測タスク３００の実行タイミングまでの間に実行されたＰＦタスクの総実行時間である。変数Ｔｐｆは、今回から前回の計測タスク３００の実行タイミングまでの間に実行されたＰＦタスクの総実行時間であるので、変数Ｔｐｆ＿ａｖｅは、直近の連続する２つの期間ＴｃにおけるＰＦタスクの総実行時間の平均値である。この処理は、期間Ｔｃ毎に変化する総実行時間に対するフィルタリング処理の一種である。
【００３６】
さらにステップ３３０で、期間Ｔｃから変数Ｔｐｆ＿ａｖｅを減算した結果を、変数Ｕｐｆに代入する。この変数Ｕｐｆの値は、期間Ｔｃ内で、ＰＦタスクが実行されていない時間である。本実施形態においては、他のタスクが実行されていないときには必ずＰＦ２タスクが実行されるので、ＰＦタスクが実行されていない時間とは、ＰＦタスク以外のタスクが実行されている時間と同じである。したがって、変数Ｕｐｆは、実質的にすべてのＡＰタスクの期間Ｔｃ内における総実行時間である。
【００３７】
続いて、次の期間Ｔｃのための処理として、ステップ３４０で変数Ｔｐｆ´に現在のＴｐｆの値を代入し、さらにステップ３５０で、Ｔｐｆをゼロにリセットする。このようになっていることで、次回の計測タスク３００において、変数Ｔｐｆ´が、当該計測タスク３００の実行時から見て直前となる期間ＴｃにおけるＰＦタスクの総実行時間として用いられる。ステップ３５０の後、計測タスク３００の実行が終了する。このようなステップ３２０〜３５０の処理によって、直近の２つの期間ＴｃにおけるすべてのＡＰタスクの実行時間の平均を算出することができる。そして、この実行時間を期間Ｔｃで除算すれば、直近の２つの期間ＴｃにおけるすべてのＡＰタスクによるＣＰＵ利用率を特定することができる。
【００３８】
指定ＡＰタスクのみによるＣＰＵ利用時間を計算する場合、続いてステップ３６０で、変数Ｔａｐｐ＿ａｖｅに、変数Ｔａｐｐと変数Ｔａｐｐ´の平均値を代入する。ここで、Ｔａｐｐ´は、後述する通り、前々回から前回の計測タスク３００の実行タイミングまでの間に実行された指定ＡＰタスクの総実行時間である。変数Ｔａｐｐは、今回から前回の計測タスク３００の実行タイミングまでの間に実行された指定ＡＰタスクの総実行時間であるので、変数Ｔａｐｐ＿ａｖｅは、直近の連続する２つの期間Ｔｃにおける指定ＡＰタスクの総実行時間である。この処理は、期間Ｔｃ毎に変化する総実行時間に対するフィルタリング処理の一種である。
【００３９】
続いて、次の期間Ｔｃのための処理として、ステップ３７０で変数Ｔａｐｐ´に現在の変数Ｔａｐｐの値を代入し、さらにステップ３８０で、変数Ｔａｐｐをゼロにリセットする。このようになっていることで、次回の計測タスク３００において、変数Ｔａｐｐ´が、当該計測タスク３００の実行時から見て直前となる期間ＴｃにおけるＰＦタスクの総実行時間として用いられる。ステップ３８０の後、計測タスク３００の実行が終了する。このようなステップ３６０〜３８０の処理によって、直近の２つの期間ＴｃにおけるすべてのＡＰタスクの実行時間の平均を算出することができる。そして、この実行時間を期間Ｔｃで除算すれば、直近の２つの期間Ｔｃにおけるすべての指定ＡＰタスクによるＣＰＵ利用率を特定することができる。
【００４０】
以上のように、個々のタスクについて、当該タスクの開始時刻と終了時刻との差を実行時間として特定することで、当該タスクの実行時間を特定することができる。このような方法を用いることで、タスクの実行時間が非常に短い場合であっても、確実にその実行時間を特定することができ、また、アイドルタスクの一部として実行される他の処理によって実行時間の計算に狂いが生じることがない。
【００４１】
このように、あらかじめ指定されたＡＰタスクのタスクＩＤと、実行を開始するＡＰタスクのタスクＩＤとを照合し、それらが合致したときに、当該ＡＰタスクの開始時刻と終了時刻との差を実行時間として記録することで、所望のタスクの実行時間を特定することができる。
【００４２】
また、各期間Ｔｃについて算出された全ＡＰタスクまたは全指定ＡＰタスクの総実行時間には、それより過去の複数の期間Ｔｃにおける算出結果を用いたフィルタリング処理が施される。フィルタリング処理が施されない場合には、図７に示すように、算出値７１〜７６の値の、異なる期間Ｔｃ間のばらつきが大きいので、それら算出値７１〜７６に基づいて作成される波形７７の形状も変化が激しい。
【００４３】
しかし、フィルタリングが施されると、図８に示すように、算出値８１〜８６の値の、異なる期間Ｔｃ間のばらつきが抑えられるので、それら算出値８１〜８６に基づいて作成される波形７７の形状も変化が緩やかである。したがって、作業者は、フィルタリングを施した結果のデータをＲＡＭモニタ２を用いて取得した場合は、改めて算出結果の平均化等の作業を行う必要がなくなる。
【００４４】
また、計測タスクがプラットフォームタスクとして実現されているので、アプリケーションタスクの設計者が、アプリケーションタスクの実行時間算出のためのプログラムを作成する必要がなくなる。したがって、アプリケーションの設計内容によらず、タスクの処理負荷の計測が可能となる。
【００４５】
なお、上記実施形態においては、ＥＣＵ１が電子計算装置の一例に相当し、ＲＡＭ１１、ＲＯＭ１２、およびＣＰＵ１３中のレジスタが記憶媒体の一例に相当する。また、ＣＰＵ１３が、タスク開始フック関数１００のステップ１４０を実行することで判定手段の一例として機能し、ステップ１５０を実行することで開始時記録手段の一例として機能し、タスク終了フック関数２００のステップ２７０を実行することで終了時記録手段の一例として機能し、また、タスク開始フック関数１００のステップ１３０およびタスク終了フック関数２００のステップ２４０を実行することで開始終了時算出手段の一例として機能し、計測タスク３００のステップ３２０、３３、３４０、３５０を実行することで計測結果記録手段の一例として機能する。
【００４６】
（他の実施形態）
以上、本発明の実施形態について説明したが、本発明の範囲は、上記実施形態のみに限定されるものではなく、本発明の各発明特定事項の機能を実現し得る種々の形態を包含するものである。
【００４７】
例えば、上記の実施形態においては、ＥＣＵ１は車両に搭載されるＥＣＵとなっているが、本発明の電子計算装置は、車両に搭載されるものでなくともよい。
【００４８】
また、上記の実施形態においては、ＰＦタスクの総実行時間に、計測タスクの実行時間を含めるようになっていてもよいし、含めないようになっていてもよい。期間ＴＣにおける計測タスクの実行時間は、期間ＴＣに比べて十分短いので、どちらの場合においても、アプリケーションタスクの実行時間の計測には大きな影響を及ぼさない。
【００４９】
また、ＡＰタスクとＰＦタスクの間の優先度の関係は、図３のようなものに限らず、どのようになっていてもよい。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施形態に係るＥＣＵ１の構成およびＲＡＭモニタ２との接続関係を示すブロック図である。
【図２】ＣＰＵ１３が実行するソフトウェアの階層分けを示す図である。
【図３】ＣＰＵ１３における種々のタスクの実行順序の一例を示すタイミング図である。
【図４】タスク開始フック関数１００のフローチャートである。
【図５】タスク終了フック関数２００のフローチャートである。
【図６】計測タスク３００のフローチャートである。
【図７】フィルタリングが施されない場合の総実行時間の変化波形７７を示す図である。
【図８】フィルタリングが施される場合の総実行時間の変化波形７７を示す図である。
【符号の説明】
【００５１】
１…ＥＣＵ、２…ＲＡＭモニタ、１０…タイマ、１１…ＲＡＭ、１２…ＲＯＭ、
１３…ＣＰＵ、３１…アプリケーション、３２…プラットフォーム、３３…ＲＴＯＳ、
３４…ハードウェア、４１〜４３…計測タスク、５１〜５５…ＰＦタスク、
６１〜６７…ＡＰタスク、７１〜７６、８１〜８６…算出値、７７、８７…波形、
１００…タスク開始フック関数、２００…タスク終了フック関数、
３００…計測タスク。
【図１】
2008276674.tif 000003
【図２】
2008276674.tif 000004
【図３】
2008276674.tif 000005
【図４】
2008276674.tif 000006
【図５】
2008276674.tif 000007
【図６】
2008276674.tif 000008
【図７】
2008276674.tif 000009
【図８】
2008276674.tif 000010