(57)【要約】【課題】シミュレータを用いることなく高速に複数のプログラム実行装置上で動作するプログラムの処理時間を算出する。【解決手段】処理時間見積り装置は、プログラム１０１を解析してプログラム毎処理性能ＤＢ１０５を作成するプログラム解析部１０３、アクセス競合情報１１４と予めパラメータ化してあるハードウェア仕様パラメータ１１３を用いてプログラム１０１の実行時間を算出する処理時間算出部１０６、予めパラメータ化してあるプログラム動作パラメータ１１５を用いてプログラム実行装置毎時刻情報１０８を作成するプログラム動作タイミング作成部１０７、アクセス競合の可能性がある実行装置を示すアクセス先毎情報１１０を作成するアクセス先毎情報作成部１０９、アクセス先毎情報１１０からアクセス競合率を算出するアクセス競合率算出部１１１、各部による一連のプログラム実行時間導出処理をアクセス競合率が収束するまで繰返し実行させる処理時間繰返し算出部１１２からなる。【選択図】図１
2010286892.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラム実行装置を有する制御システム上で動作するプログラムの処理時間を見積もる処理時間見積り装置であって、
前記プログラムを構成する複数の一部プログラム毎に、各デバイスへのアクセスについての入力アドレスと出力アドレス、その入力回数と出力回数、および発行命令数を抽出するプログラム解析部と、
前記プログラム解析部が抽出した発行命令数と、前記各一部プログラムを実行する各プログラム実行装置から前記各デバイスへのアクセス時間の情報と、前記各デバイスへのアクセス時の前回競合率の情報とから、前記各一部プログラムの実行時間を算出する処理時間算出部と、
前記各一部プログラムと各一部プログラムを実行するプログラム実行装置との対応付けおよび実行順序を示すプログラム動作パラメータと、前記処理時間算出部が算出した前記各一部プログラムの実行時間とから、前記各一部プログラムの実行時刻を算出するプログラム動作タイミング作成部と、
前記プログラム動作タイミング作成部が算出したプログラム実行装置毎の前記各一部プログラムの実行時刻と、前記プログラム解析部が抽出した前記各一部プログラムの前記各デバイスへのアクセスの情報とから、時刻毎の前記各デバイスのアクセス競合数を算出するアクセス先毎情報作成部と、
前記アクセス先毎情報作成部が算出した時刻毎の前記各デバイスのアクセス競合数から、前記各デバイスの今回競合率を算出し、当該今回競合率を前回競合率として前記処理時間算出部へ出力するアクセス競合率算出部とを備えることを特徴とする処理時間見積り装置。
【請求項２】
処理時間算出部が実行時間の算出に用いた前回競合率と、この前回競合率を利用して算出された今回競合率とを比較して、一致していなければ当該今回競合率を前回競合率として利用して新たな今回競合率を算出させ、一致していれば当該今回競合率算出の過程で算出された実行時間をプログラムの処理時間として出力する処理時間繰返し算出部を備えることを特徴とする請求項１記載の処理時間見積り装置。
【請求項３】
処理時間算出部が実行時間の算出に用いた前回競合率と、この前回競合率を利用して算出された今回競合率とを比較して、その差分が、所定値より大きければ当該今回競合率を前回競合率として利用して新たな今回競合率を算出させ、所定値以下であれば当該今回競合率算出の過程で算出された実行時間をプログラムの処理時間として出力する処理時間繰返し算出部を備えることを特徴とする請求項１記載の処理時間見積り装置。
【請求項４】
処理時間算出部が算出した各一部プログラムの実行時間と、前記各一部プログラムを実行するプログラム実行装置の実行順序を示すプログラム動作パラメータとから、プログラム実行装置毎の応答時間を算出し、当該応答時間から制御システムの動作可能周期を算出する動作周期算出部を備えることを特徴とする請求項１から請求項３のうちのいずれか１項記載の処理時間見積り装置。
【請求項５】
複数のプログラム実行装置を有する制御システム上で動作するプログラムの処理時間を見積もる処理時間見積りプログラムであって、
コンピュータを、前記プログラムを構成する複数の一部プログラム毎に、各デバイスへのアクセスについての入力アドレスと出力アドレス、その入力回数と出力回数、および発行命令数を抽出するプログラム解析手段と、
前記プログラム解析手段が抽出した発行命令数と、前記各一部プログラムを実行する各プログラム実行装置から前記各デバイスへのアクセス時間の情報と、前記各デバイスへのアクセス時の前回競合率の情報とから、前記各一部プログラムの実行時間を算出する処理時間算出手段と、
前記各一部プログラムと各一部プログラムを実行するプログラム実行装置との対応付けおよび実行順序を示すプログラム動作パラメータと、前記処理時間算出手段が算出した前記各一部プログラムの実行時間とから、前記各一部プログラムの実行時刻を算出するプログラム動作タイミング作成手段と、
前記プログラム動作タイミング作成手段が算出したプログラム実行装置毎の前記各一部プログラムの実行時刻と、前記プログラム解析手段が抽出した前記各一部プログラムの前記各デバイスへのアクセスの情報とから、時刻毎の前記各デバイスのアクセス競合数を算出するアクセス先毎情報作成手段と、
前記アクセス先毎情報作成手段が算出した時刻毎の前記各デバイスのアクセス競合数から、前記各デバイスの今回競合率を算出し、当該今回競合率を前回競合率として前記処理時間算出手段へ出力するアクセス競合率算出手段と、
前記処理時間算出手段が実行時間の算出に用いた前回競合率と、この前回競合率を利用して算出された今回競合率とを比較して、一致していなければ当該今回競合率を前回競合率として利用して新たな今回競合率を算出させ、一致していれば当該今回競合率算出の過程で算出された実行時間を前記プログラムの処理時間として出力する処理時間繰返し算出手段として機能させるための処理時間見積りプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行装置上で動作させたときの処理時間を見積もる処理時間見積り装置およびそのプログラムに関するものである。
【背景技術】
【０００２】
近年、制御用コントローラに代表される定周期のシーケンス動作によりリアルタイム性を実現するシステムにおいて、複数のプログラム実行装置を利用したシステム構築がなされている。このようなシステム上でソフトウェアを評価する際には、実機またはシミュレータを利用して処理性能を見積もる必要があり、性能評価のための工数を要していた。
【０００３】
シミュレータを利用して処理性能を見積もる場合、例えば特許文献１のソフトウェアの移植評価装置では、プログラム全体を第一処理装置から第二処理装置へ移植したときの処理時間評価をするために、所定のプログラムの第一処理装置と第二処理装置とにおける処理性能から求められる処理性能評価係数を、プログラム内各モジュール種別の比率により重み付けして得られる処理性能換算係数に基づいて処理性能を算出していた。
【０００４】
特許文献２のプログラムシミュレーション装置では、プログラムの動作を１命令ずつクロック単位で正確にシミュレーションすることで、処理性能を見積もっていた。また、レジスタ、メモリ、キャッシュへのアクセス時間の統計量として、命令の実行回数、キャッシュヒット率、メモリの読み書き回数を考慮して算出していた。
【０００５】
特許文献３のプログラム開発支援装置では、プログラムを実行したときに、マイクロコンピュータ内でロードしたデータをすぐに演算に使えず一定サイクル間マイクロコンピュータがストールすることがあり、そのストールペナルティを考慮して処理時間を算出していた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２９９２１２号公報
【特許文献２】特開平９−６６４６号公報
【特許文献３】特開２０００−２４２５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の処理時間見積り装置は以上のように構成されているので、特許文献１の装置ではプログラム全体を別の処理装置へ移植したときの処理時間評価はできるが、処理装置内の一部プログラムのみを別の処理装置へ移植したときの処理時間評価ができなかった。また、第一処理装置から第二処理装置へプログラム全体を移植したときの処理性能を算出した換算係数を用いて第二処理装置の処理性能を見積もるため、演算時間および多種多様なＩ／Ｏアドレスへのアクセス時間が考慮されていなかった。
さらに、特許文献２，３の装置では、複数の実行装置で同時にプログラムを実行する場合のアクセス競合は考慮されておらず、複数の実行装置からのアクセス競合率を反映したプログラム処理時間を評価することはできなかった。
【０００８】
また、従来の処理時間見積り装置では、複数の実行装置からのアクセス競合を考慮して処理性能を見積もる際、高精度に見積もるためにはサイクルレベルのシミュレーションを行う必要があることから結果導出までに時間を要したり、全てのアクセス競合を最悪ケースで見積もることで非現実的な処理時間を算出したりする課題もあった。
【０００９】
この発明は、上記のような課題を解決するためになされたもので、シミュレータを用いることなく高速に複数のプログラム実行装置上で動作するプログラムの処理時間を算出することを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る処理時間見積り装置は、プログラムを構成する複数の一部プログラム毎に、各デバイスへのアクセスについての入力アドレスと出力アドレス、その入力回数と出力回数、および発行命令数を抽出するプログラム解析部と、プログラム解析部が抽出した発行命令数と、各一部プログラムを実行する各プログラム実行装置から各デバイスへのアクセス時間の情報と、各デバイスへのアクセス時の競合率の情報とから、各一部プログラムの実行時間を算出する処理時間算出部と、各一部プログラムと各一部プログラムを実行するプログラム実行装置との対応付けおよび実行順序を示すプログラム動作パラメータと、処理時間算出部が算出した各一部プログラムの実行時間とから、各一部プログラムの実行時刻を算出するプログラム動作タイミング作成部と、プログラム動作タイミング作成部が算出したプログラム実行装置毎の各一部プログラムの実行時刻と、プログラム解析部が抽出した各一部プログラムの各デバイスへのアクセスの情報とから、時刻毎の各デバイスのアクセス競合数を算出するアクセス先毎情報作成部と、アクセス先毎情報作成部が算出した時刻毎の各デバイスのアクセス競合数から、各デバイスの競合率を算出して処理時間算出部へ出力するアクセス競合率算出部とを備えるようにしたものである。
【００１１】
この発明に係る処理時間見積りプログラムは、コンピュータを、プログラムを構成する複数の一部プログラム毎に、各デバイスへのアクセスについての入力アドレスと出力アドレス、その入力回数と出力回数、および発行命令数を抽出するプログラム解析手段と、プログラム解析手段が抽出した発行命令数と、各一部プログラムを実行する各プログラム実行装置から各デバイスへのアクセス時間の情報と、各デバイスへのアクセス時の前回競合率の情報とから、各一部プログラムの実行時間を算出する処理時間算出手段と、各一部プログラムと各一部プログラムを実行するプログラム実行装置との対応付けおよび実行順序を示すプログラム動作パラメータと、処理時間算出手段が算出した各一部プログラムの実行時間とから、各一部プログラムの実行時刻を算出するプログラム動作タイミング作成手段と、プログラム動作タイミング作成手段が算出したプログラム実行装置毎の各一部プログラムの実行時刻と、プログラム解析手段が抽出した各一部プログラムの各デバイスへのアクセスの情報とから、時刻毎の各デバイスのアクセス競合数を算出するアクセス先毎情報作成手段と、アクセス先毎情報作成手段が算出した時刻毎の各デバイスのアクセス競合数から、各デバイスの今回競合率を算出し、当該今回競合率を前回競合率として処理時間算出手段へ出力するアクセス競合率算出手段と、処理時間算出手段が実行時間の算出に用いた前回競合率と、この前回競合率を利用して算出された今回競合率とを比較して、一致していなければ当該今回競合率を前回競合率として利用して新たな今回競合率を算出させ、一致していれば当該今回競合率算出の過程で算出された実行時間をプログラムの処理時間として出力する処理時間繰返し算出手段として機能させるようにしたものである。
【発明の効果】
【００１２】
この発明によれば、プログラムから各デバイスへのアクセス仕様を解析した情報に基づくアクセス競合率を用いて各一部プログラムの実行時間を算出するようにしたので、複数のプログラム実行装置上で動作するプログラムについて、シミュレータを用いることなく高速に各一部プログラムの処理時間を算出することができる。
【図面の簡単な説明】
【００１３】
【図１】この発明の実施の形態１に係る処理時間見積り装置の構成を示すブロック図である。
【図２】図１に示すプログラム解析部の動作を示すフローチャートである。
【図３】図１に示すプログラム毎処理性能ＤＢの構成を示す説明図である。
【図４】図１に示すアドレス範囲情報の構成を示す説明図である。
【図５】図１に示す命令サイクルテーブルの構成を示す説明図である。
【図６】図１に示すプログラム動作タイミング作成部の動作を示すフローチャートである。
【図７】図１に示すプログラム実行装置毎時刻情報の構成を示す説明図である。
【図８】図１に示すプログラム動作パラメータの構成を示す説明図である。
【図９】図１に示すアクセス先毎情報作成部の動作を示すフローチャートである。
【図１０】図１に示すアクセス先毎情報の構成を示す説明図である。
【図１１】図１に示すアクセス競合率算出部の動作を示すフローチャートである。
【図１２】図１に示すアクセス競合情報の構成を示す説明図である。
【図１３】図１に示す処理時間算出部の動作を示すフローチャートである。
【図１４】図１に示すハードウェア仕様パラメータの構成を示す説明図である。
【図１５】図１に示す繰返しプログラム実行時間導出部の動作を示すフローチャートである。
【図１６】この発明の実施の形態２に係る処理時間見積り装置の動作を示すフローチャートである。
【図１７】この発明の実施の形態３に係る処理時間見積り装置の動作周期算出部の動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１は、この発明の実施の形態１に係る処理時間見積り装置の構成を示すブロック図である。この処理時間見積り装置は、複数のプログラム実行装置（以下、単に実行装置とも称す）を持つ制御システムにおいて、一部プログラムを別のプログラム実行装置上で動作させたときの処理性能を、シミュレータを用いることなくプログラム解析の情報を用いて高速に見積もるものである。
【００１５】
この処理時間見積り装置は、複数のプログラム１０１を解析してロード（ＬＤ）／ストア（ＳＴ）アクセスするアドレス範囲（即ちデバイス）、アクセス回数および発行命令数を抽出してプログラム毎処理性能データベース（以下、ＤＢ）１０５を作成するプログラム解析部１０３と、これらの情報を用いてプログラム１０１の各実行装置での実行時間を導出する繰返しプログラム実行時間導出部１０４からなる。
【００１６】
繰返しプログラム実行時間導出部１０４は、アクセス競合情報１１４と予めパラメータ化してあるハードウェア仕様パラメータ１１３を用いて各プログラム１０１の実行時間を算出する処理時間算出部１０６、予めパラメータ化してあるプログラム動作パラメータ１１５を用いてプログラム実行装置毎時刻情報１０８を作成するプログラム動作タイミング作成部１０７、アクセス競合の可能性がある実行装置を示すアクセス先毎情報１１０を作成するアクセス先毎情報作成部１０９、アクセス先毎情報１１０からアクセス競合率を算出するアクセス競合率算出部１１１、繰返しプログラム実行時間導出部１０４各部による一連のプログラム実行時間導出処理をアクセス競合率が収束するまで繰返し実行させる処理時間繰返し算出部１１２を備える。
【００１７】
先ず、プログラム解析部１０３の詳細を説明する。図２は、前記プログラム解析部１０３の動作を示すフローチャートである。プログラム解析部１０３はステップＳＴＰ１〜ＳＴＰ９からなる一連のループ処理を、処理時間見積り対象のプログラム１０１の全個数分（Ｎ回）繰返して、各該当プログラム（一部プログラム）について解析を行う。先ずステップＳＴＰ２のプログラム読取処理にて、プログラム解析部１０３がプログラム１０１からプログラムファイルを取得する。プログラム解析部１０３は、ステップＳＴＰ２で読み取ったプログラムファイル順にプログラムＩＤを設定してプログラム毎処理性能ＤＢ１０５へ登録する。
【００１８】
図３は、図１に示すプログラム毎処理性能ＤＢ１０５の構成を示す説明図である。プログラム毎処理性能ＤＢ１０５には、Ｎ個分のプログラムがプログラムＩＤ１０５ａを「１」〜「Ｎ」まで順に設定されて格納されている。また、プログラムＩＤ１０５ａ毎に、各アドレス範囲１０５ｂのＬＤ回数１０５ｃおよびＳＴ回数１０５ｄ、プログラム列数である命令数１０５ｅ、ならびに実行時間１０５ｆの情報が格納されている。なお、図３では、１命令を１サイクルですると仮定しているため、命令数１０５ｅと実行時間１０５ｆが「１２７０」の同一値となっている。また、図３ではアクセス対象となるデバイスを４種としている為、アドレスＩＤの種類を１、２、３、４の４種、つまりアドレス範囲数を４（Ａ、Ｂ、Ｃ、Ｄ）として例示している。
【００１９】
ステップＳＴＰ３では、プログラム毎の合計実行時間の初期化処理を行う。ステップＳＴＰ４〜ＳＴＰ１０のプログラム列数分ループ処理では、ステップＳＴＰ２で読み取った該当するプログラムにおいて、１行ずつファイルの最終行であるＭ行目まで解析する。ここでの１行は１列の実行命令として扱う。先ずステップＳＴＰ５のＬＤ／ＳＴチェック処理にて、プログラム解析部１０３は、プログラムの解析対象列がＬＤ／ＳＴ命令であれば、続くステップＳＴＰ６のアクセスアドレス取得へ進む。ＬＤ／ＳＴ命令以外であればステップＳＴＰ９，ＳＴＰ１０を経由してステップＳＴＰ４へ戻り次行の解析を行う。
【００２０】
ステップＳＴＰ５のアドレス取得処理では、プログラム解析部１０３が、ＬＤ／ＳＴ命令のアクセスアドレスを取得する。続くステップＳＴＰ６のアドレス範囲比較処理では、先ず、ステップＳＴＰ５で取得したアクセスアドレスをキーに用いて、後述するアドレス範囲情報１０２に含まれるアドレス範囲と照合して、合致するアドレス範囲のアドレスＩＤを取得する。
【００２１】
図４は、図１に示すアドレス範囲情報１０２の構成を示す説明図である。アドレス範囲情報１０２は、処理時間見積り対象のデバイスの開始アドレスおよび終了アドレスからなるアドレス範囲１０２ａと、そのアドレス範囲１０２ａをプログラム毎処理性能ＤＢ１０５のアドレス範囲１０５ｂにリンクするためのアドレスＩＤ１０２ｂとを格納するテーブルである。なお、図３のアドレス範囲１０５ｂが図４のアドレスＩＤ１０２ｂと対応しており、アドレス範囲１０５ｂからアドレス範囲１０２ａを取得することができる。
【００２２】
ステップＳＴＰ７で、プログラム解析部１０３が、アドレス範囲１０２ａとＬＤ／ＳＴ命令のアクセスアドレスを比較して、アクセスアドレスがアドレス範囲１０２ａ内であれば（ステップＳＴＰ７“有”）、続くステップＳＴＰ８のアクセス回数インクリメント処理へ進む。アドレス範囲１０２ａ外であれば（ステップＳＴＰ７“無”）、処理はステップＳＴＰ９，ＳＴＰ１０を経由してステップＳＴＰ４へ戻り、次の行の解析を開始する。ステップＳＴＰ８のアクセス回数インクリメント処理では、プログラム解析部１０３がプログラム毎処理性能ＤＢ１０５にアクセスして、該当するプログラムＩＤ１０５ａのうちの、アドレスＩＤ１０２ｂに相当するアドレス範囲１０５ｂのＬＤ回数１０５ｃまたはＳＴ回数１０５ｄをインクリメントする。
【００２３】
ステップＳＴＰ９では、プログラムの解析対象列の命令をキーに、命令サイクルテーブル１１６から当該命令の実行サイクル数を取得する。プログラム解析部１０３は、取得した実行サイクル数と実行時間の和を実行時間へ格納する。図５に、命令サイクルテーブル１１６の一例を示す。プログラム解析部１０３は、命令１１６ａと当該命令実行に必要なサイクル数１１６ｂからなる命令サイクルテーブル１１６を利用することにより、正確な実行時間を計算する。ステップＳＴＰ９では命令１１６ａの種別をキーに取得したサイクル数１１６ｂを実行時間へ加算する。
【００２４】
次に、繰返しプログラム実行時間導出部１０４のプログラム動作タイミング作成部１０７の詳細を説明する。図６は、図１に示すプログラム動作タイミング作成部１０７の動作を示すフローチャートであり、プログラムの実行時間および実行順序から実行装置毎のプログラム動作時刻情報を作成する動作を示す。先ず、ステップＳＴＰ１１の現在時刻配列クリア処理では、プログラム実行装置毎時刻情報１０８に含まれる、実行装置毎のプログラム開始時刻をクリアする。図７は、図１に示すプログラム実行装置毎時刻情報１０８の構成を示す説明図である。プログラム実行装置毎時刻情報１０８は、実行装置のＩＤを示す実行装置ＩＤ１０８ａと、各実行装置が実行するプログラムＩＤと当該プログラムの実行時間１０８ｂとを、プログラム実行順に格納するテーブルであり、実行装置ＩＤ１０８ａ毎にプログラムとプログラムの実行時刻を管理する。
【００２５】
続いて、プログラム動作タイミング作成部１０７は、ステップＳＴＰ１２〜ＳＴＰ１６からなる一連のループ処理をＮ回行う。先ず、ステップＳＴＰ１３のプログラム実行装置ＩＤ取得処理では、プログラム動作タイミング作成部１０７が上述のプログラムＩＤをキーに用いて、プログラム動作パラメータ１１５から当該プログラムＩＤに対応する実行装置のＩＤを取得する。図８は、図１に示すプログラム動作パラメータ１１５の構成を示す説明図である。図８に示すプログラム動作パラメータ１１５は、プログラムを実行する実行装置ＩＤ１１５ａと、各実行装置が実行するプログラムを示すプログラムＩＤ１１５ｂとを格納するテーブルである。なお、プログラムＩＤ１１５ｂは、上述のプログラムＩＤ１０５ａに相当し、プログラムＩＤ１１５ｂの順序が実行装置でのプログラム実行順を表す。
【００２６】
ステップＳＴＰ１４のプログラム実行時間取得処理では、プログラム動作タイミング作成部１０７がプログラム毎処理性能ＤＢ１０５を参照して、プログラムＩＤ１１５ｂに相当するプログラムＩＤ１０５ａの実行時間１０５ｆを取得する。例えば図３のプログラムＩＤ１０５ａ「１」が図８のプログラムＩＤ１１５ｂ「１」に相当する。
ステップＳＴＰ１５のプログラムＩＤとプログラム実行時間を格納する処理では、プログラム動作タイミング作成部１０７が、プログラムＩＤ１０５ａと実行時間１０５ｆをプログラム実行装置毎時刻情報１０８へ格納する。ステップＳＴＰ１５では、各実行装置ＩＤ１０８ａのもっともインデックス値が小さい、かつ、空き状態となっているレコードへプログラムＩＤとプログラムの実行時間を格納する。
【００２７】
次に、繰返しプログラム実行時間導出部１０４のアクセス先毎情報作成部１０９の詳細を説明する。図９は、図１に示すアクセス先毎情報作成部１０９の動作を示すフローチャートであり、プログラム実行装置毎時刻情報１０８を基に時刻毎に各アドレス範囲のアクセス数（即ち競合数）を計算し、アクセス先毎情報１１０へ格納するための動作を示す。図１０は、図１に示すアクセス先毎情報１１０の構成を示す説明図である。アクセス先毎情報１１０は、時刻１１０ａ毎にアドレスＩＤ１１０ｂへのアクセス可能性があるアクセス回数１１０ｃと、各アドレスＩＤ１１０ｂへの最終アクセス時刻１１０ｄとを格納するテーブルである。例えば、時刻１１０ａ「１」のアドレスＩＤ１１０ｂ「１」に格納されたアクセス回数１１０ｃ「４」は、４つの実行装置からアクセス可能性があることを示す。また、このアドレスＩＤ１１０ｂは、図４に示すアドレスＩＤ１０２ｂと対応している。
【００２８】
アクセス先毎情報作成部１０９は、図９に示すステップＳＴＰ２１〜ＳＴＰ３４からなる一連の時刻数分（Ｋ回）ループ処理で時刻１１０ａ毎に、ステップＳＴＰ２２〜ＳＴＰ３３のアドレスＩＤ数分（Ｌ回）ループ処理でアドレスＩＤ１１０ｂ毎に格納するアクセス回数１１０ｃを作成する。
先ず、ステップＳＴＰ２３のアクセス回数カウンタクリア処理では、アクセス先毎情報作成部１０９が、アクセス先毎情報１１０のアクセス回数１１０ｃをクリアする。
【００２９】
ステップＳＴＰ２４〜ＳＴＰ２９のプログラム実行装置数個数分（Ｉ回）ループ処理では、アクセス先毎情報作成部１０９が、各プログラム実行装置からのアクセス有無を取得する。先ず、ステップＳＴＰ２５のプログラムＩＤ取得処理では、アクセス先毎情報作成部１０９が、時刻数ループカウンタ値およびプログラム実行装置ループカウンタ値をキーとして、プログラム実行装置毎時刻情報１０８から当該時刻に実行している実行装置ＩＤ１０８ａのプログラムＩＤ１０８ｂを取得する。
【００３０】
ステップＳＴＰ２６のＬＤ／ＳＴ回数取得処理では、アクセス先毎情報作成部１０９が、ステップＳＴＰ２５で取得したプログラムＩＤ１０８ｂおよびアドレス範囲数ループカウンタ値をキーとして、プログラム毎処理性能ＤＢ１０５から該当するプログラムＩＤ１０５ａのアドレス範囲１０５ｂのＬＤ回数１０５ｃおよびＳＴ回数１０５ｄを取得する。
【００３１】
ステップＳＴＰ２７のＬＤ＋ＳＴ回数比較処理では、アクセス先毎情報作成部１０９が、ステップＳＴＰ２６で取得したＬＤ回数１０５ｃおよびＳＴ回数１０５ｄの合計回数が１以上か否か判断する。１以上であれば実行装置のアクセス可能性があるため（ステップＳＴＰ２７“！＝０”）、続くステップＳＴＰ２８のアクセス回数カウンタインクリメント処理にてアクセス先毎情報作成部１０９がアクセス回数をインクリメントする。合計回数が０であればアクセスの可能性はないので（ステップＳＴＰ２７“＝＝０”）、アクセス先毎情報作成部１０９はプログラム実行装置数個数分（Ｉ回）ループ処理を終了する。
【００３２】
ステップＳＴＰ３０のアクセス回数取得処理では、アクセス先毎情報作成部１０９が、時刻数ループカウンタ値およびアドレス範囲ループカウンタ値をキーとして、アクセス先毎情報１１０の該当する時刻数の当該アドレスＩＤへアクセス回数１１０ｃを格納する。
【００３３】
ステップＳＴＰ３１のアクセス回数比較処理では、アクセス先毎情報作成部１０９が、ループ処理中のアドレスＩＤ１１０ｂのアクセス回数１１０ｃが「０」か「０以上（非０）」かを判定して、「０以上」であればアクセスがあると判断して、当該アドレスＩＤ１１０ｂの最終アクセス時刻１１０ｄへ時刻ループカウンタ値をセットする（ステップＳＴＰ３２）。アクセス回数１１０ｃが「０」であればそのままアドレスＩＤ数分（Ｌ回）ループ処理を終了して、一連の処理を終了する。
【００３４】
次に、繰返しプログラム実行時間導出部１０４のアクセス競合率算出部１１１の詳細を説明する。図１１は、図１に示すアクセス競合率算出部１１１の動作を示すフローチャートであり、各プログラム実行装置に割り当てられたプログラムの実行時刻とアクセス数に基づいて、アドレス範囲毎のプログラム競合率を算出するための動作を示す。図１２は、図１に示すアクセス競合情報１１４の構成を示す説明図である。アクセス競合情報１１４は、アドレスＩＤ１１４ａおよび競合率１１４ｂを格納するテーブルである。
【００３５】
先ず、ステップＳＴＰ４１の内部使用配列クリア処理では、アクセス競合率算出部１１１が、アクセス競合情報１１４の競合率１１４ｂをクリアする。
【００３６】
アクセス競合率算出部１１１は、ステップＳＴＰ４２〜ＳＴＰ４９からなる一連のアドレスＩＤ数分（Ｌ回）ループ処理では、競合率１１４ｂをアドレスＩＤ毎に算出するためにアドレスＩＤ数分のループ処理を行う。先ず、ステップＳＴＰ４３のアクセス競合数クリア処理では、アクセス競合率算出部１１１が有するアドレスＩＤ毎のアクセス競合数をセットするための変数をクリアする。
【００３７】
ステップＳＴＰ４４〜ＳＴＰ４７からなる時刻数分（Ｋ回）ループ処理では、アクセス競合率算出部１１１が、時刻毎のアクセス競合数を取得するためのループ処理を行う。先ずステップＳＴＰ４５のアクセス回数取得処理では、アクセス競合率算出部１１１が、アドレス範囲ループカウンタ値および時刻ループカウンタ値をキーに用いて、アクセス先毎情報１１０から当該アドレスＩＤ１１０ｂおよび時刻１１０ａのアクセス回数１１０ｃを取得する。ステップＳＴＰ４６のアクセス競合数カウントアップ処理では、アクセス競合率算出部１１１が、ステップＳＴＰ４５で取得したアクセス回数１１０ｃをアクセス競合数の変数へ加算する。
【００３８】
時刻数分（Ｋ回）ループ処理終了後、ステップＳＴＰ４８のアクセス競合率算出処理では、アクセス競合率算出部１１１がループ処理中のアドレス範囲の競合率を算出して、アクセス競合情報１１４の競合率１１４ｂへ格納する。この競合率は、変数としてカウントしてきた（アクセス競合数−１）／（最終アクセス時刻１１０ｄ）とする。（アクセス競合数−１）とは、即ち当該アドレス範囲の全時刻のアクセス競合待ち回数であり、（最終アクセス時刻１１０ｄ）とは、即ち当該アドレス範囲へ最後にアクセスがあった時刻である。
【００３９】
次に、繰返しプログラム実行時間導出部１０４の処理時間算出部１０６の詳細を説明する。図１３は、図１に示す処理時間算出部１０６の動作を示すフローチャートである。図１４は、図１に示すハードウェア仕様パラメータ１１３の構成を示す説明図である。ハードウェア仕様パラメータ１１３は、プログラム実行装置毎に、実行装置から各アドレスＩＤ１１３ａのＬＤ時間１１３ｂおよびＳＴ時間１１３ｃと、そのアドレスＩＤへアクセスするときに発生する競合待ち時間１１３ｄとを格納するテーブルである。このテーブルには、ＬＤ時間１１３ｂおよびＳＴ時間１１３ｃとして、ハードウェア仕様情報から取得した規定値を設定し、競合待ち時間１１３ｄとして、２つのアクセスが同時に発生してアクセス待ちとなる規定時間を設定しておく。
【００４０】
処理時間算出部１０６の動作を、図３のプログラム毎処理性能ＤＢ１０５、図１２のアクセス競合情報１１４および図１４のハードウェア仕様パラメータ１１３を用いて説明する。処理時間算出部１０６は、ステップＳＴＰ５１〜ＳＴＰ５７からなる一連のプログラム個数分（Ｎ回）ループ処理を、処理時間見積り対象のプログラム１０１の全個数分（Ｎ個）繰返して、各プログラムについて処理時間を算出する。先ず、ステップＳＴＰ５２のアクセス時間クリア処理では、ループ処理中のプログラムのデバイスアクセス時間をクリアする。
【００４１】
続いて、処理時間算出部１０６は、ステップＳＴＰ５３〜ＳＴＰ５５からなるアドレスＩＤ数分（Ｌ回）ループ処理をアドレス範囲１０５ｂの全個数分（Ｌ個）繰返して、アドレス範囲１０５ｂ毎のアクセス時間を算出する。ステップＳＴＰ５４のアクセス時間算出処理では、処理時間算出部１０６がアドレスＩＤをキーに用いて、ハードウェア仕様パラメータ１１３からＬＤ時間１１３ｂ、ＳＴ時間１１３ｃおよび競合待ち時間１１３ｄを取得し、アクセス競合情報１１４から競合率１１４ｂを取得し、プログラム毎処理性能ＤＢ１０５からＬＤ回数１０５ｃとＳＴ回数１０５ｄを取得して、ループ処理中のアドレス範囲のアクセス時間を算出する。このアクセス時間は、｛（ＬＤ回数１０５ｃ×ＬＤ時間１１３ｂ）＋（ＳＴ回数１０５ｄ×ＳＴ時間１１３ｃ）＋競合待ち時間１１３ｄ｝×競合率１１４ｂとする。
【００４２】
アドレスＩＤ数分（Ｌ回）ループ処理終了後、ステップＳＴＰ５６のアクセス時間算出処理では、処理時間算出部１０６がアクセス時間と命令数の和をプログラムの実行時間として算出して、繰返しプログラム実行時間導出部１０４へ格納する。
【００４３】
次に、処理時間見積り装置がプログラム処理時間を算出するための全体動作を、図１〜図１５を用いて説明する。初めに、オフラインでプログラム解析部１０３がプログラム１０１を解析し、プログラム毎のＬＤ／ＳＴ回数およびＬＤ／ＳＴのアドレス範囲を抽出してプログラム毎処理性能ＤＢ１０５へ格納する。
処理時間繰返し算出部１１２は、図１２に示すようなアドレス範囲毎の前回競合率と今回競合率を比較して、ステップＳＴＰ６１〜ＳＴＰ６６からなるループ処理を繰返すか否かの判定を行う。処理時間繰返し算出部１１２は前回競合率と今回競合率とに差があればこの差を誤差と判断して、再度プログラム実行時間を算出し直し、前回競合率と今回競合率とが一致すれば誤差なしと判断してその時の実行時間をプログラム処理時間に決定して、処理を終了する。なお、本処理では、実行開始時は前回競合率がないため、最小２回はループ内処理を実行する。
【００４４】
ループ処理を行う場合、ステップＳＴＰ６２において、処理時間算出部１０６が図１３に示す処理時間算出処理を行う。具体的には、上述のように処理時間算出部１０６が、アドレスＩＤ毎に計算したアクセス時間を用いて各プログラムの実行時間を算出して、プログラム毎処理性能ＤＢ１０５へ格納する。
続いて、ステップＳＴＰ６３において、プログラム動作タイミング作成部１０７が図６に示すプログラム動作タイミング作成処理を行う。具体的には、上述のようにプログラム動作タイミング作成部１０７が、処理時間算出部１０６が算出した各プログラムの実行時間と、プログラム動作パラメータ１１５から取得した各プログラムの実行順序とから、各実行装置上で各プログラムが実行される時刻を算出して、プログラム実行装置毎時刻情報１０８へ格納する。
続いて、ステップＳＴＰ６４において、アクセス先毎情報作成部１０９が図９に示すアクセス先毎情報作成処理を行う。具体的には、上述のようにアクセス先毎情報作成部１０９が、プログラム実行装置毎時刻情報１０８から時刻毎に各実行装置で実行するプログラム群の情報を取得し、時刻毎およびアドレスＩＤ（デバイス）毎にプログラム群からのアクセス回数を算出し、この回数を時刻毎の各デバイスへのアクセス競合数とする。
続いて、ステップＳＴＰ６５において、アクセス競合率算出部１１１が図１１に示すアクセス競合率算出処理を行う。具体的には、上述のようにアクセス競合率算出部１１１が、アクセス先毎情報１１０からデバイス毎のアクセス回数１１０ｃと最終アクセス時刻１１０ｄとを用いて、デバイス毎のアクセス競合平均回数と実行装置毎のプログラム実行時間の商から競合率を算出して、アクセス競合情報１１４へ格納する。
続いて、ステップＳＴＰ６６において、処理時間繰返し算出部１１２が、今回のループ処理で算出した今回競合率と前回のループ処理で算出した前回競合率とを比較する。その結果、今回と前回の競合率が全てのアドレスＩＤにおいて同じであれば、処理時間繰返し算出部１１２はループ処理を終了させ、今回のループ処理で算出・格納されたプログラム毎処理性能ＤＢ１０５の実行時間１０５ｆを各プログラムの処理時間とする。
一方、ステップＳＴＰ６６において、今回と前回の競合率が全てのアドレスＩＤにおいて同じでなければ、処理時間繰返し算出部１１２がステップＳＴＰ６２で今回のループ処理で算出した競合率を利用して、各プログラムの実行時間を算出する処理を開始して、一連のループ処理を実行する。このループ処理は、前回と今回のループ処理で算出した競合率が同じになるまで繰返す。
【００４５】
例えば、初回のループ処理実行時は前回競合率がないため、繰返しプログラム実行時間導出部１０４の各部は前回競合率に「０」を用いて初回のステップＳＴＰ６１〜ＳＴＰ６６を行って、競合率「Ａ」を算出する。２回目のループ処理実行時は、初回に算出した競合率「Ａ」×アクセス時間をプログラム実行時間に加算するため、新たな競合ポイントが発生し、今回競合率が「Ｂ」となる。２回目のループ処理実行時に、初回の競合率「Ａ」と２回目の競合率「Ｂ」を比較し、同一であれば収束したと判断して処理終了となるが、同一でなければ２回目の競合率「Ｂ」を利用して競合率「Ｂ」×アクセス時間をプログラム実行時間として競合率「Ｃ」を計算することとなる。
【００４６】
以上のように、実施の形態１によれば、処理時間見積り装置を、プログラム１０１を構成するＮ個の一部プログラム毎に、各デバイスへのアクセスについてのアドレス範囲１０５ｂ毎のＬＤ回数１０５ｃ、ＳＴ回数１０５ｄ、および命令数１０５ｅを抽出してプログラム毎処理性能ＤＢ１０５とするプログラム解析部１０３と、プログラム解析部１０３が抽出した命令数１０５ｅと、各一部プログラムを実行する各プログラム実行装置から各デバイスへのＬＤ／ＳＴ時間の情報であるハードウェア仕様パラメータ１１３と、各デバイスへのアクセス時の競合率の情報であるアクセス競合情報１１４とから、各一部プログラムの実行時間１０５ｆを算出する処理時間算出部１０６と、各一部プログラムと各一部プログラムを実行するプログラム実行装置との対応付けおよび実行順序を示すプログラム動作パラメータ１１５と、処理時間算出部１０６が算出した各一部プログラムの実行時間１０５ｆとから、各一部プログラムの実行時刻を算出してプログラム実行装置毎時刻情報１０８を作成するプログラム動作タイミング作成部１０７と、プログラム動作タイミング作成部１０７が算出したプログラム実行装置毎の各一部プログラムの実行時刻と、プログラム解析部１０３が抽出したプログラム毎処理性能ＤＢ１０５の情報とから、時刻毎の各デバイスのアクセス競合数を算出してアクセス先毎情報１１０を作成するアクセス先毎情報作成部１０９と、アクセス先毎情報作成部１０９が算出したアクセス先毎情報１１０から、各デバイスの競合率を算出してアクセス競合情報１１４として処理時間算出部１０６へ出力するアクセス競合率算出部１１１とを備えるように構成した。このため、オフラインで解析したプログラム固有の情報とハードウェアのパラメータからプログラムを実行またはシミュレーションすることなくアクセス競合の見積りを行って、高速にプログラムの処理時間（実行時間１０５ｆ）を算出することができる。
【００４７】
また、実施の形態１によれば、処理時間算出部１０６が実行時間１０５ｆの算出に用いた前回競合率と、この前回競合率を利用して算出された今回競合率とを比較して、一致していなければ当該今回競合率を前回競合率として利用して処理時間算出部１０６、プログラム動作タイミング作成部１０７、アクセス先毎情報作成部１０９およびアクセス競合率算出部１１１に繰返し処理を行わせて新たな今回競合率を算出させ、一致していれば当該今回競合率算出の過程で算出された実行時間１０５ｆをプログラム１０１の処理時間として出力する処理時間繰返し算出部１１２を備えるように構成した。このため、前回競合率と今回競合率が一致したときの実行時間１０５ｆをプログラム１０１の処理時間とすることで、高精度な処理時間の見積りを行うことができる。
【００４８】
実施の形態２．
上記実施の形態１では、処理時間繰返し算出部１１２が算出した前回競合率と今回競合率とが一致した場合に、繰返しプログラム実行時間導出部１０４の一連の処理を終了するように構成したが、本実施の形態では、前回競合率と今回競合率の差が競合率計算終了パラメータより小さい場合に、許容範囲内の誤差と判断して一連の処理を終了するように構成する。なお、本実施の形態の処理時間見積り装置は、図１に示す上記実施の形態１の処理時間見積り装置と図面上では同様の構成であるため、以下では図１を援用して説明すると共に、同一の部分については説明を省略する。
【００４９】
図１６は、この発明の実施の形態２に係る処理時間見積り装置の、繰返しプログラム実行時間導出部１０４の動作を示すフローチャートである。
処理時間繰返し算出部１１２は、前回競合率と今回競合率との差を競合率計算終了パラメータと比較して、ステップＳＴＰ６１ａ〜ＳＴＰ６６ａからなるループ処理を繰返すか否かの判定を行う。なお、本処理では、上記実施の形態１と同様に、実行開始時は前回競合率がないため、最小２回はループ内処理を実行する。
処理時間繰返し算出部１１２は、アクセス競合率算出部１１１が算出したアドレスＩＤ毎の競合率と、前回ループ処理で算出した競合率との誤差が競合率計算終了パラメータ以上の場合に続くステップＳＴＰ６２〜ＳＴＰ６５の処理を行い、誤差が競合率計算終了パラメータより小さい場合に処理を終了する。ステップＳＴＰ６２〜ＳＴＰ６５については、図１５と同様であるため説明を省略する。
【００５０】
以上より、実施の形態２によれば、処理時間繰返し算出部１１２を、処理時間算出部１０６が実行時間１０５ｆの算出に用いた前回競合率と、この前回競合率を利用して算出された今回競合率とを比較して、その差分が、競合率計算終了パラメータより大きければ当該今回競合率を前回競合率として利用して処理時間算出部１０６、プログラム動作タイミング作成部１０７、アクセス先毎情報作成部１０９およびアクセス競合率算出部１１１に繰返し処理を行わせて新たな今回競合率を算出させ、競合率計算終了パラメータ以下であれば当該今回競合率算出の過程で算出された実行時間１０５ｆをプログラム１０１の処理時間として出力するように構成した。このため、前回競合率と今回競合率の差分が競合率計算終了パラメータ以下になったときの実行時間１０５ｆをプログラム１０１の処理時間とすることで、上記実施の形態１より高速に処理時間の見積りを行うことができる。
【００５１】
実施の形態３．
本実施の形態３では、上記実施の形態１，２により作成したプログラム毎処理性能ＤＢ１０５およびプログラム動作パラメータ１１５を用いて、実行装置毎のプログラム実行終了時刻を算出し、最も終了時刻が遅い実行装置のプログラム実行時間、即ち最悪実行時間を導出する動作周期算出部を備える。なお、本実施の形態の処理時間見積り装置は、動作周期算出部を追加する以外、図１に示す上記実施の形態１の処理時間見積り装置と図面上では同様の構成であるため、以下では図１を援用して説明すると共に、同一の部分については説明を省略する。
【００５２】
図１７は、この発明の実施の形態３に係る処理時間見積り装置の、動作周期算出部の動作を示すフローチャートである。なお、動作周期算出部が図１７に示す処理を開始する以前に、繰返しプログラム実行時間導出部１０４の各部による一連の処理が終了し、プログラム毎処理性能ＤＢ１０５に処理時間算出部１０６が算出した最終的な処理時間が実行時間１０５ｆに格納されているものとする。
【００５３】
ステップＳＴＰ７１〜ＳＴＰ８０のプログラム実行装置数分（Ｉ回）ループ処理では、動作周期算出部が、プログラム実行装置毎にプログラム実行時間の合計を計算する。先ず、ステップＳＴＰ７２の変数クリア処理では、動作周期算出部が、プログラム実行装置毎の処理時間の積算値を格納する変数である応答時間と、最も積算値が大きい応答時間を格納する変数である動作周期をクリアする。
続くステップＳＴＰ７３のプログラムＩＤ取得処理では、動作周期算出部が、プログラム実行装置ループカウンタ値をキーに用いて、プログラム動作パラメータ１１５から当該実行装置ＩＤ１１５ａで動作する全てのプログラムＩＤ１１５ｂを取得する。
【００５４】
ステップＳＴＰ７４〜ＳＴＰ７７の取得プログラムＩＤ数分ループ処理では、ステップＳＴＰ７３で取得したプログラムＩＤ１１５ｂの個数分、ループ処理を行い、各プログラムＩＤの応答時間を算出する。先ず、ステップＳＴＰ７５の実行時間取得処理で、動作周期算出部が、プログラムＩＤをキーに用いて、プログラム毎処理性能ＤＢ１０５から実行時間１０５ｆを取得する。続くステップＳＴＰ７６の応答時間積算処理で、動作周期算出部が、ステップＳＴＰ７５で取得した実行時間１０５ｆを応答時間の変数に加算して、応答時間を更新する。
【００５５】
ステップＳＴＰ７８の動作周期・応答時間比較処理では、動作周期算出部が、動作周期とステップＳＴＰ７４〜ＳＴＰ７７で実行時間１０５ｆを積算して得た応答時間とを比較する。動作周期算出部は、動作周期より応答時間が大きければ（ステップＳＴＰ７８“＜”）、動作周期の変数を応答時間に置き換えて（ステップＳＴＰ７９）、動作周期より応答時間が小さいか同じであれば（ステップＳＴＰ７８“＞＝”）、そのままプログラム実行装置数分（Ｉ回）ループ処理を終了して、一連の動作周期算出処理を終了する。
【００５６】
以上より、実施の形態３によれば、処理時間算出部１０６が算出した各一部プログラムの実行時間１０５ｆと、各一部プログラムを実行するプログラム実行装置の実行順序を示すプログラム動作パラメータ１１５とから、プログラム実行装置毎の応答時間を算出し、当該応答時間から制御システムの動作可能周期を算出する動作周期算出部を備えるように構成した。このため、上記実施の形態１，２において処理時間算出部１０６が算出したプログラム毎の処理時間から、実行装置の動作周期を自動的に算出することができる。
【００５７】
また、上記実施の形態１〜３によれば、プログラム毎処理性能ＤＢ１０５、ハードウェア仕様パラメータ１１３、およびプログラム動作パラメータ１１５は、繰返し計算する必要がなく、最初に一度値を作成すればその後の繰返し処理時に流用することができ、演算量を軽減できる。
【００５８】
なお、上記実施の形態１〜３の処理時間見積り装置をコンピュータで構成する場合、プログラム解析部１０３および繰返しプログラム実行時間導出部１０４各部の処理内容を記述している処理時間見積りプログラムをコンピュータのメモリに格納し、コンピュータのＣＰＵがメモリに格納されているこのプログラムを実行するようにしてもよい。
【符号の説明】
【００５９】
１０１  プログラム、１０２  アドレス範囲情報、１０２ａ  アドレス範囲、１０２ｂ  アドレスＩＤ、１０３  プログラム解析部、１０４  繰返しプログラム実行時間導出部、１０５  プログラム毎処理性能ＤＢ、１０５ａ  プログラムＩＤ、１０５ｂ  アドレス範囲、１０５ｃ  ＬＤ回数、１０５ｄ  ＳＴ回数、１０５ｅ  命令数、１０５ｄ  実行時間、１０６  処理時間算出部、１０７  プログラム動作タイミング作成部、１０８  プログラム実行装置毎時刻情報、１０８ａ  実行装置ＩＤ、１０８ｂ  プログラムＩＤとその実行時間、１０９  アクセス先毎情報作成部、１１０  アクセス先毎情報、１１０ａ  時刻、１１０ｂ  アドレスＩＤ、１１０ｃ  アクセス回数、１１０ｄ  最終アクセス時刻、１１１  アクセス競合率算出部、１１２  処理時間繰返し算出部、１１３  ハードウェア仕様パラメータ、１１３ａ  アドレスＩＤ、１１３ｂ  ＬＤ時間、１１３ｃ  ＳＴ時間、  １１３ｄ  競合待ち時間、１１４  アクセス競合情報、１１４ａ  アドレスＩＤ、１１４ｂ  競合率、１１５  プログラム動作パラメータ、１１５ａ  実行装置ＩＤ、１１５ｂ  プログラムＩＤ、１１６  命令サイクルテーブル、１１６ａ  命令、  １１６ｂ  サイクル数。
【図１】
2010286892.tif 000003
【図２】
2010286892.tif 000004
【図３】
2010286892.tif 000005
【図４】
2010286892.tif 000006
【図５】
2010286892.tif 000007
【図６】
2010286892.tif 000008
【図７】
2010286892.tif 000009
【図８】
2010286892.tif 000010
【図９】
2010286892.tif 000011
【図１０】
2010286892.tif 000012
【図１１】
2010286892.tif 000013
【図１２】
2010286892.tif 000014
【図１３】
2010286892.tif 000015
【図１４】
2010286892.tif 000016
【図１５】
2010286892.tif 000017
【図１６】
2010286892.tif 000018
【図１７】
2010286892.tif 000019