(57)【要約】【課題】複数のマイコンによる処理の順序の維持を実現する技術を提供する。【解決手段】電子制御装置１の第１のマイコンのＣＰＵ２１は、第１の処理を実行して第１出力値を取得し、また、第１のマイコンの処理負荷が所定の閾値以上となる高負荷状態であることを検出する。ＣＰＵ２１は、高負荷状態であることが検出されたときには、上記第１の処理のうちの一部の処理である第１部分処理のみを実行して第２出力値を取得する。第２のマイコンのＣＰＵ３１は、第１出力値を取得したときには、該第１出力値を用いる第２の処理を実行し、第２出力値を取得したときには、第１の処理における第１部分処理以外の処理である第２部分処理を実行し、第２部分処理による出力値を用いて第２の処理を実行する。【選択図】図１
2018085038.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも、複数の処理を含むルーチンを繰り返し実行するように構成された複数のマイクロコンピュータを備え、それらが通信可能に構成された電子制御装置（１）であって、
第１のマイクロコンピュータ（１１）は、
第１の処理を実行して第１出力値を取得するように構成された第１処理部（２１、Ｓ１３）と、
前記第１のマイクロコンピュータの処理負荷が所定の閾値以上となる高負荷状態であることを検出するように構成された検出部（２１、Ｓ１７）と、を備え、
前記第１処理部は、前記検出部により前記高負荷状態であることが検出されたときには、前記第１の処理のうちの一部の処理である第１部分処理のみを実行して、該第１部分処理による出力値である第２出力値を取得するように構成されており、
第２のマイクロコンピュータ（１２）は、
前記第１の処理にて出力された前記第１出力値を取得したときには、該第１出力値を用いる第２の処理を実行するとともに、前記第１部分処理にて出力された前記第２出力値を取得したときには、前記第１の処理における前記第１部分処理以外の処理である第２部分処理を実行し、該第２部分処理による出力値を用いて前記第２の処理を実行するように構成された第２処理部（３１、Ｓ２５）を備える、電子制御装置。
【請求項２】
請求項１に記載の電子制御装置であって、
前記第１のマイクロコンピュータと、前記第２のマイクロコンピュータと、の通信を、ダイレクトメモリアクセスにより実現するダイレクトメモリアクセスコントローラ（２４、３４）を有しており、
前記高負荷状態とは、前記第１処理部による前記第１出力値の前記ダイレクトメモリアクセスコントローラのバッファ（２４ａ）への格納が完了する時刻が、前記ダイレクトメモリアクセスコントローラによる前記第１出力値の前記第２のマイクロコンピュータへの送信を開始する時刻よりも遅くなると予想される状態である、電子制御装置。
【請求項３】
請求項１又は請求項２に記載の電子制御装置であって、
前記第２処理部は、前記第２出力値を取得した場合には、まず前記第２部分処理を実行し、その後、前記第２処理部により該第２部分処理による出力値を用いて前記第２の処理を実行するように構成されている、電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも、複数の処理を含むルーチンを繰り返し実行するように構成された複数のマイクロコンピュータを備えた電子制御装置に関する。
【背景技術】
【０００２】
複数のマイクロコンピュータ（以下、マイコン）を有し、それぞれが周回ベースルーチンに従って処理を行う電子制御装置がある。特許文献１では、１つのマイコンの周回時間が所定時間を超えたときに、他のマイコンにデータ処理を移管するデータ処理方法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−１６０５１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のマイコン間でタイムスケジューリングを組み、一つのマイコンで実行した処理の結果のデータを他のマイコンで参照するように処理の順序を定めた場合において、上述した一つのマイコンの処理が遅延してしまうと、他のマイコンにて参照するデータが最新の値ではなくなってしまうおそれがある。特許文献１の技術では、周回時間を基準としてデータ処理を移管するため、周回時間は所定時間以内であっても、第１の処理の終了が遅延しているという場合が起こりうる。そこで、処理の順序を維持するために、処理の遅延の発生を抑制する他の方法が求められている。
【０００５】
本開示は、複数のマイコンによる処理の順序の維持を実現する技術を提供する。
【課題を解決するための手段】
【０００６】
本開示の第１の態様は、少なくとも、複数の処理を含むルーチンを繰り返し実行するように構成された複数のマイクロコンピュータを備え、それらが通信可能に構成された電子制御装置（１）である。
【０００７】
第１のマイクロコンピュータ（１１）は、第１の処理を実行して第１出力値を取得するように構成された第１処理部（２１、Ｓ１３）と、上記第１のマイクロコンピュータの処理負荷が所定の閾値以上となる高負荷状態であることを検出するように構成された検出部（２１、Ｓ１７）と、を備えている。上記第１処理部は、上記検出部により上記高負荷状態であることが検出されたときには、上記第１の処理のうちの一部の処理である第１部分処理のみを実行して、該第１部分処理による出力値である第２出力値を取得するように構成されている。
【０００８】
また、第２のマイクロコンピュータ（１２）は、第２処理部（３１、Ｓ２５）を備えている。この第２処理部は、上記第１の処理にて出力された上記第１出力値を取得したときには、該第１出力値を用いる第２の処理を実行するように構成されている。また、上記第２処理部は、上記第１部分処理にて出力された上記第２出力値を取得したときには、上記第１の処理における上記第１部分処理以外の処理である第２部分処理を実行し、第２部分処理による出力値を用いて上記第２の処理を実行するように構成されている。
【０００９】
このような構成によれば、検出部により第１のマイクロコンピュータ高負荷状態であることが検出された場合には、第１のマイクロコンピュータにより実行される第１の処理の一部を第２のマイクロコンピュータに移管する。よって、第１の処理の出力が遅れてしまい、第２の処理がその最新の出力値を用いることができなくなるという状態を回避しやすくなり、複数のマイコンによる処理の順序の維持を実現することができる。
【００１０】
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】電子制御装置の構成を示すブロック図である。
【図２】遅延が発生していない場合の処理を模式的に示すタイミングチャートである。
【図３】遅延が発生した場合であって、本開示の処理を適用しない場合のタイミングチャートである。
【図４】遅延が発生した場合であって、本開示の処理を適用する場合のタイミングチャートである。
【図５】第１実施形態のベースルーチンＲ１のフローチャートである。
【図６】第１実施形態のベースルーチンＲ２のフローチャートである。
【図７】第１実施形態のモジュールＭ１Ａのフローチャートである。
【図８】第１実施形態のモジュールＭ２Ａのフローチャートである。
【図９】第２実施形態のモジュールＭ１Ａのフローチャートである。
【図１０】第２実施形態のモジュールＭ２Ａのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本開示の実施形態を説明する。
［１．第１実施形態］
［１−１．構成］
図１に示す電子制御装置（Electronic Control Unit：以下ＥＣＵ１）は、第１マイクロコンピュータ（以下、第１マイコン１１）と、第２マイクロコンピュータ（以下、第２マイコン１２）とを有しており、それらが互いに通信可能に構成されている。
【００１３】
第１マイコン１１は、ＣＰＵ２１と、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の半導体メモリ（以下、メモリ２２）と、ポート２３と、ダイレクトメモリアクセスコントローラ２４（以下、ＤＭＡＣ２４）と、を含んでいる。
【００１４】
また第２マイコン１２は、第１マイコン１１と同様に、ＣＰＵ３１と、メモリ３２と、ポート３３と、ダイレクトメモリアクセスコントローラ３４（以下、ＤＭＡＣ３４）と、を含んでいる。
【００１５】
第１マイコン１１及び第２マイコン１２の各種機能は、ＣＰＵ２１、ＣＰＵ３１が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、メモリ２２、メモリ３２が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムの実行により、プログラムに対応する方法が実行される。
【００１６】
第１マイコン１１及び第２マイコン１２は、それぞれのポート２３、ポート３３間の通信によりクロックの同期を実行する。また、ＤＭＡＣ２４、ＤＭＡＣ３４間の通信により、第１マイコン１１と第２マイコン１２の間のデータ転送が実行される。ＤＭＡＣ２４及びＤＭＡＣ３４は、それぞれバッファ２４ａ、３４ａを有しており、各バッファに格納されたデータが所定のタイミングで他方に転送される。
【００１７】
［１−２．処理］
第１マイコン１１のＣＰＵ２１は、それぞれ別個の機能を実現するための複数のモジュールを含むベースルーチンＲ１を、一定の周期で実行する。このベースルーチンＲ１に含まれるモジュールの１つであるモジュールＭ１Ａは、その処理によって第１出力値を出力する。この第１出力値は、第２マイコン１２にて用いられる。モジュールＭ１Ａが、第１の処理に相当する。また、ＣＰＵ２１が、第１処理部、及び検出部に相当する。
【００１８】
第２マイコン１２のＣＰＵ３１は、ＣＰＵ２１と同様に、それぞれ別個の機能を実現するための複数のモジュールを含むベースルーチンＲ２を、一定の周期で実行する。このベースルーチンＲ２に含まれるモジュールの１つであるモジュールＭ２Ａは、第１出力値を用いる処理を実行するとともに、後述する第２出力値を用いる処理も実行する。モジュールＭ２Ａのうち、第１出力値を用いる処理が、第２の処理に相当する。また、ＣＰＵ３１が、第２処理部に相当する。
【００１９】
第１マイコン１１と第２マイコン１２とは、ベースルーチンＲ１及びベースルーチンＲ２について、クロックを同期させたスケジューリング処理を行うように構成されている。この目的は、図２に示されるように、モジュールＭ１Ａによる第１出力値であるデータ（Ｘ）を、即座にモジュールＭ２Ａにて用いることができるようにすることである。具体的には、ＣＰＵ２１がベースルーチンＲ１を実行中において、モジュールＭ１Ａの処理が終了し、モジュールＭ１Ａによる出力値であるデータ（Ｘ）がバッファ２４ａに格納された後に、ダイレクトメモリアクセス（以下、ＤＭＡ通信）により転送されたデータ（Ｘ）を用いてモジュールＭ２Ａの処理が実行されるように予定されている。なお図２〜図４においては、理解を容易にする目的で、モジュールＭ１Ａ、モジュールＭ２Ａ、及びデータ転送以外の他のモジュールについては模式的に示されている。
【００２０】
ここで、仮に、ＣＰＵ２１の処理負荷の増加によって処理時間が長くなり、モジュールＭ１Ａにより出力されたデータ（Ｘ）のバッファ２４ａへの格納が完了する時刻が、ＤＭＡ通信によりデータ（Ｘ）を第２マイコン１２に送信するように設定された時刻よりも遅れる状態である遅延状態となった場合、処理の移管を行わないと、図３に示されるように、モジュールＭ１Ａの出力値であるデータ（Ｘ）が、次に実行されるモジュールＭ２Ａにおいて使用されず、モジュールＭ２Ａではデータ（Ｘ）よりも以前の出力値であるデータ（Ｘ−１）を用いることとなってしまう。
【００２１】
そこで、処理負荷の増加により遅延状態となる危険性が高いと判断された場合、即ち、処理負荷が所定の閾値以上である高負荷状態であることが検出される場合には、図４に示されるように、ベースルーチンＲ１においてモジュールＭ１Ａの一部を実行せず、ベースルーチンＲ２に移管する。
【００２２】
換言すると、ＤＭＡ通信の開始にデータ（Ｘ）のバッファへの格納が間に合わない可能性が高い場合には、モジュールＭ１Ａを最後まで実行せず、途中の状態で移管する。高負荷状態であることの判断基準は、ＤＭＡＣ２４によってデータ（Ｘ）の第２マイコン１２への送信を開始する時刻よりも、データ（Ｘ）のＤＭＡＣ２４のバッファ２４ａへの格納が完了する時刻である完了時刻が遅くなると予想される場合である。
【００２３】
なお、取得された処理負荷に基づいて、処理の途中段階である上述した完了時刻を厳密に特定することはできない場合がある。そこで、処理負荷と完了時刻との関係を予め試験的に求めておき、完了時刻が上述した送信開始時刻よりも早くなる蓋然性の高い処理負荷の値を予め取得しておくことが考えられる。
【００２４】
ＤＭＡ通信では、モジュールＭ１Ａの一部の処理が実行された状態の出力値であるデータ（Ｙ）を第２マイコン１２に転送する。このデータ（Ｙ）が、第２出力値に相当する。
第２マイコン１２のＣＰＵ３１は、ベースルーチンＲ２のモジュールＭ２Ａにおいて、データ（Ｙ）を用いてモジュールＭ１Ａの残りの処理を実行し、その後、モジュールＭ２Ａの通常の処理を実行する。
【００２５】
なお、確認的に記載すると、第１出力値であるデータ（Ｘ）が、モジュールＭ１Ａにおいて全ての処理が実行されたときの出力値である。また、第２出力値であるデータ（Ｙ）が、モジュールＭ１Ａにおいて一部の処理が実行されたときの出力値である。以下の説明においては、第１出力値、第２出力値という表現を用いて説明を行う場合がある。
【００２６】
次に、ＣＰＵ２１が実行するベースルーチンＲ１について、図５のフローチャートを用いて説明する。なお、フローチャートにて説明する各モジュールは、具体的に説明する部分を除いて、その機能については何ら限定されるものではないので、詳細な説明は割愛する。
【００２７】
まず、Ｓ１１では、ＣＰＵ２１は、スケジュール同期信号を生成する。生成された信号は、ポート２３、ポート２４間の通信により第２マイコン１２に送信される。
Ｓ１２では、ＣＰＵ２１は、モジュールＭ１１を実行する。
【００２８】
Ｓ１３では、ＣＰＵ２１は、モジュールＭ１Ａを実行する。ここでは、モジュールＭ１Ａに含まれる全てのサブモジュールを実行して第１出力値を出力する場合と、モジュールＭ１Ａのうちの一部のサブモジュールのみを実行して第２出力値を出力する場合と、を含む。このモジュールＭ１Ａのサブルーチンについては後述する。
【００２９】
Ｓ１４では、ＣＰＵ２１は、Ｓ１３にて出力された出力値を、ＤＭＡバッファにデータ代入処理する。なおＤＭＡバッファに代入処理される出力値としては、第１出力値、第２出力値のいずれの場合もある。またここでは、モジュールＭ１Ａにおいて実行された処理内容を特定できる情報も代入処理される。
【００３０】
Ｓ１５では、ＣＰＵ２１は、モジュールＭ１２を実行する。このモジュールＭ１２以下、異なる複数のモジュールが実行されるが、説明を省略する。
Ｓ１６では、ＣＰＵ２１は、現在の処理負荷の確認を行う。具体的には、ベースルーチンＲ１を実行する間のＣＰＵ２１のアイドル状態の占める割合、換言するとベースルーチンＲ１が１周回する周期中のアイドル状態を示すパラメータの積算値によりＣＰＵ２１の処理負荷の状態を確認する。なお、アイドル状態を示すパラメータとは、例えば、ＣＰＵの処理能力全体を１００％としたときの、ＣＰＵの処理を実行していない度合とすることができる。よって、アイドル状態の占める割合が大きいほど、処理負荷は小さい。
【００３１】
なお、処理負荷の確認方法は上記の方法に限定されない。例えばモジュールごとに処理負荷を確認してもよいし、アイドル状態を示すパラメータ以外のパラメータから処理負荷を確認してもよい。例えば、モジュールごとの処理に掛かる時間や、ベースルーチンＲ１の開始からＳ１４の処理が終了するまでの時間を、処理負荷のパラメータとしてもよい。
【００３２】
Ｓ１７では、ＣＰＵ２１は、Ｓ１６の結果に基づいて、モジュールＭ１Ａの一部の処理を移管するか否かの判定をする。判定の基準は、Ｓ１６にて取得された処理負荷が所定の閾値を超える状態である、上述した高負荷状態であることが検出されるか否かに基づく。
【００３３】
上述した閾値は、上述した遅延状態となり得る処理負荷を基準としてその値よりも余裕を持った値に設定される。Ｓ１４の処理の終了時刻が、ＤＭＡ通信の開始の時刻よりも早い時刻として設定された、閾値となる時刻よりも遅くなると予想される場合には、高負荷状態と判断され、モジュールＭ１Ａの処理の一部を移管すると判断される。高負荷状態でなければ、処理の移管を実行しないと判断される。
【００３４】
なお、移管をするか否かの判断基準は上記の手法に限定されない。例えば、Ｓ１６にて取得された処理負荷と、過去の一定期間における平均の処理負荷と、を比較して、処理負荷の伸び率が所定の閾値以上であるときに、移管をすると判定してもよい。また、モジュールＭ１Ａの処理負荷と、過去の一定期間におけるモジュールＭ１Ａの平均の処理負荷と、を比較して、処理負荷の伸び率が所定の閾値以上であるときに、移管をすると判定してもよい。
【００３５】
このＳ１７判定結果に基づいて、次回のベースルーチンＲ１のＳ１３において、モジュールＭ１Ａに含まれるサブモジュールのうちから、実行される処理が決定される。
このＳ１７の後、ベースルーチンＲ１の処理を終了する。
【００３６】
続いて、ＣＰＵ３１が実行するベースルーチンＲ２について、図６のフローチャートを用いて説明する。
Ｓ２１では、ＣＰＵ３１は、スケジュール同期信号を受信して、スケジュールの同期を行う。ここでスケジュールの同期を行うことにより、上述したＳ１３、Ｓ１４、ダイレクトメモリアクセスによるデータの転送、が実行された後に、後述するＳ２４、Ｓ２５が実行されるという処理順序を担保する。
【００３７】
Ｓ２２では、ＣＰＵ３１は、モジュールＭ２１を実行する。
Ｓ２３では、ＣＰＵ３１は、モジュールＭ２２を実行する。このモジュールＭ２２以下、異なる複数のモジュールが実行されるが、説明を省略する。
【００３８】
Ｓ２４では、ＣＰＵ３１は、ＤＭＡバッファからのデータ代入処理を行う。これにより、Ｓ１３にて出力され、Ｓ１４にてＤＭＡバッファに格納された第１出力値又は第２出力値を取得する。また、モジュールＭ１Ａにおいて実行された処理内容、即ち、モジュールＭ１Ａにて実行された処理がモジュールＭ１Ａにて実行可能な全ての処理であるか、又は一部の処理であるか、を特定できる情報も取得する。
【００３９】
Ｓ２５では、ＣＰＵ３１は、モジュールＭ２Ａを実行する。ここでは、モジュールＭ２Ａのみを実行する場合と、モジュールＭ２Ａの前にモジュールＭ１Ａから移管された処理を実行する場合と、がある。このモジュールＭ２Ａのサブルーチンについては後述する。Ｓ２５の後、異なる複数のモジュールが実行されるが、説明を省略する。
【００４０】
Ｓ２６では、ＣＰＵ３１は、最後のモジュールＭ２ｎを実行する。このＳ２６の後、ベースルーチンＲ２の処理を終了する。
次に、ＣＰＵ２１が、図５のＳ１３にて実行するモジュールＭ１Ａのサブモジュールについて、図７のフローチャートを用いて説明する。なお、フローチャートにて説明する各処理Ａ〜Ｄは、その処理の具体的な内容については何ら限定されるものではないので、詳細な説明は割愛する。
【００４１】
まず、Ｓ３１では、ＣＰＵ２１は、処理Ａを実行する。続くＳ３２では、ＣＰＵ２１は、処理Ｂを実行する。なお、処理Ａ及び処理Ｂが第１部分処理の一例である。
Ｓ３３では、ＣＰＵ２１は、処理移管を行うか否かを判断する。具体的には、最後に実行された上述したＳ１７において、処理移管を行うと判定されていれば、処理移管を行うと判断する。Ｓ３３で処理移管を行うと判断した場合には、本処理を終了する。
【００４２】
一方、ＣＰＵ２１は、Ｓ３３で処理移管を行わないと判断した場合には、Ｓ３４へ移行し、処理Ｃを実行する。続くＳ３５では、ＣＰＵ２１は、処理Ｄを実行する。その後、本処理を終了する。
【００４３】
次に、ＣＰＵ３１が、図６のＳ２５にて実行するモジュールＭ２Ａのサブモジュールについて、図８のフローチャートを用いて説明する。なお、フローチャートにて説明する各処理Ｃ〜Ｆは、その処理の具体的な内容については何ら限定されるものではないので、詳細な説明は割愛する。
【００４４】
まず、Ｓ４１では、ＣＰＵ３１は、直前のＳ２４にて取得した、モジュールＭ１Ａにおいて実行された処理内容を示す情報に基づいて、処理移管を実行するか否かを判断する。モジュールＭ１Ａにおいて全ての処理が実行されていれば処理移管は行われないが、一部の処理のみ実行されていれば処理移管が行われる。
【００４５】
ＣＰＵ３１は、Ｓ４１で処理移管を実行すると判断した場合には、Ｓ２４にて取得した第２出力値を用いてＳ４２にて処理Ｃを実行し、次にＳ４３にて処理Ｄを実行した後、Ｓ４４に移行する。このＳ４２、Ｓ４３にて実行される処理Ｃ及び処理Ｄは、モジュールＭ１Ａにおいても実行可能な処理であって、このＳ４２，Ｓ４３の処理により、第１出力値と同一の値を得ることができる。
【００４６】
一方、ＣＰＵ３１は、Ｓ４１で処理移管を実行しないと判断した場合には、Ｓ４４へ移行する。
Ｓ４４では、ＣＰＵ３１は、処理Ｅを実行する。続くＳ４５では、ＣＰＵ３１は、処理Ｆを実行する。Ｓ４４が実行される段階では、処理移管が行われたか否かにかかわらず、ＣＰＵ３１は第１出力値を取得している。よって、処理Ｅ、処理Ｆでは、第１出力値を用いた処理を実行する。
【００４７】
その後、図８のＭ２Ａのサブモジュールを終了する。なお、処理Ｃ及び処理Ｄが、モジュールＭ１Ａにおける第１部分処理以外の処理である第２部分処理の一例である。
［１−３．効果］
以上詳述した第１実施形態によれば、以下の効果が得られる。
【００４８】
（１ａ）ＥＣＵ１では、第１マイコン１１のＣＰＵ２１が高負荷となり、モジュールＭ１Ａの処理の終了が遅延してしまう危険性が高くなった場合には、モジュールＭ１Ａの処理の一部を第２マイコン１２のモジュールＭ２Ａに移管する。
【００４９】
そのため、モジュールＭ１Ａの処理が遅延してしまい最新の出力値をモジュールＭ２Ａに出力できないという危険が抑制されるため、処理順序を維持して、処理の流れを崩さずに処理を実行することができる。
【００５０】
（１ｂ）処理の移管を行う判断基準は、ＤＭＡＣがＤＭＡバッファに格納されたデータを送信する時刻よりも以前にＳ１４の処理が終了することである。そのため、モジュールＭ１Ａが処理の移管を行わずに最後まで処理を実行した結果、第２マイコン１２へのデータ送信が間に合わない、という問題が発生することを抑制できる。
【００５１】
（１ｃ）モジュールＭ２Ａでは、モジュールＭ１Ａから移管された処理をまず実行し、その後にモジュールＭ２Ａの予め定められた処理を実行する。よって、モジュールＭ２Ａでは、処理の移管がされなかった場合にモジュールＭ１Ａにて出力されるデータと同様のデータの出力を行うことができる。
【００５２】
［２．第２実施形態］
［２−１．第１実施形態との相違点］
第２実施形態は、基本的な構成は第１実施形態と同様であるため、相違点について以下に説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【００５３】
前述した第１実施形態では、モジュールＭ１Ａのうちの移管されうる処理が予め設定されている構成を例示した。これに対し、第２実施形態では、移管されうる処理が変化する点で、第１実施形態と相違する。
【００５４】
［２−２．処理］
まず、第２実施形態の第１マイコン１１のＣＰＵ２１が実行するベースルーチンＲ１の相違点を説明する。
【００５５】
本実施形態では、ＣＰＵ２１は、Ｓ１７において処理の移管を判定するに際して、Ｓ１６にて確認した処理負荷を、処理負荷の程度に応じて小さい順に段階１〜段階４に分類する。段階１は、処理移管を実行しない段階であり、段階２〜段階４は処理移管を実行する段階である。またこの段階を示す情報は、Ｓ１４にてＤＭＡバッファに格納される。
【００５６】
次に、第２実施形態の第１マイコン１１のＣＰＵ２１が、図７に示す第１実施形態のモジュールＭ１Ａに代えて実行するモジュールＭ１Ａについて、図９のフローチャートを用いて説明する。
【００５７】
まず、Ｓ５１では、ＣＰＵ２１は、処理の移管を実行するか否かを判定する。ここでは、最後のＳ１７にて分類された段階をチェックし、段階１であれば処理の移管を実行せず、段階２〜段階４であれば処理の移管を実行すると判定する。
【００５８】
ＣＰＵ２１は、Ｓ５１で処理の移管を実行しないと判定した場合には、Ｓ５２へ移行し、処理Ａ−Ｄを実行する。ここでいう処理Ａ−Ｄとは、第１実施形態の処理Ａ、処理Ｂ、処理Ｃ、処理Ｄと同様である。このＳ５２の後、本処理は終了する。
【００５９】
一方、ＣＰＵ２１は、Ｓ５１で処理の移管を実行すると判定した場合には、Ｓ５３へ移行し、処理の移管量が小であるか否かを判定する。ここでは、Ｓ１７にて分類された段階が段階２であるとき、処理の移管量が小であると判定する。
【００６０】
ＣＰＵ２１は、Ｓ５３で処理の移管量が小であると判定した場合には、Ｓ５４へ移行し、処理Ａ−Ｃを実行する。一方、ＣＰＵ２１は、Ｓ５３で処理の移管量が小でないと判定した場合、即ち、移管量が中又は大である場合には、Ｓ５５へ移行し、処理の移管量が中であるか否かを判定する。
【００６１】
ＣＰＵ２１は、Ｓ５５で処理の移管量が中であると判定した場合、即ちＳ１７にて分類された段階が段階３である場合には、Ｓ５６へ移行し、処理Ａ−Ｂを実行する。
一方、ＣＰＵ２１は、Ｓ５５で処理の移管量が中でないと判定した場合、即ち上述した段階が段階４であって、移管量が大である場合には、Ｓ５７へ移行し、処理Ａを実行した後、本処理を終了する。
【００６２】
続いて、第２マイコン１２のＣＰＵ３１が、図８に示す第１実施形態のモジュールＭ２Ａに代えて実行するモジュールＭ２Ａについて、図１０のフローチャートを用いて説明する。以下の処理において、処理の移管の有無、及び移管量は、上述したモジュールＭ１Ａと同様にＳ１７にて分類された段階に応じて定まる。
【００６３】
まず、Ｓ６１では、ＣＰＵ２１は、処理の移管を実行するか否かを判定する。ＣＰＵ３１は、Ｓ６１で処理の移管を実行しないと判定した場合には、Ｓ６２へ移行し、処理Ｅ−Ｆを実行する。ここでいう処理Ｅ−Ｆとは、第１実施形態の処理Ｅ及び処理Ｆと同様の処理である。このＳ６２の後、本処理は終了する。
【００６４】
一方、ＣＰＵ３１は、Ｓ６１で処理移管があると判定した場合には、Ｓ６３へ移行し、処理の移管量が小であるか否かを判定する。
ＣＰＵ３１は、Ｓ６３で処理の移管量が小であると判定した場合には、Ｓ６４へ移行し、処理Ｄを実行し、その後、処理がＳ６２に移行する。一方、ＣＰＵ３１は、Ｓ６３で処理の移管量が小でないと判定した場合、即ち、移管量が中又は大である場合には、Ｓ６５へ移行し、処理の移管量が中であるか否かを判定する。
【００６５】
ＣＰＵ３１は、Ｓ６５で処理の移管量が中であると判定した場合には、Ｓ６６へ移行し、処理Ｃ−Ｄを実行し、その後、処理がＳ６２に移行する。一方、ＣＰＵ３１は、Ｓ６５で処理の移管量が中でないと判定した場合、即ち移管量が大である場合には、Ｓ６７へ移行し、処理Ｂ−Ｄを実行した後、処理がＳ６２に移行する。
【００６６】
［２−３．効果］
以上詳述した第２実施形態によれば、前述した第１実施形態の効果を奏し、さらに、以下の効果が得られる。
【００６７】
（２ａ）ＣＰＵ２１の負荷に応じた量の処理を第２マイコン１２に移管するため、処理順序を維持しつつ、第２マイコン１２の処理負荷が大きくなりすぎることを抑制できる。
［３．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００６８】
（３ａ）上記各実施形態にて例示した処理の内容はあくまで例示であり、ベースルーチンＲ１の処理内容やベースルーチンＲ１におけるモジュールＭ１Ａの処理順序、ベースルーチンＲ２の処理内容やベースルーチンＲ２におけるモジュールＭ２Ａの処理順序などは、モジュールＭ１ＡからモジュールＭ２Ａへの流れる順序が維持されていれば特に限定されない。
【００６９】
（３ｂ）上記各実施形態では、ＤＭＡＣにより通信を実行する構成を例示したが、これ以外の通信システムを用いて通信を実現してもよい。
（３ｃ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【００７０】
（３ｄ）上述したＥＣＵ１の他、当該ＥＣＵ１を構成要素とするシステム、当該ＥＣＵ１としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００７１】
１…ＥＣＵ、１１…第１マイコン、１２…第２マイコン、２１…ＣＰＵ、３１…ＣＰＵ
【図１】
2018085038.tif 000003
【図２】
2018085038.tif 000004
【図３】
2018085038.tif 000005
【図４】
2018085038.tif 000006
【図５】
2018085038.tif 000007
【図６】
2018085038.tif 000008
【図７】
2018085038.tif 000009
【図８】
2018085038.tif 000010
【図９】
2018085038.tif 000011
【図１０】
2018085038.tif 000012