(57)【特許請求の範囲】
【請求項１】
基本ブロックデータベースと、設計モデル・タスク定義関連のデータベースと、実装状態シミュレーションユニットとを備え、
上記実装状態シミュレーションユニットは、モデル解析部と実装遅延計算部とを有し、
上記基本ブロックデータベースは、
複数の基本ブロックの各機能を記憶する基本機能記憶部と、
上記各機能に対応した各基本ブロックの要素の、実装遅延の情報を記憶する実装遅延要素記憶部と
を有し、
上記設計モデル・タスク定義関連のデータベースは、
上記基本ブロックを組み合せて作成された設計モデルを格納する設計モデル記憶部と、
上記設計モデルに含まれるタスクに関して、上記基本ブロックの組み合わせ構成や実行優先度などのタスク定義を格納するタスク定義記憶部と、
リソースの情報を記憶するリソース情報記憶部と
を有し、
上記実装状態シミュレーションユニットは、上記タスク定義に基づいて上記設計モデルを解析し、上記リソースの情報及び上記各基本ブロックの要素の実装遅延の情報に基づき、上記設計モデルを実際の装置に組み込んで動作させることを想定した状態で予想される、該設計モデルの動作の遅延を算出し、その結果を遅延情報として出力する
ことを特徴とするモデルベースの性能予測システム。
【請求項２】
請求項１において、
上記設計モデル・タスク定義関連のデータベースは、上記設計モデルに設定されたデッドラインの情報を記憶するデッドライン記憶部を有しており、
上記実装状態シミュレーションユニットは、上記実装遅延計算部で求めた設計モデルの遅延時間と、上記設定された上記設計モデルのデッドラインとを比較して、上記設計モデルのリアルタイム処理の可否を判断するリアルタイム性判定部を備えている
ことを特徴とするモデルベースの性能予測システム。
【請求項３】
請求項１において、
上記基本ブロックの各処理機能を実現する要素は、少なくとも加算処理及び乗算処理の要素を含み、
上記タスク定義記憶部には、
上記基本ブロックを構成する上記各要素の演算の組み合わせで機能が定義され、かつ、
あらかじめ上記実装遅延要素記憶部に定義された上記各要素演算の遅延の情報から、上記基本ブロックの遅延を算出する数式が記憶されている
ことを特徴とするモデルベース性能予測システム。
【請求項４】
請求項１において、
上記タスク定義記憶部は、タスクの識別子と、タスクの実行優先度と、タスクのデッドラインのいずれかもしくは全てが記憶されている
ことを特徴とするモデルベース性能予測システム。
【請求項５】
請求項１において、
上記リソース情報記憶部は、ＣＰＵの動作クロックと、１クロックサイクル当たりの処理量のいずれかもしくは全てが記憶されている
ことを特徴とするモデルベース性能予測システム。
【請求項６】
請求項１において、
上記基本ブロックデータベースは、通信機能を基本ブロックに含み、
上記基本ブロックは、実装遅延要素記憶部に複数の通信方式、複数の通信速度の選択肢を持ち、
上記実装状態シミュレーションユニットは、上記通信方式と上記通信速度の組み合わせから、上記モデルの通信遅延を算出する
ことを特徴とするモデルベース性能予測システム。
【請求項７】
請求項６において、
上記設計モデルは、上記通信機能の基本ブロックによって、複数のブロックが通信路に接続された構成を持ち、上記通信路に複数の通信データが発生した場合に、あらかじめ定めた優先度に従って、上記通信を処理する機能を有する
ことを特徴とするモデルベース性能予測システム。
【請求項８】
請求項１において、
上記遅延情報を記憶するモデル遅延記憶部と、
該モデル遅延記憶部の情報に基づいて実装遅延に関する情報を表示する表示部と
を更に備えて成る
ことを特徴とするモデルベースの性能予測システム。
【請求項９】
請求項４において、
上記モデル解析部は、
上記設計モデル記憶部から上記設計モデルを読み込み、上記タスク定義記憶部からタスクＩＤ、タスクの優先度、タスクのデッドラインなどの情報を読み込み、該読み込んだ各タスクＩＤを基に、全タスクＩＤと上記各ブロックの組み合わせについて対応付けを行う
ことを特徴とするモデルベースの性能予測システム。
【請求項１０】
請求項９において、
上記実装遅延計算部は、
前処理として、上記設計モデル解析部において解析されたモデル内ブロックと上記タスク定義との関係付けをもとに、各タスクが含む基本ブロックをリストアップし、上記各タスクについて、内包する基本遅延を累積し、総サイクルを算出し、上記リソース情報記憶部の情報に基づいて、上記各タスクの実遅延時間を計算する機能を有する
ことを特徴とするモデルベースの性能予測システム。
【請求項１１】
請求項９において、
上記実装遅延計算部は、シミュレーション時刻を初期設定し、当該シミュレーション時刻において実行可能なタスクをレディキューに入れ、該レディキューにタスクがない場合は上記シミュレーション時刻に単位遅延ΔＴを加算し更新し、上記レディキューにタスクがある場合はその中でもっとも優先度の高いタスクを選び、上記レディキューから削除し、上記タスクの遅延時間をシミュレーション時刻に加算して更新し、全タスクが終了した場合に、現在のシミュレーション時刻を上記設計モデルの実行に要する遅延情報として出力する
ことを特徴とするモデルベースの性能予測システム。
【請求項１２】
実装状態シミュレーションユニットと、基本ブロックデータベースと、設計モデル・タスク定義関連のデータベースとを備え、
上記基本ブロックデータベースは、
基本機能と実装遅延とを少なくとも属性として持つ複数の基本ブロックを記憶する基本機能記憶部と、
上記各機能に対応した各基本ブロックの要素の、実装遅延の情報を記憶する実装遅延要素記憶部と
を有し、
上記設計モデル・タスク定義関連のデータベースは、
上記基本ブロックを用いて設計されたモデルを記憶する設計モデル記憶部と、
上記設計モデルに含まれる基本ブロックの集合であるタスク情報が定義されるタスク定義記憶部と、
上記設計モデルの機能を実装するＣＰＵやメモリを含めた資源情報を記憶するリソース情報記憶部と
を有し、
上記実装状態シミュレーションユニットは、
上記タスク定義記憶部の情報に基づいて、上記設計モデルを解析するモデル解析部と、
上記基本機能記憶部と、上記タスク定義記憶部及び上記リソース情報記憶部の情報に基づいて、上記設計モデルの実装遅延を計算する実装遅延計算部と
を有する
ことを特徴とするモデルベースの性能予測システム。
【請求項１３】
請求項１２において、
上記設計モデル記憶部は、上記複数の基本ブロックを組み合せて生成された組み込みシステムの設計モデルが格納され、
上記タスク定義記憶部には、上記設計モデルに含まれる上記基本ブロックの各処理機能に対して処理条件を与える上記タスク情報が格納され、
上記リソース情報記憶部には、上記設計モデルの機能を実装するＣＰＵやメモリを含めた上記リソースの情報が格納され、
上記実装状態シミュレーションユニットは、
上記設計モデルの上記タスク情報、上記リソースの情報、及び上記基本ブロックの要素毎の実装遅延に関する情報を用いて、上記設計モデルが上記組み込みシステムに実装された状態における上記設計モデルの動作遅延の予測値を計算し、その結果を遅延情報として出力する
ことを特徴とするモデルベースの性能予測システム。
【請求項１４】
請求項１２において、
少なくとも上記設計モデルおよび上記タスク定義のいずれかを入力する入力装置と、
上記実装遅延に関する情報を表示する表示部と
を更に備えて成る
ことを特徴とするモデルベースの性能予測システム。
【請求項１５】
請求項１２において、
上記設計モデル・タスク定義関連のデータベースは、設定された上記設計モデルのデッドラインの情報を記憶するデッドライン記憶部を有しており、
上記実装状態シミュレーションユニットは、上記実装遅延計算部で求めた設計モデルの遅延時間と、上記設定されたデッドラインとを比較して、上記設計モデルのリアルタイム処理の可否を判断するリアルタイム性判定部を備えている
ことを特徴とするモデルベースの性能予測システム。
【請求項１６】
請求項１２において、
上記基本機能記憶部には、加算や乗算などの要素演算の組み合わせで機能が定義され、かつ、あらかじめ定義された上記要素演算の遅延の情報から、上記基本ブロックの遅延を算出できる数式が記憶されている
ことを特徴とするモデルベース性能予測システム。
【請求項１７】
請求項１２において、
上記リソース情報記憶部には、ＣＰＵの動作クロックと、１クロックサイクル当たりの処理量のいずれかもしくは全てが記憶されている
ことを特徴とするモデルベース性能予測システム。
【請求項１８】
請求項１２において、
上記基本ブロックデータベースは、通信機能を基本ブロックに含み、
上記基本ブロックは、実装遅延要素記憶部に複数の通信方式、複数の通信速度の選択肢を持ち、
上記実装状態シミュレーションユニットは、上記通信方式と上記通信速度の組み合わせから、上記モデルの通信遅延を算出する
ことを特徴とするモデルベース性能予測システム。
【請求項１９】
実装状態シミュレーションユニットと、実時間シミュレーション装置と、データベース及び複数の記憶部と、与えられたモデルからプログラムを生成する自動コード生成および実装部とを具備し、
上記データベース及び複数の記憶部は、
機能と遅延とを少なくとも属性として持つ複数の基本ブロックを記憶する基本ブロックデータベースと、
上記基本ブロックを用いて設計された設計モデルを記憶する設計モデル記憶部と、
上記設計モデルに含まれる基本ブロックの集合であるタスク情報が定義されるタスク定義記憶部と、
上記設計モデルの機能を実装するＣＰＵやメモリを含めた資源情報を記憶するリソース情報記憶部と
を有し、
上記実装状態シミュレーションユニットは、
上記タスク定義記憶部の情報に基づいて、設計モデルを解析するモデル解析部と、
上記基本ブロックデータベースおよび上記リソース情報記憶部の情報に基づいて、上記設計モデルの実装遅延を計算する実装遅延計算部と、
上記実装遅延計算部が算出した設計モデルの実装遅延情報を記憶するモデル遅延記憶部と
を有し、
上記実装遅延は、上記設計モデルを実際の装置に組み込んで動作させることを想定した状態で予想される、該設計モデルの動作の遅延であり、
上記実時間シミュレーション装置は、
上記生成されたプログラムを実時間で実行する演算実行部と、
上記設計モデル遅延記憶部の情報に基づいて、遅延時間の指令を出す遅延指令部と、
上記遅延指令部の実装遅延情報に基づいて、上記遅延を生成する遅延制御部と、
上記遅延制御部の信号を実機の制御対象へ出力する信号入出力部と
を具備する
ことを特徴とするモデルベース性能予測システム。
【請求項２０】
請求項１９において、
上記基本ブロックは、加算や乗算などの要素演算の組み合わせで機能が定義され、かつ、あらかじめ定義された上記要素演算の遅延の情報から、上記基本ブロックの実装遅延を算出できる数式が記憶されている
ことを特徴とするモデルベース性能予測システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデルベースの性能予測システムに係り、特に、組み込みシステムのソフトウェアの開発において、設計上流段階で実装を考慮したリアルタイム性の検証ができるモデルベースの性能予測システムに関するものである。
【背景技術】
【０００２】
組み込みシステムのソフトウェアの規模は年々増大傾向にあり、既存のプログラム開発では、開発期間や設計品質など、要求を満たすことが困難になりつつある。このような中、自動車分野を中心に、モデルを用いて仕様の記述や機能設計などを行うモデルベースの開発手法が広く用いられるようになった。
【０００３】
モデルベースとは、Ｓｉｍｕｌｉｎｋ（登録商標）に代表される制御系モデリングツールを用いて、基本機能が定義されたブロックを組み合せ、目的の機能を設計することを指しており、これによって、設計者はプログラムのソースコードを記述することなく、モデルを利用して容易に機能を開発することが可能となった。さらに、設計した機能モデルからプログラムを自動で生成する技術についても近年大きく進歩し、一般に普及し始めている。設計者は、これら自動生成されたプログラムを組み合せ、コンパイルし、特定のマイコンに実装する。
【０００４】
特許文献１には、モデルベースの開発において、モデルによって表現されるプログラムのマイコンへの実装時におけるマイコンリソース消費量を見積もることができるようにした見積もり装置が開示されている。
【０００５】
また、特許文献２には、仕様設計における状態遷移に時間定義を導入したものが開示されている。すなわち、状態遷移表の各セルに対応した時間情報を記憶し、それに基づいてシステムのシミュレーション実行時の処理時間を累積して、システムの動作をシミュレーションした際の、処理時間を求めるプログラム開発装置が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−０７８２４３号公報
【特許文献２】特開２０００−２０３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
たとえば車載システムなど、コスト制約の厳しい分野においては、マイコンへの実装において、ＣＰＵ性能、ＲＯＭ／ＲＡＭ容量、通信速度など、リソースの制約を受けることが少なくない。
【０００８】
このため、上流工程で機能的な検証を通ったモデルが、実装段階になって与えられた制約を満たせないと判明することはよくある。たとえば、想定外にリソース使用量が大きいモデルになっていた場合など、機能設計段階に戻って、設計を大幅に見直す必要がでてくる。もしくは、想定していた以上の高価で高性能なマイコンに変更するなど、大きな仕様変更が求められる。一般に、組み込みシステムの実装設計には工数の負担が大きいこともあり、こういった手戻りの発生は極力避けたい。このことは、大規模複雑化が進むソフトウェア開発にとって、深刻な問題となりつつある。
【０００９】
この点に着目して、特許文献１の発明では、ＣＰＵ、ＲＯＭ／ＲＡＭの消費量を設計上流工程で見積もり、開発の手戻りを防いでいる。この例では、システム設計段階において、マイコンリソース消費見積もりプログラムが、モデルの各構成要素ブロックのマイコンリソース消費見積もり量の情報に基づいて、当該モデルから生成されるオブジェクトコードのマイコンリソース消費見積もり量を算出する。
【００１０】
ただし、この方法では、平均的なＣＰＵ処理負荷は見積もることができるが、ピーク負荷やリアルタイム性の問題は解決できない。すなわち、特許文献１の発明では、プログラムの開発が終了したマイコンリソースの消費量の見積もりに関するものであり、開発段階にある複数のプログラムを実際の装置上で動作させた実装状態における遅延の見積もりを行うことはなされていない。このような、ソフトウェアまで含めた組み込みシステムの遅延の見積もりには、実装状態での各処理の遅延時間の情報に加えて、各割り込みの発生タイミング、各タスク（処理の一まとまり）の実行優先度など、処理の相互関係も考慮する必要がある。
【００１１】
このように、実装不具合には、機能的な要求は満たしながら、制約時間内に処理が完了しないことによる、たとえば制御値の誤出力などがあり、これを処理のリアルタイム性と呼ぶことにする。
【００１２】
一方、特許文献２で開示されたプログラム開発装置は、状態遷移表の各セルに記述されたアクションの処理時間を、順次入力される事象と、各セルに記述された遷移先の状態とで順次特定されるセルに対応した時間情報を累積することによって、システムの動作をシミュレーションすることができる。上記特許文献２のプログラム開発装置は、ユーザが予め設定した各セルに対応した時間情報について、実装段階の時間要素を反映するために、プログラミング言語で記述された原始プログラムを作成しコンパイルして、特定の実装形態であるオブジェクトコードを用意し、その実行時間から時間情報を算出する方法を開示している。
【００１３】
しかしながら、モデルベース開発手法に基づいた、大規模な組み込みシステムの機能設計においては、上記特許文献２で開示された方法を実施するには実装設計段階に近い開発工数を要し、工数の負担がかなり増す可能性が大きい。
【００１４】
また、リアルタイム性の検証という点で、複数処理が同時に起動した場合に、各処理の優先度が、モデル全体の実行遅延に与える影響について検証する手段ではないため、これについては、従来技術の課題として残されている。
【００１５】
上記従来技術の課題に鑑みて、本発明では、ソフトウェアを含む組み込みシステムの開発において、設計上流段階で遅延の見積もりを行い、リアルタイム性を検証できる、モデルベースの性能予測システムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の代表的なものの一例を示せば以下の通りである。本発明のモデルベースの性能予測システムは、基本ブロックデータベースと、設計モデル・タスク定義関連のデータベースと、実装状態シミュレーションユニットを備え、上記実装状態シミュレーションユニットは、モデル解析部と実装遅延計算部とを有し、上記基本ブロックデータベースは、複数の基本ブロックの各機能を記憶する基本機能記憶部と、上記各機能に対応した各基本ブロックの要素の、実装遅延の情報を記憶する実装遅延要素記憶部とを有し、上記設計モデル・タスク定義関連のデータベースは、上記基本ブロックを組み合せて作成された設計モデルを格納する設計モデル記憶部と、上記設計モデルに含まれるタスクに関して、上記基本ブロックの組み合わせ構成や実行優先度などのタスク定義を格納するタスク定義記憶部と、リソースの情報を記憶するリソース情報記憶部とを有し、上記実装状態シミュレーションユニットは、上記タスク定義に基づいて上記設計モデルを解析し、上記リソースの情報及び上記各基本ブロックの要素の実装遅延の情報に基づき、上記設計モデルを実際の装置に組み込んで動作させることを想定した状態で予想される、該設計モデルの動作の遅延を実装遅延として算出し、その結果を出力することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、上流設計段階で、実装時の主要な課題である遅延の見積もりやリアルタイム性について予測し、それらの問題について早期に解決できるため、工数の大きな下流工程の負担軽減が可能であり、また、実装不具合による手戻りを抑制することができる。これは、ソフトウェア規模の大きなシステムにとっては必然的である。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１実施形態に係る性能予測システムの構成例ブロック図である。
【図２】上記第１実施形態に係る性能予測システムで、基本ブロックデータベースの演算ブロックの一例を示す説明図である。
【図３】上記第１実施形態に係る性能予測システムで、基本ブロックデータベースが具備する実装遅延要素記憶部において参照される要素演算の説明図である。
【図４】上記第１実施形態に係る設計モデルの一例を示したブロック図である。
【図５】図４に示したスリップ制御システムの各機能を構成する基本ブロックとそれらの演算要素の例を示すテーブルである。
【図６】上記第１実施形態に係る性能予測システムで、タスク定義記憶部の一例を示した説明図である。
【図７】上記第１実施形態に係る性能予測システムが具備するリソース情報記憶部の一例を示した説明図である。
【図８】上記第１実施形態に係る設計モデルの他の例を示したブロック図である。
【図９】上記第１実施形態に係る性能予測システムで、基本ブロックデータベースが具備する通信ブロックに関する説明図である。
【図１０】上記第１実施形態に係る性能予測システムにおけるモデル解析部の処理フロー図である。
【図１１】上記第１実施形態に係る性能予測システムにおける実装遅延計算部の前処理フロー図である。
【図１２】上記第１実施形態に係る性能予測システムの実装遅延計算処理フロー図である。
【図１３】上記第１実施形態に係る性能予測システムのタスク定義の一例を示した説明図である。
【図１４】上記第１実施形態に係る性能予測システムにおいて、上記タスク定義の場合の出力結果を示した説明図である。
【図１５】上記第１実施形態に係る性能予測システムのタスク定義において優先度を変更した場合の一例を示した説明図である。
【図１６】上記第１実施形態に係る性能予測システムにおいて、上記タスク定義の場合の出力結果を示した説明図である。
【図１７】上記第１実施形態に係る性能予測システムにおいて、周期タスクの実装遅延計算処理を示したフロー図である。
【図１８】上記第１実施形態に係る性能予測システムにおいて、周期タスクを定義した場合の一例を示した説明図である。
【図１９】上記第１実施形態に係る性能予測システムにおいて、上記タスク定義の場合の出力結果を示した説明図である。
【図２０】本発明の第２実施形態に係る性能予測システムの構成例ブロック図である。
【図２１】本発明の第２実施形態に係る性能予測システムの実時間シミュレーション装置における信号入出力タイミングの説明図である。
【発明を実施するための形態】
【００１９】
本発明の代表的な実施形態によれば、モデルベースの性能予測システムは、基本ブロックデータベースと、設計モデル・タスク定義関連のデータベースと、実装状態シミュレーションユニットを備えている。実装状態シミュレーションユニットは、実装遅延計算部とリアルタイム性判定部とを備えている。基本ブロックデータベースは、複数の基本ブロックについてそれらの機能を記憶する基本機能記憶部と、それらの機能に対応した各基本ブロックの要素の実装遅延を記憶する実装遅延要素記憶部とを有する。モデルの設計者は、上記基本ブロックを組み合せることで、組み込みシステム等のモデルに必要な機能を具備するモデル（ソフトウェア）を作成し、それを設計モデル・タスク定義関連のデータベースの設計モデル記憶部に格納しておく。実装遅延計算部では、リソース制約、処理の優先度設定の情報などを考慮し、要素毎の実装遅延時間を用いて、開発されたソフトウェア（設計モデル）の実装段階での不具合要因となる時間的要素が反映された、実装遅延時間を求める。
【００２０】
なお、本発明で、実装遅延とは、設計モデルを実際の装置に組み込んで動作させることを想定した状態で予想される、設計モデルの動作の遅延を意味する。
【００２１】
さらに、リアルタイム性判定部において、求めた設計モデルの遅延時間と、設定された設計モデルのデッドラインとを比較して、リアルタイム処理の可否を判断する。これにより、開発中の設計モデルについて、任意の段階で、モデルベースの性能予測を行い、その結果を以降の開発に反映させることができる。
【００２２】
なお、本発明は、自動車に搭載される各種制御システム、デジタルテレビ、ハードディスク装置、ＡＴＭ、ロボット、電車等、コンピュータを備えた各種の制御装置や組み込み機器の開発に広く適用できる。  
以下、本発明の実施形態について、図を用いて説明する。
【実施例１】
【００２３】
本発明の第１実施形態にかかるモデルベースの性能予測システムについて、図１〜図１９を用いて説明する。  
図１には、モデルベースの性能予測システムの、全体的な構成が示されている。本発明の第１実施形態にかかるモデルベースの性能予測システムは、設計モデル・タスク定義の入力装置１００と、実装状態シミュレーションユニット１１０、基本ブロックデータベース、及び設計モデル・タスク定義関連のデータベースとを備えている。基本ブロックデータベース関連の記憶装置として、複数の基本ブロックについてそれらの機能と遅延とを少なくとも属性として持つ要素演算ブロックの集合である基本処理機能の情報が格納されている。ここでは、基本ブロックの機能を記憶する基本機能記憶部１０１と、それらの機能に対応した各基本ブロックの各構成要素の実装遅延を記憶する実装遅延要素記憶１０２部とを有するものとする。
【００２４】
設計モデル・タスク定義関連のデータベースとして、設計モデル記憶部１０３には、モデルの設計者が、上記基本ブロックデータベースの基本ブロックを組み合せることで、例えば組み込みシステムに要求される機能を満たすソフトウェアを設計モデルとして作成したものを格納する。また、タスク定義記憶部１０４には、一つ以上の基本ブロックの組み合わせからなる上記設計モデルに含まれるすべてのタスクについての、基本ブロックの組み合わせ構成や実行優先度、タスクのデッドラインなどのタスク定義が格納される。リソース情報記憶部１０５には、ＣＰＵ、ＲＯＭ／ＲＡＭなど実装リソースの情報を記憶する。また、デッドライン記憶部１０６には、設計モデルのデッドラインに関する情報が記憶される。
【００２５】
設計モデル・タスク定義の入力装置１００では、設計者が、基本処理機能記憶部１０１のデータを用いて開発した設計モデル、例えば組み込みシステムの設計モデルやタスク定義、デッドライン等を入力し、それらが各々、設計モデル記憶部１０３、タスク定義記憶部１０４、デッドライン記憶部１０６に記憶される。また、設計者は、タスク定義と実装リソースの関係に関する情報を入力し、それがリソース情報記憶部１０５に記録される。
【００２６】
実装状態シミュレーションユニット１１０は、モデル解析部１１１、実装遅延計算部１１２、及びリアルタイム性判定部１１３を備えている。実装状態シミュレーションユニット１１０の出力は、モデル遅延記憶部１１４に記憶され、さらに、表示部１１５に表示される。
【００２７】
設計モデル・タスク定義の入力装置１００から入力された設計モデルは、実装状態シミュレーションユニット１１０のモデル解析部１１１において上記タスク定義記憶部１０４のタスク定義情報と結びつけられ、実行優先度やデッドラインなど、それぞれのブロック構成に対応付けられる。そして、実装遅延計算部１１２において、上記基本ブロックデータベースの実装遅延要素記憶部１０２の遅延情報と、上記リソース情報記憶部１０５とを参照し、それぞれのブロックについて実遅延時間を算出する。各ブロックの実装遅延時間が求まれば、タスクの実装遅延時間を計算することが可能となる。なお、このモデルベースの性能予測システムは、例えば、複数のコンピュータをネットワークで接続し、あるいはさらにサーバを接続して構成される。
【００２８】
ここで、たとえば、上記基本ブロックの一例として、信号処理でよくみられるＦＩＲフィルタを取り上げる。ＦＩＲフィルタは、次の数式で表される。
【００２９】
y[n] ＝ h[0]・x[n] + h[1]・x[n-1] + … + h[N-1]・x[n-N+1]    （式１）
ここで、フィルタ係数ｈ[ｉ]、フィルタ・タップ長Ｎである。上式から、乗算Ｎ回と加算Ｎ回の組み合わせであることが分かる。よって、それぞれ乗算と加算に必要なクロックサイクルを定義することで、演算の総サイクルを見積もることができる。本発明では、上記のような乗算、加算などの要素演算について、ＣＰＵ実行サイクルを定義する方法をとる。
【００３０】
あるいまた、それぞれ基本ブロックをプログラム実装して、マイコンシミュレータや実機マイコンを用いて実行時間を評価し、その情報をテーブルに登録しておく方法も考えられる。この方法は、最初のデータ作成に時間を要するが、一旦データベースを構築すれば、基本ブロックの詳細な実行遅延を考慮に入れることが可能となる。しかし、特定の実装に依存した遅延しか得ることができないという問題がある。
【００３１】
一般に、商用マイコンの命令セットは、加減算、論理演算、比較演算、乗算など、低レベル演算の種類においては、それほど変わりはない。たとえば、組み込みシステムで用いられるマイコンには、一般にＲＩＳＣ方式が用いられる。ＲＩＳＣとはＲｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（縮小命令セットコンピュータ）の略で、コンピュータのアーキテクチャの一種を指している。これは、命令の種類を減らし、回路を単純化して演算速度の向上を図ろうとする手法である。ＲＩＳＣ方式では、基本的にすべての演算は１クロックサイクルで実行され、また、最小限必要な単純な命令のみでプログラムを実行するという特徴がある。
【００３２】
これを考慮して、基本ブロックを上記の要素演算の組み合わせで記述し、要素演算の実行に要するサイクル数は、平均的な数値を設定しておくことで、上記リソース情報記憶部１０５に含まれるＣＰＵ動作速度の情報に応じて、実遅延を容易に計算することが可能となる。すなわち、モデルベースの性能予測を容易に行うことが可能となる。
【００３３】
次に、リアルタイム性の評価がなされる。  
ここで、リアルタイム性の評価については、個々の演算の実行遅延をいかに正確に見積もるかということに加えて、演算間の相互関係を考慮に入れることが、大きく影響する場合もある。この場合、タスクの実行優先度や、割り込み処理の発生タイミングなどを考慮に入れなければならない。
【００３４】
これを実現するためには、上記タスク定義記憶部１０４に加えてデッドライン記憶部１０６も備え、上記モデル解析部１１１で設計モデルとの関連付けをおこない、上記実装遅延計算部１１２において実行スケジュールをシミュレーションすることにより、設計モデルの遅延を算出する。そして、求めた設計モデルの遅延時間と、予め設定された設計モデルのデッドラインとを、リアルタイム性判定部１１３において比較し、リアルタイム処理の可否を判断する。
【００３５】
ここで、図２に、基本ブロックデータベース１０１の基本処理機能記憶部１０１に格納された、各基本ブロックの遅延定義の一例（１０１Ａ）を示す。信号処理などでよく用いられる基本演算として、ＦＩＲ（有限インパルス応答）やＤＦＴ（離散フーリエ変換）やＦＦＴ（高速フーリエ変換）を例にあげる。遅延は、加算や乗算など各要素演算に定義された処理サイクルを用いて、データポイント数などをパラメータとし、図２のサイクルの列に記載された数式で計算できる。
【００３６】
図３に、実装遅延要素記憶部１０２に格納された、要素演算の定義の一例（１０２Ａ）を示す。たとえば、加算（ＡＤＤ）は１サイクル、乗算（ＭＵＬ）は２サイクルといった具合に、処理に必要なＣＰＵサイクル数、換言すると遅延要素が定義される。この遅延要素の情報から、たとえば図２の１０２４点ＦＦＴであれば、ｎ＝１０２４，Ｍ＝２，Ａ＝１を代入して、３０，７２０サイクルの遅延であると計算できる。なお、遅延要素としては、図３に示したもののほか、例えばデータの読み書き（リード、ライト）を各１サイクルとするなど、用途に応じて適宜追加すればよい。
【００３７】
上記の方法で計算したＣＰＵの実行サイクルは、図１のリソース情報記憶部１０５を参照し、実装ＣＰＵタイプを定めると、それに対応した実装遅延時間を求めることができる。
【００３８】
次に、組み込みシステムの具体的なモデルとして、図４に示すような車のスリップ制御システムを適用例として示す。図４の例は、スリップ制御システムが１つのマイクロコンピュータ２００で構成されており、車輪速（ＩＮ１）、車体速（ＩＮ２）、ペダル位置（ＩＮ３）を入力として持ち、トルク基本指令値計算（ＴＢ）の機能２０４、スリップ率計算（ＳＲ）の機能２０２、トルク補正値計算（ＴＣ）の機能２０３、トルク基本指令値と補正値の加算（ＡＤ）の機能２０５の４つのタスクを実行し、最終的にトルク指令値（ＯＵT１）を出力する。これと同じく、各センサ入力（ＩＮ１〜ＩＮ３）に基づいて故障診断をするタスク（ＤＮ）の機能２０６も動作し、診断結果（ＯＵＴ２）を出力する。
【００３９】
図５に、図４に示したスリップ制御システムの各機能を構成する基本ブロックとそれらの演算要素の例をテーブル１０４Ａとして示す。例えば、スリップ率計算（ＳＲ）の機能（基本ブロック）は、演算要素として、１つのＡＤＤと２つのＭＵＬとを具備している。
図６に、上記モデルに対応したタスク定義の例（１０４Ｂ）を示す。ここでは、各タスクＩＤ毎に、優先度が定義され、出力部分のタスクにはデッドラインも定義されている。
【００４０】
次に、図７に、リソース情報記憶部１０５の一部（１０５Ａ）を示す。図７の例で、Ｔｙｐｅ１のＣＰＵは、動作クロックが１００ＭＨｚ、ＩＰＣ（サイクル当たりの実行命令数）は１と定義されており、上記１０２４点ＦＦＴについては、３０，７２０サイクルを１００ＭＨｚで除算し、３０７．２マイクロ秒と算出できる。また、たとえばＴｙｐｅ３のＣＰＵでは、３０，７２０サイクルを１ＧＨｚで除算し、さらに１サイクルで２命令を処理可能なため÷２で除算する。その結果、１５.７２マイクロ秒で実行できると判明する。
【００４１】
ここで、上記基本ブロックの基本処理機能のデータベースは、演算だけでなく通信の情報も含めることが可能である。例えば、図８に示すような車のスリップ制御システムを適用例として示す。図８の例は、スリップ制御システムが２つのマイクロコンピュータ２００、２０１で構成されており、２つのマイクロコンピュータは通信路で接続されている。この例では、マイクロコンピュータ２０１が上記機能２０２〜２０５を実行し、マイクロコンピュータ２０１が故障診断をするタスク（ＤＮ）の機能２０６を実行するように構成されている。
【００４２】
図９に、図８の例における、基本通信ブロックの定義の一例（１０１Ｂ）示されている。たとえば、ｐｒｏｔｏｃｏｌ−１の通信方式には、ブロックＩＤが１，２，４である３つのブロックが接続され、当該ブロック間を流れるデータは、ボーレート設定から定まる通信遅延が生じる。もし複数のデータが同じ通信路を流れる場合は、通信パケットの優先度を定め、それを考慮した通信遅延を計算することもできる。
【００４３】
つぎに、上記の基本ブロックを組み合せたモデル全体の遅延を算出するための構成を説明する。
【００４４】
図１に示されるシミュレーションユニット１１０は、モデル解析部１１１、実装遅延計算部１１２、及びリアルタイム性判定部１１３から構成される。まず、設計者は、設計モデル・タスク定義の入力装置１００により、モデル内の任意のブロックの組み合わせについて、タスクを定義する必要がある。そして、設計モデル記憶部１０３には、各タスクＩＤ、実行優先度などを定義しておく。モデル解析部１１１は、タスク定義記憶部の情報に基づいてモデルを解析する。すなわち、上記設計モデル記憶部１０３からモデルを読み込み、さらに、上記タスク定義記憶部１０４からタスク情報を読み込み、当該モデルにおいて対応するブロック部分に、タスク定義情報を付加する。
【００４５】
モデル解析部１１１の具体的な処理の流れは、図１０のフロー図に示される。モデル解析が開始されると、まず、設計モデル記憶部１０３からモデルを読み込み（Ｐ９０1）、つぎに、タスク定義記憶部１０４やデッドライン記憶部１０６からタスクＩＤ、優先度、デッドラインなどの情報を読み込む（Ｐ９０２）。そして、読み込んだ各タスクＩＤを基に、モデル内の対応するブロックの組み合わせを探す（Ｐ９０３）。全タスクＩＤとブロックの組み合わせについて対応付けをおこない（Ｐ９０４）、対応を付けることができないタスクＩＤが残った場合は、警告メッセージを出力する（Ｐ９０５）。残らなかった場合には、タスクＩＤと対応関係のないブロックの有無を調べ（Ｐ９０６）、もしあれば警告メッセージを出力する（Ｐ９０７）。以上が、モデル解析の流れとなる。
【００４６】
つぎに、実装遅延計算部１１２の処理の流れを、図１１、図１２を用いて説明する。実装遅延計算部１１２の処理は、実装遅延計算の前処理と、実装遅延計算の処理とからなる。  
図１１では、実装遅延計算の前処理の流れが示されており、まず、上記モデル解析部１１１において解析ずみである、モデル内ブロックとタスク定義との関係付けをもとに、各タスクが含む基本ブロック（図５のテーブル１０４Ａ参照）をすべてリストアップする（Ｐ１１０１）。
【００４７】
基本ブロックのサイクル算出のため、入力データ量など必要なパラメータは、予め設定された実装遅延要素記憶部１０２のデータを参照し、サイクルを求める（Ｐ１１０２）。
【００４８】
次に、各タスクについて、内包する基本遅延を累積し、総サイクルを算出する（Ｐ１１０３）。そして、リソース情報記憶部１０５のＣＰＵ情報に基づいて、前述の方法により、各タスクの実遅延時間を計算する。以上が、実装遅延計算の前処理の流れとなる。
【００４９】
つづいて、図１２を用いて、実装遅延計算の処理の流れを述べる。まず、実装遅延計算が開始されると、シミュレーション時刻を０と初期設定し（Ｐ１２０１）、当該シミュレーション時刻において実行可能なタスクをレディキューに入れる（Ｐ１２０２）。レディキューにタスクがない場合は、シミュレーション時刻に単位遅延ΔＴ（＝１単位時間）を加算し更新する（Ｐ１２１０）。レディキューにタスクがある場合は、その中でもっとも優先度の高いタスクを選び、レディキューからは削除する（Ｐ１２０４）。その後、上記タスクの遅延時間をシミュレーション時刻に加算して更新する（Ｐ１２０５）。このとき、あらたに起動したタスクの有無を調べ、起動していれば、レディキューに入れる（Ｐ１２０６）。このとき、レディキューにまだタスクが存在していればＰ１２０２に戻る。レディキューにタスクがなければ、すべてのタスクが実行終了したか確認する（Ｐ１２０８）。全タスクがまだ終了していない場合はＰ１２１０に戻り、終了した場合は、現在のシミュレーション時刻をモデルの実行に要する遅延として出力し、モデル遅延記憶部１１４に格納する（Ｐ１２０９）。以上が、実装遅延計算の流れとなる。
【００５０】
図１３は、図４のモデルに対応したタスク定義の一例であり、実装遅延計算の前処理（図１２）を行った場合の遅延算出結果も加えて示している。
【００５１】
図１４は、上記の各タスクの遅延時間を用いて、図１２で説明した実装遅延計算をすることにより得られたタイミングチャートである。横軸は時間をあらわし、１メモリ当たり１０単位時間としている。縦方向には、５つのタスクの実行状況が並べて表示されている。図１４で、上向きの矢印は、タスクが実行可能になった時刻を示し、ハッチング表示した矩形部分が単位遅延ΔＴの累積結果である実装遅延を示し、下向きの矢印はデッドライン時刻を示している。表示結果から、図１３の優先度設定において全てのタスクの実装遅延かデッドラインを満たしており、リアルタイム処理が可能であると検証できる。
【００５２】
ここで、上記タスク優先度設定のうち、設計者がたとえば、タスクＡＤとタスクＤＮの優先度を逆転させた新たなタスク定義を作成した例が、図１５に示されている。上記新たなタスク定義の条件でモデル遅延時間を算出すると、図１６のタイミングチャートが得られる。
【００５３】
これによれば、タスク定義を変更して故障診断タスク（ＤＮ）の後にトルク基本指令値と補正値の加算のタスクＡＤを実行しようとすると、タスクＡＤはデッドライン内に処理が間に合わないことを確認できる。つまり、各タスクの優先度設定によって、モデルのリアルタイム性が大きく影響を受けることが分かる。これらの点を踏まえて開発設計を行うことにより、組み込みシステムのモデルの開発を効率良く行うことが出来る。
【００５４】
なお、上記の例においては、基本的なパターンとして、いずれも１回のみ起動するタスクの例について述べ、複数回の起動、周期的な起動を前提としていなかった。しかし、一般の制御システムでは、多くの周期タスクが実行される。
【００５５】
つぎに、図１７を用いて、周期タスクや割込み等イベントで起動するタスクなど含む実用的なパターンの実装遅延計算フローを説明する。
【００５６】
まず、周期タスクは延々と起動するため、シミュレーション終了時刻を設定する必要がある（Ｐ１７０１）。つぎに、シミュレーション時刻を０と初期化し（Ｐ１７０２）、当該シミュレーション時刻において、実行可能な状態にあるタスクをレディキューへ入れる（Ｐ１７０３）。このとき、レディキューにタスクがなければ、シミュレーション時刻に単位遅延ΔＴを加算する（Ｐ１７０５）。この時点で、シミュレーション終了時刻に達していないか判定し（Ｐ１７０６）、終了時刻ならばシミュレーションを停止し、そうでなければ、Ｐ１７０３に戻る。また、レディキューにタスクがあれば、その中でもっとも優先度の高いタスクを選択し、当該タスクはレディキューから削除する（Ｐ１７０７）。
【００５７】
ここで、当該タスクの処理の残り時間が設定されていなければ（Ｐ１７０８）、残り時間＝遅延時間と設定する（Ｐ１７０９）。処理の残り時間は、実行時間が増えると減っていく。ただし、実行中に高優先度のタスクが起動し、処理が中断させられる、いわゆるプリエンプションの状態では、その期間は残り時間は減少しない。処理の残り時間が設定ずみであれば、シミュレーション時刻に単位遅延ΔＴを加算する（Ｐ１７１０）。その後、シミュレーション終了時刻に達していないか判定し（Ｐ１７１１）、終了時刻であればシミュレーションを停止し、そうでなければ、残り実行時間から単位遅延を減算する（Ｐ１７１２）。当該タスクが実行終了、すなわち残り時間が０の状態であるか判定し（Ｐ１７１３）、実行終了ならＰ１７０３に戻る。
【００５８】
実行終了でなければ、あらたな起動タスクの有無を判定する（Ｐ１７１４）。起動がない場合はＰ１７１０へ戻り、起動があれば、実行中のタスクと優先度を比較する（Ｐ１７１５）。実行中のタスクより優先度が高ければ、実行中のタスクはレディキューに戻し、Ｐ１７０４に戻る。実行中のタスクより優先度が低ければ、Ｐ１７１０に戻る。以上が、周期タスクなども含めた実装遅延計算の流れとなる。
【００５９】
ここで、前述のモデル（図４）を例に、処理が複数の周期タスクで構成されている場合を説明する。タスク定義は図１８に示した。タスクＤＮを２００単位時間の周期タスクとし、それ以外を１００単位時間の周期タスクとしている。
【００６０】
図１９に、上記条件において、前述の実装遅延計算フロー（図１７）を実行した場合の各タスクのタイミングチャートが示される。各タスクの実行状態は、図１４と同じ表記法で示している。これによれば、すべてのタスクがデッドライン（起動周期）内に収まっており、リアルタイム処理を検証できた。一方、図１５に示した例と同様に、タスクＡＤとタスクＤＮの優先度を逆転させた新たなタスク定義の場合、図１６の例と同様、タスクＡＤはデッドライン内に処理が間に合わないことを確認できた。これらの点を踏まえて開発設計を行うことにより、組み込みシステムのモデルの開発を効率良く行うことが出来る。
【００６１】
本実施例によれば、上流設計段階で、実装時の主要な課題である遅延の見積もりやリアルタイム性の問題について早期に解決できるため、工数の大きな下流工程の負担軽減が可能であり、また、実装不具合による手戻りを抑制することができる。特に、ソフトウェア規模の大きなシステムにとっては、効果が大きい。
【実施例２】
【００６２】
本発明の第２実施形態にかかる性能予測システムについて、図２０、図２１を用いて説明する。
【００６３】
図２０には、本発明の第２実施形態にかかる性能予測システムの構成が示されている。これは、図１に示された性能予測システムの構成要素をすべて含むが、第１実施形態との相違点としては、実時間シミュレーション装置１３０及び制御対象（実機）１４０が追加されている。
【００６４】
実時間シミュレーション装置１３０は、設計モデル記憶部１０３に格納された設計モデルから生成されるプログラムを実行する演算実行部１３１と、モデル遅延記憶部１１４に格納されたモデルの実装遅延情報に基づいて、実装遅延発生の指示を出す実装遅延指令部１３２と、上記演算実行部１３１の出力に対して、上記実装遅延指令部１３２から指定された実装遅延時間だけ出力の伝搬を遅らせるなど、実装遅延を制御する実装遅延制御部１３３と、上記実装遅延制御部からの信号を実機の制御対象１４０への出力信号として入出力を実施する信号入出力部１３４とを備えている。
【００６５】
図２１は、（ａ）開発対象の組み込みシステム（実機）、（ｂ）従来技術のラピッドプロトタイプシステム（模擬）、（ｃ）上記実時間シミュレーション装置（模擬）、それぞれについて、演算時間と信号出力タイミングについて図示したものである。
【００６６】
横軸は時間を示し、図中のＴは、周期タスクの起動周期を表している。また、菱形の点は、出力処理が行われる時刻を示すものである。
【００６７】
図２１から、（ａ）では、０.８Ｔの時間で演算が終了、結果を出力していることが分かる。タスクは周期Ｔで起動されている。（ｂ）は、モデルベース開発で使われる汎用のラピッドプロト・コントローラを用いた場合の（ａ）の模擬システムを示している。（ｃ）は、上記実時間シミュレーション装置による（ａ）の模擬システムである。ここで（ｂ）と（ｃ）の演算性能は同じとする。これらの違いは、信号出力のタイミングであると確認できる。
【００６８】
ラピッドプロト・コントローラでは、通常、設定した制御周期毎（Ｔ，２Ｔ，−）に前周期の演算結果を出力するため、実機システムの出力タイミング（０．８Ｔ，１．８Ｔ，２．８Ｔ，−）と結果出力タイミングにずれが生じてしまう。これに対して、上記実時間シミュレーション装置１３０では、上記モデルの実装遅延情報に基づいて、その実装遅延を実時間で発生させる機能を備えており、入出力だけみれば、実機と全く同じ（０，０．８Ｔ，Ｔ，１．８Ｔ，２Ｔ，−）にみせることが可能である。
【００６９】
この特徴は、信号出力タイミングが制御対象の動作に少なからず影響を及ぼすシステムにおいて有利である。
【符号の説明】
【００７０】
１００    設計モデル・タスク定義の入力装置、
１０１    基本機能記憶部、
１０２    実装遅延要素記憶、
１０３    設計モデル記憶部、
１０４    タスク定義記憶部、
１０５    リソース情報記憶部、
１０６    デッドライン記憶部、
１１０    実装状態シミュレーションユニット、
１１１    モデル解析部、
１１２    実装遅延計算部、
１１３    リアルタイム性判定部、
１１４    モデル遅延記憶部、
１１５    表示部、ＦＩＲ  有限インパルス応答、
ＤＦＴ  離散フーリエ変換、
ＦＦＴ  高速フーリエ変換、
ＡＤＤ  加算、
ＭＵＬ  乗算、
ＣＭＰ  比較演算、
ＬＯＧ  論理演算、
ＣＰＵ  中央演算ユニット、
ＩＰＣ  １サイクル当りの実行命令数。
【図１】
0005412305.tif 000002
【図２】
0005412305.tif 000003
【図３】
0005412305.tif 000004
【図４】
0005412305.tif 000005
【図５】
0005412305.tif 000006
【図６】
0005412305.tif 000007
【図７】
0005412305.tif 000008
【図８】
0005412305.tif 000009
【図９】
0005412305.tif 000010
【図１０】
0005412305.tif 000011
【図１１】
0005412305.tif 000012
【図１２】
0005412305.tif 000013
【図１３】
0005412305.tif 000014
【図１４】
0005412305.tif 000015
【図１５】
0005412305.tif 000016
【図１６】
0005412305.tif 000017
【図１７】
0005412305.tif 000018
【図１８】
0005412305.tif 000019
【図１９】
0005412305.tif 000020
【図２０】
0005412305.tif 000021
【図２１】
0005412305.tif 000022