(57)【特許請求の範囲】
【請求項１】
複数のコア（１０３）で所定の複数のタスク（１０８，２０８）を並行して実行するマルチコアマイコン（１０２）を備え、
前記所定の複数のタスクのそれぞれは、前記複数のコアのうち特定の１つのコアで実行するよう個別に設定されると共に、前記マルチコアマイコン内における実行の順序を設定されており、
同一の前記コアで実行するよう設定される複数のタスクのそれぞれは、前記同一のコア内における前記実行の順序を規定するための優先順位を設定され、
前記同一のコアで実行するように設定される前記複数のタスク（１０８ｃ，１０８ｄ，２０８ｃ〜２０８ｅ）のうちの第一のタスク（１０８ｃ，２０８ｃ）が、前記同一のコア（１０３ｂ）以外の他の前記コア（１０３ａ）で実行される第二のタスク（１０８ｂ，２０８ｂ）の完了まで実行を待機する必要があるとき、前記同一のコアで実行するように設定される前記複数のタスクのうち前記第一のタスクを除く第三のタスク（１０８ｄ，２０８ｅ）の前記優先順位に対して、前記第一のタスクの前記優先順位を相対的に低くすることを特徴とする電子制御装置（１０１）。
【請求項２】
前記第二のタスクの実行が完了したとき、前記第三のタスクに対して相対的に低くした前記第一のタスクの前記優先順位を元に戻す
ことを特徴とする、請求項１に記載の電子制御装置。
【請求項３】
前記第一のタスクが、前記第二のタスクが完了するまで実行を待機する必要があるとき、前記第三のタスクの前記優先順位に対して、前記第一のタスクの前記優先順位を相対的に低く変更する優先順位変更部（１０５）と、
前記優先順位変更部により前記第一のタスクの前記優先順位が変更されたとき、前記第一のタスクの元の優先順位を記憶する記憶部（１０６）と、
を備え、
前記優先順位変更部は、前記第二のタスクの実行が完了したとき、前記第一のタスクの前記優先順位を前記記憶部に記憶されている前記元の優先順位に戻す
ことを特徴とする、請求項２に記載の電子制御装置。
【請求項４】
前記複数のコアで実行されるタスクの実行完了を監視する監視部（１０５）を備え、
前記優先順位変更部は、前記監視部により前記第二のタスクの実行が完了したことが検知されたとき、前記第一のタスクの前記優先順位を前記記憶部に記憶されている前記元の優先順位に戻す
ことを特徴とする、請求項３に記載の電子制御装置。
【請求項５】
前記第三のタスク（２０８ｅ）の前記優先順位に対して、前記第一のタスク（２０８ｃ）の前記優先順位を相対的に低く変更するとき、前記同一のコアで実行するように設定される前記複数のタスク（２０８ｃ〜２０８ｅ）のうち前記第一のタスクと同一の優先順位が設定される第四のタスク（２０８ｄ）の優先順位を前記第一のタスクと同様に変更する
ことを特徴とする、請求項１に記載の電子制御装置。
【請求項６】
前記第二のタスクの実行が完了したとき、前記第三のタスクに対して相対的に低くした前記第一のタスク及び前記第四のタスクの前記優先順位を元に戻す
ことを特徴とする、請求項５に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
従来、複数のコアが搭載されるマルチコアマイコンが知られている（例えば特許文献１）。マルチコアマイコンにおいては、複数のコアで同時並行してタスクが実行される。これにより、マルチコアマイコンは、全てのタスクを順次実行するシングルコアマイコンと比較して処理速度の向上が期待できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−５４６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、このようなマルチコアマイコンを車両のエンジン制御用電子制御装置に適用するニーズがある。マルチコアマイコンをエンジン制御に用いる場合、他の適用分野と比べて演算のリアルタイム性に対する要求が高い。このため、エンジン制御用のマルチコアマイコンにおいては、演算のリアルタイム性を保証するために、各タスクをどのコアにおいて実行するかを固定している場合がある。この場合、例えば、複数のコア間でタスクの実行順序に制約があることなどを要因として、一部のコアがタスクを実行しない待機状態となり、マイコン全体での処理速度を下げる要因となり得る。
【０００５】
本発明はこのような課題に鑑みてなされたものであり、その目的は、マルチコアマイコンの処理速度を向上できる電子制御装置を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係る電子制御装置（１０１）は、複数のコア（１０３）で所定の複数のタスク（１０８，２０８）を並行して実行するマルチコアマイコン（１０２）を備え、前記所定の複数のタスクのそれぞれは、前記複数のコアのうち特定の１つのコアで実行するよう個別に設定されると共に、前記マルチコアマイコン内における実行の順序を設定されており、同一の前記コアで実行するよう設定される複数のタスクのそれぞれは、前記同一のコア内における前記実行の順序を規定するための優先順位を設定され、前記同一のコアで実行するように設定される前記複数のタスク（１０８ｃ，１０８ｄ，２０８ｃ〜２０８ｅ）のうちの第一のタスク（１０８ｃ，２０８ｃ）が、前記同一のコア（１０３ｂ）以外の他の前記コア（１０３ａ）で実行される第二のタスク（１０８ｂ，２０８ｂ）の完了まで実行を待機する必要があるとき、前記同一のコアで実行するように設定される前記複数のタスクのうち前記第一のタスクを除く第三のタスク（１０８ｄ，２０８ｅ）の前記優先順位に対して、前記第一のタスクの前記優先順位を相対的に低くすることを特徴とする。
【０００７】
このような電子制御装置によれば、第二のタスクが実行中であり、かつ、第一のタスクが待機中である期間では、第三のタスクの優先順位が第一のタスクより高い状態となるため、第一のタスクの待機中に第一のタスクより先に第三のタスクが実行される。つまり、複数のコアの１つにおいて第三のタスクが、他コアの第二のタスクと並列に実行されるので、他コアの第二のタスクの実行完了まで当該コアが待機状態になるのを回避できる。このように、複数のコア間でタスクの実行順序に制約がある場合でも、一部のコアが完全に待機状態となる期間を回避または減少できるので、全タスクの実行完了時間を早めることができる。
【発明の効果】
【０００８】
本発明によれば、マルチコアマイコンの処理速度を向上できる電子制御装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の一実施形態に係る電子制御装置の概略構成を示すブロック図である。
【図２】図２は、図１中の複数のコアにおける複数のタスクの実行順序の一例を示す模式図である。
【図３】図３は、図２に示す複数のタスクの従来の実行順序を示す図である。
【図４】図４は、本実施形態に係る電子制御装置により、図２に示す複数のタスクの実行順序が変更されることを説明するための図である。
【図５】図５は、本実施形態に係る電子制御装置により実施される優先順位変更処理を示すフローチャートである。
【図６】図６は、他のコアで実行されるタスク（第二のタスク）の完了を待機する必要があるタスク（第一のタスク）と同じ優先順位をもつタスクが同一コアに含まれる構成において、複数のタスクの実行順序の一例を示す模式図である。
【図７】図７は、図６に示す複数のタスクの従来の実行順序を示す図である。
【図８】図８は、本実施形態に係る電子制御装置により、図６に示す複数のタスクの実行順序が変更されることを説明するための図である。
【図９】図９は、図６に示すタスクの構成において、本実施形態に係る電子制御装置により実施される優先順位変更処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照しながら本発明の実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１１】
まず図１を参照して、本発明の一実施形態に係る電子制御装置１０１の構成について説明する。本実施形態に係る電子制御装置１０１は、例えば、車両に搭載され、当該車両のエンジン制御用ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）の一部として実装される。本実施形態では、この構成の電子制御装置１０１を例示して説明する。
【００１２】
電子制御装置１０１は、図１に示すように、マルチコアマイコン１０２を備える。マルチコアマイコン１０２は、図１に示すように、複数のコア１０３と、共有ＲＡＭ１０４と、タスク監視部１０５（監視部、優先順位変更部）と、ＲＡＭ１０６（記憶部）と、Ｉ／Ｏポート１０７と、を有する。
【００１３】
複数のコア１０３のそれぞれは、プログラムに記述された各種演算や機器制御（本実施形態ではこれらを纏めて「タスク１０８」と表記する）を行う中央処理装置である。本実施形態では、図１に示すようにマルチコアマイコン１０２が２つのコア１０３ａ，１０３ｂを有する構成を例示しており、以降の説明では２つのコア１０３ａ，１０３ｂを「コア１」及び「コア２」とも表記する場合があり、また、２つのコア１０３ａ，１０３ｂを纏めて「コア１０３」とも表記する場合がある。コア１０３ａ及びコア１０３ｂは、相互に通信可能に接続されると共に、それぞれが共有ＲＡＭ１０４、タスク監視部１０５、及びＩ／Ｏポート１０７と通信可能に接続されている。
【００１４】
共有ＲＡＭ１０４は、コア１０３ａ及びコア１０３ｂで実行される各種のタスク１０８の演算領域として利用される記憶装置である。
【００１５】
タスク監視部１０５は、複数のコア１０３のそれぞれで実行される各種のタスク１０８の実行状態を監視し、各コア１０３におけるタスクの実行を制御する。本実施形態では、タスク監視部１０５は、タスク１０８を実行するコア１０３ａ及びコア１０３ｂとは別要素として配置され、コア１０３ａ及びコア１０３ｂと同様の中央処理装置により実装されている。タスク監視部１０５は、コア１０３ａ、コア１０３ｂ、及び、ＲＡＭ１０６と通信可能に接続されている。なお、タスク監視部１０５によるタスク１０８の実行順序の制御については図２〜４を参照して後述する。
【００１６】
ＲＡＭ１０６は、タスク監視部１０５により各コア１０３のタスク１０８の優先順位を記憶するために利用される記憶装置である。タスク１０８の優先順位やタスク監視部１０５によるＲＡＭ１０６への記憶処理については後述する。
【００１７】
Ｉ／Ｏポート１０７は、コア１０３ａ及びコア１０３ｂと外部機器との間で情報の入出力に利用されるインタフェースである。
【００１８】
マルチコアマイコン１０２は、２つのコア１０３ａ，１０３ｂにより所定の複数のタスク１０８を並行して実行することができる。特に本実施形態のようなエンジン制御用ＥＣＵなど、特定の期間内（例えばエンジンが１回転する間や、次回の燃料噴射までの間など）にタスク１０８の演算を確実に終わらせる必要があるなどの制約がある環境に電子制御装置１０１が適用される場合には、各タスク１０８のリアルタイム性の要求が極めて高くなる。従来のマルチコアマイコン１０２では各コア１０３に実行させるタスク１０８を動的に振り分ける構成が一般的であるが、上記のような環境下ではタスク１０８のリアルタイム性を保障するために、マルチコアマイコン１０２は、各タスク１０８をどのコア１０３において実行するかを固定されている。言い換えると、マルチコアマイコン１０２は、所定の複数のタスク１０８のそれぞれを複数のコア１０３のうち特定の１つのコア（コア１０３ａまたはコア１０３ｂ）で実行するよう個別に設定されている。本実施形態では、図１に示すように、２つのコア１０３のうち一方のコア１０３ａにおいて所定の２つのタスクＡ及びタスクＢが実行されるよう固定され、また、他方のコア１０３ｂにおいて所定の２つのタスクＣ及びタスクＤが実行されるよう固定される構成が例示されている。以下の説明では、説明の便宜上、タスクＡを「タスク１０８ａ」、タスクＢを「タスク１０８ｂ」、タスクＣを「タスク１０８ｃ」、タスクＤを「タスク１０８ｄ」と主に表記する。
【００１９】
ここで図２〜４を参照して、本実施形態の電子制御装置１０１における複数のタスク１０８ａ〜１０８ｄの実行順序を決めるためのルールについて説明する。
【００２０】
第一のルールとして、複数のタスク１０８ａ〜１０８ｄのそれぞれは、マルチコアマイコン１０２内における実行の順序が予め設定されている。本実施形態では、図２，３に示すように、コア１０３ａのタスク１０８ａの実行が完了した後にタスク１０８ｂを実行し、タスク１０８ｂの実行が完了した後に、コア１０３ｂのタスク１０８ｃを実行するように設定されている。また、コア１０３ａのタスク１０８ａの実行が完了した後にコア１０３ｂのタスク１０８ｄを実行するように設定されている。
【００２１】
第二のルールとして、同一のコア１０３で実行するよう設定される複数のタスク１０８のそれぞれは、同一のコア１０３内における実行の順序を規定するための優先順位を設定されている。本実施形態では、図３，４に示すように、各コア１０３においてそれぞれＨｉｇｈ，Ｍｉｄｄｌｅ，Ｌｏｗの三段階の優先順位が設定されている。これらの優先順位のうち、Ｈｉｇｈが最も高い優先順位であり、Ｍｉｄｄｌｅが２番目の優先順位であり、Ｌｏｗが最も低い優先順位である。図３に示すように、コア１０３ａ（コア１）においてタスク１０８ａ（タスクＡ）にはＨｉｇｈ、タスク１０８ｂ（タスクＢ）にはＭｉｄｄｌｅの優先順位が予め設定されている。つまり、コア１０３ａでは、タスク１０８ａの優先順位がタスク１０８ｂより高く、基本的にはタスク１０８ａがタスク１０８ｂより先に実行される。コア１０３ｂ（コア２）においてタスク１０８ｃ（タスクＣ）にはＨｉｇｈ、タスク１０８ｄ（タスクＤ）にはＭｉｄｄｌｅの優先順位が予め設定されている。つまり、コア１０３ｂでは、タスク１０８ｃの優先順位がタスク１０８ｄより高く、基本的にはタスク１０８ｃがタスク１０８ｄより先に実行される。
【００２２】
上記の第一及び第二のルールは、従来のマルチコアマイコン１０２でも一般的に設定されているものである。これらのルールに従えば、図２に示す本実施形態における複数のタスク１０８ａ〜１０８ｄの実行順序は図３のようになる。図３に示すように、まずコア１０３ａのタスク１０８ａが実行され、次にコア１０３ａのタスク１０８ｂが実行される。コア１０３ｂのタスク１０８ｃは、タスク１０８ｂが完了するまで待機し、タスク１０８ｂの完了後に実行される。タスク１０８ｃより優先順位が低いタスク１０８ｄは、タスク１０８ｃが完了した後に実行される。
【００２３】
コア１０３ｂにおいて、タスク１０８ｃは、第一のルールに従ってコア１０３ａのタスク１０８ｂが完了するまでその実行を待機する必要がある。また、タスク１０８ｄは、第一のルールに従えば、タスク１０８ａが完了した後にタスク１０８ｂと同時に実行可能であるが、第二のルールにおけるコア１０３ｂ内での優先順位による制約を受けるため、コア１０３ｂでタスク１０８ｃが完了するまではその実行を待機しなければならない。このため、図３に示すように、コア１０３ａにてタスク１０８ｂが実行されている期間には、コア１０３ｂのタスク１０８ｃ，１０８ｄが共に実行されず、コア１０３ｂがタスクを全く実行していない待機状態となる。つまり、従来の第一、第二のルールを適用して複数のタスク１０８の実行順序を設定すると、複数のコア１０３があるにも関わらず複数のタスク１０８を並列処理できず、複数のタスク１０８を１つずつ逐次処理する状況が起こり得る。この場合、全てのタスク１０８が完了するまでに各タスク１０８の所要時間の累積時間を要することとなり、マルチコアマイコン１０２全体での処理速度を下げる要因となる。
【００２４】
そこで本実施形態では、上記の既存の第一、第二のルールに加えて、第三のルールとして、複数のタスク１０８のうちの任意のタスク（以降では説明の便宜上「第一のタスク」とも表記する）が、この第一のタスクが実行されるコアとは異なる他のコアで実行されるタスク（「第二のタスク」とも表記する）の完了まで実行を待機する必要があるとき、第一のタスクと同一のコア内の複数のタスクのうち第一のタスクを除く他のタスク（「第三のタスク」とも表記する）の優先順位に対して、第一のタスクの優先順位を低くするよう構成されている。この第三のルールを図２，３の例に適用すると、コア１０３ｂのタスク１０８ｃが第一のタスクに相当し、コア１０３ａのタスク１０８ｂが第二のタスクに相当し、コア１０３ｂのタスク１０８ｄが第三のタスクに相当する。この場合、図２に示すように、タスク１０８ｃが、このタスク１０８ｃが実行されるコア１０３ｂとは異なる他のコア１０３ａで実行されるタスク１０８ｂの完了まで実行を待機する必要があるため、図４に示すように、タスク１０８ｃの優先順位をＨｉｇｈからＬｏｗに変更して、コア１０３ｂ内の他のタスク１０８ｄの優先順位（Ｍｉｄｄｌｅ）に対して、タスク１０８ｃの優先順位を低くする。
【００２５】
これにより、コア１０３ａにおいてタスク１０８ｂが実行中であり、かつ、コア１０３ｂにおいてタスク１０８ｃが待機中である期間では、コア１０３ｂにおいて、タスク１０８ｄの優先順位がタスク１０８ｃより高い状態となるため、図４に示すように、タスク１０８ｃの待機中にタスク１０８ｃより先にタスク１０８ｄが実行される。つまり、コア１０３ｂのタスク１０８ｄが、コア１０３ａのタスク１０８ｂと並列に実行されるので、コア１０３ａのタスク１０８ｂの実行完了までコア１０３ｂが待機状態になるのを回避できる。そして、タスク１０８ｂが完了した後にタスク１０８ｃの実行が完了した時点で、全てのタスク１０８の実行が完了する。このように、既存の第一、第二のルールに加えて第三のルールを適用することで、複数のコア１０３間でタスク１０８の実行順序に制約がある場合でも、一部のコアが完全に待機状態となる期間を回避または減少できるので、全タスクの実行完了時間が早まり、この結果、マルチコアマイコン１０２全体での処理速度を向上できる。
【００２６】
さらに、本実施形態では、上記の第一〜第三のルールに加えて、第四のルールとして、第二のタスクの実行が完了したとき、第三のタスクに対して低くした第一のタスクの優先順位を元に戻すよう構成されている。この第四のルールを図２〜４の例に適用すると、上記の第三のルールに従ってコア１０３ａのタスク１０８ｂの実行中に優先順位をＬｏｗに下げられたコア１０３ｂのタスク１０８ｃについて、タスク１０８ｂの実行が完了したとき、タスク１０８ｃの優先順位をＬｏｗからＨｉｇｈに再び変更して、タスク１０８ｄに対して低くしたタスク１０８ｃの優先順位が元に戻される。
【００２７】
これにより、図４に示すようにタスク１０８ｃの待機中にタスク１０８ｃより先にタスク１０８ｄが実行されている状況において、タスク１０８ｃが待機している要因であるコア１０３ａのタスク１０８ｂが完了した場合には、タスク１０８ｃの優先順位がＬｏｗから所与のＨｉｇｈに戻される。つまり、コア１０３ｂにおいて現在実行中であるタスク１０８ｄの優先順位（Ｍｉｄｄｌｅ）よりも、タスク１０８ｃの優先順位（Ｈｉｇｈ）が高くなる。このとき、コア１０３ｂは、まずは優先順位が低いタスク１０８ｄの実行を中断して、優先順位が高いタスク１０８ｃを先に実行し、次いでタスク１０８ｃが完了した後にタスク１０８ｄを再開する。このように、第四のルールを適用することで、第三のルールが適用される複数のコア１０３間でのタスク１０８の実行順序の制約が解消したときには、タスク１０８の優先順位を所与のものに直ちに戻すことができ、複数のタスク１０８を電子制御装置１０１の制御対象（本実施形態ではエンジン）の制御に適した本来の順序で実行させることが可能となる。
【００２８】
上記の第一、第二のルールに関する情報は、マルチコアマイコン１０２内のコア１０３ａ，１０３ｂと、タスク監視部１０５とが保持している。また、上記の第三、第四のルールに従ってタスク１０８の優先順位を変更する優先順位変更処理は、主にタスク監視部１０５により実行される。
【００２９】
次に、図５を参照して優先順位変更処理の詳細な手順について説明する。図５のフローチャートに示す一連の処理は、例えばマルチコアマイコン１０２内の複数のコア１０３のいずれかにおいてタスク１０８のコールが実施されることを契機として、電子制御装置１０１のマルチコアマイコン１０２（主にタスク監視部１０５）により実行される。ここでは、図２〜４を参照して説明した例においてコア１０３ｂのタスク１０８ｃがコールされる状況を挙げて説明する。
【００３０】
ステップＳ１０１では、各コア１０３により、次に実行するよう設定されているタスク１０８のコールが実施される。コールを実施すると、各コア１０３はコールしたタスク１０８の情報をタスク監視部１０５に出力する。ステップＳ１０１の処理が完了するとステップＳ１０２に移行する。なお、本ステップでコールされるタスク（以降では「該当タスク」とも表記する）が、上述の「第一のタスク」に相当し、図２〜４に示す例ではコア１０３ｂのタスク１０８ｃに相当する。
【００３１】
ステップＳ１０２では、タスク監視部１０５により、ステップＳ１０１にてコールされたタスク１０８（該当タスク）が、他コア１０３で実行中のタスク１０８の完了を待つ必要があるか否かが判定される。タスク監視部１０５は、例えば、該当タスク１０８の一つ前に実行順序が設定されているタスク１０８が他コア１０３のものであること、この他コア１０３のタスク１０８がまだ完了していないこと、などの条件を満たすときに、該当タスク１０８が他コア１０３で実行中のタスク１０８の完了を待つ必要があると判定することができる。ステップＳ１０２の判定の結果、該当タスク１０８が、他コア１０３で実行中のタスク１０８の完了を待つ必要がある場合（ステップＳ１０２のＹｅｓ）にはステップＳ１０３に移行する。一方、該当タスク１０８が、他コア１０３で実行中のタスク１０８の完了を待つ必要が無い場合（ステップＳ１０２のＮｏ）には本制御フローを終了する。この場合には、当初の設定（例えば上記の第一、第二のルール）に従って、引き続き複数のタスク１０８の実行が所与の実行順序に従って進められる。
【００３２】
なお、ステップＳ１０２において「他コア１０３で実行中のタスク１０８」が上述の「第二のタスク」に相当し、図２〜４に示す例ではコア１０３ａのタスク１０８ｂに相当する。図２〜４に示す例の場合、ステップＳ１０２の処理では、コールされたタスク１０８ｃが、このタスク１０８ｃが実行されるコア１０３ｂとは他のコア１０３ａで実行中のタスク１０８ｂの完了を待つ必要があるため、ステップＳ１０３に移行する。
【００３３】
ステップＳ１０３では、タスク監視部１０５により、ステップＳ１０１にてコールされたタスク１０８（該当タスク）が、他コア１０３で実行中のタスク１０８の完了を待つ必要がある状態のため、該当タスク１０８の予め設定されている優先順位の情報がＲＡＭ１０６に記憶される。図２〜４に示す例の場合、コールされたタスク１０８ｃの予め設定されている優先順位の情報（Ｈｉｇｈ）がＲＡＭ１０６に記憶される。ステップＳ１０３の処理が完了するとステップＳ１０４に移行する。
【００３４】
ステップＳ１０４では、タスク監視部１０５により、ステップＳ１０１にてコールされたタスク１０８（該当タスク）の優先順位が下げられる。タスク監視部１０５は、例えば、該当タスク１０８が実行されるコア１０３において、該当タスク１０８以外の他の全てのタスク１０８の優先順位よりも下位になるように、該当タスク１０８の優先順位を変更する。タスク監視部１０５は、該当タスク１０８の変更後の優先順位の情報を、該当タスク１０８を実行するコア１０３に出力する。この情報を受け取ったコア１０３は、該当タスク１０８の優先順位をタスク監視部１０５からの命令に従って変更する。ステップＳ１０４の処理が完了するとステップＳ１０５に移行する。
【００３５】
図２〜４に示す例の場合、ステップＳ１０４の処理では、コールされたタスク１０８ｃの優先順位がＨｉｇｈからＬｏｗへ２段階下げられ、このタスク１０８ｃが実行されるコア１０３ｂ内の他のタスク１０８ｄの優先順位（Ｍｉｄｄｌｅ）より下位になるように変更されている。この状態において、図４に示すように、コア１０３ｂではタスク１０８ｃが待機状態の期間内に、タスク１０８ｃより優先順位が高くなったタスク１０８ｄが先に実行されている。
【００３６】
ステップＳ１０５では、タスク監視部１０５により、コールされたタスク１０８（該当タスク）が完了を待機している他コア１０３のタスク１０８（第二のタスク）が完了したか否かが判定される。タスク監視部１０５は、例えば第二のタスク１０８を実行しているコア１０３から第二のタスク１０８の実行が完了した旨の情報が入力されるとき、他コア１０３のタスク１０８が完了したことを判定することができる。ステップＳ１０５の判定の結果、他コア１０３のタスク１０８が完了した場合（ステップＳ１０５のＹｅｓ）にはステップＳ１０６に移行する。他コア１０３のタスク１０８が完了していない場合（ステップＳ１０５のＮｏ）にはこのタスク１０８の完了まで待機する。
【００３７】
ステップＳ１０６では、タスク監視部１０５により、コールされたタスク１０８（該当タスク）が完了を待機していた他コア１０３のタスク１０８が完了したため、ステップＳ１０３でＲＡＭ１０６に記憶されていた該当タスクの所与の優先順位の情報がＲＡＭ１０６から読み込まれる。ステップＳ１０６の処理が完了するとステップＳ１０７に移行する。
【００３８】
ステップＳ１０７では、タスク監視部１０５により、ステップＳ１０４で変更された該当タスクの優先順位が元に戻される。タスク監視部１０５は、ステップＳ１０６で取得した該当タスクの元の優先順位の情報を、該当タスクを実行するコアに出力する。この情報を受け取ったコアは、該当タスクの優先順位をタスク監視部１０５からの命令に従って元の順位に変更する。ステップＳ１０７の処理が完了すると本制御フローを終了する。
【００３９】
図２〜４に示す例の場合、ステップＳ１０６，Ｓ１０７では、コア１０３ａにおいてタスク１０８ｂの実行が完了したときに、タスク監視部１０５がＲＡＭ１０６に記憶されているタスク１０８ｃの元の優先順位（Ｈｉｇｈ）の情報を取得して、タスク１０８ｃを実行するコア１０３ｂに出力する。コア１０３ｂは、タスク監視部１０５からの命令に応じてタスク１０８ｃの優先順位を、現在設定されている「Ｌｏｗ」から元の「Ｈｉｇｈ」に変更する。これにより、コア１０３ｂ内では再び、タスク１０８ｃがタスク１０８ｄよりも優先的に実行されるようになる。
【００４０】
このように、本実施形態の電子制御装置１０１では、タスク監視部１０５が、上記の第三のルールにしたがって第一のタスク（図２〜４の例におけるタスク１０８ｃ）の優先順位を変更する「優先順位変更部」として機能する。また、ＲＡＭ１０６が、タスク監視部１０５により第一のタスクの優先順位が変更されたとき、第一のタスクの元の優先順位を記憶する「記憶部」として機能する。この構成により、タスク１０８を実行する２つのコア１０３とは別の構成要素であるタスク監視部１０５及びＲＡＭ１０６を利用して、図５を参照して説明した優先順位変更処理が実施される。このため、２つのコア１０３において複数のタスク１０８の実行させることに支障を与えることなく、優先順位変更部及び記憶部の機能を実施できるので、マルチコアマイコン１０２における複数のタスク１０８の実行をより一層スムーズに行うことが可能となる。
【００４１】
また、本実施形態の電子制御装置１０１では、タスク監視部１０５が、複数のコア１０３で実行されるタスク１０８の実行完了を監視する「監視部」としても機能する。タスク監視部１０５は、監視部の機能によって、上記の第四のルールに従って第二のタスク（図２〜４の例におけるタスク１０８ｂ）の実行が完了したことが検知されたとき、第一のタスク（タスク１０８ｃ）の優先順位をＲＡＭ１０６に記憶されている元の優先順位に戻す。この構成により、タスク１０８を実行する２つのコア１０３とは別の構成要素であるタスク監視部１０５を利用して、第二のタスクの実行完了の監視と、第一のタスクの優先順位を元に戻す処理が実施される。このため、２つのコア１０３において複数のタスク１０８の実行させることに支障を与えることなく、監視部及び優先順位変更部の機能を実施できるので、マルチコアマイコン１０２における複数のタスク１０８の実行をより一層スムーズに行うことが可能となると共に、第二のタスクの実行完了時にタスク１０８の優先順位を所与のものに直ちに戻すことが可能となる。
【００４２】
次に、図６〜９を参照して、他のコアで実行されるタスク（第二のタスク）の完了を待機する必要があるタスク（第一のタスク）と同じ優先順位をもつタスクが同一コアに含まれる構成を例示して、この構成における優先順位変更処理について説明する。この構成例では、図６に示すように、２つのコア１０３のうちコア１０３ａにおいて所定の２つのタスクＡ及びタスクＢが実行されるよう固定され、また、コア１０３ｂにおいて所定の３つのタスクＣ，タスクＤ，及びタスクＥが実行されるよう固定される構成が例示されている。以下の説明では、説明の便宜上、タスクＡを「タスク２０８ａ」、タスクＢを「タスク２０８ｂ」、タスクＣを「タスク２０８ｃ」、タスクＤを「タスク２０８ｄ」、タスクＥを「タスク２０８ｅ」と主に表記する。
【００４３】
この構成例では、図６に示すように、コア１０３ａのタスク２０８ａの実行が完了した後にタスク２０８ｂを実行し、タスク２０８ｂの実行が完了した後にコア１０３ｂのタスク２０８ｃを実行し、タスク２０８ｃの実行が完了した後にタスク２０８ｄを実行するように設定されている。また、コア１０３ａのタスク２０８ａの実行が完了した後にコア１０３ｂのタスク２０８ｅを実行するように設定されている。
【００４４】
また、この構成例では、図７に示すように、コア１０３ａにおいてタスク２０８ａにはＨｉｇｈ、タスク２０８ｂにはＭｉｄｄｌｅの優先順位が予め設定されている。つまり、コア１０３ａでは、タスク２０８ａの優先順位がタスク２０８ｂより高く、基本的にはタスク２０８ａがタスク２０８ｂより先に実行される。コア１０３ｂにおいてタスク２０８ｃ，２０８ｄにはＨｉｇｈ、タスク２０８ｅにはＭｉｄｄｌｅの優先順位が予め設定されている。つまり、コア１０３ｂでは、タスク２０８ｃ，２０８ｄの優先順位がタスク２０８ｅより高く、基本的にはタスク２０８ｃ，２０８ｄがタスク２０８ｅより先に実行される。
【００４５】
ここで、上記の第三のルールにおける第一のタスクと同じ優先順位をもつ他のタスク（以降の説明では「第四のタスク」とも表記する）が同一コア内に存在する場合、言い換えると第一のタスクと同じ優先順位をもつタスクのグループがある場合には、本実施形態の電子制御装置１０１では、このグループに含まれるすべてのタスクの優先順位を纏めて下げるよう構成される。つまり、本実施形態の電子制御装置１０１は、第三のタスクの優先順位に対して、第一のタスクの優先順位を低く変更するとき、第一のタスクと同一のコア内の複数のタスクのうち第一のタスクと同一の優先順位が設定される第四のタスクの優先順位を第一のタスクと同様に変更することができる。
【００４６】
これを図６，７に示す例に適用すると、コア１０３ｂのタスク２０８ｃが、このタスク２０８ｃが実行されるコア１０３ｂとは異なる他のコア１０３ａで実行されるタスク２０８ｂの完了まで実行を待機する必要があるため、図８に示すように、タスク２０８ｃの優先順位をＨｉｇｈからＬｏｗに変更して、コア１０３ｂ内の他のタスク２０８ｅの優先順位（Ｍｉｄｄｌｅ）に対して、タスク２０８ｃの優先順位を低くする。さらに、タスク２０８ｃと同じ優先順位のタスク２０８ｄも、タスク２０８ｃと同様に優先順位をＨｉｇｈからＬｏｗに変更して、タスク２０８ｅの優先順位（Ｍｉｄｄｌｅ）に対して優先順位を低くする。
【００４７】
これにより、コア１０３ａにおいてタスク２０８ｂが実行中であり、かつ、コア１０３ｂにおいてタスク２０８ｃが待機中である期間では、コア１０３ｂにおいて、タスク２０８ｅの優先順位がタスク２０８ｃ，２０８ｄより高い状態となるため、図８に示すように、タスク２０８ｃ，２０８ｄの待機中にタスク２０８ｃ，２０８ｄより先にタスク２０８ｅが実行される。つまり、コア１０３ｂのタスク２０８ｅが、コア１０３ａのタスク２０８ｂと並列に実行されるので、コア１０３ａのタスク２０８ｂの実行完了までコア１０３ｂが待機状態になるのを回避できる。タスク２０８ｂが完了した後には、タスク２０８ｃ及びタスク２０８ｄが順次実行されて全てのタスク２０８の実行が完了する。
【００４８】
また、本実施形態の電子制御装置１０１は、第二のタスクの実行が完了したとき、第三のタスクに対して低くした第一のタスク及び第四のタスクを含むグループの優先順位を元に戻すことができる。これを図６〜８の例に適用すると、上記の第三のルールに従ってコア１０３ａのタスク２０８ｂの実行中に優先順位をＬｏｗに下げられたコア１０３ｂのタスク２０８ｃ及びタスク２０８ｄのグループについて、タスク２０８ｂの実行が完了したとき、タスク２０８ｃ，２０８ｄの優先順位をＬｏｗからＨｉｇｈに再び変更して、タスク２０８ｅに対して低くしたタスク２０８ｃ，２０８ｄの優先順位が元に戻される。
【００４９】
したがって、本実施形態の電子制御装置１０１は、図６〜８に示す構成でも、図２〜４に示す構成で説明したのと同様の効果を発揮できる。
【００５０】
ところで、複数のタスクの優先順位が同一に設定されている場合、これらのタスク２０８は所定の順番どおりに連続して実行することや、できるだけ同じタイミングで実行することが想定されていると考えられる。図６〜８の例では、タスク２０８ｃが実行された後に、タスク２０８ｄが実行されるのが好ましい。本実施形態では、このような同一の優先順位のタスクのグループについて、当該グループの優先順位の変更を纏めて行うので、各タスクの優先順位が変更されても、グループ内のタスクの実行順序を所定のもので維持することができる。したがって、複数のタスク２０８の優先順位を変更する処理を行っても、電子制御装置１０１の制御対象（本実施形態ではエンジン）の制御に適した本来の順序で実行できる機会を増やすことができる。
【００５１】
次に、図９のフローチャートを参照して、図６〜８に示す構成における優先順位変更処理の詳細な手順について説明する。なお、図９のフローチャート中のステップＳ２０１，Ｓ２０２，Ｓ２０５，Ｓ２０６の各処理は、図５のフローチャートを参照して説明したステップＳ１０１，Ｓ１０２，Ｓ１０５，Ｓ１０６の処理と同様であるので説明を省略する。
【００５２】
ステップＳ２０３では、タスク監視部１０５により、ステップＳ２０１にてコールされたタスク２０８（該当タスク）が、他コア１０３で実行中のタスク２０８の完了を待つ必要がある状態のため、同一コア１０３内で該当タスク２０８と同じ優先順位をもつタスクのグループについて、このグループ内の各タスク２０８に予め設定されている優先順位の情報がＲＡＭ１０６に記憶される。図６〜８に示す例の場合、コールされたタスク２０８ｃと、このタスク２０８ｃと同じ優先順位のタスク２０８ｄに予め設定されている優先順位の情報（Ｈｉｇｈ）がＲＡＭ１０６に記憶される。ステップＳ２０３の処理が完了するとステップＳ２０４に移行する。
【００５３】
ステップＳ２０４では、タスク監視部１０５により、ステップＳ２０１にてコールされたタスク２０８（該当タスク）を含むグループの優先順位が下げられる。タスク監視部１０５は、例えば、該当タスク２０８が実行されるコア１０３において、該当タスク以外の他の全てのタスク２０８の優先順位よりも下位になるように、該当タスク２０８と、この該当タスクと同じ優先順位をもつ他のタスク２０８の優先順位を変更する。ステップＳ２０４の処理が完了するとステップＳ２０５に移行する。
【００５４】
図６〜８に示す例の場合、ステップＳ２０４の処理では、コールされたタスク２０８ｃと、このタスク２０８ｃと同じ優先順位をもつタスク２０８ｄからなるグループの優先順位が、ＨｉｇｈからＬｏｗへ２段階下げられ、タスク２０８ｃ，２０８ｄが実行されるコア１０３ｂ内の他のタスク２０８ｅの優先順位（Ｍｉｄｄｌｅ）より下位になるように変更されている。この状態において、図８に示すように、コア１０３ｂではタスク２０８ｃが待機状態の期間内に、タスク２０８ｃ，２０８ｄより優先順位が高くなったタスク２０８ｅが先に実行されている。
【００５５】
ステップＳ２０７では、タスク監視部１０５により、ステップＳ２０４で変更された該当タスク２０８を含むグループの優先順位が元に戻される。タスク監視部１０５は、ステップＳ２０６でＲＡＭ１０６から取得した該当タスクのグループの元の優先順位の情報を、該当タスクを実行するコアに出力する。この情報を受け取ったコアは、該当タスクのグループの優先順位をタスク監視部１０５からの命令に従って元の順位に変更する。ステップＳ２０７の処理が完了すると本制御フローを終了する。
【００５６】
図６〜８に示す例の場合、ステップＳ２０６，Ｓ２０７では、コア１０３ａにおいてタスク２０８ｂの実行が完了したときに、タスク監視部１０５がＲＡＭ１０６に記憶されているタスク２０８ｃ，２０８ｄの元の優先順位（Ｈｉｇｈ）の情報を取得して、タスク２０８ｃ，２０８ｄを実行するコア１０３ｂに出力する。コア１０３ｂは、タスク監視部１０５からの命令に応じてタスク２０８ｃ，２０８ｄの優先順位を、現在設定されている「Ｌｏｗ」から元の「Ｈｉｇｈ」に変更する。これにより、コア１０３ｂ内では再び、タスク２０８ｃ，２０８ｄがタスク２０８ｅよりも優先的に実行されるようになる。
【００５７】
以上、具体例を参照しつつ本発明の実施の形態について説明した。しかし、本発明はこれらの具体例に限定されるものではない。すなわち、これら具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。例えば、前述した各具体例が備える各要素及びその数、配置、材料、条件、形状、サイズなどは、例示したものに限定されるわけではなく適宜変更することができる。また、前述した各実施の形態が備える各要素は、技術的に可能な限りにおいて組み合わせることができ、これらを組み合わせたものも本発明の特徴を含む限り本発明の範囲に包含される。
【００５８】
上記実施形態では、マルチコアマイコン１０２が２つのコア１０３ａ，１０３ｂを有する構成を例示したが、マルチコアマイコン１０２が有する複数のコア１０３の数はこれに限られず、３つ以上のコアを有する構成としてもよい。また、上記実施形態では、同一のコア１０３で実行される複数のタスク１０８に三段階の優先順位を設定する構成を例示したが、優先順位の段階数は三段階以外としてもよい。
【００５９】
上記実施形態では、マルチコアマイコン１０２において複数のコア１０３とは別要素として、優先順位変更部及び監視部として機能するタスク監視部１０５、及び、記憶部として機能するＲＡＭ１０６を備える構成を例示したが、優先順位変更部、監視部、記憶部の各機能をコア１０３内のタスク１０８，２０８として設定してもよい。また、電子制御装置１０１の内部の要素であれば、マルチコアマイコン１０２の外部の要素を優先順位変更部、監視部、記憶部の各機能を実現するよう適用し、マルチコアマイコン１０２内の各コア１０３と通信する構成としてもよい。
【００６０】
また、上記実施形態では、優先順位を記憶する記憶部としてマルチコアマイコン１０２内のＲＡＭ１０６を適用する構成を例示したが、この代わりに共有ＲＡＭ１０４の一部の領域を割り当ててもよい。また、記憶部として機能するＲＡＭ１０６または共有ＲＡＭ１０４をマルチコアマイコン１０２の外部に配置して、マイコン１０２内のコア１０３と通信する形にしてもよい。
【００６１】
上記実施形態では、電子制御装置１０１が車両のエンジン制御用ＥＣＵとして実装される構成を例示したが、マルチコアマイコン１０２を有する電子制御装置１０１であればよく、エンジン制御用ＥＣＵ以外にも適用することができる。電子制御装置１０１は、例えば、車両のＥＰＳ（Ｅｌｅｃｔｒｉｃ  Ｐｏｗｅｒ  Ｓｔｅｅｒｉｎｇ）やＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｂｒａｋｉｎｇ  Ｓｙｓｔｅｍ）などの制御用ＥＣＵ、ハイブリッド車両制御用ＥＣＵ、ゲートウェイＥＣＵなどにも適用可能であり、また、複数のＥＣＵの機能が統合された統合ＥＣＵにも適用可能である。また、電子制御装置１０１は、車両に搭載されるＥＣＵ以外の電子制御装置にも適用可能である。
【００６２】
上記実施形態では、該当タスク（第一のタスク。上記実施形態ではタスク１０８ｃ，２０８ｃ）の優先順位を他のタスク（第三のタスク。上記実施形態ではタスク１０８ｄ，２０８ｅ）より下げる構成を例示したが、該当タスクの優先順位が他のタスクの優先順位より相対的に下がることによって、他のタスクが該当タスクより先に実行できればよい。つまり、他のタスクの優先順位を、該当タスクより上げる構成としてもよい。
【符号の説明】
【００６３】
１０１：電子制御装置
１０２：マルチコアマイコン
１０３：複数のコア
１０３ａ：コア１（他のコア）
１０３ｂ：コア２（同一のコア）
１０５：タスク監視部（優先順位変更部、監視部）
１０６：ＲＡＭ（記憶部）
１０８，２０８：複数のタスク
１０８ｂ，２０８ｂ：タスクＢ（第二のタスク）
１０８ｃ，２０８ｃ：タスクＣ（第一のタスク）
１０８ｄ：タスクＤ（第三のタスク）
２０８ｄ：タスクＤ（第四のタスク）
２０８ｅ：タスクＥ（第三のタスク）
【図１】
0006365387.tif 000002
【図２】
0006365387.tif 000003
【図３】
0006365387.tif 000004
【図４】
0006365387.tif 000005
【図５】
0006365387.tif 000006
【図６】
0006365387.tif 000007
【図７】
0006365387.tif 000008
【図８】
0006365387.tif 000009
【図９】
0006365387.tif 000010