(57)【要約】      （修正有）【課題】複数のコアで処理を分散して実行するマイコンの処理能力が低下することを防止できる電子制御装置を提供する。【解決手段】電子制御装置（ＥＣＵ）１のマイコン２は、複数のコアＡ〜ＮとＲＯＭ３とを内部バス４で接続して構成されている。各コアＡ〜Ｎは、ＲＯＭに記憶されているプログラムを実行することにより制御対象であるエンジンを制御する。コアＮは、ジョブ開始要求に応じてジョブ起床時プログラムにより最大許容実行時間を取得すると共にコアＡ〜Ｃに対してタスクを実行することを要求する。コアＡ〜Ｃは、コアＮからの要求に応じて被監視プログラムによりタスクの実行を開始し、当該タスクの実行が完了した場合はタスク完了時プログラムによりタスク完了を通知する。コアＮは、最大許容実行時間が経過するまでに全てのコアＡ〜Ｃからタスク完了が通知されなかった場合は実行時間異常を判断することでジョブ実行時間を監視する。【選択図】図１
2020173644.tif 000002
【特許請求の範囲】
【請求項１】
マイクロコンピュータ（２）が搭載された電子制御装置であって、
前記マイクロコンピュータは、
被監視プログラム、ジョブ起床時プログラム、タスク完了時プログラムを記憶した記憶部（３）と、
最大許容実行時間が経過するまでに全てのタスク完了が通知されなかった場合は実行時間異常と判断する監視部（Ｎ，６）と、
ジョブ開始要求に応じて前記ジョブ起床時プログラムにより前記最大許容実行時間を取得した後、前記監視部にセットすると共に前記コアに対してタスクを実行することを要求し、前記監視部により前記実行時間異常を判断することでジョブ実行時間を監視する監視用コア（Ｎ）と、
前記監視用コアからの要求に応じて前記被監視プログラムによりタスクの実行を開始し、当該タスクの実行が完了した場合は前記タスク完了時プログラムによりタスク完了を通知する複数のコア（Ａ〜Ｃ）と、
を備えた電子制御装置。
【請求項２】
前記監視用コアは、前記監視部が前記実行時間異常と判断した場合はそのことを前記コアに通知する請求項1に記載の電子制御装置。
【請求項３】
前記コアは、前記ジョブ実行時間の異常であることが通知された場合はタスクの実行を停止して異常時処理を実行する請求項２に記載の電子制御装置。
【請求項４】
前記監視用コアは、現在実行中のジョブの完了前に次の前記ジョブ開始要求を受けた場合は、前記監視部による監視を継続したまま次のジョブ実行時間の監視を開始し、ジョブ実行が完了した場合はジョブ完了を前記コアに通知し、
前記コアは、前記監視用コアから前記ジョブ完了を受けることなく前記ジョブ開始要求を受けた場合は前記被監視プログラムにより実行中のタスクを継続して実行し、前記監視用コアから前記ジョブ完了が通知された場合は前記被監視プログラムによりタスクの実行を開始する請求項１から３のいずれか一項に記載の電子制御装置。
【請求項５】
前記監視部は、起床するとタイマにより時間を計測し、前記タイマが前記最大許容実行時間を計測するまでに全ての前記コアから前記タスク完了が通知されなかった場合は前記監視用コアに前記実行時間異常を通知する監視プログラム（５）から構成されている請求項１から４のいずれか一項に記載の電子制御装置。
【請求項６】
前記監視部は、計時回路（１２）と比較回路（１１）とを有した監視回路（６）から構成され、
前記監視用コアは、前記ジョブ開始要求に応じて前記計時回路を起動すると共に前記比較回路に前記最大許容実行時間をセットし、
前記計時回路は、全ての前記コアから前記タスク完了が通知された場合は停止し、
前記比較回路は、前記計時回路による経過時間が前記最大許容実行時間に達した場合は前記コアに前記実行時間異常を通知する請求項１から４のいずれか一項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子制御装置に関する。
【背景技術】
【０００２】
従来、マイクロコンピュータ（以下、マイコンと称す）のジョブ実行時間を監視する方法として、特許文献１により開示されているようにオペレーティングシステム（以下、ＯＳと称す）がジョブにより最初のタスクが起床されてからの経過時間を計測する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６３―１６３９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術はコアのＯＳがジョブ実行時間を監視しているため、複数のコアが搭載されたマルチコアマイコンを用いてジョブを実行すると、ジョブが複数のコアにタスクとして分散され、ジョブ全体としての実行時間の監視ができなくなるという問題が生じる。特に、エンジン制御プログラムのような実行順序の制約があり、実行時間にも厳しい制約があるプログラムにとって大きな問題である。
【０００５】
例えば、処理ａ，ｂ，ｃ，ｄからなるジョブを実行する際に、実行順序の制約として、処理ａを処理ｂ，ｃ，ｄより先に実行する場合を想定する。一つのコアのみが搭載されたシングルコアで上記ジョブａ，ｂ，ｃ，ｄを実行しようとすると、ジョブ開始要求に応じてタスクが起床し、処理ａ，ｂ，ｃ，ｄが順に実行される。この場合、コアのＯＳが計測したタスク実行時間とジョブ実行時間とは一致するため、ジョブ全体としてのジョブ実行時間を監視することができる。
【０００６】
一方、複数のコアが搭載されたマルチコアマイコンにて、上記ジョブａ，ｂ，ｃ，ｄをタスクとして各コアに分散させて実行する場合を想定する。実行順序の制約を満たすために、ジョブ開始要求に応じてまずコアＡで処理ａを実行し、当該処理ａ完了後、コアＡで処理ｂ、コアＢで処理ｃ、コアＣで処理ｄを実行する。この場合、実行時間の監視は各コアのＯＳ毎に実施するため、分散後の各タスク実行時間は監視できるが、ジョブ全体としての監視を行うことはできない。ジョブ実行時間としては処理ａの開始から処理ｃの終了までであるが、処理ｂの終了はコアＡのＯＳのみが監視し、処理ｃの終了はコアＢのＯＳのみが監視し、処理ｄの終了はコアＣのＯＳのみが監視しているため、ジョブ実行時間を監視することはできない。
【０００７】
このような問題点は、ジョブ開始要求と同時に全てのコアでタスクを起床させ、各コアのタスク実行時間のうち最長の時間をジョブ実行時間とすることで解決できる。
しかしながら、このような手法では、処理順規定のある処理が終わるまでは他コアはタスク起床状態で何も処理を実行させない状態にする必要があり、マイコン全体としての性能が低下するという問題が生じる。
【０００８】
本発明は上記事情に鑑みてなされたもので、その目的は、複数のコアで処理を分散して実行するマイコンの処理能力が低下することを防止できる電子制御装置を提供することにある。
【課題を解決するための手段】
【０００９】
請求項１の発明によれば、監視用コア（Ｎ）は、ジョブ開始要求に応じてジョブ起床時プログラムにより最大許容実行時間を取得した後、監視部（Ｎ，６）にセットすると共にコア（Ａ〜Ｃ）に対してタスクを実行することを要求し、監視部（Ｎ，６）により実行時間異常を判断することでジョブ実行時間を監視する。
複数のコア（Ａ〜Ｃ）は、監視用コア（Ｎ）からの要求に応じて被監視プログラムによりタスクの実行を開始し、当該タスクの実行が完了した場合はタスク完了時プログラムによりタスク完了を監視部（Ｎ，６）に通知する。監視部（Ｎ，６）は、最大許容実行時間が経過するまでに全てのコア（Ａ〜Ｃ）からタスク完了が通知されなかった場合は実行時間異常と判断する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態におけるエンジンＥＣＵの構成を概略的に示すブロック図
【図２】ジョブの処理手順を示す図
【図３】タスク実行時間とジョブ実行時間との関係を示すタイミング図
【図４】ジョブ実行時間と最大許容実行時間との関係を示すタイミング図
【図５】ジョブ実行時間が最大許容実行時間を超えた場合を示すタイミング図
【図６】ジョブの多重起床時の監視処理を示すタイミング図
【図７】第２実施形態におけるエンジンＥＣＵの構成を概略的に示すブロック図
【図８】ジョブ実行時間と最大許容実行時間との関係を示すタイミング図
【図９】ジョブ実行時間が最大許容実行時間を超えた場合を示すタイミング図
【発明を実施するための形態】
【００１１】
以下、複数の実施形態について図面を参照して説明する。複数の実施形態において、機能的または構造的に対応する部分には同一の参照符号を付与する。
（第１実施形態）
車両に搭載されるエンジンＥＣＵに適用した第１実施形態について図１から図６を参照して説明する。
【００１２】
図１に示すエンジンＥＣＵ１（電子制御装置に相当）はマイコン２を主体として構成されている。マイコン２は、複数のコアＡ〜ＮとＲＯＭ３（記憶部に相当）とを内部バス４で接続して構成されている。各コアＡ〜ＮがＲＯＭ３に記憶されているプログラムを実行することにより制御対象であるエンジンを制御する。
【００１３】
ＲＯＭ３には、プログラムとして、被監視プログラム、ジョブ起床時プログラム、タスク完了時プログラム、監視プログラム５が記憶されている。
被監視プログラムはジョブを構成するタスクを実行するためのもので、実行時間の監視対象となる。以下、説明の簡単化のために、図２に示すようにジョブがタスクとしての処理ａ〜ｄから構成され、マイコン２がコアＡ〜ＣとコアＮを備えている構成を例示して説明するが、これに限定されるものではない。
【００１４】
各処理ａ〜ｄを実行するコアと実行順序は、各コアＡ〜Ｃが実行する被監視プログラムにより規定されている。つまり、コアＡが実行する被監視プログラムは処理ａ,ｂを順に実行する。コアＢが実行する被監視プログラムは処理ｃを実行する。コアＣが実行する被監視プログラムは処理ｄを実行する。
【００１５】
コアＡ〜Ｃは、監視用コア（Ｎ）からの要求に応じて被監視プログラムを実行する。つまり、図３に示すようにコアＡは処理ａを開始し、当該処理ａの実行を終了してから処理ｂを開始する。コアＢは、コアＡが処理ａの実行を終了してから処理ｃを実行する。コアＣは、コアＡが処理ａの実行を終了してから処理ｃを実行する。この場合、コアＡにおいては、処理ａの実行時間と処理ｂの実行時間とを合わせた時間がタスク実行時間である。コアＢにおいては、処理ｃの実行時間がタスク実行時間である。コアＣにおいては、処理ｄの実行時間がタスク実行時間である。
【００１６】
図３に示すようにコアＢによる処理ｃの終了タイミングが最も遅くなる場合は、ジョブ開始要求からコアＢによる処理ｃの終了タイミングまでがジョブ実行時間となる。ジョブ実行時間は最大許容実行時間内となることが要求されており、ジョブ実行時間が最大許容実行時間を超えるような場合は異常となる。
【００１７】
コアＮは監視用コアとして設定されており、ジョブ起床時プログラムと監視プログラムとを実行する。ジョブ起床時プログラムとは、ジョブ起床時処理により最大許容実行時間を取得するプログラムである。
監視プログラムとは、当該監視プログラムの一部として設けられたタイマによりジョブ監視するプログラムである。監視プログラムは、ジョブ開始要求に応じてタイマにより時間計測を開始すると共にコアＡ〜Ｃに対してタスクを実行することを要求し、タイマによる経過時間が最大許容実行時間を超えると実行時間異常と判断する。最大許容実行時間は複数設定することが可能である。
【００１８】
次に、マイコン２の動作について具体的に説明する。
運転者がイグニッションスイッチをＯＮすると、エンジンＥＣＵ１にバッテリから給電されるので、各コアＡ〜Ｃ及びコアＮが起動する。各コアＡ〜Ｃは、起動すると被監視プログラムとタスク完了プログラムとをＲＯＭ３から読込む。監視実行用のコアＮは、起動するとジョブ起床時プログラムと監視プログラムとをＲＯＭ３から読込む。
【００１９】
（正常時）
図４に示すようにコアＮは、ジョブ開始要求１が発行されるとジョブ起床時プログラムを起床することで各コアＡ〜Ｃにジョブ開始を通知すると同時に最大許容実行時間１の情報を取得してタイマによる時間計測を開始する。
【００２０】
コアＡ〜Ｃは、コアＮからの要求に応じて被監視プログラムを起床する。コアＡは、最初のタスクである処理ａを実行し、当該処理ａの実行を完了するとコアＢ及びコアＣに処理完了を通知してから次のタスクである処理ｂを実行し、当該処理ｂの実行を終了すると、タスク完了をコアＮに通知する。コアＢは、コアＡから処理完了が通知されると処理ｃを実行し、当該処理ｃの実行を終了すると、タスク完了をコアＮに通知する。コアＣは、コアＡから処理完了が通知されると処理ｄを実行し、当該処理ｄの実行を終了すると、タスク完了をコアＮに通知する。
【００２１】
コアＮは、全てのコアＡ〜Ｃから最大許容実行時間１以内にタスク完了が通知されたか否かを監視しており、通知された場合は最大許容実行時間１をクリアすることで監視処理１を終了する。この場合、コアＮは、監視処理１を常時処理しているのではなく、ジョブ開始要求およびタスク完了が通知されたタイミングでのみ例えば割込みにより実行するようになっている。
以上のようにして、コアＮは、各コアＡ〜Ｃのジョブ実行時間の監視を行う。
【００２２】
（異常時）
全てのコアＡ〜Ｃがタスクを完了するまでのジョブ実行時間はエンジンの運転状態に応じて変動する。このため、何らかの異常が発生した場合は、ジョブ実行時間が最大許容実行時間を上回る場合がある。
【００２３】
図５に示すようにコアAによる処理ａの実行時間が正常であるとすると、処理ｂ,ｃ,ｄの開始までは図４と同様となる。ここで、コアＡ及びコアＣは処理ｂの完了後、最大許容実行時間内にタスク完了をコアＮに通知するが、コアＢは最大許容実行時間内に処理ｃを完了できない場合は、最大許容実行時間が経過するにしてもコアＢからコアＮにタスク完了を通知できないことになる。
【００２４】
このような場合、監視プログラムのタイマによる経過時間が最大許容実行時間に達することから、コアＮにその旨を通知して時間計測を終了する。コアＮは、最大許容実行時間が経過するにしてもコアＢからタスク完了が通知されていないことから実行時間異常と判断し、全てのコアＡ〜Ｃに実行時間異常を通知し、監視処理１を終了する。
【００２５】
コアＡ，Ｃは、コアＮから異常通知が通知されると、異常時処理を開始する。コアＢは、コアＮから実行時間異常が通知されると、実行中の処理ｃを停止し、異常時処理を開始する。なお、監視処理１は常時処理が実行されているのではなく、ジョブ開始要求およびタスク完了が通知された時、及び最大許容実行時間が経過して異常通知を発行するときのみ処理が実行される。異常処理としては、例えばマイコン２を強制的にリセットしたり、異常であることを外部に報知したりすることで行われる。
以上のようにして、コアＮは、ジョブ実行時間の監視処理を実行することができる。
【００２６】
（ジョブの多重起床）
コアＡ〜Ｃはジョブの多重起床が可能であり、この場合の監視処理について説明する。
図６に示すように処理ｂ,ｃ,ｄの開始までは図４と同様である。コアＡは、処理ｂ完了後、自身のタスクが完了したことをコアＮに通知する。コアＣは、処理ｄ完了後、自身のタスクが完了したことをコアＮに通知する。処理ｃの完了前、すなわちジョブ開始要求１によるジョブが完了していない状態で新たなジョブ開始要求２が発行されると、コアＮは、監視処理１を続行したまま、ジョブ開始要求２に対する最大許容実行時間２の情報を取得して監視処理２を開始する。この時、コアＡのタスクは起床させない。
【００２７】
コアＢが処理ｃ完了後、タスク完了をコアＮに通知すると、コアＮは最大許容実行時間１をクリアし、監視処理１を終了し、コアＡのタスクを起床させる。
以上のようにして、コアＮは、ジョブの多重起床時であってもジョブ実行時間の監視処理を実行することができる。
【００２８】
このような実施形態によれば、次のような効果を奏することができる。
コアＮは、ジョブ開始要求に応じてジョブ起床時プログラムにより最大許容実行時間を取得すると共にコアＡ〜Ｃに対してタスクを実行することを要求し、最大許容実行時間が経過するまでに全てのコアＡ〜Ｃからタスク完了が通知されなかった場合は実行時間異常を判断することでジョブ実行時間を監視する一方、コアＡ〜Ｃは、コアＮからの要求に応じて被監視プログラムによりタスクの実行を開始し、当該タスクの実行が完了した場合はタスク完了時プログラムによりタスク完了を通知するので、ジョブ内で起床した全てのタスクに対して最大許容実行時間を同一に設定できると共に、コアＡ〜Ｃの処理順の規定を容易に規定しやすくなり、設計効率や処理のコア配置自由度が向上する。また、分散後のタスクではなく、ジョブ全体としての実行時間異常の判断をできる。
【００２９】
コアＮは、監視プログラムが実行時間異常と判断した場合はそのことをコアＡ〜Ｃに通知するので、全てのコアＡ〜Ｃが同期して実行時間の監視を行うことができる。また、実行時間監視を各コアＡ〜Ｃでは行わないことで、コアＡ〜Ｃの処理負荷を低減できる。
【００３０】
コアＡ〜Ｃは、コアＮから実行時間異常が通知された場合はタスクの実行を停止して異常時処理を実行するので、全てのコアＡ〜Ｃで同期したタスク停止と異常時処理の開始ができる。
【００３１】
コアＮは、現在実行中のジョブの完了前に次のジョブ開始要求を受けた場合は、監視プログラムによる監視を継続したまま次のジョブ実行時間の監視を開始し、ジョブ実行が完了した場合はジョブ完了をコアＡ〜Ｃに通知し、コアＡ〜Ｃは、コアＮからジョブ完了を受けることなくタスクの実行要求を受けた場合は被監視プログラムにより実行中のタスクを継続して実行し、コアＮからジョブ完了が通知された場合は被監視プログラムによりタスクの実行を開始するので、ジョブの多重起床を許容することができる。
【００３２】
（第２実施形態）
第２実施形態について図７から図９を参照して説明する。
図７に示すようにエンジンＥＣＵ１は、マイコン２と監視回路６（監視部に相当）とから構成されている。マイコン２は、コアＡ〜Ｃ、コアＮ、被監視プログラム、ジョブ起床時プログラム及びタスク完了時プログラムを記憶したＲＯＭ３、入出力部７を内部バス４で接続して構成されている。
【００３３】
監視回路６は、タイマ８、ＡＮＤ回路９、積算回路１０、比較回路１１から構成されている。タイマ８とＡＮＤ回路９と積算回路１０とから計時回路１２が構成されている。タイマ８は、一定周期のパルス信号を出力する。積算回路１０の入力端子はタイマ８と接続されており、入出力部７からスタート信号を入力すると、タイマ８から出力される一定周期のパルス信号を積算することで経過時間を計測する。
【００３４】
コアＮは、ＲＯＭ３に格納されたジョブ起床時プログラムを用いてジョブ起床時処理を実行する。各コアＡ〜Ｃは、タスクを完了した場合は、タスク完了時プログラムを用いてタスク完了を入出力部７に通知する。
入出力部７は監視回路６と接続されており、ジョブ開始要求に応じて積算回路１０にスタート信号を出力し、比較回路１１に最大許容実行時間をセットし、各コアＡ〜Ｃからタスク完了が通知されると対応する出力端子からタスク完了を通知する。
【００３５】
ＡＮＤ回路９の入力端子は入出力部７の出力端子とそれぞれ接続され、出力端子は積算回路１０の一方の入力端子と接続されている。ＡＮＤ回路９は、全ての入力端子にタスク完了が通知された場合は積算回路１０にストップ信号を出力する。
【００３６】
積算回路１０の出力端子は比較回路１１の入力端子と接続されており、経過時間を比較回路１１に出力し、ＡＮＤ回路９からのストップ信号により時間計測を停止する。
比較回路１１は、入出力部７により最大許容実行時間がセットされると、積算回路１０による経過時間と最大許容実行時間とを比較し、積算回路１０による経過時間の方が最大許容実行時間よりも大きくなった場合は実行時間異常を入出力部７に通知する。
【００３７】
（正常時）
図８に示すようにジョブ開始要求１が与えられると、コアＮは、ジョブ起床時処理として最大許容実行時間を比較回路１１にセットしてから、積算回路１０をスタートすることでジョブ実行時間の監視を開始する。コアＡは、コアＮからのタスクの実行要求に応じてタスクを起床させることで処理ａを開始する。処理ａ完了後、コアＡがコアＢ及びコアＣのタスクを起床させることで、コアＡで処理ｂ、コアＢで処理ｃ、コアＣで処理ｄを実行する。
【００３８】
コアＡは、処理ｂ完了後、入出力部７を介してタスク完了をＡＮＤ回路９に通知する。コアＢは、処理ｃ完了後、タスク完了をＡＮＤ回路９に通知する。コアＣは、処理ｄ完了後、タスク完了をＡＮＤ回路９に通知する。ＡＮＤ回路９は、全ての入力端子にタスク完了が通知された場合は積算回路１０へストップ信号を出力する。これにより、積算回路１０は停止し、実行時間の監視を終了する。
以上のようにして、コアＮは、コアＡ〜Ｃのジョブ実行時間の監視を行うことができる。
【００３９】
（異常時）
図９に示すようにコアＡ，Ｃは処理ｂ完了後、タスク完了をＡＮＤ回路９に出力する。一方、コアＢは、最大許容実行時間内に処理ｃを完了できないことから、タスク完了をＡＮＤ回路９に出力できない。この場合、ＡＮＤ回路９は、全ての入力端子にタスク完了が通知されないので、積算回路１０へストップ信号を出力することはない。これにより、積算回路１０は停止せず、積算回路１０による経過時間が最大許容実行時間を超えるようになる。この結果、比較回路１１は実行時間異常をコアＡ，Ｃに通知するので、コアＡ，Ｃは、実行時間異常通知が通知された場合は異常時処理を開始し、コアＢは、実行中の処理ｃを停止し、異常時処理を開始する。
【００４０】
以上のようにして、コアＮは、ジョブ実行時間の監視により異常を判断することができる。
また、図７示す監視回路６を複数搭載することで、複数のジョブ実行時間を同時に監視可能となるため、ジョブの多重起床時の監視も可能である。
【００４１】
このような実施形態によれば、第１実施形態のコアＮによるジョブ実行時間の監視機能と同等の動作を監視回路６により実行することができるので、監視と通知にコアＮを用いることなく実施でき、コアＮの処理負荷を低減できる。
【００４２】
（その他の実施形態）
コアＮが被監視プログラム、ジョブ起床プログラム、タスク完了プログラムを実行するようにしても良い。
ジョブ実行時間の監視用のコアとしてはいずれのコアを割当てても良いし、複数のコアで監視機能を分担するようにしても良い。
ジョブ開始要求はマイコン２自身が発行するようになっているが、外部からの割込みとして与えるようにしても良い。
ジョブ開始要求をコアＡ〜Ｃにも入力するようにしても良い。
第２実施形態において、監視回路６をマイコン２の内部に配置するようにしても良い。
【００４３】
本開示は、実施形態に準拠して記述されたが、本開示は当該実施形態や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
【符号の説明】
【００４４】
図面中、１はエンジンＥＣＵ（電子制御装置）、２はマイコン、３はＲＯＭ（記憶部）、６は監視回路（監視部）、１１は比較回路、１２は計時回路、Ａ〜Ｃはコア、Ｎはコア（監視用コア、監視部）である。
【図１】
2020173644.tif 000003
【図２】
2020173644.tif 000004
【図３】
2020173644.tif 000005
【図４】
2020173644.tif 000006
【図５】
2020173644.tif 000007
【図６】
2020173644.tif 000008
【図７】
2020173644.tif 000009
【図８】
2020173644.tif 000010
【図９】
2020173644.tif 000011