(57)【要約】  本発明は、エンジン制御にかかる１又は複数のアクチュエータの制御目標値をマルチコアプロセッサにより高速度で演算できるようにすることを課題とする。この課題を達成するため、マルチコアプロセッサに格子状に配置された複数のコアの少なくとも一部には、第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上に配列された複数の格子点が前記２次元直交座標系上と同じ並びで１対１に関連付けられ、そして、関連付けられた格子点における最適制御値を演算するための演算プログラムが割り当てられる。そして、格子点を関連付けられた各コアは、現在の動作点が属する前記２次元直交座標系上の運転領域が自身に関連付けられた格子点により定義される領域である場合、自身が演算した当該格子点における最適制御値を補間計算コアに送信するようにプログラムされる。補間計算コアは、現在の動作点が属する前記２次元直交座標系上の運転領域を定義する全ての格子点における最適制御値を用いて現在の動作点における最適制御値を補間計算するようにプログラムされる。そして、マルチコアプロセッサは、補間計算コアで得られた現在の動作点における最適制御値をアクチュエータの制御目標値として出力する。
2013046363.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアが格子状に配置されたマルチコアプロセッサを有し、前記マルチコアプロセッサを用いて１又は複数のアクチュエータの制御目標値を演算するエンジン制御装置において、
前記複数のコアの少なくとも一部には、第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上に配列された複数の格子点が前記２次元直交座標系上と同じ並びで１対１に関連付けられ、そして、関連付けられた格子点における前記１又は複数のアクチュエータの最適制御値を演算するための演算プログラムが割り当てられ、
格子点を関連付けられた各コアは、現在の動作点が属する前記２次元直交座標系上の運転領域が自身に関連付けられた格子点により定義される領域である場合、自身が演算した当該格子点における最適制御値を補間計算コアに送信するようにプログラムされ、
前記補間計算コアは、前記運転領域を定義する全ての格子点における最適制御値を用いて前記動作点における最適制御値を補間計算するようにプログラムされ、
前記マルチコアプロセッサは、前記補間計算で得られた前記動作点における最適制御値を前記制御目標値として出力することを特徴とするエンジン制御装置。
【請求項２】
格子点を関連付けられた各コアは、現在の動作点が属する前記２次元直交座標系上の運転領域が自身に関連付けられた格子点により定義される領域であり、自身が前記運転領域を定義する複数の格子点のうちの代表格子点に関連付けられている場合、前記補間計算コアとして機能するようにプログラムされていることを特徴とする請求項１に記載のエンジン制御装置。
【請求項３】
格子点を関連付けられた各コアは、現在の動作点が属する前記２次元直交座標系上の運転領域が自身に関連付けられた格子点により定義される領域である場合、当該格子点における最適制御値を前記演算プログラムにより演算し、前記運転領域が自身に関連付けられた格子点により定義される領域ではない場合には、当該格子点における最適制御値の演算を休止するようにプログラムされていることを特徴とする請求項１又は２に記載のエンジン制御装置。
【請求項４】
格子点を関連付けられた各コアは、最適制御値の演算時間内で到達する可能性のある運転領域が自身に関連付けられた格子点により定義される領域と重なる場合、当該格子点における最適制御値を前記演算プログラムにより演算し、重ならない場合には、当該格子点における最適制御値の演算を休止するようにプログラムされていることを特徴とする請求項１又は２に記載のエンジン制御装置。
【請求項５】
前記第１の運転条件と第２の運転条件はエンジン回転数とエンジン負荷であることを特徴とする請求項１乃至４の何れか１項に記載のエンジン制御装置。
【請求項６】
前記複数のコアのそれぞれは、ＣＰＵと当該ＣＰＵで実行されるプログラムを記憶したローカルメモリとを備え、
前記ローカルメモリには、前記演算プログラムと当該コアが前記補間計算コアとなった場合に実行される補間計算プログラムとが記憶されていることを特徴とする請求項２に記載のエンジン制御装置。
【請求項７】
複数のコアが格子状に配置されたマルチコアプロセッサを有し、前記マルチコアプロセッサを用いて１又は複数のアクチュエータの制御目標値を演算するエンジン制御装置において、
前記複数のコアの少なくとも一部には、第１の運転条件、第２の運転条件及び第３の運転条件を軸とする３次元直交座標系上に配列された複数の格子点が前記第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上と同じ並びで関連付けられ、そして、関連付けられた各格子点における前記１又は複数のアクチュエータの最適制御値を演算するための演算プログラムが割り当てられ、
格子点を関連付けられた各コアは、現在の動作点が属する前記３次元直交座標系上の運転空間が自身に関連付けられた前記第１及び第２の運転条件の各値が同一で前記第３の運転条件の値が異なる複数の格子点のうちの何れかの格子点により定義される空間である場合、自身が演算した前記運転空間を定義する２つの格子点における最適制御値を補間計算コアに送信するようにプログラムされ、
前記補間計算コアは、前記運転空間を定義する全ての格子点における最適制御値を用いて前記動作点における最適制御値を補間計算するようにプログラムされ、
前記マルチコアプロセッサは、前記補間計算で得られた前記動作点における最適制御値を前記制御目標値として出力することを特徴とするエンジン制御装置。
【請求項８】
格子点を関連付けられた各コアは、現在の動作点が属する前記２次元直交座標系上の運転領域が自身に関連付けられた格子点により定義される領域であり、自身が前記運転領域を定義する複数の格子点のうちの代表格子点に関連付けられている場合、前記補間計算コアとして機能するようにプログラムされていることを特徴とする請求項７に記載のエンジン制御装置。
【請求項９】
格子点を関連付けられた各コアは、現在の動作点が属する前記３次元直交座標系上の運転空間が自身に関連付けられた何れかの格子点により定義される空間である場合、前記運転空間を定義する格子点のうち自身に関連付けられた格子点における最適制御値を前記演算プログラムにより演算し、前記運転空間が自身に関連付けられた格子点により定義される空間ではない場合には、自身に関連付けられた全ての格子点における最適制御値の演算を休止するようにプログラムされていることを特徴とする請求項７又は８に記載のエンジン制御装置。
【請求項１０】
格子点を関連付けられた各コアは、最適制御値の演算時間内で到達する可能性のある運転空間が自身に割り当てられた何れかの格子点により定義される空間と重なる場合、前記運転空間と重なる空間を定義する格子点のうち自身に関連付けられた格子点における最適制御値を前記演算プログラムにより演算し、重ならない場合には、自身に関連付けられた全ての格子点における最適制御値の演算を休止するようにプログラムされていることを特徴とする請求項７又は８に記載のエンジン制御装置。
【請求項１１】
前記第１の運転条件と第２の運転条件はエンジン回転数とエンジン負荷であることを特徴とする請求項７乃至１０の何れか１項に記載のエンジン制御装置。
【請求項１２】
前記第３の運転条件はエンジン水温であることを特徴とする請求項１１に記載のエンジン制御装置。
【請求項１３】
前記第３の運転条件は車速或いは吸入空気温度であることを特徴とする請求項１１に記載のエンジン制御装置。
【請求項１４】
前記複数のコアのそれぞれは、予め定義された複数の運転条件の中からエンジンの運転状態に応じて前記第３の運転条件とすべき運転条件を選択するようにプログラムされていることを特徴とする請求項１１に記載のエンジン制御装置。
【請求項１５】
前記複数のコアのそれぞれは、エンジンの暖機中は、エンジン水温を前記第３の運転条件として最適制御値を演算し、暖機の完了後は、前記第３の運転条件を車速或いは吸入空気温度に変更して最適制御値を演算するようにプログラムされていることを特徴とする請求項１４に記載のエンジン制御装置。
【請求項１６】
前記複数のコアのそれぞれは、ＣＰＵと当該ＣＰＵで実行されるプログラムを記憶したローカルメモリとを備え、
前記ローカルメモリには、前記演算プログラムと当該コアが前記補間計算コアとなった場合に実行される補間計算プログラムとが記憶されていることを特徴とする請求項８に記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の運転条件に基づいてアクチュエータの制御目標値を決定する自動車用エンジンの制御装置に関し、詳しくは、複数のコアを有するマルチコアプロセッサを用いてアクチュエータの制御目標値を演算するエンジン制御装置に関する。
【背景技術】
【０００２】
近年、例えば特開２０１１−０８１５３９号公報に開示されているように、１つの半導体チップ上に複数のＣＰＵコアを搭載した演算装置、すなわち、マルチコアプロセッサの使用が様々な分野で提案されている。マルチコアプロセッサは、例えば特開２００８−２６９４８７号公報に開示されているように、自動車用エンジンの制御の分野においてもその使用が検討されている。特開２００８−２６９４８７号公報に開示されている技術は、エンジン制御装置にマルチコアプロセッサを使用する場合の消費電力の低減を目的とした技術である。この技術によれば、エンジン制御の停止中に特定の制御処理が実行される際は、マイクロコンピュータの動作モードはエンジン動作時における動作モードとは異なる低消費電力モードに設定される。低消費電力モードでは、マイクロコンピュータが使用するコアの数はエンジン動作時よりも少なくされる。エンジン制御の停止中はエンジン動作中のようにオルタネータ等からの発電電力はなく、車載バッテリの充電も行われない。そのため、特定の制御処理の実行時に動作するコアの数が多いほど、バッテリの充電電力はどんどん消費されていくためである。【０００３】
マルチコアプロセッサを使用する利点の一つが、その処理能力の高さである。ＣＰＵコアが１つのシングルコアプロセッサと比較した場合、マルチコアプロセッサのほうがより高い処理能力を得ることができる。処理能力の高さはマルチコアプロセッサをエンジン制御装置に使用することの１つの動機となる。近年、エンジンに搭載されるアクチュエータの数と種類は益々増えているからである。エンジンの運転を適切に制御するためには、それらアクチュエータの制御目標値をエンジンの運転条件に応じた適切な値に設定する必要がある。そのために従来のエンジン制御装置では最適化演算が行われているが、その際の演算負荷はアクチュエータの数や種類が多くなるほど増大する。このため、従来のエンジン制御装置で使用されているシングルコアプロセッサの処理能力では、益々増大する演算負荷に対してやがて不足することが懸念されていた。マルチコアプロセッサを使用することは、今後益々演算負荷が増大することが予想されるエンジン制御の分野にとって大きなメリットがある。【０００４】
ただし、マルチコアプロセッサの処理能力は、単純にコアの数のみで決まるものではない。処理能力を高めるためには複数のコアを効率よく動作させる必要があり、そのためにはコアを動作させるソフトウェアに工夫が求められる。例えば、マルチコアプロセッサでは複数のコアにタスクを分配して並列に処理することが可能であるが、その並列化の手法の如何によっては全体としての処理能力に大きな違いが生じることになる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２６９４８７号公報
【特許文献２】特開２０１１−０８１５３９号公報
【発明の概要】
【０００６】
本発明は、エンジン制御にかかる１又は複数のアクチュエータの制御目標値をマルチコアプロセッサにより高速度で演算できるようにすることを課題とする。そして、そのような課題を達成するために、本発明は次のようなエンジン制御装置を提供する。
【０００７】
本発明が提供するエンジン制御装置は、複数のコアが格子状に配置されたマルチコアプロセッサを有する。ここでいう格子とは平面格子を意味するが、そのパターンには限定はない。コアの配置パターンとして一般的な正方格子や矩形格子の他、斜方格子等の他のパターンでもよい。
【０００８】
本発明は特に好ましい２つの形態を有する。本発明の第１の形態によれば、マルチコアプロセッサに搭載される複数のコアには、第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上に配列された複数の格子点がそのままの並びで１対１に関連付けられている。第１の運転条件と第２の運転条件は、アクチュエータの操作量とエンジンの制御量とを関連付ける上で特に重要な運転条件であり、その１つの代表例がエンジン回転数とエンジン負荷の組である。
【０００９】
２次元直交座標系上での格子点の配列パターンは、マルチコアプロセッサ上でのコアの配置パターンと同パターンとされている。２次元直交座標系上の格子点を関連付けられるコアはマルチコアプロセッサに搭載されるコアの全てでなくてもよい。例えば、コアがＮ×Ｍの矩形格子上に配置されている場合、その一部であるｎ×ｍの区画のコアにのみ格子点が関連付けられているのでもよい。格子点を関連付けられた各コアには、関連付けられた格子点における各アクチュエータの最適制御値を演算するための演算プログラムが予め割り当てられている。割り当てられた最適制御値演算プログラムは、各コアがローカルメモリを有する場合、そのローカルメモリに記憶することができる。その場合、各コアのローカルメモリには、後述する補間計算のための補間計算プログラムも記憶することができる。以下、マルチコアプロセッサに搭載されるコアのうち、最適制御演算プログラムを割り当てられたコアを最適制御値演算コアと呼ぶ。
【００１０】
前述の２次元直交座標系上には、そこに配列された複数の格子点によって複数の運転領域が定義されている。例えば、格子点の配列パターンが矩形格子の場合には、矩形の四隅に配置される４つの格子点によって１つの運転領域が定義される。第１の運転条件と第２の運転条件の各現在値により定まる現在の動作点は、２次元直交座標系上の何れかの運転領域に属している。それぞれの最適制御値演算コアは、現在の動作点が属する運転領域が自身に関連付けられた格子点により定義される領域である場合、自身が演算した当該格子点における最適制御値を補間計算コアに送信するようにプログラムされている。補間計算コアは、現在の動作点が属する運転領域を定義する全ての格子点における最適制御値を用いて、現在の動作点における最適制御値を補間計算するようにプログラムされている。マルチコアプロセッサは、補間計算コアによる補間計算で得られた現在の動作点における最適制御値をアクチュエータの制御目標値として出力する。
【００１１】
つまり、本発明の第１の形態によれば、エンジン制御装置は、現在の動作点を２次元的に囲む複数の格子点に関連付けられた複数のコアによって各格子点における最適制御値を演算し、その演算結果に基づいて現在の動作点における最適制御値を補間計算する。これによれば、各格子点における最適制御値の演算は別々のコアによって並列に行われることから、アクチュエータの制御目標値の演算に要する時間は従来のシングルコアプロセッサを用いる場合に比較して大幅に短縮される。さらに、各コアで演算した最適制御値のデータを補間計算コアに渡す際には、その物理的な距離に応じた通信ディレイが生じるが、本発明の第１の形態によれば、コア間における通信ディレイ時間の差を小さくすることができる。２次元直交座標系上での格子点の配列はマルチコアプロセッサ上でのコアの配列に対応しているので、各格子点における最適制御値は物理的に最も近接したコアからなるグループで演算されるからである。通信ディレイ時間の差が小さいことでプロセッサ全体として高い効率で演算することが可能となる。
【００１２】
ところで、補間計算コアとして機能するコアは何れかのコアに固定することできる。その場合、最適制御値演算コアのうちの何れか１つを補間計算コアとして定めてもよいし、最適制御値演算コア以外のコアの中から補間計算コアを選定してもよい。しかし、より好ましいのは、補間計算コアとして機能するコアを最適制御値演算コアの間で動的に変化させることである。その場合、それぞれの最適制御値演算コアは、現在の動作点が属する運転領域が自身に関連付けられた格子点により定義される領域である場合、以下の処理を実行するようにプログラムされる。
【００１３】
まず、それぞれの最適制御値演算コアは、自身に関連付けられた格子点が現在の動作点が属する運転領域を定義する複数の格子点のうちの代表格子点にあたるかどうか判定する。例えば、格子点の配列パターンが矩形格子の場合には、矩形の四隅に配置される４つの格子点のうち所定の位置に配置される１つの格子点が代表格子点とされる。以下、代表格子点に対応するコアを代表コアと呼ぶ。それぞれの最適制御値演算コアは、自身が代表コアでない場合、自身に関連付けられた格子点における最適制御値を代表コアである他のコアに送信する。一方、自身が代表コアである場合には、現在の動作点が属する運転領域を定義するその他の格子点を関連付けられた各コアから、それらのコアで演算された最適制御値を受信する。そして、現在の動作点が属する運転領域を定義する全ての格子点における最適制御値に基づいて、現在の動作点における最適制御値を補間計算プログラムにより補間計算する。このような処理を行うように各コアがプログラムされることで、コア間の通信ディレイ時間の差を小さくできるだけでなく、通信ディレイ時間そのものを小さくすることができる。
【００１４】
なお、最適制御値演算コアによる最適制御値の演算は次のような手順で行われることが好ましい。１つの好ましい手順によれば、それぞれの最適制御値演算コアは、現在の動作点が属する運転領域が自身に関連付けられた格子点により定義される領域であるかどうか一定の時間ステップで（例えばエンジンの制御周期ごとに）確認する。そして、現在の動作点が属する運転領域が自身に関連付けられた格子点により定義される領域であることが確認されたとき、当該格子点における最適制御値を前述の演算プログラムにより演算する。一方、現在の動作点が属する運転領域が自身に関連付けられた格子点により定義される領域ではないことが確認されたときは、当該格子点における最適制御値の演算を休止する。このような手順による最適制御値の演算がそれぞれの最適制御値演算コアにプログラムされることで、アクチュエータの制御目標値を高速で演算可能にしながら消費電力を抑えることができる。
【００１５】
また、最適制御値の演算に関する別の好ましい手順によれば、それぞれの最適制御値演算コアは、まず、最適制御値の演算時間内で到達する可能性のある運転領域が自身に関連付けられた格子点により定義される領域と重なるかどうかか一定の時間ステップで（例えばエンジンの制御周期ごとに）確認する。そして、重なることが確認されたときは、当該格子点における最適制御値を前述の演算プログラムにより演算する。一方、重ならないことが確認されたときは、当該格子点における最適制御値の演算を休止する。このような手順による最適制御値の演算がそれぞれの最適制御値演算コアにプログラムされることで、エンジンの運転状態が過渡的に変化している状況であっても、消費電力を抑えながらエンジンの制御周期に遅れることなくアクチュエータの制御目標値を演算することができる。
【００１６】
一方、本発明の第２の形態によれば、マルチコアプロセッサに搭載される複数のコアには、第１の運転条件、第２の運転条件及び第３の運転条件を軸とする３次元直交座標系上に配列された複数の格子点が、第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上と同じ並びで関連付けられる。第１の運転条件と第２の運転条件は、アクチュエータの操作量とエンジンの運転状態とを関連付ける上で特に重要な運転条件であり、その１つの代表例がエンジン回転数とエンジン負荷の組である。第３の運転条件は任意であるが、現在のエンジンの運転状態のもとで優先されるべき運転条件としてもよい。例えば、エンジンの暖機中はエンジン水温を第３の運転条件とし、暖機の完了後は第３の運転条件を車速或いは吸入空気温度に変更することも可能である。
【００１７】
第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上での格子点の配列パターンは、マルチコアプロセッサ上でのコアの配置パターンと同パターンとされている。そして、その２次元直交座標系上での格子点の配置パターンが第３の運転条件の軸の方向に一定の間隔で繰り返されている。よって、各コアには、第１及び第２の運転条件の各値が同一で第３の運転条件の値が異なる複数の格子点が関連付けられている。ただし、２次元直交座標系上の格子点を関連付けられるコアはマルチコアプロセッサに搭載されるコアの全てでなくてもよい。格子点を関連付けられた各コアには、関連付けられた格子点における各アクチュエータの最適制御値を演算するための演算プログラムが予め割り当てられている。割り当てられた最適制御値演算プログラムは、各コアがローカルメモリを有する場合、そのローカルメモリに記憶することができる。その場合、各コアのローカルメモリには、後述する補間計算のための補間計算プログラムも記憶することができる。以下、マルチコアプロセッサに搭載されるコアのうち、最適制御演算プログラムを割り当てられたコアを最適制御値演算コアと呼ぶ。
【００１８】
前述の３次元直交座標系上には、そこに配列された複数の格子点によって複数の運転空間が定義されている。例えば、第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上での格子点の配列パターンが矩形格子の場合には、下の階層の矩形の四隅に配置される４つの格子点と上の階層の矩形の四隅に配置される４つの格子点の合計８つの格子点によって１つの運転空間が定義される。各運転条件の各現在値により定まる現在の動作点は、３次元直交座標系上の何れかの運転空間に属している。それぞれの最適制御値演算コアは、現在の動作点が属する運転空間が自身に関連付けられた何れかの格子点により定義される空間である場合、自身が演算したその運転空間を定義する格子点における最適制御値を補間計算コアに送信するようにプログラムされている。なお、最適制御値演算コアによる最適制御値の演算は、第１及び第２の運転条件の各値が同一で第３の運転条件の値が異なる２つの格子点に関して行われる。補間計算コアは、現在の動作点が属する運転空間を定義する全ての格子点における最適制御値を用いて、現在の動作点における最適制御値を補間計算するようにプログラムされている。マルチコアプロセッサは、補間計算コアによる補間計算で得られた現在の動作点における最適制御値をアクチュエータの制御目標値として出力する。
【００１９】
つまり、本発明の第２の形態によれば、エンジン制御装置は、現在の動作点を３次元的に囲む複数の格子点に関連付けられた複数のコアによって各格子点における最適制御値を演算し、その演算結果に基づいて現在の動作点における最適制御値を補間計算する。これによれば、各格子点における最適制御値の演算は並列に動作する複数のコアに分散して行われることから、アクチュエータの制御目標値の演算に要する時間は従来のシングルコアプロセッサを用いる場合に比較して大幅に短縮される。さらに、各コアで演算した最適制御値のデータを補間計算コアに渡す際には、その物理的な距離に応じた通信ディレイが生じるが、本発明の第２の形態によれば、コア間における通信ディレイ時間の差を小さくすることができる。第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上での格子点の配列はマルチコアプロセッサ上でのコアの配列に対応しているので、各格子点における最適制御値は物理的に最も近接したコアからなるグループで演算されるからである。通信ディレイ時間の差が小さいことでプロセッサ全体として高い効率で演算することが可能となる。
【００２０】
さらに、本発明の第２の形態によれば、アクチュエータの制御目標値に第３の運転条件を反映させることでより細かなエンジン制御を実現することができる。特に、予め定義された複数の運転条件の中からエンジンの運転状態に応じて第３の運転条件とすべき運転条件を選択する場合には、エンジンの運転状態に応じたより適切なエンジン制御を実現することができる。
【００２１】
本発明の第２の形態においても、補間計算コアとして機能するコアは何れかのコアに固定することできる。その場合、最適制御値演算コアのうちの何れか１つを補間計算コアとして定めてもよいし、最適制御値演算コア以外のコアの中から補間計算コアを選定してもよい。しかし、より好ましいのは、補間計算コアとして機能するコアを最適制御値演算コアの間で動的に変化させることである。その場合、それぞれの最適制御値演算コアは、現在の動作点が属する運転空間が自身に関連付けられた格子点により定義される空間である場合、以下の処理を実行するようにプログラムされる。
【００２２】
まず、それぞれの最適制御値演算コアは、自身に関連付けられた格子点が現在の動作点が属する運転空間を定義する複数の格子点のうちの代表格子点にあたるかどうか判定する。例えば、第１の運転条件と第２の運転条件とを軸とする２次元直交座標系上での格子点の配列パターンが矩形格子の場合には、矩形の四隅に配置される４つの格子点のうち所定の位置に配置される１つの格子点が代表格子点とされる。以下、代表格子点に対応するコアを代表コアと呼ぶ。それぞれの最適制御値演算コアは、自身が代表コアでない場合、自身に関連付けられた格子点における最適制御値を代表コアである他のコアに送信する。一方、自身が代表コアである場合には、現在の動作点が属する運転空間を定義するその他の格子点を関連付けられた各コアから、それらのコアで演算された最適制御値を受信する。そして、現在の動作点が属する運転空間を定義する全ての格子点における最適制御値に基づいて、現在の動作点における最適制御値を補間計算プログラムにより補間計算する。このような処理を行うように各コアがプログラムされることで、コア間の通信ディレイ時間の差を小さくできるだけでなく、通信ディレイ時間そのものを小さくすることができる。
【００２３】
なお、最適制御値演算コアによる最適制御値の演算は次のような手順で行われることが好ましい。１つの好ましい手順によれば、それぞれの最適制御値演算コアは、現在の動作点が属する運転空間が自身に関連付けられた何れかの格子点により定義される空間であるかどうか一定の時間ステップで（例えばエンジンの制御周期ごとに）確認する。そして、現在の動作点が属する運転空間が自身に関連付けられた何れかの格子点により定義される空間であることが確認されたとき、その運転空間を定義する格子点のうち自身に関連付けられた格子点における最適制御値を前述の演算プログラムにより演算する。一方、現在の動作点が属する運転空間が自身に関連付けられた格子点により定義される空間ではないことが確認されたときは、自身に関連付けられた全ての格子点における最適制御値の演算を休止する。このような手順による最適制御値の演算がそれぞれの最適制御値演算コアにプログラムされることで、アクチュエータの制御目標値を高速で演算可能にしながら消費電力を抑えることができる。
【００２４】
また、最適制御値の演算に関する別の好ましい手順によれば、それぞれの最適制御値演算コアは、まず、最適制御値の演算時間内で到達する可能性のある運転空間が自身に関連付けられた何れかの格子点により定義される空間と重なるかどうかか一定の時間ステップで（例えばエンジンの制御周期ごとに）確認する。そして、重なることが確認されたときは、その運転空間と重なる空間を定義する格子点のうち自身に関連付けられた格子点における最適制御値を前述の演算プログラムにより演算する。一方、重ならないことが確認されたときは、自身に関連付けられた全ての格子点における最適制御値の演算を休止する。このような手順による最適制御値の演算がそれぞれの最適制御値演算コアにプログラムされることで、エンジンの運転状態が過渡的に変化している状況であっても、消費電力を抑えながらエンジンの制御周期に遅れることなくアクチュエータの制御目標値を演算することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態にかかるマルチコアプロセッサのコアの配列を示す図である。
【図２】本発明の実施の形態にかかるマルチコアプロセッサのハードウェアアーキテクチャの概略を示す図である。
【図３】本発明の実施の形態にかかるマルチコアプロセッサのソフトウェアアーキテクチャの概略を示す図である。
【図４】エンジン回転数とエンジン負荷を軸とする２次元直交座標系上の格子点の配列を示す図である。
【図５】２次元直交座標系上に配列された複数の格子点とマルチコアプロセッサ上の複数のコアとの関連付けについて示す図である。
【図６】本発明の実施の形態１によるアクチュエータの制御目標値の演算方法について説明するための図である。
【図７】本発明の実施の形態１によるアクチュエータの制御目標値の演算方法について説明するための図である。
【図８】本発明の実施の形態１において各コアにより実行される最適制御値算出ルーチンを示すフローチャートである。
【図９】本発明の実施の形態２によるアクチュエータの制御目標値の演算方法について説明するための図である。
【図１０】本発明の実施の形態２によるアクチュエータの制御目標値の演算方法について説明するための図である。
【図１１】本発明の実施の形態２において各コアにより実行される最適制御値算出ルーチンを示すフローチャートである。
【図１２】３次元直交座標系上に配列された複数の格子点とマルチコアプロセッサ上の複数のコアとの関連付けについて示す図である。
【図１３】本発明の実施の形態３によるアクチュエータの制御目標値の演算方法について説明するための図である。
【図１４】本発明の実施の形態３において各コアにより実行される最適制御値算出ルーチンを示すフローチャートである。
【図１５】本発明の実施の形態４において各コアにより実行される最適制御値算出ルーチンを示すフローチャートである。
【図１６】３次元直交座標系上に配列された複数の格子点とマルチコアプロセッサ上の複数のコアとの関連付けについて示す図である。
【図１７】本発明の実施の形態５によるアクチュエータの制御目標値の演算方法について説明するための図である。
【図１８】本発明の実施の形態１の変形例１によるアクチュエータの制御目標値の演算方法について説明するための図である。
【図１９】本発明の実施の形態１の変形例２によるアクチュエータの制御目標値の演算方法について説明するための図である。
【発明を実施するための形態】
【００２６】
実施の形態１．
本発明の実施の形態１のエンジン制御装置について図を参照して説明する。
【００２７】
本発明が適用されるエンジン制御装置は、マルチコアプロセッサを用いてエンジン制御にかかるアクチュエータの制御目標値を演算する装置である。本発明においては、エンジン制御装置により制御される自動車用エンジンの種類や構造に限定は無く、また、アクチュエータの種類や数にも限定は無い。例えば、本実施の形態のエンジン制御装置はガソリンエンジンの制御装置であってもよい。その場合、エンジン制御装置は、スロットル、点火装置、インジェクタ、ＥＧＲ弁、可変動弁機構、及びウエストゲートバルブ等のアクチュエータの制御目標値を演算する。また、本実施の形態のエンジン制御装置はディーゼルエンジンの制御装置であってもよい。その場合、エンジン制御装置は、インジェクタ、ＥＧＲ弁、ディーゼルスロットル、及び可変ノズルターボ等のアクチュエータの制御目標値を演算する。
【００２８】
図１は、本実施の形態のエンジン制御装置が有するマルチコアプロセッサのコアの配列を示す図である。本実施の形態にかかるマルチコアプロセッサ１００は、複数のコア１０２が格子状に配置されているという構造上の特徴を有している。図１に示すマルチコアプロセッサ１００の格子パターンは矩形格子であり、合計４９個のコア１０２が７行７列に配列されている。
【００２９】
図２は、マルチコアプロセッサ１００のハードウェアアーキテクチャの概略を示す図である。各コア１０２はキャッシュ付きのＣＰＵ１０４とローカルメモリ１０６を備え、コア１０２同士はバス１０８で接続されている。ローカルメモリ１０６には、ＣＰＵ１０４で実行される各種のプログラムとそのプログラムの実行時に使用される各種のデータが記憶されている。また、図示は省略するが、バス１０８にはコア間で共有される共有メモリも接続されている。
【００３０】
図３は、マルチコアプロセッサ１００のソフトウェアアーキテクチャの概略を示す図である。マルチコアプロセッサ１００では、それぞれのコア１０２上で異なるＯＳ１１０が動作する。また、それぞれのＯＳ１１０上で異なるアプリケーション１１２が動作する。後述する最適制御値演算プログラムや補間計算プログラムは、そのようなアプリケーション１１２の１つである。各コア１０２に関連するＯＳ１１０とアプリケーション１１２は、コア１０２ごとにローカルメモリ１０６にインストールされている。このようなソフトウェアアーキテクチャを有するマルチコアプロセッサ１００では、各コア１０２が独自にアプリケーション１１２を実行することができる。アプリケーション１１２の実行のために他のコア１０２による演算結果や他のコア１０２が有するデータが必要な場合には、バス１０８を通したコア間通信（ＯＳ間通信）によってデータのやり取りが行われる。
【００３１】
本実施の形態のエンジン制御装置は、エンジン回転数とエンジン負荷の各現在値を取得し、それらに基づいて各アクチュエータの制御目標値を決定する。エンジン回転数とエンジン負荷が決まれば、エンジンの運転状態を最適にすることができる各アクチュエータの制御目標値を特定することができる。その特定には、エンジンを実際に試験して得られた適合データを用いることができる。ただし、エンジン回転数とエンジン負荷の全ての組み合わせについて適合データを得ようとすると適合作業に膨大な時間と工数がかかってしまう。そこで提案されるのが、エンジン回転数とエンジン負荷のある特定の組み合わせにいてのみ適合データを取得し、その他の組み合わせについては取得した適合データに基づいて補間計算を行うことである。本実施の形態のエンジン制御装置は、補間計算を利用したアクチュエータ制御目標値の演算をマルチコアプロセッサ１００によって並列的に実施する。
【００３２】
マルチコアプロセッサ１００で使用される適合データは、図４に格子点で示されるエンジン回転数とエンジン負荷の組み合わせについて準備されている。図４は、エンジン回転数とエンジン負荷を軸とする２次元直交座標系上の格子点の配列を示す図である。この２次元直交座標系上には２５個の格子点が５行５列に配列されている。なお、各格子点に付された数字はその格子点番号である。以下の説明で特定の格子点について述べる場合には、格子点番号で特定するものとする。２次元直交座標系上で格子点がとる格子パターンは、マルチコアプロセッサ１００の格子パターンと同じく矩形格子である。矩形格子では、矩形の四隅に配置される４つの格子点によって１つの運転領域が定義される。よって、図４に示す２次元直交座標系では、合計１６の運転領域が定義されている。格子点のそれぞれには、その位置におけるエンジン回転数とエンジン負荷に対して適合された適合データが関連付けられている。各格子点における適合データは後述する最適制御値演算プログラムに組み込まれて当該格子点が関連付けられたコア１０２に割り当てられている。
【００３３】
図５は、図４に示す２次元直交座標系上に配列された格子点とマルチコアプロセッサ１００上のコア１０２との関連付けについて示す図である。マルチコアプロセッサ１００に搭載されたコア１０２のうち一部のコアに付された数字はそのコア番号である。以下の説明で特定のコアについて述べる場合には、コア番号で特定するものとする。図４と図５を対比することで分かる通り、２次元直交座標系上に配列された１番から２５番までの格子点は、２次元直交座標系上と同じ並びで１番から２５番までのコア１０２ａに１対１に関連付けられている。以下では、マルチコアプロセッサ１００に搭載されたコア１０２のうち格子点が関連付けられたコアは符号１０２ａによって他のコアとは区別するものとする。格子点を関連付けられたコア１０２ａには、その格子点のエンジン回転数とエンジン負荷に対して適合された適合データを使用する最適制御値演算プログラムが割り当てられている。最適制御値演算プログラムは補間計算プログラムとともにローカルメモリ１０６にインストールされている。最適値演算プログラムは、エンジン特性モデルを用いてアクチュエータの最適制御値を演算するプログラムである。前述の適合データはエンジン特性モデルのパラメータの値に用いられる。本実施の形態のマルチコアプロセッサ１００では、４９個のコア１０２のうち１番から２５番までの２５個のコア１０２ａがアクチュエータ制御目標値の演算のための最適値演算コアとして機能し、それ以外のコア１０２はエンジン制御に必要なその他の処理を担う。
【００３４】
次に、マルチコアプロセッサ１００を用いたアクチュエータの制御目標値の演算方法について図６及び図７を用いて説明する。図６に示す２次元直交座標系において、点Ａは、エンジン回転数とエンジン負荷の各現在値により定まる動作点、つまり、現在の動作点を示している。ここでいう現在とは、今回の時間ステップの開始時点現在を意味する。エンジンを適切に制御するためには、現在の動作点におけるアクチュエータの最適制御値を演算し、それをアクチュエータの制御目標値として設定する必要がある。ただし、２次元直交座標系において最適制御値を演算するための適合データが用意されているのは１番から２５番までの格子点のみであり、それ以外の領域では適合データは用意されていない。よって、現在の動作点における最適制御値を最適制御値演算プログラムによって直接に算出することはできない。
【００３５】
そこで、本実施の形態では、現在の動作点を囲む４つの格子点における最適制御値を演算し、それらを用いて現在の動作点における最適制御値を補間計算することが行われる。図６に示す例では、現在の動作点Ａは二重丸で囲む７番、８番、１２番及び１３番の格子点によって定義される領域に属している。よって、これらの格子点における最適制御値が分かれば、それらを用いた補間計算によって現在の動作点Ａにおける最適制御値を得ることができる。
【００３６】
現在の動作点Ａにおける最適制御値は、具体的には次の手順で演算される。まず、図７に示すコアの配置において、マルチコアプロセッサ１００は、７番、８番、１２番及び１３番の格子点に対応する７番、８番、１２番及び１３番のコア１０２ａを演算に使用する。これらのコア１０２ａのそれぞれは、自身のローカルメモリ１０６にインストールされている最適制御値演算プログラムによって、自身に関連付けられた格子点における最適制御値を演算する。このとき、７番、８番、１２番及び１３番の各コア１０２ａによる最適制御値の演算は並列に行われる。各コア１０２ａにて最適制御値の演算が完了したら、その演算結果のデータは４つのコアのうちの代表コアに集められる。各コア１０２ａは、現在の動作点を囲む４つの格子点のうち２次元直交座標系において原点に最も近い格子点を代表格子点として認識し、その代表格子点を関連付けられたコアを代表コアとして認識するようにプログラムされている。図７に示す例では、７番のコア１０２ａが代表コアとなる。代表コアである７番のコア１０２ａは、自身が演算した最適制御値のデータと８番、１２番及び１３番のコア１０２ａから受信した最適制御値のデータとを用いて、自身のローカルメモリ１０６にインストールされている補間計算プログラムによって現在の動作点Ａにおける最適制御値を補間計算する。
【００３７】
以上述べた方法によれば、補間計算のために必要な４つの格子点における最適制御値はそれぞれ別々のコア１０２ａにより並列に演算される。これにより、アクチュエータの制御目標値の演算に要する時間を従来のシングルコアプロセッサを用いる場合に比較して大幅に短縮することができる。さらに、２次元直交座標系上での格子点の配列はマルチコアプロセッサ１００上でのコア１０２ａの配列に対応しているので、４つの格子点における最適制御値を物理的に最も近接した４つのコア１０２ａで演算することができる。また、その４つのコア１０２ａのうちの１つが補間計算コアとして機能する。これによれば、各コアで演算した最適制御値のデータを補間計算コアに渡す際に生じる通信ディレイ時間の差を小さくできるだけでなく、通信ディレイ時間そのものを小さくすることができる。
【００３８】
なお、以上述べた方法は、各コア１０２ａにおいて図８のフローチャートに示す最適制御値算出ルーチンが実行されることにより実施される。このルーチンは、各コア１０２ａのローカルメモリ１０６にインストールされたアプリケーションによって、コア１０２ａごとに一定の時間ステップ（例えばエンジンの制御周期）で実行される。
【００３９】
図８のフローチャートの最初のステップＳ１０２では、コア１０２ａはエンジン回転数とエンジン負荷の各現在値を取得する。それらは、最適制御値演算コア以外のコア１０２によってセンサの出力値に基づいて計算されている。次に、コア１０２ａは、エンジン回転数とエンジン負荷の各現在値から現在の動作点を特定し、現在の動作点が自身に関連付けられた格子点により区画される領域内にあるかどうか判定する。例えば、当該コア１０２ａが７番のコアである場合、７番の格子点を頂点とする４つの矩形領域のうちの何れかに現在の動作点が入っているかどうか判定する。
【００４０】
ステップＳ１０２の判定の結果が否定である場合、コア１０２ａは最適制御値の演算を休止して今回時間ステップでの演算を終了する。無駄な電力消費を抑えるためである。
【００４１】
ステップＳ１０２の判定の結果が肯定である場合、コア１０２ａはステップＳ１０４の処理を実行する。ステップＳ１０４では、コア１０２ａは最適制御値演算プログラムを実行し、自身に関連付けられた格子点における最適制御値を演算する。
【００４２】
次のステップＳ１０６では、コア１０２ａは自身が代表コアに該当するかどうか判定する。代表コアであるかどうかは、自身に関連付けられた格子点と現在の動作点との位置関係から判断することができる。
【００４３】
ステップＳ１０６の判定の結果が否定である場合、コア１０２ａはステップＳ１１２の処理を実行する。ステップＳ１１２では、コア１０２ａは自身が演算した最適制御値のデータを代表コアに送信する。どのコアが代表コアに該当するかは、２次元直交座標系上での現在の動作点の座標から判断することができる。最適制御値のデータの送信により、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００４４】
ステップＳ１０６の判定の結果が肯定である場合、コア１０２ａはステップＳ１０８の処理を実行する。ステップＳ１０８では、コア１０２ａは、現在の動作点が属する運転領域を定義するその他の格子点を関連付けられた各コアから、それらのコアで演算された最適制御値のデータを受信する。例えば、図６に点Ａで示すように現在の動作点が位置し、当該コア１０２ａが７番のコアである場合、８番、１２番及び１３番の各コア１０２ａからそれらが演算した最適制御値のデータを受信する。
【００４５】
次のステップＳ１１０では、代表コアであるコア１０２ａは、自身が演算した最適制御値を含む４つの格子点における最適制御値に基づいて、現在の動作点における最適制御値を補間計算プログラムにより補間計算する。補間計算で得られた現在の動作点における最適制御値は、アクチュエータの制御目標値として出力される。これにより、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００４６】
以上のルーチンがそれぞれのコア１０２ａにて実行されることで、アクチュエータの制御目標値を高速で演算可能にしながら消費電力を抑えることができる。
【００４７】
実施の形態２．
次に、本発明の実施の形態２のエンジン制御装置について図を参照して説明する。
【００４８】
本実施の形態と実施の形態１の相違点は、マルチコアプロセッサ１００を用いたアクチュエータの制御目標値の演算方法である。マルチコアプロセッサ１００のコア１０２の配列、ハードウェアアーキテクチャ、及びソフトウェアアーキテクチャは図１，図２及び図３に示す実施の形態１のそれらと同一である。また、実施の形態１と同一の方法でエンジン回転数とエンジン負荷を軸とする２次元直交座標系上に格子点が配列され、それらの格子点は実施の形態１と同一の方法でマルチコアプロセッサ１００上のコア１０２に関連付けられている。
【００４９】
実施の形態１では、現在の動作点を囲む４つの格子点における最適制御値を演算し、それらに基づいて現在の動作点における最適制御値を演算している。しかし、エンジンの運転状態が過渡的に変化している状況では、各コア１０２ａで最適制御値を演算している間に２次元直交座標系上での動作点の位置が変化する可能性がある。その場合、実施の形態１の方法による補間計算で得られる最適制御値と、真の現在の動作点における最適制御値との間にはずれが生じる可能性がある。そこで、本実施の形態では、エンジンの運転状態が過渡的に変化している状況でアクチュエータの制御目標値を精度良く演算する方法について提案する。
【００５０】
図９に示す２次元直交座標系において、点Ａは、今回の時間ステップの開始時点におけるエンジン回転数とエンジン負荷の各値により定まる動作点を示している。斜線をつけた領域Ｂは、点Ａを基準として各コア１０２ａでの最適制御値の演算時間内に到達しうる運転領域を示している。この領域Ｂは、点Ａにおけるエンジン回転数をＮＥａ（ｒｐｍ）、エンジン負荷をＫＬａ（％）とすると、エンジン回転数がＮＥａ±ΔＮＥ（ｒｐｍ）、エンジン負荷がＫＬａ±ΔＫＬ（％）の範囲として算出される。ここで、ΔＮＥは最適制御値の演算時間内に予想されるエンジン回転数の最大変化量であり、ΔＫＬは最適制御値の演算時間内に予想されるエンジン負荷の最大変化量である。ΔＮＥとΔＫＬの各値はエンジン回転数とエンジン負荷を引数とするマップにおいて予め定められている。
【００５１】
領域Ｂは、最適制御値の演算が完了した時点において動作点が存在しうる領域を示している。そこで、本実施の形態では、点Ａを囲む格子点だけでなく、領域Ｂを囲む格子点の全てについて予め最適制御値を演算することが行われる。図９に示す例では、領域Ｂは、６番、７番、１１番及び１２番の格子点によって定義される領域と、７番、８番、１２番及び１３番の格子点によって定義される領域と、８番、９番、１３番及び１４番の格子点によって定義される領域とに重なっている。よって、６番、７番、８番、９番、１１番、１２番、１３番及び１４番の格子点における最適制御値を前もって演算しておけば、最適制御値の演算が完了した時点現在における動作点がどの運転領域にあったとしても、その動作点における最適制御値を補間計算によって得ることができる。図９に示す例では、補間計算の開始時点現在における動作点は点Ｃに位置している。この場合、既に演算している８番、９番、１３番及び１４番の格子点における最適制御値を用いることができるので、現在の動作点Ｃにおける最適制御値をエンジンの制御周期に遅れることなく補間計算することができる。
【００５２】
本実施の形態による演算は、具体的には次の手順で行われる。まず、図１０に示すコアの配置において、マルチコアプロセッサ１００は、６番、７番、８番、９番、１１番、１２番、１３番及び１４番の格子点に対応する６番、７番、８番、９番、１１番、１２番、１３番及び１４番のコア１０２ａを演算に使用する。これらのコア１０２ａによる最適制御値の演算は並列に行われる。各コア１０２ａにて最適制御値の演算が完了したら、その時点におけるエンジン回転数とエンジン負荷を取得し、２次元直交座標系上での現在の動作点の位置を特定する。そして、現在の動作点が８番、９番、１３番及び１４番の格子点に囲まれる運転領域にある場合は、８番、９番、１３番及び１４番のコア１０２ａで演算された最適制御値のデータのみが代表コアに集められる。図１０に示す例では、８番のコア１０２ａが代表コアとなる。代表コアである８番のコア１０２ａは、自身が演算した最適制御値のデータと９番、１３番及び１４番のコア１０２ａから受信した最適制御値のデータとを用いて、自身のローカルメモリ１０６にインストールされている補間計算プログラムによって現在の動作点Ｃにおける最適制御値を補間計算する。
【００５３】
以上述べた方法は、各コア１０２ａにおいて図１１のフローチャートに示す最適制御値算出ルーチンが実行されることにより実施される。このルーチンは、各コア１０２ａのローカルメモリ１０６にインストールされたアプリケーションによって、コア１０２ａごとに一定の時間ステップ（例えばエンジンの制御周期）で実行される。
【００５４】
図１１のフローチャートの最初のステップＳ２０２では、コア１０２ａは、現時点から最適制御値の演算時間内で到達する可能性のある運転領域のデータを取得する。到達可能性のある運転領域は、最適制御値演算コア以外のコア１０２によって計算されている。
【００５５】
次のステップＳ２０４では、コア１０２ａは、ステップ２０２で取得した運転領域が自身に関連付けられた格子点により定義される領域と重なるかどうか判定する。例えば、当該コア１０２ａが８番のコアである場合、８番の格子点を頂点とする４つの矩形領域の何れかがステップ２０２で取得した運転領域と重なっているかどうか判定する。
【００５６】
ステップＳ２０４の判定の結果が否定である場合、コア１０２ａは最適制御値の演算を休止して今回時間ステップでの演算を終了する。無駄な電力消費を抑えるためである。
【００５７】
ステップＳ２０４の判定の結果が肯定である場合、コア１０２ａはステップＳ２０６の処理を実行する。ステップＳ２０６では、コア１０２ａは最適制御値演算プログラムを実行し、自身に関連付けられた格子点における最適制御値を演算する。
【００５８】
次のステップＳ２０８では、コア１０２ａはエンジン回転数とエンジン負荷の各現在値を取得する。そして、それらから２次元直交座標系上での現在の動作点を特定し、現在の動作点が自身に関連付けられた格子点により区画される領域内にあるかどうか判定する。例えば、当該コア１０２ａが８番のコアである場合、８番の格子点を頂点とする４つの矩形領域のうちの何れかに現在の動作点が入っているかどうか判定する。
【００５９】
ステップＳ２０８の判定の結果が否定である場合、コア１０２ａは最適制御値の演算結果を破棄して今回時間ステップでの演算を終了する。
【００６０】
ステップＳ２０８の判定の結果が肯定である場合、コア１０２ａはステップＳ２１０の処理を実行する。ステップＳ２１０では、コア１０２ａは自身が代表コアに該当するかどうか判定する。代表コアであるかどうかは、自身に関連付けられた格子点と現在の動作点との位置関係から判断することができる。
【００６１】
ステップＳ２１０の判定の結果が否定である場合、コア１０２ａはステップＳ２１６の処理を実行する。ステップＳ２１６では、コア１０２ａは自身が演算した最適制御値のデータを代表コアに送信する。どのコアが代表コアに該当するかは、２次元直交座標系上での現在の動作点の座標から判断することができる。最適制御値のデータの送信により、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００６２】
ステップＳ２１０の判定の結果が肯定である場合、コア１０２ａはステップＳ２１２の処理を実行する。ステップＳ２１２では、コア１０２ａは、現在の動作点が属する運転領域を定義するその他の格子点を関連付けられた各コアから、それらのコアで演算された最適制御値のデータを受信する。例えば、図１０に点Ｃで示すように現在の動作点が位置し、当該コア１０２ａが８番のコアである場合、９番、１３番及び１４番の各コア１０２ａからそれらが演算した最適制御値のデータを受信する。
【００６３】
次のステップＳ２１４では、代表コアであるコア１０２ａは、自身が演算した最適制御値を含む４つの格子点における最適制御値に基づいて、現在の動作点における最適制御値を補間計算プログラムにより補間計算する。補間計算で得られた現在の動作点における最適制御値は、アクチュエータの制御目標値として出力される。これにより、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００６４】
以上のルーチンがそれぞれのコア１０２ａにて実行されることで、エンジンの運転状態が過渡的に変化している状況であっても、消費電力を抑えながらエンジンの制御周期に遅れることなくアクチュエータの制御目標値を演算することができる。
【００６５】
実施の形態３．
次に、本発明の実施の形態３のエンジン制御装置について図を参照して説明する。
【００６６】
本実施の形態と実施の形態１，２とは、アクチュエータの制御目標値を決定する際に基づく運転条件の数に相違がある。本実施の形態では、第１及び第２の運転条件であるエンジン回転数とエンジン負荷に加えて、第３の運転条件であるエンジン水温にも基づいてアクチュエータの制御目標値を決定する。このため、本実施の形態と実施の形態１，２とでは、マルチコアプロセッサ１００を用いたアクチュエータの制御目標値の演算方法にも相違がある。マルチコアプロセッサ１００のコア１０２の配列、ハードウェアアーキテクチャ、及びソフトウェアアーキテクチャは図１，図２及び図３に示す実施の形態１のそれらと同一である。
【００６７】
本実施の形態のエンジン制御装置は、エンジン回転数、エンジン負荷及びエンジン水温の各現在値を取得し、それらに基づいて各アクチュエータの制御目標値を決定する。エンジン水温は、特にエンジンの暖機過程において、アクチュエータの操作量とエンジンの運転状態との関係に大きな影響を及ぼす因子である。本実施の形態のエンジン制御装置では、エンンジン回転数とエンジン負荷とエンジン水温のある特定の組み合わせにいてのみ適合データが用意され、その他の組み合わせについては用意された適合データに基づく補間計算によって補われる。
【００６８】
マルチコアプロセッサ１００で使用される適合データは、図１２に格子点で示されるエンンジン回転数とエンジン負荷とエンジン水温の組み合わせについて準備されている。図１２には、エンジン回転数をＸ軸としエンジン負荷をＹ軸としエンジン水温をＺ軸とする３次元直交座標系上の格子点の配列が示されている。この３次元直交座標系上には１２５個の格子点が５行５列５段に配列されている。３次元直交座標系上で格子点がとる３次元の格子パターンは単純立方格子であり、エンジン回転数とエンジン負荷を軸とする２次元直交座標系上での格子パターンはマルチコアプロセッサ１００の格子パターンと同じく矩形格子である。この格子パターンによれば、単位格子である立方体の頂点に配置される８つの格子点によって１つの運転空間が定義される。格子点のそれぞれには、その位置におけるエンジン回転数、エンジン負荷及びエンジン水温に対して適合された適合データが関連付けられている。各格子点における適合データは最適制御値演算プログラムに組み込まれて当該格子点が関連付けられたコア１０２に割り当てられている。
【００６９】
図１２には、３次元直交座標系上に配列された格子点とマルチコアプロセッサ１００上のコア１０２との関連付けについても示されている。３次元直交座標系上に配列された１２５個の格子点は、エンジン回転数とエンジン負荷を軸とする２次元直交座標系上と同じ並びで２５個のコア１０２ａに関連付けられている。よって、１つのコア１０２ａには、エンジン回転数とエンジン負荷の各値が同じでエンジン水温の値が異なる５個の格子点が関連付けられている。各コア１０２ａには、関連付けられた格子点のエンジン回転数、エンジン負荷及びエンジン水温に対して適合された適合データを使用する最適制御値演算プログラムが割り当てられている。最適制御値演算プログラムは補間計算プログラムとともにローカルメモリ１０６にインストールされている。前述の各適合データは最適値演算プログラムが用いるエンジン特性モデルのパラメータの値に用いられる。本実施の形態のマルチコアプロセッサ１００では、２５個のコア１０２ａがアクチュエータ制御目標値の演算のための最適値演算コアとして機能し、それ以外のコア１０２はエンジン制御に必要なその他の処理を担う。
【００７０】
次に、マルチコアプロセッサ１００を用いたアクチュエータの制御目標値の演算方法について図１３を用いて説明する。図１３に示す３次元直交座標系において、点Ｄは、エンジン回転数とエンジン負荷とエンジン水温の各現在値により定まる動作点、つまり、現在の動作点を示している。ここでいう現在とは、今回の時間ステップの開始時点現在を意味する。エンジンを適切に制御するためには、現在の動作点におけるアクチュエータの最適制御値を演算し、それをアクチュエータの制御目標値として設定する必要がある。そこで、本実施の形態では、現在の動作点を囲む８つの格子点における最適制御値を演算し、それらを用いて現在の動作点における最適制御値を補間計算することが行われる。図１３に示す例では、現在の動作点Ｄは７Ｘ番、８Ｘ番、１２Ｘ番、１３Ｘ番、７Ｙ番、８Ｙ番、１２Ｙ番及び１３Ｙ番の格子点によって定義される空間に属している。よって、これらの格子点における最適制御値が分かれば、それらを用いた補間計算によって現在の動作点Ｄにおける最適制御値を得ることができる。
【００７１】
現在の動作点Ｄにおける最適制御値は、具体的には次の手順で演算される。まず、図１３に示すコアの配置において、マルチコアプロセッサ１００は、上記の格子点に対応する７番、８番、１２番及び１３番のコア１０２ａを演算に使用する。これらのコア１０２ａのそれぞれは、自身のローカルメモリ１０６にインストールされている最適制御値演算プログラムによって、自身に関連付けられた各格子点における最適制御値を順次演算する。例えば、７番のコア１０２ａは、７Ｘ番の格子点における最適制御値を演算し、続いて、７Ｙ番の格子点における最適制御値を演算する。４つのコア１０２ａによる最適制御値の演算は並列に行われる。各コア１０２ａにて最適制御値の演算が完了したら、その演算結果のデータは４つのコアのうちの代表コアに集められる。各コア１０２ａは、現在の動作点を囲む８つの格子点のうち３次元直交座標系において原点に最も近い格子点を代表格子点として認識し、その代表格子点を関連付けられたコアを代表コアとして認識するようにプログラムされている。図１３に示す例では、７番のコア１０２ａが代表コアとなる。代表コアである７番のコア１０２ａは、自身が演算した２つの格子点における最適制御値のデータと８番、１２番及び１３番のコア１０２ａから受信した６つの格子点における最適制御値のデータとを用いて、自身のローカルメモリ１０６にインストールされている補間計算プログラムによって現在の動作点Ｄにおける最適制御値を補間計算する。
【００７２】
以上述べた方法によれば、アクチュエータの制御目標値に第３の運転条件としてのエンジン水温を反映させることで、実施の形態１に比較してより細かなエンジン制御を実現することができる。また、補間計算のために必要な８つの格子点における最適制御値の演算は、並列に動作する４つのコア１０２ａに分散して行われるので、アクチュエータの制御目標値の演算に要する時間を従来のシングルコアプロセッサを用いる場合に比較して大幅に短縮することができる。さらに、以上述べた方法によれば、８つの格子点における最適制御値を物理的に最も近接した４つのコア１０２ａで演算し、その４つのコア１０２ａのうちの１つが補間計算コアとして機能する。これによれば、各コアで演算した最適制御値のデータを補間計算コアに渡す際に生じる通信ディレイ時間の差を小さくできるだけでなく、通信ディレイ時間そのものを小さくすることができる。
【００７３】
なお、以上述べた方法は、各コア１０２ａにおいて図１４のフローチャートに示す最適制御値算出ルーチンが実行されることにより実施される。このルーチンは、各コア１０２ａのローカルメモリ１０６にインストールされたアプリケーションによって、コア１０２ａごとに一定の時間ステップ（例えばエンジンの制御周期）で実行される。
【００７４】
図１４のフローチャートの最初のステップＳ３０２では、コア１０２ａはエンジン回転数とエンジン負荷とエンジン水温の各現在値を取得する。それらは、最適制御値演算コア以外のコア１０２によってセンサの出力値に基づいて計算されている。次に、コア１０２ａは、エンジン回転数とエンジン負荷とエンジン水温の各現在値から現在の動作点を特定し、現在の動作点が自身に関連付けられた何れかの格子点により区画される空間内にあるかどうか判定する。例えば、当該コア１０２ａが７番のコアである場合、７Ｘ番の格子点や７Ｙ番の格子点を頂点とする複数の立方体空間のうちの何れかに現在の動作点が入っているかどうか判定する。
【００７５】
ステップＳ３０２の判定の結果が否定である場合、コア１０２ａは最適制御値の演算を休止して今回時間ステップでの演算を終了する。無駄な電力消費を抑えるためである。
【００７６】
ステップＳ３０２の判定の結果が肯定である場合、コア１０２ａはステップＳ３０４の処理を実行する。ステップＳ３０４では、コア１０２ａは最適制御値演算プログラムを実行し、自身に関連付けられた格子点のうち現在の動作点に関連する２つの格子点における最適制御値を演算する。
【００７７】
次のステップＳ３０６では、コア１０２ａは自身が代表コアに該当するかどうか判定する。代表コアであるかどうかは、自身に関連付けられた格子点と現在の動作点との位置関係から判断することができる。
【００７８】
ステップＳ３０６の判定の結果が否定である場合、コア３０２ａはステップＳ３１２の処理を実行する。ステップＳ３１２では、コア１０２ａは自身が演算した２つの格子点における最適制御値のデータを代表コアに送信する。どのコアが代表コアに該当するかは、３次元直交座標系上での現在の動作点の座標から判断することができる。最適制御値のデータの送信により、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００７９】
ステップＳ３０６の判定の結果が肯定である場合、コア１０２ａはステップＳ３０８の処理を実行する。ステップＳ３０８では、コア１０２ａは、現在の動作点が属する運転空間を定義するその他の格子点を関連付けられた各コアから、それらのコアで演算された最適制御値のデータを受信する。例えば、図１３に点Ｄで示すように現在の動作点が位置し、当該コア１０２ａが７番のコアである場合、８番、１２番及び１３番の各コア１０２ａからそれらが演算した６つの格子点における最適制御値のデータを受信する。
【００８０】
次のステップＳ３１０では、代表コアであるコア１０２ａは、自身が演算した最適制御値を含む８つの格子点における最適制御値に基づいて、現在の動作点における最適制御値を補間計算プログラムにより補間計算する。補間計算で得られた現在の動作点における最適制御値は、アクチュエータの制御目標値として出力される。これにより、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００８１】
以上のルーチンがそれぞれのコア１０２ａにて実行されることで、アクチュエータの制御目標値を高速で演算可能にしながら消費電力を抑えることができる。
【００８２】
実施の形態４．
次に、本発明の実施の形態４のエンジン制御装置について図を参照して説明する。
【００８３】
本実施の形態におけるマルチコアプロセッサ１００のコア１０２の配列、ハードウェアアーキテクチャ、及びソフトウェアアーキテクチャは図１，図２及び図３に示す実施の形態１のそれらと同一である。また、図１２に示す実施の形態３と同一の方法でエンジン回転数とエンジン負荷とエンジン水温を軸とする３次元直交座標系上に格子点が配列され、それらの格子点は図１２に示す実施の形態３と同一の方法でマルチコアプロセッサ１００上のコア１０２に関連付けられている。本実施の形態は、エンジンの運転状態が過渡的に変化している状況でアクチュエータの制御目標値を精度良く演算する方法について提案するものであり、本実施の形態と実施の形態３との関係は、実施の形態２と実施の形態１との関係に対応している。
【００８４】
本実施の形態にかかるアクチュエータの制御目標値の演算方法は、格子点を関連付けられた各コア１０２ａにおいて図１５のフローチャートに示す最適制御値算出ルーチンが実行されることにより実施される。このルーチンは、各コア１０２ａのローカルメモリ１０６にインストールされたアプリケーションによって、コア１０２ａごとに一定の時間ステップ（例えばエンジンの制御周期）で実行される。
【００８５】
図１５のフローチャートの最初のステップＳ４０２では、コア１０２ａは、現時点から最適制御値の演算時間内で到達する可能性のある運転空間のデータを取得する。その運転空間は、今回時間ステップの開始時点におけるエンジン回転数をＮＥａ（ｒｐｍ）、エンジン負荷をＫＬａ（％）、エンジン水温をＴＷａ（℃）とすると、エンジン回転数がＮＥａ±ΔＮＥ（ｒｐｍ）、エンジン負荷がＫＬａ±ΔＫＬ（％）、エンジン水温がＴＷａ＋ΔＴＷ（℃）の範囲として算出される。ここで、ΔＮＥは最適制御値の演算時間内に予想されるエンジン回転数の最大変化量であり、ΔＫＬは最適制御値の演算時間内に予想されるエンジン負荷の最大変化量であり、ΔＴＷは最適制御値の演算時間内に予想されるエンジン水温の最大上昇量である。到達可能性のある運転空間は、最適制御値演算コア以外のコア１０２によって計算されている。
【００８６】
次のステップＳ４０４では、コア１０２ａは、ステップ４０２で取得した運転空間が自身に関連付けられた何れかの格子点により定義される空間と重なるかどうか判定する。
【００８７】
ステップＳ４０４の判定の結果が否定である場合、コア１０２ａは最適制御値の演算を休止して今回時間ステップでの演算を終了する。無駄な電力消費を抑えるためである。
【００８８】
ステップＳ４０４の判定の結果が肯定である場合、コア１０２ａはステップＳ４０６の処理を実行する。ステップＳ４０６では、コア１０２ａは最適制御値演算プログラムを実行し、ステップ４０２で取得した運転空間を定義する格子点のうち自身に関連付けられた各格子点における最適制御値を演算する。
【００８９】
次のステップＳ４０８では、コア１０２ａはエンジン回転数とエンジン負荷とエンジン水温の各現在値を取得する。ここでいう現在とは、最適制御値の演算が完了した時点現在を意味する。そして、それら３つの運転条件の各現在値から３次元直交座標系上での現在の動作点を特定し、現在の動作点が自身に関連付けられた何れかの格子点により区画される空間内にあるかどうか判定する。
【００９０】
ステップＳ４０８の判定の結果が否定である場合、コア１０２ａは最適制御値の演算結果を破棄して今回時間ステップでの演算を終了する。
【００９１】
ステップＳ４０８の判定の結果が肯定である場合、コア１０２ａはステップＳ４１０の処理を実行する。ステップＳ４１０では、コア１０２ａは自身が代表コアに該当するかどうか判定する。代表コアであるかどうかは、自身に関連付けられた格子点と現在の動作点との位置関係から判断することができる。
【００９２】
ステップＳ４１０の判定の結果が否定である場合、コア１０２ａはステップＳ４１６の処理を実行する。ステップＳ４１６では、コア１０２ａは、ステップＳ４０４で前もって演算した最適制御値のデータのうち、現在の動作点に関連する２つの格子点における最適制御値のデータを代表コアに送信する。どのコアが代表コアに該当するかは、３次元直交座標系上での現在の動作点の座標から判断することができる。最適制御値のデータの送信により、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００９３】
ステップＳ４１０の判定の結果が肯定である場合、コア１０２ａはステップＳ４１２の処理を実行する。ステップＳ４１２では、コア１０２ａは、現在の動作点が属する運転空間を定義するその他の格子点を関連付けられた各コアから、それらのコアで演算された６つの格子点における最適制御値のデータを受信する。
【００９４】
次のステップＳ４１４では、代表コアであるコア１０２ａは、自身が演算した最適制御値を含む８つの格子点における最適制御値に基づいて、現在の動作点における最適制御値を補間計算プログラムにより補間計算する。補間計算で得られた現在の動作点における最適制御値は、アクチュエータの制御目標値として出力される。これにより、当該コア１０２ａによる今回時間ステップでの演算は終了する。
【００９５】
以上のルーチンがそれぞれのコア１０２ａにて実行されることで、エンジンの運転状態が過渡的に変化している状況であっても、消費電力を抑えながらエンジンの制御周期に遅れることなくアクチュエータの制御目標値を演算することができる。
【００９６】
実施の形態５．
次に、本発明の実施の形態５のエンジン制御装置について図を参照して説明する。
【００９７】
本実施の形態にかかるマルチコアプロセッサ１００のコア１０２の配列、ハードウェアアーキテクチャ、及びソフトウェアアーキテクチャは図１，図２及び図３に示す実施の形態１のそれらと同一である。本実施の形態にかかるアクチュエータの制御目標値の演算方法は、実施の形態３にかかるそれを前提としている。したがって、実施の形態３と同一の方法でエンジン回転数とエンジン負荷とエンジン水温を軸とする３次元直交座標系上に格子点が配列され、それらの格子点は実施の形態３と同一の方法でマルチコアプロセッサ１００上のコア１０２に関連付けられている。
【００９８】
本実施の形態のエンジン制御装置は、アクチュエータの制御目標値を決定する際に基づく３つの運転条件のうち、第３の運転条件をエンジンの状態によって変更することに特徴がある。本実施の形態においても、エンジンの暖機が完了するまでの間は、実施の形態３と同じくエンジン水温を第３の運転条件として使用する。しかし、暖機が完了した後のエンジン水温の変化は小さいため、エンジン水温をＺ軸とする３次元直交座標系上での動作点の移動は、エンジン水温が一定の特定のＸＹ平面上に限定されるようになる。つまり、エンジンの暖機の完了後は、Ｚ軸方向へ配列された多くの格子点が使用されなくなる。そこで、本実施の形態では、エンジンの暖機が完了した時点において、エンジン水温から吸入空気温度へと第３の運転条件を変更する。
【００９９】
図１６には、エンジン回転数をＸ軸としエンジン負荷をＹ軸とし吸入空気温度をＺ軸とする３次元直交座標系上の格子点の配列が示されている。この３次元直交座標系上で格子点がとる３次元の格子パターンは、図１２に示すエンジン水温をＺ軸とする３次元直交座標系上でのそれと同一である。吸入空気温度をＺ軸とする３次元直交座標系上に配列された複数の格子点は、エンジン回転数とエンジン負荷を軸とする２次元直交座標系上と同じ並びで２５個のコア１０２ａに関連付けられている。格子点のそれぞれには、その位置におけるエンジン回転数、エンジン負荷及び吸入空気温度に対して適合された適合データが関連付けられている。各格子点における適合データは最適制御値演算プログラムに組み込まれて当該格子点が関連付けられたコア１０２ａに割り当てられている。
【０１００】
このように、本実施の形態では、各コア１０２ａには、エンジン回転数とエンジン負荷の各値が同じでエンジン水温の値が異なる複数の格子点（第１グループの格子点）に加えて、エンジン回転数とエンジン負荷の各値が同じで吸入空気温度の値が異なる複数の格子点（第２グループの格子点）が関連付けられている。各コア１０２ａのローカルメモリ１０６にインストールされている最適制御値演算プログラムは、第１グループの各格子点に対して適合された適合データと、第２グループの各格子点に対して適合された適合データの何れか一方を選択的に使用可能に作成されている。
【０１０１】
エンジンの始動からエンジンの暖機が完了するまでの間は、各コア１０２ａは、図１７の左図に示すように第１グループの各格子点に対して適合された適合データを最適制御値演算プログラムによる演算に使用する。例えば現在の動作点が図１７の左図に示す３次元直交座標系において点Ｅの位置にある場合、７番のコア１０２ａは、７Ｘ番及び７Ｙ番の各格子点における最適制御値を演算する。点Ｅにおける最適制御値は、７Ｘ番、７Ｙ番、８Ｘ番、８Ｙ番、１２Ｘ番、１２Ｙ番、１３Ｘ番及び１３Ｙ番の各格子点における最適制御値を用いて補間計算される。
【０１０２】
その後にエンジンの暖機が完了すると、各コア１０２ａは、図１７の右図に示すように最適制御値の演算に用いる適合データを第２グループの各格子点に対して適合された適合データへと変更する。例えば変更後の現在の動作点が図１７の右図に示す３次元直交座標系において点Ｆの位置にある場合、７番のコア１０２ａは、７ｘ番及び７ｙ番の各格子点における最適制御値を演算する。点Ｆにおける最適制御値は、７ｘ番、７ｙ番、８ｘ番、８ｙ番、１２ｘ番、１２ｙ番、１３ｘ番及び１３ｙ番の各格子点における最適制御値を用いて補間計算される。
【０１０３】
エンジンの暖機が完了している場合でも吸入空気温度には変化がある。このため、暖機が完了している状況でエンジンの状態に与える影響は、エンジン水温よりも吸入空気温度のほうが大きい。よって、エンジンの暖機が完了したらエンジン水温から吸入空気温度へと第３の運転条件を変更することにより、格子点の３次元配列をより有効に活用してエンジンの状態をより的確に制御することが可能となる。
【０１０４】
その他．
本発明は上述の実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。例えば次のように変形して実施してもよい。
【０１０５】
上記の各実施の形態では、最適制御値を演算したコアの中から選定される代表コアにて補間計算を行っている。しかし、その他のコアにおいて補間計算を行うことも可能である。例えば、図１８及び図１９はそれぞれ実施の形態１の変形列を示している。図１８の変形例に示すように、格子点を関連付けられたコア１０２ａ以外の何れか１つのコア１０２ｂを補間計算コアとすることができる。或いは、図１９の変形例に示すように、格子点を関連付けられたコア１０２ａのうちの何れか１つを補間計算コアとして固定することもできる。その場合、エンジン回転数とエンジン負荷がともに最大の格子点が関連付けられた２５番のコア１０２ａのように、平均的に演算の負荷が低いコアを補間計算コアとすることが好ましい。これらの変形例では、各コアで演算した最適制御値のデータを補間計算コアに送信する際、その物理的な距離に応じて通信ディレイ時間は大きくなる。しかし、補間計算で用いる最適制御値の演算は、例えば７番、８番、１２番及び１３番のコア１０２ａからなるグループのように物理的に最も近接したコアからなるグループで行われるので、コア間における通信ディレイ時間の差は小さい。通信ディレイ時間の差が小さいことでマルチコアプロセッサ全体としては高い効率で演算することができる。
【０１０６】
上記の各実施の形態では、マルチコアプロセッサに搭載されるコアの一部に格子点を関連付けている。しかし、マルチコアプロセッサに搭載される全てのコアに格子点を関連付けることもできる。例えば、図１に示すマルチコアプロセッサ１００の場合、エンジン回転数とエンジン負荷を軸とする２次元直交座標系上に４９個の格子点を配列し、４９個のコア１０２の全てに格子点を関連付けてもよい。その場合、エンジン制御に必要なその他の処理は、格子点を関連付けられているコアの中で平均的な負荷が比較的小さいコアに担わせればよい。なお、マルチコアプロセッサに搭載されるコアの数は好ましくは４個以上、より好ましくは９個以上あればよく、その数に具体的な限定は無い。また、２次元直交座標系上に配列する格子点の数は、マルチコアプロセッサに搭載されるコアの数以下であるならば、その数に具体的な限定は無い。
【０１０７】
実施の形態４において、エンジンの暖機完了後の第３の運転条件は吸入空気温度に替えて車速としてもよい。車速により走行風の強さが異なり、排気系の温度に違いが生じるからである。その他、連続的に変化する運転条件であれば第３の運転条件として好ましい。例えば気圧やＥＧＲ率は第３の運転条件として好適である。
【符号の説明】
【０１０８】
１００  マルチコアプロセッサ
１０２  コア
１０２ａ  格子点を関連付けられたコア
１０４  ＣＰＵ
１０６  ローカルメモリ
１０８  バス
１１０  ＯＳ
１１２  アプリケーション
【図１】
2013046363.tif 000003
【図２】
2013046363.tif 000004
【図３】
2013046363.tif 000005
【図４】
2013046363.tif 000006
【図５】
2013046363.tif 000007
【図６】
2013046363.tif 000008
【図７】
2013046363.tif 000009
【図８】
2013046363.tif 000010
【図９】
2013046363.tif 000011
【図１０】
2013046363.tif 000012
【図１１】
2013046363.tif 000013
【図１２】
2013046363.tif 000014
【図１３】
2013046363.tif 000015
【図１４】
2013046363.tif 000016
【図１５】
2013046363.tif 000017
【図１６】
2013046363.tif 000018
【図１７】
2013046363.tif 000019
【図１８】
2013046363.tif 000020
【図１９】
2013046363.tif 000021
【国際調査報告】
2013046363.tif 000022
2013046363.tif 000023
2013046363.tif 000024
2013046363.tif 000025