(57)【特許請求の範囲】
【請求項１】
制御システムの性能を検証するためのソースコードを生成するための性能検証装置であって、
表示装置と、
演算装置とを備え、
前記演算装置は、
前記表示装置に表示される制御システムのモデルから、マルチコアプロセッサにおいて実行されるプログラムのシミュレーションの対象となるコード生成範囲を選択するための選択手段と、
前記コード生成範囲に含まれる複数の処理のうち、並列処理の対象となる複数の並列実行単位の指定を受け付けるための指定手段と、
各前記並列実行単位と当該マルチコアプロセッサに含まれる各コアとの関連付けを行なうための割当手段と、
前記関連付けが行なわれた各前記並列実行単位の実行順序とコア間同期とを指定するための実行順序指定手段と、
各前記並列実行単位と前記実行順序とに基づいて、前記マルチコアプロセッサによる実行の対象となるソースコードを生成するための生成手段と、
前記生成されたソースコードをマルチコアプロセッサにおいて実行し、モデルシミュレータにおいて実行するプラントモデルと連携シミュレーションを行うための通信手段と、
前記連携シミュレーションにおいて、マルチコアプロセッサにおいて実行されるプログラムの実行時間を計測するための測定手段とを含む、性能検証装置。
【請求項２】
前記ソースコードは、各コアの識別情報と、各コアによる処理の対象として当該コアに関連付けられた処理ブロックとを含む、請求項１に記載の性能検証装置。
【請求項３】
前記生成手段は、各前記コアに共通なソースコードを生成する、請求項１または２に記載の性能検証装置。
【請求項４】
前記マルチコアプロセッサと通信するための入出力装置をさらに備え、
前記表示装置は、前記マルチコアプロセッサによる前記ソースコードの実行結果を表示する、請求項１または２に記載の性能検証装置。
【請求項５】
前記指定手段は、前記複数の処理のうち依存関係にある２つ以上の処理を並列処理の対象から除外するように構成されている、請求項１または２に記載の性能検証装置。
【請求項６】
制御システムの性能を検証するためのシステムであって、
請求項１または２に記載の装置と、
マルチコアプロセッサとを備え、
前記装置は、生成されたソースコードを前記マルチコアプロセッサに出力するための出力部を備え、
前記ソースコードは、前記マルチコアプロセッサに含まれる各前記コアに入力される、システム。
【請求項７】
コンピュータが、制御システムの性能を検証するためのソースコードを生成するための方法であって、
制御システムのモデルから、マルチコアプロセッサにおいて実行されるプログラムのシミュレーションの対象となるコード生成範囲の選択を受け付けるステップと、
前記コード生成範囲に含まれる複数の処理のうち、並列処理の対象となる複数の並列実行単位の指定を受け付けるステップと、
各前記並列実行単位と当該マルチコアプロセッサに含まれる各コアとの関連付けを行なうステップと、
前記関連付けが行なわれた各前記並列実行単位の実行順序とコア間同期とを指定するステップと、
各前記並列実行単位と前記実行順序とに基づいて、前記マルチコアプロセッサによる実行の対象となるソースコードを生成するステップと、
前記生成されたソースコードをマルチコアプロセッサにおいて実行し、モデルシミュレータにおいて実行するプラントモデルと連携シミュレーションを行うために通信するステップと、
前記連携シミュレーションにおいて、マルチコアプロセッサにおいて実行されるプログラムの実行時間を計測するステップとを含む、方法。
【請求項８】
前記ソースコードは、各コアの識別情報と、各コアによる処理の対象として当該コアに関連付けられた処理ブロックとを含む、請求項７に記載の方法。
【請求項９】
前記ソースコードを生成するステップは、各前記コアに共通なソースコードを生成するステップを含む、請求項７または８に記載の方法。
【請求項１０】
前記マルチコアプロセッサと通信するステップと、
前記マルチコアプロセッサによる前記ソースコードの実行結果を表示するステップとをさらに備える、請求項７または８に記載の方法。
【請求項１１】
前記指定するステップは、前記複数の処理のうち依存関係にある２つ以上の処理を並列処理の対象から除外するステップを含む、請求項７または８に記載の方法。
【請求項１２】
コンピュータに、制御システムの性能を検証するためのソースコードを生成するための方法を実行させるためのプログラムであって、前記プログラムは前記コンピュータに、
制御システムのモデルから、マルチコアプロセッサにおいて実行されるプログラムのシミュレーションの対象となるコード生成範囲の選択を受け付けるステップと、
前記コード生成範囲に含まれる複数の処理のうち、並列処理の対象となる複数の並列実行単位の指定を受け付けるステップと、
各前記並列実行単位と当該マルチコアプロセッサに含まれる各コアとの関連付けを行なうステップと、
前記関連付けが行なわれた各前記並列実行単位の実行順序とコア間同期とを指定するステップと、
各前記並列実行単位と前記実行順序とに基づいて、前記マルチコアプロセッサによる実行の対象となるソースコードを生成するステップと、
前記生成されたソースコードをマルチコアプロセッサにおいて実行し、モデルシミュレータにおいて実行するプラントモデルと連携シミュレーションを行うために通信するステップと、
前記連携シミュレーションにおいて、マルチコアプロセッサにおいて実行されるプログラムの実行時間を計測するステップとを実行させる、プログラム。
【請求項１３】
前記ソースコードは、各コアの識別情報と、各コアによる処理の対象として当該コアに関連付けられた処理ブロックとを含む、請求項１２に記載のプログラム。
【請求項１４】
前記ソースコードを生成するステップは、各前記コアに共通なソースコードを生成するステップを含む、請求項１２または１３に記載のプログラム。
【請求項１５】
前記マルチコアプロセッサと通信するステップと、
前記マルチコアプロセッサによる前記ソースコードの実行結果を表示するステップとをさらに実行させる、請求項１２または１３に記載のプログラム。
【請求項１６】
前記指定するステップは、前記複数の処理のうち依存関係にある２つ以上の処理を並列処理の対象から除外するステップを含む、請求項１２または１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラムの性能を検証する技術に関し、より特定的には、マルチコアプロセッサ上で実行されるプログラムの性能を検証する技術に関する。
【背景技術】
【０００２】
自動車制御、信号処理等で利用されるＭＢＤ（Model  Based  Design）ツールは、上位の設計階層から下位のＥＣＵ（Electronic  Control  Unit）実装階層まで用いることができ、上位から順にＭＩL（Model  In  the  Loop）シミュレーション、ＳＩＬ（Software  In  the  Loop）シミュレーションが制御アルゴリズムのテストのために用いられる。さらにマイコン量産コードのテストではPILシミュレーションと呼ばれる環境があり、ＭＢＤ（Model  Based  Design）ツールを使用したＰＩＬ（Processor  In  the  Loop）シミュレーション環境では、シングルコアプロセッサ用に生成されたプログラムコードの機能検証が行われる。例えば、特許文献１（特開２００３−１７３２５６号公報）や特許文献２（特開２０１１−１５４５２１号公報）は、モデルベース開発手法を用いてプログラムコードを生成する方法や性能予測を行うシステムを開示している。
【０００３】
ＰＩＬシミュレーション環境では、制御対象やコントローラの振る舞いを数式的に表現したSimulinkモデルと、マイコンやマイコンシミュレータとを連係させて、シミュレーションすることができる。たとえば、ルネサスエレクトロニクス社の、Simulinkモデルとの連携シミュレーションのための組込みツールチェーン“ECPILS”、スパンションイノベイツ社の“SOFTUNE”などはＰＩＬシミュレーション環境の製品例である。
【０００４】
ECPILSでは、エミュレータを介したマイコン評価ボードと、Mathworks社により提供される、ＰＣ（Personal  Computer）上で動作するMATLAB/Simulinkモデルシミュレーション環境が通信して、ＰＩＬシミュレーションを実現している。また、マイコン評価ボードに代えて、ＰＣ上で動作するマイコンシミュレータと、前述のモデルシミュレーション環境が通信して連係シミュレーションすることもできる。
【０００５】
すなわち、ＰＩＬシミュレーション環境では、コントローラと呼ばれる制御器のモデルから自動生成されるＣソースコードをマイコンまたはマイコンシミュレータで実行し、プラントと呼ばれる制御対象物のモデルの振る舞いを設計者の意図通りに制御できるか、シミュレーションにより検証することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１７３２５６号公報
【特許文献２】特開２０１１−１５４５２１号公報
【特許文献３】特開２０１４−１０２７３４号公報
【非特許文献】
【０００７】
【非特許文献１】Automatic parallelization of simulink applications, Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization, 2010.04.28, pages: 151-159
【非特許文献２】ハードリアルタイム処理向けマルチコアタスク配置の評価関数設計、情報処理学会研究報告、2011-SLDM-149(16), 1-6, 2011-03-11
【非特許文献３】制御システムのマルチ・メニーコアプロセッサ実装、公益社団法人計測自動制御学会学会誌「計測と制御」53(12), 1111-1116, 2014-12
【発明の概要】
【発明が解決しようとする課題】
【０００８】
近年、自動車制御等では、厳しい省エネ燃費基準や排出ガス規制の基準強化など、制御の高度化により演算量も大きく増加している。そのため、エンジンルームなどの高温動作環境下においても高い演算処理能力が期待される一方、高温環境でのマイコン動作周波数の向上余地はそれほどない。マイコンは車両に搭載されるため、消費電力は小さいほど電力供給が少なくなるため望ましく、部品点数が削減されると車両重量の増加を抑制できるので、燃費の向上にも寄与できる。そのため、実現可能な動作周波数と低消費電力のＣＰＵ（Central  Processing  Unit）コアを複数搭載したマルチコアマイコンを使用して、制御処理を制御するための開発環境が必要とされている。
【０００９】
基本的な制御方式のひとつであるフィードバック制御または閉ループ制御においては、センサからの値と目標値を制御器（以下、コントローラと呼ぶ）に入力して、アクチュエータに制御値を出力して対象を制御する。
【００１０】
閉ループ制御は自動車制御においても広く使用されている。特に、たとえばエンジン制御等の数十マイクロ秒〜数ミリ秒といった非常に短い制御周期を基本として設計するシステムでは、コントローラが、各種基準を満たすように設計された制御周期時間を超過せずに、操作量を決定し、アクチュエータへ出力できるように、当該コントローラのプログラムを作成しなければならない。そのため、自動車制御をマルチコアマイコンで実現する場合には、マルチコアに特有の事象、たとえば、コア間の通信オーバーヘッド、データ・バス上のコンフリクトによる遅延等を含めた正確な実行時間を取得する必要がある。
【００１１】
特許文献１〜２に開示されている従来技術は、シングルコアプロセッサが用いられる場合におけるモデルベース開発の技術である。一方、特許文献３に開示されている従来技術は、コントローラのプログラムを構成する複数のタスクに対し、各タスクをシングルコアで実行して実行時間を算出し、マルチコアのうちのいずれかのコアに各タスクを割り当てる時間と、その割り当てにおける処理時間を見積もる技術である。
【００１２】
すなわち、従来技術は、いずれもシングルコアマイコンとの連係におけるシミュレーションを実現しているだけで、マルチコアで動作する並列プログラムに対してＰＩＬシミュレーションを提供しているものは存在しない。これは、ひとつには、Ｎ個のコアから構成されるマルチコアマイコンで実行されるＮ個のプログラムと、ＰＣ上で動作するSimulinkなどのモデルシミュレータとを連係してシミュレーションするためには、複雑な制御手順が必要で、このような制御手順は、設計時に求められるシミュレーション速度と両立しないと考えられてきたからである。
【００１３】
そのため、従来技術のシングルコアマイコンのＰＩＬシミュレーション環境では、モデル設計されたコントローラによって生成されたコードを、複数のＣＰＵコアに分割し、分割による通信オーバーヘッド等の影響を含めて評価して、コントローラプログラムを構成する各タスクのコアへの配分を計画することができなかった。
【００１４】
コアへの配分を計画するための開発環境が実現されれば、前述のような非常に短い制御周期で設計される、リアルタイム性が著しく高い自動車制御システムにおいて、所定周期内にマイコンで演算できない過渡状態などを検出することができる。したがって、その検出結果に応じて、前回の周期中の制御値によるアクチュエータの制御や、当該演算処理機能をハードウェア化することによる制御速度の向上を検討するべきことをシステム設計の前段工程で確認するための技術が必要とされている。
【００１５】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、制御モデルから、複数コアに割り当てられたコントローラプログラムを生成できる性能検証装置を提供することである。他の局面における目的は、制御モデルから、複数コアに割り当てられたコントローラプログラムを用いてモデルの性能を検証できるシステムを提供することである。他の局面における目的は、複数コアに割り当てられたコントローラプログラムを生成するための方法を提供することである。さらに他の局面における目的は、複数コアに割り当てられたコントローラプログラムを生成するための方法をコンピュータに実行させるためのプログラムを提供することである。
【課題を解決するための手段】
【００１６】
一実施の形態に従うと、制御システムの性能を検証するためのソースコードを生成するための性能検証装置が提供される。この性能検証装置は、表示装置と、演算装置とを備える。演算装置は、表示装置に表示される制御システムのモデルから、マルチコアプロセッサにおいて実行されるプログラムのシミュレーションの対象となるコード生成範囲を選択するための選択手段と、コード生成範囲に含まれる複数の処理のうち、並列処理の対象となる複数の並列実行単位の指定を受け付けるための指定手段と、各並列実行単位と当該マルチコアプロセッサに含まれる各コアとの関連付けを行なうための割当手段と、関連付けが行なわれた各並列実行単位の実行順序とコア間同期とを指定するための実行順序指定手段と、各並列実行単位と実行順序とに基づいて、マルチコアプロセッサによる実行の対象となるソースコードを生成するための生成手段と、生成コードをマルチコアプロセッサにおいて実行し、モデルシミュレータにおいて実行するプラントモデルと連携シミュレーションを行うための通信手段と、連携シミュレーションにおいて、マルチコアプロセッサにおいて実行されるプログラムの実行時間を計測するための測定手段とを含む。
【００１７】
ある局面において、前回の周期中の制御値によるアクチュエータの制御や、当該演算処理機能をハードウェア化することによる制御速度の向上を検討するべきことをシステム設計の前段工程で確認することができる。
【００１８】
この発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１９】
【図１】システム設計の流れを表わす図である。
【図２】システム設計が行なわれる処理の流れを表わすフローチャートである。
【図３】システムモデル３００の概要を表す図である。
【図４】当該装置として機能するコンピュータ４００のハードウェア構成を表わすブロック図である。
【図５】性能検証装置５００によって実現される機能の構成を表わすブロック図である。
【図６】モデルからサブシステムを選択する態様を表わす図である。
【図７】サブシステム６９０をコード生成範囲７１０として置き換えた状態を表わす図である。
【図８】並列化単位を選択する場合における画面の表示状態を表わす図である。
【図９】並列化単位として指定された各ブロックとその他のブロックとの関係を表わす図である。
【図１０】並列化単位毎にコア割当を指定するための画面を表わしている（手順３）。
【図１１】コア割当が行なわれた並列化単位のマルチコア実行とＰＩＬシミュレーション用コードの生成のための画面を表わしている（手順４）。
【図１２】手順４の処理（５）で生成される並列化コードの一例を表す図である。
【図１３】モニタ８が示す状態を表わす図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２１】
図１を参照して、システム設計の概要について説明する。図１は、システム設計の流れを表わす図である。
【００２２】
フェーズ１００において、システム設計が行なわれる。システム設計は、モデリング、モデルシミュレーション、自動コード生成（ＡＣＧ：Auto  Code  Generation）などを含む。フェーズ１００では、たとえば、ＭＩＬシミュレーションあるいはＰＩＬシミュレーションが行なわれる。ＭＩＬシミュレーションでは、制御のモデリングのため、制御対象およびコントローラのシミュレーションは、ＰＣ上で作動するモデルシミュレータ（たとえば、ＭＡＴＬＡＢ）において実行される。この場合、詳細度や精度が重視され、シミュレーション自体は高速で実行される。しかしながら、プラント及びコントローラの制御サイクルの実行時間はシミュレーションされない。ＳＩＬシミュレーションでは、モデルから生成されたコードベースで制御が成立するか否かが確認される。たとえば、コントローラモデルから生成されたコードは、ＰＣで実行され、上記モデルシミュレータとの連携の下でシミュレーションが実行される。このＳＩＬシミュレーションでは、ソフトウェアとしての動作あるいは処理の規模が確認される。
【００２３】
フェーズ１１０において、システム詳細設計／開発が行なわれる。たとえば、周辺シミュレーション、高精度シミュレーション、コーディング／デバッグ、単体テストなどが行なわれる。フェーズ１１０では、ＰＩＬシミュレーション環境におけるシミュレーションが行なわれる。たとえば、コントローラモデルから生成されたコードがマイコンにおいて実行され、モデルシミュレータとの連携シミュレーションが実行される。このシミュレーション自体の速度は遅いが、マイコンの処理量が把握され得る。
【００２４】
フェーズ１２０において、システム検証とシステムシミュレーションとが行なわれる。システム検証は、たとえば、実機テストとパラメータチューニングなどを含み得る。
【００２５】
図２を参照して、本実施の形態に係る性能評価システムの制御構造について説明する。図２は、システム設計が行なわれる処理の流れを表わすフローチャートである。ある局面において、性能評価システムは、性能評価装置として作動するコンピュータと、当該性能評価装置から作成されるソースコードを実行するマルチコアプロセッサとを備える。
【００２６】
ステップＳ２１０にて、制御モデルが生成される（モデリング）。画面２１１に示されるように、ＰＥが割り当てられる前のブロック線図がモデルとして表示される。
【００２７】
ステップＳ２２０にて、シミュレーションが行なわれる。たとえば、ＭＩＬＳ機能検証が行なわれる。
【００２８】
ステップＳ２３０にて、ＰＥ割当ブロックが挿入される。画面２１２に示されるように、ブロックと、当該ブロックに割り当てられたＰＥとが、ブロック線図に表示される。
【００２９】
ステップＳ２４０にて、マルチコアコードが生成される。
ステップＳ２５０にて、マルチコア連携シミュレーションが実行される。たとえば、コア割当プランニングが行なわれる。より具体的には、ＳＩＬＳ機能検証、ＳＩＬＳ性能検証、ＰＩＬＳ機能検証、ＰＩＬＳ性能検証などが行なわれる。
【００３０】
ステップＳ２６０にて、制御周期時間で演算できているか否かが判断される。制御周期時間内で演算ができている場合には（ステップＳ２６０にてＹＥＳ）、処理を終了する。そうでない場合には（ステップＳ２６０にてＮＯ）、処理はステップＳ２１０に戻されるか、ステップ２３０に戻され、異なる割当てが行われる。
【００３１】
［システムモデルの概要］
図３を参照して、本実施の形態に係るシステムモデル３００について説明する。図３は、システムモデル３００の概要を表す図である。
【００３２】
システムモデル３００は、センサ３１０と、コントローラモデル３２０と、アクチュエータ３３０とを備える。コントローラモデル３２０は、第１ブロック３２１と、第２ブロック３２２と、第ｎブロック３２３とを含む。第１ブロック３２１と第２ブロック３２２とは、それぞれＰＥ３２４に関連付けられている。第ｎブロック３２３は、ＰＥ３２５に関連付けられている。センサ３１０の出力は、コントローラモデル３２０に入力される。コントローラモデル３２０の出力は、アクチュエータ３３０に入力される。アクチュエータ３３０の出力は、センサ３１０にフィードバックされる。
【００３３】
図３では、センサ３１０とアクチュエータ３３０とが制御対象であり、プラントモデルとしてＰＣ上のモデルシミュレータでシミュレーションされる。コントローラモデル３２０は、制御設計初期の機能モデリング工程では、ＰＣ上のモデルシミュレータでシミュレーションされる。コントローラモデル３２０は、ＭＢＤ開発環境で提供されるコーダと呼ばれるツールによって、モデルと同等の振る舞いのソースプログラムに変換することができる。当該ソースプログラムは、ＳＩＬシミュレーションの検証に使用できる。さらに、コントローラモデル３２０は、マイコン向けのソースプログラムにも変換することができ、ＰＩＬシミュレーションの検証に使用することができる。
【００３４】
本実施の形態において、制御周期は、センサ３１０への入力からアクチュエータ３３０に対して制御値が出力されるまでの期間をいう。この場合、コントローラモデル３２０に対するコードは、ＰＥ３２４およびＰＥ３２５にそれぞれ与えられる。たとえば、ＰＥ３２４は、コントローラモデル３２０に入力されたコードのうちから第１ブロック３２１および第２ブロック３２２を検知すると、これらのブロックに含まれる命令を実行する。その他のブロックを検知しても、ＰＥ３２４は、自身に関連付けられないことを確認すると、何も処理を実行しない。
【００３５】
同様に、ＰＥ３２５は、第１ブロック３２１および第２ブロック３２２を検知しても、自身に関連付けられていないブロックであることを確認すると、これらのブロックに含まれる命令を実行しない。その後、第ｎブロック３２３を検出すると、ＰＥ３２５は、第ｎブロック３２３に含まれる命令を実行する。
【００３６】
通信３４０，３４３は、プラントマイコン間通信に相当する。通信３４１，３４２は、マイコン内交換通信に相当する。
【００３７】
図４を参照して、本実施の形態に係る装置の構成について説明する。図４は、当該装置４００のハードウェア構成を表わすブロック図である。装置４００は、コンピュータ４１０、デバッグエミュレータ４２０、およびマイコン評価ボード４３０から構成される。マイコン評価ボード４３０は、マルチコアプロセッサ１０と、通信ＩＦ（Interface）１７とを含む。
【００３８】
デバッグエミュレータ４２０は、コンピュータ４１０に接続されて、マイコン評価ボード４３０に搭載されたマルチコアプロセッサと通信し、マイコンの実行を制御して、実行結果を取得するための装置である。デバッグエミュレータ４２０は、マイコンを用いた制御システム開発では一般的に使用されている。したがって、詳細な説明は繰り返さない。
【００３９】
コンピュータ４１０は、主たる構成要素として、プログラムを実行するＣＰＵ１と、コンピュータ４１０のユーザによる指示の入力を受けるマウス２およびキーボード３と、ＣＰＵ１によるプログラムの実行により生成されたデータ、又はマウス２若しくはキーボード３を介して入力されたデータを揮発的に格納するＲＡＭ（Random  Access  Memory）４と、データを不揮発的に格納するハードディスク５と、光ディスク駆動装置６と、通信ＩＦ（Interface）７と、モニタ８とを備える。各構成要素は、相互にバスによって接続されている。光ディスク駆動装置６には、ＣＤ−ＲＯＭ９その他の光ディスクが装着される。通信ＩＦ７は、ＵＳＢ（Universal  Serial  Bus）インターフェイス、有線ＬＡＮ（Local  Area  Network）、無線ＬＡＮ、Bluetooth（登録商標）インターフェイス等を含むが、これらに限られない。
【００４０】
コンピュータ４１０における処理は、各ハードウェアおよびＣＰＵ１により実行されるソフトウェアによって実現される。このようなソフトウェアは、ハードディスク５に予め格納されている場合がある。また、ソフトウェアは、ＣＤ−ＲＯＭ９その他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置６その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信ＩＦ７を介してダウンロードされた後、ハードディスク５に一旦格納される。そのソフトウェアは、ＣＰＵ１によってハードディスク５から読み出され、実行可能なプログラムの形式でＲＡＭ４に格納される。ＣＰＵ１は、そのプログラムを実行する。
【００４１】
図４に示されるコンピュータ４１０を構成する各構成要素は、一般的なものである。したがって、本実施の形態に係る最も本質的な部分は、コンピュータ４１０に格納されたプログラムであるともいえる。コンピュータ４１０の各ハードウェアの動作は周知であるので、詳細な説明は繰り返さない。
【００４２】
なお、データ記録媒体としては、ＣＤ−ＲＯＭ、ＦＤ（Flexible  Disk）、ハードディスクに限られず、磁気テープ、カセットテープ、光ディスク（ＭＯ（Magnetic  Optical  Disc）／ＭＤ（Mini  Disc）／ＤＶＤ（Digital  Versatile  Disc））、ＩＣ（Integrated  Circuit）カード（メモリカードを含む）、光カード、マスクＲＯＭ、ＥＰＲＯＭ（Electronically  Programmable  Read-Only  Memory）、ＥＥＰＲＯＭ（Electronically  Erasable  Programmable  Read-Only  Memory）、フラッシュＲＯＭなどの半導体メモリ等の固定的にプログラムを担持する不揮発性のデータ記録媒体でもよい。
【００４３】
ここでいうプログラムとは、ＣＰＵにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含み得る。
【００４４】
図５を参照して、本実施の形態に係る性能検証装置５００の構成についてさらに説明する。図５は、性能検証装置５００によって実現される機能の構成を表わすブロック図である。性能検証装置５００は、たとえば、コンピュータ４００によって実現され得る。
【００４５】
性能検証装置５００は、入力部５１０と、操作部５２０と、記憶部５３０と、選択部５４０と、並列実行単位指定部５４２と、割当部５４４と、実行順序指定部５４６と、生成部５４８と、シミュレーション実行部５５０と、表示部５６０とを備える。
【００４６】
入力部５１０は、性能検証装置５００に対するコードその他のデータの入力を受け付ける。入力部５１０は、たとえば、Ethernet（登録商標）、有線または無線ＬＡＮ（Local  Area  Network）その他の通信インターフェイスによって実現される。
【００４７】
操作部５２０は、性能検証装置５００の使用者による操作を受け付ける。操作部５２０は、たとえば、マウス、キーボードその他の入力デバイスによって実現される。
【００４８】
記憶部５３０は、性能検証装置５００に対して与えられたデータまたは性能検証装置５００において生成されたデータなどを格納する。記憶部５３０は、たとえば不揮発性の記憶装置（ハードディスク、フラッシュメモリなど）、または、ＲＡＭその他の揮発性の記憶装置によって実現される。
【００４９】
選択部５４０は、表示部５６０に表示される制御システムのモデルから、マルチコアプロセッサにおいて実行されるプログラムのシミュレーションの対象となるコード生成範囲の選択を受け付ける。ある局面において、選択部５４０は、たとえば操作部５２０に対して与えられた使用者の命令に応答して、コード生成範囲を選択する。
【００５０】
並列実行単位指定部５４２は、操作部５２０に対する操作に応答して、選択部５４０において選択されたコード生成範囲に含まれる複数の処理のうち、並列処理の対象となる複数の処理の指定を受け付ける。指定された処理は、以下「並列実行単位」という。
【００５１】
割当部５４４は、操作部５２０によって受け付けられた操作と並列実行単位指定部５４２によって指定された並列実行単位とに基づいて、各並列実行単位と当該マルチコアプロセッサに含まれる各コアとの関連付けを行なう。関連付けられた状態を表わすデータは、記憶部５３０に保持される。
【００５２】
実行順序指定部５４６は、操作部５２０に対する操作と割当部５４４によって関連付けられたデータとに基づいて、当該関連付けが行なわれた各並列実行単位の実行順序を指定する。
【００５３】
生成部５４８は、実行順序指定部５４６によって指定された順序と、各並列実行単位とに基づいて、当該マルチコアプロセッサによる実行の対象となるソースコードを生成する。当該ソースコードは、モデルシミュレータとの周期毎の通信処理を含み、各コアに共通に用いられる。
【００５４】
シミュレーション実行部５５０は、生成部５４８によって生成されたソースコードをマルチコアプロセッサ実行可能形式に変換して、デバッグエミュレータ等を介してマルチコアプロセッサで実行させて、モデルシミュレータとＰＩＬシミュレーションを行う。
【００５５】
表示部５６０は、制御システムのモデルあるいは生成されたソースコードのシミュレーションの結果の入力を受け付けて、入力されたデータを表示する。表示部５６０は、たとえば液晶モニタ、有機ＥＬ（Electro  Luminescence）モニタなどによって実現される。
【００５６】
＜実施例１＞
実施例１は、以下に説明する一連の手順により、マルチコアで動作する並列化ソースコードを生成し、ＭＩＬシミュレーションまたはＳＩＬシミュレーションにおいて機能検証を実施できる環境を提供する。この環境においては、モデルファイルからコーダによって生成される１つのソースプログラムが、複数のコアで共有され、実行される。
【００５７】
一連の手順とは、たとえば、以下のような手順を含む。
（手順１）ＣＰＵ１は、ＰＩＬシミュレーションの対象とするコード生成範囲が選択されて指定されたことを検知する。
（手順２）ＣＰＵ１は、選択範囲内において並列化単位が指定されたことを検知する。
（手順３）ＣＰＵ１は、並列化単位毎にコア割当が行なわれるコアが指定されたことを検知する。
（手順４）ＣＰＵ１は、コア割当が行なわれた並列化単位間の実行順序制御の指定、ならびに、制御周期毎の周期先頭及び周期終了時のコア同期の指定を検知し、コードを生成する。
（手順５）ＣＰＵ１は、モデルシミュレータ上のプラントモデルとマルチコア上のコントローラプログラムとを連携したＰＩＬシミュレーションにより、実行時間情報をモニタ８に表示する。
【００５８】
手順１において、ユーザは、まず、ＰＩＬシミュレーションにより、マルチコアマイコンで実行したい制御周期範囲を選択する。
【００５９】
手順２において、ユーザは、その選択範囲を並列実行可能な単位に分割して、分割された単位をブロックとして定義する。
【００６０】
手順３において、ユーザは、並列実行単位の各ブロックについて、当該ブロックの処理を実行するコアを指定するため、当該ブロックとコアとを関連付ける。以下、並列実行単位のブロックを並列単位ブロック、コア割当が指定されたブロックをコア割当指示ブロックと呼ぶ。
【００６１】
コードを実行する各コアは、各並列単位ブロックについて、関連付けられたコア割当指示ブロックで指定されるコア番号（たとえば、ＰＥ１、ＰＥ２等）と、マルチコアマイコン内の各プロセッサエレメント（ＰＥ）にハードウェア機能として保持するコア番号を読み出す。各コアは、指定されたコア番号と保持しているコア番号とを比較する。これらのコア番号が一致する場合には、当該コアは該当ブロックの生成コードを実行する条件実行文として、ソースコードを生成するように設定される。一方、これらのコア番号が一致しない場合には、当該コアは該当ブロックの生成コードを実行しないように設定される。
【００６２】
さらに、この並列単位ブロックへの設定には、一制御周期で実行する複数のブロックを、複数のコアで並列実行する場合に必要な設定（たとえば、実行順序を制御するための設定）も含んでいなければならない。加えて、複数コアで一制御周期相当のコード列を実行した上で、プラントモデルとマルチコアとを連携するにあたり、一制御周期相当の開始と完了とを同期させる、コア間同期のための設定を含めなければならない。そこで、手順４において、ユーザは、そのような実行順序とコア間同期とを制御するための指定を行なう。その後、マルチコアで実行可能な並列化コードが生成される。生成された並列化コードに対して、手順５において、ＰＣは、プラントモデルと共に連携シミュレーションを行い、マルチコア実行時の実行時間情報をモニタ８に表示する。
【００６３】
［モデル適用手順］
以下、図６から図１１を参照して、モデル例を本実施の形態に係るシミュレーション環境に適用された場合について説明する。当該モデル例は、たとえば、MATLAB/Simulinkベースのモデル例である。
【００６４】
（コード生成単位の指定）
図６は、モデルからサブシステムを選択する態様を表わす図である。ある局面において、手順１に関し、たとえば、Simulink環境においては、Simulinkで提供されるSubsystemブロック機能等を用いることによって、コーダによるコード生成単位を指定することができる。
【００６５】
たとえば、モニタ８は、ブロック６１０，６２０，６３０，６４０，６５０，６６０，６７０，６８０を表示している。性能検証装置５００のユーザは、マウスを操作して、当該モデルの一部に相当するサブシステム６９０を構成する領域（コード生成範囲）を指定する。サブシステム６９０は、たとえば、ブロック６１０，６２０，６３０，６４０，６５０を含む。サブシステム６９０は、コード生成の対象となる。
【００６６】
図７は、サブシステム６９０をコード生成範囲７１０として置き換えた状態を表わす図である。すなわち、モニタ８は、コード生成範囲７１０と、ブロック６６０，６７０，６８０とを表示し得る。
【００６７】
（並列化単位の指定）
図８は、並列化単位を選択する場合における画面の表示状態を表わす図である。このフェーズでは、並列動作が可能な単位を分離し、分離した各々の単位にコア割当実行コードを生成するためのプレースホルダを設定する。プレースホルダとは、実際の内容を後から挿入できるように仮に確保される場所である。本実施の形態において、プレースホルダにコア割当制御コードを挿入するが、加えて、該当単位の計時コードを挿入してもよい。
【００６８】
並列化単位の指定は、たとえば、Simulinkで提供されるEnabled Subsystemブロック機能等を用いることによって、並列動作が可能な単位を分離することにより実現される。Enabled Subsystemブロックは並列化単位に対して、コア割当制御コード等を生成するためのプレースホルダを用意することができる。
【００６９】
モニタ８は、使用者による上記のための操作に基づいて、並列化単位８１０，８２０，８３０，８４０，８５０を表示している。使用者は、コード生成範囲７１０に含まれる各ブロックをそれぞれ並列化単位として選択し得る。
【００７０】
図８に示される例では、ブロック６１０，６２０，６３０，６４０，６５０は、並列化単位８１０，８２０，８３０，８４０，８５０として、それぞれ指定されている。すなわち、ブロック６１０，６２０，６３０，６４０，６５０は、それぞれ、マルチコアプロセッサの各コアにおける並列化処理の対象として選択されている。
【００７１】
並列化単位の選択に関し、たとえば、SimulinkにおけるGotoブロックとFromブロックのように対を構成する２以上のブロックは、ひとつの並列化単位に含まれるように選択する。したがって、たとえば、ある局面において、対を構成する２以上のブロックは、コード生成範囲７１０の外に存在し得る。あるいは、別の局面において、対を構成する２以上のブロックは、同一のコード生成範囲に含まれ得る。
【００７２】
図９は、並列化単位として指定された各ブロックとその他のブロックとの関係を表わす図である。モニタ８は、並列化単位として指定されたブロック６１０，６２０，６３０，６４０，６５０と、出力ポート９１０，９２０，９３０，９４０，９５０とを表示している。
【００７３】
（並列化単位ごとにコアの割当を指定）
図１０は、並列化単位毎にコア割当を指定するための画面を表わしている（手順３）。手順３では、Simulinkで提供されるFromブロック機能等を用いることによって、各並列化単位に、コア識別指示を定義して接続する。Fromブロックには、接続されたEnabled Subsystemブロックを実行するコアは、コアの識別番号（たとえば、ＰＥ１，ＰＥ２等）で指定される。
【００７４】
一例として、ある局面において、モニタ８は、並列化単位として指定されたブロック６１０，６２０，６３０，６４０，６５０と、各ブロックが実行される処理要素（ＰＥ）を表わすアイコンと、その他の出力ポート９１０，９２０，９３０，９４０，９５０とを表示している。より詳しくは、ブロック６１０とブロック６３０とブロック６５０とは、第１のＰＥ（＝ＰＥ１）１０１０，１０３０，１０５０の画像にそれぞれ関連付けられている。ブロック６２０は、第２ＰＥ（＝ＰＥ２）の画像１０２０に割り当てられている。ブロック６４０は、第３ＰＥ（＝ＰＥ３）の画像１０４０に割り当てられている。これらの割当を表わすデータは、たとえば、性能検証装置５００のハードディスク５に保存される。
【００７５】
（実行順序の制御等）
図１１は、コア割当が行なわれた並列化単位のマルチコア実行とＰＩＬシミュレーション用コードの生成のための画面を表わしている（手順４）。すなわち、手順４として、実行順序等を制御するための以下のような処理が行なわれる。
・処理（１）：並列化単位の入力および出力の有無により、ブロック間の実行順序を制御するための待ち合わせコードを、宣言コード、終了コードとして生成するための処理。
・処理（２）：複数コアで一制御周期相当のコード列を実行するための、開始と完了とを同期させるコードを生成するための処理。
・処理（３）：並列化単位に相当するコード列を、指定コアで実行するための、実行コア判別真偽関数の関数定義コードを生成するための処理。
・処理（４）：処理（３）の結果として生成される実行コア判別真偽関数の呼び出しコードを、手順２で用意されたプレースホルダに、コア割当制御コードとして生成するための処理。
・処理（５）：処理（１）〜（４）が適用されたモデルファイルに対し、手順１で指定されたSubsystemについて、コーダがソースコードを生成する処理。
【００７６】
処理（１）では、並列化単位について、他のコアに割当てた並列化単位の出力信号が入力信号として存在するとき、ユーザは、出力側の並列化単位の実行を待ち合わせるコードを、宣言コードとして記述する。ユーザは、さらに、他のコアに割当てた並列化単位の入力信号となる出力信号が存在するとき、実行完了を通知するコードを、終了コードとして記述する。
【００７７】
ある局面において、モニタ８は、ブロック６１０，６２０，６３０，６４０，６５０と、各ブロックに割り当てられたＰＥを表わす画像１０１０，１０２０，１０３０，１０４０，１０５０と、他の出力ポート９１０，２０，９３０，９４０，９５０とを表示している。ＰＥ２に割当てたブロック６２０は、出力信号が他のコアＰＥ１に割当てたブロック６５０の入力信号となるため、実行完了を通知するコード１４１０が終了コードとして記述されている。同様に、ＰＥ３に割当てたブロック６４０は、出力信号が他のコアＰＥ１に割当てたブロック６５０の入力信号となるため、実行完了を通知するコード１４１０が終了コードとして記述されている。ＰＥ１に割当てたブロック６５０は、他のコアに割当てたブロック６２０とブロック６４０の出力信号が入力信号となるため、ブロック６２０とブロック６４０の実行集完了を待ち合わせるコード１４２０が宣言コードとして記述されている。ＰＥ１に割当てたその他のブロック６１０とブロック６３０は、他のコアに割当てた並列化単位との間に信号がないため、実行完了通知コード、待ち合わせコードともに記述されていない。
【００７８】
処理（２）では、ユーザは、手順（１）により指定したコード生成単位に対し、全てのＰＥの同期のための待ち合わせコードを、宣言コード及び終了コードとして記述する。
【００７９】
図１２を参照して、並列化コードの一例について説明する。図１２は、手順４の処理（５）で生成される並列化コードの一例を表す図である。
【００８０】
たとえば、コード１２１０は、処理（３）により生成される、関数定義コードの一部に相当する。コード１２２０及びコード１２５０は、処理（２）により生成される、複数コアでの開始と完了とを同期させるためのコードの一部に相当する。コード１２３０は、処理（４）により生成される、コア割当制御コードの一部に相当する。コード１２４０は、処理（１）により生成される、ブロック間の実行順序を維持するための待合せのコードに相当する。
【００８１】
手順５では、生成された並列化コードを、ＰＩＬシミュレーション用の通信ＩＦを介して実行するように設定する。手順４により、全てのコアは一制御周期毎に開始と完了が同期されるので、ＰＩＬシミュレーション用の通信ＩＦによるモデルシミュレータとの通信は、マルチコアプロセッサ中のいずれかひとつのＰＥで実行することができる。このＰＩＬシミュレーション用並列化コードにより、マルチコアプロセッサ３１とコンピュータ４１０で動作するモデルシミュレータを通信させ、連携シミュレーションを行い、一制御周期毎の実行時間が表示される。Mathworks社のrtiostream インターフェイスは、このようなＰＩＬシミュレーション用通信ＩＦの例である。画面の表示態様については後述する。
【００８２】
ここで、図３を再び参照して、タイムチャートは、以上の各手順によって生成された並列化ソースコードの実行例を示している。モデルシミュレータ上のセンサから送信される入力信号とともに、コントローラの一制御周期の開始がマルチコアマイコンに通知されると、マルチコアマイコンに含まれる複数のコアは、複数のコアで共有するひとつの並列化プログラムを実行する。各コアは、当該コアが備えるコア識別番号と当該並列化プログラムに含まれるブロックに割り当てられたコア識別番号とを比較して、並列化プログラム中で自身が実行するべきプログラム部分を判別して実行できるように、プログラムには条件文が付加されている。たとえば、第１のコア３２４（ＰＥ１）で動作するプログラムは、モデルシミュレータ上のセンサ出力を受信し、第２のコア３２５（＝ＰＥ２）と共に制御周期内に演算するべき処理を開始する。演算処理が完了すると、コア３２４はコア３２５が演算処理を完了するまで待機する。コア３２４とコア３２５とが各々の処理を完了したら、コア３２４はＰＩＬシミュレーション用通信ＩＦを介して、モデルシミュレータにコントローラの一制御周期の完了を通知し、アクチュエータ３３０への制御量を送信する。
【００８３】
以上の適用例で、生成される並列化ソースコードは、マルチコアマイコンの複数のコアが同一のプログラムコードを共有して、同一コードを実行できるように生成しているが、各コアに対し、それぞれ割当てられた並列化単位に相当するコード片を含む、非共有の異なるプログラムコードを生成させてもよい。
【００８４】
さらに、以上の適用例では、各手順をＭＢＤツールＧＵＩ（Graphical  User  Interface）で操作する場合で説明したが、各手順および各処理は、雛型を予め用意してブロックセットライブラリ２３１として提供してもよい。たとえば、手順（４）において、処理（１）〜（４）としてユーザによって操作される内容は、コア識別情報やコア個数など、マルチコアマイコンの仕様により定形的に用意できるものである。したがって、これらをブロックセットライブラリ２３１として予め用意して、ＭＢＤツールから利用できるように提供してもよい。
【００８５】
［画面の表示］
図１３を参照して、別の局面における性能検証装置５００の画面の表示態様について説明する。図１３は、モニタ８が示す状態を表わす図である。
【００８６】
ある局面において、モニタ８は、制御状況表示領域１３１０とコア配置指定領域１３２０と、実行時間表示領域１３３０とを表示している。各領域の表示の態様は、図１３に示されるものに限られない。
【００８７】
制御状況表示領域１３１０は、性能検証装置５００によって生成されたソースコードを用いて制御シミュレーションが行なわれた場合における挙動を示すグラフを表示している。コア配置指定領域１３２０は、先に作成されたコアとブロックとの関係を表わす画像を表示している。実行時間表示領域１３３０は、生成されたソースコードによって制御が実行される場合における時間を表示している。
【００８８】
以上のように、実施例１に係る性能検証装置５００によると、制御モデルから、複数コアに割り当てられたコントローラプログラムを生成し、一制御周期毎に実行することができ、そのときのマルチコアマイコンでの実行時間を表示することができる。
【００８９】
各コアがＰＣ上のモデルシミュレータで動作する、プラントモデルと個別に通信する方法では、コア間の排他や同期の制御と、プラントモデルとの連係通信の手順が複雑になって、連係シミュレーション速度が低下する。これに対し、プラントモデルと連係シミュレーション通信するコアが１コアである本実施例では、マルチコア間の排他や同期はマルチコアマイコン側のみで管理することができる。
【００９０】
以上のように、実施例１では、ＧＵＩ操作によるコア割当り指示する例や、コア割当のブロックセットライブラリを用意し、制御モデル設計者がブロック毎のコア割当をモデル上で指示する例を示したが、モデル構造から並列性を抽出することができるソフトウェアによって、割当指示を生成してもよい。非特許文献１及び非特許文献３はこのような並列性抽出技術の例であって、制御モデルから並列性を抽出する方法を提案している。
【００９１】
＜実施例２＞
以下、実施例２について説明する。実施例１では、一制御周期に相当する、開始から最後の待ち合わせまでの全体が計測される。この態様以外に、別の局面において、制御周期内におけるコア毎の開始から、演算処理後の待ち合わせ開始までの時間を計測するようにソースコードを生成することもできる。その場合には、複数のコアのうち、処理時間が長くかかるコアを確認することができる。
【００９２】
さらに別の局面において、コントローラブロックの各サブブロックの実行時間を計測するようにコード生成することもできる。その場合には、制御周期内に演算できない場合のコア割当の見直しに有用な、各サブブロックの実行時間を得ることができる。
【００９３】
すなわち、開示された技術思想に基づくマルチコアＰＩＬシミュレーション環境では、
・マルチコアマイコンでの、コントローラプログラムの各制御周期の実行時間、
・同じく、各制御周期における、コア毎の演算終了までの実行時間、
・同じく、各制御周期における、サブブロック毎の実行時間、
を表示することができる。
【００９４】
このようにして得られる情報は、タスク実行時間に基づいて、コア割当を行うツールにより、良好な処理時間を得られるプログラムを生成する際に利用することができる。非特許文献２は、ハードリアルタイム制約下におけるマルチコアタスク配置手法そのようなコア割当ツールの例である。非特許文献２においては、各タスクの Worst Case Response Time (WCRT)の累積値を評価関数に用いることにより、コア間依存,待ち時間率,不均衡率の各項目でバランスの取れた配置が可能であるとしている。WRCTは、タスクのジョブがリリースされてから、そのジョブが完了するまでの応答時間の最悪値であるが、マルチコアの場合はその計算が著しく困難であった。本発明によるＰＩＬシミュレーション環境では、このWRCTに相当する値を比較的容易に取得することができる。
【００９５】
一方、タスク毎のWRCTを取得する場合のように、一制御周期内で計測対象区間の数が増えるほど、一般に、通信手順が増え、シミュレーション時間は長くなるので、目的に適った計測方法を選択的に指定できることが望ましい。
【００９６】
選択的に指定できる計測方法の例として、実施例１においては、計測対象区間の実行時間を、マイコンのブレーク機能を用いて計測することができる。他にも、マイコンのデバッグトレース機能を用いて計測することができる。この場合には、各トレース情報に付与されるタイプスタンプ等から実行時間は、算出される。
【００９７】
同様に、マイコンのパフォーマンスカウンタ機能を用いて、計測対象区間の実行時間を計測することもできる。デバッグトレース機能やパフォーマンスカウンタ機能を使用する方法では、ブレーク機能を用いる方法に比べて、制御プログラムの実行フローを中断させる回数を減らすことができるため、シミュレーション速度を速くすることができる。
【００９８】
＜実施例３＞
以下、実施例３について説明する。実施例１は、サンプリング周波数が一つである伝統的なシングルレート信号処理を例として、プラントモデルとマルチコアで実行されるコントローラのＰＩＬシミュレーション方式を説明した。複数のサンプリング周波数が混在するマルチレート信号処理では、それらのサンプリング周波数を、周波数逓倍として制御設計することがしばしば行われる。
【００９９】
実施例３は、サンプリング周波数逓倍のプラントとコントローラにおける、マルチコアＰＩＬシミュレーション方式であって、サンプリング周波数毎にコントローラモデル内を分離して、複数のサンプリング周波数のうち、リアルタイム要求が高い短周期の制御について実施例１を適用する。たとえば、短いサンプリング周波数として、もっとも短い基本周波数Ａ１と、その2倍の周波数Ａ２があった場合、コントローラモデル内をサンプリング周波数毎に、周波数Ａ１のグループと周波数Ａ２のグループに分離して、各々実施例１を適用する。マルチコアマイコン上のコントローラプログラムと、コンピュータ上のモデルシミュレータで動作するプラントモデルとは、短いサンプリング周波数の中で最大の周波数であるＡ２の一制御周期毎に通信して連携シミュレーションを行う。
【０１００】
マルチレート信号処理においては、長いサンプリング周波数での制御には、リアルタイム要求が比較的低い、システム診断処理などがしばしば割当てられる。こうした長いサンプリング周波数の制御は、リアルタイム要件が高い制御を優先してＰＥに割当てた後、負荷の低いＰＥに割当てればよいので、前記の短制御周期のＰＩＬシミュレーションの際にはＰＩＬシミュレーション対象に含めない。
【０１０１】
＜実施例４＞
以下、実施例４について説明する。以上の実施例において、ＰＩＬシミュレーションにより取得した、コントローラプログラムの制御周期毎の実行時間は、コンピュータ上でのＳＩＬシミュレーションで使用してもよい。このとき、マルチコアプロセッサではプログラムを実行せずに、該当ブロックの実行時間として、ＰＩＳシミュレーションにより取得した実行時間を参照する。この方法によれば、ＳＩＬシミュレーションに比べてコントローラプログラムの制御時間の見積精度は向上し、マルチコアプロセッサとのＰＩＬシミュレーションに比べて高速シミュレーションが実現できる。
【０１０２】
（まとめ）
モデル設計されたコントローラによって生成されたコードを、複数のＣＰＵコアに分割し、分割による通信オーバーヘッド等の影響を含めて評価して、コントローラプログラムを構成する各タスクのコアへの配分を計画することができる。
【０１０３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１０４】
２  マウス、３  キーボード、４  ＲＡＭ、５  ハードディスク、６  光ディスク駆動装置、７，１７  通信ＩＦ、８  モニタ、９  ＲＯＭ、１０  マルチコアプロセッサ、４１０  コンピュータ、４２０  デバッグエミュレータ装置、４３０  マイコン評価ボード、９１０，９２０，９３０，９４０，９５０  出力ポート、１００，１１０，１２０  フェーズ、２００  コンピュータ、２１１，２１２  画面、２３１  ブロックセットライブラリ、３００  システムモデル、３１０  センサ、３２０  コントローラモデル、３２１  第１ブロック、３２２  第２ブロック、３２４  第１のコア、３２５  第２のコア、３３０  アクチュエータ、５００  装置、５１０  入力部、５２０  操作部、５３０  記憶部、５４０  選択部、５４２  並列実行単位指定部、５４４  割当部、５４６  実行順序指定部、５４８  生成部、５５０  シミュレーション実行部、５６０  表示部、６９０  サブシステム、７１０  コード生成範囲、８１０，８２０，８３０，８４０，８５０  並列化単位、１０１０，１０２０，１０３０，１０４０，１０５０  画像、１２１０，１２２０，１２３０，１２４０  コード、１３１０  制御状況表示領域、１３２０  コア配置指定領域、１３３０  実行時間表示領域、１４１０  実行完了通知コード、１４２０  待合わせコード。
【図１】
0006378128.tif 000002
【図２】
0006378128.tif 000003
【図３】
0006378128.tif 000004
【図４】
0006378128.tif 000005
【図５】
0006378128.tif 000006
【図６】
0006378128.tif 000007
【図７】
0006378128.tif 000008
【図８】
0006378128.tif 000009
【図９】
0006378128.tif 000010
【図１０】
0006378128.tif 000011
【図１１】
0006378128.tif 000012
【図１２】
0006378128.tif 000013
【図１３】
0006378128.tif 000014