(57)【特許請求の範囲】
【請求項１】
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数の前記コア（２１ｃ、２１ｄ）を有するマルチコアマイコン（２１）用に並列化した並列プログラム（２１ａ１）を生成する並列化方法であって、
前記シングルプログラムは、複数種類の前記処理を含み、複数の条件の夫々によって実行する前記処理における前記種類の組み合わせが異なるものであり、
前記シングルプログラムから、複数の前記条件の夫々における前記種類の組み合わせである処理パターンを抽出する抽出手順（１０ａ）と、
抽出した前記処理パターン毎に、複数の前記処理を各コアに割り振って、前記並列プログラムを生成する生成手順（１０ｃ〜１０ｆ）と、を備えている並列化方法。
【請求項２】
前記シングルプログラムは、複数種類の前記処理として、複数の実行周期の前記処理を含むものであり、最も周期が短い第１実行周期である前記処理と、前記第１実行周期の整数倍の前記実行周期である前記処理とを含み、
前記抽出手順は、前記シングルプログラムから、複数の前記条件の夫々における前記実行周期の組み合わせである前記処理パターンを抽出する請求項１に記載の並列化方法。
【請求項３】
前記シングルプログラムは、カウント値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記カウント値毎に実行する前記種類の組み合わせが異なり、
前記抽出手順は、前記シングルプログラムから、複数の前記条件としてのカウント値の夫々における前記処理パターンを抽出する請求項１又は２に記載の並列化方法。
【請求項４】
前記シングルプログラムは、センサの検出結果である複数のセンサ値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記センサ値毎に実行する前記種類の組み合わせが異なり、
前記抽出手順は、前記シングルプログラムから、複数の前記条件としての前記センサ値の夫々における前記処理パターンを抽出する請求項１又は２に記載の並列化方法。
【請求項５】
前記生成手順は、抽出した前記処理パターン毎に、複数の前記処理の依存関係を解析し、且つ、複数の前記処理を前記シングルプログラムにおける実行順に並べる請求項１乃至４のいずれかに記載の並列化方法。
【請求項６】
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数の前記コア（２１ｃ、２１ｄ）を有するマルチコアマイコン（２１）用に並列化した並列プログラム（２１ａ１）を生成するコンピュータを含む並列化ツールであって、
前記シングルプログラムは、複数種類の前記処理を含み、複数の条件の夫々によって実行する前記処理における前記種類の組み合わせが異なるものであり、
前記シングルプログラムから、複数の前記条件の夫々における前記種類の組み合わせである処理パターンを抽出する抽出部（１０ａ）と、
抽出した前記処理パターン毎に、複数の前記処理を各コアに割り振って、前記並列プログラムを生成する生成部（１０ｃ〜１０ｆ）と、を備えている並列化ツール。
【請求項７】
前記シングルプログラムは、複数種類の前記処理として、複数の実行周期の前記処理を含むものであり、最も周期が短い第１実行周期の前記処理と、前記第１実行周期の整数倍の前記実行周期である前記処理とを含み、
前記抽出部は、前記シングルプログラムから、複数の前記条件の夫々における前記実行周期の組み合わせである前記処理パターンを抽出する請求項６に記載の並列化ツール。
【請求項８】
前記シングルプログラムは、カウント値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記カウント値毎に実行する前記種類の組み合わせが異なり、
前記抽出部は、前記シングルプログラムから、複数の前記条件としてのカウント値の夫々における前記処理パターンを抽出する請求項６又は７に記載の並列化ツール。
【請求項９】
前記シングルプログラムは、センサの検出結果である複数のセンサ値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記センサ値毎に実行する前記種類の組み合わせが異なり、
前記抽出部は、前記シングルプログラムから、複数の前記条件としての前記センサ値の夫々における前記処理パターンを抽出する請求項６又は７に記載の並列化ツール。
【請求項１０】
前記生成部は、抽出した前記処理パターン毎に、複数の前記処理の依存関係を解析し、且つ、複数の前記処理を前記シングルプログラムにおける実行順に並べる請求項６乃至９のいずれかに記載の並列化ツール。
【請求項１１】
複数のコア（２１ｃ、２１ｄ）を有するマルチコアマイコン（２１）と、前記コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から前記マルチコアマイコン用に並列化された並列プログラム（２１ａ１）とを含む車載装置であって、
前記シングルプログラムは、複数種類の前記処理を含み、複数の条件の夫々によって実行する前記処理における前記種類の組み合わせが異なるものであり、
前記並列プログラムは、
前記シングルプログラムから、複数の前記条件の夫々における前記種類の組み合わせである処理パターンを抽出され、
抽出された前記処理パターン毎に、複数の前記処理を各コアに割り振って生成されており、
複数の前記コアは、自身に割り振られた前記処理を実行する車載装置。
【請求項１２】
前記シングルプログラムは、複数種類の前記処理として、複数の実行周期の前記処理を含むものであり、最も周期が短い第１実行周期の前記処理と、前記第１実行周期の整数倍の前記実行周期である前記処理とを含み、
前記並列プログラムは、前記シングルプログラムから、複数の前記条件の夫々における前記実行周期の組み合わせである前記処理パターンが抽出されている請求項１１に記載の車載装置。
【請求項１３】
前記シングルプログラムは、カウント値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記カウント値毎に実行する前記種類の組み合わせが異なり、
前記並列プログラムは、前記シングルプログラムから、複数の前記条件としてのカウント値の夫々における前記処理パターンが抽出されている請求項１１又は１２に記載の車載装置。
【請求項１４】
前記シングルプログラムは、センサの検出結果である複数のセンサ値を取得する前記シングルコアマイコン用のプログラムであって、複数の前記条件としての前記センサ値毎に実行する前記種類の組み合わせが異なり、
前記並列プログラムは、前記シングルプログラムから、複数の前記条件としての前記センサ値の夫々における前記処理パターンが抽出されている請求項１１又は１２に記載の車載装置。
【請求項１５】
前記並列プログラムは、抽出した前記処理パターン毎に、複数の前記処理の依存関係を解析し、且つ、複数の前記処理を前記シングルプログラムにおける実行順に並べられている請求項１１乃至１４のいずれかに記載の車載装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成された並列プログラムを実装した車載装置に関する。
【背景技術】
【０００２】
従来、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献１に開示された並列化コンパイル方法がある。
【０００３】
この並列化コンパイル方法では、シングルプロセッサシステムにより実行される組込みシステム用の逐次プログラムを複数のマクロタスク（以下、ＭＴ）に分割した後、制御依存性を有するＭＴを一つのＭＴに融合する。その後、並列化コンパイル方法では、データ依存性に基づき並列実行可能なＭＴを抽出するとともに、スタティックスケジューリングを行い、並列プログラムを生成する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、従来技術ではないが、シングルプログラムには、複数種類のＭＴを含み、複数の条件の夫々によって実行する種類の組み合わせが異なるものがある。このようなシングルプログラムの一例としては、ある条件で第１種類のＭＴと第３種類のＭＴの実行を示し、他の条件で第１種類のＭＴと第２種類のＭＴの実行を示すなどである。つまり、このシングルプログラムは、種類の組み合わせが異なる複数の処理パターンを含んでおり、条件に応じた処理パターンに含まれる種類のＭＴが実行されるようになっている。また、このシングルプログラムでは、各処理パターンに全種類のＭＴが含まれているわけではない。
【０００６】
しかしながら、特許文献１に開示された方法では、条件による分岐処理がシングルプログラムにあった場合、分岐の仕方まで把握することができない。よって、特許文献１で生成された並列プログラムでは、マルチコアマイコンの各コアに実行された場合に、ある条件のときに実際は実行されないＭＴであるにもかかわらず、コアに割り振られることが考えられる。このため、特許文献１に開示された方法では、コアが自身に割り振られたＭＴを実行しないことになり、マルチコアマイコンによる効率が低下する並列プログラムを生成してしまうという問題がある。
【０００７】
本発明は、上記問題点に鑑みなされたものであり、マルチコアマイコンによる効率低下を抑制可能な並列プログラムを作成できる並列化方法、並列化ツール、及びマルチコアマイコンによる効率低下を抑制できる車載装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数のコア（２１ｃ、２１ｄ）を有するマルチコアマイコン（２１）用に並列化した並列プログラム（２１ａ１）を生成する並列化方法であって、
シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものであり、
シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する抽出手順（１０ａ）と、
抽出した処理パターン毎に、複数の処理を各コアに割り振って、並列プログラムを生成する生成手順（１０ｃ〜１０ｆ）と、を備えていることを特徴とする。
【０００９】
このように、本発明は、複数種類の処理を含み、複数の条件の夫々によって実行する種類の組み合わせが異なるシングルプログラムから並列プログラムを生成する方法である。そして、本発明は、このシングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する。これによって、本発明は、各条件で実行される処理を把握できる。さらに、本発明は、抽出した処理パターン毎に、複数の処理を各コアに割り振って並列プログラムを生成する。このため、この並列プログラムは、マルチコアマイコンで実行された場合に、ある条件のときに実際は実行されない処理であるにもかかわらず、コアに割り振られることを抑制できる。従って、本発明は、マルチコアマイコンによる効率低下を抑制可能な並列プログラムを作成できる。
【００１０】
また、本発明のさらなる特徴は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から、複数のコア（２１ｃ、２１ｄ）を有するマルチコアマイコン（２１）用に並列化した並列プログラム（２１ａ１）を生成するコンピュータを含む並列化ツールであって、
シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものであり、
シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する抽出部（１０ａ）と、
抽出した処理パターン毎に、複数の処理を各コアに割り振って、並列プログラムを生成する生成部（１０ｃ〜１０ｆ）と、を備える点にある。
【００１１】
これによって、上記と同様に、マルチコアマイコンによる効率低下を抑制可能な並列プログラムとすることができる。
【００１２】
また、本発明のさらなる特徴は、
複数のコア（２１ｃ、２１ｄ）を有するマルチコアマイコン（２１）と、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理からマルチコアマイコン用に並列化された並列プログラム（２１ａ１）とを含む車載装置であって、
シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものであり、
並列プログラムは、
シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出され、
抽出された処理パターン毎に、複数の処理を各コアに割り振って生成されており、
複数のコアが自身に割り振られた処理を実行する点にある。
【００１３】
本発明の並列プログラムは、上記のように、マルチコアマイコンによる効率低下を抑制可能に生成されている。そして、複数のコアは、自身に割り振られた処理を実行する。よって、本発明は、マルチコアマイコンによる効率低下を抑制できる。
【００１４】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１５】
【図１】第１実施形態におけるコンピュータの概略構成を示すブロック図である。
【図２】第１実施形態における車載装置の概略構成を示すブロック図である。
【図３】実施形態におけるシングルプログラムの概略構成を示すソースコードである。
【図４】実施形態における処理パターンを示す表である。
【図５】実施形態におけるコンピュータの機能を示すブロック図である。
【図６】実施形態における処理パターン毎の並列プログラムを示すソースコードである。
【図７】実施形態における第１処理パターンの並列プログラムを示すイメージ図である。
【図８】実施形態における並列プログラムを示すソースコードである。
【発明を実施するための形態】
【００１６】
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理から第１コア２１ｃと第２コア２１ｄを有するマルチコアマイコン２１用に並列化した並列プログラム２１ａ１を生成する例を採用する。この処理は、処理ブロックやマクロタスクなどと言い換えることができる。また、マルチコアマイコンは、マルチコアプロセッサと言い換えることができる。
【００１７】
このように、シングルプログラムから並列プログラム２１ａ１を生成する背景としては、マイコンの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアプロセッサ２１が主流になることなどがあげられる。そして、マルチコアプロセッサ２１は、車載装置の分野においても適用が必要となっている。また、並列プログラム２１ａ１としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
【００１８】
なお、並列プログラム２１ａ１を生成する際には、シングルプログラムにおける複数の処理の依存関係を解析したり、スケジューリングをしたりして、複数の処理をマルチコアプロセッサ２１の異なるコア２１ｃ、２１ｄ用に割り振る。この点に関しては、特開２０１５−１８０７号公報を参照されたい。
【００１９】
本実施形態では、シングルプログラムの一例として、図３に示すようなソースコードのものを採用する。シングルプログラムは、複数種類の処理を含み、複数の条件の夫々によって実行する処理における種類の組み合わせが異なるものである。詳述すると、シングルプログラムは、複数種類の処理として、複数の実行周期の処理を含むものであり、最も周期が短い第１実行周期の処理と、第１実行周期の整数倍の実行周期である処理とを含んでいる。つまり、シングルプログラムは、タスク内で処理を分周処理する構成を含んでいる。分周処理とは、実行周期が長くても成り立つ処理を２回に１回、３回に１回など、間引いて実行することである。本実施形態では、一例として、第１実行周期が１ｍｓで、整数倍の実行周期が２ｍｓ、４ｍｓ、８ｍｓである例を採用する。
【００２０】
また、シングルプログラムは、カウント値を取得するシングルコアマイコン用のプログラムであって、複数の条件としてのカウント値毎に実行する種類の組み合わせが異なる。つまり、シングルプログラムは、カウント値に応じた組み合わせに分岐する構成となっていると言える。シングルプログラムは、分周処理の分岐の方向が規則的であり、且つ、分岐の方向によって処理量が異なる。
【００２１】
本実施形態では、図４に示すように、カウント値が０〜７の夫々で実行する実行周期が異なるシングルプログラムを採用する。また、シングルプログラムは、複数の組み合わせとして、第１処理パターンＰｔ０〜第８処理パターンＰｔ７を含んでいる。
【００２２】
カウント値０では、１ｍｓ毎の処理と４ｍｓ毎の処理が実行される。よって、第１処理パターンＰｔ０は、カウント値０で実行される１ｍｓ毎の処理と４ｍｓ毎の処理を含んでいる。カウント値１では、１ｍｓ毎の処理と２ｍｓ毎の処理が実行される。よって、第２処理パターンＰｔ１は、カウント値１で実行される１ｍｓ毎の処理と２ｍｓ毎の処理を含んでいる。
【００２３】
カウント値２では、１ｍｓ毎の処理と８ｍｓ毎の処理が実行される。よって、第３処理パターンＰｔ２は、カウント値２で実行される１ｍｓ毎の処理と８ｍｓ毎の処理を含んでいる。カウント値３では、１ｍｓ毎の処理と２ｍｓ毎の処理が実行される。よって、第４処理パターンＰｔ３は、カウント値３で実行される１ｍｓ毎の処理と２ｍｓ毎の処理を含んでいる。
【００２４】
カウント値４では、１ｍｓ毎の処理と４ｍｓ毎の処理が実行される。よって、第５処理パターンＰｔ４は、カウント値４で実行される１ｍｓ毎の処理と４ｍｓ毎の処理を含んでいる。カウント値５では、１ｍｓ毎の処理と２ｍｓ毎の処理が実行される。よって、第６処理パターンＰｔ５は、カウント値５で実行される１ｍｓ毎の処理と２ｍｓ毎の処理を含んでいる。
【００２５】
カウント値６では、１ｍｓ毎の処理が実行される。よって、第７処理パターンＰｔ６は、カウント値６で実行される１ｍｓ毎の処理を含んでいる。カウント値７では、１ｍｓ毎の処理と２ｍｓ毎の処理が実行される。よって、第７処理パターンＰｔ６は、カウント値７で実行される１ｍｓ毎の処理と８ｍｓ毎の処理を含んでいる。
【００２６】
この複数の処理は、お互いに依存関係がある処理が含まれている。依存関係とは、例えば、ある処理が、自身よりも先に実行された処理で更新されたデータを参照するなどの関係である。つまり、複数の処理は、シングルプログラムにおける実行順序が先である先行処理と、先行処理の実行が完了した後に実行させる後行処理とを含んでいる。そして、後行処理は、先行処理の影響を受ける処理であり、例えば、先行処理で内容が更新される可能性があるデータなどを用いる処理である。
【００２７】
ここで、図１を用いて、コンピュータ１０の構成に関して説明する。コンピュータ１０は、並列化方法を実行する並列化ツールに相当し、並列プログラム２１ａ１を生成する。コンピュータ１０は、ディスプレイ１１、ＨＤＤ１２、ＣＰＵ１３、ＲＯＭ１４、ＲＡＭ１５、入力装置１６、読取部１７などを備えて構成されている。また、コンピュータ１０は、記憶媒体１８に記憶された記憶内容を読み取り可能に構成されている。この記憶媒体１８には、自動並列化コンパイラ１が記憶されている。また、コンピュータ１０は、後程図５を用いて説明するが、各種機能を備えている。
【００２８】
なお、ＨＤＤは、hard disk driveの略称である。ＣＰＵは、Central Processing Unitの略称である。ＲＯＭは、Read Only Memoryの略称である。ＲＡＭは、Random Access Memoryの略称である。コンピュータ１０及び記憶媒体１８の構成は、特開２０１５−１８０７号公報に記載されたパーソナルコンピュータ１００及び記憶媒体１８０を参照されたい。
【００２９】
自動並列化コンパイラ１は、並列プログラム２１ａ１を生成するための手順を含んでいる。よって、自動並列化コンパイラ１は、並列化方法に相当する。つまり、自動並列化コンパイラ１は、並列化方法を含むプログラムである。自動並列化コンパイラ１は、特開２０１５−１８０７号公報に記載されたものに加えて、抽出手順と結合手順を含んでいる。さらに、自動並列化コンパイラ１は、処理パターンＰｔ０〜Ｐｔ７毎に、並列プログラム２１ａ１を生成する点が特開２０１５−１８０７号公報に記載されたものと異なる。抽出手順と結合手順は、後程説明する。
【００３０】
次に、車載装置２０の構成に関して説明する。車載装置２０は、図２に示すように、マルチコアプロセッサ２１、通信部２２、センサ部２３、入出力ポート２４を備えて構成されている。また、マルチコアプロセッサ２１は、ＲＯＭ２１ａ、ＲＡＭ２１ｂ、第１コア２１ｃ、第２コア２１ｄを備えて構成されている。車載装置２０は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。ここでは、一例として、車載装置２０をエンジン制御装置に適用した例を採用する。この場合、並列プログラム２１ａ１は、エンジン制御などの自動車制御プログラムと言える。しかしながら、並列プログラム２１ａ１は、これに限定されない。なお、コアは、プロセッサエレメントＰＥとも称することができる。よって、後程説明する並列プログラム２１ａ１中のＰＥ０は、第１コア２１ｃを示している。一方、ＰＥ１は第２コア２１ｄを示している。
【００３１】
ＲＡＭ２１ｂ、通信部２２、センサ部２３、入出力ポート２４は、特開２０１５−１８０７号公報に記載されたＲＡＭ４２０、通信部４３０、センサ部４５０、入出力ポート４６０を参照されたい。
【００３２】
ＲＯＭ２１ａには、自動並列化コンパイラ１を用いて生成された並列プログラム２１ａ１が記憶されている。第１コア２１ｃと第２コア２１ｄは、並列プログラム２１ａ１を実行することで、エンジン制御を行う。なお、第１コア２１ｃと第２コア２１ｄは、図示しないカウンタのカウント値を取得可能に構成されている。
【００３３】
次に、図５〜図６を用いて、コンピュータ１０が自動並列化コンパイラ１を実行した際の処理動作に関して説明する。コンピュータ１０は、自動並列化コンパイラ１を実行することで並列プログラム２１ａ１を生成する。
【００３４】
図５は、コンピュータ１０の処理を機能ブロックで表した図面である。コンピュータ１０は、パターン抽出部１０ａ、定義部１０ｂ、解析部１０ｃ、コア割付部１０ｄ、スケジューリング部１０ｅ、結合部１０ｆを含んで構成されている。
【００３５】
パターン抽出部１０ａは、シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンＰｔ０〜Ｐｔ７を抽出する（抽出部）。本実施形態のパターン抽出部１０ａは、シングルプログラムから、複数の条件の夫々における実行周期の組み合わせである処理パターンＰｔ０〜Ｐｔ７を抽出する。また、パターン抽出部１０ａは、シングルプログラムから、複数の条件としてのカウント値の夫々における処理パターンＰｔ０〜Ｐｔ７を抽出する。
【００３６】
つまり、パターン抽出部１０ａは、シングルプログラムから上記のような複数の処理パターンＰｔ０〜Ｐｔ７を抽出する。このように、コンピュータ１０は、自動並列化コンパイラ１を実行することで、シングルプログラムから複数の処理パターンＰｔ０〜Ｐｔ７を抽出する。よって、自動並列化コンパイラ１は、シングルプログラムから、複数の条件の夫々における種類の組み合わせである処理パターンを抽出する抽出手順を含んでいると言える。このため、パターン抽出部１０ａは、抽出手順に相当するとみなせる。
【００３７】
定義部１０ｂでは、シングルプログラムと、抽出された複数の処理パターンＰｔ０〜Ｐｔ７とを用いて、並列化を行う範囲を定義する。つまり、定義部１０ｂでは、シングルプログラムのソースコードにおいて各処理パターンＰｔ０〜Ｐｔ７の該当する夫々の範囲を、並列化のための解析を行う範囲に定義する。よって、ここでは、８個の並列化のための解析を行う範囲が定義される。なお、定義部１０ｂでは、シングルプログラムのソースコードから、複数の処理パターンＰｔ０〜Ｐｔ７の夫々に該当するソースコードを選択するとも言える。また、定義部１０ｂは、例えば、シングルプログラムと、複数の処理パターンＰｔ０〜Ｐｔ７の情報が入力される。
【００３８】
解析部１０ｃは、夫々の範囲を個別に対象として、シングルプログラムの依存関係を解析し、並列化可能な処理を抽出する（生成部）。言い換えると、解析部１０ｃは、抽出した処理パターンＰｔ０〜Ｐｔ７毎に、シングルプログラムの依存関係を解析し、並列化可能な処理を抽出する。つまり、解析部１０ｃは、第１処理パターンＰｔ０に対応する範囲を対象として並列化可能な処理を抽出するとともに、第２処理パターンＰｔ１に対応する範囲から第８処理パターンＰｔ７に対応する範囲の夫々を対象として、並列化可能な処理を抽出する。また、解析部１０ｃは、夫々の範囲を個別に対象として、特開２０１５−１８０７号公報と同様に並列化可能な処理を抽出すると言える。
【００３９】
なお、解析部１０ｃは、データ依存解析部とも言える。また、解析部１０ｃは、夫々の範囲を個別に対象として、各処理の処理時間、すなわち、各処理の実行に要する時間を解析してもよい。
【００４０】
コア割付部１０ｄは、夫々の範囲を個別に対象として、各処理を各コア２１ｃ、２１ｄに割り付ける（生成部）。言い換えると、コア割付部１０ｄは、抽出した処理パターンＰｔ０〜Ｐｔ７毎に、各処理を各コア２１ｃ、２１ｄに割り振る。また、コア割付部１０ｄは、夫々の範囲を個別に対象として、特開２０１５−１８０７号公報と同様に各処理を割り振ると言える。
【００４１】
スケジューリング部１０ｅは、夫々の範囲を個別に対象として、各処理のスケジューリングを行うことで、各処理を並び替えたりする（生成部）。言い換えると、スケジューリング部１０ｅは、抽出した処理パターンＰｔ０〜Ｐｔ７毎に、各処理のスケジューリングを行う。例えば、スケジューリング部１０ｅは、夫々の範囲を個別に対象として、複数の処理をシングルプログラムにおける実行順に並べる。また、スケジューリング部１０ｅは、夫々の範囲を個別に対象として、特開２０１５−１８０７号公報と同様にスケジューリングを行うと言える。
【００４２】
これによって、コンピュータ１０は、結合前プログラム２１ａ２を生成する。結合前プログラム２１ａ２は、図６に示すように、複数のプレプログラムＰｇ０〜Ｐｇ７を含んでいる。各プレプログラムＰｇ０〜Ｐｇ７は、処理パターンＰｔ０〜Ｐｔ７毎に並列化されたソースコードである。また、各プレプログラムＰｇ０〜Ｐｇ７は、複数の処理パターンＰｔ０〜Ｐｔ７の夫々に対応した並列プログラムとも言える。つまり、コンピュータ１０は、処理パターンＰｔ０〜Ｐｔ７の数だけプレプログラムＰｇ０〜Ｐｇ７を生成することになる。
【００４３】
つまり、第１プレプログラムＰｇ０は、第１処理パターンＰｔ０に含まれる処理を対象として、上記のように依存関係の解析、各コア２１ｃ、２１ｄへの割り振り、スケジューリングが行われたソースコードである。また、第１プレプログラムＰｇ０は、第１コア２１ｃ用の第１ソースコードＰｔ０１と、第２コア２１ｄ用の第２ソースコードＰｔ０２とを含んでいると言える。
【００４４】
同様に、第２プレプログラムＰｇ１は、第２処理パターンＰｔ１に含まれる処理を対象としたソースコードである。第３プレプログラムＰｇ２は、第３処理パターンＰｔ２に含まれる処理を対象としたソースコードである。第４プレプログラムＰｇ３は、第４処理パターンＰｔ３に含まれる処理を対象としたソースコードである。第５プレプログラムＰｇ４は、第５処理パターンＰｔ４に含まれる処理を対象としたソースコードである。第６プレプログラムＰｇ５は、第６処理パターンＰｔ５に含まれる処理を対象としたソースコードである。第７プレプログラムＰｇ６は、第７処理パターンＰｔ６に含まれる処理を対象としたソースコードである。第８プレプログラムＰｇ７は、第８処理パターンＰｔ７に含まれる処理を対象としたソースコードである。
【００４５】
例えば、第１プレプログラムＰｇ０は、第１処理パターンＰｔ０に含まれる１ｍｓ毎の処理である第１処理ＭＴ１と第３処理ＭＴ３、及び４ｍｓ毎の処理である第２処理ＭＴ２と第４処理ＭＴ４が、各コア２１ｃ、２１ｄに割り振られている。そして、第１プレプログラムＰｇ０は、図６、図７に示すように、第１コア２１ｃに第１処理ＭＴ１と第２処理ＭＴ２が割り振られており、第２コア２１ｄに第３処理ＭＴ３と第４処理ＭＴ４が割り振られている。このように、第１プレプログラムＰｇ０は、実際に実行される処理のみでスケジューリングされる。このため、第１プレプログラムＰｇ０は、例えばマルチコアプロセッサ２１で実行された場合、第１コア２１ｃと第２コア２１ｄとで処理を実行する負荷のバランスが崩れることを抑制できる。他のプレプログラムＰｇ１〜Ｐｇ７に関しても同様である。
【００４６】
結合部１０ｆは、各プレプログラムＰｇ０〜Ｐｇ７を結合して、並列プログラム２１ａ１を生成する（生成部）。つまり、結合部１０ｆは、各プレプログラムＰｇ０〜Ｐｇ７における第１コア２１ｃ用のソースコードを結合するとともに、各プレプログラムＰｇ０〜Ｐｇ７における第２コア２１ｄ用のソースコードを結合する。これによって、結合部１０ｆは、図８に示すような並列プログラム２１ａ１を生成することになる。
【００４７】
並列プログラム２１ａ１は、第１コア２１ｃ用のプログラムと、第２コア２１ｄ用のプログラムとを含んでいる。また、第１コア２１ｃ用のプログラムは、例えば第１ソースコードＰｔ０１などの、各プレプログラムＰｇ０〜Ｐｇ７における第１コア２１ｃ用のソースコードを含んでいる。同様に、第２コア２１ｄ用のプログラムは、例えば第２ソースコードＰｔ０２などの、各プレプログラムＰｇ０〜Ｐｇ７における第２コア２１ｄ用のソースコードを含んでいる。
【００４８】
なお、図８における符号Ｐｔ１１は、第２プレプログラムＰｇ１における第１コア２１ｃ用のソースコードである。符号Ｐｔ１２は、第２プレプログラムＰｇ１における第２コア２１ｄ用のソースコードである。符号Ｐｔ７１は、第８プレプログラムＰｇ７における第１コア２１ｃ用のソースコードである。符号Ｐｔ７２は、第８プレプログラムＰｇ７における第２コア２１ｄ用のソースコードである。
【００４９】
このように、コンピュータ１０は、自動並列化コンパイラ１を実行することで、抽出した処理パターンＰｔ０〜Ｐｔ７毎に、複数の処理を各コア２１ｃ、２１ｄに割り振って、並列プログラム２１ａ１を生成する。よって、自動並列化コンパイラ１は、抽出した処理パターンＰｔ０〜Ｐｔ７毎に、複数の処理を各コア２１ｃ、２１ｄに割り振って、並列プログラム２１ａ１を生成する生成手順を含んでいると言える。このため、解析部１０ｃ、コア割付部１０ｄ、スケジューリング部１０ｅ、結合部１０ｆは、生成手順に相当するとみなせる。
【００５０】
また、コンピュータ１０は、自動並列化コンパイラ１を実行することで、各プレプログラムＰｇ０〜Ｐｇ７を結合する。よって、自動並列化コンパイラ１は、各プレプログラムＰｇ０〜Ｐｇ７を結合する結合手順を含んでいると言える。
【００５１】
以上のように、コンピュータ１０は、複数の実行周期の処理を含み、複数のカウント値の夫々によって実行する実行周期の組み合わせが異なるシングルプログラムから並列プログラムを２１ａ１生成する。そして、コンピュータ１０は、このシングルプログラムから、複数のカウント値の夫々における実行周期の組み合わせである処理パターンＰｔ０〜Ｐｔ７を抽出する。これによって、コンピュータ１０は、各カウント値で実行される処理を把握できる。さらに、コンピュータ１０は、抽出した処理パターンＰｔ０〜Ｐｔ７毎に、複数の処理を各コア２１ｃ、２１ｄに割り振って並列プログラム２１ａ１を生成する。このため、この並列プログラム２１ａ１は、マルチコアプロセッサ２１で実行された場合に、あるカウント値のときに実際は実行されない処理であるにもかかわらず、各コア２１ｃ、２１ｄに割り振られることを抑制できる。従って、コンピュータ１０は、マルチコアプロセッサ２１による効率低下を抑制可能な並列プログラム２１ａ１を作成できる。さらに、コンピュータ１０は、第１コア２１ｃと第２コア２１ｄとで処理を実行する負荷のバランスが崩れることを抑制できる。
【００５２】
なお、コンピュータ１０は、自動並列化コンパイラ１を実行することで、このような効果を奏することができる。このため、自動並列化コンパイラ１は、同様の効果を奏することができる。
【００５３】
また、上記のように、車載装置２０のＲＯＭ２１ａには、自動並列化コンパイラ１を用いて生成された並列プログラム２１ａ１、言い換えると、コンピュータ１０によって生成された並列プログラム２１ａ１が記憶されている。そして、車載装置２０は、第１コア２１ｃが並列プログラム２１ａ１における第１コア２１ｃ用のプログラムを実行し、第２コア２１ｄが並列プログラム２１ａ１における第２コア２１ｄ用のプログラムを実行することで、エンジン制御を行う。このため、車載装置２０は、マルチコアプロセッサ２１による効率低下を抑制できる。
【００５４】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【００５５】
例えば、本発明は、作業者などが、特開２０１５−１８０７号公報に記載された並列化方法に加えて、抽出手順と生成手順を行うことで、並列プログラム２１ａ１を生成してもよい。
【００５６】
また、シングルプログラムは、複数のセンサの検出結果である複数のセンサ値を取得するシングルコアマイコン用のプログラムであって、複数の条件としてのセンサ値毎に実行する種類の組み合わせが異なるものであってもよい。例えば、エンジンの回転数を検出する回転センサのセンサ値や、バッテリの電圧を検出する電圧センサのセンサ値などに応じて、処理の組み合わせが異なるように構成されたシングルプログラムを採用できる。なお、種類は、上記実施形態と同様に、実行周期を採用できる。この場合、コンピュータ１０は、シングルプログラムから、複数の条件としてのセンサ値の夫々における処理パターンを抽出する。コンピュータ１０は、このように動作しても、上記と同様の効果を奏することができる。また、自動並列化コンパイラ１は、コンピュータ１０によって実行されるため、上記と同様の効果を奏することができる。
【符号の説明】
【００５７】
１  自動並列化コンパイラ、１０  コンピュータ、１０ａ  パターン抽出部、１０ｂ  定義部、１０ｃ  解析部、１０ｄ  コア割付部、１０ｅ  スケジューリング部、１０ｆ  結合部、１１  ディスプレイ、１２  ＨＤＤ、１３  ＣＰＵ、１４  ＲＯＭ、１５  ＲＡＭ、１６  入力装置、１７  読取部、１８  記憶媒体、２０  車載装置、２１  マルチコアプロセッサ、２１ａ  ＲＯＭ、２１ａ１  並列プログラム、２１ｂ  ＲＡＭ、２１ｃ  第１コア、２１ｄ  第２コア、２２  通信部、２３  センサ部、２４  入出力ポート
【図１】
0006481585.tif 000002
【図２】
0006481585.tif 000003
【図３】
0006481585.tif 000004
【図４】
0006481585.tif 000005
【図５】
0006481585.tif 000006
【図６】
0006481585.tif 000007
【図７】
0006481585.tif 000008
【図８】
0006481585.tif 000009