(57)【要約】【課題】従来のデータ処理装置は、計測するタスクを任意に選択することができない問題があった。【解決手段】本発明のデータ処理装置は、通常タスクと、前記通常タスクの実行順序をスケジューリングする管理タスクと、を分岐動作により切り替えて実行する命令実行部１１と、命令実行部１１において実行中の通常タスクの実行状態を計測するカウンタ１４と、命令実行部１１において実行中の通常タスクに応じてカウンタ１４を制御する状態制御部１３と、を有し、命令実行部１１は、管理タスクによってスケジューリングされた複数の通常タスクのうち次に実行する通常タスクが計測対象であるか否かを判断し、当該判断結果を状態制御部１３に通知する操作信号を出力し、状態制御部１３は、操作信号により次に実行される通常タスクが計測対象であることを通知された場合は、管理タスクから通常タスクへの前記分岐動作に応じてカウンタ１４を動作させるものである。【選択図】図１
2009140130.tif 000002
【特許請求の範囲】
【請求項１】
通常タスクと、前記通常タスクの実行順序をスケジューリングする管理タスクと、を分岐動作により切り替えて実行する命令実行部と、
前記命令実行部において実行中の前記通常タスクの実行状態を計測するカウンタと、
前記命令実行部において実行中の前記通常タスクに応じて前記カウンタを制御する状態制御部と、を有し、
前記命令実行部は、前記管理タスクによってスケジューリングされた複数の前記通常タスクのうち次に実行する前記通常タスクが計測対象であるか否かを判断し、当該判断結果を前記状態制御部に通知する操作信号を出力し、
前記状態制御部は、前記操作信号により次に実行される前記通常タスクが計測対象であることを通知された場合は、前記管理タスクから前記通常タスクへの前記分岐動作に応じて前記カウンタを動作させるデータ処理装置。
【請求項２】
前記命令実行部は、前記通常タスク又は前記管理タスクに対して割り込む割り込みタスクを実行し、
前記状態制御部は、前記通常タスクが計測対象である場合、前記通常タスクから前記割り込みタスクへの前記分岐動作の応じて前記カウンタを停止させ、前記割り込みタスクから前記通常タスクへの前記分岐動作に応じて前記カウンタを動作させる請求項１に記載のデータ処理装置。
【請求項３】
前記状態制御部は、前記操作信号に基づき動作設定値が格納される第２の格納部と、記管理タスクから前記通常タスクへの前記分岐動作に応じて前記第２の格納部に格納された前記動作設定値が格納される第１の格納部と、を有し、
前記カウンタは前記第１の格納部に格納された前記動作設定値に基づき動作を開始又は停止させる請求項１又は２に記載のデータ処理装置。
【請求項４】
前記状態制御部は、前記通常タスクから前記管理タスクへの前記分岐動作に応じて前記動作設定値を第１の格納部から前記第２の格納部に移す請求項３に記載のデータ処理装置。
【請求項５】
前記動作設定値は、前記管理タスクによってスケジューリングされた複数の前記通常タスクのうち次に実行する前記通常タスクが計測対象である場合は前記通常タスクが計測対象であることを示す第１の値となり、前記管理タスクによってスケジューリングされた複数の前記通常タスクのうち次に実行する前記通常タスクが計測対象外である場合は前記通常タスクが計測対象外であることを示す第２の値となり、
前記カウンタは、前記第１の格納部に前記第１の値が格納されている期間は動作し、前記第１の格納部に前記第２の値が格納されている期間は停止する請求項３又は４に記載のデータ処理装置。
【請求項６】
前記命令実行部は、
前記管理タスクにおいて実行される通常タスク呼出命令に基づき実行するタスクを前記管理タスクから前記通常タスクに移行し、
前記通常タスク呼出命令の実行に応じて通常タスク呼出信号を出力し、
前記通常タスクにおいて実行される管理タスク呼出命令に基づき実行するタスクを前記通常タスクから前記管理タスクに移行し、
前記管理タスク呼出命令の実行に応じて管理タスク呼出信号を出力し、
前記状態制御部は、
前記通常タスク呼出信号に応じて、前記動作設定値を前記第２の格納部から前記第１の格納部に移し、
前記管理タスク呼出信号に応じて、前記動作設定値を前記第１の格納部から前記第２の格納部に移す請求項３乃至５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記命令実行部は、
前記命令実行部の外部から入力される割り込み発生信号に応じて実行される割り込み要求命令に基づき実行するタスクを前記割り込み発生信号を生成した割り込み先のタスクに移行し、
前記割り込みタスクにおいて実行される割り込み復帰命令に基づき実行するタスクを割り込み元のタスクに移行し、
前記割り込み復帰命令の実行に応じて割り込み復帰信号を出力し、
前記状態制御部は、
前記割り込み発生信号に応じて前記動作設定値を前記第１の格納部から前記第２の格納部に移し、
前記割り込み復帰信号に応じて前記動作設定値を前記第２の格納部から前記第１の格納部に移す請求項３乃至６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記データ処理装置は、前記命令実行部において実行されるタスクに関するプログラム及び前記タスクの実行に応じて生成される中間情報を格納するメモリを有し、
前記命令実行部は、前記割り込みタスクにおいて実行される退避操作に基づき前記第２の格納部から前記割り込みタスクの分岐元タスクに関する前記動作設定値を読み出し、前記動作設定値を退避コンテキストとして前記メモリに格納し、前記割り込みタスクにおいて実行される回復操作に基づき前記メモリから前記退避コンテキストを読み出し、前記退避コンテキスト中の前記動作設定値を前記第２の格納部に設定する請求項３乃至７のいずれか１項に記載のデータ処理装置。
【請求項９】
前記命令実行部は、前記割り込みタスクが計測対象である場合、前記退避操作の実行に応じて前記動作設定値に実行中の前記割り込みタスクが計測対象であることを示す値を設定する請求項８に記載のデータ処理装置。
【請求項１０】
前記データ処理装置は、前記カウンタが出力するカウント値を格納するカウント値格納部を有し、前記カウンタは、動作開始時に前記カウント格納部に格納されているカウント値をカウントの開始値として読み出す請求項１乃至９のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記カウンタは、前記通常タスク又は前記割り込みタスクの実行状態として、前記命令実行部に供給される動作クロックをカウントし、前記通常タスク又は前記割り込みタスクの実行時間を計測する請求項２乃至１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
前記カウンタは、前記通常タスク又は前記割り込みタスクの実行状態として、前記通常タスク又は前記割り込みタスクの実行に伴い発生するイベントの回数をカウントする請求項２乃至１０のいずれか１項に記載のデータ処理装置。
【請求項１３】
前記データ処理装置は、前記カウンタが出力するカウント値と予め設定される比較値との比較一致結果を前記割り込み要求信号として出力する比較器と、外部又は前記比較器から出力される割り込み要求信号に応じて前記命令実行部に分岐動作を指示する割り込み発生信号を出力する割り込み制御部と、を有する請求項１乃至１２のいずれか１項に記載のデータ処理装置。
【請求項１４】
通常タスクと、前記通常タスクの実行順序をスケジューリングする管理タスクと、を分岐動作により切り替えて実行する命令実行部と、
前記命令実行部において実行中の前記通常タスクの実行状態を計測するカウンタと、
前記命令実行部において実行中の前記通常タスクに応じて前記カウンタを制御する状態制御部と、を有するデータ処理装置の制御方法であって、
前記管理タスクによってスケジューリングされた複数の前記通常タスクのうち次に実行する前記通常タスクが計測対象であるか否かを判断し、
前記判断の結果により次に実行される前記通常タスクが計測対象であった場合は、前記管理タスクから前記通常タスクへの前記分岐動作に応じて前記カウンタを動作させるデータ処理装置の制御方法。
【請求項１５】
前記命令実行部は、前記通常タスク又は前記管理タスクに対して割り込む割り込みタスクを実行し、
前記通常タスクが計測対象である場合、前記通常タスクから前記割り込みタスクへの前記分岐動作の応じて前記カウンタを停止させ、前記割り込みタスクから前記通常タスクへの前記分岐動作に応じて前記カウンタを動作させる請求項１４に記載のデータ処理装置の制御方法。
【請求項１６】
前記命令実行部は、
前記管理タスクにおいて実行される通常タスク呼出命令に基づき実行するタスクを前記管理タスクから前記通常タスクに移行し、
前記通常タスク呼出命令の実行に応じて通常タスク呼出信号を出力し、
前記通常タスクにおいて実行される管理タスク呼出命令に基づき実行するタスクを前記通常タスクから前記管理タスクに移行し、
前記管理タスク呼出命令の実行に応じて管理タスク呼出信号を出力し、
前記状態制御部は、
前記通常タスクが計測対象である場合、
前記通常タスク呼出信号に応じて、前記カウンタの動作を開始させ、
前記管理タスク呼出信号に応じて、前記カウンタの動作を停止させる請求項１４又は１５のいずれか１項に記載のデータ処理装置の制御方法。
【請求項１７】
前記命令実行部は、
前記命令実行部の外部から入力される割り込み発生信号に応じて実行される割り込み要求命令に基づき実行するタスクを前記割り込み発生信号を生成した割り込み先のタスクに移行し、
前記割り込みタスクにおいて実行される割り込み復帰命令に基づき実行するタスクを割り込み元のタスクに移行し、
前記割り込み復帰命令の実行に応じて割り込み復帰信号を出力し、
前記状態制御部は、
前記通常タスクが計測対象である場合、
前記割り込み発生信号に応じて前記カウンタの動作を停止させ、
前記割り込み復帰信号に応じて前記カウンタの動作を開始させる請求項１４乃至１６のいずれか１項に記載のデータ処理装置の制御方法。
【請求項１８】
前記データ処理装置は、前記命令実行部において実行されるタスクに関するプログラム及び前記タスクの実行に応じて生成される中間情報を格納するメモリを有し、
前記命令実行部は、前記割り込みタスクにおいて実行される退避操作に基づき前記割り込みタスクの分岐元タスクが計測対象であるか否かを示す動作設定値を読み出し、前記動作設定値を退避コンテキストとして前記メモリに格納し、前記割り込みタスクにおいて実行される回復操作に基づき前記メモリから前記退避コンテキストを読み出し、前記退避コンテキスト中の前記動作設定値を前記状態制御部に与える請求項１５乃至１７のいずれか１項に記載のデータ処理装置の制御方法。
【請求項１９】
前記カウンタは、前記通常タスク又は前記割り込みタスクの実行状態として、前記命令実行部に供給される動作クロックをカウントし、前記通常タスク又は前記割り込みタスクの実行時間を計測する請求項１５乃至１９のいずれか１項に記載のデータ処理装置の制御方法。
【請求項２０】
前記カウンタは、前記通常タスク又は前記割り込みタスクの実行状態として、前記通常タスク又は前記割り込みタスクの実行に伴い発生するイベントの回数をカウントする請求項１５乃至１９のいずれか１項に記載のデータ処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明にかかるデータ処理装置及びデータ処理装置の制御方法は、特にタスクの実行状態を計測するカウンタを有するデータ処理装置及びデータ処理装置の制御方法に関する。
【背景技術】
【０００２】
近年、マイコンなどのデータ処理装置では、複数のタスクを時分割で動作させるマルチタスク処理が行われている。マルチタスク処理では、タスク毎に実行時間を割り当て、タスクの実行時間が所定の時間に達すると、そのタスクに割り込み要求を発生させて、処理をＯＳ（Operating System）に戻し、再度別のタスクを実行する。そのため、マルチタスク処理が行われるデータ処理装置では、それぞれのタスクの実行時間を計測するタイマを備える。
【０００３】
このタイマは、ソフトウェアで実現される場合とハードウェアで実現される場合とがある。ソフトウェアでタイマを実現した場合、タスク切り替えと同時にタイマの動作又は停止を行うことができず測定時間が正確ではない問題がある。一方、ハードウェアでタイマを実現した場合、タスク切り替えと同時にタイマの動作又は停止を行うことができる。ハードウェアによってタイマを構成し、タスク実行時間を正確に測定する技術が特許文献１に開示されている。
【０００４】
特許文献１に記載の技術では、タスクを実行するＣＰＵ（Central Processing Unit）がタイマ制御レジスタを有している。タイマ制御レジスタには、実行モードに同期してタイマを動作させるか否かを指定するビットと、実行モードに同期してタイマを動作させるモードを指定するビットと、が設けられている。そして、実行モードに同期してタイマを動作させる場合、実行モードに同期してタイマを動作させるか否かを指定するビットを１に設定し、実行モードに同期してタイマを動作させない場合は、実行モードに同期してタイマを動作させるか否かを指定するビットを０に設定する。また、タイマを動作させる動作モードが特権モードである場合は実行モードに同期してタイマを動作させるモードを指定するビットを１に設定し、タイマを動作させる動作モードが非特権モードである場合は実行モードに同期してタイマを動作させるモードを指定するビットを０に設定する。特許文献１では、ＣＰＵがこれらのビットを参照してタイマを制御することで、実行モード毎のタスクの実行時間を正確に測定する。なお、ハードウェアによってタスクの実行時間を計測する技術は特許文献２〜４にも開示されている。
【特許文献１】特開平１０−２４７１４６号公報
【特許文献２】特表２００４−５０４６６７号公報
【特許文献３】特開２０００−３２２２７７号公報
【特許文献４】特開平２−２７１４３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、タイマを動作させる実行モードを選択できるのみで、同じ実行モードに含まれる複数のタスクのうち選択したタスクのみに対してタイマを動作させることはできない。データ処理装置において実行されるタスクは、全てのタスクに対して実行時間の制限が課されているわけではなく、同じ実行モードであっても実行時間の制限が課されていないタスクもある。特許文献１に記載の技術では、同じ実行モードに含まれるタスクであれば、タスクの種類にかかわらずタイマを動作させることになる。つまり、特許文献１では、タスク毎にタイマの動作と停止を制御できない問題がある。
【課題を解決するための手段】
【０００６】
本発明の一態様は、通常タスクと、前記通常タスクの実行順序をスケジューリングする管理タスクと、を分岐動作により切り替えて実行する命令実行部と、前記命令実行部において実行中の前記通常タスクの実行状態を計測するカウンタと、前記命令実行部において実行中の前記通常タスクに応じて前記カウンタを制御する状態制御部と、を有し、前記命令実行部は、前記管理タスクによってスケジューリングされた複数の前記通常タスクのうち次に実行する前記通常タスクが計測対象であるか否かを判断し、当該判断結果を前記状態制御部に通知する操作信号を出力し、前記状態制御部は、前記操作信号により次に実行される前記通常タスクが計測対象であることを通知された場合は、前記管理タスクから前記通常タスクへの前記分岐動作に応じて前記カウンタを動作させるデータ処理装置である。
【０００７】
また、本発明の別の態様は、通常タスクと、前記通常タスクの実行順序をスケジューリングする管理タスクと、を分岐動作により切り替えて実行する命令実行部と、前記命令実行部において実行中の前記通常タスクの実行状態を計測するカウンタと、前記命令実行部において実行中の前記通常タスクに応じて前記カウンタを制御する状態制御部と、を有するデータ処理装置の制御方法であって、前記管理タスクによってスケジューリングされた複数の前記通常タスクのうち次に実行する前記通常タスクが計測対象であるか否かを判断し、前記判断の結果により次に実行される前記通常タスクが計測対象であった場合は、前記管理タスクから前記通常タスクへの前記分岐動作に応じて前記カウンタを動作させるデータ処理装置の制御方法である。
【０００８】
本発明にかかるデータ処理装置及びデータ処理装置の制御方法では、次に実行する通常タスクが計測対象であるか否かを判断し、その判断の結果に基づき状態制御部がカウンタを動作させる。本発明では、次に実行する通常タスクが計測対象のタスクであれば、状態制御部には計測対象となっている通常タスクの実行前に次に実行するタスクが計測対象であることが通知される。そして、通常タスクが計測対象であった場合は、管理タスクから通常タスクへの分岐動作に応じて、状態制御部はカウンタを動作させる。つまり、本発明にかかるデータ処理装置は、次に実行するタスクが計測対象であるか否かを判断し、その判断の結果に基づきカウンタを動作させるか否かを制御することができる。このとき、本発明にかかるデータ処理装置では、タスク単位でカウンタを制御するため、タスクの実行モードに依存することなく任意のタスクを選択して計測することができる。
【発明の効果】
【０００９】
本発明のデータ処理装置及びデータ処理装置の制御方法によれば、タスクの実行モードによらず任意のタスクのみを選択して動作状態を計測することができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１に実施の形態１にかかるデータ処理装置１のブロック図を示す。図１に示すように、データ処理装置１は、メモリ１０、命令実行部１１、計測回路１２、割り込み制御部１８、ＯＲ回路１９、２０を有する。
【００１１】
メモリ１０は、命令実行部１１において実行されるタスクに関するプログラム、及び、タスク実行中に発生する中間情報を格納する。命令実行部１１は、データ処理装置１によって提供される機能を実現するタスクを実行する。命令実行部１１は、タスクの実行順序をスケジュールする管理タスクと、前記管理タスクにより実行順序がスケジュールされる通常タスクと、前記管理タスク又は前記通常タスクに対して割り込む割り込みタスクとを分岐動作により切り替えて実行する。命令実行部１１は、通常タスク呼出命令、管理タスク呼出命令、割り込み復帰命令の実行、又は割り込み発生信号の入力に応じて実行するタスクを切り替える。本実施の形態では、割り込み発生信号は割り込み制御回路１８から出力される。また、以下の説明では、管理タスクは、例えばＯＳ（Operating System）などにおいて実装された複数の機能のうちスケジューリング機能を実現するタスクとして説明する。通常タスクは、ユーザープログラムの各種機能を実現するタスク及びＯＳのスケジューリング機能以外の機能を実現するタスクを含むものとする。つまり、ＯＳが例えば特権モード等の特殊なモードで動作するタスクを含むものであっても、通常タスクには、これら特殊なモードで動作するタスクが含まれる。割り込みタスクは、管理タスクによってスケジューリングされないタスクを含むものとする。
【００１２】
より具体的には、命令実行部１１が管理タスクを実行中に、管理タスクにおいて通常タスク呼出命令が実行されると、命令実行部１１は、実行するタスクを管理タスクから通常タスクに切り替える。また、命令実行部１１は、通常タスク呼出命令の実行に伴い通常タスク呼出信号を出力する。命令実行部１１が通常タスクを実行中に、通常タスクにおいて管理タスク呼出命令が実行されると、命令実行部１１は、実行するタスクを通常タスクから管理タスクに切り替える。また、命令実行部１１は、管理タスク呼出命令の実行に伴い管理タスク呼出信号を出力する。命令実行部１１が管理タスク又は通常タスクを実行中に、割り込み発生信号が入力されると、命令実行部１１は、実行するタスクを管理タスク又は通常タスクから割り込みタスクに切り替える。命令実行部１１が割り込みタスクを実行中に、割り込みタスクにおいて割り込み復帰命令が実行されると、命令実行部１１は、実行するタスクを割り込みタスクから管理タスク又は通常タスクに切り替える。なお、割り込み復帰命令を実行後に分岐先となるタスクは割り込み復帰命令によって指定されたタスクであって、必ずしも分岐元タスクに戻らなくても良い。例えば、割り込み復帰命令を実行後に管理タスクに移行しても良く、通常タスクに移行しても良い。
【００１３】
なお、命令実行部１１が通常タスク呼出命令の実行又は割り込み復帰命令に基づき分岐動作を行う場合、分岐先タスクに関して保存された動作状態保存値を呼び出して、その動作状態保存値に基づき実行するタスクを切り替える。ここで、特に、管理タスクは、通常タスク呼出命令を実行する前に分岐先タスクに関する動作状態保存値を生成する。一方、命令実行部１１が管理タスク呼出命令の実行又は割り込み発生信号の入力に基づき分岐動作を行う場合、実行中のタスクに関する動作情報を動作状態保存値として保存してタスクの切り替えを行う。
【００１４】
また、命令実行部１１は、実行するタスクに応じて操作信号及びイベント通知信号を出力する。操作信号は、計測回路１２の制御信号であって、複数の信号を含む。イベント通知信号は、実行するタスクに応じて発生するエラー等のイベントを通知する。なお、命令実行部１１には、動作クロックが供給されており、命令実行部１１は、動作クロックに応じてタスクを実行する。
【００１５】
計測回路１２は、状態制御部１３、カウンタ１４、カウント値格納部１５、比較値格納部１６、比較器１７を有する。状態制御部１３は、命令実行部１１において実行中のタスクが計測対象であるか否かを示す動作設定値を格納する第１の格納部及び第２の格納部を有する。本実施の形態では、動作設定値は、命令実行部１１が通常タスクの実行前に第２の格納部に対して出力する操作信号によって設定される値である。例えば、管理タスクによってスケジューリングされた通常タスクのうち次に実行する通常タスクが計測対象である場合、動作設定値は計測の実行を示す第１の値（例えば１）が設定され、次に実行する通常タスクが計測対象外である場合、動作設定値は計測の停止を示す第２の値（例えば０）が設定される。そして、状態制御部１３は、通常タスク呼出信号又は割り込み復帰信号に基づき第２の格納部から第１の格納部に動作設定値を移し、管理タスク呼出信号又は割湖発生信号に基づき第２の格納部から第１の格納部に動作設定値を移す。状態制御部１３の詳細については後述する。
【００１６】
カウンタ１４は、状態制御部１３の第１の格納部に格納された動作設定値に基づき命令実行部１１において実行されているタスクの実行状態の計測を開始あるいは停止する。より具体的には、カウンタ１４は、命令実行部１１に供給される動作クロックと命令実行部１１において発生したイベント通知信号のいずれか一方をカウントする。なお、カウンタ１４がいずれの信号をカウントするかは、命令実行部１１から出力される操作信号に応じて決定される。これら信号のカウントは、第１の格納部に格納された動作設定値が第１の値である場合に行われ、第１の格納部に格納された動作設定値が第２の値である場合には停止される。そして、カウンタ１４は、動作設定値が第１の値である場合、カウント値格納部に格納されている値を読み出し、読み出した値を加算又は減算した値をカウント値として出力する。また、動作設定値が第２の値である場合、カウント値格納部から読み出した値読み出した値を加算又は減算することなく、そのままカウント値として出力する。
【００１７】
カウント値格納部１５は、命令実行部１１が出力する操作信号に基づきカウンタ１４が出力するカウント値を格納し、又は、格納しているカウント値をカウンタ１４に出力する。比較値格納部１６は、命令実行部１１が出力する操作信号によって比較値が格納される。この比較値は、計測割り込み要求信号の出力タイミングを設定する基準値である。比較器１７は、カウント値と比較値との比較一致結果を計測割り込み要求信号として出力する。より具体的には、カウント値が比較値以上の値である場合に計測割り込み要求信号を出力する。
【００１８】
割り込み制御回路１８は、比較器１７から出力される計測割り込み要求信号、又は、その他の周辺機器から出力される割り込み要求信号に基づき割り込み発生信号を出力する。ＯＲ回路１９は、通常タスク呼出信号と割り込み復帰信号との論理和演算結果を状態設定信号として出力する。ＯＲ回路２０は、割り込み発生信号と管理タスク呼出信号との論理和演算結果を状態保存信号として出力する。
【００１９】
ここで、状態制御部１３の詳細について説明する。状態制御部１３のブロック図を図２に示す。図２に示すように、状態制御部１３は、ＡＮＤ回路２１、２２、第１の格納部２３、第２の格納部２４を有する。ＡＮＤ回路２１は、状態設定信号と第２の格納部２４の出力信号が入力され、２つの信号の論理積演算結果をセット信号Ｓ１として出力する。なお、状態設定信号は第２の格納部２４に対してリセット信号Ｒ２として供給される。ＡＮＤ回路２２は、状態保存信号と第１の格納部２３の出力信号とが入力され、２つの信号の論理積演算結果をセット信号Ｓ２として出力する。なお、状態保存信号は、第２の格納部２４に対してリセット信号Ｒ１として与えられる。第１の格納部２３は、命令実行部１１において実行中のタスクに関する動作設定値を格納し、格納されている動作設定値をカウンタ１４に出力する。そして、第１の格納部２３は、リセット信号Ｒ１に応じて動作設定値を０とし、セット信号Ｓ１に応じて動作設定値を１とする。第２の格納部２４は、命令実行部１１において次に実行されるタスクの動作設定値を格納する。そして、第２の格納部２４は、リセット信号Ｒ２に応じて動作設定値を０とし、セット信号Ｓ１に応じて動作設定値を１とする。また、第２の格納部２４は、操作信号に含まれる次状態指定信号が入力される。この次状態指定信号が入力された場合、第２の格納部２４は、セット信号Ｓ２及びリセット信号Ｒ２にかかわらず、格納される動作設定値を次状態指定信号によって指定された値とする。例えば、次状態指定信号が１を示す場合、動作設定値を１に設定し、次状態指定信号が０を示す場合、動作設定値を０に設定する。
【００２０】
続いて、状態制御部１３の動作について説明する。本実施の形態では、動作設定値として１ビットの値を用いる。なお、動作設定値と保存値は、１ビットの値に限らず、複数のビットによって構成されていても良い。
【００２１】
まず、第１のケースとして、第１の格納部２３及び第２の格納部２４に格納されている値がともに０であった場合について説明する。第１のケースでは、ＡＮＤ回路２１、２２の１つの入力が必ず０になるため、セット信号Ｓ１、Ｓ２は、状態設定信号又は状態保存信号の値の変化に対しては０を維持する。つまり、第１のケースでは、第１の格納部２３及び第２の格納部２４に格納されている値は変化しない。
【００２２】
第２のケースは、第１の格納部２３及び第２の格納部２４に格納されている値のいずれか一方が１であって、他方が０の場合である。この場合、０が格納されている格納部にセット信号を与えるＡＮＤ回路に入力される信号が０から１になると、そのＡＮＤ回路から出力されるセット信号が１になる。そのため、０が格納されている格納部の値は１になる。一方、１が格納されている格納部に対するリセット信号も１になるため、１が格納されている格納部の値は０になる。第２のケースでは、２つの格納部の値が見かけ上入れ替わる。より具体的には、第２の格納部２４の値に１が設定され、第１の格納部２３の値に０が設定されている場合において状態保存信号が０から１になると、第２の格納部２４に格納されている値（ここでは１）に基づきセット信号Ｓ１が１になるため、第１の格納部２３の値は１に設定される。また、第２の格納部２４の値は、リセット信号Ｒ２が１になるため、０に設定される。一方、第２の格納部２４の値に０が設定され、第１の格納部２３の値に１が設定されている場合において状態設定信号が０から１になると、第１の格納部２３に格納されている値（ここでは１）に基づきセット信号Ｓ２が１になるため、第２の格納部２４の値は１に設定される。また、第１の格納部２３の値は、リセット信号Ｒ１が１になるため、０に設定される。
【００２３】
第３のケースは、第１の格納部２３及び第２の格納部２４に格納されている値がともに１であった場合である。第３のケースでは、状態保存信号が０から１になった場合、ＡＮＤ回路２２の入力がともに１となるため、セット信号Ｓ２が１となる。そのため、第２の格納部２４に格納される値は１を維持する。一方、第１の格納部２３に供給されるリセット信号Ｒ１は、状態保存信号に応じて０から１になるため、第２の格納部２４に格納される値は０になる。また、状態設定信号が０から１に立ち上がった場合、ＡＮＤ回路２１の入力がともに１になるため、セット信号Ｓ１が１となる。そのため、第１の格納部２３に格納される値は１を維持する。一方、第２の格納部２４に供給されるリセット信号Ｒ２は、状態設定信号に応じて０から１になるため、第２の格納部２４に格納される値は０になる。つまり、第３のケースでは、状態保存信号が１になった場合は、第１の格納部２３の値が０になり、第２の格納部２４の値は１を維持することになる。また、状態設定信号が１になった場合には、第２の格納部２４の値が０になり、第１の格納部２３の値が１になる。即ち、状態保存信号が１になった場合は第１の格納部２３の値に０が設定され、状態設定信号が１になった場合には第２の格納部２４の値に０が設定される。
【００２４】
次に、図３にデータ処理装置１の動作を示すフローチャートを示し、データ処理装置１の動作について説明する。図３に示す例は、管理タスクにおいて行われる次に実行する通常タスクのスケジューリング動作を最初のステップとしている（ステップＳ１）。そして、管理タスクでは、次に実行される通常タスクが計測対象か否かを判断する（ステップＳ２）。ステップＳ２において、次に実行される通常タスクが計測対象であると判断された場合（ステップＳ２：Ｙｅｓ）、命令実行部１１は、次状態指定信号を出力し、動作設定値として第２の格納部２４に次の通常タスクが計測対象であることを示す第１の値（例えば１）を設定する（ステップＳ３）。また、ステップＳ２において、次に実行される通常タスクが計測対象外であると判断された場合（ステップＳ２：Ｎｏ）、命令実行部１１は、次状態指定信号を出力し、動作設定値として第２の格納部２４に次の通常タスクが計測対象であることを示す第２の値（例えば０）を設定する（ステップＳ４）。その後、管理タスクは通常タスク呼出命令を実行する（ステップＳ５）
【００２５】
そして、ステップＳ５のタスク切り替えに伴い発生する通常タスク呼出信号に応じて、状態制御部１３は、第２の格納部２４に格納されていた動作設定値を第１の格納部２３の動作設定値にセットし、第２の格納部２４の値を０とする（ステップＳ６）。続いて、第１の格納部２３に格納された動作設定値が１であれば（ステップＳ７：Ｙｅｓ）、カウンタが動作を開始する。その後、呼び出された通常タスクが実行される（ステップＳ９）。一方、第１の格納部２３に格納された動作設定値が０であれば（ステップＳ７：Ｎｏ）、カウンタは動作せず、命令実行部１１はそのタスクを計測することなく実行する（ステップＳ９）。
【００２６】
そして、命令実行部１１で実行中の通常タスクにおいて、管理タスク呼出命令が実行される（ステップＳ１０）。この管理タスク呼出命令の実行に応じて命令実行部１１は、管理タスク呼出信号を出力する。この管理タスク呼出命令に応じて、状態制御部１３は、第２の格納部２４に第１の格納部２３に格納されていた動作設定値を格納する。また、第１の格納部２３に格納される値を０とする。また、第１の格納部２３に格納されている値が０になるのに応じてカウンタ１４は動作を停止する（ステップＳ１１）。その後、命令実行部１１は、実行するタスクを通常タスクから管理タスクに移行させ、管理タスクのスケジューリング動作を再度行う。
【００２７】
続いて、図３のフローチャートに沿ったデータ処理装置１の動作を図４に示すタイミングチャートに沿って説明する。図４に示すように、データ処理装置１では、タイミング１において、命令実行部１１が管理タスクのスケジューリング動作に基づき次状態指定信号を出力する。図４の例は、次に実行する通常タスクが計測対象である場合を示す。従って、このとき命令実行部１１から出力される次状態指定信号は１を指定する。そして、この次状態指定信号に応じて、タイミングＴ２で第２の格納部２４には第１の値を示す動作設定値が設定される。続いて、管理タスクにおいて通常タスク呼出命令が実行されると、通常タスク呼出信号が立ち上がる。また、通常タスク呼出信号の立ち上がりに応じて状態設定信号、セット信号Ｓ１及びリセット信号Ｒ２が立ち上がる。そして、タイミングＴ３の通常タスク呼出信号の立ち下がりに応じて状態設定信号、セット信号Ｓ１及びリセット信号Ｒ２が立ち下がる。そして、タイミングＴ３のセット信号Ｓ１及びリセット信号Ｒ２の立ち下がりに応じて、状態制御部１３では、第２の格納部２４に格納されていた動作設定値が第１の格納部２３に移り、第２の格納部２４には０が設定される。また、この状態制御部１３の動作によって第１の格納部２３に格納された動作設定値が第１の値となるため、カウンタ１４が動作を開始する。
【００２８】
続いて、通常タスクにおいて管理タスク呼出命令が実行されると、管理タスク呼出信号が立ち上がる。また、管理タスク呼出信号の立ち上がりに応じて状態保存信号、セット信号Ｓ２及びリセット信号Ｒ１が立ち上がる。そして、タイミングＴ４の通常タスク呼出信号の立ち下がりに応じて状態保存信号、セット信号Ｓ２及びリセット信号Ｒ１が立ち下がる。そして、タイミングＴ４のセット信号Ｓ２及びリセット信号Ｒ１の立ち下がりに応じて、状態制御部１３では、第１の格納部２３に格納されていた動作設定値が第２の格納部２４に移り、第１の格納部２３には０が設定される。また、この状態制御部１３の動作によって第１の格納部２３の値は０となるため、カウンタ１４が動作を停止する。
【００２９】
次に、データ処理装置１の動作の一例を示すシーケンス図を図５に示し、データ処理装置１の動作についてさらに説明する。図５は、計測対象のタスクである通常タスクＡ、Ｃと、計測対象外の通常タスクＢとが命令実行部１１において実行される例を示す。また、図５では、カウンタ１４は、動作クロックをカウントすることで計測対象のタスクの実行時間を計測する。なお、この図５に示す例は、図３に示すフローチャートを繰り返し実行することで実現される動作である。
【００３０】
図５に示すように、まず、計測対象外の管理タスクの実行中は、第１の格納部２３には０が設定される。そのため、カウンタ１４は動作しない。また、管理タスクを実行する命令実行部１１は、次に実行する通常タスクＡが計測対象のタスクであるため、次状態指定信号を出力し、第２の格納部２４に格納される動作設定値を第１の値（例えば１）とする。そして、管理タスクにおいて通常タスク呼出命令が実行されると、命令実行部１１は実行するタスクを管理タスクから通常タスクＡに切り替える。また、このタスクの切り替わりに同期して第２の格納部２４に格納された動作設定値が第１の格納部２３に移り、第２の格納部２４には０が設定される。これにより、第１の格納部２３には動作設定値として第１の値が設定されるため、タスクの切り替わりに同期してカウンタ１４が動作を開始し、通常タスクＡの実行時間を計測する。このとき計測される時間を時間ＵＴＡとする。
【００３１】
そして、通常タスクＡにおいて管理タスク呼出命令が実行されると、命令実行部１１は、実行するタスクを通常タスクＡから管理タスクに切り替える。また、命令実行部１１は、管理タスク呼出命令の実行に伴い管理タスク呼出信号を出力する。そのため、状態制御部１３では、管理タスク呼出信号に同期して、第１の格納部２３に格納されている動作設定値を第２の格納部２４に移し、第１の格納部２３に０を設定する。これにより、第１の格納部２３の値は計測の停止状態を示す第２の値になるため、カウンタ１４は動作を停止する。
【００３２】
続いて、管理タスクを実行する命令実行部１１は、次に実行する通常タスクＢが計測対象外のタスクであるため、次状態指定信号を出力し、第２の格納部２４に格納される動作設定値を第２の値（例えば０）とする。そして、管理タスクにおいて通常タスク呼出命令が実行されると、命令実行部１１は実行するタスクを管理タスクから通常タスクＢに切り替える。また、このタスクの切り替わりに同期して第２の格納部２４に格納された動作設定値が第１の格納部２３に移り、第２の格納部２４には０が設定される。これにより、第１の格納部２３には動作設定値として第２の値が設定されるため、タスクが切り替わってもカウンタ１４は停止状態を維持する。
【００３３】
そして、通常タスクＢにおいて管理タスク呼出命令が実行されると、命令実行部１１は、実行するタスクを通常タスクＢから管理タスクに切り替える。また、命令実行部１１は、管理タスク呼出命令の実行に伴い管理タスク呼出信号を出力する。そのため、状態制御部１３では、管理タスク呼出信号に同期して、第１の格納部２３に格納されている動作設定値を第２の格納部２４に移し、第１の格納部２３に０を設定する。これにより、第１の格納部２３の値は計測の停止状態を示す第２の値になるため、カウンタ１４は停止状態を維持する。
【００３４】
次に、管理タスクを実行する命令実行部１１は、次に実行する通常タスクＣが計測対象のタスクであるため、次状態指定信号を出力し、第２の格納部２４に格納される動作設定値を第１の値（例えば１）とする。そして、管理タスクにおいて通常タスク呼出命令が実行されると、命令実行部１１は実行するタスクを管理タスクから通常タスクＣに切り替える。また、このタスクの切り替わりに同期して第２の格納部２４に格納された動作設定値が第１の格納部２３に移り、第２の格納部２４には０が設定される。これにより、第１の格納部２３には動作設定値として第１の値が設定されるため、タスクの切り替わりに同期してカウンタ１４が動作を開始し、通常タスクＡの実行時間を計測する。このとき計測される時間を時間ＵＴＣとする。
【００３５】
そして、通常タスクＣにおいて管理タスク呼出命令が実行されると、命令実行部１１は、実行するタスクを通常タスクＣから管理タスクに切り替える。また、命令実行部１１は、管理タスク呼出命令の実行に伴い管理タスク呼出信号を出力する。そのため、状態制御部１３では、管理タスク呼出信号に同期して、第１の格納部２３に格納されている動作設定値を第２の格納部２４に移し、第１の格納部２３に０を設定する。これにより、第１の格納部２３の値は計測の停止状態を示す第２の値になるため、カウンタ１４は動作を停止する。
【００３６】
上記説明では、管理タスクと通常タスクとを切り替えた場合の動作について説明した。以下の説明では、管理タスク又は通常タスクに対して割り込みタスクが割り込んだ場合のデータ処理装置１の動作について説明する。図６に割り込みタスクが割り込んだ場合におけるデータ処理装置１の動作を示すフローチャートを示す。
【００３７】
図６に示す例は、管理タスク又は通常タスクが命令実行部１１において実行中の状態を最初のステップとしている（ステップＳ２１）。そして、管理タスク又は通常タスクの実行中に割り込み発生信号が命令実行部１１に入力されると、命令実行部１１は実行するタスクを割り込み発生信号を生成した割り込みタスクに移行させる（ステップＳ２２）。また、この割り込み発生信号に応じて、命令実行部１１は、管理タスク呼出信号を出力する。この管理タスク呼出命令に応じて、状態制御部１３は、第２の格納部２４に第１の格納部２３に格納されていた動作設定値を格納する。また、第１の格納部２３に格納される値を０とする。また、第１の格納部２３に格納されている値が０になるのに応じてカウンタ１４は動作を停止する（ステップＳ２３）。その後、命令実行部１１は、割り込みタスクを実行する（ステップＳ２４）。
【００３８】
そして、ステップＳ２４において実行されている割り込みタスクにおいて割り込み復帰命令が実行される。命令実行部１１は、割り込み復帰命令の実行に応じて割り込み復帰信号を出力する。そして、状態制御部１３は、第２の格納部２４に格納されていた動作設定値を第１の格納部２３の動作設定値にセットし、第２の格納部２４の値を０とする（ステップＳ２６）。続いて、第１の格納部２３に格納された動作設定値が１であれば（ステップＳ２７：Ｙｅｓ）、カウンタが動作を開始する。その後、呼び出された通常タスク又は管理タスクを実行する。一方、第１の格納部２３に格納された動作設定値が０であれば（ステップＳ２７：Ｎｏ）、カウンタは動作せず、命令実行部１１はそのタスクを計測することなく呼び出された通常タスク又は管理タスクを実行する。
【００３９】
続いて、図６のフローチャートに沿ったデータ処理装置１の動作を図７に示すタイミングチャートに沿って説明する。なお、図７は、通常タスクの実行中に割り込みタスクが割り込む例を示すものである。図７に示すように、データ処理装置１では、通常タスク実行中に割り込み発生信号が立ち上がるとこの立ち上がりに応じて状態保存信号、セット信号Ｓ２及びリセット信号Ｒ１が立ち上がる。そして、タイミングＴ１１の割り込み発生信号の立ち下がりに応じて状態保存信号、セット信号Ｓ２及びリセット信号Ｒ１が立ち下がる。そして、タイミングＴ１１のセット信号Ｓ２及びリセット信号Ｒ１の立ち下がりに応じて、状態制御部１３では、第１の格納部２３に格納されていた動作設定値が第２の格納部２４に移り、第１の格納部２３には０が設定される。また、この状態制御部１３の動作によって第１の格納部２３に格納された動作設定値が第２の値となるため、カウンタ１４が動作を停止する。
【００４０】
続いて、割り込みタスクにおいて割り込み復帰命令が実行されると、割り込み復帰信号が立ち上がる。また、割り込み復帰信号の立ち上がりに応じて状態設定信号、セット信号Ｓ１及びリセット信号Ｒ２が立ち上がる。そして、タイミングＴ１２の割り込み復帰信号の立ち下がりに応じて状態設定信号、セット信号Ｓ１及びリセット信号Ｒ２が立ち下がる。そして、タイミングＴ１２のセット信号Ｓ１及びリセット信号Ｒ２の立ち下がりに応じて、状態制御部１３では、第２の格納部２４に格納されていた動作設定値が第１の格納部２３に移り、第２の格納部２４には０が設定される。また、この状態制御部１３の動作によって第１の格納部２３の値は第１の値となるため、カウンタ１４は動作を開始する。
【００４１】
次に、データ処理装置１において割り込みタスクが実行される場合の動作の一例を示すシーケンス図を図８に示し、データ処理装置１の動作についてさらに説明する。図８は、計測対象のタスクである通常タスクと、計測対象外のタスクである管理タスクと割り込みタスクとが命令実行部１１において実行される例を示す。また、図８では、カウンタ１４は、動作クロックをカウントすることで計測対象のタスクの実行時間を計測する。さらに、図８は、ユーザータスク実行中に割り込みタスクが割り込み処理され、計測時間がとぎれる例を示すものである。
【００４２】
図８に示すように、まず、計測対象外の管理タスクの実行中は、動作設定値が０を示す。そのため、カウンタ１４は動作しない。また、管理タスクを実行する命令実行部１１は、次に実行するユーザータスクが計測対象のタスクであるため、次状態指定信号を出力し、第２の格納部２４に第１の値を動作設定値として設定する。そして、管理タスクにおいて通常タスク呼出命令が実行されると、命令実行部１１において実行されるタスクが管理タスクから通常タスクに切り替わる。また、このタスクの切り替わりに同期して第２の格納部２４に格納された動作設定値が第２の格納部２４に移り、第２の格納部２４には０が設定される。これにより、第１の格納部２３に格納される動作設定値が１になるため、タスクの切り替わりに同期してカウンタ１４が動作を開始し、ユーザータスクの実行時間を計測する。このとき計測される時間を時間ＵＴ１とする。
【００４３】
そして、通常タスクの実行中に割り込みタスクによる割り込み要求が発生すると、割り込み発生信号に基づき命令実行部１１は実行するタスクを通常タスクから割り込みタスクに切り替える。また、割り込み発生信号に基づき状態制御部１３では、第１の格納部２３に格納された動作設定値を第２の格納部２４に移し、第１の格納部２３の値に０を設定する。これにより、通常タスクが実行されている期間の動作設定値は、第２の格納部２４に保存されることになる。また、第１の格納部２３には０が格納されるため、カウンタ１４は、タスクの切り替わりに同期して動作を停止する。ここで、データ処理装置１では、割り込み発生信号に基づき、カウンタ１４がタスクの切り替わり時に出力していたカウント値はカウント値格納部に格納される。
【００４４】
続いて、割り込みタスクの実行が進むと、割り込みタスクは割り込み復帰命令を実行する。これにより、命令実行部１１が実行するタスクは分岐元の通常タスクになる。また、命令実行部１１は、割り込み復帰命令の実行に応じて割り込み復帰信号を出力する。この割り込み復帰信号に応じて状態制御部１３は、第２の格納部２４に格納されている動作設定値を第１の格納部２３に移し、第２の格納部２４に０を設定する。これにより、第１の格納部２３に格納される動作設定値は第１の値となる。また、データ処理装置１では、割り込み復帰信号に応じて、カウンタ１４にカウント値格納部１５に格納されていたカウント値を設定する。そして、カウンタ１４は、動作設定値の切り替わりに応じて、ユーザータスクの実行時間の計測を再開する。計測の再開後にカウンタ１４によって計測される時間を時間ＵＴ２とする。
【００４５】
そして、通常タスクにおいて管理タスク呼出命令が実行されると、命令実行部１１は、実行するタスクを通常タスクから管理タスクに切り替える。このとき、命令実行部１１は、管理タスク呼出信号を出力する。状態制御部１３は、管理タスク呼出信号に基づき第１の格納部２３に格納されている動作設定値を第２の格納部２４に移し、第１の格納部２３の値に０を設定する。
【００４６】
上記説明より、本実施の形態にかかるデータ処理装置１は、管理タスクから通常タスクへのタスク切り替えの前に次に実行する通常タスクに関する動作設定値を第２の格納部２４に格納する。そして、タスクの切り替わりに同期して、第２の格納部２４に格納された動作設定値を第１の格納部２３に移す。これにより、カウンタ１４は通常タスクの実行状態を誤差なく計測することができる。また、通常タスクの実行中に割り込みタスクが割り込んだ場合であっても、タスクの切り替わりに同期して第１の格納部２３に格納された動作設定値を第２の格納部２４に保存し、割り込みタスクから通常タスクへの切り替わりに同期して第２の格納部２４に格納された動作設定値を第１の格納部２３に戻す。これにより、通常タスクの実行中に割り込みタスクが割り込み通常タスクの実行時間が分断される場合であっても、通常タスクの計測を正確に行うことができる。例えば、図８に示す例では、計測時間ＵＴ１と計測時間ＵＴ２を足し合わせることで、通常タスクの時間を正確に計測することができる。
【００４７】
なお、データ処理装置１では、カウンタ１４が動作クロックを計測することで、タスクの実行時間を計測することができる。このとき、データ処理装置１では、比較器１７を用いてカウンタ１４のカウント値が比較値に達したことを検出し、その検出結果を計測割り込み要求信号として出力することで、計測回路１２をタイマとして機能させることができる。また、カウンタ１４がイベント通知信号を通知した場合、例えばタスク実行中に発生したエラーをカウントすることができる。カウンタ１４がイベント通知信号を計測することで、どのタスクでエラーが発生しているか情報を得ることができるため、例えばタスクに関するプログラムのデバッグの効率を向上させることできる。
【００４８】
さらに、図５の例に示すように、データ処理装置１では、管理タスクを実行する命令実行部１１において、次に実行する通常タスクが計測対象であるか否かを判定し、次の通常タスクの実行前に第２の格納部２４にその判断結果に基づいた動作設定値を設定する。そして、命令実行部１１におけるタスクの切り替わりに同期させて第２の格納部２４に格納された動作設定値を第１の格納部２３に格納する。これにより、データ処理装置１では、通常タスクの実行モードによることなく、任意のタスクを計測対象として選択すること可能となる。このように、計測対象となる通常タスクを任意に選択することで、例えば、すでに検証が完了している通常タスクに対しては実行状態を行わず、現在検証中の通常タスクの実行状態のみを計測することができる。これにより、例えば、通常タスクに関するプログラムのデバッグにおいて必要な情報のみを取り出すことが可能であるため、プログラムのデバッグの効率が向上する。
【００４９】
また、マルチタスク処理において、通常タスクであるものの、実行時間に制約がない通常タスクに関しては設定を省くことができる。従来では、同じ実行モード中に実行時間に制約がない通常タスクが含まれる場合、例えば、実行時間としては考えられないほどの時間を比較値格納部に格納するなどの作業を行わなければならなかった。しかしながら、本実施の形態にかかるデータ処理装置１によれば、通常タスク毎に計測するか否かを選択できるため、同じ実行モード中に含まれる制限のない通常タスクに関する比較値の設定は必要ない。従って、本実施の形態にかかるデータ処理装置１は、タスクスケジュールの設定を行う際の工数を削減することができる。
【００５０】
実施の形態２
実施の形態２にかかるデータ処理装置では、実施の形態１における割り込みタスクが計測対象であった場合に、割り込みタスクの動作状態を計測するものである。割り込みタスクは、管理タスクによるスケジュールの対象ではないため、管理タスクに基づく動作設定値の設定を行うことができない。そこで、このような場合、割り込みタスクにおいて実行される退避操作に応じて命令実行部１１が動作設定値を書き換え、カウンタ１４が割り込みタスクの実行状態を計測できるようにする。また、この退避操作では、割り込みタスクの実行時に通常タスクに対応した動作設定値を退避コンテキストとしてメモリに退避させる。さらに、割り込みタスクは、退避操作と対になる回復操作を実行する。回復操作では、退避コンテキストとして退避させた動作設定値を第２の格納部２４に書き戻す操作を行う。
【００５１】
実施の形態２にかかるデータ処理装置２のブロック図を図９に示す。図９に示すように、データ処理装置２における退避操作では、命令実行部１１が状態制御部１３の第２の格納部２４に格納された動作設定値とカウント値格納部１５に格納されたカウント値を退避情報として読み出す。そして、命令実行部１１は、退避情報に退避情報に対応した通常タスクの実行状態の情報を加えて退避コンテキストとしてメモリ１０に格納する。また、回復操作では、命令実行部１１は、退避コンテキストとして退避させた情報を通常タスクの実行前に読み出す。そして、命令実行部１１は、操作信号を用いて退避した情報に含まれる動作設定値を第２の格納部２４に書き戻し、退避した情報に含まれるカウント値をカウント値格納部１５に書き戻す。
【００５２】
実施の形態２では、命令実行部１１が出力する操作信号が現状態指定信号を含む。この現状態指定信号は、第１の格納部２３に入力される。ここで、実施の形態２にかかる状態制御部１３のブロック図を図１０に示す。図１０に示すように、実施の形態２にかかる状態制御部１３は、第１の格納部２３に現状態指定信号が入力される。そして、第１の格納部２３は、現状態指定信号が入力されると、セット信号Ｓ１及びリセット信号Ｒ１の値にかかわらず現状態値指定信号によって指定される値を動作設定値として格納する。
【００５３】
ここで、実施の形態２にかかるデータ処理装置２の動作を示すフローチャートを図１１に示す。図１１に示すように、データ処理装置２では、図６に示した割り込みタスクに関するフローチャートを変更することでこの退避操作と回復操作を実現できる。より具体的には、図６に示した割り込みタスクの動作フローに、退避操作と回復操作が追加される。
【００５４】
図１１に示すように、データ処理装置２では、命令実行部１１は、割り込みタスクの実行前（ステップＳ２３の後）に、他の割り込みタスクからの割り込みを禁止する割り込み禁止状態に移行する（ステップＳ３１）。そして、命令実行部１１は、割り込みタスクに応じて退避操作を実行する（ステップＳ３２）。その後、命令実行部１１は、割り込み禁止を解除する（ステップＳ３３）。そして、ステップＳ３３の割り込み禁止の解除の後、命令実行部１１は、割り込みタスクを実行する（ステップＳ２４）。続いて、命令実行部１１は、割り込み復帰命令を実行する前に回復操作を実行し（ステップＳ３４）、その後割り込み復帰命令を実行する（ステップＳ２５）。
【００５５】
次に、実施の形態２にかかるデータ処理装置の動作を示すシーケンス図を図１２に示す。図１２は、図８のシーケンス図に対して実施の形態２の退避操作及び回復操作を適用したものである。そのため、以下では、実施の形態１と異なる部分について説明する。図１２に示すように、実施の形態２においては、割り込みタスクが実行する退避操作に応じて命令実行部１１が現状態指定信号を出力し、第１の格納部２３に第１の値を示す動作設定値を設定する。そして、カウンタ１４は、現状態指定信号による動作設定値の変更に同期して割り込みタスクの実行時間を計測する。このとき計測される割り込みタスクの実行時間を時間ＩＴＡとする。また、割り込みタスクの退避操作に応じて第２の格納部２４に格納されていた通常タスクの動作設定値は退避コンテキストとしてメモリ１０に格納される。
【００５６】
その後、割り込み回復命令の実行前に割り込みタスクの回復操作が実行されると、通常タスクに対応した動作設定値が退避コンテキストから第２の格納部２４に書き戻される。そして、通常タスクの実行が再開されると、通常タスクの動作再開に同期して第２の格納部２４の動作設定値が第１の格納部２３に移る。従って、通常タスクの動作再開に同期してカウンタ１４が動作を再開し、通常タスクの実行時間の計測を行う。
【００５７】
上記説明より、実施の形態２にかかるデータ処理装置２によれば、退避操作に応じて命令実行部１１が第１の格納部２３に格納される値を書き換えることで、管理タスクで行われるスケジュールの対象外である割り込みタスクであっても実行状態を計測することができる。このとき、退避操作が実行され、動作設定値が書き換えられるまでの期間はカウンタ１４による計測は行うことができないため、実施の形態２では計測時間の正確性は上記実施の形態よりも劣る。しかしながら、退避操作において設定される割り込み禁止期間を予め設定しておくことで、この正確性の劣化を防止することができる。例えば、割り込み禁止期間を１０ｍｓｅｃに設定した場合、カウンタ１４によって計測された時間に１０ｍｓｅｃを加えることで、正確性の劣化を防止することができる。
【００５８】
また、実施の形態２にかかるデータ処理装置２では、割り込みタスクが退避操作及び回復操作を実行し、命令実行部１１が退避操作及び回復操作に応じて保存値及びカウント値を退避及び回復させる。これにより、データ処理装置２では、第２の格納部２４に格納された通常タスクに関して保存された動作設定値が割り込みタスクによって消去されてしまう問題を回避することができる。
【００５９】
なお、実施の形態２では、退避操作及び回復操作は割り込みタスクが行うこととしたが、退避操作及び回復操作の実行を通常タスクに適用することもできる。これにより、通常タスクであっても退避操作及び回復操作を行うことができる。
【００６０】
実施の形態３
実施の形態３は、割り込みタスクが多段に割り込みを実施した場合の例を示すものである。実施の形態３では、命令実行部１１が、管理タスク及び通常タスクに加え、通常タスクに対して割り込みを行う割り込みタスクＡと、割り込みタスクＡに対してさらに割り込みを行う割り込みタスクＢとを実行する。なお、割り込みタスクＡは計測対象のタスクであり、割り込みタスクＢは計測対象外のタスクである。なお、実施の形態３でも、実施の形態２と同様に、割り込みタスクＡ、Ｂは退避操作及び回復操作を行う。
【００６１】
ここで、実施の形態３にかかるデータ処理装置の動作を示すシーケンス図を図１３に示し、データ処理装置の動作について説明する。図１３に示す例では、簡単化のため管理タスクに関する動作は省略している。図１３における通常タスクは、実施の形態１と同様に管理タスクにより動作が制御されるものとする。また、図１３は、図１２に示すシーケンス図の変形例であるため、以下では図１２と異なる部分について説明する。
【００６２】
図１３に示すように、まず、割り込みタスクＡの実行中は、動作設定値が１であるため、カウンタ１４は、割り込みタスクＡの実行時間を計測する。そして、割り込みタスクＡの実行中に割り込み発生信号が発生すると、命令実行部１１では、実行するタスクを割り込みタスクＡから割り込みタスクＢに切り替える。このタスクの切り替えに伴い、状態制御部１３では、第１の格納部２３に格納されている動作設定値が第２の格納部２４に移る。このとき第１の格納部２３には０が設定される。従って、カウンタ１４は、タスクの実行時間の測定を停止し、カウント値格納部１５は、カウント値を格納する。その後、割り込みタスクＢが実行されると、割り込みタスクＢは退避操作を実行する。この退避操作に応じて、命令実行部１１は、第２の格納部２４に格納されている割り込みタスクＡに関する動作設定値を読み出し退避コンテキストとしてメモリ１０に格納する。
【００６３】
その後、割り込みタスクＢの実行が進むと、割り込みタスクＢはタスクの終了前に回復操作を実行する。この回復操作の実行に応じて、命令実行部１１は、メモリ１０から退避コンテキストを読み出し、操作信号を用いて退避させた割り込みタスクＡに対応した動作設定値を第２の格納部２４に書き戻す。その後、割り込みタスクＢは、割り込み復帰命令を実行する。この割り込み復帰命令に応じて命令実行部１１は、割り込み復帰信号を出力する。そして、割り込み復帰命令に応じて、状態制御部１３は、第２の格納部２４に格納されている割り込みタスクＡに関する動作設定値を第１の格納部２３に移す。これにより、第１の格納部２３に第１の値が設定されるため、カウンタ１４は、タスクの切り替わりに応じて割り込みタスクＡの動作状態のカウントを再開する。
【００６４】
上記説明より、実施の形態３にかかるデータ処理装置では、割り込みタスクの多重割り込みが発生した場合であっても、計測対象となっているタスクと計測対象外のタスクとを確実に分けることができる。つまり、割り込みタスクの実行時間が分断される場合であっても、実施の形態３にかかるデータ処理装置は、計測対象のタスクの計測を確実に行うことができる。
【００６５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、動作制御部の構成は上記実施の形態に限られたものではなく、格納する動作設定値及び保存値のデータ形式に応じて適宜変更することが可能である。
【図面の簡単な説明】
【００６６】
【図１】実施の形態１にかかるデータ処理装置のブロック図である。
【図２】実施の形態１にかかる状態制御部のブロック図である。
【図３】実施の形態１において通常タスクが実行される場合のデータ処理装置の動作を示すフローチャートである。
【図４】実施の形態１において通常タスクが実行される場合の状態制御部の動作を示すタイミングチャートである。
【図５】実施の形態１において通常タスクが実行される場合のデータ処理装置の動作を示すシーケンス図である。
【図６】実施の形態１において割り込みタスクが発生した場合のデータ処理装置の動作を示すフローチャートである。
【図７】実施の形態１において割り込みタスクが発生した場合の状態制御部の動作を示すタイミングチャートである。
【図８】実施の形態１において割り込みタスクが発生した場合のデータ処理装置の動作を示すシーケンス図である。
【図９】実施の形態２にかかるデータ処理装置のブロック図である。
【図１０】実施の形態２にかかる状態制御部のブロック図である。
【図１１】実施の形態２にかかるデータ処理装置の動作を示すフローチャートである。
【図１２】実施の形態２にかかるデータ処理装置の動作を示すシーケンス図である。
【図１３】実施の形態３にかかるデータ処理装置の動作を示すシーケンス図である。
【符号の説明】
【００６７】
１、２    データ処理装置
１０    メモリ
１１    命令実行部
１２    計測回路
１３    状態制御部
１４    カウンタ
１５    カウント値格納部
１６    比較値格納部
１７    比較器
１８    割り込み制御部
１９、２０    ＯＲ回路
２１、２２    ＡＮＤ回路
２３    第１の格納部
２４    第２の格納部
Ｓ１、Ｓ２    セット信号
Ｒ１、Ｒ２    リセット信号
【図１】
2009140130.tif 000003
【図２】
2009140130.tif 000004
【図３】
2009140130.tif 000005
【図４】
2009140130.tif 000006
【図５】
2009140130.tif 000007
【図６】
2009140130.tif 000008
【図７】
2009140130.tif 000009
【図８】
2009140130.tif 000010
【図９】
2009140130.tif 000011
【図１０】
2009140130.tif 000012
【図１１】
2009140130.tif 000013
【図１２】
2009140130.tif 000014
【図１３】
2009140130.tif 000015