(57)【要約】【課題】マルチコアでタスクを処理する電子制御装置において、タスク処理の実行にかかるコア間差を低減することのできる電子制御装置を提供する。【解決手段】この電子制御装置は、プログラムを記憶する記憶部と、プログラムを実行する演算部と、外部からタスクが入力され、タスクの優先度に応じて、タスクに対応したプログラムを起床させる制御部と、を備えている。演算部は、複数のコアを有して、各コアがプログラムを並列して演算可能にされ、制御部は、プログラムのうち所定の第１プログラムを起床させる起床タイミングが到来したとき、すべてのコアにおいて前回の第１プログラムの実行が完了していることを条件に、第１プログラムの起床を行う。【選択図】図３
2016184315.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを記憶する記憶部（４０）と、
前記プログラムを実行する演算部（２０）と、
外部からタスクが入力され、前記タスクの優先度に応じて、前記タスクに対応した前記プログラムを起床させる制御部（１０）と、を備える電子制御装置であって、
前記演算部は、複数のコアを有して、各コアが前記プログラムを並列して演算可能にされ、
前記制御部は、前記プログラムのうち所定の第１プログラムを起床させる起床タイミングが到来したとき、すべてのコアにおいて前回の前記第１プログラムの実行が完了していることを条件に、前記第１プログラムの起床を行うことを特徴とする電子制御装置。
【請求項２】
前記タスクを、対応する前記プログラムの実行を中断できない高優先度タスクと、前記プログラムを中断可能な低優先度タスクとに層別する層別部（３０）を備え、
前記第１プログラムは前記低優先度タスクに対応する前記プログラムであることを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記制御部は、前記プログラムのうち所定の第１プログラムを起床させる起床タイミングが到来したとき、
複数の前記コアのうち、前記第１プログラムの実行に供されるコアにおいて前回の前記第１プログラムの実行が完了していることを条件に、前記第１プログラムの起床を行うことを特徴とする請求項１または請求項２に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載され、複数のタスクを実行する電子制御装置に関する。
【背景技術】
【０００２】
優先度の高低が設定された複数のタスクを処理する場合、例えば優先度の低いタスクＡは、その実行中に他の優先度の高いタスクＢが割り込んだりすると一時的に中断されることがある。タスクＡの処理が完了していない状態で、次にタスクＡが起床するタイミングが到来してしまうと、該タイミングにおいてタスクＡは起床されず、処理が１回抜けてしまうという問題があった。
【０００３】
これに対して、特許文献１の電子制御装置は、タスクＡの処理が完了するまでは、次のタスクＡの起床をさせないようになっている。このため、タスク抜けを防止することができる。しかしながら、特許文献１の電子制御装置では、タスクＡが完了するまで次のタスクＡの起床を遅延させるので、優先度の低い処理の処理遅れが顕著になる虞がある。
【０００４】
ところで、近年、マイクロコンピュータに搭載される中央演算処理装置（ＣＰＵ）においてマルチコア化が進んでいる。マルチコアのＣＰＵを採用したマイクロコンピュータでは、一つのタスクを複数のコアに分割して演算を実行したり、複数のタスクを並列して演算を実行したり、といった方法によって、演算にかかる負荷を軽減することができる。
【０００５】
したがって、マルチコアを有する電子制御装置を採用すれば、タスクＡの処理を複数のコアで分散して処理することによって、上記処理遅れを低減することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１６１３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、車両に搭載される電子制御装置では、タスクの起床周期が、例えばエンジンの回転数などに依存する場合があり、エンジンが高回転になると、マルチコアのＣＰＵを採用した場合であっても、次に該タスクの起床タイミングが到来してもタスクの処理が完了できていないコアが生じてしまう虞がある。
【０００８】
一般的には、コア毎に割り当てられるタスクは各コアに対して均等ではないため、一つのタスクを分散処理すると、処理を完了したコアと、処理を完了できなかったコアとが発生してしまうことになる。処理を完了できなかったコアでは、次に該タスクを起床させるタイミングが到来しても起床処理が実行されないため、タスク抜けが発生し。コア間で実行回数に差が出てしまう虞がある。
【０００９】
また、特許文献１のように、処理を完了できなかったコアに対してタスクを遅延させて確実に実行させる技術を採用すると、タスクの起床周期を重ねるごとに、処理が完了する時間のコア間差が顕著になる虞がある。
【００１０】
本発明は、上記問題点を鑑みてなされたものであり、マルチコアでタスクを処理する電子制御装置において、タスク処理の実行にかかるコア間差を低減することのできる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
ここに開示される発明は、上記目的を達成するために以下の技術的手段を採用する。なお、特許請求の範囲およびこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【００１２】
上記目的を達成するために、本発明は、プログラムを記憶する記憶部（４０）と、プログラムを実行する演算部（２０）と、外部からタスクが入力され、タスクの優先度に応じて、タスクに対応したプログラムを起床させる制御部（１０）と、を備える電子制御装置であって、演算部は、複数のコアを有して、各コアがプログラムを並列して演算可能にされ、制御部は、プログラムのうち所定の第１プログラムを起床させる起床タイミングが到来したとき、すべてのコアにおいて前回の第１プログラムの実行が完了していることを条件に、第１プログラムの起床を行うことを特徴としている。
【００１３】
これによれば、複数のコアを有する、いわゆるマルチコアの電子制御装置において、すべてのコアで第１プログラムの実行が完了してから、次回の第１プログラムの起床を行うので、各コアにおいてタスク抜けが発生することがなく、コア間で実行回数に差が出ることを防止することができる。また、タスクの起床周期を重ねても、処理が完了する時刻のコア間差を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態における電子制御装置の概略構成を示すブロック図である。
【図２】従来の構成におけるタスクの処理を示すタイミングチャートである。
【図３】第１実施形態における電子制御装置の動作を示すフローチャートである。
【図４】第１実施形態におけるタスクの処理を示すタイミングチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて説明する。なお、以下の各図相互において、互いに同一もしくは均等である部分に、同一符号を付与する。
【００１６】
（第１実施形態）
最初に、図１を参照して、本実施形態に係る電子制御装置の概略構成について説明する。
【００１７】
この電子制御装置は、例えば、車両におけるエンジン系の部位を制御するエンジン制御ＥＣＵである。図１に示すように、電子制御装置１００には、ユーザーあるいはエンジンを構成する各部位からのタスクの実行要求が入力され、その要求に対する応答が出力されるようになっている。この出力に基づいて各部位が駆動し、エンジンが適切な動作を行う。
【００１８】
図１に示すように、本実施形態における電子制御装置１００は、制御部１０と、演算部２０と、層別部３０と、を備え、さらに記憶装置として記憶部４０を備えている。
【００１９】
制御部１０は、演算部２０、層別部３０および記憶部４０と通信可能に接続されている。制御部１０は、入力されるタスクに対応したプログラムを後述する記憶部４０から読み出して起床させ、演算部２０に実行させる。制御部１０は、優先度の高いタスクに対応するプログラムを優先的に起床させるようになっている。
【００２０】
また、制御部１０は演算部２０の演算状態を監視している。制御部１０は、演算部２０において所定のプログラムの実行状態に応じて、次のタスクに対応したプログラムの実行を開始するか否かを判断している。制御部１０の動作の詳細は追って説明する。
【００２１】
また、制御部１０は、演算部２０が演算した結果に基づいてエンジンの各部位の制御を決定して各部位を駆動させる。
【００２２】
演算部２０は、タスクに対応したプログラムを実行し演算を行う部分である。演算部２０は、制御部１０により起床されたプログラムを記憶部４０から読み出して実行している。
【００２３】
本実施形態における演算部２０は、複数のコアを有するＣＰＵを含んでいる。制御部１０は、ひとつのタスクの処理に際して、処理を分割して複数のコアに割り当てる。割り当てられたコアは、対応するプログラムを実行する。つまり、ひとつのタスクを並行して分割演算が行われるようになっている。
【００２４】
層別部３０は、入力されたタスクを、途中で処理が中断してはならない高優先度タスクと、途中で処理が中断されてもよい低優先度タスクと、に層別する部分である。高優先度タスクには、イベントの発生時に即時対応が必要な優先度の高いタスクが選定される。一方、低優先度タスクには、タスク完了期限が設定されていないなど、高優先度タスクに比べて優先度の低いタスクが選定される。
【００２５】
記憶部４０は、入力されるタスクに対応したプログラムが格納されている。記憶部４０に格納されたプログラムは、制御部１０の要求に応じて起床され、起床されたプログラムに基づいて演算部２０が演算を実行することによって、タスクが処理される。
【００２６】
次に、図２〜図４を参照して本実施形態における電子制御装置１００ひいては制御部１０の動作について説明する。
【００２７】
まず、図２を参照して従来構成における動作を説明する。この例では、２つの高優先度タスクと、１つの低優先度タスクとが電子制御装置１００に入力されたとする。層別部３０はこれらのタスクを高優先度タスクと低優先度タスクに層別して制御部１０に出力する。制御部１０は、演算部２０の有する複数のコアのうち２つのコア（コア１，コア２）にタスクに対応したプログラムの実行を分散処理させる。この例における低優先度タスクは、時刻ｔ１、時刻ｔ３、時刻ｔ５において、周期的に起床するようにされたタスクである。図２では、その間に高優先度タスクの割り込みがあり、その都度低優先度タスクの処理が中断される様子を図示している。
【００２８】
図２に示すように、コア１では、時刻ｔ１において起床された低優先度タスクＡが時刻ｔ３以前の時刻ｔ２において、すでに処理が完了している。したがって、定期的に起床される低優先度タスクの起床時刻ｔ３において、新たな低優先度タスクＢの起床が可能である。同様に、時刻ｔ５以前に低優先度タスクの処理が完了しているので、時刻ｔ５において、新たな低優先度タスクＣの起床が可能である。すなわち、この例におけるコア１は、低優先度タスクの定期的な起床時刻において、その都度新たな低優先度タスクが処理可能な状態にある。特許請求の範囲における第１プログラムとは、低優先度タスクＡ〜Ｃに対応するプログラムを指す。
【００２９】
一方、コア２では、コア１に比べて高優先度タスクの割り込み数が多いため、時刻ｔ３に至っても、時刻ｔ１において起床された低優先度タスクＡの処理が完了していない。よって、時刻ｔ３以降も時刻ｔ１において起床された低優先度タスクＡの処理を継続してしまい、コア１が時刻ｔ３で起床した低優先度タスクＢを起床することができない。図２では、時刻ｔ３と時刻ｔ５の間の時刻ｔ４において低優先度タスクＡの処理を完了しているが、時刻ｔ３において新たな低優先度タスクＢは起床されていないので、時刻ｔ４と時刻ｔ５の間では低優先度タスクの処理が行われない。すなわち、コア２では、低優先度タスクＢのタスク抜けが発生してしまう。
【００３０】
これに対して、本実施形態における制御部１０は、図３に示す動作フローに従って動作する。図３および図４を参照して本実施形態における動作を説明する。図４は本実施形態におけるタスクの実行に関するタイミングチャートである。
【００３１】
この例においても、制御部１０は、演算部２０の有する複数のコアのうち２つのコア（コア１，コア２）にタスクに対応したプログラムの実行を分散処理させる。低優先度タスクは、時刻ｔ１、時刻ｔ３、時刻ｔ５において、周期的に起床するようにされたタスクである。図４に示すように、時刻ｔ１において、コア１およびコア２の双方で低優先度タスクＡが起床したものと仮定する。
【００３２】
図４に示すように、コア１では、時刻ｔ１において起床された低優先度タスクＡが時刻ｔ３以前の時刻ｔ２において、すでに処理が完了している。一方、コア２では、コア１に比べて高優先度タスクの割り込み数が多いため、時刻ｔ３に至っても、時刻ｔ１において起床された低優先度タスクＡの処理が完了していない。このような仮定のもと、本実施形態おける制御部１０の動作を説明する。
【００３３】
まず、制御部１０は、図３に示すように、ステップＳ１を実行する。ステップＳ１は、制御部１０が、現在時刻が低優先度タスクの起床タイミングか否かを判定するステップである。図４に示すように、従来構成について図示した図２と同様に、低優先度タスクは、時刻ｔ１、時刻ｔ３、時刻ｔ５において、周期的に起床するようにされたタスクであるから、時刻ｔ１，ｔ３，ｔ５において、ステップＳ１はＹＥＳ判定となり、ステップＳ２に進む。時刻ｔ１，ｔ３，ｔ５を除く時刻では、ステップＳ１はＮＯ判定となり、ステップＳ１を繰り返す。
【００３４】
ステップＳ２は、低優先度タスクの起床タイミングにおいて、制御部１０が、全てのコアにおいて以前起床されていた低優先度タスクの処理が完了しているか否かを判定するステップである。
【００３５】
例えば時刻ｔ３は、低優先度タスクＡの次に処理されるべき低優先度タスクＢの起床タイミングである。コア１においては以前に起床されていた低優先度タスクＡが完了しているが、コア２においては低優先度タスクＡの処理が完了していない。よって、時刻ｔ３においては、ステップＳ２はＮＯ判定となり、この制御部１０は図３に示す動作フローを終了する。つまり、時刻ｔ３において低優先度タスクＢは起床されず、コア１、コア２のいずれでも低優先度タスクＢの処理は実行されない。
【００３６】
その後の時刻ｔ５は、低優先度タスクの起床タイミングである。時刻ｔ５では、コア１およびコア２において、以前に起床されていた低優先度タスクＡが完了している。よって、ステップＳ２はＹＥＳ判定となり、ステップＳ３に進む。
【００３７】
ステップＳ３は、制御部１０が、低優先度タスクに対応するプログラムを起床するステップである。時刻ｔ５において、ステップＳ２がＹＥＳ判定となるので、制御部１０は、時刻ｔ５において、低優先度タスクＡの次の低優先度タスクである低優先度タスクＢを起床させ、演算部２０に対して演算を実行させる。
【００３８】
本実施形態にかかる電子制御装置１００を採用することにより、すべてのコアである低優先度タスクに対応したプログラムの実行が完了してから、次回の低優先度タスクに対応するプログラムの起床を行うので、図４に示すように各コアにおいてタスク抜けが発生することがなく、コア間で実行回数に差が出ることを防止することができる。また、タスクの起床周期を重ねても、コア間において、処理が完了する時刻がほとんどずれることがない。すなわち、処理が完了する時刻のコア間差を抑制することができる。
【００３９】
（その他の実施形態）
以上、本発明の好ましい実施形態について説明したが、本発明は上記した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【００４０】
上記した実施形態では、低優先度タスクＡ〜Ｃがコア１とコア２の２つのコアに分割処理される例を示したが、低優先度タスクＡ〜Ｃが割り当てられるコア数は３以上であってもよい。
【００４１】
なお、低優先度タスクの処理に、電子制御装置１００が持つ全てのコアを演算に使用する必要はなく、例えば８コアのＣＰＵにおいて、２つのコアに低優先度タスクＡ〜Ｃを割り当てるようにしても良い。この場合、図３に示す動作フローのうち、ステップＳ２を、「割り当てに採用されている全てのコアにおいて以前起床されていた低優先度タスクの処理が完了しているか否かを判定するステップ」とすることが好ましい。これによれば、制御部１０が全てのコアを監視することなく、割り当てに採用されているコアのみを監視すればよいから、制御部１０の動作負荷を軽減することができる。
【００４２】
また、上記した実施形態では、低優先度タスクを対象にして、プログラムの起床タイミングを制御する例を説明したが、高優先度タスクを含む全てのタスクを対象にすることもできる。
【符号の説明】
【００４３】
１０…制御部，２０…演算部，３０…層別部，４０…記憶部
【図１】
2016184315.tif 000003
【図２】
2016184315.tif 000004
【図３】
2016184315.tif 000005
【図４】
2016184315.tif 000006