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