(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-25
(45)【発行日】2025-07-03
(54)【発明の名称】シミュレーション方法
(51)【国際特許分類】
G06F 11/36 20250101AFI20250626BHJP
G06F 9/50 20060101ALI20250626BHJP
G06F 11/34 20060101ALI20250626BHJP
【FI】
G06F11/3698
G06F9/50 120Z
G06F11/34 147
G06F11/34 157
(21)【出願番号】P 2021201687
(22)【出願日】2021-12-13
【審査請求日】2024-06-04
(73)【特許権者】
【識別番号】509186579
【氏名又は名称】Astemo株式会社
(74)【代理人】
【識別番号】110002572
【氏名又は名称】弁理士法人平木国際特許事務所
(72)【発明者】
【氏名】加藤 有真
(72)【発明者】
【氏名】石郷岡 祐
(72)【発明者】
【氏名】布施 康宏
(72)【発明者】
【氏名】近藤 明宏
(72)【発明者】
【氏名】新 吉高
【審査官】大倉 崚吾
(56)【参考文献】
【文献】特開2002-342126(JP,A)
【文献】特開2000-122898(JP,A)
【文献】米国特許出願公開第2018/0139306(US,A1)
【文献】特開2015-152987(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06F 11/28-11/36
G06F 9/455
G06F 9/50
G05B 13/00-17/02
B60R 16/02
(57)【特許請求の範囲】
【請求項1】
第1のソフトウェアをホスト環境上において実行することによって得られる第1のホスト特徴量を抽出し、
前記第1のソフトウェアをターゲット環境上において実行することによって、前記ターゲット環境上において前記第1のソフトウェアを実行するのに要するターゲット実行時間を算出し、
前記第1のホスト特徴量と前記ターゲット実行時間とに基づいて、前記ホスト環境と前記ターゲット環境との性能差を算出し、
第2のソフトウェアを前記ホスト環境上において実行することによって得られる第2のホスト特徴量を抽出し、
前記第2のホスト特徴量と前記性能差とに基づいて、前記第2のソフトウェアを前記ターゲット環境上で実行するのに要する時間を推定
し、
前記ターゲット環境上におけるデータの送受信タイミングに関する機器間調整係数を取得し、
前記ホスト環境上において前記第2のソフトウェアを実行する際に、前記機器間調整係数に基づいて、データの送受信タイミングを調整する、
ことを特徴とするシミュレーション方法。
【請求項2】
請求項1に記載のシミュレーション方法であって、
前記推定した時間に基づいて、前記ホスト環境上において前記第2のソフトウェアを実行する実行時間を調整する、
ことを特徴とするシミュレーション方法。
【請求項3】
第1のソフトウェアをホスト環境上において実行することによって得られる第1のホスト特徴量を抽出し、
前記第1のソフトウェアをターゲット環境上において実行することによって、前記ターゲット環境上において前記第1のソフトウェアを実行するのに要するターゲット実行時間を算出し、
前記第1のホスト特徴量と前記ターゲット実行時間とに基づいて、前記ホスト環境と前記ターゲット環境との性能差を算出し、
第2のソフトウェアを前記ホスト環境上において実行することによって得られる第2のホスト特徴量を抽出し、
前記第2のホスト特徴量と前記性能差とに基づいて、前記第2のソフトウェアを前記ターゲット環境上で実行するのに要する時間を推定し、
前記ターゲット実行時間と、前記第2のソフトウェアに関して推定した前記ターゲット環境上における実行時間と、前記第1のソフトウェア及び前記第2のソフトウェアそれぞれの周期情報と、に基づいて、前記ターゲット環境上における前記第1のソフトウェアと前記第2のソフトウェアの実行順序を推定する、
ことを特徴とするシミュレーション方法。
【請求項4】
請求項
3に記載のシミュレーション方法であって、
前記推定した実行順序と、前記ホスト環境上において前記第1のソフトウェア及び前記第2のソフトウェアを実行した際の実行順序とを比較することで、前記ホスト環境上で前記第2のソフトウェアが正しく実行できたかを検証する、
ことを特徴とするシミュレーション方法。
【請求項5】
請求項
3に記載のシミュレーション方法であって、
前記第1のソフトウェア及び前記第2のソフトウェアを実行可能な機器が複数存在し、
前記推定した実行順序による前記第1のソフトウェア及び前記第2のソフトウェアの実行と、予め定められた仕様とを比較し、当該実行順序によるソフトウェアの実行が前記仕様を満たさない場合には、前記第1のソフトウェアまたは前記第2のソフトウェアの少なくとも一方を実行する機器を変更する、
ことを特徴とするシミュレーション方法。
【請求項6】
請求項1に記載のシミュレーション方法であって、
前記第1のホスト特徴量及び前記第2のホスト特徴量は少なくともソフトウェアの実行時間を含む、
ことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーション方法に関する。
【背景技術】
【0002】
PCシミュレーション環境の実行タイミングを実ECUに近づけるための既存技術として、特許文献1に記載の技術がある。特許文献1においては、PCシミュレーション環境の実行タイミングを実ECUに近づける為の遅延処理を追加する機能を備えたシミュレーション装置を提供する事を目的としている。そしてその解決手段として、アプリケーションソフトを実行コードに変換して検証し、検証後の実行コードを他の計算機装置に移植するためのシミュレーション装置であって、アプリケーションのソースコードの関数単位で関数開始時、または終了時に時刻調整処理を行い、他の計算機装置における実行タイミングを調整することを特徴とするシミュレーション装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載の方法によれば、ソフトウェアの関数単位で関数開始時または終了時に時刻調整処理を行うことで、実行タイミングを実ECUに近づけてシミュレーションを行うことが可能である。しかしながら、特許文献1においては、シミュレーション装置と計算機装置の速度比率(CPUクロック数比)に基づいて実行タイミングを調整しているが、キャッシュやバスといったプログラムの特徴やマイコンの特徴が実行時間に影響を与えることを考慮していない。そのため、速度比率単体では、調整の精度が十分でないことが問題となる。
【0005】
また、特許文献1においては、分散ハードウェア構成を考慮していない。そのため、2つの関数(ソフトウェア)が別々のハードウェア上で動作していた際の通信タイミングの違いによるレイテンシを再現できないことが問題となる。
【0006】
したがって、分散ハードウェア構成を考慮した上で、ホスト(PCシミュレーション)環境上で高精度にターゲット(実ECU)環境を再現することが課題である。
【課題を解決するための手段】
【0007】
上記課題を解決するためのシミュレーション方法は、第1のソフトウェアをホスト環境上において実行することによって得られる第1のホスト特徴量を抽出し、第1のソフトウェアをターゲット環境上において実行することによって、ターゲット環境上において第1のソフトウェアを実行するのに要するターゲット実行時間を算出し、第1のホスト特徴量とターゲット実行時間とに基づいて、ホスト環境とターゲット環境との性能差を算出し、第2のソフトウェアをホスト環境上において実行することによって得られる第2のホスト特徴量を抽出し、第2のホスト特徴量と性能差とに基づいて、第2のソフトウェアをターゲット環境上で実行するのに要する時間を推定する。
【発明の効果】
【0008】
本発明によれば、分散ハードウェア構成を考慮した上で、ソフトウェアを開発するホスト環境上で高精度にターゲット環境が再現される。すなわち、ホスト環境上にターゲット環境が模擬されることになる。従って、実際にターゲット環境にソフトウェアを移植しなくても、ターゲット環境上においてソフトウェアが正常に実行できるか否かを検証することが可能になり、ソフトウェアの開発効率が向上する。
本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0009】
【
図3】実施例1におけるシミュレーション方法を用いて行う処理全体の概要を示した図。
【
図4】ホスト特徴量取得部1が行う処理フローの概要を示した図。
【
図6】ターゲット実行時間取得部2が行う処理フローの概要を示した図。
【
図8】ソフトウェア実行管理部5が行う処理フローの概要を示した図。
【
図9】実施例2におけるシミュレーション方法を用いて行う処理全体の概要を示した図。
【
図13】実施例2におけるソフトウェア実行管理部5が行う処理フローの概要を示した図。
【
図14】実施例3におけるシミュレーション方法を用いて行う処理全体の概要を示した図。
【
図16】実行順序推定部6が行う処理フローの概要を示した図。
【
図17】実行順序検証部7が行う処理フローの概要を示した図。
【
図18】実施例4におけるシミュレーション方法を用いて行う処理全体の概要を示した図。
【
図20】仕様評価部8が行う処理フローの概要を示した図。
【
図21】機能割り当て部9が行う処理フローの概要を示した図。
【発明を実施するための形態】
【0010】
本実施例は、ソフトウェアのシミュレーション方法に関する。以下、本発明に好適な実施形態の例(実施例)を説明する。
【0011】
[実施例1]
<ホスト環境の構成>
図1は本発明におけるホスト環境(クラウド)100の構成を示した図である。
本実施例におけるホスト環境100は、管制連携自動運転システムにおけるソフトウェア部分の開発・検証を目的としている。ここで、管制連携自動運転システムにおけるハードウェアの構成は、インフラセンサ101、管制装置102、及び車両103を有する構成である。また、車両103には、少なくとも1つ以上のマイコン1030が搭載されている。
【0012】
ホスト環境100上には既存ソフトウェア10と新規ソフトウェア12が実装されている。これらは実際の環境において、インフラセンサ101、管制装置102、車両103上で実行されるソフトウェアである。また、ホスト環境100は実際のセンサ1040やアクチュエータ1041を有さないため、シミュレータ104がセンサ1040やアクチュエータ1041を模擬する既存ソフトウェア10を有する。
【0013】
新規ソフトウェア12は、ホスト環境100上において開発され、ターゲット環境110(
図2参照)に移植される。各ソフトウェアは、例えば物体認識や経路計画や制御指令値の算出といった機能を発揮する。なお、
図1において、新規ソフトウェア12は車両103内のマイコン1030に実装されるソフトウェアとしているが、別の機器に新規ソフトウェア12が実装されていてもよい。
【0014】
<ターゲット環境の構成>
図2は本発明におけるターゲット環境(コントローラ)110の構成を示した図である。
ターゲット環境110は、管制連携自動運転システムにおける実際のハードウェア構成を有しており、例えば
図2におけるターゲット環境110は車両103に搭載されるマイコン1030である。
【0015】
また、ターゲット環境110のペリフェラル(内蔵装置や周辺機器等)については、
図2に示すようにPC120が模擬してもいいし、実際にインフラセンサ101、管制装置102、車両103を有していてもよい。実際のハードウェア構成を有する場合、車両103上にセンサ1040とアクチュエータ1041が搭載されているため、シミュレータ104は不要となる。同様に各ハードウェアが存在するため、PC120も不要となる。上述の通り、新規ソフトウェア12はホスト環境100上で開発されるが、ターゲット環境110に移植される。
【0016】
また、
図2において、新規ソフトウェア12は車両103内のマイコン1030に実装されるソフトウェアとしているが、別の機器に新規ソフトウェア12が実装されていてもよい。
【0017】
<シミュレーション方法の概要>
図3は実施例1におけるシミュレーション方法の概要を示した図である。
本実施例に係るシミュレーション方法は、ホスト特徴量取得部1と、ターゲット実行時間取得部2と、実行時間推定モデル作成部3と、ターゲット上実行時間推定部4と、ソフトウェア実行管理部5と、によって実行される。
【0018】
ホスト特徴量取得部1は、例えばホスト環境100に搭載された機能部であり、種々のソフトウェアをホスト環境下で実行したときに、実行時間等の情報を含む、後述するホスト特徴量11を算出し、取得する。
【0019】
ターゲット実行時間取得部2は、例えばターゲット環境110に搭載された機能部であり、既存ソフトウェア10をターゲット環境上において実行したときに要するターゲット実行時間20を取得する。
【0020】
実行時間推定モデル作成部3は、例えばホスト環境100に搭載された機能部であり、ホスト特徴量11及びターゲット実行時間20に基づいてホスト環境100とターゲット環境110との間の性能差を算出する。そして、任意のソフトウェアをターゲット環境110上において実行したときに要する実行時間を推定するための実行時間推定モデル30を作成する。
【0021】
ターゲット上実行時間推定部4は、例えばホスト環境100に搭載された機能部であり、実行時間推定モデル30と、新規ソフトウェア12をホスト環境上において実行した際に得られる新規ソフトウェアホスト特徴量13とから、ターゲット環境110上において新規ソフトウェア12を実行したときに要する実行時間を推定し、推定実行時間40を生成する。
【0022】
ソフトウェア実行管理部5は、例えばホスト環境100に搭載された機能部であり、推定実行時間40に基づいて、ホスト環境100上におけるソフトウェアの実行を管理する。
【0023】
以下では、上記の各機能部及び各種データについて詳述する。
【0024】
<ホスト特徴量取得部>
図4はホスト特徴量取得部1が行う処理フローの概要を示した図である。
ホスト特徴量取得部1は、ステップS11において、特徴量の計測を行う対象のソフトウェアを取得する。
ステップS12において、ソフトウェアの周期処理開始時に特徴量の計測を開始する。
ステップS13において、ソフトウェアの周期処理終了時に特徴量の計測を終了し、特徴量を保存する。
【0025】
ステップS14において、ソフトウェアの実行結果が測定終了条件を満たしたかを判定し、測定終了条件を満たしている場合はステップS15に進み、測定終了条件を満たしていない場合はステップS12に戻る。測定終了条件は、例えば任意の時間を経過したかどうか、ソフトウェアが自動運転に関するものであれば自動運転によって目的地に到着したか、自動運転が継続できないといったエラーが出たか、などから決定できる。また、複数の測定終了条件を組み合わせてもよい。
【0026】
ステップS15において、ステップS13で保存していた特徴量の中で、最悪実行時間時の特徴量を抽出する。ここで、最悪実行時間とは、特定のハードウェアで特定の計算タスクを実行するのにかかる最長の時間のことを指し、本実施例においては、ホスト環境100上で、既存ソフトウェア10または新規ソフトウェア12を一定回数以上の周期実行した際に得られる最も長い周期のことを指す。ホスト環境100上における最悪実行時間時の特徴量を抽出することで、ホスト環境100上においてターゲット環境110上での実行を模擬した際に、ターゲット環境110上での最悪実行時間を再現することが期待でき、検証の正確性を担保することができる。
ステップS16において、ステップS15において抽出した特徴量をホスト特徴量11として出力する。
このような手順でホスト特徴量取得部1はホスト特徴量11を取得する。
【0027】
<ホスト特徴量>
図5は上述したホスト特徴量11の例を示した図である。
ホスト特徴量11は、ソフトウェア別に周期毎に取得した特徴量として出力される。
図5に示した特徴量の種類は一例であり、以下に特徴量の対象となる候補を列挙する。
・実行時間:ソフトウェアの実行に要した時間である。
・CPUサイクル数:ソフトウェアの実行に要したCPUサイクル数であり、これをCPU周波数で割った値が実行時間となる。
・キャッシュミス回数:キャッシュミスが発生すると、メモリアクセスといった実行に時間を要する処理が必要となる。またキャッシュミスはLLC(Last Level Cache)、L1、L2がある。
・コンテキストスイッチ回数:割込み処理等、実行中の処理とは別の処理にCPUが使用されると、CPUの状態を保存・復元するための処理が発生する。
・CPUマイグレーション回数:処理が別のCPUに移動すると、CPUの状態を移行するために処理が発生する。
・リタイアした命令数:投機的実行を行ったが、使用されなかった命令であり、必要な命令を分岐後に実行する必要があるため、実行時間が遅くなる。
・ブランチミス数:投機的実行に失敗した分岐の数であり、必要な命令を分岐後に実行する必要があるため、実行時間が遅くなる。
・ストアフォワード回数:あるメモリアドレスに書き込む命令の後に同じアドレスから読み込む命令が実行される場合に、キャッシュではなくバッファにあるデータを利用することであり、キャッシュとバッファでアクセスに要する時間が異なる。
・ロードブロック数:データのロードに失敗した回数であり、必要に応じて再度データのロードを試みるため、処理が増加する。
・ストアブロック数:データのストアに失敗した回数であり、必要に応じて再度データのストアを試みるため、処理が増加する。
・範囲外ロード回数:ソフトウェアによってアクセスできる範囲外にアクセスしようとすると、エラーが発生する可能性があり、正常に実行されないため、正常時と実行時間が異なる。
・不完全なアドレスによるアクセス失敗回数:不完全なアドレスの整列により、連続したアドレスにデータが存在せず、別のアドレスへアクセスが必要となる。
・DTLB(Data-Translation Lookaside Buffer)ロードミス回数:要求したアドレスがTLB内になかった回数であり、アドレス変換のためにページテーブルを参照する必要があり、処理が増加する。
・メモリディスアンビギュレーションイベント回数:依存関係にあるロード命令とストア命令を並列実行する際に、ストア命令を先に実行する必要があり、ロード命令はストア命令の実行を待つ必要がある。
・メモリアクセスリタイア回数:アクセスしようとしたメモリが別のコアによって変更されたことにより、リタイアしたメモリアクセスの回数であり、アクセスのために追加の処理が必要となる。
・ハードウェア割り込みイベント回数:ハードウェア割り込みイベントが発生した回数であり、割り込みが発生すると、保存・復元の処理が必要になる。
・プリフェッチ回数:CPUがデータを事前にメモリからキャッシュメモリに読みだしておいた回数であり、メモリとキャッシュでアクセスに要する時間が異なる。
・キャッシュロックサイクル数:キャッシュがロックされていたサイクル数であり、アンロックされるまで待つ必要がある。
・実行が停止したサイクル数:実行が停止したサイクル数であり、ソフトウェア実行のサイクル数に影響を与える。
・直前実行ソフト:直前に実行されたソフトウェアのキャッシュの状況によって、例えばReadしたいデータがキャッシュ内にあるため、高速にReadできることが考えられる。
【0028】
<ターゲット実行時間取得部>
図6はターゲット実行時間取得部2が行う処理フローの概要を示した図である。
ターゲット実行時間取得部2は、ステップS21において、実行時間の計測を行う対象のソフトウェアを取得する。
ステップS22において、ソフトウェアの周期処理開始時に実行時間の計測を開始する。
ステップS23において、ソフトウェアの周期処理終了時に実行時間の計測を終了し、実行時間を保存する。
【0029】
ステップS24において、ソフトウェアの実行結果が測定終了条件を満たしたかを判定し、測定終了条件を満たしている場合はステップS25に進み、測定終了条件を満たしていない場合はステップS22に戻る。測定終了条件は、例えば任意の時間を経過したかどうか、ソフトウェアが自動運転に関するものであれば自動運転によって目的地に到着したか、自動運転が継続できないといったエラーが出たか、などから決定できる。また、複数の測定終了条件を組み合わせてもよい。
【0030】
ステップS25において、ステップS23で保存していた実行時間の中で、最悪実行時間を抽出する。
ステップS26において、ステップS25において抽出した最悪実行時間をターゲット実行時間20として出力する。
このような手順でターゲット実行時間取得部2はターゲット実行時間20を取得する。
【0031】
<ターゲット実行時間>
図7は本発明におけるターゲット実行時間20の例を示した図である。本実施例においてはターゲット実行時間20として、ソフトウェア別に取得した最悪実行時間が保存されている。
【0032】
<実行時間推定モデル作成部>
上述の処理で得られたホスト特徴量11及びターゲット実行時間20は、実行時間推定モデル作成部3に出力される。実行時間推定モデル作成部3は、ホスト特徴量11を独立変数(説明変数)とし、ターゲット実行時間20を従属変数(目的変数)として、機械学習を行うことにより、実行時間推定モデル30を生成する。機械学習のアルゴリズムとしては、重回帰分析やDNNなどの公知のアルゴリズムを用いる。
【0033】
<実行時間推定モデル>
実行時間推定モデル作成部3によって作成される実行時間推定モデル30は、新規ソフトウェアホスト特徴量13を入力すると、推定実行時間40を出力するモデルである。
【0034】
<ターゲット上実行時間推定部>
ターゲット上実行時間推定部4は、実行時間推定モデル作成部3が出力した実行時間推定モデル30と、ホスト特徴量取得部1に新規ソフトウェア12を入力することで得られる新規ソフトウェアホスト特徴量13と、を入力として受け取る。そして、実行時間推定モデル30に新規ソフトウェアホスト特徴量13を入力することで、ターゲット環境110上において新規ソフトウェア12を実行したときに要すると推定される推定実行時間40を得る。
【0035】
<推定実行時間>
本実施例における推定実行時間40は、新規ソフトウェア12をターゲット環境110上で実行した際の予測される最悪実行時間である。
【0036】
<ソフトウェア実行管理部>
図8はソフトウェア実行管理部5が行う処理フローの概要を示した図である。
ソフトウェア実行管理部5は、ステップS51において、シミュレーションを行う対象の新規ソフトウェア12を取得する。
ステップS52において、ターゲット上実行時間推定部4から推定実行時間40を取得する。
ステップS53において、ソフトウェアの周期処理開始時に実行時間の計測を開始する。
ステップS54において、ソフトウェアの周期処理内のデータ出力処理の直前に実行時間の計測を終了し、実行時間を保存する。
【0037】
ステップS55において、計測した実行時間が推定実行時間40より短ければ、その差分の時間だけビジーウェイトさせる。即ち、通常ホスト環境100は、ターゲット環境110よりも高い演算処理能力を有している。そのため、ホスト環境100上においてあるソフトウェアを実行した場合における各処理の実行時間は、ターゲット環境110上においてそのソフトウェアを実行するのに要すると推定される時間よりも短くなる。そのため、ホスト環境100上においてソフトウェアを実行した際の各処理における推定実行時間と実際の実行時間との差分の時間だけ待機することによって、ホスト環境上にターゲット環境110を高精度に模擬することが可能になる。
【0038】
ステップS56において、ソフトウェアの実行の結果得られたデータの出力処理を行う。
ステップS57において、ソフトウェアの実行結果が測定終了条件を満たしたかを判定し、測定終了条件を満たしている場合は処理を終了し、測定終了条件を満たしていない場合はステップS53に戻る。測定終了条件は、例えば任意の時間を経過したかどうか、ソフトウェアが自動運転に関するものであれば自動運転によって目的地に到着したか、自動運転が継続できないといったエラーが出たか、などから決定できる。また、複数の測定終了条件を組み合わせてもよい。
このような手順でソフトウェア実行管理部5は新規ソフトウェア12をホスト環境100上で実行し、ターゲット環境110上での新規ソフトウェア12の実行を模擬する。
【0039】
上述した実施例1におけるシミュレーション方法によれば、事前に既存ソフトウェア10をホスト環境100上とターゲット環境110上のそれぞれにおいて実行することで、ホスト特徴量11からターゲット環境110上における最悪実行時間を推定可能な実行時間推定モデル30を生成する。そして、ホスト環境100上において新規ソフトウェア12を実行することによって得られた新規ソフトウェアホスト特徴量13を実行時間推定モデル30に入力することで、新規ソフトウェア12を実際にターゲット環境110に移植することなく、新規ソフトウェア12をターゲット環境110上において実行した際の最悪実行時間を推定することが可能になっている。そして、推定実行時間40に基づいて、実行時間を調整しながらホスト環境100上において新規ソフトウェア12を実行することで、高精度にターゲット環境110上での新規ソフトウェア12の実行を模擬して検証できるため、ホスト環境100上において開発している新規ソフトウェア12をシームレスにターゲット環境110へ移植することが可能となる。
【0040】
[実施例2]
続いて、本発明の実施例2におけるシミュレーション方法について説明する。
実施例2が実施例1と異なる点は、実施例1で用いた情報に加えて、機器割り当て情報50とデータフロー情報51と機器間調整係数情報52とを用いて、ソフトウェア間の通信を再現し、ホスト環境100上でのソフトウェアの実行タイミングを調整する点である。なお、実施例1と同様の構成については、同一の符号を付してその説明を省略する。
【0041】
<シミュレーション方法の概要>
図9は実施例2におけるシミュレーション方法の概要を示した図である。
本実施例においては、推定実行時間40に加えて、機器割り当て情報50とデータフロー情報51と機器間調整係数情報52をソフトウェア実行管理部5へ入力する。なお、機器割り当て情報50、データフロー情報51及び機器間調整係数情報52は、例えばホスト環境100内に格納されている。
【0042】
<機器割り当て情報>
図10は本発明における機器割り当て情報50の例を示した図である。
機器割り当て情報50は、それぞれのソフトウェアがどの機器上で動作しているかの情報を示している。本実施例においては、例えばソフトウェアAとソフトウェアCはマイコンA上で動作し、ソフトウェアBはマイコンB上で動作している。
【0043】
<データフロー情報>
図11は本発明におけるデータフロー情報51の例を示した図である。
データフロー情報51は、それぞれのソフトウェアがどのソフトウェアにどのような通信方法でデータを送信するかの情報を示している。本実施例においては、例えばソフトウェアAは、ソフトウェアBへCAN(Controller Area Network)を用いてデータを送信し、ソフトウェアCへはマイコン内(プロセス間通信など)でデータを送信する。
【0044】
<機器間調整係数情報>
図12は本発明における機器間調整係数情報52の例を示した図である。
機器間調整係数情報52は、機器の間でどの程度データ送受信のタイミングを調整するかを設定するための機器間調整係数の情報を示している。例えばマイコン内は高速でデータの送受信が可能であるため調整が不要(係数が0)であるが、WiFi(登録商標)の場合は無線であるため調整すべき遅延が大きい(係数が8)と設定する。機器間調整係数は、実際にターゲット環境110で計測を行い決定する、もしくは、ターゲット環境110のスペックと送信されるデータサイズから決定する。
【0045】
<ソフトウェア実行管理部>
図13は実施例2におけるソフトウェア実行管理部5が行う処理フローの概要を示した図である。
ソフトウェア実行管理部5は、ステップS51において、シミュレーションを行う対象の新規ソフトウェア12を取得する。
ステップS52において、ターゲット上実行時間推定部4から推定実行時間40を取得する。
ステップS58において、機器割り当て情報50を取得する。
ステップS59において、データフロー情報51を取得する。
ステップS5Aにおいて、機器間調整係数情報52を取得する。
【0046】
ステップS53において、ソフトウェアの周期処理開始時に実行時間の計測を開始する。
ステップS5Bにおいて、その周期において受信したデータを、何周期目であるかの情報とともに保存する。
【0047】
ステップS5Cにおいて、機器割り当て情報50とデータフロー情報51から、受け取ったデータに対応する機器間調整係数を決定する。例えば、新規ソフトウェア12がソフトウェアBであり、データの送信元がソフトウェアAの場合を考える。
図10の機器割り当て情報50と
図11のデータフロー情報51から、ソフトウェアAとソフトウェアBはCANを用いて通信が行われるため、
図12の機器間調整係数情報52の該当行を参照し、機器間調整係数は1であることがわかる。
【0048】
ステップS5Dにおいて、ステップS5Cで決定した機器間調整係数に基づき、ステップS5Bで保存していた過去の受信データの中から、機器間調整係数に基づいて選択した過去のデータを今回の制御周期処理での入力として処理を行う。
ステップS54において、ソフトウェアの周期処理内のデータ出力処理の直前に実行時間の計測を終了し、実行時間を保存する。
ステップS55において、計測した実行時間が推定実行時間40より短ければ、その差分の時間だけビジーウェイトさせる。
ステップS56において、データ出力処理を行う。
【0049】
ステップS57において、ソフトウェアの実行結果が測定終了条件を満たしたかを判定し、測定終了条件を満たしている場合は処理を終了し、測定終了条件を満たしていない場合はステップS53に進む。測定終了条件は、例えば任意の時間を経過したかどうか、ソフトウェアが自動運転に関するものであれば自動運転によって目的地に到着したか、自動運転が継続できないといったエラーが出たか、などから決定できる。また、複数の測定終了条件を組み合わせてもよい。
このような手順で実施例2におけるソフトウェア実行管理部5はホスト環境100上において新規ソフトウェア12を実行する。
【0050】
上述したステップS5BからS5Dまでの処理についてより詳細に説明する。
図10-11を参照すると、例えば、ソフトウェアEは、マイコンA上で実行されているソフトウェアCと、管制装置上で実行されているソフトウェアDとからデータを受け取る。
図11と
図12より、ソフトウェアCとソフトウェアEとの間のデータ通信はWiFiで行われており、その機器間調整係数は8である。これはすなわち、ソフトウェアEのN周期目の実行において、ソフトウェアCがN-8周期目に生成したデータが用いられることを意味する。同様に、ソフトウェアDとソフトウェアEとの間のデータ通信はEth(Ethernet:登録商標)で行われており、その機器間調整係数は2である。これは、ソフトウェアEのN周期目の実行において、ソフトウェアDがN-2周期目に生成したデータが用いられることを意味する。
【0051】
このように、上述の例では、ソフトウェアEのN周期目に用いられるデータは、ソフトウェアCがN-8周期目に生成したデータとソフトウェアDがN-2周期目に生成したデータとなる。しかしながら、ホスト環境100とターゲット環境110間の性能差により、ホスト環境100上において同じソフトウェアを実行した場合、ソフトウェアEのN周期目に用いられるデータは、例えばソフトウェアCがN―2周期目に生成したデータとソフトウェアDがN―2周期目に生成したデータとなることが考えられる。この場合、ソフトウェアEの実行に用いられるデータが生成されたタイミングがターゲット環境110と異なるため、ホスト環境100上での実行結果とターゲット環境110上での実行結果が異なることとなり、ホスト環境100で高精度なターゲット環境110を再現することが不可能となる。
【0052】
これに対して、実施例2におけるソフトウェア実行管理部5の行う処理フローにより、機器間の通信方法に応じた遅延を挿入するため、ホスト環境100上で新規ソフトウェア12を実行する際にターゲット環境110上で実行した際の通信タイミングとなるように調整することが可能となる。
【0053】
なお、本実施例において、データ受信側においてデータを調整する処理を行っているが、データ送信側においてデータを調整する処理を行っても同様の効果を得ることができる。
【0054】
上述したように、実施例2におけるシミュレーション方法によれば、機器割り当て情報50とデータフロー情報51と機器間調整係数情報52とを用いることにより、ソフトウェア間で処理を行う際のデータの送受信タイミングを調整する。これにより、ホスト環境100上で新規ソフトウェア12を実行する際に、ターゲット環境110上で実行した際の通信タイミングとなるように調整することが可能になるため、ターゲット環境110上でソフトウェアを実行する際のデータの生成タイミングをホスト環境100上で正確に再現することが可能となる。
【0055】
[実施例3]
本発明の実施例3におけるシミュレーション方法について説明する。
実施例3が実施例1と異なる点は、新規ソフトウェア12を含むソフトウェア群をターゲット環境110で実行した際の実行順序を推定し、上記ソフトウェア群をホスト環境100上で実行した際の実行順序と比較検証する点をさらに含むことである。これにより、ホスト環境100に起因する事象により実行したシミュレーションが正しく実行できなかった可能性があることを検知することができる。なお、実施例1と同様の構成については、同一の符号を付してその説明を省略する。
【0056】
<シミュレーション方法の概要>
図14は実施例3におけるシミュレーション方法の概要を示した図である。
本実施例に係るシミュレーション方法は、実施例1に加えてさらに実行順序推定部6及び実行順序検証部7による処理が行われる。実行順序推定部6及び実行順序検証部7は、例えばホスト環境100に搭載された機能部である。
【0057】
実行順序推定部6には、ターゲット実行時間20と機器割り当て情報50と周期情報60と、が入力され、推定実行順序61が出力される。実行順序検証部7は、ホスト環境100上でソフトウェアを実行した際の実行結果と推定実行順序61と、が入力され、ソフトウェアがホスト環境100上で正しく実行されたかを検証する。
【0058】
<周期情報>
図15は本発明における周期情報60の例を示した図である。周期情報60は、例えばホスト環境100内に格納されている。
周期情報60は、それぞれのソフトウェアの実行周期の情報を示している。例えばソフトウェアAは、50ms毎に1回実行される。
【0059】
<実行順序推定部>
図16は本発明における実行順序推定部6の処理フロー概要を示した図である。
実行順序推定部6は、ステップS61において、機器割り当て情報50を取得する。
ステップS62において、ターゲット上実行時間推定部4から推定実行時間40を取得する。
ステップS63において、ターゲット実行時間取得部2からターゲット実行時間20を取得する。
ステップS64において、周期情報60を取得する。
【0060】
ステップS65において、スケジューリングを行い、ソフトウェア群の実行順序を推定する。スケジューリングアルゴリズムは、ラウンドロビン方式やレートモノトニックスケジューリング方式など公知のアルゴリズムを用いる。
ステップS66において、ステップS65で推定した実行順序を推定実行順序61として出力する。
このような手順で実行順序推定部6は推定実行順序61を取得・出力する。
【0061】
<実行順序検証部>
図17は本発明における実行順序検証部7が行う処理フローの概要を示した図である。
実行順序検証部7は、ステップS71において、実行順序推定部6から推定実行順序61を取得する。
ステップS72において、ホスト環境100上でソフトウェア群を実行した際に計測された計測実行順序を取得する。
【0062】
ステップS73において、推定実行順序61と計測実行順序が同一であるかを判定し、推定実行順序61と計測実行順序が同一である場合は処理を終了し、推定実行順序61と計測実行順序が同一でない場合はステップS74に進む。
【0063】
ステップS74において、ソフトウェアが正しく実行できなかった可能性があることを出力する。例えばホスト環境100において、今回実行したソフトウェア群以外のソフトウェアが割り込みを行ったため、実行順序が崩れることが考えられる。このような手順で実行順序検証部7は実行順序を評価する。
【0064】
上述のように、実施例3におけるシミュレーション方法によれば、ターゲット環境110で実行した際のソフトウェア群の実行順序を推定し、ホスト環境100でソフトウェア群を実際に実行した際の実行順序と比較を行う。ホスト環境100で実行する際に、ターゲット環境110での実行時間を再現しているため、別のソフトウェアの割り込みなどがなければ同じ実行順序となる。そのため、推定した実行順序と実行した実行順序を比較することにより、実行結果が、想定したソフトウェア群のみによるものかどうかを判定することが可能となる。
【0065】
[実施例4]
本発明の実施例4におけるシミュレーション方法について説明する。
実施例4は、実施例3において追加の処理を行う実施例であり、実施例3と異なる点は、さらに仕様評価部8及び機能割り当て部9による処理が行われる点である。仕様評価部8及び機能割り当て部9は、例えばホスト環境100に搭載された機能部である。仕様評価部8は、推定実行時間40と機器割り当て情報50と周期情報60とソフトウェア仕様書80と推定実行順序61と、から、ソフトウェア群の実行が仕様を満たしているかを判定する。機能割り当て部9は、ソフトウェア群の実行が仕様を満たしていない場合に、ソフトウェアの割り当てを実行する。なお、実施例3と同様の構成については、同一の符号を付してその説明を省略する。
【0066】
<シミュレーション方法の概要>
図18は実施例4におけるシミュレーション方法の概要を示した図である。
仕様評価部8には、例えば推定実行時間40と機器割り当て情報50と周期情報60とソフトウェア仕様書80と推定実行順序61と、が入力される。ソフトウェア仕様書80は、例えばホスト環境100に搭載されていてもよいし、外部から手動で入力することによって与えてもよい。
【0067】
<ソフトウェア仕様書>
図19は本発明におけるソフトウェア仕様書80の例を示した図である。
例えば、ソフトウェアAの実行を開始してからソフトウェアDの実行が完了するまでに要する時間が100ms以下であるという仕様や、CPU負荷が90%未満であるという仕様が記載されている。
【0068】
<仕様評価部>
図20は本発明における仕様評価部8の処理フロー概要を示した図である。
仕様評価部8は、ステップS81において、ターゲット上実行時間推定部4から推定実行時間40を取得する。
ステップS82において、機器割り当て情報50を取得する。
ステップS83において、周期情報60を取得する。
ステップS84において、ソフトウェア仕様書80を取得する。
ステップS85において、実行順序推定部6から推定実行順序61を取得する。
【0069】
また仕様評価部8は、ステップS86において、ハイパーピリオドを算出する。ハイパーピリオドとは、それぞれの機器において動作しているソフトウェアの実行周期の最小公倍数のことを言う。それぞれの機器において動作しているソフトウェアは機器割り当て情報50(
図10参照)に基づいてわかる。また、周期情報60(
図15参照)に基づき、それぞれの機器において動作しているソフトウェアの実行周期がわかる。すなわち、例えば
図10に基づくと、マイコンAで動作しているソフトウェアはソフトウェアAとソフトウェアCである。
図15に基づくと、ソフトウェアAは50ms周期でソフトウェアCは100ms周期であるため、この最小公倍数である100msがハイパーピリオドとなる。
【0070】
ステップS87において、ソフトウェアの実行に関する仕様が存在しているかを判定し、仕様が存在している場合にはステップS88に進み、仕様が存在しない場合は処理を終了する。
ステップS88において、CPU利用率を算出する。CPU利用率はΣ{(推定実行時間/実行周期)*100}で算出することができる。
【0071】
ステップS89において、ソフトウェアの実行が仕様を満たしているかを判定し、仕様を満たしている場合はステップS8Cに進み、仕様を満たしていない場合はステップS8Aに進む。例えば
図19のCPU利用率に関して判定する場合、ステップS88で求めたCPU利用率が90%未満であるかを判定すればよい。レイテンシ制約に関して判定する場合、推定実行順序61と推定実行時間40から実行が完了するまでの時間が算出できるため、その時間が仕様を満たしているかを判定すればよい。
【0072】
ステップS89で仕様を満たしていないと判定された場合、ステップS8Aにおいて、機能割り当て部9で機能の割り当てを行う。この機能の割り当てについては
図21を用いて後述する。
ステップS8Bにおいて、機能の割り当てを行った結果、仕様を満たす割り当てが存在するかを判定し、仕様を満たす割り当てが存在する場合はステップS8Cに進み、仕様を満たす割り当てが存在しない場合はステップS8Dに進む。
【0073】
ステップS8Cにおいて、次の仕様に処理を移し、ステップS87に戻り前記処理を継続する。
ステップS8Dにおいて、割り当てエラーを出力する。機能の割り当てによっては仕様を満たすことができないため、例えばソフトウェアの再開発や仕様する機器の見直しが必要となる。
このような手順で仕様評価部8は仕様を満たしているかを判定し、仕様を満たしていない場合は機能割り当てを試みる。機能割り当てを実行しても仕様を満たさない場合は割り当てエラーを出力する。
【0074】
<機能割り当て部>
図21は本発明における機能割り当て部9が行う処理フローの概要を示した図である。
機能割り当て部9は、ステップS91において、実行していない組み合わせが存在するかを判定し、実行していない組み合わせが存在する場合はステップS92に進み、実行していない組み合わせが存在しない場合は処理を終了する。なお、本実施例における組み合わせとは、機器割り当て情報50に記載されているソフトウェアと機器の組み合わせのことである。すなわち、
図10に示す、ソフトウェアと、当該ソフトウェアを実行する機器との組み合わせのことである。
【0075】
ステップS92において、新しい組み合わせにおけるスケジューリング、すなわちソフトウェアを実行する順序の設定を行う。
ステップS93において、新しい組み合わせによるソフトウェアの実行が仕様を満たしているかを判定し、仕様を満たしている場合はステップS94に進み、仕様を満たしていない場合はステップS91に戻る。
ステップS94において、仕様を満たした割り当て情報を保存する。
このような手順で機能割り当て部9は、仕様を満たす機能割り当てが存在するかを判定する。
【0076】
実施例4におけるシミュレーション方法によれば、新規ソフトウェア12を含むソフトウェア群の実行が仕様を満たしているかを判定し、満たしていない場合においても機能の割り当てによって仕様を満たすことができるかを判定することが可能となる。
【0077】
以上、実施例1から実施例4に関して説明したが、これらの内2つ以上の実施例を組み合わせてシミュレーションを行ってもよい。
【0078】
<各実施例の作用効果のまとめ>
実施例1におけるシミュレーション方法によれば、ホスト環境100で新規ソフトウェア12を実行した際の新規ソフトウェアホスト特徴量13を実行時間推定モデル30に入力することで、新規ソフトウェア12をターゲット環境110に移植することなく、新規ソフトウェア12をターゲット環境110上で実行した際の最悪実行時間を推定することができる。そして、推定実行時間40に基づいてホスト環境100上で新規ソフトウェア12を実行することで、高精度にターゲット環境110を模擬して検証できるため、ホスト環境100で開発しているソフトウェアをシームレスにターゲット環境110へ移植することが可能となる。
【0079】
実施例2におけるシミュレーション方法によれば、ホスト環境100で新規ソフトウェア12を実行する際に、機器間調整係数に基づいてターゲット環境110上で実行した際の通信タイミングとなるように調整することで、ソフトウェアを実行する際のデータの生成タイミングを再現することが可能となる。
【0080】
実施例3におけるシミュレーション方法によれば、ホスト環境100で新規ソフトウェア12を含むソフトウェア群を実行する際に、ターゲット環境110での実行時間を再現しているため、別のソフトウェアの割り込みなどがなければ同じ実行順序となる。そのため、推定した実行順序と実行した実行順序を比較することにより、ホスト環境100上での実行結果が、実行しているソフトウェア以外の影響を受けたかどうかを判定することが可能となる。
【0081】
実施例4におけるシミュレーション方法によれば、新規ソフトウェア12を含むソフトウェア群の実行が仕様を満たしているかを判定し、満たしていない場合においても機能の割り当てによって仕様を満たすことができるかを判定することが可能となる。
【0082】
以上で説明した本発明の実施例によれば、以下の作用効果を奏する。
(1)本発明の一実施例に係るシミュレーション方法は、第1のソフトウェアをホスト環境上において実行することによって得られる第1のホスト特徴量を抽出し、第1のソフトウェアをターゲット環境上において実行することによって、ターゲット環境上において第1のソフトウェアを実行するのに要するターゲット実行時間を算出し、第1のホスト特徴量とターゲット実行時間とに基づいて、ホスト環境とターゲット環境との性能差を算出し、第2のソフトウェアをホスト環境上において実行することによって得られる第2のホスト特徴量を抽出し、第2のホスト特徴量と性能差とに基づいて、第2のソフトウェアをターゲット環境上で実行するのに要する時間を推定する。
【0083】
上記構成により、ソフトウェアを開発するホスト環境上で高精度にターゲット環境が再現される。すなわち、ホスト環境上にターゲット環境が模擬されることになる。従って、実際にターゲット環境にソフトウェアを移植しなくても、ターゲット環境上においてソフトウェアが正常に実行できるか否かを検証することが可能になり、ソフトウェアの開発効率が向上する。
【0084】
(2)推定した時間に基づいて、前記ホスト環境上において前記第2のソフトウェアを実行する実行時間を調整する。これにより、ホスト環境とターゲット環境との性能差を補填することが可能になり、より高精度にターゲット環境を模擬できる。
【0085】
(3)ターゲット環境上におけるデータの送受信タイミングに関する機器間調整係数を取得し、前記ホスト環境上において第2のソフトウェアを実行する際に、前記機器間調整係数に基づいて、データの送受信タイミングを調整する。これにより、ホスト環境上で新規ソフトウェア12を実行する際に、機器間調整係数に基づいてターゲット環境上で実行した際の通信タイミングとなるように調整することが可能になるため、ソフトウェアを実行する際のデータの生成タイミングを同期させることが可能になる。
【0086】
(4)前記ターゲット実行時間と、前記第2のソフトウェアに関して推定した前記ターゲット環境上における実行時間と、前記第1のソフトウェア及び前記第2のソフトウェアそれぞれの周期情報と、に基づいて、ターゲット環境上における前記第1のソフトウェアと前記第2のソフトウェアの実行順序を推定する。これにより、新規ソフトウェアを含むソフトウェア群をターゲット環境上において実行した際の実行順序が推定され、当該実行順序に従ってソフトウェア群を実行した際の実行結果を予測することが可能になる。
【0087】
(5)推定した実行順序と、前記ホスト環境上において前記第1のソフトウェア及び前記第2のソフトウェアを実行した際の実行順序とを比較することで、前記ホスト環境上で前記第2のソフトウェアが正しく実行できたかを検証する。これにより、ホスト環境上に他のソフトウェアによる割込み処理が発生する等、推定した実行順序による新規ソフトウェアの実行が正しく行われない場合等を評価できるため、実行順序を再設定すること等が可能になる。
【0088】
(6)第1のソフトウェア及び第2のソフトウェアを実行可能な機器が複数存在し、推定した実行順序による前記第1のソフトウェア及び前記第2のソフトウェアの実行と、予め定められた仕様とを比較し、当該実行順序によるソフトウェアの実行が前記仕様を満たさない場合には、前記第1のソフトウェアまたは前記第2のソフトウェアの少なくとも一方を実行する機器を変更する。これにより、新規ソフトウェア12を含むソフトウェア群の実行が仕様を満たしているかを判定し、満たしていない場合においても、機能の再割り当てを行うことによって仕様を満たすことができるか否かを判定することが可能となる。
【0089】
(7)第1のホスト特徴量及び第2のホスト特徴量は少なくともソフトウェアの実行時間を含む。これにより、ホスト環境とターゲット環境との性能差を、ソフトウェアの実行時間を用いて算出することが可能になり、ソフトウェアを開発するホスト環境上においてより高精度にターゲット環境を再現することが可能になる。
【0090】
なお、本発明は、上記の実施例に限定されるものではなく、様々な変形が可能である。例えば、上記の実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、本発明は、必ずしも説明した全ての構成を備える態様に限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能である。また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、削除したり、他の構成を追加・置換したりすることが可能である。
【符号の説明】
【0091】
1 ホスト特徴量取得部、2 ターゲット実行時間取得部、3 実行時間推定モデル作成部、4 ターゲット上実行時間推定部、5 ソフトウェア実行管理部、6 実行順序推定部、7 実行順序検証部、8 仕様評価部、9 機能割り当て部、10 既存ソフトウェア(第1のソフトウェア)、11 ホスト特徴量(第1の特徴量)、12 新規ソフトウェア(第2のソフトウェア)、13 新規ソフトウェアホスト特徴量(第2の特徴量)、20 ターゲット実行時間、30 実行時間推定モデル、40 推定実行時間、50 機器割り当て情報、51 データフロー情報、52 機器間調整係数情報、60 周期情報、61 推定実行順序、80 ソフトウェア仕様書、100 ホスト環境、110 ターゲット環境