(57)【要約】【課題】内燃機関に燃焼異常が発生した場合に、これを回避するための演算を高速度で実現することのできる内燃機関の制御装置を提供する。【解決手段】複数のコアが搭載されたマルチコアプロセッサを用いて内燃機関の１又は複数のアクチュエータの制御入力値を演算する内燃機関の制御装置において、制御入力値の演算に関わる複数のタスクをマルチコアプロセッサの複数のコアに分散して割り当てて、複数のコア間で同期通信を行いつつ並列に演算処理する並列演算手段と、内燃機関に燃焼異常が起きた場合に、並列演算手段による演算処理を禁止して、複数のタスクの中で当該燃焼異常を回避するために優先すべき制御入力値の演算に関わるタスクを、複数のコアの中から選択された第１のコアに割り当てて演算処理する異常時演算手段と、を備える。【選択図】図６
2014105678.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアが搭載されたマルチコアプロセッサを用いて内燃機関の１又は複数のアクチュエータの制御入力値を演算する内燃機関の制御装置において、
前記制御入力値の演算に関わる複数のタスクを前記マルチコアプロセッサの複数のコアに分散して割り当てて、前記複数のコア間で同期通信を行いつつ並列に演算処理する並列演算手段と、
前記内燃機関に燃焼異常が起きた場合に、前記並列演算手段による演算処理を禁止して、前記複数のタスクの中で当該燃焼異常を回避するために優先すべき前記制御入力値の演算に関わるタスクを、前記複数のコアの中から選択された第１のコアに割り当てて演算処理する異常時演算手段と、
を備えることを特徴とする内燃機関の制御装置。
【請求項２】
前記異常時演算手段は、稼働中の前記第１のコアの演算周波数を高くする手段を含むことを特徴とする請求項１記載の内燃機関の制御装置。
【請求項３】
前記燃焼異常は、ノッキング、プレイグニッション及び失火の何れかを含むことを特徴とする請求項１または２記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の制御装置に係り、詳しくは、マルチコアプロセッサを搭載した内燃機関の制御装置に関する。
【背景技術】
【０００２】
従来、複数のプロセッサを搭載した演算装置が知られている。特開２００６−３４４１６２号公報（以下、特許文献１）に記載されているものも、そのような演算装置の１つである。特許文献１に記載されている演算装置は、複数のプロセッサを用いて並列処理を行う際に、消費電力量情報に基づいて複数のプロセッサによる消費電力量の合計が最小となるように、複数のプロセッサに対する割り付けと、動作周波数および電圧の設定を行うことができるようにしたものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３４４１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年においては、１つのＣＰＵに複数のコアを搭載した演算装置、すなわちマルチコアプロセッサの使用が自動車用エンジン制御の分野でも検討されている。エンジンに搭載されるアクチュエータの数と種類は益々増えており、それらアクチュエータの制御目標値を演算するためには、マルチコアプロセッサの高い処理能力が有望だからである。
【０００５】
但し、上述したようなマルチコアプロセッサの演算手法を単純に自動車用エンジン制御に適用することができるとは限らない。すなわち、マルチコアプロセッサでは複数のコアにタスクを分配して並列に処理することが可能であるが、そのタスク分配の手法の如何によってはエンジンの運転を適切に制御することができないことも想定される。例えば、エンジンの燃焼異常が発生した場合には、これを回避するためのアクチュエータの制御目標値を優先的に演算することが求められるが、この際の演算タスクを複数のコアに分配して並列に処理することとすると、コア間の同期通信に時間を要してしまい異常の回避が遅れるおそれがある。
【０００６】
本発明は、上述のような課題に鑑みてなされたもので、内燃機関に燃焼異常が発生した場合に、これを回避するための演算を高速度で実現することのできる内燃機関の制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明は、上記の目的を達成するため、内燃機関の制御装置において、
複数のコアが搭載されたマルチコアプロセッサを用いて内燃機関の１又は複数のアクチュエータの制御入力値を演算する内燃機関の制御装置において、
前記制御入力値の演算に関わる複数のタスクを前記マルチコアプロセッサの複数のコアに分散して割り当てて、前記複数のコア間で同期通信を行いつつ並列に演算処理する並列演算手段と、
前記内燃機関に燃焼異常が起きた場合に、前記並列演算手段による演算処理を禁止して、前記複数のタスクの中で当該燃焼異常を回避するために優先すべき前記制御入力値の演算に関わるタスクを、前記複数のコアの中から選択された第１のコアに割り当てて演算処理する異常時演算手段と、
を備えることを特徴としている。
【０００８】
第２の発明は、第１の発明において、
前記異常時演算手段は、稼働中の前記第１のコアの演算周波数を高くする手段を含むことを特徴としている。
【０００９】
第３の発明は、第１または第２の発明において、
前記燃焼異常は、ノッキング、プレイグニッション及び失火の何れかを含むことを特徴としている。
【発明の効果】
【００１０】
第１の発明によれば、内燃機関に燃焼異常が発生した場合に、これを回避するために優先すべき制御入力値の演算に関わるタスクが単一のコア（第１のコア）に割り当てられる。このため、本発明によれば、コア間の同期通信を必要とすることなく燃焼異常回避のための制御入力値を演算することができるので、異常回避への応答性を有効に向上させることが可能となる。
【００１１】
第２の発明によれば、内燃機関に燃焼異常が発生した場合に、稼働中の第１コアの演算周波数が高くされる。このため、本発明によれば、燃焼異常回避のための制御入力値の演算を更に高速度で行うことが可能となる。
【００１２】
第３の発明によれば、燃焼異常としてノッキング、プレイグニッション及び失火の何れかが発生した場合に、コア間の同期通信を必要とすることなく燃焼異常回避のための制御入力値を演算することができるので、異常回避への応答性を有効に向上させることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態の並列計算装置の構成の概略を示す図である。
【図２】本実施の形態の並列計算装置の通常時の計算手法について説明するための図である。
【図３】エンジン回転数とエンジン負荷とを引数とした運転条件格子空間を示す図である。
【図４】図３に示す運転条件格子空間における動作点の近傍を拡大して示した図である。
【図５】通常時の並列演算のルーチンを示すフローチャートである。
【図６】本実施の形態の並列計算装置の燃焼異常時の計算手法について説明するための図である。
【図７】本発明の実施の形態１において実行されるルーチンのフローチャートである。
【図８】本発明の実施の形態１において回避モード時に実行されるルーチンのフローチャートである。
【図９】本発明の実施の形態２において実行されるルーチンのフローチャートである。
【図１０】本発明の実施の形態２において回避モード時に実行されるルーチンのフローチャートである。
【図１１】本発明の実施の形態３において実行されるルーチンのフローチャートである。
【図１２】本発明の実施の形態３において回避モード時に実行されるルーチンのフローチャートである。
【発明を実施するための形態】
【００１４】
実施の形態１．
本発明の実施の形態１について図を参照して説明する。
【００１５】
本実施の形態１の並列計算装置は、マルチコアプロセッサを用いてエンジン制御にかかるアクチュエータの制御目標値を演算する並列計算装置である。本実施の形態の並列計算装置が適用される自動車エンジンの種類や構造に限定はない。例えば、ガソリンエンジン、ディーゼルエンジン、自然吸気エンジン、過給エンジン等、様々な自動車エンジンに適用することができる。また、本実施の形態の並列計算装置が演算する制御目標値の種類や数にも限定はない。例えば、スロットル、点火装置、可変バルブタイミング装置、インジェクタ、ＥＧＲ装置、ウエストゲートバルブ等、様々なアクチュエータの制御目標値の演算に適用することができる。尚、本実施の形態では、過給機付きのガソリンエンジンの並列計算装置を例に説明する。
【００１６】
図１は、本実施の形態の並列計算装置の構成の概略を示す図である。本実施の形態の並列計算装置１００は、エンジン２の備えるＥＣＵの機能の一部として実現される。並列計算装置１００には、エンジン２に備えられる複数のセンサからエンジンの運転状態や運転環境に関する各種の情報が入力される。並列計算装置１００はそれらの情報に基づいて各アクチュエータに指示する操作量（制御目標値）を演算する。並列計算装置１００は４つのコア１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ（以下、これらを特に区別しないときは単に「コア１０」と称する）が搭載されたマルチコアタイプの並列計算装置である。図示は省略するが、各コア１０はキャッシュつきのＣＰＵとローカルメモリとを備え、ローカルメモリには、ＣＰＵで実行される各種プログラムとそのプログラムの実行時に使用される各種のデータが記憶されている。コア１０同士はバス（図示省略）で接続されており、バスを経由してコア１０間での同期通信が行われる。尚、本実施の形態の並列計算装置１００では４つのコアが搭載されたマルチコアプロセッサについて説明するが、並列計算装置１００は、更に複数のコアが搭載された所謂メニーコアプロセッサとして構成されていてもよい。
【００１７】
［実施の形態の１動作］
次に、本実施の形態１の動作について説明する。本実施の形態にかかる並列計算装置１００は、いわゆるモデルベース制御によってエンジン２を制御するものであり、モデル予測を多用して、上述した複数のアクチュエータの制御目標値を計算する。具体的には、エンジン２から並列計算装置１００には、ＥＧＲ率、過給圧、点火時期、エンジン回転数及びエンジン負荷を含む各種の情報が取り込まれる。並列計算装置１００は、取り込んだ情報に基づき、ＥＧＲバルブの操作量であるＥＧＲバルブ開度、ウエストゲートバルブの操作量であるウエストゲートバルブ開度及び点火装置の操作量である点火時期ＳＡ等をそれぞれ計算し、エンジン２に出力する。
【００１８】
図２は、本実施の形態の並列計算装置の通常時の計算手法について説明するための図である。この図に示すように、エンジン２に燃焼異常等が発生していない通常時においては、並列計算装置１００において複数のコア１０を用いた並列演算処理が行われる。具体的には、複数のアクチュエータの制御目標値を算出するための演算のタスクがこれらのコア１０に分配される。各コア１０では、コア間での同期通信を行いつつ割り当てられたタスクの演算処理を実行する。ここで、複雑なエンジン挙動をモデル化する際には、エンジン特性をより高精度に記述可能な表現形式を用いてモデル化することが重要となる。そこで、本実施の形態の並列計算装置１００では、ポリトープ表現形式を用いてエンジン挙動のモデル化を行うこととしている。以下、ポリトープ表現形式を用いたモデリング手法について詳細に説明する。
【００１９】
並列計算装置１００は、協調制御のための目標値追従コントローラを備えている。目標値追従コントローラは、エンジン２の状態量であるＥＧＲ率、過給圧および点火時期の各推定値がそれぞれの目標値に追従するように各アクチュエータの操作量を計算する。以下の式（１）は、目標値追従コントローラの制御側を示す方程式である。尚、次式（１）において、“ｕ”はエンジン２への制御入力としての入力変数ベクトルである。入力変数ベクトルには操作量であるＥＧＲバルブ開度、ウエストゲートバルブ開度及び点火時期等が含まれる。“ｘ”は状態量としての状態変数ベクトルであり、“ｒ”はその目標値ベクトルである。状態変数ベクトルにはＥＧＲ率、過給圧及び点火時期の各推定値が含まれる。“ｖ”は目標値ベクトルに対する状態変数ベクトルの追従誤差を積分して得られる積分ベクトルである。“Ｋ”は係数行列であり、“ρ”はエンジン回転数とエンジン負荷とによって変化するスケジューリングパラメータである。
【００２０】
【数１】
2014105678.tif 000003
【００２１】
図３は、エンジン回転数とエンジン負荷とを引数とした運転条件格子空間を示す図である。この図に示すとおり、運転条件格子空間は、エンジン回転数を横軸、エンジン負荷を縦軸とした２次元空間が所定の幅で格子状に区切られている。ここで、図３に示す運転条件格子空間上において、エンジン回転数およびエンジン負荷の観測量が位置する点（以下、「動作点」と称する）の属する格子空間の４つの頂点をそれぞれ端点１、端点２、端点３、端点４とした場合を考える。図４は、図３に示す運転条件格子空間における動作点の近傍を拡大して示した図である。この場合、動作点と各端点との横方向および縦方向の距離の比率をα，βを用いて図３のように表したとき、動作点における入力変数ベクトルｕは、次式（２）で表される。
【００２２】
【数２】
2014105678.tif 000004
【００２３】
上式（２）によれば、動作点に近い端点ほど、大きな重みをかけることができる。上式（２）のような表現形式をポリトープ表現形式という。このように、ポリトープ表現形式による演算によれば、動作点が格子内の内分点に位置した場合であっても、入力変数ベクトルｕを高精度に計算することが可能となる。
【００２４】
ところで、上述したようなポリトープ表現形式の演算をエンジンのモデルベース制御に用いる場合においては、演算処理時間の長期化が問題となる。すなわち、サンプリングレートが速いエンジン制御の特殊性に鑑みると、上述したような演算負荷の高い行列計算を逐次処理した場合に、指定したサンプリング時間内に演算処理を終わらすことができないことも想定される。
【００２５】
そこで、本実施の形態の並列計算装置１００では、上式（２）の演算において、複数のコアを用いた並列演算処理を行うこととする。上式（２）の演算を展開して整理すると次式（３）が導き出される。
【００２６】
【数３】
2014105678.tif 000005
【００２７】
上式（３）における入力変数ベクトルｕ１〜ｕ４は、端点１〜端点４におけるそれぞれの入力変数ベクトルを示しており、これらの演算は互いに独立している。そこで、本実施の形態の並列計算装置１００では、入力変数ベクトルｕ１，ｕ２，ｕ３，ｕ４の各々の演算を、各コア１０にそれぞれ割り当てて並列に演算することとする。演算された入力変数ベクトルｕ１〜ｕ４は、複数のコアの中から選択された演算負荷の低いコア（以下、「空きコア」と称する。図２ではコア１０Ａが相当）に集められる。空きコアでは、集められた入力変数ベクトルｕ１〜ｕ４、および上式（２）に従い別途演算されたスケジューリングパラメータρ１〜ρ４を上式（３）に代入することにより、動作点における入力変数ベクトルｕが算出される。
【００２８】
このように、本実施の形態の並列計算装置１００によれば、互いに独立した入力変数ベクトルｕ１〜ｕ４の各々の演算を複数のコアを用いて並列に演算することができる。これにより、ポリトープ表現形式を用いたモデルベース制御において、演算負荷の軽減および演算の高速化を有効に図ることが可能となる。
【００２９】
図５は、通常時のルーチンを示すフローチャートである。尚、図５に示すルーチンは、エンジン２が通常運転中であると判定された場合に実行されるルーチンであるが、この点については後述する。
【００３０】
図５に示すルーチンでは、先ず、現在の運転条件として、エンジン回転数とエンジン負荷とが検出される（ステップＳ１００）。次に、上記ステップＳ１００において検出された運転条件の動作点が、エンジン回転数とエンジン負荷とを引数とした運転条件格子空間上のどのセル（格子）に属するかが判定される（ステップＳ１０２）。ここでは、具体的には、現在の運転条件の属するセルを形成する４つの端点が特定される。
【００３１】
次に、現在状態が取得される（ステップＳ１０４）。ここでは、エンジンの状態量としての過給圧、ＥＧＲ率及び点火時期が取得されるとともに、これら状態量の各追従誤差の積分値がそれぞれ算出される。
【００３２】
また、上記ステップＳ１０２の処理の後は、現在運転条件の内分点計算が行われる（ステップＳ１０６）。ここでは、具体的には、上記ステップＳ１０２において特定された４つの端点のそれぞれと現在の運転条件の動作点との距離に応じた重みを反映させるための値として、上式（２）に示すスケジューリングパラメータρ１〜ρ４が算出される。
【００３３】
次に、上記ステップＳ１０４において取得された現在状態を用いて、上式（３）に示す４つ端点の入力変数ベクトルｕ１〜ｕ４が複数のコア１０のそれぞれで演算される（ステップＳ１０８）。ここでは、具体的には、入力変数ベクトルｕ１の演算がコア１０Ａに、入力変数ベクトルｕ２の演算がコア１０Ｂに、入力変数ベクトルｕ３の演算がコア１０Ｃに、そして入力変数ベクトルｕ４の演算がコア１０Ｄに、それぞれ割り当てられる。各コア１０では、割り当てられた演算がそれぞれ並列に実行される。
【００３４】
次に、空きコアが探索される（ステップＳ１１０）。ここでは、具体的には、エンジン回転数予測から各コア１０の演算負荷を予測し、最も演算負荷の低いコアが空きコアとして設定される。次に、現在の運転条件における最終制御入力として、動作点での入力変数ベクトルが算出される（ステップＳ１１２）。ここでは、具体的には、コア間で同期通信を行うことにより、上記ステップＳ１０８において並列に演算された入力変数ベクトルｕ１〜ｕ４、および上記ステップＳ１０６において算出されたスケジューリングパラメータρ１〜ρ４が、上記ステップＳ１１０において特定された空きコアに集められる。そして、空きコアでは、集められた入力変数ベクトルｕ１〜ｕ４、およびρ１〜ρ４を上式（３）に代入することにより、動作点における制御入力である入力変数ベクトルｕが算出される。
【００３５】
このように、本実施の形態の並列計算装置１００によれば、エンジン２の通常時において、演算負荷が高いとされる各端点での制御入力計算が複数のコア１０を用いて並列に演算される。これにより、演算負荷を有効に軽減することができるので、演算の高速化及び高精度化を図ることが可能となる。
【００３６】
次に、本実施の形態の並列計算装置の特徴的動作であるエンジン２の燃焼異常時の並列計算手法について説明する。図６は、本実施の形態の並列計算装置の燃焼異常時の計算手法について説明するための図である。この図に示すように、本実施の形態の並列計算装置１００では、エンジン２にノッキング等の燃焼異常等が発生したことを検知した場合に、複数のコア１０の中から選択された１つのコア（以下、「メインコア」と称する。図ではコア１０Ａが相当）において異常回避に影響の大きい操作量（ここでは点火時期ＳＡ）の計算が行われる。メインコア１０Ａでは、他のコアとの同期通信を行うことなく点火時期ＳＡを計算するためのタスクを順次実行し、算出された点火時期ＳＡをエンジン２へ出力する。一方、複数のコア１０の中の残りのコア（以下、「サブコア」と称する。図ではコア１０Ｂ〜１０Ｄが相当）では、異常回避が完了した直後に備えて、上述した通常運転時の並列演算と同様の手法を用いて全ての操作量が並列演算される。但し、異常回避が完了するまでは、演算された操作量がエンジン２へ出力されることはない。このような計算手法によれば、ノッキング等の燃焼異常が発生した場合に、異常回避のために優先すべき制御入力値がメインコア１０Ａによって高速に演算されるので、異常回避行動を迅速に実施することが可能となる。また、サブコア１０Ｂ〜１０Ｄでは、異常回避直後に備えて全ての制御入力値を演算して待機することとしているので、異常回避完了直後に通常時の制御入力値を迅速にエンジン２へ出力することが可能となる。
【００３７】
［実施の形態１の具体的処理］
次に、図７を参照して、本実施の形態１の具体的処理について説明する。図７は、本発明の実施の形態１において実行されるルーチンのフローチャートである。尚、図７に示すルーチンは、エンジン２の運転中に繰り返し実行されるものとする。
【００３８】
図７に示すルーチンでは、先ず、ノックセンサ等により検出された情報に基づいて、回避すべきノッキングの発生有無が判定される（ステップＳ２００）。その結果、ノッキングの発生がないと判定された場合には、通常モードが選択され、通常の並列計算が実行される（ステップＳ２０２）。ここでは、具体的には、図５に示すルーチンが呼び出されて実行される。
【００３９】
一方、上記ステップＳ２００において、ノッキングが発生したと判断された場合には、迅速なノッキング回避が必要と判断されて、異常回避のための並列計算（回避モード）が実行される（ステップＳ２０４）。ここでは、具体的には、図８に示すルーチンが呼び出されて実行される。図８は、回避モード時に実行されるルーチンのフローチャートである。図８に示すルーチンでは、先ず、現在の運転条件として、エンジン回転数とエンジン負荷とが検出される（ステップＳ３００）。次に、メインコア１０Ａでは、点火時期ＳＡが計算され（ステップＳ３０２）、演算結果がエンジン２に指示される（ステップＳ３０４）。
【００４０】
また、上記ステップＳ３００の処理の後は、上記ステップＳ３０２〜Ｓ３０４の処理と並行して、サブコア１０Ｂ〜１０Ｄにおいて全ての制御入力値の計算が行われる。具体的には、上記ステップＳ１０２〜Ｓ１１２と同様の処理がサブコア１０Ｂ〜１０Ｄを用いて実行される（ステップＳ３０６〜Ｓ３１６）。
【００４１】
上記ステップＳ３０４およびＳ３１６の処理の後には、ノックセンサ等により検出された情報に基づいて、ノッキングの回避が完了したか否かが判定される（ステップＳ３１８）。その結果、未だノッキングが回避されていないと判定された場合には、ステップＳ３００に移行して本ルーチンが再度実行される。一方、上記ステップＳ３１８においてノッキングが回避されたと判定された場合には、次のステップに移行し、上記ステップＳ３１６において計算された制御入力値がエンジン２へ出力される。
【００４２】
このように、本実施の形態の並列計算装置１００は、ノッキングによる燃焼異常時に異常回避のために優先すべき点火時期ＳＡの計算を１つのコア（メインコア１０Ａ）にて実行する。これにより、異常回避に必要な制御入力値を他のコアとの同期通信を行うことなく迅速に計算して出力することができる。
【００４３】
ところで、上述した実施の形態の並列計算装置１００では、ノッキングによる燃焼異常時に異常回避のために優先すべき点火時期ＳＡの計算を１つのコア（メインコア１０Ａ）にて実行することとしているが、この際の演算速度を更に高めるために演算周波数を変化させることとしてもよい。具体的には、例えば、駆動電圧を制御して演算周波数を変化させることのできる周波数・電圧制御ユニットを各コア１０に備えることとし、ノッキングによる燃焼異常時にメインコア１０Ａの周波数・電圧制御ユニットを操作して演算周波数を高めることとすればよい。これにより、異常回避の応答性を更に高めることが可能となる。
【００４４】
また、上述した実施の形態の並列計算装置１００では、複数のコア１０を用いた並列計算において、ポリトープ表現形式を用いたモデリング手法を採用しているが、他の演算手法により演算タスクを分配して並列計算を行うこととしてもよい。例えば、エンジン回転数に同期して使用コア数が増えるようにタスクを分配することとしてもよい。
【００４５】
また、上述した実施の形態１では、並列計算装置１００が、上記ステップＳ２０２の処理を実行することにより、第１の発明における「並列演算手段」が、上記ステップＳ２０４の処理を実行することにより、第１の発明における「異常時演算手段」が、それぞれ実現されている。
【００４６】
実施の形態２．
本発明の実施の形態２について図を参照して説明する。
【００４７】
［実施の形態２の特徴］
本実施の形態２の並列計算装置は、エンジン２に発生する回避すべき燃焼異常として、プレイグニッション（以下、「プレイグ」とも称する）が発生した場合の並列計算手法に特徴を有している。以下、フローチャートを参照して、本実施の形態２の具体的処理について説明する。図９は、本発明の実施の形態２において実行されるルーチンのフローチャートである。尚、図９に示すルーチンは、エンジン２の運転中に繰り返し実行されるものとする。
【００４８】
図９に示すルーチンでは、先ず、回避すべきプレイグの発生有無が判定される（ステップＳ４００）。その結果、プレイグの発生がないと判定された場合には、通常モードが選択され、通常の並列計算が実行される（ステップＳ４０２）。ここでは、具体的には、図５に示すルーチンが呼び出されて実行される。
【００４９】
一方、上記ステップＳ４００において、プレイグが発生したと判断された場合には、迅速なプレイグ回避が必要と判断されて、異常回避のための並列計算（回避モード）が実行される（ステップＳ４０４）。ここでは、具体的には、図１０に示すルーチンが呼び出されて実行される。図１０は、回避モード時に実行されるルーチンのフローチャートである。図１０に示すルーチンでは、先ず、現在の運転条件として、エンジン回転数とエンジン負荷とが検出される（ステップＳ５００）。次に、メインコア１０Ａでは、プレイグを回避するべく動作線（エンジン２の出力特性に基づいて予め定められた特性線）が修正される（ステップＳ５０２）。そして、修正後の動作線を実現するための制御入力値として、スロットル開度およびシフトが算出され（ステップＳ５０４）、算出された制御入力値がエンジン２に指示される（ステップＳ５０６）。
【００５０】
また、上記ステップＳ５００の処理の後は、上記ステップＳ５０２〜Ｓ５０６の処理と並行して、サブコア１０Ｂ〜１０Ｄにおいて全ての制御入力値の計算が行われる。具体的には、上記ステップＳ３０６〜Ｓ３１４と同様の処理が実行される（ステップＳ５０８〜Ｓ５１８）。
【００５１】
上記ステップＳ５０６およびＳ５１８の処理の後には、プレイグの回避が完了したか否かが判定される（ステップＳ５２０）。その結果、未だプレイグが回避されていないと判定された場合には、ステップＳ５００に移行して本ルーチンが再度実行される。一方、上記ステップＳ５２０においてプレイグが回避されたと判定された場合には、次のステップに移行し、上記ステップＳ５１８において計算された制御入力値がエンジン２へ出力される（ステップＳ５２２）。
【００５２】
このように、本実施の形態の並列計算装置１００は、プレイグによる燃焼異常時に異常回避のために優先すべき制御入力値の計算を１つのコア（メインコア１０Ａ）にて実行する。これにより、異常回避に必要な制御入力値を他のコアとの同期通信を行うことなく迅速に計算して出力することができる。
【００５３】
ところで、上述した実施の形態の並列計算装置１００では、プレイグによる燃焼異常時に異常回避のために優先すべき制御入力値の計算を１つのコア（メインコア１０Ａ）にて実行することとしているが、この際の演算速度を更に高めるために演算周波数を変化させることとしてもよい。具体的には、例えば、駆動電圧を制御して演算周波数を変化させることのできる周波数・電圧制御ユニットを各コア１０に備えることとし、プレイグによる燃焼異常時にメインコア１０Ａの周波数・電圧制御ユニットを操作して演算周波数を高めることとすればよい。これにより、異常回避の応答性を更に高めることが可能となる。
【００５４】
また、上述した実施の形態の並列計算装置１００では、複数のコア１０を用いた並列計算において、ポリトープ表現形式を用いたモデリング手法を採用しているが、他の演算手法により演算タスクを分配して並列計算を行うこととしてもよい。例えば、エンジン回転数に同期して使用コア数が増えるようにタスクを分配することとしてもよい。
【００５５】
また、上述した実施の形態２では、並列計算装置１００が、上記ステップＳ４０２の処理を実行することにより、第１の発明における「並列演算手段」が、上記ステップＳ４０４の処理を実行することにより、第１の発明における「異常時演算手段」が、それぞれ実現されている。
【００５６】
実施の形態３．
本発明の実施の形態３について図を参照して説明する。
【００５７】
［実施の形態３の特徴］
本実施の形態３の並列計算装置は、エンジン２に発生する回避すべき燃焼異常として、失火が発生した場合の並列計算手法に特徴を有している。以下、フローチャートを参照して、本実施の形態３の具体的処理について説明する。図１１は、本発明の実施の形態２において実行されるルーチンのフローチャートである。尚、図１１に示すルーチンは、エンジン２の運転中に繰り返し実行されるものとする。
【００５８】
図１１に示すルーチンでは、先ず、回避すべき失火の発生有無が判定される（ステップＳ６００）。その結果、失火の発生がないと判定された場合には、通常モードが選択され、通常の並列計算が実行される（ステップＳ６０２）。ここでは、具体的には、図５に示すルーチンが呼び出されて実行される。
【００５９】
一方、上記ステップＳ６００において、失火が発生したと判断された場合には、迅速な失火回避が必要と判断されて、異常回避のための並列計算（回避モード）が実行される（ステップＳ６０４）。ここでは、具体的には、図１２に示すルーチンが呼び出されて実行される。図１２は、回避モード時に実行されるルーチンのフローチャートである。
【００６０】
図１２に示すルーチンでは、先ず、現在の運転条件として、エンジン回転数とエンジン負荷とが検出される（ステップＳ７００）。次に、ステップＳ７０２〜Ｓ７０８では、メインコア１０Ａにおいて失火を回避するための制御目標値の計算が行われる。具体的には、先ず、エンジン負荷と所定の閾値とを比較することにより、発生した失火が軽負荷時のものか否かが判定される（ステップＳ７０２）。その結果、軽負荷時の失火であると判定された場合には、次のステップに移行し、スロットル開度を開側に変化させるともにトルクコンバータを調整するための制御入力値がエンジン２へ指示される（ステップＳ７０４）。一方、上記ステップＳ７０２において軽負荷失火ではないと判定された場合には、次のステップに移行し、空燃比Ａ／Ｆが目標通りか否かが判定される（ステップＳ７０６）。その結果、Ａ／Ｆが目標通りである場合には、点火時期ＳＡを進角させるための制御入力値がエンジン２へ指示され（ステップＳ７０８）、目標Ａ／Ｆが目標より燃料リッチである場合には、スロットル開度が開側に変化させるための制御入力値がエンジン２へ指示され（ステップＳ７１０）、目標Ａ／Ｆが目標より燃料リーンである場合には、燃料噴射量を増量されるための制御入力値がエンジン２へ指示される（ステップＳ７１４）。
【００６１】
また、上記ステップＳ７００の処理の後は、上記ステップＳ７０２〜Ｓ７１４の処理と並行して、サブコア１０Ｂ〜１０Ｄにおいて全ての制御入力値の計算が行われる。具体的には、上記ステップＳ３０６〜Ｓ３１４と同様の処理が実行される（ステップＳ７１４〜Ｓ７２４）。
【００６２】
上記ステップＳ７０４、Ｓ７０８、Ｓ７１０またはＳ７１２の処理およびステップＳ７２４の処理の後には、失火の回避が完了したか否かが判定される（ステップＳ７２６）。その結果、未だ失火が回避されていないと判定された場合には、ステップＳ７００に移行して本ルーチンが再度実行される。一方、上記ステップＳ７２６において失火が回避されたと判定された場合には、次のステップに移行し、上記ステップＳ７２４において計算された制御入力値がエンジン２へ出力される（ステップＳ７２８）。
【００６３】
このように、本実施の形態の並列計算装置１００は、失火による燃焼異常時に異常回避のために優先すべき制御入力値の計算を１つのコア（メインコア１０Ａ）にて実行する。これにより、異常回避に必要な制御入力値を他のコアとの同期通信を行うことなく迅速に計算して出力することができる。
【００６４】
ところで、上述した実施の形態の並列計算装置１００では、失火による燃焼異常時に異常回避のために優先すべき制御入力値の計算を１つのコア（メインコア１０Ａ）にて実行することとしているが、この際の演算速度を更に高めるために演算周波数を変化させることとしてもよい。具体的には、例えば、駆動電圧を制御して演算周波数を変化させることのできる周波数・電圧制御ユニットを各コア１０に備えることとし、失火による燃焼異常時にメインコア１０Ａの周波数・電圧制御ユニットを操作して演算周波数を高めることとすればよい。これにより、異常回避の応答性を更に高めることが可能となる。
【００６５】
また、上述した実施の形態の並列計算装置１００では、複数のコア１０を用いた並列計算において、ポリトープ表現形式を用いたモデリング手法を採用しているが、他の演算手法により演算タスクを分配して並列計算を行うこととしてもよい。例えば、エンジン回転数に同期して使用コア数が増えるようにタスクを分配することとしてもよい。
【００６６】
また、上述した実施の形態１−３では、燃焼異常の態様として、ノッキング、プレイグおよび失火を例に説明したが、他の燃焼異常が発生した場合にも本発明の計算手法を適用することができる。
【００６７】
また、上述した実施の形態１では、並列計算装置１００が、上記ステップＳ６０２の処理を実行することにより、第１の発明における「並列演算手段」が、上記ステップＳ６０４の処理を実行することにより、第１の発明における「異常時演算手段」が、それぞれ実現されている。
【符号の説明】
【００６８】
２  エンジン
１０  コア
１００  並列計算装置
【図１】
2014105678.tif 000006
【図２】
2014105678.tif 000007
【図３】
2014105678.tif 000008
【図４】
2014105678.tif 000009
【図５】
2014105678.tif 000010
【図６】
2014105678.tif 000011
【図７】
2014105678.tif 000012
【図８】
2014105678.tif 000013
【図９】
2014105678.tif 000014
【図１０】
2014105678.tif 000015
【図１１】
2014105678.tif 000016
【図１２】
2014105678.tif 000017