JP2021105368A - エンジン制御装置 - Google Patents
エンジン制御装置 Download PDFInfo
- Publication number
- JP2021105368A JP2021105368A JP2019237005A JP2019237005A JP2021105368A JP 2021105368 A JP2021105368 A JP 2021105368A JP 2019237005 A JP2019237005 A JP 2019237005A JP 2019237005 A JP2019237005 A JP 2019237005A JP 2021105368 A JP2021105368 A JP 2021105368A
- Authority
- JP
- Japan
- Prior art keywords
- core
- processing
- input
- executed
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
- Safety Devices In Control Systems (AREA)
Abstract
【課題】入力処理と出力処理とが同じコアで処理されると、エンジン回転数が高い場合に、低い優先度の一部の処理で処理抜けが発生する。【解決手段】エンジン制御装置100が備えるCPU110は、少なくとも2つ以上のコアを有する。CPU110は、入力処理と、アプリケーションと、出力処理とを、コアごとに割り当て、入力処理、アプリケーション及び出力処理を一連の処理として異なる実行周期でコアに逐次実行させるOS150を動作させる。OS150が、少なくとも2つ以上のコアから選択した一のコアに、所定の実行周期の入力処理を実行させ、一のコアとは異なる他のコアに、一のコアで実行した入力処理と同じ実行周期の出力処理を実行させる。【選択図】図2
Description
本発明は、エンジン制御装置に関する。
自動車のエンジン制御装置(ECU:Engine Control Unit)には、様々なセンサ、アクチュエータ、及びデバイス等が接続される。これらの部品を適切に制御し、エンジンを効率よく動作させるためには、エンジン制御装置がセンサから入力した情報に基づいて、各アクチュエータやデバイスを動作させる指令を所定のタイミングで発信することが必要である。
このため、エンジン制御装置は、エンジン制御装置内に設けられたマイクロコンピュータにより、各センサからの入力処理(「センサ入力」と略記)、制御アプリケーションの処理(「アプリケーション」と略記)、アクチュエータへの出力処理(「アクチュエータ出力」と略記)の各演算が、所定時間内に確実に終了するように構成されたオペレーティングシステム(OS:Operating System)を採用している。
しかし、センサ入力やアクチュエータ出力に対して要求される動作タイミングは処理ごとに異なる。また、エンジン制御装置で実行される処理には、エンジンのクランク回転軸が所定の角度まで回転したタイミングで実行されるような回転に依存する実行周期を持つ処理もある。このため、オペレーティングシステムは、マイクロコンピュータで実行される各処理の演算順序を適切に管理することが必要である。
オペレーティングシステムが演算順序を管理するための技術として、例えば、特許文献1に開示された技術が知られている。この特許文献1には、「割り込み要求が複数発生する場合に、割り込み要求の発生に応じて割り込み処理の起動要求を記憶する記憶手段と、記憶手段に記憶された起動要求に基づいて、割り込み処理を順次実行する実行手段と、を備えたえたことを特徴とする電子制御装置」について記載されている。特許文献1に提案されたオペレーティングシステムでは、演算周期が異なるタスクの優先度を決定しておき、優先度の高いエンジンの回転に同期した処理の割込みが発生したときに、他の低い優先度の実行周期の処理を待たせてエンジン制御を行うようにしている。
近年では、環境性能、燃費向上、予防安全技術等の要求から、エンジン制御装置で処理しなければならない演算の量は日々増加している。そのため、従来のマイクロコンピュータの性能では、所定時間内に決められた演算を終了できないような処理を実行することが必要となる。ここで、マイクロコンピュータで実行される処理に必要な演算が所定時間内に終了しないことを「処理抜け」と呼ぶ。
処理抜けの発生を防止するためには、より高性能なマイクロコンピュータを搭載すればよい。しかし、高性能なマイクロコンピュータは高価なため、このマイクロコンピュータを搭載したエンジン制御装置の価格も高くなってしまい、商品性の低下が避けられない。このため、処理抜けの発生を防止しうる解決策として、1つのマイクロコンピュータに2つ以上の演算コア(以下、「コア」と略称)を備えるマルチコア構成のマイクロコンピュータを採用したエンジン制御装置が提供されるようになった。
マルチコア構成のマイクロコンピュータを採用したエンジン制御装置に関して、特許文献2に開示された技術が知られている。この特許文献2には、「1つの制御機能についてのアプリケーション部とプラットフォーム部とが異なるコアに存在しうる場合に、アプリケーション部及びプラットフォーム部のいずれか一方を、他方が実装されているコアに動的に移動させることができる。」と記載されている。特許文献2に開示された技術により、エンジン制御装置において、アクチュエータの応答性が高まる場合には、オペレーティングシステムが制御アプリケーションの一部をアイドル状態のコアに移動させることで、コアの演算負荷が低減されると考えられていた。
ところで、上述した特許文献1及び2に開示された制御装置では、マイクロコンピュータがシングルコア又はマルチコアのいずれで構成されていても、センサ入力とアクチュエータ出力の各処理が同じコアで処理される。そのため、エンジン回転数が高くなると、エンジン回転に同期した処理の割込みが増加することによって、優先度が低い一部の処理で処理抜けが発生する可能性がある。
処理抜けが発生すると、例えば、エンジン制御装置が正しい燃料噴射量を計算できず、適切なエンジン制御ができなくなる。エンジン制御装置がエンジンを適切に制御できなくなると、燃費や排ガス成分の悪化が懸念される。さらにエンジン制御装置が演算した燃料噴射タイミングがずれると、エンジンが停止する可能性もある。そのため、エンジン制御装置においては、処理抜けが発生しないようにマイクロコンピュータの構成や処理を設計することが極めて重要である。
本発明はこのような状況に鑑みて成されたものであり、マルチコア構成としたマイクロコンピュータを備えるエンジン制御装置において、異なる実行周期で逐次実行される演算の処理抜けを未然に防止可能なエンジン制御装置を提供することを目的とする。
本発明に係るエンジン制御装置は、エンジンに取り付けられる入力デバイスによりエンジンの情報を取得し、エンジンに取り付けられる出力デバイスによりエンジンの動作を制御するエンジン制御装置であって、少なくとも2つ以上のコアを有するマイクロコンピュータを備える。
マイクロコンピュータは、入力デバイスから入力した情報を処理する入力処理と、入力処理の結果に基づいて、出力デバイスの動作を決定するための演算を行うアプリケーションと、アプリケーションで演算された値を指令値として、出力デバイスを動作させる指令を出力デバイスに出力する出力処理とを、コアごとに割り当て、入力処理、アプリケーション及び出力処理を一連の処理として異なる実行周期でコアに逐次実行させるオペレーティングシステムを動作させる。オペレーティングシステムが、少なくとも2つ以上のコアから選択した一のコアに、所定の実行周期の入力処理を実行させ、一のコアとは異なる他のコアに、一のコアで実行した入力処理と同じ実行周期の出力処理を実行させる。
マイクロコンピュータは、入力デバイスから入力した情報を処理する入力処理と、入力処理の結果に基づいて、出力デバイスの動作を決定するための演算を行うアプリケーションと、アプリケーションで演算された値を指令値として、出力デバイスを動作させる指令を出力デバイスに出力する出力処理とを、コアごとに割り当て、入力処理、アプリケーション及び出力処理を一連の処理として異なる実行周期でコアに逐次実行させるオペレーティングシステムを動作させる。オペレーティングシステムが、少なくとも2つ以上のコアから選択した一のコアに、所定の実行周期の入力処理を実行させ、一のコアとは異なる他のコアに、一のコアで実行した入力処理と同じ実行周期の出力処理を実行させる。
本発明によれば、少なくとも2つ以上のコアから選択した一のコアに入力処理を実行させ、一のコアとは異なる他のコアに出力処理を実行させるため、異なる実行周期で逐次実行される演算の処理抜けを未然に防止することが可能となる。
上記した以外の課題、構成及び効果は、以下の実施の形態の説明により明らかにされる。
上記した以外の課題、構成及び効果は、以下の実施の形態の説明により明らかにされる。
以下、本発明を実施するための形態について、添付図面を参照して説明する。本明細書及び図面において、実質的に同一の機能又は構成を有する構成要素については、同一の符号を付することにより重複する説明を省略する。
<ECUの概略構成例>
始めに、本発明の一実施の形態に係るエンジン制御装置の構成例及び動作例について説明する。
図1は、ECU100の概略構成例を示すブロック図である。
始めに、本発明の一実施の形態に係るエンジン制御装置の構成例及び動作例について説明する。
図1は、ECU100の概略構成例を示すブロック図である。
エンジン制御装置(以下、「ECU」と記載)100は、エンジン(不図示)の動作を制御するために自動車に搭載される。エンジン制御装置(ECU100)は、エンジンに取り付けられる入力デバイス(入力デバイス201,202)によりエンジンの情報を取得し、エンジンに取り付けられる出力デバイス(出力デバイス301,302)によりエンジンの動作を制御する。
このため、ECU100には、複数の入力デバイス201,202と、複数の出力デバイス301,302とが接続される。入力デバイス201,202は、例えば、エンジンの状態量を検出可能な酸素センサ、クランク角度センサ等のセンサである。出力デバイス301,302は、点火プラグ、スロットル弁等のアクチュエータである。ECU100は、入力デバイス201,202から入力した値に基づいて所定の演算を行って得た結果を出力デバイス301,302に出力することでエンジンを制御している。
ECU100は、マイクロコンピュータの一例として構成されるCPU110、RAM120及びROM130を備える。マイクロコンピュータの一例としては、MPU(Micro Processing Unit)等であってもよい。マイクロコンピュータ(CPU110)は、少なくとも2つ以上のコア(コア111,112)を有する。CPU110では、コア(コア111,112)ごとに実行させる処理を割り当てるオペレーティングシステム(図2に示すOS150)が動作する。本実施の形態に係るCPU110は、2つのコア111、コア112を持つものとする。以下の説明では、コア111を「コア1」、コア112を「コア2」と呼ぶ。
<ECUの動作例>
図2は、ECU100内の各部が連携して動作する様子を示すブロック図である。
プログラム140及びOS150は、ROM130に記憶される。エンジンの動作時には、CPU110がROM130から読み出して動作させるOS150により、プログラム140がコア1又はコア2のいずれかで実行されるように制御される。
図2は、ECU100内の各部が連携して動作する様子を示すブロック図である。
プログラム140及びOS150は、ROM130に記憶される。エンジンの動作時には、CPU110がROM130から読み出して動作させるOS150により、プログラム140がコア1又はコア2のいずれかで実行されるように制御される。
プログラム140は、例えば、入力デバイス(入力デバイス201,202)から入力した情報を処理する入力処理と、入力処理の結果に基づいて、次のアクチュエータ動作として、出力デバイス(出力デバイス301,302)の動作を決定するための演算を行うアプリケーションと、アプリケーションで演算された値を指令値として、出力デバイス(出力デバイス301,302)を動作させる指令を出力デバイス(出力デバイス301,302)に出力する出力処理とを含み、各処理の処理内容を記憶する。マイクロコンピュータ(CPU110)は、入力処理と、アプリケーションと、出力処理とを、コア(コア1,2)ごとに割り当て、入力処理、アプリケーション及び出力処理を一連の処理として異なる実行周期でコア(コア1,2)に逐次実行させるOS150を動作させる。
そして、本実施の形態に係るOS150は、少なくとも2つ以上のコア(コア1,2)から選択した一のコアに所定の実行周期の入力処理を実行させ、一のコアとは異なる他のコアに、一のコアで実行した入力処理と同じ実行周期の出力処理を割り当てて入力処理を実行させる。CPU110が2つのコアを持つ場合、例えば、一のコアをコア1、他のコアをコア2としてよい。または、一のコアをコア2、他のコアをコア1としてもよい。OS150が、各コアに入力処理及び出力処理を割り当てる処理の詳細は後述する図3と図4にて説明する。
OS150で呼び出されたプログラム140の処理は、OS150が割り当てたコアにて実行され、演算が行われる。コア1又はコア2は、それぞれ共通のRAM120、ROM130にアクセスしてパラメータ等を参照しながらプログラム140の処理を実行し、RAM120内に格納される変数の書き換え等を行う。
図2の下側には、タスクテーブル160の記載内容が示される。OS150は、エンジン制御ソフトウェア(プログラム140)の各処理の実行順序と各処理の実行周期、演算するコアが予め設計されたタスクテーブル160を持つ。タスクテーブル160に記載される処理を「タスク」と呼ぶ。各処理は、タスクと呼ばれる実行単位でコアごとに実行される。例えば、タスクテーブル160には、入力処理1,2(図中にInput1,2と記載)、アプリケーション1,2(図中にApplication1,2と記載)、出力処理1,2(図中にOutput1,2と記載)ごとに、タスクの実行周期、タスクを実行するコア1,2が規定されている。また、入力処理、アプリケーション及び出力処理は、所定の時間で実行される実行周期を持つ。例えば、入力処理、アプリケーション及び出力処理は、2ms周期、10ms周期、REF周期(エンジンの回転周期)のいずれかの実行周期で各コアにより実行される。
開発者がタスクテーブル160を設計する際に、各々の処理に要する時間が予め分かっている場合には、エンジン回転に同期して実行される処理が、任意のエンジン回転数でどのくらいの時間を要するかを見積もっておく。この見積もりにより、OS150は、コア1又はコア2に処理を割り当てる前に、コア1又はコア2で処理抜けが発生するか否かを判断できる。
OS150は、タスクテーブル160を参照して、各処理の実行順、処理を実行させるコアを選択し、タスクに割り当てた各処理をコアに逐次実行させる。この際、オペレーティングシステム(OS150)は、入力処理、アプリケーション及び出力処理の実行周期に対して設定される優先度に応じて、優先度が高い実行周期の入力処理、アプリケーション及び出力処理を優先的に実行させる。このため、OS150は、処理抜けが発生するコアから別のコアに処理を移動させて処理を実行させることで、低優先度の実行周期の処理が処理抜けすることを防止できる。
<CPU処理負荷の比較>
図3は、従来の制御方法を用いた処理のCPU処理負荷と、本実施の形態に係る制御方法を用いた処理のCPU処理負荷とを比較した図である。CPU110(マルチコア)が処理を行ったときにCPU110の各コアにかかる処理負荷を「CPU処理負荷」と呼ぶ。ここでは、1つのCPU110が搭載するマルチコア(コア1,2)の利用を想定する。
図3は、従来の制御方法を用いた処理のCPU処理負荷と、本実施の形態に係る制御方法を用いた処理のCPU処理負荷とを比較した図である。CPU110(マルチコア)が処理を行ったときにCPU110の各コアにかかる処理負荷を「CPU処理負荷」と呼ぶ。ここでは、1つのCPU110が搭載するマルチコア(コア1,2)の利用を想定する。
図3のグラフ(1)〜(3)の上部には、一点鎖線で表す処理抜け発生ラインが示される。入力処理、アプリケーション及び出力処理の全処理が終了した時点におけるコアごとのCPU処理負荷が処理抜け発生ラインより低ければ、そのコアを搭載したCPUでは正常に処理が終了している。しかし、いずれかのコアで全処理が所定時間内に終了しなかったため、CPU処理負荷が処理抜け発生ラインを超えることがある。処理抜け発生ラインを超えた部分の処理は正常に終了していない。
図3のグラフ(1)は、OS150が、特許文献2に開示された制御方法を用いてコア1,2に演算を行わせた場合におけるCPU処理負荷の例を示す図である。グラフ(1)に示すように、コア1にて入力処理、アプリケーション、出力処理が実行される。一方、コア2では、コア1の入力処理の結果の参照、及びコア1の出力処理で参照する値を演算するためのアプリケーションの一部又は全部が実行される。グラフ(1)に示すように、ECU100で行われる処理が少ない場合は、CPU110の処理負荷が低いので、処理抜けが発生しない。
ところで、前述したとおり、近年はECU100で実行する処理の演算量が増加している。このため、本実施の形態に係るマイクロコンピュータは、従来のマイクロコンピュータの性能では処理しきれないほどの演算をしなければならない。ここで、図3のグラフ(2)を参照して、ECU100で実行する処理の演算量が増加したときに行われる従来の制御方法の例を説明する。
図3のグラフ(2)は、ECU100で実行する処理の演算量が増加した場合に、OS150が、従来の制御方法(例えば、特許文献2に開示された制御方法)を用いてコア1,2に処理の演算を行わせた場合におけるCPU処理負荷の例を示す図である。
コア1のCPU処理負荷が高まると、例えば、コア1で実行される一部の処理(例えば、出力処理)が処理抜け発生ラインを超え、処理抜け発生ラインを超えた処理の処理抜けが発生する。処理抜けが発生すると、ECU100が制御するアクチュエータに対して、アクチュエータを動作させるための正常な値が出力されない。このため、ECU100が適切にエンジンを制御することが難しくなる恐れがある。
そこで、本実施の形態に係るOS150は、あるコアで実行されると処理抜けが発生するような出力処理を、他のコアに移動させる制御方法を用いて、各コアに処理を割り当てる。そこで、図3のグラフ(3)を参照して、ECU100で実行する処理の演算量が増加したときに行われる本実施の形態に係る制御方法の例を説明する。
図3のグラフ(3)は、エンジンが高回転時に、OS150が本実施の形態に係る制御方法を用いてコア1,2に処理を行わせた場合におけるCPU処理負荷の例を示す図である。
本実施の形態に係る制御方法では、予めタスクテーブル160に処理の実行順と、処理を実行するコアとを規定しておくことで、OS150は、入力処理と出力処理を異なるコアで実行させることが可能である。そこで、OS150は、事前にコア1にて処理抜けが発生することが判明している出力処理をコア2に移動する。そして、OS150は、コア2にてアプリケーションの実行後、コア2のCPU処理負荷が処理抜け発生ラインに達するまでの空き部分で、コア1から移動した出力処理を実行させる。このため、コア1,2のCPU処理負荷は、共に処理抜け発生ラインを超えない。なお、OS150は、コア2に実行させるアプリケーションの実行前に生じた空き部分でコア1の入力処理を実行させ、コア1に出力処理を実行させてもよい。
次に、エンジンが高回転時に処理抜けが発生する様子について、図4を参照して説明する。
図4は、従来の制御方法でコアが処理を実行する様子と、本実施の形態に係る制御方法でコアが処理を実行する様子とを比較可能に表示した図である。図4のチャート(1)〜(5)には、入力処理、アプリケーション及び出力処理の実行順序が示されている。
図4は、従来の制御方法でコアが処理を実行する様子と、本実施の形態に係る制御方法でコアが処理を実行する様子とを比較可能に表示した図である。図4のチャート(1)〜(5)には、入力処理、アプリケーション及び出力処理の実行順序が示されている。
上述したようにECU100には様々なセンサ入力、アクチュエータ出力が接続される。そして、ECU100に搭載されたCPUのコアで実行される処理には、入力処理、アプリケーション、出力処理がある。これらの処理は、エンジン回転に同期したタイミング(REF)で実行される入力処理、アプリケーション、出力処理、2ms毎に実行される入力処理、アプリケーション、出力処理と、10ms毎に実行される入力処理、アプリケーション、出力処理とがあり、所定の実行周期で必ず1回実行されるように構成されている。例えば、入力デバイス201に対する入力処理、出力デバイス301に対する出力処理の実行周期は2msとする。また、入力デバイス202に対する入力処理、出力デバイス302に対する出力処理の実行周期は10msとする。
これら3種類の実行周期(REF、2ms、10ms)の処理は、優先度を持つ。例えば、エンジン回転に同期したタイミング(REF)で行われる演算の優先度が一番高く、続いて2msの実行周期で行われる演算、最後に10msの実行周期で行われる演算の順に優先度が決まっている。あるコアで異なる複数の実行周期の処理が逐次実行される場合、低い優先度の処理は、高い優先度の処理によってしばしば中断される。ただし、低い優先度の処理であっても、コアが必ず所定の時間内に1回は実行する必要がある。
これらの事項を前提として、図4のチャート(1)〜(5)を順に説明する。なお、図4のチャート(1)、(2)は、シングルコアで構成されたCPUのコア1が処理を演算する様子を示し、図4のチャート(3)〜(5)は、マルチコアで構成されたCPUのコア1,2が処理を演算する様子を示す。
<チャート(1)>
始めに、エンジンが低回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1に処理を実行させる様子について、図4のチャート(1)を参照して説明する。
図4のチャート(1)は、シングルコアで構成されたCPUで稼働するオペレーティングシステムが、特許文献1に開示された制御方法を用いてコア1に演算させる様子を示す図である。
始めに、エンジンが低回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1に処理を実行させる様子について、図4のチャート(1)を参照して説明する。
図4のチャート(1)は、シングルコアで構成されたCPUで稼働するオペレーティングシステムが、特許文献1に開示された制御方法を用いてコア1に演算させる様子を示す図である。
上述したように特許文献1には、演算周期が異なるタスクの優先度を決定しておき、エンジンの回転に同期した高い優先度の処理の割込みが発生したときに、他の低い優先度の実行周期の処理を待たせることでエンジン制御を行うようにしたオペレーティングシステムに関する技術が提案されている。
例えば、エンジン回転数が3000rpmの場合、オペレーティングシステムの制御により、コア1は、10ms中に1回のエンジン回転に同期した実行周期(REF)の演算を実施する。そこで、チャート(1)に示すように、コア1は、エンジン回転数が3000rpmの時のエンジン回転に同期した入力処理、アプリケーション及び出力処理を10ms以内で1回実行する。また、コア1は、0ms〜2msの区間では実行周期が2msの処理と、実行周期が10msの処理を実行する。
ただし、上述したように実行周期ごとに処理の優先度が決まっている。このため、実行周期が2msの処理と実行周期が10msの処理の開始が同じであれば、オペレーティングシステムは、優先度が高い実行周期が2msの処理を優先してコア1に実行させる。そこで、チャート(1)の0ms〜2msの区間において、コア1は、実行周期が2msの処理を0msで開始し、実行周期が2msの処理が終了した後、実行周期が10msの処理を開始する。
また、チャート(1)の2ms〜6msの区間において、オペレーティングシステムは、実行周期が10msの処理を実行中のコア1に対して、エンジンの回転に同期した処理と、実行周期が2msの処理とを割り込ませ、実行周期が10msの処理を頻繁に中断させる。このようにオペレーティングシステムは、たとえ処理の実行中であっても、実行中の処理より優先度が高い処理が登録された場合には、コア1が実行中の処理を中断して、優先度が高い処理をコア1に先に実行させる。
なお、チャート(1)の8ms〜10msの区間に注目すると、実行周期が10msの処理の終了タイミングは、0ms〜10msの範囲内に収まっている。このことから、実行周期が10msの処理の処理抜けは発生していないと言える。このため、エンジンが低回転時には、シングルコアで構成されたCPUであってもECUが正しく動作することを保証できる。
<チャート(2)>
次に、エンジンが高回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1に処理を実行させる様子について、図4のチャート(2)を参照して説明する。
図4のチャート(2)は、エンジン回転数が増加した場合に、シングルコアで構成されたCPUで稼働するオペレーティングシステムが、エンジン回転に同期した処理を10ms以内に複数回実行させるコア1の処理の様子を示す図である。
次に、エンジンが高回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1に処理を実行させる様子について、図4のチャート(2)を参照して説明する。
図4のチャート(2)は、エンジン回転数が増加した場合に、シングルコアで構成されたCPUで稼働するオペレーティングシステムが、エンジン回転に同期した処理を10ms以内に複数回実行させるコア1の処理の様子を示す図である。
例えば、エンジン回転数が6000rpmまで増加し、10ms中に2回のエンジン回転に同期した実行周期の演算が実施される場合においても、コア1は、実行周期が10msの演算は10ms以内に終了している必要がある。しかし、コア1により、実行周期が10msの演算が実行されている間に、実行周期がエンジン回転に同期した処理と、実行周期が2msの処理による割込みが発生したとする。このように優先度が高い処理の割り込みが発生すると、コア1における実行周期が10msの出力処理が、10ms以内に終了できない。つまり、10msで実行される処理(例えば、出力処理)が処理抜けする。このような場合、コア1では実行周期が10msの処理が正しく終了していないので、ECUの正しい動作が保証されない。
<チャート(3)>
次に、エンジンが低回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1,2に処理を実行させる様子について、図4のチャート(3)を参照して説明する。
図4のチャート(3)は、図4のチャート(1)で示したシングルコアのCPUを搭載したECUで実施される制御方法を基本として、マルチコアで構成されたCPUで稼働するオペレーティングシステムが、2種類のアプリケーションをコア1,2に割り当てた時の処理の様子を示す図である。
次に、エンジンが低回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1,2に処理を実行させる様子について、図4のチャート(3)を参照して説明する。
図4のチャート(3)は、図4のチャート(1)で示したシングルコアのCPUを搭載したECUで実施される制御方法を基本として、マルチコアで構成されたCPUで稼働するオペレーティングシステムが、2種類のアプリケーションをコア1,2に割り当てた時の処理の様子を示す図である。
チャート(3)は、エンジン回転数が3000rpmである場合に、実行周期がREF、2ms、10msのタイミングで、各々の入力処理、アプリケーション、出力処理がコア1,2で実行される様子を表している。チャート(3)により、実行周期が10msで実行されるアプリケーションの一部をコア2にて実行し、コア2で実行されたアプリケーションの演算結果を、コア1で実行する出力処理が参照するような流れが示される。
チャート(3)に示すように、コア1にて演算された実行周期が10msの処理(アプリケーション)の終了タイミングは10ms以内に収まっているため、実行周期が10msの演算の処理抜けは発生していない。
なお、チャート(3)と、以下に説明するチャート(4)、(5)において、コア2で実行周期が10msのアプリケーションが実行されている間、コア1でも、実行周期が10msで実行されるアプリケーションが断続的に実行されている。ただし、コア1、コア2で実行されるアプリケーションの処理内容はそれぞれ異なるものとする。例えば、コア1で実行されるアプリケーションは、エンジン制御以外の処理として、他モジュールとの通信処理を行うものとする。一方、コア2で実行されるアプリケーションは、エンジンの空気量や燃料の噴射量を演算する処理を行うものとする。そして、コア1,2で実行されるアプリケーションは、共に実行周期が10msの入力処理の結果を参照する。また、実行周期が10msの出力処理は、コア1,2で実行されるアプリケーションの演算結果を参照する。
<チャート(4)>
次に、エンジンが高回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1,2に処理を実行させる様子について、図4のチャート(4)を参照して説明する。
図4のチャート(4)は、エンジン回転数が増加した場合に、マルチコアで構成されたCPUで稼働するオペレーティングシステムが従来の制御方法を用いて、エンジン回転に同期した処理を10ms以内に複数回実行させるコア1,2の処理の様子を示す図である。ここでは、エンジン回転数が6000rpmにて10ms中に2回のエンジン回転に同期した実行周期の演算がコア1,2にて実施される。
次に、エンジンが高回転時に、従来のオペレーティングシステムが、従来の制御方法を用いてコア1,2に処理を実行させる様子について、図4のチャート(4)を参照して説明する。
図4のチャート(4)は、エンジン回転数が増加した場合に、マルチコアで構成されたCPUで稼働するオペレーティングシステムが従来の制御方法を用いて、エンジン回転に同期した処理を10ms以内に複数回実行させるコア1,2の処理の様子を示す図である。ここでは、エンジン回転数が6000rpmにて10ms中に2回のエンジン回転に同期した実行周期の演算がコア1,2にて実施される。
コア1で実行される実行周期が10msの処理は、10ms以内に終了している必要がある。しかし、コア1では、実行周期が10msの処理よりも優先度が高い実行周期がエンジン回転に同期した処理と、実行周期が2msの処理とが割込む。このため、コア1では、実行周期が10msの処理の演算を10ms以内に終了できておらず、処理抜けが発生している。
<チャート(5)>
次に、エンジンが高回転時に、本実施の形態に係るOS150が、本実施の形態に係る制御方法を用いてコア1,2に処理を実行させる様子について、図4のチャート(5)を参照して説明する。
図4のチャート(5)は、エンジン回転数が増加した場合に、マルチコアで構成されたCPU110で稼働するOS150が、本実施の形態に係る制御方法を用いて、エンジン回転に同期した処理を10ms以内に複数回実行させるコア1,2の処理の様子を示す図である。
図4のチャート(5)は、エンジン回転数が増加した場合に、マルチコアで構成されたCPU110で稼働するOS150が、本実施の形態に係る制御方法を用いて、エンジン回転に同期した処理を10ms以内に複数回実行させるコア1,2の処理の様子を示す図である。
上述したチャート(4)に示した従来の制御方法では、実行周期が10msの出力処理がコア1で実行されていたので、出力処理の処理抜けが発生していた。しかし、エンジンが高回転となった場合においても、優先度が高い実行周期の処理割込みによる、低優先度の実行周期の処理抜けを防止することが必要である。そこで、本実施の形態に係るECU100がエンジンを制御中にエンジンが高回転となった場合には、マルチコアで構成されたCPU110が、各々の実行周期で実行される入力処理と出力処理を異なるコアで実行させる。
OS150は、本実施の形態に係る制御方法を用いてコア1,2に処理を割り当てた結果、コア1は、実行周期が10msの入力処理を実行し、コア2は、実行周期が10msの出力処理を実行する。また、チャート(5)に示すように、チャート(4)のコア1で実行されるアプリケーションの一部についてもコア2で実行される。このようにCPU110は、あるコアで実行する処理(例えば、アプリケーション)の一部を異なるコアで実行することによっても、あるコアで実行する処理の終了時刻を前倒しすることができる。
このため、従来の制御方法が用いられたチャート(4)では、実行周期が10msの処理の処理抜けが発生したのに対して、本実施の形態に係る制御方法が用いられたチャート(5)では実行周期が10msの処理が10ms以内で終了しており、処理抜けが発生していない。なお、チャート(4)のコア1で実行されるアプリケーションの一部は、コア1で実行されたままであっても、コア1,2で処理抜けは発生しない。
このように、少なくとも2つ以上のコアを持つCPU110を搭載したECU100で、OS150は、入力処理と出力処理を別々のコアにて実行するように制御する。このため、エンジンが高回転となった場合においても、優先度が低い処理にて実行されるセンサ入力処理、アプリケーション、アクチュエータ出力処理が、優先度が高いセンサ入力処理、アプリケーション、アクチュエータ出力処理の割込みによって処理抜けすることを防止できる。
<オペレーティングシステムの処理の例>
次に、本実施の形態に係るOS150によって行われる、2つのコアにタスクを割り当てて、各コアにタスクを実行させる処理の例について、図5と図6を参照して説明する。
図5と図6は、本実施の形態に係るECU100で稼働するOS150の処理の例を示すフローチャートである。
次に、本実施の形態に係るOS150によって行われる、2つのコアにタスクを割り当てて、各コアにタスクを実行させる処理の例について、図5と図6を参照して説明する。
図5と図6は、本実施の形態に係るECU100で稼働するOS150の処理の例を示すフローチャートである。
図5と図6にて説明する予約タスクの優先度は、実行周期に基づいて決定される。例えば、エンジン回転に同期した処理を実行するタスクの優先度が最も高く、次に実行周期が早い順(2ms、10msの順)にタスクの優先度が高いものとする。以後、図2のブロック図と、図5及び図6のフローチャートを用いて、各ステップの処理の詳細を説明する。なお、以下の説明では、OS150が、タスクテーブル160を参照して、コアに登録したタスクを「予約タスク」と呼ぶ。また、コアが、予約タスクとして登録されたタスクに割り当てられた処理を実行することを「タスクを実行する」と呼ぶ。また、コアがタスクを実行すると、タスクに割り当てられた処理の演算が実行されるため、コアがタスクを実行することを「コアがタスクを演算する」とも呼ぶ。
始めに、OS150は、タスクテーブル160に記載されたタスクの逐次実行を開始する。この際、OS150は、タスクテーブル160を参照し、どのコアにどのタスクを実行させるかを確認する。例えば、OS150は、タスクテーブルのN番目に記載されたタスクAを演算するコアが、コア1であるか否かを確認する(S1)。
OS150は、タスクAを演算するコアがコア1である場合(S1のYES)、実行させるタスクを予約タスクとしてコア1に登録する(S2)。一方、OS150は、実行させるタスクAを演算するコアがコア2である場合(S1のNO)、ステップS11へ進む。
次に、OS150は、コア1に登録した予約タスクが実行できる状態にあるかを評価する。この処理では、OS150が、コア1に登録した実行予定の予約タスクが、コア2にてコア1と同じ実行周期の処理で行われる演算を待つ必要があるか否かを判断する(S3)。
例えば、図4のチャート(5)では、コア2で実行される実行周期が10msのアプリケーションが、コア1で実行される実行周期が10msの入力処理の演算結果を参照することが示される。この場合、コア2で実行される実行周期が10msのアプリケーションは、コア1で実行される実行周期が10msの入力処理が終了するまで待機する。そこで、OS150がコア1に登録した実行予定の予約タスクが、コア2の同じ実行周期の演算を待つ必要があれば(S3のYES)、ステップS1に戻る。
一方、コア1に登録した予約タスクの実行に際して、コア2で実行される同じ実行周期のタスクの演算を待つ必要がなければ(S3のNO)、OS150は、ステップS4に移行する。
また、コア1の実行予定の予約タスクが、コア1の演算結果を使用する場合、OS150は、ステップS3にて、コア1の演算結果を利用できる状態であるか否かも判定する。コア1の演算結果を利用できる状態とは、例えば、コア1の入力処理が終了し、入力処理の結果をアプリケーションが利用できる状態のことである。コア1の演算結果を利用できる状態であればステップS4へ移行し、利用できない状態であればステップS1へ移行し、OS150は、次のタスクを実行する準備を行う。
ステップS3のNO判定の後、OS150は、コア1で現在実行中のタスクがあるか否かを確認する(S4)。OS150は、現在、コア1にて実行中のタスクがないと判断した場合(S4のNO)、ステップS5へ移行し、現在、コア1にて実行中のタスクがあると判断した場合(S4のYES)、ステップS7へ移行する。
ステップS4のNO判定の後、OS150は、コア1に予約タスク(タスクA)を実行させる(S5)。コア1は、タスクAに基づく演算を行う。
ステップS5の後、OS150は、コア1の予約タスクがあるか否かを判断する(S6)。コア1の予約タスクがない場合(S6のNO)、OS150は、コア1に予約タスクAを継続して実行させ、予約タスクAの実行が終了するとコア1の処理が終了する。
一方、ステップS5にてコア1が予約タスクAを実行中に、OS150が新しいタスクを、次にコア1に実行させる予約タスク(ここでのタスクを「タスクB」と呼ぶ)を新規にコア1に登録したとする。この場合、コア1の予約タスクがあるため(S6のYES)、OS150は、ステップS4に移行する。そして、OS150は、コア1では現在実行中のタスクありと判断するため(S4のYES)、ステップS7に移行する。
ステップS4のYES判定の後、OS150は、タスクテーブル160を参照し、新規に登録したタスクBの優先度が、コア1で実行中のタスクAの優先度より高いか否かを判断する(S7)。
そして、OS150は、予め設定される優先度に従って、タスクAとタスクBのどちらを先に実行するかを決定する。タスクAが、実行周期が2msの入力処理であり、新規に予約タスクとして登録されたタスクBが、実行周期が10msのアプリケーションの演算である場合には、タスクAの実行周期がタスクBの実行周期より短い。このため、タスクAの優先度がタスクBより高く設定される。
そこで、OS150は、新規に登録したタスクBの優先度が、コア1で実行中のタスクAの優先度以下であると判断すると(S7のNO)、ステップS5に移行し、コア1でタスクAの実行を継続する。
一方、OS150は、新規に登録したタスクBの優先度が、コア1で実行中のタスクAの優先度より高いと判断すると(S7のYES)、コア1で実行中のタスクAを一時停止する。そして、OS150は、タスクBの実行が終了後にタスクAの実行を再開するため、タスクBの処理が終了した後にコア1が演算可能となるようにコア1の演算にタスクAを予約する(S8)。
ステップS8の後、OS150は、コア1にてタスクAより優先度が高いタスクBを実行する(S9)。また、ステップS9の処理を実行中に、OS150は、再びステップS6にてコア1に登録された予約タスクの有無を評価する処理を実行する。以後、OS150は、ステップS4〜S9の処理を繰り返し、コア1に登録された予約タスクがなくなると(S6のNO)、コア1における本処理を終了する。
次に、ステップS1のNO判定以降の処理について説明する。
OS150は、タスクを演算するコアがコア1でない場合(S1のNO)、接続子Aによって接続される図6のステップS11に移行する。そして、OS150は、コア2に実行させるタスクを予約タスクとしてコア2に登録する(S11)。
OS150は、タスクを演算するコアがコア1でない場合(S1のNO)、接続子Aによって接続される図6のステップS11に移行する。そして、OS150は、コア2に実行させるタスクを予約タスクとしてコア2に登録する(S11)。
次に、OS150は、コア2に登録した予約タスクが実行できる状態にあるかを評価する。この処理では、OS150が、コア2に登録した実行予定の予約タスクが、コア1にてコア2と同じ実行周期の処理で行われる演算を待つ必要があるか否かを判断する(S12)。
OS150がコア2に登録した実行予定の予約タスクが、コア1の同じ実行周期の演算を待つ必要があれば(S12のYES)、接続子Bによって接続される図5のステップS1に戻る。
一方、OS150がコア2に登録した予約タスクの実行に際して、コア1で実行される同じ実行周期のタスクの演算を待つ必要がなければ(S12のNO)、OS150は、ステップS13に移行する。
また、コア2の実行予定の予約タスクが、コア2の演算結果を使用する場合、OS150は、ステップS12にて、コア2の演算結果を利用できる状態であるか否かも判定する。コア2の演算結果を利用できる状態とは、例えば、コア2の入力処理が終了し、入力処理の結果をアプリケーションが利用できる状態のことである。コア2の演算結果を利用できる状態であればステップS13へ移行し、利用できない状態であれば、接続子Bによって接続される図5のステップS1へ移行し、OS150は、次のタスクを実行する準備を行う。
ステップS12のNO判定の後、OS150は、コア2で現在実行中のタスクがあるか否かを確認する(S13)。OS150は、現在、コア2にて実行中のタスクがないと判断した場合(S13のNO)、ステップS14へ移行し、現在、コア2にて実行中のタスクがあると判断した場合(S13のYES)、ステップS16へ移行する。
ステップS13のNO判定の後、OS150は、コア2に予約タスク(ここで実行するタスクを「タスクC」と呼ぶ)を実行させる(S14)。コア2は、タスクCに基づく演算を行う。
ステップS14の後、OS150は、コア2の予約タスクがあるか否かを判断する(S15)。コア2の予約タスクがない場合(S15のNO)、OS150は、コア2に予約タスクCを継続して実行させ、予約タスクCの実行が終了するとコア2の処理が終了する。
一方、ステップS14にてコア2が予約タスクCを実行中に、OS150が新しいタスクを、次にコア2に実行させる予約タスク(ここでのタスクを「タスクD」と呼ぶ)を新規にコア2に登録したとする。この場合、コア2の予約タスクがあるため(S15のYES)、OS150は、ステップS13に移行する。そして、OS150は、ステップS13の判断にて、コア2では現在実行中のタスクありと判断するため(S13のYES)、ステップS16に移行する。
ステップS13のYES判定の後、OS150は、タスクテーブル160を参照し、新規に登録したタスクDの優先度が、コア2で実行中のタスクCの優先度より高いか否かを判断する(S16)。
そして、OS150は、予め設定される優先度に従って、タスクCとタスクDのどちらを先に実行するかを決定する。タスクCが、実行周期がREFのアプリケーションであり、新規に予約タスクとして登録されたタスクDが、実行周期が2msのアプリケーションの演算である場合には、タスクCの実行周期がタスクDの実行周期より短い。このため、タスクCの優先度がタスクDより高く設定される。
そこで、OS150は、新規に登録したタスクDの優先度が、コア2で実行中のタスクCの優先度以下であると判断すると(S16のNO)、ステップS14に移行し、コア2でタスクCの実行を継続する。
一方、OS150は、新規に登録したタスクDの優先度が、コア2で実行中のタスクCの優先度より高いと判断すると(S16のYES)、コア2で実行中のタスクCを一時停止する。そして、OS150は、タスクDの演算が終了した後にタスクCの演算を再開できるようにコア2の演算にタスクCを予約する(S17)。
ステップS17の後、OS150は、コア2にてタスクCより優先度が高いタスクDを実行する(S18)。また、ステップS18の処理を実行中に、OS150は、再びステップS15にてコア2に登録された予約タスクの有無を評価する処理を実行する。以後、OS150は、ステップS13〜S18の処理を繰り返し、コア2に登録された予約タスクがなくなると(S15のNO)、コア2における本処理を終了する。
以上説明した一実施の形態に係るECU100では、少なくとも2つ以上のコアを備えるCPU110で稼働するOS150が、異なる複数の実行周期で逐次実行され、また、実行周期の長さに応じて優先度を持つような処理を各コアに実行させる。ここで、OS150は、優先度が高い順にコアに処理を実行させる際、実行周期が長い入力処置と出力処理とを異なるコアに割り当てて、各コアに処理を実行させる。このため、例えば、エンジンの回転数が多くなり、エンジン回転に同期した優先度の高いREF周期の処理が一定期間内で複数回実行される状況になっても、OS150が、優先度の低い処理を一定期間内に収めてコアに実行させることが可能となる。この結果、優先度の高い処理の実行によって低い優先度の実行が阻害されて、低い優先度の処理が処理抜けすることがなくなり、異なる実行周期で逐次実行される演算の処理抜けを未然に防止することができる。
例えば、OS150は、コア1でエンジン回転に同期した処理を実行中であっても、コア1で優先度が低い他の実行周期で駆動される入力処理を実行させ、コア2で優先度が低いアプリケーション及び出力処理を実行することができる。あるいは、OS150は、コア2でエンジン回転に同期した処理を実行中であっても、コア2で優先度が低い他の実行周期で駆動される入力処理を実行させ、コア1で優先度が低いアプリケーション及び出力処理を実行することができる。このため、OS150は、エンジンが高回転になってもCPU110の処理抜けを防ぐことが可能となる。
[一実施の形態の第1の変形例]
上述した一実施の形態に係る処理をさらに拡張した処理を実施可能な第1の変形例について、図7を参照して説明する。
図7は、10msの入力処理及び出力処理を2つに分割した例を示すタイミングチャートである。
上述した一実施の形態に係る処理をさらに拡張した処理を実施可能な第1の変形例について、図7を参照して説明する。
図7は、10msの入力処理及び出力処理を2つに分割した例を示すタイミングチャートである。
上述した図4のチャート(5)には、OS150が、実行周期が10msの入力処理と出力処理のみを異なるコアで実行するように処理を割り当てた例を示した。本変形例に係るOS150は、エンジン回転に同期した実行周期がREFの処理と、実行周期が2msの処理との各々の入力処理と出力処理についても異なるコアで実行するように処理を割り当てる。
そして、オペレーティングシステム(OS150)は、少なくとも2つ以上の入力デバイス(入力デバイス201,202)に含まれる第1入力デバイス(入力デバイス201)及び第2入力デバイス(入力デバイス202)のうち、第1入力デバイス(入力デバイス201)から取得した情報を処理するための入力処理を一のコアに実行させ、第2入力デバイス(入力デバイス202)から取得した情報を処理するための入力処理を他のコアに実行させる。例えば、
また、オペレーティングシステム(OS150)は、少なくとも2つ以上の出力デバイス(出力デバイス301,302)に含まれる第1出力デバイス(出力デバイス301)及び第2出力デバイス(出力デバイス302)のうち、第1出力デバイス(出力デバイス301)に発する指令を処理するための出力処理を一のコアに実行させ、第2出力デバイス(出力デバイス302)に発する指令を処理するための出力処理を他のコアに実行させる。
さらに、オペレーティングシステム(OS150)は、優先度が低い実行周期の入力処理又は出力処理のいずれかを分割する。オペレーティングシステム(OS150)は、分割した入力処理の一方を一のコアに実行させ、入力処理の他方を他のコアに実行させ、かつ分割した出力処理の一方を他のコアに実行させ、分割した出力処理の他方を一のコアに実行させる。図7では、OS150は、実行周期が10msの入力処理及び出力処理を2つに分割したとして説明する。図中には、それぞれの実行周期における入力処理及び出力処理を接続した破線で各処理の対応関係が表される。
例えば、エンジンが高回転時に、OS150は、エンジン回転に同期した入力処理をコア1で実行させ、エンジン回転に同期したアプリケーションと出力処理をコア2で実行させる。
また、OS150は、実行周期が2msの入力処理をコア1で実行させ、実行周期が2msのアプリケーションと出力処理をコア2で実行させる。
また、OS150は、実行周期が10msの入力処理をコア1で実行させ、実行周期が10msのアプリケーションと出力処理をコア2で実行させる。
また、OS150は、実行周期が2msの入力処理をコア1で実行させ、実行周期が2msのアプリケーションと出力処理をコア2で実行させる。
また、OS150は、実行周期が10msの入力処理をコア1で実行させ、実行周期が10msのアプリケーションと出力処理をコア2で実行させる。
図7では、OS150が、実行周期が10msの入力処理及び出力処理を2つに分割した様子を、10ms(1)の入力処理及び出力処理、10ms(2)の入力処理及び出力処理と表す。なお、コア1,2で実行される実行周期が10msの2つのアプリケーションは、上述した図4のチャート(5)に示したように内容が異なるが、OS150が2つに分割したものではない。
以下に、図7に示すコア1,2の処理について説明する。例えば、OS150が、コア1にて0msのタイミングで開始した実行周期が2msの入力処理が終了すると、実行周期が10ms(2)の入力処理をコア1で開始する。一方、OS150は、0msのタイミングで実行周期が10ms(1)の入力処理をコア2で開始する。ただし、OS150は、コア1で実行周期が2msの入力処理が終了すると、実行周期が10ms(1)の入力処理を一旦停止する。
そして、OS150は、コア1から移動した実行周期が2msのアプリケーション及び出力処理をコア2で実行する。OS150は、実行周期が2msのアプリケーション及び出力処理がコア2で終了すると、実行周期が10ms(1)の入力処理をコア2で再開する。そして、OS150は、コア2にて実行周期が10ms(1)の入力処理が終了すると、コア1にて実行周期が10ms(1)のアプリケーションの実行を開始する。また、OS150は、実行周期が10ms(2)のアプリケーションの実行をコア2で開始する。
その後、OS150は、コア1にて実行周期が10ms(1)のアプリケーションが終了すると、実行周期が10ms(1)の出力処理をコア1で開始する。この結果、コア1における実行周期が10ms(1)の出力処理の終了は、10ms以内で収まっている。
同様に、OS150は、コア2にて実行周期が10ms(2)のアプリケーションが終了すると、実行周期が10ms(2)の出力処理をコア2で開始する。この結果、コア2における実行周期が10ms(2)の出力処理の終了は、10ms以内で収まっている。
同様に、OS150は、コア2にて実行周期が10ms(2)のアプリケーションが終了すると、実行周期が10ms(2)の出力処理をコア2で開始する。この結果、コア2における実行周期が10ms(2)の出力処理の終了は、10ms以内で収まっている。
このように、OS150は、コア1で実行周期が2msの入力処理を実行中に、コア2で実行周期が10msの入力処理を実行することが可能となる。このため、OS150は、図4のチャート(5)に示した、コア2で演算が実行されない箇所(0〜1msの間)にて、更なる追加の処理を実行させることが可能となる。すなわち、OS150は、CPU110により多くの処理を実行させることができる。
また、図7に示すように、OS150は、それぞれの実行周期で実行される入力処理、アプリケーション、出力処理で、入力処理をコア1で実行した場合に、アプリケーションと出力処理を他方のコアで実行させている。ただし、OS150は、入力処理とアプリケーションを一のコアで実行させ、出力処理を他のコアで実行させるように変形することも可能である。
[一実施の形態の第2の変形例]
上述した一実施の形態に係る処理をさらに拡張した処理を実施可能な第2の変形例について、図8を参照して説明する。
図8は、OS150が、実行周期が10msの処理の一部を異なるコアに割り当てて実行させる様子を示す図である。
上述した一実施の形態に係る処理をさらに拡張した処理を実施可能な第2の変形例について、図8を参照して説明する。
図8は、OS150が、実行周期が10msの処理の一部を異なるコアに割り当てて実行させる様子を示す図である。
第2の変形例に係るオペレーティングシステム(OS150)は、入力処理を実行した一のコアと同じ一のコアにアプリケーションの処理を実行させ、又は入力処理を実行した一のコアとは異なる他のコアにアプリケーションの処理を実行させる。図8のチャート(1)に示すように、OS150は、実行周期が10msの入力処理とアプリケーションをコア1に割り当てて、コア1に実行周期が10msの入力処理とアプリケーションを実行させる。アプリケーションの終了後、OS150は、実行周期が10msの出力処理をコア2に割り当てて、コア2に実行周期が10msの出力処理を実行させる。
また、第2の変形例に係るオペレーティングシステム(OS150)は、アプリケーションの処理を実行した一のコアと同じ一のコアに出力処理を実行させ、又はアプリケーションの処理を実行した一のコアとは異なる他のコアに出力処理を実行させる。図8のチャート(2)に示すように、OS150は、実行周期が10msの入力処理をコア1に割り当てて、コア1に実行周期が10msの入力処理を実行させる。入力処理の終了後、OS150は、実行周期が10msのアプリケーションと出力処理をコア2に割り当てて、コア2に実行周期が10msのアプリケーションと出力処理を実行させる。
このように本実施の形態に係る制御方法を適用することで、OS150は、入力処理とアプリケーションを同じコアで実行させた場合には、異なるコアで出力処理を実行させたり、入力処理を実行させたコアとは異なるコアでアプリケーションと出力処理を実行させたりする。このため、OS150が処理の実行順序を決定する際の自由度が広がる。また、OS150は、CPU110における処理負荷の低減を検討することが可能となる。
なお、上述した実施の形態に係るOS150は、ECU100に搭載されるCPU110で動作させるものとしたが、エンジン以外の制御対象の動作を制御する制御装置に搭載されるマイクロコンピュータで動作するように構成してもよい。この場合においても、マイクロコンピュータは、マルチコア構成とすることが望ましい。
なお、本発明は上述した各実施の形態に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りその他種々の応用例、変形例を取り得ることは勿論である。
例えば、上述した各実施の形態は本発明を分かりやすく説明するためにエンジン制御装置の構成を詳細かつ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されない。また、本実施の形態の構成の一部について、他の構成の追加、削除、置換をすることも可能である。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
例えば、上述した各実施の形態は本発明を分かりやすく説明するためにエンジン制御装置の構成を詳細かつ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されない。また、本実施の形態の構成の一部について、他の構成の追加、削除、置換をすることも可能である。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
100…エンジン制御装置(ECU)、110…CPU、111,112…コア、120…RAM、130…ROM、140…プログラム、150…オペレーティングシステム(OS)、160…タスクテーブル、201,202…入力デバイス、301,302…出力デバイス
Claims (7)
- エンジンに取り付けられる入力デバイスにより前記エンジンの情報を取得し、前記エンジンに取り付けられる出力デバイスにより前記エンジンの動作を制御するエンジン制御装置であって、
少なくとも2つ以上のコアを有するマイクロコンピュータを備え、
前記マイクロコンピュータは、
前記入力デバイスから入力した前記情報を処理する入力処理と、前記入力処理の結果に基づいて、前記出力デバイスの動作を決定するための演算を行うアプリケーションと、前記アプリケーションで演算された値を指令値として、前記出力デバイスを動作させる指令を前記出力デバイスに出力する出力処理とを、前記コアごとに割り当て、前記入力処理、前記アプリケーション及び前記出力処理を一連の処理として異なる実行周期で前記コアに逐次実行させるオペレーティングシステムを動作させ、
前記オペレーティングシステムが、少なくとも2つ以上の前記コアから選択した一のコアに、所定の前記実行周期の前記入力処理を実行させ、前記一のコアとは異なる他のコアに、前記一のコアで実行した前記入力処理と同じ前記実行周期の前記出力処理を実行させる
エンジン制御装置。 - 前記オペレーティングシステムは、少なくとも2つ以上の前記入力デバイスに含まれる第1入力デバイス及び第2入力デバイスのうち、前記第1入力デバイスから取得した情報を処理するための入力処理を前記一のコアに実行させ、前記第2入力デバイスから取得した情報を処理するための入力処理を前記他のコアに実行させる
請求項1に記載のエンジン制御装置。 - 前記オペレーティングシステムは、少なくとも2つ以上の前記出力デバイスに含まれる第1出力デバイス及び第2出力デバイスのうち、前記第1出力デバイスに発する前記指令を処理するための出力処理を前記一のコアに実行させ、前記第2出力デバイスに発する前記指令を処理するための出力処理を前記他のコアに実行させる
請求項1に記載のエンジン制御装置。 - 前記オペレーティングシステムは、前記入力処理、前記アプリケーション及び前記出力処理の前記実行周期に対して設定される優先度に応じて、前記優先度が高い実行周期の前記入力処理、前記アプリケーション及び前記出力処理を優先的に実行させる
請求項2又は3に記載のエンジン制御装置。 - 前記オペレーティングシステムは、前記優先度が低い実行周期の前記入力処理又は前記出力処理のいずれかを分割し、
分割した前記入力処理の一方を前記一のコアに実行させ、前記入力処理の他方を前記他のコアに実行させ、かつ分割した前記出力処理の一方を前記他のコアに実行させ、分割した前記出力処理の他方を前記一のコアに実行させる
請求項4に記載のエンジン制御装置。 - 前記オペレーティングシステムは、前記入力処理を実行した前記一のコアと同じ前記一のコアに前記アプリケーションの処理を実行させ、又は前記入力処理を実行した前記一のコアとは異なる前記他のコアに前記アプリケーションの処理を実行させる
請求項4に記載のエンジン制御装置。 - 前記オペレーティングシステムは、前記アプリケーションの処理を実行した前記一のコアと同じ前記一のコアに前記出力処理を実行させ、又は前記アプリケーションの処理を実行した前記一のコアとは異なる前記他のコアに前記出力処理を実行させる
請求項4に記載のエンジン制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019237005A JP2021105368A (ja) | 2019-12-26 | 2019-12-26 | エンジン制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019237005A JP2021105368A (ja) | 2019-12-26 | 2019-12-26 | エンジン制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021105368A true JP2021105368A (ja) | 2021-07-26 |
Family
ID=76918668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019237005A Pending JP2021105368A (ja) | 2019-12-26 | 2019-12-26 | エンジン制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021105368A (ja) |
-
2019
- 2019-12-26 JP JP2019237005A patent/JP2021105368A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8856196B2 (en) | System and method for transferring tasks in a multi-core processor based on trial execution and core node | |
US6260058B1 (en) | Process for controlling technological operations or processes | |
Bril et al. | Worst-case response time analysis of real-time tasks under fixed-priority scheduling with deferred preemption | |
JP7147615B2 (ja) | タスク管理装置 | |
JP4728020B2 (ja) | 車両制御用ソフトウェア及び車両制御装置 | |
WO2014061141A1 (ja) | 並列計算装置 | |
JP5817505B2 (ja) | 内燃機関の制御装置 | |
US7590990B2 (en) | Computer system | |
JP4985662B2 (ja) | プログラム、及び制御装置 | |
US20100281485A1 (en) | Method For Changing Over A System Having Multiple Execution Units | |
US10853133B2 (en) | Method and apparatus for scheduling tasks to a cyclic schedule | |
JP2021105368A (ja) | エンジン制御装置 | |
JP6519515B2 (ja) | マイクロコンピュータ | |
US9128757B2 (en) | Method and lightweight mechanism for mixed-critical applications | |
US20030135319A1 (en) | Electronic control unit having different mask return processes | |
JPH0991154A (ja) | スタック割り当て方法、制御装置 | |
Mishra et al. | Dynamic task scheduling on multicore automotive ECUs | |
Negrean et al. | Mastering timing challenges for the design of multi-mode applications on multi-core real-time embedded systems | |
JPH1139172A (ja) | 電子制御装置 | |
CN111108471A (zh) | 用于确保机动车辆的多核处理器的数据的稳定性的方法 | |
WO2010109609A1 (ja) | 処理装置及び車両用エンジン制御装置 | |
JP7421634B2 (ja) | 制御装置及び方法 | |
JP2020091540A (ja) | 情報処理装置 | |
US12093372B2 (en) | Method carried out in electronic control unit of the multi-core structure, and apparatus implementing the same method | |
Kim et al. | Multicore ECU task-load distribution (balancing) and dynamic scheduling |