JP2008097410A - 制御装置およびそのソフトウェア実行負荷測定方法 - Google Patents
制御装置およびそのソフトウェア実行負荷測定方法 Download PDFInfo
- Publication number
- JP2008097410A JP2008097410A JP2006279836A JP2006279836A JP2008097410A JP 2008097410 A JP2008097410 A JP 2008097410A JP 2006279836 A JP2006279836 A JP 2006279836A JP 2006279836 A JP2006279836 A JP 2006279836A JP 2008097410 A JP2008097410 A JP 2008097410A
- Authority
- JP
- Japan
- Prior art keywords
- task
- lowest
- timer
- execution
- measurement timer
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】 スケジューラや定周期割り込みを使用することなく、少ないCPU負荷で、ソフトウェアの実行負荷の測定および異常監視をすることができる制御装置およびソフトウェア実行負荷測定方法を提供する。
【解決手段】 上位タスク4開始時に、タスク測定タイマ2のコントロールワードを保存する上位タスク開始処理部6と、上位タスク4終了時に、保存されたコントロールワードをタスク測定タイマ2に書き込む上位タスク終了処理部7と、最下位タスク5のループ開始時に、タスク測定タイマ2とフリーランタイマ3の値を記憶する最下位タスク開始処理部8と、ループ終了時に、タスク測定タイマ2とフリーランタイマ3の増分値から最下位タスク5の実行負荷を求める最下位タスク実行負荷計算部9を備える。
【選択図】図1
【解決手段】 上位タスク4開始時に、タスク測定タイマ2のコントロールワードを保存する上位タスク開始処理部6と、上位タスク4終了時に、保存されたコントロールワードをタスク測定タイマ2に書き込む上位タスク終了処理部7と、最下位タスク5のループ開始時に、タスク測定タイマ2とフリーランタイマ3の値を記憶する最下位タスク開始処理部8と、ループ終了時に、タスク測定タイマ2とフリーランタイマ3の増分値から最下位タスク5の実行負荷を求める最下位タスク実行負荷計算部9を備える。
【選択図】図1
Description
本発明は、制御装置に関し、特に制御装置におけるソフトウェアの実行負荷を測定する方法に関する。
従来の制御装置は、タスクのスイッチング処理を行なうスケジューラ、ハードウェアカウンタ、および定周期割り込みを使用して定周期割り込み処理の中でソフトウェアの実行負荷を測定している(例えば、特許文献1参照)。
以下に従来のスケジューラ、ハードウェアカウンタおよび定周期割り込みを使用してソフトウェアの実行負荷を測定する場合の動作について図を用いて説明する。
図8は、従来の制御装置の構成を示すブロック図である。図8において、101は中央処理装置(以下CPUと略す)、102はメモリ、103はCPU1に対して一定の周期で割り込みをかける定周期割り込み発生装置である。105は割り込み回数加算回路で、割り込み信号によりTICK(時間の刻みを表す単位で、割り込みの間隔を1TICKと呼ぶ)を加算する回路である。106はタスクのスイッチング処理を行なうスケジューラである。113はハードウェアカウンタ(以下カウンタと略す)である。107は処理を行なうタスクA、114はタスクAの実行時間を格納するカウントデータエリアである。121は他のタスクが実行されていない時に実行される優先順位の最も低いタスク(以下最下位タスクと略す)、125は最下位タスク121の実行時間を格納するカウントデータエリアである。各カウントデータエリア114、125は各タスクのデータとしてメモリ102の中にそれぞれ割り付けられる。122は実行負荷計算回路で最下位タスク121の実行時間を測定し、定周期割り込み装置103からの割り込み信号を利用してCPU101の一定時間内の最下位タスク121の実行負荷を算出する。また、116はカウンタ113のカウント値を読み込み、カウントデータエリア114もしくは125へ書き込むカウンタ読み込み機能、117はカウントデータエリア114もしくは125のデータ(カウント値)を読み込み、カウンタ113へ書き込むカウンタ書き込み機能であり、カウンタ書き込み機能116とカウンタ読み込み機能117はスケジューラ106の中で動作する。図7の構成において、タスクの実行時間は、タスクスイッチが発生した時にカウンタ読み込み機能116によりカウンタ113の値を読み込み、実行が停止されるタスクのカウントデータエリアへ書き込み、カウンタ書き込み機能117により実行が開始されるタスクのカウントデータエリアからカウント値を読み込みカウンタ113へ書き込むことをスケジューラ106内で行なうことにより測定している。
図8は、従来の制御装置の構成を示すブロック図である。図8において、101は中央処理装置(以下CPUと略す)、102はメモリ、103はCPU1に対して一定の周期で割り込みをかける定周期割り込み発生装置である。105は割り込み回数加算回路で、割り込み信号によりTICK(時間の刻みを表す単位で、割り込みの間隔を1TICKと呼ぶ)を加算する回路である。106はタスクのスイッチング処理を行なうスケジューラである。113はハードウェアカウンタ(以下カウンタと略す)である。107は処理を行なうタスクA、114はタスクAの実行時間を格納するカウントデータエリアである。121は他のタスクが実行されていない時に実行される優先順位の最も低いタスク(以下最下位タスクと略す)、125は最下位タスク121の実行時間を格納するカウントデータエリアである。各カウントデータエリア114、125は各タスクのデータとしてメモリ102の中にそれぞれ割り付けられる。122は実行負荷計算回路で最下位タスク121の実行時間を測定し、定周期割り込み装置103からの割り込み信号を利用してCPU101の一定時間内の最下位タスク121の実行負荷を算出する。また、116はカウンタ113のカウント値を読み込み、カウントデータエリア114もしくは125へ書き込むカウンタ読み込み機能、117はカウントデータエリア114もしくは125のデータ(カウント値)を読み込み、カウンタ113へ書き込むカウンタ書き込み機能であり、カウンタ書き込み機能116とカウンタ読み込み機能117はスケジューラ106の中で動作する。図7の構成において、タスクの実行時間は、タスクスイッチが発生した時にカウンタ読み込み機能116によりカウンタ113の値を読み込み、実行が停止されるタスクのカウントデータエリアへ書き込み、カウンタ書き込み機能117により実行が開始されるタスクのカウントデータエリアからカウント値を読み込みカウンタ113へ書き込むことをスケジューラ106内で行なうことにより測定している。
次にソフトウェアの実行負荷の測定方法について図9の処理手順のフローチャートに従って説明する。ここで、定周期割り込み発生装置3からの定周期割り込みの間隔(TICK値)を10ms、実行負荷の測定を行なうサンプリング周期を1秒(TICK×100)とする。ステップST41で定周期割り込みが発生すると、ステップST42で割り込み処理ルーチンを呼び出し、ステップST43で割り込み回数加算回路105のカウント値Nをインクリメントする。そして、ステップST44でカウント値Nがサンプリング周期(この例では、99)より大きいかどうか判断し、Nがサンプリング周期以下であればステップST48に進み何もせず割り込み処理を抜ける。Nがサンプリング周期より大きければステップST45で最下位タスク121のカウントデータエリア125のタスクのカウント値を読み込み、ステップST46で実行負荷を計算する。実行負荷の計算後、ステップST47で上記カウント値Nを0クリアし、ステップST48で割り込み処理を抜ける。ここで、ステップST46の実行負荷は、サンプリング周期および最下位タスク21の実行時間から次式(1)で計算する。
実行負荷=(サンプリング周期−最下位タスクの実行時間)/サンプリング周期 (1)
例えば、最下位タスク121のカウンタ値を4×105カウント、カウンタ113の1カウントを1μ秒とすると、最下位タスク121の実行時間は0.4秒となる。また、サンプリング周期は1秒であるから、実行負荷は0.6、よって60%となる。
実行負荷=(サンプリング周期−最下位タスクの実行時間)/サンプリング周期 (1)
例えば、最下位タスク121のカウンタ値を4×105カウント、カウンタ113の1カウントを1μ秒とすると、最下位タスク121の実行時間は0.4秒となる。また、サンプリング周期は1秒であるから、実行負荷は0.6、よって60%となる。
このように、従来の制御装置では、タスクのスイッチング処理を行なうスケジューラにおいてハードウェアカウンタからカウント値を読み込んでメモリに格納し、メモリから読み込んだカウント値をハードウェアカウンタに書き込むことによりタスクの実行時間を測定し、上記タスクの実行時間と定周期割り込みを使用したサンプリング周期からソフトウェアの実行負荷を定周期割り込み処理の中で測定しているのである。また、タスクの実行時間異常の検出等の異常処理もスケジューラ内で行なっている。
特開平5−165655号公報(第5−6頁、図5)
従来の実行負荷測定方法では、ソフトウェアの実行負荷を定周期割り込み処理の中で測定しているので、割り込み処理に一定の負荷がかかるという問題があった。また、タスクのスイッチング処理を行なうスケジューラにおいてハードウェアカウンタからカウント値を読み込んでメモリに格納し、メモリから読み込んだカウント値をハードウェアカウンタに書き込むことによりタスクの実行時間を測定するという手順をとっているので、スケジューラに一定の負荷がかかりタスクスイッチングが遅くなり、その結果、割り込み応答が遅くなるという問題があった。一般的に、制御装置は制御性能を上げるために、割り込み応答を早くする必要があるため、各タスクに割り付けられた割り込み信号により直接、タスクを呼び出すようにすることで、スケジューラを装備していないものもある。また、割り込み処理の負荷を可能な限り少なくしている。
本発明はこのような問題点に鑑みてなされたものであり、割り込み処理の負荷を少なくし、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷で、ソフトウェアの実行負荷の測定および異常監視をすることができる制御装置およびソフトウェア実行負荷測定方法を提供することを目的とする。
上記問題を解決するため、本発明は、次のようにしたのである。
請求項1に記載の発明は、割り込み信号によって実行する1つ以上の上位タスクと、該上位タスクが実行していないとき実行する最下位タスクとを処理する機能を有する制御装置において、常時時間を計測するフリーランタイマと、タイマ動作の開始/停止をソフトウェアで設定可能なコントロールワードを有する前記最下位タスクの実行時間測定用のタスク測定タイマと、前記上位タスク開始時に、前記タスク測定タイマのコントロールワードを読み込み保存し、前記タスク測定タイマを停止させる上位タスク開始処理部と、前記上位タスク終了時に、保存された前記タスク測定タイマのコントロールワードを前記タスク測定タイマに書き込む上位タスク終了処理部と、前記最下位タスクのループ開始時に、前記タスク測定タイマと前記フリーランタイマの値を記憶する最下位タスク開始処理部と、前記最下位タスクのループ終了時に、前記タスク測定タイマと前記フリーランタイマの値を読み込み、前記最下位タスクのループ開始時に記憶した前記タスク測定タイマと前記フリーランタイマの値から前記タスク測定タイマと前記フリーランタイマの増分値を求め、該増分値より前記最下位タスクの実行負荷を求める最下位タスク実行負荷計算部を備えることを特徴とするものである。
請求項1に記載の発明は、割り込み信号によって実行する1つ以上の上位タスクと、該上位タスクが実行していないとき実行する最下位タスクとを処理する機能を有する制御装置において、常時時間を計測するフリーランタイマと、タイマ動作の開始/停止をソフトウェアで設定可能なコントロールワードを有する前記最下位タスクの実行時間測定用のタスク測定タイマと、前記上位タスク開始時に、前記タスク測定タイマのコントロールワードを読み込み保存し、前記タスク測定タイマを停止させる上位タスク開始処理部と、前記上位タスク終了時に、保存された前記タスク測定タイマのコントロールワードを前記タスク測定タイマに書き込む上位タスク終了処理部と、前記最下位タスクのループ開始時に、前記タスク測定タイマと前記フリーランタイマの値を記憶する最下位タスク開始処理部と、前記最下位タスクのループ終了時に、前記タスク測定タイマと前記フリーランタイマの値を読み込み、前記最下位タスクのループ開始時に記憶した前記タスク測定タイマと前記フリーランタイマの値から前記タスク測定タイマと前記フリーランタイマの増分値を求め、該増分値より前記最下位タスクの実行負荷を求める最下位タスク実行負荷計算部を備えることを特徴とするものである。
また、請求項2に記載の発明は、請求項1に記載の制御装置において、前記最下位タスク実行負荷計算部は、前記最下位タスクの実行負荷Aを以下の式(2)で求めることを特徴とするものである。
A=T1/T2*100[%] (2)
ただし、T1:タスク測定タイマの増分値、T2:フリーランタイマの増分値
また、請求項3に記載の発明は、請求項1に記載の制御装置において、前記最下位タスクの実行負荷を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なう異常処理部を前記最下位タスクにさらに備えることを特徴とするものである。
また、請求項4に記載の発明は、請求項3に記載の制御装置において、前記異常処理部は、前記最下位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
また、請求項5に記載の発明は、請求項3に記載の制御装置において、前記異常処理部は、前記上位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
A=T1/T2*100[%] (2)
ただし、T1:タスク測定タイマの増分値、T2:フリーランタイマの増分値
また、請求項3に記載の発明は、請求項1に記載の制御装置において、前記最下位タスクの実行負荷を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なう異常処理部を前記最下位タスクにさらに備えることを特徴とするものである。
また、請求項4に記載の発明は、請求項3に記載の制御装置において、前記異常処理部は、前記最下位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
また、請求項5に記載の発明は、請求項3に記載の制御装置において、前記異常処理部は、前記上位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
また、請求項6に記載の発明は、割り込み信号によって実行する1つ以上の上位タスクと、該上位タスクが実行していないとき実行する最下位タスクとを有する制御装置の実行負荷測定方法において、前記制御装置に常時時間を計測するフリーランタイマと、タイマ動作の開始/停止をソフトウェアで設定可能なコントロールワードを有する前記最下位タスクの実行時間測定用のタスク測定タイマとを備え、前記上位タスク開始時に、前記タスク測定タイマのコントロールワードを読み込み保存し、前記タスク測定タイマを停止させ、前記上位タスク終了時に、保存された前記タスク測定タイマのコントロールワードを前記タスク測定タイマに書き込み、前記最下位タスクのループ開始時に、前記タスク測定タイマと前記フリーランタイマの値を記憶し、前記最下位タスクのループ終了時に、前記タスク測定タイマと前記フリーランタイマの値を読み込み、前記最下位タスクのループ開始時に記憶した前記タスク測定タイマと前記フリーランタイマの値から前記タスク測定タイマと前記フリーランタイマの増分値を求め、該増分値より前記最下位タスクの実行負荷を求めることを特徴とするものである。
また、請求項7に記載の発明は、請求項6に記載の制御装置の実行負荷測定方法において、前記最下位タスクの実行負荷Aを以下の式(3)で求めることを特徴とするものである。
A=T1/T2*100[%] (3)
ただし、T1:タスク測定タイマの増分値、T2:フリーランタイマの増分値
また、請求項8に記載の発明は、請求項6に記載の制御装置の実行負荷測定方法において、前記最下位タスクの実行負荷を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
また、請求項9に記載の発明は、請求項6に記載の制御装置の実行負荷測定方法において、前記最下位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
また、請求項10に記載の発明は、請求項6に記載の制御装置の実行負荷測定方法において、前記上位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
A=T1/T2*100[%] (3)
ただし、T1:タスク測定タイマの増分値、T2:フリーランタイマの増分値
また、請求項8に記載の発明は、請求項6に記載の制御装置の実行負荷測定方法において、前記最下位タスクの実行負荷を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
また、請求項9に記載の発明は、請求項6に記載の制御装置の実行負荷測定方法において、前記最下位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
また、請求項10に記載の発明は、請求項6に記載の制御装置の実行負荷測定方法において、前記上位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とするものである。
請求項1、2、6、7に記載の発明によると、最下位タスクの中で実行負荷の計算を行なうようにしたので、割り込み処理の負荷を少なくでき、さらに、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷で精度の高いソフトウェアの実行負荷を測定することができる。
また、請求項3〜5、請求項8〜10に記載の発明によると、最下位タスクで異常処理を行なうようにしたので、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷でタスクの処理時間異常を監視することができ、異常時には異常を外部に知らせたり、プログラムを停止するなど異常処理を行なうことができる。
また、請求項3〜5、請求項8〜10に記載の発明によると、最下位タスクで異常処理を行なうようにしたので、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷でタスクの処理時間異常を監視することができ、異常時には異常を外部に知らせたり、プログラムを停止するなど異常処理を行なうことができる。
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
図1は、本発明の制御装置の構成を示すブロック図である。図において1はCPU、2は最下位タスクの実行時間を測定するタスク測定タイマ、3はフリーランタイマである。4は外部からの入力信号や制御周期を発生させるタイマ等からの割り込み信号によって実行する実行優先度の高い1つ以上の上位タスク、5は上位タスク4より実行優先度が低い最下位タスクであり上位タスク4が実行されていない時に実行される。6は上位タスク開始時の処理を行なう上位タスク開始処理部、7は上位タスク終了時の処理を行なう上位タスク終了処理部である。8は最下位タスク5のループ開始時に処理を行なう最下位タスク開始処理部、9は最下位タスクで行なわれる最下位タスクの実行負荷の計算処理を行なう最下位タスク実行負荷計算部である。
フリーランタイマ3は途中で停止されることもなく、ずっと動き続ける。一方タスク測定タイマ2はタイマ動作の開始/停止をソフトウェアで読み書き可能なコントロールワードを有し、上位タスクの実行に伴い、コントロールワードを操作することで、停止・起動される。例えば、コントロールワードは8ビットで構成され、0ビット目にタイマ動作の開始/停止が設定できるようになっているものとする。0ビット目に1を設定すると、タイマ動作を開始し、0を設定するとタイマ動作を停止する。上位タスク4のひとつのタスクの実行が開始されるとき、上位タスク開始処理部6はタスク測定タイマ2のコントロールワードを読み込み、スタックにPUSHして保存する。その後、タスク測定タイマ2を停止させる。タスクの実行が終了する時には、上位タスク終了処理部7は保存しておいたコントロールワードをPOPしてこれをタスク測定タイマ2のコントロールワードに書き込む。以上のような処理により、上位タスク4のひとつのタスクの実行前後ではタスク測定タイマ2の停止中かどうかの状態は保存されることになり、結果としてタスク測定タイマ2は最下位タスク5が実行中のみに走行することとなる。さて、最下位タスク実行負荷計算部8ではタスク測定タイマ2およびフリーランタイマ3の増分値から最下位タスク5の実行負荷Aを算出する。タスク測定タイマ2の増分値をT1、フリーランタイマ3の増分値をT2とすれば、最下位タスク5の実行負荷は、以下の式(4)で得られる。
A=T1/T2*100〔%〕 (4)
A=T1/T2*100〔%〕 (4)
図2は2つのタイマの動作時間を示すタイムチャートである。図2でpは最下位タスクのループ開始時間、qは最下位タスクのループ終了時間である。
最下位タスクの実行時間はT1、上位タスクの実行時間は(T2−T1)である。
最下位タスクの実行時間はT1、上位タスクの実行時間は(T2−T1)である。
図3は上位タスク4の処理手順を示すフローチャートである。
上位タスク4では開始直後、ステップST1でタスク測定タイマ2の現在のコントロールワードを読み代PUSHしてスタックに保存する。次に、ステップST2でタスク測定タイマ2を停止させる。ステップST3で上位タスク4の実処理を行なう。ステップST4で保存していたデータをPOPしてタスク測定タイマ2に書き込み、タスク測定タイマ2の状態を上位タスク4開始前の状態に戻す。このような処理手順により、複数の上位タスクが重複して実行されても、タスク測定タイマ2は最下位タスク実行中のみに動作することとなる。
ここで、ステップST1、ST2は上位タスク開始処理部6で実行され、ステップST4は上位タスク終了処理部7で実行される。
上位タスク4では開始直後、ステップST1でタスク測定タイマ2の現在のコントロールワードを読み代PUSHしてスタックに保存する。次に、ステップST2でタスク測定タイマ2を停止させる。ステップST3で上位タスク4の実処理を行なう。ステップST4で保存していたデータをPOPしてタスク測定タイマ2に書き込み、タスク測定タイマ2の状態を上位タスク4開始前の状態に戻す。このような処理手順により、複数の上位タスクが重複して実行されても、タスク測定タイマ2は最下位タスク実行中のみに動作することとなる。
ここで、ステップST1、ST2は上位タスク開始処理部6で実行され、ステップST4は上位タスク終了処理部7で実行される。
図4は最下位タスク5の処理手順を示すフローチャートである。
最下位タスク5では、開始時にステップST11でそのときのタスク測定タイマ2の値を記憶し、ステップST12でフリーランタイマ3の値を記憶しておく。ステップST13で最下位タスクの実処理を行なう。次にステップST14でタスク測定タイマ2の値を再び読み込みステップST11で記憶した値との差をとり増分値を演算する。同様にステップST15でフリーランタイマ3の増分値を演算する。そしてステップST16で最下位タスク5の実行負荷を求める。
ここで、ステップST11、ST12は最下位タスク開始処理部で実行され、ステップST14〜ST16が最下位タスク実行負荷計算部9で実行される。
このように、最下位タスクの中で実行負荷の計算を行なうようにしたので、割り込み処理の負荷を少なくでき、さらに、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷で精度の高いソフトウェアの実行負荷を測定することができるのである。
最下位タスク5では、開始時にステップST11でそのときのタスク測定タイマ2の値を記憶し、ステップST12でフリーランタイマ3の値を記憶しておく。ステップST13で最下位タスクの実処理を行なう。次にステップST14でタスク測定タイマ2の値を再び読み込みステップST11で記憶した値との差をとり増分値を演算する。同様にステップST15でフリーランタイマ3の増分値を演算する。そしてステップST16で最下位タスク5の実行負荷を求める。
ここで、ステップST11、ST12は最下位タスク開始処理部で実行され、ステップST14〜ST16が最下位タスク実行負荷計算部9で実行される。
このように、最下位タスクの中で実行負荷の計算を行なうようにしたので、割り込み処理の負荷を少なくでき、さらに、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷で精度の高いソフトウェアの実行負荷を測定することができるのである。
次に、第2の実施例として、異常処理を行なう場合について説明する。
図5は本発明の第2の実施例の制御装置の構成を示すブロック図である。図5が図1と異なる点は、最下位タスク5に異常処理部10を追加した点である。
異常処理部10は、図4のステップST16に引き続き実行される。
異常を検出する方法は、図4のステップST16で求めた最下位タスクの実行負荷を予め操作者が設定した目標値と比較する方法と、最下位タスク5の実行時間(T1)を目標値と比較する方法と、上位タスク4の実行時間(T2−T1)を目標値と比較する方法の3通りが考えられる。
図5は本発明の第2の実施例の制御装置の構成を示すブロック図である。図5が図1と異なる点は、最下位タスク5に異常処理部10を追加した点である。
異常処理部10は、図4のステップST16に引き続き実行される。
異常を検出する方法は、図4のステップST16で求めた最下位タスクの実行負荷を予め操作者が設定した目標値と比較する方法と、最下位タスク5の実行時間(T1)を目標値と比較する方法と、上位タスク4の実行時間(T2−T1)を目標値と比較する方法の3通りが考えられる。
図6は異常処理部10のフローチャートである。
ステップST21で異常処理を最下位タスク5の実行負荷で行なうかどうかチェックする。もしそうなら、ステップST22に進み、最下位タスク5の実行負荷が目標値より大きいかどうかチェックする。大きい場合、ステップST25に進み異常処理を行なう。たとえば異常を外部に知らせたり、プログラムを停止するなどを行なう。大きくない場合はそのまま戻り処理を行なう。
異常処理を別の方法で行なう場合は、ステップST23で最下位タスク5の実行時間で行なうかどうかチェックする。もしそうなら、ステップST24に進み、最下位タスク5の実行時間が目標値より大きいかどうかチェックし、もし大きい場合、異常処理を行なう。ステップST23でNoの場合はステップST26に進み、上位タスク4の実行時間が目標値より大きいかどうかチェックし、もし大きい場合は異常処理を行なう。
なお、上位タスク4の実行時間をチェックする場合は、上位タスク4の処理手順のフローチャートは図7に示すようになる。すなわち、図3のフローチャートに比べ、上位タスク開始処理部6のステップST31でフリーランタイマの現在値を記憶するステップと、上位タスク終了処理部7のステップST32でフリーランタイマの増分値を計算し、メモリに格納するステップが追加される。異常処理部10のステップST26では、上位タスクで演算された増分値を目標値と比較する。
このように、最下位タスクで異常処理を行なうようにしたので、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷でタスクの処理時間異常を監視することができ、異常時には異常を外部に知らせたり、プログラムを停止するなど異常処理を行なうことができる。
ステップST21で異常処理を最下位タスク5の実行負荷で行なうかどうかチェックする。もしそうなら、ステップST22に進み、最下位タスク5の実行負荷が目標値より大きいかどうかチェックする。大きい場合、ステップST25に進み異常処理を行なう。たとえば異常を外部に知らせたり、プログラムを停止するなどを行なう。大きくない場合はそのまま戻り処理を行なう。
異常処理を別の方法で行なう場合は、ステップST23で最下位タスク5の実行時間で行なうかどうかチェックする。もしそうなら、ステップST24に進み、最下位タスク5の実行時間が目標値より大きいかどうかチェックし、もし大きい場合、異常処理を行なう。ステップST23でNoの場合はステップST26に進み、上位タスク4の実行時間が目標値より大きいかどうかチェックし、もし大きい場合は異常処理を行なう。
なお、上位タスク4の実行時間をチェックする場合は、上位タスク4の処理手順のフローチャートは図7に示すようになる。すなわち、図3のフローチャートに比べ、上位タスク開始処理部6のステップST31でフリーランタイマの現在値を記憶するステップと、上位タスク終了処理部7のステップST32でフリーランタイマの増分値を計算し、メモリに格納するステップが追加される。異常処理部10のステップST26では、上位タスクで演算された増分値を目標値と比較する。
このように、最下位タスクで異常処理を行なうようにしたので、スケジューラや定周期割り込みを使用することなく、少ないCPU負荷でタスクの処理時間異常を監視することができ、異常時には異常を外部に知らせたり、プログラムを停止するなど異常処理を行なうことができる。
1、101 CPU
2 タスク測定タイマ
3 フリーランタイマ
4 上位タスク
5 最下位タスク
6 上位タスク開始処理部
7 上位タスク終了処理部
8 最下位タスク開始処理部
9 最下位タスク実行負荷計算部
10 異常処理部
102 メモリ
103 定周期割り込み発生装置
105 割り込み回数加算回路
106 スケジューラ
107 タスクA
113 ハードウェアカウンタ
114、125 カウントデータエリア
116 カウンタ読み込み機能
117 カウンタ書き込み機能
121 最下位タスク
122 実行負荷計算回路
2 タスク測定タイマ
3 フリーランタイマ
4 上位タスク
5 最下位タスク
6 上位タスク開始処理部
7 上位タスク終了処理部
8 最下位タスク開始処理部
9 最下位タスク実行負荷計算部
10 異常処理部
102 メモリ
103 定周期割り込み発生装置
105 割り込み回数加算回路
106 スケジューラ
107 タスクA
113 ハードウェアカウンタ
114、125 カウントデータエリア
116 カウンタ読み込み機能
117 カウンタ書き込み機能
121 最下位タスク
122 実行負荷計算回路
Claims (10)
- 割り込み信号によって実行する1つ以上の上位タスクと、
該上位タスクが実行していないとき実行する最下位タスクとを処理する機能を有する制御装置において、
常時時間を計測するフリーランタイマと、
タイマ動作の開始/停止をソフトウェアで設定可能なコントロールワードを有する前記最下位タスクの実行時間測定用のタスク測定タイマと、
前記上位タスク開始時に、前記タスク測定タイマのコントロールワードを読み込み保存し、前記タスク測定タイマを停止させる上位タスク開始処理部と、
前記上位タスク終了時に、保存された前記タスク測定タイマのコントロールワードを前記タスク測定タイマに書き込む上位タスク終了処理部と、
前記最下位タスクのループ開始時に、前記タスク測定タイマと前記フリーランタイマの値を記憶する最下位タスク開始処理部と、
前記最下位タスクのループ終了時に、前記タスク測定タイマと前記フリーランタイマの値を読み込み、前記最下位タスクのループ開始時に記憶した前記タスク測定タイマと前記フリーランタイマの値から前記タスク測定タイマと前記フリーランタイマの増分値を求め、該増分値より前記最下位タスクの実行負荷を求める最下位タスク実行負荷計算部を備えることを特徴とする制御装置。 - 前記最下位タスク実行負荷計算部は、前記最下位タスクの実行負荷Aを以下の式(1)で求めることを特徴とする請求項1記載の制御装置。
A=T1/T2*100[%] (1)
ただし、T1:タスク測定タイマの増分値、T2:フリーランタイマの増分値 - 前記最下位タスクの実行負荷を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なう異常処理部を前記最下位タスクにさらに備えることを特徴とする請求項1記載の制御装置。
- 前記異常処理部は、前記最下位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とする請求項3記載の制御装置。
- 前記異常処理部は、前記上位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とする請求項3記載の制御装置。
- 割り込み信号によって実行する1つ以上の上位タスクと、
該上位タスクが実行していないとき実行する最下位タスクとを処理する機能を有する制御装置の実行負荷測定方法において、
前記制御装置に常時時間を計測するフリーランタイマと、
タイマ動作の開始/停止をソフトウェアで設定可能なコントロールワードを有する前記最下位タスクの実行時間測定用のタスク測定タイマとを備え、
前記上位タスク開始時に、前記タスク測定タイマのコントロールワードを読み込み保存し、前記タスク測定タイマを停止させ、
前記上位タスク終了時に、保存された前記タスク測定タイマのコントロールワードを前記タスク測定タイマに書き込み、
前記最下位タスクのループ開始時に、前記タスク測定タイマと前記フリーランタイマの値を記憶し、
前記最下位タスクのループ終了時に、前記タスク測定タイマと前記フリーランタイマの値を読み込み、前記最下位タスクのループ開始時に記憶した前記タスク測定タイマと前記フリーランタイマの値から前記タスク測定タイマと前記フリーランタイマの増分値を求め、該増分値より前記最下位タスクの実行負荷を求めることを特徴とする制御装置の実行負荷測定方法。 - 前記最下位タスクの実行負荷Aを以下の式(2)で求めることを特徴とする請求項6記載の制御装置の実行負荷計測方法。
A=T1/T2*100[%] (2)
ただし、T1:タスク測定タイマの増分値、T2:フリーランタイマの増分値 - 前記最下位タスクの実行負荷を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とする請求項6記載の制御装置の実行負荷計測方法。
- 前記最下位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とする請求項6記載の制御装置の実行負荷計測方法。
- 前記上位タスクの実行時間を予め設定された目標値と比較し、目標値より大きいときに異常処理を行なうことを特徴とする請求項6記載の制御装置の実行負荷計測方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006279836A JP2008097410A (ja) | 2006-10-13 | 2006-10-13 | 制御装置およびそのソフトウェア実行負荷測定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006279836A JP2008097410A (ja) | 2006-10-13 | 2006-10-13 | 制御装置およびそのソフトウェア実行負荷測定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008097410A true JP2008097410A (ja) | 2008-04-24 |
Family
ID=39380175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006279836A Pending JP2008097410A (ja) | 2006-10-13 | 2006-10-13 | 制御装置およびそのソフトウェア実行負荷測定方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008097410A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2107815A2 (en) | 2008-04-03 | 2009-10-07 | Kabushiki Kaisha Toshiba | Video recorder |
-
2006
- 2006-10-13 JP JP2006279836A patent/JP2008097410A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2107815A2 (en) | 2008-04-03 | 2009-10-07 | Kabushiki Kaisha Toshiba | Video recorder |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9021172B2 (en) | Data processing apparatus and method and method for generating performance monitoring interrupt signal based on first event counter and second event counter | |
JP4572251B2 (ja) | 計算機システム、計算機システムの障害の予兆検知方法及びプログラム | |
CN104778111A (zh) | 一种进行报警的方法和装置 | |
EP2686770A1 (en) | Detection on resource leakage | |
JP2009193385A (ja) | コンピュータシステム | |
JP2018139093A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP2009237859A (ja) | 仮想マシン管理システム | |
US20120173933A1 (en) | Profile-based execution monitoring | |
JP2008097410A (ja) | 制御装置およびそのソフトウェア実行負荷測定方法 | |
EP4425368A1 (en) | Chip internal voltage prediction model generation method, chip internal voltage prediction method, and related apparatuses | |
CN107423206B (zh) | 一种衡量系统管理中断时间的方法及装置 | |
CN112418505A (zh) | 一种自适应型数据采集方法及监测系统 | |
WO2002093381A1 (en) | Performance measurement for embedded systems | |
CN109478052B (zh) | 确定应用程序的执行时间的方法和装置 | |
CN114003498A (zh) | 软件异常检测方法、装置和电子设备 | |
JP5627414B2 (ja) | 動作ログ収集システム及びプログラム | |
KR101036275B1 (ko) | 동작 모니터링 유닛 및 동작 모니터링 유닛을 이용한 시스템의 소비 전력 추정 방법 | |
JP7435182B2 (ja) | 電子制御装置 | |
JP2015114675A (ja) | アプリケーションソフトウェア加速試験装置および試験方法 | |
JP2009025964A (ja) | 消費電力の制御方法 | |
JP4647276B2 (ja) | 半導体回路装置 | |
CN111309532A (zh) | Pcie设备异常检测方法、系统、电子设备及存储介质 | |
JP4571462B2 (ja) | マイクロコンピュータ | |
Zhao et al. | Software maintenance optimization based on Stackelberg game methods | |
CN107480013B (zh) | 一种计算进程冗余度的方法和装置 |