(57)【要約】【課題】本来優先されるべき処理部の待ち時間を減らすことができる電子制御装置を提供すること。【解決手段】電子制御装置は、複数のコアと、複数のコアが一つのバスを介して個別にアクセス可能な周辺Ｉ／Ｏと、スレーブ優先度を記憶している優先度記憶部と、スレーブ優先度に基づいて優先的にアクセスさせるコアを選択するクロスバースイッチを備えている。第１コアは、エンジン回転数が３０００ｒｐｍを超えている場合、周辺Ｉ／Ｏ４０アクセス数も変化しているとみなして、複数のコアにおける低アクセス処理部よりも高アクセス処理部の方が、優先的に周辺Ｉ／Ｏ４０へアクセスできるスレーブ優先度を設定する（Ｓ１０、Ｓ１１）。そして、第１コアは、設定した優先度が、調停部で用いられるスレーブ優先度と異なる場合、調停部で用いられるスレーブ優先度を、設定したスレーブ優先度に変更する（Ｓ１２、Ｓ１３）。【選択図】図３
2019168833.tif 000002
【特許請求の範囲】
【請求項１】
異なる処理を実行する複数の処理部（１１〜１ｎ、２０）と、
複数の前記処理部がバスを介して個別にアクセス可能な、少なくとも一つのスレーブ（４０、５０、６０）と、
前記スレーブに対する、各処理部のアクセスの優先度を記憶している記憶部（４０ａ）と、
前記スレーブに対して複数の前記処理部によるアクセスが競合した際に、前記優先度に基づいて、優先的にアクセスさせる前記処理部を選択する調停部（３０）と、
各処理部の処理負荷状況に応じて、複数の前記処理部における前記スレーブへのアクセス数が少ない低アクセス処理部よりも前記アクセス数が多い高アクセス処理部の方が、優先的に前記スレーブへアクセスできる前記優先度を設定する優先度設定部（Ｓ１０、Ｓ１０ａ、Ｓ１１、Ｓ１１ａ、Ｓ４０〜Ｓ４２）と、
前記優先度設定部で設定した前記優先度が、前記調停部で用いられる前記優先度と異なる場合、前記調停部で用いられる前記優先度を、前記優先度設定部で設定した前記優先度に変更する優先度変更部（Ｓ１２、Ｓ１３、Ｓ４３、Ｓ４４）と、を備えている電子制御装置。
【請求項２】
複数の前記処理部は、前記処理を実行することで、車両に搭載され回転によって前記車両の動力を発生させる動力源装置の制御を行う動力源制御処理部を含んでおり、
前記優先度設定部は、前記動力源装置の回転数が閾値を上回った場合、前記動力源制御処理部の処理負荷状況が増加して、前記スレーブへの前記アクセス数が他の前記処理部よりも多くなるとみなして、前記動力源制御処理部が他の前記処理部よりも優先的に前記スレーブへアクセスできる前記優先度を設定する回転数基準設定部（Ｓ１０、Ｓ１１、Ｓ４０）を含んでいる請求項１に記載の電子制御装置。
【請求項３】
複数の前記処理部は、前記処理を実行することで、車両に搭載され回転によって前記車両の動力を発生させる動力源装置の制御を行う動力源制御処理部を含んでおり、
前記優先度設定部は、前記動力源装置の回転数が所定範囲を上回った場合は、前記動力源制御処理部の処理負荷状況が増加して、前記スレーブへの前記アクセス数が他の前記処理部よりも多くなるとみなして、前記動力源制御処理部が他の前記処理部よりも優先的に前記スレーブへアクセスできる前記優先度を設定し、前記回転数が所定範囲内である場合は、前記優先度の設定を行わない回転数基準設定部（Ｓ１０ａ、Ｓ１１ａ、Ｓ４０）を含んでいる請求項１に記載の電子制御装置。
【請求項４】
複数の前記処理部は、前記処理として、前記スレーブと接続された外部装置との通信を行う前記処理部を少なくとも一つ含んでおり、
前記優先度設定部は、前記回転数基準設定部に加えて、前記外部装置との通信回数が多い前記処理部ほど優先的に前記スレーブへアクセスできるように、前記記憶部に記憶されている前記優先度を並び替えて前記優先度を設定する通信基準設定部（Ｓ４１）と、前記回転数基準設定部で設定された各優先度を示す順位と前記通信基準設定部で設定された各優先度を示す順位どうしの相加平均をとった前記優先度を設定する平均設定部（Ｓ４２）を含んでおり、
前記優先度変更部は、前記平均設定部で設定した前記優先度が、前記調停部で用いられる前記優先度と異なる場合、前記調停部で用いられる前記優先度を、前記平均設定部で設定した前記優先度に変更する請求項２又は３に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数コアを有する電子制御装置に関する。
【背景技術】
【０００２】
従来、複数コアを有する電子制御装置の一例として、特許文献１に開示された制御装置がある。この制御装置は、少なくとも一つのスレーブエレメントに接続された複数のマスタエレメント（コア）と、マスタエレメントからスレーブエレメントへのアクセスの優先度情報が記憶される優先度記憶部とを備えている。また、制御装置は、優先度情報に基づいてマスタエレメントからスレーブエレメントへのアクセスを調停するバスアービタを備えている。そして、第１のマスタエレメントが第２のマスタエレメントの待ち合わせをするとき、第１のマスタエレメントは、同期データの更新があるまで、第１のマスタエレメントのアクセス優先度を下げる、あるいは、第２のマスタエレメントのアクセス優先度を上げる、の少なくとも一方を実現するように優先度情報を変更する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１６７８４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記制御装置では、第１のマスタエレメントが本来優先されるべき処理を実行する場合であっても、第１のマスタエレメントの優先度が下げてしまう可能性がある。よって、制御装置は、本来優先されるべき処理を実行するマスタエレメントが、スレーブへアクセスする際の待ち時間が長くなるという問題がある。
【０００５】
本開示は、上記問題点に鑑みなされたものであり、本来優先されるべき処理部の待ち時間を減らすことができる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示は、
異なる処理を実行する複数の処理部（１１〜１ｎ、２０）と、
複数の処理部がバスを介して個別にアクセス可能な、少なくとも一つのスレーブ（４０、５０、６０）と、
スレーブに対する、各処理部のアクセスの優先度を記憶している記憶部（４０ａ）と、
スレーブに対して複数の処理部によるアクセスが競合した際に、優先度に基づいて、優先的にアクセスさせる処理部を選択する調停部（３０）と、
各処理部の処理負荷状況に応じて、複数の処理部におけるスレーブへのアクセス数が少ない低アクセス処理部よりもアクセス数が多い高アクセス処理部の方が、優先的にスレーブへアクセスできる優先度を設定する優先度設定部（Ｓ１０、Ｓ１０ａ、Ｓ１１、Ｓ１１ａ、Ｓ１１ｂ、Ｓ４０〜Ｓ４２）と、
優先度設定部で設定した優先度が、調停部で用いられる優先度と異なる場合、調停部で用いられる優先度を、優先度設定部で設定した優先度に変更する優先度変更部（Ｓ１２、Ｓ１３、Ｓ４３、Ｓ４４）と、を備えていることを特徴とする。
【０００７】
このように、本開示は、各処理部の処理負荷状況に応じて、高アクセス処理部が優先的にスレーブへアクセスできるように優先度を設定し、設定した優先度が調停部で用いられる優先度と異なる場合、調停部で用いられる優先度を変更する。また、スレーブへのアクセス数が多い高アクセス処理部は、本来優先させるべき処理部とみなすことができる。よって、本開示は、本来優先させるべき処理部と他の処理部とがアクセス競合した場合であっても、本来優先させるべき処理部の待ち時間を減らすことができる。
【０００８】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態における電子制御装置の概略構成を示すブロック図である。
【図２】第１実施形態における優先度記憶部に記憶された各スレーブの優先度を示すイメージ図である。
【図３】第１実施形態における電子制御装置の処理動作を示すフローチャートである。
【図４】第１実施形態における各コアの処理負荷の時間変化を示すグラフである。
【図５】第１実施形態における優先度の初期値と変更後を示すイメージ図である。
【図６】変形例１における電子制御装置の処理動作を示すフローチャートである。
【図７】第２実施形態における各コアの機能を示すイメージ図である。
【図８】第２実施形態における各コアの処理負荷の状況を示すイメージ図である。
【図９】第２実施形態における各コアの優先度の時間変化を示すグラフである。
【図１０】第２実施形態における優先度の変化を示すイメージ図である。
【図１１】第２実施形態における各コアのカウント処理を示すフローチャートである。
【図１２】第２実施形態における各コアの通知処理を示すフローチャートである。
【図１３】第２実施形態におけるメインコアの処理動作を示すフローチャートである。
【図１４】第２実施形態における通信回数に基づく優先度の設定方法を示すイメージ図である。
【図１５】第２実施形態におけるエンジン回転数と通信回数とに基づく優先度の設定方法を示すイメージ図である。
【発明を実施するための形態】
【００１０】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１１】
（第１実施形態）
図１〜図５を用いて、本実施形態の電子制御装置１００に関して説明する。本実施形態では、一例として、電子制御装置１００をエンジン制御システムに適用した例を採用する。
【００１２】
まず、図１、図２を用いて、電子制御装置１００の構成に関して説明する。電子制御装置１００は、複数のコア１１〜１ｎ、ＤＭＡＣ２０、クロスバースイッチ３０、周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０を備えている。電子制御装置１００は、例えば、通信線を介して、他の電子制御装置と通信可能に接続されており、他の電子制御装置とともに車載ネットワークを構成していてもよい。なお、電子制御装置１００は、複数のコア１１〜１ｎを有したマルチコアマイコンを含んでいる、とも言える。
【００１３】
複数のコア１１〜１ｎ、ＤＭＡＣ２０のそれぞれは、特許請求の範囲における処理部に相当する。複数のコア１１〜１ｎ、ＤＭＡＣ２０は、それぞれ異なる処理を実行する。本実施形態では、一例として、第１コア１１をメインコア、第２コア１２〜第ｎコア１ｎ、ＤＭＡＣ２０をサブコアとする。また、本実施形態では、一例として、第１コア１１、第２コア１２、第３コア１３、第ｎコア１ｎ、ＤＭＡＣを図１に図示している。しかしながら、本開示は、これに限定されず、複数のコア、もしくは、コアとＤＭＡＣなど、複数の処理部を備えていればよい。
【００１４】
なお、コアは、ＣＰＵコアと言い換えることもできる。また、電子制御装置１００は、マスタエレメント（マスタ）としての複数のコア１１〜１ｎ、ＤＭＡＣ２０を備えているとも言える。さらに、後程説明する周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０は、マスタエレメントに対して、スレーブエレメント（スレーブ）と言える。よって、以下においては、複数のコア１１〜１ｎ及びＤＭＡＣ２０のそれぞれを区別する必要がない場合、これらをまとめてマスタエレメントとも称する。同様に、周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０のそれぞれを区別する必要がない場合、これらをまとめてスレーブエレメントとも称する。
【００１５】
複数のコア１１〜１ｎは、それぞれ異なる機能を有しており、ＲＡＭ５０を一時的な記憶部として用いつつ、ＲＯＭ６０に記憶されたプログラムに従って演算処理を実行する。電子制御装置１００は、複数のコア１１〜１ｎのそれぞれが演算処理を実行して、周辺Ｉ／Ｏ４０にアクセスして、周辺Ｉ／Ｏ４０接続されている周辺機器を制御することでエンジン制御を行う。このように、複数のコア１１〜１ｎは、周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０のそれぞれにアクセス可能に構成されている。詳述すると、複数のコア１１〜１ｎは、後程説明するクロスバースイッチ３０を介して、周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０のそれぞれにアクセス可能に構成されている。
【００１６】
以下においては、説明を簡単にするために、主に、第１コア１１、第２コア１２、第３コア１３に絞って説明することもある。本実施形態では、一例として、機能安全に関する機能を有した第１コア１１、エンジン制御に関する機能を有した第２コア１２、通信に関する機能を有した第３コア１３を採用する。第２コア１２は、エンジン制御に関する機能を有しているため、処理を実行することで、車両に搭載され回転によって車両の動力を発生させるエンジンの制御を行う。
【００１７】
また、メインコアである第１コア１１は、後程説明する優先度記憶部４０ａに記憶された、アクセス競合した際に用いるスレーブ優先度として設定されているスレーブ優先度を変更する機能を有している。アクセス競合した際に用いるスレーブ優先度として設定されているスレーブ優先度は、クロスバースイッチ３０で用いられるスレーブ優先度、又は、調停に用いるスレーブ優先度と言い換えることができる。電子制御装置１００は、第１コア１１のみでスレーブ優先度を変更でき、他のコア１２〜１ｎではスレーブ優先度を変更できないように構成されている。
【００１８】
なお、エンジンは、特許請求の範囲における動力源装置に相当する。よって、エンジン制御に関する機能を有している第２コア１２は、特許請求の範囲における動力源制御処理部に相当する。
【００１９】
ＤＭＡＣ２０は、各コア１１〜１ｎを介さず直接ＲＡＭ５０およびＲＯＭ６０にアクセスしてデータ転送を行うＤＭＡＣは、Direct Memory Access Controllerの略称である。
【００２０】
クロスバースイッチ３０は、特許請求の範囲における調停部に相当する。クロスバースイッチ３０は、バスを介して各コア１１〜１ｎとＤＭＡＣ２０が接続されている。また、クロスバースイッチ３０は、第１バス７１を介して周辺Ｉ／Ｏ４０が接続され、第２バス７２を介してＲＡＭ５０が接続され、第３バス７３を介してＲＯＭ６０が接続されている。
【００２１】
このように、クロスバースイッチ３０は、複数のコア１１〜１ｍとＤＭＡＣ２０がアクセスする周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０のそれぞれが、一本のバス７１〜７３を介して接続されている。よって、各バス７１〜７３は、複数のコア１１〜１ｍとＤＭＡＣ２０における少なくとも二つにおけるアクセスが競合することが起こり得る。言い換えると、周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０は、複数のコア１１〜１ｍとＤＭＡＣ２０における少なくとも二つにおけるアクセスが競合することが起こり得る。電子制御装置１００は、例えば、第２コア１２と第３コア１３における周辺Ｉ／Ｏ４０へのアクセスタイミングが一致して、第１バス７１へのアクセスが競合する。言い換えると、電子制御装置１００は、第２コア１２と第３コア１３における、周辺Ｉ／Ｏ４０へのアクセスが競合する。
【００２２】
そこで、クロスバースイッチ３０は、周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０に対して複数のコア１１〜１ｍとＤＭＡＣ２０によるアクセスが競合した際に、優先度記憶部４０ａのスレーブ優先度に基づき、優先的にアクセスさせるマスタエレメントを選択する。つまり、クロスバースイッチ３０は、例えば一つのバス（７１〜７３のいずれか）に対して、少なくとも二つのマスタエレメントによるアクセスが競合した際に、競合しているマスタエレメントのうち一つのマスタエレメントのみがバスにアクセスできるように調停する。
【００２３】
例えば、クロスバースイッチ３０は、複数のマスタエレメントと、スレーブエレメントとの接続関係を切り換えるスイッチを含んでいる。そして、クロスバースイッチ３０は、スイッチを切り換えることで、一つのスレーブエレメントに対して、一つのマスタエレメントのみを接続する機能を有していると言える。つまり、クロスバースイッチ３０は、スレーブエレメントとマスタエレメントとを一対一で接続し、且つ、対をなすスレーブエレメントとマスタエレメントを切り換えることができる。
【００２４】
また、クロスバースイッチ３０は、機能ブロックとして、参照部３１、比較部３２、選択部３３を含んでいる。参照部３１は、優先度記憶部４０ａから、アクセスが競合しているスレーブエレメントに対応するスレーブ優先度を参照する。
【００２５】
比較部３２は、アクセスが競合している少なくとも二つのマスタエレメントに関連付けられたスレーブ優先度どうしを比較する。つまり、比較部３２は、少なくとも二つのマスタエレメントのうち、優先的にスレーブエレメントにアクセスさせるマスタエレメントを選択するために、各マスタエレメントに関連付けられたスレーブ優先度を比較する。
【００２６】
選択部３３は、アクセスが競合している少なくとも二つのマスタエレメントから、競合しているスレーブエレメントと接続させるマスタエレメントを選択する。つまり、選択部３３は、アクセスが競合している少なくとも二つのマスタエレメントのうち、最も高いスレーブ優先度が関連付けられたマスタエレメントを、競合しているスレーブエレメントと接続するようにスイッチを操作する。
【００２７】
周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０のそれぞれは、特許請求の範囲におけるスレーブに相当する。周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０のそれぞれは、複数のマスタエレメントが一つのバス（７１〜７３のいずれか）を介して個別にアクセス可能に構成されている。
【００２８】
例えば、周辺Ｉ／Ｏ４０は、第１コア１１、第２コア１２、第３コア１３のそれぞれが第１バス７１を介して個別にアクセス可能である。よって、周辺Ｉ／Ｏ４０は、第１コア１１と第２コア１２が同時にアクセスしたり、第１コア１１と第３コア１３が同時にアクセスしたりすることができない。
【００２９】
周辺Ｉ／Ｏ４０は、ＡＳＩＣや各種センサや通信部などの周辺機器と接続されている。周辺機器は、特許請求の範囲における外部装置に相当する。また、周辺Ｉ／Ｏ４０は、優先度記憶部４０ａを含んでいる。優先度記憶部４０ａは、特許請求の範囲における記憶部に相当する。優先度記憶部４０ａは、スレーブエレメントに対する、各マスタエレメントのアクセスの優先度である、スレーブ優先度を記憶している。優先度記憶部４０ａは、レジスタを採用することができる。スレーブ優先度は、特許請求の範囲における優先度に相当する。
【００３０】
優先度記憶部４０ａは、スレーブエレメント毎に、少なくとも二つのマスタエレメントのそれぞれに、スレーブ優先度が関連付けて記憶している。例えば、図２に示すように、優先度記憶部４０ａは、周辺Ｉ／Ｏ４０のスレーブ優先度、ＲＡＭ５０のスレーブ優先度、ＲＯＭ６０のスレーブ優先度を含んでいる。
【００３１】
図２では、代表として、周辺Ｉ／Ｏ４０のスレーブ優先度を図示している。周辺Ｉ／Ｏ４０では、第１コア１１から第２コア１２、第３コア１３、第ｎコア１ｎ、ＤＭＡＣ２０の順番でスレーブ優先度が高くなるように、各マスタエレメントにスレーブ優先度が関連付けられている。
【００３２】
また、本実施形態では、エンジン回転数が３０００ｒｐｍを超える場合の各スレーブエレメントのスレーブ優先度と、エンジン回転数が３０００ｒｐｍを超えない場合の各スレーブエレメントのスレーブ優先度とを記憶した優先度記憶部４０ａを採用する。本実施形態では、一例として、エンジン回転数が３０００ｒｐｍを超えない場合の各スレーブエレメントのスレーブ優先度として、図５（ａ）に記載している初期値であるスレーブ優先度を採用する。また、本実施形態では、一例として、エンジン回転数が３０００ｒｐｍを超える場合の各スレーブエレメントのスレーブ優先度として、図５（ｂ）に記載している３０００回転を超える場合のスレーブ優先度を採用する。
【００３３】
なお、本実施形態では、図２に示すように、スレーブ優先度が高いほど、大きな数字で示している。この数字は、スレーブ優先度を示す順位に相当する。そして、マスタエレメントは、低いスレーブ優先度が関連付けられているよりも、高いスレーブ優先度が関連付けられている方が、スレーブエレメントに優先的にアクセスしやすい。よって、図２の場合、電子制御装置１００は、ＤＭＡＣ２０と、他のコア１１〜１ｎとが、あるスレーブエレメントに対してアクセス競合した場合、そのスレーブエレメントに対して、ＤＭＡＣ２０が優先的にアクセスすることになる。
【００３４】
ＲＡＭ５０は、各コア１１〜１ｎの演算結果などを一時的に記憶する記憶媒体である。ＲＯＭ６０は、各コア１１〜１ｎによって読み取り可能なプログラム及びデータを非一時的に格納する、フラッシュメモリやハードディスク等の非遷移的実体的記憶媒体である。
【００３５】
本実施形態では、一例として、周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０のように複数のスレーブエレメントを備えた電子制御装置１００を採用している。しかしながら、本開示は、これに限定されず、少なくとも一つのスレーブエレメントを備えていればよい。
【００３６】
ここで、図３〜図５を用いて、電子制御装置１００の処理動作に関して説明する。図３は、電子制御装置１００の処理動作、すなわちスレーブ優先度の変更処理を示すフローチャートである、本実施形態では、電子制御装置１００のメインコアである第１コア１１が実行する例を採用している。そして、第１コア１１は、一定時間（例えば１ｍｓ）毎に、図３のフローチャートに示す処理を実行する。
【００３７】
なお、電子制御装置１００は、第１コア１１が変更処理を頻繁に実行すると、周辺Ｉ／Ｏ４０へのアクセスも頻繁に行われるため、アクセス競合の原因になる。このため、第１コア１１による変更処理の実行周期は、変更処理の実行によるアクセス競合が発生しにくい程度に設定すると好ましい。
【００３８】
また、ここでは、周辺Ｉ／Ｏ４０のスレーブ優先度の一例として、図５に示す例を採用する。図５の（ａ）に示すように、周辺Ｉ／Ｏ４０のスレーブ優先度は、第１コア１１から第２コア１２、第３コア１３の順番でスレーブ優先度が高くなるように初期値が設定されている。具体的には、第１コア１１のスレーブ優先度が１、第２コア１１のスレーブ優先度が３、第３コア１１のスレーブ優先度が５としている。
【００３９】
ステップＳ１０では、エンジン回転数が３０００ｒｐｍを超えているか否かを判定する（優先度設定部、回転数基準設定部）。図４に示すように、第２コア１２と第３コア１３は、エンジン回転数が３０００ｒｐｍを境として処理負荷の関係が変化している。つまり、エンジン制御に関する機能を有した第２コア１２の処理負荷は、エンジン回転数が３０００ｒｐｍを下回っている場合、第３コア１３よりも低い。しかしながら、第２コア１２の処理負荷は、エンジン回転数が３０００ｒｐｍを上回った場合、第３コア１３よりも高くなっている。なお、第１コア１１は、エンジン回転数に依存することなく、最も処理負荷が低い。このように、各マスタエレメントの処理負荷状況は、エンジン回転数で判断することができる。
【００４０】
また、第２コア１２や第３コア１３などの処理負荷の関係に伴って、第２コア１２や第３コア１３などの周辺Ｉ／Ｏ４０やＲＡＭ５０へのアクセス数も変化する。エンジン回転数が３０００ｒｐｍを上回った場合、第２コア１２は、第３コア１３よりも周辺Ｉ／Ｏ４０やＲＡＭ５０へのアクセス数が多い。この場合、第２コア１２が高アクセス処理部に相当し、第３コア１３が低アクセス処理部に相当する。よって、処理負荷が高い第２コア１２は、処理負荷が低い第１コア１１や第３コア１３よりも、周辺Ｉ／Ｏ４０やＲＡＭ５０へのアクセス数が多いため、本来優先されるべきマスタエレメントと言える。
【００４１】
逆に、エンジン回転数が３０００ｒｐｍを下回った場合、第２コア１２は、第３コア１３よりも周辺Ｉ／Ｏ４０やＲＡＭ５０へのアクセス数が少ない。この場合、第２コア１２が低アクセス処理部に相当し、第３コア１３が高アクセス処理部に相当する。よって、処理負荷が高い第３コア１３は、処理負荷が低い第１コア１１や第２コア１２よりも、周辺Ｉ／Ｏ４０やＲＡＭ５０へのアクセス数が多いため、本来優先されるべきマスタエレメントと言える。
【００４２】
このように、本実施形態では、エンジン制御を実施しない第１コア１１や第３コア１３と比較して、第２コア１２がエンジン回転数増加時に処理負荷が高くなる相関がある点に着目している。
【００４３】
なお、ここでの処理負荷の高い低いは、各マスタエレメント間における処理負荷の高い低いであり、相対的な状況を示している。アクセス数の多い少ないに関しても、同様に相対的な状況を示している。
【００４４】
第１コア１１は、周辺Ｉ／Ｏ４０を介してエンジン回転数を取得することができるものとする。そして、第１コア１１は、エンジン回転数が３０００ｒｐｍを超えていると判定した場合、第２コア１２の方が第３コア１３よりも処理負荷が高いとみなして、ステップＳ１１へ進む。また、第１コア１１は、エンジン回転数が３０００ｒｐｍを超えていると判定した場合、第２コア１２の処理負荷状況が増加して、Ｉ／Ｏ４０やＲＡＭ５０へのアクセス数が他のマスタエレメントよりも多くなるとみなしてステップＳ１１へ進むと言える。ここでは、第１コア１１と第３コア１３が他のマスタエレメントに相当する。
【００４５】
一方、第１コア１１は、エンジン回転数が３０００ｒｐｍを下回っていると判定した場合、第１コア１１〜第３コア１３の処理負荷の関係は変化していないとみなして、図３のフローチャートに示す処理を終了する。つまり、第１コア１１は、スレーブ優先度を変更することなく、スレーブ優先度の変更処理を終了する。
【００４６】
なお、第１コア１１は、エンジンの回転数が３０００ｒｐｍを下回った場合、図５（ａ）の初期値を選択し、ステップＳ１２へ進んでもよい。さらに、第１コア１１は、図３のフローチャートをスタートするたびに、各スレーブエレメントのスレーブ優先度を初期値としてもよい。これによって、電子制御装置１００は、エンジン回転数が３０００ｒｐｍを上回り、優先度記憶部４０ａのスレーブ優先度を変更した場合に、優先度記憶部４０ａのスレーブ優先度が変更後のスレーブ優先度に固定されることを抑制できる。
【００４７】
このように、第１コア１１は、各マスタエレメントの処理負荷状況に応じて、複数のマスタエレメントにおけるスレーブエレメントへのアクセス数を判断していると言える。また、３０００ｒｐｍは、特許請求の範囲における閾値に相当する。
【００４８】
なお、本実施形態では、各マスタエレメントの処理負荷状況が変化するか否かを判断するための情報、言い換えると、スレーブエレメントへのアクセス数が変化するか否かを判断するための情報として、エンジン回転数（３０００ｒｐｍ）を採用している。しかしながら、本開示は、これに限定されない。
【００４９】
例えば、車両は、電気自動車の場合、動力源装置としてモータが搭載されている。この場合、電子制御装置１００は、スレーブエレメントへのアクセス数が変化するか否かを判断するための情報として、エンジン回転数のかわりにモータ回転数や、トルクアップ要求、電力回生要求など使い方変更情報を採用することができる。
【００５０】
また、本実施形態では、各マスタエレメントの処理負荷状況が変化するか否かを判断する閾値、言い換えると、スレーブエレメントへのアクセス数が変化するか否かを判断する閾値の一例として、エンジン回転数が３０００ｒｐｍであることを採用している。しかしながら、本開示は、これに限定されず、２５００ｒｐｍや４０００ｒｐｍなど他のエンジン回転数であっても採用できる。
【００５１】
ステップＳ１１では、３０００ｒｐｍを超えている場合のスレーブ優先度を選択する（優先度設定部、回転数基準設定部）。第１コア１１は、エンジンの回転数が３０００ｒｐｍを上回った場合、第２コア１２が他のマスタエレメントよりも優先的にＩ／Ｏ４０やＲＡＭ５０へアクセスできるスレーブ優先度を設定（選択）する。ここでは、第１コア１１は、図５（ｂ）のスレーブ優先度を選択する。この場合の周辺Ｉ／Ｏ４０のスレーブ優先度は、第１コア１１から第３コア１３、第２コア１２の順番でスレーブ優先度が高くなるように設定されている。具体的には、第１コア１１のスレーブ優先度が１（最低）、第２コア１１のスレーブ優先度が５（最高）、第３コア１１のスレーブ優先度が３としている。
【００５２】
このように、第１コア１１は、各マスタエレメントの処理負荷状況に応じて、複数のマスタエレメントにおける低アクセス処理部よりも高アクセス処理部の方が、優先的にスレーブへアクセスできる優先度を設定する。
【００５３】
なお、ステップＳ１１で設定したスレーブ優先度は、ただちに優先度記憶部４０ａのスレーブ優先度に反映されるわけではない。つまり、ステップＳ１１では、優先度記憶部４０ａのスレーブ優先度を変更する候補のスレーブ優先度を設定する。よって、ステップＳ１１で設定したスレーブ優先度は、変更候補優先度と言うこともできる。
【００５４】
ステップＳ１２では、使用中のスレーブ優先度と同じであるか否かを判定する（優先度変更部）。第１コア１１は、ステップＳ１１で設定したスレーブ優先度が、クロスバースイッチ３０で用いられるように設定されているスレーブ優先度と同じであるか否かを判定する。これは、優先度記憶部４０ａにおいて、アクセス競合した際に用いるスレーブ優先度として設定されているスレーブ優先度を、ステップＳ１１で設定したスレーブ優先度に変更する必要があるか否かを判定するために行う。
【００５５】
第１コア１１は、同じであると判定しなかった場合、アクセス競合した際に用いるスレーブ優先度として設定されているスレーブ優先度を変更する必要があるとみなしてステップＳ１３へ進む。一方、第１コア１１は、同じであると判定した場合、アクセス競合した際に用いるスレーブ優先度として設定されているスレーブ優先度を変更する必要がないとみなして図３のフローチャートを終了する。
【００５６】
ステップＳ１３では、調停に用いるスレーブ優先度を変更する（優先度変更部）。第１コア１１は、アクセス競合した際に用いるスレーブ優先度を、ステップＳ１１で設定したスレーブ優先度に変更する。このように、第１コア１１は、ステップＳ１１で設定したスレーブ優先度が、アクセス競合した際に用いているスレーブ優先度と異なる場合、アクセス競合した際に用いるスレーブ優先度をステップＳ１１で設定したスレーブ優先度に変更する。
【００５７】
このように、電子制御装置１００は、各マスタエレメントの処理負荷状況に応じて、高アクセス処理部が優先的にスレーブエレメントへアクセスできるようにスレーブ優先度を設定する。そして、電子制御装置１００は、設定したスレーブ優先度がクロスバースイッチ３０で用いられるスレーブ優先度と異なる場合、クロスバースイッチ３０で用いられるスレーブ優先度を変更する。よって、電子制御装置１００は、本来優先させるべきマスタエレメントと他のマスタエレメントとがアクセス競合した場合であっても、本来優先させるべきマスタエレメントの待ち時間を減らすことができる。
【００５８】
なお、本実施形態では、処理負荷毎にスレーブ優先度を用意しておき、処理負荷に応じてアクセス競合した際に用いるスレーブ優先度を選択する例を採用している。しかしながら、本実施形態は、これに限定されず、処理負荷毎に、アクセス競合した際に用いるスレーブ優先度の値を書き換えてもよい。この場合、電子制御装置１００は、処理負荷毎に、書き換える値を記憶しておく。
【００５９】
（変形例１）
上記実施形態では、エンジン回転数が閾値を上回ったり、下回ったりを繰り返す場合、ステップＳ１１、Ｓ１２、場合によってはステップＳ１３を頻繁に行うことになる。そこで、変形例１では、図６に示すように、このように処理が頻繁に行われることを抑制するために、ステップＳ１０のかわりにステップＳ１０ａを実施する。
【００６０】
ステップＳ１０ａでは、エンジン回転数が２９００〜３１００ｒｐｍの範囲外であるか否かを判定する（優先度設定部、回転数基準設定部）。この範囲は、各マスタエレメントの処理負荷状況が変化するか否かを判断する閾値を含む範囲である。ここでは、一例として、３０００ｒｐｍを含む、２９００ｒｐｍから３１００ｒｐｍまでの範囲を採用している。しかしながら、本開示は、これに限定されず、各マスタエレメントの処理負荷状況が変化するか否かを判断する閾値を含む範囲であればよく、２８００〜３２００ｒｐｍや、２７００〜３３００ｒｐｍなどの範囲であっても採用できる。また、この範囲は、各マスタエレメントの処理負荷状況が変化するか否かを判断する閾値を中心とする範囲以外であっても採用できる。
【００６１】
第１コア１１は、エンジン回転数が２９００〜３１００ｒｐｍの範囲外であると判定した場合は、上記のように繰り返す可能性が低いとみなして、ステップＳ１１ａに進む。
【００６２】
一方、第１コア１１は、エンジン回転数が２９００〜３１００ｒｐｍの範囲内であると判定した場合は、上記のように繰り返す可能性が高いとみなして、ステップＳ１１ａ〜Ｓ１３を行うことなく、図６のフローチャートに示す処理を終了する。つまり、第１コア１１は、エンジン回転数が２９００〜３１００ｒｐｍの範囲内である場合、スレーブ優先度の設定を行わない。
【００６３】
これによって、電子制御装置１００は、ステップＳ１１、Ｓ１２、場合によってはステップＳ１３を頻繁に行うことを抑制できる。また、電子制御装置１００は、第１コア１１がステップＳ１１、Ｓ１２、場合によってはステップＳ１３を頻繁に行うと、周辺Ｉ／Ｏ４０へのアクセスも頻繁に行うことになりアクセス競合の原因となる。しかしながら、電子制御装置１００は、ステップＳ１１、Ｓ１２、場合によってはステップＳ１３を頻繁に行うことを抑制できるため、アクセス競合を減らすこともできる。
【００６４】
なお、第１コア１１は、エンジン回転数が３１００ｒｐｍを上回っていると判定した場合、ステップＳ１１ａにおいてステップＳ１１と同様の処理を行う。また、第１コア１１は、エンジン回転数が２９００ｒｐｍを下回っていると判定した場合、例えば図５（ａ）の初期値を選択する。
【００６５】
さらに、電子制御装置１００は、エンジン回転数が２９００ｒｐｍを下回っている状況で想定される各マスタエレメントの処理状況に応じたスレーブ優先度を予め用意しておいてもよい。この場合、第１コア１１は、エンジン回転数が２９００ｒｐｍを下回っていると判定した場合、エンジン回転数が２９００ｒｐｍを下回っている状況で想定される各マスタエレメントの処理状況に応じたスレーブ優先度を選択してもよい。なお、ステップＳ１１ａは、優先度設定部及び回転数基準設定部に相当する。
【００６６】
本実施形態では、各マスタエレメントの処理負荷状況を判断する情報の一例として、エンジン回転数又はモータ回転数を用いる例を採用した。しかしながら、本開示は、これに限定されない。各マスタエレメントの処理負荷状況を判断する情報としては、所定のエラーを示す信号、リプログ要求、イグニッションスイッチオフ後のセンターとの通信開始情報などをあげることもできる。
【００６７】
第１コア１１は、所定のエラーを示す信号を取得すると、機能安全に関する機能を有したマスタエレメントが、他のマスタエレメントよりも処理負荷が高くなり、スレーブエレメントへのアクセスも増加するため、高アクセス処理部とみなす。そして、第１コア１１は、低アクセス処理部よりも高アクセス処理部の方が、優先的にスレーブへアクセスできるスレーブ優先度を設定する。つまり、第１コア１１は、所定のエラーを示す信号を取得すると、機能安全に関する機能を有したマスタエレメントが、優先的にスレーブエレメントへアクセスできるスレーブ優先度を選択して変更候補優先度とする。ここでの優先的にアクセスさせるスレーブエレメントは、周辺Ｉ／Ｏ４０及びＲＡＭ５０などである。
【００６８】
また、第１コア１１は、リプログ要求を得た場合、ＲＡＭ５０及びＲＯＭ６０へアクセスする機能を有したマスタエレメントが他のマスタエレメントよりも処理負荷が高くなり、スレーブエレメントへのアクセスも増加するため、高アクセス処理部とみなす。そして、第１コア１１は、上記と同様にスレーブ優先度を設定する。つまり、第１コア１１は、リプログ要求を取得すると、ＲＡＭ５０及びＲＯＭ６０へアクセスする機能を有したマスタエレメントが、優先的にスレーブエレメントへアクセスできるスレーブ優先度を選択して変更候補優先度とする。ここでの優先的にアクセスさせるスレーブエレメントは、ＲＡＭ５０及びＲＯＭ６０などである。
【００６９】
また、第１コア１１は、イグニッションスイッチ（ＩＧ）オフ後のセンターとの通信開始情報を得た場合、周辺Ｉ／Ｏ４０などへアクセスする機能を有したマスタエレメントが他のマスタエレメントよりも処理負荷が高くなる。よって、第１コア１１は、周辺Ｉ／Ｏ４０などへアクセスする機能を有したマスタエレメントが他のマスタエレメントよりもスレーブエレメントへのアクセスが増加するため高アクセス処理部とみなす。そして、第１コア１１は、上記と同様にスレーブ優先度を設定する。つまり、第１コア１１は、ＩＧオフ後のセンターとの通信開始情報を取得すると、周辺Ｉ／Ｏ４０などへアクセスする機能を有したマスタエレメントが、優先的にスレーブエレメントへアクセスできるスレーブ優先度を選択して変更候補優先度とする。ここでの優先的にアクセスさせるスレーブエレメントは、周辺Ｉ／Ｏ４０などである。
【００７０】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。
【００７１】
（第２実施形態）
図７〜図１５を用いて、第２実施形態の電子制御装置１００に関して説明する。本実施形態の電子制御装置１００は、上記実施形態と同様の構成を有しているため、便宜的に同じ符号を用いる。本実施形態は、変更候補優先度の設定方法が上記実施形態と異なる。
【００７２】
各コア１１〜１３は、上記のように、それぞれ異なる機能を有しており、且つ、スレーブエレメントを介して、異なる周辺機器が接続されている。図７には、各コア１１〜１３の機能と、接続されている周辺機器の一例を示している。また、図７では、主に、スレーブエレメントである周辺Ｉ／Ｏ４０に接続された周辺機器を図示している。なお、本実施形態では、上記実施形態と同様に、第１コア１１をメインコアとする。よって、本実施形態では、第１コア１１がスレーブ優先度を変更する。
【００７３】
第１コア１１は、機能安全に関する機能を有している。第２コア１２は、エンジン制御に関する機能の一部である第１エンジン制御機能を有している。第１エンジン制御機能は、例えば、回転系入出力、ＭｕｌｔｉＰＷＭ出力、クランク制御、噴射制御、電スロ制御、ＭＲＥＬ（メインリレー）制御、Ａ／Ｆ制御、Ｏ２制御、ＡＳＩＣ通信（ＳＰＩ）を行う機能を含んでいる。そして、第２コア１２は、周辺Ｉ／Ｏ４０を介して、第１ＡＳＩＣ４１、第２ＡＳＩＣ４２、第３ＡＳＩＣ４３、電スロ制御ＩＣ４４、出力ＩＣ４５、大気圧センサ４６と接続されている。なお、電スロ制御ＩＣ４４は、電子スロットルを制御するＩＣである。
【００７４】
第３コア１３は、エンジン制御に関する機能の一部であり、第２コア１２とは異なるエンジン制御に関する第２エンジン制御機能と、通信に関する機能と、メモリに関する機能を有している。第２エンジン制御機能は、ノック制御を含んでいる。通信機能は、第１ＥＣＵ間通信、第２ＥＣＵ間通信（サブバス）、マイコン間通信（ＳＰＩ）を行う機能を含んでいる。そして、第３コア１３は、周辺Ｉ／Ｏ４０を介して、第１通信部４７、第２通信部４８、サブマイコン４９と接続されている。
【００７５】
第２コア１２は、主に、エンジン制御に関連する機能を有しており、周期的に周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０にアクセスする定常処理に加えて、大気圧センサ４６などの検出結果に応じて制御を変更する。一方、第３コア１３は、主に、通信に関連する機能を有しており、周期的に通信を実施するため、通信時に周辺Ｉ／Ｏ４０、ＲＡＭ５０、ＲＯＭ６０にアクセスする。
【００７６】
このように、複数のマスタエレメントは、処理として、スレーブエレメントと接続された周辺機器との通信を行うマスタエレメントを少なくとも一つ含んでいる。つまり、本実施形態では、周辺機器との通信を行うマスタエレメントとして、第２コア１２と第３コア１３を含んでいる例を採用している。
【００７７】
また、各コア１１〜１３は、一定時間（例えば１ｍｓ）の通信回数をカウントする機能を有している。各コア１１〜１３は、例えば、１回通信を実施する毎にカウンタをインクリメントする。他のコア１２、１３は、定期（例えば１ｍｓ）処理実行後に、コア間同期を利用して、通信回数をメインコア１１に通知する。
【００７８】
さらに、本実施形態では、各コア１１〜１３が、時間制約のある周辺機器との通信と、時間制約のない周辺機器との通信とで区別してカウントする例を採用する。各コア１１〜１３は、例えば、別々に設けられた、時間制約のある周辺機器との通信回数をカウントするカウンタと、時間制約のない周辺機器との通信回数をカウントするカウンタの結果から通信回数を集計する。
【００７９】
これは、時間制約のある周辺機器との通信に関して、意図的にスレーブ優先度を上げるためである。例えば、第１コア１１は、第２コア１２と第３コア３の通信回数が同じであれば、時間制約のある周辺機器との通信回数が多い方のコアのスレーブ優先度を、時間制約のある周辺機器との通信回数が少ない方のコアよりも上げる。つまり、時間制約のある周辺機器との通信回数に関しては、時間制約のある周辺機器との通信回数が多いコアのスレーブ優先度が上がりやすくなすように重みづけする、と言い換えることもできる。
【００８０】
電子制御装置１００は、機能ごとにコアを配置するようにしている。しかしながら、実際は、周辺Ｉ／Ｏ４０における割り付け制約や、各コア１１〜１３の処理負荷の平準化対策より、図７を用いて説明したように、機能ごとに綺麗に分けられないことがある。
【００８１】
これは、各コア１１〜１３どうしにおけるスレーブエレメントへのアクセスが競合の原因となる。図８では、第２コア１２と第３コア１３における処理負荷の状況、すなわち、第２コア１２と第３コア１３における周辺Ｉ／Ｏ４０へのアクセス競合のタイミングを示している。図８では、特に破線で囲ったタイミングで、周辺Ｉ／Ｏ４０へのアクセスが競合していることがわかる。なお、図８の四角印は、各コア１２、１３が周辺Ｉ／Ｏ４０にアクセスする期間を示している。また、タイミングｔ２０〜ｔ２９は、周期処理のタイミングである。
【００８２】
そこで、電子制御装置１００は、スレーブエレメントへのアクセスが競合する箇所を確認し、スレーブ優先度の計算に反映させる。言い換えると、電子制御装置１００は、マスタエレメント間の競合箇所を特定し、スレーブ優先度の計算に反映させる。なお、図８では、一例として、周辺Ｉ／Ｏ４０を採用しているが、ＲＡＭ５０、ＲＯＭ６０に関しても同様である。
【００８３】
第１コア１１は、図９、図１０に示すように、スレーブエレメントへのアクセスが集中する複数の要因（例えばエンジン回転数、通信回数）により、スレーブ優先度を切り替える。ここでは、一定時間の変動率より、その時々で最適なスレーブ優先度を計算し、定期的にスレーブ優先度を見直す例を採用している。
【００８４】
図９では、破線が第１コア１１の波形、二点鎖線が第２コア１２、一点鎖線が第３コア１３を示している。また、図９では、下向きの矢印で示しているタイミングｔ１〜ｔ１２のそれぞれが、スレーブ優先度の見直しタイミングである。
【００８５】
図１０に示すように、一例として、タイミングｔ１、ｔ２、ｔ４における周辺Ｉ／Ｏ４０のスレーブ優先度を図示している。タイミングｔ１では、図１０（ａ）に示すように、第１コア１１、第３コア１３、第２コア１２の順でスレーブ優先度が高くなっている。また、タイミングｔ２では、図１０（ｂ）に示すように、第１コア１１、第２コア１２、第３コア１３の順でスレーブ優先度が高くなっている。そして、タイミングｔ４では、図１０（ｃ）に示すように、第１コア１１、第３コア１３、第２コア１２の順でスレーブ優先度が高くなっている。
【００８６】
ここで、図１１〜図１５を用いて、第２実施形態の電子制御装置１００の処理動作に関して説明する。まず、図１１を用いて、第２実施形態における各コア１１〜１３のカウント処理に関して説明する。各コア１１〜１３は、通信要求が発生する毎に、図１１のフローチャートに示す処理を実行する。そして、各コア１１〜１３は、一定時間（例えば１ｍｓ）が経過するまで、通信要求が発生する毎に、図１１のフローチャートに示す処理を実行する。カウント処理に関しては、各コア１１〜１３で同様である。よって、以下においては、一例として、第２コア１２を用いて説明する。
【００８７】
ステップＳ２０では、通信対象に時間制約があるか否かを判定する。第２コア１２は、発生した通信要求による通信対象の周辺機器に、時間制約があるか否かを判定し、時間制約があると判定した場合はステップＳ２１へ進み、時間制約があると判定しなかった場合はステップＳ２２へ進む。なお、電子制御装置１００は、予め周辺機器毎に時間制約の有無を関連付けた制約情報を設定し、ＲＯＭ６０などに記憶しておくことができる。よって、第２コア１２は、制約情報を確認することで、時間制約の有無を判定することができる。
【００８８】
ステップＳ２１では、カウンタ（時間制約あり）をインクリメントする。第２コア１２は、時間制約ありの周辺機器との通信回数をカウントするためのカウンタをインクリメントする。ステップＳ２２では、カウンタ（時間制約なし）をインクリメントする。第２コア１２は、時間制約なしの周辺機器との通信回数をカウントするためのカウンタをインクリメントする。このように、各コア１１〜１３は、一定時間内における通信回数をカウントする。
【００８９】
次に、図１２を用いて、第２実施形態における各コア１２〜２３の通知処理に関して説明する。各コア１１〜１３は、一定時間（例えば１ｍｓ）が経過する毎に、図１２のフローチャートに示す処理を実行する。
【００９０】
ステップＳ３０では、通信回数（時間制約あり／なし）をメインコアに送信する。第２コア１２は、時間制約ありの周辺機器との通信回数と、時間制約なしの周辺機器との通信回数とを第１コア１１に送信する。つまり、第２コア１２は、第１コア１１が、時間制約ありの周辺機器との通信回数と、時間制約なしの周辺機器との通信回数とを区別できる状態で通信回数を送信する。
【００９１】
ステップＳ３１では、カウンタをクリアする。第２コア１２は、時間制約ありの周辺機器との通信回数をカウントするためのカウンタと、時間制約なしの周辺機器との通信回数をカウントするためのカウンタをクリアする。
【００９２】
次に、図１３〜図１５を用いて、第２実施形態における第１コア１１の処理動作に関して説明する。第１コア１１は、一定時間（例えば１ｍｓ）毎に、図１３のフローチャートに示す処理を実行する。なお、第１コア１１による変更処理の実行周期は、上記実施形態と同様である。
【００９３】
ステップＳ４０は、エンジン回転数によりスレーブ優先度を選択する（優先度設定部、回転数基準設定部）。ステップＳ４０は、ステップＳ１０、Ｓ１１、もしくは、第２実施形態のステップＳ１０ａ、Ｓ１１ａと同様である。本実施形態では、図１５（ａ）に、ステップＳ４０で設定されたスレーブ優先度の一例を示す。
【００９４】
ステップＳ４１では、通信回数によりスレーブ優先度を計算する（優先度設定部、通信基準設定部）。第１コア１１は、周辺機器との通信回数が多いコアほど優先的にスレーブエレメントへアクセスできるように、優先度記憶部４０ａに記憶されているスレーブ優先度を並び替えて、通信回数に基づくスレーブ優先度を設定する。
【００９５】
ここで、図１４を用いて、通信回数に基づくスレーブ優先度の設定方法に関して説明する。ここでは、一例として、第２コア１２の方が第３コア１３よりも通信回数が多く、第２コア１２の方が第３コア１３よりも時間制約ありの周辺機器との通信回数が多い例を採用する。
【００９６】
周辺Ｉ／Ｏ４０のスレーブ優先度は、初期値が図１４（ａ）に示すように、第１コア１１、第２コア１２、第３コア１３の順に高くなっている。そして、第１コア１１は、自身でカウントした通信回数、第２コア１２及び第３コア１３から受信した通信回数に基づいて、スレーブ優先度を並び替える。この結果、周辺Ｉ／Ｏ４０のスレーブ優先度は、図１４（ｂ）に示すように第１コア１１、第３コア１３、第２コア１２の順に高くなる。また、周辺Ｉ／Ｏ４０のスレーブ優先度は、時間制約を反映して並び替えると、図１４（ｃ）に示すように第１コア１１、第３コア１３、第２コア１２の順に高くなる。さらに、第３コア１３は、スレーブ優先度が５から７へと変更される。なお、時間制約を反映して並び替えたスレーブ優先度は、図１５（ｂ）にも示している。このように、第１コア１１は、通信回数だけではなく、時間制約を考慮してスレーブ優先度を並び替える。
【００９７】
なお、本実施形態では、時間制約の有無に応じて、スレーブ優先度を変更する例を採用している。しかしながら、本開示は、これに限定されず、通信回数だけに基づいてスレーブ優先度を並び替えてもよい。
【００９８】
ステップＳ４２では、スレーブ優先度を決定する（優先度設定部、平均設定部）。第１コア１１は、ステップＳ４０で設定した各スレーブ優先度を示す順位と、ステップＳ４１で設定した各優先度を示す順位どうしの相加平均をとったスレーブ優先度を設定する。第１コア１１は、図５（ａ）に示すステップＳ４０で設定した各スレーブ優先度と、図５（ｂ）に示すステップＳ４１で設定した各優先度とを用いて、各コアのスレーブ優先度である、数字で示された順位を足して２で割ることで、相加平均をとる。
【００９９】
図５（ｃ）に示すように、第１コア１１は、ステップＳ４０で設定した各スレーブ優先度を示す順位が１で、ステップＳ４１で設定した各優先度を示す順位が１であるため１となる。同様に、第２コア１２は、ステップＳ４０で設定した各スレーブ優先度を示す順位が３で、ステップＳ４１で設定した各優先度を示す順位が７であるため５となる。そして、第３コア１３は、ステップＳ４０で設定した各スレーブ優先度を示す順位が５で、ステップＳ４１で設定した各優先度を示す順位が３であるため４となる。よって、ステップＳ４２で得られる周辺Ｉ／Ｏ４０のスレーブ優先度は、図１５（ｃ）に示すように第１コア１１、第３コア１３、第２コア１２の順に高くなる。
【０１００】
ステップＳ４３は、ステップＳ１２と同様である。ステップＳ４４では、調停に用いるスレーブ優先度を変更する（優先度変更部）。第１コア１１は、アクセス競合した際に用いるスレーブ優先度を、ステップＳ４２で設定したスレーブ優先度に変更する。このように、第１コア１１は、ステップＳ４２で設定したスレーブ優先度が、アクセス競合した際に用いているスレーブ優先度と異なる場合、アクセス競合した際に用いるスレーブ優先度をステップＳ４２で設定したスレーブ優先度に変更する。
【０１０１】
このように構成された電子制御装置１００は、上記実施形態と同様の効果を奏することができる。また、電子制御装置１００は、エンジン回転数だけではなく、周辺機器との通信回数を考慮してスレーブ優先度を設定するため、上記実施形態よりも、本来優先させるべきマスタエレメントの待ち時間を減らすことができる。さらに、電子制御装置１００は、時間制約の有無を考慮してスレーブ優先度を設定するため、本来優先させるべきマスタエレメントの待ち時間をより一層減らすことができる。
【０１０２】
（変形例２）
電子制御装置１００は、各コアに発生する通信回数を予測して、スレーブ優先度を設定してもよい。このために、電子制御装置１００は、通信回数に基づいてスレーブ優先度を計算する際に、周期的な通信と動的に変化する通信とに分けて計算する。動的に変化する通信は、追加される通信と言い換えることもできる。
【０１０３】
各コア１１〜１３は、周期的な通信回数と、動的に変化する通信回数を分けてカウントする。この場合、各コア１１〜１３は、時間制約の有無を分けてカウントする場合と同様に、別々に設けられた周期的な通信回数をカウントするカウンタと、動的に変化する通信回数をカウントするカウンタの結果から通信回数を集計する。
【０１０４】
第１コア１１は、蓄積した周期的な通信回数より、次の定期処理で各コアに発生する通信回数を予測する。さらに、第１コア１１は、この予測に加えて、動的な通信が増加傾向にあれば、これも加味してスレーブ優先度を決定する。
【０１０５】
このようにしても、電子制御装置１００は、第１実施形態及び第２実施形態と同様の効果を奏することができる。さらに、電子制御装置１００は、予測した通信回数を考慮してスレーブ優先度を決定するため、実際に通信回数が増加する前にスレーブエレメントへのアクセス頻度に応じたスレーブ優先度を事前に設定できるため、より適切に優先度をあらかじめ設定することできて好ましい。
【符号の説明】
【０１０６】
１１…第１コア、１２…第２コア、１３…第３コア、１ｎ…第ｎコア、２０…ＤＭＡＣ、３０…クロスバースイッチ、３１…参照部、３２…比較部、３３…選択部、４０…周辺Ｉ／Ｏ、４０ａ…優先度記憶部、５０…ＲＡＭ、６０…ＲＯＭ、７１…第１バス、７２…第２バス、７３…第３バス、１００…電子制御装置
【図１】
2019168833.tif 000003
【図２】
2019168833.tif 000004
【図３】
2019168833.tif 000005
【図４】
2019168833.tif 000006
【図５】
2019168833.tif 000007
【図６】
2019168833.tif 000008
【図７】
2019168833.tif 000009
【図８】
2019168833.tif 000010
【図９】
2019168833.tif 000011
【図１０】
2019168833.tif 000012
【図１１】
2019168833.tif 000013
【図１２】
2019168833.tif 000014
【図１３】
2019168833.tif 000015
【図１４】
2019168833.tif 000016
【図１５】
2019168833.tif 000017