(57)【要約】【課題】複数のプロセッサを備える電子制御装置において、複数のプロセッサそれぞれの稼働率が低下することを抑制する技術を提供する。【解決手段】ＥＣＵ１０は、共用データを生成する第１ＰＥと、共用データを用いた処理を実行する第２ＰＥと、を備える。ＥＣＵ１０は、経過判断部としてのＳ１０と、同期判断部としてのＳ４０、Ｓ５０と、を更に備える。同期判断部は、経過時間が時間閾値以上であると判断された場合に、バリア同期が有効であると判断し、経過時間が時間閾値未満であると判断された場合に、バリア同期が無効であると判断する。【選択図】図４
2019028748.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行プロセッサ（４１、４２）を備える電子制御装置（１０）であって、
前記複数の実行プロセッサは、１つの第１プロセッサ（４１）と、少なくとも１つの第２プロセッサとを備え、
前記第１プロセッサは、少なくとも前記第２プロセッサが実行する処理において用いられるデータである共用データを生成し、
前記第２プロセッサは、前記共用データを用いた処理を実行し、
当該電子制御装置は、
前記共用データが生成されてからの経過時間が予め定められた時間閾値以上であるか否かを判断する経過判断部（Ｓ３０）と、
前記経過時間が前記時間閾値以上であると判断された場合に、前記複数の実行プロセッサそれぞれが実行する処理であって、全ての前記実行プロセッサが前記全ての実行プロセッサ間の同期をとるべき同期点に到達する迄前記同期点の次に行うべき処理を待機させる複数同期、が有効であると判断し、前記経過時間が前記時間閾値未満であると判断された場合に、前記複数同期が無効であると判断する同期判断部（Ｓ４０、Ｓ５０）と、
を更に備える電子制御装置。
【請求項２】
請求項１に記載の電子制御装置であって、
前記複数の実行プロセッサそれぞれは、
前記同期判断部による判断結果を取得する判断取得部（Ｓ３）と、
前記判断結果が、前記複数同期が有効であることを表しているか否か、を判断する有効判断部（Ｓ４）と、
前記判断結果が前記複数同期が有効であることを表す場合に、前記複数同期を実行する有効実行部（Ｓ７）と、
を備える電子制御装置。
【請求項３】
請求項２に記載の電子制御装置であって、
前記複数の実行プロセッサそれぞれでは、
前記有効実行部は、前記判断結果が前記複数同期が無効であることを表す場合に、前記複数同期を実行しない
電子制御装置。
【請求項４】
請求項１から請求項３のいずれか一項に記載の電子制御装置であって、
前記第１プロセッサは、予め定められた周期で、前記共用データを生成する
電子制御装置。
【請求項５】
請求項１から請求項３のいずれか一項に記載の電子制御装置であって、
前記第１プロセッサによって前記共用データが生成される時間間隔を前記共用データが生成される毎に検出して記憶部（１２）に記憶させる時間間隔部（Ｓ１３０）と、
前記時間間隔部によって検出された前記時間間隔である現時間間隔と、前記時間間隔部によって前記現時間間隔よりも過去に検出された過去の時間間隔とを取得し、前記現時間間隔が前記過去の時間間隔以上であるか否かを判断する間隔判断部（Ｓ３３０）と、
前記現時間間隔が前記過去の時間間隔以上である場合に、前記時間閾値を前記時間閾値よりも大きい値に設定し直す増加再設定部（Ｓ３５０）と、
を更に備え、
前記経過判断部は、前記増加再設定部によって設定し直された時間閾値に基づいて判断する
電子制御装置。
【請求項６】
請求項５に記載の電子制御装置であって、
前記現時間間隔が前記過去の時間間隔未満である場合に、前記時間閾値を前記時間閾値よりも小さい値に設定し直す減少再設定部（Ｓ３４０）
を更に備え、
前記経過判断部は、前記減少再設定部によって設定し直された時間閾値に基づいて判断する
電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数のプロセッサを備える電子制御装置に関する。
【背景技術】
【０００２】
特許文献１には、複数のプロセッサを備える電子制御装置において、複数のプロセッサに並列に処理を実行させるために、全てのプロセッサ間の同期をとる処理（以下、同期処理）を行う、という技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２８８０３９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記同期処理では、複数のプロセッサそれぞれにおいて、所定のタスクについて予め同期ポイントが設定されている。上記同期処理では、複数のプロセッサのそれぞれは、全てのプロセッサにおいて上記所定のタスクが同期ポイントに到達するまで、同期ポイントの次のタスクの実行を待機する。
【０００５】
しかしながら、特許文献１に記載の技術では、上記同期処理において、複数のプロセッサそれぞれは全てのプロセッサが同期ポイントに到達して全てのプロセッサ間の同期が成立する迄常に待機しなくてはならないため、稼働率が低下するという問題が生じ得る。
【０００６】
本開示の１つの局面は、複数のプロセッサを備える電子制御装置において、複数のプロセッサそれぞれの稼働率が低下することを抑制する技術を提供する。
【課題を解決するための手段】
【０００７】
本開示の１つの局面は、複数の実行プロセッサ（４１、４２）を備える電子制御装置（１０）である。複数の実行プロセッサは、１つの第１プロセッサ（４１）と、少なくとも１つの第２プロセッサ（４２）とを備える。第１プロセッサは、少なくとも第２プロセッサが実行する処理において用いられるデータである共用データを生成する。第２プロセッサは、共用データを用いた処理を実行する。
【０００８】
当該電子制御装置は、経過判断部（Ｓ３０）と、同期判断部（Ｓ４０、Ｓ５０）と、を備える。経過判断部は、共用データが生成されてからの経過時間が予め定められた時間閾値以上であるか否かを判断する。同期判断部は、経過時間が時間閾値以上であると判断された場合に、複数の実行プロセッサそれぞれが実行する処理であって、全ての実行プロセッサが全ての実行プロセッサ間の同期をとるべき同期点に到達する迄同期点の次に行うべき処理を待機させる複数同期、が有効であると判断し、経過時間が時間閾値未満であると判断された場合に、複数同期が無効であると判断する。
【０００９】
このような構成では、例えば、判断結果に基づいて、複数同期が有効のときには各プロセッサが複数同期を実行し、無効のときには各プロセッサが複数同期を実行しないように電子制御装置を構成することができる。つまり、各プロセッサにおいて複数同期が常に実行されるわけではないので、複数のプロセッサを備える電子制御装置において、複数のプロセッサそれぞれにおける稼働率の低下を抑制することができる。
【００１０】
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態の車両制御システムの構成を示すブロック図。
【図２】制御部の機能を示す機能ブロック図。
【図３】プロセッサが実行する同期実行処理のフローチャート。
【図４】制御部が実行する有効設定処理のフローチャート。
【図５】制御部が実行する同期管理処理のフローチャート。
【図６】制御部が実行する同期制御処理のフローチャート。
【図７】ＥＣＵの作動例を説明する説明図。
【図８】第２実施形態の制御部が実行する同期管理処理のフローチャート。
【図９】時間閾値が設定される例を説明する説明図。
【図１０】第２実施形態のＥＣＵの作動例を説明する説明図。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本開示の実施形態を説明する。
［１．第１実施形態］
［１−１．構成］
図１に示す車両制御システム１は、例えば乗用車等といった車両に搭載されるシステムである。車両制御システム１は、電子制御装置（以下、ＥＣＵ）１０を備える。車両制御システム１は、エンジン２０を備えていても良い。なお、ＥＣＵは、Electronic Control
Unitの略である。
【００１３】
ＥＣＵ１０は、エンジン２０を作動させるための各種制御を行う。
ＥＣＵ１０は、ＲＯＭ１１、ＲＡＭ１２、通信部１３、マルチプロセッサ１４、センサ部１５、入出力ポート１６等を備える。
【００１４】
ＲＯＭ１１は、マルチプロセッサ１４を作動させるプログラムが記憶されている。マルチプロセッサ１４は、該プログラムに従い作動し、ＥＣＵ１０を統括制御する。
ＲＡＭ１２は、マルチプロセッサ１４によりアクセスされる。通信部１３は、車内ＬＡＮ等を介して接続された図示しない他のＥＣＵと通信を行う。センサ部１５は、エンジン２０の状態を検出するための各種センサを備える。入出力ポート１６は、エンジン２０を制御するための各種信号の送受信を行う。
【００１５】
マルチプロセッサ１４は、プロセッサ制御部（以下、制御部）３０と、複数のプロセッサ（以下、ＰＥ）４１、４２を備える。
制御部３０は、図示しないが、中央演算処理装置（ＣＰＵ）及びメモリを備える。ここでいうメモリには、レジスタ３１が含まれる。レジスタ３１は、制御部３０が備えるＣＰＵ、及び複数のＰＥ４１、４２によりアクセスされる。
【００１６】
制御部３０は、複数のＰＥ４１、４２によるバリア同期を管理する機能を有する。図２に示すように、制御部３０は、ＣＰＵがプログラムを実行することで実現される機能の構成として、同期管理部３５、同期制御部３６、有効設定部３７、及びタイマ部３８を備える。同期管理部３５は、後述する同期管理処理を実行する。同期制御部３６は、後述する同期制御処理を実行する。有効設定部３７は、後述する有効設定処理を実行する。タイマ部３８は、後述する連動タイマ、タイムアウトタイマといった、時間を計測するタイマを有する。
【００１７】
複数のＰＥ４１、４２それぞれは、図示しないが、ＣＰＵ、メモリを有する。複数のＰＥ４１、４２それぞれは、ＣＰＵがプログラムを実行することで、複数のＰＥ４１、４２それぞれに予め割り振られた所定の機能を実現する。複数のＰＥ４１、４２のそれぞれは、後述する同期実行処理を実行する。
【００１８】
なお、制御部３０、及び複数のＰＥ４１、４２において、これらの要素を実現する手法はソフトウェアに限るものではなく、その一部又は全部の要素を、論理回路やアナログ回路等を組み合わせたハードウェアを用いて実現してもよい。
【００１９】
（バリア同期の概要）
バリア同期とは、複数のＰＥ４１、４２それぞれが実行する処理であって、ＰＥ４１、４２それぞれが同期ポイントに到達した際に、全てのＰＥ４１、４２が同期ポイントに到達する迄、同期ポイントの次に行うべき処理を待機させる処理、を表す。同期実行処理は、複数のＰＥ４１、４２それぞれがバリア同期を実行するための処理手順を表す。
【００２０】
なお、ここでいう同期ポイントとは、全てのＰＥ４１、４２間の同期をとるべきポイントを表す。同期ポイントは、ＰＥ４１、４２それぞれに個別に設定されている。
具体的には、本実施形態では、後述する図７に示すように、ＰＥ４１に第１タスクが割り当てられ、ＰＥ４２に第２タスクが割り当てられている。ここでいうタスクとは、ＰＥ４１、４２それぞれによって実行されているプログラムにおける処理のことをいう。
【００２１】
これらのタスクは、本実施形態では予め定められた周期で起動し、第１タスクと第２タスクとでは周期が異なる。また、第１タスクと、第２タスクとで共通に用いられるデータが存在する。以下でいう共用データとは、第１タスク、第２タスクで共通に用いられるデータをいう。第１タスクは、共用データを生成する処理を含む。第２タスクは、共用データを参照し、共用データに基づく演算処理を含む。なお、第１タスクが実行される周期、すなわち共用データが生成される周期をエントリ周期Ｔ２という。
【００２２】
以下でいう第１プロセッサ（以下、第１ＰＥ）は、複数のＰＥ４１、４２のうちの１つであり、本実施形態ではＰＥ４１が第１ＰＥに相当する。また、第２プロセッサ（以下、第２ＰＥ）は、複数のＰＥ４１、４２のうち、第１ＰＥ以外のプロセッサであり、本実施形態ではＰＥ４２が第２ＰＥに相当する。第１ＰＥとしてのＰＥ４１は、少なくとも第２ＰＥが実行する処理である第２タスクにおいて用いられる共用データを生成する。第２ＰＥとしてのＰＥ４２は、共用データを用いた処理、つまり第２タスクを実行する。
【００２３】
本実施形態では、共用データのリアルタイム性が高いほど、つまり、共用データが取得されてから経過した時間が短いほど、第２タスクによる上記演算処理の処理結果は車両制御システム１としての性能を向上させる。なお、ここでいう性能が向上することには、例えば、燃費が向上すること、が含まれる。つまり、本実施形態の車両制御システム１では、車両制御システム１の性能を向上させるためには、共用データが更新された直後に該共用データが参照されること、が望ましい。
【００２４】
そこで、第１タスクでは、同期ポイントは、共用データ更新後に設定されている。共用データ更新とは、共用データが生成され、生成された共用データがＲＡＭ１２等のメモリに書き込まれることを表す。また、第２タスクでは、同期ポイントは、共用データ参照前に設定されている。共用データ参照とは、共用データがＲＡＭ１２等のメモリから読み出されることを表す。なお、全てのＰＥ４１、４２のタスクが同期ポイントに到達したということは、全てのプロセッサ間の同期が成立した、ということを表す。
【００２５】
本実施形態では、複数のＰＥ４１、４２それぞれは、バリア同期への参加及び不参加を
設定可能に構成されている。複数のＰＥ４１、４２それぞれは、バリア同期への参加及び不参加を表す情報（以下、参加情報）を、レジスタ３１の所定の領域に複数のＰＥ４１、４２毎に書き込むように構成されている。
【００２６】
また、複数のＰＥ４１、４２は、バリア同期結果を参照可能に構成されている。バリア同期結果とは、制御部３０によって生成される情報であり、「不成立」、「成立」、「タイムアウト」のいずれかに設定される。バリア同期結果は、ＲＡＭ１２に記憶される。ここでいう不成立とは、バリア同期が実行されていないことを表す。成立とはバリア同期が完了したことを表す。タイムアウトとは所定時間内にバリア同期が完了しなかったことを表す。
【００２７】
そして本実施形態では特に、複数のＰＥ４１、４２は、有効設定情報を参照可能に構成されている。有効設定情報は、ＲＡＭ１２に記憶される。有効設定情報とは、制御部３０によって生成される情報であり、「有効」、「無効」のいずれかに設定される情報である。ここでいう有効とは、複数のＰＥ４１、４２がバリア同期を実行することを許可すること、を表す。また、無効とは、複数のＰＥ４１、４２がバリア同期を実行することを禁止すること、を表す。
【００２８】
ここで、複数のＰＥ４１、４２それぞれは、同期実行処理に基づいて、同期ポイントに到達し、且つ、バリア同期が有効に設定されており、且つ、自プロセッサがバリア同期に参加する、という条件（以下、同期実行条件）が満足される場合に、バリア同期を実行する。自プロセッサとは、同期実行処理を実行しているプロセッサを表す。
【００２９】
複数のＰＥ４１、４２それぞれは、バリア同期が開始されると、バリア同期結果が「成立」になるまで待機し、バリア同期結果が「成立」した場合に、同期ポイントの次以降の処理を再開する。また、複数のＰＥ４１、４２それぞれは、バリア同期結果が「成立」せず、バリア同期が「タイムアウト」した場合にも、同期ポイントの次以降の処理を再開する。
【００３０】
一方、複数のＰＥ４１、４２それぞれは、同期実行条件が満足されない場合、バリア同期を実行せず、つまり待機することなく、同期ポイントの次の処理を実行する。
なお、上記同期管理部３５は、少なくとも、連動タイマを開始及び停止させてエントリ周期Ｔ２を測定する機能を有する。また、上記同期制御部３６は、少なくとも、後述するバリア同期が所定時間内に「成立」しない場合に備え、タイムアウトタイマを開始及び停止させてタイムアウト制御を行う機能を有する。タイムアウト制御とは、バリア同期が所定時間内に「成立」しない場合に、バリア同期結果を「タイムアウト」に設定する制御をいう。有効設定部３７は、バリア同期の「有効」、「無効」を切替える機能を有する。
【００３１】
［１−２．処理］
［１−２−１．同期実行処理］
ＰＥ４１、４２それぞれのＣＰＵが実行する同期実行処理について、図３のフローチャートを用いて説明する。以下の説明では、ＰＥ４１のＣＰＵが同期実行処理を実行する場合の具体例を説明する。同期実行処理は、ＰＥ４１の第１タスクが同期ポイントに到達する毎に起動される。なお、ＰＥ４２のＣＰＵが同期実行処理を実行する場合も、同様に処理が実行される。この場合の同期実行処理は、ＰＥ４２の第２タスクが同期ポイントに到達する毎に起動される。
【００３２】
ＰＥ４１のＣＰＵ（以下、ＰＥ４１）は、Ｓ１では、対応するレジスタ３１に、到達情報を書き込む。到達情報とは、同期ポイントに到達したか未到達であるかを表す情報である。ここでは、ＰＥ４１の到達情報を書き込むべきレジスタ３１に、ＰＥ４１が同期ポイ
ントに到達したことを表す到達情報を書き込む。
【００３３】
ＰＥ４１は、Ｓ２では、有効設定情報を取得する。
ＰＥ４１は、Ｓ３では、有効設定情報がバリア同期が有効であることを表しているか否か、を判断する。ＣＰＵは、有効設定情報がバリア同期が有効であることを表している場合に処理をＳ４へ移行させ、有効設定情報がバリア同期が無効であることを表す場合に、同期実行処理を終了する。
【００３４】
ＰＥ４１は、Ｓ４では、ＰＥ４１においてバリア同期への参加が設定されているか否かを判断する。バリア同期への参加は、参加及び不参加のいずれか一方に予め設定されていても良いし、ＰＥ４１又は制御部３０が実行する他の処理によって参加及び不参加のいずれか一方に適宜設定されても良い。本実施形態では、後述する制御部３０が実行する同期管理処理における同期制御処理にて、同期管理処理が開始されるきっかけとなった同期ポイントに到達したプロセッサについて、参加情報を参加に設定するように構成されている。
【００３５】
ＰＥ４１は、バリア同期への参加が設定されている場合は処理をＳ７へ移行させ、不参加が設定されている場合は同期実行処理を終了する。
ＰＥ４１は、Ｓ７では、バリア同期を実行する。つまり、ＣＰＵは、「成立」又は「タイムアウト」を表すバリア同期結果が取得される迄、同期ポイントの次以降の処理を待機させる。ＰＥ４１は、同期実行処理とは異なる処理によって、所定の周期でバリア同期結果を参照し、バリア同期が「成立」したか、「タイムアウト」したかを判断するように構成されている。ここでいう待機させるとは、処理を実行しないで待つことをいう。ＰＥ４１は、バリア同期が「成立」又は「タイムアウト」した後に、本同期実行処理を終了する。
【００３６】
なお、ＰＥ４１は、同期実行処理を終了する際、対応するレジスタ３１の初期化を実行する。ここでいう初期化とは、ＰＥ４１の到達情報が書き込まれるレジスタ３１にＰＥ４１が同期ポイントに到達していないことを表す情報が書き込まれること、を表す。また、ＰＥ４１は、バリア同期が「成立」又は「タイムアウト」した後に、同期ポイントの次以降の処理を再開するように構成される。
【００３７】
［１−２−２．有効設定処理］
次に、制御部３０が実行する有効設定処理について、図４に示すフローチャートを用いて説明する。有効設定処理は、有効設定情報を有効又は無効に設定するための処理である。換言すれば、有効設定処理は、複数のＰＥ４１、４２に、バリア同期の実行を許可するか又は禁止するかを設定するための処理である。
【００３８】
車両制御システム１では、常にバリア同期が許可され実行されると、複数のＰＥ４１、４２において、バリア同期が成立する迄の待機時間が生じるため、複数のＰＥ４１、４２の稼働率が低下するおそれが生じる。そこで、有効設定処理では、車両制御システム１の性能を向上させることが可能である場合にのみ、バリア同期を有効に設定する。具体的には、有効設定処理では、新たな共用データが生成される迄の待ち時間が短い場合にのみバリア同期を有効に設定する。
【００３９】
以下、有効設定処理の処理手順を説明する。有効設定処理は、予め定められた周期であってエントリ周期Ｔ２よりも短い周期で繰り返し実行される。
制御部３０は、Ｓ１０では、時間閾値を取得する。本実施形態では、時間閾値は、予め定められた値であって、ＲＯＭ１１に予め記憶されている。時間閾値は、エントリ周期Ｔ２の１／２よりも大きい値に設定される。例えば、時間閾値は、エントリ周期Ｔ２の３／
４等といった値に設定され得る。但し、時間閾値がこれに限定されないことは言うまでもない。なお、本実施形態では、エントリ周期Ｔ２は、予め定められた値であり、ＲＯＭ１１に記憶されている。
【００４０】
制御部３０は、Ｓ２０では、経過時間を取得する。ここでいう経過時間とは、共用データが生成されてから経過した時間を表す。経過時間は、後述する連動タイマによって計測される。連動タイマによって計測される経過時間は、共用データが生成される毎にクリアされ、初期値である０に設定し直される。制御部３０は、連動タイマによるカウント値（以下、連動タイマ値）を経過時間として取得する。
【００４１】
制御部３０は、Ｓ３０では、経過時間が時間閾値以上であるか否かを判断する。具体的には、制御部３０は、連動タイマ値が時間閾値以上であるか否かを判断する。制御部３０は、経過時間が時間閾値以上である場合に処理をＳ４０へ移行させ、時間閾値未満である場合に処理をＳ５０へ移行させる。
【００４２】
制御部３０は、Ｓ４０では、バリア同期が有効であると判断し、有効設定情報を「有効」に設定し、有効設定処理を終了する。
制御部３０は、Ｓ５０では、バリア同期が無効あると判断し、有効設定情報を「無効」に設定し、有効設定処理を終了する。
【００４３】
つまり、有効設定処理では、新たな共用データが生成される迄の待ち時間が長い場合にバリア同期が無効に設定され、新たな共用データが生成される迄の待ち時間が短い場合にバリア同期が有効に設定される。これにより、後述する図７に示すように、本実施形態では、第２タスクが、車両制御システム１で許容される予め定められた範囲内の待ち時間（以下、有効時間）Ｔ１で更新直後の共用データを参照できる場合に、車両制御システム１としての性能を向上させることが可能となる。有効期間Ｔ１は、エントリ周期Ｔ２と時間閾値との差分に相当する。
【００４４】
有効期間Ｔ１は、本実施形態のバリア同期における待機時間の最大値に相当する。時間閾値は、有効期間Ｔ１が車両制御システム１にて許容され得る程度の値となるように、設定される。
【００４５】
［１−２−３．同期管理処理］
次に、制御部３０が実行する同期管理処理の処理手順について、図５のフローチャートを参照して説明する。制御部３０は、複数のＰＥ４１、４２のうちいずれかが同期ポイントに到達する毎に、同期管理処理を起動する。なお、制御部３０は、同期管理処理とは別の処理によって、予め定められた周期で上記到達情報を参照し、複数のＰＥ４１、４２のうちいずれかが同期ポイントに到達したことを検出している。
【００４６】
制御部３０は、Ｓ１００では、同期ポイントに到達したプロセッサが第１ＰＥであるか否かを判断する。制御部３０は、同期ポイントに到達したプロセッサが、第１ＰＥである場合に処理をＳ１１０へ移行させ、第１ＰＥではない場合に処理をＳ１７０へ移行させる。第１ＰＥとは、上述のように、複数のＰＥ４１、４２のうちの１つであって、共用データを繰り返し生成するプロセッサをいう。ここでは、ＰＥ４１が第１ＰＥに相当する。なお、ＰＥ４１が第１ＰＥに相当することを表す情報は、ＲＯＭ１１に予め記憶されている。
【００４７】
制御部３０は、Ｓ１１０では、参加情報に基づいて、第２ＰＥがバリア同期への参加を表しているか否かを判断する。制御部３０は、第２ＰＥが、バリア同期への参加を表している場合に処理をＳ１４０へ移行させ、バリア同期への不参加を表している場合に処理を
Ｓ１２０へ移行させる。
【００４８】
第２ＰＥとは、上述のように、複数のＰＥ４１、４２のうち第１ＰＥを除いた残りであり、共用データを用いた処理を繰り返し実行するプロセッサを表す。ここでは、ＰＥ４２が第２ＰＥに相当する。なお、ＰＥ４２が第２ＰＥに相当することを表す情報は、ＲＯＭ１１に予め記憶されている。
【００４９】
制御部３０は、Ｓ１２０では、連動タイマ値をエントリ周期Ｔ２としてＲＡＭ１２に記憶させ、処理をＳ１３０へ移行させる。
制御部３０は、Ｓ１３０では、連動タイマによる連動タイマ値をクリアし、すなわち連動タイマ値を０に設定し、新たに連動タイマを始動させる。そして、制御部３０は同期管理処理を終了する。連動タイマは、第１ＰＥとしてのＰＥ４１が同期ポイントに到達する毎に連動タイマ値をクリアし、新たに連動タイマ値のカウントを開始させるように構成されている。つまり、連動タイマは、エントリ周期Ｔ２をカウントするタイマである。本実施形態では、制御部３０は、Ｓ１２０において、連動タイマ値をエントリ周期Ｔ２としてＲＡＭ１２に記憶させた後に、Ｓ１３０にて連動タイマ値をクリアし、連動タイマを再始動させるように構成されている。
【００５０】
制御部３０は、第２ＰＥとしてのＰＥ４１が同期ポイントに到達したことをきっかけとして同期管理処理がスタートした場合に移行するＳ１４０では、有効設定情報を取得する。
続いて制御部３０は、Ｓ１５０では、有効設定情報に基づいて、バリア同期が有効であるか否かを判断する。制御部３０は、バリア同期が有効である場合に処理をＳ１６０へ移行させ、有効でない場合に同期管理処理を終了する。
【００５１】
制御部３０は、Ｓ１６０では、同期制御処理を実行し、同期管理処理を終了する。同期制御処理は、バリア同期が成立したか否かを判定するための処理である。ここでいうバリア同期が成立した、とは、バリア同期が有効である際に、タイムアウトタイマがタイムアウトする迄の所定期間（以下、タイムアウト期間）内に、全てのＰＥ４１、４２が同期ポイントに到達し、且つ、全てのＰＥ４１、４２によるバリア同期への参加が検出されたこと、をいう。同期制御処理では、バリア同期が「成立」したこと、又は、バリア同期が不成立で「タイムアウト」したこと、バリア同期が「不成立」であること、といったバリア同期結果が出力され得る。
【００５２】
制御部３０は、第１ＰＥが同期ポイントに到達したことをきっかけとして本同期管理処理がスタートしており、且つ、第２ＰＥがバリア同期への参加を表している場合に移行するＳ１７０では、連動タイマを停止させる。
【００５３】
続いて、制御部３０は、Ｓ１８０では、同期制御処理を実行する。
次に、制御部３０は、Ｓ１９０では、同期制御処理によるバリア同期結果が出力済みであるか否かを判断する。制御部３０は、出力済みである場合に処理をＳ１２０へ移行させ、出力済みでない場合に同期管理処理を終了する。
【００５４】
次に、制御部３０が同期管理処理のＳ１６０又はＳ１８０にて実行する同期制御処理を図６に示すフローチャートに基づいて説明する。
制御部３０は、Ｓ２００では、バリア同期結果が出力済みであるか否かを判断する。制御部３０は、バリア同期結果が出力済みである場合に同期制御処理を終了し、出力済みでない場合に処理をＳ２１０へ移行させる。なお、バリア同期結果が出力済みであるとは、バリア同期結果がＲＡＭ１２に書き込まれたことが含まれ得る。
【００５５】
制御部３０は、Ｓ２１０では、複数のＰＥ４１、４２のうち同期管理処理がスタートしたきっかけとなった、同期ポイントに到達したプロセッサについて、参加情報を参加に設定する。
【００５６】
次に、制御部３０は、Ｓ２２０では、タイムアウトタイマがカウントを開始済みであるか否かを判断する。制御部３０は、タイムアウトタイマがカウントを開始済みである場合に処理をＳ２４０へ移行させ、開始済みでない場合に処理をＳ２３０へ移行させる。
【００５７】
制御部３０は、Ｓ２３０では、タイムアウトタイマにカウントを開始させ、処理をＳ２４０へ移行させる。
制御部３０は、Ｓ２４０では、参加情報に基づいて、全てのＰＥ４１、４２がバリア同期に参加しているか否かを判断する。制御部３０は、全てのＰＥ４１、４２がバリア同期に参加していると判断された場合に処理をＳ２７０へ移行させ、参加していないと判断された場合に処理をＳ２５０へ移行させる。
【００５８】
制御部３０は、Ｓ２５０では、タイムアウトタイマがタイムアウトしているか否かを判断する。制御部３０は、タイムアウトタイマがタイムアウトしている場合に処理をＳ２６０へ移行させ、タイムアウトしていない場合に同期制御処理を終了する。タイムアウトタイマがタイムアウトしている、とは、カウントが開始されてからタイムアウト期間が経過して、タイムアウトタイマが初期化され停止していることをいう。
【００５９】
次に、制御部３０は、Ｓ２６０では、バリア同期結果を「タイムアウト」に設定し、処理をＳ２９０へ移行させる。該バリア同期結果は、ＲＡＭ１２に記録される。
制御部３０は、Ｓ２７０では、バリア同期結果を「成立」に設定する。該バリア同期結果は、ＲＡＭ１２に記録される。なお、本ステップ及びＳ２６０にて設定されたバリア同期結果は、設定後所定期間が経過した後に初期化される。ここでいう初期化とは、バリア同期結果が「不成立」に設定されることをいう。
【００６０】
次に、制御部３０は、Ｓ２８０では、レジスタ３１に記憶されている、複数のＰＥ４１、４２それぞれの参加情報を初期化する。参加情報を初期化するとは、参加情報を不参加に設定することをいう。
【００６１】
制御部３０は、Ｓ２９０では、タイムアウトタイマをクリアし、つまりカウント値を０に設定し、タイムアウトタイマを停止させる。制御部３０は、以上で同期制御処理を終了する。
【００６２】
［１−３．作動］
このように構成されたマルチプロセッサ１４による作動を、図７を用いて説明する。
ｔ１０では、第１ＰＥとしてのＰＥ４１は、第１タスクにおいて、処理が同期ポイントに到達している。しかし、バリア同期が無効に設定されており、ＰＥ４１はバリア同期不参加であるため、ＰＥ４１はバリア同期を実行せず、処理を進める。
【００６３】
ｔ１１では、第２ＰＥとしてのＰＥ４２は、第２タスクにおいて、処理が同期ポイントに到達している。しかし、バリア同期が無効に設定されているため、ＰＥ４２はバリア同期を実行せず、処理を進める。つまり、ＰＥ４２は、第２タスクにおいて、ｔ１０にて生成された共用データを用いて演算処理を実行する。
【００６４】
ｔ１２では、第１ＰＥとしてのＰＥ４１は、第１タスクにおいて処理が同期ポイントに到達している。しかし、バリア同期が無効に設定されており、ＰＥ４１はバリア同期不参加であるため、ＰＥ４１はバリア同期を実行せず、処理を進める。
【００６５】
ｔ１３では、第２ＰＥとしてのＰＥ４２は、第２タスクにおいて、処理が同期ポイントに到達している。ｔ１３では、バリア同期が有効に設定されており、ＰＥ４２はバリア同期参加に設定されるため、ＰＥ４２はバリア同期を実行して同期ポイントの次移行の処理を待機させる。つまり、ＰＥ４２は、共用データを用いた演算処理の実行を待機させる。
【００６６】
ｔ１４では、第１ＰＥとしてのＰＥ４１は、第１タスクにおいて、処理が同期ポイントに到達している。ｔ１４では、バリア同期が有効に設定されており、ＰＥ４１はバリア同期参加に設定されるため、ＰＥ４１はバリア同期を実行して同期ポイントの次移行の処理を待機させる。ｔ１４では、制御部３０は、バリア同期が有効に設定されており、且つ、全てのＰＥ４１、４２が同期ポイントに到達しており、且つ、全てのＰＥ４１、４２がバリア同期参加に設定されているので、バリア同期結果を「成立」に設定し、「成立」を表すバリア同期結果をＲＡＭ１２に記憶させる。これに伴って、第１ＰＥとしてのＰＥ４１、第２ＰＥとしてのＰＥ４２は、同期ポイント以降の処理を再開する。つまり、第２ＰＥとしてのＰＥ４２は、第２タスクにおいて、更新直後の共用データを参照して演算処理を実行することができる。
【００６７】
このようにして、マルチプロセッサ１４では、バリア同期の有効及び無効を、経過時間の長さに基づいて切替えることで、換言すれば、車両制御システム１で許容される範囲内の有効期間Ｔ１に基づいて切替えることで、車両制御システム１を適切に作動させつつ、車両制御システム１の性能向上を図ることが可能となる。
【００６８】
［１−４．効果］
以上詳述した第１実施形態によれば、以下の効果が得られる。
（１ａ）ＥＣＵ１０は、Ｓ３０では、共用データが生成されてからの経過時間が時間閾値以上であるか否かを判断する。ＥＣＵ１０は、Ｓ４０では、経過時間が時間閾値以上であると判断された場合に、バリア同期が有効であると判断する。またＥＣＵ１０は、Ｓ５０では、経過時間が時間閾値未満であると判断された場合に、バリア同期が無効であると判断する。
【００６９】
本実施形態では、例えば、判断結果に基づいて、バリア同期が有効のときには各プロセッサがバリア同期を実行し、無効のときにはバリア同期を実行しないようにすることができる。つまり、各プロセッサにおいてバリア同期が常に実行されるわけではないので、複数のプロセッサを備える電子制御装置において、複数のプロセッサそれぞれの稼働率の低下を抑制することができる。
【００７０】
また、本実施形態では、時間閾値を適宜設定することによって、短い待ち時間で新たな共用データが取得できる場合にはバリア同期を有効と判断することが可能となる。これによれば、有効期間Ｔ１が、エントリ周期Ｔ２から時間閾値を減算した値で表される所定値未満である場合にのみ、バリア同期が実行可能となるので、プロセッサの稼働率の低下を抑制しつつ、車両制御システム１としての性能を向上させることができる。
【００７１】
つまり、本実施形態では、バリア同期の「有効」及び「無効」を時間閾値に基づいて切替えることができるので、複数のＰＥ４１、４２の稼働率の低下を抑制すると共に、車両制御システム１の性能向上を図ることができる。
【００７２】
（１ｂ）複数のＰＥ４１、４２それぞれは、Ｓ３にて、バリア同期が有効であるか無効であるかを表す判断結果を取得する。複数のＰＥ４１、４２それぞれは、Ｓ４にて、上記判断結果が、バリア同期が有効であることを表しているか否か、を判断する。複数のＰＥ４１、４２それぞれは、Ｓ７にて、上記判断結果がバリア同期が有効であることを表す場
合に、バリア同期を実行する。
【００７３】
これによれば、判断結果が有効のときにのみバリア同期が実行される。つまり、より経過時間の短い共用データが取得可能であるときのみバリア同期が実行されるので、複数のＰＥ４１、４２それぞれの稼働率の低下を抑制することができる。また、経過時間の短い共用データを用いることによって、車両制御システム１としての性能を向上させることができる。
【００７４】
（１ｃ）複数のＰＥ４１、４２それぞれでは、上記判断結果がバリア同期が無効であることを表す場合に、バリア同期を実行しない。これによれば、バリア同期による待機時間が長くなる場合にはバリア同期が実行されないので、複数のＰＥ４１、４２それぞれの稼働率の低下を抑制することができる。
【００７５】
（１ｄ）本実施形態では、第１ＰＥとしてのＰＥ４１は、予め定められた周期で、共用データを生成するように構成されている。つまり、エントリ周期Ｔ２が予め定められた周期となっている。これによれば、エントリ周期Ｔ２に基づいて、車両制御システム１の性能を向上させることが可能な時間閾値を適切に設定することができる。
【００７６】
［２．第２実施形態］
［２−１．第１実施形態との相違点］
第２実施形態は、基本的な構成は第１実施形態と同様であるため、相違点について以下に説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【００７７】
上記実施形態では、時間閾値は、予め定められた値であって、ＲＯＭ１１に予め記憶されていた。また、エントリ周期Ｔ２、すなわち、第１ＰＥとしてのＰＥ４１によって第１タスクが実行される周期は、予め定められた周期であった。具体的には、エントリ周期Ｔ２とは、共用データが生成される周期であって、共用データがＲＡＭ１２等のメモリに書き込まれる周期に相当する。これに対し、第２実施形態では、第１ＰＥとしてのＰＥ４１において割り込み処理等が実行されることにより、エントリ周期Ｔ２が変動する点が異なる。
【００７８】
これに伴って、第２実施形態は、図４に示す第１実施形態の制御部３０が実行する同期管理処理に対して、図８に示すように、時間閾値を設定するための時間閾値処理がＳ１２５として追加される点で、第１実施形態と相違する。
【００７９】
［２−２．処理］
次に、第２実施形態の制御部３０が、図８に示す同期管理処理のＳ１２５にて実行する時間閾値処理について、図９のフローチャートを用いて説明する。
【００８０】
制御部３０は、Ｓ３１０では、エントリ周期Ｔ２を取得する。エントリ周期Ｔ２は、Ｓ１２０にてＲＡＭ１２に記憶されている。
制御部３０は、Ｓ３２０では、過去のエントリ周期Ｔｐを取得する。過去のエントリ周期Ｔｐとは、エントリ周期Ｔ２よりも過去に検出されたエントリ周期を表す。ここでいう過去とは、直近の過去のことを表す。つまり、ここでいう過去のエントリ周期Ｔｐは、エントリ周期Ｔ２よりも１サイクル前のエントリ周期に相当する。ここでいうサイクルとは、共用データが生成されてから次に新たな共用データが生成されるまでをいう。
【００８１】
制御部３０は、Ｓ３３０では、Ｓ３１０で取得された現在のエントリ周期Ｔ２が、過去のエントリ周期Ｔｐ以上であるか否かを判断する。制御部３０は、エントリ周期Ｔ２が過
去のエントリ周期Ｔｐ以上である場合に処理をＳ３５０へ移行させ、エントリ周期Ｔ２が過去のエントリ周期Ｔｐ未満である場合に処理をＳ３４０へ移行させる。
【００８２】
制御部３０は、Ｓ３４０では、制御部３０は、時間閾値を、該時間閾値よりも小さい値に設定し直し、処理をＳ３６０へ移行させる。例えば、制御部３０は、エントリ周期Ｔ２と過去のエントリ周期Ｔｐとの差分を１／２とした値を時間閾値から減算した値を、新たな時間閾値として設定し直すように構成され得る。
【００８３】
制御部３０は、Ｓ３５０では、制御部３０は、時間閾値を、該時間閾値よりも大きい値に設定し直し、処理をＳ３６０へ移行させる。例えば、制御部３０は、過去のエントリ周期Ｔｐとエントリ周期Ｔ２との差分を１／２とした値を時間閾値に加算した値を、新たな時間閾値として設定し直すように構成され得る。
【００８４】
制御部３０は、Ｓ３６０では、エントリ周期Ｔ２を新たな過去のエントリ周期ＴｐとしてＲＡＭ１２に記憶し直す。制御部３０は、以上で時間閾値処理を終了する。
［２−３．作動］
このように構成されたＥＣＵ１０による作動の例を図１０に基づいて説明する。
【００８５】
ｔ２１では、第１ＰＥとしてのＰＥ４１が同期ポイントに到達する。つまり、共用データが生成される。
ｔ２２では、連動タイマ値すなわち上記経過時間が時間閾値となる。有効設定情報は、ｔ２２以前では無効に設定され、ｔ２２より後では有効に設定される。
【００８６】
ｔ２３では、第１ＰＥとしてのＰＥ４１が再び同期ポイントに到達し、共用データが生成される。つまり、次のサイクルの新たな共用データが生成される。ｔ２３では、ｔ２１〜ｔ２３の期間がエントリ周期Ｔ２として検出される。そして、時間閾値設定処理によって、時間閾値が設定され、該エントリ周期Ｔ２は過去のエントリ周期ＴｐとしてＲＡＭ１２に記憶される。
【００８７】
ｔ２４では、連動タイマ値すなわち上記経過時間が時間閾値となる。有効設定情報は、ｔ２４以前では無効に設定され、ｔ２４より後では有効に設定される。
ｔ２５では、第１ＰＥとしてのＰＥ４１が再び同期ポイントに到達し、共用データが生成される。つまり、次のサイクルの新たな共用データが生成される。ｔ２５では、ｔ２３〜ｔ２５の期間がエントリ周期Ｔ２として検出される。また、ｔ２１〜ｔ２３が過去のエントリ周期Ｔｐとして取得される。そして、時間閾値設定処理によって、時間閾値が設定される。ここでは、図１０に示すようにＴ２≧Ｔｐである場合、時間閾値はｔ２３にて設定されている時間閾値よりも大きい値に設定し直される。
【００８８】
なお、図示していないが、仮にＴ２＜Ｔｐである場合は、ｔ２５において、時間閾値設定処理によって、時間閾値はｔ２３にて設定されている時間閾値よりも小さい値に設定し直される。
【００８９】
このようにして、仮に通常よりも遅れて第１タスクが同期ポイントに到達した場合には、時間閾値が該時間閾値よりも大きい値に変更される。また、仮に通常よりも早く第１タスクが同期ポイントに到達した場合には、時間閾値が該時間閾値よりも小さい値に変更される。つまり、このように時間閾値を随時変更することによって、有効期間Ｔ１が随時変更される。
【００９０】
［２−４．効果］
以上詳述した第２実施形態によれば、前述した第１実施形態の効果（１ａ）−（１ｃ）
が得られ、さらに、以下の効果が得られる。
【００９１】
（２ａ）ＥＣＵ１０は、Ｓ１３０では、共用データが生成される毎にエントリ周期Ｔ２を検出して該エントリ周期Ｔ２をＲＡＭ１２に記憶させる。ＥＣＵ１０は、Ｓ３３０では、エントリ周期Ｔ２と、過去のエントリ周期Ｔｐとを取得し、エントリ周期Ｔ２が過去のエントリ周期Ｔｐ以上であるか否かを判断する。ＥＣＵ１０は、Ｓ３５０では、エントリ周期Ｔ２が過去のエントリ周期Ｔｐ以上である場合に、時間閾値を該時間閾値よりも大きい値に設定し直す。ＥＣＵ１０は、上記Ｓ３０では、Ｓ３５０によって設定し直された時間閾値に基づいて判断を行う。
【００９２】
これによれば、現サイクルにおけるエントリ周期Ｔ２が過去のエントリ周期Ｔｐ以上である場合には時間閾値が大きい値に設定される。このため、例えば、次のサイクルにおけるエントリ周期Ｔ２が現サイクルのエントリ周期Ｔ２と同じであるような場合には、次のサイクルにおける有効期間Ｔ１を現サイクルの有効期間Ｔ１よりも短く設定することが可能となる。これにより、複数のＰＥ４１、４２それぞれの稼働率の低下が抑制される。
【００９３】
（２ｂ）ＥＣＵ１０は、Ｓ３４０では、エントリ周期Ｔ２が過去のエントリ周期Ｔｐ未満である場合に、時間閾値を該時間閾値よりも小さい値に設定し直す。ＥＣＵ１０は、上記Ｓ３０では、Ｓ３４０によって設定し直された時間閾値に基づいて判断を行う。
【００９４】
これによれば、現サイクルにおけるエントリ周期Ｔ２が過去のエントリ周期Ｔｐ未満である場合には時間閾値が小さい値に設定される。このため、例えば、次のサイクルにおけるエントリ周期Ｔ２が現サイクルのエントリ周期Ｔ２と同じであるような場合には、次のサイクルにおける有効期間Ｔ１を現サイクルの有効期間Ｔ１よりも長く設定することが可能となる。これにより、第２ＰＥとしてのＰＥ４２は、バリア同期が実行される際には、より経過時間の短い共用データに基づいて演算処理を行うことが可能となるので、車両制御システム１としての性能を向上させることができる。
【００９５】
なお、上記実施形態におけるＥＣＵ１０が電子制御装置に相当し、複数のＰＥ４１、４２が複数の実行プロセッサに相当し、ＰＥ４１が第１プロセッサに相当し、ＰＥ４２が第２プロセッサに相当する。ＲＡＭ１２が記憶部に相当する。制御部３０が、経過判断部、同期判断部、時間間隔部、間隔判断部、増加再設定部、減少再設定部に相当する。Ｓ３０が経過判断部による処理に相当し、Ｓ４０、Ｓ５０が同期判断部による処理に相当する。Ｓ１３０が時間間隔部による処理に相当し、Ｓ３３０が間隔判断部による処理に相当し、Ｓ３５０が増加再設定部による処理に相当し、Ｓ３４０が減少再設定部による処理に相当する。また、Ｓ３が判断取得部による処理に相当し、Ｓ４が有効判断部による処理に相当し、Ｓ６が有効実行部による処理に相当する。バリア同期が複数同期に相当し、同期ポイントが同期点に相当する。エントリ周期Ｔ２が現時間間隔に相当し、過去のエントリ周期Ｔｐが過去の時間間隔に相当する。
【００９６】
［３．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００９７】
（３ａ）上記実施形態では、マルチプロセッサ１４が、ＰＥ４１、４２といった２つのプロセッサを備えていた。但し、マルチプロセッサ１４が備えるプロセッサの数は３以上であり得る。つまり、第２ＰＥは複数であり得る。
【００９８】
（３ｂ）上記実施形態では、本願発明が、ＥＣＵ１０といった車両に搭載される装置（以下、車載装置）に適用される例を説明したが、これに限定されるものではない。本願発
明は、車載装置に限らず、情報家電等に搭載される電子制御装置に適用されても良い。
【００９９】
（３ｃ）上記実施形態では、制御部３０は、生成した有効設定情報をＲＡＭ１２に書き込むように構成されていたが、これに限定されるものではない。制御部３０は、生成した有効設定情報を、複数のＰＥ４１、４２それぞれに送信するように構成されてもよい。
【０１００】
（３ｄ）上記実施形態では、同期管理部３５が連動タイマの開始及び停止を管理する機能を有し、同期制御部３６がタイムアウトタイマの開始及び停止を管理する機能を有していたが、これに限定されるものではない。連動タイマの開始及び停止を管理する機能、及びタイムアウトタイマの開始及び停止を管理する機能は、制御部３０における任意の構成によって実現され得る。
【０１０１】
（３ｅ）上記第１実施形態では、エントリ周期Ｔ２は予め定められた値に設定されていた。但し、これに限定されるものではない、第１実施形態において、第１タスクが実行される周期が所定の範囲内で変動する場合、第１タスクが実行される周期の平均値がエントリ周期Ｔ２として用いられても良い。
【０１０２】
（３ｆ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【０１０３】
（３ｇ）上述した制御部３０、ＰＥ４１、ＰＥ４２、マルチプロセッサ１４、ＥＣＵ１０の他、当該ＥＣＵ１０を構成要素とするシステム、制御部３０、ＰＥ４１、ＰＥ４２、マルチプロセッサ１４、ＥＣＵ１０を機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、バリア同期方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【０１０４】
１０  ＥＣＵ、１２  ＲＡＭ、３０  制御部、４１  ＰＥ、４２  ＰＥ。
【図１】
2019028748.tif 000003
【図２】
2019028748.tif 000004
【図３】
2019028748.tif 000005
【図４】
2019028748.tif 000006
【図５】
2019028748.tif 000007
【図６】
2019028748.tif 000008
【図７】
2019028748.tif 000009
【図８】
2019028748.tif 000010
【図９】
2019028748.tif 000011
【図１０】
2019028748.tif 000012