[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP6218645B2 - プログラム解析装置及びプログラム解析方法及びプログラム - Google Patents

プログラム解析装置及びプログラム解析方法及びプログラム Download PDF

Info

Publication number
JP6218645B2
JP6218645B2 JP2014042575A JP2014042575A JP6218645B2 JP 6218645 B2 JP6218645 B2 JP 6218645B2 JP 2014042575 A JP2014042575 A JP 2014042575A JP 2014042575 A JP2014042575 A JP 2014042575A JP 6218645 B2 JP6218645 B2 JP 6218645B2
Authority
JP
Japan
Prior art keywords
execution
time
task
path
execution path
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.)
Active
Application number
JP2014042575A
Other languages
English (en)
Other versions
JP2015169997A (ja
Inventor
亜希子 米田
亜希子 米田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2014042575A priority Critical patent/JP6218645B2/ja
Publication of JP2015169997A publication Critical patent/JP2015169997A/ja
Application granted granted Critical
Publication of JP6218645B2 publication Critical patent/JP6218645B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、タスクの実行時間の算出に関する。
多くの組込システムでは予め定められた時間(デッドライン)内で処理を完了する必要のあるリアルタイムタスクと、そうでない非リアルタイムタスクが存在する。
システム開発ではタスクの実行時間がデッドラインを超えないよう、タスクの最悪実行時間を算出してデッドラインを超えないことを確認している。
従来の実行時間を算出する方法として、(1)プログラムコードを静的解析してプログラムの実行経路を解析し、各実行経路の実行時間から最長の実行時間を見積もる方法と、(2)プログラムを実機またはシミュレーションによって動的に実行させて実行時間を計測する方法がある。
上記(1)の方法ではプログラムの全ての実行経路を計算しているため算出漏れがない。
しかし、プログラムの正確な実行時間を見積もるためには命令の実行数だけでなく、キャッシュヒット率やメモリ、I/O(Input/Output)アクセス時間等、H/W(Hardware)の挙動を考慮する必要がある。
上記(2)の方法ではH/Wの挙動も考慮することで、より正確な実行時間を算出することができるが、実行時間が最悪となる実行経路を実行しているかわからない。
特許文献1では、プログラムを解析して実行経路を出力し、各実行経路の実行時間をH/Wの挙動を考慮して算出し、限界実行時間(最悪実行時間あるいは最良実行時間)を算出している。
国際公開WO2013−128519号公報
しかし近年、組込システムでもキャッシュメモリが搭載されるようになり、メモリアクセス性能が向上するようになった一方で、実行時間がキャッシュミス率により変動するため、最悪実行時間の見積もりが困難となっている。
キャッシュミス率は自身のタスクの実行だけでなく、他のタスクの実行によっても影響される(正確には自身あるいは他の実行されるタスクの命令あるいはデータの配置(アドレス)によってキャッシュミス率が変わる)。
また、異なる実行優先度のリアルタイムタスクが複数存在し、優先度の高いリアルタイムタスク(A)が優先度の低いリアルタイム(B)の実行を中断させて実行するようなシステムも存在する。
この場合、優先度の低いリアルタイムタスク(B)の実行中断中に、キャッシュメモリに優先度の高いリアルタイムタスク(A)の命令またはデータが格納されることで、優先度の低いリアルタイムタスク(B)の命令またはデータが追い出されることがある。
リアルタイムタスク(B)が処理再開後にキャッシュメモリから追い出された命令またはデータを参照しようとした場合、キャッシュミスが発生するためメモリアクセス時間が増加する。
そのため、リアルタイムタスク(B)の実行時間は処理が途中で中断されなかった場合に比べて実行時間が増加する場合がある。
特許文献1では上記のようにタスクの実行優先度を考慮した実行時間を算出を行っていないため、優先度の低いリアルタイムタスクが他の優先度の高いリアルタイムタスクによって処理が割り込まれたことを考慮した、正確なタスクの実行時間を見積もることができないという課題がある。
この発明は、上記のような課題を解決することを主な目的とし、タスクの実行時間を正確に算出することを主な目的とする。
本発明に係るプログラム解析装置は、
複数のタスクが生成される、複数のブロックで構成されたプログラムを解析し、タスクごとに、タスクにおいて実行されるブロック群を実行順に実行パスとして抽出する実行パス抽出部と、
前記プログラム実行時のタスクの生成順序に従って、各タスクに対応する実行パスを配列させるとともに、実行パスの組合せを変化させて複数の配列パターンを生成する配列パターン生成部と、
配列パターンごとに、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出する実行時間算出部とを有することを特徴とする。
本発明によれば、プログラム実行時のタスクの生成順序に従って実行パスを配列した配列パターンごとに、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出するため、タスクの実行時間を正確に算出することができる。
実施の形態1に係る最悪実行時間判定システムの構成例を示す図。 実施の形態1に係る実行対象S/Wのリアルタイムタスクの処理例を示す図。 実施の形態1に係る実行パスリストの例を示す図。 実施の形態1に係るタスクスケジュールの例を示す図。 実施の形態1に係る配列パターンの例を示す図。 実施の形態1に係るタスクスケジュールの例を示す図。 実施の形態2に係る最悪実行時間判定システムの構成例を示す図。 実施の形態2に係る実行パスリストの例を示す図。 実施の形態2に係るシミュレーション対象の配列パターンを決定する方法を示す図。 実施の形態1及び2に係る最悪実行時間判定システムのハードウェア構成例を示す図。
実施の形態1.
本実施の形態では、異なる優先度のリアルタイムタスクが存在するシステムにおいて、優先度の低いタスクが優先度の高いタスクの影響も考慮した最悪実行時間をより高精度に算出し、デッドラインを超えるかどうかをより正確に判定する構成を説明する。
図1は、本実施の形態に係る最悪実行時間判定システム1000の構成例を示す。
図1において、実行対象S/W記憶部10は、リアルタイムタスクがデッドラインを超えるかどうかを判定する実行対象S/W(Software)を記憶する。
実行対象S/Wでは、2つ以上のリアルタイムタスクが存在し、各タスクに優先度が設定されている。
実行パス解析部20は、実行対象S/Wを解析し、実行対象S/Wから各リアルタイムタスクの実行パスを算出する。
実行対象S/Wは、複数のブロックから構成されるプログラムであり、実行パスは、実行対象S/Wにおけるタスクごとの実行経路であり、タスクにおいて実行されるブロック群を実行順に連結したシークエンスである。
実行パス解析部20は、実行パス抽出部の例に相当する。
実行パスリスト記憶部30は、実行パスリストを記憶する。
実行パスリストは、実行パス解析部20によって算出されたタスクごとの実行パスのリストと、各パスを実行するための条件を表す情報である。
タスクスケジュール記憶部60は、タスクスケジュールを記憶する。
タスクスケジュールは、対象のシステムのタスクの実行スケジュール情報である。
タスクスケジュールには、タスクの生成順序が記述されるとともに、タスクごとに上限の実行時間であるデッドライン(上限時間)が記述されている。
タスクスケジュールは上限時間情報の例に相当する。
また、タスクスケジュール記憶部60は、上限時間情報記憶部の例に相当する。
実行パス組み合わせ決定部40は、実行パスリストとタスクスケジュールからシミュレーションする実行パスの組み合わせを決定する。
より具体的には、実行パス組み合わせ決定部40は、タスクスケジュールに示されるタスクの生成順序に従って、各タスクに対応する実行パスを配列させるとともに、実行パスの組合せを変化させて複数の配列パターンを生成する。
実行パス組み合わせ決定部40は、配列パターン生成部の例に相当する。
実行時間算出部100は、実行パスの組合せである配列パターンごとに、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出する。
実行時間算出部100は、シミュレーション部50、変数操作部70及びキャッシュ無効化部80で構成される。
シミュレーション部50は、実行対象S/Wのプログラムをシミュレーション実行するシミュレータである。
シミュレーション部50は、実行対象S/Wの実行環境を模擬して、実行対象S/Wの実行時間を算出する。
シミュレーション部50にはキャッシュメモリの動作をシミュレーションするキャッシュシミュレータも備えている。
変数操作部70は、シミュレーション部50にて実行パス組み合わせ決定部40で組み合わせた実行パス通りにシミュレーションを行うために、シミュレーション中の変数値を操作する。
キャッシュ無効化部80は、シミュレーション部50の実行中の任意のタイミングにてシミュレーション部50に備えるキャッシュシミュレータ内のデータを無効化する。
最悪実行時間判定部90は、シミュレーション部50にて実行対象S/Wを実行した結果、リアルタイムタスクがデッドラインを超えるかどうかを判定する。
各機能ブロックは1つあるいは複数のプログラムとして実装されていてもよいし、複数の機能ブロックが1つのプログラムとして実装されていてもよい。
実行対象S/Wは1つまたは複数のプログラムの実行ファイルとして存在してもよいし、メモリ上に展開されたプログラムでもよい。
実行パスリスト、タスクスケジュールはファイルとして存在してもよいし、メモリ上にのみ配置されるデータであってもよい。
次に動作について説明する。
まず、実行パス解析部20にて実行対象S/Wの各タスクの実行パスのリストを算出する。
実行パスの算出例について図2のフローチャートを用いて説明する。
図2は、あるリアルタイムタスクの処理を示すフローチャートである。
図2の各ブロックは1つ以上の命令を表し、ブロック2、ブロック4は分岐命令を表し、本例ではそれぞれの成立条件をX<0、Y=1とする。
このとき、タスクの実行パスは以下の3通りが考えられ、それぞれの実行パスが実行される条件は()に記載したものとなる。
・ブロック1→ブロック2(X<0)
・ブロック1→ブロック2→ブロック3→ブロック4→ブロック5(X>=0かつY≠1)
・ブロック1→ブロック2→ブロック3→ブロック4→ブロック6→ブロック5(X>=0かつY=1)
従って、図2に示したタスクから得られる実行パスリストは図3のようになる。
図3では分岐条件をX<0のように値の範囲で示したが、X=−1のように条件が成立する任意の値を条件として記述してもよい。
全てのリアルタイムタスクについて上記手順を行い、各リアルタイムタスクの実行パスを算出する。
次に、実行パス組み合わせ決定部40の動作について説明する。
実行パス組み合わせ決定部40は、実行パス解析部20で算出した実行パスリストをタスクスケジュールに基づいてシミュレーション実行する実行パスの組み合わせ(配列パターン)を決定する。
タスクスケジュールは、タスクの実行スケジュールを示す情報であり、リアルタイムタスクの各タスクの実行周期とデッドライン、実行優先度が格納されている。
本実施の形態の実行対象S/Wが動作するシステムのタスクの実行スケジュール例を図4に示す。
タスクA、タスクBは、いずれもリアルタイムタスクであり、デッドラインは次のタスク実行の開始までとする。
タスクA、タスクBは、いずれも予め決められた実行周期のタイミング(タスクAはT1、T3、T6、タスクBはT1、T6)で実行される。
図4の例では、タスクAの実行周期はタスクBの実行周期の半分であり、かつ、実行優先度はタスクAのほうが高い。
そのため、タスクBの実行中にタスクAの実行開始タイミングとなると、プロセッサはタスクBの実行を一時中断し、タスクAの処理を行う(T3〜T4のタイミングが該当)。
その後、タスクAの処理が完了するとタスクBの処理を再開する(T4のタイミング)。
実行パスの組み合わせでは、全てのリアルタイムタスクの実行周期の最小公倍数となる期間のタスクのスケジュールを行う。
本例ではタスクAとタスクBの実行周期が1:2のため、タスクAが2回、タスクBが1回実行される場合のタスクの組み合わせを行う。
実行パス解析部20は、算出した実行パスリストから、タスクAの実行パスがA1、A2、A3の3通り、タスクBの実行パスがB1、B2の2通りあったとすると、実行パスの組み合わせは、図5に示す18通りが考えられる。
つまり、図4のタスクAとタスクBの生成順序に沿って、各タスクに対応する実行パスを配列させるとともに、実行パスの組合せを変化させて18通りの配列パターンを生成する。
そして、シミュレーション部50が、この18通りの配列パターンのそれぞれの実行パスの組み合わせについてシミュレーションを実行し、実行時間を算出する。
次に、シミュレーション部50にて実行時間を算出する動作を説明する。
シミュレーション部50は、図5に示した18通りの実行パスの組み合わせを1つずつ実行し、実行時間を算出する。
シミュレーション部50は、実行対象S/Wを実行するためのシミュレータであり、実行対象S/Wが動作するシステム(ターゲットシステム)のハードウェア構成(特にキャッシュメモリのエントリの競合)を模擬し、ターゲットシステムのハードウェア仕様に基づいた命令実行時間や、キャッシュミスによるミスペナルティを考慮した実行時間を考慮して実行対象S/Wを実行するものとする。
このようなシミュレータは参考文献1などによって既に考えられている。
図4のようにシミュレーション部50がタスクA、タスクBをそれぞれの実行周期(タイミング)と優先度に基づいて実行する方法としては、シミュレーション部50に備わっているターゲットシステムによるハードウェアタイマに基づいた割り込みや、実行対象S/Wを実行する、あるいは実行対象S/Wに含まれるOS(Operating System)によって実現する方法があり、いずれもシミュレーション部50によるシミュレーション環境構築時に容易に実装することができる。
参考文献1:特開2013−222392号公報
シミュレーション部50が指定した実行パスの組み合わせを実行するようにするために、変数操作部70は各タスクの実行開始時(図4のようなタスクスケジューリングの場合はT1、T2、T3のタイミング)に各パスの実行条件が成立するようにシミュレータ内の変数値を変更する。
例えばタスクAの実行パスA1〜3が図3のNo.1〜3にそれぞれ対応し、図5のNo.3の実行パスの組み合わせ(すなわちA1→B1→A3)を実行する場合、変数操作部70は図4のT1のタイミングでX=−1を設定し、T3のタイミングでX=0、Y=1を設定する。
また、タスクBの実行パスの実行条件がタスクAの実行パスの実行条件と同じ変数を使用する場合(例えばタスクBがB1を実行する条件がX=2の場合)は、タスクBが再開するタイミング(図4の場合はT4のタイミング)において、再度変数の値を設定する。
キャッシュ無効化部80は、シミュレーション部50が実行を開始する時にシミュレーション部50の内部に存在するキャッシュメモリ(の動作を模擬するモデル)の全てのエントリを無効化し、キャッシュにデータが何も存在していない状態にする。
これにより、シミュレーション開始時はキャッシュメモリにタスクAの命令およびデータが存在しないため、その実行パスにおける最悪実行時間を算出することができる。
また、キャッシュ無効化部80はシミュレーション開始時だけでなく、非リアルタイムタスクが動作する可能性のあるタイミングでもキャッシュメモリの全てのエントリを無効化する。
例えば図6のようにタスクBがタスクAの2回目の実行開始タイミングであるT13よりも前のT12のタイミングで処理を完了した場合、キャッシュ無効化部80は2回目のタスクAの実行開始タイミングであるT13でもシミュレーション部50の内部に存在するキャッシュメモリの全てのエントリを無効化する。
これはT12からT13の間に非リアルタイムタスクが動作する可能性があるためであり、非リアルタイムタスクの実行により、タスクAのどのキャッシュデータが追い出されるか(あるいは全く追い出されないか)は実行される非リアルタイムタスクのプログラムによって変わってくるため、全てのキャッシュデータが追い出される、最悪の実行時間を算出するためである(シミュレーション部50はT12からT13のときに非リアルタイムタスクのシミュレーションすることはしない)。
これにより、T12からT13の間に非リアルタイムタスクが動作し、リアルタイムタスクAのデータが追い出されることを考慮した最悪実行時間を算出することができる。
以上のように、キャッシュ無効化部80は、シミュレーション実行開始時またはリアルタイムタスクの実行の合間すなわち、非リアルタイムタスクが実行される可能性のあるタイミングでキャッシュメモリの全てのエントリを無効化する。
シミュレーション部50は組み合わせを実行したときの各タスクの実行完了時刻を算出する。
例えば、図4の場合、タスクA(1回目)の実行完了時刻はT2、タスクBの実行完了時刻はT5、タスクA(2回目)の時刻完了時刻はT4となる。
最悪実行時間判定部90は、シミュレーション部50が出力した実行完了時刻とタスクスケジュールから、タスクの実行パスの組み合わせによる各リアルタイムタスクの実行時間がデッドラインを超えないかを確認する。
具体的には、図4の場合であれば、タスクA(1回目)の実行完了時刻が2回目のタスクAの実行完了時刻であるT3を超えていないこと、タスクB、タスクA(2回目)の実行完了時刻が次のタスクB、タスクAの実行開始時刻であるT6を超えていないことを確認し、いずれかのタスクの実行完了時刻がデッドラインを超えていた場合は、実行対象S/Wはデッドラインを超えると判定する。
実行パス組み合わせ決定部40にて算出した全ての実行パスの組み合わせについて最悪実行時間判定部90がデッドラインを超えないと判定した場合は、実行対象S/Wはターゲットのシステムの上でデッドラインを超えないということができる。
以上が実施の形態1の動作である。
<実施の形態1の効果>
以上のように、本実施の形態では、実行パス解析部20にて実行対象S/Wの全ての実行パスを解析した後、タスクスケジュールに記しているタスクの実行スケジュールに合わせてシミュレーションを行って実行時間を算出する。
このため、優先度の低いタスクBの実行時間は優先度の高いタスクAによる処理の中断による影響を考慮した実行時間を算出されることから、優先度の低いタスクBがデッドラインをミスするかをより正確に判定することができる。
<実施の形態1の変形例>
本実施の形態では、全ての実行パスの組み合わせをシミュレーションし、各実行パスの組み合わせの実行時間がデッドラインを超えないことを判定するようにしたが、最悪実行時間判定部90がデッドラインを超えると判断した場合は、実行対象S/Wがデッドラインを超えることが既に確認できているため、以降の実行パスの組み合わせのシミュレーションを実行せずに終了してもよい。
これにより、判定時間を短縮することができる。
また、本実施の形態では、シミュレーション部50にて実行する実行パスの組み合わせの順番について記載していないが、実行パス解析部20にて解析した実行パスの長いものを組み合わせたものから実行してもよい。
この場合、デッドラインを超える可能性の高いパスからシミュレーション実行していくので、早期にデッドラインを超えると判定される可能性がある。
このとき、先ほど説明したように、デッドラインを超えると判定されると以降のシミュレーション実行を行わずに終了すれば、判定時間をさらに短縮することができる。
ここでいう実行パスの長いものとしては、命令数の多いもの、メモリやI/Oのアクセス回数の多いもの(あるいはアクセス時間が長いもの)、命令数とメモリ、I/Oのアクセス時間の両方を考慮したものなどが挙げられる。
また、これらのほかにシミュレーション部50を用いて各実行パス単体を実行したときの実行時間を算出し、その時間が長いものを実行パスの長いものとしてもよい(実施の形態2に記載)。
実施の形態2.
以上の実施の形態1では、実行パス解析部20で算出したタスクごとの実行パスについて、タスクスケジュールに記載されているタスクの実行スケジュールに合わせた総組み合わせを実施する。
しかし、一般的にタスクごとの実行パスは多数(数十〜数百以上)存在し、そのパスをタスクの実行スケジューリングに合わせて組み合わせたときの総組み合わせ数は膨大となり、全てをシミュレーションして実行時間を算出するのは現実的ではない。
そこで、実行パスの組み合わせを決定する数を削減する実施の形態を示す。
図7は本実施の形態に係る最悪実行時間判定システム1000の構成例を表す。
図1と同じ構成、動作を行うものについては同じ番号を振り、説明は省略する。
実施の形態2では実行パスリスト記憶部31で記憶する実行パスリストに格納する情報が一部追加され、実行パス組み合わせ決定部41の動作内容が異なる。
本実施の形態に係る実行パスリストを、以下では、実行パスリスト310と表記する。
図7では流れの説明上、2つの実行時間算出部100が存在しているが、同一のものを想定している。
実施の形態2で実施の形態1と異なる点について説明する。
実行の形態2では、まず実行パス解析部20にて実施の形態1と同様に実行パスのリストを算出したのち、実行時間算出部100が、各実行パスを単体で実行したときの実行時間を算出する。
このとき、実行時間算出部100にあるキャッシュ無効化部80がシミュレーション部50の内部にあるキャッシュメモリを無効状態にして実行し、常にキャッシュメモリの先にあるメインメモリからデータを取得したときの各実行パスの実行時間を算出する。
これにより、最悪の実行時間を算出することができる(実際はキャッシュメモリが有効になっているので、この時間ほど悪くなることはない)。
実行パスリスト310には、図8のようにキャッシュの実行パスとその実行パスを実行するための実行条件に加え、実行時間算出部100で算出した各パスの実行時間が格納される。
実行パス組み合わせ決定部41は実施の形態1同様、実行パスリスト310に格納されている実行パスとタスクスケジュールに基づいて、実行パスの組み合わせを行う。
その上で、組み合わせの中から、デッドラインを超える可能性のある実行パスの組み合わせを抽出してシミュレーション部50で実行時間の算出を行う。
デッドラインを超える可能性のある実行パスの組み合わせの抽出方法を図9の例を用いて説明する。
例ではタスクAとタスクBのリアルタイムタスクが図4と同じ実行スケジュールで実行される。
タスクAの実行周期は50ms、タスクBの実行周期が100msとする。
また、タスクAはA1、A2、A3の3種類、タスクBはB1、B2の2種類の実行パスが存在し、それぞれの単体の実行時間はA1、A2、A3が5ms、20ms、60ms、B1、B2は30ms、70msであったとしている。
このとき、タスクAとタスクBの実行スケジュールに応じた実行パスの組み合わせは図9の18通りになる。
ここで、実行パス組み合わせ決定部41は、組み合わせた18通りに対するそれぞれの単体の実行時間の合計を算出し、実行時間の合計がタスクの実行パスの組み合わせを行ったスケジューリング期間(ここでは100ms)を超えるものに対してシミュレーション部50にて実行時間を算出する。
図9ではNo.6、9、11、12、14、15、16、17、18の9個の組み合わせが該当する。
また、タスク単体の実行時間がデッドライン(実行周期)を超えているものに対してもシミュレーション部50にて実行時間を算出する。
図9ではNo.3、6、9、12、13〜18の10通りが該当する。
これらの中から重複を除いた11通りが、シミュレーション部50で実行時間を測定する実行パスの組み合わせとなる。
以上が実行パス組み合わせ決定部41による実行パスの組み合わせ数を減らす動作の説明である。
<実施の形態2の効果>
以上のように、本実施の形態では実行パス組み合わせ決定部41にて、デッドラインを超える可能性のある実行パスの組み合わせに限定してシミュレーションを行うことで、デッドラインを越えるかどうかの判定を行う時間を削減することができる。
<実施の形態2の変形例>
本実施の形態ではキャッシュメモリがない状態の各実行パスの実行時間をもとに組み合わせを減らすようにしたが、キャッシュメモリによる処理時間短縮の効果が大きい場合、実行時間が実際よりもはるかに大きくなり、ほぼ全ての組み合わせを実行する可能性がある。
そこで、キャッシュメモリを有効(使用可能な状態)にし、実行開始時にキャッシュメモリに何もない状態からシミュレーション実行したときの実行時間をもとに組み合わせを減らしてもよい。
ただし、この場合は優先度の高いタスクが途中で割り込まれたときにキャッシュから追い出されることによるキャッシュミス数増加による遅延を考慮するため、実際に算出した実行時間にマージンとなる時間を足した時間を各実行パスの実行時間とする。
マージンとなる時間は実行パスごとに一律の時間でもよいし、キャッシュヒット数、キャッシュ使用量などのキャッシュの使用特性に応じて設定してもよい。
本実施の形態の変形例としては、実施の形態1と同様、最悪実行時間判定部90がデッドラインを超えると判断すると以降の実行パスの組み合わせのシミュレーションを実行せずに終了してもよい。これによる効果は実施の形態1と同じく、判定時間を短縮できる。
また、シミュレーション部50にて実行する実行パスの組み合わせの順番についても、実行パス組み合わせ決定部41が算出した実行時間の合計が最も大きいものを組み合わせたものから実行してもよい。
この場合、デッドラインを超える可能性の高いパスからシミュレーション実行していくので、早期にデッドラインを超えると判定される可能性がある。
このとき、デッドラインを超えると判定されると以降のシミュレーション実行を行わずに終了すれば、判定時間をさらに短縮することができる。
最後に、実施の形態1及び2に示した最悪実行時間判定システム1000のハードウェア構成例を図10を参照して説明する。
最悪実行時間判定システム1000はコンピュータであり、最悪実行時間判定システム1000の各要素をプログラムで実現することができる。
最悪実行時間判定システム1000のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
通信装置904は、例えばNIC(Network Interface Card)である。
入出力装置905は、例えばマウス、キーボード、ディスプレイ装置等である。
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、図1に示す「〜部」(「〜記憶部」は除く、以下も同様)として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1に示す「〜部」の機能を実現するプログラムを実行する。
また、実施の形態1及び2の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の算出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
なお、図10の構成は、あくまでも最悪実行時間判定システム1000のハードウェア構成の一例を示すものであり、最悪実行時間判定システム1000のハードウェア構成は図10に記載の構成に限らず、他の構成であってもよい。
また、実施の形態1及び2に示す手順により、本発明に係るプログラム解析方法を実現可能である。
10 実行対象S/W記憶部、20 実行パス解析部、30 実行パスリスト記憶部、31 実行パスリスト記憶部、40 実行パス組み合わせ決定部、41 実行パス組み合わせ決定部、50 シミュレーション部、60 タスクスケジュール記憶部、70 変数操作部、80 キャッシュ無効化部、90 最悪実行時間判定部、100 実行時間算出部、1000 最悪実行時間判定システム。

Claims (14)

  1. 複数のタスクが生成される、複数のブロックで構成されたプログラムを解析し、タスクごとに、タスクにおいて実行されるブロック群を実行順に実行パスとして抽出する実行パス抽出部と、
    前記プログラム実行時のタスクの生成順序に従って、各タスクに対応する実行パスを配列させるとともに、実行パスの組合せを変化させて複数の配列パターンを生成する配列パターン生成部と、
    配列パターンごとに、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出する実行時間算出部とを有することを特徴とするプログラム解析装置。
  2. 前記実行時間算出部は、
    キャッシュメモリが実装されているプログラム実行環境で配列パターンに含まれる実行パスが順に実行された場合の実行時間を実行パスごとに算出することを特徴とする請求項1に記載のプログラム解析装置。
  3. 前記プログラム解析装置は、更に、
    タスクごとに、上限の実行時間が上限時間として記述される上限時間情報を記憶する上限時間情報記憶部と、
    前記実行時間算出部により算出された各実行パスの実行時間が、各実行パスのタスクの上限時間を超えていないかを判定する判定部を有することを特徴とする請求項1又は2に記載のプログラム解析装置。
  4. 前記判定部は、
    前記実行時間算出部が全ての配列パターンに対して実行パスの実行時間の算出を終える前に、前記実行時間算出部により算出された各実行パスの実行時間が、各実行パスのタスクの上限時間を超えていないかを判定し、
    前記実行時間算出部は、
    前記判定部により、いずれかの配列パターンにおいて、いずれかの実行パスの実行時間が上限時間を超えていると判定された場合に、以降の実行時間の算出を取りやめることを特徴とする請求項3に記載のプログラム解析装置。
  5. 前記実行時間算出部は、
    包含しているブロックの個数が多い配列パターンから順に、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出することを特徴とする請求項1又は4に記載のプログラム解析装置。
  6. 前記プログラム解析装置は、更に、
    タスクごとに、上限の実行時間が上限時間として記述される上限時間情報を記憶する上限時間情報記憶部を有し、
    前記実行時間算出部は、
    単体で実行された場合の各実行パスの実行時間を算出し、
    配列パターンごとに、配列パターンに含まれる各実行パスの単体の実行時間が、各実行パスのタスクの上限時間を超えるか否かを判定し、
    配列パターンごとに、配列パターンに含まれる各実行パスの単体の実行時間を合計した合計値が、各実行パスのタスクの上限時間を合計した合計値を超えるか否かを判定し、
    いずれかの実行パスの単体の実行時間が上限値を超える配列パターン及び実行時間の合計値が上限時間の合計値を超える配列パターンの少なくともいずれかを選択し、
    選択した配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出することを特徴とする請求項1に記載のプログラム解析装置。
  7. 前記実行時間算出部は、
    キャッシュメモリが実装されていないプログラム実行環境で各実行パスが単体で実行された場合の実行時間を算出することを特徴とする請求項6に記載のプログラム解析装置。
  8. 前記実行時間算出部は、
    キャッシュメモリが実装されているプログラム実行環境で、各実行パスの実行開始時に前記キャッシュメモリにデータが存在しない状態で各実行パスが単体で実行された場合の実行時間を算出することを特徴とする請求項6に記載のプログラム解析装置。
  9. 前記実行時間算出部は、
    選択した配列パターンのうち、配列パターンに含まれる各実行パスの単体の実行時間を合計した合計値が大きい配列パターンから順に、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出することを特徴とする請求項6に記載のプログラム解析装置。
  10. 前記実行パス抽出部は、
    複数のリアルタイムタスクが生成される、複数のブロックで構成されたプログラムを解析し、リアルタイムタスクごとに、リアルタイムタスクにおいて実行されるブロック群を実行順に実行パスとして抽出し、
    前記配列パターン生成部は、
    前記プログラム実行時のリアルタイムタスクの生成順序に従って、各リアルタイムタスクに対応する実行パスを配列させるとともに、実行パスの組合せを変化させて複数の配列パターンを生成し、
    前記実行時間算出部は、
    配列パターンごとに、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出することを特徴とする請求項1に記載のプログラム解析装置。
  11. 前記実行時間算出部は、
    キャッシュメモリが実装されているプログラム実行環境で、配列パターンごとに、特定の実行順序の実行パスの実行開始時に前記キャッシュメモリにデータが存在しない状態で当該実行パスが実行された場合の実行パスの実行時間を実行パスごとに算出することを特徴とする請求項10に記載のプログラム解析装置。
  12. 前記プログラム解析装置は、更に、
    タスクごとに、上限の実行時間が上限時間として記述される上限時間情報を記憶する上限時間情報記憶部と、
    前記実行時間算出部が全ての配列パターンに対して実行パスの実行時間の算出を終える前に、前記実行時間算出部により算出された各実行パスの実行時間が、各実行パスのタスクの上限時間を超えていないかを判定する判定部とを有し、
    前記実行時間算出部は、
    前記判定部により、いずれかの配列パターンにおいて、いずれかの実行パスの実行時間が上限時間を超えていると判定された場合に、以降の実行時間の算出を取りやめることを特徴とする請求項6に記載のプログラム解析装置。
  13. コンピュータが、複数のタスクが生成される、複数のブロックで構成されたプログラムを解析し、タスクごとに、タスクにおいて実行されるブロック群を実行順に実行パスとして抽出する実行パス抽出ステップと、
    前記コンピュータが、前記プログラム実行時のタスクの生成順序に従って、各タスクに対応する実行パスを配列させるとともに、実行パスの組合せを変化させて複数の配列パターンを生成する配列パターン生成ステップと、
    前記コンピュータが、配列パターンごとに、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出する実行時間算出ステップとを有することを特徴とするプログラム解析方法。
  14. 複数のタスクが生成される、複数のブロックで構成されたプログラムを解析し、タスクごとに、タスクにおいて実行されるブロック群を実行順に実行パスとして抽出する実行パス抽出処理と、
    前記プログラム実行時のタスクの生成順序に従って、各タスクに対応する実行パスを配列させるとともに、実行パスの組合せを変化させて複数の配列パターンを生成する配列パターン生成処理と、
    配列パターンごとに、配列パターンに含まれる実行パスが順に実行された場合の実行パスの実行時間を実行パスごとに算出する実行時間算出処理とをコンピュータに実行させることを特徴とするプログラム。
JP2014042575A 2014-03-05 2014-03-05 プログラム解析装置及びプログラム解析方法及びプログラム Active JP6218645B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014042575A JP6218645B2 (ja) 2014-03-05 2014-03-05 プログラム解析装置及びプログラム解析方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014042575A JP6218645B2 (ja) 2014-03-05 2014-03-05 プログラム解析装置及びプログラム解析方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2015169997A JP2015169997A (ja) 2015-09-28
JP6218645B2 true JP6218645B2 (ja) 2017-10-25

Family

ID=54202717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014042575A Active JP6218645B2 (ja) 2014-03-05 2014-03-05 プログラム解析装置及びプログラム解析方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6218645B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291767B (zh) * 2016-04-11 2020-07-17 西门子工厂自动化工程有限公司 任务执行时间的优化处理方法和装置
WO2018123065A1 (ja) 2016-12-29 2018-07-05 三菱電機株式会社 プログラム解析システム、プログラム解析装置、プログラム解析方法および解析プログラム
JP7457589B2 (ja) * 2020-07-01 2024-03-28 日立Astemo株式会社 情報処理装置、情報処理方法、および情報処理システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10061001B4 (de) * 2000-12-08 2005-05-04 Robert Bosch Gmbh Verfahren und Steuergerät zur Steuerung von technischen Vorgängen in einem Kraftfahrzeug, sowie Speicherelement und Steuerprogramm hierfür
JP2003288237A (ja) * 2002-03-27 2003-10-10 Hitachi Ltd 制御装置における実行時間測定装置及び実行時間測定方法
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
WO2013128519A1 (ja) * 2012-03-02 2013-09-06 日本電気株式会社 限界実行時間解析装置及び限界実行時間解析方法並びにプログラムを格納した非一時的なコンピュータ可読媒体

Also Published As

Publication number Publication date
JP2015169997A (ja) 2015-09-28

Similar Documents

Publication Publication Date Title
US20140012562A1 (en) Modeling and evaluating application performance in a new environment
JP2014513373A5 (ja)
Sunwoo et al. A structured approach to the simulation, analysis and characterization of smartphone applications
CN108885579B (zh) 用于根据核追踪进行数据挖掘的方法和设备
Ouyang et al. Straggler detection in parallel computing systems through dynamic threshold calculation
US10101796B2 (en) Processor power estimation
JP6218645B2 (ja) プログラム解析装置及びプログラム解析方法及びプログラム
CN114286984A (zh) 工作负载性能预测
Hassani et al. LiveSim: Going live with microarchitecture simulation
US8340952B2 (en) Power estimation method and device therefor
WO2018032897A1 (zh) 报文转发性能评估方法、装置和计算机存储介质
US7089406B2 (en) Method and apparatus for controlling program instruction completion timing for processor verification
JP2012509546A (ja) 組み込みシステムをシミュレートするための方法及びデータ処理システム
EP3077910B1 (en) Methods and apparatus to optimize platform simulation resource consumption
US20160026741A1 (en) Calculating device, calculation method, and calculation program
JP6249827B2 (ja) シミュレーション装置及びシミュレーションプログラム
Neves et al. Mremu: An emulation-based framework for datacenter network experimentation using realistic mapreduce traffic
JP5454349B2 (ja) 性能推定装置
Cornelis et al. The pipeline performance model: a generic executable performance model for GPUs
KR102007881B1 (ko) 빠르고 정확한 실행 시간 예측을 위한 하이브리드 명령어 집합 시뮬레이션 방법 및 시스템
JPWO2017149641A1 (ja) シミュレーション装置
JP5390464B2 (ja) シミュレーション装置、シミュレーション装置の制御方法およびプログラム
CN103955357A (zh) 一种动态二进制翻译指令集模拟器计时方法
JP6223637B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
KR101918051B1 (ko) Epoch 기반의 시뮬레이션 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170807

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170926

R150 Certificate of patent or registration of utility model

Ref document number: 6218645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250