(57)【要約】【課題】より多くの処理単位が並列化された並列プログラムを作成できる並列化方法、並列化ツール、及びより多くの処理単位が並列化された並列プログラムを実行可能な車載装置を提供すること。【解決手段】コンピュータは、制御モデルが並列性基準値を満たしているか否かを判定し、並列性基準値を満たしていない場合に、処理順序を緩和した緩和パターンを抽出するとともに各緩和パターンの並列性を見積る（Ｓ１０〜Ｓ１４）。また、コンピュータは、緩和パターンの動作シミュレーションを実施して、評価パラメータについてのシミュレーション結果を求め、制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定する（Ｓ１５、Ｓ１６）。そして、コンピュータは、パラメータ基準値及び並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用する。【選択図】図２
2018124710.tif 000002
【特許請求の範囲】
【請求項１】
シングルコアマイコン用に記述されたプログラムの制御モデル（２１０）を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム（２４０）を生成する並列化方法であって、
前記制御モデルにおける構造と各処理ブロックのコスト情報とから、前記制御モデルの並列性を見積る見積手順（Ｓ１０）と、
前記並列性の見積もり結果と並列性基準値とを比較して、前記制御モデルが前記並列性基準値を満たしているか否かを判定する並列性判定手順（Ｓ１１）と、
前記制御モデルが前記並列性基準値を満たしていない場合に、前記制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの前記並列性を見積る探索手順（Ｓ１２〜Ｓ１４）と、
前記緩和パターンの動作シミュレーションを実施して、前記制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション手順（Ｓ１５）と、
前記シミュレーション手順にて前記シミュレーション結果が求められると、前記シミュレーション結果が、前記制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定手順（Ｓ１６）と、
前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを、前記並列プログラムを生成するための対象パターンとして採用する決定手順（Ｓ１８、Ｓ２０）と、を備えている並列化方法。
【請求項２】
前記探索手順は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、
前記シミュレーション手順は、前記探索手順にて見積られた前記並列性が大きい前記緩和パターンから順番に、前記動作シミュレーションを実施して前記シミュレーション結果を求め、
前記パラメータ判定手順は、前記並列性が大きい前記緩和パターンから順番に、前記シミュレーション結果が前記パラメータ基準値を満たしているか否かを判定し、
前記決定手順は、前記並列性が大きい前記緩和パターンから順番に、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項１に記載の並列化方法。
【請求項３】
前記探索手順は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンのみを前記動作シミュレーションを実施する前記緩和パターンとする請求項２に記載の並列化方法。
【請求項４】
前記決定手順による比較結果において、前記並列性基準値を満たしている前記緩和パターンが複数あった場合、前記並列性基準値を満たしている複数の前記緩和パターンを表示する第１表示手順（Ｓ２１）を備えている請求項２又は３に記載の並列化方法。
【請求項５】
前記決定手順は、前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンがなかった場合、前記パラメータ基準値を満たしていない前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項１乃至４のいずれか一項に記載の並列化方法。
【請求項６】
少なくとも前記決定手順による比較結果において前記並列性基準値を満たしている前記緩和パターンがなかった場合、前記緩和パターンと、前記緩和パターンにおける前記シミュレーション結果と前記並列性の見積もり結果とを表示する第２表示手順（Ｓ２２）を備えている請求項１乃至５のいずれか一項に記載の並列化方法。
【請求項７】
前記決定手順で採用された前記対象パターンから前記並列プログラムを生成する生成手順を備えている請求項１乃至６のいずれか一項に記載の並列化方法。
【請求項８】
シングルコアマイコン用に記述されたプログラムの制御モデル（２１０）を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム（２４０）を生成する、コンピュータ（１００）を含む並列化ツールであって、
前記制御モデルにおける構造と各処理ブロックのコスト情報とから、前記制御モデルの並列性を見積る見積部（Ｓ１０）と、
前記並列性の見積もり結果と並列性基準値とを比較して、前記制御モデルが前記並列性基準値を満たしているか否かを判定する並列性判定部（Ｓ１１）と、
前記制御モデルが前記並列性基準値を満たしていない場合に、前記制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの前記並列性を見積る探索部（Ｓ１２〜Ｓ１４）と、
前記緩和パターンの動作シミュレーションを実施して、前記制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション部（Ｓ１５）と、
前記シミュレーション部にて前記シミュレーション結果が求められると、前記シミュレーション結果が、前記制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定部（Ｓ１６）と、
前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを、前記並列プログラムを生成するための対象パターンとして採用する決定部（Ｓ１８、Ｓ２０）と、を備えている並列化ツール。
【請求項９】
前記探索部は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、
前記シミュレーション部は、前記探索部にて見積られた前記並列性が大きい前記緩和パターンから順番に、前記動作シミュレーションを実施して前記シミュレーション結果を求め、
前記パラメータ判定部は、前記並列性が大きい前記緩和パターンから順番に、前記シミュレーション結果が前記パラメータ基準値を満たしているか否かを判定し、
前記決定部は、前記並列性が大きい前記緩和パターンから順番に、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項８に記載の並列化ツール。
【請求項１０】
前記探索部は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンのみを前記動作シミュレーションを実施する前記緩和パターンとする請求項９に記載の並列化ツール。
【請求項１１】
前記決定部による比較結果において、前記並列性基準値を満たしている前記緩和パターンが複数あった場合、前記並列性基準値を満たしている複数の前記緩和パターンを表示する第１表示部（Ｓ２１）を備えている請求項９又は１０に記載の並列化ツール。
【請求項１２】
前記決定部は、前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンがなかった場合、前記パラメータ基準値を満たしていない前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項８乃至１１のいずれか一項に記載の並列化ツール。
【請求項１３】
少なくとも前記決定部による比較結果において前記並列性基準値を満たしている前記緩和パターンがなかった場合、前記緩和パターンと、前記緩和パターンにおける前記シミュレーション結果と前記並列性の見積もり結果とを表示する第２表示部（Ｓ２２）を備えている請求項８乃至１２のいずれか一項に記載の並列化ツール。
【請求項１４】
前記決定部で採用された前記対象パターンから前記並列プログラムを生成する生成部を備えている請求項８乃至１３のいずれか一項に記載の並列化ツール。
【請求項１５】
複数のコアを有するマルチコアマイコン（３１０）と、前記マルチコアマイコン用に並列化可能な処理単位が並列化された並列プログラム（２４０）と、を備えた車載制御装置であって、
前記並列プログラムは、シングルコアマイコン用に記述されたプログラムの制御モデル（２１０）における少なくとも一部のデータ依存関係について処理順序を緩和したパターンを基に生成されたものであり、並列性基準値と、制御モデルに設定された性能要件の基準値であるパラメータ基準値とを満たしており、
前記マルチコアマイコンは、各コアが前記並列プログラムを実行する車載制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成された並列プログラムを実装した車載制御装置に関する。
【背景技術】
【０００２】
従来、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献１に開示された並列化コンパイル方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、並列化コンパイル方法では、シングルプログラムの並列性が低いと、並列化できる処理単位の数が少なかったり、シングルプログラムを必要なコア数に分けることができないという問題がある。
【０００５】
本開示は、上記問題点に鑑みなされたものであり、より多くの処理単位が並列化された並列プログラムを作成できる並列化方法、並列化ツール、及びより多くの処理単位が並列化された並列プログラムを実行可能な車載装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示は、
シングルコアマイコン用に記述されたプログラムの制御モデル（２１０）を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム（２４０）を生成する並列化方法であって、
制御モデルにおける構造と各処理ブロックのコスト情報とから、制御モデルの並列性を見積る見積手順（Ｓ１０）と、
並列性の見積もり結果と並列性基準値とを比較して、制御モデルが並列性基準値を満たしているか否かを判定する並列性判定手順（Ｓ１１）と、
制御モデルが並列性基準値を満たしていない場合に、制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの並列性を見積る探索手順（Ｓ１２〜Ｓ１４）と、
緩和パターンの動作シミュレーションを実施して、制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション手順（Ｓ１５）と、
シミュレーション手順にてシミュレーション結果が求められると、シミュレーション結果が、制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定手順（Ｓ１６）と、
シミュレーション結果がパラメータ基準値を満たしている緩和パターンにおける並列性の見積もり結果と並列性基準値とを比較して、並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用する決定手順（Ｓ１８、Ｓ２０）と、を備えていることを特徴とする。
【０００７】
このように、本開示は、シングルコアマイコン用に記述されたプログラムの制御モデルの段階で並列性を見積り、制御モデルが並列性基準値を満たしているか否かを判定する。これによって、本開示は、シングルコアマイコン用に記述されたプログラムではなく、プログラムの制御モデルが並列性基準値を満たしているか否かを判定できる。
【０００８】
また、本開示は、制御モデルが並列性基準値を満たしていない場合に、処理順序を緩和したパターンである緩和パターンを抽出する。そして、本開示は、緩和パターンに関して、制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求め、このシミュレーション結果が性能要件の基準値であるパラメータ基準値を満たしているか否かを判定する。これによって、本開示は、緩和パターンが、制御モデルとしての性能要件を満たしているか否かを判定できる。
【０００９】
さらに、本開示は、パラメータ基準値を満たしている緩和パターンの並列性を見積もり、並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用する。このため、本開示は、より多くの処理単位が並列化された並列プログラムを作成できる。言い換えると、本開示は、マルチコアマイコンの性能を十分に使える並列プログラムを生成できる。また、本開示は、パラメータ基準値と並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用するため、制御モデルとしての一定の制御性能を有しつつ、並列性が大きい制御モデルを生成できる。
【００１０】
本開示の他の一つは、
シングルコアマイコン用に記述されたプログラムの制御モデル（２１０）を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム（２４０）を生成する、コンピュータ（１００）を含む並列化ツールであって、
制御モデルにおける構造と各処理ブロックのコスト情報とから、制御モデルの並列性を見積る見積部（Ｓ１０）と、
並列性の見積もり結果と並列性基準値とを比較して、制御モデルが並列性基準値を満たしているか否かを判定する並列性判定部（Ｓ１１）と、
制御モデルが並列性基準値を満たしていない場合に、制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの並列性を見積る探索部（Ｓ１２〜Ｓ１４）と、
緩和パターンの動作シミュレーションを実施して、制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション部（Ｓ１５）と、
シミュレーション部にてシミュレーション結果が求められると、シミュレーション結果が、制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定部（Ｓ１６）と、
シミュレーション結果がパラメータ基準値を満たしている緩和パターンにおける並列性の見積もり結果と並列性基準値とを比較して、並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用する決定部（Ｓ１８、Ｓ２０）と、を備えていることを特徴とする。
【００１１】
このように、並列化ツールでは、上記並列化方法と同様に、より多くの処理単位が並列化された並列プログラムを作成できる。これによって、本開示は、マルチコアマイコンの性能を十分に使える並列プログラムを生成できる。
【００１２】
本開示の他の一つは、
複数のコアを有するマルチコアマイコン（３１０）と、マルチコアマイコン用に並列化可能な処理単位が並列化された並列プログラム（２４０）と、を備えた車載制御装置であって、
並列プログラムは、シングルコアマイコン用に記述されたプログラムの制御モデル（２１０）における少なくとも一部のデータ依存関係について処理順序を緩和したパターンを基に生成されたものであり、並列性基準値と、制御モデルに設定された性能要件の基準値であるパラメータ基準値とを満たしており、
マルチコアマイコンは、各コアが並列プログラムを実行することを特徴とする。
【００１３】
このように、本開示は、マルチコアマイコンと、上記のように生成された並列プログラムとを備えている。マルチコアマイコンは、各コアが並列プログラムを実行する。
【００１４】
また、この並列プログラムは、並列性基準値と、制御モデルに設定された性能要件の基準値であるパラメータ基準値とを満たしている。このため、マルチコアマイコンは、制御モデルとしての一定の制御性能を有しつつ、並列性が大きい並列プログラムを実行することになる。よって、本開示は、マルチコアマイコンの機能を十分に発揮することができる。
【００１５】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１６】
【図１】実施形態における並列化ツールとＥＣＵの概略構成を示すブロック図である。
【図２】実施形態における並列化ツールの処理動作を示すフローチャートである。
【図３】実施形態における制御モデルを示すイメージ図である。
【図４】実施形態における依存関係解析時の各処理を示すイメージ図である。
【図５】実施形態における緩和パターンを示す表である。
【図６】実施形態における依存関係緩和後の各処理を示すイメージ図である。
【図７】実施形態における依存関係緩和後の制御モデルを示すイメージ図である。
【図８】変形例における並列化ツールの処理動作を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラム（ソフトウェア）における複数の処理単位から、マルチコアマイコン３１０用に並列化した並列化ｃソース２４０を生成するコンピュータ１００を採用する。
【００１８】
なお、並列化ｃソース２４０は、並列プログラムに相当する。また、以下においては、並列化ｃソース２４０をｃソース２４０と簡略化して記載する。ｃソース２４０をＣ言語コンパイラ２５０でコンパイルした後のプログラムを並列プログラムとみなすこともできる。
【００１９】
特に、コンピュータ１００は、シングルプログラムの制御モデル２１０を解析して、マルチコアマイコン３１０用に並列化可能な処理単位を並列化した並列化ｃソース２４０を生成する。つまり、コンピュータ１００は、シングルプログラムから直接並列化ｃソース２４０を生成するのではなく、シングルプログラムの制御モデル２１０を解析して並列化ｃソース２４０を生成する。コンピュータ１００は、例えば、制御モデル２１０の並列性を改善した後のモデルである緩和モデル２１を用いて、並列化ｃソース２４０を生成する。
【００２０】
このように、本実施形態は、ｃソース２４０を生成するためのコンピュータ１００を含む並列化ツールを採用する。コンピュータ１００は、処理部と、プログラムなどが記憶された記憶部などを備えており、処理部がプログラムを実行することで、ｃソース２４０を生成する。つまり、コンピュータ１００の記憶部に記憶されたプログラムは、ｃソース２４０を生成するための手順を含んでいる。よって、コンピュータ１００のプログラムは、並列化方法に相当する。また、本実施形態では、シングルプログラムの制御モデル２１０を解析して、マルチコアマイコン３１０用に並列化可能な処理単位を並列化したｃソース２４０を生成する並列化方法を採用すると言える。さらに、本実施形態では、コンピュータ１００で生成されたｃソース２４０がＣ言語コンパイラ２５０でコンパイルされＥＣＵ３００に搭載されている例を採用する。ＥＣＵ３００は、特許請求の範囲における車載制御装置に相当する。
【００２１】
なお、マイコンは、プロセッサと言い換えることができる。よって、マルチコアマイコンは、マルチコアプロセッサと言い換えることができる。また、コンピュータ１００の記憶部に記憶されたプログラムは、自動並列化コンパイラとも言える。
【００２２】
このように、ｃソース２４０を生成する背景としては、マイコンの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアマイコン３１０が主流になることなどがあげられる。そして、マルチコアマイコン３１０は、車載装置の分野においても適用が必要となっている。また、ｃソース２４０としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
【００２３】
なお、本実施形態では、一例として、Ｃ言語で記述されたシングルプログラムやｃソース２４０を採用する。しかしながら、本発明は、これに限定されない。シングルプログラムやｃソース２４０は、Ｃ言語とは異なるプログラミング言語で記述されていてもよい。
【００２４】
ところで、車両のＥＣＵのプログラムの開発においては、例えば、開発者が直接ソースコードを記述せず、目的とするプログラムの機能を、より作成が簡易で視認性の良い制御モデル２１０という形態で記述する場合がある。開発者は、この制御モデル２１０に対応したプログラム開発環境がインストールされたワークステーションやパーソナルコンピュータ等を用いて、その制御モデル２１０にて定義された演算処理等のシミュレーションを行うとともに、制御モデル２１０からソースコードを自動生成できる。
【００２５】
このような制御モデルを記述できる開発環境として、MATLAB（登録商標）、Simulink（登録商標）等が挙げられる。つまり、制御モデル２１０は、ソースコードよりも記述が簡易になり、かつ人による可読性を高くする目的で定められたモデル言語仕様に基づいて作成されるプログラムの一表現形態である。
【００２６】
例えば、Simulinkで作成されたSimulinkモデルは、特定の処理を示すブロックと呼ばれる機能単位の組合せとして記述されている。そして、モデルを構成するブロックは、ブロック間のデータの入出力、及び、対応する処理手順の順序を示す結線により繋ぎ合わされている。なお、制御モデル２１０は、例えば、噴射制御をモデルで記述したものや、エンジン制御をモデルで記述したものなどが挙げられる。制御モデル２１０のブロックは、特許請求の範囲における処理ブロックに相当する。
【００２７】
ここで、コンピュータ１００の構成に関して説明する。コンピュータ１００は、上記のように処理部と記憶部とを備えている。コンピュータ１００は、図１に示すように処理部が実行する機能を示す複数の機能ブロック１１〜１６、１７ａ、１７ｂ、１８を含んでいる。コンピュータ１００は、記憶部に並列性基準値２０が記憶されており、記憶部に緩和モデル２１を記憶可能に構成されている。また、コンピュータ１００は、制御モデル２１０、パラメータ基準値２２０、評価パラメータ２３０を取得可能に構成されている。
【００２８】
さらに、コンピュータ１００は、表示部２６０と電気的に接続されている。しかしながら、コンピュータ１００は、表示部２６０が接続されていなくてもよい。この場合、コンピュータ１００は、後程説明する表示支持部１８を備えていなくてもよい。
【００２９】
ここで、各機能ブロックに関して説明する。並列性見積部１１は、制御モデル２１０や後程説明する緩和パターンにおける構造と各処理ブロックのコスト情報とから、制御モデル２１０や緩和パターンの並列性を見積る。つまり、並列性見積部１１は、制御モデル２１０や緩和パターンの並列性を定量化する。なお、コスト情報は、各処理ブロックの処理時間とも言える。
【００３０】
並列性見積部１１は、例えば、最悪実行パスの処理時間（Ｔｃ）と制御モデル全体の総処理時間（Ｔａ）の比率（Ｔａ／Ｔｃ）を並列性の指標として算出する。制御モデル内の各処理ブロックの処理時間は、既存技術により、制御モデルからＣコード変換器を用いてＣコードにした後に、命令セットシミュレータを用いてサイクル数を見積もる方法や、実機で実行した際の処理時間の計測値を用いる方法がある。また、各処理ブロック間の処理順序は、データアクセスの関係（例えばブロック間の信号線）を解析することで知ることができる。よって、処理順序と処理時間を考慮して最悪実行パスの処理時間を見積もることも可能である。なお、最悪実行パスは、クリティカルパス（ＣＰ）と言い換えることができる。
【００３１】
並列性合否判定部１２は、制御モデル２１０や緩和パターンの並列性見積り結果と、並列性基準値２０とを比較して合否判定することで、制御モデル２１０や緩和パターンが並列性の目標を達成しているかどうか判断する。並列性基準値２０は、制御モデル２１０や、ｃソース２４０に求められる並列性の要求値（設計値）である。並列性基準値２０は、ｃソース２４０を実装するマルチコアマイコン３１０のコア数に基づいて設定される。また、並列性合否判定部１２は、ｃソース２４０を生成するため緩和パターンから緩和モデル２１を生成する。
【００３２】
依存関係緩和探索部１３は、制御モデル２１０における一部又は全てのデータ依存関係について、処理順序を緩和したパターン（組合せ）を生成する。つまり、依存関係緩和探索部１３は、制御モデル２１０における依存関係を緩和した緩和パターンを生成する。このように、緩和パターンは、制御モデル２１０における一部又は全てのデータ依存関係について、処理順序を緩和したモデルである。緩和パターンは、依存関係緩和パターンとも言える。
【００３３】
シミュレータ１４は、緩和パターンに対して、動作シミュレーションを行う。つまり、シミュレータ１４は、緩和パターンの動作シミュレーションを実施して、制御モデル２１０に設定された性能要件を評価するための評価パラメータ２３０についてのシミュレーション結果を求める。評価パラメータ２３０は、制御モデル２１０に対応したパラメータであり、制御性能を評価するパラメータとも言える。また、シミュレータ１４は、動作シミュレーションを実施することで、緩和パターンにおける、取得した評価パラメータ２３０に対応する値を算出するとも言える。なお、シミュレータ１４は、動作シミュレーションを行う場合、処理順序が緩和された緩和箇所に関して、信号伝搬が一回遅れとなるようにする。
【００３４】
評価パラメータ合否判定部１５は、シミュレーション結果とパラメータ基準値２２０とを比較して、緩和パターンの合否判定、すなわち、一定の制御性能を有した緩和パターンであるか否かを判定する。これによって、コンピュータ１００は、一定の制御性能を有した緩和パターンのみを許可にすることもできる。
【００３５】
パラメータ基準値２２０は、制御毎の性能要件の基準値である。パラメータ基準値２２０は、例えば、入力に対しての応答時間や、応答後の静定値（理想値からの許容誤差範囲）など、対象の制御の要求性能に基づいて設定された設計値である。
【００３６】
保持部１６は、緩和モデル２１や緩和パターンなどを記憶部に保持する。また、保持部１６は、緩和パターンのシミュレータ１４によるシミュレーション結果や、緩和パターンの並列性見積部１１による並列性の見積り結果などを記憶部に保持する。
【００３７】
並列化部１７ａは、緩和モデル２１を並列化する。つまり、並列化部１７ａは、処理単位のデータ依存関係を解析して、複数の処理単位をマルチコアマイコン３１０の異なるコアに割り振る（言い換えると、割り付ける、配置する）。コード生成部１７ｂは、並列化された緩和モデル２１からｃソース２４０を生成する。並列化部１７ａとコード生成部１７ｂとは、周知技術であり、特開２０１５−１８０７号公報などを参照して採用することができる。
【００３８】
しかしながら、並列化部１７ａ及びコード生成部１７ｂは、緩和情報を加味してスケジューリングし、ｃソース２４０を生成する。つまり、並列化部１７ａ及びコード生成部１７ｂは、スケジューリング時に、各処理の処理順序（依存関係）を基に、各処理の実行順序とコア配置を決定するため、処理順序の緩和情報を読み取って反映する必要がある。緩和情報とは、緩和した依存関係を示す情報である。後程説明する例では、第１依存関係を緩和している。この場合の緩和情報は、第１依存関係を緩和したことを示す。
【００３９】
表示支持部１８は、表示部２６０に対して指示信号を出力して、表示部２６０の表示制御を行う。コンピュータ１００は、例えば、並列性基準値を満たしている複数の緩和パターンなどを表示部２６０に表示させる。
【００４０】
ここで、図２〜図７を用いて、コンピュータ１００の処理動作に関して説明する。コンピュータ１００は、制御モデル２１０を取得すると、図２のフローチャートに示す処理を行う。また、本実施形態では、一例として、図３に示す制御モデル２１０を採用する。よって、コンピュータ１００は、図３に示す制御モデル２１０を取得すると図２のフローチャートに示す処理を行う。
【００４１】
制御モデル２１０は、第１入力、第１出力、第２出力、第１処理ｐ１、第２処理ｐ２、第３処理ｐ３、第４処理ｐ４を含んでいる。第１処理ｐ１〜第４処理ｐ４のそれぞれは、処理ブロックに相当する。
【００４２】
ステップＳ１０では、並列性の見積もりを行う（見積手順、見積部）。並列性見積部１１は、制御モデル２１０が並列性の目標を達成しているかどうか判断するために、上記のように制御モデル２１０の並列性を見積る。
【００４３】
ステップＳ１１では、並列性が基準値以上であるか否かを判定する（並列性判定手順、並列性判定部）。並列性合否判定部１２は、ステップＳ１０で得た並列性の見積もり結果と、記憶部に記憶された並列性基準値２０とを比較して、制御モデル２１０が並列性基準値２０を満たしているか否かを判定する。つまり、並列性合否判定部１２は、制御モデル２１０が並列性の目標を達成しているかどうか判断する。
【００４４】
並列性合否判定部１２は、制御モデル２１０の並列性が並列性基準値２０以上の場合、緩和パターンなどを生成することなくｃソース２４０を生成できるとみなしてステップＳ２０へ進む。つまり、この場合、並列性合否判定部１２は、シングルプログラムの並列性が十分であり、シングルプログラムをマルチコアマイコン３１０のコア数に対応して並列化できるとみなす。
【００４５】
一方、並列性合否判定部１２は、制御モデル２１０の並列性が並列性基準値２０以上でない場合、シングルプログラムの並列性が十分でなく、シングルプログラムをマルチコアマイコン３１０のコア数に対応して並列化できないとみなしてステップＳ１２へ進む。つまり、コンピュータ１００は、制御モデル２１０が並列性基準値を満たしていない場合に、ステップＳ１２以降の処理及び判定を行う。
【００４６】
ステップＳ１２では、全依存関係をリストアップする（探索手順、探索部）。依存関係緩和探索部１３は、図４に示すように、制御モデル２１０における処理ブロック間のデータアクセスの関係を解析することで全依存関係をリストアップする。図４に示すように、制御モデル２１０は、第１処理ｐ１と第２処理ｐ２との間に第１依存関係、第１処理ｐ１と第３処理ｐ３との間に第２依存関係、第３処理ｐ３と第２処理ｐ２との間に第３依存関係、第３処理ｐ３と第４処理ｐ４との間に第４依存関係がある。
【００４７】
ステップＳ１３では、緩和パターンを抽出する（探索手順、探索部）。依存関係緩和探索部１３は、制御モデル２１０における少なくとも一部のデータ依存関係について処理順序を緩和した緩和パターンを抽出する。図５に示すように、依存関係緩和探索部１３は、第１パターン〜第ｎパターンの緩和パターンを抽出する。また、図６には、一例として、第２依存関係を緩和した第３パターンの各処理ｐ１〜ｐ４の関係を示している。なお、ここでは、複数の緩和パターンを抽出する例を採用する。しかしながら、本発明は、これに限定されず、一つの緩和パターンを抽出することもある。
【００４８】
依存関係緩和探索部１３は、入力された制御モデル２１０内の各処理ｐ１〜ｐ４の処理順序が緩和、すなわち順不同化された緩和パターンを生成する。このとき、依存関係緩和探索部１３は、各処理ｐ１〜ｐ４間の依存関係を一つずつ緩和して全パターン探索していくことで緩和パターンを抽出する。さらに、依存関係緩和探索部１３は、並列性の特徴から、最悪実行パスにある依存関係に着目して緩和していくことで効率よく並列性を改善する緩和パターンを抽出することができる。なお、依存関係緩和探索部１３は、緩和情報を別途持つ緩和パターンを生成することもできる。
【００４９】
各処理ｐ１〜ｐ４の処理順序とは、各処理ｐ１〜ｐ４間のデータ依存関係を維持するために発生する処理順序のことである。また、データ依存関係は、同じ変数に対する書込みを含むアクセス（書込み→書込み、書込み→読込み、読込み→書込み）と同意である。
【００５０】
ステップＳ１４では、緩和パターンについて並列性を見積り、並列性が大きい順にソートする（探索手順、探索部）。コンピュータ１００は、依存関係緩和探索部１３が緩和パターンを抽出するとともに、並列性見積部１１が緩和パターンの並列性を見積る。特に、並列性見積部１１は、依存関係緩和探索部１３が複数の緩和パターンを抽出した場合、複数の緩和パターンのそれぞれにおける並列性を見積る。
【００５１】
また、依存関係緩和探索部１３は、並列性が大きい緩和パターンから順番にステップＳ１６の判定を行うために、複数の緩和パターンを並列性が大きい順にソートする。しかしながら、本発明は、これに限定されず、複数の緩和パターンを並列性が大きい順にソートしなくてもよい。つまり、本発明は、ステップＳ１４のソートを省略することもできる。この場合、コンピュータ１００は、並列性の大きさに関係なく、複数の緩和パターンを順番に対称として、ステップＳ１５以降を行う。
【００５２】
また、依存関係緩和探索部１３は、並列性の見積もり結果と並列性基準値２０とを比較して、並列性基準値２０を満たしている緩和パターンのみを動作シミュレーションを実施する緩和パターンとしてもよい。例えば、依存関係緩和探索部１３は、並列性基準値２０を満たしていない緩和パターンを消去するなどして、ステップＳ１５以降に対象する緩和パターンを、並列性基準値２０を満たしている緩和パターンのみとする。
【００５３】
これによって、コンピュータ１００は、ステップＳ１５において、並列性基準値２０を満たしている緩和パターンのみを対象とすることができる。よって、コンピュータ１００は、全ての緩和パターンを対象としてステップＳ１５を行う場合よりも、ｃソース２４０を生成するまでの処理を少なくできる。
【００５４】
ステップＳ１５では、並列性の大きい順に各緩和パターンについて動作シミュレーションして、シミュレーション結果を算出する（シミュレーション手順、シミュレーション部）。シミュレータ１４は、各緩和パターンが一定の制御性能を有した緩和パターンであるか否かを判定するために、動作シミュレーションを実施してシミュレーション結果を求める。特に、本実施形態では、並列性が大きい緩和パターンから順番に、動作シミュレーションを実施してシミュレーション結果を求める例を採用する。しかしながら、本発明は、これに限定されず、並列性の大きさに関係なく動作シミュレーションしてもよい。
【００５５】
ステップＳ１６では、シミュレーション結果がパラメータ基準値以上であるか否かを判定する（パラメータ判定手順、パラメータ判定部）。評価パラメータ合否判定部１５は、一定の制御性能を有した緩和パターンであるか否かを判定するため、シミュレーション結果がパラメータ基準値以上であるか否かを判定する。特に、本実施形態では、並列性が大きい緩和パターンから順番に、シミュレーション結果がパラメータ基準値以上であるか否かを判定する。しかしながら、本発明は、これに限定されず、並列性の大きさに関係なくシミュレーション結果がパラメータ基準値以上であるか否かの判定を行ってもよい。
【００５６】
そして、評価パラメータ合否判定部１５は、シミュレーション結果がパラメータ基準値以上であると判定した場合、シミュレーション結果がパラメータ基準値を満たしているとみなしてステップＳ１８へ進む。一方、評価パラメータ合否判定部１５は、シミュレーション結果がパラメータ基準値以上でないと判定した場合、シミュレーション結果がパラメータ基準値を満たしていないとみなしてステップＳ１７へ進む。
【００５７】
ステップＳ１７では、全緩和パターンを処理したか否かを判定する（パラメータ判定手順、パラメータ判定部）。評価パラメータ合否判定部１５は、ステップＳ１３で抽出された全ての緩和パターンを対象としてステップＳ１５、Ｓ１６を行ったか否かを判定する。評価パラメータ合否判定部１５は、全ての緩和パターンを対象としてステップＳ１５、Ｓ１６を行ったと判定した場合はステップＳ１８へ進み、ステップＳ１５、Ｓ１６を行っていない緩和パターンがあると判定した場合はステップＳ１５へ戻る。
【００５８】
ステップＳ１８では、並列性が基準値以上であるか否かを判定する（決定手順、決定部）。並列性合否判定部１２は、ステップＳ１１と同様に、ステップＳ１４で得た並列性の見積もり結果と、記憶部に記憶された並列性基準値２０とを比較して、緩和パターンが並列性基準値２０を満たしているか否かを判定する。ここでは、並列性合否判定部１２は、制御モデル２１０ではなく、緩和パターンを対象として、並列性の見積もり結果と並列性基準値とを比較する。
【００５９】
並列性合否判定部１２は、緩和パターンの並列性が並列性基準値２０以上と判定した場合、ｃソース２４０を生成できるとみなしてステップＳ２０へ進む。一方、並列性合否判定部１２は、制御モデル２１０の並列性が並列性基準値２０以上でないと判定した場合、シングルプログラムをマルチコアマイコン３１０のコア数に対応して並列化できないとみなしてステップＳ１９へ進む。
【００６０】
ところで、ステップＳ１４にて並列性基準値２０を満たしている緩和パターンのみを動作シミュレーションを実施する緩和パターンとした場合、ステップＳ１８では、全ての緩和パターンの並列性が並列性基準値２０を満たすことになる。このため、並列性合否判定部１２は、最初にステップＳ１６でＹＥＳ判定となった緩和パターンが対象の場合に、ステップＳ１８でＹＥＳ判定することになる。
【００６１】
ステップＳ２０では、並列性基準ＯＫ判定する（決定手順、決定部）。つまり、並列性合否判定部１２は、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和パターンを、ｃソース２４０を生成するための対象パターンとして採用する。本実施形態では、図６に示す、第３パターンを対象パターンとして採用する。なお、並列性合否判定部１２は、例えば、ステップＳ１８で最初にＹＥＳ判定となった緩和パターンを対象パターンとして採用してもよい。
【００６２】
そして、並列性合否判定部１２は、図７に示すように、対象パターンから緩和モデル２１を生成する。このとき、並列性合否判定部１２は、依存関係を緩和している箇所に、一回遅れバッファｐｄを追加して、緩和モデル２１を生成する。本実施形態では、第２依存関係を緩和しているので、第１処理ｐ１と第３処理ｐ３との間に、一回遅れバッファｐｄを追加している。一回遅れバッファｐｄは、信号伝搬が一回遅れとなるようにするための処理である。なお、緩和モデル２１は、緩和パターンに基づいて生成されたモデルであるため、制御モデル２１０の並列性を改善させたモデルとも言える。
【００６３】
なお、本実施形態では、並列性合否判定部１２が緩和モデル２１を生成する例を採用している。しかしながら、本発明は、これに限定されず、コンピュータ１００が対象パターンから緩和モデル２１を生成する手順（機能）を備えていればよい。
【００６４】
そして、並列化部１７ａは、緩和モデル２１を並列化する。そして、コード生成部１７ｂは、並列化された緩和モデル２１からｃソース２４０を生成する。つまり、コンピュータ１００は、対象パターンからｃソース２４０を生成する（生成手順、生成部）。
【００６５】
このように、コンピュータ１００は、まず、並列性が最も大きい緩和パターンを対象としてステップＳ１５、Ｓ１６を行う。その後、コンピュータ１００は、並列性が最も大きい緩和パターンを対象としたステップＳ１６でＹＥＳ判定であった場合、ステップＳ１８へ進む。そして、コンピュータ１００は、ステップＳ１８でＹＥＳ判定であった場合、並列性が最も大きい緩和パターンを並列性基準がＯＫであると判定する、すなわち対象パターンとする。
【００６６】
しかしながら、コンピュータ１００は、並列性が最も大きい緩和パターンを対象としたステップＳ１６でＮＯ判定であった場合、次に並列性が大きい緩和パターンを対象として、Ｓ１５、Ｓ１６を行う。そして、コンピュータ１００は、ステップＳ１６でＹＥＳ判定となるか、全ての緩和パターンを対象としてステップＳ１５、Ｓ１６を行うまで同様の処理を行う。
【００６７】
これによって、コンピュータ１００は、制御モデルとしての一定の制御性能を有した、最も並列性が大きい緩和パターンを、ｃソース２４０を生成するための対象パターンとして採用することができる。また、コンピュータ１００は、動作シミュレーション、パラメータ基準値を満たしているか否かの判定、並列性の見積り、並列性基準値との比較を、並列性が大きい緩和パターンから順番に行なう。このため、コンピュータ１００は、これらを並列性の見積り結果に関係なく行う場合よりも、ｃソース２４０を生成するための対象パターンを決定するまでの処理を少なくできる。
【００６８】
なお、ステップＳ１３で抽出された複数の緩和パターンは、いずれも、一定の制御性能を有していないこともありうる。よって、ステップＳ１６では、全ての緩和パターンのシミュレーション結果がパラメータ基準値以上とならずＮＯ判定となる。このような場合は、コンピュータ１００は、パラメータ基準値を満たしていない緩和パターンのうち、並列性の見積もり結果が並列性基準値を満たしている緩和パターンを対象パターンとして採用してもよい（決定手順、決定部）。
【００６９】
この場合、パラメータ基準値の緩和検討をすることになる。もし、パラメータ基準値の緩和が可能であれば、上述の結果を採用することができる。または、パラメータ基準値を見直し、緩和された新たなパラメータ基準値を用いて、再度一連の手順をやり直してもよい。並列性合否判定部１２は、ステップＳ１８において、ステップＳ１４で得た並列性の見積もり結果と、記憶部に記憶された並列性基準値２０とを比較して、緩和パターンが並列性基準値２０を満たしているか否かを判定する。ここでは、並列性合否判定部１２は、ステップＳ１６でシミュレーション結果がパラメータ基準値を満たしていない緩和パターンを対象として、並列性の見積もり結果と並列性基準値とを比較する。そして、並列性合否判定部１２は、緩和パターンの並列性が並列性基準値２０以上と判定した場合はステップＳ２０へ進む。一方、並列性合否判定部１２は、制御モデル２１０の並列性が並列性基準値２０以上でないと判定した場合はステップＳ１９へ進む。また、逆に並列性基準値を緩和する場合も同様である。
【００７０】
ステップＳ１９では、並列性基準ＮＧ判定する。つまり、並列性合否判定部１２は、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和パターンがなかったと判定する。
【００７１】
ＥＣＵ３００は、複数のコアを有するマルチコアマイコン３１０と、マルチコアマイコン３１０用に並列化可能な処理単位が並列化されたｃソース２４０と、を備えている。つまり、ＥＣＵ３００は、上記のように生成されたｃソース２４０を備えている。また、ＥＣＵ３００は、記憶媒体としてのＲＯＭ３２０を備えており、ＲＯＭ３２０にｃソース２４０が記憶されている。マルチコアマイコン３１０は、各コアがｃソース２４０を実行する。
【００７２】
なお、ｃソース２４０は、Ｃ言語コンパイラ２５０でコンパイルされ、マルチコアマイコン３１０が実行可能な状態、例えば実行ファイルの状態でＥＣＵ３００に搭載されている。よって、各コアは、ｃソース２４０がコンパイルされた状態の実行ファイルを実行することになる。
【００７３】
ＥＣＵ３００は、外部機器４００と電気的に接続されており、外部機器４００から出力された信号を取得可能に構成されている。また、ＥＣＵ３００は、外部機器４００からの信号を取得し、マルチコアマイコン３１０の各コアがｃソース２４０を実行することで、外部機器４００に対して制御信号などを出力する。
【００７４】
以上のように、コンピュータ１００は、シングルプログラムの制御モデル２１０の段階で並列性を見積り、制御モデル２１０が並列性基準値を満たしているか否かを判定する。これによって、コンピュータ１００は、シングルプログラムではなく、シングルプログラムの制御モデル２１０が並列性基準値を満たしているか否かを判定できる。
【００７５】
また、コンピュータ１００は、制御モデル２１０が並列性基準値を満たしていない場合に、処理順序を緩和したパターンである緩和パターンを抽出する。そして、コンピュータ１００は、緩和パターンに関して、制御モデル２１０に設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求め、このシミュレーション結果がパラメータ基準値を満たしているか否かを判定する。これによって、コンピュータ１００は、緩和パターンが、制御モデル２１０としての性能要件を満たしているか否かを判定できる。
【００７６】
さらに、コンピュータ１００は、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和パターンを、ｃソース２４０を生成するための対象パターンとして採用する。このため、コンピュータ１００は、より多くの処理単位が並列化されたｃソース２４０を作成できる。言い換えると、本開示は、マルチコアマイコン３１０の性能を十分に使えるｃソース２４０を生成できる。また、コンピュータ１００は、パラメータ基準値を満たしている緩和パターンを対象パターンとして採用するため、制御モデル２１０としての一定の制御性能を有しつつ、並列性が大きい緩和モデルを生成できる。
【００７７】
なお、緩和モデル２１を生成するまでの処理（手順）は、制御モデルの改善方法とも言える。そして、機能ブロック１１〜１５は、制御モデルの改善ツールとも言える。よって、制御モデルの改善方法は、制御モデルから、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和モデル２１を生成できる。同様に、改善ツールは、制御モデルから、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和モデル２１を生成できる。
【００７８】
ここで、図８を用いて、変形例のコンピュータ１００に関して説明する。変形例のコンピュータ１００は、上記実施形態のコンピュータ１００と同様の構成を有している。このため、変形例では、上記実施形態と同じ符号を用いる。また、変形例のコンピュータ１００の処理において、上記実施形態のコンピュータ１００と同じ処理には、同じステップ番号を採用して説明を省略する。つまり、図８において、図２と同じステップ番号の処理は、図２の説明を参照できる。
【００７９】
ステップＳ２１では、並列性基準値を満たしている緩和パターンを表示する（第１表示手順、第１表示部）。表示支持部１８は、ステップＳ１８において、並列性基準値を満たしている緩和パターンが複数あった場合、並列性基準値を満たしている複数の緩和パターンを表示部２６０に表示させる。この場合、並列性合否判定部１２は、ステップＳ１８で最初にＹＥＳ判定となった緩和パターンを対象パターンとするのではなく、ステップＳ１８で並列性基準値を満たした複数の緩和パターンを記憶部に記憶させる。そして、表示支持部１８は、表示部２６０に対して指示信号を出力して、記憶部に記憶された複数の緩和パターンを表示部２６０に表示させる。
【００８０】
これによって、コンピュータ１００は、複数の緩和パターンのうち対象パターンとする緩和パターンを、ユーザに選択させることができる。なお、コンピュータ１００は、表示部２６０に複数の緩和パターンが表示された状態で、ユーザからの緩和パターンの選択指示を取得可能に構成を有することで、容易に対象パターンを選択することができる。
【００８１】
また、表示支持部１８は、複数の緩和パターンを表示部２６０に表示させる際に、各緩和パターンのシミュレーション結果と並列性の見積もり結果を表示させてもよい。これによって、コンピュータ１００は、ユーザが対称パターンを選択する際に考慮する情報量を増やすことができる。このため、コンピュータ１００は、ユーザが対称パターンとする緩和パターンを選択しやすくすることができる。
【００８２】
ステップＳ２２では、ステップＳ１８において、並列性基準値を満たしている緩和パターンがなかった場合、並列性基準値を満たしていない緩和パターンを表示する（第２表示手順、第２表示部）。詳述すると、表示支持部１８は、並列性基準値を満たしていない緩和パターンと、この緩和パターンにおけるシミュレーション結果と並列性の見積もり結果とを表示部２６０に表示させる。また、表示支持部１８は、複数の緩和パターンの全てが並列性基準値を満たしていなかった場合、複数の緩和パターンと、これらの緩和パターンにおけるシミュレーション結果と並列性の見積もり結果とを表示部２６０に表示させることになる。これによって、コンピュータ１００は、緩和パターンが並列性基準値を満たしていないことをユーザに知らせることができる。
【００８３】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【符号の説明】
【００８４】
１０…制御モデル改善部、１１…並列性見積部、１２…並列性合否判定部、１３…依存関係緩和探索部、１４…シミュレータ、１５…評価パラメータ合否判定部、１６…保持部、１７ａ…並列化部、１７ｂ…コード生成部、２０…並列性基準値、１００…コンピュータ、２１０…制御モデル、２２０…パラメータ基準値、２３０…評価パラメータ、２４０…並列化ｃソース、２５０…Ｃ言語コンパイラ、２６０…表示部、３００…ＥＣＵ、３１０…マルチコアマイコン、３２０…ＲＯＭ、４００…外部機器
【図１】
2018124710.tif 000003
【図２】
2018124710.tif 000004
【図３】
2018124710.tif 000005
【図４】
2018124710.tif 000006
【図５】
2018124710.tif 000007
【図６】
2018124710.tif 000008
【図７】
2018124710.tif 000009
【図８】
2018124710.tif 000010