(57)【要約】【課題】変数へのアクセスがなされていない待機状態が継続するコアの発生を抑制できる電子装置を提供すること。【解決手段】マイコンは、少なくとも三つのコアを有しており、全コアに共通に設けられた変数に対して、複数のコアが同時にアクセスすることを防止する排他制御を行う。マイコンは、タスクを実行して変数へアクセスしているアクセスコアが一つであり、かつ、タスクを実行して変数へのアクセスを要求しつつ変数へのアクセスがなされていない待機コアが複数であるか否かを確認する（Ｓ２０、Ｓ２１、Ｓ２３）。また、マイコンは、複数の待機コアのそれぞれにおける、変数へのアクセスの要求を開始してからの待機時間を計測する（Ｓ２２、Ｓ２４）。そして、マイコンは、アクセスコアが一つであり、かつ、待機コアが複数であった場合、複数の待機コアを継続時間を用いて調停し、待機時間が最も長い待機コアを次回コアに決定する（Ｓ２６）。【選択図】図３
2018005851.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも三つのコアを有し、各コアは、それぞれ異なるタスクを実行するものであり、全コアに共通に設けられた変数に対して、複数の前記コアが前記タスクを実行して同時にアクセスすることを防止する排他制御を行う電子装置であって、
前記タスクを実行して前記変数へアクセスしている前記コアであるアクセスコアが一つであり、かつ、前記タスクを実行して前記変数へのアクセスを要求しつつ前記変数へのアクセスがなされていない前記コアである待機コアが複数であるか否かを確認する確認部（Ｓ２０、Ｓ２１、Ｓ２３）と、
複数の前記待機コアのそれぞれにおける、前記変数へのアクセスの要求を開始してからの継続時間を計測する計測部（Ｓ２２、Ｓ２４）と、
前記確認部で確認した結果、前記アクセスコアが一つであり、かつ、前記待機コアが複数であった場合、複数の前記待機コアを前記継続時間を用いて調停し、次に前記変数へアクセスさせる次回コアを決定する調停部（Ｓ２６）と、を備え、
前記調停部は、前記継続時間が最も長い前記待機コアを前記次回コアに決定する電子装置。
【請求項２】
複数の前記コアにおける前記変数へのアクセスの優先度を示す優先度情報を有しており、
前記優先度情報は、前記タスクの重要度によって設定され、重要度が高い前記タスクほど優先度が高く設定されており、
前記調停部は、前記継続時間に加えて前記優先度情報を用いて調停し、複数の前記待機コアの前記継続時間が同じ場合、前記優先度が高い前記待機コアを前記次回コアに決定する請求項１に記載の電子装置。
【請求項３】
複数の前記コアにおける前記変数へのアクセスの優先度を示す優先度情報を有しており、
前記優先度情報は、前記タスクの重要度によって設定され、重要度が高い前記タスクほど優先度が高く設定されており、且つ、優先度が高いほど大きな値が設定されており、
前記調停部は、前記継続時間に加えて前記優先度情報を用いて調停し、前記継続時間と前記優先度の積算の値が最も大きい前記待機コアを前記次回コアに決定する請求項１に記載の電子装置。
【請求項４】
前記アクセスコアと、複数の前記待機コアに共通に設けられた共有記憶部を備えており、
前記継続時間及び前記優先度情報は、前記共有記憶部に記憶されている請求項２乃至３のいずれか１項に記載の電子装置。
【請求項５】
前記アクセスコアと、複数の前記待機コアにおける、一つの前記コアが前記調停部を含んでおり、
前記調停部は、前記調停部を含んだ前記コアが実行している前記タスクから独立したプロセスである請求項１乃至４のいずれか１項に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理部を有した電子装置に関する。
【背景技術】
【０００２】
従来、複数の処理部を有した電子装置の一例として、特許文献１に開示された計算機がある。この計算機は、複数のＣＰＵコアを備えている。また、計算機は、セマフォの獲得とセマフォの解放によって、ＣＰＵコア間における共有リソースの排他制御を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１８２５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、少なくとも三つのコアを有した電子装置では、少なくとも三つのコアがタスクを同時並行して実行して、同じ変数へのアクセスを要求することが考えられる。よって、電子装置は、一つのコアが変数へアクセスしたアクセス状態で、かつ、他の複数のコアが変数へのアクセスを要求しつつ変数へのアクセスがなされていない待機状態となることが起こりうる。
【０００５】
さらに、電子装置は、例えば、二つのコアが交互に連続してアクセス状態となることも起こりうる。この場合、電子装置は、あるコアにおいて、変数へのアクセスがなされていない待機状態が継続してしまうと言う問題がある。
【０００６】
本開示は、上記問題点に鑑みなされたものであり、変数へのアクセスがなされていない待機状態が継続するコアの発生を抑制できる電子装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本開示は、
少なくとも三つのコアを有し、各コアは、それぞれ異なるタスクを実行するものであり、全コアに共通に設けられた変数に対して、複数のコアがタスクを実行して同時にアクセスすることを防止する排他制御を行う電子装置であって、
タスクを実行して変数へアクセスしているコアであるアクセスコアが一つであり、かつ、タスクを実行して変数へのアクセスを要求しつつ変数へのアクセスがなされていないコアである待機コアが複数であるか否かを確認する確認部（Ｓ２０、Ｓ２１、Ｓ２３）と、
複数の待機コアのそれぞれにおける、変数へのアクセスの要求を開始してからの継続時間を計測する計測部（Ｓ２２、Ｓ２４）と、
確認部で確認した結果、アクセスコアが一つであり、かつ、待機コアが複数であった場合、複数の待機コアを継続時間を用いて調停し、次に変数へアクセスさせる次回コアを決定する調停部（Ｓ２６）と、を備え、
調停部は、継続時間が最も長い待機コアを次回コアに決定することを特徴とする。
【０００８】
このように本開示は、複数の待機コアを継続時間を用いて調停し、次に変数へアクセスさせる次回コアを決定する。このとき、本開示は、継続時間が最も長いコアを次回コアに決定する。これによって、本開示は、変数へのアクセスを要求しつつ変数へのアクセスがなされていない状態が継続するコアの発生を抑制できる。
【０００９】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態におけるマイコンの概略構成を示すブロック図である。
【図２】第１実施形態におけるコアのコア間排他制御を行う際の処理動作を示すフローチャートである。
【図３】第１実施形態におけるコアの次回コアを決定する際の処理動作を示すフローチャートである。
【図４】第１実施形態におけるコアの調停処理を示すフローチャートである。
【図５】第１実施形態におけるマイコンの処理動作を示すタイムチャートである。
【図６】第２実施形態におけるコアの調停処理を示すフローチャートである。
【図７】第３実施形態におけるマイコンの概略構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１２】
（第１実施形態）
本実施形態では、本発明をマルチコアマイコン１００に適用した例を採用している。以下においては、マルチコアマイコン１００をマイコン１００と略称で記載する。
【００１３】
まず、図１を用いて、マイコン１００の構成に関して説明する。マイコン１００は、ＥＣＵ２００に設けられている。なお、ＥＣＵ２００は、マイコン１００の他にも、各種電子素子が設けられていてもよい。
【００１４】
ＥＣＵ２００は、例えば、車両に搭載された車載制御装置に適用することができる。また、車載制御装置としては、例えば、車両のエンジン制御を行うエンジン制御装置や、ハイブリッド車のエンジン及びモータの制御を行うハイブリッド制御装置などを挙げることができる。
【００１５】
よって、マイコン１００は、エンジン制御のための演算や、エンジン及びモータの制御のための演算を行う。また、ＥＣＵ２００は、制御対象である車載機器などと電気的に接続されており、マイコン１００の演算結果などを車載機器に対して送信することで、エンジン制御などを行う。
【００１６】
マイコン１００は、電子装置に相当する。マイコン１００は、第１コア１１、第２コア１２、第３コア１３、共有記憶部３０、Ｉ／Ｏ４０などを備えている。これらは、バスなどを介して電気的に接続されている。
【００１７】
このように、本実施形態では、一例として、三つのコア１１〜１３を備えたマイコン１００を採用している。しかしながら、本発明は、少なくとも三つのコアを備えていればよく、四つ以上のコアを備えていてもよい。
【００１８】
各コア１１〜１３は、例えばＣＰＵ、レジスタ、メモリなどを備えている。各コア１１〜１３は、予め定められた演算順序に従って予め定められたプログラムを実行する。また、第１コア１１〜第３コア１３は、それぞれ異なるタスクを実行するものである。このマイコン１００は、第１コア１１〜第３コア１３で同時並行してタスクを実行することで、全てのタスクを順次実行するシングルコアマイコンと比較して処理速度の向上が期待できる。
【００１９】
なお、車両のエンジン制御などは、リアルタイム性を求められる制御と言える。リアルタイム性を求められる制御では、許容される時間内でタスクの実行が求められることもある。よって、各コア１１〜１３は、許容される時間内での実行が求められるタスクを実行することもある。
【００２０】
各コア１１〜１３は、タスクを実行することで、共有記憶部３０に記憶されたデータにアクセスしつつ、各種演算や、演算結果である制御信号の出力を行う。また、各コア１１〜１３は、Ｉ／Ｏ４０を介して制御信号を出力する。
【００２１】
また、本実施形態では、第１コア１１が機能ブロックとして調停部２０を備えている例を採用している。調停部２０は、複数の待機コアを継続時間を用いて調停し、次に共有データである変数αへアクセスさせる次回コアを決定する。なお、次回コア、待機コア、継続時間、共有データなどに関しては、後程説明する。
【００２２】
このように、調停部２０は、第１コア１１が実行するプロセスと言える。さらに、調停部２０は、第１コア１１が実行しているタスクから独立したプロセスであると好ましい。これによって、マイコン１００は、第１コア１１におけるタスクの実行に影響を与えることなく、次回コアを決定できる。
【００２３】
しかしながら、本発明は、これに限定されない。本発明は、第２コア１２や第３コア１３が調停部２０を備えていてもよい。
【００２４】
共有記憶部３０に記憶されたデータには、各コア１１〜１３に共通に設けられた、すなわち、各コア１１〜１３が共通でアクセスする共有データを含んでいる。つまり、各コア１１〜１３は、同じデータにアクセスするように構成されている。各コア１１〜１３は、共有データの値を参照したり、更新したりする。この共有データは、特許請求の範囲における変数に相当する。また、本実施形態では、共有データとして変数αを採用している。
【００２５】
本実施形態では、図５に示すように、第１コア１１が第１タスクを実行し、第２コア１２が第２タスクを実行し、第３コア１３が第３タスクを実行する例を採用する。そして、第１コア１１は、第１タスクを実行すると変数αにアクセスする。同様に、第２コア１２は、第２タスクを実行すると変数αにアクセスする。そして、第３コア１３は、第３タスクを実行すると変数αにアクセスする。
【００２６】
マイコン１００は、各コア１１〜１３がタスクを同時並行に実行することで、変数αへのアクセスが各コア１１〜１３で同時に行なわれ、意図しない干渉が発生する。そこで、マイコン１００は、全コア１１〜１３に共通に設けられた変数αに対して、全コア１１〜１３がタスクを実行して同時にアクセスすることを防止する排他制御を行う。この排他制御は、コア間排他制御とも言える。
【００２７】
本実施形態では、周知のセマフォを用いたコア間排他制御を採用する。このコア間排他制御は、どのコアのタスクが実行優先権を持つかを決定する変数であるセマフォを設定することで、コア間排他制御を行うものである。セマフォは、解放中の状態と、獲得中の状態を持つ。
【００２８】
各コア１１〜１３は、セマフォの獲得要求、セマフォの獲得、及びセマフォの解放などを行う。例えば、各コア１１〜１３は、各種コマンドを送信することで、セマフォの獲得要求及びセマフォの解放を行う。また、各コア１１〜１３は、セマフォが解放中の状態である場合に、セマフォの獲得要求を行うと、セマフォを獲得中の状態としてセマフォを獲得できる。
【００２９】
なお、セマフォは、例えば共有記憶部３０に記憶されている。例えば第１コア１１は、タスクを実行して変数αの参照や更新を行う際、セマフォの獲得要求を行う。そして、第１コア１１は、セマフォを獲得すると、変数αの参照や更新を行いタスクの実行が完了するとセマフォを解放する。
【００３０】
このとき、第２コア１２や第３コア１３は、タスクを実行してもセマフォが解放されるまで、第１コア１１がアクセスしている変数αを参照したり、更新したりすることができない。つまり、第２コア１２や第３コア１３は、タスクを実行して変数αの参照や更新を行う際、セマフォの獲得要求を行ったとしても、第１コア１１がセマフォを獲得しているため、変数αを参照したり、更新したりすることができない。よって、第２コア１２や第３コア１３は、変数αへのアクセスができるまで、つまり、セマフォが解放されるまで待機する。
【００３１】
複数のコア１１〜１３における一つのコアがタスクを実行して変数αへのアクセスがなされている状態は、アクセス状態と称する。また、セマフォを獲得している一つのコアがある状態で、セマフォを獲得していない複数のコアがタスクを実行して変数αへのアクセスが要求されつつ変数αへのアクセスがなされていない状態は、待機状態と称する。変数αへのアクセスの要求は、セマフォの獲得要求とみなすことができる。
【００３２】
なお、アクセス状態は、複数のコア１１〜１３における一つのコアがセマフォを獲得している状態とみなすこともできる。一方、待機状態は、複数のコア１１〜１３における一つのコアにセマフォが獲得されており、複数のコア１１〜１３におけるセマフォを獲得していない複数のコアがセマフォの獲得要求を行っている状態とみなすこともできる。
【００３３】
また、タスクを実行して変数αへアクセスしているコアは、アクセスコアと言える。タスクを実行して変数αへのアクセスを要求しつつ変数αへのアクセスがなされていないコアは、待機コア、又は獲得要求コアに相当する。
【００３４】
マイコン１００は、このようにして変数αの参照や更新における干渉を防ぐことができる。しかしながら、本発明は、これに限定されず、ミューテックスなどの排他制御を採用できる。
【００３５】
マイコン１００は、各コアにおける継続時間を計測する機能を備えている。そして、第１コア１１は、この継続時間を取得する機能を備えている。また、マイコン１００は、第１コア１１が継続時間を計測する機能を備えていてもよい。なお、継続時間は、待機時間とも言える。さらに、待機時間は、例えば共有記憶部３０に記憶される。
【００３６】
共有記憶部３０には、上記のデータやセマフォに加えて、各タスクの重みづけ係数が記憶されている。重みづけ係数は、優先度情報に相当する。重みづけ係数は、各コア１１〜１３が実行するタスクの重要度によって設定されており、複数のコア１１〜１３における変数αへのアクセスの優先度を示すものである。さらに、重みづけ係数は、重要度が高いタスクほど優先度が高く設定されている。
【００３７】
なお、本実施形態では、優先度が高いほど大きな値が設定された重みづけ係数を採用している。また、重要度とは、エンジン制御などにおけるタスクの重要さを示す指標である。よって、重要なタスクほど重要度が高いと言える。
【００３８】
本実施形態では、一例として、第１コア１１が実行する第１タスクが第１優先度Ｈであり、第２コア１２が実行する第２タスクが第２優先度Ｍであり、第３コア１３が実行する第３タスクが第３優先度Ｌである例を採用している。また、本実施形態では、第１優先度Ｈの重みづけ係数が２、第２優先度Ｍの重みづけ係数が１．５、第３優先度Ｌの重みづけ係数が１である例を採用している。
【００３９】
つまり、第１タスク〜第３タスクでは、第１タスクが第２タスクや第３タスクよりも重要度が高く、第２タスクが第３タスクよりも重要度が高い。よって、各優先度Ｈ〜Ｌでは、第１優先度Ｈが第２優先度Ｍや第３優先度Ｌよりも優先度が高く、第２優先度Ｍが第３優先度Ｌよりも優先度が高い。
【００４０】
しかしながら、本発明は、これに限定されない。例えば、第１コア１１は、第１タスクに加えて、第２優先度Ｍであるタスクや、第３優先度Ｌであるタスクを実行してもよい。同様に、第２コア１２は、第２タスクに加えて、第１優先度Ｈであるタスクや、第３優先度Ｌであるタスクを実行してもよい。第３コア１３は、第３タスクに加えて、第１優先度Ｈであるタスクや、第２優先度Ｍであるタスクを実行してもよい。また、各重みづけ係数の値も上記に限定されない。
【００４１】
ここで、図２〜図５を用いて、各コア１１〜１３の処理動作に関して説明する。まず、図２を用いて、各コア１１〜１３のコア間排他制御を行う際の処理動作に関して説明する。各コア１１〜１３は、各タスク起床コールで図２のフローチャートをスタートする。なお、図５では、下向き△で各タスク起床コールが発生している。
【００４２】
ステップＳ１０では、セマフォ獲得要求を行う。各コア１１〜１３は、セマフォ獲得要求を行う。第１コア１１は、例えば、図５のタイミングｔ１などに示すように、第１タスク起床コールでセマフォ獲得要求を行う。同様に、第２コア１２は、第２タスク起床コールでセマフォ獲得要求を行う。第３コア１３は、第３タスク起床コールでセマフォ獲得要求を行う。
【００４３】
ステップＳ１１では、獲得成功したか否かを確認する。各コア１１〜１３は、セマフォを獲得できた場合、獲得成功と判定してステップＳ１２へ進み、セマフォを獲得できなかった場合、獲得成功と判定せずにステップＳ１０へ戻る。このように、各コア１１〜１３は、一旦、セマフォ獲得要求を行うと、セマフォを獲得できるまで、セマフォ獲得要求を繰り返し行う。
【００４４】
例えば、図５の例では、各コア１１〜１３がタスクを同時並行に実行することで、各コア１１〜１３で変数αへのアクセスが同時に行なわれようとしている。しかしながら、例えばタイミングｔ１〜ｔ２の間は、第１コア１１がセマフォを獲得している。このため、第２コア１２と第３コア１３は、タイミングｔ１〜ｔ２の間でセマフォ獲得要求を繰り返し行うことになる。よって、タイミングｔ１〜ｔ２の間は、第１コア１１がアクセスコアであり、第２コア１２と第３コア１３が待機コアとなる。また、タイミングｔ１〜ｔ２の間は、アクセス状態で、且つ待機状態と言える。
【００４５】
そして、第２コア１２は、第１コア１１がセマフォを解放した後、タイミングｔ３でセマフォの獲得に成功する。よって、タイミングｔ３〜ｔ４の間は、第２コア１２がアクセスコアであり、第１コア１１と第３コア１３が待機コアとなる。同様に、第３コア１３は、第２コア１２がセマフォを解放した後、タイミングｔ５でセマフォの獲得に成功する。よって、タイミングｔ５〜ｔ６の間は、第３コア１３がアクセスコアであり、第１コア１１と第２コア１２が待機コアとなる。
【００４６】
なお、マイコン１００は、後程説明する調停部２０による調停処理によって、タイミングｔ３で第２コア１２がセマフォを獲得し、タイミングｔ５で第３コア１３がセマフォを獲得している。
【００４７】
このように、各コア１１〜１３は、アクセスコアにも、待機コアにもなりうる。よって、第１コア１１は、アクセスコア時に調停処理を行う場合と、待機コア時に調停処理を行う場合とがある。
【００４８】
ステップＳ１２では、変数αを参照する。ステップＳ１３では、変数αを更新する。例えば、図５のタイミングｔ１〜ｔ２の間は、第１コア１１がセマフォを獲得している。このため、第１コア１１は、タイミングｔ１〜ｔ２の間で、変数αを参照するとともに、変数αを更新する。
【００４９】
ステップＳ１４では、セマフォを解放する。各コア１１〜１３は、変数αの更新などが終了するとセマフォを解放する。第１コア１１は、例えば、図５のタイミングｔ２でセマフォを解放する。同様に、第２コア１２は、図５のタイミングｔ４でセマフォを解放する。第３コア１３は、図５のタイミングｔ６でセマフォを解放する。
【００５０】
次に、図３を用いて、調停部２０が設けられた第１コア１１の処理動作に関して説明する。第１コア１１は、電源供給されると図３のフローチャートをスタートする。
【００５１】
ステップＳ２０では、セマフォ獲得コア有りか否かを判定する（確認部）。第１コア１１は、共有記憶部３０を確認してセマフォが獲得中の状態の場合、セマフォ獲得コア有りと判定してステップＳ２１へ進み、セマフォが解放中の状態の場合、セマフォ獲得コア有りと判定せずにステップＳ２０での判定を繰り返す。
【００５２】
第１コア１１は、アクセス状態であるか否かを判定するために、セマフォ獲得コア有りか否かを判定する。言い換えると、第１コア１１は、アクセスコアが一つであるか否かを判定するために、セマフォ獲得コア有りか否かを判定する。そして、調停部２０は、セマフォ獲得コア有りと判定した場合、アクセス状態、すなわち一つのアクセスコアが有るとみなす。
【００５３】
ステップＳ２１では、一つ目の獲得要求コア有りか否かを判定する（確認部）。第１コア１１は、他のコア１２、１３のうちの一つから獲得要求がなされている場合、一つ目の獲得要求コア有りと判定してステップＳ２２へ進み、いずれからも獲得要求がなされていない場合、一つ目の獲得要求コア有りと判定せずにステップＳ２０へ戻る。例えば、第１コア１１は、他のコア１２、１３のうちの一つからセマフォの獲得要求を示すコマンドが送信されているか否かを確認することで、一つ目の獲得要求コア有りか否かを判定できる。また、第１コア１１は、セマフォの獲得要求を示すコマンドに含まれるＩＤを確認することで、一つ目の獲得要求コアがコア１２、１３のどちらであるかを判断できる。
【００５４】
第１コア１１は、待機状態であるか否か、すなわち待機コアが複数であるか否かを判定するため、及び、待機時間を計測するために、一つ目の獲得要求コア有りか否かを判定する。例えば、図５の例の場合、第２コア１２が一つ目の獲得要求コアとなる。
【００５５】
ステップＳ２２では、該当コアの待機時間を計測開始する（計測部）。第１コア１１は、ステップＳ２１で獲得要求コア有りと判定した一つ目の待機コアにおける、変数αへのアクセスの要求、すなわちセマフォの獲得要求を開始してからの待機時間の計測を開始する。
【００５６】
ステップＳ２３では、二つ目の獲得要求コア有りか否かを判定する（確認部）。第１コア１１は、他のコア１２、１３の二つから獲得要求がなされている場合、二つ目の獲得要求コア有りと判定してステップＳ２４へ進み、一方から獲得要求がなされていない場合、二つ目の獲得要求コア有りと判定せずにステップＳ２０へ戻る。例えば、第１コア１１は、他のコア１２、１３の両方からセマフォの獲得要求を示すコマンドが送信されているか否かを確認することで、二つ目の獲得要求コア有りか否かを判定できる。また、第１コア１１は、セマフォの獲得要求を示すコマンドに含まれるＩＤを確認することで、二つ目の獲得要求コアがコア１２、１３のどちらであるかを判断できる。
【００５７】
第１コア１１は、待機状態であるか否か、すなわち待機コアが複数であるか否かを判定するため、及び、待機時間を計測するために、二つ目の獲得要求コア有りか否かを判定する。例えば、図５の例の場合、第３コア１３が二つ目の獲得要求コアとなる。
【００５８】
上記のように、第１コア１１は、セマフォ獲得コア有りか否か、一つ目の獲得要求コア有りか否か、及び二つ目の獲得要求コア有りか否かを判定することで、アクセスコアが一つであり、かつ、待機コアが複数であるか否かを確認する。言い換えると、第１コア１１は、アクセス状態で、且つ、待機状態であるか否かを判定する。
【００５９】
ステップＳ２４では、該当コアの待機時間を計測開始する（計測部）。第１コア１１は、ステップＳ２３で獲得要求コア有りと判定した二つ目の待機コアにおける、変数αへのアクセスの要求、すなわちセマフォの獲得要求を開始してからの待機時間の計測を開始する。なお、第１コア１１は、ステップＳ２２、Ｓ２４での待機時間の計測を、図３のフローチャートとは異なる別ルーチンで行ってもよい。
【００６０】
ステップＳ２５では、セマフォが解放されたか否かを確認する。第１コア１１は、共有記憶部３０を確認してセマフォが解放中の状態の場合、セマフォが解放されたと判定してステップＳ２６へ進み、セマフォが獲得中の状態の場合、セマフォが解放されたと判定せずにステップＳ２５での判定を繰り返す。
【００６１】
ステップＳ２６では、調停処理を行う。第１コア１１は、待機時間を用いて調停処理を行うことで、次に変数αへアクセスさせる次回コア、すなわち次にセマフォを獲得する次回コアを決定する。つまり、第１コア１１は、アクセスコアが一つであり、かつ、待機コアが複数であった場合、次回コアを決定する。
【００６２】
特に、本実施形態では、継続時間に加えて重みづけ係数を用いて調停し、次回コアを決定する例を採用する。この調停処理は、調停部２０の処理である。この調停処理に関して、図４を用いて説明する。調停部２０は、図５のタイミングｔ２やタイミングｔ４で調停処理を開始する。
【００６３】
ステップＳ３０では、各コアの待機時間を取得する。この待機時間は、ステップＳ２２、Ｓ２４で計測を開始して得られた時間である。調停部２０は、対象となる各コアの待機時間を共有記憶部３０から取得する。ここで対象となるコアは、ステップＳ２２とステップＳ２４で待機コアとなっていたコアである。
【００６４】
よって、図５のタイミングｔ２では、第２コア１２と第３コア１３が対象となる。よって、調停部２０は、第２コア１２の待機時間と第３コア１３の待機時間とを共有記憶部３０から取得する。また、図５のタイミングｔ４では、第１コア１１と第３コア１３が対象となる。よって、調停部２０は、第１コア１１の待機時間と第３コア１３の待機時間とを共有記憶部３０から取得する。
【００６５】
ステップＳ３１では、各コアの重みづけ係数を取得する。調停部２０は、ステップＳ３０で対象とした各コアの重みづけ係数を共有記憶部３０から取得する。よって、調停部２０は、タイミングｔ２で、第２コア１２の重みづけ係数と第３コア１３の重みづけ係数とを共有記憶部３０から取得する。また、調停部２０は、タイミングｔ４で、第１コア１１の重みづけ係数と第３コア１３の重みづけ係数とを共有記憶部３０から取得する。
【００６６】
詳述すると、調停部２０は、各コアが実行しているタスクの重みづけ係数を取得する。調停部２０は、タイミングｔ２で、第２コア１２が実行している優先度Ｍである第２タスクの重みづけ係数１．５と、第３コア１３が実行している優先度Ｌである第３タスクの重みづけ係数１とを取得する。調停部２０は、タイミングｔ４で、第１コア１１が実行している優先度Ｈである第１タスクの重みづけ係数２と、第３コア１３が実行している優先度Ｌである第３タスクの重みづけ係数１とを取得する。
【００６７】
ステップＳ３２では、コア毎に待機時間と重みづけ係数との積を演算する。調停部２０は、ステップＳ３０で対象としたコア毎の待機時間と重みづけ係数との積を演算する。なお、調停部２０は、演算結果に基づいて次回コアを決定する。このため演算結果は、次回獲得指標と言える。
【００６８】
調停部２０は、タイミングｔ２で、第２コア１２の待機時間と第２コア１２が実行している第２タスクの重みづけ係数１．５との積を演算するとともに、第３コア１３の待機時間と第３コア１３が実行している第３タスクの重みづけ係数１との積を演算する。また、調停部２０は、タイミングｔ４で、第１コア１１の待機時間と第１コア１１が実行している第１タスクの重みづけ係数２との積を演算するとともに、第３コア１３の待機時間と第３コア１３が実行している第３タスクの重みづけ係数１との積を演算する。
【００６９】
ステップＳ３３では、演算結果が最大となるコアを次回コアに決定する。調停部２０は、ステップＳ３０で対象とした複数のコアから、ステップＳ３２での演算結果が最大となるコアを次回コアに決定する。
【００７０】
例えば、タイミングｔ２では、第２コア１２の待機時間が３ｍｓ、第３コア１３の待機時間が３ｍｓとする。つまり、待機コアである第２コア１２と第３コア１３は、待機時間が同じである。
【００７１】
この場合、第２コア１２の次回獲得指標は、３×１．５＝４．５となる。一方、第３コア１３の次回獲得指標は、３×１＝３となる。よって、調停部２０は、第２コア１２を次回コアに決定する。このように調停部２０は、第２コア１２と第３コア１３の待機時間が同じ場合、重みづけ係数が大きい、すなわち重要度が高いタスクを実行している第２コア１２を次回コアに決定することになる。
【００７２】
これによって、マイコン１００は、複数の待機コアで待機時間が同じ場合、重要度が高いタスクを優先的に実行させることができる。つまり、マイコン１００は、変数αへの要求をしつつ変数αへのアクセスがなされていない状態が継続するコアの発生を抑制しつつ、許容される時間内に重要度が高いタスクを実行させやすくなる。よって、マイコン１００は、リアルタイム性を求められる制御を行うマイコンとして採用することができる。
【００７３】
また、タイミングｔ４では、第１コアの待機時間が２ｍｓで、第３コアの待機時間が１０ｍｓとする。つまり、待機コアである第１コア１１と第３コア１３は、待機時間が異なる。
【００７４】
この場合、第１コア１１の次回獲得指標は、２×２＝４となる。一方、第３コア１３の次回獲得指標は、１０×１＝１０となる。よって、調停部２０は、第３コア１３を次回コアに決定する。このように調停部２０は、待機時間と重みづけ係数の積算の値が最も大きいコア、ここでは第３コア１３を次回コアに決定する。つまり、調停部２０は、タスクの重みづけ係数を用いたとしても、待機時間が最も長いコアを次回コアに決定することになる。これによって、マイコン１００は、変数αへのアクセスを要求しつつ変数へのアクセスがなされていない状態が継続するコアの発生を抑制できる。
【００７５】
ステップＳ３４では、次回コア以外のコアによるセマフォ獲得を停止する。第１コア１１は、ステップＳ３３で決定した次回コアが確実にセマフォを獲得できるようにするため、次回コアがセマフォを獲得するまで、次回コア以外のコアによるセマフォ獲得を停止する。これによって、マイコン１００は、上記のようにして決定した次回コアが確実に、セマフォを獲得でき、すなわち、変数αにアクセスできるようにすることができる。
【００７６】
そして、第１コア１１は、調停処理が終了すると、図３のステップＳ２７に進む。ステップＳ２７では、次回コアの待機時間をリセットする。第１コア１１は、上記のように第２コア１２を次回コアに決定した場合、第２コア１２の待機時間をリセットする。また、第１コア１１は、上記のように第３コア１３を次回コアに決定した場合、第３コア１３の待機時間をリセットする。
【００７７】
また、各コア１１〜１３が共通でアクセスする共有データは、共有記憶部３０に記憶されたものでなくても採用できる。例えば、共有データは、Ｉ／Ｏ４０に設けられたレジスタの値などであってもよい。
【００７８】
本実施形態では、アクセスコアが一つで、かつ、待機コアが複数である状況で、セマフォが解放されると、調停処理を行う例を採用した。しかしながら、本発明は、これに限定されない。マイコン１００は、アクセスコアが一つで、かつ、待機コアが複数である状況になると、セマフォが解放されていなくても調停処理を行ってもよい。この場合、マイコン１００は、セマフォが解放されると直ちに、次回コアがセマフォを獲得できる。
【００７９】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明のその他の形態として、第２、第３実施形態に関して説明する。上記実施形態及び第２、第３実施形態は、それぞれ単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本発明は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００８０】
（第２実施形態）
第２実施形態のマイコンに関して説明する。第２実施形態のマイコンは、マイコン１００と同様な点が多い。よって、ここでは、上記実施形態と異なる点を中心に説明する。第２実施形態のマイコン１００は、上記実施形態と構成が同様であり調停処理の内容が異なる。なお、以下においては、第１実施形態と同じ符号を用いて説明する。
【００８１】
第１コア１１（調停部２０）は、ステップＳ２６で調停処理を行う際に、図６に示すフローチャートをスタートする。ステップＳ４０では、ステップＳ３０と同様に、各コアの待機時間を取得する。そして、ステップＳ４１では、待機時間が最長のコアを次回コアに決定する。なお、ステップＳ４２では、ステップＳ３４と同様に、次回コア以外のコアによるセマフォの獲得と停止する。
【００８２】
よって、マイコン１００は、重みづけ係数を有していなくてもよい。あるいは、マイコン１００は、重みづけ係数として、第１優先度Ｈ〜第３優先度Ｌのすべて同じ値を有していてもよい。この場合、第１コア１１は、上記実施形態と同様に、待機時間と重みづけ係数の積を演算して、この演算結果を用いて次回コアを決定する。これによっても、マイコン１００は、待機時間が最長のコアを次回コアに決定することができる。
【００８３】
このようにマイコン１００は、複数の待機コアを待機時間を用いて調停し、次に変数αへアクセスさせる次回コアを決定する。このとき、マイコン１００は、待機時間が最も長いコアを次回コアに決定する。これによって、マイコン１００は、変数αへのアクセスを要求しつつ変数αへのアクセスがなされていない状態が継続するコアの発生を抑制できる。
【００８４】
なお、マイコン１００は、上記実施形態のタイミングｔ２のように、第２コア１２と第３コア１３の待機時間が同じであった場合、第２コア１２と第３コア１３における一つを次回コアに決定する。例えば、マイコン１００は、第３コア１３を次回コアに決定する。この場合、タイミングｔ４では、第１コア１１よりも第３コア１３の方が、待機時間が長くなる。よって、マイコン１００は、タイミングｔ４で、第３コア１３を次回コアに決定することになる。よって、マイコン１００は、変数αへのアクセスを要求しつつ変数αへのアクセスがなされていない状態が継続するコアの発生を抑制できる。
【００８５】
（第３実施形態）
上記実施形態は、調停部２０が第１コア１１に設けられている例を採用した。しかしながら、本発明は、これに限定されない。図７に示すように、第３実施形態のマイコン１１０は、第１コア１１〜第３コア１３とは別のハードウェアで調停部２０が構成されている。
【００８６】
マイコン１１０は、上記第１実施形態や第２実施形態と同様の効果を奏することができる。また、マイコン１１０は、各コア１１〜１３におけるタスクの実行に影響を与えることなく、次回コアを決定できる。
【符号の説明】
【００８７】
１１…第１コア、１２…第２コア、１３…第３コア、２０…調停部、３０…共有記憶部、４０…Ｉ／Ｏ、１００，１１０…マルチコアマイコン、２００…ＥＣＵ
【図１】
2018005851.tif 000003
【図２】
2018005851.tif 000004
【図３】
2018005851.tif 000005
【図４】
2018005851.tif 000006
【図５】
2018005851.tif 000007
【図６】
2018005851.tif 000008
【図７】
2018005851.tif 000009