(57)【特許請求の範囲】
【請求項１】
複数のコアを備えた車載電子制御装置であって、
複数の前記コアのうち、当該車載電子制御装置が実行する制御処理の中で優先度が高い処理として予め設定された処理である重要処理を実行するコアをメインコアとし、
複数の前記コアのうち、前記重要処理より優先度が低い処理として予め設定された処理である通常処理を実行するコアをサブコアとし、
前記サブコアは、当該サブコアが実行する処理を管理する一つ以上の第１サブスケジューラおよび一つ以上の第２サブスケジューラと、前記第１サブスケジューラおよび前記第２サブスケジューラを管理するメインスケジューラとを動作させるように構成され、
前記メインスケジューラは、
前記メインコアに異常が発生していない場合には、前記サブコアが処理を実行するために必要な時間であるリソースを前記第１サブスケジューラに割り当てるとともに、前記リソースを前記第２サブスケジューラに割り当てないようにすることにより、前記第１サブスケジューラに前記通常処理を実行させるとともに前記第２サブスケジューラを停止させ、
前記メインコアに異常が発生した場合には、前記リソースを前記第１サブスケジューラおよび前記第２サブスケジューラに割り当てることにより、前記第１サブスケジューラに前記通常処理を実行させるとともに前記第２サブスケジューラに前記重要処理を実行させる
ことを特徴とする車載電子制御装置。
【請求項２】
前記サブコアを複数備え、
複数の前記サブコアはそれぞれ、互いに異なる前記通常処理を前記第１サブスケジューラで実行するとともに、分割された前記重要処理のうち互いに異なる処理を前記第２サブスケジューラで実行し、
前記重要処理は、車両を制御するための複数の車両制御処理で構成され、
前記重要処理は、複数の前記車両制御処理のうちで、処理順序が変更されると車両制御に不都合を生じさせる可能性のある処理が同一の前記サブコア内で実行されるように分割される
ことを特徴とする請求項１に記載の車載電子制御装置。
【請求項３】
前記メインスケジューラは、
前記第２サブスケジューラが前記第１サブスケジューラより優先して処理を実行するように管理する
ことを特徴とする請求項１または請求項２に記載の車載電子制御装置。
【請求項４】
前記サブコアは、
前記メインコアから、異常判定のために予め設定された異常判定用信号を入力し、前記異常判定用信号に基づいて、前記メインコアに異常が発生したか否かを判定する異常判定手段を備える
ことを特徴とする請求項１〜請求項３の何れか１項に記載の車載電子制御装置。
【請求項５】
前記重要処理を実行するための重要処理プログラムと、前記通常処理を実行するための通常処理プログラムとを記憶するメモリを備え、
前記メインコアおよび前記サブコアは、前記メモリにアクセスしてプログラムを取得することにより処理を実行することができるように構成され、
前記メインコアに異常が発生していない場合には、前記サブコアが前記重要処理プログラムにアクセス不能であり、前記メインコアに異常が発生した場合には前記サブコアが前記重要処理プログラムにアクセス可能であるように、前記メモリへのアクセスを管理するメモリ管理手段を備える
ことを特徴とする請求項１〜請求項４の何れか１項に記載の車載電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを搭載する車載電子制御装置に関する。
【背景技術】
【０００２】
従来、自動車（車両）に搭載される電子制御装置として、コアを複数搭載するマルチコアシステムを採用し、最も優先度が高い制御（以下、最高優先度制御という）を１つのコア（以下、最高優先度制御割当コアという）に割り当てるとともに、この最高優先度制御より優先度が低い制御（以下、低優先度制御という）を最高優先度コア以外のコアに割り当てるように構成されたものがある。
【０００３】
そして、このようなマルチコア構成の電子制御装置において、最高優先度制御割当コアに異常が発生したか否かを監視するコア（以下、監視コアという）を備え、最高優先度制御割当コアの異常を監視コアが検出した場合に、最高優先度制御割当コア以外のコアのうちで予め設定されたコア（以下、異常時設定コアという）に対して、異常時設定コアに割り当てられていた低優先度制御の実行を停止して、その代わりに最高優先度制御を実行させるようにしたものが知られている（例えば、特許文献１参照）。これにより、最高優先度制御を継続的に実行することが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３０５３１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載の技術では、低優先度制御を実行していた上記の異常時設定コアに最高優先度制御を実行させるようにするために、一旦、異常時設定コアを再起動させて初期化する必要がある。このため、異常時設定コアの再起動が完了するまで最高優先度制御が実行できないという問題があった。
【０００６】
本発明は、こうした問題に鑑みなされたものであり、マルチコア構成の車載電子制御装置において、優先度の高い制御の中断期間を短縮することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた請求項１に記載の車載電子制御装置は、複数のコアを備え、複数のコアのうち、当該車載電子制御装置が実行する制御処理の中で優先度が高い処理として予め設定された処理である重要処理を実行するコアをメインコアとし、複数のコアのうち、重要処理より優先度が低い処理として予め設定された処理である通常処理を実行するコアをサブコアとし、サブコアは、当該サブコアが実行する処理を管理する一つ以上の第１サブスケジューラおよび一つ以上の第２サブスケジューラと、第１サブスケジューラおよび第２サブスケジューラを管理するメインスケジューラとを動作させるように構成され、メインスケジューラは、メインコアに異常が発生していない場合には、サブコアが処理を実行するために必要な時間であるリソースを第１サブスケジューラに割り当てるとともに、リソースを第２サブスケジューラに割り当てないようにすることにより、第１サブスケジューラに通常処理を実行させるとともに第２サブスケジューラを停止させ、メインコアに異常が発生した場合には、リソースを第１サブスケジューラおよび第２サブスケジューラに割り当てることにより、第１サブスケジューラに通常処理を実行させるとともに第２サブスケジューラに重要処理を実行させることを特徴とする。
【０００８】
このように構成された車載電子制御装置では、メインコアに異常が発生すると、メインコアに異常が発生していない場合にはリソースが割り当てられないことで停止している第２サブスケジューラに対して、リソースを割り当てることによって、第２サブスケジューラに重要処理を実行させることができる。すなわち、メインコアに異常が発生した後にサブコアを再起動させることなく、サブコアが重要処理を実行することができる。そして、コアにおいてリソースを変更するのに要する時間は、コアを再起動するのに要する時間よりも短い。このため、重要処理を実行するメインコアに異常が発生した場合に、メインコアに代わってサブコアが重要処理の実行を開始するまでの中断期間を短縮することができる。
【０００９】
また、請求項１に記載の車載電子制御装置において、サブコアを複数備え、複数のサブコアはそれぞれ、互いに異なる通常処理を第１サブスケジューラで実行するとともに、分割された重要処理のうち互いに異なる処理を第２サブスケジューラで実行し、重要処理は、車両を制御するための複数の車両制御処理で構成されている場合には、請求項２に記載のように、重要処理は、複数の車両制御処理のうちで、処理順序が変更されると車両制御に不都合を生じさせる可能性のある処理が同一のサブコア内で実行されるように分割されるようにするとよい。
【００１０】
このように構成された車載電子制御装置によれば、処理順序が変更されると車両制御に不都合を生じさせる可能性のある複数の処理がそれぞれ異なるサブコアで実行されることにより処理順序が変更されてしまうという事態の発生を抑制して、車両制御における不都合の発生を抑制することができる。
【００１１】
また、請求項１または請求項２に記載の車載電子制御装置において、請求項３に記載のように、メインスケジューラは、第２サブスケジューラが第１サブスケジューラより優先して処理を実行するように管理するようにするとよい。
【００１２】
このように構成された車載電子制御装置では、メインコアに異常が発生した場合に、重要処理を実行する第２サブスケジューラが、通常処理を実行する第１サブスケジューラよりも優先される。すなわち、メインコアに異常が発生した場合であっても、メインコアが実行していた重要処理を、サブコアにおいて、通常処理よりも優先して実行することができる。これにより、通常処理を優先して実行したために重要処理のリソースが少なくなり重要処理を実行できなくなってしまうという事態の発生を防止することができる。
【００１３】
また、請求項１〜請求項３の何れか１項に記載の車載電子制御装置において、請求項４に記載のように、サブコアは、メインコアから、異常判定のために予め設定された異常判定用信号を入力し、異常判定用信号に基づいて、メインコアに異常が発生したか否かを判定する異常判定手段を備えるようにするとよい。
【００１４】
このように構成された車載電子制御装置よれば、メインコアの異常を検出する機能をサブコアが備えるため、メインコアの異常を検出するためのコアを別途設ける必要がなくなる。
【００１５】
また、請求項１〜請求項４の何れか１項に記載の車載電子制御装置において、請求項５に記載のように、重要処理を実行するための重要処理プログラムと、通常処理を実行するための通常処理プログラムとを記憶するメモリを備え、メインコアおよびサブコアは、メモリにアクセスしてプログラムを取得することにより処理を実行することができるように構成され、メモリ管理手段が、メインコアに異常が発生していない場合には、サブコアが重要処理プログラムにアクセス不能であり、メインコアに異常が発生した場合にはサブコアが重要処理プログラムにアクセス可能であるように、メモリへのアクセスを管理するようにするとよい。
【００１６】
このように構成された車載電子制御装置によれば、メインコアに異常が発生すると重要処理プログラムにアクセス可能である必要があるサブコアにおいて、メインコアに異常が発生していないときに誤って重要処理プログラムにアクセスして重要処理を実行してしまうという事態の発生を防止することができる。
【図面の簡単な説明】
【００１７】
【図１】ＥＣＵ１の構成を示すブロック図である。
【図２】第１実施形態のＥＣＵ１の通常動作時におけるコア２１，２２，２３の動作を説明するブロック図である。
【図３】ＭＭＵ１４によるＲＡＭ１３の管理方法を説明する図である。
【図４】第１実施形態の異常時代替処理の実行状態を示すフローチャートである。
【図５】第１実施形態のコア２１の異常時におけるコア２１，２２，２３の動作を説明するブロック図である。
【図６】重要処理の内容と配分を示す図である。
【図７】第２実施形態のＥＣＵ１の通常動作時におけるコア２１，２２，２３の動作を説明するブロック図である。
【図８】第２実施形態の異常時代替処理の実行状態を示すフローチャートである。
【図９】第２実施形態の重要処理の配分を示すタイミングチャートである。
【図１０】第３実施形態の異常時代替処理の実行状態を示すフローチャートである。
【図１１】第２コア２２の通常処理の内容と、第３実施形態の重要処理および通常処理の配分を示す図である。
【発明を実施するための形態】
【００１８】
（第１実施形態）
以下に本発明の第１実施形態について図面とともに説明する。
図１は、本実施形態の電子制御装置（以下、ＥＣＵという）１の構成を示すブロック図である。
【００１９】
ＥＣＵ１は、車両に搭載され、図１に示すように、マイコン（マイクロコンピュータ）３と入力回路４と出力回路５とを備えている。
これらのうちマイコン３は、クランク軸センサからのクランク信号、カム軸センサからの気筒判別用信号、水温センサやスロットル開度センサ等からの他の各種センサ信号、およびトランスミッションのシフトポジションスイッチやエアコンスイッチ等からの各種スイッチ信号を入力回路４を介して取り込み、それら各種信号に基づいて、インジェクタへ出力回路５を介して駆動信号を出力する燃料噴射制御や、点火装置へ出力回路５を介して駆動信号を出力する点火時期制御などのエンジン制御を実施する。
【００２０】
またマイコン３は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、メモリ管理ユニット（以下、ＭＭＵという）１４、Ｉ／Ｏ１５及びこれらの構成を接続するバスラインなどから構成され、ＲＯＭ１２およびＲＡＭ１３に記憶されたプログラムに基づいて、エンジンを制御するための各種処理を実行する。
【００２１】
さらにＣＰＵ１１は、ＣＰＵコア（以下、単にコアという）２１，２２，２３で構成されている。なお以下、コア２１、コア２２、およびコア２３をそれぞれ、第１コア２１、第２コア２２、および第３コア２３ともいう。そして、第１コア２１と第２コア２２との間、および第１コア２１と第３コア２３との間はデータ通信可能に接続されている。
【００２２】
図２は、ＥＣＵ１の通常動作時におけるコア２１，２２，２３およびＭＭＵ１４の動作を説明するブロック図である。
図２に示すように、第１コア２１は、ＥＣＵ１が実行する処理の中で最も優先度が高い処理（以下、重要処理という）を、第１コア２１で実行可能な処理負荷の８０％を使用して実行する。
【００２３】
また第２コア２２は、第２コア２２が実行する処理を管理するサブスケジューラ３１，３２と、サブスケジューラ３１，３２を管理するメインスケジューラ３５とを動作させる。そしてサブスケジューラ３１は、第１コア２１が実行する重要処理より優先度が低い処理（以下、通常処理という）を、第２コア２２で実行可能な処理負荷の６０％を使用して実行し、サブスケジューラ３２は、第１コア２１の異常時に重要処理を実行するように構成されている。なお、上記スケジューラによるスケジューリング方法として、例えば、ＥＤＦまたはＰｒｅｅｍｐｔｉｏｎを用いることができる。
【００２４】
また第３コア２３は、第３コア２３が実行する処理を管理するサブスケジューラ４１，４２と、サブスケジューラ４１，４２を管理するメインスケジューラ４５とを動作させる。そしてサブスケジューラ４１は、第２コア２２とは異なる通常処理を、第３コア２３で実行可能な処理負荷の５０％を使用して実行し、サブスケジューラ４２は、第１コア２１の異常時に重要処理を実行するように構成されている。
【００２５】
またＲＡＭ１３には、コア２１，２２，２３それぞれに割り当てられた第１，２，３コア用記憶領域５１，５２，５３が設けられている。そしてＭＭＵ１４は、ＥＣＵ１の通常動作時において、第１，２，３コア用記憶領域５１，５２，５３それぞれに対してコア２１，２２，２３のみがアクセスすることができるようにＲＡＭ１３を管理する。
【００２６】
図３は、ＭＭＵ１４によるＲＡＭ１３の管理方法を説明する図である。
ＭＭＵ１４は、第１，２，３コア用記憶領域５１，５２，５３に設定されたアクセス権を用いて、図３に示すように、特定のコアに割り当てられた記憶領域に対する他のコアからのアクセスを制限することにより、メモリ保護を行う。このときアクセス権の設定は特定の特権レベルでの操作によって変更できる。特権レベルとは、コア２１，２２，２３の動作モードであり、本実施形態では、権限が強い順に、ハイパーバイザモード、およびユーザモードが設定可能に構成され、ハイパーバイザモードを使用することでＭＭＵ１４のアクセス権を変更することができる。アクセス権は、第１，２，３コア用記憶領域５１，５２，５３にアクセスすることができる権利である。
【００２７】
具体的には、第１コア用記憶領域５１はアクセス権がコア２１に設定され、第２コア用記憶領域５２はアクセス権がコア２２に設定され、第３コア用記憶領域５３はアクセス権がコア２３に設定されている。
【００２８】
すなわちＭＭＵ１４は、ＥＣＵ１の通常動作時において、第１，２，３コア用記憶領域５１，５２，５３それぞれに対してコア２１，２２，２３のみがアクセスすることができるようにＲＡＭ１３を管理する。
【００２９】
このように構成されたＥＣＵ１において、マイコン３が起動（電源オン）して動作を開始すると、コア２１は、ＲＡＭ１３の第１コア用記憶領域５１にアクセスし、重要処理のプログラムを読み出して実行する。
【００３０】
またコア２２は、マイコン３が起動すると、ＲＡＭ１３の第２コア用記憶領域５２にアクセスし、メインスケジューラ３５のプログラムを読み出して実行する。これによりメインスケジューラ３５は、サブスケジューラ３１，３２を起動する。但し、メインスケジューラ３５は、サブスケジューラ３１にリソースを割り当てることでサブスケジューラ３１を動作させる一方、サブスケジューラ３２にはリソースを割り当てないことでサブスケジューラ３２の動作を停止させる。なお、上記のリソースは、コアの実時間性を保証できる時間のうち、処理の実行に対して割り当てられる時間である。そしてサブスケジューラ３１がその動作を開始すると、ＲＡＭ１３の第２コア用記憶領域５２にアクセスし、通常処理のプログラムを読み出して実行する。
【００３１】
またコア２３は、マイコン３が起動すると、コア２２と同様にして、ＲＡＭ１３の第３コア用記憶領域５３にアクセスし、メインスケジューラ４５のプログラムを読み出して実行する。これによりメインスケジューラ４５は、サブスケジューラ４１，４２を起動する。但し、メインスケジューラ４５は、サブスケジューラ４１にリソースを割り当てることでサブスケジューラ４１を動作させる一方、サブスケジューラ４２にはリソースを割り当てないことでサブスケジューラ４２の動作を停止させる。そしてサブスケジューラ４１がその動作を開始すると、ＲＡＭ１３の第３コア用記憶領域５３にアクセスし、通常処理のプログラムを読み出して実行する。
【００３２】
またコア２２，２３は、コア２１の異常を検出した場合に重要処理をコア２１の代わりに行うための異常時代替処理を、上記通常処理の一部として実行する。異常時代替処理は、サブスケジューラ３１，４１がその動作を開始すると処理を開始し、サブスケジューラ上でその他の通常処理とは独立に処理を実行する。
【００３３】
ここで、コア２２，２３が実行する異常時代替処理の手順を図４〜６を用いて説明する。図４は異常時代替処理の実行状態を示すフローチャートである。図５は、コア２１の異常時におけるコア２１，２２，２３およびＭＭＵ１４の動作を説明するブロック図である。図６（ａ）は重要処理の内容を示す図、図６（ｂ）は重要処理の配分を示すタイミングチャートである。
【００３４】
この異常時代替処理が実行されると、コア２２（コア２３）は、まずＳ１０にて、第１コア２１で異常が発生したか否かを判断する異常判断処理を実行する。本実施形態では例えば、第１コア２１からウォッチドッグタイマの値を示す信号（以下、ＷＤＴ信号という）を入力し、このＷＤＴ信号が示す値が予め設定された異常判定値以上である場合に、第１コア２１で異常が発生したと判断する。
【００３５】
そしてＳ２０にて、Ｓ１０での判断結果に基づいて、第１コア２１で異常が発生したか否かを判断する。ここで、第１コア２１で異常が発生していない場合には（Ｓ２０：ＮＯ）、Ｓ１０に移行して、上述の処理を実行する状態に戻る。一方、第１コア２１で異常が発生した場合には（Ｓ２０：ＹＥＳ）、Ｓ３０にて、自身の動作モードをハイパーバイザモードに設定し、ＭＭＵ１４におけるＲＡＭ１３のアクセス権を、コア２２，２３から第１コア用記憶領域５１にアクセスできるように変更する。これによりコア２２，２３は、ＲＡＭ１３から重要処理のプログラムを読み出せるようになる。さらにＳ４０にて、第１コア２１へリセット信号を出力する。これにより、第１コア２１は動作を停止する。
【００３６】
その後Ｓ５０にて、サブスケジューラのリソースを変更する。具体的には、メインスケジューラ３５（４５）が、サブスケジューラ３１（４１）とサブスケジューラ３２（４２）の両方にリソースを割り当てることでサブスケジューラ３１（４１）とサブスケジューラ３２（４２）を動作させる。これにより、サブスケジューラ３２（４２）がその動作を開始すると、図５に示すように、ＲＡＭ１３の第１コア用記憶領域５１にアクセスし、重要処理のプログラムを読み出して実行する。
【００３７】
なお重要処理は、図６（ａ）に示すように、８０％の処理負荷のうち、５０％の処理負荷を、クランク角とカム角を検出する処理（以下、クランク・カム角検出処理という）と、燃料噴射制御および点火時期制御のための処理（以下、噴射・点火制御処理という）に割り当て、３０％の処理負荷を、排気再循環（ＥＧＲ）のバルブ開度制御のための処理（以下、排気再循環処理という）に割り当てている。エンジン制御では、噴射・点火制御処理を行う際に、直前のクランク角とカム角の情報を取得しておく必要があるため、クランク・カム角検出処理と噴射・点火制御処理とを分割せずに、同じコア内で実行する必要がある。一方、排気再循環処理は、処理間のタイミングが比較的重要でない。すなわち、実行する間隔がばらついても制御の目的に対して影響が少ない。このため、クランク・カム角検出処理および噴射・点火制御処理とは異なるコア内で排気再循環処理を実行する。
【００３８】
そして、第２コア２２のサブスケジューラ３２に割り当てられている処理負荷は４０％であるため、５０％の処理負荷を必要とするクランク・カム角検出処理および噴射・点火制御処理を実行することができない。一方、３０％の処理負荷を必要とする排気再循環処理を実行することができる。
【００３９】
また、第３コア２３のサブスケジューラ４２に割り当てられている処理負荷は５０％であるため、５０％の処理負荷を必要とするクランク・カム角検出処理および噴射・点火制御処理を実行することができる。
【００４０】
したがって、図６（ｂ）に示すように、重要処理のうち、３０％の処理負荷を必要とする排気再循環処理が第２コア２２に割り当てられ、５０％の処理負荷を必要とするクランク・カム角検出処理および噴射・点火制御処理が第３コア２３に割り当てられる。
【００４１】
つまり、サブスケジューラ３２は、その動作を開始すると、ＲＡＭ１３の第１コア用記憶領域５１にアクセスし、重要処理の中から、排気再循環処理のプログラムを読み出して実行する。一方、サブスケジューラ４２は、その動作を開始すると、ＲＡＭ１３の第１コア用記憶領域５１にアクセスし、重要処理の中から、クランク・カム角検出処理および噴射・点火制御処理のプログラムを読み出して実行する。
【００４２】
そして、図４に示すように、Ｓ５０の処理が終了すると、Ｓ６０にて、自身の動作モードをユーザモードに設定し、異常時代替処理を終了する。
このように構成されたＥＣＵ１では、メインスケジューラ３５（４５）は、第１コア２１で異常が発生していない場合には、リソースをサブスケジューラ３１（４１）に割り当てるとともに、リソースをサブスケジューラ３２（４２）に割り当てないようにすることにより、サブスケジューラ３１（４１）に通常処理を実行させるとともにサブスケジューラ３２（４２）を停止させ、第１コア２１で異常が発生した場合には、リソースをサブスケジューラ３１（４１）およびサブスケジューラ３２（４２）に割り当てることにより、サブスケジューラ３１（４１）に通常処理を実行させるとともにサブスケジューラ３２（４２）に重要処理を実行させる（Ｓ５０）。
【００４３】
これにより、第１コア２１で異常が発生すると、第１コア２１で異常が発生していない場合にはリソースが割り当てられないことで停止しているサブスケジューラ３２（４２）に対して、リソースを割り当てることによって、サブスケジューラ３２（４２）に重要処理を実行させることができる。すなわち、第１コア２１で異常が発生した後に第２コア２２（第３コア２３）を再起動させることなく、第２コア２２（第３コア２３）が重要処理を実行することができる。そして、コアにおいてリソースを変更するのに要する時間は、コアを再起動するのに要する時間よりも短い。このため、重要処理を実行する第１コア２１で異常が発生した場合に、第１コア２１に代わって第２コア２２（第３コア２３）が重要処理の実行を開始するまでの中断期間を短縮することができる。
【００４４】
また、処理順序が変更されると車両制御に不都合を生じさせる可能性のある処理であるクランク・カム角検出処理と噴射・点火制御処理とを分割せずに、同じコア（すなわち、第２コア２２）内で実行されるように重要処理が分割される。これにより、クランク・カム角検出処理と噴射・点火制御処理がそれぞれ異なるコアで実行されることにより処理順序が変更されてしまうという事態の発生を抑制して、車両制御における不都合の発生を抑制することができる。
【００４５】
また、第２コア２２（第３コア２３）は、第１コア２１から、ＷＤＴ信号を入力し、このＷＤＴ信号が示す値が予め設定された異常判定値以上である場合に、第１コア２１で異常が発生したと判断する（Ｓ１０）。これにより、第１コア２１の異常を検出する機能を第２コア２２（第３コア２３）が備えるため、第１コア２１の異常を検出するためのコアを別途設ける必要がなくなる。
【００４６】
また、ＭＭＵ１４は、第１コア２１に異常が発生していない場合には、第２コア２２（第３コア２３）が第１コア用記憶領域５１にアクセス不能であり、第１コア２１に異常が発生した場合には、第２コア２２（第３コア２３）が第１コア用記憶領域５１にアクセス可能であるように、ＲＡＭ１３へのアクセスを管理する。これにより、第１コア２１に異常が発生すると第１コア用記憶領域５１にアクセス可能である必要がある第２コア２２（第３コア２３）において、第１コア２１に異常が発生していないときに誤って第１コア用記憶領域５１にアクセスして重要処理を実行してしまうという事態の発生を防止することができる。
【００４７】
以上説明した実施形態において、ＥＣＵ１は本発明における車載電子制御装置、第１コア２１は本発明におけるメインコア、第２コア２２および第３コア２３は本発明におけるサブコア、サブスケジューラ３１，４１は本発明における第１サブスケジューラ、サブスケジューラ３２，４２は本発明における第２サブスケジューラ、Ｓ１０の処理は本発明における異常判定手段、ＷＤＴ信号は本発明における異常判定用信号、ＲＡＭ１３は本発明におけるメモリ、ＭＭＵ１４は本発明におけるメモリ管理手段である。
【００４８】
（第２実施形態）
以下に本発明の第２実施形態について図面とともに説明する。なお、第２実施形態では、第１実施形態と異なる部分のみを説明する。
【００４９】
第２実施形態におけるＥＣＵ１は、ＥＣＵ１の通常動作時におけるコア２２，２３の動作と、異常時代替処理が変更された点以外は第１実施形態と同じである。
図７は、第２実施形態のＥＣＵ１の通常動作時におけるコア２１，２２，２３およびＭＭＵ１４の動作を説明するブロック図である。
【００５０】
図７に示すように、第２コア２２のサブスケジューラ３１が、通常処理を、第２コア２２で実行可能な処理負荷の９０％を使用して実行し、第３コア２３のサブスケジューラ４１が、通常処理を、第３コア２３で実行可能な処理負荷の８０％を使用して実行する点以外は第１実施形態と同じである。
【００５１】
次に、第２実施形態における異常時代替処理の手順を図８および図９を用いて説明する。図８は、第２実施形態の異常時代替処理の実行状態を示すフローチャートである。図９は、第２実施形態の重要処理の配分を示すタイミングチャートである。
【００５２】
図８に示すように、第２実施形態の異常時代替処理は、Ｓ５０の処理が省略されてＳ５４の処理が追加された点以外は第１実施形態と同じである。
すなわち、Ｓ４０の処理が終了すると、Ｓ５４にて、サブスケジューラのリソースと優先度を変更し、その後にＳ６０に移行する。すなわちＳ５４では、サブスケジューラ３１（４１），３２（４２）に割り当てられているリソースを変更するとともに、サブスケジューラ３１（４１）よりもサブスケジューラ３２（４２）の優先度を高くする。具体的には、メインスケジューラ３５（４５）が、サブスケジューラ３１（４１）に割り当てていたリソースを処理負荷の９０％（８０％）から７０％（５０％）に変更するとともに、サブスケジューラ３２（４２）に割り当てていたリソースを処理負荷の０％（０％）から３０％（５０％）に変更し、さらに、サブスケジューラ３１（４１）よりもサブスケジューラ３２（４２）の方を先に実行させる。
【００５３】
これにより、図９に示すように、第１コア２１で異常が発生すると、第２コア２２において、第１コア２１が実行していた８０％の重要処理のうち３０％の処理が実行された後に、第２コア２２が実行していた９０％の通常処理のうち７０％の処理が実行される制御が繰り返される。また、第３コア２３において、第１コア２１が実行していた８０％の重要処理のうち５０％の処理が実行された後に、第３コア２３が実行していた８０％の通常処理のうち５０％の処理が実行される制御が繰り返される。
【００５４】
このように構成されたＥＣＵ１では、第１コア２１に異常が発生した場合に、重要処理を実行するサブスケジューラ３２（４２）が、通常処理を実行するサブスケジューラ３１（４１）よりも優先される（Ｓ５４）。すなわち、第１コア２１に異常が発生した場合であっても、第１コア２１が実行していた重要処理を、第２コア２２（第３コア２３）において、通常処理よりも優先して実行することができる。これにより、通常処理を優先して実行したために重要処理のリソースが少なくなり重要処理を実行できなくなってしまうという事態の発生を防止することができる。
【００５５】
（第３実施形態）
以下に本発明の第３実施形態について図面とともに説明する。なお、第３実施形態では、第２実施形態と異なる部分のみを説明する。
【００５６】
第３実施形態におけるＥＣＵ１は、異常時代替処理が変更された点以外は第２実施形態と同じである。
次に、第３実施形態における異常時代替処理の手順を図１０および図１１を用いて説明する。図１０は、第３実施形態の異常時代替処理の実行状態を示すフローチャートである。図１１（ａ）は第２コア２２の通常処理の内容を示す図、図１１（ｂ）は第３実施形態の重要処理および通常処理の配分を示すタイミングチャートである。
【００５７】
図１０に示すように、第３実施形態の異常時代替処理は、Ｓ５２の処理が追加された点以外は第２実施形態と同じである。
すなわち、Ｓ４０の処理が終了すると、Ｓ５２にて、サブスケジューラ３１（４１）が実行している通常処理のうちで、動作が停止しても影響が小さいものとして予め設定されている処理を停止し、その後にＳ５４に移行する。
【００５８】
例えば、第２コア２２のサブスケジューラ３１が実行する通常処理において、図１１（ａ）に示すように、９０％の処理負荷のうち、６０％の処理負荷を電源制御処理に割り当て、３０％の処理負荷を省燃費制御処理に割り当てているとすると、動作が停止しても車両の安全性に影響が少ない省燃費制御処理を停止させる。
【００５９】
これにより、図１１に示すように、第１コア２１で異常が発生すると、第２コア２２において、第２コア２２が実行していた９０％の通常処理のうち動作が停止しても影響が小さいものとして予め設定されている３０％の処理が停止し、次に、第１コア２１が実行していた８０％の重要処理のうち３０％の処理が実行された後に、第２コア２２が実行していた９０％の通常処理のうち６０％の処理が実行される制御が繰り返される。
【００６０】
また、第１コア２１で異常が発生すると、第３コア２３において、第３コア２３が実行していた８０％の通常処理のうち動作が停止しても影響が小さいものとして予め設定されている３０％の処理が停止し、次に、第１コア２１が実行していた８０％の重要処理のうち５０％の処理が実行された後に、第３コア２３が実行していた８０％の通常処理のうち５０％の処理が実行される制御が繰り返される。
【００６１】
このように構成されたＥＣＵ１では、通常処理のうち動作が停止しても影響が小さいものとして予め設定されている処理が停止される（Ｓ５２）。これにより、停止した分のリソースを重要処理に割り当てることができる。このため、通常処理に割り当てられたリソースのために重要処理のリソースが少なくなり重要処理を実行できなくなってしまうという事態の発生を防止することができる。
【００６２】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
例えば上記実施形態においては、ウォッチドッグタイマを用いてコア２２，２３側でコア２１の異常を検出するものを示したが、コア２１の異常検出方法はこれに限定されるものではなく、例えばロックステップを用いてもよい。
【符号の説明】
【００６３】
１…ＥＣＵ、３…マイコン、４…入力回路、５…出力回路、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…ＭＭＵ、１５…Ｉ／Ｏ、２１…第１コア、２２…第２コア、２３…第３コア、３１，３２，４１，４２…サブスケジューラ、３５，４５…メインスケジューラ、５１…第１コア用記憶領域、５２…第２コア用記憶領域、５３…第３コア用記憶領域
【図１】
0005533789.tif 000002
【図２】
0005533789.tif 000003
【図４】
0005533789.tif 000004
【図５】
0005533789.tif 000005
【図７】
0005533789.tif 000006
【図８】
0005533789.tif 000007
【図１０】
0005533789.tif 000008
【図３】
0005533789.tif 000009
【図６】
0005533789.tif 000010
【図９】
0005533789.tif 000011
【図１１】
0005533789.tif 000012