(57)【特許請求の範囲】
【請求項１】
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理（Ａ１〜Ａ３、Ｂ１、Ｂ２、Ｃ１、Ｄ１〜Ｄ３、Ｅ１〜Ｅ３、ＭＴ１〜ＭＴ９）から複数の前記コアを有するマルチコアマイコン用に並列化した並列プログラムを生成するコンピュータが実行する方法であり、前記シングルプログラムにおける複数の前記処理の依存関係を解析して、複数の前記処理を前記マルチコアマイコンの異なる前記コア用に割り振る並列化方法であって、
複数の前記処理のうち実行期限の要件がある優先処理に対して、前記シングルプログラムにおける実行順に管理番号を付与するとともに、前記優先処理であることを示す優先情報を付与する付与処理手順（Ｓ１０、Ｓ１１）と、
各コアに割り振られる複数の前記処理毎に、前記管理番号と前記優先情報とに基づき、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置する配置処理手順（Ｓ２０〜Ｓ２５、Ｓ３０〜Ｓ３３）と、を備えていることを特徴とする並列化方法。
【請求項２】
前記付与処理手順では、全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与し、
前記配置処理手順（Ｓ２０〜Ｓ２５）は、各コアに割り振られた複数の前記処理毎に、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように並び変えて配置する手順を含んでいることを特徴とする請求項１に記載の並列化方法。
【請求項３】
前記配置処理手順（Ｓ２０〜Ｓ２５）では、前記優先処理に付与された前記管理番号と、前記優先処理の一つ前に配置された前記処理である優先前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記優先前処理よりも前記優先処理の方が先であり、且つ、前記優先前処理と前記優先処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記優先前処理と前記優先処理とを並び替える手順を含んでいることを特徴とする請求項２に記載の並列化方法。
【請求項４】
前記配置処理手順（Ｓ３０〜Ｓ３３）では、前記優先処理と前記優先処理ではない通常処理とを、前記依存関係を満たすように各コアに割り振りつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置する手順を含んでいることを特徴とする請求項１に記載の並列化方法。
【請求項５】
前記配置処理手順では、前記優先処理を配置することで前記依存関係が崩れる場合、前記依存関係を満たすように、前記通常処理を配置する手順を含んでいることを特徴とする請求項４に記載の並列化方法。
【請求項６】
前記付与処理手順では、前記優先処理を含む全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与する手順を含んでおり、
一つの前記コアにおいて、他の前記コアにおける前記処理の実行が完了したことを待つ完了待ちが発生する場合、前記完了待ちの要因となる前記処理である要因処理に付与された前記管理番号と、前記要因処理の一つ前に配置された前記処理である要因前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記要因前処理よりも前記要因処理の方が先であり、且つ、前記要因前処理と前記要因処理の実行順を入れ替えても前記依存関係が崩れない場合に、前記完了待ちを減らすために前記要因前処理と前記要因処理とを並び替える低減処理手順を備えていることを特徴とする請求項５に記載の並列化方法。
【請求項７】
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理（Ａ１〜Ａ３、Ｂ１、Ｂ２、Ｃ１、Ｄ１〜Ｄ３、Ｅ１〜Ｅ３、ＭＴ１〜ＭＴ９）から複数の前記コアを有するマルチコアマイコン用に並列化した並列プログラムを生成するツールであり、前記シングルプログラムにおける複数の前記処理の依存関係を解析して、複数の前記処理を前記マルチコアマイコンの異なる前記コア用に割り振るコンピュータを含んで構成された並列化ツールであって、
複数の前記処理のうち実行期限の要件がある優先処理に対して、前記シングルプログラムにおける実行順に管理番号を付与するとともに、前記優先処理であることを示す優先情報を付与する付与ステップ（Ｓ１０、Ｓ１１）と、
各コアに割り振られる複数の前記処理毎に、前記管理番号と前記優先情報とに基づき、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置する配置ステップ（Ｓ２０〜Ｓ２５、Ｓ３０〜Ｓ３３）と、を前記コンピュータが実行することを特徴とする並列化ツール。
【請求項８】
前記付与ステップでは、全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与し、
前記配置ステップ（Ｓ２０〜Ｓ２５）は、各コアに割り振られた複数の前記処理毎に、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように並び変えて配置することを特徴とする請求項７に記載の並列化ツール。
【請求項９】
前記配置ステップ（Ｓ２０〜Ｓ２５）では、前記優先処理に付与された前記管理番号と、前記優先処理の一つ前に配置された前記処理である優先前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記優先前処理よりも前記優先処理の方が先であり、且つ、前記優先前処理と前記優先処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記優先前処理と前記優先処理とを並び替えることを特徴とする請求項８に記載の並列化ツール。
【請求項１０】
前記配置ステップ（Ｓ３０〜Ｓ３３）では、前記優先処理と前記優先処理ではない通常処理とを、前記依存関係を満たすように各コアに割り振りつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置することを特徴とする請求項７に記載の並列化ツール。
【請求項１１】
前記配置ステップでは、前記優先処理を配置することで前記依存関係が崩れる場合、前記依存関係を満たすように、前記通常処理を配置することを特徴とする請求項１０に記載の並列化ツール。
【請求項１２】
前記付与ステップでは、前記優先処理を含む全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与し、
一つの前記コアにおいて、他の前記コアにおける前記処理の実行が完了したことを待つ完了待ちが発生する場合、前記完了待ちの要因となる前記処理である要因処理に付与された前記管理番号と、前記要因処理の一つ前に配置された前記処理である要因前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記要因前処理よりも前記要因処理の方が先であり、且つ、前記要因前処理と前記要因処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記完了待ちを減らすために前記要因前処理と前記要因処理とを並び替える低減ステップを前記コンピュータが更に実行することを特徴とする請求項１１に記載の並列化ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シングルコアマイコン用のプログラムから、マルチコアマイコン用のプログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成されたマルチコアマイコン用のプログラムを実装した車載装置に関する。
【背景技術】
【０００２】
従来、シングルコアマイコン用のプログラムから、マルチコアマイコン用のプログラムを生成する並列化方法の一例として特許文献１に開示された並列化コンパイル方法がある。
【０００３】
この並列化コンパイル方法では、シングルプロセッサシステムにより実行される組込みシステム用の逐次プログラムを複数のマクロタスク（以下、ＭＴ）に分割した後、制御依存性を有するＭＴを一つのＭＴに融合する。その後、並列化コンパイル方法では、データ依存性に基づき並列実行可能なＭＴを抽出するとともに、スタティックスケジューリングを行い、並列プログラムを生成する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ＭＴの中には、実行期限が要件として規定されているＭＴ（以下、優先処理）が含まれることも考えられる。しかしながら、シングルコアマイコン用のプログラムは、ＭＴが逐次実行されるため、優先処理の完了が最も遅れる時間を見積る事ができ、実行期限内に優先処理が完了するか否かの判断が容易である。このため、シングルコアマイコン用のプログラムでは、ＭＴに実行期限を示す内容が含まれていない場合がある。従って、特許文献１で生成された並列プログラムでは、優先処理の実行期限が満たされないことが起こりうる。
【０００６】
本発明は、上記問題点に鑑みなされたものであり、早期に優先処理が実行され、優先処理の実行期限が満たされやすい並列プログラムを生成可能にできる並列化方法、並列化ツール、車載装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理（Ａ１〜Ａ３、Ｂ１、Ｂ２、Ｃ１、Ｄ１〜Ｄ３、Ｅ１〜Ｅ３、ＭＴ１〜ＭＴ９）から複数のコアを有するマルチコアマイコン用に並列化した並列プログラムを生成するコンピュータが実行する方法であり、シングルプログラムにおける複数の処理の依存関係を解析して、複数の処理をマルチコアマイコンの異なるコア用に割り振る並列化方法であって、
複数の処理のうち実行期限の要件がある優先処理に対して、シングルプログラムにおける実行順に管理番号を付与するとともに、優先処理であることを示す優先情報を付与する付与処理手順（Ｓ１０、Ｓ１１）と、
各コアに割り振られる複数の処理毎に、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先処理ほど、並列プログラムにおける実行順が早くなるように配置する配置処理手順（Ｓ２０〜Ｓ２５、Ｓ３０〜Ｓ３３）と、を備えていることを特徴とする。
【０００８】
このように、本発明は、付与処理手順を備えているため、複数の処理における優先処理と、優先処理のシングルプログラムにおける実行順とを把握可能とすることができる。そして、本発明は、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先処理ほど、並列プログラムにおける優先処理の実行順が早くなるように配置する。このため、本発明は、早期に優先処理が実行され、優先処理の実行期限が満たされやすい並列プログラムを生成可能とすることができる。
【０００９】
また、本発明のさらなる特徴は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理（Ａ１〜Ａ３、Ｂ１、Ｂ２、Ｃ１、Ｄ１〜Ｄ３、Ｅ１〜Ｅ３、ＭＴ１〜ＭＴ９）から複数のコアを有するマルチコアマイコン用に並列化した並列プログラムを生成するツールであり、シングルプログラムにおける複数の処理の依存関係を解析して、複数の処理をマルチコアマイコンの異なるコア用に割り振るコンピュータを含んで構成された並列化ツールであって、
複数の処理のうち実行期限の要件がある優先処理に対して、シングルプログラムにおける実行順に管理番号を付与するとともに、優先処理であることを示す優先情報を付与する付与ステップ（Ｓ１０、Ｓ１１）と、
各コアに割り振られる複数の処理毎に、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先処理ほど、並列プログラムにおける実行順が早くなるように配置する配置ステップ（Ｓ２０〜Ｓ２５、Ｓ３０〜Ｓ３３）と、をコンピュータが実行する点にある。
【００１０】
これによって、上記と同様に、早期に優先処理が実行され、優先処理の実行期限が満たされやすい並列プログラムを生成できる。
【００１３】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態における並列化ツールの概略構成を示すブロック図である。
【図２】第１実施形態における車載装置の概略構成を示すブロック図である。
【図３】第１実施形態における並列化方法の一部を示す図面である。
【図４】第１実施形態における並列化方法の付与処理がなされたシングルプログラムを示す図面である。
【図５】第１実施形態における並列化方法の抽出処理で並び替えられたマクロタスクを示す図面である。
【図６】第１実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。
【図７】第１実施形態における並列化方法の再配置処理で各コア用に配置されたマクロタスクを示す図面である。
【図８】第１実施形態における並列化方法の付与処理を示すフローチャートである。
【図９】第１実施形態における並列化方法の再配置処理を示すフローチャートである。
【図１０】第２実施形態における並列化方法の配置処理を示すフローチャートである。
【図１１】第２実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。
【図１２】第３実施形態における並列化方法の排除処理を示すフローチャートである。
【図１３】第３実施形態における並列化方法の排除処理を経て各コア用に配置されたマクロタスクを示す図面である。
【図１４】第４実施形態における車載装置の概略構成を示すブロック図である。
【図１５】第４実施形態におけるシングルプログラムを示す図面である。
【図１６】第４実施形態における並列化方法の付与処理がなされたシングルプログラムを示す図面である。
【図１７】第４実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。
【図１８】第４実施形態における並列化方法の再配置処理で各コア用に配置されたマクロタスクを示す図面である。
【図１９】第５実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。
【図２０】第６実施形態における並列化方法の排除処理を経て各コア用に配置されたマクロタスクを示す図面である。
【発明を実施するための形態】
【００１５】
以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１６】
（第１実施形態）
本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数のマクロタスクＡ１〜Ａ３などから第１コア２１ｃと第２コア２１ｄを有するマルチコアマイコン用に並列化した並列プログラム２１ａ１を生成する例を採用する。なお、並列プログラム２１ａ１を生成する際には、特開２０１５−１８０７号公報に記載されているように、シングルプログラムにおける複数のマクロタスクの依存関係を解析して、複数のマクロタスクをマルチコアマイコンの異なるコア用に割り振る。この点に関しては、特開２０１５−１８０７号公報を参照されたい。なお、マイコンは、プロセッサと言い換えることもできる。
【００１７】
図３に示すように、シングルプログラムは、一例として、マクロタスクＡ１〜Ａ３、Ｂ１、Ｂ２、Ｃ１、Ｄ１〜Ｄ３、Ｅ１〜Ｅ３を備えたものを採用する。このマクロタスクは、特許請求の範囲における処理に相当する。また、マクロタスクは、例えば図３のように、ＭＴと略称で記載することもある。さらに、マクロタスクは、処理ブロックと言い換えることもできる。なお、シングルプログラムは、逐次プログラムとも言える。
【００１８】
複数のマクロタスクには、実行期限があるマクロタスクが含まれている。実行期限があるマクロタスクは、この実行期限までに実行が完了している必要がある。なお、実行期限とは、マイコンによって早期に実行する必要がある期限とも言える。実行期限が要件として規定されたマクロタスクは、特許請求の範囲における優先処理に相当する。本実施形態では、ＭＴＡ３、ＭＴＣ１、ＭＴＤ２が優先処理である例を採用している。なお、図面においては、優先処理と、優先処理ではない通常処理とを区別するために、優先処理にハッチングを施している。また、以下においては、優先処理を優先マクロタスク（優先ＭＴ）、通常処理を通常マクロタスク（通常ＭＴ）とも称する。
【００１９】
ここで、コンピュータ１０と、車載装置２０の構成に関して説明する。コンピュータ１０は、並列化方法を実行する並列化ツールに相当する。図１に示すように、コンピュータ１０は、ディスプレイ１１、ＨＤＤ１２、ＣＰＵ１３、ＲＯＭ１４、ＲＡＭ１５、入力装置１６、読取部１７などを備えて構成されている。また、コンピュータ１０は、記憶媒体１８に記憶された記憶内容を読み取り可能に構成されている。なお、ＨＤＤは、hard disk driveの略称である。ＣＰＵは、Central Processing Unitの略称である。ＲＯＭは、Read Only Memoryの略称である。ＲＡＭは、Random Access Memoryの略称である。コンピュータ１０及び記憶媒体１８の構成は、特開２０１５−１８０７号公報に記載されたパーソナルコンピュータ１００及び記憶媒体１８０を参照されたい。
【００２０】
自動並列化コンパイラ１は、並列化方法に相当する。つまり、自動並列化コンパイラ１は、並列化方法を含むプログラムである。自動並列化コンパイラ１は、特開２０１５−１８０７号公報に記載されたものに加えて、付与処理手順、配置処理手順を含んでいる。付与処理手順及び配置処理手順は、後程説明する。特に、本実施形態では、配置処理手順として、再配置処理手順を含んでいると言える。
【００２１】
車載装置２０は、図２に示すように、マルチコアプロセッサ２１、ＲＯＭ２１ａ、ＲＡＭ２１ｂ、第１コア２１ｃ、第２コア２１ｄ、通信部２２、センサ部２３、入出力ポート２４を備えて構成されている。車載装置２０は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。ここでは、一例として、車載装置２０をエンジン制御装置に適用した例を採用する。この場合、並列プログラム２１ａ１は、エンジン制御などの自動車制御プログラムと言える。しかしながら、並列プログラム２１ａ１は、これに限定されない。なお、マルチコアプロセッサは、マルチコアマイコンに相当する。また、コアは、プロセッサエレメントとも称することができる。
【００２２】
ＲＡＭ２１ｂ、通信部２２、センサ部２３、入出力ポート２４は、特開２０１５−１８０７号公報に記載されたＲＡＭ４２０、通信部４３０、センサ部４５０、入出力ポート４６０を参照されたい。
【００２３】
ＲＯＭ２１ａには、自動並列化コンパイラ１を用いて生成された並列プログラム２１ａ１が記憶されている。第１コア２１ｃと第２コア２１ｄは、並列プログラム２１ａ１を実行することで、エンジン制御を行う。
【００２４】
次に、図３〜図９を用いて、コンピュータ１０が自動並列化コンパイラ１を実行した際の処理動作に関して説明する。
【００２５】
図３に示すように、シングルプログラムの実行順序は、ＭＴＡ１〜ＭＴＡ３、ＭＴＢ１、ＭＴＢ２、ＭＴＣ１、ＭＴＤ１〜ＭＴＤ３、ＭＴＥ１〜ＭＴＥ３である。つまり、シングルプログラムは、この順番で実行される。コンピュータ１０は、このシングルプログラムの各ＭＴ単位でデータの依存関係を解析する。依存関係とは、あるＭＴが、自身よりも先に実行されたＭＴで更新されたデータを参照する関係である。つまり、複数のＭＴＡ１〜ＭＴＥ３は、実行順序が先である先行ＭＴと、先行ＭＴの実行が完了した後に実行させる後行ＭＴとを含んでいる。そして、後行ＭＴは、先行ＭＴの影響を受けるＭＴであり、例えば、先行ＭＴで内容が更新される可能性があるデータなどを用いるＭＴである。また、依存関係は、更新と参照の順序が逆の場合も含む。図３における矢印は、依存関係を示している。この依存関係の解析に関しては、特開２０１５−１８０７号公報を参照されたい。
【００２６】
コンピュータ１０は、依存関係の解析が終了すると、図８のフローチャートを実行する。ステップＳ１０では、各ＭＴに対して管理番号を付与する（付与ステップ）。ステップＳ１１では、優先ＭＴに対して優先情報を付与する（付与ステップ）。つまり、コンピュータ１０は、優先ＭＴに加えて通常ＭＴを含む全ＭＴに対して、シングルプログラムにおける実行順に管理番号０〜１１を付与するとともに、優先ＭＴに対して優先情報を付与する。本実施形態の管理番号は、連番であり、数字が小さい方がシングルプログラムにおける実行順が早いことを示している。これによって、シングルプログラムは、図４に示すように、全ＭＴに対して管理番号０〜１１が付与され、優先ＭＴに優先情報が付与される。各ＭＴは、管理番号が付与されることで、例えば二つのＭＴにおいて、どちらのＭＴがシングルプログラムにおける実行順が早いかを把握可能である。また、優先ＭＴには、優先情報が付与されることで、各ＭＴが優先ＭＴであるか否かを把握可能である。なお、図面では、優先情報として優と記載している。
【００２７】
このように、コンピュータ１０は、自動並列化コンパイラ１を実行することで、付与ステップを行うことになる。よって、自動並列化コンパイラ１は、複数のＭＴのうち実行期限の要件がある優先ＭＴに対して、シングルプログラムにおける実行順に管理番号を付与するとともに、優先ＭＴであることを示す優先情報を付与する手順（付与処理手順）を含んでいると言える。また、本実施形態の自動並列化コンパイラ１は、優先ＭＴに加えて通常ＭＴを含む全てのＭＴに対して、シングルプログラムにおける実行順に管理番号を付与する手順（付与処理手順）を含んでいると言える。つまり、ステップＳ１０、Ｓ１１は、付与処理手順に相当するとも言える。
【００２８】
また、コンピュータ１０は、シングルプログラムから並列化可能な処理を抽出する。このとき、コンピュータ１０は、例えば、図５に示すように、並列化可能なＭＴが横に並ぶように図を並べ替える。この抽出に関しては、特開２０１５−１８０７号公報を参照されたい。本実施形態における抽出は、ＭＴに管理番号と優先情報が付与されている点だけが特開２０１５−１８０７号公報と異なる。
【００２９】
そして、コンピュータ１０は、依存関係と処理時間をもとに、複数のＭＴを第１コア２１ｃと第２コア２１ｄとに割り振る。つまり、コンピュータ１０は、第１コア２１ｃ用に複数のＭＴを配置するとともに、第２コア２１ｄ用に複数のＭＴを配置する。これによって、シングルプログラムは、図６に示すように、全ＭＴが第１コア２１ｃと第２コア２１ｄとに割り振られる。具体的には、ＭＴＡ２、ＭＴＢ１、ＭＴＤ１、ＭＴＤ３、ＭＴＥ１が第１コア２１ｃ用であり、ＭＴＡ１、ＭＴＡ３、ＭＴＢ２、ＭＴＤ２、ＭＴＥ２、ＭＴＥ３、ＭＴＣ１が第２コア２１ｄ用である。
【００３０】
なお、ＭＴＡ２、ＭＴＢ１、ＭＴＤ１、ＭＴＤ３、ＭＴＥ１や、ＭＴＡ１、ＭＴＡ３、ＭＴＢ２、ＭＴＤ２、ＭＴＥ２、ＭＴＥ３、ＭＴＣ１は、各コア２１ｃ、２１ｄ用に割り振られたＭＴの集まりであるため、ＭＴ群とも言える。以下においては、第１コア２１ｃ用に割り振られたＭＴＡ２、ＭＴＢ１、ＭＴＤ１、ＭＴＤ３、ＭＴＥ１を第１ＭＴ群、第２コア２１ｄ用に割り振られたＭＴＡ１、ＭＴＡ３、ＭＴＢ２、ＭＴＤ２、ＭＴＥ２、ＭＴＥ３、ＭＴＣ１を第２ＭＴ群とも称する。
【００３１】
この割り振りに関しては、特開２０１５−１８０７号公報を参照されたい。本実施形態における割り振りは、ＭＴに管理番号と優先情報が付与されている点だけが特開２０１５−１８０７号公報と異なる。
【００３２】
図６に示すように、第１コア２１ｃに割り振られたＭＴＡ２などと、第２コア２１ｄに割り振られたＭＴＡ１などは、並列プログラムとして用いることができるため、仮並列プログラムとも言える。この仮並列プログラムは、特開２０１５−１８０７号公報に記載された並列化方法によって作成できる。つまり、コンピュータ１０は、特開２０１５−１８０７号公報に記載された並列化方法に従って、一旦、仮並列プログラムを作成する。
【００３３】
しかしながら、ＭＴＣ１がＭＴＡ２の後にさえ実施されれば良いため、仮並列プログラムでは、ＭＴＣ１の実行順が最後になってしまう可能性がある。この場合、ＭＴＣ１は、仮並列プログラムにおける実行順がシングルコアソフトにおける実行順より遅くなる。
【００３４】
そこで、コンピュータ１０は、上記のようにＭＴを第１コア２１ｃと第２コア２１ｄに割り振った後に、図９のフローチャートを実行する。コンピュータ１０は、各コア２１ｃ、２１ｄに割り振られた複数のＭＴ毎に、すなわち、各ＭＴ群に対して個別に図９のフローチャートを実行する。なお、コンピュータ１０は、コア間の依存関係を満たしつつ、優先ＭＴが含まれているＭＴ群のみを対象にして図９のフローチャートを実行する。よって、本実施形態では、コンピュータ１０は、優先ＭＴが含まれていない第１ＭＴ群は対象とせず、第２ＭＴ群のみを対象に図９のフローチャートを実行する。当然ながら、第１ＭＴ群と第２ＭＴ群に優先ＭＴが含まれていた場合、コンピュータ１０は、第１ＭＴ群を対象に図９のフローチャートを実行し、且つ、第２ＭＴ群を対象に図９のフローチャートを実行する。さらに、後程説明するステップＳ２４では、コア間の依存関係を満たすために、全ＭＴ群を対象として依存関係を維持できるか否かを判定する。
【００３５】
しかしながら、本発明はこれに限定されない。コンピュータ１０は、ＭＴ毎に図９のフローチャートを実行するのではなく、コア間の依存関係を満たしつつ、全ＭＴを対象に図９のフローチャートを実行してもよい。
【００３６】
ステップＳ２０では、優先ＭＴの管理番号を対象ＭＴ番号とする（配置ステップ）。コンピュータ１０は、ＭＴ群から優先ＭＴを抽出して、この優先ＭＴの管理番号を対象ＭＴ番号とする。
【００３７】
ステップＳ２１では、優先ＭＴの一つ前の処理、すなわち優先前ＭＴの管理番号を比較先ＭＴ番号とする（配置ステップ）。コンピュータ１０は、ＭＴ群から優先ＭＴの一つ前に配置されている優先前ＭＴを抽出して、この優先前ＭＴの管理番号を比較先ＭＴ番号とする。なお、優先前ＭＴは、比較先ＭＴと言い換えることもできる。
【００３８】
ステップＳ２２では、対象ＭＴ番号＜比較先ＭＴ番号であるか否かを判定する（配置ステップ）。コンピュータ１０は、対象ＭＴ番号と比較先ＭＴ番号とを比較して、シングルプログラムにおける実行順が優先前ＭＴよりも優先ＭＴの方が早いか否かを判定する。そして、コンピュータ１０は、対象ＭＴ番号＜比較先ＭＴ番号であると判定した場合、シングルプログラムにおける実行順が優先前ＭＴよりも優先ＭＴの方が早いとみなしてステップＳ２４へ進む。例えば、図６に示すように、今回の優先ＭＴがＭＴＣ１の場合、コンピュータ１０は、ステップＳ２４へ進むことになる。
【００３９】
また、コンピュータ１０は、対象ＭＴ番号＜比較先ＭＴ番号であると判定しなかった場合、シングルプログラムにおける実行順が優先ＭＴよりも優先前ＭＴの方が早いとみなしてステップＳ２３へ進む。なお、コンピュータ１０は、シングルプログラムにおける実行順が優先ＭＴよりも優先前ＭＴの方が早いとみなした場合、ＭＴ群における優先ＭＴの位置を変更することなく、ステップＳ２３へ進む。例えば、図６に示すように、今回の優先ＭＴがＭＴＡ３やＭＴＤ２の場合、コンピュータ１０は、ステップＳ２３へ進むことになる。よって、ＭＴＡ３とＭＴＤ２のＭＴ群における位置は、図６と図７に示すように変更されない。さらに、コンピュータ１０は、図７に示すように、ＭＴＣ１が並び替えられて再配置された場合、ステップＳ２２でＮＯ判定し、ステップＳ２３へ進むことになる。この並び替えに関しては、後程ステップＳ２４、Ｓ２５で説明する。
【００４０】
ステップＳ２３では、全優先ＭＴで再配置が完了したか否かを判定する（配置ステップ）。コンピュータ１０は、全ての優先ＭＴを対象としてステップＳ２２でＮＯ判定した場合に全優先ＭＴで再配置が完了したとみなして図９のフローチャートを終了する。また、コンピュータ１０は、ステップＳ２２でＮＯ判定していない優先ＭＴがある場合、全優先ＭＴで再配置が完了していないとみなしてステップＳ２０へ戻る。
【００４１】
ステップＳ２４では、依存関係を維持できるか否かを判定する（配置ステップ）。コンピュータ１０は、今回の優先ＭＴと優先前ＭＴとを並び替えても依存関係が崩れないと判定した場合、ステップＳ２５へ進む。また、コンピュータ１０は、今回の優先ＭＴと優先前ＭＴとを並び替えると依存関係が崩れると判定した場合、ステップＳ２３へ進む。例えば、今回の優先ＭＴがＭＴＣ１で、且つ、ＭＴＣ１の位置が図６のＭＴＥ３の直後やＭＴＥ２の直後やＭＴＤ２の直後であった場合、コンピュータ１０は、ステップＳ２５へ進むことになる。
【００４２】
ステップＳ２５では、対象ＭＴと優先前ＭＴと入れ替える（配置ステップ）。コンピュータ１０は、対象ＭＴと優先前ＭＴとを並び替えて配置する。今回の優先ＭＴがＭＴＣ１であった場合、コンピュータ１０は、ステップＳ２１、Ｓ２２、Ｓ２４、Ｓ２５を繰り返し実行することになるため、ＭＴＣ１とＭＴＥ３を並び替え、その後、ＭＴＣ１とＭＴＥ２を並び替え、その後、ＭＴＣ１とＭＴＤ２を並び替える。この結果、コンピュータ１０は、ＭＴＣ１を図６に示す位置から図７に示す位置に再配置する。このように再配置した場合、コンピュータ１０は、ステップＳ２２でＮＯ判定することになる。
【００４３】
このようにして、コンピュータ１０は、並列プログラム２１ａ１を作成する。つまり、コンピュータ１０は、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先ＭＴほど、並列プログラム２１ａ１における実行順が早くなるように配置する。この並列プログラム２１ａ１は、全ての優先ＭＴに関して、シングルプログラムのときよりも実行順が早くなっている。なお、図７に示すように、ＭＴＡ２、ＭＴＢ１、ＭＴＤ１、ＭＴＤ３、ＭＴＥ１の実行順で配置されたＭＴ群は、第１コア２１ｃ用のプログラムである。一方、ＭＴＡ１、ＭＴＡ３、ＭＴＢ２、ＭＴＣ１、ＭＴＤ２、ＭＴＥ２、ＭＴＥ３の実行順で配置されたＭＴ群は、第２コア２１ｄ用のプログラムである。
【００４４】
また、コンピュータ１０は、自動並列化コンパイラ１を実行することで、配置ステップを行うことになる。よって、自動並列化コンパイラ１は、優先ＭＴに付与された管理番号と、優先ＭＴの一つ前に配置された通常ＭＴに付与された管理番号とを比較する手順（配置処理手順）を含んでいる。さらに、自動並列化コンパイラ１は、シングルプログラムの実行順が通常ＭＴよりも優先ＭＴの方が先であり、且つ、通常ＭＴと優先ＭＴの処理順を入れ替えても依存関係が崩れない場合に、通常ＭＴと優先ＭＴとを並び替える手順（配置処理手順）とを含んでいる。つまり、ステップＳ２０〜Ｓ２５は、配置処理手順に相当するとも言える。
【００４５】
以上のように、自動並列化コンパイラ１は、付与処理手順を備えているため、複数のＭＴにおける優先ＭＴと、優先ＭＴのシングルプログラムにおける実行順とを把握可能とすることができる。そして、自動並列化コンパイラ１は、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先ＭＴほど、並列プログラム２１ａ１における優先ＭＴの実行順が早くなるように配置する手順を含んでいる。このため、自動並列化コンパイラ１は、早期に優先ＭＴが実行されやすい並列プログラム２１ａ１を生成可能とすることができる。従って、自動並列化コンパイラ１は、シングルコアソフトのときよりも優先ＭＴの実行順を遅らせない事ができ、優先ＭＴの実行期限が満たされやすい並列プログラム２１ａ１を生成可能とすることができる。
【００４６】
また、コンピュータ１０は、自動並列化コンパイラ１を実行するため、早期に優先ＭＴが実行され、優先ＭＴの実行期限が満たされやすい並列プログラム２１ａ１を生成できる。従って、コンピュータ１０は、実行期限の要件を満たしやすい並列プログラム２１ａ１を生成できる。
【００４７】
さらに、自動並列化コンパイラ１は、上記のように、優先ＭＴの管理番号と、一つ前に配置されたＭＴの管理番号とを比較して、ＭＴと優先ＭＴとを並び替える手順とを含んでいるため、容易に依存関係を満たしつつ並び変えを可能とすることができる。また、コンピュータ１０は、容易に並列プログラム２１ａ１を生成できる。
【００４８】
なお、自動並列化コンパイラ１は、ＭＴ群毎に、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先ＭＴほど、並列プログラム２１ａ１における実行順が早くなるように並び変えて配置する手順を含んでいれば採用できる。同様に、コンピュータ１０は、ＭＴ群毎に、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先ＭＴほど、並列プログラム２１ａ１における実行順が早くなるように並び変えて配置するものであれば採用できる。そして、車載装置２０は、ＭＴ群毎に、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先ＭＴほど、並列プログラム２１ａ１における実行順が早くなるように並び変えて配置された並列プログラムを備えていれば採用できる。
【００４９】
また、上記のように、車載装置２０のＲＯＭ２１ａには、自動並列化コンパイラ１を用いて生成された並列プログラム２１ａ１、言い換えると、コンピュータ１０によって生成された並列プログラム２１ａ１が記憶されている。そして、車載装置２０は、第１コア２１ｃが並列プログラム２１ａ１における第１コア２１ｃ用のプログラムを実行し、第２コア２１ｄが並列プログラム２１ａ１における第２コア２１ｄ用のプログラムを実行することで、エンジン制御を行う。このため、車載装置２０は、各コア２１ｃ、２１ｄが早期に優先ＭＴを実行しやすく、優先ＭＴの実行期限を満たしやすい。
【００５０】
なお、組み込みソフトウェアでは、処理の応答性を向上させるために、可能な限り処理を実装しないようにするため、優先ＭＴに実行要件が付与されていないことが考えられる。このような場合、特開２０１５−１８０７号公報に記載された並列化方法で生成された並列プログラムは、優先ＭＴの実行期限が見せない可能性がある。しかしながら、自動並列化コンパイラ１、コンピュータ１０、車載装置２０は、上記のように優れた効果を奏することができる。
【００５１】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明のその他の形態として、第２〜第６実施形態に関して説明する。上記実施形態及び第２〜第６実施形態は、夫々単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本発明は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００５２】
（第２実施形態）
本実施形態の自動並列化コンパイラ１は、仮並列プログラムを作成することなく並列プログラム２１ａ１を生成する手順を含んでいる点が第１実施形態と異なる。同様に、本実施形態のコンピュータ１０は、仮並列プログラムを作成することなく並列プログラム２１ａ１を生成する点が第１実施形態と異なる。そして、本実施形態の車載装置２０は、仮並列プログラムを作成することなく生成された並列プログラム２１ａ１が搭載されている点が第１実施形態と異なる。なお、本実施形態では、便宜的に、第１実施形態と同じ符号を採用する。また、以下の実施形態に関しても、便宜的に、第１実施形態と同じ符号を採用する。
【００５３】
なお、本実施形態の自動並列化コンパイラ１は、少なくとも優先ＭＴに対して、シングルプログラムにおける実行順に管理番号を付与する手順（付与処理手順）を含んでいる。よって、本実施形態のコンピュータ１０は、少なくとも優先ＭＴに対して、シングルプログラムにおける実行順に管理番号を付与する（付与ステップ）。また、本実施形態の車載装置２０は、少なくとも優先ＭＴに対して、シングルプログラムにおける実行順に管理番号が付与された並列プログラム２１ａ１を備えている。
【００５４】
本実施形態のコンピュータ１０は、図５を用いて説明したように、並列化可能な処理を抽出して並列化可能なＭＴが横に並ぶように図を並べ替えた後、図１０のフローチャートを実行する。つまり、本実施形態のコンピュータ１０は、図６を用いて説明した仮並列プログラムの生成は行なわない。本実施形態のコンピュータ１０は、図１０のフローチャートを実行することで、仮並列プログラムを作成することなく並列プログラム２１ａ１を生成する。
【００５５】
ステップＳ３０では、未配置の優先ＭＴで最も管理番号が小さい優先ＭＴを対象優先ＭＴとして選択する（配置ステップ）。本実施形態のコンピュータ１０は、各コア２１ｃ、２１ｄ用のプログラムとして配置されていない優先ＭＴのなかで、最も管理番号が小さい優先ＭＴを対象優先ＭＴとして選択する。なお、本実施形態のコンピュータ１０は、未配置の優先ＭＴがなかった場合、ステップＳ３１に進むことなく、ステップＳ３４へ進む。
【００５６】
ステップＳ３１では、現在の最上位に配置した場合に依存関係を維持できるか否かを判定する。（配置ステップ）。現在の最上位とは、各コア２１ｃ、２１ｄ用のプログラムにおいて、ＭＴが配置されておらず、実行順が最も早くなる位置である。そして、本実施形態のコンピュータ１０は、対象優先ＭＴを現在の最上位に配置した場合に、依存関係を維持できると判定した場合、すなわち、依存関係が崩れないと判定した場合、ステップＳ３２へ進む。また、本実施形態のコンピュータ１０は、依存関係を維持できると判定しなかった場合、ステップＳ３４へ進む。
【００５７】
ステップＳ３２では、本実施形態のコンピュータ１０は、対象優先ＭＴを現時点での最上位に配置する（配置ステップ）。そして、ステップＳ３３では、本実施形態のコンピュータ１０は、全ＭＴで配置が完了したか否かを判定する（配置ステップ）。そして、本実施形態のコンピュータ１０は、全ＭＴで配置が完了したと判定しなかった場合はステップＳ３０へ戻り、全ＭＴで配置が完了したと判定した場合は図１０のフローチャートを終了する。
【００５８】
ステップＳ３４では、本実施形態のコンピュータ１０は、特開２０１５−１８０７号公報に記載された方法でＭＴを配置する。
【００５９】
このように、本実施形態のコンピュータ１０は、優先ＭＴと通常ＭＴを、依存関係を満たすように各コア２１ｃ、２１ｄに割り振りつつ、シングルプログラムにおける実行順が早い優先ＭＴほど、並列プログラム２１ａ１における実行順が早くなるように配置する。これによって、本実施形態のコンピュータ１０は、図１１に示すような並列プログラム２１ａ１を作成できる。この並列プログラム２１ａ１は、図７の仮並列プログラムとＭＴの実行順が異なる。第２コア２１ｄ用のプログラムでは、ＭＴＣ１とＭＴＢ２の実行順が逆になっている。また、この並列プログラム２１ａ１は、図６に示す仮並列プログラムよりもＭＴＣ１の実行順を早くすることができる。なお、第１コア２１ｃ用のプログラムでは、ＭＴＤ１１とＭＴＤ３の間に完了待ちＷ１が発生することになる。これは、ＭＴＤ３がＭＴＢ２と依存関係にあるためである。完了待ちは、待ち処理や待合せ処理と言い換えることができる。
【００６０】
さらに、自動並列化コンパイラ１は、優先ＭＴと通常ＭＴを、依存関係を満たすように各コア２１ｃ、２１ｄに割り振りつつ、シングルプログラムでの実行順が早い優先ＭＴほど、並列プログラム２１ａ１での実行順が早くなるように配置する手順を含んでいる。よって、ステップＳ３０〜Ｓ３３は、配置処理手順に相当するとも言える。また、本実施形態の自動並列化コンパイラ１は、配置処理手順を含んでいると言える。従って、本実施形態の車載装置２０は、上記のように生成された並列プログラム２１ａ１を備えていると言える。
【００６１】
本実施形態のコンピュータ１０は、第１実施形態のコンピュータ１０と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ１は、第１実施形態の自動並列化コンパイラ１と同様の効果を奏することができる。さらに、本実施形態の車載装置２０は、第１実施形態の車載装置２０と同様の効果を奏することができる。
【００６２】
なお、ステップＳ３４では、依存関係を満たすように、通常処理を配置してもよい（配置ステップ）。例えば、ステップＳ３４では、未配置の通常ＭＴで最も管理番号が小さい通常ＭＴを対象通常ＭＴとして選択し、選択した対象通常ＭＴを現時点での最上位に配置する（配置ステップ）。よって、本実施形態の自動並列化コンパイラ１は、優先ＭＴを配置することで依存関係が崩れる場合、依存関係を満たすように、通常ＭＴを配置する手順（配置処理手順）を含んでいると言える。また、本実施形態の車載装置２０は、優先ＭＴを配置することで依存関係が崩れる場合、依存関係を満たすように、通常ＭＴが配置された並列プログラム２１ａ１を備えていると言える。
【００６３】
この場合、本実施形態の自動並列化コンパイラ１は、優先ＭＴと通常ＭＴに対して、すなわち全てのＭＴに対して、シングルプログラムにおける実行順に管理番号を付与する手順（付与処理手順）を含んでいる。よって、本実施形態のコンピュータ１０は、全てのＭＴに対して、シングルプログラムにおける実行順に管理番号を付与する（付与ステップ）。また、本実施形態の車載装置２０は、全てのＭＴに対して、シングルプログラムにおける実行順に管理番号を付与された並列プログラム２１ａ１を備えている。
【００６４】
（第３実施形態）
図４などに示すように、ＭＴＤ３は、ＭＴＢ２と依存関係がある。このため、第１コア２１ｃは、図１１に示す第１コア２１ｃ用のプログラムを実行すると、ＭＴＤ１を実行した後に、第２コア２１ｄがＭＴＢ２の実行を完了するのを待つ完了待ちＷ１が発生する。
【００６５】
そこで、本実施形態の自動並列化コンパイラ１は、完了待ちＷ１を低減する手順を含んでいる。同様に、本実施形態のコンピュータ１０は、完了待ちＷ１を低減できる並列プログラム２１ａ１を生成するステップを含んでいる。そして、本実施形態の車載装置２０は、自動並列化コンパイラ１における並列化方法で生成された並列プログラム２１ａ１、言い換えると、本実施形態のコンピュータ１０によって生成された並列プログラム２１ａ１を備えている。本実施形態は、これらの点が第２実施形態と異なる。
【００６６】
なお、本実施形態の自動並列化コンパイラ１は、優先ＭＴを含む全てのＭＴに対して、シングルプログラムにおける実行順に管理番号を付与する手順（付与処理手順）を含んでいる。よって、本実施形態のコンピュータ１０は、優先ＭＴを含む全てのＭＴに対して、シングルプログラムにおける実行順に管理番号を付与する（付与ステップ）。また、本実施形態の車載装置２０は、優先ＭＴを含む全てのＭＴに対して、シングルプログラムにおける実行順に管理番号が付与された並列プログラム２１ａ１を備えている。
【００６７】
本実施形態のコンピュータ１０は、自動並列化コンパイラ１を実行することで、第２実施形態で説明したように並列プログラム２１ａ１を生成した後に、図１２のフローチャートを実行する。
【００６８】
ステップＳ４０では、完了待ちＷ１があるか否かを判定する（低減ステップ）。本実施形態のコンピュータ１０は、作成した並列プログラム２１ａ１に完了待ちＷ１が発生するか否かを判定する。詳述すると、本実施形態のコンピュータ１０は、一つのコアにおいて、他のコアにおけるＭＴの実行が完了したことを待つ完了待ちＷ１が発生するか否かを判定する。そして、本実施形態のコンピュータ１０は、完了待ちＷ１が発生すると判定した場合、ステップＳ４１へ進み、発生すると判定しなかった場合、図１２のフローチャートを終了する。図１１に示す並列プログラム２１ａ１の場合、本実施形態のコンピュータ１０は、第１コア２１ｃにおいて、第２コア２１ｄにおけるＭＴＢ２が完了したことを待つ完了待ちＷ１が発生すると判定してステップＳ４１へ進む。
【００６９】
ステップＳ４１では、要因ＭＴの管理番号を対象ＭＴ番号とする（低減ステップ）。要因ＭＴとは、完了待ちＷ１の要因となるＭＴである。本実施形態のコンピュータ１０は、ＭＴ群から要因ＭＴを抽出して、この要因ＭＴの管理番号を対象ＭＴ番号とする。図１１に示す並列プログラム２１ａ１の場合、本実施形態のコンピュータ１０は、ＭＴＢ２を要因ＭＴとして抽出し、ＭＴＢ２の管理番号４を対象ＭＴ番号とする。
【００７０】
ステップＳ４２では、要因ＭＴの一つ前の処理、すなわち要因前ＭＴの管理番号を比較先ＭＴ番号とする（低減ステップ）。本実施形態のコンピュータ１０は、ＭＴ群から要因ＭＴの一つ前に配置されている要因前ＭＴを抽出して、この要因前ＭＴの管理番号を比較先ＭＴ番号とする。図１１に示す並列プログラム２１ａ１の場合、本実施形態のコンピュータ１０は、ＭＴＣ１を要因前ＭＴとして抽出し、ＭＴＣ１の管理番号５を比較先ＭＴ番号とする。
【００７１】
なお、ここでの対象ＭＴ番号は、第１実施形態における対象ＭＴ番号と区別するために、要因ＭＴ番号と称することもできる。同様に、ここでの比較先ＭＴ番号は、第１実施形態における比較先ＭＴ番号と区別するために、要因前ＭＴ番号と称することもできる。
【００７２】
ステップＳ４３では、対象ＭＴ番号＜比較先Ｍ番号であるか否かを判定する（低減ステップ）。本実施形態のコンピュータ１０は、対象ＭＴ番号と比較先ＭＴ番号とを比較して、シングルプログラムにおける実行順が要因前ＭＴよりも要因ＭＴの方が早いか否かを判定する。そして、本実施形態のコンピュータ１０は、対象ＭＴ番号＜比較先Ｍ番号であると判定した場合、シングルプログラムにおける実行順が要因前ＭＴよりも要因ＭＴの方が早いとみなしてステップＳ４４へ進む。図１１に示すように、今回の要因ＭＴがＭＴＢ２の場合、本実施形態のコンピュータ１０は、ステップＳ４４へ進むことになる。
【００７３】
また、本実施形態のコンピュータ１０は、対象ＭＴ番号＜比較先Ｍ番号であると判定しなかった場合、シングルプログラムにおける実行順が要因ＭＴよりも要因前ＭＴの方が早いとみなしてステップＳ４０へ戻る。なお、本実施形態のコンピュータ１０は、シングルプログラムにおける実行順が要因ＭＴよりも要因前ＭＴの方が早いとみなした場合、ＭＴ群における要因ＭＴの位置を変更することなく、ステップＳ４０へ戻る。
【００７４】
ステップＳ４４では、要因ＭＴと要因前ＭＴとを並び替えても依存関係を維持できるか否かを判定する（低減ステップ）。本実施形態のコンピュータ１０は、要因ＭＴと要因前ＭＴとを並び替えても依存関係が崩れないと判定した場合、ステップＳ４５へ進む。また、本実施形態のコンピュータ１０は、要因ＭＴと要因前ＭＴとを並び替えると依存関係が崩れると判定した場合、ステップＳ４０へ戻る。
【００７５】
ステップＳ４５では、要因ＭＴと要因前ＭＴと入れ替える（低減ステップ）。本実施形態のコンピュータ１０は、要因ＭＴと要因前ＭＴとを並び替えて配置する。要因ＭＴがＭＴＢ２であった場合、本実施形態のコンピュータ１０は、ステップＳ４５を実行することになるため、ＭＴＢ２とＭＴＣ１を並び替える。この結果、本実施形態のコンピュータ１０は、ＭＴＢ２を図１１に示す位置から図１３に示す位置に再配置する。
【００７６】
ステップＳ４６では、全ての要因ＭＴに対して再配置が完了したか否かを判定する（低減ステップ）。本実施形態のコンピュータ１０は、全ての要因ＭＴに対して再配置が完了したと判定した場合、図１２のフローチャートを終了する。また、本実施形態のコンピュータ１０は、全ての要因ＭＴに対して再配置が完了したと判定しなかった場合、ステップＳ４０へ戻る。
【００７７】
このようにして、本実施形態のコンピュータ１０は、並列プログラム２１ａ１を作成する。つまり、本実施形態のコンピュータ１０は、図１３に示すような、完了待ちＷ１を削除した並列プログラム２１ａ１を作成する。
【００７８】
また、本実施形態のコンピュータ１０は、自動並列化コンパイラ１を実行することで、低減ステップを行うことになる。よって、自動並列化コンパイラ１は、完了待ちＷ１が発生する場合、要因ＭＴに付与された管理番号と、要因前ＭＴに付与された管理番号とを比較する手順を含んでいる。さらに、自動並列化コンパイラ１は、シングルプログラムにおける実行順が要因前ＭＴよりも要因ＭＴの方が先であり、且つ、要因前ＭＴと要因ＭＴの実行順を入れ替えても依存関係が崩れない場合に、要因ＭＴと要因前ＭＴとを並び替える手順を含んでいる。この手順は、完了待ちＷ１を減らすためである。このように、ステップＳ４０〜Ｓ４６は、低減処理手順に相当するとも言える。また、自動並列化コンパイラ１は、低減処理手順を含んでいると言える。従って、本実施形態の車載装置２０は、上記のように生成された並列プログラム２１ａ１を備えていると言える。
【００７９】
本実施形態のコンピュータ１０は、第２実施形態のコンピュータ１０と同様の効果を奏することができ、且つ、第２実施形態のコンピュータ１０で生成された並列プログラム２１ａ１よりも完了待ちＷ１を減らすことができる。
【００８０】
本実施形態の自動並列化コンパイラ１は、第２実施形態の自動並列化コンパイラ１と同様の効果を奏することができる。さらに、本実施形態の自動並列化コンパイラ１は、第２実施形態のコンピュータ１０で生成された並列プログラム２１ａ１よりも完了待ちＷ１が少ない並列プログラム２１ａ１を作成可能とすることができる。
【００８１】
本実施形態の車載装置２０は、第２実施形態の車載装置２０と同様の効果を奏することができる。さらに、本実施形態の車載装置２０は、第２実施形態の車載装置２０よりも各コア２１ｃ、２１ｄが並列プログラム２１ａ１を実行した際の完了待ちＷ１を減らすことができる。
【００８２】
（第４実施形態）
本実施形態では、車両のブレーキシステム制御装置に車載装置２０を適用した例を採用する。よって、シングルプログラムは、ブレーキシステムのプログラムである。また、本実施形態の自動並列化コンパイラ１は、第１実施形態と同様に、仮並列プログラムを作成してから並列プログラム２１ａ１を生成する手順を含む。このため、本実施形態のコンピュータ１０は、仮並列プログラムを作成してから並列プログラム２１ａ１を生成する。
【００８３】
図１４に示すように、本実施形態の車載装置２０の構成は、第１実施形態と同様である。本実施形態の車載装置２０は、センサ部２３が少なくともブレーキペダルセンサから出力されたセンサ値を取得する点、及びＲＡＭ２１ｂにブレーキペダルのセンサ値が記憶されている点が第１実施形態と異なる。また、本実施形態の車載装置２０は、入出力ポート２４を介して、ブレーキ機構に対して駆動信号を出力する点、エンジン機構に点火信号などの車両駆動信号を出力する点、及び、エンジン機構に緊急停止信号を出力する点が異なる。緊急停止信号は、車両を停止させるための信号であり、車両駆動信号を全て破棄させる。
【００８４】
シングルプログラムは、図１５に示すように、ＭＴ１〜ＭＴ９を含んで構成されている。各ＭＴ１〜ＭＴ９の依存関係は、図１５の矢印で示す通りである。
【００８５】
ＭＴ１のブレーキペダルセンサ入力部は、ユーザのペダル踏込量に応じて変化するセンサ出力電圧をＡＤ変換して、センサ値としてＲＡＭ２１ｂに格納する処理である。
【００８６】
ＭＴ２のブレーキペダル故障判定部とＭＴ３の緊急停止制御部は、センサ値を元に、ブレーキペダルの故障を判定し、故障が発生した時に、通常制御を無視して車両を緊急停止させるための制御を実施する処理である。なお、もしも故障が発生した際には、緊急停止制御部ＭＴ３の実行まで速やかに完了しなければならない。よって、ＭＴ１〜ＭＴ３の夫々には、実行期限ＤＬ１の要件がある。
【００８７】
ＭＴ４の故障発生時のデータ記憶部とＭＴ５の故障表示部（対ユーザ）は、故障発生時の各種データを記憶し、通常とは異なる車両制御である事、及びブレーキペダルが故障となっている事をユーザに通知するための表示を行う処理である。なお、記憶した各種データは、他車載装置との連携制御や故障解析に用いる。また、表示が遅すぎるとユーザの混乱を招くため、ＭＴ５は、実行期限ＤＬ２の要件がある。
【００８８】
ＭＴ６のブレーキペダル操作推定部とＭＴ７の目標車速算出部とＭＴ８のブレーキ駆動部は、センサ値を元にユーザのブレーキ操作を推定して、ユーザが求めている目標車速を算出し、その算出値に基づきブレーキを駆動させる処理である。ただし、ペダル故障時には、センサ値とユーザ操作に大きな乖離が発生している可能性がある。このため、ペダル故障時には、目標車速の値を規定値に置き換える。なお、推定するブレーキ操作は、踏込量や踏むスピードなどである。
【００８９】
ＭＴ９のデータ送信部は、他車載装置との連携制御を行うために、ブレーキの駆動状態や、故障発生時のデータを送信する処理である。
【００９０】
本実施形態のコンピュータ１０は、第１実施形態と同様に、各ＭＴ１〜ＭＴ９に対して依存関係の解析を行い、その後、付与ステップを行う。これによって、図１６に示すように、ＭＴ１〜ＭＴ９の夫々には、管理番号と優先情報が付与される。
【００９１】
その後、本実施形態のコンピュータ１０は、第１実施形態と同様に、仮並列プログラムを生成する。これによって、本実施形態のコンピュータ１０は、図１７に示すような仮並列プログラムを生成することになる。図１７に示すように、ＭＴ１、ＭＴ２は、実行期限ＤＬ１を満たしている。また、ＭＴ５は、実行期限ＤＬ２を満たしている。しかしながら、ＭＴ３は、実行期限Ｄ１を満たせていない。
【００９２】
しかしながら、本実施形態のコンピュータ１０は、第１実施形態と同様に、図９のフローチャートを実行する。これによって、本実施形態のコンピュータ１０は、図１８に示すような並列プログラム２１ａ１を生成することになる。つまり、本実施形態のコンピュータ１０は、ＭＴ３を並び替えて配置することで、ＭＴ３の実行順がＭＴ４、ＭＴ５よりも早い並列プログラム２１ａ１を生成できる。これによって、ＭＴ３は、実行期限Ｄ１を満たしている。このように、本実施形態のコンピュータ１０は、ＭＴ１〜ＭＴ３が実行期限Ｄ１を満たせ、且つ、ＭＴ５が実行期限ＤＬ２を満たせる並列プログラム２１ａ１を生成できる。なお、この並列プログラム２１ａ１では、完了待ちＷ２が発生する。
【００９３】
本実施形態のコンピュータ１０は、第１実施形態のコンピュータ１０と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ１は、第１実施形態の自動並列化コンパイラ１と同様の効果を奏することができる。さらに、本実施形態の車載装置２０は、第１実施形態の車載装置２０と同様の効果を奏することができる。
【００９４】
（第５実施形態）
本実施形態では、第４実施形態と同様に、車両のブレーキシステム制御装置に車載装置２０を適用した例を採用する。よって、シングルプログラムは、第４実施形態のものと同様である。また、本実施形態の自動並列化コンパイラ１は、第２実施形態と同様に、並列プログラム２１ａ１を生成する手順を含む。このため、本実施形態のコンピュータ１０は、仮並列プログラムを作成することなく並列プログラム２１ａ１を生成する。
【００９５】
つまり、本実施形態のコンピュータ１０は、第２実施形態と同様に、図１０のフローチャートを実行する。これによって、本実施形態のコンピュータ１０は、図１９に示すような並列プログラム２１ａ１を生成することになる。図１９に示すように、本実施形態のコンピュータ１０は、ＭＴ１〜ＭＴ３が実行期限Ｄ１を満たせ、且つ、ＭＴ５が実行期限ＤＬ２を満たせる並列プログラム２１ａ１を生成できる。なお、この並列プログラム２１ａ１では、完了待ちＷ３〜Ｗ５が発生する。
【００９６】
本実施形態のコンピュータ１０は、第２実施形態のコンピュータ１０と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ１は、第２実施形態の自動並列化コンパイラ１と同様の効果を奏することができる。さらに、本実施形態の車載装置２０は、第２実施形態の車載装置２０と同様の効果を奏することができる。
【００９７】
（第６実施形態）
本実施形態では、第４実施形態と同様に、車両のブレーキシステム制御装置に車載装置２０を適用した例を採用する。よって、シングルプログラムは、第４実施形態のものと同様である。また、本実施形態の自動並列化コンパイラ１は、第３実施形態と同様に、第５実施形態で生成された並列プログラム２１ａ１で発生する完了待ちＷ５を低減する手順を含んでいる。よって、本実施形態のコンピュータ１０は、第３実施形態と同様に、第５実施形態で生成された並列プログラム２１ａ１で発生する完了待ちを低減できる並列プログラム２１ａ１を生成する。そして、本実施形態の車載装置２０は、このような並列プログラム２１ａ１が搭載されている。
【００９８】
本実施形態のコンピュータ１０は、第３実施形態と同様に、図１２のフローチャートを実行する。これによって、本実施形態のコンピュータ１０は、図２０に示すように、第５実施形態での並列プログラム２１ａ１に対してＭＴ４とＭＴ５を並び替えることになる。このため、本実施形態のコンピュータ１０は、第５実施形態での並列プログラム２１ａ１における完了待ちＷ５を削除できる。従って、本実施形態のコンピュータ１０は、図２０に示すような並列プログラム２１ａ１を生成することになる。
【００９９】
本実施形態のコンピュータ１０は、第３実施形態のコンピュータ１０と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ１は、第３実施形態の自動並列化コンパイラ１と同様の効果を奏することができる。さらに、本実施形態の車載装置２０は、第３実施形態の車載装置２０と同様の効果を奏することができる。
【符号の説明】
【０１００】
１  自動並列化コンパイラ、１０  コンピュータ、１１  ディスプレイ、１２  ＨＤＤ、１３  ＣＰＵ、１４  ＲＯＭ、１５  ＲＡＭ、１６  入力装置、１７  読取部、１８  記憶媒体、２０  車載装置、２１  マルチコアプロセッサ、２１ａ  ＲＯＭ、２１ａ１  並列プログラム、２１ｂ  ＲＡＭ、２１ｃ  第１コア、２１ｄ  第２コア、２２  通信部、２３  センサ部、２４  入出力ポート
【図１】
0006428557.tif 000002
【図２】
0006428557.tif 000003
【図３】
0006428557.tif 000004
【図４】
0006428557.tif 000005
【図５】
0006428557.tif 000006
【図６】
0006428557.tif 000007
【図７】
0006428557.tif 000008
【図８】
0006428557.tif 000009
【図９】
0006428557.tif 000010
【図１０】
0006428557.tif 000011
【図１１】
0006428557.tif 000012
【図１２】
0006428557.tif 000013
【図１３】
0006428557.tif 000014
【図１４】
0006428557.tif 000015
【図１５】
0006428557.tif 000016
【図１６】
0006428557.tif 000017
【図１７】
0006428557.tif 000018
【図１８】
0006428557.tif 000019
【図１９】
0006428557.tif 000020
【図２０】
0006428557.tif 000021