(57)【要約】【課題】複数のプロセッサによりバリア同期を用いた並列処理を実行する演算装置において、バリア同期が完了するタイミングの遅延を極力抑える。【解決手段】複数のプロセッサ３１〜３ｎを有し、複数のプロセッサによりバリア同期を用いた並列処理を実行する演算装置２は、複数のプロセッサ３１〜３ｎのうち同期待ち状態のプロセッサを割込み要求先として設定する。【選択図】図１
2018055244.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ（３１〜３ｎ）を有し、前記複数のプロセッサによりバリア同期を用いた並列処理を実行する演算装置（２、１２）において、
前記複数のプロセッサのうち同期待ち状態のプロセッサを割込み要求先として設定する演算装置。
【請求項２】
請求項１に記載した演算装置において、
前記複数のプロセッサのうち最初に同期待ち状態に移行したプロセッサを割込み要求先として設定する演算装置。
【請求項３】
請求項１又は２に記載した演算装置において、
前記複数のプロセッサのうち最初に同期待ち状態に移行した第１のプロセッサを第１の割込み要求先として設定し、前記第１のプロセッサとは別の次に同期待ち状態に移行した第２のプロセッサを前記第１の割込み要求先とは別の第２の割込み要求先として設定する演算装置。
【請求項４】
請求項１から３の何れか一項に記載した演算装置において、
バリア同期が完了して全てのプロセッサが次の並列処理を実行可能になると、前記複数のプロセッサのうち予め設定されている所定のプロセッサを割込み要求先として設定する演算装置。
【請求項５】
請求項１から４の何れか一項に記載した演算装置を有する電子制御装置（１，１１）。
【請求項６】
複数のプロセッサ（３１〜３ｎ）によりバリア同期を用いた並列処理を実行する演算方法において、
前記複数のプロセッサのうち同期待ち状態のプロセッサを割込み要求先として設定する演算方法。
【請求項７】
請求項６に記載した演算方法において、
前記複数のプロセッサのうち最初に同期待ち状態に移行したプロセッサを割込み要求先として設定する演算方法。
【請求項８】
請求項６又は７に記載した演算方法において、
前記複数のプロセッサのうち最初に同期待ち状態に移行した第１のプロセッサを第１の割込み要求先として設定し、前記第１のプロセッサとは別の次に同期待ち状態に移行した第２のプロセッサを前記第１の割込み要求先とは別の第２の割込み要求先として設定する演算方法。
【請求項９】
請求項６から８の何れか一項に記載した演算方法において、
バリア同期が完了して全てのプロセッサが次の並列処理を実行可能になると、前記複数のプロセッサのうち予め設定されている所定のプロセッサを割込み要求先として設定する演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置、電子制御装置及び演算方法に関する。
【背景技術】
【０００２】
従来より、複数のプロセッサによりバリア同期を用いた並列処理を実行する演算装置が供されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３０５９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この種の演算装置は、割込みが発生すると、複数のプロセッサのうち何れかに割込み要求が入力され、その割込み要求を入力したプロセッサが割込み処理を実行する。しかしながら、複数のプロセッサのうち並列処理の処理時間が最も長くなるプロセッサに割込み要求が入力されてしまうと、バリア同期に参加する全てのプロセッサが並列処理を完了するタイミング、即ちバリア同期が完了するタイミングが遅延するという課題があった。特に制御のリアルタイム性が強く求められるエンジン制御では、タイマ信号やセンサ信号の入力に応じて即座に処理を実行するために割込み処理が多様化する傾向があり、バリア同期が完了するタイミングの遅延により及ぼされる影響が顕著であった。
【０００５】
本発明は、上記した事情に鑑みてなされたものであり、その目的は、バリア同期が完了するタイミングの遅延を極力抑えることができる演算装置、電子制御装置及び演算方法を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に記載した発明によれば、複数のプロセッサ（３１〜３ｎ）を有し、複数のプロセッサによりバリア同期を用いた並列処理を実行する演算装置（２）において、複数のプロセッサのうち同期待ち状態のプロセッサを割込み要求先として設定する。割込みが発生した時点で同期待ち状態のプロセッサが存在していれば、複数のプロセッサのうち並列処理の処理時間が最も長くなるプロセッサに割込み要求が入力されるのではなく、その同期待ち状態のプロセッサに割込み要求が入力され、その同期待ち状態のプロセッサが割込み処理を実行する。
【０００７】
バリア同期を用いた並列処理を実行する構成では、複数のプロセッサは、それぞれ並列処理を完了してバリアポイントに到達すると、バリア同期を開始し、並列処理に対して処理能力を余している同期待ち状態に移行する。即ち、他のプロセッサに先行してバリアポイントに到達したプロセッサは、他のプロセッサがバリアポイントに到達するのを待機しており、バリアポイントに到達した以降では主として同期フラグのチェック処理を実行するに過ぎず、処理能力を余している状態にある。この点に着眼し、同期待ち状態、即ち処理能力を余している状態のプロセッサを割込み要求先として設定し、その余っている処理能力を有効に活用することで、バリア同期が完了するタイミングの遅延を極力抑えることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態を示す機能ブロック図
【図２】フローチャート
【図３】タイミングチャート
【図４】タイミングチャート
【図５】タイミングチャート
【図６】本発明の第２の実施形態を示す機能ブロック図
【図７】フローチャート
【図８】タイミングチャート
【図９】タイミングチャート
【発明を実施するための形態】
【０００９】
（第１の実施形態）
以下、本発明の第１の実施形態について図１から図５を参照して説明する。電子制御装置１は、例えばエンジン制御を行う電子制御装置であり、マイクロコントローラ２（演算装置に相当する）を有する。マイクロコントローラ２は、第１のプロセッサ（図１ではＰＥ＃１で示す）３１から第ｎ（ｎは自然数）のプロセッサ（図１ではＰＥ＃ｎで示す）３ｎのｎ個のプロセッサ３１〜３ｎと、ＲＯＭ４と、ＲＡＭ５と、タイマ６と、Ａ／Ｄ変換器７と、割込みコントローラ８とがシステムバス９を介して相互接続されている。
【００１０】
マイクロコントローラ２は、複数のプロセッサ３１〜３ｎの全てがバリア同期に参加する構成であり、複数のプロセッサ３１〜３ｎによりバリア同期を用いた並列処理を実行する。複数のプロセッサ３１〜３ｎは、それぞれ並列処理を同じ開始タイミングで一斉に開始し、並列処理を完了してバリアポイントに到達すると、バリア同期を開始し、同期フラグを更新すると、同期フラグのチェック処理を開始し、他のプロセッサ３１〜３ｎがバリアポイントに到達するのを待機している。即ち、複数のプロセッサ３１〜３ｎは、それぞれ並列処理を完了してバリアポイントに到達すると、並列処理に対して処理能力を余している同期待ち状態に移行する。そして、複数のプロセッサ３１〜３ｎは、全てがバリアポイントに到達してバリア同期を完了すると、それぞれ次の並列処理（即ち先に実行した並列処理とは別の並列処理）を同じ開始タイミングで一斉に開始する。尚、複数のプロセッサ３１〜３ｎの全てがバリア同期に参加する構成でなく、複数のプロセッサ３１〜３ｎの一部がバリア同期に参加する構成でも良い。
【００１１】
複数のプロセッサ３１〜３ｎは、バリア同期部１０と通信可能に構成されている。バリア同期部１０は、複数のプロセッサ３１〜３ｎの個々に対応して複数の同期フラグを保持している。複数のプロセッサ３１〜３ｎは、それぞれ並列処理を実行中では自己の同期フラグを「０」に設定しており、並列処理を完了してバリアポイントに到達すると、バリア同期部１０と通信し、自己の同期フラグを「０」から「１」に書換えて同期フラグを更新する。そして、複数のプロセッサ３１〜３ｎは、それぞれバリア同期を完了したタイミング、又は別の並列処理を一斉に開始するタイミングで、バリア同期部１０と通信し、自己の同期フラグを「１」から「０」に書換えて同期フラグを更新する。
【００１２】
ＲＯＭ４は、複数のプロセッサ３１〜３ｎがそれぞれ起動するプログラムを格納している。複数のプロセッサ３１〜３ｎは、それぞれＲＯＭ４に格納されているプログラムを起動し、並列処理や割込み処理を実行する。ＲＡＭ５は、複数のプロセッサ３１〜３ｎがそれぞれ並列処理や割込み処理を実行する際の作業用メモリとして機能する。
【００１３】
タイマ６は、カウント値が予め設定されている設定値に到達する等のタイマ信号の出力条件が成立すると、タイマ信号を割込みコントローラ８に出力する。Ａ／Ｄ変換器７は、電子制御装置１の外部に設けられている各種センサからセンサ信号を入力すると、その入力したセンサ信号をアナログ信号からデジタル信号に変換して割込みコントローラ８に出力する。
【００１４】
割込みコントローラ８は、複数のプロセッサ３１〜３ｎのうち割込みの発生により割込み処理を実行するプロセッサを特定可能な割込み要求先情報を保持する。割込みコントローラ８は、複数のプロセッサ３１〜３ｎの何れかから割込み要求先設定信号を入力すると、その割込み要求先設定信号の出力元のプロセッサ３１〜３ｎを特定可能な情報（即ちプロセッサＩＤ等）を割込み要求先情報として保持する。割込みコントローラ８は、タイマ６からタイマ信号を入力したりＡ／Ｄ変換器７からセンサ信号を入力したりして割込みが発生したと判定すると、その時点で保持している割込み要求先情報により特定されるプロセッサ３１〜３ｎに割込み要求を出力する。複数のプロセッサ３１〜３ｎのうち何れかは、このようにして割込みコントローラ８から割込み要求を入力すると、割込み処理を実行する。
【００１５】
次に、上記した構成の作用について図２から図５を参照して説明する。ここでは、複数のプロセッサ３１〜３ｎの全てがバリア同期に参加することを前提とする。複数のプロセッサ３１〜３ｎは、それぞれ並列処理を完了してバリアポイントに到達すると、図２に示すバリア同期処理を実行する。以下、複数のプロセッサ３１〜３ｎのうち第１のプロセッサ３１を代表し、第１のプロセッサ３１が実行するバリア同期処理について説明する。
【００１６】
第１のプロセッサ３１は、バリア同期処理を開始すると、バリア同期部１０と通信し、自己の同期フラグを「０」から「１」に書換えて更新する（Ｓ１）。第１のプロセッサ３１は、バリア同期部１０に保持されている自己以外の他の同期フラグを読出し（Ｓ２）、その読出した自己以外の他の同期フラグを判定し、複数のプロセッサ３１〜３ｎのうち自己以外にバリアポイントに到達済みのプロセッサが存在するか否かを判定する（Ｓ３）。
【００１７】
第１のプロセッサ３１は、複数のプロセッサ３１〜３ｎのうち自己以外の他の全ての同期フラグが「０」であり、自己以外にバリアポイントに到達済みのプロセッサが存在していないと判定すると（Ｓ３：ＮＯ）、自己がバリアポイントに最初に到達したプロセッサであると判定する。第１のプロセッサ３１は、割込み要求先設定信号を割込みコントローラ８に出力し、割込み処理の割込み要求先として自己を設定する（Ｓ４）。
【００１８】
一方、第１のプロセッサ３１は、自己以外の何れかの同期フラグが「１」であり、自己以外にバリアポイントに到達済みのプロセッサが存在していると判定すると（Ｓ３：ＹＥＳ）、自己がバリアポイントに２番目以降に到達したプロセッサであると判定する。第１のプロセッサ３１は、割込み要求先設定信号を割込みコントローラ８に出力せず、割込み処理の割込み要求先として自己を設定しない。
【００１９】
そして、第１のプロセッサ３１は、全てのプロセッサ３１〜３ｎがバリアポイントに到達したか否かを判定する（Ｓ５）。第１のプロセッサ３１は、複数のプロセッサ３１〜３ｎのうち何れかが未だバリアポイントに到達しておらず、全てのプロセッサ３１〜３ｎがバリアポイントに到達していないと判定すると（Ｓ５：ＮＯ）、ステップＳ２に戻る。一方、第１のプロセッサ３１は、全てのプロセッサ３１〜３ｎがバリアポイントに到達したと判定すると（Ｓ５：ＹＥＳ）、バリア同期が完了したと判定し、バリア同期処理を終了する。
【００２０】
これ以降、第１のプロセッサ３１は、先に実行した並列処理とは別の並列処理を他のプロセッサ３２〜３ｎと同じ開始タイミングで一斉に開始する。第１のプロセッサ３１以外のプロセッサも、上記したバリア同期処理を同様にして実行する。即ち、複数のプロセッサ３１〜３ｎは、最初にバリアポイントに到達したプロセッサが割込み処理の割込み要求先となる。尚、複数のプロセッサ３１〜３ｎのうち予め初期割込み要求先として設定されているプロセッサは、別の並列処理を開始するタイミングで割込み処理の割込み要求先として自己を設定していれば、その設定を維持する。一方、複数のプロセッサ３１〜３ｎのうち予め初期割込み要求先として設定されているプロセッサは、別の並列処理を開始するタイミングで割込み処理の割込み要求先として自己を設定していなければ、割込み要求先設定信号を割込みコントローラ８に出力し、割込み処理の割込み要求先として自己を設定する。又、以上は、複数のプロセッサ３１〜３ｎが、それぞれソフトウェアにより割込みコントローラ８の割込み要求先情報を設定しているが、ハードウェアにより割込みコントローラ８の割込み要求先情報を設定しても良い。
【００２１】
以下、ｎを「３」とし、第１のプロセッサ３１〜第３のプロセッサ３３がバリア同期に参加する構成を例示して説明する。図３に示すように、マイクロコントローラ２において、第１のプロセッサ３１〜第３のプロセッサ３３が並列処理Ａを一斉に開始した後に（ｔ１）、最初に第２のプロセッサ３２がバリアポイントに到達して同期フラグを更新し（ｔ２）、続いて第３のプロセッサ３３がバリアポイントに到達して同期フラグを更新し（ｔ３）、最後に第１のプロセッサ３１がバリアポイントに到達して同期フラグを更新し（ｔ４）、バリア同期を完了し（ｔ５）、第１のプロセッサ３１〜第３のプロセッサ３３が並列処理Ｂを一斉に開始する場合を想定する。
【００２２】
この場合、割込み処理の割込み要求先が第１のプロセッサ３１に固定されている構成では、図４に示すように、マイクロコントローラ２において、第２のプロセッサ３２がバリアポイントに到達した以降に割込みが発生すると、第２のプロセッサ３２がバリアポイントに到達しているにも拘らず、割込み要求が第１のプロセッサ３１に入力される。第１のプロセッサ３１は、割込み要求が入力されると、実行中の並列処理Ａを中断して割込み処理を開始する（ｔ１１）。そして、第１のプロセッサ３１は、割込み処理を完了すると、中断した並列処理Ａを再開する（ｔ１２）。即ち、マイクロコントローラ２において、第１のプロセッサ３１が並列処理Ａを中断して割込み処理を実行することで、全てのプロセッサ３１〜３３が並列処理Ａを完了するタイミング、即ちバリア同期が完了するタイミングが遅延することになる。
【００２３】
これに対し、第１のプロセッサ３１〜第３のプロセッサ３３のうちバリアポイントに最初に到達したプロセッサが割込み処理の割込み要求先となる構成では、マイクロコントローラ２は以下のように動作する。即ち、図５に示すように、マイクロコントローラ２において、第１のプロセッサ３１〜第３のプロセッサ３３が並列処理Ａを一斉に開始した直後で第１のプロセッサ３１を割込み要求先として設定していても、第２のプロセッサ３２が最初にバリアポイントに到達すると、第２のプロセッサ３２を割込み処理の割込み要求先として更新する。
【００２４】
マイクロコントローラ２において、この状態で、即ち第２のプロセッサ３２がバリアポイントに到達した以降に割込みが発生すると、割込み要求が第１のプロセッサ３１に入力されるのではなく、バリアポイントに到達済みの第２のプロセッサ３２に入力される。第２のプロセッサ３２は、割込み要求が入力されると、同期フラグチェック処理を中断して割込み処理を開始する（ｔ２１）。そして、第２のプロセッサ３２は、割込み処理を完了すると、中断した同期フラグチェック処理を再開する（ｔ２２）。即ち、マイクロコントローラ２において、第１のプロセッサ３１が割込み処理を実行せず、第２のプロセッサ３２が割込み処理を実行することで、第１のプロセッサ３１が並列処理Ａを中断することがなく、全てのプロセッサ３１〜３３が並列処理Ａを完了するタイミング、即ちバリア同期が完了するタイミングが遅延することがなくなる。
【００２５】
以上に説明したように第１の実施形態によれば、次に示す効果を得ることができる。
マイクロコントローラ２において、複数のプロセッサ３１〜３ｎのうち同期待ち状態のプロセッサを割込み処理の割込み要求先として設定するようにした。割込みが発生した時点で同期待ち状態のプロセッサが存在していれば、その同期待ち状態のプロセッサに割込み要求が入力され、その同期待ち状態のプロセッサが割込み処理を実行することで、余っている処理能力を有効に活用することができ、バリア同期が完了するタイミングの遅延を極力抑えることができる。
【００２６】
又、マイクロコントローラ２において、バリア同期が完了すると、先に実行した並列処理とは別の並列処理を一斉に開始し、複数のプロセッサ３１〜３ｎのうち予め初期割込み要求先として設定されているプロセッサを別の割込み処理の割込み要求先として設定するようにした。バリア同期が完了して別の並列処理を一斉に開始するタイミングで、予め初期割込み要求先として設定されているプロセッサを割込み要求先として設定することができる。
【００２７】
（第２の実施形態）
次に、本発明の第２の実施形態について図６から図９を参照して説明する。尚、前述した第１の実施形態と同一部分については説明を省略し、異なる部分について説明する。第１の実施形態は、一の並列処理を実行中に一の割込みが発生する場合に対応する構成であるが、第２の実施形態では、一の並列処理を実行中に複数の割込みが発生する場合に対応する構成である。
【００２８】
電子制御装置１１において、マイクロコントローラ１２（演算装置に相当する）は、第１の実施形態で説明したバリア同期部１０に代えてバリア同期部１３を有する。バリア同期部１３は、複数のプロセッサ３１〜３ｎの個々に対応して複数の同期フラグを保持していることに加え、複数のプロセッサ３１〜３ｎの個々に対応して複数の割込み設定フラグを保持している。複数のプロセッサ３１〜３ｎは、それぞれバリア同期処理を開始すると、バリア同期部１３と通信し、割込み設定フラグを「０」にクリアして割込み設定フラグを初期化する。又、複数のプロセッサ３１〜３ｎは、それぞれ割込み要求先設定信号を割込みコントローラ８に出力すると、バリア同期部１３と通信し、割込み設定フラグを「０」から「１」に書換えて割込み設定フラグを更新する。
【００２９】
次に、上記した構成の作用について図６から図９を参照して説明する。ここでも、複数のプロセッサ３１〜３ｎのうち第１のプロセッサ３１を代表し、第１のプロセッサ３１が実行するバリア同期処理について説明する。又、一の並列処理を実行中に二の割込み（即ち第１の割込みと第２の割込み）が発生する場合を説明する。
【００３０】
第１のプロセッサ３１は、バリア同期処理を開始すると、バリア同期部１３と通信し、自己の同期フラグを「０」から「１」に書換えて更新し、自己の割込み設定フラグを「０」にクリアして初期化する（Ｓ１１）。第１のプロセッサ３１は、バリア同期部１３に保持されている自己以外の他の同期フラグを読出し（Ｓ１２）、バリア同期部１０に保持されている自己の割込み設定フラグを読出す（Ｓ１３）。第１のプロセッサ３１は、その読出した自己の割込み設定フラグが「０」であるか否かを判定し、割込み処理の割込み要求先として自己を設定済みであるか否かを判定する（Ｓ１４）。
【００３１】
第１のプロセッサ３１は、自己の割込み設定フラグが「０」である、即ち割込み処理の割込み要求先として自己を設定済みでないと判定すると（Ｓ１４：ＹＥＳ）、自己以外の他の同期フラグを判定する。第１のプロセッサ３１は、複数のプロセッサ３１〜３ｎのうち自己以外にバリアポイントに到達済みのプロセッサが存在するか否かを判定する（Ｓ１５）。
【００３２】
第１のプロセッサ３１は、複数のプロセッサ３１〜３ｎのうち自己以外の他の全ての同期フラグが「０」であり、自己以外にバリアポイントに到達済みのプロセッサが存在していないと判定すると（Ｓ１５：ＮＯ）、自己がバリアポイントに最初に到達したプロセッサであると判定する。第１のプロセッサ３１は、割込み要求先設定信号を割込みコントローラ８に出力し、第１の割込み処理の割込み要求先として自己を設定し、自己の割込み設定フラグを「０」から「１」に更新する（Ｓ１６）。
【００３３】
一方、第１のプロセッサ３１は、複数のプロセッサ３１〜３ｎのうち自己以外の何れかの同期フラグが「１」であり、自己以外にバリアポイントに到達済みのプロセッサが存在していると判定すると（Ｓ１５：ＹＥＳ）、自己以外にバリアポイントに到達済みのプロセッサが１つであるか否かを判定する（Ｓ１７）。第１のプロセッサ３１は、自己以外にバリアポイントに到達済みのプロセッサが１つであると判定すると（Ｓ１７：ＹＥＳ）、自己がバリアポイントに２番目に到達したプロセッサであると判定する。第１のプロセッサ３１は、割込み要求先設定信号を割込みコントローラ８に出力し、第２の割込み処理の割込み要求先として自己を設定し、自己の割込み設定フラグを「０」から「１」に更新する（Ｓ１８）。
【００３４】
そして、第１のプロセッサ３１は、全てのプロセッサ３１〜３ｎがバリアポイントに到達したか否かを判定する（Ｓ１９）。第１のプロセッサ３１は、複数のプロセッサ３１〜３ｎのうち何れかが未だバリアポイントに到達しておらず、全てのプロセッサ３１〜３ｎがバリアポイントに到達していないと判定すると（Ｓ１９：ＮＯ）、ステップＳ１２に戻る。一方、第１のプロセッサ３１は、全てのプロセッサ３１〜３ｎがバリアポイントに到達したと判定すると（Ｓ１９：ＹＥＳ）、バリア同期が完了したと判定し、バリア同期処理を終了する。
【００３５】
これ以降、第１のプロセッサ３１は、先に実行した並列処理とは別の並列処理を他のプロセッサ３２〜３ｎと同じ開始タイミングで一斉に開始する。第１のプロセッサ３１以外のプロセッサも、上記したバリア同期処理を同様にして実行する。即ち、複数のプロセッサ３１〜３ｎは、最初にバリアポイントに到達したプロセッサが第１の割込み処理の割込み要求先となり、２番目にバリアポイントに到達したプロセッサが第２の割込み処理の割込み処理の割込み要求先となる。尚、この場合も、複数のプロセッサ３１〜３ｎのうち予め初期割込み要求先として設定されているプロセッサは、別の並列処理を開始するタイミングで第１の割込み処理や第２の割込み処理の割込み要求先として自己を設定していれば、その設定を維持する。一方、複数のプロセッサ３１〜３ｎのうち予め初期割込み要求先として設定されているプロセッサは、別の並列処理を開始するタイミングで第１の割込み処理や第２の割込み処理の割込み要求先として自己を設定していなければ、割込み要求先設定信号を割込みコントローラ８に出力し、第１の割込み処理や第２の割込み処理の割込み要求先として自己を設定する。
【００３６】
以下、ここでも、ｎを「３」とし、第１のプロセッサ３１〜第３のプロセッサ３３がバリア同期に参加し、第１の割込み処理として割込み処理Ｘを実行し、第２の割込み処理として割込み処理Ｙを実行する構成を例示して説明する。この場合、割込み処理Ｘ，Ｙの割込み要求先が第１のプロセッサ３１に固定されている構成では、図８に示すように、マイクロコントローラ２において、第２のプロセッサ３２がバリアポイントに到達した以降に割込みが発生すると、第２のプロセッサ３２がバリアポイントに到達しているにも拘らず、割込み要求が第１のプロセッサ３１に入力される。第１のプロセッサ３１は、割込みＸの割込み要求が入力されると、実行中の並列処理Ａを中断して割込み処理Ｘを開始する（ｔ３１）。そして、第１のプロセッサ３１は、割込み処理Ｘを完了すると、中断した並列処理Ａを再開する（ｔ３２）。その後、第１のプロセッサ３１は、割込みＹの割込み要求が入力されると、実行中の並列処理Ａを中断して割込み処理Ｙを開始する（ｔ３３）。そして、第１のプロセッサ３１は、割込み処理Ｙを完了すると、中断した並列処理Ａを再開する（ｔ３４）。即ち、マイクロコントローラ２において、第１のプロセッサ３１が並列処理Ａを中断して割込み処理Ｘ，Ｙを実行することで、全てのプロセッサ３１〜３３が並列処理Ａを完了するタイミング、即ちバリア同期が完了するタイミングが遅延することになる。
【００３７】
これに対し、第１のプロセッサ３１〜第３のプロセッサ３３のうちバリアポイントに最初に到達したプロセッサが割込み処理Ｘの割込み要求先となり、バリアポイントに２番目に到達したプロセッサが割込み処理Ｙの割込み要求先となる構成では、マイクロコントローラ２は以下のように動作する。即ち、図９に示すように、マイクロコントローラ２において、第１のプロセッサ３１〜第３のプロセッサ３３が並列処理Ａを一斉に開始した直後で第１のプロセッサ３１を割込み処理Ｘ，Ｙの割込み要求先として設定していても、第２のプロセッサ３２が最初にバリアポイントに到達すると、第２のプロセッサ３２を割込み処理Ｘの割込み要求先として更新し、第３のプロセッサ３３が２番目にバリアポイントに到達すると、第３のプロセッサ３３を割込み処理Ｙの割込み要求先として更新する。
【００３８】
マイクロコントローラ２において、少なくとも第２のプロセッサ３２がバリアポイントに到達した以降に割込みＸが発生すると、割込みＸの割込み要求が第１のプロセッサ３１に入力されるのではなく、バリアポイントに到達済みの第２のプロセッサ３２に入力される。第２のプロセッサ３２は、割込みＸの割込み要求が入力されると、同期フラグチェック処理を中断して割込み処理Ｘを開始する（ｔ４１）。そして、第２のプロセッサ３２は、割込み処理Ｘを完了すると、中断した同期フラグチェック処理を再開する（ｔ４２）。又、マイクロコントローラ２において、少なくとも第３のプロセッサ３３がバリアポイントに到達した以降に割込みＹが発生すると、割込みＹの割込み要求が第１のプロセッサ３１に入力されるのではなく、バリアポイントに到達済みの第３のプロセッサ３２に入力される。第３のプロセッサ３３は、割込みＹの割込み要求が入力されると、同期フラグチェック処理を中断して割込み処理Ｙを開始する（ｔ４３）。そして、第３のプロセッサ３３は、割込み処理Ｙを完了すると、中断した同期フラグチェック処理を再開する（ｔ４４）。即ち、マイクロコントローラ２において、第１のプロセッサ３１が割込み処理Ｘ，Ｙを実行せず、第２のプロセッサ３２が割込み処理Ｘを実行し、第３のプロセッサ３２が割込み処理Ｙを実行することで、第１の実施形態と同様に、第１のプロセッサ３１が並列処理Ａを中断することがなく、全てのプロセッサ３１〜３３が並列処理Ａを完了するタイミング、即ちバリア同期が完了するタイミングが遅延することがなくなる。
【００３９】
尚、以上は、一の並列処理を実行中に二の割込みが発生する場合を例示したが、一の並列処理を実行中に三以上の割込みが発生する場合についても同様である。即ち、自己がバリアポイントにｍ（ｍは自然数）番目に到達したプロセッサであるか否かを判定し、第ｍの割込み処理の割込み要求先として自己を設定することで、三以上の割込みが発生する場合にも対応することができる。
【００４０】
以上に説明したように第２の実施形態によれば、第１の実施形態と同様の作用効果を得ることができる。即ち、一の並列処理を実行中に複数の割込みが発生する場合でも、割込みが発生した時点で同期待ち状態のプロセッサが存在していれば、その同期待ち状態のプロセッサに割込み要求が入力され、その同期待ち状態のプロセッサが割込み処理を実行することで、余っている処理能力を有効に活用することができ、バリア同期が完了するタイミングの遅延を極力抑えることができる。
【００４１】
（その他の実施形態）
本発明は、上記した実施形態で例示したものに限定されることなく、その範囲を逸脱しない範囲で任意に変形又は拡張することができる。
バリア同期部が同期フラグや割込み設定フラグを保持する構成を例示したが、バリア同期部以外が同期フラグや割込み設定フラグを保持する構成でも良く、例えばＲＡＭが同期フラグや割込み設定フラグを保持する構成でも良い。
【００４２】
図５において、初期割込み要求先が第１のプロセッサ３１である場合を例示したが、初期割込み要求先が第１のプロセッサ３１以外でも良い。図８において、割込み処理Ｘ，Ｙの初期割込み要求先が第１のプロセッサ３１である場合を例示したが、割込み処理Ｘ，Ｙの初期割込み要求先が第１のプロセッサ３１以外でも良い。又、割込み処理Ｘの初期割込み要求先と割込み処理Ｙの初期割込み要求先とが異なっても良い。
【００４３】
本開示は、実施例に準拠して記述されたが、当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、更には、それらに一要素のみ、それ以上、或いはそれ以下を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
【符号の説明】
【００４４】
図面中、１，１１は電子制御装置、２，１２はマイクロコントローラ、３１〜３ｎはプロセッサである。
【図１】
2018055244.tif 000003
【図２】
2018055244.tif 000004
【図３】
2018055244.tif 000005
【図４】
2018055244.tif 000006
【図５】
2018055244.tif 000007
【図６】
2018055244.tif 000008
【図７】
2018055244.tif 000009
【図８】
2018055244.tif 000010
【図９】
2018055244.tif 000011