(57)【要約】【課題】リアルタイム性が損なわれることを抑制できる電子制御装置を提供すること。【解決手段】マイコンは、複数のコアと、複数のコアが使用可能な共有リソースと、各コアの動作クロックを設定する複数の逓倍器と、逓倍器の値を設定する監視コアと、を備えている。各コアは、共有リソースの使用権を獲得すると、使用権を解放するまでの間、他のコアが共有リソースを使用できないように共有リソースを占有する。監視コアは、複数のコアのうち共有リソースを占有している占有コアを検出するとともに、占有コアの動作クロックを、共有リソースを占有していない場合よりも高速化するために、逓倍器の値を設定する（Ｓ１０〜Ｓ１６）。【選択図】図３
2020126477.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理部（１１、１２、１３、１４）と、
複数の前記処理部が使用可能な少なくとも一つの共有リソース（４０、４１、４２）と、
各処理部の動作クロックを管理する動作クロック管理部（１０、３１、３２、３３、３４）と、を備え、
各処理部は、前記共有リソースの使用権を獲得すると、前記使用権を解放するまでの間、他の前記処理部が前記共有リソースを使用できないように前記共有リソースを占有し、
前記動作クロック管理部は、複数の前記処理部のうち前記共有リソースを占有している占有処理部を検出するとともに、前記占有処理部の前記動作クロックを、前記共有リソースを占有していない場合よりも高速化する電子制御装置。
【請求項２】
前記動作クロック管理部は、前記占有処理部の前記動作クロックを高速化している際に、低速化条件を満たすと判定した場合、前記占有処理部の前記動作クロックを低速化する請求項１に記載の電子制御装置。
【請求項３】
前記動作クロック管理部は、前記占有処理部が前記使用権を解放した場合、前記低速化条件を満たしたと判定して、前記占有処理部の前記動作クロックを低速化する請求項２に記載の電子制御装置。
【請求項４】
前記動作クロック管理部は、複数の前記処理部が前記共有リソースを占有していない状況が所定時間継続した場合、前記低速化条件を満たしたと判定して、前記占有処理部の前記動作クロックを低速化する請求項２に記載の電子制御装置。
【請求項５】
前記動作クロック管理部は、前記占有処理部を検出した場合、すべての処理部の前記動作クロックを低速化した後に、前記占有処理部の前記動作クロックのみを高速化する請求項１乃至４のいずれか１項に記載の電子制御装置。
【請求項６】
複数の前記共有リソースを備えており、
前記動作クロック管理部は、前記占有処理部の前記動作クロックを高速化している際に、他の前記処理部が他の前記共有リソースを占有したとしても、他の前記処理部の前記動作クロックを高速化しない請求項１乃至５のいずれか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子制御装置に関する。
【背景技術】
【０００２】
従来、特許文献１に開示された、複数のコアを備えた電子制御装置がある。電子制御装置は、複数の異なる周波数を生成可能な周波数生成回路と、複数のコアのそれぞれに対し、周波数生成回路によって生成された複数の異なる周波数のうちのいずれか一の周波数を切り替えて接続可能な切替装置とを備えている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１９９２２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、複数のコアを備えた電子制御装置では、複数のコアがリソースを共有することがある。この場合、電子制御装置は、複数のコアにおける一つのコアが共有リソースを占有することができる。そして、他のコアは、共有リソースを占有しようとした場合、共有リソースを占有しているコアが、共有リソースを解放するのを待たなければならない。
【０００５】
よって、特許文献１の電子制御装置は、周波数を遅く設定したコアが共有リソースを占有してしまった場合、共有リソースの解放が遅くなる。つまり、電子制御装置は、共有リソースを占有しようとしているコアが、共有リソースが解放されるのを待つ時間が長くなる。このため、電子制御装置は、リアルタイム性が損なわれる問題がある。
【０００６】
本開示は、上記問題点に鑑みなされたものであり、リアルタイム性が損なわれることを抑制できる電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本開示は、
複数の処理部（１１、１２、１３、１４）と、
複数の処理部が使用可能な少なくとも一つの共有リソース（４０、４１、４２）と、
各処理部の動作クロックを管理する動作クロック管理部（１０、３１、３２、３３、３４）と、を備え、
各処理部は、共有リソースの使用権を獲得すると、使用権を解放するまでの間、他の処理部が共有リソースを使用できないように共有リソースを占有し、
動作クロック管理部は、複数の処理部のうち共有リソースを占有している占有処理部を検出するとともに、占有処理部の動作クロックを、共有リソースを占有していない場合よりも高速化することを特徴とする。
【０００８】
このように、本開示は、占有処理部の動作クロックを、共有リソースを占有していない場合よりも高速化するため、占有処理部の動作クロックを高速化しない場合よりも、共有リソースを占有している時間を短くすることができる。よって、本開示は、リアルタイム性が損なわれることを抑制できる。
【０００９】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態におけるマイコンを含むディスプレイシステムの概略構成を示すブロック図である。
【図２】第１実施形態におけるマイコンの状態遷移を示すステートマシン図である。
【図３】第１実施形態における監視コアの処理動作を示すフローチャートである。
【図４】第１実施形態における監視コアの高速化コア決定処理を示すフローチャートである。
【図５】第１実施形態におけるマイコンの処理動作を示すタイムチャートである。
【図６】第２実施形態におけるマイコンの概略構成を示すブロック図である。
【図７】第２実施形態における監視コアの高速化コア決定処理を示すフローチャートである。
【図８】第２実施形態におけるマイコンの処理動作を示すタイムチャートである。
【図９】変形例における監視コアの高速化コア決定処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１２】
図１〜図５を用いて、本実施形態の電子制御装置に関して説明する。本実施形態では、一例として、ディスプレイシステムにおけるマイコン１００を含む電子制御装置に適用した例を採用する。また、ディスプレイシステムは、例えば、車両に搭載されたものを採用できる。しかしながら、本開示は、これに限定されず、表示装置４００とは異なる制御対象を制御するシステムに適用することもできる。
【００１３】
図１に示すように、ディスプレイシステムは、マイコン１００、発振器２００、第１映像演算装置３１０、第２映像演算装置３２０、表示装置４００などを含んでいる。ディスプレイシステムは、表示装置４００における表示制御を行うシステムである。表示装置４００は、例えば、液晶ディスプレイや有機ＥＬディスプレイなどを採用できる。
【００１４】
第１映像演算装置３１０は、第２マイコン３１１などを備えている。第２映像演算装置３２０は、第３マイコン３２１などを備えている。各映像演算装置３１０、３２０は、マイコン１００からの制御信号に基づいて、各マイコン３１１、３２１が演算処理を行う。各マイコン３１１、３２１は、演算処理の処理結果に基づいて、表示装置４００に描画するための表示制御を行う。
【００１５】
ディスプレイシステムは、表示装置４００への描画のリアルタイム性が求められる。つまり、電子制御装置は、表示装置４００への描画の指示が発生してから、短時間で、実際に表示装置４００に描画することが求められる。また、電子制御装置は、表示装置４００とは異なる制御対象を制御する場合、制御対象への制御指示のリアルタイム制が求められる。
【００１６】
さらに、電子制御装置では、マイコン１００の消費電力を抑える必要がある。言い換えると、電子制御装置では、マイコン１００が電力を消費することによる発熱を抑える必要がある。
【００１７】
マイコン１００は、監視コア１０、第１コア１１、第２コア１２、第３コア１３、第１ＲＯＭ２１、第２ＲＯＭ２２、第３ＲＯＭ２３、第１逓倍器３１、第２逓倍器３２、第３逓倍器３３、共有リソース４０、スピンロック部５０などを備えている。このように、マイコン１００は、複数のコア１０〜１３を備えているため、マルチコアマイコンと言える。また、マイコン１００は、各コア１０〜１３の動作クロックを生成する発振器２００が接続されている。
【００１８】
共有リソース４０は、複数のコア１１〜１３が使用可能なリソースである。共有リソース４０は、複数のコア１１〜１３が使用可能であるが、同時に複数のコア１１〜１３が使用しないように排他処理がなされる。この排他処理に関しては、後程説明する。共有リソース４０は、例えばメモリや入出力装置（Ｉ／Ｏ）などを採用することができる。また、共有リソース４０としてのメモリは、メモリ装置の一部の領域であってもよい。なお、本実施形態では、一つの共有リソース４０を備えたマイコン１００を採用している。しかしながら、マイコン１００は、複数の共有リソースを備えていてもよい。
【００１９】
スピンロック部５０は、各コア１１〜１３が共有リソース４０を占有して、排他するための部位である。スピンロック部５０は、共有リソース４０が占有状態であることを示す態様と、解放状態であることを示す態様とに遷移可能に構成されている。例えば、スピンロック部５０は、各コア１１〜１３によって、スピンロック占有情報として占有状態であることを示す情報と、解放状態であることを示す情報とが格納可能に構成されている。
【００２０】
なお、スピンロック部５０は、占有状態であることを示す情報と、解放状態であることを示す情報とが同時に格納されることはない。スピンロック部５０は、常に、占有状態であることを示す情報と、解放状態であることを示す情報のいずれか一方のみが格納されている。
【００２１】
つまり、スピンロック部５０は、複数のコア１１〜１３のうち、共有リソース４０の使用権を獲得したコア（以下占有コア）によって、占有状態であることを示す情報が、占有コアと関連付けられて格納される。また、スピンロック部５０は、占有コアが共有リソース４０を解放した場合に、占有コアによって、解放状態であることを示す情報が格納される。このように、占有状態とは、複数のコア１１〜１３のいずれかが共有リソース４０の使用権を獲得している状態である。一方、解放状態は、占有コアが共有リソース４０の使用権を解放した状態である。
【００２２】
なお、例えば、スピンロック部５０は、占有状態であることを示す情報として１が占有コアに関連付けられて格納されるとともに、解放状態であることを示す情報として０が格納される。よって、スピンロック部５０は、例えばレジスタなどを採用できる。スピンロック占有情報は、排他情報とも言える。占有コアは、占有処理部に相当する。
【００２３】
マイコン１００は、複数のコア１０〜１３として、表示装置４００の表示制御に関する処理を行なう第１コア１１〜第３コア１３と、各逓倍器３１〜３３を用いて各コア１１〜１３の動作クロックを設定する監視コア１０を備えている。
【００２４】
第１コア１１は、第１コア１１用の記憶部として第１ＲＯＭ２１が接続され、且つ、第１コア１１用の動作クロックを設定するための部位として第１逓倍器３１が接続されている。また、第１コア１１は、共有リソース４０及びスピンロック部５０が接続されている。
【００２５】
第１コア１１は、第１逓倍器３１から動作クロックが供給されて動作する。第１逓倍器３１は、第１コア１１の動作クロックを独立に変更可能とする部位である。第１逓倍器３１は、発振器２００から供給された基準クロックの周波数を逓倍するための装置である。第１逓倍器３１は、監視コア１０によって設定された設定値に応じた周波数の動作クロックを第１コア１１に供給する。
【００２６】
第１逓倍器３１は、例えば、設定値として、高速モード時の設定値と低速モード時の設定値の二つの値が設定可能に構成されている。高速モードと低速モードは、各コア１１〜１３の動作モードである。高速モードと低速モードは、相対的な動作クロックの違いを示している。よって、高速モードは、低速モードよりも動作クロックが上げられた動作モードを示している。第１コア１１は、第１逓倍器３１に高速モード時の設定値が設定されていると高速モードで動作し、第１逓倍器３１に低速モード時の設定値が設定されていると低速モードで動作する。
【００２７】
なお、第１コア１１は、第１コア１１が共有リソース４０の使用権を獲得した場合に、動作モードが高速モードとされ、第１コア１１が共有リソース４０の使用権を獲得していない場合に、動作モードが低速モードとされる。つまり、第１コア１１は、第１コア１１が共有リソース４０の使用権を獲得していない通常の場合に、動作モードが低速モードとされる。このため、低速モードは、通常モードと言い換えることもできる。
【００２８】
第１コア１１は、例えば第１ＲＯＭ２１に記憶されたプログラムを実行することで、第１ＲＯＭ２１や共有リソース４０に記憶されたデータなどを用いつつ演算処理を実行する。
【００２９】
第１コア１１は、共有リソース４０が解放状態の場合に限って、共有リソース４０を使用することができる。第１コア１１は、共有リソース４０の使用権を獲得できた場合、スピンロック部５０に、占有状態であることを示す情報を第１コア１１に関連付けて格納する。第１コア１１は、共有リソース４０の使用権を獲得すると、使用権を解放するまでの間、他のコア１２、１３が共有リソース４０を使用できないように共有リソース４０を占有することができる。そして、第１コア１１は、共有リソース４０を解放する場合、スピンロック部５０に解放状態であることを示す情報を格納する。このようにして、第１コア１１は、排他処理を行う。なお、排他処理に関しては、上記に限定されず、ミューテックスなどであっても採用できる。
【００３０】
第２コア１２は、第２コア１２用の記憶部として第２ＲＯＭ２２が接続され、且つ、第２コア１２用の動作クロックを設定するための部位として第２逓倍器３２が接続されている。また、第２コア１２は、共有リソース４０及びスピンロック部５０が接続されている。第３コア１３は、第３コア１３用の記憶部として第３ＲＯＭ２３が接続され、且つ、第３コア１３用の動作クロックを設定するための部位として第３逓倍器３３が接続されている。また、第３コア１３は、共有リソース４０及びスピンロック部５０が接続されている。
【００３１】
第２コア１２と第３コア１３は、第１コア１１と同様に構成されている。また、第２ＲＯＭ２２と第３ＲＯＭ２３は、第１ＲＯＭ２１と同様に構成されている。さらに、第２逓倍器３２と第３逓倍器３３は、第１逓倍器３１と同様に構成されている。よって、各コアは、共有リソース４０の使用権を獲得すると、使用権を解放するまでの間、他のコアが共有リソース４０を使用できないように共有リソース４０を占有することができる。
【００３２】
このように、マイコン１００は、ディスプレイシステムの性能上、複数のコア１１〜１３を備えたマルチコアマイコンとして構成されている。しかしながら、マイコン１００は、常時、複数のコア１１〜１３を高速モードで動作させることは発熱の面から避けることが望ましい。
【００３３】
監視コア１０は、共有リソース４０の占有状態を検出する機能と、各逓倍器３１〜３３の設定変更を行う機能を有している。図２には、監視コア１０が制御する各コア１１〜１３の各逓倍器３１〜３３のステートマシンを図示している。
【００３４】
監視コア１０は、スピンロック部５０に格納されている、共有リソース４０の２つの状態（スピンロック状態）を示すスピンロック占有情報を取得する。そして、監視コア１０は、そのスピンロック占有情報から、複数のコア１１〜１３のいずれかが共有リソース４０を占有しているか否かを検出する。共有リソース４０における１つの状態は、複数のコア１１〜１３のいずれかが共有リソース４０を占有している占有状態である。もう１つの状態は、複数のコア１１〜１３のいずれも共有リソース４０を占有していない状態、すなわち、共有リソース４０が解放されている解放状態である。
【００３５】
なお、複数のコア１１〜１３のいずれかが共有リソース４０を占有することを、共有リソース４０のスピンロック占有とも称する。一方、占有コアが共有リソースを解放することを、共有リソース４０のスピンロック解放とも称する。
【００３６】
また、図２に示すように、監視コア１０は、各逓倍器３１〜３３の設定値を変更することで、各コア１１〜１３の動作モードを高速モードまたは低速モードに変更する。監視コア１０は、共有リソース４０を占有している占有コアに対応する逓倍器を高速モードにする。また、監視コア１０は、共有リソース４０を占有している占有コアが使用権を解放すると、占有コアに対応する逓倍器を低速モードにする。
【００３７】
なお、第１コア１１、第２コア１２、第３コア１３のそれぞれは、処理部に相当する。監視コア１０、第１逓倍器３１、第２逓倍器３２、第３逓倍器３３は、動作クロック管理部に相当する。
【００３８】
ここで、図３、図４、図５に基づいて、マイコン１００と監視コア１０の処理動作に関して説明する。監視コア１０は、所定時間毎に、図３のフローチャートに示す処理を実行する。
【００３９】
ステップＳ１０では、スピンロック状態を検出する（動作クロック管理部）。監視コア１０は、スピンロック部５０に格納されているスピンロック占有情報を取得して、取得したスピンロック占有情報に基づいてスピンロック状態を検出する。つまり、監視コア１０は、複数のコア１１〜１３のいずれかが共有リソース４０を占有している占有状態であるか、複数のコア１１〜１３のいずれも共有リソース４０を占有していない解放状態であるかを検出する。
【００４０】
ステップＳ１１では、共有リソースを占有しているコアがあるか否かを判定する（動作クロック管理部）。監視コア１０は、ステップＳ１０での検出結果に基づいて、共有リソース４０を占有しているコアがあるか否かを判定する。そして、監視コア１０は、共有リソース４０を占有しているコアが有ると判定した場合はステップＳ１２へ進み、共有リソース４０を占有しているコアが有ると判定しなかった場合はステップＳ１７へ進む。
【００４１】
ステップＳ１２では、共有リソースを占有しているコアを特定する（動作クロック管理部）。監視コア１０は、ステップＳ１０での検出結果に基づいて、共有リソース４０を占有しているコアを特定する。つまり、監視コア１０は、スピンロック占有情報に基づいて、複数のコア１１〜１３のうち、共有リソース４０を占有している占有コアを特定する。
【００４２】
なお、監視コア１０は、今回の占有コアと、前回の占有コアが同一であるか否かを判定するために、特定した占有コアをメモリなどに記憶してもよい。
【００４３】
ステップＳ１３では、前回の占有しているコアと同一であるか否かを判定する。監視コア１０は、今回の占有コアと前回の占有コアとが同一であると判定しなかった場合はステップＳ１４に進み、今回の占有コアと前回の占有コアとが同一であると判定した場合は図３の処理を終了する。
【００４４】
後程説明するが、監視コア１０は、占有コアの動作モードを高速モードに設定する。ただし、監視コア１０は、今回の占有コアが前回の占有コアと同一の場合、今回の占有コアの動作モードを高速モードに設定することなく、現在の動作モードを維持する。なお、本開示は、ステップＳ１３を実行しない監視コア１０であっても採用できる。また、占有コアが前回と同じ場合には、占有コアの動作モードは、既に高速モードに設定されており、動作モードを変更する必要がない。これによって、本開示は、監視コア１０の動作モード変更による処理負荷を削減するために、現在の動作モードを維持する（動作モードの設定を変更しない）。
【００４５】
ステップＳ１４では、高速化するコアを決定する（動作クロック管理部）。ここで、図４を用いて、高速化コア決定処理に関して説明する。監視コア１０は、ステップＳ１４で高速化するコアを決定する場合、図４のフローチャートで示す処理を実行する。
【００４６】
ステップＳ２０では、共有リソースを占有しているコアを確認する。監視コア１０は、スピンロック部５０に格納されているスピンロック占有情報に基づいて、共有リソース４０を占有しているコアを確認する。そして、監視コア１０は、占有コアが第１コア１１の場合はステップＳ２１へ進み、占有コアが第２コア１２の場合はステップＳ２２へ進み、占有コアが第１コア１１の場合はステップＳ２３へ進む。
【００４７】
ステップＳ２１では、第１コアを高速化する対象とする。ステップＳ２２では、第２コアを高速化する対象とする。ステップＳ２３では、第３コアを高速化する対象とする。このように、監視コア１０は、複数のコア１１〜１３のうち共有リソース４０を占有している占有コアを検出する。なお、監視コア１０は、ステップＳ１３を実行しない場合、ステップＳ１２で特定した占有コアを高速化するコアに決定する。
【００４８】
ここで、図３のフローチャートの説明に戻る。監視コア１０は、高速化するコアを決定すると、ステップＳ１５へ進む。
【００４９】
ステップＳ１５では、すべてのコアを低速モードに設定する（動作クロック管理部）。監視コア１０は、一旦、すべてのコア１１〜１３を低速モードに設定する。監視コア１０は、各逓倍器３１〜３３に対して、低速モード時の設定値を設定することで、すべてのコア１１〜１３を低速モードにする。
【００５０】
後程説明するが、監視コア１０は、占有コアを高速モードに設定する。そこで、監視コア１０は、占有コアを検出した場合、すべてのコア１１〜１３の動作クロックを低速化した後に、占有コアの動作クロックのみを高速化する。これによって、電子制御装置は、占有コアのみを高速化することができるので、確実にマイコン１００での消費電力を抑制できる。なお、本開示は、ステップＳ１５を実行しない監視コア１０であっても採用できる。
【００５１】
ステップＳ１６では、決定したコアを高速モードに設定する（動作クロック管理部）。監視コア１０は、占有コアに対応する逓倍器に対して、高速モード時の設定値を設定することで、占有コアを高速モードに設定する。つまり、監視コア１０は、占有コアの動作クロックを、共有リソース４０を占有していない場合よりも高速化する。このため、占有コアは、高速モードの状態で、共有リソース４０を使用する。
【００５２】
このように、マイコン１００は、占有コアの動作クロックを、共有リソース４０を占有していない場合よりも高速化するため、占有コアの動作クロックを高速化しない場合よりも、共有リソース４０を占有している時間を短くすることができる。よって、電子制御装置は、リアルタイム性が損なわれることを抑制できる。また、これによって、電子制御装置は、表示装置４００に対する描写のリアルタイム性を確保することができる。
【００５３】
つまり、監視コア１０は、例えば、スピンロック部５０を確認して、占有コアが第１コア１１であることを検出した場合、第１逓倍器３１を高速モード時の設定値に設定する。これにより、第１コア１１は、低速モード時よりも早く動作し、低速モードで動作している場合よりも、共有リソース４０を占有する時間を短縮できる。よって、マイコン１００は、ディスプレイシステムのリアルタイム性を保つことができる。
【００５４】
次に、ステップＳ１１でＮＯ判定した場合に関して説明する。ステップＳ１７では、復帰条件を満たすか否かを判定する（動作クロック管理部）。監視コア１０は、予め決められた復帰条件を満たすか否かを判定し、復帰条件を満たすと判定した場合はステップＳ１８へ進み、復帰条件を満たさないと判定した場合は図３の処理を終了する。復帰条件は、高速モードに設定した占有コアの動作モードを低速モードへ復帰させてもいいか否かを判断するための条件である。復帰条件は、低速化条件に相当する。
【００５５】
復帰条件としては、例えば、占有コアが共有リソース４０の使用権を解放したことを採用できる。この場合、監視コア１０は、スピンロック部５０のスピンロック占有情報を確認して、解放状態であることを示す情報が格納されている場合、すなわち、占有コアが共有リソース４０の使用権を解放していた場合、低速化条件を満たしたと判定する。つまり、監視コア１０は、ステップＳ１１でＮＯ判定したことで、復帰条件を満たしているとみなすことになる。これによって、マイコン１００は、占有コアの動作クロックを即座に低速化できるので、消費電力を抑制できる。
【００５６】
また、復帰条件としては、例えば、複数のコア１１〜１３が共有リソース４０を占有していない状況が所定時間継続したことを採用できる。言い換えると、復帰条件は、占有コアが共有リソース４０を解放して所定時間が経過したことを採用できる。
【００５７】
この場合、監視コア１０は、スピンロック部５０のスピンロック占有情報を確認して、解放状態であることを示す情報が格納されているとタイマーなどを用いて計時を開始する。監視コア１０は、計時を開始してから所定時間が経過する前に、占有状態であることを示す情報が格納されると計時した時間をクリアする。そして、監視コア１０は、解放状態であることを示す情報が格納されている状況が所定時間継続した場合、復帰条件を満たしたと判定する。これによって、マイコン１００は、動作クロックの変化が連続して生じることを抑制できる。なお、本開示は、ステップＳ１７を実行しない監視コア１０であっても採用できる。
【００５８】
ステップＳ１８では、すべてのコアを低速モードに設定する（動作クロック管理部）。監視コア１０は、占有コアに対応する逓倍器に対して、低速モード時の設定値を設定することで、占有コアを低速モードに設定する。つまり、監視コア１０は、占有コアの動作クロックを、共有リソース４０を占有している場合よりも低速化する。このため、共有リソース４０を解放したコアは、低速モードの状態で処理を行う。これにより、マイコン１００は、共有リソース４０を解放したコアが高速モード時よりも遅く動作するため消費電力を抑えることができる。
【００５９】
また、占有コアに高速モードが設定されている場合、その他のコアは、低速モードに設定されている。このため、監視コア１０は、占有コアに対応する逓倍器に対して、低速モード時の設定値を設定することで、すべてのコア１１〜１３を低速モードに設定することになる。
【００６０】
ここで、図５を用いて、動作クロックを高速化しない比較例のマイコン（以下比較例）と対比しつつ、本実施形態のマイコン１００の効果を説明する。図５は、（ａ）が比較例の処理動作を示すタイムチャートであり、（ｂ）がマイコン１００の処理動作を示すタイムチャートである。なお、以下においては、比較例のマイコン、第１コア〜第３コア、共有リソースに対して、符号を付与せず記載する。
【００６１】
第１コア〜第３コアのそれぞれは、第１コア１１〜第３コア１３のそれぞれと同じ処理を行なうものとする。しかしながら、第１コア〜第３コアのそれぞれは、第１コア１１〜第３コア１３のそれぞれと異なり、高速モードで動作することなく、常時、低速モードで動作するものである。
【００６２】
図５では、各コアが処理中の期間を白抜き四角、占有コアが共有リソースに対する処理中の期間をハッチング付きの四角で示している。また、図５では、コア処理開始を白抜き矢印、コアと共有リソース間処理を破線矢印で示している。さらに、図５では、共有リソースの占有を丸印、共有リソースの占有失敗をバツ（×）印で示している。
【００６３】
例えば、図５（ｂ）の第２コア１２は、タイミングｔ１４からタイミングｔ２１の期間で処理を行なっている。図５（ｂ）の第１コア１１は、タイミングｔ１２で共有リソース４０を占有して、タイミングｔ１６までの期間で共有リソース４０に対する処理を行ない、タイミングｔ１６で共有リソース４０を解放している。図５（ｂ）の第２コア１２は、タイミング１５で共有リソース４０を占有しようとするが、既に、第１コア１１によって共有リソース４０が占有されているため、占有失敗となっている。
【００６４】
なお、タイミングｔ１は、タイミングｔ１１に対応している。つまり、図５は、第１コア〜第３コアを備えた比較例のマイコンと、第１コア１１〜第３コア１３を備えたマイコン１００の処理時間を比較した図面と言える。また、図５（ｂ）のタイミングｔ８は、図５（ａ）のタイミングｔ８を示している。
【００６５】
図５（ａ）に示すように、第１コアは、タイミングｔ１で処理を開始する。そして、第１コアは、タイミングｔ２からタイミングｔ５の期間で共有リソースを占有して、タイミングｔ５で共有リソースを解放する。第１コアは、動作クロックを高速化しないため、タイミングｔ１〜ｔ２の間だけでなく、タイミング２〜ｔ５の間も低速モードで動作することになる。
【００６６】
一方、図５（ｂ）に示すように、第１コア１１は、タイミングｔ１１で処理を開始する。そして、第１コア１１は、タイミングｔ１２からタイミングｔ１６の期間で共有リソース４０を占有して、タイミングｔ１６で共有リソース４０を解放する。
【００６７】
このとき、監視コア１０は、第１コア１１が共有リソース４０を占有しているタイミングｔ１３で、第１逓倍器３１を高速モード時の設定値に設定する。よって、第１コア１１は、動作クロックが高速化された高速モードの状態で、共有リソース４０を使用する。
【００６８】
このため、第１コア１１は、第１コアと同じ処理を実行するにもかかわらず、第１コアよりも共有リソース４０の占有時間が短い。よって、第１コア１１が共有リソース４０を占有している時間（ｔ１２〜ｔ１６）は、第１コアが共有リソースを占有している時間（ｔ２〜ｔ５）よりも短い。
【００６９】
なお、本実施形態では、複数のコア１１〜１３が共有リソース４０を占有していない状況が所定時間継続した場合に、占有コアを低速モードに遷移させる例を採用している。このため、占有コアである第１コア１１は、タイミングｔ１７、ｔ２０で低速モードが設定される。これにより、マイコン１００は、共有リソース４０を解放したコアが高速モード時よりも遅く動作するため消費電力を抑えることができる。
【００７０】
上記のように、第１コア１１と第１コアは、同じ処理を実行するものであり、且つ、共有リソース４０を占有していない場合、低速モードで動作する。このため、タイミングｔ１２は、タイミングｔ２に対応する。つまり、タイミングｔ１からタイミングｔ２までの経過時間は、タイミングｔ１１からタイミングｔ１２までの経過時間と同様である。
【００７１】
また、図５（ａ）に示すように、第２コアは、タイミングｔ３で処理を開始して、タイミングｔ４で共有リソースを占有しようとする。しかしながら、共有リソースは、既に第１コアによって占有されている。このため、第２コアは、占有に失敗し、共有リソースが解放されるまで待機する。
【００７２】
そして、第２コアは、第１コアがタイミングｔ５で共有リソースを解放した後、タイミングｔ６で共有リソースを占有する。その後、第２コアは、タイミングｔ７までの間で共有リソースを占有し、タイミングｔ７で共有リソースを解放してタイミングｔ８まで処理を行う。第２コアは、第１コアと同様、動作クロックを高速化しないため、タイミングｔ３〜ｔ８の全期間において低速モードで動作することになる。
【００７３】
一方、図５（ｂ）に示すように、第２コア１２は、タイミングｔ１４で処理を開始して、タイミングｔ１５で共有リソース４０を占有しようとする。しかしながら、比較例と同様に、共有リソース４０は、既に第１コア１１によって占有されている。このため、第２コア１２は、占有に失敗し、共有リソース４０が解放されるまで待機する。そして、第２コア１２は、共有リソースが解放されるまで待機して、タイミングｔ１７で共有リソースを占有する。
【００７４】
しかしながら、第１コア１１は、上記のように、第１コアよりも、共有リソース４０の占有時間が短い。このため、第２コア１２は、第２コアよりも、共有リソース４０が解放されるまでの待機時間が短い。よって、第２コア１２は、第２コアよりも早く共有リソース４０を占有することができる。
【００７５】
また、監視コア１０は、第２コア１２が共有リソース４０を占有しているタイミングｔ１８で、第２逓倍器３２を高速モード時の設定値に設定する。よって、第２コア１２は、動作クロックが高速化された高速モードの状態で、共有リソース４０を使用する。このため、第２コア１２は、第１コア１１と同様、第２コアよりも共有リソース４０の占有時間を短縮させることができる。よって、第２コア１２が共有リソース４０を占有している時間（ｔ１７〜ｔ１９）は、第２コアが共有リソースを占有している時間（ｔ６〜ｔ７）よりも短い。
【００７６】
なお、各コア１１〜１３と比較例の各コアは、同じ処理を実行するものである。このため、第２コア１２が処理を開始するタイミングｔ１４は、第２コアが処理を開始するタイミングｔ３に対応する。つまり、タイミングｔ１からタイミングｔ３までの経過時間は、タイミングｔ１１からタイミングｔ１４までの経過時間と同様である。
【００７７】
また、第２コア１２と第２コアは、同じ処理を実行するものであり、且つ、共有リソース４０を占有していない場合、低速モードで動作する。このため、タイミングｔ７からタイミングｔ８までの経過時間は、タイミングｔ１９からタイミングｔ２１までの経過時間と同様である。
【００７８】
このように、各コア１１〜１３は、各コアよりも、共有リソース４０の占有時間が短くなるだけでなく、共有リソース４０が解放されることを待つ待機時間が短くなる。このため、本実施形態の例では、マイコンがタイミングｔ８で第２コアの処理が完了するのに対して、マイコン１００は、タイミングｔ８よりも早く、タイミングｔ２１で第２コア１２の処理が完了する。よって、マイコン１００は、リアルタイム性が損なわれることを抑制できる。
【００７９】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本開示のその他の形態として、第２、第３実施形態に関して説明する。上記実施形態及び第２、第３実施形態は、それぞれ単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本開示は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００８０】
（第２実施形態）
図６〜図８を用いて、第２実施形態の電子制御装置に関して説明する。本実施形態の電子制御装置は、マイコン１１０を備えている点が上記実施形態と異なる。また、マイコン１１０は、主に、複数の共有リソース４１、４２を備えている点、監視コア１０の処理動作がマイコン１００と異なる。なお、図６では、各コア１１〜１４に対応して設けられたＲＯＭ２１〜２３などの図示を省略している。
【００８１】
なお、本実施形態では、共有リソース４１、４２を第４コア１４、及び、第４コア１４に対応して設けられた第４逓倍器３４を備えている例を採用している。第４コア１４は、上記コア１１〜１３と同様に動作する。第４逓倍器３４は、上記逓倍器３１〜３３と同様に、監視コア１０によって設定された設定値に応じた周波数の動作クロックを第４コア１４に供給する。しかしながら、本開示は、第４コア１４及び第４逓倍器３４を備えていないマイコン１１０であっても採用できる。
【００８２】
各共有リソース４１、４２は、共有リソース４０と同様である。また、各スピンロック部５１、５２は、スピンロック部５０と同様である。そして、監視コア１０は、両スピンロック部５１、５２に格納されているスピンロック占有情報を確認可能に構成されている。
【００８３】
なお、図６では、第２共有リソース４２は、第３コア１３のみが使用可能に図示している。しかしながら、第２共有リソース４２は、第１コア１１、第２コア１２、第４コア１４が使用可能であってもよい。
【００８４】
ここで、図７を用いて、監視コア１０における高速化コア決定処理に関して説明する。監視コア１０は、ステップＳ１４で高速化するコアを決定する場合、図７のフローチャートで示す処理を実行する。
【００８５】
まず、監視コア１０は、ステップＳ３０において、第１コア１１が第１共有リソース４１を占有しているか否かを判定する。そして、監視コア１０は、第１コア１１が第１共有リソース４１を占有していると判定した場合は、ステップＳ３１に進んで、第１コア１１を高速化する対象とする。一方、監視コア１０は、第１コア１１が第１共有リソース４１を占有していると判定しなかった場合は、ステップＳ３２に進む。
【００８６】
次に、監視コア１０は、ステップＳ３２において、第２コア１２が第１共有リソース４１を占有しているか否かを判定する。そして、監視コア１０は、第２コア１２が第１共有リソース４１を占有していると判定した場合は、ステップＳ３３に進んで、第２コア１２を高速化する対象とする。一方、監視コア１０は、第２コア１２が第１共有リソース４１を占有していると判定しなかった場合は、ステップＳ３４に進む。
【００８７】
次に、監視コア１０は、ステップＳ３４において、第３コア１３が第２共有リソース４２を占有しているか否かを判定する。そして、監視コア１０は、第３コア１３が第２共有リソース４２を占有していると判定した場合は、ステップＳ３５に進んで、第３コア１３を高速化する対象とする。一方、監視コア１０は、第３コア１３が第２共有リソース４２を占有していると判定しなかった場合は、図７の処理を終了する。
【００８８】
監視コア１０は、占有コアの動作クロックを高速化している際に、他のコアが他の共有リソースを占有したとしても、他のコアの動作クロックを高速化しない（動作クロック管理部）。第３コア１３は、第１共有リソース４１ではなく、第２共有リソース４２を使用する。よって、第３コア１３は、第１コア１１または第２コア１２が第１共有リソース４１を占有していたとしても、第２共有リソース４２を占有することができる。同様に、第１コア１１または第２コア１２は、第３コア１３が第２共有リソース４２を占有していたとしても、第１共有リソース４１を占有することができる。
【００８９】
しかしながら、図８に示すように、監視コア１０は、第１コア１１または第２コア１２の動作クロックを高速化している際に、第３コア１３が第２共有リソース４２を占有したとしても、第３コア１３の動作クロックを高速化しない。同様に、監視コア１０は、第３コア１３の動作クロックを高速化している際に、第１コア１１または第２コア１２が第１共有リソース４１を占有したとしても、第１共有リソース４１を占有したコア（第１コア１１または第２コア１２）の動作クロックを高速化しない。
【００９０】
つまり、監視コア１０は、先に共有リソースを占有しているコアの動作クロックを優先的に高速化する。言い換えると、監視コア１０は、いずれの共有リソースも占有されていない状況で、あるコアが共有リソースを占有した場合に、そのコアの動作クロックを優先的に高速化する。このため、監視コア１０は、あるコアが共有リソースを占有している場合、他のコアが他の共有リソースを占有したとしても、他のコアの動作クロックを高速化しない。
【００９１】
このように、マイコン１１０は、複数のコア１１〜１３のうち、動作クロックを高速化するコアを一つとしている。これによって、マイコン１１０は、複数のコア（例えば第１コア１１と第３コア１３）の動作クロックを高速化することで消費電力が増大してしまうことを抑制できる。また、マイコン１１０は、消費電力の増大を抑制できるため、その分、発熱を抑える必要がある。
【００９２】
（変形例）
ここで、図９を用いて、第２実施形態の変形例に関して説明する。変形例の監視コア１０は、高速化コア決定処理が第２実施形態と異なる。監視コア１０は、ステップＳ１４で高速化するコアを決定する場合、図９のフローチャートで示す処理を実行する。
【００９３】
監視コア１０は、ステップＳ４０において、第１共有リソース４１が占有されているか否かを判定する。そして、監視コア１０は、第１共有リソース４１が占有されていると判定した場合、ステップＳ４１において、第１共有リソース４１を占有しているコアを高速化する。この場合、監視コア１０は、第１コア１１と第２コア１２のうちの第１共有リソース４１を占有している方の動作クロックを高速化する。一方、監視コア１０は、第１共有リソース４１が占有されていると判定しなかった場合、ステップＳ４２において、第２共有リソース４２を占有しているコアを高速化する。この場合、監視コア１０は、第３コア１３の動作クロックを高速化する。変形例のマイコン１１０は、第２実施形態と同様の効果を奏することができる。
【符号の説明】
【００９４】
１０…監視コア、１１…第１コア、１２…第２コア、１３…第３コア、１４…第４コア、２１…第１ＲＯＭ、２２…第２ＲＯＭ、２３…第３ＲＯＭ、３１…第１逓倍器、３２…第３逓倍器、３３…第３逓倍器、３４…第４逓倍器、４０…共有リソース、４１…第１共有リソース、４２…第２共有リソース、５０…スピンロック部、５１…第１スピンロック部、５２…第２スピンロック部、１００，１１０…マイコン、２００…発振器、３１０…第１映像演算装置、３１１…第２マイコン、３２０…第２映像演算装置、３２１…第３マイコン、４００…表示装置
【図１】
2020126477.tif 000003
【図２】
2020126477.tif 000004
【図３】
2020126477.tif 000005
【図４】
2020126477.tif 000006
【図５】
2020126477.tif 000007
【図６】
2020126477.tif 000008
【図７】
2020126477.tif 000009
【図８】
2020126477.tif 000010
【図９】
2020126477.tif 000011