(57)【要約】【課題】内燃機関の動作に関わる複数のタスクのうちの優先度の低いタスクのタスク抜けの発生を回避する。【解決手段】本実施の形態においては、先ず、高優先タスク（Ａ，Ｂ，Ｃ，Ｄ）と低優先タスク（ａ，ｂ，ｃ，ｄ）が特定される。続いて、高優先タスクと低優先タスクがタスク処理用コア（コア１〜コア４）へ振り分けられる。具体的には先ず、タスクＡがコア１に、タスクＢがコア２に、タスクＣがコア３に、タスクＤがコア４に、それぞれ振り分けられる。続いて、コア１〜コア４に残る演算資源に、低優先タスクが振り分けられる。この振り分けは、低優先タスクの優先度（ａ＞ｂ＞ｃ＞ｄ）と、高優先タスクのタスク規模と（Ａ＞Ｂ＞Ｃ＞Ｄ）に基づいて行われる。具体的には、タスクａがコア４に、タスクｂがコア３に、タスクｃがコア２に、タスクｄがコア１に、それぞれ振り分けられる。【選択図】図２
2016017472.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアが搭載されたマルチコアプロセッサを有し、内燃機関の動作に関わる複数のタスクを処理する内燃機関の制御装置であって、
前記複数のタスクのうちの処理要求に係るタスクが予め設定した高優先タスクと低優先タスクの何れに該当するかを特定する手段と、
前記内燃機関の運転状態に基づいて、前記低優先タスクに該当すると特定されたタスクの内の優先度を決定する手段と、
前記複数のコアのうちのタスク処理用コアに、前記高優先タスクに該当すると特定されたタスクを１つずつ振り分ける手段と、
前記高優先タスクに該当すると特定されたタスクを振り分けた後に、前記タスク処理用コアに残る演算資源がより多いコアに、前記低優先タスクに該当すると特定されたタスクの内のより優先度の高いタスクを１つずつ振り分ける手段と、
を備えることを特徴とする内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は内燃機関の制御装置に関し、特に、複数のコアが搭載されたマルチコアプロセッサを用いて複数のタスクを処理する内燃機関の制御装置に関する。
【背景技術】
【０００２】
従来、例えば特許文献１には、複数のコアが搭載されたマルチコアプロセッサを用いて内燃機関の動作に関わる複数のタスクを処理する際に、複数のタスクを各コアに分配する役割を担う所定コアに優先度の高いタスクの処理を担わせ、所定コアが処理するタスク以外のタスクの処理を、所定コアとは異なる他のコアに担わせるように構成した制御装置が開示されている。複数のタスクを分配する処理は、他のタスクの処理に比べて安定度が高い。従って、優先度の高いタスクを特定した上で、このタスクを所定コアに分配すれば、優先度の高いタスクが処理されない所謂タスク抜けの発生を有効に回避できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１３０１０４号公報
【特許文献２】特開２０１３−２５３５６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、複数のタスクには優先度の低いタスクも存在する。このようなタスクであったとしても、優先度の高いタスク同様、タスク抜けの発生は極力回避できることが望ましい。しかし、このような観点で複数のタスクを分配する手法については、特許文献１をはじめとする各種文献において開示されていないことから開発の余地がある。
【０００５】
本発明は、上述のような課題に鑑みなされたものである。すなわち、内燃機関の動作に関わる複数のタスクのうちの優先度の低いタスクのタスク抜けの発生を回避することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、複数のコアが搭載されたマルチコアプロセッサを有し、内燃機関の動作に関わる複数のタスクを処理する内燃機関の制御装置であって、
前記複数のタスクのうちの処理要求に係るタスクが予め設定した高優先タスクと低優先タスクの何れに該当するかを特定する手段と、
前記内燃機関の運転状態に基づいて、前記低優先タスクに該当すると特定されたタスクの内の優先度を決定する手段と、
前記複数のコアのうちのタスク処理用コアに、前記高優先タスクに該当すると特定されたタスクを１つずつ振り分ける手段と、
前記高優先タスクに該当すると特定されたタスクを振り分けた後に、前記タスク処理用コアに残る演算資源がより多いコアに、前記低優先タスクに該当すると特定されたタスクの内のより優先度の高いタスクを１つずつ振り分ける手段と、
を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、高優先タスクに該当すると特定されたタスクのタスク抜けの発生の回避は勿論のこと、低優先タスクに該当すると特定されたタスクのタスク抜けの発生も回避できる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態の制御装置の構成の概略を示す図である。
【図２】実施の形態におけるタスクの分配例を示した図である。
【図３】タスクカテゴリの優先度の一例を示したものである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態の内燃機関の制御装置について図を用いながら説明する。
【００１０】
本実施の形態の制御装置は、車両に搭載される内燃機関を制御対象とする。図１は、本実施の形態の制御装置の構成の概略を示す図である。本実施の形態の制御装置１０は、複数のコア（コア１，コア２，コア３，コア４，コア５，・・・）が搭載されたマルチコアプロセッサとして構成され、エンジンＥＣＵの機能の一部として実現される。図示は省略するが、各コアはキャッシュ付きのＣＰＵとローカルメモリとを備え、コア同士はバスで接続されている。ローカルメモリには、ＣＰＵで実行される各種のプログラムとそのプログラムの実行時に使用される各種のデータが記憶されている。また、バスにはコア間で共有されるキャッシュも接続されている。
【００１１】
制御装置１０は、内燃機関１２の動作に関わる複数のタスクを処理する機能を備えている。複数のタスクには、内燃機関１２の回転角に同期するタスクと、回転角に同期しないタスクが含まれる。回転角に同期するタスクとしては、例えば、燃料噴射量やバルブタイミング等に代表される内燃機関１２の燃焼行程に関連する演算のタスクが該当する。回転角に同期しないタスクには、時間に同期するタスクと、不定期に発生するタスクとが含まれる。時間に同期するタスクとしては、所定のサンプリング時間毎に演算されるタスク、例えば、スロットル開度等に代表される内燃機関１２の空気系に関連する演算のタスクが該当する。また、不定期に発生するタスクとしては、例えば、車両の運転者によりエアコン等のスイッチが操作された場合等、人為的に何らかの操作がなされた場合に発生する演算のタスクが該当する。
【００１２】
本実施の形態において、上述した複数のタスクは、制御装置１０内のコアであって、演算処理機能を有する所定のコア（図１に示すコア１〜コア４が該当する。以下「タスク処理用コア」と称す。）に振り分けられて処理される。複数のタスクの振り分けは、制御装置１０内のコアであって、タスクを振り分ける機能を有する所定のコア（図１に示すコア５が該当する。以下「振り分け用コア」と称す。）により処理される。
【００１３】
ここで、回転角に同期しないタスクの演算負荷は比較的安定しているのに対して、回転角に同期するタスクの演算負荷はエンジン回転速度の変動に応じて変化し、一般的にはエンジン回転速度が上昇するほど高くなる。また、回転角に同期しないタスクに対する処理要求と、回転角に同期するタスクに対する処理要求とが同一タイミングで出された場合は、演算負荷が極めて高くなる。従って、高エンジン回転速度領域において、回転角に同期しないタスクに対する処理要求と、回転角に同期するタスクに対する処理要求とが同一タイミングで出された場合に、これらのタスクの振り分けがランダムに行われてしまうと、タスクの処理がなされず、または、処理が未完了となる可能性が高くなる。
【００１４】
そこで、本実施の形態においては、同一タイミングに出された複数の処理要求に係るタスク（以下「処理要求タスク」と称す。）を処理すべく、以下に説明する手法によって処理要求タスクをタスク処理用コアの何れかに振り分ける。以下、処理要求タスクが８つである場合を例として、処理要求タスクのタスク処理用コアへの振り分け手法を図２乃至図３を参照しながら説明する。
【００１５】
処理要求タスクの振り分けに際しては、先ず、８つの処理要求タスクが高優先タスクと低優先タスクの何れに該当するかが特定される。ここで、高優先タスクとは、そのタスクを処理しなければ制御が破綻するタスクであり、低優先タスクとは、そのタスクを処理せずとも制御は破綻しないが制御性が落ちるタスクであり、内燃機関１２の制御目的によって事前に決定されているものである。ここでは、図２示すタスクＡ，Ｂ，Ｃ，Ｄが高優先タスクに該当すると特定され、図２に示すタスクａ，ｂ，ｃ，ｄが低優先タスクに該当すると特定されたとする。
【００１６】
続いて、タスクａ〜ｄの優先度が決定される。この優先度の決定は、事前に設定した４つのタスクカテゴリのうちの何れに属するかを特定することにより行われる。この４つのタスクカテゴリは、具体的に、快適性確保、ハードウェア保護、安全性確保および法規遵守であり、内燃機関１２の運転状態に応じて変動する。図３は、タスクカテゴリの優先度の一例を示したものである。図３においては、快適性確保、ハードウェア保護、安全性確保、法規遵守の順に優先度が高くなる。ここでは、タスクａが法規遵守のカテゴリに属し、タスクｂが安全性確保のカテゴリに属し、タスクｃがハードウェア保護のカテゴリに属し、タスクｄが快適性確保のカテゴリに属する、と特定されたとする。そうすると、タスクａ〜ｄの優先度は、タスクａが最も高く、タスクｂ、タスクｃ、タスクｄの順に低くなる。
【００１７】
続いて、タスクＡ〜Ｄとタスクａ〜ｄがタスク処理用コアへ振り分けられる。先ず、タスクＡがコア１に、タスクＢがコア２に、タスクＣがコア３に、タスクＤがコア４に、それぞれ振り分けられる。続いて、コア１〜コア４に残る演算資源に、タスクａ〜ｄが振り分けられる。タスクａ〜ｄの振り分けは、タスクａ〜ｄの優先度と、タスクＡ〜Ｄのタスク規模とに基づいて行われる。ここで、タスク規模は、タスクＡ〜Ｄの演算量、または、タスクＡ〜Ｄを構成するタスク数によって表されるものであり、タスク処理による演算負荷が最大となる条件（例えば高エンジン回転速度領域）を基準として事前に設定されているものである。ここでは、タスクＡ〜Ｄのタスク規模は、タスクＡが最も大きく、タスクＢ、タスクＣ、タスクＤの順に小さくなるものとする。つまり、タスクＡ〜Ｄを振り分けた後にタスク処理用コアに残る演算資源は、コア１が最も少なく、コア２、コア３、コア４の順に多くなる。
【００１８】
タスクａ〜ｄの優先度がａ＞ｂ＞ｃ＞ｄであり、タスクＡ〜Ｄのタスク規模がＡ＞Ｂ＞Ｃ＞Ｄ（残りの演算資源はコア４＞コア３＞コア２＞コア１）であることから、タスクａがコア４に、タスクｂがコア３に、タスクｃがコア２に、タスクｄがコア１に、それぞれ振り分けられる。このように、タスクＡ〜Ｄを振り分けた後に残る演算資源がより多いコアに、タスクａ〜ｄのうちのより優先度の高いタスクを振り分けることで、タスクａ〜ｄのうちのより優先度の高いタスクの処理が未了となるのを回避できる。
【００１９】
以上、本実施の形態によれば、複数の処理要求タスクが高優先タスクと低優先タスクの何れに該当するかを特定し、高優先タスクをタスク処理用コアへ振り分けることができる。また、低優先タスクに該当すると特定されたタスクの優先度を決定した上で、この優先度と、高優先タスクのタスク規模に基づいて、低優先タスクをタスク処理用コアへ振り分けることもできる。従って、高優先タスクのタスク抜けの発生の回避は勿論のこと、低優先タスクのタスク抜けの発生を最小限に留めることが可能となる。よって、内燃機関の制御システムの安定化を図ることが可能となる。
【００２０】
ところで、上記実施の形態においては、タスクａ〜ｄの優先度がａ＞ｂ＞ｃ＞ｄであるとした。しかし、タスクａ〜ｄの優先度の決定の際に、タスクａ〜ｄのうちの何れか２つが同一カテゴリに属すると特定された場合は、その同一カテゴリに属するタスクの優先度が等しくなる。このような場合には、タスクａ〜ｄのタスク規模に従ってタスク処理用コアへの振り分けを行えばよい。即ち、同一カテゴリに属するタスクのうち、タスク規模が大きいタスクを、タスクＡ〜Ｄを振り分けた後に残る演算資源がより多いコアに振り分ければ、上記実施の形態と同様の効果を得ることができる。
【００２１】
また、上記実施の形態においては、タスクａ〜ｄの優先度を決定した後にタスクＡ〜Ｄをタスク処理用コアへ振り分けた。しかし、タスクＡ〜Ｄをタスク処理用コアへ振り分けた後に、タスクａ〜ｄの優先度を決定してもよい。
【符号の説明】
【００２２】
１０  制御装置
１２  内燃機関
【図１】
2016017472.tif 000003
【図２】
2016017472.tif 000004
【図３】
2016017472.tif 000005