(57)【特許請求の範囲】
【請求項１】
複数のコアを備えるマイクロコンピュータで実行されるソフトウェアを、複数の前記コアのそれぞれに割り当てるために分割するソフトウェア分割方法であって、
前記ソフトウェアの少なくとも一部を、制御の切れ目または演算の切れ目で、前記マイクロコンピュータが備える前記コアの数より少ない分割数で分割する第１分割手順（Ｓ６０）と、
前記第１分割手順で分割された後の前記ソフトウェアを、データの流れの疎な部分で分割することにより、前記ソフトウェアの少なくとも一部を、前記マイクロコンピュータが備える前記コアの数に分割する第２分割手順（Ｓ７０）とを備える
ことを特徴とするソフトウェア分割方法。
【請求項２】
前記第１分割手順は、分割された後の複数の前記ソフトウェアのそれぞれについて処理負荷が均等に近づくように、前記ソフトウェアの少なくとも一部を分割する
ことを特徴とする請求項１に記載のソフトウェア分割方法。
【請求項３】
前記第２分割手順は、前記第１分割手順で分割された前記ソフトウェアが更に分割された後の複数の前記ソフトウェアのそれぞれについて処理負荷が均等に近づくように、前記第１分割手順で分割された後の前記ソフトウェアを分割する
ことを特徴とする請求項１または請求項２に記載のソフトウェア分割方法。
【請求項４】
前記第１分割手順を実行する前に、前記ソフトウェアの少なくとも一部に対して、データの流れの疎な部分での分割を試行し、前記第２分割手順による分割で可能な分割数である第２分割数を決定する第２分割数決定手順（Ｓ４０）を備え、
前記第１分割手順は、前記マイクロコンピュータが備える前記コアの数を、前記第２分割数決定手順で決定された前記第２分割数で除算した除算値について小数点以下を切り上げた値を第１分割数として、前記ソフトウェアの少なくとも一部を前記第１分割数で分割する
ことを特徴とする請求項１〜請求項３の何れか１項に記載のソフトウェア分割方法。
【請求項５】
前記第２分割数決定手順を実行する前に、前記ソフトウェアの少なくとも一部を、データの流れの疎な部分で分割する第３分割手順（Ｓ２３０）を備える
ことを特徴とする請求項４に記載のソフトウェア分割方法。
【請求項６】
複数のコアを備えるマイクロコンピュータで実行されるソフトウェアを、複数の前記コアのそれぞれに割り当てるために分割するソフトウェア分割装置（１）であって、
前記ソフトウェアの少なくとも一部を、制御の切れ目または演算の切れ目で、前記マイクロコンピュータが備える前記コアの数より少ない分割数で分割する第１分割手段（Ｓ６０）と、
前記第１分割手段で分割された後の前記ソフトウェアを、データの流れの疎な部分で分割することにより、前記ソフトウェアの少なくとも一部を、前記マイクロコンピュータが備える前記コアの数に分割する第２分割手段（Ｓ７０）とを備える
ことを特徴とするソフトウェア分割装置。
【請求項７】
前記第１分割手段は、分割された後の複数の前記ソフトウェアのそれぞれについて処理負荷が均等に近づくように、前記ソフトウェアの少なくとも一部を分割する
ことを特徴とする請求項６に記載のソフトウェア分割装置。
【請求項８】
前記第２分割手段は、前記第１分割手段で分割された前記ソフトウェアが更に分割された後の複数の前記ソフトウェアのそれぞれについて処理負荷が均等に近づくように、前記第１分割手段で分割された後の前記ソフトウェアを分割する
ことを特徴とする請求項６または請求項７に記載のソフトウェア分割装置。
【請求項９】
前記第１分割手段を実行する前に、前記ソフトウェアの少なくとも一部に対して、データの流れの疎な部分での分割を試行し、前記第２分割手段による分割で可能な分割数である第２分割数を決定する第２分割数決定手段（Ｓ４０）を備え、
前記第１分割手段は、前記マイクロコンピュータが備える前記コアの数を、前記第２分割数決定手段で決定された前記第２分割数で除算した除算値について小数点以下を切り上げた値を第１分割数として、前記ソフトウェアの少なくとも一部を前記第１分割数で分割する
ことを特徴とする請求項６〜請求項８の何れか１項に記載のソフトウェア分割装置。
【請求項１０】
前記第２分割数決定手段を実行する前に、前記ソフトウェアの少なくとも一部を、データの流れの疎な部分で分割する第３分割手段（Ｓ２３０）を備える
ことを特徴とする請求項９に記載のソフトウェア分割装置。
【請求項１１】
複数のコア（１２１，１２２，１２３，１２４）を備えるマイクロコンピュータ（１０２）を内蔵する車載装置（１０１）であって、
複数の前記コアは、
前記マイクロコンピュータで実行されるソフトウェアの少なくとも一部を、制御の切れ目または演算の切れ目で、前記マイクロコンピュータが備える前記コアの数より少ない分割数で分割する第１分割手順と、
前記第１分割手順で分割された後の前記ソフトウェアを、データの流れの疎な部分で分割することにより、前記ソフトウェアの少なくとも一部を、前記マイクロコンピュータが備える前記コアの数に分割する第２分割手順とを備えるソフトウェア分割方法により分割されたソフトウェア（１３１，１３２，１３３，１３４）により動作する
ことを特徴とする車載装置。
【請求項１２】
前記第１分割手順は、分割された後の複数の前記ソフトウェアのそれぞれについて処理負荷が均等に近づくように、前記ソフトウェアの少なくとも一部を分割する
ことを特徴とする請求項１１に記載の車載装置。
【請求項１３】
前記第２分割手順は、前記第１分割手順で分割された前記ソフトウェアが更に分割された後の複数の前記ソフトウェアのそれぞれについて処理負荷が均等に近づくように、前記第１分割手順で分割された後の前記ソフトウェアを分割する
ことを特徴とする請求項１１または請求項１２に記載の車載装置。
【請求項１４】
前記ソフトウェア分割方法は、前記第１分割手順を実行する前に、前記ソフトウェアの少なくとも一部に対して、データの流れの疎な部分での分割を試行し、前記第２分割手順による分割で可能な分割数である第２分割数を決定する第２分割数決定手順を備え、
前記第１分割手順は、前記マイクロコンピュータが備える前記コアの数を、前記第２分割数決定手順で決定された前記第２分割数で除算した除算値について小数点以下を切り上げた値を第１分割数として、前記ソフトウェアの少なくとも一部を前記第１分割数で分割する
ことを特徴とする請求項１１〜請求項１３の何れか１項に記載の車載装置。
【請求項１５】
前記ソフトウェア分割方法は、前記第２分割数決定手順を実行する前に、前記ソフトウェアの少なくとも一部を、データの流れの疎な部分で分割する第３分割手順を備える
ことを特徴とする請求項１４に記載の車載装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを備えるマイクロコンピュータで実行されるソフトウェアを分割するソフトウェア分割方法およびソフトウェア分割装置と、複数のコアを備えるマイクロコンピュータを内蔵する車載装置に関する。
【背景技術】
【０００２】
従来、複数のコアを備えるマイクロコンピュータを内蔵する車載装置において、マイクロコンピュータで実行される制御処理を複数のコアに割り当てるために、マイクロコンピュータが備えるコアの数に応じてソフトウェアを分割することにより複数のプログラムを作成することが行われている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１６０４５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、マイコンに搭載されるコアの数の増加に伴い、各コアの処理負荷が均等になるようにソフトウェアを分割することが困難になってきている。
本発明は、こうした問題に鑑みてなされたものであり、各コアの処理負荷が均等になるようにソフトウェアを分割することを容易にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するためになされた第１発明は、複数のコアを備えるマイクロコンピュータで実行されるソフトウェアを、複数のコアのそれぞれに割り当てるために分割するソフトウェア分割方法であって、第１分割手順と、第２分割手順とを備える。
【０００６】
第１分割手順は、ソフトウェアの少なくとも一部を、制御の切れ目または演算の切れ目で、マイクロコンピュータが備えるコアの数より少ない分割数で分割する。第２分割手順は、第１分割手順で分割された後のソフトウェアを、データの流れの疎な部分で分割することにより、ソフトウェアの少なくとも一部を、マイクロコンピュータが備えるコアの数に分割する。
【０００７】
このように構成された第１発明のソフトウェア分割方法は、ソフトウェアを、制御の切れ目または演算の切れ目で分割した後に、更にデータの流れの疎な部分で分割する。
制御の切れ目または演算の切れ目で分割する方法は、人が思考して分割可能と判断できる箇所で分割するものであり、処理の大小でばらつきが生じる。一方、データの流れの疎な部分で分割する方法は、人では分割が困難な方式であり、コンピュータによる自動化に向いた分割方式であるため、分割サイズのばらつきを小さく抑えることができる。
【０００８】
つまり、第１発明のソフトウェア分割方法は、コンピュータによる自動化に向いた分割方法（すなわち、データの流れの疎な部分で分割する方法）を採用することにより、各コアの処理負荷が均等になるようにソフトウェアを分割することを容易にすることができる。但し、データの流れの疎な部分で分割する方法では、分割可能な数に限界がある場合がある。このため、第１発明のソフトウェア分割方法は、マイクロコンピュータが備えるコアの数が、データの流れの疎な部分で分割する方法で可能な分割数以上である場合に、制御の切れ目または演算の切れ目で分割する。これにより、第１発明のソフトウェア分割方法は、目標のコア数に適切にソフトウェアを分割することができる。
【０００９】
上記目的を達成するためになされた第２発明は、複数のコアを備えるマイクロコンピュータで実行されるソフトウェアを、複数のコアのそれぞれに割り当てるために分割するソフトウェア分割装置であって、第１分割手段と、第２分割手段とを備える。
【００１０】
第１分割手段は、ソフトウェアの少なくとも一部を、制御の切れ目または演算の切れ目で、マイクロコンピュータが備えるコアの数より少ない分割数で分割する。第２分割手段は、第１分割手段で分割された後のソフトウェアを、データの流れの疎な部分で分割することにより、ソフトウェアの少なくとも一部を、マイクロコンピュータが備えるコアの数に分割する。
【００１１】
第２発明のソフトウェア分割装置は、第１発明のソフトウェア分割方法を実行する装置であり、第１発明のソフトウェア分割方法と同様の効果を得ることができる。
上記目的を達成するためになされた第３発明は、複数のコアを備えるマイクロコンピュータを内蔵する車載装置であって、複数のコアは、第１分割手順と、第２分割手順とを備えるソフトウェア分割方法により分割されたソフトウェアにより動作する。
【００１２】
第３発明の車載装置は、第１発明のソフトウェア分割方法で作成されたソフトウェアを実行する装置である。このため、第３発明の車載装置は、マイクロコンピュータが備える複数のコアの処理負荷が均等となるため、マイクロコンピュータのコアを効率よく使用することができる。
【図面の簡単な説明】
【００１３】
【図１】ソフトウェア分割装置１の構成を示すブロック図である。
【図２】第１実施形態のソフトウェア分割処理を示すフローチャートである。
【図３】データの流れの疎密の具体例を示す図である。
【図４】コア数ｎとデータ依存性分割数ｌに応じた分割の具体例を示す図である。
【図５】処理能力が同一な複数のコアにソフトウェアを割り当てる状況を説明する図である。
【図６】第２実施形態のＥＣＵ１０１の構成を示すブロック図である。
【図７】別の実施形態のソフトウェア分割処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
（第１実施形態）
以下に本発明の第１実施形態を図面とともに説明する。
本実施形態のソフトウェア分割装置１は、図１に示すように、表示部１１と、操作入力部１２と、データ記憶部１３と、データ入出力部１４と、制御部１５とを備える。
【００１５】
表示部１１は、表示装置（不図示）を備え、表示装置の表示画面に各種画像を表示する。
操作入力部１２は、使用者がキーボード（不図示）とマウス（不図示）を介して行った入力操作を特定するための入力操作情報を出力する。
【００１６】
データ記憶部１３は、各種データを記憶するための記憶装置である。
データ入出力部１４は、有線または無線で接続された外部機器との間でデータの入出力を行う。
【００１７】
制御部１５は、操作入力部１２およびデータ入出力部１４からの入力に基づいて各種処理を実行し、表示部１１、データ記憶部１３およびデータ入出力部１４を制御する。
このように構成されたソフトウェア分割装置１において、制御部１５は、ソフトウェア分割処理を実行する。
【００１８】
ここで、制御部１５が実行するソフトウェア分割処理の手順を説明する。ソフトウェア分割処理は、ソフトウェア分割処理を実行するために制御部１５に記憶されたソフトウェア分割プログラム２０を使用者の入力操作により起動することで実行される。なおソフトウェア分割プログラム２０は、ソフトウェア分割装置１に予めインストールされていてもよいし、記録媒体またはネットワークを介してインストールされるようにしてもよい。記録媒体としては、例えば光ディスク、磁気ディスクおよび半導体メモリなどが挙げられる。
【００１９】
このソフトウェア分割処理が実行されると、制御部１５は、図２に示すように、まず、Ｓ１０にて、コアの数ｎ（以下、コア数ｎという）と、ソフトウェア分割を行う対象となるソフトウェア（以下、分割対象ソフトウェアという）とを選択するための画像（以下、選択画像という）を表示部１１の表示画面に表示する。
【００２０】
その後Ｓ２０にて、使用者により選択されたコア数ｎおよび分割対象ソフトウェアを特定する選択特定情報が操作入力部１２から入力されたか否かを判断する。ここで、選択特定情報が入力されていない場合には（Ｓ２０：ＮＯ）、Ｓ２０の処理を繰り返すことにより、選択特定情報が入力するまで待機する。そして、選択特定情報が入力されると（Ｓ２０：ＹＥＳ）、Ｓ３０にて、選択特定情報により特定される分割対象ソフトウェアをデータ記憶部１３から取得する。
【００２１】
そしてＳ４０にて、Ｓ３０で取得した分割対象ソフトウェアに対して、データの流れの疎な部分での分割（以下、データ依存性分割という）を試行し、これにより、データ依存性分割で可能な分割数ｌ（以下、データ依存性分割数ｌという）を決定する。
【００２２】
ソフトウェア処理では、複数のデータが互いに依存して演算が実行される。例えば、図３に示すように、データＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈ，Ｉ，Ｊ，Ｋ，Ｌ，Ｍ，Ｎ，Ｏが存在するとする。そして、ソフトウェア処理の流れとして、データＡ→データＢ→データＣ，Ｄ→データＥ，Ｆ→データＧ，Ｈ→データＩ→データＪ→データＫ，Ｌ→データＭ→データＮ，Ｏの順で演算が実行されるとする。
【００２３】
さらに、データＢ，Ｃ，Ｄの演算はデータＡを利用するとする（矢印Ｄ１，Ｄ２，Ｄ３を参照）。データＥの演算はデータＢ，Ｃを利用するとする（矢印Ｄ４，Ｄ５を参照）。データＦの演算はデータＤを利用するとする（矢印Ｄ６を参照）。データＧの演算はデータＡ，Ｅを利用するとする（矢印Ｄ７，Ｄ８を参照）。データＨの演算はデータＥ，Ｆを利用するとする（矢印Ｄ９，Ｄ１０を参照）。データＩの演算はデータＨを利用するとする（矢印Ｄ１１を参照）。データＪの演算はデータＩを利用するとする（矢印Ｄ１２を参照）。データＫの演算はデータＪを利用するとする（矢印Ｄ１３を参照）。データＬの演算はデータＩ，Ｊを利用するとする（矢印Ｄ１４，Ｄ１５を参照）。データＭの演算はデータＩ，Ｋ，Ｌを利用するとする（矢印Ｄ１６，Ｄ１７，Ｄ１８を参照）。データＮの演算はデータＭを利用するとする（矢印Ｄ１９を参照）。データＯの演算はデータＫ，Ｍを利用するとする（矢印Ｄ２０，Ｄ２１を参照）。
【００２４】
この場合に、データＢの演算とデータＣ，Ｄの演算との間が、データの流れが密な部分となる（指示領域Ｒ１を参照）。また、データＥ，Ｆの演算とデータＧ，Ｈの演算との間が、データの流れが密な部分となる（指示領域Ｒ２を参照）。また、データＨの演算とデータＩの演算との間が、データの流れが疎な部分となる（指示領域Ｒ３を参照）。
【００２５】
データの依存性（すなわち、データの流れの疎密）を見つける手法としては、様々なアルゴリズムが知られており、例えば特開２０１５−１８０７号公報にて公知であるため、説明を省略する。
【００２６】
そしてＳ４０の処理が終了すると、図２に示すように、Ｓ５０にて、コア数ｎをデータ依存性分割数ｌで除算した除算値（すなわち、ｎ／ｌ）について小数点以下を切り上げた値を、制御・演算分割数ｋとして決定する。
【００２７】
次にＳ６０にて、Ｓ３０で取得した分割対象ソフトウェアを制御の切れ目または演算の切れ目で制御・演算分割数ｋに分割する制御・演算分割を実行する。Ｓ６０では、分割された各ソフトウェアでの処理負荷ができる限り均等になるように、分割対象ソフトウェアを分割する。なお、「制御の切れ目」とは、例えば、燃料噴射制御、ＥＧＲ制御または変速制御等のように明らかに独立した制御機能の境界部分である。また、「演算の切れ目」とは、例えば燃料噴射制御の中で行うＡ／Ｆ値演算等のように、その単位で演算の区切りがあり、あたかもパイプライン処理のように後段の演算に演算結果群（通常は複数の変数群）を渡す部分である。
【００２８】
さらにＳ７０にて、Ｓ６０で分割された後のソフトウェアに対して、データ依存性分割を実行する。これにより、Ｓ３０で取得した分割対象ソフトウェアがコア数ｎに分割される。Ｓ７０では、分割された各ソフトウェアでの処理負荷ができる限り均等になるように、Ｓ６０で分割された後のソフトウェアを分割する。
【００２９】
そしてＳ８０にて、Ｓ７０で分割された後のソフトウェアをデータ記憶部１３に記憶し、ソフトウェア分割処理を終了する。
次に、コア数ｎ＝４，５，８，１２であり、データ依存性分割数ｌ＝２，３，４，５である場合の分割方法を説明する。
【００３０】
図４に示すように、コア数ｎ＝４であり、データ依存性分割数ｌ＝２である場合には、制御・演算分割数ｋ＝２である。このため、まず、制御・演算分割数ｋ＝２の制御・演算分割を実行し、その後、分割された２つのソフトウェアのそれぞれについて、データ依存性分割数ｌ＝２のデータ依存性分割を実行する。
【００３１】
コア数ｎ＝４であり、データ依存性分割数ｌ＝３である場合には、制御・演算分割数ｋ＝２である。このため、まず、制御・演算分割数ｋ＝２の制御・演算分割を実行し、その後、分割された２つのソフトウェアのうちの１つについて、データ依存性分割数ｌ＝３のデータ依存性分割を実行する。
【００３２】
コア数ｎ＝４であり、データ依存性分割数ｌ＝４である場合には、制御・演算分割数ｋ＝１である。このため、制御・演算分割を実行せず、データ依存性分割数ｌ＝４のデータ依存性分割を実行する。
【００３３】
コア数ｎ＝４であり、データ依存性分割数ｌ＝５である場合には、制御・演算分割数ｋ＝１である。このため、制御・演算分割を実行せず、データ依存性分割数ｌ＝４のデータ依存性分割を実行する。
【００３４】
コア数ｎ＝５であり、データ依存性分割数ｌ＝２である場合には、制御・演算分割数ｋ＝３である。このため、まず、制御・演算分割数ｋ＝３の制御・演算分割を実行し、その後、分割された３つのソフトウェアのうちの２つについて、データ依存性分割数ｌ＝２のデータ依存性分割を実行する。
【００３５】
コア数ｎ＝５であり、データ依存性分割数ｌ＝３である場合には、制御・演算分割数ｋ＝２である。このため、まず、制御・演算分割数ｋ＝２の制御・演算分割を実行し、その後、分割された２つのソフトウェアの一方について、データ依存性分割数ｌ＝３のデータ依存性分割を実行し、他方について、データ依存性分割数ｌ＝２のデータ依存性分割を実行する。
【００３６】
コア数ｎ＝５であり、データ依存性分割数ｌ＝４である場合には、制御・演算分割数ｋ＝２である。このため、まず、制御・演算分割数ｋ＝２の制御・演算分割を実行し、その後、分割された２つのソフトウェアのうちの１つについて、データ依存性分割数ｌ＝４のデータ依存性分割を実行する。
【００３７】
コア数ｎ＝５であり、データ依存性分割数ｌ＝５である場合には、制御・演算分割数ｋ＝１である。このため、制御・演算分割を実行せず、データ依存性分割数ｌ＝５のデータ依存性分割を実行する。
【００３８】
コア数ｎ＝８であり、データ依存性分割数ｌ＝２である場合には、制御・演算分割数ｋ＝４である。このため、まず、制御・演算分割数ｋ＝４の制御・演算分割を実行し、その後、分割された３つのソフトウェアのそれぞれについて、データ依存性分割数ｌ＝２のデータ依存性分割を実行する。
【００３９】
コア数ｎ＝８であり、データ依存性分割数ｌ＝３である場合には、制御・演算分割数ｋ＝３である。このため、まず、制御・演算分割数ｋ＝３の制御・演算分割を実行し、その後、分割された３つのソフトウェアのうちの２つについて、データ依存性分割数ｌ＝３のデータ依存性分割を実行し、残りの１つについて、データ依存性分割数ｌ＝２のデータ依存性分割を実行する。
【００４０】
コア数ｎ＝８であり、データ依存性分割数ｌ＝４である場合には、制御・演算分割数ｋ＝２である。このため、まず、制御・演算分割数ｋ＝２の制御・演算分割を実行し、その後、分割された２つのソフトウェアのそれぞれについて、データ依存性分割数ｌ＝４のデータ依存性分割を実行する。
【００４１】
コア数ｎ＝８であり、データ依存性分割数ｌ＝５である場合には、制御・演算分割数ｋ＝２である。このため、まず、制御・演算分割数ｋ＝２の制御・演算分割を実行し、その後、分割された２つのソフトウェアの一方について、データ依存性分割数ｌ＝５のデータ依存性分割を実行し、他方について、データ依存性分割数ｌ＝３のデータ依存性分割を実行する。
【００４２】
コア数ｎ＝１２であり、データ依存性分割数ｌ＝２である場合には、制御・演算分割数ｋ＝６である。このため、まず、制御・演算分割数ｋ＝６の制御・演算分割を実行し、その後、分割された６つのソフトウェアのそれぞれについて、データ依存性分割数ｌ＝２のデータ依存性分割を実行する。
【００４３】
コア数ｎ＝１２であり、データ依存性分割数ｌ＝３である場合には、制御・演算分割数ｋ＝４である。このため、まず、制御・演算分割数ｋ＝４の制御・演算分割を実行し、その後、分割された４つのソフトウェアのそれぞれについて、データ依存性分割数ｌ＝３のデータ依存性分割を実行する。
【００４４】
コア数ｎ＝１２であり、データ依存性分割数ｌ＝４である場合には、制御・演算分割数ｋ＝３である。このため、まず、制御・演算分割数ｋ＝３の制御・演算分割を実行し、その後、分割された３つのソフトウェアのそれぞれについて、データ依存性分割数ｌ＝４のデータ依存性分割を実行する。
【００４５】
コア数ｎ＝１２であり、データ依存性分割数ｌ＝５である場合には、制御・演算分割数ｋ＝３である。このため、まず、制御・演算分割数ｋ＝３の制御・演算分割を実行し、その後、分割された３つのソフトウェアのそれぞれについて、データ依存性分割数ｌ＝５，４，３のデータ依存性分割を実行する。
【００４６】
このように構成されたソフトウェア分割装置１は、分割対象ソフトウェアを、制御の切れ目または演算の切れ目で、コア数ｎより少ない分割数で分割する（Ｓ６０）。さらにソフトウェア分割装置１は、分割された後の分割対象ソフトウェアを、データの流れの疎な部分で分割することにより、分割対象ソフトウェアを、コア数ｎに分割する（Ｓ７０）。
【００４７】
このようにソフトウェア分割装置１は、ソフトウェアを、制御の切れ目または演算の切れ目で分割した後に、更にデータの流れの疎な部分で分割する。
制御の切れ目または演算の切れ目で分割する方法は、人が思考して分割可能と判断できる箇所で分割するものであり、処理の大小でばらつきが生じる。一方、データの流れの疎な部分で分割する方法は、人では分割が困難な方式であり、コンピュータによる自動化に向いた分割方式であるため、分割サイズのばらつきを小さく抑えることができる。
【００４８】
つまり、ソフトウェア分割装置１は、コンピュータによる自動化に向いた分割方法（すなわち、データの流れの疎な部分で分割する方法）を採用することにより、各コアの処理負荷が均等になるようにソフトウェアを分割することを容易にすることができる。但し、データの流れの疎な部分で分割する方法では、分割可能な数に限界がある場合がある。このため、ソフトウェア分割装置１は、マイクロコンピュータが備えるコアの数が、データの流れの疎な部分で分割する方法で可能な分割数以上である場合に、制御の切れ目または演算の切れ目で分割する。これにより、ソフトウェア分割装置１は、目標のコア数に適切にソフトウェアを分割することができる。
【００４９】
またソフトウェア分割装置１は、分割された各ソフトウェアでの処理負荷ができる限り均等になるように、制御の切れ目または演算の切れ目で分割対象ソフトウェアを分割する（Ｓ６０）。これにより、ソフトウェア分割装置１は、データの流れの疎な部分で分割するときに、各ソフトウェアでの処理負荷ができる限り均等になるように分割することを更に容易にすることができる。
【００５０】
またソフトウェア分割装置１は、分割された各ソフトウェアでの処理負荷ができる限り均等になるように、データの流れの疎な部分で、制御の切れ目または演算の切れ目で分割された後の分割対象ソフトウェアを分割する（Ｓ７０）。これにより、ソフトウェア分割装置１は、マイクロコンピュータが備える複数のコアの処理負荷を均等にすることができる。これにより、マイクロコンピュータのコアを効率よく使用することができる。例えば図５に示すように、ソフトウェア分割装置１は、ソフトウェアを、制御の切れ目または演算の切れ目で２分割する（指示領域Ｒ１１を参照）。さらに、ソフトウェア分割装置１は、２分割されたソフトウェアを、データの流れの疎な部分で分割することにより、処理負荷が均等になるように４分割する（指示領域Ｒ１２を参照）。これにより、ソフトウェア分割装置１は、処理能力が互いに同一なコアＣ１，Ｃ２，Ｃ３，Ｃ４に、４分割されたソフトウェアを割り当てることができる。
【００５１】
またソフトウェア分割装置１は、制御の切れ目または演算の切れ目で分割する前に、分割対象ソフトウェアに対して、データの流れの疎な部分での分割を試行し、データ依存性分割で可能なデータ依存性分割数ｌを決定する（Ｓ４０）。そしてソフトウェア分割装置１は、コア数ｎをデータ依存性分割数ｌで除算した除算値（すなわち、ｎ／ｌ）について小数点以下を切り上げた値を制御・演算分割数ｋとして、制御・演算分割数ｋで分割対象ソフトウェアを分割する（Ｓ５０，Ｓ６０）。
【００５２】
これにより、ソフトウェア分割装置１は、データの流れの疎な部分での分割で可能な分割数に応じた適切な分割数で、制御の切れ目または演算の切れ目での分割を実行することができる。
【００５３】
以上説明した実施形態において、Ｓ６０の処理は本発明における第１分割手順および第１分割手段、Ｓ７０の処理は本発明における第２分割手順および第２分割手段、Ｓ４０の処理は本発明における第２分割数決定手順および第２分割数決定手段、制御・演算分割数ｋは本発明における第１分割数、データ依存性分割数ｌは本発明における第２分割数である。
【００５４】
（第２実施形態）
以下に本発明の第２実施形態を図面とともに説明する。
本実施形態の電子制御装置（Electronic Control Unit）１０１（以下、ＥＣＵ１０１という）は、車両に搭載され、車両に搭載されたエンジン（不図示）を制御する。
【００５５】
ＥＣＵ１０１は、図６に示すように、マイクロコンピュータ（以下、マイコンという）１０２と入力回路１０３と出力回路１０４とを備えている。
マイコン１０２は、クランク軸センサからのクランク信号、カム軸センサからの気筒判別用信号、水温センサおよびスロットル開度センサ等からの他の各種センサ信号、トランスミッションのシフトポジションスイッチおよびエアコンスイッチ等からの各種スイッチ信号を入力回路１０３を介して取り込む。またマイコン１０２は、取り込んだ各種信号に基づいて、出力回路１０４を介してインジェクタへ駆動信号を出力する燃料噴射制御、出力回路１０４を介して点火装置へ駆動信号を出力する点火時期制御などのエンジン制御を実施する。
【００５６】
マイコン１０２は、ＣＰＵ１１１、ＲＯＭ１１２、ＲＡＭ１１３、Ｉ／Ｏ１１４及びこれらの構成を接続するバスラインなどから構成され、ＲＯＭ１１２に記憶されたソフトウェアに基づいて、エンジンを制御するための各種処理を実行する。
【００５７】
そしてＣＰＵ１１１は、ＣＰＵコア（以下、単にコアという）１２１，１２２，１２３，１２４で構成されている。
ＲＯＭ１１２は、ソフトウェア１３１，１３２，１３３，１３４を記憶する。ソフトウェア１３１，１３２，１３３，１３４はそれぞれ、コア１２１，１２２，１２３，１２４が実行するソフトウェアである。そして、ソフトウェア１３１，１３２，１３３，１３４は、第１実施形態または第２実施形態のソフトウェア分割装置１で４つに分割されたソフトウェアである。
【００５８】
このように構成されたＥＣＵ１０１は、４個のコア１２１，１２２，１２３，１２４を備えるマイコン１０２を内蔵する車載装置である。コア１２１，１２２，１２３，１２４は、ソフトウェア１３１，１３２，１３３，１３４により動作する。そして、ソフトウェア１３１，１３２，１３３，１３４は、第１実施形態または第２実施形態のソフトウェア分割装置１で４つに分割されている。
【００５９】
これにより、マイコン１０２が備える４個のコア１２１〜１２４の処理負荷を均等にすることができるため、マイコン１０２のコアを効率よく使用することができる。
以上説明した実施形態において、ＥＣＵ１０１は本発明における車載装置である。
【００６０】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
（変形例１）
例えば上記第１実施形態では、２段階または３段階で分割するものを示したが、４段階以上で分割を行うようにしてもよい。例えば、上記第１実施形態では、Ｓ６０において、１段階で分割対象ソフトウェアを制御・演算分割数ｋに分割する制御・演算分割を実行するものを示した。しかし、複数段階の制御・演算分割を実行することにより、分割対象ソフトウェアを制御・演算分割数ｋに分割するようにしてもよい。
【００６１】
（変形例２）
また上記第１実施形態では、データ依存性分割を１回実行するものを示した（図２のＳ７０を参照）。しかし、データ依存性分割を複数回実行するようにしてもよい。例えば、図７に示すように、最終段階のデータ依存性分割（Ｓ２６０）を実行する前に、最終段階のデータ依存性分割のためにデータ依存性分割を試行し（Ｓ２４０）、さらに制御・演算分割を実行する（Ｓ２５０）。そして、図７に示すように、この最終段階のデータ依存性分割よりも前に、前段階のデータ依存性分割（Ｓ２３０）を実行するようにしてもよい。前段階のデータ依存性分割を実行する場合には、前段階のデータ依存性分割（Ｓ２３０）を実行する前に、前段階のデータ依存性分割のためにデータ依存性分割を試行し（Ｓ２１０）、さらに制御・演算分割を実行する（Ｓ２２０）。データ依存性分割は、上述のように、コンピュータによる自動化に向いた分割方法であり、各コアの処理負荷が均等になるようにソフトウェアを分割することを容易にすることができる。このため、最終段階だけではなく、前段階でもデータ依存性分割を実行することにより、各コアの処理負荷が均等になるようにソフトウェアを分割することを更に容易にすることができる。なお、Ｓ２３０の処理は本発明における第３分割手順および第３分割手段である。
【００６２】
また、上記実施形態における１つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を１つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。なお、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
【符号の説明】
【００６３】
１…ソフトウェア分割装置、１０１…ＥＣＵ、１０２…マイコン、１２１，１２２，１２３，１２４…コア、１３１，１３２，１３３，１３４…ソフトウェア
【図１】
0006413922.tif 000002
【図２】
0006413922.tif 000003
【図３】
0006413922.tif 000004
【図４】
0006413922.tif 000005
【図５】
0006413922.tif 000006
【図６】
0006413922.tif 000007
【図７】
0006413922.tif 000008