(57)【特許請求の範囲】
【請求項１】
複数のコアが搭載されたマルチコアプロセッサを有し、前記マルチコアプロセッサを用いて１又は複数のアクチュエータの制御目標値を演算する内燃機関の制御装置において、
前記制御目標値の演算に関わる複数のタスクを前記マルチコアプロセッサの第１のコアに割り当てる割当手段と、
前記複数のコアに割り当てられたタスクをそれぞれ処理する演算手段と、
前記第１のコアにおいて処理されない未処理のタスクが発生するまたは発生した場合に、前記第１のコアにて演算を継続した場合の前記制御目標値の追従性と、前記第１のコアとは異なる第２のコアに変更して演算を行う場合の前記制御目標値の追従性と、を比較し、前記第１のコアにて演算を行なう場合の前記追従性が、前記第２のコアにて演算を行なう場合のそれに比して悪い場合に、当該未処理のタスクを含む所定の演算範囲のタスクの割り当てを、前記第２のコアに変更する割当変更手段と、
を備えることを特徴とする内燃機関の制御装置。
【請求項２】
前記割当変更手段は、前記第１のコアにおいて処理されないタスクが発生するか否かを予測する予測手段を含むことを特徴とする請求項１記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関の制御装置に係り、特に、複数のコアを有するマルチコアプロセッサを用いて演算を行う内燃機関の制御装置に関する。
【背景技術】
【０００２】
従来、例えば特開２００５−１２０８４６号公報に開示されるように、２つの処理装置を有するディーゼルエンジンの制御システムにおいて、必要な演算処理をこれら２つの処理装置に振り分ける技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１２０８４６号公報
【特許文献２】特開２００９−３９４２号公報
【特許文献３】特開２０１０−２５２１５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した従来の技術によれば、複数の処理装置を用いて演算を行なうことができるが、多数のタスク処理が一時的に集中した場合等には、全てのタスクを逐次処理することができないことも想定される。この場合、いわゆるタスク抜けによって一部のタスクが未処理のままに演算が進行することとなるため、制御性が悪化してしまうおそれがある。
【０００５】
この発明は、上述のような課題を解決するためになされたもので、複数のコアを有するマルチコアプロセッサを用いて演算処理を行う内燃機関において、タスク抜けに起因する制御性の悪化を抑制することのできる内燃機関の制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
第１の発明は、上記の目的を達成するため、複数のコアが搭載されたマルチコアプロセッサを有し、前記マルチコアプロセッサを用いて１又は複数のアクチュエータの制御目標値を演算する内燃機関の制御装置において、
前記制御目標値の演算に関わる複数のタスクを前記マルチコアプロセッサの第１のコアに割り当てる割当手段と、
前記複数のコアに割り当てられたタスクをそれぞれ処理する演算手段と、
前記第１のコアにおいて処理されない未処理のタスクが発生するまたは発生した場合に、前記第１のコアにて演算を継続した場合の前記制御目標値の追従性と、前記第１のコアとは異なる第２のコアに変更して演算を行う場合の前記制御目標値の追従性と、を比較し、前記第１のコアにて演算を行なう場合の前記追従性が、前記第２のコアにて演算を行なう場合のそれに比して悪い場合に、当該未処理のタスクを含む所定の演算範囲のタスクの割り当てを、前記第２のコアに変更する割当変更手段と、
を備えることを特徴としている。
【０００８】
第２の発明は、第１の発明において、
前記割当変更手段は、前記第１のコアにおいて処理されないタスクが発生するか否かを予測する予測手段を含むことを特徴としている。
【発明の効果】
【０００９】
第１の発明によれば、第１のコアに割り当てられた演算のタスクを処理する過程で、タスク抜けによる未処理のタスクが発生するまたは発生した場合に、当該未処理タスクが属する所定の演算範囲の割り当て先が第１コアとは異なる他のコア（第２のコア）に変更される。このため、本発明によれば、タスク抜けの発生を有効に抑制することができるので、演算の制御性を有効に高めることが可能となる。
【００１０】
また、第１の発明によれば、第１のコアにおいてタスク抜けによる未処理タスクが発生するまたは発生した場合に、第１のコアにて演算を継続した場合の制御目標値の追従性と、第２のコアに変更した上で演算を行なう場合のそれとが比較される。そして、第１のコアにて演算を行なう場合の追従性が第２のコアにて演算を行なう場合のそれに比して悪い場合に、当該未処理タスクが属する所定の演算範囲の割り当て先の変更が許可される。このため、本発明によれば、追従性のよい演算を行なうことが可能となるため、制御性の信頼性を向上させることが可能となる。
【００１１】
第２の発明によれば、制御目標値の演算に関連するタスクが割り当てられた第１のコアにおいて、タスク抜けが発生するか否かが予測される。このため、本発明によれば、タスク抜けの有無を前もって判断することができるので、制御性の低下を有効に抑止することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１としての内燃機関の制御システムの概要を示す図である。
【図２】タスク抜けによる離散周期の変化を説明するための図である。
【図３】任意の演算範囲の割り当て先を他のコアに変更する方法を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、図面に基づいてこの発明の実施の形態について説明する。尚、各図において共通する要素には、同一の符号を付して重複する説明を省略する。また、以下の実施の形態によりこの発明が限定されるものではない。
【００１４】
実施の形態１．
［実施の形態１の構成］
図１は、本発明の実施の形態１としての内燃機関の制御システムの概要を示す図である。制御システムは、制御対象である内燃機関２と、内燃機関２が備える複数のアクチュエータを操作してその運転を制御する制御装置４を含んでいる。本実施の形態の内燃機関２はディーゼルエンジンであり、アクチュエータはディーゼルスロットル、ＥＧＲバルブ及びターボチャージャの可変ノズルの３種類である。
【００１５】
本実施の形態の制御装置４は、４つのコア６が搭載されたマルチコアプロセッサとして構成され、エンジンＥＣＵの機能の一部として実現される。図示は省略するが、各コア６はキャッシュ付きのＣＰＵとローカルメモリを備え、コア６同士はバスで接続されている。ローカルメモリには、ＣＰＵで実行される各種のプログラムとそのプログラムの実行時に使用される各種のデータが記憶されている。また、バスにはコア間で共有される共有メモリ８も接続されている。尚、本実施の形態の制御装置４では４つのコアが搭載されたマルチコアプロセッサについて説明するが、制御装置４は、更に複数のコアが搭載された所謂メニーコアプロセッサとして構成されていてもよい。
【００１６】
［実施の形態の１動作］
次に、本実施の形態１の動作について説明する。本実施の形態にかかる制御装置４は、いわゆるモデルベース制御によってディーゼルエンジン２を制御するものであり、モデル予測を多用して、上述した複数のアクチュエータの制御目標値を計算する。具体的には、ディーゼルエンジン２から制御装置４には、ＥＧＲ率“ｅｇｒ”、過給圧“ｐｉｍ”、エンジン回転数“Ｎｅ”及び燃料噴射量“Ｑ”を含む各種の情報が所定のクランク角期間毎に取り込まれる。制御装置４は、取り込んだ情報に基づき、ディーゼルスロットルの操作量であるスロットル開度“Ｄｔｈ”、ＥＧＲバルブの操作量であるＥＧＲバルブ開度“ＥＧＲｖ”及び可変ノズルの操作量である可変ノズル開度“ＶＮ”をそれぞれ計算し、ディーゼルエンジン２に出力する。
【００１７】
ここで、制御装置４にて処理される演算には、逐次性の高い演算を含む演算モジュールが存在する。このような逐次性の高い演算モジュールの演算は、複数のコアを用いた並列演算には不向きであるため、単一のコアによってタスクを逐次処理することが好ましい。
【００１８】
しかしながら、上述したような単一のコアによる演算は、演算負荷が集中した場合にタスク抜けが発生するおそれがある。図２は、タスク抜けによる離散周期の変化を説明するための図である。この図に示すように、制御目標値の演算中にタスク抜けが起きると、当該タスク抜けの発生前の演算値を直前の演算値として演算が進行されるため、制御系での離散周期が大きくなり、制御性能が大幅に悪化してしまう。制御性能が悪化する理由としてそもそも必要な制御周期で演算できていないためである。本来、制御周期は必要な制御精度を満たすように設定される。しかしながら、タスク抜けが発生することにより必要な精度が確保できていないということとなる。
【００１９】
そこで、本実施の形態のシステムでは、タスク抜けが起きたコアに割り当てられていた演算の一部を他のコアへ移動させることとしている。図３は、任意の演算範囲の割り当て先を他のコアに変更する方法を説明するための図である。この図に示すように、逐次性の高い制御目標値の演算を複数のコア６の何れか（図ではコアＡ）に割り当てて処理している場合において、演算負荷が許容限界を超えてタスク抜けを起こした場合に、当該未処理のタスクを含む任意の演算範囲の次回の割り当て先を、他のコア６（図ではコアＢ）に変更することとする。任意の演算範囲は、例えば、未処理タスクを含む演算モジュールに設定することができる。これにより、次回の演算過程においてタスク抜けが発生する事態を有効に抑制することができるので、制御性の悪化を抑制することが可能となる。
【００２０】
尚、任意の演算範囲の割り当て先が他の演算とは異なるコアに変更されると、逐次性の高い演算に非同期な部分が生じてしまうため、制御性の低下が見込まれる。この点、本実施の形態のシステムでは、割り当て先の変更を行う演算を任意の範囲に限定することとしているので、この制御性の低下の影響を最小限に留めることが可能となる。
【００２１】
また、本実施の形態のシステムでは、演算中にタスク抜けが起きた場合に割り当て先のコアを変更することとしているが、タスク抜けが起きた場合の制御性能の劣化を予め評価しておき、当該評価結果に基づいて割り当てコアの変更を行うか否かの決定を行なうこととしてもよい。具体的には、例えばステップ応答においてタスク抜けを起こした場合の制御目標値の追従性と、非同期タスクとした場合の追従性とを評価関数として保有しておき、実際にタスク抜けを起こした場合に当該評価関数に基づいて追従性を比較し、非同期タスクとした場合の追従性のほうがよい場合にのみ割り当てコアの変更を行うこととすればよい。これにより、制御性の悪化をより効果的に抑制することが可能となる。
【００２２】
また、本実施の形態のシステムでは、演算中にタスク抜けが起きた場合に上記割り当て先のコアを変更することとしているが、演算中のタスク抜けが起こりそうであることを予測し、タスク抜けが予測される場合に割り当て先のコアを変更することとしてもよい。タスク抜けの予測は、例えば、タスク抜けが起こる条件を予め測定しておき、当該条件に合致するか否かによってタスク抜けを予測すればよい。これにより、タスク抜けが実際に起こる前に割り当てコアを変更することができるので、制御性の信頼性をより一層向上させることが可能となる。
【００２３】
更に、コア割り当てを変更するか否かの判断は、タスク抜けの有無に限らず、ＣＰＵ負荷率に基づいて行なうこととしてもよい。より具体的には、例えば、任意の評価区間においてＣＰＵ負荷率が任意の評価指標を超えた場合に、そのコアに割り当てられている演算の任意の範囲を次回の演算において他のコアへ割り当てることとしてもよい。これにより、タスク抜けの可能性を有効に判断することができ、また、ターボブースト機能等との併用による詳細な設定にも対応することが可能となる。更に、コア割り当てを変更するか否かの判断は、上述したＣＰＵ負荷率だけでなく、タスク抜け回数を含む評価関数の値に基づいて判断することとしてもよい。これにより、チャタリングの発生を抑止することが可能となる。
【００２４】
ところで、上述した実施の形態１においては、本発明をディーゼル機関（圧縮着火内燃機関）の制御に適用した場合について説明したが、本発明はディーゼル機関に限定されるものではなく、ガソリンやアルコールを燃料とする火花点火内燃機関や、その他の各種の内燃機関の制御に適用することが可能である。
【符号の説明】
【００２５】
２  内燃機関（ディーゼルエンジン）
４  制御装置
６  コア
８  メモリ
【図１】
0005825202.tif 000002
【図２】
0005825202.tif 000003
【図３】
0005825202.tif 000004